有我的应用程序的几个组件,需要他们的通信安全的意义Origin Verify。这些组件不能共享一个共同的秘密。所以我必须选择非对称密钥加密。假设我已经两个组件A
和B
A发送一些数据F
到B
和B
必须验证它确实从A
openssl网络钓鱼:V声称是A
A
来产生消化F
H
用自己的私钥
A
重视A_pub
,H
其请求参数,发送F
并声明原始/发件人为A
B
验证摘要H
与A_pub
针对提供10
显然它看起来不错,但如果一些其他组件V
做同样与V_pub
并声称自己为A
,B
仍然认为该请求从A
出来,因为这H
是由具有V_prv
OpenSSL的验证好了。
我想给抵御这种攻击的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'不是任意的,并且表示特定的事物。在这种情况下,如果你不告诉我们这是什么,你就不会得到有用的答案。 – 2012-03-31 20:06:52
请检查我的编辑 – 2012-04-01 07:29:02