1

AESと組み込みのRijndaelManagedを使用して、asp.net Webフォームで暗号化を作成しています。どのようなキーシステムを使用すればよいか悩んでいます。データベースで SSN を暗号化し、SSN の所有者または承認された管理者のみが復号化できるようにしたいと考えています。

気になるのは、申請中に暗号化キーを作成すると、申請を終了すると使えなくなるのではないか?キーをデータベースに保存する必要がありますか? それは暗号化のポイントを台無しにするようです。おそらくシード番号に基づいて毎回同じキーを取得する方法はありますか? おそらくそうではありません。どうすればこの問題にアプローチできますか?

4

3 に答える 3

3

最終的に、Web アプリケーションはデータを読み取り、許可されたユーザーに提示できる必要があります。複数のユーザーがデータにアクセスできるようにする場合は、特定のユーザーに固有ではない方法でデータを取得する何らかの方法が必要です。これは、アプリを信頼して適切な人に提供する必要があることを意味します。

これが意味することは、これを提供するデータベースを使用していると仮定すると、データベース レベルの暗号化を使用してデータベース内の値を暗号化する必要があるということです。次に、アプリは、設定されている承認メカニズムに基づいて、データを誰かに表示するかどうかを決定できます。

于 2012-08-10T17:41:22.780 に答える
3

さて、暗号化を使用すると、常にこの問題が発生します-キーをどうするか? 鍵の保管と管理は独自の分野です。

評価するためのいくつかのアプローチ:

  • DPAPIを使用して暗号化します。DPAPI を使用すると、Windows は、ASP.NET アプリを実行するユーザーの資格情報でキー ストレージを処理します。
  • シークレット (パスワード) を使用してユーザー自身を認証している場合は、パスワードとソルトからキーを導出できます。ユーザーがパスワードを変更した場合は、データを再暗号化することを忘れないでください! ソルトは、ユーザー情報と一緒に平文で保存できます。次のようにして、パスワードから暗号化キーを導出できます。

        public static KeyIV GetKeyBytesFromPassword(string password, byte[] salt) {
        using (var aes = new AesCryptoServiceProvider()) {
            using (var deriveBytes = new Rfc2898DeriveBytes(password, salt)) {
                var res = new KeyIV {
                    Key = deriveBytes.GetBytes(aes.KeySize / 8),
                    IV = deriveBytes.GetBytes(aes.BlockSize / 8)
                };
    
                return res;
            }
        }
    }
    
  • 一流のセキュリティが本当に必要な場合は、ハードウェア セキュリティ モジュール (HSM) を使用できます。HSM は独立したハードウェア (たとえばThalesを参照) またはコンピュータのボード (たとえば IBM 4764 PCI-X Cryptographic を参照) です。コプロセッサーまたは類似のもの)。この場合、鍵の保管と管理を処理する特殊な改ざん防止ハードウェアを使用しています。
  • 一部のデータベース製品には、透過的データ暗号化と呼ばれるものがあり、基本的にデータベース テーブル全体を透過的に暗号化します。それは非常に高価ですが。Oracle と SQL Server の両方にそれがあります。
于 2012-08-10T17:44:04.873 に答える
1

ここで多くのことが議論されています: SQL Server 2008 で SSN を暗号化する最良の方法は何ですか? .. RinadaelManaged を使用してパスワードを暗号化し、キーと IV を説明用の暗号化されたパスワードと共に保存しました。キーと IV はレコードごとに異なります。

http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged.aspx

于 2012-08-10T17:44:41.740 に答える