第一章 支付风控场景分析

风控是一个让人爱恨交加的话题。 对支付来说风控是必不可少的功能。只要老板不想把底裤都赔掉,那就必须上风控。可对互联网公司来说,风控是一个谜一般的话题,无论是对风控专家还是IT工程师而言。随着互联网和大数据技术的引入,风控变成了一个跨学科的领域,可这无疑是互联网公司里面最同床异梦的跨学科。机器学习,深度学习,规则推理,随机森林….光这些名词就足以让人风控专家望而怯步;而风险事件、尽职调查、巴塞尔协议.. 这些名词,一提起来IT人员就头大。这个系列的文章将试图从这两个领域简单梳理下支付风控面临的问题,以及如何从技术角度来解决这些问题。

一、概念定义

按照教科书的说法, 风险是指在特定场景下,特定时间内某个损失发生的可能性,或者说是在某一个特定时间段里,人们所期望达到的目标与实际出现的结果之间的差距。金融领域自从诞生以来,就一直伴随着风险。风险控制是指风险管理者采取各种措施和方法,消灭或减少风险事件发生的各种可能性,或风险控制者减少风险事件发生时造成的损失。这里又引入了一个词,风险事件, 它和风险因素经常容易混淆。 风险事件指造成风险的直接原因,风险因素则是间接原因。 如下雨天路滑导致发生车祸造成人员伤亡。 则车祸是人员伤亡的直接原因,是风险事件。而下雨天是间接原因,属于风险因素。 先看一条小道消息惊悚下img风控做不好,一个晚上2个亿就出去了。饶是该公司财大气粗,也扛不住几次折腾。一个漏洞搞垮一个小公司也是常有的事。对支付系统来说,安全是第一考虑的问题,特别是资金安全,这需要风控系统来保驾护航。那一般来说,支付系统会面临哪些风险? 不同文献有不同的风险分类,本文试图从账户、资金、交易、操作、信用风险角度来详细描述。

二、账户风险

支付系统最常见的,也是在黑产圈中最为成熟的,那就得算账户的风险,即俗话说的“盗号”。近几年来,各大型互联网网站的账户泄露事故层出不穷,携程,京东,CSDN等都中过招,每一次都能引起轩然大波。而在黑产圈,账号窃取都形成了一套完整成熟的产业链。img这是目前在黑产圈中账户攻击的主要流程,以下分析在这个过程中每个阶段的具体操作,为风险系统设计提供依据。

2.1、拖库

拖库是实施账户攻击的第一步。考虑到大型网站一般防守比较严密,黑客一般选择从小型网站入手,入侵到一些防守薄弱或有漏洞的网站,将注册用户的资料窃取出来。常见手法包括:

利用操作系统和系统组件漏洞

比如近年来杀伤力最大的漏洞之一Heartlbleed 漏洞。这个漏洞,在2012年OpenSSL软件发布时带有这个bug,而正式公开时间是2014年。Heartbleed漏洞使得黑客有可能通过memory dump的手段来获取到服务器上接受的用户请求、密码、甚至是服务器的私钥。只要持续不断的攻击,任何被加载到内存中且不幸被加载到和OpenSSL在同一个区块内存中的数据,都会被黑客所获取。 这两年期间,有多少黑客使用了这个漏洞来窃取网站信息,就不得而知了。 由于此类漏洞的发现和修复往往有一定的时间差,这也给黑客利用漏洞窃取信息带来了便利。

利用网站使用的第三方组件漏洞

如臭名昭著的Apache Struts系列漏洞。从2010年开始, 不断地有漏洞暴露出来, 这些漏洞直奔struts所使用的OGNL表达式,通过构建各种匪夷所思的表达式, 可以远程执行任意命令,包括访问根目录。由于SSH(Springframework + Apache Struts + Hibernate)架构入门简单、上手容易,再加上各种IT培训机构不遗余力的推广,在国内电商、银行、运营商网站上被大量使用。每次Apache Struts 漏洞的发布,都能够掀起一番血雨腥风。 而Apache组织对这些漏洞响应不及时,修复慢,更让这些机构雪上加霜。远离Apache Struts更是支付系统的基本要求。

SQL注入攻击

基本上所有网站都会用到数据库。而一些新手在写代码的时候,对用户输入数据不做验证或者验证不到位,就把这些数据直接通过拼接SQL语句写入到数据库中,这就很容易导致SQL注入攻击。 比如系统在判断用户名和密码是否正确时,会使用这个SQL语句来查询数据库:

SELECT 1 FROM users WHERE username = 'admin' AND password = 'guest'

攻击者可以尝试修改密码为 ‘ OR ‘a’ = ‘a , 拼接成SQL语句:

SELECT 1 FROM users WHERE username = 'admin' AND password = 'guest' OR 'a'='a'

由此执行成功,获取管理后台的权限。

这三个是常见的攻击方式。 当然还有其他的方式,如木马,钓鱼网站等等,不再详细描述。

2.2、洗库

在攻入服务器,获取到资料,特别是数据库的信息后, 需要对信息进行分析。 不是所有的信息都可以直接使用,部分信息,如密码,身份证等,一般都会加密存储。 通过暴力、字典或者彩虹表的方式来破解,获取到破解后的信息,就拿到用户名,密码等资料。

-暴力破解:如果知道用户名或者密码的范围,可以通过枚举的方法逐个尝试。 对密码来说,会受限于密码的长度,如果长度在8位以上,那可枚举项就太多了,需要几天甚至几年的计算才能破解。

-字典表:其实也是暴力破解的一种,区别是可以预先计算出来一些常见的组合,比如生日之类的,然后使用这些组合来进行破解。

-彩虹表:这是一种破解哈希算法的技术,是黑客必备的跨平台密码破解方法,可以破解MD5进行哈希处理的密码。它的性能优异,在一台普通PC上辅以NVidia CUDA技术,对于Microsoft Windows操作系统使用的NTLM密码加密算法,可以达到最高超过1千亿次每秒的明文尝试。对于广泛使用的MD5也接近一千亿次。

2.3、撞库

