简述微信开放平台接口使用的密码学技术

密码学技术的定义比较广,泛义上来讲凡是涉及与安全相关的信息学传输技术都是密码学的范畴。我以前从事过一段时间的小程序开发,对微信开放平台的安全技术略有了解,这里整理几点如下:

签名认证

为了确保消息的完整性,防止中途被恶意篡改,微信采用类似消息认证码的方式,关于微信签名算法的详细介绍请参考下面的页面:
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html
在第三方平台与微信开放平台通讯过程中,微信签名算法要求对请求的网址、传递的参数附加签名,同时为了防止重放攻击,还要求提供时间戳、随机数,并纳入到签名计算之中。签名采用sha1算法,但它仅仅用于计算摘要,本身并不能防止消息被中途篡改,因此必须使用某种能代表通讯双方密钥的东西。微信采用申请ticket的方式,把ticket作为盐加入到摘要计算中,能够确保生成只有通讯双方知晓的类消息认证码。

共享密码

我们在注册微信开发者帐号的时候,微信会给我们生成一对APPID和APPSecret,用于标识我们的开发者ID和登录密码。登录密码在密码学领域本质上就是共享密码,因而我们必须妥善保存,尽可能地只在后端代码中进行使用。为了进一步避免请求传输过程中出现密码泄露,微信要求所有开发者使用HTTPS进行传输。

开放授权

大家可以百度搜索OAuth2.0,微信对于OAuth的使用可以参考下面这个页面:
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
OAuth2.0主要包括以下几个步骤:

  1. 用户对第三方应用访问行为进行授权。
    访问行为包括访问者身份、访问者的来源、被访问的资源、允许的操作,从安全性和个人隐私方面考虑,一方面要求必须用户手动进行确认,另一方面必须确保授权行为不发生越权行为。若用户选择允许,微信后台根据这些信息生成访问授权码。
  2. 微信后台用第三方应用进行授权验证,并发放令牌。
    第三方应用传输授权码到微信后台,请求拿到对应资源的访问令牌。微信后台检查授权码,若验证通过,则发放一个对授权资源拥有访问权限的临时凭证。
  3. 第三方应用使用令牌访问被授权的资源。
    第三方应用使用有效期内的令牌,可用被授权的资源进行访问。微信后台检查令牌的有效性,若通过则给予相应资源的详细信息,当然也可以是特定行为的操作,如发放红包。

你可能感兴趣的:(简述微信开放平台接口使用的密码学技术)