Wat entropie-bits zijn, en waarom wij je geen percentage geven

Gepubliceerd op door David Carrero

Een sterktepercentage is een mening met twee decimalen.

Als een website zegt dat je wachtwoord “92 % veilig” is, dringt de vraag zich op: 92 % van wát? Waar zit de 100 %? Die bestaat niet. Niemand heeft het perfecte wachtwoord gepubliceerd waarmee de rest wordt vergeleken. Dat getal komt uit een rekensommetje dat iemand op een dinsdagmiddag heeft verzonnen — zoveel punten voor de hoofdletter, zoveel voor het leesteken — en zijn enige echte taak is het balkje groen kleuren zodat je doorklikt.

Bits daarentegen betekenen altijd exact hetzelfde. En ze betekenen iets waar je wat aan hebt.

Een bit is een ja-of-nee-vraag

Het hele idee past in één zin: elke bit verdubbelt het aantal pogingen dat iemand nodig heeft die niets van je weet.

Eén bit zijn twee mogelijkheden. Twee bits zijn er vier. Drie, acht. Tien bits zijn 1.024 en twintig bits zijn ruim een miljoen. Het loopt niet op, het verdubbelt, en verdubbelen is precies waar onze intuïtie van de dijk af rolt.

Daarom is de zin “40 bits is twee keer zo goed als 20” op een bijna komische manier onwaar. Tussen 20 en 40 bits zitten twintig verdubbelingen, oftewel een factor 2²⁰: 40 bits is niet het dubbele van 20, het is een miljoen keer meer. En 60 bits is niet drie keer 20: het is een miljoen keer meer dan 40. Ons hoofd leest die schaal alsof het een meetlat is, en dat is het niet. Het is een schaal zoals die van aardbevingen of decibellen, waar een klein stapje in het getal een enorme sprong in de werkelijkheid is.

Dat is het hele voordeel van de bit boven het percentage. Het percentage geeft je een gevoel. De bit geeft je een hoeveelheid werk.

Waar het woord vandaan komt

Het woord entropie, toegepast op informatie, komt uit een artikel uit 1948: A Mathematical Theory of Communication, van Claude Shannon.

Het is goed om dat precies te zeggen, want het wordt vaak verkeerd geciteerd: Shannon dacht niet aan wachtwoorden. Er waren geen computerwachtwoorden die het vermelden waard waren. Hij werkte bij Bell Labs aan een heel ander probleem — hoeveel informatie een bericht werkelijk vervoert, en hoever je het kunt comprimeren voordat het breekt — en hij moest iets glibberigs meten: de onzekerheid van degene aan de andere kant.

Zijn vondst, grof gezegd, is dat informatie en verrassing hetzelfde zijn. Een bericht dat je al kende, informeert je niet. Een bericht dat je onmogelijk kon zien aankomen, informeert je enorm. Entropie meet hoeveel verrassing er zit in de bron die de berichten produceert, en dat meet je in bits.

Dat je daar wachtwoorden mee kunt beoordelen, is bijna een gelukkig ongeluk. Een wachtwoord is precies dat: een bericht dat onmogelijk te zien aankomen moet zijn.

Het fietsslot met cijferringen

Hier komt de enige formule van het artikel, en ik beloof je: hij kost niets.

H = L × log₂(N)

Vergeet de logaritme even en denk aan zo’n fietsslot met draaiende ringetjes. Je hebt twee manieren om het lastig te maken voor wie het open wil krijgen:

  • Meer ringetjes eraan. Dat is de lengte (L): hoeveel tekens je wachtwoord heeft.
  • Meer symbolen op elk ringetje. Dat is het alfabet (N): of elk ringetje alleen de tien cijfers draagt, of de 26 letters, of letters en cijfers en leestekens.

De logaritme doet maar één ding: vertalen hoeveel symbolen een ringetje draagt naar hoeveel bits dat ringetje oplevert. Een ringetje met 26 letters levert zo’n 4,7 bits op. Een ringetje met de 95 afdrukbare tekens van het toetsenbord levert er ongeveer 6,6.

En daar zit de grap. Let op waar alles staat in de formule. Het alfabet zit binnen de logaritme, platgedrukt; de lengte staat erbuiten, te vermenigvuldigen.