第三步是撞库,就开始进攻真正的目标网站了。 把拿到的账户信息去尝试登陆大型网站。因为大部分用户,习惯于在多个网站使用同一套账户和密码。如果登录成功,则可以进一步窃取更多的用户信息,比如信用卡信息等。 由此可见, 撞库攻击本质上是利用用户相同的注册习惯,以大量的用户数据为基础,尝试登陆目标网站,从而窃取更多的用户资料。 这也使得黑客无需进行系统攻击的情况下,即可轻易获取目标用户信息。

更进一步,黑客们会把这些资料整理后,形成社工库。这个库也日益壮大, 目前有千万规模。除了用户名密码,还有大量的个人隐私也被挖掘出来。比如如家2000万数据泄露,其中包含开房信息;QQ群用户信息泄露、京东2015年初用户信息泄露。这都导致大量的个人隐私被窃取甚至出售。

由此可见,账户被窃取,往往是网站防护薄弱和用户安全意识薄弱两种因素导致。

三、交易风险

支付的交易风险主要是交易过程中的各种恶意行为,而这些行为在电商系统中表现特别突出,包括 自动刷单、人工批量下单以及异常大额订单等场景。在秒杀的时候, 由于其价格有很大的优惠力度, 黄牛会采用机器批量注册账号、机器抢购等方式来争取秒杀商品,普通消费者很难享受到秒杀的实惠,使得秒杀活动效果大打折扣。此外,在商家侧,主要的风险在于刷单。不少商家使用刷单、刷评价的方式来以非正常途径提升销量,积分,信誉等。甚至通过刷单的方式来套取补贴,帮助套现。 从阿里公司发布的《互联网信任环境调查报告》来看,大部分用户在购买的时候,会看中商家的资质和诚信,商品的销量、评论也往往会成为购买的一个参考。 在这种情况下, 刷单就成为一个提升店铺交易量的重要手段。而刷单和反刷的猫鼠游戏,也推高了刷单识别的难度。 以电商为例,一般刷单行为有如下特征:

  1. 小号刷单。谁也不会用自己的注册账号来刷单,这样被封的代价就太大了。 小号的来源,可能是商家自己组织注册的,但大部分还是从专业刷单机构手中获取的。
  2. 使用虚拟机。大部分网站都会为访问设备植入识别码。通过虚拟机,可以在一个物理机上模拟多台机器访问,随用随建。一般使用VMWare来建立虚拟机。而对手机设备,则会采用手机模拟器。
  3. 使用VPN。 这样可以伪装使用全国任何一个地区的IP,甚至可以使用国外的VPN。
  4. 使用手机IP:移动和联通的IP出口少,所以大部分手机端的出口IP并不多。 这些IP是电商的白名单,把某个IP封了,那会有大量的手机无法正常访问。 所以刷单人员会选择使用这些IP。
  5. 刷虚拟物品:虚拟物品不涉及到物流环节,交易流程简单,很容易就可以把量刷上去。
  6. 低价刷单:为了降低成本,往往会将单品价格调低,或者成交金额调低来支持刷单。
  7. 交易商品少:刷单时,仅选择少量几个商品进行。
  8. 互刷: 一些商家会勾结起来,相互刷单。

这些是从刷单行为的角度来分析的结果。看来简单,可对支付系统来说,如何交易记录中识别出小号、互刷、低价等这些特征,都需要使用大量的数据进行分析才能搞定。

四、资金风险

2016年11月份的时候, 网上突然出现了大量怀疑支付宝沉淀资金用途的帖子,这些帖子在有意无意地引导一个观点: 支付宝将沉淀资金用于恒生HOMS系统的场外配资,用户将资金投放到余额宝有巨大资金风险。 毫无疑问,从监管的角度来看,这是不可能的事情。 但这谣传也揭示了支付系统的另一个风险:资金风险。 发展沉淀资金成为支付系统,特别是第三方支付系统的一个公开的秘密。 沉淀资金主要有两种形式:

  • 在途资金 :指买卖双方在确认交易后,完成结算前尚未到达卖方账户的资金。在买方没有最终确认收货之前,资金暂时交由第三方支付进行保管。这样在买卖双 方从开始交易到最终完成货款两清的这段时间差内,这些存在于第三方支付平台内部的资金,被称为在途资金。
  • 留存资金:对采用交易担保型账户的支付机构,客户需要开立虚拟账户来完 成交易。机构也会吸引客户进行充值操作,即留存一些资金用于交易。比如微信支付和支付宝的钱包。 当有交易需求时,可以直接从这里进行扣款。这些留存于虚拟账户中的资金也是沉淀资金的一部分。

沉淀资金对支付来说是必要的, 通过这个资金来帮助买卖双方解决信任的问题,有利于提升用户体验。但这个资金也带来不少风险。2013 年 央行出台了《支付机构客户备付金存管办法》,其中明确要求第三方支付机 构对于客户的备付金要进行严格的区分管理,这一定程度上限制了沉淀资金风险的发生。也就是说,沉淀资金是客户的钱,支付公司不能挪用。支付公司可以获得沉淀资金的利息收益,但是不能够用这个资金来进行投资或者公司内部的消费。对这笔资金进行合理监控避免出现风险,也是支付系统需要考虑的问题。

五、套现风险

我国法律明确禁止使用信用卡套现,使用信用卡套现是违法的。但是在线支付系统中,使用信用卡进行套现,几乎是不需要成本的。 信用卡套现的手段也很多,一般是通过客户和商家的勾结来完成,比如:

  • 虚假购买,客户通过信用卡购买某商品后,商品并未实际发货,商家将购买的款项打回给客户,完成套现。
  • 退货套现:或者通过信用卡来购买商品,然后退货,将退款返回到借记卡或者其他可提现的渠道,也能完成套现。
  • 自买自卖:商家通过信用卡购买自己的商品,将货款打入到借记卡中,完成套现。

上述的套现手段,很难识别。套现很难完全杜绝,除了要求退款资金必须原路返回外,还可以通过数据分析手段来减少发生的频率。

六、操作风险

