从零玩转系列之微信支付安全

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 从零玩转系列之微信支付安全

一、前言

作者: 杨不易呀

halo各位大佬很久没更新了最近在搞微信支付,因商户号审核了我半个月和小程序认证也找了资料并且将商户号和小程序进行关联,至此微信支付Native支付完成.此篇文章过长我将分几个阶段的文章发布(项目源码都有,小程序和PC端)

  • 第一章从零玩转系列之微信支付开篇
  • 第二章从零玩转系列之微信支付安全
  • 第三章从零玩转系列之微信支付实战基础框架搭建
  • 第四章从零玩转系列之微信支付实战PC端支付下单接口搭建
  • 第五章从零玩转系列之微信支付实战PC端支付微信回调接口搭建
  • 第六章从零玩转系列之微信支付实战PC端支付微信取消订单接口搭建
  • 第七章从零玩转系列之微信支付实战PC端支付微信退款订单接口搭建
  • 第八章从零玩转系列之微信支付实战PC端项目构建Vue3+Vite+页面基础搭建
  • 第九章从零玩转系列之微信支付实战PC端装修下单页面
  • 第十章从零玩转系列之微信支付实战PC端装修我的订单下单页面
  • 第十一章从零玩转系列之微信支付实战PC端我的订单接入退款取消接口
  • 第十二章从零玩转系列之微信支付实战Uni—App基础项目搭建

二、微信支付安全(证书/秘钥/签名)

1. 信息安全的基础 - 机密性

**明文:**加密前的消息叫“明文”(plain text)

**密文:**加密后的文本叫“密文”(cipher text)

**密钥:**只有掌握特殊“钥匙”的人,才能对加密的文本进行解密,这里的“钥匙”就叫做“密钥”(key)

“密钥”就是一个字符串,度量单位是“位”(bit),比如,密钥长度是 128,就是 16 字节的二进制串

**加密:**实现机密性最常用的手段是“加密”(encrypt)

按照密钥的使用方式,加密可以分为两大类:对称加密和非对称加密。

**解密:**使用密钥还原明文的过程叫“解密”(decrypt)

**加密算法:**加密解密的操作过程就是“加密算法”

所有的加密算法都是公开的,而算法使用的“密钥”则必须保密

2. 对称加密和非对称加密

对称加密

  • 特点:只使用一个密钥,密钥必须保密,常用的有 AES算法优点:运算速度快
  • 缺点:秘钥需要信息交换的双方共享,一旦被窃取,消息会被破解,无法做到安全的密钥交 换
  • 优点:运算速度快
  • 缺点:秘钥需要信息交换的双方共享,一旦被窃取,消息会被破解,无法做到安全的密钥交 换

非对称加密

  • 特点:使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,常用的有 RSA、SM2
  • 优点:黑客获取公钥无法破解密文,解决了密钥交换的问题
  • 缺点:运算速度非常慢

混合加密

  • 实际场景中把对称加密和非对称加密结合起来使用

3.身份认证

  • 公钥加密, 私钥解密的作用是加密信息
  • 私钥加密,公钥解密的作用是身份认证

4.摘要算法(Digest Algorithm)

摘要算法就是我们常说的散列函数、哈希函数(Hash Function),它能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹”。

作用:

保证信息的完整性

特性:

不可逆:只有算法,没有秘钥,只能加密,不能解密

  • 难题友好性:想要破解,只能暴力枚举
  • 发散性:只要对原文进行一点点改动,摘要就会发生剧烈变化
  • 抗碰撞性:原文不同,计算后的摘要也要不同

常见摘要算法:

MD5、SHA1、SHA2(SHA224、SHA256、SHA384)

5.数字签名

数字签名是使用私钥对摘要加密生成签名,需要由公钥将签名解密后进行验证,实现身份认证和不可否 认

签名和验证签名的流程

39d6b8a6d61e9a547f144b264c641a4.png

6.数字证书

