HTTPまたはFTP経由でダウンロードされたデータの破損はどのようにチェックされますか?
I know that TCPはヘッダーに16ビットのチェックサムフィールドを提供し、チェックに使用されます。また、トレントはより強力なチェックサムメソッドMD5または(not not確かに)CRC32。
最初は、HTTPはCRCを実装していると思っていました。これは、私の知る限り、低コストであり、ネットワーキング(偶発的な変更の検出)に「素晴らしい」ためですが、このトピックについては何も見つかりませんでした。
では、FTPとHTTPはどのようにしてデータが破損していないことを保証するのでしょうか。
ファイルの保存中にデータが破損する可能性があることを認識しています。
HTTPまたはFTPからダウンロードされたデータの破損はどのようにチェックされますか?
単独ではまったくないです。
プロトコルとしてのHTTPおよびFTPは整合性を提供しません¹。
ただし、HTTPとFTPは通常、TCP/IPの上位で使用されます。どちらもトランスポートにチェックサムがあります。TCPチェックサムが失敗した場合、オペレーティングシステムはTCPパケットで再度要求するので、HTTPで整合性チェックを実装する必要すらありません。
TLS(HTTPやFTPを含む)をトンネリングする場合、整合性チェックの追加のレイヤーを取得します。
では、FTPとHTTPはどのようにしてデータが破損していないことを保証するのでしょうか。
彼らはしません。通常、整合性を保証するのはトランスポートの仕事であり、アプリケーションプロトコルの仕事ではありません。
意図的に変更したい場合、TCP packesを偽造するよりも、MD5(これらのヘッダーで使用されます)内で衝突を引き起こすのはもちろん難しいことをここに追加しますしかし、それが攻撃シナリオである場合、TLSが答えであり、HTTPチェックサムではありません。
HTTPとFTPは、ほとんどの場合、基になるトランスポート層としてTCP=を使用するため、TCPの保護も同様に適用されます。ただし、これらはネットワークレベルの偶発的な破損の問題にのみ関係します。指摘したように、ファイルが正常に書き込まれたことの確認は、通常、CRC32のようなチェックサムに任されています。
意図的な操作(これはsecurity.SEにあるため、私はあなたがそうだと思います)に関心がある場合、これらは十分ではありません。暗号的に安全ではありません。ネットワーク側では、通常、TLSを導入することで別の layer を処理しています(HTTPと組み合わせるとHTTPSが取得され、FTPと組み合わせるとFTPSが取得されます)。ただし、ディスク上にあるファイルの整合性を確認するだけでなく、特に確実にしたい場合は、ベンダーの一般的なアプローチは、SHA-2チェックサムをリストしたファイルを提供し、GPGキーで署名することです。両方のファイルをダウンロードしてから、チェックサムファイルが信頼できる鍵で署名されていること、および他のファイルが検証したファイルにリストされているチェックサムと一致していることを確認します。
では、FTPとHTTPはどのようにしてデータが破損していないことを保証するのでしょうか。
つまり、セキュリティの観点からはそうではありません。
これらのプロトコルはすべてスタックであると想定しています。また、スタックの各レベルには独自の責任があります。あなたの質問に比べて奇妙なのは、メッセージの整合性はFTPやHTTPの問題でもTCPの問題でもないということです。前者はファイルまたはデータの交換を可能にするプロトコルの高レベル部分を担当し、後者はパケットの正しい配信を担当します。パケットの整合性は、OSIスタックのレベル2レイヤー(データリンク)の問題です。 2つの連続するノード間で交換されるパケットが変更されていないことを保証する必要があります。ここで最も一般的なプロトコルは、強力なチェックサムを使用するHDLCです。
もちろん、TCPレベルでチェックサムがありますが、ノードの1つが狂って誤ったデータを送信した場合に警告されるのはすべてをキャッチ機能のみです、それははるかに弱いチェックサムを使用します。結局のところ、整合性はその仕事ではありません。
normalネットワークを使用する場合、データの整合性は完全なTCP/IPスタックによって保証されます。エンドツーエンドのチェックサムは通常、ミラーを使用したため、または元のファイルシステムに問題が発生した場合に、送信者サイトでファイルが破損していないことを制御するために使用されます。