-
Die vorliegende Erfindung befasst
sich mit einem Verfahren und einer Vorrichtung zum Laden von Befehlskodes
in einen Speicher und zum Verbinden der genannten Befehlskodes.
Im Besonderen befasst sich die vorliegende Erfindung mit einem kombinierten
Verfahren zum Laden und Verbinden in einer Umgebung mit beschränkten Ressourcen,
wie beispielsweise einer SmartCard, im Besonderen einer SmartCard
mit einer Java-Umgebung, wie beispielsweise einer JavaCard.
-
Technischer Bereich und
Hintergrund der Erfindung
-
Beim Laden und Verbinden von rechnerabhängigem,
größeneffizientem
Kode zur Ausführung in
einer beliebigen Umgebung zur Ausführung von Kodes mit beschränkten Resscurcen
ist es in allen Einstellungen, in denen nur Teile des gesamten ausführbaren
Objektkodes während
des Kompilierens vorhanden sind, notwendig, einen letzten Schritt
zum Verschieben oder zum Verbinden auszuführen, bei dem bis dahin ungelöste Referenzen
zu externen Symbolen, beispielsweise Funktionen, Variablen oder
Klassen, ersetzt werden durch tatsächliche Adressen, die nur im
partiellen Ausführungskontext gültig sind.
Die Verbindungsinformationen werden separat vom Kode im System festgehalten,
wobei dieser Ansatz zur Kode-Entwicklung und -Installation im Allgemeinen
in PCs, Workstations oder in Cross-Development-Umgebungen für eingebettete Systeme
verwendet wird.
-
In Umgebungen, in denen die Ressourcen Rechnerzeit,
Kommunikationsbandbreite und Übergangsspeicher
(RAM) rar sind, ist das Schreiben in einen dauerhaften Speicher
aufwändiger
als das Schreiben in einen temporären Speicher, und wo letztlich
keine Überlegungen
zur Integrität
der Kommunikationsinfrastruktur angestellt werden können, ergeben
sich weitere Probleme. Es müssen
insbesondere zeiteffiziente Wege gefunden werden, um die Kode- und
Verbindungsinformationen auf eine sichere Art in die Laufzeitumgebung
zu laden, so dass die Vertraulichkeit und die Integrität der geladenen Daten
sichergestellt sind.
-
Die erste Einstellung, der diese Überlegungen
gelten, sind SmartCards, die aktualisiert werden müssen, nachdem
sie an Kunden ausgegeben wurden. Vor allem bei Multifunktionskarten
oder JavaCards ist eine Lösung
dieses Problems notwendig. Daher wird der Begriff ,JavaCard' in den folgenden Abschnitten
verwendet, umfasst aber nicht alle oben beschriebenen Umgebungen.
-
Das erste Problem ist die gesamte
benötige Zeit
zum Laden von Kode- und Verbindungsinformationen in die SmartCard,
zum Ausführen
von kryptografischer Entschlüsselung
sowie von Integritätsprüfungen an
der SmartCard über
die geladenen Daten und letztlich zum Ausführen der Verschiebung des neu
geladenen Kodes, um ihn zur Ausführung
vorzubereiten. Das zweite größere Problem
ist der Umfang an temporären
Daten, die zur Ausführung
der oben genannten Operationen erforderlich sind.
-
Die Europäische Patentanmeldung EP0383518
A1 legt eine Methode zum Verschieben von Programmkode nach dem Herunterladen
auf eine IC-Karte offen, wobei ein Systemprogramm bei der Ausführung des
Herunterladens eine Verschiebung oder Differenz zwischen der führenden
Adresse des eingegebenen Programms und der führenden Adresse des Speicherbereichs
des Speichers zu jeder der Operandenadressen oder absoluten Adressen
der bedingten oder unbedingten JMP-Anweisungen, eine GO TO-Anweisung, eine CALL-Anweisung und
eine BRANCH-Anweisung hinzufügt,
die in das Programm mit einer bestimmten Datenlange eingefügt sind.
Das Systemprogramm generiert somit ein heruntergeladenes Programm
und speichert dies in dem Speicherbereich des Speichers bei der
führenden
Adresse des Speicherbereichs sowie in weiteren Adressen.
-
In konventionellen Systemen umfassen
die Verschiebungsinformationen eine feste Information und eine Adress-Info.
Die feste Information verweist auf den Adressplatz nach einem Befehlskode,
der über
eine Adresse als Parameter verfügt,
der beim Verbinden bestimmt werden muss. Die Adressinformationen
enthalten eine Verschiebung und in dem Fall, dass der Verschiebungstyp
zeigt, dass sich die Adresse in einem Paket befindet, das sich von
dem Paket unterscheidet, in dem der Adressparameter-Befehlskode
liegt, bezeichnet eine Paket-ID, auch „AID" genannt, eine Startadresse und somit
ein Paket, dessen Startadresse verwendet werden soll. In dem Falle,
dass es sich bei dem Paket, in dem sich die Adresse befindet, um
das gleiche Paket handelt, in dem auch der Adressparameter-Befehlskode
liegt, ist die Startadresse bereits als Startadresse für dieses
Paket bekannt. Die Adresse wird dann als Startadresse plus der Verschiebung
festgelegt.
-
Unter Berücksichtigung der Besonderheiten und
Begrenzungen von SmartCards werden die folgenden grundlegenden Schritte
ausgeführt,
um einen neuen ausführbaren
Kode in eine JavaCard zu laden:
- – Empfang
des Kodes in einem RAM und Übermittlung
des Kodes an einen dauerhaften Speicher, beispielsweise einen EEPROM.
- – Empfang
der Verbindungsinformationen (feste Informationen und Verschiebungstabellen)
im RAM und deren Übermittlung
an einen dauerhaften Speicher.
- – Optionale
Ausführung
von Entschlüsselung
und kryptografischen Integritätsprüfungen,
im Allgemeinen bekannt als MACing, von Kode- und Verbindungsinformationen
- – Bewertung
der Verbindungsinformationen und für jeden Verschiebungseintrag
Festlegung der festen Adresse und entsprechend dem Verschiebungstyp
Berechnung der tatsächlichen
Referenzadresse und Schreiben dieser Referenz in die entsprechende
feste Adresse im dauerhaften Speicher.
- – Entfernen
der Verbindungsinformationen aus dem dauerhaften Speicher, um Platz
für weiteren, zukünftig zu
ladenden Kode zu schaffen.
-
Dieser Ansatz hat jedoch den Nachteil,
dass beim Ausführen
der kryptografischen Operationen nach dem Laden aller Daten, eine ungeeignete
Anzahl an Speicherkopieroperationen ausgeführt werden muss und diese Operationen
können
ausschließlich
im RAM effizient ausgeführt
werden. Durch das Platzieren von Verbindungsinformationen in einem
dauerhaften Speicher, hauptsächlich
aus Gründen
einer einfacheren Entschlüsselung
und MACing, müssen
große
Einbußen
in der Leistung in Kauf genommen werden, da diese Daten auf jeden
Fall hinterher gelöscht
werden müssen,
was wiederum eine umfangreiche Schreiboperation im dauerhaften Speicher
erforderlich macht.
-
Durch Ausführen der Verschiebung, nachdem
der komplette Kode in den dauerhaften Speicher geladen wurde, muss
ein weiterer Leistungsverlust hingenommen werden, da das Schreiben
einzelner Bytes in einen dauerhaften Speicher ebenso viel Zeit in
Anspruch nimmt wie das Schreiben mehrerer Bytes, sogar einer ganzen
Seite.
-
Ziel und Vorteile
der vorliegenden Erfindung
-
Ein Ziel der vorliegenden Erfindung
nach den Ansprüchen
1 und 8 ist die Bereitstellung eines Verfahrens und einer Vorrichtung
zum Laden von Befehlskodes in einen Speicher und zum Verbinden der genannten
Befehlskodes, was weniger Schreibzyklen in Anspruch nimmt als bei
einem Speicher mit einer relativ langen Zugriffszeit. Dies bringt
der, Vorteil mit sich, dass das Ergebnis einer komplett geladenen und
verbundenen Befehlskode-Sequenz schneller erreicht werden kann und
dass die Lebenszeit des Geräts
verlängert
werden kann, da aufgrund einer begrenzten Neubeschreibbarkeit die
Anzahl an Schreibzugriffen auf den gleichen Speicher ebenfalls begrenzt
ist. Das Ergebnis wird noch verbessert, indem der Effekt ausgenutzt
wird, dass ein Schreibzyklus in ein EEPROM für ein Byte genauso viel Zeit
in Anspruch nimmt wie es ein Schreibzyklus für mehrere Bytes tut, beispielsweise
eine EEPROM Seite, also 64 Bytes. Während der konventionellen Verbindungsprozedur
benötigt
jeder Verbindungsschritt für jede
Adresse einen Schreibzugriff auf den Speicher, was im Hinblick auf
die oben beschriebene Tatsache einen Verlust von Zugriffszeit bedeutet.
Die Erfindung nutzt in einem höheren
Grad die Schreibmöglichkeiten
eines jeden Schreibzyklus. Hinzu kommt, dass eine Entschlüsselung
unter Verwendung eines Ziffernstroms und/oder einer Integritätsprüfung auch ohne
vorheriges Schreiben in EEPROM ausgeführt werden kann.
-
Die oben genannten Ziele werden durch
ein Verfahren nach Anspruch 1 sowie durch eine Vorrichtung nach
Anspruch 10 erreicht.
-
Weiterhin wird der Umfang an Daten
verringert, die für
ein Verbinden erforderlich sind. Der an die Ausführungsumgebung zu sendende
Umfang an Daten ist kleiner, verglichen mit einem Format, in dem
Kode- und Verschiebungsinformationen nicht miteinander verzahnt,
sondern strikt voneinander getrennt werden. In einer Einstellung,
in der zuerst die Kode- und anschließend die Verschiebungsinformationen
gesendet werden, ist es notwendig, zu jedem Verschiebungseintrag
die Informationen darüber
hinzuzufügen,
für welche
Kode-Adresse die entsprechende Verschiebung gültig ist. Diese so genannte feste
Information wird vollkommen überflüssig durch das
in der vorliegenden Erfindung beschriebene Verfahren. Das Ergebnis
ist eine erhebliche Verringerung im Umfang der an die Ausführungsumgebung gesendeten
Daten, was wiederum zu einer Verringerung der Gesamtzeit führt, die
zur Ausführung
des Heraufladens notwendig ist, vor allem, wenn die Geschwindigkeit
der Kommunikation mit der Ausführungsumgebung
gering ist.
-
Unterscheidungsinformationen, die
eine Unterscheidung zwischen den Befehlskodes und den Verschiebungsinformationen
ermöglichen,
vereinfachen den Zugriff auf die Verschiebungsinformationen. Die
Verwendung von Kodelängeninformationen, die
vor jedem Kodesatz mit dem Adressparameter-Befehlskode geladen werden,
ist vorteilhaft, da Informationen umgehend verfügbar sind, um die Verschiebungsinformationen
auszumachen. Weiterhin können
die Kodelängeninformationen
während
des Verbindungsprozesses gelöscht
beziehungsweise überschrieben
werden, wodurch Speicherplatz eingespart wird.
-
Das Lokalisieren des relativen Adress-Abstands
am Adressplatz während
des Ladeschritts spart Speicherplatz, da der Adressplatz sowieso
als ein reservierter Platz geladen wird und nur mit wichtigem Inhalt
ausgefüllt
wird, wie beispielsweise Nullwerte, die den gleichen Platz einnehmen
wie der Adressplatz mit dem Abstandwert.
-
Es bietet einen Vorteil, wenn in
dem Fall, dass die zu bestimmende Adresse in einem Paket lokalisiert
wird, das sich vom Paket mit dem Adressparameter-Befehlscode unterscheidet,
die Startadresse von einer direkt adressierbaren Startadressenliste abgeleitet
wird, da dann die relativ langen AIDs nur einmal gespeichert werden
und auf weniger Platz einnehmende Adressen reduziert werden.
-
Speicherplatz wird gespart, wenn
die Verschiebungsinformationen und die Unterscheidungsinformationen
nach dem Verbindungsschritt, der unter Verwendung der genannten
Verschiebungsinformationen vorgenommen wird, überschrieben werden, indem
die nachfolgenden Befehlskodes verschoben werden.
-
Der erste Speicher, in den die Befehlskodes geladen
werden und in dem die Verbindung stattfindet, verfügt vorzugsweise über eine
kurze Schreibzugriffszeit, wie beispielsweise ein RAM, der eine schnelle
Prozedur zum Laden und Verbinden bereitstellt. Wenn danach die Befehlskodes
in einen zweiten Speicher mit einer längeren Schreibzugriffszeit, wie
beispielsweise einem EEPROM geschrieben werden, wird der normalerweise
größere Platz
im EEPROM genutzt, um den gesamten verbundenen Code zu speichern,
und die erhöhte
Schreibzugriffzeit ist dann nicht mehr von Nachteil, da die Verbindung
und die anschließende
Entschlüsselung
sowie die Integritätsprüfung bereits
ausgeführt
wurden.
-
Zusammenfassung
der Erfindung
-
Eine Vorrichtung und ein Verfahren
zum Laden von Kode über
ein einfaches Protokoll in eine Umgebung mit beschränkten Ressourcen,
eine Prüfung
der Integrität
unter Verwendung von kryptografischen Methoden und ein Verschieben
des Kodes zur Umwandlung in eine Form, die zur sofortigen Ausführung geeignet
ist, werden bereitgestellt. Das dargestellte Verfahren verringert
den Umfang an Operationen sowohl zur Entschlüsselung als auch zum Schreiben
in den Speicher, was zur Sicherstellung einer sicheren Übermittlung
sowie zur Installation von Kode erforderlich ist.
-
Das grundlegende Prinzip besteht
darin, die Verschiebungsinformationen direkt im Kode selbst zu verteilen
und die beiden Komponenten nicht klar voneinander zu trennen. Zusätzlich kann
das dargestellte Ladeformat effizient durch Mittel zur kryptografischen
Verschlüsselung
sowie zum Integritätsschutz gesichert
werden, welche auch in Ausführungsumgebungen
mit extrem beschränkten
Ressourcen noch geprüft
werden können.
-
Die Verwendung einer Ziffer, die
während
der Entschlüsselung
und MACing nur von einigen wenigen Informationsbytes abhängt, die
von der Verarbeitung zuvor entschlüsselter Daten stammen, und
niemals von Informationen abhängt,
die nur weiter vorn im verschlüsselten
Datenstrom vorhanden sind, ermöglicht
die stückweise
Entschlüsselung,
die mit der Integritätsprüfung und
dem Verbinden kombiniert werden kann.
-
Die vorliegende Erfindung verwendet
dieses Prinzip, um umgehend mit den Verbindungsinformationen arbeiten
zu können,
solange sie sich noch im RAM befinden und somit erst in einen dauerhaften Speicher übermittelt
werden, wenn der Kode verbunden ist. Dies ist auch auf sichere Art
möglich,
sobald eine Datenstromziffer, wie sie oben beschrieben wurde, verwendet
wird.
-
Dergestalt ineinander verschlungene
Kode- und Verbindungsinformationen, die eine umgehede Verschiebung
im RAM ermöglichen,
führen
dazu, dass nur komplett verschobene Kodesegmente in den dauerhaften
Speicher, das heißt
in EEPROM, geschrieben werden müssen
und dass ein nachfolgendes Schreiben einzelner Bytes an den festen Adressen
vollständig
umgangen werden kann.
-
Die vorgeschlagene Lösung umfasst
also das Ineinandergreifen von Kode- und Verbindungsinformationen
im Datenstrom.
-
Der Speicher wird in unveränderbaren
Speicher (beispielsweise ROM), in dauerhaften Speicher (beispielsweise
EEPROM) und in Übergangsspeicher
(beispielsweise RAM) unterteilt. Nur in die beiden letztgenannten
Speicher kann von einem Programm mit Zugriff zum Speicher geschrieben
werden. Das Schreiben in den dauerhaften Speicher ist sehr viel
aufwändiger
als das Ändern
von Daten im Übergangsspeicher.
Das Schreiben mehrerer Bytes, beispielsweise Seiten, in den dauerhaften
Speicher ist ebenso aufwändig
wie das Schreiben einzelner Bytes. Kryptografische Operationen erfordern
einen Übergangsspeicher.
Bei dem Übergangsspeicher handelt
es sich um eine rare Ressource, die von allen Anwendungskomponenten
angefragt wird, die im System mit beschränkten Ressourcen ausgeführt werden.
-
Beschreibung
der Zeichnungen
-
Beispiele für die vorliegende Erfindung
werden in den Zeichnungen dargestellt und die Erfindung wird im
Folgenden anhand dieser Beispiele detailliert beschrieben.
-
1 zeigt
ein Beispiel für
eine Befehlskodesequenz in einem EEPROM entsprechend dem Stand der
Technik;
-
2 zeigt
eine Ladesequenz einer Befehlssequenz, verwoben mit Verbindungsinformationen;
-
3 zeigt
eine Anordnung mit einer virtuellen Maschine (VM), einem RAM und
einem EEPROM.
-
Alle Figuren dienen dem besseren
Verständnis
und werden nicht in ihren realen Abmessungen gezeigt noch stehen
die gezeigten Abmessungen in einem realistischen Größenverhältnis zueinander.
-
Detaillierte
Beschreibung der vorliegenden Erfindung
-
Im Folgenden werden die verschiedenen Ausführungsbeispiele
der vorliegenden Erfindung beschrieben.
-
In 1 wird
ein EEPROM 50 dargestellt, in dem ein erstes Paket P1 zwischen
den Adressen „50" und „90" gespeichert ist.
Das Paket verfügt über ein AID „xtra,
das bei einer Adresse „60" gespeichert ist. Das
erste Paket P1 wurde bereits vollständig verschoben.
-
Ein zweites Paket P2 zwischen den
Adressen 100 und 800 umfasst einen ersten Befehlskode 31 bei
einer Adresse 500, wobei es sich bei dem Befehlskode 31 um
eine Aufrufkode handelt, gefolgt von einem Parameter, der beim Laden
gleich Null ist. Das zweite Paket P2 umfasst einen zweiten Befehlskode 33 bei
einer Adresse 600, wobei es sich bei diesem Befehlskode 33 um
einen Aufrufkode handelt, gefolgt von einem Parameter, welcher beim
Laden ebenfalls gleich Null ist.
-
In den EEPROM 50 wird weiterhin
eine Verschiebungstabelle 4 geladen, die Verschiebungsinformationen
in Form zweier Verschiebungseinträge 42, 44 umfasst.
Der erste Verschiebungseintrag 42 umfasst eine erste feste
Information, die auf den Adressplatz 501 zeigt, wo die Adresse als
Parameter für
den ersten Befehlscode 31 anzuordnen ist. Der Eintrag umfasst
weiterhin eine Kennung für
Verschiebungstypen, die hier mit ars für „anonymous-relocation-selfdirectea" abgekürzt wird.
Dieser Kennung folgt der relative Adress-Abstand, der hier 40 beträgt. Der zweite
Verschiebungseintrag umfasst eine zweite feste Information, die
auf den Adressplatz 601 zeigt, an den die Adresse als Parameter
für den
zweiten Befehlskode 33 zu setzen ist. Er umfasst weiterhin eine
Kennung für
Verschiebungstypen, die hier mit „symb" für
symbolic relocation abgekürzt
wird. Der Kennung folgt ein relativer Adress-Abstand, der hier 20
beträgt
und durch eine Anwendungs-ID mit „xtra" bezeichnet wird.
-
Eine Paketliste 29 umfasst
eine Liste aller bereits verbundenen Pakete, in diesem Fall für das erste
Paket P1 einen Eintrag, der besagt, dass die Startadresse dieses
Pakets „50" lautet.
-
Nach Stand der Technik werden auf
einer SmartCard mit Ausnahme der Anwendungs-ID-Tabelle 29 alle
die oben genannten Informationen zuerst in einen RAM und von dort
in einen EEPROM geladen. Dies wird aufgrund der Tatsache ausgeführt, dass
der RAM auf einer SmartCard sehr viel kleiner ist als der EEPROM.
Zum Verbinden werden die gesamten Informationen benötigt, was
zu der Notwendigkeit führt,
dass alle Informationen gleichzeitig zur Verfügung stehen müssen. Dies
kann nur mithilfe eines EEPROM garantiert werden.
-
Im Falle eines verschlüsselten
Kodes folgt eine Entschlüsselungsoperation.
Zu diesem Zweck wird der Kode stückweise
zurück
in den RAM geladen, wo eine Entschlüsselung ausgeführt wird,
und der entschlüsselte
Kode wird anschließend
wieder zurück
in den EEPROM geladen. Im Falle einer ausgeführten Integritätsprüfung wird
der Kode zu einem anderen Zeitpunkt stückweise in den RAM geladen und
die Integritätsprüfung wird
ausgeführt,
was zu einem Integritätsprüfungsvektor
führt,
der angibt, ob der Kode die Prüfung
bestanden hat oder nicht.
-
Dann folgt die Verbindungsprozedur,
die erneut nur im RAM ausgeführt
werden kann. Also wird ein Teil der Verschiebungstabelle 47 in
den RAM gelesen und die Verbindungsprozedur wird gestartet.
-
Die Verbindungsprozedur durchsucht
die Verschiebungstabelle 47 und beginnt mit dem ersten Verschiebungseintrag 42.
Der Eintrag wird verarbeitet auf der Grundlage, dass der Verschiebungstyp selbstgeleitet
ist, da es sich bei der Startadresse um die Startadresse des zweiten
Pakets P2 handelt, das heißt
das derzeit geladene Paket, beispielsweise „100" wird zugrundegelegt. Zu dieser Startadresse wird
die im ersten Verschiebungseintrag 42 gegebene Verschiebung „40" hinzugefügt, so dass
sich daraus eine definitiv festgelegte Adresse „140" ergibt. Dieser Wert wird als die festgelegte
Adresse im Adressplatz 501 des ersten Befehlskodes 31 eingegeben.
-
Dann wird der nächste Verschiebungseintrag verarbeitet,
und unter Berücksichtigung
der Tatsache, dass der Verschiebungstyp hier symbolisch ist, wird
die Startadresse abgleitet, nachdem alle Einträge in der Paketliste 29 nacheinander
geprüft
wurden und jedes Paket nach seinem darin gespeicherten AID adressiert
wird; im Falle einer Übereinstimmung der
AIDs wird die so identifizierte Paketstartadresse als die Startadresse
zur Festlegung der Adresse für den
zweiten Befehlskode 33 ausgewählt. Da das erste Paket P1 über die
AID „xtra" verfügt, wird
es als das richtige Paket erkannt.
-
Diese Operation hat hier die Startadresse „50" zum Ergebnis. Zu
dieser Startadresse wird die Verschiebung „20" aus dem zweiten Verschiebungseintrag 44 hinzugefügt, so dass
sich letztlich eine definitiv festgelegte Adresse „70" im ersten Paket
P1 ergibt. Dieser Wert wird als die festgelegte Adresse im Adressplatz
des zweiten Befehlscodes 33 eingegeben, da der Adressplatz,
auf den der zweite Verschiebungseintrag 44 zeigt, die 601
ist.
-
Dabei wird die Verbindungsprozedur
beendet und die Verschiebungstabelle 47 sowie die Paketliste 29 werden
nicht länger
benötigt.
-
Die oben beschriebene Prozedur weist
mehrere Nachteile auf. Die große
Anzahl an Schreibzyklen in den und aus dem EEPPROM auf der einen
Seite ist zeitaufwändig,
da EEPROMs über
längere
Zugriffszeiten verfügen
als RAMs und auf der anderen Seite wird die Lebenszeit eines Systems
verkürzt,
da die Anzahl der Schreibzyklen von EEPROMs beschränkt ist.
-
In 2 werden
die Ladesequenz von Befehlskodes sowie Verschiebungsinformationen,
auch Ladedatei genannt, dargestellt. Zuerst wird eine Anwendungs-ID-Liste 27 übermittelt,
der eine Anwendungs-ID-Listenlängeninformation 28,
kurz naidid, vorangeht. Die Anwendungs-ID-Liste 27 verfugt über drei
Einträge,
eine erste ID der Anwendungs-ID aid1id, eine zweite ID der Anwendungs-ID
aid2id und eine dritte ID der Anwendungs-ID aid3id.
-
Anschließend folgt eine erste Unterscheidungsinformation 37 in
Form einer Kodelängeninformation
c11. Ein inkrementierender Befehlskode „inc" mit einem Parameter a folgt, vor dem
ersten Adressparameter-Befehlskode 31 „call" mit einem Parameter os. Dann folgt
bereits die erste Verschiebungsinformation 35, die zum
ersten Befehlskode 31 gehört.
-
Anschließend folgt eine zweite Unterscheidungsinformation 38 in
Form einer Kodelängeninformation
c12. Ein dekrementierender Befehlskode „dec" mit einem Parameter a folgt, vor dem
zweiten Adressparameter-Befehlskode 33 „call" mit einem Parameter os. Dann folgt
bereits die zweite Verschiebungsinformation 36, die zum
zweiten Befehlskode 33 gehört.
-
Zusätzlich zur Ladedatei können so
genannte Ladedatei-Metainformationen,
wie beispielsweise Kodelänge,
Entschlüsselungsschlüssel, MAC-Schlüssel und
so weiter geladen werden.
-
Somit existiert die Verschiebungsinformationenliste 47 nicht
mehr als separater Block, sondern wurde aufgespaltet und mit der
Befehlskodesequenz verwoben. Die Tatsache, dass die Verschiebungsinformationen 35, 36 direkt
nach ihrem Befehlskode 31, 33 geladen wurden,
macht die Adressinformationen zusammen mit der Verbindungsprozedur
nach Stand der Technik überflüssig, welche
zum Zeigen auf den Adressplatz erforderlich waren. Der zugeordnete Adressplatz
wird hier automatisch erkannt, aufgrund des festen räumlichen
Verhältnisses
zwischen dem Platz für
die Verschiebungsinformationen 35, 36 und dem
Platz des Befehlskodes 31, 33. Es werden somit bei
jedem Verschiebungsschritt zwei Bytes eingespart, was den Umfang
der gesamten Bytes verringert, die zwischen den Speichern geladen
und übermittelt
werden müssen.
-
Da die Adressplätze hinter den Befehlskodes 31, 33 in
der Ladeprozedur nicht mit Nullwerten gefüllt werden, sondern die Werte
der relativen Adress-Abstände
os enthalten, werden erneut zwei Bytes pro Verschiebungsinformation 35, 36 eingespart.
Das System muss lediglich wissen, dass der relative Adress-Abstabd
os am zugeordneten Adressplatz und nicht hinter den Verschiebungsinformationen 35, 36 zu
finden ist. Der selbstgeleitete Verschiebungstyp wird somit auf
einen Verschiebungsbefehl 35 mit einem Byte reduziert.
-
Die Unterscheidungsinformationen 37, 38 werden
verwendet, um eine Unterscheidung zwischen den Befehlskodes 30, 31, 32, 33 und
den Verschiebungsinformationen 35, 36 zu ermöglichen.
So kann erkannt werden, bei welchem Teil des Kodes es sich um die
Verschiebungsinformationen 35, 36 handelt und
wie dieser Teil entsprechend zu verarbeiten ist.
-
Das Verweben der Verschiebungsinformationen 35, 36 mit
der Befehlskodesequenz wird nun verwendet, um die Adresse direkt
nach dem Laden zu verschieben. Die Verfügbarkeit der Verschiebungsinformationen 35, 36 bereits
vor dem Laden der gesamten Ladesequenz macht ein sofortiges Verschieben
möglich.
-
Der Begriff Sofortig bezeichnet hier
die Tatsache, dass das RAM 51 entweder gefüllt ist
oder dass das Ende der Kodesequenz erreicht wurde. Vor dem Verschieben
kann eine mögliche
Entschlüsselungs-
und/oder Integritätsprüfung für den Fall
vorgenommen werden, dass der Kode in verschlüsselter Form geladen wurde
und/oder eine Integritätsprüfung gefordert
oder gewünscht
wird. Eine solche Entschlüsselung
kann mithilfe einer Datenstromziffer vorgenommen werden, die den
Teil des Kodes ausmacht, der den RAM 51 erfüllt, ohne
von Informationen abzuhängen,
die nur in nachfolgendem Kode zur Verfügung stehen.
-
Die Verschiebung wird gestartet,
was bedeutet, dass der erste Kode 31 mit der festgelegten Adresse
verknüpft
wird, wonach die entsprechende Verschiebungsinformation 35 überflüssig geworden ist
und überschrieben
werden kann. Dies kann durch Verschieben des nachfolgenden Kodes
um die richtige Anzahl an Bytes nach oben stattfinden. Danach können wiederum
die Kodelängeninformationen
genutzt werden, was Platz im EEPROM 50 einspart.
-
Anwendungs-IDs, definiert nach ISO
7816 und normalerweise verwendet in Implementierungen nach Stand
der Technik zum Laden und Verbinden von neuem Kode auf einer JavaCard,
sind relativ lang, das heißt
zwischen 5 und 15 Bytes lang. Die ID- Liste Anwendungs-ID 27 stellt
einen Mechanismus bereit, der den erforderlichen Umfang sowohl an Datenspeicherr
während
der Verbindungszeit als auch an übermittelten
Daten während
des Ladestatus verringert.
-
Um diese Einsparungen zu ermöglichen, wird
als erste Stufe im, Ladeprozess die Anzahl an AIDs, die mit dem
folgenden Kode zu verknüpfen sind,
an die Anordnung, beispielsweise eine SmartCard übermittelt. Nun kann die SmartCard
(vorübergehenden)
Datenspeicher für
die gleiche Anzahl an Adressen zuteilen, wie AIDS angegeben wurden.
-
Dieser Datenspeicher wird nach und
nach mit den Startadressen der verschiedenen Pakete gefüllt, die
von den genannten AIDs identifiziert wurden, welche nacheinander
an die SmartCard übermittelt wurden.
Die Laufzeitumgebung bietet daher eine Methode zum Suchen nach den
Startadressen der Pakete mit der AIDs, wie sie von der SmartCard
empfangen wurden. Die daraus resultierenden Startadressen werden
dann in die Tabelle AID-ID 27 eingegeben. Insgesamt werden
die AIDs nur einmal an die SmartCard gesendet, in einer vordefinierten
Reihenfolge, die dann in der anschließend erstellten Tabelle AID-ID 27 wiedergegeben
wird. Dies vereinfacht die Verwendung nur kurzer (1 Byte langer)
AID-IDs, im Gegensatz zu den langen AIDs mit einer Länge von 5
bis 15 Bytes in jeder symbolischen Verknüpfungsinformation, die sich
in dem nachfolgend gesendeten Kode und den Verschiebungsinformationen
befindet.
-
Da die Entschlüsselung, Integritätsprüfung und
Verknüpfung
stückweise
erfolgen kann, das heißt
nur für
einen Teil des geladenen Kodes, für jeden Teil aufeinander folgend,
können alle
Operationen umgehend nach dem Laden des entsprechenden Teils in
den RAM 51 und dem anschließenden Laden des entschlüsselten,
integritätsgeprüften und verknüpften Kodes
in den EEPROM ausgeführt
werden.
-
Der verringerte Umfang des RAM 51 hat demzufolge
weniger große
Auswirkungen auf den Prozess des Ladens und Verbindens.
-
Weiterhin kann ein Prozess zum Auffüllen eingeführt werden,
das heißt
ein Prozess zum Füllen von
leerem Platz im RAM 51 mit Nullwerten, um nur vollständige Informationen
einschließlich
des Adressparameter-Befehlskodes 31, 33 mit den
dazugehörigen
Verschiebungsinformationen 35, 36 zu verarbeiten.
Somit kann es vermieden werden, dass ein Zwischenspeichern von Befehlskodes
erforderlich wird, deren Verschiebungsinformationen nicht mehr in
den RAM 51 passen. Wenn sich nach dem Schritt des Ladens,
mit dem der RAM 51 aufgefüllt wird, keine Verschiebungsinformationen
mehr im RAM 51 befinden, ist kein Verbinden mehr nötig und
der Inhalt des RAM 51 kann direkt an den EEPROM 50 übermittelt
werden.
-
In 3 wird
eine Anordnung dargestellt, die eine Umgebung mit beschränkten Ressourcen
zeigt, wie sie vor allem auf SmartCards zu finden ist. Die Beschränkung zeigt
sich vor allem in der Größe des RAM 51 und
EEPROM 50, aber auch in geringer Rechnerleistung, die Auswirkungen
hat auf die Kryptographie, zu geringen Busweiten führt, ausschlaggebend
ist für
die Geschwindigkeit der Interkommunikation, kleine Taktzyklen nach
sich zieht, was wiederum zu einer geringen Geschwindigkeit bei der
Kommunikation zwischen den einzelnen Komponenten sowie zu einer
geringen Verarbeitungsgeschwindigkeit führt, und so weiter.
-
Ein Mikroprozessor μP 1 betreibt
einen virtuellen Rechner 10, der wiederum mit einem ersten Speicher 51 verbunden
ist, bei dem es sich um einen Speicher mit einer kurzen Schreibzugriffszeit
handelt, hier ein RAM, sowie mit einem zweiten Speicher 50 verbunden
ist, der im Verhältnis über eine
längere Schreibzugriffszeit
verfügt,
hier ein EEPROM.
-
Der RAM 51 ist weiterhin
verbunden mit einem Coprozessor cμP 2 sowie
mit einer Protokollverarbeitungseinheit (Protocol Handling Unit)
PHU 15, die den APDU-Verkehr regelt, der die gezeigte Anordnung,
wie sie sich auf einer SmartCard befinden könnte, erreicht und wieder verläßt.
-
Über
die PHU 15 wird Kode in den RAM 51 geladen. Dieser
Kode umfasst die Befehlskodesequenz und die Verschiebungsinformationen 35, 36. Nach
Stand der Technik wird die gesamte Kodesequenz für ein Applet über den
RAM 51 in den EEPROM 50 geladen. Nur dann, abgesehen
von Entschlüsselungs- und/oder Integritätsprüfung, wird
die Verbindungsprozedur ausgeführt.
Der RAM 51 ist kleiner als der EEPROM 50, so dass
die Kodesequenz nur stückweise
an den EEPROM 50 übertragen
werden kann, wobei jedes dieser Stücke in den RAM 51 passt.
Mit dem hier beschriebenen neuen Verfahren wird jedes Stück vollständig verbunden, bevor
es in den EEPROM 50 geladen wird. Mit der Überschreibfunktion
wird sogar noch weniger Platz im EEPROM 50 verwendet, was
dessen Lebenszeit noch weiter verlängert. Das Kodeladen zwischen
den Speichern 50, 51 sollte über ein Transaktions-Subsystem
stattfinden, um die Integrität des
EEPROM 50 im Falle von Fehlern während des Ladens, Verbindens
und der Installation von neuem Kode auf der SmartCard sicher zu
stellen. Die Entschlüsselung und
Integritätsprüfung wird
vorzugsweise durch den Coprozessor cμP 2 vorgenommen, während das
Laden und Verbinden vorzugsweise durch den Mikroprozessor μP 1 vorgenommen
wird.
-
Anstelle von Aufruf-Befehlskodes
können auch
beliebige andere Adressparameter-Befehlskodes verwendet werden.
Andere Parameter wie die Nummern der Adressen dienen lediglich als Beispiele
und können
verändert
werden, ohne dass von der Zielsetzung der vorliegenden Erfindung
entsprechend den angehängten
Ansprüchen
abgewichen wird.