浅谈如何建立互联网风控系统

弹指间,一起创业已有大半年。这大半年间,累与成果并存,痛并快乐着,这自不用多提,应该是这一行从业者的普遍感受了。现在每每反思以往,总结不足,其中一条就是技术团队过于封闭,闷着头干活,发声不足,既不利于引入别人的好的经验,也没法将自身的成果拿出去接受批判,这其实与我们的技术宗旨是不符合的,还是需要挤出时间往外看,向外喊。


本文将会是岂安科技技术团队的抛砖石,来引出小伙伴的总结分享,更重要的是能得到外界的批评指正,帮我们出谋划策。这一篇将没什么干货,只是从我的角度对一些风险相关的概念进行通俗化的阐述,希望能讲明我们想要针对的问题是什么,我们的定位在哪里,技术的角度看需要去做什么,为什么要这么做,我们跟巨头的差别在哪里。



什么是风险


笔者学术时代的老板是作可信计算的,当年的课题便是信任与风险,所以恰巧也算是国内较早在计算机领域对风险一块有所涉猎的人之一,当时最头痛的是,虽然很多人在这些方向都有相关的学术工作,但是对“信任”和”风险“这两个模糊的概念,从来就没有清晰公认的定义,大家都是自说自话,概念上都是迁就自己的工作,对信任和风险都有着自己的见解,以至于光综述里总结的定义就有上百种。


现在,工业界也出现了类似的情况,电商已经烧了好些年头,互联网金融最近也大火,征信风控的字眼更是随处可见,几番交道打下来,大家基本上还是在风险之上谈风险,很少对其本身去作过多的定义和阐述,具体手段也限于传统金融业经验往线上的照搬,或者是具体漏洞的补缺,有些像手里拿着把箭在扫射。我依然执拗以为,一定要先说清楚自己面对的问题是什么,才能更加的明白自己在做什么,做起事来才能有的放矢,不至于陷入被动的攻防战。


废话一箩筐,直接给出我个人比较认可的通俗定义,来方便阐述本文后续的概念:




风险 = probability + outcome 




这是我看到的一种比较全面的解释。很多人认为风险是带来损失的概率,也有很多人觉得风险就是最终带来的损失;就好像很多人认为坐汽车风险高(因为车祸几率高),另一部分人觉得飞机更危险(基本就是挂了),大家的侧重点不同。


作为风险相关的从业者,个人认为两者都需要考虑,所以和很多人一样,直接做了加法,既包含可能性,也包含潜在的损失。



什么是风控


风险本身只是人对客观事实的一个评估,重要的是如何去计算它,之后又如何去用来帮我们实现利益的最大化,这里给一张简单抽象的图来描述所谓的风控逻辑上是一个什么样的流程:


这里面对信任的定义是当年从哲学论文里面摘出来的,算是相对靠谱的定义:


Trust = knowledge (weak) reduction


简要的介绍:

所谓的信任,就是利用一切可以用的知识(通俗常称为证据,或者情报等),进行一定的归纳。


这些知识包括:



  • 一些常规的检查工作,主要是做一些身份识别,合规的工作。这种是最常见的


  • 社交信息,主要是一些关联信息,可以通过交易、ip、手机号能找到一批其他个体的信息,可以有效的帮助判断


  • 历史行为,被评估者的历史行为有着极为重要的作用


  • 上下文,当前交易/活动的具体特征,对当下的判断非常重要


  • 其他信息




事实上,要做信任判断还需要很多其他额外的知识。只是越多越准确,那么所谓的uncertainty就越小,后续的决策才会越准确。


现在一般传统的就是作一些合规操作,时髦一点的就是在历史行为和社交信息这一块大做文章,来弥补传统方式信息量的不足,还可以标榜“大数据”,我们岂安科技也属于后者。


所谓的风险决策,就是利用收集的信任信息,对所有可能的结果做一个损失(损失是基本客观存在的)和概率(主要靠信任信息来推断)的判断,最终形成一个风险轮廓,来方便决策后续的就好办了。


有了具体的风险轮廓,根据企业的风险承受能力和商业模式作指引,就可以做出相应的决策了。一般而言,如果需要降低风险,需要采取措施去降低风险,或者是损失。


以现在流行的p2p举例,要么是让借贷人提供更多的材料去证明他违约的概率比较小;要么是平台会收取一定比例的担保费用,来减少违约带来的损失。



现在的风控系统是啥样的


对风控的描述比较空泛,只是给出逻辑概念。目前大多数的企业和机构应该都是这么干的,只是有的干得比较好,有的干的更好而已:


  • 成熟度。大型、新型的企业会有一整套风控框架,里面相关的人数量和角色也多,比较成熟;小公司往往投入不足,做法也山寨。


  • 量化能力。小一点的企业往往只能作到定性分析,就事论事,最后主要靠拍脑袋。牛一点的可以做到定量分析,这样能有个科学的定义和计算模型,才能脑袋拍得轻些。


  • 持久性。小一点的企业往往只做当前的case;大一点的公司整个流程是持续迭代的,而且是正反馈的,这样它整个风控模型就能不断修正和完善。


