Einführung
Heutzutage werden alle von Benutzern genutzten Anwendungen oder Software virtualisiert und aus einem Docker-Container heruntergeladen. Viele Benutzer befürchten, dass Angreifer die aus dem Container heruntergeladene Datei manipulieren und ein schädliches Skript oder Malware einschleusen könnten. In diesem Fall wird das System jedes Mal, wenn jemand die Datei herunterlädt und ausführt, vom schädlichen Skript des Angreifers beeinträchtigt.
Die Notwendigkeit der Docker-Image-Signierung:
Wenn ein Unternehmen seinen Kunden eine Software/ein Produkt zur Verfügung stellt, wie kann dieser dann sicherstellen, dass diese nicht manipuliert wurde? Um Kunden in dieser Hinsicht Sicherheit zu geben, kann ein Unternehmen die Software/das Produkt mit seiner vertrauenswürdigen Signatur versehen. Versucht jemand, den Code zu manipulieren, wird die Signatur geändert. Hier kommt die Image-Signierung ins Spiel. Mit der Image-Signierung kann ein Unternehmen sein Image signieren, bevor es in den Container geladen wird, damit der Kunde es sicher verwenden kann.
Ähnlich wie böswillige Aktivitäten durch Code-Signierung erkannt werden können, wird beim Versuch, die Datei zu installieren oder auszuführen, zunächst die Signatur überprüft. Wenn die Image-Signatur der Organisation Bescheinigung nicht gefunden wird, wird der Benutzer daran gehindert, fortzufahren.
Was ist Docker Image Signing?
Beim Signieren von Docker-Images handelt es sich um den Vorgang, Docker-Images digital zu signieren, um die Identität des Softwareautors zu bestätigen und sicherzustellen, dass der Code nicht verändert oder kompromittiert wurde.
Wie funktioniert die Docker-Image-Signierung?
Die Funktionsweise der Bildsignatur kann in zwei Teile unterteilt werden:
- Auf der Server- oder Entwicklerseite
- Auf der Clientseite
Zunächst besprechen wir, wie die
Der Prozess findet serverseitig statt:

- Das Originalbild, also das Docker-Bild, das der Benutzer seinen Kunden sicher zur Verfügung stellen möchte, wird zunächst von einem Hashing Algorithmus, da es praktisch unmöglich ist, einen Hash umzukehren.
- Das gehashte Docker-Image, das wir erhalten, wird dann mit dem privaten Schlüssel des Entwicklers signiert.
- Das signierte Hash-Docker-Image wird dann mit dem Original-Image und dem digitalen Zertifikat gepackt, die zusammen auch als Image-Signaturzertifikat bezeichnet werden.
- Nun kann es hochgeladen oder an den Kunden übertragen werden.
Sehen wir uns nun an, wie der Prozess auf der Clientseite abläuft.

- Das ursprüngliche Docker-Image wird durch einen Hashing-Algorithmus geleitet, um den Hash des Images zu erhalten.
- Der öffentliche Schlüssel wird aus dem Zertifikat extrahiert und auf den signierten Hash des Docker-Images angewendet, um den Hash des Images zu extrahieren.
- Die beiden in den Schritten 1 und 2 erstellten Hashes werden verglichen. Wenn beide Hashes gleich sind, wurde das Bild nicht geändert und die Signatur gilt als gültig.
- Gleichzeitig wird das Image-Signaturzertifikat überprüft, um sicherzustellen, dass es von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde. Das Ablaufdatum des Image-Signaturzertifikats wird überprüft, und das Zertifikat wird auch mit den Sperrlisten abgeglichen, um sicherzustellen, dass es gültig ist.
Schwächen der Docker-Image-Signierung
Auch bei der Bildsignierung gibt es mehrere Schwächen, darunter:
Eine unsachgemäße Verwaltung des zu Beginn des Image-Signaturprozesses erstellten privaten Schlüssels kann die Sicherheit der gesendeten Software beeinträchtigen. Wird ein legitimer privater Schlüssel gestohlen, kann der Angreifer seine Schadsoftware mit diesem privaten Schlüssel verschlüsseln. Dadurch wird dem Benutzer vermittelt, dass die Software sicher ist, auch wenn dies nicht der Fall ist.
Bedrohungsakteure können ein vertrauenswürdiges Zertifikat erhalten. Was die meisten Angreifer jedoch abschreckt, ist die Notwendigkeit, Identifikationsinformationen anzugeben, um ein Zertifikat zu erhalten. Wird Schadsoftware mit einem legitimen Zertifikat verbreitet, kann der Entwickler identifiziert und gestoppt werden.
Hinweis: Wenn der Benutzer die Installation der Software zulässt, obwohl das Betriebssystem angibt, dass es sich nicht um ein signiertes Image handelt, ist die Image-Signierung nutzlos.
Um diese Schwachstellen zu vermeiden, sollten Sie die folgenden Best Practices befolgen:
Zum Schutz von Verschlüsselungsschlüsseln, Hardware-Sicherheitsmodulen oder HSMs, sollte verwendet werden. Ein HSM ist ein spezialisiertes, hochgradig vertrauenswürdiges physisches Gerät. Es handelt sich um einen Netzwerkcomputer, der alle wichtigen kryptografischen Operationen durchführt, einschließlich Verschlüsselung, Entschlüsselung, Authentifizierung, Schlüsselverwaltung, Schlüsselaustausch usw. Sie sind manipulationssicher und verwenden äußerst sichere kryptografische Operationen.
Neben HSMs sollte auch bei Schlüsseln das Prinzip der geringsten Privilegien angewendet werden, um sicherzustellen, dass nur Benutzer Zugriff auf den Schlüssel haben, die ihn benötigen.
Schließlich ist beim Signieren von Images stets Vorsicht geboten. Laden Sie nur Software herunter und installieren Sie sie, die von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde.
Zukunft der Code-Signierung
Wie wir in der heutigen Welt sehen, sind Sicherheit und Vertrauen ein wichtiger Faktor für das Wachstum jedes Unternehmens. Jedes Unternehmen möchte seine Daten sichern und seinen Kunden sichere Daten bereitstellen. Täglich kommt es zu verschiedenen böswilligen Aktivitäten, sodass die Bildsignierung exponentiell zunehmen wird. Jedes Unternehmen muss Code Signing und Image Signing in die Praxis umsetzen.
Unser Angebot an Code Signing
Unser Produkt CodeSign Secure bietet eine sichere und flexible Lösung für die Code-Signing-Anforderungen eines Unternehmens zum Signieren von Windows-, Linux-, Macintosh-, Docker- und Android/iOS-Apps.
Unser Framework kann erweitert werden, um auf Wunsch unserer Kunden jeden anderen Code oder jedes andere Dokument zu schützen.
- Die Schlüssel werden durch das HSM Ihrer Wahl geschützt – nCipher, Utimaco, Safenet.
- Es werden Richtlinien und Arbeitsabläufe definiert, um Ihren Prozess der Auftragsübermittlung und -genehmigung zu sichern und zu optimieren.
- Ihre vorhandenen Viren- und Malware-Scans können systematisch integriert werden.
- Entwickelt auf einer offenen REST-API, die benutzerdefinierte Integrationen und Anforderungen ermöglicht.
Fazit
Daten sind in unserer vernetzten Welt von entscheidender Bedeutung. Code Signing kann zur Verifizierung von Daten eingesetzt werden. Manipulierte Daten können zu schwerwiegenden Verlusten führen und sollten daher nicht als vertrauenswürdig eingestuft werden. Software sollte außerdem eine Warnung anzeigen oder die Installation von Software mit nicht vertrauenswürdigen Zertifikaten vollständig blockieren. Eine signierte Software oder Anwendung kann ein vertrauenswürdiges Netzwerk von Benutzern, Geräten und Programmen aufbauen.
