AT524619A1 - Computerimplementiertes Verfahren zum autorisierten Ausführen einer Software, System zur Datenverarbeitung, Computerprogrammprodukt und computerlesbares Speichermedium - Google Patents

Computerimplementiertes Verfahren zum autorisierten Ausführen einer Software, System zur Datenverarbeitung, Computerprogrammprodukt und computerlesbares Speichermedium Download PDF

Info

Publication number
AT524619A1
AT524619A1 AT603722020A AT603722020A AT524619A1 AT 524619 A1 AT524619 A1 AT 524619A1 AT 603722020 A AT603722020 A AT 603722020A AT 603722020 A AT603722020 A AT 603722020A AT 524619 A1 AT524619 A1 AT 524619A1
Authority
AT
Austria
Prior art keywords
software
client
computer
license key
activation server
Prior art date
Application number
AT603722020A
Other languages
English (en)
Inventor
Christopher Gabler
Michael Bollmann
Florian Schmidt
Original Assignee
Aderow Gmbh
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Aderow Gmbh filed Critical Aderow Gmbh
Priority to AT603722020A priority Critical patent/AT524619A1/de
Publication of AT524619A1 publication Critical patent/AT524619A1/de

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0892Network architectures or network communication protocols for network security for authentication of entities by using authentication-authorization-accounting [AAA] servers or protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Accounting & Taxation (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Power Engineering (AREA)
  • Business, Economics & Management (AREA)
  • Storage Device Security (AREA)

Abstract

Die vorliegende Erfindung betrifft computerimplementierte Verfahren zum autorisierten Ausführen einer Software, ein System zur Datenverarbeitung, ein Computerprogrammprodukt und ein computerlesbares Speichermedium. Die Software umfasst zumindest einen Programmabschnitt mit zumindest einer Schutzfunktion. Das Verfahren wird durch die Schutzfunktion ausgelöst. Das Verfahren umfasst das Auslesen einer für den Client spezifischen Hardware-Software-Information, das Übermitteln der spezifischen Hardware-Software-Information an einen Aktivierungsserver, das Empfangen eines Lizenzschlüssels, falls eine Lizenz für den Client am Aktivierungsserver vorliegt, oder Empfangen keines Lizenzschlüssels anderenfalls, wobei der Lizenzschlüssel durch Verschlüsseln der spezifischen Hardware-Software-Information erlangt wird, und das Prüfen durch die Schutzfunktion, ob der empfangene Lizenzschlüssel korrekt ist, insbesondere der ausgelesenen spezifischen Hardware-Software-Information entspricht. Falls kein korrekter Lizenzschlüssel vorliegt wird der Prozessorkontext abgeändert, wodurch eine Ausführung der Software verhindert wird.

Description

Österreichische Patentanmeldung aderow GmbH P300623AT
Computerimplementiertes Verfahren zum autorisierten Ausführen einer Software,
System zur Datenverarbeitung, Computerprogrammprodukt und computerlesbares
Speichermedium
Die vorliegende Erfindung betrifft computerimplementierte Verfahren zum autorisierten Ausführen einer Software, ein System zur Datenverarbeitung, ein Computerprogrammprodukt
und ein computerlesbares Speichermedium.
Der Kopierschutz von Software ist in der heutigen Zeit von zentraler Bedeutung, um den Aufwand für die Software-Entwicklung durch monetäre Einnahmen aus Lizenzgebühren oder Verkaufseinnahmen finanzieren zu können. Angreifer versuchen insbesondere anhand von „reverse engineering“ die zugrundeliegenden Schutzmechanismen aufzudecken, um die Software auch in unautorisierter Weise (das bedeutet ohne gültige Lizenz) ausführen zu können. Es ist deshalb ein generelles Anliegen, eine Umgehung des Kopierschutzes möglichst
zu erschweren.
Aus der US 2004 005 99 38 A1 ist ein Verfahren bekannt, bei dem eine Hardware-Information genutzt wird, um ein Softwareprodukt mit einem spezifischen Computer zu Lizenzzwecken zu koppeln. Die Hardware-Information basiert auf Informationen über zehn verschiedene Komponenten des Computers, wobei nur eine limitierte Anzahl an Komponenten geändert werden darf (beispielsweise drei), damit der Computer im Falle eines erneuten Lizenzabrufs als der lizensierte Computer erkannt wird. Ein ähnliches Verfahren ist auch aus der US 6 993 664 B2 bekannt.
Aus der US 10 176 307 B2 ist ein Verfahren bekannt, bei dem eine Software, die in einer spezifischen Instanz einer virtuellen Maschine genutzt wird, lizensiert werden kann, soweit die virtuelle Maschine als Teil eines bestimmten Verzeichnisdienstes („Active Directory Domain Service“) betrieben wird. Zur Identifikation der jeweiligen Instanz wird eine HardwareInformation und eine Domain-Information genutzt, aus der eine die jeweilige Instanz der virtuellen Maschine eindeutig identifizierbare Kennung gebildet wird. Die Kennung wird dann anhand einer Hash-Funktion verschlüsselt. Basierend auf dem Hash-Wert wird eine Lizenzabfrage an einem Server getätigt, der wiederum eine Lizensierungsbestätigung
zurücksendet. Bei der Ausführung der Software wird dann basierend auf den dann
vorliegenden Hardware- und Domain-Informationen erneut eine eindeutig identifizierbare Kennung gebildet, die mittels der Hash-Funktion zur Generierung eines Hash-Werts genutzt wird. Dieser Hash-Wert wird mit demjenigen verglichen, der der erhaltenen Lizensierungsbestätigung zugrunde liegt. Die Gültigkeit der Lizenz hängt von der
Übereinstimmung der Hash-Werte ab.
Die Überprüfung anhand der vorgenannten Verfahren kann jedoch umgangen werden, indem der Maschinencode der Funktion, welche die zugrundeliegende Hardware- und/oder DomainInformationen ausliest und überprüft, verändert wird. Dieser Vorgang wird als „Code Patching“
bezeichnet.
Aus der EP 2 998 895 A1 ist ein Verfahren bekannt, um eine ausführbare Datei in lizensierter Weise auszuführen. Der ausführbaren Datei fehlt dabei eine Konstante, die als Ziel des Lizensierungsverfahrens im Fall einer gültigen Lizenz bereitgestellt wird. Dabei wird eine am Client ausgelesene Hardware-Information und eine daraus abgeleitete Information an einen Server übermittelt und zur Verschlüsselung der an den Client übermittelten Konstanten genutzt. Am Client wird die verschlüsselte Konstante unter Zuhilfenahme der HardwareInformation und der daraus abgeleiteten Information entschlüsselt und an geeigneten Stellen der Software eingesetzt, so dass die Software ausführbar sein kann. Der Erfolg des Lizensierungsprozesses hängt dann davon ab, ob die entschlüsselte und eingesetzte Konstante zu einem Fehlerfall beim Ausführen der Software am Client führt oder nicht. Dieses Verfahren hat den Nachteil, dass eine fehlende Konstante, in dem der Software zugrundeliegenden Programmcode, verhältnismäßig einfach identifizierbar ist und ihr Fehlen
nicht immer zu einem Fehlerfall führt.
Die technische Aufgabe kann darin gesehen werden, die Nachteile des Stands der Technik auszuräumen oder zumindest zu verringern. Die Aufgabe liegt insbesondere darin, ein computerimplementiertes Verfahren zum autorisierten Ausführen einer Software, ein System zur Datenverarbeitung, ein Computerprogrammprodukt und ein computerlesbares Speichermedium zu schaffen, mit welchen es im Vergleich zum oben erläuterten Stand der Technik schwieriger ist, einen Kopierschutz für eine Software zu umgehen bzw. zu knacken. Die Aufgabe wird durch die Gegenstände der unabhängigen Patentansprüche gelöst. Vorteilhafte Ausgestaltungen der Erfindung sind in den jeweiligen Unteransprüchen
angegeben.
Zum besseren Verständnis wird an einigen Stellen auf computerimplementierte Verfahren und an anderen auf das zugrundeliegende Hardware-basierte System, ein Computerprogrammprodukt oder ein Computer-lesbares Speichermedium eingegangen,
mittels dem die Verfahren ausführbar sind oder die bei Ausführung von gespeicherten
Befehlen dazu führen, dass ein solches Verfahren ausgeführt wird. Die jeweils erläuterten
Aspekte sind jedoch in entsprechender Weise zu übertragen.
Nach einem ersten Aspekt der Erfindung wird ein computerimplementiertes Verfahren zum autorisierten Ausführen einer Software an einem Client bereitgestellt. Die Software umfasst zumindest einen Programmabschnitt mit einer Schutzfunktion. Das Verfahren wird durch die Schutzfunktion ausgelöst. Das Verfahren umfasst das Auslesen einer für den Client spezifischen Hardware-Software-Information. Das Verfahren umfasst auch das Übermitteln der spezifischen Hardware-Software-Information an einen Aktivierungsserver. Weiterhin umfasst das Verfahren das Empfangen eines Lizenzschlüssels, falls eine Lizenz für den Client am Aktivierungsserver vorliegt. Falls keine Lizenz für den Client am Aktivierungsserver vorliegt, empfängt der Client keinen Lizenzschlüssel. Der Lizenzschlüssel wird durch Verschlüsseln der spezifischen Hardware-Software-Information erlangt. Das Verfahren umfasst zudem das Prüfen durch die Schutzfunktion dahingehend, ob der empfangene Lizenzschlüssel korrekt ist. Das bedeutet, die Schutzfunktion prüft, ob der empfangene Lizenzschlüssel der ausgelesenen spezifischen Hardware-Software-Information entspricht. Falls kein korrekter Lizenzschlüssel vorliegt, wird von der Schutzfunktion der Prozessorkontext
abgeändert.jca1]
Beim Ändern des Prozessorkontextes kann ein oder können mehrere Prozessorregister
und/oder kann ein oder können mehrere Werte im Prozessorstack geändert werden.
Die Abänderung des Prozessorkontexts im Falle des Nicht-Vorliegens eines korrekten
[ce2] Lizenzschlüssels bewirkt, dass die Software nicht korrekt ausführbar ist.
Durch die Vielzahl an abänderbaren Möglichkeiten (Angriffspunkten an dem Programmabschnitt) und die an sich beliebige Veränderung des Prozessorkontexts stellt das so ausgebildete Verfahren eine besonders hohe Sicherheit des zugrundeliegenden Lizensierungsprozesses bereit, da die Veränderungen kaum nachzuvollziehen sind. Es können Zufallszahlen in die Prozessorregister oder in den Prozessorstack geschrieben werden. Es können aber die Inhalte eines Prozessorregisters oder eines Speicherelementes des Prozessorstacks einer bestimmten mathematischen Opration wie z.B. einer Multiplikation
oder Division mit einer ganzen Zahl, insbesondere einer Potenz von 2 unterzogen werden.
Die Abänderung kann auch zu einem zeitverzögerten Fehlerfall der Software führen. Eine Umgehung des Kopierschutzes ist stark erschwert, da ein Angreifer unter der Vielzahl an potentiell abgeänderten Komponenten die tatsächlich abgeänderte Komponente nur sehr schwer identifizieren kann. Natürlich können auch mehrere einem Programmabschnitt zugrundeliegende Komponenten abgeändert sein, wodurch die Umgehung des
Kopierschutzes nochmals erschwert wird.
Der am Client vom Aktivierungsserver empfangene Lizenzschlüssel kann auch Programmcode umfassen, der zum korrekten Ausführen der Software notwendig ist. Insofern kann der Lizenzschlüssel benötigt werden, damit die Software überhaupt korrekt ausführbar ist. Falls also kein korrekter Lizenzschlüssel vorliegt, kann der bereitgestellte Programmcode derart sein, dass ein korrektes (fehlerfreies) Ausführen der Software nicht möglich ist, oder, zumindest verzögert zu einer fehlerhaften Ausführung (einem Fehlerfall) der Software führt. Der Lizenzschlüssel kann auch Informationen über den Ablauf des Programmcodes derart umfassen, dass ein fehlerfreies Ausführen der Software basierend auf diesen Informationen ermöglicht wird. In diesem Fall liegt der komplette Programmcode bereits am Client vor. Allerdings ist ohne den korrekten Lizenzschlüssel ausgeschlossen, dass der Programmcode fehlerfrei ausführbar ist. In alternativer Weise umfasst der Lizenzschlüssel keine weitere Information, auf welche Weise der Ablauf des Programmabschnitts verändert wird, abhängig davon, ob ein korrekter Lizenzschlüssel vorliegt. Vielmehr kann diese Information in der Schutzfunktion hinterlegt sein, welche für den Fall des Nicht-Vorliegens eines korrekten
Lizenzschlüssels den Ablauf des Programmabschnitts verändert.
Im Kontext der vorliegenden Patentanmeldung kann unter dem autorisierten Ausführen der Software verstanden werden, dass diese nur dann korrekt ausführbar sein kann, wenn der empfangene Lizenzschlüssel korrekt ist. Das bedeutet, dass der Lizenzschlüssel der
ausgelesenen Hardware-Software-Information entspricht.
Unter der Schutzfunktion kann eine Funktionalität verstanden werden, die einen oder mehrere Befehle (programmierte Rechenoperationen) umfasst, welche derart sind, dass das Verfahren ausgelöst wird, sobald der/die zugrundeliegende/n Befehl/e in ein Prozessorregister des Clients geladen werden und dort abgearbeitet werden. Die Schutzfunktion dient insofern aber der Überprüfung einer zu autorisierenden Instanz der Software. Der Programmabschnitt der Software dient der durch die Software bereitgestellten Funktionalität, beispielsweise einem Bildverarbeitungsprogramm oder einem Spiel. Die Schutzfunktion ist von dieser Funktionalität
unabhängig.
Im Kontext der vorliegenden Anmeldung wird unter einer spezifischen Hardware-SoftwareInformation (im Folgenden: „HWI“) des Clients eine Information verstanden, auf deren Basis der Client oder die jeweilige Instanz bestimmbar sein kann. Die HWI ist im Allgemeinen nicht eindeutig. Es können mehrere Clients dieselbe HWI haben. Die Wahrscheinlichkeit dafür ist jedoch gering, insbesondere geringer als 5/100, weiter insbesondere geringer als 2/100, weiter insbesondere etwa 1/100, 1/1.000, 1/1.000.000. Die Wahrscheinlichkeit kann auch in einem Bereich zwischen den genannten bestimmten Werten liegen. Die HWI kann insbesondere Informationen über eine oder mehrere Hardware-Komponenten des Clients umfassen. Die
HWI kann zumindest teilweise auf zumindest einem oder mehreren der folgenden beruhen:
einer Media Access Control Adresse des Client, einer International Mobile Subscriber Identity des Clients, einer International Mobile Station Equipment Identity des Clients und Informationen basierend auf einer Identität einer oder mehrerer konstituierender Hardwarekomponenten des Clients, insbesondere einem Prozessor, einer Grafikkarte, einem Grafikprozessor, einer Soundkarte oder einem Soundprozessor. Die HWI kann auch Informationen über zumindest eine Software-Komponente des Clients umfassen. Beispielsweise kann die HWI Informationen über die Version des Betriebssystems des Clients umfassen. Die HWI kann demnach Informationen über eine Software-Version und/oder eine jeweilige Instanz umfassen. Allerdings umfasst die HWI keine Informationen über die
Software, deren autorisiertes Ausführen nachgesucht wird.
Unter dem Vorliegen einer Lizenz ist zu verstehen, dass sich der Client mit dieser spezifischen HWI bereits beim Aktivierungsserver derart identifiziert hat, dass der Client vom
Aktivierungsserver als zum Ausführen der Software autorisiert behandelt wird.
Das hierin beschriebene computerimplementierte Verfahren stellt dabei eine zweite Sicherheitsebene eines Autorisierungsprozesses dar, der eingerichtet ist, um ein autorisiertes Ausführen der Software zu gewährleisten. Dem oben beschriebenen speziellen Autorisierungsprozess ist ein Standard-Autorisierungsprozess vorgelagert. Beim StandardAutorisierungsprozess wendet ein Nutzer beispielsweise einen Freischaltcode im Zusammenhang mit einem Lizensierungsserver an, um die Software freizuschalten. Den entsprechenden Freischaltcode erhält der Nutzer typischerweise beim Kauf/der Miete der Software, beispielsweise in Form einer Seriennummer. Ist dieser Freischaltcode beispielsweise abgelaufen, ungültig oder wurde er als unsicher aufgrund bekannter Manipulierungsmaßnahmen oder Angriffe auf den Lizensierungsserver eingestuft, kann der Standard-Autorisierungsprozess eine erneute Abfrage eines neuen, gültigen Freischaltcodes gegenüber dem Nutzer vorsehen. Mittels Code-Patching wird manchmal versucht diesen Standard-Autorisierungsprozess zu umgehen, so dass die Software ohne gültige Lizenz benutzt werden kann. Da die oben erläuterte Schutzfunktion vorgesehen ist, die Bestandteil des weiteren, speziellen Autorisierungsprozesses ist, wird dieser auch ausgeführt, selbst wenn die Software so manipuliert sein sollte, dass der Standard-Autorisierungsprozess umgangen wird. Hierbei ist von Vorteil, dass die Schutzfunktion irgendwo in der Software ohne Bezug zum Standard-Autorisierungsprozess angeordnet sein kann, so dass die Schutzfunktion
weiterhin aktiv ist, auch wenn der Standard-Autorisierungsprozess ausgeschaltet ist.
Bei der erstmaligen Lizenzabfrage des Clients am Aktivierungsserver kann ein zusätzlicher Identifikationsmechanismus notwendig sein, beispielsweise durch Eingabe einer
Seriennummer oder von persönlichen Daten oder einem Kaufnachweis. Dieser
Identifikationsmechanismus stellt in der Regel den oben «erläuterten Standard-
Autorisierungsprozess dar.
Das Prüfen des empfangenen Lizenzschlüssels durch die Schutzfunktion kann die Entschlüsselung des empfangenen Lizenzschlüssels durch die Schutzfunktion umfassen. Die Schutzfunktion kann eingerichtet sein, um selbst oder unter Zuhilfenahme von an dem Client verfügbaren Entschlüsselungsroutinen den empfangenen Lizenzschlüssel in eine einer HM entsprechende Information zu entschlüsseln. Da ein Lizenzschlüssel am Client nur empfangen wird, wenn eine Lizenz für den Client am Aktivierungsserver vorliegt, wird bei einer Manipulation kein zumindest keinkorrekter Lizenzschlüssel am Client vom Aktivierungsserver empfangen. Sie Schutzfunktion prüft, ob die aus dem empfangenen Lizenzschlüssel entschlüsselte HWI der am Client ausgelesenen HWI entspricht. Dazu kann die Schutzfunktion zumindest eine logische Operation anwenden. Sind die jeweiligen HWI zueinander entsprechend, so ist der Lizenzschlüssel korrekt. Anderenfalls ist der Lizenzschlüssel falsch. Wird kein Lizenzschlüssel empfangen, dann liest die Schutzfunktion die vorab in dem Bereich, in dem der korrekte Lizenzschlüssel gespeichert werden sollte, abgelegten Daten aus. Diese Daten weichen vom Lizenzschlüssel ab und werden von der Schutzfunktion als nicht korrekter Lizenzschlüssel aufgefasst. Im Falle eines falschen Lizenzschlüssels (oder keines Lizenzschlüssels) wird der Programmabschnitt, dem die Schutzfunktion zugeordnet ist,
abgeändert.
Das Abändern des Programmabschnitts kann derart ausgeführt werden, dass die Daten zumindest eines Prozessorregisters (im Allgemeinen des Prozessorkontextes) verändert werden. Ein Prozessorregister kann ein Befehlsregister, ein Datenregister, ein Adressregister oder ein sonstiges Register des Prozessors sein, auf das mittels der Software direkt zugegriffen werden kann und deren Inhalt verändert werden kann. Je nach Prozessor gibt es unterschiedliche Strukturen von Prozessorregistern. Dies wird im Folgenden auch als
Prozessorkontext bezeichnet.
Die Änderung des Inhalts eines Prozessorregisters hat zur Folge, dass entweder ein Prozessorbefehl verändert wird, der durch den im Prozessorregister enthaltenen Wert definiert ist oder ein Datum, das von einem Prozessorbefehl verarbeitet wird, verändert wird. Damit wird der Ablauf des Programmabschnitts gestört, dem die Schutzfunktion zugeordnet ist. Diese Abänderung bewirkt, dass ein anderer Prozessorbefehl ausgeführt wird oder ein Prozessorbefehl ein geändertes Datum verarbeitet. Bei Prototypen hat sich gezeigt, dass eine solche Abänderung des Prozessorkontextes oftmals zu einem Absturz der Software erst an einem späteren Programmschritt führt. Dieser Kopierschutzmechanismus bewirkt somit eine
Verschleierung zwischen Ursache des Fehlerfalls der Software und der damit einhergehenden
71729
Wirkung.
Die eigentliche Ursache ist in dem Nichtvorliegen einer gültigen Lizenz zu sehen, was dazu führt, dass kein Lizenzschlüssel übermittelt wird. Gleichermaßen führt ein falscher Lizenzschlüssel zum gleichen Ergebnis des Verhinderns der Ausführbarkeit der Software. Die daraus abgeleitete Hardware-Software-Information stimmt dann nicht mit der am Client ausgelesenen überein. Die Wirkung dieses Fehlerfalls tritt, wie hier beschrieben, hingegen durch das Abändern des Prozessorkontextes ein. Eine Verschleierung der Fehlerursache ist auch möglich, indem bei der Abänderung des Prozessorkontexts die Stelle(n), an der die Daten modifiziert werden, durch die Schutzfunktion zwar vorgegeben, aber im Allgemeinen variabel sind. Die Schutzfunktion kann also bezüglich der Stelle, an der das zumindest eine Prozessorregister oder ein Stackeintrag abgeändert wird, einen zusätzlichen Freiheitsgrad aufweisen. Wie bereits oben beschrieben, kann der vom Client empfangene Lizenzschlüssel Programmcode und/oder entsprechende Informationen über den Programmcode umfassen, der/die zum korrekten Ausführen der Software notwendig ist. Auch kann die Schutzfunktion die notwendige Information umfassen. Die Schutzfunktion kann dann aber so sein, dass der im korrekten Lizenzschlüssel zur Abänderung des zumindest einen Prozessorregisters vorgesehene Programmcode nicht bei Jedem Lizensierungsvorgang an einer korrespondierenden Stelle des der Schutzfunktion zugeordneten Programmabschnitts bzw. des zumindest einen durch den Programmabschnitt bestimmten Prozessorregisters angewendet wird. Vielmehr kann die Schutzfunktion für jeden Lizensierungsvorgang individuell vorgeben, an welcher Stelle die Daten des zumindest einen Prozessorregisters variiert werden. Da also das zumindest eine Prozessorregister bzw. der Prozessorkontext auf multiple Weise an verschiedenen Stellen abgeändert werden kann, so dass der Fehlerfall in vielerlei Weise und auch verzögert auftreten kann, wird der hier beschriebene Zusammenhang zwischen Ursache und Wirkung verschleiert. Dadurch ist er für einen Angreifer nur sehr schwer
identifizierbar.
Die Software kann in mehreren Programmabschnitten mit jeweils eine Schutzfunktion aufweisen. Das Verfahren kann dann durch die mehreren Schutzfunktionen jeweils ausgelöst werden. Dabei können die jeweiligen Lizenzschlüssel unterschiedlich sein. Das bedeutet, die jeweiligen Lizenzschlüssel können von der jeweiligen Schutzfunktion abhängen. Insbesondere können die jeweiligen Lizenzschlüssel von der Position der Schutzfunktion abhängen, also davon, ob es die erste, die zweite, die dritte usw. Schutzfunktion ist. Die Sicherheit des
zugrundeliegenden Lizensierungsprozesses kann somit weiter erhöht werden.
Eine Anzahl der Schutzfunktionen kann zumindest 10 sein, insbesondere zumindest 25, weiter insbesondere zumindest 50, weiter insbesondere zumindest 100, weiter insbesondere
zumindest 150, weiter insbesondere zumindest 200 und bis zu 1.000.
Die Software kann auch obfuskiert sein. Das bedeutet, dass ein der Software zugrundeliegender Programmcode verschleiert sein kann. Der Programmcode kann also so verändert sein, dass der Programmcode nur schwer verständlich oder schwer identifizierbar
ist. Dadurch kann der Kopierschutz noch verbessert werden.
Die Software, insbesondere die zumindest eine Schutzfunktion, ist vorzugsweise kompiliert. Das bedeutet, dass die Software bzw. die Schutzfunktion nicht als Quellcode, sondern nur in ausführbarer Form vorliegt. Dadurch können die einzelnen Funktionsweisen schwieriger identifizierbar sein, so dass der Kopierschutz ebenfalls verbessert wird. In diesem Fall kann
die kompilierte Form der Software zusätzlich obfuskiert sein.
Die Software kann auch zumindest eine virtuelle Maschine umfassen. Insbesondere kann ein Programmabschnitt und eine in diesem Programmabschnitt enthaltene Schutzfunktion in einer virtuellen Maschine integriert sein. Vorzugsweise wird eine vollständige Funktion in der dieser Programmabschnitt enthalten ist in der virtuellen Maschine virtualisiert. Unter einer vollständigen Funktion wird ein Programmabschnitt verstanden, der als Gesamtheit von z.B. einer anderen Funktion aufrufbar ist. Das bedeutet, dass der Programmabschnitt und die zugeordnete Schutzfunktion innerhalb eines Teilbereichs der Software verkapselt sein können. Die Software kann auch mehrere virtuelle Maschinen umfassen, die jeweils einen oder mehrere Programmabschnitte mit den jeweiligen zugeordneten Schutzfunktionen umfassen. Die virtuellen Maschinen können dabei eigene Architekturen innerhalb der Software nachbilden. Anhand der virtuellen Maschinen kann die Software für verschiedene Instanzen, Versionen oder Typen unterschiedliche Befehlssätze (Programmabschnitte) aufweisen. Dadurch kann die Sicherheit der Software gegen eine unautorisierte Nutzung weiter verbessert werden. Ein Angreifer kann dann nicht einfach anhand des (kompilierten) Programmcodes der
Software die Schutzfunktionen extrahieren bzw. isolieren.
Die am Client ausgelesene HWI kann verschlüsselt werden und anschließend vom Client an den Aktivierungsserver in verschlüsselter Weise übermittelt werden. Die HWI kann insbesondere anhand einer Hash-Funktion verschlüsselt werden. Dann kann lediglich ein der HWI entsprechender Hash-Wert an den Aktivierungsserver übermittelt werden. Dadurch kann die zu übertragende Datenmenge vorteilhaft reduziert werden, so dass Ressourcen eingespart
werden können.
Der Client und der Aktivierungsserver können jeweils einen Pseudo-Zufallszahlengenerator (im Folgenden: „PRNG“) umfassen. Der PRNG des Clients und der PRNG des Aktivierungsservers können zueinander korrespondieren. Der PRNG kann PseudoZufallszahlen erzeugen, basierend auf denen die HWI verschlüsselt wird, um den Lizenzschlüssel zu erlangen. Die Pseudo-Zufallszahlen können dabei von der jeweiligen HWM
und/oder der jeweiligen Schutzfunktion abhängen, insbesondere von der Position der
jeweiligen Schutzfunktion. Die Pseudo-Zufallszahlen können auch deterministisch sein, können also durch eine vorbestimmte Größe definiert sein, zum Beispiel eine Zeitangabe. Beispielsweise kann die Anzahl der Schutzfunktionen sowohl am Client als auch am Aktivierungsserver bekannt sein, weshalb dann die jeweils zu nutzenden PseudoZufallszahlen bestimmt sein können. Da die PRNGen des Clients und des Aktivierungsservers zueinander korrespondierend bzw. synchronisiert sind, kann der vom Client empfangene Lizenzschlüssel entsprechend durch den PRNG des Clients entschlüsselt werden, um die jeweilige dem empfangenen Lizenzschlüssel korrespondierende HWI zu erlangen, die dann mit der am Client ausgelesenen HWI verglichen werden kann. Da die PRNGen sowohl am Client als auch am Aktivierungsserver vorliegen, muss der dem Lizenzschlüssel zugrundeliegende Verschlüsselungsmechanismus nicht zwischen Client und Aktivierungsserver übertragen werden. Dadurch kann die zu übertragende Datenmenge reduziert werden. Zudem kann ein Angreifer, der die zwischen Client und Aktivierungsserver übermittelten Daten abfängt, aus diesen nicht auf den Verschlüsselungsmechanismus
schließen.
Aus Sicht des Aktivierungsservers kann das Verfahren das Empfangen einer am Client ausgelesenen HWI umfassen. Der Aktivierungsserver kann dann prüfen, ob für den Client, der diese HWI übermittelt hat, bereits eine Lizenz am Aktivierungsserver besteht. Falls eine gültige Lizenz vorliegt, kann ein Lizenzschlüssel durch Verschlüsseln der HWM erzeugt und an den Client übermittelt werden. Falls keine Lizenz besteht, wird kein Lizenzschlüssel übermittelt. Zur Verschlüsselung der HWI kann insbesondere ein Zufallszahlengenerator bzw. PRNG genutzt werden, der zur Verschlüsselung der HWI Pseudo-Zufallszahlen in Abhängigkeit der
empfangenen HWI und/oder der jeweiligen Schutzfunktion nutzt.
Nach einem zweiten Aspekt der Erfindung wird ein computerimplementiertes Verfahren zum autorisierten Ausführen einer Software an einem Client bereitgestellt, bei dem die Software eine Vielzahl an Schutzfunktionen aufweist, wobei jede Schutzfunktion in einem anderen Programmabschnitt angeordnet ist. Das Verfahren wird durch jede Schutzfunktion ausgelöst. Das Verfahren umfasst das Auslesen einer für den Client spezifischen HWI. Das Verfahren umfasst zudem das Übermitteln der spezifischen HWI an einen Aktivierungsserver und das Empfangen eines Lizenzschlüssels, falls eine Lizenz für den Client am Aktivierungsserver vorliegt. Falls keine Lizenz für den Client am Aktivierungsserver vorliegt, empfängt der Client keinen Lizenzschlüssel. Dabei wird der Lizenzschlüssel durch Verschlüsseln der spezifischen HWI erlangt. Das Verfahren umfasst auch das Prüfen durch die jeweilige Schutzfunktion, ob der empfangene Lizenzschlüssel korrekt ist, insbesondere der jeweils ausgelesenen spezifischen HWI entspricht. Falls der empfangene Lizenzschlüssel falsch ist, wird ein Ablauf der Software gegenüber dem Ablauf der Software, sofern ein korrekter Lizenzschlüssel
vorliegt, verändert. Das Einfügen mehrerer Schutzfunktionen an unterschiedlichen Stellen der
Software bietet eine Vielzahl an möglichen Angriffspunkten, um ein korrektes Ausführen der Software bei fehlerhaftem Schlüssel zu verhindern. Einem Angreifer wird es durch das so ausgebildete Verfahren deshalb erschwert, den Kopierschutz (also das lizenzlose Ausführen der Software) zu umgehen. Zudem kann der Ablauf der Software potentiell an vielen verschiedenen Stellen geändert werden, da die Software bereits eine Vielzahl an Schutzfunktionen umfasst. Deshalb ist die Sicherheit der Software gegen ein unautorisiertes
Ausführen besonders hoch.
Der erste Aspekt der Erfindung und der zweite Aspekt der Erfindung können auch miteinander
kombiniert werden.
Das Verändern des Prozessorkontextes in Kombination mit vielen Schutzfunktionen in unterschiedlichen Programmabschnitten ist besonders vorteilhaft, da sich die Veränderung am Prozessorkontext in den unterschiedlichen Programmabschnitten unterschiedlich auswirken kann und in der Regel auch unterschiedlich auswirkt. Hierdurch entsteht kein einheitliches Muster, nach dem ein Angreifer suchen kann, um die mehreren Schutzfunktionen zu enttarnen. Zudem ist für einen Angreifer diese Manipulation besonders schwer nachzuvollziehen, da derartige Veränderungen am Prozessorregister nicht ohne weiteres identifiziert werden können. Deshalb wird eine Umgehung des Kopierschutzes nochmals
erschwert.
Es wird auch ein System zur Datenverarbeitung umfassend zumindest einen Client und einen Aktivierungsserver bereitgestellt. Der Client und der Aktivierungsserver können über zumindest ein Kommunikationsprotokoll miteinander kommunizieren. Die Kommunikation ist derart, dass durch den Client ein computerimplementiertes Verfahren einer der zuvor
beschriebenen Arten auslösbar ist.
Es kann auch ein Schutzserver vorgesehen sein. Der Schutzserver kann mit dem Aktivierungsserver basierend auf zumindest einem Kommunikationsprotokoll kommunizieren. Der Softwarehersteller kann die Software an dem Schutzserver anhand einer Projekt ID charakterisieren. Die Projekt ID kann am Aktivierungsserver dazu genutzt werden, die durch den PRNG erzeugten Pseudo-Zufallszahlen zumindest teilweise für die zur Projekt ID
korrespondierende Software zu bestimmen.
Es wird auch ein Computerprogrammprodukt bereitgestellt. Das Computerprogrammprodukt umfasst zumindest eine in einem Programmabschnitt angeordnete Schutzfunktion. Bei der Ausführung des Programms durch einen Computer, insbesondere einen Client umfassend zumindest einen Prozessor, veranlasst die zumindest eine Schutzfunktion den Prozessor, ein
Verfahren einer der zuvor beschriebenen Arten auszulösen.
Es wird auch ein computerlesbares Speichermedium bereitgestellt. Das Speichermedium umfasst zumindest eine in einem Programmabschnitt angeordnete Schutzfunktion. Bei der Ausführung durch einen Computer, insbesondere einen Client umfassend zumindest einen Prozessor, veranlasst die zumindest eine Schutzfunktion den Prozessor, ein Verfahren einer
der zuvor beschriebenen Arten auszulösen.
Im Folgenden werden die zuvor erläuterten Merkmale und Aspekte anhand von
Ausführungsbeispielen und unter Bezugnahme auf die Figuren näher erläutert. Dabei zeigen
- Fig.1 eine vereinfachte schematische Darstellung eines Systems zur
Datenverarbeitung,
- Fig. 2 eine vereinfachte schematische Darstellung eines computerimplementierten
Verfahrens,
- Fig. 3 eine vereinfachte schematische Darstellung eines weiteren
computerimplementierten Verfahrens,
- Fig. 4 eine vereinfachte schematische Darstellung eines Computerprogrammprodukts,
und
- Fig.5 eine vereinfachte schematische Darstellung eines computer-lesbaren Speichermediums.
Fig. 1 zeigt eine vereinfachte schematische Darstellung eines Systems zur
Datenverarbeitung 1. Das System 1 umfasst einen Client 2, einen Aktivierungsserver 3 und
einen Schutzserver 4. Der Schutzserver 4 ist optional und deshalb gestrichelt dargestellt.
Das System 1 ist eingerichtet, um die nachfolgend erläuterten computerimplementierten
Verfahren 5, 10 auszuführen.
Der Client 2 ist derart mit dem Aktivierungsserver 3 gekoppelt, dass sich die beiden Daten anhand zumindest eines Kommunikationsprotokolls 6, beispielsweise eines EthernetProtokolls, gegenseitig übermitteln können. Der Aktivierungsserver 3 ist wiederum derart mit dem Schutzserver 4 gekoppelt, dass sich die beiden Daten anhand zumindest eines Kommunikationsprotokolls 7, beispielsweise eines Ethernet-Protokolls, gegenseitig übermitteln können. Eine direkte Kommunikation zwischen dem Client 2 und dem
Schutzserver 4 ist nicht vorgesehen.
Der Client 2 umfasst eine Software 8, die am Client 2 in geeigneter Weise vorliegt und generell durch den Client 2 ausführbar ist. Dazu umfasst der Client 2 die übliche Peripherie,
insbesondere zumindest einen Prozessor mit einem oder mehreren entsprechenden
Prozessorregistern, in denen Computerprogramme abgearbeitet werden können. Die
Software 8 umfasst zumindest einen Programmabschnitt mit einer Schutzfunktion.
Der Aktivierungsserver 3 umfasst Informationen 9 über bereits lizensierte Clients 2 anhand einer Hardware-Software-Information (HWI) oder einer daraus abgeleiteten Information oder erhält diese Informationen bei Bedarf von einem sogenannten Third-Party-Server. Diese Clients 2 werden derart behandelt, dass ein Ausführen der Software 8 für diese Clients 2
autorisiert ist.
Fig. 2 zeigt eine vereinfachte schematische Darstellung eines computerimplementierten Verfahrens 5. Das Verfahren umfasst mehrere Schritte S1, S2, S3, S4, S5, S6, S7, S8, von
denen aber einige (S2, S4) optional und deshalb gestrichelt dargestellt sind.
Das Verfahren 5 betrifft das autorisierte Ausführen einer Software 8, die zumindest einen Programmabschnitt mit einer Schutzfunktion umfasst. Sobald die Schutzfunktion von einem
Client 2 in ein Prozessorregister geladen und bearbeitet wird, wird das Verfahren 5 ausgelöst.
In Schritt S1 wird eine den Client 2 charakterisierende HWM ausgelesen. Im optionalen Schritt S2 wird die ausgelesene HWI am Client 2 verschlüsselt, beispielsweise basierend auf einer Hash-Funktion. Denkbar sind aber auch andere Verschlüsselungsroutinen. In Schritt S3 wird die (optional verschlüsselte) HWI vom Client 2 an den Aktivierungsserver 3 übermittelt. Im optionalen Schritt S4 entschlüsselt der Aktivierungsserver 3 die empfangene verschlüsselte HWI.
In Schritt S5 überprüft der Aktivierungsserver 3, ob eine (gültige) Lizenz für den Client 2 auf Basis der empfangenen (und entschlüsselten) HW besteht. Es kann auch so sein, dass die Information, dass eine gültige Lizenz vorliegt, vom Client zusammen mit der HM an den Aktivierungsserver übermittelt wird. Der Aktivierungsserver 3 kann beispielsweise eingerichtet sein, um auf entsprechende Lizenz-Informationen 9 zuzugreifen. Ergibt die Prüfung in Schritt S5, dass eine gültige Lizenz für den mit der empfangenen HWI identifizierten Client 2 vorliegt, wird die HWI in Schritt S5 verschlüsselt und ein Lizenzschlüssel generiert. Der Lizenzschlüssel wird dabei basierend auf der HWI generiert. Dazu kann der Aktivierungsserver 3 einen Pseudo-Zufallszahlengenerator (im Folgenden: „PRNG“) nutzen, der Pseudo-Zufallszahlen basierend auf der HW zur Verschlüsselung der HW bereitstellt. Die bereitgestellten PseudoZufallszahlen können auch „indirekt“ von der Schutzfunktion abhängen, beispielsweise von der Position der Schutzfunktion, also davon, ob es sich um die erste, zweite, dritte, etc. handelt. Die bereitgestellten Pseudo-Zufallszahlen können zudem von der Software 8 abhängen, also von einem Typ der Software 8, einer Instanz, einer Version, etc. Die so verschlüsselte HWM kann optional Informationen, wie z.B. einzelne Programmbefehle, beinhalten, die für ein
fehlerfreies Ausführen der Software 8 benötigt werden. Das bedeutet, ohne eine korrekte
Lizensierung mit einem korrekten Lizenzschlüssel kann die Software 8 derart sein, dass sie nicht fehlerfrei ausführbar ist. Ergibt sich in Schritt S5, dass keine gültige Lizenz für den mit der empfangenen HWI identifizierten Client 2 vorliegt, so wird in Schritt S5 kein
Lizenzschlüssel erzeugt.
In Schritt S6 wird der jeweils generierte Lizenzschlüssel an den Client 2 übermittelt. In Schritt S7 empfängt der Client 2 den Lizenzschlüssel und entschlüsselt ihn, um die dem Lizenzschlüssel zugrundeliegende HWI zu erhalten. Da der Client 2 und der Aktivierungsserver 3 korrespondierende bzw. miteinander synchronisierte PRNGen aufweisen, muss der übermittelte Lizenzschlüssel keine Informationen über den
Entschlüsselungsmechanismus umfassen.
In Schritt S8 vergleicht der Client 2 die aus dem Lizenzschlüssel entschlüsselte HWI mit der zuvor am Client 2 ausgelesenen HWI. Stimmen sie überein, so ist der Lizenzschlüssel korrekt, anderenfalls ist er falsch. Die Übereinstimmung muss nicht immer 100% perfekt sein. Es genügt eine Übereinstimmung zu einem bestimmten Grad. Es kann zweckmäßig sein, gewisse Abweichungen zuzulassen. Damit ist es möglich an der Hardware und/oder Software Änderungen vorzunehmen, um bspw. ein defektes Teil am Computer auszutauschen, ohne
dass hierdurch die Lizenz verloren geht.
Der jeweilige Lizenzschlüssel kann optional Informationen darüber enthalten, dass an bestimmten Stellen der Software 8 ein oder mehrere optional im Lizenzschlüssel enthaltene Prozessorbefehle eingefügt werden müssen, damit die Software korrekt ausgeführt werden kann. Dies stellt eine weiter optionale Sicherheitsstufe dar. In alternativer Weise umfasst der Lizenzschlüssel keine weitere Information, an welcher Stelle der Software 8 bestimmte Prozessorbefehle eingefügt werden, sondern die Schutzfunktion verändert nur den
Prozessorkontext bei Nicht-Vorliegen eines korrekten Lizenzschlüssels.
Um die von dem PRNG bereitgestellten Pseudo-Zufallszahlen zu bestimmen, kann vor der Ausführung der Verfahren 5, 10 eine Kommunikation zwischen dem Aktivierungsserver 3 und dem Schutzserver 4 genutzt werden. Dann kann der Softwarehersteller die jeweils zu nutzenden Pseudo-Zufallszahlen, in Abhängigkeit der Schutzfunktion, für die jeweilige Software 8 festlegen. Auch können dabei weitere Variablen Berücksichtigung finden. Beispielsweise können die von den PRNGen zu nutzenden Pseudo-Zufallszahlen von einer
Zeitangabe abhängen, die dann von den PRNGen jeweils zu berücksichtigen ist.
Fig.3 zeigt eine vereinfachte schematische Darstellung eines weiteren
computerimplementierten Verfahrens 10. Das Verfahren 10 entspricht im Wesentlichen dem
vorhergehend erläuterten. Deshalb wird an dieser Stelle hauptsächlich auf die Unterschiede
eingegangen.
Ein Unterschied besteht darin, dass die dem Verfahren 10 zugrundeliegende Software 8 in mehreren Programmabschnitten jeweils mindestens eine Schutzfunktion umfasst. Da das Verfahren 10 durch jede der Schutzfunktionen ausgeführt wird, ist das Verfahren 10 als sich
in Abhängigkeit der jeweiligen Schutzfunktion wiederholend zu verstehen.
Das Verfahren 10 wird dann jeweils durch die jeweilige Schutzfunktion ausgelöst. Dann wird in Schritt S9 jeweils eine HWI am Client 2 ausgelesen, die optional verschlüsselt werden kann (Schritt S10) an den Aktivierungsserver 3 übermittelt (Schritt S11) und anschließend dort optional entschlüsselt wird (Schritt S12).
Ein weiterer Unterschied besteht beim Verschlüsseln der HWI in Schritt S$S13. Die von dem PRNG genutzten Pseudo-Zufallszahlen hängen hier nämlich von der jeweiligen Position der Schutzfunktion innerhalb der Software 8 ab, also ob es sich um die erste, zweite, dritte etc. Schutzfunktion handelt. Das bedeutet, dass die generierten Lizenzschlüssel, die ausgehend von den unterschiedlichen Schutzfunktionen erzeugt werden, voneinander abweichen, selbst
wenn ihnen dieselbe HWI zugrunde liegt.
In der oben erläuterten Weise werden die Lizenzschlüssel dann an den Client 2 übermittelt (Schritt S14), dort empfangen und entschlüsselt (Schritt S15). Der Schritt S16 umfasst das Prüfen, ob die aus dem entschlüsselten Lizenzschlüssel gewonnene HWI derjenigen entspricht, die am Client 2 ausgelesen wurde. Im negativen Fall, wird der Prozessorkontext verändert. Dazu wird bspw. an zumindest einer beliebigen Stelle eines mit der Ausführung der Software 8 zusammenhängenden Prozessorregisters zumindest ein Eintrag verändert. Insbesondere können natürlich auch mehrere oder viele Stellen des/der beteiligten Prozessorregister verändert werden. Es können auch alternativ oder zusätzlich ein oder mehrere Einträge eines Prozessorstacks verändert werden. Das führt dazu, dass die Software
8 nicht korrekt („autorisiert“) ausführbar ist, so dass ein Fehlerfall verursacht wird.
Fig. 4 zeigt eine vereinfachte schematische Darstellung eines Computerprogrammprodukts 11. Das Computerprogrammprodukt 11 ist vorliegend auf/an einem Client 2 angeordnet. Das ist aber optional und deshalb gestrichelt dargestellt. Das Computerprogrammprodukt 11 umfasst die Software 8 mit zumindest einen Programmabschnitt mit einer dem Programmabschnitt zugeordneten Schutzfunktion. Bei deren Ausführung an einem entsprechenden Client 2 ist zumindest eines der hierin erläuterten computerimplementierten Verfahren 5, 10 ausführbar.
Fig. 5 zeigt eine vereinfachte schematische Darstellung eines computer-lesbaren
Speichermediums 12, beispielsweise als ein nicht-flüchtiger Speicher. Das Speichermedium
12 ist an einem Client 2 lesbar. Auf dem Speichermedium 12 ist die Software 8 mit zumindest einem Programmabschnitt mit zumindest einer Schutzfunktion gespeichert. Werden die Daten der Software 8 an einem Client 2 eingelesen, so ist bei deren Ausführung zumindest eines der
hierin erläuterten computerimplementierten Verfahren 5, 10 ausführbar.
Bezugszeichenliste
1 System zur Datenverarbeitung
2 Client
3 Aktivierungsserver
4 Schutzserver
5 Computerimplementiertes Verfahren 6 Kommunikationsprotokoll
7 Kommunikationsprotokoll
8 Software
9 Informationen
10 Computerimplementiertes Verfahren 11 Computerprogrammprodukt
12 Computerlesbares Speichermedium

