31 december, 2010 (gepubliceerd)
27 oktober, 2015 (laatst gewijzigd)

Cursus “Veilig digitaal communiceren” Aflevering 8: Wachtwoorden en wachtzinnen

  Rubrieken: ICT
  Steekwoorden:  , ,

In deze aflevering wordt de eenvoudigere, maar minder veilige weg besproken van gebruik maken van wachtwoorden waarna alle benodigde sleutels door de programmatuur zelf worden gegenereerd. Als een aanvaller ons wachtwoord in handen zou krijgen, is er geen sprake meer van geheime communicatie.


Inhoud:

1. Hanteerbare sleutels
Tot nu toe waren sleutels getallen, grote getallen. Om het gissen van een sleutel door een aanvaller een eeuwigheid te laten duren, zijn sleutels immens grote getallen. Maar met zulke gigantische getallen heeft de gebruiker een probleem, want niemand kan die getallen onthouden.  Een voorbeeld van een sleutel was de 256-bit sleutel in hex-notatie:   "5ca48286b41757f7650a8b1740ce014241d6d4b43033edb4ed4442df1aff2dab".  Door gebruik te maken van de hexadecimale notatie is de notatie al redelijk compact. Toch kan niemand zo’n getal uit zijn hoofd leren, laat staan voortdurend wil intoetsen.

Mensen zijn goed in het onthouden van letters. We zouden de sleutels kunnen karakteriseren met letters, eventueel in combinatie met cijfers. Dit type sleutels worden wachtwoorden genoemd. Zolang als de vertaling van de ene  notatie naar de andere notatie zonder vermindering van het aantal mogelijke sleutels gebeurt, hebben we geen veiligheidsprobleem. Maar dat is nooit het geval.

2. Wachtwoorden 
Een aanvaller is nooit zo stom om willekeurige sleutels te gaan genereren, want als het aantal bits groot genoeg is, gaat dat jaren en jaren duren. De aanval verloopt via het wachtwoord. Wachtwoorden zijn altijd makkelijker te kraken dan de sleutels waartoe ze toegang verschaffen.  Het probleem met wachtwoorden is dat zij vaak worden gekozen uit een beperkte verzameling (naam echtgenote plus twee nummers, zoals bijvoorbeeld “sara43”). Voor wachtwoorden geldt dat als een mens een wachtwoord kan onthouden een aanvaller ze snel met een zgn. “woordenboekaanval” zal vinden.

Het bedrijf Accessdata verkoopt een PRTK (Pasword Recovery ToolKit) dat in een paar uur 65% van alle wachtwoorden kraakt. Het programma is zo ontworpen dat meerder computers parallel aan hetzelfde probleem kunnen werken. Op één computer kan het programma 200 duizend verschillende wachtwoorden per seconde testen. De NSA kan zonder moeite duizend van die computers parallel schakelen. U kunt wel raden dat NSA, politie en terrorismebestrijders meerdere van zulke PRTK’s zullen gebruiken.

3. Sterke wachtwoorden
Wachtwoorden zijn zelden als sleutel even sterk als de sleutel waartoe ze toegang verlenen. Wij hebben u aangeraden om een bij symmetrische versleuteling gebruik te maken van 256 bit AES. De extreme afmeting van deze sleutel zorgt ervoor dat de succesvolle aanval op dergelijke codering nooit via de sleutel zal verlopen. Maar het is ondoenlijk om van de mensen te verlangen om een wachtwoord te kiezen met dezelfde aantal mogelijkheden als de 256 bit sleutel. Als u uw wachtwoord kiest uit alle letters (hoofd en klein)  en uit de cijfers 0-9, dan moet uw wachtwoord 43 karakters lang zijn om de veiligheid van 256 bit te handhaven. Als u ook nog alle leestekens toestaat (bij elkaar dus alle printbare karakters) dient uw wachtwoord 40 karakters lang zijn. Zo een wachtwoord onthoudt niemand en is ook niemand bereid om telkens weer in te toetsen.

Maar 256 bit is ook wel heel erg veel. De vuistregel is dat voor alle niet-militaire doeleinden 80 bit wel genoeg is. Dan moet je wachtwoord, bestaande uit letters en cijfers, 14 karakters lang zijn. Toch nog een hele mond vol. Als u een wachtwoord gebruikt met minder karakters wordt u kwetsbaar voor een aanval op uw wachtwoord.

