DE102013224578A1 - Codeschutz unter verwendung von online-authentifizierung und verschlüsselter ausführung von code - Google Patents

Codeschutz unter verwendung von online-authentifizierung und verschlüsselter ausführung von code Download PDF

Info

Publication number
DE102013224578A1
DE102013224578A1 DE102013224578.5A DE102013224578A DE102013224578A1 DE 102013224578 A1 DE102013224578 A1 DE 102013224578A1 DE 102013224578 A DE102013224578 A DE 102013224578A DE 102013224578 A1 DE102013224578 A1 DE 102013224578A1
Authority
DE
Germany
Prior art keywords
processing component
application program
encrypted
piece
program code
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
DE102013224578.5A
Other languages
English (en)
Inventor
Andrew Edelsten
Fedor Fomichev
Jay Huang
Timothy Lottes
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013224578A1 publication Critical patent/DE102013224578A1/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

Verfahren zum Schützen von Code werden offenbart. Ein Verfahren enthält eine Verwendung eines Verarbeitungsbauteils zum Zugreifen auf einen verschlüsselten Abschnitt eines Anwendungsprogrammes, der von einem Onlineserver verschlüsselt ist, nachdem eine Lizenz zur Verwendung des Anwendungsprogrammes durch den Onlineserver verifiziert ist. Das Verarbeitungsbauteil wird verwendet zum Entschlüsseln des verschlüsselten Abschnittes des Anwendungsprogrammes unter Verwendung eines Verschlüsselungsschlüssels, der in dem Verarbeitungsbauteil gespeichert ist. Der entschlüsselte Abschnitt des Anwendungsprogrammes wird ausgeführt basierend auf gespeicherten Zustandsdaten. Ergebnisse werden zu dem Anwendungsprogramm gegeben, das auf einem zweiten Verarbeitungsbauteil ausgeführt wird.