按照巴塞尔委员会《操作风险管理》的定义, 操作风险主要是指那些由于用户支付终端操作失误、工作人员违规操作、内控机制失灵等人员操作上的原因引致损失的风险,或者说是外部风险、员工风险和流程风险。

流程风险指由公司的规章制度管理、业务流程不完善而引发的风险。对一些支付公司而言,作为新兴的经济形式,不像银行那样有一套成熟、规范的流程以及完善的培训机制,这就容易触发流程风险。在以“快”为特征的互联网公司,功能创新非常重要,但往往也容易忽视了风险管理相关配套制度的建设和落实,从而为线上运行的新功能带来隐患。当新的支付方式上线后,配套的清结算、记账、对账等功能,未必能够及时地跟上,更不用说相关的内控制度建设、岗位人员配备的工作。

员工风险指的是支付机构的员工不遵守职业道德,违法违规或违章操作,单独或参与骗取、盗用机构资产和客户资金,工作疏忽等行为导致的损失。在缺乏成熟培训机制的互联网公司中,这类问题往往更加突出。

  1. 欺诈行为:员工同外部人员相勾结,通过挪用资金、职务侵占等方式非法占有公司财产或者泄露出卖公司商业秘密的行为。
  2. 越权行为:员工未经授权、或超越工作权限导致的损失,比如开发人员私自修改数据库给人送优惠券。
  3. 错误操作:员工在具体业务操作过程中的失误造成的错误操作。

七、合规风险

合规风险指机构因未能遵守相关的法律法规从而导致机构可能受到处罚、声誉受损的风险。从2004年的电子签名法开始,和支付相关的法律法规:

| 发布时间 | 发布机构 | 法律法规 |
| ------- | -------- | -------------------------- |
| 2004.8 | 商务部 | 《中华人民共和国电子签名法》 |
| 2005.4 | 中国电子商务协会 | 《网上交易平台自律规范》 |
| 2005.6 | 中国人民银行 | 《支付清算组织管理办法》 |
| 2005.10 | 中国人民银行 | 《电子支付指引(第一号)》 |
| 2007.3 | 商务部 | 《关于网上交易的指导意见(暂行)》 |
| 2008.4 | 商务部 | 《电子商务模式规范》《网络购物服务规范》 |
| 2009.11 | 商务部 | 《关于加快流通领域电子商务发展的意见》 |
| 2010.9 | 中国人民银行 | 《非金融机构支付服务管理办法实施细则》(征求意见稿) |
| 2011.6 | 中国人民银行 | 《关于规范商业预付卡管理的意见》 |
| 2011.10 | 中国人民银行 | 《支付机构预付卡管理办法》(征求意见稿) |
| 2011.11 | 中国人民银行 | 《支付就够互联网支付业务管理办法》(征求意见稿) |
| 2012.1 | 中国人民银行 | 《支付机构互联网支付业务管理办法》(征求意见稿) |
| 2012.3 | 中国人民银行 | 《支付机构反洗钱和反恐怖融资管理办法》 |
| 2012.6 | 中国人民银行 | 《银行卡收单业务管理办法》(征求意见稿) |
| 2013.6 | 中国人民银行 | 《支付机构客户备付金管存办法》(征求意见稿) |

其中2010年的《非金融机构支付服务管理办法实施细则》是一个标志性的法规,标识国家开始认可第三方支付的地位并开始执行监管。 之后,央行又陆续出台一系列法规来规范支付行业的发展。可以说,支付行业的业务创新,是一个不断地由乱而治的过程。而对支付公司来说,滞后的法规建设,也给业务发展带来了巨大的风险。 2013年支付宝推出互联网理财产品余额宝,在短期内迅速发展成为国内最大的基金。随后多家支付机构也开始开展这个业务,后续央行出台了《支付机构网络支付业务管理办法》,对支付公司的业务范围、资金转移金额进行限制,避免了该业务的过度发展。 2014年央行也相继叫停了虚拟信用卡、二维码支付等业务。合规风险是国内第三方公司一个无法规避的风险,在企业发展过程中,需要密切关注央行的动向,减少合规带来的负面影响。

八、洗钱风险

第三方支付目前成为洗钱的重灾区。 2016年8月,18家支付机构被公安部列为重点整改对象。 这些支付机构提供的服务,存在未落实实名制、风控措施不严格等问题,被犯罪分子所利用,沦为咋骗和洗钱的工具。主要手段包括:通过一些第三方支付平台发行的商户POS机虚构交易套现;将诈骗得手的资金转移到第三方支付平台账户,在线购买游戏点卡、比特币、手机充值卡等物品,再转卖套现;利用第三方支付平台转账功能,将赃款在银行账户和第三方支付平台之间多次切换,使得公安机关无法及时查询资金流向,逃避打击。2012年央行发布的《支付机构反洗钱和反恐怖融资管理办法》,对支付机构如何防范洗钱风险做了明确的规范和要求,需要支付公司严格遵守。

以上是支付系统可能面临的风险分析。支付风控系统是通过采集交易、渠道、商品、账户、用户等信息,对这些数据进行实时和定时的挖掘分析,识别出各种风险,采取各种措施降低损失。

第二章 支付风控数据仓库建设

支付风控系统在数据存储设计上和其它业务不同的地方在于数据获取与使用的流程。一般业务系统会先确定系统数据需求,再设计如何在业务流程中采集数据,以及数据的格式怎么定义。而支付风控面临的是一个无法预知的场景,需要在实践中根据当前运行情况不断调整。它会先把数据采集过来,之后才能从中发现可能存在的问题,并针对该问题制订风控规则。也就是风控是先采集数据,再使用数据。那这就涉及到一个问题,支付系统应该采集哪些数据? 是否是数据越多越好?

风控分析不仅要看交易数据,还得研究所有相关联的数据,这才能全面分析出来风险的根源,推断出需要采取的措施。因而数据采集工作对风控系统建设和演化是非常重要的。本文分析风控所需要的数据,如何采集和存储数据,建立支持风控的数据仓库。

一、数据来源

