Beskrivning
LÃ¥t oss kortfattat diskutera kodsignering.
Kodsignering är en metod för att sätta en digital signatur på en fil, ett dokument, en programvara eller en körbar fil för att testa dess äktheten och äkthet vad gäller funktionalitet och egenskaper som den tillhandahåller. Detta säkerställer också att programvaruenheten (fil, dokument, programvara eller körbar fil) inte manipuleras under transport.
Kodsignering har blivit ett väsentligt krav för mjukvaruutvecklare. Anledningen är att kodsignering säkerställer förtroende bland användare för programvaran, och ger också användarna förtroende för att undvika varningsmeddelanden som visas när en användare laddar ner/installerar den körbara filen i sin miljö.
Vad är tidsstämpling?
Tidsstämpling är en valfri del av kodsigneringsprocessen, vilket gör att programvara kan känna igen om en tillämpad kodsigneringssignatur är giltig – även efter att ett kodsigneringscertifikat har löpt ut. Med andra ord kan vi säga att tidsstämpling bevarar signaturen som tillämpats på programvaran.
Närhelst den signerade programvarans körbara fil körs/exekveras på en klientmaskin/ett klientsystem verifieras dess digitala signatur av användarens operativsystem. Anta nu att användaren har tidsstämplat programvaran. Användarens dator kommer att verifiera signaturen baserat på den tidpunkt då den signerades digitalt, snarare än systemets aktuella tidpunkt när programvaran körs.
Nedan följer arbetsflödet för en tidsstämplingsprocess:

Tidsstämpling tillhandahålls av Time Stamp Authority (TSA) som använder principer och teknik för Public Key Infrastructure (PKI) för att tillämpa tidsstämplar.
Följande steg utförs med Time Stamp-programvaran:
- Ett hashat värde skapas och skickas till TSA av den som begär programvaran som behöver tidsstämplas.
- Hashvärde, auktoritativ tid och annan relaterad information såsom data och tid för den digitala signaturen kombineras av TSA och signeras med dess privata nyckel för att skapa ett nytt hashvärde.
- Därefter paketeras den nya hashen och programvarans hash och skickas till den som begär det.
- En begärande applikation tar sedan emot paketet och verifierar det. När verifieringen är klar blir tidsstämpeln giltig och inbäddad i programvarans kodsignatur.
Låt oss försöka förstå detta utifrån ett verkligt scenario.
Låt oss anta att du är utvecklaren, att du har kodsignerat din programvara och att certifikatet är giltigt från januari 2021 till januari 2022. Nu glömmer en användare som laddar ner din programvara i oktober 2021 att installera den på grund av sitt hektiska schema. Han försöker installera programvaran i februari 2022, men får ett felmeddelande.
Låt oss förstå samma scenario med det enda undantaget att du har tidsstämplat programvaran i juli 2021. När användaren nu försöker installera programvaran i februari 2022 kan hen installera den utan att få något felmeddelande alls. Detta är effekten av tidsstämpling!!
Protokoll som används vid tidsstämpling
Följande protokoll används i tidsstämplingsprogramvara:
RFC 3161
RFC 3161 har uppdaterats och betecknats som RFC 5035, vilket dessutom tillåter användning av ESSCertIDv2.
Microsoft Autenticode
Microsoft Authenticode kan användas i olika format som .cab, .exe, .ocx och .dll.
Bästa praxis för tidsstämpling av kodsignering
Följande bästa praxis kan anpassas medan tidsstämpling av kodsignering utförs:
- Se alltid till att tidsstämplingsalternativet är aktiverat i ditt signeringsverktyg, till exempel Microsoft Signtool. Välj också ett signeringsverktyg som stöder tidsstämplingsalternativet eftersom det är en valfri funktion som standard.
- Se till att tidsstämpling ingår som en del av din programvaruutvecklingslivscykel. Detta undviker oväntade problem på grund av versionsöverensstämmelser.
- Dokumentera hela processen för ditt signeringsverktyg när du använder tidsstämplingsalternativet, eftersom varje signeringsverktyg har ett unikt arbetsflöde för tidsstämpling. Distribuera även detta dokument till alla intressenter som är involverade i kodsigneringsprocessen.
- Tidsstämpling gör det möjligt för klientsystemet att verifiera om programvaran signerades före eller efter att koden återkallades undertecknande av certifikatSå om du vill återkalla kodsigneringscertifikatet av någon anledning, till exempel genom att den privata nyckeln komprometteras, kan du göra det. Klientsystemet kommer inte att ha några problem med att installera programvaran, eftersom tidsstämplingen gjordes när kodsigneringscertifikatet var giltigt.
Slutsats
Tidsstämpling verkar vara ett valfritt steg, medan det är en viktig del av kodsigneringsekosystemet i din organisation. Utan tidsstämpling skulle utgången/återkallelsen av kodsigneringscertifikat minska kundernas förtroende för samma programvaruprodukt. Tidsstämplar säkerställer att även om certifikat förlorar sin giltighet eller återkallas av någon anledning, förblir deras signaturer giltiga, säkra och pålitliga.
