【发布时间】:2012-04-14 23:59:34
【问题描述】:
我的应用程序有几个组件,需要它们的通信在 Origin Verified 意义上是安全的。这些组件不能共享一个共同的秘密。所以我必须选择非对称密钥加密。假设我有两个组件 A 和 B A 发送一些数据 F 到 B 和 B 必须验证它确实来自 A
A 使用其私钥生成F 的摘要HA 将A_pub、H 附加到其请求参数,发送F 并将来源/发送者声明为@987654334 @B 使用 A_pub 提供的 F 验证摘要 H
显然它看起来不错但是如果其他一些组件 V 对 V_pub 执行相同的操作并声称自己为 A,B 仍然认为请求来自 A,因为这个 H 是用V_prvopenssl 验证成功。
我想针对V的这种攻击提供保护
我正在使用 ecparam secp112r1 来最小化密钥长度。并且键被反复更换。
-- 编辑--
A、B 和 V 是由唯一的 URI 标识的应用程序组件。它目前旨在限制安全页面流。例如你可以假设A,B,V是网址我想要的是只有A可以处理到B并且只有B可以继续到C ....我不想要为此维护一个全局/应用程序范围的会话。所以如果B 可以根据A 以无状态/无会话方式传递给它的特殊参数来验证此链接的来源。而且它越通用,在其他场景中实现的可重用性也越高。
曾经我想在受信任的全局存储中维护A_pub 的校验和。但是我担心这不是过度工程吗?
我想到的另一种方法是查询有关公钥的原始 url。但是我想避免这种情况。
【问题讨论】:
-
有两种可能:1)
A和V只是任意标识符(如“第一方”和“第二方”),只要是哪个都没有关系B让他们保持直截了当。 2)A和V不是任意的,表示特定的东西。在这种情况下,如果您不告诉我们那是什么,您将不会得到有用的答案。
标签: openssl public-key-encryption private-key encryption-asymmetric digest