Kraken Encryption

Watch your en­cryp­tion break.

Weak crypto, cracked live in your browser — then fixed, with the standard that says so.

Cryptographic Failures

Watch them break.

Six broken primitives that still ship. Each one fails in front of you, in this tab — computed live, or checked live against published artifacts — then flips to the fix, the standard behind it and the deadline, where there is one.

OWASP Top 10:2025 files this under A04:2025 — Cryptographic Failures (A02 in the 2021 edition). The six demos are its broken primitives. The same category covers mistakes they don’t show: keys checked into source code, passwords stored without a slow, salted hash, random numbers never meant for cryptography, server certificates accepted without checking the chain, reused nonces, and data sent in clear text.

Tap a card to flip it to the fix. “Watch it crack” opens the demo.

Broken

AES-ECB

The ECB Pen­guin

Same block in, same block out — so the picture survives the encryption.

Fixed

Use AES-GCM

  • AES-GCM, an authenticated mode, with a unique nonce for every message under a key.
  • No ECB for data encryption. Web Crypto doesn’t even offer it.
  • Keep Web Crypto’s default 128-bit GCM tag — NIST plans to drop tags under 96 bits.
Standard
NIST SP 800-38D (GCM); SP 800-38A (modes); RFC 5116 (AEAD)
Deadline
No dated sunset. NIST said in 2023 it will limit ECB’s approval; the SP 800-131A Rev. 3 draft proposes disallowing ECB for data encryption.
Read the full breakdown on softwaresecurity.com

What happens

We draw a paper penguin in this tab and encrypt its pixels with AES-128 in ECB mode — a deliberately broken, quarantined implementation — one 16-byte block at a time, all under the same key. Identical plaintext blocks become identical ciphertext blocks, so flat color stays flat and the outline walks straight through the “encryption”. Beside it, the same pixels go through AES-128-GCM in your browser’s Web Crypto and come out as noise: same cipher, same key size, different mode. All of it is live.

Real-world

In 2020, Citizen Lab found every Zoom meeting’s audio and video encrypted with one shared AES-128 key in ECB mode; Zoom 5.0 moved to AES-256-GCM. Citizen Lab’s report

Adobe’s 2013 breach showed the same fingerprint: its leaked passwords were Triple DES, and the repeats in the dump showed ECB, so identical passwords had identical ciphertext. The deeper mistake was encrypting them at all. Passwords should be stored with a slow, salted password hash such as Argon2id, never encrypted. Sophos analysis (archived)

In your code

ECB rarely ships on purpose. Often it ships as a default: with Java’s standard provider (SunJCE), asking for plain "AES" gets you ECB.

// Java (SunJCE): plain "AES" means AES/ECB/PKCS5Padding
Cipher.getInstance("AES");
# Python, PyCryptodome
AES.new(key, AES.MODE_ECB)
// Node
createCipheriv('aes-128-ecb', key, null)

// the fix: an AEAD, with a fresh 96-bit nonce for every message
Cipher c = Cipher.getInstance("AES/GCM/NoPadding");
c.init(Cipher.ENCRYPT_MODE, key, new GCMParameterSpec(128, nonce));

GCM has its own sharp edge: never reuse a nonce under one key. A repeat leaks the XOR of the two messages and will likely let an attacker recover the authentication key and forge messages. A 2016 scan found 184 HTTPS servers doing it. With random nonces, NIST caps a key at 232 messages.

How to find it

  • Search code and config for MODE_ECB, modes.ECB, /ECB/, -ecb, CipherMode.ECB and a bare Cipher.getInstance("AES").
  • Static analysis helps, unevenly: Semgrep flags ECB and a bare "AES" in Java, and CodeQL’s weak-cryptographic-algorithm queries catch ECB in Java and Python. Neither catches every Python or Node call, so search as well.
  • Look at stored ciphertext: identical 16-byte blocks in records that should differ are ECB’s fingerprint.
Broken

AES-CBC + PKCS#7, no MAC

The Pad­ding Oracle

One leaked bit — “bad padding” — and the whole message peels apart, one byte at a time.

Fixed

