我有一个程序A需要将消息发送到程序B1。消息必须加密,并且也要签名。这意味着只有B1可以解码,他必须确保该消息来自A.加密++ RSA - 使用相同的密钥对进行加密和签名
此外,B1不应该是能够加密信息,并采取对同一程序的另一个实例B2 A的作用。
理论上,应该可以使用单一的RSA密钥对,与A中的密钥和B1的密钥。一旦由B解码,如果恢复的消息被验证(例如通过散列函数),则它必须已经由A发送,其没有向任何人披露其密钥。在这种情况下,这两个密钥都是私有的(这意味着它们必须在安全通道中交换)
1)这是推荐还是有强烈的争论,支持使用独立密钥对进行单独的加密和签名步骤?
2)实际上,在加密++库中,PrivateKey
类也包含了公共密钥。有没有办法只加载私钥?
试一下:http://security.stackexchange.com/ – dahui
在安全堆栈交换尝试似乎是一个不错的主意。当然,公共密钥并不需要公开RSA才能工作。如果双方都知道私钥 - 公钥对,为什么PrivateKey类也包含公钥?没有重大的安全缺陷跳出来给我 - 但似乎一切都没有动机。即使安全,使用RSA作为对称密钥密码也不会很有效。 –
@JohnColeman:B不应该被允许创建任何这些消息。他应该只能解密并验证它们。我在问题中加入了这个,因为这明显增加了不对称性。 – galinette