← 最新の論文
💻 computer science

Detection of LLM-assisted Code Plagiarism Using k-gram Software Birthmarks

本論文は、Javaのオペコードに基づくk-gramソフトウェア・バースマークが、コードのパラフレーズによる課題にもかかわらず、様々なモデルや類似度指標において、LLM支援によるコードの盗用を検出する上で依然として有効であることを実証している。

原著者: Nikolay Fedorov, Akito Monden, Hiroki Inayoshi, Haruaki Tamada, Masateru Tsunoda

公開日 2026-07-07
📖 1 分で読めます☕ さくっと読める

原著者: Nikolay Fedorov, Akito Monden, Hiroki Inayoshi, Haruaki Tamada, Masateru Tsunoda

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

想像してみてください。あなたには、とても美味しいケーキの秘密のレシピがあります。昔は、もし誰かがあなたのレシピを盗もうと思ったら、それを一言一句違わずに書き写さなければなりませんでした。書き方やタイピングが全く同じに見えるため、見つけるのは簡単でした。

しかし今は、超スマートなロボットシェフ(AI)が、あなたのレシピを見て、内容を完全に書き換え、見た目は全く別物なのに味は全く同じになる新しいバージョンを作り出すことができます。フォントを変え、「砂糖」を「甘味料」に置き換え、手順を並べ替え、計量カップの種類も変えてしまいます。人間の目には、まったく新しいレシピのように見えるでしょう。これが、この論文が述べている**LLMによるコード盗用(LLM-assisted code plagiarism)**です。

ここでは、研究者たちがどのようにして、これらの「ロボットシェフ」による盗作を見つけ出したのかを、分かりやすく説明します。

問題点:「魔法の」書き換え

ソフトウェア開発者は、コンピュータへの指示(コード)を書きます。大規模言語モデル(LLM)は、既存のコードを取り込み、それを「パラフレーズ(言い換え)」することができるAIツールです。これらはコードの外観や構造を大幅に変更するため、従来の盗作検知器(単語や行が同一かどうかをチェックするもの)を欺いてしまいます。プログラムは依然として全く同じ動作をしますが、まるで別人が書いたかのように見えるのです。

解決策:「ソフトウェアの出生マーク(Birthmark)」

研究者たちは、書き換えられたコードを人間のように読もうとはしませんでした。代わりに、彼らは**ソフトウェア・バースマーク(Software Birthmarks)**と呼ばれるものを使用しました。

出生マーク(生まれつきの印)を、指紋のようなものだと考えてください。たとえ服を着替えたり、髪型を変えたり、眼鏡をかけたりしても、あなたの指紋は変わりません。

  • 作り方: 彼らはコンピュータの「レシピ」(コード)を取り、それを基本的な機械語の命令(オペコードと呼ばれます)のリストに翻訳し、一度に2から6つの命令という小さな塊(チャンク)に切り分けました。
  • 比喩: 例えば、「The cat sat on the mat.(猫がマットの上に座った)」という文章があるとします。
    • **1-gram(1つの塊)**は、単に「The」「cat」「sat」といった単語です。(これは一般的すぎます。「the」を含む文章は多すぎるため)。
    • **2-gram(2つの塊)**は、ペアになります:「The cat」「cat sat」「sat on」...(よりユニークになります)。
    • **3-gram(3つの塊)**は、3つ組になります:「The cat sat」「cat sat on」...(さらにユニークになります)。

彼らはプログラム全体を、これらの塊の「袋」へと変えました。たとえAIが文章を並べ替えたとしても、特定の種類の塊(指紋)は依然として残っている可能性が高いのです。

実験:最も優れた泥棒は誰か?

研究者たちは、3種類の「ロボットシェフ」(AIモデル)をテストしました:

  1. ChatGPT-5.1-Codex-Mini
  2. DeepSeek-V4-Flash
  3. Claude-Haiku-4.5

彼らは本物のオープンソースのJavaプログラムを取り、それらのAIに書き換えを依頼し、その後、彼らの「指紋」手法を使ってAIを検挙しようと試みました。また、指紋を比較するさまざまな方法(一致する塊の数を数える方法 vs 順序がどれくらい近いかを確認する方法など)もテストしました。

結果:何が有効だったのか?

1. 塊のサイズが重要(「ゴルディロックス(適度な)」ゾーン)

  • 小さすぎる場合(1つの塊): それは、単に「the」という言葉だけで人を特定しようとするようなものです。多くの人がそれを使うため、良い指紋にはなりませんでした。
  • 大きすぎる場合(6つの塊): それは、段落全体を一致させようとするようなものです。もしAIがたった一つの文章を動かしただけで、段落全体が一致しなくなり、指紋が壊れてしまいます。
  • ちょうど良い場合(2または3つの塊): これがスイートスポットでした。これらの小さな命令のグループは、元のコードを特定できるほどユニークでありながら、AIの書き換えにも耐えられるほど頑丈でした。

2. 比較の方法が重要

  • 順序は関係ない: 研究者たちは、命令の順序(例えば、手順が全く同じシーケンスであるかどうかを確認すること)を確認することは、悪いアイデアであることを見出しました。AIは順序をあまりにも激しく入れ替えるため、この方法では失敗したのです。
  • 数を数えることが重要: 最善の方法は、単純に、元のコードと書き換えられたコードの両方に、どれだけのユニークな塊が現れるかを数えることでした(順序に関係なく)。それは、「両方のレシピに『小麦粉』と『卵』が含まれているか?」と言うようなものであり、「卵を小麦粉の前に加えたか?」を確認することではありません。

3. どのAIが最も捕まえにくかったか?

  • ChatGPT-5.1-Codex-Mini が最も巧妙でした。このモデルは、コードを徹底的に書き換えて検知を極めて困難にしながらも、実際に動作する(エラーなくコンパイルできる)コードを生み出していました。
  • 他の2つのAI(DeepSeekとClaude)は、書き換えの際に明らかな「指紋」を残していたため、より検挙しやすいものでした。

まとめ

AIはコードを全く別物に見えるように書き換えることができますが、コンピュータがどのように考えるかという根本的な「DNA」を変えることはできません。機械的な命令の小さくユニークなパターン(バースマーク)を確認し、それらがいくつ一致するかを数えることで、たとえ犯人が犯罪を隠蔽するために超スマートなロボットを使っていたとしても、私たちはそれでも捕まえることができるのです。

この論文は、小さなコードの塊(2または3つの命令)を使用し、コードが「どこにあるか」ではなく「何があるか」に焦点を当てることで、この手法が現代のAIによる盗用に対して効果的に機能すると結論付けています。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →