密码学的发展(第二篇:恩尼格码机)

article/2025/10/2 8:55:36

1、恩尼格玛机

恩尼格码机又叫英格玛机、哑谜机器或者奇谜机,它在二战中大放异彩。它使用的本质还是第二代机密法----替代和移位。但因为可以切换无穷种加密配套组合,所以在对抗频率分析上极为有效。

恩尼格玛机是一种机械电子式的加密机,由一堆齿轮、电线、灯泡、转盘、摇杆组成。其实使用机器做反锁的加密工作在之前也有过,只是因为它们都没有量产,所以也没有流行。而恩尼格玛机,是第一个大规模量产的加密机。

恩尼格玛机由德国人发明,主要包含了3部分,3部分之间由齿轮和电线相连:

  • 第一部分:敲原文用的键盘
  • 第二部分:把原文加工成密文的编码器
  • 第三部分:是密文的显示板

操作员只要做好设定,在键盘上敲入原文,经过编码器编码,密文显示板会按规则点亮密文字母,抄写员把点亮字母的顺序记录下来,加密过程就完成了。

这其中最重要的是编码器,下面详细整理编码器的工作原理:
编码器由一堆可以手工设置的机械部件组成,任何地方的调整都会改变加密的结果。其中最大的部件是齿轮式的字母盘,它前后通过导线与敲原文用的键盘,以及密文显示板相连。键盘那边敲一个字母,信号通过导线传给齿轮上的触点,在通过导线传到密文显示板上,原文就这样被加密成另一个字母了。

键盘没敲一个字母,字母盘中的齿轮会往下转一格,齿轮的转动导致线路连接的变化,而连接线一变,又导致了加密结果的不同。所以同一个字母敲入第二次、第三次,输出到密文显示板的结果也都不一样。总之,齿轮能转多少格,就意味着有几套加密法等着轮替。

最早齿轮一圈只有6格,也就是只有6套加密法,后来增加到了26个格。再后来,单套齿轮个数不在增加,而是增加了第2套齿轮,上面也有26个格。只有在第1套齿轮转完一圈后,第2套齿轮才前进一格。这样就相当于26*26套密码。下图是一个3组齿轮的恩尼格码机:
在这里插入图片描述每组齿轮正上方都留有一个小窗口,在使用时,双方约定一个共同的钥匙,比如说yes,然后把这3个窗口在初始时各显示那3个字母。然后他们按照这个顺序编码、解码信息,相互之间就可以通信了。

在通信时,发送端按照约定好的钥匙进行初始设定,然后输入原文,产生一串密文,接收端收到信息之后,把机器设定成约定好的钥匙,输入密文,输出的就是原文

通过上面的介绍,我们可以知道 恩尼格玛机实际上还是维吉尼亚加密法的改进,优势就是它的钥匙看似可以随意设定

但是这种方法可以通过穷举法暴力破解。比如我们使用3组齿轮的机器进行加密,初始钥匙就262626 = 17576种可能。我买100台这样的设备,每个机器尝试其中的175种,说不准几个小时就能破解。

设计者早就考虑到暴力破解的问题,所以他们在键盘和编码器之间又增加了一个叫“接线板”的结构,可以调换6对字母的线路。比如你在键盘上按的是a,但电流信号却是沿着b的线路输出到编码器上的。通过调换26个字母中随意的6对,组合一下子就增多到了1000多亿种,增加了破解的难度。如下图:
在这里插入图片描述

德国在二战期间在 每发一条信息时,都单独使用一把钥匙 。但是这样需要厚厚的密码薄,德国人就想出了以下的一个方法。
德国每个月都会发一本新的密码薄,里面记录着 每天接线板的状态和初始值的设定,但这个初始值并不是对原文进行加密的,而是对钥匙进行加密 ,然后写到用实际钥匙加密之后的密文前面。具体操作分为几个步骤:

