大家好,我是星辰,今天仍旧聊一下付出安全。
对于付出安全我自认比绝大部分付出行业的偕行都专业,当年为了做统一密钥管理和加解密加验签平台,啃了好几本密码学和信息安全的大部头书。
1. 前言
在电子付出的万亿级市场中,安全无疑是核心中的核心。大部分人都知道付出安全很重要,但付出安全具体包罗哪些方面,面临的问题,以及有哪些具体技能或方案来应对,包罗在付出行业从业多年的老付出人,却未必有全局而清晰的认知。
今天尝试从在线付出头临的主要安全问题,常见的技能手段如加密解密、签名验签、安全证书等入手,尝试讲清晰付出安全体系。
通过这篇文章,你可以了解到如下内容:
- 在线付出头临的主要安全问题。
- 常见的加密解密技能。
- 常见的签名验签技能。
- 安全身份认证体系。
- 常见的安全协议。
- 密钥存储与统一安全服务。
- 工程应用中的常见问题。
2. 在线付出头临的主要安全问题
在线付出头临的安全问题主要包罗:
用户的账号和密码大概会被黑客获取,导致个人资金被盗用。这种情况是用户普遍感知较强的安全问题,常见于密码泄漏导致资金丧失的情况。
这个对于一般用户感知较少,常见就是付出金额被篡改,比如实付金额小于应付金额,还就是转账时的收账账号或金额被篡改**。**
以前碰过到一个真实的案例,黑客首先攻击了银行体系,然后在付出平台发起充值2万元,再把银行扣款订单修改为扣款1元,银行扣款1元成功,关照付出平台扣款成功,付出只校验了状态,没有校验金额,导致付出平台为用户余额充值2万元,然后黑客在付出平台提现2万元。最终给付出平台造成巨大丧失。

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

这个比力少见。举个场景,付出平台哀求银行扣款200元,银行现实扣款失败,但是关照付出平台成功,付出平台也关照商户发货了。但是银行说他们返回给付出平台是扣款失败,扣款成功的信息不是银行发出来的。这种行为是诡辩。

包罗套现、洗钱等违规生意业务,以及因为用户信息泄漏导致盗刷等。
这个出现的频次非常高,只是一般人感觉不到。有兴趣的同砚可以搜刮分布式拒绝服务DDoS(Distributed Denial of
Service),攻击者通过大量恶意流量占用付出体系的资源,使得合法用户无法正常访问付出平台,从而影响用户的生意业务体验甚至造成财政丧失。

3. 付出安全核心关注点

付出安全是一个很大的范畴,但我们一般只需要重点关注以下几个核心点就够:
对个人和商户/渠道的敏感信息举行安全存储。
个人敏感信息包罗身份证信息、付出卡明文数据和密码等,而商户/渠道的敏感信息则涉及商户登录/操作密码、渠道证书密钥等。
确保客户端与付出体系服务器之间、商户体系与付出体系之间、付出体系内部服务器与服务器之间、付出体系与银行之间的数据传输安全。这包罗接纳加密技能等措施来保障数据传输过程中的安全性。
确保生意业务信息的完整性和真实性,防止生意业务信息被篡改大概被诡辩。一笔典型的生意业务,通常涉及到用户、商户、付出机构、银行四方,确保各方发出的信息没有被篡改也无法被诡辩。
识别并防止欺诈生意业务,包罗套现、洗钱等违规操作,以及通过识别用户信息泄漏和可疑生意业务来保护用户资产的安全。这一方面通常由付出风控体系负责。
防范DDoS攻击,确保付出体系的稳定运行和服务可用性。通过部署防火墙、入侵检测体系等技能手段,实时发现并应对大概的DDoS攻击,保障付出服务的正常举行。
4. 极简付出安全大图
付出安全是一个综合性的体系工程,除了技能手段外,还需要创建健全的安全制度和合规制度,而后两者通常被大部分人所忽略。
下图是一个极简版的付出安全大图,包罗了付出安全需要考虑的核心要点。

说明:
哪种场景下需要加密存储,加密需要利用什么算法,密钥长度最少需要多少位,哪些场景下需要做签名验签,这些都是制度就明确了的。制度通常分为行业制度和内部安全制度。行业制度通常是国家层面订定的法律法规,比如《网络安全法》、《付出业务管理办法》等。内部安全制度通常是公司根据自身的业务和能力创建的制度,小公司大概就没有。
1)敏感数据安全存储。
2)生意业务安全传输。
3)生意业务的完整性和真实性。
4)生意业务的合法性(无欺诈)。
对应的技能手段有:
- * **敏感信息安全存储** :采用**加密技术** 对个人和商户/渠道的敏感信息进行加密存储,限制敏感信息的访问权限,防止未授权的访问和泄露。
复制代码
- 生意业务信息安全传输 :利用安全套接字层(SSL)或传输层安全性协议(TLS)等加密技能 ,确保数据在传输过程中的机密性和完整性。
- 生意业务的完整性和真实性 :接纳数字签名技能和身份认证技能 确保生意业务信息的完整性和真实性,对生意业务信息举行记载和审计,创建可追溯的生意业务日志,以应对大概出现的生意业务篡改或诡辩情况。
- 防范欺诈生意业务 :通过付出风控体系 ,实时识别和制止可疑生意业务行为。
- 服务可用性 :部署流量清洗设备和入侵检测体系 ,实时发现并制止恶意流量,确保付出体系的稳定运行和服务可用性,反抗DDoS攻击。
下面详细解说各技能手段。
5. 数据安全:加密与解密技能
加密和解密技能是数据安全的底子,在付出安全技能的核心技能之一,无论是付出平台与银行之间的通信,还是付出平台内部敏感数据的存储,都需要用到加解密技能。
我尽量避免加解密技能背后高深的数学知识。
5.1. 什么是加密和解密
在数字通信中,加密
是将明文通过肯定的算法和密钥转换成无法识别的密文的过程。这样纵然数据被截获,未经授权的第三方也无法明白其内容。比如把明文“123”转成“aexyeffidfdfwsd”。
解密 则是加密的逆向过程,通过肯定的算法和密钥将密文转换成明文的过程。比如把密文“aexyeffidfdfwsd”转成“123”。

