- 主题:介绍一种加密算法 (转载)
所以说6楼很给面子啦,至少,它认真的分析了这个算法。
你这个AI,懒,连分析都懒得分析,结论有点武断,它以为ENIGMA2只是一个命名吗?
1940的主要问题在于,转子的配线是固定的,所有的加密机都一样,而且被缴获了,转子无密可保。
图灵折腾半天也就破解了3个字母的密钥,就是3个转子的起始位置。充其量也就是15bit密钥(26个字符4.7比特,猜3次15bit)。
今天,我们不同,enigma_init,它是制造转子的。每个转轮机都是独一无二的配线。所以,起始位置不再重要,真正的密钥是轮子的配线。
它有多少可能的排列?
编码轮是256!,反射论是(n=1,127)连乘积(2n+1),就是3~255奇数积(这是ENIGMA的特征数,它的很多数学性质都来源于此)。
二者乘积是2^2504,就是2504bit。想想我们常用的3DES,AES,256bit就算多的啦。
如果想进行暴力破解,算算工作量。
当然,是否有捷径,10楼给出一些方法,但是已经针对这些方法,进行改进。
最重要的改进是ENIGMA2,它融合了现代密码学原理:
替换和交换,分组密钥就干这两件事。传统的ENIGMA只有替换,没有交换,就是明文和密文字节一一对应。
EMIGMA2,用一个密钥生成两个转轮,t和r。(5008bit啦!)
先用一个进行frenz(有从前往后关联),然后对密文,进行一次反序,在从前往后XOR一遍,实际上是从尾到头,这一步解决了差分分析,两个相似明文差1bit,密文将完全不同,6楼提出了这个问题,这是我的回答。
下一步,切一次牌,切点由密钥决定。虽然只进行了一次交换,与DES不同,DES的16次交换是在固定位置进行,这就是漏洞。这个交换位置是密钥决定的,没有密钥的话,不好猜(6楼的AI所言,混合(洗牌)的不够均匀,实际不需要太均匀)。所以,一次交换就足够了。
最后一步,用另一个转轮ENIGMA1再加密一次。为了快一点。
这就是你现代算力破解不了的关键了。
暴力破解,首要解决的是,破解成功的标志是什么。破解RSA,标准很明确,因数分解,所以量子计算机很有效。
我们这个呢?逆向操作,第一步破解第二密钥,就算找到了算法捷径,什么叫破解成功,找得到标志物吗?
下一步,把切牌还原,在没有密钥的情况下只能试。随便还原一个,再用xor卷一遍。要是第一个字节没还原对,卷的全错。反序一次。找个转轮(在2^2504里找)用frenz_decode()。。。。。10楼说了,即使选择明文,frenz也无法反推转轮。何况你没有明文。
你把我说的这些介绍给AI,看看有什么办法。关键是如何找到破解成功的标志物。
【 在 poocp 的大作中提到: 】
: 还有更不给面子的AI如是说:
: 结论:无论叫 ENIGMA-2、ENIGMA-2025 还是“超级转子机”,只要还是基于 1940 年代那套反射器+轮转置换结构,它在 2025 年的算力面前都不安全,只能做教学演示或 CTF 玩具,不能用于真实保密场景。
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
再补充一点,我们这个东西的主要用途是通信传输加密,其生命期等同一个会话的生命期,这个场景就是真实的保密场景。
当传输一个大数据包时,TCP协议会破包,分成许多小的报片,中途被抓包的话,任何一个片段都不可以单独解密。尤其是ENIGMA2,丢失任何1bit就导致整包全错,这个在6楼里也提过了,算是一个缺点吧,不容错。
实际上经过十几年的使用,也进行过洲际传输,没有发现过错包导致的故障。tcp的可靠性还是足够的。
【 在 poocp 的大作中提到: 】
: 还有更不给面子的AI如是说:
: 结论:无论叫 ENIGMA-2、ENIGMA-2025 还是“超级转子机”,只要还是基于 1940 年代那套反射器+轮转置换结构,它在 2025 年的算力面前都不安全,只能做教学演示或 CTF 玩具,不能用于真实保密场景。
--
FROM 221.221.50.*
传输加密不用分组密钥的主要原因是需要凑整组,传输的字节数与信息的不等,导致需要另外分配buf,包头信息也需要表明有多少填充字节需要剔除。这不太方便。
aes,3des都是分组密钥。
【 在 jimmycmh 的大作中提到: 】
: 为什么不用现成的AES之类的呢?自己发证书
:
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
AES还凑合,DES在传输加密不能用。会话开始,双方协商密钥,一看是弱密钥,下边就没法干了。
本算法没有弱密钥。
【 在 jimmycmh 的大作中提到: 】
: 为什么不用现成的AES之类的呢?自己发证书
:
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
不会掉头发,经历了很长的时间才弄出来的,脑力密度没那么高。
方法来自实践。
在搞传输加密的过程中,分组密钥不好用,以接收为例:
收数据需要分配一次内存(不定长包,包头里的length确定数据长度);
解密再分配一次。因为AES和DES都需要另外的buffer。解压缩还要分配一次。频繁的malloc/free会使内存碎片化,导致服务器不稳定。需要凑整组也是个麻烦。
需要寻找一种序列密钥(密码学界已经放弃对序列密钥的研究),就地加密解密的,减少内存分配次数。
就找到了这个。
发现了它的弱点,用现代密码学理论,进行了改进。
最重要的安全审视,就是公开算法,让更多的人研究批判。
我希望的就是,能有人对这个算法进行具体的分析和批判,而不是抽象否定。认真的分析批判是加强其强度的唯一办法。
把这个成功的实例拿出来,也是想给有同样需求的一个参考。6楼的AI给了一个基本的肯定。
对于短时效对象它是有效的。
【 在 poocp 的大作中提到: 】
: AI当然不只说了这一点,可是我懒得贴,就转了它最后一行结论。
: 我现在不研究加密算法,弄这玩意会猛掉头发。
:
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
回答6楼的,测试3种方法对差分分析的抵抗能力:
同一个转轮做的,第一个都是E0,就是ENIGMA2不是,被洗牌了,连E0都没出现。明文2有,但是并不代表就是在这里切的牌。
【 在 ylh1969 的大作中提到: 】
: 不会掉头发,经历了很长的时间才弄出来的,脑力密度没那么高。
: 方法来自实践。
: 在搞传输加密的过程中,分组密钥不好用,以接收为例:
: ...................
明文1:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
enigma1加密1:
E0 DC F9 7E 2C BC 9C 51 BB EC 4F EE 8A 99 1E DF 4A 6F B1 35 91 4B 96 AC CA 65 07 A9 2B 68 EA 86
frenz_enigma加密1:
E0 15 90 23 40 81 6F E5 BD E3 55 47 9F 45 01 B9 2C 9A BA CA 7D 7C 57 86 E6 74 CA 10 C1 49 3D 52
engima2加密1:
31 F5 F6 D6 9F AC 11 64 D3 DF F9 52 68 20 8B 59 39 33 34 74 C3 51 CF 5A 88 2C 2B EC 8F CD 02 8B
明文2:aaaaaaaaaaaaaaacaaaaaaaaaaaaaaaa (与明文1只差1bit)。
enigma1加密2:
E0 DC F9 7E 2C BC 9C 51 BB EC 4F EE 8A 99 1E DF D6 6F B1 35 91 4B 96 AC CA 65 07 A9 2B 68 EA 86
frenz_enigma加密2:
E0 15 90 23 40 81 6F E5 BD E3 55 47 9F 45 01 B9 F7 BE 08 B6 1F CB 82 44 5D 53 CF 85 4A 15 4D 6E
engima2加密2:
09 52 6F 51 ED 28 18 1A BA 95 8C 6F BD 25 35 C6 A2 E0 A5 39 9D 4D C6 03 6E 29 89 79 49 D4 EF 14
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
看23楼,老ENIGMA(只有抗统计分析的能力)能跟这个比吗?
enigma2不只是改个名字,它的意思是2重加密:
第一次加密。
扰码,具备了抗差分分析的能力。
第二次加密。具备了抗暴力破解的能力。
总结:
传统ENIGMA,抗统计学分析。
ENIGMA1,在前基础上,抗已知明文分析。就是已知部分明文不可能猜出其余部分。当初德国就吃过这个亏,更换密钥打两遍,电文最后打一堆XXXXX,这就被图灵破解了。在ENIGMA1里没这个可能。
frenz:在上述基础上,抗选择明文分析。见10楼。
ENIGMA2:在上述基础上,抗差分分析,抗暴力破解。
【 在 poocp 的大作中提到: 】
: AI当然不只说了这一点,可是我懒得贴,就转了它最后一行结论。
: 我现在不研究加密算法,弄这玩意会猛掉头发。
:
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
密码学课程的确枯燥乏味,但是enigma的故事精彩绝伦。
它是传统密码学的巅峰之作。
学信息论,对信息熵的这个熵字不理解。它本是热力学词,表示物质和能量都在,一点没少,但是变得不可用。用金融学比喻,能量失去了流动性。
密码学就是给信息加熵,信息还在,一点没少,就是变得不可识别了。想识别它,得付出代价。
这个算法,加的熵非常之大,高达2504bit(就是在2^2504种可能中,确定唯一的一个),现代算力,想去掉这个熵,远远不够,大概需要宇宙年龄的多少倍。老enigma只加了15bit的熵,就需要动用国家力量来破解。
6楼和你给的AI结论,一个共同的问题,没有计算这个算法的熵,轻言现代算力能够破解。
【 在 poocp 的大作中提到: 】
: AI当然不只说了这一点,可是我懒得贴,就转了它最后一行结论。
: 我现在不研究加密算法,弄这玩意会猛掉头发。
:
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
宇宙年龄138亿年,合2^58.6秒。58.6bit。
解这个2504bit的密钥需要多少个宇宙年龄?
每秒能解多少次你说了算。
【 在 ylh1969 的大作中提到: 】
: 密码学课程的确枯燥乏味,但是enigma的故事精彩绝伦。
: 它是传统密码学的巅峰之作。
: 学信息论,对信息熵的这个熵字不理解。它本是热力学词,表示物质和能量都在,一点没少,但是变得不可用。用金融学比喻,能量失去了流动性。
: ...................
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
t1是编码轮,由0x00~0xff,256的全排列,256!种。
t3是反射轮,规则是,如t3[n]=k,则t3[k]=n;(破解一半就行)
t3[0]有255种可能,不能是自己。
t3[1]有253种。
。。。。。。。
一共有255×253×251××××3,
即,3~255所有奇数之积,这个是enigma数。
总的可能性是,256!×enigma数,
就是2^2504种。
系统中存在enigma数那么多种的换算表。
一个密钥制造了转轮,就是从这么多种表里选出来63+1k个(行)表。
加密就是查这些表,每加密一个字节换一个表。
搞清楚整个表(256列×63+1k行),如10楼,就破解了一半,剩下的问题是,哪个字节查了哪张表。这并不轻松。
所有的AI,都没能进行这种分析。所以,结论不靠谱。
【 在 ylh1969 的大作中提到: 】
: 宇宙年龄138亿年,合2^58.6秒。58.6bit。
: 解这个2504bit的密钥需要多少个宇宙年龄?
: 每秒能解多少次你说了算。
: ...................
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*