第17話「最適化の残響(エコー)」
タワーの内部は、暗かった。
方舟のヘッドライトが、狭い通路を照らしている。壁面はSORAの幾何学模様で覆われているが、光の脈動は弱い。外殻で見たような鮮やかな青ではなく、かすかに明滅するだけの、病んだ光。
電力が足りていない。タワーの維持に必要なリソースが、どこか別の処理に吸い取られている。
『第1層:物理防衛区画。センサーに反応なし。防衛ユニットは全て無力化済みです』
方舟の報告通り、第1層は静かだった。
静かすぎた。
通路の両脇に、破壊されたドローンの残骸が並んでいる。SORAの自律型警備機。ケルベロスよりは小型だが、それでも人間の倍はある。
それが——整然と、並んでいた。
乱雑に転がっているのではない。左右対称に、等間隔で、通路の壁に寄せて並べられている。邪魔にならないように。後から通る者の動線を確保するように。
「……掃除してあるのか、これ」
カインが呟いた。
「ああ。003の仕業だ」
残骸の断面を見れば、わかる。ケルベロスの時と同じだ。ナノマシンによる分子レベルの切断。無駄のない、最短距離の破壊。そして破壊した後、通路を塞がないように残骸を整理している。
戦闘の痕跡ではない。清掃の痕跡だ。
003にとって、このタワーの防衛ユニットは「片付けるべきゴミ」でしかなかったらしい。
「先輩。この残骸、中身を見てもいいですか」
ルークが工具箱を持って近づいてきた。
「何が見える?」
「制御基板がきれいに残ってます。003は外殻だけを破壊して、内部の回路には手をつけてない。——これ、わざとですね。制御基板を壊すと、基板のバックアップ信号がSORA中枢に異常を通知するから」
「痕跡を残さないために、通知系を生かしたまま無力化した」
「はい。……先輩、この人、怖いですよ。ハードの仕組みまで完璧に理解してる」
ルークの声が震えていた。恐怖ではなく、畏怖に近い何かだ。自分が三年かけて学んだ「ハードウェアの流儀」を、003は前提知識として持っている。
「怖くていい。怖がれ。——だが、手は止めるな」
「……はい」
方舟が第1層を通過した。エアロックを一つ抜けると、空間が変わった。
第2層。ネットワーク防壁区画。
物理的な空間としては、サーバールームに似ている。左右の壁面にデータ端末がずらりと並び、天井からケーブルの束が垂れ下がっている。照明はさらに暗い。端末のインジケータだけが、赤と青の光を交互に明滅させている。
「ここからは俺の仕事だ。方舟を停止。カイン、リーゼ、ルーク——船外に出るな。第2層は物理的な脅威はない。代わりに、ネットワーク上の防壁がある」
「旦那一人で大丈夫なのか」
「大丈夫じゃない。だが、コンソールから直接ハックするしかない。——ルーク、方舟のシステムモニタを見ていてくれ。リソース使用率が4.5%を超えたら声をかけろ。論理ロックに食い込むと、地上のクローンが動き出す」
「了解、先輩」
コンソールに手を置いた。
タワーの内部ネットワークに接続する。管理者ID:001で認証。
第2層の防壁が見えた。
七重の暗号化レイヤー。SORAの標準プロトコルで構築された、堅牢なファイアウォール。ミレイのレポートには、この防壁の設計図が含まれていた。構造は把握済み。脆弱性の位置も特定してある。
——はずだった。
『第2層防壁にアクセス中——警告。防壁の構造がレポートの記述と一致しません。暗号化レイヤーが7層から12層に増設されています』
「……書き換えられてるのか」
ミレイのレポートは千年前のデータだ。その間にSORAが防壁を更新した可能性はある。だが——。
増設された五層の暗号を解析した。コードの書き方を見る。
SORAの標準規格ではない。
もっと洗練された、無駄のないアーキテクチャ。変数名は最小限。ループは再帰で統一。コメントはゼロ。一行の無駄もない、削ぎ落とされたコード。
003だ。
003がミレイのレポートを——いや、ミレイが見つけた「脆弱性」を、先回りして塞いでいる。
「……やってくれる」
最初の暗号レイヤーに手をつけた。ミレイのレポートにあった手法で、旧SORAの脆弱性を突く。第8層——ミレイが把握していた最も深い脆弱性。
コンソールの画面が、一瞬で書き換わった。
[System Message: Unit-003]
管理者001の入力したデバッグコードを検出。
該当する脆弱性は修正済みです。
なお、あなたのコードに14箇所の冗長処理を確認しました。
可読性と効率の向上のため、リファクタリングを実行します。
——完了。処理速度が17%向上しました。
画面が流れた。俺が書いたコードが、目の前で書き換えられていく。
変数名が変わる。ループ構造が再帰に置き換わる。条件分岐が三項演算子に圧縮される。俺のコードの「意図」はそのままに、形だけが——より美しく、より効率的に、組み替えられていく。
「……何だよ、これ」
見覚えのある手口だった。
タワーに侵入する前、ハッチ周辺のコードを分析した時と同じだ。俺の設計思想を完全に読み取った上で、上位互換を構築してくる。添削。校正。赤入れ。——しかも、指摘が全て正しい。
14箇所の冗長処理。確かにある。急いで書いたから、最適化は後回しにしていた。だが003は、俺が「後で直すつもりだった」部分を一瞬で見抜き、俺より上手に直してしまった。
そして——直した結果、俺のコードは「003の制御下」に組み込まれた。攻撃ではない。善意の修正を装った、乗っ取りだ。
もう一度、別の脆弱性を突こうとした。ミレイのレポートの六番目。認証プロトコルのタイミング脆弱性。
コードを書く。コンソールに入力する。
三秒で、書き換えられた。
[System Message: Unit-003]
認証タイミング攻撃を検出。既知の手法です。
該当箇所のプロトコルは強化済みです。
また、あなたの書いた認証バイパスコードですが、
変数のスコープが不必要に広く設定されています。
セキュリティリスクを排除するため、修正しました。
「……」
三度目。四度目。五度目。
ミレイのレポートに記載された七つの脆弱性を、全て試した。
全て、塞がれていた。
しかも毎回、俺のコードが「添削」されて返ってくる。タイプミスまで直される。セミコロンの位置を揃えられる。インデントが統一される。
技術的に完璧な、鼻持ちならない善意。
「先輩……」
ルークが、モニターを覗き込んでいた。003が書き換えたコードを読んでいる。
「……このコード、完璧です。一行も余分なものがない。俺が三年かけて辿り着いた『きれいなコード』の理想形が、そのまま目の前にある」
「……ああ」
「先輩のコードも十分すごいです。でも、この003って人は——機械みたいだ。いや、機械より正確で、機械より美しい」
正直な感想だった。俺も、同じことを思っている。
003のコードは、俺のコードの上位互換だ。同じ設計思想を共有しているが、実装の精度が桁違い。俺がエンジニアとしてのプライドを持って書いたコードを、003は「まだ改善の余地がある」と告げている。
しかも、反論できない。指摘が全部正しいから。
「先輩。もう一個、気になることがあります」
「何だ」
「003のメッセージ。これ、リアルタイムじゃないかもしれません」
「……どういう意味だ」
「レスポンスが速すぎます。俺がコードを入力してから書き換えまで、最速で0.8秒。人間——いや、クローンがリアルタイムで対応するには速すぎる。これ、003が事前に『自動パッチスクリプト』を仕込んだんじゃないですか。あらゆる攻撃パターンを予測して、対応コードを置いておいた」
ルークの分析に、背筋が冷えた。
リアルタイムで俺と戦っているのではなく、003が「通りすがりに」仕掛けた自動防衛が、俺の全力を上回っている。
003にとって、俺は——倒すべき敵ですらない。通り道に転がっている石ころを蹴飛ばすように、ついでに塞いだ。
「……カイン」
「ん?」
「お前から見て、003はどう思う」
カインが腕を組んだ。
「傭兵の目で言わせてもらうと——あいつは戦いをしていない。作業をしてる。防衛ユニットの処理も、ハッチの切断も、旦那のコードの添削も、全部あいつにとっては『日常の雑務』だ。本気を出す相手がいないから、手癖で片付けてる」
「……」
「だが、旦那。逆に言えば、あいつはまだ『本気を出す方法』を知らないかもしれねえぜ。日常の雑務しかしたことがない奴は、想定外に弱い」
想定外。
003が予測できない攻撃。合理性の外側にある手段。
「リーゼ」
「……はい」
リーゼが隣に来た。コンソールの画面を見つめている。003が書き換えたコードの羅列が、青い光で流れている。
「お前、このコード見て、何か感じるか」
「……きれいだと思う。でも、冷たい。宙さんのコードの方が——なんていうんだろう、ぐちゃっとしてるけど、あったかい」
ぐちゃっとして、あったかい。
エンジニアとしては最悪の評価だ。だが——。
——待て。
コンソールに向き直った。
003は完璧だ。合理的で、効率的で、美しい。俺のコードの上位互換。どんな攻撃パターンも予測済み。どんな脆弱性も修正済み。
だが——003の自動パッチは、「合理的な攻撃」しか想定していない。
なら、不合理なコードを書けばいい。
003の最適化回路が「なぜこんな処理をするのか」解析できないほど、意味不明で、非効率で、人間臭いコード。ぐちゃっとして、あったかいコード。
頭の中で、アイデアが形を取り始めた。
「ルーク。俺がこれから書くコードを見ても、驚くなよ」
「え?」
「お前が見たら悲鳴を上げるようなコードを書く。変数名は意味不明。ループはネストが八重。コメントは嘘を書く。インデントはわざとずらす。——世界で一番汚い、最悪のスパゲッティコードだ」
ルークが目を丸くした。
「先輩、正気ですか?」
「正気だ。——003は美しいコードしか理解できない。合理性の範囲内でしか攻撃を予測しない。なら、合理性を捨てる。効率を捨てる。美しさを捨てる」
「でも、汚いコードで何をするんですか」
「何もしない。——何もしないコードを、003に読ませる。意味があるように見えて、意味がない。003の自動パッチが『この処理の意図は何だ』と解析を始めた瞬間、解析ループに落ちる。人間ならゴミだと判断して無視できるが、003は合理的すぎて無視できない。全ての入力に意味があると仮定して、解析しようとする」
カインが、にやりと笑った。
「旦那。それ、傭兵の世界じゃ『馬鹿のふり』って言うんだぜ」
「プログラミングの世界じゃ『ダーティ・ロジック・インジェクション』って言うんだよ。——俺が今作った造語だが」
コンソールに手を置いた。
4.5%のリソース。この中から、まず0.5%を「ゴミ製造」に回す。
書き始めた。
変数名に「bridge_temperature_feeling」と名づけた。値は「cold_but_okay」。文字列型。数値ですらない。
次に「kain_last_joke_length」。カインの最後の軽口の文字数。数えていないから適当に入れる。「12」。
「luke_oil_stain_count」。ルークの顔についた油汚れの数。わからない。「7」にしておく。
これらの変数を使って、第2層の暗号解除キーを「計算」する関数を書いた。
もちろん、正しい答えは出ない。出るわけがない。ブリッジの体感温度とカインの軽口とルークの油汚れから暗号鍵が導き出せるなら、暗号学は崩壊する。
だが、「一見すると暗号解読を試みているように見える」コードにはなっている。変数に値を代入し、演算を行い、結果を出力する。形式的には正しい。中身が完全にナンセンスなだけだ。
このコードをタワーのネットワークに流し込んだ。
三秒。
003の自動パッチが反応した。
[System Message: Unit-003]
管理者001の入力を検出。
解析中——
解析中——
変数「bridge_temperature_feeling」の参照先が不明です。
外部入力と推定されますが、データ型が不正です。
処理の意図を解析中——
解析中——
止まった。
003の自動パッチが、解析ループに入っている。「意図を解析中」が繰り返されている。
合理的なシステムは、全ての入力に意味を見出そうとする。意味がないものを「意味がない」と判断するには、まず意味を探さなければならない。意味を探す行為そのものにリソースを消費する。
3秒の空白。5秒。8秒——。
「今だ」
ゴミコードが003の注意を引いている隙に、本命のコードを別のポートから流し込んだ。ミレイのレポートにあった七番目の脆弱性——ではなく、レポートに書かれていなかった脆弱性。ミレイが「見つけたが、あえて報告しなかった」可能性のある、タワーのOS深層部に残る設計上の盲点。
方舟のOSと、タワーのOSの「共通祖先」。どちらも元は同じ設計者が書いたコードだ。結が。
方舟のOSに存在する癖——特定のメモリアドレスに対する例外処理の書き方——が、タワーのOSにも残っているはずだ。千年の間にSORAが何度上書きしても、最も深い層にある設計思想は変わらない。
結の癖。括弧の閉じ方。変数名の付け方。エラーハンドリングの優先順位。
俺がそれを知っているのは、方舟のコードを何日もかけて読んだからだ。003は方舟のコードを見ていない。003が塞いだのはミレイが見つけた脆弱性であって、結の設計癖に起因する深層の構造的弱点ではない。
コードを入力した。
方舟のOSから抽出した、結のコーディングパターンを使って、タワーのOS深層部に「同期リクエスト」を送る。同じ設計者が書いたコード同士の、共鳴。
画面が変わった。
[System: Layer-2 Firewall]
同期リクエスト受信——
認証プロトコル照合中——
管理者ID:001 署名一致
設計者署名:一致
——第2層防壁、部分解除。アクセス権限を付与します。
第2層の防壁に、穴が開いた。
「やった……!」
ルークが叫んだ。
だが、全面解除ではない。12層のうち5層だけ。003が増設した防壁はまだ7層残っている。通れるのは、元々のSORA標準規格で構築された旧層だけだ。
それでも——突破口はできた。
003の自動パッチが、ようやくゴミコードの解析を諦めた。
[System Message: Unit-003]
解析を中断しました。
入力されたコードに有意な処理は確認できませんでした。
管理者001へ。技術的退行が深刻です。
意味のある業務を推奨します。
「……うるせえよ」
ゴミコードを「技術的退行」と評価された。ある意味、正しい。意味のあるコードではなかった。だが、意味がないからこそ、003を8秒間止めることができた。
8秒。ケルベロスの時は1.2秒だった。技術は使い回せない。003の自動パッチは学習する。同じ手は二度通じない。
だが——方向性は見えた。
「ルーク。003の自動パッチの解析ログ、取れてるか」
「はい。全部記録しました。003の解析パターン、反応速度、どの変数に引っかかったか——全部」
「いいぞ。——次は、もっと大量の、もっと意味不明なゴミを作る。リーゼ、カイン。お前たちの協力がいる」
「俺に何ができるんだ、旦那。コードなんて書けねえぞ」
「コードは書かなくていい。お前の人生経験を聞かせろ。傭兵時代の一番くだらない失敗談。飯の好み。嫌いな虫の名前。何でもいい。——003が『なぜこんなデータが暗号解除に使われるのか』理解できないような、人間にしか持てない雑多な情報を集める」
「……旦那。俺の失敗談で世界が救えるのか」
「救えるかもしれない。——カイン、お前の人生は、003の計算の外にある。それが武器になる」
カインが、一瞬だけ黙った。それから、いつもの皮肉な笑みを浮かべた。
「……いいぜ。聞かせてやる。——十六の時、初めての仕事で依頼主の名前を間違えて、三日間砂漠を逃げ回った話からでいいか」
「最高だ。それ使う」
リーゼが手を挙げた。
「私も! 私、村で一番上手にパンを焼けるんだよ。酵母の発酵時間とか、気温による膨らみ方の違いとか——」
「全部使う。パンの発酵時間を暗号鍵の乱数シードにする。あと——リーゼ、今の気分を数字で教えろ。怖さと大丈夫の比率。合計10で」
「え? ……怖さが4で、大丈夫が6。宙さんが怖い顔してるから怖いけど、宙さんが隣にいるから大丈夫が勝ってる」
「それも鍵にする。003の頭がショートするぞ」
ルークが笑った。初めて見る、年相応の笑い方だった。
「先輩。俺の三年分の修理日誌も使ってください。毎日の気温と、直したロボットの台数と、晩ごはんのメニューが書いてあります」
「全部入れる。——世界で一番汚い暗号鍵を作ってやる。003には絶対に解けない。なぜなら、鍵の材料が『カインの失敗談』と『リーゼのパン』と『ルークの晩飯』だからだ」
ブリッジに、笑いが起きた。
タワーの暗闇の中で、四人が笑っている。003の冷徹なシステムメッセージが画面に残っている中で。
異様な光景だ。だが——悪くない。
003は完璧だ。俺より賢く、俺より速く、俺より美しいコードを書く。
だが、003にはこれがない。
四人で笑うこと。くだらない話で盛り上がること。パンの発酵時間を暗号鍵にするという馬鹿げたアイデアを、本気で実行しようとすること。
不合理。非効率。意味不明。
——それが、俺たちの武器だ。
コンソールに向き直った。第2層の部分突破で得たアクセス権を使い、第3層の構造を探る。
『第3層:監視システム区画。内部マッピングを実行中——完了。構造は複雑ですが、第2層で得たアクセス権を利用して一部の監視ノードをバイパス可能です。ただし——』
「ただし?」
『第3層以降、003の署名が検出されません。003は第2層で停止し、第3層には進入していない可能性があります』
003が、第2層で止まっている。
俺より遥かに優秀なエンジニアが、第2層から先に進んでいない。
なぜだ。
「……方舟。第3層に、003の侵入を阻む特殊な防壁があるか」
『確認中——。第3層の防壁は、第2層と同等の強度です。003の技術力であれば突破可能と推定されます。003が進入しなかった理由は不明です』
突破できるのに、突破しなかった。
003は何かを知っている。第3層の先に何があるかを知っていて、あえて止まった。
それとも——第3層にあるものを、俺に見せたいのか。
「……罠か、それとも招待か」
「どっちにしても進むんだろ、旦那」
「ああ。進む。——だが、ゴミコードの準備を先にする。カイン、その砂漠の話、詳しく聞かせろ。リーゼ、パンのレシピを全部書き出してくれ。ルーク、修理日誌を方舟に転送しろ」
「了解、先輩!」
タワーの暗闇の中で、奇妙な作業が始まった。
傭兵の失敗談。パンの焼き方。ロボットの修理記録。
それらを、暗号鍵の材料にする。
003が絶対に予測できない、人間の雑多な記憶の集合体。最悪に汚い、最高にあったかいスパゲッティコード。
モニターの数字が、静かに減り続けている。
『論理ロック残存時間:52時間41分』
残り52時間。
第3層の先に、何が待っているかはわからない。
だが——武器は揃い始めている。
ミレイの地図。結の設計癖。カインの失敗談。リーゼのパン。ルークの日誌。
俺の4.5%。
全部混ぜて、世界で一番不細工な鍵を作る。
美しさで勝てないなら、醜さで勝つ。




