Hawkynt

Achterbahn-128/80

NLFSR-based stream cipher from the eSTREAM project: 13 nonlinear feedback shift registers of lengths 21 to 33 feed a Boolean combining function. Achterbahn-80 takes an 80-bit key and uses 11 registers, Achterbahn-128 a 128-bit key and all 13. BROKEN - multiple cryptanalytic attacks exist. DO NOT USE in production.

Properties

Property Value
Category Stream Ciphers
Sub-category NLFSR Stream Cipher
Security status ❌ Broken
Complexity Expert
Inventor Berndt Gammel, Rainer Göttfert, Oliver Kniffler (Infineon Technologies)
Year 2006
Origin 🇩🇪 Germany
Source algorithms/stream/achterbahn.js

Parameters

Parameter Supported values
Key sizes 10 bytes (80 bits); 16 bytes (128 bits)
Nonce sizes 0 bytes (0 bits) to 16 bytes (128 bits)

Security

Status: ❌ Broken

Known vulnerabilities

Issue Description Mitigation
Distinguishing Attack Linear distinguishing attacks can distinguish keystream from random with practical complexity DO NOT USE - cipher is cryptographically broken
Key Recovery Attack Practical key recovery attacks demonstrated against both 80-bit and 128-bit variants DO NOT USE - fundamental design flaws exist
Correlation Attack NLFSR correlation attacks reduce effective security below key length DO NOT USE - not suitable for any production use

Documentation

References

Test vectors

3 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.

Vector 1 — Achterbahn-80 reference keystream: key 01..0a, IV 01..0a

Field Value
key 0102030405060708090a
iv 0102030405060708090a
input 0000000000000000000000000000000000000000000000000000000000000000
expected e59cd632f3f1af7da47e19ff46651f38103a29f2f655edc07f5d6d2dd62a96aa

Vector 2 — Achterbahn-128 reference keystream: key 01..10, IV 01..10

Field Value
key 0102030405060708090a0b0c0d0e0f10
iv 0102030405060708090a0b0c0d0e0f10
input 0000000000000000000000000000000000000000000000000000000000000000
expected df71f042738f6d9ec21d896d0cc12baf54c8ce55a6507a1243b471c2cdf0ec42

Vector 3 — DarkCrypt Achterbahn-128 — non-zero key and IV, 48-byte message (verified against the DarkCrypt implementation)

Field Value
key 0b30557a9fc4e90e33587da2c7ec1136
iv 073c71a6db10457aafe4194e83b8ed22
input 03203d5a7794b1ceeb0825425f7c99b6 d3f00d2a4764819ebbd8f5122f4c6986 a3c0ddfa1734516e8ba8c5e2ff1c3956
expected 6dd3c8f5a6d34d8fb506c8d60b6b6107 8079cdca88da26e16427f60a9d02e0cf 30524272d3b3f951a7a7076cb4ed211b

← All algorithms