加密 – 可以用私钥加密/用公钥解密吗?

[免责声明:我知道,如果你知道关于加密的任何事情,你可能要告诉我为什么我这样做错了 – 我已经做了足够的Google搜索,知道这似乎是典型的回应。

假设以下内容:您有一个中央机构想要为给定域发出登录cookie。在这个域上,您并不一定信任所有人,但您有几个关键的终点应该能够读取cookie。我说了几句,但实际上这个“值得信任”的合作伙伴可能会很大。 Cookie不包含太多信息 – 用户名,时间戳,有效期,随机数。当然,由于性能原因,即使加密(在原因之内),它应该保持较小。现在有两个安全问题:

1)我们不信任用户数据的这个域上的每个网络服务器。因此,读取cookie的能力应限于这些受信任的合作伙伴。
2)虽然我们相信这些合作伙伴来保护用户的数据,但我们仍然希望中心的权力是不可伪造的(再次,在原因之内)。

现在,如果我们为权限生成私有的RSA密钥,并保密,并将公钥分配给“信任的合作伙伴”,那么我们应该可以使用私钥加密,并且可以使用公共密钥。我不清楚的是,签名信息还是有必要的,还是解密的行为是用私钥产生的证据?这种方案是否能够将所有有关方面的对称密钥传播给所有有关方面,并将其用于加密,而仅使用私钥进行签名呢?当然,我可以自由地告诉我这是一个愚蠢的想法,但是请记住,实际的论据可能会比重新爱丽丝和鲍勃更有说服力。

哦,实现指针是受欢迎的,虽然可以在Google上找到基础知识,如果有任何“陷阱”涉及到这将是有用的!

最佳答案
您应该使用某种数字智能方案,或其他旨在解决您场景完整性问题的其他机制。

加密本身还不够。
你怎么知道解密的messege是什么应该是什么?
解密使用正确密钥加密的cookie一定会提供一个“有效的”cookie,但是当您解密使用错误的密钥加密的cookie时会发生什么?还是只是一些无意义的数据?嗯,你可能会得到一个看起来有效的cookie! (时间戳在你认为有效的范围内,用户名是合法的,随机数是…呃…一个数字等)。

在我知道的大多数非对称加密算法中,没有内置的验证。这意味着使用错误的密钥解密邮件不会“失败” – 它只会给你一个错误的明文,你必须区分一个有效的明文。这是完整性发挥的地方,最常见的是使用数字签名。

BTW,RSA长期研究并有几个“陷阱”,所以如果你打算从头开始实现它,你可以更好地阅读如何避免创建“相对容易破解”的键。

转载注明原文:加密 – 可以用私钥加密/用公钥解密吗? - 代码日志