WO2013004489A1 - Verfahren zum prüfen eines m aus n codes - Google Patents
Verfahren zum prüfen eines m aus n codes Download PDFInfo
- Publication number
- WO2013004489A1 WO2013004489A1 PCT/EP2012/061706 EP2012061706W WO2013004489A1 WO 2013004489 A1 WO2013004489 A1 WO 2013004489A1 EP 2012061706 W EP2012061706 W EP 2012061706W WO 2013004489 A1 WO2013004489 A1 WO 2013004489A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- code
- reducer
- bits
- output
- full
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/47—Error detection, forward error correction or error protection, not provided for in groups H03M13/01 - H03M13/37
- H03M13/51—Constant weight codes; n-out-of-m codes; Berger codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/618—Shortening and extension of codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/004—Countermeasures against attacks on cryptographic mechanisms for fault attacks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
Definitions
- the invention relates to a method for testing an m out of n code and a circuit arrangement for carrying out the presented method, which is also referred to as a tester or checker.
- Redundant codes are used in safety-relevant systems, in which the error is detected in the event of a fault by a code checker and thus a critical situation can be averted.
- m from n codes play a role.
- random number generators are required for cryptographic applications, which are recommended by the National Institute of Standards and Technology (NIST) (see separate publication "Recommendation for Random Number Generation Using Deterministic Random Bit Generators", SP 800-90, March 2007) Self-test.
- NIST National Institute of Standards and Technology
- Self-test for arbitrary deterministic random number generators, the implementation of a self-test can be expensive. If one uses a m out of n code for the realization, then the recommended self-test can be realized simply by a code checker.
- An m-out-of-n code is an error detection code with a code word length of n bits, each code word comprising exactly m instances of a one.
- a mask generator with m out of n coding can be used.
- One possible structure of such a mask generator is shown, for example, in FIG. 1 and will be explained at the appropriate place herein.
- Mask generators like other cryptographic devices and cryptographic algorithms, are under attack to manipulate or retrieve protected data.
- encryption methods such as the Advanced Encryption Standard AES, keys are used, which are due to the key length with 128 and more bits even with the use of high-speed computing not by "trying out" (so-called brute force attacks) can be determined. Therefore, an attacker also investigates side effects of an implementation, such as the temporal course of power consumption, the time duration or the electromagnetic radiation of a circuit in the case of the
- SCA side channel attacks
- the power consumption of a microprocessor is recorded during cryptographic calculations, and traces of current consumption are compared to hypotheses by statistical methods.
- One way to improve the robustness against such side channel attacks is to use in a mask generator an arrangement of identically constructed state machines, to which an input signal is applied on the input side and which generate an output signal depending on their state, each state machine always has a different state than the other state machines of the arrangement. It is assumed that the power consumption is independent of the state of the state machines used by the respective same number of ones and zeros (and thus an equal Hamming weight) and by transitions of these states for the same input signals, each with a same Hamming distance , It is known that one can bring so-called fault attacks a circuit in a state that is not intended for normal operation. This abnormal operation provides a way to more easily identify the secret key.
- Such code checkers are, for example, in the publication of A.P. Stroele and S. Tarnick, Programmable Embedded Self-Testing Checkers for All-Unidirectional
- the publication WO 2006/003023 A2 describes a method and an arrangement for detecting unidirectional errors in words of systematic disordered codes. This arrangement also includes a number of
- a self-test of a mask generator mentioned above or a signature can be performed.
- a self-test in cryptographic structures is advantageous because otherwise a test with different input and output signals may reveal an attacker more than the cryptographic operation itself.
- the described method and the illustrated circuit arrangement make it possible to detect an error attack and in this case to prevent the output of a mask or a signature.
- An error attack can corrupt individual bits or even a large number of bits. It is particularly important to reliably detect all unidirectional multiple errors, otherwise the mask becomes completely ineffective.
- the proposed circuit arrangement which is also referred to below as a code checker, used in conjunction with a mask generator described above, it can be checked during operation or at the end of the mask generation before the output of the valid mask, if an error has occurred. If the code is not correct, the output of the mask is prevented and thus the intended cryptographic operation is not performed. Thus an attacker has no chance of an operation with falsified masking data. In contrast to the above-mentioned code checkers according to the prior art, however, the effort can be significantly reduced without losing the property of self-testing.
- FIG. 1 shows an embodiment of a mask generator.
- Figure 2 shows a code averaging circuit (weight averaging circuit) as a first stage of an 8 out of 16 code reducer.
- FIG. 4 shows a two-rail code checker TRC.
- FIG. 5 shows the formation of an error signal error from the dual-rail signals from FIG. 3.
- Figure 1 shows schematically an embodiment of a mask generator, which is designated overall by the reference numeral 100.
- This mask generator 100 serves to form a 128-bit bit vector from an input signal 102.
- the circuit arrangement 100 comprises four arrangements 104, 106, 108 and 110, each comprising sixteen transformation elements TE_0, TE_1, TE_2, TE_15.
- sixteen transformation elements TE_0, TE_1, TE_2, TE_15 are shown in FIG.
- the mask generator 100 is configured such that each transformation element TE_0, TE_1, TE_2, TE_15 of each of the devices 104, 106, 108, and 110 have the same input data and the same input signal, respectively 102 are supplied or will.
- each array 104, 106, 108, 110 all of the transform elements TE_0, TE_1, TE_2, TE_15 are similarly connected to the input signals, but different arrangements 104, 106, 108 and 110 may differ from one another.
- the transformation elements TE_0, TE_1, TE_2, TE_15 form from the input signal 102 supplied to them a present unspecified output signal. These output signals are combined and thereupon obtained a signature S 120 with 256 bits.
- the transformation elements TE_0, TE_1, TE_2, TE_15 each have a state machine ZA or a state machine whose status information is stored, for example, in the form of a digital data word of predeterminable width.
- the state machine ZA can have a storage capacity of 4 bits, so that a total of 16 different states are possible.
- the state machines ZA each of an arrangement 104, 106, 108, 110 are of similar construction.
- each state machine ZA assuming identical input signals 102 and an identical initialization state, will assume the same following state in a subsequent processing cycle as another similar state machine ZA.
- each state machine ZA always has a different state than all other state machines ZA of the corresponding arrangements 104, 106, 108 or 110. This makes it more difficult for DPA attacks resulting from the analysis of an electrical current and / or current Power consumption or stor- age radiation try to draw conclusions about an internal
- States of the state machine ZA corresponds, in this case sixteen.
- each theoretically possible state always exists, ie, for every processing cycle, in exactly one state machine ZA, so that only one combination of all sixteen possible states is "visible" to the outside, ie to a possible attacker who leads a DPA attack , Even in a subsequent processing cycle, in which the individual Stand machines ZA each change their state according to a predetermined rule, again in total of each of the sixteen state machines ZA exactly one of the sixteen possible states, so that outwardly all sixteen states are simultaneously "visible".
- a possible attacker from a corresponding electromagnetic radiation which is given in a conventional realization of the circuit arrangement 100, or also from the electrical power consumption of the circuit arrangement 100, not to a state of the internal signal processing in the transformation elements TE_0, TE_1, TE_2, TE_15 can close.
- the electrical power consumption is always constant, so that the radiated electromagnetic field experiences no significant changes in a state change between successive processing cycles.
- a bit vector 130 with 128 bits is generated by a linear link in block 122.
- the linear link can be, for example, an EXOR or an EXNOR link.
- the outputs of the various transformation elements are swapped before the linear join.
- a meaningful measure is the rotation of the states within an arrangement as a function of the input data.
- Dual rail checkers (approximately 4 GE) would require the total effort of approximately 600 gate equivalents (GE). If you did that for a 4-fold structure with 4 * 64 bits, you would have a total of about 2400 gates of circuitry in the parallel implementation.
- the implementation according to the invention utilizes the fact that the same bit positions of the state machines each have the same number of ones. This allows you to split the test and test only 16 bits in one test step. The further 3 x 16 bits are then tested in three further test steps. Different from the state of the art
- Code-Checkers can completely save the flip-flops before and after the full adders in the Weight Averaging Circuit, if one uses a counter already present in the circuit and one bit each on a Weight Averaging Circuit WAC (Code Reducer) eg as input x 0 used. To make the circuit self-testing, the carry-in inputs of the weight averaging circuit and the dual-rail checker must accept all possible combinations at least once.
- WAC Code Reducer
- such a weight averaging circuit (code reducer) WAC_16 (without the conventional flip-flops of the prior art) is shown for 16 input bits d 0 ... dis.
- the illustration illustrates 16 state machines 200 with each because 4 bits, of which 5 are shown in this illustration.
- eight full adders 202 are provided, of which only three are shown for the sake of clarity, and one non-gate 204.
- a code reducer (WAC) 206 is shown surrounded by a dashed line. This represents a stage 220 of a three-stage code reducer shown in FIG. 3, in which this stage 220 is designated by reference numeral 304.
- FIG. 3 shows a three-stage code reducer.
- the illustration again shows state machines 300 each having 4 bits, a corresponding number of 4 to 1 multiplexers 302, a first WAC 304 (WAC_16), a second WAC 306 (WAC_8) and a third WAC 308 (WAC_4) and a counter 310
- the above-described signal pair x 0 , Xi are at the other stage, the signal pairs x 2 , X ß or X4, x 5 , which correspond to a 1 out of 2 code in error-free case.
- These signal pairs are checked together with the reduced code. It is spoken above by a multi-level code reducer.
- the arrangement shown in Figure 3 may also be referred to as an arrangement comprising three code reducers, WAC 304
- WAC_16 WAC 306
- WAC_8 WAC 308
- WAC_4 308 has only two full adders and two outputs to which the carry-out of these full adders is switched: x 6 and x 7 .
- the additional output x 5 is the inverted sum output of the second full adder in WAC_4 308.
- the respective pairs x 0 and xi, x 2 and x 3 , x 4 and x 5 and x 6 and x 7 each provide a "dual" Rail code "(or 1 out of 2 code), ie always exactly one signal of these pairs is 1. It is sufficient to test whether this property is fulfilled for all these signal pairs. This check is performed in so-called code ceckers, for example a two-rail code checker TRC according to FIG.
- FIG. 4 shows a code checker 400, in this case a two-rail checker
- This TRC 400 has a first input 402 and a second input 404. Further, the illustration shows two complex gates each connecting two different inputs twice through an AND element 406, the two outputs of these AND elements 406 subsequently through an OR element 408 link and invert.
- the AND-OR and inversion elements can be realized in a complex gate so that they are not separable or in separate elements.
- the TRC 400 forms a dual rail output signal at an output 412 from two dual rail encoded signals at the two inputs 402 and 404. If the dual rail code is at both input signal pairs of the inputs 402 and 404 is not injured and the TRC 400 itself operates error-free, the output 412 is also formed as a dual-rail pair.
- the x-signals of FIG. 3 in such TRCs can be combined into a single dual-rail pair.
- the figure shows a first TRC 500, a second TRC 502, a third TRC 504
- a code error is present when these two output signals of the dual rail checker 504 are the same.
- the signal "error” 510 equals 1 and "not error” 512 equals 0 when the two outputs are equal to 504. In the error-free case, 510 equals 0 and 512 equals 1.
- the TRC are self-testing This property is guaranteed by the counter bits e 2 ... e 0 when the counter counts from 0 to 7.
- the counter code is arbitrary (binary code, gray code, excess 3-code counting forward or backward) if only all the bits of the used bits in the sequence occur, the "error" signal at output 510 of the
- Equivalent term 506 in FIG. 5 indicates either a code error or an error in the code checker itself.
- the signal / error via the antivalence element 508 becomes redundant (EXOR) is output at an output 512.
- the code at the outputs w'O ... w'7 is a 1 -out-of-8, which can also be tested with standard code checkers and provides a dual-rail output.
- an embodiment of a circuit arrangement for testing a m from n code with at least one code checker is described, which is particularly suitable for carrying out the presented method, wherein the at least one code checker at least one code reducer or a on or multi-level code reducer is assigned, wherein at least one stage of this Codereduzierers consists of several full adders, are used in the first stage n / 2 full adder, in which the sum bit of a full adder is passed to the carry input of the next full adder and the n / 2 carry bits of n / 2 full adders are output.
- the carry input of the first full adder is connected to the output of a first Zählerbit and the sum output of the last Volladdierers is output, and that the first Zählerbit and the sum bit of the last Volladdierers form a first signal pair.
- the second stage of the code checker consists of n / 4 full adders and that the n / 2 output bits of the first stage are connected to the operand inputs of the n / 4 full adders of the second stage of the code checker, the sum bits the full adder on the
- a second counter bit is connected and this second counter bit together with the output sum bit of the last full adder of the second stage form a second signal pair.
- one signal can be inverted and thus modified signal pairs can be formed.
- These modified pairs of signals together with the dual-rail signal pair are connected so connected to a two-rail checker that a last two-rail checker outputs a signal pair, which in the case of freedom from error of the code and the code checker 1 -out-of-2 code and thus can be checked for errors in the m-out-of-n code or in the test circuit itself.
- the said counter bits can be varied such that all states of these counter bits are taken during successive test steps (of one or more code words) and that different code words can be selected for testing with different counter bits.
- the m-out-of-n code to be tested can be split into several subcodes. These subcodes can be checked sequentially on the same code checker. The inputs of the Code Checker can be switched between the different subcodes.
- these partial codes can be checked simultaneously on different code checkers.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Probability & Statistics with Applications (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
- Train Traffic Observation, Control, And Security (AREA)
Abstract
Es werden ein Verfahren und eine Schaltungsanordnung zum Prüfen eines m aus n Codes vorgestellt. Das Verfahren verwendet einen Code-Checker, dem mindestens ein Codereduzierer (304, 306, 308) zugeordnet ist, wobei mit dem mindestens einen Codereduzierer (304, 306, 308) eine Reduzierung der Codewortbreite auf jeweils die Hälfte vorgenommen wird, solange bis ein 1 aus x (x = n/2, n/4, n/8...) Code oder ein anderer nicht weiter auf diese Art reduzierbarer Code vorliegt, wobei jede Stufe des Codereduzierers (304, 306, 308) zusätzlich mit unterschiedlichen Bits eines Zählers verbunden ist, wobei der aus 1 aus x Code oder der nicht weiter reduzierbare Code geprüft wird und zusätzlich die Signalpaare jeder Stufe geprüft werden.
Description
Beschreibung Titel
Verfahren zum Prüfen eines m aus n Codes
Die Erfindung betrifft ein Verfahren zum Prüfen eines m aus n Codes und eine Schaltungsanordnung zur Durchführung des vorgestellten Verfahrens, die auch als Tester bzw. Checker bezeichnet wird.
Stand der Technik
Redundante Codes werden in sicherheitsrelevanten Systemen eingesetzt, in denen im Falle eines Fehlers durch einen Code-Checker der Fehler erkannt wird und dadurch eine kritische Situation abgewendet werden kann. Dabei spielen auch m aus n Codes eine Rolle. Darüber hinaus werden für kryptographische Anwendungen Zufallsgeneratoren benötigt, die nach Empfehlung der NIST (National Institute of Standards and Technology) (siehe hierzu gesonderte Veröffentlichung "Recommendation for Random Number Generation Using Deterministic Random Bit Generators", SP 800-90, März 2007) über einen Selbsttest verfügen sollen. Für beliebige deterministische Zufallsgeneratoren kann die Implementierung eines Selbsttests einen hohen Aufwand verursachen. Wenn man für die Realisierung einen m aus n Code verwendet, so kann der empfohlene Selbsttest einfach durch einen Code-Checker realisiert werden.
Ein m aus n Code (m-out-of-n Code) ist dabei ein Fehlererfassungscode mit einer Codewortlänge von n Bits, wobei jedes Codewort genau m Instanzen einer Eins umfasst.
Zur Erzeugung eines m aus n Codes kann bspw. ein Maskengenerator mit m aus n Codierung verwendet werden. Ein möglicher Aufbau eines solchen Maskengenerators ist bspw. in Figur 1 dargestellt und wird an entsprechender Stelle hierin erläutert.
Maskengeneratoren sind wie andere kryptographische Geräte und kryptologische Algorithmen Angriffen ausgesetzt, mit denen geschützte Daten manipuliert oder ausgelesen werden sollen. Bei den heute üblichen Verschlüsselungsverfahren, wie z. B. der Advanced Encryption Standard AES, werden Schlüssel eingesetzt, die auf Grund der Schlüssellänge mit 128 und mehr Bits selbst unter Einsatz schneller Rechentechnik nicht durch "Ausprobieren" (sogenannte Brute-Force- Attacken) ermittelbar sind. Ein Angreifer untersucht deshalb auch Nebeneffekte einer Implementierung, wie den zeitlichen Verlauf des Stromverbrauchs, die zeit- liehe Dauer oder die elektromagnetische Abstrahlung einer Schaltung bei der
Verschlüsselungsoperation. Da die Angriffe nicht auf die Funktion direkt abzielen, bezeichnet man solche Attacken als Seitenkanalattacken.
Diese Seitenkanalattacken (side Channel attacks SCA) nutzen die physikalische Implementierung eines Kryptosystems in einem Gerät. Dabei wird das Steuergerät mit kryptographischen Funktionen bei der Ausführung der kryptologischen Algorithmen beobachtet, um Korrelationen zwischen den beobachteten Daten und den Hypothesen für den geheimen Schlüssel zu finden.
Es sind zahlreiche Seitenkanalattacken bekannt, wie diese bspw. in der Veröffentlichung von Mangard, Oswald und Popp in "Power Analysis Attacks", Springer 2007, beschrieben sind. Insbesondere mit der Differential Power Analysis DPA ist ein erfolgreicher Angriff auf den geheimen Schlüssel des AES praktisch durchführbar.
Bei einer DPA wird der Stromverbrauch eines Mikroprozessors während kryptog- raphischer Berechnungen aufgezeichnet und es werden Spuren der Stromaufnahme durch statistische Methoden mit Hypothesen verglichen.
Bei bekannten Verfahren, die die DPA erschweren, wird in den Algorithmus selbst eingegriffen. Dabei werden bei einem Maskieren die Operationen mit zufällig veränderten Operanden ausgeführt und im Ergebnis wird der Zufallswert dann wieder herausgerechnet, was bedeutet, dass der Zufall sich nicht auf das Ergebnis auswirkt. Eine weitere Möglichkeit ist das sogenannte Hiding, bei dem man high-low Übergänge durch entsprechende low-high Übergänge zu kompensieren versucht.
Die modernen kryptographischen Verfahren, wie bspw. der Advanced Encryption Standard AES, sind, wie vorstehend bereits ausgeführt wurde, durch die Länge der Schlüssel und die Komplexität des Verfahrens selbst beim derzeitigen Stand der Rechentechnik gegen die sogenannten Brute-Force-Angriffe, d. h. Ausprobieren aller Möglichkeiten, gut geschützt. Die Attacken eines potenziellen Angreifers richten sich deshalb zunehmend auf die Implementierungen. Der Angreifer versucht mit sogenannten Seitenkanalattacken über den Stromverbrauch bei der Verarbeitung des Algorithmus über die elektromagnetische Abstrahlung oder die operandenabhängige Zeitdauer der Verarbeitung Informationen zu gewinnen, die auf den geheimen Schlüssel schließen lassen.
Eine Möglichkeit zur Verbesserung der Robustheit gegen solche Seitenkanalan- griffe besteht darin, bei einem Maskengenerator eine Anordnung von gleich auf- gebauten Zustandsautomaten bzw. Zustandsmaschinen zu verwenden, denen eingangsseitig ein Eingangssignal zugeführt wird und die in Abhängigkeit ihres Zustande ein Ausgangssignal erzeugen, wobei jede Zustandsmaschine stets einen anderen Zustand aufweist als die anderen Zustandsmaschinen der Anordnung. Dabei wird davon ausgegangen, dass durch die jeweils gleiche Anzahl von Einsen und Nullen (und damit ein gleiches Hamming-Gewicht) und durch Übergänge dieser Zustände bei gleichen Eingangssignalen mit jeweils einer gleichen Hamming-Distanz der Stromverbrauch unabhängig von dem jeweiligen Zustand der benutzten Zustandsmaschinen ist. Es ist bekannt, dass man durch sogenannte Fehlerattacken eine Schaltung in einen Zustand bringen kann, der eigentlich nicht für den normalen Betrieb vorgesehen ist. Dieser nicht normale Betrieb bietet eine Möglichkeit, den geheimen Schlüssel einfacher zu ermitteln. So könnte man bspw. durch gezielte Änderung der Betriebsspannung (Spike-Attacke), durch elektromagnetische Felder oder durch Strahlungen, bspw. Alpha-Partikel oder Laser, eine Änderung des Zustande einzelner oder aller benutzter Zustandsmaschinen in einen Zustand (0, 0, ... ,0) bewirken. Wird ein damit erzeugter Bitvektor zur Maskierung eines Schlüssels benutzt, so geht der ursprünglich vorgesehene Schutz des Schlüssels vor Seitenkanalangriffen ganz oder zumindest teilweise verloren. Der geheime Schlüssel ist somit leichter ermittelbar. Durch spezielle Code-Checker kann man
insbesondere bei m aus n Codes sehr leicht überprüfen, ob ein oder auch mehrere Bits (insbesondere in einer Richtung) verfälscht wurden.
Solche Code-Checker sind bspw. in der Veröffentlichung von A.P. Stroele und S. Tarnick, Programmable Embedded Self-Testing Checkers for All-Unidirectional
Error Detecting Codes, Proceedings of the 17th IEEE VLSI Test Symposium, Dana Point, CA, 1999, Seiten 361 bis 369 beschrieben. Hierin ist ein Code- Checker beschrieben, wobei der Code-Checker die Ausgänge eines Systems überwacht, um auftretende Fehler so schnell wie möglich zu erfassen. Der Checker ist aus einer Anzahl von Volladdierern und Flip-Flops aufgebaut und weist eine gleichmäßige Struktur auf. In einer weiteren Veröffentlichung von S. Tarnick, Design of Embedded Constant Weight Code-Checkers Based on Averaging Operations, Proceedings of the 16th IEEE On-Line Testing Symposium, Corfu Island, Greece, 2010, Seiten 255-260, wird eine vereinfachte Schal- tung zum gleichen Zweck beschrieben.
Die Druckschrift WO 2006/003023 A2 beschreibt ein Verfahren und eine Anordnung zur Erkennung von unidirektionalen Fehlern in Wörtern von systematischen ungeordneten Codes. Auch diese Anordnung umfasst eine Anzahl von
Volladdierern und Flip-Flops. Die Anordnung, die eine Übersetzungsschaltung und einen Berger-Typ-Code-Checker umfasst, kann mit einer geringen Zahl an Codewörtern getestet werden.
Die in den genannten Druckschriften beschriebenen Code-Checker sind so auf- gebaut, dass sie sich selbst testen. Dazu wird der Coderaum mit einem ersten
Checker so reduziert, dass nur noch die Hälfte der Codebits vorliegt und auch nur die Hälfte davon den Wert 1 hat (m/2 aus n/2) Dieser Vorgang wird bspw. solange durchgeführt, bis ein 1 aus 2 Code vorliegt (Dual-Rail-Code). Das geht aber nur, wenn m = n/2 ist.
Dieser Dual-Rail-Code wird schließlich in einem sich selbsttestenden Dual-Rail- Code-Checker geprüft, wie er bspw. in dem folgenden Artikel beschrieben ist: S Kundu, S.M. Reddy, Embedded Totally Self-Checking Checkers A Practical Design, Design and Test of Computers, 1990, Band 7, Ausgabe 4, Seiten 5 bis 12.
Offenbarung der Erfindung
Vor diesem Hintergrund werden ein Verfahren zum Prüfen eines m aus n Codes mit den Merkmalen des Anspruchs 1 und eine Schaltungsanordnung gemäß Anspruch 10 zur Durchführung des Verfahrens vorgestellt. Ausführungen ergeben sich aus den abhängigen Ansprüchen und der Beschreibung.
Mit dem vorgestellten Verfahren kann ein Selbsttest eines vorstehend genannten Maskengenerators oder einer Signatur durchgeführt werden. Ein Selbsttest in kryptographischen Strukturen ist vorteilhaft, da ansonsten ein Test mit verschiedenen Ein- und Ausgangssignalen ggf. einem Angreifer mehr als die kryptogra- phische Operation selbst offenbart. Das beschriebene Verfahren und die dargelegte Schaltungsanordnung ermöglichen darüber hinaus, eine Fehlerattacke zu erkennen und in diesem Fall die Ausgabe einer Maske oder einer Signatur zu verhindern. Eine Fehlerattacke kann einzelne Bits oder auch eine Vielzahl von Bits verfälschen. Es ist insbesondere wichtig, alle unidirektionalen Mehrfachfehler sicher zu erkennen, weil ansonsten die Maske völlig unwirksam wird. Darüber hinaus ist es auch möglich, Mehrfachfehler zu erkennen, die nicht unidirektional sind. Selbst wenn zum Zeitpunkt der Fehlerinjektion der Code-Checker durch die Kompensation von Einzelbitfehlern keinen Fehler erkennen kann, ist es möglich, dass im Verlauf der weiteren Verarbeitung von Eingangssignalen ein Zustand auftritt, der zur Fehlererkennung im Code-Checker führt.
Wird die vorgestellte Schaltungsanordnung, die nachfolgend auch als Code- Checker bezeichnet wird, in Verbindung mit einem eingangs beschriebenen Maskengenerator verwendet, so kann während des Betriebs oder auch am Ende der Maskengenerierung vor der Ausgabe der gültigen Maske geprüft werden, ob ein Fehler aufgetreten ist. Falls der Code nicht stimmt, wird die Ausgabe der Maske verhindert und damit die vorgesehene kryptographische Operation nicht durchgeführt. Damit hat ein Angreifer keine Chance auf eine Operation mit verfälschten Maskierungsdaten. Im Gegensatz zu den vorstehend erwähnten Code- Checkern nach dem Stand der Technik kann jedoch der Aufwand deutlich reduziert werden, ohne dass die Eigenschaft des Selbsttestens verloren geht.
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Be- Schreibung und den beiliegenden Zeichnungen.
Es versteht sich, dass die voranstehend genannten und die nachstehend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.
Kurze Beschreibung der Zeichnungen
Figur 1 zeigt eine Ausführungsform eines Maskengenerators.
Figur 2 zeigt einen Codereduzierer (weight averaging circuit) als erste Stufe eines 8 aus 16 Codereduzierers.
Figur 3 zeigt einen dreistufigen Codereduzierer für m aus n Code mit m = 8 und n = 16.
Figur 4 zeigt einen Two-Rail-Code-Checker TRC.
Figur 5 zeigt die Bildung eines Fehlersignals error aus den Dual-Rail-Signalen aus Figur 3.
Ausführungsformen der Erfindung
Die Erfindung ist anhand von Ausführungsformen in den Zeichnungen schematisch dargestellt und wird nachfolgend unter Bezugnahme auf die Zeichnungen ausführlich beschrieben.
Figur 1 zeigt schematisch eine Ausführungsform eines Maskengenerators, der insgesamt mit der Bezugsziffer 100 bezeichnet ist. Dieser Maskengenerator 100 dient zur Bildung eines Bitvektors mit 128 Bit aus einem Eingangssignal 102. Hierzu umfasst die Schaltungsanordnung 100 vier Anordnungen 104, 106, 108 und 1 10, die jeweils sechszehn Transformationselemente TE_0, TE_1 , TE_2, TE_15 umfassen. Der Übersichtlichkeit halber sind in Figur 1 nur jeweils vier der sechzehn Transformationselemente TE_0, TE_1 , TE_2, TE_15 dargestellt. In dieser Ausführung ist der Maskengenerator 100 derart ausgebildet, dass jedem Transformationselement TE_0, TE_1 , TE_2, TE_15 jeder der Anordnungen 104, 106, 108 und 1 10 dieselben Eingangsdaten bzw. dasselbe Eingangssignal
102 zugeführt werden bzw. wird. Wichtig ist, dass in jeder Anordnung 104, 106, 108, 1 10 alle Transformationselemente TE_0, TE_1 , TE_2, TE_15 gleichartig mit den Eingangssignalen verbunden sind, aber verschiedene Anordnungen 104, 106, 108 und 1 10 sich voneinander unterscheiden können.
Die Transformationselemente TE_0, TE_1 , TE_2, TE_15 bilden aus dem ihnen zugeführten Eingangssignal 102 ein vorliegend nicht näher spezifiziertes Ausgangssignal. Diese Ausgangssignale werden kombiniert und darauf eine Signatur S 120 mit 256 Bit erhalten. Die Transformationselemente TE_0, TE_1 , TE_2, TE_15 weisen jeweils einen Zustandsautomaten ZA bzw. eine Zustandsmaschine auf, dessen bzw. deren Zustandsinformationen bspw. in Form eines digitalen Datenworts vorgebbarer Breite gespeichert sind. Beispielsweise kann die Zustandsmaschine ZA eine Speicherkapazität von 4 Bit aufweisen, so dass insgesamt 16 verschiedene Zustände möglich sind. Die Zustandsmaschi- nen ZA jeweils einer Anordnung 104, 106, 108, 1 10 sind gleichartig ausgebildet.
Gleichartig bedeutet, dass jede Zustandsmaschine ZA, ausgehend von identischen Eingangssignalen 102 und einem identischen Initialisierungszustand, denselben Folgezustand in einem nachfolgenden Verarbeitungszyklus wie eine andere gleichartige Zustandsmaschine ZA annehmen wird.
Es ist weiterhin vorgesehen, dass jede Zustandsmaschine ZA stets jeweils einen anderen Zustand aufweist als alle anderen Zustandsmaschinen ZA der entsprechenden Anordnungen 104, 106, 108 oder 1 10. Dadurch werden DPA-Attacken erschwert, die aus der Analyse einer elektrischen Strom- und/oder Leistungsauf- nähme oder von Storabstrahlungen versuchen, Rückschlüsse auf einen internen
Verarbeitungszustand der Schaltungsanordnung 100 bzw. der einzelnen Transformationselemente TE_0, TE_1 , TE_2, TE_15 zu ziehen.
Es ist von Vorteil, wenn die Anzahl der vorgesehenen Transformationselemente TE_0, TE_1 , TE_2, TE_15 der Anzahl der maximal möglichen verschiedenen
Zuständen der Zustandsmaschine ZA entspricht, in diesem Fall sechzehn. Dadurch liegt stets, d. h. zu jedem Verarbeitungszyklus, jeder theoretisch mögliche Zustand in genau einer Zustandsmaschine ZA vor, so dass nach außen, d. h. gegenüber einem möglichen Angreifer, der eine DPA-Attacke führt, jeweils nur eine Kombination aller sechzehn möglichen Zustände "sichtbar" ist. Auch in einem darauffolgenden Verarbeitungszyklus, bei dem zwar die einzelnen Zu-
Standsmaschinen ZA jeweils ihren Zustand entsprechend einer vorgegebenen Regel ändern, liegt wiederum insgesamt in jedem der sechzehn Zustandsmaschinen ZA genau einer der sechzehn möglichen Zustände vor, so dass nach außen wiederum alle sechzehn Zustände gleichzeitig "sichtbar" sind.
Das hat zur Folge, dass ein möglicher Angreifer aus einer entsprechenden elektromagnetischen Abstrahlung, die bei einer üblichen Realisierung der Schaltungsanordnung 100 gegeben ist, oder auch aus der elektrischen Leistungsaufnahme der Schaltungsanordnung 100, nicht auf einen Zustand der internen Sig- nalverarbeitung in den Transformationselementen TE_0, TE_1 , TE_2, TE_15 schließen kann. Bei einer ideal symmetrischen Auslegung aller Komponenten ist die elektrische Leistungsaufnahme stets konstant, so dass das abgestrahlte elektromagnetische Feld jeweils keine signifikanten Änderungen bei einem Zu- standswechsel zwischen aufeinanderfolgenden Verarbeitungszyklen erfährt. Aus der Signatur S 120 wird durch eine lineare Verknüpfung in Block 122 ein Bitvektor 130 mit 128 Bit erzeugt. Die lineare Verknüpfung kann bspw. eine EXOR- oder auch eine EXNOR-Verknüpfung sein. Um dem potenziellen Angreifer die Arbeit weiterhin zu erschweren, werden die Ausgänge der verschiedenen Transformationselemente vor der linearen Verknüpfung vertauscht. Eine sinnvolle Maßnahme ist dazu die Rotation der Zustände innerhalb einer Anordnung in Abhängigkeit von den Eingangsdaten.
Der dargestellte Maskengenerator 100 benutzt die sogenannte nichtlineare Signaturbildung. Es ist somit bekannt, wie man aus p gleich aufgebauten Zustands- maschinen mit jeweils q Zustandsbits eine Struktur aufbauen kann, die eine vom jeweiligen Zustand dieser Zustandsmaschinen unabhängige Stromaufnahme besitzt. Dazu muss man einen kompletten Satz der Zustandsmaschinen (COmplete Set of State MAchines COSSMA) bereitstellen. Das liegt genau dann vor, wenn p = 2q ist. Hat nun jede Zustandsmaschine einen anderen Anfangszustand, so lie- gen in den p*q Bits zwangsläufig (p*q)/2 Einsen und genauso viele Nullen vor.
Werden weiterhin alle diese Zustandsmaschinen einer solchen Anordnung mit den gleichen Eingangssignalen versehen. Hat jede dieser Zustandsmaschinen bei einem beliebigen Eingangssignal immer einen eindeutigen Nachfolge- und einen eindeutigen Vorgängerzustand, so sind die Zustände der m Zustandsma- schinen zu jeder Zeit voneinander verschieden und es muss sich deshalb zwangsläufig um einen kompletten Satz aller möglichen Zustände handeln. Es
liegt somit zu jedem Zeitpunkt der Verarbeitung von Eingangsdaten ein (p*q)/2 aus (p*q) Code vor.
In einem praktischen Beispiel ist q = 4 und somit p = 24 = 16. Die 16 Zustands- maschinen haben dann immer die Zustände 0, 1 , 2, ... ,15 vorliegen, nur die Position dieser Zustände wechselt beliebig. Mit p * q = 64 liegen immer genau 32 Einsen und 32 Nullen an den Ausgängen aller dieser Zustandsmaschinen vor. Mit einem Code-Checker, wie oben nach dem Stand der Technik beschrieben, könnte man diesen 32 aus 64 Code prüfen. Ein solcher Code-Checker wäre aber sehr aufwendig, weil schon in einer ersten Reduktionsstufe in einem Schaltkreis für eine gewichtete Mittelwertbildung zur Codereduzierung, einem sogenannten Weight Averaging Circuit WAC, 32 Volladierer-Zellen und zusätzlich zwei Flip- Flops benötigt würden. In der zweiten Stufe wären dann 16 Volladdierer und zwei Flip-Flops notwendig und so fort, bis nur noch 2 Volladdierer und zwei Flip-Flops notwendig wären. Mit 62 Volladdierern (ca. 8 GE), 10 Flip-Flops (ca. 8 GE) und 6
Dual-Rail-Checkern (ca. 4 GE) wäre der Gesamtaufwand mit ungefähr 600 Gatter-Äquivalenten (GE) anzusetzen. Wenn man das für eine 4-fache Struktur mit 4 * 64 Bits durchführen würde, so hätte man insgesamt ca. 2400 Gatter an Schaltungsaufwand in der parallelen Realisierung.
Die erfindungsgemäße Realisierung nutzt dagegen aus, dass in den gleichen Bitpositionen der Zustandsmaschinen zu jedem Zeitpunkt gleich viele Einsen vorhanden sind. Dadurch kann man die Prüfung aufteilen und jeweils nur 16 Bits in einem Prüfschritt testen. Die weiteren 3 x 16 Bits testet man dann in drei weite- ren Prüfschritten. Anders als bei den nach dem Stand der Technik vorgesehenen
Code-Checkern kann man die Flip-Flops vor und nach den Volladdierern im Weight Averaging Circuit vollständig einsparen, wenn man einen in der Schaltung ohnehin vorhandenen Zähler ausnutzt und jeweils ein Bit davon auf einen Weight Averaging Circuit WAC (Codereduzierer) bspw. als Eingang x0 benutzt. Um die Schaltung selbsttestend zu realisieren, müssen die Carry-in-Eingänge der Weight-Averaging-Schaltung und der Dual-Rail-Checker alle möglichen Kombinationen mindestens einmal annehmen.
In Figur 2 ist eine solche Weight-Averaging-Schaltung (Codereduzierer) WAC_16 (ohne die nach dem Stand der Technik üblichen Flip-Flops) für 16 Eingangsbits d0 ... dis gezeigt. Die Darstellung verdeutlicht 16 Zustandsmaschinen 200 mit je-
weils 4 Bits, von denen in dieser Darstellung 5 wiedergegeben sind. Weiterhin sind gemäß Figur 2 acht Volladdierer 202 vorgesehen, von denen der Übersichtlichkeit wegen nur drei dargestellt sind, und ein Nicht-Gatter 204. Mit einer gestrichelten Linie umrandet ist ein Codereduzierer (WAC) 206 gezeigt. Dieser stellt eine Stufe 220 eines in Figur 3 gezeigten dreistufigen Codereduzierers dar, in dem diese Stufe 220 mit dem Bezugszeichen 304 gekennzeichnet ist.
Als Eingangsbits werden in dieser Schaltung die MSBs der 16 Zustandsmaschi- nen benutzt. Haben die 16 Zustandsmaschinen alle einen anderen Zustand, so sind in den 16 Eingangsbits genau 8 Einsen enthalten (8 aus 16 Code). Wie in der Literatur nach dem Stand der Technik gezeigt (Stroele, Tarnick), wird an den 8 Ausgängen w'0, w'-ι, ...w'7 von 304 ein 4 aus 8 Code genau dann generiert, wenn der Eingang ein 8 aus 16 Code war und die Reduzier-Schaltung keinen Fehler enthält. Der Eingang x0 erzeugt einen Ausgang x-ι mit x-ι = /x0, wenn kein Fehler vorliegt. Für dieses erste Signalpaar liegt somit ein 1 aus 2 Code vor. Um die Eigenschaft des Selbsttestens zu gewährleisten, muss x0 häufig wechseln und auch d0 ... di5 sollten nicht konstant sein.
Mit sumn (n = 0, 1 , 2 ...) sind Summenbits, mit cinn (n = 0, 1 , 2, ...) sind Übertrags- Eingangsbits der Volladdierer bezeichnet. coutn (n = 0, 1 , 2 ...) sind die Über- trags-Ausgangsbits (die Ausgänge der Volladdierer 202), die als Signale wn (n = 0, 1 , 2 ...) in die nächste Stufe überführt werden.
In Figur 3 wird schließlich ein dreistufiger Codereduzierer dargestellt. Die Darstellung zeigt wiederum Zustandsmaschinen 300 mit jeweils 4 Bits, eine entsprechende Anzahl an 4 zu 1 Multiplexern 302, einen ersten WAC 304 (WAC_16), einen zweiten WAC 306 (WAC_8) und einen dritten WAC 308 (WAC_4) sowie einen Zähler 310. Neben dem vorstehend beschriebenen Signalpaar x0, Xi liegen an der anderen Stufe die Signalpaare x2, Xß bzw. X4, x5 vor, die im fehlerfreien Fall auch einem 1 aus 2 Code entsprechen. Diese Signalpaare werden zusammen mit dem reduzierten Code geprüft. Es wird vorstehend von einem mehrstufigen Codereduzierer gesprochen. Die in Figur 3 dargestellte Anordnung kann auch als eine Anordnung bezeichnet werden, die drei Codereduzierer, WAC 304
(WAC_16), WAC 306 (WAC_8) und WAC 308 (WAC_4), umfasst.
Dabei werden über die Zählerbits e0 und ei alle 4 zu 1 Multiplexer 302 gleichartig so angesteuert, dass sie jeweils das gleiche Positionsbit der Zustandsmaschine 300 als Bit g, auswählen. Je nach den 4 Zuständen dieser 2 Zählerbits wird somit ein bestimmtes Bit aus jeweils einer der angeschlossenen 16 Zustandsmaschi- nen 300 auswählt, das dann im WAC_16 304 verarbeitet wird. Diese Eingänge sollten im fehlerfreien Fall einem 8 aus 16 Code entsprechen. Die 8 Ausgänge w'o ... w'7 des WAC_16 ergeben einen 4 aus 8 Code und werden mit den Eingängen des WAC_8 306 verbunden. Der WAC_8 306 ist ähnlich wie der WAC_16 304 aufgebaut, hat aber nur halb so viele Volladdierer und das letzte Summenbit wird invertiert auf den Ausgang x3 geschaltet. Der dann weiter vorgesehene
WAC_4 308 hat nur zwei Volladdierer und zwei Ausgänge, auf die das Carry-Out dieser Volladdierer geschaltet wird: x6 und x7. Der zusätzliche Ausgang x5 ist der invertierte Summenausgang des zweiten Volladdierers im WAC_4 308. Im fehlerfreien Fall liefern die jeweiligen Paare x0 und x-i , x2 und x3, x4 und x5 sowie x6 und x7 jeweils einen "Dual-Rail-Code" (oder 1 aus 2 Code), d. h. immer genau ein Signal dieser Paare ist 1 . Es genügt nun zu testen, ob diese Eigenschaft für alle diese Signalpaare erfüllt ist. Diese Prüfung wird in sogenannten Code Ckeckern, bspw. einem Two-Rail-Code-Checker TRC nach Figur 4, vorge- nommen.
Dabei ist e2 ... e0 ein event counter, der mit jedem Code-Check (jeweils 16 Bits der 64 werden in 4 Phasen geprüft) weitergezählt wird. Figur 4 zeigt einen Code-Checker 400, in diesem Fall einen Two-Rail-Checker
TRC. Dieser TRC 400 hat einen ersten Eingang 402 und einen zweiten Eingang 404. Weiterhin zeigt die Darstellung zwei Komplexgatter, die jeweils zweimal zwei verschiedene Eingänge durch ein UND-Element 406 verknüpfen, die zwei Ausgänge dieser UND-Elemente 406 anschließend durch ein Oder-Element 408 verknüpfen und invertieren. Die UND-ODER- und Invertierungselemente können dabei in einem Komplexgatter so realisiert werden, dass sie nicht vereinzelbar sind oder auch in separaten Elementen.
Der TRC 400 bildet aus zwei dual-rail-codierten Signalen an den beiden Eingängen 402 und 404 ein Dual-Rail-Ausgangssignal an einem Ausgang 412. Wenn der Dual-Rail-Code bei beiden Eingangssignalpaaren der Eingänge 402 und 404
nicht verletzt ist und der TRC 400 selbst fehlerfrei arbeitet, wird der Ausgang 412 auch als Dual-Rail-Paar gebildet.
Wie in Figur 5 gezeigt, können die x-Signale von Figur 3 in solchen TRCs zu einem einzigen Dual-Rail-Paar zusammengefasst werden. Die Figur zeigt einen ersten TRC 500, einen zweiten TRC 502, einen dritten TRC 504, ein
Äquivalenzglied 506 und ein Antivalenzelement 508.
Ein Codefehler liegt dann vor, wenn diese beiden Ausgangssignale des dual rail checkers 504 gleich sind. Es wird das Signal "error" 510 gleich 1 und„nicht error" 512 gleich 0, sobald die beiden Ausgänge von 504 gleich sind. Im fehlerfreien Fall ist 510 gleich 0 und 512 gleich 1. Wenn die Einganssignale x0, X2 und x4 jede beliebige Kombination annehmen, so sind die TRC self-testing. Diese Eigenschaft wird durch die Zählerbits e2 ... e0 gewährleistet, wenn der Zähler von 0 bis 7 durchzählt. Der Code des Zählers ist beliebig (Binärcode, Graycode, Exzess-3- Code, vorwärts oder rückwärts zählend), wenn nur alle Belegungen der benutzten Bits in der Folge auftreten. Das Signal "error" am Ausgang 510 des
Äquivalenzglieds 506 in Figur 5 bedeutet entweder einen Codefehler oder einen Fehler im Code-Checker selbst. Um einem Fehler im Äquivalenzglied 506 selbst (das das Error-Signal an einem Ausgang 510 ausgibt) zu erkennen, wird redundant das Signal /error über das Antivalenzelement 508 (EXOR) an einem Ausgang 512 ausgegeben.
Der Code-Checker nach Figur 5 in Zusammenhang mit den Codereduzierern bzw. dem mehrstufigen Codereduzierer aus Figur 3 kann nun im Maskengenerator gemäß Figur 1 wie folgt verwendet werden:
1 . Prüfung erfolgt sofort in der Eingabephase von jeweils 16 Codebits einer COSSMA-Anordnung (COSSMA, COmplete Set of State MAchines), im vorstehenden Beispiel 16 Zustandsmaschinen mit jeweils 4 Bits. Durch diese parallele Prüfung während der Generierung der Maske können bei jedem Eingangsvektor (einschließlich der Parities) jeweils 16 der 64 Bits einer
COSSMA-Anordnung geprüft werden. Nach vier Takten ist jeweils die gesamte COSSMA-Anordnung geprüft. Treten Fehler auf, so wird die weitere Mas- kengenerierung abgebrochen. Das verhindert, dass ein Angreifer das durch einen eingeschleusten Fehler veränderte Stromprofil der gestörten Schaltung
beobachten kann. Es muss jedoch verhindert werden, dass die Selbsttestschaltung selbst einem Angreifer mehr Möglichkeiten zu einem Angriff bietet. Das wird insbesondere dadurch erschwert, dass der Angreifer Hypothesen auf alle Bits des Initialzustandes eines COSSMA setzen muss. Da die Ein- gangsbits auf alle Zustandsmaschinen einer COSSMA-Anordnung gleichartig wirken, ist ein Angriff auf einzelne Zustandsbits nicht erfolgversprechend.
2. Die Prüfung nach erfolgter Rotation. Diese Variante hat den Vorteil, dass die einzelnen Zustandsmaschinen im Mittel von allen Bits des Anfangszustands eines COSSMA abhängen. Weiterhin hat dieses Verfahren den Vorteil, dass ein erst nach der Rotation eingeschleuster Fehler erkannt wird und die Generierung einer Maske auch dann noch verhindert wird. Ein Nachteil ist, dass in der Eingabephase eingeschleuste Fehler nicht erkannt werden und dann das geänderte Stromverhalten von einem Angreifer ggf. ausgenutzt werden kann.
3. Ein Kombination von 1. und 2.: Die COSSMA werden ständig für jeweils 16 Bits überwacht. Die vorgeschlagene Schaltung benötigt 14 Volladdierer (je 8 GE), 3 Inverter (je
0,5 GE), 16 x 4:1 Multiplexer (je 7,5 GE), 3 TRC (je 4 GE) und 2 XOR/XNOR (je 2,5 GE). In der Gesamtzahl sind das ca. 250 GE und damit deutlich weniger als der oben genannte Vorschlag mit 600 GE. Für 4 COSSMA-Strukturen benötigt man somit entweder 4 x 250 = 1000 GE, oder man führt die Operation für die 4 Strukturen nacheinander auf der gleichen Hardware durch und benötigt zusätzlich 64 x 4:1 Multiplexer mit 480 GE, d. h. ca. 750 GE insgesamt.
In einer Verallgemeinerung des erfindungsgemäßen Verfahrens, sind auch andere Codes, die nicht der Bedingung m = n/2 genügen, überprüfbar.
Für den Fall, dass m + n/2 ist, lässt sich der m aus n Code nicht über mehrere Stufen auf zwei Bits wie in Figur 2 (x6 und x7) zurückführen. Sind bspw. m = 4 und n = 16, so sind nur zwei Stufen in der gezeigten Art möglich. Die Ausgänge w"0 ... w"3 bilden dann einen 1 aus 4 Code, der mit üblichen Code-Checkern ge- prüft werden kann und einen Dual-Rail-Ausgang liefert.
Sind m = 2 und n = 16, so ist nur die erste Stufe nach Figur 2 durchführbar. Der Code an den Ausgängen w'O... w'7 ist ein 1 -out-of-8, der ebenso mit üblichen Code-Checkern geprüft werden kann und einen Dual-Rail-Ausgang liefert.
Diese Dual-Rail-Ausgänge der üblichen Code-Checker werden in den TRCs ge- mäß Figur 4 mit den anderen Dual-Rail-Signalpaaren geprüft.
Es wird somit in Ausgestaltung eine Schaltungsanordnung zur Prüfung eines m aus n Codes mit mindestens einem Code-Checker beschrieben, die insbesondere zur Durchführung des vorgestellten Verfahrens geeignet ist, wobei dem min- destens einen Code-Checker mindestens ein Codereduzierer bzw. ein ein- oder mehrstufiger Codereduzierer zugeordnet ist, wobei mindestens eine Stufe dieses Codereduzierers aus mehreren Volladdierern besteht, in der ersten Stufe n/2 Volladdierer benutzt werden, in der das Summenbit eines Volladdierers jeweils auf den Übertragseingang des nächsten Volladdierers geführt wird und die n/2 Übertragsbits der n/2 Volladdierer ausgegeben werden. Weiterhin kann vorgesehen sein, dass der Übertragseingang des ersten Volladdierers mit dem Ausgang von einem ersten Zählerbit verbunden ist und der Summenausgang des letzten Volladdierers ausgegeben wird, und dass das erste Zählerbit und das Summenbit des letzten Volladdierers ein erstes Signalpaar bilden.
Weiterhin kann vorgesehen sein, dass die zweite Stufe des Code-Checkers aus n/4 Volladdierern besteht und dass die n/2 Ausgangsbits der ersten Stufe mit den Operandeneingängen der n/4 Volladdierer der zweiten Stufe des Code-Checkers verbunden sind, wobei die Summenbits der Volladdierer jeweils auf den
Übertragseingang des nächsten Volladdierers geschaltet sind und die n/4
Übertragsbits der n/4 Volladdierer ausgegeben werden, wobei auf den
Übertragseingang des ersten Volladdierers der zweiten Stufe ein zweites Zählerbit geschaltet ist und dieses zweite Zählerbit zusammen mit dem ausgegebenen Summenbit des letzten Volladdierers der zweiten Stufe ein zweites Signalpaar bilden.
Außerdem können weitere Stufen des Codereduzierers angefügt werden, solange bis nur noch 2 Übertragsbits von 2 Volladdierern ausgegeben werden können, die ein Dual-Rail-Signalpaar bilden (für m = n/2) oder ein anderer geeigneter Code-Checker an eine der Stufen angeschlossen wird (für m + n/2) und entweder die letzte Stufe für den Fall m = n/2 ein letztes Signalpaar aus dem angeschlos-
senen letzten Zählerbit und dem Summenausgang des zweiten Volladdierers gebildet wird oder ein Code-Checker den Code der vorangegangenen Stufe prüft und ein Dual-Rail-Signalpaar ausgibt.
Für die Signalpaare (erstes, zweites, ... letztes) kann jeweils ein Signal invertiert und damit modifizierte Signalpaare gebildet werden. Diese modifizierten Signalpaare zusammen mit dem Dual-Rail-Signalpaar werden so miteinander verbundenen zu einem Two-Rail-Checker geführt, dass ein letzter Two-Rail-Checker ein Signalpaar ausgibt, das im Falle der Fehlerfreiheit des Codes und des Code- Checkers einen 1 -out-of-2 Code bildet und damit auf Fehler im m-out-of-n Code oder in der Prüfschaltung selbst geprüft werden kann.
Die besagten Zählerbits können so variieren, dass alle Zustände dieser Zählerbits während aufeinanderfolgender Prüfschritte (von einem oder mehreren Codeworten) eingenommen werden und dass mit verschiedenen Zählerbits verschiedene Codeworte zur Prüfung ausgewählt werden können.
Des Weiteren lässt sich der zu prüfende m-out-of-n Code in mehrere Teilcodes aufspalten. Diese Teilcodes können nacheinander auf dem gleichen Code- Checker geprüft werden. Die Eingänge des Code-Checkers können dazu zwischen den verschiedenen Teilcodes umgeschaltet werden.
Alternativ können diese Teilcodes gleichzeitig auf verschiedenen Code-Checkern geprüft werden.
Claims
Ansprüche
1 . Verfahren zum Prüfen eines m aus n Codes mit mindestens einem Code- Checker (400), dem mindestens ein Codereduzierer (206, 304, 306, 308) zugeordnet ist, wobei in dem mindestens einen Codereduzierer (206, 304, 306, 308) eine Reduzierung der Codewortbreite auf jeweils die Hälfte vorgenommen wird, solange bis ein 1 aus x (x = n/2, n/4, n/8 ...) Code oder ein anderer nicht weiter auf diese Art reduzierbarer Code vorliegt, wobei jeder von dem mindestens einen Codereduzierer (206, 304, 306, 308) zusätzlich mit unterschiedlichen Bits eines Zählers verbunden ist, wobei der aus 1 aus x Code oder der nicht weiter reduzierbare Code geprüft wird und zusätzlich die Signalpaare jedes von dem mindestens einen Codereduzierer (206, 304, 306, 308) geprüft werden.
2. Verfahren nach Anspruch 1 , bei dem mehrere Codereduzierer (206, 304, 306, 308) zugeordnet sind.
3. Verfahren nach Anspruch 1 oder 2, bei dem die Codeprüfung mehrfach für verschiedene Teilcodes durchgeführt wird.
4. Verfahren nach Anspruch 3, bei dem für jede Teilcodeprüfung unterschiedliche Zählerzustände vorliegen.
5. Verfahren nach Anspruch 3 oder 4, bei dem die Teilcodes nacheinander mit dem gleichen Code-Checker (400) geprüft werden.
6. Verfahren nach Anspruch 3 oder 4, bei dem die Teilcodes mit verschiedenen Code-Checkern (400) geprüft werden.
7. Verfahren nach einem der Ansprüche 1 bis 6, bei dem wenigstens einer von dem mindestens einen Codereduzierer (206, 304, 306, 308) mehrere Volladdierer umfasst, wobei in einem ersten Codereduzierer (206, 304, 306,
308) n/2 Volladdierer (202) verwendet werden, wobei ein Summenbit eines Volladdieres (202) jeweils auf einen Übertragseingang des nächsten
Volladdieres (202) geführt wird und die n/2 Übertragsbits der n/2 Volladdierer (202) ausgegeben werden, wobei der Übertragseingang des ersten
Volladdierers (202) mit dem Ausgang von einem ersten Zählerbit verbunden ist und dieses Signal mit dem Summenausgang des letzten Volladdierers (202) ein erstes Signalpaar bilden.
Verfahren nach einem der Ansprüche 1 bis 7, bei dem ein zweiter
Codereduzierer (206, 304, 306, 308) n/4 Volladdierer umfasst und n/2 Ausgangsbits der ersten Stufe (220) mit Operandeneingängen der Volladdierer (202) des zweiten Codereduzierers (206, 304, 306, 308) verbunden sind, wobei Summenbits der Volladdierer (202) jeweils auf den Übertragseingang des nächsten Volladdierers (202) geschaltet sind und die n/4 Übertragsbits der n/4 Volladdierer (202) ausgegeben werden, wobei auf den
Übertragseingang des ersten Volladdierers (202) der zweiten Stufe (220) ein zweites Zählerbit geschaltet ist und dieses zweite Zählerbit zusammen mit dem ausgegebenen Summenbit des letzten Volladdierers (202) der zweiten Stufe (220) ein zweites Signalpaar bilden.
Verfahren nach Anspruch 7 oder 8, bei dem für die Signalpaare jeweils ein Signal invertiert wird und damit modifizierte Signalpaare gebildet werden.
10. Schaltungsanordnung zum Prüfen eines m aus n Codes mit einem Code- Checker (400), dem mindestens ein Codereduzierer (206, 304, 306, 308) zugeordnet ist, wobei wenigstens einer von dem mindestens einen
Codereduzierer (206, 304, 306, 308) mehrere Volladdierer (202) umfasst, wobei der erste Codereduzierer (206, 304, 306, 308) n/2 Volladdierer (202) verwendet werden, wobei ein Summenbit eines Volladdierers (202) jeweils auf einen Übertragseingang des nächsten Volladdierers (202) geführt wird und die n/2 Übertragsbits der n/2 Volladdierer ausgegeben werden, wobei der Übertragseingang des ersten Volladdierers (202) mit dem Ausgang von einem ersten Zählerbit verbunden ist und dieses Signal mit dem Summenausgang des letzten Volladdierers (202) das erste Signalpaar bilden.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201280033195.9A CN103650407A (zh) | 2011-07-05 | 2012-06-19 | 用于检查n中取m码的方法 |
US14/130,835 US20140230055A1 (en) | 2011-07-05 | 2012-06-19 | Method for checking an m out of n code |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102011078642A DE102011078642A1 (de) | 2011-07-05 | 2011-07-05 | Verfahren zum Prüfen eines m aus n Codes |
DE102011078642.2 | 2011-07-05 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2013004489A1 true WO2013004489A1 (de) | 2013-01-10 |
Family
ID=46456524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/EP2012/061706 WO2013004489A1 (de) | 2011-07-05 | 2012-06-19 | Verfahren zum prüfen eines m aus n codes |
Country Status (4)
Country | Link |
---|---|
US (1) | US20140230055A1 (de) |
CN (1) | CN103650407A (de) |
DE (1) | DE102011078642A1 (de) |
WO (1) | WO2013004489A1 (de) |
Families Citing this family (125)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8677377B2 (en) | 2005-09-08 | 2014-03-18 | Apple Inc. | Method and apparatus for building an intelligent automated assistant |
US9318108B2 (en) | 2010-01-18 | 2016-04-19 | Apple Inc. | Intelligent automated assistant |
US8977255B2 (en) | 2007-04-03 | 2015-03-10 | Apple Inc. | Method and system for operating a multi-function portable electronic device using voice-activation |
US10002189B2 (en) | 2007-12-20 | 2018-06-19 | Apple Inc. | Method and apparatus for searching using an active ontology |
US9330720B2 (en) | 2008-01-03 | 2016-05-03 | Apple Inc. | Methods and apparatus for altering audio output signals |
US20100030549A1 (en) | 2008-07-31 | 2010-02-04 | Lee Michael M | Mobile device having human language translation capability with positional feedback |
US8676904B2 (en) | 2008-10-02 | 2014-03-18 | Apple Inc. | Electronic devices with voice command and contextual data processing capabilities |
US10706373B2 (en) | 2011-06-03 | 2020-07-07 | Apple Inc. | Performing actions associated with task items that represent tasks to perform |
US10276170B2 (en) | 2010-01-18 | 2019-04-30 | Apple Inc. | Intelligent automated assistant |
US8682667B2 (en) | 2010-02-25 | 2014-03-25 | Apple Inc. | User profiling for selecting user specific voice input processing information |
US9262612B2 (en) | 2011-03-21 | 2016-02-16 | Apple Inc. | Device access using voice authentication |
US10057736B2 (en) | 2011-06-03 | 2018-08-21 | Apple Inc. | Active transport based notifications |
US10134385B2 (en) | 2012-03-02 | 2018-11-20 | Apple Inc. | Systems and methods for name pronunciation |
US10417037B2 (en) | 2012-05-15 | 2019-09-17 | Apple Inc. | Systems and methods for integrating third party services with a digital assistant |
BR112015018905B1 (pt) | 2013-02-07 | 2022-02-22 | Apple Inc | Método de operação de recurso de ativação por voz, mídia de armazenamento legível por computador e dispositivo eletrônico |
US10652394B2 (en) | 2013-03-14 | 2020-05-12 | Apple Inc. | System and method for processing voicemail |
US10748529B1 (en) | 2013-03-15 | 2020-08-18 | Apple Inc. | Voice activated device for use with a voice-based digital assistant |
WO2014197335A1 (en) | 2013-06-08 | 2014-12-11 | Apple Inc. | Interpreting and acting upon commands that involve sharing information with remote devices |
EP3937002A1 (de) | 2013-06-09 | 2022-01-12 | Apple Inc. | Vorrichtung, verfahren und grafische benutzeroberfläche für gesprächspersistenz über zwei oder mehrere instanzen eines digitalen assistenten |
US10176167B2 (en) | 2013-06-09 | 2019-01-08 | Apple Inc. | System and method for inferring user intent from speech inputs |
US10296160B2 (en) | 2013-12-06 | 2019-05-21 | Apple Inc. | Method for extracting salient dialog usage from live data |
TWI566107B (zh) | 2014-05-30 | 2017-01-11 | 蘋果公司 | 用於處理多部分語音命令之方法、非暫時性電腦可讀儲存媒體及電子裝置 |
US10170123B2 (en) | 2014-05-30 | 2019-01-01 | Apple Inc. | Intelligent assistant for home automation |
US9430463B2 (en) | 2014-05-30 | 2016-08-30 | Apple Inc. | Exemplar-based natural language processing |
US9715875B2 (en) | 2014-05-30 | 2017-07-25 | Apple Inc. | Reducing the need for manual start/end-pointing and trigger phrases |
US9633004B2 (en) | 2014-05-30 | 2017-04-25 | Apple Inc. | Better resolution when referencing to concepts |
TWI712915B (zh) * | 2014-06-12 | 2020-12-11 | 美商密碼研究公司 | 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體 |
US9338493B2 (en) | 2014-06-30 | 2016-05-10 | Apple Inc. | Intelligent automated assistant for TV user interactions |
US9818400B2 (en) | 2014-09-11 | 2017-11-14 | Apple Inc. | Method and apparatus for discovering trending terms in speech requests |
US10074360B2 (en) | 2014-09-30 | 2018-09-11 | Apple Inc. | Providing an indication of the suitability of speech recognition |
US9668121B2 (en) | 2014-09-30 | 2017-05-30 | Apple Inc. | Social reminders |
US10127911B2 (en) | 2014-09-30 | 2018-11-13 | Apple Inc. | Speaker identification and unsupervised speaker adaptation techniques |
US10152299B2 (en) | 2015-03-06 | 2018-12-11 | Apple Inc. | Reducing response latency of intelligent automated assistants |
US9721566B2 (en) | 2015-03-08 | 2017-08-01 | Apple Inc. | Competing devices responding to voice triggers |
US9886953B2 (en) | 2015-03-08 | 2018-02-06 | Apple Inc. | Virtual assistant activation |
US10567477B2 (en) | 2015-03-08 | 2020-02-18 | Apple Inc. | Virtual assistant continuity |
US10460227B2 (en) | 2015-05-15 | 2019-10-29 | Apple Inc. | Virtual assistant in a communication session |
US10200824B2 (en) | 2015-05-27 | 2019-02-05 | Apple Inc. | Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device |
US10083688B2 (en) | 2015-05-27 | 2018-09-25 | Apple Inc. | Device voice control for selecting a displayed affordance |
US9578173B2 (en) | 2015-06-05 | 2017-02-21 | Apple Inc. | Virtual assistant aided communication with 3rd party service in a communication session |
US11025565B2 (en) | 2015-06-07 | 2021-06-01 | Apple Inc. | Personalized prediction of responses for instant messaging |
DE102015211108A1 (de) * | 2015-06-17 | 2016-12-22 | Robert Bosch Gmbh | Vorrichtung und Verfahren zur Ausführung eines Rechenverfahrens |
US20160378747A1 (en) | 2015-06-29 | 2016-12-29 | Apple Inc. | Virtual assistant for media playback |
US10740384B2 (en) | 2015-09-08 | 2020-08-11 | Apple Inc. | Intelligent automated assistant for media search and playback |
US10747498B2 (en) | 2015-09-08 | 2020-08-18 | Apple Inc. | Zero latency digital assistant |
US10331312B2 (en) | 2015-09-08 | 2019-06-25 | Apple Inc. | Intelligent automated assistant in a media environment |
US10671428B2 (en) | 2015-09-08 | 2020-06-02 | Apple Inc. | Distributed personal assistant |
US11010550B2 (en) * | 2015-09-29 | 2021-05-18 | Apple Inc. | Unified language modeling framework for word prediction, auto-completion and auto-correction |
US10691473B2 (en) | 2015-11-06 | 2020-06-23 | Apple Inc. | Intelligent automated assistant in a messaging environment |
US10956666B2 (en) | 2015-11-09 | 2021-03-23 | Apple Inc. | Unconventional virtual assistant interactions |
US10049668B2 (en) | 2015-12-02 | 2018-08-14 | Apple Inc. | Applying neural network language models to weighted finite state transducers for automatic speech recognition |
US10223066B2 (en) | 2015-12-23 | 2019-03-05 | Apple Inc. | Proactive assistance based on dialog communication between devices |
US11227589B2 (en) | 2016-06-06 | 2022-01-18 | Apple Inc. | Intelligent list reading |
US10097572B1 (en) * | 2016-06-07 | 2018-10-09 | EMC IP Holding Company LLC | Security for network computing environment based on power consumption of network devices |
US10049663B2 (en) | 2016-06-08 | 2018-08-14 | Apple, Inc. | Intelligent automated assistant for media exploration |
US10586535B2 (en) | 2016-06-10 | 2020-03-10 | Apple Inc. | Intelligent digital assistant in a multi-tasking environment |
DK201670540A1 (en) | 2016-06-11 | 2018-01-08 | Apple Inc | Application integration with a digital assistant |
DK179415B1 (en) | 2016-06-11 | 2018-06-14 | Apple Inc | Intelligent device arbitration and control |
US10419931B1 (en) | 2016-08-25 | 2019-09-17 | EMC IP Holding Company LLC | Security for network computing environment using centralized security system |
US10474753B2 (en) | 2016-09-07 | 2019-11-12 | Apple Inc. | Language identification using recurrent neural networks |
US10043516B2 (en) | 2016-09-23 | 2018-08-07 | Apple Inc. | Intelligent automated assistant |
US11281993B2 (en) | 2016-12-05 | 2022-03-22 | Apple Inc. | Model and ensemble compression for metric learning |
US11204787B2 (en) | 2017-01-09 | 2021-12-21 | Apple Inc. | Application integration with a digital assistant |
DK201770383A1 (en) | 2017-05-09 | 2018-12-14 | Apple Inc. | USER INTERFACE FOR CORRECTING RECOGNITION ERRORS |
US10417266B2 (en) | 2017-05-09 | 2019-09-17 | Apple Inc. | Context-aware ranking of intelligent response suggestions |
DK180048B1 (en) | 2017-05-11 | 2020-02-04 | Apple Inc. | MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION |
US10726832B2 (en) | 2017-05-11 | 2020-07-28 | Apple Inc. | Maintaining privacy of personal information |
DK201770439A1 (en) | 2017-05-11 | 2018-12-13 | Apple Inc. | Offline personal assistant |
US10395654B2 (en) | 2017-05-11 | 2019-08-27 | Apple Inc. | Text normalization based on a data-driven learning network |
DK201770427A1 (en) | 2017-05-12 | 2018-12-20 | Apple Inc. | LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT |
DK179745B1 (en) | 2017-05-12 | 2019-05-01 | Apple Inc. | SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT |
DK179496B1 (en) | 2017-05-12 | 2019-01-15 | Apple Inc. | USER-SPECIFIC Acoustic Models |
US11301477B2 (en) | 2017-05-12 | 2022-04-12 | Apple Inc. | Feedback analysis of a digital assistant |
DK201770431A1 (en) | 2017-05-15 | 2018-12-20 | Apple Inc. | Optimizing dialogue policy decisions for digital assistants using implicit feedback |
DK201770432A1 (en) | 2017-05-15 | 2018-12-21 | Apple Inc. | Hierarchical belief states for digital assistants |
US10403278B2 (en) | 2017-05-16 | 2019-09-03 | Apple Inc. | Methods and systems for phonetic matching in digital assistant services |
DK179560B1 (en) | 2017-05-16 | 2019-02-18 | Apple Inc. | FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES |
US20180336275A1 (en) | 2017-05-16 | 2018-11-22 | Apple Inc. | Intelligent automated assistant for media exploration |
US20180336892A1 (en) | 2017-05-16 | 2018-11-22 | Apple Inc. | Detecting a trigger of a digital assistant |
US10311144B2 (en) | 2017-05-16 | 2019-06-04 | Apple Inc. | Emoji word sense disambiguation |
US10657328B2 (en) | 2017-06-02 | 2020-05-19 | Apple Inc. | Multi-task recurrent neural network architecture for efficient morphology handling in neural language modeling |
US10445429B2 (en) | 2017-09-21 | 2019-10-15 | Apple Inc. | Natural language understanding using vocabularies with compressed serialized tries |
US10755051B2 (en) | 2017-09-29 | 2020-08-25 | Apple Inc. | Rule-based natural language processing |
US10636424B2 (en) | 2017-11-30 | 2020-04-28 | Apple Inc. | Multi-turn canned dialog |
US10733982B2 (en) | 2018-01-08 | 2020-08-04 | Apple Inc. | Multi-directional dialog |
US10733375B2 (en) | 2018-01-31 | 2020-08-04 | Apple Inc. | Knowledge-based framework for improving natural language understanding |
US10789959B2 (en) | 2018-03-02 | 2020-09-29 | Apple Inc. | Training speaker recognition models for digital assistants |
US10592604B2 (en) | 2018-03-12 | 2020-03-17 | Apple Inc. | Inverse text normalization for automatic speech recognition |
US10818288B2 (en) | 2018-03-26 | 2020-10-27 | Apple Inc. | Natural assistant interaction |
US10909331B2 (en) | 2018-03-30 | 2021-02-02 | Apple Inc. | Implicit identification of translation payload with neural machine translation |
US10928918B2 (en) | 2018-05-07 | 2021-02-23 | Apple Inc. | Raise to speak |
US11145294B2 (en) | 2018-05-07 | 2021-10-12 | Apple Inc. | Intelligent automated assistant for delivering content from user experiences |
US10984780B2 (en) | 2018-05-21 | 2021-04-20 | Apple Inc. | Global semantic word embeddings using bi-directional recurrent neural networks |
DK201870355A1 (en) | 2018-06-01 | 2019-12-16 | Apple Inc. | VIRTUAL ASSISTANT OPERATION IN MULTI-DEVICE ENVIRONMENTS |
US11386266B2 (en) | 2018-06-01 | 2022-07-12 | Apple Inc. | Text correction |
DK180639B1 (en) | 2018-06-01 | 2021-11-04 | Apple Inc | DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT |
US10892996B2 (en) | 2018-06-01 | 2021-01-12 | Apple Inc. | Variable latency device coordination |
DK179822B1 (da) | 2018-06-01 | 2019-07-12 | Apple Inc. | Voice interaction at a primary device to access call functionality of a companion device |
US11076039B2 (en) | 2018-06-03 | 2021-07-27 | Apple Inc. | Accelerated task performance |
US11010561B2 (en) | 2018-09-27 | 2021-05-18 | Apple Inc. | Sentiment prediction from textual data |
US11170166B2 (en) | 2018-09-28 | 2021-11-09 | Apple Inc. | Neural typographical error modeling via generative adversarial networks |
US11462215B2 (en) | 2018-09-28 | 2022-10-04 | Apple Inc. | Multi-modal inputs for voice commands |
US10839159B2 (en) | 2018-09-28 | 2020-11-17 | Apple Inc. | Named entity normalization in a spoken dialog system |
US11475898B2 (en) | 2018-10-26 | 2022-10-18 | Apple Inc. | Low-latency multi-speaker speech recognition |
US11638059B2 (en) | 2019-01-04 | 2023-04-25 | Apple Inc. | Content playback on multiple devices |
US11348573B2 (en) | 2019-03-18 | 2022-05-31 | Apple Inc. | Multimodality in digital assistant systems |
DK201970509A1 (en) | 2019-05-06 | 2021-01-15 | Apple Inc | Spoken notifications |
US11475884B2 (en) | 2019-05-06 | 2022-10-18 | Apple Inc. | Reducing digital assistant latency when a language is incorrectly determined |
US11307752B2 (en) | 2019-05-06 | 2022-04-19 | Apple Inc. | User configurable task triggers |
US11423908B2 (en) | 2019-05-06 | 2022-08-23 | Apple Inc. | Interpreting spoken requests |
US11140099B2 (en) | 2019-05-21 | 2021-10-05 | Apple Inc. | Providing message response suggestions |
DK201970511A1 (en) | 2019-05-31 | 2021-02-15 | Apple Inc | Voice identification in digital assistant systems |
DK180129B1 (en) | 2019-05-31 | 2020-06-02 | Apple Inc. | USER ACTIVITY SHORTCUT SUGGESTIONS |
US11496600B2 (en) | 2019-05-31 | 2022-11-08 | Apple Inc. | Remote execution of machine-learned models |
US11289073B2 (en) | 2019-05-31 | 2022-03-29 | Apple Inc. | Device text to speech |
US11360641B2 (en) | 2019-06-01 | 2022-06-14 | Apple Inc. | Increasing the relevance of new available information |
US11468890B2 (en) | 2019-06-01 | 2022-10-11 | Apple Inc. | Methods and user interfaces for voice-based control of electronic devices |
US11316851B2 (en) | 2019-06-19 | 2022-04-26 | EMC IP Holding Company LLC | Security for network environment using trust scoring based on power consumption of devices within network |
WO2021056255A1 (en) | 2019-09-25 | 2021-04-01 | Apple Inc. | Text detection using global geometry estimators |
US11061543B1 (en) | 2020-05-11 | 2021-07-13 | Apple Inc. | Providing relevant data items based on context |
US11183193B1 (en) | 2020-05-11 | 2021-11-23 | Apple Inc. | Digital assistant hardware abstraction |
US11755276B2 (en) | 2020-05-12 | 2023-09-12 | Apple Inc. | Reducing description length based on confidence |
US11490204B2 (en) | 2020-07-20 | 2022-11-01 | Apple Inc. | Multi-device audio adjustment coordination |
US11438683B2 (en) | 2020-07-21 | 2022-09-06 | Apple Inc. | User identification using headphones |
US11941155B2 (en) | 2021-03-15 | 2024-03-26 | EMC IP Holding Company LLC | Secure data management in a network computing environment |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006003023A2 (de) | 2004-07-06 | 2006-01-12 | 4Tech Gesellschaft Für Technologie Und Know-How-Transfer Mbh | Verfahren und anordnung zur erkennung unidirektionaler fehler mit systematischen ungeordneten codes |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3688265A (en) * | 1971-03-18 | 1972-08-29 | Ibm | Error-free decoding for failure-tolerant memories |
US4498177A (en) * | 1982-08-30 | 1985-02-05 | Sperry Corporation | M Out of N code checker circuit |
US5179561A (en) * | 1988-08-16 | 1993-01-12 | Ntt Data Communications Systems Corporation | Totally self-checking checker |
US5635933A (en) * | 1995-06-30 | 1997-06-03 | Quantum Corporation | Rate 16/17 (d=0,G=6/I=7) modulation code for a magnetic recording channel |
US20050283707A1 (en) * | 2004-06-22 | 2005-12-22 | Eran Sharon | LDPC decoder for decoding a low-density parity check (LDPC) codewords |
KR20050123336A (ko) * | 2004-06-24 | 2005-12-29 | 엘지전자 주식회사 | Ldpc 코드를 이용한 가변 코드 레이트 적응 부호화 방법 |
EP1934824A4 (de) * | 2004-06-25 | 2010-01-06 | Runcom Technologies Ltd | Mehrraten-ldpc-codesystem und -verfahren |
EP2381582B1 (de) * | 2007-12-06 | 2013-04-10 | Samsung Electronics Co., Ltd. | Verfahren und Vorrichtung zur Kanalkodierung in einem Kommunikationssystem unter Verwendung von Low-Density-Parity-Check (LDPC)-Codes |
TW201015874A (en) * | 2008-10-14 | 2010-04-16 | Univ Nat Changhua Education | Encoding/decoding method of Berger invert codes, and its encoder and inspector circuit |
US8601338B2 (en) * | 2008-11-26 | 2013-12-03 | Broadcom Corporation | Modified error distance decoding of a plurality of signals |
US8904258B2 (en) * | 2010-09-07 | 2014-12-02 | Zephyr Photonics | Modulation-forward error correction (MFEC) codes and methods of constructing and utilizing the same |
-
2011
- 2011-07-05 DE DE102011078642A patent/DE102011078642A1/de not_active Withdrawn
-
2012
- 2012-06-19 WO PCT/EP2012/061706 patent/WO2013004489A1/de active Application Filing
- 2012-06-19 US US14/130,835 patent/US20140230055A1/en not_active Abandoned
- 2012-06-19 CN CN201280033195.9A patent/CN103650407A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006003023A2 (de) | 2004-07-06 | 2006-01-12 | 4Tech Gesellschaft Für Technologie Und Know-How-Transfer Mbh | Verfahren und anordnung zur erkennung unidirektionaler fehler mit systematischen ungeordneten codes |
Non-Patent Citations (7)
Title |
---|
A.P. STROELE; S. TARNICK: "Programmable Embedded Self-Testing Checkers for All-Unidirectional Error Detecting Codes", PROCEEDINGS OF THE 17TH IEEE VLSI TEST SYMPOSIUM, DANA POINT, CA, 1999, pages 361 - 369, XP010334883, DOI: doi:10.1109/VTEST.1999.766690 |
RECOMMENDATION FOR RANDOM NUMBER GENERATION USING DETERMINISTIC RANDOM BIT GENERATORS, March 2007 (2007-03-01), pages 800 - 90 |
S KUNDU; S.M. REDDY: "Design and Test of Computers", vol. 7, 1990, article "Embedded Totally Self-Checking Checkers A Practical Design", pages: 5 - 12 |
S. TARNICK: "Design of Embedded Constant Weight Code-Checkers Based on Averaging Operations", PROCEEDINGS OF THE 16TH IEEE ON-LINE TESTING SYMPOSIUM, CORFU ISLAND, GREECE, 2010, pages 255 - 260, XP031744463 |
STROELE A P ET AL: "Programmable embedded self-testing checkers for all-unidirectional error-detecting codes", VLSI TEST SYMPOSIUM, 1999. PROCEEDINGS. 17TH IEEE DANA POINT, CA, USA 25-29 APRIL 1999, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 25 April 1999 (1999-04-25), pages 361 - 369, XP010334883, ISBN: 978-0-7695-0146-8, DOI: 10.1109/VTEST.1999.766690 * |
TARNICK S: "Design of embedded constant weight code checkers based on averaging operations", ON-LINE TESTING SYMPOSIUM (IOLTS), 2010 IEEE 16TH INTERNATIONAL, IEEE, PISCATAWAY, NJ, USA, 5 July 2010 (2010-07-05), pages 255 - 260, XP031744463, ISBN: 978-1-4244-7724-1 * |
VON MANGARD; OSWALD; POPP: "Power Analysis Attacks", 2007, SPRINGER |
Also Published As
Publication number | Publication date |
---|---|
US20140230055A1 (en) | 2014-08-14 |
CN103650407A (zh) | 2014-03-19 |
DE102011078642A1 (de) | 2013-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2013004489A1 (de) | Verfahren zum prüfen eines m aus n codes | |
DE102004062825B4 (de) | Kryptographische Einheit und Verfahren zum Betreiben einer kryptographischen Einheit | |
DE102005028221B4 (de) | Vorrichtung und Verfahren zum Schutz der Integrität von Daten | |
DE102010029735A1 (de) | Verfahren zum Generieren eines Bitvektors | |
DE102015110431A1 (de) | Kryptografischer Prozessor, Verfahren zum Implementieren eines kryptografischen Prozessors und Schlüsselgenerierungsschaltung | |
DE102019122145A1 (de) | Gesicherte x-modulare redundanz | |
EP2446580B1 (de) | Vorrichtung und verfahren zur bildung einer signatur | |
WO2013004494A1 (de) | Verfahren zum sicheren prüfen eines codes | |
DE102009007246A1 (de) | Pseudozufallszahlengenerator und Verfahren zum Erzeugen einer Pseudozufallszahlenbitsequenz | |
DE102011078643A1 (de) | Verfahren zum Erzeugen einer zufälligen Ausgangsbitfolge | |
DE1474037A1 (de) | Paritaets-Pruefeinrichtung fuer Datenverarbeitende Maschinen | |
DE102019112583A1 (de) | Integrierte elektronische schaltung | |
DE10344647B3 (de) | Schaltungsanordnung und Verfahren zur Verarbeitung eines Dual-Rail-Signals | |
DE102014200309A1 (de) | Verfahren zum Überprüfen einer Ausgabe | |
DE102013205168A1 (de) | Verfahren zum Erzeugen einer zufälligen Ausgangsbitfolge | |
DE102015209120A1 (de) | Recheneinrichtung und Betriebsverfahren hierfür | |
DE102004043480B3 (de) | Vorrichtung und Verfahren zum Erkennen einer Störung einer kryptographischen Einheit vorzugsweise des AES-Algorithmus | |
DE102013002088B4 (de) | System und Verfahren für einen signaturbasierten Redundanzvergleich | |
DE10309255B4 (de) | Verfahren und Schaltungen zur Erkennung unidirektionaler Fehler | |
DE102013112021B4 (de) | Verfahren und Vorrichtung zum Erkennen von Bitfehlern | |
DE102014214722A1 (de) | Vorrichtung und Verfahren zum Erkennen einer Integritätsverletzung | |
DE102022114837A1 (de) | Verfahren und Vorrichtungen zur Sicherung von Mikrocontrollern und eingebetteten Systemen | |
DE102013205166A1 (de) | Verfahren zum Erzeugen einer Einwegfunktion | |
DE102013112020A1 (de) | Verfahren und Vorrichtung zum Erkennen von Bitfehlern | |
DE102013213382A1 (de) | Verfahren zum Prüfen einer Ausgabe eines Zufallsgenerators |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 12731353 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 14130835 Country of ref document: US |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 12731353 Country of ref document: EP Kind code of ref document: A1 |