Warrant canary(令状カナリア)とは?GPG で検証する方法
Warrant canary とは、秘密の法的要求を受け取っていないことを示す、署名付きで定期的に更新される声明です。その限界と、GPG で canary.txt を検証する方法を解説します。
結論:Warrant canary(令状カナリア)とは、サービスが、緘口令付きの召喚状や国家安全保障書簡(NSL)など特定の秘密の法的要求を受け取っていないことを述べる、署名付きで定期的に更新される声明です。声明の更新が止まったり文言が変わったりすると、読者はその沈黙を警告とみなします。検証するには、PGP 署名を発行者の鍵フィンガープリントと照合し、署名日が最近であることを確認します。
この記事では、カナリアの背後にある法的な考え方、その現実的な限界、良いカナリアに含まれるべき内容、そして NoctisNode のカナリアを実例とした GPG による検証手順を解説します。
Warrant canary の仕組み
名前の由来は、かつて炭鉱夫が地下に持ち込んだカナリアです。鳥が生きている限り、空気は安全でした。Warrant canary も同じように機能します。サービスは「秘密の裁判所命令や緘口令を一切受け取っていない」といった日付入りの声明を公開し、決まったスケジュールで更新します。
主に米国で生まれたこの法的な考え方は、ある区別に基づいています。当局は企業が秘密の命令を受け取ったことの開示を禁じられるかもしれませんが、企業に虚偽の声明を公開させることは、それとは別の、より困難な要求です。企業がカナリアの更新をただやめれば、何も開示したことにはなりませんが、読者はその不在から自ら結論を導けます。
Warrant canary の限界
カナリアは有用なシグナルですが、保証ではありません。頼りにする前に、以下の限界を念頭に置いてください。
- ▹法的な理論は裁判でほとんど検証されておらず、国によって答えが異なる可能性があります。
- ▹対象となるのは明示的に列挙された内容だけです。秘密の命令に関するカナリアは、通常の公開された法的要請については何も語りません。
- ▹更新の途絶は曖昧です。法的要求を意味することもあれば、単に担当者が不在だった、あるいはミスをしただけのこともあります。
- ▹何が、いつ要求され、どの顧客が影響を受けたのかはわかりません。
- ▹どんなデータが存在するかについては何も語りません。明確なログポリシーと組み合わせましょう。[ノーログ VPS の解説](/blog/no-logs-vps-explained)を参照。
- ▹その信頼性は、署名鍵とそれを保持する人々の信頼性を超えません。
良い warrant canary に含まれるべき内容
| 要素 | 重要な理由 |
|---|---|
| 発行日 | 鮮度をひと目で判断できる |
| 更新スケジュール | 更新がないことに意味が生じる時点を定める |
| 声明の明示的なリスト | どの要求が対象かを読者が正確に把握できる |
| 途絶が何を意味するかのルール | 「N日を過ぎたらシグナルとみなす」など、推測の余地をなくす |
| 公開鍵による PGP 署名 | 文面が運営者からのもので、改ざんされていないことを証明する |
| 別途公開された完全な鍵フィンガープリント | 正しい鍵をインポートしたか確認できる |
| 固定の URL | カナリアを監視・アーカイブしやすくする |
NoctisNode の warrant canary
NoctisNode は PGP 署名付きのプレーンテキストのカナリアを `/canary.txt` で公開しており、署名用の公開鍵は `/canary-pubkey.asc` に、説明はwarrant canary ページにあります。カナリアは毎月手作業で更新されます。35日を超えて更新されていない場合は、シグナルとみなしてください。
署名鍵のフィンガープリントは `3804 DA83 956F B4C1 1D87 36C3 129C E677 8F20 92E9` です。末尾の8文字や16文字だけでなく、必ず完全なフィンガープリントを照合してください。
Warrant canary を検証する手順
以下のコマンドは Debian 12/13 と Ubuntu 24.04 で動作します。ツールがなければ、まず `sudo apt install gnupg curl` でインストールしてください。プライバシーをさらに高めたい場合は、`tor` と `torsocks` パッケージをインストールしたうえで、`torsocks curl` を使って Tor 経由でファイルを取得できます。
- 01.手順2と4で表示されたフィンガープリントを、カナリアページとこの記事に掲載されているものと照合します。1文字でも違えば中止してください。間違った鍵です。
- 02.`gpg --verify` の出力で `Good signature from` を探します。`BAD signature` の行は、文面が改ざんされたかファイルが破損していることを意味するので、信頼しないでください。
- 03.自分で鍵に署名していなければ、`WARNING: This key is not certified with a trusted signature!` という行が出るのは正常です。信頼を確立するのは手順1のフィンガープリント確認です。
- 04.`Signature made` の日付と、カナリアの本文に書かれた日付を確認します。どちらも最近のものであるべきです。
- 05.署名が35日より古い場合はシグナルとみなし、カナリアページで告知がないか確認してください。
# 1. Download the canary and the public key
curl -fsSLO https://noctisnode.com/canary.txt
curl -fsSLO https://noctisnode.com/canary-pubkey.asc
# 2. Inspect the key without importing it
gpg --show-keys --with-fingerprint canary-pubkey.asc
# 3. Import the key
gpg --import canary-pubkey.asc
# 4. Confirm the fingerprint of the imported key
gpg --fingerprint 3804DA83956FB4C11D8736C3129CE6778F2092E9
# 5. Verify the signature on the canary
gpg --verify canary.txt35日チェックの自動化
サーバーや cron ジョブでカナリアを監視する場合は、人間向けのテキストを解析するのではなく、GPG の機械可読なステータス出力を使いましょう。以下のスクリプトは、署名がない場合、別の鍵による署名の場合、35日より古い場合に失敗します。ダウンロードしたばかりの `canary.txt` があるディレクトリで実行してください。
#!/bin/sh
FPR=3804DA83956FB4C11D8736C3129CE6778F2092E9
line=$(gpg --status-fd 1 --verify canary.txt 2>/dev/null | grep ' VALIDSIG ')
case "$line" in
*"$FPR"*) ;;
*) echo "FAIL: no valid signature from $FPR"; exit 1 ;;
esac
ts=$(echo "$line" | awk '{print $5}')
age=$(( ( $(date +%s) - ts ) / 86400 ))
echo "Canary signature is $age days old"
[ "$age" -le 35 ] || { echo "WARNING: older than 35 days"; exit 2; }Note · 途絶は調査すべきシグナルであって、法的要求の証拠ではありません。カナリアページと運営者の告知を確認し、比較のために過去のカナリアのコピーを自分でアーカイブしておきましょう。
よくある質問
QWarrant canary とは何ですか?
AWarrant canary とは、サービスが特定の秘密の法的要求を受け取っていないことを示す、署名付きで定期的に更新される声明です。更新が止まると、読者はその沈黙を警告のサインとみなします。
Qcanary.txt とは何ですか?
A`canary.txt` はプレーンテキストの warrant canary によく使われるファイル名で、通常は誰が発行したかを誰でも検証できるよう PGP 署名されています。NoctisNode はカナリアを `/canary.txt` で、鍵を `/canary-pubkey.asc` で公開しています。
QWarrant canary を検証するには?
A`gpg --import` で発行者の公開鍵をインポートし、完全なフィンガープリントが公開されているものと一致することを確認したうえで、`gpg --verify canary.txt` を実行し、最近の日付で正しい署名(Good signature)があることを確認します。
QWarrant canary には法的拘束力がある、または必ず機能するのですか?
Aいいえ。法的な理論は裁判でほとんど検証されておらず国によっても異なりますし、途絶は単純な運用ミスで起きることもあります。カナリアは複数あるシグナルの1つとして扱ってください。
QWarrant canary が更新されていない場合はどうすればよいですか?
A発行者のカナリアページと告知を確認し、アーカイブしたコピーと比較して、機密データを移すかどうかを判断します。NoctisNode の場合、35日を超えて更新されていないカナリアはシグナルとみなしてください。