Come si creerebbe un protocollo di crittografia debole ma sconosciuto?

87

Stavo leggendo questa interessante domanda:

È il mio sviluppatore home-brew password di sicurezza giusta o errata, e perché?

Mostra un debole algoritmo di home-brew sviluppato da "Dave", e le risposte spiegano perché questa è una cattiva idea. (In realtà algoritmo di hashing piuttosto che crittografia, ma la mia domanda si applica a entrambi.)

Ha senso per me che un algoritmo di home-brew è una pessima idea, ma c'è una cosa che non capisco.

Supponiamo che io sia un aggressore e mi trovo di fronte a un algoritmo di crittografia debole ma sconosciuto sviluppato da "Dave". Come potrei romperlo? Non saprei nemmeno da dove cominciare. Sarebbe una stringa di caratteri apparentemente priva di significato.

Ad esempio, dì che l'algoritmo di home-brew è simile a questo:

  • Utilizzare un algoritmo di crittografia noto e debole sui dati originali, quindi:
  • Esegui un bit per bit negativo su qualsiasi byte il cui numero di serie nel file abbia una somma di cifre ripetute che è primo. (O qualsiasi altra manipolazione matematica, questo è solo un esempio.)

Come si può hackerare un file prodotto da tale algoritmo senza conoscendolo in anticipo?

Modifica: Tutti, per favore, non cercare di convincermi di quanto sia difficile mantenere un algoritmo segreto. Si prega di rispondere a questa domanda partendo dal presupposto che l'algoritmo è tenuto completamente segreto, nonostante quanto sia difficile da ottenere nella vita reale.

Inoltre, supponi di non avere alcun accesso all'algoritmo, solo per i dati risultanti.

    
posta Ram Rachum 18.03.2013 - 16:03
fonte

8 risposte

62

Assume I'm an attacker, and I am faced with an weak-but-unknown encryption algorithm developed by "Dave". How would I crack it? I wouldn't even know where to begin. It would be a seemingly meaningless string of characters.

È corretto, non lo faresti. Ecco alcuni dati crittografati (4587556841584465455874588). Hai idea di cosa significhi? Assolutamente no.

Tuttavia, ti manca la fondamentale chiave fondamentale del pilastro centrale, fondamentale per l'universo che tiene insieme la crittografia. L'idea è semplice:

the key is everything

Questo è tutto. Questo è il bit che devi proteggere. Il pezzo che devi proteggere con la tua vita e spero che nessuno ti colpisca con un martello finché non dici loro di cosa si tratta.

Su questa base, devi presumere che il tuo algoritmo possa essere letto dall'attaccante. Loro sanno come funziona. Possono documentare il suo processo. Se ci sono dei punti deboli, li troveranno. E li sfrutteranno. Come quel papà arrabbiato della CIA di Taken.

Questo, si scopre, è meno di un'ipotesi e più del caso pratico in uso. Dave, il cryptographer della birra fatta in casa, vuole includere un algoritmo di crittografia nel suo programma. Decidendo di sfuggire a tutti i test e progetti che i crittografi hanno fatto per lui gratuitamente nel corso degli anni, scrive qualcosa che riguarda lo strano xor, compila il suo programma e lo dà volentieri agli amici.

Questo algoritmo è ora nelle loro mani. Game over.

Ora potresti chiedere "non posso semplicemente mantenere l'algoritmo segreto? Funzionerà, giusto?" Oh Dave, fermati. Nonono. Il problema con gli algoritmi segreti è che è molto più probabile che vengano rubati. Dopo tutto, la chiave è diversa per ogni utente (in realtà, questo non è un requisito, ma, assumiamo che sia per semplicità) ma l'algoritmo rimane invariato. Quindi è necessario che una delle tue implementazioni sia esposta a un utente malintenzionato ed è di nuovo in corso.

Modifica : Ok, in risposta alla domanda aggiornata dell'OP. Supponiamo per un momento che l'algoritmo sia totalmente sconosciuto. Ciascuno dei due partecipanti in una conversazione crittografata ha una perfetta sicurezza della loro implementazione algoritmica.

