IT201800005506A1 - Sistema di elaborazione, relativo circuito integrato e procedimento - Google Patents

Sistema di elaborazione, relativo circuito integrato e procedimento Download PDF

Info

Publication number
IT201800005506A1
IT201800005506A1 IT102018000005506A IT201800005506A IT201800005506A1 IT 201800005506 A1 IT201800005506 A1 IT 201800005506A1 IT 102018000005506 A IT102018000005506 A IT 102018000005506A IT 201800005506 A IT201800005506 A IT 201800005506A IT 201800005506 A1 IT201800005506 A1 IT 201800005506A1
Authority
IT
Italy
Prior art keywords
registers
data
register
memory
interface
Prior art date
Application number
IT102018000005506A
Other languages
English (en)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed filed Critical
Priority to IT102018000005506A priority Critical patent/IT201800005506A1/it
Priority to EP19172340.2A priority patent/EP3570167B1/en
Priority to US16/403,275 priority patent/US11281807B2/en
Priority to CN201910413254.9A priority patent/CN110502932B/zh
Priority to CN201920710970.9U priority patent/CN210052161U/zh
Publication of IT201800005506A1 publication Critical patent/IT201800005506A1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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/72Protecting 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 in cryptographic circuits
    • 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/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Circuits Of Receivers In General (AREA)

Description

