五千年(敝帚自珍)

主题:【原创】密码传奇(三):12、纯技术篇之活拆了ENIGMA (3) -- 1001n

共:💬32 🌺51
全看树展主题 · 分页首页 上页
/ 3
下页 末页
家园 1001n兄这种严谨的精神真是太值得学习和推广了。
家园 脑子笨,有个问题没想明白

老兄的原文关于“双重步进”的分析:

************************************

在此基础上,我们再假设当前转轮组的初始位置为A、A、A。那么,现在转轮组的情况就是

━━━━━━━━━━━━━━━━━━━━━━━━━━

1(凹口E) 2(凹口F) 3(凹口G)

初始位置 A A A

在纸面上模拟一下它的加密过程,就是这样的——其中每一行,都表示操作员一次新输入后的状态:

A A B

A A C

A A D

第一种情况 A A E

(单纯进位) A A F

A A G ←注意,3已经到了进位点

A B H ←进位完成,2步进一格;3的步进,则是因为新输入

A B I

…… 继续加密 …… 继续加密 ……

A E F

A E G ←注意,3再次达到进位点

第二种情况 A F H ←3对2的进位完成;注意,2也达到了进位点

(双重步进) B G I ←1进位的同时,再次带动2步进

B G J

…… 继续加密 …… 继续加密 ……

D E E

D E F

第三种情况 D E G ←3达到进位点,即将进位

(单纯进位) D F H ←2步进,本身也达到进位点

E G I ←1步进,并反馈性地使2双重步进;1也到达进位点

E G J ←1并未进位,特殊情况结束

E G K

E G L

━━━━━━━━━━━━━━━━━━━━━━━━━━

************************************

第一种情况很好理解,我所困惑的是第二种和第三种情况。

以第二种情况为例子来谈:A,E,G变为A,F,H好说,是因为中轮受到右轮进位点(G)到下一个位置的推动。所以从E变为F。

但是为什么会从A,F,H变为B,G,I呢?是,中轮的步进点为F,但是当右轮从H变为I(由于操作员的手动)时,中轮不应该转动吧?(因为H并不是右轮的进位点,也就是说当右轮H到I的时候,中轮不应该运动)

而中轮不运动,左轮又怎么会有A变成B呢?

望兄启愚。

家园 先赞一个,老兄观察的够细:)试答如下

不是老兄“脑子笨”,只怪1001n自己没说清楚。下面用一个比较好理解的方式来解说一下,希望能解决老兄的困惑:)

“双重步进”的关键就是:

中轮达到凹口时,它的这个位置状态并不“稳定”;也就是说,在这个位置上,中轮只能“停留”一次。再有输入的时候,无论右轮的步进是否可以产生对中轮的进位,中轮自己都将步进一次——所以,右轮从H变成I,虽然并没有构成对中轮的进位推动,但是中轮自己仍然是要步进的。

在中轮步进的同时,自己也越过了凹口;这就意味着它对左轮也产生了进位推动,因此左轮也要步进。而在这个时候,中轮步进、左轮步进这两个动作是同时发生的,因此,这一次看起来似乎是由左轮“拉”着中轮,同步步进了。

总的来说,中轮在这个特殊位置前后时,连续两次的输入就会导致它的连续两次步进,而不是次次都需要右轮的进位推动;所以,这个“双重步进”才会是一个很有特色的机制。

此外,还得感谢老兄的是:正因为老兄提出了这个问题,让我又去仔细查对了一遍上面的原文。最后发现,我的解释不够严密:如果抛开具体结果,只从字面上看的话,甚至会理解成中轮会连续三次步进。

究其原因,是因为在分解动作的时候,有时候是以一个输入导致的所有动作为一步,有时候是以一个输入导致的所有动作之一为一步。这样确实非常容易混淆,并导致误会。

现已将原文重新修正过。也因此,非常感谢老兄提出这个问题!

最后,想到老兄能够认真阅读鄙文并思考,进而感到“吾道不孤”,我还是很高兴的——再鲜花一朵,感谢老兄!

家园 二战时日本密码系统

紫密是日本的最高级外交码,使用转轮密码机,是日本人参考enigma自己搞的。美国人最早40年夏天就破了紫密,在珍珠港之前曾破译过让日本大使馆销毁码本和紫色密码机的密电指令。

日本的海军码是另一个体系,使用码本和配套加数本的方法,不用密码机,手工操作。jn25和其前身红码都是这样。码本把电文字转成数字(中国民用电报也是这样的),加数本就是一页一页的随机数。使用时电报员在报头先发一个数字,就是加数本的页码,然后对第一个原电文字先找对应的电码,再把这个对应的码加上加数本那页上的第一个数字,然后如此处理全电文。解码的时候收报方有同样两本码本,把收到的数字减去对应加数,再查电码本就得出了原文。加数本经常更换。对付这种密码体系,只有一个字一个字的去构建密文和原文对应表,破译一般也是一个字一个字进行的,所以大多数电文都是部分解出,不会象密码机一旦复制出机器破译出当日加密码全部密文都会被破。所以才会有那个人所共知的af故事,针对未破的关键字进行反情报工作。