一笔交易的风险等级的计算需要考虑到多个维度。未成年人购买高档酒、促销期间羊毛客刷单、在洗钱高发地区的商户销售的物品成交价格远超实际价格。这些可疑交易的识别,仅依靠支付系统本身是无法完成的。用户的年龄、商品特点(是否高档酒)、是否促销、羊毛号的识别等,需要从各业务系统,甚至公司外部收集和用户、商品、商家、地区、手机号相关的数据,通过对这些数据进行分析,提取特征,识别潜在的风险。

1.1 内部数据

风控几乎需要收集所有相关系统的数据。

  • 用户系统:采集用户的静态信息,姓名、性别、年龄等。风控系统不仅仅关注这些静态信息,还需要重点关注用户的行为信息,包括注册、密码修改、修改个人信息等操作,需要收集这些操作的时间、地点、设备等信息。 此外,用户之间的关系,也是风控系统需要关注的数据。
  • 商户系统:除了采集机构的基本信息,如成立时间、注册时间、人员规模、营业额、销售额、经营范围、注册地点等, 还需要考虑到该商户关联的用户,包括法人代表、公司组织结构、主要员工信息等。
  • 商品系统:商品的静态信息,包括类型、价格、上架时间、库存等信息; 商品的浏览、放入购物车、购买、评论、退货等用户操作,包括这些操作的时间、地点、设备等信息。
  • 社交数据,包括评论、论坛、留言等。
  • 业务系统,如视频系统中的观影记录、类型偏好、时间、地点、设备等信息。

当然,支付数据是风控最重要基础数据。用户在支付系统中涉及到的数据都需要收集整理来支持风控分析。包括但不限于:账户数据,订单数据,交易数据、优惠券数据、账务流水等。这些数据在支付数据库中也存在,风控所需要的数据和业务数据略有不同,除了业务数据外,风控还关心如下数据:

  • 用户当前上下文环境,包括用户所用设备的类型、操作系统、IP地址、设备ID、所在地等,而这些数据往往并不是业务所关心的。而且记录太多的上下文数据也影响性能。
  • 账户,订单等操作实体的状态。在业务数据库中一般仅保留实体的最终状态,比如账户是否已锁定、订单是否已支付等。 而风控需要关心这些状态变更的时机,以及变更的时间间隔。例如,用户频繁更改交易密码,超正常频率提交订单等,就不是一个正常的状态。

这些数据一般可以从日志中采集。

1.2 外部数据

对于大部分业务单一、用户量不大的公司来说,其数据有限而且单一,需要使用外部数据来辅助完成风控计算。 常用的外部数据包括:

  • 公安部的实名认证数据,包括用户姓名、身份证号信息;
  • 央行发布的各种名单,如洗钱区域,恐怖组织名单等。
  • 央行信用报告,这个查询可是要真金白银的。
  • 微博数据,一个人经常了解如何养卡,套现等内容并不是太好的事情。
  • 工商局提供的公司信息。
  • 招聘网站上的公司招聘信息。公司一直有招聘说明业务还不错。
  • 芝麻信用,这个需要申请。

二、采集方式

一般来说,风控的非实时数据采集,不能直接从线上的数据库中读取,这会把数据库打死。主要的数据采集方式有从库采集,日志采集和pingback三种方式。

2.1 数据库从库

主流数据库,如Hbase,Mysql都提供同步数据进从库的功能,读取从库不会影响主库操作。但如上所述,采用从库有如下问题:

  • 分析所需数据和业务数据不同,还需要从其他途径补充数据。
  • 将风控所需数据和业务数据紧耦合起来了。一旦业务有变更,风控系统也需要调整。

2.2 日志

这是风控数据采集的主要方式。 业务方可以将风控所需要的数据输出到日志中,风控系统对接日志来异步采集数据。这使得数据采集不会影响业务处理主流程。 这种方式风险在于:

  • 需要规范日志的格式,否则每个系统一套日志格式,会导致对接工作量巨大。
  • 保持日志的稳定性。一旦代码被修改,打印日志的代码被删除了,会导致日志数据无法采集的风险。
  • 需要注意日志采集系统的可靠性。目前主流的采集框架都有可能会丢失日志。虽然从我们使用的情况来还未发生这种事情,但不排除这个风险。

从技术上来说,日志采集的框架主要框架有

  • ELK(Elastic + Logstash + Kibana), Logstash 驻留在日志输出端采集日志,并发送到Elastic 服务器上。 Kibana则是一个日志分析的工具;
  • Flume + Kafka + Elastic 。 通过Flume进行采集,输出到Kafka,汇总到Elastic进行存储。日志分析可以在Elastic上离线非实时进行,也可以直接对接Kafka准实时分析,即流处理。 使用Storm 或者Spark都可以。

2.3 pingback

Pingback指在页面上埋入脚本来监测用户的操作,特别是点击操作和键盘操作,将检测到的用户行为异步发送到服务器端。这可以侦测到用户在页面停留时间,鼠标点击的区域等信息,由此可以推断用户偏好,情绪等信息。 pingback的挑战在于如何在服务器端应对流量洪峰。pingback数据一般不直接入库,可以先写入Kafka,风控系统对接Kafka来分析pingback数据。

三、数据特征

用于支持风控计算的最终数据,在静态与动态数据为基础计算出来的带置信度的推算数据为主的离散数据,有点绕口,我们详细分析下这里涉及到的几个概念,来说明最终用来支持风控计算的数据有什么特征。

3.1 静态数据与动态数据

上述采集到的数据,大部分是静态数据。也就是这些数据一旦产生,一般不会被修改。但在分析时,还需要一些易变的动态数据来,比如用户的 年龄,每天的访问量,每天消费金额等。

3.2 原始数据与推算数据

不管静态还是动态数据,他们都是从用户输入或者系统采集的方式产生。但我们知道,互联网的数据可靠性是有问题的。网上千娇百媚的姑娘,在现实中可能是一位抠脚大汉。虽然系统中设计了复杂的表格来收集用户信息,但会提供全部信息的用户还是很少,大家对隐私内容还是捂得很紧。所以,在进行风险计算前,还需要对数据进行验证和补充。这都需要借助其他数据来进行推算,这些数据被称为推算数据。推算数据和原始数据不同之处在于它会有多个可能取值,每个值都带有置信度。完全可信为100%,不可信为0。置信度总和为1。比如正常情况下,用户的性别要么男,要么女。假如有个用户注册时选择性别女,但经常买刮胡刀,衬衣,没有买过女性用品,那实际性别为男的置信度就非常高。

