To top
Resources Resources
[Translate to German:]

Kategorien: Software-Schutz

Der Mythos Signatur

„Ich setze Standard-Zertifikate ein, ich bin sicher“. Das Einzige, was man mit Sicherheit über diese Aussage sagen kann, ist dass man nicht mit Sicherheit sagen kann, ob diese Aussage stimmt. Denn dazu muss man nämlich die Bedrohungsszenarien betrachten „Sicher für wen“ und „Sicher gegen was“. Im Fall von gesicherter E-Mail, wenn der Prüfende vertrauenswürdig ist, sind Standard-Signaturen und Standard-Zertifikate eine gute Lösung. Im Fall von Softwareschutz vermitteln Signaturen und Zertifikate oft ein falsches Gefühl von Sicherheit. Hier schafft CodeMeter Abhilfe. CodeMeter setzt zwar die gleichen Mechanismen ein, aber verwendet zusätzlich Verschleierung und Tarnung, da die Überprüfung hier im unsicheren Umfeld geschieht.

Grundlagen von Signaturen

Signieren bedeutet etwas zu unterschreiben. Diese Unterschrift wird mit entsprechenden Methoden durch eine andere Person überprüft. Zur Realisierung von Signaturen verwendet die IT asymmetrische Kryptographie.

Asymmetrische Kryptographie besteht aus einem Schlüsselpaar. Dieses besteht aus dem privaten und dem öffentlichen Schlüssel. Wie der Name schon sagt, ist der private Schlüssel geheim zu halten, während der öffentliche Schlüssel frei für jeden zugänglich ist.

Betrachten wir das sichere Verschicken von E-Mails. Sowohl Sender als auch Empfänger haben jeweils ein Schlüsselpaar. Beide kennen den öffentlichen Schlüssel des jeweils anderen. Möchte ich nun, dass niemand die Nachricht lesen kann, dann verschlüssele ich diese mit dem öffentlichen Schlüssel des Empfängers. Nur der richtige Empfänger kann die Nachricht mit seinem privaten Schlüssel entschlüsseln. Möchte ich sicherstellen, dass der Empfänger sicher sein kann, dass die Nachricht wirklich von mir kommt und nicht verändert wurde, dann unterschreibe (signiere) ich diese mit meinem privaten Schlüssel. Jeder beliebige Empfänger kann mit meinem öffentlichen Schlüssel überprüfen, dass die Nachricht wirklich von mir kam.
 
Eine Kombination von beidem ist natürlich auch möglich. D.h. Nachrichten können unterschrieben und verschlüsselt werden. Diese Darstellung ist stark vereinfacht, da beim Unterschreiben zuerst ein Hash-Wert gebildet und danach bei der Verschlüsselung ein Hybridverfahren aus symmetrischer und asymmetrischer Verschlüsselung verwendet wird.

Eine Frage des Vertrauens

Wie wir gerade gelernt haben, ist der öffentliche Schlüssel nicht geheim. Jeder darf ihn kennen und jeder darf ihn benutzen. Entweder, um mir etwas Geheimes zu schicken oder um eine Signatur von mir zu überprüfen. Aber woher weiß mein E-Mail-Partner, dass mein öffentlicher Schlüssel wirklich mein öffentlicher Schlüssel ist und nicht der öffentliche Schlüssel einer anderen Person?

Dies ist die Kernfrage der asymmetrischen Kryptographie. Und nun kommen wir zu Zertifikaten. Jemand, der mich kennt, oder dem ich meine Identität nachweise, erstellt mir ein Zertifikat. Dieses beinhaltet meinen Namen, meinen öffentlichen Schlüssel und eine Gültigkeitsdauer. Damit kann mein E-Mail-Partner nun meinen öffentlichen Schlüssel überprüfen. Aber halt! Wie überprüft er denn die Richtigkeit des Zertifikats? Dazu nimmt er den öffentlichen Schlüssel desjenigen, der mir das Zertifikat erstellt hat. Hier beißt sich die Katze in den Schwanz, oder mit anderen Worten: 
„Wer zertifiziert das Zertifikat?“.