De symbolen per ringetje bijna verviervoudigen — van 26 letters naar 95 tekens — levert je minder dan twee bits per ringetje op. Er één ringetje bij zetten levert je een hele log₂(N) op, en nog eens, en nog eens. Daarom winnen twaalf kleine letters en verder niets (zo’n 56 bits) het van acht tekens met hoofdletters, cijfers en die leestekens waar formulieren om zeuren (zo’n 53). P@ssw0rd verliest van juistpaardbatterijnietje, en niet eens op het nippertje.

Het NIST kwam in zijn SP 800-63B via een andere weg op dezelfde plek uit: het gooide de samenstellingsregels overboord — een hoofdletter, een cijfer, een leesteken — en hield lengte over, plus het controleren van het wachtwoord tegen lijsten met gelekte wachtwoorden. Leg het niet in de mond wat het niet zegt: zijn argument is niet dit verhaal van de formule, maar dat mensen dwingen er een leesteken in te stoppen ze niet onvoorspelbaar maakt, alleen op een andere manier voorspelbaar. Sterker nog, het document zelf wantrouwt het schatten van de entropie van een door een mens gekozen wachtwoord. Twee verschillende redeneringen, dezelfde conclusie. Verplichte complexiteit werkt binnen de logaritme. Lengte werkt erbuiten.

De kleine lettertjes die bijna niemand meerekent

Er zit een addertje onder het gras, en dat is het eerlijke deel van het hele verhaal: entropie meet je wachtwoord niet, het meet het proces dat het gemaakt heeft.

4$Kp!9zQ heeft die 53 bits niet omdat het er moeilijk uitziet. Het heeft ze als — en alleen als — het uit een werkelijk willekeurige trekking tussen de 95 toetsen kwam. Als jij het zelf hebt getypt terwijl je probeerde willekeurig te lijken, gaat de formule niet op: jij bent geen loterij. Je zet de hoofdletter vooraan, het cijfer achteraan en het leesteken is een !. Wie je aanvalt probeert niet de 95 opties van elke positie: die probeert eerst wat mensen doen.

Daar komt de ongemakkelijke asymmetrie van wachtwoordbeveiliging vandaan. Entropie is een plafond, geen vloer. Laat je het door een machine genereren, dan is dat plafond echt. Kies je het zelf, dan weet je alleen dat je eronder zit, en niet hoeveel.

Daarom zijn er twee gereedschappen en niet één. De generator trekt echt willekeurig en kan je daarom met een stalen gezicht de bits laten zien: hij weet hoeveel ringetjes hij heeft (L), hij weet hoeveel symbolen er op elk ringetje zitten (N) en hij doet de vermenigvuldiging waar je bij staat. Schuif je de schuifbalk op en zie je het getal stijgen, dan zie je de L duwen. De checker kan dat niet doen met een wachtwoord dat al bestaat: die heeft geen idee hoe het geboren is, dus doet hij het enige zinnige — zoeken in woordenboeken, namen en toetsenbordpatronen, en het ergste aannemen.

Wat je mee moet nemen

Drie zinnen:

  • Een bit is een verdubbeling. Tien bits meer is duizend keer meer werk; twintig bits meer, een miljoen.
  • Lengte vermenigvuldigt, het alfabet telt nauwelijks op. Een woord toevoegen is meer waard dan een uitroepteken toevoegen.
  • Bits zijn alleen wat waard als het toeval echt is. Een machine kan ze beloven. Jij, met de hand typend, niet.

Shannon zocht naar hoeveel verrassing er in een bericht past. Ruim zeventig jaar later blijkt dat precies de juiste vraag te zijn voor een wachtwoord: niet of het er ingewikkeld uitziet, maar hoeveel verrassing het bevat voor iemand die je van haver noch gort kent.


Bronnen: C. E. Shannon, “A Mathematical Theory of Communication”, Bell System Technical Journal, 1948 · NIST SP 800-63B, Digital Identity Guidelines (Authentication and Lifecycle Management) · de generator van password.es, die H = L × log₂(N) berekent en L, N en de resulterende bits toont.

← Terug naar de blog