CREATE SYMMETRIC KEY (Transact-SQL)

Mis à jour : 17 novembre 2008

Permet de générer une clé symétrique et de spécifier ses propriétés.

Icône Lien de rubriqueConventions de syntaxe Transact-SQL

Syntaxe

CREATE SYMMETRIC KEY key_name [ AUTHORIZATION owner_name ]
    WITH <key_options> [ , ... n ]
    ENCRYPTION BY <encrypting_mechanism> [ , ... n ] 

<encrypting_mechanism> ::=
    CERTIFICATE certificate_name 
    |
    PASSWORD = 'password' 
    |
    SYMMETRIC KEY symmetric_key_name 
    |
    ASYMMETRIC KEY asym_key_name    

<key_options> ::=
    KEY_SOURCE = 'pass_phrase'
    |
    ALGORITHM = <algorithm>
    |
    IDENTITY_VALUE = 'identity_phrase'

<algorithm> ::=
    DES | TRIPLE_DES | RC2 | RC4 | RC4_128
    | DESX | AES_128 | AES_192 | AES_256 

Arguments

  • key_name
    Nom unique sous lequel la clé symétrique est connue dans la base de données. Les noms des clés temporaires doivent commencer par un dièse (#). Par exemple, #temporaryKey900007. Vous ne pouvez pas créer une clé symétrique dont le nom commence par plusieurs #.
  • AUTHORIZATION owner_name
    Spécifie le nom de l'utilisateur de base de données ou du rôle d'application auquel appartiendra la clé.
  • certificate_name
    Spécifie le nom du certificat qui sera utilisé pour chiffrer la clé symétrique. Le certificat doit déjà exister dans la base de données.
  • 'password'
    Spécifie un mot de passe à partir duquel une clé TRIPLE_DES doit être dérivée, qui permettra de sécuriser la clé symétrique. La complexité du mot de passe est vérifiée. Vous devez toujours utiliser des mots de passe forts.
  • symmetric_key_name
    Spécifie une clé symétrique à utiliser pour chiffrer la clé en cours de création. La clé spécifiée doit déjà exister dans la base de données et elle doit être ouverte.
  • asym_key_name
    Spécifie une clé asymétrique à utiliser pour chiffrer la clé en cours de création. Cette clé asymétrique doit déjà exister dans la base de données.
  • KEY_SOURCE ='pass_phrase'
    Spécifie une expression relative au mot de passe à partir de laquelle la clé doit être dérivée.
  • IDENTITY_VALUE ='identity_phrase'
    Spécifie une expression relative à l'identité à partir de laquelle un GUID doit être généré pour baliser les données qui sont chiffrées à l'aide d'une clé temporaire.

Notes

Lorsqu'une clé symétrique est créée, elle doit être chiffrée à l'aide d'au moins un des éléments suivants : certificat, mot de passe, clé symétrique, clé asymétrique. La clé peut être soumise à plusieurs chiffrements de chaque type. En d'autres termes, une clé symétrique unique peut être chiffrée à l'aide de plusieurs certificats, mots de passe, clés symétriques et clés asymétriques à la fois.

ms188357.Caution(fr-fr,SQL.90).gifAttention :
Lorsqu'une clé symétrique est chiffrée à l'aide d'un mot de passe à la place de la clé publique de la clé principale de base de données, l'algorithme de chiffrement TRIPLE_DES est utilisé. Pour cette raison, les clés créées à l'aide d'un algorithme de chiffrement fort, tel qu'AES, sont elles-mêmes sécurisées par un algorithme plus faible.

Un mot de passe facultatif peut être utilisé pour chiffrer la clé symétrique avant de la distribuer à plusieurs utilisateurs.

Les clés temporaires appartiennent à l'utilisateur qui les crée. Les clés temporaires sont valides uniquement pour la session en cours.

IDENTITY_VALUE génère un GUID qui permet de baliser les données chiffrées à l'aide de la nouvelle clé symétrique. Ce balisage peut être utilisé pour faire correspondre les clés aux données chiffrées. Le GUID généré par une expression spécifique sera toujours le même. Lorsqu'une expression est utilisée pour générer un GUID, elle ne peut pas être réutilisée dans la session en cours, à moins que la clé symétrique associée ait été supprimée. IDENTITY_VALUE est une clause facultative ; toutefois, nous vous conseillons de l'utiliser pour stocker des données chiffrées à l'aide d'une clé temporaire.

Il n'y a pas d'algorithme de chiffrement par défaut.

ms188357.note(fr-fr,SQL.90).gifImportant :
Nous vous déconseillons d'utiliser les chiffrements de flux RC4 et RC4_128 pour protéger les données sensibles. SQL Server 2005 n'intègre pas de salt dans le chiffrement effectué à l'aide de ces clés.

Des informations sur les clés symétriques sont consultables dans l'affichage catalogue sys.symmetric_keys.

Clarification concernant les algorithmes DES :

  • DESX a été nommé de manière incorrecte. Les clés symétriques créées avec ALGORITHM = DESX utilisent en réalité le chiffrement TRIPLE DES avec une clé 192 bits. L'algorithme DESX n'est pas fourni.
  • Les clés symétriques créées avec ALGORITHM = TRIPLE_DES utilisent le chiffrement TRIPLE DES avec une clé 128 bits.

Autorisations

Requiert l'autorisation ALTER ANY SYMMETRIC KEY sur la base de données. Si la clause AUTHORIZATION est spécifiée, l'autorisation IMPERSONATE sur l'utilisateur de base de données ou l'autorisation ALTER sur le rôle d'application est requise. Si le chiffrement s'effectue par certificat ou clé asymétrique, l'autorisation VIEW DEFINITION est requise sur le certificat ou la clé asymétrique.

Exemples

A. Création d'une clé symétrique

Dans l'exemple ci-dessous, une clé symétrique nommée JanainaKey09 est créée à l'aide de l'algorithme AES 256, puis la nouvelle clé est chiffrée au moyen du certificat Shipping04.

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

B. Création d'une clé symétrique temporaire

L'exemple suivant crée une clé symétrique temporaire nommée #MarketingXXV à partir de l'expression relative au mot de passe : The square of the hypotenuse is equal to the sum of the squares of the sides. La clé obtient un GUID généré à partir de la chaîne Pythagoras et elle est chiffrée à l'aide du certificat Marketing25.

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

Voir aussi

Référence

ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
sys.symmetric_keys (Transact-SQL)

Autres ressources

Choix d'un algorithme de chiffrement
Hiérarchie de chiffrement

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

5 décembre 2005

Nouveau contenu :
  • Une remarque importante a été ajoutée pour indiquer qu'il est déconseillé d'utiliser les chiffrements de flux RC4 et RC4_128.

17 novembre 2008

Nouveau contenu :
  • Ajout d'une clarification sur l'algorithme DES.