DE102006058511B4 - Method for receiving messages by means of a portable data carrier and portable data carrier - Google Patents
Method for receiving messages by means of a portable data carrier and portable data carrier Download PDFInfo
- Publication number
- DE102006058511B4 DE102006058511B4 DE102006058511.9A DE102006058511A DE102006058511B4 DE 102006058511 B4 DE102006058511 B4 DE 102006058511B4 DE 102006058511 A DE102006058511 A DE 102006058511A DE 102006058511 B4 DE102006058511 B4 DE 102006058511B4
- Authority
- DE
- Germany
- Prior art keywords
- buffer
- partial messages
- data carrier
- disk
- volatile memory
- 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 - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
- Information Transfer Systems (AREA)
Abstract
Verfahren zum Empfangen einer Nachricht durch einen portablen Datenträger (1) mit einem nicht-volatilen Speicher (5) und einem asynchronen Eingangspuffer (18), der sich kontinuierlich mit Teilnachrichten füllt, gekennzeichnet durch die Schritte:- -Übertragen (33, 34) von in dem Eingangspuffer (18) vorliegenden Teilnachrichten in einen Zwischenpuffer (16) des Datenträgers (1); und- Speichern (40, 41) von in dem Zwischenpuffer (16) vorliegenden Teilnachrichten in einem nicht-volatilen Speicher (5) des Datenträgers (1) derart, dass die vollständige Nachricht aus den Teilnachrichten zusammengefügt wird; wobei die Schritte des Übertragens (33, 34) und des Speicherns (40, 41) derart synchronisiert werden, dass Teilnachrichten aus dem Zwischenpuffer (16) in dem nicht-volatilen Speicher (5) gespeichert werden, solange der Eingangspuffer (18) einen vorgegebenen Füllstand nicht überschreitet.Method for receiving a message by a portable data carrier (1) with a non-volatile memory (5) and an asynchronous input buffer (18) which is continuously filled with partial messages, characterized by the steps: - -transmitting (33, 34) of partial messages present in the input buffer (18) in an intermediate buffer (16) of the data carrier (1); and- storing (40, 41) partial messages present in the intermediate buffer (16) in a non-volatile memory (5) of the data carrier (1) in such a way that the complete message is combined from the partial messages; wherein the steps of transmitting (33, 34) and of storing (40, 41) are synchronized in such a way that partial messages from the intermediate buffer (16) are stored in the non-volatile memory (5) as long as the input buffer (18) has a predetermined value Level does not exceed.
Description
Die vorliegende Erfindung betrifft ein Verfahren zum Empfangen von Nachrichten durch einen portablen Datenträger sowie einen derartigen Datenträger, insbesondere eine Chipkarte, eine sichere Multimediakarte, ein USB-Speichermedium, eine Mobilfunkkarte oder dergleichen.The present invention relates to a method for receiving messages by a portable data carrier and to such a data carrier, in particular a chip card, a secure multimedia card, a USB storage medium, a cellular phone card or the like.
Im Bereich der Datenkommunikation zwischen portablen Datenträgern und entsprechenden Leise-/Schreibgeräten oder Terminals ist aufgrund neuer Anwendungen und Anforderungen der Bedarf entstanden, Nachrichten zu empfangen und zu senden, deren Länge die üblichen von portablen Datenträgern verarbeitbaren Nachrichtenlängen überschreitet.In the field of data communication between portable data carriers and corresponding quiet / writing devices or terminals, new applications and requirements have created the need to receive and send messages whose length exceeds the usual message lengths that can be processed by portable data carriers.
Es sind verschiedene Möglichkeiten bekannt, das Empfangen von überlangen Nachrichten durch einen portablen Datenträger zu ermöglichen. Einerseits ist es möglich, die verwendeten Empfangs-/Sendepuffer zu vergrößern, was jedoch zu erhöhten Kosten führt, da Empfangspuffer üblicherweise als teure RAM-Speicher realisiert werden. Ebenso ist es möglich, zu empfangende überlange Nachrichten bereits vor dem Senden durch den Sender so aufzuspalten, dass sie von dem Datenträger schrittweise empfangen und verarbeitet werden können („Off-Card Splitting“). Dies hat jedoch den Nachteil, dass einerseits vergleichsweise komplexe Übertragungsprotokolle eingesetzt werden müssen und andererseits jedes Terminal, das mit derartigen portablen Datenträgern kommunizieren soll, umgerüstet werden muss, um es an die eingeschränkten Möglichkeiten der Datenträger anzupassen.Various possibilities are known for making it possible to receive excessively long messages using a portable data carrier. On the one hand, it is possible to enlarge the reception / transmission buffers used, which, however, leads to increased costs, since reception buffers are usually implemented as expensive RAM memories. It is also possible to split up excessively long messages to be received before they are sent by the sender so that they can be received and processed by the data carrier step by step (“off-card splitting”). However, this has the disadvantage that, on the one hand, comparatively complex transmission protocols have to be used and, on the other hand, each terminal that is to communicate with such portable data carriers has to be converted in order to adapt it to the limited possibilities of the data carriers.
US 2005 / 0289291 A1 beschreibt eine Chipkarte, die in Kommunikation mit einem externen Gerät steht, wobei ein Prozess zum Schreiben von Daten in einen nichtflüchtigen Speicher der Chipkarte entsprechend eines Befehls des externen Geräts ausgeführt wird.US 2005/0289291 A1 describes a chip card which is in communication with an external device, a process for writing data in a non-volatile memory of the chip card being carried out in accordance with a command from the external device.
Allgemein besteht bei derartigen Lösungen häufig das zusätzliche Problem, dass beim sequentiellen Empfang von Teilnachrichten einer Nachricht ein Performanceverlust zu erwarten ist, da der Prozessor des Datenträgers den sequentiellen Dateneingang koordinieren muss und währenddessen keine anderen Aufgaben übernehmen kann. Deshalb ist es bei der digitalen Datenübertragung wünschenswert, die Aufnahme von Nachrichtenblöcken eines eingehenden Datenstroms von der Geschwindigkeit des Prozessors des empfangenden Datenträgers und von dessen Taktrate abzukoppeln, so dass der sendende Kommunikationspartner des Datenträgers die Transferrate zumindest in gewissem Umfang vorgeben kann. Hierzu werden häufig separate, asynchrone Eingangspuffer, wie z. B. UART-Bausteine („Universal Asynchronous Receiver/Transmitter“) eingesetzt, die von dem Datenträger zu empfangende Teilnachrichten unmittelbar aufnehmen können. Die Funktion derartiger UART-Bausteine ist somit unabhängig von der Prozessorgeschwindigkeit und benötigt für die Kommunikation auf Byte-Ebene keine Softwareunterstützung. Den Empfang überlanger Nachrichten unterstützt ein asynchroner Eingangspuffer jedoch nicht, da er bei Chipkarten in der Regel lediglich Datenmengen der Größe eines Bytes fasst.In general, with such solutions there is often the additional problem that a loss of performance is to be expected when partial messages of a message are received sequentially, since the processor of the data carrier has to coordinate the sequential data input and cannot take on any other tasks during this time. It is therefore desirable in digital data transmission to decouple the recording of message blocks of an incoming data stream from the speed of the processor of the receiving data carrier and its clock rate, so that the sending communication partner of the data carrier can specify the transfer rate at least to a certain extent. Separate, asynchronous input buffers, such as B. UART modules ("Universal Asynchronous Receiver / Transmitter") are used, which can directly receive partial messages from the data carrier. The function of such UART modules is therefore independent of the processor speed and does not require any software support for communication at the byte level. However, an asynchronous input buffer does not support the reception of excessively long messages, since with chip cards it usually only holds data volumes the size of one byte.
Es-ist deshalb die Aufgabe der vorliegenden Erfindung, ein effizientes Empfangen von überlangen Nachrichten durch einen Datenträger zu ermöglichen.It is therefore the object of the present invention to enable an efficient reception of excessively long messages by a data carrier.
Diese Aufgabe wird erfindungsgemäß durch ein Verfahren und einen portablen Datenträger mit den Merkmalen der unabhängigen Ansprüchen gelöst. In davon abhängigen Ansprüchen sind vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung angegeben.According to the invention, this object is achieved by a method and a portable data carrier with the features of the independent claims solved. In the dependent claims, advantageous configurations and developments of the invention are given.
Ein erfindungsgemäßer, mit einem Prozessor ausgestatteter portabler Datenträger umfasst einen nicht-volatilen Speicher und einen asynchronen Eingangspuffer, der kontinuierlich und sequentiell (z.B. bit- oder byteweise) Teilnachrichten einer zu empfangenden überlangen Nachricht unabhängig von dem Prozessor des Datenträgers empfängt. In dem asynchronen Eingangspuffer vorliegende Teilnachrichten werden zunächst in einen Zwischenpuffer des Datenträgers übertragen, der die überlange Nachricht unter Umständen auch nicht vollständig aufnehmen kann, und von dort in dem ausreichend großen nicht-volatilen Speicher des Datenträgers gespeichert. Beim Speichern wird die überlange Nachricht im nicht-volatilen Speicher aus ihren Teilnachrichten zusammengefügt.A portable data carrier according to the invention, equipped with a processor, comprises a non-volatile memory and an asynchronous input buffer which continuously and sequentially (e.g. bit or byte) receives partial messages of an excessively long message to be received independently of the processor of the data carrier. Partial messages present in the asynchronous input buffer are first transferred to an intermediate buffer of the data carrier, which may not be able to completely accommodate the excessively long message, and from there are stored in the sufficiently large non-volatile memory of the data carrier. When saving, the excessively long message is combined from its partial messages in the non-volatile memory.
Hierbei werden die Schritte des Übertragens von Teilnachrichten von dem Eingangspuffer in den Zwischenpuffer und des Speicherns von im Zwischenpuffer vorliegenden Teilnachrichten in den nicht-volatilen Speicher derart abgestimmt und synchronisiert durchgeführt, dass in dem Zwischenpuffer vorliegende Teilnachrichten in dem nicht-volatilen Speicher nur gespeichert werden können, solange der Eingangspuffer einen vorgegebenen Füllstand nicht überschreitet. Wenn der vorgegebene Füllstand des sich kontinuierlich füllenden Eingangspuffers erreicht ist, werden die darin vorliegenden Teilnachrichten prioritär in den Zwischenpuffer übertragen.The steps of transferring partial messages from the input buffer to the intermediate buffer and storing partial messages in the intermediate buffer in the non-volatile memory are coordinated and synchronized in such a way that partial messages present in the intermediate buffer can only be stored in the non-volatile memory as long as the input buffer does not exceed a specified level. When the specified filling level of the continuously filling input buffer has been reached, the partial messages contained therein are given priority in the intermediate buffer.
Die Schritte des Übertragens und Speicherns werden ferner derart synchronisiert, dass Teilnachrichten aus dem Eingangspuffer in den Zwischenpuffer übertragen werden können, wenn der Eingangspuffer einen vorgegebenen Füllstand überschreitet, d.h., dass im Zwischenpuffer immer ausreichend freier Speicherplatz vorhanden ist, um im Eingangspuffer vorliegende Teilnachrichten ohne Pufferüberlauf oder Datenverlust in dem Zwischenpuffer zu übertragen.The steps of transferring and storing are also synchronized in such a way that partial messages can be transferred from the input buffer to the intermediate buffer when the input buffer exceeds a specified level, i.e. that there is always enough free storage space in the intermediate buffer to store partial messages in the input buffer without a buffer overflow or to transmit data loss in the intermediate buffer.
Der Vorteil der vorliegenden Erfindung besteht darin, dass durch das oben beschriebene synchronisierte Füllen und Leeren des in Reihe geschalteten asynchronen Eingangspuffers, Zwischenpuffers und für überlange Nachrichten ausreichend großen nicht-volatilen Speichers weder eine Vergrößerung des an sich nicht ausreichend großen Eingangs- oder Zwischenpuffers noch ein Aufspalten überlanger Nachrichten durch den Sender erforderlich ist. Der Sender kann seine Nachricht vielmehr blockweise sequentiell und ohne vorherige Aufspaltung an den Datenträger senden, wo sie infolge der synchronisierten Weiterbehandlung von im Eingangspuffer eintreffenden Teilnachrichten kontinuierlich bit- oder byteweise von dem Eingangspuffer ohne Datenverlust aufgenommen werden kann. Hierbei können die bewährten Kommunikationsprotokolle (z.B. T=0 und T=1 im Chipkartenbereich) unverändert eingesetzt werden. Darüber hinaus hat der Prozessor keine Totzeiten, da er weiterverarbeitende Prozesse ausführen kann, während sich der Eingangspuffer mit neuen Teilnachrichten füllt.The advantage of the present invention is that the above-described synchronized filling and emptying of the series-connected asynchronous input buffer, intermediate buffer and non-volatile memory that is large enough for excessively long messages neither increases the size of the input or intermediate buffer which is not sufficiently large Splitting of excessively long messages by the sender is required. Rather, the sender can send his message in blocks sequentially and without prior splitting to the data carrier, where it can be continuously received by the input buffer bit by bit or byte without data loss due to the synchronized further processing of partial messages arriving in the input buffer. The proven communication protocols (e.g. T = 0 and T = 1 in the chip card area) can be used unchanged. In addition, the processor has no dead times, since it can carry out further processing processes while the input buffer is being filled with new partial messages.
Vorzugsweise ist der asynchrone Eingangspuffer ein UART-Baustein („Universal Asynchronous Receiver/Transmitter“), welcher nicht an die Geschwindigkeit oder Taktung des Prozessors des Datenträgers gebunden ist, da der Nachrichtenempfang auf Hardware-Ebene realisiert wird. Ein derartiger UART-Baustein besitzt eine relativ geringe Datenkapazität von in der Regel lediglich einem Byte.The asynchronous input buffer is preferably a UART module (“Universal Asynchronous Receiver / Transmitter”) which is not tied to the speed or clock rate of the processor of the data carrier, since the message reception is implemented on the hardware level. Such a UART module has a relatively small data capacity of usually only one byte.
Der Zwischenpuffer ist vorzugsweise ein in einem RAM-Speicher des Datenträgers eingerichteter Pufferbereich, dessen Größe die des Eingangspuffers übersteigt. Vorzugsweise wird der Zwischenpuffer als Ringspeicher realisiert, der durch koordinierte Schreib- und Leseprozesse im FIFO-Prinzip („first in first out“) kontinuierlich mit Daten gefüllt und geleert werden kann.The intermediate buffer is preferably a buffer area set up in a RAM memory of the data carrier, the size of which exceeds that of the input buffer. The intermediate buffer is preferably implemented as a ring memory that can be continuously filled with data and emptied using coordinated writing and reading processes based on the FIFO principle (“first in first out”).
Dadurch kann der schnelle und gegenüber dem Eingangspuffer größere RAM-Zwischenpuffer eine überbrückende Funktion zwischen dem kleinen, asynchronen Eingangspuffer und dem großen, verhältnismäßig langsamen nicht-volatilen Speicher übernehmen, wodurch eine koordinierte Aufnahme von Teilnachrichten ermöglicht wird. Eine direkte Hintereinanderschaltung des Eingangspuffers und des nicht-volatilen Speichers, ohne den überbrückenden Zwischenpuffer, könnte demgegenüber aufgrund der Diskrepanz zwischen der Transferrate eingehender Teilnachrichten im Eingangspuffer und der Speichergeschwindigkeit des nicht-volatilen Speichers zu Pufferüberläufen und Datenverlusten führen. Zudem kann so die Schreibgeschwindigkeit optimiert werden, da der nicht-volatile Speicher seitenweise beschrieben wird und die Größe des Eingangspuffer in der Regel kleiner ist als die Seitengröße des nicht-volatilen Speichers.As a result, the fast RAM intermediate buffer, which is larger than the input buffer, can take on a bridging function between the small, asynchronous input buffer and the large, relatively slow, non-volatile memory, which enables a coordinated recording of partial messages. A direct series connection of the input buffer and the non-volatile memory without the bridging intermediate buffer, on the other hand, could lead to buffer overflows and data loss due to the discrepancy between the transfer rate of incoming partial messages in the input buffer and the storage speed of the non-volatile memory. In addition, the writing speed can be optimized in this way, since the non-volatile memory is written to page by page and the size of the input buffer is usually smaller than the page size of the non-volatile memory.
Ein erfindungsgemäßer portabler Datenträger umfasst ferner eine von dem Prozessor ausführbare Eingangssteuerung, die so eingerichtet ist, dass sie durch alternierendes Übertragen von in dem Eingangspuffer vorliegenden Teilnachrichten in den Zwischenpuffer und Speichern von in dem Zwischenpuffer vorliegenden Teilnachrichten in dem nicht-volatilen Speicher einen Nachrichtenempfang derart synchronisiert, dass der Zwischenpuffer nicht vollständig gefüllt ist, wenn der Eingangspuffer einen vorgegebenen Füllstand überschreitet. Darüber hinaus führt die Eingangssteuerung das Übertragen und Speichern derart alternierend durch, dass andererseits auch der Eingangspuffer nicht vollständig gefüllt ist, wenn noch nicht alle Teilnachrichten der zu empfangenden Nachricht eingetroffen sind. Diese beiden Synchronisationsbedingungen garantieren den reibungslosen Ablauf eines Nachrichtenempfangs von der Aufnahme von Teilnachrichten im Eingangspuffer bis zum Vorliegen der vollständig zusammengefügten Nachricht im nicht-volatilen Speicher.A portable data carrier according to the invention further comprises an input control which can be executed by the processor and which is set up in such a way that it synchronizes message reception by alternately transmitting partial messages in the input buffer to the intermediate buffer and storing partial messages in the intermediate buffer in the non-volatile memory that the intermediate buffer is not completely filled when the input buffer exceeds a specified level. In addition, the input control carries out the transmission and storage alternately in such a way that, on the other hand, also the input buffer is not completely filled if not all partial messages of the message to be received have yet arrived. These two synchronization conditions guarantee the smooth flow of a message reception from the inclusion of partial messages in the input buffer to the presence of the completely combined message in the non-volatile memory.
Die Eingangssteuerung realisiert die beiden Schritte des Kopierens und des Auslesens als separate, konkurrierende Prozesse mittels eines Multitasking/Multithreading-fähigen Betriebssystems des Datenträgers. Das Eintreffen von Teilnachrichten in dem Eingangspuffer und/oder das Überschreiten des vorgegebenen Füllstandes wird von einer Unterbrechungseinrichtung des Datenträgers registriert, die dann ein Unterbrechungssignal („Interrupt“) auslöst. Das Unterbrechungssignal bewirkt, dass der Prozessor den momentan ausgeführten Prozess temporär unterbricht und den Nachrichtenempfang prioritär behandelt.The input control realizes the two steps of copying and reading out as separate, competing processes by means of a multitasking / multithreading-capable operating system of the data carrier. The arrival of partial messages in the input buffer and / or the exceeding of the specified filling level is registered by an interruption device on the data carrier, which then triggers an interruption signal (“interrupt”). The interruption signal has the effect that the processor temporarily interrupts the process currently being carried out and gives priority to the receipt of messages.
Sobald die Unterbrechungseinrichtung ein Unterbrechungssignal auslöst, wird ein die Unterbrechung bearbeitender Unterbrechungsprozess von der Eingangssteuerung zum Übertragen von in dem Eingangspuffer vorliegenden Teilnachrichten in den Zwischenpuffer ausgeführt. Wenn der Unterbrechungsprozess ein vorgegebenes Datenvolumen und/oder sämtliche im Eingangspuffer vorliegende Teilnachrichten in den Zwischenpuffer übertragen hat, beendet er seine Arbeit, bis wieder neue Teilnachrichten in dem Eingangspuffer vorliegen und/ oder ein bestimmter vorgegebener Füllstand des Eingangspuffers erreicht oder überschritten wird. Daraufhin wird von der Eingangssteuerung ein Speicherprozess aktiviert, der in dem Zwischenpuffer vorliegende Teilnachrichten in dem nicht-volatilen Speicher des Datenträgers speichert. Dadurch wird der Zwischenpuffer zumindest teilweise geleert, so dass der Unterbrechungsprozess ihn bei Bedarf wieder füllen kann.As soon as the interruption device triggers an interruption signal, an interruption processing processing the interruption is carried out by the input control for transferring partial messages present in the input buffer to the intermediate buffer. When the interruption process has transferred a specified volume of data and / or all of the partial messages in the input buffer to the intermediate buffer, it ends its work until there are new partial messages in the input buffer and / or a certain predetermined level of the input buffer is reached or exceeded. The input control then activates a storage process which stores partial messages present in the intermediate buffer in the non-volatile memory of the data carrier. As a result, the intermediate buffer is at least partially emptied so that the interruption process can fill it again if necessary.
Die Teilnachrichten werden von dem Speicherprozess derart abspeichert und zusammenfügt, dass, nachdem sämtliche Teilnachrichten einer zu empfangenden überlangen Nachricht eingegangen sind, diese Nachricht vollständig im nicht-volatilen Speicher vorliegt. Dort wird die vollständige Nachricht einer Applikation bereitgestellt, für die die Nachricht bestimmt ist.The partial messages are stored and combined by the storage process in such a way that after all partial messages of an excessively long message to be received have been received, this message is completely in the non-volatile memory. There the complete message is made available to an application for which the message is intended.
Bevor die im nicht-volatilen Speicher zusammengefügte Nachricht einer Applikation bereitgestellt wird, kann sie verifiziert werden, z.B. durch den Speicherprozess. Diese Verifikation kann eine der normalen Verarbeitung der Nachricht vorgeschaltete Prüfung umfassen, beispielsweise die Überprüfung einer Prüfsumme oder das Durchführen einer kryptographischen oder sonstigen sicherheitstechnischen Operation. Die Nachricht kann von dem Speicherprozess vorzugsweise in einem im nicht-volatilen Speicher eingerichteten, ausreichend großen separaten Speicherbereich zusammengefügt werden, der nicht dem endgültigen Speicherort der empfangenen Nachricht entspricht. Dies ist insbesondere dann hilfreich, wenn es sich bei der empfangenen Nachricht um eine Aktualisierungsanweisung von im nicht-volatilen Speicher bereits vorhandenen Daten handelt, die bei einem direkten Überschreiben des endgültigen Speicherorts nicht mehr rekonstruiert werden könnten, wenn z. B. die Verifikation der Nachricht durch Überprüfen einer Prüfsumme fehlschlägt oder die Nachricht infolge eines Übertragungsfehlers unvollständig ist.Before the message, which has been put together in the non-volatile memory, is made available to an application, it can be verified, e.g. by the storage process. This verification can include a check preceding the normal processing of the message, for example checking a checksum or performing a cryptographic or other security-related operation. The message can preferably be put together by the storage process in a sufficiently large separate storage area which is set up in the non-volatile storage and which does not correspond to the final storage location of the received message. This is particularly helpful if the received message is an update instruction for data already present in the non-volatile memory, which could no longer be reconstructed if the final memory location was directly overwritten. B. the verification of the message by checking a checksum fails or the message is incomplete due to a transmission error.
Vorzugsweise werden die in dem Zwischenpuffer vorliegenden Teilnachrichten in Übereinstimmung mit einer Speicherverwaltung des Datenträgers seitenweise in den nicht-volatilen Speicher geschrieben.The partial messages present in the intermediate buffer are preferably written page by page into the non-volatile memory in accordance with a memory management of the data carrier.
Um-die Ausführung des Unterbrechungs- und des Speicherprozesses durch die Eingangssteuerung wirkungsvoll synchronisieren zu können, umfasst der Datenträger ein Multitasking/Multithreading-fähiges Betriebssystem, welches Prozesse/Threads auf dem Prozessor nebenläufig ausführen kann, so dass die Eingangssteuerung eine nebenläufige Ausführung des Unterbrechungsprozesses und des Speicherprozesses einleiten kann. Die Ausführung eines Unterbrechungsprozesses kann dann unterbrochen werden, um die Ausführung eines unterbrochenen Speicherprozesses fortzusetzen, wenn der Unterbrechungsprozess den Eingangspuffer geleert hat. Umgekehrt wird der Speicherprozess unterbrochen, um den Unterbrechungsprozess fortzusetzen, wenn der Eingangspuffer den vorgegebenen Füllstand überschreitet.In order to be able to effectively synchronize the execution of the interruption and storage process by the input control, the data carrier includes a multitasking / multithreading-capable operating system, which can execute processes / threads on the processor concurrently, so that the input control can concurrently execute the interruption process and can initiate the storage process. The execution of an interrupt process can then be interrupted in order to continue the execution of an interrupted storage process when the interrupt process has emptied the input buffer. Conversely, the storage process is interrupted in order to continue the interruption process if the input buffer exceeds the specified level.
Zusätzlich zu dem Unterbrechungsprozess und dem Speicherprozess kann die Steuereinrichtung die Ausführung eines Protokollprozesses einleiten, welcher eine in dem Zwischenpuffer vorliegende Teilnachricht interpretiert, indem eine z. B. für die Ausführung des Speicherprozesses benötigte Information aus den Teilnachrichten des Zwischenspeichers ermittelt wird. Bei einer solchen Information kann es sich insbesondere um eine Längeninformation über die Länge der Nachricht und/oder einer Strukturinformation über die Struktur der Nachricht handeln.In addition to the interruption process and the storage process, the control device can initiate the execution of a protocol process, which interprets a partial message present in the intermediate buffer. B. information required for the execution of the storage process is determined from the partial messages of the buffer. Such information can in particular be length information about the length of the message and / or structure information about the structure of the message.
Der Protokollprozess kann durch Auswertung bestimmter Bytes einer Teilnachricht feststellen, ob die Teilnachricht zu einer überlangen Nachricht gehört, so dass der Speicherprozess zur entsprechenden Behandlung der Teilnachrichten hierüber informiert werden kann. Diese Behandlung kann beispielsweise darin bestehen, die Teilnachricht in dem separaten Speicherbereich des nicht-volatilen Speichers abzulegen oder sie an bereits empfangene Teilnachrichten anzufügen. Ebenso kann die Interpretation in einer reinen Gültigkeitsprüfung der empfangenen Teilnachrichten bestehen, um Datenübertragungsfehler frühzeitig zu erkennen.By evaluating certain bytes of a partial message, the protocol process can determine whether the partial message belongs to an excessively long message, so that the storage process can be informed of this for the appropriate handling of the partial messages. This treatment can consist, for example, in storing the partial message in the separate memory area of the non-volatile memory or appending it to partial messages that have already been received. The interpretation can also consist of a pure validity check of the partial messages received in order to detect data transmission errors at an early stage.
Nach der Interpretation einer im Zwischenpuffer vorliegenden Teilnachricht wird der Protokollprozess von der Eingangssteuerung unterbrochen oder beendet und der Speicherprozess fortgesetzt oder begonnen, wobei der Speicherprozess die von dem Protokollprozess ermittelte Information nutzt.After the interpretation of a partial message present in the intermediate buffer, the protocol process is interrupted or terminated by the input control and the storage process is continued or started, the storage process using the information ascertained by the protocol process.
Bei einem Multitasking/Multithreading-fähigen Betriebssystem wird die Ausführung des Unterbrechungsprozesses einerseits und des Protokollprozesses und/oder des Speicherprozesses andererseits derart synchronisiert, dass die Ausführung des Protokollprozesses und/ oder des Speicherprozesses eingeleitet oder fortgesetzt wird und die Ausführung des Unterbrechungsprozesses beendet oder unterbrochen wird, wenn der Zwischenpuffer infolge der Teilnachrichtenübertragung des Unterbrechungsprozesses einen vorgegebenen Maximalfüllstand überschreitet. Vorzugsweise wird der Speicherprozess gestartet, wenn sich der Eingangspuffer füllt.In a multitasking / multithreading-capable operating system, the execution of the interruption process on the one hand and the log process and / or the storage process on the other hand are synchronized in such a way that the execution of the log process and / or the storage process is initiated or continued and the execution of the interruption process is ended or interrupted, if the intermediate buffer exceeds a specified maximum fill level as a result of the partial message transmission of the interruption process. The storage process is preferably started when the input buffer is filled.
Dementsprechend unterbricht oder beendet die Eingangssteuerung die Ausführung des Interpretationsprozesses und/ oder des Speicherprozesses und setzt die Ausführung des Unterbrechungsprozesses fort oder beginnt sie, wenn der Eingangspuffer infolge des kontinuierlichen Füllens mit weiteren Teilnachrichten einen vorgegebenen Füllstand überschreitet und/ oder wenn der Zwischenpuffer infolge der Arbeit des Speicherprozesses einen vorgegebenen Minimalfüllstand unterschreitet.Correspondingly, the input control interrupts or ends the execution of the interpretation process and / or the storage process and continues the execution of the interruption process or starts it when the input buffer exceeds a specified level as a result of the continuous filling with further partial messages and / or when the intermediate buffer as a result of the work of the Storage process falls below a specified minimum level.
Zur reibungslosen Abwicklung eines Empfangs einer überlangen Nachricht ist es demzufolge notwendig, dass kontinuierlich überprüft wird, ob einerseits in dem Eingangspuffer Teilnachrichten vorliegen und/ oder ein vorgegebener Füllstand überschritten wird und ob andererseits der Zwischenpuffer ausreichend Speicherplatz zur Aufnahme von Teilnachrichten aus dem Eingangspuffer hat oder Speicherplatz geschaffen werden muss.In order to handle the receipt of an excessively long message, it is therefore necessary to continuously check whether, on the one hand, partial messages are present in the input buffer and / or a specified level is exceeded and, on the other hand, whether the intermediate buffer has sufficient storage space to receive partial messages from the input buffer or storage space must be created.
Das Überschreiten eines vorgegebenen Füllstands des Eingangspuffers wird unterbrechungsgesteuert (mittels „Interrupts“) signalisiert, so dass weder die Eingangssteuerung noch das Betriebssystem des Datenträgers ein Vorliegen von Teilnachrichten in dem Eingangspuffer überprüfen müssen. Der Zwischenpuffer wird demgegenüber vorzugsweise von einer Ereignissteuerung ereignisgesteuert überwacht, wobei ein Unterschreiten eines Minimalfüllstands oder ein Überschreiten eines Maximalfüllstands mittels eines Füllstandssignals (eines „Events“) der Eingangssteuerung mitgeteilt wird.Exceeding a specified fill level of the input buffer is signaled interrupt-controlled (by means of "interrupts") so that neither the input control nor the operating system of the data carrier have to check whether partial messages are present in the input buffer. In contrast, the intermediate buffer is preferably monitored by an event control in an event-controlled manner, with the input control being notified of a level below a minimum level or exceeding a maximum level by means of a level signal (an “event”).
Die Behandlung einer zu empfangenden Nachricht wird bei Eintreffen der ersten Teilnachrichten prinzipiell durch eine Unterbrechung und Aktivierung des entsprechenden Unterbrechungsprozesses durch die Eingangssteuerung eingeleitet. Die im weiteren von der Eingangssteuerung aktivierten und/ oder fortgesetzten Prozesse werden aufgrund ihrer unterschiedlichen Wichtigkeit mit verschiedenen Ausführungsprioritäten belegt. Hierbei ist es sinnvoll, den Unterbrechungsprozess mit der im Vergleich zu den anderen Prozessen höchsten Ausführungspriorität auszustatten, da dieser bei Eintreffen von Teilnachrichten in dem kleinen Eingangspuffer sofort reagieren muss.The handling of a message to be received is initiated when the first partial messages arrive by interrupting and activating the corresponding interruption process by the input control. The processes that are subsequently activated and / or continued by the input control are assigned different execution priorities due to their different importance. It makes sense here to give the interruption process the highest execution priority compared to the other processes, since it has to react immediately to the arrival of partial messages in the small input buffer.
Der nach Beendigung/Unterbrechung des Unterbrechungsprozesses zu aktivierende Protokollprozess wird mit einer mittleren Ausführungspriorität und der nach Beendigung/Unterbrechung des Protokollprozesses zu aktivierende Speicherprozess mit einer niedrigen Ausführungspriorität gestartet/fortgesetzt. Insgesamt sorgt jedoch des Betriebssystem des Datenträgers dafür, dass alle anderen von dem Prozessor auszuführenden Prozesse bei Bearbeitung eines Eingangs von Teilnachrichten im Verhältnis zu den drei oben genannten Prozessen jeweils niedrigere Ausführungsprioritäten haben.The protocol process to be activated after the termination / interruption of the interruption process is started / continued with a medium execution priority and the storage process to be activated after the termination / interruption of the protocol process is started / continued with a low execution priority. Overall, however, the operating system of the data carrier ensures that all other processes to be carried out by the processor when processing an incoming partial message have lower execution priorities in relation to the three processes mentioned above.
Die Eingangssteuerung kann sowohl als Teil des Betriebssystems oder des privilegierten Betriebssystemkerns als auch unabhängig vom Betriebssystem des Datenträgers realisiert sein. Neben der Verwendung von Prozessen, die von der Eingangssteuerung aktiviert werden, ist es auch möglich, die Eingangssteuerung ihrerseits als Ein-/Ausgabe-Prozess vorzusehen, in dessen Rahmen jeweils ein Unterbrechungs-Thread, ein Protokoll-Thread und ein Speicher-Thread zur Durchführung der oben geschilderten Aufgaben synchronisiert aktiviert werden. Der Ein-/Ausgabeprozess kann dann als von dem Betriebssystemkern zu aktivierender Prozess ausgestaltet werden.The input control can be implemented both as part of the operating system or the privileged operating system kernel and independently of the operating system of the data carrier. In addition to the use of processes that are activated by the input control, it is also possible to provide the input control itself as an input / output process, within the framework of which an interrupt thread, a protocol thread and a memory thread are implemented the tasks described above can be activated synchronously. The input / output process can then be designed as a process to be activated by the operating system kernel.
Als erfindungsgemäßer Datenträger ist insbesondere eine Chipkarte, eine sichere Multimediakarte, ein USB-Speichermedium, eine Mobilfunkkarte oder dergleichen vorgesehen.In particular, a chip card, a secure multimedia card, a USB storage medium, a cellular phone card or the like is provided as the data carrier according to the invention.
Obwohl die obige Beschreibung nur den Datenempfang erläutert, ist das erfinderische Prinzip uneingeschränkt auch auf das Senden von Daten anwendbar, indem der Sekundärpuffer als virtueller Ausgangspuffer eingerichtet wird.Although the above description only explains the reception of data, the inventive principle can also be applied without restriction to the transmission of data in that the secondary buffer is set up as a virtual output buffer.
Weitere Merkmale und Vorteile der Erfindung ergeben sich aus der folgenden Beschreibung verschiedener erfindungsgemäßer Ausführungsbeispiele und Ausführungsalternativen im Zusammenhang mit den begleitenden Zeichnungen. Darin zeigen:
-
1 eine zum effizienten Empfang überlanger Nachrichten mit einem RAM-Ringpuffer ausgestattete Chipkarte; -
2 ein Verfahren zum Nachrichtenempfang durch die in1 dargestellte Chipkarte; -
3 eine zum effizienten Nachrichtenempfang mit einem Sekundärpuffer als virtuellem Eingangspuffer ausgestattete Chipkarte; und -
4 ein Verfahren zum Nachrichtenempfang durch die in3 gezeigte Chipkarte.
-
1 a chip card equipped with a RAM ring buffer for the efficient reception of excessively long messages; -
2 a method for receiving messages by the in1 chip card shown; -
3 a chip card equipped with a secondary buffer as a virtual input buffer for efficient message reception; and -
4th a method for receiving messages by the in3 shown chip card.
Die folgende Figurenbeschreibung erläutert ein Verfahren und eine Vorrichtung zum Empfangen von überlangen Nachrichten durch einen portablen Datenträger, welcher in den Figuren durch eine Chipkarte mit Prozessor illustriert wird. Das Verfahren besteht aus zwei, einzeln oder kombiniert einsetzbaren Teilverfahren, die jeweils in den
Die in den
Im Chipkartenbereich haben sich zur Datenübertragung und Kommunikation mit externen Lesegeräten, Terminals oder sonstigen Kommunikationspartnern die Übertragungsprotokolle T=0 und T=1 etabliert, welche standardisierte blockorientierte Halbduplex-Protokolle für Mobilfunkkarten und Chipkarten repräsentieren. Hierbei wird das byteorientierte T=0 Protokoll vorwiegend für GSM-Mobilfunkchipkarten verwendet, während das T=1 Protokoll für sonstige Chipkarten und Chipkarten-ähnliche portable Datenträger eingesetzt wird.In the chip card area, the transmission protocols T = 0 and T = 1 have become established for data transmission and communication with external readers, terminals or other communication partners, which represent standardized block-oriented half-duplex protocols for mobile radio cards and chip cards. The byte-oriented T = 0 protocol is mainly used for GSM mobile radio smart cards, while the T = 1 protocol is used for other smart cards and portable data carriers similar to smart cards.
Bei einem Chipkarten-Betriebssystem, welches ein Multitasking (oder Multithreading) unterstützt, werden mehrere geschützte Pozesse („Tasks“) oder Prozessfäden („Threads“) durch häufigen Prozess- oder Thread-Wechsel scheinbar gleichzeitig, nebenläufig ausgeführt. Ein Prozess umfasst in der Regel einen Adressraum sowie zumindest einen Prozessfaden. In der nachfolgenden Beschreibung wird für die vom Prozessor der Chipkarte nebenläufig abzuarbeitenden Aufgaben im Rahmen der Behandlung eines Nachrichteneingangs vorwiegend von Prozessen gesprochen, die von dem Betriebssystemkern aktiviert werden. Die gleichen Aufgaben können auch durch Threads erledigt werden, sofern es sich bei dem Betriebssystem um ein Multithreading-fähiges Betriebssystem handelt. Der Verwaltungsaufwand für Threads ist üblicherweise geringer als der für Prozesse, da bei einem Thread-Wechsel kein vollständiger Kontextwechsel (Zustände, Registerinhalte, etc.) vorgenommen werden muss, weil nebenläufige Threads Teilaufgaben eines Prozesses wahrnehmen und einen gemeinsamen Teil des Prozesskontexts verwenden. Eine Kommunikation zwischen Tasks ist mit Hilfe einer Interprozesskommunikation (IPC) möglich. Threads, die demselben Prozess zugeordnet sind, können sich mit Hilfe der IPC synchronisieren. Sämtliche in dieser Beschreibung erläuterten Funktionalitäten und Aufgaben sind gleichermaßen als Prozesse oder als Threads realisierbar, wobei, abgesehen von den geschilderten verwaltungstechnischen Unterschieden, auch die Vorteile und Nachteile von Prozessen und Threads im Hinblick auf die vorliegende Erfindung vergleichbar sind.With a chip card operating system that supports multitasking (or multithreading), several protected processes (“tasks”) or process threads (“threads”) are apparently carried out concurrently through frequent process or thread changes. A process usually comprises an address space and at least one process thread. In the following description, processes that are activated by the operating system kernel are primarily used for the tasks to be processed concurrently by the processor of the chip card in the context of handling incoming messages. The same tasks can also be performed by threads, provided that the operating system is a multithreaded operating system. The administrative effort for threads is usually less than that for processes, since a complete context change (status, register contents, etc.) does not have to be made when changing threads, because concurrent threads perform partial tasks of a process and use a common part of the process context. Communication between tasks is possible with the help of interprocess communication (IPC). Threads that are assigned to the same process can synchronize with the help of the IPC. All of the functionalities and tasks explained in this description can be implemented equally as processes or as threads, with the advantages and disadvantages of processes and threads with regard to the present invention also being comparable, apart from the administrative differences described.
Desweiteren umfasst die Chipkarte
Das Ausführen von Applikationen
In den
Die gesamte Nachricht B1 - B8 wird von einem Sender kontinuierlich, bitweise sequentiell über die Kommunikationsschnittstelle
Im Zusammenhang mit den
- - Zunächst nimmt der UART-
Eingangspuffer 18 einige Bits einer eingehenden Nachricht als Teilnachrichten auf (30 ). Die eingehende Teilnachricht ist insbesondere eine Kommando-APDU („Application Protocol Data Unit“) als grundlegende Kommunikationseinheit zur Datenübertragung von einem Terminal an eine Chipkarte. - - Bei Vorliegen einer Teilnachricht in
dem Eingangspuffer 18 und/ oder bei Überschreiten eines vorgegebenen Füllstands des Eingangspuffers18 wird eine Unterbrechung (Interrupt) unabhängigvon dem Betriebssystemkern 24 ausgelöst, wobei eine Unterbrechungstabelle die bei dem vorliegenden Unterbrechungstyp „DATA AVAILABLE“ (31 ) auszuführende Unterbrechungsbehandlungsroutine (ISR) bestimmt. - - Aufgrund der ausgelösten Unterbrechung (
31 ) unterbricht der Betriebssystemkern24 die Ausführung des momentanvon dem Prozessor 2 ausgeführten Anwendungsprozesses, um den Nachrichteneingang prioritär zu bearbeiten. Durch die Unterbrechung DATA AVAILABLE wird der Unterbrechungsprozess20 von dem Betriebssystemkern 24 mit höchster Ausführungspriorität aktiviert (32 ), so dass Teilnachrichten ausdem Eingangspuffer 18 inden Zwischenpuffer 16 übertragen werden, sobald der Eingangspuffer16 einen vorgegebenen Füllstand überschreitet.
- -
Der Unterbrechungsprozess 20 liest eine vorgegebene Anzahl oder alle Bits aus dem UART-Eingangspuffer 18 aus (33 ) und schreibt sie in den RAM-Ringpuffer16 (34 ). Durch die Synchronisation der Prozesse20 ,21 und 22 wird dafür gesorgt, dass der Ringpuffer16 niemals gänzlich gefüllt ist, wenn im UART-Eingangspuffer 18 auszulesende Daten vorliegen, da andernfalls ein Datenverlust auftreten kann. - -
Der Unterbrechungsprozess 20 wird nach Erledigung seiner Aufgabe wieder inaktiv und wartet auf die nächste Aktivierung durch eine Unterbrechung aufgrundvon im Eingangspuffer 18 vorliegenden weiteren Teilnachrichten. Ebenso gut kann der Unterbrechungsprozess20 auch wieder aktiviert werden, wenn der Zwischenpuffer16 vollständig geleert ist, selbst wenn der UART-Eingangspuffer 18 noch nicht den zum Auslösen einer Unterbrechung erforderlichen Füllstand erreicht hat. Die Signalisierung, dass der Ringpuffer16 vollständig geleert ist, kann durch einen Event ausgelöst werden oderdem Unterbrechungsprozess 20 durch Interprozesskommunikation (IPC)von dem Speicherprozess 22 ,der den Ringpuffer 16 ausliest, mitgeteilt werden. - - Sobald der hochprioritäre Unterbrechungsprozess
16 inaktiv wird, wird der Protokollprozess21 mit mittlerer Prioritätvon dem Betriebssystemkern 24 bzw.der Eingangssteuerung 10 aktiviert (35 ). - -
Der Protokollprozess 21 , der unter Umständen bereits unmittelbar nach kontaktieren der Chipkarte mit dem Sendeterminal im Rahmen einer Initialisierungsphase der Chipkarte aktiviert wurde (der Protokollprozess sendet bei der Initialisierung eine ATR-Nachricht („Answer to Reset“) an das Terminal mit diversen Chipkarten- und Übertragungsparametern, z.B. auch der Größe desRingpuffers 16 , um eintreffende übergroße Nachrichten erkennen zu können), wird nundurch den Betriebssystemkern 24 aktiviert oder fortgesetzt, falls er temporär inaktiv ist. Optional ist es auch möglich, dass der Protokollprozess21 prüft, ob Teilnachrichten für ihnim Zwischenpuffer 16 liegen. Ebenso kann der Protokollprozess21 durch ein Event „Neue Daten im Zwischenpuffer“von dem Betriebssystemkern 24 aktiviert werden. - -
Der Protokollprozess 21 interpretiert dieim Zwischenpuffer 16 liegenden Bytes der Kommando-APDU, um Informationen über die Gesamtlänge der zu empfangenden Nachricht oder Strukturinformationen über die Nachricht zu erhalten, welche zu ihrer weiteren Bearbeitung benötigt werden. Hierbei werden bestimmte Bytes der eingehenden Kommando-APDU ausgewertet, z. B. das Class-Byte CLA, welches gemäß ISO/IEC 7816-4im Bit 5 anzeigt, ob die aktuell eintreffende Kommando-APDU das letzte/einzige Kommando (CLA Bit 5 = 0) einer Kette von Kommandos ist, oder ob die aktuelle Kommando-APDU nicht das letzte Kommando der Kette ist (CLA Bit 5 = 1) und noch weitere Kommandos folgen. Derartige miteinander verknüpfte Ketten von Kommandos („Command Chaining“) sind für einige Kommandotypen, z. B. PUT DATA, die mehr als 255 Bytes an zur Chipkarte zu übertragende Daten umfassen, geeignet.Falls der Protokollprozess 21 daraus schließen kann, dass mehr Teilnachrichten zu erwarten sind, als inden Ringpuffer 16 passen, wird der Speicherprozess22 entwedervon dem Betriebssystemkern 24 odervon dem Protokollprozess 21 veranlasst,den Ringpuffer 16 zu leeren. - - Ebenso kann der Protokollprozess
21 bei der Interpretation der eintreffenden Daten das INS-Byte, welches einen Rückschluss auf das von der Kommando-APDU übertragene Kommando zulässt, auswerten, um eine Gültigkeitsprüfung der vorliegenden Daten durchzuführen. Ebenso ist es -möglich, dass die Interpretation den endgültigen Speicherort der Daten im EEPROM-Speicher 5 der Chipkarte 1 ermittelt, um dieseInformation dem Speicherprozess 22 per Interprozess-Kommunikation (IPC) mitzuteilen (39 ). - -
Der Protokollprozess 21 wird nach Erledigung seiner Aufgabe inaktiv und wartet auf die nächste Aktivierung durchden Betriebssystemkern 24 oder dieEingangssteuerung 10 aufgrundim Ringpuffer 16 vorliegender Daten. - - Nun wird der mit niedriger Priorität ausgeführte Speicherprozess
22 von dem Betriebssystemkern 24 bzw.der Eingangssteuerung 10 aktiviert (37 ). Ebenso kann der Speicherprozess22 aktiviert werden, wenn der Ringpuffer16 einen bestimmten vorgegebenen Füllstand überschritten hat, um diesen rechtzeitig zu leeren, damit weitere eingehende Daten ausdem Eingangspuffer 18 inden Ringpuffer 16 übertragen werden können. Das Überschreiten des Füllstandes kann dann mittels eines Ereignisses (Event) gemeldet werden. Ebenso ist es möglich, dass der Speicherprozess22 aufgrund eines Ablaufens einer Zeitscheibe oder abhängig von dem Ergebnis einer aktiven Prüfung des Füllstandes des Ringpuffers16 („Polling“) aktiviert wird. - -
Der Speicherprozess 22 liest (40 ) die indem Ringpuffer 16 vorliegenden Daten und schreibt (41 ) diese in den nicht-volatilen Speicherbereich 14 . Vorzugsweise kann der Speicherprozess22 auch warten, bis eine Speicherseite indem Ringpuffer 16 vollständig vorliegt, d.h. beispielsweise 32 Byte, da ein Speicherzugriff auf den nicht-volatilen Speicher 5 ohnehin zumeist seitenweise erfolgt. - -
Der Speicherprozess 22 kann dieNachricht 16 direkt in einen im EEPROM-Speicher 5 angelegten Zielspeicherbereich des Applikationsprozesses19 , für den die Daten bestimmt sind, aus den TeilnachrichtenB1 -B8 zusammenfügen. In der Regel existiert jedoch ein spezieller nicht-volatiler Speicherbereich 14 , um eine Nachricht dort einerseits aus den empfangenen Teilnachrichten zusammenfügen zu können und andererseits dort eine Vorprüfung der empfangenen Nachricht durchzuführen, z. B. eine kryptographische Sicherheitsoperation oder eine Prüfsummenverifikation. Die Verwendung eines speziellen Speicherbereichs14 ist insbesondere bei Aktualisierungskommandos sinnvoll (z.B. UPDATE DATA), da ein sofortiges Überschreiben der zu aktualisierenden Daten im Zielspeicherbereich zu einer unerwünschten Dateninkonsistenz führen kann, falls das Aktualisierungskommando unvollständig oder fehlerhaft übertragen wird oder falls eine Verifikation durch einen Prüfsummenvergleich fehlschlägt. Ein unvollständiges oder fehlerhaftes Aktualisierungskommando kann demgegenüber aus einem separaten nicht-volatilen Speicherbereich 14 gelöscht werden, ohne dass die eigentlichen zu aktualisierenden Daten beschädigt werden. - - In dem nicht-
volatilen Speicherbereich 14 fügt der Speicherprozess22 die vollständige NachrichtB1 -B8 so zusammen, dass die Nachricht vorverarbeitet oder im Hinblick auf ihre Gültigkeit oder sicherheitsrelevante Aspekte verifiziert werden kann. - -
Da der Speicherprozess 22 eine niedrigere Priorität als der Unterbrechungsprozess20 hat, kann er nur zwischen zwei Unterbrechungsphasen,wenn der Unterbrechungsprozess 20 inaktiv ist, aktiviert werden, um ausdem Ringpuffer 16 Teilnachrichten auszulesen.Der Speicherprozess 22 ist also nur für die Zeitdauer der Übertragung von Daten von dem Terminal in den UART-Eingangspuffer 18 aktiv, da er Teilnachrichten nur solange ausdem Zwischenpuffer 16 auslesen kann, wie der Eingangspuffer18 einen vorgegebenen Füllstand nicht überschreitet. Dann wird wieder der hochprioritäre Unterbrechungsprozess20 aktiviert. - - Falls die Nachricht vollständig im nicht-
volatilen Speicherbereich 14 vorliegt, wasvon dem Protokollprozess 22 durch Auswerten des CLA-Bytes ermittelt werden kann, wird abschließend der Applikationsprozess19 per Interprozesskommunikation (IPC) informiert. Die Aktivierung des Applikationsprozesses19 kann durchden Speicherprozess 22 selbst,den Betriebssystemkern 24 , dieEingangssteuerung 10 oder event-gesteuert erfolgen. - - Die im nicht-
volatilen Speicherbereich 14 nunmehr vollständig vorliegende Nachricht kann auch direkt in denAdressbereich der Applikation 19 kopiert werden, was ein Aufrufen des Kommandointerpreters erforderlich macht, um die Applikation zu ermitteln. Andererseits kann die Applikation aufgefordert werden, auf die Daten ihrerseits zuzugreifen (42).
- - First, the UART takes the input buffer
18th some bits of an incoming message as partial messages on (30th ). The incoming partial message is in particular a command APDU (“Application Protocol Data Unit”) as a basic communication unit for data transmission from a terminal to a chip card. - - If there is a partial message in the input buffer
18th and / or when a specified fill level of the input buffer is exceeded18th is an interruption independent of theoperating system kernel 24 triggered, whereby an interrupt table contains the "DATA AVAILABLE" (31 ) determines the interrupt handling routine (ISR) to be executed. - - Due to the interruption triggered (
31 ) interrupts theoperating system kernel 24 the execution of the momentary by theprocessor 2 executed application process in order to process the incoming message with priority. The interruption process becomes the DATA AVAILABLE interruption20th from theoperating system kernel 24 activated with highest execution priority (32 ), so that partial messages from the input buffer18th in theintermediate buffer 16 be transferred as soon as theinput buffer 16 exceeds a specified level.
- - The interruption process
20th reads a specified number or all bits from the UART input buffer18th out (33 ) and writes them to the RAM ring buffer16 (34 ). By synchronizing the processes20th ,21 and22nd it is ensured that thering buffer 16 is never completely filled when in the UART input buffer18th data to be read is available, otherwise data loss may occur. - - The interruption process
20th becomes inactive again after completing its task and waits for the next activation due to an interruption in the input buffer18th present further partial messages. The interruption process can do just as well20th also be reactivated when theintermediate buffer 16 is completely emptied, even if the UART input buffer18th has not yet reached the level required to trigger an interruption. The signaling that thering buffer 16 is completely emptied, can be triggered by an event or the interruption process20th through interprocess communication (IPC) from the storage process22nd , of thering buffer 16 reads out, communicated. - - Once the high priority interrupt
process 16 becomes inactive, the log process becomes inactive21 with medium priority from theoperating system kernel 24 or theinput control 10 activated (35 ). - - The
log process 21 which may have been activated immediately after contacting the chip card with the transmitter terminal as part of an initialization phase of the chip card (the protocol process sends an ATR message ("Answer to Reset") to the terminal with various chip card and transmission parameters, e.g. during initialization also the size of thering buffer 16 in order to be able to recognize incoming oversized messages) is now processed by theoperating system kernel 24 activated or continued if it is temporarily inactive. Optionally it is also possible that theprotocol process 21 checks whether partial messages are in the intermediate buffer for it16 lie. Theprotocol process 21 by an event "New data in the intermediate buffer" from theoperating system kernel 24 to be activated. - - The
log process 21 interprets the in theintermediate buffer 16 lying bytes of the command APDU in order to receive information about the total length of the message to be received or structural information about the message, which is required for its further processing. Certain bytes of the incoming command APDU are evaluated here, e.g. B. the class byte CLA, which according to ISO / IEC 7816-4 in thebit 5 indicates whether the currently incoming command APDU is the last / only command (CLA bit 5 = 0) in a chain of commands, or whether the current command APDU is not the last command in the chain (CLA bit 5 = 1) and still further commands follow. Such interlinked chains of commands (“command chaining”) are necessary for some command types, e.g. B. PUT DATA, which comprise more than 255 bytes of data to be transmitted to the chip card, are suitable. If thelog process 21 can conclude from this that more partial messages are to be expected than in thering buffer 16 will fit, the save process22nd either from theoperating system kernel 24 or from thelog process 21 causes thering buffer 16 to empty. - - Likewise, the
protocol process 21 When interpreting the incoming data, evaluate the INS byte, which allows conclusions to be drawn about the command transmitted by the command APDU, in order to carry out a validity check of the data available. It is also possible for the interpretation to determine the final storage location of the data in theEEPROM memory 5 thechip card 1 determined to this information the storage process22nd to be communicated via interprocess communication (IPC) (39 ). - - The
log process 21 becomes inactive after completion of its task and waits for the next activation by theoperating system kernel 24 or theinput control 10 due to thering buffer 16 existing data. - - Now the save process will be executed with low priority
22nd from theoperating system kernel 24 or theinput control 10 activated (37 ). Likewise, the storage process22nd activated when thering buffer 16 has exceeded a certain specified level in order to empty it in time, so that further incoming data from the input buffer18th in thering buffer 16 can be transferred. Exceeding the fill level can then be reported by means of an event. It is also possible that the storage process22nd due to the expiry of a time slice or depending on the result of an active check of the fill level of the ring buffer16 ("Polling") is activated. - - The storage process
22nd read (40 ) those in thering buffer 16 available data and writes (41 ) these into the non-volatile memory area14th . Preferably, the storage process22nd also wait for a page of memory in thering buffer 16 is complete, ie 32 bytes, for example, because there is a memory access to thenon-volatile memory 5 anyway mostly done page by page. - - The storage process
22nd can themessage 16 directly into one in theEEPROM memory 5 created target memory area of the application process19th , for which the data is intended, from the partial messagesB1 -B8 put together. As a rule, however, there is a special non-volatile storage area14th in order to be able to combine a message there on the one hand from the received partial messages and on the other hand to perform a preliminary check of the received message there, e.g. B. a cryptographic security operation or a checksum verification. The use of a special memory area14th This is particularly useful for update commands (e.g. UPDATE DATA), since immediate overwriting of the data to be updated in the target memory area can lead to undesired data inconsistency if the update command is transmitted incompletely or incorrectly or if verification by means of a checksum comparison fails. In contrast, an incomplete or faulty update command can be stored in a separate, non-volatile memory area14th deleted without damaging the actual data being updated. - - In the non-volatile memory area
14th adds the save process22nd the full messageB1 -B8 together in such a way that the message can be preprocessed or verified with regard to its validity or security-relevant aspects. - - As the storage process
22nd a lower priority than the interrupt process20th he can only switch between two interruption phases when the interruption process20th is inactive, activated to get out of thering buffer 16 Read out partial messages. The storage process22nd is therefore only for the duration of the transfer of data from the terminal to the UART input buffer18th active, since it only holds partial messages from the intermediate buffer for as long16 like the input buffer18th does not exceed a specified level. Then the high priority interrupt process becomes again20th activated. - - If the message is completely in the non-volatile memory area
14th what is present from the log process22nd can be determined by evaluating the CLA byte, then the application process19th informed via interprocess communication (IPC). Activation of the application process19th can go through the storage process22nd itself, the kernel of theoperating system 24 , theinput control 10 or event-controlled. - - Those in the non-volatile memory area
14th The message that is now complete can also be entered directly in the address area of the application19th must be copied, which makes it necessary to call the command interpreter in order to determine the application. On the other hand, the application can be requested to access the data for its part (42).
Das oben beschriebene Verfahren hat den Vorteil, dass die Zeit, in der der UART-Eingangspuffer
Das in
Das vorbeschriebene Verfahren kann mit einem Speicherbereich
Die durch die in den
Im RAM-Speicher
Im Hinblick auf die Ausführungsvariante der
In dem RAM-Speicher
Der Multitasking/Multithreading-fähige Betriebssystemkern
Im ROM-Speicher
Entgegen dem im Zusammenhang mit
Die Sekundärpuffersteuerung
Das Überschreiten eines vorgegebenen Füllstandes des Sekundärpuffers
Anschließend wird der Sekundärunterbrechungsprozess
Im Ergebnis wird ein zeitaufwändiger Prozesswechsel bei dem in
Claims (56)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102006058511.9A DE102006058511B4 (en) | 2006-12-12 | 2006-12-12 | Method for receiving messages by means of a portable data carrier and portable data carrier |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102006058511.9A DE102006058511B4 (en) | 2006-12-12 | 2006-12-12 | Method for receiving messages by means of a portable data carrier and portable data carrier |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102006058511A1 DE102006058511A1 (en) | 2008-06-19 |
DE102006058511B4 true DE102006058511B4 (en) | 2021-07-08 |
Family
ID=39399509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102006058511.9A Expired - Fee Related DE102006058511B4 (en) | 2006-12-12 | 2006-12-12 | Method for receiving messages by means of a portable data carrier and portable data carrier |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE102006058511B4 (en) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0811204B1 (en) | 1995-07-05 | 1999-09-22 | International Business Machines Corporation | Processing of long messages in a chip card |
DE19928939A1 (en) | 1999-06-24 | 2001-01-11 | Giesecke & Devrient Gmbh | Data carriers and methods for data transmission and memory management |
DE10040241A1 (en) | 1999-08-18 | 2001-03-22 | Giesecke & Devrient Gmbh | Memory arrangement for portable data carrier e.g. chip card, updates information following deactivation process in such way, that referenced memory areas cover joined memory area |
US20050289291A1 (en) * | 2004-06-25 | 2005-12-29 | Kabushiki Kaisha Toshiba | Mobile electronic equipment |
DE102004040296B3 (en) | 2004-08-19 | 2006-03-02 | Giesecke & Devrient Gmbh | Write data to a nonvolatile memory of a portable data carrier |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2005124560A1 (en) * | 2004-06-15 | 2008-04-17 | ソニー株式会社 | Information management apparatus and information management method |
-
2006
- 2006-12-12 DE DE102006058511.9A patent/DE102006058511B4/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0811204B1 (en) | 1995-07-05 | 1999-09-22 | International Business Machines Corporation | Processing of long messages in a chip card |
DE19928939A1 (en) | 1999-06-24 | 2001-01-11 | Giesecke & Devrient Gmbh | Data carriers and methods for data transmission and memory management |
DE10040241A1 (en) | 1999-08-18 | 2001-03-22 | Giesecke & Devrient Gmbh | Memory arrangement for portable data carrier e.g. chip card, updates information following deactivation process in such way, that referenced memory areas cover joined memory area |
US20050289291A1 (en) * | 2004-06-25 | 2005-12-29 | Kabushiki Kaisha Toshiba | Mobile electronic equipment |
DE102004040296B3 (en) | 2004-08-19 | 2006-03-02 | Giesecke & Devrient Gmbh | Write data to a nonvolatile memory of a portable data carrier |
Also Published As
Publication number | Publication date |
---|---|
DE102006058511A1 (en) | 2008-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2854485C2 (en) | Data processing system | |
DE102004004796B4 (en) | Device for data transmission between memories | |
DE102005036648A1 (en) | Integrated circuit card e.g. smart media, has suspend/resume controller halting execution of command and storing current state information upon receipt of suspend command related to another command | |
DE2523399C2 (en) | Data processing system with input / output processors | |
DE69826009T2 (en) | SMART CARD CONTROL OF TERMINAL AND NETWORKING DEVICES | |
WO2007128529A1 (en) | Simultaneous interface use | |
DE19924922A1 (en) | Transmission of information between network computer nodes | |
DE3114934A1 (en) | CENTRAL SUBSYSTEM FOR A DATA PROCESSING SYSTEM | |
DE102012208803A1 (en) | System and method for forwarding Fiber Channel input and output data | |
DE1929010A1 (en) | Modular data processing system | |
DE3103786A1 (en) | DATA TRANSFER SYSTEM | |
EP1079307B1 (en) | Method for operating a memory system as well as memory system | |
DE102006058511B4 (en) | Method for receiving messages by means of a portable data carrier and portable data carrier | |
DE10310055A1 (en) | Data transfer system used in computer network, interrupts data sector transfer request received from host device, when requested number of data sectors is not evenly divisible by data block size | |
DE60211211T2 (en) | COMMUNICATION DEVICE, RECEPTION PROCESSING METHOD AND PROGRAM, AND COMPUTER READABLE MEDIUM ON WHICH THIS PROGRAM IS STORED | |
DE102006058512B4 (en) | Method for receiving a message in a portable data carrier and portable data carrier | |
WO2006032682A1 (en) | Method and device for signature formation | |
EP2053826B1 (en) | Coordinated dual interface communication | |
DE19928939A1 (en) | Data carriers and methods for data transmission and memory management | |
EP1308846B1 (en) | Data Transfer Device | |
DE60026802T2 (en) | Method and system for managing reselection via a SCSI bus | |
DE10228778B4 (en) | Hardware method for implementing atomic semaphore operations using code macros | |
EP1791057B1 (en) | Pipeline-Mechanism for data exchange between a chipcard and a terminal | |
DE60213632T2 (en) | BYTE TRANSFER MANAGEMENT IN A CHIP CARD | |
DE19928468C2 (en) | Method for writing data into the programmable read-only memory (EEPROM) of a microprocessor-based, portable data carrier |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OM8 | Search report available as to paragraph 43 lit. 1 sentence 1 patent law | ||
R012 | Request for examination validly filed |
Effective date: 20130807 |
|
R081 | Change of applicant/patentee |
Owner name: GIESECKE+DEVRIENT MOBILE SECURITY GMBH, DE Free format text: FORMER OWNER: GIESECKE & DEVRIENT GMBH, 81677 MUENCHEN, DE |
|
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |