Esiste un senso in cui è possibile definire la forza di un particolare algoritmo di crittografia¹: grosso modo, il punto di forza è il numero di tentativi che devono essere fatti per interrompere la crittografia. Più precisamente, la forza è la quantità di calcolo che deve essere fatto per trovare il segreto. Idealmente, la forza di un algoritmo è il numero di tentativi di forza bruta che devono essere fatti (pesati dalla complessità di ogni tentativo, o ridotti se qualche tipo di parallelizzazione consente più tentativi di condividere parte del lavoro); man mano che gli attacchi all'algoritmo migliorano, la forza effettiva diminuisce.
È importante rendersi conto che "un particolare algoritmo di crittografia" include la considerazione di una dimensione chiave specifica. Cioè, non stai proponendo RSA contro AES, ma RSA a 1024 bit (con una specifica modalità di riempimento) con AES-256 (con una modalità di concatenazione specifica, IV, ecc.). In questo senso, puoi chiedere: se ho una copia dei miei dati crittografata con l'algoritmo A con determinati valori dei parametri P e Q (in particolare la dimensione della chiave), e una copia crittografata con l'algoritmo B con i parametri P e R, quindi quale tra (A, Pval₁, Qval₁) e (B, Pval₂, Rval₂) è probabile che venga prima screpolato?
In pratica, molti protocolli implicano l'uso di più primitive crittografiche. Diversi primitivi hanno diversi possibili usi, e anche quando molti primitivi possono servire una determinata funzione, ce ne può essere uno più adatto di altri. Quando si sceglie una primitiva crittografica per un determinato scopo, il processo decisionale è simile al seguente:
- Quali algoritmi possono fare il lavoro? → Posso usare A o B o C.
- Quale forza ho bisogno? → Voglio 2 operazioni N , quindi ho bisogno della dimensione della chiave L A per la primitiva A, L B per la primitiva B, L C per la primitiva C.
- Dati i miei vincoli (velocità bruta, latenza, efficienza della memoria, ...), quali di questi (L A -bit A o L B -bit B o L < sub> C -bit C) è il migliore?
Ad esempio, supponiamo che il tuo requisito sia un protocollo per lo scambio di dati con una parte di cui non ti fidi. Quindi la crittografia simmetrica non può fare il lavoro da sola: hai bisogno di un modo per condividere la chiave. La crittografia asimmetrica come RSA può fare il lavoro, se le parti si scambiano le chiavi pubbliche in anticipo. (Questa non è l'unica possibilità, ma non entrerò nei dettagli qui.) Quindi puoi decidere su quale sia la lunghezza della chiave RSA che ha la giusta forza per la tua applicazione. Tuttavia RSA è lento e macchinoso (ad esempio non ci sono protocolli standard per applicare la crittografia RSA a uno stream, principalmente perché nessuno si è preoccupato perché sarebbe stato così lento). Molti protocolli comuni che coinvolgono la crittografia a chiave pubblica lo usano solo per scambiare un segreto a durata limitata: una chiave di sessione per un algoritmo di crittografia simmetrica. Questo è noto come crittografia ibrida . Di nuovo, si sceglie la lunghezza della chiave di sessione in base alla forza desiderata. In questo scenario, i due primitivi coinvolti tendono ad avere la stessa forza.
¹
La stessa nozione si applica ad altri usi della crittografia, come la firma o l'hashing.