Egal wie lang die Kette der Zertifikate ist, irgendeinem Wurzelzertifikat (Root Certificate) muss ich vertrauen. In der Regel bringt das Betriebssystem bereits eines oder mehrere solcher Wurzelzertifikate von Zertifizierungsstellen (Certificate Authority) mit. Im Falle eines geschlossenen Systems wie iPhone oder Spielekonsolen ist dies das Zertifikat des Herstellers des Gerätes.

Wer überprüft die Signatur?

Das reine Vorhandensein einer Signatur und eines Zertifikates reicht noch nicht aus, damit etwas geschieht. Wenn Sie jetzt der Meinung sind, dass Sie sich hier auf das Betriebssystem (Windows, Mac OS) verlassen können, dann sind Sie im wahrsten Sinne des Wortes verlassen. Die Signatur und Zertifikatsprüfung im Betriebssystem ist so designed, dass Anwender vor unerwünschter Software wie Viren und Würmern geschützt werden. Eine Software ohne oder mit ungültiger Signatur läuft dennoch, wenn der Anwender die entsprechenden Warnmitteilungen ignoriert. Damit schützt eine vorhandene Signatur Ihre Software nicht vor Veränderung und vor Raubkopien.

Windows bietet Ihnen die Möglichkeit, die Signatur einer Anwendung (exe oder dll) per API selbst zu überprüfen. Dann überprüfen Sie, ob eine Signatur existiert, diese gültig ist und von Ihnen erstellt wurde. Dies klingt auf den ersten Blick recht gut, hat aber zwei Haken. Zum Ersten führt die Überprüfung der Signatur auf eine Ja/Nein-Entscheidung in Ihrer Software hinaus, die ein Hacker patchen kann. Und zum Zweiten fragen Sie das Betriebssystem nach der Signatur. Aber genau jenes Betriebssystem ist bereits unter der Kontrolle des Hackers und kann Ihnen beliebige Antworten vorspiegeln. Und dies mit einem generischen Hack des Signatur-API. Die Überprüfung einer Standard-Signatur und eines Zertifikates mit Bordmitteln des Betriebssystems ist zwar eine kleine Einstiegs-Hürde, bietet aber keinen wirksamen Schutz gegen Veränderung und gegen Raubkopien.

CodeMeter bietet die Lösung

Auch CodeMeter arbeitet mit Signaturen ganz nach Lehrbuch. Als Hersteller haben Sie einen privaten Schlüssel, der in Ihrer FSB (Firm Security Box, d.h. Master Dongle) sicher gespeichert ist. Beim Schutz Ihrer Software mit dem AxProtector wird Ihre Software mit Ihrem Schlüssel automatisch signiert. Die Überprüfungsroutinen und Ihr öffentlicher Schlüssel werden in Ihrer Software an verschiedenen Stellen versteckt hinterlegt.

Beim Starten Ihrer Anwendung wird die Signatur überprüft. Diese Überprüfung erfolgt innerhalb von Ihrer Software und an mehreren Stellen. Somit sind weder eine Simulation von außen noch das Patchen eines einzelnen Bytes möglich. Durch die Integration der Signaturüberprüfung in das generelle Kopierschutzsystem von ­CodeMeter bekommen Sie einen kompletten Rundum-Schutz für Ihre Software.

Fazit

Ein anerkanntes Standardverfahren ist sicherheitstechnisch immer besser als eine eigene proprietäre Lösung. Diese Aussage hat auch weiterhin ihre volle Gültigkeit, wenn das Standardverfahren im Rahmen seiner definierten Parameter verwendet wird. Genau dies ist aber die Herausforderung bei Signaturen im Softwareschutz, da die Vertrauenswürdigkeit des Überprüfenden einer der grundlegenden Parameter ist, der auf einem Desktop PC nicht erfüllt ist.

CodeMeter setzt daher auf eine gesunde Mischung aus Standardverfahren und proprietären Technologien und schützt Ihre Software sicher gegen alle Bedrohungsszenarien, die sich aus den Themen Integritätsschutz und Schutz gegen Raubkopien ergeben, auch in einem unsicheren Umfeld wie den PC des Kunden. 

CodeMeter und VxWorks

Bei VxWorks ist der CodeMeter-Mechanismus bereits sicher in das Betriebssystem integriert. Das komplette Betriebssystem kann mittels CodeMeter so versiegelt werden, dass nur vom Hersteller des Gerätes autorisierte Partner Software aufspielen können.