Use an AEAD: AES-GCM

  • AES-GCM in Web Crypto: tampered ciphertext fails authentication and returns no plaintext.
  • Never hand-roll CBC + padding + MAC. Stuck with CBC? Encrypt-then-MAC.
  • One generic, constant-time error. Never echo Web Crypto’s AES-CBC bad-padding error.
Standard
NIST SP 800-38D (GCM); RFC 9846 (TLS 1.3, which defines only AEAD cipher suites); RFC 9325
Deadline
No dated sunset for CBC; RFC 9325 says CBC suites SHOULD NOT be used without encrypt_then_mac. US federal agencies must support TLS 1.3 (or a successor) by 2 Jan 2030 (EO 14306).
Read the full breakdown on softwaresecurity.com

What happens

Live in your browser. A “server” in this tab encrypts a secret with AES-CBC and PKCS#7 padding, with no MAC, and answers exactly one question: is the padding valid? That makes it an oracle. By tweaking the previous ciphertext block and watching that single yes/no, the attacker recovers each plaintext byte in at most 256 guesses — last byte first, block by block — without ever learning the key. AES itself is never broken; the padding check leaks. Then the same attack runs against AES-GCM, and every forged ciphertext is rejected outright.

Real-world

Serge Vaudenay described the attack in 2002. It came back as the ASP.NET padding oracle (MS10-070, 2010), as Lucky Thirteen’s timing variant against TLS (2013), and as POODLE against SSL 3.0 (2014). Vau­denay’s paper

In your code

The oracle is any difference a client can see between “bad padding” and “bad data”: a different status code, a different error message, even a different response time.

// Java: AES/CBC/PKCS5Padding, and no MAC checked first
try {
  byte[] pt = cipher.doFinal(ciphertext);
  return handle(pt);
} catch (BadPaddingException e) {
  // the oracle: a different answer for bad padding
  return status(400, "bad padding");
}

How to find it

  • Search for CBC without a MAC: AES/CBC/PKCS5Padding, MODE_CBC, -cbc, CipherMode.CBC (and a bare Aes.Create(): CBC is .NET’s default). Then check whether a decryption error can change the response.
  • For TLS, run testssl.sh --lucky13 --poodle host, or list the CBC suites with nmap -sV --script ssl-enum-ciphers -p 443 host. Turn off SSL 3.0 everywhere.
Broken

MD5 · SHA-1

Col­li­sions

Two different files, one digest. A signature over one is a signature over both.

Fixed

Use SHA-256 or SHA-3

  • SHA-2 (SHA-256/384/512) or SHA-3 wherever collisions matter: signatures, certificates, dedup.
  • No MD5 or SHA-1 in new security designs, HMAC included; plan to retire the rest.
  • Find where SHA-1 still signs things — code signing, old PKI, PGP key certifications.
Standard
FIPS 180-4 (SHA-2), FIPS 202 (SHA-3); NIST SP 800-131A Rev. 2; RFC 6151 (MD5)
Deadline
MD5: no longer acceptable where collision resistance is required (RFC 6151, 2011). SHA-1: signature generation disallowed (SP 800-131A Rev. 2, 2019); NIST phases it out of all protection uses by 31 Dec 2030. Public TLS CAs have been barred from issuing SHA-1-signed website certificates since 1 Jan 2016; its last signature uses there, in CRLs and CA certificates, ended 15 Sep 2026 (CA/B Forum SC-097).
Read the full breakdown on softwaresecurity.com

What happens

Verified artifacts, checked live. We load two published colliding pairs — Wang, Feng, Lai and Yu’s 128-byte MD5 pair (2004) and the first 320 bytes of the SHAttered PDFs (CWI and Google, 2017) — confirm each file against a pinned SHA-256, then hash them in your browser: MD5 with a quarantined implementation, SHA-1 with Web Crypto. Different bytes, identical digests: a collision. SHA-256 then tells each pair apart.

We never fake finding a collision. An identical-prefix MD5 collision takes seconds on an ordinary PC today; SHAttered took about 6,500 CPU-years and 110 GPU-years (Google’s figures), and the 2020 chosen-prefix “Shambles” collision cost its authors about US$75,000.

Real-world

Flame (2012) spread in part as a fake Windows Update, signed with a certificate forged through an MD5 chosen-prefix collision to chain to a Microsoft root. Microsoft’s expla­nation

