"Sicurezza disponibile" significa che un sistema di sicurezza è stato matematicamente provato come sicuro secondo alcune ipotesi generalmente accettate. In quasi tutti i casi, questo assunto non è necessariamente conosciuto per essere vero, è solo molto più facile ragionare e generalmente ci si crede sia vero. Ci sono casi in cui le "assunzioni" sono gli assiomi della teoria dell'informazione, delle leggi della probabilità o di altre cose che sono considerate assolutamente indiscutibili (se le indebolite o le rimuovete, non state più lavorando nello stesso sistema matematico), ma esse 'insolito - normalmente, il presupposto è "Questo problema è difficile per un computer per risolvere rapidamente" o "Questo componente ha una tale proprietà". Ad esempio, l'assunto RSA è "dato ciphertext C
e public key (N,e)
, non puoi trovare efficientemente M
tale che M^e = C mod N
." Gli algoritmi basati su RSA tendono a usarlo come presupposto per la sicurezza.
La chiave è che dichiari esplicitamente tutte le tue ipotesi per lo schema; qualsiasi attacco allo schema deve essere un attacco a una delle ipotesi, che potrebbe accadere, ma è considerato improbabile. Significa anche che è più semplice cambiare specifiche primitive utilizzate nell'algoritmo se necessario. Ad esempio, se si utilizza una funzione di hash nello schema, la modifica della funzione di hash specifica normalmente invalida tutto ciò che si conosce della sicurezza dello schema (poiché la sicurezza potrebbe finire per basarsi su alcune proprietà molto particolari di una funzione hash specifica). Se invece provi che il tuo schema è sicuro quando la funzione hash è resistente agli attacchi di second preimage, e la tua funzione di hash di scelta risulta essere vulnerabile a loro, puoi semplicemente scambiare qualsiasi altra funzione di hash che è ancora resistente a loro - conosci esattamente quale proprietà deve avere la funzione hash, quindi non devi preoccuparti se la modifica avrà qualche effetto negativo a causa di altre differenze tra i due.
Se una prova di sicurezza è una riduzione di un altro problema, generalmente ha un formato simile a "Supponiamo che un utente malintenzionato possa fare questo tipo di compromesso generale in condizioni così ampie e così. per creare un algoritmo che viola la proprietà che stiamo riducendo a ". Per esempio, supponiamo di voler provare che sotto l'assunzione di RSA, e partendo dal presupposto che varie primitive in esso hanno certe proprietà, RSA-OAEP ha la proprietà IND-CPA (che dice che un utente malintenzionato ha la chiave pubblica RSA, e chi sa che un determinato testo cifrato è una crittografia di uno dei due possibili testi in chiaro, non può dire con certezza quale testo in chiaro è una crittografia di). Quello che facciamo è che abbiamo un algoritmo che può risolvere quel problema, e quindi usarlo per violare l'assunzione di RSA o l'assunzione di uno dei nostri primitivi. Questo ci dice che se l'assunzione di RSA vale e le proprietà delle nostre primitive crittografiche sono valide, il nostro sistema è sicuro contro quell'attacco.
In risposta alle modifiche: vari algoritmi basati sull'algoritmo di base RSA (cioè C=M^e mod N
) si sono dimostrati sicuri contro attacchi specifici basati sull'assunzione di RSA. L'assunto RSA stesso è non dimostrato di essere vero; come regola generale, è generalmente sicuro presumere che ogni dato problema non sia dimostrato essere difficile. Tuttavia, è generalmente ritenuto vero. Le prove di sicurezza sono cose molto specifiche; non esiste una cosa come essere generalmente "provati sicuri", solo dimostrati sicuri contro un tipo specifico di attacco. "RSA di libri di testo" (cioè RSA senza padding, senza crittografia ibrida, semplicemente prendendo testo in chiaro, tagliandolo in blocchi a seconda delle esigenze e crittografando) è banalmente sicuro contro il ripristino del testo normale totale sotto l'assunto RSA, ma in realtà è molto, molto debole contro altri tipi di attacchi, motivo per cui è usato raramente. Se non si è disposti ad assumere l'assunto RSA, praticamente nessuna delle prove di sicurezza relative a RSA ti convincerà di nulla, perché generalmente si basano su di esso. La caratteristica fondamentale della sicurezza dimostrabile è più che tu dai nomi espliciti alle tue ipotesi, e sei preciso su ciò che esattamente stai rivendicando (cioè gli specifici tipi di attacchi contro cui ti stai difendendo. "
Per dimensioni di chiavi di piccole dimensioni: in realtà non è affatto un problema di sicurezza dimostrabile. I tipi di ipotesi fatte in sicurezza tendono ad essere sulla falsariga di "questo problema diventa rapidamente quando le dimensioni di chiave e di dati aumentano ." Con chiavi brevi e dati lunghi, puoi sempre forza bruta.
Per lo schema "migliore": non esiste uno schema "migliore". Schemi diversi hanno proprietà diverse; non esiste il meglio universale.