Hoppa till innehåll

47-dagarscertifikat kommer. Är du redo?

Agera nu →

Vad är ett kodsigneringscertifikat?

Ett kodsigneringscertifikat är ett digitalt certifikat som en programvaruutgivare använder för att signera kod digitalt, så att operativsystem, webbläsare och säkerhetsverktyg kan verifiera vem som publicerade den och bekräfta att koden inte har ändrats sedan den signerades. 

Ett kodsigneringscertifikat låter en utgivare bifoga en digital signatur till en applikation, ett skript, en drivrutin eller en firmware-avbildning. Signaturen bevisar att koden kom från certifikatinnehavaren och inte har ändrats sedan signeringen. Certifikatutfärdare utfärda kodsigneringscertifikat vid Organization Validation (OV) eller Extended Validation (EV), och sedan den 1 juni 2023 kräver CA/Browser Forum att varje privat nyckel för kodsignering, OV eller EV, genereras och lagras på en certifierad hårdvarukryptomodul snarare än i programvara. 

Key Takeaways

  • Ett kodsigneringscertifikat binder en utgivares verifierade identitet till den kod den signerar, så att operativsystem och antivirusmotorer kan bekräfta äkthet och integritet innan en användare kör programvaran. 
  • Certifikatutfärdare utfärdar två valideringsnivåer för kodsignering: Organisationsvalidering (OV) och Utökad validering (EV). Det finns inget domänvaliderat kodsigneringscertifikat. 
  • Sedan den 1 juni 2023 kräver CA/Browser Forum Baseline Requirements att alla privata nycklar för kodsignering, OV och EV, genereras och lagras på en hårdvarukryptomodul som är certifierad enligt minst FIPS 140-2 nivå 2 eller Common Criteria EAL 4+. 
  • Att tidsstämpla en signatur håller den giltig även efter att certifikatet självt har löpt ut, vilket är viktigt för programvara som finns kvar i fält i åratal. 
  • Stöld av privata nycklar, inte svag kryptografi, är den vanligaste orsaken till kodsigneringsincidenter. ASUS Live Update-attackerna och liknande attacker i leveranskedjan härrörde båda från stulna signeringsnycklar. 

Vad är ett kodsigneringscertifikat? 

A kodsigneringscertifikat är mekanismen bakom indikatorn "betrodd utgivare" som en användare ser när de installerar programvara. Utgivarens privata nyckel signerar en kryptografisk hash av koden; certifikatet innehåller den matchande publika nyckeln och utgivarens verifierade identitet. När en enhet installerar programvaran beräknar den om hashen, kontrollerar signaturen mot certifikatet och leder certifikatkedjan tillbaka till en betrodd rot innan installationen tillåts fortsätta utan varningar. 

Kodsigneringscertifikat utfärdas av offentliga certifikatutfärdare som DigiCert, Sectigo och GlobalSign, i enlighet med CA/Browser Forums grundläggande krav för kodsigneringscertifikat. 

Hur kodsignering fungerar

Signering och verifiering av kod följer samma grundläggande sekvens varje gång:

  • Utgivaren genererar en hash av koden (applikationen, skriptet eller firmware-avbildningen). 
  • Utgivarens privata nyckel, som förvaras på en HSM eller token, krypterar den hashen för att skapa den digitala signaturen. 
  • Signaturen och kodsigneringscertifikatet är inbäddade i eller bifogade programvarupaketet. 
  • Valfritt kan en tidsstämpelutfärdare medsignera paketet så att signaturen förblir giltig efter att certifikatet har löpt ut. 
  • När en användare eller ett system installerar programvaran beräknar det om hashvärdet, verifierar signaturen mot certifikatets publika nyckel och kontrollerar certifikatkedjan mot en betrodd rot innan installationen tillåts. 

Typer av kodsigneringscertifikat 

Kodsigneringscertifikat finns i två valideringsnivåer, plus en valfri tidsstämpelfunktion som gäller för båda. 

