$ ./break --target lattice-4
Break LATTICE-4
An experimental 256-bit stream cipher with a multiply-enhanced add-rotate-xor core. We attacked it ourselves with 55 recorded attempts and broke 5 of its 20 rounds. Now it's your turn: recover the secret key of any version below and your name goes on the board.
the ladder
| Rounds | Status | Designers' best attack | Key commitment: sha256(key) |
|---|---|---|---|
| Loading… | |||
Each commitment was published when the keys were generated. A winning key hashes to it, which proves the keys were never swapped. Click a commitment to copy it.
how to play
1. Read the cipher. Full spec in SPEC.md, reference code in lattice.mjs (call LATTICE4.block(key, nonce, counter, rounds)), test vectors in kat.json, and everything we tried in ATTACK_LOG.md.
2. Query the oracle. Ask for keystream blocks at any nonce and counter you choose. That's the chosen-input model every published attack on ChaCha uses.
3. Submit the key. If it's right, you're on the board. First solver of each tier is marked.
oracle api
# ladder, commitments, solvers, your remaining budget
curl https://lattice.npxio.com/break/api/challenges
# up to 1024 consecutive blocks for one nonce
curl "https://lattice.npxio.com/break/api/keystream?rounds=3&nonce=000102030405060708090a0b&counter=0&count=4"
# up to 1024 chosen (nonce, counter) pairs at once, e.g. a differential pair
curl -X POST https://lattice.npxio.com/break/api/keystream -H 'Content-Type: application/json' -d '{
"rounds": 4,
"queries": [ {"nonce":"000102030405060708090a0b","counter":0},
{"nonce":"000102030405060708090a0b","counter":16777216} ] }'
# submit a key
curl -X POST https://lattice.npxio.com/break/api/submit -H 'Content-Type: application/json' \
-d '{"rounds":2,"key":"<64 hex chars>","name":"you"}'
Each block is the 64-byte output block(key, nonce, counter) in hex, for the secret key of that tier. Every tier uses the full 20-round key schedule rules: round constants and key re-injection, reduced to that many rounds.
rules
- Budget: 1,048,576 blocks (64 MB) per IP per day, max 1024 per request, 20 key submissions per hour. If your attack needs more data, write to [email protected]: a convincing attack is worth more than a key.
- Attack the cipher, not the server. Server bugs, side channels in this deployment, and guessing via budget abuse don't count.
- Share how. Winners are asked to publish their method. A clear writeup of a distinguisher also counts, even without a key.
- Partial results count. Beating our 2^175 estimate for 5 rounds, or any 6-round attack, is a real result. Send it to [email protected].