Il motivo dell'uso dell'operazione XOR in algoritmi crittografici

9

Ho notato che alcuni algoritmi crittografici implicano l'uso dell'operazione XOR con la chiave (anche AES usa XOR per ricavare le chiavi rotonde). La mia domanda è perché specificamente XOR? Che ne dici di OR o NAND o di qualche altra operazione logica. Credo che ci sia una ragione dietro la scelta di XOR invece di altre operazioni logiche, ma io davvero non lo so.

Grazie

    
posta Michael 14.10.2016 - 01:59
fonte

1 risposta

8

XOR è un'operazione che può sempre essere invertita, tutte le informazioni vengono conservate. È così semplice. L'utilizzo di AND e OR può comportare la perdita di informazioni poiché non è possibile stabilire se alcuni bit fossero 1 o 0 negli operandi.

Giocando un po 'con il python repl, useremo 19 ( 10011 ) e 5 ( 101 ) poiché questi numeri sono buoni esempi.

Usando OR perdi le informazioni su quale degli operandi aveva un certo bit su:

>>> bin(19|5)
'0b10111'

Non è quello 19? Sì, questo è 19. Il numero risultante non può dirci che è stato creato con 5.

Usare AND è lo stesso:

>>> bin(19&5)
'0b1'

Questo è 1. Non c'è modo per noi di recuperare nè il numero (19 o 5) facilmente, abbiamo perso di nuovo le informazioni.

XOR è utile per gli strumenti di crittografia poiché non si perdono informazioni durante XORing:

>>> bin(19^5)
'0b10110'

Questo è 22. Apparentemente questo non ci dice molto, ma vedi questo:

>>> bin(22^5)
'0b10011'
>>> bin(22^19)
'0b101'

Puoi recuperare entrambi i numeri XORando il 22 con l'altro numero. Questa è una concezione molto primitiva di una chiave segreta. Supponendo che tu e qualcun altro possiate avere un enorme elenco di numeri molto grandi e casuali (entrambi avete lo stesso numero), potete semplicemente scambiare messaggi XOR e scambiarli in modo sicuro tra di voi. Finché voi ragazzi usate un numero diverso ogni volta che comunicate questo è un algoritmo sicuro. L'algoritmo è chiamato one time pad .

    
risposta data 14.10.2016 - 02:25
fonte

Leggi altre domande sui tag