IT201800003373A1 - Procedimento e circuito di decrittazione, dispositivo corrispondente - Google Patents

Procedimento e circuito di decrittazione, dispositivo corrispondente Download PDF

Info

Publication number
IT201800003373A1
IT201800003373A1 IT102018000003373A IT201800003373A IT201800003373A1 IT 201800003373 A1 IT201800003373 A1 IT 201800003373A1 IT 102018000003373 A IT102018000003373 A IT 102018000003373A IT 201800003373 A IT201800003373 A IT 201800003373A IT 201800003373 A1 IT201800003373 A1 IT 201800003373A1
Authority
IT
Italy
Prior art keywords
data
burst
data units
requests
encrypted
Prior art date
Application number
IT102018000003373A
Other languages
English (en)
Inventor
Giuseppe Guarnaccia
Rosalino Critelli
Original Assignee
St Microelectronics Srl
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by St Microelectronics Srl filed Critical St Microelectronics Srl
Priority to IT102018000003373A priority Critical patent/IT201800003373A1/it
Priority to EP19160360.4A priority patent/EP3537330B1/en
Priority to CN201910173208.6A priority patent/CN110245498B/zh
Priority to US16/296,009 priority patent/US11042655B2/en
Priority to CN201920289802.7U priority patent/CN209980248U/zh
Publication of IT201800003373A1 publication Critical patent/IT201800003373A1/it

Links

Classifications

    • 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/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • 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/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/74Protecting 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 operating in dual or compartmented mode, i.e. at least one secure mode
    • 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
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)
  • Electrotherapy Devices (AREA)
  • Oscillators With Electromechanical Resonators (AREA)

Description

