通信魔法陣の暗号化が完了してから三日後、最初の報告が入ったのは深夜だった。
「リオン、起きろ。緊急だ」
アルヴィスの声が、工房として借りている王都の魔術局分室に響いた。リオンは資料室の机で寝落ちしていたが、その一言で意識が覚醒した。
「どこが落ちました」
「落ちていない。——だが、おかしい」
アルヴィスが差し出したのは、通信魔法陣の受信記録だった。羊皮紙に浮かび上がった文字を読んで、リオンの顔が曇る。
「『第三区画防壁魔法陣の緊急メンテナンス指示。魔力供給を即座に停止し、出力調整パラメータを以下に変更せよ——』」
差出人の欄には、自分の名前が記されていた。
「……僕、こんな指示出してません」
「知っている。お前はここにいたからな」
アルヴィスの声は静かだが、その眼光は鋭かった。
「第三区画の担当魔術師から確認の連絡があった。『リオン殿からの緊急メンテ指示を受けたが、本当にこのタイミングで防壁を停止していいのか』と」
「止めてないですよね!?」
「当然だ。私が待ったをかけた」
リオンは受信記録を手に取り、【診断】を発動した。魔力パターン、筆跡、送信元の魔法陣ID——すべてが本物に見える。
だが、偽物だ。
「これ、なりすましです」
工房の診断室に戻り、エルナとミーナも緊急召集した。
「リオンさんの名前を騙って、偽の指示を送る……?」
エルナが青ざめた声で呟いた。
「通信経路の暗号化をしたから、直接盗聴はできなくなった。だから今度は——僕の名を語って、間違った指示を送りつけてきた」
「なりすまし攻撃ですね」
ミーナが帳簿にメモを取りながら言った。ミーナは技術は分からないが、工房で蓄積した経験から、攻撃のパターンを理解し始めている。
「通信が暗号化されているとはいえ、送信元の魔法陣IDまでは偽装されていません。魔力パターンも、古い記録から模倣しただけでしょう。問題は」
リオンは壁の監視結晶石を見上げた。
「誰が本物のリオンからの指示か、受け取る側が判断できないことです」
アルヴィスが腕を組んだ。
「暗号化で通信内容は守られた。だが、送信者の正当性は保証されていなかった。お前の設計の穴だな」
「……ごもっともです」
前世でもあった。SSL化しても、送信者認証をしていなければフィッシングメールは防げない。セキュリティは多層防御が基本だ。
「つまり、送信者が『本物のリオンさん』だと証明する仕組みが必要なんですね」
エルナがまっすぐに言った。
「その通り」
リオンは紙を広げ、設計を始めた。
「認証トークンを導入します。僕から送る正式な指示には、必ず『固有の魔力パターン刻印』を付与する。これは僕の魔力を直接通信魔法陣に注入して生成するので、第三者には模倣できません」
「魔力の指紋、ということか」
「はい。さらに」
リオンは図に二つ目の要素を書き加えた。
「ダブルチェック体制を導入します。緊急メンテ指示を受け取った担当者は、実行前に必ず魔術局の管理者——つまり局長か、僕に直接確認する手順を義務化します」
「手間が増えるな」
「増えます。でも、これをやらないと」
リオンは受信記録を指差した。
「誰かが僕の名を語って、『防壁を停止しろ』と指示したらどうなりますか」
静寂が落ちた。
防壁が停止すれば、外部からの攻撃を防げなくなる。魔獣の群れが街に侵入し、住民が危険に晒される。それが夜間であれば——被害は計り知れない。
「……手順を作る」
アルヴィスが低い声で言った。
「王都の全魔術師に通達する。リオンからの指示には必ず『認証トークン』が付与される。それがない指示は偽物と見なせ。そして、緊急メンテ指示を受けた場合は」
「必ず局長か私に直接確認してください。通信魔法陣ではなく、対面か音声通信で」
「なぜだ?」
「通信魔法陣自体が偽装される可能性があるからです。相手の顔を見るか、声を聞くかして、本人確認を二重にする」
アルヴィスは一瞬黙ったが、やがて頷いた。
「……『信頼』だけでは守れない、ということか」
「信頼は仕組みで担保するんです」
翌朝、リオンは魔術局の地下でリーティアと向き合っていた。
「管理者。認証トークンの実装について質問がある」
「どうぞ」
「認証トークンは管理者の魔力パターンを刻印する仕組みだが、管理者の魔力が枯渇している場合はどうする?」
「……考えてませんでした」
リーティアの金色の瞳が細くなった。
「管理者は、時々詰めが甘い」
「すみません」
「別に責めているわけではない。——提案がある」
リーティアが半透明の手を魔法陣の上にかざすと、古代文字が浮かび上がった。
「古代の中枢魔法陣には『管理者代行認証』の機能がある。管理者が私に認証を委譲すれば、私が代わりにトークンを生成できる」
「それ、セキュリティ的に大丈夫ですか?」
「管理者は私を信用していないのか」
「そういう問題じゃなくて——単一障害点になります。リーティアが侵害されたら、認証機構ごと乗っ取られる」
リーティアは一瞬黙った。そして、少しだけ、表情が緩んだ。
「……そうか。管理者は、私すら疑うのか」
「疑うというか、リスクを分散したいだけです」
「ふふ」
リーティアが笑った。数百年ぶりに顕現してから、彼女が笑ったのはこれが初めてだった。
「その慎重さ、嫌いではない。では、認証トークンは二重構造にしよう。管理者の魔力刻印と、私の中枢魔法陣認証を併用する。片方が偽装されても、もう片方で検知できる」
「それなら」
「それなら?」
「安心して任せられます」
リーティアの瞳が一瞬、明滅した。
認証トークンの実装には丸一日かかった。リオンの魔力を中枢魔法陣に登録し、通信魔法陣のプロトコルに認証層を追加する。リーティアの協力で設計はスムーズだったが、王都全域の通信魔法陣にパッチを適用するのは骨が折れた。
「これで、リオンさんからの指示には必ず『証明書』が付くんですね」
エルナが通信魔法陣の刻印板を眺めながら言った。
「はい。デジタル署名と同じです。送信者が本物か、改竄されていないか、受信側で検証できます」
「すごい……」
「前の世界では当たり前だったんですけどね」
ミーナが帳簿を閉じた。
「全魔術師への通達文も完成しました。『リオン・辺境インフラ顧問からの正式な指示には、必ず認証トークンが付与される。トークンのない指示は偽物と見なし、実行前に必ず局長または本人に確認すること』——これでいいですか?」
「完璧です」
アルヴィスが部屋に入ってきた。
「通達は明朝、全魔術師に配布する。今夜中に偽指示が来た場合に備えて、夜間当番には口頭で伝えた」
「ありがとうございます」
「礼はいい。——それより、気になることがある」
アルヴィスは地図を広げた。王都の区画図だ。
「偽の指示が送られた第三区画は、王都の外郭防壁の要だ。ここが停止すれば、北門からの侵入経路が無防備になる」
「つまり、」
「攻撃者は王都の構造を理解している」
リオンの背筋に冷たいものが走った。
「MITMもインジェクションも、偽指示も——全部、計画的です。誰かが王都のインフラを狙って、段階的に攻撃をエスカレートさせている」
「帝国か」
「可能性が高いです」
エルナが不安げに言った。
「認証トークンで防げますよね?」
「なりすまし攻撃は防げます。でも、相手は必ず次の手を打ってきます」
その夜。
リオンは工房の窓から王都の夜景を見ていた。無数の灯火魔法陣が街を照らし、防壁魔法陣が淡い光の膜を張っている。
この光の下に、何万もの人々が暮らしている。彼らは魔法陣が守ってくれることを信じて、安心して眠っている。
だが、その魔法陣が——誰かに狙われている。
「リオンさん、まだ起きてたんですか」
エルナが温かい飲み物を持ってきた。
「ありがとう」
「……不安ですか」
「少しだけ」
「私もです」
二人は並んで夜景を眺めた。
「前の世界でも、こういうことはありましたか?」
「ありました。サイバー攻撃は日常茶飯事です。ただ」
リオンは飲み物に口をつけた。
「前の世界では、落ちても死人は出ない。せいぜいサービスが止まって、クレームが来るだけです。でも、この世界では——防壁が落ちたら、人が死ぬ」
「……」
「重いですよね、責任が」
「はい」
エルナは真剣な顔で頷いた。
「でも、リオンさんは一人じゃないです。私がいます。局長もいます。リーティアもいます。みんなで守ればいいんです」
「……そうだな」
リオンは小さく笑った。
「前の世界では、一人で抱え込んで潰れた。今度は——ちゃんと頼ります」
「それでいいんです」
エルナが微笑んだ。朝日に照らされた笑顔とは違う、夜の静けさの中での優しい表情だった。
リオンはその横顔を見て——ほんの少しだけ、心が温かくなるのを感じた。
翌朝、認証トークン付きの正式な通達文が王都全域の魔術師に配布された。
午後、最初の確認依頼が入った。
「リオン殿、第五区画の灯火魔法陣に調整指示が届いたのですが」
「認証トークンは?」
「……付いていません」
「では、偽物です。無視してください」
担当魔術師は安堵の声を上げた。
「助かりました。トークンがなかったので、念のため確認しようと思ったのですが」
「正解です。その判断、素晴らしい」
通信が切れた後、リオンはエルナと顔を見合わせた。
「また偽指示が来た」
「でも、防げました」
「ええ。今度は」
次の攻撃が来るまでの、時間稼ぎができた。
リオンは監視結晶石を見上げた。すべて正常に明滅している。
暇なのが最高なんだよ、運用は。でも、この戦いが終わるまで、暇にはなれそうにない。
「さて、次は何を仕掛けてくるか……」
リオンは手順書を開き、次の対策を考え始めた。
【あとがき】
第39話「偽の指示書」でした。なりすまし攻撃の発生。技術だけでなく人間の判断が試される局面です。