最新產業新聞文章

Image credit: Getty Images/Hero Images

机器学习能通过类似「指纹辨识」的方式解析代码是谁写的

这方法可以用来辨识黑客和意图瓢窃资料的人,但也有可能对隐私造成威胁。

Lanmo Chang
2018 年 8 月 13 日, 下午 04:30
Getty Images/Hero Images

虽然每位程序员都拥有自己独特的风格,但光通过观察代码来推敲谁是作者,往往不太可行。而现在,我们有了更先进的方法。研究人员日前利用机器学习技术,开发出一套可以通过解析原始代码和经过编译的二进制代码,来找出原作者的系统。该系统的开发者向 Wired 解释,只要先提供作者撰写的代码给该系统作为学习范例,即便只是部分片段,它就能解析该代码所拥有的特征,并用来辨识其它的代码是否出自同一人之手。

为了进一步验证该系统对于二进制代码辨识的正确性,研究人员利用 Google Code Jam 的参赛作品进行测试。试验中,在给予系统来自 100 名程序员,每位 8 个程序范例作学习后,系统正确辨识出作者的机率高达 96%。即便将样本数提升至 600 名程序员,该系统依然能维持 83% 的准确率。

这项技术尤其适用于辨识恶意软件的开发者,并能防止犯人企图栽赃他人,对于调查人员无疑是一项福音。此外,该技术也能辨别出代码中「纯粹巧合」或「复制」的部分,所以也能有效应用于抄袭的相关案件之中。

往后,程序员若不希望透露身份,或许只得选择屏蔽其源代码。但对于以匿名的形式贡献源代码的社群来说,这项技术的出现无疑是一个挑战。毕竟理论上,现在只要将代码公开,便会暴露在被揭露身份的风险之中。也让人省思未来「追求安全」和「隐私」两者之间的平衡,该如何拿捏。