In your code

# Python
hashlib.md5(data).hexdigest()
// Java
MessageDigest.getInstance("SHA-1")
# a SHA-1-signed certificate request
openssl req -new -sha1 …

# the fix
hashlib.sha256(data).hexdigest()

MD5 still catches accidental corruption; it can’t stop an attacker. Anything someone might want to forge can’t rest on it: signatures, certificates, code signing, download checks, deduplication of user uploads.

How to find it

  • Certificates: openssl x509 -in cert.pem -noout -text and look for sha1WithRSAEncryption or md5WithRSAEncryption.
  • Code: search for md5, sha1, SHA-1, MD5.Create, SHA1.Create, then ask what each digest protects.
  • Signing: check code-signing, package-signing and PGP keys still made or certified with SHA-1.
Broken

Small & badly generated RSA keys

Weak RSA

Tiny moduli factor in seconds. Shared or too-close primes break even big keys almost instantly.

Fixed

RSA-3072+, done properly — then PQC

  • New keys: RSA ≥ 3072 bits (128-bit security) or ECC P-256+, from a vetted library with good entropy. RSA-2048 is acceptable through 2030.
  • RSA-OAEP to encrypt, RSA-PSS to sign — never textbook RSA or PKCS#1 v1.5 encryption.
  • Plan the move to ML-KEM (FIPS 203) and ML-DSA (FIPS 204) now.
Standard
FIPS 186-5; NIST SP 800-57 Pt 1 Rev. 5; SP 800-131A Rev. 2; FIPS 203/204
Deadline
Under 2048 bits: already disallowed for key establishment; PKCS#1 v1.5 key transport disallowed after 31 Dec 2023 (SP 800-131A Rev. 2). Proposed (NIST IR 8547 draft): RSA-2048 deprecated after 2030; all RSA disallowed after 2035.
Read the full breakdown on softwaresecurity.com

What happens

Three live breaks, all real math on deliberately weak keys, run in a worker: a toy modulus of up to 64 bits factored with Pollard’s rho, its private key rebuilt and a message decrypted; two 512-bit moduli that share a prime, both broken at once by one greatest common divisor; and a key whose primes sit too close together, split by Fermat’s method in milliseconds. The fix side runs RSA-OAEP with a 3072-bit key in Web Crypto.

We never fake factoring a properly generated 512-bit key: that took seven months, about 300 computers and a Cray supercomputer in 1999 — and under four hours and $75 of rented cloud time by 2015.

Real-world

In 2012, “Mining Your Ps and Qs” computed RSA private keys for about 64,000 TLS hosts (0.50%) whose keys shared primes — with one GCD pass. factorable.net

In your code

// Java KeyPairGenerator: too small
kpg.initialize(1024);
# OpenSSH: too small
ssh-keygen -t rsa -b 1024
# Python: fine
rsa.generate_private_key(public_exponent=65537, key_size=3072)

A small key is a setting you can grep for. Shared and too-close primes aren’t: they come from weak randomness or a broken key generator, often in firmware, and show up only in the keys themselves.

How to find it

  • Key sizes: openssl x509 -in cert.pem -noout -text prints Public-Key: (1024 bit); ssh-keygen -l -f key.pub prints the bits first.
  • Badly generated keys: badkeys checks public keys for ROCA, Fermat-close primes, Debian’s broken generator, known shared primes and known leaked keys.
  • Shared primes among your own keys: run a batch GCD over all of them, such as fastgcd from the “Ps and Qs” team.
  • Servers: testssl.sh -S host prints each server’s certificate key size and signature algorithm.
Broken

RC4 stream cipher

RC4’s Tell

Its keystream isn’t random: the second byte is zero about twice as often as it should be.

Fixed

Use AES-GCM or ChaCha20-Poly1305

  • An AEAD: AES-GCM (built into Web Crypto) or ChaCha20-Poly1305 (RFC 8439).
  • Strip RC4 from every cipher list and legacy config. No exceptions.
  • Never reuse a nonce with the same key.
