为什么我需要使用单独的公钥对进行签名和加密,而不是使用与 RSA 相同的密钥对?使用相同的密钥是否存在任何安全问题?
6 回答
使用单独的密钥对进行签名和加密的原因是为了分散风险:如果有人恢复了私有加密密钥,他/她可以解密使用公共加密密钥加密的文档,但不能使用它来签署文档和反之亦然。
另一个原因可能是法律原因:
在一些国家,数字签名的地位有点像传统的纸笔签名,就像在欧盟数字签名立法中一样. 一般来说,这些规定意味着任何数字签名的东西都会合法地约束文件的签名者遵守其中的条款。因此,通常认为最好使用单独的密钥对进行加密和签名。使用加密密钥对,一个人可以参与加密对话(例如,关于房地产交易),但加密并不能合法地签署他发送的每条消息。只有当双方达成协议时,他们才会使用他们的签名密钥签署合同,然后他们才会受到特定文件条款的法律约束。签名后,可以通过加密链接发送文档。如果签名密钥丢失或泄露,可以撤销它以减轻任何未来的交易。如果加密密钥丢失,应使用备份或密钥托管来继续查看加密内容。
您可能想从安全堆栈中查看类似的问题:
恕我直言,Am1rr3zA 的答案是最好的。
使用单独的密钥进行签名和加密的原因:
- 在组织中很有用的是,一旦组织的员工/用户不再可用,加密密钥需要被支持或保存在托管中以便解密数据。与加密密钥不同,签名密钥绝不能被员工/用户以外的任何人使用,并且不需要也不应该被托管。
- 允许为加密密钥签名使用不同的到期时间。
- 鉴于加密和签名的基础数学是相同的,只是相反,如果攻击者可以说服/欺骗密钥持有者使用相同的密钥签署未格式化的加密消息,那么攻击者将获得原始消息。
拥有单独的签名和加密密钥对允许公司备份加密证书,以便在您离开公司并且他们发现使用您的密钥加密的内容时解密数据。
通常,公司不会保留您的签名证书的备份副本,因为它会破坏有效数字签名的概念。如果签名证书由多方持有,那么谁真正用它签署了消息?
因此,加密密钥由用户持有并由公司备份。签名密钥仅由用户持有。
我不完全确定你在做什么。我将假设您想知道为什么应该为 https/ssl/ssh 和代码签名使用不同的密钥(除了它们具有不同的使用位)。
SSL 证书必须在网络服务器周围闲逛,这些服务器因被泄露而臭名昭著。代码签名证书可以完全离线隐藏。理论上。在实践中,Web 服务器由专业的系统管理员管理,而代码签名证书则留在了工作开发人员的 PC 上。还有最小特权原则。
阅读:http ://en.wikipedia.org/wiki/Public-key_cryptography
基本上,您是在询问非对称加密和对称加密之间的区别。