DeviceCheck(iOS 11+) Vs AppAttest(iOS 14+)

We see appAttest (available iOS 14+) provides us 3 key features: if app instance is not modified, device is genuine apple device and payload is not tempered with.

We also have deviceCheck Api (iOS 11+) which return 2 bits per device, as mentioned in documentation we can create different payloads for validation and different for updating the 2 bits. Apart from returning those bits in validation request, does this DeviceCheck APIs also validate 2 of the 3 above features i.e. app is not modified and the device is genuine apple device?

If yes, what response from apple server to look for in successful validation of above 2 features and what response to look for in fraud cases or failure cases?

Does isSupported in case of DCDevice.current hints the device is a simulator ? Can we get exhaustive list of cases where isSupported is false?

Does DCDevice.current.generateToken fails only in case of modified app instance? Can we get exhaustive list of cases where above can throw error? Can modified app instance also able to generateToken?

Replies

I asked Developer Technical Support some of these questions. The interesting parts of the replies were these:

does this DeviceCheck APIs also validate 2 of the 3 above features i.e. app is not modified and the device is genuine apple device?

They say: "(DeviceCheck and App Attest) are different elements you can use in your protection/anti-fraud policy. They target different aspects, DeviceCheck focuses on the device, and AppAttest focuses on the integrity of your app code."

My understanding from that is that DeviceCheck does not check if the app is modified, but perhaps modifying the device is a necessary prerequisite to modifying the app.

Can we get exhaustive list of cases where isSupported is false?

I asked specifically about iOS apps running on macOS ("Designed for iPad"), and they say: "The issue on macOS 11 is a known bug that has since been fixed. Barring any bugs, isSupported() should return true for Apple Silicon Macs and newer models of Intel Macs (with Touch ID)."