首先,我不会将自己称为安全专家,但是我一直处于必须回答这个问题的位置。我发现的结果使我有些惊讶:没有一个完全安全的系统。好吧,我想一个完全安全的系统就是所有服务器都被关闭的系统:)
当时有人与我合作,描述了设计一种提高入侵者安全标准的安全系统。因此,安全的每一层都减少了攻击的机会。
例如,即使您可以完全保护私钥,该系统也不是完全安全的。但是,正确使用安全算法并及时更新补丁程序可以提高标准。但是,是的,足够强大且有足够时间的超级计算机可以破坏加密。我相信所有这些知识都可以理解,因此我将回答这个问题。
问题很明确,因此我将首先尝试解决您的每一个问题:
假设密钥受文件系统的安全模型保护;但是(恶意)超级用户或不提供这种保真度的平台又如何呢?
是的,如果您使用诸如Windows密钥库之类的东西或使用密码加密的TLS私钥,则会向拥有私钥密码(或访问权限)的用户公开。但是,我认为您会同意提高标准。文件系统ACL(如果正确实施)可以提供很好的保护。您可以亲自审核并了解您的超级用户。
或将密钥硬编码到软件二进制文件中,但始终可以将其反编译,那么开源软件或解释代码又如何呢?
是的,我已经在二进制文件中看到了硬编码的密钥。再次,这确实提高了标准。攻击该系统的人(如果是Java)必须了解Java会生成字节码(等),并且必须了解如何将其反编译。如果您使用的是直接写入机器代码的语言,则可以看到这将标准提高了一些。它不是理想的安全解决方案,但可以提供一定程度的保护。
如果生成了密钥,则此类算法将需要确定性(大概),然后将相同的问题应用于种子。
是的,从本质上讲,该算法将成为用于创建私钥的私钥信息。因此,现在需要对其进行保护。
因此,我认为您已经确定了任何安全策略的核心问题,即密钥管理。制定密钥管理策略对于提供安全的系统至关重要。而且,这是一个相当广泛的话题。
因此,问题是,您的系统(以及私钥)需要达到多安全?您的系统中需要提高多高的门槛?
现在,如果您愿意付款,那么会有一些人为此提供解决方案。我们最终使用了HSM(硬件安全模块)。它基本上是一个防篡改服务器,其中包含硬件密钥。然后,可以使用此密钥创建用于加密的其他密钥。这里的想法是(如果配置正确),密钥永远不会离开 HSM。HSM花费很多。但是在某些企业(可以说保护信用卡数据)中,数据泄露的成本要高得多。因此,有一个平衡点。
许多HSM使用功能维护和管理中的密钥卡。一定数量的钥匙卡(假设9张中的5张)必须物理地放入服务器中才能更改密钥。因此,这仅通过在超级用户的法定人数合流时才允许违规,从而将门槛提高得相当高。
可能有一些软件解决方案可以提供与HSM类似的功能,但是我不知道它们是什么。
我知道这只能回答问题,但是我希望这会有所帮助。