大数据文摘出品
编译:DonFJ、蒋宝尚
机器学习是现在大家都打了鸡血想用或者在用的技术。
但是,你以为只有好人能用它吗?Too young too simple!
接下来,我将揭秘AI技术黑暗的一面——犯罪份子和人工智能的孽缘。
当计算科学发展的不够完善,还没能解决启发式问题的时候,很多安全问题都是利用规则来解决的,这些规则都是“死”的。
那时候没人觉得计算机能够破解密码、读出来验证码内容或者掌握马路交通的规律。但是现在,人工智能发展极快,老掉牙的基于规则的安全保障系统轻而易举的就被AI秒成渣。
验证码和AI的不解情缘
当我们上网的时候,最烦的就是验证码,它老是来让你填。这是计算机在确定你却是是个“大活人”,而不是一个程序在恶意攻击访问它。
这样做是因为咱们人类用户通过鼠标键盘访问某个网站或资源的这个操作,计算机都能用一段程序来同样做到。
比如说,当你连续三次在登陆Facebook的时候输错密码,网站肯定会跳出来一个验证码来确定你是个活人而不是恶意暴力破解密码的程序(当然了,我会首先想到梯子被踹了)。Facebook还有很多公司的服务器都是这种安全措施,而这种安全措施都是用验证码的,比如常见的验证码长成这样:
多年以来,验证码都能有效的区分恶意攻击代码还有人类用户。但是现在聪明AI时代到来了,验证码在它面前仿佛就是送分题。
CNN(卷积神经网络)就是一个很简单的技术来破解验证码,只要你能给他大量的验证码学习数据集。每张验证码都有一个特定的目标,识别文字或者识别物体之类的。
但是,这些问题在CNN面前都将形同虚设。上述说的只是一个简单的栗子,没太多的技术术语,只要知道简单的神经网络的原理就能看懂。
既然验证码的保护都不起作用了,暴力破解的威胁就更可怕了。你也许会说,我看到过更难的那种验证码,就是从一堆图片里找出个公交车或者找出路牌儿之类的那种(你肯定没少上Youtube!) 。但其实,它们对于AI来说也不难,你肯定听说过谷歌大法的目标检测有多伟大,虽然谷歌仅仅把它作为搜索引擎的一个基础功能来用。
GAN和密码的那些事
注:GAN = Generative Adversarial Networks,读音:干!翻译是对抗生成网络。
咱们的密码一般不会设的特别奇怪,长这样的毕竟是少类: 5f2#V0”P?oz3(几乎就是异类了)。
差不多咱们的密码都长成这样:kronebourg1664,名字加数字大小写什么好记还好输入。
当然了,也有少部分不怕死的这么设密码:password(肯定老被盗)。
对于猜到第一种密码,我天,太难了,不论是对人脑来说还是对一块GTX 1080 GPU来说都太难猜中了(GTX 1080是一块英伟达家的GPU,不只是能用来玩游戏,现在更多人用来跑深度学习工程)。
但是其他的密码嘛,相对来说就容易一些了。所以我们怎么猜这些密码呢?最简单的方法就是翻一本厚厚的字典,然后将每个单词都当成密码去试。这种情况下如果你也就能猜中用“password”当密码的童鞋了。
什么?你真的拿“password”当密码?哥们儿,英语不错呀,你怎么不试试拼音“mima”当密码?赶紧换一个靠谱的吧……
现在,来点高科技的,用AI来猜你的密码。你以为AI还会翻字典?当然不是,神经网络会自己产生一大堆密码候选项。我们就用这堆候选来攻破你的密码。很玄幻?读一读PassGAN这篇文章吧,下面这个图讲了这堆候选项是怎么产生的。
PassGAN:A Deep Learning Approach for Password Guessing的arxiv链接是:
https://arxiv.org/abs/1709.00440
就算你对神经网络很熟,这篇论文可能看起来也不是那么轻松。 这不是简单的通过输入来预测结果,它是先从数据里面学习数据的特点,然后让生成器生成一些具有类似特点的样本出来的特殊网络结构。
专业上叫Generative Adversarial Network(对抗生成网络,一般简写成GAN,提出GAN的就是那个写深度学习花书的大神古德菲洛)。GAN里面包括了两个神经网络,一个生成器和一个检查器。
检查器用于检验输入的数据是否合理,生成器用于来回折腾演化自己让生成的数据能在检查器眼皮子底下蒙混过关。
译者注:这里有个链接,我觉得可以不加,因为就是在一个门户里搜了一下神经网络关键词的结果,毫无营养……然后那个啥,GAN的解释我没用原文,因为太枯燥了怕别人看不懂,我就结合自己的认识写了一个,如果翻译的不好的话再联系我翻译这句。
为了使用PassGAN,我们要有一个不知道哪儿来的真实的密码数据集(也许是某东某讯某度泄漏的?)。从这个数据集里起码能知道人们真正使用的数据集大概长成什么样。一般就是有一些大写字母,一些日期,一些随机的数字,一些名字之类的。
然后呢,我们要用到一个噪声产生器,就是生成一些随机数用的。噪声产生器和密码数据集就是咱们神经网络模型的输入了。
网络的输出就是二分类值,也就是说在有监督训练的时候,网络模型会被告诉说这个密码是真实的还是假的。
在每次神经网络前向传递的时候,网络的输出都会跟真实的标签值进行比较,然后带着这个误差值反向传递回去迭代修改网络的权重。生成器也会跟着模型的训练而成长,因为随着网络模型变化,生成器根据噪声所产生的结果也越接近真实的密码。
当生成器训练完毕之后,之后我们再输入一个噪声,网络就能输出一个特别真实的密码。所以我们只要让PassGAN运行几个小时,就能得到一堆密码候选项了。
AI和网络钓鱼的那些事儿
钓鱼是很常见的黑客技术。你肯定收到过一些看着不太对劲的邮件,自称是银行、移动联通或者微博的人。然后邮件里面还给你一个链接,跳到一个能让你中毒的网页。
想做这样一个钓鱼邮件,你只要照着Facebook或者什么其他大公司的邮件样式外观和语言仿造一封即可。然后又见里面说你的软件得更新,或者点开看看这里有什么惊喜,或者让你填写登陆信息等。
简单粗暴还老套。不论你写了什么,结果都会被发送到不法分子的服务器上。先不说这个,AI是怎么跟钓鱼勾搭上的?
机器学习里面有个利器叫爬虫,它能通过爬取目标网站的各种信息来改进钓鱼技术。通过爬虫保存下来的数据,黑客们能够学习到这些网站的外观,还有文字书写的风格,然后据此产出大量的假邮件然后大规模发送。但是有邮件不知道往哪儿发也是个问题。所以聪明的黑客还能通过前面咱们说的GAN技术来猜测邮件地址,这就增加了让人上当的机会。
有的童鞋可能说了,现在我们用的邮箱里面都有反钓鱼的安全措施~安全的很。但悲剧的是,现在的机器学习已经知道怎么产生能够通过钓鱼检查的钓鱼邮件了!
训练集是这样婶儿的,一大堆邮件,一些邮件是被反钓鱼拦住的,还有一些是能成功发送的。然后我们就能据此训练处一个神经网络模型,来知道钓鱼算法是怎么检测的。在不久的将来,钓鱼邮件也许都是这种反钓鱼巨网下的“漏网之鱼”。
详情请戳这篇DeepPhish论文:
https://albahnsen.com/wp-content/uploads/2018/05/deepphish-simulating-malicious-ai_submitted.pdf
咳咳,总结一下
好消息是,目前只有三种被AI攻克的安全领域。坏消息是,还有巨多的场景正面临着AI黑客的威胁,比如诈骗广告等。但是我相信AI在合法的领域中应用所带来的好处要远大于不法之徒将它们用于作恶上的坏处。
其实,挺讽刺的,现在有很多将人工智能用于侦破犯罪活动的案例,从街头的巡查到网络诈骗都有所设计。最后总结一下:
1.如果你觉的自己的密码能让GAN给猜到的话,赶紧换个密码吧,比如wenzhaizhenshuai就很不错(因为没人觉得文摘菌帅,所以GAN学不到这个信息)。
2.别点开不知道谁发给你的链接,除非你十分确定发邮件的人没问题;
3.千万别用AI做恶呀!
相关报道:
https://medium.com/predict/a-technical-look-at-how-criminals-use-ai-4080f2e325a9
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/257491.html