ニュース系
VIP系
厳選ピックアップ
見逃せない2chまとめ

精度95%以上! ソースコードは指紋、作者はほぼ特定できる

keyboard_typing
1: イス攻撃(栃木県)@\(^o^)/ 2015/02/12(木) 08:41:16.20 ID:LqgHR1r70.net BE:886559449-PLT(21000) ポイント特典

精度95%以上! ソースコードは指紋、作者はほぼ特定できる

ほぼドンピシャでバレバレです。

スペースやタブ、大文字やアンダーバーを組み合わせた命名規則、コメント…コードの書き方には、人によってスタイルがありますよね。それはもう指紋のようなもので、それさえ見えれば、誰がコードを書いたかほとんどわかってしまう…そんな驚きの研究結果が発表されました。

米ドレクセル大学、メリーランド大学、プリンストン大学、独ゲッティンゲン大学の共同チームの研究によると、自然言語処理と機械学習によるコード分析により、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


引用元: 【朗報】 ソースコードの書き方の癖を分析すれば誰が書いたのかほぼ特定できることが判明




2: 膝十字固め(dion軍)@\(^o^)/ 2015/02/12(木) 08:42:40.19 ID:ct0Ou2BZ0.net

そんな驚かない


3: ストレッチプラム(庭)@\(^o^)/ 2015/02/12(木) 08:43:14.91 ID:iuDyHchX0.net

そうすか


8: イス攻撃(東京都)@\(^o^)/ 2015/02/12(木) 08:45:39.25 ID:jihSHDI10.net

インデント論争


9: レインメーカー(茸)@\(^o^)/ 2015/02/12(木) 08:45:56.10 ID:NtJTD2/F0.net

プロジェクト毎に異なるコーティング規準に沿って書いた各コードを
全て俺の書いたものと判断できるのかな?


13: ナガタロックII(やわらか銀行)@\(^o^)/ 2015/02/12(木) 08:48:14.07 ID:eBpd25I20.net

>>9
ロジックの組み立て方でバレることもあるんだよなぁ


28: フェイスクラッシャー(やわらか銀行)@\(^o^)/ 2015/02/12(木) 09:33:45.58 ID:okAc8BKG0.net

>>13
それでは精度95%以上にならない


10: タイガースープレックス(神奈川県)@\(^o^)/ 2015/02/12(木) 08:46:40.36 ID:tB96gILn0.net

改変時は元のソースの癖や規約を完全にコピーするから
俺の改変箇所に関しては不可能だ


11: サソリ固め(dion軍)@\(^o^)/ 2015/02/12(木) 08:46:59.50 ID:hURcWdkQ0.net

わざと色んな書き方混ぜてクセでばれないようにしてる


15: スターダストプレス(大阪府)@\(^o^)/ 2015/02/12(木) 08:50:35.75 ID:/dpQGK870.net

>当局がハッカーを見つけたり、
オンライン詐欺の犯人を特定したり、という使い方です。

コンパイルか難読化してたら意味ないだろこれ…だれがわざわざ素のソースコード晒すんだ


17: アイアンクロー(家)@\(^o^)/ 2015/02/12(木) 08:53:43.80 ID:kF0JRyE/0.net

>>15
これ
プログラミングど素人が書いた記事だわ


20: タイガースープレックス(家)@\(^o^)/ 2015/02/12(木) 08:59:39.03 ID:BW9Bgm8s0.net

>>15
古いハナシだけど、RSAやPGPの公開時にはひと悶着あった。
RSAやDESの時代には、政府や有料顧客には優先して鍵長の長さが大きいものを
提供していたけど、いまの時代、パソコンもネット環境も安い、無料でコンパイラ等
のツールやドキュメントが手に入る状況だと、ちょっと入門書読めば素人でも、暗号
復号プログラムや、ハッキングツールを作成できるからもはや優先顧客だけに暗号
のシステムや解析・侵入プログラムを配布するのは不可能。

FBIやNSAなんかは早くから盗聴可能な状況を維持すべきと主張してたりしてる。

いまは結局、ユーザーに全てのプログラムのテクノロジーを委ねることができる世界
になっちゃったけど、それでも、プログラムを公開配布すればその作者の特徴は簡単
に追えるよっていうプロモーションなんじゃないのかと。


16: メンマ(茸)@\(^o^)/ 2015/02/12(木) 08:52:26.12 ID:AVx9aAIr0.net

俺が書くとベーシックみたいだとよく言われる


36: フォーク攻撃(関東・甲信越)@\(^o^)/ 2015/02/12(木) 09:59:36.43 ID:ydSa4TcvO.net

>>16
大きくはmain以下にズラッと
ひたすら命令が続く書き方を好む人間と
object単位で処理を分割する書き方を好む人間に分かれるな

前者は初心者、スクリブト書き、組み込みコード書きなどの
短い書き捨てプログラムを書く人間

後者はシステムエンジニア大規模アプリケーション
サーバー開発者
ミドルウェア開発者などの長いメンテナンスが必要なプログラムを書く人間

