密码学基本原理和发展——近代密码学

article/2025/10/2 8:13:39

目录

1 密码机通信模型

2 Enigma密码机构造

3 Enigma密码机加解密过程

3.1 加密过程

3.2 解密过程

4 Enigma密码机的安全性

5 Enigma密码机破解

5.1 波兰雷耶夫斯基破解

5.2 图灵破解



       近代密码一般指20世纪初~20世纪70年代期间的密码技术。20世纪初电报的出现第一次使远距离快速传递信息成为可能, 它实现了远距离通讯的即时传输,但是也带来了新的安全问题,为保证每条信息的安全,需要给每条信息加密,随着一战的爆发,也进一步促进了密码技术的发展。近代密码利用电子和计算机技术设计出更加复杂的密码体系,虽然技术上有了很大进步,但并未形成理论体系,该阶段基本加密原理仍然和古典加密原理类似,仍然是替代及置换的基本原理,但是因为应用到了机电技术,近代密码体制的替代/置换方式从古典密码的单表代换转变为多表代换,这使得人工破译密码的成本变得极高。

       这里介绍以恩尼格玛(enigma)密码机为代表的转轮密码机Enigma密码机1918年由德国人亚瑟·谢尔比乌斯发明,随后被应用于军事,最终被英国人破译,Enigma密码机的发明是密码学发展史上的一次飞跃,密码学就此进入机械密码时代。

1 密码机通信模型

图1 密码机通信模型

       发送者和接收者各自拥有一台enigma。发送者用enigma将明文加密,将生成的密文通过无线电发送给接收者。接收者将接收到的密文用自己的enigma解密,得到明文。发送者和接收者会事先收到一份叫国防军密码本的册子,它记录了发送者和接收者所使用的每日密钥,发送者和接收者需要分别按册子的指示来设置enigma。

2 Enigma密码机构造

       Enigma密码机是一个装满复杂精密元件的盒子,主要包括键盘(26个)、转轮(3个)、显示灯(标注了同样字母的26个小灯)和接线板,如下图所示。

图2 Enigma密码机外观

       本章节开始我们讲到了轮转密码机的加密原理其实也是置换,即通过一定的置换方式将明文置换为密文,下图显示了当按下键盘的A键时,使灯盘D亮的电流示意图,即将A置换为D的过程。

图3 Enigma电流流动线路图

       电流从电池(1)通过双向键盘开关(2)进入插板(3)。接下来,它穿过三个/四个已安装的转子(5)的布线,并进入反射器(6)。反射器通过完全不同的路径将电流返回,通过转子(5)和进入轮(4),流经连接有电缆(8)的插头“ S”(7)和插头“ D”,再通过另一个双向开关(9)点亮相应的灯。

       如果转子的作用仅仅是把一个字母简单的换成另一个字母,那么在一千多年前就能通过字频法破译,Enigma密码机的巧妙之处在于其核心部件——转子,其构造如下图所示。

图5 转子构造

        通过键盘键入一个字母时,第一个转子会转动1格,所以当连续键入26个字母时,第一个转子正好转动26格(即1圈),此时第二个转子转动1格,连续键入26*26个字母时,第一个转子转动26圈,第二个转子转动1圈,连续键入26*26*26个字母时,第一个转子转动26*26圈,第二个转子转动26圈,第三个转子转动1圈。这种机制利用不同齿轮的传动比原理,类似于秒针、分针和时针的转动。通过第一章维吉尼亚密码的学习我们知道这种三转子的组合密钥长度为26*26*26,理论上只要信息长度低于密钥长度时,便无法破解。

       接下来讲下为什么输入信号A,经过转子和反射器后会输出信号H,每个转子两侧都有26个引脚和26个触点,上一个转子的触电与下一个转子的引脚与下一个转子的触点连接,如下图所示。

图6 转子内部结构拆分

              

       如果输入信号A,转子内部电流信号流转如下图所示。 

图7 第一次输入A信号流转图

       再次输入信号A时,Right Rotor转动一格,剩下的两个转子不动,其内部电流信号流转如下图所示。

