图解密码技术

对称密码

对称密码是一种用相同的密钥进行加密和解密的技术,用于确保消息的机密性。尽管对称密码能够确保消息的机密性,但需要解决将解密密钥配送给接受者的密钥配送问题。
一次性密码本的原理是将明文与一串随机的比特序列进行 XOR 运算。即使用暴力破解法遍历整个密钥空间,也绝对无法被破译。
随着计算机的进步,现在 DES 已经能够被暴力破解,强度大不如前了。
AES 是取代其 DES 而成为新标准的一种对称密码算法。在 2000 年从候选算法中选出了一种名为 Rijndael 的对称密码算法,并将其确定为了 AES。

分组密码的模式

密码算法可以分为分组密码和流密码两种。
分组密码是每次只能处理特定长度的一块数据的一类密码算法,这里的“一块”就称为分组。此外,一个分组的比特数就称为分组长度。例如,DES 和三重 DES 的分组长度都是 64 比特。AES 的分组长度可以从 128 比特、192 比特、256 比特中进行选择。
流密码是对数据流进行连续处理的一类密码算法。一般以 1 比特、8 比特或 32 比特等为单位进行加密和解密。
分组密码算法只能加密固定长度的分组,当明文长度超过分组密码的分组长度时,就需要对分组密码算法进行迭代。而迭代的方式就成为分组密码的模式。

ECB 模式

Electronic CodeBook,电子密码本模式,不应使用。
将明文分组加密之后的结果将直接成为密文分组。

CBC 模式

Cipher Block Chaining,密文分组链接模式,推荐使用。
将明文分组与前一个密文分组进行 XOR 运算,然后再进行加密。

CFB 模式

Ciper-Feedback,密文反馈模式,现在已不使用,推荐用 CTR 模式代替。
前一个密文分组被送回到密码算法的输入端。

OFB 模式

Output-Feedback 输出反馈模式,推荐用 CTR 模式代替。
密码算法的输出会反馈到密码算法的输入中,属于流密码。

CTR 模式

CounteT,计数器模式,推荐使用。
通过逐次累加的计数器进行加密来生成密钥流的流密码。

公钥密码

密钥配送问题解决方法

  • 事先共享密钥
  • 密钥分配中心
  • Diffie-Hellman 密钥交换
  • 公钥密码

公钥密码是一种用不同的密钥进行加密和解密的技术。公钥密码解决了密钥配送问题,但没有解决公钥认证问题,且它的处理速度只有对称密钥的几百分之一。
使用最广泛的一种公钥密码算法是 RSA。

RSA

$密文 = 明文^E mod N$
$明文 = 密文^D mod N$

私钥:(D, N)
公钥:(E, N)

中间人攻击

中间人攻击就是主动攻击者混入发送者和接收者的中间,对发送者伪装成接收者,对接收者伪装成发送者的攻击方式。

混合密码系统

  • 用公钥密码加密对称密码中所使用的密钥
  • 用对称密码来加密明文

单向散列函数

单向散列函数有一个输入和一个输出,其中输入称为消息,输出称为散列值。单向散列函数可以根据信息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。
难以发现碰撞的性质称为抗碰撞性。密码技术中所使用的单向散列函数,都需要具备抗碰撞性。
当给定某条消息的散列值时,单向散列函数必须确保要找到和该条消息具有相同散列值的另外一条消息是非常困难的,这一性质称为弱抗碰撞性。所谓强抗碰撞性,是指要找到散列值相同的两条不同的消息是非常困难的。
单向散列函数必须具备单向性。单向性指的是无法通过散列值反算出消息的性质。
使用单向散列函数可以辨别出篡改,但无法辨别出伪装。

消息认证码

消息认证码(message athentiation code)是一种确认完整性并进行认证的技术,取三个单词的首字母,简称为 MAC。
消息认证码的输入包括任意长度的消息和一个发送者与接受者之间的共享的密钥,它可以输出固定长度的数据,这个数据称为 MAC 值。
由于发送者和接收者共享相同的密钥,因为会产生无法对第三方证明以及无法防止否认等问题。

数字签名

数字签名使用公钥和私钥组成的密钥对,用私钥加密相当于生成签名,用公钥解密则相当于验证签名。
通过数字签名我们可以识别篡改和伪装,还可以防止否认。

证书

公钥证书包括姓名、组织、邮箱地址等个人信息以及属于此人的公钥,并由认证机构施加数字签名。

随机数

将随机数的性质分为以下三类:

  • 随机性:不存在统计学偏差,是完全杂乱的数列。弱伪随机数
  • 不可预测性:不能从过去的数列推测出下一个出现的数。强伪随机数
  • 不可重现性:除非将数列本身保存下来,否则不能重现相同的数列。真随机数
    在密码技术中使用的伪随机数生成器,是以具备不可重现性的真随机数作为伪随机数的种子,来生成具备不可预测性的强伪随机数。

SSL/TLS

握手阶段


来源

参考