简介

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

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. 手把手教你使用Vuex(一)

    1.定义 vuex 是一个专门为vue.js应用程序开发的状态管理模式. 这个状态我们可以理解为在data中的属性,需要共享给其他组件使用的部分.也就是说,是我们需要共享的data,使用vuex进行统 ...

  2. linux c 线程间同步(通信)的几种方法--互斥锁,条件变量,信号量,读写锁

    Linux下提供了多种方式来处理线程同步,最常用的是互斥锁.条件变量.信号量和读写锁. 下面是思维导图:  一.互斥锁(mutex)  锁机制是同一时刻只允许一个线程执行一个关键部分的代码. 1 . ...

  3. diamond收集插件的自定义

    diamond是与graphite配合使用的一个数据收集的软件,关于这个配置的资料很多,使用起来也比较简单,详细的安装和配置会在后面的关于整套监控系统的文章里面写到,本篇是专门讲解怎么自定义这个数据收 ...

  4. loadrunner 生成随机参数 Radom相关

    我也是刚开始进入测试行业,不过比较幸运的我之前做过开发,所以对代码比较熟悉,对loadrunner没有进行过系统的学习,也是通过自己的摸索慢慢的积累知识. 今天遇到项目中要我做一个压力测试,其中一些参 ...

  5. nacos服务注册源码解析

    1.客户端使用 compile 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2.2.3.RELEASE' compi ...

  6. phpstorm 远程调式 php

    https://cloud.tencent.com/developer/article/1561767 超时设置 fastcgi: ``` 1. apache module的情况下: 修改配置文件 h ...

  7. 算法基础——KMP字符串匹配

    原题链接 题目: 给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字. 模板串P在模式串S中多次作为子串出现. 求出模板串P在模式串S中所有出现的位置的起始下标. 输入 ...

  8. css3系列之text-shadow 浮雕效果,镂空效果,荧光效果,遮罩效果

    text-shadow 其实这东西,跟  box-shadow 差不多,没啥好说的不懂的话,点这里→  css3系列之详解box-shadow  . 它只有 四个参数 x(第一个值设置x位置) y(第 ...

  9. recovery.sh

    #!/bin/bash source /etc/profile Time=`date +%F-%H-%M` Dir=/data/any.service.recovery if [ ! -d $Dir ...

  10. 精尽MyBatis源码分析 - Spring-Boot-Starter 源码分析

    该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...