Come viene verificato un algoritmo di cifratura?

0

Ho sempre pensato a come vengono verificati i cyphers simmetrici. Diciamo che vorrei inventare un nuovo cifrario. (In realtà non lo faccio :-)) Come dovrei razionalizzare la sua sicurezza al pubblico? Per quanto ho visto articoli sui cyphers e sulla loro sicurezza, non ho mai visto alcuna prova matematica reale sulla sua sicurezza. Ho appena visto un tipo di ragionamento, non reali prove matematiche. Come dimostreresti che un cifrario simmetrico è sicuro? Non ho idea ... Pensarci mi sta avvicinando a P! = NP come domande.

Lo vedo così, per essere in grado di inventare una nuova cifra, tu ...

  1. deve essere una persona ben istruita e conosciuta per convincere gli altri a solo ascoltarti
  2. se soddisfi (1), le altre persone di tuo interesse studieranno il tuo algoritmo, controllando se uno qualsiasi dei metodi noti sarebbe applicabile contro la sua sicurezza.
  3. si dovrebbe discutere della cifratura quanto sia resistente contro quei metodi comuni. Probabilmente tu e la gente di forma (2) lo farebbero.
  4. la cifratura deve essere adatta per le CPU, deve essere veloce e facile da calcolare, facile da implementare anche a livello di CPU e diverse piattaforme
  5. in qualche modo, la cifratura deve mostrare che non ha backdoor intenzionali. Ad esempio, gli array costanti (S-Box) dovrebbero essere una serie numerica comune ben nota.

Dal mio punto di vista, la crittografia simmetrica è molto meno matematica allora la gente pensa che sia. Non si tratta più dell'immaginazione come mescolare i bit e confondere i dati in modo efficiente mentre si usano le piccole istruzioni della CPU possibili. La verifica riguarda più una discussione su una vera matematica.

Sono ingenuo?

grazie

    
posta smrt28 26.09.2014 - 21:01
fonte

2 risposte

2

Non ci sono prove matematiche che possano effettivamente esistere sistemi di crittografia sicuri, per non parlare del fatto che qualsiasi candidato specifico è sicuro. Nella migliore delle ipotesi, è possibile dimostrare che l'algoritmo di crittografia alcuni è sicuro (per alcune nozioni di sicurezza) a patto che alcuni problemi matematici restino intrattabili con le conoscenze esistenti. Per esempio. il sistema crittografico Rabin può essere provato (con alcune avvertenze che sono un po 'troppo lunghe per essere spiegato) per essere sicuro se non è possibile calcolare un dato intero grande nei suoi fattori primi.

Gli algoritmi di crittografia simmetrica (come AES o 3DES) di solito non vantano nemmeno quel tipo di prova.

In pratica, lo "gold standard" per l'algoritmo crittografico è sopravvivenza . Per valutare la sicurezza di alcuni algoritmi crittografici, la procedura è la seguente:

  1. Pubblicare l'algoritmo con una specifica completa non ambigua, insieme a un'implementazione di riferimento e alcuni vettori di test (no, l'implementazione di riferimento è non la specifica, è un'altra cosa).

  2. Lascia che il design cucini sotto lo sguardo infuocato di molti altri crittografi per alcuni anni.

  3. Se nessuno di loro ha trovato qualcosa di negativo da dire sull'algoritmo dopo quel tempo, allora l'algoritmo risultante è "probabilmente abbastanza buono".

