CREATE SYMMETRIC KEY (Transact-SQL)

Generiert einen symmetrischen Schlüssel und gibt seine Eigenschaften an.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

CREATE SYMMETRIC KEY key_name [ AUTHORIZATION owner_name ]
    [ FROM PROVIDER Provider_Name ]
    WITH <key_options> [ , ... n ]
        |
    ENCRYPTION BY <encrypting_mechanism> [ , ... n ]
<key_options> ::=
    KEY_SOURCE = 'pass_phrase'
    |
    ALGORITHM = <algorithm>
    |
    IDENTITY_VALUE = 'identity_phrase'
    |
        PROVIDER_KEY_NAME = 'key_name_in_provider' 
    |
    CREATION_DISPOSITION = {CREATE_NEW | OPEN_EXISTING }
<algorithm> ::=
    DES | TRIPLE_DES | TRIPLE_DES_3KEY | RC2 | RC4 | RC4_128
    | DESX | AES_128 | AES_192 | AES_256 
<encrypting_mechanism> ::=
        CERTIFICATE certificate_name 
    |
    PASSWORD = 'password' 
    |
    SYMMETRIC KEY symmetric_key_name 
    |
    ASYMMETRIC KEY asym_key_name

Argumente

  • Key_name
    Gibt den eindeutigen Namen an, unter dem der symmetrische Schlüssel in der Datenbank bekannt ist. Die Namen von temporären Schlüsseln müssen mit einem Nummernzeichen (#) beginnen. Ein Beispiel: #temporaryKey900007. Das Erstellen eines symmetrischen Schlüssels, dessen Name mit mehreren Nummernzeichen (#) beginnt, ist nicht möglich. Sie können keinen temporären symmetrischen Schlüssel mit einem EKM-Anbieter erstellen.

  • AUTHORIZATION owner_name
    Gibt den Namen des Datenbankbenutzers oder der Anwendungsrolle an, der bzw. die diesen Schlüssel besitzen wird.

  • FROM PROVIDER Provider_Name
    Gibt einen Anbieter für erweiterte Schlüsselverwaltung (Extensible Key Management, EKM) und einen Namen an. Der Schlüssel wird nicht vom EKM-Gerät exportiert. Der Anbieter muss zuerst mit der CREATE PROVIDER-Anweisung definiert werden. Weitere Informationen zum Erstellen von externen Schlüsselanbietern finden Sie unter Erweiterbare Schlüsselverwaltung (Extensible Key Management, EKM).

    HinweisHinweis

    Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.

  • KEY_SOURCE ='pass_phrase'
    Gibt einen Passphrase an, aus dem der Schlüssel abgeleitet werden soll.

  • IDENTITY_VALUE ='identity_phrase'
    Gibt einen Identity-Ausdruck an, aus dem ein GUID zum Kennzeichnen von Daten generiert wird, die mit einem temporären Schlüssel verschlüsselt werden.

  • PROVIDER_KEY_NAME**='key_name_in_provider'**
    Gibt den Namen an, auf den der Anbieter für erweiterte Schlüsselverwaltung (Extensible Key Management, EKM) verweist.

    HinweisHinweis

    Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.

  • CREATION_DISPOSITION = CREATE_NEW
    Erstellt einen neuen Schlüssel auf dem Extensible Key Management-Gerät. Wenn bereits ein Schlüssel auf dem Gerät vorhanden ist, gibt die Anweisung eine Fehlermeldung zurück.

  • CREATION_DISPOSITION = OPEN_EXISTING
    Ordnet einen symmetrischen Schlüssel von SQL Server einem vorhandenen Extensible Key Management-Schlüssel zu. Wenn CREATION_DISPOSITION = OPEN_EXISTING nicht bereitgestellt wird, wird der Standardwert CREATE_NEW angenommen.

  • certificate_name
    Gibt den Namen des Zertifikats an, das zum Verschlüsseln des symmetrischen Schlüssels verwendet wird. Das Zertifikat muss bereits in der Datenbank vorhanden sein.

  • ' password '
    Gibt ein Kennwort an, von dem ein TRIPLE_DES-Schlüssel zum Sichern des symmetrischen Schlüssels abgeleitet wird. password muss den Anforderungen der Windows-Kennwortrichtlinien des Computers entsprechen, auf dem die Instanz von SQL Server ausgeführt wird. Es sollten immer sichere Kennwörter verwendet werden.

  • symmetric_key_name
    Gibt einen symmetrischen Schlüssel an, der zum Verschlüsseln des erstellten Schlüssels verwendet wird. Der angegebene Schlüssel muss bereits in der Datenbank vorhanden und geöffnet sein.

  • asym_key_name
    Gibt einen asymmetrischen Schlüssel an, der zum Verschlüsseln des erstellten Schlüssels verwendet wird. Dieser asymmetrische Schlüssel muss bereits in der Datenbank vorhanden sein.

Hinweise

Beim Erstellen eines symmetrischen Schlüssels muss der symmetrische Schlüssel mithilfe mindestens eines der folgenden Elemente verschlüsselt werden: Zertifikat, Kennwort, symmetrischer Schlüssel, asymmetrischer Schlüssel oder PROVIDER. Der Schlüssel kann mehrere Verschlüsselungen jedes Typs aufweisen. Ein einzelner symmetrischer Schlüssel kann demnach mit mehreren Zertifikaten, Kennwörtern, symmetrischen Schlüsseln und asymmetrischen Schlüsseln gleichzeitig verschlüsselt sein.

VorsichtshinweisVorsicht

Wenn ein symmetrischer Schlüssel mit einem Kennwort anstatt mit einem öffentlichen Schlüssel des Datenbank-Hauptschlüssels verschlüsselt ist, wird der TRIPLE_DES-Verschlüsselungsalgorithmus verwendet. Daher werden Schlüssel, die mit einem starken Verschlüsselungsalgorithmus wie z. B. AES erstellt werden, selbst mit einem schwächeren Algorithmus verschlüsselt.

Mit dem optionalen Kennwort kann der symmetrische Schlüssel verschlüsselt werden, bevor der Schlüssel an mehrere Benutzer verteilt wird.

Temporäre Schlüssel befinden sich im Besitz des Benutzers, der sie erstellt. Temporäre Schlüssel gelten nur für die aktuelle Sitzung.

Von IDENTITY_VALUE wird ein GUID generiert, mit dem Daten gekennzeichnet werden, die mit dem neuen symmetrischen Schlüssel verschlüsselt werden. Mithilfe dieser Kennzeichnung können Schlüssel den verschlüsselten Daten zugeordnet werden. Von einem spezifischen Ausdruck wird immer derselbe GUID generiert. Nachdem ein Ausdruck zum Generieren eines GUIDs verwendet wurde, kann der Ausdruck nicht mehr wiederverwendet werden, es sei denn, es ist mindestens eine Sitzung vorhanden, in der der Ausdruck aktiv verwendet wird. IDENTITY_VALUE ist eine optionale Klausel. Die Verwendung dieser Klausel wird jedoch empfohlen, wenn Sie mit einem temporären Schlüssel verschlüsselte Daten speichern.

Es gibt keinen Standardverschlüsselungsalgorithmus.

Wichtiger HinweisWichtig

Die Verwendung der RC4- und RC4_128-Datenstromchiffren wird zum Schutz vertraulicher Daten nicht empfohlen. Die Verschlüsselung mit solchen Schlüsseln wird von SQL Server nicht weiter codiert.

Informationen zu symmetrischen Schlüsseln werden in der sys.symmetric_keys-Katalogsicht angezeigt.

Symmetrische Schlüssel können nicht mit symmetrischen Schlüsseln, die mit dem Verschlüsselungsanbieter erstellt wurden, verschlüsselt werden.

Erläuterung der DES-Algorithmen:

  • DESX wurde falsch benannt. Symmetrische Schlüssel, die mit ALGORITHM = DESX erstellt sind, verwenden eigentlich die TRIPLE DES-Verschlüsselung mit einem 192-Bit-Schlüssel. Der DESX-Algorithmus wird nicht bereitgestellt. Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird.

  • Symmetrische Schlüssel, die mit ALGORITHM = TRIPLE_DES_3KEY erstellt sind, verwenden die TRIPLE DES-Verschlüsselung mit einem 192-Bit-Schlüssel.

  • Symmetrische Schlüssel, die mit ALGORITHM = TRIPLE_DES erstellt sind, verwenden die TRIPLE DES-Verschlüsselung mit einem 128-Bit-Schlüssel.

Veraltung des RC4-Algorithmus:

Die wiederholte Verwendung der gleichen RC4- oder RC4_128-KEY_GUID für unterschiedliche Datenblocks führt zum gleichen RC4-Schlüssel, da SQL Server nicht automatisch eine Salt bereitstellt. Die wiederholte Verwendung des gleichen RC4-Schlüssels stellt einen bekannter Fehler dar, der zu einer sehr schwachen Verschlüsselung führt. Deshalb wurden das RC4-Schlüsselwort und das RC4_128-Schlüsselwort als veraltet festgelegt. Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie so bald wie möglich das Ändern von Anwendungen, in denen es zurzeit verwendet wird.

VorsichtshinweisVorsicht

Der RC4-Algorithmus wird nur aus Gründen der Abwärtskompatibilität unterstützt. Neues Material kann nur mit RC4 oder RC4_128 verschlüsselt werden, wenn die Datenbank den Kompatibilitätsgrad 90 oder 100 besitzt. (Nicht empfohlen.) Verwenden Sie stattdessen einen neueren Algorithmus, z. B. einen der AES-Algorithmen. In SQL Server 2012 kann mit RC4 oder RC4_128 verschlüsseltes Material in jedem Kompatibilitätsgrad entschlüsselt werden.

Berechtigungen

Erfordert die ALTER ANY SYMMETRIC KEY-Berechtigung in der Datenbank. Falls die AUTHORIZATION-Klausel angegeben ist, ist die IMPERSONATE-Berechtigung für den Datenbankbenutzer oder die ALTER-Berechtigung für die Anwendungsrolle erforderlich. Falls die Verschlüsselung mit einem Zertifikat oder asymmetrischen Schlüssel erfolgt, ist die VIEW DEFINITION-Berechtigung für das Zertifikat oder den asymmetrischen Schlüssel erforderlich. Nur Windows-Anmeldungen, SQL Server-Anmeldungen und Anwendungsrollen können symmetrische Schlüssel besitzen. Gruppen und Rollen können keine symmetrischen Schlüssel besitzen.

Beispiele

A.Erstellen eines symmetrischen Schlüssels

Im folgenden Beispiel wird ein symmetrischer Schlüssel mit Namen JanainaKey09 erstellt, wobei der AES 256-Algorithmus verwendet wird. Anschließend wird der neue Schlüssel mit dem Zertifikat Shipping04 verschlüsselt.

CREATE SYMMETRIC KEY JanainaKey09 WITH ALGORITHM = AES_256
    ENCRYPTION BY CERTIFICATE Shipping04;
GO

B.Erstellen eines temporären symmetrischen Schlüssels

Im folgenden Beispiel wird ein temporärer symmetrischer Schlüssel mit Namen #MarketingXXV aus dem folgenden Passphrase erstellt: The square of the hypotenuse is equal to the sum of the squares of the sides. Der Schlüssel wird mit einem GUID bereitgestellt, der aus der Zeichenfolge Pythagoras generiert und mit dem Zertifikat Marketing25 verschlüsselt wird.

CREATE SYMMETRIC KEY #MarketingXXV 
     WITH ALGORITHM = AES_128,
     KEY_SOURCE 
     = 'The square of the hypotenuse is equal to the sum of the squares of the sides',
     IDENTITY_VALUE = 'Pythagoras'
     ENCRYPTION BY CERTIFICATE Marketing25;
GO

C.Das Erstellen eines symmetrischen Schlüssels mit einem Extensible Key Management (EKM)-Gerät

Im folgenden Beispiel wird ein symmetrischer Schlüssel mit der Bezeichnung MySymKey erstellt, indem ein Anbieter mit dem Namen MyEKMProvider und ein Schlüssel mit der Bezeichnung KeyForSensitiveData verwendet werden. User1 wird autorisiert, und es wird davon ausgegangen, dass der Systemadministrator den Anbieter MyEKMProvider bereits in SQL Server registriert hat.

CREATE SYMMETRIC KEY MySymKey
AUTHORIZATION User1
FROM PROVIDER EKMProvider
WITH
PROVIDER_KEY_NAME='KeyForSensitiveData',
CREATION_DISPOSITION=OPEN_EXISTING;
GO

Siehe auch

Verweis

ALTER SYMMETRIC KEY (Transact-SQL)

DROP SYMMETRIC KEY (Transact-SQL)

sys.symmetric_keys (Transact-SQL)

Konzepte

Auswählen eines Verschlüsselungsalgorithmus

Verschlüsselungshierarchie

Erweiterbare Schlüsselverwaltung (Extensible Key Management, EKM)