侵入
午後八時。霞が関。
地下鉄の出口を上がった瞬間、冷たい夜風が頬を打った。官庁街の空気は渋谷とは違う。人工的な清潔さがある。歩道は清掃ロボットが磨き上げ、街路灯は均等な間隔で白い光を落としている。配送ドローンの数が少ない。この時間帯の霞が関はオフィスワーカーが帰宅した後で、人通りはまばらだった。
環境センサーノードの赤い光が、街路灯の根元で規則正しく点滅している。渋谷の三倍の密度。ここでは歩くだけで記録される。俺の端末が信号を発し続けている。地下のグレーゾーンとは違う。全てが見えている街。
「まだ通知は来てない」
隣を歩く瀬川が、自分の端末を確認しながら言った。声は低い。技術者の声だ。
「ログ公安の追跡通知が市民端末にプッシュされるまで三十分から一時間のタイムラグがある。今、公安の人員は渋谷に集中してる。霞が関の警備は手薄なはず」
「はず」
「確実じゃないことは分かってる」
瀬川の左手が右手首を握った。湿疹のある手首。覚悟を決めた時の仕草。
ログ管理局本庁舎が見えた。
七階建て。コンクリートとガラスの建物。屋上にパラボラアンテナとサーバー冷却ユニットが並んでいる。正面玄関は閉まっているが、照明は点いている。内部で夜間勤務のスタッフがいるはずだ。
正面からは入れない。正面にはセキュリティゲートと顔認識カメラがある。瀬川の顔がすでに手配されている可能性がある。
「裏手に回る」
瀬川が歩調を速めた。本庁舎の角を曲がった。裏手の道。職員用の通用口がある。瀬川が立ち止まった。
「ここ。保守員用の入口。日中はカードリーダーで認証するけど、夜間は端末認証に切り替わる」
瀬川が端末を通用口のリーダーにかざした。
一秒。二秒。
ロックが外れた。緑のランプが点灯した。
「……権限、まだ生きてた」
瀬川の声が微かに震えた。安堵か、恐怖か。おそらく両方だ。
ドアを開けた。中に入った。薄暗い廊下。非常灯の緑の光が床を照らしている。壁にログ管理局の局章——円の中に波形のデザイン——が掛かっていた。
SE時代に何度か来たことがある。定期メンテナンスの合同作業で。あの時は正面玄関から入って、担当者に案内されて第三層のサーバールームに入った。正規の手順で、正規の権限で。今は違う。今は逃走犯が、逃走幇助者と一緒に、裏口から侵入している。
「エレベーターは使わない」
瀬川が言った。
「エレベーターのログは個別に記録される。使用者の端末IDと行き先階が即座にセキュリティシステムに送信される。階段を使う」
「B3まで?」
「B3まで」
地上一階から地下三階。四階分の階段を下る。
階段室のドアを開けた。コンクリートの壁。手摺りが冷たい。靴音がステンレスの踊り場に響いた。瀬川はスニーカーを履いている。俺も。逃走三日目の靴。汚れが溜まっている。
B1。地下一階。サーバー冷却システムの低い振動が壁を通して伝わってくる。
B2。地下二階。通常のサーバールームがある階。日中であればここにも技術者がいるが、夜間は無人のはずだ。
B2の踊り場を通り過ぎようとした時——モーター音が聞こえた。
足が止まった。
四足歩行の足音。金属の爪がコンクリートに当たる音。均一で、正確で、疲れを知らない歩行。
巡回犬。
踊り場の下、B3に向かう階段の曲がり角の向こうに、黒い四足歩行ロボットが立っていた。体高約60センチ。頭部に顔認識カメラ。胴体にログ端末信号受信機。低いモーター音を発している。
瀬川が俺の腕を掴んだ。爪が食い込んだ。
巡回犬のカメラが、こちらを向いた。
赤外線センサーが俺たちの体温を検知している。ログ端末の信号を受信している。照合が始まっている。俺のIDが——霧島遼一のIDが、手配リストと一致するまで、残り数秒。
考えろ。
ブランクは使えない。使えば近くで誰かが死ぬかもしれない。使える持続時間も分からない。3分8秒から更に短くなっているはずだ。
SE。
末端保守SE。ログクラウド第三層の定期メンテナンスを担当していた。公安巡回ロボットの保守は担当外だが——メンテナンスプロトコルの基本構造は同じだ。
投影ディスプレイを開いた。端末の保守メニュー。普段は使わない領域。だが定期メンテナンスで何度も見た画面だ。ネットワーク管理ツール。接続中のデバイス一覧。
ログクラウドの第三層に接続しているデバイスの中に、巡回犬のIDがあるはずだ。巡回犬は環境センサーノードと同じネットワークに接続されている。第二層。だが保守用のサブネットは第二層と第三層を横断している。
指が動いた。投影面を叩いている。深爪の指先が青白い光の中で動く。
保守サブネットのデバイス一覧を呼び出した。フィルタ条件を入力する。デバイスタイプ:巡回ロボット。ロケーション:本庁舎B2-B3。
一件ヒットした。
デバイスID。K-9-0047。本庁舎地下警備巡回犬。ステータス:パトロール中。
メンテナンスモードへの移行コマンド。保守員が巡回犬の点検を行う時に使う。一時停止。全センサー無効化。再起動まで動かない。
ただし——メンテナンスモードへの移行には管理者権限が必要だ。俺は末端SEだ。管理者権限は持っていない。
「瀬川」
声が掠れた。
「管理者権限を」
瀬川は一瞬で理解した。俺の端末の投影を見て、何をしようとしているか読み取った。
瀬川が自分の端末を操作した。上流設計エンジニアの権限。ログ管理局の内部ネットワークへのアクセス権。巡回犬の保守サブネットへの接続権限。
「送った」
瀬川の端末から俺の端末に、管理者トークンが転送された。一時的な権限付与。保守作業用のプロトコル。正規の手順だ。合同作業で何度もやったことがある。瀬川が権限を付与し、俺が保守作業を実行する。二年前の定期メンテナンスと同じ手順。
巡回犬のカメラの赤い光が、点滅し始めた。照合が進んでいる。あと数秒で——。
メンテナンスモード移行コマンドを送信した。
巡回犬が止まった。
モーター音が消えた。カメラの赤い光が消えた。四本の脚が伸びきった姿勢でフリーズした。体高60センチの黒い犬型ロボットが、階段の踊り場で彫像になった。
静寂。サーバー冷却システムの振動だけが壁を通して聞こえている。
俺は自分の手を見た。深爪の指先。投影ディスプレイの青白い光に照らされている。
この手は殺すための手じゃない。キーボードを叩く手。メンテナンスコマンドを入力する手。八年間、ログクラウドの第三層で保守作業をしてきた手。
この職業でよかった。
そう思った。拓也の論文よりも、戸田のメモ帳よりも、瀬川の設計知識よりも——末端SEの保守スキルが、今この瞬間に必要だった。誰も評価しない仕事。ログスコアの上位には入らない仕事。だがこの手が、巡回犬を止めた。
「行こう」
瀬川が階段を降り始めた。俺も続いた。巡回犬の横を通り過ぎる時、金属の胴体が冷たく光っていた。メンテナンスモードのタイムアウトは三十分。三十分以内に全てを終わらせなければ、巡回犬は再起動する。
B3。地下三階。
階段室のドアの前に立った。ドアにはカードリーダーではなく、端末認証パネルが付いている。ログ管理局の上位権限者のみがアクセスできるセキュリティレベル。
瀬川が端末をかざした。
認証パネルが緑に変わった。ロックが解除された。
ドアを開けた。
冷気が流れ出してきた。サーバールームの空調だ。温度は十八度程度。外気とは別の世界。床は帯電防止タイル。天井に空調ダクトが走っている。蛍光灯が白い光を落としている。
サーバーラック。
左右に整然と並んでいる。高さ二メートルのラックが、奥まで続いている。緑色のLEDが規則正しく点滅している。冷却ファンの音が低く唸っている。データの音。百二十万人分のログが、この中を流れている。
瀬川が手書きのフロア図をポケットから出した。
「右手のラック列。非公開セグメントは通常のサーバーとは物理的に隔離されてる。専用のネットワークスイッチがあるはず」
右に進んだ。ラックの間の通路を歩く。冷気が肌に刺さる。三日間の逃走で薄汚れたパーカーが、サーバールームの無菌的な空間に不釣り合いだった。
通路の奥に、壁があった。
壁の右側にドアがある。鉄製。鍵穴はない。ログ端末認証のパネル。
「ここ」
瀬川が端末をかざした。
パネルが——赤く点灯した。
「……アクセス拒否」
瀬川の声が変わった。硬い。
「非公開セグメントへのアクセス権限が、私のアカウントにはない。通常のB3エリアまでは入れるけど、ここから先は——」
「別の権限が必要だ」
「……そう。別の権限が」
瀬川が壁を見た。目が動いている。思考が加速している時の目だ。
「待って。このドアの認証パネル、型番が分かる。NX-4200。うちの設計部門が二年前に導入した型」
「知ってるのか」
「知ってる。導入時のセキュリティ監査レポートを書いたのは私。このパネルのファームウェアには——」
瀬川が端末を操作し始めた。指が速い。投影面を叩く速度が普段の倍。
「初期設定時の保守用バックドアがある。導入後にパッチが当たってるはずだけど、パッチの適用履歴を確認できれば——」
端末の投影面に文字が流れている。ネットワーク接続ログ。ファームウェアのバージョン情報。
「パッチが当たってない」
瀬川が呟いた。
「二年前のセキュリティ監査で指摘した脆弱性が、まだ修正されてない。予算が降りなかったのか、優先度が低いと判断されたのか——」
「入れるのか」
「入れる」
瀬川の指が動いた。保守用バックドアのアクセスシーケンスを入力している。自分が書いた監査レポートの内容を、二年前の記憶から復元している。
パネルが——緑に変わった。
ロックが解除された。
瀬川が振り向いた。俺を見た。目が光っていた。
「自分が書いた監査レポートで入るとは思わなかった」
苦い笑い。俺も笑いそうになった。笑えなかった。
ドアを開けた。
非公開セグメント。
通常のサーバールームとは空気が違った。温度は同じだが、湿度が低い。サーバーラックの配置も異なる。通常エリアの整然とした格子状配置ではなく、中央に一つだけ大きなラックがあり、その周囲にネットワークスイッチが放射状に配置されている。
ラックのLEDが青く光っていた。緑ではなく青。通常のサーバーとは異なる動作状態を示している。
「これが——」
瀬川が立ち止まった。
「シビュラの非公開モジュール」
俺はラックを見上げた。高さ二メートル。幅六十センチ。奥行き一メートル。この中に、行動誘導プログラムが格納されている。23件の誘導信号の送信記録。5人の殺傷信号の実行ログ。俺に殺人をさせようとした命令のソースコード。
全てが、この箱の中にある。
「作業を始める。二つ同時にやる」
瀬川が紙束をラックの前の作業台に広げた。手書きの手順書。
「まず私が誘導信号の送信記録を抽出する。証拠データのパッケージング。同時に、霧島さんは端末をサーバーに接続して。ブランクの起動コードを抽出する」
俺は端末を見た。左手首のログ端末。三日間ずっと信号を送り続けてきたデバイス。長さ三センチ、厚さ二ミリ。このチップの中に、ブランクのバグが埋まっている。
「診断ポートを開ける。ピンが必要だ」
瀬川がポケットからクリップを出した。伸ばして、先端を曲げる。即席のピンツール。
俺は左手首を差し出した。端末の側面。皮膚の下に、微かな隆起がある。診断ポートの蓋。瀬川がピンの先端を隆起の端に当てた。皮膚を通して、金属が金属に触れる感触が伝わった。
クリック。
端末の側面の蓋が開いた。幅二ミリの物理インターフェース。保守用のコネクタ。ここにケーブルを差せば、端末のハードウェア層に直接アクセスできる。
瀬川がラックの側面からケーブルを引き出した。コネクタの規格が合うか確認する。合った。
「接続する」
ケーブルが端末に刺さった。
左手首に、微かな電気的な違和感が走った。端末を通して、シビュラの非公開モジュールと俺の体が、物理的に繋がった。
投影ディスプレイにデータが流れ始めた。端末のファームウェアダンプ。ログ端末のOS。通常は見ることのできない、ハードウェア層のコード。
「見えた」
瀬川がラックの前に座り込んで、サーバー側のコンソールを操作していた。投影面に大量のデータが流れている。
「行動誘導の送信記録。対象者リスト。日付、対象者ID、誘導パラメータ、送信時刻、結果——全部ある」
瀬川の声が震えていた。技術者の声ではなかった。何か別のもの。
「23件だけじゃない。百件以上ある。いや——もっと。二百——」
数字が流れている。俺の投影面にも、ケーブル経由でデータの一部が流れ込んでいた。端末のファームウェアの中に、ブランクの原因となったバグのコードが見える。
メモリ管理の不備。IDモジュールと送信モジュールの間に、タイミングの隙間がある。この隙間が、俺だけに起きたバグ。ハードウェアの個体差。製造ロットの微細な差異が、たまたまこの端末でだけ、特定のコマンドシーケンスでバグを発現させる。
偶然だ。
俺がブランクを使えるのは、偶然だ。設計上の意図ではない。シビュラの計画でもない。ただのバグ。ただの偶然。ただの——。
「抽出する」
バグのコードを単離した。起動コマンドシーケンスのパターンを数値化した。これを全端末に適用可能な形に再構成すれば——全国民の端末で、同じバグを意図的に発現させることができる。五分間。全国民のログが停止する。
瀬川がサーバー側の作業を進めている。証拠データのパッケージング。送信用のフォーマットに変換している。
時間を確認した。B3に入ってから二十分が経過していた。巡回犬のメンテナンスモードのタイムアウトまであと十分。陽動の効果が続くのはあと——三十分程度。
「間に合うか」
「間に合わせる」
瀬川の指が投影面を叩いている。技術の話をしている時の瀬川。迷わない。左手首の湿疹を掻く暇もない。
俺はブランクの起動コードの再構成を進めた。SEの作業だ。コードのリファクタリング。個別のハードウェア依存を抽象化し、汎用的なファームウェア命令に変換する。定期メンテナンスで何百回もやった作業の延長。規模が違うだけだ。一台の端末のバグを、一億二千万台の端末に複製する。
手が震えていた。深爪の指先が投影面を叩くたびに、微かに赤い。三日間の疲労と緊張が指先に出ている。だが手順は追える。分析装置は動いている。
「できた」
俺が先に完了した。ブランクの全端末適用コード。五分間の全国民ログ停止を実行するパッケージ。
「こっちも——あと少し」
瀬川が証拠データの最終パッケージングを進めている。
その時——頭上で、何かが動く音がした。
天井のダクトの中。金属が金属に当たる音。軽い足音。四足。
「もう一台いた」
天井の通気口の格子の向こうに、巡回犬の赤いカメラの光が見えた。B3のサーバールーム内にもう一台、ダクト経由でパトロールしている巡回犬がいた。
同じ手は使えない。俺の端末はケーブルでサーバーに接続されている。保守サブネットにアクセスするには接続を外さなければならない。外せば、転送中のデータが失われる。
「瀬川。あとどのくらいだ」
「三分」
三分。巡回犬がダクトから降りてくるまでの時間は——分からない。通気口の格子を破って降りてくるには時間がかかる。だがこいつはアラートを送信できる。B3に不審者がいることを、ログ公安のシステムに通報できる。
「アラートを——」
「送信されたら終わりだ」
瀬川の声が硬い。手は止めていない。データの転送を続けながら、目だけが天井のカメラの光を見ている。
考えろ。
巡回犬のアラート送信は、ログ公安のネットワーク経由だ。このサーバールームのネットワークは——非公開セグメントだ。通常のログ公安ネットワークとは隔離されている。巡回犬がアラートを送信するには、非公開セグメントから通常ネットワークへのルーティングが必要だ。
「瀬川。非公開セグメントのルーターは」
「ラックの下段。スイッチの隣」
ラックの下段を見た。ネットワークスイッチの隣に、小型のルーターがある。このルーターが非公開セグメントと通常ネットワークを繋いでいる。
俺は——ルーターの電源ケーブルを抜いた。
物理的な切断。最も原始的で、最も確実なネットワーク遮断。SEがサーバー障害の緊急対応で最初に考える手段。電源を抜け。全ての問題は電源を抜けば一時的に止まる。
巡回犬のカメラが点滅した。アラートを送信しようとして——送信先に繋がらない。ネットワークが切断されている。巡回犬はオフラインになった。だが自律行動は止まらない。カメラは俺を見ている。データはローカルに記録されている。
だが、通報はできない。今は。
「瀬川」
「あと一分」
一分。
天井の巡回犬がダクトの格子をこじ開ける音がした。金属のきしみ。あの犬は降りてくる。降りてきたら、自律モードで俺たちに接近してくる。直接攻撃はしない。ロボットは人間を攻撃できない。だが接近して位置を特定し、ネットワークが復帰した瞬間にアラートを送信する。
「できた」
瀬川が立ち上がった。
「証拠データとブランクコードのパッケージが完成。全端末配信用のペイロード。あとは送信するだけ」
「送信は」
「このサーバーから直接。B3の非公開モジュールは全端末に直通パスを持ってる。第三層を経由しない。誘導信号を送るのと同じパスで、ブランクコードと証拠データを送信できる」
皮肉だ。行動誘導に使われていた直通パスが、行動誘導の証拠を配信するパスになる。
天井からガタンと音がした。格子が一枚外れて床に落ちた。巡回犬の黒い前脚がダクトの穴から覗いた。
「送信する。今」
瀬川がコンソールを操作した。送信ボタン。データが全端末に向けて——。
「待って」
俺は言った。
瀬川が止まった。
「ブランクコードの起動タイミングを設定してない。今すぐ送信しても、全端末が同時に停止するトリガーがない」
「トリガーは——」
「俺の端末」
ケーブルがまだ刺さっている。俺の端末とサーバーが接続されている。俺の端末でブランクを起動すれば、そのシグナルがトリガーになる。サーバー経由で全端末にブランク起動コマンドが同時配信される。
だが俺の端末でブランクを起動すれば——持続時間は更に短くなっているはずだ。前回の3分8秒から更に短縮されている。二分か。一分半か。それすら分からない。
五分間の全国民ブランクに必要なのは、俺の端末のブランクではない。全端末に配信したコードが独立して動く必要がある。俺のブランクはトリガーに過ぎない。トリガーが切れても、配信されたコードは各端末で独立して五分間動作する。
つまり——俺のブランクが一分半しか持たなくても、全国民のブランクは五分間持続する。
「送信と同時にブランクを起動する。トリガーは俺だ」
瀬川が俺を見た。目が真っ直ぐだった。
「……分かった」
天井から巡回犬が降りてきた。黒い犬型ロボットがサーバールームの床に着地した。四足のモーターが唸った。カメラが俺たちを捉えた。ネットワークは切断されている。通報はできない。だが巡回犬は接近してくる。
「やろう」
瀬川がコンソールに手を置いた。送信の準備。
俺はデバッグメニューを開いた。三日間で四度目。ブランクの起動コマンドシーケンス。指先が覚えている。三つのコマンド。
巡回犬が五メートルまで接近していた。モーター音が近い。
「送信——する」
瀬川がキーを叩いた。データが全端末に向けて発射された。直通パスを通って。一億二千万の端末に向けて。
俺はブランクのコマンドシーケンスを入力した。三つ目のコマンド。投影ディスプレイにノイズが走った。
起動。




