← App | CipherBrick Pro logoCipherBrickPro  Help
☰ Jump to section
No sections match your search.
Using this page
  • Use the search bar (top right) to filter sections as you type. Only sections matching your query will be shown.
  • On desktop, the sidebar on the left lets you jump to any topic. It highlights the section currently in view as you scroll.
  • On mobile, tap Contents at the top to open the section menu.

What is CipherBrick Pro?

CipherBrick Pro lets you encrypt a message on your device and share only the scrambled result - through a messaging app, email, a QR code scanned across a room, or an audio signal played through a speaker. Only someone with the right key can read it. Nothing you type is sent to any server. No account is required. No internet connection is needed once the app has loaded.

Under the hood it uses AES-256-GCM, a modern authenticated encryption standard, to encrypt and decrypt text directly on your device. It also supports asymmetric encryption via a hardware security key (HKPM mode), and a built-in wizard for securely agreeing on encryption credentials with another person without saying the key aloud.

CipherBrick Pro main interface

The main interface in Standard mode

Quick Start

Example: You need to share something sensitive with someone - account details, a private note, or personal information - over a standard messaging channel. CipherBrick Pro encrypts it on your device first. The recipient pastes the encrypted text into their own copy of the app and decrypts it using the same Key and Salt, adding a private layer to an otherwise ordinary conversation.

Get encrypting in under a minute using Standard mode.

Encrypting a message

  1. Open CipherBrick Pro. The Encrypt tab is active by default.
  2. Type your message in the input box (up to 500 characters).
  3. Enter a Key: your secret password. Keep this private. A strength meter below the field updates as you type.
  4. Enter a Salt: any text you like (e.g., river77). Both sides need the same value; the salt itself is not secret.
  5. Press Run. Your encrypted output appears below.
  6. Press Copy, QR, Payload, or Audio to share it.
Choosing a strong Key: The strength meter rates your key as Weak, Moderate, or Strong based on four factors: at least 12 characters, a mix of uppercase and lowercase letters, at least one number, and at least one symbol. Symbols include punctuation, spaces, and special characters - so a natural sentence works well. A key that meets all four criteria will rate as Strong. A short or simple word will rate as Weak, and weak keys make the encryption easier to break. Something like The cat sat on 9 mats! is strong, memorable, and easy to share verbally with the other person.

Decrypting a message

  1. Switch to Decrypt mode.
  2. Use QR to scan, Payload to paste, or Audio to receive the encrypted text.
  3. Enter the same Key and Salt used during encryption.
  4. Press Run. The original message appears in the output.
plaintext Message secret Key + Salt key derivation PBKDF2 authenticated encryption AES-256-GCM output Ciphertext

How encryption works: your Key and Salt are run through PBKDF2 to derive an AES-256 key, which encrypts your message

Encrypt form filled in with message, key, and salt

Encrypt tab with message, key, and salt filled in

Encrypted output after pressing Run

After pressing Run: encrypted output ready to share

Decrypt mode showing receive options

Decrypt mode: paste, scan, or receive audio to load the payload

Both sides must use the exact same Key and Salt. Even a single character difference will cause decryption to fail.

Modes

CipherBrick Pro has three operating modes. Select one in Settings → Mode. You can change modes at any time. Previously encrypted messages remain decryptable with the same credentials.

Mode What you need Best for
Standard Key + Salt Full control, any use case
Simple Key only Quick encryption, one value to share
HKPM FIDO2 hardware security key No shared secret, asymmetric encryption
Settings modal showing Mode dropdown

Mode selector in Settings: Standard, Simple, or HKPM

Standard

Standard mode requires a Key and a Salt. The key is your secret; keep it private and do not send it through the same channel as the encrypted message. The salt adds randomness to the encryption process and does not need to be secret, but both sides must use the same value.

Using a different salt each time means the same message encrypted with the same key will produce different ciphertext. Agree on a salt in advance or share it alongside the encrypted message.

Simple

In Simple mode, the salt is automatically derived from the key. Only one value, the key, needs to be shared. This makes it easier when you don't want to manage two separate credentials.

