恩尼格玛机也结合了机械系统与电子系统。机械系统包括了一个包含了字母与数字的键盘,相邻地排列在一个轴上的一系列名为“转子” 的旋转圆盘,还有一个在每次按键后就使一个或几个转子旋转的装置。各种恩尼格玛机上的机械系统都各为不同,但是,但是它们之间最大的共同点就是在每次按键后最右边的转子都会旋转,并且有些时候与它相邻的一些转子也会旋转。转子持续的旋转会造成每次按键后得到的加密字母都会不一样。

机械系统这样运行的原因是要产生不同的电流通路,字母的加密由机器自动完成。当一个键被按下后,电流就会流过各种线路,最终点亮其中一个灯,这个灯显示的就是加密后的字母。举例来说,如果想要发送一条以ANX开头的信息,操作员会先按下A键,这时灯Z就可能变亮,Z就是加密后的信息的第一个字母。操作员之后会按同样的步骤继续输入信息。

工作图,连续按两次A键后,电流会流经所有转子,通过反射器后分别向反方向流到G灯和C灯。注意:转子上的灰色线条代表了其它可能的线路,这些线条与转子以硬接连方式连接起来。连续按两次A键会得到不同的结果,第一次得到的是G,第二次是C。这是因为最右边的转子在第一次按下A键后会旋转一点点,这就将A键发出的电流送到了一个完全不同的路线上。

恩尼格玛机的工作原理,在此只显示4个键及灯和其它元件。实际上,恩尼格玛机拥有显示灯,按键,插孔和线路各26个。电流首先从电池①流到双向开关②,再流到接线板③。接线板的作用是将键盘②与固定接口④连接起来。接下来,电流会流到固定接口④,然后流经3个(德国国防军M3)或4个(德国海军M4版和德国阿博维尔情报局版)转子 ⑤,之后进入反射器⑥。反射器将电流从另一条线路向反方向导出,电流会再一次通过转子⑤和固定接口④,之后到达插孔S,又通过一条电线⑧流到插孔D,最后通过另一个双向开关⑨去点亮显示灯。

三大灵魂部件——转子、反射器、接线板

转子

转子组成了恩尼格玛机的核心部分。每个转子的直径大约为10厘米,形状为圆盘形,由硬质橡胶或电木制成,一系列由弹簧承载的黄铜管脚呈环形排列于其中一面,而另一面相对应的则是圆形的金属触点。管脚与触点代表的是字母表上的全部字母,典型的排列就是A-Z。当两个转子的位置相邻时,其中一个的管脚就会接触另外一个的金属触点,这就形成了一个通路。在转子内部,有26条金属线将一面的管脚与另一面的触点连接起来,这些金属线的排列方式在每个转子内都有所不同。

单一的一个转子的加密方式是很简单的,它只使用了一种初级的替换式密码。比如说,E键对应的管脚可能会连到同一个转子另一面的T触点。使恩尼格玛机的加密变得复杂的是多个转子的同时使用,一般在一台恩尼格玛机内有3个或4个转子,在输入信息的同时转子还会转动,这就产生了一种安全得多的加密方式。

当被放进恩尼格玛机后,一个转子可以有26种排列方法。它可以通过操作员来转动,为了使操作员知道转子的转动情况,每个转子在转盘外部都有一个刻着字母或数字的环;其中一个字母可以通过一个小窗看见,同时将转子的转动情况显示给操作员。在早期的型号中,这个字母环是固定于转子上的,但在后来的型号当中,操作员可以通过调整字母环的位置而调整转子内的线路。

每个转子上都有一个V形刻痕(有时有多个),这些刻痕是用来控制转子的转动的。在军用恩尼格玛机中,这些刻痕位于字母环上。

为了避免产生简单(并且容易破译)的加密信息,有一些转子在操作员连续按下同一个键时也会转动。这就保证了每次按键得到的结果都不一样,也就会产生很难破译的复式密码。

为了达到这个效果,最常见的布局就是使用一个防倒转齿和防倒转爪系统。每个转子都有26个防倒转齿,一组防倒转爪与这些齿相接。这些爪在每次按键后都会向前推,如果防倒转爪与防倒转齿相接的话,转子就会旋转一点。

