首页 / 历史 / 古代史 / 正文

messagedigest(1.5万字:一文搞懂“支付安全”)

放大字体  缩小字体 来源:诺贝尔奖中国 2026-04-17 17:04  浏览次数:5

在电子支付的万亿级市场中,安全无疑是核心中的核心。大部分人都知道支付安全很重要,但支付安全具体包括哪些方面,面临的问题,以及有哪些具体技术或方案来应对,包括在支付行业从业多年的老支付人,却未必有全局而清晰的认知。

通过这篇文章,你可以了解到如下内容:

  1. 在线支付面临的主要安全问题。
  2. 常见的加密解密技术。
  3. 常见的签名验签技术。
  4. 安全身份认证体系。
  5. 常见的安全协议。
  6. 密钥存储与统一安全服务。
  7. 工程应用中的常见问题。

在线支付面临的安全问题主要包括:

用户的账号和密码可能会被黑客获取,导致个人资金被盗用。这种情况是用户普遍感知较强的安全问题,常见于密码泄露导致资金损失的情况。

这个对于一般用户感知较少,常见就是支付金额被篡改,比如实付金额小于应付金额,还就是转账时的收账账号或金额被篡改

还有情况就是在转账场景下修改收款账号或金额,当转账请求被黑客截获,把原收款账号修改为另一个账号,再发给支付平台。如果支付平台安全措施不到位,就可能把钱转到一个错误的账号上。

这个比较少见。举个场景,支付平台请求银行扣款200元,银行实际扣款失败,但是通知支付平台成功,支付平台也通知商户发货了。但是银行说他们返回给支付平台是扣款失败,扣款成功的信息不是银行发出来的。这种行为是抵赖。

包括套现、洗钱等违规交易,以及因为用户信息泄露导致盗刷等。

这个出现的频次非常高,只是一般人感觉不到。有兴趣的同学可以搜索分布式拒绝服务DDoS(Distributed Denial of Service),攻击者通过大量恶意流量占用支付系统的资源,使得合法用户无法正常访问支付平台,从而影响用户的交易体验甚至造成财务损失。

支付安全是一个很大的范畴,但我们一般只需要重点关注以下几个核心点就够:

对个人和商户/渠道的敏感信息进行安全存储。

2)交易信息安全传输。

3)交易信息的防篡改与防抵赖。

4)欺诈交易防范。

5)服务可用性。

三、极简支付安全大图

下图是一个极简版的支付安全大图,包含了支付安全需要考虑的核心要点。

哪种场景下需要加密存储,加密需要使用什么算法,密钥长度最少需要多少位,哪些场景下需要做签名验签,这些都是制度就明确了的。制度通常分为行业制度和内部安全制度。行业制度通常是国家层面制定的法律法规,比如《网络安全法》、《支付业务管理办法》等。内部安全制度通常是公司根据自身的业务和能力建立的制度,小公司可能就没有。

主要围绕四个目标:

2)交易安全传输。

4)交易的合法性(无欺诈)。

下面详细讲解各技术手段。

加密和解密技术是数据安全的基础,在支付安全技术的核心技术之一,无论是支付平台与银行之间的通信,还是支付平台内部敏感数据的存储,都需要用到加解密技术。

1. 什么是加密和解密

加密是将明文通过一定的算法和密钥转换成无法识别的密文的过程。这样即使数据被截获,未经授权的第三方也无法理解其内容。比如把明文“123”转成“aexyeffidfdfwsd”。

2. 对称加密算法

以下是一些常见的对称加密算法、特点和应用场景:

特点:安全性高,速度快,密钥长度可变。

DES(Data Encryption Standard,数据加密标准):

应用场景:曾经广泛应用于保护数据传输和存储,但由于密钥长度较短和安全性较弱,现已基本被AES取代。

特点:通过对数据使用三次DES算法加密来增强安全性,但速度较慢。

RC4(Rivest Cipher 4):

应用场景:曾经用于保护网络通信和SSL/TLS协议中的加密,但由于安全性存在问题,已经不推荐使用。

特点:速度快,安全性高。

