接口安全设计

安全传输

为了信息安全,接口交互中均需要对报文加签,报文加密可选,涉及到的算法为AES 128位对称加密算法、RSA 2048位非对称加密算法,数字签名算法SHA256WithRSA,具体方式如下:

加密加签:

  • 每次随机生成16位字符串作为secretKey调用AES加密业务报文,赋值给data字段,加密业务报文操作完成。

  • 使用RSA加密随机字符串secretKey赋值给secretKey字段,secretKey加密操作完成。

  • 将CommonRequest或者CommonResponse的所有字段除sign外按照字母升序排序后按照key1=value1&key2=value2的方式拼接,获取待签名字符串,例如:
    CommonRequest 示例:
    appid=mock&data=8XHTWCOap0YS6OETTyEaRvwqghlb2SGPEEY6B0ZTemkigTvaH2vCCui2oUbCwtqINNK4bGlnzl3CmYXNpaATfQ==&method=vopen.credit.apply.enable&requestId=dcc79a0c-a0ce-43e0-a985-6069d6fd02f2&secretKey=4WhBkNA5WpcQsvtdb64o1MtGum1G7wU6piaraiMcHrdgTPSng1H-nne_xOoBbW2ijIn7yi03NWsafb2ecaIyHxvn4bCsbykyDEyClNcdT0b6dfljRO8WedINZC-Ile2fnUkE198N8yUIeA7WXL3MYpVGphjk8OSGSeKf4TYByC6nueUScl6lvH-USV_l2TsGkKUAfAZAuPHxdA95QKuDrO56ek4Ksez0afH8vhJ4Sgp5pP11cGdXJ8jPMEgWFCnAZ6eJQHcYs74xEIQYP8SihyqMQOW2fP-RcEeryI8HAhroqOHwGpGr-AJoLCjYWeBDbpDtHsgXdlJSQtKVFs4cNw&signType=SHA256WithRSA×tamp=2018-04-23 16:32:34&version=4.0

  • CommonResponse示例:
    code=0&data=dmFcWdN6MHr8BA/IjCbitZ84B8M8IhXiF/m4qNXsBLVslx8/jVym2wV0kCnP3yYlgBRDQMx5ZQxLLyi5XH5txw==&message=操作成功&responseId=1774139342133794&secretKey=HeJhDMOMCNl-o5lx_k_4lL29HYa9J20uDmlpEDlNsKhGsUbQuTJMTgd7heV0-adjU8935W98ssb0MnTcbkJ0fS6LQ7JXz-AxaRhHucCTxqhwfxJWWNb3rSfos424-jZieqRy6vdUlil9bfwa5mAiCdIbbEAPw8XqOfm29LZPSBtLF4XC7J3deovFHoM9ggjQmRK1pEZSe2Q4KpoZfaeAIpfnOIgVtE2UmFzD2LCgVZQJv8gS2QYIYlHQe1nCMJsaoc_g8gowGjsC2KhA9S-e65pvTKxURBb0PaDAqdlHNc0hlqG6oG71IqU1tj-dIv_NDD3MIZhXmXhAQTQuev1ZzA

  • 使用RSA对上述字符串做加签操作,并赋值给sign加签操作完成

解密验签:

  • 将CommonRequest或者CommonResponse的所有字段除sign外按照字母升序排序后按照key1=value1&key2=value2的方式拼接,示例参考加密加签。
  • 使用RSA对上述字符串做验签操作,验签不通过返回异常码。
  • 使用RSA解密出secretKey明文,并做AES解密data出明文业务参数。

秘钥说明:

一句话说明:使用对方公钥加密,己方私钥解密,使用己方私钥加签,对方公钥验签,详细过程如下:
合作方生成秘钥对:public1,private1
我方生成密钥对:public2,private2
合作方使用public2加密secretKey,我方使用private2解密secretKey
合作方使用private1加签请求报文,我方使用public1验签报文
我方使用public1加密secretKey,合作方使用private1解密secretKey
我方使用private2加签响应报文,合作方使用public2验签响应报文

你可能感兴趣的:(接口安全设计)