一 用于确保机密性的密钥和用于认证的密钥

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

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

二 会话密钥与主密钥

下面来关注一下密钥被使用的次数。

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

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

虽然每次通信都会更换会话密钥,但如果用来生成密钥的伪随机数生成器的品质不好,窃听者就有可能预测下次生成的会话密钥,这样就会产生通信内容被破译的风险。

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

三 用于加密内容的密钥和用于加密密钥的密钥

一般来说,加密的对象是用户直接使用的信息,这样的情况下所使用的密钥称为CEK(内容加密密钥);相对地,用于加密密钥的密钥则称为KEK(密钥加密密钥),下图展示了CEK和KEK的一种用法。

常用的密钥 AES java_主密钥

将密钥进行加密好像有点奇怪,但通过上面这样的两段是方法,可以减少需要保管的密钥数量。

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