AES目前被认为是最安全和最常用的对称加密算法,推荐在支付行业使用。密钥长度建议使用256比特或以上

3. 非对称加密算法

另外,非对称加密算法也用于签名验签,拿私钥签名,公钥验签(不能反过来)。

RSA(Rivest-Shamir-Adleman):

应用场景:用于加密通信、数字签名、密钥交换等各种安全领域。支付行业用得非常多。

特点:用于数字签名,验证速度快。

ECC(Elliptic Curve Cryptography):

应用场景:适用于移动设备和资源受限环境,例如智能手机、物联网设备等。

特点:用于密钥交换,实现安全的密钥协商。

RSA当前在支付行业应用最广泛,ECC则逐渐成为移动设备和物联网设备中的首选算法,因其在资源受限环境下的高效性能而备受青睐。RSA推荐密钥长度为2048比特或以上,ECC推荐密钥长度为256比特或以上。

数字信封加密算法组合了对称加密、非对称加密、数字签名和验签等多种加密技术,用于在网络通信中保护数据的安全性和完整性。传输的数据就像放在信封里面,只有收件人才能打开信封查看明文,所以被形象称为数字信封加密。

不过大家日常听得更多的可能是PGP(Pretty Good Privacy)。PGP是一种加密软件套件,用于保护电子通信的安全性和隐私性。它由Philip Zimmermann于1991年创建,并成为了一种标准的加密工具,最开始用于保护电子邮件,后面被广泛用于保护文件传输,比如支付平台和银行之间的文件。

下图是数字信封加解密算法的完整过程:

5. 加密算法和密钥长度选择

安全性:

  1. 非对称加密算法通常比对称加密算法更安全。比如RSA(非对称加密)好于AES(对称加密)。
  2. 同类算法,新算法通常比老算法更安全。比如AES和DES都是对称加密算法,但是AES的安全性优于DES。
  3. 相同算法,密钥越长,越安全,因为密钥越长,密钥空间越大,破解的难度就越大。比如AES 256(密钥长度)的安全性优于AES 128(密钥长度)。

因此,在选择加密算法和密钥长度时,需要综合考虑安全性和性能之间的平衡。一般来说,应选择安全性较高的加密算法,并根据应用场景和性能要求选择适当长度的密钥。

算法选择:对称加密算法(如AES)适用于对大量数据进行快速加密和解密,而非对称加密算法(如RSA)适用于密钥交换和数字签名等场景。

6. 常见加密解密算法推荐

AES:当前最广泛使用的对称加密算法,速度快,适用于高速加密大量数据。密钥长度推荐256比特或以上。

在一些场景里面,需要同时组合使用AES和RSA,比如大数据加密使用AES,AES密钥通过RSA加密后传输,并通过RSA进行签名,这样既解决了安全性,又解决了加密速度的问题。

除了上面推荐的AES和RSA,各个国家基于特殊安全考虑,还有一些特别的加密算法,这些算法同样经过大量数字家和计算机科学家论证过,但是有一定的使用门槛,有兴趣的同学可以去找加密机厂家的资料了解。

支付系统做为一个安全系数非常高的系统,加解密技术在里面起到了极其重要的作用。

1)传输加密;2)存储加密。

具体的实现通常有两种:

2)报文数据加密:部分字段单独加密,比如把卡号等关键信息进行加密后再发出去。整体报文单独加密,先生成业务报文,然后对整个报文加密再发出去。

具体的实现通常也会分两种:

2)加盐值(SALT)后再加密:原始信息先加上盐值,然后再进行加密。通常用于密码管理。所谓盐值,就是一串随机生成的字符串,比如:329713kud3s,9ds9jd9sj3es。

登录和支付密码的传输和存储都比较特殊,值得单独说一说。

登录和支付密码都是用户输入,如何保证在输入时不被盗取?如何保证传输的安全性?

4.8.2. 登录与支付密码存储的特殊处理

在实现时,需要留意加盐策略:

  1. 随机和唯一:每个用户都是随机和唯一的。
  2. 存储盐值:每个用户的密码和盐值都需要配对存储。因为在加密密钥更新时,需要使用盐值一起先解密再重新加密。
  3. 盐值足够长:增加复杂性,推荐至少128位。

