Een notaris is toch een stuk duidelijker dan een blockchain voor een authenticiteitsverklaring

Programmadirecteur Sylvia Bronmans krijgt de eerste notarisverklaring dat de coronameldersoftware in de appstore dezelfde is als de open source software op github. Dat meldde Brenno de Winter op Twitter. De software die recent uitkwam, is als open source ontwikkeld vanuit het oogpunt van transparantie. Hartstikke leuk, maar daarna moet deze vanuit de appwinkels van Apple of Google gedownload worden. En hoe weet je dan zeker dat daar toch dezelfde versie in zit? Ik hoor van de achterste rij de suggestie van een smart blockchain, dank u. Maar ik vond “omdat de notaris dat zegt” toch net wat praktischer.

De coronamelder-app is zo transparant mogelijk ontwikkeld, met als publicitair hoogtepuntje de push to master van onze minister, voor zover bij mij bekend de eerste keer dat een bewindspersoon een stuk software live zette. (En het voelde echter dan het welbekende lintje doorknippen of rode knop indrukken, vooral omdat die rode knop zelden ergens mee verbonden is.)

De broncode is volledig in te zien op Github, het wereldwijd grootste platform voor opensourcesoftwareontwikkeling. Wie wil zien of er rare achterdeurtjes in de melder zitten: voel je vrij en ga je gang, je kunt alles nakijken. Daar zit alleen één snag aan, namelijk dat uiteindelijk de eindversie naar de appwinkels moet. En dan zóu er iemand tussen kunnen zitten die even snel de software verwisselt voor een malafide versie.

Met deze notarisverklaring is dat opgelost: de notaris heeft geconstateerd dat de software zoals te verkrijgen in de appstore hetzelfde is als de eindversie zoals beschikbaar via Github. De verklaringen staan ook op Github: daaruit volgt zonder voorbehoud dat de softwareversies inhoudelijk hetzelfde zijn.

Waarom niet met de blockchain, of met gesigneerde certificaten zo las ik op diverse plekken. Dat zijn immers juist technieken om dit soort dingen te bewijzen en verifiëren. Klopt, maar met één groot nadeel: je moet dan die technieken vertrouwen, inclusief hun implementatie. En voor mij is een notaris een stuk praktischer en transparanter. De functie van notaris is die van vertrouwde persoon – een functie die in het Amerikaans recht vrijwel geheel ontbreekt (de notary public heeft een veel beperktere rol), vandaar dat men steeds met technische oplossingen komt. Dus nee, heel goed dat het zo gaat.

Arnoud

7 reacties

  1. Interessant!

    Merk op dat het niet de notaris is die het heeft geverifieerd: de verificatie is uitgevoerd door een derde partij (‘Escrow Alliance B.V.’).

    Die hebben een hoop geverifiëerd, behalve één essentieel stuk: dat de .apk in de app store daadwerkelijk gegenereerd is uit de sourcecode. Blijkbaar is alleen gecontroleerd of a) het versienummer identiek is, b) het buildnummer identiek is en c) of de tijdlijn tussen CI pipeline en .apk upload logisch is. Wel is blijkbaar het hele proces via een screen recorder opgenomen, maar zolang mijn computer er tussen zit kan ik natuurlijk prima tussen het downloaden van de .apk uit de pipeline en het uploaden naar Google Play een bestandje omwisselen. Waarom de .apk uit de app store niet wordt vergeleken met het build-resultaat uit Azure Pipelines is me niet helemaal duidelijk. Die zouden toch identiek moeten zijn (afgezien van een digitale handtekening)?

    Maargoed, het verhoogt de drempel wel een stuk: je zult nu echt bewust moeten frauderen, terwijl eerder een ‘oeps, we zijn vergeten een stuk naar GitHub te pushen’ prima mogelijk was.

      1. Android publicatie werkt niet meer met geuploade apk. Er moet nu een app bundle geupload worden die door google zelf tot (aparaat-specifieke) apk wordt gemaakt. Hashing gaat dus niet werken (behalve misschien het in bijzijn van de vertrouwenspersoon downloaden en hash vergelijken).

  2. Het concept dat hier het beste toegpast kan worden is niet blockchain et cetera, maar reproducible builds: de garantie dat iedere keer dat je de source code compileert, je exact dezelfde uitvoer krijgt. Controle is hiermee triviaal: je controleert het compilatieresultaat van de uit Github gedownloade code, met de APK die je uit de Google Play store haalt. Je hoeft dan niet te vertrouwen op certificaten.

    1. Maar de APK moet gesigned worden en omdat je de signing key niet hebt / deelt, kan je de build niet reproduceren.

      Ik weet even niet of je het unsigned deel zou kunnen extracten uit de signed APK en dat tegen je build kan matchen, dat zou nog een optie zijn.

Geef een reactie

Handige HTML: <a href=""> voor hyperlinks, <blockquote> om te citeren, <UL>/<OL> voor lijsten, en <em> en <strong> voor italics en vet.