Skip to content
OnionZero
STATUS: 100% AIR-GAPPED · CORE INTACT Technical Briefing
OnionZero
STATUS: 100% AIR-GAPPED · CORE INTACT
Technical Briefing
TR EN

OnionZero — Software Protection & Licensing

Your Software. Your Fortress.

OnionZero is an end-to-end protection and licensing fortress: it encrypts your PHP source code, binds signed licenses to devices — and it keeps working even on air-gapped sites.

Explore the products
Hardware Fingerprint Bus CPU ID Motherboard UUID MAC hash Ephemeral Key Exchange AES-256-GCM AES-256-GCM AES-256-GCM Signature Envelope ED25519 ENVELOPE ED25519 ENVELOPE ED25519 ENVELOPE ED25519 ENVELOPE Sealed Vault Lock sealed
Hardware Fingerprint Bus RNG·01
  • CPU IDanchor bound
  • Motherboard UUIDanchor bound
  • MAC hashsalted · bound
  • CipherAES-256-GCM
  • Session keyephemeral · per boot
  • Plaintext at restnever
  • Signature64-byte Ed25519
  • Public keyembedded in core
  • Verify pathfully offline
  • Statesealed
  • Tamper tripwirearmed
  • Rollback countermonotonic

hover or focus a ring to inspect its telemetry

Ed25519
Signed license protocol
100%
Offline capable
695+
Automated tests

Built-in trust

Ed25519 digital signature OZP1 encryption format TPM & motherboard anchors Anti-rollback state store Crypto proven with Wycheproof vectors Windows + Linux

01Inside the citadel

Proof, not promises — four live exhibits

Every panel below is a working part of the protection stack, drawn exactly as it behaves in the field.

live exhibit · 01

Bytecode Disassembler

Steal the file, lose the key: away from its bound device, an OZP1 payload is high-entropy noise.

DEVICE BOUND · SEAL INTACT TAMPER LOCK · EXECUTION REFUSED

attacker view — raw OZP1 bytes

000000  C8 1D A4 7B EF FC 85 DA 0B E8
00000A  01 A6 E7 94 3D 32 83 00 39 7E
000014  DF 2C F5 8A FB 18 71 56 D7 C4
00001E  AD E2 73 30 A9 2E CF 5C 65 3A
000028  EB 48 E1 06 C7 F4 1D 92 63 60
000032  19 DE BF 8C D5 EA DB 78 51 B6
00003C  B7 24 8D 42 53 90 89 8E AF BC
000046  45 9A CB A8 C1 66 A7 54 FD F2
000050  43 C0 F9 3E 9F EC B5 4A BB D8
00005A  31 16 97 84 6D A2 33 F0 69 EE
000064  8F 1C 25 FA AB 08 A1 C6 87 B4
00006E  DD 52 23 20 D9 9E 7F 4C 95 AA
000078  9B 38 11 76 77 E4 4D 02 13 50
000082  49 4E 6F 7C 05 5A 8B 68 81 26
00008C  67 14 BD B2 03 80 B9 FE 5F AC
000096  75 0A 7B 98 F1 D6 57 44 2D 62
0000A0  F3 B0 29 AE 4F DC E5 BA 6B C8
0000AA  61 86 47 74 9D 12 E3 E0 99 5E

DECRYPTION FAILED · DEVICE KEY MISMATCH

on this disk: ciphertext only — nothing to disassemble

engineered reality — ozguard in memory

DISK OZP1 ciphertext RAM · ozguard zend opcodes
  1. OZP1 container mapped read-only from disk
  2. Per-file key unwrapped inside the C core (AES-256-GCM)
  3. Opcodes streamed straight into the Zend Engine
  4. Zero plaintext touches disk, page cache or swap

re-probing hardware anchors…

CPU ID mismatch · TPM state mismatch

device binding violated — key unwrap refused

ONIONZERO LOCKDOWN: tamper state persisted

live exhibit · 02

Hardware Fingerprint Radar

Three silicon anchors triangulate one device identity.

CPU ID TPM 2.0 MB UUID

CPU ID · processor serial + feature bits TPM 2.0 · PCR state + sealed witness MB UUID · motherboard identifier

anchors locked · fingerprint stable

live exhibit · 03

Air-Gapped Bunker