DESCRIZIONE dell’invenzione industriale dal titolo:
“Sistema di elaborazione, relativo circuito integrato e procedimento”
TESTO DELLA DESCRIZIONE
Campo Tecnico
Le forme di attuazione della presente descrizione sono relative ai sistemi di elaborazione, come i microcontrollori, aventi un coprocessore crittografico.
Sfondo
La Figura 1 rappresenta un tipico sistema di elaborazione digitale 10, come un circuito integrato o un sistema embedded, per es., una FPGA (Field Programmable Gate Array), un DSP (Digital Signal Processor) o un microcontrollore (per es., dedicato al mercato automotive).
Nell’esempio considerato, il sistema di elaborazione 10 comprende almeno un’unita di elaborazione 102, come un microprocessore, di solito l’unità di elaborazione centrale (CPU, “Central Processing Unit”), programmata tramite istruzioni software. Di solito, il software eseguito dall’unità di elaborazione 102 è memorizzato in una memoria di programma 104, come una memoria non volatile, quale ad esempio una memoria Flash o una EEPROM. Generalmente, la memoria 104 può essere integrata con l’unità di elaborazione 102 in un singolo circuito integrato, oppure la memoria 104 può essere sotto forma di un circuito integrato separato e può essere connessa all’unità di elaborazione 102, per es. tramite le piste di una scheda a circuito stampato. Così, in generale la memoria 104 contiene il firmware per l’unità di elaborazione 102, in cui il termine firmware comprende sia il software di un microprocessore sia i dati di programmazione di un circuito logico programmabile, come una FPGA.
Generalmente, l’unità di elaborazione 102 e la memoria 104 possono scambiare dati tramite qualsiasi sistema di comunicazione adatto, per esempio un sistema di bus 120.
Nell’esempio considerato, l’unità di elaborazione 102 può avere associate una o più risorse.
Per esempio, nella Figura 1 è rappresentato un coprocessore crittografico 108, che può essere usato per crittare e/o decrittare dati. Specificamente, nell’esempio considerato, il coprocessore crittografico 108 comprende un circuito di elaborazione crittografica 112 e un’interfaccia a registri 110. Specificamente, il circuito di elaborazione crittografica 112 è disposto di solito per elaborare dati, come per crittare o decrittare dati, per mezzo di una o più chiavi crittografiche. Di conseguenza, l’interfaccia a registri 110 può essere usata per fornire i dati seguenti al circuito di elaborazione crittografica 112:
- l’una o più chiavi crittografiche; e
- dati che identificano i dati da elaborare, come direttamente i dati da elaborare o un indirizzo di una locazione di memoria (per es., nella memoria volatile 114) che contiene i dati da elaborare.
Altre possibili risorse 106 possono comprendere uno o più di ciò che segue:
- un’interfaccia di comunicazione 106a per connettere una memoria 104 interna o esterna al sistema di bus 120;
- una o più ulteriori interfacce di comunicazione 106b, come interfacce UART (Universal Asynchronous Receiver/Transmitter), SPI (Serial Peripheral Interface Bus), I<2>C (Inter-Integrated Circuit), bus CAN (Controller Area Network), Ethernet e/o interfacce di debug; e/o
- uno o più convertitori analogico-digitali e/o digitale-analogici 106c; e/o
- uno o più circuiti hardware analogici e/o digitali 106d dedicati, come:
- uno o più componenti digitali dedicati, come contatori e/o timer hardware; e/o
- uno o più componenti analogici, come comparatori, sensori, come un sensore di temperatura, ecc.; e/o
- uno o più componenti a segnali misti, come un dispositivo di pilotaggio (“driver”) PWM (Pulse-Width Modulation).
Di conseguenza, il sistema di elaborazione digitale 10 può supportare differenti funzionalità. Per esempio, il comportamento dell’unità di elaborazione 102 è determinato dal firmware memorizzato nella memoria 104, per es., le istruzioni software che devono essere eseguite da un microprocessore 102 di un microcontrollore 10. Così, installando un firmware differente, lo stesso (microcontrollore) hardware può essere usato per differenti applicazioni.
In molte applicazioni, in effetti, sono usati due firmware:
- un firmware di boot (cosiddetto bootloader) BL, che è eseguito all’avvio del sistema di elaborazione ed è usato per inizializzare/impostare il sistema di elaborazione 10; e
- un firmware applicativo FW, che è eseguito una volta che è stato eseguito il firmware di boot.
Per esempio, il firmware di boot può essere usato per configurare le varie risorse 106.
Specificamente, il firmware di boot BL può essere usato per fornire l’una o più chiavi crittografiche al coprocessore crittografico 108, cioè il bootloader BL comprende istruzioni software per memorizzare una o più chiavi crittografiche nel registro 110. Per contro, una volta che il firmware applicativo FW è stato avviato, questo firmware FW può usare il coprocessore crittografico 108 per elaborare i dati, cioè il firmware FW comprende una o più istruzioni software per richiedere l’esecuzione di una o più operazioni di elaborazione crittografica fornite dal coprocessore 108, che usa a sua volta l’una o più chiavi crittografiche già memorizzate nel registro 110. Di conseguenza, in questo modo il firmware applicativo FW non contiene di per sé stesso l’una o più chiavi crittografiche. Per esempio, ciò ha il vantaggio che il firmware applicativo FW può essere aggiornato senza dovere includere l’una o più chiavi crittografiche all’interno del firmware applicativo FW.
Spesso, l’interfaccia a registri 110 è configurata in modo tale che l’una o più chiavi crittografiche possano essere scritte in rispettive posizioni di registro, ma che le corrispondenti posizioni di registro non possano essere lette, cioè l’interfaccia a registri 110 è configurata per inibire gli accessi del firmware applicativo FW alle locazioni che contengono l’una o più chiavi crittografiche. Di conseguenza, in questo modo, il firmware applicativo FW può anche non accedere all’una o più chiavi crittografiche memorizzate nell’interfaccia 110.
La soluzione rappresentata nella Figura 1 fornisce così una soluzione efficiente al fine di mantenere segrete l’una o più chiavi crittografiche, nella misura in cui il firmware applicativo FW non è in grado di accedere all’una o più chiavi crittografiche. In effetti, di solito anche il bootloader BL è memorizzato in locazioni di memoria all’interno della memoria non volatile 104 che non sono accessibili da parte del firmware applicativo FW, cioè il sistema di elaborazione 10 è configurato per inibire gli accessi del firmware applicativo FW alle locazioni di memoria nella memoria 104 che contengono il bootloader BL.
Sintesi
Gli inventori hanno osservato che una tale separazione stringente della fase di configurazione dell’una o più chiavi crittografiche tramite il bootloader dal firmware applicativo può generare anche alcuni problemi. Per esempio, il firmware applicativo FW non è in grado di verificare se l’una o più chiavi crittografiche sono state caricate correttamente nel registro 110.
In considerazione di ciò che precede, uno scopo di varie forme di attuazione della presente descrizione è di fornire soluzioni per verificare/convalidare una configurazione di sicurezza comprendente una o più chiavi crittografiche.
Secondo una o più forme di attuazione, uno o più degli scopi precedenti sono raggiunti per mezzo di un sistema di elaborazione avente le caratteristiche esposte specificamente nelle rivendicazioni che seguono. Le forme di attuazione concernono inoltre un relativo circuito integrato e procedimento.
Le rivendicazioni sono parte integrante dell’insegnamento tecnico della descrizione qui fornita.
Come menzionato in precedenza, varie forme di attuazione della presente descrizione sono relative a un sistema di elaborazione. In varie forme di attuazione, il sistema di elaborazione comprende un sistema di bus, un’unità di elaborazione connessa al sistema di bus e una memoria non volatile configurata per memorizzare almeno un firmware che deve essere eseguito dall’unità di elaborazione.
In varie forme di attuazione, il sistema di elaborazione, come un circuito integrato, comprende anche un coprocessore connesso al sistema di bus, in cui il coprocessore comprende un’interfaccia a registri comprendente una pluralità di registri e un circuito di elaborazione configurato per effettuare almeno un’operazione di elaborazione in funzione di dati memorizzati nella pluralità di registri. Specificamente, la pluralità di registri comprende un primo insieme di registri configurato per memorizzare un primo insieme di informazioni di configurazione e un secondo insieme di registri configurato per memorizzare un secondo insieme di informazioni di configurazione.
Per esempio, in varie forme di attuazione, il circuito di elaborazione è un circuito di elaborazione crittografica configurato per effettuare operazioni crittografiche in funzione di almeno una chiave crittografica. In questo caso, il primo insieme di registri può essere disposto per memorizzare l’almeno una chiave crittografica. Per contro, il secondo insieme di registri può comprendere almeno un registro per memorizzare i dati che devono essere elaborati dal circuito di elaborazione crittografica e/o almeno un registro per memorizzare un indirizzo contenente i dati che devono essere elaborati dal circuito di elaborazione crittografica.
Per esempio, in varie forme di attuazione, il coprocessore ha associata un’interfaccia di comunicazione per interfacciare una memoria (per es., esterna) con il sistema di bus. In questo caso, il coprocessore può essere configurato per analizzare la comunicazione scambiata tra la memoria e il sistema di bus attraverso l’interfaccia di comunicazione al fine di rilevare un’operazione di lettura in una data locazione di memoria che appartiene a una data area di memoria della memoria. Specificamente, in questo caso, il coprocessore può leggere attraverso l’interfaccia di comunicazione i dati memorizzati nella data locazione di memoria dalla memoria e può decrittare i dati letti con una chiave crittografica memorizzata nel primo insieme di registri. Per esempio, in questo modo un firmware applicativo crittato può essere letto dalla memoria, decrittato dal coprocessore ed eseguito dall’unità di elaborazione.
In varie forme di attuazione, la configurazione del primo insieme di registri è effettuata da un bootloader hardware o software. In questo caso, al fine di inibire un accesso al primo insieme di registri, l’interfaccia a registri può essere configurata per inibire selettivamente gli accessi in scrittura e/o lettura al primo insieme di registri in funzione di un segnale di blocco (“lock”). Per esempio, il segnale di blocco può essere impostato dal bootloader hardware o software.
Di conseguenza, in questo modo, i dati scritti nel primo insieme di registri non possono essere verificati. Similmente, quando è stata memorizzata una configurazione scorretta nel primo insieme di registri, può essere impossibile decrittare il firmware applicativo.
Al fine di permettere ancora una verifica della configurazione, in varie forme di attuazione, l’interfaccia a registri è disposta per calcolare un valore di controllo ciclico di ridondanza (”cyclic redundancy check”) in funzione dei dati scritti almeno nel primo insieme di registri.
Specificamente, in varie forme di attuazione, l’interfaccia a registri comprende un’interfaccia di bus configurata per monitorare le richieste di scrittura trasmesse attraverso il sistema di bus all’interfaccia a registri. Specificamente, le richieste di scrittura comprendono un indirizzo target e dati da scrivere, in cui a ciascun registro della pluralità di registri è associato un rispettivo indirizzo. Di conseguenza, l’interfaccia di bus può essere configurata per impostare per ciascun registro della pluralità di registri un rispettivo segnale di selezione di registro quando l’indirizzo target di una richiesta di scrittura corrisponde all’indirizzo associato al rispettivo registro, in cui ciascun registro è configurato per memorizzare i dati da scrivere quando il rispettivo segnale di selezione di registro è impostato. Inoltre, l’interfaccia a registri comprende un circuito di calcolo del controllo ciclico di ridondanza configurato per calcolare un valore di controllo ciclico di ridondanza almeno in funzione dei dati da scrivere nel primo insieme di registri. Di conseguenza, verificando il valore di controllo ciclico di ridondanza è possibile verificare se i dati memorizzati nel primo insieme di registri sono validi.
In varie forme di attuazione, l’accesso al valore di controllo ciclico di ridondanza è limitato da un circuito di mascheratura. Specificamente, in varie forme di attuazione, il circuito di mascheratura è configurato per monitorare i segnali di selezione di registro associati ai registri del primo insieme di registri al fine di determinare la sequenza di registri in cui sono stati memorizzati i dati. In seguito, il circuito di mascheratura confronta la sequenza di registri con una sequenza di riferimento. Quando il confronto indica che la sequenza di registri corrisponde alla sequenza di riferimento, il circuito di mascheratura può fornire il valore di controllo ciclico di ridondanza calcolato all’interfaccia di bus. Per contro, quando il confronto indica che la sequenza di registri non corrisponde alla sequenza di riferimento, il circuito di mascheratura può inibire l’accesso al valore di controllo ciclico di ridondanza calcolato e può fornire all’interfaccia di bus un valore che è indipendente dal valore di controllo ciclico di ridondanza calcolato, come un valore casuale o un valore di default fissato.
Breve descrizione delle figure
Forme di attuazione della presente descrizione saranno ora descritte con riferimento ai disegni annessi, che sono forniti a puro titolo di esempio non limitativo, e nei quali:
- la Figura 1 rappresenta un esempio di un sistema di elaborazione elettronico;
- le Figure da 2a a 2c rappresentano forme di attuazione di un sistema di elaborazione elettronico comprendente un coprocessore crittografico che comprende un’interfaccia a registri e un circuito di elaborazione;
- le Figure 3a e 3b rappresentano forme di attuazione dell’interfaccia a registri delle Figure da 2a a 2c;
- la Figura 4 rappresenta una forma di attuazione dell’interfaccia a registri delle Figure 3a o 3b;
- le Figure 5a e 5b rappresentano ulteriori forme di attuazione dell’interfaccia a registri delle Figure da 2a a 2c; e
- le Figure 6 e 7 rappresentano una forma di attuazione di un circuito di calcolo del CRC per le interfacce a registri delle Figure 5a o 5b.
Descrizione Dettagliata
Nella descrizione che segue, sono illustrati numerosi dettagli specifici, allo scopo di fornire una comprensione approfondita delle forme di attuazione. Le forme di attuazione possono essere attuate senza uno o più dei dettagli specifici o con altri procedimenti, componenti, materiali, ecc. In altri casi, operazioni, materiali o strutture ben note non sono illustrate o descritte in dettaglio in modo da evitare di rendere poco chiari certi aspetti delle forme di attuazione.
Un riferimento a “una forma di attuazione” in tutta questa descrizione intende indicare che una particolare configurazione, struttura, o caratteristica descritta con riferimento alla forma di attuazione è compresa in almeno una forma di attuazione. Così, le frasi come “in una forma di attuazione” che compaiono in vari punti in tutta questa descrizione non fanno necessariamente riferimento tutte alla stessa forma di attuazione. Inoltre, particolari conformazioni, strutture o caratteristiche possono essere combinate in un modo adeguato qualsiasi in una o più forme di attuazione.
I riferimenti usati qui sono forniti semplicemente per convenienza e non definiscono l’ambito di protezione o l’ambito o il significato delle forme di attuazione.
Nelle seguenti Figure da 2 a 7 le parti, gli elementi o i componenti che sono già stati descritti con riferimento alla Figura 1 sono indicati con gli stessi riferimenti usati precedentemente in tali Figure; la descrizione di tali elementi descritti precedentemente non sarà ripetuta in seguito al fine di non rendere troppo pesante la presente descrizione dettagliata.
Come descritto in precedenza con riferimento alla Figura 1, un tipico sistema di elaborazione 10a comprende:
- un’unità di elaborazione 102, come un microprocessore, quale ad esempio un microprocessore basato su STM32;
- una memoria non volatile 104 configurata per memorizzare il firmware per l’unità di elaborazione 102; e - un coprocessore crittografico 108.
Opzionalmente, il sistema di elaborazione 10 può anche comprendere una o più ulteriori risorse 106. Di conseguenza, la descrizione generale delle Figure 1 e 2 si applica completamente a un sistema di elaborazione secondo la presente descrizione.
La Figura 2a rappresenta una prima forma di attuazione di un sistema di elaborazione 10a. Nella forma di attuazione considerata, il sistema di elaborazione 10a comprende anche una memoria volatile, come una memoria ad accesso casuale (RAM, “Random-Access Memory”), usata per memorizzare risultati temporanei dell’elaborazione dell’unità di elaborazione 102 e/o del coprocessore 108.
Nella forma di attuazione considerata, i vari blocchi 102, 104, 106, 108 e 114 sono connessi a un sistema di bus 120 che comprende uno o più bus di comunicazioni, come un AMBA (Advanced Microcontroller Bus Architecture) o un AHB (AMBA High-performance Bus). Per esempio, molti microcontrollori basati su STM32 comprendono una matrice di bus, come una matrice di bus AHB. Specificamente, in questo caso il sistema di bus 120 comprende una pluralità di bus di comunicazione e ciascun componente può essere connesso selettivamente a uno o più di questi bus di comunicazione. Per esempio, in questo modo possono essere implementate comunicazioni parallele, per es. per implementare un accesso diretto in memoria (DMA, Direct Memory Access) alla memoria 114 tramite un primo bus, mentre comandi sono scambiati tramite un secondo bus.
Nella forma di attuazione considerata, il coprocessore crittografico 108 comprende un circuito di elaborazione crittografica 112 e un’interfaccia a registri 110a. Specificamente, nella forma di attuazione considerata, il circuito di elaborazione crittografica 112 è configurato per elaborare dati, come per crittare o decrittare dati, per mezzo di una o più chiavi crittografiche. Per contro, l’interfaccia a registri 110a è disposta per fornire i dati seguenti al circuito di elaborazione crittografica 112:
- l’una o più chiavi crittografiche; e
- dati che identificano i dati da elaborare, come direttamente i dati da elaborare o un indirizzo di una locazione di memoria (per es., nella memoria volatile 114) che contiene i dati da elaborare.
Nella forma di attuazione considerata, i blocchi precedenti sono connessi gli uni agli altri attraverso un sistema di bus 120 comprendente uno o più bus di comunicazione, come uno o più bus AHB.
Come menzionato in precedenza, in varie forme di attuazione, il coprocessore crittografico 108 comprende:
- un’interfaccia a registri 110 configurata per ricevere dati di configurazione e per fornire dati di stato per verificare/convalidare la configurazione attraverso il sistema di bus 120; e
- un processore crittografico hardware 112, configurato per effettuare una o più operazioni di elaborazione rispettive in funzione dei dati di configurazione forniti all’interfaccia a registri 110.
La Figura 2b rappresenta una seconda forma di attuazione del sistema di elaborazione 10a. Specificamente, nella forma di attuazione considerata, la memoria 104 (interna o esterna) è connessa al sistema di bus 120 tramite un’interfaccia di comunicazione 106a. Per esempio, l’interfaccia 106a può essere configurata per convertire una comunicazione di AHB del sistema di bus 120 in comunicazioni di EMIF (External Memory InterFace) della memoria 104.
Inoltre, la Figura 2b rappresenta che il coprocessore crittografico 108 può usare l’interfaccia 106a per accedere alla memoria 104. Specificamente, nella forma di attuazione considerata, l’interfaccia a registri 110a può essere usata per configurare una o più regioni di memoria nella memoria 104 (per es., specificando rispettivi indirizzi di inizio e di fine) che possono contenere dati crittati. Inoltre, quando è effettuata una richiesta di lettura alla memoria 104 attraverso il coprocessore 108, il coprocessore 108 può analizzare la comunicazione. Per esempio, tali richieste di lettura possono essere memorizzate attraverso il sistema di bus 120 nell’interfaccia a registri 110 del coprocessore 108. Specificamente, quando il coprocessore 108 rileva un accesso di lettura a un indirizzo di memoria che non appartiene a una di queste regioni di memoria (per es., confrontando il rispettivo indirizzo con gli indirizzi di inizio e di fine delle regioni di memoria), il coprocessore 108 può inoltrare la richiesta di lettura tramite l’interfaccia di comunicazione 106a alla memoria 104 e può restituire i dati letti dalla memoria 104 al sistema di bus 120. Per contro, quando il coprocessore 108 rileva un accesso di lettura a un indirizzo di memoria che appartiene a una di queste regioni di memoria (per es., confrontando il rispettivo indirizzo con gli indirizzi di inizio e di fine delle regioni di memoria), il coprocessore 108 può inoltrare la richiesta di lettura attraverso l’interfaccia 106a alla memoria 104. Tuttavia, i dati (crittati) letti dalla memoria 104 non sono trasmessi direttamente al sistema di bus 120, ma il circuito di elaborazione crittografica 112 è usato per decrittare i dati letti dalla memoria 104 e i dati decrittati sono restituiti al sistema di bus 120. Di conseguenza, una volta che sono state specificate l’una o più regioni di memoria, la decrittazione dei dati è trasparente all’unità di elaborazione 102.
Similmente, il coprocessore 108 può analizzare la comunicazione scambiata e tramite l’interfaccia di comunicazione 106a tra il sistema di bus 120 e la memoria 104/104b al fine di rilevare un’operazione di scrittura in una data locazione di memoria che appartiene a una data area di memoria della memoria 104/104b. In questo caso, il coprocessore 108 può crittare i dati ricevuti tramite l’operazione di scrittura con una chiave crittografica e può memorizzare i dati crittati tramite l’interfaccia di comunicazione 106a nella data locazione di memoria.
Per esempio, una tale soluzione è descritta nella domanda di brevetto italiana 102018000003373, che è incorporata qui tramite citazione.
La Figura 2c rappresenta che le precedenti forme di attuazione possono anche essere combinate. Specificamente, nella forma di attuazione considerata, in linea con la Figura 2a, una prima memoria 104a (per es., una memoria interna) è connessa direttamente al sistema di bus 120. Inoltre, in linea con la Figura 2b, una seconda memoria 104b (per es., una memoria esterna) è connessa tramite un coprocessore 108 e un’interfaccia 106a al sistema di bus 120. Di conseguenza, in questo modo, la memoria 104b (o almeno sue date aree di memoria) può contenere dati crittati e l’interfaccia 106a può essere usata insieme al processore crittografico 108 per decrittare questi dati.
Nella forma di attuazione rappresentata nelle Figure 2a e 2b, la memoria 104 può così comprendere un firmware di boot/bootloader BL e un firmware applicativo FW. Per esempio, questo può essere utile quando è usata una singola memoria non volatile 104 (per es. integrata). Per contro, nella forma di attuazione rappresentata nella Figura 2c, il sistema di elaborazione 10a può essere disposto per memorizzare il firmware di boot/bootloader BL nella memoria 104a (per es., interna) e il firmware applicativo FW nella memoria 104b (per es., esterna).
Specificamente, anche in questo caso, il firmware di boot BL può essere usato per fornire l’una o più chiavi crittografiche al coprocessore crittografico 108, cioè il bootloader BL comprende istruzioni software per memorizzare una o più chiavi crittografiche nel registro 110. Per contro, una volta che il firmware applicativo FW è stato avviato, questo firmware FW può usare il coprocessore crittografico 108 per elaborare dati, cioè il firmware FW comprende una o più istruzioni software per richiedere l’esecuzione di una o più operazioni di elaborazione crittografica fornite dal coprocessore 108, che usa a sua volta l’una o più chiavi crittografiche già memorizzate nel registro 110. Di conseguenza, in questo modo il firmware applicativo FW non contiene di per sé stesso l’una o più chiavi crittografiche. Per esempio, questo ha il vantaggio che il firmware applicativo FW può essere aggiornato senza dovere includere l’una o più chiavi crittografiche all’interno del firmware applicativo FW.
Inoltre, nella forma di attuazione rappresentata nelle Figure 2b e 2c, anche il firmware applicativo stesso può essere memorizzato in forma crittata. Specificamente, configurando l’area di memoria (nella memoria 104 o nella memoria 104b) disposta per memorizzare il firmware applicativo FW nell’interfaccia a registri 110, il coprocessore 108 decritterà automaticamente il firmware applicativo FW mentre legge il firmware FW dalla memoria 104 (Figura 2b) o 104b (Figura 2c) tramite l’interfaccia 106a. Di conseguenza, in questo modo, il firmware applicativo FW può essere mantenuto segreto e un firmware applicativo certificato (crittato con la chiave crittografica corretta) può essere eseguito dall’unità di elaborazione 102. Per esempio, questo può essere particolarmente utile per il dispositivo rappresentato nella Figura 2c, in cui la memoria 104b può essere esterna al circuito integrato che comprende gli altri componenti (102, 104a, 106, 108, 114, 120) del sistema di elaborazione 10a, nella misura in cui può essere piuttosto facile intercettare/modificare la comunicazione tra l’interfaccia 106a e una memoria esterna 104b.
Di conseguenza, l’interfaccia 106a è configurata per interfacciare la memoria 104/104b con il sistema di bus 120. Tuttavia, nelle forme di attuazione considerate, il coprocessore 108 funziona come uno sniffer del traffico che passa alla memoria 104/104b, intercettando possibilmente la comunicazione al fine di decrittare i dati letti dalla memoria 104/104b. Così, in generale, il coprocessore 108 può essere usato anche per interfacciare altre risorse e non soltanto memorie.
La Figura 3a rappresenta una possibile forma di attuazione dell’interfaccia a registri 110 del coprocessore 108.
Nella forma di attuazione considerata, l’interfaccia a registri 110 comprende un banco di registri 1106 che comprende una pluralità di registri REG0..REGn. Per esempio, ciascun registro REG0..REGn può comprendere un dato numero di bit, come 16, 32 o 64 bit.
Inoltre, nella forma di attuazione considerata, l’interfaccia a registri 110 comprende un’interfaccia di bus 1102 configurata per gestire lo scambio di dati tra il sistema di bus 120 e il banco di registri 1106.
Per esempio, come rappresentato schematicamente nella Figura 3a, l’interfaccia di bus 1102, come un’interfaccia di AHB, può comprendere un primo circuito 1108 configurato per monitorare le richieste di scrittura inviate attraverso il sistema di bus 120 all’interfaccia 110. In risposta a una richiesta di scrittura, il circuito 1108 può fornire un segnale di indirizzo ADR a un decodificatore di indirizzo 1104 e un segnale di dati W_DATA al banco di registri 1106.
Per esempio, il decodificatore di indirizzo 1104 può essere configurato per generare una pluralità di segnali di selezione di registro WR_REG0..WR_REGn, uno per ciascuno dei registri REG0..REGn, in funzione del segnale di indirizzo ADR. Per esempio, in questo modo, un rispettivo indirizzo può essere associato a ciascuno dei registri REG0..REGn e il decodificatore di indirizzo 1104 può impostare il rispettivo segnale di selezione di registro WR_REG0..WR_REGn a un dato livello logico (di solito, alto), quando il valore del segnale di indirizzo ADR corrisponde all’indirizzo associato al rispettivo registro REG0..REGn.
Di conseguenza, quando il segnale di selezione di registro WR_REG0..WR_REGn associato a un dato registro REG0..REGn è impostato al dato livello logico (per es., alto), il rispettivo registro può memorizzare i dati forniti tramite il segnale W_DATA. Di conseguenza, di solito i registri REG0..REGn hanno lo stesso numero di bit (o eventualmente meno) del segnale di dati W_DATA.
In varie forme di attuazione, l’interfaccia 110 può anche supportare richieste di lettura. Specificamente, in risposta a una richiesta di lettura, il circuito 1108 può fornire di nuovo il segnale di indirizzo ADR a un decodificatore di indirizzo 1104, che può così impostare di nuovo uno dei segnali di selezione di registro WR_REG0..WR_REGn al dato valore logico quando l’indirizzo corrisponde all’indirizzo associato a un rispettivo registro REG0..REGn. Di conseguenza, nella forma di attuazione considerata, un segnale R_DATA è impostato al contenuto del registro REG0..REGn per il quale il segnale di selezione di registro WR_REG0..WR_REGn ha il dato valore logico. Per esempio, a questo scopo può essere usato un multiplexer. Gli esperti nella tecnica apprezzeranno che di solito è usato un segnale WR aggiuntivo per segnalare se deve essere effettuata un’operazione di lettura o di scrittura. In alternativa, possono essere usati segnali di selezione di registro separati per le operazioni di lettura e di scrittura, oppure ciascun segnale di selezione di registro WR_REG0..WR_REGn può comprendere due bit.
Nella forma di attuazione considerata, il primo circuito 1108 può così essere configurato per monitorare le richieste di lettura inviate all’interfaccia 110, generare attraverso il decodificatore di indirizzo 1104 uno dei segnali di selezione di registro WR_REG0..WR_REGn e fornire i dati R_DATA selezionati attraverso i segnali di selezione di registro WR_REG0..WR_REGn al bus 120.
Generalmente, le operazioni di lettura sono puramente opzionali e l’interfaccia 110 potrebbe anche supportare soltanto operazioni di scrittura oppure soltanto un sottoinsieme dei registri REG0..REGn può supportare un’operazione di lettura. In effetti, da un punto di vista della sicurezza, un accesso di lettura a dati di configurazione relativi alla sicurezza memorizzati nei registri REG0..REGn dovrebbe essere inibito.
La Figura 3b rappresenta una forma di attuazione modificata, in cui il banco di registri 1106 riceve in ingresso un segnale di blocco LOCK.
Specificamente, in varie forme di attuazione, i registri REG0..REGn comprendono almeno due gruppi di registri:
- un primo gruppo di registri configurato per memorizzare informazioni di configurazione di sicurezza, comprendenti una o più chiavi crittografiche; e
- un secondo gruppo di registri configurato per memorizzare dati che identificano i dati da elaborare e (nel caso in cui siano supportate operazioni plurali dal processore crittografico 112) l’operazione da eseguire.
Di conseguenza, il segnale di blocco LOCK può essere usato per segnalare all’interfaccia 110 se accessi di scrittura e/o di lettura sono permessi al primo gruppo di registri che ha memorizzate le informazioni di configurazione di sicurezza, in particolare le chiavi crittografiche.
Per esempio, nella forma di attuazione considerata, il segnale di blocco LOCK comprende un singolo bit di blocco globale, che disabilita gli accessi di scrittura (e, se supportata, anche gli accessi di lettura) a tutti i registri del primo gruppo di registri. Tuttavia, in generale, il segnale di blocco LOCK può anche comprendere una pluralità di bit per:
- disabilitare separatamente accessi di scrittura e di lettura, rispettivamente, per es. usando due bit separati; e/o
- disabilitare separatamente un accesso a sottoinsiemi dei registri del primo gruppo di registri.
Per esempio, in varie forme di attuazione, ciascun registro del primo gruppo di registri può avere associato:
- un singolo bit per disabilitare accessi sia di scrittura sia di lettura al rispettivo registro; o
- due rispettivi bit per disabilitare rispettivamente accessi di scrittura e di lettura al rispettivo registro.
Di conseguenza, in varie forme di attuazione, l’interfaccia 110, per es. il banco di registri 1106, è configurata per inibire selettivamente operazioni di lettura e/o di scrittura in funzione del segnale LOCK, limitando con ciò l’accesso ai registri configurati per memorizzare informazioni di configurazione di sicurezza.
In base alla specifica implementazione, il segnale di blocco LOCK può essere impostato in vari modi, come:
- usando uno o più bit in uno o più registri REG0..REGn del banco di registri 1106, per es. assegnando un rispettivo registro e un rispettivo indirizzo ai segnali di blocco LOCK;
- includendo l’uno o più segnali di blocco nelle informazioni di intestazione (“header”) delle comunicazioni scambiate attraverso il sistema di bus 120.
Come descritto con riferimento alle Figure da 2a a 2c, il sistema di elaborazione 10a, in particolare l’unità di elaborazione 102, può essere configurato per supportare due firmware:
- un firmware di bootloader BL eseguito una volta che il sistema di elaborazione 10 è acceso; e
- un firmware applicativo FW eseguito una volta che l’esecuzione del firmware di bootloader BL è terminata.
Per esempio, al fine di eseguire il firmware applicativo, l’ultima istruzione del firmware di bootloader BL può essere un’istruzione di salto a un dato indirizzo di memoria, che corrisponde al primo indirizzo del firmware applicativo FW.
Come descritto in precedenza, in questo caso, il bootloader BL può comprendere istruzioni software per memorizzare una o più chiavi crittografiche nell’interfaccia 110. Inoltre, quando sono usate le architetture rappresentate nelle Figure 2b e 2c, il bootloader BL può comprendere istruzioni software per configurare attraverso l’interfaccia 110 gli intervalli di memoria che comprendono eventualmente dati crittati, per es. le aree di memoria per memorizzare un firmware applicativo crittato.
Per esempio, la Figura 4 rappresenta una forma di attuazione dell’organizzazione dei registri REG0..REGn del banco di registri 1106.
Specificamente, nella forma di attuazione considerata, il banco di registri 1106 comprende una pluralità di registri configurati per memorizzare almeno una chiave crittografica KEY.
Specificamente, le chiavi crittografiche hanno di solito 128 bit, o loro multipli, come 256, 512 o 1024 bit. Per contro, tipiche unità di elaborazione 102 sono basate su comunicazioni a 32 o 64 bit. Di conseguenza, ciascuna chiave crittografica può essere memorizzata scrivendo sequenzialmente i bit della chiave crittografica in registri plurali. Preferibilmente, i registri hanno indirizzi sequenziali.
Per esempio, nella forma di attuazione considerata il banco di registri 1106 comprende almeno un primo insieme di registri KEY0_1..KEY0_m per memorizzare una prima chiave crittografica KEY0 e un secondo insieme di registri KEY1_1..KEY1_m per memorizzare una seconda chiave crittografica KEY1. Generalmente, il banco di registri 1106 può anche comprendere ulteriori registri per memorizzare ulteriori chiavi crittografiche.
Generalmente, le chiavi crittografiche possono anche avere associati ulteriori dati di configurazione di sicurezza, come dati di configurazione che specificano le operazioni, che possono essere effettuate con una data chiave crittografica. Per esempio, nella forma di attuazione considerata, questi dati di configurazione sono memorizzati in uno o più registri KEY_CFG. Generalmente, questi dati di configurazione possono anche essere memorizzati insieme alla chiave crittografica.
Quando sono usate le architetture rappresentate nelle Figure 2b o 2c, il banco di registri 1106 può anche comprendere uno o più registri per specificare le aree di memoria MEMA, che dovrebbero essere decrittate automaticamente quando è eseguita un’operazione di lettura in una locazione di memoria che appartiene alla rispettiva area di memoria MEMA. Per esempio, nella forma di attuazione considerata, il banco di registri 1106 comprende uno o più registri START_1 per specificare un primo indirizzo di inizio della memoria e comprende uno o più registri END_1 per specificare un primo indirizzo di fine della memoria, che così definiscono una prima area di memoria MEMA_1. Generalmente, il banco di registri può anche comprendere ulteriori registri per specificare ulteriori aree di memoria e uno o più dei dati che identificano una data area di memoria MEMA possono essere cablati in hardware (“hardwired”). In varie forme di attuazione, ciascuna regione di memoria MEMA può anche avere associato un registro per memorizzare l’indice della chiave crittografica KEY0, KEY1, ecc. da usare per la decrittazione della rispettiva area di memoria MEMA.
Nella forma di attuazione considerata, il banco di registri 1106 comprende inoltre uno o più registri per memorizzare dati che identificano i dati da elaborare.
Per esempio, in varie forme di attuazione, il banco di registri 1106 comprende una pluralità di registri DAT_1..DAT_k per memorizzare direttamente i dati Data che devono essere elaborati dal circuito crittografico 112.
In alternativa o in aggiunta, il banco di registri 1106 può comprendere uno o più registri DADR_1..DADR_l per memorizzare un indirizzo (di inizio) della memoria, per es. nella memoria 114, che contiene i dati da elaborare. Generalmente, il banco di registri 1106 può anche comprendere un registro per memorizzare l’ammontare di dati da elaborare.
Nella forma di attuazione considerata, i vari dati memorizzati nel banco di registri 1106 (cioè, i registri delle chiavi, i registri dei dati e/o i registri degli indirizzi dei dati) sono forniti al circuito di elaborazione crittografica 112.
Specificamente, nella forma di attuazione considerata, il circuito di elaborazione crittografica 112 supporta una pluralità di operazioni di elaborazione, come una crittazione e una decrittazione di dati. Generalmente, il circuito di elaborazione crittografica 112 può anche supportare differenti modalità, per es. differenti modalità di concatenamento, come un ECB (Electronic Codebook), un CBC (Cipher Block Chaining), un CTR (Counter), ecc. Secondo la forma di attuazione, il banco di registri 1106 comprende almeno un registro di operazione OP per specificare l’operazione da eseguire ed eventualmente dati di configurazione aggiuntivi associati all’operazione da eseguire, come l’indice della chiave crittografica da usare.
Di conseguenza, nella forma di attuazione considerata, i registri delle chiavi KEY0_1..KEY0_m, KEY1_1..KEY1_m, ecc., il registro di configurazione della chiave KEY_CFG opzionale e i registri di area di memoria MEMA opzionali corrispondono al primo gruppo di registri SET1 configurati per memorizzare informazioni di configurazione di sicurezza. Per contro, il registro di operazione OP e i registri dei dati DAT_1..DAT_k e/o i registri degli indirizzi dei dati DADR_1..DADR_l corrispondono al secondo gruppo di registri SET2 configurati per memorizzare dati che identificano i dati da elaborare e l’operazione di elaborazione da eseguire.
Di conseguenza, nella forma di attuazione considerata, il firmware di bootloader BL può essere usato per memorizzare una o più chiavi crittografiche nei registri delle chiavi KEY0_1..KEY0_m, KEY1_1..KEY1_m, ecc. Inoltre, il firmware di bootloader BL può impostare il segnale di blocco LOCK (si veda la Figura 3b) al fine di inibire un accesso all’una o più chiavi crittografiche nei registri delle chiavi KEY0_1..KEY0_m, KEY1_1..KEY1_m, ecc. Generalmente, non tutti i registri delle chiavi KEY0_1..KEY0_m, KEY1_1..KEY1_m, ecc. devono essere “bloccati”, ma dovrebbero essere configurati per inibire accessi di lettura e preferibilmente anche di scrittura soltanto quei registri che sono stati programmati dal bootloader BL.
Di conseguenza, in varie forme di attuazione, il firmware applicativo FW può eseguire operazioni crittografiche:
a) fornendo, attraverso i registri di dati DAT_1..DAT_k o i registri di indirizzo DADR_1..DADR_l, dati al circuito di elaborazione crittografica 112, e
b) richiedendo tramite il registro di operazione OP l’esecuzione di una data operazione di elaborazione, come una crittazione o una decrittazione di dati, specificando possibilmente l’indice di una chiave crittografica nel registro delle chiavi KEY0_1..KEY0_m, KEY1_1..KEY1_m, ecc.
Per contro, nelle architetture rappresentate nelle Figure 2b e 2c, il firmware di bootloader BL può anche configurare i registri di area di memoria al fine di segnalare che il firmware applicativo FW è memorizzato in forma crittata in una data area di memoria. Così, quando è letto il firmware applicativo FW attraverso il coprocessore 108, il circuito di elaborazione crittografica 112 determinerà che le rispettive richieste di lettura accedono a un’area di memoria che ha memorizzati dati crittati.
Per esempio, l’unità di elaborazione 102 può fornire l’indirizzo di un’operazione di lettura al circuito di elaborazione crittografica 112 memorizzando l’indirizzo nei registri di indirizzi DADR_1..DADR_l dell’interfaccia 110. Così, il circuito di elaborazione 112 può analizzare l’indirizzo memorizzato nei registri di indirizzi DADR_1..DADR_l e può decidere se l’indirizzo appartiene a un’area di memoria specificata dagli indirizzi di area di memoria MEMA.
Specificamente, quando l’indirizzo non appartiene a una delle aree di memoria, il circuito di elaborazione crittografica 112 può inoltrare la richiesta di lettura all’interfaccia 106a, leggendo con ciò i rispettivi dati dalla memoria 104/104b. Inoltre, i dati letti dalla memoria 104/104b sono forniti all’unità di elaborazione 102 attraverso il sistema di bus 120.
Per contro, quando l’indirizzo appartiene a una delle aree di memoria, il circuito di elaborazione crittografica 112 può inoltrare di nuovo la richiesta di lettura all’interfaccia 106a, leggendo con ciò i rispettivi dati dalla memoria 104/104b. Tuttavia, in questo caso, il circuito di elaborazione crittografica 112 decritta i dati letti dalla memoria 104/104b e fornisce i dati decrittati all’unità di elaborazione 102 attraverso il sistema di bus 120.
Generalmente, l’uso dei registri di area di memoria MEMA è puramente opzionale, perché tutti i dati restituiti a richieste di lettura in indirizzi memorizzati nei registri di indirizzi DADR_1..DADR_l possono essere decrittati.
Tuttavia, nelle forme di attuazione precedenti, quando si verificano alcuni malfunzionamenti, per es. i dati crittati non possono essere decrittati, è quasi impossibile verificare l’origine del malfunzionamento. Per esempio, a causa del fatto che il firmware applicativo FW non è autorizzato ad accedere né al firmware di bootloader BL né al primo insieme di registri SET1 (perché un accesso di lettura al primo insieme di registri SET1 non è possibile o è inibito attraverso il segnale di blocco LOCK), il firmware applicativo FW non è in grado di verificare se il firmware di bootloader BL è errato/corrotto o se è stata usata la configurazione di sicurezza errata (come programmato per l’insieme di registri SET1), per es. se sono state programmate le chiavi crittografiche errate. Inoltre, nelle architetture rappresentate nelle Figure 2b e 2c, il firmware applicativo FW può perfino non essere affatto decrittato, per es. perché sono state programmate le chiavi crittografiche errate o perché manca qualche configurazione, per es. la configurazione dell’area (delle aree) di memoria MEMA.
La Figura 5a rappresenta una forma di attuazione dell’interfaccia 110 che permette di verificare se la configurazione di sicurezza memorizzata nel primo insieme di registri SET1 è corretta.
Specificamente, nella forma di attuazione considerata, il circuito di interfaccia di bus 1102 fornisce di nuovo i dati W_DATA da scrivere nel banco di registri 1106 e segnali di selezione di registro WR_REG0..WR_REGn per selezionare un rispettivo registro REG0..REGn nel banco di registri 1106.
La Figura 5a rappresenta anche una forma di attuazione per generare il segnale di blocco LOCK. Specificamente, nella forma di attuazione considerata, l’interfaccia di bus 1102 è configurata per fornire un segnale di configurazione di scrittura e/o di lettura WR_CFG. Per esempio, in varie forme di attuazione il segnale WR_CFG comprende due bit SEL_CFG(0) e SEL_CFG(1) per impostare separatamente la configurazione di scrittura e di lettura. Per esempio, il segnale WR_CFG può essere generato in funzione dei dati di intestazione delle comunicazioni sul bus 120 o associando un dato indirizzo al segnale di configurazione di scrittura e/o di lettura WR_CFG.
Nella forma di attuazione considerata, il segnale WR_CFG è fornito a un circuito di memorizzazione 1110, che è configurato per generare il segnale di blocco LOCK in funzione del segnale WR_CFG.
Per esempio, nella forma di attuazione considerata, l’interfaccia di bus 1102 può soltanto scrivere dati nel banco di registri 1106, ma l’interfaccia di bus 1102 non è in grado di leggere dati dal banco di registri 1106. In questo caso, un singolo bit del segnale di blocco LOCK è sufficiente al fine di bloccare l’accesso in scrittura ai registri del primo insieme di registri SET1.
Specificamente, nella forma di attuazione considerata, i segnali WR_CFG e LOCK hanno lo stesso numero di bit. Inoltre, nella forma di attuazione considerata, il circuito di memorizzazione 1110 implementa sostanzialmente un elemento di memorizzazione a scrittura unica (“writeonce”).
Specificamente, ciascun bit del segnale WR_CFG può essere impostato a un primo livello logico (di solito, basso) o a un secondo livello logico (di solito, alto). Di conseguenza, una volta che un dato bit del segnale WR_CFG è stato impostato al secondo livello logico, il rispettivo bit del segnale di blocco LOCK è impostato e rimane impostato, anche quando il valore del bit del segnale WR_CFG cambia di nuovo al primo livello logico. Per esempio, ipotizzando che un bit sia impostato quando il valore del bit è alto, ciascun bit del segnale di blocco LOCK e un bit corrispondente del segnale WR_CFG possono essere forniti a una porta logica OR 1112. Inoltre, l’uscita della porta logica (delle porte logiche) OR 1112 è fornita a un registro 1114, che memorizza il valore fornito dalla porta logica (dalle porte logiche) OR 1112. Di conseguenza, una volta impostato un dato bit del registro 1114 (corrispondente a un rispettivo bit del segnale di blocco LOCK), il valore del bit è mantenuto indipendentemente dal valore del corrispondente bit del segnale WR_CFG.
Nella forma di attuazione considerata, è stato aggiunto un ulteriore circuito 1116. Specificamente, il circuito 1116 è configurato per monitorare la comunicazione tra l’interfaccia di bus 1102 e il banco di registri 1106 e per calcolare un segnale di controllo in funzione dei dati W_DATA forniti al banco di registri 1106. Specificamente, nella forma di attuazione considerata, il circuito 1116 monitora a questo scopo anche i segnali di selezione di registro WR_REG0..WR_REGn al fine di determinare quando i dati W_DATA sono validi.
Per esempio, in varie forme di attuazione, il circuito 1116 è configurato per calcolare consecutivamente un valore di CRC in funzione dei dati W_DATA trasmessi al banco di registri 1106. Generalmente, il circuito 1116 può essere configurato per calcolare il CRC non in funzione di tutti i dati W_DATA ma soltanto in funzione dei dati W_Data memorizzati nei registri che appartengono al primo insieme di registri SET1 o in un sottoinsieme dei registri che appartengono all’insieme di registri SET1.
Di conseguenza, nella forma di attuazione considerata, il bootloader BL può memorizzare sequenzialmente i bit di una o più chiavi crittografiche nei registri delle chiavi KEY0_1..KEY0_m, KEY1_1..KEY1_m, ecc., impostare possibilmente gli ulteriori dati di configurazione di sicurezza KEY_CFG opzionali e/o i dati di configurazione di area di memoria MEMA, e impostare il segnale di blocco LOCK, per es. impostando il segnale WR_CFG. Mentre sono scritti dati nel banco di registri 1106, in particolare i registri per memorizzare il primo insieme di dati di configurazione SET1, il circuito 1116 calcolerà così il valore di CRC almeno in funzione dei bit delle chiavi crittografiche. Come menzionato in precedenza, il valore CRC può anche essere calcolato per i dati di configurazione KEY_CFG e/o MEMA. Generalmente, non è richiesto che il valore CRC sia calcolato sequenzialmente per tutti i registri dell’insieme SET1, ma il valore CRC potrebbe anche essere calcolato soltanto per sottoinsiemi dei registri dell’insieme SET1, per es. calcolando il valore CRC per i registri da KEY0_1 a KEY0_m e calcolando un nuovo valore CRC per i registri da KEY1_1 a KEY1_m.
Di conseguenza, il firmware di bootloader e/o il firmware applicativo FW possono accedere all’interfaccia di bus 1102 al fine di leggere il valore CRC e confrontare il valore CRC con un valore atteso, al fine di determinare se è stata fornita una configurazione di sicurezza corretta al banco di registri 1106. In aggiunta o in alternativa, il valore CRC può anche essere letto attraverso un’interfaccia di debug del sistema di elaborazione 10a.
Per esempio, in varie forme di attuazione, il valore di CRC ha 8 bit. Tuttavia, possono essere effettuate anche sequenze di bit più lunghe e calcoli differenti al fine di calcolare un valore dei bit delle informazioni di configurazione di sicurezza, come una funzione di hashing. Tuttavia, gli inventori hanno osservato che il numero dei bit del valore CRC non dovrebbe essere troppo piccolo da rendere insignificante il contenuto del segnale CRC. Similmente, il numero dei bit del valore CRC non dovrebbe essere troppo alto, fornendo possibilmente con ciò informazioni rispetto al valore delle chiavi crittografiche. Così, un segnale CRC che ha tra 8 e 128 bit, preferibilmente tra 8 e 32 bit, può essere adatto per la maggior parte delle applicazioni crittografiche.
In varie forme di attuazione, il circuito 1116 può anche limitare l’accesso al segnale CRC attraverso l’interfaccia di bus 1102, limitando con ciò un readback del valore CRC.
Per esempio, in varie forme di attuazione, il circuito 1116 può disabilitare la lettura del segnale CRC quando il segnale di blocco LOCK non è stato impostato. In effetti, come menzionato in precedenza, il bootloader BL dovrebbe impostare il segnale di blocco LOCK una volta che la configurazione di sicurezza è stata fornita all’interfaccia a registri 112.
In aggiunta o in alternativa, il circuito 1116 può monitorare i segnali di selezione di registro WR_REG0..WR_REGn, in particolare i segnali associati ai registri dell’insieme SET1, al fine di determinare se i bit delle chiavi crittografiche sono stati scritti nella sequenza corretta. In effetti, come menzionato in precedenza, di solito le chiavi crittografiche hanno più bit dei registri nel banco di registri ed è richiesta una pluralità di registri delle chiavi al fine di memorizzare ciascuna chiave crittografica. Similmente, il banco di registri può essere configurato per fornire una pluralità di chiavi crittografiche (si veda la Figura 4). Di conseguenza, il circuito 1116 può determinare se i registri delle chiavi KEY0_1..KEY0_m, KEY1_1..KEY1_m, ecc. sono stati scritti nella sequenza corretta. Per esempio, il circuito 1116 può disabilitare la lettura del segnale CRC quando i registri delle chiavi sono stati scritti con un ordine scorretto, per es. perché il registro KEY0_m è stato scritto prima del registro KEY0_1 e/o il registro KEY1_1 è stato scritto prima del registro KEY0_1.
Di conseguenza, nella forma di attuazione considerata, il valore CRC può essere letto soltanto quando le chiavi crittografiche sono state configurate attraverso una data sequenza di accessi di riferimento all’interfaccia 110. Per contro, sequenze di scrittura di chiavi crittografiche differenti dalla sequenza attesa mantengono segreto il valore CRC. Per esempio, in questo caso il circuito 1116 può fornire un valore di default, per es. che ha tutti i bit impostati a “0”.
Inoltre, usando un valore CRC con un numero limitato di bit, il valore CRC non può essere usato per recuperare le chiavi crittografiche originali, garantendo con ciò uno standard di sicurezza elevato.
Preferibilmente, l’interfaccia 110 è configurata per disabilitare un accesso di scrittura (e, se supportato, anche un accesso di lettura) ai registri in funzione di un segnale di blocco LOCK, per es. che ha un singolo bit, che quando impostato a “1” disabilita ulteriori accessi di scrittura ai registri del primo insieme di registri SET1.
Di conseguenza, operazioni di scrittura accidentali da parte del firmware applicativo FW nei registri delle chiavi possono essere disabilitate.
La Figura 5b rappresenta una forma di attuazione, in cui il sistema di elaborazione 10a comprende un circuito di rilevazione delle manomissioni (“tamper detection”) configurato per generare un segnale di manomissione TAMP.
In questo caso, il circuito 1116 e/o il banco di registri 1106 possono essere configurati per disabilitare l’accesso ai dati memorizzati e/o resettare i dati, per es. i registri del banco di registri 1106 possono essere resettati e il valore CRC può essere resettato in risposta al segnale TAMP.
La Figura 6 rappresenta una forma di attuazione del circuito 1116.
Nella forma di attuazione considerata, il circuito 1116 comprende un circuito di calcolo del controllo di ridondanza ciclico (CRC, “Cyclic Redundancy Check”) da 1120 a 1124 e un circuito di mascheratura o di occultamento 1126.
Specificamente, il circuito di calcolo del CRC è configurato per calcolare un segnale di CRC interno CRC_INT in funzione del segnale di dati W_DATA e del valore precedente del segnale di CRC interno CRC_INT. Per esempio, nella forma di attuazione considerata, il circuito di calcolo del CRC comprende a questo scopo:
- un insieme di porte logiche XOR 1120 che ricevono in ingresso il segnale di dati W_DATA e il segnale di CRC interno CRC_INT;
- un circuito logico combinatorio 1122 configurato per calcolare un valore di CRC in funzione del segnale all’uscita delle porte logiche XOR 1120; e
- un registro 1124 configurato per fornire il segnale di CRC interno CRC_INT memorizzando il valore di CRC calcolato dal circuito 1122 in risposta a un segnale di clock (non rappresentato).
Di conseguenza, nella forma di attuazione considerata, il valore di CRC interno CRC_INT è calcolato in funzione dei dati W_DATA e del valore del segnale CRC_INT al ciclo di clock precedente.
In varie forme di attuazione, le porte logiche XOR 1120 possono ricevere (in aggiunta ai segnali W_DATA e CRC_INT) anche un valore di riferimento. Per esempio, nella forma di attuazione rappresentata nella Figura 6, il circuito 1116 comprende un multiplexer che riceve in ingresso una pluralità di segnali di riferimento REF0..REFn corrispondenti al numero di segnali di selezione di registro WR_REG0..WR_REGn monitorati dal circuito 1116.
Inoltre, nella forma di attuazione considerata, il circuito 1116 comprende un multiplexer per selezionare uno di questi segnali di riferimento REF0..REFn in funzione dei segnali di selezione di registro WR_REG0..WR_REGn, per es. il segnale di riferimento REF0 quando il segnale di selezione di registro WR_REG0 è impostato alto, ecc.
In generale, i segnali di riferimento REF0..REFn possono essere hardwired o memorizzati in un registro programmabile dall’unità di elaborazione 102.
Per esempio, i segnali di riferimento REF0..REFn possono essere utili quando il segnale di dati W_DATA e il valore di CRC CRC_INT hanno un numero differente di bit. Per esempio, come menzionato in precedenza, il segnale di dati W_DATA può avere 32 bit, mentre il valore di CRC CRC_INT può avere soltanto 8 bit. In questo modo, il segnale di riferimento selezionato può essere usato per riempire almeno in parte i bit mancanti del segnale di dati W_DATA o del valore di CRC CRC_INT. Per esempio, in varie forme di attuazione, sono usate 32 porte logiche XOR 1120, che possono ricevere in ingresso:
- i 32 bit del segnale di dati W_DATA(31:0); e
- una sequenza di 32 bit composta dal segnale di riferimento REFX selezionato e dal valore di CRC CRC_INT, per es.:
REFX(7:0) & CRC_INT(7:0) & REFX(7:0) & CRC_INT(7:0)
per un segnale di riferimento che ha 8 bit.
Di conseguenza, in questo caso il circuito logico combinatorio 1122 può combinare i segnali all’uscita delle porte logiche XOR 1120 (che hanno, per es., 32 bit) e può determinare un segnale che ha il numero di bit del valore di CRC CRC_INT. Per esempio, in varie forme di attuazione, il circuito logico combinatorio 1122 calcola un valore di CRC di 8 bit, in linea con il protocollo ATM (Asynchronous Transfer Mode).
Il circuito di mascheratura o di occultamento 1126 è configurato per impostare selettivamente il segnale CRC al segnale interno CRC_INT.
Di conseguenza, nella forma di attuazione considerata, il circuito di calcolo del CRC che comprende i blocchi 1118, 1120, 1122 e 1124 fornisce un valore di CRC interno calcolato in funzione del segnale di dati W_DATA. Tuttavia, questo valore non è fornito direttamente all’interfaccia di bus, ma un circuito di mascheratura o di occultamento è configurato per inoltrare selettivamente il segnale CRC_INT all’interfaccia di bus o per mascherare il segnale CRC_INT, per es. fornendo un valore di default.
Specificamente, nella forma di attuazione considerata, il circuito 1126 è configurato per monitorare i segnali di selezione di registro WR_REG0..WR_REGn, in particolare i segnali di selezione di registro associati ai registri del primo insieme di registri SET1 al fine di determinare se i dati di configurazione di sicurezza sono stati scritti nella sequenza corretta nel banco di registri 1106.
Per esempio, la Figura 7 rappresenta una forma di attuazione del circuito di mascheratura 1126.
Nella forma di attuazione considerata, il circuito 1126 comprende schematicamente uno switch SW pilotato da una macchina a stati finiti (FSM, “Finite State Machine”) 1128 al fine di impostare selettivamente il segnale CRC al segnale CRC_INT.
Nella forma di attuazione considerata, la FSM 1128 è configurata per monitorare i segnali di selezione di registro WR_REG0..WR_REGn al fine di determinare la sequenza di scrittura e confrontare la sequenza di scrittura con una sequenza di riferimento REF_SEQ. Per esempio, in varie forme di attuazione, la FSM 1128 è configurata per impostare il segnale CRC attraverso lo switch SW al segnale CRC_INT quando i registri del primo insieme SET1, in particolare il registro per memorizzare le chiavi crittografiche, sono stati scritti con la sequenza REF_SEQ richiesta.
Per esempio, in un’implementazione pratica, lo switch SW può essere implementato con un registro o un latch, che è abilitato selettivamente per memorizzare il valore CRC_INT. Di conseguenza, in questo caso, un dato indirizzo può essere associato al registro/latch che memorizza il valore CRC e il valore CRC può essere letto effettuando una richiesta di lettura all’indirizzo associato al registro/latch che memorizza il valore CRC. Per esempio, questa soluzione può essere adatta quando sono usate comunicazioni di scrittura bufferate (per es., standard del AMBA AXI-3,4). In questo caso, l’unità di elaborazione 102 può verificare il completamento della fase di configurazione effettuando periodicamente una richiesta di lettura all’indirizzo associato al registro/latch che memorizza il valore CRC.
In aggiunta o in alternativa, l’interfaccia 110 può restituire automaticamente il valore CRC quando la sequenza di segnali di selezione di registro WR_REG0..WR_REGn corrisponde alla sequenza di riferimento REF_SEQ. Per esempio, quando è usato un bus AHB 120, il valore CRC può essere restituito nei dati di intestazione del pacchetto restituito in risposta alle richieste di scrittura dell’ultimo registro nella sequenza di riferimento REF_SEQ.
Generalmente, anche la sequenza di riferimento REF_SEQ può essere hardwired o memorizzata in registri programmabili dall’unità di elaborazione 102. Per esempio, quando è usata una sequenza di riferimento REF_SEQ hardwired, il circuito 1126 può essere implementato con una macchina a stati finiti che procede attraverso un dato numero di stati in risposta ai segnali di selezione di registro WR_REG0..WR_REGn. Specificamente, se i segnali di selezione di registro WR_REG0..WR_REGn sono impostati nella sequenza corretta, la macchina a stati evolve sequenzialmente attraverso una sequenza di stati. Generalmente, il valore CRC può corrispondere in questo caso al valore CRC_INT oppure il valore CRC può essere soltanto impostato al valore CRC_INT una volta che la sequenza di dati di configurazione di sicurezza completa è stata scritta e/o che il segnale di blocco LOCK è stato impostato.
Per contro, se i segnali di selezione di registro WR_REG0..WR_REGn sono impostati nella sequenza scorretta, la macchina a stati può effettuare una transizione a uno stato di errore nel quale il segnale CRC è impostato a un valore di default. Generalmente, il valore di default può essere qualsiasi valore che è indipendente dal valore CRC_INT. Di conseguenza, il valore di default può non essere necessariamente un valore fissato, per es. che ha tutti i bit impostati a “0”, ma il valore di default può anche essere un valore casuale.
Nella forma di attuazione considerata, è così possibile verificare la correttezza della configurazione di sicurezza confrontando il valore di CRC calcolato CRC con un valore di CRC di riferimento/atteso. Per esempio, quando i valori di CRC corrispondono, si può ipotizzare che la configurazione di sicurezza del coprocessore 108 sia corretta e possibili malfunzionamenti possono essere trovati al di fuori del coprocessore 108, per es. nel firmware applicativo FW.
In varie forme di attuazione, la macchina a stati 1128 può anche monitorare il numero di configurazioni del primo insieme di registri SET1, in particolare il numero di configurazioni che usano una sequenza scorretta REF_SEQ, che può essere un indicatore per tentativi a forza bruta (“brute force”) di recuperare la sequenza corretta. Per esempio, in varie forme di attuazione, una volta che la FSM 1128 ha determinato che è stato effettuato un dato numero massimo di configurazioni scorrette, la macchina a stati 1128 può innescare un bloccaggio inibendo un accesso ulteriore al valore CRC_INT e/o bloccando il banco di registri 1106. Similmente, la macchina a stati 1128 può anche monitorare il numero di configurazioni del primo insieme di registri SET1, che usano la sequenza REF_SEQ corretta. Per esempio, in varie forme di attuazione, una volta che la FSM 1128 ha determinato che è stato effettuato un dato numero massimo di configurazioni corrette, la macchina a stati 1128 può innescare un blocco inibendo un accesso ulteriore al valore CRC_INT e/o bloccando il banco di registri 1106. Di conseguenza, nella forma di attuazione considerata, ulteriori configurazioni possono essere effettuate resettando il sistema di elaborazione 10a, resettando con ciò il valore memorizzato temporaneamente del numero di configurazioni corrette e/o scorrette. In generale, il numero di configurazioni corrette e/o scorrette può anche essere memorizzato in modo permanente.
Naturalmente, fermi restando i principi di fondo dell’invenzione, i dettagli di costruzione e le forme di attuazione possono variare, anche in modo apprezzabile, rispetto a quanto è stato descritto e illustrato qui, puramente a titolo di esempio, senza uscire con ciò dall’ambito della presente invenzione, come definito dalle rivendicazioni che seguono.
Per esempio, sebbene le forme di attuazione precedenti siano relative a dati di configurazione di sicurezza di un coprocessore crittografico 108, l’interfaccia a registri 110 descritta in precedenza può anche essere usata in combinazione con altri coprocessori in cui un primo insieme di dati di configurazione SET1 deve essere mantenuto segreto, mentre dovrebbe essere data la possibilità di verificare se i dati di configurazione corretti sono stati memorizzati nell’interfaccia a registri.
Inoltre, nelle forme di attuazione descritte in precedenza, i dati di configurazione di sicurezza sono memorizzati nel primo insieme di registri SET1 attraverso un firmware di bootloader eseguito dall’unità di elaborazione 102. Tuttavia, in generale, la configurazione del primo insieme di registri SET1 può anche essere effettuata da un modulo hardware dedicato, che legge per es. i rispettivi dati di configurazione direttamente dalla memoria non volatile 104 (Figure 2a e 2b) o 104a (Figura 2c).

