SQL Server: Sicherheit für Entwickler

Asymmetrische Schüssel

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mittels asymmetrischer Schlüssel können Inhalte ver- und wieder entschlüsselt werden. Dieses Beispiel zeigt den Einsatz in Verbindung mit einem Kennwort, das für die Ver- und Entschlüsselung bekannt sein muss.
04:39

Transkript

Das Einfache ist die Handhabung von asymmetrischen Schlüsseln. Und ich zeige Ihnen hier in einem Beispiel in der Datei AsymetricEncryptData.sql, wie das funktionieren kann. Zunächst lege ich eine Datenbank an, dann brauche ich kein Zertifikat oder Ähnliches, sondern ich lege gelegentlich ein Schlüssel an, den ich ein Kennwort hinterlege beziehungsweise ich verschlüssele diesen Schlüssel mit dem Kennwort. Man achte auf die Formulierung. Lege dann eine Tabelle an, und die Tabelle hat als Besonderheit, dass die Spalte KontoNrEnctryted nicht vom Typ Varchar oder NVarchar oder Ähnliches ist, sondern wirklich für Binärinhalt ausgelegt, nämlich varbinary(MAX). Ich lege die also an und dann füge ich eine Reihe von Zeilen ein, und zwar die Verschlüsselung selber wird von der EncryptByAsymKey-Funktion durchgeführt. Das heißt, diese Funktion bekommt 2 Parameter, nämlich zum einen die ID des asymmetrischen Schlüssels und den Inhalt, den sie verschlüsseln soll. Und der erste Parameter, also die ID wird wiederum von der anderen Funktion geliefert, die letztendlich aus dem Namen den Schlüssel ermittelt. So, ich führe die mal aus, die Insert-Anweisung, gucke dann mal, wie die Inhalte aussehen und kann auch versuchen, die wieder zu entschlüsseln und da gibt es mehrere Varianten, die ich machen kann. Ich kann hingehen und wenn ich das Kennwort nicht kenne, kann ich es ja mal versuchen. Sie sehen, das funktioniert nicht. Die Funktion DecryptByAsymKey benötigt auch 2 Parameter, wie Ihr Pondon hier oben. Der erste Parameter ist wieder die ID des asymmetrischen Schlüssels, insofern ist das hier gleich dem da oben. Ich muss also wissen, welche asymmetrische Schlüssel verwendet wurden, dann die Spalte, sprich, der Inhalt, der entschlüsselt werden soll und das Kennwort. Wenn ich das nicht kenne, sehen Sie, es gibt einen Fehler. So, wenn ich keine Ahnung habe, was das Kennwort ist, dann kann ich es auch gar nicht übergeben, ich benutze also NULL hier als Parameter. Und dann gibt es zumindest schon mal keinen Fehler, es wird schlicht und ergreifend auch nur der Inhalt NULL geliefert. Wenn ich das Kennwort kenne, dann kann ich natürlich auch die Daten wieder ganz regulär entschlüsseln. Und Sie sehen hier, das ist der Inhalt, den ich auch hier oben eingefügt habe. Das heißt, das funktioniert an der Stelle schon relativ geschmeidig. So, jetzt kann ich mal schauen, ob ich auch mit einem User ohne Rechte zurechtkomme. Hier gibt es einen Fehler, weil es den principal schon gibt. Das übergehe ich jetzt einfach. Ich lege jetzt in der Datenbank einen User an und gebe diesem User Select-Rechte auf die entsprechende Tabelle. Und führe das Ganze in den Sicherheitskontext dieses Users aus, und er kennt sogar das Kennwort. Und Sie sehen, obwohl das Kennwort bekannt ist, kann der Inhalt nicht entschlüsselt werden. Das Geheimnis ist relativ leicht gelüftet: Der User muss Zugriff auf den asymmetrischen Schlüssel bekommen. Wenn ich ihm das gewähre und dann entsprechend das Gleiche noch ausführe, inklusive Kennwort, sehen Sie, funktioniert das. Das heißt, nur weil der User kein Zugriff auf dieses Gebilde des asymmetrischen Schlüssels hat, kann er an der Stelle nicht darauf zugreifen. Was viele Anwendungsentwickler machen, sie legen die asymmetrischen Schlüssel entweder mit einem einfachen oder gar kein Kennwort an, um steuern über dieses Recht quasi, ob jemand solche Spalten sehen darf oder nicht. Allein mit diesem Recht steuere ich dann, ob ich das sehen kann, was in dieser Spalte steht für die verschlüsselte Kontonummer. Gute Idee. Das heißt, ich habe ein relativ einfaches Konzept. Was ich natürlich nicht tun sollte, ist, jede Spalte zu verschlüsseln und für jede Spalte einen unterschiedlichen, asymmetrischen Schlüssel zu verwenden, weil dann habe ich natürlich das Problem, dass ich irgendwann relativ schnell die Übersicht verliere. Aber Sie haben gesehen, es ist relativ einfach mit asymmetrischen Schlüsseln zu arbeiten.

SQL Server: Sicherheit für Entwickler

Lernen Sie, wie sich das Thema Sicherheit im Entickleralltag mit Microsofts Datenbankserver umsetzen lässt.

2 Std. 31 min (25 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:15.01.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!