图解支付系统安保设计 精髓篇
1. 序
当天和大家聊聊支付系统安保设计的一些外围常识点。
进入正题前,继续先讲个小故事。
多年前国际还没有断直连,我过后担任对接银行通道,由于银行对安保看得很重,部署了很多配件加密机,在接口上也要求咱们经常使用配件加密机。过后公司有上千名研发工程师,但都没有配件加密机的经常使用阅历,我是第一个。过后还须要经常跑到机房去操作配件加密机,由于配件加密机的要求设计要求,很多治理操作是要多张IC卡加独立口令经过治理口登录才干启动,不能远程操作。
记得第一次性从加密机厂家提供的经常使用手册和技术规范读到主密钥,区域主密钥,上班密钥等概念,让我似乎开了天眼:原来密钥还分这么多种,一个密钥还须要另外一个密钥来包全!
对接完渠道后,发现咱们很多密钥都明文放在代码、性能或数据库中,其实是不安保的,于是应用配件加密机作为主密钥服务,设计了一套一致密钥存储与加解密系统,并推行到了全公司经常使用。
在设计一致密钥存储与加解密系统环节中,啃了好几本明码学和信息安保方面的大部头书,所以支付安保关系的常识储藏还是可以的。
在一些大型互联网公司或专业的支付公司,有专业的安保团队提供安保保证,但很多中小型公司其实是没有这方面的技术或人才储藏的,那么可以依据这篇文章做一个初步的了解:支付安保如何做。
以前发过一篇1万7千字的长文论述支付安保设计,这里抽取出精髓局部,想了解更多细节的,可以去找那篇“一文搞懂支付安保”看看。
2. 前言
支付安保是支付系统最关键的根基之一,没有支付安保,在线支付系统就无从谈起。然而安保又是一门很大的学科,触及明码学,网络设备,法律法规,流程制度等方方面面。
这里只谈一些和软件研发比拟严密的一局部内容,不触及网络防火墙等网络设备安保。关键包含以下几点内容:
3. 支付安整体系概要
3.1. 支付安保外围关注点
安保的范围很广,咱们重点关注以下几点:
3.2. 支付安整体系大图
制度是基础,指点各项安保措施落地。
3.3. 传输安保
这里的传输安保关键指支付平台和外部的数据传输,包含用户、商户、银行渠道等。
最便捷的当然是加密后再传输。然而一切数据所有经过加密后再传输比拟费事,还有一个方法就是间接把传输的管道启动加密,而后传输明文数据。
SSL,TLS,HTTPS,VPN,专线等技术都是属于这类技术。
3.4. 存储安保
存储安保不是便捷地加密后保留到数据库,这样的老本太高。通常数据的安保级别是不一样的,上方是一个不太谨严的分级及应答手腕:
须要留意的是,敏感信息是不能打印明文到日志中的,这是大家经常容易疏忽的中央。
3.5. 买卖安保
买卖安保触及的范围比拟广,甚至上方说的传输安保和存储安保也可以归入到买卖安保的范围。
严厉意义上的买卖安保通常指:确保各买卖方都是合法的(身份验证),买卖内容是合法的(安保合规与防欺诈),买卖数据是合法的(防窜改防供认)。
身份验证:证实你是你。比如登录明码,支付明码,个物证书,手机验证码等。
安保合规与防欺诈:买卖的买卖标的是合法的(安保合规),没有被盗刷(欺诈买卖)等。比如买卖国度包全生物就是合法不合规买卖;支付明码被盗后的买卖就是欺诈买卖。
防窜改防供认:经过数字签名技术,防止数据被窜改或预先供认。比如商户发了一笔转账买卖,预先说没有发过这笔买卖,就是供认。
4. 明码学常识入门
只需触及到安保,就必定绕不开明码学。上方提到的大局部疑问在技术上的落地,基本上都是围绕明码学在打转。
4.1. 加解密算法
加解密算法的外围作用就是明文数据信息不被窃取。
4.1.1. 什么是加解密
加密是将明文经过必定的算法和密钥转换成无法识别的密文的环节。比如把明文“123”转成“aexyeffidfdfwsd”。
解密则是加密的逆向环节,经过必定的算法和密钥将密文转换成明文的环节。比如把密文“aexyeffidfdfwsd”转成“123”。
4.1.2. 对称加密算法
对称加密是经常使用相反的密钥(称为对称密钥)启动加密和解密。双方须共享相反的密钥。好处是经常使用便捷且高效,缺陷是密钥散发和治理容易暴露。
经常出现的对称加密算法有:
AES目前被以为是最安保和最罕用的对称加密算法,介绍在支付行业经常使用。密钥长度128比特够用,但介绍256比特。
AES在实践经常使用时,还须要有很参数要性能,比如加密形式就有CBC,ECB、CFB等。
4.1.3. 非对称加密算法
非对称加密算法经常使用一对密钥(公钥和私钥)启动加密和解密。这种加密形式具备密钥分别的特点,即公钥可以地下散发,而私钥则隐秘保留。
公钥用于加密数据,私钥用于解密数据,必定不能反上来。要素很便捷,公钥大家都有,假设经常使用私钥加密,公钥解密,大家都可以解密,就没有安保性可言。
另外,非对称加密算法也用于签名验签,拿私钥签名,公钥验签(不能反上来)。
以下是一些经常出现的非对称加密算法:
RSA在支付行业运行十分宽泛,介绍密钥长度为2048比特或以上。
4.1.4. 数字信封加密算法
数字信封加密算法组合了对称加密、非对称加密、数字签名和验签等多种加密技术。之所以经常被称为数字信封,是由于传输的数据就像放在信封外面,只要收件人才干关上信封检查明文。
比如经常看见的就是PGP(Pretty Good Privacy)。最开局用于包全电子邮件,前面被宽泛用于包全文件传输,比如支付平台和银行之间的文件。
PGP通常介绍经常使用RSA 2048和AES 256,前者用于加密对称密钥和签名,前面用于加密大数据块。
它的原理是经常使用对称加密算法对要传输的数据启动加密,而后再经常使用接纳方的公钥对对称密钥启动加密,再经常使用自己的私钥启动签名,最后将加密后的对称密钥和加密后的数据一同发送给接纳方。接纳方先经常使用对方的公钥启动验签,再经常使用私钥解密对称密钥,最后经常使用对称密钥解密数据。
下图是数字信封加解密算法的完整环节:
如今很多银行的打款文件要求经常使用PGP加密,由于文件外面有卡号等敏感数据。
4.2. 加验签算法
签名验签的外围作用就是防窜改和防供认。只需有窜改,验签就通不过。由于加签密钥是私钥,只需用公钥验签经过,就说明是密钥持有人收回来的报文。
4.2.1. 什么是签名验签
签名:发送者将数据经过特定算法和密钥转换成一串惟一的密文串,也称之为数字签名,和报文信息一同发给接纳方。
验签:接纳者依据接纳的数据、数字签名启动验证,确认数据的完整性,以证实数据未被窜改,且确实来自宣称的发送方。假设验签成功,就可以确信数据是完整且合法的。
上方是一个极简的签名验签数学公式。
假定被签名的数据(m),签名串(Σ),散列函数(H),私钥(Pr),公钥(Pu),加密算法(S),解密算法(S^),判别相等(eq)。
简化后的数学公式如下:
签名:Σ=S[H(m), Pr]。
验签:f(v)=[H(m) eq S^(Σ, Pu)]。
流程图如下:
假设两个散列值相等,那么验签成功,信息(m)被以为是完整的,且确实来自宣称的发送方。假设不分歧,就是验签失败,信息或许被窜改,或许签名是伪造的。
事实中的算法会复杂十分多,比如RSA,ECDSA等,还触及到填充计划,随机数生成,数据编码等。
4.2.2. 经常出现签名验算法
经常出现的数字签名算法包含:
在普通在线支付场景来说,RSA经常使用最为宽泛,密钥长度介绍2048比特。
5. 一致密钥存储及加解密系统设计概要
5.1. 密钥安保通常基础
明文数据被加密安保留储,还须要思考用于加密的密钥如何安保留储。
密钥的关键性,有一个不成文的公式是这样的:密钥的价值 = 密文的价值。比如你加密存储的密文价值10亿,那对应的密钥价值也有10亿。
密钥的治理触及4个方面:密钥存储、降级、备份和复原、废止和销毁。假构想要管好这些密钥,就须要树立一个一致的密钥存储服务,否则密钥很容易被暴露。
密钥存储须要满足2个条件:
密钥分为主密钥和上班密钥,其中上班密钥用来加解密普通的业务数据,而主密钥用来加解密上班密钥。
普通来说主密钥应该存储在专门的配件加密机中,官网也称配件安保模块(HSM)中。特点是安保性极高,然而性能有限,且多少钱低廉,治理复杂。
上班密钥普通由主密钥加密后保留在DB中,在须要的时刻调用主密钥解密后,缓存在内存中,而后再去加解密普通的业务数据。
以前在和银行对接时,上班密钥是分解的,支付平台生成一半,银行生成一半,各自输入到配件加密机,生成一份上班密钥,受配件加密机的主密钥包全。这样支付平台和银行都不知道上班密钥是什么。
密钥降级机制:
5.2. 设计概要
说明:
6. 经常出现工程疑问
大数据块通常驳回对称加密算法,普通是AE 128或AES 256。比如大段的报文。
小数据块,且触及地下环境,通常驳回非对称算法,普通是RSA 2048或RSA 4096。比如在前端把用户的明码经常使用公钥加密,后端经常使用私钥转加密。
文件类通常驳回PGP,把整个文件加密后上行下载,既防窃取又防窜改。
普通支付场景普通是RSA 2048 或RSA 4096。安保足够,各家都允许。
假设买卖规模大,倡导经常使用配件加密机用于加密上班密钥,否则出了安保疑问,损失渺小。