在德国国防军恩尼格玛机中,每个转子都有一个可调节的带缺口的外环。5个最基本的转子(I-V)各有一个缺口,而附加的转子VI。VII,和 VIII各有两个缺口。在转子转动到某一点时,第二个转子的防倒转爪正好位于它的缺口之内,这就使第二个转子在下一次按键后也会转动。当防倒转爪位于缺口之外时,它就只会沿着另一个转子外环的光滑边缘滑动。在所有转子都只有一个缺口的系统中,第一个转子每转26次就会使第二个转子转动一次,同样的,第二个转子每转动26次就会使第三个转子转动一次。第三个转子转动的同时第二个转子也会转动。

注:恩尼格玛机转子的转动示意图。绿色的为防倒转装置。第一个转子(1)的防倒转齿总是与防倒转爪相接,所以在每一次按键后都会转动。第二个转子(2)的防倒转齿现在与防倒转爪相接,因为防倒转爪位于第一个转子上的缺口内。而第三个转子(3)的防倒转齿没有与防倒转爪相接,因为防倒转爪位于第二个转子上的缺口以外,所以它只会沿着第二个转子的光滑外缘滑动。

这种两个转子同时转动的现象使它与计程器区别开来。这个现象出现于下述情况:第一个转子转动完之后带动了第二个转子转动一点,如果这时第三个转子的防倒转爪正好落入第二个转子外环的缺口内,那么在下一次按键时,第三个转子就会转动一点,同时它的防倒转爪也会推动第二个转子的外环,这样就使第二个转子连续两次转动。

当拥有三个转子,并且第一和第二个转子的外环各有一个缺口时,一台恩尼格玛机就会拥有26 × 25 × 26 = 16,900个组合(不是26 X 26 X 26,因为第二个转子会与第三个转子一起转动)。

(rotor 转子;pawl;防倒转爪;ratchet 棘轮;notch 刻痕)

在历史上,每条信息的长度都被限制在几百个字母以内,所以在同一条信息中输入同样的字母产生同样的密码的几率是很小的。

为了给1942年启用的海军用第四个转子腾出空间,反射器经过了改造变得非常薄,多出来的空间就可以放入第四个特殊的转子。转子系统的其余部分不做改变。因为整个系统中只有三个防倒转爪,所以第四个转子从来都不会自动转动,但是它的位置可以手动调节。

当按下一个键后,转子会在电路接通之前转动。

各型的转子映射关系

反射器

除了早期的A型和B型之外,恩尼格玛机的最后一个转子之后都有一个反射器,反射器是恩尼格玛机与当时其它转子机械之间最显著的区别。它将最后一个转子的其中两个触点连接起来,并将电流沿一个不同的路线导回。这就使加密过程与解密过程变得一致。但是,反射器也使恩尼格玛具有了如下性质:加密后得到的字母与输入的字母永远不会相同。这在概念上和密码学上都是一个严重的错误,这个错误最终被盟军解码人员利用。

在商业用恩尼格玛机(C型)中,反射器可以有两种不同的安装方式。在D型中它可以有26种方式。而在军用恩尼格玛机中,反射器可以像转子一样转动。

在德国陆军和空军版恩尼格玛机中,反射器是固定的,并且不会旋转;他们用的恩尼格玛机一共有4个版本。最初的版本被标记为A型,1937年11月1日它被B型取代。第三种型号,C型,在1940年被短暂地使用过,它最终被木屋6号破解。D型拥有一个可以重新接线的反射器,首次测试于1944年1月2日,这个版本允许操作员来调整接线方式。

上图,为U型潜艇使用的M4型,如图左侧为反射器(该图中为C型)向右依次为4个转子,下方为经加密/解密的代表二十六个字母的灯泡。

接线板

接线板允许操作员设置各种不同的线路。它首先在1930年被用于德国陆军,很快地,德国海军也开始使用它。接线板极大地增强了恩尼格玛机的保密性,它的使用相当于多了不止一个转子。没有接线板的恩尼格玛机可以被很容易地用人工方法破解,但是加上接线板后,盟军的密码专家就需要使用特殊的机器了。

接线板上的每条线都会连接一对字母。这些线的作用就是在电流进入转子前改变它的方向。为了解释它的原理,我们把E插口和Q插口连接起来。当操作员按下E键时,电流就会先流到Q插口(相当于按下Q键)再流经转子。接线板上最多可以同时接13条线。

电流会从键盘流经接线板,之后进入转子。接线板上的每个插口内都有两个插孔,当将插头插入时,上插孔(连到键盘)与下插孔(连到转子)之间的连接就会被断开。另外一个插口内的上插孔会与此插口内的下插孔连接起来,而下插孔会与此插口内的上插孔连接起来,这样就完成了两个插口之间的连接。

