小説置き場

第34話「確認ダイアログの壁」

3,360文字 約7分

カインは来ると分かっていた。

 おれたちがデータセンター東京第三の周辺を嗅ぎ回っている以上、モデレーターの巡回と衝突するのは時間の問題だ。問題は相手がカインだということだけだ。

 渋谷の裏路地。廃ビルの間の狭い通路。おれが選んだ戦場だった。狭い場所ならカインの機動力を制限できる。壁面にAR表示を重ねやすい。詐欺UIの展開密度を上げられる。

 理屈の上では有利なはずだった。

「来た」リサが囁いた。足音を聞き分けている。エンタープライズの屋内警護基本課程で叩き込まれた技術だ。

「硬いブーツ。一人。歩調は一定。カインよ」

 通路の奥からカインが現れた。今日は一人だ。前回のように部下を連れていない。単独行動。おれたちを侮っているのか——いや、違う。部下を連れていないのは、部下がおれの詐欺UIに引っかかるリスクを排除するためだ。カインは分かっている。おれの戦術が効くのは「普通の」人間だけだと。

「クロヤ。リサ」

 カインがおれたちの名前を呼んだ。名前で呼ぶモデレーターは初めてだ。ガシマは「ゴミ」と呼んだし、堂本は「被疑者」と呼んだ。カインは名前で呼ぶ。

「投降を勧める。データセンター周辺での不審行動は規約第二百十二条違反だ。投降すれば、凍結処理は最低限度で済む」

「お断りだ」

「予想通りだ。では排除する」

 カインが歩き始めた。走らない。歩く。

 おれはデバイスのキーを叩いた。第一波。フィッシング。カインのAR視界に偽のモデレーター司令部通信を割り込ませる。

 『緊急通達:第三部隊カイン隊長へ。現在地の作戦は中止。直ちに帰投せよ。Root直轄命令。認証コード:RX-7742』

 認証コードまでつけた。ミナミのデータから抽出した、実在するモデレーター通信のフォーマットに完全準拠している。普通のモデレーターなら一瞬は信じる。一瞬あればいい。その一瞬でおれは次の手を打てる。

 カインは偽通信を三秒間見つめた。

「認証コードRX-7742。——本日の認証コードはRX-8801だ。偽装通信。無視」

 おれの心臓が跳ねた。認証コードが日替わりで変わることは知っていた。だがカインは今日の認証コードを即座に暗唱した。毎日確認しているのだ。自分で。省略せずに。

 第二波。トロイの木馬検出フェイクアラート。カインのAR視界にセキュリティ警告を大量に表示する。

 『危険:マルウェア検出。ニューロ・リンクが外部から侵入を受けています。即座にセーフモードに移行してください』

 『緊急:ポート443に不正アクセスを検出。ファイアウォールが無効化されています』

 『警告:個人情報が外部に送信されています。今すぐ通信を遮断してください』

 三つ同時。画面を埋め尽くす。パニックを誘発するための飽和攻撃だ。

 カインは立ち止まった。

 三つの警告を一つずつ読んだ。一つ目を読み、二つ目を読み、三つ目を読んだ。

「ポート443はHTTPS。ニューロ・リンクの通信はポート443を使わない。偽装。——三つとも偽装。無視」

 全部読んでから判断している。無視するにしても、中身を確認してから無視する。カインには「見ないで閉じる」という選択肢がない。全てを確認し、全てを検証し、その上で行動する。

 おれの詐欺UIは「見ないで閉じる」心理を突く技術だ。見てから判断する相手には効かない。原理的に効かない。

 第三波。ワンクリック詐欺。カインの足元の路面にAR表示を重ねる。カインが次の一歩を踏み出した瞬間、強制サブスク登録のUIが発動するように設定した。

 カインは足を上げた。

 そして下ろす前に、足元を見た。

 AR表示を確認した。

 踏まなかった。一歩横にずれて、罠のない路面を踏んだ。

「地面にも仕掛けるのか。丁寧な仕事だ」

 丁寧な仕事。おれの詐欺UIを「丁寧な仕事」と評価するモデレーターは初めてだ。

 おれの手が止まった。第一波、第二波、第三波。全て無効化された。残りの手は近接ポート接続だが、カインの接近戦能力はおれを上回っている。前回の遭遇で証明済みだ。0.3秒で射程に入られた。あの速度で動く相手の背後を取って、三秒間密着するのは不可能に近い。

