TrustDevice-iOS
一个用于确定设备唯一性和风险识别的轻量级库。
基于基本设备信息创建设备标识符。
卸载和重新安装或清除应用数据后仍保持不变。
快速入门
1. 添加依赖
TrustDecision可通过CocoaPods获得。要安装它,只需将以下行添加到Podfile中
# Podfile
pod 'TrustDecision', '1.4'
2. 获取DeviceInfo
DeviceInfo包含设备ID、风险信息和设备详细信息。
Objective-C
#import <TrustDecision/TDMobRisk.h>
TDMobRiskManager_t *manager = [TDMobRiskManager sharedManager];
NSMutableDictionary *options = [[NSMutableDictionary alloc] init];
[options setObject:^(NSDictionary *response) {
// Response in sub-thread, do something with the response
// Get DeviceId
NSString *deviceId = response[@"device_id"];
// Get DeviceRiskLabel
NSDictionary *deviceRisk = response[@"device_risk_label"];
// Get DeviceDetail
NSDictionary *deviceDetail = response[@"device_detail"];
} forKey:@"callback"];
manager->initWithOptions(options);
Swift
import TrustDecision
var options = [String : NSObject]()
let responseCallback: ([String : Any])-> Void = { response in
// Response in sub-thread, do something with the response
// Get DeviceId
let deviceId = response["device_id"]
// Get DeviceRiskLabel
let deviceRisk = response["device_risk_label"]
// Get DeviceDetail
let deviceDetail = response["device_detail"]
}
options["callback"] = unsafeBitCast(responseCallback as @convention(block) ([String : Any]) -> Void, to: AnyObject.self) as? NSObject
let manager = TDMobRiskManager.sharedManager()
manager?.pointee.initWithOptions(options)
数据样本
{
"device_id":"4b3491c6bb6a27c6c58a038939a10d4cad97555e517574e7bd0291db96243859",
"device_risk_label":{
"jailbreak":false,
"simulator":false,
"debug":true
},
"device_detail":{
"displayResolution":"828.0x1792.0",
"deviceModel":"N104AP",
"kernelVersion":"Darwin Kernel Version 22.6.0: Wed Jun 28 20:51:23 PDT 2023; root:xnu-8796.142.1~1\/RELEASE_ARM64_T8030",
"debug":true,
"sandboxPath":"3CDAE89E-1D51-4DD2-941C-02B2780021FF",
"mcc":"460",
"batteryState":2,
"teamName":"Hangzhou BoDunXiYan Technology Co., Ltd.",
"cloudid":"316A8157-B4E5-4F40-BE37-8115588CA734",
"bundleId":"com.trustdevice.fingerprint",
"appVersion":"1.0",
"timeZone":"Asia\/Shanghai",
"applicationId":"R3F7G5M76J.com.trustdevice.fingerprint",
"freeDiskSpace":4820676608,
"physicalMemory":"8333852672",
"currentTime":1693451898456090,
"totalDiskSpace":127933894656,
"mnc":"02",
"appInstallTime":1679884827203788.8,
"osVersion":"20G75",
"hostName":"ssd",
"osType":"Darwin",
"deviceType":"iPhone",
"displayScale":2,
"idfv":"E5082421-F447-4B45-B453-22C656B56314",
"osRelease":"22.6.0",
"memorySize":"4038885376",
"deviceName":"iOS",
"cpuCount":"9023060809483288582",
"isiOSAppOnMac":0,
"simulator":false,
"jailbreak":false,
"bootTime":1692954854089697,
"secureKernelStatus":true
}
}
开源特性
- 基本设备ID,卸载安装应用后保持一致
- 基本设备信息,可用于简单的数据分析
- 基本风险识别能力
RiskLabel | 风险描述 |
---|---|
越狱 | 攻击者将拥有更高的权限,可以安装许多作弊软件影响应用业务的正常运行。 |
模拟器 | 模拟器提供许多模拟功能,将影响应用程序的正常运行,如虚拟定位。 |
调试 | 攻击者可以随意修改应用,程序将返回意外值。 |
开源 VS 专业
功能 | 开源 | 专业版 |
---|---|---|
100% 开源 | 是 | 否 |
设备ID | 基本 | 极稳定,即使是设备恢复到出厂设置,也能被识别为同一设备 |
设备风险标签 | 基本 | 极其丰富 |
设备详情 | 基本 | 极其丰富 |
IP位置 | - | ✓ |
设备风险评分 | - | ✓ |
环境风险评估 | - | ✓ |
欺诈工具检测 | - | ✓ |
行为活动捕获 | - | ✓ |
专业版简介
TrustDecision TrustDevice 采用领先的设备指纹技术,已被超过 10000 个全球领先品牌集成,保护整个客户旅程。
TrustDevice Pro 有 6 个核心领先功能
1. 广泛覆盖
全面覆盖 Android、iOS、Web、H5、小程序等其他设备类型。
2. 稳定可靠
TrustDevice 服务了超过 10,000 家客户,2 亿+ 每日活跃用户,6 亿+ 设备,凭借出色的产品功能和稳定性。不同终端设备的指纹准确率超过 99.9%,风险标签输出超过 70 项。
3. 无与伦比的安全
TrustDevice的代码虚拟化和混淆技术使恶意软件欺诈者在进行逆向工程时遭受痛苦的成本和不精确性。
4. 核心知识产权
拥有完全独立的知识产权,拥有多项专利技术。
5. 安全合规性
TrustDevice致力于最高的安全和合规标准,以确保您的数据安全。符合GDPR/CCA/PCI DSS/ISO 27701/ISO 9001。
6. 易于部署
SaaS(软件即服务)部署支持,大幅降低您的集成成本,并快速访问设备指纹服务。
获取支持方式
我们很乐意为我们的开源信任设备 iOS 库提供技术支持。我们建议您使用 GitHub 问题提交错误或讨论提问。公开使用 问题 和 讨论 有助于开源社区和其他遇到类似问题的用户。
此外,关于使用 TrustDevice Pro 的想法或兴趣可以在 www.trustdecision.com 找到,注册账户免费试用;或通过电子邮件 [email protected] 直接联系我们,快速开启服务。
兼容性
项目 | 描述 |
---|---|
支持的系统版本 | iOS 9.0+ |
支持架构 | armv7, arm64, x86_64 |
TrustDevice Pro 与其他产品的比较
类型 | 场景 | 结果 | TrustDevice Pro | 指纹 | Seon | CredoLab | Sift | Shield | PerimeterX |
---|---|---|---|---|---|---|---|---|---|
设备指纹兼容性 | iOS 9.0 和以上,包括 iOS 16 等 | 能够收集设备信息并生成设备 ID | ✅ | ✅(ios12 和以上) | ✅(ios9 和以上) | ✅(ios11 和以上) | ✅(ios9.2 和以上) | ✅(ios9 和以上) | ✅(ios11 和以上) |
设备指纹唯一性 | 同一设备上不同应用(具有不同的包名) | 设备指纹/ID 匹配 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
两个唯一设备上的同一应用(包括同一设备型号和同一系统版本的情况) | 设备指纹/ID 不应匹配。每个设备应具有其独特的设备指纹/ID | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
设备指纹稳定性 | 卸载和重新安装 | 重新安装前后设备指纹/ID 一致 | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
清除所有应用数据 | 清除所有应用数据前后设备指纹/ID 一致 | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | |
禁用所有应用权限,除了网络权限,并清除应用数据 | 禁用所有权限前后设备指纹/ID一致 | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | |
通过设备修改工具修改设备系统信息(如品牌、型号、IDFA、IDFV等)的常见信息 | 设备指纹/ID在修改前后仍然匹配 | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | |
设备系统升级 | 系统升级前后设备指纹/ID一致 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
出厂重置(包括iOS 14及更高版本等) | 设备恢复到出厂设置前后,设备指纹/ID相同 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
设备指纹风险识别 | 二次包装 | 能够识别非官方的二次包装应用 | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
重放攻击 | 能够识别重放攻击 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
设备位置信息已被篡改 | 能够识别位置信息被篡改 | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | - | |
未插入SIM卡 | 能识别设备是否插入了SIM卡 | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | |
设备使用HTTP代理 | 能识别HTTP代理的风险 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | |
设备使用VPN代理 | 能识别VPN代理的风险 | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | |
越狱 | 能够识别越狱风险 | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | |
设备是仿真器 | 能够识别仿真器 | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ❌ | |
设备使用设备修改工具修改设备参数信息 | 能够识别主流修改工具 | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | |
设备安装了脚本和群控工具(用于从单个终端控制多台设备 - 设备农场/设备组) | 能识别主流的脚本/群控工具 | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | |
设备配备了M芯片 | 能够识别M芯片的设备 | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | - | |
设备未登录iCloud账户 | 能够识别登录的iCloud账户 | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | |
安全与稳定性 | 代码保护 | 设备指纹SDK和JS具有代码保护机制(例如VMP),有效抵抗黑帽破解者对代码逻辑进行操作和伪造数据的尝试 | ✅ (OLLVM, VMP) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
降级 | 在iOS环境中拦截并发送采集请求仍能正常生成设备指纹 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
反抓包 | iOS有防止抓包的能力 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
许可
此库采用MIT许可。版权属于trustdecision, Inc. 2022.