Standard
RFC 7465 (prohibits RC4 in TLS); RFC 9325; RFC 8439 (ChaCha20-Poly1305)
Deadline
Prohibited in every TLS version since February 2015 (RFC 7465).
Read the full breakdown on softwaresecurity.com

What happens

Live in your browser. A worker runs RC4 under many thousands of fresh keys and tallies the second keystream byte of each. A fair cipher spreads the tally evenly — about 0.39% per value; RC4 piles about 0.78% onto zero, roughly twice its share (the Mantin–Shamir bias). Run the same test on AES-GCM’s output and the tally stays level.

Real-world

RC4’s key-scheduling flaws broke WEP Wi-Fi (2001); its keystream biases later let researchers recover an HTTPS cookie from RC4-TLS in about 75 hours (2015). RC4 NOMORE

In your code

RC4 lingers in old cipher lists, legacy libraries and Windows Kerberos (RC4-HMAC).

# nginx: RC4 still allowed
ssl_ciphers HIGH:RC4-SHA;
# Apache
SSLCipherSuite AES128-SHA:RC4-SHA
// Java
Cipher.getInstance("ARCFOUR")

How to find it

  • TLS: testssl.sh --rc4 host, or nmap -sV --script ssl-enum-ciphers -p 443 host, which reports “Broken cipher RC4 is deprecated by RFC 7465”.
  • SSH: ssh-audit host flags the arcfour ciphers.
  • Active Directory: since Microsoft’s April 2026 updates, domain controllers default to AES for Kerberos. Find the accounts whose msDS-SupportedEncryptionTypes still allow RC4.
Broken

DES · 3DES · Blowfish

64-Bit Blocks

A DES key fell in 56 hours in 1998. With 64-bit blocks, collisions turn likely around 32 GiB per key.

Fixed

Use AES (128-bit blocks)

  • AES-GCM everywhere DES, 3DES or Blow­fish still lurks.
  • Rekey long-lived connections well before the birthday bound.
  • Hunt 3DES and Blow­fish in TLS, SSH, IPsec and VPN configs.
Standard
FIPS 197 (AES); NIST SP 800-131A Rev. 2
Deadline
3DES encryption disallowed after 31 Dec 2023 (decryption: legacy use only). DES’s standard, FIPS 46-3, withdrawn 19 May 2005. Blowfish: no dated sunset.
Read the full breakdown on softwaresecurity.com

What happens

Two lessons, both live. First, the keyspace: a worker brute-forces a deliberately reduced DES keyspace (up to 24 bits) so you can feel each extra bit double the work, then extrapolates from your browser’s own speed to the full 256 — which we never attempt. The EFF’s Deep Crack found a key in 56 hours in 1998 after searching about a quarter of it.

Second, the birthday bound: with 64-bit blocks, repeats become likely after about 232 blocks (32 GiB) under one key, and in CBC mode a repeat leaks the XOR of two plaintext blocks. We simulate that at a scale your browser can hold, labeled as scaled; the real attack needs hundreds of gigabytes.

Real-world

Sweet32 (2016) recovered an HTTPS cookie from 3DES traffic after capturing 610 GB in 30.5 hours. sweet32.info

In your code

// Java: 3DES
Cipher.getInstance("DESede/CBC/PKCS5Padding")
# OpenVPN’s old default: Blowfish
cipher BF-CBC
# a 3DES suite in a TLS cipher list
TLS_RSA_WITH_3DES_EDE_CBC_SHA

How to find it

  • TLS: testssl.sh --sweet32 host; nmap’s ssl-enum-ciphers warns “64-bit block cipher 3DES vulnerable to SWEET32 attack”.
  • SSH: ssh-audit host flags 3des-cbc and blowfish-cbc.
  • VPNs, configs and code: search for 3des, DES-CBC3, des-ede3, DESede, TripleDES, BF-CBC and blowfish.

The Long Game

Harvest now. Decrypt later.

Everything above is broken today. Properly sized public-key crypto — RSA-2048 and up, ECDH, ECDSA — isn’t. But ciphertext recorded now can be opened later if a cryptographically relevant quantum computer is ever built, and bigger keys won’t help: NIST’s draft plan proposes disallowing RSA and elliptic-curve crypto at every key size after 2035. NIST calls it “harvest now, decrypt later”, and the dated deadlines below make it today’s problem.

