3 ms·
Hi, interesting project. Looking into the code, it seems that when the random round is Hash, you're not encrypting half of the chunk: https://codeberg.org/Ciph
by conradludgate 1y ago
Hi, interesting project. Looking into the code, it seems that when the random round is Hash, you're not encrypting half of the chunk:
https://codeberg.org/CipherNomad/Ariadne/src/branch/main/crates/ariadne-primitives/src/cfb.rs#L115-L123 https://codeberg.org/CipherNomad/Ariadne/src/branch/main/cra...
You split the chunk in half, use right to derive the cipher material and then only apply it to left. This leaves right unchanged.
- ciphernomad-org 1y agoThis is a classic Feistel network round: L_new = L_old ^ F(key, R_old). It's a deliberate design. The security of the Labyrinth relies on the composition of many rounds, not any single one. The unchanged right half from a Hash round is fully encrypted if the next round is a Stream round. Since the Labyrinth is a deep, aperiodic mix of both round types, the entire block is guaranteed to be diffused and encrypted.