Newsgroup: it.comp.sicurezza.crittografia
Titolo: Re: RSA maxLength

 Si pu� calcolare la massima lunghezza di stringa criptabile con RSA?
 
Intendi dire la minima lunghezza? Perch� la massima lunghezza dipende 
solo dalla memoria del computer.
 
Cristiano

Cristiano ha scritto quanto segue il 26/03/2013 13.27>

No, intendo proprio la massima.
La minima non ho provato penso mi prender� anche 1 o 0.
Nella massima ho problemi.
Con un codice se con una Rsa 1024 uso pi� di caratteri 85 ottengo un:
"Message too long for RSA: "
Orientativamente dovrebbe essere 1024/8=128 - il padding che non so 
quantificare.


Qual � il "codice" che ti d� quel messaggio?
Il problema dipende dalle limitazioni/convenzioni che adotta il codice 
che usi, perch�, come saprai, l'RSA � semplicemente un numero elevato ad 
un altro numero (con modulo), per cui, dal punto di vista matematico non 
c'� alcuna limitazione, mentre per ragioni (ovvie) di sicurezza i 
messaggi pi� corti del modulo devono essere paddati.
 
Cristiano


in questa pagina il campo "Text to encrypt." � settato a 87 perch� se si 
inserisce una stringa pi� lunga da quell'errore.
 
 

 inserisce una stringa pi� lunga da quell'errore.
 
Quindi, come tu stesso hai verificato, � una limitazione che impone il 
sito, per cui non � calcolabile.
 
Qualunque programma che usa l'RSA dovrebbe accettare qualunque lunghezza 
del messaggio da 1 bit ad "infinito" (memoria del PC permettendo).
 
Cristiano


questo programma pare di no

crippo ha scritto quanto segue il 26/03/2013 17.13>

Forse il termine keysize ha ingenerato un equivoco.
Non mi sto riferendo alla lunghezza della chiave: 1024, 2048, 4096 ma a 
quella del testo criptato con l'algoritmo.

 quella del testo criptato con l'algoritmo.
 
Ti ï¿œ giï¿œ stato risposto: RSA non ha limiti superiori.
 
-- 
Flavio Visentin
 
Scientists discovered what's wrong with the female brain: on the left
side, there's nothing right, and on the right side, there's nothing left


Come hai allora, p.e., qui consigliano di splittare il messaggio per 
farlo rientrare in blocchi di 117-byte?
http://goo.gl/vkkmJ
 

 farlo rientrare in blocchi di 117-byte?
http://goo.gl/vkkmJ
 
 
perchè poni una domanda su un link, quando la risposta è nel link
stesso?


La domanda originaria non era posta sul link.
Il link l'ho postato in risposta al post di sopra.

 Il link l'ho postato in risposta al post di sopra.
 
non ho affatto detto che la domanda fosse nel link, ho detto che la
risposta alla tua domanda era lì.


Quindi ricapitolando tutta la sicumera delle affermazioni riguardo alla 
illimitezza della lunghezza del testo da criptare in Rsa � messa in dubbio?
Il post parla di "the padding adds at least 11 bytes" mentre lo script 
che ho postato per esempio da un warning gi� a 87 caratterni e non a 
117. Il post ribadisce la fondatezza della domanda ma non la soddisfa: 
in base a quale criterio si stabilisce la lunghezza possibile di un 
testo da criptare in Rsa?

 testo da criptare in Rsa?
 
Mi riferivo al fatto che la tua domanda "> Come hai allora, p.e., qui
consigliano di splittare il messaggio per farlo rientrare in blocchi
di 117-byte?" avesse risposta nello stesso thread: se noti bene,
infatti non si parla di RSA teorico, ma di uno standard molto
particolare che si chiama PKCS 
http://en.wikipedia.org/wiki/PKCS_%E2%99%AF1
 
(bada bene, ce ne sono altri), in più il topic stesso suggeriva di non
usare RSA per crittare un messaggio, ma di crittare una chiave K e
usare un algoritmo simmetrico con la suddetta chiave K per cifrare il
messaggio M (e te lo suggerisco anch'io, anche perchè, almeno per
quanto mi riguarda, tutti i "possibili" security flaws di RSA mi fanno
venire il maldimare e preferisco averci a che fare il meno possibile).
Detto ciò passiamo alla domanda principale del topic:
"Si può calcolare la massima lunghezza di stringa criptabile con RSA?"
- la risposta ufficiale è "no", almeno, posta così
RSA non è un cifrario a blocchi, è un cifrario asimmetrico con un
teorema matematico ben preciso dietro:
la lunghezza massima di un messaggio M è data dal modulo N (prodotto
dalla moltiplicazione di 2 numeri primi molto grandi) quindi
teoricamente, RSA non ha limiti, basta solo trovare un N più grande
(anche se poi, se M è troppo piccolo rispetto a N scattano casini
anche parecchio problematici) quindi con la giusta quantità di
volontà, memoria, paranoia, potenza computazionale, e soprattutto
masochismo, puoi arrivare alle stelle (cito un caso *al limite* ma poi
neanche tanto 
http://www.hermann-uwe.de/blog/creating-32768-bit-rsa-keys-for-fun-and-profit
 
)
 