1、假设齿轮的初始状态为QCW,然后钥匙为ABC,用设置成QCW状态的机器给ABC加密,假设变成了BMW,然后输入第二次ABC,加密后变成NBA。然后把两次的结果拼到一起,形成BMWNBA。
2、把机器初始状态设为ABC,然后对原文进行加密, 形成一串密文,然后把BMWNBA加到密文的前面。
3、解密时把机器初始状态设为QCW,然后对开头的六个字母进行解密,发现是ABCABC。然后在把机器的初始值设为ABC,在对剩余的密文进行解密。

这里为什么要对钥匙加密两次呢?是为了确认信号在传输中没有被干扰,或者对方操作没有失误。因为任何失误和干扰都会导致解码后,信息的前六位不是两次重复的样子,这样消息就会丢掉。

2、恩尼格码机的破解

很多人都知道,恩尼格码机最终是在二战中被 图灵 破解的,其实这样理解是错误的。恩尼格码机是各国科学家和军人通力合作才破解的,图灵只是完成了最后一步。

破解的过程可以分为5个关键性突破,分别是:

1、波兰密码学家与法国间谍合力搞清了机器的内部结构
2、波兰政府把密码学家破译的成果分享给了英国和法国
3、英国海军成功捕获了德国的一艘舰艇,从上面得到了一台真实的恩尼格码机和一本钥匙薄
4、德军士兵在使用恩尼格码机时,经常不按规范操作
5、盟军采用诱骗战术让德军故意发送特定词语

一战之后,德国虽然战败,但不是完全意义上的战败,虽然对胜利国进行了赔款,但是德国一直憋着一口气,我个人觉得就是这样让德国走上了纳粹的道路。波兰因为跟德国交界,有一些领土争端,而且还很弱小,所以一直防着德国。他们通过和法国的合作,搞到了德国军用版恩尼格玛机的《使用说明书》和《钥匙指南》两份资料。通过这两份资料,他们搞懂了恩尼格玛机的内部结构,但前期没有办法破译它们。

后来波兰找来一些数学家,对每天的信息进行整理、分析、寻找规律,经过一年多的工作。把所有的规律和对应的初始值做成了一本字典,这样破解了恩尼格码机。有点像现在的大数据,经过大量数据的分析,找通性,建模。

但是在二战开打前的一年,德国把恩尼格码机编辑器的齿轮增加到5个,接线板的数量同时也增加了,之前的字典就无效了。1939年德国撕毁了和波兰的互不侵犯条约,波兰坐不住了,赶紧把军用恩尼格码机的结构、破解方法等信息,公布给了盟友。英国对波兰提供的信息非常重视,扩充了密码队伍,把密码局40号房换到了 布莱切利园

英国刚开始靠堆机器、对人力,在摸透了德军的不规范操作的情况下也 勉强破解 了密码。比如:设定的初始值,按操作规范应该是随机设定,但实际上德军操作员根本做不到这一点,类似QWE、ASD、IOP这样键盘上相邻的字母经常出现。就算3个字母 不连着,但手指的活动总是有规律的,3个字母在键盘上的位置总会趋向于集中,所以这些组合在解码时优先尝试。甚至还有用女朋友名字的前三个字母的。

另外操作指南也有漏洞,比如,当天的齿轮设定,同一个齿轮不能在同一个位置连续出现2次。听上去好像避免了重复,但其实减少了齿轮组合的一半可能性。还有,接线板对调字母不能对调相邻的两个字母,比如B不能和A对调,也不能和C对调,结果这样可能性的总数又锐减。

但这种水平的破译,是远远不够的。一旦德国发现,每条信息的前6位是破译者可以抓住的漏洞的话,就会改变钥匙的传递方式。那样的话英国就没办法了。所以,图灵的任务就是找到一种全新的破解法,完完全全的猜透恩尼格玛机。

