DE69634684T2 - Vorrichtung und Verfahren zur Ausführung nachprüfbarer Programme mit Möglichkeit zur Nutzung von nicht-nachprüfbaren Programmen aus vertrauten Quellen - Google Patents

Vorrichtung und Verfahren zur Ausführung nachprüfbarer Programme mit Möglichkeit zur Nutzung von nicht-nachprüfbaren Programmen aus vertrauten Quellen Download PDF

Info

Publication number
DE69634684T2
DE69634684T2 DE69634684T DE69634684T DE69634684T2 DE 69634684 T2 DE69634684 T2 DE 69634684T2 DE 69634684 T DE69634684 T DE 69634684T DE 69634684 T DE69634684 T DE 69634684T DE 69634684 T2 DE69634684 T2 DE 69634684T2
Authority
DE
Germany
Prior art keywords
program
architecture
object class
digital signature
programs
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.)
Expired - Lifetime
Application number
DE69634684T
Other languages
English (en)
Other versions
DE69634684D1 (de
Inventor
Charles E. Sunnyvale McManis
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE69634684D1 publication Critical patent/DE69634684D1/de
Publication of DE69634684T2 publication Critical patent/DE69634684T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf verteilte Computersysteme, und insbesondere auf ein System und ein Verfahren, in welchem ein Programminterpreter für Programme, deren Integrität prüfbar ist, eine Einrichtung für die Verwendung nichtprüfbarer Programme von vertrauenswürdigen Quellen und zum Zurückweisen ausgeführter anderer nichtprüfbarer Programme enthält.
  • HINTERGRUND DER ERFINDUNG
  • Der Ausdruck "Architektur" ist für die Zwecke dieses Dokuments so definiert, dass er die Betriebseigenschaften einer Familie von Computermodellen bezeichnet. Beispiele von verschiedenen Architekturen sind: Macintosh-Computer, IBM-PC-kompatible Computer, die DOS oder Windows-Betriebssysteme verwenden, Sun-Microsystems-Computer, auf denen das Solaris-Betriebssystem läuft, und Computersysteme, die das Unix-Betriebssystem verwenden.
  • Der Ausdruck "architekturneutral" ist für die Zwecke dieses Dokuments so definiert, dass er sich auf die Fähigkeit bestimmter Programme bezieht, wie z. B. Programme, die in der Sprache Java (eine Handelsmarke von Sun Microsystems, Inc.) geschrieben sind, auf einer Vielfalt von Computerplattformen unter Verwendung mehrerer unterschiedlicher Computerarchitekturen ausgeführt zu werden.
  • Der Ausdruck "architekturspezifisch" ist für die Zwecke für dieses Dokuments so definiert, dass er sich auf die Forderung bezieht, das bestimmte Pro gramme nur auf Computerplattformen auszuführen sind, die eine einzige Computerarchitektur verwenden. Zum Beispiel können Objektcodeprogramme, die in der 80486-Assembler-Sprache geschrieben sind, nur auf Computern ausgeführt werden, die die IBM-PC-kompatible Computerarchitektur verwenden (sowie auf anderen Computern, die IBM-PC-kompatible Computeremulatoren enthalten).
  • Wichtige Merkmale von architekturneutralen Programmen (ANProgrammen) umfassen die Architekturunabhängigkeit von Programmen, die in der architekturneutralen Sprache (ANSprache) geschrieben sind. Zum Beispiel können Java-Bytecode-Programme auf einer beliebigen Computerplattform ausgeführt werden, die einen Java-Bytecode-Interpreter aufweist. Ein zusätzliches wichtiges Merkmal von Java-Bytecode-Programmen ist, dass ihre Integrität vor der Ausführung von einer Java-Bytecode-Prüfeinrichtung direkt überprüft werden kann. Eine Java-Bytecode-Prüfeinrichtung bestimmt, ob das Programm vordefinierte Integritätskriterien erfüllt. Solche Kriterien umfassen Operandenstapel- und Datentypnutzungsbeschränkungen, die sicherstellen, dass Java-Bytecode-Programme den Operandenstapel des ausführenden Computers nicht zum Überlaufen oder Unterlaufen bringen können, und dass alle Programmbefehle nur Daten von bekannten Datentypen verwenden. Als Ergebnis können Java-Bytecode-Programme keine Objektzeiger erzeugen und können im Allgemeinen nicht auf andere Systembetriebsmittel zugreifen als auf diejenigen, die der Benutzer explizit zur Verwendung freigegeben hat.
  • Ungünstigerweise bewirkt das Verteilen ausführbarer Programme in einer ANSprache, dass das ANProgramm weniger effizient läuft, als es laufen würde, wenn es Nutzen von architekturspezifischen Merkmalen ziehen könnte. Zum Beispiel laufen Java-Bytecode-Programme, die von einem Java-Bytecode-Interpreter ausgeführt werden, typischerweise 2,5 bis 5 Mal langsamer als äquivalente architekturspezifische Programme (ASProgramme), die in entsprechende architekturspezifische Sprachen (ASSprachen) compiliert sind. Obwohl ein Faktor einer fünffachen Geschwindigkeitsreduktion derzeit als ungewöhnlich gut für eine ANProgramm-Ausführungseinrichtung (wie z. B. einen Interpreter) betrachtet wird, ist es ein ausreichender Effizienzverlust, der einige Nutzer nötigt oder veranlasst, äquivalen te Programme zu nutzen, die in eine ASSprache compiliert sind.
  • Compiler, die ein ANProgramm in ein äquivalentes ASProgramm compilieren können, können geschrieben werden. Diese können jedoch für den Endbenutzer unerreichbar teuer sein. Außerdem kann die Integrität des äquivalenten compilierten ASProgramms nicht direkt anhand des compilierten ASProgrammcodes von einer ANProgramm-Integritätsprüfeinrichtung geprüft werden. Somit führt im Fall von Java-Bytecode-Programmen die Verwendung von ANProgrammen, die in äquivalente ASProgramme compiliert worden sind, möglicherweise zu einem Verlust von einem der wertvollsten Merkmale einer ANSprache.
  • EP 0 555 715 offenbart ein System, in welchem ein Benutzer eine Funktion unter Verwendung von vordefinierten Befehlen von einem kryptographischen Modul definieren kann, ohne die Sicherheit des Moduls zu beeinträchtigen.
  • Der Artikel "Java and Interpret programming" (Dr. Dobb's Journal, August 1995, USA, Bd. 20, Nr. 8, S. 56, 58, 60–61, 101–102) beschreibt eine Java-Umgebung mit einer Bytecode-Prüfeinrichtung, in der Teile des Codes in Maschinenbefehle konvertiert werden, um die Leistungsfähigkeit des Programms zu verbessern.
  • Es gibt jedoch einige legitime (oder legale) Kleinprogramme (Aufgaben), die von in der Integrität nicht prüfbaren ASProgrammen ausgeführt werden können, die jedoch nicht von in der Integrität prüfbaren ANProgrammen ausgeführt werden können. Diese umfassen Kleinprogramme, die ansonsten die Operandenstapel- und Datentypnutzungsbeschränkungen verletzen würden, die den in der Integrität prüfbaren ANProgrammen auferlegt sind. Außerdem können solche ASProgramme viel schneller ausgeführt werden als ANProgramme. Als Ergebnis gibt es eine Vielzahl von Gründen, warum es wünschenswert ist, ein Computersystem zu haben, das dafür ausgelegt ist, hauptsächlich in der Integrität prüfbare ANProgramme auszuführen, jedoch auch die Fähigkeit hat, in der Integrität nicht prüfbare ASProgramme auszuführen.
  • Obwohl die Compilierung von ANProgrammen durch eine dritte Partei möglich ist, erfordern solche Compilierungen, dass die dritte Partei authentifiziert wird. Das heißt, es muss möglich sein, anhand der Informationen im compilierten ASProgramm zu prüfen, dass es von einer spezifischen vertrauenswürdigen dritten Partei compiliert worden ist. Noch besser sollte es auch möglich sein, sicherzustellen, dass das compilierte ASProgramm von einem spezifischen vertrauenswürdigen Compiler erzeugt wurde. Da ferner die Integrität des compilierten ASProgramms bezüglich der vordefinierten Integritätskriterien nicht direkt überprüft werden kann, sollte das compilierte ASProgramm Informationen enthalten, die in einer prüfbaren Weise das entsprechende ANProgramm, aus dem es compiliert wurde, sowie die ASSprache identifizieren, in die es compiliert wurde.
  • Die Ausführungsformen der vorliegenden Erfindung schaffen einen ANProgramm-Compiler und ein Compilierungsverfahren, das den Benutzer eines aus einem entsprechenden ANProgramm compilierten ASProgramms ermöglicht, die Identität desjenigen, der das ANProgramm compiliert hat, sowie die Identität des entsprechenden ANProgramms und der ASSprache nachzuweisen, in die das ASProgramm compiliert wurde.
  • Die Ausführungsformen der vorliegenden Erfindung schaffen ferner eine ANProgramm-Ausführungseinrichtung und ein Ausführungsverfahren, das in der Integrität prüfbaren ANProgrammen ermöglicht, ausgeführt zu werden, um in der Integrität nicht prüfbare ASProgramme aufzurufen, die vertrauenswürdig sind oder prüfbare Quellen und Compilierungsinformationen aufweisen, so dass im Wesentlichen alle legitimen Kleinprogramme ausgeführt werden können, während der Aufruf von ASProgrammen verhindert wird, deren Quellen, Compilierungsinformationen und Integrität nicht geprüft werden kann.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Die Erfindung schafft einen Computer, wie in Anspruch 1 ausgeführt ist, ein Verfahren zum Betreiben eines Computersystems, wie in Anspruch 6 ausgeführt ist, und computerlesbare Medien, wie in Anspruch 11 ausgeführt ist.
  • Zusammengefasst schaffen die Ausführungsformen der Erfindung eine Programmausführungseinrichtung, die prüfbare architekturneutrale Programme ausführt, und eine Klassenladeeinrichtung, die das Laden und Ausführen von nichtprüfbaren Programmen verhindert, sofern nicht (A) das nichtprüfbare Programm in einer vertrauenswürdigen Ablage solcher Programme enthalten ist, oder (B) das nichtprüfbare Programm mittels einer digitalen Signatur für das nichtprüfbare Programm, die beweist, dass das Programm von einer vertrauenswürdigen Quelle erzeugt wurde, indirekt prüfbar ist.
  • In der bevorzugten Ausführungsform ist jedes prüfbares Programm ein architekturneutrales Programm, das in einer Objektklasse ausgebildet ist und eine digitale Signatur aufweist, die eine Nachrichtenkurzfassung enthält, die diesem Programm eindeutig zugeordnet ist.
  • Nichtprüfbare Programme sind in Objektklassen ausgebildet, die ein Schlüsselwort enthalten, das anzeigt, dass das Programm (als Verfahren bezeichnet) kein prüfbares Programm ist. In der bevorzugten Ausführungsform sind die nichtprüfbaren Programme im Allgemeinen architekturspezifische compilierte Programme, die mit Unterstützung eines Compilers erzeugt werden. Eine jede solche Objektklasse enthält:
    • – den compilierten architekturspezifischen Code;
    • – wenn ein entsprechendes architekturneutrales Programm vorhanden ist (was manchmal nicht der Fall ist), Informationen, die das entsprechende architekturneutrale Programm identifizieren, einschließlich einer Kopie der Nachrichtenkurzfassung des entsprechenden architekturneutralen Programms;
    • – eine digitale Signatur von der vertrauenswürdigen "Compilierungspartei", die die Objektklasse erzeugt hat (z. B. durch Ausführen einer Compilierung eines Quellprogramms), die unter Verwendung des privaten Verschlüsselungsschlüssels der Compilierungspartei signiert worden ist; und
    • – wenn der Code in der Objektklasse von einem Compiler erzeugt wurde, eine digitale Signatur vom Compiler selbst, die unter Verwendung des privaten Verschlüsselungsschlüssels des Compilers signiert worden ist.
  • Eine im Allgemeinen verfügbare, vertrauenswürdige Ablage von öffentlichen Verschlüsselungsschlüsseln, die manchmal als Namensdienst bezeichnet wird, hält die öffentlichen Schlüssel für den Compiler und die vertrauenswürdige Compilierungspartei. Unter Verwendung dieser öffentlichen Verschlüsselungsschlüssel können alle Empfänger der Objektklassen, die nicht überprüfbare Programme aufweisen, die digitalen Signaturen in der Objektklasse entschlüsseln, um zu prüfen, ob die Objektklasse von einer vertrauenswürdigen Partei erzeugt wurde, um zu prüfen, dass der nicht prüfbare Programmcode in der Objektklasse vom angegebenen Compiler (falls zutreffend) erzeugt worden ist, und um ferner die Identität des entsprechenden architekturneutralen Programms (falls zutreffend) zu prüfen. Wenn der nichtprüfbare Programmcode in der Objektklasse ein entsprechendes prüfbares Programm aufweist, kann optional der potenzielle Benutzer der Objektklasse die Programmprüfeinrichtung verwenden, um die korrekte Operation des entsprechenden prüfbaren Programms vor der Ausführung des nichtprüfbaren Programmcodes in der Objektklasse zu prüfen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Im Folgenden werden Beispiele der Erfindung mit Bezug auf die Zeichnungen beschrieben, in welchen:
  • 1 ein Blockdiagramm eines verteilten Computersystems ist, das eine bevorzugte Ausführungsform der vorliegenden Erfindung enthält;
  • 2 die Struktur eines architekturneutralen Programms gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt;
  • 3 die Struktur eines compilierten architekturspezifischen Programms, das gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung erzeugt worden ist, zeigt; und
  • 4 ein Objekt und eine zugehörige Objektklasse gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • In 1 ist ein Computernetzwerk 100 mit vielen Client-Computern 102, einem Servercomputer 104 und einer vertrauenswürdigen Schlüsselablage 106 gezeigt. Die Client-Computer 102 sind untereinander und mit dem Server-Computer 104 und der Vertrauensschlüsselablage 106 über eine Netzkommunikationsverbindung 108 verbunden. Die Netzkommunikationsverbindung kann ein lokales Netzwerk oder ein Weitbereichsnetzwerk, das Internet, eine Kombination solcher Netzwerke oder ein bestimmter anderer Typ von Netzwerkkommunikationsverbindung sein.
  • Obwohl die meisten Client-Computer 102 Tischcomputer sind, wie z. B. Sun-Arbeitsstationen, IBM-kompatible Computer und Macintosh-Computer, kann nahezu jeder Typ von Computer ein Client-Computer sein. Jeder dieser Client-Computer enthält eine CPU 110, eine Benutzerschnittstelle 112, einen Speicher 114 und eine Netzwerkkommunikationsschnittstelle 116. Die Netzwerkkommunikationsschnittstelle ermöglicht den Client-Computern, miteinander, mit dem Server-Computer 104 und mit der vertrauenswürdigen Schlüsselablage 108 über die Netzwerkkommunikationsverbindung 106 zu kommunizieren.
  • Der Speicher 114 jedes Client-Computers 102 speichert ein Betriebssystem 118, einen Netzwerkkommunikationsmanager 120, eine ANProgramm-(Architekturneutrales-Programm)-Ausführungseinrichtung 122, eine ASProgramm-(Architekturspezifisches-Programm)-Ausführungseinrichtung 124, sowie eine ANProgramm-Integritätsprüfeinrichtung 126, eine ANProgramm-Compilierungsvorbereitungseinrichtung 128, einen Signaturgenerator 130, eine Signaturprüfeinrichtung 132, eine Compilierungsinformations-(Complnfo)-Prüfeinrichtung 134, eine Objektklassenladeeinrichtung 136, einen Benutzeradressraum 138, eine Ablage für vertrauenswürdige Objektklassen 140, eine Ablage für nichtvertrauenswürdige Objektklassen 142 und Listen 144 von bekannten, vertrauenswürdigen Compilierungsparteien und vertrauenswürdigen Compilern. Das Betriebssystem läuft auf der CPU 110 und kontrolliert und koordiniert den Lauf der Programme 120136 auf der CPU in Reaktion auf Befehle, die von einem Benutzer mittels der Benutzerschnittstelle 112 erteilt werden.
  • Die ANProgramm-Ausführungseinrichtung 122 jedes Client-Computers 102 führt ANProgramme in den Objektklassen aus, die in den Ablagen 140 und 142 für vertrauenswürdige und nichtvertrauenswürdige Objektklassen gespeichert sind. Außerdem sind die ANProgramme in einer ANSprache geschrieben, für die der Benutzer vordefinierte Integritätskriterien einrichten kann, wie z. B. Stapel- und Datennutzungsbeschränkungen, so dass die ANProgramme keine illegalen Kleinprogramme ausführen. Somit kann die Integrität der ANProgramme von der ANProgramm-Integritätsprüfeinrichtung 126 vor der Ausführung direkt geprüft werden, indem ermittelt wird, ob das Programm die vordefinierten Integritätskriterien erfüllt. Diese ANProgramme werden daher als in der Integrität prüfbare ANProgramme betrachtet.
  • In der bevorzugten Ausführungsform sind die in der Integrität prüfbaren ANProgramme in der Java-Bytecode-Sprache geschrieben. Außerdem sind die ANProgramm-Ausführungseinrichtung 122 und die ANProgramm-Prüfeinrichtung 124 jeweils ein Java-Bytecode-Programminterpreter und eine Java-Bytecode-Programmprüfeinrichtung, die jeweils die Java-Bytecode-Programme ausführen und prüfen. Die Java-Bytecode-Prüfeinrichtung und der Interpreter sind Produkte von Sun Microsystems, Inc.
  • Jeder Client-Computer 102 weist jedoch eine zugehörige spezifische Architektur auf, "für die Programme in einer entsprechenden ASSprache geschrieben sein können und von der ASProgramm-Ausführungseinrichtung 122 ausgeführt werden. Die ASSprache erfordert nicht, dass in der ASSprache geschrieben ANProgramme die vordefinierten Integritätskriterien der AN-Sprache erfüllen. Als Ergebnis können die ASProgramme Kleinprogramme ausführen, die von den ANProgrammen nicht ausgeführt werden können, da sie nicht durch die Beschränkungen belastet sind, die durch die vordefinierten Integritätskriterien der ANSprache auferlegt werden. Ungünstigerweise bedeutet dies jedoch auch, dass ihre Integrität von der ANProgramm-Integritätsprüfeinrichtung 126 nicht direkt geprüft werden kann und sie somit als in der Integrität nicht prüfbar betrachtet werden.
  • Wie vorher erwähnt worden ist, läuft trotzdem ein ANProgramm weniger effizient als das gleiche in eine ASSprache compilierte Programm. Der Benutzer eines Client-Computers 102 kann daher wünschen, ein ANProgramm zu haben, das vom Server-Computer 104 für die ASSprache compiliert worden ist, die dem Client-Computer des Benutzers zugeordnet ist, so dass das compilierte ASProgramm dort mittels der ASProgramm-Ausführungseinrichtung 124 ausgeführt werden kann. Oder der Benutzer kann wünschen, das ANProgramm zu haben, das für die ASSprache compiliert worden ist, die anderen Client-Computern zugeordnet ist, wenn die compilierten ASProgramme zu den ASProgramm-Ausführungseinrichtungen 124 anderer Client-Computer verteilt und von diesem ausgeführt werden sollen.
  • Vorbereitung eines architekturneutralen Programms für die Compilierung
  • Wenn, wie in den 1 und 2 gezeigt ist, eine Ursprungspartei (OrigParty) wünscht, ein vom Server-Computer 104 compiliertes ANProgramm 200 zu haben, gibt die Ursprungspartei einen Befehl mittels der Benutzerschnittstelle 112 aus, um die ANProgramm-Compilierungsvorbereitungseinrichtung 128 aufzurufen, und weist diese an, das ANProgramm für die Compilierung vorzubereiten. Das ANProgramm kann sich in einer Objektklasse befinden, die in einer der Ablagen 140 oder 142 für vertrauenswürdige oder nichtvertrauenswürdige Objektklasse enthalten ist. Tabelle 1 enthält eine Pseudocodedarstellung der Prozedur, die von der ANProgramm-Compilierungsvorbereitungseinrichtung 128 verwendet wird, um das ANProgramm für die Compilierung durch den Server-Computer 104 vorzubereiten. Der in den Tabellen 1–3 verwendete Pseudocode verwendet universelle Computersprachenkonventionen. Obwohl der hier verwendete Pseudocode nur für die Zwecke dieser Beschreibung erfunden worden ist, ist er so gestaltet, dass er von jedem erfahrenen Computerprogrammierer verstanden werden kann.
  • Wie in den 1 und 2 und in Tabelle 1 gezeigt ist, ruft eine ANProgramm-Compilierungsvorbereitungseinrichtung 128 zuerst die ANProgramm-Integritätsprüfeinrichtung 126 auf und weist diese an, die Integrität des ANProgrammcodes 202 des ANProgramms 200 zu prüfen. Dies wird durchgeführt, um sicherzustellen, dass der ANProgrammcode die vordefinierten Integritätskriterien der ANSprache erfüllt, bevor er zum Server-Computer 104 zur Compilierung gesendet wird. Wenn der ANProgrammcode die vordefinierten Integritätskriterien nicht erfüllt, sendet die ANProgramm-Integritätsprüfeinrichtung ein Fehlerergebnis an die ANProgramm-Compilierungsvorbereitungseinrichtung. In Reaktion hierauf bricht die ANProgramm-Compilierungsvorbereitungseinrichtung die Compilierungsvorbereitungsprozedur ab und erzeugt eine geeignete Nachricht, die dies anzeigt.
  • Wenn jedoch der ANProgrammcode 202 die vordefinierten Integritätskriterien erfüllt, sendet die ANProgramm-Integritätsprüfeinrichtung 126 ein Genehmigt-Ergebnis an die ANProgramm-Compilierungsvorbereitungseinrichtung 128. Die ANProgramm-Compilierungsvorbereitungseinrichtung ruft anschließend den Signaturgenerator 130 auf und weist diesen an, die digitale Signatur der Ursprungspartei (DigitalSignaturOP) 210 zu erzeugen, die überprüft werden kann, um sicherzustellen, dass das ANProgramm 200 von der vertrauenswürdigen Ursprungspartei erzeugt worden ist. Der Signaturgenerator erzeugt die DigitalSignaturOP, indem er zuerst eine Nachrichtenkurzfassung (MDOP) 212 des ANProgrammcodes 202 erzeugt. Er tut dies durch Berechnen einer Hash-Funktion, HashFunctionOP, für die Datenbits des ANProgrammcodes. Die verwendete Hash-Funktion kann entweder eine vorgegebene Hash-Funktion oder eine von der Ursprungspartei ausgewählte Hash-Funktion sein. Für die Zwecke dieses Dokuments entspricht Hash-FunctionOP der Ursprungspartei, da sie für die DigitalSignaturOP der Ursprungspartei verwendet wurde.
  • Der Signaturgenerator 130 verschlüsselt anschließend die erzeugte Nachrichtenkurzfassung (MDOP) 212 und die ID der HashFunktionOP (HashFunktionOP-ID) 214 mit dem privaten Verschlüsselungsschlüssel der Ursprungspartei (OrigParty's PrivateKey). Der Signaturgenerator fügt anschließend die ID der Ursprungspartei 216 im Klartext am Ende der verschlüsselten Elemente 212 und 214 an, um die DigitalSignaturOP zu bilden. Der Privatschlüssel der Ursprungspartei und die ID werden von der Ursprungspartei mit der Benutzerschnittstelle 112 bereitgestellt.
  • Nachdem die DigitalSignaturOP 210 erzeugt worden ist, hängt die ANProgramm-Compilierungsvorbereitungseinrichtung 128 diese an den ANProgrammcode 202 an. Anschließend erzeugt die ANProgramm-Compilierungsvorbereitungseinrichtung eine Nachricht, dass das ANProgramm 200 für die Compilierung durch den Server-Computer 104 vorbereitet worden ist.
  • Die Ursprungspartei gibt anschließend mittels der Benutzerschnittstelle 112 einen Befehl an den Netzwerkkommunikationsmanager 120 aus, das ANProgramm 200 zum Server-Computer 104 zu senden, zusammen mit Argumenten, die die architekturspezifische Sprache spezifizieren, in die das Programm zu compilieren ist (ASSprache-ID), und dem Compiler, der zu verwenden ist (Compiler-ID). Der Netzwerkkommunikationsmanager empfängt das ANProgramm von der Ablage 140 oder 142 für vertrauenswürdige bzw. nichtvertrauenswürdige Objektklassen, in der es sich befindet, und liefert es an die Netzwerkkommunikationsschnittstelle 116. Der Netzwerkkommunikationsmanager weist anschließend die Netzwerkkommunikationsschnittstelle an, das ANProgramm zusammen mit den spezifischen Argumenten zum Server-Computer zu senden.
  • Compilieren eines architekturneutralen Programms
  • Das gesendete ANProgramm 200 wird anschließend am Server-Computer 104 empfangen. Der Server-Computer enthält eine CPU 150, eine Benutzerschnittstelle 152, einen Speicher 154 und eine Netzwerkkommunikationsschnittstelle 156. Die Netzwerkkommunikationsschnittstelle ermöglicht dem Server-Computer mit den Client-Computern 102 und der Ablage 106 für vertrauenswürdige Schlüssel über die Netzwerkkommunikationsverbindung 108 zu kommunizieren.
  • Der Speicher 154 des Server-Computers 104 speichert ein Betriebssystem 158, einen Netzwerkkommunikationsmanager 160, einen ANProgramm-Compiler 162, eine Signaturprüfeinrichtung 164, eine ANProgramm-Integritätsprüfeinrichtung 166, einen Signaturgenerator 168, eine ANProgramm-Ablage 170 und eine ANProgramm-Ablage 172. Das Betriebssystem läuft auf der CPU 150 und kontrolliert und koordiniert den Lauf der Programme 160168 auf der CPU in Reaktion auf Befehle, die von einer Compilie rungspartei (CompParty) mittels der Benutzerschnittstelle 152 erteilt werden.
  • Die Netzwerkkommunikationsschnittstelle 156 empfängt das ANProgramm 200 und teilt dem Netzwerkkommunikationsmanager 160 mit, dass dies geschehen ist. In Reaktion hierauf platziert der Netzwerkkommunikationsmanager das empfangene ANProgramm in der ANProgramm-Ablage 170. Wenn der Server 104 als automatischer Compilerdienst eingerichtet ist, wird dies vom Netzwerkkommunikationsmanager 160 automatisch durchgeführt. Ansonsten wird das ANProgramm vom Netzwerkkommunikationsmanager in die Ablage 170 bewegt, wenn die Compilierungspartei einen Befehl mittels der Benutzerschnittstelle erteilt.
  • Anschließend wird entweder automatisch oder bei der Ausgabe eines Befehls von der Compilierungspartei mittels der Benutzerschnittstelle 252 der ANProgramm-Compiler 162 aufgerufen, um das ANProgramm 200 zu compilieren. Tabelle 2 enthält eine Pseudocodedarstellung der Compilierungsprozedur, die vom ANProgramm-Compiler verwendet wird, um das ANProgramm zu compilieren.
  • Wie in den 12 und Tabelle 2 gezeigt ist, ruft der ANProgramm-Compiler 162 zuerst die Signaturprüfeinrichtung 164 auf, um die DigitalSignaturOP 210 im empfangenen ANProgramm 200 zu prüfen, um somit zu bestätigen, dass die DigitalSignaturOP 210 wirklich die Signatur der Ursprungspartei für das ANProgramm ist (im Gegensatz z. B. zu einer gefälschten Signatur oder der Ursprungsparteisignatur für eine bestimmte andere Version des ANProgramms). Genauer verwendet die Signaturprüfeinrichtung die Klartext-Ursprungspartei-ID 216 im empfangenen ANProgramm, um den öffentlichen Schlüssel der Ursprungspartei von der Ablage 106 für vertrauenswürdige Schlüssel zu erhalten. Anschließend entschlüsselt die Signaturprüfeinrichtung die verschlüsselte MDOP 212 und die HashFunktionOP-ID 214 in der DigitalSignaturOP unter Verwendung des öffentlichen Verschlüsselungsschlüssels der Ursprungspartei (OrigParty's PublicKey).
  • Als Nächstes erzeugt die Signaturprüfeinrichtung 164 eine Testnachrichtkurzfassung (TestMDOP), die mit der entschlüsselten MDOP 212 übereinstimmen sollte, durch Berechnen der entsprechenden HashFunktionOP für den ANProgrammcode 202 des empfangenen ANProgramms 200. Die HashFunktionOP-ID 214 in der entschlüsselten DigitalSignaturOP wird verwendet, um die geeignete HashFunktionOP zu identifizieren, die zu verwenden ist. Die entschlüsselte MDOP und die erzeugte TestMDOP werden anschließend verglichen, um die DigitalSignaturOP 210 zu prüfen.
  • Wenn die MDOP 212 und die TestMDOP nicht übereinstimmen, sendet die Signaturprüfeinrichtung 162 ein Fehler-Ergebnis zum ANProgramm-Compiler 162 zurück. In Reaktion hierauf bricht der ANProgramm-Compiler die Compilierungsprozedur ab und erzeugt eine geeignete Nachricht.
  • Wenn andererseits die MDOP und die TestMDOP übereinstimmen, sendet die Signaturprüfeinrichtung 162 ein Genehmigt-Ergebnis zum ANProgramm-Compiler 162 zurück und der ANProgramm-Compiler ruft die ANProgramm-Integritätsprüfeinrichtung 166 auf. Er weist die ANProgramm-Integritätsprüfeinrichtung an, die Integrität des ANProgrammcodes 202 des empfangenen ANProgramms 200 zu prüfen. Dies wird in der gleichen Weise und für den gleichen Zweck durchgeführt, wie vorher in dem Abschnitt beschrieben worden ist, der die Vorbereitung des ANProgramms für die Compilierung beschrieben hat. Wenn somit der ANProgrammcode die vordefinierten Integritätskriterien nicht erfüllt, sendet die ANProgramm-Integritätsprüfeinrichtung ein Fehler-Ergebnis zum ANProgramm-Compiler zurück. In Reaktion hierauf bricht der ANProgramm-Compiler die Compilierungsprozedur ab und erzeugt eine entsprechende Nachricht, die dies anzeigt.
  • Wenn jedoch der ANProgrammcode 202 des empfangenen ANProgramms 200 die vordefinierten Integritätskriterien erfüllt, sendet die ANProgramm-Integritätsprüfeinrichtung 166 ein Genehmigt-Ergebnis zum ANProgramm-Compiler 162 zurück. Der ANProgramm-Compiler compiliert anschließend den ANProgrammcode in die ASSprache, die von der ASSprache-ID identifiziert wird, welche von der Ursprungspartei spezifiziert worden ist. Wie in den 13 und Tabelle 2 gezeigt ist, platziert der Compiler den ANProgrammcode 202, die DigitalSignaturOP 210 und den compilierten ANProgrammcode 302 in einem ANProgramm 300, das in der ANProgramm-Ablage 102 gespeichert wird.
  • Der ANProgramm-Compiler 162 ruft anschließend den Signaturgenerator 168 auf und weist diesen an, die ANProgramm-Compilerdigitalsignatur (DigitalSignaturC) 320 zu erzeugen, die überprüft werden kann, um sicherzustellen, dass das ANProgramm 300 mit dem vertrauenswürdigen ANProgramm-Compiler compiliert worden ist. Dies wird in einer Weise ähnlich derjenigen bewerkstelligt, die vorher für die Erzeugung der Digital-SignaturOP beschrieben worden ist. In diesem Fall ist jedoch der Satz der signierten Informationen der ASProgrammcode und die DigitalSignaturOP. Eine weitere vorgegebene HashFunktion mit einer entsprechenden Hash-FunktionC-ID 324 kann verwendet werden, um die Nachrichtenkurzfassung MDC 322 des mittels der DigitalSignaturC zu signierenden Informationssatzes zu erzeugen, wobei der private Verschlüsselungsschlüssel des ANProgramm-Compilers (Compiler's PrivateKey) verwendet wird, um die MDC und die HashFunktionC-ID zu verschlüsseln, wobei der Identifizierer des ANProgramm-Compilers (Compiler-ID) im Klartext am Ende der verschlüsselten MDC und der HashFunktionC angefügt wird. Der Privatschlüssel und die ID des Compilers werden vom ANProgramm-Compiler zur Verfügung gestellt.
  • Der ANProgramm-Compiler 192 ruft den Signaturgenerator 168 ein zweites Mal auf, um die Digitalsignatur der Compilierungspartei (DigitalSignaturCP) 312 zu erzeugen, die von den Endbenutzern überprüft werden kann, um sicherzustellen, dass das ANProgramm 300 von der vertrauenswürdigen Compilierungspartei erzeugt wurde. Dies wird in ähnlicher Weise bewerkstelligt, wie vorher für die Erzeugung der DigitalSignaturOP beschrieben worden ist (in dem Abschnitt, der die Vorbereitung eines ANProgramms für die Compilierung beschrieben hat). Hierbei wird jedoch die Nachrichtenkurzfassung (MDCP) 314, die für die DigitalSignaturCP erzeugt wird, durch Berechnen einer vorgegebenen oder ausgewählten HashFunktion (HashFunktionCP) für die Datenbits des ASProgrammcodes, der DigitalSignaturOP und der DigitalSignaturC berechnet. Ähnlich der HashFunktionOP entspricht für die Zwecke dieser Offenbarung die HashFunktionCP der Compilierungspartei, da sie für die DigitalSignaturCP der Compilierungspartei verwendet wurde.
  • Der Signaturgenerator 168 verschlüsselt anschließend die MDCP 314 und die ID der HashFunktionCP (HashFunktionCP-ID) 316 mit dem privaten Ver schlüsselungsschlüssel der Compilierungspartei (CompParty's PrivateKey). Der Signaturgenerator fügt anschließend den Identifizierer der Compilierungspartei (CompParty's ID) 318 im Klartext am Ende der verschlüsselten Elemente 314 und 316 an, um die DigitalSignaturCP 312 zu bilden. Der Privatschlüssel der Compilierungspartei und die ID werden von der Compilierungspartei mittels der Benutzerschnittstelle 152 bereitgestellt.
  • Nachdem die DigitalSignaturC 320 und die DigitalSignaturCP 312 erzeugt worden sind, hängt der ANProgramm-Compiler 162 diese an den ASProgrammcode 302 an, so dass die resultierende compilierte ASProgramm-Datei oder das Objekt die folgenden Komponenten enthält:
    ANProgrammcode,
    DigitalSignaturOP,
    ASProgrammcode,
    DigitalSignaturC, und
    DigitalSignaturCP.
  • Anschließend erzeugt der ANProgramm-Compiler eine Nachricht, dass das ANProgramm 200 compiliert worden ist, um das ASProgramm 300 zu bilden, und bereit ist, zur Ursprungspartei gesendet zu werden.
  • Die Compilierungspartei verwendet anschließend den Netzwerkkommunikationsmanager 160, um das ASProgramm 300 zum Ursprungspartei-Client-Computer 102 zu übermitteln. Der Netzwerkkommunikationsmanager bewerkstelligt dies durch Empfangen des ASProgramms von der ASProgramm-Ablage 172, in der es sich befindet, und stellt es der Netzwerkkommunikationsschnittstelle 156 zur Verfügung. Der Netzwerkkommunikationsmanager weist anschließend die Netzwerkkommunikationsschnittstelle an, das ASProgramm zum Ursprungspartei-Client-Computer zu senden.
  • Objekt- und Objektklassenerzeugung und Verteilung
  • Das gesendete ASProgramm 300 wird anschließend von der Kommunikationsschnittstelle 116 des Ursprungspartei-Client-Computers empfangen und teilt dem Netzwerkkommunikationsmanager 120 mit, dass dies geschehen ist. In Reaktion hierauf gibt die Ursprungspartei einen Befehl mittels der Benutzerschnittstelle 252 aus, um den Netzwerkkommunikationsmanager anzuweisen, das empfangene ASProgramm von der Netzwerkkommunikationsschnittstelle zu holen, was den Netzwerkkommunikationsmanager veranlasst, das empfangene ASProgramm in der Ablage 142 für nichtvertrauenswürdige Objektklassen des Ursprungspartei-Client-Computers zu platzieren. Sobald dies bewerkstelligt ist, kann die Ursprungspartei das empfangene ASProgramm als neue Objektklasse mit nur einem Verfahren behandeln (d. h. den compilierten Programmcode), oder sie kann eine Objektklasse erzeugen, die das ASProgramm 300 sowie andere ANProgramme und ASProgramme enthält.
  • 4 zeigt eine typische Objektklasse 400 gemäß der vorliegenden Erfindung. Die Objektklasse kann ein oder mehrere ASProgramme 402 und/oder ein oder mehrere ANProgramme 404 sowie eine virtuelle Funktionstabelle 410 enthalten. Für jedes ASProgramm enthält die virtuelle Funktionstabelle einen entsprechenden Identifizierer (native_ASProgramm-ID) 412, der anzeigt, dass dies ein ASProgramm (d. h. ein natives Programm) ist, das nicht in der ANSprache geschrieben ist, sowie einen entsprechenden Zeiger (Ptr) 414 auf das native Programm. In ähnlicher Weise enthält die virtuelle Funktionstabelle für jedes ANProgramm einen entsprechenden Identifizierer (ANProgramm-ID) 416 und einen entsprechenden Zeiger 418 auf das ANProgramm. Jedes Objekt 420 dieser Objektklasse enthält einen Objektkopf 422, der auf die Objektklasse 400 zeigt.
  • Somit kann die Ursprungspartei ein Objekt 420 und eine Objektklasse 400 mit dem ASProgramm 300 erzeugen, das vom Server-Computer 104 als eines der ASProgramme 402 in der Objektklasse empfangen wurde.
  • Wenn die Ursprungspartei wünscht, ein Objekt und eine Objektklasse, die das ASProgramm 300 und ein ANProgramm enthalten, an verschiedene Ausführungsparteien zu verteilen, gibt die Ursprungspartei einen Befehl mittels der Benutzerschnittstelle 112 aus, um den Netzwerkkommunikationsmanager anzuweisen, diese Elemente zu den Client-Computern 102 der Ausführungsparteien zu senden. Der Netzwerkkommunikationsmanager bewerkstelligt dies durch Empfangen derselben von der Ablage 142 für die nichtvertrauenswürdigen Objektklassen, in der diese angeordnet sind, und liefert diese an die Netzwerkkommunikationsschnittstelle 116 mit geeigneten Sendebefehlen. Alternativ kann der Netzwerkkommunikationsmanager der Ursprungspartei auf eine Anforderung antworten, die von einer Ausführungspartei nach einer Kopie einer spezifizierten Objektklasse 400 gestellt worden ist.
  • Ausführung archtitekturneutraler Programme und architekturspezifischer Programme in einer Objektklasse
  • Die Netzwerkkommunikationsschnittstelle 156 des Client-Computers 102 empfängt das gesendete Objekt und die Objektklasse und teilt dem Netzwerkkommunikationsmanager 160 mit, dass dies geschehen ist. In Reaktion hierauf gibt die Ausführungspartei einen Befehl mittels der Benutzerschnittstelle 112 aus, um den Netzwerkkommunikationsmanager anzuweisen, das empfangene Objekt und die Objektklasse von der Netzwerkkommunikationsschnittstelle zu holen. Der Netzwerkkommunikationsmanager speichert anschließend das empfangene Objekt und die Objektklasse in der Ablage 142 für nicht vertrauenswürdige Objektklassen.
  • Die Ablage 142 für nicht vertrauenswürdige Objektklassen jedes Client-Computers 102 enthält die Objekte und deren zugehörige Objektklassen, die nicht vertrauenswürdig sind. Diese Objektklassen sind nicht vertrauenswürdig, da irgendwelche ANProgramme, die sie enthalten, noch nicht bezüglich ihrer Integrität geprüft worden sind, und irgendwelche ASProgramme, die sie enthalten, weder hinsichtlich ihrer Quelle geprüft worden sind noch geprüft wurden, als sie aus dem geeigneten ANProgramm compiliert wurden.
  • Die Ablage 140 für vertrauenswürdige Objektklassen jedes Client-Computers enthält die Objekte und deren Objektklassen, die vertrauenswürdig sind. Diese Objektklassen sind vertrauenswürdig, da irgendwelche ANProgramme, die sie enthalten, bereits hinsichtlich ihrer Integrität von der ANProgramm-Integritätsprüfeinrichtung 136 geprüft worden sind, sowie irgendwelche ASProgramme, die sie enthalten, als vertrauenswürdig bestätigt worden sind. Tatsächlich brauchen einige oder alle Objektklassen in der Ablage 140 für vertrauenswürdige Objektklassen keine Digitalsignaturen aufweisen, da diese Objektklassen vertrauenswürdig sind, weshalb kein Grund besteht, Integritätsprüfungen für die Verfahren in diesen Objektklassen durchzuführen.
  • Es ist wünschenswert, eine Objektklasse zu haben, die hauptsächlich ANProgramme enthält, jedoch auch ASProgramme enthalten kann, so dass im Wesentlichen alle legitimen Kleinprogramme mit der Objektklasse ausgeführt werden können, wie vorher vorgeschlagen worden ist. Die ANProgramm-Ausführungseinrichtung 122 ist daher fähig, in der Integrität prüfbare ANProgramme auszuführen und die ASProgramm-Ausführungseinrichtung aufzurufen, um in der Integrität nicht prüfbare ASProgramme auszuführen, die entweder (1) sich in vertrauenswürdigen Objektklassen in der Ablage 140 für vertrauenswürdige Objektklassen befinden, oder (2) sich in nichtvertrauenswürdigen Objektklassen in der Ablage 142 für nichtvertrauenswürdige Objektklassen befinden und überprüfbare Informationen der DigitalSignaturOP, der DigitalSignaturCP und der DigitalSignaturC aufweisen, so dass im Wesentlichen alle legitimen Kleinprogramme ausgeführt werden können. Auf diese Weise werden ASProgramme nichtvertrauenswürdiger Objektklassen, die keine Informationen der DigitalSignaturOP, der Digital-SignaturCP und der DigitalSignaturC aufweisen, oder deren Digitalsignaturen nicht geprüft werden können, an einer Ausführung gehindert. Tabelle 3 enthält eine Pseudocodedarstellung der Ausführungsprozedur, die von der ANProgramm-Ausführungseinrichtung verwendet wird.
  • Wie in den 14 und in Tabelle 3 gezeigt ist, kann beim Client-Computer 102 einer Ausführungspartei (z. B. der Ursprungspartei oder einer weiteren Partei) die ANProgramm-Ausführungseinrichtung 124 ein ANProgramm ausführen, das versucht, ein Verfahren in einer spezifizierten Objektklasse aufzurufen. Der Verfahrensaufruf wird anfangs von der Objektklassenladeeinrichtung 136 gehandhabt, die bestimmt, ob die Objektklasse bereits geladen worden ist. Wenn die Objektklasse bereits in den Benutzeradressraum 138 der Ausführungspartei geladen worden ist, führt die ANProgramm-Ausführungseinrichtung 122 das aufgerufene Verfahren aus, wenn das aufgerufene Verfahren ein ANProgramm ist, während die ASProgramm-Ausführungseinrichtung 124 das aufgerufene Verfahren ausführt, wenn das aufgerufene Verfahren ein ASProgramm ist.
  • Wenn jedoch die Objektklasse noch nicht in den Adressraum 138 der Ausführungspartei geladen worden ist, lädt die Objektklassenladeeinrichtung 136 die Objektklasse in den Adressraum der Ausführungspartei und bestimmt, ob die Ausführung des aufgerufenen Verfahrens zulässig ist. Wenn z. B. die Objektklasse aus der Ablage 140 für vertrauenswürdige Objektklassen geladen worden ist, wird die Ausführung des aufgerufenen Verfahrens erlaubt und die Ausführungsprozedur wird aufgerufen. Die Ausführungsprozedur (siehe Tabelle 3) ruft die ANProgramm-Ausfühungseinrichtung auf, wenn das aufgerufene Verfahren ein ANProgramm ist, und ruft ansonsten die ASProgramm-Ausführungseinrichtung 124 auf, um das aufgerufene Verfahren auszuführen.
  • Wenn jedoch die Objektklasse aus der Ablage 142 für nichtvertrauenswürdige Objektklassen geladen wurde, untersucht die Klassenladeeinrichtung 136 den Objektkopf des Objekts, um zu bestimmen, ob es eine Objektklasse ist, die irgendwelche ASProgramme enthält. Dies bewerkstelligt sie, indem sie ermittelt, ob irgendwelche native_ASProgramm-IDs in der virtuellen Funktionstabelle des Objekts vorhanden sind.
  • Wenn keine ANProgramme in der Objektklasse vorhanden sind, ruft die Klassenladeeinrichtung 136 die ANProgramm-Integritätsprüfeinrichtung 136 auf, um die Integrität der ANProgramme in der Objektklasse zu prüfen. Dies wird in der gleichen Weise und für die gleichen Zwecke bewerkstelligt, wie vorher für die Überprüfung der Integrität des ANProgramms 200 beschrieben wurde (in dem Abschnitt, in dem die Compilierung eines ANProgramms beschrieben worden ist). Wenn daher die Integrität irgendeines der ANProgramme nicht verifiziert wird, gibt die ANProgramm-Integritätsprüfeinrichtung an die Klassenladeeinrichtung ein Fehler-Ergebnis zurück, wobei die Klassenladeeinrichtung die Klassenladeprozedur abbricht und eine geeignete Nachricht erzeugt, die dies anzeigt. Wenn jedoch die ANProgramm-Integritätsprüfeinrichtung ein Genehmigt-Ergebnis zurücksendet, das anzeigt, dass alle ANProgramme der Objektklasse überprüft worden sind, ermöglicht die Klassenladeeinrichtung die Ausführung des aufgerufenen Verfahrens.
  • Wenn es irgendwelche ANProgramme in der Objektklasse gibt, ruft die Klassenladeeinrichtung 136 die Signaturprüfeinrichtung 132 auf, um die Compilersignatur DigitalSignaturC und die Kompilierungsparteisignatur DigitalSignaturCP zu prüfen. Wenn irgendeines der ASProgramme nicht eine DigitalSignaturCP und eine DigitalSignaturC enthält, kann die Integrität der Äsprogrammquelle nicht überprüft werden, weshalb die Signaturprüfeinrichtung ein Fehlerergebnis an die ANProgramm-Ausführungseinrichtung zurücksendet. In Reaktion hierauf bricht die Klassenladeeinrichtung die Objektklassenladeprozedur ab und erzeugt eine geeignete Nachricht, dass dies aufgetreten ist.
  • Wenn ferner alle ASProgramme in der Objektklasse eine DigitalSignaturCP und eine DigitalSignaturC enthalten, werden die Identitäten der Compilierungspartei und des Compilers, wie in diesen zwei digitalen Signaturen angegeben, mit den Listen 144 (siehe 1) von bekannten, vertrauenswürdigen Compilerparteien und vertrauenswürdigen Compilern verglichen. Wenn irgendeines der ASProgramme in der Objektklasse von einer Compilierungspartei oder einen Compiler compiliert wurde, die nicht in dem Satz der bekannten, vertrauenswürdigen Compilerparteien und vertrauenswürdigen Compiler enthalten ist, wird die Klassenladeprozedur abgebrochen und die Ausführung des aufgerufenen Verfahrens wird somit blockiert. Wenn in ähnlicher Weise die in irgendeinem der ASProgramme identifizierte ASSprache nicht mit der ASSprache übereinstimmt, die von der ASProgramm-Ausführungseinrichtung 124 verwendet wird, wird die Klassenladeprozedur abgebrochen.
  • Wenn jedoch alle ASProgramme in der Objektklasse eine DigitalSignaturCP und eine DigitalSignaturC enthalten und die identifizierte Compilierungspartei und der Compiler für alle ASProgramme vertrauenswürdige Compilerparteien und Compiler sind, und die von allen ASProgrammen verwendete ASSprache eine solche ist, die von der ASProgramm-Ausführungseinrichtung verwendet wird, überprüft die Signaturprüfeinrichtung diese Signaturen in ähnlicher Weise, wie vorher für die Überprüfung der DigitalSignaturOP beschrieben worden ist (in dem Abschnitt, in dem die Compilierung des ANProgramms 200 beschrieben wurde). In diesem Fall werden jedoch die öffentlichen Schlüssel des Compilers und der Compilierungspartei von der Ablage 106 für vertrauenswürdige Schlüssel geholt und dementsprechend verwendet, um die MDC und die HashFunktionC-ID in der DigitalSignaturC und die MDCP und die HashFunktionCP-ID in der DigitalSignaturCP zu entschlüsseln. Ferner werden die Prüfnachrichtenkurzfassungen (TestMDC und TestMDCP), die der entschlüsselten MDCP und der MDC entsprechen, erzeugt durch Berechnen der Hash-Codes für die Datenbits des ASProgrammcodes plus der DigitalSignaturOP für die TestMDC und für die gleichen Datenbits plus der DigitalSignaturC für die TestMDCP, gemäß jeweils der HashFunktionC und der HashFunktionCP, die durch die entschlüsselte HashFunktionC-ID und die HashFunktionCP-ID identifiziert worden sind.
  • Wenn die DigitalSignaturC und/oder die DigitalSignaturCP nicht für jedes ASProgramm verifiziert wird (d. h. MDC ≠ TestMDC und/oder MDCP ≠ TestMDCP), sendet die Signaturprüfeinrichtung 136 an die Klassenladeeinrichtung 136 ein Fehler-Ergebnis zurück. In Reaktion hierauf bricht die Klassenladeeinrichtung die Klassenladeprozedur ab und erzeugt eine geeignete Nachricht, dass dies aufgetreten ist.
  • Wenn jedoch sowohl die DigitalSignaturC als auch die DigitalSignaturCP für jedes ASProgramm verifiziert worden sind (d. h. MDC = TestMDC und MDCP = TestMDCP), ruft die ANProgramm-Ausführungseinrichtung 124 erneut die Signaturprüfeinrichtung 132 auf, um die Ursprungsparteisignaturen (DigitalSignaturOP) für die ANProgramme zu prüfen, aus denen die ASProgramme compiliert wurden. Um die Ursprungspartei-Digitalsignaturen zu prüfen, wird die jeweilige DigitalSignaturOP in der gleichen Weise geprüft, wie vorher in dem Abschnitt beschrieben worden ist, der sich auf die Compilierung des ANProgramms 200 bezieht.
  • Wenn die DigitalSignaturOP jedes der ANProgramme, aus dem die ASProgramme compiliert wurden, geprüft wird, ruft die Klassenladeeinrichtung die ANProgramm-Integritätsprüfeinrichtung auf, um die Integrität jedes ANProgramms in der Objektklasse und der ANProgramme, aus denen die ASProgramme compiliert wurden, zu prüfen. Dies wird in der gleichen Weise bewerkstelligt, wie vorher beschrieben worden ist. Wenn die Integrität irgendeines dieser ANProgramme nicht verifiziert wird, sendet die ANProgramm-Integritätsprüfeinrichtung an die Klassenladeeinrichtung ein Fehler-Ergebnis zurück, welche die Klassenladeprozedur abbricht und eine geeignete Nachricht erzeugt.
  • Wenn jedoch die Integrität aller ANProgramme verifiziert worden ist, sendet die ANProgramm-Integritätsprüfeinrichtung 126 ein Genehmigt-Ergebnis an die Klassenladeeinrichtung 136 zurück. In Reaktion hierauf ruft die Klassenladeeinrichtung die ANProgramm-Ausführungseinrichtung oder die ASProgramm-Ausführungseinrichtung auf, um das aufgerufene Verfahren entsprechend auszuführen.
  • Im Hinblick auf das Vorangehende ist die Ausführungspartei überzeugt, dass nur diejenigen nichtvertrauenswürdigen Objektklassen in der nichtvertrauenswürdigen Ablage 142, die in der Integrität prüfbarer ANProgramme oder ANProgramme, deren Digitalsignaturen geprüft werden können, aufweisen, geladen werden und deren Programme ausgeführt werden.
  • Alternative Ausführungsformen
  • Einige der Merkmale der obenbeschriebenen Erfindung sind optional. Fachleute werden daher erkennen, dass alternative Ausführungsformen existieren, die diese Merkmale nicht aufweisen.
  • Zum Beispiel wurde der ANProgramm-Compiler so beschrieben, dass er sowohl eine DigitalSignaturCP als auch eine DigitalSignaturC jeweils für die Compilierungspartei und den ANProgramm-Compiler erzeugt. Der ANProgramm-Compiler kann jedoch einfach so konstruiert sein, dass er nur eine dieser digitalen Signaturen erzeugt, um die Überprüfung entweder des zum Compilieren des ANProgramms verwendeten Compilers oder der Compilierungspartei zu ermöglichen.
  • In ähnlicher Weise wurde die Programmausführungseinrichtung so beschrieben, dass sie die Überprüfung sowohl der DigitalSignaturCP als auch der DigitalSignaturC erfordert. Die Programmausführungseinrichtung kann jedoch so konstruiert sein, dass sie die Überprüfung nur einer dieser digitalen Signaturen erfordert und optional die andere Digitalsignatur überprüft, wenn das überprüfte ASProgramm diese enthält. Ferner kann die Programmausführungseinrichtung so konstruiert sein, dass sie den Schritt der Prüfung der Integrität des ANProgramms, das jedem ASProgramm entspricht, auf der Grundlage der Annahme auslässt, dass die Compilierungspartei vertrauenswürdig ist und dass es die Pflicht der Compilierungspartei ist, die Integrität jedes ANProgramms zu prüfen, das in ein ASProgramm compiliert wird, bevor die Compilierung durchgeführt wird.
  • Wenn die Ausführungspartei die Ursprungspartei ist, weiß die Ausführungspartei, dass sie aktuell das ANProgramm 200 zum Compilierungspartei-Server-Computer zur Compilierung in das ASProgramm 300 gesendet hat. In diesem Fall kann die Klassenladeeinrichtung 136 so konstruiert sein, dass sie die Signaturprüfeinrichtung nicht aufruft, um die DigitalSignaturOP im ANProgramm zu prüfen. Vielmehr kann die Ausführungspartei einfach die DigitalSignaturOP in der lokalen Kopie des ANProgramms mit der Digital-SignaturOP im compilierten ASProgramm vergleichen. Außerdem kann die Klassenladeeinrichtung so konstruiert sein, dass sie nicht die ANProgramm-Integritätsprüfeinrichtung 126 aufruft, um die Integrität des ANProgramms zu prüfen, das einem aufgerufenen ASProgramm entspricht, da die Integrität des ANProgramms während der Vorbereitung für die Compilierungsprozedur vor dem Senden zum compilierenden Server-Computer geprüft worden ist. Alternativ kann die ANProgramm-Compilierungsvorbereitungseinrichtung 128 so konstruiert sein, dass sie die ANProgramm-Integritätsprüfeinrichtung während der Vorbereitung für die Compilierungsprozedur nicht aufruft, da die Integrität sowohl vom Compiler geprüft würde, als auch dann, wenn die Klassenladeeinrichtung die ANProgramm-Integritätsprüfeinrichtung von der Ausführung des entsprechenden ASProgramms aufruft.
  • TABELLE 1 Pseudocode-Darstellung des Verfahrens zur Vorbereitung architekturneutraler Programme für die Compilierung
    Figure 00240001
  • TABELLE 2 Pseudocode-Darstellung des Verfahrens zur Compilierung eines ANProgramms und Erzeugung eines ASProgramms
    Figure 00250001
  • Figure 00260001
  • TABELLE 3 Pseudocode-Darstellung des Verfahrens zur Ausführung architekturspezifischer Programme
    Figure 00270001
  • Figure 00280001
  • Figure 00290001
  • Figure 00300001

Claims (12)

  1. Computer, umfassend: eine Vertrauensobjektklassen-Ablage (140), die vertrauenswürdige Objektklassen speichert; eine architekturspezifische Programmausführungseinrichtung (124); einen Benutzeradressraum (138); und eine Klassenladeeinrichtung (136), die eine spezifizierte der Objektklassen zur Ausführung in den Benutzeradressraum lädt, wenn die Ausführung irgendeines Programms in der einen Objektklasse angefordert wird; eine Programmintegrität-Prüfeinrichtung (126), die dafür konfiguriert ist, zu prüfen, ob in einer architekturneutralen Sprache geschriebene Programme vordefinierte Programmintegritätskriterien erfüllen; eine architekturneutrale Programmausführungseinrichtung (122); gekennzeichnet durch: eine Digitalsignatur-Prüfeinrichtung (132), die dafür ausgelegt ist, digitale Signaturen (210) der Ursprungsparteien von Programmen zu prüfen, die in den Programmen enthalten sind; und eine Nichtvertrauensobjektklassen-Ablage (142), die nichtvertrauenswürdige Objektklassen speichert; wobei die Objektklassen jeweils wenigstens ein Programm enthalten, wobei jedes Programm ein Programm umfasst, das aus einer Gruppe ausgewählt ist, die aus (A) architekturneutralen Programmen (200), die in einer architekturneutralen Sprache geschrieben sind, und (B) architekturspezifischen Programmen (300), die in einer architekturspezifischen Sprache geschrieben sind, besteht; die Klassenladeeinrichtung (136) eine Programmsicherheitslogik enthält, die dafür konfiguriert ist, das Laden irgendeiner angeforderten Objektklasse außer den Objektklassen in der Vertrauensobjektklassen-Ablage (140), welche wenigstens ein architekturspezifisches Programm enthält, zu verhindern, solange nicht jedes architekturspezifische Programm in der angeforderten Objektklasse eine digitale Signatur (210) enthält und die digitale Signatur von der Digitalsignatur-Prüfeinrichtung (132) erfolgreich geprüft worden ist.
  2. Computer nach Anspruch 1, wobei die Klassenladeeinrichtung (136) eine Prüfeinrichtungslogik enthält, die dafür konfiguriert ist, die Programmintegritäts-Prüfeinrichtung aufzurufen, um die Integrität jedes architekturneutralen Programms in der angeforderten Objektklasse zu prüfen, wenn die angeforderte Objektklasse nicht in der Vertrauensobjektklassen-Ablage (140) gespeichert ist und wenigstens ein architekturneutrales Programm enthält; und die Programmsicherheitslogik ferner dafür konfiguriert ist, das Laden irgendeiner angeforderten Objektklasse außer den Objektklassen in der Vertrauensobjektklassen-Ablage (140) zu verhindern, wenn die angeforderte Objektklasse wenigstens ein architekturneutrales Programm (200) enthält, dessen Integrität von der Programmintegritäts-Prüfeinrichtung (126) nicht geprüft worden ist.
  3. Computer nach Anspruch 1 oder 2, wobei jede digitale Signatur (210), die einem der architekturspezifischen Programme zugeordnet ist, einen Zeichnungsparteiidentifizierer und eine verschlüsselte Mitteilung enthält, wobei die verschlüsselte Mitteilung eine Mitteilungskurzfassung des architekturspezifischen Programms enthält, die unter Verwendung einer Mitteilungskurzfassungsfunktion erzeugt worden ist, bei der die verschlüsselte Mitteilung unter Verwendung eines privaten Verschlüsselungsschlüssels verschlüsselt worden ist, der der identifizierten Zeichnungspartei zugeordnet ist; und die Digitalsignatur-Prüfeinrichtung (132) eine Logik zum Verarbeiten einer spezifizierten digitalen Signatur (210) enthält, durch Erhalten eines öffentlichen Schlüssels, der der durch den Zeichnungsparteiidentifizierer identifizierten Zeichnungspartei zugeordnet ist, Entschlüsseln der verschlüsselten Mitteilung der digitalen Signatur (210) mit dem öffentlichen Schlüssel, um somit eine entschlüsselte Mitteilungskurzfassung zu erzeugen, Erzeugen einer Testmitteilungskurzfassung durch Ausführen der Mitteilungskurzfassungsfunktion für das architekturspezifische Programm (300), das der digitalen Signatur zugeordnet ist, Vergleichen der Testmitteilungskurzfassung mit der entschlüsselten Mitteilungskurzfassung, und Ausgeben eines Fehlersignals, wenn die entschlüsselte Mitteilungskurzfassung und die Testmitteilungskurzfassung nicht übereinstimmen.
  4. Computer nach Anspruch 1, wobei die Programmsicherheitslogik ferner dafür konfiguriert ist, das Laden irgendeiner angeforderten Objektklasse außer den Objektklassen in der Vertrauensobjektklassen-Ablage (140), welche wenigstens ein architekturspezifisches Programm (300) enthält, zu verhindern, solange nicht jedes architekturspezifische Programm (300) in der angeforderten Objektklasse zwei digitale Signaturen (320, 312) enthält und beide digitale Signaturen von der Digitalsignatur-Prüfeinrichtung (132) erfolgreich geprüft worden sind; jede digitale Signatur (320, 312), die einem der architekturspezifischen Programme (300) zugeordnet ist, einen Zeichnungsparteiidentifizierer (326, 318) und eine verschlüsselte Mitteilung enthält, wobei die verschlüsselte Mitteilung eine mit einer vordefinierten Prozedur erzeugte Mitteilung enthält, wobei die verschlüsselte Mitteilung unter Verwendung eines privaten Verschlüsselungsschlüssels verschlüsselt worden ist, der der identifizierten Zeichnungspartei zugeordnet ist; und die Digitalsignatur-Prüfeinrichtung (132) eine Logik enthält, die dafür konfiguriert ist, eine spezifizierte Digitalsignatur zu verarbeiten, durch Erhalten eines öffentlichen Schlüssels, der der durch den Zeichnungsparteiidentifizierer identifizierten Zeichnungspartei zugeordnet ist, Entschlüsseln der verschlüsselten Mitteilung der digitalen Signatur mit dem öffentlichen Schlüssel, um somit eine entschlüsselte Mitteilung zu erzeugen, Erzeugen einer Testmitteilung durch Ausführen der vordefinierten Prozedur für das architekturspezifische Programm, das der digitalen Signatur zugeordnet ist, Vergleichen der Testmitteilung mit der entschlüsselten Mitteilung, und Ausgeben eines Fehlersignals, wenn die entschlüsselte Mitteilungskurzfassung und die Testmitteilungskurzfassung nicht übereinstimmen; wobei die zwei digitalen Signaturen, die in jedem architekturspezifischen Programm in der angeforderten Objektklasse enthalten sein müssen, eine erste digitale Signatur, für die die Zeichnungspartei ein Mitglied einer ersten Gruppe von vertrauenswürdigen Parteien ist, und eine zweite digitale Signatur enthalten, für die die Zeichnungspartei ein Mitglied einer zweiten Gruppe vertrauenswürdiger Parteien ist.
  5. Computer nach Anspruch 1, wobei die Programmsicherheitslogik dafür konfiguriert ist, das Laden der angeforderten Objektklasse außer den Objektklassen in der Vertrauensobjektklassen-Ablage zu verhindern, solange nicht jedes architekturspezifische Programm (300) in der angeforderten Objektklasse eine Mitteilungskurzfassung für ein zugeordnetes architekturneutrales Programm enthält und die Mitteilungskurzfassung mit einer Testmitteilungskurzfassung übereinstimmt, die von der Programmsicherheitslogik erzeugt wird, indem sie eine vordefinierte Mitteilungskurzfassungsprozedur für das zugeordnete architekturneutrale Programm (200) ausführt.
  6. Verfahren zum Betreiben eines Computersystems, das die Schritte umfasst: Speichern vertrauenswürdiger Objektklassen in einer Vertrauensobjektklassen-Ablage (140); wenn die Ausführung irgendeines Programms in der einen Objektklasse angefordert wird, Laden der angeforderten Objektklasse zur Ausführung in einen Benutzeradressraum (138); gekennzeichnet durch: Speichern nicht-vertrauenswürdiger Objektklassen in einer Nichtvertrauensobjektklassen-Ablage (142); wobei die Objektklassen jeweils wenigstens ein Programm enthalten und jedes Programm ein Programm umfasst, das aus der Gruppe ausgewählt wird, die aus (A) architekturneutralen Programmen (200), die in einer architekturneutralen Sprache geschrieben sind, und (B) architekturspezifischen Programmen (300), die in einer architekturspezifischen Sprache geschrieben sind, besteht; Ausführen des Ladeschritts, solange nicht das Laden der angeforderten Objektklasse durch einen Sicherheitsverstoß verhindert wird, einschließlich der Verhinderung des Ladens irgendeiner angeforderten Objektklasse außer den Objektklassen in der Vertrauensobjektklassen-Ablage, die wenigstens ein architekturspezifisches Programm enthält, solange nicht je des architekturspezifische Programm in der angeforderten Objektklasse eine digitale Signatur enthält und die digitale Signatur durch eine Digitalsignatur-Prüfeinrichtung (132) erfolgreich geprüft worden ist.
  7. Verfahren nach Anspruch 6, wobei der Objektklassenladeschritt enthält: (A) Prüfen der Integrität jedes architekturneutralen Programms (200) in der angeforderten Objektklasse, wenn die angeforderte Objektklasse nicht in der Vertrauensobjektklassen-Ablage (140) gespeichert ist und wenigstens ein architekturneutrales Programm enthält, und (B) Verhindern des Ladens der angeforderten Objektklasse, solange sich die angeforderte Objektklasse nicht in der Vertrauensobjektklassen-Ablage befindet, wenn die angeforderte Objektklasse wenigstens ein architekturneutrales Programm enthält, dessen Integrität nicht geprüft ist.
  8. Verfahren nach Anspruch 6 oder 7, wobei jede digitale Signatur (210), die einem der architekturspezifischen Programme (300) zugeordnet ist, einen Zeichnungsparteiidentifizierer (216) und eine verschlüsselte Mitteilung enthält, wobei die verschlüsselte Mitteilung eine Mitteilungskurzfassung (212) des architekturspezifischen Programms enthält, die unter Verwendung einer Mitteilungskurzfassungsfunktion erzeugt worden ist, in der die verschlüsselte Mitteilung unter Verwendung eines privaten Verschlüsselungsschlüssels verschlüsselt worden ist, der der identifizierten Zeichnungspartei zugeordnet ist; und der Objektklassenladeschritt die Verarbeitung einer spezifizierten digitalen Signatur enthält, durch Erhalten eines öffentlichen Schlüssels, der der durch den Zeichnungsparteiidentifizierer identifizierten Zeichnungspartei zugeordnet ist, Entschlüsseln der verschlüsselten Mitteilung der digitalen Signatur mit dem öffentlichen Schlüssel, um somit eine entschlüsselte Mitteilungskurzfassung zu erzeugen, Erzeugen einer Testmitteilungskurzfassung durch Ausführen der Mitteilungskurzfassungsfunktion für das architekturspezifische Programm, das der digitalen Signatur zugeordnet ist, Vergleichen der Testmitteilungskurzfassung mit der entschlüsselten Mitteilungskurzfassung, und Ausgeben eines Fehlersignals, wenn die entschlüsselte Mitteilungskurzfassung und die Testmitteilungskurzfassung nicht übereinstimmen.
  9. Verfahren nach Anspruch 6, wobei der Objektklassenladeschritt das Verhindern des Ladens irgendeiner angeforderten Objektklasse außer den Objektklassen in der Vertrauensobjektklassen-Ablage, welche wenigstens ein architekturspezifisches Programm enthält, umfasst, solange nicht jedes architekturspezifische Programm in der angeforderten Objektklasse zwei digitale Signaturen (320, 312) enthält und beide digitale Signaturen von der Digitalsignatur-Prüfeinrichtung erfolgreich geprüft worden sind; jede digitale Signatur (320, 312), die einem der architekturspezifischen Programme (300) zugeordnet ist, einen Zeichnungsparteiidentifizierer und eine verschlüsselte Mitteilung enthält, wobei die verschlüsselte Mitteilung eine Mitteilung enthält, die von einer vordefinierten Prozedur erzeugt worden ist, in der die verschlüsselte Mitteilung unter Verwendung eines privaten Verschlüsselungsschlüssels verschlüsselt worden ist, der der identifizierten Zeichnungspartei zugeordnet ist; der Objektklassenladeschritt die Verarbeitung einer spezifizierten digitalen Signatur enthält, durch Erhalten eines öffentlichen Schlüssels, der der durch den Zeichnungsparteiidentifizierer identifizierten Zeichnungspartei zugewiesen ist, Entschlüsseln der verschlüsselten Mitteilung der digitalen Signatur mit dem öffentlichen Schlüssel, um somit eine entschlüsselte Mitteilung zu erzeugen, Erzeugen einer Testmitteilung durch Ausführen der vordefinierten Prozedur für das architekturspezifische Programm, das der digitalen Signatur zugeordnet ist, Vergleichen der Testmitteilung mit der entschlüsselten Mitteilung, und Ausgeben eines Fehlersignals, wenn die entschlüsselte Mitteilungskurzfassung und die Testmitteilungskurzfassung nicht übereinstimmen; wobei die zwei digitalen Signaturen, die in jedem architekturspezifischen Programm in der angeforderten Objektklasse enthalten sein müssen, eine erste digitale Signatur, für die die Zeichnungspartei ein Mitglied einer ersten Gruppe vertrauenswürdiger Parteien ist, und eine zweite digitale Signatur enthalten, für die die Zeichnungspartei ein Mitglied einer zweiten Gruppe vertrauenswürdiger Parteien ist.
  10. Verfahren nach Anspruch 6, wobei der Objektklassenladeschritt das Verhindern des Ladens der angeforderten Objektklasse außer den Objektklassen in der Vertrauensob jektklassen-Ablage enthält, solange nicht jedes architekturspezifische Programm in der angeforderten Objektklasse eine Mitteilungskurzfassung für ein zugeordnetes architekturneutrales Programm enthält und die Mitteilungskurzfassung mit einer Testmitteilungskurzfassung übereinstimmt, die von der Programmsicherheitslogik durch Ausführen einer vordefinierten Mitteilungskurzfassungsprozedur für das zugeordnete architekturneutrale Programm erzeugt worden ist.
  11. Computerlesbares Medium zum Speichern von Datenprogrammen, die auf einem Datenverarbeitungssystem ausgeführt werden, wobei das computerlesbare Medium umfasst: eine Vertrauensobjektklassen-Ablage (140), die vertrauenswürdige Objektklassen speichert; eine architekturspezifische Programmausführungseinrichtung (124); eine Klassenladeeinrichtung (136), die eine spezifizierte der Objektklassen zur Ausführung in einen Benutzeradressraum (138) lädt, wenn die Ausführung irgendeines Programms in der einen Objektklasse angefordert wird; eine Programmintegrität-Prüfeinrichtung (126), die prüft, ob in einer architekturneutralen Sprache geschriebene Programme vordefinierte Programmintegritätskriterien erfüllen; gekennzeichnet durch: eine Digitalsignatur-Prüfeinrichtung (132), die digitale Signaturen (210) der Ursprungsparteien von Programmen prüft, die in den Programmen enthalten sind; eine architekturneutrale Programmausführungseinrichtung (122); und eine Nichtvertrauensobjektklassen-Ablage (142), die nichtvertrauenswürdige Objektklassen speichert; wobei die Objektklassen jeweils wenigstens ein Programm enthalten, wobei jedes Programm ein Programm umfasst, das aus einer Gruppe ausgewählt ist, die aus (A) architekturneutralen Programmen (200), die in einer architekturneutralen Sprache geschrieben sind, und (B) architekturspezifischen Programmen (300), die in einer architekturspezifischen Sprache geschrieben sind, besteht; die Klassenladeeinrichtung (136) Programmsicherheitsanweisungen enthält, die das Laden irgendeiner angeforderten Objektklasse außer den Objektklassen in der Vertrauensobjektklassen-Ablage, welche wenigstens ein architekturspezifisches Programm enthält, verhindern, solange nicht jedes architekturspezifische Programm in der angeforderten Objektklasse eine digitale Signatur enthält und die digitale Signatur von der Digitalsignatur-Prüfeinrichtung (132) erfolgreich geprüft worden ist.
  12. Computerlesbares Medium nach Anspruch 11, wobei die Klassenladeeinrichtung (136) Prüfeinrichtungsanweisungen enthält, um die Programmintegrität-Prüfeinrichtung aufzurufen, um die Integrität jedes architekturneutralen Programms in der angeforderten Objektklasse zu prüfen, wenn die angeforderte Objektklasse nicht in der Vertrauensobjektklassen-Ablage (140) gespeichert ist und wenigstens ein architekturneutrales Programm (200) enthält; und die Programmsicherheitsanweisungen ferner das Laden irgendeiner angeforderten Objektklasse außer den Objektklassen in der Vertrauensobjektklassen-Ablage (140) verhindern, wenn die angeforderte Objektklasse wenigstens ein architekturneutrales Programm (200) enthält, dessen Integrität nicht von der Programmintegrität-Prüfeinrichtung (126) geprüft worden ist.
DE69634684T 1995-12-08 1996-11-27 Vorrichtung und Verfahren zur Ausführung nachprüfbarer Programme mit Möglichkeit zur Nutzung von nicht-nachprüfbaren Programmen aus vertrauten Quellen Expired - Lifetime DE69634684T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US569398 1990-08-17
US08/569,398 US5692047A (en) 1995-12-08 1995-12-08 System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources

Publications (2)

Publication Number Publication Date
DE69634684D1 DE69634684D1 (de) 2005-06-09
DE69634684T2 true DE69634684T2 (de) 2006-01-19

Family

ID=24275287

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69634684T Expired - Lifetime DE69634684T2 (de) 1995-12-08 1996-11-27 Vorrichtung und Verfahren zur Ausführung nachprüfbarer Programme mit Möglichkeit zur Nutzung von nicht-nachprüfbaren Programmen aus vertrauten Quellen

Country Status (11)

Country Link
US (2) US5692047A (de)
EP (1) EP0778520B1 (de)
JP (1) JP4112033B2 (de)
KR (1) KR100433319B1 (de)
CN (1) CN1097771C (de)
AU (1) AU717615B2 (de)
CA (1) CA2190556A1 (de)
DE (1) DE69634684T2 (de)
HK (1) HK1000846A1 (de)
SG (1) SG75108A1 (de)
TW (1) TW355768B (de)

Families Citing this family (215)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10361802B1 (en) 1999-02-01 2019-07-23 Blanding Hovenweep, Llc Adaptive pattern recognition based control system and method
US7162635B2 (en) * 1995-01-17 2007-01-09 Eoriginal, Inc. System and method for electronic transmission, storage, and retrieval of authenticated electronic original documents
US7743248B2 (en) * 1995-01-17 2010-06-22 Eoriginal, Inc. System and method for a remote access service enabling trust and interoperability when retrieving certificate status from multiple certification authority reporting components
US6237096B1 (en) * 1995-01-17 2001-05-22 Eoriginal Inc. System and method for electronic transmission storage and retrieval of authenticated documents
US5943422A (en) 1996-08-12 1999-08-24 Intertrust Technologies Corp. Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US6948070B1 (en) 1995-02-13 2005-09-20 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
US20120166807A1 (en) 1996-08-12 2012-06-28 Intertrust Technologies Corp. Systems and Methods Using Cryptography to Protect Secure Computing Environments
US6658568B1 (en) 1995-02-13 2003-12-02 Intertrust Technologies Corporation Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management
WO1996027155A2 (en) 1995-02-13 1996-09-06 Electronic Publishing Resources, Inc. Systems and methods for secure transaction management and electronic rights protection
US7133846B1 (en) 1995-02-13 2006-11-07 Intertrust Technologies Corp. Digital certificate support system, methods and techniques for secure electronic commerce transaction and rights management
EP0846297A4 (de) * 1995-05-30 2002-07-31 Corp For Nat Res Initiatives System zur verteilten task-ausführung
FR2742245B1 (fr) * 1995-12-08 1998-01-23 Transtar Procede de manipulation de modeles de donnees utilises en genie logiciel
US5692047A (en) * 1995-12-08 1997-11-25 Sun Microsystems, Inc. System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources
US6075863A (en) * 1996-02-28 2000-06-13 Encanto Networks Intelligent communication device
US6438614B2 (en) 1998-02-26 2002-08-20 Sun Microsystems, Inc. Polymorphic token based control
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6598094B1 (en) 1998-03-20 2003-07-22 Sun Microsystems, Inc. Method and apparatus for determining status of remote objects in a distributed system
US6138238A (en) 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US6463446B1 (en) 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6247026B1 (en) 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US6237024B1 (en) 1998-03-20 2001-05-22 Sun Microsystem, Inc. Method and apparatus for the suspension and continuation of remote processes
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6578044B1 (en) 1997-11-17 2003-06-10 Sun Microsystems, Inc. Method and system for typesafe attribute matching
US6487607B1 (en) 1998-02-26 2002-11-26 Sun Microsystems, Inc. Methods and apparatus for remote method invocation
US6393497B1 (en) 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6466947B2 (en) 1998-03-20 2002-10-15 Sun Microsystems, Inc. Apparatus and method for dynamically verifying information in a distributed system
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6560656B1 (en) 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6282652B1 (en) 1998-02-26 2001-08-28 Sun Microsystems, Inc. System for separately designating security requirements for methods invoked on a computer
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US5978484A (en) * 1996-04-25 1999-11-02 Microsoft Corporation System and method for safety distributing executable objects
US5794049A (en) * 1996-06-05 1998-08-11 Sun Microsystems, Inc. Computer system and method for executing architecture specific code with reduced run-time memory space requirements
US6161121A (en) * 1996-07-01 2000-12-12 Sun Microsystems, Inc. Generic transfer of exclusive rights
US5987123A (en) * 1996-07-03 1999-11-16 Sun Microsystems, Incorporated Secure file system
AU2003203649B2 (en) * 1996-08-12 2006-03-02 Intertrust Technologies Corporation Systems and methods using cryptography to protect secure computing environments
US7590853B1 (en) * 1996-08-12 2009-09-15 Intertrust Technologies Corporation Systems and methods using cryptography to protect secure computing environments
AU2004240210B2 (en) * 1996-08-12 2008-03-06 Intertrust Technologies Corporation Systems and methods using cryptography to protect secure computing environments
US6089460A (en) * 1996-09-13 2000-07-18 Nippon Steel Corporation Semiconductor device with security protection function, ciphering and deciphering method thereof, and storage medium for storing software therefor
US6857099B1 (en) 1996-09-18 2005-02-15 Nippon Steel Corporation Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program
US5958050A (en) * 1996-09-24 1999-09-28 Electric Communities Trusted delegation system
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US5944823A (en) * 1996-10-21 1999-08-31 International Business Machines Corporations Outside access to computer resources through a firewall
US8079086B1 (en) * 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US6154844A (en) * 1996-11-08 2000-11-28 Finjan Software, Ltd. System and method for attaching a downloadable security profile to a downloadable
US6167520A (en) * 1996-11-08 2000-12-26 Finjan Software, Inc. System and method for protecting a client during runtime from hostile downloadables
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US7613926B2 (en) * 1997-11-06 2009-11-03 Finjan Software, Ltd Method and system for protecting a computer and a network from hostile downloadables
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US5937193A (en) * 1996-11-27 1999-08-10 Vlsi Technology, Inc. Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
US6367012B1 (en) * 1996-12-06 2002-04-02 Microsoft Corporation Embedding certifications in executable files for network transmission
US6148401A (en) * 1997-02-05 2000-11-14 At&T Corp. System and method for providing assurance to a host that a piece of software possesses a particular property
US5915085A (en) * 1997-02-28 1999-06-22 International Business Machines Corporation Multiple resource or security contexts in a multithreaded application
US5905895A (en) * 1997-03-07 1999-05-18 International Business Machines Corporation Method and system for optimizing non-native bytecodes before bytecode interpretation
US5946493A (en) * 1997-03-28 1999-08-31 International Business Machines Corporation Method and system in a data processing system for association of source code instructions with an optimized listing of object code instructions
US6167522A (en) * 1997-04-01 2000-12-26 Sun Microsystems, Inc. Method and apparatus for providing security for servers executing application programs received via a network
US6381698B1 (en) 1997-05-21 2002-04-30 At&T Corp System and method for providing assurance to a host that a piece of software possesses a particular property
IL133024A (en) * 1997-05-29 2003-11-23 Sun Microsystems Inc Method and apparatus for signing and sealing objects
US6175924B1 (en) 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US6065046A (en) * 1997-07-29 2000-05-16 Catharon Productions, Inc. Computerized system and associated method of optimally controlled storage and transfer of computer programs on a computer network
US5978579A (en) * 1997-08-12 1999-11-02 International Business Machines Corporation Architecture for customizable component system
US5970252A (en) * 1997-08-12 1999-10-19 International Business Machines Corporation Method and apparatus for loading components in a component system
US6093215A (en) * 1997-08-12 2000-07-25 International Business Machines Corporation Method and apparatus for building templates in a component system
US6182279B1 (en) 1997-08-12 2001-01-30 International Business Machines Corporation Method and apparatus for storing templates in a component system
US6195794B1 (en) 1997-08-12 2001-02-27 International Business Machines Corporation Method and apparatus for distributing templates in a component system
US6009524A (en) * 1997-08-29 1999-12-28 Compact Computer Corp Method for the secure remote flashing of a BIOS memory
US6397331B1 (en) * 1997-09-16 2002-05-28 Safenet, Inc. Method for expanding secure kernel program memory
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
US6128774A (en) * 1997-10-28 2000-10-03 Necula; George C. Safe to execute verification of software
US7975305B2 (en) * 1997-11-06 2011-07-05 Finjan, Inc. Method and system for adaptive rule-based content scanners for desktop computers
US8225408B2 (en) * 1997-11-06 2012-07-17 Finjan, Inc. Method and system for adaptive rule-based content scanners
US7418731B2 (en) * 1997-11-06 2008-08-26 Finjan Software, Ltd. Method and system for caching at secure gateways
IL122314A (en) 1997-11-27 2001-03-19 Security 7 Software Ltd Method and system for enforcing a communication security policy
US6334189B1 (en) * 1997-12-05 2001-12-25 Jamama, Llc Use of pseudocode to protect software from unauthorized use
US6418444B1 (en) * 1997-12-11 2002-07-09 Sun Microsystems, Inc. Method and apparatus for selective excution of a computer program
US6044467A (en) * 1997-12-11 2000-03-28 Sun Microsystems, Inc. Secure class resolution, loading and definition
RU2000115287A (ru) 1998-01-16 2002-07-27 Медиадна Система и способ для подтверждения подлинности равноправных компонентов
US7268700B1 (en) 1998-01-27 2007-09-11 Hoffberg Steven M Mobile communication device
EP1057272A2 (de) * 1998-02-26 2000-12-06 Sun Microsystems, Inc. Verfahren und vorrichtung zur dynamischen nachprüfung von informationen in einem verteilten system
WO1999044133A2 (en) 1998-02-26 1999-09-02 Sun Microsystems, Inc. Method and system for deterministic hashes to identify remote methods
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
CN1266509A (zh) * 1998-03-13 2000-09-13 二路有限公司 在受保护环境下公开文件的方法和装置
US5999732A (en) 1998-03-23 1999-12-07 Sun Microsystems, Inc. Techniques for reducing the cost of dynamic class initialization checks in compiled code
US6684332B1 (en) 1998-06-10 2004-01-27 International Business Machines Corporation Method and system for the exchange of digitally signed objects over an insecure network
AU4568299A (en) * 1998-06-15 2000-01-05 Dmw Worldwide, Inc. Method and apparatus for assessing the security of a computer system
US6131165A (en) * 1998-06-18 2000-10-10 Sun Microsystems, Inc. Permit for controlling access to services in protected memory systems
US6792606B2 (en) 1998-07-17 2004-09-14 International Business Machines Corporation Method and apparatus for object persistence
US6223287B1 (en) 1998-07-24 2001-04-24 International Business Machines Corporation Method for establishing a secured communication channel over the internet
US6735696B1 (en) * 1998-08-14 2004-05-11 Intel Corporation Digital content protection using a secure booting method and apparatus
US6202201B1 (en) 1998-09-23 2001-03-13 Netcreate Systems, Inc. Text object compilation method and system
US6154842A (en) * 1998-10-13 2000-11-28 Motorola, Inc. Method and system for reducing time and power requirements for executing computer-readable instruction streams in an execution environment having run-time security constraints
US6802006B1 (en) * 1999-01-15 2004-10-05 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US6880155B2 (en) 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
WO2000059239A1 (en) * 1999-03-31 2000-10-05 Telefonaktiebolaget Lm Ericsson (Publ) Distribution of service execution environments with respect to a centralized service supplier environment
AU4071500A (en) * 1999-04-05 2000-10-23 Manage Com Management agent and system including the same
US6748580B1 (en) 1999-04-22 2004-06-08 International Business Machines Corporation Method and apparatus for creating software tools using a JTML interface
US6782478B1 (en) 1999-04-28 2004-08-24 Thomas Probert Techniques for encoding information in computer code
US7421586B2 (en) * 1999-05-12 2008-09-02 Fraunhofer Gesselschaft Protecting mobile code against malicious hosts
AU4674300A (en) * 1999-05-25 2000-12-12 Motorola, Inc. Pre-verification of applications in mobile computing
US6681329B1 (en) * 1999-06-25 2004-01-20 International Business Machines Corporation Integrity checking of a relocated executable module loaded within memory
US6658567B1 (en) 1999-06-25 2003-12-02 Geomechanics International, Inc. Method and logic for locking geological data and an analyzer program that analyzes the geological data
US7650504B2 (en) * 1999-07-22 2010-01-19 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
EP1526435A3 (de) * 1999-07-30 2005-07-27 Intertrust Technologies Corp. Verfahren und Systeme zur Transaktionsaufzeichnungsübertragung unter Anwendung von Schwellen und einem mehrstufigen Protokoll
US6675298B1 (en) * 1999-08-18 2004-01-06 Sun Microsystems, Inc. Execution of instructions using op code lengths longer than standard op code lengths to encode data
US7406603B1 (en) 1999-08-31 2008-07-29 Intertrust Technologies Corp. Data protection systems and methods
EP1128598A4 (de) * 1999-09-07 2007-06-20 Sony Corp Inhaltsverwaltungssystem, vorrichtung, verfahren und programmspeichermedium
US6985885B1 (en) 1999-09-21 2006-01-10 Intertrust Technologies Corp. Systems and methods for pricing and selling digital goods
US6684387B1 (en) 1999-09-23 2004-01-27 International Business Machines Corporation Method and apparatus for verifying Enterprise Java Beans
US6748538B1 (en) * 1999-11-03 2004-06-08 Intel Corporation Integrity scanner
US7158993B1 (en) 1999-11-12 2007-01-02 Sun Microsystems, Inc. API representation enabling submerged hierarchy
US6976258B1 (en) 1999-11-30 2005-12-13 Ensim Corporation Providing quality of service guarantees to virtual hosts
FI111567B (fi) * 1999-12-27 2003-08-15 Nokia Corp Menetelmä ohjelmamoduulin lataamiseksi
JP2001195247A (ja) * 2000-01-07 2001-07-19 Nec Corp ソフトウェアの安全性を検証し保証するシステム及び方法
US6529985B1 (en) 2000-02-04 2003-03-04 Ensim Corporation Selective interception of system calls
US6711607B1 (en) 2000-02-04 2004-03-23 Ensim Corporation Dynamic scheduling of task streams in a multiple-resource system to ensure task stream quality of service
US6560613B1 (en) 2000-02-08 2003-05-06 Ensim Corporation Disambiguating file descriptors
US6754716B1 (en) 2000-02-11 2004-06-22 Ensim Corporation Restricting communication between network devices on a common network
US7343421B1 (en) 2000-02-14 2008-03-11 Digital Asset Enterprises Llc Restricting communication of selected processes to a set of specific network addresses
US6745386B1 (en) * 2000-03-09 2004-06-01 Sun Microsystems, Inc. System and method for preloading classes in a data processing device that does not have a virtual memory manager
US6948003B1 (en) 2000-03-15 2005-09-20 Ensim Corporation Enabling a service provider to provide intranet services
US6986132B1 (en) 2000-04-28 2006-01-10 Sun Microsytems, Inc. Remote incremental program binary compatibility verification using API definitions
US6651186B1 (en) 2000-04-28 2003-11-18 Sun Microsystems, Inc. Remote incremental program verification using API definitions
US6883163B1 (en) 2000-04-28 2005-04-19 Sun Microsystems, Inc. Populating resource-constrained devices with content verified using API definitions
US8082491B1 (en) 2000-05-09 2011-12-20 Oracle America, Inc. Dynamic displays in a distributed computing environment
US6862594B1 (en) 2000-05-09 2005-03-01 Sun Microsystems, Inc. Method and apparatus to discover services using flexible search criteria
US6985937B1 (en) 2000-05-11 2006-01-10 Ensim Corporation Dynamically modifying the resources of a virtual server
US6907421B1 (en) 2000-05-16 2005-06-14 Ensim Corporation Regulating file access rates according to file type
US6934755B1 (en) 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
US6922782B1 (en) * 2000-06-15 2005-07-26 International Business Machines Corporation Apparatus and method for ensuring data integrity of unauthenticated code
US7124408B1 (en) * 2000-06-28 2006-10-17 Microsoft Corporation Binding by hash
US7117371B1 (en) 2000-06-28 2006-10-03 Microsoft Corporation Shared names
US7143024B1 (en) 2000-07-07 2006-11-28 Ensim Corporation Associating identifiers with virtual processes
AU6371500A (en) * 2000-07-25 2002-02-05 Mediadna Inc System and method of verifying the authenticity of dynamically connectable executable images
US7552333B2 (en) * 2000-08-04 2009-06-23 First Data Corporation Trusted authentication digital signature (tads) system
CA2417770C (en) * 2000-08-04 2011-10-25 First Data Corporation Trusted authentication digital signature (tads) system
US6909691B1 (en) 2000-08-07 2005-06-21 Ensim Corporation Fairly partitioning resources while limiting the maximum fair share
US7032114B1 (en) * 2000-08-30 2006-04-18 Symantec Corporation System and method for using signatures to detect computer intrusions
US6981245B1 (en) 2000-09-14 2005-12-27 Sun Microsystems, Inc. Populating binary compatible resource-constrained devices with content verified using API definitions
WO2002023331A2 (en) * 2000-09-14 2002-03-21 Sun Microsystems, Inc. Remote incremental program binary compatibility verification using api definitions
US6732211B1 (en) 2000-09-18 2004-05-04 Ensim Corporation Intercepting I/O multiplexing operations involving cross-domain file descriptor sets
US6964039B2 (en) * 2000-12-13 2005-11-08 Esmertec Ag Method to create optimized machine code through combined verification and translation of JAVA™ bytecode
US7219354B1 (en) 2000-12-22 2007-05-15 Ensim Corporation Virtualizing super-user privileges for multiple virtual processes
FR2819602B1 (fr) * 2001-01-12 2003-02-21 Gemplus Card Int Procede de gestion d'applications informatiques par le systeme d'exploitation d'un systeme informatique multi-applications
EP1233333A1 (de) * 2001-02-19 2002-08-21 Hewlett-Packard Company Verfahren zur Ausführung eines herunterladbaren Dienstes mittels des Empfangs einschränkender Zugriffrechte mindestens einer Profildatei
US6618736B1 (en) 2001-03-09 2003-09-09 Ensim Corporation Template-based creation and archival of file systems
US7181017B1 (en) 2001-03-23 2007-02-20 David Felsher System and method for secure three-party communications
US6978451B2 (en) * 2001-05-31 2005-12-20 Esmertec Ag Method for fast compilation of preverified JAVA bytecode to high quality native machine code
DE10131395B4 (de) * 2001-06-28 2006-08-17 Daimlerchrysler Ag Verfahren zum Übertragen von Software- Modulen
US7237121B2 (en) * 2001-09-17 2007-06-26 Texas Instruments Incorporated Secure bootloader for securing digital devices
GB0121064D0 (en) 2001-08-31 2001-10-24 Transitive Technologies Ltd Obtaining translation of generic code representation
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
US20030050981A1 (en) * 2001-09-13 2003-03-13 International Business Machines Corporation Method, apparatus, and program to forward and verify multiple digital signatures in electronic mail
US7143313B2 (en) 2001-11-09 2006-11-28 Sun Microsystems, Inc. Support interface module bug submitter
US7266731B2 (en) 2001-11-13 2007-09-04 Sun Microsystems, Inc. Method and apparatus for managing remote software code update
US7146500B2 (en) * 2001-11-14 2006-12-05 Compass Technology Management, Inc. System for obtaining signatures on a single authoritative copy of an electronic record
US7496757B2 (en) * 2002-01-14 2009-02-24 International Business Machines Corporation Software verification system, method and computer program element
US7240213B1 (en) * 2002-03-15 2007-07-03 Waters Edge Consulting, Llc. System trustworthiness tool and methodology
US20030188180A1 (en) * 2002-03-28 2003-10-02 Overney Gregor T. Secure file verification station for ensuring data integrity
US20070118899A1 (en) * 2002-05-17 2007-05-24 Satyam Computer Services Limited Of Mayfair Centre System and method for automated safe reprogramming of software radios
US20030216927A1 (en) * 2002-05-17 2003-11-20 V. Sridhar System and method for automated safe reprogramming of software radios
EP1546892B1 (de) * 2002-09-04 2017-03-29 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Schutz von mobilcode vor böswilligen hosts querverweise auf verwandte anmeldungen
US9818136B1 (en) 2003-02-05 2017-11-14 Steven M. Hoffberg System and method for determining contingent relevance
US6965968B1 (en) 2003-02-27 2005-11-15 Finjan Software Ltd. Policy-based caching
US10275723B2 (en) * 2005-09-14 2019-04-30 Oracle International Corporation Policy enforcement via attestations
US10063523B2 (en) * 2005-09-14 2018-08-28 Oracle International Corporation Crafted identities
US9781154B1 (en) 2003-04-01 2017-10-03 Oracle International Corporation Systems and methods for supporting information security and sub-system operational protocol conformance
US8468330B1 (en) 2003-06-30 2013-06-18 Oracle International Corporation Methods, systems, and data structures for loading and authenticating a module
GB0318197D0 (en) * 2003-08-02 2003-09-03 Koninkl Philips Electronics Nv Copy-protecting applications in a digital broadcasting system
GB0318198D0 (en) * 2003-08-02 2003-09-03 Koninkl Philips Electronics Nv Copy-protected application for digital broadcasting system
US7263690B1 (en) * 2003-11-14 2007-08-28 Sun Microsystems, Inc. Mechanism for safe byte code in a tracing framework
US7516331B2 (en) * 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same
EP1538509A1 (de) * 2003-12-04 2005-06-08 Axalto S.A. Methode zum Absichern einer Programmausführung gegen Strahlungsangriffe
US7287243B2 (en) * 2004-01-06 2007-10-23 Hewlett-Packard Development Company, L.P. Code verification system and method
US8031865B2 (en) * 2004-01-08 2011-10-04 Encryption Solutions, Inc. Multiple level security system and method for encrypting data within documents
US7752453B2 (en) 2004-01-08 2010-07-06 Encryption Solutions, Inc. Method of encrypting and transmitting data and system for transmitting encrypted data
US7526643B2 (en) * 2004-01-08 2009-04-28 Encryption Solutions, Inc. System for transmitting encrypted data
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7500108B2 (en) 2004-03-01 2009-03-03 Microsoft Corporation Metered execution of code
US7647581B2 (en) * 2004-06-30 2010-01-12 International Business Machines Corporation Evaluating java objects across different virtual machine vendors
US7539975B2 (en) * 2004-06-30 2009-05-26 International Business Machines Corporation Method, system and product for determining standard Java objects
US7493596B2 (en) * 2004-06-30 2009-02-17 International Business Machines Corporation Method, system and program product for determining java software code plagiarism and infringement
US7590589B2 (en) 2004-09-10 2009-09-15 Hoffberg Steven M Game theoretic prioritization scheme for mobile ad hoc networks permitting hierarchal deference
US8312431B1 (en) * 2004-09-17 2012-11-13 Oracle America, Inc. System and computer readable medium for verifying access to signed ELF objects
CN101065716A (zh) 2004-11-22 2007-10-31 诺基亚公司 用于验证电子设备的平台软件的完整性的方法和设备
JP4727278B2 (ja) * 2005-04-05 2011-07-20 株式会社エヌ・ティ・ティ・ドコモ アプリケーションプログラム検証システム、アプリケーションプログラム検証方法およびコンピュータプログラム
US8375369B2 (en) * 2005-04-26 2013-02-12 Apple Inc. Run-time code injection to perform checks
US8838974B2 (en) * 2005-07-15 2014-09-16 The Mathworks, Inc. System and method for verifying the integrity of read-only components in deployed mixed-mode applications
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
JP4537940B2 (ja) * 2005-11-21 2010-09-08 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、及びプログラム実行制御方法
US8250559B2 (en) * 2006-04-12 2012-08-21 Oracle America, Inc. Supporting per-program classpaths with class sharing in a multi-tasking virtual machine
KR100728517B1 (ko) * 2006-12-28 2007-06-15 메크로비젼 코오포레이션 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법
CN101226569A (zh) * 2007-01-19 2008-07-23 国际商业机器公司 在虚拟机中验证代码模块的方法及装置
US9122864B2 (en) * 2008-08-05 2015-09-01 International Business Machines Corporation Method and apparatus for transitive program verification
US8301903B2 (en) * 2009-02-27 2012-10-30 Research In Motion Limited Low-level code signing mechanism
US9117071B2 (en) 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
US8677329B2 (en) * 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
CN102598017B (zh) * 2009-11-13 2016-03-09 爱迪德技术有限公司 提高Java字节码的防窜改能力的系统和方法
US8904189B1 (en) 2010-07-15 2014-12-02 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
CA2852916A1 (en) * 2011-10-17 2013-04-25 Intertrust Technologies Corporation Systems and methods for protecting and governing genomic and other information
US9015680B1 (en) * 2012-02-24 2015-04-21 Google Inc. Differential analysis of translation of software for the detection of flaws
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US10001978B2 (en) * 2015-11-11 2018-06-19 Oracle International Corporation Type inference optimization
KR101691600B1 (ko) * 2016-04-28 2017-01-02 지티원 주식회사 공통 구조 변환 기반 프로그램 분석 방법 및 장치
CN112866412B (zh) * 2020-08-31 2023-06-30 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
US11809839B2 (en) 2022-01-18 2023-11-07 Robert Lyden Computer language and code for application development and electronic and optical communication

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5224160A (en) * 1987-02-23 1993-06-29 Siemens Nixdorf Informationssysteme Ag Process for securing and for checking the integrity of the secured programs
US4868877A (en) * 1988-02-12 1989-09-19 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
GB8901932D0 (en) * 1989-01-28 1989-03-15 Int Computers Ltd Data processing system
US4926476A (en) * 1989-02-03 1990-05-15 Motorola, Inc. Method and apparatus for secure execution of untrusted software
US5280613A (en) * 1990-06-25 1994-01-18 Hewlett-Packard Company ANDF installer using the HPcode-Plus compiler intermediate language
US5504814A (en) * 1991-07-10 1996-04-02 Hughes Aircraft Company Efficient security kernel for the 80960 extended architecture
US5301231A (en) * 1992-02-12 1994-04-05 International Business Machines Corporation User defined function facility
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
FR2703800B1 (fr) * 1993-04-06 1995-05-24 Bull Cp8 Procédé de signature d'un fichier informatique, et dispositif pour la mise en Óoeuvre.
US5475753A (en) * 1993-11-12 1995-12-12 Matsushita Electric Corporation Of America Apparatus and method for certifying the delivery of information
US5559884A (en) * 1994-06-30 1996-09-24 Microsoft Corporation Method and system for generating and auditing a signature for a computer program
US5692047A (en) * 1995-12-08 1997-11-25 Sun Microsystems, Inc. System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources

Also Published As

Publication number Publication date
CN1156286A (zh) 1997-08-06
US5692047A (en) 1997-11-25
JPH1011281A (ja) 1998-01-16
KR100433319B1 (ko) 2004-08-09
HK1000846A1 (en) 2003-04-11
US6070239A (en) 2000-05-30
TW355768B (en) 1999-04-11
CN1097771C (zh) 2003-01-01
EP0778520A2 (de) 1997-06-11
CA2190556A1 (en) 1997-06-09
DE69634684D1 (de) 2005-06-09
EP0778520B1 (de) 2005-05-04
AU7185696A (en) 1997-06-12
KR970049730A (ko) 1997-07-29
EP0778520A3 (de) 1999-03-31
AU717615B2 (en) 2000-03-30
SG75108A1 (en) 2000-09-19
JP4112033B2 (ja) 2008-07-02

Similar Documents

Publication Publication Date Title
DE69634684T2 (de) Vorrichtung und Verfahren zur Ausführung nachprüfbarer Programme mit Möglichkeit zur Nutzung von nicht-nachprüfbaren Programmen aus vertrauten Quellen
DE60115072T2 (de) System und verfahren zum unterschreiben eines software-kodes
DE69714752C5 (de) Verwendung einer hohen programmiersprache in einem mikrokontroller
DE69731714T2 (de) Dynamische Dienstklassen für eine internationale kryptographische Struktur
DE69815599T2 (de) Verfahren und Vorrichtung zum Schutz von Anwendungsdaten in sicheren Speicherbereichen
DE69736697T2 (de) Verfahren und Gerät zur Steuerung von Zugriff auf Systembetriebsmittel
DE69727198T2 (de) Durchführen digitaler Unterschriften für Datenströme und Archive
EP0778522B1 (de) Vorrichtung und Verfahren zur Erzeugung vertrauter, architekturspezifischer, kompilierter Versionen von architekturneutralen Programmen
DE60132833T2 (de) Computersystemschutz
DE102005040073B4 (de) Computersicherheitssystem
DE60200323T2 (de) Verfahren zum Schutz der Integrität von Programmen
DE102008021567B4 (de) Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
DE102018115489A1 (de) Krypto-erzwungene rechte für isolation
DE112011103164T5 (de) Datenverteilungsvorrichtung, Datenverteilungssystem, Client-Vorrichtung, Datenverteilungsverfahren, Datenempfangsverfahren, Programm und Datenträger,
DE102007012490A1 (de) Optimierte Integritätsverifikationsprozeduren
DE602004000106T2 (de) System zur Verbindung geheimer Daten zu einem Computer System mit Toleranz für Hardwareänderungen
DE60221861T2 (de) Server mit dateiverifikation
WO2022008201A1 (de) Verfahren zur erweiterten validierung eines containerabbilds
DE69729440T2 (de) Prozessorssystem
WO2021069621A1 (de) Verfahren zum sicheren ausführen eines workflows in einem computersystem
EP3497606B1 (de) Individuelles verschlüsseln von steuerbefehlen
DE102013210837B4 (de) Startanwendung kryptographischer Schlüsselspeicher
López et al. Access control infrastructure for digital objects
EP4083831A1 (de) Digitales zertifikat
DE60021905T2 (de) Erkennung von verdächtigen software-objekten und unterschriften nach einer misslungenen authentifizierung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition