trustdecision / trustdevice-ios

Leading open source version of iOS device fingerprint, accurate deviceID and risk identification.
https://trustdecision.com/solutions/trustdevice
MIT License
217 stars 15 forks source link
deviceid fingerprint fraud-detection idfa idfv ios ios-security objective-c swift trustdecision uuid

trustdevice logo

# TrustDevice-iOS A lightweight library for determining device uniqueness and risk identification. Create a device identifier based on basic device information. Will remain the same after uninstalling and reinstalling or clearing app data. πŸͺ§AttentionπŸͺ§οΌšThe functions of the basic version of github are relatively limited. You can visit [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-5fkjqqnkoajcs?sr=0-1&ref_=beagle&applicationId=AWSMPContessa) or [TrustDecision](https://trustdecision.com/solutions/device-fingerprint) to learn about our professional version. ## Quick Start ### 1. Add Dependcy TrustDecision is available through [CocoaPods](https://cocoapods.org). To install it, simply add the following line to your Podfile: ```ruby # Podfile pod 'TrustDecision', '1.5' ``` ### 2. Get DeviceInfo DeviceInfo contains device id, risk information and device details. #### Objective-C ```objective-c #import 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 ```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) ``` ## Data Sample ```json { "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 } } ``` ## Open Source Features + Basic device ID, consistent when uninstalling applications and reinstalling + Basic equipment information, which can be used for simple data analysis + Basic risk identification ability | RiskLabel | Risk Description | | --------- | ------------------------------------------------------------ | | jailbreak | Attackers will have higher privileges and can install many cheating software to affect the normal development of application business. | | simulator | The simulator provides many simulation functions, which will affect the normal operation of applications, such as virtual positioning. | | debug | Applications can be modified by attackers at will, and the program will return unexpected values. | ## Open Source VS Pro | Ability | Open Source | Pro | | :---------------------------: | :---------: | :----------------------------------------------------------: | | 100% open source | Yes | No | | Device ID | Basic | Extremely stable, even if the device is restored to factory settings, it can still be recognized as the same | | Device Risk Label | Basic | Extremely rich | | Device Details | Basic | Extremely rich | | IP Location | - | βœ“ | | Device Risk Score | - | βœ“ | | Environment Risk Evaluation | - | βœ“ | | Fraud Tools Detection | - | βœ“ | | Behavioral Activity Capturing | - | βœ“ | ## Pro Introduction TrustDecision TrustDevice has the leading device fingerprint technology, which has been integrated by more than 10000 global leading brands, protecting the entire customer journey. **There are 6 leading core features about TrustDevice Pro:** ### 1. Wide Coverage Comprehensive coverage of Android, iOS, Web, H5, applets and other device types. ### 2. Stable and Reliable TrustDevice served more than 10,000 clients, 200 million+ daily active users , and 6 billion+ devices , with excellent product functions and stability. The fingerprint accuracy of different terminal devices exceeded 99.9%, and the output of risk labels exceeded 70 items. ### 3. Unparalleled Safety TrustDevice's code virtualization & obfuscation technology make the malware fraudsters suffer from painful cost and imprecision when performing reverse-engineering. ### 4. Core Intellectual Property Fully independent intellectual property rights, with a number of patented technology. ### 5. Security Compliance TrustDevice is committed to the highest standards in security and compliance to keep your data safe. GDPR/CCA/PCI DSS/ISO 27701/ISO 9001 Compliant. ### 6. Easy to Deploy SaaS(Software as a ServiceοΌ‰deployment supported, reducing massively your integration cost and enabling rapid access to device fingerprint service. ## Where to Get Support We are happy to provide technical support for our open-source trustdevice-ios library. We recommend using GitHub Issues to submit bugs or Discussions to ask questions. Using [Issues](https://github.com/trustdecision/trustdevice-ios/issues) and [Discussions](https://github.com/trustdecision/trustdevice-ios/discussions) publicly will help the open-source community and other users with similar issues. In addition, any idea or interest in using TrustDevice Pro can be found on the [www.trustdecision.com](https://www.trustdecision.com/trustDevice), registered account for a free trial; or via email trustdevice@trustdecision.com contact us directly and quickly open the service. ## Compatibility | Items | Description | | :-----------------------: | :------------------: | | Supported System Versions | iOS9.0+ | | Supported Architecture | armv7, arm64, x86_64 | ## TrustDevice Pro VS Others
TypeSceneResultTrusDevice ProFingerprintSeonCredoLabSiftShieldPerimeterX
Device Fingerprint CompatibilityiOS 9.0 and above, including iOS 16, etc.Able to collect device info and generate device IDβœ…βœ…(ios12 and above)βœ…(ios9 and above)βœ…(ios11 and above)βœ…(ios9.2 and above)βœ…(ios9 and above)βœ…(ios11 and above)
Device fingerprint uniquenessDifferent apps (with different package names) on the same deviceDevice fingerprints/ID matches βœ…βŒβŒβŒβŒβŒβŒ
The same app on two unique devices (including the case of the same device model and the same system version)Device fingerprint/ID should not match. Each device to have its own unique device fingeprint/IDβœ…βœ…βœ…βœ…βœ…βœ…βœ…
Device Fingerprint StabilityUninstall and reinstallDevice fingerprints/ID are consistent before and after reinstallationβœ…βœ…βŒβœ…βŒβœ…βŒ
Clear all app dataDevice fingerprints/ID are consistent before and after clearing all app dataβœ…βœ…βŒβœ…βŒβœ…βŒ
Disable all app permissions except network permissions and clear app dataDevice fingerprints/ID are consistent before and after disabling all permissionsβœ…βœ…βŒβœ…βœ…βœ…βœ…
Modify the common information of the device system (brand, model, IDFA, IDFV, etc.) through the machine modification toolDevice fingerprint/ID still matches with before modificationβœ…βœ…βŒβœ…βŒβœ…βŒ
Device system upgradeDevice fingerprints/ID are consistent before and after system upgradeβœ…βœ…βœ…βœ…βœ…βœ…βœ…
Factory reset (including iOS 14 and above, etc.)The device fingerprints/ID are the same before and after the device is restored to factory settingsβœ…βŒβŒβŒβŒβŒβŒ
Device Fingerprint Risk IdentificationSecondary packagingAbility to identify secondary packaged unofficial appsβœ…βŒβŒβŒβŒβœ…βŒ
Replay attackAbility to identify replay attacksβœ…βŒβŒβŒβŒβŒβŒ
Device location information has been tampered withAbility to identify tampering of location informationβœ…βœ…βŒβœ…βœ…βœ…-
No SIM card insertedCan identify whether the device is inserted with a SIM cardβœ…βŒβŒβœ…βœ…βœ…βœ…
The device uses an HTTP proxyCan identify HTTP proxy risksβœ…βŒβŒβŒβŒβŒβœ…
The device uses a VPN proxyCan identify VPN proxy risksβœ…βŒβŒβŒβŒβœ…βŒ
JailbreakAbility to identify jailbreak risksβœ…βŒβœ…βŒβœ…βœ…βœ…
The device is an emulatorAbility to recognize emulatorsβœ…βŒβœ…βŒβœ…βœ…βŒ
The device uses the machine modification tool to modify the device parameter informationAbility to identify mainstream modification toolsβœ…βŒβŒβŒβœ…βœ…βŒ
The device has scripts and group control tools installed (tools that are used to control multiple devices from single terminal - device farm/device group)Can identify mainstream scripting/group control toolsβœ…βŒβŒβŒβŒβœ…βŒ
The device is equipped with an M chipDevices capable of recognizing M-chipsβœ…βŒβŒβŒβœ…βœ…-
The device is not logged into the iCloud accountAble to identify login iCloud accountβœ…βŒβœ…βŒβŒβŒβŒ
Security and StabilityCode ProtectionThe device fingerprint SDK and JS have code protection mechanisms (such as VMP), which effectively resist black hat cracking attempts to manipulate code logic and falsify dataβœ… (OLLVM, VMP)❌❌❌❌❌❌
DowngradeIntercepting and sending collection requests in the iOS environment can still generate device fingerprints normallyβœ…βœ…βœ…βœ…βœ…βœ…βœ…
Anti packet captureiOS has the ability to prevent packet captureβœ…βŒβŒβŒβŒβŒβœ…
## License This library is MIT licensed. Copyright trustdecision, Inc. 2022.