Application security feature

Account and installation integrity

Otukan shows which genuine installs of your Android or iOS app belong to each account, and flags clones, duplicates and suspicious reinstalls to your server.

  • Android
  • iOS
  • Flutter
  • React Native
Cloned installations is met at the installation record boundary before it reaches the appCloned installationsInstallation recordYour app
  • An inventory you can trust

    Each genuine installation carries its own key-backed identity, so your server knows which installations stand behind each account.

  • Copies stand out

    Cloned containers, parallel instances and repeated reinstalls leave a pattern. Otukan turns that pattern into a signal your backend can act on.

  • Minimal by design

    Installation evidence uses a pseudonymous identifier and rotating keys, so you gain account integrity without collecting device fingerprints or personal data.

Installation threats Otukan exposes

Select a threat to see how Otukan detects it, how the app responds and what your server records against the account.

Parallel app instances (Android)

  1. Detect

    Otukan recognises when your Android app runs inside a cloning container or a vendor dual-app space.

  2. Respond

    The duplicate instance can browse, while account changes and payments are held, per your policy.

  3. Report

    Your server sees a second installation marked as a parallel instance on the same device.

Installation farms

  1. Detect

    Emulator and automation checks run when a fresh installation first registers, before it is linked to any account.

  2. Respond

    Registration from a virtual device is stepped up or refused.

  3. Report

    The account history shows how many new installations arrived from non-physical hardware.

Reinstall to shed history

  1. Detect

    A new installation claiming an account that already has a trusted one is treated as a fresh claim, not a continuation.

  2. Respond

    The new installation proves itself before it inherits the trust of the old one.

  3. Report

    Your backend records the reinstall with its integrity result and the time since the previous installation.

Repackaged app registering

  1. Detect

    Integrity checks confirm that code and signing identity match your release before an installation key is issued.

  2. Respond

    A modified copy receives no installation identity and cannot link itself to an account.

  3. Report

    The registration attempt is reported as coming from an altered app.

Replayed installation proof

  1. Detect

    Each proof is a fresh signature over a server challenge, so a captured proof fails the next time it is presented.

  2. Respond

    The request is refused and the app is asked to prove itself again.

  3. Report

    Your server logs the stale or reused challenge against the installation.

Controls behind installation integrity

Installation integrity draws on several Otukan controls, each reporting into the same account view.

  • App attestation

    Gives your server evidence that a request comes from your signed release on a genuine device, verified on the server side.

  • Device binding

    Ties tokens and refresh credentials to the installation that received them, so they are useless when copied elsewhere.

  • Anti-tampering

    Stops modified copies of your app from registering as if they were the release you shipped.

  • Emulator detection

    Separates physical phones from virtual devices used to create installations in bulk.

You choose the response

Set a response for each user flow. Start by observing, then tighten flow by flow as the signals prove themselves.

Observe

Signal sent to your backend

Rolling out a new policy and measuring real-world signals.

Warn

This device looks modified. Continue with care.

Conditions some genuine users create, such as developer settings.

Restrict

Payments are unavailable on this device.

Payments, stored data and account changes.

Terminate

Session closed for your security.

Clear tampering on a high-risk flow.

How it works

  1. Issue an installation key

    On first launch, the genuine app creates a key in platform key storage and registers it with your server.

  2. Link it to the account

    At sign-in, your server records which installation is claiming the account and under what integrity result.

  3. Challenge on sensitive requests

    Your server sends a fresh challenge; the installation signs it with its key before the request proceeds.

  4. Watch the pattern

    New, duplicate and reinstalled installations are compared with the account's history and your policy.

  5. Retire cleanly

    Sign-out, reset and device change retire the old installation record and rotate its key.

Free for app publishers

Check your app's exposure

A passive review of your published app by an Otukan engineer. No files, no access to your systems. Findings go by email to the verified publisher.

You finish the request on the next page.

A mobile security team should evaluate account and installation integrity by asking one question of every sensitive request: which installation of our app sent this, and is it one we already trust for this account? Otukan answers it. Each genuine installation gets a key-backed identity, your server links installations to accounts, and clones, duplicates, installation farms and suspicious reinstalls are flagged before they inherit trust. The signal describes the app installation, not the person, so it complements your authentication rather than replacing it. Signals are built separately for Android and iOS, and the final decision always sits on your server.

What an installation signal proves

The trust claim

An installation signal says three things: this request was signed by a key that a genuine copy of your app created, that key belongs to an installation your server has already linked to this account, and the integrity checks around it passed at the moment of signing. That is a strong statement about the software and its history with the account.

What it does not establish

It does not say who is holding the phone. A family member, a coerced customer or a remote-controlled session all use a genuine installation. That is why installation integrity feeds your identity decision instead of being the decision. Pair it with your authentication factors and, for coaching or remote control, with remote access risk signals.

QuestionInstallation integrity answersNeeds another control
Is this our genuine app?Yes, through integrity and attestation
Is this installation known for this account?Yes, through the installation record
Is this a clone or parallel instance?Yes on Android
Is this the account holder?Authentication factors
Is the user being guided by someone else?Remote access and social engineering signals

Verification on your server

Challenge and freshness

Your server issues a challenge for each sensitive request. The installation signs it with its key and returns the signature alongside the integrity result. Because every challenge is used once, a proof captured in transit or copied from logs has no value later. Your server checks the signature, the challenge and the installation record together.

Who decides

Otukan produces the evidence inside the app. Your backend owns the verdict: it can accept the request, ask for a step-up or refuse it. Keeping the decision there means an attacker who controls the device still has to convince a server they cannot touch. On iOS, your server can combine this with App Attest; on Android, with the Play Integrity verdict it requests and checks. Attestation detail is on mobile app attestation.

How to test it

Reproduce each case in an authorised lab. Run the Android app in a cloning container and confirm the parallel instance is reported. Replay a captured proof and confirm the server refuses it. Register an installation from an emulator and confirm the step-up. Then repeat install, update, sign-in and your most sensitive flow on a normal phone and confirm nothing fires. Record the device, OS version, expected result and reviewer for each run, so the next release can be compared against the same baseline.

Privacy and the installation lifecycle

Reinstall and reset

On Android, uninstalling the app or resetting the phone removes its keys from the Android Keystore. On iOS, keychain items can outlive an uninstall, so Otukan ties the identity to the installation itself rather than to whatever the keychain kept. On both platforms the next launch creates a new key, and your server sees a new installation for an existing account. Good policy treats this as normal but unproven: allow everyday use, ask for a step-up before the new installation approves payments or changes account details.

Several devices per account

Many customers use a phone and a tablet, or keep an old phone as a spare. The installation record lets your policy set how many active installations an account may hold and what each one may do. A second trusted device is ordinary; a fifth installation in a week is a pattern worth a closer look.

Key rotation and retirement

Installation keys should not live for ever. Otukan supports rotating the key on a schedule you set and retiring the record at sign-out, account closure or device change. A retired installation can no longer sign requests, even if an old copy of the app survives somewhere.

Data minimisation

The installation record holds a pseudonymous identifier, a public key and integrity results. It does not hold hardware serials, advertising identifiers or contact data. You choose the retention period and who in your organisation can read the history.

For the wider view of account security, return to identity and account protection.

Common questions

  • Is installation integrity the same as user authentication?

    No. Authentication answers who the person is. Installation integrity answers which copy of your app is making the request and whether that copy is genuine. The two work best together: your identity service verifies the person, and Otukan tells it whether the installation behind the request is one it already trusts, a new arrival or a duplicate.

  • What happens when a customer reinstalls the app or resets their phone?

    The new installation creates its own key and is never mistaken for the old one, even on iOS, where keychain items can outlive an uninstall. That is expected behaviour, not an attack. Otukan reports it as a new installation so your policy can decide what proof it needs, for example a one-time step-up for sensitive actions, while everyday use continues as normal.

  • Do you collect device identifiers to recognise installations?

    No. Recognition rests on a key that lives in platform key storage and a pseudonymous identifier your server issues. There is no hardware serial, advertising identifier or device fingerprint involved. You decide how long installation records are kept and when retired ones are deleted.

  • Are the signals the same on Android and iOS?

    The goal is the same, the building blocks differ. Android lets users run parallel copies of an app, so clone detection is an Android signal. iOS has no equivalent user-facing cloning, and App Attest gives your server its own evidence of a genuine app instance. Otukan labels every signal with its platform.

On the mobile engineering team?

How protection fits your build, signing and release, platform by platform.

See the installations behind each account

Tell us the platform, the app framework and how accounts and installations relate today, for example one phone per customer or several devices per account. We do not ask for binaries, signing keys, account data or production credentials.

Or request a technical demo