none
Verschlüsselung von Zeichenketten und Übertragung in eine andere Datenbank RRS feed

  • Frage

  • Hallo, 

    Ich möchte Werte verschlüsselt in einer Tabelle abspeichern. Diese Werte werden in bestimmten Abständen in eine andere Datenbank auf einem anderen Server übertragen. Dort muss es möglich sein, diese Werte wieder zu entschlüsseln. 

    Der einfachste Weg wäre entweder die Funktion ENCRYPTBYPASSPHRASE oder einen symmetrischen Schlüssel zu verwenden, den ich in beiden Datenbanken verwenden kann. In beiden Fällen müsste ich allerdings die Passwörter zum ver- und entschlüsseln im Quelltext der betreffenden Prozeduren hinterlegen. Ist das okay, oder ist davon abzuraten? Was wäre eine alternative sichere Vorgehensweise, um verschlüsselte Werte in einer Datenbank auf Server A in eine andere Datenbank auf Server B zu übertragen und zu entschlüsseln?

    Vielen Dank für eure Hilfe


    Mittwoch, 27. Juni 2012 12:52

Antworten

  • Es kommt im Grunde darauf an, warum du die Werte verschlüsseln musst, da davon abhängig ist wie du sie verschlüsseln musst. Die einfachste Methode wäre die Verwendung von Transparent Data Encryption auf beiden Servern. Ansonsten benutze ein mit Zertifikat gesicherten Schlüssel, dann brauchst du kein Passwort.
    Montag, 2. Juli 2012 06:11
    Moderator
  • Hallo Charles

    Willst Du die Daten nur darum verschlüsseln, damit Du diese übertragen kannst? Falls ja, dann kannst Du statt der Daten die Verbindung SSL verschlüsseln.

    Du kannst dann auf dem Server die Protokoll Verschlüsselung erzwingen. Die Daten werden dann nur noch verschlüsselt übermittelt.

    Dazu musst Du ein Zertifikat auf dem Server installieren. Der folgende KB Artikel http://support.microsoft.com/default.aspx?scid=kb;EN-US;316898 beschreibt zwar, wie die Verbindung vom Server zum Client verschlüsselt wird, aber es sollte analog auch zwischen den Servern machbar sein.

    Evt. hilft auch das weiter (Wie das Zertifikat installiert wird): http://blogs.msdn.com/b/jorgepc/archive/2008/02/19/enabling-certificates-for-ssl-connection-on-sql-server-2005-clustered-installation.aspx

    Ich gehe davon aus, dass es analoge KB Artikel auch für neuere SQL Server Versionen gibt.

    Gruss

    Henry

    Dienstag, 3. Juli 2012 07:49

Alle Antworten

  • Es kommt im Grunde darauf an, warum du die Werte verschlüsseln musst, da davon abhängig ist wie du sie verschlüsseln musst. Die einfachste Methode wäre die Verwendung von Transparent Data Encryption auf beiden Servern. Ansonsten benutze ein mit Zertifikat gesicherten Schlüssel, dann brauchst du kein Passwort.
    Montag, 2. Juli 2012 06:11
    Moderator
  • Hallo, 

    es handelt sich hier um von uns vergebene Kennwörter (im engeren Sinne eigentlich IDs) die man nicht ändern kann, die wir aber auslesen können müssen. In der Tabelle sollen die Werte verschlüsselt sein. In den Prozeduren welche diese Werte ver- und entschlüsseln darf das Passwort nicht drinstehen. Nachdem ich die Daten mit dem SSIS-Paket auf den anderen Server übertragen habe, muss ich in der Lage sein, diese Daten wieder auszulesen.

    Welche Vorgehensweise unterstützt hier am besten mein Szenario? Ich bin diesbezüglich noch ein bisschen Grün, und das Thema ist ja recht umfangreich. Ein Deut in die richtige Richtung sehr hilfreich.

    Vielen Dank für die Hilfe.

    Montag, 2. Juli 2012 12:39
  • Was nu'? Kennwörter oder IDs? Kennwörter im Sinne von Passwörtern würde ich eh nicht speichern sondern deren Hash plus Salt. Bei IDs ist das Problem nicht gegeben. Bezüglich der Immutabilität: dafür gibt es Spaltenberechtigungen, d.h. erlaube kein Änderen auf der Spalte.
    Montag, 2. Juli 2012 19:11
    Moderator
  • Hallo Charles

    Willst Du die Daten nur darum verschlüsseln, damit Du diese übertragen kannst? Falls ja, dann kannst Du statt der Daten die Verbindung SSL verschlüsseln.

    Du kannst dann auf dem Server die Protokoll Verschlüsselung erzwingen. Die Daten werden dann nur noch verschlüsselt übermittelt.

    Dazu musst Du ein Zertifikat auf dem Server installieren. Der folgende KB Artikel http://support.microsoft.com/default.aspx?scid=kb;EN-US;316898 beschreibt zwar, wie die Verbindung vom Server zum Client verschlüsselt wird, aber es sollte analog auch zwischen den Servern machbar sein.

    Evt. hilft auch das weiter (Wie das Zertifikat installiert wird): http://blogs.msdn.com/b/jorgepc/archive/2008/02/19/enabling-certificates-for-ssl-connection-on-sql-server-2005-clustered-installation.aspx

    Ich gehe davon aus, dass es analoge KB Artikel auch für neuere SQL Server Versionen gibt.

    Gruss

    Henry

    Dienstag, 3. Juli 2012 07:49
  • Hallo, ich verfahre eigentlich auch so, die Passwörter einfach zu hashen, aber das geht in diesem Fall nicht. Es sind unveränderliche Passwörter, die verschlüsselt werden müssen (wir müssen sie auslesen können). Diese Anforderung stammt nicht von mir, sondern ist Vorgabe eines anderen Systems.
    Dienstag, 3. Juli 2012 10:23
  • Sie Daten sollen nicht nur bei der Übertragung verschlüsselt sein, sondern auch in der Datenbank selbst. Die Verbindung ist bereits via SSL verschlüsselt.

    Dienstag, 3. Juli 2012 10:24
  • Danke für eure Antworten. Wir haben uns dafür entschieden die externe Datenbank über Transparent Data Encryption zu verschlüsseln und die Daten über eine verschlüsselte Verbindung zu übertragen.

    Mittwoch, 4. Juli 2012 09:52