戻る

このページは以下URLのキャッシュです
http://blog.livedoor.jp/goldennews/archives/51887793.html


【朗報】 ソースコードの書き方の癖を分析すれば誰が書いたのかほぼ特定できることが判明 - ゴールデンタイムズ



    【朗報】 ソースコードの書き方の癖を分析すれば誰が書いたのかほぼ特定できることが判明
    2015年02月12日 コメント(3) 家電・PC・ソフト 
    1 イス攻撃(栃木県)@\(^o^)/ :2015/02/12(木) 08:41:16.20 ID:LqgHR1r70.net
    精度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



    6 ニールキック(茸)@\(^o^)/ :2015/02/12(木) 08:44:33.62 ID:l2mjmUgH0.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%特定される自信あるわ
    ソースコードに名前書いてるし




    ■関連記事
    俺「きったねープログラムだな書いたの誰だよ」
    http://blog.livedoor.jp/goldennews/archives/51879165.html



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






    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
    わざと色んな書き方混ぜてクセでばれないようにしてる






    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






    18 タイガースープレックス(家)@\(^o^)/ :2015/02/12(木) 08:54:58.82 ID:BW9Bgm8s0.net
    いまだに軍事や情報の世界だと、政府が野良プログラマーや自由主義研究者を
    恐れているというけど、これもその方面のパフォーマンスなのかねぇ。






    19 シューティングスタープレス(茸)@\(^o^)/ :2015/02/12(木) 08:58:59.68 ID:dKznFy/A0.net
    #include /* /dev/ttys */






    25 河津掛け(茸)@\(^o^)/ :2015/02/12(木) 09:13:00.32 ID:ZdlXK84c0.net
    lintで整形しとくのは鉄則ってことか






    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
    自分のソース以外読みにくくて仕方がないってことはそういうことだろうな






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

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






    37 サッカーボールキック(dion軍)@\(^o^)/ :2015/02/12(木) 10:08:26.14 ID:hvLWYA980.net
    学生数が分かってる上に、他のコードと比較も出来る。

    社会経験を経てコピペしたり、犯罪用にクセを隠したりされたら

    何十万人から一人を特定するとか無理でしょ






    39 ファルコンアロー(catv?)@\(^o^)/ :2015/02/12(木) 10:11:59.28 ID:T4zh+jBw0.net
    ゆうちゃん、バレバレですやん






    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とか山ほどいるし自動整形もあるから無理じゃね






    42 ハーフネルソンスープレックス(家)@\(^o^)/ :2015/02/12(木) 10:38:05.37 ID:6SlMyCF30.net
    一文字グローバル変数の時代が来たか






    43 ハーフネルソンスープレックス(家)@\(^o^)/ :2015/02/12(木) 10:38:59.25 ID:6SlMyCF30.net
    オープンソースが前提のコード解析しただけだろ






    44 ハーフネルソンスープレックス(家)@\(^o^)/ :2015/02/12(木) 10:41:54.94 ID:6SlMyCF30.net
    統計的な有意さは、個人を特定するためにあるわけじゃない






    46 マシンガンチョップ(埼玉県)@\(^o^)/ :2015/02/12(木) 11:00:39.65 ID:QpCgUPZY0.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
    これ、当たり前。
    論理設計段階のフローチャートですら癖でるからな。

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






    50 サソリ固め(庭)@\(^o^)/ :2015/02/12(木) 12:33:55.87 ID:udolfTtu0.net
    ソース見られるとか
    スクリプトレベルの話か?






    55 ダイビングヘッドバット(禿)@\(^o^)/ :2015/02/12(木) 13:49:44.26 ID:lLUeNVfD0.net
    俺も変数名にAKBメンバの名前付けちゃうしな〜






    56 ジャーマンスープレックス(庭)@\(^o^)/ :2015/02/12(木) 13:56:31.87 ID:k0bw3sBh0.net
    >>55
    俺の先輩のモーヲタみたいな事やめれ(´・ω・`)

    後から見た人、ドン引くから。






    57 ミラノ作 どどんスズスロウン(茸)@\(^o^)/ :2015/02/12(木) 14:18:57.03 ID:RjG1gUfL0.net
    古いコードのメンテでおにゃんこクラブの名前とかあったらどうしよう…






    59 ニールキック(庭)@\(^o^)/ :2015/02/12(木) 16:22:59.26 ID:7JSD/jU40.net
    10 goto 10






    60 グロリア(やわらか銀行)@\(^o^)/ :2015/02/12(木) 16:58:54.24 ID:A2lpD7UK0.net
    ほぼコピペで作ってるからばれない






    82 張り手(茨城県)@\(^o^)/ :2015/02/12(木) 19:36:31.69 ID:MT+9yiCc0.net
    コピーペーストするだけの奴のはわからん






    61 キングコングラリアット(東京都)@\(^o^)/ :2015/02/12(木) 17:15:46.32 ID:SaxQin9x0.net
    ネット上のサンプルの集合体でもバレるもんなのか






    62 ジャンピングDDT(中国地方)@\(^o^)/ :2015/02/12(木) 17:19:07.81 ID:pac5GcBa0.net
    いまさら記事にするようなことかな
    穴埋めの書き殴りか?






    63 ツームストンパイルドライバー(東京都)@\(^o^)/ :2015/02/12(木) 17:23:31.53 ID:YjUdIeZD0.net
    日本の奴隷はコーディング規約を守っているのでバレません






    66 チェーン攻撃(WiMAX)@\(^o^)/ :2015/02/12(木) 17:41:53.60 ID:dpT7fTdq0.net
    だからこのツールを逆の発想で使えば、コーディング規約守ってるかどうかのチェックに使えるんじゃないの






    64 リバースネックブリーカー(東京都)@\(^o^)/ :2015/02/12(木) 17:25:29.51 ID:nC+KbA3U0.net
    ちょっと前の自分のコードは読み解かないと何をやってるのかよくわからない






    68 シャイニングウィザード(関西地方)@\(^o^)/ :2015/02/12(木) 17:49:13.05 ID:7aTYdhLI0.net
    100人ぐらい居てれば、できる奴が書いたコードは、誰が書いたのかは見ただけで分かる。
    平凡プログラマーとして優秀な奴が書いたコードは、誰が書いたのかはわからないが、
    そんな奴の方が珍しいので、消去法で特定できる。






    67 リバースネックブリーカー(公衆電話)@\(^o^)/ :2015/02/12(木) 17:45:16.59 ID:NcJD2YiA0.net
    PRINT "HELLO WORLD"






    69 ダブルニードロップ(SB-iPhone)@\(^o^)/ :2015/02/12(木) 17:53:44.32 ID:kkEeoOQv0.net
    if(null != var)

    if(var != nll)

    どっちが好き?

    ret = nll
    if(bool){ ret=var }

    if(bool){ ret=var }
    else{ret = nll}

    どっちが好き?






    70 ショルダーアームブリーカー(東京都)@\(^o^)/ :2015/02/12(木) 17:56:40.61 ID:7sCIGv2n0.net
    ret = (bool)?var:nul;






    74 ファイナルカット(禿)@\(^o^)/ :2015/02/12(木) 18:48:15.74 ID:RDhUQw860.net
    >>70
    三項厨死ね






    71 アイアンフィンガーフロムヘル(埼玉県)@\(^o^)/ :2015/02/12(木) 17:58:21.36 ID:mNwmBJ6H0.net
    お前らの環境でコンパイルした跡、バイナリエディタで開いてみ






    83 ダブルニードロップ(SB-iPhone)@\(^o^)/ :2015/02/12(木) 19:38:12.38 ID:kkEeoOQv0.net
    >>71
    最適化効いてたら誰が書いても同じになる






    85 アイアンフィンガーフロムヘル(埼玉県)@\(^o^)/ :2015/02/12(木) 20:56:49.66 ID:mNwmBJ6H0.net
    >>83
    環境に依るのは当然として、実際には可読できるところが結構あったりする。
    自分の作ったパッケージ名、その階層、ライブラリのバージョンとか。
    可読できない部分にもあれこれ指紋を残してる。

    悪いことする奴は当然その辺まで神経使わんといかんから大変だなと






    73 ダイビングフットスタンプ(SB-iPhone)@\(^o^)/ :2015/02/12(木) 18:42:36.48 ID:KuJUQJJe0.net
    大企業のシステムに関わる事が多いから標準化がガッチガチで
    個人の癖を出す隙すら無いです






    75 ローリングソバット(茸)@\(^o^)/ :2015/02/12(木) 18:49:05.13 ID:CNcv+6kz0.net
    そりゃそうさな。自分でも癖があるコードだな〜って思うようなコードを書いてるw。






    80 トペ コンヒーロ(岩手県)@\(^o^)/ :2015/02/12(木) 19:09:08.68 ID:bVYHd1H70.net
    マジで!?
    ごめんなさい
    謝ります






    87 キン肉バスター(新疆ウイグル自治区)@\(^o^)/ :2015/02/12(木) 21:21:38.03 ID:h5I5eu8i0.net
    難読化ツールで変数名とか変換してやればいいじゃないw






    89 ネックハンギングツリー(チベット自治区)@\(^o^)/ :2015/02/12(木) 21:42:12.13 ID:VYRmphn/0.net
    こだわりはあるよ
    if()なら命令文;でもいいけど
    絶対{}で括る
    こうした方が見やすいから
    whileは極力使わない
    無限ループが怖いから
    foreachよりはfor()の方を
    選ぶ
    中の変数をループ内で再利用する時があるから
    など






    91 不知火(東京都)@\(^o^)/ :2015/02/12(木) 22:09:35.57 ID:iJQoWTyC0.net
    最近流行りだかなんだか知らんが
    honya(hanya)をhonya (hanya)
    って ( の前にスペース空けるの何なの?イラッとする






    93 魔神風車固め(庭)@\(^o^)/ :2015/02/12(木) 22:30:15.55 ID:gMFCj92a0.net
    >>91
    目が悪いんだろ






    58 リキラリアット(長野県)@\(^o^)/ :2015/02/12(木) 16:03:17.64 ID:miwyh3hw0.net
    要するに、匿名掲示板に匿名で書いてても「誰が書いたか?」は、意外とバレバレだって事だ。






    52 ボ ラギノール(埼玉県)@\(^o^)/ :2015/02/12(木) 13:07:02.65 ID:Q+ZAF8ga0.net
    エリートN速民ならレスのクセで相手がわかり、
    更に禿か、童貞か、無職かまで判別可能






    53 ミラノ作 どどんスズスロウン(茸)@\(^o^)/ :2015/02/12(木) 13:23:13.47 ID:RjG1gUfL0.net
    >>52
    お前童職童貞の禿だろ






    54 ボ ラギノール(埼玉県)@\(^o^)/ :2015/02/12(木) 13:28:48.33 ID:Q+ZAF8ga0.net
    >>53
    さてはお前生粋のエリートN速民だな?



    http://hayabusa3.2ch.sc/test/read.cgi/news/1423698076/
    リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
    Dustin Boswell Trevor Foucher
    オライリージャパン
    売り上げランキング: 895
    • 「【朗報】 ソースコードの書き方の癖を分析すれば誰が書いたのかほぼ特定できることが判明」をTwitterに投稿する
    • 「【朗報】 ソースコードの書き方の癖を分析すれば誰が書いたのかほぼ特定できることが判明」をいいね!する
    この記事へのコメント
    1. Posted by 以下、金ぴか名無しさんがお送りします。   2015年02月12日 23:29
    ソースコードが第三者に見られていることを念頭に置いて、つかみどころのないコードを書いていく人が増えると特定率は下がる
    2. Posted by 以下、金ぴか名無しさんがお送りします。   2015年02月12日 23:44
    俺が入力したコードは特定し易いだろうな
    我ながら特徴的だもの
    3. Posted by 以下、金ぴか名無しさんがお送りします。   2015年02月12日 23:49
    素性を隠す必要のある場合なんてそれこそウイルス作るときぐらいじゃないの?
    普段のもばれると何か問題あるの?
    素人の疑問だけど
    名前:
      情報を記憶:
    コメント:
     
    ※連投、荒らし、宣伝、不適切と判断されたコメントはNGの対象になります

      【Amazon.co.jp限定】艦隊これくしょん −艦これ− 第1巻 限定版 (描き下ろしイラスト「吹雪&大和」特製フレーム付) [Blu-ray]
      【Amazon.co.jp限定】艦隊これくしょん −艦これ− 第1巻 限定版



      機動戦士ガンダム THE ORIGIN I [Blu-ray]
      機動戦士ガンダム THE ORIGIN I



      【Amazon.co.jp限定】ストライクウィッチーズ Operation Victory Arrow vol.2 エーゲ海の女神 限定版 (後日談ドラマCD「ウィッチ・イズ・ビューティフル」付き) [Blu-ray]
      【Amazon.co.jp限定】ストライクウィッチーズ Operation Victory Arrow vol.2 エーゲ海の女神 限定版


      XenobladeX (ゼノブレイドクロス) 【Amazon.co.jp限定】オリジナルパスケース 付
      XenobladeX (ゼノブレイドクロス)



      Newニンテンドー3DS専用 ゼノブレイド
      Newニンテンドー3DS専用 ゼノブレイド



      世界樹と不思議のダンジョン 先着購入2大特典:マル勝スーパーファミコン2015復活版+サントラCD ラフスケッチVer. 付
      世界樹と不思議のダンジョン



      第3次スーパーロボット大戦Z 天獄篇 (初回生産限定 「第3次スーパーロボット大戦Z 連獄篇」をダウンロード出来るプロダクトコード 同梱) 第3次スーパーロボット大戦Z 天獄篇


      デジモンストーリー サイバースルゥース(初回生産限定 アグモン(黒)&ガブモン(黒)が入手できるプロダクトコード同梱)
      デジモンストーリー サイバースルゥース



      さよなら 海腹川背 ちらり
      さよなら 海腹川背 ちらり



      艦隊これくしょん -艦これ- ねんどろいど 榛名 (ノンスケール ABS&ATBC-PVC塗装済み可動フィギュア)
      艦隊これくしょん -艦これ- ねんどろいど 榛名



      ラブライブ!  ねんどろいど 小泉花陽 (ノンスケール ABS&ATBC-PVC 塗装済み可動フィギュア)
      ラブライブ! ねんどろいど 小泉花陽



      スポンサードリンク

      当サイトについて
      • livedoor Readerに登録
      • RSS
      • livedoor Blog(ブログ)
      Archives
      スポンサードリンク