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.
Nota 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.
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
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
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
Chiudere la chiave simmetrica in entrambi i server.
CLOSE SYMMETRIC KEY [key_DataShare]; GO
Vedere anche
Riferimento
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
Cronologia modifiche
Versione | Cronologia |
---|---|
12 dicembre 2006 |
|
14 aprile 2006 |
|