GlobalSign Blog

11 Jun 2014

Sag’ mir wer Du bist – oder: wozu Code Signing?

Wer heute noch in einen Laden geht, um sich die neueste Software zu kaufen, bekommt ein eingeschweißtes Paket mit einer eindeutigen Herkunftsbezeichnung. Anders bei einer Software, die man sich aus dem Internet herunter lädt. Es sei denn, sie ist sozusagen „virtuell verschweißt“... und genau das tut Code Signing. Man versteht darunter das Einbinden einer digitalen Signatur in über das Internet verteilte Software/Anwendungen.

Was ist und was kann Code Signing?

Ein Code-Signing-Zertifikat ist ein digitales Zertifikat, kommt von einer anerkannten Zertifizierungsstelle und enthält genau die Informationen, die eine Entität vollständig kennzeichnen.Aber Code Signing eignet sich bei weitem nicht nur für den privaten Anwender. Entwickler können über den Einsatz von digitalen Signaturen Informationen

über sich selbst und den jeweiligen Code einbinden. Um eine entsprechende digitale Signatur zu erstellen, verwendet der Entwickler ein digitales Zertifikat.

Dieses Zertifikat bindet die Identität einer Organisation an einen öffentlichen Schlüssel, der mathematisch mit einem privaten Schlüsselpaar korrespondiert. Dieser private Schlüssel dient dazu, die digitale Signatur in eine verkürzte Version des Codes einzubinden.

Die wiederrum durchläuft einen Hash-Algorithmus. Signiert man den Hash eines Codes, kann man daran überprüfen, ob der Code seit dem Zeitpunkt zu dem er signiert wurde in irgendeiner Weise verändert worden ist. Auch wenn nur ein einziges Zeichen in einer Code-Zeile verändert wurde, verändert das zugleich den Hash und wird als fehlerverdächtig erkannt.

Code Signing praktisch

Digital signierte Anwendungen zeigen den Namen des Urhebers oder Autors auf dem Installationsbildschirm deutlich sichtbar an. Der Benutzer kann die Anwendung also verifizieren und ist sicher, dass sie aus einer vertrauenswürdigen Quelle stammt. Nicht signierte Anwendungen provozieren beunruhigende Sicherheitswarnungen, dass der Urheber unbekannt ist und dazu geraten wird, nur Anwendungen aus definitiv vertrauenswürdigen Quellen zu installieren. Neben den offensichtlichen sicherheitsrelevanten Aspekten ist das nicht zuletzt auch ein Hindernis, um die entsprechende Software zu verbreiten. Was kaum einen Entwickler freuen dürfte.

Signierter Code nützt also beiden: Benutzern wird zuverlässig versichert, von wem sie eine Software herunterladen und sie können entscheiden, ob sie der Quelle vertrauen oder nicht. Entwickler können ihre "Marke" kenntlich machen, die Software vor unerwünschten Veränderungen schützen und auf diesem Weg gebrandete Rich-Internet-Anwendungen bereitstellen.

Selbst signierte oder öffentlich signierte Code-Signing-Zertifikate?

Public Root Code-Signing-Zertifikate haben einige wesentliche Vorteile gegenüber selbst signierten Zertifikaten, die sich eher für Testumgebungen eignen.

• Der Name des Herausgebers wird angezeigt, wenn der Empfänger die signierte Anwendung herunterlädt

• Zertifikate können widerrufen werden, wenn ein Zertifikat kompromittiert wird

• Der Code ist digital mit einem Zeitstempel signiert

Diese Zeitstempelfunktion garantiert, dass der signierte Code gültig bleibt, auch wenn das digitale Zertifikat abläuft.

Vielseitige Code-Signing-Zertifikate erlauben es mit einem einzigen Zertifikat mehrere Plattformen digital zu signieren, beispielsweise für

• Microsoft Authenticode-Dateien (32 und 64 Bit) einschließlich Kernel-Software

• Adobe AIR-Anwendungen

• Apple Desktop-Anwendungen

• Java-Anwendungen

• Microsoft Office Makros und Visual Basic

• Mozilla XPI Pakete für Firefox

Dazu kommt, dass man im Idealfall eine unbegrenzte Anzahl von Anwendungen digital  signieren kann. Ein inbegriffener Zeitstempeldienst sorgt dafür, dass die digitale Signatur nicht abläuft und es gibt kostenfreie Code-Signing-Tools, die den Signierungsprozess vereinfachen.

Artikel teilen