Lees de blog post van Bruce Schneier over veilige wachtwoorden. Als u een sterk wachtwoord heeft dat u niet kan onthouden, wordt het voor de aanvaller moeilijker. Maar dan moet u het opschrijven. En dat is de zwakke plek. U heeft het wachtwoord vaak nodig – namelijk elke keer als u iets gaat decoderen of coderen. Mocht u hier toe overgaan: kies een ongelooflijk moeilijk wachtwoord, schrijf het op en doe het – eventueel gecodeerd – in uw portemonnee.

4. Wachtzinnen
Een andere aanpak is de wachtzin. Met de wachtzin haalt u zonder al teveel moeite 80 bit veiligheid. Een wachtzin is een wachtwoord bestaande uit een aantal woorden. Er zijn vele soorten wachtzinnen mogelijk en op het Internet is veel advies te vinden over de goede keuze. De sterkte van niet wanordelijke wachtzinnen is arbitrair en kan plotseling sterk verminderen, bijvoorbeeld omdat uw wachtzin  de titel is van een nieuw boek. Wij kiezen voor een betere aanpak: de wanordelijke wachtzin. In een wanordelijke wachtzin heeft de gebruiker de beschikking over een woordenlijst met een aantal gangbare woorden, typisch 10 duizend in aantal. Door nu een aantal woorden, typisch zes of zeven willekeurig te kiezen, heeft men een wachtzin. En omdat de woorden gangbaar zijn, wordt het voor de gebruiker eenvoudiger om ze te onthouden.

