暗号化
- データの中身を第三者に見せないようにする仕組み
暗号化には3つの種類があります。
- 共通鍵暗号方式
- 同じ1つの鍵で暗号化と復号を行う
- 課題
- 鍵を安全に相手に送る必要がある配送問題がある
- 公開鍵暗号方式
- 秘密鍵と公開鍵を作成して、公開鍵で暗号化されたものは秘密鍵でしか復号できない
- 課題
- 鍵を盗まれても安心だが、処理速度が共通鍵に比べて遅い
- ハイブリッド方式
- いいとこ取りした方式。今の標準。
- 仕組み
- 受信者
- 公開鍵と秘密鍵を作成する
- 送信者
- 共通鍵を作成して、受信者の公開鍵を使って暗号化する
- 暗号化したデータを受信者に送る
- 受信者
- 秘密鍵を使って復号する
- 受け取っ共通鍵を使って通信を開始する
- 受信者
デジタル署名
- ハッシュ化と公開鍵暗号を使って、データが改竄されていないかを確認する仕組み
- 仕組み(ハッシュ値 + 公開鍵暗号方式の逆向き)
- 送信者
- 秘密鍵と公開鍵を生成
- 平文をハッシュ化して、ハッシュを秘密鍵で暗号化する(この暗号化が署名)
- 平文と署名を受信者に送信
- 受信者
- 平文をハッシュ化し、署名を公開鍵で復号してハッシュ値にする
- 2つのハッシュ値を突合して、改竄のチェックを行う
- 送信者
認証局
- なぜ必要?
- AさんとBさんがいて、受け取った公開鍵が本当にAさんからのものなのかが証明できない。 それを保証するものが認証局
デジタル証明書
- 目的は、公開鍵の正当性を証明するもの
- 仕組み
- CA(認証局)に公開鍵+身分証明書を送り、デジタル証明書を受け取る
- CAは自分で作れるが、世界中から信頼されることとは別。ブラウザは信頼できる認証局のリストを持っている。Macだと「キーチェーンアクセス」に入っているものが信頼できる認証局の証明書。
SSL/TLS
- 暗号化・デジタル署名・証明書を使った安全な通信ルールのこと
- 通信が始まる際、クライアント(ブラウザ)とサーバーの間で「どうやって暗号化するか」の会議が行われます。これを TLSハンドシェイク と呼ぶ。
mTLS
- クライアントとサーバー双方がデジタル証明書を用いて互いを認証する、セキュリティの高い通信規格