In questo caso, hai dati da analizzare. Potresti fare una delle seguenti azioni:

  • Analizza le lettere frequentemente conosciute . Questo è il modo in cui si rompe un tipico codice cesareo
  • Tentativo di indovinare la lunghezza della chiave. Con queste informazioni, puoi passare alla ricerca di blocchi di testo cifrato ripetuti che potrebbero corrispondere allo stesso testo in chiaro.
  • Tentativo indice di coincidenza e altre misure simili utilizzate per rompere il cifrario vigenere, dal momento che molti cifrari polialfabetici sono (probabilmente) solo varianti di questo.
  • Guarda i motivi. Qualsiasi modello potrebbe darti la chiave.
  • Cerca altri indizi. Le lunghezze corrispondono a una certa misura, sono per esempio multipli di un certo valore come un limite di byte e quindi sono (possibilmente) imbottiti?
  • Tenta di analizzare con una delle tecniche di crittanalisi a crittografia simmetrica . Questi si basano sulla conoscenza dell'algoritmo in molti casi, quindi potrebbe non essere applicabile qui.
  • Se ritieni che i dati in questione rappresentino uno scambio chiave, puoi provare una delle tante tecniche per rompere la chiave pubblica algoritmi .

Il fatto è che un breve frammento di dati da un algoritmo sconosciuto potrebbe essere indecifrabile. Tuttavia, questo non significa che dovresti fare affidamento su questo. Più dati possono essere recuperati da un crittanalista, più è probabile che interrompano l'algoritmo. Probabilmente non si conosce senza crittografia seria ciò che è il limite - ad esempio, è ragionevole supporre che si possa rafforzare la forza di un algoritmo di cage-key per le parole di tre lettere, poiché ce ne sono poche che abbiano senso.

Anche tu hai problemi di riutilizzo. Nella seconda guerra mondiale, Engima ha superato questo problema disponendo di impostazioni programmabili per il loro algoritmo segreto, ma anche questo era rotto.

C'è anche l'elemento umano della crittografia da considerare. Mi rendo conto che l'etichetta sulla latta dice "usa una volta, non digerire" ecc., Ma gli umani sono umani e probabilmente useranno il doppio, il triplo, ecc. Qualsiasi comportamento del genere è nelle mani del crittanalista.

    
risposta data 18.03.2013 - 16:31
fonte
51

Un algoritmo di "crittografia" sconosciuto è stato storicamente raggiunto almeno una volta. Sto parlando di script Minoan Linear B , un metodo di scrittura che è stato utilizzato a Creta intorno al 1300 aC. Il metodo è stato perso alcuni secoli dopo, con la morte di tutti i praticanti e il collasso generale della civiltà durante il cosiddetto Età scure greche . Quando gli archeologi hanno cominciato a setacciare la terra attorno a Knossos e in altri luoghi, alla fine del 19 ° secolo, tutto ciò che hanno ottenuto era un mucchio di compresse con segni sconosciuti, senza un indizio sul sistema di scrittura utilizzato per produrli.

La storia interessante qui è che Linear B era disfatto negli anni '50, usando il stessi strumenti di analisi che sono stati impiegati contro i sistemi di crittografia di quel tempo. In effetti, la scrittura era considerata come un "algoritmo di crittografia sconosciuto". Ha ceduto alle analisi statistiche, alle inferenze concatenate e ad alcune ipotesi sul testo in chiaro (in pratica, l'assunto che il linguaggio di base per una variante del greco). Questa è un'illustrazione classica e magistrale di come la crittanalisi funziona contro "cryptosystems manuali".

Naturalmente, supponendo che un algoritmo crittografico possa essere in uso e rimanere segreto, non è plausibile. Allo stesso modo, non esiste pirateria di videogiochi o contenuti multimediali. Il mondo reale ci ricorda implacabilmente che non è vero. L'unico modo conosciuto con cui un algoritmo può rimanere segreto è uccidere i suoi inventori e professionisti, distruggere il loro apparato e attendere alcuni secoli. Questo ha alcuni effetti collaterali scomodi.

