匿名代码基本无奈立解?没有具有的!机器学习玩转去匿名化

2019-08-10 年华未央 暂无评论 阅读 744 views 次

【风恋尘香(微信号:ilieyun)】8月13日报道(编译:柠萌)

编者注:匿名的代码能否真的无奈立解?代码的开发职员能否能完善暗藏?新的研讨标明能够应用机器学习技术对于代码样本的作者进行去匿名化操作。这种操作对于抄袭跟 隐衷问题也会发生影响。本文将带您了解去匿名化研讨目前的成果跟 将来的标的目的。

体裁学(言语体裁的统计剖析)研讨者—早就晓得写作是一个奇特的、本位主义的进程。你取舍的词汇、句法跟 语法都会留下痕迹。例如,只需主动化工存在足够的培训数据可供使用,它们如今就能够精确地辨认论坛帖子的作者。但最新的研讨标明,体裁学也能够利用于人工言语样本,好比代码。现实证实,软件开发职员也会有指纹留下。

雷切尔·格林斯塔特(Rachel Greenstadt)是美国德雷塞尔大学计算机迷信的副教学。艾林·卡利斯坎(Aylin Caliskan)是格林斯塔特的前博士生、现任乔治·华盛顿大学助理教学。他们两人发觉,代码跟 其余情势的体裁表白一样,都是无奈匿名的。在周五的DefCon黑客大会上,这两位迷信家将展现他们的多项研讨。在研讨中,他们应用机器学习技术对于代码样本的作者进行去匿名化操作。例如,他们的工作可能在抄袭纠纷中施展作用,但同时它也有隐衷问题,尤其是对于不计其数向世界奉献开源代码的开发者而言。

如何对于代码进行去匿名化?

下面用一个例子对于研讨职员如何使用机器学习来发觉代码的作者进行简略解释。首先,他们设计的算法辨认了在一些代码样本中找到的一切特性,有良多没有同的特性。想想天然言语中具有的每一个方面:有您取舍的单词,您把它们组合在一同的方式,句子长度,等等。格林斯塔特跟 卡利斯坎随后缩小了功用范畴,使其只包括了真正区别于其余开发者的功用,将列表从数十万缩减到大约50个。

研讨职员没有依赖底层特征,好比代码的格局化方式。相反,它们创立“形象语法树”来反映代码的底层构造,而非它的恣意组件。他们的技能相似于优先排序某人的句子构造,而没有是在于他们能否缩进一个段落的每一行。

这个法子还须要一些另外工作来教一个算法,让它晓得什么时分应该发觉另一个代码示例。假如一个随机的GitHub账户弹出并发布了一个代码片断,格林斯塔特跟 卡利斯坎就没有必定可以辨认背地的人,由于他们只有一个样本能够使用。他们可能会说,这是一个他们从未见过的代码开发职员。但是,格林斯塔特跟 卡利斯坎并没有须要把一生的光阴都花在代码上,他们只要要多少个短的样本。

例如,在2017年的一篇论文中,卡利斯坎、格林斯塔特跟 别的两名研讨职员证实,即便是存储库站点GitHub上的一小段代码,也足以划分出各个编码者之间的区别,并且准确度相称之高。

最令人印象深刻的是,卡利斯坎跟 其余研讨团队在另一篇论文中表现,只用他们编译的二进制代码就能够去匿名化程序员。在开发职员编写完一段代码后,一个名为编译器的程序将它转换成一系列的1跟 0,机器能够读取这些1跟 0,称为二进制。对于人类来说,这几乎就是胡言乱语。

卡利斯坎跟 与她一同工作的其余研讨职员能够将二进制分解回C++编程言语,同时保存开发职员奇特作风的元素。假定你写了一篇论文,使用谷歌翻译将其转换为另一种言语。虽然文本看起来可能完整没有同,然而你编写的方式元素仍旧嵌入到了语法之类的特征中。代码也是如斯。

“作风被保存了下来,” 卡利斯坎说。“当文本是以个人学习为根底时,就会有很强的作风特性。”

为了进行二进制试验,卡利斯坎跟 其余研讨职员使用了谷歌 Code Jam年度编程挑衅赛的代码样本。机器学习算法正确地辨认出了100名个体程序员,而只用了96%的光阴。每个人使用8个代码样本。即便将样本量扩展到600名程序员,该算法仍能在83%的光阴内精确辨认。

对于抄袭跟 隐衷的影响

格林斯塔特跟 卡利斯坎说,他们的工作能够用来断定编程学员能否有剽窃行动,或许开发者能否违背了雇佣合同中的非竞争条款。保险研讨职员可能会使用它来辅助肯定创立一种特定类型歹意软件的可能开发职员。

更令人担心的是,一个威权政府可能会使用去匿名化技术来辨认背地的个人,好比说,一个躲避审查的工具。这项研讨还对于那些为开源名目做奉献的开发职员有隐衷方面的影响,特殊是假如他们不断使用雷同的GitHub账户的话。

格林斯塔特说:“人们应该认识到,在这种情形下,要百分之百地暗藏本人的身份长短常难题的。”

例如,格林斯塔特跟 卡利斯坎发觉,一些现成的搅浑法子,即软件工程师用来使代码更繁杂、保险性更高的工具,并没有能胜利地暗藏开发职员的奇特作风。但是,研讨职员说,在将来,程序员可能可以使用更繁杂的法子暗藏他们的作风。

“我的确以为,只需咱们继续进行下去,将会发觉一件事,那就是什么样的搅浑法子可以掩盖这些货色。” 格林斯塔特说:“我没有信任,最后发觉的论断是您做的每件事都是有迹可循的。无论如何,我愿望没有是这样。”

例如,在另一篇论文中,由华盛顿大学的露西    ·西姆科(Lucy Simko)引导的团队发觉,程序员编写代码的目标能够是让算法信任本身是另外程序员编写出来的。该团队发觉,即便开发职员不专门练习过如何创立假货,他们也可能会对于本人的“编码签名”进行恶搞。

将来的研讨标的目的

格林斯塔特跟 卡利斯坎还发觉了许多关于编程本色的有趣见解。例如,他们发觉教训丰盛的开发职员比新手更容易辨认代码。您越纯熟,您承当的工作就越奇特。局部起因可能是由于低级 程序员常常从Stack Overflow这样的网站复制粘贴代码解决方案。

同样,他们发觉,解决更难题问题的代码示例也更容易属性化。通过使用62名程序员组成的样本,这62名程序员每个人都解决了7个“简略”的问题,研讨职员在90%的光阴里都可以将他们的工作去匿名化。当研讨职员使用7个“难题”问题样本时,他们的精确率降低到95%。

在将来,格林斯塔特跟 卡利斯坎想要了解其余要素是如何影响一个人的编码作风的,好比当统一个组织的成员在一个名目上配合时会产生什么。他们还想探求一些问题,好比来自没有同国度的人能否会以没有同的方式编码。例如,在一项初步研讨中,他们发觉他们能够划分加拿大跟 中国开发者编写的代码样本,精确率超过90%。

还有一个问题,雷同的属性法子能否能够在没有同的编程言语中以尺度化的方式使用。目前,研讨职员强调,只管到目前为止他们的法子已经被证实是有效的,然而去匿名化代码仍旧是一个奥秘的进程。

“咱们仍在尽力弄明白哪些是真正能够属性化的,哪些没有是。”格林斯塔特说:“有足够的理由证实,这些应该惹起关注,但我愿望这没有会招致任何人都没有公然颁发意见的蹩脚情形产生。”

给我留言