数学描述

恩尼格玛对每个字母的加密过程可以以数学的角度看作为一个组合过程。假设有一台德国陆军/空军版3转子恩尼格玛机,让P表示接线板的连线,U表示反射器,L,M,R表示左,中,右转子。那么加密后的信息 E 就可以表示成

E = PRMLUL − 1M − 1R −
1P − 1

操作步骤

德军的各支部队使用一些不同的通讯网络,每个网络中的恩尼格玛机都有不同的设置。为了使一条信息能够正确地被加密及解密,发送信息与接收信息的恩尼格玛机的设置必须相同;转子必须一模一样,而且它们的排列顺序,起始位置和接线板的连线也必须相同。所有这些设置都需要在使用之前确定下来,并且会被记录在密码本中。

恩尼格玛机的设置包含了以下几个方面:

转子:转子的结构及顺序。

起始位置:由操作员决定,发送每条消息时都不一样。

字母环:字母环与转子线路的相对位置。

接线板:接线板的连线。

在末期版本中还包括了反射器的线路。

恩尼格玛机被设计成即使在转子的线路设置被敌人知道时仍然会很安全,尽管在实际使用中德军尽了全力来防止线路设置被泄露出去。如果线路设置为未知,那么最多需要尝试10114种情况才可能推算出恩尼格玛机的密码;当线路和其它一些设置已知时,也最多需要尝试1023次。恩尼格玛的使用者对它的保密性很有信心,因为敌人不可能使用穷举法来找出密码。

指示器

恩尼格玛的大部分设置都会在一段时间(一般为一天)以后被更换。但是,转子的起始位置却是每发送一条信息就要更换的,因为如果一定数量的文件都按照相同的加密设置来加密的话,密码学家就会从中得到一些信息,并且有可能利用频率分析来破解这个密码。为了防止这种事情发生,转子的起始位置在每次发送信息之前都会被改变。这个方法被称作“指示器步骤”。

在这个步骤中,操作员会先按照密码本中的记录来设置机器,我们假设这时的转子位置为AOH,之后他会随意打三个字母,假设为EIN,接着为了保险起见,他会将这三个字母重新打一遍。这六个字母会被转换成其它六个字母,这里假设为XHTLOA。最后,操作员会将转子重新设置为EIN,即他一开始打的三个字母,之后输入密电原文。

在接收方将信息解密时,他会使用相反的步骤。首先,他也会将转子按照密码本中的记录设置好,然后他就会打入密文中的头六个字母,即XHTLOA,如果发送方操作正确的话,显示板上就会显示EINEIN。这时接收方就会将转子设置为EIN,之后他就可将密电打入而得到原文了。

这个步骤的保密性差主要有两个原因。首先,操作员将转子的设置打到了密电中,这就使第三方能够得知转子设置。第二,这个步骤中出现了重复输入,而这是一个严重的错误。这个弱点使波兰密码局早在1932年就破解了二战之前的德军恩尼格玛系统。但是从1940年开始,德国改变了这个步骤,它的安全性也就提高了。

这个步骤只被用于德国陆军和空军。德国海军发送信息的步骤要复杂的多。在被恩尼格玛机发送之前,信息会先被Kurzsignalheft密码本进行加密。这个密码本将一个句子替换为了四个字母。它转化的句子包括了补给,位置,港湾名称,国家。武器,天气,敌人位置,日期和时间等内容。

部分使用代码

德国陆军的恩尼格玛机的键盘上只有26个字母。标点符号由字母组合来代替。X相当于空格。在各军种的恩尼格玛机中,X都相当于句号。有一些标点符号在不同军种的密码系统中被不同的字母组合代替。陆军的系统使用ZZ来表示逗号,FRAGE或FRAQ则表示问号。但是德国海军用来表示逗号及问号的则分别为Y和UD。Acht(意为“八”)和Richtung(意为“方向”)中的字母组合CH则由Q来代替。CENTA,MILLE和MYRIA分别表示两个,三个和四个零。

