X



ソースコードは人を表す!? 機械学習を使い、96%の精度でコードから個人を識別することが可能に
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@涙目です。(宮城県) [US]垢版2018/08/13(月) 21:03:35.41ID:O3/1suhR0●?PLT(13121)

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

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

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/
0003 ◆65537PNPSA (宮城県) [DE]垢版2018/08/13(月) 21:09:29.46ID:HVUSCcqX0
変数が女性の名前なプログラムをメンテした事がある。
あとflgAって変数名なのにカウンタだったりとか
死ねって思った
0005名無しさん@涙目です。(青森県) [US]垢版2018/08/13(月) 21:09:52.44ID:YKDn7kLg0
いやでもマジ、ソースは人の心を写すよ
どんなに上辺繕ってもダメさ
0008名無しさん@涙目です。(青森県) [US]垢版2018/08/13(月) 21:13:05.23ID:YKDn7kLg0
上手い人のソースは本当にきれいだからな、思考に迷いが無いというか
0009 ◆65537PNPSA (宮城県) [DE]垢版2018/08/13(月) 21:14:25.97ID:HVUSCcqX0
>>8
でも天才の書いたソースコードって理解できないよな。
なんでたったこれだけで動くねん。
0010名無しさん@涙目です。(東京都) [DE]垢版2018/08/13(月) 21:15:58.62ID:BuQG8QSG0
自分が書いて、コメント入れてるのに、見返すとわからんわ
0014名無しさん@涙目です。(青森県) [US]垢版2018/08/13(月) 21:17:37.68ID:YKDn7kLg0
>>9
設計だろね、仕様書を噛み砕いてきれいに再構築するんよ
行き当たりばったで書く俺の生成物と違うのを知って、勝てないと思ったわ
0018名無しさん@涙目です。(三重県) [ニダ]垢版2018/08/13(月) 21:19:37.44ID:hY8kNnbM0
Sub nurupo

End
0019名無しさん@涙目です。(茸) [BR]垢版2018/08/13(月) 21:19:46.57ID:eIBHygTD0
なにこの犯人探し
0021名無しさん@涙目です。(アメリカ合衆国) [ニダ]垢版2018/08/13(月) 21:22:00.37ID:J/KOW9aP0
お前らが自作自演したカキコミだって
クセがあってバレるよな
0022名無しさん@涙目です。(dion軍) [US]垢版2018/08/13(月) 21:22:53.20ID:HwOidhuf0
そもそも新規よりも修正が多く
新規も似たようなシステムのプログラムを改変する形で作る俺は
前任者のコードに感化されやすくて困るわw
0024名無しさん@涙目です。(catv?) [US]垢版2018/08/13(月) 21:25:55.91ID:6oSzUy6Q0
/* 以下絶対触るな */
0025名無しさん@涙目です。(三重県) [US]垢版2018/08/13(月) 21:25:58.61ID:T/eBEjYT0
ソースコードは知らんが文章である程度誰が書いたか
判別できるのと同じじゃあないのか。
0027名無しさん@涙目です。(空) [CN]垢版2018/08/13(月) 21:28:35.68ID:FmQP6NJG0
これで動くかな?
この実装で大丈夫かな?
って感じで進めるので、
気付いたときには、行き当たりばったりの設計で、
後戻りできない状態になっている。
0028名無しさん@涙目です。(東京都) [US]垢版2018/08/13(月) 21:28:41.45ID:ltLkRnT80
あーまー、これ、な。
社内のメンテナンスやってると、誰が書いたコードか分かる時あるわ。
なんとなく癖って言うか、変数の持たせ方とか、アルゴリズムとか、インデントとか、なんとなくな。
0029名無しさん@涙目です。(埼玉県) [US]垢版2018/08/13(月) 21:28:50.51ID:l2YISbsD0
 
/* ここで時々エラーになるのって半分アベのせいだろ? */

 
0030名無しさん@涙目です。(静岡県) [US]垢版2018/08/13(月) 21:32:35.49ID:LMy/b1kT0
これはわかるな。
考え方や、組み立て方に癖があるからな。
0031名無しさん@涙目です。(千葉県) [US]垢版2018/08/13(月) 21:35:56.71ID:Znl55XbN0
君、変な所で改行挟む癖あるよね
これすっげー見辛いからやめてくれる?
0032名無しさん@涙目です。(静岡県) [US]垢版2018/08/13(月) 21:36:45.44ID:LMy/b1kT0
1,$s/\n//g

