Your backend can verify a mobile request with evidence the app attaches to it, and Otukan supplies that evidence. It proves three things: the calling app is your genuine, unmodified release; it runs on a device in a state you accept; and the evidence was made for this request, not replayed. Otukan combines platform attestation, Play Integrity on Android and App Attest on iOS, with its own runtime checks, and your server verifies every result. Attestation proves something about the software and device, not the user, so it strengthens your authentication rather than replacing it.
This control is part of mobile API protection.
Evidence meaning
A single “attested” flag hides three different claims. Otukan reports them separately, so your backend knows exactly what it is relying on.
App authenticity
The request comes from your app as you signed and released it. On Android, Play Integrity’s app integrity verdict reports whether Google Play recognises the app. On iOS, App Attest keys are tied to your team and app identifier, and each assertion is signed by a key held in the Secure Enclave. Otukan’s integrity checks add evidence that the code and resources match your release. Together, this separates your app from scripts, emulator farms and repackaged copies.
Device environment
Play Integrity returns device integrity labels, and Android Keystore key attestation can report verified boot state and bootloader lock status. iOS offers no comparable device-integrity verdict. Otukan fills that gap with runtime checks on both platforms for jailbreak detection, root detection, hooking, debugging and emulators, reported with each sensitive request.
User identity
Attestation does not identify the user, and Otukan keeps it that way by design. Login, multi-factor authentication and session management answer who is using the app. Attestation tells you how much to trust the client carrying those credentials.
Verification
Freshness
Otukan binds evidence to a specific request. With Play Integrity standard requests, the app passes a hash of the request; with classic requests, your server issues a nonce. With App Attest, your server issues a one-time challenge for key attestation, and later assertions sign a hash of the request data.
Replay defence
Otukan’s verification contract builds replay defence in:
- challenges are issued on the server, single-use and short-lived;
- evidence is bound to the request body, so it cannot move to another call;
- App Attest assertion counters are stored per key, and a value that does not increase is rejected;
- rejected evidence is logged, because repeated replays are a signal in themselves.
For deployments with several backend instances, verification uses a shared store of used challenges and a reliable time source, so the same evidence is accepted once across the whole service.
Server-side checks
Every result is verified on your server. For Play Integrity, the token is decoded server-side and the package name, request hash or nonce, timestamp and verdicts are checked. For App Attest, the certificate chain is validated to Apple’s App Attest root, along with the app identifier and challenge, and the public key is stored for later assertions. Otukan’s own evidence is verified in the same step. The app never reports its own verdict. How attestation fits a device-bound session is covered on device binding.
Dependencies
Otukan builds on the platform mechanisms and adds its own evidence. Each source has its own conditions, and Otukan labels them clearly.
| Mechanism | Platform | What it attests | Depends on |
|---|---|---|---|
| Play Integrity | Android | App recognised by Google Play, device integrity labels | Google Play services, request quotas |
| Keystore key attestation | Android | Key properties, verified boot state | Hardware-backed Keystore, varies by manufacturer |
| App Attest | iOS 14 and later | Genuine app instance, key in the Secure Enclave | Supported hardware and Apple’s servers; not available in the simulator |
| DeviceCheck | iOS | Two bits of per-device state set by your server | Apple’s servers |
| Otukan runtime evidence | Android and iOS, scoped per platform | App integrity, hooking, debugging, emulator and root or jailbreak signals, bound to the request | The protected app |
How Otukan complements platform attestation
Platform verdicts are signed by Google or Apple, which makes them hard to forge. Otukan adds what they do not report: runtime signals from inside your app, and one verification contract across Android and iOS. Every result states which evidence came from the platform and which from Otukan, so your backend weighs each on its own terms.
Otukan also handles devices where platform attestation is unavailable, such as Android devices without Google Play services. Your policy decides whether those requests proceed on Otukan’s evidence alone, step up or stop.
Protection fits your existing build and release pipeline, and your signing keys stay with you.
Sector requirements are covered on mobile banking app security, healthcare mobile app security and crypto wallet app security. The difference between app and device attestation is covered on app attestation vs device attestation, and verification steps are covered on how to verify mobile app attestation.