Algoritmen gebaseerd op verouderde SHA-1-cryptografie worden uit DNSSEC-standaard verwijderd

Stap als het kan gelijk over naar algoritme nummer 13

Concept voor digitale security

De laatste cryptografische algoritmen [tabel IANA] gebaseerd op de SHA-1-hashfunctie worden naar verwachting binnen niet al te lange tijd uit de DNSSEC-standaard verwijderd. Het gebruik van algoritmen nummer 5 (RSA/SHA-1) en nummer 7 (RSASHA1-NSEC3-SHA1) werd al langer afgeraden. Inmiddels wordt gewerkt aan het helemaal uitfaseren van deze 2 algoritmen.

Uitgefaseerd

Bovenstaande betekent niet dat domeinnamen die nog met algoritme nummer 5 of nummer 7 ondertekend zijn direct hun beveiliging verliezen.

Leveranciers van resolversoftware moeten deze algoritmen gewoon blijven ondersteunen zolang ze nog actief gebruikt worden. Daarbij krijgen ze ook de mogelijkheid om DNS-records ondertekend met een algoritme gebaseerd op SHA-1 af te wijzen als zijnde niet langer ondersteund (unsupported). Hoewel de huidige Draft hier niet expliciet over is, beschouwen we deze laatste optie als een toevoeging voor de toekomst waarin het daadwerkelijk gebruik van SHA-1-gebaseerde algoritmen verwaarloosbaar is geworden. Het zou ook kunnen dat DNS-software noodgedwongen de ondersteuning voor het SHA-1 algoritme moet staken, simpelweg omdat de gebruikte cryptografische library SHA-1 voor digitale handtekeningen niet langer ondersteunt.

Operators van autoritatieve nameservers wordt tegelijkertijd ondubbelzinnig duidelijk gemaakt dat zij deze algoritmen niet langer mogen gebruiken om hun records te ondertekenen. Zij moeten zo snel mogelijk overstappen naar een moderner en sterker alternatief.

Afgekeurd

De SHA-1-hashfunctie is al in 2011 door NIST afgekeurd voor gebruik in digitale handtekeningen. "SHA-1 is niet veilig meer," zei Marc Stevens destijds. Hij is cryptograaf bij CWI en bekend als kraker van MD5 en SHA-1.

Met de publicatie van RFC 8624 wordt het gebruik van de SHA-1-hashfunctie in DNSSEC sinds juni 2019 ook in DNSSEC officieel afgeraden. Algoritmen nummer 5 en nummer 7 kregen destijds de negatieve aanbeveling 'NOT RECOMMENDED'. Daarmee werden nummer 8 (RSA/SHA-256) en nummer 13 (ECDSA Curve P-256 with SHA-256) de enige 2 actuele algoritmen die je kon gebruiken voor de ondertekening van je domeinnamen (met de aanbeveling 'MUST').

Na de grote 'chosen-prefix collision'-aanval op SHA-1 in 2020 [1, 2] vertaalde softwareontwikkelaar Tony Finch deze kraak naar een aanval op DNSSEC-ondertekende records [1, 2, 3]. Dat was voor ICANN aanleiding om bij DNS-operators in het algemeen en 250 TLD-operators die nog een 'SHA-1'-gebaseerd algoritme gebruikten in het bijzonder aan te dringen op een snelle migratie naar een sterker algoritme [1, 2]. In een vervolg-publicatie benadrukt Finch dat een daadwerkelijke aanval via deze route voorlopig niet te verwachten is omdat er makkelijker aan te vallen doelwitten zijn. Zijn advies is nog steeds om zo snel mogelijk van SHA-1 weg te migreren, maar tot die tijd kunnen de 'SHA-1'-gebaseerde algoritmen wel gebruikt blijven worden [1].

Algoritme nummer 13

Algoritmen nummer 8 en nummer 13 maken allebei gebruik van de SHA-256-hashfunctie. Deze is onderdeel van de SHA-2-familie, de opvolger van SHA-1 die wel veilig is voor gebruik in digitale handtekeningen.

