DE102014002369B4 - Memory programming in a security module - Google Patents

Memory programming in a security module Download PDF

Info

Publication number
DE102014002369B4
DE102014002369B4 DE102014002369.9A DE102014002369A DE102014002369B4 DE 102014002369 B4 DE102014002369 B4 DE 102014002369B4 DE 102014002369 A DE102014002369 A DE 102014002369A DE 102014002369 B4 DE102014002369 B4 DE 102014002369B4
Authority
DE
Germany
Prior art keywords
readout
value
values
programming
input value
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.)
Active
Application number
DE102014002369.9A
Other languages
German (de)
Other versions
DE102014002369A1 (en
Inventor
Michael Baldischweiler
Stefan Himml
Peter Hildinger
Klemens Seemüller
Wolfgang Rankl
Thomas Endl
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GIESECKE+DEVRIENT MOBILE SECURITY GERMANY GMBH, DE
Original Assignee
Giesecke and Devrient Mobile Security GmbH
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Giesecke and Devrient Mobile Security GmbH filed Critical Giesecke and Devrient Mobile Security GmbH
Priority to DE102014002369.9A priority Critical patent/DE102014002369B4/en
Publication of DE102014002369A1 publication Critical patent/DE102014002369A1/en
Application granted granted Critical
Publication of DE102014002369B4 publication Critical patent/DE102014002369B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells

Landscapes

  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

Verfahren in einem Sicherheitsmodul zum Programmieren eines nicht flüchtigen Speichers des Sicherheitsmoduls, umfassend die Schritte:
- Programmieren (S1) eines Speicherbereichs gemäß einem vorgegebenen Eingabewert durch Herstellen eines dem Eingabewert entsprechenden Ladungszustandes in einer den Speicherbereich definierenden Speicherzelle;
- Auslesen (S2) des programmierten Speicherbereichs;
dadurch gekennzeichnet, dass der Schritt des Auslesens mehrfach nacheinander durchgeführt wird, um den Ladungszustand der den Speicherbereich definierenden Speicherzelle zu stabilisieren, und gekennzeichnet durch den weiteren Schritt:
- Auslesen von zu dem programmierten Speicherbereich benachbarten Speicherbereichen zum Stabilisieren des Ladungszustandes der den benachbarten Speicherbereich definierenden Speicherzellen.

Figure DE102014002369B4_0000
Method in a security module for programming a non-volatile memory of the security module, comprising the steps:
- Programming (S1) a memory area in accordance with a predetermined input value by producing a charge state corresponding to the input value in a memory cell defining the memory area;
- reading (S2) the programmed memory area;
characterized in that the step of reading out is carried out several times in succession in order to stabilize the charge state of the memory cell defining the memory area, and characterized by the further step:
- Reading out of adjacent memory areas to the programmed memory area in order to stabilize the charge state of the memory cells defining the adjacent memory area.
Figure DE102014002369B4_0000

Description

Die vorliegende Erfindung betrifft ein Verfahren in einem Sicherheitsmodul, beispielsweise einer Chipkarte oder dergleichen, zum Programmieren eines nicht flüchtigen Speichers des Sicherheitsmoduls, insbesondere eines EEPROM- oder FLASH-Speichers, sowie einen entsprechend eingerichteten, Sicherheitsmoduls.The present invention relates to a method in a security module, for example a chip card or the like, for programming a non-volatile memory of the security module, in particular an EEPROM or FLASH memory, and a correspondingly configured security module.

Eine Speicherzelle eines solchen nicht flüchtigen Speichers wird bekanntermaßen dadurch programmiert, dass Ladungsträger in einen bestimmten Bereich der Speicherzelle (in ein so genanntes „floating gate“) eingebracht werden. Dies kann, je nach Art der Speicherzelle, beispielsweise mittels des „Fowler-Nordheim-Effekts“ oder mittels „hot-electron-injection“ erfolgen.As is known, a memory cell of such a non-volatile memory is programmed in that charge carriers are introduced into a specific area of the memory cell (into a so-called “floating gate”). Depending on the type of memory cell, this can be done, for example, using the “Fowler-Nordheim effect” or using “hot electron injection”.

Aufgrund der immer kleiner werdenden Strukturen solcher Speicherzellen, welche nur noch wenige Ladungsträger aufnehmen können, und aufgrund der mittlerweile nur noch sehr dünnen Sperr- und Isolationsschichten, wird es zunehmend schwieriger, eine Programmierung der Speicherzelle fehlerfrei und zuverlässig vorzunehmen. Zum Programmieren der Speicherzelle muss eine Ladungspumpe verwendet werden, um die notwendigen Spannungen zu erhalten. Um die Speicherzellen zu schonen, werden die Ladungspumpen in der Regel so eingestellt, dass eine Änderung des Ladungszustandes der Speicherzelle gerade noch erreichbar ist.Due to the ever smaller structures of such memory cells, which can only hold a few charge carriers, and due to the now only very thin barrier and insulation layers, it is becoming increasingly difficult to program the memory cell reliably and without errors. A charge pump must be used to program the memory cell in order to obtain the necessary voltages. In order to protect the memory cells, the charge pumps are generally set so that a change in the charge state of the memory cell can just about be achieved.

Aufgrund der beschriebenen Vorgehensweise bei der Programmierung einer Speicherzelle können somit Fälle auftreten, in welchen der Zustand der Speicherzelle (z.B. „0“ oder „1“) nicht mehr zweifelsfrei erkennbar ist.Due to the described procedure when programming a memory cell, cases can occur in which the state of the memory cell (e.g. "0" or "1") can no longer be recognized without any doubt.

Ein einfaches Verfahren, um dieses Problem zu behandeln, ist das so genannte „WRITE-AND-VERIFY“-Verfahren. Dabei wird unmittelbar nach dem Programmieren der Speicherzelle (d.h. nach dem „WRITE“-Schritt) die Speicherzelle wieder ausgelesen („VERIFY“). In dem Fall, dass der ausgelesene Wert nicht mit dem zu programmierenden Eingabewert übereinstimmt, wird die Programmierung wiederholt. Dieses Verfahren hat den Nachteil, dass es einerseits aufwändig ist aufgrund der erneuten Programmierung. Andererseits strapaziert das Verfahren die Speicherzelle, ebenfalls aufgrund der erneuten Programmierung, und reduziert auf diese Weise die Lebensdauer der Speicherzelle. DE 101 01 234 A1 offenbart ein Testverfahren, bei dem ein Schreibergebnis eines Speichers durch Wiederauslesen geprüft wird.A simple procedure to deal with this problem is the so-called "WRITE AND VERIFY" procedure. The memory cell is read out again immediately after programming the memory cell (ie after the "WRITE" step) ("VERIFY"). In the event that the read value does not match the input value to be programmed, the programming is repeated. This method has the disadvantage that on the one hand it is complex due to the re-programming. On the other hand, the method strains the memory cell, also due to the reprogramming, and in this way reduces the life of the memory cell. DE 101 01 234 A1 discloses a test method in which a write result of a memory is checked by re-reading.

Es ist demnach Aufgabe der vorliegenden Erfindung, ein Verfahren zum Programmieren einer Speicherzelle eines EEPROM- oder FLASH-Speichers vorzuschlagen, welches den obigen Nachteilen Rechnung trägt.
Diese Aufgabe wird durch ein Verfahren und ein Sicherheitsmodul mit den Merkmalen der unabhängigen Ansprüche gelöst. Vorteilhafte Ausgestaltungen und Weiterbildungen sind in den abhängigen Ansprüchen angegeben.
It is therefore an object of the present invention to propose a method for programming a memory cell of an EEPROM or FLASH memory which takes into account the above disadvantages.
This object is achieved by a method and a security module with the features of the independent claims. Advantageous refinements and developments are specified in the dependent claims.

Der Erfindung liegt die Erkenntnis zu Grunde, dass bereits durch mehrfaches schnelles Auslesen einer Speicherzelle eines solchen flüchtigen Speichers unmittelbar nach der Programmierung der Speicherzelle der Ladungszustand der Speicherzelle stabilisiert werden kann. Mit anderen Worten kann der Fall auftreten, dass beispielsweise ein erstes oder zweites Auslesen unmittelbar im Anschluss an die Programmierung der Speicherzelle anzeigt, dass die Programmierung vermeintlich nicht erfolgreich war. D.h. der erhaltene Auslesewert entspricht nicht dem Eingabewert, der hätte programmiert werden sollen. Weitere Ausleseschritte zeigen dann aber schließlich Auslesewerte, die anzeigen, dass die Programmierung tatsächlich erfolgreich war, d.h. dass der erwünschte Ladungszustand in der Speicherzelle erreicht worden ist.The invention is based on the finding that the charge state of the memory cell can be stabilized immediately after multiple programming of a memory cell of such a volatile memory immediately after programming the memory cell. In other words, the case may arise that, for example, a first or second readout immediately after the programming of the memory cell indicates that the programming was supposedly not successful. That the readout value obtained does not correspond to the input value that should have been programmed. Further readout steps then finally show readout values which indicate that the programming was actually successful, i.e. that the desired state of charge has been reached in the memory cell.

Folglich umfasst eine bevorzugte Ausführungsform eines Verfahrens in einem Sicherheitsmodul zum Programmieren eines nicht flüchtigen Speichers des Sicherheitsmoduls (Datenträgers) folgende Schritte:

  • Ein Speicherbereich, insbesondere eine Speicherzelle, wird gemäß einem vorgegebenen Eingabewert programmiert, indem ein dem Eingabewert entsprechender Ladungszustand in der den Speicherbereich definierenden Speicherzelle hergestellt wird. In dem Fall, dass der Speicherbereich eine Mehrzahl von Zellen umfasst, beispielsweise einem Speicherblock entspricht, werden in der beschriebenen Weise die Speicherzellen des Speicherbereichs programmiert. In der Regel entspricht der vorgegebene Eingabewert einem Bit, d.h. einem Wert, der einem der beiden Werte „0“ oder „1“ entspricht.
Consequently, a preferred embodiment of a method in a security module for programming a non-volatile memory of the security module (data carrier) comprises the following steps:
  • A memory area, in particular a memory cell, is programmed according to a predetermined input value by producing a charge state corresponding to the input value in the memory cell defining the memory area. In the event that the memory area comprises a plurality of cells, for example corresponds to a memory block, the memory cells of the memory area are programmed in the manner described. As a rule, the specified input value corresponds to a bit, ie a value that corresponds to one of the two values "0" or "1".

Anschließend wird der programmierte Speicherbereich ausgelesen, wobei ein Auslesewert erhalten wird.The programmed memory area is then read out, a readout value being obtained.

Das Verfahren zeichnet sich dadurch aus, dass der Schritt des Auslesens, vorzugsweise schnell mehrfach nacheinander und vorzugsweise unmittelbar nach dem Programmieren des Speicherbereichs, durchgeführt wird, um, wie vorstehend bereits erläutert, den Ladungszustand der den Speicherbereich definierenden Speicherzelle zu stabilisieren.The method is characterized in that the reading step is carried out, preferably rapidly several times in succession and preferably immediately after programming the memory area, in order, as already explained above, to stabilize the charge state of the memory cell defining the memory area.

Dadurch, dass durch das mehrfache Auslesen der gerade programmierten Speicherzelle der Ladungszustand der Speicherzelle stabilisiert wird, kann in vielen Fällen eine vermeintlich notwendige Neuprogrammierung ausbleiben. Es hat sich, wie erwähnt, gezeigt dass Auslesewerte in den ersten ein oder zwei Ausleseschritten direkt nach der Programmierung gelegentlich eine vermeintlich nicht erfolgreiche Programmierung anzeigen. D.h. dass ein entsprechender Auslesewert nicht mit dem Eingabewert übereinstimmt. Weitere Auslesewerte aus späteren Ausleseschritten zeigen dann allerdings an, dass die zuerst erhaltenen Auslesewerte als fehlerhaft angesehen werden müssen und die Programmierung doch erfolgreich war.Because the charge state of the memory cell is stabilized by the multiple readout of the memory cell just programmed, In many cases, a supposedly necessary reprogramming can fail to appear. As mentioned, it has been shown that read-out values in the first one or two read-out steps immediately after programming sometimes indicate a supposedly unsuccessful programming. This means that a corresponding readout value does not match the input value. However, further readout values from later readout steps then indicate that the readout values received first must be regarded as incorrect and the programming was nevertheless successful.

Es hat sich ebenfalls gezeigt, dass beim Programmieren einer Speicherzelle der Ladungszustand in benachbarten Speicherbereichen in Mitleidenschaft gezogen werden kann. Dies gilt insbesondere dann, wenn mehrere Speicherzellen eines Speicherblocks gleichzeitig programmiert werden. Daher umfasst das Verfahren gemäß der Erfindung zusätzlich den weiteren Schritt des Auslesens von zu dem programmierten Speicherbereich benachbarten Speicherbereichen. Die Nachbarschaft ist hier physisch, d.h. räumlich, zu verstehen und nicht im Sinne eine logischen Adresse. Bevorzugt wird auch dieses Auslesen unmittelbar nach dem Programmieren durchgeführt, bevorzugt mehrfach schnell nacheinander. Auf diese Weise können die Ladungszustände dieser die benachbarten Speicherbereiche definierenden Speicherzelle ebenfalls wieder stabilisiert werden. Ein Auslesefehler in diesen Speicherbereichen, im weiteren Betrieb des Sicherheitsmoduls, kann dadurch verhindert werden.It has also been shown that when programming a memory cell, the state of charge in adjacent memory areas can be affected. This applies in particular if several memory cells of a memory block are programmed at the same time. Therefore, the method according to the invention additionally comprises the further step of reading out memory areas adjacent to the programmed memory area. The neighborhood is physical here, i.e. spatially, to understand and not in the sense of a logical address. This reading is preferably also carried out immediately after programming, preferably several times in rapid succession. In this way, the charge states of this memory cell defining the adjacent memory areas can also be stabilized again. A reading error in these memory areas during further operation of the security module can be prevented in this way.

Gemäß einer weiteren bevorzugten Ausführungsform umfasst das Verfahren den weiteren Schritt des Prüfens, ob die Programmierung des Speicherbereiches erfolgreich war. Dazu wird der Eingabewert mit in den Ausleseschritten erhaltenen Auslesewerten auf Übereinstimmung untersucht. Verschiedene spezifische Verfahren, mit welchen eine solche Prüfung durchgeführt werden kann, werden nachfolgend im Detail beschrieben. Allen diesen Verfahren ist gemeinsam, dass die Prüfung derart erfolgt, dass die Programmierung der Speicherzelle in bestimmten Fällen auch dann als erfolgreich erkannt werden kann, in denen zumindest ein Auslesewert von dem Eingabewert abweicht. Mit anderen Worten kann die Programmierung der Speicherzelle gemäß diesem Prüfverfahren auch dann als erfolgreich angesehen werden, wenn nicht alle Auslesewerte identisch sind.According to a further preferred embodiment, the method comprises the further step of checking whether the programming of the memory area was successful. For this purpose, the input value is checked for correspondence with the readout values obtained in the readout steps. Various specific methods with which such a test can be carried out are described in detail below. All of these methods have in common that the test is carried out in such a way that the programming of the memory cell can also be recognized as successful in certain cases in which at least one readout value deviates from the input value. In other words, the programming of the memory cell according to this test method can also be regarded as successful if not all readout values are identical.

Die grundsätzliche Idee hinter einem solchen Prüfverfahren ist es, dass die Prüfung vereinzelte, vermeintlich fehlerhafte Auslesewerte, welche sich, wie vorstehend erläutert, vor allem in den ersten Ausleseschritten zeigen können, ignoriert oder derart behandelt, dass ein Ergebnis der Prüfung dadurch nicht beeinträchtigt wird.The basic idea behind such a test procedure is that the test ignores or treats isolated, supposedly incorrect readout values, which, as explained above, can show up especially in the first readout steps, so that a result of the test is not affected.

Dies kann gemäß einer ersten Variante des Verfahrens dadurch geschehen, dass zumindest ein Auslesewert im Schritt des Prüfens nicht berücksichtigt wird. Mit anderen Worten geht dieser zumindest eine Auslesewert nicht in die Prüfung ein. D.h. insbesondere, dass dieser Auslesewert nicht, weder direkt noch indirekt, mit dem Eingabewert verglichen wird. Es ist unmittelbar ersichtlich, dass ein solcher nicht berücksichtigter Auslesewert auch in dem Fall, dass er von dem Eingabewert abweicht, das Ergebnis der Prüfung nicht beeinflussen, insbesondere nicht stören kann.According to a first variant of the method, this can be done in that at least one readout value is not taken into account in the checking step. In other words, this at least one readout value is not included in the test. That in particular that this readout value is not compared, neither directly nor indirectly, with the input value. It is immediately apparent that such a readout value that is not taken into account, even if it deviates from the input value, cannot influence, in particular disrupt, the result of the test.

Bevorzugt wird der Auslesewert, der im ersten Ausleseschritt nach der Programmierung der Speicherzelle erhalten worden ist, bei der Prüfung nicht berücksichtigt. Dies gilt deswegen, da insbesondere in den ersten Ausleseschritten vermeintlich fehlerhafte Auslesewerte erkennbar sind. Weitere bevorzugte Varianten bestehen darin, die ersten beiden Auslesewerte bei der Prüfung zu ignorieren oder allgemein ein „Anfangsstück“, d.h. die ersten m von n Auslesewerten, m < n, bei der Prüfung unberücksichtigt zu lassen.The readout value that was obtained in the first readout step after programming the memory cell is preferably not taken into account in the test. This applies because supposedly incorrect readings are recognizable, especially in the first readout steps. Other preferred variants consist of ignoring the first two readings during the test or generally a "starting piece", i.e. to ignore the first m of n readings, m <n, in the test.

Es versteht sich, dass die Prüfung dahingehend, ob die Programmierung des Speicherbereichs erfolgreich war, nicht vollkommen unabhängig von den Auslesewerten erfolgen kann. Daher wird die Prüfung derart durchgeführt, dass das Ergebnis dieser Prüfung abhängig ist von zumindest zwei - beliebigen oder bestimmten - Auslesewerten. Besonders bevorzugt werden hier diejenigen Auslesewerte als für die Prüfung erheblich ausgewählt, die in den späteren oder zuletzt durchgeführten Ausleseschritten erhalten worden sind.It goes without saying that the check as to whether the programming of the memory area was successful cannot be carried out completely independently of the readout values. The test is therefore carried out in such a way that the result of this test depends on at least two - any or certain - readout values. It is particularly preferred to select those readout values that are obtained in the later or last readout steps as significant for the test.

Eine Übereinstimmung des Eingabewertes mit in den Ausleseschritten erhaltenen Auslesewerten kann beispielsweise wie folgt untersucht werden:

  • Aus der Menge der Auslesewerte wird eine Teilmenge ausgewählt. Die ausgewählte Teilmenge kann dabei insbesondere auch der Menge aller ausgelesen Auslesewerte entsprechen, das heißt der Begriff „Teilmenge“ ist hier breit auszulegen. Gemäß einer weiteren bevorzugten Variante entspricht die Teilmenge der Auslesewerte einer Teilmenge von zuletzt ausgelesenen Auslesewerten, d.h. es werden diejenigen Auslesewerte für die Teilmenge ausgewählt, die zeitlich zuletzt ausgelesen worden sind. In dem Fall, dass beispielsweise sechs Ausleseschritte vorgesehen sind, können die Auslesewerte, die im ersten und zweiten Ausleseschritt erhalten worden sind, unberücksichtigt bleiben, und die Auslesewerte der Schritte drei bis sechs entsprechen der ausgewählten Teilmenge.
A match of the input value with read values obtained in the readout steps can be examined, for example, as follows:
  • A subset is selected from the set of readout values. The selected subset can in particular also correspond to the set of all read values read out, ie the term “subset” should be interpreted broadly here. According to a further preferred variant, the subset of the readout values corresponds to a subset of the readout values last read out, ie those readout values are selected for the subset that were last read out in time. In the event that, for example, six readout steps are provided, the readout values obtained in the first and second readout step can be disregarded, and the readout values of steps three to six correspond to the selected subset.

Aus den Auslesewerten der Teilmenge wird in einem weiteren Schritt ein Gesamtauslesewert abgeleitet. Dieser Gesamtauslesewert wird schließlich auf Übereinstimmung mit dem Eingabewert verglichen. Stimmt der Gesamtauslesewert mit dem Eingabewert überein, so wird die Programmierung des Speicherbereichs als erfolgreich angesehen, andernfalls als fehlgeschlagen. In a further step, the read values of the subset become a total read value derived. This total readout value is finally compared to ensure that it matches the input value. If the total readout value agrees with the input value, the programming of the memory area is considered successful, otherwise it fails.

Gemäß einer alternativen Ausführungsform kann im Schritt des Prüfens der Eingabewert mit in den Ausleseschritten erhaltenen Auslesewerten wie folgt auf Übereinstimmung untersucht werden:

  • Erneut wird, wie vorstehend erläutert, eine Teilmenge der Auslesewerte ausgewählt.
According to an alternative embodiment, in the checking step, the input value can be checked for correspondence with readout values obtained in the readout steps as follows:
  • Again, as explained above, a subset of the readout values is selected.

Anschließend wird der Eingabewert mit jedem der Auslesewerte auf Übereinstimmung verglichen. Entsprechend ergibt sich eine Menge von Vergleichswerten, wobei jeweils ein solcher Vergleichswert angibt, ob der Eingabewert mit dem entsprechenden Auslesewert übereinstimmt oder nicht. In einem abschließenden Schritt wird das Ergebnis der Prüfung aus den Vergleichswerten abgeleitet.The input value is then compared to match each of the readout values. Correspondingly, there is a set of comparison values, such a comparison value indicating whether the input value matches the corresponding read value or not. In a final step, the result of the test is derived from the comparison values.

In der Art, wie das Ableiten des Gesamtauslesewertes aus der Teilmenge der Auslesewerte oder das Ableiten des Ergebnisses der Prüfung aus den Vergleichswerten erfolgt, kann ebenfalls erreicht werden, dass einzelne, vermeintlich fehlerhafte Auslesewerte das Ergebnis der Prüfung nicht beeinträchtigen. Mit anderen Worten kann anstelle eines vollständig Außerachtlassens von Auslesewerten die Art der Ableitung derart gebildet sein, dass ein Effekt eintritt, der einem Effekt eines Außerachtlassens entspricht.In the way in which the total readout value is derived from the subset of the readout values or the result of the test is derived from the comparison values, it can also be achieved that individual, supposedly incorrect readout values do not impair the result of the test. In other words, instead of completely ignoring read values, the type of derivation can be formed in such a way that an effect occurs that corresponds to an effect of ignoring.

Das Ableiten kann beispielsweise mittels einer mathematischen Operation erfolgen, welche Operanden, die verschiedene Werte besitzen, auf einen einheitlichen Wert abbildet. Mit anderen Worten können beispielsweise einzelne „Ausreißer“ unter den Auslesewerten auf diese Weise geeignet verarbeitet werden.The derivation can be carried out, for example, by means of a mathematical operation which maps operands which have different values to a uniform value. In other words, individual “outliers” among the readout values can be processed appropriately in this way.

Eine naheliegende Auswahl einer solchen Operation ist beispielsweise die so genannte „majority function“, welche, angewandt auf den vorliegenden Zusammenhang, eine Menge von Auslese- bzw. Vergleichswerten, welche unterschiedliche Werte aufweisen, auf denjenigen Wert abbildet, den die Mehrzahl der Auslese- bzw. Vergleichswert aufweist. Mit anderen Worten können einzelne „Ausreißer“ auf diese Weise ein Gesamtergebnis nicht stören. Eine solche Operation kann zusätzlich gewichtet werden, d.h. um zu einem eindeutigen Ausgabewert zu kommen, muss ein vorgegebener Anteil der Werte übereinstimmen, wobei dieser Anteil größer sein kann als 50%, beispielsweise zumindest 75%. Alternative Operationen, welche Anwendung finden können, sind beispielsweise eine XOR- Operation, welche dazu dienen kann, genau zwei Auslesewerte zu „unterdrücken“, welche von den restlichen, korrekten Auslesewerten abweichen.An obvious choice of such an operation is, for example, the so-called "majority function", which, applied to the present context, maps a set of readout or comparison values, which have different values, to the value that the majority of the readout or Has comparative value. In other words, individual “outliers” cannot disturb an overall result in this way. Such an operation can be weighted additionally, i.e. In order to arrive at an unambiguous output value, a predetermined proportion of the values must match, this proportion being greater than 50%, for example at least 75%. Alternative operations that can be used are, for example, an XOR operation, which can serve to “suppress” exactly two readout values that differ from the rest of the correct readout values.

Es versteht sich, dass die beiden beschriebenen Varianten, die es erlauben, die Prüfung derart durchzuführen, dass die Programmierung auch in Fällen als erfolgreich angesehen werden kann, in denen Auslesewerte erhalten werden, die nicht alle mit dem Eingabewert übereinstimmen, kombiniert werden können. Beispielweise kann der erste Auslesewert grundsätzlich verworfen werden. Die restlichen Auslesewerte werden dann in der vorstehend beschriebenen Weise, unter Verwendung einer geeigneten Ableitungsoperation, mit dem Eingabewert auf Übereinstimmung untersucht.It goes without saying that the two variants described, which make it possible to carry out the test in such a way that the programming can also be regarded as successful in cases in which readout values are obtained which do not all match the input value, can be combined. For example, the first readout value can always be rejected. The remaining readout values are then checked for agreement with the input value in the manner described above, using a suitable derivation operation.

Wie bereits erwähnt, wird der Schritt des Auslesens mehrfach nacheinander ausgeführt, bevorzugt zumindest viermal, besonders bevorzugt zumindest sechsmal.As already mentioned, the reading step is carried out several times in succession, preferably at least four times, particularly preferably at least six times.

In dem Fall, dass der Schritt des Prüfens ergeben hat, dass die Programmierung nicht erfolgreich war, kann das Verfahren den weiteren Schritt des erneuten Programmierens des Speicherbereiches gemäß dem vorgegebenen Eingabewert umfassen.In the event that the step of checking has shown that the programming was unsuccessful, the method can include the further step of reprogramming the memory area in accordance with the predetermined input value.

Aufgrund der Tatsache, dass das mehrfache Auslesen des Speicherbereiches den Ladungszustand der gerade programmierten Speicherzelle stabilisieren kann, kann in vielen Fällen, in denen gemäß der einfachen WRITE-AND-VERIFY- Strategie eine Neuprogrammierung durchgeführt worden ist, nun auf eine solche verzichtet werden. Lediglich in den Fällen, in denen tatsächlich ein echter Programmierfehler in dem Sinne vorliegt, dass ein dem Eingabewert entsprechender Ladungszustand tatsächlich nicht erhalten worden ist, was z.B. durch eine deutliche Mehrzahl von Auslesewerten nachgewiesen werden kann, ist eine Neuprogrammierung erforderlich.Due to the fact that the multiple readout of the memory area can stabilize the state of charge of the currently programmed memory cell, in many cases in which a reprogramming has been carried out in accordance with the simple WRITE-AND-VERIFY strategy, one can now be dispensed with. Only in cases where there is actually a real programming error in the sense that a charge state corresponding to the input value has actually not been obtained, which is e.g. re-programming is necessary if a clear majority of readout values can be verified.

Ein erfindungsgemäßes Sicherheitsmodul umfasst zumindest einen nichtflüchtigen Speicher, beispielsweise einen EEPROM- oder FLASH-Speicher, und ist eingerichtet, ein vorstehend beschriebenes Verfahren durchzuführen.A security module according to the invention comprises at least one non-volatile memory, for example an EEPROM or FLASH memory, and is set up to carry out a method described above.

Ein solches Sicherheitsmodul kann insbesondere in Form eines portablen Datenträgers vorliegen, beispielsweise in Form einer Chipkarte, eines USB-Tokens, eines RFID-Moduls, einer sicheren Massenspeicherkarte, einer UICC/ USIM- Mobilfunkkarte oder dergleichen. Das Sicherheitsmodul kann auch ein fest in ein Endgerät integriertes Modul sein, wie beispielsweise ein NFC-Modul, eine TPM-Modul oder eine eUICC-Karte.Such a security module can in particular be in the form of a portable data carrier, for example in the form of a chip card, a USB token, an RFID module, a secure mass storage card, a UICC / USIM mobile radio card or the like. The security module can also be a module that is permanently integrated in a terminal, such as an NFC module, a TPM module or an eUICC card.

Die vorliegende Erfindung wird im Folgenden mit Bezug auf die beiliegenden Zeichnungen beispielhaft erläutert. Darin zeigen:

  • 1 Schritte einer bevorzugten Ausführungsform eines erfindungsgemäßen Verfahrens;
  • 2 eine erste bevorzugte Ausführungsform eines Verfahrensschrittes 3 aus 1 und
  • 3 eine zweite bevorzugte Ausführungsform eines Verfahrensschrittes 3 aus 1.
The present invention is explained below by way of example with reference to the accompanying drawings. In it show:
  • 1 Steps of a preferred embodiment of a method according to the invention;
  • 2 a first preferred embodiment of a method step 3 out 1 and
  • 3 a second preferred embodiment of a method step 3 out 1 ,

Mit Bezug auf 1 wird im Folgenden ein Verfahren in einem Sicherheitsmodul zum Programmieren eines nicht flüchtigen Speichers des Sicherheitsmoduls, beispielsweise eines EEPROM- oder FLASH-Speichers, veranschaulicht.Regarding 1 a method in a security module for programming a non-volatile memory of the security module, for example an EEPROM or FLASH memory, is illustrated below.

Das Sicherheitsmodul ist eingerichtet, ein solches Verfahren auszuführen. Vorzugsweise weist das Sicherheitsmodul Programmcode auf, dessen Ausführung das Verfahren steuert. Dazu kann insbesondere das Betriebssystem des Sicherheitsmoduls entsprechende Funktionalitäten umfassen. Das Verfahren kann alternativ ganz oder teilweise auch zusätzlich zu dem Betriebssystem des Sicherheitsmodul vorliegen.The security module is set up to carry out such a method. The security module preferably has program code, the execution of which controls the method. For this purpose, the operating system of the security module in particular can include corresponding functionalities. Alternatively, the method can also be available in whole or in part in addition to the operating system of the security module.

Ein entsprechendes Sicherheitsmodul kann in der Form eines portablen Datenträgers, der beispielsweise in ein Endgerät eingesetzt werden kann, vorliegen. Portable Datenträger sind beispielsweise Chipkarte, USB-Token, RFID-Modul oder UICC/SIM-Mobilfunkkarte. Das Sicherheitsmodul kann als Datenträger auch fest in ein Endgerät eingebaut sein, beispielsweise als NFC-Modul, TPM-Modul oder eUICC-Karte.A corresponding security module can be in the form of a portable data carrier that can be used, for example, in a terminal. Portable data carriers are, for example, a chip card, USB token, RFID module or UICC / SIM mobile phone card. The security module can also be permanently installed as a data carrier in a terminal device, for example as an NFC module, TPM module or eUICC card.

In Schritt S1 wird ein Speicherbereich des nicht flüchtigen Speichers des Datenträgers, z.B. eine Speicherzelle, gemäß einem vorgegebenen Eingabewert programmiert. Wie mit Bezug auf 2 ersichtlich, entspricht der Eingabewert im gezeigten Beispiel dem Wert „1“. In der Regel wird der Eingabewert einem einzelnen Bit entsprechen.In step S1 a memory area of the non-volatile memory of the data carrier, for example a memory cell, is programmed in accordance with a predetermined input value. How about 2 can be seen, the input value in the example shown corresponds to the value "1". As a rule, the input value will correspond to a single bit.

Das Programmieren der Speicherzelle erfolgt in bekannter Weise durch Herstellen eines dem Eingabewert entsprechenden Ladungszustandes in der Speicherzelle, d.h. insbesondere in dem „floating gate“ der Speicherzelle.The memory cell is programmed in a known manner by establishing a charge state in the memory cell corresponding to the input value, i.e. especially in the "floating gate" of the memory cell.

In Schritt S2 wird unmittelbar im Anschluss an die Programmierung der Speicherzelle der in der Speicherzelle gespeicherte Wert ausgelesen.In step S2 the value stored in the memory cell is read out immediately after programming the memory cell.

Das Auslesen erfolgt mehrfach, vorzugsweise schnell nacheinander. Wie in 2 angedeutet, sind gemäß dem gezeigten Beispiel sechs aufeinander folgende Ausleseschritte vorgesehen. Die Anzahl der Ausleseschritte kann variieren, vorzugsweise werden zumindest vier Ausleseschritte durchgeführt, in der Regel sind es aber zumindest sechs Ausleseschritte.The reading takes place several times, preferably in quick succession. As in 2 indicated, six successive readout steps are provided according to the example shown. The number of readout steps can vary, preferably at least four readout steps are carried out, but as a rule there are at least six readout steps.

In jedem Ausleseschritt wird ein Auslesewert erhalten. Dieser Auslesewert gibt grundsätzlich an, welcher Wert in der Speicherzelle gespeichert ist. Theoretisch müssten stets alle Auslesewerte übereinstimmen, da zwischen den Ausleseschritten keine Umprogrammierung der Speicherzelle stattgefunden hat.A readout value is obtained in each readout step. This readout value basically indicates which value is stored in the memory cell. Theoretically, all read values should always match, since no reprogramming of the memory cell has taken place between the read steps.

Wie mit Bezug auf die 2 und 3 gezeigt, kann es vorkommen, dass vereinzelt Auslesewerte erhalten werden, die nicht mit dem Eingabewert übereinstimmen. Wird eine Prüfung der programmierten Speicherzelle mittels eines bekannten WRITE-AND-VERIFY- Verfahrens durchgeführt, bei dem unmittelbar im Anschluss an das Programmieren der Speicherzelle diese einmalig ausgelesen wird, so würde im gezeigten Beispiel eine fehlerhafte Programmierung der Speicherzelle erkannt werden - da der Auslesewert 1 von dem Eingabewert abweicht.As for the 2 and 3 shown, it can happen that read values are obtained that do not match the input value. If the programmed memory cell is checked by means of a known WRITE-AND-VERIFY method, in which the memory cell is read out once immediately after programming, an incorrect programming of the memory cell would be detected in the example shown - since the readout value 1 deviates from the input value.

Da sich gezeigt hat, dass ein mehrfaches Auslesen der Speicherzelle direkt im Anschluss an die Programmierung einen Ladungszustand der Speicherzelle stabilisieren kann, wie dies im gezeigten Beispiel der Fall ist, kann aufgrund des beschriebenen Verfahrens in vielen Fällen eine Neuprogrammierung der Speicherzelle vermieden werden. Dies schont zum einen die Speicherzelle, zum anderen kann auf einen erneuten Programmschritt verzichtet werden.Since it has been shown that multiple readings of the memory cell directly after the programming can stabilize a charge state of the memory cell, as is the case in the example shown, in many cases the described method can be used to avoid reprogramming the memory cell. On the one hand, this protects the memory cell, and on the other hand, a new program step can be dispensed with.

Bereits die Schritte S1 und S2 bilden ein vollständiges Verfahren zum zuverlässigen Programmieren einer Speicherzelle eines nicht flüchtigen Speichers eines portablen Datenträgers.Already the steps S1 and S2 form a complete method for reliably programming a memory cell of a non-volatile memory of a portable data carrier.

Ein oder mehrere Schritte des Auslesens können optional für Speicherbereiche durchgeführt werden, die benachbart zu dem programmierten Speicherbereich in dem Speicher des Datenträgers angeordnet sin. Dies dient ebenfalls dazu, die Ladungszustände entsprechender Speicherzellen dieser Speicherbereiche zu stabilisieren, welche während der Programmierung gestört werden können.One or more readout steps can optionally be carried out for memory areas which are arranged adjacent to the programmed memory area in the memory of the data carrier. This also serves to stabilize the charge states of corresponding memory cells in these memory areas, which can be disturbed during programming.

Gemäß dem Schritt S3 kann auch mit Bezug auf das Verfahren nach Schritt S1 und Schritt S2 geprüft werden, ob die Programmierung der Speicherzelle erfolgreich war. Bevorzugte Ausführungsformen eines solchen Prüfschrittes werden nachfolgend im Detail mit Bezug auf die 2 und 3 beschrieben.According to the step S3 can also refer to the procedure after step S1 and step S2 checked whether the programming of the memory cell was successful. Preferred embodiments of such a test step are described in detail below with reference to FIG 2 and 3 described.

Ergibt die Prüfung in Schritt S3, dass die Programmierung der Speicherzelle erfolgreich war, so kann der Betrieb des Datenträgers in beliebiger, gewünschter Weise fortgeführt werden. Beispielsweise kann eine weitere Speicherzelle programmiert werden oder der Datenträger kann auf andere Weise verwendet werden.Returns the test in step S3 that the programming of the memory cell was successful, the operation of the data carrier in any, be continued as desired. For example, a further memory cell can be programmed or the data carrier can be used in another way.

In dem Fall, dass die Prüfung ergibt, dass die Programmierung der Speicherzelle nicht erfolgreich war, kann eine Neuprogrammierung der Speicherzelle vorgesehen sein, wie dies mit Bezug auf Schritt S4 angedeutet ist. Schritt S4 entspricht dem Schritt S1. An Schritt S4 kann sich dann ebenfalls eine Mehrzahl von Ausleseschritten gemäß Schritt S2 anschließen.In the event that the check reveals that the programming of the memory cell was unsuccessful, reprogramming of the memory cell can be provided, as with reference to step S4 is indicated. step S4 corresponds to the step S1 , At step S4 can then also a plurality of read steps according to step S2 connect.

Eine erste bevorzugte Variante eines Schrittes S3 zum Prüfen, ob die Programmierung der Speicherzelle in Schritt S1 erfolgreich war, ist mit Bezug auf 2 exemplarisch dargestellt.A first preferred variant of a step S3 to check whether the programming of the memory cell in step S1 was successful is related to 2 shown as an example.

Im gezeigten Beispiel, welches auch dem Prüfschritt S3' gemäß 3 zugrunde liegt, wird davon ausgegangen, dass der zu programmierende Eingabewert dem Wert „1“ entspricht. In den Ausleseschritten 1 bis 6 sind die gezeigten Auslesewerte erhalten worden. Mit anderen Worten ist in den Ausleseschritten 1 und 3 der Wert „0“ ausgelesen worden, der nicht mit dem Eingabewert übereinstimmt. In den Ausleseschritten 2 und 4 bis 6 sind die Auslesewerte „1“ erhalten worden.In the example shown, which also includes the test step S3 ' according to 3 is based on the assumption that the input value to be programmed corresponds to the value "1". In the selection steps 1 to 6 the readout values shown have been obtained. In other words, is in the selection steps 1 and 3 the value "0" has been read out, which does not match the input value. In the selection steps 2 and 4 to 6 the readout values "1" have been obtained.

In Schritt S3 (sowie in Schritt S3' gemäß 3) wird nun die Programmierung geprüft, indem der Eingabewert mit in den Ausleseschritten erhaltenen Auslesewerten auf Übereinstimmung untersucht wird.In step S3 (as well as in step S3 ' according to 3 ) the programming is now checked by examining the input value for correspondence with the readout values obtained in the readout steps.

Die Prüfung wird dabei jeweils derart durchgeführt, dass auch in bestimmten Fällen, in denen zumindest ein Auslesewert von dem Eingabewert abweicht, eine erfolgreiche Programmierung des Speicherbereichs erkannt werden kann. Im gezeigten Beispiel wird sich jeweils dieses Ergebnis herausstellen, d.h. trotz des Auftretens der Auslesewerte „0“ in den Ausleseschritten 1 und 3 wird die Prüfung ergeben, dass die Programmierung des Speicherbereichs erfolgreich war.The check is carried out in such a way that even in certain cases in which at least one readout value differs from the input value, successful programming of the memory area can be recognized. In the example shown, this result will appear in each case, ie despite the occurrence of the readout values “0” in the readout steps 1 and 3 the check will show that the programming of the memory area was successful.

Es hat sich gezeigt, dass Auslesewerte, die direkt im Anschluss an die Programmierung ausgelesen werden, d.h. insbesondere der erste oder zweite Auslesewert, gelegentlich von einem dem Eingabewert entsprechenden Wert abweichen. Dies kann geschehen, wenn die Speicherzelle schon geringfügig vorgeschädigt ist. Andere Gründe für ein solches Phänomen können darin gesehen werden, dass aufgrund der sehr geringen Dimensionen aktueller Speicherzellen grundsätzlich die Möglichkeit besteht, dass ein eingebrachter Ladungszustand nicht immer korrekt erkannt werden kann.It has been shown that readout values that are read out immediately after programming, i.e. in particular the first or second readout value, occasionally deviate from a value corresponding to the input value. This can happen if the memory cell is already slightly damaged. Other reasons for such a phenomenon can be seen in the fact that, due to the very small dimensions of current memory cells, there is basically the possibility that an introduced charge state cannot always be correctly recognized.

Um diesem Umstand Rechnung zu tragen, verwirft das Prüfungsverfahren in 2 gemäß Schritt S3 in Teilschritt TS3.1 die Auslesewerte 1 und 2. Mit anderen Worten werden diese beiden Auslesewerte grundsätzlich nicht berücksichtigt. Das Ergebnis der Prüfung in Schritt S3 hängt von diesen Werten nicht ab. Alternativ könnte beispielsweise auch lediglich der erste Auslesewert ignoriert werden.In order to take this into account, the examination procedure in 2 according to step S3 in partial step TS3.1 the readings 1 and 2 , In other words, these two readout values are fundamentally not taken into account. The result of the check in step S3 does not depend on these values. Alternatively, for example, only the first readout value could be ignored.

Der Prüfung zu Grunde gelegt werden lediglich die Auslesewerte 3 bis 6.The test is based only on the readout values 3 to 6 ,

Wie mit Bezug auf Teilschritt TS3.2 illustriert, wird der Eingabewert mit den entsprechenden Auslesewerten auf Übereinstimmung untersucht, indem der Eingabewert mit jedem der Auslesewerte 3 bis 6 jeweils auf Gleichheit untersucht wird. Jeder dieser Vergleichstests resultiert in einem Vergleichswert. Der Vergleichswert 1 resultiert aus dem Vergleich des Eingabewertes mit den Auslesewert 3. Da die entsprechenden Werte nicht übereinstimmen, entspricht der Vergleichswert 1 dem Wert „FALSE“. Die restlichen Vergleichswerte 2 bis 4 hingegen entsprechenden Wert „TRUE“, da die Auslesewerte 4 bis 6 jeweils mit dem Eingabewert übereinstimmen.As for partial step TS3.2 illustrated, the input value is checked for agreement with the corresponding readout values by the input value with each of the readout values 3 to 6 is examined for equality. Each of these comparison tests results in a comparison value. The comparative value 1 results from the comparison of the input value with the read value 3 , Since the corresponding values do not match, the comparison value corresponds 1 the value "FALSE". The remaining comparison values 2 to 4 on the other hand the corresponding value "TRUE" because the readout values 4 to 6 each match the input value.

In Teilschritt TS3.3 wird das Ergebnis der Prüfung, ob die Programmierung des Speicherbereichs erfolgreich war, dadurch abgeschlossen, dass aus den Vergleichswerten 1 bis 4 ein Gesamtvergleichswert abgeleitet wird. Eine hier verwendete Ableitung wird in der Regel derart gebildet, dass auch die Möglichkeit berücksichtigt wird, dass einer dieser Vergleichswerte noch den Wert „FALSE“ besitzt. Im gezeigten Beispiel wird dazu die so genannte „majority“-Funktion verwendet. D.h. es wird untersucht, ob die Mehrzahl der Vergleichswerte dem Wert „TRUE“ oder dem Wert „FALSE“ entspricht. Derjenige Wert, der häufiger auftritt, entspricht dem Gesamtvergleichswert.In partial step TS3.3 the result of the check as to whether the programming of the memory area was successful is completed by using the comparison values 1 to 4 an overall comparison value is derived. A derivative used here is usually formed in such a way that the possibility is also taken into account that one of these comparison values still has the value "FALSE". In the example shown, the so-called "majority" function is used. This means that it is examined whether the majority of the comparison values correspond to the value "TRUE" or the value "FALSE". The value that occurs more frequently corresponds to the overall comparison value.

Die Ableitung kann abweichend davon beispielsweise eine Mehrheit von 3/4 für einen eindeutigen Auslesewert verlangen oder lediglich eine feste Anzahl, z.B. höchstens einen oder höchstens zwei „Minderheitswerte“ zulassen.In derogation from this, the derivation can, for example, require a majority of 3/4 for a clear readout value or only a fixed number, e.g. allow at most one or at most two “minority values”.

Da im vorliegenden Beispiel der Gesamtvergleichswert dem Wert „TRUE“ entspricht, wird die Programmierung als erfolgreich angesehen.Since in the present example the total comparison value corresponds to the value "TRUE", the programming is considered successful.

Es versteht sich, dass weitere alternative Ableitungsoperationen verwendet werden können.It is understood that other alternative derivation operations can be used.

Beispielsweise kann die Ableitungsoperation vorsehen, dass im Teilschritt TS3.2 keine Vergleichswerte mit dem Wert „FALSE“ mehr erhalten werden dürfen, wenn die Programmierung als erfolgreich angesehen werden soll. Mit anderen Worten wird gemäß einer solchen Variante lediglich dann eine erfolgreiche Programmierung erkannt, wenn sämtliche im Prüfschritt berücksichtigte Auslesewerte mit dem Eingabewert übereinstimmen.For example, the derivation operation can provide that in the substep TS3.2 no comparison values with the value "FALSE" may be obtained if the programming is to be regarded as successful. In other words, according to such a variant, successful programming is only recognized when all the read-out values taken into account in the test step match the input value.

Eine zweite bevorzugte Variante eines Schrittes S3 zum Prüfen, ob die Programmierung der Speicherzelle in Schritt S1 erfolgreich war, ist mit Bezug auf 3 exemplarisch dargestellt und hier mit S3' bezeichnet.A second preferred variant of a step S3 to check whether the programming of the memory cell in step S1 was successful is related to 3 shown as an example and referred to here as S3 '.

Diese Variante der Prüfung der Programmierung besteht darin, dass ein dem Teilschritt TS3.1 aus 2 entsprechender Schritt ausgelassen wird. Mit anderen Worten gehen gemäß dieser Variante grundsätzlich alle Auslesewerte in die Prüfung ein. Die Wahl der Ableitungsoperation F, mittels derer aus den Vergleichswerten dann ein Gesamtvergleichswert abgeleitet wird, entscheidet darüber, welche und/oder wie viele Auslesewerte mit einem von dem Eingabewert abweichenden Wert zugelassen werden, ohne dass eine Programmierung der Speicherzelle als nicht erfolgreich angesehen wird.This variant of the programming test consists of a sub-step TS3.1 out 2 corresponding step is omitted. In other words, according to this variant, basically all readout values are included in the test. The choice of the derivation operation F, by means of which an overall comparison value is then derived from the comparison values, decides which and / or how many readout values are permitted with a value deviating from the input value, without programming the memory cell being considered unsuccessful.

Alternativ zu der Darstellung in Teilschritt TS3.2 aus 2 wird in Teilschritt TS3.1' zuerst aus der Menge aller Auslesewerte mittels einer entsprechenden Ableitungsoperation F ein Gesamtauslesewert abgeleitet.As an alternative to the representation in partial step TS3.2 out 2 is in substep TS3.1 ' first a total readout value is derived from the set of all readout values by means of a corresponding derivation operation F.

Dieser Gesamtauslesewert wird dann in Teilschritt TS3.2' mit dem Eingabewert verglichen.This total readout value is then in partial step TS3.2 ' compared to the input value.

Die Vergleichsoperation F kann auf verschiedene geeignete Weise gewählt werden. Die mit Bezug auf 2 beschriebene „majority“-Funktion oder entsprechende gewichtete Varianten davon können beispielsweise eingesetzt werden. Eine andere Alternative, welche jeweils zwei „Ausreißer“ zuverlässig erkennt, ist die XOR-Operation, die im gezeigten Beispiel ebenfalls zu dem Ergebnis führen würde, dass die Programmierung erfolgreich war.The comparison operation F can be chosen in various suitable ways. The related to 2 The described "majority" function or corresponding weighted variants thereof can be used, for example. Another alternative that reliably detects two "outliers" is the XOR operation, which in the example shown would also lead to the result that the programming was successful.

Claims (12)

Verfahren in einem Sicherheitsmodul zum Programmieren eines nicht flüchtigen Speichers des Sicherheitsmoduls, umfassend die Schritte: - Programmieren (S1) eines Speicherbereichs gemäß einem vorgegebenen Eingabewert durch Herstellen eines dem Eingabewert entsprechenden Ladungszustandes in einer den Speicherbereich definierenden Speicherzelle; - Auslesen (S2) des programmierten Speicherbereichs; dadurch gekennzeichnet, dass der Schritt des Auslesens mehrfach nacheinander durchgeführt wird, um den Ladungszustand der den Speicherbereich definierenden Speicherzelle zu stabilisieren, und gekennzeichnet durch den weiteren Schritt: - Auslesen von zu dem programmierten Speicherbereich benachbarten Speicherbereichen zum Stabilisieren des Ladungszustandes der den benachbarten Speicherbereich definierenden Speicherzellen.Method in a security module for programming a non-volatile memory of the security module, comprising the steps of: programming (S1) a memory area in accordance with a predetermined input value by producing a charge state corresponding to the input value in a memory cell defining the memory area; - reading (S2) the programmed memory area; characterized in that the step of reading out is carried out several times in succession in order to stabilize the charge state of the memory cell defining the memory area, and characterized by the further step: reading out memory areas adjacent to the programmed memory area for stabilizing the charge state of the memory cells defining the adjacent memory area . Verfahren nach Ausspruch 1, gekennzeichnet durch den weiteren Schritt: - Prüfen (S3), ob die Programmierung des Speicherbereichs erfolgreich war, indem der Eingabewert mit in den Ausleseschritten erhaltenen Auslesewerten auf Übereinstimmung untersucht wird, wobei die Prüfung derart erfolgt, dass die Programmierung auch in einem Fall als erfolgreich angesehen werden kann, in dem zumindest ein Auslesewert von dem Eingabewert abweicht.Method according to Claim 1, characterized by the further step: - Checking (S3) whether the programming of the memory area was successful by examining the input value for correspondence with the readout values obtained in the readout steps, the check being carried out in such a way that the programming in can be regarded as successful in a case in which at least one readout value deviates from the input value. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass zumindest ein Auslesewert im Schritt des Prüfens nicht berücksichtigt wird (TS3.1).Procedure according to Claim 2 , characterized in that at least one readout value is not taken into account in the checking step (TS3.1). Verfahren nach Anspruch 2 oder 3, dadurch gekennzeichnet, dass zumindest der im ersten Ausleseschritt erhaltene Auslesewert im Schritt des Prüfens nicht berücksichtigt wird.Procedure according to Claim 2 or 3 , characterized in that at least the readout value obtained in the first readout step is not taken into account in the checking step. Verfahren nach einem der Ansprüche 2 bis 4, dadurch gekennzeichnet, dass die Prüfung derart durchgeführt wird, dass das Ergebnis der Prüfung abhängig ist von zumindest zwei Auslesewerten.Procedure according to one of the Claims 2 to 4 , characterized in that the test is carried out in such a way that the result of the test is dependent on at least two readout values. Verfahren nach einem der Ansprüche 2 bis 5, dadurch gekennzeichnet, dass im Schritt des Prüfens der Eingabewert mit in den Ausleseschritten erhaltenen Auslesewerten wie folgt auf Übereinstimmung untersucht wird: - Ableiten (TS3.1') eines Gesamtauslesewertes aus einer ausgewählten Teilmenge der Auslesewerte; - Vergleichen (TS3.2') des Gesamtauslesewertes auf Übereinstimmung mit dem Eingabewert.Procedure according to one of the Claims 2 to 5 , characterized in that in the step of checking the input value is checked for correspondence with the readout values obtained in the readout steps as follows: - deriving (TS3.1 ') a total readout value from a selected subset of the readout values; - Compare (TS3.2 ') the total readout value for agreement with the input value. Verfahren nach einem der Ansprüche 2 bis 6, dadurch gekennzeichnet, dass im Schritt des Prüfens der Eingabewert mit in den Ausleseschritten erhaltenen Auslesewerten wie folgt auf Übereinstimmung untersucht wird: - Vergleichen (TS3.2) des Eingabewertes auf Übereinstimmung mit jedem Auslesewert einer ausgewählten Teilmenge der Auslesewerte, wodurch sich eine Menge von Vergleichswerten ergibt. - Ableiten (TS3.3) des Ergebnisses der Prüfung aus den Vergleichswerten.Procedure according to one of the Claims 2 to 6 , characterized in that in the step of checking the input value with the readout values obtained in the readout steps is checked for agreement as follows: - comparing (TS3.2) the input value for agreement with each readout value of a selected subset of the readout values, resulting in a set of comparison values results. - Deriving (TS3.3) the result of the test from the comparison values. Verfahren nach Anspruch 6 oder 7, dadurch gekennzeichnet, dass die ausgewählte Teilmenge der Auslesewerte einer Teilmenge von zuletzt ausgelesenen Auslesewerten entspricht.Procedure according to Claim 6 or 7 , characterized in that the selected subset of the readout values corresponds to a subset of the last readout values read out. Verfahren nach einem der Ansprüche 6 bis 8, dadurch gekennzeichnet, dass zum Ableiten des Gesamtauslesewertes aus der Teilmenge der Auslesewerte und/oder zum Ableiten des Ergebnisses der Prüfung aus den Vergleichswerten eine mathematische Operation verwendet wird, welche Operanden, die verschiedene Werte besitzen, auf einen einheitlichen Wert abbildet.Procedure according to one of the Claims 6 to 8th , characterized in that for deriving the total readout value from the subset of Readout values and / or a mathematical operation is used to derive the result of the test from the comparison values, which maps operands which have different values to a uniform value. Verfahren nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, dass der Schritt des Auslesens zumindest viermal, vorzugsweise zumindest sechsmal durchgeführt wird.Procedure according to one of the Claims 1 to 9 , characterized in that the reading step is carried out at least four times, preferably at least six times. Verfahren nach einem der Ansprüche 2 bis 10, gekennzeichnet durch den weiteren Schritt (S4), falls der Schritt des Prüfens ergeben hat, dass die Programmierung nicht erfolgreich war: - erneutes Programmieren des Speicherbereichs gemäß dem vorgegebenen Eingabewert.Procedure according to one of the Claims 2 to 10 , characterized by the further step (S4), if the step of checking has shown that the programming was unsuccessful: - reprogramming the memory area according to the specified input value. Sicherheitsmodul mit zumindest einem nicht flüchtigen Speicher, wobei das Sicherheitsmodul eingerichtet ist, ein Verfahren nach einem der Ansprüche 1 bis 11 durchzuführen.Security module with at least one non-volatile memory, the security module being set up, a method according to one of the Claims 1 to 11 perform.
DE102014002369.9A 2014-02-18 2014-02-18 Memory programming in a security module Active DE102014002369B4 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102014002369.9A DE102014002369B4 (en) 2014-02-18 2014-02-18 Memory programming in a security module

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102014002369.9A DE102014002369B4 (en) 2014-02-18 2014-02-18 Memory programming in a security module

Publications (2)

Publication Number Publication Date
DE102014002369A1 DE102014002369A1 (en) 2015-08-20
DE102014002369B4 true DE102014002369B4 (en) 2020-03-05

Family

ID=53758684

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014002369.9A Active DE102014002369B4 (en) 2014-02-18 2014-02-18 Memory programming in a security module

Country Status (1)

Country Link
DE (1) DE102014002369B4 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10101234A1 (en) * 2001-01-11 2002-07-18 Giesecke & Devrient Gmbh Testing non-volatile memory involves producing test pattern, write access to memory with test pattern, read access to acquire test result and comparison with test pattern for agreement
EP1329894A1 (en) * 2002-01-18 2003-07-23 SanDisk Corporation Reducing the effects of noise in non-volatile memories through multiple reads
US8374031B2 (en) * 2010-09-29 2013-02-12 SanDisk Technologies, Inc. Techniques for the fast settling of word lines in NAND flash memory
US8508995B2 (en) * 2010-09-15 2013-08-13 Densbits Technologies Ltd. System and method for adjusting read voltage thresholds in memories

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10101234A1 (en) * 2001-01-11 2002-07-18 Giesecke & Devrient Gmbh Testing non-volatile memory involves producing test pattern, write access to memory with test pattern, read access to acquire test result and comparison with test pattern for agreement
EP1329894A1 (en) * 2002-01-18 2003-07-23 SanDisk Corporation Reducing the effects of noise in non-volatile memories through multiple reads
DE60305987T2 (en) * 2002-01-18 2007-02-15 Sandisk Corp., Sunnyvale Reduction of the effects caused by noise in a non-volatile memory by multiple readings
US8508995B2 (en) * 2010-09-15 2013-08-13 Densbits Technologies Ltd. System and method for adjusting read voltage thresholds in memories
US8374031B2 (en) * 2010-09-29 2013-02-12 SanDisk Technologies, Inc. Techniques for the fast settling of word lines in NAND flash memory

Also Published As

Publication number Publication date
DE102014002369A1 (en) 2015-08-20

Similar Documents

Publication Publication Date Title
DE602004005211T2 (en) DETECTING OVER PROGRAMMED MEMORY CELLS AFTER PROGRAMMING ADJUSTABLE MEMORY CELLS
DE112005001325B4 (en) Erase method for a multilevel bit flash memory
DE102008002083B4 (en) Flash memory device and corresponding programming methods
DE69719968T2 (en) STABILIZING CIRCLES FOR MULTIPLE DIGITAL BITS
DE102015108143A1 (en) NAND preliminary read-error correction
DE102008003944A1 (en) Storage system and programming method for a storage system
DE102010053557B4 (en) NAND programming technique
DE102007006292A1 (en) Semiconductor memory device with programming voltage generator and method for programming the same
DE102013013047B4 (en) Determination of an identifier
DE112008001151T5 (en) Multi-bit programming device and method for multi-bit programming
DE102019124668A1 (en) TRANSISTOR THRESHOLD VOLTAGE HOLDING IN 3D MEMORY
DE112019000159T5 (en) RAMP DOWN SCAN BETWEEN PROGRAM VOLTAGE AND TEST VOLTAGE IN A STORAGE DEVICE
EP2673731B1 (en) Method for programming a mobile terminal chip
DE102006030888A1 (en) Method and apparatus for generating a starting value for a pseudorandom number generator
EP3378006B1 (en) Method for loading of a secure memory image of a microcontroler and arrangement with a microcontroller
DE112014000382T5 (en) Programmable and flexible reference cell selection method for memory devices
DE102014002369B4 (en) Memory programming in a security module
DE102006044853A1 (en) Memory device and method for verifying information in memory cells
DE102013010261A1 (en) Method for operating a security element
DE19731954C2 (en) Method for the detection of incorrectly programmed memory cells of a memory
DE102016212956B4 (en) Method for operating a serial non-volatile semiconductor memory
EP2002446B1 (en) Method for operating a memory unit comprising the marking of memory blocks that are identified as defective
DE102012020442B4 (en) Method for checking data using at least two checksums
DE112018006502T5 (en) NON-VOLATILE STORAGE DEVICE AND EMPTY CHECK METHOD
WO2001009902A1 (en) Method and circuit for the correction of memory errors

Legal Events

Date Code Title Description
R163 Identified publications notified
R012 Request for examination validly filed
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
R081 Change of applicant/patentee

Owner name: GIESECKE+DEVRIENT EPAYMENTS GMBH, DE

Free format text: FORMER OWNER: GIESECKE+DEVRIENT MOBILE SECURITY GMBH, 81677 MUENCHEN, DE

Owner name: GIESECKE+DEVRIENT MOBILE SECURITY GERMANY GMBH, DE

Free format text: FORMER OWNER: GIESECKE+DEVRIENT MOBILE SECURITY GMBH, 81677 MUENCHEN, DE

R081 Change of applicant/patentee

Owner name: GIESECKE+DEVRIENT MOBILE SECURITY GERMANY GMBH, DE

Free format text: FORMER OWNER: GIESECKE+DEVRIENT EPAYMENTS GMBH, 81677 MUENCHEN, DE