公開鍵とは?解説
公開鍵は暗号鍵ペアの共有可能な半分で、署名の検証や鍵の所有者宛てのメッセージの暗号化に使われます。
公開鍵は配布されることを意図しています。秘密鍵の対となるものであり、その秘密のパートナーとは異なり、広く公開しても安全であり、実際には有用です。人々はあなたの公開鍵を使ってあなたの署名を検証し、あなただけが読めるデータを暗号化します。CI では、公開鍵はパイプラインが artifact、イメージ、コミットが本当に信頼できる署名者から来たことを確認する手段です。
公開鍵とは何か
公開鍵は鍵ペアの半分で、秘密鍵から導出されますが共有しても安全です。秘密鍵が署名したものを検証し、秘密鍵だけが復号できるデータを暗号化します。署名にも復号にも使えないため、配布してもセキュリティを損ないません。
公開鍵がすること
秘密鍵に対する 2 つの補完的な仕事、検証と暗号化です。署名者の公開鍵で署名を検証して作者と整合性を確認します。受信者の公開鍵でデータを暗号化し、秘密鍵を持つ彼らだけがそれを読めるようにします。
なぜ公開しても安全か
数学は一方向です。公開鍵を知っても秘密鍵は明らかになりません。ですからリポジトリ、鍵サーバー、または証明書に掲載できます。公開鍵暗号の要点はまさに、公開鍵を広く配布することで、秘密を決して露出させずに検証を可能にすることです。
CI における公開鍵
パイプラインは信頼できる公開鍵を使って署名済み artifact を検証します。署名済みコミット、署名済みリリース、または署名済みコンテナイメージが期待される署名者から来たことを確認します。SSH デプロイ鍵と署名検証ステップは、どちらも正しい公開鍵を信頼済みとして構成していることに依存します。
# Verify a signed image with a public key in CI
steps:
- run: cosign verify --key cosign.pub \
ghcr.io/acme/app:1.4.0Latchkey に関する注記
公開鍵で署名を検証することは Latchkey runner でも同じように実行される単純な CLI ステップなので、パイプラインに署名検証のゲートを追加するのに Latchkey 固有のセットアップは不要です。
重要なポイント
- 公開鍵は鍵ペアの共有可能な半分で、署名の検証やその所有者宛ての暗号化に使われます。
- 署名も復号もできないため、公開することは安全であり、それが意図された用途です。
- CI は公開鍵を使って、署名済みのコミット、リリース、イメージが信頼できる署名者から来たことを検証します。