本帖一共被 1 帖 引用 (帖内工具实现)
家园 很清楚,这下明白了。

兄台呕心沥血写出这个长篇,咱本来就是门外汉,所以就想借此机会多了解一些密码领域的东西,技术性这么强的文章,不认真看看哪成?

说实话,即使这样,我也没有把每个细节都搞清楚。惭愧。

接着看下一篇去了。

家园 【从实招来】2号轮双重步进怎么实现的

你用石英钟来举例,害我问了个愚蠢之极问题。

你得考虑重新写举例那一段。用秒针分针来比方有点不合适。

2号轮可以是任何一个轮安装在2号位。那些个轮子到底有什么机关设计?

家园 说实话,这个问题我也没搞清楚

我也是觉得从D,F,H到E,G,I很自然(H到I不是因为操作员的手动吗?),没高明白一千零一夜兄为什么说正常情况应该是D,F,H到E,G,H。

只是之前已经问了一个问题,怕问多了显得自己太笨。

家园 唉,我刚问完,就发现我的推导有问题……

1001n的描述一点问题都没有。

按照我的想法来推,2号轮处于凹口F时,2号轮不会动啦。3号轮必须再次旋转到G并越过G,才能驱动2号轮越过F,此时2号轮才能驱动1号轮旋转一格。而这,恰恰就是“D F H----E G H”

正因为我们都看到了2号轮能够驱动1号轮,忘记了2号轮的双重步进。所以,都能“自然而然”的理解D F H----E G I

我写一遍看看哈,按照一切都是3号轮驱动的话

D E G

D F H

D F I

D F J

…………

D F A

…………

D F G

E G H

嘿嘿,这个中间,还有这么多的变化。不是一步就过来了。

前篇已经删除啦,问得太蠢,不好意思留下来。

关键词(Tags): #1
家园 这个理解不对吧?

一千零一夜已经说了中轮的步进点F是个不稳定位置,不可能连续两次呆在同一个位置。

而老兄的推导,这个F点出现了26次。

有矛盾啊。

家园 是的。但正因为这个错

才能解释为什么“D F H----E G H”是正常情况。

要不还能怎么解释呢?

不过,你说的也对阿。他的确早都说过凹口点只能呆住一次。

完啦。再次晕倒。估计醒不过来啦

双重步进……,害死人啰

要不,你解释一下为什么“D F H----E G H”是正常情况

家园 啊呀,老兄不明白的地方,说出来咱们一起探讨就是了啊

别说什么笨不笨的,要说笨,估计没有比100n更笨的了——几行公式就能描述的东西,活活搞出几万字来叙述,不是笨是什么?

再说,老兄不明白,也不是因为看到ENIGMA琢磨不通,而是因为看了1001n的文字而琢磨不通——这说明,问题不是在老兄,而是在咱自己身上啊。。

可别再这么说了。。咱们探讨一下,老兄看看是不是这个理儿:

我也是觉得从D,F,H到E,G,I很自然(H到I不是因为操作员的手动吗?),没高明白一千零一夜兄为什么说正常情况应该是D,F,H到E,G,H。

涉及这个问题的原文是这样的:

再仔细观察一下,我们会发现一个现象:

D E G

D F H

E G I

E G J

其中,中轮在F停留了一次;这就意味着,下一步它将变成G;而在正常情况下,被右轮进位所推动的G,首次对应的应该是右轮进位点后的一个字母;在本例中,中轮的G,对应的应该就是右轮进位点G后的一个字母,即H。

如此说来,D、F、H的后一步,应该就是E、G、H。

可在这个实例中呢?却是E、G、I;而那个该死的H,又跑哪里去了呢?

我的意思是:

右轮的进位点是G,因此,当右轮越过进位点到达下一个字母H时,中轮将发生进位。这就是说,按一般道理来看,在中轮进位完毕的那个瞬间,右轮的字母应该都是H。

也就是说,中轮进位完毕的那个瞬间,无论中轮进位到达的字母是什么,这时候的右轮的字母都应该是H。

如此分析的话,如果左轮和中轮因为进位,初次出现E-G组合的时候,右轮的字母也应该是H,所以,才会说“应该是E-G-H”。。。

可是,问题就出在:这个E-G组合并不是由于正常的进位/步进而来的。

由于它是由D-F组合仅经一步便“跳跃”而来的,所以,“短命”的D-F组合并未一个个对应上右轮的H、I、J、K、L、M、N……Z、A、B、C……E、F、G这完整的一圈26个字母,所以,才会出现E-G-I而非E-G-H的现象。

也顺便说一句,从这个意义上讲,E-G-H的对应关系是不存在的——而这,正是双重步进与一般步进-进位规律不同的地方。

------------------------------------------