これは適性があるから
書くプログラムにも反映されるな


俺はパッチだらけの汚いプログラムを見るとゴミだと思うが
その方が心からうれしい人間もいるみたいだから
癖はあるんだと思うわw


18: タイガースープレックス(家)@\(^o^)/ 2015/02/12(木) 08:54:58.82 ID:BW9Bgm8s0.net

いまだに軍事や情報の世界だと、政府が野良プログラマーや自由主義研究者を
恐れているというけど、これもその方面のパフォーマンスなのかねぇ。


21: トペ スイシーダ(SB-iPhone)@\(^o^)/ 2015/02/12(木) 09:01:02.46 ID:5yDOz9I80.net

ほぼ毎行コメント書いてあるのは俺のだ


22: タイガードライバー(SB-iPhone)@\(^o^)/ 2015/02/12(木) 09:09:12.27 ID:ZY/gYSjH0.net

俺のは100%特定される自信あるわ
ソースコードに名前書いてるし


27: リキラリアット(WiMAX)@\(^o^)/ 2015/02/12(木) 09:17:16.72 ID:rU82gMSz0.net

圧縮して難読化してもばれるものなのかな


29: ファイヤーバードスプラッシュ(愛知県)@\(^o^)/ 2015/02/12(木) 09:35:54.29 ID:VbIAhl2m0.net

自分のソース以外読みにくくて仕方がないってことはそういうことだろうな


31: ストマッククロー(空)@\(^o^)/ 2015/02/12(木) 09:48:01.02 ID:5ot1Vk520.net

メーカーやプライベートビルダーで違いが出るのはここだな


33: ショルダーアームブリーカー(愛知県)@\(^o^)/ 2015/02/12(木) 09:51:10.67 ID:pQBq8wDh0.net

これはコンパイル済みのプログラムをリバースエンジニアリングしても分かるってこと?そんな馬鹿なw


35: タイガースープレックス(家)@\(^o^)/ 2015/02/12(木) 09:54:34.40 ID:BW9Bgm8s0.net

>>33
>>解析されるのは、レイアウトや語彙の特性と、「抽象構文木(AST)」です。ASTとは、「コードの書き方からまったく
>>影響を受けずに、コードの型の特性をとらえる」もので、つまり、関数の名前、コメント、スペース入れ方などの
>>クセ以上のものを探し出し、作者を特定するカギにする、というわけです。

という話だから、逆コンパイルものはダメじゃないのかな


40: ミラノ作 どどんスズスロウン(茸)@\(^o^)/ 2015/02/12(木) 10:20:22.08 ID:RjG1gUfL0.net

実行コードから割り出してウィルス作ってる奴特定しろよ


41: カーフブランディング(庭)@\(^o^)/ 2015/02/12(木) 10:23:19.46 ID:pcqkpjG/0.net

K&Rとか山ほどいるし自動整形もあるから無理じゃね


43: ハーフネルソンスープレックス(家)@\(^o^)/ 2015/02/12(木) 10:38:59.25 ID:6SlMyCF30.net

オープンソースが前提のコード解析しただけだろ


44: ハーフネルソンスープレックス(家)@\(^o^)/ 2015/02/12(木) 10:41:54.94 ID:6SlMyCF30.net

統計的な有意さは、個人を特定するためにあるわけじゃない


47: ときめきメモリアル(芋)@\(^o^)/ 2015/02/12(木) 11:13:16.76 ID:E3fah8KS0.net

データに無い新しい人のソースは分から無いだろ


51: サソリ固め(庭)@\(^o^)/ 2015/02/12(木) 12:35:09.30 ID:udolfTtu0.net

>>47
いずれ開発ツールはオンライン専用になるし
大学や企業にはソース提供させるんじゃね?


48: ジャーマンスープレックス(庭)@\(^o^)/ 2015/02/12(木) 12:01:57.22 ID:k0bw3sBh0.net

>>1
これ、当たり前。
論理設計段階のフローチャートですら癖でるからな。

俺、大学の卒論の一部でシステム作ったけど、その後後輩が別論文で丸コピしたの使ったらしく、教授に怒られてた。


14: 毒霧(東京都)@\(^o^)/ 2015/02/12(木) 08:48:37.10 ID:lOH3uvxx0.net

コードなんて大体その日の気分で変わる



この記事が気に入ったら
いいね!しよう
最新情報をお届けします

本日注目の話題!

コメント一覧

※ 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)

言語によっても大きく変わりそうだけどな。
職業プログラマーの判定も難しそうだ。
なんとなく特定の言語かつ個人でやってるプログラマー限定な気がする。


コメント投稿

名前

     絵文字

いつもコメントありがとうございますm(_ _)m
アダルトとURLはNGワードにしています。(リンク先の安全確認が出来ないためです)
コメントができない場合は、一時的な不具合の場合があります。

芸能・ニュース
VIP・その他
厳選ピックアップ
見逃せない2chまとめ

前の記事次の記事