← 资料库索引 ← 个人博客 原始链接 ↗ 🔍
个人博客

设备指纹的技术分析

发表时间:2022-06-24采集时间:2026-10-09 11:53:12来源:developer.aliyun.com原文语言:zh状态:完整

内容概要总结

阿里云开发者社区用户投稿的科普短文(2022-06-24),概述设备指纹的技术要点。作者提出采集设备信息需回答的问题:设备是否真实、哪个信息稳定、Android 大版本升级是否导致权限变动、采集是否符合隐私合规、用什么算法算出唯一 ID、新 App 上线设备 ID 是否全新。技术流程是采集客户端特征属性加密上传云端,再由算法为每台设备生成唯一 ID;产品需具备稳定性、唯一性、安全性、易用性、高性能,并能识别模拟器、多开、ROOT、篡改参数、脚本等异常环境。文中说明数据通常经异步上传再由代理转发以保证安全,采集字段以 JSON 加密上传、走 URL POST,其中含强校验混淆信息;并列出微行为属性(电池状态、重力/加速度传感器、联网、USB、触摸轨迹、压感、按压时长、剪贴板)。最后举例市面 SDK 形态:某易为 aar(NEDevice-SdkRelease_v1.7.0_2022xxxxxx.aar),某盾为 aar(fraudmetrix)+ so(libtongdun.so),某美为 aar(smsdk)+ so(libsmsdk.so);强度更高的把关键采集放进 so 并用虚拟机保护。

原文内容(原文即中文)

本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《
阿里云开发者社区用户服务协议》和
《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写
侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

技术分析

采集设备信息需要关注的问题:用户设备是真实设备?哪个设备信息是稳定?Android系统大版本升级是否导致权限变动?采集的数据是否符合隐私合规政策?采用什么算法来计算出唯一ID?新APP上线所有设备ID是全新?
技术实现流程:通过采集客户端的特征属性信息并将其加密上传到云端,然后通过特定的算法分析并为每台设备生成唯一的ID来标识这台设备。
设备指纹必须具备:稳定性、唯一性、安全性、易用性、高性能。
设备环境风险特征:识别模拟器环境、多开、ROOT、篡改设备参数、脚本,等异常环境特征。具有稳定性高,性能高。

image.png
image.png

通常情况下,设备指纹采集到用户的设备数据后,数据会通过异步方式先上传到业务的服务器上,然后再通过代理服务端进行转发到对应设备指纹的服务端。这样也是为了保证数据的安全性,客户端采集数据功能防止被剥离,从而采集不到设备数据。采集的数据一般通过json格式加密数据进行上传。

image.png
(原页此图无独立图注)

设备指纹上传一般采用URL的POST请求,并集成json格式,并且所采集的字段信息中会有一些字段是无用的,有一些字段适用于对json信息采用强校验的混淆信息。
设备指纹中设备风险识别的微行为常用的属性:电池状态、重力传感器、加速度传感器状态、联网状态、USB状态、触摸轨迹、压感、按压时长、剪切板。
设备指纹的SDK主要以java代码和C、C++代码为主,java代码部分是以aar包或jar包方式存在,C\C++代码主要以SO方式存储的。例如某易的设备指纹就是以aar包(NEDevice-SdkRelease_v1.7.0_2022xxxxxx.aar)单独方式存在,某盾的设备指纹以aar文件(fraudmetrix-xxx.aar)和so文件(libtongdun.so)两者相结合存在,某美的设备指纹以aar包(smsdk-x.x.x-release.aar)和so文件(libsmsdk.so)相结合存在。
设备指纹主要是通过集成到APP中的SDK,还有小程序的SDK,通常情况下是采用aar包方式进行提供的SDK,还有就是强度较高的是通过aar包和SO文件进行结合集成的设备指纹SDK。将关键的采集信息集成到SO中代码中实现,并且SO文件采用虚拟机保护。
下面是某设备指纹以aar形式的,它关键代码都是java实现的。并且java代码利用proguard 混淆规则进行对aar的class类进行混淆类名而已,并没有混淆到函数名称和变量名称,字符串信息。

image.png
(原页此图无独立图注)

下面是某设备指纹的java代码和C++代码部分,java代码和C++代码都采用了虚拟化保护技术进行保护。

image.png
(原页此图无独立图注)
image.png
(原页此图无独立图注)

设备指纹读取用户信息,通常需要涉及到向用户申请权限的情况,所以在android的AndroidManifest.xml配置文件中通常有一系列的权限申请。

image.png
(原页此图无独立图注)
放大预览