色々入り混じって出てきて,理解が曖昧になってしまったのでまとめます.
サーバー証明書は誰が送るか
サーバー自身が送信します.ユーザーが認証局に問い合わせて公開鍵を取得してくるわけではありません.
サーバー証明書,SSL証明書,デジタル証明書の違い
全て名称が異なるだけで同じ.デジタル証明書が正式名称で,それからデジタル証明の主体や手法に焦点を当てて名称を作製したのが,サーバー証明書やSSL証明書.
クライアント証明書
サーバー証明書のクライアント版.サーバー側がクライアントを認証するために使用する.特定のデバイスからのアクセスのみに制限したい場合のみに使用される.
デジタル証明書の中身は?
以下で確認できる.重要なのは,サーバーの公開鍵+認証局のデジタル署名+その他情報から構成されているということ.
なお,ブラウザでは認証局のデジタル署名は確認できない.(なんでなん??)確認したい場合は,openSSL等のライブラリを用いる必要がある.
認証局のデジタル署名は,サーバー証明書の内容を署名ハッシュアルゴリズムに基づいてハッシュ化した値を認証局の秘密鍵で暗号化されたものである.
したがって,
①認証局のデジタル署名を,認証局の証明書に記載されている公開鍵で復号したハッシュ値
②サーバー証明書の内容を署名ハッシュアルゴリズムに基づいて計算したハッシュ値
を比較することで,サーバー証明書が認証局によって認証されていることを認証することが可能.
メッセージダイジェスト
メッセージダイジェストとは,平文をハッシュ関数によって固定長に変換されたデータを指します.平文は基本的には公開したい情報自体で,サーバー証明書ではx.509自体をハッシュ化したものがメッセージダイジェストに相当します.
ハッシュ関数には以下のようなものが代表的
- MD5
- SHA-1
- SHA-2
- SHA-3
メッセージダイジェストとデジタル署名
メッセージダイジェストをさらに秘密鍵で暗号化したものがデジタル署名です.公開鍵で復号したものが平文からハッシュ計算した値と一致することを確認することで,平文の改ざんとなりすましの検出を目的としています.
デジタル署名とPKI
デジタル署名では改ざんとなりすましを検出できますが,そもそも秘密鍵と公開鍵がその人自身が作成したものかどうか保証できません.(前記の”なりすましの検出”は,あくまで秘密鍵を作製した人から送られてきたことを保障するだけで,”秘密鍵を作製した人”自体のなりすましは検出できません.)
そこで,PKIによって公開鍵の真正性を保障します.すなわち,自分が想定するユーザー・組織が作成した公開鍵であることを保障してくれます
DV,OV,EV認証
Domain Validation:ドメインのみ
Organization Validation:ドメイン+組織の実在確認
Extended Validation:ドメイン+組織の実在確認+認証局による審査基準のクリア認証
Domain ValidationとOrganization Validationの差は大きいです.ドメインのみの認証の場合,そのドメインが存在してさえいればいいので,例えば実在していない会社の名前を騙ってサイトを作製することができます.したがって,DVだけではユーザー側は本当にそのドメインを保有する会社が実在する会社なのか,はたまた,なりすましの企業サイトなのか判断できません.
よって,新しい企業サイトを立ち上げる時には,OV認証以上を取得するとユーザー側が安心してくれます.
サブジェクトの表記がDV⇒OV⇒EVになるにつれて詳細になります.ちなみにCNがCommon Nameでドメイン名です.CNのみの場合がDV認証となります.
デジタル署名とMAC(Message Authentication Code)
デジタル署名:なりすまし+改ざんの検出 by 公開鍵暗号方式
MAC:改ざんの検出 by 共通鍵暗号方式
という違いがあります.共通鍵で改ざんの検出を目的としたものがMACであり,それに加えてなりすましの検出も目的としたものがデジタル署名という立ち位置です.
MACは共通鍵暗号方式のため計算処理がデジタル署名よりも軽いです.従って,公開元は別に誰でも良いが,そのファイル自体が改ざんされていないことを保障したい場合に使用されます.
共通鍵暗号方式のアルゴリズム
DES (Data Encryption Standard)
平文を64ビットごとのブロックに分割し,転置等の処理が16回行われる.
基本的に非推奨.AESを使用する
AES (Advanced Encryption Standard)
ブロック長は128ビット固定
鍵長:128, 192, 256から設定可能
公開鍵暗号方式のアルゴリズム
RSA
Rivest, Shamir, Adlemanの頭文字.素因数分解を利用した暗号方式.
楕円曲線暗号
離散対数問題を利用
ハイブリッド暗号方式
基本的に公開鍵暗号方式によって全ての通信が実施されることはありません.なぜなら,公開鍵は計算コストが高く,もし秘密鍵が流出した場合それまでの通信の全てが復号されてしまうからであす.そのため,セッションごとに共通鍵を生成します.
PSF (perfect forward secrecy)という考え方
鍵合意のために公開可能な、ランダムな値を使う。
https://ja.wikipedia.org/wiki/Forward_secrecy
鍵合意の過程で決定的なアルゴリズムを一切使わない。
何が言いたいかというと,長期的に保有される鍵(公開鍵に対する秘密鍵)が漏洩した場合でも,当該セッションの通信は復号されない性質のことを言います.
すなわち,当該セッションの通信を,セッションごと,あるいは,ユーザーごとに上記の引用文の性質の鍵交換方式で共通鍵を生成して暗号化することで,長期的な秘密鍵に依存しなくさせるということです.
DHE(Diffie-Hellman)
離散対数問題の困難性を利用した暗号方式で,素数をシードとし,通信では傍受されても問題がない値を交換することで,共通鍵を生成する.
堅牢性を保つためには,シードとなる素数を使いまわさないこと.
ECDHE(Elliptic curve Diffie-Hellman key exchange)
楕円曲線暗号を利用して,DHEと同様の共通鍵生成を実現する.DHEを拡張したものです.
その他用語
危殆化
情報セキュリティでは鍵の漏洩を指すことが多く,安全性が損なわれる現象を指します.