Domanda Come decodificare RSA?

Stato
Discussione chiusa ad ulteriori risposte.
Prima di mettermi a fare qualcosa del genere devo avere la convinzione che quello che sto facendo abbia senso, voglio che ci sia come minimo una solida base teorica sul funzionamento di questa roba. Non mi metto a programmare roba potenzialmente (non so cosa tu abbia in mente) impegnativa senza essere convinto di quello che sto facendo. Ma al di la di questo, in questo momento non ho né il tempo e né la voglia di fare questa cosa quindi il mio è un no a prescindere da tutto il resto.
Comunque gli attacchi a RSA esistono

c'è una specie di standard nella scelta del numero da fattorizzare quando lo scegli?
Si, c'è una specie di standard che è fatto apposta per non farti scegliere numeri fragili (attaccabili in qualche modo). Questo "standard" lo trovi spiegato su qualsiasi libro di crittografia.

Però fino a quando non ho provato a creare un codice tutto mio non avevo capito proprio niente, nel senso che io cercavo di decodificare l'RSA tramite la fattorizzazione ed invece ho capito che basta vedere l'algoritmo che genera la scelta del numero da fattorizzare.
Ecco, il modo in cui RSA sceglie i numeri primi (lo "standard" di cui parlavamo prima) è fatto apposta per costringerti a dover attaccare l'algoritmo utilizzando il problema della fattorizzazione. Adesso ci puo' anche stare che ci sia qualche cavillo che non hanno considerato (anche se sarebbe una notizia degna di nota), ma dubito che tu sia riuscito a trovarlo senza sapere di questi "standard" e di che tipi di attacchi impediscono.
 
  • Mi piace
Reazioni: P_1_6
Esiste pure GNFS come algoritmo, che è estremamente complesso ma il migliore per quanti numeri al di sopra di 100, la notazione di questi algoritmi è espressa così:
535cd3b29d7dabc6826e51f46f219dc1.png
 
  • Mi piace
Reazioni: murdercode
Devi prima imparare la matematica di base, altrimenti ciò che scrivi non ha senso. Già quando scrivi "X00-1891=(X-19)09" (nella seconda riga del tuo messaggio precedente) io non capisco cosa stai dicendo con X00 e con 09 e non vado avanti a leggere.
Devi usare un linguaggio corretto se vuoi anche solo avere la speranza di essere ascoltato da qualcuno, altrimenti l'impegno per cercare di capire quello che stai dicendo non giustifica la nostra volontà nell'aiutarti. Se non hai delle solide basi, come puoi pretendere di risolvere il problema della fattorizzazione?
Dovresti investire una settimana del tuo tempo per scrivere un post esaustivo e preciso, spiegando prima l'algoritmo nel caso generale dove n=p*q (letterali) e poi portare un esempio di un caso specifico dove scegli un valore per p e per q. Finché quello di cui parli non è scritto chiaramente, difficilmente gli altri si renderanno disponibili ad aiutarti seriamente.

Ho appena letto il crivello quadratico ma è probabilistico ho visto?
Il fatto che sia un algoritmo probabilistico non è un problema, anche l'algoritmo che viene usato per scegliere i numeri primi è probabilistico. Il setaccio quadratico è buono per fattorizzare numeri di ~40 cifre decimali, che non sono poi così tante.

Se funziona il mio, che complessità computazionale ha?
Prima devi trasformare quello che hai in testa (e che hai provato a grandi in qualche modo) in un algoritmo. Dopo che abbiamo un algoritmo, possiamo provare a calcolare il suo costo.
 
  • Mi piace
Reazioni: _ _
X*1000 - 45459487= (X-4546)*1000+0513 si testa 4546

Che cosa è X? Come hai ottenuto valori massimi e minimi? Perché stai facendo questo conto?
Finché riporti conti che a noi appaiono completamente arbitrari, formattati male, senza la minima giustificazione non capiremo mai cosa vuoi dire.

Stessa roba più avanti, ramo sinistro e destro? Di diversi livelli? Cosa sono?
 
  • Mi piace
Reazioni: St3ve

