セキュリティで保護された Web 接続を介してユーザーの機密データを収集し、後で自動化された復号化と再利用のためにサーバーに安全に保存する必要があるシステムを構築しています。また、システムは、ユーザーが保護されたデータの一部 (例: *****ze
) を表示したり、Web 経由で完全に変更したりできるようにする必要があります。システムは妥当なレベルのセキュリティを提供する必要があります。
私は次のインフラストラクチャを考えていました:
アプリ (ウェブ) サーバー 1
安全な Web 接続のための適切な TLS サポートを備えた Web サーバー。
公開鍵アルゴリズム (RSA など) を使用して、入力されたユーザーの機密データを暗号化し、 App Server 1またはDB Server 1のどこにも保存せずに、一方向のアウトバウンド セキュア チャネル (ssh-2 など) 経由でApp Server 2に送信します。
ユーザーパスワード依存の対称鍵アルゴリズムを使用して、入力されたデータの一部 (最後の数文字/数字など) を暗号化し、DB サーバー 1に保存して、後でユーザーの Web セッション中にアプリケーションサーバー 1で取得できるようにします。
ユーザーが Web 経由でデータを変更する場合は、ステップ 2 を再利用します。
DB サーバー 1
- セキュリティで保護されていない非機密ユーザー データを保存します。
- アプリケーション サーバー 1で暗号化された機密ユーザー データの一部を保存します (上記の手順 3 を参照) 。
アプリ サーバー 2
- App Server 1またはDB Server 1には何も送信 しない でください。
- アプリケーション サーバー 1から暗号化されたユーザーの機密データを受信し、 DB サーバー 2に保存します。
- 暗号化されたユーザーの機密データを ローカル スケジュールに従ってDB サーバー 2から取得し、適切なキー管理でアプリ サーバー 2にローカルに保存されている秘密キー (アプリ サーバー 1の手順 2 を参照)を使用して復号化します。
DB サーバー 2
- 暗号化されたユーザーの機密データを保存する ( App Server 2のステップ 2 を参照)
アプリ (Web) サーバー 1またはDB サーバー 1 、あるいはその両方が侵害された場合、攻撃者はユーザーの機密データ (暗号化されているかどうかにかかわらず) を取得できなくなります。とにかくよく知られている公開鍵と暗号化アルゴリズムへのアクセスだけが攻撃者に与えられます。ただし、攻撃者は Web サーバーを変更して、現在ログインしているユーザーのパスワードを平文で取得し、DB サーバー 1 に保存されているユーザーの機密データの一部を解読することができます ( App Server 1を参照)。、ステップ 3) は大したことではありません。攻撃者は、(コードの変更を介して) 潜在的な攻撃中にユーザーが Web 経由で入力した機密データを傍受することもできます。後で私はリスクが高いと考えますが、攻撃者が誰かに気付かれずにコードを変更するのは難しい (そうですか?) ことを考えると、あまり心配する必要はないと思います。
App Server 2と秘密鍵が侵害された場合、攻撃者はすべてにアクセスできますが、App Server 2またはDB Server 2は Web 向けではないため、問題にはなりません。
このアーキテクチャはどの程度安全ですか? 暗号化アルゴリズムと安全なプロトコルがどのように機能するかについての私の理解は正しいですか?
ありがとうございました!