陈玉玲
分组密码AI通用破译探讨 精选
2025-2-25 21:30
阅读:4886

分组密码AI通用破译探讨

可否找到某种破译手段,它能同时破译包括AESDESIDEA3DESCASTBlowfish‌Camellia等所有现在和未来的分组密码呢[1]?在大模型以前根本不可能!但随着以GPT为代表的AI大模型的突飞猛进,分组密码的通用破译将变得越来越有希望了。下面就是我们的一些初步思考,欢迎同行批评指正。

(一)分组密码的误区

分组密码是学术界研究最多的密码,也是民用领域的主流密码。但关于分组密码的加密和解密,过去一直存在多个较隐蔽的误区,这些误区从根本上否定了通用密码破译法的存在性。一旦躲过这些误区后,若再结合GPT大模型训练的最新成果,就很有可能在通用密码破译方面取得重大进展。

我们必须认识到:密文也是一种语言,一种非常接近人类自然语言的语言,一种时间序列语言。具体说来,作为自然语言的明文,在被顺序切割成分组块X1,X2,…,Xn后,若被相应地加密成密文分组块C1,C2,…,Cn,那么,相应的密文也是一段自然语言,其中的每个密文分组Ci便可看成是某种特殊自然语言的,或某种特殊的时间序列语言的。为了方便描述,本文将这类密文语言称为Y-语言。形象地说,分组密码的加密就是从自然语言到Y-语言的某种翻译,反过来,分组密码的破译或解密就是从Y-语言到自然语言的翻译。于是,密码的加解密过程就变成了语言的翻译问题。既然GPT大模型能同时翻译以中英德法等自然语言和电脑C语言等机器语言为代表的所有时间序列语言,难道就能否认GPT能翻译分组密码这样的Y-语言吗?

若从语言翻译角度来重新审视学术界对分组密码的研究,不难发现:我们过去确实陷入了一些误区中,这就使得我们只能针对特定的分组密码去研究相应的破译方法,毕竟DESAES等不同密码的加密解密算法实在大不相同。

具体说来,破坏通用破译可能性的误区主要有三:

误区1,解密必须是加密的逆变换。

既然只是语言翻译,当然没必要再去追求明文和密文之间的一一对应。实际上,若将原来的明文你好!破译成了你吃了吗?,这当然不能算错。只要破译结果与原来的明文表达了相同意思,破译结果就算正确,而每一种意思本来就有若干种表达方式。其实,任何两种语言之间压根儿就没有绝对标准的翻译。比如,四川话中的龟儿子就很难翻译成普通话,贵州方言中的鬼火撮也没有对应的川普。

当然,抛弃了逆变换破译思路后的代价也很大。比如,密码学曾经的数学美将不复存在,以往破译密码的所有数学手段都将失效,这在GPT大模型出来之前是根本不敢想象的。

误区二,密文分组之间彼此是无关的。

过去既然把解密算法认定为加密算法的逆变换,那么,不同密文分组之间的相关性就无助于密码破译,也就可以认为不同密文分组之间干脆互不相关。但是,时间序列语言的最大特点之一便是前后文的彼此相关性!实际上,这种相关性不但有助于语言的翻译,还有助于对翻译结果进行拾遗补缺。哪怕是一段文中出现了几个错别字或遗漏,有时也能借助前后文的关联来加以纠正。

若从语言翻译角度躲过误区二后,分组密码通用破译的可行性又会大增。实际上,密文分组之间的关联性将在随后Y-语言翻译GPT模型的训练过程中扮演关键角色,毕竟我们需要的是整个Y-语言的翻译,而不只是其中某部分的翻译。

误区三,明文密文分组与等长的比特分组是一回事

从耗费加密和解密资源的角度看,这是学术界曾经陷入的最大误区。实际上,虽然每个N比特长的明文和密文分组都以01分组的形式出现,但在所有2N01分组中,真正具有语言含义的分组(以下称为有效分组)所占的比例(记为δ)小之又小,小到几乎为0(当然,δ的精确值无法计算)。比如,并非每个16比特长的01串都对应一个汉字,也并非任意N/16个汉字排成串后都是一句人话。即使是几句人话顺序排列后,也不一定能得到有含义的连贯文章等。

从加密角度看,虽然误区三不会增加实操加密工作量,但在密码算法的设计阶段,设计者将被误区三强行逼入优美的数学公式中。这就限制了加密思路的扩展,因此国际上已开始用GAN思路来重新考虑加密问题[2]