Claims (13)

Österreichische Patentanmeldung aderow GmbH P300623AT Patentansprüche
1. Computerimplementiertes Verfahren (5) zum autorisierten Ausführen einer Software (8) an einem Client (2), wobei die Software (8) zumindest in einem Programmabschnitt zumindest eine Schutzfunktion aufweist, wobei das Verfahren (5) durch die Schutzfunktion ausgelöst wird, das Verfahren (5) umfasst das
a. Auslesen einer für den Client (2) spezifischen Hardware-Software-Information,
b. Übermitteln der spezifischen Hardware-Software-Information an einen Aktivierungsserver (3),
c. Empfangen eines Lizenzschlüssels, falls eine Lizenz für den Client (2) am Aktivierungsserver (3) vorliegt, oder Empfangen keines oder keines korrekten Lizenzschlüssels anderenfalls, wobei der Lizenzschlüssel durch Verschlüsseln der spezifischen Hardware-Software-Information erlangt wird, und
d. Prüfen durch die Schutzfunktion, ob der empfangene Lizenzschlüssel korrekt ist, insbesondere der ausgelesenen spezifischen Hardware-SoftwareInformation entspricht, wobei falls kein korrekter Lizenzschlüssel vorliegt der
Prozessorkontext geändert wird.
2. Computerimplementiertes Verfahren nach Anspruch 1, wobei beim Ändern des Prozessorkontextes der Inhalt eines oder mehrerer Prozessorregister und/oder ein
oder mehrere Werte im Prozessorstack geändert werden.
3. Computerimplementiertes Verfahren (5) nach Anspruch 1 oder 2, wobei die Software (8) mehrere unterschiedliche Programmabschnitte mit jeweils zumindest einer solchen Schutzfunktion aufweist, wobei das Verfahren (5) durch die mehreren Schutzfunktionen jeweils ausgelöst wird, und wobei sich die Lizenzschlüssel für
zumindest einen Teil der unterschiedlichen Schutzfunktionen unterschiedlich sind.
4. Computerimplementiertes Verfahren (10) zum autorisierten Ausführen einer Software (8) an einem Client (2), insbesondere nach einem der Ansprüche 1 bis 3, wobei die Software (8) eine Vielzahl an Programmabschnitten und eine Vielzahl an
Schutzfunktionen umfasst, wobei jede Schutzfunktion zumindest einem
Programmabschnitt zugeordnet ist, wobei das Verfahren (10) durch jede Schutzfunktion ausgelöst wird, das Verfahren (10) umfasst:
e. Das Auslesen einer für den Client (2) spezifischen Hardware-SoftwareInformation,
f. Das Übermitteln der spezifischen Hardware-Software-Information an einen Aktivierungsserver (3),
g. Das Empfangen eines Lizenzschlüssels, falls eine Lizenz für den Client (2) am Aktivierungsserver (3) vorliegt, oder Empfangen keines oder keines korrekten Lizenzschlüssels anderenfalls, wobei der Lizenzschlüssel durch Verschlüsseln der spezifischen Hardware-Software-Information erlangt wird, und
h. Das Prüfen durch die jeweilige Schutzfunktion, ob der empfangene Lizenzschlüssel korrekt ist, insbesondere der jeweils ausgelesenen spezifischen Hardware-Software-Information entspricht, wobei falls kein korrekter Lizenzschlüssel vorliegt, ein Ablauf der Software (8) gegenüber einem Ablauf der Software (8) beim Vorliegen eines korrekten Lizenzschlüssels
verändert wird.
5. Computerimplementiertes Verfahren (10) nach Anspruch 4, wobei in Schritt h zudem
ein Prozessorregister des Clients (2) an zumindest einer Stelle verändert wird.
6. Computerimplementiertes Verfahren (5, 10) nach einem der Ansprüche 1 bis 5, wobei die Software (8) obfuskiert ist.
7. Computerimplementiertes Verfahren (5, 10) nach Anspruch 6, wobei der zumindest eine Programmabschnitt mit der zumindest einen Schutzfunktion mit einer virtuellen
Maschine virtualisiert ist.
8. Computerimplementiertes Verfahren (5, 10) nach einem der Ansprüche 1 bis 7, wobei die an den Aktivierungsserver (3) übermittelte Hardware-Software-Information zuvor am Client (2) basierend auf einer Hash-Funktion verschlüsselt wird, und wobei nur ein aus der Hash-Funktion resultierender die Hardware-Software-Information
charakterisierender Hash-Wert an den Aktivierungsserver (3) übermittelt wird.
9. Computerimplementiertes Verfahren (5, 10) nach einem der Ansprüche 1 bis 8, wobei
der Lizenzschlüssel basierend auf Pseudo-Zufallszahlen generiert wird.
10. System zur Datenverarbeitung (1) umfassend zumindest einen Client (2) und einen
Aktivierungsserver (3), wobei der Client (2) und der Aktivierungsserver (3) über
zumindest ein Kommunikationsprotokoll derart kommunizieren können, dass durch den Client (2) ein Verfahren (5, 10) nach einem der vorherigen Ansprüche auslösbar
ist.
11. System (1) nach Anspruch 10, wobei der Client (2) und der Aktivierungsserver (3) zueinander korrespondierende Pseudo-Zufallszahlengeneratoren aufweisen, und wobei zur Generierung des Lizenzschlüssels genutzte Pseudo-Zufallszahlen von der jeweiligen Hardware-Software-Information und/oder der jeweiligen Schutzfunktion
abhängen.
12. Computerprogrammprodukt (11), umfassend zumindest einen Programmabschnitt mit einer Schutzfunktion, die bei der Ausführung des Programms durch einen Computer, insbesondere einen Client (2) umfassend zumindest einen Prozessor, diesen
veranlassen, ein Verfahren (5, 10) nach einem der Ansprüche 1 bis 9 auszuführen.
13. Computerlesbares Speichermedium (12), auf dem zumindest ein Programmabschnitt mit einer Schutzfunktion gespeichert ist, die bei der Ausführung durch einen Computer, insbesondere einen Client (2) mit zumindest einem Prozessor, diesen veranlassen, ein
Verfahren (5, 10) nach einem der Ansprüche 1 bis 8 auszuführen.
AT603722020A 2020-12-22 2020-12-22 Computerimplementiertes Verfahren zum autorisierten Ausführen einer Software, System zur Datenverarbeitung, Computerprogrammprodukt und computerlesbares Speichermedium AT524619A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AT603722020A AT524619A1 (de) 2020-12-22 2020-12-22 Computerimplementiertes Verfahren zum autorisierten Ausführen einer Software, System zur Datenverarbeitung, Computerprogrammprodukt und computerlesbares Speichermedium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AT603722020A AT524619A1 (de) 2020-12-22 2020-12-22 Computerimplementiertes Verfahren zum autorisierten Ausführen einer Software, System zur Datenverarbeitung, Computerprogrammprodukt und computerlesbares Speichermedium