如果要保存用户的卡明文数据(比如用户名和卡号),就一定要经过PCI(Payment Card Industry)认证,在PCI认证范围内的域叫PCI域。

简单地说,PC规定了一个单独的区域(简称PCI域),可以处理用户的卡明文数据,包括加密后存储,或使用明文,这个区域的网络安全部署、数据访问控制、数据加密、日志打印、安全策略等全部都有由PCI DSS规定,并定期接受相关认证组织的审查。

10. 加解密在工程应用中的常见问题

算法选择不合适:大批量数据选择使用速度极慢的非对称的RSA算法。

异想天开地使用自己创造的私有算法:以为很安全,其实太傻太天真。

五、防篡改与防抵赖:签名与验签技术

1. 什么是签名与验签

签名:发送者将数据通过特定算法和密钥转换成一串唯一的密文串,也称之为数字签名,和报文信息一起发给接收方。

下面是一个极简的签名验签数学公式。

简化后的数学公式如下:签名:Σ=S[H(m), Pr]。

流程如下:

把数字签名(Σ)和原始消息(m)一起发给接收方。

如果两个散列值相等,那么验签成功,消息(m)被认为是完整的,且确实来自声称的发送方。如果不一致,就是验签失败,消息可能被篡改,或者签名是伪造的。

2. 支付系统为什么一定要做签名验签

签名验签主要解决3个问题:

如果无法做身份验证,支付宝就无法知道针对你的账户扣款99块的请求是真实由你楼下小卖部发出去的,还是我冒充去扣的款。

如果无法校验完整性,那么我在公共场景安装一个免费WIFI,然后截获你的微信转账请求,把接收者修改成我的账号,再转发给微信,微信就有可能会把钱转到我的账号里。

比如微信支付调用银行扣款100块,银行返回成功,商户也给用户发货了,几天后银行说这笔扣款成功的消息不是他们返回的,他们没有扣款。而签名验签就能让银行无法抵赖。

3. 常见数字签名算法及推荐算法

目前主流的数字签名算法是RSA和ECDSA。RSA推出较早,且安全性足够,现在使用非常广泛。而ECDSA由于其较短的密钥长度和更高的安全性,逐渐成为新兴的数字签名算法,特别适用于资源受限环境和移动设备等场景。

4. 一些与防篡改有关的技术

数据摘要是一种通过对数据进行计算(也称为哈希、摘要、散列计算),生成固定长度的唯一数据串(通常称为摘要或哈希值),用于验证数据的完整性和一致性的技术。数据摘要通常用于验证数据在传输或存储过程中是否发生了更改。

常见的数据摘要算法包括:

  1. MD5(Message Digest Algorithm 5):MD5是一种常用的哈希算法,产生128位的哈希值。然而,由于MD5存在严重的安全性缺陷,已经不推荐用于安全性要求较高的场景
  2. SHA-1(Secure Hash Algorithm 1):SHA-1是一种较为安全的哈希算法,产生160位的哈希值。然而,由于SHA-1也存在一些安全性问题,如碰撞攻击,因此在一些安全性要求较高的场景中也不推荐使用。
  3. SHA-256、SHA-384、SHA-512:这些是SHA-1的后续版本,分别产生256位、384位和512位的哈希值。它们提供了更高的安全性,通常被用于对安全性要求较高的数据进行摘要。
  4. RIPEMD(RACE Integrity Primitives evaluation Message Digest):RIPEMD系列是一组与MD4和MD5相似的哈希算法,产生128位、160位、256位和320位的哈希值。虽然不如SHA系列算法流行,但在某些场景下仍然有用。
  5. BLAKE、Keccak、Whirlpool等:这些是一些新兴的哈希算法,设计更加安全和高效,被广泛用于密码学和区块链等领域。

需要说明的是,数字签名需要用到数字摘要算法,但是数字摘要算法不能替代数字签名。因为数字摘要只能证明数据是否完整,无法证明数据一定是某个人或某个机构发出来的。但是在国外很多支付机构,仍然使用MD5或SHA256这种摘要算法来代替验名验签。

