-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich auf die Zugriffssteuerung in
einem Computersystem. Insbesondere bezieht sich die vorliegende
Erfindung auf eine Einrichtung und ein Verfahren zur Identifizierung des
Ursprungs eines ausführbaren
Abbildes [eines Prozesses im Speicher] und die Verwendung dieser Identifikation
zur Bestimmung der dem Ausführbaren gewährten Ebene
der Zugriffsrechte.
-
HINTERGRUND
DER ERFINDUNG
-
Sicherheitsverletzungen
in Computersystemen können
entweder als vorsätzlich
oder als unbeabsichtigt eingestuft werden. Zu den Arten eines vorsätzlichen
Zugriffs gehört
ein nicht autorisiertes Lesen von Daten, eine nicht autorisierte
Modifikation von Daten und eine nicht autorisierte Zerstörung von Daten.
Die meisten Betriebssysteme stellen für Prozesse Mittel zur Erzeugung
anderer Prozesse bereit. In einer derartigen Umgebung ist die Erzeugung
einer Situation möglich,
in der Betriebssystemressourcen und Anwenderdateien missbraucht
werden. Würmer
und Viren sind zwei übliche
Verfahren eines Missbrauchs. Der Schutz eines Computersystems hängt von
seiner Fähigkeit
zur Identifizierung des Ursprungs der auszuführenden Programme und zur Überprüfung ab,
ob diese Programme nicht in einer Art und Weise modifiziert wurden,
so dass sie dann eine Sicherheitsbedrohung für das System darstellen können. Das
US-Patent Nr. 5,412,718
beschreibt ein Verfahren, bei dem eine für ein gegebenes Speichermedium
einzigartige Signatur zur Ableitung eines Schlüssels zur Verschlüsselung
der Informationen auf dem Speichermedium verwendet wird.
-
Zusätzlich zur Überprüfung der
Echtheit des Ursprungs eines Programms gibt es auch eine dringende
Notwendigkeit sicherzustellen, dass die Dateien, Speichersegmente,
die CPU und anderen Ressourcen eines Computersystems nur durch die
Prozesse genutzt werden können,
die vom Betriebssystem eine ordnungsgemäße Berechtigung erhalten haben.
Es gibt für
die Bereitstellung dieses Schutzes verschiedene Gründe. Der
offensichtlichste ist die dringende Notwendigkeit eine bösartige,
absichtliche Verletzung einer Zugriffsbeschränkung zu verhindern. von mehr
allgemeiner Bedeutung ist die dringende Notwendigkeit zu gewährleisten,
dass jede in einem System aktive Programmkomponente Systemressourcen
auf eine Art und Weise verwendet, die mit den festgelegten Richtlinien
für die
Verwendungen dieser Ressourcen übereinstimmt.
Durch eine Erfassung latenter Fehler an den Schnittstellen zwischen
den Komponententeilsystemen kann ein Schutz die Zuverlässigkeit
verbessern. Eine frühzeitige
Erfassung von Schnittstellenfehlern kann eine Kontaminierung eines
gesunden Teilsystems durch ein anderes, schlecht funktionierendes
Teilsystem verhindern.
-
Ein
Prozess wirkt üblicherweise
innerhalb eines Schutzbereichs. Der Bereich spezifiziert die Ressourcen,
auf die der Prozess zugreifen kann. Jeder Bereich definiert eine
Menge von Objekten und die an jedem Objekt aufrufbaren Operationsarten.
Die Fähigkeit
zur Ausführung
einer Operation an einem Objekt ist ein Zugriffsrecht. Ein Bereich
ist eine Sammlung von Zugriffsrechten, von denen jedes üblicherweise
ein geordnetes Paar: <Objektname,
Menge der Rechte> ist.
Wenn zum Beispiel der Bereich D das Zugriffsrecht <Datei F, {lesen,
schreiben}> aufweist,
kann ein Prozess, der im Bereich D ausgeführt wird, sowohl Datei F lesen
als auch schreiben. Es sollte jedoch nicht die Durchführung irgendeiner
anderen Operation an diesem Objekt gestattet sein. Bereiche können disjunkt
sein oder sie können
Zugriffsrechte gemeinsam nutzen. Die Zuordnung zwischen einem Prozess
und einem Bereich kann auch entweder statisch oder dynamisch sein.
Folglich ist eine Beschränkung
der für
jeden Prozess zugänglichen Schutzbereiche
wichtig.
-
Was
folglich benötigt
wird, sind eine Einrichtung und ein Verfahren zur Bereitstellung
einer fälschungssicheren
Signatur eines ausführbaren
Abbildes, die verwendet werden kann zur Identifikation des Ursprungs
des ausführbaren
Abbildes, ob es irgendeine Modifikation am Ausführbaren gegeben hat und die
dem Ausführbaren
durch das Betriebssystem zu gewährenden
Ebene der Zugriffsrechte oder des Vertrauens.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Es
werden ein Verfahren und eine Vorrichtung zur Zugriffssteuerung
in einem Computersystem beschrieben. Ein Ausführungsbeispiel des Zugriffs-Controller
weist eine Speichereinheit auf. Die Speichereinheit speichert einen,
eine Signaturkomponente und ein verschlüsseltes ausführbares
Abbild aufweisenden Datenblock. Mit der Speichereinheit ist eine
Separierungseinheit gekoppelt. Die Separierungseinheit empfängt den
Datenblock und separiert die Signaturkomponente vom verschlüsselten
ausführbaren
Abbild. Mit der Separierungseinheit ist eine Entschlüsselungseinheit
gekoppelt. Die Entschlüsselungseinhieit
empfängt
das verschlüsselte
ausführbare
Abbild und entschlüsselt
das verschlüsselte ausführbare Abbild
in ein ausführbares
Programm. Dies kann durch einen Programmlauf eines Entschlüsselungsalgorithmus
erreicht werden, der die Signaturkomponente als einen Schlüssel zum
Entschlüsseln
des verschlüsselten
ausführbaren
Abbildes verwendet. Mit der Entschlüsselungseinheit ist eine Identifikationseinheit
gekoppelt. Die Identifikationseinheit empfängt das zu verwendende ausführbare Programm
und identifiziert einen für
eine Identifikationsmarkierung im ausführbaren Programm gekennzeichneten
Schlüssel
zur Berechnung eines kryptographischen schlüsselab hängigen Hash-Wertes des ausführbaren
Programms. Mit der Entschlüsselungseinheit
ist eine Signaturerzeugungseinheit gekoppelt. Die Signaturerzeugungseinheit
empfängt das
ausführbare
Programm und berechnet unter Verwendung eines durch die Identifikationseinheit
identifizierten, gespeicherten Schlüssels einen kryptographischen
schlüsselabhängigen Hash-Wert
für das ausführbare Programm.
Mit der Hash-Einheit ist eine Überprüfungseinheit
gekoppelt. Die Überprüfungseinheit
vergleicht zur Überprüfung des
Ursprungs des Datenblocks und einer nicht erfolgten Durchführung einer
Modifikation am Datenblock den schlüsselabhängigen Hash-Wert mit der Signaturkomponente.
Mit der Hash-Einheit ist eine Rechtezuweisungseinheit gekoppelt.
Die Rechtezuweisungseinheit empfängt
den zur Berechnung des schlüsselabhängigen Hash-Wertes
des ausführbaren
Programms verwendeten Schlüssel
und weist gemäß den dem Schlüssel zugeordneten
Rechten dem ausführbaren Programm
Rechte zu.
-
Ein
zweites Ausführungsbeispiel
der vorliegenden Erfindung offenbart ein Verfahren zur Zugriffssteuerung
in einem Computersystem. Zuerst wird ein, eine Signaturkomponente
und ein verschlüsseltes
ausführbares
Abbild aufweisender Datenblock empfangen. Nach dem Empfang des Datenblocks
wird die Signaturkomponente vom verschlüsselten ausführbaren
Abbild separiert. Als Nächstes wird
durch die Ausführung
eines die Signaturkomponente als Schlüssel verwendenden Entschlüsselungsalgorithmus
das ausführbare
Abbild entschlüsselt.
Es wird ein, einer Identifikationsmarkierung im ausführbaren
Programm entsprechender, zusammengesetzter Schlüssel identifiziert. Der zusammengesetzte
Schlüssel
wird zur Berechnung eines schlüsselabhängigen Hash-Wertes
des ausführbaren
Programms verwendet. Nach der Berechnung des schlüsselabhängigen Hash-Wertes
wird zur Überprüfung der
Quelle des Datenblocks der schlüsselabhängige Hash-Wert mit der Signaturkomponente
verglichen. Gemäß dem Schlüs sel vorab
zugewiesenen Rechten werden dem ausführbaren Programm Rechte zugewiesen.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird vollständiger anhand der nachfolgend
gegebenen, detaillierten Beschreibung und der beigefügten Zeichnungen
der verschiedenen, in der Erfindung enthaltenen Merkmale und Elemente
verstanden werden. Die Beschreibung und die Zeichnungen sind nicht
zur Begrenzung der Erfindung auf das spezielle Ausführungsbeispiel
gedacht. Sie werden zur Erklärung
und zum Verständnis
bereitgestellt.
-
1 veranschaulicht
ein Ausführungsbeispiel
eines in einem Computersystem ausgeführten Zugriffs-Controllers.
-
2 veranschaulicht
eine Blockdarstellung eines Ausführungsbeispiels
einer Codierungseinheit der vorliegenden Erfindung.
-
3 veranschaulicht,
wie eine Nachricht unter Verwendung einer Codierungseinheit der
vorliegenden Erfindung codiert wird.
-
4 veranschaulicht
eine Blockdarstellung eines zweiten Ausführungsbeispiels eines Zugriffs-Controllers
der vorliegenden Erfindung.
-
5 veranschaulicht
eine Blockdarstellung eines dritten Ausführungsbeispiels des Videoverarbeitungssystems
der vorliegenden Erfindung.
-
6 ist
ein Ablaufdiagramm, das ein Verfahren zur Codierung veranschaulicht.
-
7 ist
ein Ablaufdiagramm, das ein Verfahren zur Zugriffssteuerung eines
Computersystems veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG
-
Es
wird eine neue Zugriffs-Controller-Einheit beschrieben. In der folgenden
detaillierten Beschreibung werden zahlreiche spezielle Details zur
Bereitstellung eines vollständigen
Verständnisses
der vorliegenden Erfindung dargelegt. Es wird jedoch von den Fachleuten
verstanden werden, dass die vorliegende Erfindung ohne diese spezifischen
Details umgesetzt werden kann. In anderen Fällen wurden bekannte Verfahren,
Vorgehensweisen, Komponenten und Schaltungen nicht detailliert beschrieben,
um die vorliegende Erfindung nicht zu verdecken.
-
Einige
Teile der nachfolgenden detaillierten Beschreibungen werden in Form
von Algorithmen und symbolischen Darstellungen von Operationen an Datenbits
innerhalb eines Computerspeichers dargestellt. Diese algorithmischen
Beschreibungen und Darstellungen sind die von den Fachleuten der
Datenverarbeitung verwendeten Mittel, um anderen Fachleuten die
Substanz ihrer Arbeit am wirksamsten zu vermitteln. Ein Algorithmus
wird als eine in sich geschlossene Folge von Schritten verstanden,
die zu einem gewünschten
Ergebnis führt.
Die Schritte sind diejenigen, die physikalische Manipulationen physikalischer
Größen erfordern. Üblicherweise,
aber nicht notwendigerweise, sind diese Größen elektrische oder magnetische
Signale, die geeignet sind, gespeichert, übertragen, kombiniert, verglichen
und anderweitig manipuliert zu werden. Es hat sich zeitweise als
zweckmäßig erwiesen,
primär
aus Gründen der
allgemeinen Verwendung, diese Signale als Bits, Werte, Elemente,
Symbole, Zeichen, Ausdrücke, Zahlen
oder dergleichen zu bezeichnen. Es sollte jedoch berücksichtigt
werden, dass all diese und ähnliche
Begriffe den entsprechenden physikalischen Größen zuzuordnen sind und lediglich
für diese
Größen verwendete,
geeignete Kennzeichnungen sind. Wenn es nicht speziell anders angegeben
ist, wie sich aus der folgenden Erörterung ergibt, ist in der vorliegenden
Erfindung immer zu verstehen, dass sich Erörterungen, die Begriffe wie
zum Beispiel „Verarbeiten" oder „Berechnen" oder „Rechnen" oder „Bestimmen" oder „Anzeigen" oder dergleichen
verwenden, sich auf die Aktion und die Prozesse eines Computersystems
oder einer ähnlichen
elektronischen Recheneinrichtung beziehen, das bzw. die Daten, die
als physikalische (elektronische) Größen in den Registern und Speichern
eines Computersystems dargestellt sind, in andere Daten manipulieren und
umwandeln, die in ähnlicher
Weise als physikalische Größen in den
Computersystemspeichern oder Registern oder anderen derartigen Informationsspeicher-, Übertragungs-
oder Anzeigeeinrichtungen dargestellt werden.
-
1 veranschaulicht
in Blockdarstellungsform ein Computersystem eines Ausführungsbeispiels
der vorliegenden Erfindung. Das Computersystem weist einen Bus 100,
eine Tastaturschnittstelle 101, einen externen Speicher 102,
eine Massenspeichereinrichtung 103, einen Prozessor 104 und einen
Anzeigeeinrichtungs-Controller 105 auf. Der Bus 100 ist
mit dem Anzeigeeinrichtungs-Controller 105, der Tastaturschnittstelle
101, dem Mikroprozessor 104, dem Speicher 102 und
der Massenspeichereinrichtung 103 gekoppelt. Der Anzeigeeinrichtungs-Controller 105 kann
mit einer Anzeigeeinrichtung gekoppelt werden. Die Tastaturschnittstelle 101 kann
mit einer Tastatur gekoppelt werden.
-
Der
Bus 100 kann ein einzelner Bus oder eine Kombination mehrerer
Busse sein. Beispielsweise kann der Bus 100 einen Industry-Standard-Architectural[Industriestandard-Architektur]
(ISA) – Bus,
einen Extended-Industry-Standard-Architecture[Erweiterte-Industriestandard-Architektur]
(EISA) – Bus,
einen Systembus, einen X-Bus, einen PS/2-Bus, einen Peripheral-Components-Interconnect[Peripheriekomponentenverbindung]
(PCI) – Bus,
einen Personal-Computer-Memory-Card-International-Association [Standard
für scheckkartengroße PC-Erweiterungen]
(PCMCIA) – Bus
oder andere Busse aufweisen. Der Bus 100 kann auch eine
Kombination irgendwelcher dieser Busse aufweisen. Der Bus 100 stellt
Kommunikationsverbindungen zwischen den Komponenten im Computersystem
bereit. Die Tastaturschnitt stelle 101 kann ein Tastatur-Controller
oder eine andere Tastaturschnittstelle sein. Die Tastaturschnittstelle 101 kann
eine fest zugeordnete Einrichtung sein oder kann sich in einer anderen
Einrichtung befinden, wie zum Beispiel einem Bus-Controller oder einem anderen Controller.
Die Tastaturschnittstelle 101 gestattet die Koppelung einer
Tastatur mit dem Computersystem und überträgt Signale von einer Tastatur
zum Computersystem. Der externe Speicher 102 kann einen
dynamischen Speicher mit wahlfreiem Zugriff (DRAM), einen statischen Speicher
mit wahlfreiem Zugriff (SRAM) oder andere Speichereinrichtungen
aufweisen. Der externe Speicher 102 speichert zur Verwendung
durch den Prozessor 104 Informationen und Daten von einer
Massenspeichereinrichtung 103 und einem Prozessor 104.
Die Massenspeichereinrichtung 103 kann ein Festplattenlaufwerk,
ein Diskettenlaufwerk, eine CD-ROM-Einrichtung, eine Flash-Speichereinrichtung
oder eine andere Massenspeichereinrichtung sein. Die Massenspeichereinrichtung 103 stellt
dem externen Speicher 102 Informationen und Daten bereit.
-
Der
Prozessor 104 verarbeitet Informationen und Daten vom externen
Speicher 102 und speichert Informationen und Daten in den
externen Speicher 102. Der Prozessor 104 empfängt auch
Signale vom Tastatur-Controller 101 und überträgt Informationen und
Daten zum Anzeige-Controller 105 zur Anzeige auf einer
Anzeigeeinrichtung. Der Prozessor 104 überträgt auch Videobilder zum Anzeige-Controller zur
Anzeige auf einer Anzeigeeinrichtung. Der Prozessor 104 kann
ein Complex-Instruction-Set-Computing[Verarbeitung
mit komplexem Befehlssatz] (CISC) – Mikroprozessor, ein Reduced-Instruction-Set-Computing[Verarbeitung
mit reduziertem Befehlssatz] (RISC) -Mikroprozessor, ein Very-Long-Instruction-Word[sehr
langes Befehlswort] (VLIW) – Mikroprozessor
oder eine andere Prozessoreinrichtung sein. Der Anzeigeeinrichtungs-Controller 105 gestattet
die Kopplung einer Anzeigeeinrichtung mit dem Computersystem und
wirkt als eine Schnittstelle zwischen der Anzeigeeinrichtung und
dem Computersystem. Der Anzeigeeinrichtungs-Controller 105 kann
eine Monochrome-Display-Adapter[Monochrome-Anzeige-Adapter] (MDA) – Karte,
eine Color-Graphics-Adapter[Farbgrafikadapter] (CGA) – Karte,
eine Enhanced-Graphics-Adapter[Verbesserte-Grafik-Adapter] (EGA) – Karte,
eine Multi-Color-Graphics-Array(Mehrfarbengrafik-Array]
(MCGA) – Karte,
eine Video-Graphics-Array[Videografik-Array]
(VGA) – Karte,
eine Extended-Graphics-Array[Erweitertes Grafik-Array] (XGA) – Karte
oder ein anderer Anzeigeeinrichtungs-Controller sein. Die Anzeigeeinrichtung
kann ein Fernsehapparat, ein Computerbildschirm, ein Flachbildschirm
oder eine andere Anzeigeeinrichtung sein. Die Anzeigeeinrichtung empfängt über den
Anzeigeeinrichtungs-Controller 105 Informationen und Daten
von Prozessor 104 und zeigt dem Anwender des Computersystems
die Informationen und Daten an.
-
Das
Computersystem weist auch eine Zugriffs-Controller-Einheit 106 auf.
Die Zugriffs-Controller-Einheit 106 ist mit dem Bus 100 gekoppelt.
In der Zugriffs-Controller-Einheit 106 ist ein Satz von Schlüsseln gespeichert,
denen Zugriffsrechte im Computersystem zugeordnet sind. Jeder Schlüssel definiert
den Bereich, in dem ein Programm arbeitet. Die Schlüssel definieren
auch einen oder mehrere zusammengesetzte Schlüssel, die in einer kryptographischen
Hash-Funktion zur Erzeugung einer Programmsignatur als Parameter
verwendet werden. Die Programmsignatur wird ferner als ein Verschlüsselungsschlüssel zum
Verschlüsseln
des ausführbaren
Programms verwendet.
-
Die
Zugriffs-Controller-Einheit 106 empfängt einen vom Prozessor 104 auszuführenden
Prozess von der Massenspeichereinrichtung 103 oder einer anderen,
mit dem Bus 100 gekoppelten I/O-Einrichtung. Der Prozess
weist ein verschlüsseltes
ausführbares
Abbild und eine Signaturkomponente auf. Bevor das Computersystem
ein Programm ausführt, überprüft die Zugriffs- Controller-Einheit 106,
dass die Signatur des Programms von einem bekannten zusammengesetzten
Schlüssel
legal erstellt wurde. Durch die Prüfung der Signaturkomponente
des Prozesses identifiziert die Zugriffs-Controller-Einheit 106 den
Ursprung des Prozesses, überprüft, dass
der Prozess nicht in einer das Computersystem bedrohenden Art und
Weise modifiziert wurde, und bestimmt die Zugriffsebene, die das
Betriebssystem dem Prozess gewähren
soll. Die Zugriffs-Controller-Einheit 106 gestattet dann
dem ausführbaren
Programm die Ausführung
mit den Rechten, die den beim Ableiten des zusammengesetzten Schlüssels verwendeten
Schlüsseln
zugewiesen wurden.
-
2 veranschaulicht
eine Blockdarstellung eines Ausführungsbeispiels
einer Datei-Codierungseinheit der vorliegenden Erfindung. Die Datei-Codierungseinheit 210 weist
einen Signaturgenerator 221 und eine Verschlüsselungseinheit 230 auf.
Der Signaturgenerator 221 bewirkt die Erzeugung einer Signatur
eines durch den Prozessor 104 auszuführenden, ausführbaren
Programms. Die Verschlüsselungseinheit 230 verschlüsselt unter
Verwendung der Signatur als ein Schlüssel die das ausführbare Programm
enthaltende Datei. Der Signaturgenerator 221 führt an dem
Klartext eines ausführbaren
Programms eine kryptographische schlüsselabhängige Hash-Funktion aus. Dies
erzeugt einen Geheimtext. Der Signaturgenerator 221 verwendet
Schlüssel,
die zusammengesetzte Schlüssel
von in der Zugriffs-Controller-Einheit 106 gespeicherten
Schlüsseln
sind. Jedem der in der kryptographischen Hash-Funktion verwendeten,
zusammengesetzten Schlüssel
ist ein Satz von Zugriffsrechten zugeordnet. Diese Rechte werden
dem ausführbaren
Programm vor der Ausführung
zugewiesen.
-
Der
Signaturgenerator 221 weist eine Berechnungseinheit 222 und
eine Verschlüsselungseinheit 223 auf.
Der Signaturgenerator 221 kann die Berechnungseinheit 222 und
die Verschlüsselungseinheit 223 zur
Durchführung
irgendeiner Anzahl von kryptographischen schlüsselabhängigen Hash-Funktionen oder
Verschlüsselungsalgorithmen
an dem Klartext des ausführbaren
Programms verwenden. Die Schlüssel
können
entweder private symmetrische Schlüssel oder öffentliche asymmetrische Schlüssel sein.
Der Unterschied ist der Schutzumfang, der von der Schlüsselkopie
des Betriebssystems gefordert wird. Der Signaturgenerator 221 kann zur
Erzeugung eines kryptographischen schlüsselabhängigen Hash-Wertes für das ausführbare Programm
derartige konventionelle Algorithmen wie Lucifer, Madryga, NewDES,
FEAL, REDOC, LOKI, Khufu, Khafre oder IDEA verwenden. In einem Ausführungsbeispiel
der vorliegenden Erfindung verwenden die Berechnungseinheit 222 und
die Verschlüsselungseinheit 223 zur
Erzeugung eines kryptographischen schlüsselabhängigen Hash-Wertes für das ausführbare Programm
die Data-Encryption-Standard[Datenverschlüsselungs-Standard]
(DES) – Cipher-Block-Chaining[Chiffren-Blockverkettung] (CBC).
-
3 veranschaulicht
die zur Erzeugung eines schlüsselabhängigen Hash-Wertes
für das
ausführbare
Programm von der Berechnungseinheit 222 und der Verschlüsselungseinheit 223 unternommenen
Schritte bei Verwendung von CBC. Die Verkettung verwendet einen
Rückkopplungsmechanismus. Die
Ergebnisse der Verschlüsselung
vorheriger Blöcke
werden in die Verschlüsselung
des aktuellen Blocks zurückgeführt. Mit
anderen Worten, der vorherige Block wird zur Modifikation der Verschlüsselung
des nächsten
Blocks verwendet. Jeder Schlüsseltext-
bzw. Geheimtextblock ist sowohl von dem ihn erzeugenden Klartextblock
als auch den vorhergehenden Klartextblöcken abhängig. In CBC wird der Klartext
vor der Verschlüsselung
mit dem vorhergehenden Geheimtextblock XOR[Exklusiv-Oder] – verknüpft.
-
In
diesem Beispiel empfängt
die Codierungseinheit 210 eine, ein ausführbares
Programm mit einer Größe von 24
Bytes enthaltende Datei. Der Signaturgenerator 221 trennt
die 24-Byte-Datei
in drei 8-Byte-Abschnitte auf. Die ersten 8 Bytes des Klartextes
werden in Block 301 als P1 dargestellt. P1 wird mit einem
in der Berechnungseinheit 222 gespeicherten Initiierungsvektor
(IV) XOR-verknüpft.
Dies ergibt ein erstes Produkt. Der Initiierungsvektor ist eine
Funktion eines ersten zusammengesetzten Schlüssels, dem ein Satz von dem
ausführbaren
Programm zuzuweisenden Zugriffsrechten zugeordnet ist. Nachdem P1
mit IV XOR-verknüpft
ist, führt
die Verschlüsselungseinheit 223 unter
Verwendung eines zweiten zusammengesetzten Schlüssels einen schlüsselabhängigen Verschlüsselungsalgorithmus an
dem ersten Produkt durch. Dies ergibt ein verschlüsseltes
erstes Produkt C1. Der schlüsselabhängige Verschlüsselungsalgorithmus
kann einer von einer Auswahl von verschiedenen schlüsselabhängigen Verschlüsselungsalgorithmen
sein, die irgendeinen der vorher aufgelisteten schlüsselabhängigen Verschlüsselungsalgorithmen
umfasst. Die Berechnungseinheit 222 verknüpft das
verschlüsselte
erste Produkt mit dem als P2 dargestellten zweiten 8-Byte-Abschnitt
XOR, um ein zweites 8-Byte-Produkt als Resultat zu haben. Die Verschlüsselungseinheit 223 führt unter
Verwendung des zweiten zusammengesetzten Schlüssels einen schlüsselabhängigen Verschlüsselungsalgorithmus
an dem zweiten Produkt durch. Dies ergibt ein verschlüsseltes
zweites Produkt C2. Die Berechnungseinheit 222 verknüpft das
verschlüsselte
zweite Produkt mit dem dritten 8-Byte-Abschnitt
XOR, um ein drittes 8-Byte-Produkt als Resultat zu haben. Die Verschlüsselungseinheit 223 führt unter
Verwendung des zweiten zusammengesetzten Schlüssels einen schlüsselabhängigen Verschlüsselungsalgorithmus
an dem dritten Produkt durch. Dies ergibt ein drittes verschlüsseltes
Produkt, C3, das als eine Signatur des ausführbaren
Programms verwendet wird.
-
Die
Signaturerzeugungseinheit 221 erzeugt eine Signatur des
ausführbaren
Programms, die eine Funktion aller Zeichen in der Datei ist. Wenn
das ausführbare
Programm modifiziert wird, würde
man auf diese Weise durch eine Neuberechnung des kryptographischen
schlüsselabhängigen Hash-Wertes
und den Vergleich des neuberechneten Wertes mit der ursprünglichen
Signatur zur Erfassung der Modifikation im Stande sein.
-
Die
Verschlüsselungseinheit 230 bewirkt durch
die Durchführung
eines Verschlüsselungsalgorithmus
unter Verwendung der vom schlüsselabhängigen kryptographischen
Hash-Algorithmus erzeugten Signatur als Schlüssel ein Verschlüsseln des
ausführbaren
Programms. Dies ergibt ein verschlüsseltes ausführbares
Abbild. Die Verschlüsselung
des ausführbaren
Programms stellt eine zusätzliche Schutzebene
bereit, um einen nicht autorisierten Dritten am Lesen des ausführbaren
Programms zu hindern. von der Verschlüsselungseinheit 230 kann
irgendeine Auswahl von Verschlüsselungsalgorithmen verwendet
werden. Sowohl das verschlüsselte
ausführbare
Abbild als auch die Signatur werden als eine Datei zur Ausführung an
ein Computersystem gesendet.
-
4 veranschaulicht
eine Blockdarstellung eines zweiten Ausführungsbeispiels eines Zugriffs-Controllers
der vorliegenden Erfindung. Die Zugriffs-Steuerungs-Einheit 400 weist
eine Speichereinheit 410, eine Separierungseinheit 420,
eine Entschlüsselungseinheit 430,
eine Identifikationseinheit 440, eine Signaturerzeugungseinheit 450,
eine Überprüfungseinheit 460 und
eine Rechtezuweisungseinheit 470 auf.
-
Die
Speichereinheit 410 empfängt einen, ein verschlüsseltes
ausführbares
Abbild und eine Signaturkomponente aufweisenden Datenblock. Die
Speichereinheit 410 kann eine DRAM-Einrichtung, eine SRAM-Einrichtung oder
andere Speichereinrichtungen aufweisen. Die Speichereinheit 410 verwendet einen
Zeiger, um dem Computersystem zu indizieren, ob die gespeicherte
Datei ein ausführbares
Abbild oder ein ausführbares
Programm ist. Der Zeiger indiziert dem Computersystem, dass die
Speichereinheit 410 als temporärer Speicher verwendet wird, wenn
die gespeicherte Datei ein ausführbares
Abbild ist. Der Zeiger indiziert dem Computersystem die Verwendung
der Speichereinheit 410 als Ausführungsstelle, wenn die Datei
ein ausführbares
Programm ist.
-
Die
Separierungseinheit 420 ist mit der Speichereinheit 410 gekoppelt.
Die Separierungseinheit 420 empfängt den Datenblock von der
Speichereinheit 410 und separiert das verschlüsselte ausführbare Abbild
von der Signaturkomponente. Dies gestattet der Zugriffs-Steuerungs-Einheit 400 die
getrennte Verarbeitung des verschlüsselten ausführbaren
Abbildes und der Signaturkomponente.
-
Die
Entschlüsselungseinheit 430 ist
mit der Separierungseinheit 420 und der Speichereinheit 410 gekoppelt.
Die Entschlüsselungseinheit 430 empfängt das
verschlüsselte
ausführbare
Abbild in Geheimtextform und die Signaturkomponente von der Separierungseinheit 420.
Die Entschlüsselungseinheit 430 entschlüsselt unter
Verwendung der Signaturkomponente als Entschlüsselungsschlüssel das verschlüsselte ausführbare Abbild.
Die Entschlüsselungseinheit 430 wandelt
das verschlüsselte
ausführbare
Abbild in ein entschlüsseltes
ausführbares
Programm um.
-
Die
Identifikationseinheit 440 ist mit der Entschlüsselungseinheit 430 und
der Speichereinheit 410 gekoppelt. Die Identifikationseinheit 440 empfängt das
ausführbare
Programm von der Entschlüsselungseinheit 430.
Die Identifikationseinheit 440 liest eine Identifikationsmarkierung
im ausführbaren Programm
und erhält
die Identität
eines entsprechenden zusammengesetzten Schlüssels, der der Identifikationsmarkierung
zugewiesen wird. Dieser zusammengesetzte Schlüssel ist üblicherweise der gleiche Schlüssel, der
von der Signaturerzeugungseinheit 221 zur Erzeugung des
schlüsselabhängigen Hash-Wertes
des ausführbaren
Programms verwendet wird. In einem Ausführungsbeispiel der vorliegenden
Erfindung enthält
der Identifi kationsprozessor 440 eine Nachschlagtabelle,
die verschiedene Identifikationsmarkierungen mit verschiedenen zusammengesetzten
Schlüsseln
abgleicht. Dem zusammengesetzten Schlüssel sind bestimmte Zugriffsrechte
zugeordnet, die dem ausführbaren
Programm gewährt
werden.
-
Die
Signaturerzeugungseinheit 450 ist mit der Identifikationseinheit 440 und
der Speichereinheit 410 gekoppelt. Die Signaturerzeugungseinheit 450 empfängt die
Identität
des der Identifikationsmarkierung des ausführbaren Programms zugewiesenen, zusammengesetzten
Schlüssels.
Die Signaturerzeugungseinheit 450 bewirkt eine Berechnung
eines kryptographischen schlüsselabhängigen Hash-Wertes
des entschlüsselten
ausführbaren
Programms, das von der Identifikationseinheit 440 unter
Verwendung der Identität
des von der Identifikationseinheit 440 empfangenen, zusammengesetzten
Schlüssels empfangen
wurde. Die Signaturerzeugungseinheit 450 speichert eine
Mehrzahl von Schlüsseln,
denen spezielle Zugriffsrechte auf das Computersystem zugewiesen
sind. Diese Schlüssel
leiten eine Mehrzahl zusammengesetzter Schlüssel ab, die zur Codierung und
Decodierung ausführbarer
Programme und entschlüsselter
ausführbarer
Programme verwendet werden.
-
Die Überprüfungseinheit 460 ist
mit der Signaturerzeugungseinheit 450 und der Speichereinheit 410 gekoppelt.
Die Vergleichseinheit 460 empfängt die Signaturkomponente
des ausführbaren
Abbildes von der Speichereinheit 410 und den schlüsselabhängigen Hash-Wert
des entschlüsselten
ausführbaren
Programms von der Signaturerzeugungseinheit 450. Die Überprüfungseinheit 460 vergleicht
den schlüsselabhängigen Hash-Wert
des entschlüsselten ausführbaren
Programms mit der Signaturkomponente des ausführbaren Abbildes. Wenn beide
gleich sind, gestattet die Überprüfungseinheit 460 dem
entschlüsselten
ausführbaren
Programm die Ausführung
durch das Computersystem. Wenn beide nicht gleich sind, erkennt
die Überprüfungseinheit 460, dass
das ausführbare
Abbild modifiziert wurde und nicht durch das Computersystem ausgeführt werden sollte.
-
In
einem Ausführungsbeispiel
der vorliegenden Erfindung empfängt
die Signaturerzeugungseinheit 450 nicht die Identität eines
zur Berechnung einer schlüsselabhängigen Hash-Funktion
des entschlüsselten
ausführbaren
Programms verwendeten, zusammengesetzten Schlüssels. Stattdessen berechnet
die Signaturerzeugungseinheit 450 unter Verwendung zusammengesetzter
Schlüssel,
die durch Permutationen von in der Signaturerzeugungseinheit 450 gespeicherten
Schlüsseln
abgeleitet werden, verschiedene schlüsselabhängige Hash-Werte des entschlüsselten
ausführbaren
Programms. Diese schlüsselabhängigen Hash-Werte
werden von der Überprüfungseinheit 460 empfangen,
die bestimmt, ob irgendeiner der schlüsselabhängigen Hash-Werte mit der ursprünglichen
Signaturkomponente übereinstimmt.
Wenn es eine Übereinstimmung
zwischen der Signaturkomponente des ausführbaren Abbildes und irgendeinem
der berechneten, schlüsselabhängigen Hash-Werte
des entschlüsselten
ausführbaren Programms
gibt, gestattet die Überprüfungseinheit 460 in
gleicher Weise dem entschlüsselten
ausführbaren
Programm die Ausführung
durch das Computersystem. Wenn es keine Übereinstimmungen gibt, erkennt
die Überprüfungseinheit 460,
dass das ausführbare
Abbild modifiziert wurde und nicht durch das Computersystem ausgeführt werden
sollte.
-
Die
Rechtezuweisungseinheit 470 ist mit der Überprüfungseinheit 460 und
der Speichereinheit 410 gekoppelt. Die Rechtezuweisungseinheit 470 empfängt die
Identität
des zur Berechnung des mit der Signaturkomponente des ausführbaren
Abbildes übereinstimmenden,
schlüsselabhängigen Hash-Wertes
verwendeten, zusammengesetzten Schlüssels. Wenn die Rechtezuweisungseinheit 470 ein
die Ausführung
des entschlüsselten,
ausführbaren
Programms durch das Computersystem indizierendes Signal von der Überprüfungseinheit 460 empfängt, bewirkt
die Rechte zuweisungseinheit 470 eine Zuweisung der dem
Programm verfügbaren
Rechte durch die Identifizierung der Rechte, die den zur Berechnung
des übereinstimmenden
schlüsselabhängigen Hash-Wertes verwendeten,
speziellen zusammengesetzten Schlüsseln zugeordnet wurden. In
einem Ausführungsbeispiel
der vorliegenden Erfindung kann die Rechtezuweisungseinheit 470 eine
Nachschlagtabelle enthalten, die verschiedene zusammengesetzte Schlüssel mit
verschiedenen Ebenen von Zugriffsrechten abgleicht. Nachdem die
Rechtezuweisungseinheit 470 dem entschlüsselten ausführbaren
Programm die entsprechenden Rechte zugewiesen hat, verschiebt die
Rechtezuweisungseinheit 470 den Zeiger in der Speichereinheit 410,
um dem Computersystem zu indizieren, dass die Speichereinheit 410 als
Ausführungsstelle
verwendet wird. Das Computersystem wird erkennen, dass die Speichereinheit 410 ein
ausführbares
Programm enthält, und
wird zur Ausführung
des ausführbaren
Programms fortsetzen.
-
5 veranschaulicht
in einer Blockdarstellungsform ein typisches Computersystem eines
vierten Ausführungsbeispiels
der vorliegenden Erfindung. Das Computersystem weist einen Bus 500,
einen Mikroprozessor 510, einen Speicher 520,
eine Datenspeichereinrichtung 530, einen Tastatur-Controller 540 und
einen Anzeigeeinrichtungs-Controller 550 auf.
-
Der
Mikroprozessor 510 kann ein Complex-Instruction-Set-Computing(CISC) – Mikroprozessor,
ein Reduced-Instruction-Set-Computing(RISC) – Mikroprozessor
oder eine andere Prozessoreinrichtung sein. Der Mikroprozessor führt im Speicher 520 gespeicherte
Befehle oder Code aus und führt
Operationen an im Speicher 520 gespeicherten Daten durch.
Das Computersystem 500 weist ferner eine mit dem Bus 515 gekoppelte
Datenspeichereinrichtung 530 auf, wie zum Beispiel ein Festplatten-,
ein Disketten- oder ein optisches Laufwerk. Der Anzeigeeinrichtungs-Controller 550 ist auch
mit dem Bus 515 gekoppelt. Der Anzeigeeinrichtungs-Controller 550 gestattet
die Koppelung einer Anzeigeeinrichtung mit dem Computersystem. Der
Tastatur-Controller 540 gestattet
die Koppelung einer Tastatur mit dem Computersystem und überträgt Signale
von einer Tastatur zum Computersystem.
-
Der
Speicher 520 ist mit dem Mikroprozessor 510 über den
Bus 500 gekoppelt. Der Speicher 520 kann ein dynamischer
Speicher mit wahlfreiem Zugriff (DRAM), ein statischer Speicher
mit wahlfreiem Zugriff (SRAM) oder eine andere Speichereinrichtung sein.
Der Speicher 520 kann durch den Prozessor 510 ausführbare Befehle
oder Code speichern, die Bestandteil von Anwendungsprogrammen, Programmen
des Betriebssystems oder anderen Computerprogrammen sind. Der Speicher 520 weist
ein Speicherungsmodul 521, ein Separationsmodul 522,
ein Entschlüsselungsmodul 523,
ein Identifikationsmodul 524, ein Signaturerzeugungsmodul 525,
ein Überprüfungsmodul 526 und
ein Rechtezuweisungsmodul 527 auf. Das Speicherungsmodul 521 weist
eine erste Mehrzahl von durch den Prozessor ausführbaren Befehlen auf, die durch
den Prozessor 510 in der in 7 gezeigten
Art und Weise ausgeführt
werden. Das Speicherungsmodul führt
Funktionen durch, die denen der Speichereinheit 410 in 4 ähnlich sind. Das
Separationsmodul 522 weist eine zweite Mehrzahl von durch
den Prozessor ausführbaren
Befehlen auf, die durch den Prozessor 510 in der in 7 gezeigten
Art und Weise ausgeführt
werden. Das Separationsmodul 522 führt Funktionen durch, die denen der
Separierungseinheit 420 in 4 ähnlich sind. Das
Entschlüsselungsmodul 523 weist
eine dritte Mehrzahl von durch den Prozessor ausführbaren
Befehlen auf, die durch den Prozessor 510 in der in 7 gezeigten
Art und Weise ausgeführt
werden. Das Entschlüsselungsmodul 523 führt Funktionen durch,
die denen der Entschlüsselungseinheit 430 in 4 ähnlich sind.
Das Identifikationsmodul 524 weist eine vierte Mehrzahl
von durch den Prozessor ausführbaren
Befehlen auf, die durch den Prozessor 510 in der in 7 gezeigten Art
und Weise ausgeführt
werden. Das Identifikationsmodul 524 funktioniert ähnlich der
Identifikationseinheit 440 in 4. Das Signaturerzeugungsmodul 525 weist
eine fünfte Mehrzahl
von durch den Prozessor ausführbaren
Befehlen auf, die durch den Prozessor 510 in der in 7 gezeigten
Art und Weise ausgeführt
werden. Das Signaturerzeugungsmodul 525 führt Funktionen durch,
die denen der Signaturerzeugungseinheit 450 in 4 ähnlich sind.
Das Überprüfungsmodul 526 weist
eine sechste Mehrzahl von durch den Prozessor ausführbaren
Befehlen auf, die durch den Prozessor 510 in der in 7 gezeigten
Art und Weise ausgeführt
werden. Das Überprüfungsmodul 526 führt Funktionen
durch, die denen der Überprüfungseinheit 460 in 4 ähnlich sind.
Die Rechtezuweisungseinheit 527 weist eine siebte Mehrzahl
von durch den Prozessor ausführbaren
Befehlen auf, die durch den Prozessor 510 in der in 7 gezeigten Art
und Weise ausgeführt
werden. Das Rechtezuweisungsmodul 527 funktioniert ähnlich der
Rechtezuweisungseinheit 470 in 4.
-
6 ist
ein Ablaufdiagramm, das ein Verfahren zur Codierung eines von einem
Computersystem auszuführenden,
ausführbaren
Programms veranschaulicht. Zuerst wird ein ausführbares Programm empfangen,
wie in Block 601 gezeigt. Als Nächstes wird ein zusammengesetzter
Schlüssel empfangen,
der dem ausführbaren
Programm zuzuweisende, zugeordnete Rechte definiert, wie in Block 602 gezeigt.
-
Es
wird ein schlüsselabhängiger kryptographischer
Hash-Algorithmus
an dem ausführbaren Programm
durchgeführt.
Der verwendete zusammengesetzte Schlüssel kann entweder ein privater symmetrischer
Schlüssel
oder ein öffentlicher
asymmetrischer Schlüssel
sein. Dies ergibt einen verschlüsselten
schlüsselabhängigen Hash-Wert,
der als eine Signatur oder Fingerabdruck für das ausführbare Programm dient. Dies
ist in Block 603 gezeigt.
-
Als
Nächstes
wird das ausführbare
Programm unter Verwendung des verschlüsselten schlüsselabhängigen Hash-Wertes
als Schlüssel verschlüsselt. Dies
ergibt ein ausführbares
Abbild. Dies ist in Block 604 gezeigt. Nachdem das ausführbare Programm
zu einem ausführbaren
Abbild verschlüsselt
ist, werden sowohl das ausführbare
Abbild als auch die Signaturkomponente zur Verarbeitung und Ausführung an
ein Computersystem gesendet: Dies ist in Block 605 gezeigt.
-
7 zeigt
ein Ablaufdiagramm, das ein Verfahren zur Zugriffssteuerung in einem
Computersystem veranschaulicht. Zuerst wird ein, eine Signaturkomponente
und ein ausführbares
Abbild aufweisender Datenblock empfangen, wie in Block 701 gezeigt. Es
wird die Signaturkomponente vom ausführbaren Abbild separiert, wie
in Block 702 gezeigt. Es wird das ausführbare Abbild unter Verwendung
der Signaturkomponente als Schlüssel
entschlüsselt.
Dies ergibt ein entschlüsseltes
ausführbares
Programm. Dies ist in Block 703 gezeigt.
-
Als
Nächstes
wird eine Identifikationsmarkierung im entschlüsselten ausführbaren
Programm lokalisiert, wie in Block 704 gezeigt. Es wird
ein, der Identifikationsmarkierung zugeordneter, zusammengesetzter
Schlüssel
identifiziert. Dies ist in Block 705 gezeigt. Es wird ein
schlüsselabhängiger kryptographischer
Hash-Wert des entschlüsselten
ausführbaren
Programms unter Verwendung des der Identifikationsmarkierung zugeordneten,
zusammengesetzten Schlüssels
berechnet, wie in Block 706 gezeigt. Als Nächstes wird
durch einen Vergleich der Signaturkomponente im Datenblock mit dem
berechneten schlüsselabhängigen kryptographischen
Hash-Wert für
das entschlüsselte
ausführbare
Programm die Quelle des Datenblocks und, ob der Block modifiziert wurde, überprüft. Dies
ist in Block 707 gezeigt. Das entschlüsselte ausführbare Programm wird nicht ausgeführt, wenn
die Signaturkomponente im Datenblock nicht mit dem berechneten schlüsselabhängigen kryptographischen Hash-Wert übereinstimmt. Dies
ist in Block 708 gezeigt. Wenn die Signaturkomponente im
Datenblock mit dem berechneten schlüsselabhängigen kryptographischen Hash-Wert übereinstimmt,
werden dem entschlüsselten
ausführbaren
Programm die entsprechenden Rechte zugewiesen, wie sie durch den
zusammengesetzten Schlüssel
identifiziert sind. Dies ist in Block 709 gezeigt. Zum
Schluss wird das entschlüsselte
ausführbare Programm
ausgeführt,
wie in Block 710 gezeigt.