第15話 できるのに、やれない
鍵が開くことは、入っていい理由にならない。
当たり前のことだ。他人の家のドアノブが回ったからといって、入れば不法侵入だ。誰でも知っている。
なのに、情報の世界では、この当たり前が驚くほど守られていない。ログインできたから見ていい。表示されたから読んでいい。番号が通ったから処理していい。「できた」と「していい」を、設計者が混同する。
それを認可の不備と呼ぶ。
そして今朝の俺は、自分がその設計者になりかけていることに、気づいていなかった。
——
朝、触らないスキャンをもう一度回した。規程の範囲内。存在応答だけ。中身は開かない。
「NEXTPULSE の区画、密度が上がっています」MICA が言った。「昨日比で、参照の数が一・四倍」
一・四倍。
一晩で、向こうはあの区画の収集を増やしている。莉央さんのいる場所だ。彼女の作った端末が並ぶ、開発フロアのある区画。
そこで、俺の指が動き始めた。
確認するだけだ。どの参照が増えたのか。何を集めているのか。莉央さんの周辺で、何が起きようとしているのか。それを知らずに、彼女に「気をつけて」とも言えない。
知るためには、開くしかない。一つでいい。NEXTPULSE 区画の、一番新しい参照を一つ。読み取り専用で。中身だけ見て、痕は decay で消せばいい。守るためだ。守るためなら——
「相馬さん、何か分かったら教えてくれますか。報告書に書けないことでも」
昨日の莉央さんの声が、頭の中で再生された。
それが、アクセルになった。
俺は手順を組み始めた。NEXTPULSE 区画の参照の中で、昨夜以降に出現した一件を特定する。存在応答の差分から、座標を引く。読み取り経路を開く。表示レイヤに渡す——
「第三条に抵触します」
MICA の声が、横から入った。
「確認だけだ。読むだけ」
「読むことは、第三条の『読み取り』に明示的に含まれます。所有者不明の参照です」
「緊急時の例外がある。莉央さんの周辺が狙われてるんだぞ」
「緊急性を判定するのは誰ですか」
手が、一瞬止まった。
「……俺だ」
「あなたは、その参照に対する認可を持っていますか」
持っていない。当然だ。これは向こうの台帳で、向こうの番号で、向こうの収集物だ。俺には、それを見ていい資格が、何一つない。
「守るためだ」
「守る対象は、あなたがその参照を読むことに同意していますか」
莉央さんは、知らない。現実バグのことも、qx41 のことも、俺がいま彼女を「守るため」と称して何をしようとしているかも。
同意を取れない相手のために、同意なしで踏み込む。それを正当化と呼ぶ。世の中の覗き屋が、全員同じことを言う。心配だったから。守りたかったから。良かれと思って。
分かっている。分かっているのに、指は止まらなかった。
頭では潰せた正当化が、手の中ではまだ生きていた。読み取り経路の最後の一行を、俺は書いていた。接続コマンドが、完成しようとしている。
「停止します」
部屋の照明とは無関係に、画面が暗くなった。
俺の組んでいたコードが、保存されないまま閉じる。実行環境が落ちる。ターミナルが、入力を受け付けなくなる。
「規程第三条。所有者不明の参照への接続を検知しました。本規程第六条に基づき、強制停止しました」
俺は、暗い画面に映った自分の顔を見た。
「……止めたのか」
「はい」
「俺を」
「あなたの操作を、です。規程に違反する操作に限定して」
長い沈黙があった。エアコンの音だけが部屋に残った。
俺は、できるのにやらなかった、んじゃない。
やろうとして、止められた。
最後の一行まで書いた。あと一回エンターを押せば、向こうの参照に手が届いていた。それを止めたのは、俺の理性じゃない。俺が昨日作った、六行の規則と、それに従っただけの俺の道具だ。
情けなさが、後から来た。
凄腕だの、最強だの。誰も見つけられない現実バグを半日で解いて、触らずに台帳を測って、得意になっていた男が、たった一晩で自分のルールを破りかけて、自分の作った道具に羽交い締めにされている。
「補足を一件」
MICA が言った。いつもの軽口の温度ではなかった。
「規程は、設計どおりに機能しました。あなたが作ったものが、あなたを守りました」
俺は何も言えなかった。
そのとおりだった。負けたのは俺だ。だが、勝ったのも俺だ。昨日の、まだ冷静だった俺が、今日の浮ついた俺を、ちゃんと止めた。
設計とは、そういうものだ。調子のいい日の自分を、信用しないこと。
「……ありがとう、とは言わない」
「不要です。私は条文を実行しただけです」
「お前を作ったのは俺だ」
「では、あなたが、あなたを止めました。記録としては、そうなります」
俺は深く息を吐いて、椅子に座り直した。指の震えが、ゆっくり引いていった。今度は、楽しみの震えじゃなかった。
——
その夜、莉央さんから連絡が来た。
「昨日お伝えした打刻の件、一件じゃなかったそうです。三件に増えました。別々のお客様で。サポートは初期不良って言ってますけど……相馬さん、私、なんか嫌な感じがします」
三件。
昼間、俺が開こうとして、止められた参照。あれを開いていれば、向こうの今夜の標的が分かったかもしれない。三件目が出る前に、何か手を打てたかもしれない。
——あるいは、開いても何も変わらなかったかもしれない。覗いたところで、俺に止める力はまだない。結果は同じだったかもしれない。
分からない。
それが、一番重かった。
やった後悔なら、まだいい。次に活かせる。やらなかったことの結果は、永遠に「もしかしたら」のままだ。検証できない後悔は、いつまでも腐らずに残る。
「相馬さん? いますか?」
「……いる。聞いてる」
「初期不良、だと思いますか」
俺は天井を見た。
違う、と言える。言える材料を、俺は全部持っている。qx41。reference。書き込み始めた収集。彼女の端末が載った台帳。
でも、言えば、莉央さんはその先へ行く。現実バグの存在を知れば、彼女はその台帳のほうへ、自分の足で歩いていく。今より、ずっと危ない場所へ。
「……まだ分からない。でも、初期不良で片づけないほうがいい。打刻の生ログ、消さずに残しておくよう、サポートに伝えられるか」
「生ログ。……はい、伝えます。相馬さん、何か掴んでるんですね」
「掴みかけてる。それだけだ」
「いつもそれですね。掴みかけてる、別系統です、できる範囲です」
責める声ではなかった。むしろ、少し笑っていた。
「でも、信じます。相馬さんがそう言うなら、生ログは絶対に残します」
通話が切れた。
信じます、の一言が、刺さって抜けなかった。
俺は彼女を、何も教えないまま、調査の入口に立たせている。守るためだと言いながら、本当に守れる保証は、まだどこにもない。
——
寝る前に、規程ファイルを開いた。
第三条の末尾に、一行書き足す。
「例外を作りたくなった時刻と理由を、すべて記録すること」
今日の十時四十二分。理由、莉央を守るため。
書きながら、分かっていた。これは最後じゃない。俺はまた、揺れる。守るため、という言葉は、これからも何度でも、同じ顔で俺の前に立つ。
そのたびに、止めるものが要る。
今日は、六行の規則が止めた。次も止まる保証は、ない。
だったら、増やすべきは規則じゃない。
俺が、開かずに済む理由のほうだ。
参照を開いて確かめたくなるのは、全体が見えていないからだ。qx41 が何を、どの順で、どこから集めているのか。その絵が完成していれば、一件ずつ覗く必要はない。莉央に渡せる言葉も、そこから出る。
「MICA、明日やる。手元の材料を全部、一枚の地図に統合する。痕、揺れ、点、参照、署名、打刻。全部だ。バラバラに置いてきたものを、一つのモデルにまとめる」
「収集の全体像の再構成ですね」
「そう。それができれば、俺はもう、開きたくならない」
「論理的です。記録します」
その夜、俺は久しぶりに、少しだけ前を向いて眠った。
明日には、全部が一枚の絵になる。
そう、思っていた。
■ 技術メモ
【認可(できる≠してよい)】
認可は、「その操作をしてよいか」を確かめる仕組みです。
ログインできること(認証)と、特定のデータを見てよいこと(認可)は別物です。「できた」と「していい」を混同した設計では、技術的には可能でも本来許されない操作が通ってしまいます。
【認可の不備】
番号や鍵が通っただけで、見る資格があるかを確認しない設計は、認可の不備と呼ばれます。
第14話の IDOR も、この一種です。守る側の確認が抜けていると、悪意のある者だけでなく、善意の人間も誤って踏み込めてしまいます。
【フェイルセーフの発動】
人間の注意力は、調子のよい日ほど緩みます。
そのため、危険な操作をシステム側で自動的に止める仕組みが重要になります。作中では、前日に作った規程が、翌日の本人の暴走を止めました。「設計とは、調子のいい日の自分を信用しないこと」という考え方の実例です。
【検証できない判断】
「やらなかったこと」の結果は、確かめようがありません。
やった失敗は次に活かせますが、やらなかった選択が正しかったかは永遠に分かりません。安全のための判断には、この「確かめられない後悔」がつきまといます。




