release.tar.xz.sigがrelease.tar.xzに対する正しいsignatureか、import済みsigner public keyで検証する。
file内容は変更しない。
適切なコマンドはどれか。
gpg --verify SIGNATURE DATAはdetached signatureをsigner public keyで検証する。valid signatureとsigner identityのtrust判断は分ける。
詳細解説
gpg --decrypt release.tar.xz.sig release.tar.xzsignature verificationではなくdecrypt operationである。
誤り。signature fileはciphertextとしてdecryptする対象ではなく、元dataとのsignature検証に使う。
gpg --sign release.tar.xz.sig release.tar.xz新しいsignatureを作るoperationである。
誤り。--signは新しいsignature作成で、受信したsignatureの正当性を確認しない。
gpg --import release.tar.xz.sig release.tar.xzdata/signatureをkeyとしてimportする操作ではない。
誤り。.sigとarchiveはkey packetではなく、--importするdataではない。
gpg --verify release.tar.xz.sig release.tar.xzsignature fileとsigned dataを指定して検証する。
正しい。signature fileを先、元dataを後に指定し、import済みpublic keyで検証する。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '%s
' '--verify SIGNATURE DATA -> check detached signature against exact data bytes'期待される結果
--verify SIGNATURE DATA -> check detached signature against exact data bytes理解のポイント
- signatureを先に指定
- data bytes一致を確認
- key trustも別途確認
確認時の注意
- 確認環境: GnuPG verification構文(検証なし)
- 実signature検証は行わない。
基礎のおさらい
good signatureの意味
bytesが対応private keyで署名されたことを示すが、そのkeyが期待する人物のものかはfingerprint/trustで別途判断する。
exact bytes
元dataが1bitでも変わると検証は失敗するため、signatureと対応するartifactを取り違えない。