2

향후 프로젝트에 대한 연구를하고 있으며 일부 데이터를 암호화해야합니다.SQL 기반 암호화 성능

오늘 제가 연구 한 바에 따르면 AES, Triple-DES, X-DES 등 다양한 암호화 알고리즘이 있으며 SQL-Server (2008r2 express probs)의 알고리즘 중 하나를 사용하고자합니다. , 어떻게 베스트 프랙티스 등을하는 것이 좋을까요?

-- Create the master key. 
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Som3Rand0m!3y?na' 
-- Create the cert. 
CREATE CERTIFICATE someCert WITH SUBJECT = 'c3p009xFR?' 
-- Create Symmetric Key 
CREATE SYMMETRIC KEY someSymmetricKey WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY CERTIFICATE someCert 

그리고 다음과 같은 방법을 사용합니다 : 나는 다음과 같은 일을 할 계획입니다

나는이 그것을 할 수있는 올바른 방법 것 같다

declare @sql varchar(8000) 
set @sql = 'OPEN SYMMETRIC KEY someSymmetricKey DECRYPTION BY CERTIFICATE someCert ' 
exec (@sql) 

-- Check the table 
SELECT  col1, Convert(varchar(max), DECRYPTBYKEY(col2)) as col2 
FROM  myTable 

-- dont forget to close the symmetric key again afterwards. 
CLOSE SYMMETRIC KEY someSymmetricKey 

(내가 읽어 예전에 예제를 저장 했으므로 이중 확인 만하면됩니다.]))?

또한 다른 암호화 알고리즘을 사용하는 것 사이에 성능 차이 (또는 보안 차이, 예를 들어 다른 것보다 깨지기 쉽습니다)가 있습니까? < < - 이것은 내가 정말로/가장 중요하게 알아 내려고 노력했던 것입니다.

마지막으로 데이터베이스를 다른 서버로 옮기면 같은 방식으로 키/인증서를 다시 만들 수 있으며 데이터를 다시 가져올 수 있습니까?

어떤 좋은 블로그 게시물/링크가/백서는 크게 감사하겠습니다 :) (읽기 필자가 대부분이었다 조용한 TBH 나쁜) 읽기

감사합니다 : D

답변

2

당신은 두 가지 옵션이 있습니다 : AES 및 3DES. 단순 DES 및 XDES는 너무 약합니다 (각각 56 비트 및 112 비트 강도). RC4는 SQL Server 구현이 파기 되었기 때문에 옵션이 아닙니다 (암호화 된 값을 올바르게 암호화하지 않음).

3DES는 과거에 매달리고 있습니다. AES 사용, 현재 NIST recommended algorithm이며 적절한 속도를 제공합니다.

+0

우리가 얘기하는 머리를 통해 어떤 종류의 말 알맞은 속도? 지금까지 정보 주셔서 감사. –

+0

자신의 케이스를 측정해야합니다. 모든 구현에서 나는 암호화 오버 헤드가 압도적 인 IO 비용에 대한 기본적으로 발견되지 않았다는 것을 알았습니다. –

1

암호화 알고리즘을 선택하기에 적합한 크기는 아니며 모든 선택 사항에 맞습니다 (SQL Server에서 사용할 수있는 알고리즘에 대한 Microsoft의 조언은 아래 링크를 참조하십시오). 암호화 키를 백업 및 복원에 관해서는

http://msdn.microsoft.com/en-us/library/ms345262.aspx

:

--Backup the master key 
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'Som3Rand0m!3y?na'; 
BACKUP MASTER KEY TO FILE = 'c:\temp\exportedmasterkey' 
ENCRYPTION BY PASSWORD = 's0me0th3rp4$$w0rd'; 
GO 
--Back up the certificate 
BACKUP CERTIFICATE someCert TO FILE = 'c:\temp\someCert.cer' 
GO 

그런 다음 다른 서버에

RESTORE MASTER KEY FROM FILE = 'c:\temp\exportedmasterkey' 
    DECRYPTION BY PASSWORD = 's0me0th3rp4$$w0rd' 
    ENCRYPTION BY PASSWORD = 'Som3Rand0m!3y?na' 
GO 

CREATE CERTIFICATE someCert 
    FROM FILE = 'c:\temp\someCert.cer' 
GO 
+0

정보 주셔서 감사합니다 :) –