从破译角度看,破译者本该只是考虑有效密文分组的破译问题。换句话说,跳出误区三后,破译者的工作量将大幅度缩减为原来工作量的δ倍,至少理论上看应是这样的。但是,即使面临这极小比例(δ倍)的有效密文分组,过去的破译法也根本找不到适用于所有分组密码的通用破译法。幸好,AI带来了希望。

(二)基于选择明文攻击的通用破译思路

任何一本现代密码学教材都告诉我们:判断某个分组密码算法是否安全的核心指标,就是看看它能否经受得起选择明文攻击。即,对任何一个可能的明文分组,破译者都有权知道与该明文分组对应的密文分组。形象地说,即使破译者偷走了某用户的加密机,若他仍然不能完成后续的破译任务,那么相应的分组密码算法才算得上合格。

若从AI大模型训练的角度来看,选择明文攻击意味着什么呢?它其实意味着破译者可以获得足够的精准训练数据集!具体说来,假设X是任意一段自然语言,它们当然能被事先分割为长度N的明文分组。根据选择明文攻击提供的权利,破译者便能得到这些明文分组所对应的密文分组。这些明文和密文的配对,便是随后即将描述的有监督强化训练所需的数据集。

若从语言翻译的角度来看,上述明文分组与密文分组的已知对应,意味着一个重要事实:破译者可获得一本内容无所不包的从中文(或任何一种自然语言)到密文Y-语言的大典。而破译者的任务就是要灵活应用这部大典来完成从Y-语言到中文的翻译。或者说,破译者必须再建一本从Y-语言到中文的大典若不借助对任何时间序列语言翻译都有效的大模型(比如,GPT模型),中文和Y-语言的互译任务就肯定无法完成

但大模型使之有了希望。实际上,设待破译的分组密码为E。破译思路如下:

第一步,选择一个较大的中文自然语言集,记为Q。比如,Q可以是阿里云当年训练其Qwen模型时的语言集。Q其实只是上述大典的极小部分。

第二步,选择某个开源的GPT大模型,记为Y-模型。比如,该模型可以是语言翻译表现最好的大模型,或是当初李飞飞花50美元来训练Qwen的那个模型。

第三步,对Y-模型进行如下专业的有监督强化训练(其实是蒸溜):对集合Q中的任何一段自然语言Q1,以Q1所对应的密文E(Q1)Y-模型的输入,同时以Q1为输出进行有监督的强化训练。换句话说,当向Y-模型输入E(Q1)后,便对Y-模型中的神经网络权重系数进行微调,直到本次输出等于Q1为止。接着,再对Q中的另一段自然语言Q2进行类似的训练。即,再输入E(Q2)并对神经网络的权重进行微调,直到输出为Q2为止。重复上述有监督的强化训练过程,直到遍历Q中的所有语句后才结束整个训练并获得最终的训练模型,记为Y-破译。

这个模型Y-破译便能完成从Y-语言到中文的翻译任务,它实际上就是密码E的一个破译器。

最后,关于该破译模型,我们有如下几点注记:

1)在上述破译过程中,破译者不必事先知道待破译的是DESAES或任何具体密码,这便是通用破译的含义。

2)如果有充足的算力,上述训练的工作量其实并不很大(不该超过李飞飞当初训练Qwen的工作量),所需时间也该有限(大约相当于李飞飞用掉的26分钟),费用也该能承受,毕竟李飞飞当初只花了区区50美元而已。

3)上述破译法很难用于实操,毕竟被攻击者不可能配合破译者来创建大典但从理论上看,本文至少揭示了一个重要结果:所有分组密码都经不起选择明文攻击。看来,分组密码的所有教材都得修改了!另外,用类似的方法也可以知道:所有分组密码可能也经不起选择密文攻击,国内外教材也得相应修改。

4)上述破译对公钥密码无效,因为公钥密码并未陷入前述的三个误区。实际上,公钥密码的明文和密文并不限于任何时间序列语言。

5)上述破译对序列密码也无效,因为本来就不曾要求序列密码承受选择明文的攻击。

参考文献

[1]杨义先,钮心忻,密码简史,北京:电子工业出版社,2020年。

[2]陈玉玲,AI赋能密码的一点考虑,2025211日的公众号密码头条文章。

转载本文请联系原作者获取授权,同时请注明本文来自陈玉玲科学网博客。

链接地址:https://wap.sciencenet.cn/blog-3630458-1474806.html?mobile=1

收藏

分享到:

上一篇
当前推荐数:3
推荐人:
推荐到博客首页
网友评论3 条评论
确定删除指定的回复吗?
确定删除本博文吗?