最終更新:

共通鍵暗号と公開鍵暗号の違いは?TLS・署名・鍵交換を整理


暗号化・署名・鍵共有を区別 共通鍵暗号 送信側と受信側が秘密を共有 大量のデータを保護 例:AES-GCM 鍵の保管・更新も必要 公開鍵技術 公開鍵と秘密鍵の組 暗号化・署名・鍵共有の用途 署名は内容を隠す操作ではない 相手の公開鍵かを確認 TLSでは役割を分けて組み合わせる 暗号化・署名・鍵共有を区別 共通鍵暗号 送信側と受信側が秘密を共有 大量のデータを保護 例:AES-GCM 鍵の保管・更新も必要 公開鍵技術 公開鍵と秘密鍵の組 暗号化・署名・鍵共有の用途 署名は内容を隠す操作ではない 相手の公開鍵かを確認 TLSでは役割を分けて組み合わせる
TLSでは役割を分けて組み合わせる
ひよこ ひよこ
共通鍵暗号って何?
ペンギン先生 ペンギン先生
暗号化する側と復号する側が同じ秘密の鍵を共有する方式だよ。大量のデータを保護するのに適していて、AESなどが使われる。鍵を知っている相手は復号できるので、鍵の保存と受け渡しが大事なんだ。
ひよこ ひよこ
公開鍵暗号は鍵が2つあるの?
ペンギン先生 ペンギン先生
公開してよい公開鍵と、自分だけが持つ秘密鍵を組で使うよ。公開鍵暗号方式による暗号化では、受信者の公開鍵で保護した内容を対応する秘密鍵で復号する。公開鍵技術には署名や鍵共有もあるけれど、それぞれ役割が違うんだ。
ひよこ ひよこ
公開鍵なら誰から受け取ってもいい?
ペンギン先生 ペンギン先生
だめだよ。その鍵が本当に通信したい相手のものかを確認しないと、攻撃者の鍵に差し替えられる。HTTPSでは証明書と信頼する認証局、接続先の名前などを確認する。秘密でなくてよいことと、誰の鍵でもよいことは違うんだ。
ひよこ ひよこ
デジタル署名は「秘密鍵で暗号化」なの?
ペンギン先生 ペンギン先生
一般的にはそう説明しないほうが正確だね。署名は秘密鍵で署名値を作り、公開鍵で検証する仕組み。内容の改ざんと署名鍵との対応を確認するもので、内容を隠す暗号化とは別だよ。人の身元との結び付きには鍵の管理や証明書が必要なんだ。
ひよこ ひよこ
HTTPSは両方の方式を使うの?
ペンギン先生 ペンギン先生
TLS 1.3の証明書を使う一般的な接続では、署名で相手を認証し、ECDHEなどで共有秘密を作って通信鍵を導く。その後のデータはAES-GCMなどの認証付き共通鍵暗号で保護するよ。単に公開鍵で共通鍵そのものを送るという説明では、現在の方式を正確に表せないんだ。
ひよこ ひよこ
鍵交換って暗号化ではないの?
ペンギン先生 ペンギン先生
たとえばDiffie-Hellman系は、お互いの秘密値を直接送らずに共有秘密を得るための仕組みだよ。TLS 1.3では古いRSA鍵配送が廃止されている。一方、事前共有鍵を使う接続もあるので、すべてのTLS接続が同じ手順とは限らないね。
ひよこ ひよこ
前方秘匿性があれば、ずっと安全?
ペンギン先生 ペンギン先生
適切に一時鍵を使って破棄する鍵共有では、長期の認証鍵が後から漏れても、記録された過去の通信の保護を狙えるよ。ただし通信中の端末侵害、実装の欠陥、将来の暗号解読能力などすべてを防ぐ保証ではないんだ。
ひよこ ひよこ
耐量子暗号も同じ役割なの?
ペンギン先生 ペンギン先生
役割を分けて見よう。NISTが2024年に標準化したML-KEMは鍵カプセル化、ML-DSAとSLH-DSAは署名の方式だよ。暗号方式を自作するのでなく、対応したライブラリや通信製品の仕様と移行ガイドを確認することが大事だね。

3つの役割を混同しない

役割何をするか注意点
暗号化内容を読めない形にする改ざん検知も必要。認証付き暗号を利用する
デジタル署名署名鍵との対応・改ざんの有無を検証する署名だけでは内容は隠れない
鍵共有・鍵カプセル化通信を保護するための秘密を共有する相手の認証と組み合わせる

「公開鍵暗号のほうが安全」とは限らない

方式名や鍵のビット数だけでは安全性を比較できません。アルゴリズム、パラメータ、乱数、鍵の保管、証明書の検証、実装をそろえて考えます。共通鍵暗号は大量データの保護、公開鍵技術は認証や鍵共有というように、目的に応じて組み合わせます。

TLS 1.3の通常の通信保護と、早期データを送る0-RTTも同じ保証ではありません。0-RTTにはリプレイなどの制約があるため、「TLSならどの送信方法でも安全」とは判断しないでください。

参考資料

確認日:2026年9月27日。製品の仕様・料金・対応環境は導入時にも確認してください。