ソースコードの書き方の癖を分析すれば誰が書いたのかほぼ特定できることが判明! →コンパイルしてたら意味無いのでは | あまえび速報
6ca2a898    bdb683c1

ソースコードの書き方の癖を分析すれば誰が書いたのかほぼ特定できることが判明! →コンパイルしてたら意味無いのでは

P033542_s
コードの書き方で指紋のように個人特定可能と判明。しかし・・・。( ´・ω・)y─┛~~~oΟ◯
 
1: イス攻撃(栃木県)@\(^o^)/ 2015/02/12(木) 08:41:16.20 ID:LqgHR1r70.net BE:886559449-PLT(21000) ポイント特典
精度95%以上! ソースコードは指紋、作者はほぼ特定できる

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

150130coding

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

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

45: 垂直落下式DDT(九州地方)@\(^o^)/ 2015/02/12(木) 10:55:39.92 ID:EVduyLwoO.net
これ心理学だと分かって当たり前の話なんだよね
みんな文章・文体・書き方を癖だと思っているだろうけど、
実際は心の動き・動機付け・IQレベルを「癖」と言っているんだよ

例えば

48: ジャーマンスープレックス(庭)@\(^o^)/ 2015/02/12(木) 12:01:57.22 ID:k0bw3sBh0.net
>>1
これ、当たり前。
論理設計段階のフローチャートですら癖でるからな。

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

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
そうすか

5: ローリングソバット(禿)@\(^o^)/ 2015/02/12(木) 08:44:31.98 ID:I2bD/nvf0.net
ソースはブルドックがいいよ

6: ニールキック(茸)@\(^o^)/ 2015/02/12(木) 08:44:33.62 ID:l2mjmUgH0.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
改変時は元のソースの癖や規約を完全にコピーするから
俺の改変箇所に関しては不可能だ

24: ローリングソバット(茨城県)@\(^o^)/ 2015/02/12(木) 09:11:57.21 ID:G4jCKzJ70.net
>>10
禿同

11: サソリ固め(dion軍)@\(^o^)/ 2015/02/12(木) 08:46:59.50 ID:hURcWdkQ0.net
わざと色んな書き方混ぜてクセでばれないようにしてる

45: 垂直落下式DDT(九州地方)@\(^o^)/ 2015/02/12(木) 10:55:39.92 ID:EVduyLwoO.net
>>11
>わざと色んな書き方混ぜてクセが分からなく
これが一番特定しやすい。どの「癖」をチョイスするかに最も特徴が出るので

アルファベットの羅列である英文は特定が難しそう
3種の言語(かな・カナ・仮名)を使う日本語は簡単そう
↑関係ない。見るのは文章ではなく心の動きだから
では、アルファベットの羅列で何種類もの言語のあるソースコードは?
>>8-11も自分が書いたコードと他人が書いたコードが違う事は理解してる
つまりコードにも「癖」は存在する
あとは「癖」を見つけて、分類して、特定する。それだけ

14: 毒霧(東京都)@\(^o^)/ 2015/02/12(木) 08:48:37.10 ID:lOH3uvxx0.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

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%特定される自信あるわ
ソースコードに名前書いてるし


23: メンマ(茸)@\(^o^)/ 2015/02/12(木) 09:10:05.00 ID:HMR+WIU+0.net
名前書いとけよ

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
メーカーやプライベートビルダーで違いが出るのはここだな

32: フライングニールキック(茸)@\(^o^)/ 2015/02/12(木) 09:49:24.36 ID:BAUkP5cD0.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とは、「コードの書き方からまったく
>>影響を受けずに、コードの型の特性をとらえる」もので、つまり、関数の名前、コメント、スペース入れ方などの
>>クセ以上のものを探し出し、作者を特定するカギにする、というわけです。

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

http://hayabusa3.2ch.sc/test/read.cgi/news/1423698076/



コメント

  1. 匿名

    こういうの、文学方面ではもうずっと昔に行われているんだよね。
    特に日本語は漢字の使い方などですごく癖がでるから。

  2. 匿名

    文書だったらどうなるのと思ったけど、やっぱ分かるんだ。

  3. 匿名

    優美清春香菜かな

  4. 匿名

    つい注釈を丁寧に書いてしまうw
    でも結局誰にも見せないんだから自分にわかるだけでいいのにといつも後で思う

  5. 匿名

    まあコンパイルしたらわからないとか言ってる奴もプログラミングしかしたこと無いド素人だな
    メモリの動きとかハードウェアとの関係を全く理解していない証拠

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

post date*

アクセスランキング