web-dev-qa-db-ja.com

SSL接続内での暗号化の使用

クライアントとバックボーンサー​​バー間の接続をより安全にするために、SSLを使用しています。別の暗号化メカニズムを使用して送信データを2回暗号化することは本当に意味がありますか?たとえば、AESでデータを暗号化してから、SSL接続でデータを送信しますか?

11
Mark

それは本当にあなたが保護しようとしているものに依存します。

SSLは、送信中のデータと2つの設定ポイントの間のデータのみを保護します。保管中のデータは保護されません。また、データが要求された人物からのものであるという保証はありません。

したがって、どちらかのエンドポイントに保存されているデータを保護する必要がある場合は、暗号化することは意味があります。または、特定の関係者からのデータであることを保証する必要がある場合は、署名することは意味があります。

一方、単にデータを復号化してエンドポイントに保存するだけで、認証を行わない場合は、別のトランスポート層を追加してもあまり意味がありません。

セキュリティはレイヤーで機能することが多いため、各レイヤーが何を提供するかを理解することが重要です。 SSLは単なるトランスポート層であり、送信されたデータが途中で傍受されたり、途中で攻撃者によって何かに置き換えられたりしていないことを保証するだけです。

16
Steve Sether

ほとんど間違いなく、特にクライアントがブラウザーの場合は、違います。 SSL/TLSが機能する理由の1つは、SSL/TLSがすでにクライアントに組み込まれていることです。転送中に攻撃者が傍受して変更できる、クリアテキストで送信するものはありません。 SSL自体が壊れている場合、アクティブな攻撃者が送信する暗号化(JavaScriptベースの暗号化など)を無力化したり、パッシブな攻撃者が盗んだ内部の暗号化スキームへのキーを変更してデータを解読したりする可能性があります。あなたは関係なく失った。

したがって、一般的なケースでは、セキュリティを実際に向上させるために複雑さを追加する価値はありません。確かに実装が実際に理にかなっている場合もありますが、特定のアーキテクチャが与えられているため、なぜそうなるのかについて非常に強い議論がない限り、一般的なケースが適用されます。

6
Xander

確立されたSSL/TLSプロトコルは、すべての重要な鍵交換を容易にします。あなたが提案した追加の暗号化レイヤーはもちろん機密性(データセキュリティの原則の1つ)を向上させます。ただし、AESが使用できるキーに到達することは、特にキーがセッションごとに変更されることが予想される場合、別の頭痛の種になります。

@Xanderは、暗号化の別のレイヤーを追加するとクライアントのブラウザーが壊れることを正しく指摘しています。しかし、あなたはすでにそれを知っていました。別のレイヤーを追加することにより、クライアントとサーバーの両方に変更が必要になる場合があります。

0
sandyp