NoctisNode
← 블로그보안2026-10-237분

Warrant canary란 무엇이며 GPG로 검증하는 방법

Warrant canary는 비밀 법적 요구를 받지 않았다는 서명된, 정기적으로 갱신되는 성명입니다. 그 한계와 GPG로 canary.txt를 검증하는 방법을 알아보세요.

짧은 답변: Warrant canary는 서비스가 보도 금지 명령이 붙은 소환장이나 국가안보서신(NSL) 같은 특정한 비밀 법적 요구를 받지 않았다고 밝히는, 정기적으로 갱신되는 서명된 성명입니다. 성명이 더 이상 갱신되지 않거나 문구가 바뀌면 독자들은 그 침묵을 경고로 받아들입니다. 게시자의 키 지문과 PGP 서명을 대조하고 서명 날짜가 최근인지 확인하는 방식으로 검증합니다.

이 글은 canary의 법적 배경, 실제 한계, 좋은 canary에 담겨야 할 내용, 그리고 NoctisNode canary를 예로 든 단계별 GPG 검증을 다룹니다.

Warrant canary의 작동 방식

이름은 광부들이 지하에 데리고 들어가던 카나리아에서 왔습니다. 새가 살아 있는 한 공기는 안전했습니다. Warrant canary도 같은 방식으로 작동합니다. 서비스는 ‘우리는 어떤 비밀 법원 명령이나 보도 금지 명령도 받지 않았습니다’ 같은 날짜가 적힌 성명을 게시하고, 정해진 일정에 따라 갱신합니다.

주로 미국에서 시작된 이 법적 아이디어는 하나의 구분에 기반합니다. 당국은 회사가 비밀 명령을 받았다는 사실을 공개하지 못하게 할 수는 있지만, 회사에 허위 성명을 게시하도록 강제하는 것은 다르고 더 어려운 요구입니다. 회사가 canary 갱신을 그냥 멈추면 아무것도 공개하지 않은 것이지만, 독자는 그 부재에서 스스로 결론을 내릴 수 있습니다.

Warrant canary의 한계

Canary는 유용한 신호이지 보증이 아닙니다. 의존하기 전에 다음 한계를 염두에 두세요.

  • ▹법적 이론은 법정에서 거의 검증되지 않았으며, 답은 나라마다 다를 수 있습니다.
  • ▹명시적으로 나열한 것만 다룹니다. 비밀 명령에 관한 canary는 일반적인 공개 법적 요청에 대해서는 아무것도 말하지 않습니다.
  • ▹갱신 중단은 모호합니다. 법적 요구를 의미할 수도 있고, 단순히 담당자가 자리를 비웠거나 실수했다는 뜻일 수도 있습니다.
  • ▹무엇이, 언제 요청되었는지, 어떤 고객이 영향을 받았는지는 알려 줄 수 없습니다.
  • ▹어떤 데이터가 존재하는지에 대해서는 아무것도 말하지 않습니다. 명확한 로깅 정책과 함께 보세요. [노로그 VPS 설명](/blog/no-logs-vps-explained)을 참고하세요.
  • ▹서명 키와 그 키를 보유한 사람들만큼만 신뢰할 수 있습니다.

좋은 warrant canary에 담겨야 할 내용

요소중요한 이유
발행일최신성을 한눈에 판단할 수 있음
갱신 일정업데이트 누락이 언제부터 의미를 갖는지 정의함
명시적인 성명 목록어떤 요구가 다뤄지는지 독자가 정확히 알 수 있음
갱신 중단의 의미에 대한 규칙‘N일이 지나면 신호로 간주’처럼 추측을 없앰
공개된 키의 PGP 서명텍스트가 운영자에게서 왔고 변경되지 않았음을 증명함
별도로 공개된 전체 키 지문올바른 키를 가져왔는지 확인할 수 있음
고정 URLcanary를 모니터링하고 보관하기 쉽게 함

NoctisNode warrant canary

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` 패키지를 설치한 뒤 `torsocks curl`로 Tor를 통해 파일을 가져올 수 있습니다.

  1. 01.2단계와 4단계에서 출력된 지문을 canary 페이지와 이 글에 공개된 지문과 비교하세요. 한 글자라도 다르면 중단하세요. 잘못된 키입니다.
  2. 02.`gpg --verify` 출력에서 `Good signature from`을 찾으세요. `BAD signature` 줄은 텍스트가 변경되었거나 파일이 손상되었다는 뜻이므로 신뢰하지 마세요.
  3. 03.키에 직접 서명하지 않았다면 `WARNING: This key is not certified with a trusted signature!`라는 줄이 나오는 것은 정상입니다. 신뢰를 확립하는 것은 1단계의 지문 확인입니다.
  4. 04.`Signature made` 날짜와 canary 텍스트 안에 적힌 날짜를 확인하세요. 둘 다 최근이어야 합니다.
  5. 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일 확인 자동화하기

서버나 cron 작업에서 canary를 모니터링한다면, 사람이 읽는 텍스트를 파싱하는 대신 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

QWarrant canary란 무엇인가요?

AWarrant canary는 서비스가 특정한 비밀 법적 요구를 받지 않았다는, 정기적으로 갱신되는 서명된 성명입니다. 갱신이 멈추면 독자는 그 침묵을 경고 신호로 받아들입니다.

Qcanary.txt란 무엇인가요?

A`canary.txt`는 일반 텍스트 warrant canary에 흔히 쓰이는 파일 이름으로, 누구나 발행자를 검증할 수 있도록 보통 PGP 서명되어 있습니다. NoctisNode는 canary를 `/canary.txt`에, 키를 `/canary-pubkey.asc`에 게시합니다.

QWarrant canary는 어떻게 검증하나요?

A`gpg --import`로 게시자의 공개 키를 가져오고, 전체 지문이 공개된 것과 일치하는지 확인한 다음, `gpg --verify canary.txt`를 실행해 최근 날짜의 유효한 서명인지 확인하세요.

QWarrant canary는 법적 구속력이 있거나 작동이 보장되나요?

A아니요. 법적 이론은 법정에서 거의 검증되지 않았고 나라마다 다르며, 갱신 중단은 단순한 운영 실수로도 생길 수 있습니다. canary는 여러 신호 중 하나로 다루세요.

QWarrant canary가 갱신되지 않으면 어떻게 해야 하나요?

A게시자의 canary 페이지와 공지를 확인하고, 보관해 둔 사본과 비교한 뒤, 민감한 데이터를 옮길지 결정하세요. NoctisNode의 경우 35일 넘게 갱신되지 않은 canary는 신호로 간주해야 합니다.

Warrant canary란 무엇이며 GPG로 검증하는 방법 · NoctisNode