2016-07-26 7 views
1

Мне нужно было зашифровать/дешифровать некоторую личную информацию в моей базе данных, такую ​​как номер кредитной карты и пароли.Сертификат SQL Server и симметричный ключ

Следуя шагам от Microsoft, я успешно шифровал & расшифровать данные.

Но после некоторого теста у меня есть вопросы.

Предположим, что кто-то получает несанкционированный доступ к базе данных (взломать) и может видеть базу данных в SSMS со своего компьютера. Уверенно он видит, что у меня есть сертификат и симметричная настройка ключа.

Для того, чтобы отобразить данные примеры показывает следующий запрос

OPEN symmetric KEY symmetrickey1 
decryption BY certificate certificate1 
Now list the original ID, the encrypted ID 
SELECT customer_id, 
    credit_card_number_encrypt         AS 
    'Encrypted Credit Card Number', 
    CONVERT(VARCHAR, Decryptbykey(credit_card_number_encrypt)) AS 
    'Decrypted Credit Card Number' 
FROM dbo.customer_data; 
-- Close the symmetric key 
CLOSE symmetric KEY symmetrickey1; 

Если приведенный выше запрос возвращает данные и можно увидеть, как кредитные карты, то можно защитить? Не нужно ли передавать пароль где-нибудь в запросе?

Уверен, что я что-то пропустил. Кто-нибудь может мне это объяснить?

+0

жаль, что я говорил для SQL Express – user2160275

ответ

1

я должен был включать в себя пароль к cerificate

CREATE CERTIFICATE Certificate1 
Encryption By Password='Password123' 
WITH SUBJECT = 'Protect Data' 

для извлечения данных

OPEN Symmetric KEY SymmetricKey1 
DECRYPTION BY CERTIFICATE Certificate1 With Password='Password123' 
; 
select *,CONVERT(nvarchar(255),DECRYPTBYKEY(Credit_Card_No)) as 
[Credit_Card_No3] from Customers 
; 
Close Symmetric Key SymmetricKey1