3.3 离散数据与连续数据

这是从属性值的取值范围来评估。比如用户每天的订单额,一般来说是连续分布的。而性别,职业,爱好等,是离散值。一般来说,离散值更容易做分析处理,刻画特征,所以在分析前,需要对连续数值做离散化处理。

四、名单数据

名单数据是支付风控数据仓库中最重要的内容。 风控系统数据仓库建设,也一般都从名单数据开始。 名单加上简单的拦截规则,已经可以解决绝大部分风控的问题。就算在更先进的风控系统中,名单仍然是风控中的基础数据。在评估事件风险时,名单往往是用来执行第一道拦截时所用的数据。比如用户交易时使用的手机是黑名单中的手机,则必须终止本次交易。

4.1 黑白灰名单

大家都熟知黑名单与白名单,一个是必须阻止,一个是必须放行。 除此之外,还有灰名单。灰名单用于对一些高风险的用户进行监控。 这些用户的行为不是直接阻止,而是延迟交易,经人工确认无问题后再放行。

4.2 更新周期

相对其它数据来说,名单数据的更新频率不高,按天、周、月更新都有,很少有需要实时更新的内容。对于手机号,证件号等名单,一般可以采取人工更新的策略。每天评估风控数据,对确认有问题的号码,加入到黑名单中。如果采用的是第三方名单,则需要按照第三方的要求对名单做更新。

4.3 名单列表

一般来说,风控系统需要配置的名单列表有:

个人名单,如下名单是必备的(后续会及时更新),央行的反洗钱恐怖分子名单;公安部的通缉犯名单;全国法院失信被执行人名单信息公布与查询

IP名单,没有权威的IP名单。这需要在运行中积累。建立IP名单需要注意如下事项:公司内部IP,合作伙伴IP可以列入白名单列表;手机运营商的IP也要做到白名单中,封一个IP等于封掉一大批手机号;代理服务器可以列入灰名单;访问量大的IP也可能大公司的外网IP,不能仅依赖访问量来识别黑IP。

公司名单,必备名单包括央行反洗钱制裁公司名单和工商局失信企业名单

手机号名单,这也没有权威数据,电信运营商也不会提供此类服务。支付宝正在推广这个服务,但还没有公开。黑名单数据需要自主收集。

地域名单,央行公布的联合国反洗钱地区名单是必须在风控时考虑的名单,其他地域名单也需要自主收集。

协查名单, 公检法协查名单,接收到协查请求后,将人员全部信息拉黑。

4.4 名单数据存储

名单数据在使用上的特点:

  • 使用频率高,实时性要求高。各种名单匹配基本都需要在线上做实时计算。
  • 数据粒度小,总量大小不一,但存储空间需求都不高。大部分名单都是一些号码表,几个G的空间都能存储。
  • 更新频率低。名单数据一般都比较稳定,按天更新

在使用中,名单数据一般直接存储在内存中,或者使用内存数据库(Redis,Couchbase)。关系型数据库可以用来保存名单数据,但不会直接被线上应用所访问,它无法满足高访问量的需求。

五、画像数据

名单数据能够快速发现用户在某个维度上的异常行为。在实际使用中,存在过于简单粗暴,一刀切的问题。比如如果限制单次购买金额为5000元,这个规则被试探出来后,攻击者会选择4999元来规避这个限制。画像技术则是尝试从多个维度来评估当前事件的风险。 比如画像刻画某用户平时主要在北京地区登录,购买习惯在10~300元之间。某一天突然发生一笔在东莞的4999元额度的消费,那这笔交易就非常可疑了。而这种交易通过规则比较难发现出来。 支付风控涉及的画像包括用户、设备、商品、地域、操作行为等。 这里重点介绍用户、设备和商品的画像。

5.1 用户画像(persona)

用户画像是从用户的角度来刻画其背景和行为习惯,为判定某交易的风险等级提供支持。 用户画像的内容包括但不限于:

  • 人口信息:一般就叫基本信息,主要包括:姓名、性别、出生日期、出生地、民族、星座等。
  • 联系方式:家庭地址、工作地址、手机、固定电话、紧急联系人、QQ、微信号等。
  • 资产特征:月工资、年收入、工资外收入、房产、车等
  • 家庭特征:婚姻状况、是否有小孩、小孩关联、家庭成员等
  • 交易偏好:交易频率(总计、年、月、日)、交易金额(总计、年、月、日)、常用账户、交易时间偏好、交易地点偏好、交易所使用设备、交易物品、交易物品所属类别等。
  • 行为特征,这是和业务相关的特征。比如对于电商,关注 用户浏览的物品、浏览的物品类别、购买的物品等。而对于视频网站,则关注用户查看的视频、观影时长、类别偏好、观影地点偏好等信息。

对于已登录用户,可以使用用户ID来识别并做画像,但对未登录用户,系统需要通过设备来识别。

5.2 设备画像

一个用户配备多台智能设备已经是很常见的事情了。手机,PAD,笔记本,台式机,都是常用的设备。用户在不同的设备上的行为往往是不一样的。有人偏好在电脑上寻找要购买的商品,却最终使用手机来下单,因为手机支付更便捷。 对设备进行画像,和用户画像类似,实际上是刻画使用设备的用户的特征。 此外,对于未登录用户,由于无法标识,也只能通过设备来代表这个用户。设备画像关注如下信息:

  • 设备信息,包括设备类型、型号、屏幕大小、内存大小、CPU类型、购买时间、购买时价格、现在价格等。
  • 交易偏好,同用户画像;
  • 行为特征,同用户画像。

对设备画像来说,生成一个能唯一识别该设备的标识,即设备指纹,是数据采集中的一个挑战。设备指纹具有如下特点

  • 唯一性,每台机器的指纹都不同,不能重复。
  • 一致性,机器指纹在一台机器上是唯一的,不同应用,不同登录用户中取到的指纹都是一样的。
  • 稳定性,指纹不会随时间变更,不会由于外围设备变更而变更。重装应用,重装操作系统也应该保持不变。

