[go: up one dir, main page]

NO317448B1 - Forbedret integrert krets, samt fremgangsmate for anvendelse av denne - Google Patents

Forbedret integrert krets, samt fremgangsmate for anvendelse av denne Download PDF

Info

Publication number
NO317448B1
NO317448B1 NO19975116A NO975116A NO317448B1 NO 317448 B1 NO317448 B1 NO 317448B1 NO 19975116 A NO19975116 A NO 19975116A NO 975116 A NO975116 A NO 975116A NO 317448 B1 NO317448 B1 NO 317448B1
Authority
NO
Norway
Prior art keywords
integrated circuit
clock
circuit according
random
program
Prior art date
Application number
NO19975116A
Other languages
English (en)
Other versions
NO975116D0 (no
NO975116L (no
Inventor
Michel Ugon
Original Assignee
Cp8 Technologies
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=9489969&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=NO317448(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Cp8 Technologies filed Critical Cp8 Technologies
Publication of NO975116D0 publication Critical patent/NO975116D0/no
Publication of NO975116L publication Critical patent/NO975116L/no
Publication of NO317448B1 publication Critical patent/NO317448B1/no

Links

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/341Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/0806Details of the card
    • G07F7/0813Specific details related to card security
    • G07F7/082Features insuring the integrity of the data on or in the card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Health & Medical Sciences (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Accounting & Taxation (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Microcomputers (AREA)
  • Storage Device Security (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Tone Control, Compression And Expansion, Limiting Amplitude (AREA)

Description

Foreliggende oppfinnelse vedrører en forbedret integrert krets og en fremgangsmåte for anvendelse av denne. Oppfinnelsen er spesielt anvendbar i forbindelse med mikroprosessorer og mikrodatamaskiner og også fastkoplede logiske kretser som krever beskyttelse.
Det er kjent at mikroprosessorer og mikrodatamaskiner sekvensielt utfører suksessive instruksjoner i et program som er lagret i et minne, i synkronisering med ett eller flere taktsignaler referert i forhold til ett av de klokkesignaler som leveres til mikroprosessoren eller mikrodatamaskinen enten internt eller eksternt.
Det er således mulig å korrelere de forskjellige faser av denne programutførelse med klokkesignalene, siden utførelsen av hver spesiell instruksjon brytes ned i flere trinn taktstyrt av en eller flere suksessive klokkepulser. I tidligere kjente mikroprosessorer blir operasjonen jevnt taktstyrt av klokkesignaler som vanligvis stammer fra en sekvenseringskrets som genererer de nødvendige elektriske pulser, spesielt ved fasedreining av signalene i forhold til referanseklokken. Sekvenseringen av handlingene må dessuten ta i betraktning de tider som er nødvendig for å aksessere de forskjellige registre, minner og interne genheter, men også, og spesielt, signalforplantningstidene i databussene og gjennom de forskjellige logiske kretser. Siden start- og sluttidene for hver instruksjon er nøyaktig kjent, er det følgelig teoretisk mulig å vite hvilken instruksjon som blir utført i behandlingsenheten til prosessoren ved et gitt øyeblikk, siden programmet som kjøres, er sammensatt av en forut bestemt sekvens av instruksjoner.
Det er for eksempel mulig å bestemme det antall klokkepulser som er levert siden oppstartingen av programmet eller tilbakestillingen av behandlingsenheten, eller også den tid som har medgått siden en hendelse eller et eksternt eller internt referansesignal.
Denne evnen til å kunne observere kjøringen av et program i en mikroprosessor eller en mikrodatamaskin, er en hovedulempe når mikroprosessoren eller mikrodatamaskinen blir brukt i anvendelser som krever høy sikkerhet. En ondsinnet person ville i virkeligheten kunne få kjennskap til prosessorens suksessive tilstander og bruke denne informasjonen til å skaffe seg kunnskap om visse interne utdata.
Det er for eksempel mulig å forestille seg at en gitt handling på et eksternt signal kunne finne sted ved forskjellige øyeblikk som en funksjon av resultatet av en bestemt sikkerhetsoperasjon, slik som testingen av konfidensiell internt informasjon eller dekryptering av en melding, eller også integritetskontrollen av visse informasjoner. Avhengig av vedkommende tilfelle, kunne dette eksterne signal gi informasjon om utdataene eller om det konfidensielle innhold i informasjonen, og i tilfelle med kryptografiske beregninger, om den hemmelige krypteringsnøkkelen som brukes.
Det er dessuten kjent mikroprosessor og mikrodatamaskiner, slik som de som markedsføres av selskapet SGS Thomson under referansenummer ST16XY, som omfatter en mikroprosessor som innbefatter en slumptall-generator, hvor avlesningen av denne gjør det mulig å oppnå et tilfeldig tall som for eksempel brukes til beregningen av krypteringer og dekrypteringer. Det er dessuten kjent fra US patent nr. 5,404,402 å benytte en eneste dekorreleringsanordning som utgjøres av en klokkepuls-modulasjonsanordning. Klokkepuls-modulasjonen genereres ved hjelp av en slumptallsfunksjon. Denne anordningen gjør det mulig å tilveiebringe uforutsigbare klokkepulser, men antyder ikke noe om en integrert krets som omfatter en dekorreleringsanordning som kan aktiveres enten av den integrerte kretsen eller av programmet som kjøres i den integrerte kretsen.
Ett av formålene med oppfinnelsen er å utstyre kretsen med en anordning for å hindre den type undersøkelser som er beskrevet ovenfor, og mer generelt for å hindre observasjoner, uansett om de er ulovlige eller ikke, av kretsens interne oppførsel.
Dette formål blir i et første aspekt av oppfinnelsen oppnådd ved tilveiebringelse av en integrert krets slik som definert i det vedføyde patentkrav 1.
De viktigste kjennetegn ved den integrerte kretsen er at den har minst to aktiverbare anordninger for å dekorrelere kjøringen av minst en sekvens av instruksjoner i et program fra den integrerte kretsens interne eller eksterne elektriske signaler, hvor dekorreleringsanordningene aktiveres selektivt av den integrerte kretsen.
I henhold til et annet kjennetegn er kretsens elektriske signaler takt-, synkroniserings- eller status-signaler.
I henhold til et annet kjennetegn omfatter dekorreleringsanordningen en eller flere kretser som genererer en sekvens av klokke- eller takt-pulser som blir avsendt ved tilfeldige tidspunkter.
I henhold til et annet kjennetegn omfatter dekorreleringsanordningen en slumptall-generator som gjør det mulig å desynkronisere utførelsen av programsekvensen i prosessoren.
I henhold til et annet kjennetegn omfatter dekorrelasjonsanordningen en klokke-kalibreringskrets som gjør det mulig å eliminere de taktpulser som er for korte.
I henhold til et annet kjennetegn omfatter dekorrelasjonsanordningen et tilfeldig avbruddsgenererende system.
I henhold til et annet kjennetegn omfatter dekorrelasjonsanordningen utførelse av sekundærsekvenser i hvilke instruksjonene og utførelsestidene er forskjellige, og som er valgt tilfeldig.
I henhold til et annet kjennetegn avhenger det variable tidspunktet for sekundærprosessen av en verdi som leveres av en slumptall-generator.
I henhold til et annet kjennetegn modifiserer den sekundære prosess ikke den generelle operative sammenheng i hovedprogrammet, og gjør det således mulig å returnere til sistnevnte uten å måtte gjenopprette denne sammenhengen.
I henhold til et annet kjennetegn gjenoppretter sekundærprosessen sammenhengen til hovedprogrammet før styringen av prosessoren tilbakeføres til dette.
I henhold til et annet kjennetegn kan hovedprogrammet kople inn eller kople ut en eller flere dekorrelasjonsanordninger.
I henhold til et annet kjennetegn har det en anordning for fasedreining av takt-, synkroniserings- eller status-signalene til prosessoren.
I henhold til et annet kjennetegn genererer den fasetegnede anordning en tilfeldig fasetegning av takt-, synkroniserings- eller status-signalene til prosessoren.
I henhold til et annet kjennetegn desynkroniserer den tilfeldige fasedreiende anordning helt eller delvis prosessorens operasjon fra den eksterne klokke under utførelsen av et program.
I henhold til et annet kjennetegn bruker slumptall-generatoren tellere som kan eller ikke kan være sløyfekoplet, og som blir initialisert til en tilfeldig verdi.
I henhold til et annet kjennetegn stammer initialiseirngsverdien fra et ikke-flyktig minne.
I henhold til et annet kjennetegn blir initialiseringsverdien modifisert under utførelsen av et program.
I henhold til et annet kjennetegn bruker slumptall-generatoren en algoritme av kryptografisk type eller en spredefunksjon initialisert til initialiseringsverdien.
I henhold til et annet kjennetegn tar sekvenseringen av handlingene også hensyn til de tider som er nødvendige for å aksessere de forskjellige registre, minner og interne enheter, men også, og spesielt, signalforplantningstidene i databussene og gjennom de forskjellige logiske kretser.
I et andre aspekt av oppfinnelsen er det tilveiebrakt en fremgangsmåte slik som definert i det vedføyde patentkrav 20. Fremgangsmåten er for anvendelse av en integrert krets av den type som er definert ovenfor, og fremgangsmåten kjennetegnes ved at den består i: enten å utløse sekvensering av en eller flere instruksjoner eller operasjoner ved bruk av et puls-klokkesignal (CLK2), variable og tilfeldige pulser med minimumsbredde (Tm) med variabel og tilfeldig frekvens, desynkronisert fra den eksterne klokken (CLKE);
eller å utløse avbruddssekvenser (40) tilfeldig;
eller å utløse prosessering av en tilfeldig sekvens av instruksjoner (6) eller operasjoner under utførelse av en hovedsekvens (5) av instruksjoner eller operasjoner;
eller å kombinere minst to av de ovennevnte muligheter.
I ytterligere et aspekt av oppfinnelsen er det tilveiebrakt en integrert krets slik som definert i det vedføyde patentkrav 21. Den integrerte kretsen ifølge dette aspekt innbefatter en mikroprosessor som styres av minst et program, samt en anordning for å dekorrelere sekvenseringen av utførelsen av instruksjonene i dette programmet. Den integrerte kretsen kjennetegnes ved at en del av det nevnte programmet kan benyttes til å autorisere, modifisere eller frakople dekorreleringsanordningens funksjon. Fordelaktige utførelsesformer av den integrerte kretsen ifølge dette andre aspekt av oppfinnelsen, fremgår av de vedføyde patentkravene 22-24.
Andre kjennetegn og fordeler ved foreliggende oppfinnelse vil fremgå klarere av den etterfølgende beskrivelse som er gitt under henvisning til de vedføyde tegningene, hvor: Fig. 1 representerer et kretsskjema over de elektroniske kretsene i en første utførelsesform av oppfinnelsen; Fig. 2 representerer en annen, forenklet variant av utførelsesformen av oppfinnelsen; Fig. 3A representerer skjema over en utførelsesform av kalibreringskretsen; Fig. 3B representerer de logiske sekvenseringsskjemaer for kalibreringskretsen; Fig. 4A representerer skjema for de logiske kretser i en utførelsesform av en fasedreiende krets; Fig. 4B representerer skjema over sekvensene til signalene i denne kretsen; Fig. 5 representerer en tredje variant av utførelsesformen av oppfinnelsen; Fig. 6 representerer skjemaet over de logiske kretser i en utførelsesform av en intern klokke; Fig. 7A representerer det logiske skjema over en utførelsesform av slumptall-generatoren; Fig. 7B representerer det logiske skjema over en utførelsesform av hver celle i slumptall-generatoren; og Fig. 8 representerer skjematisk et eksempel på tilfeldig valgte sekvenser i det sekundære program.
I beskrivelsen er uttrykket mikrodatamaskin ment å bety en monolittisk integrert krets som innbefatter en mikroprosessor med et lese/skrive-minne av RAM-typen forbundet med minst et ikke-flyktig minne som kan være eller ikke være programmerbart, slik som for eksempel et RAM med reservebatteri eller et ROM, eller PROM, eller EPROM, eller EEPROM, eller RAM av Flash-typen, o.s.v., eller en kombinasjon av disse minner. Oppfinnelsen vil nå bli forklart under henvisning til figur 1, hvor en CPU (1) omfatter en slumptall-generator 2 som kan kjøre på en intern klokke 11. Prosessorer av denne typen er som nevnt ovenfor spesielt kjent gjennom ST16XY-familien av mikrodatamaskiner. Disse mikrodatamaskinene eller mikroprosessorene som bruker et skiftregister med parallelle innganger/utganger som er sløyfekoplet tilbake til minst en av inngangene, hvor forskyvningen blir taktstyrt av en internklokke for å utgjøre slumptall-generatoren, bruke den eksterne klokke for sekvensering av mikroprosessorens maskinsykluser til å utføre instruksjonene for å lese innholdet i registeret. Oppfinnelsen gjør det mulig å generere et slumptall som ikke er pesudotilfeldig og er basert på det faktum at den interne klokke i slumptall-generatoren, som har en multippel frekvens fra den eksterne klokke, er tilfeldig fasedreid i forhold til sistnevnte.
Oppfinnelsen består i å bruke prinsippet for en mikroprosessor av denne type med en slumptall-generator, tilføye den et visst antall elementer som vil gjøre det mulig for mikroprosessoren og kjøre hovedprogrammet til å gå fra en operasjon som er perfekt i fase og korrelert med den eksterne sekvenseringsklokke, til en dekorrelert operasjon hvor, som ønsket og avhengig av den valgte utførelsesform, utførelsestiden for en gitt instruksjon ikke lenger vil være identisk, selv når den samme instruksjon blir utført flere ganger, eller hvor utførelsesvarigheten av en instruksjonssekvens vil være variabel selv om den samme sekvens blir utført på nytt flere ganger av hovedprogrammet, eller hvor utførelsesvarigheten av en instruksjon også vil være variabel, idet utførelsestiden for den samme instruksjon selv er variabel. Dette blir oppnådd ved hjelp av kretsen på figur 1, hvor, i tillegg til slumptall-generatoren 2, den interne klokke 11 er utformet som en frittløpende fast frekvensoscillator som er desynkronisert og fasedreiet i forhold til en eksterne klokke CLDE for mikroprosessoren eller mikrodatamaskinen. Tidligere har fagfolk på området ikke tenkt på å taktstyre driften av en mikroprosessor eller en mikrodatamaskin med en ujevn klokke. Tvert imot ble alt gjort for å sikre at operasjonen ble jevnt taktstyrt av klokkesignaler som vanligvis stammer fra en sekvenseringskrets som genererte de nødvendige elektriske pulser, spesielt ved fasedreining av signalene i forhold til referanseklokken. Dette skyldes spesielt det faktum at sekvenseringen av handlingene må ta hensyn til de tider som er nødvendig for å aksessere de forskjellige registere, minner og interne enheter, men også, og spesielt, signalforplantningstidene i databussene og gjennom de forskjellige logiske kretsene. Ifølge oppfinnelsen ble slumptall-generatoren 2 brukt enten til å levere en tilfeldig verdi til de forskjellige enheter gjennom databussen 3 og laste dem inn i de forskjellige enheter som vil bli beskrevet nedenfor, eller til å generere et pulssignal med variabel periodisitet ved sin utgang 22. I en mikroprosessor eller mikrodatamaskin ifølge oppfinnelsen kan de signaler som er nødvendig for lastingen og utførelsen av instruksjonene, derfor genereres fra tilfeldig avsatte klokkepulser, men disse pulsene må forbindes med en minste periodetid slik at prosessoren 1 har nok til å utføre de forskjellige operasjoner. Dette signalet må for å tjene som en klokke for mikroprosessoren 1, sendes til en kalibreringskrets 9. Utgangen 95 fra denne kalibreringskretsen blir sendt til en multipleksingskrets 18 hvis inngang 19 for å styre multipleksingen, mottar signalet på en eller flere biter i et register 8 som kan lastes, enten av slumptall-generatoren 2 eller med en verdi bestemt av hovedprogrammet 6. Når dette registeret 8 blir laset med en tilfeldig verdi, blir den bestemmelse som velger klokkesignalet som sendes til prosessoren, gjort tilfeldig, mens når dette registeret 8 blir lastet med en verdi bestemt av hovedprogrammet, så er det hovedprogrammet som vil velge om klokken for sekvensering av mikroprosessoren vil være den eksterne klokke CLKE eller en dekorrelasjonsklokke CLK2. En eller flere av bitene i registeret 8 blir likeledes sendt gjennom forbindelsen 82 til en logisk krets 28 som gjør det mulig, som en funksjon av biten eller bitene i registeret 8, å bekrefte eller ikke bekrefte overføringen av det interne klokkesignal 11 til slumptall-generatoren 2. Denne slumptall-generatoren kan så også kjøre på den eksterne klokke CLKE ved å motta dens signat gjennom forbindelsen 26 og den logiske kretsen 28. I sistnevnte tilfelle vil de genererte verdier være pseudotilfeldige verdier. Slumptall-generatoren 2 kan operere ved å bruke den interne klokke 11 bekreftet gjennom kretsen 28 ved hjelp av biten eller bitene i registeret 8, og i dette tilfellet vil de genererte verdier være tilfeldige verdier. Signalet I som genereres ved utgangen 22 av slumptall-generatoren 2 og som mottas av kalibreringskretsen 9, svarer til et pluss-signal hvis periodisitet varierer, enten tilfeldig eller på pseudotilfeldig måte. D et faktum at denne periodisiteten varierer på pseudotilfeldig måte, har liten betydning, som man vil se nedenfor, siden kalibreringskretsen 9 innfører et internt klokkesignal FRC som selv vil gjeninnføre en dekorrelasjon, gjennom en annen frekvens og en fasedreining i forhold til et eksterne klokkesignal CLKE, og følgelig i forhold til det pseudotilfeldige klokkesignal som er synkronisert med dette eksterne klokkesignal.
Anordningen kan også omfatte et register R2 som blir lastet, enten ved hjelp av slumptall-generatoren 2 eller med et tilfeldig tall, eller ved hjelp av hovedprogrammet 5 med en verdi bestemt av programmet. Dette registeret R2 blir helt eller delvis brukt av en logisk krets 4 til å utløse et avbrudd, som ved ne av sine innganger mottar det dekorrelerte klokkesignal CLK2 som leveres av utgangen 95 fra kalibreringskretsen 9. Utgangen fra kretsen 4 blir sendt gjennom en port 48 som styres av en eller flere biter i registeret 8, til avbruddsinngangen 12 på CPU. Biten eller bitene i dette registeret 8 spiller rollen som en avbruddsmaske-styring, som er standard i visse mikroprosessorer. Når et avbrudd blir mottatt ved avbruddsinngangen 12 på prosessoren, vil det avbruddshåndteringsprogrammet som for eksempel befinner seg i operativsystemet eller i det sekundære program, innføre en annen behandlingstid for den avbrutte sekvensen av hovedprogrammet. Man vil forstå at der er to faser i operasjonens avbruddsmodus.
En første fase hvor mikroprosessoren som styres av det såkalte hovedprogram, autoriserer den dekorrelerte operasjon ved å avmaskere, for eksempel, avbruddene.
En annen fase hvor avbruddet automatisk omdirigerer operasjonen til det sekundære program. Denne operasjonen kan i virkeligheten inntreffe uten inngrep fra hovedprogrammet.
Til slutt kan innretningen ifølge oppfinnelsen også omfatte et sekundært program 6, som, som man vil se nedenfor, kan generere en variabel tidsvarighet som varierer hver gang dette sekundære program blir påkalt av hovedprogrammet 5. Den variant av utførelsesformen som er representert på figur 1, gjør det således mulig for hovedprogrammet 5 å endre den ønskede grad av beskyttelse, enten ved å utløse sekvenseringen av utførelsen av en eller flere instruksjoner ved hjelp av den dekorrelerte klokke CLK2, eller ved å bestemme, under utførelsen av en avbruddssekvens, å innføre, eller ikke å innføre, en tilfeldig utløst avbruddskrets eller ved å bestemme under utførelsen av sekvensen, å innføre, eller ikke å innføre, et hopp til det sekundære program 6 som også genererer en prosess med en variabel tid, eller endog ved å kombinere disse forskjellige mulighetene. I en variant av oppfinnelsen kan således dette sekundære program 6 utgjøres, som vist på figur 8, av et antall sekvenser 61, 62, 63,... 6n som blir oppkalt tilfeldig, og hver sekvens 0, 1, 2 eller 2<n>"<1> vil implementere et forskjellig sett av instruksjoner som vil resultere i en variabel behandlingstid i hver gren og forskjellige oppførsler av mikroprosessoren. Sekvensene kan påkalles tilfeldig; for eksempel etter at hovedprogrammet har utført hoppet til det sekundære program, laster sistnevnte, i trinnene 64 og 65 en tilfeldig verdi V som stammer fra minnet 7, inn i to registera, for eksempel R10 og R11, i mikroprosessoren 1. Det sekundære program inkrementerer denne verdi V, så beordrer programmet lagring av denne inkrementerte verdi (V+1) i det ikke-flyktige minnet NVM 7 i trinn 66. Denne verdien som er lagret i det ikke-flyktige minnet 7, skal brukes senere. Det sekundære program, i trinn 67, trekker så ut n biter av høy orden eller lav orden i R10 for å oppnå en verdi r som vil gjøre det mulig å indikere hvilken programsekvens blant de sekundære programsekvenser (61, 62, 63 6n) som kal utføres. Hver sekundær programsekvens vil frembringe en forskjellig prosess; for eksempel er sekvensen null først av alt sammensatt av trinnet 611 for overføring av innholdet av registeret R11 i mikroprosessoren til et register R12. I trinn 612 blir innholdet av R12 tilføyd menteverdien (CARRY), og så blir en eksklusiv-ELLER-operasjon i trinn 613 utført mellom innholdet av registeret R11 og innholdet av registeret R12, og resultatet blir anbrakt i registeret R12. I trinn 614 dekrementerer prosessor R12; i trinn 615 blir det utført en test på verdien av R12 for å bestemme om R12 er lik null eller ikke. I det tilfellet hvor R = 0, returenerer prosessoren til utførelsen av hovedprogrammet. I motsatt fall utfører det sekundære program 61, i trinnet 616, en rotasjon av innholdet i registeret R10. Oet neste trinn består i å trekke ut n biter i en bestemt rekkefølge fra registret R10 for så å aksessere en av de sekvenser som er bestemt av denne verdien r i det sekundære program. Det er således mulig å aksessere, for eksempel, sekvensen (2<n*1>) som, sekvensen (2n1) som, i trinn (6n1), er sammensatt av overføring av resultatet av multiplikasjonen av verdiene i R10 og R11 inn i R13 og R14. I trinn (6n2) utfører denne sekvensen en rotasjon av R13 og R14, i trinn (6n3) blir så innholdet av R13 overført til R11. I trinn (6n4) blir R11 dekrementert for så, i trinn (6n5) å utføre en test av verdien R11. Denne testen består i å bestemme om innholdet av R11 = 3 eller ikke. Hvis så er tilfellet, returnerer prosessen til hovedprogrammet, og hvis ikke, fortsetter programmet til trinn (6n6) ved å rotere R10 til venstre, så utfører
. instruksjonen 67 for å aksessere en ny sekundær programsekvens.
I det tilfellet hvor det sekundære program er ment å bli kombinert med en dekorrelert klokke eller avbruddskretser, er det mulig, i en kombinasjon av denne type, å begrense seg til et sekundærprogram for derved å frembringe en enklere prosess. Et forenklet sekundærprogram av denne typen kan utgjøres av følgende instruksjoner: MOV B, R2 som er sammensatt av lasting av registeret R2 inn i mikroprosessor-registeret B
LOOP DCX B som utgjøres av dekrementering av registeret B med
verdien A
JNZ B LOOP som består i å utføre en test på verdien i registeret B og å sløyfekople tilbake til etiketten LOOP hvis denne verdien er forskjellig fra null.
Denne sekvensen slutter med en instruksjon om å returnere til den instruksjon i hovedprogrammet som umiddelbart følger etter den siste instruksjon som ble utført før hoppet til sekundærprogrammet 6. Registeret R2 blir forhåndslastet ved hjelp av e instruksjon i hovedprogrammet 5 før hoppet til sekundærprogrammet 6, med en tilfeldig verdi levert av slumptall-generatoren 2. Utførelsen av det sekundære program som definert ovenfor, vil således alltid generere en variabel varighet.
En annen utførelsesform av et sekundært program med variabel varighet kan være sammensatt av å definere et område av programlageret som svarer til det sekundære program 6 i hvilket et sett med instruksjoner er lagret. Det valgte instruksjoner krever fortrinnsvis forskjellige antall maskinsykluser for å bli utført. Noe som er kjent å være tilfelle for eksempel med instruksjonene J, CALL, RET, RST, PCHL, INX i forbindelse med instruksjoner som krever et antall kortere maskinperioder, slik som ADC, SUB, ANA, MOV, o.s.v. I dette lagerområdet er der således et visst antall tilgjengelige instruksjoner som har utførelsesvarigheter som er forskjellige fra hverandre uttrykt ved antallet maskinperioder. Hovedprogrammet 5 omfatter en instruksjon om å hoppe til en indeksert adresse hvis indeks tilsvarer innholdet av registeret R2, og hvis adresse tilsvarer den første adresse i området 6. Utførelsen av denne instruksjonen i hovedprogrammet 5 forårsaker derfor adressering av prosessoren 1 tilfeldig, med instruksjoner hvis utførelsesvarigheter vil være forskjellige, avhengig av den adresserte posisjon. På kjent måte vil slumptall-generatoren 2 bli initialisert ved starten til en variabel. Denne innledende variable befinner seg i et ikke-flyktig minne 7 og utgjøres for eksempel av den siste tilfeldige verdi som blir generert av generatoren 2 før pausen til mikroprosessoren 1. Mikroprosessoren som styres av et program som den vil utføre, vil således være i stand til å bruke dette programmet til å aktivere anordningen for dekorrelasjon av sekvenseringen av instruksjonsutførelsen for dette programmet, ved å laste for eksempel registrene R2 eller 8, eller ved å anrope sekundære programmer.
Figur 2 representerer en annen variant av en forenklet utførelsesform av oppfinnelsen, hvor innholdet av registeret 8 vil kommandere multiplekseren 18 til å bestemme om den eksterne klokke CLKE skal sendes til prosessoren 1, eller om ganske enkelt den dekorrelerte klokke CLK skal brukes av CPU 1. Dette registeret 8 blir lastet ved hjelp av databussen 30 ved utførelse av en instruksjon i hovedprogrammet 5 som er utformet for å bestemme ved et gitt øyeblikk, å utløse den beskyttede modus ved å generere instruksjonsutførelses-sekvenser av variabel varighet. Slumptall-generatoren 2 er i kommunikasjon gjennom en buss 31 med det ikke-flyktige minnet 7, som gjør det mulig, for eksempel, å lagre den siste verdi som ble generert, slik at nr der er en ny tilkopling av monolittiske kretsen, blir slumptall-generatoren reinitialisert med en verdi som er forskjellig fra den foregående innledende verdi. Denne bussen 31 kan styres av prosessoren 1. I en annen variant kan innskrivningen i minnet 7 styres av en fastkoplet logisk enhet.
I en annen utførelsesform er det mulig å innføre en variabel fasedreiningskrets 45 ved utgangen fra klokkekretsen, som vist på figur 4A, hvilken fasedreiende krets utgjøres for eksempel av et skiftregister D1 til D2. Taktstyrt av signalet FRC som avgis fra kretsen 11 eller det rekalibrerte FRC som leveres fra utgangen 95 av kretsen 9, og fasedreining av signalet I som leveres ved utgangen 22, som kan være dividert med en bremsefaktor i en delekrets 452. Utgangen fra den fasedreiende krets 45 kan produseres ved hjelp av en multiplekser 451 MUX som gjør det mulig å trekke ut ethvert av utgangssignalene Q1, Q2 Q5 fra skiftregisteret som en funksjon av innholdet av registeret RM som er lastet, enten direkte av slumptall-generatoren 2, eller indirekte av hovedprogrammet 5, eller endog ved hjelp av det sekundære program 6, gjennom bussen 3. I dette tilfellet kan klokkens forflanker S som leveres som utgang, forsinkes eler fremskyndes i forhold til en medianpuls som leveres ved hjelp av det sentrale nivået til skiftregisteret, eller ved hjelp av en verdi som avhenger av et tilfeldig tall, som således proporsjonalt forsinker eller fremskynder sekvenseringen av instruksjonsutførelsen til det program som kjøres.
I en annen utførelse kan slumptall-generatoren og den fasedreiende krets brukes kontinuerlig under visse spesielt følsomme perioder, i løpet av disse fasene blir prosessoren tidsstyrt på en fullstendig tilfeldig måte, isteden tidsintervallene som adskiller klokkepulsene, er variabel, og ikke konstante som tilfellet er med standard prosessorene.
Organiseringen av de programmer som utføres av prosessoren, kan utføres på en slik måte at operasjonen til prosessoren 1 blir styrt av et genuint beskyttet operativsystem som velger den type oppkasting som skal brukes som en funksjon av den programtype som kjøres på maskinen. I dette tilfellet er det operativsystemet som styrer, slik det finner passende, de forskjellige signaler som er et resultat av slumptall-generatoren, kalibratoren, avbruddene eller kommandoene fra den fasedreiende krets, og oppstartingen av hoved- og sekundær-programmene. Det er klart at sekundærprogrammet kan brukes til å utføre andre funksjoner enn en enkelt tidsutkopling, spesielt ved å utføre prosesser som kan være nødvendige for hovedprogrammet for å gjøre bruk av den tid som er tildelt sekundærprogrammet, hvilke prosesser for eksempel kan bestå av forberedelser av beregninger som deretter brukes av hovedprogrammet. Man vil forstå at innretningene ifølge oppfinnelsen lett kan generaliseres når prosessoren brukes i multiprogrammer, idet brukerprogrammet i dette tilfellet anses å være et antall hovedprogrammer. Slumptall-generatoren og den klokkefasedreiende krets som er nevnt ovenfor, påfører ikke noen spesiell produksjonsproblemer, og er kjent for fagfolk på området når de brukes separat for andre anvendelser som ikke er forbundet med oppfinnelsen.
Det er også mulig å tilveiebringe en femte forenklet utførelsesform av oppfinnelsen som ikke bruker et avbrudd på topp. Når hovedprogrammet må beskyttes, aktiverer det uavhengig et sekundærprogram som genererer en prosess av tilfeldig lengde ved de øyeblikk det velges, enten ved starten eller under utførelsen, for å omkaste (scramble) de forskjellige sekvenser.
De forskjellige kretser som utgjør utførelsesformen av oppfinnelsen, vil nå bli beskrevet i forbindelse med de andre figurene. En slumptall-generator som er vist på figurene 7 A og 7B, utgjøres således for eksempel av et sett med celler (BO til 17) som hver er utformet med en ekslusiv-ELLER-port 23 med to innganger koplet til en type D-bryter 24 hvis utgang Q er forbundet med en av de to inngangene til eksklusiv-ELLER-porten i eneste celle. Den annen inngang til eksklusiv-ELLER-porten mottar inngangssignalet fordi data som avgis fra bussen 3 for å tillate den innledende lasting, eller for cellene BO og B3, for eksempel, et tiibakekoplet signal 25 som avgis fra den siste celle B7. Utgangen 22 fra den siste celle B7 utgjør også den utgang som leverer pulssignalet I med tilfeldig variabel periodisitet. Dette signalet I blir så brukt i kalibreringskretsen 9 som er vist på figur 3A, idet figur 3B representerer sekvenseringen av inngangs- og utgangssignalene til denne kalibreringskretsen 9 på figur 3A. Denne kalibreringskretsen består av to NAND-porter 90, 91 med tre innganger, som her mottar, ved en inngang, signalet I som avgis fra utgangen 22 av slumptall-generatoren 2. En første NAND-port mottar utgangen Q2 for en vippe av JK-typen, mens den andre porten 90 mottar den inverterte utgang NQ2 fra denne vippen 93. Vippen 93 mottar på sin klokke igang et klokkesignal FRC som utgjør en intern klokke for kretse. Denne interne klokken blir for eksempel generert av en krets som er vist på figur 6. Inngangene J og K til denne vippen 93 er forbundet med den forsyningsspenningen som representerer det logiske nivå «1». Det interne klokkesignal FRC blir sendt av en inverteringskrets 92 til hver av de tre inngangene på NAND-portene 90, 91. Utgangen fra den første NAND-port 90 blir sendt til inngang for å sette den annen logiske vippe 94 til en, mens utgangen fra den annen NAND-port 91 blir sendt til inngangen for å tilbakestille den annen vippe 94 til null. Klokkeinngangen og inngangen J på denne annen vippe 94 er forbundet med den forsyningsspenning som representerer nivået «1», og inngangen K er forbundet med den forsyningsspenning som representerer nivået «null». Utgangen Q1 fra den annen vippe 94 leverer det signal CLK2 som avgis av forbindelsen 95 til multiplekseren 18. Den interne klokke FRC leverer, gjennom forbindelsen 111, periodiske pulssignaler som har en minste pulsbredde Tm som blir definert av kretsen på figur 6. Denne kretsen 11 utgjøres for eksempel av en rekke invertere (111 til 115), i dette tilfellet 5, som hver kan ha en bestemt forplantningstid, for eksempel 10 nanosekunder, som gjør det mulig å oppnå, ved utgangen FRC, en puls på 50 nanosekunder. Denne utgangen FRC er sløyfekoplet tilbake gjennom forbindelsen 116 til inngangen på den første inverter 111, og inngangen på den første inverter 111 vil også bli matet gjennom en motstand 117 av forsyningsspenningen på 5 volt. Den valgte pulsbredde er 50 nanosekunder, men det er opplagt at det å variere antallet invertertrinn, varieres verdien av Tm. Denne verdien Tm vil bli brukt, som vist på figur 3B, av den logiske kretsen 9 på figur 3A til å generere, fra pulssignalet med tilfeldig variabel periodisitet I, et pulssignal CLK2 hvis pulser med variabel bredde har en minste verdi Tm og hvis periodisitet også er variabel og desynkronisert i forhold til den eksterne klokke CLKE. Siden den interne klokke begynner å funksjonere så snart den integrerte kretsen blir slått på, er det i virkeligheten, hvis den innledende periodisiteten for denne klokken er forskjellig fra periodisiteten for den eksterne klokke, ingen mulighet for at klokkene kan være synkronisert ved oppstartingen. Signalene fra denne kalibratoren 9 har en periode som i det minste er lik to gagner den minste tid Tm som kreves for at prosessoren skal uføre en intern syklus. Alle forflankene til signalet CLK2 vil være adskilt i det minste av verdien Tm, men deres posisjon og deres nøyaktige varighet vil være tilfeldig.
Det kan også sees at uansett hvilken variant av utførelsesformen som benyttes, skjer kjøringen av hovedprogrammet med en uforutsigbar sekvensering som, avhengig av varianten, er avhengig av slumptall-generatoren, eller den tilfeldige klokken, av sekundærprogrammet, av de tilfeldige avbrudd eller av en kombinasjon av minst to av disse innretninger. Når hovedprogrammet utfører funksjoner som ikke er følsomme fra et sikkerhetssynspunkt, kan det også returnere til den eksterne klokke CLKE, for eksempel for å levere ut data til verdenen utenfor eller for å maskere dekorrelasjonsavbruddet for å optimalisere behandlingstiden. Så snart en sikkerhetsfunksjon bli implementert, autoriserer hovedprogrammet 5 den tilfeldige driftsmåte ved å godkjenne enten den tilfeldige klokken eller dekorrelasjonsavbruddet (eller begge deler) for å «omkoste» de forskjellige driftssignaler, spesielt ved desynkronisering av klokken i forhold til hovedprogrammet, eller ved å anrope sekundærprogrammet.
For slumptall-generatoren 2 er det mulig, for eksempel, å bruke sløyfekoplede tellere som har forskjellige perioder, hvilke tellere blir initialisert med en «kime»
(informasjon) lagret i et ikke-flyktig minne 7. Når prosessorens tarter, tar tellerne i betraktning den lagrede verdi som den innledende verdi. Under beregningen, eller ved slutten av beregningen, blir det ikke-flyktige minnet 7 oppdatert med en ny verdi som vil tjene som en kime for initialisering av tellerne ved neste initialisering. Den avbrudds-genererende krets 4 kan være utformet slik at genereringen av avbruddspulser sett ovenfor kan skje, for eksempel når det genererte tall har visse kjennetegn, slik som likhet med visse data i programmet. Denne kretsen 4 kan også anta verdien til en eller flere biter i en eller flere tellere. Det er også mulig å frembringe en meget god slumptall-generatoren ved å bruke en kryptografisk algoritme 69, som vist på figur 5, eller en spredefunksjon initialisert av den «kimen»
(informasjonen) som er nevnt ovenfor. I dette tilfellet kan generatoren være i form av et program som implementerer den algoritme som utføres av prosessor 1, og som for eksempel implementerer den kryptografiske algoritme ved å motta en variabel lagret i det ikke-flyktige minnet 7, og en nøkkel for å generere en utgang lagret i et
bufferregister 41. Denne utgangen som er lagret i bufferregisteret, blir så behandlet av en maskinvare- eller programvare-dekodingsinnretning 42 for å generere enten det dekorrelerte klokkesignal CLK2 eller et signal for avbrudd av prosessoren 1. Det er lett å se at denne slumptall-generatoren også kan brukes til å generere de forskjellige slumptall som er generert ovenfor. En annen måte å frembringe en generator av denne typen på, er å forsterke den spenning som genereres ved klemmene på en såkalt «støydiode» og forme signalene etter en lavpassfiltrering for å hindre at de støypulser som er for hurtige, skal forstyrre operasjonen.
For den klokkefasedreiende krets er det andre muligheter enn den som er nevnt ovenfor. For eksempel et skiftregister drevet av en klokke 10 som er ti anger hurtigere enn den i prosessoren. Hvis registeret antas å omfatte ti vipper, så vil det være ti tilgjengelige pulser som har forskjellige faser, som kan velges av prosessoren ved hjelp av en multiplekser med ti innganger og en utgang. Utgangen fra multiplekseren blir som før brukt til å tilveiebringe det interne klokeksignal for prosessoren.
En annen utførelsesform består i å bruke en krets som samme type som slumptall-generatoren som er nevnt ovenfor, og å trekke ut pulser ved tellernes forskjellige nivåer. I dette tilfellet blir prosessoren i virkeligheten taktstyrt av pulser som er avgitt ved tilfeldige tidspunkter.
En annen utførelsesform består av å bruke signalene fra slumptall-generatoren til å trekke ut pulsene fra skiftregisteret. Mange kombinasjoner er mulige for å gjøre innretningen bedre, men prinsippene bak oppfinnelsen forblir gyldige.
Utførelsesvarianten på figur 1 er den mest fullstendige; og det er opplagt at den monolittiske kretsen av mikroprosessor-typen eller mikrodatamaskin-typen kan innbefatte bare en, eller flere, eller enhver kombinasjon av de representerte elementer.
I henhold til en variant kan således den monolittiske kretsen innbefatte en mikroprosessor, slumptall-generatoren, den interne klokke (FRC) og kalibreringskretsen som utgjør den dekorrelerte klokke.
I en annen variant kan den monolittiske kretsen innbefatte mikroprosessoren, slumptall-generatoren og den avbruddsgenererende krets.
I en annen variant kan den monolittiske kretsen innbefatte mikroprosessoren, det sekundære program og de dekorrelerte og kalibrerte klokkekretser.
I en annen variant kan den monolittiske kretsen innbefatte en mikroprosessor, den dekorrelerte og kalibrerte klokkekrets og avbrudds kretsen.
I andre varianter av den monolittiske kretsen blir mikroprosessoren erstattet av en mikrodatamaskin.
I andre varianter av den monolittisk integrerte kretsen kan mikroprosessoren være erstattet av et kombinerende logisk element som gjør det mulig å utføre et begrenset antall instruksjoner for spesielle anvendelser. Det er opplagt at i et slikt tilfelle, kan de samme sikkerhetsinnretninger anvendes i den integrerte kretsen.
Andre modifikasjoner som kan utføres på fagfolk på området, er ment å ligge innenfor oppfinnelsens ramme.

Claims (24)

1. Integrert krets, karakterisert ved at den har minst to aktiverbare anordninger (6,2, 9,18,
40) for å dekorrelere kjøringen av minst en sekvens av instruksjoner i et program (5) fra den integrerte kretsens (1) interne eller eksterne elektriske signaler, hvor dekorreleringsanordningene aktiveres selektivt av den integrerte kretsen.
2. Integrert krets ifølge krav 1, karakterisert ved at den integrerte kretsens (1) elektriske signaler er takt-, synkroniserings- eller statussignaler for mikroprosessoren eller mikrodatamaskinen (1).
3. Integrert krets ifølge et av de foregående krav, karakterisert ved at en av dekorreleringsanordningene innbefatter en eller flere kretser (18,9, 8,28,11,2) som genererer en rekke med klokke- eller taktpulser som blir avgitt til tilfeldige tidspunkter.
4. Integrert krets ifølge et av kravene 1-3, karakterisert ved at en av dekorreleringsanordningene innbefatter en slumptallgenerator (2) som benyttes til å desynkronisere utførelsen av programsekvensen i mikroprosessoren eller mikrodatamaskinen (1).
5. Integrert krets ifølge et av de foregående krav, karakterisert ved at en av dekorreleringsanordningene innbefatter en klokke-kalibreringskrets (9) som benyttes for å eliminere de taktpulser som er for korte.
6. Integrert krets ifølge et av de foregående krav, karakterisert ved at en av dekorreleringsanordningene innbefatter et system (40,48) for tilfeldig avbruddsgenerering.
7. Integrert krets ifølge et av de foregående krav, karakterisert ved at en av dekorreleringsanordningene innbefatter utførelse av sekundære sekvenser (6) med instruksjoner og utførelsestider som er forskjellige og som er valgt tilfeldig.
8. Integrert krets ifølge krav 7, karakterisert ved at den variable tiden for den sekundære prosesseringen avhenger av en verdi som leveres av en slumptallsgenerator (2).
9. Integrert krets ifølge krav 7 eller 8, karakterisert ved at den sekundære prosesseringen (6) ikke modifiserer den generelle operative kontekst i hovedprogrammet (5), slik at det blir mulig å returnere til hovedprogrammet uten å måtte gjenopprette denne konteksten.
10. Integrert krets ifølge et av kravene 7-9, karakterisert ved at den sekundære prosesseringen (6) gjenoppretter hovedprogrammets (5) kontekst før styringen av prosessoren returneres til dette.
11. Integrert krets ifølge et av de foregående krav, karakterisert ved at hovedprogrammet (5) kan autorisere eller utkople (8, R2,48) en eller flere dekorreleringsanordninger.
12. Integrert krets ifølge et av de foregående krav, karakterisert ved at den har en anordning (45) for å defase prosessorens takt-, synkroniserings- eller statussignaler.
13. Integrert krets ifølge krav 12, karakterisert ved at defasingsanordningen (45) generer en tilfeldig defasing av prosessorens takt-, synkroniserings- eller statussignaler.
14. Integrert krets ifølge krav 13, karakterisert ved at anordningen (45) for tilfeldig defasing helt eller delvis desynkroniserer prosessorens (1) funksjon fra den eksterne klokken under utførelsen av et program.
15. Integrert krets ifølge et av de foregående krav, karakterisert ved at slumptallsgeneratoren (2) bruker tellere (BO til B7) som kan være sløyfekoplet eller ikke, og som initialiseres med en tilfeldig verdi (7).
16. Integrert krets ifølge krav 15, karakterisert ved at initialiseringsverdien kommer fra et ikke-flyktig minne (7).
17. Integrert krets ifølge krav 16, karakterisert ved at initialiseringsverdien blir modifisert under kjøringen av et program.
18. Integrert krets ifølge et av de foregående krav, karakterisert ved at slumptallsgeneratoren benytter en algoritme av kryptografisk type eller en spredefunksjon initialisert med initialiseringsverdien.
19. Integrert krets ifølge et av de foregående krav, karakterisert ved at sekvenseringen av handlingene tar i betraktning de tider som er nødvendige for å aksessere de forskjellige registre, minner og interne enheter, men også, og spesielt, signalforplantningstidene i databussene og gjennom de forskjellige logiske kretser.
20. Fremgangsmåte for anvendelse av en integrert krets i henhold til et av de foregående krav, karakterisert ved at den består i: enten å utløse sekvensering av en eller flere instruksjoner eller operasjoner ved bruk av et puls-klokkesignal (CLK2), variable og tilfeldige pulser med minimumsbredde (Tm) med variabel og tilfeldig frekvens, desynkronisert fra den eksterne klokken (CLKE); eller å utløse avbruddssekvenser (40) tilfeldig; eller å utløse prosessering av en tilfeldig sekvens av instruksjoner (6) eller operasjoner under utførelse av en hovedsekvens (5) av instruksjoner eller operasjoner; eller å kombinere minst to av de ovennevnte muligheter.
21. Integrert krets som innbefatter en mikroprosessor som styres av minst ett program, samt en anordning for å dekorrelere sekvenseringen av utførelsen av instruksjonene i dette programmet, karakterisert ved at en del av dette programmet kan benyttes til å autorisere, modifisere eller frakople dekorreleringsanordningens funksjon.
22. Integrert krets ifølge krav 21, karakterisert ved at dekorreleringsanordningen innbefatter en anordning for å generere et taktsignal eller en rekke klokkepulser som blir avgitt ved tilfeldige tidspunkter, tilknyttet enten en anordning for tilfeldig generering av avbrudd eller en anordning for utløsning av utførelse av en sekundær sekvens.
23. Integrert krets ifølge krav 21 eller 22, innbefattende en mikroprosessor eller en anordning for eksekvering av instruksjoner, karakterisert ved at den innbefatter en anordning for å velge taktstyrings-klokke for mikroprosessoren eller for anordningen for eksekvering av instruksjoner, idet velgeranordningen benyttes til å velge enten en klokke (CLKE) som er ekstern i forhold til den integrerte kretsen, eller en tilfeldig klokke (CLK2, S).
24. Integrert krets ifølge krav 23, karakterisert ved at den tilfeldige klokken genereres fra en slumptallsgenerator som blir tilført enten en intern klokke (FRC) eller en ekstern klokke (CLKE).
NO19975116A 1996-03-07 1997-11-06 Forbedret integrert krets, samt fremgangsmate for anvendelse av denne NO317448B1 (no)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9602903A FR2745924B1 (fr) 1996-03-07 1996-03-07 Circuit integre perfectionne et procede d'utilisation d'un tel circuit integre
PCT/FR1997/000406 WO1997033217A1 (fr) 1996-03-07 1997-03-07 Circuit integre perfectionne et procede d'utilisation d'un tel circuit integre

Publications (3)

Publication Number Publication Date
NO975116D0 NO975116D0 (no) 1997-11-06
NO975116L NO975116L (no) 1998-01-06
NO317448B1 true NO317448B1 (no) 2004-11-01

Family

ID=9489969

Family Applications (1)

Application Number Title Priority Date Filing Date
NO19975116A NO317448B1 (no) 1996-03-07 1997-11-06 Forbedret integrert krets, samt fremgangsmate for anvendelse av denne

Country Status (15)

Country Link
US (1) US5944833A (no)
EP (1) EP0826169B1 (no)
JP (2) JP3713515B2 (no)
KR (1) KR100463814B1 (no)
CN (1) CN1236370C (no)
AR (1) AR006138A1 (no)
AU (1) AU725888B2 (no)
BR (1) BR9702118A (no)
CA (1) CA2221880C (no)
DE (1) DE69717028T2 (no)
FR (1) FR2745924B1 (no)
HK (1) HK1009684A1 (no)
NO (1) NO317448B1 (no)
TW (1) TW491978B (no)
WO (1) WO1997033217A1 (no)

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2316227C (en) 1998-01-02 2009-08-11 Cryptography Research, Inc. Leak-resistant cryptographic method and apparatus
US6327661B1 (en) 1998-06-03 2001-12-04 Cryptography Research, Inc. Using unpredictable information to minimize leakage from smartcards and other cryptosystems
US7587044B2 (en) 1998-01-02 2009-09-08 Cryptography Research, Inc. Differential power analysis method and apparatus
TW380344B (en) * 1998-02-04 2000-01-21 Admtek Co Multiple output single crystal device for not generating simultaneous switch output
ES2660057T3 (es) 1998-05-18 2018-03-20 Giesecke + Devrient Mobile Security Gmbh Soporte de almacenamiento de datos de acceso protegido
EP1926241A3 (en) * 1998-06-03 2009-03-11 Cryptography Research Inc. Using unpredictable information to minimize leakage from smartcards and other cryptosystems
WO1999067919A2 (en) 1998-06-03 1999-12-29 Cryptography Research, Inc. Improved des and other cryptographic processes with leak minimization for smartcards and other cryptosystems
US6539092B1 (en) 1998-07-02 2003-03-25 Cryptography Research, Inc. Leak-resistant cryptographic indexed key update
DE19834076A1 (de) * 1998-07-29 2000-02-10 Philips Corp Intellectual Pty Anordnung zur elektronischen Verarbeitung von Datensignalen
KR100672097B1 (ko) 1998-07-31 2007-01-19 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 데이터 처리 장치 및 데이터 처리 장치용 회로
US6046616A (en) * 1998-08-07 2000-04-04 Tritech Microelectronics, Ltd. Two dimensional random pulse generator
DE19837808A1 (de) * 1998-08-20 2000-02-24 Orga Kartensysteme Gmbh Verfahren zur Ausführung eines Verschlüsselungsprogramms zur Verschlüsselung von Daten in einem mikroprozessorgestützten, tragbaren Datenträger
EP1046142B1 (de) * 1998-09-30 2005-11-16 Koninklijke Philips Electronics N.V. Datenverarbeitungseinrichtung und verfahren zu dessen betrieb zum verhindern einer differentiellen stromverbrauchanalyse
FR2784763B1 (fr) * 1998-10-16 2001-10-19 Gemplus Card Int Composant electronique et procede pour masquer l'execution d'instructions ou la manipulation de donnees
JP2000165375A (ja) * 1998-11-30 2000-06-16 Hitachi Ltd 情報処理装置、icカード
US6408075B1 (en) 1998-11-30 2002-06-18 Hitachi, Ltd. Information processing equipment and IC card
JP4317607B2 (ja) 1998-12-14 2009-08-19 株式会社日立製作所 情報処理装置、耐タンパ処理装置
FR2787900B1 (fr) * 1998-12-28 2001-02-09 Bull Cp8 Circuit integre intelligent
IL128007A (en) * 1999-01-11 2003-02-12 Milsys Ltd Enhancements on compact logic devices and also for accelerating and securing computations in modular arithmetic especially for use in public key cryptographic co-processors designed for elliptic curve and rsa type computations
FR2790347B1 (fr) * 1999-02-25 2001-10-05 St Microelectronics Sa Procede de securisation d'un enchainement d'operations realisees par un circuit electronique dans le cadre de l'execution d'un algorithme
DE19911673A1 (de) * 1999-03-09 2000-09-14 Deutsche Telekom Ag Verfahren und Anordnung für den Schutz der Daten auf einer Smartcard
JP3827050B2 (ja) * 1999-03-09 2006-09-27 株式会社ルネサステクノロジ Icカードと半導体集積回路装置
FR2793571B1 (fr) * 1999-05-11 2003-10-31 Gemplus Card Int Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete et dynamique
FR2793904B1 (fr) * 1999-05-21 2001-07-27 St Microelectronics Sa Procede et dispositif de gestion d'un circuit electronique
JP2001094550A (ja) * 1999-09-17 2001-04-06 Toshiba Corp 信号処理装置
UA72944C2 (uk) * 1999-12-02 2005-05-16 Інфінеон Текнолоджіз Аг Мікропроцесорний пристрій з кодуванням
FR2802669B1 (fr) * 1999-12-15 2002-02-08 St Microelectronics Sa Procede non deterministe de transfert securise de donnees
DE10000503A1 (de) * 2000-01-08 2001-07-12 Philips Corp Intellectual Pty Datenverarbeitungseinrichtung und Verfahren zu dessen Betrieb
EP2352120B1 (en) * 2000-01-13 2016-03-30 Digimarc Corporation Network-based access to auxiliary data based on steganographic information
CN1192330C (zh) * 2000-01-18 2005-03-09 因芬尼昂技术股份公司 微处理器加密装置
FR2807591B1 (fr) * 2000-04-06 2003-08-08 Gemplus Card Int Procede de contre-mesure pour un micro-controleur base sur une architecture avec "pipeline"
FR2808360B1 (fr) * 2000-04-28 2002-06-28 Gemplus Card Int Procede de contre mesure dans un microcircuit mettant en oeuvre le procede et carte a puce comportant ledit microcircuit
DE50014462D1 (de) * 2000-05-22 2007-08-16 Infineon Technologies Ag Sicherheits-Datenverarbeitungseinheit sowie dazugehöriges Verfahren
FR2818766A1 (fr) * 2000-12-21 2002-06-28 Bull Cp8 Procede de securisation de l'execution d'un programme implante dans un module electronique a microprocesseur, ainsi que le module electronique et la carte a microcircuit associes
FR2818772A1 (fr) * 2000-12-21 2002-06-28 Bull Cp8 Procede de securisation d'un operateur logique ou mathematique implante dans un module electronique a microprocesseur, ainsi que le module electronique et le systeme embarque associes
US9323955B2 (en) * 2000-12-21 2016-04-26 Gemalto Sa Method for protecting a logic or mathematical operator installed in an electronic module with a microprocessor as well as the associated embedded electronic module and the system
FR2819070B1 (fr) * 2000-12-28 2003-03-21 St Microelectronics Sa Procede et dispositif de protection conte le piratage de circuits integres
DE10101956A1 (de) * 2001-01-17 2002-07-25 Infineon Technologies Ag Verfahren zur Erhöhung der Sicherheit einer CPU
US7197160B2 (en) 2001-03-05 2007-03-27 Digimarc Corporation Geographic information systems using digital watermarks
DE10128573A1 (de) * 2001-06-13 2003-01-02 Infineon Technologies Ag Verhindern der unerwünschten externen Erfassung von Operationen in integrierten Digitalschaltungen
JP4173297B2 (ja) * 2001-09-13 2008-10-29 株式会社ルネサステクノロジ メモリカード
EP1293856A1 (fr) 2001-09-18 2003-03-19 EM Microelectronic-Marin SA Circuit Intégré sécurisé comprenant des parties à caractère confidentiel, et procédé pour sa mise en action
FR2832824A1 (fr) * 2001-11-28 2003-05-30 St Microelectronics Sa Blocage du fonctionnement d'un circuit integre
AU2003207931A1 (en) * 2002-03-07 2003-09-16 Axalto Sa Method for making safe an electronic cryptography assembly with a secret key
DE10213142A1 (de) 2002-03-23 2003-10-02 Clariant Gmbh Stabile Dispersionskonzentrate
FR2844896A1 (fr) * 2002-09-19 2004-03-26 St Microelectronics Sa Alimentation d'un circuit de traitement asynchrone de donnees
DE10254657A1 (de) * 2002-11-22 2004-06-03 Philips Intellectual Property & Standards Gmbh Mikrocontroller und zugeordnetes Verfahren zum Abarbeiten der Programmierung des Mikrocontrollers
US7426629B2 (en) * 2002-12-12 2008-09-16 Arm Limited Processing activity masking in a data processing system
US7373463B2 (en) * 2003-02-13 2008-05-13 Stmicroelectronics S.A. Antifraud method and circuit for an integrated circuit register containing data obtained from secret quantities
DE10310781A1 (de) * 2003-03-12 2004-09-30 Infineon Technologies Ag Verfahren zum Betreiben eines Mikroprozessors und eine Mikroprozessoranordnung
US6926768B2 (en) 2003-04-14 2005-08-09 Sun Chemical Corporation Treatment of high performance pigments
US7949883B2 (en) * 2004-06-08 2011-05-24 Hrl Laboratories, Llc Cryptographic CPU architecture with random instruction masking to thwart differential power analysis
US20060002479A1 (en) * 2004-06-22 2006-01-05 Fernandes Felix C A Decoder for H.264/AVC video
US8953908B2 (en) 2004-06-22 2015-02-10 Digimarc Corporation Metadata management and generation using perceptual features
TWI251837B (en) * 2004-10-13 2006-03-21 Via Tech Inc Method and related apparatus for adjusting timing of memory signals
US7702942B2 (en) * 2005-09-12 2010-04-20 Northern Lights Semiconductor Corp. Method for generating adjustable MRAM timing signals
US7372290B2 (en) * 2005-10-04 2008-05-13 Stmicroelectronics, Inc. System and method for using dummy cycles to mask operations in a secure microcontroller
JP2007128184A (ja) * 2005-11-01 2007-05-24 Sharp Corp 消費電力解析対策機能付き半導体装置
US7647486B2 (en) * 2006-05-02 2010-01-12 Atmel Corporation Method and system having instructions with different execution times in different modes, including a selected execution time different from default execution times in a first mode and a random execution time in a second mode
FR2910658B1 (fr) * 2006-12-22 2009-02-20 Trusted Logic Sa Systemes electroniques securises,procedes de securisation et utilisations de tels systemes
FR2925968B1 (fr) * 2007-12-26 2011-06-03 Ingenico Sa Procede de securisation d'un microprocesseur, programme d'ordinateur et dispositif correspondants
EP2507708B1 (en) 2009-12-04 2019-03-27 Cryptography Research, Inc. Verifiable, leak-resistant encryption and decryption
US8659954B1 (en) * 2011-09-14 2014-02-25 Adesto Technologies Corporation CBRAM/ReRAM with improved program and erase algorithms
US9141809B2 (en) 2012-07-23 2015-09-22 Qualcomm Incorporated Method and apparatus for deterring a timing-based glitch attack during a secure boot process
JP6323065B2 (ja) * 2014-02-26 2018-05-16 セイコーエプソン株式会社 マイクロコンピューター及び電子機器
DK2955871T3 (en) * 2014-06-12 2017-05-01 Nagravision Sa Cryptographic method for securely exchanging messages and apparatus and system for performing this method
EP3147774A1 (fr) * 2015-09-25 2017-03-29 Gemalto Sa Generateur d'horloge aleatoire
TWI638298B (zh) 2015-12-31 2018-10-11 禾瑞亞科技股份有限公司 觸控方法、觸控處理系統與電子裝置
US10579197B2 (en) 2015-12-31 2020-03-03 Egalax_Empia Technology Inc. Touch sensitive processing method
DE102017114526A1 (de) * 2017-06-29 2019-01-03 Hanon Systems Verfahren zur Ansteuerung von Leistungshalbleitern in einem Inverter
US20190097785A1 (en) * 2017-09-27 2019-03-28 Silicon Laboratories Inc. Apparatus for Clock-Frequency Variation in Electronic Circuitry and Associated Methods
CN109245883A (zh) * 2018-09-21 2019-01-18 深圳市德名利电子有限公司 一种随机数发生器及随时数产生方法
US20240385641A1 (en) * 2023-05-16 2024-11-21 Groq, Inc. Clock period synthesis

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4125763A (en) * 1977-07-15 1978-11-14 Fluke Trendar Corporation Automatic tester for microprocessor board
JPS5857778B2 (ja) * 1978-12-08 1983-12-21 カシオ計算機株式会社 乱数の初期値設定方式
JPS58114134A (ja) * 1981-12-28 1983-07-07 Hitachi Electronics Eng Co Ltd 乱数発生器
JPS62237592A (ja) * 1986-04-08 1987-10-17 Casio Comput Co Ltd Icカ−ドにおけるクロツク切換方式
CA2037857C (en) * 1990-03-20 2001-01-16 Roy Allen Griffin, Iii Prevention of determination of time of execution of predetermined data processing routine in relation to occurrence of prior observable external event
US5249294A (en) * 1990-03-20 1993-09-28 General Instrument Corporation Determination of time of execution of predetermined data processing routing in relation to occurrence of prior externally observable event
JPH04199234A (ja) * 1990-11-26 1992-07-20 Nagano Oki Denki Kk プログラムテスト方式
JP2757714B2 (ja) * 1992-09-03 1998-05-25 日本電気株式会社 フレームパルス生成回路
US5404402A (en) * 1993-12-21 1995-04-04 Gi Corporation Clock frequency modulation for secure microprocessors

Also Published As

Publication number Publication date
CA2221880A1 (fr) 1997-09-12
HK1009684A1 (en) 1999-09-10
JP3713515B2 (ja) 2005-11-09
BR9702118A (pt) 1999-01-26
EP0826169B1 (fr) 2002-11-13
AU2031497A (en) 1997-09-22
AR006138A1 (es) 1999-08-11
CN1236370C (zh) 2006-01-11
FR2745924B1 (fr) 1998-12-11
US5944833A (en) 1999-08-31
CN1181823A (zh) 1998-05-13
TW491978B (en) 2002-06-21
AU725888B2 (en) 2000-10-26
NO975116D0 (no) 1997-11-06
WO1997033217A1 (fr) 1997-09-12
KR19990008381A (ko) 1999-01-25
FR2745924A1 (fr) 1997-09-12
JPH10507561A (ja) 1998-07-21
NO975116L (no) 1998-01-06
JP4015811B2 (ja) 2007-11-28
JP2001296935A (ja) 2001-10-26
DE69717028D1 (de) 2002-12-19
KR100463814B1 (ko) 2005-05-27
CA2221880C (fr) 2006-05-09
EP0826169A1 (fr) 1998-03-04
DE69717028T2 (de) 2003-05-08

Similar Documents

Publication Publication Date Title
NO317448B1 (no) Forbedret integrert krets, samt fremgangsmate for anvendelse av denne
US11308217B2 (en) Randomized execution countermeasures against fault injection attacks during boot of an embedded device
CN210052161U (zh) 处理系统、集成电路和微控制器
CN110785759B (zh) 用于多核处理器的远程认证
US20030018892A1 (en) Computer with a modified north bridge, security engine and smart card having a secure boot capability and method for secure booting a computer
US20080034350A1 (en) System and Method for Checking the Integrity of Computer Program Code
US12242739B2 (en) Transparently attached flash memory security
WO2015057891A1 (en) Multi-threaded low-level startup for system boot efficiency
KR100578459B1 (ko) 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터
US8732806B2 (en) Method and system for hardware enforced virtualization in an integrated circuit
KR20210028686A (ko) 반복적인 사이드 채널 공격 대응책
EP1843250B1 (en) System and method for checking the integrity of computer program code
US7747935B2 (en) Method and device for securing the reading of a memory
US11934529B2 (en) Processing device and method for secured boot
US8127120B2 (en) Secured processing unit
EP3046024A1 (en) Method of operating a system on chip comprising a bootable processor
CN116776333A (zh) 用于执行计算单元的安全启动序列的方法

Legal Events

Date Code Title Description
MK1K Patent expired