# Cryptoprocessor

Il cryptoprocessor è un microprocessore progettato per gestire le chiavi di crittografia e dati in situazioni ad alto rischio. Il cryptoprocessor è nato perché convenzionalmente i sistemi operativi sono troppo pieni di bug e talvolta anche fisicamente inaffidabili con informazioni di alto valore. Un microprocessore normale è racchiuso all'interno di un ambiente resistente alle intrusioni, in modo che le informazioni riservate possano essere alterate o rilasciate attraverso un'interfaccia software strettamente definita da un set di transizioni. In combinazione con il controllo dell'accesso, l'insieme delle transizioni deve evitare l'abuso di informazioni sensibili. Tuttavia, come la funzionalità e la flessibilità del set di transizioni siano portati dai produttori e dai client ai massimi della complessità, ciò ha portato inevitabilmente a bug nel set di transizioni.

## Tour dell'interfaccia di un cryptoproccessor

L'interfaccia di un cryptoprocessor è un set di transizioni ossia un gruppo di comandi supportati da un processore che manipola e gestisce le informazioni sensibili, usualmente crittografati da chiavi. Gli utenti sono limitati al set di transizioni che riflettono l'esigenza di usare l'accesso al sistema di controllo. Il previsto input e output dei comandi in un set di transizioni sono descritti in termini di un type system, che descrive il contenuto di ogni tipo e viene assegnato per ogni input e output di comandi. Le chiavi vengono archiviate in una struttura gerarchica, in modo che grandi quantità di informazioni possano essere condivise in modo sicuro.

### Set di transizioni fondamentali

I comandi espressi dall'utente rappresentano il maggior carico di lavoro che un cryptoprocessor può svolgere. I comandi consentono ai dati di essere processati usando delle chiavi, i cui valori vengono mantenuti all'interno dell'ambiente di prova di manomissione, rimanendo sconosciuta all'utente. L'utente quindi è limitato nell'esecuzione a causa di queste chiavi online, dove controlli procedurali possono essere forzate. I comandi specifici dell'applicazione possono anche essere conosciuti, con manipolazioni di dati in input criptati che ritornano un codice criptato in output. Apposite Key Management offrono agli utenti la possibilità di riorganizzare la struttura fondamentale. Comandi di importazione ed esportazione consentono l'estrazione delle chiavi dalla struttura per la condivisione con altri processori o ambienti, e i comandi per creare chiavi possono essere disponibili per sostenere le politiche di controllo duale. Comandi d'amministratore sono altamente dipendenti sui dettagli di implementazione, in genere includono i comandi per la gestione delle chiavi di alto livello, particolarmente sensibili (con essi è possibile modificare i diritti d'accesso per gli altri utenti), e numeri Pin in output tipici dei sistemi finanziari.

### Controllo di accesso

Il controllo di accesso è necessario per garantire che solo gli utenti autorizzati abbiano accesso alle potenti operazioni che potrebbero essere utilizzate per estrarre le informazioni sensibili. Questi controlli possono essere utilizzati per imporre controlli procedurali come il controllo duale, o sistemi di condivisione per pervenire l'abuso delle operazioni più rischiose. I sistemi di controllo di accesso più semplici concedono speciale autorità a chi ha il primo utilizzo del processore e poi passare in modalità predefinita in cui non sono permessi privilegi speciali. Una persona autorizzata o gruppo caricherà le informazioni sensibili nel processore all'accensione, successivamente l'insieme delle transazioni non consente l'estrazione di queste informazioni ma soltanto la manipolazione dei dati durante l'utilizzo. Un'altra fase del controllo di accesso prevede l'autorizzazione mediante una o più Password, chiavi fisiche o Smart card. In circostanze dove ci sono più livelli di autorizzazione, l'esistenza di un "percorso attendibile" agli utenti, con l'emissione di comandi speciali diventa importante. Senza l'utilizzo di una sessione protetta o porta di accesso fisico, sarebbe facile per le persone non autorizzate inserire i comandi all'interno di questa sessione, per estrarre le informazioni sensibili sotto il naso dell'utente autorizzato.

