Kodesignering
Også kendt som: softwaresignering
At sætte en digital signatur på software, så brugere og systemer kan tjekke, hvem der har lavet den, og at ingen har ændret den bagefter.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
Udgiveren beregner en hash af et program, en opdatering, et script eller et container-image og signerer den med en privat nøgle knyttet til et digitalt certifikat; før systemet installerer eller kører filen, tjekker det signaturen og certifikatet og afviser filen, hvis noget ikke stemmer.
Forklaret enkelt
Som forseglingen på et medicinglas med producentens navn - er forseglingen brudt eller navnet forkert, sluger man ikke indholdet.
I praksis
En kommunes IT-drift lader kun medarbejdernes computere køre software, der er signeret af godkendte udgivere; da en falsk “opdatering” kommer ind med en mail, nægter Windows at starte den, fordi signaturen mangler.
Teknisk uddybning
Alle ordninger for kodesignering lægger en digital signatur over et digest af artefaktet, men formaterne varierer efter platform. Microsoft Authenticode (introduceret 1996) indlejrer en PKCS#7/CMS SignedData-struktur i PE-filens certifikattabel og hasher filen, idet checksummen og selve signaturområdet udelades; Apples codesign gemmer et code directory med hashes per side og kræver notarisering for Gatekeeper; Java signerer JAR-manifester; Linux-distributioner signerer repository-metadata eller pakker med OpenPGP-nøgler; Android bruger APK Signature Scheme v2 og senere, som dækker hele arkivet. Underskriverens X.509-certifikat skal have extended key usage codeSigning (OID 1.3.6.1.5.5.7.3.3) og kæde op til en rod i verifikatorens tillidslager.
Tidsstempling løser problemet med udløb. Signaturen sendes til en Time-Stamping Authority efter RFC 3161, som kontrasignerer signaturens hash med et betroet tidspunkt; verifikatorer accepterer så signaturen, efter certifikatet er udløbet, så længe det var gyldigt på tidsstemplet. Det påvirker også tilbagekaldelse: bliver en nøgle kompromitteret, kan CA'en tilbagekalde med en invalidity date, så kun signaturer tidsstemplet efter kompromitteringen fejler. Offentligt betroede kodesigneringscertifikater er underlagt CA/Browser Forums Code Signing Baseline Requirements, der siden 1. juni 2023 kræver, at abonnentens private nøgle genereres og opbevares i et hardwarebaseret kryptomodul (HSM, token eller HSM-tjeneste i skyen), og som siden 1. marts 2026 begrænser certifikaters gyldighed til 460 dage.
Sigstore, et OpenSSF-projekt, tilbyder "nøgleløs" signering rettet mod open source- og container-forsyningskæder: cosign henter et OIDC-token for underskriverens identitet (en persons e-mail eller en CI-workflows identitet), Fulcio udsteder et certifikat til en flygtig nøgle, der er gyldigt i omkring ti minutter, signaturen og certifikatet registreres i transparensloggen Rekor, og verifikatorer tjekker både den forventede identitet og udsteder og optagelsen i loggen. Notary Projects notation er et PKI-baseret alternativ til OCI-artefakter; npm, PyPI og Maven Central har i forskellige former indført Sigstore-baseret provenance eller signaturer.
Den vigtigste begrænsning er, at en signatur bevidner, hvem der signerede, ikke hvad koden gør. Stjålne nøgler har signeret malware (Stuxnet brugte certifikater stjålet fra Realtek og JMicron), og kompromitterede byggesystemer giver fuldt gyldige signaturer på ondsindet kode, som med SolarWinds Orion i 2020 og 3CX' desktopklient i 2023. Effektive programmer beskytter derfor nøgler i HSM'er med separat godkendelse af hver signering, signerer kun i hærdede frigivelsespipelines frem for på udvikleres maskiner, kobler signaturer med build-provenance (SLSA) og SBOM'er og håndhæver verifikation hos modtageren: Windows Defender Application Control- eller AppLocker-politikker, macOS Gatekeeper, pakkehåndteringens signaturtjek og admission controllers i Kubernetes, der afviser usignerede images.
Hvad du bør lære først
Alt det, dette bygger på - grundlaget først.
Relationer
- Del af
- Softwareforsyningskæde
- Forudsætter
- Digital signaturDigitalt certifikat
- Bruges sammen med
- PipelineSoftwarestykliste (SBOM)CI/CD
Kilder og videre læsning
Standarder og officielle tekster
Officiel dokumentation
- Sigstore documentation · OpenSSF
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Test dig selv
Indlæser…