密码学基础知识

一、安全原则

信息安全三要素(CIA):机密性(confidential)、完整性(integrality)、可用性(availability)

  • 机密性

机密性是指保证信息不被非授权访问,即使非授权用户得到信息也无法知晓信息内容,因而不能使用。他的任务是确保信息不会被未授权用户访问,通常是通过访问控制阻止非授权用户获得机密信息,通过加密变换阻止非授权用户获知信息内容。

  • 完整性

完整性是指维护信息的一致性,即信息在生成、传输、存储和使用过程中不应该发生人为或非人为的非授权篡改。信息的完整性包括两个方面:1.数据完整性:数据没有被(未授权)篡改或者损坏; 2.系统完整性:系统未被非法操纵,按既定的目标运行。

  • 可用性

可用性是指保障信息资源随时可提供服务的能力特性,即授权用户可根据需要可以随时访问所需信息。可用性是信息资源服务功能和性能可靠性的度量,涉及到物理、网络、系统、数据、应用和用户等多方面的因素,是对信息网络总体可靠性的要求。

二、密码学组件知识

如果把密码体系比作一栋积木搭建的房子,里面的房间、家具、装饰等就是各种基本构成组件了,它们包括:对称密码、公钥密码、单向散列函数、消息认证码、数字签名以及伪随机数生成器。

任何密码体系都可被拆分成各种密码组件,对于密码体系的攻击也可以从 密码组件 和 密码体系本身来进行。


1、对称密码算法

加密和解密密钥相同,加密强度高、速度快;密钥管理是最大的问题(要满足保密性、唯一性);

常见的对称密码算法有:DES(不安全不使推荐)、三重DES(在DES的基础上增长了密钥长度)、AES(在用)、IDEA (国际数据加密算法)。

1.1 分组密码

分组密码:在密码学中,分组加密(英语:Block cipher),又称分块加密块密码,是一种对称密钥算法。它将明文分成多个等长的模块(block),使用确定的算法和对称密钥对每组分别加密解密。分组加密是极其重要的加密协议组成,其中典型的如AES和3DES作为美国政府核定的标准加密算法,应用领域从电子邮件加密到银行交易转帐,非常广泛。DES、AES都属于分组密码。

ECB模式容易被攻击,不推荐使用。

2、公钥密码算法

公钥密码算法 又称 非对称密码算法,加密和解密密钥不同,通常是 公钥加密、私钥解密(公钥默认公开、私钥保密),常用于对称加密过程中密钥的传递。

常见的公钥密码算法有:RSA、Elgamal、背包算法、Rabin、Diffie-Hellman、ECC(椭圆曲线加密算法),使用最广泛的是RSA算法(推荐使用密钥长度大于768的,常见密钥长度1024、2048、4096)。

3、单向散列函数

单向散列函数(也叫Hash算法、消息摘要算法、散列算法、杂凑算法),输入不同长度的消息,生成固定长度的摘要值,通过前后对比摘要值来判断消息是否有被篡改(但不能实现身份的认证),具有单向性的特点(消息不可被解密回明文)。
常见单向散列函数有:

  • MD4,可被爆破、不推荐使用;
  • MD5,强抗碰撞性已被攻破,彩虹表,不推荐使用;
  • SHA-1,可被爆破、不推荐使用;
  • SHA-2,包含 SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256;
  • SHA-3,包含 SHA3-224、SHA3-256、SHA3-384、SHA3-512。

应用场景:

  • 文件完整性保护,通过Hash值检查软件指纹、判断是否被篡改;
  • 密码保护,不直接记录密码本身、记录加盐的密码hash值;
  • 数字签名,对消息的Hash值进行签名;
  • 消息认证码(HMAC),Hash(消息,密钥),用于防止消息被篡改;
  • 伪随机数生成器;
  • 一次性口令。

4、消息认证码(Message Authentication Code)

消息认证码(Message Authentication Code)是一种确认完整性并进行认证的技术(消息是否被篡改、发送者身份是否被伪装)。

输入 消息 + 双方共享的密钥,输出 固定长度的 MAC 值,通过比对 MAC 来完成消息完整性和认证;由于发送者和接收者共享相同的密钥,因此会产生无法向第三方证明以及无法防止否认的问题。

常见的一种实现方法是HAMC(Hash-based Message Authentication Code),HMAC(Message,Key);此外还有使用分组密码来实现的(AES CBC模式)。

常见应用场景:

  • SWIFT
  • IPsec
  • SSL/TLS

5、数字签名

使用非对称加密算法实现数字签名:消息发送者使用自己的私钥加密、消息接收者使用消息发送者的公钥解密验证,用于识别篡改和伪装、防止否认。 和公钥加密是刚好相反的过程;例如在RSA算法中:

  • 公钥加密:公钥加密、私钥解密

  • 数字签名:私钥签名(加密)、公钥验签(解密)


    实现方法:

  • 直接对消息进行签名

  • 对消息的散列值进行签名(较为常见的一种)

应用场景:

  • 消息发布,加上发布者的签名以证明消息的真实性;
  • 软件下载,证明其来自合法的渠道(配合单向散列函数,验证消息的完整性);
  • 公钥证书
  • SSL/TLS

6、公钥基础设施(PKI)

Referer:《信息安全技术公钥基础设施PKI 系统安全技术要求》

要保证所使用的数字证书是合法的,有个前提就是 保持公钥是合法的(没有被篡改和伪造),那么就要对该公钥进行签名、对为公钥进行签名的公钥进行签名、、、、、 需要构建一个可信的数字签名链条,就引入了PKI(Public Key Infrastructure)公钥基础设施。

证书的作用:对公钥进行认证(对公钥进行数字签名),证明该公钥是来自可信的公钥所有者。

PKI的组成:

  • 用户:使用PKI的实体(人/服务)
  • 认证机构(CA,Certification Authority):颁发证书
  • 仓库:保存证书的数据库

6.1 PGP中的信任网

不依赖特定的证书机构,通过对用户对每个公钥进行互相签名从而建立起一个信任网络

7、密码协议

IPsec、SSL

IPsec:网络层,站到站通信

SSL:应用层和传输层,端到站通信 ,TLS 1.2/1.3

二、密码组件的应用

1、SSL/TLS

SSL/TLS是一种安全的密码协议,可以承载HTTP/SMTP/POP3/FTP等通信协议,在它们上面“套一层”安全协议,可以解决如下问题:

  • 机密性——对称密码算法
  • 完整性——消息认证码(HMAC)
  • 认证——数字签名

热门相关:亿万盛宠只为你