数字证书解决“公钥的信任”问题,可以防止黑客伪造公钥。

不能直接分发公钥,公钥的分发必须使用数字证书,数字证书由CA颁发 HTTPS 协议中的数字证书

ded2b12eb79cbdec7b8020e302e835f.png

7.微信APIv3证书

商户证书:

商户API证书是指由商户申请的,包含商户的商户号、公司名称、公钥信息的证书。

商户证书在商户后台申请:点我前往申请获取商户证书

972c8d440f105b301399ba00620fb39.png

8. ⚠️ 平台证书(微信支付平台)

微信支付平台证书是指由微信支付 负责申请的,包含微信支付平台标识、公钥信息的证书。商户可以使用平台证书中的公钥进行验签。

平台证书的获取:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay3_0.shtml

后续Native模式通过WechatPayHttpClientBuilder构造的HttpClient,会自动的处理签名和验签,并进行证书自动更新我们就先不需要下载这个微信平台证书,后续JSAPI需要下载(使用了国内顶级开源项目来操作它没有默认处理所以你懂的…)

证书下载参考: https://github.com/wechatpay-apiv3/CertificateDownloader

9. ⚠️ API密钥和APIv3密钥

都是对称加密需要使用的加密和解密密钥,一定要保管好,不能泄露。

API密钥对应V2版本的API

APIv3密钥对应V3版本的API



相关文章
|
3月前
|
存储 安全 小程序
在微信小程序中使用 Vant 时如何确保数据的安全?
在微信小程序中使用 Vant 时如何确保数据的安全?
52 1
|
XML 安全 Java
微信公众平台安全模式下传输xml数据包时解密方式
微信公众平台安全模式下传输xml数据包时解密方式
365 0
|
XML 存储 安全
微信支付宝支付真的安全吗?为什么没人攻击
微信支付宝支付真的安全吗?为什么没人攻击
|
SQL 存储 消息中间件
微信安全基于 Flink 实时特征开发平台实践
腾讯专家级工程师李天旺,在 Flink Forward Asia 2022 AI 特征工程专场的分享。
696 0
微信安全基于 Flink 实时特征开发平台实践
|
存储 数据采集 消息中间件
微信技术分享:揭秘微信后台安全特征数据仓库的架构设计
本文将介绍微信的安全数据特征仓库的背景起源、技术演进、当前的架构设计和实践,以及数据质量保证系统的实现。希望给中大型IM系统的安全数据特征仓库的设计带来启发。
317 0
|
安全 开发者
3. 该微信用户未开启“公众号安全助手”的消息接收功能,请先开启后再绑定
公众号管理员添加开发者时,提醒:该微信用户未开启“公众号安全助手”的消息接收功能,请先开启后再绑定
251 0
|
监控 安全 Ubuntu
SSH安全告警微信消息提醒
由于公司网络服务器资源限制,无法使用监控及堡垒机(防止被攻击所有编写此文章)
299 1
SSH安全告警微信消息提醒
|
安全 数据安全/隐私保护
WebApp - 微信浏览器解决安全提示“防盗号或诈骗,请不要输入QQ密码”
WebApp - 微信浏览器解决安全提示“防盗号或诈骗,请不要输入QQ密码”
293 0
WebApp - 微信浏览器解决安全提示“防盗号或诈骗,请不要输入QQ密码”
手机丢了,支付宝和微信里的钱还能安全吗?
如果说什么是最烦心的事,手机丢失一定能排进前三。
838 0
|
安全
阿里安全实验室发现“微信克隆漏洞”:可操控微信钱包窃取隐私信息,腾讯推文致谢
只需发一条消息就可以完整克隆受害者的微信账号,并实现微信钱包支付和窃取隐私信息的操控。近日,阿里安全猎户座实验室和潘多拉实验室发现微信存在一款有严重风险的漏洞,并第一时间将漏洞信息上报给了国家相关部门和同步给了腾讯公司。
3837 0

热门文章

最新文章