Ich untersuche die Verschlüsselung einiger sensibler Daten in SQL Server, z. B. Bankkontonummern und Sozialversicherungsnummern, um den neuen Landesgesetzen zu entsprechen. Ich verwende SQL Server 2008 als meine Datenbank mit .NET-Code. Ich habe .NET verwendet, um Passwörter zu verschlüsseln, aber dafür denke ich über die integrierte Verschlüsselung von Microsoft nach, indem ich einfach die wenigen Datenspalten verschlüssle, die ich mit einer einfachen Symmetric Key Encryption benötige. Wenn ich SQL Server-Verschlüsselung gehe, kann ich die Daten von externen Berichts-Tools und nicht nur innerhalb meiner .NET-Anwendung entschlüsseln. Hier ist das Beispiel, das ich verwende: Ссылка
Es verwendet ein Zertifikat, das von SQL Server erstellt wurde und dann die DecryptByKey-Funktion, um die Daten zu entschlüsseln, aber ich versuche herauszufinden, wie sicher das wirklich ist? Wie kann ich steuern, welche Benutzer Daten entschlüsseln können oder kann dies jemand tun, solange sie den symmetrischen Schlüssel öffnen und die Entschlüsselungsfunktion verwenden?
Sie haben zwei Alternativen:
Kryptografische Kontrolle. Damit können nur die Benutzer, die das Passwort kennen, die Daten entschlüsseln. Der Nachteil ist, dass der Benutzer jedes Mal, wenn er auf die Daten zugreift, das Entschlüsselungspasswort eingeben muss. Ein Bericht muss einen Password-Parameter enthalten, mit dem der Benutzer, der den Bericht ausführt, das Datenzugriffskennwort erhält. Die Anwendung muss das Passwort vom Benutzer anfordern. Websites müssen ein Passwort vom Besucher anfordern. Und so weiter und so fort
Zugriffskontrolle. Die Daten werden mit einem Schlüssel verschlüsselt, auf den SQL Server selbst Zugriff hat (die Encryption-Kette geht schließlich bis zum Service Master Key, der mit DPAPI verschlüsselt wird). Dies bietet Ihnen keinen größeren Schutz, als Sie SELECT erhalten oder verweigern würden: ist Zugriff Kontrolle, nicht kryptographische Kontrolle. Solch ein Schema schützt nur gegen unbeabsichtigten Verlust von Medien (jemand findet eine Diskette mit Ihrer Datenbank, oder Sie verlieren einen Laptop mit der Datenbank darauf). Mit transparenter Datenverschlüsselung oder Verschlüsselung auf Dateiebene ( BitLocker ).
Das Szenario für die gemeinsame Datenverschlüsselung besteht darin, die Daten mit einem symmetrischen Schlüssel zu verschlüsseln und anschließend den symmetrischen Schlüssel mit einem asymmetrischen Schlüssel (normalerweise dem privaten Schlüssel eines Zertifikats) zu verschlüsseln. Der asymmetrische Schlüssel wird dann wiederum mit einem Passwort verschlüsselt, und dieses Passwort muss beim Versuch, auf Daten zuzugreifen, präsentiert werden. Der Hauptgrund für diese Umleitung auf zwei Ebenen ist die Passwortänderung: Wenn ein Passwort oder ein privater Schlüssel kompromittiert wird, wird der symmetrische Schlüssel mit einem anderen asymmetrischen Schlüssel neu verschlüsselt oder der asymmetrische Schlüssel wird mit einem anderen Passwort neu verschlüsselt. Auf diese Weise hat sich das Zugriffspasswort geändert , ohne dass eine erneute Verschlüsselung aller Daten erforderlich ist . Wenn der Zugriff direkt dem symmetrischen Schlüssel gewährt würde, würde eine Kennwortkompromittierung möglicherweise eine Neuverschlüsselung aller Daten möglicher Terabytes von Daten erfordern.
Wo sich die beiden dargestellten Szenarien unterscheiden, ist, ob der asymmetrische Schlüssel auch mit dem Datenbankhauptschlüssel verknüpft ist oder nicht. Fall 1) ist es nicht, Fall 2) ist es. Dies alles wird in Verschlüsselungshierarchie erklärt.
Tags und Links sql-server security sql-server-2008 encryption