HMAC(Hash-based Message Authentication Code)是一种基于哈希函数(摘要)和密钥的消息认证码算法,通常用于验证消息的完整性和真实性。

HMAC因为使用摘要算法和对称加密,运算简单而快速,所以许多场景下,HMAC是一种简单而有效的选择,也被用作消息的完整性保护和身份验证。所以在支付场景下,也经常用于签名验签

5.4.3. 数字时间戳

比如两个科学家都声称自己先于对方完成了某个证明或实验,如果双方把相关的材料通过数字时间戳服务进行了数字时间戳签名,那么就可以轻而易举解决这个问题。

不过在支付系统中,目前比较少使用数字时间戳。

双重数字签名是安全电子交易协议 (Secure Electronic Transaction, 简称SET协议)中引入一个概念。因为SET协议过于复杂,且互联网出现了新的更简便的安全协议,比如SSL(Secure Sockets Layer)/TLS(Transport Layer Security)/HTTPS(Hypertext Transfer Protocol Secure),SET实际没有大规模应用。所在当代支付系统中,目前比较少见双重数字签名。

说明:

  1. 用户、商户、银行分别向CA机构申请证书,这个在图中已经省略。
  2. 用户选购后,先把订单信息生成摘要,然后把支付信息也生成摘要,把两个摘要拼接起出新的摘要,最后使用自己私钥签名,也就是双重签名信息
  3. 用户把“订单信息 + 支付信息摘要 + 双重签名串”发给商户,商户根据订单信息生成摘要,并与支付信息摘要拼接后,拿用户的公钥进行验签。
  4. 用户把“支付信息密文 + 商户信息摘要 + 双重签名串”发给银行(也可以通过商户发给银行),银行先使用自己的私钥解密出支付信息明文,生成摘要,再与订单信息摘要拼接后,拿用户的公钥进行验签。
  5. 上述过程中,商户不知道用户的支付信息,比如卡号等,银行不知道用户的订单信息,比如买了什么,但是商户和银行能判断对方是真实的。

在互联网支付中,怎么证明你是你?这就是身份认证技术。下面讲的证书、CA、PKI等都相对比较专业的概念,这里只做入门介绍,有兴趣的同学可以找专业的文章深入学习,基本每个模块都可以写一本书。

在支付安全领域,身份认证就是确认支付交易的参与者是否是其声称的身份。简单地说,就是证明你是你。这个功能最重要的当然是保护用户账户安全,减少欺诈交易或盗刷,以及遵守合规要求。

身份认证通常分为个人身份认证和企业/机构身份认证。

当涉及到企业或机构之间的身份认证时,常见的方法包括使用数字证书和双向TLS认证(也称为客户端证书认证)。数字证书可参考下一章节“数字证书”的说明,双向TLS认证可参考“TLS”章节的说明。

数字证书(Digital Certificate)是一种用于在网络通信中进行身份验证和数据加密的安全技术。它是由一家被称为证书颁发机构(Certificate Authority,CA)的可信任实体颁发的电子文档,用于证明某个实体(如网站、个人或组织)的身份和公钥。

在网络通信中,当客户端与服务器建立安全连接时,服务器会向客户端发送自己的数字证书。客户端收到服务器的数字证书后,会使用证书中的公钥来验证服务器的身份和证书的真实性。如果验证通过,客户端就可以使用服务器的公钥加密通信数据,并将加密后的数据发送给服务器。

在支付系统中,某些银行在对接时会要求双向证书认证。

我们凭什么相信一个证书是可信的呢?那就是由CA来证明。那我们凭什么相信一个CA机构?通常由政府或大型组织联盟来做信用背书。

