Alcuni semplici esercizi matematici possono fornirti una risposta.
Diciamo che hai una sequenza di N bit. p(n)
può essere la probabilità che il numero di bit n
tra N
abbia valore 1. Quindi ovviamente 1-p(n)
è una probabilità che sia uno 0.
Ora facciamo un XOR della precedente sequenza di N bit con una sequenza della stessa lunghezza casuale. Per questa seconda sequenza, p'(n) = 0.5
in quanto vi è uguale probabilità di avere un 0
o un 1
.
Per calcolare il p''(n)
probabilmente perché il risultato sia un bit al valore uno, dobbiamo cercare i casi in cui il risultato è 1.
Ci sono due casi:
Il bit - della prima sequenza è 1 (probabilità
p(n)
) e il bit della seconda sequenza è 0 (probabilità 1-p'(n)
)
- Il bit OR della prima sequenza è 0 (probabilità
1-p(n)
) e il bit della seconda sequenza è 1 (probabilità p'(n)
)
Quindi la probabilità p''(n)
che il bit risultante alla posizione n
ha valore 1 è
p(n) × (1-p'(n)) + (1-p(n)) × p'(n)
Ma dal momento che p'(n) = 0.5 = 1-p'(n)
(abbiamo detto che è casuale), la formula di cui sopra si semplifica facilmente:
-
p''(n) = p(n) × (1 - p'(n)) + (1 - p(n)) × p'(n)
-
p''(n) = p(n) × 0.5 + (1 - p(n)) × 0.5
-
p''(n) = p(n) × 0.5 + 0.5 - 0.5 × p(n)
-
p''(n) = 0.5
La stringa risultante è casuale, non appena uno dei due XORed è casuale.
Questa è la proprietà principale dell'operazione XOR, proveniente dalla sua tabella logica, che spiega il motivo per cui la crittografia perfetta si ottiene con XORing qualcosa con una stringa casuale in quanto il risultato è casuale e quindi può essere decodificato in modo uguale a qualsiasi valore nel completo spazio di valori.
E ovviamente non è pratico da usare perché richiede una sequenza casuale della stessa lunghezza di quella che deve essere crittografata, mai da riutilizzare e da condividere tra il mittente e il destinatario.