最近在忙着帮公司通过PCI 认证,特通过一些文笔来记录一下PCI 认证的心得体会
PCI 认证的背景
首先,国内做支付的,都已经被支付宝和微信支付的那套模式根深蒂固了,都是基于第三方账号的支付,如果跳银行,也是基于银行的账户 来进行支付,也就是所谓的线上收单的逻辑,因为线下收单 以往都是银联在搞,所以这块很深入理解的人也不是很多。
那么PCI 首先是国外基于信用卡文化而发展出来的,所以PCI 在整体设计时,都是基于刷卡文化来产生的。在信用卡刷卡时,涉及到的机构和人员就有,商户,POS机具厂商,收单机构,卡组织,发卡行,持卡人等等。那么卡的相关数据在这些相关的人员和机构中传递,就产生了一个问题:如何确保卡信息的安全,防止盗刷?那么这个时候PCI 就来了,只有通过了相关PCI认证的 机构:收单机构,商户,机具厂商,系统提供商等等。我们都可以认为是安全的(其实真正的安全,全看人品),那么我们做为持卡人,就是放心大胆的去用信用卡去消费了。
随着移动支付技术的发展,这种线下收单的模式,开始慢慢的转到了线上,比如你去亚马逊 购物,最后结账的时候,也是可以通过信用卡进行支付的,那么现在行业的方向也是逐步向线上发展(毕竟线下,你要有当地的团队,这个天高皇帝远,实在是不合适chinese去搞)。
线上的对接,那么也需要这个链路上的所有环节通过PCI的认证。但这个数据链路细节则和前面的线下是不一样的。
首先,我们先谈谈线下的收单数据链路细节:
线下都有一个POS机,这个POS机需要通过加密算法,对读取到的卡信息进行加密,再将信息上送到了收单商的系统后台,系统再将信息转给相应的PCI卡组织(CDV),卡组织通过卡信息可以调取发卡行,从而取得相应的登记和授权,最后返回支付的结果。在这个过程中,从POS机到收单结构是无法获取相应的卡信息的,传递的都是密文。
线上则因为没有POS机,从而导致到一系列的问题,就是卡信息 是通过 应用程序进行传递的(web前端程序无法完成线下POS机的功能,因为加密这块都是有专业的认证通过芯片技术来处理,所以导致了卡相关信息必须明文的传递到收单机构),而且都是通过web程序进行调用,虽然在传输上用到了HTTPS证书对传输的内容进行网络层面的加密,但在服务端,收单系统的内部人员,是有可能获取到卡信息的。所以这个时候,线上的系统需要通过PCI认证来自证安全。比如那些数据是可存的,那些数据是不可存的,这一系列的东西都需要向PCI 认证机构 说的清清楚楚。
当然这里所说的都是基于卡信息的,那么最近的趋势,为了安全,还增加了3D的方式认证,这样也是为了安全,但这种模式还是有一个关键的问题没有解决:
卡信息还是有可能会被留存,最终保证的还是靠人品。
后面再继续阐述 令牌化的支付技术。