初めに
今回はSSL/TLSの仕組みについてアウトプットを兼ねて解説します!
SSL/TLSとは
SSL(Secure Sockets Layer)/TLS(Transport Layer Security)の略です。
ブラウザとサーバー間のデータのやり取りを暗号化することで、第三者によるデータの盗聴や改竄を防止します。
SSLとTLSの違い
大枠の仕組みは同じです。SSLがバージョンアップを重ねて3.0になった際に、TLS1.0と呼ばれるようになりました。SSLの名称は広く普及しているため、TLSを指しても現在ではSSL/TLSと呼ばれています。
SSL/TLSの仕組み
前提知識
共通鍵暗号方式
共通鍵暗号方式とは、送信者と受信者の間で行われるデータの暗号化と復号を同じ鍵で行う暗号方式です。
通信をする際には、送信者は受信者ごとに共通鍵を渡す必要があります。
そのため共通鍵を第三者に漏洩させないことが重要です。共通鍵暗号方式は公開鍵暗号方式と比較すると処理が速いという特徴があります。
現在主流の暗号化方式はAESです。
公開鍵暗号方式
公開鍵暗号方式とは、送信者と受信者の間で行われるデータの暗号化と複合を異なる鍵で行う暗号方式です。
具体的にはデータを暗号化する公開鍵、復号するための秘密鍵を作成します。
データの送信者は受信者の公開鍵を使用してデータを暗号化して送信、受信者は受け取ったデータを自らの秘密鍵で復号します。
そのため公開鍵はあらかじめ通信相手に送信する必要がありますが、公開鍵は暗号化するための鍵なので、例え漏洩したとしてもデータの復号はできません。
SSL/TLSの仕組み
事前準備
1 送信者(ブラウザ)は暗号化するための公開鍵、復号するための秘密鍵を作成します。
2 受信者(サーバー)は送信者に公開鍵を送信し、送信者(ブラウザ)はその鍵で共通鍵を暗号化して受信者(サーバー)に渡します。
3 受信者(サーバー)は渡された共通鍵を秘密鍵を用いて復号します。
この過程を踏むことで、サーバーとブラウザは共通鍵を所持します。
画像引用
https://www.kagoya.jp/howto/rentalserver/ssl/
本番
上記の過程を踏むことで、ブラウザとサーバーは共通鍵を所持します。
両者はデータを共通鍵で暗号化、復号することでデータの盗聴、改竄を防止します。
画像引用
https://www.kagoya.jp/howto/rentalserver/ssl/
SSLサーバ証明書
上記のSSL/TLSの仕組みで、事前準備として以下のステップを行うと解説しました。
「2 受信者(サーバー)は送信者に公開鍵を送信し、送信者(ブラウザ)はその鍵で共通鍵を暗号化して受信者(サーバー)に渡します。」
しかし実際はサーバーから送信されるものは公開鍵だけではなく、SSLサーバ証明書が送信されています。
SSLサーバ証明書とは、ウェブサイトの「運営者の実在性を確認」し、ブラウザとウェブサーバ間で「通信データの暗号化」を行うための電子証明書で、GMOグローバルサインなどの認証局から発行されます。 SSLサーバ証明書には、ウェブサイトの所有者の情報や、暗号化通信に必要な鍵、発行者の署名データが含まれています。
終わりに
SSL/TLSの知識はwebアプリケーションをデプロイ・運営するにあたって、必須となる知識です。
理解するとそこまで難しいものではありませんので、私と同じ初心者エンジニアの方は良ければ参考にしてください!