### Sistemi a chiavi digitante

L'assegnazione sul tipo di chiavi sono necessari per il controllo di accesso. Questo perché molte transazioni hanno le stesse funzionalità di base e senza chiave da poter digitare un utente malintenzionato potrebbe ottenere il materiale in esecuzione, durante un'operazione in cui non è autorizzato, pur utilizzando un equivalente consenso alle transazioni. Un sistema ben protetto è progettato per evitare l'abuso delle similitudini tra le transazioni. Un esempio importante è la distinzione di tipo tra comunicazioni dati chiave e PIN di elaborazione nei sistemi finanziari. Codici PIN cliente vengono calcolati crittografando il numero di conto con una chiave di derivazione PIN, quindi i comandi utilizzati con questi tasti sono attentamente controllati. Tuttavia, qualsiasi utente con accesso alle operazioni di manipolazione dei dati potrebbe calcolare i numeri PIN dai conti: entrambi impiegano lo stesso DES (Data Encryption Standard) o Triple-DES (3DES) un algoritmo di crittografia per raggiungere il loro scopo. Prodotti finanziari di IBM utilizzano la comune architettura Cryptographic (CCA) un set di transazioni standardizzati. Il nome CCA per le informazioni sul tipo di una chiave è un vettore di controllo. I controlli ai vettori sono vincolati alle chiavi crittografate XORing, un controllo vettoriale che è utilizzato per l'autenticazione e include una copia non protetta di riferimento. Il controllo vettoriale è semplicemente un bitpattern scelto per indicare un tipo particolare. Se un utente malintenzionato ingenuo cambia il tipo di chiave assegnata, quando viene utilizzata la chiave, un'operazione di decrittografia del cryptoprocessor produce semplicemente un messaggio di errore a cui non è possibile rimediare.

## Attacchi al controllo

Questa sezione descrive i nuovi attacchi di nuova costruzione, alcuni intuitivamente pericolose di per sé, altri che combinati sanno trarre il massimo danno. Il set completo comprende applicazioni dalle tecniche esistenti in altri settori, per un utente intenzionato ad un attacco al sistema.

### Chiavi relative agli attacchi

Gli utenti possono normalmente selezionare chiavi di protezione necessari ad ottenere un comando in output che rispetti gli standard che ogni utente possiede. La flessibilità di un modello di sistema non fa altro che aumentare o diminuire il rischio di un'intrusione, tuttavia un sistema non è mai ben protetto per essere inattaccabile al 100%, infatti un sistema pur essendo progettato nei minimi dettagli può presentare in ogni momento falle che un utente malintenzionato a conoscenza di ciò può sfruttare. Un utente di questo genere prima cosa genera un gran numero di chiavi e poi si concentra all'obbiettivo da esaminare. Lo stesso vettore di prova deve essere codificato sotto ogni aspetto, e i risultati registrati. Ogni crittografia nella ricerca di brute force è poi confrontata contro tutte le versioni del modello codificato di prova. L'attacco al cuore del sistema è molto più efficiente per eseguire una cifratura unica e confrontare il risultato contro molte possibilità da quella che sarà chiamata a svolgere. Consentire a chiavi di trovarsi all'interno di una cryptoprocessor è pericoloso, perché provoca dipendenza tra le chiavi. Due chiavi possono essere considerati correlati se la differenza tra loro è conosciuta. Una volta che il set di chiavi contiene relative chiavi, la sicurezza di una chiave dipende dalla sicurezza di tutte le chiavi relative ad esso, così come il rilascio di una chiave potrebbe inavvertitamente compromettere le altre. Parziali rapporti tra le chiavi complicano ulteriormente la situazione perché la compromissione di una potrebbe indebolire il legame tra esse, esponendosi maggiormente ad un attacco di forza bruta. Chiavi con un rapporto dinamico può essere ancora più pericolosa, perché alcune architetture combinano le informazioni da scrivere direttamente nel bit della chiave. Le ambiguità in questi casi sono inevitabili: la combinazione di una chiave e un tipo potrebbe comportare problemi alla stessa chiave finale come la combinazione di un'altra chiave e un tipo. Consentire una differenza tra i tasti di scelta è cruciale per la sicurezza del set di transazione.