DESCRIZIONE dell’invenzione industriale dal titolo:
“Procedimento e circuito di decrittazione, dispositivo corrispondente”
TESTO DELLA DESCRIZIONE
Campo tecnico
La descrizione è relativa alle tecniche di decrittazione.
Una o più forme di attuazione possono essere applicate ai motori di decrittazione (“decryption engine”) per es. per l’accesso a una memoria esterna attraverso bus AXI (Advanced eXtensible Interface).
Sfondo tecnologico
I microcontrollori come, per es., i microcontrollori STM32 (come disponibili da aziende del gruppo ST) stanno introducendo un numero crescente di caratteristiche di sicurezza che possono anche funzionare su dei bus ad alte prestazioni.
Una elaborazione di crittazione/decrittazione basilare può introdurre latenza che è difficilmente compatibile con il funzionamento di un bus ad alte prestazioni, dove una decrittazione “on the fly” può rappresentare una caratteristica desiderabile, come nell’esecuzione di un codice da una memoria esterna.
Scopo e sintesi
Nonostante la vasta attività nell’area, sono desiderabili ulteriori soluzioni perfezionate.
Per esempio, sono desiderabili soluzioni che possono facilitare, per es., un’esecuzione veloce di un codice crittato (e di una lettura di un “burst” di dati) con un impatto ridotto sull’area di silicio e sulla latenza, per es., su un’interfaccia di bus AXI a 64 bit.
Uno scopo di una o più forme di attuazione è di contribuire a fornire una tale soluzione perfezionata.
Secondo una o più forme di attuazione, tale scopo può essere raggiunto per mezzo di un procedimento avente le caratteristiche esposte nelle rivendicazioni che seguono.
Una o più forme di attuazione possono essere relative a un circuito corrispondente.
Una o più forme di attuazione possono essere relative a un dispositivo corrispondente.
Le rivendicazioni sono parte integrante dell’insegnamento tecnico qui fornito con riferimento alle forme di attuazione.
Una o più forme di attuazione possono fornire una soluzione hardware, atta a essere connessa a un bus AXI per cooperare con un controllore di memoria.
Una o più forme di attuazione possono comportare una “pipeline” profonda per eseguire una decodifica e una generazione degli indirizzi e una decrittazione in parallelo, per es., durante una computazione (“mining”) delle maschere di AES (Advanced Encryption Standard).
Una o più forme di attuazione possono trarre vantaggio dalla capacità di “outstanding” del bus AXI (cioè, la capacità di emettere varie richieste di AXI in attesa di una risposta), senza introdurre latenza.
Una o più forme di attuazione possono fare affidamento su un motore di decrittazione basato su una soluzione con una macchina a stati finiti (FSM, “Finite State Machine”) che esegue un innesco (“trigger”) “congetturale” di generazione delle maschere di AES e di estrazione di campi di burst AXI per gestire in un modo perfezionato il flusso di dati di risposta.
Una o più forme di attuazione possono così affrontare il problema di un’esecuzione veloce di un codice crittato (e di una lettura di un burst di dati) con un impatto ridotto sull’area e/o un impatto ridotto sulla latenza, per es., su un’interfaccia di bus AXI a 64 bit.
Una o più forme di attuazione facilitano fornire un motore di decrittazione ottimizzato sui bus AXI, permettendo la protezione del codice e l’esecuzione veloce del codice da una memoria esterna.
Per esempio, una o più forme di attuazione possono permettere agli utenti dei microcontrollori di rendere disponibile a terzi un firmware protetto per l’esecuzione senza rendere noto il contenuto.
Una o più forme di attuazione possono essere applicate, per es., a microcontrollori (MCU) ad alte prestazioni, non specializzati (“general purpose”), come sempre più usati, per es., nell’area dell’Internet delle Cose o IoT (Internet of Things).
Breve descrizione delle figure
Una o più forme di attuazione saranno ora descritte, a puro titolo di esempio, con riferimento alle figure annesse, nelle quali:
- la Figura 1 è esemplificativa di un possibile contesto di uso di forme di attuazione;
- la Figura 2 è esemplificativa di un possibile funzionamento di una macchina a stati finiti in forme di attuazione; e
- la Figura 3 è uno schema esemplificativo di un circuito in forme di attuazione.
Descrizione dettagliata
Nella descrizione che segue, sono illustrati uno o più dettagli specifici, allo scopo di fornire una comprensione approfondita di esempi di forme di attuazione di questa descrizione. Le forme di attuazione possono essere ottenute senza uno o più dei dettagli specifici o con altri procedimenti, componenti, materiali, ecc. In altri casi, operazioni, materiali o strutture note non sono illustrate o descritte in dettaglio in modo tale che certi aspetti delle forme di attuazione non saranno resi poco chiari.
Un riferimento a “una forma di attuazione” nel quadro della presente descrizione intende indicare che una particolare configurazione, struttura, o caratteristica descritta con riferimento alla forma di attuazione è compresa in almeno una forma di attuazione. Per cui, le frasi come “in una forma di attuazione” che possono essere presenti in uno o più punti della presente descrizione non fanno necessariamente riferimento proprio 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 quindi non definiscono l’ambito di protezione o l’ambito delle forme di attuazione.
La Figura 1 è rappresentativa di un’architettura di alto livello (“top level”) di un cosiddetto “core IP”, con le frecce che rappresentano il flusso temporale e logico del processo di decrittazione dei dati, e la pipeline corrispondente.
In seguito, i registri che funzionano secondo il procedimento “First In, First Out” sono indicati brevemente come registri FIFO. Possibili implementazioni di tali registri sono ben note all’esperto nella tecnica e perciò non saranno qui ulteriormente spiegate.
Nello schema della Figura 1, che fornisce una rappresentazione ad alto livello esemplificativa di un circuito secondo una o più forme di attuazione, sono esemplificati i seguenti elementi:
- punti di accesso a un canale di lettura di indirizzi AXI 10 e/o a un canale di lettura di dati AXI 20 di un bus AXI, il bus AXI essendo atto, per es., a cooperare con un controllore MC di una memoria esterna,
- un modulo circuitale gestore di burst 30,
- un modulo circuitale di registri di AHB 40,
- un modulo circuitale di FIFO “outstanding” di crittazione/decrittazione 50,
- un modulo circuitale gestore di AES 60,
- un modulo circuitale generatore di keystream 70,
- un modulo circuitale controllore della decrittazione 80, e
- un punto di accesso a un bus di comunicazione di tipo AHB (Advanced High-performance Bus) 90.
Si apprezzerà che la rappresentazione dei moduli circuitali precedenti come entità distinte è puramente per chiarezza e semplicità. In una o più forme di attuazione, uno o più di quei moduli circuitali possono essere integrati sotto forma di circuiti multi-funzione.
Similmente, in una o più forme di attuazione, uno o più dei moduli circuitali rappresentati qui come esempio possono essere suddivisi in insiemi corrispondenti di sotto-moduli.
Perciò, i moduli circuitali summenzionati come esemplificati nella Figura 1 possono comprendere a loro volta vari sotto-moduli, come discusso in seguito.
Per esempio:
- il modulo circuitale gestore di burst 30 può comprendere un modulo di controllo del flusso AXI 32, un modulo di decodifica degli indirizzi 34, un registro FIFO dei burst 36, e un modulo controllore del FIFO dei burst 38;
- il modulo circuitale dei registri di AHB 40 può comprendere un modulo dei registri delle chiavi 42 e un modulo dei registri delle regioni di indirizzi 44,
- il modulo circuitale di FIFO “outstanding” di crittazione/decrittazione 50 può comprendere un registro FIFO di crittazione/decrittazione 52;
- il modulo circuitale gestore di AES 60 può comprendere un modulo di generazione di indirizzi 62 e un modulo di macchina a stati finiti (FSM) 64;
- il modulo circuitale generatore di keystream 70 può comprendere un modulo di elaborazione di AES 72;
- il modulo circuitale controllore della decrittazione 80 può comprendere un registro FIFO di informazioni di burst 82, un registro FIFO delle maschere 84, un modulo multiplexer (MUX) 86 (per es., un multiplexer a 64bit), un modulo di controllo del flusso AXI 88, e un modulo logico di XOR 89.
Come indicato, anche la rappresentazione dei sottomoduli circuitali precedenti come entità distinte è puramente per chiarezza e semplicità. In una o più forme di attuazione, uno o più di quei sotto-moduli circuitali possono essere integrati sotto forma di moduli multifunzione.
In una o più forme di attuazione, il modulo dei registri delle regioni di indirizzi 44 e il modulo dei registri delle chiavi 42 possono essere programmati e/o configurati usando, per es., il punto di accesso al bus di comunicazione di tipo AHB 90.
Una o più forme di attuazione sono atte a essere connesse su un bus AXI per una cooperazione con un controllore di memoria MC, il bus AXI essendo fatto funzionare nella cosiddetta “modalità burst”, vale a dire con richieste di transazioni di dati che sono richieste di burst.
Un burst AXI è una transazione di dati nella quale elementi di dati (o “unità di dati”) multipli sono trasferiti (per es., da una memoria esterna MC sul canale di lettura di dati AXI 20) in base a un singolo indirizzo di dati. Ciascuna unità di dati trasferita in un singolo burst è detta un “beat”, e la stessa terminologia si applica alla presente descrizione. Siccome, in forme di attuazione come esemplificate, ciascun burst è associato a un singolo indirizzo di inizio dei dati, gli indirizzi dei beat in un burst sono calcolati in funzione dell’indirizzo di inizio dei dati corrispondente e al tipo di transazione (o, in modo equivalente, al tipo di burst), per es. fisso, incrementale o wrapping. Anche una richiesta di accesso a una singola unità di dati (cioè, un singolo “beat”) in una memoria esterna MC è definita come una richiesta di tipo burst, cioè un burst che richiede il trasferimento di un singolo beat.
In una o più forme di attuazione, come rappresentato qui come esempio, una richiesta di accesso a dati (ed eventualmente una richiesta di decrittazione di dati) è emessa sul canale di lettura di indirizzi AXI 10 come risultato dell’arrivo di un burst AXI. Il burst AXI trasporta informazioni comprendenti:
- l’indirizzo di inizio delle unità di dati corrispondenti da recuperare nella memoria esterna MC (per es., un singolo indirizzo a 32 bit),
- la lunghezza della transazione di dati (cioè, il numero dei beat di dati nel “trasferimento di dati di risposta”, chiamata anche “lunghezza del burst”),
- la dimensione delle unità di dati (cioè, il numero dei bit significativi occupati nel canale di lettura di dati AXI 20 dalle unità di dati recuperate, chiamata anche “dimensione del burst”),
- il tipo di burst (o “tipo di transazione”), per es. fisso, incrementale o wrapping,
- nel caso dei burst wrapping, la lunghezza per il wrapping del burst, e
- possibili altri elementi di informazioni circa la sicurezza, la cachability, e così via.
In una o più forme di attuazione, il modulo di controllo del flusso AXI 32 può essere configurato per monitorare lo stato della pipeline di elaborazione di decrittazione, e l’elaborazione della richiesta di decrittazione di dati in entrata può essere accordata se la pipeline di elaborazione non è piena.
Se l’elaborazione della richiesta in entrata è accordata, il burst AXI è inoltrato (senza alcuna ritemporizzazione) al controllore MC della memoria esterna per recuperare i dati corrispondenti, che possono essere crittati o non crittati.
In una o più forme di attuazione, il modulo di decodifica degli indirizzi 34 può essere configurato per decodificare l’indirizzo di inizio dei dati trasportato dal burst AXI in entrata e altre informazioni di sicurezza su banda laterale (“sideband”). L’indirizzo di inizio dei dati può essere confrontato con le regioni di indirizzi nel modulo dei registri delle regioni di indirizzi 44 e le informazioni di sicurezza possono essere confrontate con la sicurezza programmata nel modulo dei registri delle chiavi 42. Come risultato di un tale confronto, il modulo di decodifica degli indirizzi 34 può prendere una decisione per quanto riguarda se i dati corrispondenti al burst in entrata richiedono un processo di decrittazione oppure no.
In una o più forme di attuazione, il modulo di decodifica degli indirizzi 34 può funzionare “on the fly”, cioè senza introdurre alcun ciclo di ritardo. Nel caso in cui i dati corrispondenti al burst in entrata richiedano un processo di decrittazione, il modulo di controllo del flusso AXI 32 può essere configurato per inoltrare le informazioni del burst al modulo di generazione degli indirizzi 62 se il modulo di generazione degli indirizzi 62 è disponibile per elaborare il burst corrente, oppure per memorizzare le informazioni del burst nel registro FIFO dei burst 36 se il modulo di generazione degli indirizzi 62 non è disponibile per elaborare il burst corrente (per es., perché sta elaborando le informazioni di un burst precedente). Il modulo di controllo del flusso AXI 32 può essere a conoscenza del fatto che il registro FIFO dei burst 36 è pieno; in tal caso, la decrittazione dei dati corrispondenti al burst in entrata non è garantita.
In una o più forme di attuazione, una elaborazione in parallelo può consentire di riempire il registro FIFO di crittazione/decrittazione 52 in parallelo al funzionamento del modulo di generazione degli indirizzi 62. Per esempio, se la decisione è di decrittare i dati corrispondenti al burst in entrata, il valore “1” è memorizzato nel registro FIFO di crittazione/decrittazione 52, altrimenti, anche se non è memorizzata alcuna informazione nel FIFO dei burst 36, il valore “0” è memorizzato all’interno del registro FIFO di crittazione/decrittazione 52.
In base al principio di funzionamento dei registri FIFO, la sequenza binaria memorizzata nel registro FIFO di crittazione/decrittazione 52 è letta dal modulo circuitale controllore della decrittazione 80, per es. come risultato di una sequenza di dati di risposta che è recuperata, per es., da una memoria esterna MC. Leggere i valori memorizzati nel registro FIFO di crittazione/decrittazione 52 faciliterà il fatto di prendere una decisione di decrittare i dati corrispondenti usando le maschere disponibili come descritto in seguito (se un “1” è stato memorizzato nel registro FIFO di crittazione/decrittazione 52), oppure di inoltrare direttamente i dati di risposta senza applicare una elaborazione di decrittazione (se uno “0” è stato memorizzato nel registro FIFO di crittazione/decrittazione 52). In quest’ultimo caso, che corrisponde a richieste di burst per unità di dati non crittate, le informazioni circa tali richieste di burst per unità di dati non crittate possono così non essere memorizzate nel FIFO dei burst 36.
Si apprezzerà che il fatto di fare riferimento rispettivamente a valori “1” e “0” è puramente a titolo di esempio: una o più forme di attuazione possono adottare in effetti una scelta complementare (per es., rispettivamente valori di “0” e “1”), o una qualsiasi altra codifica booleana adatta di tali informazioni.
In una o più forme di attuazione, se la decisione è di decrittare i dati recuperati, più attività di elaborazione possono essere eseguite in parallelo, per es. essendo innescate da un burst che è inoltrato al modulo gestore di AES 60, le attività di elaborazione comprendendo il calcolo delle maschere di AES, e/o la generazione di indirizzi, e/o il calcolo dell’intestazione (“header”) della maschera.
In generale, a una alta frequenza di clock (per es., maggiore di 300 MHz), possono essere richiesti alcuni cicli di clock per generare una maschera di decrittazione, per es. una maschera a 128 bit. Per esempio, un algoritmo di tipo “AES counter” può richiedere, per es., 11 cicli di clock per generare una maschera di decrittazione a 128 bit.
Si apprezzerà che, nel contesto della presente descrizione, i termini “maschera” e “keystream” sono usati in modo indifferente. In effetti, keystream è la denominazione tecnica usata nel contesto della procedura di AES per indicare la maschera da usare per il processo di decrittazione dei dati crittati.
Una procedura di AES come adottata in una o più forme di attuazione può comprendere una procedura di tipo “AES counter”. Una procedura di tipo “AES counter” può facilitare il calcolo delle maschere di decrittazione in funzione degli indirizzi di inizio dei burst e di altre informazioni trasportate dai burst corrispondenti.
In una o più forme di attuazione, la procedura di AES può essere innescata per la generazione di maschere di decrittazione per la decrittazione di unità di dati di un certo burst fornendo dati in ingresso al modulo di elaborazione di AES 72. Per esempio, tali dati di ingresso al modulo di elaborazione di AES 72 possono comprendere una chiave segreta (per es., una chiave segreta a 128 bit) e un vettore di inizializzazione (per es., un vettore di inizializzazione a 128 bit).
In una o più forme di attuazione, una chiave segreta può essere recuperata dai registri nel modulo dei registri delle chiavi 42.
In una o più forme di attuazione, un vettore di inizializzazione può essere calcolato dal modulo circuitale gestore di AES 60 in funzione dell’indirizzo di inizio e di altre informazioni trasportate dal burst corrispondente, come discusso precedentemente.
Come indicato, una procedura di tipo “AES counter” può facilitare il calcolo delle maschere di decrittazione in funzione degli indirizzi di inizio dei burst e di altre informazioni trasportate dai burst corrispondenti.
In una o più forme di attuazione, informazioni “concise” relative, per es., al tipo di burst (per es., fisso, incrementale o wrapping), all’indirizzo di inizio del burst, alla dimensione delle unità di dati, alla lunghezza del burst, alla lunghezza per l’effettuazione del wrapping, etc., possono essere estratte ed associate a ciascun burst, e possono essere memorizzate come una “intestazione della maschera” (“mask header”) nel registro FIFO delle informazioni dei burst 82.
Le maschere generate possono essere memorizzate nel registro FIFO delle maschere 84, e le intestazioni delle maschere calcolate possono essere memorizzate nel registro FIFO delle informazioni dei burst 82. Per esempio, più maschere possono corrispondere a una singola intestazione di maschera (e perciò a una singola richiesta di burst), per es. a causa della grande lunghezza del burst (cioè, a causa di un alto numero di unità di dati, o di beat di dati, nel “trasferimento di dati di risposta”).
In una o più forme di attuazione, se dati di risposta sono recuperati da una memoria esterna MC e sono inviati indietro al modulo di decrittazione sul canale di lettura di dati AXI 20 e sono disponibili maschere di decrittazione, il modulo circuitale controllore della decrittazione 80 può iniziare a leggere i dati memorizzati nel registro FIFO delle informazioni dei burst 82 e nel registro FIFO delle maschere 84, cioè effettuando un “popping” di tali dati dai registri FIFO, iniziando l’associazione di ciascun beat di dati nel trasferimento di dati di risposta con la maschera corrispondente, o eventualmente con la porzione di maschera corrispondente nel caso in cui le unità di dati abbiano una dimensione minore delle maschere (per es., se le unità di dati sono lunghe 64 bit e le maschere sono lunghe 128 bit). Tale calcolo può essere eseguito, per esempio, in parallelo alla generazione dell’indirizzo di risposta.
In una o più forme di attuazione, il flusso di dati di risposta può essere arrestato se le unità di dati recuperate sono crittate, richiedendo così una decrittazione, e le maschere non sono disponibili.
In una o più forme di attuazione, l’elaborazione di decrittazione eseguita dal modulo logico di XOR 89 per la procedura di AES applicata può consistere nell’effettuare un’operazione di XOR, bit per bit, tra i dati crittati (cioè, il cosiddetto testo cifrato) e la maschera calcolata. Quest’operazione di XOR restituisce i dati decrittati, cioè il cosiddetto testo in chiaro.
La capacità di “outstanding” di burst può essere critica per il processo di decrittazione. Può avere un impatto sulle prestazioni dell’applicazione, per esempio l’esecuzione di codice o l’elaborazione di immagini.
Una o più forme di attuazione dell’architettura descritta possono essere atte a gestire fino a N burst in sospeso, dove N dipende anche dalle dimensioni (o profondità) dei registri FIFO implementati, per es. il registro FIFO dei burst 36, il registro FIFO di crittazione/decrittazione 52, il registro FIFO delle informazioni dei burst 82 e il registro FIFO delle maschere 84. Tale possibilità di gestire fino a N burst in sospeso ha origine dalla partizione della pipeline di elaborazione di decrittazione in stadi differenti e dal fatto di sfruttare l’elaborazione in parallelo.
In una o più forme di attuazione, mentre le richieste AXI sono in attesa della risposta corrispondente, la procedura di AES può essere innescata in continuazione per generare le maschere richieste, facilitando così il fatto di aumentare le prestazioni del core e/o di trarre vantaggio dal riempimento della cache.
Come indicato in precedenza, una possibile applicazione per un procedimento di decrittazione come qui esemplificato è, per esempio, l’esecuzione di codice crittato, per es. memorizzato in una memoria esterna MC, da parte di un core di elaborazione MCU. Per esempio, può essere utilizzata la cache (“caching”) per anticipare l’esecuzione dei comandi e per migliorare le prestazioni del core di elaborazione MCU. Come risultato del fatto che il core di elaborazione MCU esegue una certa istruzione, il caching può “fare supposizioni” sulle successive istruzioni che devono essere eseguite dal core di elaborazione MCU, e può tentare di recuperare tali istruzioni da una memoria esterna MC per un possibile uso in un’elaborazione successiva.
Perciò, in una o più forme di attuazione, il fatto di ricevere una richiesta di burst per unità di dati crittate memorizzate in una memoria esterna MC, le unità di dati crittate corrispondendo, per es., a certe istruzioni di codice da eseguirsi da parte del core di elaborazione MCU, può innescare una predizione ipotetica di richieste di burst per unità di dati crittate memorizzate nella memoria esterna MC a indirizzi successivi.
In una o più forme di attuazione, un innesco della procedura di AES per la generazione delle maschere può essere gestito dal modulo FSM 64, come esemplificato nella Figura 2. Per esempio, il modulo FSM 64 può innescare la generazione di maschere per la decrittazione di tali burst successivi “ipotizzati” quando il modulo circuitale generatore di keystream 70 è libero.
In una o più forme di attuazione, la generazione degli indirizzi può comprendere due fasi, la prima fase essendo la generazione di tutti gli indirizzi delle maschere richiesti per i burst in entrata, e la seconda fase essendo la generazione degli indirizzi delle maschere “successive”, per es. eseguendo un innesco “ipotetico” della generazione delle maschere di AES.
In una o più forme di attuazione, prima di iniziare una qualsiasi ipotesi sui possibili indirizzi delle maschere “successive”, è preferibile completare la generazione degli indirizzi che corrispondono ai burst ricevuti e potenzialmente memorizzati nei registri FIFO. Un singolo burst può in effetti coprire (a causa di una “lunghezza” del burst potenzialmente grande, cioè un numero elevato di beat di dati nel “trasferimento di dati di risposta”) una grande area di memoria, comportando eventualmente più di una maschera (per es., più di una maschera a 128 bit).
In una o più forme di attuazione, il processo di generazione degli indirizzi, in base all’indirizzo di inizio del burst, alla lunghezza del burst, alla dimensione del burst e al tipo di burst (per es., fisso, wrapping o incrementale), può essere complesso a seconda della lunghezza del burst.
Per esempio, il processo di generazione degli indirizzi può essere complesso a causa della necessità di calcolare somme e prodotti tra numeri “lunghi” (per es., numeri a 128 bit).
Perciò, in una o più forme di attuazione, il processo di generazione degli indirizzi è affrontato preferibilmente passo dopo passo dal modulo FSM 64 e può procedere in parallelo al calcolo delle maschere di AES.
Come risultato del fatto che il processo di generazione degli indirizzi è completato (cioè, sono stati calcolati tutti gli indirizzi delle maschere richiesti per i burst in entrata) e che il modulo circuitale generatore di keystream 70 è di nuovo libero, può essere effettuata una ipotesi circa il prossimo burst in entrata che può essere ricevuto sul canale di lettura degli indirizzi AXI 10.
Si apprezzerà che il termine “successivo” usato precedentemente deve anche essere interpretato in un modo “intelligente”, che significa che nel caso di un burst con indirizzo wrapping, l’indirizzo da predire probabilmente non è collegato all’indirizzo di inizio del burst, ma all’ultimo indirizzo “finale” calcolato dal modulo FSM 64, perché presumibilmente l’operazione del core progredirà da quel punto.
In una o più forme di attuazione, il modulo FSM 64 può essere configurato per funzionare come una macchina a stati finiti che ha il comportamento descritto a titolo esemplificativo nella Figura 2.
La macchina a stati finiti può avere uno stato di “INATTIVITÀ” (“IDLE”) 100, uno stato di “generazione degli indirizzi delle maschere di AES” 102, uno stato di “prefetch di AES” 104 e uno stato di “prefetch di AES completato” 106.
Lo stato di IDLE 100 può essere raggiunto soltanto come risultato del reset dell’intero circuito di decrittazione o come risultato della ricezione di un segnale “IP_Enable”. Come risultato del fatto che la FSM è nello stato di IDLE 100, il modulo di elaborazione di AES 72 è libero (cioè, la procedura di AES non è in esecuzione) e non c’è alcun burst da decrittare. La ricezione di un segnale “burst_valid”, indicativo di un burst in entrata valido che è ricevuto sul canale di lettura degli indirizzi 10, può innescare il flusso di decrittazione, facendo sì che la FSM si sposti allo stato di generazione degli indirizzi delle maschere di AES 102.
Come risultato del fatto che la FSM è nello stato di generazione degli indirizzi delle maschere di AES 102, il modulo di elaborazione di AES 72 può essere attivato. Per completare la generazione delle maschere può essere richiesto più di un ciclo di clock, per es. 11 cicli di clock. Allo stesso tempo, può essere in corso il calcolo dell’indirizzo della prossima maschera. Il fatto di raggiungere la fine del processo di generazione degli indirizzi delle maschere in assenza di qualche burst seguente disponibile sul canale di lettura degli indirizzi 10 può innescare la fase di prefetch di AES, che fa sì che la FSM si sposti allo stato di prefetch di AES 104.
In una o più forme di attuazione, il modulo di elaborazione di AES 72 può essere attivato come risultato del fatto che la FSM effettua una transizione allo stato di prefetch di AES 104, con almeno un indirizzo di una maschera che è sottoposto a prefetch.
L’elaborazione di prefetch può essere interrotta in un momento qualsiasi, per es. nel caso in cui un burst in entrata, che innesca un segnale di “burst_valid”, abbia un indirizzo che è differente dall’indirizzo che è stato “ipotizzato”. In questo caso, è attivato il flusso standard di AES. In ogni caso, un segnale di “burst_valid” farà sì che la FSM si sposti allo stato di generazione degli indirizzi delle maschere di AES 102. Il fatto di raggiungere la fine del processo di prefetch degli indirizzi delle maschere in assenza di un segnale di “burst_valid” può far sì che la FSM si sposti allo stato di prefetch di AES completato 106.
Come risultato del fatto che la FSM si trova nello stato di prefetch di AES completato 106, una maschera sottoposta con successo a prefetch è memorizzata temporaneamente nel registro FIFO delle maschere 84, in attesa di un nuovo burst. Il modulo di elaborazione di AES 72 può essere mantenuto in attesa. Come conseguenza della ricezione di un segnale “burst_valid”, può essere attivato di nuovo il flusso standard.
In una o più forme di attuazione, il modulo circuitale controllore della decrittazione 80 può essere responsabile dell’operazione di XOR tra le unità di dati di risposta e le maschere di decrittazione corrispondenti.
Come indicato precedentemente, informazioni significative e concise possono essere estratte, per ciascun burst in entrata, dal burst AXI da parte del modulo FSM 64, e possono essere memorizzate come una “intestazione della maschera” nel registro FIFO delle informazioni dei burst 82 per gestire il flusso di dati di risposta. In una o più forme di attuazione, queste informazioni concise possono comprendere:
- un campo “burst_type”, per es. codificato in 2 bit, che fornisce informazioni circa il tipo del burst corrispondente, per es. fisso, incrementale o wrapping;
- un campo “start_address”, per es. codificato in 5 bit, che fornisce l’indirizzo di inizio dei dati del burst da recuperare, per es., in una memoria esterna;
- un campo “size”, per es. codificato in 3 bit, che fornisce informazioni circa la dimensione delle unità di dati nel burst corrispondente;
- un campo “length_for_wrapping”, per es. codificato in 2 bit, che fornisce informazioni circa l’intervallo degli indirizzi coperto dal burst ed esplorato dal modulo circuitale controllore della decrittazione 80 nel caso di un burst wrapping.
Per esempio, una possibile codifica per il campo “length_for_wrapping” nel caso di una codifica con valori a 2 bit può essere il seguente:
- “00”: effettuare un wrapping dopo 2 byte,
- “01”: effettuare un wrapping dopo 4 byte,
- “10”: effettuare un wrapping dopo 8 byte, e
- “11”: effettuare un wrapping dopo 16 byte.
Come esemplificato in precedenza, le informazioni richieste per la corretta decrittazione delle unità di dati recuperate possono essere memorizzate in una singola intestazione per ciascun burst in entrata, ciascuna intestazione avendo la dimensione, per es., di 12 bit. Perciò, una o più forme di attuazione possono facilitare una riduzione dell’area del circuito migliorando la procedura di selezione e associazione di maschera/dati.
In una o più forme di attuazione, il modulo circuitale controllore della decrittazione 80 può calcolare gli indirizzi dei dati correnti (gli offset) per i beat di dati in un burst che richiede una elaborazione di decrittazione, secondo l’algoritmo descritto in seguito.
All’inizio del processo di decrittazione di un certo burst, un indirizzo di inizio, la cui dimensione in bit può dipendere dalla dimensione in bit del bus AXI, per es. essendo codificato in 5 bit nel caso di un bus AXI a 64 bit, può essere inizializzato conformemente all’indirizzo di inizio del burst come memorizzato nella corrispondente voce di dati nel registro FIFO delle informazioni dei burst 82.
Come risultato del fatto che un beat di dati è recuperato dalla memoria esterna MC e che è disponibile sul canale di lettura dei dati AXI 20 per l’elaborazione nel modulo controllore della decrittazione 80, può essere innescato un segnale “rvalid” (per es., posto a “1”), che può essere letto dal modulo circuitale controllore della decrittazione 80.
In una o più forme di attuazione, l’indirizzo di dati corrente può quindi essere calcolato in differenti modi secondo il tipo del burst corrispondente. Se il burst è del tipo fisso, l’indirizzo di inizio non è incrementato ed è usata una sola maschera per tutti i beat di dati compresi nello stesso burst. Se il burst è del tipo incrementale, l’indirizzo di dati corrente è calcolato incrementando, a ciascuna occorrenza del segnale di “rvalid”, l’indirizzo di inizio del burst di una quantità pari alla dimensione dei beat di dati (per es., 4 byte). Se il burst è del tipo wrapping, l’indirizzo di dati corrente è calcolato incrementando, a ciascuna occorrenza del segnale di “rvalid”, l’indirizzo di inizio del burst di una quantità pari alla dimensione dei beat di dati (per es., 4 byte), effettuando un wrapping (per es., ritornando all’indirizzo di inizio iniziale) in corrispondenza di length_for_wrapping*size.
In una o più forme di attuazione, l’operazione di XOR, se richiesta, è eseguita dal modulo logico di XOR 89 sull’intero bus dati, per es. sull’intero bus AXI a 64 bit.
In una o più forme di attuazione, un bit dell’indirizzo di dati corrente (per es., il quarto bit più a destra) può essere usato come un selettore per decidere quale porzione della maschera dovrebbe essere usata nell’operazione di XOR (per esempio, la prima o la seconda metà della maschera). Per esempio, nel caso di una maschera a 128 bit e di un bus di dati AXI a 64 bit, se il valore del bit selettore è uguale a “0” allora può essere usata la prima metà della maschera (cioè, la parte della maschera identificata dai bit 63:0), mentre se il valore del bit selettore è uguale a “1” allora può essere usata la seconda metà della maschera (cioè, la parte della maschera identificata dai bit 127:64).
Si apprezzerà che, anche in questo caso, il fatto di fare riferimento rispettivamente ai valori “1” e “0” è puramente a titolo di esempio: una o più forme di attuazione possono adottare in effetti una scelta complementare (per es., rispettivamente valori “0” e “1”) o una qualsiasi altra codifica booleana adatta di tali informazioni.
In una o più forme di attuazione, un bit dell’indirizzo di dati corrente (per es., il quinto bit più a destra) può essere usato per innescare un cambiamento della maschera. Per esempio, un cambiamento nel valore di tale bit di innesco del cambiamento della maschera, da “0” a “1” o da “1” a “0”, può innescare il “popping” (“estrazione”) di una maschera di decrittazione dal registro FIFO delle maschere 84.
Come risultato del fatto che l’ultimo beat di dati corrispondenti a una certa richiesta burst è recuperato dalla memoria esterna MC ed è disponibile sul canale di lettura dei dati AXI 20 per l’elaborazione nel modulo controllore della decrittazione 80, può essere innescato un segnale “rlast” (per es., posto a “1”), che può essere letto dal modulo circuitale controllore della decrittazione 80. Il fatto che tale segnale “rlast” sia uguale a “1” può notificare al modulo circuitale controllore della decrittazione 80 che è stata raggiunta la “fine” del flusso di dati di risposta corrispondente a una certa richiesta di burst.
Si apprezzerà, d’altra parte, che le dimensioni summenzionate (per es., la dimensione del bus di dati AXI, la dimensione delle maschere, la profondità dei registri FIFO, la dimensione dell’intestazione delle maschere, la dimensione degli indirizzi di inizio, ecc.) e le posizioni del bit selettore e del bit di innesco del cambiamento della maschera nell’indirizzo di dati corrente possono essere generalizzate senza uscire dall’ambito di protezione.
In una o più forme di attuazione, un procedimento può comprendere:
- ricevere (per es., 32) su un bus AXI (per es., 10) richieste di accesso a dati per unità di dati memorizzate in una memoria (per es., MC), in cui il bus AXI può funzionare in una modalità burst, in cui le richieste possono comprendere richieste burst per l’accesso a rispettivi insiemi di unità di dati memorizzate nella memoria a partire da rispettivi indirizzi di inizio dei dati, e le richieste burst possono trasmettere i rispettivi indirizzi di inizio dei dati e informazioni di sicurezza, che indicano, per esesempio, se le unità di dati richieste nelle richieste burst sono unità di dati crittate o non crittate;
- leggere (per es., 34) gli indirizzi di inizio dei dati e le informazioni di sicurezza trasmessi dalle richieste burst, suddividendo con ciò le richieste burst ricevute, in funzione degli indirizzi di inizio dei dati e delle informazioni di sicurezza, in richieste burst per unità di dati crittate e in richieste burst per unità di dati non crittate, in cui sia le richieste burst per unità di dati crittate e che le richieste burst per unità di dati non crittate possono essere inoltrate verso la memoria (per es., MC) e i rispettivi insiemi di unità di dati possono essere recuperati dalla memoria (per es., MC) su un bus AXI (per es., 20).
In una o più forme di attuazione, una elaborazione secondo Advanced Encryption Standard (AES) (per es., 60, 70, 80) può essere applicata alle richieste burst per unità di dati crittate, per es. calcolando (per es., 72) maschere di decrittazione per le unità di dati crittate e applicando (per es., 80) le maschere di decrittazione calcolate alle unità di dati crittate recuperate.
In una o più forme di attuazione, un bus AXI può comprendere un canale di lettura di indirizzi (per es., 10) e un canale di lettura di dati (per es., 20).
In una o più forme di attuazione, un procedimento può comprendere ricevere (per es., 32) le richieste di accesso a dati sul canale di lettura degli indirizzi (per es., 10) e recuperare dalla memoria (per es., MC) i rispettivi insiemi di unità di dati sul canale di lettura dei dati (per es., 20).
In una o più forme di attuazione, suddividere le richieste burst ricevute, in funzione degli indirizzi di inizio dei dati e delle informazioni di sicurezza, in richieste burst per unità di dati crittate e richieste burst per unità di dati non crittate, può comprendere:
- confrontare le informazioni di sicurezza con le istruzioni di sicurezza memorizzate in un registro (per es., 42), e
- confrontare gli indirizzi di inizio dei dati con gli intervalli di indirizzi memorizzati in un registro (per es., 44).
In una o più forme di attuazione, un procedimento può comprendere applicare una elaborazione Advanced Encryption Standard (AES) (per es., 60, 70, 80) alle richieste burst per unità di dati crittate attraverso una pipeline di elaborazione di decrittazione (per es., 3, 4, 5, 6, 7).
In una o più forme di attuazione, un procedimento può comprendere verificare (per es., 32) se la pipeline di elaborazione di decrittazione è disponibile per elaborare richieste burst in entrata per unità di dati crittate.
In una o più forme di attuazione, richieste burst in entrata per unità di dati crittate possono essere memorizzate (per es., 38) in un registro FIFO (per es., 36) come risultato del fatto che la pipeline di elaborazione di decrittazione è indisponibile.
In una o più forme di attuazione, applicare detta elaborazione Advanced Encryption Standard, AES, può comprendere applicare una procedura “AES counter”.
In una o più forme di attuazione, applicare una elaborazione Advanced Encryption Standard (AES) (per es., 60, 70, 80) può comprendere applicare (per es., 89) una elaborazione di XOR bit a bit tra le unità di dati crittate recuperate e le maschere di decrittazione calcolate.
In una o più forme di attuazione, richieste per unità di dati ricevute (per es., 32) su un bus AXI (per es., 10) possono trasmettere, insieme a rispettivi indirizzi di inizio dei dati e informazioni di sicurezza, informazioni supplementari, per es., sulla dimensione delle unità di dati, sul tipo di richiesta burst e sulle lunghezze delle richieste burst.
In una o più forme di attuazione, un procedimento può comprendere ricevere segnali di disponibilità di unità di dati indicativi della disponibilità di unità di dati dalla memoria (per es., MC).
In una o più forme di attuazione, un procedimento può comprendere applicare (per es., 89) maschere di decrittazione calcolate a unità di dati crittate tra le unità di dati disponibili dalla memoria calcolando (per es., 62), per esempio in funzione dei segnali di disponibilità di unità di dati e delle informazioni supplementari, indirizzi dei dati correnti (per es., 85) per le unità di dati crittate e selezionando (per es., 86, 88) le maschere di decrittazione applicate alle unità di dati crittate, per esempio, in funzione degli indirizzi dei dati correnti (per es., 85).
In una o più forme di attuazione, un procedimento può comprendere:
- fornire negli indirizzi di dati correnti (per es., 85) per le unità di dati crittate almeno un bit di controllo del cambiamento della maschera, e
- cambiare (per es., 86) almeno una porzione delle maschere di decrittazione applicate alle unità di dati crittate, per esempio come risultato di cambiamenti del valore dell’almeno un bit di controllo del cambiamento della maschera.
In una o più forme di attuazione, un procedimento può comprendere:
- calcolare (per es., 72) maschere di decrittazione per le unità di dati crittate fornendo una pluralità di porzioni di maschere (per es., 84) applicabili a differenti unità di dati crittate,
- fornire negli indirizzi di dati correnti (per es., 85) per le unità di dati crittate un primo bit di controllo del cambiamento della maschera e un secondo bit di controllo del cambiamento della maschera,
- cambiare (per es., 86) le maschere di decrittazione applicate alle unità di dati crittate, per esempio come risultato di cambiamenti del valore del primo bit di controllo del cambiamento della maschera, e
- cambiare (per es., 86) le porzioni delle maschere di decrittazione applicate alle unità di dati crittate, per esempio come risultato di cambiamenti del valore del secondo bit di controllo del cambiamento della maschera.
Una o più forme di attuazione possono comprendere:
- calcolare, in funzione dei segnali di disponibilità di unità di dati e delle informazioni supplementari, indirizzi di dati correnti (per es., 85) per le unità di dati crittate,
- in presenza di richieste burst ricevute sul bus AXI (per es., 10), calcolare le maschere di decrittazione in funzione, per es., dei rispettivi indirizzi di inizio dei dati, del tipo di richiesta burst e delle informazioni di lunghezza delle richieste burst in esse,
- in assenza di richieste burst ricevute sul bus AXI (per es., 10), calcolare un insieme di maschere di decrittazione candidate applicabili a future richieste burst in entrata per unità di dati crittate in funzione di almeno uno tra, per es., l’indirizzo di inizio dei dati dell’ultima richiesta burst per unità di dati crittate ricevuta, l’indirizzo dell’unità di dati corrente calcolato per detta ultima richiesta burst per unità di dati crittate ricevuta e il tipo di burst.
Una o più forme di attuazione possono comprendere memorizzare (per es., 84) almeno una maschera di decrittazione tra un insieme di maschere di decrittazione candidate.
Una o più forme di attuazione possono comprendere, in assenza di richieste burst ricevute sul bus AXI (per es., 10), calcolare un insieme di indirizzi di dati candidati di unità di dati crittate in future richieste burst in entrata in funzione di almeno uno tra, per es., l’indirizzo di inizio dei dati dell’ultima richiesta burst per unità di dati crittate ricevuta, l’indirizzo dell’unità di dati corrente calcolato per detta ultima richiesta burst per unità di dati crittate ricevuta, e il tipo di burst.
In una o più forme di attuazione, un circuito può comprendere:
- un nodo di ingresso (per es., 32), per esempio configurato per ricevere su un bus AXI (per es., 10) richieste di accesso a dati per unità di dati memorizzate in una memoria (per es., MC), in cui il bus AXI (per es., 10) può funzionare in una modalità burst, in cui le richieste possono comprendere richieste burst per l’accesso a rispettivi insiemi di unità di dati memorizzate in una memoria (per es., MC) che iniziano da rispettivi indirizzi di inizio dei dati e le richieste burst possono trasmettere rispettivi indirizzi di inizio dei dati e informazioni di sicurezza che indicano se le unità di dati richieste nelle richieste burst sono unità di dati crittate o non crittate;
- un blocco circuitale di lettura (per es., 34) accoppiato al nodo di ingresso (per es., 32), il blocco circuitale di lettura configurato per leggere (per es., 34) gli indirizzi di inizio dei dati e le informazioni di sicurezza trasmessi dalle richieste burst, suddividendo con ciò le richieste burst ricevute, per esempio in funzione degli indirizzi di inizio dei dati e delle informazioni di sicurezza, in richieste burst per unità di dati crittate e richieste burst per unità di dati non crittate, in cui sia le richieste burst per unità di dati crittate sia le richieste burst per unità di dati non crittate possono essere inoltrate verso la memoria (per es., MC) e i rispettivi insiemi di unità di dati possono essere recuperati dalla memoria (per es., MC) su un bus AXI (per es., 20);
- una circuiteria di elaborazione (per es., 60, 70, 80) configurata per applicare una elaborazione Advanced Encryption Standard (AES) alle richieste burst per unità di dati crittate secondo il procedimento di una o più forme di attuazione.
In una o più forme di attuazione, un dispositivo può comprendere:
- una memoria (per es., MC) per memorizzare unità di dati,
- un bus AXI configurato (per es., 10) per trasmettere richieste di accesso a dati per unità di dati memorizzate nella memoria (per es., MC), in cui il bus AXI (per es., 10) può essere fatto funzionare in una modalità burst, in cui le richieste possono comprendere richieste burst per l’accesso a rispettivi insiemi di unità di dati memorizzate nella memoria (per es., MC) che iniziano da rispettivi indirizzi di inizio dei dati, e il bus AXI può essere configurato (per es., 20) per trasmettere rispettivi insiemi di unità di dati recuperate dalla memoria (per es., MC) come risultato delle richieste di accesso a dati;
- un circuito secondo una o più forme di attuazione, il circuito avendo un nodo di ingresso (per es., 32) configurato per ricevere su un bus AXI (per es., 10) richieste di accesso a dati per unità di dati memorizzate in una memoria (per es., MC), in cui il bus AXI (per es., 10) può funzionare in una modalità burst, in cui le richieste possono comprendere richieste burst per l’accesso a rispettivi insiemi di unità di dati memorizzate nella memoria (per es., MC) che iniziano da rispettivi indirizzi di inizio dei dati, e le richieste burst possono trasmettere rispettivi indirizzi di inizio dei dati e informazioni di sicurezza che indicano se le unità di dati richieste nelle richieste burst siano unità di dati crittate o non crittate; il circuito può essere accoppiato (per es., 32, 88) al bus AXI (per es., 10, 20) per ricevere le richieste burst e i rispettivi insiemi di unità di dati recuperate dalla memoria (per es., MC).
Fermi restando i principi di fondo, i dettagli e le forme di attuazione possono variare, anche in modo apprezzabile, rispetto a quanto è stato descritto, puramente a titolo di esempio, senza uscire dall’ambito di protezione.
L’ambito di protezione è definito dalle rivendicazioni annesse.