「リサ。広告」

 おれは最後の手段を試みた。リサの広告無敵時間。リサのフリープランに広告が来るタイミングで、カインの攻撃を無効化する。

 リサが前に出た。AR視界に広告のカウントダウンが始まっている。あと十二秒で次の広告が来る。五秒間の無敵時間。

 カインが動いた。

 だがカインは攻撃しなかった。立ち止まった。時計を見た。

「広告まであと十一秒。その間は攻めない。無駄だからだ」

 おれの血が凍った。カインはリサの広告タイミングを計算している。前回と同じだ。広告の無敵時間を知った上で、その時間を避けて攻撃する。

 五秒間の広告が始まった。リサの視界がジャックされる。カインは動かない。広告が終わった。

 カインが動いた。広告終了の0.1秒後。次の広告までの約六分間が、カインの攻撃窓だ。

 速い。

 おれはデバイスを構えてキーを叩いた。何でもいい。ポップアップでもフェイクアラートでもいい。カインの視界に何かを割り込ませて、一瞬でも足を止めさせたい。

 カインは全てを確認し、全てを無視し、前進し続けた。

 確認ダイアログ。おれの詐欺UIは本質的に「確認せずにOKを押す」人間を対象としている。確認する人間には効かない。そしてカインは、戦闘の最中であっても、全てを確認する。

「撤退する」おれはリサの腕を掴んだ。

「また?」

「今日は無理だ。こいつに勝つ方法が、おれの引き出しにはない」

 カインは追ってこなかった。前回と同じだ。路地の入り口で足を止め、おれたちの背中を見ていた。

「クロヤ」

 カインの声が背後から聞こえた。

「お前の技術は認める。だが、嘘は嘘だ。嘘で作った隙は、確認すれば消える。次も同じだ。お前が嘘をつく限り、おれは確認する。永遠に」

 おれは走りながら、カインの言葉を処理していた。

 嘘が通じない相手。確認を省略しない人間。おれの戦術体系の根本を否定する存在。

 四ブロック走って、廃ビルに飛び込んだ。リサが隣で息を切らしている。

「二連敗ね」

「二連敗だ」

「どうする?」

 おれは壁にもたれかかった。デバイスの画面を見た。今日展開した詐欺UIのログが残っている。フィッシング、フェイクアラート、ワンクリック詐欺。全部効かなかった。

「おれの詐欺UIは、相手の『信じやすさ』を突く技術だ。信じないやつには効かない。カインは何も信じない。UIを信じない。通信を信じない。警告を信じない。全部自分の目で確認してから判断する」

「全部?」

「全部だ。だから遅いはずなんだ。確認するぶん、行動が遅くなるはずだ。なのにあいつは速い。確認する時間を込みで、あの速度で動いている。どれだけ訓練すればああなる」

 リサが何かを考えていた。交渉者の目。在庫を読む目。だが今読んでいるのは在庫ではなく、カインの行動原理だ。

「カインは何も信じないんじゃないわ」

「何?」

「何も信じないなら、あんなに速くは動けない。カインは一つだけ信じてるの。自分の確認を。自分の目で見て、自分の頭で判断して、自分の手で操作する。そのプロセスだけを信じてる。つまり——『正しく確認すれば、正しい結論に辿り着く』と信じてるの」

 おれはリサを見た。

「それが弱点になるのか」

「弱点にはならない。でも——使い道はある。カインが確認するのは、UIに表示されたものだけよ。UIに表示されないもの、確認すべきだとカイン自身が気づいていないものは——確認できない」

 おれの脳が回転した。リサの言葉が処理される。確認ダイアログの壁を超えるには、確認ダイアログに表示されないものを使う。

「カインが確認しないもの。カインにとって確認の必要がないもの。それは」

「自分自身の信念よ。カインは自分の正しさを確認しない。正しさは前提だから。前提は検証しない」

 リサがおれを見た。おれはリサを見た。

「次は——私が戦う」

 リサの声には確信があった。交渉者の確信。在庫を読む者の確信ではなく、信仰を読む者の確信だ。

 おれは頷いた。三度目の遭遇が決戦になる。

 カインの確認ダイアログの壁を超えるのは、おれの詐欺UIではない。リサの読みだ。

 おれはデバイスを閉じた。干し肉を取り出そうとして、袋が空だった。今日は飯抜きだ。

 腹が鳴った。無課金の体は正直だ。