Engineering

Protection lifecycle

How Otukan runs mobile app protection across its lifecycle: least-privilege pipeline access, gated handoffs, pinned versions and planned rollback.

  • Android
  • iOS
  • Flutter
  • React Native
  • Least privilege by design

    The protection step reads the release artefact and the approved profile, writes its output, and touches nothing else in your pipeline.

  • Gated handoffs

    Protect, sign, verify and release each have an entry condition and an owner, so no stage runs on an unapproved input.

  • Pinned and reversible

    Every build names the profile and Otukan version it used, so upgrades are deliberate and the last known good pair is on hand.

What keeps the lifecycle under control

Four mechanisms that let protection change without surprising your release team.

  • Approval on every profile change

    A new control or a changed response takes effect only after the owners you name have approved that profile version.

  • Fail-closed protection step

    If protection cannot be applied as approved, the release build stops and logs why, so an unprotected artefact does not move on to signing.

  • Repeatable re-runs

    A retry on the same artefact and profile version applies the same approved protection, and the log keeps every attempt.

  • Server-side response tuning

    Where your design allows it, a control's response is relaxed or tightened from your server while a new build is prepared.

The lifecycle of a protection profile

  1. Approve the profile

    Your owners approve the controls and the response for each user flow, per platform.

  2. Apply in pipeline

    The protection step applies that approved version to every release build in your pipeline.

  3. Sign and verify

    Your team signs as today and tests the protected build on physical devices.

  4. Observe production

    Runtime signals from production show how each control behaves for real users.

  5. Revise and repeat

    Changes go into a new profile version and re-enter the same gated sequence.

Evaluate a protection lifecycle with three questions: who may change protection, in what order a protected build moves towards release, and what happens when a stage fails. Otukan answers all three inside the build and release pipeline you already run, for Android and iOS apps built natively or with Flutter or React Native. The protection step works with narrow access, each handoff has an owner and an entry condition, and every build is pinned to a known profile and Otukan version. This page covers authority, sequence and day-to-day operations; toolchain version support is agreed per app.

Authority

Service identity and permissions

Protection is a pipeline job, so it deserves the same scrutiny as any job that touches a release. Otukan’s protection step runs under its own service identity, separate from the identities that build, sign and publish. It holds the smallest set of rights that lets it do its work.

ActorMay doMay not do
Protection step identityRead the unsigned release artefact and the approved profile; write the protected output and its logRead signing keys, publish to a store, change source code, read production data
Profile approvers (your security and product owners)Approve a new profile version or reject itBypass the pipeline to push a build
Release ownerSign, test and submit the protected buildChange the approved profile inside a release run
Otukan’s engineersPropose profile versions and read logs you shareAccess your pipeline, keys or store accounts

Otukan’s engineers write this access list down with your platform team before the first protected release, so a reviewer can compare what was agreed with what the pipeline actually grants.

Artefact inputs and secret handling

The step takes two inputs: the release artefact your build produced and the profile version your owners approved. It needs no application secrets. API keys and private credentials belong on your server, not in the app, and the protection step neither reads nor stores them. Pipeline tokens that the step itself uses are scoped to its job and live in your secrets store, not in the repository.

Sequence

A protected build passes through gated handoffs. Each stage starts only when the previous one has left the record it needs.

StageEntry conditionOwnerHands on
ProtectRelease artefact built; profile version approvedYour pipeline, running the Otukan stepProtected artefact, profile version, step log
SignProtection finished without errorsYour release ownerSigned, protected build
TestSigned build availableYour QA teamResults for install, update, sign-in and sensitive flows
EvidenceTests recordedYour release ownerOne release record linking all of the above
ReleaseRecord complete and approvedYour release ownerStaged or phased rollout

On Android with Play App Signing, the key your team uploads with is not the key users receive; Google re-signs the app. Otukan sets up its integrity checks for the app signing certificate that reaches devices, not the upload key. Signing always follows protection, because any change to a signed artefact invalidates its signature. On iOS, your distribution certificate and provisioning profile sign the protected build as they sign releases today.

The records produced along this path are described on release evidence and auditability.

Operations

Failures and retries

Otukan’s protection step fails closed. If it cannot apply the approved profile, the release build stops and the log states which input or setting caused it, so no unprotected artefact reaches signing. A retry uses the same artefact and the same profile version, so a successful re-run applies exactly the protection that was approved, and the log keeps both attempts.

Versioning

Two versions travel with every build: the profile version, which your owners control, and the Otukan protection version, which your pipeline pins. Neither changes silently. A profile revision follows what production signals show, for example a response that proved too strict for one flow. An Otukan upgrade is handled like a toolchain upgrade, on a branch and a release candidate, before it becomes the default.

Rollback

Stores do not take a binary back. If a protected release misbehaves, your release owner halts the Google Play staged rollout or pauses the App Store phased release, then ships a new build with a higher version number. Because every build names its profile and Otukan version, the last known good pair is on hand and goes through the same gates. Where your design allows it, a control’s response can be relaxed from your server while the fix is prepared.

For how the pieces fit together, return to mobile app security.

Common questions

  • What access does the protection step need in our pipeline?

    Read access to the release artefact your build produces and to the approved protection profile, and write access to the location where the protected output goes. It does not need your signing keys, store accounts, source repository write access or production secrets. Otukan's engineers write the access list down with your platform team before the first protected release, so your reviewers can check it.

  • What happens if the protection step fails during a release build?

    The build stops and the failure is logged with the inputs and the profile version it was given. Nothing half-protected moves to signing. Your team re-runs the step once the cause is fixed, for example a changed build setting, and Otukan's engineers help read the logs when the cause is not obvious.

  • How do we move to a newer version of Otukan's protection?

    As a planned change, like a toolchain upgrade. The new version is pinned in a branch, applied to a release candidate and tested on your devices before it becomes the default. Until your owners approve the move, release builds keep using the version they were already pinned to.

Run protection like the rest of your release

Tell us your platforms, frameworks, the pipeline you release from and who approves security changes today. We do not ask for binaries, signing keys, pipeline secrets or production credentials.

Or request a technical demo