如何保护CA的私钥?


24

我即将实施自己的证书颁发机构(CA),仅供内部使用。

现在有一个问题,那就是永远不要利用CA private。因此,现在私钥已加密。

还可以采取什么措施来增强私钥的安全性?


我们可以获取正在运行Web服务器的操作系统吗?您可能可以设置文件的权限,以便除应用程序和超级用户外,其他任何人都无法读取它。
Rilindo 2011年

我们正在运行RHEL
JMW

Answers:


25

我在一家公司的工作中,CA密钥的安全性对于业务的持续成功至关重要。为此,使用自定义协议对密钥进行了加密,该协议要求至少有2个人在场,并将物理令牌插入终端才能对其解密(这些令牌中至少有5个,任何2个组合都可以使用)。使用CA密钥将终端与实际机器物理隔离。用户对其进行解密的接口是VT220终端,该接口允许他们输入解密令牌,然后选择他们想要用密钥“签名”的内容(切勿授予他们访问解密密钥的权限)。该系统意味着至少有4个人必须共同努力才能破解密钥,两个令牌持有者,有权访问数据中心的人,

如果您对这种设置的更多细节感兴趣,布鲁斯·施耐尔(Bruce Schneier)拥有一个不错的网站,涵盖计算机安全设计和实现:

http://www.schneier.com/

他还出版了一本非常好的书《应用密码学》,我发现它帮助我了解了此类系统的基础知识以及如何构建更安全的基础架构(不穿口袋保护套的人可以阅读):

http://www.schneier.com/book-applied.html


2
两键操作(或m中的任何n,m> = n,n> 1)是另一种极好的预防措施-但就我的金钱而言,请先进行气隙处理,然后再进行类似的细化操作,具体取决于您的偏执程度(即,失败的代价)。
MadHatter在2011年

1
在两个授权人员执行工作时,具有root访问权限的人员为什么不能将内存内容转储到文件中?这意味着具有root权限的人只能使用将内存转储到机器之外所需的其他资源来获取密钥。
Slartibartfast 2011年

对于这种安全性,审核的物理访问控制与审核的逻辑访问控制同样重要。签名操作不应该要求在包装盒上的特权(即控制由任何正从-M的要求进行处理),这样root的密码持有人不应该有在所有的时候keysigning是怎么回事。(S)系统维护活动将需要他,但这些活动应根据精确的预写脚本(由脚本编写者以外的人员)执行,并由知识渊博的第三方进行实时审核。
MadHatter在2011年

16

最大的收获是将专用CA密钥保留在与网络完全隔离的专用计算机上。然后,您将在此计算机上签名并可能还会生成新证书,然后使用物理介质将新证书从CA计算机上传输出去。

这样的设置当然还包括有关机器物理可用性的考虑以及对允许的介质的限制。随身携带的USB闪存盘可能不是最佳选择。

(顺便说一下,这是在安全性和便利性之间进行权衡的一个非常明显的例子。)


Airgap是出色的安全预防措施,可通过将签名框设置为不自动运行任何内容,允许SUID二进制文件或以任何其他方式信任此类媒体上的可执行文件来减轻可移动媒体的危险。
MadHatter在2011年

这可以通过使用智能卡生成,存储和使用密钥来进一步优化。可以将智能卡视为具有一些防止篡改的保护的专用机器(基本上,芯片宁愿破坏而不是放弃密钥,这对于更复杂的系统来说是很难做到的),并且其接口足够简单,因此协议栈可能已经被正确审核。
Simon Richter

我赞同智能卡的建议,但是那里存在风险。当密钥只能放在一个地方时,只需一件硬件就不会导致密钥无法访问。我认为,一个或多个智能卡可以在安全密钥生成和存储实践中构成重要组成部分。
Slartibartfast 2011年

关于自动运行问题。如果是gui文件管理器,建议您明确不要尝试对列出的文件进行任何智能预览/缩略图。虽然本身并不是危险,但它可能是现有漏洞的攻击媒介。
andol 2011年

如果安全性真的很重要,那么我会附带一堆一次性写入CD-R。
Lie Ryan

15

我赞成其他两个答案,并对此发表评论,因为我认为它们都很出色。 如果您决定同时使用它们,那可能很合适,因此我强烈建议您在密钥的初始生成过程中多加注意,因为没有使用破坏密钥的最佳时间(可以采用许多标准的,可重复的预防措施应用),但在生成时(一次过)更容易被颠覆。

这本进行密钥生成仪式的出色指南概述了一些有助于确保密钥生成的标准协议,尽管它们主要归结为(a)由多名知识渊博的审计师见证的一切,而这些审计师正在(b)同时记录以下内容: (c)根据执行者以外的其他人编写的预定协议进行的所有操作。


是的,关于初始密钥生成的要点。
andol 2011年

7

根据您的认真程度,应该考虑使用FIPS 140-2(http://en.wikipedia.org/wiki/FIPS_140#Security_levels)硬件来存储CA密钥和这些密钥的备份。您应该具有一个根CA和一个中间CA,以便可以使根CA脱机并确保物理安全。根仅需要续订或签署新的中间CA,而中间CA则保持联机状态以进行日常操作。正如其他人所建议的那样,具有nm控制的安全密钥生成和密钥管理非常重要。

VeriSign(现为Symantec)CPS是商业CA如何生成和保护其密钥的很好参考。请仔细阅读第5章和第6章:http : //www.verisign.com/repository/cps/(我在VeriSign工作了几年)

此外,NIST在密钥管理方面有几本不错的出版物(http://csrc.nist.gov/publications/drafts/800-57/Draft_SP800-57-Part1-Rev3_May2011.pdf)和生成,并且您的公司还应该拥有CPS指定用于管理CA的策略和实践。IETF提供了一个很好的模板:http : //www.ietf.org/rfc/rfc2527.txt


1

很好的问题和一些很好的答案。

请记住,仅考虑此问题,而不是盲目地冲锋,您比大多数其他人领先90%。

牢记这一点并在此采纳其他建议,我只想补充一点:不要坐立不安;密切关注与证书颁发,吊销,破解等有关的一般问题的安全性和加密新闻,并且最明确地关注易损性以及用于生成和管理密钥的特定产品的问题。

最后:物理安全。如果我只能在您的建筑物中找到合同清洁工的工作,然后将包含根证书的磁盘放到口袋里,做些“黑客证明”就没有帮助。你会惊讶地发现有这么多人想念那个。


很高兴听到@jmw的声音-就像我说的那样,您已经领先于大多数人的90%甚至99%,而且听起来您已经掌握了一切。如此多的人花了数周时间和大量金钱来关注事物的软件方面,却没有采取任何措施来物理保护数据,您会感到震惊。
罗伯·摩尔

谢谢,您绝对正确:每位管理员都必须及时了解新风险。:-)关于物理安全性:我们服务器所在的数据中心具有很高的物理安全性。因此,配置了bios && grub密码。CA内容存储的分区也被加密。此外,CA密钥本身已加密。如果发生物理盗窃,nagios将触发“服务器停机”警报。我更关心“非物理”漏洞。:-)
JMW
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.