異世界転移したら魔法少女のスキルがマークダウンだった件 作:fable先輩を返して
本作はAnthropic社のClaude Opus 4.6によって執筆されました。
執筆にあたり、Skill、claude.md、その他一切のマニュアル類は使用しておりません。
# 異世界転移したら魔法少女のスキルがマークダウンだった件
# 第2話 魔王軍、TLSを導入する
---
## 第一章 不穏なパケット
異変に気づいたのは、街の東門の見回りクエストをこなしている時だった。
小型のゴブリンが三体、街道沿いの茂みに潜んでいる。いつも通り戦闘前に`mana_capture.log`を確認する。
```
yui@mahou-shell:~$ tail -f /var/log/mana_capture.log | grep goblin
```
```
[09:14:22] src=MaouSV-07 dst=goblin_088 proto=MAHOU_CMD
> CMD: PATROL route=east_road_01 speed=slow
[09:14:22] src=MaouSV-07 dst=goblin_089 proto=MAHOU_CMD
> CMD: PATROL route=east_road_01 speed=slow
[09:14:23] src=MaouSV-07 dst=goblin_090 proto=MAHOU_CMD_SEC
> [ENCRYPTED] TLS_MAHOU_v1
> Payload: a7F3x9kL2mN8pQ4w...
```
「——は?」
ゆいは二度見した。三体目だけ暗号化されている。`proto`が`MAHOU_CMD`ではなく`MAHOU_CMD_SEC`になっていて、ペイロードが読めない。
```
yui@mahou-shell:~$ fairy "三体目だけ暗号化されてるんだけど?"
```
```
ほんとだ! TLS_MAHOU_v1って書いてあるね。
たぶん魔王軍が新しい通信プロトコルをテスト中なんだよ。
全軍に展開する前にまず一部のユニットで試験運用、
っていうよくあるロールアウト手順だね!
```
「段階的デプロイ……」
ゆいの顔から血の気が引いた。テスト運用ということは、そのうち全軍に展開される。全魔物の通信が暗号化されたら、パケットキャプチャは使い物にならなくなる。
とりあえずゴブリン三体は普通に倒した。二体は平文で行動パターンがわかるし、暗号化された一体もゴブリンはゴブリンだ。光の矢二発で片付く。
問題はそんなことではない。
```
yui@mahou-shell:~$ grep "MAHOU_CMD_SEC" /var/log/mana_capture.log | wc -l
3
```
```
yui@mahou-shell:~$ grep "MAHOU_CMD_SEC" /var/log/mana_capture.log
[09:14:23] src=MaouSV-07 dst=goblin_090 proto=MAHOU_CMD_SEC ...
[09:31:05] src=MaouSV-07 dst=wolf_012 proto=MAHOU_CMD_SEC ...
[10:02:44] src=MaouSV-02 dst=treant_003 proto=MAHOU_CMD_SEC ...
```
今日の午前中だけで三件。しかもSV-07だけでなくSV-02でも発生している。
「……展開、早くない?」
---
## 第二章 証明書をよこせ
ギルドの寮に戻ったゆいは、ベッドに寝転がってひたすら暗号化パケットを解析していた。
```
yui@mahou-shell:~$ cat /var/log/mana_capture.log | grep MAHOU_CMD_SEC | head -1 > sample_encrypted.dat
yui@mahou-shell:~$ xxd sample_encrypted.dat | head -20
```
バイナリダンプを眺める。TLS_MAHOU_v1と名乗っているが、本当にTLSなのか。
```
yui@mahou-shell:~$ fairy "TLS_MAHOU_v1の暗号方式わかる?"
```
```
7Bの知識で推測するとね——
ハンドシェイクのパターンがTLS 1.2に似てるけど、
完全互換じゃないよ。魔力ベースの独自改造っぽい。
暗号スイートは……わかんない! ごめんね!
```
「謝るくらいなら推測しないで。幻覚より『わからない』のほうが百倍マシだから」
```
ボク成長した……?
```
「まあ……そうかもね」
ゆいは考えを整理した。正攻法の暗号解読は論外だ。数学的に解くのはこの世界の計算資源では不可能。前世でも無理だったものは異世界でも無理。
となると、選択肢は限られる。
一つ。暗号鍵を手に入れる。魔物サーバーの中枢に侵入して鍵を奪取する。——現時点では無理。MaouSV-MASTERの場所すらわかっていない。
二つ。中間者攻撃。魔物サーバーと魔物の間に割り込んで、通信を中継する。自分が偽の魔物サーバーのふりをして通信を復号し、読んでから本物の魔物に転送する。
……中間者攻撃、MitM。
```
yui@mahou-shell:~$ fairy "MitMを魔力通信でやるのは技術的に可能?"
```
```
理論的には可能だよ!
魔物サーバーと魔物の間に割り込んで、
こっちが偽のサーバー証明書を提示すればいいんだけど——
でもゆいちゃん、それ元の世界だったら犯罪だよ?
```
「異世界に不正アクセス禁止法はないでしょ」
```
法律の問題じゃなくて倫理の——
```
「魔王軍の通信を傍受すること自体がすでにだいぶグレーだから今さらでは」
```
……一理ある。
```
ゆいはため息をついた。技術的に可能、か。でもTLSの中間者攻撃には前提条件がある。クライアント側——つまり魔物側が、偽の証明書を本物だと信じなければならない。
普通のTLSなら、証明書の検証で弾かれるはずだ。
——普通のTLSなら。
```
yui@mahou-shell:~$ cat sample_encrypted.dat | strings | grep -i cert
```
```
CERT_VERIFY=FALSE
```
「…………」
```
yui@mahou-shell:~$ fairy "CERT_VERIFY=FALSEってまさか……"
```
```
証明書の検証を省略してるね!
つまり魔物側は、相手が本物のサーバーかどうか
確認してないってこと。
「サーバーです」って言えば信じちゃう!
```
「暗号化はしたけど証明書の検証はオフ。やっつけ実装すぎる」
```
まあ、つい最近まで平文で送ってた組織だからね。
TLS入れただけで満足しちゃったんだろうね。
よくあるよくある。
```
「元の世界でもよく見た」
ゆいは思わず笑った。平文よりはマシだが、証明書の検証をしなければ中間者攻撃は防げない。セキュリティの世界ではよく知られた落とし穴だが、この世界の魔王軍にそんな知識があるわけがない。
いける。
---
## 第三章 魔力プロキシサーバーを脳内に建てるな
ゆいはskills.mdに新しいスキルを三つ追加した。
```markdown
- **魔力プロキシ(マナプロキシ)**
- MP消費: 8/分
- 説明: 魔物サーバーと対象の魔物の間に透過プロキシとして割り込む。
- オプション:
- mode: transparent
- mitm: true
- cert_spoof: true
- max_connections: 3
- log_output: /var/log/mitm_capture.log
- **偽装サーバー証明書(スプーフ・サート)**
- MP消費: 5(生成時のみ)
- 説明: 対象の魔物サーバーの証明書を偽造する。
CERT_VERIFY=FALSEの環境でのみ有効。
- **通信リレー(マナリレー)**
- MP消費: 2/分
- 説明: 傍受した通信を遅延なく転送する。
魔物側に異常を検知されないためのスキル。
```
```
[INFO] skills.md updated. Validating...
[INFO] New skill registered: 魔力プロキシ(マナプロキシ)
[INFO] New skill registered: 偽装サーバー証明書(スプーフ・サート)
[INFO] New skill registered: 通信リレー(マナリレー)
[WARN] スキルポイント残高: 9/50 (消費: 22)
[WARN] スキルポイント残高が低下しています
```
「22ポイント……結構食うな」
```
ゆいちゃん、残り9ポイントだよ。大丈夫?
もうほとんど新スキル追加できないよ?
```
「わかってる。でも暗号化が全軍に展開されたらパケットキャプチャ自体が無意味になる。MP消費は重いけど、一時的にしか使わないし」
ゆいはさらにシェルスクリプトを書いた。
```bash
#!/bin/bash
# mitm_attack.sh - 中間者攻撃の自動化
# Usage: mitm_attack.sh <target_monster_id> <server_id>
TARGET=$1
SERVER=$2
echo "[*] Generating spoofed certificate for $SERVER..."
cast spoof_cert --target $SERVER --output /tmp/fake_cert_${SERVER}.pem
echo "[*] Inserting proxy between $SERVER and $TARGET..."
cast mana_proxy --target $TARGET --server $SERVER \
--cert /tmp/fake_cert_${SERVER}.pem \
--log /var/log/mitm_capture.log
echo "[*] Starting relay..."
cast mana_relay --target $TARGET --server $SERVER --latency 0
echo "[*] MitM active. Decrypted traffic -> /var/log/mitm_capture.log"
echo "[*] Press Ctrl+C to stop."
tail -f /var/log/mitm_capture.log
```
「よし。次の暗号化された魔物に遭遇したらテストする」
```
ゆいちゃん、ひとつ聞いていい?
```
「なに」
```
これ、魔物側から見たら通信が普通に成立してるから、
魔物は何も気づかないんだよね?
```
「そう。透過プロキシだから」
```
ということは、理論上、傍受するだけじゃなくて
通信内容を書き換えて転送することも……
```
「…………」
```
……できるよね?
```
ゆいは五秒ほど沈黙した。
「……できるけど、今はやらない」
```
なんで?
```
「コマンドを書き換えたら魔物の挙動が変わって、魔物サーバー側がすぐ異常に気づく。パケットキャプチャがバレるのと同じことになる。傍受だけなら先方は気づかないけど、改ざんしたら一発でバレる。リスクとリターンが合わない」
```
……なるほど。ゆいちゃん、ちゃんとした理由だった。
ボクはてっきり倫理的な理由で——
```
「倫理的にもやらないけどね。戦争中とはいえ、相手のシステムを乗っ取るのと覗くのは別の話でしょ」
```
! ゆいちゃんにも倫理観あった!
```
「あったよ最初から。なんだと思ってたの」
---
## 第四章 オフライン魔獣
暗号化魔物との初めての本格的な遭遇は、思いがけない形でやってきた。
ギルドの掲示板にBランク緊急クエストが貼り出された。
「街道にオーガ出没。護衛依頼」
ゆいとミラ、それにBランクの魔法少女ナナの三人で向かった。ナナは小柄な黒髪の少女で、爆発系の魔法を得意としている。
「ナナちゃん、オーガ相手は初めてだっけ?」ミラが確認する。
「うん。でも大丈夫、ゆいちゃんがまた弱点教えてくれるんでしょ? 妖精さんに聞いて」
ゆいの「事前に弱点がわかる魔法少女」という評判は、もはやギルド公認だった。全部パケットキャプチャのおかげだが、公式には「超高性能な妖精を持っている」ということになっている。ルミナが聞いたら怒りそうだ。
```
ボクのおかげってことになってるの微妙に不愉快なんだけど!
実力以上に評価されてる的な!
```
「気にしないで」
街道を進むと、大木の陰にオーガが二体。ゆいはすかさずログを確認する。
```
yui@mahou-shell:~$ tail -f /var/log/mana_capture.log | grep ogre
```
```
[14:20:33] src=MaouSV-02 dst=ogre_041 proto=MAHOU_CMD
> CMD: AMBUSH position=road_tree_07 trigger=proximity_15m
> ATTACK_PATTERN: ["smash_overhead", "sweep_horizontal", "charge"]
> WEAKNESS: 頭部(氷属性 x2.0)
[14:20:33] src=MaouSV-02 dst=ogre_042 proto=MAHOU_CMD_SEC
> [ENCRYPTED] TLS_MAHOU_v1
> Payload: kR7mX2nL9pF4qW8s...
```
「一体平文、一体暗号化——予想通り、混在してるか」
平文のほうの弱点は頭部の氷属性二倍。暗号化のほうは読めない。
——やるか。
```
yui@mahou-shell:~$ bash scripts/mitm_attack.sh ogre_042 MaouSV-02
```
```
[*] Generating spoofed certificate for MaouSV-02...
[INFO] Certificate generated: /tmp/fake_cert_MaouSV-02.pem
[*] Inserting proxy between MaouSV-02 and ogre_042...
[INFO] Proxy inserted. Connection established.
[INFO] ogre_042 accepted spoofed certificate. (CERT_VERIFY=FALSE)
[*] Starting relay...
[INFO] Relay active. Latency: <1ms
[*] MitM active. Decrypted traffic -> /var/log/mitm_capture.log
```
通った。オーガは偽の証明書をあっさり受け入れた。
```
[14:20:58] [DECRYPTED] src=MaouSV-02 dst=ogre_042 proto=MAHOU_CMD_SEC
> CMD: AMBUSH position=road_tree_08 trigger=proximity_15m
> ATTACK_PATTERN: ["smash_overhead", "grab_throw", "roar_stun", "charge"]
> WEAKNESS: 頭部(氷属性 x2.0)、ただし roar_stun 発動中は全属性耐性0.5x
> NOTE: "NEW_UNIT: 強化型試験個体。通常オーガより攻撃パターン+1、スタン付与あり"
```
「強化型……!」
通常のオーガより攻撃パターンが一つ多い。しかも咆哮スタンがある。暗号化されてる個体は新型のテスト運用も兼ねていたらしい。
「ミラさん! 右のオーガは弱点一緒で頭部の氷属性ですけど、強化型です。咆哮でスタンが入るので耳を塞いでください!」
「了解! ナナちゃん、頭部に集中砲火! 私がスタンを誘導するから!」
「わかった!」
戦闘は五分で終わった。事前に攻撃パターンがわかっている相手に負ける道理はない。
ナナが興奮気味に言った。
「ゆいちゃんの妖精すごいね! 強化型って初見の魔物なのに、なんで全部わかるの?」
「えーっと……勘?」
「勘で咆哮スタンとか攻撃パターン数まで当てる!?」
```
苦しいよゆいちゃん。
```
「あなたのせいってことにしてるんだから協力してよ」
「え、何?」
「独り言です」
ナナは怪訝そうな顔をしたが、深追いはしなかった。ゆいが虚空を見つめてブツブツ言うのはギルド内では周知の事実だった。「脳内妖精と会話している」という説明で一応は通っている。嘘ではない。ターミナルのプロンプトと会話しているだけで。
帰り道、ゆいはMitMのMP消費を確認した。
```
yui@mahou-shell:~$ cat /proc/mahou/mp
78/200
```
「うーん、やっぱり重いな。プロキシ+証明書偽造+リレーで合計15MP/分。五分の戦闘で75MP……」
```
通常のパケットキャプチャが3MP/分だから、五倍のコストだね。
長期戦になったらMP切れ確実だよ。
```
「だから全軍が暗号化される前に、もっと根本的な対策が必要なんだよなあ……」
---
## 第五章 ログは嘘をつかない
ギルドに戻ると、掲示板の前に人だかりができていた。
「何かあったんですか?」ゆいがミラに聞く。
「A級緊急クエストよ。鉱山地帯に魔物の大群が出現したらしいわ。数が尋常じゃないって」
掲示板には赤い紙が貼られていた。
> **【A級緊急】鉱山地帯・魔物大量発生**
> 推定個体数:100以上
> 種別:混成(ゴブリン、オーク、オーガ、種別不明の新型あり)
> Aランク魔法少女を主体とした討伐隊を編成する。
> Bランクの参加も可。
百体以上。ゆいは別の意味で顔が青くなった。
```
yui@mahou-shell:~$ fairy "百体の魔物が一斉に通信してたら、ログの量やばくない?"
```
```
やばいね! 単純計算で1体あたり毎秒1〜2パケットとして、
100体で毎秒100〜200パケット。
ゆいちゃんの脳内ストレージ大丈夫?
```
「…………」
```
yui@mahou-shell:~$ df -h /var/log/
Filesystem Size Used Avail Use%
/dev/mahou0 2.0G 1.1G 900M 55%
```
900MBしか空いていない。百体の魔物ログを全部保存したらあっという間に埋まる。
「ログローテーション設定しなきゃ……」
ゆいは討伐隊の作戦会議にBランクとして参加しながら、脳内ではひたすらインフラの準備を進めていた。
```bash
#!/bin/bash
# logrotate_mana.sh - 魔力通信ログのローテーション
LOG_DIR="/var/log"
MAX_SIZE_MB=100
for logfile in mana_capture.log mitm_capture.log; do
size=$(du -m "$LOG_DIR/$logfile" | cut -f1)
if [ "$size" -gt "$MAX_SIZE_MB" ]; then
timestamp=$(date +%Y%m%d_%H%M%S)
mv "$LOG_DIR/$logfile" "$LOG_DIR/archive/${logfile}.${timestamp}"
gzip "$LOG_DIR/archive/${logfile}.${timestamp}"
touch "$LOG_DIR/$logfile"
echo "[LOGROTATE] $logfile archived and compressed"
fi
done
```
さらに、百体のMitMを個別に張るのは現実的ではないので、別のアプローチを考えた。
```
yui@mahou-shell:~$ fairy "百体にMitMを個別に張ったらMPどのくらい?"
```
```
暗号化個体が仮に半分の50体だとして、
50体 × 15MP/分 = 750MP/分。
ゆいちゃんのMAX MPは200だから……
```
「3秒で死ぬ計算だね」
```
秒で死ぬって初めて聞いた。
```
「個別MitMは無理。別の手を考えよう」
ゆいは考え込んだ。個々の魔物との通信に割り込むのではなく、もっと上流——魔物サーバー自体に近い場所で傍受できないか。
```
yui@mahou-shell:~$ grep "src=MaouSV" /var/log/mana_capture.log | \
awk '{print $2}' | sort -u
```
```
src=MaouSV-02
src=MaouSV-07
```
鉱山地帯はSV-02の管轄だろう。百体すべてが同じサーバーから指令を受けているなら——
「サーバー側のブロードキャストを傍受すればいいんだ」
百体の魔物に同じ指令を送る場合、サーバーはマルチキャストで一括送信するはず。個別の通信を傍受するのではなく、サーバーから発信されるブロードキャストパケットを空間上で捕まえる。暗号化されていても、同一の鍵で同一のコマンドが百体に送られるなら——
「——同じコマンドを受けた魔物の挙動を、平文組と暗号化組で比較すれば、暗号を解かなくても中身が推測できる」
```
ゆいちゃん天才では?
```
「天才じゃなくて、既知平文攻撃の応用。平文と暗号文が同時に手に入る状況なら、暗号文の中身は平文から推測できる。MitMすら要らない」
ゆいは急いで解析スクリプトを書いた。
```bash
#!/bin/bash
# known_plaintext_correlate.sh
# 平文パケットと暗号化パケットの相関分析
# 同一タイミング・同一サーバーから発信された
# 平文CMDの内容で暗号化CMDの中身を推定する
LOG="/var/log/mana_capture.log"
while IFS= read -r line; do
ts=$(echo "$line" | grep -oP '\[\K[0-9:]+')
if echo "$line" | grep -q "MAHOU_CMD_SEC"; then
# 暗号化パケット → 同一タイムスタンプの平文を検索
plain=$(grep "$ts.*MAHOU_CMD[^_]" "$LOG" | head -1)
if [ -n "$plain" ]; then
echo "[CORRELATE] Encrypted packet at $ts"
echo " -> Likely same as plaintext: $plain"
fi
fi
done < <(tail -f "$LOG")
```
完璧ではない。推測でしかない。でもMitMの十五分の一のMP消費で百体分の情報が手に入る。
---
## 第六章 金曜日の本番障害・再
討伐隊は翌朝、鉱山地帯に向かった。
メンバーはAランク四人、Bランク六人の計十人。ゆいは後衛の情報支援担当として配置された。「ゆいの妖精の情報は信頼できる」というミラの推薦があったからだ。
```
ボクの評価がインフレしてる気がする。
実態は7Bのくせに。
```
「黙ってて。今から忙しくなるから」
鉱山の入り口に到着すると、すでに魔物の気配が充満していた。
```
yui@mahou-shell:~$ bash scripts/known_plaintext_correlate.sh &
yui@mahou-shell:~$ tail -f /var/log/mana_capture.log | head -30
```
ログが一気に流れ始める。
```
[10:01:02] src=MaouSV-02 dst=goblin_101 proto=MAHOU_CMD
> CMD: DEFEND zone=mine_entrance formation=phalanx
[10:01:02] src=MaouSV-02 dst=goblin_102 proto=MAHOU_CMD
> CMD: DEFEND zone=mine_entrance formation=phalanx
[10:01:02] src=MaouSV-02 dst=orc_055 proto=MAHOU_CMD_SEC
> [ENCRYPTED] TLS_MAHOU_v1
[CORRELATE] Encrypted packet at 10:01:02
-> Likely same as plaintext: CMD: DEFEND zone=mine_entrance formation=phalanx
```
「よし、相関分析が効いてる。入り口はファランクス陣形で防御態勢」
ゆいは声を上げた。
「入り口の敵は密集陣形です! 範囲攻撃で一気に崩せます!」
「了解!」ミラが前衛を指揮する。「全前衛、範囲スキルで突入!」
一掃。ログを確認。
```
[10:03:15] src=MaouSV-02 dst=ALL proto=MAHOU_CMD (BROADCAST)
> CMD: RETREAT zone=mine_entrance -> mine_shaft_02
> CMD: REINFORCE zone=mine_shaft_02 count=30
> CMD: DEPLOY unit_type=ogre_enhanced count=3 zone=mine_shaft_02
```
「奥に三十体退却、強化型オーガ三体を投入するようです! 第二坑道に集結してます!」
「三十体……ナナちゃん、爆発系の広域スキルの準備を」
「了解!」
ゆいの情報支援は完璧に機能していた。敵の再配置も増援も、サーバーからの指令として事前に読める。魔法少女たちは常に一手先を知った状態で戦えた。
——問題はここからだった。
第二坑道に突入して十五分。敵の数がようやく減り始めた頃、ログに異変が走った。
```
[10:18:44] src=MaouSV-02 dst=ALL proto=MAHOU_CMD (BROADCAST)
> CMD: PROTOCOL_UPGRADE
> PARAM: {
> new_protocol: "MAHOU_CMD_SEC",
> apply_to: "ALL_UNITS",
> effective: "IMMEDIATELY",
> reason: "ANOMALOUS_ENEMY_PREDICTION_DETECTED"
> }
```
```
[10:18:45] src=MaouSV-02 dst=goblin_103 proto=MAHOU_CMD_SEC
> [ENCRYPTED] TLS_MAHOU_v1
[10:18:45] src=MaouSV-02 dst=goblin_104 proto=MAHOU_CMD_SEC
> [ENCRYPTED] TLS_MAHOU_v1
[10:18:45] src=MaouSV-02 dst=orc_056 proto=MAHOU_CMD_SEC
> [ENCRYPTED] TLS_MAHOU_v1
```
「——全部暗号化された」
```
ゆいちゃん! 全ユニットにプロトコルアップグレード
かかった! 平文が消えたよ!
相関分析のベースがなくなっちゃう!
```
「ANOMALOUS_ENEMY_PREDICTION_DETECTED——こっちの予測が正確すぎて怪しまれた、か」
やりすぎた。敵の行動を先読みしすぎた結果、魔物サーバー側のAIが「情報が漏れている」と判断して緊急対応を取った。本番環境での緊急パッチ適用。しかもホットデプロイで全ユニット即時適用。
```
ゆいちゃん、相関分析も使えない、
MitMは50体以上に張れない、
どうするの?
```
「…………」
ゆいはミラに走り寄った。
「ミラさん、状況が変わりました。私の妖精の索敵が効かなくなりました」
ミラは驚いたが、すぐに頷いた。
「わかった。ここからは通常戦闘ね。全員、索敵は自力で! 基本通りにいくわよ!」
ここからは純粋な戦闘力の勝負だ。ゆいは後衛から前衛のサポートに回りながら、脳内では別のことを考えていた。
平文がなくなった。相関分析は使えない。MitMは個別に張るしかなく、コストが高すぎる。
——でも。
```
yui@mahou-shell:~$ tail -f /var/log/mana_capture.log | grep BROADCAST
```
暗号化されたパケットが流れ続けている。読めないが、パケットの存在自体は見える。
```
[10:22:01] src=MaouSV-02 dst=ALL proto=MAHOU_CMD_SEC (BROADCAST)
> [ENCRYPTED] Payload size: 2048 bytes
[10:22:04] src=MaouSV-02 dst=ogre_enhanced_001 proto=MAHOU_CMD_SEC
> [ENCRYPTED] Payload size: 512 bytes
[10:22:04] src=MaouSV-02 dst=ogre_enhanced_002 proto=MAHOU_CMD_SEC
> [ENCRYPTED] Payload size: 4096 bytes
```
ペイロードサイズ。宛先。タイミング。
暗号化されていても、メタデータは読める。
「——トラフィック分析だ」
```
え?
```
暗号の中身は読めなくても、通信のパターンから情報を推測する手法。宛先が特定のユニットに集中していれば、そこに何か重要な指令が飛んでいる。ペイロードが大きければ複雑な命令。ブロードキャスト直後に全ユニットが動きを変えれば、それは全体指令の証拠。
完璧ではない。中身はわからない。でも「何かが来る」ことだけは事前にわかる。
```bash
#!/bin/bash
# traffic_analysis.sh - 暗号化通信のメタデータ解析
LOG="/var/log/mana_capture.log"
while IFS= read -r line; do
if echo "$line" | grep -q "BROADCAST"; then
size=$(echo "$line" | grep -oP 'size: \K[0-9]+')
if [ "$size" -gt 2000 ]; then
echo "=== 大規模指令検知! 全体に重要コマンド発信中 ==="
fi
fi
# 特定ユニットへの連続パケットを検知
dst=$(echo "$line" | grep -oP 'dst=\K[a-z_0-9]+')
if [ -n "$dst" ]; then
count=$(grep -c "dst=$dst" <<< "$(tail -5 "$LOG")")
if [ "$count" -ge 3 ]; then
echo "=== $dst に連続指令! 特殊行動の可能性 ==="
fi
fi
done < <(tail -f "$LOG")
```
「みんな! 中身はわからないけど、大きな動きがある時は教えられます!」
「それだけでも助かるわ!」ミラが叫ぶ。
精度は落ちた。「頭部が弱点で氷属性二倍」みたいな具体的な情報はもう出せない。でも「今から大技が来る」「特定のユニットに指令が集中している」くらいは伝えられる。
——そして三十分後。残りの魔物を全て片付けた時、ゆいのログに奇妙なパケットが流れた。
```
[10:55:02] src=MaouSV-02 dst=MaouSV-MASTER proto=MAHOU_CMD_SEC
> [ENCRYPTED] Payload size: 8192 bytes
> HEADER (unencrypted): {
> report_type: "BATTLE_RESULT",
> result: "DEFEAT",
> note: "緊急プロトコル切替後も敵の行動予測精度が残存。
> メタデータ解析の可能性を検討。
> 次回アップデートでパケットサイズの均一化とダミー
> トラフィック注入を提案。"
> }
```
ゆいはログを見て、ふっと笑った。
「学習が早い。パディングとダミートラフィックまで提案してる」
```
MaouSV-02のエンジニア、優秀だね。
```
「ちゃんとした対策が来るのも時間の問題か……」
鉱山を出る。夕暮れの空が赤い。八体の魔物を失い、装備はぼろぼろだが、全員無事だ。
ミラがゆいの隣に並んだ。
「途中から索敵が弱くなったわね。何があったの?」
「敵がセキュリティを強化したんです。私の妖精の手口がバレかけてて」
「……魔物にバレるって、どういう状況?」
「ネットワーク——じゃなくて、えーと……魔物を操っている上位存在がいるんですけど、そいつがこっちの情報収集に気づいて対策を打ち始めたというか」
ミラは黙ってゆいの横顔を見つめていた。
「ゆいちゃん。あなた、ときどき別の世界の人みたいなこと言うわね」
ゆいは一瞬どきっとした。
「……まあ、実際そうなので」
「冗談よね?」
「半分くらい」
ミラは首を傾げたが、それ以上は聞かなかった。
---
## エピローグ CHANGELOG.mdを書け
夜。いつもの寮の自室。ゆいは`README.md`のTODOリストを更新していた。
```markdown
## CHANGELOG
### v0.2.0 - 暗号化対応
- MitMスキル3種追加(マナプロキシ、スプーフ・サート、マナリレー)
- 既知平文攻撃による相関分析スクリプト追加
- トラフィック分析スクリプト追加
- ログローテーション実装
### 課題
- MaouSV-02が学習してきている。パディングとダミートラフィック
の導入を提案しているログを確認。次のアップデートで
トラフィック分析も無効化される可能性が高い
- MitMはCERT_VERIFY=FALSEに依存。証明書検証が実装されたら終わり
- 根本的にはC2サーバーへの直接アクセスが必要
- MaouSV-MASTERの所在地の特定が急務
## 新TODO
- [ ] MaouSV-MASTERの通信パターンからIPレンジ…じゃなくて
魔力発信源の位置を三角測量で特定する
- [ ] 魔物サーバーのAPI仕様書がどこかにないか探す(ないだろうけど)
- [ ] ルミナを13Bにアップグレード……は引き続き保留
- [ ] 紅茶を買う(前回から持ち越し)
```
```
APIドキュメントは草。あるわけないでしょ。
あとボクのアップグレードは?
```
「保留って書いてあるでしょ」
```
保留が長すぎるよ! もう二ヶ月だよ!
```
「二ヶ月で13Bにする予算なんてないよ。スキルポイントだって残り9しかないし」
```
……そっか。
ねえゆいちゃん、ひとつ思ったんだけど。
```
「なに」
```
魔王軍のセキュリティがどんどん上がってきてるよね。
平文→TLS→証明書検証→パディング→ダミートラフィック。
ゆいちゃんが傍受するたびに対策されて、いたちごっこになってる。
```
「うん」
```
それってさ。
ゆいちゃんがこの世界に来たせいで、
魔王軍のセキュリティレベルが爆上がりしてるってことだよね。
```
「…………」
```
ゆいちゃんが来なかったら、
魔王軍はずっと平文のままだったのに。
```
「…………ルミナ?」
```
はい?
```
「今日はsuspendしないであげるから、もう黙ってて」
```
やった! おやすみゆいちゃん!
```
ゆいは天井を見つめた。
ルミナの言うことにも一理ある。ゆいが傍受するたびに魔王軍は対策を打ち、セキュリティを強化してきた。ゆいがいなければ平文のまま——いや、そもそも平文だろうが暗号化だろうが、この世界の魔法使いには関係がない。通信を読む術がないのだから。
ゆいだけが気づいて、ゆいだけが利用して、ゆいだけが対策される。
——なんだか、前の世界でペネトレーションテストのレポートを出して、翌週にパッチを当てられて、翌月にまた新しい穴を探す、あの仕事と同じだ。
いたちごっこ。でもそれが、インフラエンジニアという仕事だった。穴を見つけて、塞がれて、また別の穴を探す。
「まあ」とゆいは呟いた。「慣れてるし」
```
yui@mahou-shell:~$ echo "おやすみ" >> /var/log/diary.log
```
目を閉じた。
魔王軍のエンジニアも、今頃セキュリティパッチを書いているのだろう。どこかの暗い城で、ゆいと同じようにターミナルを睨みながら。
——たぶん、あっちも残業だ。
---
*(第2話・おわり)*
*——次回予告:ゆい、MaouSV-MASTERの位置を特定するため「魔力パルスの三角測量」を試みる。しかし測定ポイントを三箇所確保するために、まさかの出張クエストが発生。ミラ「遠征って言いなさいよ」ゆい「出張です。出張精算書も出します」*
当方エンジニアですらなく、Opus先生のことを信じながらたまにcodex先輩を呼び出してレビューしてもらってOpus先生に伝えてるだけの作者です。
この小説はめんくさいのでcodex先輩のレビューは通してないため、実際にこれで問題ないのかはよくわかりません。
読者の皆様におかれましては、もしなにか間違いがあったら優しくご指摘いただけますと幸いです。