
CRITTOGRAFIA VISUALE APPLICATA AI SEGNALI DIGITALI
ESPANSIONE
In questo capitolo parleremo dell'ultimo algoritmo crittografico, ovvero l'espansione, basato sulla conversione di dati binari in BASE64.

L'algoritmo causa un aumento delle dimensioni dei dati del 33%, poichè ogni gruppo di 3 byte viene convertito in uno da 4.
Esempio di conversione
Dai 3 byte che contengono i valori ABC, partendo dalla loro rappresentazione binaria, applichiamo l'algoritmo:

Quindi, la sequenza di valori ABC viene converitita nella sequenza QUJD.
Nel caso in cui i bit non siano multipli di 6, vengono aggiunti da 0 a 2 simboli '=' (padding character), sufficienti a raggiungere un multiplo di 4 simboli: ciascun padding character indica, pertanto, l'aggiunta di una coppia di bit nulli.
Quindi, preso un singolo byte di valore A, esso viene convertito nella sequenza QQ==, il singolo valore B viene convertito in Qg==, mentre la sequenza AB diventa QUI=.
Il padding non è comunque indispensabile per la codifica, infatti, alcune implementazioni (come il caso in questione) non lo utilizzano.
L'algoritmo crittografico
L'algoritmo di codifica dell'espansione consiste in una conversione in BASE64 dell'immagine binaria in chiaro, di una sequenza casuale assegnata dal server ad ogni apertura di sessione e della chiave assegnata insieme ad essa, il tutto combinato sempre tramite operazione di XOR secondo la formula:
CRY ≡ (SEQ64 ⊕ IMG64) ⊕ KEY64

La decodifica, di conseguenza, avviene secondo la formula inversa:
IMG64 ≡ (CRY ⊕ KEY64) ⊕ SEQ64
e si conclude con la riconversione dell'immagine risultante in binario.

Da notare che, per quanto riguarda la codifica, la conversione della sequenza e della chiave avvengono solo all'inizio della sessione, vale a dire una volta che sono state ricevute dal partecipante.
Needham-Schroder
Il protocollo de Needham-Schroder, con l'algoritmo dell'espansione, diventa così:
