我知道Windows正在使用一种主密钥来encryption存储在OS的证书存储区中的私钥。 此外,我发现在Linux中的证书和密钥并不总是存储在相同的位置(如在这篇文章中描述)。 对于这种不同types的目录,在Linux系统上是否有任何相同或额外的安全措施? 或者系统是否依赖于为每个私钥设置的自定义密码?
处理你的问题有点困难,因为它混淆了几件事情。
首先要澄清的是“Windows vs Linux”的区别。
你可能知道,Linux是一个操作系统内核。 也就是说,它是一个与计算机硬件一起工作的低级软件,并以所谓的“系统调用”的forms暴露一个特定的应用程序编程接口(API) – 运行在内核上的程序,以及过程模型等一些约定 – 在其他地方读了这个,真的。 主要的一点是,Linux本身并不知道任何关于SSL / TLS,证书(更不用说证书存储); 这些东西在比内核更高的层次上实现。
Linux内核可以用来实现一个操作系统,其中有很多:Debian,Red Hat,Android – 仅举几例。
操作系统(OS)是实现SSL / TLS,证书等
现在即使这样,为了实现这个东西,特定的软件包也是有责任的。 有时候,很多。 首先,我了解了一些实现SSL / TLS和证书pipe理的软件包。 例如OpenSSL可能是使用最广泛的一个。 Mozilla的NSS被FireFox浏览器,Thunderbird邮件客户端和Chrome浏览器等高端产品所使用。 GNUTLS也有相当的用处,还有PolarSSL,最近的几个OpenSSL分支和许多其他的实现。
更复杂的是,基于Linux的不同操作系统可能具有相同的软件包,它们使用不同的库来实现SSL / TLS的东西。
另一方面,Windows是一个操作系统(运行在Windows NT内核上),和Linux一样,它的内核本身也不实现SSL / TLS和证书pipe理。 但与基于Linux的操作系统相反,Windows的“官方”(由Microsoft作为Windows的一部分创build)实施SSL / TLS,称为“schannel”(“安全通道”),以及一组核心支持库和服务实施您所引用的操作系统级证书存储。
现在是更复杂的部分。 😉
并非所有为Windows编写的软件包都使用其提供的操作系统来处理SSL / TLS和证书。 例如,Firefox,Thunderbird和Chrome的Windows版本仍然使用NSS库,他们捆绑在他们的软件包中来实现SSL / TLS和pipe理证书。 许多最初为非Windows系统编写的软件甚至在Windows上都使用OpenSSL或类似的实现。 换句话说,如果您将一些证书导入到Windows存储中,那么这些软件包将不会“可见”。
总结一下,pipe理证书的状态并不像你所假设的那样统一 – 根据你的问题来判断:一些软件可能使用系统证书存储 – 不pipe它是什么; 如果有的话,其他人使用他们使用的库提供的任何东西。
我知道这并不能回答你的问题,但我想certificate,由于我列出的困难,这个问题没有什么意义。
顺便说一下,Android 确实有自己的证书存储(受shell级密码保护)。
似乎没有任何其他级别的安全性,而是使用root用户设置700权限并添加自定义密码。 不过,你可以前进一步,使用selinux来确保只有所有者(甚至不是root)可以访问特定的私钥。 虽然这样做是不是有用的,如果有人物理访问您的计算机。 入侵者可以修改启动选项(使用selinux=0 )来访问必要的文件夹。
现在,在Windows中额外安全感的观点似乎并不是很有效,因为设置自定义密码意味着encryption密钥文件中的私钥。 但是,如果你所说的是正确的,那么与Windows不同,你在Linux领域没有主密码。 现在我可以想象实现这样一个概念的一种方法是使用encfs 。 当保险丝座不可用时(如在系统启动时),如果您需要访问私人密钥,则再次失效。
编辑 : 修改基于@ Xyon的评论的selinux部分。