现代密码学认为:密码算法可以公开,密钥必须保密,以确保密码的安全性。密钥参与密码的“操作”,并具有对密码“操作”的特定控制。
最初的密码技术,就是一种将信息的文字打乱顺序和替换为其他字母、让攻击者破译不了的方法,也称为密码术。攻击者不掌握这一密码术,就难以获取原来的信息。密码的整个秘密就是密码术本身。一旦这种技术被攻击者掌握,就必须设计和更换新的密码。
随着密码技术的发展,密码的具体实现过程,即怎么进行打乱处理的过程(密码算法)逐渐公开化,但需要在其中加入控制密码处理过程的秘密信息,即密钥。不知道密钥,即使知道密码是怎么进行变换处理的,也不能从密文中得到原来的明文。这样一来,密钥成为控制密码处理过程的关键因素,密码技术中需要保密的只有密钥。为了安全,可以定期更换密钥,而无须改变密码的处理过程,也就是不用更换密码算法,这样既安全又节省成本。
实际上,密钥是一系列不可预测的随机数,用于控制加密操作。例如,加密过程中,将密钥和被加密的信息通过数学运算充分地“搅拌”在一起,形成难以破译的密文。合法用户如果需要打开这些密文,只需利用密钥,就像用钥匙开锁一样,经过与加密过程相反的数学运算,也即解密过程,就可从密文中恢复原来的明文。
如果算法的安全强度足够大,攻击者只能靠猜测密钥的方法进行破译,但猜对的概率几乎为零。例如,SM4算法是公开的,也就是如何实现加密的过程、程序是公开的,但128比特的密钥需要保密。假设攻击者获取了一个密文,他如果在所有可能的密钥中猜测,需要试验2次。即使用超级计算机(每秒试验10万亿个密钥),仍需要试验108亿亿年。
在密码系统中,密钥的生成、使用和管理过程中起到非常重要的作用。失去对密钥的控制将导致密码系统失败,因此必须严格保护密钥。