Claims (12)

  1. RIVENDICAZIONI 1. Procedimento, comprendente: - ricevere (32) su un bus AXI (10) richieste di accesso a dati per unità di dati memorizzate in una memoria (MC), in cui il bus AXI funziona in una modalità burst, in cui le richieste comprendono richieste burst per l’accesso a rispettivi insiemi di unità di dati memorizzate nella memoria (MC) che iniziano da rispettivi indirizzi di inizio dei dati, le richieste burst trasmettendo detti rispettivi indirizzi di inizio dei dati e informazioni di sicurezza che indicano se le unità di dati richieste nelle richieste burst sono unità di dati crittate o non crittate; - leggere (34) gli indirizzi di inizio dei dati e le informazioni di sicurezza trasmessi dalle richieste burst, suddividendo con ciò le richieste burst ricevute, in funzione di detti indirizzi di inizio dei dati e di dette informazioni di sicurezza, in richieste burst per unità di dati crittate e in richieste burst per unità di dati non crittate, in cui sia le richieste burst per unità di dati crittate sia le richieste burst per unità di dati non crittate sono inoltrate verso la memoria (MC) e i rispettivi insiemi di unità di dati sono recuperati dalla memoria (MC) sul bus AXI (20); in cui una elaborazione Advanced Encryption Standard, AES, (60, 70, 80) è applicata alle richieste burst per unità di dati crittate calcolando (72) maschere di decrittazione per le unità di dati crittate e applicando (80) le maschere di decrittazione calcolate alle unità di dati crittate recuperate.
  2. 2. Procedimento secondo la rivendicazione 1, in cui il bus AXI comprende un canale di lettura di indirizzi (10) e un canale di lettura di dati (20) e il procedimento comprende ricevere (32) le richieste di accesso a dati sul canale di lettura di indirizzi (10) e recuperare dalla memoria (MC) i rispettivi insiemi di unità di dati sul canale di lettura di dati (20).
  3. 3. Procedimento secondo la rivendicazione 1 o la rivendicazione 2, in cui suddividere le richieste burst ricevute, in funzione di detti indirizzi di inizio dei dati e di dette informazioni di sicurezza, in richieste burst per unità di dati crittate e richieste burst per unità di dati non crittate, comprende: - confrontare dette informazioni di sicurezza con le istruzioni di sicurezza memorizzate in un registro (42), - confrontare detti indirizzi di inizio dei dati con gli intervalli di indirizzi memorizzati in un registro (44).
  4. 4. Procedimento secondo una qualsiasi delle rivendicazioni precedenti, comprendente applicare una elaborazione Advanced Encryption Standard, AES, (60, 70, 80) alle richieste burst per unità di dati crittate attraverso una pipeline di elaborazione di decrittazione (3, 4, 5, 6, 7), il procedimento comprendendo verificare (32) se la pipeline di elaborazione di decrittazione è disponibile per elaborare richieste burst in entrata per unità di dati crittate, come risultato del fatto che la pipeline di elaborazione di decrittazione è indisponibile, memorizzare (38) richieste burst per unità di dati crittate in entrata in un registro FIFO (36).
  5. 5. Procedimento secondo una qualsiasi delle rivendicazioni precedenti, in cui applicare detta elaborazione Advanced Encryption Standard, AES, (60, 70, 80) comprende applicare una procedura AES counter.
  6. 6. Procedimento secondo una qualsiasi delle rivendicazioni precedenti, in cui applicare detta elaborazione Advanced Encryption Standard, AES, (60, 70, 80) comprende applicare (89) una elaborazione di XOR bit a bit tra le unità di dati crittate recuperate e le maschere di decrittazione calcolate.
  7. 7. Procedimento secondo una qualsiasi delle rivendicazioni precedenti, in cui dette richieste per unità di dati ricevute (32) sul bus AXI (10) trasmettono, insieme a detti rispettivi indirizzi di inizio dei dati e informazioni di sicurezza, informazioni supplementari sulla dimensione delle unità di dati, sul tipo di richiesta burst e sulle lunghezze delle richieste burst, in cui il procedimento comprende: - ricevere segnali di disponibilità di unità di dati indicativi della disponibilità di unità di dati dalla memoria (MC), - applicare (89) maschere di decrittazione calcolate a unità di dati crittate tra le unità di dati disponibili dalla memoria: - calcolando (62), in funzione di detti segnali di disponibilità di unità di dati e di dette informazioni supplementari, indirizzi di dati correnti (85) per dette unità di dati crittate, - selezionando (86, 88) le maschere di decrittazione applicate a dette unità di dati crittate in funzione degli indirizzi di dati correnti (85) delle stesse.
  8. 8. Procedimento secondo la rivendicazione 7, comprendente: - fornire in detti indirizzi di dati correnti (85) per dette unità di dati crittate, almeno un bit di controllo del cambiamento della maschera, e - cambiare (86) almeno una porzione delle maschere di decrittazione applicate a dette unità di dati crittate come risultato di cambiamenti del valore di detto almeno un bit di controllo del cambiamento della maschera.
  9. 9. Procedimento secondo la rivendicazione 8, comprendente: - calcolare (72) maschere di decrittazione per le unità di dati crittate fornendo in esse una pluralità di porzioni di maschere (84) applicabili a differenti unità di dati crittate, - fornire in detti indirizzi di dati correnti (85) per dette unità di dati crittate, un primo bit di controllo del cambiamento della maschera e un secondo bit di controllo del cambiamento della maschera, - cambiare (86) le maschere di decrittazione applicate a dette unità di dati crittate come risultato di cambiamenti del valore di detto primo bit di controllo del cambiamento della maschera, - cambiare (86) le porzioni di dette maschere di decrittazione applicate a dette unità di dati crittate come risultato di cambiamenti del valore di detto secondo bit di controllo del cambiamento della maschera.
  10. 10. Procedimento secondo una qualsiasi delle rivendicazioni precedenti, in cui dette richieste per unità di dati ricevute (32) sul bus AXI (10) trasmettono, insieme a detti rispettivi indirizzi di inizio dei dati e informazioni di sicurezza, informazioni supplementari sulla dimensione delle unità di dati, sul tipo di richiesta burst e sulle lunghezze delle richieste burst, in cui il procedimento comprende: - ricevere segnali di disponibilità di unità di dati indicativi della disponibilità di unità di dati dalla memoria (MC), - calcolare, in funzione di detti segnali di disponibilità di unità di dati e di dette informazioni supplementari, indirizzi di dati correnti (85) per dette unità di dati crittate, - in presenza di richieste burst ricevute sul bus AXI (10), calcolare (72) dette maschere di decrittazione in funzione di rispettivi indirizzi di inizio dei dati, del tipo di richiesta burst e delle informazioni sulle lunghezze delle richieste burst in esse, - in assenza di richieste burst ricevute sul bus AXI (10), calcolare (72) un insieme di maschere di decrittazione candidate applicabili a future richieste burst per unità di dati crittate in entrata in funzione di almeno uno tra l’indirizzo di inizio dei dati dell’ultima richiesta burst per unità di dati crittate ricevuta, l’indirizzo dell’unità di dati corrente calcolato per detta ultima richiesta burst per unità di dati crittate ricevuta, e il tipo di burst, e memorizzare (84) almeno una maschera di decrittazione tra detto insieme di maschere di decrittazione candidate.
  11. 11. Circuito, comprendente: - un nodo di ingresso (32) configurato per ricevere su un bus AXI (10) richieste di accesso a dati per unità di dati memorizzate in una memoria (MC), in cui il bus AXI (10) funziona in una modalità burst, in cui le richieste comprendono richieste burst per l’accesso a rispettivi insiemi di unità di dati memorizzate nella memoria (MC) che iniziano da rispettivi indirizzi di inizio dei dati, le richieste burst trasmettendo rispettivi indirizzi di inizio dei dati e informazioni di sicurezza che indicano se le unità di dati richieste nelle richieste burst sono unità di dati crittate o non crittate; - un blocco circuitale di lettura (34) accoppiato al nodo di ingresso (32), il blocco circuitale di lettura (34) configurato per leggere (34) gli indirizzi di inizio dei dati e le informazioni di sicurezza trasmessi dalle richieste burst, suddividendo con ciò le richieste burst ricevute, in funzione di detti indirizzi di inizio dei dati e di dette informazioni di sicurezza, in richieste burst per unità di dati crittate e in richieste burst per unità di dati non crittate, con sia le richieste burst per unità di dati crittate sia le richieste burst per unità di dati non crittate inoltrate verso la memoria (MC) e i rispettivi insiemi di unità di dati recuperate dalla memoria (MC) sul bus AXI (20); - circuiteria di elaborazione (60, 70, 80) configurata per applicare una elaborazione Advanced Encryption Standard, AES, alle richieste burst per unità di dati crittate secondo il procedimento di una qualsiasi delle rivendicazioni precedenti.
  12. 12. Dispositivo, comprendente: - una memoria (MC) per memorizzare in essa unità di dati, - un bus AXI configurato (10) per trasmettere richieste di accesso a dati per unità di dati memorizzate nella memoria (MC), in cui il bus AXI (10) è atto a funzionare in una modalità burst, in cui le richieste comprendono richieste burst per l’accesso a rispettivi insiemi di unità di dati memorizzate nella memoria (MC) che iniziano da rispettivi indirizzi di inizio dei dati, il bus AXI configurato (20) per trasmettere rispettivi insiemi di unità di dati recuperate dalla memoria (MC) come risultato di dette richieste di accesso a dati; - un circuito secondo la rivendicazione 11, il circuito avendo un nodo di ingresso (32) configurato per ricevere su un bus AXI (10) richieste di accesso a dati per unità di dati memorizzate in una memoria (MC), in cui il bus AXI (10) funziona in una modalità burst, in cui le richieste comprendono richieste burst per l’accesso a rispettivi insiemi di unità di dati memorizzate nella memoria (MC) che iniziano da rispettivi indirizzi di inizio dei dati, le richieste burst trasmettendo rispettivi indirizzi di inizio dei dati e informazioni di sicurezza che indicano se le unità di dati richieste nelle richieste burst sono unità di dati crittate o non crittate; il circuito accoppiato (32, 88) al bus AXI (10, 20) per ricevere da esso dette richieste burst e detti rispettivi insiemi di unità di dati recuperate dalla memoria (MC).
