私は、顧客データを本社と社内の移動中の営業担当者の間で共有できるようにするクライアント/サーバーを作成しています。
サーバーは、顧客データをダウンロードしてXMLファイルに書き込みますが、データをメモリに保持して、ローカルクライアントとして機能できるようにします。
顧客データをインターネット経由で簡単に送信できるように、ArrayListをシリアル化することを計画しています。これはどれくらい安全ですか?シリアル化されたオブジェクトを送信する前に、フォームの暗号化を調べる必要がありますか?
私は、顧客データを本社と社内の移動中の営業担当者の間で共有できるようにするクライアント/サーバーを作成しています。
サーバーは、顧客データをダウンロードしてXMLファイルに書き込みますが、データをメモリに保持して、ローカルクライアントとして機能できるようにします。
顧客データをインターネット経由で簡単に送信できるように、ArrayListをシリアル化することを計画しています。これはどれくらい安全ですか?シリアル化されたオブジェクトを送信する前に、フォームの暗号化を調べる必要がありますか?
シリアル化の一部として暗号化を実行しません。
ここには 2 つの問題があります。
1 と 2 は別々の問題であり、それらを 1 つの解決策に組み合わせることは、将来的に自分自身の問題を生み出すだけです。
すぐに使用できるシリアライゼーションを使用してから、 TLSなどの安全な伝送チャネルを使用します。
私の推測では、HTTPSを調べてください。
シリアル化部分については考えないでください。シリアライゼーション プロセスの最後に、データ (バイナリまたは XML) を取得するので、これをセキュリティで保護されていないものとして扱う必要があります。
Web 経由で安全に転送する予定がある場合は、HTTPS を検討する必要がありますが、メールやファイル転送などの他の手段で転送する予定がある場合、または安全に保存またはアーカイブする必要がある場合は、おそらくPKCSを検討する必要があります。 #7 および関連する標準。
顧客データをインターネット経由で簡単に送信できるように、ArrayList をシリアル化する予定です。これはどのくらい安全ですか?
はがきに印刷して郵送するのと同じくらい安全です。あなたと受信者の間のチェーン内のすべてがコンテンツを見ることができます。
Serialized オブジェクトを送信する前に、フォームの暗号化を検討する必要がありますか?
それが通常のアプローチです。クライアントとサーバー間の接続が暗号化されているセキュア ソケットなどのトランスポート レベルのセキュリティのいずれかですが、メッセージはいずれかの端で「プレーン テキスト」で表示されます。または、メッセージ自体を暗号化してからクライアントで復号化することもできます。トランスポートではなくメッセージを暗号化すると、より多くの層に影響するため、より複雑になりますが、メッセージを保存したり、クライアント サーバーからキャッシュを許可するものに変更したりできます。移動中の人がラップトップを紛失した場合に情報が失われることを心配している場合は、メッセージを暗号化し、使用時にのみ復号化することをお勧めします. (他の代替手段は、顧客のメッセージが保存されているドライブを暗号化することです。これはすべてを保護しますが、コンピューター上のすべてにも影響を与えるため、会社の IT ポリシーを変更する必要があります)。
もちろん、3 つすべてを同時に使用することもできます。
シリアル化して gzip し、HTTPS 経由で送信します。これらの手順を正しい順序で行うことが重要です。暗号化されたデータの圧縮は機能しません。圧縮されていないデータの暗号化には時間がかかり、理論的にはセキュリティが低下します。
顧客データをインターネット経由で簡単に送信できるように、ArrayList をシリアル化する予定です。これはどのくらい安全ですか?Serialized オブジェクトを送信する前に、フォームの暗号化を検討する必要がありますか?
シリアル化の段階で暗号化を行うべきではありません。明確にするために、シリアル化はオブジェクトを取得し、それをバイト文字列に変換します。シリアライゼーションはすべて、複雑にするために不要な変更を加えることなく、平文で行う必要があります。
ビットのパッケージをエクスポートする準備ができたら、暗号化を行う必要があります。ネットワークなどを介して宛先と「ライブ」で通信している場合は、SSL を使用して回線を保護する必要があります。幸いなことに、これはSslStream (MSDN)を に簡単にアタッチするだけTcpClient
です。より大きな (暗号化されていない) ストリーム内のビットの小さなパッケージだけを暗号化することは、一般に偽のセキュリティであることに注意してください。安全であるためには、会話全体が安全でなければなりません。
一方、ビットを (ファイルに) 保存する場合は、何らかのオフライン暗号化を使用する必要があります。ここでも、.NET フレームワークがすべての詳細を処理します。CryptoStreamオブジェクトをアタッチするだけでFileStream
完了です。
HTTPS または TCP over SSL を使用するかどうかは、通信チャネルによって異なります。必要な場合は、証明書を両側に安全に展開すると、その中のすべてが安全になります。
また、シリアル化する前に暗号化するとうまくいくと言ったように、両側で1つの秘密鍵を使用できます。鍵を安全に保管し、それらに到達できないようにする必要があります。ただし、後で交換する必要が生じる可能性があり、キーの管理が少し面倒になる可能性があるため、これは素晴らしいことではありません。HTTPS/TCP + SSL に固執すると思います