Application security feature

Cryptographic controls

How to evaluate cryptographic controls in a mobile app: what each key protects, who owns its lifecycle, and how Otukan guards key use on Android and iOS.

  • Android
  • iOS
  • Flutter
  • React Native
Stolen or misused keys is met at the key placement boundary before it reaches the appStolen or misused keysKey placementYour app
  • Keys where they belong

    Otukan keeps key material out of readable code and steers it into the Android Keystore or iOS Keychain wherever the platform offers them.

  • Guarded key use

    The code that loads, unwraps and calls keys is obfuscated and watched, because attackers aim at key use, not at the algorithm.

  • A lifecycle you own

    Generation, access, rotation and recovery are mapped per key, so your team knows who acts when a device is lost or a key must change.

Key threats Otukan handles

Choose a key threat to see what Otukan notices, what the app does and what reaches your server.

Keys embedded in code

  1. Detect

    The protected build flags embedded key material, and string constants that must ship are encrypted in the package.

  2. Respond

    Your team moves powerful keys to the server or the platform store; the rest stay encrypted until use.

  3. Report

    The build report shows which embedded values shipped encrypted.

Hooked cryptographic calls

  1. Detect

    Otukan detects instrumentation attached to the functions that encrypt, decrypt and sign.

  2. Respond

    The operation is refused or the session ends, following your policy for that flow.

  3. Report

    Your backend receives the signal and can reject the signed request.

Key use on a modified device

  1. Detect

    Root and jailbreak signals are checked before sensitive key operations run.

  2. Respond

    You decide whether signing and decryption continue on a device whose OS no longer enforces isolation.

  3. Report

    A device-integrity signal travels with the request for your risk decision.

Forged request signatures

  1. Detect

    Requests are signed with a device-held key your server registered, alongside runtime signals from the app.

  2. Respond

    Requests signed outside the genuine app fail verification on your server.

  3. Report

    Your server logs the failed signature with the runtime context.

Cryptographic controls in Otukan

Otukan protects the places where keys are stored, reached and used, and links the controls that sit beside them.

  • Platform-backed key storage

    Moves app keys into the Android Keystore and iOS Keychain, scoped per platform, instead of files or code.

  • Hardened key paths

    Obfuscates the routines that fetch, unwrap and pass keys, so they are hard to find and harder to reuse.

  • Embedded key findings

    Flags key material found in the build so reviewers can decide where each value should live.

  • Hooking detection

    Finds instrumentation that intercepts function calls to read arguments or change return values.

  • Secrets protection

    Encrypts API keys and configuration values that must ship with the app, and guards their use.

  • Certificate pinning

    Ties the app's connections to the server identities you expect, so intercepted traffic is refused.

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. Map each key

    Record what each key protects, where it is created and which flows use it.

  2. Assign ownership

    Decide which keys the platform holds, which your server holds and which ship encrypted.

  3. Protect key use

    Otukan hardens key paths and watches them during sensitive operations.

  4. Plan the changes

    Agree rotation and recovery steps before release, not after an incident.

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.

Evaluate cryptographic controls in a mobile app by following each key rather than each algorithm. For every key, ask what it protects, where it is created, which code can reach it, how it changes and how it is replaced when a device is lost. Otukan keeps key material out of readable code, moves it into the Android Keystore and iOS Keychain wherever the platform offers them, hardens the code that uses keys and detects instrumentation attached to it, across Android, iOS, Flutter and React Native apps. Encryption protects data at rest and in transit. It does not protect plaintext while your app is using it, which is where runtime controls take over.

Data inventory

Most apps use cryptography in more places than their teams expect. The evaluation starts by naming each one and the boundary it defends.

What is protectedTypical keyBoundary it defendsWhere the key should live
Local records and cached filesSymmetric data keyFiles on the device if another process or a backup reads themWrapped by a platform-backed key
Session and refresh tokensWrapping keyToken theft from storageAndroid Keystore or iOS Keychain
Request signaturesPrivate signing keyRequests forged outside the genuine appCreated on the device, never exported
Payment or identity payloadsServer public keyPayloads read in transit beyond TLSPublic key in the app; private key on the server
Offline licencesServer verification keyLicence files edited by the userPublic key in the app, integrity-protected

