密码学系列之:明文攻击和Bletchley Park
简介
明文攻击就是指已经知道了部分明文和它对应的加密后的字段,从而可以推测出使用的加密手段或者密码本。明文攻击这个故事还要从二战时候说起。
crib和明文攻击
谈到明文攻击,就不能不讲到一个词crib和它的发源地布莱奇利公园(Bletchley Park)。
布莱奇利公园(Bletchley Park)是位于米尔顿凯恩斯(Buckinghamshire)的英国乡村房屋和庄园,它是由金融家和政治家赫伯特·莱昂爵士在1883年建造的, 在第二次世界大战期间成为同盟国密码破解的主要中心。
在第二次世界大战期间,该庄园内设有专门进行密码破译的研究所,该研究所主要负责破译轴心国的秘密通信,其中最重要的是德国的Enigma和Lorenz密码。在其早期人员中,密码破译团队拥有很多著名的人物,包括Alan Turing,Gordon Welchman,Hugh Alexander,Bill Tutte和Stuart Milner-Barry。直到战后多年,那里的工作才被公布于世。
正因为这个密码破译团队的杰出成效,破译了很多轴心国的密码,据说直接导致二战提前四年结束,如果没有它,二战的结果还是未知之数。
为了更加有效的破译密码,Bletchley Park的团队开始借助机械的力量来进行密码破解,最终发展了世界上第一台可编程数字电子计算机Colossus。Bletchley Park的密码破解活动于1946年结束,并于1970年代中期才对外公开。
crib这个词源自于一句关于抄袭的谚语:“I cribbed my answer from your test paper”。
那么crib在明文攻击中到底意味着什么呢?
比如同盟军截获到了轴心国发送的一个电报,那么应该怎么来进行破解呢?
当然,前提是那时候的加密手段还比较粗浅,基本上是一个字符或者单词被转换成了其他的字符或者单词。
同盟军已经拿到了电报了,比如是一封完全看不懂的邮件。那么如何来进行破解呢?
常见的做法就是从点到面,如果我们能够破解其中的一部分单词或者句子,那么对于我们理解整个密文肯定是有好处的,即使不能了解当前的密文,那么如果后面截获了其他的密文,也是可以对破解有所帮助的。
为了猜测密文对应的明文信息,Bletchley Park团队根据发送消息的时间和识别一些常规操作消息来猜测一些纯文本。例如,德国人每天在同一时间发送每日天气预报。因为军事报告的格式是非常统一的,所以在每封邮件的同一位置都应包含Wetter(德语为“天气”)一词。 当然,在消息末尾出现的“ Heil Hitler”也是非常容易猜测到的明文。
知道这些简单的明文往往是不够的,盟军需要知道更多更加关键的明文信息。为此有时候甚至会故意泄露一些消息给轴心国,比如某时某刻准备用空军轰炸某个地方,那么马上就会监控到的消息中很有可能就会包含轰炸和要轰炸的地方,这样就会为最终密码的破解提供了线索。
布莱奇利公园(Bletchley Park)
从1919到1942年间,Bletchley Park的最高指挥官是阿拉斯泰尔·丹尼斯顿(Alastair Denniston)。最初的人员是从海军部40室(NID25)和战争办公室的MI1b组成的。
当然还有一些其他的密码学家,那时候的密码学家主要是语言学家和国际象棋冠军,并且还招募了一些谜题填字游戏的顶级求解者,因为这些人具有较强的横向思维能力。
少不了的还有正规军也就是各大高校的教授和数学家,特别是剑桥和牛津大学的人。牛津大学的彼得·特温(Peter Twinn)于1939年2月加入,]剑桥大学的艾伦·图灵和戈登·韦尔奇曼于1938年开始训练,并在宣战后的第二天与约翰·杰弗里斯一起向布莱奇利汇报。
后来招聘的密码分析家包括数学家Derek Taunt,Jack Good,Bill Tutte 和Max Newman。历史学家哈里·辛斯利(Harry Hinsley)以及国际象棋冠军休·亚历山大(Hugh Alexander)和斯图尔特·米尔纳·巴里(Stuart Milner-Barry)。还有受聘为密码分析员的女性琼·克拉克(Joan Clarke)。
1945年1月,在代码破解工作的顶峰时期,有近10,000名人员在布莱奇利及其分站工作。其中约四分之三是妇女。许多妇女来自中产阶级背景,并在数学,物理学和工程学领域拥有学位,可以说妇女能顶半边天。
美国加入第二次世界大战后,许多美国密码学家也被被派往Bletchley Park,从1943年5月开始,英美情报部门之间进行了密切合作。相反,苏联从未被正式告知布莱奇利公园及其活动-这反映了即使在纳粹威胁实施的美英苏同盟期间,丘吉尔也不信任苏联。
本文已收录于 http://www.flydean.com/known-plaintext-attack/
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
密码学系列之:明文攻击和Bletchley Park的更多相关文章
- 密码学系列之:memory-hard函数
密码学系列之:memory-hard函数 目录 简介 为什么需要MHF Memory hard的评估方法 MHF的种类 MHF的密码学意义 memory-hard在MHF中的应用 简介 Memory ...
- 密码学系列之:碰撞抵御和碰撞攻击collision attack
密码学系列之:碰撞抵御和碰撞攻击collision attack 简介 hash是密码学和平时的程序中经常会用到的一个功能,如果hash算法设计的不好,会产生hash碰撞,甚至产生碰撞攻击. 今天和大 ...
- 密码学系列之:feistel cipher
密码学系列之:feistel cipher 简介 feistel cipher也叫做Luby–Rackoff分组密码,是用来构建分组加密算法的对称结构.它是由德籍密码学家Horst Feistel在I ...
- 密码学系列之:memory-bound函数
密码学系列之:memory-bound函数 目录 简介 内存函数 内存受限函数 内存受限函数的使用 简介 memory-bound函数可以称为内存受限函数,它是指完成给定计算问题的时间主要取决于保存工 ...
- 密码学系列之:Merkle–Damgård结构和长度延展攻击
密码学系列之:Merkle–Damgård结构和长度延展攻击 简介 Merkle–Damgård结构简称为MD结构,主要用在hash算法中抵御碰撞攻击.这个结构是一些优秀的hash算法,比如MD5,S ...
- <密码学系列>—信息安全威胁
懒惰等于将一个人活埋.--泰勒 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues. https://github.com/midou-tech/articles 点关注,不迷路! ...
- 密码学系列之:NIST和SHA算法
目录 简介 SHA1 SHA2 SHA3 简介 SHA算法大家应该都很熟悉了,它是一个用来计算hash的算法,目前的SHA算法有SHA1,SHA2和SHA3种.这三种算法都是由美国NIST制定的. N ...
- 密码学系列之:blowfish对称密钥分组算法
目录 简介 blowfish详解 密钥数组和S-box 密钥数组 S-box 生成最终的K数组 blowfish blowfish的应用 blowfish的缺点 简介 Blowfish是由Bruce ...
- 密码学系列之:1Password的加密基础PBKDF2
目录 简介 PBKDF2和PBKDF1 PBKDF2的工作流程 详解PBKDF2的key生成流程 HMAC密码碰撞 PBKDF2的缺点 总结 简介 1password是一个非常优秀的密码管理软件,有了 ...
随机推荐
- tcp 接收被动关闭 fin
void tcp_rcv_established(struct sock *sk, struct sk_buff *skb, const struct tcphdr *th, unsigned int ...
- epoll内核源码详解(转 作者:赛罗·奥特曼 来源:牛客网)
发现自己发的一篇面经后,很多小伙伴向我索要epoll的内核源码实现,那我就在牛客网发下这源码还有自己总结的流程. 另外 网上很多博客说epoll使用了共享内存,这个是完全错误的 ,可以阅读源码,会发现 ...
- dp:322. Coin Change 自下而上的dp
You are given coins of different denominations and a total amount of money amount. Write a function ...
- linux系统中离线安装python3.7过程记录
最近公司新弄来一台linux redhat 4.4.7服务器,准备在上面离线安装python3.7,安装过程中出现一些问题,特此记录下来. 首先在python官网上下载了 Python-3.7.3. ...
- python 与 百度人脸识别api
用python来做人脸识别代码量少 思路清晰, 在使用之前我们需要在我们的配置的编译器中通过pip install baidu-aip 即可 from aip import AipFac ...
- Linux程序开发中如何判断目录是否为根目录?
问题引入 判断某个目录字符串是否是根目录,咋一听很简单,只要判断字符串是否是"/"即可,但是,很多情况下使用的路径是相对路径,那么如何判断相对路径是根目录呢? 思路分析 熟悉Lin ...
- Microsoft Visual C++ 2005 SP1无法安装
安装时出现需要Microsoft Visual C++ 2005 Redistributble对话框, 里面说Command line option syntax error . Type Comma ...
- 我要进大厂之大数据ZooKeeper知识点(2)
01 我们一起学大数据 接下来是大数据ZooKeeper的比较偏架构的部分,会有一点难度,老刘也花了好长时间理解和背下来,希望对想学大数据的同学有帮助,也特别希望能够得到大佬的批评和指点. 02 知识 ...
- 我的开源经历:为了方便处理三方 HTTP 接口而写的 Java 框架
缘起 我以前公司需要在 Java 后台调用许多第三方 HTTP 接口,比如微信支付.友盟等等第三方平台. 公司内部还有很多服务是用世界最好语言写的,接口自然也只能通过 HTTP 接口来调用.于是日积月 ...
- Cassandra存储附带索引(SAI)全新上线
新一代Apache Cassandra索引现已在Astra和DataStax Enterprise 6.8.3中正式开放使用 (general availability or GA),很快您也将在开源 ...