gpt4 book ai didi

linux - 让应用程序签署文档,但不要让它看到 key

转载 作者:太空宇宙 更新时间:2023-11-04 09:34:58 27 4
gpt4 key购买 nike

我想在 Linux 服务器上对文档和消息进行数字签名。如何安全地存储私钥和密码(如果有)?

问题是,如果应用程序遭到破坏, key 也会受到破坏。如果我可以somehow let an app sign something ,但不要让它接触实际的键,这不会完全解决我的问题(因为攻击者仍然可以在一段时间内签署任何东西),但会减少影响(比如,我们不必撤销键)。

例如,对于 SSL 服务器,就没有这样的问题,因为通常没有应用程序访问 key 的实际需要。因此,它们可以半安全地存储在单独的位置。例如。网络服务器(如 nginx)将能够读取 key ,但不能读取应用程序。

我是不是想多了?还值得去想吗?

最佳答案

创建一个单独的、轻量级的签名应用程序,它在 UNIX 套接字上监听并作为独立于主应用程序的用户运行;当您的应用想要签名时,它会将文件和任何其他信息扔到该套接字中,然后取回已签名的文件。

如果应用程序遭到破坏,只要他还在服务器上,攻击者仍然可以对文件进行签名,但除非他使用特权升级漏洞来获得 root 权限并复制签名应用程序的 key ,否则他不会他可以窃取 key 然后在不连接到服务器的情况下随意签名。

您可以将 UNIX 套接字替换为标准 TCP 套接字,并将签名应用程序放在单独的服务器上以获得额外的安全性;确保在签名应用程序上实现一些基本的访问控制,当然使用适当的防火墙规则来确保签名服务器永远不会暴露在互联网上,或者通过 using a "setuid" binary for signing 稍微简化一下由您的应用程序调用,在这种情况下,签名二进制文件将作为具有访问 key 的额外权限的不同用户运行,而 Web 应用程序本身没有此类权限。

基本上,您应该实现基本的软件 HSM。

关于linux - 让应用程序签署文档,但不要让它看到 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27652018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com