Udostępnij za pośrednictwem


How to: Create Identical Symmetric Keys on Two Servers

Aby odszyfrować szyfrowany, należy klucz, który został użyty do zaszyfrowania go.Gdy zarówno szyfrowanie i odszyfrowywanie w jednej bazie danych, ten klucz jest przechowywany w bazie danych i jest dostępny, w zależności od uprawnień, szyfrowania i odszyfrowywania.Jednak podczas szyfrowanie i odszyfrowywania występuje w odrębnych bazach danych lub na różnych serwerach klucz przechowywane w jednej bazy danych nie jest dostępny do użytku dla drugiej bazy danych.W tym temacie przedstawiono sposób dostarczyć udostępnionego klucz zawartości do baz danych w dwóch oddzielnych serwerach.

Omówienie

Tworzenie identyczne kluczy symetrycznych nie jest trudne.Kluczy symetrycznych utworzone za pomocą tego samego KEY_SOURCE ALGORYTMU i IDENTITY_VALUE opcje kluczy będą takie same, jak.Przed utworzeniem klucz zawartości, należy się upewnić, że SQL Server mechanizmy zarządzania kluczami zostały zainicjowane. Jeśli ich nie już istnieją, należy utworzyć klucz główny bazy danych, aby umożliwić automatyczne zarządzanie kluczami i certyfikat, z którym do szyfrowania klucz zawartości.Opcjonalnie można chronić klucz zawartości za pomocą hasła.Aby uzyskać więcej informacji zobaczCREATE SYMMETRIC KEY (Transact-SQL).

Przykład

W tym przykładzie tworzony identyczne kluczy symetrycznych na dwóch serwerach.W przykładzie użyto AES_256 algorytmu szyfrowanie.Algorytmy szyfrowanie AES nie są obsługiwane w systemie Windows XP lub Windows Server 2000, może być konieczne określenie takich TRIPLE_DES inny algorytm.

  1. Utwórz klucze, uruchamiając następujące instrukcje CREATE klucz główny, CREATE certyfikat i klucz zawartości CREATE 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 przy pierwszym uruchomieniem instrukcja OPEN klucz 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ć wyniki poprzedniego instrukcja SELECT poniższy kod jako wartość @blob a następnie uruchom następujący kod w celu sprawdzenia, czy klucz zduplikowany może odszyfrować 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