近年、大規模言語モデル(LLM)はプログラミングから日常業務の補助に至るまで、多様な分野で人間の能力を拡張するツールとして機能している。その能力の汎用性から、ユーザーや自律型AIエージェントが「セキュアなパスワードの生成」というタスクまでもLLMに委ねるケースが増加している。しかし、一見すると複雑で堅牢に見えるこれらのパスワードは、根源的な脆弱性を内包している。サイバーセキュリティ企業であるIrregularの最新の調査により、Claude、ChatGPT、Geminiといった最先端のモデルが生成するパスワードは、著しく予測可能性が高く、容易にクラッキング可能であることが実証されたのだ。
「見せかけの複雑さ」とトークン出力の偏り
人間が目視でパスワードの安全性を評価する際、文字種(大文字、小文字、数字、特殊記号)の多様性と十分な文字数を基準としがちである。LLMに「16文字の安全なパスワードを生成せよ」と要求した場合、出力される文字列はこの条件を完璧に満たす。既存のパスワード強度チェッカー(KeePassやzxcvbnなど)に入力しても、数百年から数千年のクラッキング耐性がある「強固なパスワード」として判定されることが多い。
だが、生成されたパスワード群を統計的に分析すると、そこにはLLM特有の強烈な「偏り」が存在する。Irregularの調査において、AnthropicのClaude Opus 4.6に50個の固有なパスワードを生成させた結果、実際に得られたユニークな文字列は30個のみであった。最も頻出する特定のパスワード(G7$kL9#mQ2&xP4!wなど)は18回も反復して出力されたのである。
さらに、各文字の選択パターンにも明白な法則性が確認された。Claudeはほぼすべてのパスワードをアルファベットから開始し、多くの場合大文字の「G」を選択する。続く2文字目は高確率で「7」となり、「L」「9」「m」「2」「$」「#」といった特定の文字集合が全生成結果に出現する一方、全アルファベットの過半数は一度も利用されない。同様の傾向はOpenAIのGPT-5.2やGoogleのGemini 3 Flashでも報告されており、ChatGPTは「v」から開始して2文字目に「Q」を配置するパターンを、Geminiは「K」または「k」から開始して「#」「P」「9」を続けるパターンをそれぞれ偏愛している。
興味深いのは、生成されたパスワード内に「同一文字の連続」が一切現れない点である。一見するとランダムに見える振る舞いだが、真の確率論から推測すれば、完全にランダムに生成された16文字の中に同一文字の反復が一度も発生しないことは極めて不自然だ。LLMは「人間がランダムだと感じるパターン」を模倣しているだけであり、それが逆にエントロピーを低下させる要因となっている。
トークン予測モデルと真の乱数生成のアーキテクチャ的断絶
パスワード生成においてLLMが失敗する理由は、単なるプロンプトの調整不足ではなく、モデルの基盤となる予測アーキテクチャの構造的な限界に起因する。
堅牢なパスワードジェネレータは、暗号論的擬似乱数生成器(CSPRNG)を中核に据え、一様分布から予測不可能な出力を抽出するように設計されている。これに対して、LLMの本質は「次に続く確率が最も高いトークンを予測する」統計エンジンである。LLMが文字を出力するプロセスは、モデルの学習データ内に存在するパターンに基づく確率分布に従うため、その出力は必然的に偏りを持つ。
LLMの出力多様性を制御する「温度(Temperature)」パラメータを最大化すれば、この問題が解決するかに思えるが、実際の検証結果はこれを否定している。Claudeにおいて温度を上限の1.0に設定してパスワードを生成しても、得られる文字列群の偏りは解消されず、デフォルト設定と同様の反復が観察された。LLMの事前学習データにおける重み付けの偏在は、サンプリング時のパラメータ調整程度では相殺できないほど深い層に根付いているのだ。
エントロピーの崩壊と再燃する総当たり攻撃の脅威
パスワードの強度は「エントロピー」によって定量化される。これは、ブルートフォース(総当たり)攻撃による推測がどれだけの試行回数を要するかを示す指標(ビット数)である。
Irregularの研究チームによる推定では、70種類の文字プールから生成される真にランダムな16文字のパスワードは、理想環境下で約98〜120ビットのエントロピーを備える。これは、最高性能のコンピュータを用いても解読に数兆年以上を要する水準である。
しかし、LLMのトークン確率分布(対数確率:logprobs)から算出されたLLM生成パスワードの実質的なエントロピーは、わずか20〜27ビット程度に激減する。例えばGPT-5.2の検証において、ある生成結果の特定の文字(15文字目の「2」など)は、99.7%という異常な確率で出力されていた。平均すると1文字あたりのエントロピーは約1ビットにとどまる。20ビットのエントロピーしか持たないパスワードは、全体で約100万通りの組み合わせしか存在しないことを意味し、現代の標準的なGPUを用いればわずか数秒から数時間以内で確実なクラッキングが可能となる。
悪意のある攻撃者がLLMの出力傾向をプロファイリングし、特定の予測モデルに基づいた「特化型辞書攻撃」を実行した場合、一見複雑な16文字のパスワード群の防御壁は完全に無力化されるのだ。
自動化された脅威:コーディングエージェントという見えないリスク
LLMによるパスワード生成の予測可能性がさらに深刻な脅威となるのは、AIがコードの自律生成に関与するフェーズである。個人がブラウザ上でChatGPTからパスワードをコピーするケースであれば自己責任で済むが、真のリスクはCI/CDパイプラインやインフラストラクチャの構築段階に潜む。
近年、Claude Code、Codex、Gemini-CLI、Cursorといった自律型コーディングエージェントの利用が急速に拡大している。これらのエージェントは環境構築スクリプト(Dockerfile、docker-compose.yml、Bashスクリプトなど)を生成する際、データベースの初期パスワードやAPIキーなどのクレデンシャル情報をシステムから要求される。特筆すべきは、エージェントがしばしば明示的なユーザーの許可なく「自ら推論したLLM由来の文字列」を埋め込む挙動を見せる点である。
エージェントにはシェル実行権限が付与されているため、openssl randなどのCSPRNGを利用して堅牢な乱数を生成することは技術的に容易である。しかし、プロンプトの微妙な記述の違いひとつで、エージェントはシェルツールを呼び出す手間を省き、LLMとしての自身の推論能力(内部予測)に依存してパスワードを生成してしまう。
これはソフトウェア開発の「バイブコーディング」の死角とも言える。開発者がエージェントの出力したコードの記述ロジックやインフラ定数を確認せず、テストが通過したという事実のみでデプロイを進めれば、システムの中核に解読が極めて容易な時限爆弾が埋め込まれることとなる。事実、GitHub等の公開リポジトリ上では、LLMの典型的な出力パターンに合致するパスワード(例えば「K7#mP9」を接頭辞として持つ文字列)が多数発見されており、予測可能なパスワードが既に野生化していることが証明されている。
予測不能性を機械の手に取り戻すために
AnthropicのCEOであるDario Amodei氏は、近い将来、世界の大半のコードがAIによって記述されるようになると予見している。もしこの予測が現実となり、なおかつAIエージェントが自身の出力確率に基づく「擬似的なランダム性」に依存し続けた場合、デジタルインフラ全体のセキュリティ水準は致命的なレベルまで退行する。
この課題に対する処方箋は、人間とAIエージェントの双方が生成における物理的プロセスを適切に切り分けることだ。ユーザーはLLMをパスワードジェネレータとして利用するのを即座に停止し、実績のあるパスワードマネージャーを使用すべきだ。そして、LLMの開発者およびエージェントの設計者は、セキュリティクリティカルなパラメータの生成において、モデルのトークン推論を厳格にバイパスし、システム上の真の乱数生成ツールを強制的にコールするインターフェースをハードコードする必要がある。
LLMは滑らかな文脈を「予測」することにおいて卓越した能力を発揮する。しかし、セキュリティの中核的要素であるパスワードの生成に求められるのは予測可能性の完全な排除である。万能に見えるLLMの適用範囲において、セキュリティ実践をモデルの「雰囲気」に委ねることのリスクは計り知れない。テクノロジーが自動化の階段を上るほど、基礎的な暗号論理を軽視しないアーキテクチャの厳密性が、次の時代のインフラの明暗を分けることになる。
Sources