The tradeoff: because the salt is derived deterministically, encrypting the same message with the same key twice will produce the same ciphertext. For most casual use this is fine, but Standard mode gives stronger guarantees.

HKPM: Hardware Key Private Message

HKPM uses a FIDO2 authenticator instead of a typed key and salt. This can be a physical security key (such as a YubiKey) or a passkey stored on your device using biometrics (fingerprint, face unlock). Either way, your authenticator generates a stable cryptographic identity. Encryption is asymmetric: a message encrypted to you can only be decrypted with your authenticator present. No shared password is needed.

FIDO2 / YubiKey Hardware Security Key PRF extension stable identity P-256 Key Pair share openly Public Key stays in hardware Private Key anyone can encrypt messages to you only you decrypt (touch required)

HKPM key model: your public key is safe to share; your private key never leaves the hardware

Setting up HKPM:

  1. Go to Settings → Mode → select HKPM (Hardware Key) and save.
  2. Insert or tap your hardware key, then press Activate Hardware Key.
  3. Touch the key when prompted. Some keys, including YubiKey, may first ask for a PIN before the touch. You may be prompted twice: once to register or authenticate, and once to derive your key pair.
  4. Your public key appears. Share it with anyone who wants to encrypt messages to you.

Encrypting a message to someone: paste their public key into the Recipient's Public Key field, type your message, and press Run.

Decrypting a message sent to you: paste the CBHK1 payload and press Run. Touch your key when prompted.

Main app with HKPM mode active

HKPM mode: hardware key UI replaces the key and salt fields

Your public key is safe to share openly. Only your physical hardware key can decrypt messages addressed to you.
Firefox does not support the PRF extension that HKPM depends on, on any platform. On desktop use Chrome 115+ or Edge 115+. On Android use Chrome 120+. On iOS use Safari 17+ (iOS 17 or later).

Key Exchange

Example: You want to start exchanging encrypted messages with someone but have not yet agreed on a Key and Salt. The Key Exchange wizard handles that setup securely. Both of you exchange only public information and independently arrive at the same credentials. No need to agree on a password in advance or share anything sensitive to get started.

The Key Exchange wizard helps two people securely agree on a shared Key and Salt without ever transmitting them in plaintext. It uses ECDH (Elliptic Curve Diffie-Hellman), the same algorithm used by TLS and most secure messaging protocols.

Alice keep secret Private Key A share openly Public Key A Bob keep secret Private Key B share openly Public Key B Public Key A Public Key B Same Shared Secret → Key + Salt

ECDH key exchange: public keys cross an open channel; the shared secret never does

When to use it

Use Key Exchange when you need to set up an encrypted channel with someone who hasn't pre-agreed on credentials. Instead of sending "the password is fluffy_cat_2024" (which anyone can read), the wizard derives a shared secret that neither party ever has to say aloud.

Enabling Key Exchange Tools

Key Exchange Tools are only available in Standard mode. In Settings, select Mode → Standard, then tick Enable Key Exchange Tools. A 🔑 button appears in the top-right corner of the app.

Step-by-step

One person is the Sender, one is the Recipient. Both need CipherBrick Pro open.

  1. Both parties open the Key Exchange Wizard (🔑 button) and generate or import ECDH keys. First-time users can click Generate New Keys. Returning users can click Import Existing Keys and either paste their keys or load them directly from a previously downloaded key file.
  2. Each person shares their public key with the other via copy-paste, QR, or audio (all built into the wizard).
  3. Each person pastes the other's public key into the wizard and clicks Continue.
  4. The wizard derives a shared Key and Salt automatically. Both sides compute the same values.
  5. Close the wizard. The Key and Salt fields will be pre-filled. Press Run to encrypt or decrypt.
Key Exchange Wizard step 1: choose a role

Choose your role: Sender or Recipient

Key Exchange Wizard step 2: share your public key and paste the other person's

The exchange step: share your public key and paste the other person's to derive a shared secret

Key Exchange Wizard step 3: credentials ready, Use in CipherBrick button visible