5.2. 对称加密算法
对称加密是利用相同的密钥(称为对称密钥)举行加密和解密。这意味着发送方和接收方必须在通信之前共享相同的密钥。对称加密算法利用简单且高效,但密钥分发和管理是其主要寻衅之一。

以下是一些常见的对称加密算法、特点和应用场景:
- AES(Advanced Encryption Standard,高级加密尺度):
- 应用场景:广泛应用于网络通信、文件加密、数据库加密等范畴。也是付出行业利用的主流对称加密算法。
- DES(Data Encryption Standard,数据加密尺度):
- * 特点:较为古老,密钥长度较短(56位),安全性相对较弱。
复制代码
- 应用场景:曾经广泛应用于保护数据传输和存储,但由于密钥长度较短和安全性较弱,现已根本被AES取代。
- 3DES(Triple DES,三重数据加密尺度):
- * 特点:通过对数据使用三次DES算法加密来增强安全性,但速度较慢。
复制代码
- 应用场景:曾被广泛用于替代DES,但由于速度较慢,已经根本被AES取代。
- 应用场景:曾经用于保护网络通信和SSL/TLS协议中的加密,但由于安全性存在问题,已经不推荐利用。
- IDEA(International Data Encryption Algorithm):
- 应用场景:曾经用于网络通信和文件加密,但由于专利限制和更先进的算法出现,应用渐渐淘汰。
AES目前被认为是最安全和最常用的对称加密算法 ,推荐在付出行业利用。密钥长度建议利用256比特或以上 。
有些银行要求整个报文举行加密,这个时间一般都是利用AES 256来加密。
5.3. 非对称加密算法
非对称加密算法利用一对密钥(公钥和私钥
)举行加密和解密。这两个密钥是干系联的,但不相同。公钥用于加密数据,私钥用于解密数据,肯定不能反过来,因为公钥大家都有,假如利用私钥加密,公钥解密,大家都可以解密,就没有安全性可言
。这种加密方式具有密钥分离的特点,即公钥可以公开分发,而私钥则保密生存。
别的,非对称加密算法也用于签名验签,拿私钥签名,公钥验签(不能反过来 )。

以下是一些常见的非对称加密算法、特点和应用场景:
- RSA(Rivest-Shamir-Adleman):
- 应用场景:用于加密通信、数字签名、密钥互换等各种安全范畴。付出行业用得非常多。
- DSA(Digital Signature Algorithm):
- 应用场景:主要用于身份验证和数字签名,例如在SSL/TLS协议中用于网站认证。
- ECC(Elliptic Curve Cryptography):
- 应用场景:适用于移动设备和资源受限情况,例如智能手机、物联网设备等。
- 应用场景:用于安全通信中的密钥协商,例如SSL/TLS协议中的密钥互换阶段。
RSA当前在付出行业应用最广泛 ,ECC
则渐渐成为移动设备和物联网设备中的首选算法,因其在资源受限情况下的高效性能而备受青睐。RSA推荐密钥长度为2048比特或以上,ECC推荐密钥长度为256比特或以上。
5.4. 数字信封加密算法
数字信封加密算法组合了对称加密、非对称加密、数字签名和验签
等多种加密技能,用于在网络通信中保护数据的安全性和完整性。传输的数据就像放在信封里面,只有收件人才能打开信封查看明文,所以被形象称为数字信封加密。
它的原理是利用对称加密算法对要传输的数据举行加密 ,然后再利用接收方的公钥对对称密钥举行加密 ,再利用本身的私钥举行签名
,最后将加密后的对称密钥和加密后的数据一起发送给接收方。接收方先利用对方的公钥举行验签 ,再利用私钥解密对称密钥
,最后利用对称密钥解密数据 。
不过大家日常听得更多的大概是PGP(Pretty Good Privacy)。PGP是一种加密软件套件,用于保护电子通信的安全性和隐私性。它由Philip
Zimmermann于1991年创建,并成为了一种尺度的加密工具,最开始用于保护电子邮件,后面被广泛用于保护文件传输,比如付出平台和银行之间的文件。
PGP通常推荐利用RSA 2048和AES 256,前者用于加密对称密钥和签名,后面用于加密大数据块。
下图是数字信封加解密算法的完整过程:

现在很多银行的打款文件要求利用PGP加密,因为文件里面有卡号等敏感数据。
5.5. 加密算法和密钥长度选择
在加密应用中,算法和密钥长度对安全性(破解难度)和性能(运算快慢)都有重要影响:
- 安全性:
- 1. 非对称加密算法通常比对称加密算法更安全。比如RSA(非对称加密)好于AES(对称加密)。
复制代码
- 2. 同类算法,新算法通常比老算法更安全。比如AES和DES都是对称加密算法,但是AES的安全性优于DES。
- 3. 相同算法,密钥越长,越安全,因为**密钥越长,密钥空间越大,破解的难度就越大** 。比如AES 256(密钥长度)的安全性优于AES 128(密钥长度)。
复制代码
- 性能:
- 1. 对称加密算法通常比非对称加密算法运算更快。比如AES(对称加密)好于RSA(非对称加密)。
复制代码
- 2. 相同算法,密钥越长,运算越慢,性能越差。比如AES 256(密钥长度)就比AES 128(密钥长度)要慢。因为密钥长度增加了加密操作的复杂度和计算量,需要更多的计算资源和时间来执行加密和解密操作。
复制代码 因此,在选择加密算法和密钥长度时,需要综合考虑安全性和性能之间的平衡。一般来说,应选择安全性较高的加密算法,并根据应用场景和性能要求选择适当长度的密钥。
当前付出行业推荐的算法和密钥长度如下:
算法选择 :对称加密算法(如AES)适用于对大量数据举行快速加密和解密,而非对称加密算法(如RSA)适用于密钥互换和数字签名等场景。
密钥长度选择 :AES建议选择256比特或以上。RSA建议选择2048比特或以上。
5.6. 常见加密解密算法推荐
前面我们介绍了对称加密和非对称加密算法,两者有不同的利用场景,在付出行业推荐的算法如下:
AES :当前最广泛利用的对称加密算法,速度快,适用于高速加密大量数据 。密钥长度推荐256比特 或以上。
RSA :广泛利用的非对称加密算法,安全性比AES更高,但是加密速度慢,适用于小量数据 或做为数字签名
利用。密钥长度推荐2048比特 或以上。
在一些场景里面,需要同时组合利用AES和RSA,比如大数据加密利用AES,AES密钥通过RSA加密后传输,并通过RSA举行签名,这样既办理了安全性,又办理了加密速度的问题。
特别强调一点:千万千万不要本身去发明一种【私有的】,【本身认为很安全】的算法,并应用到生产情况
。因为业界推荐的这些算法的安全性是经过大量数字家和盘算机科学家论证过的,也经过工业界持续地验证。
除了上面推荐的AES和RSA,各个国家基于特殊安全考虑,另有一些特别的加密算法,这些算法同样经过大量数字家和盘算机科学家论证过,但是有肯定的利用门槛,有兴趣的同砚可以去找加密机厂家的资料了解。
5.7. 典型应用场景
付出体系做为一个安全系数非常高的体系,加解密技能在里面起到了极其重要的作用。通常以下几个核心应用场景都会用到加解密技能:1)传输加密;2)存储加密。
- 传输加密:保护生意业务数据在互联网上传输过程中的安全,防止数据被窃听或篡改。

具体的实现通常有两种:
1)通道加密 :比如利用HTTPS,大概VPN、专线等,实现数据传输端到端的加密。
2)报文数据加密 :部分字段单独加密,比如把卡号等关键信息举行加密后再发出去。整体报文单独加密,先组装业务报文,然后对整个报文加密再发出去。
- 存储加密 :对敏感数据比如名誉卡信息、用户身份证信息、密码等需要举行加密后存储到数据库中,以防止数据泄漏。

具体的实现通常也会分两种:
1)直接加密 :原始信息直接加密。通常用于名誉卡、身体证等常规数据的加密。
2)加盐值(SALT)后再加密
:原始信息先加上盐值,然后再举行加密。通常用于密码管理。所谓盐值,就是一串随机天生的字符串,比如:329713kud3s,9ds9jd9sj3es。
5.8. 登录与付出密码的特殊处理
登录和付出密码的传输和存储都比力特殊,值得单独说一说。
5.8.1. 登录与付出密码传输的特殊处理

登录和付出密码都是用户输入,如何保证在输入时不被盗取?如何保证传输的安全性?
输入时一般会有安全控件,直接获取输入,其它应用无法在输入盗取。然后利用公钥加密,传输到后端后,再利用私钥解密,再举行转加密,最后生存到数据库,或和数据库的密码对比判定。
5.8.2. 登录与付出密码存储的特殊处理
上一章节里,提到登录或付出密码需要加上盐值后,再举行加密存储。那为什么密码管理需要利用盐值?为了提高密码安全性 。

- 防止彩虹表攻击 。彩虹表是一种预先盘算出来的哈希值数据集,攻击者可以利用它来查找和破译未加盐的密码。通过为每个用户加盐,纵然是相同的密码,由于盐值不同,加密后的密文也是不一样的。
- 保护相同密码的用户 。假如多个用户利用了相同的密码,没有盐值情况下,一个被破解后,就能找到利用相同密码的其它用户。每个用户不同的盐值,确保天生的密文不同。
- 增加破解难度 。尤其是密码较弱时,显著增加攻击者难度。
在实现时,需要注意加盐策略:
- 随机和唯一 :每个用户都是随机和唯一的。
- 存储盐值 :每个用户的密码和盐值都需要配对存储。因为在加密密钥更新时,需要利用盐值一起先解密再重新加密。
- 盐值充足长 :增加复杂性,推荐至少128位。
5.9. PCI认证

假如要生存用户的卡明文数据(比如用户名和卡号),就肯定要经过PCI(Payment Card Industry)认证,在PCI认证范围内的域叫PCI域。
PCI安全尺度(PCI DSS)是由PCI安全尺度委员会(PCI SSC)订定和管理的一组安全尺度,旨在保护持卡人数据的安全性和机密性。
简单地说,PC规定了一个单独的区域(简称PCI域),可以处理用户的卡明文数据,包罗加密后存储,或利用明文,这个区域的网络安全部署、数据访问控制、数据加密、日志打印、安全策略等全部都有由PCI
DSS规定,并定期担当干系认证组织的检察。
特别注意的是,PCI尺度要求所有的域都不能打印用户敏感信息,所有的域都不能存储明文用户敏感信息,比如卡只能打印前6后4,只有PCI域范围内的应用才能利用卡明文数据。
5.10. 加解密在工程应用中的常见问题
密钥管理不规范 :把密钥加密后生存在数据库,但是加密密钥用的密钥是123456。
算法选择不合适 :大批量数据选择利用速度极慢的非对称的RSA算法。
兼容性算法不对
:尤其是模式、填充方式是直接影响加解密结果的。比如AES下面仍旧细分为:ECB,CBC,CFB,OFB,CTR,GCM等模式,以及PKCS7/PKCS5填充,零填充等填充方式。具体的可以找密码学干系资料参考。
异想天开地利用本身创造的私有算法 :以为很安全,实在太傻太灵活。
管理机制不完善 :没有订定严格的规范,或有规范实行不严重,导致密钥能被容易访问。
6. 防篡改与防诡辩:签名与验签技能
防篡改与防诡辩一般也称为数据的完整性 和真实性 验证问题,通常利用签名验签技能办理。
6.1. 什么是签名与验签
签名验签是数字加密范畴的两个根本概念。
签名 :发送者将数据通过特定算法和密钥转换成一串唯一的密文串,也称之为数字签名,和报文信息一起发给接收方。
验签
:接收者根据接收的数据、数字签名举行验证,确认数据的完整性,以证明数据未被篡改,且确实来自声称的发送方。假如验签成功,就可以确信数据是完好且合法的。
下面是一个极简的签名验签数学公式。
假设被签名的数据(m),签名串(Σ),散列函数(H),私钥(Pr),公钥(Pu),加密算法(S),解密算法(S^),判定相当(eq)。
简化后的数学公式如下:
签名:Σ=S[H(m), Pr]。
验签:f(v)=[H(m) eq S^(Σ, Pu)]。
流程如下:

签名士程:
- 散列消息 :对消息(m)应用散列函数(H)天生散列值(h)。
- 加密散列值 :利用发送方的私钥 ( Pr ) 对散列值 ( h ) 举行加密,天生签名 ( Σ )。 Σ = S(h, Pr)
把数字签名(Σ)和原始消息(m)一起发给接收方。
验签流程 :
- 散列收到的消息 :利用同样的散列函数 ( H ) 对消息 ( m ) 天生散列值 ( h’ )。 h’ = H(m)
- 解密签名 :利用发送方的公钥 ( Pu ) 对签名 (Σ ) 举行解密,得到散列值 ( h )。 h = S^(Σ, Pu)
- 比力散列值 :比力解密得到的散列值 ( h ) 与直接对消息 ( m ) 散列得到的 ( h’ ) 是否一致。 验证成功条件: h = h’ 。
假如两个散列值相当,那么验签成功,消息(m)被认为是完整的,且确实来自声称的发送方。假如不一致,就是验签失败,消息大概被篡改,大概签名是伪造的。
现实中的算法会复杂非常多,比如RSA,ECDSA等,还涉及到填充方案,随机数天生,数据编码等。
6.2. 付出体系为什么肯定要做签名验签
银行怎么判定扣款哀求是从确定的付出平台发出来的,且数据没有被篡改?商户不承认发送过某笔生意业务怎么办?这都是签名验签技能的功劳。
签名验签主要办理3个问题:
- 身份验证:确认付出信息是由真正的发送方发出,防止冒名顶替。
假如无法做身份验证,付出宝就无法知道针对你的账户扣款99块的哀求是真实由你楼下小卖部发出去的,还是我假冒去扣的款。
- 完整性校验:确认付出信息在传输过程中未被篡改,每一笔生意业务都是完整、正确的。
假如无法校验完整性,那么我在公共场景安装一个免费WIFI,然后截获你的微信转账哀求,把接收者修改成我的账号,再转发给微信,微信就有大概会把钱转到我的账号里。
- 防诡辩性:避免任何一方否则曾经举行过的生意业务,提供法律证据支持。
比如微信付出调用银行扣款100块,银行返回成功,商户也给用户发货了,几天后银行说这笔扣款成功的消息不是他们返回的,他们没有扣款。而签名验签就能让银行无法诡辩。

流程:
- 两边先互换密钥,可以通过线下邮件互换,也可以通过线上自助平台互换。
- 哀求方发出生意业务报文前利用本身的私钥举行签名,接收方接收报文后先举行验签,验签通事后再举行业务处理。
- 接收方处理完业务,返回前利用本身的私钥举行签名,哀求方接收返回报文后先举行验签,验签通事后再举行业务处理。
6.3. 常见数字签名算法及推荐算法
常见的数字签名算法包罗:
- RSA (Rivest-Shamir-Adleman):RSA是一种基于大素数因子分解难题的非对称加密算法,被广泛应用于数字签名和密钥互换等范畴。
- DSA (Digital Signature Algorithm):DSA是一种基于离散对数问题的数字签名算法,主要用于数字签名范畴。
- ECDSA (Elliptic Curve Digital Signature Algorithm):ECDSA是一种基于椭圆曲线离散对数问题的数字签名算法,具有比RSA更短的密钥长度和更高的安全性。
- EdDSA (Edwards-curve Digital Signature Algorithm):EdDSA是一种基于扭曲爱德华斯曲线的数字签名算法,具有高效性和安全性,被广泛用于加密货币等范畴。
目前主流的数字签名算法是RSA和ECDSA
。RSA推出较早,且安全性充足,现在利用非常广泛。而ECDSA由于其较短的密钥长度和更高的安全性,渐渐成为新兴的数字签名算法,特别适用于资源受限情况和移动设备等场景。
在付出场景来说,RSA利用最为广泛,密钥长度推荐2048比特 。RSA1024以前利用得多,但因为密钥长度较短,安全性不足,也已经不再推荐利用。
6.4. 一些与防篡改有关的技能
6.4.1. 数字择要
数据择要是一种通过对数据举行盘算(也称为哈希、择要、散列盘算),天生固定长度的唯一数据串(通常称为择要或哈希值),用于验证数据的完整性和一致性的技能。数据择要通常用于验证数据在传输或存储过程中是否发生了更改。