P_1_6

Utente Silver
2 Dicembre 2015
195
9
5
79
Ciao
sto studiando eticamente come decodificare RSA.
Però fino a quando non ho provato a creare un codice tutto mio non avevo capito proprio niente, nel senso che io cercavo di decodificare l'RSA tramite la fattorizzazione ed invece ho capito che basta vedere l'algoritmo che genera la scelta del numero da fattorizzare.
Quindi la cose che voglio chiedervi sono:
- Quale delle due strade è giusta? Ce ne sono delle altre?
- Ci sono delle linee guida per scegliere il numero da fattorizzare? Quali sono ?
 
Premetto che conosco poco sull' argomento ma quello che ho capito è che... non puoi decodificare un codice crittografato con RSA se non provando a fattorizzare la chiave pubblica nei suoi 2 numeri primi. Chiaramente più la chiave sarà grande e più sarà lungo questo processo. Che intendi con "basta vedere l' algoritmo che genera la scelta del numero da fattorizzare"?
L' algoritmo dietro RSA sta nei 2 numeri primi scelti casualmente che rimangono nascosti e solo il prodotto di questi numeri primi è visibile a chi deve crittografare un messaggio.
Link utile : https://it.wikipedia.org/wiki/RSA
 
Non puoi vederli. In una comunicazione non vengono inviati i numeri primi, ma vengono usati per generare una chiave pubblica per crittografare un messaggio. Per decifrare il messaggio poi non puoi riutilizzare la stessa chiave. È il principio della crittografia a chiave asimmetrica. Solo chi ha generato questa chiave pubblica può decriptare il messaggio.
 
La mia domanda in sintesi è:
c'è una specie di standard nella scelta del numero da fattorizzare quando lo scegli?
 
Da quel che ho capito il numero che dovresti fattorizzare è il prodotto di due numeri primi che vengono scelti totalmente a caso. Normalmente questi numeri sono molto grandi (almeno 300 cifre) e ciò rende RSA molto molto sicuro.
 
Non possono essere scelti totalmente a caso. Chi scrive l'algoritmo di scelta del numero da fattorizzare deve tener conto del funzionamento dei vari algoritmi di fattorizzazione.
 
La fattorizzazione è la riduzione di un numero N in fattori A, B, C, D, ecc... tale che N = A * B * C * D, ecc. Non capisco quello che vuoi intendere. Riguarda la sezione Funzionamento della pagina di Wikipedia che ti ho linkato.
 
Scegli un numero di al massimo 12 cifre che sia prodotto di due primi casuali e te lo spiego con un esempio.
 
Ma cosa è X? Cosa è N? Spiega da dove ti sei ricavato quella equazione. Per fattorizzare 221 devi trovare semplicemente 2 numeri primi il cui prodotto sia 221.
 
Ciao per chiunque voglia giocare alla decodifica RSA.
Il gioco consiste nel fattorizzare questo numero 15770980399 con il minor numero di step con metodo standard valido per tutti gli RSA.
Vi faccio un esempio non standard cioè i numeri non sono gli stessi per tutti gli RSA (qui ho seguito http://www.albericolepore.org/lepore-factorization-rsa/)

15770980399

G=2628496733
A=12266318088
B=3504662311

A-2a^2-a=P(6a+1)

B+2a^2+a=N(6a+1)

G-a=b(6a+1)

L'equazione combinata dopo l'analisi è:
17[2(A-2a^2-a-3(B+2a^2+a))+G-a]-G+a=i(6a+1)

a=19330
15770980399=115981*135979
quindi decodifica in 3 step

Ora vi mostro un metodo standard (qui ho seguito questo http://www.albericolepore.org/lepore-factorization-rsa/ e questo http://www.albericolepore.org/2-fattorizzazione-di-lepore/)

{n+(15770980399-X^2-G+(X-1)/6]}/(6a+1)=
={G-6a^2-2a + [15770980399 -(6a+1)^2-G+a]}/(6a+1)=i
i=668 step

Testa qui

Trova una soluzione migliore
 
Stato
Discussione chiusa ad ulteriori risposte.