Introductie
Laten we het kort hebben over codeondertekening.
Codeondertekening is een methode om een digitale handtekening op een bestand, document, software of uitvoerbaar bestand om de werking ervan te testen echtheid en authenticiteit met betrekking tot de functionaliteit en functies die het biedt. Dit garandeert ook dat de software-entiteit (bestand, document, software of uitvoerbaar bestand) niet wordt gemanipuleerd tijdens de overdracht.
Het ondertekenen van code is een essentiële vereiste geworden voor softwareontwikkelaars. De reden hiervoor is dat codeondertekening zorgt voor vertrouwen onder gebruikers in de software. Ook krijgen gebruikers hierdoor het vertrouwen dat ze geen waarschuwingsberichten meer krijgen die verschijnen wanneer een gebruiker het uitvoerbare bestand in hun omgeving downloadt/installeert.
Wat is tijdstempeling?
Tijdstempeling is een optioneel onderdeel van het codeondertekeningsproces, waarmee software kan herkennen of een toegepaste codeondertekeningshandtekening geldig is, zelfs nadat een codeondertekeningscertificaat is verlopen. Met andere woorden, we kunnen zeggen dat tijdstempeling de op de software toegepaste handtekening behoudt.
Telkens wanneer het uitvoerbare bestand van de ondertekende software op een clientcomputer/systeem wordt uitgevoerd, wordt de digitale handtekening geverifieerd door het besturingssysteem van de gebruiker. Stel nu dat de gebruiker de software van een tijdstempel heeft voorzien. De computer van de gebruiker verifieert de handtekening op basis van het tijdstip waarop de digitale handtekening is geplaatst, in plaats van de huidige tijd van het systeem waarop de software wordt uitgevoerd.
Hieronder vindt u de workflow voor een tijdstempelproces:

Tijdstempeling wordt verzorgd door de Time Stamp Authority (TSA), die gebruikmaakt van de principes en technologie van Public Key Infrastructure (PKI) voor het toepassen van tijdstempels.
De volgende stappen worden uitgevoerd in de tijdstempelsoftware:
- De aanvrager van de software die van een tijdstempel moet worden voorzien, maakt een gehashte waarde aan en stuurt deze naar de TSA.
- De hashwaarde, de gezaghebbende tijd en andere gerelateerde informatie, zoals de datum en tijd van de digitale handtekening, worden door de TSA gecombineerd en ondertekend met de persoonlijke sleutel om een nieuwe hashwaarde te creëren.
- Vervolgens worden de nieuwe hash en de hash van de software gebundeld en naar de aanvrager verzonden.
- De applicatie van een aanvrager ontvangt vervolgens de bundel en verifieert deze. Zodra de verificatie is voltooid, wordt de tijdstempel geldig en opgenomen in de codehandtekening van de software.
Laten we dit eens proberen te begrijpen aan de hand van een realistisch scenario.
Stel dat u de ontwikkelaar bent, de codeondertekening van uw software hebt uitgevoerd en dat het certificaat geldig is van januari 2021 tot en met januari 2022. Een gebruiker die uw software in oktober 2021 downloadt, vergeet deze te installeren vanwege zijn drukke schema. Hij probeert de software in februari 2022 te installeren, maar krijgt een foutmelding.
Laten we hetzelfde scenario bekijken, met als enige uitzondering dat u de software in juli 2021 van een tijdstempel hebt voorzien. Wanneer de gebruiker de software nu in februari 2022 probeert te installeren, lukt dat en krijgt hij helemaal geen foutmelding. Dit is het effect van tijdstempeling!
Protocollen die worden gebruikt bij tijdstempeling
De volgende protocollen worden gebruikt in tijdstempelsoftware:
RFC 3161
RFC 3161 is bijgewerkt en aangemerkt als RFC 5035, wat bovendien het gebruik van ESSCertIDv2 toestaat.
Microsoft-authenticatie
Microsoft Authenticode kan in verschillende formaten worden gebruikt, zoals .cab, .exe, .ocx en .dll
Best practices voor tijdstempeling van codetekens
De volgende best practices kunnen worden toegepast terwijl de tijdstempeling van codetekens wordt uitgevoerd:
- Zorg er altijd voor dat de optie voor tijdstempeling is ingeschakeld in uw ondertekeningstool, zoals Microsoft Signtool. Kies ook een ondertekeningstool die de optie voor tijdstempeling ondersteunt, aangezien dit standaard een optionele functie is.
- Zorg ervoor dat tijdstempeling onderdeel is van uw softwareontwikkelingscyclus. Dit voorkomt onverwachte problemen als gevolg van versieverschillen.
- Documenteer het volledige proces voor uw ondertekeningstool met behulp van de tijdstempeloptie, aangezien elke ondertekeningstool een andere workflow voor tijdstempeling heeft. Verspreid dit document ook naar alle belanghebbenden die betrokken zijn bij het codeondertekeningsproces.
- Met tijdstempeling kan het clientsysteem verifiëren of de software vóór of na de intrekking van de code is ondertekend handtekening certificaatDus als u het codeondertekeningscertificaat om welke reden dan ook wilt intrekken, bijvoorbeeld vanwege een inbreuk op de privésleutel, kunt u dat doen. Het clientsysteem zal geen problemen ondervinden bij de installatie van de software, aangezien de tijdstempeling is uitgevoerd toen het codeondertekeningscertificaat geldig was.
Conclusie
Tijdstempeling lijkt een optionele stap, terwijl het een essentieel onderdeel is van het codeondertekeningsecosysteem in uw organisatie. Zonder tijdstempeling zou het verlopen/intrekken van codeondertekeningscertificaten het vertrouwen van klanten in hetzelfde softwareproduct ondermijnen. Tijdstempels zorgen ervoor dat, zelfs als certificaten hun geldigheid verliezen of om welke reden dan ook worden ingetrokken, de handtekeningen geldig, veilig en betrouwbaar blijven.