E anche se, in una determinata istanza specifica, i dettagli su un algoritmo non hanno perso ancora , non c'è modo di quantificare quanto segreto è l'algoritmo, cioè quanto tempo ci vorrà per il reverse engineering, tangenti o furto salutare per ricostruire l'algoritmo. Questo è il motivo principale per cui i crittografi, circa 40 anni fa, hanno deciso che la chiave e l'algoritmo dovevano essere divisi, con la chiave segreta e l'algoritmo non segreto: puoi quantificare la segretezza di una chiave , non la segretezza di un algoritmo.

Questo ci dà un'idea della tua domanda specifica. Il tuo "algoritmo segreto" dipende dalla nozione di "manipolazione matematica". Quanti di questi sono? Potete stimare o descrivere l'insieme di "manipolazioni matematiche"? Scoprirai che un algoritmo di crittografia è di per sé una "manipolazione matematica", quindi la tua domanda è piuttosto mal definita.

    
risposta data 18.03.2013 - 18:30
fonte
32

Per attaccare un protocollo crittografico, hai i seguenti metodi di attacco

  • Testo in chiaro noto: cercando di trovare correlazioni tra il testo in chiaro che hai e il testo cifrato corrispondente.

  • testo in chiaro scelto: crittografia di testo in chiaro specifico e studio delle modifiche al testo cifrato mentre il testo in chiaro cambia.

  • Scelto testo cifrato: Decrittografia di testo cifrato specifico e studio delle modifiche al testo in chiaro e modifiche al testo cifrato.

  • Testo cipher noto: dove tutto quello che hai è il testo cifrato, sotto c'è un semplice esempio.

Molto tempo fa ho preso una lezione di crittografia, in una delle lezioni ci è stata insegnata la criptonalisi di codici di sostituzione . Non è così che vanno le cose ora, ma è qui che è iniziata la scienza della crittografia, ed è così che è iniziata la criptonalisi.

Diciamo che puoi attraversare questo testo cifrato.

Mx qeoiw wirwi xs qi xlex e lsqi-fvia epksvmxlq mw e zivc feh mhie, fyx xlivi'w sri xlmrk M'q rsx yrhivwxerhmrk.

Non conosci l'algoritmo, non conosci la chiave. Come dovresti iniziare?

  • Analizza la frequenza della lettera: la lunghezza totale è di 87 lettere. Vediamo che i è stato utilizzato 12 volte - > ~ 13%. Secondo articolo di Wikipedia sulla frequenza delle lettere , questa lettera è probabilmente e . Il nostro testo di crittografia è ora:

Mx qeoew werwe xs qe xlex e lsqe-fvea epksvmxlq mw e zevc feh mhee, fyx xleve'w sre xlmrk M'q rsx yrhivwxerhmrk.

  • Ora la seconda lettera più frequente è x è stata utilizzata 11 volte - > ~ 11%, quindi è probabile che sia t . Il nostro testo di crittografia è ora:

Mt qeoew werwe ts qe tlet e lsqe-fvea epksvmtlq mw e zevc feh mhee, fyt tleve'w sre tlmrk M'q rst yrhivwterhmrk.

  • Ora stiamo iniziando a vedere i modelli. Sostituendo i->e e x->t si suggerisce che la chiave potrebbe essere 4 . Proviamo:

It makes sense to me that a home-brew algorithm is a very bad idea, but there's one thing I'm not understanding.

Ahaa! Abbiamo capito! Ora hai fatto la tua prima criptonalisi. Questo è un modo in cui il testo cifrato potrebbe essere analizzato.

    
risposta data 18.03.2013 - 17:32
fonte
15

Penso che nessuno l'abbia detto ad alta voce qui, quindi lo farò.

Se a un crittografo viene dato un solo testo cifrato senza alcun mezzo per ottenere di più, il testo cifrato è breve e non viene fornita alcuna conoscenza del testo in chiaro, è quasi impossibile decifrare il testo. L'unico modo in cui questo è ancora possibile è se il codice è intorno al livello di difficoltà di un codice di sostituzione.

