2016-07-26 19 views
1

Ich hatte die Notwendigkeit, einige persönliche Informationen in meiner Datenbank zu verschlüsseln/entschlüsseln wie Kreditkartennummer und Passwörter.SQL Server-Zertifikat und symmetrischer Schlüssel

Nach den Schritten von Microsoft konnte ich erfolgreich verschlüsseln & die Daten entschlüsseln.

Aber nach einigem Test habe ich Fragen.

Angenommen, jemand erhält nicht autorisierten Zugriff auf die Datenbank (Hack) und kann die Datenbank in SSMS von seinem eigenen Computer aus sehen. Surly kann er sehen, dass ich einige Zertifikate und symmetrische Schlüssel eingerichtet hatte.

Um die Daten, die die Beispiele anzuzeigen zeigt die folgende Abfrage

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; 

Wenn die obige Abfrage, um die Daten zurückgibt und können die Kreditkarte sehen, wie dann geschützt werden kann? Sollte es nicht notwendig sein, irgendwo in der Abfrage ein Passwort zu übergeben?

Ich bin sicher, dass ich hier etwas vermisse. Kann mir das jemand erklären?

+0

leider sind – user2160275

Antwort

1

Ich hatte ein Passwort an die cerificate

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

für das Abrufen von Daten Ich sprach für SQL Express

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