機械学習を用いると匿名のソースコードから個人を識別可能であることが判明

プログラミング言語を用いて書かれた「ソースコード」はあらかじめ定められた規則に従って記述する必要があり、
匿名で公開されたコードから個人を識別することは困難に思えるかもしれません。ところが、実際にはコードにも
個人の特徴が色濃く表れており、機械学習を用いてコードのサンプルから個人を識別できることが判明しました。

DEF CONR 26 Hacking Conference Speakers
https://www.defcon.org/html/defcon-26/dc-26-speakers.html#Greenstadt

Machine Learning Can Identify the Authors of Anonymous Code | WIRED
https://www.wired.com/story/machine-learning-identify-anonymous-code/

ドレクセル大学のコンピューターサイエンス准教授であるレイチェル・グリーンシュタット氏と、ジョージ・ワシントン大学で
コンピューターサイエンスの准教授を務めるアイリン・カルスキン氏は、プログラミング言語で書かれたコードは
完全に匿名のものではなく、機械学習を用いて個人を識別可能だという研究結果を発表しました。

2人は機械学習のアルゴリズムにコードサンプルを分析させ、用いた言葉の選択やコードの長さ、コードのまとめ方と
いったあらゆる特徴を抽出しました。次に2人は抽出された特徴の中から、開発者個人を識別するのに役立つ特徴のみを
選別し、コードから個人を特定する時に注目するべきリストを絞り込んだとのこと。コードの書き手は通常の文章と違い、
一定の規則に従ってコードを書き進めなければならないという制約がありますが、それでもコードから個人を識別可能な
特徴を抽出できるようです。

また、コードサンプルは非常に長いものである必要があるわけでもなく、グリーンシュタット氏らが発表した2017年の
論文(PDF)によればGitHubに公開されたほんの短いコードの断片であっても、特定の開発者とそれ以外の開発者を
識別できるとのこと。加えて、すでに0と1で表される機械語にコンパイルされたコードからでも、個人の識別が可能だと
カルスキン氏は述べました。

カルスキン氏らの研究チームは、Googleが開催するプログラミングコンテストのGoogle Code Jamで書かれたコードをもとに、
100人の開発者が書いたコードをアルゴリズムに識別させました。すると、実に96%の精度で個人を識別することが
できたとのこと。また、識別する開発者数を600人にまで拡大した場合でも、83%の精度で個人を識別できたとしています。

グリーンシュタット氏とカルスキン氏は、プログラミングを勉強する学生が他のコードを盗用したのかどうかを判断する場合や、
マルウェアの開発者を特定する時などにコードから個人を識別するAIが役立つとしています。また、関係のない第三者を
装って行われたサイバー犯罪に対しても、背後にいる人物の存在をあぶり出すことができるとのこと。

https://gigazine.net/news/20180813-machine-learning-identify-code-authors/