Newsgroup: it.comp.sicurezza.crittografia
Titolo: Numero di messaggi e identificazione delle chiavi

Su un altro ng e' nata questa questione, la giro a voi :-)
E' vero anche con i moderni algoritmi di cifratura (simmetrica o 
asimmetrica, per ora non mi interessa) che all'aumentare del numero di 
messaggi scambiati con la stessa chiave (sia pure noto l'algoritmo) cresce 
la probabilita' per l'attaccante di identificare la chiave?
Forse la domanda e' un po' generica ma al momento non potrei essere piu' 
specifico (era una questione piuttosto accademica a mio avviso).
Grazie,
Pleg 

 cresce la probabilita' per l'attaccante di identificare la chiave?
Direi che gli algoritmi a chiave asimmetrica funzionano in un modo tale da 
non essere affetti da questo problema, in quanto il messaggio cifrato è un 
numero troncato attraverso il quale non è fattibile risalire ai numeri che 
l'hanno generato (mantenendo segreta la chiave privata).
Invece, (se non mi confondo troppo) mi pare che qualche attacco agli 
algoritmi a chiave simmetrica si basi proprio sulla numerosità dei messaggi 
cifrati (che comunque devono essere talmente tanti che un utente solo, 
probabilmente non riesce a generarli). Però non ricordo se tali attacchi 
consentono di ricavare la chiave (come tu chiedi) o direttamente il testo in 
chiaro (senza bisogno della chiave).
Cristiano 

 il testo in chiaro (senza bisogno della chiave).
Grazie, vedo che il mio dubbio non era cosi' banale (meno male :-)
La questione e' nata parlando del segnale del GPS, e dalla possibilita' che 
esso venga (parzialmente) crittografato per ridurre la precisione della 
localizzazione per i terminali civili. Qualcuno ha argomentato che sia (o 
sia stato, addirittura) possibile decodificare il segnale e recuperare 
l'informazione totale; qualcun altro ha sollevato al questione che 
all'aumentare del numero di "messaggi" (in questo caso coordinate temporali 
trasmesse dai satelliti, se non vado errato) aumenti la probabilita' di 
recuperare le chiavi di cifratura e rendere chiaro il segnale.
Io sono molto scettico, anche perche' penso che in questo caso si possa 
seguire una tecnica del genere:
-si sporca il segnale "vero" dei satelliti, aggiungendogli del rumore bianco 
di varianza grande a piacere
-si trasmette in chiaro il segnale sporcato, e in cifra il rumore aggiunto
-chi ha la chiave recupera l'errore, ricostruisce il segnale "vero" e 
triangola bene la propria posizione; gli altri si attaccano
In questo caso i "messaggi" crittati sarebbero campioni di rumore bianco, 
trasformati in altro rumore bianco dalla cifratura... molto difficile 
recuperare qualcosa a mio avviso (ma di crittografia purtroppo non so quasi 
nulla). Di piu', recuperare i "messaggi" e' completamente inutile: l'unica 
cosa utile e' recuperare la chiave per usarla e decifrare i successivi 
messaggi (per ricostruire con precisione la propria posizione). Anche per 
questo mi sembra che tutto cio' sia veramente improbabile.
Scusate per il lungo delirio :-)
Pleg

Che io ricordi, durante la prima guerra del Golfo (o "l'unica", come direbbe 
qualcuno :)
il segnale non veniva crittografato ma semplicemente reso errato
Il sistema GPS mandava segnali contenenti un errore che non permetteva ai 
nemici (e a tutti gli altri, ma al'epoca
il GPS civile non era diffuso come oggi) di venire usato con certezza 
(alcuni missili usavano GPS pių planimetrie per colpire un bersaglio).
Il controllo d'errore veniva mandato via Radio, questo si, crittografato.
Ma la crittatura (ripeto, per quanto so e ricordo) era legata al classico 
sistema di comunicazioni previsto dall'Esercito Americano.
Argomento interessante, comunque!
ciao,
"Pleg" <25mV@300.K> ha scritto nel messaggio 
news:_Vwii.39115$y05....@tornado.fastwebnet.it... 

