2016-12-08 7 views
1

나는 어떻게 데이터SQL Server에서 대칭 키를 백업하는 방법은 무엇입니까?

OPEN SYMMETRIC KEY MySymmetricKey DECRYPTION BY CERTIFICATE MyEncryptCert 
SET @Result = ENCRYPTBYKEY(KEY_GUID('MySymmetricKey'), '<String to encrypt>') 
CLOSE SYMMETRIC KEY MySymmetricKey 

내가 백업 데이터베이스 마스터 키 및 인증서 수 있어요 암호화 SQL 암호화 키

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Pass>' 
CREATE CERTIFICATE MyEncryptCert WITH SUBJECT = 'Descryption', EXPIRY_DATE = '2115-1-1' 
CREATE SYMMETRIC KEY MySymmetricKey WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE MyEncryptCert 

을 만들려면 다음 코드를 사용합니다.

BACKUP MASTER KEY TO FILE = 'c:\temp\key' ENCRYPTION BY PASSWORD = '<Pass>'; 
BACKUP CERTIFICATE MyEncryptCert TO FILE = 'c:\temp\cert' WITH PRIVATE KEY(ENCRYPTION BY PASSWORD='<Pass>', FILE='C:\temp\cert.pvk') 

대칭 키를 백업 할 수 없습니다. 그것 없이는 암호화 된 테이블을 다른 데이터베이스로 옮기면 암호화 된 데이터를 해독 할 수 없습니다.

해결책이 있습니까?

P.S. 나는 다음 코드를 시도하지만 KEY_SOURCE을 알고 IDENTITY_VALUE 경우 실제로 데이터

CREATE SYMMETRIC KEY MySymmetricKey WITH KEY_SOURCE = '<Pass1>', ALGORITHM = AES_256, IDENTITY_VALUE = '<Pass2>' ENCRYPTION BY CERTIFICATE MyEncryptCert 

답변

0

당신이해야하는 경우 암호를 해독하는 원본 데이터베이스 마스터 키 및 인증서를 필요로하지 않기 때문에 그것은 나에게 안전하지 않습니다 보인다 대칭 키를 복제 할 수있는 능력이 있다면 KEY_SOURCEIDENTITY_VALUE을 제공해야합니다. 이 두 값을 알고 키를 다시 만들면 평가가 정확합니다. "첫 번째"키를 사용하여 값을 암호화하고, 키를 삭제하고, 동일한 KEY_SOURCEIDENTITY_VALUE으로 다시 생성 한 다음, 암호화 된 값을 해독함으로써 동일한 키를 두 번 만들 수 있음을 보여주는 다음 코드를 살펴보십시오 .

CREATE SYMMETRIC KEY MySymmetricKey WITH 
    KEY_SOURCE = '<Pass1>', 
    ALGORITHM = AES_256, 
    IDENTITY_VALUE = '<Pass2>' 
    ENCRYPTION BY Password = 'foobar!23' 

open symmetric key MySymmetricKey 
    decryption by password = 'foobar!23'; 
declare @encrypted varbinary(max); 
select @encrypted = ENCRYPTBYKEY(KEY_GUID('MySymmetricKey'), 'my secrets!'); 

close symmetric key MySymmetricKey; 
drop symmetric key MySymmetricKey; 

CREATE SYMMETRIC KEY MySymmetricKey WITH 
    KEY_SOURCE = '<Pass1>', 
    ALGORITHM = AES_256, 
    IDENTITY_VALUE = '<Pass2>' 
    ENCRYPTION BY Password = 'foobar!23' 

open symmetric key MySymmetricKey 
    decryption by password = 'foobar!23'; 

select cast(DECRYPTBYKEY(@encrypted) as varchar(max)) 
close symmetric key MySymmetricKey; 
drop symmetric key MySymmetricKey; 
+0

답장을 보내 주셔서 감사합니다. 결론은 Symmetric Key를 백업 할 수 없다는 것입니다. –

+0

직접적으로. 그러나 생성시 동일한 키 자료를 제공하여 동일한 키를 다시 작성할 수 있습니다. 어느 쪽이 백업만큼 좋은지. –