Ich brauche ein paar Ideen, wie man einen Aktivierungsalgorithmus erstellt. Zum Beispiel habe ich ein Demo-Zertifikat. Vorausgesetzt, dass die Anwendung im Demo-Modus ausgeführt wird. Wenn das Vollversionszertifikat bereitgestellt wird, wird die Anwendung im Vollmodus ausgeführt. Ist es überhaupt möglich und wie wäre es ein guter Weg, dieses System zu erstellen?
Eine einfache war, ich dachte, es wäre nur eine 2 verschlüsselte Zeichenfolgen, jetzt, wenn die Entschlüsselung mit dem öffentlichen Zertifikat-Zertifikat erfolgreich ist, dann wird die Anwendung im Demo-Modus und etc ..
laufenBEARBEITEN: Verwenden von C # und Windows 7
Sie könnten etwas tun wie:
Wie Overbose erwähnt wurde - Sie können das Reverse Engineering nicht verhindern. Im Allgemeinen könnte jemand Funktionalität nehmen und sie in seine / ihre eigene App bringen und somit jeden möglichen Aktivierungsalgorithmus eliminieren. Sie können also nur annehmen (oder machen), dass dies schwer genug ist, um die Mühe nicht wert zu sein (das ist das gleiche wie für die Kryptographie - wenn Sie die Kosten für das Brechen der Nachricht höher als den Gewinn machen, können Sie es sagen gut gesichert).
So könnten Sie:
Wie bereits erwähnt, ist nichts davon sicher, den Authentifizierungsteil abzuschalten. Aber nichts ist und das könnte es für Cracker schwieriger machen.
Hintergrund: Ich habe ein aktivierungsbasiertes System implementiert, das auf einem Lizenzsystem eines Drittanbieters aufbaut, d. h. Server, Datenbank, E-Commerce-Integrationen. Ich habe auch separat ein C # -Aktivierungssystem mit RSA-Schlüsseln geschrieben, aber nie bereitgestellt.
Produkt Aktivierung bedeutet üblicherweise, dass die Software auf einer bestimmten Maschine aktiviert werden muss. Ich nehme an, dass du das meinst. Wenn Sie nur zwei Zeichenfolgen haben wollen, die "demo" und "käuflich" bedeuten, werden sie innerhalb von Stunden entschlüsselt und verteilt (vorausgesetzt, Ihr Produkt ist wertvoll). Es gibt einfach keinen Sinn.
Also. Angenommen, Sie möchten "Aktivierung", dann muss der folgende Prozess passieren, wenn der Benutzer Ihre Software kauft:
Beim Generieren von Kaufschlüsseln kann der Server nicht nur speichern, welches Produkt gekauft wurde, sondern auch, um welches Produktniveau es sich handelt. Sie können auch "freie" Produkte haben, die zeitlich begrenzt sind, so dass der Benutzer die Vollversion der Software 30 Tage lang ausprobieren kann.
Sie verwenden C #, also vergewissern Sie sich, dass Sie die Binärdateien mit dotfuscator oder ähnlichem verschleiern. Aber selbst damit kann man nichts gegen einen entschlossenen Hacker tun. Ich gehe davon aus, dass Ihr Ziel darin besteht, nicht zahlende Benutzer zu zwingen, selbst Hacker zu sein oder mit einer gecrackten Version zu riskieren: Kinder kümmern sich nicht, Unternehmen könnten es tun. YMMV.
Der Code, der die Überprüfung durchführt, muss sich in jeder zu schützenden Assembly befinden. Andernfalls kann ein Angreifer den Schutz trivial entfernen, indem er die Assembly ersetzt, die die Überprüfung durchführt. Schneiden Sie den Code aus und fügen Sie ihn bei Bedarf ein.
Oder kauf einfach etwas.
Eine weitere Option besteht darin, dass der Server "Kaufschlüssel" vorgeneriert und sie dem Fulfillment-Dienst für Bestellungen zur Verfügung stellt, aber dann den Schlüssel nicht mit den Kundendetails verknüpfen (zumindest nicht, bis sie sich registrieren). Es ist besser, wenn der E-Commerce-Server Ihren Server trifft, wenn ein Kauf getätigt wurde, und Ihr Server ihn senden lässt.
Der schwierige Teil ist nicht so sehr die Generierung von Aktivierungsschlüsseln als die Erstellung des Servers, der Datenbank und der Integration mit E-Commerce-Software und vor allem menschliche Probleme: erlauben Sie unbegrenzte Installationen pro Kaufschlüssel? Nur 1? Wenn nur 1, dann müssen Sie Kunden-Support und eine Möglichkeit haben, um es einem Benutzer zu ermöglichen, es auf einem neuen Computer zu installieren. Das ist nur ein Problem. Allerlei Spaß.
Dieser Typ schrieb einen Blogbeitrag über eine ähnliche Idee und erklärte, was er mit ihnen gemacht hat eigene kommerzielle Software. Auch schrieb eine Liste von Empfehlungen über die offensichtlichsten Cracking-Techniken. Hoffe es hilft.
Eine einfache Idee war, ich hätte nur eine 2 verschlüsselt Strings, jetzt, wenn die Entschlüsselung mit der Demopublik erfolgreich ist Schlüsselzertifikat dann wird die Anwendung im Demo-Modus und etc ..
laufen
Könnte eine einfache Lösung sein. Auf diese Weise verhindern Sie nicht, dass jemand Ihre Binärdateien zurückentwickelt und die Ausführung in die richtige Zeile springt. Jeder hat dein Programm, hat eine komplette Version davon, also ist es nur eine Frage des Findens, wie man diesen einfachen Mechanismus bricht.
Vielleicht ist eine bessere Lösung, einen Teil der Binärdateien zu verschlüsseln, die benötigt werden, um die vollständige Anwendungsversion anstelle einer einfachen Zeichenfolge zu verwenden. Auf diese Weise, um die vollständige Version der Anwendung auszuführen, muss jemand diese Binärdateien entschlüsseln, um sie auszuführen.
Bitte beachten Sie, dass selbst diese Lösung nicht ausreicht. Es gibt andere Probleme damit:
Wie löst man diese Probleme? Es gibt keine einfache Lösung. Die meisten der wichtigeren kommerziellen Software mit sogar hochentwickelten Schutzsystemen sind nur wenige Stunden oder Tage nach ihrer Veröffentlichung kaputt.
Die Produktaktivierung ist kein Problem, das die asymmetrische Kryptographie lösen kann. Bei der asymmetrischen Kryptographie geht es darum, Geheimnisse vor Ihrem Gegner zu bewahren. Das Problem ist, dass Sie kein Geheimnis behalten können, das auf Ihrer Gegnermaschine gespeichert ist, das wäre security obscurity .
Der richtige Weg zur Produktaktivierung . Erzeugt eine kryptografische Nonce , die in einer Datenbank auf Ihrem Server gespeichert ist. Sie geben diese Nonce dem Kunden, wenn sie das Produkt kaufen, und dann aktivieren sie es online. Dieser Aktivierungsprozess könnte neues Material herunterladen, was es dem Angreifer erschweren würde, die Kopie, die er hat, zu zu modifizieren . entsperren "neue Funktionen.
Aber selbst mit DRM-Systemen, die verlangen, dass Sie während der Verwendung des Produkts online sind . Wie die in neuen Spielen wie "From Dust" gefundenen sind noch wenige Stunden nach ihrer Veröffentlichung kaputt .
Einer der Vorteile der Verschlüsselung mit öffentlichem Schlüssel ist, dass Sie Verifizieren Sie den Ursprung eines bestimmten Datenelements. Wenn Sie also den öffentlichen Schlüssel in Ihrer Assembly speichern und dann ein bestimmtes Datenelement (z. B. einen Autorisierungscode oder eine Seriennummer) signieren, kann Ihre Assembly nachweislich feststellen, dass Sie derjenige waren, der diese Daten erstellt hat - und kein Hacker. Die eigentlichen Daten selbst sind nicht so wichtig - es kann ein einfacher Pass / Fail-Wert sein.
Dies ist eigentlich ziemlich einfach mit .NET zu tun. Sie können ein x509-Zertifikat verwenden oder wie wir DeployLX-Lizenzierung die RSACryptoServiceProvider .
Ich würde wärmstens empfehlen, ein kommerzielles Produkt zu kaufen (es spielt keine Rolle, welches DeployLX ausgezeichnet ist) und dies nicht selbst aus zwei Gründen zu tun.
Die zweite Phase beim Schutz der Software besteht darin, sicherzustellen, dass sie so läuft, wie Sie sie erstellt haben - und nicht von einem Hacker verändert wurde. Es spielt keine Rolle, welche Verschlüsselung Sie verwenden, wenn Hacker if( licensed )
auf if( true )
überprüfen können.
Tags und Links c# security certificate activation