- Wichtige Erkenntnisse
- Was ist ein Codesignaturzertifikat?
- So funktioniert Code Signing
- Arten von Code Signing-Zertifikaten
- Warum Code-Signaturschlüssel auf einem HSM gespeichert werden müssen
- Codesignierung in CI/CD-Pipelines
- Risiken der Codesignierung und wie man sie mindern kann
- Wie kann Verschlüsselungsberatung helfen?
- Fazit
- Häufig gestellte Fragen
- Sichern Sie Ihre Software-Lieferkette
Ein Codesignaturzertifikat ist ein digitales Zertifikat, das ein Softwarehersteller verwendet, um Code digital zu signieren, damit Betriebssysteme, Browser und Sicherheitstools überprüfen können, wer ihn veröffentlicht hat und bestätigen können, dass der Code seit der Signierung nicht verändert wurde.
Ein Codesignaturzertifikat ermöglicht es einem Herausgeber, einer Anwendung, einem Skript, einem Treiber oder einem Firmware-Image eine digitale Signatur hinzuzufügen. Die Signatur beweist, dass der Code vom Zertifikatsinhaber stammt und seit der Signierung nicht verändert wurde. Zertifizierungsstellen Ausstellung von Code-Signaturzertifikaten auf Organisationsvalidierungs- (OV) oder erweiterter Validierungsebene (EV). Seit dem 1. Juni 2023 verlangt das CA/Browser Forum, dass jeder private Code-Signaturschlüssel, OV oder EV, auf einem zertifizierten Hardware-Kryptomodul und nicht in Software generiert und gespeichert wird.
Wichtige Erkenntnisse
- Ein Codesignaturzertifikat verknüpft die verifizierte Identität eines Herausgebers mit dem von ihm signierten Code, sodass Betriebssysteme und Antivirenprogramme die Authentizität und Integrität bestätigen können, bevor ein Benutzer die Software ausführt.
- Zertifizierungsstellen vergeben zwei Validierungsstufen für Codesignaturzertifikate: Organisationsvalidierung (OV) und Erweiterte Validierung (EV). Es gibt kein domänenvalidiertes Codesignaturzertifikat.
- Seit dem 1. Juni 2023 schreiben die CA/Browser Forum Baseline Requirements vor, dass alle privaten Codesignaturschlüssel, OV und EV, auf einem Hardware-Kryptomodul generiert und gespeichert werden müssen, das mindestens nach FIPS 140-2 Level 2 oder Common Criteria EAL 4+ zertifiziert ist.
- Durch die Vergabe eines Zeitstempels bleibt die Signatur auch nach Ablauf des Zertifikats gültig, was für Software, die jahrelang im Einsatz bleibt, von Bedeutung ist.
- Der Diebstahl privater Schlüssel, nicht etwa schwache Kryptografie, ist die häufigste Ursache für Sicherheitsvorfälle im Zusammenhang mit Codesignaturen. Der ASUS Live Update-Sicherheitsvorfall und ähnliche Lieferkettenangriffe basierten beide auf gestohlenen Signaturschlüsseln.
Was ist ein Codesignaturzertifikat?
A Codesignaturzertifikat Dies ist der Mechanismus hinter der Anzeige „Vertrauenswürdiger Herausgeber“, die Nutzern bei der Softwareinstallation angezeigt wird. Der private Schlüssel des Herausgebers signiert einen kryptografischen Hash des Codes; das Zertifikat enthält den zugehörigen öffentlichen Schlüssel und die verifizierte Identität des Herausgebers. Bei der Installation der Software berechnet das Gerät den Hash neu, überprüft die Signatur anhand des Zertifikats und verfolgt die Zertifikatskette bis zu einer vertrauenswürdigen Stammzertifizierungsstelle zurück, bevor die Installation ohne Warnungen fortgesetzt werden kann.
Code-Signatur-Zertifikate werden von öffentlichen Zertifizierungsstellen wie DigiCert, Sectigo und GlobalSign gemäß den Baseline Requirements for Code Signing Certificates des CA/Browser Forum ausgestellt.
So funktioniert Code Signing
Das Signieren und Verifizieren von Code folgt jedes Mal der gleichen grundlegenden Abfolge:
- Der Herausgeber generiert einen Hash des Codes (der Anwendung, des Skripts oder des Firmware-Images).
- Der private Schlüssel des Herausgebers, der auf einem HSM oder Token, verschlüsselt diesen Hash, um die digitale Signatur zu erstellen.
- Die Signatur und das Codesignaturzertifikat sind in das Softwarepaket eingebettet oder diesem beigefügt.
- Optionalerweise wird das Paket von einer Zeitstempelbehörde mitunterzeichnet, sodass die Signatur auch nach Ablauf des Zertifikats gültig bleibt.
- Wenn ein Benutzer oder ein System die Software installiert, berechnet es den Hashwert neu, überprüft die Signatur anhand des öffentlichen Schlüssels des Zertifikats und prüft die Zertifikatskette bis zu einer vertrauenswürdigen Stammzertifizierungsstelle, bevor die Installation zugelassen wird.
Arten von Code Signing-Zertifikaten
Code-Signatur-Zertifikate gibt es in zwei Validierungsstufen, plus einer optionalen Zeitstempelfunktion, die für beide gilt.
| Typ | Validierung durchgeführt | Typische Verwendung |
|---|---|---|
| Standard-Codesignatur (OV) | Bestätigt die rechtliche Existenz der Organisation und dass der Antragsteller befugt ist, in ihrem Namen zu handeln. | Desktop-Anwendungen, Treiber, interne Tools, die meisten kommerziellen Softwareprodukte. |
| EV-Codesignatur | Fügt eine detailliertere Überprüfung der juristischen Person und des Hintergrunds hinzu; ermöglichte in der Vergangenheit die sofortige SmartScreen-Reputation unter Windows. | Kernelmodus-Treiber, Sicherheitssoftware, Herausgeber, die sofortiges Vertrauen benötigen, ohne Zeit für den Reputationsaufbau. |
| Zeitstempelung (Zusatzfunktion, kein Zertifikatstyp) | Eine anerkannte Stelle für die Ausstellung von Zeitstempeln unterzeichnet das Paket zum Zeitpunkt der Unterzeichnung mit. | Jegliche signierte Software, die auch nach Ablauf des Signaturzertifikats gültig bleiben muss. |
Ältere Versionen dieses Artikels sprachen von „Domain-Validierungs-Codesignaturzertifikaten“. Dieser Typ existiert nicht: DV ist ein TLS / SSL Validierungsebene, nicht Codesignatur-Ebene. Jedes Codesignaturzertifikat erfordert mindestens eine Identitätsprüfung auf Organisationsebene.
Warum Code-Signaturschlüssel auf einem HSM gespeichert werden müssen
Ab dem 1. Juni 2023 verlangt das CA/Browser Forum, dass der private Schlüssel jedes neuen oder verlängerten Codesignaturzertifikats (OV oder EV) in einem Hardware-Kryptomodul generiert und gespeichert wird, das nach FIPS 140-2 Level 2 oder Common Criteria EAL 4+ oder höher zertifiziert ist. Der Schlüssel darf nicht exportiert werden. Zertifikate, die vor diesem Datum ausgestellt wurden, sind bis zu ihrer nächsten Verlängerung nicht betroffen.
| Speicheroption | So funktioniert’s |
|---|---|
| Hardware-Token | Die Zertifizierungsstelle liefert einen zertifizierten USB-Token; der Schlüssel wird auf dem Token generiert und verlässt ihn nie. |
| On-Premise- oder Cloud-HSM | Der Abonnent betreibt ein zertifiziertes HSM (oder ein HSM-as-a-Service); die Zertifizierungsstelle überprüft die Konformität und die Bestätigung der Fernzugriffsschlüssel. |
| Unterzeichnungsdienst | Die Zertifizierungsstelle oder ein vertrauenswürdiger Anbieter verwahrt den Schlüssel in seinem eigenen zertifizierten HSM und signiert im Namen des Abonnenten über eine API. |
Diese Regel existiert, weil gestohlene Software-Signaturschlüssel, nicht etwa fehlerhafte Kryptografie, die aufsehenerregendsten Codesignatur-Vorfälle verursacht haben. Die Speicherung des Schlüssels in einem zertifizierten HSM ermöglicht zwar das Signieren von Code, verhindert aber dessen Auslesen und anderweitige Verwendung.
Codesignierung in CI/CD-Pipelines
Die meisten Teams signieren Code mittlerweile automatisch innerhalb ihrer Build-Pipeline, anstatt dies als manuellen Schritt vor der Veröffentlichung durchzuführen.
- Automatisierte Signierung. Jeder Build in Jenkins, GitHub Actions oder Azure DevOps ruft einen Signierungsschritt auf, bevor die Artefakte veröffentlicht werden, wodurch die manuelle Handhabung des privaten Schlüssels entfällt.
- Clientseitiges Hashing. Nur der Dateihash wird zum Signieren an das HSM oder den Signaturdienst gesendet, nicht das gesamte Artefakt, wodurch große Builds schnell bleiben.
- Zugriffskontrolle und -prüfung. Die rollenbasierte Zugriffskontrolle (RBAC) beschränkt, wer oder was eine Signatur auslösen kann, und jeder Signaturvorgang wird zur Einhaltung der Vorschriften protokolliert.
- Compliance-Mapping. Ein vollständiger Signatur-Audit-Trail unterstützt Frameworks wie die NIST-Richtlinien, PCI DSS und interne Software-Lieferkettenrichtlinien und ist mit Frameworks wie Googles SLSA und Microsofts S2C2F kompatibel.
Risiken der Codesignierung und wie man sie mindern kann
| Diebstahl oder Missbrauch des privaten Schlüssels | HSM-basierte Speicherung, RBAC und Schlüsselrotation, damit gestohlene Anmeldeinformationen keinen Code signieren können. |
| Wichtige Ausbreitung über Teams und Pipelines hinweg | Zentrale Signaturerstellung über eine einzige Plattform mit Echtzeit-Schlüssel- und Zertifikatsverwaltung. |
| Böswillige Insider oder kompromittierte Build-Server | Unveränderliche, geprüfte Build-Umgebungen und Genehmigungsworkflows, bevor eine Signatur erteilt wird. |
| Abgelaufene Zertifikate verursachen Probleme mit älterer Software | Jede Signatur wird mit einem Zeitstempel versehen, damit sie auch nach Ablauf des Zertifikats gültig bleibt. |
Wie kann Verschlüsselungsberatung helfen?
Verschlüsselungsberatung CodeSign Secure ist eine sichere und flexible Lösung für die Code-Signierung auf verschiedenen Betriebssystemen, insbesondere Windows, Linux, macOS und Docker-Containern. CodeSign Secure schützt digitale Geräte durch digitale Code-Signierung vor schädlicher Software und verhindert so Änderungen während der Übertragung. Dies ist ein wesentlicher Bestandteil der Sicherheit in der heutigen digitalisierten Welt.
CodeSign Secure ermöglicht es Unternehmen, Informationen während der Übertragung zu sichern. Darüber hinaus können die Empfänger des Codes zusätzliches Vertrauen aufbauen, da sie wissen, dass der Code auf allen Plattformen intakt und original ist.
Fazit
Zertifikate für die Code-Signierung sind für die Entwicklung sicherer und zuverlässiger Software unerlässlich. Durch die Auswahl der richtigen Zertifikatskategorie, das Wissen um den Unterschied zwischen öffentlichem und privatem Vertrauen und die Integration der Code-Signierung in Ihre DevOps-Pipeline verbessern Sie die Sicherheit und Zuverlässigkeit Ihrer Software.
Die Einhaltung von Vorschriften ist eine Sache, das Vertrauen Ihrer Benutzer zu gewinnen und ihre Anwendungen vor allen Formen der Manipulation zu schützen, eine andere. Alles in allem erhöht die Code-Signierung die Sicherheit aller für die Benutzer erstellten Programme und Software. 
Häufig gestellte Fragen
Worin besteht der Unterschied zwischen einem Codesignaturzertifikat und einem SSL/TLS-Zertifikat?
Ein SSL/TLS-Zertifikat authentifiziert eine Website und verschlüsselt den Datenverkehr zwischen Browser und Server. Ein Codesignaturzertifikat authentifiziert den Herausgeber einer Software und beweist, dass der Quellcode unverändert ist. Beide sind digitale Zertifikate, die von einer Zertifizierungsstelle ausgestellt werden, aber sie bestätigen unterschiedliche Aspekte und sind nicht austauschbar.
Benötige ich ein EV-Codesignaturzertifikat?
Die meisten Herausgeber können ein Standard-OV-Codesignaturzertifikat verwenden. EV ist die zusätzliche Überprüfung für Kernelmodustreiber oder Sicherheitssoftware wert, wenn ein Antivirenhersteller oder Microsoft Windows eine strengere Identitätsprüfung vorschreibt oder wenn ein Herausgeber die größtmögliche Sicherheit für seine Identität wünscht.
Kann ich meinen privaten Codesignaturschlüssel in einer Software anstatt in einem HSM speichern?
Nein. Seit dem 1. Juni 2023 schreiben die Regeln des CA/Browser Forums vor, dass der private Schlüssel jedes neuen oder verlängerten Codesignaturzertifikats in einem zertifizierten Hardware-Kryptomodul (FIPS 140-2 Level 2 oder Common Criteria EAL 4+ oder höher) generiert und gespeichert werden muss. Öffentliche Zertifizierungsstellen stellen keine Zertifikate für reine Softwareschlüssel aus.
Was versteht man unter Zeitstempelung bei der Codesignierung?
Durch die Hinzufügung eines Zeitstempels wird einer Codesignatur ein vertrauenswürdiger, unabhängig überprüfbarer Zeitpunkt hinzugefügt. Dadurch bleibt eine Signatur auch nach Ablauf des Signaturzertifikats gültig, sodass Software, die vor Jahren signiert wurde, weiterhin als zum Zeitpunkt ihrer Signierung legitim verifiziert werden kann.
Wie lange ist ein Codesignaturzertifikat gültig?
Codesignaturzertifikate fallen nicht unter die vom CA/Browser Forum eingeführte, verkürzte Gültigkeitsdauer von TLS-Zertifikaten. Die meisten Zertifizierungsstellen stellen sie für ein bis drei Jahre aus, und die Zeitstempelung gewährleistet die Gültigkeit der Signatur über dieses Ablaufdatum hinaus.
Sichern Sie Ihre Software-Lieferkette
Sind Sie bereit, die Code-Signatur von Tabellenkalkulationen und gemeinsam genutzten USB-Tokens zu verlagern? Siehe CodeSign Secure im Einsatz oder überprüfen Sie jedes Zertifikat mit unserem kostenlosen ASN.1 CSR & Zertifikatsdecoder.
- Wichtige Erkenntnisse
- Was ist ein Codesignaturzertifikat?
- So funktioniert Code Signing
- Arten von Code Signing-Zertifikaten
- Warum Code-Signaturschlüssel auf einem HSM gespeichert werden müssen
- Codesignierung in CI/CD-Pipelines
- Risiken der Codesignierung und wie man sie mindern kann
- Wie kann Verschlüsselungsberatung helfen?
- Fazit
- Häufig gestellte Fragen
- Sichern Sie Ihre Software-Lieferkette
