对称密码学
基础知识
对称密码方案也称对称密钥,秘密密钥和单密钥。
一个很常见的例子:Alice传信息给Bob,被Oscar截取。但是Alice发送的信息x(明文),已通过k(密钥)加密为y(密文),所以Oscar截取到的只是杂乱无章的y。
所以在一个可靠的密码体制中唯一需要保密的就是密钥。
简单对称密码:替换密码
将字母表中的一个字符用另一个字符替换。
假设我们选择的替换表完全是随机的,攻击者不可能猜测出对应的输出。值得注意的是,替换表是这种密码体制的关键。
蛮力攻击
蛮力攻击:攻击者Oscar通过信道窃取得到密文,并且他恰巧知道一小段明文,例如被加密文本的开头。则Oscar可以尝试使用所有可能的密钥解密该密文的前一小段,当解密得到的正好是明文时密钥正确。(此种加密方法的密钥是一个替换表)
理论上讲,蛮力攻击是可以破解的,但实际上这种方法的可行性取决于密钥空间的大小,即某个给定密码存在的所有可能密钥对数量。而且蛮力攻击的过程会很复杂,因为不正确的密钥会产生误报。
替换密钥空间:当选择第一个字母A的替换字母时,我们可以从26个字母表中随机选择一个,例如K,第二个字母B的替换字母则可以从剩下的25个字母中随机选择,以此类推。因此,总共存在的不同替换表的数目为:26×25×24×……×3×2×1=26!≈2^88
但这并不能证明替换密码算法是安全的,因为还有其他攻击方法。
字母频率攻击
替换密码的最大缺点在于:每个明文字符总是映射到同一个密文字符。这就意味着明文的统计属性得到了保留。在实际的字母频率攻击中,我们可以利用以下几种语言特征:
-
确定每个密文字母都频率。通常,密文中字母都频率分布与给定语音有着紧密联系,尤其是最常用的总是很容易被认出来。英文中各字母的出现频率图:
-
上面提供的方法可以推广到查看连续的两个密文字母或三个四个等。
-
假设我们发现了字母分隔符(空格),就可以很容易找到一些高频的短单词,例如and、a、the、that、i 等等。但是能发现字母分隔符的情况并不常见。
一般在解密过程中,通常讲上面的方法混合使用。
总之,好的密码应该隐藏被加密文本的统计属性,密文字符看上去应该是随机而且是杂乱无章的。此外对于一个强大的加密函数来说,仅仅密钥空间大是不够的。