I dati non andrebbero persi quando si mappano i valori a 6 bit su valori a 4 bit nelle S-Box di DES? In tal caso, come possiamo invertirlo in modo che appaia l'output corretto?
I dati non andrebbero persi quando si mappano i valori a 6 bit su valori a 4 bit nelle S-Box di DES? In tal caso, come possiamo invertirlo in modo che appaia l'output corretto?
Risposte:
DES è una cifra basata su Feistel . In tali cifre, la funzione non deve essere invertibile. Ecco il motivo:
In ogni round, viene applicata la seguente operazione:
Per
La decrittografia viene eseguita come segue:
Come puoi vedere, la decrittazione non richiede che sia invertibile. (Dal momento che la decrittazione non ha bisogno di calcolare F - 1. )
Senza entrare in tutti i mumbo-jumbo matematici su Feistel (che non capisco ancora al 100%), se guardi questa immagine da Wikipedia:
Puoi vedere che sebbene le 8 s-box stiano effettivamente comprimendo 48 bit fino a 32, solo 32 bit di entropia provengono dal testo in chiaro , quindi puoi ottenere gli altri 16 bit dalla chiave durante la decodifica, che è la magia eseguita da funzioni Feistel menzionate in precedenza.