クライアント証明書
について調べた。なんかすっきりする説明が見つけられなかった。のでほとんど推測だけどこんな感じ?
サーバー視点でのシナリオ
クライアント視点でのシナリオ
- クライアント証明書を安全な経路で受け取る(リアルで会ってとか)
- クライアント証明書をブラウザにインストールする。このとき誰かにコピーされて気軽に使われにくくなるように共通鍵で暗号化し、HDD上に保存しておく風潮?
サーバーと接続するときのシナリオ
- クライアント証明書をHDDから復号化するためにパスワードを入力
- クライアント証明書がメモリ上に展開される
- クライアント証明書から、秘密鍵と認証局の発行した署名を取り出す
- 信頼している認証局から公開鍵を受け取る
- 公開鍵をもとに署名を復号化し、秘密鍵ファイルのハッシュ値を取得、秘密鍵が改ざんされていないことを確認する
- この秘密鍵を使ってなんらかの特定のフレーズを暗号化? そしてサーバーに送信する
- サーバーはこれを受け取り、公開鍵で復号化し、フレーズが一致してることを確認する?
- サーバーはクライアントを信頼出来ることがわかったので共通鍵を生成し、公開鍵で暗号化したあと送信する
- クライアントは秘密鍵でこれを復号化し、共通鍵を取得。
- 以後の通信をその共通鍵で暗号化された状態で行う。
んーよーわからん。