Cristiano ha scritto:

Sì, è vero. Gli algoritmi a chiave simmetrica hanno come punto debole il
riutilizzo della stessa chiave.
Questo perché se si usa la stessa chiave per cifrare lo stesso testo, si
ottiene lo stesso messaggio cifrato.
Ecco perché negli algoritmi più recenti è stato introdotto l'IV,
l'initialization vector, che è un nonce, vale a dire un blocco di dati
casuale generato dalla cifra ed usato per inizializzare l'algoritmo
stesso di modo tale che anche usando la stessa chiave con lo stesso
testo non si ottenga lo stesso messaggio cifrato. Ma per far ciò è
importante che il nonce non venga mai usato 2 volte con la stessa chiave
altrimenti anche in questo caso si possono evidenziare nel messaggio
cifrato tracce del testo in chiaro.
-- 
Ciao.
Leo.
Web: 
www.leonardomiliani.com
E-mail: 
leon...@leonardomiliani.com
Scegli software opensource - Choose opensource software

 la probabilita' per l'attaccante di identificare la chiave?
La domanda riguarda due problemi distinti:
1) Gli algoritmi di cifratura simmetrica stream, oppure a blocchi
(usata in modi come il CTR che le danno alcune proprietà della
cifratura stream) danno origine allo stesso testo cifrato a partire
dallo stesso testo in chiaro; in questo caso ottenere il messaggio
originale è piuttosto semplice se la stessa chiave viene riutilizzata
per più messaggi.
Per evitare questo si genera un IV (initialization vector) non
determinato dall'utente che fa si che solo la coppia chiave/IV
identica generi lo stesso testo cifrato a partire dallo stesso testo
in chiaro; in questo caso il problema si sposta in quanti valori
distinti può assumere l'IV e, se questo è generato randomicamente,
quanta entropia può campionare il sistema tra un invio di un messaggio
e l'altro.
2) In alcuni casi disporre di un grande numero messaggi o comunque di
una grandissima quantità di dati cifrati può consentire alcuni tipi di
analisi, ma in genere si tratta di considerazioni teoriche, molto al
di là delle possibilità pratiche di conservazione dei dati anche per
algoritmi di cifratura non recentissimi:
http://en.wikipedia.org/wiki/Distinguishing_attack
http://en.wikipedia.org/wiki/Birthday_attack
http://en.wikipedia.org/wiki/Linear_cryptanalysis
http://en.wikipedia.org/wiki/Differential_cryptanalysis
Riguardo la cifratura asimmetrica, di solito per questioni di
performance in realtà la cifratura asimmetrica viene usata per cifrare
le chiavi di cifratura simmetrica (in pratica di solito si tratta di
un ottimo sistema per risolvere l'annoso problema dello scambio di
chiavi degli algoritmi simmetrici) che vengono utilizzate per la
cifratura dei dati veri e propri, quindi le stesse considerazioni
valgono di norma anche per i sistemi di cifratura che usano anche le
cifratura asimmetrica.

 triangola bene la propria posizione; gli altri si attaccano
Non so quanto possa essere applicabile ciò che dici.
Inoltre, ogni satellite GPS trasmette già un segnale cifrato per uso 
militare che consente il calcolo della posizione con elevata precisione e la 
verifica dell'autenticità del segnale.
Cristiano 

 la verifica dell'autenticità del segnale.
Si', era un po' buttata li' :-)
Mi chiedo allora se il segnale civile sia "sporcato" o semplicemente 
trasmettano a precisione piu' bassa...
Pleg 

 per pių messaggi.
Non ho capito: sono d'accordo che (stessa chiave + stesso messaggio) = 
stesso crittogramma, ma come si sfrutta questa cosa per un'attacco?
Pleg 


