Cryptoprocessor: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m refusi
Riga 1:
Il '''cryptoprocessor''' è un [[microprocessore]] progettato per gestire le chiavi di crittografia e dati in situazioni ad alto rischio. Il '''cryptoprocessor''' è nato perchè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. IIl 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===
Riga 15 ⟶ 17:
==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.
Riga 20 ⟶ 23:
===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.
 
Riga 30 ⟶ 34:
Il '''Common Cryptographic Architecture (CCA)''' è un'operazione standardizzata, che è attuato 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.
 
==riferimentiCollegamenti esterni==
* [http://www.ibm.com/security/cryptocards/ IBMs homepage for its cryptoprocessors]
* [http://www.cl.cam.ac.uk/~rnc1/descrack/ Extracting a 3DES key from an IBM 4758]