[0001] Die Erfindung betrifft ain Verfahren zum Kontrollieren eines Speicherzugriffs auf
einer Chipkarte und einer Anordnung zur Durchführung des Verfahrens, wie sie in den
Oberbegriffen der Ansprüche 1 und 7 beschrieben sind.
[0002] Zum bargeldlosen Bezahlen von Waren oder zum Abrechnen von Dienstleistungen oder
ähnlichem sind datengesteuerte Zahlungssysteme bekannt, die beispielsweise in der
Zeitschrift "Betriebspraxis", B. Bl. 2/1982, Seite 48, von Dr. R. Nowak und W. Röder
unter dem Titel "Die Chipkarte - nächste Generation der Automatenkarte" beschrieben
sind. Die dabei verwendeten Karten tragen als ein wesentliches Element einen nichtflüchtigen
elektrischen Datenspeicher, auf den über elektrische Knotakte an der Kartenoberfläche
zugegriffen werden kann. Über ein Kartenlesegerät wird von einer Recheneinheit bei
jeden Gebrauch auf den Speicherinhalt zugegriffen, der dabei gegebenenfalls geändert
wird.
[0003] Zur Anwendung kommen derartige Karten in Sicherheits- und Zugriffssystemen, in Abrechnungs-
oder Registriersystemen und in Debit- oder Kreditsystemen. Um eine weite Verbreitung
und häufigen Gebrauch der Karten zu gewährleisten, gibt es Betreiber solcher Systeme,
die eine Vielzahl von Karten ausgeben und die ein weitverzweigtes Netz von Lesegeräten
und Rechenanlagen anbieten. Um Mißbräuche der Daten auszuschließen, müssen dabei jedoch
hohe Sicher heitsanforderungen an die Kartensysteme gestellt werden. Besonders die
Trägerkarten, deren Verbreitung nicht immer kontrollierbar ist, müssen vor einer Benutzung
durch Unberechtigte geschützt werden.
[0004] Dies kann durch eine Freigabeoperation erreicht werden, bei welcher ein Datenvergleich
zwischen einem von einer Bedienperson eingegebenen oder von einer Rechenanlage verschlüsselten,
personenbezogenen PIN- Codewort mit einem abgespeicherten Referenzwort durchgeführt
wird. In einer weiteren Prüfung wird innerhalb eines Terminals anhand eines kartenbezogenen
Codes, der auf der Karte und im Terminal abgespeichert ist, die Karte identifiziert.
Auf diese Weise wird die Benutzung einer bestimmten Karte in einem oder mehreren bestimmten
Terminals auf ihre Berechtigung hin überprüft. Abhängig vom Vergleichsergebnis wird
der Zugriff freigegeben beziehungsweise unterbunden. Wenn ein kartenbezogener Geheimcode
gleichlautend in einer größeren Anzahl von Karten und Terminals abgespeichert ist,
besteht ein Risiko, daß dieser Geheimcode auch einem Unberechtigten bakannt wird,
der damit selbst gültige Karten oder Terminals unerlaubt installieren könnte.
[0005] Der Schutz durch einen kartenbezogenen Code versagt also dann, wenn die Daten beispielsweie
durch Verrat bekannt werden. Eine Sicherung dagegen besteht darin, die Gültigkeitsdauer
umlaufender Karten einzuschränken. Diese Einschränkung erfordert jedoch eine regelmäßige
Ausgabe neuer Karten und ist daher nur aufwendig und umständlich zu handhaben.
[0006] Der Erfindung lag daher die Aufgabe zugrunde, ein Verfahren und eine Anordnung der
oben ganannten Art anzugeben, welche vor Mißbrauch mit den zur Identifikation oder
Authentifikation verwendeten kartenbezogenen Geheimdaten schützen und die Gültigkeitsdauer
des Geheimcodes begrenzbar machen, ohne den Kartenumlauf einzuschränken.
[0007] Diese Aufgabe wird gemäß den kennzeichnenden Teilen der Ansprüche 1 beziehungsweise
7 gelöst.
[0008] Die Erfindung beruht darauf, daß der Kartenchip eine Logik und einen Kontrollspeicher
besitzt, die einen Wechsel der zur Identifikation oder Authentifikation verwendeten
kartenbezogenen Geheimdaten im Chip ermöglicht, die im folgenden als erster Code bezeichnet
sind. Dazu werden in einem Hauptspeicher auf dem Chip mehrere dieser ersten Codes
programmiert. Die Aktivierung einer Adresse des Hauptspeichers, um einen ersten Code
zu programmieren ist durch einen zweiten Code geschützt. Wird dieser zweite Geheimcode
aktiviert, so muß die betreffende Adresse des Hauptspeichers automatisch gegen Auslesen
gesperrt werden und stattdessen die Einwirkung auf eine Komparatorlogik freigegeben
werden. Der zweite Code ist als Systemgeheimnis weder auf der Karte noch auf einem
Terminal noch vom Karteninhaber, sondern nur in einer gut gegen Betrug gesicherter
Umgebung einer Zentrale anzuwenden.
[0009] Zur Anwendung in einem Chipkartensystem werden bei der Ausgabe der Chipkarten also
vorsorglich mehrere erste Codes unter Benutzung des zweiten Codes vorprogrammiert.
Davon wird - wahlweise im Terminal festgelegt - nur jeweils auf einen einzigen ersten
Code bei einer Kartenbenutzung zugegriffen. Die übrigen vorsorglich vorbereiteten
ersten Codes unterliegen keinem Betrugsrisiko, solange sie im Terminal nicht angewendet
werden. Ist die Gültigkeitsdauer eines Codes abgelaufen, so läßt sich in den Terminals
selbst der aktuelle erste Code leicht ersetzen. Die Anzahl dieser Terminals ist in
der Praxis vergleichsweise gering. Nach dem Umstellen auf einen geänderten ersten
Code läßt sich auch in allen umlaufenden Chipkarten und bei ihrer Wiederbenutzung
in einem beliebigen Terminal ein ungültig gewordener erster Code allein durch Schreiben
im Kontrollspeicher oder durch Löschen sperren. Damit verringert sich das Risiko,
daß mit unberechtigt manipulierten Terminals über abgelaufene und damit nicht mehr
geheime erste Codeworte die Besitzer von Chipkarten geschädigt werden können.
[0010] Weiterbildungen der Erfindung ergeben sich aus den Unteransprüchen.
[0011] Im folgenden wird die Erfindung anhand eines Ausführungsbeipieles weiter beschrieben.
[0012] Die Figur zeigt eine Speicheranordnung mit einer Logikeinheit zur Zugriffssicherung.
[0013] Die Anordnung der Figur weist eine Speicheranordnung 1, einen Zeilendecoder 2, einen
Komparator 4, ein Datenregister 3 und eine Logikeinheit 5 auf. Die Speicheranordnung
1 setzt sich aus einem Hauptspeicher 11 mit einer Vielzahl n von wortweise adressierbaren
Speicherplätzen, aus einem Kontrollspeicher 13, dessen Speicherplätze den Speicherplätzen
des Hauptspeichers 13 adreßmäßig zugeordnet und gemeinsam über n Adressleitungen
A mit diesen adressierbar sind sowie einem weiteren unabhängigen Bereich (zweiter
Codebereich 14) zusammen. Der Hauptspeicher 11 ist in Abhängigkeit vom Programmierzustand
des Kontrollspeichers 11 in einen Anwenderbereich 15 und einen ersten Codebereich
16 aufgeteilt. Dieser weist in dem wiedergegebenen Beispiel Speicherplätze mit Adressen
A1, A2 bis AK auf. Die Adressen des Anwenderspeichers 15 lauten A(K+1) bis An. Das
Datenregister 3 zur Ein- und Ausgabe von Daten in die Speicheranordnung ist für die
Wortlänge des Haupt- und ersten Kontrollspeichers 11, 14 und zusätzlich für die Breite
des Kontrollspeichers 13 ausgelegt. Bei einer Wortlänge von m Bits für den Hauptspeicher
11 und 2 Bits für den Kontrollspeicher 13 muß es also m + 2 Bits aufnehmen. Zwischen
dem Datenregister 3 und dem gemeinsamen Ein- Ausgang des Hauptspeichers 11 und ersten
Kontrollspeichers 14 liegt der m Bit breite Datenkomparator 4 zum Vergleich eines
Speicherinhalts mit einem Registerinhalt.
[0014] Die Kontrollogik 5 besteht - im hier wiedergegebenen Beispiel - aus zwei Flip-Flops
6 sowie Und- und NOR-Gattern. Sie erzeugt ein Freigabesignal F1, welches den Schreib-Lese-
und Löschzugriff auf den Hauptspeicher 11 kontrolliert. Ein weiteres Freigabesignal
F2 kontrolliert das Schreiben eines Kontrollbits B2 im Kontrollspeicher 13.
[0015] Im folgenden wird anhand von Beispielen die Funktion der gesamten Anordnung beschrieben.
Dazu wird angenommen, daß in der ersten Speicherstelle (Adresse A1) des ersten Codebereichs
ein erster Code abgespeichert ist, der bereits deaktiviert ist. Die zweite Speicherstelle
(Adresse A2) enthält einen ersten Code, der aktuell für die Anwenderspeicherzugriffe
benutzt ist. In den übrigen Speicherstellen (Adresse AK) sind vorsorglich weitere
erste Codes abgelegt, die zwar während der aktuellen Speicherzugriffe noch nicht
benötigt werden, die jedoch für den Fall der Deaktivierung des Codes im zweiten Speicherplatz
zur Verfügung stehen. Die Anzahl derartiger vorsorglicher abgelegter erster Codes
hängt davon ab, wie oft mit einer Codeänderung zu rechnen ist.
[0016] Der Kontrollspeicher 13 weist pro Speicheradresse A1 bis An vorzugsweise zwei Bitstellen
mit jeweils einem Kontrollbit B1 beziehungsweise B2 auf. Sie legen fest, ob die zugehörigen
Speicherplätze im Hauptspeicher 1 als Anwenderspeicher 15 (B1 = 1 und B2 = 1) oder
als erster Codespeicher (B2 = 0) dienen, und ob es sich um einen gültigen ersten Code
(B1 = 1) oder um einen deaktivierten ersten Code (B1 = 0) handelt.
[0017] Unter der Annahme, ein vom Terminal übernommenes und im Datenregister 3 abgelegtes
m-Bit breites Datenwort berechtigt zu einem Zugriff auf den Anwenderspeicher 15,
wird nach einem Vergleich mit dem unter der Adresse A2 abgespeicherten aktuellen
ersten Code das Komparatorsignal K logisch 1 sein. Als weitere Voraussetzung für den
Zugang zum Anwenderspeicher 15 muß sichergestellt sein, daß tatsächlich ein aktueller
erster Code sowie der Hauptspeicher 11 und nicht der unabhängige Bereich 14 zum Vergleich
herangezogen wurde. Diese Überprüfung erfolgt einerseits anhand der Kontrollbits B1,
B2 über ein NOR-Gatter 17 und andererseits über die Adreßleitungen A an einem NOR-Gatter
20 und dann ebenfalls über das NOR-Gatter 17. Sind alle diese Bedingungen gegeben,
so liegt das Steuersignal T1 ebenfalls auf logisch 1 und das Freigabe Flip-Flop 6
wird über ein Und-Gatter 22 gesetzt. Über ein NOR-Gatter 18 wird der Q-Ausgang des
Freigabe Flip-Flops mit dem Ausgang des NOR-Gatters verknüpft und das Freigabesignal
F1 nimmt einen log.1 Pegel an.
[0018] Wenn also das Freigabe Flip-Flop 6 gesetzt ist, dann ist ein Lesen oder eine andere
Anwendung des Anwenderspeichers 15 möglich.
[0019] Falls jedoch bei der Überprüfung des vom Benutzer angegebenen Datenwortes mindestens
eines der oben beschriebenen Bedinungen nicht erfüllt ist, wird das Freigabesignal
F1 nicht erzeugt und der Zugriff auf den Anwenderspeicher 15 nicht freigegeben.
[0020] Die Aktivierung eines Speicherbereichs als Speicherplatz für einen ersten Code erfolgt
unter Anwendung des zweiten Codes durch Schreiben eines oder mehrerer Bits im Kontrollspeicher
13. Im vorliegenden Beispiel handelt es sich um das Kontrollbit B2. Mit der Aktivierung
als Codewort ist eine Sperrung des Auslesens, der Freigabe für Vergleichsoperationen
und ein Schutz gegen Veränderung durch Schreiben oder Löschen verknüpt. Das Sperren
eines gültigen ersten Codes ist ohne Anwendung des zweiten Codes möglich. Im Beispiel
nimmt das Kontrollbit B1 dazu den log.0 Zustand an.
[0021] Im Falle eines Speichers 1 vom E²PROM-Typ kann die Deaktivierung auch unmittelbar
durch Löschen des Kontrollbits B2 im Kontrollspeicher 13, gemeinsam mit dem ungültig
gewordenen ersten Codewort erfolgen. In diesem Fall muß das Löschen ohne Anwenden
des zweiten Codes möglich sein, während bei einer Sperrung durch das Kontrollbit
B1 auch das Löschen von der Anwendung des zweiten Codes abhängig gemacht werden kann.
[0022] Ein mit einem ersten Code beschriebener Kontrollspeicher 13 wird nur gemeinsam mit
dem dazugehörenden, ungültig gewordenen ersten Code gelöscht. Auf diese Weise wird
verhindert, daß durch eine unberechtigte Deaktivierung vorprogrammierter erster
Codeworte diese lesbar gemacht werden könnten.
[0023] Das Schreiben des Kontrollspeichers 13, insbesondere des Kontrollbits B2 zur Umwandlung
eines Anwenderspeichers 11 in einen ersten Codespeicher 16 setzt die Aktivierung eines
zweiten Freigabesignals F2 voraus. Nach einem positiven Vergleich eines extern eingegebenen
Datenwortes mit dem zweiten Codewort aus dem zweiten Codespeicher 14 im Komparator
4 wird ein zweites Freigabe Flip-Flop 7 gesetzt, wenn der zweite Codebereich 14 über
seine Adresse T2 aktiviert ist.
[0024] Die beiden Freigabe Flip-Flops 6, 7 werden beim Einschalten der Anordnung über ein
Rücksetzsignal POR zurückgesetzt.
[0025] Abschließend seien die wesentlichen Merkmale des Ausführungsbeispiels noch einmal
aufgeführt. Abhängig vom Programmierzustand des Kontrollspeichers 13 ist der Hauptspeicher
11 entweder ein Anwenderspeicher 15 oder ein erster Codebereich 16. Im ersten Fall
ist das Kontrollbit B2 = 1. Im zweiten Fall ist das Kontrollbit B2 = 0 durch Schreiben
mit Hilfe des Codes im zweiten Codebereich 14. Es gibt deaktivierte erste Codes, die
durch das Kontrollbit B1 = 0 gekennzeichnet sind, und die erst durch Löschen wieder
in einen Anwenderbereich zurückgewandelt werden. Eine durch den ersten Code erlangte
Speicherfreigabe bezieht sich stets auf den Teil des Hauptspeichers, der aufgrund
des Kontrollbits B1 = 1 noch als Anwenderbereich wirkt. Für den ersten Codebereich
16 (Kontrollbit B2 = 0) gilt, daß ein Auslesen oder Ändern - mit Ausnahme eines vollständigen
Löschens gemeinsam mit dem Kontrollbit B2 - ohne den zweiten Code nicht möglich ist.
1. Verfahren zum Kontrollieren eines Speicherzugriffs auf einen Anwender- und einen
ersten Codebereich (15, 16) eines Hauptspeichers (11) einer Chipkarte, wobei eine
interne Freigabeprodezur mit einem Datenvergleich eines ersten Codes aus dem ersten
Codebereich (16) und eines Datenwortes aus einem Terminal durchgeführt wird,
dadurch gekennzeichnet,
daß die Adressen (A) des Hauptspeichers (11) und eines Kontrollspeichers (13) fest
miteinander gekoppelt werden,
daß mit jeweils einem Kontrollbit (B2) im Kontrollspeicher (13) mehrere Speicherplätze
des Hauptspeichers (11) als erster Codebereich (16) markiert werden,
daß jeweils mit einem weiteren Kontrollbit (B1) im Kontrollspeicher (13) ein im zugeordneten
Speicherplatz des ersten Codebereichs (16) abgelegter erster Code als aktiviert oder
deaktiviert markiert wird,
daß bei einer Freigabeprozedur nur dann ein Freigabesignal (F1) erzeugt wird, wenn
ein Speicherplatz mit einem aktivierten, ersten Code adressiert wird und wenn Übereinstimmung
mit dem vom Terminal eingegebenen Datenwort herrscht,
und daß das erste Freigabesignal (F1) nicht erzeugt wird, wenn ein deaktiviertes Codewort
adressiert wird und/oder wenn der betreffende erste Code nicht mit dem Datenwort übereinstimmt.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß ein zweites Freigabesignal (F2) nur dann erzeugt wird, wenn ein in einem zweiten
Codebereich (14) abgelegter zweiter Code adressiert ist, und wenn Übereinstimmung
des zweiten Codes mit einem extern eingegebenen Datenwort gegeben ist, und daß erst
nach Erzeugung des zweiten Freigabesingals (F2) eine Programmierung des Kontrollspeichers
(13) für eine - zumindest teilweise - Umwandlung des Anwenderbereichs (15) in einen
ersten Codebereich (16) durchgeführt werden kann.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß aktivierte erste Codedaten ohne Anwendung der zweiten Codedaten deaktiviert,
gesperrt oder gelöscht werden.
4. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß zur Deaktivierung von ersten Codedaten wenigstens ein zweites Bit (B1) in den
Kontrollspeicher (13) geschrieben wird.
5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß eine adressenmäßig gekoppelte Speicherstelle im ersten Codebereich (16) und
im Kontrollspeicher (13) zusammen gelöscht werden.
6. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß zur Reaktivierung einer Speicherstelle des ersten Codebereichs (16) als Anwenderbereich
(15) die im Kontrollspeicher (13) geschriebenen Bits gemeinsam mit den ungültig gewordenen
ersten Codedaten gelöscht werden.
7. Anordnung zur Durchführung des Verfahrens nach Anspruch 1, gekennzeichnet durch einen ersten Codebereich (16) in der Speicheranordnung (1) mit mehreren Speicherplätzen
zur Aufnahme mehrerer erster Codedaten, durch einen Kontrollspeicher (13), dessen
Speicherplätze adreßmäßig mit den Speicherplätzen des ersten Codebereichs (16) gekoppelt
sind, und durch eine Freigabelogik (5), an der ausgangsseitig ein Freigabesignal
(F1) zumindest nur dann abgreifbar ist, wenn durch den Inhalt des Kontrollspeichers
(13) die im zugehörigen Codebereich (16) enthaltenen Codedaten als "aktiviert" gekennzeichnet
sind, und wenn der Vergleich zwischen den ersten Codedaten und einem extern angegebenen
Datenwort erfolgreich ist.
8. Anordnung nach Anspruch 7, gekennzeichnet durch einen adreßmäßig von den übrigen Speicherbereichen unabhängigen zweiten Codebereich
(14) zur Aufnahme von zweiten Codedaten, und durch eine Freigabelogik (5), an der
ausgangsseitig ein weiteres Freigabesignal (F2) zum Programmierzugriff auf den Kontrollspeicher
(13) nur nach einem erfolgreichen Datenvergleich zwischen den zweiten Codedaten und
einem extern eingegebenen Datenwort abgreifbar ist.