Application security feature

TLS session protection

Otukan keeps your app's session tokens in platform key storage, bound to a device and a verified channel, so a copied session stands out to your server.

  • Android
  • iOS
  • Flutter
  • React Native
Hijacked sessions is met at the session binding boundary before it reaches the appHijacked sessionsSession bindingYour app
  • Tokens kept close

    Otukan protects session material with the platform's key storage and keeps it out of logs, backups and readable files.

  • Sessions tied to a device

    A session carries proof of the app instance and device it began on, so a copied token presented elsewhere stands out to your server.

  • Your server decides

    Session signals arrive with each sensitive request, and your backend chooses to continue, step up or end the session.

Session attacks Otukan addresses

Pick an attack to see how Otukan notices it, what the app does and what your backend learns.

Token lifted from storage

  1. Detect

    Otukan protects session material with platform key storage, hardware-backed where the device offers it, and checks for tooling that reads app storage on modified devices.

  2. Respond

    Sessions on a device found to be rooted or jailbroken follow your policy, from observe to terminate.

  3. Report

    A storage risk signal accompanies the session's next request.

Session replayed from another device

  1. Detect

    Each sensitive request carries proof tied to the original app instance, which a copied token cannot produce.

  2. Respond

    Your backend refuses or steps up a request whose proof does not match.

  3. Report

    Mismatches are logged per account, exposing token theft patterns.

Token read from memory

  1. Detect

    Runtime checks spot hooking and memory inspection aimed at the code that handles tokens.

  2. Respond

    The session is restricted or ended, as your policy sets for that flow.

  3. Report

    A session tampering signal reaches your backend.

Session carried over an intercepted channel

  1. Detect

    Otukan checks the channel before session material is sent, and notices when a connection is being inspected by an unapproved party.

  2. Respond

    The token is not sent; the user re-authenticates once a verified connection is back.

  3. Report

    The event is recorded with network type and platform.

Session outliving a risk change

  1. Detect

    Otukan re-evaluates device and app state during a long session, not only at sign-in.

  2. Respond

    Sensitive actions in an older session require fresh authentication.

  3. Report

    Your backend sees the change in risk while the session is still active.

What TLS session protection includes

Safe storage, binding and re-checks for the session your app carries over TLS.

  • Protected token storage

    Encrypts session secrets with a non-exportable Android Keystore key, and holds them in the iOS Keychain with device-only access rules.

  • Device binding

    Ties a session to the app instance and device that created it.

  • Channel checks before send

    Confirms the connection is verified before any token leaves the device.

  • Session risk signals

    Sends changes in device and app risk to your backend during the session.

  • Hooking detection

    Detects instrumentation reaching into the code that reads and writes session material.

  • DNS and connection integrity

    Makes sure the session is sent to a declared endpoint for your hostname.

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 session protection is introduced

  1. Trace the session

    Follow each token from sign-in to expiry, noting every place it is stored or sent.

  2. Move secrets to key storage

    Session secrets move under platform key storage, set up separately for Android and iOS.

  3. Bind and signal

    Sensitive requests carry device-bound proof and risk signals your backend verifies.

  4. Agree recovery

    Decide with your identity team when a user re-authenticates and when a session ends.

  5. Test the journeys

    Replay, network change and proxy scenarios run on the protected build before enforcement.

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.

Otukan makes a stolen session token hard to reuse and easy for your server to spot. It protects the session your app carries over TLS from sign-in to expiry: it stores session secrets in platform key storage, binds each session to the app instance and device that created it, checks the channel before a token is sent and re-evaluates risk while the session runs. Your backend receives the signals and decides whether to continue, step up or end the session. Encryption strength and certificate trust are handled by separate transport controls on Android and iOS.

This control sits inside network protection.

Trust boundary

A session crosses three boundaries, and each one needs its own check.

BoundaryWhat an attacker wantsOtukan’s partYour backend’s part
In transitRead or reuse the token as it travelsChecks the channel is verified before the token is sentAccepts tokens only over validated connections
On the deviceCopy the token from storage or memoryPlatform key storage, hooking and modified-device checksTreats risk signals as input to the session decision
At the serverPresent a copied token from elsewhereAdds device-bound proof to sensitive requestsVerifies the proof and refuses mismatches

Hostile intermediaries

An interception proxy on a public network, or an extra certificate authority installed on the device, lets an attacker read tokens the moment they are sent. Otukan’s channel check keeps session material off a connection that an unapproved party is inspecting. Key pinning for your most sensitive domains adds a second line; see mobile app certificate pinning.

App and backend identity

Binding turns a stolen token into one your server can recognise and refuse. The proof Otukan attaches comes from the app instance on that device, so the same token presented by a script or another phone fails at your server rather than inside the app.

Lifecycle

Sessions often outlast the conditions they started in. Plan for the changes that happen mid-session.

Certificate changes

Renewing a server certificate does not end valid sessions. Binding relies on the app instance and device, not on a particular server certificate, so a routine renewal passes and users stay signed in.

Network transitions

A user starts a payment on office Wi-Fi and finishes on mobile data. Otukan re-validates the new channel before sensitive calls resume, rather than trusting a check made on the previous network.

Long-lived sessions

Many apps keep users signed in for weeks with a refresh token. That token is the most valuable item on the device, so Otukan keeps it in device-only key storage on each platform and requires device-bound proof whenever it is exchanged for a new session.

Approved enterprise proxies

Some organisations inspect all traffic through a proxy with its own root certificate. For their users, your team declares which domains may pass through inspection and which require re-authentication on a direct connection. The choice is written down and tested before enforcement.

Availability

Aggressive session rules that lock out real users create support load and push people to weaker channels. Otukan agrees recovery before switching enforcement on.

Failure handling

When a check fails, the app does not send the token and tells the user what to do next: switch networks, update the app or sign in again. Screens that need no session keep working.

Fallback

The only fallback is fresh authentication over a verified connection. A session is not downgraded to a weaker form of proof to keep it alive.

Sign-out and revocation

When your backend ends a session, whether after a risk signal or at the user’s request, the app removes the matching session material from key storage as well. A token revoked on the server is not left waiting on the device.

Recovery

Session events are grouped by account, platform and network type, so your team can tell a theft pattern from a misconfigured proxy. Before enforcement, Otukan helps you replay a copied token from a second device in an authorised lab, confirm the same journey passes on a legitimate device, and repeat install, update, sign-in and your most sensitive flow, recording versions, devices and the reviewer.

The risk signals that travel with each session are covered on session risk signals.

Common questions

  • Does TLS not already protect the session?

    TLS protects the session while it travels. It does nothing for a token once it sits in app storage, in memory or in the hands of someone who copied it. Session protection covers those places: where the token is kept, whether it can be used from another device and whether the risk on the device has changed halfway through a long session.

  • Will users be signed out more often?

    Only where your policy says so. Otukan reports risk changes to your backend, and your team decides which flows need fresh authentication. Most teams start in observe mode, see how often each condition appears for real users, and then step up only the actions that carry money or personal data.

  • How does this work with our identity provider?

    Your identity provider still issues and revokes tokens. Otukan protects those tokens on the device, adds device-bound proof to sensitive requests and sends risk signals alongside them. Your backend, or the provider's own rules, combines those inputs and makes the decision.

  • Is storage handled the same way on Android and iOS?

    No. On Android, Otukan encrypts session material with a key held in the Keystore, which cannot be exported and is hardware-backed on devices that provide it. On iOS, it uses the Keychain, whose access rules decide when an item can be read and whether it may leave the device in a backup. Otukan sets up each platform separately and tests both.

On the mobile engineering team?

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

Make stolen sessions hard to reuse

Tell us the platform, the framework, how your app signs users in and how long its sessions last. We do not ask for tokens, private keys, binaries or production credentials.

Or request a technical demo