{"id":476304,"date":"2023-08-09T07:28:31","date_gmt":"2023-08-09T07:28:31","guid":{"rendered":""},"modified":"2023-09-05T11:12:26","modified_gmt":"2023-09-05T11:12:26","slug":"code-signing","status":"publish","type":"wiki","link":"https:\/\/oneproxy.pro\/de\/wiki\/code-signing\/","title":{"rendered":"Code-Signierung"},"content":{"rendered":"<p>Code Signing ist ein digitales Verfahren, das zur Zertifizierung verwendet wird, dass ein bestimmter Codeblock nicht manipuliert wurde und aus einer bestimmten Quelle stammt. Es bietet eine zus\u00e4tzliche Sicherheitsebene, indem es die Integrit\u00e4t des auf Computern ausgef\u00fchrten oder aus dem Internet heruntergeladenen Codes \u00fcberpr\u00fcft. Code Signing dient dem Schutz von Benutzern vor betr\u00fcgerischer Software und Malware, indem es best\u00e4tigt, dass die von ihnen heruntergeladene und installierte Software echt und aus einer vertrauensw\u00fcrdigen Quelle ist.<\/p>\n<h2>Urspr\u00fcnge und Entwicklung der Code-Signierung<\/h2>\n<p>Die Anf\u00e4nge der Code-Signierung gehen auf die fr\u00fchen Tage des Internets zur\u00fcck, als die Zunahme der Online-Aktivit\u00e4ten verbesserte Sicherheitsma\u00dfnahmen erforderlich machte. Mitte der 1990er Jahre f\u00fchrte Netscape, einer der Pioniere der Webbrowser-Branche, die Objektsignierung ein, die es Java-Applets erm\u00f6glichte, auf bestimmte eingeschr\u00e4nkte APIs zuzugreifen \u2013 ein Konzept, das als Vorg\u00e4nger der modernen Code-Signierung gilt.<\/p>\n<p>1996 f\u00fchrte Microsoft zusammen mit Internet Explorer 3.0 Authenticode ein, seine propriet\u00e4re Technologie zur Code-Signierung. Dies war der erste gro\u00dfe Einsatz der Code-Signierung in einem verbraucherorientierten Kontext und etablierte das Modell der Verwendung von Zertifikaten, die von vertrauensw\u00fcrdigen Dritten oder Zertifizierungsstellen (CAs) ausgestellt wurden, um die Identit\u00e4t des Unterzeichners zu best\u00e4tigen.<\/p>\n<p>Seitdem hat sich die Code-Signierung weiterentwickelt und ist heute in der Softwarebranche ein weit verbreiteter Standard zur Aufrechterhaltung und Gew\u00e4hrleistung der Integrit\u00e4t und Authentizit\u00e4t von verteiltem Code.<\/p>\n<h2>Code Signing im Detail verstehen<\/h2>\n<p>Beim Code Signing wird der Code der Software mithilfe eines kryptografischen Hashs signiert. Wird der Code nach der Signierung ge\u00e4ndert, wird die Signatur ung\u00fcltig. Zum Erstellen dieser Signatur wird ein von einer vertrauensw\u00fcrdigen Zertifizierungsstelle (Certificate Authority, CA) ausgestelltes Code Signing-Zertifikat verwendet.<\/p>\n<p>Wenn ein Benutzer signierte Software herunterl\u00e4dt, \u00fcberpr\u00fcft sein System die Signatur mithilfe des \u00f6ffentlichen Schl\u00fcssels, der dem privaten Schl\u00fcssel entspricht, mit dem die Signatur erstellt wurde. Wenn die Signatur korrekt \u00fcberpr\u00fcft wird, vertraut das System der Software und l\u00e4sst sie ausf\u00fchren.<\/p>\n<h2>Der interne Mechanismus der Code-Signierung<\/h2>\n<p>Die Code-Signierung erfolgt \u00fcber ein System der Public-Key-Kryptographie. Hier ist eine schrittweise Aufschl\u00fcsselung des Prozesses:<\/p>\n<ol>\n<li>Ein Entwickler schreibt den Code f\u00fcr die Anwendung.<\/li>\n<li>Der Entwickler wendet eine Hash-Funktion auf den Code an und erzeugt dadurch einen eindeutigen Hash-Wert, der den Inhalt des Codes darstellt.<\/li>\n<li>Der Entwickler verschl\u00fcsselt diesen Hash-Wert dann mit seinem privaten Schl\u00fcssel und erstellt so eine digitale Signatur.<\/li>\n<li>Der Entwickler f\u00fcgt der Anwendung die digitale Signatur und seinen \u00f6ffentlichen Schl\u00fcssel (eingebettet in sein Zertifikat) hinzu.<\/li>\n<\/ol>\n<p>Wenn ein Benutzer diese Anwendung herunterl\u00e4dt und ausf\u00fchrt:<\/p>\n<ol>\n<li>Das System des Benutzers verwendet den \u00f6ffentlichen Schl\u00fcssel des Entwicklers, um die digitale Signatur zu entschl\u00fcsseln und so den urspr\u00fcnglichen Hash-Wert offenzulegen.<\/li>\n<li>Das System wendet die gleiche Hash-Funktion auf die heruntergeladene Anwendung an und generiert einen neuen Hash-Wert.<\/li>\n<li>Wenn der neue Hash-Wert mit dem entschl\u00fcsselten Original-Hash-Wert \u00fcbereinstimmt, geht das System davon aus, dass der Code seit der Signierung nicht ver\u00e4ndert wurde und l\u00e4sst ihn ausf\u00fchren.<\/li>\n<\/ol>\n<h2>Hauptmerkmale der Code-Signierung<\/h2>\n<ul>\n<li><strong>Integrit\u00e4t<\/strong>: Durch die Code-Signierung wird sichergestellt, dass der Softwarecode seit der Signierung nicht ge\u00e4ndert oder manipuliert wurde.<\/li>\n<li><strong>Authentifizierung<\/strong>: Es \u00fcberpr\u00fcft die Identit\u00e4t des Softwareherausgebers und erh\u00f6ht so das Vertrauen.<\/li>\n<li><strong>Unbestreitbarkeit<\/strong>: Der Herausgeber kann seine Verbindung zum Code nicht leugnen, sobald dieser unterzeichnet wurde.<\/li>\n<li><strong>Zeitstempeln<\/strong>: Die Signatur enth\u00e4lt einen Zeitstempel, der angibt, wann der Code signiert wurde.<\/li>\n<\/ul>\n<h2>Arten von Code Signing-Zertifikaten<\/h2>\n<p>Es gibt grunds\u00e4tzlich zwei Arten von Code Signing-Zertifikaten:<\/p>\n<table>\n<thead>\n<tr>\n<th>Zertifikatstyp<\/th>\n<th>Verwenden<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Selbstsigniertes Zertifikat<\/strong><\/td>\n<td>Entwickler generieren ihr eigenes Zertifikat und signieren damit ihren Code. Diese Methode wird im Allgemeinen nicht f\u00fcr \u00f6ffentlich verbreitete Software empfohlen, da es keine vertrauensw\u00fcrdige dritte Partei gibt, die die Authentizit\u00e4t des Unterzeichners best\u00e4tigen kann.<\/td>\n<\/tr>\n<tr>\n<td><strong>Zertifikat von einer vertrauensw\u00fcrdigen Zertifizierungsstelle<\/strong><\/td>\n<td>Entwickler erhalten ein Zertifikat von einer vertrauensw\u00fcrdigen Zertifizierungsstelle. Die Zertifizierungsstelle \u00fcberpr\u00fcft die Identit\u00e4t des Entwicklers, bevor sie das Zertifikat ausstellt. Dies ist der am h\u00e4ufigsten verwendete Typ von Code-Signatur-Zertifikaten und f\u00fcr \u00f6ffentlich verteilte Software unverzichtbar.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Verwenden von Code Signing: Probleme und L\u00f6sungen<\/h2>\n<p>Code Signing ist ein leistungsstarkes Tool zum Sicherstellen der Integrit\u00e4t und Authentizit\u00e4t von Software, bringt jedoch auch einige Herausforderungen mit sich:<\/p>\n<p><strong>Problem<\/strong>: Die Sicherheit privater Schl\u00fcssel ist von entscheidender Bedeutung. Wenn ein privater Schl\u00fcssel gestohlen wird, kann jemand anderes Software signieren, die scheinbar vom urspr\u00fcnglichen Entwickler stammt.<\/p>\n<p><strong>L\u00f6sung<\/strong>: Entwickler m\u00fcssen ihre privaten Schl\u00fcssel mit starken Sicherheitsma\u00dfnahmen sch\u00fctzen, wie etwa sicherer Schl\u00fcsselspeicherung, Verschl\u00fcsselung und starken Passw\u00f6rtern.<\/p>\n<p><strong>Problem<\/strong>: Wenn das Zertifikat eines Entwicklers kompromittiert und zum Signieren von Schadsoftware verwendet wird, kann der Schaden gro\u00df und schwer r\u00fcckg\u00e4ngig zu machen sein.<\/p>\n<p><strong>L\u00f6sung<\/strong>: Zertifizierungsstellen verf\u00fcgen \u00fcber Prozesse zum Widerruf kompromittierter Zertifikate. Dies erfordert jedoch, dass die Zertifizierungsstelle rechtzeitig \u00fcber die Kompromittierung informiert wird.<\/p>\n<h2>Code Signing: Hauptmerkmale und Vergleich mit \u00e4hnlichen Begriffen<\/h2>\n<p>Obwohl die Code-Signierung \u00c4hnlichkeiten mit anderen Sicherheitskonzepten wie SSL\/TLS aufweist, gibt es einige Unterschiede:<\/p>\n<table>\n<thead>\n<tr>\n<th>Konzept<\/th>\n<th>Beschreibung<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Code-Signierung<\/strong><\/td>\n<td>Wird verwendet, um die Integrit\u00e4t und Herkunft einer Softwareanwendung oder eines Skripts zu \u00fcberpr\u00fcfen. Durch die Code-Signierung wird sichergestellt, dass ein Codeteil seit der Signierung nicht ge\u00e4ndert wurde.<\/td>\n<\/tr>\n<tr>\n<td><strong>SSL\/TLS<\/strong><\/td>\n<td>Wird verwendet, um Daten w\u00e4hrend der \u00dcbertragung zwischen einem Client (z. B. einem Webbrowser) und einem Server zu verschl\u00fcsseln. SSL\/TLS stellt nicht die Integrit\u00e4t der Serversoftware sicher, sondern stellt sicher, dass die zwischen Client und Server \u00fcbertragenen Daten nicht abgefangen oder ge\u00e4ndert werden k\u00f6nnen.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Zuk\u00fcnftige Perspektiven und Technologien im Bereich Code Signing<\/h2>\n<p>Mit der Entwicklung der Technologielandschaft wird sich auch die Code-Signierung weiterentwickeln. Zuk\u00fcnftige Perspektiven f\u00fcr die Code-Signierung drehen sich um die Verbesserung der aktuellen Funktionen und die Anpassung an neue Plattformen und Technologien.<\/p>\n<p>Ein Trend ist die Entwicklung neuer Standards und Verfahren, um das Ausma\u00df und die Komplexit\u00e4t der Softwareverteilung im Zeitalter des IoT (Internet of Things) und des Cloud-Computing zu bew\u00e4ltigen. Dar\u00fcber hinaus kann der verst\u00e4rkte Fokus auf Cybersicherheit zur Entwicklung ausgefeilterer und robusterer Algorithmen f\u00fcr die Code-Signierung f\u00fchren.<\/p>\n<p>Dar\u00fcber hinaus bietet die Blockchain-Technologie interessante M\u00f6glichkeiten f\u00fcr die dezentrale und transparente Code-Signierung, wobei Smart Contracts den Prozess automatisieren und noch sicherer machen.<\/p>\n<h2>Proxy-Server und Code Signing<\/h2>\n<p>Proxy-Server, wie sie von OneProxy bereitgestellt werden, fungieren als Vermittler zwischen Endbenutzern und dem Internet. Sie k\u00f6nnen eine Reihe von Vorteilen bieten, darunter erh\u00f6hte Anonymit\u00e4t, Bandbreiteneinsparungen und verbesserte Sicherheit.<\/p>\n<p>Proxyserver interagieren nicht direkt mit Code-Signatur-Prozessen, k\u00f6nnen aber die Sicherheitsebene eines Netzwerks verbessern. Beispielsweise kann ein Proxyserver eine zus\u00e4tzliche Schutzebene gegen externe Bedrohungen bieten und in Kombination mit Code-Signatur eine sicherere und zuverl\u00e4ssigere Online-Umgebung gew\u00e4hrleisten.<\/p>\n<h2>verwandte Links<\/h2>\n<ol>\n<li>Authenticode-Technologie von Microsoft: <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/seccrypto\/authenticode\" target=\"_new\" rel=\"noopener nofollow\">https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/seccrypto\/authenticode<\/a><\/li>\n<li>\u00dcberblick \u00fcber Code Signing von GlobalSign: <a href=\"https:\/\/www.globalsign.com\/en\/blog\/what-is-code-signing\/\" target=\"_new\" rel=\"noopener nofollow\">https:\/\/www.globalsign.com\/en\/blog\/what-is-code-signing\/<\/a><\/li>\n<li>Code Signing f\u00fcr neue Plattformen: <a href=\"https:\/\/developer.apple.com\/documentation\/security\/notarizing_your_app_before_distribution\" target=\"_new\" rel=\"noopener nofollow\">https:\/\/developer.apple.com\/documentation\/security\/notarizing_your_app_before_distribution<\/a><\/li>\n<\/ol>\n<p>Bitte beachten Sie, dass die oben stehenden Links zum Zeitpunkt der Erstellung dieses Artikels aktiv und relevant waren.<\/p>","protected":false},"featured_media":476305,"menu_order":0,"template":"","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"footnotes":""},"class_list":["post-476304","wiki","type-wiki","status-publish","has-post-thumbnail","hentry"],"acf":{"faq_title":"Frequently Asked Questions about <mark>Code Signing: An Essential Element in Ensuring Software Authenticity and Security<\/mark>","faq_items":[{"question":"What is Code Signing?","answer":"<p>Code Signing is a digital procedure used to certify that a certain block of code originates from a specific source and hasn't been tampered with. It's used to maintain the authenticity and integrity of code executed on computers or downloaded from the internet, protecting users from rogue software and malware.<\/p>"},{"question":"What is the history of Code Signing?","answer":"<p>Code Signing originated in the mid-1990s when Netscape introduced object signing for Java applets, allowing them access to certain restricted APIs. This concept evolved into modern Code Signing. In 1996, Microsoft launched Authenticode, a proprietary technology for Code Signing, which was a major step towards consumer-oriented Code Signing.<\/p>"},{"question":"How does Code Signing work?","answer":"<p>Code Signing uses a cryptographic hash to sign the software's code. If the code is modified after signing, the signature becomes invalid. A Code Signing certificate from a trusted Certificate Authority (CA) is used to create this signature. When the signed software is downloaded, the user's system verifies the signature using the corresponding public key. If the signature verifies correctly, the system allows the software to run.<\/p>"},{"question":"What are the key features of Code Signing?","answer":"<p>The key features of Code Signing are integrity (it ensures the software code has not been tampered with), authentication (it verifies the identity of the software publisher), non-repudiation (the publisher cannot deny their association with the code), and timestamping (the signature includes a timestamp that indicates when the code was signed).<\/p>"},{"question":"What types of Code Signing certificates exist?","answer":"<p>There are two types of Code Signing certificates. A self-signed certificate is generated by developers and used to sign their code. However, this is not recommended for software distributed to the public. The second type is a certificate from a trusted CA, which verifies the developer's identity before issuing the certificate. This is the most commonly used type of Code Signing certificate.<\/p>"},{"question":"What are some problems and solutions related to the use of Code Signing?","answer":"<p>One problem is that if a private key is stolen, it can be used to sign software appearing to come from the original developer. This can be prevented with strong security measures like secure key storage, encryption, and strong passwords. Another problem is if a developer's certificate is compromised, it can be used to sign malicious software. Certificate Authorities have processes in place to revoke certificates that have been compromised.<\/p>"},{"question":"How do Proxy Servers relate to Code Signing?","answer":"<p>Proxy servers, like those provided by OneProxy, work as intermediaries between end-users and the internet, providing benefits like increased anonymity, bandwidth savings, and improved security. While they do not directly interact with Code Signing processes, proxy servers can enhance the security layer of a network, providing an additional layer of protection against external threats. Combined with Code Signing, they ensure a more secure online environment.<\/p>"}]},"_links":{"self":[{"href":"https:\/\/oneproxy.pro\/de\/wp-json\/wp\/v2\/wiki\/476304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oneproxy.pro\/de\/wp-json\/wp\/v2\/wiki"}],"about":[{"href":"https:\/\/oneproxy.pro\/de\/wp-json\/wp\/v2\/types\/wiki"}],"version-history":[{"count":0,"href":"https:\/\/oneproxy.pro\/de\/wp-json\/wp\/v2\/wiki\/476304\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oneproxy.pro\/de\/wp-json\/wp\/v2\/media\/476305"}],"wp:attachment":[{"href":"https:\/\/oneproxy.pro\/de\/wp-json\/wp\/v2\/media?parent=476304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}