In unserer software-gesteuerten Welt ist Vertrauen alles. Aber woher wissen wir, welchen software wir vertrauen können und welchen wir nicht vertrauen sollten? Dafür können wir uns beim Code Signing bedanken.
Mit der Codesignierung können Entwickler die Authentizität eines Teils von software nachweisen und garantieren, dass er aus einer rechtmäßigen Quelle stammt und nicht manipuliert wurde. Die Codesignierung beruht auf Kryptografie und insbesondere auf einem so genannten Codesignierungszertifikat.
In diesem Artikel erfahren Sie alles, was Sie über das wichtige Code Signing-Zertifikat wissen müssen, einschließlich der Beantwortung wichtiger Fragen wie:
- Was ist ein Code Signing-Zertifikat?
- Wie funktioniert ein Code Signing-Zertifikat?
- Warum brauchen wir Code Signing-Zertifikate?
- Was sind die potenziellen Schwachstellen von Code Signing-Zertifikaten?
- Was sind die besten Tools für die Verwaltung eines Code Signing-Zertifikats?
- Was sind die besten Praktiken für Sicherheitsteams bei der Verwaltung von Code Signing-Zertifikaten?
Was ist ein Code Signing-Zertifikat?
Ein Code Signing-Zertifikat ist eine spezielle Klasse von digitalen Zertifikaten, die eine Organisation identifizieren. Um vollständig zu verstehen, was ein Code Signing-Zertifikat ist, ist es wichtig, zunächst zu klären, wie Zertifikate im Allgemeinen funktionieren.
Zertifikate sind ein wichtiger Baustein der Public Key Infrastructure (PKI). Sie beruhen auf asymmetrischer Kryptographie und können zur Überprüfung der Authentizität verwendet werden. Konkret basiert das Zertifikat auf dem privaten Schlüssel eines öffentlich-privaten kryptografischen Schlüsselpaares.
Das Ausstellen einer Signatur mit einem Zertifikat dient der Authentifizierung und dem Schutz vor Manipulationen. Jeder, der den entsprechenden öffentlichen Schlüssel hat, kann das:
- überprüfen, ob die Unterschrift von demjenigen stammt, von dem sie stammen soll, und
- bestätigen, dass sich seit der Erstellung der Signatur nichts an dem Paket (sei es Code, ein Dokument oder etwas anderes) geändert hat.
Dies bringt uns zurück zum Code-Signing-Zertifikat, das eine besondere Art von Zertifikat ist, das von Entwicklern zum Signieren von Anwendungen und software verwendet wird. Das Code-Signing-Zertifikat gibt die Identität der Organisation an, die das software ausstellt, und ermöglicht es jedem Endbenutzer des software , seine Legitimität zu überprüfen:
- Bestätigung des Unternehmens, das die software entwickelt hat, und
- sicherstellen, dass die software seit der Auslieferung durch das Unternehmen nicht manipuliert wurde.
Wie funktioniert ein Code Signing-Zertifikat?
Ein Code Signing-Zertifikat wird von einer vertrauenswürdigen Zertifizierungsstelle (CA) speziell für den Zweck ausgestellt, dass Entwickler Code signieren können. Sobald Entwickler über ein gültiges Code Signing-Zertifikat verfügen, können sie damit jeden Code signieren, den sie live an die Produktion übergeben. Diese Signatur enthält alle im Zertifikat enthaltenen Informationen (z. B. Firmenname, Standort usw. - man kann es sich wie einen Führerschein für die digitale Welt vorstellen) sowie einen Zeitstempel, der angibt, wann der Code mit dem Zertifikat signiert wurde.
Die meisten Browser und Geräte geben eine Sicherheitswarnung aus, wenn Benutzer versuchen, software herunterzuladen oder zu installieren, das keine Signatur von einem Code Signing-Zertifikat hat, das von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde.
Zu den typischen Anwendungsfällen für ein Code Signing-Zertifikat gehören:
- Gewährleistung der Integrität der Geräte IoT
- Einreichung neuer mobiler Apps bei einem software Herausgeber (d. h. Microsoft, Google und Apple verlangen alle, dass Apps signiert werden, bevor sie in ihre App Stores aufgenommen werden können)
- software für die öffentliche Installation ausstellen
- Entwicklung von Unternehmens-IT software Programmen für den internen Gebrauch (damit die Mitarbeiter wissen, dass sie der Anwendung vertrauen können)
Viele Unternehmen verwenden ein unternehmenseigenes PKI-Programm, um ihre Code Signing-Aktivitäten zusammen mit ihren SSL Zertifikaten zu verwalten. Neben der Vereinfachung des Code Signing-Prozesses für Entwickler ist diese Verwaltung besonders wichtig, da Unternehmen ihre Code Signing-Zertifikate genauso schützen müssen wie jedes andere private Sicherheitselement.
Wenn ein Code-Signing-Zertifikat in die falschen Hände gerät, bedeutet dies, dass böswillige Parteien software ausstellen können, das scheinbar legitim ist. Infolgedessen muss jede Beeinträchtigung eines Code Signing-Zertifikats als Teil einer Zertifikatswiderrufsliste (CRL) gemeldet werden, wodurch alle mit diesem Zertifikat signierten Dateien ungültig werden. Diese Situation macht es für Unternehmen unerlässlich, ihre Code Signing-Zertifikate zu verwalten und zu schützen.
Warum brauchen wir Code Signing-Zertifikate?
Heutzutage verlangen alle gängigen App-Stores, Betriebssysteme usw., dass software mit einem Code Signing-Zertifikat signiert wird. Aber warum ist dies der Fall? Warum genau sind Code Signing-Zertifikate so wichtig?
Das Code-Signing-Zertifikat ist vor allem aus drei Gründen so wichtig:
- Schützt vor Versuchen Dritter, den Code zu verändern
- Zeigt den Nutzern, dass sie software ihre Informationen anvertrauen können.
- Schafft eine Vertrauenskette für ein reibungsloses Nutzererlebnis
1) Schützt vor geändertem Code
Sobald software mit einem Code Signing-Zertifikat signiert ist, bedeutet dies erstens, dass jede Version von software , die diese Signatur trägt, nicht von einem Dritten verändert worden ist.
Die Bestätigung, dass ein Werk während der Übertragung nicht verändert wurde, ist eine wichtige Funktion jedes kryptografischen Zertifikats, und das gilt insbesondere für Code Signing-Zertifikate. Denn jede Veränderung des Codes software könnte auf böswillige Aktivitäten hindeuten. Der signierte Code bedeutet, dass das, was die Endbenutzer sehen und erleben, genau dem entspricht, was der Ersteller von software beabsichtigt hat.
2) Zeigt den Nutzern, dass sie dem System vertrauen können. software
In diesem Sinne ist software , das mit einem Code Signing-Zertifikat signiert ist, ein Symbol des Vertrauens für Endbenutzer.
Dieses Vertrauen ist wichtig, denn viele software verlangen von den Nutzern die Eingabe sensibler Daten, um das System voll nutzen zu können. Wenn die Nutzer nicht sicher sind, ob sie der software vertrauen können, fühlen sie sich möglicherweise unwohl, wenn sie diese Daten eingeben, wodurch die software deutlich weniger leistungsfähig wird. Dieses Vertrauen war zwar schon immer wichtig, aber in unserer digitalen Welt, in der alles online konsumiert wird, ist es besonders wichtig, anstatt in ein Geschäft zu gehen und software zu kaufen.
3) Schafft eine Kette des Vertrauens
Schließlich wird durch die Verwendung eines Code-Signing-Zertifikats eine Vertrauenskette geschaffen, die ein reibungsloses Nutzererlebnis ermöglicht, indem mögliche Sicherheitswarnungen vermieden werden.
Denn der signierte Code schafft nicht nur Vertrauen bei den Nutzern, sondern auch bei allen Browsern oder Betriebssystemen, auf denen software ausgeführt wird. Das bedeutet, dass das System die Authentizität von software leicht überprüfen und den Nutzern vermitteln kann, dass sie ihm vertrauen können. Ein Beispiel dafür ist, dass jeder software , der ordnungsgemäß signiert ist, einen reibungslosen Download-Prozess ohne Sicherheitswarnungen hat, die bei den Nutzern rote Fahnen auslösen könnten - selbst wenn sie völlig legitim sind.
Was sind die potenziellen Schwachstellen von Code Signing-Zertifikaten?
Bei allem Nutzen, den ein Code Signing-Zertifikat bietet, gibt es doch potenzielle Schwachstellen, die jedes Unternehmen berücksichtigen muss. Zu den größten Schwachstellen bei Code Signing-Zertifikaten gehören:
- Schlüsseldiebstahl: Die privaten Schlüssel, die mit Code-Signing-Zertifikaten verbunden sind, sind einer der größten Diebstähle, die ein Hacker begehen kann, denn wenn er diesen Teil des Code-Signing-Zertifikats in die Hände bekommt, kann er neue software erstellen, die legitim und von einer seriösen Quelle zu sein scheinen.
- Verletzung der Signierpflicht: Hacker können bösartigen Code auch ohne Zugang zu den entsprechenden privaten Schlüsseln signieren lassen, wenn sie sich Zugang zu einem Entwicklerarbeitsplatz verschaffen können, der freien Zugang zum Code-Signaturzertifikat hat. Sobald dies geschieht, können sie einfach ihre software zur Signatur und Freigabe einreichen.
- Interner Missbrauch: Menschliches Versagen ist immer ein Sicherheitsrisiko, und das ist auch bei Code Signing-Zertifikaten nicht anders. Wenn ein Entwickler offenen Zugriff auf den entsprechenden Code Signing Key hat und ihn versehentlich missbraucht oder verlegt, kann er Hackern eine Möglichkeit bieten, in den Betrieb einzudringen.
Das Erkennen und Verstehen dieser Schwachstellen ist der erste Schritt, um sie zu beseitigen. Danach können Sie Maßnahmen ergreifen, um sich vor diesen Schwachstellen zu schützen, z. B:
Ausgewogener Zugang für Entwickler
Der Zugriff von Entwicklern auf Code Signing-Zertifikate ist eine heikle Angelegenheit - wenn Sie zu viel Zugriff gewähren, wird der Prozess anfällig für Angriffe, wenn Sie aber zu wenig Zugriff gewähren, entstehen Reibungen im Entwicklungsprozess und die Teams sind geneigt, die Sicherheitsrichtlinien zu umgehen. Um dieses Gleichgewicht zu erreichen, ist Folgendes erforderlich:
- Umfassender Schutz für private Code-Signatur-Schlüssel, so dass sie an einem sicheren Ort verbleiben und nur von eingeschränkten Benutzern eingesehen werden können
- Kontrollierter Zugang zu privaten Code-Signatur-Schlüsseln, die von den Entwicklern nicht mehr gehandhabt oder gespeichert werden müssen
- Automatisierte Arbeitsabläufe, die unterschiedliche Berechtigungen auf der Grundlage von Rollen ermöglichen, um die Sicherheit zu erhöhen und einen reibungslosen, aber einheitlichen Prozess zu schaffen
Verbesserte Sichtbarkeit und Kontrolle für Sicherheitsteams
Sicherheitsteams spielen ebenfalls eine wichtige Rolle beim Schutz des Code Signing-Zertifikats, und eine häufige Herausforderung dabei ist die mangelnde Transparenz und Kontrolle der Signierprozesse. Die Einführung einer Technologie, die die Sichtbarkeit und Kontrolle zentralisiert und es dem Sicherheitsteam erleichtert, alles zu überprüfen, kann diese Herausforderung erheblich erleichtern. Konkret kann sie helfen:
- Verfolgen und Überwachen von Code Signing-Aktivitäten
- Erstellen eines Audit-Protokolls für Code Signing-Zertifikate und Signierungsversuche
- Zentralisierung und Standardisierung der Richtlinien für die Unterzeichnung von Code
Was sind die besten Tools für die Verwaltung eines Code Signing-Zertifikats?
Von der sicheren Verwaltung des Code Signing-Prozesses bis hin zur Unterstützung von Entwicklungsteams bei der Erstellung von Signaturen gibt es eine Vielzahl von Tools, mit denen Teams ein Code Signing-Zertifikat und alles, was damit zusammenhängt, verwalten können. Hier ein Blick auf einige der besten Lösungen:
- Keyfactor Code Assure: Ermöglicht es Entwicklern, Code von überall aus zu signieren und gleichzeitig private Verschlüsselungsschlüssel zu schützen.
- PrimeKey SignServer: Bietet PKI-basierte Signierung für Dokumente, PDFs und Code, mit Versionen für open-source, Unternehmen und Cloud.
- SignTool: Bietet command-line code signing als Teil von Microsofts Windows software development kit.
- Jarsigner: Ermöglicht das Signieren von Code und die Überprüfung von Signaturen für Java-Archivdateien (JAR).
- Docker-Trust-Zeichen: Ermöglicht es Entwicklern, Docker-Images zu signieren und ermöglicht es, Tags digital zu signieren, um signierte Repositories zu erstellen.
- APK-Unterzeichner: Ermöglicht die Erzeugung und Überprüfung von Signaturen für Android-Geräte.
- iOS App Signer: Ermöglicht das Signieren und Bündeln von iOS-Apps zur Ausführung auf iOS-Geräten.
- Garasign: Bietet schnelles Code Signing für Unternehmensanwendungen und Schutz für private Verschlüsselungsschlüssel.
- SignPath: Ermöglicht On-Premise- oder Service-basiertes Code Signing mit Integration in die CI/CD-Pipeline.
- Ungebundene Schlüsselkontrolle: Bietet software-basiertes Code Signing mit Integration in DevSecOps-Prozesse.
Was sind die besten Praktiken für Sicherheitsteams zur Verwaltung von Code Signing-Zertifikaten?
Natürlich ist der Einsatz der richtigen Technologie nur ein Teil der Gleichung. Sicherheitsteams müssen auch bewährte Verfahren einführen , um Code Signing-Zertifikate ordnungsgemäß zu schützen und zu pflegen. In diesem Sinne werfen wir einen Blick darauf, was es braucht.
Ordnungsgemäßer Schutz privater Code-Signierschlüssel
Angesichts der Bedeutung privater Code Signing-Schlüssel für die Aufrechterhaltung der Integrität des gesamten Code Signing-Prozesses ist einer der wichtigsten Schritte, die Teams unternehmen können, der angemessene Schutz dieser Schlüssel.
Dies setzt voraus, dass die Sicherheitsteams über einen angemessenen Einblick in die Code Signing-Zertifikate und die zugehörigen privaten Schlüssel verfügen, die sich in ihrem Unternehmen befinden, und die Verwaltung all dieser Elemente zentralisieren. Außerdem ist es wichtig, diese Schlüssel in einem zertifizierten hardware Sicherheitsmodul zu speichern.
Entwicklung konsistenter und sicherer Unterzeichnungsprozesse
Der Code-Signierungsprozess selbst kann eine Schwachstelle darstellen, in die Hacker eindringen können, weshalb es für Sicherheitsteams wichtig ist, konsistente und sichere Verfahren zu entwickeln. Zu den bewährten Verfahren gehören:
- Festlegung klarer Rollen im Signierungsprozess, um sicherzustellen, dass nur autorisierte Benutzer ein Code Signing-Zertifikat verwenden können
- Begrenzung der Code-Signatur-Aktivitäten auf der Grundlage von Zeitfenstern
- Nachverfolgung aller Code-Signatur-Aktivitäten, um sicherzustellen, dass die Maßnahmen wie vorgesehen durchgeführt werden
Die Verfolgung von Aktivitäten in Echtzeit gibt den Sicherheitsteams auch die Möglichkeit, ungewöhnliche Vorfälle schnell zu erkennen und darauf zu reagieren.
Integration in Entwicklungsprozesse
Der beste Weg, um zu verhindern, dass Entwickler Sicherheitsrichtlinien umgehen oder sich versehentlich einem Risiko aussetzen, ist die Integration von Code Signing-Aktivitäten in ihre bestehenden DevOps-Prozesse. Dazu gehört die Integration von Signing-Tools in DevOps-Tools, die Aktivierung von Remote-Signing-Funktionen für verteilte Teams und die Einführung von Prüfungen und Verifizierungen, die vor dem Signieren von Code erfolgen müssen.
Bewährte Verfahren bewerten und weiterentwickeln
Schließlich sollte die Einführung von Sicherheit im Zusammenhang mit Code Signing-Zertifikaten keine einmalige Angelegenheit sein. Das Sicherheitsteam muss sie regelmäßig evaluieren und weiterentwickeln, wenn sich die Bedürfnisse des Teams und die externe Bedrohungslage ändern.
Dazu gehört die genaue Überwachung aller Code Signing-Aktivitäten, die Prüfung aller Schlüsselverwendungen und die Einbeziehung von Code Signing-Zertifikaten in alle umfassenderen PKI-Zertifikatsverwaltungsaktivitäten. Diese fortlaufenden Bemühungen können den Sicherheitsteams nicht nur helfen, Bedrohungen früher zu erkennen, sondern auch sicherstellen, dass alle Kontrollen, die zum Schutz eines Code Signing-Zertifikats eingerichtet wurden, im Laufe der Zeit ordnungsgemäß gewartet werden.