Symmetric crypto isn’t the target. Grover’s algorithm speeds up a brute-force key search only quadratically, and NIST, the NSA and the UK’s NCSC all expect AES-256 and SHA-384 to stay secure. What has to change is how keys are agreed and how things are signed.

Recorded today decryptable in ≈ 12 years must stay secret for ≈ 15 years Opened while still secret

With JavaScript on, example bytes laid out like an encrypted message appear here, made in your browser. Nothing is encrypted.

The example bytes didn’t load: their script didn’t arrive. Reloading the page should bring them back.

The same kind of break as the Weak RSA demo — a private key recovered from its public key — deferred by the calendar. The “decryptable” figure is your Z estimate below, counted from today — not a forecast.

Countdown to 31 December 2030: the date by which Executive Order 14412 directs OMB to require US federal High Value Assets and high-impact systems to use post-quantum key establishment (national security systems excluded).

Are you already exposed?

Mosca’s inequality: if X + Y > Z, you have a problem today. Data sent before your migration finishes can be recorded now and decrypted while it still needs to be secret.

15 years

Health, financial and government records can need decades.

5 years

Inventory, vendors, hardware refresh, testing, rollout. NIST’s draft IR 8547 notes that, historically, going from a new standard to full integration can take 10 to 20 years.

12 years

Nobody knows — this is an estimate. In the Global Risk Institute’s latest expert survey (2025 edition, published March 2026), experts put the odds of one at 28–49% within 10 years and 51–70% within 15.

These are the default numbers. Turn on JavaScript to set your own.

Exposed Exposed even if you start today. 15 + 5 = 20 years > 12. Data recorded over the last 3 years or so is already exposed, and so is everything recorded until your migration finishes, 5 years from now: all of it could be decrypted while it still needs to be secret. The longest any of it stays readable while still sensitive: 8 years.

The dated drivers

  • 13 August 2024

    NIST publishes the first post-quantum standards: FIPS 203 (ML-KEM), FIPS 204 (ML-DSA) and FIPS 205 (SLH-DSA).

    Final standards
  • 2030 / 2035

    NIST IR 8547 (initial public draft, November 2024): proposes deprecating 112-bit quantum-vulnerable algorithms such as RSA-2048 after 2030, and disallowing all quantum-vulnerable RSA, ECDSA, EdDSA and (EC)DH after 2035, at every key size. Still a draft. NIST IR 8547

    Draft · proposed
  • 21 December 2022

    Quantum Computing Cyber­security Pre­pared­ness Act: US federal agencies must inventory quantum-vulnerable systems and plan their migration (national security systems excluded). Public Law 117-260

    US law
  • 2030 / 2031

    Executive Order 14412 (22 June 2026) and OMB M-26-15 (24 June 2026): the order directs OMB to require federal High Value Assets and high-impact systems to move to post-quantum key establishment by 31 December 2030 and post-quantum signatures by 31 December 2031; M-26-15’s phases end in full migration in 2035. National security systems excluded. EO 14412 · OMB M-26-15

    Executive order
  • 2027 → 2035

    NSA’s CNSA 2.0, for US national security systems: AES-256, ML-KEM-1024, ML-DSA-87 and SHA-384/512. New acquisitions compliant from 1 January 2027; equipment that can’t support it phased out by 31 December 2030; CNSA 2.0 mandated by 31 December 2031. NSA intends all national security systems to be quantum-resistant by 2035. CNSA 2.0 advisory · CNSA 2.0 FAQ v2.1 (archived)

    NSA · NSS only
  • 2026 → 2035

    The EU’s coordinated roadmap (NIS Cooperation Group, June 2025): Member States start national transition strategies by the end of 2026, move high-risk use cases “as soon as possible, no later than the end of 2030”, and finish “for as many systems as practically feasible” by 2035. A recommendation, not a binding mandate. EU PQC roadmap

    EU · guidance
  • 2028 → 2035

    The UK’s NCSC migration timelines (March 2025): by 2028, set migration goals, find everything that depends on quantum-vulnerable crypto and draft a plan; by 2031, carry out the early, highest-priority migrations; by 2035, complete the move to post-quantum crypto across all systems, services and products (NCSC expects a few rarely used technologies to be harder). NCSC timelines

    UK · guidance
  • 31 March 2025

    PCI DSS v4.0.1, requirement 12.3.3: anyone handling card data must document and review the cipher suites and protocols in use at least once every 12 months: an up-to-date inventory, monitoring of whether each is still viable, and a plan for responding to new weaknesses. A best practice until 31 March 2025; required since. PCI DSS document library

    Industry standard

