Newsgroup: it.comp.sicurezza.varie
Titolo: Curiosità sulle chiavi, e in particolare RSA........................

Volevo chiedere un paio di informazioni. Ho trovato in giro un po' di
documentazione che tratta la crittografia asimmetrica, e non ho ben
capito cosa si inteda per bit di una chiave (la dimensione in bit del
ciphertext su cui effettuare la codifica con la chiave lunga lo
stesso numero di bits?)
Mi spiego meglio: la suddetta documentazione è "tipicamente
accademica", ovvero carica di speculazioni teoriche e niente che
possa fare qualche esempio pratico, quindi alla fine è lecito avere
dei dubbi. Su RSA si parla di chiavi a 512, 1024 ecc bits facendo
riferimento al *solo* modulo pubblico della chiave, e sembra quasi
che la crittazione del testo avvenga sempre con lo stesso modulo e
relativo esponente pubblico della chiave. Ma se così fosse, fatta
eccezzione per gli enormi calcoli esponenziali, il tutto si
tramuterebbe in una semplicissima sostituzione
carattere<-->carattere.
Per esempio supponiamo che la frase "palla", crittografata anche con
un modulo enorme, diventi un qualcosa simile a "hebbe". Se venisse
impiegato sempre lo stesso modulo e lo stesso esponente pubblico
tutte le "a" nella frase verebbero trasformate in "e", e le "l" in
"b": quindi alla fine ci sarebbe una semplice sostituzione e
basta...........................
Ma come ho già detto la documentazione è poco chiara, e si tratta in
particolar modo di speculazioni matematiche squisitamente teoriche.
Sempre su RSA c'è scritto che per avere un'ottima sicurezza è
necessario usare un modulo pubblico che abbia più di 1024 cifre (e
sembra quasi che qui cifre e bit vengano usati per determinare la
stessa identica cosa). E poi come si gestisce un numero di 1024 cifre
districandosi dall'overflow????? Si potrebbe usare qualche proprietà
della matematica modulare (forse), ma un computer non riuscirebbe mai
a interpretare e manipolare un numero così grande (se non sotto forma
di stringa, e quindi completamente inutile...........), o forse mi
sta sfuggendo qualcosa??!?!? Senza contare che anche se il computer
accettasse un numero così grande, un'esponenziale di quel tipo
porterebbe via diverse ore di elaborazione............
Sicuramente ci sono delle proprietà per allegerire tutti questi
calcoli.................................
Spero che qualcuno sappia darmi una mano e risolvere i miei (tanti)
dubbi sull'argomento.
A quanti risponderanno,
un grazie anticipato

stesso numero di bits?)
Semplcie 8 bit fanno come sai un byte un byte e' anche la lunghezza di
un carattere quindi in generale vale che ad esempio una chiave :
"pippo" sia una chiave lunga 40Bit :-)
Augusto Pucci
Webmaster di Prospektiva On-line
http://www.prospektiva.it

carattere<-->carattere.
Il mio inglese non è corretto, ma ma quello che ho capito leggendo qua
e là l'RSA viene usato solo per crittografare la chiave pubblica, per
il messaggio si usano altri algoritmi, come IDEA, 3DES CAST MD5 Ecc.
IDEA é abbastanza vecchio e collaudato e non si hanno notizie che sia
stato violato, in più è possibile attaccarlo solo a "forza brutta"...
Hai già letto le Faq di 
www.pgpi.com
 ???
Ciao
------------
Beep Bepp
           Roby
Togliere XXX per rispondere via Email
PGP KEY  Disponibile

