Technical write-up · Protocol design

V Cipher: QR transport, message authentication and replay boundaries

Why numbered QR frames need separate message authentication, how the two-phone roles differ, and why replay detection is session-scoped.

By V · Published 23 October 2026 · Experimental project notes

Experimental beta. Use non-sensitive test data. Real-phone validation and independent security review are incomplete. Do not rely on these tools for sensitive communications. See what still blocks a wider launch.

By V · 23 October 2026. V Cipher 0.1.9 research is a separate experimental workflow from the ordinary VVault passphrase tool. Physical two-phone camera operation and independent review remain incomplete.

Separate identity operations from transfer

The Vault role holds identity keys and creates or opens messages. The Relay role moves public contact cards and encrypted bundles. The software asks for offline setup and isolation confirmation before Vault operations, but those are usability gates: they cannot prove an air gap or a trustworthy device.

Two encryption layers and a signature

The documented design wraps a fresh AES-256-GCM key using RSA-OAEP-3072 with SHA-256. ECDSA P-256 with SHA-256 signs the canonical VCMESSAGE2 envelope, including the sender, recipient and random message ID. Outer authenticated data binds the header. An inner passphrase-encrypted message additionally requires the conversation secret.

Identity fingerprints still need comparison through a trusted separate channel. A valid signature ties a message to the key being checked; it does not establish that an unverified contact card belongs to the intended person.

QR checksums are not signatures

The VCQR1 framing format includes a whole-transfer SHA-256 checksum, frame count, frame index and chunks of up to 360 base64 characters. Transfers are bounded to 96 frames and 24 KiB; messages are limited to 2,048 UTF-8 bytes. Frame collection expires after five minutes, with ordinary session locking clearing it sooner.

The checksum detects corruption or mixed frames. Anyone who can construct a transfer can compute a checksum, so it cannot authenticate a sender. The recipient Vault must still validate the encrypted message and signature after reassembly.

Replay detection has a lifetime

The replay tracker remembers at most 1,024 successful opens in one unlocked session. It resets on lock or reload. This catches repeated opens within that session; it is not durable replay prevention across sessions or devices. Random message IDs alone do not provide persistent replay history.

No forward secrecy claim

The design has no key ratchet. Long-term key compromise and captured historical bundles need to be considered alongside the independent conversation-secret layer. Multiple layers do not justify describing the system as impregnable.

What the tests can establish

Tests exercise envelope authentication, tampering, key/backup consistency, bounded QR reassembly and synthetic encoder/decoder interoperability. They cannot establish real-phone camera compatibility, OS-level isolation or the absence of cryptographic design flaws. Test only fictional messages and report security findings privately.

Protocol and limits · Protocol source · QR framing source


← All guides · Share test feedback ↗

Keep exploring