初めに
サイボウズ・ラボの光成です。 いきなりですがクイズです。次のうち正しい説明はどれでしょう。
- SSHやFIDO2などの公開鍵認証はチャレンジを秘密鍵で暗号化し、公開鍵で復号して認証する。
- ビットコインでは相手の公開鍵を用いてハッシュ値を暗号化して相手に送る。
- TLS1.3ではサーバ公開鍵を用いてAESの秘密鍵を暗号化する。
答えはどれも間違いです。 公開鍵認証は、(デジタル)署名を使って相手先の正しさを検証するものであり、暗号化は行われません。 同様にビットコインもデータや相手の正当性を確認するために署名が用いられ、暗号化は行われません。 TLS 1.3ではRSA暗号の公開鍵を用いて暗号化する方式(static RSA)は廃止され、ECDH鍵共有された値を元に秘密鍵を生成し、AES-GCMなどの認証つき暗号で暗号化します。
公開鍵暗号とは
いわゆる公開鍵暗号には大きく2種類の意味があります。 一つは「公開鍵で暗号化して秘密鍵で復号する」という公開鍵暗号です。RSA暗号の説明でよく聞きますね。 英語ではPublic Key Encryption(暗号化)、略してPKEといいます。 「暗号化」を強調するために「公開鍵暗号化」とか「公開鍵暗号方式」などと言われることがあります。
もう一つは「公開情報と秘密情報の組を扱う暗号技術全般を指す」公開鍵暗号です。 英語ではPublic Key Cryptography、略してPKCといいます。暗号化するPKEはPKCの一部です。 PKCには、DH鍵共有や(デジタル)署名が含まれます。
英語の「Encryption」と「Cryptography」のどちらも「暗号」と訳されることが多いため、誤解や混乱が生じやすいです。
暗号技術の分類
実はTLSやSSH, FIDO2などの最近の技術でPKEが使われる場面は殆どありません。 RSA暗号の暗号化と復号の関数の形が同じなため誤解しやすいのですが、署名は暗号化とは異なる技術です。
楕円曲線暗号ECC(Elliptic Curve Cryptography)もPKEではなくPKCの一部であり、TLSやSSHで楕円曲線を暗号化に使うことはありません。
よく見かける暗号技術の関係を図にしてみました。
本やWebサイトの記事を読んでいて「公開鍵暗号」という言葉が出てきたら、 筆者がPKEとPKCのどちらで使っているのか注意深く確認しましょう。 PKEを使って署名の説明をしていたら、大抵の場合、それはおそらく間違いです。
資料の紹介
暗号技術全般について、2021年9月から12月まで基礎的なところを解説した勉強会(暗認本読書会)を開いていました。 そのときに利用した資料や動画へのリンク一覧を示します。
- 読書会1 動画1 : 情報セキュリティ, 暗号, 認証
- 読書会2 動画2 : 古典暗号, アルゴリズム, 安全性, 危殆化
- 読書会3 動画3 : 共通鍵暗号, 排他的論理和, 乱数, ワンタイムパッド, ストリーム暗号
- 読書会4 スライド4 動画4 : ChaCha20, AES, 暗号化モード, XTS-AES, 暗号文の改竄, リプレイ攻撃
- 読書会5 スライド5 動画5 : DH鍵共有, 有限体, 拡大体, 公開鍵暗号, ハイブリッド暗号
- 読書会6 スライド6 動画6 : RSA暗号, 楕円曲線暗号, 中間者攻撃, ハッシュ関数, PBKDF2
- 読書会7 スライド7 動画7 : SHA-2/SHA-3, SHA-1の衝突, MAC, 署名, ECDSA, FIDO, サイドチャネル攻撃
- 読書会8 スライド8 動画8 : 否認防止, タイムスタンプ, ビットコイン, CA, OCSP, CT
- 読書会9 スライド9 動画9 : TLS 1.3, HKDF, 形式手法, AEAD, DNS, DoH, ESNI
- 読書会10 スライド10 動画10 : ECH, HPKE, QUIC, HTTP3, 無線LAN
- 読書会11 スライド11 動画11 : 準同型暗号, MPC, 秘密分散, DKG, ペアリング, BLS署名
- 読書会12 スライド12 動画12 : ゼロ知識証明, 量子コンピュータ, 耐量子計算機暗号
- 読書会13 スライド13 動画13 : 準同型暗号, ゼロ知識証明おかわり
個別の用語について概要を知りたい方は、それぞれのキーワードが書かれた回を参考にしてください。 たとえば署名は「読書会7」、TLS 1.3は「読書会9」のスライドや動画で解説しています。