Description

  • KREUZVERWEIS AUF VERWANDTE ANMELDUNG
  • Die Anmeldung ist mit der US-Patentanmeldung Nr. 13/458,891 verwandt, die am 27. April 2012 eingereicht wurde, den Titel „INHALTSSCHUTZ DURCH ONLINESERVER UND AUSFÜHRUNG VON CODE IN EINEM SICHEREN OPERATIVSYSTEM” trägt und hiermit durch Bezugnahme in ihrer Gesamtheit hierin inkorporiert wird.
  • HINTERGRUND
  • Technologien für Codeschutz (CP) beinhalten eine Klasse von Zugriffsteuerungstechnologien, die von Hardwareherstellern, Herausgebern, Copyrightinhabern und Einzelpersonen als ein Mittel zum Kontrollieren der Verwendung von digitalen Inhalten und Geräten verwendet werden. CP-Technologien inkludieren Technologien, die Verwendungen von digitalen Inhalten verhindern, die vom Anbieter der Inhalte nicht gewünscht oder beabsichtigt sind.
  • CP-Technologien streben an, Kontrolle über digitale Inhalte oder Geräte für einen Anbieter von Inhalten oder für einen Geräteverkäufer bereitzustellen, nachdem diese von einem Verbraucher gekauft worden sind. Da sie sich auf digitale Inhalte bezieht, kann eine solche Kontrolle ein Verhindern von Zugriff auf Inhalte, ein Verhindern von Kopieren von Inhalten und ein Verhindern der Umwandlung von Inhalten in andere Formate aufweisen. Da sie sich auf Geräte bezieht, kann eine solche Kontrolle eine Beschränkung der Hardware und Software aufweisen, die mit einem Gerät verwendet werden können.
  • Einige konventionelle CP-Technologien sind empfänglich für bestimmte Arten von Angriffen. Softwarebasierte CP-Technologien können zum Beispiel empfänglich für Angriffe sein, die auf Informationen basieren, die in der Software selbst enthalten sind, da die Software Informationen enthalten mag, die die Entschlüsselung von Inhalten ermöglichen können (zum Beispiel Entschlüsselungsschlüssel). Ein Angreifer mag folglich im Stande sein, diese Informationen zu extrahieren und die Inhalte direkt zu entschlüsseln und kopieren, und damit die Restriktionen umgehen, die von dem CP-System auferlegt sind.
  • Hardwarebasierte CP-Technologien haben auch Empfänglichkeiten. Einige dieser Technologien verlangen die Verwendung speziell gebauter Hardware zum Hören und/oder Sehen der Inhalte. Dieser Ansatz versucht sicherzustellen, dass nur lizenzierte Benutzer (diejenige mit Hardware) auf die Inhalte zugreifen können. Zusätzlich strebt er an, Benutzern des Systems den Zugriff auf den geheimen Entschlüsselungsschlüssel zu verweigern.
  • Obwohl hardwarebasierte CP-Technologien einen robusten Schutz bereitstellen können, kann es aber sehr schwierig sein, Hardware zu bauen, die ausreichend robust ist, um einen geheimen Schlüssel gegen einen ausreichend entschlossenen Gegner zu schützen. Desweiteren kann es, wenn erst der geheime Schlüssel bekannt ist, relativ unkompliziert sein, eine Version der Hardware zu bauen, die zum Hören und/oder Sehen der Inhalte verwendet werden kann. Demzufolge können konventionelle Technologien ein Niveau des Schutzes brauchen, das zum Abhalten entschlossener Gegner ausreichend ist.
  • ZUSAMMENFASSUNG
  • Konventionelle Ansätze zum Codeschutz können ein Niveau des Schutzes fehlen bzw. mangeln, das zum Abhalten entschlossener Gegner ausreichend ist. Ein Codeschutz-Hardwaresicherheitsverarbeitungsbauteil, -Architektur und -Verfahren werden offenbart, die Onlineauthentifizierung und Ausführung von verschlüsseltem Code verwenden und diese Mängel herangehen. Die beanspruchten Ausführungsformen sind aber nicht auf Implementierungen beschränkt, die jegliche oder alle vorgenannter Mängel herangehen. In einer Ausführungsform, nachdem die Verifizierung einer Lizenz zur Verwendung einer Anwendung bzw. Applikation abgeschlossen ist, wird ein Sicherheitsverarbeitungsbauteil als Teil einer sicheren, hardwarebasierten Entschlüsselung und Ausführung eines Teils von Programmcode oder „Shader” verwendet, der in der Anwendung fehlt. Die Ergebnisse der Ausführung des Teils von Programmcode werden derart verwendet, dass nach der Ausführung die Anwendung korrekt funktionieren kann. In beispielhaften Ausführungsformen wird das Sicherheitsverarbeitungsbauteil zusammen mit einem Onlineserver und einem Lizenzverifizierungsserver verwendet, so dass eine mehrstufige Codeschutzarchitektur bereitgestellt wird, die stark genug ist, um entschlossenen Gegner abzuhalten.
  • In einer Ausführungsform, nachdem eine Lizenz zur Verwendung einer Anwendung durch einen Lizenzverifizierungsserver verifiziert ist, wird ein Sicherheitsverarbeitungsbauteil zum Zugreifen auf einen verschlüsselten Abschnitt der Anwendung verwendet, welcher von einem Onlineserver verschlüsselt ist. Das Sicherheitsverarbeitungsbauteil entschlüsselt dann den verschlüsselten Abschnitt der Anwendung unter Verwendung eines Verschlüsselungsschlüssels, der von dem Sicherheitsverarbeitungsbauteil gespeichert wird, und führt den entschlüsselten Abschnitt der Anwendung basierend auf gespeicherten Daten aus. Die Ergebnisse der Ausführung des entschlüsselten Abschnittes der Anwendung werden zu der Anwendung gegeben, die auf einem zweiten Verarbeitungsbauteil ausgeführt wird.
  • In einer Ausführungsform führt ein Grafikverarbeitungsbauteil den entschlüsselten Abschnitt der Anwendung aus. In einer Ausführungsform führt das Grafikverarbeitungsbauteil den verschlüsselten Abschnitt der Anwendung in einer ausgewählten geschützten Videoregion eines Speichers aus. In einer Ausführungsform wird die Fähigkeit, aus der geschützten Videoregion zu lesen, aber auf das Verarbeitungsbauteil beschränkt. In einer Ausführungsform führt das Grafikverarbeitungsbauteil ein zweites Stück von Programmcode, das in Bezug auf die Anwendung steht, in einer geschützten Nicht-Videoregion des Speichers aus.
  • In einer Ausführungsform werden die Zustandsdaten auf dem Chip verwaltet, auf welchem das Sicherheitsverarbeitungsbauteil gebildet ist. In einer Ausführungsform encodiert und decodiert das Sicherheitsverarbeitungsbauteil Zustandsdaten, und diese Zustandsdaten werden abseits des Chips verwaltet, auf welchem das Sicherheitsverarbeitungsbauteil gebildet ist.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung, zusammen mit weiteren Vorteilen davon, mag am besten durch Bezugnahme auf die nachfolgende Beschreibung verstanden werden, wenn diese im Zusammenhang mit den begleitenden Zeichnungen genommen wird, in denen:
  • Die 1A zeigt eine beispielhafte Betriebsumgebung eines Codeschutzsicherheitsverarbeitungsbauteils gemäß einer Ausführungsform.
  • Die 1B stellt Operationen dar, die von Bauteilen durchgeführt werden, die Teil einer Codeschutzarchitektur sind, gemäß einer Ausführungsform.
  • Die 1C stellt Operationen dar, die von Bauteilen durchgeführt werden, die Teil einer Codeschutzarchitektur sind, gemäß einer Ausführungsform.
  • Die 1D stellt Operationen dar, die von Bauteilen durchgeführt werden, die Teil einer Codeschutzarchitektur sind, gemäß einer Ausführungsform.
  • Die 1E stellt Operationen dar, die von Bauteilen durchgeführt werden, die Teil einer Codeschutzarchitektur sind, gemäß einer Ausführungsform.
  • Die 2 zeigt Bauteile eines Codeschutzsicherheitsverarbeitungsbauteils gemäß einer Ausführungsform.
  • Die 3 zeigt ein Flussdiagramm von Operationen, die in einem Verfahren zum Codeschutz unter Verwendung von Online-Authentifizierung und Ausführung von verschlüsseltem Code durchgeführt werden, gemäß einer Ausführungsform.
  • Die 4 zeigt ein Flussdiagramm von Operationen, die in einem Verfahren zum Codeschutz durchgeführt werden, das Online-Authentifizierung und Ausführung von verschlüsseltem Code verwendet, wobei die Ausführung von verschlüsseltem Code von einem Sicherheitsverarbeitungsbauteil durchgeführt wird.
  • Die 5 zeigt ein Flussdiagramm von Operationen, die in einem Verfahren zum Codeschutz durchgeführt werden, das Online-Authentifizierung und Ausführung von verschlüsseltem Code verwendet, wobei die Ausführung von verschlüsseltem Code von einer Grafikprozessoreinheit (GPU) durchgeführt wird.
  • Die 6 zeigt ein Flussdiagramm von Operationen, die in einem Verfahren zum Codeschutz durchgeführt werden, das Online-Authentifizierung und Ausführung von verschlüsseltem Code verwendet, wobei eine Ausführung eines zweiten Shader aus einen geschützten Nicht-Videoregion-(VPR)-Stelle von einer GPU durchgeführt wird.
  • Die 7 zeigt ein Flussdiagramm von Authentifizierungsoperationen, die als Teil eines Verfahrens zum Codeschutz durchgeführt werden, das Online-Authentifizierung und Ausführung von verschlüsseltem Code verwendet, gemäß einer Ausführungsform.
  • Es sollte beachtet werden, dass gleiche Bezugszeichen auf gleiche Elemente in den Figuren verweisen.
  • DETAILLIERTE BESCHREIBUNG
  • Obwohl die vorliegende Erfindung in Verbindung mit einer Ausführungsform beschrieben worden ist, ist es nicht beabsichtigt, dass die Erfindung auf den hierin dargelegten Formen beschränkt sein soll. Es wird im Gegenteil beabsichtigt, solche Alternative, Modifikationen und Äquivalente abzudecken, die vernünftigerweise in den Umfang der Erfindung, wie diese von den angehängten Ansprüchen definiert ist, inkludiert werden mögen.
  • In der folgenden detaillierten Beschreibung sind viele spezifische Details, wie zum Beispiel spezifische Verfahrensreihenfolgen, Strukture, Elemente und Verbindungen, dargelegt worden. Es soll aber verstanden werden, dass diese und andere spezifische Details nicht verwendet werden müssen, um Ausführungsformen der vorliegenden Erfindung zu praktizieren. In anderen Umständen sind wohl bekannte Strukture, Elemente oder Verbindungen weggelassen worden oder sind nicht besonders detailliert beschrieben worden, um eine unnötige Verschleierung der Beschreibung zu vermeiden.
  • Bezugnahmen innerhalb der Beschreibung auf „eine Ausführungsform” oder auf „Ausführungsform” sind zum Angeben beabsichtigt, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft, das/die in Verbindung mit der Ausführungsform beschrieben wird, in zumindest einer Ausführungsform der vorliegenden Erfindung enthalten ist. Das Auftreten der Phrase „in einer Ausführungsform” an verschiedenen Stellen innerhalb der Spezifikation beziehen sich nicht notwendigerweise alle auf die gleiche Ausführungsform, und separate oder alternative Ausführungsformen sind auch nicht gegenseitig ausschließend für andere Ausführungsformen. Des Weiteren werden verschiedene Merkmale beschrieben, die von einigen Ausführungsformen aufgewiesen werden und von anderen nicht. In ähnlicher Weise werden verschiedene Anforderungen bzw. Bedingungen beschrieben, die Anforderungen oder Bedingungen für einige sein mögen aber nicht für andere Ausführungsformen.
  • Einige Abschnitte der detaillierten Beschreibung, die folgt, werden in Form von Prozeduren, Schritten, logischen Blöcken, Verarbeitung und anderen symbolischen Repräsentationen von Operationen auf Datenbits innerhalb eines Computerspeichers vorgelegt. Diese Beschreibungen und Repräsentationen sind die Mittel, die von Fachleuten auf dem Gebiet der Datenverarbeitung verwendet werden, um die Substanz ihrer Arbeit am effizientesten an andere Fachleute auf dem Gebiet zu vermitteln. Eine Prozedur, ein computerausgeführter Schritt, ein logischer Block, ein Prozess etc. wird hier und generell als eine selbst-konsistente Sequenz von Schritten oder Instruktionen verstanden, die zu einem gewünschten Ergebnis führt. Die Schritte sind diejenige, die physikalische Manipulationen von physikalischen Größen fordern. Normalerweise, obwohl nicht notwendigerweise, nehmen diese Größen die Form elektrischer oder magnetischer Signale eines computerlesbaren Speichermediums an und sie sind dazu fähig, gespeichert, übertragen, kombiniert und in anderer Art und Weise in einem Computersystem manipuliert zu werden. Es hat sich ab und zu als praktisch herausgestellt, insbesondere zwecks allgemeiner Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahle oderähnliches zu bezeichnen.
  • Es sollte aber im Gedächtnis behalten werden, dass alle diese und ähnliche Begriffe mit den passenden physikalischen Größen assoziiert werden sollten und lediglich praktische Bezeichnungen sind, die auf diese Größen appliziert werden. Falls nicht spezifisch anders angeführt, wie es aus den folgenden Diskussionen hervorgeht, wird es verstanden werden, dass durch die vorliegenden Erfindung hindurch Diskussionen, die solche Begriffe als „zugreifen” oder „entschlüsseln” oder „ausführen” oder „bereitstellen” oder ähnliches verwenden, sich auf die Handlungen und Prozesse eines Computersystems oder ähnlichen elektronischen Computervorrichtung beziehen, die Daten, die als physikalischen (elektronischen) Größen innerhalb der Register und Speicher und anderen computerlesbaren Medien des Computersystems in andere Daten manipulieren und transformieren, die in ähnlicher Weise als physikalische Größen innerhalb der Speicher oder Register oder anderen solchen Informationsspeicher-, Übertragungs- oder Anzeigevorrichtungen repräsentiert sind.
  • BEISPIELHAFTE BETRIEBSUMGEBUNG VON BAUTEILEN EINER CODESCHUTZARCHITEKTUR, DIE EIN SICHERHEITSVERARBEITUNGSBAUTEIL AUFWEIST, DAS ONLINE-AUTEHNTIFIZIERUNG UND VERSCHLÜSSLTE AUSFÜHRUNG VON CODE VERWENDET GEMÄSS EINER AUSFÜHRUNGSFORM
  • Die 1A zeigt eine beispielhafte Betriebsumgebung 100 von Bauteilen einer Codeschutzarchitektur, die ein Sicherheitsverarbeitungsbauteil 101 aufweist, gemäß einer Ausführungsform. In einer Ausführungsform stellt das Sicherheitsverarbeitungsbauteil 101 sichere Hardwareentschlüsselung eines Stückes von Programmcode bereit, das in einer Hauptanwendung fehlt, welchem es entspricht, und wird im Zusammenhagn mit einem Onlineserver 105 und einem Lizenzverifizierungsserver 107 verwendet, so dass eine mehrstufige Kopierschutzarchitektur bereitgestellt wird, die ausreichend stark ist, um entschlossene Gegner abzuhalten. Die 1A zeigt ein System auf Chip (SOC) 101, ein Gerät 103, einen Onlineserver 105 und einen Lizenzverifizierungsserver 107. In der Ausführungsform der 1A weist das SoC 101 ein Sicherheitsverarbeitungsbauteil 101a, eine CPU 101b, eine geschützte Videoregion (engl. „video protected region) (VPR) 101d und einen Keystore 101e auf.
  • Bezugnehmend auf die 1A ist das Gerät 103 eine Plattform, die zum Betreiben einer Anwendung verwendet wird, die darauf installiert ist. In einer Ausführungsform wird ein Stück von Programmcode aus dieser Anwendung, oder einen „Shader”, das/der für korrektes Betreiben der Anwendung benötigt wird, am Onlineserver 105 verwaltet bzw. aufrechterhalten (engl. „maintained”), wie es in der 1B gezeigt ist. Folglich werden, mit Bezug auf die 1B, Versuche, eine Anwendung 150 auf dem Gerät 103 auszuführen, ohne das fehlende Stück von Programmcode 160 vom Onlineserver 105 zu besorgen, dazu führen, dass die Anwendung 150 nicht korrekt arbeitet. In einer Ausführungsform kann das Stück von Programmcode 160 vom Onlineserver 105 heruntergeladen werden, nachdem die Lizenz des Benutzers zum Betreiben der Anwendung verifiziert worden ist. Der Onlineserver 105 verschlüsselt aber das Stück von Programmcode 160, so dass die Fähigkeit es zu entschlüsseln, auf ein Sicherheitsverarbeitungsbauteil (zum Beispiel 101a in der 1A), das mit dem Gerät 103 assoziiert ist, beschränkt ist. Folglich ist die Fähigkeit, das Stück von Code zu entschlüsseln, auf das Gerät 103 beschränkt.
  • Das Sicherheitsverarbeitungsbauteil 101a ist, wieder mit Bezug auf die 1A, ein Verarbeitungskern, der als ein Teil des Halbleitermaterials gebildet werden kann, aus welchem der Hauptsystemprozessor, CPU 101b, gebildet ist, oder als ein Teil einer diskreten GPU 101c. In einer weiteren Ausführungsform können das Sicherheitsverarbeitungsbauteil 101a, die CPU 101b und die GPU 101c alle ein Teil eines Systems auf Chip 101 sein, wie es in der 1A gezeigt ist. In einer Ausführungsform stellt das Sicherheitsverarbeitungsbauteil 101a einen sicheren Raum bereit, in welchem ein ausgewähltes Stück von Programmcode (zum Beispiel 160 in der 1B) zu entschlüsseln und auszuführen ist. Die Ergebnisse, die von der Ausführung des Programmcodes in dem sicheren Raum, der von dem Sicherheitsverarbeitungsbauteil 101a bereitgestellt ist, erzeugt sind, können für eine Hauptanwendung (zum Beispiel 150 in der 1B), die auf der CPU 101b ausgeführt wird, zur Verwendung in der Ausführung der Hauptanwendung bereitgestellt werden. In einer Ausführungsform kann das Sicherheitsverarbeitungsbauteil 101a einen Keystore 101e aufweist, in welchem ein geheimer Verschlüsselungsschlüssel, der zum Entschlüsseln des Stückes von Programmcode (zum Beispiel 160 in der 1B) verwendet werden kann, verwaltet wird. In einer Ausführungsform kann der geheime Verschlüsselungsschlüssel in Sicherungen (engl. „fuses”) während des Chipherstellungsprozesses gebildet werden. In einer Ausführungsform hat das Sicherheitsverarbeitungsbauteil 101a exklusiven Zugriff auf den geheimen Verschlüsselungsschlüssel, der darin gebildet ist (auf den geheimen Schlüssel mag weder die CPU 101b noch die GPU 101c zugreifen).
  • Die CPU 101b ist der Hauptsystemprozessor. In einer Ausführungsform führt die CPU 101b die Hauptanwendung (zum Beispiel 150 in der 1B) aus. In einer Ausführungsform wird eine Lizenz zum Betreiben der Hauptanwendung (zum Beispiel 150 in der 1B) verifiziert, bevor ein fehlendes Stück von dem Code der Hauptanwendung (zum Beispiel 160 in der 1B) zu dem Sicherheitsprozessor 101a (oder zu der GPU 101c in anderen Ausführungsformen) gegeben wird, um ausgeführt zu werden. Die von dem Sicherheitsprozessor 101a (oder in anderen Ausführungsformen von der GPU 101c) erzeugten Ergebnisse werden zu der Hauptanwendung (zum Beispiel 150 in der 1B) gegeben, um in der Ausführung der Hauptanwendung von der CPU 101b verwendet zu werden. In einer Ausführungsform hat die CPU 101b keinen Zugriff auf den geheimen Verschlüsselungsschlüssel, der von dem Sicherheitsverarbeitungsbauteil 101a verwaltet wird.
  • Die GPU 101c ist ein Grafikprozessor, der in einer Ausführungsform zum Ausführen einer entschlüsselten Version des fehlenden Stückes von dem Programmcode der Hauptanwendung (zum Beispiel 160 in der 1B) verwendet werden kann. In einer Ausführungsform kann die GPU 101c das Stück von Programmcode (zum Beispiel 160 in der 1B) aus VPR 101d ausführen. Zugriff auf die Ausführungsergebnisse ist aber auf das Sicherheitsverarbeitungsbauteil 101a beschränkt. In beispielhaften Ausführungsformen mag die GPU 101c, wie die CPU 101b, keinen Zugriff auf den geheimen Verschlüsselungsschlüssel haben, der von dem Sicherheitsverarbeitungsbauteil 101a verwaltet wird. Die entschlüsselte Version des fehlenden Stückes vom Programmcode der Hauptanwendung (zum Beispiel 160 in der 1B) wird von dem Sicherheitsverarbeitungsbauteil 101a zu der GPU 101c gegeben.
  • Die geschützte Videoregion (VPR) 101d ist ein sicherer Abschnitt vom Speicher (zum Beispiel RAM), der einen sicheren Ausführungsbereich für das fehlende Stück von dem Programmcode der Hauptanwendung (zum Beispiel 160 in der 1B) bereitstellt. In einer Ausführungsform ist die geschützte Videoregion 101d ein Abschnitt vom Speicher, in welchen jedes Prozess hinein schreiben kann, der aber auf der Hardwareebene derart geschützt ist, dass Auslesungen auf vertraute Klienten beschränkt sind. In einer Ausführungsform kann das Sicherheitsverarbeitungsbauteil 101a zum Beispiel aus der VPR 101d lesen, aber es ist der CPU 101b nicht erlaubt, aus der VPR 101d zu lesen. In einer weiteren Ausführungsform sind sowohl Leseaus auch Schreibezugriffe auf die VPR 101d auf das Sicherheitsverarbeitungsbauteil 101a beschränkt.
  • Der Onlineserver 105 verifiziert die Signatur von Geräten (zum Beispiel 103), spielt eine Rolle in Anwendungslizenzverifikationsoperationen und verschlüsselt ein fehlendes Stück vom Programmcode der Hauptanwendung (zum Beispiel 160 in der 1B) oder „Shader”, wenn eine Lizenz verifiziert wird, unter Verwendung eines Verschlüsselungsschlüssels, welcher der eindeutigen ID des beteiligten Gerätes (zum Beispiel Gerät 103) entspricht. Dann gibt der Onlineserver 105 das verschlüsselte Stück von Programmcode (zum Beispiel 160 in der 1B) zu der Anwendung (zum Beispiel 150 in der 1B), die dann das verschlüsselte fehlende Stück von Programmcode (zum Beispiel 160 in der 1B) zu dem Sicherheitsverarbeitungsbauteil 101a zur Entschlüsselung gibt. In einer Ausführungsform speichert der Onlineserver 105 eine eindeutige ID und einen eindeutigen Verschlüsselungsschlüssel für jedes Gerät (zum Beispiel Gerät 103), das vom Anbieter der Geräte zum Codeschutz ausgewählt ist. In einer Ausführungsform wird das fehlende Stück von Programmcode (zum Beispiel 160 in der 1B) verschlüsselt unter Verwendung eines Verschlüsselungsschlüssels, welcher der eindeutigen ID des Gerätes entspricht. In einer Ausführungsform verwaltet der Anbieter eine Datenbank mit solchen privaten Verschlüsselungsschlüsseln, so dass der Onlineserver 105 und das Sicherheitsverarbeitungsbauteil 101a einander sicher authentifizieren können.
  • Der Lizenzverifizierungsserver 107 verifiziert die Lizenzen von Anwendungen (zum Beispiel 150 in der 1B), die es versuchen, ihre Lizenzen verifiziert zu bekommen, so dass sie im Stande gebracht werden können, auf einem bestimmten Gerät (zum Beispiel Gerät 103) normal zu arbeiten. Die Verifizierung der Lizenz einer Anwendung fordert den Onlineserver dazu auf, ein fehlendes Stück von dem Programmcode (zum Beispiel 160 in der 1B) der Anwendung zu verschlüsseln und es an die Anwendung (zum Beispiel 150 in der 1B) zu geben, so dass es entschlüsselt und in der Ausführung der Anwendung verwendet werden kann.
  • BETRIEB
  • Die 1C bis 1E stellen Operationen dar, die von Bauteilen ausgeführt werden, die Teil einer Codeschutzarchitektur gemäß eine Ausführungsform sind. Diese Operationen, die sich auf Codeschutz unter Verwendung von Onlineauthentifizierung und verschlüsselten Ausführung von Code beziehen, sind zum Zwecke der Klarheit und Kürze dargestellt. Es sollte verstanden werden, dass andere Operationen, die in den 1C bis 1E nicht dargestellt sind, gemäß einer Ausführungsform durchgeführt werden können.
  • AUSFÜHRUNG VON ENTSCHLÜSSELTEM CODE DURCH SICHERHEITSVERARBEITUNGSBAUTEIL
  • Bezugnehmend auf 1C, bei A, nachdem eine Lizenz zum Betreiben einer Anwendung (zum Beispiel 150 in der 1B), die auf einem Gerät (zum Beispiel 103 in der 1A) installiert worden ist und auf der CPU 101b ausgeführt wird, von einem Onlineserver (zum Beispiel 105 in der 1A) verifiziert wurde, wird auf ein verschlüsseltes Stück von Programmcode, oder „Shader”, das der Anwendung (zum Beispiel 150 in der 1B) entspricht, von der Anwendung zugegriffen (zum Beispiel 150 in der 1B) und zum Sicherheitsverarbeitungsbauteil 101a zum Zwecke der Entschlüsselung gegeben.
  • Bei B wird das verschlüsselte Stück von Programmcode von dem Sicherheitsverarbeitungsbauteil 101a entschlüsselt. In einer Ausführungsform entschlüsselt das Sicherheitsverarbeitungsbauteil 101a das verschlüsselte Stück von Programmcode unter Verwendung eines geheimen Verschlüsselungsschlüssels, der vom Sicherheitsverarbeitungsbauteil 101a verwaltet wird.
  • Bei C wird das entschlüsselte Stück von Programmcode vom Sicherheitsverarbeitungsbauteil 101a ausgeführt. In einer Ausführungsform werden die Ergebnisse zusammen mit Zustandsdaten gespeichert, die durch das Ausführen des Codes erzeugt werden. In einer Ausführungsform werden die Zustandsdaten auf dem Chip behalten bzw. verwaltet. In weiteren Ausführungsformen werden die Zustandsdaten abseits des Chips behalten bzw. verwaltet. In einer Ausführungsform kann das Sicherheitsverarbeitungsbauteil 101a die Zustandsdaten encodieren und/oder decodieren, die abseits des Chips behalten bzw. verwaltet werden.
  • Bei D wird die CPU 101b Zugriff auf die Ergebnisse gegeben, die von dem Ausführen des entschlüsselten Stückes von Programmcode erzeugt wurden. In einer Ausführungsform verwendet die CPU 101b die Ergebnisse bei der Ausführung der entsprechenden Anwendung (zum Beispiel 150 in der 1B), die darauf ausgeführt wird.
  • Ausführung entschlüsseltes Codes durch GPU
  • Bezugnehmend auf 1D, bei A, nachdem eine Lizenz zum Betreiben einer Anwendung (zum Beispiel 150 in der 1B), die auf einem Gerät (zum Beispiel 103 in der 1A) installiert worden ist und auf der CPU 101b ausgeführt wird, von einem Onlineserver (zum Beispiel 105 in der 1A) verifiziert wurde, wird auf ein verschlüsseltes Stück von Programmcode, oder „Shader”, das der Anwendung (zum Beispiel 150 in der 1B) entspricht, von der Anwendung zugegriffen (zum Beispiel 150 in der 1B) und zum Sicherheitsverarbeitungsbauteil 101a zum Zwecke der Entschlüsselung gegeben.
  • Bei B wird das verschlüsselte Stück von Programmcode von dem Sicherheitsverarbeitungsbauteil 101a entschlüsselt. In einer Ausführungsform entschlüsselt das Sicherheitsverarbeitungsbauteil 101a das verschlüsselte Stück von Programmcode unter Verwendung eines geheimen Verschlüsselungsschlüssels, der vom Sicherheitsverarbeitungsbauteil 101a verwaltet wird.
  • Bei C wird das entschlüsselte Stück von Programmcode in der VPR 101e (zum Beispiel einer geschützten Videoregion). In einer Ausführungsform kann das Sicherheitsverarbeitungsbauteil 101a aus der VPR 101e lesen aber die CPU 101b kann nicht aus der VPR 101e lesen.
  • Bei D wird das entschlüsselte Stück von Programmcode von der GPU 101c ausgeführt. In einer Ausführungsform werden die Ergebnisse in einem Puffer der VPR 101e gespeichert.
  • Bei E wird Zugriff auf die Ergebnisse, die vom Ausführen des entschlüsselten Stückes von Programmcode erzeugt wurden, zum Speicher (zum Beispiel RAM) geschrieben und von der CPU 101b zur Verwendung in der Ausführung der Hauptanwendung (zum Beispiel 150 in der 1B) zugegriffen.
  • Ausführung zweites Shader aus Nicht-VPR-Stelle durch GPU Bezugnehmend auf die 1E ist die Beschreibung der darin gezeigten Operationen A bis D ähnlich der Beschreibung der in der 1C gezeigten Operationen und wird deshalb zwecks Klarheit und Kürze nicht wiederholt.
  • Wieder bezugnehmend auf die 1E, bei E, nach der Entschlüsselung und Ausführung des Stückes von Programmcode oder des „Shader” als Teil der Operationen A bis D, werden die Ergebnisse der Ausführung des Stückes von Programmcode als Eingabe zu der Ausführung eines zweiten Stückes von Programmcode oder „Shader” durch die GPU 101c aus einer geschützten Nicht-Videoregion verwendet. In einer Ausführungsform werden die Ergebnisse, die durch Ausführen des zweiten Stückes von Programmcode erzeugt werden, zu einer Textur, einem Bildschirmobjekt oder einem anderen grafischen Element gegeben.
  • In beispielhaften Ausführungsformen kann jeder Speicher zum Herunterladen eines verschlüsselten Stückes von Programmcode spezifiziert werden, aus welchem eine Eingabe zu dem Sicherheitsverarbeitungsbauteil 101a gemacht werden kann (Cache, RAM etc.). Des Weiteren kann jeder Speicher zum Erhalten der Ausgabe von dem Sicherheitsverarbeitungsbauteil 101a spezifiziert werden. In einer Ausführungsform kann der Eingabe- und Ausgabespeicher entweder verschlüsselt oder nicht verschlüsselt sein.
  • BAUTEILE VOM CODESCHUTZBAUTEIL GEMÄSS EINER AUSFÜHRUNGSFORM
  • Die 2 zeigt Bauteile eines Codeschutzsicherheitsverarbeitungsbauteil 101a gemäß einer Ausführungsform. In einer Ausführungsform implementieren die Bauteile des Systems 101a einen Algorithmus zum Codeschutz in Hardware. In der Ausführungsform der 2 weisen Bauteile des Sicherheitsverarbeitungsbauteils 101a ein Bauteil 201 zum Zugreifen auf verschlüsselten Code, ein Bauteil 203 zum Entschlüsseln verschlüsseltes Codes, ein Bauteil 205 zum Ausführen verschlüsseltes Codes, ein Bauteil 207 zum Bereitstellen von Zugriff auf Ergebnisse, einen Shader-Cache 209, einen Zustandscache 211, und einen Keystore 101e.
  • Das Bauteil 201 zum Zugreifen auf verschlüsselten Code greift auf ein Stück von Programmcode (zum Beispiel einen „Shader”), das von einem Onlineserver verschlüsselt worden ist, aus einer Anwendung zu, welcher das Stück von Programmcode entspricht, das auf einer CPU (zum Beispiel der CPU 101b in der 1A) ausgeführt wird. In einer Ausführungsform wird auf das Stück von Programmcode (zum Beispiel 160 in der 1B) für korrektes Funktionieren der Anwendung gebaut, die auf der CPU ausgeführt wird.
  • Das Bauteil 203 zum Entschlüsseln verschlüsseltes Codes entschlüsselt das verschlüsselte Stück von Programmcode unter Verwendung eines Schlüssels, der im Keystore 101e des Sicherheitsverarbeitungsbauteil 101a gespeichert ist. In einer Ausführungsform wird das entschlüsselte Stück von Programmcode, das sich aus der Entschlüsselung ergibt, in dem Shader-Cache 209 des Sicherheitsverarbeitungsbauteil 101a gespeichert.
  • Das (optionale) Bauteil 205 zum Ausführen verschlüsseltes Codes führt das entschlüsselte Stück von Programmcode aus, das von dem Bauteil 203 zum Entschlüsseln verschlüsseltes Codes entschlüsselt ist. In einer Ausführungsform werden die Ergebnisse des Ausführens im spezifizierten Speicher gespeichert. In einer Ausführungsform können gespeicherte Zustandsdaten in der Ausführung des entschlüsselten Stückes von Programmcode verwendet werden. In einer anderen Ausführungsform wird die Ausführung des entschlüsselten Stückes von Programmcode von einer GPU durchgeführt.
  • Das Bauteil 207 zum Bereitstellen von Zugriff auf Ergebnisse stellt Zugriff auf die Ergebnisse bereit, die vom Bauteil 205 zum Ausführen verschlüsseltes Codes erzeugt wurden. In einer Ausführungsform wird Zugriff auf die Ergebnisses der Ausführung zu der Anwendung (zum Beispiel 150 in der 1B) gegeben, welche dem entschlüsselten Stück von Programmcode entspricht (und auf der CPU ausgeführt wird). In einer Ausführungsform werden die Ergebnisse der Ausführung als Eingabe zu der Ausführung eines zweiten Stückes von Programmcode in einer nicht-VPR-Region gegeben, wenn eine GPU das entschlüsselte Stück von Programmcode ausführt.
  • Der Shader-Cache 209 speichert das entschlüsselte Stück von Programmcode, das vom Bauteil 203 zum Entschlüsseln verschlüsseltes Codes entschlüsselt wird. In einer Ausführungsform wird das entschlüsselte Stück von Programmcode im Shader-Cache 209 gespeichert bis ein Aufruf von der Hauptanwendung, welche dem entschlüsselten Stück von Programmcode entspricht, gemacht wird, der seine Ausführung veranlasst.
  • Der Zustandscache 211 speichert Daten, die als eine Eingabe zu den Ausführungsoperationen des entschlüsselten Programmcodes (die hierin mit Bezug auf die 4 und 5 detailliert beschrieben werden) bereitgestellt werden. In einer Ausführungsform können Zustandsdaten sowohl kurzfristige als auch langfristige Zustandsdaten aufweisen. In einer Ausführungsform können kurzfristige Zustandsdaten Daten aufweisen, sind aber nicht darauf beschränkt, die aus der vorhergehenden Ausführung des Stückes von Programmcode oder „Shader” abgeleitet sind, das eine Konfiguration von Ausführungsvariablen wiedergibt, nachdem dieser Ausführung des Shaders abgeschlossen worden ist. In einer Ausführungsform können langfristige Zustandsdaten solche Daten aufweisen, sind aber nicht darauf beschränkt, wie Spielerscore-Attribute (engl. „player score attributes”), die verwaltet und verwendet werden zum Ableiten von Scores. In einer Ausführungsform können sowohl langfristige als auch kurzfristige Zustandsdaten auf dem Chip verwaltet werden. In einer Ausführungsform können langfristige Zustandsdaten von dem Sicherheitsverarbeitungsbauteil encodiert und decodiert und abseits des Chips gespeichert werden.
  • Der Keystore 101e speichert einen geheimen Verschlüsselungsschlüssel, der zum Entschlüsseln eines Stückes von Programmcode verwendet wird, das von einem Onlineserver (zum Beispiel 105 in der 1A) bereitgestellt wird. In einer Ausführungsform speichert der Keystore 101e einen Verschlüsselungsschlüssel, welcher der eindeutigen ID des Gerätes entspricht, auf dem die Anwendung installiert ist, die dem Stück von Programmcode entspricht.
  • In einer Ausführungsform können die obengenannten Bauteilen des Sicherheitsverarbeitungsbauteils 101a in Hardware implementiert sein. In einer Ausführungsform können Bauteile und Operationen des Bauteils 101a von Bauteilen und Operationen eines oder mehrerer Computerbauteile (zum Beispiel CPU 101b oder GPU 101c in der 1A) umfasst sein. In einer weiteren Ausführungsform können Bauteile und Operationen des Systems 101a separat von den vorerwähnten einem oder mehreren Computerbauteilen, kann aber gemeinsam mit Bauteilen und Operationen daraus arbeiten.
  • VERFAHREN ZUM SCHÜTZEN VON CODE UNTER VERWENDUNG VON ONLINEAUTHENTIFIZIERUNG UND VERSCHLÜSSELTER CODEAUSFÜHRUNG GEMÄSS EINER AUSFÜHRUNGSFORM
  • Die 3 zeigt ein Flussdiagramm 300 von Operationen, die in einem Verfahren zum Codeschutz unter Verwendung von Online-Authentifizierung und Ausführung von verschlüsseltem Code durchgeführt werden, gemäß einer Ausführungsform. Die 4, 5 und 6 zeigen Flussdiagramme 400, 500 und 600 von beispielhaften Ausführungsformen des Verfahrens der 3. Die 7 zeigt ein Flussdiagramm 700 von Operationen, die in einem Authentifizierungsprozess eines Verfahrens zum Codeschutz durchgeführt werden, gemäß einer Ausführungsform. Die Flussdiagramme weisen Prozesse auf, die in einer Ausführungsform von Prozessoren und elektrischen Bauteilen unter der Kontrolle von computerlesbaren und computerausführbaren Instruktionen durchgeführt werden können. Obwohl spezifische Operationen in den Flussdiagrammen offenbart sind, sind solche Operationen beispielhaft. Folglich ist die vorliegende Ausführungsform gut geeignet zum Ausführen verschiedener anderen Operationen oder Variationen der in dem Flussdiagramm angeführten Operationen. Obwohl spezifische Operationen in den Flussdiagrammen offenbart sind, sind solche Schritte beispielhaft. Das heißt, dass die vorliegenden Ausführungsformen gut geeignet sind zum Ausführen verschiedener anderen Operationen oder Variationen der in dem Flussdiagramm angeführten Operationen.
  • Beispielhaftes Verfahren zum Schützen von Code
  • Bezugnehmend auf die 3 wird bei 301 auf ein verschlüsseltes Stück von Programmcode oder „Shader” (zum Beispiel 160 in der 1B) zugegriffen. Wie hierin diskutiert, wird auf das verschlüsselte Stück von Programmcode von einer Anwendung aus einem Onlineserver (zum Beispiel dem Onlineserver 105 in der 1A) zugegriffen, welcher es entspricht, nachdem eine Lizenz für das Betreiben der Anwendung verifiziert worden ist.
  • Bei 303 wird das verschlüsselte Stück von Programmcode (zum Beispiel 160 in der 1B) entschlüsselt. Wie hierin diskutiert, wird das verschlüsselte Stück von Programmcode durch ein Hardware-Sicherheitsverarbeitungsbauteil entschlüsselt, das einen geheimen Verschlüsselungsschlüssel verwaltet, mit welchem das verschlüsselte Stück von Programmcode entschlüsselt wird.
  • Bei 305 wird das entschlüsselte Stück von Programmcode ausgeführt. In einer Ausführungsform wird das entschlüsselte Stück von Programmcode von dem Sicherheitsverarbeitungsbauteil (zum Beispiel 101a in der 1A) ausgeführt. In einer weiteren Ausführungsform wird das entschlüsselte Stück von Programmcode in einer VPR (zum Beispiel 101d in der 1A) gespeichert und von einer GPU (zum Beispiel GPU 101c der 1A) ausgeführt.
  • Bei 307 wird Zugriff auf die Ergebnisse des ausgeführten Programmcodes bereitgestellt. In einer Ausführungsform werden auf die Ergebnisses des ausgeführten Programmcodes von einer Hauptanwendung (zum Beispiel 150 in der 1B) zugegriffen, welcher es entspricht, die auf einer CPU (zum Beispiel CPU 101b der 1A) ausgeführt und von der CPU zum Ausführen der Hauptanwendung verwendet wird. In einer weiteren Ausführungsform, wenn die GPU das entschlüsselte Stück von Programmcode ausführt, werden die Ergebnisse der Ausführung als Eingabe zu der Ausführung eines zweiten Stückes von Programmcode in einer nicht-VPR-Region gegeben.
  • Ausführung von entschlüsseltem Code durch Sicherheitsverarbeitungsbauteil
  • Die 4 zeigt ein Flussdiagramm von Operationen, die als ein Teil eines Verfahrens zum Codeschutz durchgeführt werden, das Onlineauthentifizierung und verschlüsselte Codeausführung verwendet, wobei das Ausführen des entschlüsselten von einem Sicherheitsverarbeitungsbauteil durchgeführt wird. Bezugnehmend auf die 4 führt die CPU 101b, als ein Teil des Verfahrens, eine Hauptanwendung (zum Beispiel 150 in der 1B) aus, welcher der entschlüsselte Code entspricht. Die Operationen 401 bis 421 sind mit der Ausführung der Hauptanwendung (zum Beispiel 150 in der 1B) assoziiert. Wie in der 4 gezeigt, bei 401, nachdem eine Anwendung gekauft und auf einem Gerät installiert worden ist, kann die Initialisierung der Anwendung gestartet werden und es wird bestimmt, ob ein sicheres Stück von Programmcode oder ein „Shader” (zum Beispiel 160 in der 1B) für die Anwendung existiert. Falls bei 403 kein sicheres Stück von Programmcode (zum Beispiel 160 in der 1B) für die Anwendung existiert, wird die Anwendung geprüft und initialisiert. Bei 405, falls ein sicheres Stück von Programmcode (zum Beispiel 160 in der 1B) für die Anwendung existiert, wird das verschlüsselte Stück von Programmcode (zum Beispiel 160 in der 1B) zu dem Sicherheitsverarbeitungsbauteil 101a zur Entschlüsselung gesendet. Bei 407 wird die Initialisierung der Anwendung abgeschlossen. Bei 409 wird es von dem Sicherheitsverarbeitungsbauteil 101a bestimmt, ob das Stück von Programmcode (zum Beispiel 160 in der 1B) bereit ist. Bei 411, falls das Stück von Programmcode (zum Beispiel 160 in der 1B) bereit ist, wird die Hauptausführungsschleife für die Anwendung gestartet. Bei 413, falls das Stück von Programmcode (zum Beispiel 160 in der 1B) nicht bereit ist, wird die Anwendung verlassen bzw. beendet oder neu initialisiert. Bei 415 wird eine Instruktion an das Sicherheitsverarbeitungsbauteil 101a gesendet, die es anweist, das Stück des Programmcodes (zum Beispiel 160 in der 1B) zu starten. Bei 417 werden andere Anwendungsfunktionen ausgeführt. Bei 419 werden die Ergebnisse der Ausführung des Stückes von Programmcode (zum Beispiel 160 in der 1B) von dem Sicherheitsverarbeitungsbauteil 101a besorgt und verwendet. Bei 421 wird es bestimmt, ob die Ausführung fortgesetzt werden soll. Wenn es bestimmt wird, dass die Ausführung fortgesetzt werden soll, wird die Kontrolle zurück nach 411 retourniert. Wenn es bestimmt wird, dass die Ausführung nicht fortgesetzt werden soll, wird die Ausführungsschleife verlassen bzw. beendet.
  • Wie in der 4 gezeigt, entschlüsselt und führt das Sicherheitsverarbeitungsbauteil 101a in einer Ausführungsform das Stück von Programmcode (zum Beispiel 160 in der 1B) aus, das der Hauptanwendung (zum Beispiel 150 in der 1B, die wie oben beschrieben auf der CPU 101b ausgeführt wird) entspricht. Diese Operationen, 423 bis 431, werden mit Bezug auf die 4 beschrieben. Bezugnehmend auf die 4 wird das verschlüsselte Stück von Programmcode (zum Beispiel 160 in der 1B) bei 423 entschlüsselt. In einer Ausführungsform wird der Prozessor-Entschlüsselungsschlüssel 101e zum Entschlüsseln des Stückes von Programmcode (zum Beispiel 160 in der 1B) verwendet. Bei 425 wird es bestimmt, ob das Stück von Programmcode (zum Beispiel 160 in der 1B) korrekt entschlüsselt worden ist und ob das Zeitlimit nicht abgelaufen ist. Wenn ja bei 427, wird das Stück von Programmcode (zum Beispiel 160 in der 1B) im Shader-Cache 209 des Sicherheitsverarbeitungsgerätes 101a gespeichert und die Antworte „bereit” wird für die Shader-Bereit-Anfrage retourniert. Bei 429 wird es auf dem Stück des Programmcodes (zum Beispiel 160 in der 1B) von dem Shader-Cache 209 zugegriffen und ausgeführt. Und bei 431 wird die Ausgabe oder das Ereignis vom Ausführen des Stückes von Programmcode (zum Beispiel 160 in der 1B) gespeichert und zu der Hauptanwendung (zum Beispiel 150 in der 1B) gegeben und Zustandsdaten werden im Zustandscache 211 (zum Beispiel RAM etc.) gespeichert.
  • Ausführung von entschlüsseltem Code durch GPU
  • Die 5 zeigt ein Flussdiagramm von Operationen, die als ein Teil eines Verfahrens zum Codeschutz durchgeführt werden, das Onlineauthentifizierung und verschlüsselte Codeausführung verwendet, wobei das Ausführen des entschlüsselten von der GPU 101c durchgeführt wird. Bezugnehmend auf die 5 führt die CPU 101b, als ein Teil des Verfahrens, die Hauptanwendung (zum Beispiel 150 in der 1B) aus. Die Operationen 501 bis 523 sind mit der Ausführung der Hauptanwendung (zum Beispiel 150 in der 1B) assoziiert. Wie in der 5 gezeigt, bei 501, nachdem eine Anwendung gekauft und auf einem Gerät installiert worden ist, kann die Initialisierung der Anwendung gestartet werden und es wird bestimmt, ob ein sicheres Stück von Programmcode oder ein „Shader” (zum Beispiel 160 in der 1B) für die Anwendung existiert. Falls bei 503 kein sicheres Stück von Programmcode (zum Beispiel 160 in der 1B) für die Anwendung existiert, wird die Anwendung geprüft und initialisiert. Bei 505, falls ein sicheres Stück von Programmcode (zum Beispiel 160 in der 1B) für die Anwendung existiert, wird das verschlüsselte Stück von Programmcode (zum Beispiel 160 in der 1B) zu dem Sicherheitsverarbeitungsbauteil 101a zur Entschlüsselung gesendet. Bei 507 wird die Initialisierung der Anwendung abgeschlossen. Bei 509 wird es von dem Sicherheitsverarbeitungsbauteil 101a bestimmt, ob das Stück von Programmcode (zum Beispiel 160 in der 1B) bereit ist. Bei 511, falls das Stück von Programmcode (zum Beispiel 160 in der 1B) bereit ist, wird die Hauptausführungsschleife für die Anwendung gestartet. Bei 513, falls das Stück von Programmcode (zum Beispiel 160 in der 1B) nicht bereit ist, wird die Anwendung verlassen bzw. beendet oder neu initialisiert. Bei 515 wird das relevante Stück von Programmeingabe (zum Beispiel 160 in der 1B) zum RAM geschrieben. Bei 517 wird eine Instruktion an die GPU 101c gesendet, die die GPU 101c anweist, das Stück des Programmcodes (zum Beispiel 160 in der 1B) auszuführen. Bei 519 werden andere Anwendungsfunktionen ausgeführt. Bei 521 werden die Ergebnisse der Ausführung des Stückes von Programmcode oder des „Shader” (zum Beispiel 160 in der 1B) aus RAM besorgt und verwendet. Bei 523 wird es bestimmt, ob die Ausführung fortgesetzt werden soll. Wenn es bestimmt wird, dass die Ausführung fortgesetzt werden soll, wird die Kontrolle zurück nach 511 retourniert. Wenn es bestimmt wird, dass die Ausführung abgeschlossen ist, wird die Ausführungsschleife verlassen bzw. beendet.
  • Wie in der 5 gezeigt, entschlüsselt das Sicherheitsverarbeitungsbauteil 101a in einer Ausführungsform das Stück von Programmcode (zum Beispiel 160 in der 1B), platziert das Stück von Programmcode (zum Beispiel 160 in der 1B) in der VPR 101e und instruiert die GPU 101c, das Stück von Programmcode (zum Beispiel 160 in der 1B) auszuführen. Diese Operationen, 525 bis 535, werden mit Bezug auf die 5 beschrieben. Wieder bezugnehmend auf die 5 wird das verschlüsselte Stück von Programmcode (zum Beispiel 160 in der 1B) bei 525 entschlüsselt. In einer Ausführungsform wird der Prozessor-Entschlüsselungsschlüssel 101e zum Entschlüsseln des Stückes von Programmcode (zum Beispiel 160 in der 1B) verwendet. Wenn es bei 527 bestimmt wird, dass das Stück von Programmcode (zum Beispiel 160 in der 1B) korrekt entschlüsselt worden ist und dass ein Zeitlimit nicht abgelaufen ist, wird das Stück von Programmcode (zum Beispiel 160 in der 1B) bei 529 in die VPR hinein platziert. Wenn es bei 529 bestimmt wird, dass das Stück von Programmcode (zum Beispiel 160 in der 1B) nicht korrekt entschlüsselt worden ist, dann wird diese Information zu der Hauptanwendung (zum Beispiel 150 in der 1B) gegeben, die auf der CPU 101b ausgeführt wird (siehe Operation 509). Bei 531, nachdem das Stück von Programmcodeeingabe zum RAM geschrieben worden ist, wird das Stück von Programmcodeeingabe aus dem RAM gelesen und zu der VPR 101d geschrieben. Bei 533 instruiert das Sicherheitsverarbeitungsbauteil 101a die GPU 101c, das Stück des Programmcodes (zum Beispiel 160 in der 1B) auszuführen. Bei 535 wird die Ausgabe, die durch Ausführen des Stückes von Programmcode (zum Beispiel 160 in der 1B) erzeugt wird, aus der VPR gelesen und zum RAM geschrieben. In einer Ausführungsform kann, abhängig von der Hardware, die verwendet wird, entweder die Hauptanwendung (zum Beispiel 150 in der 1B) oder das Sicherheitsverarbeitungsbauteil (zum Beispiel 101a in der 1A) die Operationen 531 und 533 durchführen.
  • Wie in der 5 gezeigt, erhält die VPR 101d das Stück von Programmcode (zum Beispiel 160 in der 1B) und stellt einen Raum für sicheres Ausführen des Stückes von Programmcode (zum Beispiel 160 in der 1B) bereit. Diese Operationen, 537 bis 545, werden mit Bezug auf die 5 beschrieben. Bezugnehmend auf die 5 erhält die VPR 101d bei 537 das Stück von Programmcode (zum Beispiel 160 in der 1B). Bei 539 wird das Stück von Programmcode (zum Beispiel 160 in der 1B) in einen Eingangspuffer in der VPR 101d hinein platziert. Bei 541, nach der Instruktion, das Stück von Programmcode (zum Beispiel 160 in der 1B) auszuführen, wird das Stück von Programmcode (zum Beispiel 160 in der 1B) von der GPU 101d ausgeführt. Bei 543 wird die Ausgabe in einem Puffer in der VPR 101d gespeichert. In einer Ausführungsform wird diese Ausgabe zu dem Sicherheitsverarbeitungsbauteil 101a gegeben und es wird von der Hauptanwendung, die auf der CPU 101b ausgeführt wird, darauf zugegriffen. Und bei 545 sind die Operationen beendet, die mit dem Stück von Programmcode (zum Beispiel 160 in der 1B) verwandt sind.
  • Ausführen eines zweiten Shader aus einer Nicht-VPR-Stelle durch GPU
  • Die 6 zeigt ein Flussdiagramm von Operationen, die als ein Teil eines Verfahrens zum Codeschutz durchgeführt werden, das Online-Authentifizierung und Ausführung von verschlüsseltem Code verwendet, wobei eine Ausführung eines zweiten Shader aus einer Nicht-VPR-Stelle von GPU 101c durchgeführt wird. Diese Operationen werden mit Bezug auf die 6 beschrieben. Die Beschreibung der Operationen 601 bis 645 ist ähnlich der Beschreibung für die Operationen 501 bis 545, die oben beschrieben sind und folglich nicht wiederholt werden. Bezugnehmend auf die 6 wird bei 647 die Ausgabe von einem laufenden Stück von Programmcode oder „Shader” erhalten und zum Ausführen eines zweiten Shader verwendet. Und bei 649 wird der zweite Shader an eine Textur, ein Bildschirmobjekt oder ein anderes grafisches Element ausgegeben. In einer Ausführungsform kann, abhängig von der Hardware, die verwendet wird, entweder die Hauptanwendung (zum Beispiel 150 in der 1B) oder das Sicherheitsverarbeitungsbauteil (zum Beispiel 101a in der 1A) die Operationen 631 und 633 durchführen.
  • Authentifizierung
  • Die 7 zeigt ein Flussdiagramm von Authentifizierungsoperationen, die als ein Teil eines Verfahrens zum Codeschutz durchgeführt werden, das Online-Authentifizierung und Ausführung von verschlüsseltem Code verwendet, gemäß einer Ausführungsform. Bezugnehmend auf die 7 wird bei 701 die Anwendungs-ID geprüft und initialisiert. Bei 703 wird die Benutzer-ID des beteiligten Systems auf Chip (SoC) und eine Benutzer-ID-Signatur besorgt. Bei 705 wird eine Signatur aus der Benutzer-ID und dem Verschlüsselungsschlüssel (Sicherheitsverarbeitungsbauteil) erzeugt. Bei 707 werden die Benutzer-ID, die Signatur und die Anwendungs-ID von der Hauptanwendung (zum Beispiel 150 in der 1B) erzeugt. Bei 709 wird die Signatur für die Benutzer-ID verifiziert. Bei 711 wird ein Token erzeugt. Bei 713 wird es bestimmt, ob der Server die Lizenz verifizieren soll. Falls ja wird es bei 715 bestimmt, ob das Gerät eine lizenzierte Anwendungs-ID hat (zum Beispiel unter Verwendung des Lizenzverifizierungsserver 107, der die Anfrage fertigstellt und das Token signiert). Dann wird bei 717 eine Verifizierung der Gültigkeit der Lizenz und, ob die Antwort korrekt signiert ist, gemacht. Falls nein wird das Token bei 719 für eine Onlineprüfung verwendet (zum Beispiel unter Verwendung des Lizenzverifizierungsservers 107, der die Anfrage fertigstellt und das Token signiert). Dann wird die Lizenzantwort bei 721 empfangen und an den Server gesendet (siehe 717). Bei 723 wird ein Stück von Programmcode oder eine „Shader” verschlüsselt, das/der der Anwendungs-ID entspricht. Bei 725 wird der verschlüsselte Shader zu der Anwendung (zum Beispiel 150 in der 1B) gegeben. Und bei 727 wird der Shader empfangen und gespeichert von der Anwendung (zum Beispiel 150 in der 1B), und die Kontrolle wird zurück an die Anwendungsinitialisierung 729 retourniert. Es sollte verstanden werden, dass die Authentifizierungs- und Verifizierungsoperationen, die mit Bezug auf die 7 diskutiert wurden, nur beispielhaft sind, und dass jegliche sicheren serverbasierten Authentifizierungs- und Verifizierungsprozessen eingesetzt werden können, deren erfolgreicher Abschluss zum Bereitstellen des verschlüsselten Shader für die Hauptanwendung führt, wie es hierin diskutiert wurde (siehe 725).
  • Ein beispielhaftes Merkmal der hierin beschriebenen Methodologie ist, dass es die beteiligten Anwendungen ein Schlüsselstück von Programmcode (zum Beispiel 160 in der 1B) fehlt, das nach Lizenzverifizierung heruntergeladen werden kann. Und, dass das fehlende Stück von Programmcode (zum Beispiel 160 in der 1B) für ein spezifisches Sicherheitsverarbeitungsbauteil verschlüsselt ist. Somit kann die Entschlüsselung und Ausführung des Stückes von Programmcode (zum Beispiel 160 in der 1B) auf das individuelle Gerät des Lizenzinhabers beschränkt werden. Das Stück von Programmcode (zum Beispiel 160 in der 1B) kann des Weiteren in einer privaten und sicheren Art und Weise ausgeführt werden, so dass Diebstahl verhindert werden kann. In einer Ausführungsform, falls der Lizenzinhaber mehrere Geräte hat, wird die Lizenzverifizierung durchgeführt jedes Mal, wenn die Anwendung auf einem jeweiligen Gerät installiert und ausgeführt wird.
  • Aufgrund der hierin beschriebenen Architektur wird die Anwendung (zum Beispiel 150 in der 1B), falls die hierin beschriebene Lizenzüberprüfung entfernt wird, ohne ein Schlüsselstück von Programmcode ausgeführt werden. Obwohl die Anwendung (zum Beispiel 150 in der 1B) laufen mag, wird sie nicht korrekt funktionieren. Falls zum Beispiel ein Spiel gemäß den hierin beschriebenen Prinzipien formatiert ist und ein Abschnitt seiner künstlichen Intelligenz (AI) aus einem fehlenden Stück von Programmcode (zum Beispiel 160 in der 1B) abgeleitet wird, dann wird die AI nur in der Lage sein, ausgeführt zu werden, wenn die Lizenzüberprüfung bestanden wird (die Lizenz wird verifiziert). Werden somit Abrufe entfernt, um die Lizenzüberprüfungen zu umgehen, dann mag das Spiel laufen, aber ohne ordnungsgemäße AI. Des Weiteren ist es wahrscheinlich, dass das Spiel ohne ordnungsgemäße AI unspielbar ist, da die AI eine Schlüsselkomponente des Spielens bildet.
  • In einem weiteren Beispiel, falls der Kollisionsdetektionscode eines Spiels als Binär bei dem Sicherheitsverarbeitungsbauteil (zum Beispiel 101a in der 1A) läuft, und der Lizenzierungsserver überprüft und Aufrufe nach dem Sicherheitsverarbeitungsbauteil (zum Beispiel 101a in der 1A) entfernt sind, dann werden unrechtmäßige Kopien ausgeführt aber der Spieler kann durch Wände und andere Objekte in dem Spiel gehen, wobei das Erlebnis zerstört wird.
  • In noch einem weiteren Beispiel, falls die „erzeuge verfügbare Schriftarten” eines Wortprozessors als eine binäre von dem Sicherheitsverarbeitungsbauteil ausgeführt wird und Aufrufe nach dem Sicherheitsverarbeitungsbauteil entfernt sind, dann mag die Anwendung (zum Beispiel 150 in der 1B) nicht die Liste von verfügbaren Schriftarten erzeugen. Des Weiteren kann der Benutzer ohne die Schriftarten nichts schreiben, was die Raubkopie des Wortprozessors nutzlos macht.
  • Was beispielhafte Ausführungsformen davon anbelangt, wird eine Bauteilarchitektur und Verfahren zum Codeschutz offenbart. Ein Verfahren enthält ein Verwenden eines Sicherheitsverarbeitungsbauteils, um auf einen verschlüsselten Abschnitt eines Anwendungsprogrammes zuzugreifen, das von einem Onlineserver verschlüsselt ist, nachdem eine Lizenz für die Benutzung des Anwendungsprogrammes von dem Onlineserver authentifiziert ist. Das Sicherheitsverarbeitungsbauteil wird zum Entschlüsseln des verschlüsselten Abschnittes des Anwendungsprogrammes unter Verwendung eines Verschlüsselungsschlüssels verwendet, der in dem Sicherheitsverarbeitungsbauteil gespeichert ist. Der verschlüsselte Abschnitt des Anwendungsprogrammes wird basierend auf gespeicherten Zustandsdaten ausgeführt. Ergebnisse werden zu dem Anwendungsprogramm gegeben, das auf einem zweiten Verarbeitungsbauteil ausgeführt wird.
  • Obwohl viele der Bauteile und Prozesse oben der Einfachheit halber in Singular beschrieben werden, wird es von einem Fachmann verstanden werden, dass mehrere Bauteile und widerholte Prozesse auch verwendet werden könne, um die Techniken der vorliegenden Erfindung zu praktizieren. Während die Erfindung insbesondere mit Bezug auf spezifische Ausführungsformen der Erfindung gezeigt und beschrieben worden ist, wird es des Weiteren von Fachleuten verstanden werden, dass Änderungen in Form und Details der offenbarten Ausführungsformen gemacht werden mögen, ohne von dem Geist oder Umfang der Erfindung abzuweichen. Ausführungsbeispiele der Erfindung mögen zum Beispiel mit einer Vielfalt an Bauteilen verwendet werden und sollte nicht auf die oben erwähnten beschränkt werden. Es ist daher beabsichtigt, dass die Erfindung interpretiert wird, um alle Variationen und Äquivalente, die innerhalb des wahren Geistes und Umfangs der vorliegenden Erfindung fallen, einzuschließen.
  • Bezugszeichenliste
  • Fig. 1A
  • 101
    SOO
    101a
    Sicherheitsverarbeitungsbauteil
    101b
    CPU
    101c
    GPU
    101d
    VPR
    101e
    Keystore
    105
    Onlineserver
    107
    Lizenzverifizierungsserver
    Fig. 1B
    101b
    CPU
    105
    Onlineserver
    150
    Anwendung
    160
    Shader
    Fig. 4
    101b
    CPU-Hauptanwendung
    401
    Starte Anw. Init.: Existiert das sichere Stück von Programmcode der Anwendung?
    403
    Überprüfe und Installiere Anwendung
    405
    Sende verschlüsseltes Stück von Programmcode an Prozessor
    407
    Schließe Initialisierung der Anwendung ab
    409
    Stück von Programmcode bereit?
    413
    Beende/Re-Initialisiere
    411
    Starte Hauptausführungsschleife
    415
    Rufe Stück von Programmcode auf
    417
    Führe andere Anwendungsfunktion aus
    419
    Verwende Ergebnisse
    421
    Fortfahren?
    101a
    Sicherheitsverarbeitungsbauteil
    101e
    Prozessorentschlüsselungsschlüssel
    423
    Entschlüssele Stück von Programmcode
    425
    Stück von Programmcode korrekt entschlüsselt und Zeitlimit nicht abgelaufen
    427
    Speichere Stück von Programmcode in Cache in Prozessor und retourniere BEREIT
    209
    Shader-Cache
    429
    Führe Stück von Programmcode aus
    431
    Speichere Ausgabe und Zustand
    211
    Zustands-Cache
    Fig. 5
    101b
    CPU-Hauptanwendung
    501
    Starte Anw. Init.: Existiert der sichere Shader der Anwendung?
    503
    Überprüfe und initialisiere Anwendung
    505
    Sende verschlüsseltes Stück von Programmcode an Prozessor
    507
    Schließe Initialisierung der Anwendung ab
    509
    Stück von Programmcode bereit?
    513
    Beende/Re-Initialisiere
    511
    Starte Hauptausführungsschleife
    515
    Schreibe Stück von Programmcodeeingabe zu RAM
    517
    Sage GPU, dass sie das Stück von Programmcode ausführen soll
    519
    Führe andere Anwendungsfunktionen aus
    521
    Lese Ausgabe aus RAM, verwende sie
    523
    Fortfahren?
    101a
    Sicherheitsverarbeitungsbauteil
    101e
    Prozessorentschlüsselungsschlüssel
    525
    Entschlüssele Stück von Programmcode
    527
    Stück von Programmcode korrekt entschlüsselt und Zeitlimit nicht abgelaufen
    529
    Platziere Stück von Programmcode in VPR
    531
    Lese Eingabe aus RAM, schreibe zu VPR
    533
    Sage GPU, dass sie das Stück von Programmcode ausführen soll
    535
    Lese Ausgabe aus VPR, schreibe zu RAM
    101c/101d
    GPU/VPR
    537
    Stück von Programmcode in VPR hinein
    539
    Eingabepuffer in VPR
    541
    Führe das Stück von Programmcode aus
    543
    Speichere Ausgabe in Puffer in VPR
    545
    Beende Shader
    Fig. 6
    101b
    CPU-Hauptanwendung
    601
    Starte Anw. Init.: Existiert der sichere Shader der Anwendung?
    603
    Überprüfe und initialisiere Anwendung
    605
    Sende verschlüsseltes Stück von Programmcode an Prozessor
    607
    Schließe Initialisierung der Anwendung ab
    609
    Shader bereit?
    613
    Beende/Re-Initialisiere
    611
    Starte Hauptausführungsschleife
    615
    Schreibe Stück von Programmcodeeingabe zu RAM
    617
    Sage GPU, dass sie das Stück von Programmcode ausführen soll
    619
    Führe andere Anwendungsfunktionen aus
    621
    Lese Ausgabe aus RAM, verwende sie
    623
    Fortfahren?
    101a
    Sicherheitsverarbeitungsbauteil
    101e
    Prozessorentschlüsselungsschlüssel
    625
    Entschlüssele Stück von Programmcode
    627
    Stück von Programmcode korrekt entschlüsselt und Zeitlimit nicht abgelaufen
    629
    Platziere Stück von Programmcode in VPR
    631
    Lese Eingabe aus RAM, schreibe zu VPR
    633
    Sage GPU, dass sie das Stück von Programmcode ausführen soll
    635
    Lese Ausgabe aus VPR, schreibe zu RAM
    101c/101d
    GPU/VPR
    637
    Stück von Programmcode in VPR hinein
    639
    Eingabepuffer in VPR
    641
    Führe das Stück von Programmcode aus
    643
    Speichere Ausgabe in Puffer in VPR
    645
    Beende Shader
    647
    Führe Shader 2 aus
    649
    Shader 2 gibt an A-Textur, Objekt, Bildschirm oder anderes grafisches Element aus
    Fig. 7
    105
    Onlineserver
    709
    Verifiziere Signatur für UID
    711
    Erzeuge Token (Zufällige Zahl, eindeutig für die Transaktion)
    713
    Sollte der Server die Lizenz verifizieren
    715
    Verifiziere, dass Gerät lizenzierte Anwendungs-ID hat
    717
    Verifiziere, dass Lizenz gültig ist und dass Antwort korrekt signiert is
    723
    Verschlüssele den Shader der Anwendungs-ID mit Verschlüsselungsschlüssel der UID
    725
    Retourniere verschlüsselten Shader
    107
    Lizenzverifizierungsserver oder Onlinetransaktionsserver oder Schließe Anfrage ab und signiere Token
    150
    Hauptanwendung
    701
    Überprüfe und initialisiere Anwendungs-ID
    703
    Besorge SoC UID und Signatur von UID
    707
    UID + Signatur + Anwendungs-ID
    719
    Verwende das Token für Online-Lizenzüberprüfung
    721
    Erhalte Lizenzantwort, sende an Server
    727
    Erhalte und speichere verschlüsselten Shader
    729
    Gehe zurück zur Anwendungsinitialisierung
    101a
    Sicherheitsverarbeitungsbauteil
    705
    Erzeuge Signatur aus UID + Verschlüsselungsschlüssel

