Ich muss eine Anwendung entwickeln, die Daten in einer SQL Server 2005-Datenbank speichert (die App selbst ist entweder ein WCF-Dienst oder ein Asp.Net-Webdienst).
Nun, diese Daten sind höchst vertraulich und müssen in einer verschlüsselten Form in der Datenbank gespeichert werden.
Ich frage mich also, was die besten Praktiken dabei sind. Ich weiß, dass SQL Server einige Verschlüsselungsfunktionen integriert hat. Gibt es dafür eine Art "für Dummies", damit ich schnell loslegen kann.
Alternativ habe ich gedacht, dass ich in meinem C # -Code und nicht in der Datenbank verschlüsseln / entschlüsseln könnte - vielleicht eine Schicht, die dies gerade über der Datenzugriffsebene behandelt (ist das eine gute Idee)?
Sehen Sie sich diesen Link an eine gute Einführung mit Proben.
Ich denke, dass die Datenverschlüsselung in der Anwendung besser ist, weil in diesem Fall die übertragenen Daten bereits verschlüsselt sind. Andernfalls müssen Sie einen sicheren Kanal zwischen Ihrer App und dem Datenbankserver verwenden.
Es hängt von Ihren Bedürfnissen ab, würde ich sagen.
Haben Sie in Erwägung gezogen, Ihre Daten auf dem Dateisystem zu verschlüsseln?
Es ist nur Windows 2008 / Vista, aber es sollte Ihnen geben, was Sie brauchen und wozu es bestimmt ist.
Bevor Sie sich für eine Verschlüsselungsmethode entscheiden, müssen Sie darauf zugreifen, welche Teile des Systems angreifbar sind. Wenn das Potenzial für nicht autorisierten Zugriff auf die Datenbank besteht, besteht die gleiche Bedrohung für Ihre Anwendung? Jemand könnte Ihren Code über Reflector ausführen und ermitteln, welche Methoden zum Verschlüsseln und Entschlüsseln verwendet wurden. Sie können diese Exposition in gewissem Maße mit den Code-Obfukatoren abschwächen. Wenn dieses Problem kein Risiko darstellt, können Sie Ihre Daten auf Anwendungsebene leichter verschlüsseln.
Die Verschlüsselung muss abhängig von der Anwendung an einigen verschiedenen Orten erfolgen. Zum Beispiel muss eine Verbraucher-Site, die Kreditkarteninformationen verwendet, die Verbindung über das Netzwerk verschlüsseln, um zu verhindern, dass der Benutzer in der Mitte Angriffe oder Snooping durchführt. Wenn die Daten in der Datenbank gespeichert sind, müssen Sie die Daten so verschlüsseln, dass ein Vertriebsmitarbeiter auf niedriger Ebene die Kreditkartendaten der Kunden nicht lesen und darauf zugreifen kann. In diesem Fall sollten Sie zusätzlich die Verschlüsselung auf Spaltenebene als entsprechende Berechtigung implementieren besorgt, dass eines Tages der Hausmeister in Ihrem Rechenzentrum eines Ihrer Backups stehlen könnte, dann benötigen Sie das TDE-Gerät, um Daten auf Laufwerksebene zu verschlüsseln.
Die Verschlüsselung hat einen Leistungs-Overhead in Bezug auf die CPU-Nutzung, was noch wichtiger ist, der Overhead hängt davon ab, dass die Algorithmen zur Entschlüsselung verwendet werden.
Tags und Links sql-server-2005 encryption