Publications (1)

Publication Number Publication Date
AT524619A1 true AT524619A1 (de) 2022-07-15

Family

ID=82399819

Family Applications (1)

Application Number Title Priority Date Filing Date
AT603722020A AT524619A1 (de) 2020-12-22 2020-12-22 Computerimplementiertes Verfahren zum autorisierten Ausführen einer Software, System zur Datenverarbeitung, Computerprogrammprodukt und computerlesbares Speichermedium

Country Status (1)

Country Link
AT (1) AT524619A1 (de)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040059938A1 (en) * 1998-04-29 2004-03-25 Microsoft Corporation Hardware ID to prevent software piracy
EP2515499A1 (de) * 2011-04-21 2012-10-24 Wibu-Systems AG Verfahren zum Erzeugen eines kryptographischen Schlüssels für ein geschütztes digitales Datenobjekt auf Basis von aktuellen Komponenten eines Rechners
US8839451B1 (en) * 2006-08-07 2014-09-16 Moka5, Inc. Activation and security of software
US20140283090A1 (en) * 2013-03-15 2014-09-18 Jupiter Systems Licensing using a node locked virtual machine
EP2998895A1 (de) * 2014-09-22 2016-03-23 Denuvo GmbH Verfahren zur Aktivierung des Nenndurchflusses einer ausführbaren Datei

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040059938A1 (en) * 1998-04-29 2004-03-25 Microsoft Corporation Hardware ID to prevent software piracy
US8839451B1 (en) * 2006-08-07 2014-09-16 Moka5, Inc. Activation and security of software
EP2515499A1 (de) * 2011-04-21 2012-10-24 Wibu-Systems AG Verfahren zum Erzeugen eines kryptographischen Schlüssels für ein geschütztes digitales Datenobjekt auf Basis von aktuellen Komponenten eines Rechners
US20140283090A1 (en) * 2013-03-15 2014-09-18 Jupiter Systems Licensing using a node locked virtual machine
EP2998895A1 (de) * 2014-09-22 2016-03-23 Denuvo GmbH Verfahren zur Aktivierung des Nenndurchflusses einer ausführbaren Datei