A license verifies with exactly 0.0 KB of internet. Flip the switch and watch the network die — the math does not care.

Online Air-gapped
customer site public internet

uplink severed — verification continues offline

  • Optional license-server beacon
  • Signed certificate cached for outages
  • Grace window keeps clients alive
  • Ed25519 public key embedded in the core
  • License signature verified locally
  • Monotonic counter advanced on device
  • Zero bytes left the facility

live exhibit · 04

Monotonic Anti-Rollback Counter

A one-way ratchet persisted on the device: state only moves forward, so a restored VM snapshot exposes itself instantly.

device state height 0x0000A41F

state sealed, counter advanced ROLLBACK REJECTED — older state image refused

live exhibit · 05

Four protection layers, one sealed core

From PHP source to ready-made Windows binaries, Android apps and Node.js services — every layer shares the same device-bound sealing: nothing readable ever rests on the disk, in any world.

PHP extension · ozguard

PHP Extension

The native ozguard extension runs your encrypted OZP1 packages by decrypting them in memory only — plaintext never touches disk, page cache or swap.

  • PHP 8.0–8.5 on Windows + Linux
  • In-memory decryption — zero plaintext at rest
  • Device-bound keys unwrapped inside the C core

Windows · .exe / .dll

PE / Binary Protection

Encrypt a ready-made .exe or .dll — written in .NET, native code or Python. The protected program is decrypted in memory only, with its key cryptographically bound to the device anchor; self-integrity and anti-debug guards are built in.

  • In-memory execution — zero plaintext on disk
  • Self-integrity + anti-debug
  • Three license modes: none / offline / online

Android · APK

Android Protection

The compiled code of your app is encrypted inside the APK and comes alive in memory only — the native guard library covers three ARM ABIs and detects hooking toolkits such as Frida.

  • DEX classes encrypted inside the APK
  • In-memory class loading — no disk drop
  • anti-Frida native guard, 3 ARM ABIs

Node.js · single executable

Node.js Packaging

Pack your Node.js project into a single native executable. The sealed source rides inside the binary and is never unpacked to disk.

  • Single-executable build — no source tree shipped
  • Three license modes: none / offline / online
  • Device-bound licenses, same core as PHP

All four layers inherit the OnionZero core support line — PHP 8.0–8.5 — and the vendor public key is embedded in the runtime at build time: no key file or php.ini setting for your customers to manage. Compare the layers

02The dataflow

From human-readable PHP to a sealed runtime

One rail, four stations. After station 02 the bytes never exist as plaintext again.

  1. PHP source

    Your project, exactly as you wrote it.

    $app->boot();
  2. OZP1 seal

    AES-256-GCM envelope with a per-file ephemeral key.

    OZP1 · sealed
  3. ozguard execution

    The C extension decrypts in memory and feeds Zend.

    ozguard → zend_op_array
  4. License gate

    Ed25519 verify against the device fingerprint.

    ed25519_verify(lic, fp)

03How it works

A licensed product in the field, in three steps

No complex integration: encrypt, license, ship. OnionZero manages the rest.

Package and encrypt

Your PHP project is converted to the OZP1 format. Source code never reaches the customer as plaintext; only the ozguard extension runs it.

Issue device-bound licenses

Every license is cryptographically bound to the target device fingerprint; duration and feature flags are embedded inside the signed file. A license is valid on its own device only.

Customers install, you stay in control

The product verifies itself; on a license issue your customer meets a clear lock screen and a self-service activation wizard — no support burden lands on you.

Product model

Two distribution models for your needs

From full licensing to pure source protection — both on the same native core.

Recommended

Licensed distribution

Full control with timed, signed licenses.

  • Device, domain or IP binding
  • Duration + feature flags
  • Offline and online verification
  • Installation telemetry & lock events
Starter

Encryption only

Light-weight distribution focused on source protection.

  • Full source encryption with OZP1
  • Signed product configuration
  • Automatic update plumbing
  • Upgrade to licensed mode anytime

Compatibility

One core, many platforms

The same C core — on Windows and Linux, in the language you write.

PHP Node.js C# C++ Shell Windows Linux

Ready to protect your software?

Let us plan your distribution model together and suggest the OnionZero configuration that fits you best.

Contact Us