DE112021005119T5 - Zugriff auf software durch heterogene verschlüsselung - Google Patents

Zugriff auf software durch heterogene verschlüsselung Download PDF

Info

Publication number
DE112021005119T5
DE112021005119T5 DE112021005119.9T DE112021005119T DE112021005119T5 DE 112021005119 T5 DE112021005119 T5 DE 112021005119T5 DE 112021005119 T DE112021005119 T DE 112021005119T DE 112021005119 T5 DE112021005119 T5 DE 112021005119T5
Authority
DE
Germany
Prior art keywords
program
encrypted
payload
heterogeneous
license key
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
DE112021005119.9T
Other languages
English (en)
Inventor
Marco Simioni
Stefano Braghin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112021005119T5 publication Critical patent/DE112021005119T5/de
Pending legal-status Critical Current

Links

Images

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/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • 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/107License processing; Key processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

Eine erste Kopie von heterogenen Programm-Nutzinformationen wird für eine erste Datenverarbeitungseinheit bereitgestellt. Die heterogenen Programm-Nutzinformationen enthalten eine unverschlüsselte Komponente und einen Satz von einer oder mehreren verschlüsselten Komponenten. Der Satz von verschlüsselten Komponenten entspricht einem Satz von einem oder mehreren Programmen. Die unverschlüsselte Komponente der heterogenen Programm-Nutzinformationen umfasst einen Ladeprogrammcode, der konfiguriert ist, um einen ersten Lizenzschlüssel zu empfangen. Der Ladeprogrammcode ist konfiguriert, um in Reaktion auf das Empfangen des ersten Lizenzschlüssels eine Entschlüsselungsaktion an dem Satz von verschlüsselten Komponenten der heterogenen Programm-Nutzinformationen durchzuführen.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung betrifft Zugriff auf Software, insbesondere ein Bereitstellen von Zugriff auf verschiedene Software-Programme durch Verschlüsselung.
  • Software kann durch einen Software-Verteilungsmechanismus wie zum Beispiel physische Kopien oder Netzwerkzugriff auf Software an eine oder mehrere Parteien bereitgestellt werden. Es bleibt ein technisches und Sicherheitsproblem, den Zugriff auf Software nur durch dazu berechtigte Parteien zu kontrollieren.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß Ausführungsformen werden ein Verfahren, ein System und ein Computerprogrammprodukt offenbart.
  • Eine erste Kopie von heterogenen Programm-Nutzinformationen wird für eine erste Datenverarbeitungseinheit bereitgestellt. Die heterogenen Programm-Nutzinformationen enthalten eine unverschlüsselte Komponente und einen Satz von einer oder mehreren verschlüsselten Komponenten. Der Satz von verschlüsselten Komponenten entspricht einem Satz von einem oder mehreren Programmen. Die unverschlüsselte Komponente der heterogenen Programm-Nutzinformationen umfasst einen Ladeprogrammcode, der konfiguriert ist, um einen ersten Lizenzschlüssel zu empfangen. Der Ladeprogrammcode ist konfiguriert, um in Reaktion auf das Empfangen des ersten Lizenzschlüssels eine Entschlüsselungsaktion an dem Satz von verschlüsselten Komponenten der heterogenen Programm-Nutzinformationen durchzuführen.
  • Die oben angegebene Kurzdarstellung ist nicht dazu gedacht, jede veranschaulichte Ausführungsform oder jede Umsetzung der vorliegenden Offenbarung zu beschreiben.
  • Figurenliste
  • Die in der vorliegenden Anmeldung enthaltenen Zeichnungen sind in die Patentschrift integriert und bilden einen Bestandteil von dieser. Sie veranschaulichen Ausführungsformen der vorliegenden Offenbarung und dienen zusammen mit der Beschreibung zum Erklären der Grundgedanken der Offenbarung. Die Zeichnungen dienen nur zur Veranschaulichung von bestimmten Ausführungsformen und schränken die Offenbarung keinesfalls ein.
    • 1 stellt die repräsentativen Hauptkomponenten eines beispielhaften Computersystems dar, das gemäß einigen Ausführungsformen der vorliegenden Offenbarung verwendet werden kann;
    • 2 stellt eine Cloud-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung dar;
    • 3 stellt Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Erfindung dar;
    • 4 stellt ein System für heterogene verschlüsselte Software- (HES) Sicherheit (HESS) dar, um entsprechend einigen Ausführungsformen der Offenbarung ein oder mehrere Programme von Software-Nutzinformationen zu schützen.
    • 5 stellt ein beispielhaftes HES-Verfahren dar, das von einem Client-System ausgeführt wird, das einigen Ausführungsformen der Offenbarung entspricht; und
    • 6 stellt ein beispielhaftes Verfahren zur Erstellung von Komponenten einer HES zum Bereitstellen für ein Client-System dar, das einigen Ausführungsformen der Offenbarung entspricht.
  • Obwohl die Erfindung für verschiedene Modifizierungen und alternative Formen offen ist, wurden Besonderheiten davon als Beispiel in den Zeichnungen gezeigt und werden ausführlich beschrieben. Es sollte jedoch klar sein, dass die Erfindung keinesfalls auf die beschriebenen speziellen Ausführungsformen eingeschränkt werden soll. Die Erfindung soll im Gegenteil alle Modifizierungen, Entsprechungen und Alternativen abdecken, die unter den Erfindungsgedanken und Schutzumfang der Erfindung fallen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Aspekte der vorliegenden Offenbarung betreffen den Zugriff auf Software; speziellere Aspekte betreffen ein Bereitstellen von Zugriff auf verschiedene Software-Programme durch Verschlüsselung. Obwohl die vorliegende Offenbarung nicht notwendigerweise auf derartige Anwendungen beschränkt ist, können verschiedene Aspekte der Offenbarung durch eine Erläuterung von verschiedenen Beispielen unter Verwendung dieses Kontexts gewürdigt werden.
  • Software ist ein Kernbereich von Betriebscomputern. Software kann eine Sammlung von Programmen sein. Jedes Software-Programm kann in der Form von ausführbaren Dateien vorliegen, die konfiguriert sind, um eine Mehrzahl von Operationen für Benutzer durchzuführen. Zum Beispiel kann ein Textverarbeitungsprogramm eine Art von Software sein, die konfiguriert ist, um eine Eingabe von einem Benutzer zu empfangen, um ein Textdokument zu generieren. Software kann in der Form von verschieden konfigurierten Versionen oder Varianten von ausführbarem Code vorliegen, der zum Durchführen von verschiedenen Programmen oder Operationen für Benutzer konfiguriert ist. Zum Beispiel kann ein Bildeditor eine erste Konfiguration umfassen, die eine Untergruppe von 1.110 Funktionen aufweist. Eine zweite Konfiguration des Bildeditors kann einen vollständigen Satz von mehr als 3.000 Funktionen umfassen. Software kann in der Form einer Suite von zusammengehörigen Programmen oder Programmen ohne Zusammenhang vorliegen. Zum Beispiel kann eine Produktivitäts-Suite ein Textverarbeitungsprogramm und ein Präsentationserstellungsprogramm umfassen. Das Textverarbeitungsprogramm kann eine erste Mehrzahl von Funktionen umfassen, die fähig sind, unabhängig voneinander zu arbeiten. Das Präsentationserstellungsprogramm kann eine zweite Mehrzahl von Funktionen umfassen, die fähig sind, unabhängig voneinander zu arbeiten. Sowohl das Textverarbeitungsprogramm als auch das Präsentationserstellungsprogramm können zusätzliche untereinander in Beziehung stehende Funktionen umfassen, wie zum Beispiel die Fähigkeit, Zeichnungen, Text oder andere Elemente zwischen dem Textverarbeitungsprogramm und dem Präsentationserstellungsprogramm zu exportieren oder zu importieren.
  • Die Erstellung von Software ist kostspielig, da zahlreiche Personen an der Erstellung und Wartung von Software beteiligt sein können. Zum Beispiel können sich Entwickler, Techniker, Tester und dergleichen auf die Erstellung und Wartung von Programmen konzentrieren, in einigen Fällen auf Hunderte oder Tausende von Programmen, aus denen sich ein bestimmter Software-Teil zusammensetzt. Die Durchsetzung von Software in ihren verschiedenen Formen ist für Software-Ersteller eine ständige Herausforderung. In einigen Ansätzen wurde versucht, Software zu schützen und Zugriff auf die Unmenge von Funktionen, Komponenten, Programmen, Varianten und anderen Formen von Software bereitzustellen. Die Herausforderung kann sich als kompliziert erweisen, wenn Software-Ersteller versuchen, hochwertige Software zu erstellen und gleichzeitig Zugriff für Clients bereitstellen, die zum Zugriff auf die Software berechtigt sind.
  • Ferner kann die Kontrolle von Software ein signifikantes Sicherheitsproblem sein. Zum Beispiel können Dritte Software manipulieren und in der Lage sein, auf die verschiedenen Programme zuzugreifen, aus denen sich eine bestimmte Software zusammensetzt. Die Manipulation kann bösartig sein, wenn Viren oder Techniken zum Abgreifen von Informationen eingesetzt werden. Das bösartige Manipulieren oder anderer Zugriff auf die Software kann zu einem riesigen technischen Problem werden. Zum Beispiel kann ein bösartiges Manipulieren von Software verursachen, dass die Software nicht mehr erfolgreich arbeitet oder ein Datenverlust verursacht wird.
  • Ein Ansatz zum Schützen von Software besteht darin, eine eindeutige Version einer Binärdatei für jeden Käufer von Software zu generieren. Insbesondere kann ein Software-Anbieter eine erste ausführbare Software für einen ersten Client der Software kompilieren, erstellen oder anderweitig generieren. Der Software-Anbieter kann ferner eine zweite ausführbare Software für einen zweiten Client der Software generieren. Ein Generieren von benutzerdefinierten Versionen von Software für jeden Benutzer kann Nachteile aufweisen. Zum Beispiel kann jede erstellte Version dadurch zu Komplexität führen, dass jede Version doppelte Zeilen von Code oder zusätzliche Logik umfassen kann. Die zusätzliche Komplexität kann ferner den Arbeitsspeicherbedarf erhöhen oder zu mehr Verarbeitungszyklen führen, die zum erfolgreichen Ausführen der Software erforderlich sind. Wenn nur ein oder zwei verschiedene Clients eine Software-Version wünschen, wäre es möglich, benutzerdefinierte Versionen der Software zu erstellen. Es kann jedoch schnell undurchführbar oder unmöglich werden, für jeden Benutzer eine Software-Version zu erstellen, da die Anzahl von Software-Benutzern mehr als zehn oder Hunderte oder mehr betragen kann. Ferner kann es durch die benutzerdefinierten Anpassungen und Versionsaktualisierungen der Software schnell ziemlich mühsam werden, die Software zu warten. Zum Beispiel können einige Clients verschiedene Aktualisierungen verlangen, und wenn Bugs gefunden werden, muss die Software möglicherweise aktualisiert werden. Statt einer Aktualisierung einer einzelnen Sammlung von Software muss möglicherweise jede Software-Version für jeden Client gewartet werden. Außerdem kann zusätzlicher Arbeitsspeicher und zusätzliche Verarbeitungsleistung in Anspruch genommen werden, um jede Version einer Software-Sammlung zu generieren und jede Software-Version erfolgreich zu testen und zu debuggen.
  • Ein weiterer Ansatz zum Schützen von Software besteht in einer Software-Verteilung auf Grundlage einer Lizenz-Zeichenfolge. Bei der Software-Verteilung auf Grundlage einer Lizenz-Zeichenfolge generiert ein Ersteller der Software eine unverschlüsselte Zeichenfolge (z.B. eine Schlüsselzeichenfolge; eine Reihe von Buchstaben, Zahlen und Symbolen; eine Lizenzdatei) für jeden Client der Software. Insbesondere kann die Software mit jeder Version, Komponente, Funktion oder anderen relevanten Variante, die zu Nutzinformationen gebündelt sind (z.B. eine verteilbare Version der Software) ausgeliefert werden. Die Software kann auch die Fähigkeit umfassen, die Lizenz-Zeichenfolge zu akzeptieren, die Werte der Lizenz-Zeichenfolge zu lesen und die verschiedenen Varianten der Software zu bestimmen, auf die durch den Client zugegriffen werden darf. Zum Beispiel kann ein erster Benutzer eine erste Lizenz-Zeichenfolge haben, die Zugriff auf eine erste Variante der Software erlaubt, wie beispielweise die Funktionen zwei, fünf und sieben von zwölf möglichen Varianten. In einem weiteren Beispiel kann ein zweiter Benutzer eine zweite Lizenz-Zeichenfolge haben, die Zugriff auf eine zweite Variante der Software erlaubt, wie beispielweise die Funktionen eins, zwei, drei, fünf und sieben von zwölf möglichen Varianten.
  • Jede Lizenz-Zeichenfolge kann eine oder mehrere eingebettete Eigenschaften, Zeichen, Werte oder andere relevante Attribute umfassen. Die eingebetteten Attribute können den verschiedenen Varianten der Software entsprechen. Zum Beispiel kann ein erstes Attribut in der Lizenz-Zeichenfolge einer ersten Software-Variante entsprechen, und ein zweites Attribut in der Lizenz-Zeichenfolge kann einer zweiten Software-Variante entsprechen. Die Software kann Logik oder Code umfassen, die konfiguriert sind, um die Lizenz-Zeichenfolge zu akzeptieren, die verschiedenen Attribute zu lesen und zu verarbeiten, und in Reaktion darauf Zugriff auf die Varianten der Software zu gewähren.
  • Der Ansatz auf Grundlage der Lizenz-Zeichenfolge kann zusätzliche Nachteile haben. Die Software kann einem Debugging oder anderen Angriffen zum Bestimmen der Attribute der Lizenz-Zeichenfolge unterzogen werden. Zum Beispiel kann ein bösartiger Dritter die Software in einem Debugger ausführen, und während der Laufzeit kann die Software überwacht werden. Die Logik in der Software, die den Zugriff auf die verschiedenen Komponenten, Funktionen, Konfigurationen oder Programme der Software steuert, kann überwacht werden, um zu bestimmen, welches bestimmte Kennzeichen, welcher Schlüssel, welches Attribut oder welcher Wert für die verschiedenen Konfigurationen zuständig ist oder diesen entspricht. Zum Beispiel kann ein bösartiger Dritter die Programmausführung der Software überwachen und bestimmen, dass ein Attribut an der vierten Position einer Lizenz-Zeichenfolge der Fähigkeit entspricht, die Berechtigung zum Ausführen eines ersten Programms der Software zu erteilen. Der Ansatz auf Grundlage der Lizenz-Zeichenfolge kann auch zurückentwickelt (reverse engineered) werden. Zum Beispiel kann ein bösartiger Dritter die Software dekompilieren und kann aus dem dekompilierten Quellcode die Logik des Programms zur Zugriffssteuerung in der Software bestimmen. In einem weiteren Beispiel kann ein bösartiger Dritter einen Arbeitsspeicherbereich der Software überwachen, wenn sie von einem Prozessor ausgeführt wird. Beim Überwachen der Arbeitsspeicherbereiche kann der bösartige Dritte in der Lage sein, die verschiedenen Attribute zu bestimmen, die einem Zugriff auf verschiedene Programme der Software entsprechen. Sobald die verschiedenen Attribute des Werts bestimmt sind, können diese Varianten problemlos zusammen mit anderen Parteien genutzt oder an sie verteilt werden. Zum Beispiel kann ein bösartiger Dritter im Internet eine Lizenz-Zeichenfolge mit Werten, die Zugriff auf jedes Programm der Software gewähren, mit anderen teilen.
  • Ein weiterer Nachteil ist, dass durch die Dekompilierung oder andere bösartige Techniken die Möglichkeit gegeben sein kann, die verschiedenen Komponenten oder Programme zu identifizieren, die zugriffsgesteuert sind, und sie zur Verwendung zu extrahieren. Zum Beispiel kann ein bösartiger Dritter eine Dekonstruktionstechnik durchführen, um die verschiedenen Programme, aus denen sich die Software zusammensetzt, abzurufen oder auf sie zuzugreifen. Sobald der bösartige Dritte Zugriff auf die verschiedenen Programme hat, kann der Dritte eine neue Version der Software neu kompilieren oder erstellen, die keine Zugriffssteuerungslogik auf Grundlage einer Lizenz-Zeichenfolge hat. Diese neue Version der Software kann durch den bösartigen Dritten ohne Lizenz-Zeichenfolge oder eine andere Zugriffssteuerung ausgeführt werden.
  • Software-Ersteller können versuchen, diese bösartigen Techniken schwieriger zu gestalten. Zum Beispiel können Software-Ersteller versuchen, kompliziertere Algorithmen zu erstellen, die verschiedene Schritte durchführen, um eine Beobachtung oder ein Abfangen der Programme zu verschleiern oder schwieriger zu gestalten, die Zugriff auf die verschiedenen Komponenten der Software gewähren. Die komplizierteren Algorithmen können nur unter bestimmten Umständen erfolgreich sein. Zum Beispiel können die komplizierteren Algorithmen der Zugriffssteuerungsprogramme die Verwendung von großen Mengen von Arbeitsspeicher oder viele Verarbeitungszyklen umfassen. Diese können nur auf Computern mit großen Mengen von Arbeitsspeicher von Nutzen sein, wie beispielsweise Mainframe-Server oder Supercomputer. Software wird in zunehmendem Maße auf Computern mit begrenzteren Ressourcen ausgeführt, die die komplizierten Algorithmen nicht durchführen können. Zum Beispiel kann ein Smartphone aufgrund von fehlendem Direktzugriffsspeicher (RAM) nicht fähig sein, den komplizierten Algorithmus auszuführen, der der Zugriffssteuerung der anderen Programme der Software zugehörig ist. In einem weiteren Beispiel kann ein eingebetteter Prozessor in einer Einheit des Internet ofThings (loT) fähig sein, die komplizierten Algorithmen nach einer tage- oder wochenlangen Verarbeitung durchzuführen, was den Schutz zur Verwendung auf der loT-Einheit undurchführbar macht.
  • Ein weiterer Ansatz für Software-Schutz kann eine Software-Schutztechnik auf Grundlage eines Netzwerks sein. In der Technik auf Netzwerk-Grundlage verbindet sich die Software über ein Netzwerk (z.B. das Internet) mit einem zentralen Server zur Verifizierung, dass der Client berechtigt ist, mit der Software zu arbeiten. In der Technik auf Netzwerk-Grundlage kann die Software nur arbeiten, wenn sie von dem zentralen Server ein Signal empfängt. Diese Software-Schutztechnik auf Netzwerk-Grundlage weist viele weitere Nachteile auf. Erstens kann die Technik durch Dritte in fälschlicher Weise nachgeahmt werden. Zum Beispiel kann ein bösartiger Dritter den Netzwerkverkehr über eine Kopie der Software überwachen, wenn sie auf einem bestimmten Client ausgeführt wird und mit dem zentralen Server Daten austauscht. Die Signale und anderer relevanter Netzwerkverkehr dazwischen können aufgezeichnet werden, oder die Verifizierungslogik kann durch die Überwachung zurückentwickelt werden. Der bösartige Dritte kann in Reaktion auf die Software ähnliche Signale generieren und der Software in fälschlicher Weise angeben, dass er der zentrale Server ist. Zweitens kann die Technik auf Netzwerk-Grundlage ressourcenintensiv sein. Zum Beispiel kann ein Software-Ersteller bedeutende Ressourcen auf ein Besitzen von und Arbeiten mit verschiedenen Komponenten des zentralen Servers und die Netzwerk-Bandbreite aufwenden, die damit zusammenhängt, den zentralen Server für alle Clients verfügbar zu machen.
  • Drittens kann die Technik auf Netzwerk-Grundlage unzuverlässig sein. Insbesondere aufgrund eines Ausfalls des zentralen Servers oder eines Problems mit der Verfügbarkeit des Netzwerks kann die Fähigkeit eines bestimmten Clients zur Authentifizierung beeinträchtigt sein. Zum Beispiel kann ein Benutzer ein Smartphone und eine Kopie der Software haben; die Kopie der Software kann konfiguriert sein, um mit dem zentralen Server Daten auszutauschen, um den Schutz der Software zu verifizieren, die ausgeführt werden soll. Wenn das Smartphone die Verbindung zum Netzwerk verliert, selbst wenn dies aus Versehen geschieht, kann die Kopie der Software nicht mehr ausgeführt werden, da die Zugriffssteuerung nicht mehr verfügbar ist. Viertens kann eine Technik auf Netzwerk-Grundlage in einigen praktischen Fällen technisch nicht möglich sein. Insbesondere können einige Clients der Software mit Computern arbeiten, die ein Air-Gap-System sind. Ein Air-Gap-System kann ein System sein, das nicht in Datenaustausch mit irgendwelchen anderen Computern verbunden ist. Für einen bestimmten Client kann ein Air-Gap-System erforderlich sein. Zum Beispiel kann ein Client für einen höheren Schutz mit einem System in einer bestimmten Branche arbeiten (z.B. Finanz-, Gesundheits-, Verteidigungswesen), für das eine Sicherheits- oder Datenschutzanforderung vorliegt. Der Client kann für einen sicheren Betrieb nicht in Datenaustausch mit irgendwelchen anderen Computern verbunden sein und kann eine Verarbeitung ohne eine Netzwerkverbindung durchführen. Ohne eine Netzwerkverbindung kann eine Technik auf Netzwerk-Grundlage ein oder mehrere Programme nicht erfolgreich verifizieren, und die Software kann nicht funktionsfähig sein.
  • Eine heterogene Sicherheit von verschlüsselter Software (HESS) kann mit einem oder mehreren Vorteilen und Funktionen im Vergleich mit anderen Formen von Software-Schutz durchgeführt werden. Die HESS kann teilweise durch Verschlüsseln von einem oder mehreren Programmen, die Software bilden, in einen Satz von einer oder mehreren verschlüsselten Komponenten arbeiten; der Satz von einer oder mehreren verschlüsselten Komponenten kann mit einer unverschlüsselten Komponente kombiniert werden, um heterogene Programm-Nutzinformationen zu bilden. Zum Beispiel können Programme eine oder mehrere Dateien von Programmcode sein, wie zum Beispiel aus einer interpretierten Sprache, die in einem oder mehreren Ordnern angeordnet und in ein Programmpaket komprimiert sind (z.B. Java-Programmcode in einer JAR-Datei). In einem weiteren Beispiel kann bzw. können eine oder mehrere Quellcode-Dateien, wie zum Beispiel aus einer kompilierten Sprache, zusammen in eine Reihe von Binärwerten einer ausführbaren Programmdatei kompiliert werden. In jedem Beispiel kann ein Teil der Programme, aus denen sich die Nutzinformationen zusammensetzen, mit einem ersten Verschlüsselungsprozess verschlüsselt werden. Zum Beispiel könnten Teile der Nutzinformationen mit symmetrischen Verschlüsselungsalgorithmen verschlüsselt werden, wie zum Beispiel AES-128 oder größere Schlüssellänge, oder mit asymmetrischen Verschlüsselungsalgorithmen wie beispielweise RSA-2048 oder ECDSA-224 oder größere Schlüssellänge, oder mit Verschlüsselungsschemas auf Attributgrundlage (KP-ABE) oder einem KP-ABE mit konstanter Chiffriertextgröße.
  • Bei der Verschlüsselung können die heterogenen Programm-Nutzinformationen einen Satz von einer oder mehreren verschlüsselten Komponenten haben, die dem einen oder den mehreren Programmen entspricht oder entsprechen. Der Verschlüsselungsprozess kann nur an einen Teil der Komponenten gerichtet sein (z.B. den Satz von einem oder mehreren Programmen). Insbesondere kann ein anderes Programm bzw. können andere Programm in den heterogenen Programm-Nutzinformationen unverschlüsselt bleiben. In einigen Ausführungsformen kann ein Programm wie zum Beispiel ein Ladeprogramm eine unverschlüsselte Komponente der heterogenen Programm-Nutzinformationen bleiben. Zum Beispiel können ein Programm und alle zugehörigen oder unterstützten Bibliotheken oder Laufzeiten eine Reihe von unverschlüsselten Bits in einer ausführbaren Binärdatei bleiben; die ausführbare Datei kann auch eine Reihe von verschlüsselten Bits umfassen, die den Satz von verschlüsselten Komponenten umfassen. In einem weiteren Beispiel kann ein verteilbares Programm, wie zum Beispiel eine JAR-Datei, eine oder mehrere Code-Dateien und Ordner haben, die dem unverschlüsselten Teil der heterogenen Programm-Nutzinformationen entsprechen.
  • Die heterogenen Programm-Nutzinformationen der HESS können in Verbindung mit einem Schlüssel wie zum Beispiel einem Lizenzschlüssel arbeiten. Im Detail können die heterogenen Programm-Nutzinformationen zusammen mit oder getrennt von einem Schlüssel auf ein oder mehrere Datenverarbeitungssysteme verteilt werden. In einigen Ausführungsformen kann der HESS in der Form der heterogenen Programm-Nutzinformationen und einer Mehrzahl von Schlüsseln vorliegen. Insbesondere kann ein Schlüssel für jede potenzielle Client-Maschine generiert werden, die konfiguriert ist, um mit einer Kopie der heterogenen Programm-Nutzinformationen zu arbeiten. Jeder Schlüssel kann ein oder mehrere verschlüsselte Programmattribute umfassen, das bzw. die den verschiedenen Programmen in den heterogenen Programm-Nutzinformationen entspricht bzw. entsprechen. Zum Beispiel kann ein erster Schlüssel dreißig alphanumerische Zeichen umfassen, die eine verschlüsselte Form von Attributen sind. Die verschlüsselten Programmattribute können ein oder mehrere Buchstaben, Zeichen, Symbole und dergleichen sein, die eine verschlüsselte Form der Programmattribute darstellen, die eine Berechtigung für den Zugriff auf eine Untergruppe des Satzes von Programmen erteilen, die in dem Satz von verschlüsselten Komponenten verschlüsselt sind.
  • Jeder Schlüssel kann sich von jedem anderen Schlüssel unterscheiden. Insbesondere kann jeder Schlüssel der HESS auf eine Weise aufgebaut sein, dass der Satz von einem oder mehreren verschlüsselten Programmattributen für jeden Schlüssel verschieden ist. Anders ausgedrückt, zwei Schlüssel, die dieselben Berechtigungen für die heterogenen Programm-Nutzinformationen erteilen, nutzen keine gemeinsamen verschlüsselten Programmattribute. Zum Beispiel kann ein erster Schlüssel ein oder mehrere Programmattribute umfassen, das bzw. die einen Betrieb von nur einem ersten Programm des Satzes von Programmen von heterogenen-Programm-Nutzinformationen erlaubt bzw. erlauben. Ein zweiter Schlüssel kann dasselbe eine oder dieselben mehreren Programmattribute umfassen, das bzw. die auch die Bedienung nur des ersten Programms erlaubt bzw. erlauben. Der erste Schlüssel kann so verschlüsselt werden, dass ein oder mehrere Programmattribute in der Form eines ersten Satzes des einen oder der mehreren verschlüsselten Programmattribute vorliegt bzw. vorliegen. Der zweite Schlüssel kann ebenfalls so verschlüsselt werden, dass das eine oder die mehreren Programmattribute auch in der Form von verschlüsselten Programmattributen vorliegt bzw. vorliegen, aber die Form eines zweiten Satzes von einem oder mehreren verschlüsselten Programmattribute hat bzw. haben. Durch Sichtprüfung ist eine Bestimmung der Programmattribute möglicherweise nicht bestimmbar, erkennbar oder anderweitig feststellbar, da nur die verschlüsselten Programmattribute beobachtbar sind.
  • Die unverschlüsselte Komponente der heterogenen Programm-Nutzinformationen kann Code enthalten, der konfiguriert ist, um mit dem Satz von verschlüsselten Komponenten, die den Rest der Nutzinformationen bilden, zu arbeiten und zu diesem Zugang bereitzustellen. Insbesondere kann die unverschlüsselte Komponente der heterogenen Programm-Nutzinformationen als Ladeprogramm-Code (,Loader') konfiguriert sein. Der Loader der heterogenen Programm-Nutzinformationen des HESS kann konfiguriert werden, um den Schlüssel zu empfangen und eine oder mehrere Entschlüsselungstechniken durchzuführen. Die Entschlüsselungstechniken der heterogenen Programm-Nutzinformationen können selbstentschlüsselnde Techniken sein. Insbesondere kann das Ladeprogramm der heterogenen Programm-Nutzinformationen konfiguriert sein, um einen oder mehrere Befehle zu akzeptieren, die an den Satz von verschlüsselten Komponenten gerichtet sind. Zum Beispiel kann ein Benutzer eine Anforderung initiieren, eine Ausführung eines ersten Programms durchzuführen, das in einer ersten verschlüsselten Komponente der einen oder der mehreren Komponenten verschlüsselt ist. Der Benutzer kann durch Bereitstellen einer Eingabe arbeiten, um eine Operation des Programms für den Loader durchzuführen. Zum Beispiel kann die HESS konfiguriert sein, um eine Produktivitäts-Suite zu schützen, die in der Form von Software vorliegt, die einen Satz von verschlüsselten Komponenten umfasst, die ein Text-Editorprogramm und ein Bild-Editorprogramm umfassen. Der Benutzer kann mit der Operation der HESS beginnen, indem er einen Befehl zum Ausführen des Text-Editorprogramms an den Loader sendet.
  • Der Ladeprogramm-Code kann konfiguriert werden, um den Schlüssel zu empfangen und eine Entschlüsselungsaktion an der ersten verschlüsselten Komponente durchzuführen. Im Detail kann der Loader konfiguriert sein, um einen Schlüssel zu empfangen, eine Entschlüsselungsaktion an dem Schlüssel durchzuführen und die Gültigkeit des Schlüssels für den Zugriff auf das Programm zu bestimmen, das in einer verschlüsselten Komponente der heterogenen Programm-Nutzinformationen gespeichert ist. Wenn zum Beispiel der Schlüssel ein verschlüsseltes Programmattribut enthält, das bei Entschlüsselung durch den Loader ein Programmattribut enthält, das einem angeforderten Programm entspricht, kann der Loader konfiguriert werden, um das Programm zu entschlüsseln und das Programm zur Ausführung in einen primären Arbeitsspeicher zu laden. Wenn in einem weiteren Beispiel der Schlüssel ein verschlüsseltes Programmattribut enthält, das bei Entschlüsselung durch den Loader kein Programmattribut enthält, das einem angeforderten Programm entspricht, kann der Loader so konfiguriert werden, dass er die Ausführung einer verschlüsselten Komponente verweigert, die das Programm enthält.
  • Die heterogenen Programm-Nutzinformationen können für andere Formen einer Schlüssel- und Ausführungsdatei-Verteilung technisch von Vorteil sein. Insbesondere die Werte der Schlüssel der HESS können bösartigen Angriffen gegenüber resistent sein. Erstens kann die HESS nur mit Schlüsseln arbeiten, die verschlüsselte Programmattribute umfassen, wogegen Techniken auf Grundlage einer Lizenz-Zeichenfolge mit unverschlüsselten Werten arbeiten können. Ein bösartiger Dritter ist möglicherweise nicht in der Lage, ein oder mehrere Programmattribute zu lesen, das bzw. die in den verschlüsselten Programmattributen des Schlüssels verschlüsselt ist bzw. sind. Der Loader kann konfiguriert werden, nur ein bestimmtes Programm zu entschlüsseln, das einem verschlüsselten Programmattribut entspricht, ohne dazu speziell ein unverschlüsseltes Programmattribut zu generieren. Zum Beispiel kann der Loader arbeiten, indem als programmatische Eingabe nur der Schlüssel und die Anforderung zur Ausführung eines ersten Programms in der Form einer Anweisung zur Programmausführung des ersten Programms angenommen wird. Die Ausgabe des Loaders kann nur die Ausführung des ersten Programms sein, kann aber möglicherweise das unverschlüsselte Programmattribut nicht umfassen, das dem ersten Programm entspricht.
  • Zweitens kann der Loader mit reduzierten Ressourcen gegenüber anderen Techniken arbeiten. Insbesondere kann eine einfachere Form von Berechnungen und Entschlüsselungs-Algorithmen durch andere Techniken als den Loader durchgeführt werden, wie zum Beispiel Sicherheitstechniken auf Grundlage von Lizenz-Zeichenfolgen. Zum Beispiel können die Entschlüsselungstechniken auf einem komplexen Satz von Prozessen oder einem dedizierten Satz von Schaltungen oder verschlüsselten Elementen beruhen. Die spezialisierten Entschlüsselungsprozesse oder andere Techniken können auf nur ein Smartphone oder eine andere tragbare Datenverarbeitungseinheit begrenzt sein, die über die spezifische Hardware oder eine signifikante Verarbeitungsleistung verfügt. Umgekehrt kann der Entschlüsselungsprozess des Loaders ein Prozess sein, der mit Einsatz von relativ wenigen Ressourcen arbeitet - wie zum Beispiel ein Computerprozess, der nur ein paar Kilobyte des primären Arbeitsspeicher verwendet und nur durch Verwenden von ein paar Dutzend Verarbeitungszyklen ausgeführt wird.
  • Drittens kann die HESS eine Entschlüsselung durchführen, während es gegenüber einer Beobachtung oder einem Debugging durch bösartige Dritte widerstandsfähig ist. Zum Beispiel kann der Ladeprogramm-Code dekompiliert oder debugged werden, aber die Entschlüsselungstechnik des Loaders kann eine sein, die die Programmattribute nicht preisgibt. Der Loader kann arbeiten, indem eine Entschlüsselungsaktion durchgeführt wird, die nicht beobachtbar ist. Zum Beispiel kann der durch das Ladeprogramm entschlüsselte Code immer noch eine Form von verschlüsseltem Code sein, ähnlich dem, was Techniken als „sichere“ oder „geheime“ Code-Ausführung beschrieben haben. In einigen Ausführungsformen könnten homomorphe Verschlüsselungs-Techniken so verwendet werden, dass die verschlüsselten Nutzinformationen immer noch ausgeführt werden, während ein Angreifer trotzdem daran gehindert wird, den Code zu beobachten. In einigen Ausführungsformen können eingeschränkte Operationen möglicherweise beobachtet werden, aber die durch den Loader durchgeführten Operationen dürfen zu keinem Zeitpunkt Zugriff auf die unverschlüsselten Programmattribute darstellen, aufzeigen oder anderweitig erlauben. Zum Beispiel können die Schritte des Ladeprogramms nur einen Zeiger, eine Referenz oder eine andere Angabe eines Abschnitts oder Teils des Satzes von verschlüsselten Komponenten aufzeigen, dürfen aber auf die tatsächlichen Programme, die in den verschlüsselten Komponenten gespeichert sind, weder verweisen, noch diese offenbaren oder anderweitig aufzeigen. In einigen Ausführungsformen kann der Loader-Code keinerlei Logik für eine Zugriffssteuerung umfassen. Der Loader-Code darf keinen Programmcode umfassen, der eine bestimmte Komponente angibt oder auswählt, die entschlüsselt werden soll. In einigen Ausführungsformen kann der Lizenzschlüssel in einer verschlüsselten Form, wie zum Beispiel die verschlüsselten Programmattribute, eine Richtung, einen Zeiger oder einen anderen relevanten Verweis auf ein bestimmtes Programm speichern. Die Operation der Entschlüsselung kann zu dem Zeiger oder dem Verweis, unverschlüsselt aus den verschlüsselten Programmattributen des Lizenzschlüssels, auf die bestimmten Programme führen.
  • Als Ergebnis dessen darf der Loader für die heterogenen Programm-Nutzinformationen niemals eine Kopie aller unverschlüsselten Programme oder jeder Zugriffssteuerung oder aller Programmattribute preisgeben oder anderweitig in Klartext speichern, die eine Berechtigung für die Programme erteilen, die in den verschlüsselten Komponenten gespeichert sind. Ferner kann der Loader nur einen Teil der verschlüsselten Komponenten entschlüsseln. Zum Beispiel umfassen erste heterogene Programm-Nutzinformationen einen Satz von drei verschlüsselten Komponenten und eine unverschlüsselte Komponente, die den Ladeprogramm-Code für den Satz umfasst. Bei Empfang eines ersten Lizenzschlüssels, der Zugriff auf die erste verschlüsselte Komponente erteilt, darf nur die erste verschlüsselte Komponente in einen sicheren Teil des primären Arbeitsspeichers entschlüsselt werden. Die zweite und die dritte verschlüsselte Komponente dürfen nicht entschlüsselt sein, und bei Empfang nur des ersten Lizenzschlüssels dürfen sie niemals durch den Loader entschlüsselt werden. Dieser differenzierte Entschlüsselungsansatz kann ein unberechtigtes Zugreifen oder eine Modifizierung der anderen verschlüsselten Komponenten verhindern. Infolgedessen, da andere Software-Komponenten niemals entschlüsselt werden oder keinerlei Zugriffssteuerungslogik vorhanden ist, besteht keinerlei Möglichkeit, die Programme, die nicht entschlüsselt werden, zu dekompilieren, zurückzuentwickeln oder anderweitig anzuzeigen oder zu beobachten, um die Programme zu erhalten.
  • Viertens kann die HESS auf einer Air-Gap-Maschine arbeiten. Die heterogenen Programm-Nutzinformationen können teilweise selbstentschlüsselnd sein. Insbesondere kann der Ladeprogramm-Code der heterogenen Programm-Nutzinformationen arbeiten, ohne eine Netzwerkverbindung zu benötigen. Der Loader der heterogenen Programm-Nutzinformationen kann arbeiten ohne mit anderen Computern Daten auszutauschen. Der Loader kann nur mit Zugriff auf eine Eingabe arbeiten, die sich auf Programme (die in dem Satz von verschlüsselten Komponenten gespeichert sind) und Zugriff auf einen Lizenzschlüssel bezieht.
  • Fünftens kann die HESS relativ einfach zu warten sein. Insbesondere können die heterogenen Programm-Nutzinformationen alle Komponenten, Funktionen und andere Programme in einer Vielfalt von Konfigurationen zur Verteilung als einzelne Nutzinformationen enthalten. Zum Beispiel kann ein erster Lizenzschlüssel ein verschlüsseltes Programmattribut umfassen, das nur erlaubt, eine erste verschlüsselte Komponente zu entschlüsseln und auszuführen. In einem weiteren Beispiel kann ein zweiter Lizenzschlüssel eine Mehrzahl von verschlüsselten Programmattributen umfassen, die erlauben, eine Mehrzahl von verschlüsselten Komponenten zu entschlüsseln und auszuführen. Wenn eine neue Version erstellt werden soll, muss der Software-Ersteller möglicherweise nur einzelne heterogene-Programm-Nutzinformationen für jeden bestimmten Client erstellen, und die Vielfalt von Funktionen oder Varianten kann nur durch eine Kombination des Lizenzschlüssels und des Ladeprogramm-Codes gesteuert werden, der in der unverschlüsselten Komponente gespeichert ist.
  • 1 stellt die repräsentativen Hauptkomponenten eines beispielhaften Computersystems 100 (alternativ Computer) dar, die gemäß einigen Ausführungsformen der vorliegenden Offenbarung verwendet werden können. Es versteht sich, dass einzelne Komponenten in Bezug auf Komplexität, Anzahl, Typ und/oder Konfiguration variieren können. Die speziellen offenbarten Beispiele dienen nur zu Beispielzwecken und sind nicht notwendigerweise die einzigen derartigen Variationen. Das Computersystem 100 kann einen Prozessor 110, einen Arbeitsspeicher 120, eine Eingabe/Ausgabe-Schnittstelle (hierin E/A oder E/A-Schnittstelle) 130 und einen Hauptbus 140 umfassen. Der Hauptbus 140 kann Datenübertragungspfade für die anderen Komponenten des Computersystems 100 bereitstellen. In einigen Ausführungsformen kann der Hauptbus 140 mit anderen Komponenten verbunden sein, wie zum Beispiel einem spezialisierten Digitalsignalprozessor (nicht dargestellt).
  • Der Prozessor 110 des Computersystems 100 kann aus einem oder mehreren Kernen 112A, 112B, 112C, 112D bestehen (allgemein 112). Der Prozessor 110 kann zusätzlich einen oder mehrere Arbeitsspeicherpuffer oder Caches (nicht dargestellt) umfassen, die eine temporäre Speicherung von Anweisungen und Daten für die Kerne 112 bereitstellen. Die Kerne können Anweisungen von Eingaben durchführen, die von den Caches oder von dem Arbeitsspeicher 120 bereitgestellt werden, und das Ergebnis an Caches oder den Arbeitsspeicher ausgeben. Die Kerne 112 können aus einer oder mehreren Schaltungen bestehen, die konfiguriert sind, um ein oder mehrere Verfahren durchzuführen, die Ausführungsformen der vorliegenden Offenbarung entsprechen. In einigen Ausführungsformen kann das Computersystem 100 mehrere Prozessoren 110 enthalten. In einigen Ausführungsformen kann das Computersystem 100 ein einzelner Prozessor 110 mit einem einzelnen Kern 112 sein.
  • Der Arbeitsspeicher 120 des Computersystems 100 kann einen Arbeitsspeicher-Controller 122 umfassen. In einigen Ausführungsformen kann der Arbeitsspeicher 120 einen Halbleiter-Arbeitsspeicher mit wahlfreiem Zugriff, eine Speichereinheit oder ein Speichermedium (entweder flüchtig oder nicht flüchtig) zum Speichern von Daten und Programmen umfassen. In einigen Ausführungsformen kann der Arbeitsspeicher in Form von Modulen vorliegen (z.B. doppelreihige Speichermodule). Der Arbeitsspeicher-Controller 122 kann mit dem Prozessor 110 Daten austauschen und Speicherung und Abrufen von Informationen in dem Arbeitsspeicher 120 erleichtern. Der Arbeitsspeicher-Controller 122 kann mit der E/A-Schnittstelle 130 Daten austauschen, wodurch Speicherung und Abrufen von Eingabe oder Ausgabe in dem Arbeitsspeicher 120 erleichtert werden.
  • Die E/A-Schnittstelle 130 kann einen E/A-Bus 150, eine Endgeräteschnittstelle 152, eine Speicherschnittstelle 154, eine E/A-Einheitenschnittstelle 156 und eine Netzwerkschnittstelle 158 umfassen. Die E/A-Schnittstelle 130 kann den Hauptbus 140 mit dem E/A-Bus 150 verbinden. Die E/A-Schnittstelle 130 kann Anweisungen und Daten von dem Prozessor 110 und dem Arbeitsspeicher 120 an die verschiedenen Schnittstellen des E/A-Busses 150 leiten. Die E/A-Schnittstelle 130 kann auch Anweisungen und Daten von den verschiedenen Schnittstellen des E/A-Busses 150 an den Prozessor 110 und den Arbeitsspeicher 120 leiten. Die verschiedenen Schnittstellen können die Endgeräteschnittstelle 152, die Speicherschnittstelle 154, die E/A-Einheitenschnittstelle 156 und die Netzwerkschnittstelle 158 umfassen. In einigen Ausführungsformen können die verschiedenen Schnittstellen eine Untergruppe der vorgenannten Schnittstellen umfassen (z.B. kann ein eingebettetes Computersystem in einer industriellen Anwendung die Endgeräteschnittstelle 152 und die Speicherschnittstelle 154 nicht umfassen).
  • Logikmodule in dem gesamten Computersystem 100 - einschließlich des Arbeitsspeichers 120, des Prozessors 110 und der E/A-Schnittstelle 130, jedoch nicht darauf beschränkt - können Fehler und Änderungen an einer oder mehreren Komponenten an einen Hypervisor oder ein Betriebssystem (nicht dargestellt) übermitteln. Der Hypervisor oder das Betriebssystem können die verschiedenen in dem Computersystem 100 verfügbaren Ressourcen zuweisen und den Speicherplatz von Daten im Arbeitsspeicher 120 und von Prozessen verfolgen, die verschiedenen Kernen 112 zugewiesen sind. In Ausführungsformen, die Elemente kombinieren oder neu anordnen, können Aspekte und Funktionen der Logikmodule kombiniert oder neu verteilt werden. Diese Variationen dürften für einen Fachmann offenkundig sein.
  • Obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud Computing enthält, sollte klar sein, dass die Umsetzung der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jedem beliebigen Typ von jetzt bekannter oder später entwickelter Datenverarbeitungsumgebung umgesetzt werden. Cloud Computing ist ein Dienstbereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Nutzungsmodelle umfassen.
  • Die Eigenschaften sind wie folgt:
  • On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter des Dienstes erforderlich ist.
  • Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
  • Resource Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
  • Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt, und sie können jederzeit in jeder beliebigen Menge gekauft werden.
  • Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Der Ressourcen-Verbrauch kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Die Dienstmodelle sind wie folgt:
  • Software as a Service (SaaS): Die für den Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. eine auf dem Web beruhende eMail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
  • Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen des Application Hosting Environment.
  • Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, Verarbeitung, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Die Nutzungsmodelle sind wie folgt:
  • Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann von der Organisation oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb von Geschäftsräumen vorhanden sein.
  • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine bestimmte Community, die gemeinsame Problemstellungen hat (z.B. Berücksichtigung von Zielsetzung, Sicherheitsanforderungen, Richtlinien und Konformität). Sie kann von den Organisationen oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein.
  • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und gehört einer Organisation, die Cloud-Dienste verkauft.
  • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die eine Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert, wobei der Schwerpunkt auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt von Cloud Computing steht eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten enthält.
  • Unter folgender Bezugnahme auf 2 wird eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt, enthält die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10, mit denen lokale Datenverarbeitungseinheiten, die von Nutzern der Cloud verwendet werden, wie beispielsweise Personal Digital Assistant (PDA) oder Mobiltelefon 54A, Desktop-Computer 54B, Laptop-Computer 54C und/oder Fahrzeug-Computersystem 54N, Daten austauschen können. Die Knoten 10 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken gruppiert sein (nicht gezeigt), wie beispielsweise Private, Community, Public oder Hybrid Cloud, wie hierin oben beschrieben, oder in einer Kombination davon. Damit hat die Cloud-Computing-Umgebung 50 die Möglichkeit, eine Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keinerlei Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sollte klar sein, dass die in 2 gezeigten Typen von Datenverarbeitungseinheiten 54A bis N nur zur Veranschaulichung dienen sollen, und dass die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 mit jedem Typ einer computerisierten Einheit über jeden Typ von Netzwerk und/oder eine über ein Netzwerk adressierbare Verbindung (z.B. unter Verwendung eines Web-Browsers) Daten austauschen können.
  • Unter folgender Bezugnahme auf 3 wird ein Satz von funktionalen Abstraktionsschichten gezeigt, die von der Cloud Computing-Umgebung 50 (2) bereitgestellt werden. Dabei sollte von Anfang an klar sein, dass die in 3 gezeigten Komponenten, Schichten und Funktionen lediglich zur Veranschaulichung dienen sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Software-Schicht 60 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten zählen: Mainframes 61; Server auf Grundlage einer RISC- (Reduced Instruction Set Computer) Architektur 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke und vernetzte Komponenten 66. In einigen Ausführungsformen enthalten Software-Komponenten Software für Netzwerkanwendungsserver 67 und Datenbank-Software 68. Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, von der aus die folgenden beispielhaften virtuellen Entitäten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, einschließlich virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann eine Verwaltungsschicht 80 die im Folgenden beschriebenen Funktionen bereitstellen. Eine Ressourcenbereitstellung 81 sorgt für eine dynamische Beschaffung von Datenverarbeitungsressourcen und weiteren Ressourcen, die zum Ausführen von Aufgaben innerhalb der Cloud-Computing-Umgebung eingesetzt werden. Messung und Preisbestimmung 82 ermöglichen beim Einsatz von Ressourcen innerhalb der Cloud-Computing-Umgebung eine Kostenverfolgung und eine Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware umfassen. Eine Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Nutzer und -Aufgaben sowie einen Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt den Zugang zur Cloud-Computing-Umgebung für Nutzer und Systemadministratoren bereit. Eine Service-Level- (Dienstgüte) Verwaltung 84 sorgt für Zuweisung und Verwaltung von Cloud-Computing-Ressourcen, sodass erforderliche Service-Levels eingehalten werden. Planung und Vertragserfüllung des Service Level Agreement (SLA) (Dienstgütevereinbarung) 85 stellen eine Vorab-Vereinbarung für und Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß eines SLA eine zukünftige Anforderung erwartet wird.
  • Eine Arbeitslastenschicht 90 stellt Beispiele für eine Funktionalität bereit, für welche die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, zählen: Zuordnung und Navigation 91; Software-Entwicklung und Lifecycle-Management 92; Bereitstellung von virtuellen Schulungen 93; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95; und eine HESS 96.
  • 4 stellt ein System 400 für heterogene verschlüsselter Software-Sicherheit (HESS) dar, um entsprechend einigen Ausführungsformen der Offenbarung ein oder mehrere Programme von Software-Nutzinformationen zu schützen. Das System 400 kann eine oder mehrere Komponenten einer Datenverarbeitungseinheit sein, die eine Operation einer sicheren Software-Ausführung durchführt bzw. durchführen. Die Datenverarbeitungseinheit kann eine Client-Einheit wie beispielsweise der Computer 100 sein. Das System 400 kann eine Mehrzahl von Hardware umfassen, einschließlich des Folgenden: ein Prozessor 410, ein sekundärer Arbeitsspeicher 420 und ein primärer Arbeitsspeicher 430. Das System 400 kann auch einen Eingang (nicht dargestellt) umfassen, um Befehle zum Durchführen einer Ausführung durch den Prozessor 410 zu empfangen. Zum Beispiel Empfangen eines Befehls von einem ersten Programm oder einem Benutzer, um andere Programme oder Subroutinen auszuführen.
  • Der sekundäre Arbeitsspeicher 420 kann das Speichern oder die Beibehaltung (entweder temporär oder dauerhafter) von Programmen und ausführbarem Code zum Bereitstellen für den Prozessor 410 und den primären Arbeitsspeicher 430 erleichtern. In einem ersten Beispiel kann der sekundäre Arbeitsspeicher 420 eine Speichereinheit sein, wie zum Beispiel ein Festplattenlaufwerk oder eine Solid-State-Speichereinheit oder eine andere Computerkomponente, die zum Speichern von einem oder mehreren Bits von Daten konfiguriert ist. Unter Fortsetzung des ersten Beispiels kann der primäre Arbeitsspeicher 430 ein Direktzugriffsspeicher (RAM) sein und kann Daten von dem sekundären Arbeitsspeicher 420 empfangen. In einem zweiten Beispiel kann der sekundäre Arbeitsspeicher 420 ein RAM sein, und der primäre Arbeitsspeicher 430 kann ein oder mehrere Register oder Caches des Prozessors 410 sein.
  • Das System 400 kann konfiguriert werden, um geschützte Software zu empfangen und auszuführen. Insbesondere kann das System 400 konfiguriert sein, um einen Lizenzschlüssel (Schlüssel) 440 und eine Kopie von heterogenen Programm-Nutzinformationen (Nutzinformationen) 450 zu empfangen. Die Nutzinformationen 450 können durch eine separate Datenverarbeitungseinheit bereitgestellt werden, wie zum Beispiel einen Server oder die Cloud-Computing-Umgebung 50. Die Nutzinformationen 450 können durch die separate Datenverarbeitungseinheit generiert werden, bevor sie für das System 400 bereitgestellt werden. Der Schlüssel 440 kann ebenfalls durch eine separate Datenverarbeitungseinheit generiert werden, bevor er von dem System 400 empfangen wird. Der Schlüssel 440 und die Nutzinformationen 450 können in dem sekundären Speicher 420 des Systems 400 gespeichert werden. Der Schlüssel 440 kann einen Satz von einem oder mehreren verschlüsselten Programmattributen 442-1 und 442-2 (allgemein 442) umfassen. Der Satz von verschlüsselten Programmattributen 442 kann eine verschlüsselte Reihe von Zeichen sein, die einen Satz von einem oder mehreren Programmattributen enthalten (nicht dargestellt). Der Satz von Programmattributen kann aus Verweisen, Zeigern oder anderen relevanten Programmwerten bestehen. Die Nutzinformationen 450 können eine unverschlüsselte Komponente 452 und einen Satz von einer oder mehreren verschlüsselten Komponenten 454-1, 454-2 bis 454-N umfassen (allgemein 454). Die Nutzinformationen 450 können eine ausführbare Datei oder ein ausführbares Archiv sein. Zum Beispiel können die Nutzinformationen 450 eine Binärdatei sein, die durch den Prozessor 410 des Systems 400 ausführbar ist. In einem weiteren Beispiel können die Nutzinformationen 450 ein ausführbares Archiv sein, das eine Mehrzahl von Dateien und Ordnern (nicht dargestellt) zur Ausführung durch den Prozessor 410 umfasst.
  • Die unverschlüsselte Komponente 452 kann in Reaktion auf eine bzw. einen oder mehrere Befehle, Eingaben, Anforderungen und dergleichen ausführbar sein. Im Detail kann die unverschlüsselte Komponente 452 als ein Ladeprogramm-Code (Loader) konfiguriert sein, der konfiguriert ist, um Programm-Ausführungsanforderungen zu empfangen. Der Loader 452 kann konfiguriert werden um andere Teile der Nutzinformationen 450 auszuführen. Der Loader 452 kann zum Beispiel andere Laufzeiten, Bibliotheken, Code-Objekte und dergleichen laden, die unverschlüsselt sind. Der Loader 452 kann konfiguriert werden um unter gewissen Bedingungen andere Teile der Nutzinformationen 450 auszuführen. Insbesondere kann der Loader 452 eine oder mehrere der verschlüsselten Komponenten 454 nur indirekt laden oder ausführen. Insbesondere kann der Loader 452 nur eine einzelne verschlüsselte Komponente des Satzes von verschlüsselten Komponenten 454 entschlüsseln, und nach einer erfolgreichen Entschlüsselung kann eine jetzt entschlüsselte Komponente des Satzes von verschlüsselten Komponenten 454 automatisch starten. Ferner, und für eine erhöhte Sicherheit, können nur bestimmte verschlüsselte Komponenten 454 jemals entschlüsselt werden, und einige verschlüsselte Komponenten 454 können niemals abhängig von dem Schlüssel 440 entschlüsselt werden. Zum Beispiel wird kein Programm, keine Komponente oder keine Funktion (die in einer bestimmten verschlüsselten Komponente 454 gespeichert sind), für die nicht angegeben ist, dass sie ausgeführt werden sollen, durch die unverschlüsselte Komponente 452 entschlüsselt. In einem weiteren Beispiel könnte kein Programm, keine Komponente oder keine Funktion (die in einer bestimmten verschlüsselten Komponente 454 gespeichert sind), die keine entsprechende verschlüsselte Berechtigung 442 in einem bestimmten Schlüssel 440 aufweisen, jemals durch die unverschlüsselte Komponente 452 entschlüsselt werden. Unter einigen Umständen könnten andere Systeme oder andere Schlüssel (die von dem Schlüssel 440 verschieden sind), mit einem verschiedenen Satz von verschlüsselten Attributen bereitgestellt werden. Der verschiedene Satz von verschlüsselten Attributen eines anderen Schlüssels kann Programmattribute umfassen, die eine Ausführung von bestimmten verschlüsselten Komponenten 454 erlauben würden. Wenn zum Beispiel dem System 400 zu einem späteren Zeitpunkt ein neuer Schlüssel bereitgestellt wurde, der zusätzliche verschlüsselte Attribute umfasste, kann eine Ausführung der ersten Kopie der Nutzinformationen 450 eine Ausführung von anderen Programmen, Komponenten oder Funktionen erlauben, die in den verschlüsselten Komponenten 454 gespeichert sind.
  • In einem ersten Operationsbeispiel kann eine erste Anforderung 460 von dem Prozessor 410 des Systems 400 empfangen werden. Der Prozessor 410 kann die erste Anforderung 460 empfangen und in Reaktion darauf eine erste Instanz 470 der Nutzinformationen 450 ausführen. Die erste Instanz 470 von Nutzinformationen kann eine erste Instanz der unverschlüsselten Komponente 472 und den Satz von verschlüsselten Komponenten 474-1, 474-2 bis 474-N (allgemein 474) umfassen. Die erste Anforderung 460 kann an ein erstes Programm eines Satzes von Programmen gerichtet sein, die in dem Satz von verschlüsselten Komponenten 474 verschlüsselt sind. Die erste Anforderung 460 kann eine Anforderung zur Ausführung an das erste Programm sein. Die erste Instanz 470 von Nutzinformationen kann auch zum Verifizieren der Gültigkeit des Schlüssels 440 konfiguriert sein (z.B. indem sie dem Schlüssel 440 als ein Argument für die Ausführung bereitgestellt wird, oder indem der Schlüssel 440 in Reaktion auf die erste Anforderung 460 abgerufen wird). Die Anforderung 460 kann in der Form einer Eingabe durch einen Benutzer über eine grafische Benutzeroberfläche (z.B. ein Mausklick auf ein Menü) oder eine Anwendung einer Befehlszeile erfolgen. Zum Beispiel kann die erste Anforderung 460 an die Nutzinformationen 450 gerichtet sein, die eine Java JAR-Datei mit der Bezeichnung mySoftware.jar mit einem Schlüssel 440 mit der Bezeichnung „my License key“ sind, und anfordern, dass ein Programm 474-1 mit der Bezeichnung „TextTyper“ ausgeführt wird. Die erste Anforderung 460 kann in einer Befehlszeile als „java -jar mySoftware.jar -I myLicense.key -t TextTyper“ angezeigt werden.
  • Unter Fortsetzung des ersten Operationsbeispiels kann der Prozessor 410 bei Empfang der Anforderung 460 die erste Instanz 470 von Nutzinformationen ausführen, und der Loader 472 kann die verschlüsselte Komponente 474-1 durch Verwenden des Schlüssels 440 entschlüsseln. Die verschlüsselten Attribute 442 des Schlüssels 440 können verschlüsselte Binärwerte, die angeben, welche Komponenten der Schlüssel entschlüsseln darf, und Kennzeichnungen umfassen, die die geschützte Funktionalität charakterisieren. Die Ausführung des Programms 474-1 kann vor einer Beobachtung durch den Rest des Systems 400 geschützt sein. In einem ersten Beispiel kann eine homomorphe Verschlüsselungstechnik verwendet werden. In einem zweiten Beispiel kann die erste Instanz 470 von Nutzinformationen isoliert von anderen Prozessen, die im primären Speicher 430 ausgeführt werden, in einer Sandbox ausgeführt werden. In einem weiteren Beispiel können die verschlüsselten Komponenten 474 der ersten Instanz 470 von Nutzinformationen eine erste verschlüsselte Kopie eines symmetrischen Schlüssels (nicht dargestellt) umfassen, und der Schlüssel 440 kann auch eine zweite verschlüsselte Kopie des symmetrischen Schlüssels umfassen. Jede verschlüsselte Komponente 474, die keine Kopie des symmetrischen Schlüssels empfängt, der in dem Schlüssel 440 verschlüsselt ist, darf nicht ausgeführt werden. Infolgedessen kann ein bösartiges Programm, das die erste Instanz des Programms 474-1 nach der Entschlüsselung abfängt und während sie im primären Speicher 430 vorhanden ist, nicht in der Lage sein, eine Kopie zu erstellen, die ausführbar ist, ohne auch eine Kopie des symmetrischen Schlüssels zu besitzen.
  • In einem zweiten Operationsbeispiel kann eine zweite Anforderung 480 von dem Prozessor 410 empfangen werden. Der Prozessor 410 kann die zweite Anforderung 480 empfangen und in Reaktion darauf eine zweite Instanz 490 der Nutzinformationen 450 ausführen. Die zweite Instanz 490 von Nutzinformationen kann eine zweite Instanz der unverschlüsselten Komponente 492 und den Satz von verschlüsselten Komponenten 494-1, 494-2 bis 494-N (allgemein 494) umfassen. Die zweite Anforderung 480 kann an ein zweites Programm eines Satzes von Programmen gerichtet sein, die in dem Satz der verschlüsselten Komponenten 474 verschlüsselt sind. Insbesondere kann das zweite Programm in der verschlüsselten Komponente 494-2 verschlüsselt sein. Die zweite Anforderung 480 kann ebenfalls von dem Schlüssel 440 begleitet werden. Der Schlüssel 440 kann einen Satz von verschlüsselten Attributen haben, darf aber kein verschlüsseltes Attribut haben, das der verschlüsselten Komponente 494-2 entspricht.
  • Unter Fortsetzung des zweiten Operationsbeispiels kann die unverschlüsselte Komponente 492 in Reaktion auf die Anforderung versuchen, eine Ausführung eines zweiten Programms in der Anforderung 480 durchzuführen. Der Code der unverschlüsselten Komponente 492 darf keine Logik zum Lokalisieren oder Durchführen einer Zugriffssteuerung umfassen oder irgendwelche Informationen über die verschlüsselten Komponenten 494 preisgeben. Zum Beispiel kann die zweite Anforderung 480 an ein Programm mit der Bezeichnung „PicturePainter“ gerichtet sein und kann den Schlüssel 440 umfassen. Die verschlüsselten Attribute 442 können Programmen entsprechen, bei denen es sich nicht um das Programm „PicturePainter“ handelt. Die unverschlüsselte Komponente 492 darf nur Code enthalten, der eine Entschlüsselungsroutine durch Verwenden des bereitgestellten Schlüssels ausführt. Der Code darf die unverschlüsselten Daten jeder Komponente nicht preisgeben. Alle verschlüsselten Komponenten 494 können auf Grundlage dieses zweiten Beispiels verschlüsselt bleiben.
  • 5 stellt ein beispielhaftes Verfahren 500 von HESS dar, das von einem Client-System ausgeführt wird, das einigen Ausführungsformen der Offenbarung entspricht. Das Verfahren 500 kann durch einen Computer ausgeführt werden wie zum Beispiel das Computer-System 100. Das Verfahren 500 kann in Reaktion darauf ausgeführt werden, dass ein Benutzer einen Computer anweist, sichere Software auszuführen, die von dem Computer bereitgestellt wird. Zum Beispiel kann ein Speicher-Stick eine Kopie von heterogenen Programm-Nutzinformationen (Nutzinformationen) enthalten, wie zum Beispiel die Nutzinformationen 450. Der Computer, der das Verfahren 500 ausführt, kann mit einem Netzwerk wie zum Beispiel dem Internet verbunden sein. In einigen Ausführungsformen kann das Verfahren 500 auf einem Air-Gap-Computer ausgeführt werden. Zum Beispiel kann ein Computer, der das Verfahren 500 ausführt, von anderen Computern, Servern und dergleichen isoliert sein und kann im Übrigen nicht in Datenaustausch direkt (oder indirekt über ein Netzwerk) mit anderen Verarbeitungseinheiten verbunden sein.
  • Das Verfahren 500 beginnt in einem Schritt 505, wobei Nutzinformationen in einem Schritt 510 ausgeführt werden. Die Nutzinformationen können durch Empfangen eines Befehlszeilen-Arguments ausgeführt werden, um mit einem Durchführen einer Ausführung des Programms zu beginnen. Die Nutzinformationen können im Schritt 510 periodisch ausgeführt werden, wie zum Beispiel durch einen Stapelprozess oder ein Skript auf einem Computer.
  • In einem Schritt 520 kann ein Lizenzschlüssel in die Nutzinformationen eingegeben werden. In einigen Ausführungsformen kann der Schlüssel als Teil der Ausführung der Nutzinformationen im Schritt 510 eingegeben werden. Zum Beispiel kann der Lizenzschlüssel ein Befehlszeilenargument sein, das als Teil der Ausführung der Nutzinformationen bereitgestellt wird. In einigen Ausführungsformen kann der Schlüssel nach einer Ausführung der Nutzinformationen im Schritt 510 eingegeben werden. Zum Beispiel kann der Lizenzschlüssel sich lokal auf einer Speichereinheit, in einem logischen Ordner oder einem anderen relevanten Datenverarbeitungskonstrukt befinden. Nach Ausführung der Nutzinformationen im Schritt 510 kann eine unverschlüsselte Komponente, wie zum Beispiel ein Verifizierungs- und Ladeprogramm, damit beginnen, ein Bereitstellen eines Lizenzschlüssels anzufordern. Nach der Anforderung des Lizenzschlüssels kann ein Benutzer oder ein Programm in einem Schritt 520 den Lizenzschlüssel in die unverschlüsselte Komponente der Nutzinformationen eingeben.
  • Eine Anweisung zur Programmausführung kann in einem Schritt 530 empfangen werden. Die Anweisung zur Programmausführung kann von den Nutzinformationen im Schritt 510 empfangen werden. Zum Beispiel kann die Anweisung zur Programmausführung eine Auswahl aus einem Skript, von einem Benutzer oder einem anderen Programm sein, mit der Ausführung eines ersten Programms zu beginnen. Die Anweisung zur Programmausführung kann in einem Schritt 510 zum Ausführungszeitpunkt der Nutzinformationen empfangen werden. Zum Beispiel kann die Anweisung zur Programmausführung ein Argument sein, das den Nutzinformationen bei Ausführung im Schritt 510 bereitgestellt wird. Die Anweisung zur Programmausführung kann an einen Teil der Nutzinformationen gerichtet sein. Insbesondere kann die Anweisung zur Programmausführung durch einen Programmnamen oder eine andere relevante Kennung auf ein oder mehrere Programme verweisen, das bzw. die in einem Satz von verschlüsselten Komponenten der Nutzinformationen gespeichert ist bzw. sind.
  • In einem Schritt 540 kann eine Gültigkeit für die Ausführung der Nutzinformationen durchgeführt werden. Die Gültigkeit der Ausführung kann eine Gültigkeit des Schlüssels sein, der im Schritt 520 eingegeben wurde. Die unverschlüsselte Komponente der Nutzinformationen kann den Lizenzschlüssel empfangen und kann versuchen, einen Entschlüsselungsprozess mit dem Lizenzschlüssel durchzuführen (z.B. durch Verwenden eines symmetrischen Algorithmus wie beispielsweise AES, oder eines asymmetrischen Algorithmus wie beispielweise ABE). Die Gültigkeit der Ausführung kann in Reaktion auf eine Anweisung zur Programmausführung vorliegen, die im Schritt 530 empfangen wurde. Die Gültigkeit kann auf dem Lizenzschlüssel beruhen und kann ferner auf der bestimmten Programmanweisung beruhen, die im Schritt 530 empfangen wurde. Insbesondere kann die unverschlüsselte Komponente der Nutzinformationen auf Grundlage des Lizenzschlüssels, einer Eingabe im Schritt 520 und in Kombination mit der im Schritt 530 empfangenen Programmanweisung damit beginnen, eine oder mehrere Entschlüsselungsoperationen durchzuführen. Die Entschlüsselungsoperationen können an jeder verschlüsselten Komponente des Satzes von Komponenten durchgeführt werden. Zum Beispiel kann der gesamte Lizenzschlüssel als ein Argument für einen Entschlüsselungsprozess zusammen mit einer Klartext-Kennung bereitgestellt werden, die einer angesprochenen verschlüsselten Komponente des Satzes von verschlüsselten Komponenten entspricht. Die Bestimmung der Gültigkeit kann eine Entschlüsselungsaktion des Entschlüsselungsprozesses durchführen, um zu versuchen, das identifizierte Programm zu entschlüsseln, das in einer verschlüsselten Komponente des Satzes von Komponenten gespeichert ist. Der Entschlüsselungsprozess kann versuchen, eine Entschlüsselungsaktion durch Verwenden jedes verschlüsselten Attributs durchzuführen, das in dem Lizenzschlüssel vorhanden ist. Zum Beispiel kann ein bestimmter Lizenzschlüssel eine Zeichenkette von Werten sein, die fünfundvierzig verschlüsselte Attribute darstellen, die fünfundvierzig Programmen entsprechen, die durch entsprechende heterogene Programm-Nutzinformationen ausgeführt werden können. Die entsprechenden Nutzinformationen können siebzig Programme enthalten, die in siebzig separaten verschlüsselten Komponenten gespeichert sind. Der Entschlüsselungsprozess kann ein angefordertes Programm aus der im Schritt 530 empfangenen Anweisung zur Programmausführung nur entschlüsseln, wenn eines der fünfundvierzig verschlüsselten Attribute der kryptografisch übereinstimmenden verschlüsselten Komponente entspricht. Der Entschlüsselungsprozess kann konfiguriert werden, um den gesamten Schlüssel zu empfangen, ohne irgendein spezifisches Programmattribut preiszugeben, das einem Programm entspricht, das in einer verschlüsselten Komponente gespeichert ist. Zum Beispiel darf der Entschlüsselungsprozess keine unverschlüsselte Version eines verschlüsselten Attributs preisgeben und darf keine unverschlüsselte Form der verschlüsselten Attribute, die den Lizenzschlüssel bilden, beschreiben, als Ausgabe oder als eine beobachtbare Zwischenstufe bereitstellen (z.B. in einem primären Speicher, in einem Arbeitsspeicher oder in einem Register eines Prozessors).
  • Wenn die Gültigkeit in einem Schritt 550: J als gültig bestimmt wurde, kann das entschlüsselte Programm in einem Schritt 560 geladen werden. Das entschlüsselte Programm kann im Schritt 560 das einzige Programm sein, das geladen wird. Anders ausgedrückt wird jede verschlüsselte Komponente, die nicht dem angeforderten Programm entspricht, im Schritt 560 nicht entschlüsselt. Das entschlüsselte Programm kann im Schritt 560 sicher geladen werden. Zum Beispiel kann ein Prozessor einen geschützten (z.B. Sandbox-, privaten) Teil eines RAMs oder Caches zum Aufnehmen des entschlüsselten Programms während der Ausführung zuweisen.
  • Wenn in einem Schritt 550: N bestimmt wird, dass die Gültigkeit ungültig ist, wird die empfangene Anweisung zur Programmausführung in einem Schritt 570 verweigert. Die Verweigerung im Schritt 570 kann eine Angabe, eine Ausgabe oder eine andere Nachricht sein, die die Verweigerung beschreibt. Zum Beispiel kann eine Nachricht generiert werden, die für eine Datei „Programmzugriff nicht erlaubt“ angibt. In einem weiteren Beispiel kann eine Nachricht generiert werden, die für einen Ausgabe- oder Bildschirmpuffer eines Computers „ungültige Eingabe“ angibt. Die Verweigerung im Schritt 570 kann eine Programmbeendigung der unverschlüsselten Komponente der heterogenen Programm-Nutzinformationen umfassen, ohne den Grund für die Programmbeendigung mitzuteilen.
  • Nachdem die Gültigkeit im Schritt 550: J, als gültig bestimmt wurde, oder nachdem die Gültigkeit im Schritt 550: N als ungültig bestimmt wurde, endet das Verfahren in einem Schritt 595.
  • 6 stellt ein beispielhaftes Verfahren 600 zur Erstellung von Komponenten einer HESS zum Bereitstellen für ein Client-System dar, das einigen Ausführungsformen der Offenbarung entspricht. Das Verfahren 600 kann von einem zentralen Computer ausgeführt werden, wie zum Beispiel dem Computer 100. Das Verfahren 600 kann durch einen Cloud-Anbieter durchgeführt werden, wie zum Beispiel der Cloud-Computing-Umgebung 50. Das Verfahren 600 kann von einem Software-Ersteller vor einem Verteilen oder anderweitigen Bereitstellen von Software durchgeführt werden. Zum Beispiel kann das Verfahren 600 als Teil einer integrierten Entwicklungsumgebung zum Generieren einer neuen Software-Version ausgeführt werden, um einen Bug zu korrigieren oder eine Erweiterung vorzunehmen oder neue Funktionen zu erstellen.
  • Ab einem Start 605 kann eine Anforderung in einem Schritt 610 empfangen werden. Die Anforderung kann als Teil eines Skripts zum Generieren von Software oder Generieren von Lizenzen für die Software eingegeben werden. Die Anforderung im Schritt 610 kann einen oder mehrere Parameter umfassen, wie zum Beispiel Build-Informationen, Informationen zur Software-Version, Lizenzbezeichnungen, Client-Namen, Lizenz-Berechtigungen oder andere relevante Parameter. Die Anforderung im Schritt 610 kann einen Verweis auf eine Software umfassen, die ungeschützt ist. Zum Beispiel kann die Anforderung einen Zeiger auf einen Speicherplatz eines Satzes von einem oder mehreren Programmen umfassen, das bzw. die in einem unverschlüsselten Format als Teil einer Binärdatei oder als Quellcode-Funktionen oder als eine oder mehrere Dateien und/oder ein oder mehrere Ordner einer Software-Archivdatei gespeichert ist bzw. sind.
  • Wenn die Anforderung in einem Schritt 620: J für neue Nutzinformationen gilt, kann in einem Schritt 630 ein Satz von einem oder mehreren Programmattributen zugewiesen werden. Die Zuweisung von Attributen kann ein Zuweisen eines einzelnen Attributs für jedes Programm einer Software umfassen, die Teil der Nutzinformationen sein soll. Wenn insbesondere ein bestimmter Software-Teil 135 verschiedene Programme umfasst, können 135 Programmattribute zu den jeweiligen verschiedenen Programmen zugewiesen werden. Wenn zum Beispiel ein Entwickler neue Nutzinformationen zur Verteilung generiert, die vier verschiedene Programme umfassen, können die Attribute „F1“, „F2“, „F3“ und „F4“ jeweils dem ersten Programm, dem zweiten Programm, dem dritten Programm und dem viertem Programm zugewiesen werden.
  • In einem Schritt 640 können heterogene Programm-Nutzinformationen generiert werden. Das Programm kann auf Grundlage eines Verschlüsselungsprozesses generiert werden. Der erste Verschlüsselungsprozess kann die Ausführung eines Verschlüsselungsalgorithmus umfassen, der die heterogenen Programm-Nutzinformationen generiert. Zum Beispiel könnten die Nutzinformationen über symmetrische Verschlüsselungsalgorithmen verschlüsselt worden sein, wie zum Beispiel AES-128 oder größere Verschlüsselungslänge, oder mit asymmetrischen Verschlüsselungsalgorithmen wie beispielweise RSA-2048 oder ECDSA-224 oder größere Verschlüsselungslänge, oder mit Verschlüsselungsschemas auf Attributgrundlage wie beispielsweise KP-ABE oder CP-ABE. Für den ersten Verschlüsselungsprozess können drei Eingaben in beliebiger Reihenfolge notwendig sein. Für den ersten Verschlüsselungsprozess können als die erste Eingabe die ungeschützten Nutzinformationen notwendig sein, die Teil der Anforderung waren (empfangen im Schritt 610). Für den ersten Verschlüsselungsprozess können als die zweite Eingabe die zugewiesenen Programmattribute notwendig sein. Für den ersten Verschlüsselungsprozess kann als die dritte Eingabe ein primärer Schlüssel notwendig sein. Der primäre Schlüssel kann ein Schlüssel, ein Wert, eine Zeichenfolge oder eine andere Reihe von Wörtern oder Zeichen mit ausreichender Länge sein (z.B. 1024 Bits).
  • Der erste Verschlüsselungsprozess kann mit einem Fehler enden oder einen Fehlercode zurückgeben, wenn eine oder mehrere der Eingaben unvollständig ist bzw. sind oder fehlt bzw. fehlen. Wenn zum Beispiel ungeschützte Nutzinformationen vier Programme enthalten und dem ersten Verschlüsselungsprozess nur drei Programmattribute bereitgestellt werden, kann der erste Verschlüsselungsprozess einen Fehler zurückgeben. Als Teil des Generierens der heterogenen Programm-Nutzinformationen kann ein Satz von einer oder mehreren verschlüsselten Komponenten generiert werden (z.B. als ein Ergebnis oder eine Ausgabe des ersten Verschlüsselungsprozesses). Als Teil des Generierens der heterogenen Programm-Nutzinformationen im Schritt 640 kann eine ungeschützte Komponente mit den verschlüsselten Komponenten kombiniert werden (z.B. im Wesentlichen gleichzeitig mit, direkt bevor oder direkt nachdem der erste Verschlüsselungsprozess den Satz von verschlüsselten Komponenten erstellt). Die unverschlüsselte Komponente kann mit dem Satz von verschlüsselten Komponenten durch Kompilierung, Gruppierung, Archivierung, Einbettung oder anderweitige Kombination der unverschlüsselten Komponente und des Satzes von verschlüsselten Komponenten kombiniert werden. Die unverschlüsselte Komponente kann eine Ausgabe des ersten Verschlüsselungsprozesses sein. Zum Beispiel kann als eine Ausgabe des ersten Verschlüsselungsprozesses ein Entschlüsselungsprozess generiert werden. Für den Entschlüsselungsprozess können als Eingabe ein oder mehrere der Programmattribute notwendig sein, wie zum Beispiel eine Untergruppe der Programmattribute (z.B. in einer verschlüsselten Form).
  • Wenn die Anforderung in einem Schritt 620: N nicht für neue Nutzinformationen bestimmt ist, und wenn die Anforderung für einen neuen Schlüssel in einem Schritt 650: J gilt, können in einem Schritt 660 eine oder mehrere Berechtigungen für den Schlüssel empfangen werden. Die Anforderung (empfangen im Schritt 610) für einen neuen Schüssel kann eine oder mehrere Berechtigungen, Verweise, Werte oder relevante Kennungen der Programme, für die eine Berechtigung bestehen soll, durch bestimmte heterogene Programm-Nutzinformationen ausgeführt zu werden, und einen Verweis auf die bestimmten heterogenen Programm-Nutzinformationen umfassen. Die eine bzw. die mehreren Berechtigungen kann bzw. können eine Instanz oder eine erste Untergruppe des Satzes von Programmattributen sein. Zum Beispiel kann ein gesamter Satz von Programmattributen fünfunddreißig Programmattribute umfassen, die jedem Programm entsprechen, das (in einer verschlüsselten Form) in heterogenen Programm-Nutzinformationen gespeichert ist. Unter Fortsetzung des Beispiels können die empfangenen Berechtigungen eine Untergruppe der Programmattribute umfassen, einschließlich des dritten Programmattributs, des zwölften Programmattributs und des dreißigsten Programmattributs. Als Nächstes kann in einem Schritt 670 ein Zufallswert erhalten werden. Der Zufallswert kann eine zufällige Folge von Zeichen sein. Der Zufallswert kann eine zufällige Reihenfolge von Wörtern sein. Der Zufallswert kann eine ausreichende Länge oder Größe aufweisen (z.B. 256 Bits).
  • In einem Schritt 680 kann ein Lizenzschlüssel generiert werden. Der Lizenzschlüssel kann durch einen zweiten Verschlüsselungsprozess generiert werden. Der zweite Verschlüsselungsprozess kann ein relevanter Verschlüsselungsprozess sein. Der zweite Verschlüsselungsprozess kann drei Eingaben umfassen. Die erste Eingabe kann die Untergruppe der Programmattribute sein (z.B. die Programmattribute, die den Programmen entsprechen, denen der Zugriff zur Ausführung durch den zu generierenden Lizenzschlüssel erlaubt werden soll. Die zweite Eingabe kann der Zufallswert sein. Die dritte Eingabe kann der primäre Schlüssel sein. Die Ausgabe des zweiten Verschlüsselungsprozesses kann der Lizenzschlüssel sein. Der Lizenzschlüssel kann eine Reihe von Werten, eine Folge von Zeichen oder eine andere relevante kryptografische Ausgabe sein. Der Lizenzschlüssel kann einen Satz von verschlüsselten Programmattributen umfassen, die der Untergruppe von verschlüsselten Komponenten der heterogenen Programm-Nutzinformationen entsprechen, die zur Ausführung entschlüsselt werden dürfen. Der Lizenzschlüssel darf nicht beschreiben, trennen oder anderweitig angeben, wo ein erstes verschlüsseltes Programmattribut endet, und wo ein zweites verschlüsseltes Programmattribut endet. Die Verwendung des Zufallswerts kann sicherstellen, dass verschlüsselte Programmattribute nicht durch ein Vergleichen von zwei Schlüsseln voneinander zu unterscheiden sind. Zum Beispiel kann bei Vorgabe einer ersten Untergruppe von Programmattributen und einem ersten Zufallswert und dem primären Schlüssel ein Lizenzschlüssel, der im Schritt 680 generiert wurde, eine Zeichenfolge mit den Werten „skZ | E"8'wBfbye-7[$$p7uNM2HLi>NZgOrAYFO&kjhlX{QQ=Oyrb#s<R-+8%h,X" sein. Unter Fortsetzung des Beispiels kann bei Vorgabe der ersten Untergruppe von Programmattributen und einem zweiten Zufallswert und dem primären Schlüssel ein Lizenzschlüssel, der im Schritt 680 generiert wurde, eine Zeichenfolge mit den Werten „HF,FQLb]46,x“/d?".QCd,=?#sm.v:CT/xT(0o<4BxE&LfThZ8*^zP(C?_nPA" sein.
  • Wenn die Anforderung im Schritt 650: N nicht für einen neuen Schlüssel gilt, oder nach einer Generierung des Lizenzschlüssels im Schritt 680, endet das Verfahren 600 in einem Schritt 695.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailintegrationsebene handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen enthalten, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zum Ausführen von Anweisungen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste von spezifischeren Beispielen des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD, ein Arbeitsspeicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination des Vorgenannten. Ein durch einen Computer lesbares Speichermedium soll, wie hierin verwendet, nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jeden Typ von Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen umgesetzt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können für einen Prozessor eines Computers oder eine andere programmierbare Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Anweisungen Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte erstellen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Arbeitsschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich als ein Schritt erreicht werden, der gleichzeitig, im Wesentlichen gleichzeitig, in einer teilweise oder vollständig zeitlich überlappenden Weise ausgeführt wird, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Offenbarung wurden zum Zweck der Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang der beschriebenen Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, der praktischen Anwendung oder technischen Verbesserung gegenüber auf dem Markt gefundenen Technologien zu erklären oder anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.

Claims (20)

  1. Verfahren, das aufweist: Bereitstellen, für eine erste Datenverarbeitungseinheit, einer ersten Kopie von heterogenen Programm-Nutzinformationen, wobei: die heterogenen Programm-Nutzinformationen eine unverschlüsselte Komponente und einen Satz von einer oder mehreren verschlüsselten Komponenten enthalten, wobei der Satz von verschlüsselten Komponenten einem Satz von einem oder mehreren Programmen entspricht, die unverschlüsselte Komponente der heterogenen Programm-Nutzinformationen einen Ladeprogrammcode aufweist, der konfiguriert ist, einen ersten Lizenzschlüssel zu empfangen, und der Ladeprogrammcode konfiguriert ist, um in Reaktion auf das Empfangen des ersten Lizenzschlüssels eine Entschlüsselungsaktion an dem Satz von verschlüsselten Komponenten der heterogenen Programm-Nutzinformationen durchzuführen.
  2. Verfahren nach Anspruch 1, wobei das Verfahren ferner aufweist: Zuweisen, durch eine zweite Datenverarbeitungseinheit, eines Satzes von einem oder mehreren Programmattributen, das bzw. die dem Satz von Programmen entspricht bzw. entsprechen, wobei jedes Programmattribut des Satzes von Programmattributen jedes entsprechende Programm des Satzes von Programmen identifiziert; und Generieren, durch die zweite Datenverarbeitungseinheit und aus dem Satz von Programmen und auf Grundlage eines ersten Verschlüsselungsprozesses mit einem primären Schlüssel und mit dem Satz von Programmattributen, der heterogenen Programm-Nutzinformationen, die die unverschlüsselte Komponente und den Satz von verschlüsselten Komponenten aufweisen, wobei die heterogenen Programm-Nutzinformationen generiert werden, bevor sie der ersten Datenverarbeitungseinheit bereitgestellt werden.
  3. Verfahren nach Anspruch 2, wobei das Verfahren ferner aufweist: Generieren, durch die zweite Datenverarbeitungseinheit und auf Grundlage eines zweiten Verschlüsselungsprozesses mit dem primären Schlüssel und einer zufälligen Folge von Zeichen und mit einer ersten Untergruppe des Satzes von Programmattributen, des ersten Lizenzschlüssels, wobei der erste Lizenzschlüssel einen ersten Satz von einem oder mehreren verschlüsselten Programmattributen enthält, die einer ersten Untergruppe des Satzes von verschlüsselten Komponenten entsprechen.
  4. Verfahren nach Anspruch 3, wobei: die erste Untergruppe des Satzes von Programmattributen dieselbe wie der Satz von Programmattributen ist, und die erste Untergruppe des Satzes von verschlüsselten Komponenten dieselbe wie der Satz von verschlüsselten Komponenten ist.
  5. Verfahren nach Anspruch 1, wobei eine erste verschlüsselte Komponente der verschlüsselten Komponenten ein erstes Programm ist, und wobei eine zweite verschlüsselte Komponente der verschlüsselten Komponenten eine Funktion des ersten Programms ist.
  6. Verfahren nach Anspruch 1, wobei das Verfahren ferner aufweist: Bereitstellen des ersten Lizenzschlüssels für die erste Datenverarbeitungseinheit, wobei; der erste Lizenzschlüssel einen ersten Satz von einem oder mehreren verschlüsselten Programmattributen enthält, das bzw. die einer ersten Untergruppe der einen oder der mehreren verschlüsselten Komponenten entspricht bzw. entsprechen.
  7. Verfahren nach Anspruch 6, wobei der Ladeprogrammcode ferner konfiguriert ist zum: Empfangen einer ersten Anweisung zur Programmausführung, wobei sich die erste Anweisung zur Programmausführung an ein erstes Programm richtet, das in einer ersten Komponente der verschlüsselten Komponenten verschlüsselt ist.
  8. Verfahren nach Anspruch 7, wobei die Entschlüsselungsaktion aufweist: Bestimmen, durch den Ladeprogrammcode, einer Ungültigkeit des ersten Lizenzschlüssels; und Ablehnen, durch den Ladeprogrammcode und in Reaktion auf die Ungültigkeit, der ersten Anweisung zur Programmausführung.
  9. Verfahren nach Anspruch 7, wobei die Entschlüsselungsaktion aufweist: Bestimmen, durch den Ladeprogrammcode, einer Gültigkeit des ersten Lizenzschlüssels; und Laden, durch den Ladeprogrammcode und in Reaktion auf die Gültigkeit und in Reaktion auf die erste Anweisung zur Programmausführung, des ersten Programms in einen Arbeitsspeicher zur Ausführung durch einen Prozessor.
  10. Verfahren nach Anspruch 9, wobei das Verfahren ferner aufweist: Bereitstellen, für eine zweite Datenverarbeitungseinheit, eines zweiten Lizenzschlüssels, wobei; der zweite Lizenzschlüssel einen zweiten Satz von einem oder mehreren verschlüsselten Programmattributen enthält, das bzw. die der ersten Untergruppe der einen oder der mehreren verschlüsselten Komponenten entspricht bzw. entsprechen, und der zweite Satz von einem oder mehreren verschlüsselten Programmattributen nicht derselbe wie die erste Untergruppe des einen oder der mehreren verschlüsselten Programmattribute ist; und Bereitstellen, für die zweite Datenverarbeitungseinheit, einer zweiten Kopie der heterogenen Programm-Nutzinformationen.
  11. Verfahren nach Anspruch 10, wobei der Ladeprogrammcode der zweiten Kopie der heterogenen Programm-Nutzinformationen konfiguriert ist zum: Empfangen einer zweiten Anweisung zur Programmausführung, wobei die zweite Anweisung zur Programmausführung an das erste Programm gerichtet ist, das in der ersten verschlüsselten Komponente des Satzes von verschlüsselten Komponenten der zweiten Kopie der heterogenen Programm-Nutzinformationen verschlüsselt ist; Empfangen des zweiten Lizenzschlüssels; Bestimmen einer zweiten Ungültigkeit des zweiten Lizenzschlüssels; und Ablehnen, in Reaktion auf die zweite Ungültigkeit, der zweiten Anweisung zur Programmausführung.
  12. Verfahren nach Anspruch 10, wobei der Ladeprogrammcode der zweiten Kopie der heterogenen Programm-Nutzinformationen konfiguriert ist zum: Empfangen einer zweiten Anweisung zur Programmausführung, wobei die zweite Anweisung zur Programmausführung an das erste Programm gerichtet ist, das in der ersten verschlüsselten Komponente des Satzes von verschlüsselten Komponenten der zweiten Kopie der heterogenen Programm-Nutzinformationen verschlüsselt ist; Empfangen des zweiten Lizenzschlüssels; Bestimmen einer Gültigkeit des zweiten Lizenzschlüssels; und Laden, in Reaktion auf die Gültigkeit und auf Grundlage der zweiten Anweisung zur Programmausführung, des ersten Programms in einen Arbeitsspeicher zur Ausführung durch einen Prozessor.
  13. System, wobei das System aufweist: einen Arbeitsspeicher, wobei der Arbeitsspeicher eine oder mehrere Anweisungen enthält; und einen Prozessor, wobei der Prozessor in Datenaustausch mit dem Arbeitsspeicher verbunden ist, wobei der Prozessor in Reaktion auf ein Lesen der einen oder der mehreren Anweisungen konfiguriert ist zum: Empfangen einer ersten Kopie von heterogenen Programm-Nutzinformationen, wobei: die heterogenen Programm-Nutzinformationen eine unverschlüsselte Komponente und einen Satz von einer oder mehreren verschlüsselten Komponenten enthalten, wobei der Satz von verschlüsselten Komponenten einem Satz von einem oder mehreren Programmen entspricht, die unverschlüsselte Komponente der heterogenen Programm-Nutzinformationen einen Ladeprogrammcode umfasst, der konfiguriert ist, einen ersten Lizenzschlüssel zu empfangen, und der Ladeprogrammcode konfiguriert ist, um in Reaktion auf das Empfangen des ersten Lizenzschlüssels eine Entschlüsselungsaktion an dem Satz von verschlüsselten Komponenten der heterogenen Programm-Nutzinformationen durchzuführen.
  14. System nach Anspruch 13, wobei der Prozessor ferner konfiguriert ist zum: Empfangen des ersten Lizenzschlüssels, wobei: der erste Lizenzschlüssel einen ersten Satz von einem oder mehreren verschlüsselten Programmattributen enthält, das bzw. die einer ersten Untergruppe der einen oder der mehreren verschlüsselten Komponenten entspricht bzw. entsprechen.
  15. System nach Anspruch 14, wobei der Prozessor ferner konfiguriert ist zum: Empfangen, durch den Ladeprogrammcode, einer ersten Anweisung zur Programmausführung, wobei sich die erste Anweisung zur Programmausführung an ein erstes Programm richtet, das in einer ersten Komponente der verschlüsselten Komponenten verschlüsselt ist.
  16. System nach Anspruch 15, wobei die Entschlüsselungsaktion aufweist: Bestimmen, durch den Ladeprogrammcode, einer Ungültigkeit des ersten Lizenzschlüssels; und Ablehnen, durch den Ladeprogrammcode und in Reaktion auf die Ungültigkeit, der ersten Anweisung zur Programmausführung.
  17. Computerprogrammprodukt, wobei das Computerprogrammprodukt aufweist: ein oder mehrere durch einen Computer lesbare Speichermedien; und Programmanweisungen, die gemeinsam auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien gespeichert sind, wobei die Programmanweisungen konfiguriert sind zum: Bereitstellen, für eine erste Datenverarbeitungseinheit, einer ersten Kopie von heterogenen Programm-Nutzinformationen, wobei: die heterogenen Programm-Nutzinformationen eine unverschlüsselte Komponente und einen Satz von einer oder mehreren verschlüsselten Komponenten enthalten, wobei der Satz von verschlüsselten Komponenten einem Satz von einem oder mehreren Programmen entspricht, die unverschlüsselte Komponente der heterogenen Programm-Nutzinformationen einen Ladeprogrammcode umfasst, der konfiguriert ist, einen ersten Lizenzschlüssel zu empfangen, und der Ladeprogrammcode konfiguriert ist, um in Reaktion auf das Empfangen des ersten Lizenzschlüssels eine Entschlüsselungsaktion an dem Satz von verschlüsselten Komponenten der heterogenen Programm-Nutzinformationen durchzuführen.
  18. Computerprogrammprodukt nach Anspruch 17, wobei die Programmanweisungen ferner konfiguriert sind zum: Zuweisen, durch eine zweite Datenverarbeitungseinheit, eines Satzes von einem oder mehreren Programmattributen, das bzw. die dem Satz von Programmen entspricht bzw. entsprechen, wobei jedes Programmattribut des Satzes von Programmattributen jedes entsprechende Programm des Satzes von Programmen identifiziert; und Generieren, durch die zweite Datenverarbeitungseinheit und aus dem Satz von Programmen und auf Grundlage eines ersten Verschlüsselungsprozesses mit einem primären Schlüssel und mit dem Satz von Programmattributen, der heterogenen Programm-Nutzinformationen, die die unverschlüsselte Komponente und den Satz von verschlüsselten Komponenten umfassen, wobei die heterogenen Programm-Nutzinformationen generiert werden, bevor sie der ersten Datenverarbeitungseinheit bereitgestellt werden.
  19. Computerprogrammprodukt nach Anspruch 18, wobei die Programmanweisungen ferner konfiguriert sind zum: Generieren, durch die zweite Datenverarbeitungseinheit und auf Grundlage eines zweiten Verschlüsselungsprozesses mit dem primären Schlüssel und einer zufälligen Folge von Zeichen und mit einer ersten Untergruppe von einem oder mehreren des Satzes von Programmattributen, des ersten Lizenzschlüssels, wobei der erste Lizenzschlüssel einen ersten Satz von einem oder mehreren verschlüsselten Programmattributen enthält, das bzw. die einer ersten Untergruppe des Satzes von verschlüsselten Komponenten entspricht bzw. entsprechen.
  20. Computerprogrammprodukt nach Anspruch 19, wobei: die erste Untergruppe des Satzes von Programmattributen dieselbe wie der Satz von Programmattributen ist, und die erste Untergruppe des Satzes von verschlüsselten Komponenten dieselbe wie der Satz von verschlüsselten Komponenten ist.
DE112021005119.9T 2020-09-29 2021-07-16 Zugriff auf software durch heterogene verschlüsselung Pending DE112021005119T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/036,577 2020-09-29
US17/036,577 US12001523B2 (en) 2020-09-29 2020-09-29 Software access through heterogeneous encryption
PCT/CN2021/106794 WO2022068322A1 (en) 2020-09-29 2021-07-16 Software access through heterogeneous encryption

Publications (1)

Publication Number Publication Date
DE112021005119T5 true DE112021005119T5 (de) 2023-07-20

Family

ID=80822505

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021005119.9T Pending DE112021005119T5 (de) 2020-09-29 2021-07-16 Zugriff auf software durch heterogene verschlüsselung

Country Status (6)

Country Link
US (1) US12001523B2 (de)
JP (1) JP2023542527A (de)
CN (1) CN116249980A (de)
DE (1) DE112021005119T5 (de)
GB (1) GB2614677A (de)
WO (1) WO2022068322A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115664836B (zh) * 2022-11-07 2023-10-03 海光信息技术股份有限公司 数据传输方法、装置、计算机设备及存储介质

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5598470A (en) 1994-04-25 1997-01-28 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: Method and apparatus for utilizing a decryption block
US5563946A (en) 1994-04-25 1996-10-08 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: method and apparatus for passing encrypted files between data processing systems
US6052780A (en) 1996-09-12 2000-04-18 Open Security Solutions, Llc Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information
US6523119B2 (en) 1996-12-04 2003-02-18 Rainbow Technologies, Inc. Software protection device and method
US6006190A (en) 1997-04-28 1999-12-21 Tartaroukos Llc Computer implemented method and a computer system for enforcing software licenses
US6920567B1 (en) * 1999-04-07 2005-07-19 Viatech Technologies Inc. System and embedded license control mechanism for the creation and distribution of digital content files and enforcement of licensed use of the digital content files
WO2001001316A2 (en) 1999-06-30 2001-01-04 Ac Properties Bv A system, method and article of manufacture for an electronic software distribution, post-download payment scheme with encryption capabilities
US20080082446A1 (en) * 1999-10-01 2008-04-03 Hicks Christian B Remote Authorization for Unlocking Electronic Data System and Method
US6460140B1 (en) * 1999-12-30 2002-10-01 Starnet Communications Corporation System for controlling the use of licensed software
US20070271191A1 (en) * 2000-03-09 2007-11-22 Andres Torrubia-Saez Method and apparatus for secure distribution of software
AU7593601A (en) * 2000-07-14 2002-01-30 Atabok Inc Controlling and managing digital assets
JP4743984B2 (ja) * 2001-03-23 2011-08-10 三洋電機株式会社 データ記録装置
EP1542112A4 (de) * 2002-07-09 2008-04-09 Fujitsu Ltd ATTACKENBESTûNDIGE VIELZWECK-CPU DES OFFENEN TYPS UND ANWENDUNGSSYSTEM DAF R
US7734550B1 (en) * 2003-10-07 2010-06-08 Microsoft Corporation Method and system for identifying the controlling license for installed software
CN1863038B (zh) 2005-05-12 2010-10-13 中国电信股份有限公司 对终端设备中应用程序实施控制和管理的方法
JP2009512087A (ja) * 2005-10-17 2009-03-19 エヌエックスピー ビー ヴィ プログラム実行可能イメージの暗号化
JP5034498B2 (ja) 2006-02-20 2012-09-26 株式会社日立製作所 ディジタルコンテンツの暗号化,復号方法,及び,ディジタルコンテンツを利用した業務フローシステム
CN100446019C (zh) 2006-07-19 2008-12-24 北京飞天诚信科技有限公司 一种软件版权保护方法
US20080313743A1 (en) * 2007-06-13 2008-12-18 Brian Chan Network Software License Management and Piracy Protection
US20090080658A1 (en) 2007-07-13 2009-03-26 Brent Waters Method and apparatus for encrypting data for fine-grained access control
WO2011073894A1 (en) 2009-12-18 2011-06-23 Koninklijke Philips Electronics N.V. Digital rights management using attribute-based encryption
CN102360412B (zh) * 2011-09-26 2014-07-02 飞天诚信科技股份有限公司 Java源代码的保护方法和系统
US8725649B2 (en) * 2011-12-08 2014-05-13 Raytheon Company System and method to protect computer software from unauthorized use
US20150121073A1 (en) * 2012-03-23 2015-04-30 Irdeto B.V. Software fingerprinting
US9177121B2 (en) 2012-04-27 2015-11-03 Nvidia Corporation Code protection using online authentication and encrypted code execution
US20190026442A1 (en) 2017-07-24 2019-01-24 Microsoft Technology Licensing, Llc Offline activation for application(s) installed on a computing device
CN108388439A (zh) 2018-03-27 2018-08-10 深圳市路畅科技股份有限公司 一种车载软件的更新方法、系统、装置及可读存储介质

Also Published As

Publication number Publication date
GB2614677A (en) 2023-07-12
US12001523B2 (en) 2024-06-04
GB202305751D0 (en) 2023-05-31
US20220100822A1 (en) 2022-03-31
CN116249980A (zh) 2023-06-09
WO2022068322A1 (en) 2022-04-07
JP2023542527A (ja) 2023-10-10

Similar Documents

Publication Publication Date Title
DE112018002031B4 (de) Sichern einer betriebssystemkonfiguration unter verwendung von hardware
DE112015004555B4 (de) Verarbeiten eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System
DE112018004390B4 (de) Sichere zugriffsverwaltung für werkzeuge innerhalb einer sicheren umgebung
DE112020004699B4 (de) Schützen von arbeitslasten in kubernetes
DE112021004937T5 (de) Sicheres erneutes verschlüsseln von homomorph verschlüsselten daten
DE112021002245T5 (de) Verhindern einer unberechtigten bereitstellung von paketen in clustern
DE112014000584T5 (de) Erreichen von Speichereffizienz bei durchgängiger Verschlüsselung unter Verwendung von nachgelagerten (Downstream-)Decryptern
DE112016000790B4 (de) Instanziierung von Broadcast-Verschlüsselungsschemata zur Laufzeit
DE112021006372T5 (de) Sichere bereitstellung einer datenverarbeitungsressource unter verwendung einer homomorphen verschlüsselung
DE112021002099T5 (de) Hypervisor-geschützter schlüssel
DE112011103580B4 (de) Verfahren, sichere Einheit, System und Computerprogrammprodukt für das sichere Verwalten des Benutzerzugriffs auf ein Dateisystem
DE112018000525T5 (de) Systeme und Verfahren für die Authentifizierung von Platform Trust bzw. Plattform-Vertrauen in einerNetzwerkfunktions-Virtualisierungsumgebung
DE112019003130T5 (de) Hsm-selbstzerstörung in einer hybriden cloud-kms-lösung
DE112018002954T5 (de) Bereitstellen eines konfigurationsabhängigen arbeitsablaufs
DE102016105062A1 (de) Nähengestützte Berechtigungsprüfung für einheitenübergreifend verteilte Daten
DE112020000891T5 (de) Erzeugung von nativem code für cloud-services
DE112020002343T5 (de) Verteilung von Sicherheitsberechtigungsnachweisen
DE112020005373T5 (de) Mechanismus zur authentifizierung durch nutzung von positionsbestätigung
DE112020005526T5 (de) Reservieren eines oder mehrerer sicherheitsmodule für einen sicheren gast
DE112020003357T5 (de) Undurchsichtige verschlüsselung für datendeduplizierung
DE102021130942A1 (de) Mehrstufiger schutz für datenzentrierte objekte
DE112021005119T5 (de) Zugriff auf software durch heterogene verschlüsselung
DE112021005837T5 (de) Dezentrale sendeverschlüsselung und schlüsselerzeugungseinrichtung
DE112021005862T5 (de) Selbstprüfende blockchain
DE112019002052T5 (de) Datenschutzsensibilisierung bei der bereitstellung von arbeitslasten

Legal Events

Date Code Title Description
R012 Request for examination validly filed