Ciao,
prima di tutto lascia che ti ringrazi per la tua risposta abbastanza
esaustiva................
Ma ho ancora qualche dubbio (alcuni sono gli stessi che ho citato in
precedenza ma ai quali non ho avuto una risposta decisa, quindi cercherò di
spiegarmi meglio...........):
Consideriamo per il momento RSA e una chiave da 1024 bit che è un numero da
309 cifre. Ok. Come da mia precedente mail, se io do in pasto all'algoritmo
con questa chiave enorme una frase del tipo "palla", lui mi tirerà fuori una
frase, per esempio, "hebbe", sostituendo cioè ad ogni "a" una "e" e ad ogni
"l" una "b". Questo perchè tutte le "a" hanno un valore x e tutte le "l" un
valore y, e passate all'algoritmo si ottiene un risultato uguale per tutte
le x e uno uguale per tutte le y. Quindi, se le cose fossero come io le ho
appena descritte (e di sicuro in pratica non le sono, ma vorrei capire bene
come funziona) l'algoritmo RSA operando sempre sullo stesso modulo "n" e
sullo stesso esponente "e" per tutti i caratteri del plain text
somiglierebbe molto ad un Cifrario di Vigenère, data la sostituzione
carattere<-->carattere. L'unica differenza sarebbe nei calcoli assurdi che
ci sono in RSA (anche se semplificati dall'algebra lineare), ma alla fine
forzare RSA ottenuto in questo modo sarebbe come forzare il suddetto
Cifrario.............................................
Io pensavo alla lunghezza della chiave come numero di esponente/modulo (nel
senso 1024bit/8=128 esponenti con relativo modulo pubblico), in modo che
venisse usato un esponente/modulo diverso sul plain text, una cosa di questo
genere (non so se hai familiarità con C++/Java..........)
for (int i=0,int j=0;i<plaintext.length();i++,j=(j+1)%chiave.length())
    plaintext[i]=RSA(plaintext[i],chiave[j].esponente,chiave[j].modulo);
dove RSA è un metodo per il calcolo del ciphertext ottenuto semplificando
con l'algebra lineare il ben noto C=M^e mod N
Un ragionamento di questo tipo sarebbe più sensato, il risultato non
somiglierebbe per niente ad un semplice cifrario di Vigenère e sarebbe senza
omba di dubbio più complesso risalire al plain text perchè invece di rompere
un solo modulo o indovinare la sostituzione se ne dovrebbero
rompere/indovinare ben 128..............
Comunque aspetto una tua risposta
sull'argomento..................................
Altro problema: semplificazione dei calcoli con l'algebra modulare.
Avevo già pensato ad una cosa del genere, e ho implementato una soluzione
che se velocizza (e di molto i calcoli) non sempre mi salva dall'overflow.
Si tratta di estrarre uno sviluppo binario dell'esponente e fattorizzare lo
stesso applicando delle formule simili di algebra modulare che ti stesso mi
hai riportato. Il problema è che un numero di 309 cifre (per tornare alla
famosa chiave di 1024 bit che dicevi tu) non posso assegnarlo ad una
variabile! Appena lo faccio scatta l'overflow (come è normale). Ma come
faccio a usare delle regole di algebra modulare se neanche riesco a
manipolare il numero???
Questi sono problemi che sorgono sempre all'atto pratico (quanto implementi
un determinato sistema) e che in teoria non si pongono mai................:(
Sapresti poi indicarmi qualche risorsa online che tratta gli algoritmi CAST,
IDEA, DES, TDES e Diffie-Hellmann facendo anche degli esempi pratici, in
modo che il compito del programmatore (in questo caso io) venga notevolmente
semplificato?
Grazie ancora,
ciao

semplificato?
http://www.pgpi.org/dev/
 =>> specifiche per sviluppatori
http://www.pgpi.org/links/www/
 =>> qui trovi i link
e poi basta qualche ricerca ne trovi a chili di roba.
Ti consiglio anche i newsgruop americani.
suca ma di più non so. non mi sono mai posto il problema di sviluppare
queste cose :-)
ciao 


Comunque aspetto una tua risposta sull'argomento......................
Non sono lui, ma spero ti accontenterai :)
Dunque, in pratica stai riscoprendo l'acqua calda: sto' sito elenca i
vari tipi di crittazione, e i vari attacchi possibili.
http://axion.physics.ubc.ca/pgp-attack.html
Quello da te menzionato e' qualcosa di simillimo al ROT13 :) (che fa
uno shift, pero' potrebbe benissimo essere accomunato al Cifrario di
cui parli)

Ciao,
grazie della risposta e del link. Avevo già visitato quella pagina, che
espone le debolezze degli algoritmi e le relative tecniche di crittoanalisi
per rompere il codice................
Ma a parte questo (comunque molto interessante) non dice niente di quello
che serve a me. Riassumento a me serve da sapere
1) come si presenta la rappresentazione *fisica* di una qualsiasi chiave di
tot bit, specialmente per i sistemi di crittografia asimmetrica (come RSA)
2) come lavora RSA (non la ben nota formula C=M^e mod n), per essere precisi
come avviene la crittografia RSA su un blocco di bit di 64 (per esempio).
Sotto che forma do in input alla funzione RSA (cioè M) un tot di bit di
plain text??? (domande che non mi fanno dormire la notte!) E come ri
presenta la chiave?? Un solo esponente e un solo modulo pubblico oppure più
esponenti e più moduli pubblici che agiscono separatamente sui diversi
blocchi???


	Available PGP RSA\DSS\ElGamal  keys

 - rimuovi XXX x rispondere    ICQ #8814554
Era disposto a dare il suo braccio destro pur di essere ambidestro.

calcoli.................................
Infatti.
-- 
Lorenzo
"Given enough eyeballs, all bugs are shallow", Linus'Law
(address rot13 encoded)