“Groot, actueel en oude code: doen!” zegt Woo-verzoeker van DigiD

Mendel Mobach is crypto en security architect bij verschillende opensource-projecten. Ook is hij fanatiek Woo-verzoeker, waaronder bij de Belastingdienst en DigiD. De Redactie Open Source sprak hem over zijn Woo-verzoek voor DigiD.

Mendel, jij hebt het Woo-verzoek ingediend waardoor DigiD nu de broncode opensource heeft gepubliceerd. Kun je daar wat over vertellen?

Ik heb ooit op 8 juni 2022 mijn Woo-verzoek ingediend bij Logius, dus het is nu precies 2 jaar na dato. Er is wel meer broncode geopensourced door de overheid, maar deze publicatie was minder vrijwillig. De broncode van DigiD is nogal groot. Het is actueel, iedereen gebruikt DigiD. En het is oude code. Alles zit er wel in waardoor je kan zeggen: is dit opensourcen wel een goed idee? Maar ik ben blij dat ik daar niet over ga, maar de staatssecretaris. Die zei in de Tweede Kamer dat DigiD onder de Wob (Wet openbaarheid van bestuur) viel en toen onder de Woo (Wet open overheid). Dus toen dacht ik, nou doe dan.

Hoe ging het toen verder?

Ze gingen bij Logius eerst nadenken over wat hebben we, wat kunnen we en wat mogen we. Het ‘hebben’ bleek niet het geval: de broncode lag bij de leverancier. Toen hebben ze eerst de code van de app zelf vrijgegeven. Dat is vorig jaar januari gedaan. Toen moest de rest nog: de hele backend server, tools, libraries, dat soort dingen. De app is slechts de interface en die praat met allerlei andere dingen. De app staat op ieders telefoon en kan technisch gezien iedereen al bekijken, en wegens hoe hij gemaakt was, was dat best makkelijk. Het risico dat je met het publiceren van die broncode loopt is klein. Je kunt DigiD ook vervangen met een Python-script. Dat is in het verleden wel eens gebeurd, maar dan is er niks aan de server veranderd en weet je niet hoe die werkt. Je weet dan alleen hoe die naar de app toepraat en hoe die met de diensten waarbij je inlogt praat.

En toen moesten ze de backend nog opensourcen. Het core component is Ruby on Rails. Dat is een minder populaire programmeertaal op dit moment. Als je daar een securitycheck op wil zit dat niet in het standaardcontract met raamovereenkomst. Ook staan er nog leveranciersnamen in de code en andere details die gecontroleerd moeten worden. Logius heeft daarvoor een bedrijf ingehuurd met kennis op dit gebied en die hebben wat dingen gevonden, maar dat was allemaal niet groot.

Hoe was je ervaring als Woo-verzoeker?

Ik heb een mail gestuurd met uitleg wat ik precies wilde hebben. Toen kreeg ik telefoontjes van mensen bij BZK. Daarna kwam Logius met het verzoek voor een informele gesprekken. Die gesprekken waren met meerdere mensen, ik heb zelf ook vrienden uitgenodigd, want je wil niet in je eentje tegenover zes à zeven mensen zitten. Dat waren vanuit Logius bijvoorbeeld iemand van BZK, de OSPO, de CIO van Logius… En er was ook elke keer een jurist bij want het is een juridisch proces en het moet netjes gaan. Zo kreeg ik ook steeds brieven met de vraag of ik formeel uitstel wilde verlenen, en dat heb ik dan gedaan.

Mendel leest een lijst met uitsteldata voor.

Het was niet direct van “we hebben 2 jaar nodig”, ik kreeg steeds een brief met wat de volgende stap in het proces is. Je kunt op zo’n uitstelverzoek ook “nee” zeggen als het voelt als traineren, maar zo voelde het niet. En tussendoor was er ook mogelijkheid om positief mee te helpen, bijvoorbeeld heb ik het aangegeven als we iets zagen dat ik zelf niet zo zou publiceren.

Wat kunnen andere overheidsorganisaties van Logius leren?

Dat opensourcen helemaal niet zo eng is. Het internet vond 'de kerstboom', een debugcode die allemaal groene bolletjes toont. Dat is het allergrootste wat ze vonden in de appcode.

Bij de backend code weet ik niet of er iets ergs gevonden is, maar tot nu toe heb ik er niks over gehoord. Ik heb wel gehoord dat mensen dingen vonden en terug wilden melden. Maar dat waren geen security issues. Oftewel: gewoon doen!

Wat zou Logius nog beter kunnen doen?

Proactief elke versie openbaren. Dat schrijven ze zelf ook al. De gepubliceerde versie is een versie van 1,5 jaar geleden. Nieuwe versies worden nog niet actief openbaar gemaakt. Dat willen ze wel gaan doen. Dus laten we dat gewoon even afwachten. Dit soort dingen kost ook tijd. En dan bedoel ik niet technisch, dan heb je gelijk dat het snel kan. Maar je moet het ook organisatorisch regelen; je moet je organisatie erop inrichten. Maar ik heb in het verleden gezien dat er programmeurs zijn die vragen of ze broncode opensource mogen zetten om zelf beter te kunnen werken. Dus het heeft ook positieve toegevoegde waarde als je dit doet, voor je eigen mensen en je eigen organisatie.

En hoe zou de code van DigiD nog beter kunnen?

Mijn eigen opmerkingen heb ik al naar Logius gestuurd. Kijk zelf naar de code van DigiD en stuur je opmerkingen naar Logius, zou ik zeggen. En als iemand weer een kerstboom vindt kunnen we daar gezellig over discussiëren op Twitter. Er moet ook een beetje lol blijven in het leven.

Mendel Mobach is crypto en security architect bij verschillende opensource-projecten. Ook is hij fanatiek Woo-verzoeker, waaronder bij de Belastingdienst en DigiD. Je kunt hem bereiken via @bugblauw op X.

Reactie Boris van Hoytema, OSPO MinBZK

Bij BZK willen we opensourcewerken en dat is iets dat niet van de één op de andere dag gebeurt. Het is een organisatieproces en dat betekent een hoop veranderen, ook voor de leveranciers waarmee we samenwerken. Het betekent op een andere manier samenwerken, afspraken maken en software maken. Het betekent ook dat in de toekomst broncode vrijgeven veel minder complex is.

Broncode valt onder de Wet open overheid (Woo). Dat betekent dat deze code, als er geen uitzonderingsgrond in de wet voor staat, vrijgegeven moet worden. Veel van de DigiD-code komt uit een tijd waarin we hier een andere houding tegenover hadden. De DigiD-code is daarom nooit ontwikkeld om open te worden. Als je iets vrijgeeft moet je echt zeker zijn of het veilig is, en als het niet voor vrijgave ontwikkeld is is dat ingewikkelder. We hebben daarom moeten samenwerken met partners en externen die ons hierover konden adviseren.

De broncode van DigiD hebben we nu gepubliceerd onder een opensourcelicentie, dat is een standaardlicentie die we goed kennen. Het betekent dat iedereen de broncode, die is ontwikkeld met publieke middelen, nu kan gebruiken en daarmee is het één van de makkelijkste manieren om ook meteen te voldoen aan de Wet hergebruik overheid (Who).

Dit artikel verscheen op Open source (pleio.nl)