A volte, sento i termini "lunghezza chiave" e "forza bit" usati in modo intercambiabile. Sono le stesse cose? O sono diversi?
Userei lunghezza del bit per la dimensione di qualcosa, come una chiave.
Userei la forza del bit come il logaritmo di base 2 del costo di un attacco. cioè costa circa 2 ^ n operazioni di base per rompere qualcosa.
Un attacco di forza bruta contro un bit chiave n che cerca semplicemente di indovinare la chiave costa in media 2 ^ (n-1) alla funzione di crittografia, che portare a questa convenzione di esprimere la forza di un algoritmo in bit.
Quindi potresti capire "n bit forza" come "La rottura di questa operazione equivale all'incirca alla rottura di un algoritmo di crittografia simmetrica con una chiave di bit n ."
Ma differiscono in altri casi. Alcuni esempi:
Sono piuttosto simili ma leggermente diversi. La lunghezza della chiave è semplicemente la lunghezza, in bit, della chiave utilizzata per le operazioni crittografiche. Se la chiave viene scelta in modo casuale e l'algoritmo non presenta alcuna vulnerabilità, la forza del bit è esattamente uguale alla lunghezza della chiave.
La forza del bit è una misura di quanto qualcosa sia resistente a indovinare (la quantità di entropia). Può essere applicato anche a cose come le password (che sono tecnicamente una chiave in quanto sbloccano le informazioni, ma sono molto diverse da qualcosa come una chiave di crittografia opportunamente utilizzata per la crittografia del flusso.)
Molte cose possono ridurre la forza effettiva del bit di una chiave. I problemi nei generatori di numeri casuali o attacchi di crittanalisi su un sistema di crittografia possono ridurre il numero di tentativi da eseguire per attaccare il sistema, riducendo la forza del bit o la forza della chiave al di sotto del numero di bit effettivamente utilizzati nella chiave.
Supponiamo ad esempio di avere una chiave lunga 64 bit. La lunghezza della chiave è di 64 bit perché è la lunghezza della chiave utilizzata su un flusso per codificarla. Diciamo, tuttavia, che capiamo che il primo byte della stringa è sempre lo stesso del primo byte della chiave, questo significherebbe che potremmo eliminare molte ipotesi per provare a indovinare la chiave. Anche se la crittografia funziona con 64 bit di chiave, abbiamo solo bisogno di indovinare 56 bit della chiave perché ne conosciamo 8, quindi la forza del bit è di soli 56 bit.
Allo stesso modo, se prendiamo l'esempio di una password, una password può essere lunga 8 caratteri e quindi richiedere 8 byte (64 bit) da memorizzare, ma se la password può essere solo numeri e lettere maiuscole e minuscole, allora molti i valori non possono essere utilizzati, quindi la forza del bit è molto inferiore rispetto a se la password fosse costituita da bit interamente casuali piuttosto che da un numero limitato di caratteri.
Quando la forza del bit è k , ciò significa: "l'algoritmo mantiene la sua posizione contro gli attaccanti che non possono calcolare almeno 2 k-1 operazioni elementari ".
Quando la lunghezza del bit è k , significa: "la chiave, o almeno il componente principale della chiave, può essere rappresentata come una sequenza di k bit ".
Ricerca esauriente riguarda il provare tutte le chiavi possibili finché non si lavora. Questo è il meno sottile di tutti gli attacchi. In media, se la lunghezza del bit è k , allora occorrono 2 k-1 per trovare la chiave effettiva. Pertanto, la lunghezza del bit e la forza del bit sono uguali quando l'algoritmo è la ricerca che la ricerca esaustiva, sebbene sia il più stupido degli attacchi, è anche la migliore possibile (o almeno la più conosciuta).
Quella ricerca esaustiva è il miglior attacco possibile è la situazione normale per forti algoritmi "simmetrici" (crittografia simmetrica come AES, algoritmo MAC come HMAC ...). AES-128 utilizza una chiave a 128 bit e dovrebbe offrire una forza di 128 bit. D'altra parte, per algoritmi asimmetrici come RSA o ECDSA, le chiavi non sono semplici sequenze di bit; hanno molte strutture matematiche e tale struttura può essere sfruttata per romperle più velocemente. Ad esempio, il componente principale di una chiave pubblica RSA è un grande numero chiamato modulo e la fattorizzazione del modulo nei suoi fattori primi è sufficiente per recuperare la chiave privata. La fattorizzazione dei numeri interi può essere eseguita in modo molto più efficiente rispetto alla semplice enumerazione delle possibili chiavi private!
RSA è un buon esempio. Un tasto "RSA-2048" è una chiave RSA tale che il modulo è un numero compreso tra 2 2047 e 2 2048 . Il modulo, quando è codificato in binario, prende quindi 2048 bit: questa è la lunghezza del bit della chiave. Il factoring del modulo con gli algoritmi più noti richiederebbe circa 2 100 o operazioni così semplici, quindi la forza del bit è di circa 100 bit. La codifica della chiave pubblica completa in bit avrebbe bisogno di memorizzare non solo il modulo ma anche l'esponente pubblico, quindi avrà bisogno di un po 'più di 2048 bit (non molto di più, perché l'esponente pubblico è un numero intero breve ).
La conversione delle lunghezze di bit in bit-bit per algoritmi asimmetrici richiede di occuparsi di molti dettagli sottili e di fare previsioni sulla tecnologia futura, e talvolta richiede una vera e propria divinazione. Vedi questo sito per molti dati su questo argomento. Formalmente, dal punto di vista del NIST, una chiave RSA a 2048 bit è "all'altezza" di un algoritmo simmetrico con forza a 112 bit (che è, per inciso, ciò che 3DES è noto a fornire).
Leggi altre domande sui tag cryptography