Non possono sporcare niente (il segnale deve essere univocamente 
identificabile) e non serve farlo perché la precisione dipende dalla 
frequenza degli impulsi. Qui
http://en.wikipedia.org/wiki/Global_Positioning_System
è ben spiegato.
E` un'impressione mia o iniziamo ad essere OT? :-)
Cristiano 

Ogni bit del crittogramma1 è data da il corrispondente bit del
messaggio1 combinato linearmente (di solito con xor) con lo stream di
cifratura originato dalla data chiave.
Se abbiamo un crittogramma2 dato da messaggio2 cifrato con la stessa
chiave (che origina lo stesso stream di cifratura) avremo che ciascun
bit di crittogramma2 è il corispondente bit di messaggio2 combinato
con lo stesso stream di cifratura usato per crittogramma1.
Possiamo quindi combinare linearmente i bit disponibili di
crittogramma1 e crittogramma2 perchè lo stream di cifratura presente
in entrambi si elida e rimaniamo con un messaggio3 dato dalla
combinazione di messaggio1 e 2 ; banalmente paragonandolo ad una
operazione aritmetica lo potremmo esprimere come m1 (bit del
messaggio1)+s (stream di cifratura) - (m2+s) = m1-m2+s-s (s si elide)=
m1+m2.
Essendo che messaggio1 e messaggio2 non sono flussi di dati random
(come è invece lo stream di cifratura), si possono usare tecniche
lineari, computazionalmente piuttosto leggere (es analisi delle
frequenze dovute alla probabilità di lettere o gruppi di lettere in
una data lingua) per separare i due messaggi (niente di più complesso
che forzare una cifratura di Vigenere, in cui un testo viene usato per
cifrare un altro testo, che si è dimostrata attaccabile dagli albori
del calcolo automatico).
Se pensiamo a quante volte un utente tende a riutilizzare una stessa
password o utilizzare pochi file-chiave per cifrare parecchi file (o
alle possibili collisioni casuali tra password banali e comuni), una
vulnerabilità di questo tipo va accuratamente evitata, in questo caso
con l'uso di un IV che non è determinato dall'utente e rende il flusso
di cifratura unico anche se la password viene riutilizzata.

> E` un'impressione mia o iniziamo ad essere OT? :-)
Si' scusate :-)
Grazie a tutti!
Pleg 

 cifratura originato dalla data chiave.
Pensavo (come ho detto non so praticamente nulla di crittografia, 
semplicemente "pensavo" in astratto) che il testo in chiaro e la chiave 
fossero "mischiati" in modo molto piu' complesso e inestricabile!
Pleg 

In una stream cypher (o cifra a blocchi usata in modo da darle alcune
proprietà deglle stream cypher, come il modo CTR) l'"inestricabilità"
è data proprio dalle qualità statistiche dello stream che viene
combinato al messaggio, che non consente di applicare metodi di
analisi e di separazione dei due fattori.
Se invece si combinano due flussi di dati che non siano pseudorandom,
esistono tecniche abbastanza semplici per separarli.
Pensa ad un esempio facile da visualizzare: ho un bitmap di Topolino
sovrapposto a una immagine di rumore bianco: risulta a occhio una
immagine di puro rumore e non ho nemmeno mezzi matematici per separare
le due cose, a meno che non abbia salvato il file originale di rumore
bianco (vedi ad es. OTP) oppure se non ho la chiave che applicata ad
il dato agloritmo mi consente di generare quello stream di rumore
(stream cypher).
Se cifro con lo stesso file di rumore bianco anche una immagine di
Pippo e combino i due file cifrati lo stream si eliderà, sarebbe come
sovrapporre solo i due file originali: avrò l'immagine di Pippo e
Topolino sovrapposte, abbastanza facili da separare ad occhio (per uno
strumento di analisi di frequenze la separazione di due testi
sovrapposti è grossomodo simile).
Per questo dev assolutamente evitare che l'utente posa usare la stessa
password per geneare lo stesso stream, usando un IV (che comunque a
seconda del sistema può avere anche altre utili funzioni)
Le cifre a blocchi agiscono in modo più complesso, ma sono soggette ad
altri tipi di considerazioni, per i problemi di sicurezza dei vari
modi d'uso di una cifra a blocchi è ottimo l'articolo di Wikipedia
inglese "block cypher".