假设您有一个包含数百万行以及纯文本、密钥和输出密文属性的数据集。理论上,深度学习能否用于在输出中找到有助于破译密文的模式?还有其他潜在的方法吗?
深度学习可以用来破解加密吗?
可能不是。现代加密系统是围绕密码随机数生成器设计的,它们的输出被设计为在统计上与真正的随机性无法区分。机器学习通常基于发现数据中的统计模式,而对于真正的随机数据则没有。即使对于存在一些小模式的有缺陷的加密,输入中的大量随机性也会压倒任何直接解密密文的尝试。
此外,没有启发式方法可以用来判断您是否接近正确的解密 - 例如,猜测密钥中的单个位将完全打乱输出(当它在屏幕上显示解密时责备好莱坞一些填字游戏,其中正确的字母放置到位)。这种全有或全无的情况排除了通过机器学习过程发现算法的可能性,即使您拥有加密密钥也是如此。你能做的最好的就是暴力破解所有已知的算法。如果您没有密钥,那么您也必须暴力破解所有可能的密钥。
您可以通过尝试猜测用于随机数生成器的种子值来探索问题的难度。使用 Mersenne Twister RNG(例如 Python 中使用的标准 RNG),输入可以是 624 个 32 位无符号整数的位模式,输出可以是用于生成该系列的种子的 32 位。我建议这些具体数字的原因是因为实际上有可能用这么多数据破解 Mersenne Twister。但是,我仍然认为 ML 方法是完全错误的工具。
另一个简单的变体是看看您是否可以教网络生成或反转加密哈希。您可以从已知损坏的文件开始,例如 MD5。输入和输出可以是 80 位,这大大简化了架构和管道,您可以在几个小时内完成这个测试。尽管已知 MD5 已被破坏,但我认为您可以教神经网络找到任何模式的可能性为零。
一个重要的细节:如果您想“破解”加密,您将无法将密钥用作已知值。但是,即使您提供 ML 过程的密钥,它也可能无法学习如何解密。
正如之前的回答中所建议的那样,ML 技术可能很难直接破解加密。
但是有一些方法可以使用 ML 和神经网络技术来破解加密(尤其是 AES,因为我已经研究过它,但也可以用于其他人)。
我专注于嵌入式设备中的 AES 加密。当设备加密(或解密)时,它通常会以电力或电磁辐射的形式泄露信息。这些被称为“侧通道泄漏”。研究表明,这些泄漏与加密(或解密)期间使用的密钥相关。如果存在相关性,则可以使用 ML/神经网络技术来检索正在使用的密钥。查看这些使用 ML/神经网络检索(部分)在 AES 加密期间使用的密钥的论文:Ref2 Ref3
该领域的研究仍在进行中,还有很多工作要做。但一切都没有丢失,使用深度学习来破解密码学或其中的一部分仍然有希望。