DE102014002369B4 - Memory programming in a security module - Google Patents
Memory programming in a security module Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 42
- 230000008672 reprogramming Effects 0.000 claims description 8
- 230000001419 dependent effect Effects 0.000 claims description 2
- 230000000087 stabilizing effect Effects 0.000 claims 1
- 238000009795 derivation Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000010998 test method Methods 0.000 description 3
- 239000002800 charge carrier Substances 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000002784 hot electron Substances 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000009413 insulation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits 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.
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.
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.
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.
- 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 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.
- 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 Verfahrensschrittes3 aus 1 und -
3 eine zweite bevorzugte Ausführungsform eines Verfahrensschrittes3 aus 1 .
-
1 Steps of a preferred embodiment of a method according to the invention; -
2 a first preferred embodiment of amethod step 3 out1 and -
3 a second preferred embodiment of amethod step 3 out1 ,
Mit Bezug auf
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
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
Das Auslesen erfolgt mehrfach, vorzugsweise schnell nacheinander. Wie in
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
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
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
Ergibt die Prüfung in Schritt
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
Eine erste bevorzugte Variante eines Schrittes
Im gezeigten Beispiel, welches auch dem Prüfschritt
In Schritt
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
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
Der Prüfung zu Grunde gelegt werden lediglich die Auslesewerte
Wie mit Bezug auf Teilschritt
In Teilschritt
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
Eine zweite bevorzugte Variante eines Schrittes
Diese Variante der Prüfung der Programmierung besteht darin, dass ein dem Teilschritt
Alternativ zu der Darstellung in Teilschritt
Dieser Gesamtauslesewert wird dann in Teilschritt
Die Vergleichsoperation F kann auf verschiedene geeignete Weise gewählt werden. Die mit Bezug auf
Claims (12)
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)
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 |
-
2014
- 2014-02-18 DE DE102014002369.9A patent/DE102014002369B4/en active Active
Patent Citations (5)
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 |