Two patterns show up in almost every review. A symmetric key sits in code or a resource file because it was the quickest way to ship. And a server credential sits in the app because a feature once needed it offline. Both belong elsewhere, and Otukan’s build report makes them visible.

Stored-data design for each platform is covered on Android app data encryption and iOS app data encryption.

Key lifecycle

Every key has four moments, and each moment has an owner. Writing the owners down is the most useful document an evaluation produces.

MomentPlatformYour app with OtukanYour backend
GenerationCreates keys inside the key store, hardware-backed on Android devices that support itRequests keys with the right usage limitsIssues server-side keys and registers device public keys
AccessEnforces user authentication or biometric gating where setReaches keys only through hardened code paths, and watches for hookingChecks signatures and runtime signals
RotationStores the new keyRe-wraps local data under the new keyDecides when rotation is due and retires old keys
RecoveryDoes not move device-only keys to a new phoneRe-enrols after the user proves identityRevokes old device keys and issues new ones

Platform facts to respect

On Android, the Keystore keeps key material outside the app’s process, and on devices with secure hardware it can hold keys there. On iOS, the Keychain stores items under accessibility classes, and the device-only classes keep an item out of migration to a new phone. On supported iPhones, the Secure Enclave holds certain private keys for signing and key agreement. It is not a bulk encryption engine. Otukan handles each platform on its own terms.

Runtime scope

Encryption ends where use begins. To show a statement, the app decrypts it. To sign a request, the app calls the signing key. Those moments are what attackers target on a device they control.

When plaintext is needed

  • Displaying decrypted records on screen.
  • Building a request body before it is signed or encrypted.
  • Comparing a user’s input with a stored secret.

What encryption does not prevent

  • A hooked function returning plaintext to an attacker as it passes through.
  • A debugger pausing the app just after decryption.
  • A modified device on which the OS no longer isolates the key store.
  • Screen capture of decrypted content.

Otukan closes this gap with runtime controls: it detects hooking of cryptographic functions, checks device integrity before sensitive key operations and sends signals to your backend so the server can reject a request that was signed on a compromised path. Controls for plaintext held in memory are on memory data protection.

Testing the key flows

Your team and ours agree a key map and test it. In an authorised lab, we hook the signing function on a protected build and confirm the signal fires and the server rejects the request. On a clean device, the same journey signs and verifies with no signal. Rotation and recovery are rehearsed on real devices, then install, update and sign-in are repeated for each protected release, with versions, results and reviewer recorded.

How key handling sits beside obfuscation, asset encryption and screen controls is covered on code and data protection.

Common questions

  • Does Otukan replace the platform's cryptography?

    No, and it should not. Android and iOS provide well-reviewed cryptographic libraries and key stores. Otukan helps your app use them well: keys go into the platform store, the code around key use is hardened, and tampering with that code is detected. Writing your own ciphers adds risk without adding strength.

  • Can the Secure Enclave encrypt our local database?

    Not directly. On supported iPhones, the Secure Enclave holds certain private keys for signing and key agreement and never releases them. Bulk data is encrypted with a separate symmetric key, which can itself be protected by the Keychain. Otukan helps your team design that layering rather than expecting one component to do everything.

  • What happens to device keys when a user restores to a new phone?

    Keys marked as device-only on iOS, and keys held in the Android Keystore, do not move to a new device through backups. That is usually what you want for signing keys. Plan recovery through your server: the new device proves the user's identity, receives fresh keys and the old ones are revoked.

  • Does platform cryptography make our app certified?

    Certification applies to a named cryptographic module in a named configuration, not to an app because it calls that module. If your programme requires validated cryptography, name the requirement in your enquiry. We will map which platform cryptographic modules your app relies on, so your assessor can check the certificates that apply to them.

On the mobile engineering team?

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

Put every key in its place

Tell us the platform, the framework and what your app encrypts or signs, such as local records, request signatures or payment payloads. Keep keys, certificates and production data to yourself; we never ask for them.

Or request a technical demo