至于如何去做一套完善的风控系统,这个领域已经有大量的投入和专家,可以去参考借鉴。我个人的资历比较有限,只能提供两个参考:


1 如果想从流程上去改善

如果你对类似CMM这样的成熟度模型感兴趣,不放参考Octave(Operationally Critical Threat,Asset,and Vulnerability Evaluation),这同样是CMU的SEI推出的,目的是提出缓解企业信息安全风险的方法论,它本身不是一套计算机系统,但在流程、理念、逻辑结构、方法论上能有比较好的启发。



2 如果想建一套完善的计算模型

可以参考paypal的架构。paypal应该是互联网内风控玩的最早最成熟的公司,笔者也有幸成为其国内的第一批开发,学习到很多。这个公司的商业模式就是建立在风控上,所以投入也大,虽然就技术上而言非常保守,但其整体框架绝对值得一提,

如图:




 

上图是我以前画过的我印象中P公司是如何处理risk的(依然是简单概念图):


  • 最大的投入是通过运营作人工分析,一方面可以更细致更准确的去处理各种高风险交易;另一方面在于找到了很多新的攻击,人工标注产生了很多样本,这点是最关键的。


  • 大量的分析师通过数据仓库去做模型、做规则。最早的时候还没有hadoop,他们靠商业的teradata来作这件事,算是先驱了。大部分模型、规则也简单,顶多是logistic regression,胜在数据量大,以及庞大的ops团队支撑。


  • 相当数量的开发人员,去开发模型需要的数据,从数据库里面计算出来,形成统一的变量接口,然后线上的系统就是在不停的跑了。


  • 整个过程是循环的,在线系统标注的高危交易会被继续人工分析,然后成为新一轮的素材来实现整套风控系统的不断演化和改进(Ocatave也是提出了类似这种迭代的模型)。


  • 开发、ops、分析师三个角色明确分工,有机结合在一起。这是目前国内大部分公司是很缺乏的。


整套系统里面每一块都比较保守,有各自固有的问题,但胜在整个框架很好。体制的优势决定了其依然是现存的最成功的风控系统,岂安科技的两大系统(Warden和red.Q)也都是受此影响很多。


然而,以上只是描述了一个有钱公司的成熟系统是啥样的,现实世界中,只有极少数公司能做到这个程度。很多公司(尤其是中小型互联网公司)是这样干的:



 

系统的脆弱点比较多,尤其是业务搬迁到互联网后,暴露点增多。各种漏洞(技术上的和业务上的)层出不穷,黑产业的日益发达也带来了更多的影响。


  • 资源较少。一些金融相关的可能还好,大部分公司对此投入不足,忙不过来。

  • 可利用的现成的技术少。风控通常是比较复杂和昂贵的,只有大公司用的起,小公司投入不起,往往就是穿个裤衩就要面对各种攻击了。


上述几点造成,大部分公司根本没能力去做详尽的数据收集和量化计算,也就很难有个成熟的风控模型或是系统去应对互联网上频繁出现的攻击,最终就变成了打地鼠模式:



  • 每当恶意(带来损失)的事件发生,被动的去应对,而且只能作事后处理


  • 每次事件的处理只能作就事论事的防范。这次一锤子不能帮你打下一锤子


  • 量化能力上还是比较难对风险作定量分析,关注的指标只能是命中率(打中多少衰神加分)和误杀率(打中多少福神扣分)


  • 当带来风险的主体比较难区分,伪装的比较好的时候,这锤子就敲不下去了。比如现在一大危害羊毛党,很难和正常用户区分开来,造成无法防范


  • 当风险攻击来得异常频繁和快速,锤子也来不及敲。最近短信轰炸的攻击行为忽然冒起,没有健壮的风控系统保护,只能素手无策





