FAQ Hero
Vertrauenswürdiges Code Signing

Was ist Code Signing?

Was ist Code Signing?

Beim Code Signing wird eine binäre Softwaredatei mit einer digitalen Signatur versehen. Diese digitale Signatur bestätigt die Identität des Herstellers oder Herausgebers der Software und beweist, dass die Datei seit dem Zeitpunkt der Signatur nicht verändert oder manipuliert wurde. Code-Signaturen sind ein Indiz für die Vertrauenswürdigkeit eines Softwareprodukts. Darüber hinaus ist dieses Konzept eine wichtige Abwehrmaßnahme gegen Cyberangriffe auf IT-Umgebungen.

Mögliche Anwendungsbereiche für Code Signing sind Software für den internen oder externen Gebrauch, Patches und Fixes, Testversionen, Software für IoT-Geräte, Computerumgebungen und mobile Apps. Neben Code und Software können auch Anwendungen, Firmware, einzelne Dateien, Nachrichten, XML, Skripte, Container und Images mit Code-Signaturen versehen werden.

Wie funktioniert Code Signing?

Analog zu anderen PKI-Technologien basiert Code Signing auf einem Public-Private-Schlüsselpaar, einer Zertifizierungsstelle und einem digitalen Zertifikat. Der Hersteller erstellt und signiert ein Datenpaket, das die Software, das Code-Signing-Zertifikat und eine digitale Signatur beinhaltet. Das Code-Signing-Zertifikat enthält die Kontaktdaten und den öffentlichen Schlüssel des Herstellers sowie die Signatur der Zertifizierungsstelle zur Bestätigung der Herstelleridentität. Die digitale Signatur ist der signierte Hashwert der Software, der aus dem privaten Schlüssel des Herstellers erzeugt wird. Bei der Auslieferung der Software prüft das System des Benutzers, ob das Zertifikat gültig und echt ist, d. h. ob der Code seit dem Zeitpunkt der Signatur verändert wurde. Dabei wird mit dem öffentlichen Schlüssel des Zertifikats der Hashwert in der digitalen Signatur abgerufen. Anschließend wird der Hashwert in der digitalen Signatur mit dem Hash der Software verglichen. Stimmen die beiden Werte überein, kann der Benutzer sicher sein, dass die Software nicht manipuliert wurde. Beim Code Signing ist die Verwaltung privater Schlüssel ein wichtiger Sicherheitsaspekt. Gelangt der Schlüssel in falsche Hände, kann er missbraucht werden, um Schadcode zu signieren und diesen als Updates in Entwicklungs- und Kundenumgebungen einzuschleusen.

Warum benötigen wir Code-Signaturen?

Auf wichtigen Softwareplattformen wie Java und Microsoft sind Code-Signaturen obligatorisch, um die Verbreitung von Malware zu verhindern. Code Signing gehört nicht zuletzt deshalb zu den Best Practices der IT-Sicherheit, weil dadurch Downloads von manipuliertem Code oder von Software aus unbekannten Quellen verhindert werden können. Es ermöglicht die Unterscheidung zwischen Originalsoftware und Computerprogrammen zweifelhafter Herkunft, die möglicherweise täuschend echt verpackt sind. Außerdem werden bei der Installation kommerzieller Produkte oft Warnmeldungen angezeigt, wenn der Code nicht ordnungsgemäß signiert wurde. Bei eigenentwickelter Software für den firmeninternen Einsatz verbessert Code Signing die Transparenz und Kontrolle des Entwicklungsprozesses.

Welche Arten von Software können signiert werden?

Jede binäre und nicht-binäre Datei kann mit einer Signatur versehen werden. Dazu gehören:

• Anwendungen, die auf Webseiten zum Download bereitgestellt werden

• Interne IT-Applikationen

• Mobile Apps

• XML-Dateien

• Skripte

• Software-Images

• Container

• Treiber und Dienstprogramme

• Firmware

Welche Schritte sind für das Code Signing erforderlich?

Der Softwarehersteller muss zunächst ein Public-Private-Schlüsselpaar generieren. Danach wendet sich das Unternehmen an eine Zertifizierungsstelle (CA) und beantragt die Ausstellung eines Code-Signing-Zertifikats. Dazu benötigt die CA-Stelle eine Zertifikatsignierungsanforderung (CSR) und den öffentlichen Schlüssel des Antragstellers. Die CA-Stelle überprüft die Identität des Softwareherstellers und authentifiziert die Zertifikatsanforderung. Im Erfolgsfall wird das Code-Signing-Zertifikat ausgestellt. Es enthält die Kontaktdaten des Softwareherstellers, seinen öffentlichen Schlüssel und die Signatur der CA-Stelle. Diese ist insofern wichtig, weil die Zertifizierungsstelle damit als unabhängige und vertrauenswürdige Partei für die Identität des Zertifikatsinhabers bürgt. Das Code-Signing-Zertifikat bestätigt nicht nur die Identität des Herstellers, sondern auch die Integrität der Software. Der Hersteller erstellt und signiert ein Datenpaket, das die Software, das Code-Signing-Zertifikat und eine digitale Signatur enthält.

Darüber hinaus sind für die digitale Signatur folgende Schritte erforderlich:

  1. Erzeugung eines Hashwertes oder einer kryptografisch eindeutigen Darstellung der Software mithilfe eines Hashalgorithmus.
  2. Signieren des Hashwertes mit dem privaten Schlüssel des Softwareherstellers und einem Signaturalgorithmus.

Code Signing kann manuell erfolgen oder im Rahmen der Softwareentwicklung automatisiert werden, z. B. als Teil eines CI/CD-Prozesses (Continuous Integration/Continuous Delivery).