1. 概要

このチュートリアルでは、データ転送に安全な接続を提供する2つのプロトコル(SSLとTLS)について説明します。 プロトコルの作業手順を探ります。

最後に、それらの間のコアの違いを示します。

2. HTTPとHTTPSの概要

インターネットを介してウェブサイトのデータを転送するには、ハイパーテキストトランスポートプロトコル(HTTP)を使用します。 HTTPは、データをクリアテキスト形式で送信します。 このクリアテキスト形式は、クレジットカード番号やパスワードなどの機密性の高い個人データをインターネット経由で送信しない限り機能します。 送信者から送信されたデータが暗号化されていない場合、真ん中に座っているハッカーが機密情報にアクセスする可能性があります。

HTTPS またはセキュアHTTPは、HTTPのセキュリティ問題を修正するために導入されました。 HTTPSでは、コンピューターとサーバー間で暗号化された形式でデータを送信できます。 したがって、真ん中に座っているハッカーは暗号化されたデータしか抽出できません。 ただし、元のメッセージを表示するには、ハッカーは送信者が安全に保存する復号化キーを必要とします。

さらに、機密情報のないWebサイトは、セキュリティを強化するために現在HTTPSを使用しています。 安全でない通信と安全な通信には、異なるポート番号を使用します。 たとえば、 HTTPは通常標準ポート80を使用しますが、HTTPSはポート443を使用します。

3. SSLとTLSの概要

Secure Socket Layer(SSL)とTransport Layer Security(TLS)は、インターネット上の2つのデバイスとローカルネットワーク間の安全な接続を提供します。 さらに、デバイスとサーバー間で転送されるデータを暗号化するメカニズムも提供します。 さらに、暗号化メカニズムは、機密データへの不正アクセスを防ぐのに役立ちます。

SSLとTLSはどちらも、認証、暗号化、およびデータ整合性チェックを提供します。 サーバーに接続するWebブラウザーは、通常、SSLとTLSを使用します。 ただし、 HTTPS、FTPS、SMTPSなどのセキュアバージョンプロトコルは、SSLを介したTLSを使用します。

TLSはSSLの後継です。 TLSは、非対称暗号化キーを使用してデータの認証を提供します。 Webサイトは、SSL証明書と呼ばれるデジタル証明書を送信して自身を識別します。 Webブラウザが証明書をチェックすると、データ転送はさらに進みます。

通常、HTTPリクエストでは、サーバーが主に認証を提供します。 さらに、クライアントが認証を提供できる場合もありますが、それはオプションです。 さらに、クライアントはサーバーのデジタル証明書を検証して、それが本物のWebサイトであることを確認します。

SSL / TLSは、プライバシーのために対称暗号化を使用して交換されるデータを暗号化します。 さらに、データの整合性を確保するのにも役立ちます。 タグまたはメッセージ認証コード(MAC)を使用してデータの整合性をチェックします。

TLSはSSLの新しいバージョンであり、重要な類似点がありますが、それでもいくつかの違いがあります。 TLSは、類似性のためにSSL/TLSと呼ばれることもあります。 ここで、SSLとTLSの歴史について話しましょう。

SSL 1.0は、1995年に Netscape によって開発され、リリースされることはありませんでした。 SSL2.0は1995年に公開されました。 更新されたバージョンのSSL3.0は、1年後の1996年にリリースされました。 SSLのすべてのバージョンは、主にセキュリティ上の欠陥のために非推奨になっています。

TLS 1.0は、1999年にIETF[X40X]によってリリースされました。 2006年にTLS1.1として更新されました。 さらに、TLS 1.2は2008年にリリースされ、続いてTLS1.3が2018年にリリースされました。 さらに、TLSバージョン1.0および1.1は現在非推奨です。 TLS 1.2および1.3は、2022年の時点で非推奨ではない唯一のTLSバージョンです。

4. SSL/TLSハンドシェイク手順

現在、すべてのSSLバージョンが非推奨になっているため、TLSハンドシェイクプロセスについて説明しましょう。

まず、クライアントとサーバー間でハンドシェイクが発生します。最初に、クライアントはhelloメッセージ、クライアントでサポートされているTLSバージョンのリスト、およびハンドシェイクプロセスを開始するための暗号化アルゴリズムを送信します。 したがって、サーバーは、選択されたTLSバージョン、暗号化アルゴリズム、および公開鍵を含むそのデジタル証明書とともにhelloメッセージで応答します。

クライアントはサーバーからの応答を受信するとすぐに、サーバーのデジタル証明書を検証し、ハッカーから安全にするためにサーバーの公開鍵で暗号化された秘密鍵を共有します。 次に、サーバーは秘密鍵を使用して秘密鍵を復号化します。 この時点で、クライアントとサーバーの両方がデータを暗号化および復号化するためのキーを持っています。

さらに、クライアントはMACとハッシュによって認証された暗号化されたデータをサーバーに送信するようになりました。 サーバーはデータを受信するとすぐに、復号化と認証のプロセスを開始します。 正常に完了すると、サーバーは暗号化および認証されたメッセージでクライアントに応答します。 最後に、クライアントは秘密鍵を使用してデータを復号化および認証します。 これがSSL/TLSハンドシェイクの仕組みです。

ここで、クライアントまたはサーバーがいずれかの時点でデータの復号化または認証に失敗すると、ハンドシェイクが失敗します。次に、ハンドシェイクプロセスを簡単に示す図を見てみましょう。

TLSは、データ整合性チェックにハッシュベースのメッセージ認証コード(HMAC)を使用します。 TLS 1.3は、認証された暗号化と関連データ(AEAD)を使用し、暗号化と認証の両方を提供します。 SSLは、メッセージ認証コード(MAC)に基づいてMD5およびSHA1を使用します。

さらに、TLSはSSLとは異なる暗号スイートのセットを提供します。 TLS 1.3暗号スイートは、以前のTLSバージョンと比較してより高いセキュリティを提供するために、さまざまなレガシーアルゴリズムを削除します。 SSLは通常、Fortezza暗号スイートを使用します。

5. SSLとTLSの違い

SSLとTLSの主な違いを見てみましょう。

6. 結論

このチュートリアルでは、TLSおよびSSLプロトコルについて説明しました。 作業手順を図で説明しました。

最後に、それらの間のコアの違いを示しました。