[CTF]Enigma密码表学习。

原文 http://users.telenet.be/d.rijmenants/en/enigmaproc.htm

机翻+校对

每个密钥表包含以下信息:

  • Walzenlage:轮子的选择和顺序
  • Ringstellung:环设置,转子接线的位置,相对于字母环
  • Steckerverbindungen:插板上的插头连接
  • Kenngruppen:分组识别接收者的密钥。

密码表长这样

你可能想知道为什么日期顺序颠倒了。原因很简单。负责分发当天钥匙的官员可以撕下纸张底部的当天日期并将其交给无线电操作员来设置机器。使用后,带有钥匙的纸条被销毁。

The Kenngruppen

为了识别用于特定消息的密钥,操作员必须插入一个称为 Buchstabenkenngruppe(字母识别组)的五个字母组作为消息的第一组。 Buchstabenkenngruppe 由两个随机选择的字母和当天密钥表中四个可能的三个字母 Kenngruppen 之一组成。如果我们从陆军参谋部的第 31 天(上图)开始,我们会看到 Kenngruppen JKM、OGI、NCJ 和 GLP。在这种情况下,正确 Buchstabenkenngruppe 的一些示例是 FDJKM、KVOGI 或 QNNCJ。

消息开头的这五个字母组不应与消息的其余部分一起加密!如果消息被分成几个部分,操作员必须为消息的每个部分插入另一个 Buchstabenkenngruppe。在计算消息标题的字母时,必须包括 Buchstabenkenngruppe 的五个字母。接收操作员通过查看第一组的最后三个字母立即识别出要应用哪个键。

The Message Key

机器的设置通常在一天内有效。对大量消息使用相同的设置会增加数据的统计量以破解特定密钥。因此,每条消息都以不同的 Enigma 转子起始位置发送,由操作员随机选择。这被称为 Spruchschlüssel 或消息密钥。

直到 1940 年,德国军队使用的其他关键表如上图所示,并包含每天的起始位置 (Grundstellung)。操作员随机选择了一个消息密钥,当转子处于每日开始位置时,他对消息密钥进行了两次加密以排除错误。例如,我们假设三元组 GHK 被加密两次,结果是 XMC FZQ(虚构的结果)。接下来,操作员将转子移动到消息密钥 GHK 并加密消息。作为加密消息密钥的两个三元组与消息一起传输。

接收者将他的转子设置在每日开始位置,如密钥表中所述,并将三元组 XMC FZQ 解密回 GHK GHK 消息密钥。接下来,他将消息密钥 GHK 设置为他机器上的起始位置并解密实际消息。然而,这个过程实际上有一个安全漏洞。消息密钥被编码两次,导致第一个和第四个、第二个和第五个以及第三个和第六个字符之间存在关联性。此外,特定日期的许多消息键将具有相同的设置和开始位置。这个安全问题使波兰密码局能够破解战前的 Enigma 消息。然而,德国密码学家意识到了这个安全漏洞。

从 1940 年开始,国防军更改了消息密钥程序以提高安全性。和以前一样,国防军无线电操作员每天根据密钥表设置转子、环设置和插板。对于每条新消息,他现在选择新的随机选择的起始位置或 Grundstellung,例如 WZA,以及随机消息密钥或 Spruchschlüssel,例如 SXT。他将转子移动到随机起始位置 WZA 并加密随机消息密钥 SXT。使用上述 1944 年 10 月 31 日的密钥,得到结果 RSK

然后他将消息密钥 SXT 设置为转子的起始位置并加密实际消息。接下来,他将随机起始位置 WZA、加密的消息密钥 RSK 和 Kenngruppe FDJKM 连同他的消息一起发送。

Example of the typical Wehrmacht message:

1230 = 3tle = 1tl = 180 = WZA RSK =

FDJKM LQWOR MDFVO VVKJZ
ASKHD KXWPY UNHYI OXAVR
MYGTC GFZIB NRTTE OEBER
SOBZA TMNGH etc...

该消息是在 12 点 30 分创建的,由三部分(3 teile)组成,这是第一部分(1 teil),包含 180 个字符(包括 Buchstabenkenngruppe)。 Buchstabenkenngruppe FDJKM 向操作员显示,用于加密消息的密钥设置是 1944 年 10 月 31 日使用 Kenngruppe JKM 的设置。

接收者根据第一个三元组 WZA 设置转子起始位置,并解密第二个三元组 RSK 以获取消息密钥 SXT。接下来,他使用消息密钥 SXT 作为转子开始位置来解密实际消息,跳过第一组 FDJKM(Kenngruppe)。如果消息被分成几个部分,操作员必须为消息的每个部分插入一个新的随机起始位置和加密的消息密钥。

The Kriegsmarine Procedures

Kriegsmarine(德国战时海军)使用 Enigma 密码机发送消息的程序比 Heer 和 Luftwaffe 的程序复杂得多。 Kriegsmarine Enigma 密钥表由两部分组成。

  • Schlüsseltafel M Allgemein - Innere Einstellung(内部设置),包含三个转子及其环设置、the thin beta 或 gamma 转子和反射器,这仅适用于一个月的奇数天。

  • Schlüsseltafel M Allgemein - Aussere Einstellung(外部设置),包含一个月中每一天的plugs 和 Grundstellung(基本开始位置)。

军官还有一个额外的钥匙,一个特殊的 Schlüssel M NIXE 用于船长和 U-boat 指挥部之间的私人通信,其他 U-boat 无法读取消息。

Kriegsmarine TRITON 钥匙和 Sonderschlüssel(特殊钥匙)NIXE 的示例(点击放大)。

Kriegmarine Kenngruppen

Kenngruppen 的 Kriegsmarine 系统与 Heer 和 Luftwaffe Kenngruppen 系统完全不同。除了密钥表,Kriegsmarine 还在他们的主要密码网上使用了 Kenngruppenbuch 来确定消息密钥。不要将此 Kenngruppenbuch 与用于短信号的 Kenngruppenheft(参见 Kurzsignale)混淆,后者具有完全不同的目的。 Kenngruppenbuch 包含以下部分:

  • Zuteilungsliste(一个分配列表)告诉操作员他应该为特定的密码网络使用哪个表。这份清单由两部分组成。第一部分显示了表号,给出了密码网的名称,第二部分显示了不同的密码网,给出了表号。

  • Tauschtafelplan(表指针)告诉操作员给定表的哪一列用于选择所需的三元组。

  • Spalten(列)与 Kenngruppen(指标和加密组)。

后面的看原文吧。机翻也挺好的。。

posted @ 2021-09-15 08:09  wgf4242  阅读(1173)  评论(0编辑  收藏  举报