[OT] Crittografia e sistemi di protezione dei dati

Etemenanki:
Quanto alla "bonta'" di qualsiasi algoritmo di criptazione, la si incrementa facilmente ricriptando il tutto con un secondo algoritmo diverso (se decripti qualcosa criptato con DES e ti ritrovi sempre con una massa di dati senza senso, perche' sono stati ulteriormente criptati una o due altre volte con altri algoritmi, come fai a sapere quando il risultato e' quello giusto ? :stuck_out_tongue: XD)

Poi basta un'algoritmo semplice ma non-standard, per fregare tutti gli algoritmi di decriptazione che esistono ... ti faccio un'esempio banale ma reale ... a scuola avevo "inventato" un sistema di criptazione semplice ..............

Mi spiace Etem, e, ti assicuro, quello che sto per scrivere non vuole assolutamente mancarti di rispetto, ma credimi ...

... queste due tue affermazioni fanno sorridere chiunque si occupi di queste cose a livelli ... "governativi", difatti ... la prima cosa che insegnano, è che queste tue due affermazioni sono tipiche del "dilettante di crittografia" e che ben vengano quelli che la pensano così ... rendono solo la vita più facile a chi lo fa di "mestiere" ... :wink:

Ho il sospetto che non vi sia ben chiaro il bacino di risorse monetarie ($$$), umane (matematici) e tecnologiche (petaFLOPS), che questa gente ha a disposizione ... :roll_eyes:

Guglielmo

lock:

lesto:
eh no, lock, non ci deve dare l'affare ma un messaggio criptato. Il resto sta a noi :grin:

un flusso di roba criptata, senza precisarci T con un solo messaggio e senza altro sapere la probabilita' di collisione e' prossima a 0+, ovvero, nel tentare di azzeccarla lo stesso senza strumenti statistici applicabili a rigore, si entra nel forte speculativo e nella pura intuizione, faccende massimo vanto della mente umana perché per il teorema dell'incompletezza non sono affatto computabili, un po' come dire che … anche un tizio a digiuno della qualsivoglia nozione matematica (anche elementare) può comprendere da solo il concetto di numero naturale, ma per un computer e' impossibile.

bhe ok, non uno ma una serie di messaggi. Ma a seconda del sistema e della lunghezza del messaggio può essere trovato l'originale. Specialmente se si sa il messaggio di partenza.

@Etemenanki:
è dimostrato che cifrare n volte dei dati usando lo stesso cifrario non aumenta di n volte la complessità del testo cifrato.
Tant'è che il TripleDES altro non è che una tripla cifratura col DES che però non è equivalente alla crittazione con un algoritmo cion chiave a 563=168 bit. Questo avviene solo se per ognuno dei 3 passaggi impieghi una chiave diversa. Se usi la stessa chiave per entrambi i passaggi la robustezza finale è equivalente a quella ottenibile con una chiave di 562=112 bit.

Tornando ai cifrari "carta e penna", ossia a quelli realizzabili a mano, esistono schemi molto complessi. L'ultimo che ha resistito all'NSA è stato il cifrario VIC, talmente complesso che finché non fu preso il suo utilizzatore, una spia russa che tradì l'URSS e chiese asilo politico agli USA, gli esperti furono tenuti in scacco per 4 anni!

Siamo nell'OT dell'OT!
Comunque, fra le rivelazioni di Snowden ce né una che riguarda un generatore di numeri pseudocasuali noto come Dual Elliptic Curve Deterministic Random Bit Generator (Dual EC DRBG) e usato come standard da RSA e Cisco, per fare due nomi. Già 6 mesi dopo l'uscita dell'algoritmo ci fu chi lo analizzò e trovò che potesse avere una backdoor e si sospettava di NSA. Snowden ha confermato la storia e ha anche detto che RSA e Cisco furono pagate per stare zitte. Dopo la rivelazione di Snowden queste brave società negano tutto ma finalmente consigliano di usare un altro generatore di numeri pseudocasuali.
Oggi si sta ripetendo la storia di Echelon, lo scandalo NSA di fine anni 90 dove spuntarono le storie di algoritmi volutamente fallati o con chiavi corte, lo spionaggio economico (altro che terrorismo!) e la storia poco edificante della CryptoAG, azienda Svizzera che produce macchine crittografiche e che fu pagata da NSA per inserire delle Backdoor.
Per quanto riguarda Tor pare che NSA sia riuscita a identificare un piccolo numero di utenti ma a grande fatica. Questo nel 2012, oggi chissà....
Ciò che si impara da queste storie è che gli algoritmi devono essere pubblici, che se sono proposti da americani bisogna passarli al setaccio 100 volte (ma anche gli altri non scherzano) e che non bisogna mai affidare la sicurezza ad altri.

