CFB1 versus CFB8 versus CFB128: het is de feedbackgrootte, niet de sleutellengte
Het getal achter CFB is een feedbackstap, geen sleutellengte: CFB1, CFB8 en CFB128 gebruiken een blok van 128 bits. Lees oude namen zonder zwakke sleutels te verzinnen.
Een naam als AES-256-CFB1 draagt twee getallen, en ze beantwoorden verschillende vragen. De 256 is de AES-sleutellengte. De 1 is de CFB-feedback, ofwel de segmentgrootte, een eigenschap van hoe de modus zijn toestand vooruit schuift. Lees je de 1 als sleutellengte, dan ziet de naam eruit als een catastrofale verkeerde configuratie, en daarom komt de vraag steeds terug.
Bepaal op welke van drie grootheden je kijkt voordat je de naam beoordeelt: sleutelgrootte, blokgrootte of segmentgrootte. Alleen de eerste is een beveiligingsparameter in de gebruikelijke zin.
Drie getallen, drie grootheden
AES accepteert sleutels van 128, 192 of 256 bits en heeft een blok van 128 bits, welke je ook kiest. De blokgrootte hoort bij AES, niet bij de modus. Het CFB-achtervoegsel is de derde grootheid: hoeveel gegevens de modus per stap verbruikt en terugvoert. OpenSSL AES-documentatie noemt die verschuivingsgroottes expliciet voor de CFB-varianten.
CFB1 voert één bit per keer terug, CFB8 één byte, CFB128 een heel blok. Alle drie gebruiken intern hetzelfde blokcijfer van 128 bits; wat verandert, is hoeveel bits van elk berekend blok per bewerking worden gebruikt. Daarom verschuift het achtervoegsel de kosten en het buffergedrag, niet de sleutelsterkte.
| Name | Key | AES block | Feedback |
|---|---|---|---|
| AES-256-CFB1 | 256 bits | 128 bits | 1 bit |
| AES-256-CFB8 | 256 bits | 128 bits | 8 bits |
| AES-256-CFB128 | 256 bits | 128 bits | 128 bits |
Waarom de blokgrootte nooit verandert
AES is een blokcijfer met een vast blok van 128 bits, en modi zijn constructies die eromheen zijn gebouwd. Geen ervan krimpt het blok om bij de segmentgrootte te passen. Een CFB1-implementatie berekent nog steeds een volledig AES-blok en neemt één bit van het resultaat. De andere bits worden voor die stap weggegooid, en precies daar zit de efficiëntiekosten.
Een feedback van één bit impliceert dus geen sleutel van één bit, en een naam is niet te rangschikken op zijn achtervoegsel. CFB128 is niet vier keer sterker dan CFB32; het verwerkt grotere segmenten.
Wat de segmentgrootte werkelijk verandert
De segmentgrootte verandert hoeveel ciphertext per stap wordt teruggevoerd en hoeveel plaintext elke stap kan dragen. Ze verandert ook de foutpropagatie en het buffergedrag, wat van belang is voor streamachtig gebruik. Bytegeoriënteerde segmenten sluiten aan bij buffers, bitgeoriënteerde niet.
In de praktijk kiest het protocol de modus, niet de operator. Een VPN-datakanaal gebruikt de constructie die zijn protocol voorschrijft, met zijn eigen integriteitsbescherming, en een bibliotheeklijst vertelt alleen welke namen bestaan.
Een niet-gekwalificeerd CFB-label lezen
Een niet-gekwalificeerd CFB-label heeft zijn implementatiecontext nodig. In de OpenSSL 1.0.2-headers is EVP_aes_128_cfb een macro voor EVP_aes_128_cfb128, met overeenkomstige aliassen voor sleutels van 192 en 256 bits. Dat is een API-naamgevingsconventie uit één branch, geen claim dat elke bibliotheek, bestandsformaat of GUI de afkorting op dezelfde manier uitbreidt. Controleer de header of documentatie van de versie voor je.
Als een oud profiel CFB zegt en de peer accepteert het, worden de onderhandelde parameters ergens vastgelegd: in een log, een configuratiedump, een API-antwoord. Lees die in plaats van de segmentgrootte uit een weergavetekst af te leiden.
Wat een modusnaam je niet vertelt
De naam beschrijft versleutelingsgedrag en niets anders. Een VPN heeft nog steeds integriteitsbescherming, sleutelafleiding en peer-authenticatie nodig, en CFB levert geen van alle. CFB8 vervangen door CFB1 is ook geen cosmetische wijziging: het gedrag op de lijn verschilt en beide partijen moeten dezelfde constructie ondersteunen. Een naam in een bibliotheek bewijst evenmin dat de uitgerolde gateway hem voor zijn datakanaal accepteert.
Gebruik voor alles wat onderhouden wordt de volledige beschermingsopzet van het protocol en het beleid van de operator, en leg bibliotheek- en gatewayversies, de exacte optie en het onderhandelde resultaat vast. De oude naam verklaart wat je leest; hij rechtvaardigt niet het nieuw leven inblazen van de configuratie.