Claims (11)

  1. RIVENDICAZIONI 1. Sistema di elaborazione (10) comprendente: - un sistema di bus (120); - un’unità di elaborazione (102) connessa a detto sistema di bus (120); - una memoria non volatile (104) configurata per memorizzare almeno un firmware (BL, FW) che deve essere eseguito da detta unità di elaborazione (102); - un coprocessore (108) connesso a detto sistema di bus (120), in cui detto coprocessore (108) comprende un’interfaccia a registri (110) che comprende una pluralità di registri (REG0..REGn) e un circuito di elaborazione (112) configurato per effettuare almeno un’operazione di elaborazione in funzione di dati memorizzati in detta pluralità di registri (REG0..REGn), in cui detta pluralità di registri (REG0..REGn) comprende un primo insieme di registri (SET1) configurato per memorizzare un primo insieme di informazioni di configurazione e un secondo insieme di registri (SET2) configurato per memorizzare un secondo insieme di informazioni di configurazione, in cui detta interfaccia a registri (110) comprende: - un’interfaccia di bus (1102) configurata per monitorare richieste di scrittura trasmesse attraverso detto sistema di bus (120) a detta interfaccia a registri (110), in cui dette richieste di scrittura comprendono un indirizzo target e dati da scrivere (W_DATA), in cui a ciascun registro di detta pluralità di registri (REG0..REGn) è associato un rispettivo indirizzo, in cui detta interfaccia di bus (1102) è configurata per impostare per ciascun registro di detta pluralità di registri (REG0..REGn) un rispettivo segnale di selezione di registro (WR_REG0..WR_REGn) quando l’indirizzo target di una richiesta di scrittura corrisponde all’indirizzo associato al rispettivo registro, in cui ciascun registro è configurato per memorizzare detti dati da scrivere (W_DATA) quando il rispettivo segnale di selezione di registro (WR_REG0..WR_REGn) è impostato; - un circuito di calcolo del controllo di ridondanza ciclico (da 1118 a 1124) configurato per calcolare un valore di controllo ciclico di ridondanza (CRC_INT) almeno in funzione dei dati da scrivere (W_DATA) in detto primo insieme di registri (SET1); e - un circuito di mascheratura (1126) configurato per: - monitorare detti segnali di selezione di registro (WR_REG0..WR_REGn) associati ai registri di detto primo insieme di registri (SET1) al fine di determinare la sequenza di registri in cui sono stati memorizzati i dati; - confrontare detta sequenza di registri con una sequenza di riferimento (REF_SEQ); - quando detto confronto indica che detta sequenza di registri corrisponde a detta sequenza di riferimento (REF_SEQ), fornire detto valore di controllo ciclico di ridondanza (CRC_INT) calcolato a detta interfaccia di bus (1102); e - quando detto confronto indica che detta sequenza di registri non corrisponde a detta sequenza di riferimento, fornire un valore che è indipendente da detto valore di controllo ciclico di ridondanza (CRC_INT) calcolato a detta interfaccia di bus (1102).
  2. 2. Sistema di elaborazione secondo la Rivendicazione 1, in cui detto circuito di elaborazione (112) è un circuito di elaborazione crittografica (112) configurato per effettuare operazioni crittografiche in funzione di almeno una chiave crittografica (KEY0), e in cui detto primo insieme di registri (SET1) è configurato per memorizzare detta almeno una chiave crittografica (KEY0).
  3. 3. Sistema di elaborazione secondo la Rivendicazione 2, in cui detto secondo insieme di registri comprende: - almeno un registro (DAT_1..DAT_k) per memorizzare i dati che devono essere elaborati da detto circuito di elaborazione crittografica (112); e/o - almeno un registro (DADR_1..DADR_l) per memorizzare un indirizzo che contiene i dati che devono essere elaborati da detto circuito di elaborazione crittografica (112).
  4. 4. Sistema di elaborazione secondo la Rivendicazione 3, in cui detto coprocessore (108) ha associata un’interfaccia di comunicazione (106a) per interfacciare una memoria (104; 104b) con detto sistema di bus (120), - in cui detto coprocessore (108) è configurato per analizzare la comunicazione scambiata tra detta memoria (104; 104b) e detto sistema di bus (120) attraverso detta interfaccia di comunicazione (106a) al fine di rilevare un’operazione di lettura in una data locazione di memoria che appartiene a una data area di memoria (MEMA) di detta memoria (104; 104b), e in cui detto coprocessore (108) è configurato per leggere attraverso detta interfaccia di comunicazione (106a) i dati memorizzati in detta data locazione di memoria da detta memoria (104; 104b) e per decrittare o crittare i dati letti con una chiave crittografica (KEY0, KEY1) memorizzata in detto primo insieme di registri (SET1); o - in cui detto coprocessore (108) è configurato per analizzare la comunicazione scambiata tra detta memoria (104; 104b) e detto sistema di bus (120) attraverso detta interfaccia di comunicazione (106a) al fine di rilevare un’operazione di scrittura in una data locazione di memoria che appartiene a una data area di memoria (MEMA) di detta memoria (104; 104b), e in cui detto coprocessore (108) è configurato per crittare i dati ricevuti con detta operazione di scrittura con una chiave crittografica (KEY0, KEY1) memorizzata in detto primo insieme di registri (SET1) e per memorizzare i dati crittati attraverso detta interfaccia di comunicazione (106a) in detta data locazione di memoria.
  5. 5. Sistema di elaborazione secondo la Rivendicazione 4, in cui detta memoria (104; 104b) corrisponde a detta memoria non volatile (104) o a una ulteriore memoria non volatile (104b), e detta data area di memoria (MEMA) corrisponde a un’area di memoria per memorizzare un firmware applicativo (FW) che deve essere eseguito da detta unità di elaborazione (102).
  6. 6. Sistema di elaborazione secondo una qualsiasi delle rivendicazioni precedenti da 2 a 5, in cui detta memoria non volatile (104) è disposta per memorizzare un firmware di bootloader (BL) configurato per memorizzare almeno una chiave crittografica (KEY0, KEY1) in detto primo insieme di registri (SET1).
  7. 7. Sistema di elaborazione secondo una qualsiasi delle rivendicazioni precedenti, in cui detta interfaccia a registri (110) è configurata per inibire selettivamente accessi di scrittura e/o di lettura a detto primo insieme di registri (SET1) in funzione di un segnale di blocco (LOCK).
  8. 8. Sistema di elaborazione secondo una qualsiasi delle rivendicazioni precedenti, in cui detto circuito di calcolo del controllo di ridondanza ciclico (da 1118 a 1124) comprende: - un registro o latch (1124) per memorizzare detto valore di controllo ciclico di ridondanza (CRC_INT) calcolato; - almeno una porta logica XOR (1120) configurata per generare un segnale combinando i dati da scrivere (W_DATA) in detto primo insieme di registri (SET1) e detto valore di controllo ciclico di ridondanza memorizzato in detto registro o latch (1124); e - un circuito logico combinatorio (1122) configurato per generare detto valore di controllo ciclico di ridondanza (CRC_INT) calcolato, in funzione di detto segnale generato da detta almeno una porta logica XOR (1120).
  9. 9. Sistema di elaborazione secondo la Rivendicazione 8, in cui detto circuito di calcolo del controllo di ridondanza ciclico (da 1118 a 1124) comprende un multiplexer (1118) per selezionare un segnale di riferimento (REF0..REFn) in funzione di detti segnali di selezione di registro (WR_REG0..WR_REGn), e in cui detta almeno una porta logica XOR (1120) è configurata per generare detto segnale combinando i dati da scrivere (W_DATA) in detto primo insieme di registri (SET1), detto valore di controllo ciclico di ridondanza memorizzato in detto registro o latch (1124) e detto segnale di riferimento selezionato.
  10. 10. Circuito integrato, come un microcontrollore, comprendente un sistema di elaborazione (10a) secondo una qualsiasi delle Rivendicazioni da 1 a 9.
  11. 11. Procedimento per fare funzionare un sistema di elaborazione (10a) secondo una qualsiasi delle Rivendicazioni da 1 a 9, comprendente le fasi di: - memorizzare attraverso detta interfaccia di bus (1102) dati in detto primo insieme di registri (SET1); - calcolare attraverso detto circuito di calcolo del controllo di ridondanza ciclico (da 1118 a 1124) un valore di controllo ciclico di ridondanza (CRC_INT) dei dati memorizzati in detto primo insieme di registri (SET1); - monitorare tramite detto circuito di mascheratura (1126) detti segnali di selezione di registro (WR_REG0..WR_REGn) associati ai registri di detto primo insieme di registri (SET1) al fine di determinare la sequenza di registri in cui sono stati memorizzati i dati e confrontare detta sequenza di registri con una sequenza di riferimento (REF_SEQ); e - quando detta sequenza di registri corrisponde a detta sequenza di riferimento (REF_SEQ), ottenere detto valore di controllo ciclico di ridondanza (CRC_INT) calcolato, attraverso detta interfaccia di bus (1102).
