È un cifrario di sostituzione o un codice di flusso o entrambi?
Non è un codice sostitutivo. Schneier lo classifica come una cifratura di flusso perché converte il testo in chiaro in testo cifrato un bit o un byte alla volta, generalmente tramite XORing il testo in chiaro con un "keystream".
Nella maggior parte dei codici di flusso il keystream è solo pseudo-casuale, ma in un classico "one-time pad" il keytream è del tutto casuale. Può essere come una nuova chiave per ogni messaggio, uguale in lunghezza al testo in chiaro, che in genere è combinato con il testo in chiaro tramite XOR, quindi è facile ottenere il testo in chiaro dal testo cifrato con un altro XOR. Il trucco è quello di ottenere il pad stesso - una buona qualità del materiale di codifica casuale - fino all'altra estremità del canale di comunicazione, fuori banda ....
@nealmcb è corretto che un one-time pad (OTP) è un codice di streaming. Tuttavia, è non corretto che la caratteristica che definisce è la qualità della casualità. Ciò che definisce un OTP è:
Come per ogni altro codice decente, la qualità del tuo materiale chiave è fondamentale. Tuttavia, può implementare un OTP con numeri non molto casuali - riduce solo la sicurezza della chiave.
In base alla discussione di seguito, i chiarimenti sono in ordine.
Un algoritmo crittografico è, a rigor di termini, semplicemente la definizione matematica di un insieme di funzioni crittografiche (crittografia, decrittografia e possibilmente firma). La definizione dell'algoritmo può fornire alcuni vincoli, comprese le lunghezze chiave ammissibili.
Ma scegliere un algoritmo è solo una parte della creazione di un criptosistema sicuro. Gli altri sono:
Per avere un crittosistema basato su AES sicuro, è necessario avere una buona implementazione di esso e una buona gestione delle chiavi.
Per avere un crittosistema OTP sicuro, è necessario disporre di chiavi sufficientemente casuali, assicurarsi che vengano utilizzate una sola volta e che dispongano di un sistema di distribuzione sicuro.
In entrambi i casi, una cattiva gestione delle chiavi non significa che non stai utilizzando l'algoritmo specificato.
Leggi altre domande sui tag cryptography encryption