What to do: find where RSA and elliptic-curve crypto protect long-lived data, rank it by how long it must stay secret — that’s your X — and start the move to ML-KEM and ML-DSA. Chart the course ↓

Real-world wrecks

Wrecks we’ve already dragged up.

Not hypotheticals. Every one of these shipped in real systems, and every one was broken by a demonstrated attack.

  1. WEP

    Year: 2001

    Broken primitive: RC4 key scheduling (fixed key + known IV)

    Wi-Fi keys recovered from captured traffic — by 2007, a 104-bit key in under 60 seconds (50% success).

    Retired by WPA as a stopgap (2003), then IEEE 802.11i and WPA2’s AES-CCMP (2004).

  2. Flame

    Year: 2012

    Broken primitive: MD5 chosen-prefix collision

    Malware signed with a forged certificate chaining to a Microsoft root, spreading as a fake Windows Update.

    Retired by Microsoft distrusting the licensing CAs within days (Advisory 2718704, June 2012), and licensing certificates that can no longer sign code.

  3. Lucky Thirteen & POODLE

    Year: 2013 · 2014

    Broken primitive: CBC MAC-then-encrypt timing; SSL 3.0 padding oracle

    TLS CBC records leaked plaintext by timing; a forced SSL 3.0 downgrade let attackers decrypt a cookie at ~256 requests per byte.

    Retired by timing-safe CBC patches (2013), browsers turning SSL 3.0 off (2014–15), RFC 7568’s “SSLv3 MUST NOT be used” — and TLS 1.3, which has no CBC suites.

  4. FREAK & Logjam

    Year: 2015

    Broken primitive: 512-bit “export-grade” RSA and Diffie–Hellman

    Connections downgraded to 512-bit export crypto, then broken; 36.7% of browser-trusted HTTPS servers accepted export RSA.

    Retired by client patches and browsers refusing small Diffie–Hellman groups (2015), then OpenSSL dropping export suites (2016).

  5. DROWN

    Year: 2016

    Broken primitive: SSLv2 on a shared RSA key (a Bleichen­bacher padding oracle)

    A server that still spoke SSLv2 let attackers decrypt modern TLS; 33% of HTTPS servers vulnerable at disclosure.

    Retired by OpenSSL turning SSLv2 off by default (March 2016) — and no SSLv2 anywhere the same key is used.

  6. Sweet32

    Year: 2016

    Broken primitive: 64-bit block ciphers (3DES, Blowfish)

    Birthday collisions in long sessions leaked an HTTPS cookie after 610 GB and 30.5 hours of traffic.

    Retired by OpenSSL dropping 3DES from its defaults (2016), Chrome and Firefox removing it (2021), NIST disallowing 3DES encryption after 2023.

  7. ROCA

    Year: 2017

    Broken primitive: Structured RSA key generation (Infineon)

    Private keys could be factored from public keys on TPMs, smartcards and ~750,000 Estonian ID cards.

    Retired by firmware updates plus new keys: a patch can’t repair a key already made. Estonia blocked the old certificates on 3 Nov 2017 and moved its cards to elliptic-curve keys.

Remediate

From “what have we got?” to “fixed, and watched.”

