按关键词阅读:
文章插图
写在前面的话伟大的冯·诺依曼曾经说过 , 任何一个考虑用数学方法来生成随机数的人 , 脑壳都不太好使 。 在这篇文章中 , 我将使用一个神经网络来破解随机噪声 , 针对Xorshift128的预测位准确率可高达95% 。 在此之前 , 我曾对客户端电子邮件令牌生成时所使用的安全代码进行过审查 。 老实说 , 我不太记得之前那些代码长啥样了 , 但大概意思如下:
"""gotta make a token and send it to the client!"""very_random_number = get_random_number()two_factor_token = convert_representation(very_random_number)send_email("Your two factor authentication token is:"+two_factor_token,user_email)save_token_to_user(user_id,two_factor_token)
类似上面的这种代码增强了大部分互联网应用的安全性 , 如果用户想要重置他们的密码 , 他们就要输入自己的电子邮箱 。 接下来 , 我们将生成一个秘密代码并将其发送到用户的电子邮箱中 。 当用户点击了邮箱中的链接之后 , 也就验证了他们身份的合法性 。 有的时候 , 当用户尝试登录网上银行时 , 我们还会给他们发送类似的数字文本代码 , 而这种随机数与用户之间的关联也是基于Cookie的身份验证的主要部分 。
【神经网络与随机数的安全性分析(上)】但是 , 这种代码真的安全吗?没错 , 这需要看情况来定 。 当然了 , 我们也可以去攻击电子邮件组件 , 因为有的时候电子邮件并不会对发送的信息进行加密 。 或者说 , 我们也可以选择去攻击数据之间的某些关联性 , 因为令牌和电子邮件也可能是由攻击者控制的数据或其他东西派生出来的 。 在这里 , 随机数生成的质量也很重要 , 至少在理论上是这样的:一些随机数生成器是可预测的 , 而另一些则很难被攻击 。 如果我们能预测到生成的随机数 , 那麻烦可就大了 , 因为我们只需要触发将邮件发送给用户 , 然后以某种方式预测出生成的随机数 , 那用户就凉凉了 。 从另一方面来说 , 即使我们能够“预测”出随机数 , 剩下的事情也没那么简单 , 因为我们还需要了解convert_representation代表的是什么 。
我认为机器学习在这方面可以给我们提供很大的帮助 。 事实上 , 这个想法早就在我的脑海里萦绕了好几年了 。 但是到目前为止 , 我还没有看到任何已有的文献能够证明这种想法是可行的 , 而且也没有人真正知道该如何去下手 。 最后 , 多亏了Phil Brass Weird Ideas基金会的慷慨资助 , 我才能够有好几个礼拜的时间能够有条不紊地去思考这个问题 。
实际上 , 我所使用的方法其实比较简单 , 我将在接下来的文章中跟大家讨论如何在计算机中生成随机数字 , 然后讨论如何将随机性的概念转化为一个可学习的问题 。 除此之外 , 我还会尝试去解决随机数目前所面临的安全问题 , 然后给大家提供一个路线图 , 并说明如何继续缩小我当前进度与可用攻击之间的距离 。
随机数当前的安全现状在我看来 , 计算机这种“不人不鬼”的东西就是一个捉摸不透的“生物” 。 尽管我们可以通过各种各样的方式和条件来对计算机的行为进行严格限制 , 但有的时候我们又会去要求计算机的行为变化无常 , 因为我们人类不具备这样的能力 , 所以我们会要求计算机来帮我们去选择一个比数字更加疯狂的数字 , 也就是一个看似完全“随机”的数字 。 比如说 , 通过调用Xorshift128 , 这个算法允许我们选择一个介于0到40亿之间的数字(确切地说是2的32次方) , 当然了 , 如果让我们自己去选择 , 我们选出来的数字没有理由是绝对随机的 , 而且肯定会偶尔有相同的数字 。 不过这个算法令人吃惊的是 , 在遇到随机模式的重复数字之前 , 我们可以调用这个函数2的128次方次 。
这里就存在一个问题了 , 别忘了文章开头的第一句话说过 , 噢不对 , 应该是冯·诺依曼提到过:编程是一门艺术 , 你能准确地告诉它你想让它做什么 , 或多或少地提前告诉它你想让它产生什么样的随机的东西 , 但是这两种方法首先都违背了程序的目的 , 而且在编程级别上也提出了非常非常大的逻辑性挑战 。 当然了 , 我们普通人可没那么多时间和精力去做40亿次某件事情 , 即使你做了 , 把这些数字全部写下来也是浪费时间浪费资源的事情 。 另一方面来说 , 如果只循环几个可用的数字 , 这就更不可行了 , 这样何来的随机性可言?如果只循环使用0到2的32次方之间的几百个整数 , 那么实际上也并没有提供太多的随机性 。
稿源:(未知)
【傻大方】网址:http://www.shadafang.com/c/111J2R642020.html
标题:神经网络与随机数的安全性分析(上)