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