设备指纹的重复率一高,风控那边的判断就跟着失准
判断一批请求是不是同一个人发出来的,光看账号不够,账号可以注册很多个。设备指纹的做法,是把一台机器的若干特征凑成一个标识,用来回答这是不是同一台设备。一、指纹是怎么凑出来的
屏幕尺寸、系统版本、字体列表、时区、浏览器的一些能力,这些凑起来就有了一定区分度。再加上网络层的一些特征,比如出口地址和协议握手的细节,重复的概率会低很多。这些项单独拿出来都不算秘密,凑在一起才有区分度。采集的时候要成组地取,别东一项西一项,凑出来的东西既不稳定也不好比对。
凑出来的东西不是拿来当密码用,它只要求相对稳定:同一台机器多次访问算出来一样,不同机器算出来不一样。这个要求听着简单,实际做起来要处理很多边界,比如系统更新之后哪些特征会跟着变。做不到这两点,后面的判断就没有依据。稳定这一条尤其重要,同一台机器今天算出甲值、明天算出乙值,历史记录就串不起来,前面攒下的判断全作废。规则上线前先跑一段观察模式,只记录不拦截,看清楚会命中哪些人。
二、重复率高意味着什么
两台不同的机器算出同一个指纹,这叫碰撞。碰撞多,风控就会把正常用户和异常请求归成一类,拦错了人,真正该拦的又漏过去。
重复率高通常是特征取得太少或者太粗。只看屏幕尺寸和系统版本,同一批采购的办公电脑会算出大量相同的值,这在企业网络里非常常见。所以指纹要往深里取,取到那些跟硬件和渲染有关的项,不同机器之间的差别才拉得开。判定的依据要能追溯,事后复盘的时候,得知道当时是按哪几条规则下的结论。
三、特征要怎么选
优先选那些区分度高、又不容易被随手改掉的项。改动成本这一条要摆在前面,太容易改的特征,对方改一次就绕过去了,规则跟着失效。显卡型号、字体组合、时区偏移这几项的组合效果不错,单看某一项则几乎没有意义。选特征还要看采集的稳定性,同一个字段在不同浏览器里能不能拿到,拿到的格式是不是一样,这些都得先试过。
要避开那些变化频繁的特征,比如窗口大小、页面停留时间。这些每刷新一次就变,凑进指纹里,同一台设备每次算出来都不一样。判断一个特征该不该用,可以拿同一台设备连算十次,十次结果都一样的才留下。设备信息的采集要克制,只取做判断必需的那几项,多拿的部分既没用也是负担。
四、稳定性与变化
用户升级系统、装新字体、换浏览器,指纹都会变。变一次就把人当成新设备,风控的连续判断就断了。所以要允许一定范围内的漂移,把变化前后的标识关联起来。
关联的办法是留几个辅助特征,主体变了但辅助特征还对得上,就认为是同一台设备。关联不能无限放宽,放宽到后面,所有设备都连成一片。放宽的尺度要有上限,比如至多关联三台设备、七天之内有效,超过就断开重算。同一套规则用久了会失效,对方会摸清规律,隔一段时间就要回头看命中情况。
五、存和查
指纹算出之后要存下来,按指纹建索引,查的时候一次命中。存的内容不要包含能直接识别个人的信息,只存哈希之后的结果,用的时候比对哈希。哈希要用带盐的方式算,直接对原始串做摘要,遇到常见取值是能被反推出来的。
数据量会很大,冷热要分开。近一个月的放在快表里,更早的归档,查询时先查快表,找不到再回查归档,别让历史数据拖慢实时判断。归档的数据别直接删,它在事后追查的时候还有用,只是查的频率低,可以放到便宜的存储上。
六、它的边界在哪
设备指纹能说明这是同一台机器,说明不了操作的人是谁。同一台设备可以换很多账号,同一个人也可以用很多设备。它只是一条线索,不能当成结论。
隐私上的边界也要清楚。采集哪些项、留多久、谁能查,都要有明文规定。采集范围失控,后面就很难收回来。采集清单要写成文档,新增一项就走一次评估,别让代码里悄悄多出几个字段,事后没人说得清。
把指纹当成一块拼图,而不是整张图。它和账号、行为、地址放在一起看,判断才站得住。 楼主考虑得很全面,不仅讲了方法,还提到了注意事项,非常贴心。 看完楼主的分享感觉很有收获,感谢这么用心的整理,学到很多新知识。 内容全面又细致,几乎把相关问题都覆盖到了,非常用心。
页:
[1]