Set协议及双签名方法及验证

来源:互联网 发布:数据库缓存redis 编辑:程序博客网 时间:2024/04/29 14:58

Set协议参与方:

用户,卖家,CA,internet,物流中心,银行

规范:

  1. 用户,卖家,支付网关通过internet与ca交流
  2. CA与银行通过专用网络
  3. 收单银行与发卡银行通过银行专用网络
  4. 支付网关与银行通过网络专线交互

步骤:

  1. 购买初始化请求:用户c向商家M请求交易号,消息一
  2. 回答:M指派交易号,签名后,消息二发送给c
  3. 购买请求:c验证消息二后发送购买请求消息三给M,其中包含(OI,PI),详细过程见后面
  4. 授权与获取请求:M验证后,产生授权请求到支付网关P,消息4
  5. P回答:验证后,看PI,OI,持卡人是否一致,通过则发消息给M,消息5
  6. 购买回答:M收到5后,转发给c,消息六。

其中步骤3中发送的消息3是双签名,5是验证,如何实现:

  1. C产生OI和PI,OI是订单消息,PI是付款消息,分别hash,有H(OI), H(PI), 然后连接二者,再hash,得H(PO),然后用自己的私钥加密,

得Sign(H(PO)), 之后发送(OI,H(pI),sign(H(po))给M,发送(PI,H(OI),sign(H(PO))给P,分别用对方的公钥加密。附带上自己的证书。

  1. 验证方法:

    M和P分别用自己的私钥解密,

    对M而言得到,OI,hash之,得到H(OI),然后加上c发过来的H(PI),并hash之,得到H(PO1),用c的公钥解密sing(H(PO)),得到H(PO),然后用

    H(PO1)与H(PO)比较,银行也这么做,如果H(PO1)和H(PO2)均与H(PO)一致,则认为消息一致。

That's easy!