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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/007—Encryption, 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 Computernetzwerk100 mit vielen Client-Computern102 , einem Servercomputer104 und einer vertrauenswürdigen Schlüsselablage106 gezeigt. Die Client-Computer102 sind untereinander und mit dem Server-Computer104 und der Vertrauensschlüsselablage106 über eine Netzkommunikationsverbindung108 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 CPU110 , eine Benutzerschnittstelle112 , einen Speicher114 und eine Netzwerkkommunikationsschnittstelle116 . Die Netzwerkkommunikationsschnittstelle ermöglicht den Client-Computern, miteinander, mit dem Server-Computer104 und mit der vertrauenswürdigen Schlüsselablage108 über die Netzwerkkommunikationsverbindung106 zu kommunizieren. - Der Speicher
114 jedes Client-Computers102 speichert ein Betriebssystem118 , einen Netzwerkkommunikationsmanager120 , eine ANProgramm-(Architekturneutrales-Programm)-Ausführungseinrichtung122 , eine ASProgramm-(Architekturspezifisches-Programm)-Ausführungseinrichtung124 , sowie eine ANProgramm-Integritätsprüfeinrichtung126 , eine ANProgramm-Compilierungsvorbereitungseinrichtung128 , einen Signaturgenerator130 , eine Signaturprüfeinrichtung132 , eine Compilierungsinformations-(Complnfo)-Prüfeinrichtung134 , eine Objektklassenladeeinrichtung136 , einen Benutzeradressraum138 , eine Ablage für vertrauenswürdige Objektklassen140 , eine Ablage für nichtvertrauenswürdige Objektklassen142 und Listen144 von bekannten, vertrauenswürdigen Compilierungsparteien und vertrauenswürdigen Compilern. Das Betriebssystem läuft auf der CPU110 und kontrolliert und koordiniert den Lauf der Programme120 –136 auf der CPU in Reaktion auf Befehle, die von einem Benutzer mittels der Benutzerschnittstelle112 erteilt werden. - Die ANProgramm-Ausführungseinrichtung
122 jedes Client-Computers102 führt ANProgramme in den Objektklassen aus, die in den Ablagen140 und142 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üfeinrichtung126 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üfeinrichtung124 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ührungseinrichtung122 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üfeinrichtung126 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-Computer104 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ührungseinrichtung124 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ührungseinrichtungen124 anderer Client-Computer verteilt und von diesem ausgeführt werden sollen. - Vorbereitung eines architekturneutralen Programms für die Compilierung
- Wenn, wie in den
1 und2 gezeigt ist, eine Ursprungspartei (OrigParty) wünscht, ein vom Server-Computer104 compiliertes ANProgramm200 zu haben, gibt die Ursprungspartei einen Befehl mittels der Benutzerschnittstelle112 aus, um die ANProgramm-Compilierungsvorbereitungseinrichtung128 aufzurufen, und weist diese an, das ANProgramm für die Compilierung vorzubereiten. Das ANProgramm kann sich in einer Objektklasse befinden, die in einer der Ablagen140 oder142 für vertrauenswürdige oder nichtvertrauenswürdige Objektklasse enthalten ist. Tabelle 1 enthält eine Pseudocodedarstellung der Prozedur, die von der ANProgramm-Compilierungsvorbereitungseinrichtung128 verwendet wird, um das ANProgramm für die Compilierung durch den Server-Computer104 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 und2 und in Tabelle 1 gezeigt ist, ruft eine ANProgramm-Compilierungsvorbereitungseinrichtung128 zuerst die ANProgramm-Integritätsprüfeinrichtung126 auf und weist diese an, die Integrität des ANProgrammcodes202 des ANProgramms200 zu prüfen. Dies wird durchgeführt, um sicherzustellen, dass der ANProgrammcode die vordefinierten Integritätskriterien der ANSprache erfüllt, bevor er zum Server-Computer104 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üfeinrichtung126 ein Genehmigt-Ergebnis an die ANProgramm-Compilierungsvorbereitungseinrichtung128 . Die ANProgramm-Compilierungsvorbereitungseinrichtung ruft anschließend den Signaturgenerator130 auf und weist diesen an, die digitale Signatur der Ursprungspartei (DigitalSignaturOP)210 zu erzeugen, die überprüft werden kann, um sicherzustellen, dass das ANProgramm200 von der vertrauenswürdigen Ursprungspartei erzeugt worden ist. Der Signaturgenerator erzeugt die DigitalSignaturOP, indem er zuerst eine Nachrichtenkurzfassung (MDOP)212 des ANProgrammcodes202 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 Ursprungspartei216 im Klartext am Ende der verschlüsselten Elemente212 und214 an, um die DigitalSignaturOP zu bilden. Der Privatschlüssel der Ursprungspartei und die ID werden von der Ursprungspartei mit der Benutzerschnittstelle112 bereitgestellt. - Nachdem die DigitalSignaturOP
210 erzeugt worden ist, hängt die ANProgramm-Compilierungsvorbereitungseinrichtung128 diese an den ANProgrammcode202 an. Anschließend erzeugt die ANProgramm-Compilierungsvorbereitungseinrichtung eine Nachricht, dass das ANProgramm200 für die Compilierung durch den Server-Computer104 vorbereitet worden ist. - Die Ursprungspartei gibt anschließend mittels der Benutzerschnittstelle
112 einen Befehl an den Netzwerkkommunikationsmanager120 aus, das ANProgramm200 zum Server-Computer104 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 Ablage140 oder142 für vertrauenswürdige bzw. nichtvertrauenswürdige Objektklassen, in der es sich befindet, und liefert es an die Netzwerkkommunikationsschnittstelle116 . 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-Computer104 empfangen. Der Server-Computer enthält eine CPU150 , eine Benutzerschnittstelle152 , einen Speicher154 und eine Netzwerkkommunikationsschnittstelle156 . Die Netzwerkkommunikationsschnittstelle ermöglicht dem Server-Computer mit den Client-Computern102 und der Ablage106 für vertrauenswürdige Schlüssel über die Netzwerkkommunikationsverbindung108 zu kommunizieren. - Der Speicher
154 des Server-Computers104 speichert ein Betriebssystem158 , einen Netzwerkkommunikationsmanager160 , einen ANProgramm-Compiler162 , eine Signaturprüfeinrichtung164 , eine ANProgramm-Integritätsprüfeinrichtung166 , einen Signaturgenerator168 , eine ANProgramm-Ablage170 und eine ANProgramm-Ablage172 . Das Betriebssystem läuft auf der CPU150 und kontrolliert und koordiniert den Lauf der Programme160 –168 auf der CPU in Reaktion auf Befehle, die von einer Compilie rungspartei (CompParty) mittels der Benutzerschnittstelle152 erteilt werden. - Die Netzwerkkommunikationsschnittstelle
156 empfängt das ANProgramm200 und teilt dem Netzwerkkommunikationsmanager160 mit, dass dies geschehen ist. In Reaktion hierauf platziert der Netzwerkkommunikationsmanager das empfangene ANProgramm in der ANProgramm-Ablage170 . Wenn der Server104 als automatischer Compilerdienst eingerichtet ist, wird dies vom Netzwerkkommunikationsmanager160 automatisch durchgeführt. Ansonsten wird das ANProgramm vom Netzwerkkommunikationsmanager in die Ablage170 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-Compiler162 aufgerufen, um das ANProgramm200 zu compilieren. Tabelle 2 enthält eine Pseudocodedarstellung der Compilierungsprozedur, die vom ANProgramm-Compiler verwendet wird, um das ANProgramm zu compilieren. - Wie in den
1 –2 und Tabelle 2 gezeigt ist, ruft der ANProgramm-Compiler162 zuerst die Signaturprüfeinrichtung164 auf, um die DigitalSignaturOP210 im empfangenen ANProgramm200 zu prüfen, um somit zu bestätigen, dass die DigitalSignaturOP210 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-ID216 im empfangenen ANProgramm, um den öffentlichen Schlüssel der Ursprungspartei von der Ablage106 für vertrauenswürdige Schlüssel zu erhalten. Anschließend entschlüsselt die Signaturprüfeinrichtung die verschlüsselte MDOP212 und die HashFunktionOP-ID214 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 MDOP212 übereinstimmen sollte, durch Berechnen der entsprechenden HashFunktionOP für den ANProgrammcode202 des empfangenen ANProgramms200 . Die HashFunktionOP-ID214 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 DigitalSignaturOP210 zu prüfen. - Wenn die MDOP
212 und die TestMDOP nicht übereinstimmen, sendet die Signaturprüfeinrichtung162 ein Fehler-Ergebnis zum ANProgramm-Compiler162 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-Compiler162 zurück und der ANProgramm-Compiler ruft die ANProgramm-Integritätsprüfeinrichtung166 auf. Er weist die ANProgramm-Integritätsprüfeinrichtung an, die Integrität des ANProgrammcodes202 des empfangenen ANProgramms200 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 ANProgramms200 die vordefinierten Integritätskriterien erfüllt, sendet die ANProgramm-Integritätsprüfeinrichtung166 ein Genehmigt-Ergebnis zum ANProgramm-Compiler162 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 den1 –3 und Tabelle 2 gezeigt ist, platziert der Compiler den ANProgrammcode202 , die DigitalSignaturOP210 und den compilierten ANProgrammcode302 in einem ANProgramm300 , das in der ANProgramm-Ablage102 gespeichert wird. - Der ANProgramm-Compiler
162 ruft anschließend den Signaturgenerator168 auf und weist diesen an, die ANProgramm-Compilerdigitalsignatur (DigitalSignaturC)320 zu erzeugen, die überprüft werden kann, um sicherzustellen, dass das ANProgramm300 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-ID324 kann verwendet werden, um die Nachrichtenkurzfassung MDC322 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 Signaturgenerator168 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 ANProgramm300 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 MDCP314 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 Elemente314 und316 an, um die DigitalSignaturCP312 zu bilden. Der Privatschlüssel der Compilierungspartei und die ID werden von der Compilierungspartei mittels der Benutzerschnittstelle152 bereitgestellt. - Nachdem die DigitalSignaturC
320 und die DigitalSignaturCP312 erzeugt worden sind, hängt der ANProgramm-Compiler162 diese an den ASProgrammcode302 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 ASProgramm300 zu bilden, und bereit ist, zur Ursprungspartei gesendet zu werden. - Die Compilierungspartei verwendet anschließend den Netzwerkkommunikationsmanager
160 , um das ASProgramm300 zum Ursprungspartei-Client-Computer102 zu übermitteln. Der Netzwerkkommunikationsmanager bewerkstelligt dies durch Empfangen des ASProgramms von der ASProgramm-Ablage172 , in der es sich befindet, und stellt es der Netzwerkkommunikationsschnittstelle156 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 Kommunikationsschnittstelle116 des Ursprungspartei-Client-Computers empfangen und teilt dem Netzwerkkommunikationsmanager120 mit, dass dies geschehen ist. In Reaktion hierauf gibt die Ursprungspartei einen Befehl mittels der Benutzerschnittstelle252 aus, um den Netzwerkkommunikationsmanager anzuweisen, das empfangene ASProgramm von der Netzwerkkommunikationsschnittstelle zu holen, was den Netzwerkkommunikationsmanager veranlasst, das empfangene ASProgramm in der Ablage142 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 ASProgramm300 sowie andere ANProgramme und ASProgramme enthält. -
4 zeigt eine typische Objektklasse400 gemäß der vorliegenden Erfindung. Die Objektklasse kann ein oder mehrere ASProgramme402 und/oder ein oder mehrere ANProgramme404 sowie eine virtuelle Funktionstabelle410 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 Zeiger418 auf das ANProgramm. Jedes Objekt420 dieser Objektklasse enthält einen Objektkopf422 , der auf die Objektklasse400 zeigt. - Somit kann die Ursprungspartei ein Objekt
420 und eine Objektklasse400 mit dem ASProgramm300 erzeugen, das vom Server-Computer104 als eines der ASProgramme402 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 Benutzerschnittstelle112 aus, um den Netzwerkkommunikationsmanager anzuweisen, diese Elemente zu den Client-Computern102 der Ausführungsparteien zu senden. Der Netzwerkkommunikationsmanager bewerkstelligt dies durch Empfangen derselben von der Ablage142 für die nichtvertrauenswürdigen Objektklassen, in der diese angeordnet sind, und liefert diese an die Netzwerkkommunikationsschnittstelle116 mit geeigneten Sendebefehlen. Alternativ kann der Netzwerkkommunikationsmanager der Ursprungspartei auf eine Anforderung antworten, die von einer Ausführungspartei nach einer Kopie einer spezifizierten Objektklasse400 gestellt worden ist. - Ausführung archtitekturneutraler Programme und architekturspezifischer Programme in einer Objektklasse
- Die Netzwerkkommunikationsschnittstelle
156 des Client-Computers102 empfängt das gesendete Objekt und die Objektklasse und teilt dem Netzwerkkommunikationsmanager160 mit, dass dies geschehen ist. In Reaktion hierauf gibt die Ausführungspartei einen Befehl mittels der Benutzerschnittstelle112 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 Ablage142 für nicht vertrauenswürdige Objektklassen. - Die Ablage
142 für nicht vertrauenswürdige Objektklassen jedes Client-Computers102 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üfeinrichtung136 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 Ablage140 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 Ablage140 für vertrauenswürdige Objektklassen befinden, oder (2) sich in nichtvertrauenswürdigen Objektklassen in der Ablage142 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
1 –4 und in Tabelle 3 gezeigt ist, kann beim Client-Computer102 einer Ausführungspartei (z. B. der Ursprungspartei oder einer weiteren Partei) die ANProgramm-Ausführungseinrichtung124 ein ANProgramm ausführen, das versucht, ein Verfahren in einer spezifizierten Objektklasse aufzurufen. Der Verfahrensaufruf wird anfangs von der Objektklassenladeeinrichtung136 gehandhabt, die bestimmt, ob die Objektklasse bereits geladen worden ist. Wenn die Objektklasse bereits in den Benutzeradressraum138 der Ausführungspartei geladen worden ist, führt die ANProgramm-Ausführungseinrichtung122 das aufgerufene Verfahren aus, wenn das aufgerufene Verfahren ein ANProgramm ist, während die ASProgramm-Ausführungseinrichtung124 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 Objektklassenladeeinrichtung136 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 Ablage140 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ührungseinrichtung124 auf, um das aufgerufene Verfahren auszuführen. - Wenn jedoch die Objektklasse aus der Ablage
142 für nichtvertrauenswürdige Objektklassen geladen wurde, untersucht die Klassenladeeinrichtung136 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üfeinrichtung136 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 ANProgramms200 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üfeinrichtung132 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 (siehe1 ) 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ührungseinrichtung124 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 Ablage106 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 Klassenladeeinrichtung136 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üfeinrichtung132 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 ANProgramms200 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 Klassenladeeinrichtung136 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 ASProgramm300 gesendet hat. In diesem Fall kann die Klassenladeeinrichtung136 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üfeinrichtung126 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-Compilierungsvorbereitungseinrichtung128 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.
Claims (12)
- 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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.
- 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. - 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.
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)
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)
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 |
-
1995
- 1995-12-08 US US08/569,398 patent/US5692047A/en not_active Expired - Lifetime
-
1996
- 1996-11-18 CA CA002190556A patent/CA2190556A1/en not_active Abandoned
- 1996-11-20 AU AU71856/96A patent/AU717615B2/en not_active Expired
- 1996-11-27 DE DE69634684T patent/DE69634684T2/de not_active Expired - Lifetime
- 1996-11-27 EP EP96308582A patent/EP0778520B1/de not_active Expired - Lifetime
- 1996-12-05 CN CN96121876A patent/CN1097771C/zh not_active Expired - Fee Related
- 1996-12-06 KR KR1019960062293A patent/KR100433319B1/ko not_active IP Right Cessation
- 1996-12-06 SG SG1996011559A patent/SG75108A1/en unknown
- 1996-12-09 JP JP32889796A patent/JP4112033B2/ja not_active Expired - Lifetime
- 1996-12-20 TW TW085115763A patent/TW355768B/zh active
-
1997
- 1997-11-17 US US08/971,325 patent/US6070239A/en not_active Expired - Lifetime
- 1997-12-17 HK HK97102468A patent/HK1000846A1/xx not_active IP Right Cessation
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 |