Vertrauen ist in unserer softwaregetriebenen Gesellschaft von entscheidender Bedeutung. Doch wie können wir erkennen, auf welche Software wir uns verlassen und welche wir meiden sollten? Wir können danken Codesignatur dafür.
Entwickler verwenden die Code-Signierung, um die Legitimität einer Software nachzuweisen und sicherzustellen, dass sie aus einer zuverlässigen Quelle stammt und nicht manipuliert wurde. CryptographyFür die Code-Signierung ist ein Zertifikat, insbesondere ein sogenanntes Code-Signing-Zertifikat, erforderlich.
Kunden sollten beim Herunterladen von Software aus dem Internet stets auf der Hut sein vor Drittanbietern, die sich als Softwareanbieter ausgeben. Mithilfe von Tools wie Code Signing lässt sich die Herkunft der Software überprüfen. Code Signing ist ein Prozess, bei dem ein Softwareentwickler oder -anbieter die versendete Datei digital signiert. Die Signatur zeigt an, dass der Code unverändert geblieben ist.
Vorteile der Code-Signierung
Code Signing ist eine Technik, mit der Programme, Dateien, Software-Updates oder ausführbare Dateien digital signiert werden. So können Gültigkeit und Integrität bei Installation und Ausführung überprüft werden. Ähnlich wie bei einem Wachssiegel garantiert es dem Empfänger, wer der Autor ist und dass die Datei nicht geöffnet und manipuliert wurde. Um beispielsweise nachzuweisen, dass Ihr Windows 10-Update tatsächlich von Microsoft und nicht von einem Hacker stammt, der versucht, in Ihren Computer einzudringen, nutzen Microsoft-Entwickler, Programmierer und Softwareentwickler Code Signing.
Dank der Code-Signierung können Sie sicher sein, dass Sie eine Datei von einem legitimen Autor oder Herausgeber herunterladen und nicht von einem Angreifer, der versucht, Ihre persönlichen Informationen und Daten zu stehlen. Im Wesentlichen werden Sie darüber informiert, dass der Code nicht von einem Angreifer geändert wurde. So wissen Sie, dass die Installation und Ausführung auf Ihrem Computer sicher ist.
Wenn Sie schon einmal das kleine Fenster gesehen haben, das beim Starten einer heruntergeladenen Software erscheint, mit der Frage „Möchten Sie das wirklich ausführen?“ und dem Herausgeber, wissen Sie, wovon ich spreche. Dann haben Sie schon einmal Code Signing erlebt. Dieses Dialogfeld informiert Sie darüber, dass der Patch für Ihr Mac OS X authentisch ist und sich noch im selben Zustand befindet wie zum Zeitpunkt der Signierung durch Apple Inc.
Was bewirkt Code Signing?
Als Benutzer dient die Code-Signierung verschiedenen Zwecken, die Ihnen dabei helfen können, zu entscheiden, ob Sie Software-Downloads und anderen Online-Interaktionen vertrauen können. Code-Signierung wird hauptsächlich verwendet, um die Urheberschaft von Dateien, Downloads und Software zu überprüfen. Beispielsweise installieren Sie eher eine von Microsoft bereitgestellte Download-Datei als eine aus einer anderen Quelle, da diese Ihnen deutlich zuverlässiger erscheint.
Für die Software, die Sie in Zukunft auf Ihrem Computer installieren, wird es zwangsläufig Updates geben. Sie können sicher sein, dass nachfolgende Updates aus derselben Quelle stammen und sicher auf Ihrem Computer ausgeführt werden können, wenn sie mit demselben Schlüssel signiert sind, mit dem Ihre ersten Downloads „versiegelt“ wurden.
Wie funktioniert Code Signing?
Aus der Sicht eines Entwicklers besteht die Code-Signierung aus drei Hauptbestandteilen: unsignierte Softwaredateien, Code-Signing-Zertifikate und Code-Signing-Apps. Anwendungen zur Code-Signierung sind in der Regel in Betriebssystemen wie Microsoft Windows, Mac OS X usw. enthalten. Zertifizierungsstellen sind häufig die Quelle der Code Signing Certificates (CAs).
Verschlüsselung mit öffentlichem Schlüssel
Wenn Sie eine Nachricht verschlüsseln, um sie vor unbefugten Lesern zu schützen, verwenden Sie Verschlüsselung. Um die Nachricht zu entschlüsseln, müssen Sie den Schlüssel kennen, der die Werte in ihren ursprünglichen Zustand zurückversetzt und so das Lesen der Nachricht ermöglicht. Normalerweise geschieht dies, indem die Nachricht durch eine mathematische Funktion (den sogenannten „Schlüssel“) ausgeführt wird, um die Werte zu ändern. Bei der Public-Key-Verschlüsselung (auch asymmetrische Verschlüsselung genannt) sind der Schlüssel zum Verschlüsseln und der Schlüssel zum Entschlüsseln der Nachricht unterschiedlich (daher der Name asymmetrisch). Der Name „Public-Key“-System liegt darin, dass nur ein Schlüssel – der „öffentliche Schlüssel“ – zum Schutz der Kommunikation verwendet wird, während der andere – der „private Schlüssel“ – geheim gehalten wird.
Damit diese Art der Verschlüsselung funktioniert, müssen private Schlüssel sicher und vertraulich aufbewahrt werden und dürfen nicht in die Hände von Personen gelangen, die versuchen, Nachrichten abzufangen oder zu manipulieren. Die Art der Übertragung bestimmt, ob der öffentliche Schlüssel zum Verschlüsseln oder Entschlüsseln der Nachricht verwendet wird. Verschlüsseln Sie mit dem privaten Schlüssel und entschlüsseln Sie mit dem öffentlichen Schlüssel, wenn jeder die Nachricht lesen, aber nicht manipulieren soll. Verschlüsseln Sie mit dem öffentlichen Schlüssel und entschlüsseln Sie mit dem privaten Schlüssel, wenn jeder Nachrichten senden, aber nicht von der falschen Person abgefangen werden soll.
Hash-Funktion
Eine Form der Verschlüsselung, die sogenannten Hash-Funktionen, ist unumkehrbar. Hash-Funktionen sind unidirektional konzipiert und nutzen eine mathematische Funktion, die die Daten so verändert, dass sie nicht rückgängig gemacht werden können. Im Gegensatz zur Verschlüsselung mit einem Schlüssel und der Verwendung eines Schlüssels zur Entschlüsselung. Der gängigste Vergleich ist das Mischen von Farben. So ergibt das Mischen von Blau (den Originalwerten) und Gelb (der Hash-Funktion) immer Grün, es gibt jedoch keine Möglichkeit, die beiden Farben zu trennen und Blau zurückzugewinnen.
Wenn Sie einen festgelegten Wert benötigen und die Daten nicht erneut lesen müssen, kommen Hash-Funktionen zum Einsatz. Das häufigste Beispiel sind Anmeldekennwörter, die von Websites häufig zur Speicherung gehasht werden. Im Falle eines Datenlecks erhält der Hacker lediglich eine Sammlung zufälliger Zahlen. Die Website hasht Ihr Passwort erneut und vergleicht es beim Anmelden mit dem zuvor gespeicherten Hash-Wert. Sie gewährt Ihnen Zugriff, wenn Ihre Angaben mit den Daten in ihren Aufzeichnungen übereinstimmen. Sie benötigt lediglich den Wert; das Passwort selbst muss nicht gelesen werden.
Codesignaturzertifikate
Bevor Entwickler ihre Arbeit signieren können, müssen sie ein öffentliches/privates Schlüsselpaar generieren. Dies geschieht häufig lokal mithilfe von Softwaretools wie „OpenSSL“. Anschließend geben Entwickler den öffentlichen Schlüssel und die Identitätsinformationen ihrer Organisation an eine vertrauenswürdige Zertifizierungsstelle weiter. Die Zertifizierungsstelle überprüft die Echtheit der Identitätsinformationen und stellt dem Entwickler anschließend das Zertifikat aus. Dies ist das Code Signing-Zertifikat, das mit dem privaten Schlüssel der Zertifizierungsstelle signiert wurde und die Identität der Entwicklerorganisation sowie den öffentlichen Schlüssel des Entwicklers enthält.
Entwickler nehmen den gesamten von ihnen erstellten Code und hashen ihn, wenn sie ihn zum Nachweis der Urheberschaft „signieren“ möchten. Der Ausgabewert wird dann mit dem zuvor angegebenen privaten Schlüssel, der oft vom Autor erstellt wird, sowie dem Code-Signatur-Zertifikat verschlüsselt, das den öffentlichen Schlüssel und die Identität des Autors (zum Nachweis der Urheberschaft) enthält. Das Ergebnis dieses Verfahrens wird dann in das zu verteilende Programm integriert.
Dies ist ein Beispiel für Code Signing. Die meisten Browser und Betriebssysteme verfügen über den vorinstallierten öffentlichen Schlüssel der Zertifizierungsstelle. Beim Herunterladen des Programms überprüft der Nutzer zunächst die Legitimität des in der signierten Software enthaltenen Code Signing-Zertifikats, um sicherzustellen, dass es von einer vertrauenswürdigen Zertifizierungsstelle stammt. Der verschlüsselte Hash wird anschließend mit dem öffentlichen Schlüssel des Entwicklers entschlüsselt, der anschließend aus dem Zertifikat extrahiert wird.
Anschließend wird das Programm erneut gehasht und das Ergebnis dem entschlüsselten Wert gegenübergestellt. Stimmen die vom Benutzer und Entwickler generierten Hashwerte überein, wurde das Programm während der Übertragung nicht manipuliert oder beschädigt. Der Benutzer wird dann darüber informiert, dass sich das Programm im gleichen Zustand befindet wie beim letzten Mal, und dass es sicher installiert und ausgeführt werden kann, sofern dem Entwickler vertraut werden kann.
Stammzertifikate
Code Signing kann Ihnen als Endbenutzer Vertrauen in die Zuverlässigkeit und Gültigkeit des heruntergeladenen Programms geben. Sie sollten sich jedoch auch darüber im Klaren sein, dass böswillige Akteure ein Code Signing-Zertifikat und ein öffentlich-privates Schlüsselpaar erstellen können, um den Eindruck zu erwecken, von einer legitimen Zertifizierungsstelle autorisiert worden zu sein. Wie lässt sich die Zuverlässigkeit von Zertifikaten feststellen, wenn jeder ein Code Signing-Zertifikat erstellen kann?
Stammzertifikate spielen dabei eine wichtige Rolle. Code-Signatur-Zertifikate lassen sich mit einem Stammbaum vergleichen. Sie können Zertifikate zurückverfolgen, um herauszufinden, welches Signaturzertifikat – Ihr Stammzertifikat – sich an der Wurzel des Baums befindet, und so ihren Ursprung bestätigen. Da Sie die „Vertrauenskette“ mit dem Stammzertifikat bis zur ursprünglichen Signaturstelle zurückverfolgen können, können Sie feststellen, ob die anderen Code-Signatur-Zertifikate zuverlässig sind.
Unternehmen wie Apple oder Microsoft gelten möglicherweise als Stammzertifikate. Das System warnt Sie davor, dem Zertifikat zu vertrauen, mit dem das herunterzuladende Programm signiert wurde, wenn das Signaturzertifikat Ihrer Software kein zuverlässiges Stammzertifikat finden kann. Selbst vertrauenswürdige Zertifikate können gelegentlich nicht erkannt werden, wenn sie nicht in einem Browser oder im Trust Store eines Betriebssystems installiert sind. Damit der Browser oder das Betriebssystem das Stammzertifikat in diesen Fällen als zuverlässig und gültig akzeptiert, müssen Sie es manuell in Ihren Trust Store übernehmen.
Welche Arten digitaler Zertifikate gibt es?
Verschiedene Systeme erfordern unterschiedliche Authentifizierungsarten. Was auf einem Desktop funktioniert, ist für mobile Systeme wahrscheinlich ungeeignet und umgekehrt. Hier sind einige Beispiele für die verschiedenen Zertifikate für Desktop- und mobile Software.
Desktop-Zertifikate:
- Microsoft
- Javac
- Microsoft Office und VBA
- Adobe-KI
Mobile Zertifikate:
- Windows Phone
- Windows Phone Private Enterprise
- Java-verifiziert
- Android
Wenn Sie Ihre Software signieren und sichern möchten, sollten Sie zunächst wissen, mit welcher Art von Software oder System Sie beginnen, und von dort aus weiterarbeiten.
Wozu dient ein digitales Zertifikat?
A digitales Zertifikat soll der Software oder dem Code, den Sie an Ihre Benutzer verteilen, eine Identität verleihen. Benutzer können den Programmherausgeber anhand eines digitalen Zertifikats überprüfen. Da diese digitalen Zertifikate von Zertifizierungsstellen ausgestellt werden, stärken Benutzer das Vertrauen in die Herausgeber. Die Möglichkeit, ihr Produkt und die Anzahl der Downloads zu verfolgen, verleiht digitalen Zertifikaten Softwareanbietern einen erheblichen Mehrwert.
Wie lange ist ein digitales Zertifikat gültig?
Die Gültigkeitsdauer eines Zertifikats ist eine weitere häufige Frage von Personen, die ein eigenes digitales Code-Signatur-Zertifikat erhalten möchten. Digitale Zertifikate sind in der Regel nur ein oder zwei Jahre gültig. Die tatsächliche Gültigkeitsdauer kann jedoch je nach Aussteller variieren.
Diese Gültigkeit ist aus den folgenden zwei Gründen nur von kurzer Dauer:
Private Schlüssel und Sicherheitszertifikate können gehackt werden und werden es auch. Alle vorherigen Zertifikate, auch gestohlene, verlieren bei der Erneuerung ihre Gültigkeit und ändern sich alle ein bis zwei Jahre.
Die Technologie entwickelt sich noch schneller als der Rest der Welt. Was vor fünf Jahren sicher war, ist heute nicht mehr annähernd so sicher. Code-Signatur-Zertifikate können aktualisiert und geändert werden, um die Zertifikatsicherheit auf dem neuesten Stand zu halten.
Wo wird Code Signing eingesetzt?
Code Signing wird überall dort eingesetzt, wo ein Entwickler möchte, dass ein Benutzer die Quelle einer Software kennt. Dazu gehören:
1. Windows-Anwendungen und Software-Patches
2. Apple-Software
3. Microsoft Office VBA-Objekte und -Makros
4. .jar-Dateien
5. .air- oder .airi-Dateien
6. Im Wesentlichen jede ausführbare Datei
Beachten Sie, dass aufgrund der verteilten Linux-Entwicklung Code Signing für Linux-basierte Software häufig nicht verwendet wird. Daher kann es sein, dass Software unsigniert ist. In diesem Fall wird Ihr Computer (sofern er Sie darauf hinweist) die Meldung „von einem unbekannten Entwickler“ oder etwas Ähnliches anzeigen. Hier sind einige weitere Anwendungen und Software, die Code Signing zur Erhöhung ihrer Sicherheit nutzen.
- iOS: Die Code-Signierung in iOS für den App Store erfolgt mit Xcode. Der Zweck der Signierung Ihrer App besteht darin, iOS mitzuteilen, wer die App ursprünglich signiert hat, und sicherzustellen, dass sie seit der ursprünglichen Signierung durch den Entwickler nicht verändert wurde. Wenn Sie Ihr iOS-Zertifikat widerrufen müssen, müssen Sie den Vorgang über Ihr Entwicklerkonto oder Xcode abschließen.
- Xcode: Xcode wird von iOS verwendet, um Apps zu signieren und ihre Sicherheit zu gewährleisten. Bevor ein Gerät hochgeladen und für den iTunes Store freigegeben werden kann, benötigt es eine gültige Apple Developer ID mit einem gültigen Zertifikat oder Profil. Für die erfolgreiche Integration Ihrer App benötigen Sie ein Entwicklungszertifikat. Um die App auf einem Gerät ausführen zu können, benötigen Sie ein Verteilungszertifikat, um die App zu versenden und zu testen.
- C#: Visual C# verwendet die Strong Name-Signatur, um einen eindeutigen Signaturcode zu erhalten, der für niemanden sonst verfügbar ist und nicht gefälscht werden kann. Wenn Sie Visual C# verwenden, können Sie Ihre Bereitstellung einfach mit dem Tool sn.exe signieren. Dies fungiert als Ihre Signatur, indem das Sig-Check-Tool „Strong Name: Signed“ ausgibt.
- Windows-Zertifikat: Nahezu jede ausführbare Datei kann mit einer digitalen Signatur versehen werden, um die Sicherheit und Integrität der Datei zu überprüfen. Damit die Datei in Windows als sicher gilt, muss sie von einer anerkannten Zertifizierungsstelle signiert sein. Jeder, der Schadsoftware unter einem gültigen Zertifikat verbreitet, haftet rechtlich für die von ihm verbreitete Software.
- Visual Studio: Visual Studio ist besonders hilfreich, wenn es um die starke Namenssignierung für Assemblys geht – eine bekanntermaßen schwierige Aufgabe. Durch die starke Namenssignierung über Visual Studio können andere Computer dem Softwareentwickler vertrauen.