L'algoritmo indecifrabile esiste ma è di difficile uso in quanto la chiave deve essere lunga quanto il testo cifrato ed essere veramente casuale. E nasce il problema di come scambiarsi la chiave.

sì, ecco come hanno operato: eiste un tor "boundle", ovvero client tor standalonre + firefox pre-configurato per usare questa combo. Peccato che viene usata una vecchia versione di firefox con bachi noti; quindi, inserendo dei malware che attaccavano solo quelle vulnerabilità, andavano praticamente a colpo sicuro.

Come sopra, la protezione è stata aggirata, non "rotta".

In oltre pare che esista un sistema detto "FoxAcid", in pratica una serie di server che attaccano e compromettono target che sono stati rilevati come potenzialmente pericolosi attraverso un analisi del traffico internet a livello di PROVIDER. In pratica la NSA ha chiesto a vari provider (quali non saprei) di installare dei loro sniffer che identificassero, ad esempio, chi usa TOR

zoomx:
L'algoritmo indecifrabile esiste ma è di difficile uso in quanto la chiave deve essere lunga quanto il testo cifrato ed essere veramente casuale. E nasce il problema di come scambiarsi la chiave.

Si chiama cifrario di Vernam, è l'unico cifrario perfetto che si conosca.
No chiave -> no decifrazione

lock:
Cosa implemento (o per meglio dire scopiazzo) ? TwoFish ? I blocchi sono da un minimo di 1024byte ad un massimo di 4096byte

Ma ti serve un cifrario a blocchi per forza? Altrimenti i cifrari a scorrimento sono molto efficenti, ci sono quelli del progetto eCRYPT dell'UE che sono ottimizzati anche per l'uso in HW, non solo in SW, ed alcuni di essi sono molto potenti e veloci.

quel cifrario si usa in guerra, sono distribuiti vari on-time-pad per le comunicazioni segretissime

@lock: ma non puoi usare un fs crypto che già esiste?

Eh, no, io non ho mai detto di cifrare piu di una volta con lo stesso algoritmo ... ma con algoritmi diversi :stuck_out_tongue: ...

gpb01: immagina un RSA ricifrato con bowfish ricifrato di nuovo con DES, magari usando chiavi a trasposizione ... e poi dimmi come fa l'algoritmo di decifrazione del DES (dico DES solo perche' essendo l'ultimo degli encrypt, deve per forza essere il primo dei decrypt, non perche' lo preferisco o voglio per forza quello, puo essere qualsiasi cosa tu vuoi)) a sapere che l'uscita (che e' ancora un'ammasso di dati senza senso, perche' richiede altri due (come minimo, se sono stato buono) passaggi, e' decrittata correttamente ? ... specie se, magari, fra un'algoritmo e l'altro ho fatto la semplice operazione di "tranciare" parte della stringa in testa e posizionarla in coda (o viceversa) ?

Ovvio che io sono un principiante in campo di cifratura ... non saprei scrivere un'algoritmo di encrypting ... ma le idee "kattive" per rendere la vita difficile ai decrittatori, non mi mancano :stuck_out_tongue: XD

lesto: anche se te ne dessi 10000 di messaggi, nessun supercomputer sarebbe in grado di capire il procedimento ricavandolo dai messaggi ... lo spiego per Lock, cosi ti rendi conto del perche' :wink:

Lock: il sistema e' assolutamente banale (ma ormai e' conosciuto, perche' l'ho gia detto ad alcune persone in passato, quindi non lo considero piu sicuro :P), ma se non te lo dicono di solito non viene in mente ... si tratta semplicemente di convertire il testo da ASCII a binario, mettere le stringhe binarie in fila, poi dividere la stringa di bit risultante in una matrice che NON sia di multipli di 8 (ad esempio, 9 righe di 11 caratteri, o piu se i bit sono di piu, il formato lo scegli al momento), aggiungendo alla fine degli zeri per completare la matrice in modo che sia "piena" (che non restino spazi vuoti), e poi RUOTARE il foglio di 90 gradi (e' questo il punto che nessuno si e' mai immaginato, ed e' di una banalita' assoluta :stuck_out_tongue: XD) ... in questo modo la tua matrice diventa, come nell'esempio, di 11 righe di 9 caratteri, ora rimetti le righe in fila in modo da ottenere nuovamente una stringa, la dividi in bytes e ritrasformi da binario ad esadecimale (puoi fare anche da binario a decimale, se vuoi, ma chi riceve deve saperlo :P) ...

Ora, i caratteri che ottieni li metti insieme in gruppi di lunghezza a caso (la lunghezza dei gruppi che ottieni e' ininfluente, perche' i gruppi in se non hanno alcun senso ne alcun rapporto con il contenuto, conta solo l'ordine dei singoli caratteri), ci appendi la "chiave" (cioe' l'indicazione per il ricevente, in un formato stabilito in precedenza, di quale dimensione dovra' avere la matrice che dovra' ricostruire dalla conversione hex-binario dei singoli caratteri, del numero di zeri da togliere dalla fine dopo averla ruotata, della direzione in cui la devi ruotare, ecc ... nota che, anche sapendo tutto quanto, devi anche conoscere in quale formato leggere la "chiave", altrimenti non te ne fai nulla :P) ... quello che ottieni e' un messaggio composto da stringhe esadecimali, di lunghezza casuale, ed il cui valore non ha assolutamente nulla a che fare, in nessun modo, con il contenuto del messaggio originale :stuck_out_tongue:

Per decodificarlo, leggi la chiave per sapere il formato della matrice (11x9, in questo caso), il senso di rotazione, ed il numero degli zeri extra, trasformi le singole cifre (esclusa ovviamente la chiave, che non fa parte del messaggio) in binario, metti in fila, dividi nella matrice, ruoti il foglio, togli gli zeri extra (se ce ne sono), rimetti in fila, riconverti ogni byte in ascii, ed hai il tuo messaggio :stuck_out_tongue:

Si fa prima a farlo che a spiegarlo :wink:

finché non fu preso il suo utilizzatore

Be', qui torniamo al vecchio principio che un codice e' perfetto, solo se lo conoscete solo tu e l'altro con cui comunichi ... e che per scardinare uno di questi codici, serve il sistema "tubo di gomma" :stuck_out_tongue: XD XD XD

Ete, il principio è lo stesso. Se cifri n volte con n cifrari e chiavi diversi ottieni come risultato lo stesso rimescolamento dei dati che otterresti cifrando con un unico algoritmo con una chiave molto lunga.
Cifrare 4 volte con 4 cifrari diversi a 64 bit equivale a cifrare 1 volta con un cifrario con chiave a 256.

PS:
quello che hai applicato è un classico cifrario a trasposizione o permutazione, dove tu cambi i dati in chiaro secondo un determinato schema, che rappresenta la chiave di decifratura.

leo72:
...
quello che hai applicato è un classico cifrario a trasposizione o permutazione...

Si ... ma nessuno fin'ora era arrivato ad indovinare che per risolverlo bisognava "ruotare" fisicamente la matrice :wink: ... anche il mio prof, quando glie l'ho spiegato, ha ammesso che il girare fisicamente il foglio era l'unica cosa che non gli sarebbe mai venuta in mente di fare :stuck_out_tongue:

Etemenanki:

lesto: anche se te ne dessi 10000 di messaggi, nessun supercomputer sarebbe in grado di capire il procedimento ricavandolo dai messaggi ... lo spiego per Lock, cosi ti rendi conto del perche' :wink:

se SO che il tuo messaggio contiene qualcosa di senso compiuto, allora pioi anche annidiare quanti algoritmi vuoi, io posso creare un sistema che genera un algoritmo A CASO che smadruppa i tuoi messaggi.

Quindo quando uno degli algoritmi random restituisce testo di senso compiuto (in base ad un dizionario, o al controllo umano), allora ho craccato il tuo codice.

Come detto prima, il tempo e le risorse sono il vero problema :slight_smile:

Ora, se invece che applicare algoritmi a caso ci metti un pò di logica, becchi qualche codice. Se poi hai in mano anche il sistema criptante/descriptante diventa molto più facile. Enigma docet.

Etemenanki
gli algoritmi che fanno affidamento al fatto che non si sa come funzionano, storicamente sono stati tutti dei fallimenti. Tutti, senza alcuna eccezione.

lesto: si, pero' ti ci vogliono una trentina di secoli ed alcune migliaia di computer ... oppure una rete globale di CRAY e TITAN , una trentina di miliardi, e qualche annetto :stuck_out_tongue: ... e' tutta una questione di "quanto vale la pena farlo" ... se ci devi decrittare i dettagli del piano terroristico che prevede di far scoppiare una decina di testate nucleari in altrettante capitali del mondo, la spesa e le risorse sono ampiamente giustificabili, se ci devi decrittare il "pizzino" del boss mafioso di quartiere solo per controllare se e' un'ordine di esecuzione o la ricetta della torta della nonna, un po meno :stuck_out_tongue: XD XD XD

zoomx: certo, perche' sono ultrasicuri solo fino al momento in cui non diventano pubblici, come ho gia detto ... finche' nessuno (a parte le due persone che lo usano per comunicare) conosce il sistema, non esiste modo di "decrittare" il messaggio, anche perche', per quanto ne sai, potrebbe anche essere, ad esempio, posizionale anziche semantico ... tipico esempio e' un messaggio criptato in cui le lettere ed i numeri del testo cifrato non hanno alcun senso, quello che conta e' la "posizione" di alcuni dei caratteri nel testo, scelti arbitramente in precedenza ... ti faccio un'esempio banale:

"Tutti morimmo a stento"

Questa frase, scritta magari su un muro in pubblico, potrebbe essere un'ipotetico messaggio criptato di tipo posizionale, assolutamente impossibile da decifrare, in cui una persona ordina ad un'altra di ucciderne una terza, specifica, in un gruppo, e gli indica anche quale persona del gruppo, e fra quanti giorni farlo ... prova ad immaginare come, se ci riesci :wink: (suggerimento: la parola "morimmo" non ha alcun riferimento all'ordine in se', come anche il resto della frase, ne tantomeno il suo significato, avrei potuto usare letteralmente qualsiasi altra frase, dando le stesse identiche indicazioni :wink: :P)

il mio è un sistema a forza bruta, quindi il caso peggiore, applicabile anche ad un solo messaggio (anche se è possibile "decriptare" un altro testo rispetto all'originale!) Avendo più messaggi a disposizione si possono anaizzare "a cervello" per capire un filo conduttore conune.
Per esempio, col tuo sistema non mi stupirei se esistessero dei pattern che si ripetono, analizzabili in modo statistico e asseganbili a delle lettere, però non ne sono sicuro (dovrei provare a criptare alcuni testi. In genrelae il tuo "girare il foglio di 90°, matematicamente si dice matrice trasposta). In generale il fatto che un numero ristretto di persone "appasionate" non buttino giù il tuo codice non vuol dire che può resistere più di 5 minuti in mano ad un professionista.

Per quanto riguarda l'ultimo esempio, direi che si tratta più di steganografia che di criptazione.

In oltre essendo il valore del messaggio deciso "a priori" allora è assimilabile ad un one-time-pad, ovvero la cifratura di verne, se poi la usi il mesaggio solo una volta è un vernam, che come diceva leo è la cifratura "perfetta"

lesto:
... è assimilabile ad un one-time-pad ...

Quasi, in realta' potresti usarlo piu di una volta, ma sempre se nessun'altro lo conosce, e comunque sempre un limitato numero di volte, ovviamente, perche' e' "tagliato su misura" per quello specifico tipo di ordine (come tutti quelli di quel tipo) ... comunque questo tipo di codifiche in genere si usano tutte una o due volte al massimo, quella ad esempio l'ho inventata al volo, dato che e' proprio questa la caratteristica principale di questo tipo di codifiche, cioe' l'inventare "al volo" regole arbitrarie, conosciute solo dal mittente e dal destinatario, che non seguano schemi ripetitivi ...

ad esempio, nella frase di prima:

  1. la frase contiene tutte e cinque le vocali, significa che e' un'ordine di esecuzione (un numero diverso di vocali avrebbe un significato diverso)
  2. una parola (qualsiasi) con meno di 4 caratteri e' la terza della frase, significa che la persona da eliminare e' la terza del gruppo (in un'ordine deciso in precedenza, ovviamente)
  3. la frase contiene, all'inizio (in questo caso, ma potrebbe essere in qualsiasi altro punto predefinito) 4 parole di seguito senza punteggiature, interpunzioni, trattini o altri segni, significa che l'azione deve svolgersi fra 4 giorni (nel caso di una frase piu lunga, basta metterci una virgola o un trattino o un carattere o parola decisi in precedenza come interruzione)

Con questo tipo di "cifrario" posizionale (ma sarebbe piu corretto definirlo "metalinguaggio", piu che cifrario), puoi usare letteralmente qualsiasi frase, compiuta o meno, in qualsiasi lingua, reale o inventata, per comunicare ordini specifici mediante parametri decisi in precedenza con il tuo interlocutore (questo, in effetti, e' il limite enorme di questo tipo di codici ... funzionano solo fra le due persone che li conoscono, e non possono essere usati per comunicare con terzi), e finche' nessun'altro conosce quei parametri, non esiste letteralmante nessun modo per decifrare il messaggio.

Etemenanki:

lesto:
... è assimilabile ad un one-time-pad ...

Quasi, in realta' potresti usarlo piu di una volta, ma sempre se nessun'altro lo conosce, e comunque sempre un limitato numero di volte, ovviamente, perche' e' "tagliato su misura" per quello specifico tipo di ordine (come tutti quelli di quel tipo) ...

SE puoi scambiare ogni volta il nuovo algoritmo, allora PUOI scambiare ogni volta un nuovo PAD, certo non lo usi una sola volta ma, finchè la chiave non è mai ripetuta, la cifratura regge.
Per esempio nella seconda guerra vari eserciti avevano un libricino di chiavi casuali one-time-pad, tutti diversi. Quando avevano comunicazioni molto importanti, si inviava il nome del reparto e il numero delle pagine usate, poi per evitare ripetizione la pagina veniva distrutta.

il problema che la criptografia è quando NON CI SI PUO' ACCORDARE SPESSO, e quindi una grande serie di dati va criptata con LA STESSA CHIAVE.

INFATTI la criptazione quantica, considerata per ora teoricamente perfetta, non è altro che un sistema per scambairsi una chiave da usare col metodo VERNAM (o OTP), che tra l'altro si può applicare facilmente anche a mano.

edit: leo, riesci a muovere la discussione della criptoanalisi in una discussione a parte?

Per restare nell'argomento di ... questo thread Off-Topic ... :grin:

Non so se avevate visto, o vi era sfuggito, QUESTO "simpatico" articolo dello scorso Ottobre ...

... bella è ???

Guglielmo

P.S. : Anche altri articoli, su quella pagina ... sono "educativi" ... :wink:

Ah ... naturalmente potete inventare anche l'algoritmo più figo del mondo e impossibile da crackare ma ... comunque a fottervi le informazioni ... ci pensa l'hardware del vostro PC ...

... magari vi è sfuggito anche QUESTO ... :grin: :grin: :grin:

Guglielmo

grazie, al giorno d'oggi bisogna tenersi informati su queste cose, il grande fratello si fa sentire, anche se non sarò come immaginato da orwell, c'è da fare molta attenzione secondo me