IT102018000005506A 2018-05-18 2018-05-18 Sistema di elaborazione, relativo circuito integrato e procedimento IT201800005506A1 (it)

Priority Applications (5)

Application Number Priority Date Filing Date Title
IT102018000005506A IT201800005506A1 (it) 2018-05-18 2018-05-18 Sistema di elaborazione, relativo circuito integrato e procedimento
EP19172340.2A EP3570167B1 (en) 2018-05-18 2019-05-02 Processing system, related integrated circuit and method
US16/403,275 US11281807B2 (en) 2018-05-18 2019-05-03 Processing system, related integrated circuit and method
CN201910413254.9A CN110502932B (zh) 2018-05-18 2019-05-17 处理系统、相关集成电路和方法
CN201920710970.9U CN210052161U (zh) 2018-05-18 2019-05-17 处理系统、集成电路和微控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT102018000005506A IT201800005506A1 (it) 2018-05-18 2018-05-18 Sistema di elaborazione, relativo circuito integrato e procedimento

Publications (1)

Publication Number Publication Date
IT201800005506A1 true IT201800005506A1 (it) 2019-11-18

Family

ID=63014976

Family Applications (1)

Application Number Title Priority Date Filing Date
IT102018000005506A IT201800005506A1 (it) 2018-05-18 2018-05-18 Sistema di elaborazione, relativo circuito integrato e procedimento