IT102018000003373A 2018-03-08 2018-03-08 Procedimento e circuito di decrittazione, dispositivo corrispondente IT201800003373A1 (it)

Priority Applications (5)

Application Number Priority Date Filing Date Title
IT102018000003373A IT201800003373A1 (it) 2018-03-08 2018-03-08 Procedimento e circuito di decrittazione, dispositivo corrispondente
EP19160360.4A EP3537330B1 (en) 2018-03-08 2019-03-01 A decryption method and circuit, corresponding device
CN201910173208.6A CN110245498B (zh) 2018-03-08 2019-03-07 解密方法和电路以及对应的设备
US16/296,009 US11042655B2 (en) 2018-03-08 2019-03-07 Decryption method and circuit, corresponding device
CN201920289802.7U CN209980248U (zh) 2018-03-08 2019-03-07 电路和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT102018000003373A IT201800003373A1 (it) 2018-03-08 2018-03-08 Procedimento e circuito di decrittazione, dispositivo corrispondente

Publications (1)

Publication Number Publication Date
IT201800003373A1 true IT201800003373A1 (it) 2019-09-08

Family

ID=62167836

Family Applications (1)

Application Number Title Priority Date Filing Date
IT102018000003373A IT201800003373A1 (it) 2018-03-08 2018-03-08 Procedimento e circuito di decrittazione, dispositivo corrispondente

Country Status (4)

Country Link
US (1) US11042655B2 (it)
EP (1) EP3537330B1 (it)
CN (2) CN110245498B (it)
IT (1) IT201800003373A1 (it)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11281807B2 (en) 2018-05-18 2022-03-22 Stmicroelectronics (Grenoble 2) Sas Processing system, related integrated circuit and method

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT201800003373A1 (it) * 2018-03-08 2019-09-08 St Microelectronics Srl Procedimento e circuito di decrittazione, dispositivo corrispondente
EP3582134B1 (en) * 2018-06-15 2021-02-24 STMicroelectronics Srl A cryptography method and circuit, corresponding device
JP2021043708A (ja) * 2019-09-11 2021-03-18 キオクシア株式会社 メモリシステム
CN110753320B (zh) * 2019-09-25 2022-11-01 株洲凯创技术有限公司 一种列车车载加密装置及列车车载加密机
IT202000009364A1 (it) * 2020-04-29 2021-10-29 St Microelectronics Srl Procedimento per accedere a una memoria e circuito corrispondente
CN112148659B (zh) * 2020-09-21 2022-02-01 牛芯半导体(深圳)有限公司 数据传输电路

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070050642A1 (en) * 2005-08-26 2007-03-01 International Business Machines Corporation Memory control unit with configurable memory encryption
US20160021401A1 (en) * 2014-07-16 2016-01-21 Crestron Electronics, Inc. Transmission of digital audio signals using an internet protocol
US20160364343A1 (en) * 2015-06-10 2016-12-15 Freescale Semiconductor, Inc. Systems and methods for data encryption

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7200144B2 (en) * 2001-10-18 2007-04-03 Qlogic, Corp. Router and methods using network addresses for virtualization
US7472285B2 (en) * 2003-06-25 2008-12-30 Intel Corporation Apparatus and method for memory encryption with reduced decryption latency
US8001374B2 (en) 2005-12-16 2011-08-16 Lsi Corporation Memory encryption for digital video
US7639712B2 (en) * 2006-01-06 2009-12-29 Fujitsu Limited Low-level media access layer processors with extension buses to high-level media access layers for network communications
JP4643479B2 (ja) * 2006-03-22 2011-03-02 株式会社東芝 アクセス制御装置、アクセス制御システム、プロセッサ、アクセス制御方法およびメモリアクセス制御方法
CN101118523B (zh) * 2006-08-01 2011-10-19 飞思卡尔半导体公司 存储器访问控制装置及其方法、存储器访问控制器及其方法
US8762609B1 (en) * 2010-11-03 2014-06-24 Pmc-Sierra Us, Inc. System and method for multiengine operation with super descriptor in SAS/SATA controller wherein portion of super-descriptor is executed without intervention of initiator
US8726037B2 (en) * 2011-09-27 2014-05-13 Atmel Corporation Encrypted memory access
US9418246B2 (en) * 2014-12-15 2016-08-16 Freescale Semiconductor, Inc. Decryption systems and related methods for on-the-fly decryption within integrated circuits
US9773432B2 (en) * 2015-06-27 2017-09-26 Intel Corporation Lightweight cryptographic engine
IT201800003373A1 (it) * 2018-03-08 2019-09-08 St Microelectronics Srl Procedimento e circuito di decrittazione, dispositivo corrispondente

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070050642A1 (en) * 2005-08-26 2007-03-01 International Business Machines Corporation Memory control unit with configurable memory encryption
US20160021401A1 (en) * 2014-07-16 2016-01-21 Crestron Electronics, Inc. Transmission of digital audio signals using an internet protocol
US20160364343A1 (en) * 2015-06-10 2016-12-15 Freescale Semiconductor, Inc. Systems and methods for data encryption

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11281807B2 (en) 2018-05-18 2022-03-22 Stmicroelectronics (Grenoble 2) Sas Processing system, related integrated circuit and method