图灵从一些军事规律导致的漏洞中破解了密码。比如,德军消息中类似的,“无特殊情况”、“希特勒万岁”这样的词经常出现。还有 “天气” 这个词,每天早上6点到6:05分必然出现,而且大都出现在信息的开头。还有英军对特定地点布置水雷,这些水雷是信息诱饵。德军发现水雷后,肯定会发这样的电报:在东经XXXX,北纬XXXX水域,发现大量水雷。这样一来,原文中很多的词就可以确定了。**图灵就是通过手头已有的少量原文和密文,想出了一种方法,建立了它们之间的对应关系,把钥匙的可能性减少到105万种。**然后通过一个叫“炸弹”的破解机,对着105万种可能进行暴力破解,到1942年的时候,破解德国陆军恩尼格玛机当天的钥匙,大约只需要1小时的时间。

3、总结

密码学因为涉及到国家安全,所以很多密码学家没有受到应有嘉奖(和我国的核物理学家一样),但是他们对于国家的贡献是不言而喻的。

到这我们发现“如何加密”已经不那么重要了,在隐藏法的世代,如何加密是绝对的机密。而替代法和移位法,大部分原理人们都知道,只是不知道具体移动了几位。但到了机械电子加密的世代,加密设备的工作原理,不论是理论还是技术细节,双方都了如指掌,密码的安全性全部落在钥匙上,而不再依赖加密的过程。

感谢大家,我是假装很努力的YoungYangD(小羊)。

参考资料:
《卓克的密码学课》


http://chatgpt.dhexx.cn/article/XaN7e3uO.shtml

相关文章

密码学简史(一)--- 谍战中的古典密码学

文章目录 1. 隐藏法2. 移位法与替代法3. 维吉尼亚加密法3.1 维吉尼亚加密法的破解3.2 维吉尼亚加密法2.0版3.3 维吉尼亚加密法3.0版 4. 恩尼格玛密码机(Enigma)4.1 第一代恩尼格玛机的破解4.2 第二代恩尼格玛机的破解 更多文章: 密码学数千年的发展史,加…

MATLAB实现Enigma 密码机

Matlab 模拟实现 enigma 密码机。密码机包含三个转子和反射器,满足以下条件: 1. 输入信号从左往右通过各个转子(在到达反射器之前); 2. 根据输入信号的流经次序,从左到右将转子依次标号为转子 1、转子 2、…

通过Java实现恩尼格玛密码机

1 简介 前一段时间看了B站介绍恩尼格玛密码机的视频,试了试用Java来实现一台恩尼格玛密码机,在此文章中来简单介绍自己实现的思路和代码以供大家学习参考,如有错误,欢迎指出。 单表替换密码会由于字母分布的规律被破解出来&…

加密解密工具 之 恩尼格玛密码机密码

工具链接:http://www.atoolbox.net/Tool.php?Id993 恩尼格码密码机及加密原理 恩尼格码密码机是二战时期的纳粹德国及其盟国,特别是德国军方所使用的一种高级机械加密系统,以转子结构为主体。 密码机一般装在一个盒子里。当要加密一串字符…

恩尼格玛密码机原理解析(Enigma principle )

恩尼格玛机也结合了机械系统与电子系统。机械系统包括了一个包含了字母与数字的键盘,相邻地排列在一个轴上的一系列名为“转子” 的旋转圆盘,还有一个在每次按键后就使一个或几个转子旋转的装置。各种恩尼格玛机上的机械系统都各为不同,但是&…

使用HttpClient模拟POST请求

HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。当前官网最新版介绍页是:http://hc.apache.org/httpcomponents-client-4…

fastmock模拟post、get请求

参考资料: fastmock 帮助文档 初学者可以根据这个文档了解如何创建项目 【前端必备基本技能】-fastMock平台使用_哔哩哔哩_bilibili 如果觉得文档不好理解的小伙伴可以看这个视频,本人觉得讲的很仔细。 Mock.js 实例练习: get请求 …

TCP模拟HTTP请求

HTTP的特性 HTTP是构建于TCP/IP协议之上,是应用层协议,默认端口号80 HTTP协议是无连接无状态的 HTTP报文 请求报文 HTTP协议是以ASCⅡ码传输,建立在TCP/IP协议之上的应用层规范。 HTTP请求报文由请求行(request line)、…