Country Status (4)

Country Link
US (1) US11281807B2 (it)
EP (1) EP3570167B1 (it)
CN (2) CN210052161U (it)
IT (1) IT201800005506A1 (it)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT201800005506A1 (it) * 2018-05-18 2019-11-18 Sistema di elaborazione, relativo circuito integrato e procedimento
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11403234B2 (en) 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11250165B2 (en) 2019-12-20 2022-02-15 Intel Corporation Binding of cryptographic operations to context or speculative execution restrictions
CN110955525B (zh) * 2019-12-05 2022-12-20 广东省新一代通信与网络创新研究院 一种基于fpga设备的网络定义存储方法、读取方法及系统
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
CN115391132B (zh) * 2022-06-14 2024-03-29 北京中科昊芯科技有限公司 一种监控诊断的装置以及芯片
CN115080120A (zh) * 2022-07-01 2022-09-20 北京百度网讯科技有限公司 寄存器的验证方法、装置、设备和介质
CN117130668B (zh) * 2023-10-27 2023-12-29 南京沁恒微电子股份有限公司 一种处理器取指重定向时序优化电路

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6191614B1 (en) * 1999-04-05 2001-02-20 Xilinx, Inc. FPGA configuration circuit including bus-based CRC register
US20160117217A1 (en) * 2014-10-22 2016-04-28 Xpliant, Inc. Apparatus and a method of detecting errors on registers
US20180121282A1 (en) * 2016-10-27 2018-05-03 Nxp Usa, Inc. Register error detection system

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6192427B1 (en) * 1997-05-02 2001-02-20 Texas Instruments Incorporated Input/output buffer managed by sorted breakpoint hardware/software
US6105154A (en) * 1998-05-29 2000-08-15 Lucent Technologies, Inc. Multi-bus multi-data transfer protocols controlled by a bus arbiter coupled to a CRC signature compactor
EP2302510B1 (en) * 1998-08-24 2012-05-09 MicroUnity Systems Engineering, Inc. A processor and method performed by a processor for executing a matrix multipy operation using a wide operand
US6684362B1 (en) * 1999-02-18 2004-01-27 International Business Machines Corporation Method and apparatus for connecting manufacturing test interface to a global serial bus including an I2 c bus
US6823451B1 (en) * 2001-05-10 2004-11-23 Advanced Micro Devices, Inc. Integrated circuit for security and manageability
US7257763B1 (en) * 2001-08-03 2007-08-14 Netlogic Microsystems, Inc. Content addressable memory with error signaling
US7162644B1 (en) * 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
JP4455393B2 (ja) * 2005-04-18 2010-04-21 三菱電機株式会社 プログラマブルロジックコントローラ
US8443263B2 (en) * 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
US8527836B2 (en) * 2011-07-01 2013-09-03 Intel Corporation Rank-specific cyclic redundancy check
US8880961B2 (en) * 2012-01-31 2014-11-04 Infineon Technologies Ag System and method of computation by signature analysis
PL127059U1 (pl) * 2016-07-05 2019-05-06 Vitrochem Group Production Spolka Z Ograniczona Odpowiedzialnoscia System pomiarowo-sterujący do zdalnego monitorowania i regulacji parametrów fizycznych
US11184164B2 (en) * 2018-02-02 2021-11-23 Microsoft Technology Licensing, Llc Secure crypto system attributes
IT201800003373A1 (it) 2018-03-08 2019-09-08 St Microelectronics Srl Procedimento e circuito di decrittazione, dispositivo corrispondente
US10802754B2 (en) * 2018-03-12 2020-10-13 Micron Technology, Inc. Hardware-based power management integrated circuit register file write protection
IT201800005506A1 (it) * 2018-05-18 2019-11-18 Sistema di elaborazione, relativo circuito integrato e procedimento
IT201900006633A1 (it) * 2019-05-08 2020-11-08 Stmicroelectronics Application Gmbh Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
FR3113748B1 (fr) * 2020-09-03 2023-08-11 St Microelectronics Grenoble 2 Procédé de stockage d’instructions dans une mémoire programme et système associé.
CN116560902A (zh) * 2022-02-07 2023-08-08 意法半导体股份有限公司 处理系统、相关集成电路和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6191614B1 (en) * 1999-04-05 2001-02-20 Xilinx, Inc. FPGA configuration circuit including bus-based CRC register
US20160117217A1 (en) * 2014-10-22 2016-04-28 Xpliant, Inc. Apparatus and a method of detecting errors on registers
US20180121282A1 (en) * 2016-10-27 2018-05-03 Nxp Usa, Inc. Register error detection system

