自制加密机

时间:2022-09-14 06:58:23

有没有想过亲手打造一台数字电子计算机呢?假如要制作的是一台用于信息加密的专用计算机,那么任务并不难完成。在卡尔·萨根的小说《接触》中,小女孩爱丽在读中学时就自己组装了一台用于信息加密的专用计算机。所谓的专用计算机,究其本质就是将输入端输入的符号序列,经某种固定的规律转换后,生成新的符号序列输出而已。一台加密机所要做的事情正是转换符号序列,只不过它将转换规则隐藏了起来。

当前的困难是,随着计算机集成度越来越高,想要找到用于组装加密机的逻辑门、寄存器之类的电子元件,并不是件很容易的事情,在基础教育阶段,许多学校也不太会配齐逻辑电路实验设备。幸好,有许多逻辑电路模拟器可用。本文所介绍的加密机,是在逻辑电路模拟器Logisim中实现的,Logisim是一款开源软件,运行时需要Java运行环境的支持。Logisim使用起来比较简单,限于篇幅本文不做详细介绍。

密钥不变的加密机

在往期文章中,曾介绍过二战时期德国的Lorenz加密机,这种加密机采用电传码的二进制明文和另一个二进制密钥作异或运算(即数字相同得0,不同得1)来生成密码,假如明文是i,对应的电传码为01100,而密钥是01000,则生成的密码将为00100,这里就借用此思路来制作加密机,模拟器的电路其实非常简单。

电路图中的三个矩形都是移位寄存器,它们都和最左面的一个时钟脉冲相连接,左上侧的寄存器中存储着字母i所对应的电传码01100,左下侧是密钥01000,两个寄存器中的数据将通过一个异或门进行运算,图1所示的电路图在搭建完成后,可按下Logisim模拟器工具栏中画着手指的按钮进入到运行状态,并用鼠标点击时钟脉冲触发电路运行,运行后,生成的密码将会存储在最右侧的寄存器中。当然,真正的Lorenz加密机,密钥数据存储在齿轮中,而不是存储在寄存器中,生成的密码是直接打印在纸张上的。

密钥会发生变化的加密机

假如密钥总是不变,那么密码很容易被破解,所以真正的Lorenz加密机中的密钥总是在变化着。虽然这种变化必然是有规律的,但由于变化规律复杂,所以对不知情的人来说,很难在未亲见加密机的结构前找出其中的规律。Lorenz加密机的密钥变化规则比较复杂,这里不详细叙述,但可以借用其最基本的原理,做一台简化的密钥自身也发生变化的加密机,其关键就在于,密钥本身也是一系列运算的结果。

上页图2虽然仅仅增加了两个寄存器和一个异或门,但由于特定的线路连接策略,密钥变化要复杂很多,一方面,密钥是由下方的两个寄存器的数据作异或运算而来;另一方面,下方两个寄存器之间也有着相互控制的关系(其中一个寄存器控制着另一个寄存器是否循环移位)。考虑到寄存器的位数可以增加到很多,仅仅是如此简单的加密装置,若不借助特别的工具,其生成的密码也很难在短时间内被破解,而真正的Lorenz加密机用了11个齿轮来存储生成密钥的数据,其破解难度可想而知。

上一篇:创造进行时…… 下一篇:教育技术还是教育艺术?