Code-Signing-Zertifikate

Was ist Code Signing?

17.11.2021
Von 
Thorsten Krüger ist Regional Director DACH, CEE, CIS bei Thales. Er beschäftigt sich seit über 20 Jahren mit dem Vertrieb und der Beratung von IT und IT-Sicherheitslösungen. Er ist Experte für die Themen Verschlüsselung, Key Management und starke Authentifizierung. Vor Thales und Gemalto war Herr Krüger für internationale Unternehmen wie ActivCard tätig, in denen er unterschiedliche Vertriebs- und Managementpositionen innehatte.
Code-Signing-Zertifikate schaffen gegenüber Software-Anwendern Vertrauen in die Sicherheit einer Software. Lesen Sie hier, was dies für Softwarehersteller und Anwender bedeutet.

Das Konzept des Code Signing schützt Unternehmen und Anwender bereits seit langer Zeit, denn es stellt eine der Grundlagen des Internets dar, nämlich das Vertrauen in die digitale Welt - Stichwort "Root of Trust". Die mehr als 30 Jahre alte Technologie ist nur so gut wie der Schutz, den sie für die wichtigste Komponente der digitalen Signatur - den kryptografischen Schlüssel - bietet.

Welche Zertifizierungsstelle eine Website geprüft hat ist für Anwender einfach zu prüfen. Wird der Mauszeiger auf dem schwarzen Schloss vor der URL platziert, erscheint die Meldung: Verifiziert von: XYZ.
Welche Zertifizierungsstelle eine Website geprüft hat ist für Anwender einfach zu prüfen. Wird der Mauszeiger auf dem schwarzen Schloss vor der URL platziert, erscheint die Meldung: Verifiziert von: XYZ.
Foto: OtmarW - shutterstock.com

Code Signing - Definition

Code Signing ist ein Prozess zur digitalen Unterschrift von ausführbaren Dateien und Programmcodes und damit eine Form der kritischen Sicherheitskontrolle. Sie hilft Unternehmen und Anwendern mit dem Wissen, dass ihre Software vertrauenswürdig ist und nicht verändert wurde. Dadurch können sich die Nutzer darauf verlassen, dass die Software wirklich von diesem Hersteller stammt sowie von einer unabhängigen Instanz abgesegnet und nicht von einem unbekannten Dritten manipuliert wurde. Aktuelle Betriebssysteme sind so konzipiert, dass sie vor der Installation einer Software warnen oder sie gar nicht erst zulassen, wenn sie nicht digital signiert wurde.

Mobile, Desktop- und eingebettete Betriebssysteme unterstützen heute fast durchgängig den Schutz von ausführbaren Programmcodes durch die Verwendung digitaler Signaturen. Code Signing beweist die Authentizität einer Binärdatei durch die digitale Unterschrift des Entwicklers und garantiert somit, dass diese Software nicht kompromittiert wurde. Folglich sind Anwendungssignaturen darauf ausgelegt:

  1. die Authentizität von Anwendungen zu verifizieren;

  2. Manipulationen und Man-in-the-Middle-Angriffe zu verhindern;

  3. vor Malware zu schützen, die sich als unverdächtige Anwendung tarnt;

  4. Entwicklervertrauen aufzubauen und deren Ruf zu schützen und

  5. gefälschte Anträge zu verhindern.

Was genau ist ein Code-Signing-Zertifikat?

Zunächst müssen wir der Frage nachgehen, was ein digitales Zertifikat ist, um dann festzulegen, was ein Code-Signing-Zertifikat ist. Ein digitales Zertifikat erfüllt zwei Funktionen. Erstens dient es zur Authentifizierung und Verifizierung der Identität z. B. eines Hosts oder einer Webseite. Und zweitens ermöglicht es die Verschlüsselung von Informationen, die über eine Webseite ausgetauscht werden.

Code Signing hat sich für praktisch jedes Unternehmen, das Software an Kunden und Partner vertreibt, zu einem wesentlichen Bestandteil der Geschäftsprozesse entwickelt. Diese Technik verifiziert, wer der Herausgeber eines bestimmten Codes ist und bescheinigt, dass er seit seiner Unterzeichnung nicht verändert wurde. Code-Signing-Zertifikate garantieren, dass der Code eines Programms oder Softwaredownloads nicht beschädigt und verändert wurde, nachdem er vom Herausgeber digital signiert wurde.

Lesetipp: Application Security FAQ - Wie Ihre Software sicher wird

Die sicherste Methode, um Unternehmen die Möglichkeit zu geben, einen privaten Schlüssel zu beziehen, besteht darin, ein Zertifikat bei einer vertrauenswürdigen Zertifizierungsstelle zu beantragen. Sie führt durch einen Authentifizierungsprozess, um die Identität des Antragstellers zweifelsfrei festzustellen. Antragssteller signieren die ausführbare Datei oder Softwarebibliothek dann mit dem privaten Schlüssel. Sie kann anschließend von jedem über den zugehörigen öffentlichen Schlüssel verifiziert werden.

Wer bietet Code-Signing-Zertifikate an?

Code-Signing-Zertifikate werden von sogenannten Zertifizierungsstellen (Certificate Authorities, CA) ausgestellt. Sie übernehmen die Rolle eines Trust Centers und bestätigen die Identität des Programmierers. Für die behördliche Aufsicht ist die Bundesnetzagentur zuständig. Code-Signing-Zertifikate werden unter anderem von der PSW-Group angeboten.