Typ Validering utförd Typisk användning 
Standardkodsignering (OV) Bekräftar organisationens juridiska existens och att begäranden är behörig att agera för dess räkning. Skrivbordsprogram, drivrutiner, interna verktyg, mestadels kommersiell programvara. 
EV-kodsignering Lägger till en djupare kontroll av juridiska personer och bakgrundskontroller; historiskt aktiverat direkt SmartScreen-rykte i Windows. Kärnlägesdrivrutiner, säkerhetsprogramvara, utgivare som behöver omedelbart förtroende utan någon period för att bygga upp sitt rykte. 
Tidsstämpling (tillägg, inte en certifikattyp) En betrodd tidsstämpelutfärdare medsignerar paketet vid signeringstillfället. All signerad programvara som måste förbli giltig efter att signeringscertifikatet har löpt ut. 

Äldre versioner av den här artikeln hänvisade till "Domänvalideringskodsigneringscertifikat". Den typen finns inte: DV är en TLS / SSL valideringsnivå, inte en kodsigneringsnivå. Varje kodsigneringscertifikat kräver identitetsverifiering på organisationsnivå som minimum. 

Lösning för företagskodsignering

Få en lösning för alla dina behov av kodsignering och kryptografi för mjukvara med vår kodsigneringslösning.

Varför kodsigneringsnycklar måste finnas på en HSM

Från och med den 1 juni 2023 kräver CA/Browser Forum att den privata nyckeln bakom varje nytt eller förnyat kodsigneringscertifikat, OV eller EV, genereras och lagras i en hårdvarukryptomodul som är certifierad enligt FIPS 140-2 nivå 2 eller Common Criteria EAL 4+ eller bättre, och att nyckeln inte kan exporteras. Certifikat som utfärdats före det datumet påverkas inte förrän nästa förnyelse.

Lagringsalternativ Hur det fungerar 
Hårdvarutoken CA skickar en certifierad USB-token; nyckeln genereras på och lämnar aldrig token. 
HSM på plats eller i molnet Prenumeranten använder en certifierad HSM (eller en HSM-som-en-tjänst); CA verifierar efterlevnad och fjärrnyckelattestering. 
Signeringstjänst CA:n eller en betrodd leverantör innehar nyckeln i sin egen certifierade HSM och signerar för prenumerantens räkning via ett API. 

Denna regel existerar eftersom stulna programvarusigneringsnycklar, inte trasig kryptografi, har orsakat de mest uppmärksammade kodsigneringsincidenterna. Att förvara nyckeln inuti en certifierad HSM innebär att den kan signera kod men aldrig kopieras ut och användas någon annanstans.

Kodsignering i CI/CD-pipelines

De flesta team signerar nu kod automatiskt i sin byggpipeline snarare än som ett manuellt steg före lansering. 

  • Automatiserad signering. Varje version i Jenkins, GitHub Actions eller Azure DevOps anropar ett signeringssteg innan artefakter publiceras, vilket eliminerar manuell hantering av den privata nyckeln. 
  • Klientsidig hashning. Endast filhashen skickas till HSM eller signeringstjänsten för signering, inte hela artefakten, vilket håller stora byggen snabba. 
  • Åtkomstkontroll och granskning. Rollbaserad åtkomstkontroll (RBAC) begränsar vem eller vad som kan utlösa en signatur, och varje signeringshändelse loggas för efterlevnad. 
  • Kartläggning av efterlevnad. En komplett signeringslogg stöder ramverk som NIST-vägledning, PCI DSS och interna policyer för programvaruleveranskedjan, och är i linje med ramverk som Googles SLSA och Microsofts S2C2F. 

Risker med kodsignering och hur man minskar dem

