カインは来ると分かっていた。
おれたちがデータセンター東京第三の周辺を嗅ぎ回っている以上、モデレーターの巡回と衝突するのは時間の問題だ。問題は相手がカインだということだけだ。
渋谷の裏路地。廃ビルの間の狭い通路。おれが選んだ戦場だった。狭い場所ならカインの機動力を制限できる。壁面に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ではない。リサの読みだ。
おれはデバイスを閉じた。干し肉を取り出そうとして、袋が空だった。今日は飯抜きだ。
腹が鳴った。無課金の体は正直だ。