1. 序章

最新のコンピューターは、さまざまなレイヤーを使用して通信し、操作している情報が効率的かつ堅牢な方法で送信されるようにします。 これらのさまざまな層を説明するために使用される最も一般的なモデルは、インターネットプロトコルスイートであり、一般にTCP/IPと呼ばれます。

この記事では、このアーキテクチャのトランスポート層に焦点を当て、2つの異なる通信プロトコル(トランスポート層セキュリティ(TLS)とデータグラムトランスポート層セキュリティ(DTLS))の違いについて説明します。

2. トランスポート層

インターネットプロトコルスイートのトランスポート層の最も一般的なコンポーネントは、伝送制御プロトコル(TCP)とユーザーデータグラムプロトコル(UDP)です。 TCPは、接続指向の伝送に使用されます。最も一般的には、HTTPSセキュリティ証明書です。だけでなく、SMTP、POP、FTP。 これらは、Webサイトの整合性を保証し、そのユーザーのプライバシーを保護し、ユーザーのジオロケーションへのアクセスなどの他の興味深い機能を有効にすることができます。

TCPは、情報が正しく配信されたことを確認する方法と、エラーチェックの方法も提供します。 一方、UDPはコネクションレス型であり、遅延を優先するアプリケーションに使用されます。 ビデオストリーミング、ゲーム、放送など。 これにより、片道トリップでパケットをより高速に送信でき、エラーチェックは単純なチェックサムに制限されます。

これらの通信プロトコルの主な欠点は、暗号化されていないため、悪意のあるエージェントによる盗聴、偽造、改ざんの対象となることです。 これは、TLSとDTLSが暗号化を使用してデバイス間の通信を保護する場所です。 TLSとDTLSについて説明する場合、それらのユースケースが類似しているため、TCPおよびUDPと比較するのは興味深いことです。 TLSとTCPは情報の通信をゆっくりと、しかし確実に行うことを心配しますが、UDPとDTLSは情報を迅速に通信し、遅延が重要なアプリケーションを懸念します。

3. トランスポート層セキュリティ(TLS)

TLSの前には、Secure Sockets Layer(SSL)がありました。これは、主にWebサイトのIDを暗号化キーにバインドするために使用されるプロトコルです。このプロセスはSSL証明書の作成で終了し、HTTPで使用されます。ブラウザとWebページまたは他のドキュメント間の接続を確立するためのプロトコル。

SSL認証には通常、ドメイン名や所有権情報など、Webサイトに関連するデータが含まれていることにも言及できます。 そうは言っても、トランスポート層セキュリティは非推奨のSecure Sockets Layerからのアップグレードです( SSL)。 TLSとSSLの違いは非常に技術的であり、ハンドシェイクプロセスやハッシュベースのメッセージ認証コードのサポートなどの側面を考慮しています。

3.1. TLSハンドシェイク

通信を開始するために、クライアント/サーバーシステムは最初に3ウェイTCPハンドシェイク(緑色)に依存します。 TLS部分の最初の完全な「ラウンドトリップ」では、TLSプロトコルバージョンやその他のオプションなど、いくつかの情報がプレーンテキストで転送されました。 その後、暗号化トンネルのクライアント/サーバーネゴシエーションが開始されます。

このマシンペアは、TLSプロトコルのバージョンに同意し、暗号スイート(ネットワーク接続を保護するために使用されるアルゴリズム)を選択し、必要に応じて証明書を検証する必要があります。 必要な「ラウンドトリップ」のために、仮想の30ミリ秒の遅延を追加すると問題が発生する可能性があることがわかります(下の画像を参照)。 次に、サーバーはTLSバージョンと暗号スイートを選択して通信を続行し、その証明書をクライアントに提示します。

クライアントが証明書を承認すると、クライアントはDiffie-Hellman鍵交換またはRSA を開始して、対称鍵に同意することができます。 サーバーは、暗号化された「Finished」メッセージをクライアントに返します。 クライアントは対称鍵を使用してそれを復号化し、MACを検証します。  これで、アプリケーションデータを送信できます。

4. データグラムトランスポート層セキュリティ(DTLS)

Datagram Transport Layer Security(DTLS)はTLSとは別の暗号化された通信プロトコルですが、TLSに基づいており、ストリーミングデータと同じ機能の多くに同様のセキュリティ保証を提供することを目的としています。 2つのプロトコルの主な違いは、DTLSがTLSの長い通信時間を回避することです。 ただし、このプロトコルはUDPに加えて使用されることが多いため、パケットを並べ替えたり再送信したりすることはなく、パケットの非再生可能性を保証するものでもありません。 DTLSは、暗号化を維持しながらVPNアプリケーションのパフォーマンスを向上させることもできます。

5. 特定の違い

以下は、2つのプロトコル間の明確な顕著な違いです。

5.1. 明示的なレコード

TLSは、データの長いシーケンスを複数のチャンクに分割します。 これらの部門は、アプリケーションに対して透過的です。 これは、完全に送信できるかどうかに関係なく送信できるレコードを使用するため、DTLSには当てはまりません。 これらのレコードは、アプリケーション自体で管理する必要があります。

5.2. 許容される変更

UDPの場合と同様に、データグラムは失われたり、並べ替えられたり、変更されたりする可能性があります。したがって、クライアントマシンとサーバーマシンの両方で非正規通信が許可されます。 たとえば、レコードの順序は、さまざまな理由で変更される可能性があります(つまり、 レイテンシー)。 ただし、特に重複すると、警告が発生する場合があります。 野生の異常のあるレコードは、単に削除される可能性があります。

5.3. 確認済みの終了はありません

UDPと同様に、DTLSの送信には終了信号の概念はありません。DTLSは単に送信を停止します。 これは、サーバーからデータを受信するクライアントは、データ全体が配信されたかどうか、または通信でエラーが発生したかどうかを認識しないことを意味します。 TLSは、アラートメッセージでこれを通知します。

5.4. Protection Against Ip Spoofing

DTLSはCookieを使用してIPスプーフィングを防止します。これにより、実際のIPアドレスを表示せずにサーバーと通信できます。一方、TLSはTCPハンドシェイクを確立した後にのみ通信を実行するため、スプーフィングが困難です。私たちのIP。

6. 例

以下は、両方のプロトコルの実装例です。

6.1. TLS

6.2. DTLS

  • Cisco AnyConnect VPN クライアントはTLSを使用してユーザーの認証を実行し、DTLSベースのVPNを発明しました
  • Citrix SystemsNetScalerはDTLSを使用してUDPを保護します
  • WebRTC は、DTLS-SRTP通信にGoogle Chrome、Opera、Firefoxなどの互換性のあるWebブラウザを使用します

7. 結論

これは、TLSとDTLSの通信プロトコルの違いに関する記事でした