表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
欠陥品は星を渡る ~AIに追放された俺、1000年後の異世界で最強の『バグ』でした~  作者: れーやん


この作品ページにはなろうチアーズプログラム参加に伴う広告が設置されています。詳細はこちら

17/22

第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%。


 全部混ぜて、世界で一番不細工な鍵を作る。


 美しさで勝てないなら、醜さで勝つ。

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