Share via


Procedura: Creazione di chiavi simmetriche identiche su due server

Data aggiornamento: 12 dicembre 2006

Al fine di decrittografare l'argomento ciphertext, è necessario disporre della chiave utilizzata per crittografarlo. Quando la crittografia e la decrittografia vengono eseguite in un unico database, la chiave viene archiviata nel database ed è disponibile, a seconda delle autorizzazioni, sia per la crittografia che per la decrittografia. Viceversa, quando la crittografia e la decrittografia vengono eseguite in database separati, la chiave archiviata in un database non è disponibile per l'utilizzo nell'altro database. In questo argomento viene illustrato come specificare una chiave simmetrica condivisa in database che si trovano in due server distinti.

ms366281.security(it-it,SQL.90).gifNota sulla protezione:
Se è necessario passare i dati per la creazione della chiave (KEY_SOURCE, ALGORITHM e IDENTITY_VALUE) su connessioni di rete tra i due server, assicurarsi che le connessioni di rete siano crittografate. Utilizzare ad esempio SSL o IPSec. Per scegliere e configurare il metodo di crittografia di rete appropriato, fare riferimento alla documentazione del sistema operativo.

Panoramica

La creazione di chiavi simmetriche identiche è alquanto semplice. Le chiavi simmetriche create con le stesse opzioni KEY_SOURCE, ALGORITHM e IDENTITY_VALUE saranno identiche. Prima di creare una chiave simmetrica, è consigliabile verificare che siano stati inizializzati i meccanismi di gestione delle chiavi di SQL Server. Se non sono ancora presenti, è consigliabile creare una chiave master del database per attivare la gestione automatica delle chiavi e un certificato con cui crittografare la chiave simmetrica. Facoltativamente, è possibile proteggere la chiave simmetrica con una password. Per ulteriori informazioni, vedere CREATE SYMMETRIC KEY (Transact-SQL).

Esempio

In questo esempio vengono create chiavi simmetriche identiche in due server. Nell'esempio viene utilizzato l'algoritmo di crittografia AES_256. Gli algoritmi di crittografia di tipo AES non sono supportati in Windows XP e Windows Server 2000. Con tali sistemi operativi è possibile specificare un algoritmo diverso, ad esempio TRIPLE_DES.

  1. Creare le chiavi eseguendo le seguenti istruzioni CREATE MASTER KEY, CREATE CERTIFICATE e CREATE SYMMETRIC KEY in entrambi i server.

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My p@55w0Rd';
    GO
    CREATE CERTIFICATE [cert_keyProtection] WITH SUBJECT = 'Key Protection';
    GO
    CREATE SYMMETRIC KEY [key_DataShare] WITH
        KEY_SOURCE = 'My key generation bits. This is a shared secret!',
        ALGORITHM = AES_256, 
        IDENTITY_VALUE = 'Key Identity generation bits. Also a shared secret'
        ENCRYPTION BY CERTIFICATE [cert_keyProtection];
    GO
    
  2. Verificare le chiavi eseguendo prima l'istruzione OPEN SYMMETRIC KEY e quindi l'istruzione SELECT in un server.

    OPEN SYMMETRIC KEY [key_DataShare] 
        DECRYPTION BY CERTIFICATE cert_keyProtection;
    GO
    SELECT encryptbykey(key_guid('key_DataShare'), 'MyData' )
    GO
    -- For example, the output might look like this: 0x2152F8DA8A500A9EDC2FAE26D15C302DA70D25563DAE7D5D1102E3056CE9EF95CA3E7289F7F4D0523ED0376B155FE9C3
    
  3. Nell'altro server incollare il risultato dell'istruzione SELECT precedente nel codice indicato di seguito come valore di @blob ed eseguire il codice per verificare che la chiave duplicata sia in grado di decrittografare il testo crittografato.

    OPEN SYMMETRIC KEY [key_DataShare] 
        DECRYPTION BY CERTIFICATE cert_keyProtection;
    GO
    DECLARE @blob varbinary(8000);
    SET @blob = SELECT CONVERT(varchar(8000), decryptbykey(@blob));
    GO
    
  4. Chiudere la chiave simmetrica in entrambi i server.

    CLOSE SYMMETRIC KEY [key_DataShare];
    GO
    

Vedere anche

Riferimento

Gerarchia di crittografia

Altre risorse

CREATE MASTER KEY (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL)
EncryptByKey (Transact-SQL)
DecryptByKey (Transact-SQL)
Scelta di un algoritmo di crittografia

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

12 dicembre 2006

Contenuto modificato:
  • Correzione dell'esempio.

14 aprile 2006

Contenuto modificato:
  • Chiarimento dell'introduzione.