Het probleem
Een scanrapport vol "quantum-kwetsbare" bevindingen is makkelijk te maken en makkelijk te negeren. Maintainers hebben een wijziging nodig die iets echts oplost, productie niet breekt en zichzelf uitlegt. Ik wilde laten zien dat de post-quantum migratie kan beginnen met kleine stappen die goed te reviewen zijn.
Drie fixes, drie patronen
Maak het algoritme configureerbaar (VWS)
Een proxy ondertekende zijn login-JWT met een hardcoded RS256-constante. Ik maakte het algoritme configureerbaar, standaard ML-DSA-65 (FIPS 204) met automatische terugval op RS256 als er nog geen post-quantum sleutel is. Productie werkt ongewijzigd door tot de sleutels er zijn.
Verkort de looptijd als overstappen nog niet kan (Fundament)
Een Kubernetes-operator maakte een RSA-4096-CA die 10 jaar geldig was. cert-manager kan nog geen ML-DSA-certificaten uitgeven, dus overstappen kon niet. Ik verkortte de looptijd naar 3 jaar met een vernieuwingsvenster van 90 dagen. Zo blijft alles wat de CA ondertekent korter kwetsbaar.
Bescherm data die jarenlang geheim moet blijven (Amsterdam)
Een proxy naar de Basisregistratie Personen verwerkt burgerservicenummers. Ik voegde optionele hybride post-quantum TLS (X25519MLKEM768) toe tegen “harvest now, decrypt later”, en zette de BSN-versleuteling om van Fernet (AES-128) naar AES-256-GCM.
Keuzes en afwegingen
Elke wijziging is optioneel of heeft een terugval. Een maintainer kan mergen zonder dat productie verandert, en het aanzetten wanneer het team er klaar voor is. Dat weegt zwaarder dan cryptografisch perfect zijn.
Meten in plaats van gokken. Een ML-DSA-65-handtekening laat de JWT groeien van 658 naar 4.733 bytes: prima voor een server-naar-server-call, maar goed om te weten. Voor de CA toetste ik de nieuwe looptijd aan de ongelijkheid van Mosca (X + Y < Z) en schreef ik een design record over de weg naar een echte ML-DSA-CA.
Tests bewijzen dat het werkt. De TLS-wijziging heeft een echte loopback-handshaketest, zodat vaststaat dat de nieuwe instelling iets doet en niet alleen door de config-parser wordt geaccepteerd.
Resultaat
Drie pull requests, 432 regels toegevoegd in 16 bestanden, elk onderbouwd met het PQC-migratiehandboek van AIVD, CWI en TNO. Ze staan open voor review; de status op deze site werkt zichzelf bij vanaf GitHub.
De pull requests
- Open minvws/nl-mgo-dvp-proxy#8 feat(oidc): add crypto-agility + ML-DSA-65 support for client-assertion JWT +158 −56
- Open fundament-oss/fundament#424 fix(openfsc-operator): shorten group CA duration to 3 years +65 −2
- Open Amsterdam/brp-amsterdam-api#195 Add AES-256-GCM BSN encryption and opt-in post-quantum TLS to RvIG +209 −12