Code signing is een cryptografische techniek om te bewijzen wie de auteur is van een bestand en dat de inhoud ervan onveranderd is sinds de auteur dit bestand ondertekend heeft. Dit ondertekenen wordt gedaan door een cryptografische hash toe te voegen om de integriteit en authenticiteit van het bestand te kunnen waarborgen. Dit ondertekenen kan gebeuren op verschillende bestandstypen, zoals een programma,[1] een macro-script of een html-pagina.

Werking bewerken

De meeste code signing implementaties gebruiken een vorm van digitale handtekening die de identiteit van de auteur aantoont, samen met een controlegetal om aan te tonen dat de inhoud van het bestand niet is gewijzigd. Deze handtekening maakt onderdeel uit van het bestand zelf. Daardoor wordt het onmogelijk om het bestand te wijzigen: als het bestand wordt gewijzigd, dan wijzigd het controle getal en dan is de handtekening niet meer geldig.

Veiligheid bewerken

De veiligheid van deze techniek, is afhankelijk van de betrouwbaarheid van de gebruikte handtekening. Net zoals elke ander Public key infrastructure (PKI) technologie, is de integriteit van het systeem afhanklijk van de beveiliging tegen ongeautoriseerde toegang tot de geheime sleutel van de auteur. Als deze sleutel in verkeerde handen valt en wordt gebruikt om bestanden te ondertekenen, dan lijkt dat bestand van de oorspronkelijke auteur afkomstig te zijn, terwijl het feitelijk van een ander afkomstig is. De kans dat de sleutel wordt misbruikt is zeer klein, omdat de sleutel alleen op de computer van de auteur aanwezig is. Echter de schade van een dergelijk incident kan enorm zijn, zoals in de hack bij DigiNotar het geval was.

Certificaat bewerken

De digitale handtekening wordt geplaatst door gebruik te maken van een certificaat. Dat certificaat kan zowel afkomstig zijn van een openbare, Public Key Infrastructure, of van een interne Certificaatautoriteit. Als een handtekening via een publiek certificaat is geplaatst, dan is het bestand op elke computer te openen, de handtekening kan op elke computer worden gecontroleerd. Als een handtekening via een interne autoriteit is gegenereerd, dan kunnen alleen de computers die deze interne autoriteit vertrouwen de betrouwbaarheid vaststellen. Andere systemen zullen expliciet de vraag stellen of het bestand vertrouwd mag worden.

Praktijk bewerken

Code signing wordt al op grote schaal toegepast om de betrouwbaarheid en herkomst van programmatuur die via het internet wordt verspreid te bewaken. Zo worden Java applets[2] ondertekend, net als Microsoft ActiveX-componenten. Ook de systemen waarmee updates van Linux,[3][4] Mac OS X[5], Windows[6] en ook Android[7] en iOS[8] worden gedistribueerd, zijn voorzien van een digitale handtekening om vervalsing tegen te gaan.

Bij spelcomputers[9] is het gebruikelijk dat de programmacode van het computerspel van een digitale handtekening moeten zijn voorzien om het te kunnen spelen. Hierbij wordt piraterij en valsspelen voorkomen.

Referenties bewerken