Freigeben über


Vorgehensweise: Erstellen identischer symmetrischer Schlüssel auf zwei Servern

Aktualisiert: 12. Dezember 2006

Zum Entschlüsseln von verschlüsseltem Text benötigen Sie den Schlüssel, der beim Verschlüsseln verwendet wurde. Wenn eine Datenbank sowohl Verschlüsselungen als auch Entschlüsselungen enthält, ist der Schlüssel in der Datenbank gespeichert, und er ist entsprechend den Berechtigungen sowohl für die Verschlüsselung als auch für die Entschlüsselung verfügbar. Wenn sich Verschlüsselung und Entschlüsselung jedoch in separaten Datenbanken oder auf separaten Servern befinden, kann der in einer Datenbank gespeicherte Schlüssel nicht für die zweite Datenbank verwendet werden. In diesem Thema wird die Bereitstellung eines gemeinsamen symmetrischen Schlüssels für Datenbanken auf zwei separaten Servern erläutert.

ms366281.security(de-de,SQL.90).gifSicherheitshinweis:
Wenn es erforderlich ist, die Schlüsselerstellungsdaten (KEY_SOURCE, ALGORITHM und IDENTITY_VALUE) über Netzwerkverbindungen zwischen den beiden Servern zu übergeben, stellen Sie sicher, dass die Netzwerkverbindungen verschlüsselt sind. Verwenden Sie dazu beispielsweise SSL oder IPSec. Informationen zum Auswählen und Konfigurieren der entsprechenden Netzwerkverschlüsselungsmethode finden Sie in der Dokumentation zu Ihrem Betriebssystem.

Übersicht

Das Erstellen identischer symmetrischer Schlüssel ist recht einfach. Symmetrische Schlüssel, die mit denselben Schlüsseloptionen KEY_SOURCE, ALGORITHM und IDENTITY_VALUE erstellt wurden, sind identisch. Vor dem Erstellen eines symmetrischen Schlüssels sollten Sie sicherstellen, dass die Schlüsselverwaltungsmechanismen von SQL Server initialisiert wurden. Falls noch nicht vorhanden, sollten Sie einen Datenbank-Hauptschlüssel zum Aktivieren der automatischen Schlüsselverwaltung und ein Zertifikat erstellen, um den symmetrischen Schlüssel zu verschlüsseln. Optional können Sie den symmetrischen Schlüssel mit einem Kennwort schützen. Weitere Informationen finden Sie unter CREATE SYMMETRIC KEY (Transact-SQL).

Beispiel

In diesem Beispiel werden identische symmetrische Schlüssel auf zwei Servern erstellt. Im Beispiel wird der Verschlüsselungsalgorithmus AES_256 verwendet. Die AES-Verschlüsselungsalgorithmen werden unter Windows XP oder Windows Server 2000 nicht unterstützt. Sie müssen möglicherweise einen anderen Algorithmus (z. B. TRIPLE_DES) angeben.

  1. Erstellen Sie die Schlüssel, indem Sie die folgenden CREATE MASTER KEY-, CREATE CERTIFICATE- und CREATE SYMMETRIC KEY-Anweisungen auf beiden Servern ausführen.

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My p@55w0Rd';
    GO
    CREATE CERTIFICATE [cert_keyProtection] WITH SUBJECT = 'Key Protection';
    GO
    CREATE SYMMETRIC KEY [key_DataShare] WITH
        KEY_SOURCE = 'My key generation bits. This is a shared secret!',
        ALGORITHM = AES_256, 
        IDENTITY_VALUE = 'Key Identity generation bits. Also a shared secret'
        ENCRYPTION BY CERTIFICATE [cert_keyProtection];
    GO
    
  2. Testen Sie die Schlüssel, indem Sie zunächst die OPEN SYMMETRIC KEY-Anweisung und die SELECT-Anweisung auf einem Server ausführen.

    OPEN SYMMETRIC KEY [key_DataShare] 
        DECRYPTION BY CERTIFICATE cert_keyProtection;
    GO
    SELECT encryptbykey(key_guid('key_DataShare'), 'MyData' )
    GO
    -- For example, the output might look like this: 0x2152F8DA8A500A9EDC2FAE26D15C302DA70D25563DAE7D5D1102E3056CE9EF95CA3E7289F7F4D0523ED0376B155FE9C3
    
  3. Fügen Sie auf dem zweiten Server das Ergebnis der vorherigen SELECT-Anweisung als Wert für @blob in den folgenden Code ein, und führen Sie den folgenden Code aus, um zu überprüfen, ob der verschlüsselte Text mit dem doppelten Schlüssel entschlüsselt werden kann.

    OPEN SYMMETRIC KEY [key_DataShare] 
        DECRYPTION BY CERTIFICATE cert_keyProtection;
    GO
    DECLARE @blob varbinary(8000);
    SET @blob = SELECT CONVERT(varchar(8000), decryptbykey(@blob));
    GO
    
  4. Schließen Sie den symmetrischen Schlüssel auf beiden Servern.

    CLOSE SYMMETRIC KEY [key_DataShare];
    GO
    

Siehe auch

Verweis

Verschlüsselungshierarchie

Andere Ressourcen

CREATE MASTER KEY (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL)
EncryptByKey (Transact-SQL)
DecryptByKey (Transact-SQL)
Auswählen eines Verschlüsselungsalgorithmus

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

12. Dezember 2006

Geänderter Inhalt:
  • Das Beispiel wurde korrigiert.

14. April 2006

Geänderter Inhalt:
  • Die Einführung wurde verdeutlicht.