5. Dobbelen om wachtzinnen
In Diceware (“dobbelwaren”) wordt het woordenboek zo samengesteld dat de willekeurige keuze van de wachtzin met een echte dobbelsteen kan worden gedaan: een woord wordt gevonden door vijf keer een dobbelsteen te gooien. Dat betekent dat er in het woordenboek 6 x 6 x 6 x 6 x 6 = 7776 woorden zitten. De eisen die verder aan een Diceware woordenboek worden gesteld zijn dat de maximale lengte van de woorden 6 letters is. Er zijn vele Diceware woordenlijsten in verschillende talen te verkrijgen. Er is geen enkele reden om een Diceware woordenhoek geheim te houden. Wij hebben een nieuwe Nederlandse Diceware woordenboek gemaakt, omdat we van mening zijn dat de reeds bestaande in hoge mate ontoereikend was wat betreft de mogelijkheid om de woorden ze te onthouden en het gemak om ze te typen. Wij stelden als eis:

  1. Alleen kleine letters (dus geen dubbele toetsaanslag nodig).
  2. Geen cijfers, want cijfers geven een woord vaak minder betekenis.
  3. Geen leestekens, accenten, apostrofen, enz. (dus geen dubbele toetsaanslag).
  4. Minsten twee letters (éénletterige woorden hebben geen betekenis en zijn daardoor moeilijker te onthouden.
  5. Woorden moeten minstens één klinker bevatten,  geen y en geen q.

U kunt onze lijst ophalen van onze site. De sterkte van een Diceware lijst is 13 bits per woord, dus als u een wachtzin kiest van zes woorden bent u al behoorlijk veilig. En zeven is voortreffelijk. Ik hoop dat onze lijst van een dergelijke kwaliteit is dat u echt zes woorden van die lijst kan onthouden. Advocaat Bram heeft nu met de dobbelstenen 30 keer gegooid, met het volgende resultaat:

64446 vroeg
41223 led
14224 blei
24162 flair
21322 dictie
22254 dronk

Zijn wachtzin zou dus zijn:”vroeg led blei flair dictie dronk”. Die moet Bram nog wel even in mijn geheugen stampen.

Bram kan nu een RSA privé-sleutel genereren met behulp van mijn wachtzin:

>openssl genrsa -out e:\privkeys\bram_privkey.pem -passout pass:"vroeg led blei flair dictie dronk" -aes256 2048


Bram heeft hiermede aan OpenSSL gevraagd om zijn 2048 bit privé-sleutel te genereren en hem daarna te versleutelen met 256 bit AES waarvoor OpenSSL een sleutel heeft gegenereerd (die we nooit zien) via de wachtzin. Het resultaat is opgeslagen in het bestand bram_privkey.pem in de map e:\privkeys\. Dit gegenereerde bestand voldoet aan standaardafspraken, waaronder het verpakken van de gecodeerde sleutel in base64. Ik laat in de figuur hierboven het resultaat zien als je het bestand opent met een eenvoudige tekstverwerker.

Bram moet ook nog zijn publieke sleutel genereren:

>openssl rsa -pubout -in e:\privkeys\bram_privkey.pem -passin pass:"vroeg led blei flair dictie dronk" -out d:\pubkeys\bram_pubkey.pem -aes256

Versterken van wachtwoorden en wachtzinnen
Een van de meest gebruikte manieren van geheime communicatie is door gebruik te maken van een publieke- en een privé-sleutels. De privé-sleutel moet geheim geheim gehouden worden en die wordt versleuteld, bijvoorbeeld met het symmetrische AES algoritme, in een bestand opgeslagen achter een wachtwoord of wachtzin, zoals net werd gedemonstreerd.

Hoe kunnen we het de aanvaller moeilijker maken? Daar geldt net als bij de sloten op uw huis voor, dat als u het de aanvaller moeilijker maakt u het ook u zelf moeilijker maakt in het dagelijkse gebruik. Het liefste heeft u dat de wachtwoordaanval per gissing kan worden vertraagd, zonder dat u dat zelf merkt. Bijvoorbeeld door de sleutel honderd keer achter elkaar te versleutelen. Maar dat is maar een vertraging van een factor 100. Een extra woord toevoegen aan uw wachtzin is veel effectiever.

Het serieel  gebruiken van twee wachtwoorden kan behoorlijk effectief zijn. Het gratis open source programma Password Safe bewaart al uw wachtwoorden. U kiest twee sterke wachtzinnen, waarvan u er maar één onthoudt en de andere in de Password Safe zet. Het programma Password Safe is zo gemaakt dat het gissen van een wachtwoord extreem vertraagd wordt in tijd. Dat zal de maffia die de geheime communicatie wil onderscheppen niet leuk vinden.

6. Zouten van wachtzin of wachtwoord (password salt)
Als een aanvaller beschikt over een lijst van eenrichting versleutelde wachtwoorden, typisch een lijst die een on-line shop gebruikt, dan kan hij met een woordenboekaanval er zo een aantal decoderen. Hij weet namelijk – of kan gissen – welk algoritme gebruikt is. Hij genereert dan zeg 100 miljard redelijke wachtwoorden en versleutelt die. Als hij geluk heeft, vindt hij een paar matches met de lijst van de shop. Om deze aanval een heel stuk moeilijker te maken, kan er aan het wachtwoord een geheime willekeurige streng toegevoegd worden die het “zout” heet. In een on-line shop kan dezelfde zoutstreng worden gebruikt voor alle wachtwoorden. OpenSSL geeft u de mogelijkheid om waar u maar wil uw wachtwoord en wachtzin van een zoutstreng te voorzien.

7. Uw eigen wachtwoord of wachtzin
Het wordt nu wel tijd om uw eigen wachtwoord of wachtzin te maken. Deze wachtzin met niemand delen en nooit ergens voor gebruiken. Niet op een web site, niet voor programma met een wachtwoord. Niet als wachtwoord voor uw computer. Nooit.

WIJ AANVAARDEN GEEN ENKEL RISICO VOOR EVENTUELE SCHADE OF ANDERE NEGATIEVE GEVOLGEN DOOR HET GEBRUIK VAN DOOR ONS GEADVISEERDE OF GEDISTRIBUEERDE SOFTWARE

De volgende aflevering van de Cursus “Veilig digitaal communiceren” zal heten: “Voorbeelden van berichten versleutelen”.

8. Door ons gebruikte boeken

Niveau: *: geen voorkennis, **: beginnend programmeur, ***: ervaren programmeur


Het wordt nu wel tijd voor u om een wachtwoord of wachtzin te maken.

Print Friendly
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

1 reactie op “Cursus “Veilig digitaal communiceren” Aflevering 8: Wachtwoorden en wachtzinnen”

  1. Mevrouw Gitaar schreef:

    wat leuk zo’n cursus! Helaas niet geschikt voor bezitters van een MAC… Ja die bestaan ook. Hierbij wel een suggestie voor een volgend artikel over wachtwoorden: tot mijn verbazing (verbijstering) kwam ik er achter dat het wachtwoord van ‘mijn-ing’ niet hoofdletter gevoelig is. Is dat niet gek?

Schrijf een reactie

*