Similar Documents

Publication Publication Date Title
DE3689569T2 (de) Verfahren zur Systemdateiensicherung und Datenverarbeitungseinheit zu dessen Durchführung.
DE102008021567B4 (de) Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
DE69837303T2 (de) Informationsverarbeitungsvorrichtung und Verfahren und Aufzeichnungsmedium zum Ausführen mittels öffentlicher Schlüssel verschlüsselter Programme
DE69534757T2 (de) System und Verfahren zur sicheren Speicherung und Verteilung von Daten unter Verwendung digitaler Unterschriften
DE102008006759B4 (de) Prozessor-Anordnung und Verfahren zum Betreiben der Prozessor-Anordnung ohne Verringerung der Gesamtsicherheit
DE60127310T2 (de) Vorrichtung zum schutz digitaler daten
DE60100363T2 (de) Sequenznummerierungsmechanismus zur sicherung der ausführungsordnungs-integrietät von untereinander abhängigen smart-card anwendungen
EP3629516B1 (de) Dezentralisierte identitätsmanagement-lösung
DE60017438T2 (de) System zur betriebsmittelzugriffsteuerung
WO2022120400A1 (de) Verfahren zum migrieren einer it-anwendung
AT524619A1 (de) Computerimplementiertes Verfahren zum autorisierten Ausführen einer Software, System zur Datenverarbeitung, Computerprogrammprodukt und computerlesbares Speichermedium
DE102005046696B4 (de) Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt
EP2491513B1 (de) Verfahren und system zum bereitstellen von edrm-geschützten datenobjekten
EP3798873B1 (de) Verfahren zum schützen einer computer-implementierten anwendung vor manipulation
DE102020206039A1 (de) Erstellen einer Container-Instanz
DE602004001293T2 (de) Programmintegritätsprüfung mittels Statistiken
DE60318407T2 (de) Verfahren und vorrichtung zur automatischen bewertung eines computerprogramms mit kryptografiefunktionen
EP3742319B1 (de) Seitenkanalsichere implementierung
DE10345468B4 (de) Verfahren zur sicheren Ausführung von Programmen
EP4044051A1 (de) Randomisierung eines binärprogrammcodes
DE102015119140A1 (de) Verfahren zum Steuern des Zugriffs auf verschlüsselte Dateien und Computersystem
EP1105798A1 (de) Verfahren, anordnung sowie ein satz mehrerer anordnungen zum schutz mehrerer programme und/oder mehrerer dateien vor einem unbefugten zugriff durch einen prozess
EP4328772A1 (de) Kaskadiert signierbares artefakt einer container-instanz
EP4080847A1 (de) Sicheres verändern von anwendungsdaten in einer blockchain
DE102009040615A1 (de) Verfahren zur digitalen Rechteverwaltung in einem Computernetz mit einer Vielzahl von Teilnehmerrechnern