首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要用非对称/对称密钥保护自分配证书?

为什么要用非对称/对称密钥保护自分配证书?
EN

Stack Overflow用户
提问于 2022-06-23 14:49:29
回答 2查看 48关注 0票数 0

我对MS的数据加密/解密等主题非常陌生。

我对数据加密/解密没有问题,但我不明白为什么下面的示例是作为“最佳实践”给出的?如果我可以直接用对称密钥加密/解密数据,为什么要用证书保护对称密钥?

代码语言:javascript
复制
USE SOMEDB
GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '***';  
GO  

CREATE CERTIFICATE [some_cert] WITH SUBJECT = 'Key Protection';  
GO  

CREATE SYMMETRIC KEY [some_sem_key] WITH  
    KEY_SOURCE = 'My key generation bits. This is a shared secret!',  
    ALGORITHM = AES_256,   
    ENCRYPTION BY CERTIFICATE [some_cert];  
GO 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-23 16:56:24

简单的答案--这样您就不必共享对称密钥的密码了,这样那些使用它加密/解密的人就可以这样做了。

说明-您的示例代码没有显示的是如何使用键。如果是由证书加密的对称密钥,则

代码语言:javascript
复制
OPEN SYMMETRIC KEY [some_sem_key] 
   DECRYPTION BY CERTIFICATE [some_cert];
SELECT EncryptByKey(Key_GUID('some_sem_key'), 'Top Secret');

这是基于这样的假设,即证书的私钥本身是通过数据库主密钥来保护的(您的示例显示了这一点,但是只需将其放在那里,因为证书的私钥也可以通过一个与此参数相反的密码得到保护)。可以通过格兰特'ing或撤销证书上的权限来控制访问。此外,如果证书受到某种程度的破坏,则旋转保护非常容易:

代码语言:javascript
复制
create certificate [some_cert2] WITH SUBJECT = 'Key Protection';
go
OPEN SYMMETRIC KEY [some_sem_key]
    decryption by certificate [some_cert];
ALTER SYMMETRIC KEY [some_sem_key]
    add encryption by certificate [some_cert2];
ALTER SYMMETRIC KEY [some_sem_key]
    drop encryption by certificate [some_cert];

如果通过密码保护对称密钥,则将其与必要的方法进行对比:

代码语言:javascript
复制
OPEN SYMMETRIC KEY [some_sem_key] 
   DECRYPTION BY PASSWORD = 'Sup3rSecurePassword!!!';
SELECT EncryptByKey(Key_GUID('some_sem_key'), 'Top Secret');

在这种用法中,您必须将分发Sup3rSecurePassword!!!放在需要使用的任何地方(即应用程序、需要使用的个人等)。

证书轮换基本上是一样的:

代码语言:javascript
复制
OPEN SYMMETRIC KEY [some_sem_key]
    decryption by password = 'Sup3rSecurePassword!!!'
ALTER SYMMETRIC KEY [some_sem_key]
    add encryption by password = 'M0r3SecurePassword!!!'
ALTER SYMMETRIC KEY [some_sem_key]
    drop encryption by password = 'Sup3rSecurePassword!!!'

但访问控制的故事并非如此。只有拥有密码才能控制对受对称密钥保护的秘密的访问。

票数 1
EN

Stack Overflow用户

发布于 2022-06-23 15:03:45

使用对称密钥是因为它比用于加密数据的非对称密钥要快得多,而且资源效率更高。这意味着您可以避免“实时”加密数据的(相对可忽略的)开销。使用对称密钥进行加密使用更少的CPU,产生更小的加密数据,因此使用更少的存储。然而,它仍然是一个单一的钥匙。为了减少泄漏单个主密钥的固有安全风险,可以使用更慢但更安全的证书对其进行保护。

简而言之:证书保护用于加密数据的密钥(are)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72732222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档