图8 第二次输入A信号流转图

       Enigma最左侧的设备是一个“反射器”, 它将最后一个转子的其中两个触点连接起来,并将电流沿一个不同的路线导回。这就使加密过程与解密过程变得一致,因此,使用两台配置相同的机器,一台可以用于加密信息,另一台用于解密信息,而无需使用庞大的机制在加密和解密模式之间进行切换。但是,反射器也使恩尼格玛具有了如下性质:加密后得到的字母与输入的字母永远不会相同。这在概念上和密码学上都是一个严重的错误,这个错误最终被盟军解码人员利用。

       B站上有enigma密码机演示视频,感兴趣的可以b站上搜索观看,能够更直观的了解enigma密码机的工作原理。

3 Enigma密码机加解密过程

3.1 加密过程

       发信人首先按照约定好的规则插好接线板并设置好转子初始位置,也就是设置好enigma密码机密钥。接着依次通过键盘键入明文,并把灯泡亮的字母记录下来便得到了密文,最后将密文发通过电报方式送出去。

3.2 解密过程

       当收信人接收到密文后,使用相同的enigma密码机并设置好发信人相同密钥。接着依次通过键盘键入密文,并把灯泡亮的字母记录下来便得到了明文。

4 Enigma密码机的安全性

       Enigma密码机的本质是一种多表替换,我们之前学习过的凯撒密码和维吉尼亚密码也是替换密码,但后两种密码我们知道会有字母频率的漏洞,主要因为他们的加密都是使用的同一张密码表,而Enigma密码机每加密一个字母,就会转动一下,相当于换了一张密码表,基本可以做到加密一个字母就更换一次密码表并且不重复,所以无法通过高阶字频分析来破解Enigma密码机,只能通过枚举来破解了。我们可以通过数学概率的计算方法来计算enigma具有的所有字母映射的可能性,从而评估其安全性。

       若密码机由三个转子组成,则三个转子的初始位置,一共有 P1= 26*26*26=17576种组合;

三个转子不同相对位置有P2=6种组合;

       ​插线板由26个孔位,最多可以插13根线,以插10根线来举例计算,那么共有

       所以总的密钥空间P=P1 *P2 *P3≈1.5*1019,密钥一般每次或者每日根据密码本来更新,信息发送方每使用Enigma密码机加密一条信息时,都要按照密钥来初始化密码机,同理信息接收方每次也要使用相同的密钥来解密信息。

5 Enigma密码机破解

       Enigma加密机可以称得上是古典密码阶段的巅峰,由于其巨大的密钥空间,使用完全依靠人工枚举破解几乎不可能。虽然enigma加密算法非常强大,但是其本质也是一种较为复杂的密码替换,与凯撒密码及维吉尼亚密码本质上没有差异,其安全性是依赖于巨大的密钥空间,与Enigma密码机同时期的计算机械破解Enigma密码的难度极高。

5.1 波兰雷耶夫斯基破解

       Enigma密码机早期被认为是无法破解的存在,英法等国一开始便放弃了enigma密码机的破解,而波兰由于地理位置处于德国和苏联之间,与两国关系都不好,且德国与苏联也互相虎视眈眈,处于中间的波兰具有非常严重的危机感,波兰当局表示enigma密码机无论如何都得破解,在语言学家表示对enigma密码机无从下手时,波兰当局请到了数学家参与enigma密码机的破解工作,数学家雷耶夫斯基、罗佐基和佐加尔斯基就承担起早期enigma密码机破译工作。

       早期德国人为了增加密码机的安全性,设置了双重加密,即当日密钥+信息密钥组合形成最终密钥,如当日密钥为ABC,信息发送方先将转子拨到ABC,然后随机想三个字母(假设为DEF,DEF被称为信息密钥),加密DEF后得到密文(假设为MCL),接下来将转子拨到DEF,开始正式写信,具体过程如下图所示。