我们将在专门的主题中介绍如何生成设备指纹。

5.3 商品画像

商品画像是从商品的角度来刻画购买或者拥有该商品的人的特性。

  • 基本特征:名称,价格,类别,是否虚拟资产,上架时间,下架时间等
  • 促销信息:价格,开始时间,截止时间
  • 购买者特征:偏离这个特征越多,风险越大。购买时间分布,地点分布,价格分布,数量分布,年龄分布,性别分布等。

5.4 画像数据存储

画像数据有如下特点:

  • 数据粒度大。一个用户的画像数据,成百上千个维度都正常。
  • 大部分数据都是推算数据,也就是数据格式是带置信度的,比如 {性别: 男,80%;女,20%};
  • 每个维度的数据一般最终都需要离散化,比如年龄,虽然0~150的取值区间还不算稀疏,一般还会将年龄再分段。
  • 数据量大。考虑到匿名用户和设备,上千万规模的注册用户,匿名用户和设备会在数十亿规模的量级。
  • 数据结构不稳定。 根据业务需要会频繁添加新的数据维度,甚至添加新实体进来。
  • 数据更新频繁。采用推算数据,每天不仅仅要计算新增数据,也需要重新计算现有数据的维度权重。
  • 数据访问频率高。交易时计算权重,也需要使用画像数据。

很难有一个数据库能够同时满足上述的需求。画像数据存储需要综合采用多种数据库来满足不同应用上的需求。

  • 数据写入库, 需要支持数据批量、快速地写入,Hbase是个不错的选择。
  • 数据读取库,需要支持数据高速读取, couchbase可以满足这个需求。但couchbase不能存储所有数据,这样成本太高。 可以把couchbase作为HBase的缓存来使用。
  • 写库和读库之间的数据同步。可以根据业务量选取合适的消息队列。每天更新的数据规模在百万及其以下,ActiveMQ可以满足需求;而上千万的数据,则需要使用Kafka。

六、知识图谱

画像是从群体和个体的统计角度评估事件的风险,而图谱则更进一步,从关系的角度来评估风险。 知识图谱是由Google提出来并应用到搜索引擎上,其后在多个领域都得到很好的应用。 交易是一种社会行为,所以从关系的角度来评估这个行为,能够更精确的了解行为中存在的风险。一个简单的例子,如果发现A是高风险的用户,而通过社交图谱分析,发现A经常和B有交易关系, 那B的风险等级也相应地会被调高。

图谱在本质上是一个语义网络, 是一种基于图的数据结构, 它由点和边组成的。点代表一个实体,如人、公司、电话、商品、地址等,边代表实体之间的关系。

img

如上所示, 如果A和B两人之间是夫妻关系, 则在图中, A和B分别被用一个节点来标识, 称为实体,他们的关系是 is_wife_of。对电话、出生日期、出生地点、公司等,也可以使用这种方式来表示。 图谱的表达能力,不仅在于描述实体之间的关系,而且通过关系还可以推理出潜在的进一步关系。 比如A是B的母亲, A是C的妻子, 则有很大的概率可以推断出来C是B的父亲。 支付风控需要像建立画像一样建立图谱,需要支持包括人,机构,地区,日期,电话,手机号,设备,商品等实体,以及实体之间的关系。图谱数据源也是和画像一样。此外,还有一些互联网数据也有利于建立图谱 百度百科,有很不错的公司,明星,电影,音乐等信息,一般仅限于国内或者中文版本的资料。由于编审并不严谨,数据质量不高。 wiki,有各种语言的版本,提供各种领域的实体,参与的专业人士多,质量较高。 各专业数据库,

知识图谱是基于图的数据结构,它的存储主要是使用图数据库。关系型数据库和Hbase等nosql数据库在处理图的关系以及关系计算上性能较差,需要专用的图数据库,当前主要的图数据库有neo4j,Titan,Jena等。neo4j是使用最多的图数据库,而且可以和spark graph集成,方便对图谱数据做处理。

第三章 支付风控模型分析

支付风控涉及到多方面的内容,包括反洗钱、反欺诈、客户风险等级分类管理等。 其中最核心的功能在于对实时交易进行风险评估,或者说是欺诈检测。如果这个交易的风险太高,则会执行拦截。由于反欺诈检测是在交易时实时进行的,在要求不能误拦截的同时,还有用户体验上的要求,即不能占用太多时间,一般要求风控操作必须控制在100ms以内,对于交易量大的业务,10ms甚至更低的性能要求都是必须的。 这就需要对风控模型进行合理的设计。一般来说,要提升风控的拦截效率,就需要考虑更多的维度,但这也会带来计算性能的下降。在效率和性能之间需要进行平衡。

本文重在介绍建立风控模型的方法,每个公司应该根据自己的实际业务情况和开发能力来选择合适的模型。这里列出来的模型仅为了说明问题,提供参考。

一、风险等级

做风控拦截,首先要回答的问题是风险等级怎么划分? 目前主流的风险等级划分有三种方式, 三等级、四等级、五等级。

  • 三等级的风险分为 低风险、中风险和高风险。 大部分交易是低风险的,不需要拦截直接放行。 中风险的交易是需要进行增强验证,确认是本人操作后放行。 高风险的交易则直接拦截。
  • 四风险等级,会增加一个中高风险等级。此类交易在用户完成增强验证后,还需要管理人员人工核实,核实没问题后,交易才能放行。
  • 五风险等级,会增加一个中低风险等级。此类交易是先放行,但是管理人员需要进行事后核实。 如果核实有问题,通过人工方式执行退款,或者提升该用户的风险等级。

img

大部分支付系统是使用三等级的风险。

二、基于规则的风控

规则是最常用的,也是相对来说比较容易上手的风控模型。从现实情况中总结出一些经验,结合名单数据,制定风控规则,简单,有效。 常见的规则有:

名单规则