The Kriegsmarine used the following abbreviations before enciphering their text:
X = Period
Y = Comma
UD = Question Mark
XX = Colon
YY = Dash/Hyphen/Slant
KK*****KK = Parenthesis
J*****J = Stress Mark
Numbers are written out as words.
The Wehrmacht used other abbreviations:
KLAM = Parenthesis
ZZ = Comma
X = Full stop (end of sentence)
YY = Point or dot
X****X = Inverted commas
Question mark ( Fragezeichen in German) is usually abbreviated to one of the three following forms:
FRAGE, FRAGEZ or FRAQ
Foreign names, places etc. twice delimited by "X", e.g. XPARISXPARISX
The letters CH is written as Q, e.g. ACHT was written as AQT, RICHTUNG as RIQTUNG
It was prohibited to encipher the word "null" several times in succession. For several nulls these
abbreviations are used:
00 = CENTA
000 = MILLE
0000 = MYRIA
Examples: 200 = ZWO CENTA, 00780 = CENTA SIEBEN AQT NULL

德国陆军和空军将每条信息都翻译成5个字母的代码。使用四转子恩尼格玛机的德国海军则将信息翻译成4字母代码。经常用到的词语代码与原词语的差别越大越好。Minensuchboot(意为“扫雷艇”)这样的词语可以被表示为MINENSUCHBOOT, MINBOOT, MMMBOOT 或MMM354。比较长的信息会被分成几个部分来发送。

译码举例:

德军怎样使用机器?

“Here is an example of how the German Luftwaffe sent messages that were encrypted using Enigma. The
operators never used the secret daily key to encrypt the message but used this key only to encrypt a
randomly chosen message-key
 or 'trigram' that was chosen by the operator. This message-key was used to
encrypt the rest of the message. With this procedure they avoided excessive use of the secret daily key,
and each message on that day was encrypted with another randomly chosen key. During the war, different
systems like this were implemented to use the codebooks. In general, a codebook contained all the
settings, per day, for a whole month.”

以下是一个密码本的选段

31日传送来的密码:

“EHZ”(the trigram)为当日查密码本得的daily Key(转子初始位置)

1.按31日要求,选择转子(Walzen /rotors)并校正 转子内的字母环 (Ringstellung)连接接线板(plugs / 'Stecker' )

2.将起始位置设置为“EHZ”,

3.键入所收信息的trigram,即TBS,应得到译码XWB,这就是消息的密钥(message-key)

4.设置XWB为转子位置

5.译码其余部分

实例:

It's a message from the SS-Totenkopf
Division and is from the campaign against Russia, operation Barbarossa.

密码本获得设置:

3-rotor model
UKW: B (reflector)
Walzenlage: 245
Ringstellung: BUL
Stecker: AV BS CG DL FU HZ IN KM OW RX

注意:不要忘记通过daily key(trigram)获得加密员随机确定的message-key

RFUGZ及FNJAU是密码本中Kenngruppen项确定密码被使用的,译码时要跳过。

译码原文(德语)

AUFKL.ABTEILUNG.VON.KURTINOWA.KURTINOWA.NORDWESTL.SEBEZ.SEBEZ.UAFFLIEGERSTRASZERIQTUNG.DUBROWKI.DUBROWKI.OPOTSCHKA.OPOTSCHKA.UM.EINSAQTDREINULL.UHRANGETRETEN.ANGRIFF.INF.RGT.DREIGEHTLANGSAMABERSIQERVORWAERTS.EINSSIEBENNULLSEQS.UHR.ROEM.EINS.INFRGT.DREI.AUFFLIEGERSTRASZEMITANFANG.EINSSEQS.KM.KM.OSTW.KAMENEC.KAMENEC.DIV.KDR.

注:该处的X已被替换为"."方便阅读

翻译成英文即:

Reconnaissance unit from KURTINOWA north-west of SEBEZ
on the flight corridor in direction DUBROWKI, OPOTSCHKA.
Started to move at 18:30. Attack. Infantry Regiment 3 goes
slowly but surely forwards. Time: 17:06. I (Roman number 1).
Infantry Regiment 3 on the flight corridor starting 16 km
east-west of KAMENEC.
                                   Division Commander.

转载自: 恩尼格玛密码机原理解析(Enigma principle ) | 学步园