图9 双重加密过程

       所以真正加密信件内容的其实是信息密钥(DEF),所以收件人需要知道信息密钥(EDF)后才能解密。问题是信息密钥是发送者每天拍脑袋想出来的,接收者是如何知道信息密钥的呢?这就需要双方约定好将信息密钥加密后的密文MCL写在每封信的开头。由于enigma是对称加密的,所以接收者只需用每日密钥(ABC)将信件开头的MCL解密便得到发送者拍脑袋想出来的信息密钥(DEF),接下来用信息密钥进行解密即可,具体过程如下图所示。

图10 双重解密过程

       如此一来,每日密钥虽然只有一个,但是信息密钥每次确是不一样的,所以即使一天发送100封信,就对应100个信息密钥,这大大增加了人工破译难度。

       但是德国人有个习惯,就是将重要的事情说两遍,所以每封密信的开头6个字母中,是由2个信息密钥组成的,如下所示。

       明文的D被加密为M/H、E被加密为C/A、F被加密为L/Q,也就是说密文的第1个和第3个字母是由同一个明文字母加密得到的、第2个和第4个字母是由同一个明文字母加密得到的、第3个和第6个字母是由同一个明文字母加密得到的,雷耶夫斯基正是根据这一线索发现了Enigma置换群方程,设计出了用来收集数据的“炸弹机”(Bomba),这也是人类首次将严格的数学化方法应用到密码破译领域,炸弹机可以在数个小时内破解出密钥,具体的分析步骤本文不再赘述,感兴趣的可以关注b站UP主“Ele实验室”,讲解和动画演示都非常深刻且易理解。

5.2 图灵破解

       由于雷耶夫斯基利用社会工程学的方法,破解了enigma密码机,但是这种方法也十分脆弱,一旦德国人修补上这个漏洞或者升级密码机,雷耶夫斯基的破解方法就难以适用。在绝对的军事实力面前,德国闪击波兰,一个月后波兰沦陷,雷耶夫斯基等“波兰密码三杰”也被迫逃亡,战后雷耶夫斯基几经流转后回到波兰一所中学任教,鲁日茨基和佐加尔斯基则在逃亡途中不幸遇难,令人唏嘘。1980年雷耶夫斯基在华沙去世,安葬在波兰的Powazki公墓,2000年,波兰政府向“波兰密码三杰” 追授波兰最高勋章。

       波兰沦陷后,破解enigma密码机的任务交到了英国人手里,在德国人改掉重要事情说两遍并且使用多五转子enigma加密机后,雷耶夫斯基的破解方法就变得极其被动,图灵受雷耶夫斯基的启发,图灵破解Enigma密码破译思想是利用Enigma密码机自反特性,若某一位从来没有该字母,那么明文该位困可能就是该字母,再结合德军发送报文的特点猜测报文首句明文(如早上6.05分发送天气预报,猜测首句明文有wetter,也被称为已知明文攻击),由此构造明文密文对应关系和字母循环圈,图灵团队甚至造出一台bomb machine来专门破解恩尼格码密码,bomb machine如下图所示。bomb machine从原理上不受限德国人重要事情说两遍的限制,且得到丘吉尔的大力支持,英国提供给图灵的人力和物力资源都不是波兰提供给雷耶夫斯基的资源能比的。图灵设计制造的bomb machine原理这里也不再赘述,感兴趣的可以看b站Ele实验室。

图11 图灵炸弹机

       Enigma曾被誉为不可破解的密码,尽管现在看来Enigma密码机的破译方法很多,但其光辉不可磨灭,它所代表的着加密的理念对于加密算法有着深远的影响。

       从公元前404年到20世纪70年代,从滚筒密码到enigma密码机,从单表替换到多表替换,从凯撒到维吉尼亚,再到雷耶夫斯基和图灵。人类使用密码的历史几乎与使用文字的时间一样长,人类已在加密与解密之间相互纠缠了数千年,未来亦是如此,基于共钥密码学的现代加密技术正熠熠生辉,而以区块链和量子加密等加密技术也悄然来临。


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

相关文章

ctf古典密码从0到1