Stöld eller missbruk av privat nyckel HSM-baserad lagring, RBAC och nyckelrotation så att en stulen autentiseringsuppgift inte kan signera kod.
Nyckelspridning över team och pipelines Centralisera signering via en enda plattform med en realtidsnyckel- och certifikatinventering. 
Skadliga insiders eller komprometterade byggservrarOföränderliga, granskade byggmiljöer och godkännandearbetsflöden innan en signatur utfärdas. 
Utgångna certifikat bryter mot äldre programvara Tidsstämpla varje signatur så att den förblir giltig även efter att certifikatet har löpt ut. 

Hur kan krypteringskonsulting hjälpa till?

Krypteringskonsulttjänster CodeSign Secure är en säker och flexibel lösning för kodsignering på flera operativsystem, nämligen Windows, Linux, macOS och Docker-containrar. CodeSign Secure skyddar digitala enheter från skadlig programvara genom digital kodsignering, vilket skyddar dem från ändringar under transport, vilket utgör en viktig del av säkerheten i dagens digitaliserade värld.  

CodeSign Secure gör det möjligt för en organisation att säkra information medan den överförs. Det gör det också möjligt för kodens mottagare att ge ytterligare förtroende genom att veta att koden är intakt och original på alla plattformar. 

Slutsats 

Certifikat för kodsignering är avgörande för att utveckla programvara som är säker och tillförlitlig. Genom att välja rätt certifikatkategori, känna till skillnaden mellan offentligt förtroende och privat förtroende, och integrera kodsignering i din DevOps-pipeline, förbättrar du också säkerheten och tillförlitligheten för din programvara.  

Att följa regler är en sak, men att ingjuta förtroende hos dina användare och skydda deras applikationer mot alla former av manipulering är en annan. Sammantaget förbättrar kodsignering säkerhetsnivån för alla program och programvara som skapas för användarna. 

Vanliga frågor om partihandel med mat och dryck 

Vad är skillnaden mellan ett kodsigneringscertifikat och ett SSL/TLS-certifikat? 

Ett SSL/TLS-certifikat autentiserar en webbplats och krypterar trafik mellan en webbläsare och en server. Ett kodsigneringscertifikat autentiserar utgivaren av en programvara och bevisar att koden inte har ändrats. Båda är digitala certifikat utfärdade av en CA, men de verifierar olika saker och är inte utbytbara.

Behöver jag ett kodsigneringscertifikat för elbilar? 

De flesta utgivare kan använda ett standard OV-kodsigneringscertifikat. EV är värt den extra verifieringen för kernellägesdrivrutiner eller säkerhetsprogramvara där en antivirusleverantör eller Microsoft Windows kräver den striktare identitetskontrollen, eller där en utgivare vill ha den djupaste tillgängliga nivån av identitetssäkring. 

Kan jag lagra min privata nyckel för kodsignering i programvara istället för en HSM? 

Nej. Sedan den 1 juni 2023 kräver CA/Browser Forum-reglerna att varje nytt eller förnyat kodsigneringscertifikats privata nyckel genereras och lagras i en certifierad hårdvarukrypteringsmodul (FIPS 140-2 nivå 2 eller Common Criteria EAL 4+ eller bättre). Offentliga CA:er kommer inte att utfärda ett certifikat för en enbart programvarunyckel. 

Vad är tidsstämpling i kodsignering? 

Tidsstämpling lägger till en betrodd, oberoende verifierbar tidpunkt till en kodsignatur. Det gör att en signatur förblir giltig även efter att signeringscertifikatet har löpt ut, så att programvara som signerades för flera år sedan fortfarande kan verifieras som legitim vid tidpunkten för signeringen. 

Hur länge är ett kodsigneringscertifikat giltigt? 

Kodsigneringscertifikat omfattas inte av CA/Browser Forums krympande TLS-giltighetsschema. De flesta CA:er utfärdar dem i ett till tre år, och tidsstämpling bevarar signaturens giltighet efter det utgångsdatumet. 

Säkra din programvaruleveranskedja 

Redo att flytta kodsignering från kalkylblad och delade USB-tokens? CodeSign Secure i praktiken, eller inspektera valfritt certifikat med vår kostnadsfria ASN.1 CSR och certifikatavkodare.