CA的主要职责包括:

  1. 颁发数字证书:CA颁发数字证书给证书申请者,并确保证书的有效性和真实性。在颁发数字证书之前,CA会对证书申请者进行身份验证,以确保其身份的合法性。
  2. 证书管理:CA负责管理已颁发的数字证书,包括证书的更新、吊销和查找等操作。CA会定期检查数字证书的有效性,并对已过期或失效的证书进行吊销操作。
  3. 证书验证:CA提供数字证书的验证服务,用于验证数字证书的真实性和完整性。通过验证数字证书的签名和证书链,可以确保数字证书的合法性,并确认证书持有者的身份。
  4. 信任链管理:CA维护一个信任链,用于建立数字证书的信任关系。信任链包括根证书、中间证书和终端证书,每个证书都由上级证书签名,直至根证书,确保数字证书的信任可靠性。

上面有提到一个信任链管理,这个是一个很重要的概念。顶级的证书机构不可能为所有用户提供服务,但是它可以为下级机构签发证书,然后由下级机构再给终端用户签发证书。如果验证证书有效性,只需要依次验证签发的CA机构即可。

上面提到的数字证书的理论基础就是公钥基础设施(Public Key Infrastructure,简称PKI),是一种用于管理和验证公钥的框架和体系结构。PKI提供了一套标准化的方法,用于生成、存储、分发和撤销公钥,以确保安全的网络通信和身份验证。

PKI通过数字证书和公钥加密技术,实现了安全的身份验证、数据加密和数字签名等功能,是保障网络通信安全的重要基础设施。也是支付安全体系的重要基础设施。

七、数据传输安全:常见的传输安全协议

所有数据全部经过加密后再传输比较麻烦,能不能简单一点,我们直接把传输的管道进行加密,然后传输明文数据?答案当然没有问题,比如SSL,TLS,HTTPS,专线等都是这个范畴。

1. SSL

SSL协议的主要功能包括:

  1. 加密通信:SSL协议使用加密算法对通信数据进行加密,以防止被窃听者窃取敏感信息。它支持多种加密算法,包括对称加密算法(如DES、3DES、AES)和非对称加密算法(如RSA、Diffie-Hellman)等。
  2. 完整性验证:SSL协议使用消息认证码(MAC)或数字签名来验证通信数据的完整性,以防止数据被篡改。接收方可以通过验证MAC或数字签名来确保收到的数据未被篡改。
  3. 身份认证:SSL协议支持服务器和客户端之间的身份认证,以确保通信双方的身份是合法的。服务器通常会提供数字证书来证明其身份,客户端可以使用证书来验证服务器的身份。SSL还支持双向身份认证,即客户端和服务器都可以进行身份认证。
  4. 会话管理:SSL协议支持会话复用,以减少握手过程的开销和提高通信效率。

2. TSL

TLS协议的主要功能和SSL一致,这里不重复说明。另外,随着网络安全威胁的不断增加,TLS协议也在不断发展和完善,以提供更强大的安全保护机制。

HTTPS(Hypertext Transfer Protocol Secure)是一种用于安全传输超文本的通信协议。它是在HTTP协议的基础上加入了SSL/TLS协议进行数据加密和身份验证,用于保护网络通信的安全性

简单地理解,就是HTTP全部是明文传输,HTTPS构建在SSL/TSL之上,所有传输的数据是经过加密的。

4. 专线

简单地说,专线很贵,更适用于需要高带宽、低延迟和高安全性的应用,如数据中心互连、企业网络内部连接等。

八、SET协议:过于复杂的设计

SET(Secure Electronic Transaction)协议是由Visa和MasterCard等信用卡组织于1996年提出,并得到了IBM、Microsoft等大公司支持,旨在提供更安全、更可信的在线支付体验。

SET协议的主要特点包括:

  1. 双重身份认证:SET协议要求商家和消费者之间进行双重身份认证,以确保双方的身份是合法的。商家需要向信用卡机构提供数字证书以证明其身份,而消费者需要使用数字证书和PIN码来验证其身份。
  2. 加密通信:SET协议使用加密算法对通信数据进行加密,以防止被窃听者窃取敏感信息。它采用了对称加密和公钥加密相结合的方式,保护交易数据的安全性。
  3. 数字签名:SET协议使用数字签名来验证交易的完整性和真实性,防止交易数据被篡改。商家在向消费者发送订单信息时使用自己的私钥进行签名,消费者在确认订单时可以验证商家的签名以确保订单的真实性。
  4. 安全证书管理:SET协议使用数字证书来验证交易参与者的身份,确保其合法性和可信度。商家和消费者都需要持有有效的数字证书,并通过信任的证书颁发机构(CA)进行验证。

