Condividi tramite


OPEN SYMMETRIC KEY (Transact-SQL)

Decrittografa una chiave simmetrica e la rende disponibile per l'uso.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

OPEN SYMMETRIC KEY Key_name DECRYPTION BY <decryption_mechanism>

<decryption_mechanism> ::=
    CERTIFICATE certificate_name [ WITH PASSWORD = 'password' ]
    |
    ASYMMETRIC KEY asym_key_name [ WITH PASSWORD = 'password' ]
    |
    SYMMETRIC KEY decrypting_Key_name
    |
    PASSWORD = 'decryption_password'

Argomenti

  • Key_name
    Nome della chiave simmetrica da aprire.

  • CERTIFICATE certificate_name
    Nome del certificato la cui chiave privata verrà utilizzata per decrittografare la chiave simmetrica.

  • ASYMMETRIC KEY asym_key_name
    Nome della chiave asimmetrica la cui chiave privata verrà utilizzata per decrittografare la chiave simmetrica.

  • WITH PASSWORD = 'password'
    Password utilizzata per crittografare la chiave privata del certificato o la chiave asimmetrica.

  • SYMMETRIC KEY decrypting_key_name
    Nome della chiave simmetrica che verrà utilizzata per decrittografare la chiave simmetrica aperta.

  • PASSWORD = 'password'
    Password utilizzata per proteggere la chiave simmetrica.

Osservazioni

Le chiavi simmetriche aperte sono associate alla sessione, non al contesto di sicurezza. Una chiave aperta resterà disponibile finché non viene chiusa in modo esplicito o la sessione non viene terminata. Se si apre una chiave simmetrica e quindi si cambia contesto, la chiave resterà aperta e disponibile nel contesto rappresentato. Le informazioni sulle chiavi simmetriche aperte sono visibili nella vista del catalogo sys.openkeys (Transact-SQL).

Se la chiave simmetrica è stata crittografata con un'altra chiave, è necessario aprire innanzitutto la chiave.

Se la chiave simmetrica è già aperta, la query è di tipo NO_OP.

Se la password, la chiave o il certificato fornito per decrittografare la chiave simmetrica non è corretto, la query non verrà eseguita correttamente.

Non è possibile aprire chiavi simmetriche create da provider di crittografia. Le operazioni di crittografia e decrittografia che utilizzano questo tipo di chiave simmetrica vengono eseguite correttamente senza l'istruzione OPEN dato che è il Provider di crittografia ad aprire e chiudere la chiave.

Autorizzazioni

È necessario che il chiamante disponga di un'autorizzazione per la chiave e che non gli sia stata negata l'autorizzazione VIEW DEFINITION per la chiave. I requisisti aggiuntivi possono variare, in base al meccanismo di decrittografia.

  • DECRYPTION BY CERTIFICATE: autorizzazione CONTROL per il certificato e password che crittografa la relativa chiave privata.

  • DECRYPTION BY ASYMMETRIC KEY: autorizzazione CONTROL per la chiave asimmetrica e password che crittografa la relativa chiave privata.

  • DECRYPTION BY PASSWORD: una delle password utilizzate per crittografare la chiave simmetrica.

Esempi

A. Apertura di una chiave simmetrica tramite un certificato

Nell'esempio seguente la chiave simmetrica SymKeyMarketing3 viene aperta e quindi decrittografata tramite la chiave privata del certificato MarketingCert9.

USE AdventureWorks2008R2;
OPEN SYMMETRIC KEY SymKeyMarketing3 
    DECRYPTION BY CERTIFICATE MarketingCert9;
GO

B. Apertura di una chiave simmetrica tramite un'altra chiave simmetrica

Nell'esempio seguente la chiave simmetrica MarketingKey11 viene aperta e quindi decrittografata tramite la chiave simmetrica HarnpadoungsatayaSE3.

USE AdventureWorks2008R2;
-- First open the symmetric key that you want for decryption.
OPEN SYMMETRIC KEY HarnpadoungsatayaSE3 
    DECRYPTION BY CERTIFICATE sariyaCert01;
-- Use the key that is already open to decrypt MarketingKey11.
OPEN SYMMETRIC KEY MarketingKey11 
    DECRYPTION BY SYMMETRIC KEY HarnpadoungsatayaSE3;
GO