Also Published As

Publication number Publication date
US11042655B2 (en) 2021-06-22
CN110245498B (zh) 2023-08-08
CN209980248U (zh) 2020-01-21
EP3537330B1 (en) 2021-09-29
EP3537330A1 (en) 2019-09-11
US20190278926A1 (en) 2019-09-12
CN110245498A (zh) 2019-09-17

Similar Documents

Publication Publication Date Title
IT201800003373A1 (it) Procedimento e circuito di decrittazione, dispositivo corrispondente
CN108702286B (zh) 抗功率侧信道攻击的高级加密标准加速器处理器
KR101821066B1 (ko) 보안 암호 해시 라운드 기능성을 제공하기 위한 명령어 및 로직
US6101255A (en) Programmable cryptographic processing system and method
US8831221B2 (en) Unified architecture for crypto functional units
JP6177355B2 (ja) 擬似乱数生成操作を実施するための命令
TWI531968B (zh) 加密方法、及具解密功能之微處理器與微處理器操作方法、與電腦程式產品
JP4684550B2 (ja) 多数の動作モードを支援する暗号化装置
US11456857B2 (en) Cryptography method and circuit, corresponding device
CN109656839B (zh) 用于访问经加密的数据的电子设备和对应的方法
CN112398656A (zh) 通过计算机总线的安全通信
US11121856B2 (en) Unified AES-SMS4—Camellia symmetric key block cipher acceleration
CN107133018B (zh) 执行groestl散列的指令
CN108228960B (zh) 用于熔丝验证的基于Simon的散列
JP2019207393A (ja) 高性能認証付き暗号に関するハードウェアアクセラレータ及び方法
US9544133B2 (en) On-the-fly key generation for encryption and decryption
CN105897406A (zh) 一种明密文等长的aes加解密的装置
TW201812637A (zh) 低成本之密碼加速器
TW201714114A (zh) 微處理器與其中安全執行指令的方法
EP3758276B1 (en) Data processing method, circuit, terminal device storage medium
CN110659505A (zh) 用于对机密数据和附加认证数据进行加密或解密的加速器
US9461816B2 (en) Methods, systems and apparatus to reduce processor demands during encryption
CN110071927B (zh) 一种信息加密方法、系统及相关组件
CN116134421A (zh) 向多瓦片处理系统流式传输数据
JP5353828B2 (ja) プロセッサ及びプロセッサシステム