방법: 두 서버에서 동일한 대칭 키 만들기

업데이트: 2006년 12월 12일

ciphertext를 해독하려면 암호화하는 데 사용된 키가 필요합니다. 단일 데이터베이스에서 암호화와 암호 해독이 모두 수행되는 경우 키가 데이터베이스에 저장되며 사용 권한에 따라 암호화와 암호 해독에 모두 사용할 수 있습니다. 그러나 암호화와 암호 해독이 개별 데이터베이스나 개별 서버에서 수행되는 경우 한 데이터베이스에 저장된 키를 다른 데이터베이스에서 사용할 수 없습니다. 이 항목에서는 두 개의 개별 서버에 있는 데이터베이스에 공유 대칭 키를 제공하는 방법을 보여 줍니다.

ms366281.security(ko-kr,SQL.90).gif보안 정보:
네트워크 연결을 통해 두 서버 간에 키 생성 데이터(KEY_SOURCE, ALGORITHM 및 IDENTITY_VALUE)를 전달해야 하는 경우 네트워크 연결을 암호화하십시오. 예를 들어 SSL이나 IPSec을 사용합니다. 적절한 네트워크 암호화 방법을 선택하고 구성하려면 운영 체제 설명서를 참조하십시오.

개요

동일한 대칭 키를 만드는 것은 어렵지 않습니다. 같은 KEY_SOURCE, ALGORITHM 및 IDENTITY_VALUE 키 옵션을 사용하여 만든 대칭 키는 모두 동일합니다. 대칭 키를 만들기 전에 SQL Server의 키 관리 메커니즘이 초기화되었는지 확인해야 합니다. 키 관리 메커니즘이 없을 경우 대칭 키를 암호화하는 데 사용할 인증서와 자동 키 관리를 설정할 데이터베이스 마스터 키를 만들어야 합니다. 필요에 따라 대칭 키를 암호로 보호할 수 있습니다. 자세한 내용은 CREATE SYMMETRIC KEY(Transact-SQL)를 참조하십시오.

다음 예에서는 두 서버에 동일한 대칭 키를 만듭니다. 또한 AES_256 암호화 알고리즘을 사용합니다. Windows XP 또는 Windows Server 2000에서는 AES 암호화 알고리즘이 지원되지 않습니다. TRIPLE_DES와 같은 다른 알고리즘을 지정해야 할 수도 있습니다.

  1. 두 서버에서 다음 CREATE MASTER KEY, CREATE CERTIFICATE 및 CREATE SYMMETRIC KEY 문을 실행하여 키를 만듭니다.

    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. 한 서버에서 먼저 OPEN SYMMETRIC KEY 문과 SELECT 문을 실행하여 키를 테스트합니다.

    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. 두 번째 서버에서 이전 SELECT 문의 결과를 다음 코드에 @blob 값으로 붙여 넣고 다음 코드를 실행하여 중복 키가 ciphertext를 해독할 수 있는지 확인합니다.

    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. 두 서버에서 대칭 키를 닫습니다.

    CLOSE SYMMETRIC KEY [key_DataShare];
    GO
    

참고 항목

참조

암호화 계층

관련 자료

CREATE MASTER KEY(Transact-SQL)
CREATE CERTIFICATE(Transact-SQL)
CREATE SYMMETRIC KEY(Transact-SQL)
EncryptByKey(Transact-SQL)
DecryptByKey(Transact-SQL)
암호화 알고리즘 선택

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 12월 12일

변경된 내용
  • 예를 수정했습니다.

2006년 4월 14일

변경된 내용
  • 도입 부분에 대한 자세한 설명을 추가했습니다.