これで改行が消えてあっという間に読めないソースに。でもコンパイルはできるよ。
0033名無しさん@涙目です。(岐阜県) [US]垢版2018/08/13(月) 21:36:57.25ID:KmfCTiwp0
言語だしそうなるわな
0034名無しさん@涙目です。(catv?) [GB]垢版2018/08/13(月) 21:38:41.26ID:VxBghsmE0
一部パクってるとどうなるんや
0036名無しさん@涙目です。(青森県) [US]垢版2018/08/13(月) 21:43:29.00ID:YKDn7kLg0
>>34
拾いからパクったソースの擦り合わせの箇所で無茶してる
なんてのが最近のお若いPGさんでは普通になってるよ
吸収できてないのがバレバレ
0037名無しさん@涙目です。(茸) [US]垢版2018/08/13(月) 21:43:38.92ID:Rh1rbNTJ0
品質が揃わないのはそういう事だろうな。
0041名無しさん@涙目です。(千葉県) [US]垢版2018/08/13(月) 21:49:52.12ID:sqj52FZ10
まあハリーポッターの作者が別名で小説書いてたの機械学習で識別できたぐらいだからね
プログラムソースなら余裕でできるっしょ
0042名無しさん@涙目です。(SB-iPhone) [US]垢版2018/08/13(月) 21:50:27.10ID:nvGiPgp30
linuxなんか使った事無かったのに、vimのキーボードオペレーションが、ドキュメントを見なくてもスルスル使えた俺は、pdp11に繋がったダム端末からアセンブラコード打ち込んでた過去があった事を思い出した。
0044名無しさん@涙目です。(青森県) [US]垢版2018/08/13(月) 21:54:00.14ID:YKDn7kLg0
>>43
その程度は現場によりなんでなんとも
スタイルチェックは大事
0046名無しさん@涙目です。(庭) [US]垢版2018/08/13(月) 21:56:21.60ID:VubeySd40
君、変なところで改行挟む癖あるよね
これすっげー見辛いからやめてくれる?
0051名無しさん@涙目です。(家) [SG]垢版2018/08/13(月) 22:15:26.46ID:+6l2+s3D0
厳密に文法が決まってなくてかなり自由だからな
それ故他人の書いたコードはクソ読みにくい
0053名無しさん@涙目です。(庭) [GB]垢版2018/08/13(月) 22:30:25.26ID:vc7VyjPM0
コピペソースばっかだから特定は無理だと思つぞ
0054名無しさん@涙目です。(dion軍) [CA]垢版2018/08/13(月) 22:31:45.35ID:GTr1AvAE0
>>53
規則に統一性がない事も判断指標にされるんじゃないの
0057名無しさん@涙目です。(福岡県) [RU]垢版2018/08/13(月) 22:52:34.68ID:zSGKAQGY0
絶対無理
0058名無しさん@涙目です。(庭) [GB]垢版2018/08/13(月) 22:55:09.77ID:vc7VyjPM0
>>55
会社のサイトのソースってHTMLっすか!!
貴重品ですからGifHubにすぐ登録して後悔してください!!
0060名無しさん@涙目です。(家) [US]垢版2018/08/13(月) 23:13:18.76ID:dLQaMyr10
無理やりラムダ式使おうとして可読性悪い意味不明なコードになってるの見かけると初学者が覚えたての使いたかったんだなと実装者の心理が透けて見えて面白い
0061名無しさん@涙目です。(チベット自治区) [US]垢版2018/08/13(月) 23:18:00.85ID:jka1CcF/0
読みやすいコードと速いコードは
逆相関するからなぁ
0063名無しさん@涙目です。(やわらか銀行) [JP]垢版2018/08/14(火) 00:51:06.53ID:w8X8HUHd0
>>49
ifとelseの頭は揃えるべきだよな
0064名無しさん@涙目です。(空) [CN]垢版2018/08/14(火) 01:08:51.59ID:nfaAYOzQ0
業務プログラムに変な拘り持ち込むのが困る。
他人が手を入れないフレームワーク作るような人なら良いけど。
0066名無しさん@涙目です。(東京都) [VN]垢版2018/08/14(火) 01:49:55.38ID:Y2/u2s4v0
口を開けばコーディングがどーのこーの今現在のトレンドはうんたら〜とか
言ってる奴が一番バグ出してる
あいつ会社から出ていってほしい
0067名無しさん@涙目です。(大阪府) [SE]垢版2018/08/14(火) 04:03:31.59ID:7lde2CQL0
>>17
なに?その人VGAの解像度でエディタ使ったりしてるの?
0068名無しさん@涙目です。(茸) [KR]垢版2018/08/14(火) 04:13:54.84ID:JwZB1o7C0
新宿古着屋ワタナベにそんなもの書けるわけないでしょうダイバクショウ
ヤフオクの表組さえ破綻してんですからダイバクショウ
0069名無しさん@涙目です。(庭) [US]垢版2018/08/14(火) 05:02:01.66ID:0NDkWm6/0
>>55
面白いね。動作結果も作った人の性格の影響出れば面白いんだけどな。
0072名無しさん@涙目です。(チベット自治区) [US]垢版2018/08/14(火) 08:16:53.59ID:dXX4Hyub0
そんなのコミット履歴見れば良いだけ
0073名無しさん@涙目です。(空) [SE]垢版2018/08/14(火) 08:37:07.94ID:avdy8vtX0
>>9
それは趣味の人が書いたプログラムではないかな?
メンテナンスを考えたら、後の人が理解しやすい記述を心がける。
例えば if( ( a=1 && b=1 ) || (c==1 && d==1) ) みたいに
中の括弧はプログラムでは効果ないけど、人は見やすい。
0074(福岡県) [CA]垢版2018/08/14(火) 08:42:40.61
AI「変なところで改行挟んであるからあの派遣だわw」
0076名無しさん@涙目です。(静岡県) [US]垢版2018/08/14(火) 08:59:56.64ID:7z++M/V80
>>73
自社のコーティング規約だと&&もカッコで分離せんとあかんw
a=(2*3)+4; ←さすがにクドくね?
0077名無しさん@涙目です。(静岡県) [US]垢版2018/08/14(火) 09:05:47.95ID:7z++M/V80
>>75
アセンブラ必須のコードを書く時って、まずCで書いてコンパイルしてからコードを盗んだ方が効率よかったりするw
厄介なのはパイプラインにおける投機実行だね

