Evaluate OS integrity signals by how clearly they tell you what is wrong with the operating system beneath your app, and whether your backend can use them. Otukan inspects the device from inside your app for privilege escalation tools, modified system areas, weakened security settings, sandbox gaps and tools that hide these conditions. Each finding is reported as its own named signal with its platform, not folded into a single verdict. Your app responds per flow, and your server weighs the signals together with attestation verdicts it verifies itself. Android and iOS signals are designed separately. They inform your risk decision; they do not replace it.
Sibling integrity controls are listed on application integrity.
What a compromised OS puts at risk
Your app relies on the operating system to keep other apps out of its storage, to protect its keys and to run only signed code. OS integrity signals tell you whether that reliance still holds on a given device.
Affected flows
The flows that suffer are the ones that lean on platform protection. Credentials cached for quick sign-in can be read by another process with superuser rights. Keys the app expects to be hardware-backed can be used by code the app did not approve. Payment confirmations can be driven by tools that the platform would normally block. The same device may be harmless for reading news and unacceptable for moving money.
The trust boundary
The boundary sits between your app and the platform. When it holds, the operating system enforces the sandbox, the keystore or keychain, and code signing on your behalf. When it breaks, those enforcements become optional for anyone with control of the device, and your app has to rely on what it can observe for itself.
| Signal family | Android | iOS | Legitimate cases to allow for |
|---|---|---|---|
| Privilege tools | Superuser binaries and managers | Jailbreak tooling and package managers | Enthusiasts and security researchers |
| System modification | Changed or writable system partitions | Changed or writable system locations | Some custom system images |
| Security settings | Mandatory access control enforcement mode | Not applicable in the same form | Developer and test devices |
| Sandbox reach | Reported through privilege and system signals | Access or actions the sandbox should deny | None expected on an unmodified device |
| Concealment | Tools hiding root from apps | Tools hiding a jailbreak from apps | None expected |
Who is responsible for what
OS integrity is a shared job. Each layer contributes evidence the others cannot collect.
The operating system
The platform offers its own evidence. On Android, Play Integrity gives your server a verdict on device integrity, and hardware-backed key attestation can report the device’s verified boot state. On iOS, App Attest lets your server confirm that requests come from a genuine instance of your app. These verdicts are verified by your server, not by the app.
The app
Otukan’s checks run inside your app and look at the operating system from the app’s point of view, at the moment of the request. They find conditions the platform verdict may not describe, and they let the app respond in the flow, before a sensitive step completes.
The backend
Your server brings the pieces together. It receives Otukan’s named signals with each sensitive request, adds the attestation verdicts it verified and the account’s history, and makes the call: allow, step up, restrict or refuse.
How to evaluate OS integrity signals
Supported platforms
Ask for a per-signal matrix: which signals exist on Android, which on iOS, and on which OS versions. A signal that only makes sense on one platform should be listed only there.
Evidence to ask for
In an authorised lab, prepare a rooted Android device and a jailbroken iPhone, then add a concealment tool to each. Confirm that every expected signal fires, with the right label, and that concealment is reported on its own. Confirm what your backend receives with a sign-in and a payment request.
User-impact checks
Measure before you enforce. Run in observe mode across your real users and see how often each signal appears, including developer settings and custom system images. Set proportionate responses per flow, then repeat install, update, sign-in and your most sensitive flow on clean devices to confirm they stay quiet.
Platform-specific detail is covered on Android root detection and iOS jailbreak detection.