还是要从唯密文攻击说起。
两国交战,会截获大量的密文。可能通过一些途经可以知道对方的加密算法。(使用的人太多,无法保密,间谍双方都在极力使用)
此时攻击的条件就是:已知算法,不知道到密钥,要对密文进行强行破解。一个命令下来,由不得你强调各种原因。这时攻击的成功希望:
一是对方出现算法设计失误,一是老天帮忙。
此时求密钥可能性极低,简直就是开玩笑,除非设计算法的人水平及其低劣。
唯密文攻击会产生各种可能性需要进行判断。如果知道这份密件发出的部门(比如敌军参谋部,或敌某团电台),就会给破解带来一定的成功概率,因为相对敌军后勤部门内容会有所不同。这就是已知明文攻击的原始思想。
进一步,如果在对方内部能够安插一位间谍,虽然这位间谍地位无法接触到绝密资料,但可以“正常”发出一些不太重要的“密文”被敌方截获。这样我们就知道了一些不重要密文的准确内容(已知明文)。此时情形就与上面的有了变化,
就是:已知密文,已知明文,已知算法,求密钥。
也就是通过已知明文攻击我们刻意制造了获得密钥的可能性。
通过对敌方算法的大量研究分析,我们发现如果对方加密一些特定内容,根据其密文,就可以知道密钥。
比如:
将某种算法用大量不同的密钥加密“你好”等常用术语,(辅助以科学的算法分析手段)生成一个特定的数据库。这样一旦敌方加密了这些内容,就相当于将密钥直截告诉对方。
这就是:选择明文攻击创造了更高概率和更加方便得到密钥的条件。
当然,随着技术的进步,选择明文攻击这种古老的攻击手段已经无法奏效了。