SQL Server 证书和对称性密钥的复制

Posted on 2012-12-27 17:13  高老爷空间  阅读(1027)  评论(0编辑  收藏  举报

老板又有命令了,要求我们的数据库进行加密,有把这个任务交给了数据库,没有办法,数据库DBA的辛苦就在这里了,以前对数据库加密有一定了解,但是不深入,从设置栏位加密和TDE的步骤只会照抄MSDN或网络上的,通过两天的研究和学习,自认为有了比较深刻的认识。

关于栏位加密的可以参考微软的MSDN写的非常不错:http://msdn.microsoft.com/en-us/library/ms189586(v=sql.105).aspx

关于TDE加密的步骤可以参考:http://msdn.microsoft.com/en-us/library/bb934049(d=printer,v=sql.105).aspx

这里不多说了,我要说的是证书,对称性和非对称性密钥的本身:

 

  1. Service master key 和database master key 都是一种Symmetric key.
  2. 正常的情况下,证书/对称性密钥/非对称性密钥 每次生成的都不一样。即使命令相同。
  3. 对于非对称性密钥,密钥不可以备份或复制。创建好后永远一样。
  4. 对于证书,如果要想保证证书相同,我可以使用备份和恢复的方法使用证书的复制。

         --备份证书

BACKUP CERTIFICATE master_database_cert TO FILE = 'D:\master_database_cert_20121226.cer'

WITH PRIVATE KEY (

FILE = 'D:\master_Database_priv_201212261431.pvk' ,

ENCRYPTION BY PASSWORD = 'Gaupeng123' );

--恢复证书

CREATE CERTIFICATE master_server_cert

FROM FILE = 'D:\GWSZAPP03_Cert\master_database_cert_20121226.cer'

WITH PRIVATE KEY (FILE = 'D:\GWSZAPP03_Cert\master_Database_priv_201212261431.pvk',

DECRYPTION BY PASSWORD = 'Gaupeng123');

      5. 对于对称性密钥,设置其中的参数,也可以实现不同实体间的证书复制。

通过 KEY_SOURCE/IDENTITY_VALUE 参数来实现。

--建立对称性密钥

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];
--在另外的数据库中生成对称性密钥

CREATE SYMMETRIC KEY [key_DataShare001] 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_keyProtection001];

--一下是查询的结果,发现两个对称密钥相同。

image

以上是我仓促总结出来的,还希望大家多多指教。

Copyright © 2024 高老爷空间
Powered by .NET 8.0 on Kubernetes