恩尼格玛密码机原理解析(Enigma principle )相关推荐

  1. Python实现恩尼格玛加密算法——附完整源码

    Python实现恩尼格玛加密算法--附完整源码 恩尼格玛是第二次世界大战中德国所使用的复杂电机械式密码机.它被认为是世界上最复杂的加密设备之一.在这个项目中,我们将使用Python模拟实现恩尼格玛加密 ...

  2. 【Python 小白到精通 | 课程笔记】第二章:图灵和恩尼格马密码机2(文本分析)

    Alstudio 课程地址:飞桨AI Studio - 人工智能学习实训社区 (baidu.com) Python 小白到精通--第二章:图灵和恩尼格马密码机2(文本分析) 今天的任务:破解密钥 原以 ...

  3. Enigma密码机初级解析

    原文地址:http://blog.sina.com.cn/s/blog_6f06b8b101016s9r.html 写在前面     在又一次读完1001n兄的<密码传奇>之后,我决定写些 ...

  4. python编程挑战——使用python实现恩格玛机(1)

    想起一个好玩的事情,使用python来实现德军在二战时加密的设备--恩格玛机. 那么什么是恩格玛机,他是怎么工作的?这篇文章提供了很详细的说明: https://www.zhihu.com/quest ...

  5. Spark Shuffle原理解析

    Spark Shuffle原理解析 一:到底什么是Shuffle? Shuffle中文翻译为"洗牌",需要Shuffle的关键性原因是某种具有共同特征的数据需要最终汇聚到一个计算节 ...

  6. 秋色园QBlog技术原理解析:性能优化篇:用户和文章计数器方案(十七)

    2019独角兽企业重金招聘Python工程师标准>>> 上节概要: 上节 秋色园QBlog技术原理解析:性能优化篇:access的并发极限及分库分散并发方案(十六)  中, 介绍了 ...

  7. Tomcat 架构原理解析到架构设计借鉴

    ‍ 点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 Tomcat 架构原理解析到架构设计借鉴 Tomcat 发展这 ...

  8. 秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五)...

    文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色 ...

  9. CSS实现元素居中原理解析

    原文:CSS实现元素居中原理解析 在 CSS 中要设置元素水平垂直居中是一个非常常见的需求了.但就是这样一个从理论上来看似乎实现起来极其简单的,在实践中,它往往难住了很多人. 让元素水平居中相对比较简 ...

  10. 秋色园QBlog技术原理解析:Web之页面处理-内容填充(八)

    文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色 ...

最新文章

  1. ruby tk秒表的应用
  2. java todo error_java基础-异常
  3. java对象序列化java.io.Serializable 接口实践
  4. 2021考研计算机网络,2021考研:计算机网络复习重点
  5. 004. ES6之函数的扩展
  6. 虚拟机Class文件结构笔记
  7. JAVA→封装类Wrapper、字符串String及其方法、==与equals()、正则表达式、StringBuilder与StringBuffer、内嵌类
  8. html 内容不被父级包住,解决:父级元素不能被子元素内容撑开的解决办法,父级元素没有高度的解决办法...
  9. 如何通过Geth、Node.js和UNIX/PHP访问以太坊节点 1
  10. 【手势识别】基于matlab GUI石头剪刀布【含Matlab源码 774期】
  11. 使用AUTODYN超高速撞击仿真
  12. 一文看懂NXP汽车电机控制解决方案(NXP整理)
  13. fortran快速入门
  14. 西威变频器avo下载调试资料_变频器设置面板及参数设置方法
  15. cdrx8如何批量导出jpg_Coreldraw 8插件下载|Coreldraw x8高版本文件(保存为coreldraw 8.0版)最新插件_ - 极光下载站...
  16. 中艺人脸识别考勤机使用方法_中控人脸识别考勤机说明书 人脸识别考勤机的使用方法...
  17. 热力学与统计物理学笔记
  18. MySQL数据库比较工具 - mysqldbcompare
  19. 怎么把回收站里的计算机放到桌面,如何在桌面上添加回收站
  20. php artisan command,artisan command 小技巧

热门文章

  1. 为什么要远离色情信息(转载)
  2. vue时钟+vue旋转特效
  3. SMCJ系列TVS瞬态抑制二极管型号参数表
  4. 用U880做热点 使电脑上网(绑定usb和便携式wlan热点)
  5. 撕逼利器——批判性思维
  6. mysql frm、MYD、MYI数据文件恢复,导入MySQL中
  7. 计算机时钟同步的原理,华为以太网时钟同步原理介绍(二)
  8. 证件照如何弄蓝白渐变色背景
  9. SAP ABAP BAPI_MATERIAL_AVAILABILITY 查询可用库存
  10. NAND Flash一般地址线和数据线共用,对读写速度有一定影响;而NOR Flash闪存数据线和地址线分开,所以相对而言读写速度快一些。