SOURCE_URL: https://majikah.solutions/products/majik-message/docs/wiki-argon2id --- title: "Argon2id" id: "wiki-argon2id" group: "majik-message" type: "products" version: "1.1.0" lastUpdated: "2026-02-19T00:00:00.000Z" difficulty: "Beginner" time: "3-4 minutes" tags: [argon2id, key-derivation, passphrase, at-rest-encryption, password-hashing, security, gpu-resistant, cryptography] --- # Argon2id > The memory-hard key derivation function that protects your private keys at rest — why login takes a few seconds and why that's a feature, not a bug ## Overview Argon2id is the algorithm Majik Message uses to convert your passphrase into the AES key that encrypts your private keys on your device. It is intentionally slow and memory-intensive — properties that make it extraordinarily difficult for attackers to crack passphrases through brute force, even with specialized hardware. ### What is Argon2id? Argon2id is a password-based key derivation function (PBKDF) — an algorithm designed to convert a human-memorable passphrase into a cryptographic key. It won the Password Hashing Competition in 2015 and is recommended by NIST as the gold standard for password-based key derivation. The 'id' variant combines two modes: Argon2i (resistant to side-channel attacks) and Argon2d (resistant to GPU-based attacks), providing defense against both attack classes simultaneously. ### Why Is Login Slow? (2–5 Seconds) When you unlock your Majik Message account with your passphrase, Argon2id runs to re-derive the AES key that decrypts your private keys. This takes 2–5 seconds — and that delay is intentional security. Argon2id's parameters require 64 MB of RAM and 3 iterations. This means an attacker trying to crack your passphrase by guessing millions of combinations cannot speed up the process with GPUs, ASICs, or parallel hardware: each guess requires 64 MB of memory and takes seconds. A powerful GPU cluster that could test billions of MD5 hashes per second can only test hundreds of Argon2id hashes per second. This turns a weak passphrase into a much stronger barrier. ### Majik Message Argon2id Parameters | Parameter | Value | Effect | | --- | --- | --- | | Memory | 64 MB | Each guess requires 64 MB of RAM — GPU parallelism is severely limited | | Iterations | 3 | The memory-intensive computation runs 3 passes — adds time cost | | Parallelism | 4 threads | Up to 4 CPU threads can be used per hash | | Output Length | 32 bytes | Produces a 256-bit AES key for encrypting private keys at rest | ### How Argon2id Protects Your Keys at Rest Your ML-KEM-768 and X25519 private keys are never stored in plaintext on your device. When you create or import an account, Majik Message runs Argon2id on your passphrase to produce a 32-byte AES-256 key. Your private keys are then encrypted with that AES key and stored in your local MajikKeyStore. When you unlock your account by entering your passphrase, Argon2id re-derives the same AES key (deterministically — same passphrase always gives the same key), and that key decrypts your private keys in memory for the duration of your session. Your private keys exist in plaintext only in RAM, only while your account is unlocked. ### Your Passphrase Cannot Be Recovered > ⚠️ **WARNING:** Majikah does not store your passphrase, the Argon2id output, or any way to recover access to your encrypted keys if you forget your passphrase. If you forget your passphrase but still have your 12/24-word seed phrase, you can re-import your account and set a new passphrase. If you lose both your passphrase and your seed phrase, your account and private keys are permanently and irrecoverably lost. > **NOTE:** Coming Q2 2026: Argon2id currently runs in pure JavaScript, which is why login takes 2–5 seconds. A WebAssembly (WASM) migration is planned that will bring a 5–10x performance improvement — reducing login time to under 1 second — while keeping all security parameters identical. ### Choosing a Strong Passphrase Argon2id dramatically raises the cost of brute-force attacks, but a very short or common passphrase can still be vulnerable if guessed directly. Use a passphrase that is long, unique, and memorable — a sequence of unrelated words, a personal phrase with substitutions, or a passphrase stored in a dedicated password manager. Avoid using the same passphrase as your Majikah Account password or any other account.