九、网络流量安全:防火墙与入侵检测

这些内容通常归属于网络工程师、系统工程师、及安全工程师的工作范围,下面只做一个简单介绍:

  1. 防火墙(Firewall):防火墙是一种网络安全设备,用于监控和控制网络流量,阻止未经授权的访问和恶意流量进入网络。它可以根据预先定义的安全策略过滤和阻止来自Internet或内部网络的流量,从而保护网络免受攻击和入侵。
  2. 入侵检测系统(IDS):入侵检测系统是一种监视网络流量和系统活动的安全设备,用于检测和警报可能的安全威胁和入侵行为。IDS可以根据事先定义的规则或行为模式检测异常活动,并生成警报或采取措施来应对潜在的威胁。
  3. 入侵防御系统(IPS):入侵防御系统是一种进一步加强网络安全的设备,它不仅能够检测和警报安全威胁,还可以主动阻止和防御入侵行为。IPS可以根据IDS的警报自动采取措施,如阻止恶意流量、更新防火墙规则等,以加强网络的安全性。
  4. 漏洞扫描器(Vulnerability Scanner):漏洞扫描器是一种用于检测计算机系统和网络中存在的安全漏洞和弱点的工具。它可以自动扫描系统和网络,发现潜在的漏洞,并提供建议和修复措施,以减少系统受到攻击的风险。

十、防欺诈交易:支付风控

风控系统最核心最宝贵的资源是风控策略,因为如果知道一家支付公司的风控策略,就意味着可以想办法绕过支付系统的风控系统,进行欺诈交易。所以一般来说,研发风控系统的研发工程师往往不知道风控策略是怎么配置的。

虽然风控的策略是高度机密,但是有些公开的策略,大家可以了解一下,比如说下面这些就属于行为异常,大概率会被风控:

  1. 你一直在中国小额支付,突然在国外支付2万。
  2. 平时一直使用IPHONE(风控会保存你的设备详细信息),突然使用Android机器支付2000块。
  3. 一般都是10天买件商品,实然10分钟内支付50笔。

十一、进阶扩展:统一密钥存储与安全服务

1. 为什么需要统一安全存储密钥

加密密钥有多重要呢?有一个公式是这样的:密钥的价值 = 密文的价值。比如你加密存储的密文价值10亿,那对应的密钥价值也有10亿。

密钥存储

最小权限原则:管理密钥的人越少越好。

一般来说主密钥应该存储在专门的硬件安全模块(HSM)中,俗称:硬件加密机,安全性极高。但是相对来说性能有限,且价格昂贵,管理复杂。

密钥更新机制:

  1. 需要定期更新,减少被破解的风险。
  2. 自动定时更新,减少人为失误。‘
  3. 版本控制和回滚:要有版本号,要能快速回滚。

十二、结束语

如果一定要浓缩一下精华,只需要记住下面6点:

  1. 大数据块加解密:使用对称加密算法AES,密钥长度256比特,简称AES256。
  2. 小数据块及签名验签:使用非对称加密算法RSA,密钥长度2048,简称RSA2048。
  3. 摘要算法:使用SHA256。且摘要算法不推荐用于需要签名验签的场景。
  4. 个人登录/支付密码:一定要加盐值进行混淆。
  5. 网络传输和文件传输:需要使用HTTPS和SFP提高数据传输安全性。
  6. 整体的安全性,需要同时用到对称加密、非对称加密,数字签名,数字证书等多种技术手段。

本文由人人都是产品经理作者【陈天宇宙】,微信公众号:【陈天宇宙】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。

题图来自Unsplash,基于 CC0 协议。

打赏
0相关评论
热门搜索排行
精彩图片
友情链接
声明:本站信息均由用户注册后自行发布,本站不承担任何法律责任。如有侵权请告知立立即做删除处理。
违法不良信息举报邮箱:115904045
头条快讯网 版权所有
中国互联网举报中心