使用白名单或者黑名单来设置规则。具体名单如上文所述,包括用户ID、IP地址、设备ID、地区、公检法协查等。 比如:

  1. 用户ID是在风控黑名单中。
  2. 用户身份证号在反洗钱黑名单中。
  3. 用户身份证号在公检法协查名单中。
  4. 用户所使用的手机号在羊毛号名单列表中。
  5. 转账用户所在地区是联合国反洗钱风险警示地区。

操作规则

对支付、提现、充值的频率按照用户账号、IP、设备等进行限制,一旦超出阈值,则提升风控等级。

  1. 频率需综合考虑(五)分钟、(一)小时、(一)天、(一)周等维度的数据。由于一般计算频率是按照自然时间段来进行的,所以如果用户的操作是跨时间段的,则会出现频率限制失效的情况。 当然,比较复杂的可以用滑窗来做。
  2. 对不同的风险等级设置不同的阈值。 比如:
  3. 用户提现频次5分钟不能超过2次, 一小时不能超过5次,一天不能超过10次。
  4. 用户提现额度一天不能超过1万。
  5. 用户支付频次5分钟不能超过2次,一小时不能超过10次,一天不能超过100次。

业务规则

和特定各业务相关的一些规则,比如:

  1. 同一个人绑定银行卡张数超过10张。
  2. 同一张银行卡被超过5个人绑定。
  3. 同一个手机号被5个人绑定。
  4. 一个周内手机号变更超过4次。
  5. 同一个对私银行卡接受转账次数一分钟超过5次。

行为异常

用户行为和以前的表现不一致,比如:

  1. 用户支付地点与常用登录地点不一致
  2. 用户支付使用个IP与常用IP地址不一致
  3. 用户在短时间内,上一次支付的地址和本次支付的地址距离非常远。 比如2分钟前在中国支付的,2分钟后跑到美国去支付了。

风控拦截历史规则

用户在某个业务上的消费行为被风控网关多次拦截。

规则引擎优点:

  1. 性能高: 对订单按照规则进行匹配,输出结果。一般不会涉及到复杂的计算。
  2. 易于理解和分析: 交易被拦截到底是触犯了那条规则,很容易输出。
  3. 开发相对简单。

规则引擎存在的问题:

  1. 一刀切,容易被薅羊毛的人嗅探到。比如规则规定超过5000元就进行拦截,那羊毛号会把订单拆分成4999元来做。 一天限制10笔,那就薅到9笔就停手了。
  2. 规则冲突问题。当一笔交易命中IP白名单和额度黑名单的时候应该如何处理?

规则引擎看起来简单,但也是最实用的一类模型。 它是其它风控模型的基础。实践中,首先使用已知的规则来发现存在问题的交易,人工识别交易的风险等级后,把这些交易作为其它有监督学习的训练数据集。

三、决策树模型

风险评估从本质上来说是一个数据分类问题。 和传统的金融行业风险评估不一样的地方,在于数据规模大、业务变化快、实时要求高。一旦有漏洞被发现,会对公司造成巨大损失。 而机器学习是解决这些问题的利器。 互联网金融风控离不开机器学习,特别是支付风控。 在各种支付风控模型中,决策树模式是相对比较简单易用的模型。 如下的决策树模型,我们根据已有的数据,分析数据特征,构建出一颗决策树。当有一笔交易发生时,我们使用决策树来判断这笔交易是否是高风险交易。img这种模型的优点是非常容易理解,检测速度快。 因而也是现有机构中常用的模型之一。 风控模型存在的主要问题是其产生的结果比较粗略。同样的两个交易被判定为高风险,究竟哪种交易风险更高,决策树模型无法给出答案。

四、评分模型

比决策树模型更进一步,现在也有不少公司在使用评分(卡)模型。 银行在处理信用风险评级、反洗钱风险等级时,往往也是使用这种方法。

每个公司的模型都不一样,一个参考模型如下:img

该模型为参考《金融机构洗钱和恐怖融资风险评估及客户分类管理指引》编制,仅具参考意义。虽然银行间的评分模型有很好的参考价值,但互联网公司由于业务和数据的不同,评分模型参考价值不大。

每个公司需根据自己的业务情况来制定评分模型,之后为各个指标指定权重比例。 权重评分结果为0~100分的区间,之后按照区间划分,指定风险等级。比如:
img

当然,评分区间也需要根据企业的实际情况来制定。 评分模型的优势在于:

  1. 性能比较高,针对交易进行指标计算,按照区间来确定风险。
  2. 相对于规则,如果指标设置合理,其覆盖度高, 不容易被嗅探到漏洞。
  3. 理解和分析也比较容易。 如果交易被拦截了,可以根据其各项打分评估其被拦截的原因。

存在的问题:

  1. 模型真的很难建立。指标的选择是一个挑战。
  2. 各个参数的调优是一个长期的过程。

我们知道从一条交易记录中可以挖掘的关联数据有上百个,衍生数据就更多了。比如从支付地址,可以聚类出常用地址,衍生出当前地址和常用地址、上一次支付地址之间的距离,而这些指标在构建模型时都可能使用到。 所以第一个问题是,如何从这些指标中建立一个合适的模型?这就涉及到机器学习的问题了。 模型不能凭空建立,我们可以通过规则来对现有数据进行筛选和标注,确定这些记录集的风险等级。 这些数据作为样本来训练模型。可用的算法包括Apriori、FP-growth等。算法实现请参考相关文档。

在确认相关参数后,模型在使用过程中还需要不断对相关参数进行调整。这是一个拟合或者回归的算法,Logistic算法、CART算法,可以用来对参数做调优。

总之,模型的建立是一个不断学习、优化的过程。 而每一个模型的发布,还需要进行试运行,AB测试和上线。 这个过程,将在下一篇的风控架构中介绍。

五、模型评估

风控本质上是对交易记录的一个分类,所以对风控模型的评估,除了性能外,还需要评估“查全率”和“查准率”。 如下图所示:

img

以评估高风险人群的效果为例,

  • Precision, 准确率,也叫查准率,指模型发现的真实的高风险人数占模型发现的所有高风险人数的比例。
  • Recall,召回率,也叫查全率,指模型发现的真实的高风险人数占全部真实的高风险人数的比例。

