Quali sono le variabili di AES?

10

AES è una routine di crittografia standard che può essere utilizzata in modo coerente in più lingue, assumendo che tutte le variabili corrispondano. La mia domanda è, quali sono le variabili. Sono a conoscenza del seguente

  • Variant (è questo AES-256, o semplicemente AES-128)

  • Dati da crittografare

  • Chiave (128 bit è comune)

  • Inizializzazione vettoriale - ora cos'è questo? Sono anche 128 bit predeterminati?

    Capisco dalla lettura di Wikipedia, che l'IV è usato per impedire che due identici blocchi a 16 bit nel flusso globale siano identici dopo la crittografia, in quanto ciò renderebbe i dati più supponibili.

  • C'è anche una modalità?

    Immagino che questo sarà imbottito / in streaming, rispetto alla lunghezza richiesta di 128 bit .. ma quante modalità ci sono o è diversa?

Scusa se ho sbagliato un po 'di questo, ma ho confuso, e vorrei un elenco chiaro delle variabili. Penso di averli tutti, ma non sono sicuro se li ho presi bene.

    
posta George Bailey 06.06.2012 - 20:52
fonte

2 risposte

11

Il codice AES ha un solo parametro: il tasto . Indirettamente, anche la variante AES è definita. Hai AES-128 per le chiavi da 16 byte, AES-192 per le chiavi da 24 byte e AES-256 per le chiavi da 32 byte.

Non considero i dati di input come parametri.

Ortogonale a ciò che hai la modalità di concatenamento , che è il modo in cui riesci a criptare / decifrare pezzi di dati che non corrispondono alla dimensione del blocco del codice. Per esempio ECB, CBC, CFB, ecc. Uso il termine generico cipher perché una modalità di concatenamento è applicabile a qualsiasi cifra di blocco , e AES sembra essere uno tra tanti ( es. hai TDES, Blowfish, ecc.), con una dimensione di blocco costante di 16 byte.

Alcune modalità di concatenazione (CBC, OFB, CFB, GCM) richiedono un vettore di inizializzazione , che molto spesso corrisponde alla dimensione del blocco del codice. In alcuni casi, IV viene chiamato nonce e potrebbe essere inferiore alla dimensione del blocco (ad esempio per CTR).

Infine, alcune modalità di concatenamento potrebbero richiedere che il testo in chiaro abbia un multiplo di lunghezza di un certo valore (ad esempio dimensione del blocco per CBC, dimensione del segmento per CFB). In questi casi, potresti dover definire anche lo specifico algoritmo di riempimento (ad esempio stile PKCS7).

    
risposta data 06.06.2012 - 23:19
fonte
10

Lo stesso AES ha tre varianti: AES-128, AES-192 e AES-256. Internamente, gli algoritmi hanno costruzioni molto simili. Il numero è la lunghezza della chiave (in bit), ovvero la lunghezza del segreto predisposto (AES è un codice segreto condiviso). Un numero più alto significa non solo una chiave più lunga, ma anche più lavoro svolto con la chiave e l'input per produrre l'output.

Ciascuno di questi tre algoritmi specifica due funzioni encrypt e decrypt ; entrambe le funzioni prendono come input un n valore -bit ( n = 128, 192 o 256) chiamato la chiave e un valore a 128 bit chiamato blocco di ingresso e producono come emette un valore a 128 bit chiamato blocco di uscita. Il blocco di input in encrypt è chiamato testo in chiaro e il blocco di output è chiamato testo cifrato; per decrypt , i ruoli sono invertiti.

encrypt(key, plaintext) = ciphertext
decrypt(key, ciphertext) = plaintext

AES è una cifra a blocchi . Specifica solo come crittografare o decodificare un blocco a 128 bit. Se i tuoi dati sono più corti o più lunghi di quello, hai bisogno di qualcosa di più sofisticato: devi avere un modalità di funzionamento , spesso chiamata modalità di concatenamento perché specifica come elaborare un blocco dopo l'altro. La scelta della modalità concatenamento è largamente indipendente dalla scelta dell'algoritmo di elaborazione dei blocchi.

Alcune modalità di concatenamento richiedono solo la chiave e l'input. Ad esempio, ECB , la modalità più semplice di tutte, dice solo di tagliare l'input in blocchi di la dimensione appropriata, applicare l'algoritmo di crittografia / decrittografia e incollare i blocchi di output insieme. Questa modalità ha molti difetti (ad esempio, puoi individuare le ripetizioni nell'input se sono allineate con un limite di blocco, puoi dire se due messaggi cifrati sono uguali perché hanno lo stesso testo cifrato).

Molte modalità di concatenamento richiedono un ulteriore input, in genere un blocco di dimensioni. Di solito è mescolato con il primo blocco di input in qualche modo, e chiamato un vettore di inizializzazione ( spesso abbreviato IV ). L'IV viene solitamente scelto in modo casuale; questo è un requisito per alcune modalità, mentre per gli altri è sufficiente non scegliere mai la stessa IV due volte per la stessa chiave (che assicura un sorteggio casuale). L'IV serve (almeno) a fare due cifrature dello stesso testo in chiaro con la stessa chiave distinta. Una modalità popolare che utilizza un IV casuale è CBC . Un'altra modalità popolare è CTR (contatore) ; il suo IV è più propriamente chiamato un nonce , perché non deve essere casuale, solo non ripetuto.

Spezzare l'input in blocchi funziona solo quando è un multiplo della dimensione del blocco. Altrimenti, il solito processo consiste nel separare il maggior numero possibile di blocchi all'inizio e applicare uno schema di riempimento fino all'ultimo blocco parziale. Anche se padding tende a implicare che alcuni bit vengono aggiunti per creare un blocco completo, il padding in modo sicuro non è così semplice: un blocco parziale B con qualche padding P i rischi aggiunti vengono confusi con un blocco completo che si trova BP . I buoni schemi di padding devono applicare un po 'di padding a tutti i messaggi, anche quelli che sono un numero esatto di blocchi. Alcune modalità di funzionamento impongono uno schema di riempimento particolare, mentre altre sono indipendenti dal padding. Le librerie crittografiche richiedono spesso che l'input per bloccare le funzioni di cifratura sia solo a blocchi completi, lasciando l'attività di riempimento al chiamante.

Ci sono modi che fanno qualcosa di diverso da un algoritmo di crittografia / decodifica con cifrari a blocchi. Modalità come CMAC creano un codice di autenticazione del messaggio , ovvero una firma basata su un segreto condiviso. Modalità come GCM eseguono sia la crittografia sia la firma (l'output di AES- n - GCM-encrypt (chiave, IV, tag, testo in chiaro) è sia un testo cifrato che un MAC).

    
risposta data 06.06.2012 - 23:55
fonte

Leggi altre domande sui tag