### Casting del tipo non autorizzato

La comunanza tra le operazioni rende l'integrità del tipo di sistema quasi altrettanto importante quanto l'accesso ai controlli sulle transazioni stesse. Una volta che i vincoli sui set di transazione sono rotti, l'abuso è facile. Certi tipi di cast non sono autorizzati, IBM descrive un metodo nel manuale per i loro 4758 CCA per convertire i principali tipi durante l'importazione e per consentire l'intera operabilità con i prodotti precedenti che hanno utilizzato un sistema di tipo più primitivo. Il manuale non fa menzione di come facilmente questa caratteristica potrebbe essere sfruttata. Se il casting di tipo è possibile, dovrebbe anche essere possibile regolare le fasi, come le funzioni di controllo di accesso. I Cryptoprocessors che non mantengono lo stato interno della loro struttura-chiave hanno difficoltà eliminando le chiavi. Una volta che una versione criptata di una chiave ha lasciato il cryptoprocessor, non si può impedire a un utente malintenzionato di memorizzare la sua copia per più tardi introdursi nel sistema. Così, ogni volta che questa chiave viene sottoposto ad un centro autorizzato di cast tipo, rimane un membro del vecchio tipo, nonché l'adozione del nuovo tipo. Una chiave con l'adesione di diversi tipi consente quindi il trapianto di parti della vecchia gerarchia tra i vecchi e i nuovi. La soppressione può essere effettuata cambiando le chiavi master al vertice della gerarchia, che è radicale e costosa.
Le chiavi di crittografia sono suddivise in parti distinte, quanto la lunghezza del blocco dell'algoritmo di loro protezione è più corta rispetto alla lunghezza della chiave. 3DES è una chiave di 112 bit composto da due singoli parti da 56 bit ciascuna. Quando l'associazione tra la metà delle chiavi non viene tenuta, la sicurezza della chiave rimane paralizzata. Un certo numero di cryptoprocessors può consentire al malintenzionato di manipolare i tasti reali semplicemente manipolando le loro versioni criptate nella direzione desiderata. La metà stessa sconosciuta potrebbe essere sostituita in molte chiavi diverse, creando un insieme correlato di chiave. La crittografia 3DES è costituito da una cifratura DES che utilizza una chiave, una decifrazione utilizzando una seconda chiave, e un'altra con la crittografia della prima chiave. Se le due metà della chiave sono gli stessi, la chiave si comporta come un singolo pezzo della chiave. Anche manipolazione di metà chiave sconosciuta può produrre un 3DES chiave che funziona esattamente come una chiave DES unico.

## Attacchi contro la NSM (A Visa Security Module Clone)