理想情况下,我们希望这两个指标都要高。实际上,往往是互斥的,准确率高、召回率就低,召回率低、准确率高。如果两者都低,那就是模型不靠谱了。 对于风控来说,需要在保证准确率的情况下,尽量提高召回率。 那怎么发现实际的高风险人数呢? 这就需要借助规则模型,先过滤一遍,再从中人工遴选。

从实际应用情况来看,目前国内大部分团队使用Logistic回归+评分模型来做风控,少数人使用决策树。国外的PayPal是支付平台风控的标杆,国内前海征信、蚂蚁金服等会使用到更高级的神经网络和机器学习,但实际效果未见到实证材料。

第四章 支付系统整体架构

每个公司根据其业务和公司发展的不同阶段,所设计的支付系统也会有所不同。我们先看看互联网公司的一些典型的支付系统架构。

支付宝
先看看业内最强的支付宝系统,支付宝的支付系统整体架构设计img这个整体架构上并没有与众不同之处。在模块划分上,这个图显示的是最顶层的划分,也无法告知更多细节。 但支付宝架构强点在两个方面,一个是账务处理,分为内外两个子系统,外部子系统是单边账,内部子系统走复式记账。 不少支付平台是从这里得到启发来搞定的对账系统。imgimg另一个亮点是柔性事务处理,利用消息机制来实现跨系统的事务处理,避免数据库锁导致的性能问题。

京东金融
来自京东支付平台总体架构设计img京东金融是在网银在线的基础上发展起来的。 网银在线的原班技术人员有不少来自易宝公司,在京东收购之后,又引入了支付宝的人才。因而从架构上受这两个公司的影响很大。

去哪儿
来自去哪儿公司分享的支付产品架构img

美团
来自美团的支付平台规划架构 。这是2015年的文档。 2016年美团才拿到支付牌照。 从这个架构,大家也能知道为什么美团必须拿到支付牌照。img

这些架构文档全部来自互联网公开资料。 对于架构是否真实反映实际系统情况,需要大家自行判断。 我们以这些文档为基础,分析支付系统的应有的软件架构。

一、参考架构

一般来说,支付系统典型架构会包含如下模块:img

支付系统从架构上来说,分为三层;

  1. 支撑层: 用来支持核心系统的基础软件包和基础设施, 包括运维监控系统、日志分析系统等。
  2. 核心层: 支付系统的核心模块,内部又分为两个部分: 支付核心模块以及支付服务模块。
  3. 产品层: 通过核心层提供的服务组合起来,对最终用户、商户、运营管理人员提供的系统。

二、支撑系统

支撑系统是一个公司提供给支付系统运行的基础设施。 主要包括如下子系统:

  1. 运维监控: 支付系统在下运行过程中不可避免的会受到各种内部和外部的干扰,光纤被挖断、黑客攻击、数据库被误删、上线系统中有bug等等,运维人员必须在第一时间内对这些意外事件作出响应,又不能够一天24小时盯着。这就需要一个运维监控系统来协助完成。
  2. 日志分析: 日志是支付系统统计分析、运维监控的重要依据。公司需要提供基础设施来支持日志统一收集和分析。
  3. 短信平台: 短信在支付系统中有重要作用: 身份验证、安全登录、找回密码、以及报警监控,都需要短信的支持。
  4. 安全机制: 安全是支付的生命线。 SSL、证书系统、防刷接口等,都是支付的必要设施。
  5. 统计报表: 支付数据的可视化展示,是公司进行决策的基础。

远程连接管理、分布式计算、消息机制、全文检索、文件传输、数据存储、机器学习等,都是构建大型系统所必须的基础软件,这里不再一一详细介绍。

三、支付核心系统

支付核心系统指用户执行支付的核心流程,包括:

  1. 用户从支付应用启动支付流程。
  2. 支付应用根据应用和用户选择的支付工具来调用对应的支付产品来执行支付。
  3. 支付路由根据支付工具、渠道费率、接口稳定性等因素选择合适的支付渠道来落地支付。
  4. 支付渠道调用银行、第三方支付等渠道提供的接口来执行支付操作,最终落地资金转移。

四、支付服务系统

支持支付核心系统所提供的功能。服务系统又分为基础服务系统、资金系统、风控和信用系统。

基础服务系统提供支撑线上支付系统运行的基础业务功能:

  1. 客户信息管理:包括对用户、商户的实名身份、基本信息、协议的管理;
  2. 卡券管理: 对优惠券、代金券、折扣券的制作、发放、使用流程的管理;
  3. 支付通道管理: 通道接口、配置参数、费用、限额以及QOS的管理;
  4. 账户和账务系统: 管理账户信息以及交易流水、记账凭证等。这里的账务一般指对接线上系统的账务,采用单边账的记账方式。 内部账记录在会计核算系统中。
  5. 订单系统: 一般订单系统可以独立于业务系统来实现的。这里的订单,主要指支付订单。

资金系统指围绕财务会计而产生的后台资金核实、调度和管理的系统,包括:

  1. 会计核算: 提供会计科目、内部账务、试算平衡、日切、流水登记、核算和归档的功能。
  2. 资金管理: 管理公司在各个支付渠道的头寸,在余额不足时进行打款。 对第三方支付公司,还需要对备付金进行管理。
  3. 清算分润: 对于有分润需求的业务,还需要提供清分清算、对账处理和计费分润功能。

风控系统是支付系统必备的基础功能,所有的支付行为必须做风险评估并采取对应的措施;信用系统是在风控基础上发展的高级功能,京东的白条,蚂蚁花呗等,都是成功的案例。

五、支付应用

支撑系统、核心系统和服务系统,在每个公司的架构上应该是大同小异的,都是必不可少的模块。而支付应用是每个公司根据自己的业务来构建的,各不相同。 总的来说,可以按照使用对象分为针对最终用户的应用、针对商户的应用、针对运营人员的运营管理、BI和风控后台。

标签: none

相关文章推荐

暂无评论

  1. Whoa loads of awesome advice.

    writeaessay 回复

添加新评论,含*的栏目为必填