文中让二位发晕的地方,其实正是1001n行文过于简略的地方。并且,为了突出双重步进的特殊性,在先强调了“中轮的缺口位不稳定”,会导致双重步进之后;又反过来再辅以单纯进位会出现的情况,来论证双重步进的特殊。

本来,右轮的顺序很清楚,F、G、H、I、J……,按顺序,D-F-H后当然应该是E-G-I;而现在经过正反这么一对比后,就确实不容易理解文中说的“D-F-H的后一步,应该是E-G-H”的意思了。。

本意是把问题从正反两面说生动一点,结果没交代清楚,让二位头大了,惭愧ing。。

唉,都是咱不好。主要是研究这些个转轮的时候,实际上想了很多的情况;后来写的时候,不注意就都多少带出来了——问题是,我自己是明白的,可这么一写,大伙很容易晕过去——是我的不好,以后定当注意。

不知道老兄满意这个解释么?

家园 呵呵,老兄一针见血啊

你用石英钟来举例,害我问了个愚蠢之极问题。

你得考虑重新写举例那一段。用秒针分针来比方有点不合适。

的确如此。其实,更适合举例的,应该是汽车上的里程表,或者某种老式的机械式电表。这样,进位规律就比较容易理解——不过,当时写的时候,觉得未必所有人都对汽车里程表有深刻的感性认识(比如没车的我,就对它没什么感觉),与此同时,肯定也有一些兄弟未必见识过机械式电表。。

而它又是26进制的,这个古怪进制,用一般的十进制的数字也没法例举。。

愁眉苦脸地:这咋办好呢?就是想举个通俗到特别通、特别俗的例子啊……

才会想到石英钟;当时也觉得不太合适,所以,只是文中一提,主要用意是引出“进位点”这个概念。君不见,后面再没石英钟什么事了,嘿嘿。。

而就是因为石英钟的例子容易引起误会,才专门又写了一段如果是石英钟又会如何——那个从00分跳到01分的地方,又加粗又设置指向箭头说明,就是怕兄弟们没注意,给理解错了啊……

这个地方我也头疼。老兄不妨提个建议,用什么做类比,才能又直观形象地说明步进、进位,同时又不会因为双重步进而把大家搞糊涂?

这例子还得特通俗。。。我是真想不出来,老兄帮忙,救命!

2号轮可以是任何一个轮安装在2号位。那些个轮子到底有什么机关设计?

正是这样。轮子的设计,前文已经提到了,在步进时起作用的主要是凹口圈和掣爪。由于掣爪的机制才是真正的麻烦和复杂,本文就把它忽略过去了。

实际上,转轮组的步进也好,进位也好,并不是转轮本身就有这功能,而完全是幕后的掣爪直接推动的。在【活拆了ENIGMA(4)】中,有机槽内的样子;其中,就有掣爪,老兄不妨看看。

至于掣爪机制又是怎么回事——呵呵,饶命饶命,老兄不是真想知道吧?其实所有能步进和进位的机械装置,比如钟表和里程表、电表之类,都有类似掣爪和棘轮的机制,ENIGMA内的,只不过是个变形罢了。

双重步进,是ENIGMA的一个特殊机制。只是,如果非要具体分析它在机械上是怎么实现的……这个,1001n就只有逃命了,呵呵……

家园 哈哈,我也是一笔糊涂帐,回答不了啊

我觉得D,F,H到E,G,I是容易理解的,而D,F,H到E,G,H就想不通了。

等着一千零一夜的解答吧。

家园 对不起,还是没明白

为什么我会觉得D,F,H到E,G,I很正常呢?

从D,E,G到D,F,H不存在问题,因为G是右轮的进位点,所以右轮G到H,中轮就会被推动从E到F。

下一步,由于F的位置是不稳定的,所以在受到右轮H到I的输入后(记得你说这个输入是操作员手动控制而不受其他轮的影响的),虽然H不是右轮的步进点,中轮也从F运动到了G,同时,因为F是中轮的步进点,左轮也从D运动到E。

兄看我的这段话有疏漏的地方吗?

如此分析的话,如果左轮和中轮因为进位,初次出现E-G组合的时候,右轮的字母也应该是H,所以,才会说“应该是E-G-H”。。。

我不明白的是,E-G组合的出现,不是由于右轮H到I的输入引起的吗?

头有点大了。。。

家园 老兄头别大,呵呵

如前所述,这是“两个标准”导致的问题。

第一个,中轮步进后,对应的第一个右轮字母都应该是H;所以,E-G组合出现时,首先对应的,应该是H,即E-G-H;

第二个,正常使用时,操作员每输入一次,右轮步进一次;只有输入,才能导致步进和进位,以及双重进位;因此,E-G只能对应I,即E-G-I。

这是从两个标准分析出来的结果,并不是说右轮在D-F-H后,还会在H上停留一位,变成E-G-H。

“E-G-H”一说,是按第一个标准分析出来的结果,并不是实际发生的;不会发生的原因,正是因为它和双重步进的原理相冲突。

不知道这么说,老兄是不是明白一些了?

全看树展主题 · 分页首页 上页
/ 3
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河