CREATE SYMMETRIC KEY (Transact-SQL)

Data aggiornamento: 17 novembre 2008

Genera una chiave simmetrica con le proprietà specificate.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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 

Argomenti

  • key_name
    Nome univoco con il quale è nota la chiave simmetrica all'interno del database. I nomi delle chiavi temporanee devono iniziare con un simbolo di cancelletto (#), ad esempio #temporaryKey900007. Non è possibile creare una chiave simmetrica con un nome che inizia con più di un simbolo di cancelletto (#).
  • AUTHORIZATION owner_name
    Specifica il nome dell'utente di database o del ruolo applicazione che sarà il proprietario della chiave.
  • certificate_name
    Specifica il nome del certificato che verrà utilizzato per crittografare la chiave simmetrica. Il certificato deve esistere nel database corrente.
  • 'password'
    Specifica una password da cui derivare una chiave TRIPLE_DES per la protezione della chiave simmetrica. La password verrà sottoposta al controllo dei requisiti di complessità ed è pertanto necessario specificare sempre password complesse.
  • symmetric_key_name
    Specifica una chiave simmetrica da utilizzare per crittografare la chiave creata. La chiave specificata deve esistere nel database ed essere aperta.
  • asym_key_name
    Specifica una chiave asimmetrica da utilizzare per crittografare la chiave creata. Tale chiave asimmetrica deve esistere nel database.
  • KEY_SOURCE ='pass_phrase'
    Specifica una passphrase da cui derivare la chiave.
  • IDENTITY_VALUE ='identity_phrase'
    Specifica una frase identificativa da cui generare un GUID per contrassegnare i dati crittografati con una chiave temporanea.

Osservazioni

Quando si crea una chiave simmetrica è necessario crittografarla almeno con uno degli elementi seguenti: certificato, password, chiave simmetrica o chiave asimmetrica. Una chiave può essere crittografata con più elementi di ogni tipo, ovvero una singola chiave simmetrica può essere crittografata contemporaneamente con più certificati, password, chiavi simmetriche e chiavi asimmetriche.

ms188357.Caution(it-it,SQL.90).gifAttenzione:
Se si crittografa una chiave simmetrica con una password anziché con la chiave pubblica della chiave master del database, viene utilizzato l'algoritmo di crittografia TRIPLE_DES. Per questo motivo, le chiavi create con un algoritmo di crittografia avanzato, come AES, vengono a loro volta protette con un algoritmo meno avanzato.

È possibile utilizzare la password facoltativa per crittografare la chiave simmetrica prima di distribuirla a più utenti.

Le chiavi temporanee sono di proprietà dell'utente che le crea e sono valide solo per la sessione corrente.

La clausola IDENTITY_VALUE genera un GUID per contrassegnare i dati crittografati con la nuova chiave simmetrica. Tale contrassegno può essere utilizzato per mappare le chiavi ai dati crittografati. Il GUID generato da una frase specifica sarà sempre uguale. Dopo aver utilizzato una frase per generare un GUID, non è possibile utilizzare la stessa frase nella sessione corrente a meno che la chiave simmetrica associata non sia stata rimossa. IDENTITY_VALUE è una clausola facoltativa, ma è consigliabile utilizzarla per l'archiviazione di dati crittografati con una chiave temporanea.

Non è previsto un algoritmo di crittografia predefinito.

ms188357.note(it-it,SQL.90).gifImportante:
Non è consigliabile utilizzare crittografie a flussi RC4 e RC4_128 per proteggere dati riservati. SQL Server 2005 non supporta salt per la crittografia eseguita con tali chiavi.

Le informazioni sulle chiavi simmetriche sono visibili nella vista del catalogo sys.symmetric_keys.

Chiarimenti sugli algoritmi DES:

  • DESX è stato denominato erroneamente. Le chiavi simmetriche create con ALGORITHM = DESX utilizzano in realtà l'algoritmo di crittografia TRIPLE DES con chiave a 192 bit. L'algoritmo DESX non viene fornito.
  • Le chiavi simmetriche create con ALGORITHM = TRIPLE_DES utilizzano in realtà l'algoritmo TRIPLE DES con chiave a 128 bit.

Autorizzazioni

È richiesta l'autorizzazione ALTER ANY SYMMETRIC KEY per il database. Se si specifica AUTHORIZATION, è richiesta l'autorizzazione IMPERSONATE per l'utente di database o l'autorizzazione ALTER per il ruolo applicazione. Se la crittografia viene applicata con un certificato o una chiave asimmetrica, è richiesta l'autorizzazione VIEW DEFINITION per il certificato o la chiave asimmetrica.

Esempi

A. Creazione di una chiave simmetrica

Nell'esempio seguente viene creata una chiave simmetrica denominata JanainaKey09 con l'algoritmo AES 256 e la nuova chiave viene quindi crittografata con il certificato Shipping04.

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

B. Creazione di una chiave simmetrica temporanea

Nell'esempio seguente viene creata una chiave simmetrica temporanea denominata #MarketingXXV dalla passphrase: The square of the hypotenuse is equal to the sum of the squares of the sides. Alla chiave viene associato un GUID generato dalla stringa Pythagoras e la chiave viene poi crittografata con il certificato 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

Vedere anche

Riferimento

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

Altre risorse

Scelta di un algoritmo di crittografia
Gerarchia di crittografia

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

5 dicembre 2005

Nuovo contenuto
  • Aggiunta di una nota importante sull'utilizzo di crittografie a flussi RC4 e RC4_128.

17 novembre 2008

Nuovo contenuto:
  • Aggiunta del chiarimento sugli algoritmi DESX.