第17話 消された一行
ログは嘘をつかない。
八日前、配送バグを直したあの夜に、俺はそう書いた。嘘をつくのは、ログを読む人間か、ログを書いた人間か、ログに出ないところで起きた何かだ、と。
朝、その信条が、正面から崩れた。
——
日課の差分確認だった。
寝る前の状態と、朝の状態を比べる。規程を作ってから、毎朝やっている。残留の数値。触らないログの行数。観測ファイルのハッシュ。異常がないことを、数字で確かめてから一日を始める。
行数が、合わなかった。
昨夜、未修正領域を三分類したときの観測ログ。あの作業ログが、一行、足りない。
「MICA、昨夜の分類ログ、行数は」
「あなたの記録では、二百十四行です」
「今、何行ある」
「二百十三行です」
「削除した覚えはない」
「削除ログもありません。最初から二百十三行だったかのように、整合が取れています」
俺は画面に顔を近づけた。
一行が、ない。それも、消した跡すらない。普通、行を消せば、削除の操作がどこかに残る。タイムスタンプが飛ぶ。ハッシュが変わる。何かしらの引っかかりが出る。
これは、最初からその行が存在しなかったかのように、前後が綺麗につながっている。
「俺が寝ぼけて消したか」
「あなたの入力デバイスのログに、該当時刻の操作はありません。スリープ中です」
「ファイルシステムのジャーナルは」
「該当する書き込みエントリがありません」
「それは、おかしい」
「はい。技術的に、おかしいです」
ファイルを書き換えれば、書き換えた記録が残る。それが残らないということは、ファイルだけでなく、ファイルを監視している記録のほうにも、同時に手が入ったということだ。
家の鍵をこじ開けた泥棒が、防犯カメラの映像からも自分を消していく。そういう種類の手口だ。
背筋が冷えた。
これまでの異物は、全部「向こうが残していったもの」だった。痕。揺れ。署名。向こうが何かをした、その痕跡を、俺が拾っていた。
これは逆だ。
向こうが、俺のものを消していった。俺の記録の、内側に手を入れて。
「観察されている」だと思っていた。
違った。「介入されている」だ。
——
幸い、俺は用心深い。
正確には、過去の俺が用心深かった。
MICA のローカル記録は、追記専用で設計してある。書いたら、消せない。上書きもできない。新しい行を後ろに足すことしかできない。
重要な記録を、変更できない場所へ二重に残す。当たり前の用心だ。銀行の取引記録が、後から書き換えられないのと同じ。一度「入金」と書いたら、それを「出金」に直せてはいけない。だから台帳は、追記しかできない構造で守る。
俺は自分の観測環境に、同じ仕組みを入れていた。便利だからじゃない。エンジニアの、ほとんど強迫的な習慣として。
「MICA、お前の追記専用記録のほうに、昨夜の二百十四行目は残ってるか」
「残っています。追記専用領域は、変更操作を受け付けません」
「出せ」
復元された一行が、画面に出た。
それは、署名の出現時刻の一覧だった。qx41 の、これまで観測した全実行時刻。収集者の、活動の記録。
消されたのは、これだった。
向こうは——いや、向こうの誰かは、qx41 の活動記録を、俺の手元から消そうとした。
「収集者が、自分の足跡を消しに来たのか」
口に出してから、違う、と思った。
収集者は、足跡を残す側だ。八日間、ずっと残してきた。雑に、大量に、連番で。あいつらは隠す気がない。隠す技術もない。reference を連番で振るような連中が、ファイルシステムのジャーナルから自分を消すような繊細な真似を、するわけがない。
俺は、消し方そのものを解析し始めた。
——
消し方には、癖が出る。
雑な削除は、残骸を残す。前後の整合が崩れる。タイムスタンプが飛ぶ。素人の改ざんは、消した事実が消せない。
これは、違った。
依存関係を、先に外している。その行を参照している別の記録を、順番に切り離してから、本体を消している。残骸が出ないように、破棄の順序が計算されている。整合性を保ったまま、一行だけを、世界から抜き取っている。
綺麗だった。
吐き気がするほど、綺麗だった。
そして、手が止まった。
この破棄順。依存を先に外して、残骸を出さないように、奥から手前へ消していく、この順序。
——見覚えがある。
俺が、投影レイヤを消すときに編み出した順序と、同じだ。
知らない参照の残骸を出さないために、何度も試して、たどり着いた、あの消し方。表示レイヤを奥から閉じて、参照カウントを先に落として、最後に本体を破棄する、あの手順。
俺だけが考えたと思っていた。あの夜、机の前で、一人で。
「MICA。この消し方、俺の破棄順と一致するか」
長い沈黙があった。MICA が、本当に照合している沈黙だった。
「……構造的に一致します。依存解決の順序、残骸抑制の手法、いずれもあなたの破棄処理と同型です」
俺は、椅子の背にもたれた。天井を見た。
消したのは、収集者じゃない。
収集者は、こんな消し方を知らない。
これは、俺と同じことを考える奴の手だ。俺と同じように、残骸を嫌って、整合性を守って、綺麗に消すことに価値を置く奴。
俺が八日かけてたどり着いた消し方に、向こうは、もういる。
集める者がいる。雑に、大量に、足跡を残しながら。
そして、消す者がいる。静かに、綺麗に、足跡ごと。
少なくとも、二ついる。
そして消す者のほうは——俺の手つきを知っているのか、それとも、俺と同じ結論に、先に着いていたのか。
どちらにしても、嫌な話だった。
——
夕方、莉央さんから電話が来た。
これまでの連絡と、声が違った。報告でも、相談の前置きでもない。決めた人間の声だった。
「相馬さん。私、動こうと思います」
「動く」
「顧客先の打刻ログを、自分で直接もらいに行きます。それを持って、品質保証部に正式に話を通します。会社の調査チームは、私に何も聞いてこないので。待ってても、たぶん何も回ってこないので」
俺は、画面の、消された一行のことを考えた。
向こうの手は、俺の作業環境の内側まで届いている。莉央さんが動けば、彼女もその視界に入る。止めるべきだ。安全なのは、動かないことだ。
だが、莉央さんの判断は、正しい。自分のプロダクトの異常を、作った本人が追う。会社の不合理に流されずに。それは、正しい。
そして、なぜ危険なのかを、俺は彼女に説明できない。
「……これ、やってもいいことだと思いますか」
莉央さんが聞いた。許可を求めているんじゃない。背中を、押してほしがっている。
「やっていい」
俺は言った。
「ただし、二つ守ってくれ。一つ、正式なルートで起票させること。記録に残る形で動くこと。一人で抱えないこと」
「分かりました。もう一つは」
「打刻ログは、必ず端末の外に複製を残すこと。紙でもいい。写真でもいい。とにかく、端末の中だけに置くな。元データが消えても、手元に残るようにしておけ」
短い沈黙があった。
「……複製、ですか。それ、変なお願いですよね。普通、ログって消えないものなのに」
そのとおりだ。普通、ログは消えない。だが、消える。今朝、俺の手元で、一行が消えた。痕跡ごと。莉央さんの集める打刻ログも、同じ手で消されうる。だから、外に出しておけ。
それを、俺は説明できない。
「変なお願いだ。それは認める」
「理由は、聞かないほうがいいやつですか」
「……今は」
また、沈黙があった。今度は、長かった。
「分かりました」
莉央さんは、言った。
「相馬さんがそう言うなら、理由ごと信じます。複製、絶対に残します」
理由ごと信じます。
その一言が、刺さって、抜けなかった。
彼女は、俺が何かを隠していることに、とっくに気づいている。気づいていて、それでも、信じる側を選んだ。説明されないまま、俺の言葉だけを持って、危ない場所へ歩いていく。
仕事の発注元と請負人。それだけの関係だったはずだ。それが、いつの間にか、説明のない信頼を渡される関係に変わっていた。
嬉しいはずだった。
なのに、ひどく、重かった。
「莉央さん」
「はい」
「……気をつけて、とだけ言わせてくれ。それ以上は言えないけど」
「珍しいですね。相馬さんが、心配してくれるの」
電話の向こうで、少し笑う声がした。
「行ってきます」
通話が切れた。
その夜、莉央さんから短いメッセージが届いた。正式な調査チケットの番号と、「複製、二重に取りました」の一文。
俺は、それを見て、少しだけ息をついた。
——
それから、念のため、過去ログを全部走査した。
消されたのが、本当に一行だけなのかを確かめるために。
結果は、最悪だった。
一行じゃなかった。
過去八日分の観測ログの中で、qx41 の署名に触れた行だけが——複数の箇所で、同じ破棄順で、同じ綺麗さで——抜き取られていた。
俺が追記専用記録を持っていなければ、気づきもしなかった。
誰かが、署名の存在そのものを、俺の手元から消そうとしている。
集める者は、足跡を残す。
消す者は、その足跡を、消して回る。
二つの手が、俺の机の上で、すれ違っている。
そして消す者は、俺の消し方を知っている。
——俺より、先に。
■ 技術メモ
【ログ改ざんの検知】
ログは記録のために使われますが、書き換えられてしまえば証拠になりません。
普通、ファイルを書き換えると、書き換えた操作自体がどこかに記録されます(ファイルシステムのジャーナルなど)。その記録ごと消されている場合、攻撃者がシステムの内側にまで手を伸ばしていることを意味します。
【追記専用(append-only)記録】
書いた後に変更・削除ができず、新しい行を末尾に足すことしかできない記録方式です。
銀行の取引台帳のように、一度書いた内容を後から書き換えられては困る場面で使われます。改ざんされても、追記専用の控えと突き合わせれば、消された内容を復元し、改ざんを証明できます。
【手口の同定】
削除や攻撃の「やり方」には、作業者の癖が出ます。
依存関係をどの順で外すか、残骸をどう抑えるか、といった手順の特徴を解析することで、別々の痕跡が同じ人物・同じ手法によるものか、あるいは技術レベルが違う別人によるものかを推定できます。
【脅威の層】
一つの現場に、技術レベルや目的の異なる複数の関与者がいることがあります。
雑に大量の痕跡を残す者と、その痕跡を綺麗に消していく者では、技術も意図も異なります。痕跡の質の違いから、関与者が一人ではないと見抜けることがあります。




