2017-01-05 9 views
0

2つの別々のサーバーに存在する必要がある2つのアプリケーションを開発しています。 1つはデータを暗号化し、暗号化されたデータをSQL Serverインスタンスに格納します(SQL 2012 Standard、TDEサポートなし)。別のアプリケーションでは、暗号化されたデータをプルダウンし、復号化してレポートに表示します。1つのサーバーで暗号化し、別のサーバーで暗号化します。

共有プライベート/パブリックキーアクセスを使用して、秘密鍵を参照してください。AESManaged

答えて

3

AESは対称鍵暗号であるため、プライベート/公開鍵のペアは使用しません。 AESを使用すると、データを暗号化および復号化するために、すべてのアクタが同じキーにアクセスできる必要があります。両方のシステムが同じ鍵にアクセスできるのであれば、このソリューションに非対称(公開/秘密)暗号化を導入する必要はありません。

両方のシステムに静的な共有キー(永久にアクセスできない)を永続的にアクセスさせたくない場合、ハイブリッド暗号システムを使うことができます - それぞれのメッセージ/レコードに対してランダムなAES "セッション"キーを生成します。 (AEADモードを使用するか、またはの暗号テキストで認証タグをHMAC経由で追加してから、受信者の公開鍵を使用してセッション鍵を暗号化します)。暗号化されたセッションキーと暗号化されたデータを一緒に送信することができます。受信者は、秘密キーを使用してセッションキーを復号化し、データを復号化します。どんな単一のメッセージの妥協も他のレコードを妥協することはありません(妥協した受信者秘密鍵でない限り)。 AesManagedまたはAesCryptoServiceProvider(詳細については、hereを参照)、RsaCryptoServiceProvider又はRsaCNGを意味.NETで

hereを参照)。

+0

OR ... TLSだけでも使えます。 –

+2

TLSは送信中に確実にデータを保護しますが、データストアの永続性のためにアプリケーション層の暗号化について質問しています。 – Andy

+0

ああ私は "店"という言葉を見ませんでした。 –

関連する問題