使用postman模拟post、get请求

postman通常作为一种接口测试工具,如:采用post、get等方式,模拟对接口进行访问,用于查看接口功能是否正常。 模拟POST请求 选择请求方式为POST 设置请求url地址 http://localhost:8081/webside/subSystemLogin.html 选择Header…

如何简单的模拟发送http post请求

有天在做项目演示的时候要用到post请求的模拟发送,为此总不至于写一个html页面,当时只记得百度了一下模拟发送http post请求,方法大概都是说用fiddler工具或者使用cmd内置telnet客户端模拟http请求。 这里抄送附上fiddler工具和telnet模拟po…

接口测试中模拟post四种请求数据

转自 作者:隋胖胖LoveFat 链接:https://www.jianshu.com/p/3b6d7aa2043a 来源:简书 一、背景介绍 在日常的接口测试工作中,模拟接口请求通常有两种方法,fiddler模拟和HttpClient模拟。 Fiddler是一个简单的http协议调…

谷歌学术访问

https://via.hypothes.is/ 不需要镜像,不需要任何操作,只需打开这个网站,输入你要访问的学术网站,秒开 第一步: 第二步:

谷歌学术(google scholar)个人主页的论文信息不准确怎么办?

题目:谷歌学术(google scholar)个人主页的论文信息不准确怎么办? 谷歌学术主页是很多人展示自己学术成果的一种方式,但很多时候,谷歌自动给你聚集到主页的论文信息是有误的,这时候怎么去编辑呢? 论文信息…

谷歌学术介绍

转载自:http://blog.renren.com/share/111541487/15517062888 “谷歌学术”是谷歌搜索引擎中的学术检索部分,相对于知网、维普、万方、Pubmed等专业的论文数据库来说功能单薄了些,但具有页面简约、搜索速度快、集国内外文献于一体、某些文章可…

Google 学术搜索(Google Scholar)使用技巧

本文简介Google 学术搜索(Google Scholar)使用技巧, 关于Web Of Science 上搜索文献,查看SCI分区及影响因子情况参见我的另一篇博客(https://xiongyiming.blog.csdn.net/article/details/78474211) Google…

【谷歌学术】使用指南

【谷歌学术】使用指南 谷歌可以清楚看到作者的影响力,尤其是在衡量一个学者有多厉害,论文质量有多高【往往是博士阶层往上】 谷歌学术网站: https://scholar.google.com.hk/?hlzh-CN 查人 查论文都很好用 同时你订阅这个作者 还会收到他…

如何在谷歌学术下载论文

如何在谷歌学术下载论文(在Mac Pro上记录,但是windows应该同样适用) 1 下载谷歌浏览器 下载谷歌浏览器 官网截图如下: 2 下载谷歌浏览器扩展程序 googlehelper下载 在下载的时候,要记住下载的位置,后面…

谷歌学术搜索

Google Scholar (谷歌学术搜索,简称GS)是一个可以免费搜索学术文章的网络搜索引擎索引了出版文章中文字的格式和科目,能够帮助用户查找包括期刊论文、学位论文、书籍、预印本、文摘和技术报告在内的学术文献,内容涵盖自…

谷歌学术Google Scholar超实用干货(拒绝翻墙/插件)

最近看了很多大佬博主发的谷歌学术使用总结,觉得特别有用,小P在这里简单的总结一下,给自己做个使用大纲,也分享给大家啦!(觉得有帮助别忘了点赞、收藏哦) 谷歌学术简单来说就是一个汇集大量外文文献的网站(类似于百度学术)。百度学术的特点是:精简、不全不新,谷歌学…

科研——谷歌学术使用方法

输入需要搜索的文章名 点击“引用”,即可以出此篇文章的引用格式。点击“被引用次数”,即可以看到引用此篇文章的其他文章。 勾选“在引用文章中搜索”,在上方的空白处,搜索这些引用文章中的具体文章。 点击一篇查看是否被真正引用…