Credentials derived: click Use in CipherBrick to load the Key and Salt automatically

Wizard session keys are held in memory only and expire after one hour. They are cleared when the tab closes or the session times out. To reuse the same key pair in a future session, use Download Keys after generating. You can reload the file on your next visit using Import Existing Keys.
The downloaded key file contains your private key. Anyone with access to this file can impersonate you in a key exchange. Store it somewhere secure - treat it the same as you would a password. Do not share it, leave it in your downloads folder, or store it in a location others can access.

Managing keys mid-session

If you already have a key pair loaded and want to switch to different keys, click Manage Keys next to the Keys Ready indicator. From there you can keep your current keys, generate a new pair, import different keys, or clear all keys entirely.

Key Exchange Wizard: Manage Keys screen with a key pair loaded, showing the public key and management options

Manage Keys: review your loaded key pair or switch to different keys mid-session

Using your hardware key in the wizard

Inside the wizard, selecting Use Hardware Key uses your YubiKey's stable cryptographic identity instead of an ephemeral software key pair. This is called HKKE (Hardware Key Key Exchange). The wizard produces a CBHKX1 payload that embeds the recipient's encrypted credentials, so they can unwrap them by tapping their hardware key. No separate public key paste is required.

Hardware Key

Example: You receive sensitive messages from multiple people and want a simpler approach than managing a shared password with each of them. In HKPM mode, you share your public key once. Senders encrypt directly to you using it. Only your hardware key or device passkey can decrypt those messages. No shared credentials to set up or keep track of.

What you need

You need a FIDO2 authenticator with PRF extension support. There are two options:

  • Physical security key: YubiKey 5 series (NFC, C, Ci) or any FIDO2 key with PRF. Use Chrome 115+ or Edge 115+ on desktop. Connect via USB-A, USB-C, or NFC.
  • Passkey (device biometrics): Chrome 120+ on Android using your fingerprint or screen lock. Safari 17+ on iOS 17+ using Face ID or Touch ID via iCloud Keychain.
YubiKey 4 and earlier do not support PRF and will not work with HKPM or HKKE. Firefox does not support PRF on any platform.

HKPM vs HKKE

HKPM HKKE
What it is Full encryption mode Key Exchange using your hardware key identity
Where to find it Settings → Mode → HKPM Key Exchange Wizard → Use Hardware Key
Output format CBHK1 payload CBHKX1 payload
Sender's public key Embedded in payload Embedded in payload
Recipient needs Their hardware key to decrypt Their hardware key to unwrap shared credentials
Who can communicate One-to-one only - each CBHK1 message is encrypted for one specific recipient's public key One-to-one or one-to-many - derives a shared Key+Salt that anyone with those values can use to encrypt and decrypt

Cross-device use

Your hardware key produces the same cryptographic identity on any device. Carry the key, and you carry your identity. On a new device, you will be prompted to register the key the first time. Subsequent sessions use a cached credential ID for faster activation.

Session lifecycle

Activating your hardware key starts an in-memory session. The derived keys are never written to disk. When the session times out (default: 5 minutes of inactivity), all in-memory hardware key state is cleared and you will need to re-activate on the next use.

Audio & QR

After encrypting, four sharing options appear: Copy, QR, Payload, and Audio. In Decrypt mode, the receiving options are QR (scan), Payload (paste), and Audio (listen).

QR Code

QR generates a scannable code containing the full encrypted payload. The recipient opens CipherBrick Pro, switches to Decrypt, and presses QR to scan it with their camera.

QR is the most reliable transfer method. It has no timing dependency and works in any environment. It is best suited for in-person transfer.

Messages approaching 500 characters produce a dense QR code that may be harder to scan. For very long messages, use Payload (copy-paste) instead.
QR code output after encryption

QR output: scan this with the other device in Decrypt mode

Audio Transmission

Audio transmits the encrypted payload as an acoustic signal using the GGWave protocol. The recipient opens CipherBrick Pro, switches to Decrypt, presses Audio, and holds their device near the sender's. Start transmission on the sender's side.

Audio works best in quiet environments within about one meter. Microphone permission is required on the receiving device.

