Machine learning 用于文件解密的神经网络-可能吗?

Machine learning 用于文件解密的神经网络-可能吗?,machine-learning,neural-network,encryption,Machine Learning,Neural Network,Encryption,我以前已经使用过神经网络,并且知道关于它们的最基本的知识。我尤其有使用常规多层感知器的经验。现在,有人问我是否有可能做到以下几点,并且不知何故,我觉得自己在掌握这个问题上面临着挑战:) 形势 让我们假设我有一个可以加密和解密常规ASCII编码文件的程序。我完全不知道具体的加密方法和使用的密钥。我所知道的是,程序可以反转加密,从而读取原始内容 我想要什么? 现在我的问题是:你认为有可能训练(某种)神经网络,用可接受的努力复制精确的解密算法吗 到目前为止我的想法和工作 我没有太多的加密经验。有人建

我以前已经使用过神经网络,并且知道关于它们的最基本的知识。我尤其有使用常规多层感知器的经验。现在,有人问我是否有可能做到以下几点,并且不知何故,我觉得自己在掌握这个问题上面临着挑战:)


形势

让我们假设我有一个可以加密和解密常规ASCII编码文件的程序。我完全不知道具体的加密方法和使用的密钥。我所知道的是,程序可以反转加密,从而读取原始内容

我想要什么?

现在我的问题是:你认为有可能训练(某种)神经网络,用可接受的努力复制精确的解密算法吗

到目前为止我的想法和工作

我没有太多的加密经验。有人建议只采用AES加密,这样我就可以编写一个小程序来批量加密ASCII编码的文件。因此,这将包括为监督学习收集学习数据。使用神经网络输入的加密文件和原始文件作为训练数据,我可以训练任何网络。但现在我被卡住了,你会建议如何将输入和输出数据输入到神经网络。你们会用多少个输入和输出神经元? 因为我不知道加密文件是什么样子,所以最好以二进制形式传递数据。但我不能只使用数千个输入和输出神经元,同时传递所有比特。也许是一个接一个的循环网络?听起来也不是很有效


另一个问题是,你不能部分解密——这意味着你不能大致正确。你要么是对的,要么不是。换句话说,最终净误差必须为零。从我到目前为止与安的经历来看,对于大型网络来说,这几乎是不可能实现的。那么这个问题是可以解决的吗?

我想如果这个办法奏效,人们就会这么做。据我所知,他们没有这样做

说真的,如果你能在一个神经网络上抛出大量的明文/密文对并构造一个解密程序,那么这将是一个非常有效的已知明文或选择明文攻击。然而,我们对现有密码的这种攻击根本不是很有效。这意味着,要么整个开放加密社区都没有意识到这一点,要么就是它不起作用。我意识到这远不是一个结论性的论点(这实际上是权威的论点),但我认为这表明这种方法行不通

另一个问题是,你不能部分解密——这意味着你不能大致正确。你要么是对的,要么不是


这正是问题所在。神经网络可以近似,这意味着输入值的微小变化会导致输出值的微小变化,而加密函数/算法被设计为尽可能不连续。

假设您有两个密钥a和B,分别将密文K转换为Pa和Pb。Pa和Pb都是密文K的“正确”解密。因此,如果你的神经网络只有K作为输入,它就无法实际预测正确答案。大多数加密破解方法都涉及查看结果,以确定它是否与您所追求的内容相似。例如,可读文本更可能是纯文本,而不是明显的随机垃圾。神经网络需要善于猜测,根据用户期望的内容,它是否得到了正确的答案,而这永远不可能是100%正确的


然而,神经网络理论上可以学习任何函数。因此,如果你有足够的密码/明文对来加密一个特定的密钥,那么一个足够复杂的神经网络就可以学习成为这个特定密钥的解密算法

同样关于连续与离散问题,这基本上得到了解决。输出类似于sigmoid函数,因此您只需为1和0选择一个阈值。5个可能有效。经过足够的训练,理论上你可以在100%的时间里得到正确答案

以上假设您有一个足够大的网络,可以一次处理整个文件。对于任意大小的密文,您可能需要使用RNN一次执行块,但我不知道它是否仍然具有与传统网络相同的“计算任何函数”属性


所有这些都不是说这样的解决方案实际上是可行的。

好吧,老实说,这对我来说似乎是完全不可能的。至少有破解AES加密文件的想法。我是基于两个想法。首先,我怀疑一个在三年的竞争中幸存下来的标准加密算法能否用这样一种“古老”的技术破解。然后,另一点是我怀疑NN的“扩展性”。我的意思是,基本上,你在寻找一个函数。这个函数属于函数空间,也就是说,在我看来,不太可能包含神奇的AES解密函数。因为我没有确凿的证据,我更喜欢评论!神经网络实际上相当“有表现力”(我认为你是认真的)。一个只有几个节点的小型两层网络可以训练为计算两位上的任意布尔运算符。如果您允许仅使用and、OR、NOT、XOR等,那么显然可以计算AES递减函数(在我们所有的计算机都这样做之后),那么如果您提供NN有足够的层和节点,那么NN也必须可以这样做。所以我认为表达能力不是问题。相反,问题更多的是关于。。。。。。神经网络的大小和拓扑结构,以及使反向传播算法学习函数所需的训练数据和时间/计算量。或者,即使函数是“可学习的”,只要