2

私は将来のプロジェクトのためにいくつかの調査を行っており、一部のデータを暗号化する必要があります。

今日の調査で、多くの異なる暗号化アルゴリズム (AES、Triple-DES、X-DES などを含む) があることに気付きました。SQL-Server (2008r2 Express Probs) でアルゴリズムの 1 つを使用したいと考えています。ベストプラクティスなどのように、これを行うことをお勧めしますか?

私は次のようなことを計画しています:

-- Create the master key. 
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Som3Rand0m!3y?na'
-- Create the cert.
CREATE CERTIFICATE someCert WITH SUBJECT = 'c3p009xFR?'
-- Create Symmetric Key
CREATE SYMMETRIC KEY someSymmetricKey WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY CERTIFICATE someCert 

そして、次のように使用します。

declare @sql varchar(8000)
set @sql = 'OPEN SYMMETRIC KEY someSymmetricKey DECRYPTION BY CERTIFICATE someCert '
exec (@sql)

-- Check the table
SELECT      col1, Convert(varchar(max), DECRYPTBYKEY(col2)) as col2
FROM        myTable

-- dont forget to close the symmetric key again afterwards.
CLOSE SYMMETRIC KEY someSymmetricKey

これは正しい方法だと思います(私は何年も前にそれを読んで例を保存したので、ダブルチェックしてください:])?

また、異なる暗号化アルゴリズムを使用する間に実際にパフォーマンスの違い (またはセキュリティの違い、あるものは別のものよりも破りやすいなど) はありますか? <<- これは、私が本当に知りたい/最も重要なものです。

最後に、データベースを別のサーバーに移動した場合、同じ方法でキー/証明書を再作成するだけで、データを取り戻すことができると思いますか?

良いブログ投稿/リンク/ホワイトペーパーは大歓迎です:) (私が読んだほとんどは静かで悪いものでした)

読んでくれてありがとう:D

4

2 に答える 2

2

AES と 3DES の 2 つのオプションしかありません。単純な DES と XDES は弱すぎます (それぞれ 56 ビットと 112 ビットの強度)。RC4 はオプションではありません。これは、SQL Server の実装が無効になっている (暗号化された値を適切にソルトしない) ためです。

3DES は過去にしがみついています。現在 NISTが推奨するアルゴリズムである AES を使用すると、適切な速度が得られます。

于 2011-03-21T22:51:17.250 に答える
1

暗号化アルゴリズムの選択について、万能な選択肢はありません (SQL Server で利用可能なアルゴリズムに関する Microsoft のアドバイスについては、以下のリンクを参照してください)。

http://msdn.microsoft.com/en-us/library/ms345262.aspx

暗号化キーのバックアップと復元について:

--Backup the master key   
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'Som3Rand0m!3y?na';
BACKUP MASTER KEY TO FILE = 'c:\temp\exportedmasterkey' 
ENCRYPTION BY PASSWORD = 's0me0th3rp4$$w0rd';
GO 
--Back up the certificate
BACKUP CERTIFICATE someCert TO FILE = 'c:\temp\someCert.cer'
GO

次に、他のサーバーで

RESTORE MASTER KEY FROM FILE = 'c:\temp\exportedmasterkey' 
    DECRYPTION BY PASSWORD = 's0me0th3rp4$$w0rd'
    ENCRYPTION BY PASSWORD = 'Som3Rand0m!3y?na'
GO

CREATE CERTIFICATE someCert
    FROM FILE = 'c:\temp\someCert.cer'
GO
于 2011-03-21T23:06:32.443 に答える