Het verschil tussen algoritme nummer 8 en nummer 13 is dat die laatste gebruikmaakt van ECDSA voor het public-keyprotocol, wat juist voor DNSSEC belangrijke voordelen biedt. Hoewel de validatie van een ECDSA-handtekening langer duurt, is de ondertekening zelf juist heel snel en blijft de lengte van de handtekeningen beperkt. Dat laatste is van belang voor het transport van DNS-responses en het voorkomen van DDoS/amplificatie-aanvallen.

Wij ondersteunen de toepassing van algoritme nummer 13 (en nummer 14) voor de ondertekening van .nl-domeinen al sinds 2016. En vorige zomer zijn we met het .nl-topleveldomein zelf overgestapt van algoritme nummer 8 naar nummer 13.

Verouderd en onveilig

Uit de statistieken van SIDN Labs blijkt dat ruim 40 procent van de ondertekende domeinnamen in de .nl-zone nog op algoritme nummer 8 zit. Wij raden de houders/operators daarvan aan om ook binnen niet al te lange tijd over te stappen naar nummer 13. Hetzelfde geldt voor de 0,09 procent die gebruikmaakt van algoritme nummer 10 (RSA/SHA-512, een sterkere variant van nummer 8).

Klik op de afbeelding om deze te vergroten.

Grafiek die de gebruikte DNSSEC-algoritmes laat zien per 20240826
https://images.ctfassets.net/yj8364fopk6s/UfHHqBQoapqMtaaGmzGvq/8676191f12a5af4852e497713a6491f7/stats.sidnlabs.nl-DNSSECalgoritmen-20240826.png

Nog 3.200 domeinnamen

Kijken we naar het aandeel domeinnamen dat nu nog op een daadwerkelijk ernstig verouderd en verzwakt algoritme zit, dan blijkt dat in relatieve aantallen erg laag te zijn. Respectievelijk 0,001, 0,02 en 0,06 procent van de beveiligde domeinnamen is ondertekend met algoritme nummer 3, nummer 5 en nummer 7. In absolute aantallen gaat dat bij elkaar opgeteld toch nog om 3.200 domeinnamen. Houders daarvan moeten echt zo snel mogelijk overstappen naar een sterker algoritme, en dan het liefst natuurlijk gelijk naar nummer 13.

Algoritmen nummer 3, nummer 5 en nummer 7 worden ook door ons al langere tijd als verouderd beschouwd. Domeinnamen ondertekend met een van deze 3 algoritmen tellen dan ook niet meer mee voor de incentiveregeling die er is voor .nl-registrars. Daarin is DNSSEC sinds de tweede helft van 2023 randvoorwaardelijk gesteld voor de financiële incentives op andere beveiligingsstandaarden en kwaliteitskenmerken. Op dit moment ligt het minimumvereiste aandeel voor DNSSEC op 20 procent per domeinnaamportfolio. Elk jaar bekijken we opnieuw of dit percentage omhoog moet. Omdat we inmiddels uit ervaring weten dat deze incentiveregelingen hun werk goed doen, zouden in de toekomst ook algoritme nummer 8 en nummer 10 van de DNSSEC-score kunnen worden uitgezonderd.

SHA-1 in DS-records

Rest ons tenslotte nog om iets te zeggen over het gebruik van SHA-1 in het DS-record, de link waarmee de ondertekende zones op verschillende niveau's aan elkaar gekoppeld worden tot een gesloten cryptografische vertrouwensketen. Ook voor gebruik op die plek wordt men geadviseerd over te stappen van SHA-1 (DS-algoritme nummer 1) naar SHA-256 (nummer 2) [1].

Specifiek voor de domeinnamen onder de .nl-zone geldt dat houders hier geen omkijken naar hebben. Omdat wij domeinnaamhouders niet om een DS-record maar om het DNSKEY-record vragen, genereren wij daaruit zelf al vanaf het begin een DS-record gebaseerd op SHA-256.