上面有个缺陷,就是在传输过程中,报文被黑客截获,然后把100万字的文章和择要报文全部替换,服务端发现不了的 。这个缺陷在下面的HMAC算法中会办理。
常见的数据择要算法包罗:
- MD5(Message Digest Algorithm 5): MD5是一种常用的哈希算法,产生128位的哈希值。然而,由于MD5存在严重的安全性缺陷,已经不推荐用于安全性要求较高的场景 。
- SHA-1(Secure Hash Algorithm 1): SHA-1是一种较为安全的哈希算法,产生160位的哈希值。然而,由于SHA-1也存在一些安全性问题,如碰撞攻击,因此在一些安全性要求较高的场景中也不推荐利用。
- SHA-256、SHA-384、SHA-512: 这些是SHA-1的后续版本,分别产生256位、384位和512位的哈希值。它们提供了更高的安全性,通常被用于对安全性要求较高的数据举行择要。
- RIPEMD(RACE Integrity Primitives Evaluation Message Digest): RIPEMD系列是一组与MD4和MD5相似的哈希算法,产生128位、160位、256位和320位的哈希值。虽然不如SHA系列算法流行,但在某些场景下仍旧有用。
- BLAKE、Keccak、Whirlpool等: 这些是一些新兴的哈希算法,设计更加安全和高效,被广泛用于密码学和区块链等范畴。
当前在付出行业推荐的择要算法是SHA256 。
需要说明的是,数字签名需要用到数字择要算法,但是数字择要算法不能替代数字签名。因为数字择要只能证明数据是否完整,无法证明数据肯定是某个人或某个机构发出来的。
但是在国外很多付出机构,仍旧利用MD5或SHA256这种择要算法来代替验名验签。
6.4.2. HMAC算法
HMAC(Hash-based Message Authentication
Code)是一种基于哈希函数(择要)和密钥的消息认证码算法,通常用于验证消息的完整性和真实性。
HMAC算法结合了哈希函数和密钥,通过对消息举行哈希运算,并利用密钥举行加密,天生一个唯一的择要。这个择要就是消息的认证码,用于验证消息的完整性和真实性。

HMAC因为利用择要算法和对称加密,运算简单而快速,所以很多场景下,HMAC是一种简单而有用的选择,也被用作消息的完整性保护和身份验证。所以在付出场景下,也常常用于签名验签
。
但需要说明的是,HMAC办理了纯择要算法的部分问题,但仍不是严格意义上的数字签名算法
,因为HMAC利用的是两边都拥有的对称密钥,无法证明消息肯定是对方发出的,因为也有大概是某方伪造的 。
6.4.3. 数字时间戳
数字时间戳是一种用于确定特定事件发生时间的数字签名或哈希值,通常由数字时间戳服务(DTS:digital time-stamp
service)颁发。数字时间戳将特定事件的时间信息与数字签名或哈希值绑定在一起,以确保该事件在特定时间之前已经存在,从而防止后续的篡改或伪造。
比如两个科学家都声称本身先于对方完成了某个证明或实行,假如两边把干系的质料通过数字时间戳服务举行了数字时间戳签名,那么就可以轻而易举办理这个问题。

数字时间戳的应用场景主要在文件证明,电子邮件,数字证书等,比如法律文件、合同、知识产权、证书等,以证明在某个时间之前就存在了这份文件。
不过在付出体系中,目前比力少利用数字时间戳。
6.4.4. 双重数字签名
双重数字签名是安全电子生意业务协议 (Secure Electronic Transaction,
简称SET协议)中引入一个概念。因为SET协议过于复杂,且互联网出现了新的更简便的安全协议,比如SSL(Secure Sockets
Layer)/TLS(Transport Layer Security)/HTTPS(Hypertext Transfer Protocol
Secure),SET现实没有大规模应用。所在当代付出体系中,目前比力少见双重数字签名。
双重数字签名原理有点绕,我尝试讲清晰:

