支付是一个非常庞大和专业的领域,而且因为涉及到资金,支付安全一直非常重要。本文作者通过1.5万字,为我们系统梳理了支付安全的整个框架,对相关的同学来说可以收藏学习。
支付是一个非常庞大和专业的领域,而且因为涉及到资金,支付安全一直非常重要。本文作者通过1.5万字,为我们系统梳理了支付安全的整个框架,对相关的同学来说可以收藏学习。
在电子支付的万亿级市场中,安全无疑是核心中的核心。大部分人都知道支付安全很重要,但支付安全具体包括哪些方面,面临的问题,以及有哪些具体技术或方案来应对,包括在支付行业从业多年的老支付人,却未必有全局而清晰的认知。
今天尝试从在线支付面临的主要安全问题,常见的技术手段如加密解密、签名验签、安全证书等入手,尝试讲清楚支付安全体系。
通过这篇文章,你可以了解到如下内容:
在线支付面临的安全问题主要包括:
1)账号或密码等敏感信息被盗用。
用户的账号和密码可能会被黑客获取,导致个人资金被盗用。这种情况是用户普遍感知较强的安全问题,常见于密码泄露导致资金损失的情况。
2)交易信息被篡改。
这个对于一般用户感知较少,常见就是支付金额被篡改,比如实付金额小于应付金额,还就是转账时的收账账号或金额被篡改。
以前碰过到一个真实的案例,黑客首先攻击了银行系统,然后在支付平台发起充值2万美元,再把银行扣款订单修改为扣款1美元,银行扣款1美元成功,通知支付平台扣款成功,支付只校验了状态,没有校验金额,导致支付平台为用户余额充值2万美元,然后黑客在支付平台提现2万美元。最终给支付平台造成巨大损失。
还有情况就是在转账场景下修改收款账号或金额,当转账请求被黑客截获,把原收款账号修改为另一个账号,再发给支付平台。如果支付平台安全措施不到位,就可能把钱转到一个错误的账号上。
3)交易信息被抵赖。
这个比较少见。举个场景,支付平台请求银行扣款200元,银行实际扣款失败,但是通知支付平台成功,支付平台也通知商户发货了。但是银行说他们返回给支付平台是扣款失败,扣款成功的信息不是银行发出来的。这种行为是抵赖。
4)欺诈交易
包括套现、洗钱等违规交易,以及因为用户信息泄露导致盗刷等。
5)服务不可用攻击。
这个出现的频次非常高,只是一般人感觉不到。有兴趣的同学可以搜索分布式拒绝服务DDoS(Distributed Denial of Service),攻击者通过大量恶意流量占用支付系统的资源,使得合法用户无法正常访问支付平台,从而影响用户的交易体验甚至造成财务损失。
二、支付安全核心关注点
支付安全是一个很大的范畴,但我们一般只需要重点关注以下几个核心点就够:
1)敏感信息安全存储。
对个人和商户/渠道的敏感信息进行安全存储。
个人敏感信息包括身份证信息、支付卡明文数据和密码等,而商户/渠道的敏感信息则涉及商户登录/操作密码、渠道证书密钥等。
2)交易信息安全传输。
确保客户端与支付系统服务器之间、商户系统与支付系统之间、支付系统内部服务器与服务器之间、支付系统与银行之间的数据传输安全。这包括采用加密技术等措施来保障数据传输过程中的安全性。
3)交易信息的防篡改与防抵赖。
确保交易信息的完整性和真实性,防止交易信息被篡改或者被抵赖。一笔典型的交易,通常涉及到用户、商户、支付机构、银行四方,确保各方发出的信息没有被篡改也无法被抵赖。
4)欺诈交易防范。
识别并防止欺诈交易,包括套现、洗钱等违规操作,以及通过识别用户信息泄露和可疑交易来保护用户资产的安全。这一方面通常由支付风控系统负责。
5)服务可用性。
防范DDoS攻击,确保支付系统的稳定运行和服务可用性。通过部署防火墙、入侵检测系统等技术手段,及时发现并应对可能的DDoS攻击,保障支付服务的正常进行。
三、极简支付安全大图
支付安全是一个综合性的系统工程,除了技术手段外,还需要建立健全的安全制度和合规制度,而后两者通常被大部分人所忽略。
下图是一个极简版的支付安全大图,包含了支付安全需要考虑的核心要点。
1)制度是基础
哪种场景下需要加密存储,加密需要使用什么算法,密钥长度最少需要多少位,哪些场景下需要做签名验签,这些都是制度就明确了的。制度通常分为行业制度和内部安全制度。行业制度通常是国家层面制定的法律法规,比如《网络安全法》、《支付业务管理办法》等。内部安全制度通常是公司根据自身的业务和能力建立的制度,小公司可能就没有。
2)技术手段
主要围绕四个目标:
1)敏感数据安全存储。
2)交易安全传输。
3)交易的完整性和真实性。
4)交易的合法性(无欺诈)。
对应的技术手段有:
- 敏感信息安全存储:采用加密技术对个人和商户/渠道的敏感信息进行加密存储,限制敏感信息的访问权限,防止未授权的访问和泄露。
- 交易信息安全传输:使用安全套接字层(SSL)或传输层安全性协议(TLS)等加密技术,确保数据在传输过程中的机密性和完整性。
- 交易的完整性和真实性:采用数字签名技术和身份认证技术确保交易信息的完整性和真实性,对交易信息进行记录和审计,建立可追溯的交易日志,以应对可能出现的交易篡改或抵赖情况。
- 防范欺诈交易:通过支付风控系统,及时识别和阻止可疑交易行为。
- 服务可用性:部署流量清洗设备和入侵检测系统,及时发现并阻止恶意流量,确保支付系统的稳定运行和服务可用性,抵御DDoS攻击。
下面详细讲解各技术手段。
四、数据安全:加密与解密技术
加密和解密技术是数据安全的基础,在支付安全技术的核心技术之一,无论是支付平台与银行之间的通信,还是支付平台内部敏感数据的存储,都需要用到加解密技术。
我尽量避免加解密技术背后高深的数字知识。
1. 什么是加密和解密
在数字通信中
加密是将明文通过一定的算法和密钥转换成无法识别的密文的过程。这样即使数据被截获,未经授权的第三方也无法理解其内容。比如把明文“123”转成“aexyeffidfdfwsd”。
解密则是加密的逆向过程,通过一定的算法和密钥将密文转换成明文的过程。比如把密文“aexyeffidfdfwsd”转成“123”。
2. 对称加密算法
对称加密是使用相同的密钥(称为对称密钥)进行加密和解密。这意味着发送方和接收方必须在通信之前共享相同的密钥。对称加密算法使用简单且高效,但密钥分发和管理是其主要挑战之一。
以下是一些常见的对称加密算法、特点和应用场景:
AES(Advanced Encryption Standard,高级加密标准):
特点:安全性高,速度快,密钥长度可变。
应用场景:广泛应用于网络通信、文件加密、数据库加密等领域。也是支付行业使用的主流对称加密算法。
DES(Data Encryption Standard,数据加密标准):
特点:较为古老,密钥长度较短(56位),安全性相对较弱。
应用场景:曾经广泛应用于保护数据传输和存储,但由于密钥长度较短和安全性较弱,现已基本被AES取代。
3DES(Triple DES,三重数据加密标准):
特点:通过对数据使用三次DES算法加密来增强安全性,但速度较慢。
应用场景:曾被广泛用于替代DES,但由于速度较慢,已经基本被AES取代。
RC4(Rivest Cipher 4):
特点:速度快,简单易用。
应用场景:曾经用于保护网络通信和SSL/TLS协议中的加密,但由于安全性存在问题,已经不推荐使用。
IDEA(International Data Encryption Algorithm):
特点:速度快,安全性高。
应用场景:曾经用于网络通信和文件加密,但由于专利限制和更先进的算法出现,应用逐渐减少。
AES目前被认为是最安全和最常用的对称加密算法,推荐在支付行业使用。密钥长度建议使用256比特或以上。
有些银行要求整个报文进行加密,这个时候一般都是使用AES 256来加密。
3. 非对称加密算法
非对称加密算法使用一对密钥(公钥和私钥)进行加密和解密。这两个密钥是相关联的,但不相同。公钥用于加密数据,私钥用于解密数据,一定不能反过来,因为公钥大家都有,如果使用私钥加密,公钥解密,大家都可以解密,就没有安全性可言。这种加密方式具有密钥分离的特点,即公钥可以公开分发,而私钥则保密保存。
另外,非对称加密算法也用于签名验签,拿私钥签名,公钥验签(不能反过来)。
以下是一些常见的非对称加密算法、特点和应用场景:
RSA(Rivest-Shamir-Adleman):
特点:安全性高,可靠性强,广泛应用。
应用场景:用于加密通信、数字签名、密钥交换等各种安全领域。支付行业用得非常多。
DSA(Digital Signature Algorithm):
特点:用于数字签名,验证速度快。
应用场景:主要用于身份验证和数字签名,例如在SSL/TLS协议中用于网站认证。
ECC(Elliptic Curve Cryptography):
特点:密钥长度短,安全性高,加密效率高。
应用场景:适用于移动设备和资源受限环境,例如智能手机、物联网设备等。
DH(Diffie-Hellman):
特点:用于密钥交换,实现安全的密钥协商。
应用场景:用于安全通信中的密钥协商,例如SSL/TLS协议中的密钥交换阶段。
RSA当前在支付行业应用最广泛,ECC则逐渐成为移动设备和物联网设备中的首选算法,因其在资源受限环境下的高效性能而备受青睐。RSA推荐密钥长度为2048比特或以上,ECC推荐密钥长度为256比特或以上。
4. 数字信封加密算法
数字信封加密算法组合了对称加密、非对称加密、数字签名和验签等多种加密技术,用于在网络通信中保护数据的安全性和完整性。传输的数据就像放在信封里面,只有收件人才能打开信封查看明文,所以被形象称为数字信封加密。
它的原理是使用对称加密算法对要传输的数据进行加密,然后再使用接收方的公钥对对称密钥进行加密,再使用自己的私钥进行签名,最后将加密后的对称密钥和加密后的数据一起发送给接收方。接收方先使用对方的公钥进行验签,再使用私钥解密对称密钥,最后使用对称密钥解密数据。
不过大家日常听得更多的可能是PGP(Pretty Good Privacy)。PGP是一种加密软件套件,用于保护电子通信的安全性和隐私性。它由Philip Zimmermann于1991年创建,并成为了一种标准的加密工具,最开始用于保护电子邮件,后面被广泛用于保护文件传输,比如支付平台和银行之间的文件。
PGP通常推荐使用RSA 2048和AES 256,前者用于加密对称密钥和签名,后面用于加密大数据块。
下图是数字信封加解密算法的完整过程:
现在很多银行的打款文件要求使用PGP加密,因为文件里面有卡号等敏感数据。
5. 加密算法和密钥长度选择
在加密应用中,算法和密钥长度对安全性(破解难度)和性能(运算快慢)都有重要影响:
安全性:
性能:
因此,在选择加密算法和密钥长度时,需要综合考虑安全性和性能之间的平衡。一般来说,应选择安全性较高的加密算法,并根据应用场景和性能要求选择适当长度的密钥。
当前支付行业推荐的算法和密钥长度如下:
算法选择:对称加密算法(如AES)适用于对大量数据进行快速加密和解密,而非对称加密算法(如RSA)适用于密钥交换和数字签名等场景。
密钥长度选择:AES建议选择256比特或以上。RSA建议选择2048比特或以上。
6. 常见加密解密算法推荐
前面我们介绍了对称加密和非对称加密算法,两者有不同的使用场景,在支付行业推荐的算法如下:
AES:当前最广泛使用的对称加密算法,速度快,适用于高速加密大量数据。密钥长度推荐256比特或以上。
RSA:广泛使用的非对称加密算法,安全性比AES更高,但是加密速度慢,适用于小量数据或做为数字签名使用。密钥长度推荐2048比特或以上。
在一些场景里面,需要同时组合使用AES和RSA,比如大数据加密使用AES,AES密钥通过RSA加密后传输,并通过RSA进行签名,这样既解决了安全性,又解决了加密速度的问题。
特别强调一点:千万千万不要自己去发明一种【私有的】,【自己认为很安全】的算法,并应用到生产环境。因为业界推荐的这些算法的安全性是经过大量数字家和计算机科学家论证过的,也经过工业界持续地验证。
除了上面推荐的AES和RSA,各个国家基于特殊安全考虑,还有一些特别的加密算法,这些算法同样经过大量数字家和计算机科学家论证过,但是有一定的使用门槛,有兴趣的同学可以去找加密机厂家的资料了解。
7. 典型应用场景
支付系统做为一个安全系数非常高的系统,加解密技术在里面起到了极其重要的作用。
通常以下几个核心应用场景都会用到加解密技术:
1)传输加密;2)存储加密。
传输加密:保护交易数据在互联网上传输过程中的安全,防止数据被窃听或篡改。
具体的实现通常有两种:
1)通道加密:比如使用HTTPS,或者VPN、专线等,实现数据传输端到端的加密。
2)报文数据加密:部分字段单独加密,比如把卡号等关键信息进行加密后再发出去。整体报文单独加密,先生成业务报文,然后对整个报文加密再发出去。
存储加密:对敏感数据比如信用卡信息、用户身份证信息、密码等需要进行加密后存储到数据库中,以防止数据泄露。
具体的实现通常也会分两种:
1)直接加密:原始信息直接加密。通常用于信用卡、身体证等常规数据的加密。
2)加盐值(SALT)后再加密:原始信息先加上盐值,然后再进行加密。通常用于密码管理。所谓盐值,就是一串随机生成的字符串,比如:329713kud3s,9ds9jd9sj3es。
8. 登录与支付密码的特殊处理
登录和支付密码的传输和存储都比较特殊,值得单独说一说。
4.8.1 登录与支付密码传输的特殊处理
登录和支付密码都是用户输入,如何保证在输入时不被盗取?如何保证传输的安全性?
输入时一般会有安全控件,直接获取输入,其它应用无法在输入盗取。然后使用公钥加密,传输到后端后,再使用私钥解密,再进行转加密,最后保存到DB,或和DB的密码对比判断。
4.8.2. 登录与支付密码存储的特殊处理
上一章节里,提到登录或支付密码需要加上盐值后,再进行加密存储。那为什么密码管理需要使用盐值?为了提高密码安全性。
还没有评论,来说两句吧...