2

SQL Server で列を暗号化するためにhttp://msdn.microsoft.com/en-us/library/ms179331.aspxに従いました。

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'T3stP@ssword'

CREATE CERTIFICATE TestCert WITH SUBJECT = 'SSN Encryption'

CREATE SYMMETRIC KEY HRKey
    WITH ALGORITHM = DES
    ENCRYPTION BY CERTIFICATE TestCert;

OPEN SYMMETRIC KEY HRKey
   DECRYPTION BY CERTIFICATE TestCert;

UPDATE [dbo].[Person]
   SET [EncryptedSSN] = EncryptByKey(Key_GUID('HRKey'), CAST(SSN AS varchar(10)));


SELECT TOP 10 * FROM Person

1   Tom Thomson 111111111 0x0026DA624DBCA04CBCBF621FD5F......
2   Steve   Stephenson  222222222 0x0026DA624DBCA04CBCBF6.....       

暗号化されたデータがあることを示しています。これは私が望んでいたことです。

OPEN SYMMETRIC KEY HRKey
   DECRYPTION BY CERTIFICATE TestCert;

SELECT PersonID, Firstname, Lastname [SSN], 
    CONVERT(VARCHAR, DecryptByKey([EncryptedSSN])) 
    AS 'Decrypted SSN'
    FROM [dbo].[Person]


1   Tom Thomson     111111111   111111111
2   Steve   Stephenson  222222222   222222222

   Close SYMMETRIC KEY HRKey  

暗号化されていない列がまだあることを無視して、問題はこれが実際に改善された点です。キーを開いてそれを使用してデータを復号化するのは簡単です。理解の一部が欠けていると思います。

4

1 に答える 1

1

キーはユーザーアカウントに関連付けられています。つまり、キーにアクセスするには資格情報が必要です。ハッカーがそのIDを乗っ取ることができる場合、あなたの懸念が当てはまります。ただし、IOサブシステムをコピーまたは盗むだけでは暗号化を破るには不十分であり、別のアカウントでIOサブシステムにアクセスすることもできません。

さらに、完全なセキュリティを確保するには、バックアップメディアも保護する必要があります。暗号化されていないデータをバックアップすると、別の攻撃ベクトルが作成されます。大規模なクライアントに対してSaaSを実行する場合、またはHIPAAやPCIなどの標準に準拠する必要がある場合は、バックアップ領域が暗号化されていることを確認する必要がある場合があります。

于 2012-12-13T18:51:41.357 に答える