条件分岐
命令 ←ここに来ない時も実行される
0078名無しさん@涙目です。(茸) [ニダ]垢版2018/08/14(火) 09:13:55.02ID:J1YV7hB70
>>75
パイプラインじゃなくてメモリのウェイト、キャッシュ、割り込みじゃね。
そも水晶クロックが不正確なので高精度な周期を得たいならGPSのパルスとかが必要だな。
0079名無しさん@涙目です。(東京都) [US]垢版2018/08/14(火) 09:33:10.96ID:tNFv2ta30
>>76
算術加減算の優先順位はさすがに忘れないが、
論理演算の優先順位なんて覚えているプログラマーは少数派だ。
0080名無しさん@涙目です。(静岡県) [US]垢版2018/08/14(火) 09:40:43.13ID:7z++M/V80
>>79
「そんくらい覚えてるだろ?」って人もいて、そーゆー人が謎のコード書くんで全部が全部ダメになったんだろなw

んで、QACとか言うコードチェッカーが義務付けられてて、1+2*3なんて書くと「カッコつけれや」ってエラー(ワーニング)になるw
0084名無しさん@涙目です。(静岡県) [US]垢版2018/08/14(火) 17:41:24.59ID:7z++M/V80
>>83
なぜ、そこでフラグをクリアしてるかわからない。
どう考えてもいらないと思うんだが削除は怖い、って処理は確かにあるw
0087名無しさん@涙目です。(静岡県) [US]垢版2018/08/14(火) 18:18:03.75ID:7z++M/V80
>>86
カッコいいモジュール名決めるためだけに時間潰す自分がいるw
0089名無しさん@涙目です。(東京都) [US]垢版2018/08/14(火) 18:27:43.55ID:IR4ugev40
>>86
グローバル変数でも無い限り、枯渇とかあり得ないから。
0092名無しさん@涙目です。(dion軍) [CA]垢版2018/08/14(火) 18:32:39.80ID:51xhAK120
>>89
アスペか
役割が全く違うけど適切だと思えるネーミングがバッティングする事なんてよく起こるわ
変数名というよりもクラス名だけど
0093名無しさん@涙目です。(チベット自治区) [CN]垢版2018/08/14(火) 18:36:16.28ID:GgzZaDu10
「このソースコード…まさか、伝説の苺キンタマウイルスの作者か!?」
0094名無しさん@涙目です。(東京都) [US]垢版2018/08/14(火) 18:56:02.08ID:IR4ugev40
>>92
ネームスペース違うから普通はぶつからない。
0095名無しさん@涙目です。(東京都) [US]垢版2018/08/14(火) 18:58:44.68ID:IR4ugev40
ローカル変数がぶつかるって、複数の機能を一個の関数に詰め込んでる証拠だから。
0097名無しさん@涙目です。(新疆ウイグル自治区) [US]垢版2018/08/15(水) 01:58:36.58ID:30/M2DlE0
TO DOしか書いてないコメントのことかー!!!
0098名無しさん@涙目です。(庭) [ニダ]垢版2018/08/15(水) 02:02:05.35ID:8yZuGmWn0
まぁそうだろうな。変数の名前やコメントの書き方だけで識別できそうな気がする
0099名無しさん@涙目です。(愛知県) [NI]垢版2018/08/15(水) 03:06:52.72ID:hO1uMCEA0
>>76
そんなこと言い出したら
「=」だって代入演算子なわけだから
a=((2*3)+4); って書かなきゃ
規則の整合性が取れなくなるぜ
0100名無しさん@涙目です。(静岡県) [ニダ]垢版2018/08/15(水) 03:21:38.72ID:c3V6JMyg0
>>17
Linuxのコーディングスタイルだからな
採用してるところは多そう
0102名無しさん@涙目です。(静岡県) [US]垢版2018/08/15(水) 09:34:07.12ID:RIm+NAMT0
>>99
そっちが推奨されてるけど、コードチェッカーに引っかからないんで流石にスルーしてるw
0103名無しさん@涙目です。(dion軍) [CA]垢版2018/08/15(水) 09:42:48.40ID:4iczfTkb0
論理演算子やビット演算子の優先順位や結合性は
言語や時代、コンパイラによって異なるモノまであるんだから計算意図を明確にするなんて当然やで
0104名無しさん@涙目です。(東京都) [US]垢版2018/08/15(水) 12:28:23.88ID:IVGldtuY0
不要なカッコを禁止している規約があって、呆れた思い出。
return (hoge);
がダメ、当然、
#define BAD_CASE (-1);
もダメ。
ああ、副作用怖く無いんだろうなぁ
0107名無しさん@涙目です。(catv?) [ニダ]垢版2018/08/15(水) 13:09:07.81ID:0W9uKAhg0
>>49
なるほど
それで記述してたから直すわ
といっても、趣味だから誰もソースなんて見ないけど
0111名無しさん@涙目です。(SB-iPhone) [US]垢版2018/08/15(水) 16:08:15.35ID:BIH3BZAa0
あ、#defineの最後って、セミコロン必要だっけ?
0115名無しさん@涙目です。(チベット自治区) [ニダ]垢版2018/08/15(水) 19:13:51.09ID:ItySOLpC0
>>83
else if節で何故か異常動作してて
elseで改行して次行からif文書くと何故か上手く動いた事があって
なんでそれで上手く行くのかさっぱりわからないから
コメントに「変更しちゃダメ!」って書いておいたw
0116名無しさん@涙目です。(静岡県) [US]垢版2018/08/15(水) 21:11:20.69ID:RIm+NAMT0
>>115
デバッガでアセンブルコードを表示して、両方を比べると差があるかもだね。
組み込み制御だとユーザー数が少ないからなのかコンパイラのバグ情報が結構あって、これが定期的に流れてくる。
多くは最適化のバグ。
なので、規約で最適化なしか(速度容量的に無理なら)最低にする事になってる。
0117名無しさん@涙目です。(福井県) [JP]垢版2018/08/16(木) 11:43:04.86ID:8r+ncArd0
冒頭にコメントで名前書いてるしな
0118名無しさん@涙目です。(SB-iPhone) [GB]垢版2018/08/16(木) 12:07:23.75ID:v9/0EhcV0
名前とか日付とかコメント書くし
0120名無しさん@涙目です。(SB-iPhone) [US]垢版2018/08/16(木) 13:41:45.61ID:NNKzV/350
>>116
ガラパゴスCPU使ってるからだろ。
ARM使えよ。
0121名無しさん@涙目です。(静岡県) [US]垢版2018/08/16(木) 15:00:03.15ID:j5n52hMs0
>>120
コアがARMのSOC多くね?
バグはチップと言うより開発環境によるけど。
0122名無しさん@涙目です。(SB-iPhone) [US]垢版2018/08/16(木) 15:03:58.83ID:NNKzV/350
>>121
ARMならメジャーなコンパイル環境幾らでもあんぞ。
0123名無しさん@涙目です。(静岡県) [US]垢版2018/08/16(木) 15:07:02.73ID:j5n52hMs0
>>122
商売だと会社指定になるんで選べない。
それと、メジャーコンパイラにもバグ情報結構あって、サポート契約してると流れてくるよ。
コンパイラが何がしらのバージョンアップする理由のひとつだね。
0124名無しさん@涙目です。(静岡県) [US]垢版2018/08/16(木) 15:10:27.43ID:j5n52hMs0
>>122
サポート契約してるとチェッカーが入手できるんだけど、これかけるとバグになるパターンが警告される。
当たり前のパターンはテストされつくしてるからコーティング規約がしっかりしてればエラーにはならない。

「そんな書き方するかよ」ってコードが対象だね。
0126名無しさん@涙目です。(静岡県) [US]垢版2018/08/16(木) 16:51:00.54ID:j5n52hMs0
>>125
だね。
使ってるCPU(Soc)はJADEとかEmerldとかRcarなんだけど、コアは全部ARMだったりする。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況