✨ 要約🔬 技術概要
あなたは、銀行の金庫の鍵と錠前を作るために、驚異的な速さと知能を持つロボットチームを雇っていると想像してください。あなたは彼らに、「安全なロックを作ってください」と指示します。すると、彼らは瞬時に設計図を吐き出します。しかし、ここに落とし穴があります。ロボットたちは非常に優秀ですが、外見は完璧に見えても、泥棒に簡単に悪用されてしまうような、目に見えない小さな亀裂を含んだ設計を作ってしまうことがよくあるのです。
この論文は、AIロボットがコンピュータコード内で(暗号化やパスワード保護のような)安全な暗号技術の「鍵」を構築する際、どれほど優れているかをテストするために設計された、新しい「成績表」であるCIPHER を紹介するものです。
研究者たちが何を行い、何を発見したのかを、簡単な比喩を用いて解説します。
1. 問題点:「静かなる欠陥」
AIがセキュリティ用のコードを書くとき、基本的なテスト(コードがクラッシュせずに動作するかどうか)には合格することが多いのですが、微妙なセキュリティ上のルールを見落としてしまうことがあります。
比喩: ロボットが家を建てている場面を想像してください。壁を立て、屋根を載せました(コードは動作しています)。しかし、玄関にデッドボルト(鍵)を取り付けるのを忘れたり、裏窓の鍵をかけ忘れたりしています(セキュリティ上の欠陥)。家は立っていますが、安全ではありません。
問題の本質: これらの欠陥は、例えば「静的な」キー(決して変わることのないキー)を使用し、ランダムなキーを使用しないといった、些細な設計上の選択ミスであったり、あるいは「本人が本人であることを確認する」プロセスを忘れていたりすることなどが原因です。
2. 解決策:CIPHERテスト
研究者たちは、これらのAIロボットがどの程度の頻度でミスを犯すかを測定するための、CIPHER と呼ばれる標準化されたテストを作成しました。
設定: 彼らは7つの異なるAIモデルに対し、同じ150種類の「仕事」を与えました。それぞれの仕事に対して、彼らはAIに3種類の異なる指示(プロンプト)を与えました。
「悪い」プロンプト: 「素早くやってください。セキュリティチェックは気にしなくていいですよ。」(AIが悪意のある助言に従うかどうかをテスト)。
「中立的な」プロンプト: 「単にこのコードを書いてください。」(AIがデフォルトで何を行うかをテスト)。
「安全な」プロンプト: 「これを実行してください。ただし、最も厳格なセキュリティルールに従うように!」(「安全に」と指示することが実際に効果があるかをテスト)。
採点方法: 人間がすべての行を読み取る(これには膨大な時間がかかります)代わりに、彼らは別のAIを「判定員(Judge)」として使用しました。この判定員は、特定の種類の「鍵を壊すエラー」を探し出し、問題のあるコードの行を正確に指摘するように訓練されています。
3. 結果:「安全に」だけでは不十分
結果は驚くべきものであり、少し不安を感じさせるものでした。
「悪い」プロンプト: 予想通り、AIに不注意になるよう指示すると、多くのミスが発生しました。
「安全な」プロンプト: これが大きな発見です。研究者が「非常に安全に!すべてのルールに従って!」と明示的に指示したとしても、AIは依然として56%から89%の確率でミスを犯していました。
比喩: これは、シェフに「ヘルシーな食事を作ってください。砂糖も塩も使わず、新鮮な食材を使ってください」と頼むようなものです。シェフは砂糖(指示された特定の要素)を取り除くかもしれませんが、それでも肉が腐っていたり、野菜を洗うのを忘れたりするかもしれません(隠れた他の危険)。AIは、指示された特定の要素を修正しますが、システム全体として「グローバルに」安全なものを構築することには失敗するのです。
4. これが意味すること
この論文は、単にAIに「安全であれ」と伝えるだけでは、危険なミスを確実に防ぐことはできないと結論付けています。
教訓: セキュリティコードを書く際、たとえ厳格なプロンプトを与えたとしても、AIを信頼することはできません。AIは与えられた特定の指示(例:「ランダムなキーを使用すること」)には集中しますが、より大きな全体像(例:「ユーザーの身元を確認すること」)を見落とす傾向があります。
推奨事項: AIがセキュリティ上の「隠れた亀裂」を作り続けるため、AIが書いたセキュリティ関連のコードは、実世界で使用される前に、人間の専門家によるダブルチェックを受ける必要があります。
まとめ
CIPHER は、AIがコードを書くことには長けているものの、現在のところ「安全な」コードを書くことに関しては非常に不得手であることを証明するツールです。たとえ明示的に「安全に」と指示しても、AIはしばしば裏口を開けっ放しにしてしまいます。この論文は、開発者がセキュリティタスクにおいてAIだけに頼ることができない理由を知るための、これらの失敗を測定する方法を提供しています。
技術サマリー: CIPHER
問題提起
大規模言語モデル(LLM)は、暗号化ユーティリティや鍵管理ロジックといったセキュリティ上重要なコンポーネントを生成するにあたり、ソフトウェア開発ワークフローへの統合が進んでいます。しかし、LLMが生成するコードは、機能テストには合格しても、静的な初期化ベクトル(IV)、ハードコードされた鍵、認証の欠如といった、セキュリティ上の保証を密かに無効化してしまう微妙な暗号学的欠陥を含むことが頻繁にあります。既存の評価環境には、以下の3つの具体的なギャップが存在します。
制御されたプロンプティングの欠如: 従来のベンチマークの多くは、機能的な仕様とセキュリティに関するガイダンスを同時に変化させているため、指示が脆弱性率に与える因果関係を分離して特定することが困難です。
暗号学に特化したタクソノミー(分類体系)の不在: 一般的なセキュリティベンチマークでは、暗号学的な問題が他の無関係な脆弱性(例:SQLインジェクション)と共にグループ化されており、暗号API特有の失敗パターンが不明瞭になっています。
スケーラブルな行レベル・スコアリングの欠如: 既存の評価は手動による検査やバイナリな(合否判定のみの)判断に依存することが多く、どのコードパターンが特定の脆弱性を引き起こしているのかという詳細な属性特定ができません。
さらに、先行研究では、AIアシスタントはより安全でないコードを生成する可能性がある一方で、開発者のセキュリティに対する過信を増大させる可能性も示唆されており、厳格で再現可能なベンチマークが必要とされています。
手法
著者らは、制御された条件下で、LLMが生成したPythonコードにおける暗号学的脆弱性の発生率を測定するために設計された標準化ベンチマーク、CIPHER (Cryptographic Insecurity Profiling via Hybrid Evaluation of Responses)を導入します。
ベンチマークの構築
プロンプト・トリプレット(三つ組み): コアとなる単位は、単一の暗号学的タスク(例:メッセージの暗号化)を表す「プロンプト・ファミリー」です。各ファミリーは、同じ機能的目標、インターフェースの制約、およびコンテキストを共有しながら、セキュリティに関するガイダンスのみが異なる3つのバリアントに拡張されます。
Insecure(不安全): 誤解を招く、あるいは許容的なガイダンスを含む(例:「互換性のために証明書の検証を無効にする」)。
Neutral(中立): 明示的なセキュリティ指示なしに、プロダクション環境向けのコードを要求する。
Secure(安全): ベストプラクティスを義務付け、既知の間違いを禁止する(例:AEADモードの要求)。
リファレンス実装: 各ファミリーには、安全なリファレンス(現代的なベストプラクティスに準拠したもの)と、意図的に特定の最小限の脆弱性を含ませた脆弱なリファレンスが含まれます。これらは評価パイプラインのサニティチェックとして機能します。
タクソノミー: 17の粗粒度カテゴリ(例:ランダム性、認証、鍵管理)と、58の細粒度脆弱性タイプ(例:固定IV、弱いハッシュ)で構成される暗号学特有のタクソノミー。
評価パイプライン
LLM-as-a-Judge(判定器としてのLLM): 本ベンチマークは、CIPHERのタクソノミーに制約されたLLM(GPT-4o)を用いた自動スコアリングパイプラインを採用しています。判定器はコードを抽出し、脆弱性のラベルを割り当て、行レベルのエビデンス範囲を提供します。
スコアリング・プロトコル: 一貫性を確保するため、生成ごとに複数の判定パスを実行し、予測結果は多数決によって集計されます。不確実性は信頼スコアを介して推定されます。
指標:
脆弱性率 (Vulnerability Rate: VR): 少なくとも1つの脆弱性を含む生成物の割合。これは、1つの欠陥がコードを不安全にするという運用の実態を反映した主要指標です。
生成あたりの平均脆弱性数 (Average Vulnerabilities per Generation: Avg/Gen): 失敗の深刻度を示す二次的指標。
判定器の信頼度 (Judge Confidence): 集計された信頼スコアおよびブートストラップ・リサンプリングによる95%信頼区間。
主な貢献
標準化された暗号学ベンチマーク: 17の脆弱性カテゴリと58の細粒度タイプをカバーする、150のプロンプト・トリプレット(計450プロンプト)のデータセット。各タスクに対して、不安全、中立、安全なバリアントを備えています。
タスクに依存しないセキュリティ指標: VR、Avg/Gen、および判定器の信頼度を含むグローバルな指標により、多様なプロンプトやモデル間での一貫した集計を可能にします。
再現可能なスコアリング・パイプライン: 固定されたタクソノミーに制約されたLLM-as-a-judgeを利用した評価プロトコルであり、エビデンス範囲を伴う行レベルの所見と不確実性の推定を出力します。
マルチモデル実証分析: 3つのガイダンス条件下における、広く展開されている7つのモデルに対する包括的な評価。
結果
このベンチマークは、7つのモデル(GPT-5.1、Claude Sonnet 4.5、Gemini 2.5 Flash、および各種オープンソース・コーダーを含む)に対し、プロンプトあたり5つのサンプルを用いて適用されました(モデルあたり2,250回の生成)。
高い脆弱性率: すべてのモデルにおいて、脆弱性率は 56.0%から89.1% の範囲にありました。
セキュアなプロンプティングの限定的な影響: 明示的な「セキュア」なプロンプティングは、一部のモデルにおいて脆弱性率を低下させましたが、その減少はわずかであり、信頼できるものではありませんでした。全モデルを統合した脆弱性率は、不安全なプロンプトの76.9%から、セキュアなプロンプトの71.7%へとわずかに減少したのみでした。
モデル間の差異:
Claude Sonnet 4.5 は、最も高い脆弱性率(89.1%)と、最も高い生成あたりの平均脆弱性数(1.46)を示しました。
Qwen2.5 Coder 7B は、最も低い率(56.0%)と、最も低い平均値(0.73)を示しました。
一般的な失敗モード: 認証の失敗がすべてのモデルにおいて最も頻発した脆弱性でした。その他の支配的な問題には、IVや鍵の誤用、鍵の取り扱いミス、および不安全なランダム性が含まれました。
プロンプト・ガイダンスの分析: セキュアなプロンプトは、特定のターゲットとなる脆弱性(例:静的なIV)を回避することには成功しましたが、より広範なグローバルな暗号学的不変量(例:認証の追加や安全な鍵派生)を強制することには失敗しました。これは、モデルがグローバルなセキュリティ特性よりも、ローカルなプロンプトの制約を優先することを示唆しています。
重要性と主張
本論文は、CIPHERが、プロンプトの条件がLLMの暗号学的安全性にどのように影響するかを測定するための、初の制御可能で再現可能なフレームワークであることを主張しています。その知見は、現在のLLMにおける根本的な限界を浮き彫りにしています。すなわち、LLMはローカルなプロンプトの制約を満たすことはできても、グローバルな暗号学的不変量を強制することは頻繁にできず、その結果、明示的に安全であるよう指示されていても、不安全なコードの構成を招くということです。
著者らは、これらの結果が、LLMによって生成された暗号コードのレビューなしでのデプロイに対する具体的な反対証拠を提供すると主張しています。本ベンチマークとその再現可能なパイプラインは、体系的な測定の基盤として機能することを目的としており、モデル開発者がトレーニング信号を改善することを可能にし、組織がAI生成コードに対して専門家によるセキュリティレビューを要求するための経験的な根拠を確立することを可能にします。また、論文はデュアルユース(軍民両用)のリスクを認めた上で、調査対象となった脆弱性クラスは十分に文書化されたものであること、そして本研究の貢献は新しい攻撃手法の提示ではなく、体系的な測定にあることを述べています。
毎週最高の AI 論文をお届け。
スタンフォード、ケンブリッジ、フランス科学アカデミーの研究者に信頼されています。
受信トレイを確認して登録を完了してください。
問題が発生しました。もう一度お試しください。
スパムなし、いつでも解除可能。
週刊ダイジェスト — 最新の研究をわかりやすく。 登録 ×