+ 作るログイン
図を読み込んでいます…
1 / 7
図でつながる 認証と暗号の基礎 / 全9章

共通鍵暗号(共有鍵方式)― 同じ秘密で閉じて開く

発行
アニメモ公式
版
第2版
改訂
コマ
全7

共通鍵・暗号文・nonceを分けて追い、鍵を配る難しさと認証付き暗号の役割を理解します。

共通鍵暗号:同じ秘密を持つ二人

アオイさんからボブさんへ、他人に読まれたくない資料を送ります。二人が同じ秘密の鍵Kを持っていれば、その鍵で暗号化し、対応する処理で復号できます。

これが共通鍵暗号(対称鍵暗号)です。「共有鍵方式」「秘密鍵暗号方式」と呼ばれることもあります。この教材では、公開鍵と対になる秘密鍵との混同を避けるため、共通鍵という名前を使います。NISTの用語定義

図の二つの鍵は、同じ値のコピーです。形が似ているだけの別々の鍵ではありません。

  • 02 / SECURITY NOTES
  • 1 / 7
  • 同じ秘密の鍵を、二人が持つ
  • アオイ
  • ボブ
  • 送信者
  • 受信者
  • 会議は10時
  • 共通鍵 K
  • 共通鍵 K
  • 共通鍵 = 同じ値の鍵。秘密鍵暗号とも呼ばれる。

平文を、鍵で暗号文へ変える

送信者は平文を暗号化してから送ります。図では「会議は10時」というカードが暗号化の箱へ入り、内容の読めない暗号文に置き換わります。

代表的な共通鍵暗号にはAESがあります。AESは128ビットのブロックを扱い、鍵長には128・192・256ビットがあります。ただし、アプリはAESという名前だけを指定すれば安全になるわけではありません。モード、nonce、改ざん検知の扱いも必要です。FIPS 197

ここで描く暗号文の文字列は説明用の記号で、実際の暗号計算の結果ではありません。

  • 02 / SECURITY NOTES
  • 2 / 7
  • 平文を、共通鍵で暗号文へ
  • アオイ
  • ボブ
  • 送信者
  • 受信者
  • 暗号文 a7…9f
  • 共通鍵 K
  • 暗号化 → 読めない形へ
  • 共通鍵 K
  • 本文を保護する。AESは代表的な共通鍵暗号。

通信路に出すのは暗号文

盗聴者が見られる通信路へ、暗号文を送ります。安全な方式と適切な鍵管理を前提に、暗号文だけから元の資料を読むことを難しくします。

鍵Kを平文で一緒に送ってはいけません。 箱に鍵を貼り付けると、見つけた人が箱も鍵も持ててしまいます。

一方、nonceや認証タグは通常、秘密にする必要がありません。鍵とnonceは役割が違います。図で鍵が送信者側に残り、暗号文だけが移動する点を確認してください。

  • 02 / SECURITY NOTES
  • 3 / 7
  • 暗号文だけが、通信路を渡る
  • アオイ
  • 盗聴されうる通信路
  • ボブ
  • 送信者
  • 受信者
  • 暗号文 a7…9f
  • 共通鍵 K
  • 共通鍵 K
  • 秘密の鍵Kを、平文で一緒に送らない。

受信者は、同じ鍵で開く

ボブさんは受け取った暗号文を、あらかじめ持っている鍵Kで復号します。正しい処理に成功すれば、送る前と同じ資料が戻ります。

実務では、内容の秘匿だけでなく改ざんも検出する認証付き暗号(AEAD)を使います。AES-GCMなら、タグの検証に失敗したデータを正常な平文として受け入れません。NIST SP 800-38D

ただ暗号化することと、安全に受け入れることは別です。図では復号の出口に検証の関門を置いています。

  • 02 / SECURITY NOTES
  • 4 / 7
  • 同じ鍵で、復号・検証する
  • アオイ
  • ボブ
  • 送信者
  • 受信者
  • 暗号文 a7…9f
  • 共通鍵 K
  • 検証 OK → 元の本文
  • 共通鍵 K
  • 認証タグが合わないデータは、受け入れない。

同じ鍵でも、nonceを使い回さない

AES-GCMでは、同じ鍵のもとでnonceを再利用すると安全性が大きく崩れます。毎回違うメッセージだから大丈夫、とは言えません。

1通目 : key = K, nonce = N1
2通目 : key = K, nonce = N2
         N1 と N2 を重複させない

これは概念図です。nonceの生成や上限管理は、選んだプロトコルと検証済みライブラリの要件に従います。自作の連番管理を複数サーバーへそのまま配ると、衝突することがあります。

「秘密の鍵」と「重複を避けるnonce」を、別々の管理対象として覚えましょう。

  • 02 / SECURITY NOTES
  • 5 / 7
  • AES-GCM:nonceを重複させない
  • 1通目:nonce N1
  • 秘密でなくてもよい
  • 共通鍵 K
  • 2通目:nonce N2
  • 同じKでの重複は避ける
  • 同じ鍵で N1 と N2 を使い分ける。鍵とは別の役割。

難所は、最初に鍵をどう共有するか

まだ安全な通信路がない二人が、どうやって同じ秘密の鍵を持つのでしょうか。共通鍵暗号だけでは、この最初の配布問題は解決しません。

安全な別経路で事前共有する方法もあれば、公開鍵暗号の技術を使って鍵を確立する方法もあります。後者が、ハイブリッド方式へつながります。

また、二人が同じ鍵を持つため、その鍵による認証タグだけでは、第三者に「二人のどちらが作ったか」を区別して証明できません。これは電子署名と異なる点です。JWSにおけるMACと署名

  • 02 / SECURITY NOTES
  • 6 / 7
  • 最初に、鍵をどう共有する?
  • まだ安全な経路がない
  • アオイ
  • ボブ
  • 送信者
  • 受信者
  • 共通鍵 K
  • 安全な別経路 / 鍵の確立
  • 共通鍵 K
  • 鍵の配布問題を、公開鍵技術が助ける。

確認:鍵も暗号文と一緒に送ればよい?

答えはいいえです。秘密の鍵を通信路へそのまま出すと、盗聴者にも解読の道具を渡してしまいます。

共通鍵暗号は、大量のデータを効率よく保護する役を担います。その強さは、鍵の秘密を守ること、正しい方式を使うこと、nonceなどの要件を守ることに支えられます。

次に公開鍵暗号を見るときは、「共通鍵を安全に使い始めるには」という問いを持って進んでください。二つの方式を組み合わせる理由が見えてきます。

  • 02 / SECURITY NOTES
  • 7 / 7
  • 確認:暗号文と鍵を一緒に送る?
  • アオイ
  • ボブ
  • 送信者
  • 受信者
  • 暗号文 a7…9f
  • 共通鍵 K
  • 大量のデータを効率よく保護
  • 共通鍵 K
  • 答えは NO。秘密の鍵は、安全に共有・管理する。

0 件のコメント

読み込み中…

権利侵害・不適切な内容の連絡: [email protected]