说明:
- 用户、商户、银行分别向CA机构申请证书,这个在图中已经省略。
- 用户选购后,先把订单信息天生择要,然后把付出信息也天生择要,把两个择要拼接起出新的择要,最后利用本身私钥签名,也就是双重签名信息 。
- 用户把“订单信息 + 付出信息择要 + 双重签名串”发给商户,商户根据订单信息天生择要,并与付出信息择要拼接后,拿用户的公钥举行验签。
- 用户把“付出信息密文 + 商户信息择要 + 双重签名串”发给银行(也可以通过商户发给银行),银行先利用本身的私钥解密出付出信息明文,天生择要,再与订单信息择要拼接后,拿用户的公钥举行验签。
- 上述过程中,商户不知道用户的付出信息,比如卡号等,银行不知道用户的订单信息,比如买了什么,但是商户和银行能判定对方是真实的。
7. 身份合法性判定:身份认证技能
在互联网付出中,怎么证明你是你?这就是身份认证技能。下面讲的证书、CA、PKI等都相对比力专业的概念,这里只做入门介绍,有兴趣的同砚可以找专业的文章深入学习,根本每个模块都可以写一本书。
7.1. 什么是身份认证
在付出安全范畴,身份认证就是确认付出生意业务的参与者是否是其声称的身份。简单地说,就是证明你是你。这个功能最重要的固然是保护用户账户安全,淘汰欺诈生意业务或盗刷,以及遵守合规要求。
7.2. 常见的身份认证方法
身份认证通常分为个人身份认证和企业/机构身份认证。
常见的个人身份认证方法包罗以下几种:
- 用户名和密码认证。 这没什么好说的,最常见的身份认证方式,但安全性相对较低,容易受到密码推测、密码泄漏等攻击。
- 多因素认证(MFA)。 就是要求用户同时利用2种方式验证身份,包罗密码、短信验证码、指纹识别、人脸识别、硬件令牌等。一般是配景风控识别有风险时,才会这样。也常常叫风控寻衅。
- 生物特性认证。 利用个体的生物特性(如指纹、虹膜、声纹、人脸等)来举行身份验证。这种认证方式通常需要专门的硬件设备来捕获生物特性,并利用算法举行比对。
- 单点登录(SSO)与Oauth。 用户只需在一个体系登录,就可以授权访问其它体系。比如大家可以利用微信或付出宝来登录微博、小红书等。
- 数字证书 。由CA机构颁发个人数字证书,这个比力少见。
当涉及到企业或机构之间的身份认证时,常见的方法包罗利用数字证书和双向TLS认证(也称为客户端证书认证)。数字证书可参考下一章节“数字证书”的说明,双向TLS认证可参考“TLS”章节的说明。
7.3. 数字证书
数字证书(Digital
Certificate)是一种用于在网络通信中举行身份验证和数据加密的安全技能。它是由一家被称为证书颁发机构(Certificate
Authority,CA)的可信托实体颁发的电子文档,用于证明某个实体(如网站、个人或组织)的身份和公钥。
数字证书包罗以下主要信息:
- 公钥: 数字证书中包罗了一个实体的公钥,用于加密和解密通信数据。
- 持有者信息: 数字证书中包罗了证书持有者的身份信息,如姓名、电子邮件地点等。
- 颁发者信息: 数字证书中包罗了颁发该证书的证书颁发机构的信息,包罗机构名称、接洽方式等。
- 有用期限: 数字证书中包罗了证书的有用期限,即证书的收效日期和失效日期。
- 数字签名: 数字证书中包罗了颁发者对证书内容的数字签名,用于验证证书的真实性和完整性。
在网络通信中,当客户端与服务器创建安全连接时,服务器会向客户端发送本身的数字证书。客户端收到服务器的数字证书后,会利用证书中的公钥来验证服务器的身份和证书的真实性。假如验证通过,客户端就可以利用服务器的公钥加密通信数据,并将加密后的数据发送给服务器。
比如你访问以https开头的网站,浏览器就会验证网站服务商的证书。
在付出体系中,某些银行在对接时会要求双向证书认证。
7.4. 数字证书颁发机构CA
我们凭什么相信一个证书是可信的呢?那就是由CA来证明。那我们凭什么相信一个CA机构?通常由当局或大型组织联盟来做名誉背书。
在数字证书范畴,CA指的是Certificate
Authority(证书颁发机构)。CA是一种可信的第三方机构,负责颁发、管理和验证数字证书,以确保数字证书的合法性和可信度。
CA的主要职责包罗:
- 颁发数字证书: CA颁发数字证书给证书申请者,并确保证书的有用性和真实性。在颁发数字证书之前,CA会对证书申请者举行身份验证,以确保其身份的合法性。
- 证书管理: CA负责管理已颁发的数字证书,包罗证书的更新、吊销和查找等操作。CA会定期查抄数字证书的有用性,并对已过期或失效的证书举行吊销操作。
- 证书验证: CA提供数字证书的验证服务,用于验证数字证书的真实性和完整性。通过验证数字证书的签名和证书链,可以确保数字证书的合法性,并确认证书持有者的身份。
- 信托链管理: CA维护一个信托链,用于创建数字证书的信托关系。信托链包罗根证书、中间证书和终端证书,每个证书都由上级证书签名,直至根证书,确保数字证书的信托可靠性。
常见的CA包罗全球性的CA,如VeriSign、GeoTrust、DigiCert等,以及国家或地区性的CA,如中国电子认证服务(CFCA)、中国互联网络信息中心(CNNIC)等。这些CA都遵循国际尺度和行业规范,提供可信任的数字证书服务,用于保障网络通信的安全和可信度。
上面有提到一个信托链
管理,这个是一个很重要的概念。顶级的证书机构不大概为所有用户提供服务,但是它可以为下级机构签发证书,然后由下级机构再给终端用户签发证书。假如验证证书有用性,只需要依次验证签发的CA机构即可。
7.5. PKI
上面提到的数字证书的理论底子就是公钥底子办法(Public Key Infrastructure,简称PKI),是一种用于管理和验证公钥
的框架和体系结构。PKI提供了一套尺度化的方法,用于天生、存储、分发和取消公钥,以确保安全的网络通信和身份验证。
PKI体系结构包罗以下主要组件:
- 数字证书: PKI利用数字证书来证明实体的身份,其中包罗了实体的公钥以及其他干系信息,如证书的颁发者、有用期等。数字证书由证书颁发机构(CA)颁发,并通过数字签名保证其真实性和完整性。
- 证书颁发机构(CA): CA是负责颁发、管理和验证数字证书的可信机构。CA通过数字签名对数字证书举行签名,以证明证书的真实性,并提供证书取消服务(CRL或OCSP)来吊销已失效的证书。
- 注册机构(RA): RA是CA的辅助机构,负责用户身份验证和数字证书的申请处理。RA通常网络用户的身份信息,并将其提交给CA举行审批和颁发数字证书。
- 证书存储库: 证书存储库用于存储和管理已颁发的数字证书,以便用户和应用程序检索和验证证书。
- 密钥管理: PKI提供了密钥天生、分发和管理的功能,包罗公钥和私钥的天生、存储和互换。
PKI通过数字证书和公钥加密技能,实现了安全的身份验证、数据加密和数字签名等功能,是保障网络通信安全的重要底子办法。也是付出安全体系的重要底子办法。
证书、CA、PKI等都是基于公私钥理论 之上,有兴趣的同砚可以去深入了解一下公私钥理论及背后的数字知识。
8. 数据传输安全:常见的传输安全协议
在互联网上,所有的数据都通过网络传输,在线付出的安全也绕不开数据传输安全。这里简单介绍一下各种常见的安全协议。
所有数据全部经过加密后再传输比力麻烦,能不能简单一点,我们直接把传输的管道举行加密
,然后传输明文数据?答案固然没有问题,比如SSL,TLS,HTTPS,VPN,专线等都是这个范畴。
这部分内容大部分都是安全工程师关注的范围,大家只需要了解即可。