Claims (20)

  1. Ein Verfahren zum Schützen von Code, das Verfahren aufweisend: unter Verwendung eines Verarbeitungsbauteils, Zugreifen auf einen verschlüsselten Abschnitt eines Anwendungsprogrammes, der von einem Onlineserver verschlüsselt ist, nachdem eine Lizenz zur Verwendung des Anwendungsprogrammes durch den Onlineserver verifiziert ist; unter Verwendung des Verarbeitungsbauteils, Entschlüsseln des verschlüsselten Abschnittes des Anwendungsprogrammes unter Verwendung eines Verschlüsselungsschlüssels, der in dem Verarbeitungsbauteil gespeichert ist, wobei ein entsprechender entschlüsselter Abschnitt des Anwendungsprogrammes erzeugt wird; Ausführen des entschlüsselten Abschnittes des Anwendungsprogrammes unter Verwendung gespeicherter Zustandsdaten und Erzeugen von Ausführungsergebnissen; und unter Verwendung des Verarbeitungsbauteils, Geben der Ausführungsergebnisse zu dem Anwendungsprogramm, das auf einem zweiten Verarbeitungsbauteil ausgeführt wird.
  2. Das Verfahren gemäß Anspruch 1, wobei der Zugriff auf den Verschlüsselungsschlüssel auf das Verarbeitungsbauteil beschränkt ist.
  3. Das Verfahren gemäß Anspruch 1, wobei das Ausführen des entschlüsselten Abschnittes des Anwendungsprogrammes von dem Verarbeitungsbauteil durchgeführt wird.
  4. Das Verfahren gemäß Anspruch 1, wobei das Ausführen des entschlüsselten Abschnittes des Anwendungsprogrammes von einem Grafikverarbeitungsbauteil durchgeführt wird.
  5. Das Verfahren gemäß Anspruch 4, wobei der entschlüsselte Abschnitt des Anwendungsprogrammes in einer ausgewählten geschützten Videoregion eines Speichers gespeichert ist, und wobei eine Fähigkeit, aus der geschützten Videoregion zu lesen, auf das Verarbeitungsbauteil beschränkt ist.
  6. Das Verfahren gemäß Anspruch 5, wobei eine Fähigkeit, aus der geschützten Videoregion zu lesen und zu schreiben, auf das Verarbeitungsbauteil beschränkt ist.
  7. Das Verfahren gemäß Anspruch 1, wobei das Verarbeitungsbauteil entweder in dem zweiten Verarbeitungsbauteil eingebettet ist, wobei das zweite Verarbeitungsbauteil ein Hauptprozessor eines Systems auf Chip ist, oder in einem Grafikverarbeitungsbauteil eingebettet ist.
  8. Das Verfahren gemäß Anspruch 1, wobei ein Abschnitt des Speichers, der eine Eingabe zu und eine Ausgabe von dem Verarbeitungsbauteil bereitstellt, entweder verschlüsselt oder nicht verschlüsselt ist.
  9. Das Verfahren gemäß Anspruch 1 wobei die Zustandsdaten kurzfristige Zustandsdaten und langfristige Zustandsdaten aufweisen, die entweder auf dem Chip oder abseits des Chips verwaltet werden.
  10. Ein Sicherheitsverarbeitungsbauteil aufweisend: ein Zugriffsbauteil, der auf einen verschlüsselten Abschnitt eines Anwendungsprogrammes zugreift, der von einem Onlineserver verschlüsselt ist, nachdem eine Lizenz zur Verwendung des Anwendungsprogrammes durch den Onlineserver verifiziert ist; ein Entschlüsselungsbauteil, der den verschlüsselten Abschnitt des Anwendungsprogrammes unter Verwendung eines Verschlüsselungsschlüssels entschlüsselt, der in dem Sicherheitsverarbeitungsbauteil gespeichert ist, wobei ein entsprechender entschlüsselter Abschnitt des Anwendungsprogrammes erzeugt wird; ein Zugriffsbereitstellungsbauteil, der Zugriff auf Ausführungsergebnisse bereitstellt, die durch das Ausführen des entschlüsselten Abschnittes des Anwendungsprogrammes erzeugt wurden.
  11. Das Sicherheitsverarbeitungsbauteil gemäß Anspruch 10, wobei der Zugriff auf den Verschlüsselungsschlüssel auf das Sicherheitsverarbeitungsbauteil beschränkt ist.
  12. Das Sicherheitsverarbeitungsbauteil gemäß Anspruch 10, ferner aufweisend ein Verarbeitungsbauteil, das den entschlüsselten Abschnitt des Anwendungsprogrammes ausführt.
  13. Das Sicherheitsverarbeitungsbauteil gemäß Anspruch 10, wobei ein Grafikverarbeitungsbauteil den entschlüsselten Abschnitt des Anwendungsprogrammes ausführt.
  14. Das Sicherheitsverarbeitungsbauteil gemäß Anspruch 13, wobei eine ausgewählte geschützte Videoregion eines Speichers den entschlüsselten Abschnitt des Anwendungsprogrammes speichert, und wobei eine Fähigkeit, aus der geschützten Videoregion des Speichers zu lesen, auf das Sicherheitsverarbeitungsbauteil beschränkt ist.
  15. Ein System auf Chip, das System aufweisend: einen Prozessor; einen Grafikprozessor; und einen Sicherheitsverarbeitungsbauteil, der Sicherheitsverarbeitungsbauteil aufweisend: ein Zugriffsbauteil, der auf einen verschlüsselten Abschnitt eines Anwendungsprogrammes zugreift, der von einem Onlineserver verschlüsselt ist, nachdem eine Lizenz zur Verwendung des Anwendungsprogrammes durch den Onlineserver verifiziert ist; ein Entschlüsselungsbauteil, der den verschlüsselten Abschnitt des Anwendungsprogrammes unter Verwendung eines Verschlüsselungsschlüssels entschlüsselt, der in dem Verarbeitungsbauteil gespeichert ist, wobei ein entsprechender entschlüsselter Abschnitt des Anwendungsprogrammes erzeugt wird; ein Zugriffsbereitstellungsbauteil, der Zugriff auf Ausführungsergebnisse bereitstellt, die durch ein Ausführen des entschlüsselten Abschnittes des Anwendungsprogrammes erzeugt wurden.
  16. Das System auf Chip gemäß Anspruch 15, wobei der Verschlüsselungsschlüssel auf das Verarbeitungsbauteil beschränkt ist.
  17. Das System auf Chip gemäß Anspruch 15, ferner aufweisend ein Verarbeitungsbauteil, das den entschlüsselten Abschnitt des Anwendungsprogrammes ausführt.
  18. Das System auf Chip gemäß Anspruch 15, wobei der Grafikprozessor den entschlüsselten Abschnitt des Anwendungsprogrammes ausführt.
  19. Das System auf Chip gemäß Anspruch 15, wobei das Sicherheitsverarbeitungsbauteil in der CPU eingebettet ist, und wobei die CPU ein Hauptprozessor des Systems auf Chip ist.
  20. Das System auf Chip gemäß Anspruch 15, wobei das Sicherheitsverarbeitungsbauteil in der GPU eingebettet ist.
