Что такое warrant canary и как проверить его через GPG
Warrant canary — подписанное, регулярно обновляемое заявление о том, что тайных юридических требований не поступало. Его ограничения и как проверить canary.txt через GPG.
Коротко: warrant canary — это регулярно обновляемое подписанное заявление, в котором сервис сообщает, что не получал определённых тайных юридических требований, например повесток с запретом на разглашение (gag order) или national security letters. Если заявление перестаёт обновляться или меняется его формулировка, читатели воспринимают это молчание как предупреждение. Проверяется он сверкой PGP-подписи с отпечатком ключа издателя и тем, что дата подписи свежая.
В этой статье — юридическая идея, стоящая за canary, его реальные ограничения, что должен содержать хороший canary, и пошаговая проверка через GPG на примере canary NoctisNode.
Как работает warrant canary
Название пришло от канареек, которых шахтёры когда-то брали под землю: пока птица жива, воздух безопасен. Warrant canary работает так же. Сервис публикует датированное заявление вроде «мы не получали тайных судебных приказов или запретов на разглашение» и обновляет его по фиксированному расписанию.
Юридическая идея, возникшая в основном в США, опирается на различие: власти могут запретить компании раскрывать факт получения тайного приказа, но принудить компанию опубликовать ложное заявление — другое и куда более сложное требование. Если компания просто перестаёт обновлять canary, она ничего не раскрыла, но читатели могут сами сделать выводы из его отсутствия.
Ограничения warrant canary
Canary — полезный сигнал, а не гарантия. Помните об этих ограничениях, прежде чем на него полагаться.
- ▹Юридическая теория почти не проверена в судах, и ответ может различаться между странами.
- ▹Он покрывает только то, что явно перечислено. Canary о тайных приказах ничего не говорит об обычных публичных юридических запросах.
- ▹Пропуск обновления неоднозначен: он может означать юридическое требование, а может — что ответственный человек был в отъезде или ошибся.
- ▹Он не скажет, что именно запросили, когда и каких клиентов это затронуло.
- ▹Он ничего не говорит о том, какие данные существуют. Сочетайте его с понятной политикой логирования; см. [что значит VPS без логов](/blog/no-logs-vps-explained).
- ▹Он заслуживает доверия ровно настолько, насколько ключ подписи и люди, которые его держат.
Что содержит хороший warrant canary
| Элемент | Почему это важно |
|---|---|
| Дата выпуска | Позволяет сразу оценить свежесть |
| График обновления | Определяет, когда отсутствие обновления становится значимым |
| Явный список заявлений | Читатели видят, какие именно требования покрываются |
| Правило, что означает пропуск | Убирает догадки, например «считайте сигналом через N дней» |
| PGP-подпись опубликованным ключом | Доказывает, что текст исходит от оператора и не изменён |
| Полный отпечаток ключа, опубликованный отдельно | Позволяет убедиться, что вы импортировали правильный ключ |
| Постоянный URL | Упрощает мониторинг и архивирование canary |
Warrant canary NoctisNode
NoctisNode публикует подписанный PGP текстовый canary по адресу `/canary.txt`, открытый ключ подписи — по адресу `/canary-pubkey.asc`, а пояснения — на странице warrant canary. 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 curl`, установив пакеты `tor` и `torsocks`.
- 01.Сравните отпечаток, выведенный на шагах 2 и 4, с опубликованным на странице canary и в этой статье. Если отличается хоть один символ — остановитесь: у вас не тот ключ.
- 02.В выводе `gpg --verify` ищите `Good signature from`. Строка `BAD signature` означает, что текст изменён или файл повреждён, — не доверяйте ему.
- 03.Строка `WARNING: This key is not certified with a trusted signature!` нормальна, если вы сами не подписывали ключ. Доверие устанавливает именно сверка отпечатка на шаге 1.
- 04.Проверьте дату `Signature made` и дату, написанную внутри текста canary. Обе должны быть свежими.
- 05.Если подписи больше 35 дней, считайте это сигналом и проверьте страницу canary на наличие объявлений.
# 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.txtАвтоматизация проверки 35 дней
Если вы следите за canary с сервера или из 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 · Пропуск обновления — повод разобраться, а не доказательство юридического требования. Проверьте страницу canary и объявления оператора и храните собственные архивные копии предыдущих canary для сравнения.
FAQ
QЧто такое warrant canary?
AWarrant canary — регулярно обновляемое подписанное заявление о том, что сервис не получал определённых тайных юридических требований. Если оно перестаёт обновляться, читатели воспринимают молчание как тревожный знак.
QЧто такое canary.txt?
A`canary.txt` — распространённое имя файла для текстового warrant canary, обычно подписанного PGP, чтобы любой мог проверить, кто его выпустил. NoctisNode публикует свой canary по адресу `/canary.txt`, а ключ — по адресу `/canary-pubkey.asc`.
QКак проверить warrant canary?
AИмпортируйте открытый ключ издателя через `gpg --import`, убедитесь, что полный отпечаток совпадает с опубликованным, затем выполните `gpg --verify canary.txt` и проверьте, что подпись верна и дата свежая.
QИмеют ли warrant canary юридическую силу и гарантированно ли работают?
AНет. Юридическая теория почти не проверена в судах и различается по странам, а пропуск обновления может быть вызван и простой операционной ошибкой. Считайте canary одним сигналом из нескольких.
QЧто делать, если warrant canary не обновлён?
AПроверьте страницу canary и объявления издателя, сравните с архивными копиями и решите, стоит ли переносить чувствительные данные. Для NoctisNode canary, не обновлявшийся больше 35 дней, следует считать сигналом.