8.1. SSL
SSL(Secure Sockets
Layer,安全套接层)是一种用于保护网络通信安全的协议。它最初由网景公司(Netscape)开发,并于1994年首次发布。SSL协议通过在应用层和传输层之间创建安全通道,提供了加密、完整性验证和身份认证等功能,用于保护网络通信的安全性。
SSL协议的主要功能包罗:
- 加密通信: SSL协议利用加密算法对通信数据举行加密,以防止被窃听者盗取敏感信息。它支持多种加密算法,包罗对称加密算法(如DES、3DES、AES)和非对称加密算法(如RSA、Diffie-Hellman)等。
- 完整性验证: SSL协议利用消息认证码(MAC)或数字签名来验证通信数据的完整性,以防止数据被篡改。接收方可以通过验证MAC或数字签名来确保收到的数据未被篡改。
- 身份认证: SSL协议支持服务器和客户端之间的身份认证,以确保通信两边的身份是合法的。服务器通常会提供数字证书来证明其身份,客户端可以利用证书来验证服务器的身份。SSL还支持双向身份认证,即客户端和服务器都可以举行身份认证。
- 会话管理: SSL协议支持会话复用,以淘汰握手过程的开销和提高通信效率。
SSL协议最初广泛应用于Web浏览器和Web服务器之间的安全通信,用于保护网页传输的敏感信息,如用户名、密码和名誉卡信息等。随着SSL协议的发展和演进,它渐渐被TLS协议所取代,但人们通常仍将TLS协议统称为SSL。
8.2. TSL
TLS(Transport Layer Security,传输层安全)协议是一种用于保护网络通信安全的协议。它创建在SSL(Secure Sockets
Layer,安全套接层)协议的底子上,并在SSL的底子上举行了改进和扩展。TLS协议提供了数据的加密、完整性验证和身份认证等功能,用于保护网络通信的安全性。
TLS协议的主要功能和SSL一致,这里不重复说明。别的,随着网络安全威胁的不断增加,TLS协议也在不断发展和完善,以提供更强盛的安全保护机制。
8.3. HTTPS
HTTPS(Hypertext Transfer Protocol
Secure)是一种用于安全传输超文本的通信协议。它是在HTTP协议的底子上参加了SSL/TLS协议举行数据加密和身份验证,用于保护网络通信的安全性
。
HTTPS协议的工作原理如下:
- 创建安全连接: 客户端向服务器发送连接哀求时,服务器会返回本身的数字证书,证明本身的身份和公钥。客户端收到服务器的数字证书后,会验证证书的真实性和有用性。
- 协商加密算法: 客户端和服务器在创建连接时会协商利用的加密算法和密钥长度,以确保通信数据的机密性和安全性。
- 数据加密传输: 客户端利用服务器的公钥加密通信数据,并将加密后的数据发送给服务器。服务器收到加密数据后,利用本身的私钥解密数据。
- 身份验证: 在创建连接时,服务器发送的数字证书可以用于验证服务器的身份。假如证书验证通过,客户端就可以信托服务器,并继续举行安全通信。
简单地明白,就是HTTP全部是明文传输,HTTPS构建在SSL/TSL之上,所有传输的数据是经过加密的。
除了HTTPS之外,另有其它一些传输协议是构建在SSL/TSL之上的,比如文件传输协议FTP是明文传输,SFTP也是基于SSL/TSL之上的加密传输。
8.4. VPN与专线
VPN(Virtual Private Network)和专线(Dedicated
Line)都是用于创建安全、可靠的网络连接的技能,但它们之间存在一些区别。
- * VPN是通过公共网络(如互联网)建立的虚拟私有网络,用于安全地连接远程地点或用户到企业内部网络。
复制代码
- VPN利用加密和隧道技能,将数据在公共网络上举行加密和传输,以确保通信的安全性和隐私性。
- VPN通常依赖于软件或硬件设备(如VPN服务器、VPN客户端和VPN路由器)来创建和管理安全连接。
- * 专线是一种物理连接,通常由电信提供商提供,用于在两个或多个地点之间建立私有的、专用的网络连接。
复制代码
- 专线可以是光纤、电缆或其他物理前言,通常具有固定的带宽和可靠的连接质量。
- 专线不依赖于公共网络,因此通常具有更高的安全性和稳定性,适用于需要高可靠性和低延迟的应用场景。
简单地说,VPN更灵活和成本更低,适用于长途访问、移动办公和跨地域连接等场景。专线则很贵,更适用于需要高带宽、低延迟和高安全性的应用,如数据中心互连、企业网络内部连接等。
像付出宝与银联、网联就是通过专线连接。以前一些大付出公司和大银行直连时,一般也是通过专线连接,而一些小银行因为成本考虑就会选择VPN,甚至直接公网走https办理。
9. SET协议:过于复杂的设计
需要终端用户参与的产品,肯定是越简单越好,否则肯定会被期间淘汰,比如SET协议。
SET(Secure Electronic
Transaction)协议是由Visa和MasterCard等名誉卡组织于1996年提出,并得到了IBM、Microsoft等大公司支持,旨在提供更安全、更可信的在线付出体验。
SET协议的设计目标是办理传统网络上的名誉卡生意业务存在的安全隐患,如名誉卡号被盗取、篡改、重放攻击等问题。为了实现这一目标,SET协议引入了很多安全机制和加密技能,包罗数字证书、数字签名、对称加密和公钥加密等。
SET协议的主要特点包罗:
- 双重身份认证: SET协议要求商家和消费者之间举行双重身份认证,以确保两边的身份是合法的。商家需要向名誉卡机构提供数字证书以证明其身份,而消费者需要利用数字证书和PIN码来验证其身份。
- 加密通信: SET协议利用加密算法对通信数据举行加密,以防止被窃听者盗取敏感信息。它接纳了对称加密和公钥加密相结合的方式,保护生意业务数据的安全性。
- 数字签名: SET协议利用数字签名来验证生意业务的完整性和真实性,防止生意业务数据被篡改。商家在向消费者发送订单信息时利用本身的私钥举行签名,消费者在确认订单时可以验证商家的签名以确保订单的真实性。
- 安全证书管理: SET协议利用数字证书来验证生意业务参与者的身份,确保其合法性和可信度。商家和消费者都需要持有有用的数字证书,并通过信托的证书颁发机构(CA)举行验证。
如前面所说,尽管SET协议的起点很高,不但有Visa和MasterCard两大卡组联手推出,还得到IBM、微软等巨头支持,在安全性方面具有较高水平,但由于其复杂性和高成本,仍旧败走麦城,并没有得到广泛接纳,而是被厥后出现的其他安全付出办理方案(如SSL/TLS协议和3D
Secure)所取代。固然,它在在线付出安全技能的发展过程中仍起到了重要的推动作用,为后续安全付出尺度的订定和实现奠定了底子。
10. 网络流量安全:防火墙与入侵检测
网络安全和入侵检测是保护盘算机网络和体系安全的重要组成部分,它们涉及各种技能和工具,包罗防火墙、入侵检测体系(IDS)、入侵防御体系(IPS)、漏洞扫描器等。
这些内容通常归属于网络工程师、体系工程师、及安全工程师的工作范围,下面只做一个简单介绍:
- 防火墙(Firewall): 防火墙是一种网络安全设备,用于监控和控制网络流量,制止未经授权的访问和恶意流量进入网络。它可以根据预先定义的安全策略过滤和制止来自Internet或内部网络的流量,从而保护网络免受攻击和入侵。
- 入侵检测体系(IDS): 入侵检测体系是一种监视网络流量和体系活动的安全设备,用于检测和警报大概的安全威胁和入侵行为。IDS可以根据事先定义的规则或行为模式检测异常活动,并天生警报或采取措施来应对潜伏的威胁。
- 入侵防御体系(IPS): 入侵防御体系是一种进一步加强网络安全的设备,它不仅可以或许检测和警报安全威胁,还可以主动制止和防御入侵行为。IPS可以根据IDS的警报自动采取措施,如制止恶意流量、更新防火墙规则等,以加强网络的安全性。
- 漏洞扫描器(Vulnerability Scanner): 漏洞扫描器是一种用于检测盘算机体系和网络中存在的安全漏洞和缺点的工具。它可以自动扫描体系和网络,发现潜伏的漏洞,并提供建议和修复措施,以淘汰体系受到攻击的风险。
这些工具更多的是从数据包的维度来处理安全问题。数据包处理完成之后,才会组装成业务数据,才能被用于加解密、签名验签等。
11. 防欺诈生意业务:付出风控
付出风控是针对付出体系中的风险举行管理和控制的一种措施,旨在降低欺诈生意业务和财政丧失的风险。
风控体系最核心最名贵的资源是风控策略
,因为假如知道一家付出公司的风控策略,就意味着可以想办法绕过付出体系的风控体系,举行欺诈生意业务。所以一般来说,研发风控体系的研发工程师往往不知道风控策略是怎么配置的。
下图是一个极简的风控体系架构图。

