什么是密钥

在使用对称密码、公钥密码、消息认证码、数字签名等密码技术都需要一个称为密钥的巨大数字。然而,数字本身的大小并不重要,重要的是密钥空间的大小,也就是可能出现的密钥的总数量,因为密钥空间越大,进行暴力破解就越困难。密钥空间的大小由密钥长度决定。

DES 的密钥

对称密码 DES 的密钥的实质长度为 56 比特(7字节)。一个 DES 密钥可表示为:

1
2
3
4
5
6
// 二进制
01010001 11101100 01001011 00010010 00111101 01000010 00000011
// 十六进制
51 EC 4B 12 3D 42 03
// 十进制
2305928028626269955

3DES 的密钥

在对称密码三重 DES 中,包括使用两个 DES 密钥的 DES-EDE2 和使用三个 DES密钥的 DES-EDE3 两种方式。

DES-EDE2 的密钥的实质长度为 112 比特(14字节)。

1
51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F

DES-EDE3 的密钥的实质长度为 168 比特(21字节)。

1
51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F 24 9F 61 2A 2F D9 96

AES 的密钥

对称密码 AES 的密钥长度可以从 128、192和256比特中进行选择,当密钥长度为 256 比特时,其长度如下面这个数字:

1
51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F 24 9F 61 2A 2F D9 96 B9 42 DC FD A0 AE F4 5D 60 51 F1

各种不同的密钥

对称密码的密钥与公钥密码的密钥

对称密码中,加密和解密使用同一个密钥,密钥必须对发送者和接收者以外的人保密,否则第三方就能解密密文了。

公钥密码中,加密和解密使用的是不同的密钥,用于加密的密钥称为公钥,用于解密的密钥称为私钥。公钥和私钥之间具有深刻的数学关系,因此也称为密钥对。

消息认证码的密钥与数字签名的密钥

消息认证码中,发送者和接收者使用共享的密钥来进行认证。消息认证码只能由持有合法密钥的人计算出来。将消息认证码附加在通信报文后面,就可以识别通信内容是否被篡改或伪装。消息认证码的密钥必须对发送者和接收者之外的人保密,否则就会产生篡改和伪装的风险。

数字签名中,签名的生成和验证使用不同的密钥。只有持有私钥的本人才能够生成签名,验证签名使用的是公钥,任何人都能够验证签名。

用于确保机密性的密钥与用于认证的密钥

对称密码和公钥密码的密钥都是用于确保机密性的密钥,如果不知道用于解密的合法密钥,就无法得知明文的内容。

消息认证码和数字签名所使用的密钥,则是用于认证的密钥。如果不知道合法的密钥,就无法篡改数据,也无法伪装本人的身份。

会话密钥与主密钥

当我们访问以https://开头的网页时,浏览器和服务器之间会进行基于 SSL/TLS 的加密通信。在这样的通信中所使用的密钥是仅限于本次通信的一次性密钥,下次通信时就不能使用了。像这样每次通信只能使用一次的密钥为会话密钥(session key)。

由于会话密钥只在本次通信中有效,万一窃听者获取了本次通信的会话密钥,也只能破译本次通信的内容,下次通信中会使用新的密钥,因此其他通信的机密性不会受到破坏。

相对于每次通信都更换的会话密钥,一直被重复使用的密钥称为主密钥。

用于加密内容的密钥与用于加密密钥的密钥

一般来说,加密的对象是用户直接使用的信息,这种情况下所使用的密钥称为CEK(Contents Encrypting Key,内容加密密钥);用于加密密钥的密钥则称为KEK(Key Encrypting Key,密钥加密密钥)。

在很多情况下,会话密钥都是被作为 CEK 使用的,而主密钥则是被作为 KEK 使用的。

密钥的管理

生成密钥

配送密钥

更新密钥

保存密钥

作废密钥

Diffie-Hellman 密钥交换

基于口令的密码(PBE)

基于口令的密码(Password Based Encryption,PBE)就是一种根据口令生成密钥并用该密钥进行加密的方法。其中加密和解密使用同一个密钥。

PBE 加密

PBE 加密包括 3 个步骤:

  1. 生成 KEK
  2. 生成会话密钥并加密
  3. 加密消息

1.生成 KEK

首先,伪随机数生成器会生成一个被称为盐的随机数。将盐和口令一起输入单向散列函数,得到的散列值就是用来加密密钥的密钥(KEK)。

2.生成会话秘钥并加密

使用伪随机数生成器生成会话密钥,会话密钥是用来加密消息的密钥(CEK)。

会话密钥需要用步骤 1 中生成的 KEK 进行加密,并和盐一起保存在安全的地方。会话密钥加密后,KEK 就会被丢弃,因为 KEK 没有必要保存下来,只要通过盐和口令就可以重建 KEK。

打赏

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2017-2023 WSQ
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信