Dato lo stesso algoritmo, se c'è un modo per ottenere più testi cifrati su richiesta, se il testo cifrato è sufficientemente lungo o se ci sono alcune parti conosciute del testo in chiaro per aiutare, è probabile che l'algoritmo possa essere decifrato dato abbastanza sforzo.

Ma anche in questo caso, la crittoanalisi richiede un grande sforzo rispetto allo sforzo di creare un semplice cryptoalgorithm da zero, quindi è improbabile che qualcuno spenda lo sforzo a meno che non ci sia una buona ragione per farlo.

    
risposta data 18.03.2013 - 21:16
fonte
13

Se hai intenzione di distribuire un algoritmo segreto, perché non distribuire solo pad singoli? È più sicuro.

Se non ti piace l'idea dei pad singoli perché troppi dati si stanno spostando sul filo, allora perché stai assumendo che l'hacker abbia solo un testo cifrato?

Supponendo che qualcuno abbia un solo testo cifrato e non abbia l'algoritmo (due ipotesi errate), il tuo sistema di crittografia sottostante, debole ma ben noto, probabilmente non ha alcuna vulnerabilità per cominciare.

    
risposta data 18.03.2013 - 17:40
fonte
8

Ci sono diversi modi.

Il primo e più ovvio è che gli aggressori hanno compromesso il tuo server nella misura in cui sono riusciti a ottenere il codice sorgente. In quel caso particolare, il tuo schema nazionale è buono come niente.

Il secondo modo è che l'autore dell'attacco potrebbe essere in grado di inviare i propri valori all'algoritmo e vedere il risultato prima / dopo. Questo è noto come Chosen Plaintext Attack . Un buon schema di crittografia non dovrebbe essere vulnerabile ad esso. Probabilmente lo schema di un homegrown è

Anche senza un attacco di testo in chiaro scelto, uno schema locale di solito è ridicolmente debole. Un laico come te e io potrebbe non essere in grado di dare un senso all'output di uno schema locale. Tuttavia, vi è una classe di persone molto intelligenti che dedicano il loro tempo e i loro sforzi per rompere tali schemi crittografici di solito in cambio di una buona busta paga. Potresti averne sentito parlare, li chiamiamo Cryptographers.

    
risposta data 18.03.2013 - 16:07
fonte
4

Please answer this question on the assumption that the algorithm is kept completely secret, despite of how difficult that is to achieve in real life.

Il problema con questo è che stai ignorando il principio di Kerckhoffs , che dice che la sicurezza di uno schema di crittografia non dovrebbe dipendere dalla segretezza dell'algoritmo.

Ad ogni modo se sei veramente interessato a criptare dovresti seguire un corso come questo .

    
risposta data 18.03.2013 - 17:25
fonte
3

Poiché non è stato menzionato e questa domanda è stata intorno a un po '...

Uno scienziato informatico ha aiutato a decifrare il testo crittografato di una società segreta del XVIII secolo. Il testo era molto decorato, con simboli e glifi. Ha perquisito gli esperti letterari per secoli. Il trucco è stato quello di indovinare alcune delle lettere e quello che potrebbero rappresentare, e di indovinare anche la lingua originale, dal momento che il tedesco ha frequenze di lettere diverse dall'inglese o dall'italiano.

Ecco la descrizione del testo cifrato e come è stato sbrogliato.

link

link

link (Molto lungo, molto interessante.)

With the Copiale Cipher, the codebreaking team began not even knowing the language of the encrypted document. But they had a hunch about the Roman and Greek characters distributed throughout the manuscript, so they isolated these from the abstract symbols and attacked it as the true code.

"It took quite a long time and resulted in complete failure," Knight says. After trying 80 languages, the cryptography team realized the Roman characters were "nulls," intended to mislead to reader. It was the abstract symbols that held the message.

The team then tested the hypothesis that abstract symbols with similar shapes represented the same letter, or groups of letters. Eventually, the first meaningful words of German emerged: "Ceremonies of Initiation," followed by "Secret Section."

    
risposta data 20.03.2013 - 08:09
fonte

Leggi altre domande sui tag