Il punto cruciale è che devi attirare l'interesse collettivo di molti ricercatori per molto tempo, il che non è un compito facile. Alcuni ingredienti chiave includono quanto segue:

  • Assicurati di pubblicare il tuo algoritmo con la massima chiarezza e di utilizzare la terminologia accettata dai crittografi. Non farli cacciare oche selvatiche; non lo faranno. Vedi (per esempio) il portfolio eSTREAM per esempi su come è fatto. (In particolare, evita di usare la parola "cypher", che ti identifica come "qualcuno che ha guardato il film Matrix troppe volte" invece di "qualcuno che conosce davvero un po 'di crittografia.)

  • L'algoritmo dovrebbe essere interessante in qualche modo; ad esempio, potrebbe essere sostanzialmente più veloce rispetto alle alternative esistenti (vedi di nuovo eSTREAM per ottenere informazioni su cosa significa "veloce" per i crittografi).

  • Non brevettare. Per i crittografi, i brevetti significano che o non saranno in grado di pubblicare i loro risultati, o che il detentore del brevetto (tu) guadagnerà con i loro sforzi, o entrambi. I brevetti significano anche che nessuno utilizzerà effettivamente il tuo algoritmo, poiché esistono alternative non brevettate e sono, per definizione, più economiche.

Un livello elevato di scrutinio tra pari viene normalmente raggiunto nell'ambito di concorsi dove alcune organizzazioni si prendono il disturbo di formalizzare i requisiti, raccogliere candidati e organizzare riunioni e conferenze regolari. Il NIST ha fatto proprio questo quando volevano un nuovo algoritmo di crittografia simmetrica: era il concorso AES .

Se lavori fuori da una competizione del genere e il tuo algoritmo non è tale interessante, puoi comunque recuperarlo utilizzandolo per proteggere i dati preziosi. Ad esempio, convincere un'emittente TV satellitare a fare affidamento sul proprio algoritmo. Quindi alcuni crittografi potrebbero trovarlo divertente scoppiarlo in mille pezzi, solo per dimostrarti che le cose non devono essere fatte in quel modo .

    
risposta data 26.09.2014 - 21:22
fonte
2

Esistono diversi approcci a questo problema.

Prova formale : pochissimi sistemi crittografici sono stati formalmente dimostrati sicuri. Tuttavia, due esempi degni di nota che sono stati formalmente dimostrati sicuri sono i codici di autenticazione one-time-pad e di messaggi basati su famiglie di funzioni hash quasi strongmente universali.

Entrambi sono poco pratici per la maggior parte dei casi di utilizzo a causa del consumo di bit chiave ogni volta che vengono utilizzati. Ma in alcune impostazioni limitate potrebbero essere utilizzabili.

Presupposti fisici : i sistemi crittografici basati su canali rumorosi o la fisica quantistica si dimostrano sicuri in base a determinati presupposti relativi alla fisica.

Presupposti matematici standard : molti sistemi crittografici si sono dimostrati sicuri sulla base di alcune ipotesi standard sull'intrattabilità di determinati problemi matematici. Gli esempi includono la fattorizzazione, il logaritmo discreto, l'assunzione di RSA.

Primitive standard : i cifrari a blocchi e gli hash crittografici sono due classi di primitive standard. Un sacco di costruzioni che combinano queste due possono essere dimostrate sicure nel presupposto che i primitivi siano sicuri. Se un primitivo si rompe, puoi sostituirlo con un altro primitivo della stessa classe. Ad esempio puoi passare da MD5 a SHA2 e continuare a utilizzare le stesse costruzioni.

Sicurezza contro attacchi noti : quando progetti una nuova costruzione puoi dimostrare che è sicuro contro i metodi di attacco che hanno rotto la vecchia costruzione che vuoi sostituire.

Non riescono a romperlo : più esperti di crittografia riesci a provare a rompere una costruzione e, in caso contrario, maggiore è la sicurezza che puoi ottenere con la costruzione effettivamente protetta.

Combinazioni di quanto sopra : ad esempio la crittografia quantistica combina le due costruzioni provatamente sicure che ho menzionato con presupposti fisici per produrre un sistema completo, il che è sicuro assumendo che la nostra comprensione della fisica quantistica sia corretta. Le prove di sicurezza non sono tuttavia una garanzia contro i difetti di implementazione se ciò che implementa è diverso da quello che hai dimostrato di essere sicuro.

Le ipotesi matematiche standard e le primitive standard sono tutte soggette a prove contro attacchi noti e tentativi falliti di romperle. Sono disponibili molte strutture utili se si dispone di un codice di blocco sicuro. Così molti esperti stanno cercando di infrangere AES per farci sapere se AES può essere considerato un codice a blocchi sicuro. E quando AES è stato introdotto per la prima volta, è stata analizzata la sua sicurezza contro i metodi di attacco conosciuti.

    
risposta data 26.09.2014 - 21:49
fonte

Leggi altre domande sui tag