La Visa Security Module (VSM) è un cryptoprocessor progettato nei primi anni ottanta per proteggere i numeri PIN trasmessi su banca privata ATM, e sul sistema di collegamenti bancari sostenuti da VISA, la NSM invece è un software clone compatibile. VSM ha due stati di autorizzazione (utente e autorizzati) attivata utilizzando password. La NSM migliora su questo, dividendo lo stato autorizzato in due stadi: Supervisore e amministratore, selezionati da due interruttori a chiave sulla carcassa. Lo stato utente consente di accedere alle operazioni per verificare PIN clienti e tradurre le chiavi di crittografia per l'invio di richieste da e verso altre banche in rete. Lo stato utente contiene anche le operazioni per consentire la generazione e/o di aggiornamento per le chiavi di sessione. L'autorità di vigilanza è stato attivato solo su particolari controlli procedurali e consente operazioni per l'estrazione dei numeri PIN ad una stampante collegata a una porta dedicata sul cryptoprocessor. L'autorizzazione di 'amministratore' permette la generazione di chiavi master di alto livello ma è raramente utilizzato. Esso riconosce nove tipi distinti in totale: al vertice della gerarchia ci sono cinque 3DES Master Keys, memorizzata in registri all'interno del cryptoprocessor. Questi proteggono i cinque tipi fondamentali, e tutti gli altri tipi sono dedotti implicitamente dalla posizione di una chiave all'interno della gerarchia. A parte il 3DES chiavi master, tutti gli altri tasti sono standard DES, e quindi devono essere cambiati regolarmente. Le chiavi di derivazione PIN sono un'eccezione alle variazioni regolari, ma godono di una protezione aggiuntiva da misure volte a garantire che un noto testo cifrato, sia disponibile a un utente malintenzionato. Terminal Master Keys (TMKs) sono copie di quelli usati in ATM, a disposizione della VSM in modo che possa preparare scorciatoie da tastiera che permette l'ATM di verificare i PIN stessi. TMKs e Chiavi PIN occupano lo stesso tipo nel VSM, anche se sono concettualmente diversi. La zona di controllo Master Keys (ZCMKs) sono dei reparti in cui delle chiavi possono essere condivise con altre reti bancarie, utilizzato per proteggere lo scambio di chiavi di lavoro. I tasti Terminal Communications (TC) sono per proteggere le informazioni di controllo che vanno presso gli sportelli automatici.

## Attacchi contro la IBM 4758 CCA

Il Common Cryptographic Architecture (CCA) è un'operazione standardizzata, attuata dalla maggior parte dei prodotti IBM per la sicurezza finanziaria. Il 4758 è un PC con processore crittografico che implementa il CCA. Il controllo del set operazione è abbastanza flessibile: ruoli base e controlli d'accesso sono disponibili, e gli utenti comunicano attraverso percorsi protetti di fiducia con sessione di chiavi 3DES. L'operazione è ampia e complessa, con tutte le tipiche operazioni descritte nella sezione. La memorizzazione nelle architetture CCA, sono quasi tutte al di fuori del cryptoprocessor, con una singola chiave master da 168 bit alla radice della sua gerarchia di chiavi. Un controllo vettore è sinonimo di un tipo, ed è legato alle chiavi criptate da XOR, il vettore di controllo con la chiave utilizzata per cifrare, e anche una non protetta copia per riferimento.

### 4758 CCA Importazione di chiavi d'attacco

Uno degli attacchi più semplici sui 4758 è quello di eseguire un cast di tipo non autorizzato, utilizzando un metodo di fusione di tipo. Un tipico caso può essere quello di importare una chiave PIN di derivazione come dati fondamentali, i comandi potrebbero essere utilizzati per calcolare i numeri PIN, o per importare una chiave di dati al fine di consentire le intercettazioni sulle trasmissioni future. Il Key-Import è un comando che richiede il permesso di importazione e il cifrato chiave da importare. L'attaccante deve avere la necessaria autorizzazione nella sua lista di controllo degli accessi alle importazioni per il tipo di destinazione, ma la chiave originale può avere qualsiasi tipo. Tuttavia, con questo attacco, tutte le informazioni condivise da un altro cryptoprocessor si presta ad abusi. Cambiamenti più sottili di tipo sono degni di menzione, come ad esempio digitando nuovamente la metà destra di una chiave 3DES come una metà sinistra. Un attacco di successo richiede l'elusione dei controlli procedurali della banca, l'attaccante ha la capacità di interferire con il suo ruolo chiave. Scopo di IBM è di adottare misure per impedire a un utente malintenzionato di ottenere le chiavi necessarie connesse. La configurazione ottimale del sistema di controllo di accesso può effettivamente evitare l'attacco, ma spetta alle banche di avere stretti controlli procedurali. Una soluzione a lungo termine è quello di cambiare il vettore di controllo in modo tale che la differenza necessaria tra chiavi per il cambiamento tra i tipi, non può essere calcolato e le loro informazioni di tipo non possono essere non associati.