Claude Code GPG署名検証 — manifestとコード署名の確認手順
Claude Codeのリリースバイナリが改ざんされていないかを、manifest.jsonの検出署名とプラットフォーム別のコード署名で検証する手順をまとめます。
Claude Codeのバイナリ整合性はどう担保されているか
Claude Codeの各リリースは、プラットフォームごとのバイナリのSHA256チェックサムを記載したmanifest.jsonを公開しています。このmanifestはAnthropicのGPG鍵で署名されており、manifestの署名を検証できれば、そこに列挙された全プラットフォームのバイナリを間接的に検証できます。
セキュリティ審査やサプライチェーン監査でダウンロード物の真正性を確認したい場合、この記事の手順で「ダウンロードしたバイナリが公式にAnthropicが署名したものと一致するか」を自分の手元で確認できます。通常のインストール手順自体はClaude Code install完全ガイドにまとめてあるので、本記事は検証の1点に絞ります。
検証に必要なもの
manifestの署名検証にはgpgとcurlが入ったPOSIXシェルが要ります。Windowsの場合はGit BashかWSL上で実行してください。バイナリ本体のコード署名を追加で確認したい場合は、macOSならcodesign、WindowsならGet-AuthenticodeSignatureをPowerShellで使います。
手順1: 署名鍵をインポートしてfingerprintを確認する
リリース署名鍵は固定のURLで公開されています。まずインポートします。
curl -fsSL https://downloads.claude.ai/keys/claude-code.asc | gpg --importインポートした鍵のfingerprintを表示します。
gpg --fingerprint security@anthropic.com出力に次のfingerprintが含まれることを確認してください。
31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACEこの照合を省略すると、以降のどれだけ厳密な署名検証も「誰の鍵で署名されたか分からないものを検証している」状態になってしまいます。最初のこの1手順が実質的に一番重要です。
手順2: manifestと署名ファイルを取得する
検証したいリリースのバージョン番号をVERSIONに指定して、manifestと検出署名(detached signature)をダウンロードします。
REPO=https://downloads.claude.ai/claude-code-releases
VERSION=2.1.89
curl -fsSLO "$REPO/$VERSION/manifest.json"
curl -fsSLO "$REPO/$VERSION/manifest.json.sig"手順3: manifestの署名を検証する
ダウンロードした2ファイルに対して署名検証を実行します。
gpg --verify manifest.json.sig manifest.json検証に成功するとGood signature from "Anthropic Claude Code Release Signing <security@anthropic.com>"という行が出ます。同時にWARNING: This key is not certified with a trusted signature!という警告も出ますが、これは新規にインポートした鍵につきものの表示で、検証結果そのものとは関係ありません。鍵の真正性は手順1のfingerprint照合で、署名の妥当性はGood signatureの行で、それぞれ別に確認できていることになります。
手順4: バイナリのチェックサムをmanifestと突き合わせる
manifest.jsonのplatforms.<platform>.checksumに記載された値と、手元のバイナリのSHA256を比較します。カレントディレクトリにclaudeバイナリがある前提のコマンドです。インストール済みのネイティブバイナリを検証する場合は、~/.local/share/claude/versions/配下の該当バージョンのパスに対して実行します。
Linuxの場合。
sha256sum claudemacOSの場合。
shasum -a 256 claudeWindows PowerShellの場合。
(Get-FileHash claude.exe -Algorithm SHA256).Hash.ToLower()出力された値がmanifest.json内の対応するchecksumと完全に一致すれば、バイナリの整合性検証は完了です。
プラットフォームごとのコード署名も確認する
manifestの署名検証に加えて、個々のバイナリにはOS標準のコード署名も付いています。検証方法はOSごとに異なります。
| プラットフォーム | 署名者 | 確認コマンド |
|---|---|---|
| macOS | 署名者Anthropic PBC(Apple公証済み) | 確認コマンドcodesign --verify --verbose ./claude |
| Windows | 署名者Anthropic, PBC | 確認コマンドGet-AuthenticodeSignature .\claude.exe |
| Linux | 署名者個別の署名なし | 確認コマンドmanifest署名で代替 |
Linuxのバイナリは個別のコード署名を持ちません。ネイティブインストーラーや直接ダウンロードで入手した場合はmanifestの署名検証が唯一の確認手段になります。apt・dnf・apkでインストールした場合は、パッケージマネージャー自体がリポジトリの署名鍵で自動的に検証するため、この記事の手順を毎回手動でなぞる必要はありません。リポジトリ経由の導入手順はClaude Code apt installでのLinuxパッケージ導入と更新にまとめています。
検証に失敗した場合の対応
gpg --verifyがBAD signatureを返す、あるいはチェックサムがmanifest.jsonの値と一致しない場合、そのバイナリは検証不能な状態にあります。優先度が高い切り分けはダウンロードの破損で、manifest.json・manifest.json.sig・バイナリ本体をdownloads.claude.aiから取得し直して再検証するのが最初の一手になります。再取得後も一致しない場合は、ネットワーク経路上での改ざん(社内プロキシのTLS中間者化を含む)や配布元の異常という可能性が残るため、その環境でのインストールを保留し、社内のセキュリティ窓口かAnthropicへの報告に切り替えるのが安全側の対応です。検証エラーが出たまま実行を続けると、この検証フロー自体の意味が失われます。
CI/CDパイプラインに組み込む場合
セキュリティ審査担当者がこの検証を1回きりの手作業で終わらせたくない場合、手順1〜4はそのままシェルスクリプト化してCIのデプロイゲートに組み込めます。fingerprintの照合だけは自動化の外に置き、鍵のfingerprintをリポジトリ内の定数として固定しておくと、鍵自体が差し替えられた場合の検知にもなります。gpg --verifyの終了コードとチェックサム比較の結果を両方ANDで見て、どちらか一方でも失敗すればデプロイを止める構成が安全側です。検証ログはビルド成果物と一緒に保存しておくと、後日の監査で「いつ・どのバージョンを・どの鍵で検証したか」を追跡できます。
よくあるつまずき
gpg --verifyがBAD signatureを返す
manifest.jsonかmanifest.json.sigのどちらかが破損しているか、組み合わせが異なるバージョンのものになっています。両ファイルを同じVERSIONで取得し直してください。ネットワーク経由のダウンロードが途中で切れると発生しやすい症状です。
fingerprintの表示形式が手元の記録と違って見える
gpg --fingerprintの出力は4文字ごとにスペースで区切られた形式です。ハイフンやコロン区切りで記録している場合は、区切り文字を無視して英数字だけを比較してください。
manifest.json.sigとmanifest.jsonを別々に開いてしまう
検出署名(detached signature)は署名対象と別ファイルになっているため、manifest.json.sig単体をgpgで開いても何も検証できません。gpg --verify manifest.json.sig manifest.jsonのように、署名ファイルと対象ファイルの両方を同じコマンドに渡してください。順序は署名ファイルが先、対象ファイルが後です。
macOSのcodesignが署名なしと報告する
ダウンロード後にquarantine属性の影響で検証コマンドがブロックされることがあります。xattr -d com.apple.quarantine ./claudeで属性を外してから再実行すると解消するケースが多いです。
よくある質問
manifest署名の検証だけで十分ですか、コード署名の確認も必要ですか
用途によります。配布元の真正性を確認したいだけならmanifest署名の検証で十分です。macOS・Windowsでシステムのゲートキーパー機構が信頼するかまで確認したい場合は、OS標準のコード署名検証も合わせて実行してください。
apt/dnf/apkでインストールした場合もこの手順は必要ですか
必須ではありません。パッケージマネージャーがリポジトリの署名鍵を使って自動的に検証するためです。手動で二重チェックしたい場合のみ、この記事の手順を使ってください。
古いバージョンのバイナリは検証できませんか
v2.1.89より前のリリースには検出署名が付いていないため、この記事の署名検証手順は使えません。manifest.json内のチェックサムとの突き合わせだけは可能です。
fingerprintが一致しない場合はどうすればよいですか
インポートした鍵か、ダウンロード経路のどちらかに問題がある可能性があります。ダウンロード元URLがdownloads.claude.aiであることを確認したうえで、鍵の再ダウンロードとインポートをやり直してください。一致しないまま検証を進めないでください。
まとめ
Claude Codeのバイナリ整合性は、manifest.jsonへのGPG署名という1点に集約されています。手順は鍵のインポートとfingerprint照合、manifestと検出署名の取得、署名検証、チェックサムの突き合わせの4段階で、最初のfingerprint照合を飛ばさないことが検証全体の信頼性を決めます。macOS・Windowsではさらにプラットフォーム標準のコード署名も確認できます。パッケージマネージャー経由でインストールする場合の署名検証の扱いは前段で紹介した記事を、Alpine環境固有の導入手順はClaude Code Alpine Linuxセットアップを参照してください。