为了避免暴力破解,不同密码学算法的密钥应该保证一定长度,密钥长度足够长也不代表安全,密钥应该是随机、无法预测的。
从两个维度考虑:
◎对称加密算法、MAC算法使用的密钥就是一串数字。
◎公开密钥算法中的密钥是一对,由多个部分组成,但本质上也可以认为由多个数字组成。
密钥虽然是简单的数字,但在实际使用过程中还是复杂的,涉及密钥生成、存储、传输等一系列的工作。
【生成密钥】
密钥最关键的特性:
◎足够的长度,达到一定长度才能保证算法安全性。
◎不可预测性,不能是简单的数字、字母组合,否则即使长度足够,密钥本身也容易被破解。
为了生成密钥,一般采用两种方法:
◎基于伪随机生成器生成密钥。
◎基于口令的加密(Password-based Encryption,简称PBE)算法产生密钥。
使用伪随机数生成器(PRNG)生成的密钥足够随机,很难预测。
PBE算法生成的密钥一般情况下无须存储,因为使用同样的口令就能生成同样的密钥。