本文共计6357个词 阅读预计花费8分钟 1.古典密码和现代密码的区别: 2.代换密码 a)单表代换密码 i.字符或数学型 1.凯撒密码 2.仿射密码 3.四方密码 4.培根密码 ii.图表 1.标准银河字母 2.圣堂武士密码 3.猪圈密码 4.当铺密码 5.跳舞的小人密码 b)多表代换密码 i.希尔…

Head First C# 中文版 图文皆译 第六章 继承 page241

蜂后需要你的帮助!用你学过的关于类和对象的知识来构建一个蜂窝管理系统来帮助蜂后管理工蜂。 ①创建窗体 窗体很简单--功能都在Queen和Worker类中完成。窗体有一个私有的Queen字段,还有两个按钮分别调用AssignWork()和WorkTheNex…

【密码学】一、概述

概述 1、密码学的发展历史1.1 古代密码时代1.2 机械密码时代1.3 信息密码时代1.4 现代密码时代 2、密码学的基本概念3、密码学的基本属性4、密码体制分类4.1 对称密码体制4.2 非对称加密体制 5、密码分析 1、密码学的发展历史 起因:保密通信和身份认证问题 根据时间…

密码学浅尝辄止

总结不易,如果对你有帮助,请点赞关注支持一下 微信搜索程序dunk,关注公众号,获取博客源码、数据结构与算法笔记、面试笔试题 本文加密算法源码 文章目录 密码学浅尝辄止密码学的基本概念古典密码学替换法移位法恺撒加密中国古代加…

密码学前提知识了解(一)

目录 一、密码学基础知识 1.密码的定义 2.密码算法 3.对称密码算法 4.非对称密码算法 5.摘要密码算法 二、历史上的密码 1.凯撒密码 2.简单替换密码 三、对称密码 1.ASCII 2.异或 ​编辑 四、试题 一、密码学基础知识 1.密码的定义 密码是一种用来混…

【密码学】二、古典密码

古典密码 1.置换密码1.1列置换密码1.2周期置换密码 2.代换密码2.1单表代换密码2.1.1凯撒密码2.1.2仿射密码 2.2多表代换密码2.2.1维吉尼亚密码2.2.2普莱费尔密码 3.轮转密码3.1恩尼格玛密码机Enigma3.1.1Enigma加密3.1.1Enigma解密 4.古典密码的分类5.古典密码的统计分析5.1单表…

格密码与最短向量上界

目录 前言 一. BLICHFELD理论 二. 闵可夫斯基凸体定理 三. n维球体体积结论 四. 闵可夫斯基第一定理 五. 闵可夫斯基第二定理 结论 前言 本节主要讨论闵可夫斯基提出的关于连续最小值的上界问题。为了简化分析过程,仅讨论满秩的格,将结果类推到非…

一个苹果成就了牛顿,一个苹果杀死了图灵。

今天不发技术文章了。 假期看了一部电影《模仿游戏》,讲的是人工智能之父图灵的故事。 说起图灵,可能你知道他是计算机科学之父、人工智能之父。计算机领域最负盛名的奖项「图灵奖」都用他的名字命名。 但你可能不知道,二战期间,他…

使用 python 实现恩尼格码的加密

使用 python 实现恩尼格码的加密 又是摸鱼的一天查阅资料,尝试理解恩尼格码字符的映射混淆的次数反射板和转接线的设置描述转子转动的规律完整代码的实现 实现过程的复盘 又是摸鱼的一天 今天在问答胡混的时候,看到一个提问,关于恩尼格码的 …

密码分析学-Enigma机破解

密码分析学 Enigma机破解 目录 作业要求摘要正文一:Enigma机加密1.1 背景1.2 加密原理1.3 安全性分析1.4 加密算法实现 二:Enigma解密2.1 历史上的解密2.2 Enigma机破解原理2.2.1 寻找明密文对关系 -- Ciber2.2.2 通过环路屏蔽接线板2.2.3 还原接线板 2…

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

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

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

文章目录 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…