CREATE SYMMETRIC KEY (Transact-SQL)
Data aggiornamento: 17 novembre 2008
Genera una chiave simmetrica con le proprietà specificate.
Convenzioni 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.
Attenzione: |
---|
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.
Importante: |
---|
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
Cronologia modifiche
Versione | Cronologia |
---|---|
5 dicembre 2005 |
|
17 novembre 2008 |
|