Udostępnij za pośrednictwem


Jak Tworzenie kluczy symetrycznych identyczne na dwóch serwerach

Aby odszyfrować szyfrowany, należy klucz użyty do zaszyfrowania go.Podczas szyfrowanie i odszyfrowywania występują w jednej bazie danych, klucz jest przechowywany w bazie danych i jest dostępny w zależności od uprawnień do szyfrowanie i odszyfrowywania.Jednak gdy szyfrowanie i odszyfrowywanie w odrębnych bazach danych lub na różnych serwerach, klucz przechowywany w jednej bazie danych nie jest dostępny do użytku na bazie drugi.W tym temacie przedstawiono sposób zapewnić wspólne klucz zawartości do baz danych w dwóch oddzielnych serwerów.

Omówienie

Tworzenie identyczne kluczy symetrycznych nie jest trudne.Symetryczny kluczs utworzone z tą samą klucz_SOURCE, ALGORYTM i IDENTITY_VALUE klucz opcje będą identyczne.Przed utworzeniem klucz zawartości, należy sprawdzić, czy SQL Server mechanizmów zarządzania kluczmi została zainicjowana.Jeśli jeszcze nie istnieją, należy utworzyć klucz główny bazy danych, aby włączyć automatyczne zarządzanie kluczami i certyfikat, z którym do szyfrowania klucz zawartości.Opcjonalnie można chronić klucz zawartości z hasłem.Aby uzyskać więcej informacji, zobacz Tworzenie klucza SYMETRYCZNEGO (Transact-SQL).

Przykład

W tym przykładzie tworzony identyczne kluczy symetrycznych na dwóch serwerach.W przykładzie zastosowano algorytm szyfrowanie AES_256.Algorytmy szyfrowanie AES nie są obsługiwane w systemie Windows XP lub Windows Server 2000; należy określić inny algorytm takich TRIPLE_DES.

  1. Utwórz klucze, uruchamiając następujące instrukcje tworzenia klucza głównego, tworzenie certyfikatu i klucza SYMETRYCZNEGO utworzyć na obu serwerach.

    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. Testowanie kluczy uruchamiając pierwszej instrukcja OTWORZYĆ klucza SYMETRYCZNEGO i instrukcja SELECT na jednym serwerze.

    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. Na drugim serwerze wkleić wyników poprzednich instrukcja SELECT poniższy kod jako wartość @blob i uruchom poniższy kod, aby zweryfikować, że może odszyfrować zduplikowany klucz szyfrowany.

    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. Zamknij klucz zawartości na obu serwerach.

    CLOSE SYMMETRIC KEY [key_DataShare];
    GO