如果说随机数和密码技术是相关的,可能有些读者还无法理解。实际上,和对称密码、公钥密码、数字签名等技术相比,生成随机数的技术确实不是很引人注意,但是,随机数在密码技术中却扮演着十分重要的角色。
例如,下面的场景中就会用到随机数。
生成密钥
用于对称密码和消息认证码。
生成密钥对
用于公钥密码和数字签名。
生成初始化向量(IV)
用于分组密码的CBC、CFB和OFB模式。
生成 nonce
用于防御重放攻击以及分组密码的CTR模式等。
生成盐
用于基于口令的密码(PBE)等。
上面这些用途都很重要,但其中尤为重要的是“生成密钥”和“生成密钥对”这两个。即使密码算法的强度再高,只要攻击者知道了密钥,就会立刻变得形同虚设。因此,我们需要用随机数来生成密钥,使之无法被攻击者看穿。