web-dev-qa-db-ja.com

TCPソケットはデフォルトで暗号化されないのはなぜですか?

私がプログラミングをしている間、これは疑問に思っていましたが、なぜTCPソケットはデフォルトで暗号化されていないのですか?パケットスニッフィング。

では、なぜTCPソケットの元の実装には暗号化の基本的な形式が含まれていませんでした。これまで気付いたのは、ほとんどの言語が、強制する組み込み実装を提供していないことです。サードパーティのライブラリを使用するか、「noobies」がすべてのソケットにSSLを実装するのを非常に困難にします。ほとんどの場合、そもそもそうする必要はありません。

単純な自己署名証明書でも、最も基本的な形式の保護には十分であり、新しい開発者には抽象化することができます。

4
Paradoxis

最新のネットワーキングは 7層OSIモデル に従います 懸念の分離 の原理により成功しています。

関心事を分離することの価値は、コンピュータプログラムの開発と保守を簡素化することです。懸念事項が適切に分離されている場合、個々のセクションを再利用したり、独立して開発および更新したりできます。特別な価値は、他のセクションの詳細を知らなくても、またそれらのセクションに対応する変更を加える必要なく、コードの1つのセクションを後で改善または変更できることです。

TCP/IPはレイヤー4(「トランスポート」)

トランスポート層は、サービス品質の機能を維持しながら、1つ以上のネットワークを介してソースから宛先ホストに可変長データシーケンスを転送する機能的および手順的な手段を提供します。

SSL/TLSはレイヤー6(「プレゼンテーション」)

この層は、アプリケーションとネットワーク形式の間で変換することにより、データ表現(暗号化など)からの独立性を提供します。プレゼンテーション層は、アプリケーションが受け入れる形式にデータを変換します。この層は、ネットワークを介して送信されるデータをフォーマットおよび暗号化します。シンタックスレイヤーと呼ばれることもあります。

つまり、意識した設計の選択です。

また、TCPは数十年前にSSLよりも古くなっています。つまり、弱点が見つかったためにSLLは変化し続けます。一方、TCPはほとんど同じままです。OSIモデルあるものを一定に保ち、他のものを変化させることで、変更をより簡単に採用できるようにします。

5
John Wu

カタツムリのメールに暗号化機能が組み込まれていないのはなぜですか?

ソケットは、複数の当事者間の通信を可能にするために使用される単純な概念です。つまり、メッセージを転送するだけです。これまでのところ、カタツムリメールに似ています。つまり、送信者と受信者、およびメッセージがあり、簡単にバイパスできる最小限の保護(エンベロープ)がある場合があります。盗聴や改ざんから通信を保護することは、より複雑な概念であり、実際にどの種類の保護が必要かは、特定のユースケースによって異なります。たとえば、ローカルシステムの別のプロセスにメッセージを送信する場合は、ローカルネットワークの別のホストに送信したり、惑星の反対側にある一部のルーターが政府機関によって制御されている場合にメッセージを送信したりする場合とは異なる保護が必要です。

したがって、メッセージの交換をメッセージの保護とは別に処理して通信を簡素化し、実際に必要な保護の種類に柔軟に対応することだけが理にかなっています。

さまざまな使用例のいくつかの例は、これらの概念を分離することが理にかなっている理由をより明確にするはずです。

  • UNIXドメインソケットは、実際にデータを盗聴するためのカーネルアクセス許可が必要になるため、暗号化は必要ありません。その場合、暗号化の前にデータを取得することもできます。
  • 完全なIPSecロールアウトを備えたネットワークを使用している場合、ネットワーク内の関係者間のすべての通信はすでに暗号化されているため、さらに暗号化を追加する必要はありません。
  • HTTPSのようなインターネット上の暗号化では、メッセージを送信する前に実際にピアを認証できるように、まずローカルトラストアンカーを使用してPKIインフラストラクチャを展開する必要があります。
  • SMTP(メール配信)のようなホップバイホップ暗号化は、ホップでの盗聴からメッセージを保護しないので、エンドツーエンド暗号化(つまり、PGP、S/MIME)がさらに必要です。
  • 双方向通信が必要なため、単方向通信またはマルチキャスト通信では、TLSと同じ種類のキー交換を行うことができません。
4
Steffen Ullrich

パフォーマンスのオーバーヘッド

暗号化は、基本的なネットワークよりもはるかに多くの労力を必要とします。まず、計算能力が必要です。1980年代にすべてのトラフィックをSSLのようなチャネルで実行する場合、TCPが大規模に採用されたとき)は、プロセッサが現在よりもはるかに遅いため、実用的ではありません。

ただし、さらに大きな問題は、小さな要求に対するSSLハンドシェイクのネットワークオーバーヘッドです。小さなメッセージの場合、暗号化キーを確立するためのハンドシェイクは、実際のメッセージよりも数倍大きくなる可能性があり、より多くのラウンドトリップを必要とし、レイテンシを2倍にする可能性があります。これが、標準が今日再設計されたとしても、暗号化なしで基本的なネットワークソケットレイヤーを使用することが理にかなっている理由です。

2
Peteris