Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist der beste Weg, um SSNs in SQL Server 2008 zu verschlüsseln?

Wenn Sie Daten verschlüsseln, müssen Sie sich fragen, wer sie entschlüsseln wird. Wenn Sie ein asymmetrisches Verschlüsselungssystem (z. B. RSA) verwenden, verwendet die Verschlüsselung den öffentlichen Schlüssel und die Entschlüsselung den entsprechenden privaten Schlüssel; „Asymmetrie“ kommt daher, dass der private Schlüssel nicht aus dem öffentlichen Schlüssel neu berechnet werden kann (obwohl beide Schlüssel mathematisch miteinander verknüpft sind).

Asymmetrische Verschlüsselung neigt dazu, Overhead zu haben. Eine erste Bemerkung ist, dass eine solche Verschlüsselung einen zufälligen Teil enthalten muss, weil jeder verschlüsseln kann (der öffentliche Schlüssel ist, ja, öffentlich):Wenn der Verschlüsselungsprozess deterministisch ist, dann kann jeder alle möglichen SSNs verschlüsseln (es gibt weniger als a Milliarden von ihnen, was für einen modernen Computer eine wirklich kleine Zahl ist) und mit den verschlüsselten Werten übereinstimmen. Daher muss während der Verschlüsselung etwas Zufälliges hinzugefügt werden, und die verschlüsselte SSN ist größer als die Klartext-SSN.

Bekannte asymmetrische Verschlüsselungssysteme verwenden mathematische Strukturen, die ihren eigenen Preis haben. Grundsätzlich hat für das RSA-Verschlüsselungssystem mit einem "stark genug" Schlüssel eine verschlüsselte Nachricht eine Länge von mindestens 128 Bytes. Einige Verschlüsselungssysteme sind besser; Während ich mich an die ausgetretenen Pfade der akademischen Forschung hielt, konnte ich es in etwa 41 Bytes tun (mit El-Gamal über der elliptischen Kurve NIST K-163). Kleiner scheint schwieriger.

Daher ist es kein Wunder, dass ein bestimmtes Datenbanksystem ein solches Feature nicht standardmäßig enthält.

Für Ihr Problem sollten Sie zunächst so klar wie möglich definieren (und schreiben):

  • welche Daten möchten Sie schützen
  • wer die Daten eingibt
  • wer soll die Daten zurücklesen

und erst dann sollten Sie sich fragen, ob Verschlüsselung dafür ein geeignetes Werkzeug ist. Verschlüsselung ist gut, wenn der vorgesehene Angreifer die rohen, gespeicherten Daten in die Finger bekommen kann. Das bedeutet, dass der Angreifer den Schutz des Betriebssystems umgangen hat. Was immer das Betriebssystem weiß, weiß auch der Angreifer. Wenn die Datenbank auf einer Maschine gehostet wird und es eine Schnittstelle gibt, über die die entschlüsselte SSN abgerufen werden kann, dann „weiß“ diese Maschine, wie sie an die Daten kommt, und der Angreifer auch … Auf der anderen Seite, wenn der Host Computerbetriebssystem als robust genug angesehen wird, dann scheint eine Verschlüsselung überhaupt nicht erforderlich zu sein.

Symmetrische Verschlüsselung auf der Datenbank kann ein schwächeres Problem angehen, bei dem der Angreifer nachträglich eine Kopie der Festplatte erhält . Das Hostsystem kennt den symmetrischen Verschlüsselungsschlüssel, aber es kennt ihn nur im RAM. Ein Angreifer, der die Festplatte stiehlt, wird diesen Schlüssel nicht haben.