虽然风控的策略是高度机密,但是有些公开的策略,大家可以了解一下,比如说下面这些就属于行为异常,大概率会被风控:
- 你一直在中国小额付出,突然在国外付出2万。
- 寻常一直利用IPHONE(风控会生存你的设备详细信息),突然利用Android机器付出2000块。
- 一般都是10天买件商品,实然10分钟内付出50笔。
现代的风控体系不仅仅是策略,另有很多机器学习算法。但总的来说,仍旧围绕:当次付出行为,汗青生意业务数据,配置的规则策略,规则引擎,机器学习等睁开。
12. 进阶扩展:统一密钥存储与安全服务
12.1. 为什么需要统一安全存储密钥
明文数据被加密存储,安全了,那加密明文数据的密钥怎么办?
加密密钥有多重要呢?有一个公式是这样的:密钥的代价 = 密文的代价。比如你加密存储的密文代价10亿,那对应的密钥代价也有10亿。
密钥的管理涉及4个方面:密钥存储、更新、备份和规复、废止和销毁。假如想要管好这些密钥,就需要创建一个统一的密钥存储服务,否则密钥很容易被泄漏。

密钥存储 :
安全存储情况:密钥生存在特殊的安全情况中,包罗服务器、网络情况、硬件加密机等。
最小权限原则:管理密钥的人越少越好。
密钥分为主密钥 和工作密钥 ,其中工作密钥用来加解密平凡的业务数据,而主密钥用来加解密工作密钥。
一般来说主密钥应该存储在专门的硬件安全模块(HSM)中,俗称:硬件加密机,安全性极高。但是相对来说性能有限,且代价昂贵,管理复杂。
工作密钥一般由主密钥加密后生存在DB中,在需要的时间调用主密钥解密后,缓存在内存中,然后再去加解密平凡的业务数据。
密钥更新机制:
- 需要定期更新,淘汰被破解的风险。
- 自动定时更新,淘汰人为失误。‘
- 版本控制和回滚:要有版本号,要能快速回滚。
12.2. 统一密钥平台体系架构

说明:
- 需要利用硬件加密机HSM天生并生存主密钥。
- 工作密钥被主密钥加密后,生存到DB中。
- 各应用调用密钥管理体系举行加密解密、签名验签,保证密钥不被业务应用读取,淘汰泄漏风险。
13. 结束语
付出安全是一个很庞大且非常专业的范畴,任意拿一个加解密或签名验签算法就可以写一本厚厚的书,但对于我们大部分人来说,不需要掌握密码学专家或专业安全工程师那么多知识,文章中介绍的知识点已经足以凌驾90%的付出行业从业职员对付出安全的明白。
假如肯定要浓缩一下精华,只需要记住下面6点:
- 大数据块加解密:利用对称加密算法AES,密钥长度256比特,简称AES256。
- 小数据块及签名验签:利用非对称加密算法RSA,密钥长度2048,简称RSA2048。
- 择要算法:利用SHA256。且择要算法不推荐用于需要签名验签的场景。
- 个人登录/付出密码:肯定要加盐值举行混淆。
- 网络传输和文件传输:需要利用HTTPS和SFP提高数据传输安全性。
- 整体的安全性,需要同时用到对称加密、非对称加密,数字签名,数字证书等多种技能手段。
这是《百图解码付出体系设计与实现》专栏系列文章中的第(31)篇。 接待和我一起深入解码付出体系的方方面面。
系列文章PDF合集,不定时更新:
Github:GitHub - yinmo-sc/Decoding-Payment-System-Book:
百图解码付出体系设计与实现
百度网盘:百图解码付出体系设计与实现_免费高速下载|百度网盘-
分享无穷制
网络安全工程师(白帽子)企业级学习路线
第一阶段:安全底子(入门)
第二阶段:Web渗透(低级网安工程师)
第三阶段:进阶部分(中级网络安全工程师)
假如你对网络安全入门感兴趣,那么你需要的话可以点击这里 |