ほぼドンピシャでバレバレです。
スペースやタブ、大文字やアンダーバーを組み合わせた命名規則、コメント…コードの書き方には、人によってスタイルがありますよね。それはもう指紋のようなもので、それさえ見えれば、誰がコードを書いたかほとんどわかってしまう…そんな驚きの研究結果が発表されました。
米ドレクセル大学、メリーランド大学、プリンストン大学、独ゲッティンゲン大学の共同チームの研究によると、自然言語処理と機械学習によるコード分析により、95%の精度で作者は特定できるそうです。
解析されるのは、レイアウトや語彙の特性と、「抽象構文木(AST)」です。ASTとは、「コードの書き方からまったく影響を受けずに、コードの型の特性をとらえる」もので、つまり、関数の名前、コメント、スペース入れ方などのクセ以上のものを探し出し、作者を特定するカギにする、というわけです。
研究チームが開発した機械学習ソフトウェアで、Google Code Jamに公開されているコードの分析を試しに行ってみたところ、あるひとりの人が書いた630行のコードを分析すれば、95%の精度でその作者が特定できたそうです。
コードの行数を増やして1,900行にすると、特定の精度は97%になるとか!
このコード解析、すぐに使えそうな分野が思い浮かびますよね。そう、当局がハッカーを見つけたり、オンライン詐欺の犯人を特定したり、という使い方です。あと、他人のコードをちょっと拝借、なんていうケースもバレちゃったりするんでしょうか。「特定されたら困る!」という人は、今から誰かのコードの書き方をそっくりマネする練習を始めた方がいいかもしれない…ですかね?
http://www.gizmodo.jp/2015/02/your-coding-style-is-like-a-digital-fingerprint.html
引用元: ・【朗報】 ソースコードの書き方の癖を分析すれば誰が書いたのかほぼ特定できることが判明
全て俺の書いたものと判断できるのかな?
ロジックの組み立て方でバレることもあるんだよなぁ
それでは精度95%以上にならない
俺の改変箇所に関しては不可能だ
オンライン詐欺の犯人を特定したり、という使い方です。
コンパイルか難読化してたら意味ないだろこれ…だれがわざわざ素のソースコード晒すんだ
これ
プログラミングど素人が書いた記事だわ
古いハナシだけど、RSAやPGPの公開時にはひと悶着あった。
RSAやDESの時代には、政府や有料顧客には優先して鍵長の長さが大きいものを
提供していたけど、いまの時代、パソコンもネット環境も安い、無料でコンパイラ等
のツールやドキュメントが手に入る状況だと、ちょっと入門書読めば素人でも、暗号
復号プログラムや、ハッキングツールを作成できるからもはや優先顧客だけに暗号
のシステムや解析・侵入プログラムを配布するのは不可能。
FBIやNSAなんかは早くから盗聴可能な状況を維持すべきと主張してたりしてる。
いまは結局、ユーザーに全てのプログラムのテクノロジーを委ねることができる世界
になっちゃったけど、それでも、プログラムを公開配布すればその作者の特徴は簡単
に追えるよっていうプロモーションなんじゃないのかと。
大きくはmain以下にズラッと
ひたすら命令が続く書き方を好む人間と
object単位で処理を分割する書き方を好む人間に分かれるな
前者は初心者、スクリブト書き、組み込みコード書きなどの
短い書き捨てプログラムを書く人間
後者はシステムエンジニア大規模アプリケーション
サーバー開発者
ミドルウェア開発者などの長いメンテナンスが必要なプログラムを書く人間
これは適性があるから
書くプログラムにも反映されるな
俺はパッチだらけの汚いプログラムを見るとゴミだと思うが
その方が心からうれしい人間もいるみたいだから
癖はあるんだと思うわw
恐れているというけど、これもその方面のパフォーマンスなのかねぇ。
ソースコードに名前書いてるし
>>解析されるのは、レイアウトや語彙の特性と、「抽象構文木(AST)」です。ASTとは、「コードの書き方からまったく
>>影響を受けずに、コードの型の特性をとらえる」もので、つまり、関数の名前、コメント、スペース入れ方などの
>>クセ以上のものを探し出し、作者を特定するカギにする、というわけです。
という話だから、逆コンパイルものはダメじゃないのかな
いずれ開発ツールはオンライン専用になるし
大学や企業にはソース提供させるんじゃね?
これ、当たり前。
論理設計段階のフローチャートですら癖でるからな。
俺、大学の卒論の一部でシステム作ったけど、その後後輩が別論文で丸コピしたの使ったらしく、教授に怒られてた。
いいね!しよう
本日注目の話題!
コメント一覧
※ 1.
私は名無しさん
2015年02月12日 20:50 ID:wnLFz3g30 ※このコメントに返信する※
(e/d)
アホくさいな、ソースコードからは無理だよ。
コメントの書き込み何て会社に寄っては規格化していたり単語の統一もしているんだよ。
ちなみに個人で書く時はコメント何て一切記述しないよ。
変数名も使い回しだよ。
仕事で書く時なんて社内規約に合わせてコメントから変数名まで詳細に記述するけどね。
それにうちの会社だと、
同じソースコードを10数名で編集するから癖が見つからないよ。
※ 2.
私は名無しさん
2015年02月12日 20:58 ID:wEe0aY2P0 ※このコメントに返信する※
(e/d)
ワイ、ニュース30には“Tails”で書き込みw
※ 3.
…
2015年02月12日 21:09 ID:KQGUVkaF0 ※このコメントに返信する※
(e/d)
20人に1人は外れなんですがそれは…
97%にしたって33人に1人は外れるし。
※ 4.
まとめブログリーダー
2015年02月12日 23:17 ID:d700ir9K0 ※このコメントに返信する※
(e/d)
※1
少なくとも君個人が書いたソースなら特定できそうだな。
※ 5.
私は名無しさん
2015年02月13日 06:03 ID:RCZUd.pa0 ※このコメントに返信する※
(e/d)
ソースコードとかコピペ多いだろうに本当にわかるのかね?
※ 6.
私は名無しさん
2015年02月13日 06:08 ID:v7EpPtTZ0 ※このコメントに返信する※
(e/d)
癖を解析できるのなら
実行に影響ない範囲内で癖を誤魔化すプログラムも作れる筈
※ 7.
名無し
2015年02月13日 11:00 ID:SHAQITh.0 ※このコメントに返信する※
(e/d)
言語によっても大きく変わりそうだけどな。
職業プログラマーの判定も難しそうだ。
なんとなく特定の言語かつ個人でやってるプログラマー限定な気がする。
コメント投稿