Wie wird ein Zertifikat ausgestellt?

Wird für eine Software ein Code-Signing-Zertifikat benötigt, wendet sich der zuständige Programmierer oder Projektleiter an die CA seiner Wahl oder im besten Fall an die von seinem Unternehmen bevorzugte und empfohlene Stelle und beantragt dort die Ausstellung. Er muss dafür in der Regel Rechenschaft zur Nutzung ablegen und muss darüber hinaus dafür Sorge tragen, dass vor Ablauf der Gültigkeit des Code-Signing-Zertifikats ein neues verfügbar oder aber die Verlängerung gewährleistet ist.
Dieser Prozess kann sowohl manuell als auch teilautomatisiert erfolgen. Ansonsten ist der Service oder die Software, bei der das Code -Signing-Zertifikat zur Signierung eingesetzt wurde, nicht mehr vertrauenswürdig. Allerdings ist der Service oder die Software nach wie vor verfügbar und arbeitet wie gewohnt.

Zeitstempel

Ein sehr wichtiges Thema ist der Zeitstempel. Wenn eine Software digital signiert wird, wird der Computer die digitale Signatur vor der Installation der Software überprüfen. Wenn kein Zeitstempel (eine digitale Aufzeichnung des Zeitpunkts, an dem die Software signiert wurde) vorhanden ist, prüft das System normalerweise das Ablaufdatum des Zertifikats gegen das aktuelle Datum. Wenn jedoch ein Zeitstempel vorhanden ist, kann der Computer sehen, dass die Software signiert wurde, während das Zertifikat noch gültig war. Die Installation wird dann planmäßig durchgeführt.

Der Zeitstempel läuft nach einem gewissen Verfallsdatum ab. In der Regel beträgt die Laufzeit zwischen ein und drei Jahren. Nach Ablauf muss das Zertifikat ausgetauscht bzw. erneuert werden. Dieser Prozess ist wichtig, um die Vertrauenswürdigkeit des Zertifikats zu garantieren. Nur, wenn ein Zertifikat ein Gültigkeitsdatum hat, kann sich der Anwender darauf verlassen, dass die signierte Software vom Unternehmen laufend überprüft wird und vertrauenswürdig bleibt.

Sicherheits- und Verwaltungshinweise

Das Ziel von Code Signing ist es, eine Software einzusetzen, die ein hohes Maß an Authentizität und Integrität garantiert. Lange hat der Einsatz von Code-Signing-Zertifikaten reibungslos funktioniert und noch immer ist der Prozess durchaus überschaubar und strukturiert. Allerdings hat sich die Bereitstellung der Software verändert, die Softwareentwicklung wird immer schneller, agiler, flexibler und dadurch auch komplexer. Die Art und Weise wie Code Signing eingesetzt wird, hat nun größere Auswirkungen auf die Anwendungssicherheit.
In den letzten Jahren haben Cyberkriminelle ihre Aktivitäten zum Diebstahl, zur Fälschung oder zur Aufdeckung von Schwachstellen intensiviert. Dabei haben sie auch Code Signing für sich entdeckt und im Darknet hat sich ein reger Handel mit solchen Zertifikaten entwickelt.

Lesetipp: Unsichere Zertifikate gefährden Verschlüsselung

Besonders wichtig sind hier die Schlüssel, die für den Signierungsprozess genutzt werden. Gelangen sie in die falschen Hände, kann das für die Herstellerfirma zu massiven Reputationsschäden führen. Das kann durchaus passieren, wenn Entwickler ihre Schlüssel in Entwicklerplattformen für alle zugänglich und unverschlüsselt ablegen. Das Problem bei einer Kompromittierung ist dann nicht nur der wirtschaftliche Schaden, wenn der Vorfall publik wird oder aber Anwender sich wegen auftretender Probleme beschweren, sondern erst einmal das Lokalisieren der Quelle. Oftmals dauert es Tage und Wochen, das abgelaufene Zertifikat oder die Schwachstelle zu finden, denn der manuelle Prozess dafür ist aufwändig und personalintensiv.

Code Signing bleibt elementar wichtig

Code Signing ist so alt wie das Internet, es ist jedoch ein Thema, mit dem sich IT-Experten eher weniger gern auseinandersetzen. Der Prozess der Software-Signierung ist fehleranfällig und bedeutet einen hohen Verwaltungsaufwand. Gleichzeitig wird er jedoch immer wichtiger, denn immer mehr Software muss als vertrauenswürdig gekennzeichnet werden. Der Bedarf an Code-Signing-Zertifikaten steigt daher exponentiell an, was dazu führt, dass es immer mehr Zertifizierungsstellen gibt, die diese Zertifikate anbieten.

Gleichzeitig wird der Verwaltungsprozess der vielen Zertifikate immer aufwändiger, was die Komplexität des Themas eher erhöht, als verringert. Die IT-Industrie ist dazu aufgefordert, mit den Möglichkeiten der Automation Abhilfe zu schaffen und Unternehmen und Anwendern kreative und sichere Lösungen für die Verwaltung dieser unzähligen Zertifikate und deren Schlüssel zu bieten. (bw)