是否有理由在存储之前使用证书对加密密钥进行加密?

信息安全 加密 公钥基础设施
2021-08-29 22:27:24

假设我安装在客户端中的 .Net 应用程序对数据进行了加密。我想为每个客户端使用随机生成的不同密钥,这样每个客户端都不知道对方的密钥。
有人告诉我,将其直接存储在文件中是不够的,最好在存储之前使用证书加密此密钥。
但我看不出有什么区别。如果黑客入侵了客户的计算机并可以从文件中复制明文密钥,他还可以从证书存储中获取私钥和​​证书,并使用它们来解密并获取原始密钥。

2个回答

这是之前在本网站上多次提及的讨论。您的陈述是正确的,说这只是混淆了加密密钥(因此通过默默无闻来保证安全)。有些人喜欢这样做,以使攻击者更难访问他们的密钥。最后你只能让他们慢下来。

那么有什么区别呢?不是很多,除非你可能会获得一点时间。

基本上,客户存储什么,客户存储什么。加密层不会阻止本地攻击者提取密钥。但是,一些攻击者可能会在某种程度上受到威慑。基本上,当本地存储的机密受到操作系统可能提供的最佳保护时,您更喜欢它;在 Windows 上下文中,这意味着DPAPI甚至智能卡。使用 DPAPI,成功的攻击者需要对机器进行系统级访问;使用智能卡,攻击者需要在普通用户使用他的卡时隐蔽地破坏机器并窃取机密。这不是 100% 的保护,有动机的攻击者通过这些层,但总比没有好。

然而,棘手的一点是,此类基础设施是为使用非对称密钥和证书而设计的。所以你不想为了非对称加密而使用证书;您想使用证书,因为在实践中,这就是从最佳本地保护功能中受益所需要的。

(但不要相信“最好”就是“好”。)