这个就是我们感受到的骨感的现实。


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文根据“第八届中国系统架构师大会”演讲内容整理而成。 背景 美团最初以团购的形式出现,到现在有了很大的业务形态转变。尤其是经过与大众点评的业务融合,从单一业务发展成了覆盖到店餐饮、到店综合、猫眼、外卖、酒店、旅游等多个垂直领域的综合性电商,并且在各个领域都处于行业领先的地位。在这背后,美团点评不仅面临激烈的行业竞争,还有黑色产业(以下简称“黑产”)带来的各种风险,因为我们的业务有这样一些特点: • 品类多、覆盖面广:包括几乎所有吃喝玩乐服务,其中不乏容易被销赃的品类。 • 用户多、商户多:美团点评拥有6亿以上用户,400万以上合作商家,覆盖了很大部分国内网民和商户。 • 交易高频:每日订单峰值突破千万。 美团点评对黑产有着巨大的吸引力,归纳起来在这些方面尤其突出: • 用户作弊:大家常说的“薅羊毛”,用户为了骗取促销优惠的作弊行为。 • 商家刷单:常见的有刷排名、刷销量、刷好评等违反商家平台协议的行为。 • 账户和支付安全:公民信息盗用形势已经十分严峻,黑产从业者会在电商平台上盗取用户的余额,或使用他人支付信息来消费。 这些行为严重侵害平台用户和商户的利益、扰乱正常交易秩序,处理结果的好坏将决定整个业务的成败。所以美团点评需要一套灵活高效的风险控制系统和工作机制来防控这些风险。
背景 当前互联网企业存在很多业务风险,有些风险(比如薅羊毛)虽然没有sql注入漏洞利用来的直接,但是一直被羊毛党、刷单党光顾的企业长期生存下来的几率会很低! 账号:垃圾注册、撞库、盗号等 交易:盗刷、恶意占用资源、篡改交易金额等 活动:薅羊毛 短信:短信轰炸 项目介绍 实时业务风控系统是分析风险事件,根据场景动态调整规则,实现自动精准预警风险的系统。 本项目只提供实时风控系统框架基础和代码模板。 需要解决的问题 哪些是风险事件,注册、登录、交易、活动等事件,需要业务埋点配合提供实时数据接入 什么样的事件是有风险的,风险分析需要用到统计学,对异常用户的历史数据做统计分析,找出异于正常用户的特征 实时性,风险事件的分析必须毫秒级响应,有些场景下需要尽快拦截,能够给用户止损挽回损失 低误报,这需要人工风控经验,对各种场景风险阈值和评分的设置,需要长期不断的调整,所以灵活的规则引擎是很重要的 支持对历史数据的回溯,能够发现以前的风险,或许能够找到一些特征供参考 项目关键字 轻量级,可扩展,实时的Java业务风控系统 基于Spring boot构建,配置文件能少则少 使用drools规则引擎管理风控规则,原则上可以动态配置规则 使用redis、mongodb做风控计算和事件储存,历史事件支持水平扩展 原理 统计学 次数统计,比如1分钟内某账号的登录次数,可以用来分析盗号等 频数统计,比如1小时内某ip上出现的账号,可以用来分析黄牛党等 最大统计,比如用户交易金额比历史交易都大,可能有风险 最近统计,比如最近一次交易才过数秒,可能机器下单 行为习惯,比如用户常用登录地址,用户经常登录时间段,可以用来分析盗号等 抽象:某时间段,在条件维度(可以是多个维度复合)下,利用统计方法统计结果维度的值。充分发挥你的想象吧! 实时计算 要将任意维度的历史数据(可能半年或更久)实时统计出结果,需要将数据提前安装特殊结果准备好(由于事件的维度数量不固定的,选取统计的维度也是随意的,所以不是在关系数据库中建几个索引就能搞定的),需要利用空间换时间,来降低时间复杂度。 redis redis中数据结构sortedset,是个有序的集合,集合中只会出现最新的唯一的值。利用sortedset的天然优势,做频数统计非常有利。 比如1小时内某ip上出现的账号数量统计: 保存维度 ZADD key score member(时间复杂度:O(M*log(N)), N 是有序集的基数, M 为成功添加的新成员的数量),key=ip,score=时间(比如20160807121314),member=账号。存储时略耗性能。 结构如下: 1.1.1.1 |--账号1 20160807121314 |--账号2 20160807121315 |--账号n 20160807121316 2.2.2.2 |--账号3 20160807121314 |--账号4 20160807121315 |--账号m 20160807121316 计算频数 ZCOUNT key min max(时间复杂度:O(1)),key=ip,min=起始时间,max=截止时间。计算的性能消耗极少,优势明显 redis lua 把保存维度,计算频数,过期维度数据等操作,使用lua脚本结合在一起,可以减少网络IO,提高性能 mongodb mongodb本身的聚合函数统计维度,支持很多比如:max,min,sum,avg,first,last,标准差,采样标准差,复杂的统计方法可以在基础聚合函数上建立,比如行为习惯: getDB().getCollection(collectionName).aggregate( Arrays.asList( match(match) --匹配条件维度 , group("$" + field, Accumulators.sum("_count", 1)) --求值维度的次数 , match(new Document("_count", new Document("$gte", minCount))) --过滤,超过minCount才统计 , sort(new Document("_count", -1)) --对次数进行倒叙排列 ) ); 建议在mongodb聚合的维度上建立索引,这样可以使用内存计算,速度较快。 redis性能优于mo

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值