DE102013224578.5A 2012-11-30 2013-11-29 Codeschutz unter verwendung von online-authentifizierung und verschlüsselter ausführung von code Pending DE102013224578A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/691,613 2012-11-30
US13/691,613 US9177121B2 (en) 2012-04-27 2012-11-30 Code protection using online authentication and encrypted code execution

Publications (1)

Publication Number Publication Date
DE102013224578A1 true DE102013224578A1 (de) 2014-06-05

Family

ID=50726261

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013224578.5A Pending DE102013224578A1 (de) 2012-11-30 2013-11-29 Codeschutz unter verwendung von online-authentifizierung und verschlüsselter ausführung von code

Country Status (4)

Country Link
US (1) US9177121B2 (de)
CN (1) CN103856481B (de)
DE (1) DE102013224578A1 (de)
TW (1) TWI526866B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107085675A (zh) * 2016-02-16 2017-08-22 爱特梅尔公司 受控安全代码验证

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956585B2 (en) * 2018-05-28 2021-03-23 Royal Bank Of Canada System and method for secure electronic transaction platform
US20150242597A1 (en) * 2014-02-24 2015-08-27 Google Inc. Transferring authorization from an authenticated device to an unauthenticated device
US9830470B2 (en) * 2015-10-09 2017-11-28 Sap Se Encrypting data for analytical web applications
US9449189B1 (en) * 2015-11-03 2016-09-20 International Business Machines Corporation Protection of state data in computer system code
US10318748B2 (en) * 2016-09-30 2019-06-11 Intel Corporation Techniques to protect fuses against non-destructive attacks
US10367639B2 (en) 2016-12-29 2019-07-30 Intel Corporation Graphics processor with encrypted kernels
CN109145654A (zh) * 2018-08-15 2019-01-04 阿里巴巴集团控股有限公司 防止破解算法模型的芯片及业务处理方法
US11271935B2 (en) * 2020-07-30 2022-03-08 Bank Of America Corporation Blind authenticator
GB2614677A (en) * 2020-09-29 2023-07-12 Ibm Software access through heterogeneous encryption

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003533714A (ja) * 2000-05-10 2003-11-11 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 特にオーディオであるディジタル情報の頒布制御
US7930537B2 (en) 2002-08-13 2011-04-19 Nokia Corporation Architecture for encrypted application installation
US7117284B2 (en) 2002-11-18 2006-10-03 Arm Limited Vectored interrupt control within a system having a secure domain and a non-secure domain
JP4770425B2 (ja) * 2005-11-24 2011-09-14 富士ゼロックス株式会社 保護済み実行プログラムの作成のためのプログラム、方法及び装置
US20090172331A1 (en) 2007-12-31 2009-07-02 Balaji Vembu Securing content for playback
JP2009194860A (ja) 2008-02-18 2009-08-27 Toshiba Corp 送信装置、受信装置、コンテンツ送受信システム、コンテンツ送信方法、コンテンツ受信方法及びプログラム
CN101393521B (zh) * 2008-11-13 2012-04-25 上海交通大学 Windows应用程序内部固化数据的提取系统
US8266448B2 (en) * 2008-12-09 2012-09-11 Nvidia Corporation Apparatus, system, method, and computer program product for generating and securing a program capable of being executed utilizing a processor to decrypt content
US20100153667A1 (en) 2008-12-15 2010-06-17 Sony Ericsson Mobile Communications Ab Method, computer program and electronic device
EP2515239B1 (de) 2009-12-14 2017-03-29 Panasonic Intellectual Property Management Co., Ltd. Informationsverarbeitungsvorrichtung
US8499304B2 (en) 2009-12-15 2013-07-30 At&T Mobility Ii Llc Multiple mode mobile device
US20110154436A1 (en) 2009-12-21 2011-06-23 Mediatek Inc. Provider Management Methods and Systems for a Portable Device Running Android Platform
CN102656561A (zh) 2010-03-16 2012-09-05 松下电器产业株式会社 信息处理装置、虚拟机生成方法及应用发布系统
CN101814124A (zh) * 2010-04-20 2010-08-25 浪潮电子信息产业股份有限公司 一种基于Java的软件安全性加强的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107085675A (zh) * 2016-02-16 2017-08-22 爱特梅尔公司 受控安全代码验证
CN107085675B (zh) * 2016-02-16 2022-05-17 爱特梅尔公司 受控安全代码验证

