简介

明文攻击就是指已经知道了部分明文和它对应的加密后的字段,从而可以推测出使用的加密手段或者密码本。明文攻击这个故事还要从二战时候说起。

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的更多相关文章

  1. 密码学系列之:memory-hard函数

    密码学系列之:memory-hard函数 目录 简介 为什么需要MHF Memory hard的评估方法 MHF的种类 MHF的密码学意义 memory-hard在MHF中的应用 简介 Memory ...

  2. 密码学系列之:碰撞抵御和碰撞攻击collision attack

    密码学系列之:碰撞抵御和碰撞攻击collision attack 简介 hash是密码学和平时的程序中经常会用到的一个功能,如果hash算法设计的不好,会产生hash碰撞,甚至产生碰撞攻击. 今天和大 ...

  3. 密码学系列之:feistel cipher

    密码学系列之:feistel cipher 简介 feistel cipher也叫做Luby–Rackoff分组密码,是用来构建分组加密算法的对称结构.它是由德籍密码学家Horst Feistel在I ...

  4. 密码学系列之:memory-bound函数

    密码学系列之:memory-bound函数 目录 简介 内存函数 内存受限函数 内存受限函数的使用 简介 memory-bound函数可以称为内存受限函数,它是指完成给定计算问题的时间主要取决于保存工 ...

  5. 密码学系列之:Merkle–Damgård结构和长度延展攻击

    密码学系列之:Merkle–Damgård结构和长度延展攻击 简介 Merkle–Damgård结构简称为MD结构,主要用在hash算法中抵御碰撞攻击.这个结构是一些优秀的hash算法,比如MD5,S ...

  6. <密码学系列>—信息安全威胁

    懒惰等于将一个人活埋.--泰勒 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues. https://github.com/midou-tech/articles 点关注,不迷路! ...

  7. 密码学系列之:NIST和SHA算法

    目录 简介 SHA1 SHA2 SHA3 简介 SHA算法大家应该都很熟悉了,它是一个用来计算hash的算法,目前的SHA算法有SHA1,SHA2和SHA3种.这三种算法都是由美国NIST制定的. N ...

  8. 密码学系列之:blowfish对称密钥分组算法

    目录 简介 blowfish详解 密钥数组和S-box 密钥数组 S-box 生成最终的K数组 blowfish blowfish的应用 blowfish的缺点 简介 Blowfish是由Bruce ...

  9. 密码学系列之:1Password的加密基础PBKDF2

    目录 简介 PBKDF2和PBKDF1 PBKDF2的工作流程 详解PBKDF2的key生成流程 HMAC密码碰撞 PBKDF2的缺点 总结 简介 1password是一个非常优秀的密码管理软件,有了 ...

随机推荐

  1. open系统调用

    /* int open(const char *pathname, int flags, mode_t mode);flag:打开方式,可以man 2 open查看 O_RDONLY    O_WRO ...

  2. t分布与t检验的一点理解

    最近又遇到了t分布及t检验方面的内容,发现有些地方自己当初没有很明白,就又查了些资料,加深了一下自己的理解,这里也将自己的一些理解记录下来. 1. 理论基础--大数定理与中心极限定理        在 ...

  3. 给你一条sql语句如何进行优化

    我们sql语句的书写是根据业务逻辑进行书写的,如果执行比较慢,那么我们对sql重写: 如分步查询,然后在代码层进行拼接:用临时表:改变sql语句的写法等等.我们称之为逻辑层优化. 然后我们看看每条sq ...

  4. custom-ubuntu-server-iso

    Remastering the Ubuntu Desktop ISO is easy considering the existing graphical tools but did you ever ...

  5. Python_编码错误解决办法 python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX

    先说解决办法:头部加几行代码 import io import sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb1803 ...

  6. Python_爬虫_百度图片

    百度图片有些有编码问题,暂时不能爬取,多试几个 #思路:抓取图片地址,根据地址转存图片(注意名称):难点:转码 # -*- coding:utf-8 -*- from urllib import re ...

  7. HotSpot类模型之InstanceKlass

    上一篇 HotSpot源码分析之类模型 介绍了类模型的基础类Klass的重要属性及方法,这一篇介绍一下InstanceKlass及InstanceKlass的子类. 1.InstanceKlass类 ...

  8. 链表(LinkedList)解题总结

    链表基础知识 定义 链表(Linked List)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer). 链表的操作 操作 ...

  9. Monitor的扩展支持string的超时锁

    对Monitor的使用可以防止lock的时间过长并且可以设置其对应的超时时间达到对预期代码的一个控制,合理的使用timeout可以有助于程序的健壮性.但是对于不同的并发程序可能某些时候我们需要的粒度是 ...

  10. 吉他自学用Guitar Pro好不好?

    很多人心中都有一个吉他梦,可苦于没有坚持下来.其实一个人自学吉他过程是非常枯燥的.经常手上被磨得都是茧,但是也不清楚自己弹的到底对不对. 如果不跟着老师练习,那很有可能就走了歪路或者是无法长期坚持.所 ...