Five islands between a codebase full of old crypto and one you can defend.

  1. In­ven­tory your crypto

    Every algorithm, key, certificate, library and protocol — in code, config, dependencies and vendors: a cryptographic bill of materials. You can’t fix what you can’t find.

    • Scan every TLS endpoint with testssl.sh, sslyze or nmap -sV --script ssl-enum-ciphers, and every SSH server with ssh-audit.
    • Scan the code with Semgrep or CodeQL crypto rules, then search for the calls each demo lists under “In your code”.
    • Pull algorithm, key size and expiry from every certificate store, HSM and key vault, and write it down in one format: CycloneDX (1.6 and later) includes a CBOM.
  2. Spot the broken primitives

    ECB, MD5, SHA-1, un­authen­ticated CBC, RC4, DES and 3DES, short or badly generated RSA. The six demos above are your field guide: each one ends with what the flaw looks like in code and config, and how to find it.

    • Check public keys in bulk with badkeys: it finds keys that look fine but were badly generated (badkeys -t host checks a TLS server’s).
    • For each finding, note where it lives, what data it protects, and who owns the fix.
  3. Pri­or­i­tize by secrecy lifetime

    Rank the quantum-vulnerable systems by how long their data must stay confidential — Mosca’s X — and move the long-lived secrets first.

    • Anything broken today comes first, whatever the data: those six primitives fall without a quantum computer.
    • Next, quantum-vulnerable key exchange on traffic that crosses networks you don’t control. It can be recorded now and opened later.
    • Signatures can follow, because forging one needs a quantum computer at the time. Start early on keys that live for decades in hardware and firmware.
  4. Migrate — and stay agile

    Swap in AEAD, SHA-2/SHA-3 and strong keys now; build crypto-agility so the move to ML-KEM and ML-DSA is a swap, not a rewrite.

    • AES-GCM or ChaCha20-Poly1305 with unique nonces; SHA-256 or better; RSA-3072+ or P-256+ for new keys; TLS 1.3, or TLS 1.2 with AEAD suites only.
    • Turn on hybrid post-quantum key exchange (X25519MLKEM768, RFC 10024) on your servers: Chrome, Firefox and OpenSSL 3.5 already offer it by default.
    • Keep algorithm names and key sizes in configuration, not scattered through the code.
  5. Verify & monitor

    Test that the fix holds, scan for regressions in CI, and watch the deprecation calendar so the next deadline isn’t a surprise.

    • Re-run the scanners from step I after every change and on a schedule, and fail the build on a new crypto finding.
    • Review the cipher suites and protocols in use at least once a year. For card data, PCI DSS v4.0.1 requirement 12.3.3 has required it since 31 March 2025.
    • Watch NIST’s drafts, CA/Browser Forum ballots and the dated drivers above.

About

Ed­u­ca­tion, not crack­ing-as-a-service.

Kraken Encryption doesn’t break anyone’s crypto for hire. It breaks weak crypto in front of you, so you can recognize it in your own codebase, know the standard that retires it (and the deadline, where there is one), and ship the fix.

It’s built for practitioners. Crypto­Hack, Cryptopals and friends are brilliant places to learn cryptanalysis by solving puzzles; this is a companion to them, not a competitor. There are no points here — just the broken thing, the reason, the standard and the fix.

It’s one part of a small ecosystem:

  • softwaresecurity.com — the written deep-dive behind every demo.
  • 717 DEV — software security consulting, to find and fix these failures in your own code.
  • Ghillie — the full crypto module lives in Ghillie’s training platform.
  • 6 broken primitives, demonstrated in your browser
  • $75 to factor a 512-bit RSA key in under four hours on rented cloud servers, at 2015 prices (Factoring as a Service)
  • 33% of all HTTPS servers were open to DROWN when it was disclosed in March 2016 (drownattack.com)
  • 2035 the year NIST’s draft plan proposes disallowing today’s RSA and elliptic-curve crypto (NIST IR 8547, draft)
  • 0 bytes of your data that leave this page

Dispatches

Messages in bottles.

Captured transmissions from the people who write the standards and break the ciphers.

“Attacks always get better; they never get worse.”

— an old saying inside the NSA, as quoted by Bruce Schneier, February 2005

Contact

Send word to the surface.

Get the deprecation-deadline briefings from softwaresecurity.com, book 717 DEV for a live demo with your team or to find and fix the broken crypto in your own software, or ask about the Ghillie crypto module. Your message is sent from your own email app — this page never uploads it.

I’m interested in

Or write directly: hello@krakenencryption.com

The demo stage

What just happened

The fix

In your own systems

What it looks like

How to find it

Runs entirely in your browser; nothing is uploaded.

Next step: → or Space · back: ← · close: Esc