Audio protocols (configurable in Settings → Audio):

Protocol Speed Audible Best for
Normal Slowest Yes Noisy environments, maximum reliability
Fast (default) Moderate Yes Most situations
Fastest Quickest Yes Short messages, quiet environment
[Ultrasound] Normal Slowest No Silent transfer, close range
[Ultrasound] Fast Moderate No Silent, balanced
[Ultrasound] Fastest Quickest Varies Device-dependent reliability
On Android and iOS, Normal protocol is used automatically regardless of the setting. This is a platform compatibility measure.

Security & Privacy

What is stored

Data Location Cleared when
Mode preference localStorage Restore Defaults
Timer settings (clipboard & session timeouts) localStorage Restore Defaults
Hardware key credential ID localStorage Restore Defaults or clearing browser data
Key Exchange wizard session keys sessionStorage Tab close, session timeout, or 1-hour expiry

What is never stored

  • Your encryption key or salt (never written to disk or transmitted)
  • Plaintext messages (held in memory only, cleared on Reset or timeout)
  • Decrypted output (cleared on Reset or session timeout)
  • Hardware key private material (derived in memory only, never extractable)

Session model

The session timeout (default: 5 minutes of inactivity) clears all in-memory state and sessionStorage, including input fields, output, wizard keys, and hardware key sessions, then resets the page to its initial state.

The clipboard timeout (default: 30 seconds) replaces any copied CipherBrick output in your clipboard with an empty string, reducing the window during which a lost or stolen device could expose a copied payload.

Network

CipherBrick Pro makes no network requests during normal operation. All encryption, decryption, key generation, and key exchange happen locally. The service worker caches all app assets for fully offline use. After the first visit, an internet connection is not required.

Cryptographic primitives

All encryption uses AES-256-GCM via the Web Crypto API built into your browser. HKPM and the key exchange wizard use ECDH P-256, also via Web Crypto. No custom cryptographic implementations are used; only the browser's native, audited primitives.

FAQ

Can I decrypt with a different key or salt?

No. The exact same key and salt used for encryption are required. Even a single character difference will cause decryption to fail with no output.

What's the difference between a key and a salt?

The key is your secret password. The salt modifies how the key is used inside the key derivation function (PBKDF2), which produces the actual AES-256 encryption key. Using a unique salt each time means the same password won't produce the same ciphertext twice, even for identical messages.

Is 500 characters enough?

Yes, for most use cases. 500 characters covers a paragraph of text. The limit keeps QR codes scannable and audio transmission reliable. For longer content, split the message across multiple encryptions.

Can I install this on my phone?

Yes. CipherBrick Pro is a Progressive Web App (PWA). On iOS, open it in Safari, tap the Share icon, and select "Add to Home Screen." On Android, open it in Chrome and tap "Add to Home Screen" or "Install App." It works offline after installation.

Why doesn't HKPM work in Firefox?

Firefox does not support the PRF (Pseudo-Random Function) extension that HKPM depends on, on any platform. Use Chrome 115+ or Edge 115+ on desktop, Chrome 120+ on Android, or Safari 17+ on iOS 17+.

Is it safe to share my public key?

Yes. Public keys are designed to be shared openly. In both HKPM and the key exchange wizard, your public key can be posted anywhere without compromising security. The corresponding private key never leaves your device or hardware key.

What does the Reset button do?

Reset clears the input, output, key, and salt fields. It does not affect your settings, hardware key session, or wizard keys.

What happens when the session times out?

All input and output fields are cleared, sessionStorage is wiped (including wizard keys and hardware key sessions), and the app returns to its initial state. Your settings (mode preference, timer values) are stored in localStorage and are unaffected.

Can someone decrypt my message without the key?

No. AES-256-GCM is computationally infeasible to break without the key. The ciphertext is safe to transmit over any channel, including public ones.

Audio transmission didn't work. What should I try?

Move the devices closer (within one meter). Reduce background noise. Switch to Normal protocol in Settings → Audio for maximum reliability. Ensure microphone permission is granted on the receiving device.