Un RSA con modulo N è valido quindi solo con messaggi inferiori a N,
quindi il massimo M crittabile è N-1, semplicemente perchè dobbiamo
comunque mappare la funzione in modo giusto, non possiamo far sì che
due messaggi M1 e M2 abbiano lo stesso output e dobbiamo evitare in
sostanza la situazione M1^e mod N = M2^e mod N.
 
Tornando al mondo reale, per comunicare, abbiamo bisogno di standard,
protocolli, possibilmente abbastanza sicuri da non essere un pelo di
buco di culo fra i denti, tra questi rientra, ad esempio lo schema di
padding di PKCS (che sarà da qualche parte qua dentro 
http://tools.ietf.org/html/rfc3447
 
) e l'uso di blocchi standard di testo (117+11 fa giusto giusto 128,
un bel mattoncino fatto bene ;) )
 
Per quanto riguarda il caso specifico "quel programma là" ammetto
sinceramente di avergli solo dato un'occhiata, e ti dico, ancora
sinceramente, che l'idea del javascript unito a RSA, mi fa torcere le
budella xD, ti sconsiglio di usarlo a priori, ma in generale qualsiasi
tool browser-oriented
 
spero di essere stato abbastanza chiaro, se hai altri problemi chiedi
pure

 pure
 
neanche un grazie? :(


Ti ringrazio per lo sforzo profuso ma la risposta rimane lontano dal 
bersaglio.
La risposta � molto pi� semplice. Il padding che di solito � 11, in quel 
caso � maggiore perch� il messaggio da criptare viene prima tradotto in 
Base64.
Inoltre � ancora fuorviante quando nega che si possa calcolare la 
massima lunghezza di stringa criptabile con RSA.
Quella domanda presuppone dal contesto emerso che si parla di massima 
lunghezza all'interno di ogni lunghezza della chiave RSA, altrimenti � 
ovvio che se ampio la chiave proporzionalmente ampio anche il criptabile.
Riguardo allo JS, non capisco i contorcimenti ad usarlo, a 1024 bit � 
efficace, velocissimo e consente applicazioni browser-oriented 
altrimenti inesperibili con approcci pi� ortodossi senza plugin.

 Base64.
Per precisione: il padding rimane invariato, cambio la lunghezza del 
messaggio criptato che da 87 con la conversione Base64 diventa 117.

 altrimenti inesperibili con approcci più ortodossi senza plugin.
praticamente merda
 
javascript serve solo a far involvere l'utente medio.
 
Sinceramente hai rotto le scatole, capisco perchè avevano smesso tutti
di risponderti.
 

 sostanza la situazione M1^e mod N = M2^e mod N.
 
Il problema di cui parli � irrilevante rispetto al vero problema che uno 
ha se pretende di cifrare messaggi maggiori di N in una sola operazione: 
se M > N, come pu� essere possibile decifrare M^e (mod N)? Qualunque 
tentativo di decifratura porterebbe ad un messaggio "in chiaro" privo di 
senso.
 
E' tanto ovvio quanto obbligatorio spezzettare il messaggio da cifrare 
facendo in modo che ogni pezzo di messaggio in ingresso alla cifratura 
sia minore del modulo, ma questo non significa che: "Un RSA con modulo N 
� valido quindi solo con messaggi inferiori a N"; significa solo che 
bisogna usare le cose correttamente.
 
Quindi ribadisco ancora che con l'RSA ci si pu� cifrare qualunque 
messaggio. Che poi l'RSA ha le sue limitazioni lo sappiamo, ma questo � 
un altro discorso.
 
Cristiano

 Cristiano
 

 se leggi bene � esattamente quello che ho detto io, [...]
 
*Esattamente* quello che hai detto tu?! O_O
E' talmente evidente che quello che hai detto tu non ha niente a che 
vedere con quello che ho detto io che � meglio che chiudo qui.
 
Cristiano
 

 N sia valido


maggiore di N sia valido
 


il solito troll insomma, non ha detto nulla, non s'è spiegato e crede
di aver ragione.
vabbè