Also Published As

Publication number Publication date
TW201443680A (zh) 2014-11-16
US9177121B2 (en) 2015-11-03
US20140157423A1 (en) 2014-06-05
TWI526866B (zh) 2016-03-21
CN103856481A (zh) 2014-06-11
CN103856481B (zh) 2017-09-22

Similar Documents

Publication Publication Date Title
DE102013224578A1 (de) Codeschutz unter verwendung von online-authentifizierung und verschlüsselter ausführung von code
JP4875493B2 (ja) 静的動的及び制限非制限コンテンツ権限
DE112005003340B4 (de) Mechanismus zum Bestimmen der Vertrauenswürdigkeit von Außerbandverwaltungsagenten
DE69819485T2 (de) Verfahren und vorrichtung zur sicheren verarbeitung kryptographischer schlüssel
DE60002893T2 (de) Computerplattformen und deren betriebsverfahren
US6006328A (en) Computer software authentication, protection, and security system
EP2742643B1 (de) Vorrichtung und verfahren zum entschlüsseln von daten
DE69837303T2 (de) Informationsverarbeitungsvorrichtung und Verfahren und Aufzeichnungsmedium zum Ausführen mittels öffentlicher Schlüssel verschlüsselter Programme
DE69534757T2 (de) System und Verfahren zur sicheren Speicherung und Verteilung von Daten unter Verwendung digitaler Unterschriften
DE10393807B4 (de) Verfahren zum Schutz von Software vor Debugger-Angriffen
CN104318135B (zh) 一种基于可信执行环境的Java代码安全动态载入方法
DE112008003931T5 (de) Systeme und Verfahren für Datensicherheit
DE102012215770A1 (de) Inhalt-Schutz über Online-Server und Code-Ausführung in einem sicheren Betriebssystem
CN101523398A (zh) 用于管理对插件数据文件访问的系统和方法
DE60026137T2 (de) Registrierung von kopiergeschütztem material in einem ausbuchungs-/einbuchungssystem
DE60114069T2 (de) System und Verfahren für den Schutz von Digitalwerken
CN107873125A (zh) 双设备置乱显示
DE102008033895A1 (de) Vorrichtung und Verfahren zur Authentifikation eines Flash-Programms
US20120109784A1 (en) Method and system for automating protection of media files for download
CN107040799A (zh) 视频播放的权限校验方法及装置
US20160026824A1 (en) Security against memory replay attacks in computing systems
CN102222195B (zh) 电子书阅读方法和系统
CN113592497A (zh) 基于区块链的金融交易服务安全认证方法及装置
US6675297B1 (en) Method and apparatus for generating and using a tamper-resistant encryption key
CN107423584B (zh) 应用软件的运行方法、装置、终端和计算机可读存储介质

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R016 Response to examination communication