Also Published As

Publication number Publication date
CN110502932A (zh) 2019-11-26
US11281807B2 (en) 2022-03-22
EP3570167B1 (en) 2020-11-11
EP3570167A1 (en) 2019-11-20
US20190354726A1 (en) 2019-11-21
CN110502932B (zh) 2023-11-03
CN210052161U (zh) 2020-02-11

Similar Documents

Publication Publication Date Title
IT201800005506A1 (it) Sistema di elaborazione, relativo circuito integrato e procedimento
US11664994B2 (en) Secure unlock systems for locked devices
US9104894B2 (en) Hardware enablement using an interface
US9866370B2 (en) Configurable ASIC-embedded cryptographic processing engine
US10491381B2 (en) In-field system test security
IT201900005020A1 (it) Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
US11917067B2 (en) Apparatuses, methods, and systems for instructions for usage restrictions cryptographically tied with data
US10855529B2 (en) Processing system, related integrated circuit, device and method
CN101908112A (zh) 安全芯片的测试方法与系统
EP2270707B1 (en) Loading secure code into a memory
EP3432190B1 (en) Processing system and related integrated circuit for handling password management
IT201800002895A1 (it) Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
WO2016053407A2 (en) Speculative cryptographic processing for out of order data
US11093658B2 (en) Hardware secure element, related processing system, integrated circuit, device and method
US20220417005A1 (en) Methods and apparatuses to provide chiplet binding to a system on a chip platform having a disaggregated architecture
IT202100007475A1 (it) Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
Irza et al. A third generation many-core processor for secure embedded computing systems
IT201900017534A1 (it) &#34;Sistema di elaborazione comprendente apparato di calcolo di tipo &#34;trust anchor&#34; e corrispondente procedimento&#34;
US12032478B2 (en) Electronic apparatus for time series data management, and method and storage medium
CN117633920B (zh) 一种敏感数据传输总线架构、控制逻辑电路及传输系统
US20220188222A1 (en) Electronic apparatus, method, and storage medium
IT202100030332A1 (it) Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
CN118245428A (zh) 具有安全的、选择性的外围设备启用/禁用的soc架构
Wolf The EVITA Hardware Security Module (HSM)
CN117786699A (zh) 芯片初始化方法、装置、模块、电子设备和存储介质