Programma di criptazione/decriptazione (Parte 2)

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.
purtroppo non hai capito neanche una sillaba di quanto ho scritto nel precedente post
ho mostrato formula che comunque prendi due interi positivi per la fattorizzazione con MCD(s, s mod c) basta fare una sottrazione; paradossalmente ti ho aiutato, visto che fai tanta fatica a trovare le "chiavi": ti ho dato l'algoritmo per scrivere una funzione che non hai! (ma risparmiati la fatica, tanto è inutile). Secondo te si scrive un articolo scientifico per una simile stupidata?
Basta che fai così:
  1. apri Python
  2. in una variabile p, poni p = un numero primo
  3. in una variabile q, poni q = un altro numero primo
  4. in una variabile s, calcola il semiprimo s = p*q
  5. in una variabile c1, poni c1 = s - p e otterrai un intero c1 che tu chiami chiave
  6. in una variabile c2, poni c2 = s - q e otterrai un intero c2 che tu chiami chiave
  7. calcola MCD(s, s mod c1) e vedrai che otterrai p (quindi la fattorizzazione p*q)
  8. calcola MCD(s, s mod c1) e vedrai che otterrai q (quindi la fattorizzazione q*p)
Innanzi tutto io non ho mai fatto fatica per trovare la chiave e neanche vado per tentativi. Quello in cui andavo per tentativi era di trovare il campo in cui l'algoritmo può fattorizzare senza implementare e che, grazie a Mino, adesso posso calcolarlo con estrema precisione.
Per quanto riguarda l'esempio che hai mostrato hai tralasciato una cosa fondamentale, e qui ricadiamo nel paradosso delle dimostrazioni all'acqua di rose. Secondo te la chiave per p è c1=(s-p) e per q è c2=(s-q), ok? Allora prova a fattorizzare con queste due chiavi
s= (p+j1)*(q+j2) dove j1 e j2 sono due interi presi all'interno del campo, che naturalmente non conosci. O volevi dire che la chiave
c1=s-(p+j) che a questo punto non avrebbe nessun senso.

la comunità scientifica è aperta a chi ha i titoli per farne parte, non è aperta né a volenterosi dilettanti, né ai ciarlatani né agli stupidi
Concordo ma io non sono ne stupido ne ciarlatano

Quello che non riesci a capire è che la sicurezza NON STA SOLO nell'enorme dimensione del numero, ma proprio nei numeri stessi.
A parte la dimensione, una caratteristica che si cerca è la massima casualità della rappresentazione binaria del numero: in teoria dei codici si chiama entropia dell'informazione: anche se generi numeri da 13000 bit, non è per niente scontato che siano sicuri perché le sottosequenze di 0-1 che li compongono potrebbero contenere delle regolarità che possono essere sfruttate da un attacco.
I numeri RSA avevano tali caratteristiche, ma poi la crittografia si è evoluta e ormai non si usa più RSA o sue derivate basate sulla fattorizzazione di semiprimi.
Non fare il sapientone con me perchè so benissimo cos'è l'entropia informatica.
Il sistema RSA è considerato ancora molto sicuro tant'è che viene usato anche per scambiare chiavi simmetriche. L'unica preoccupazione di RSA sta nel computer quantistico, ma che come sappiamo è ancora allo stato di progettazione sperimentale. A parte questo, si teme il calcolo quantistico per semiprimi a 2048bit, o 3072bit, ma per semiprimi a oltre 13000bit, neanche con il quantistico riusciresti a fattorizzarli in tempi accettabili.
 
Vedo che Comunque mi citi, ma poi alle mie risposte dirette e corrette poi non replichi. E parlo di informatica non matematica
 
Vedo che Comunque mi citi, ma poi alle mie risposte dirette e corrette poi non replichi. E parlo di informatica non matematica

Questo non è il mio topic e non ti ho citato. Ho mostrato solo a jesse83 dove trovare i semiprimi riguardo la sua richiesta di trovarli.
Secondo poi, scrivimelo qua che in sto thread c'è troppo casino per cercare qualcosa.

Comunque, ti avevo già risposto: Quando sei pronto dimmelo che ti mando il messaggio criptato
 
no tu oggi hai esordito dicendo, che non va giudicato il codice. Ma tu hai scritto del codice. È come dire non giudicare una torta se è brutta l’importante è che sia buona. Anche no perché se sono un pasticcere e mi presenti una frittata buona non vuol dire che sai fare bene le cose.
Immagina se chi ha creato la prima AI L’avesse scritta come il tuo codice? Quale programmatore ci avrebbe capito qualcosa ?

Il codice va scritto bene, con i giusti paradigmi , con le variabili scritte in maniera corretta etc etc.
I principi del CLEAN CODE sono alla base di tutto. Così come i principii SOLID.
Ma tu pensi che chi ti risponda sia stupido e quindi di tutto ciò che si dice te ne freghi.
 
no tu oggi hai esordito dicendo, che non va giudicato il codice. Ma tu hai scritto del codice. È come dire non giudicare una torta se è brutta l’importante è che sia buona. Anche no perché se sono un pasticcere e mi presenti una frittata buona non vuol dire che sai fare bene le cose.
Immagina se chi ha creato la prima AI L’avesse scritta come il tuo codice? Quale programmatore ci avrebbe capito qualcosa ?

Il codice va scritto bene, con i giusti paradigmi , con le variabili scritte in maniera corretta etc etc.
I principi del CLEAN CODE sono alla base di tutto. Così come i principii SOLID.
Ma tu pensi che chi ti risponda sia stupido e quindi di tutto ciò che si dice te ne freghi.
Io mi sono rivolto a Bat per la sua affermazione e gli ho chiesto semplicemente di non fare l'analisi sul codice, come avete sostenuto tu e lui, ma di giudicare il metodo in base alla sua verifica sulla proprietà da lui confermata.
Bat: Sulla crittografia mi esprimo in un prossimo post, ora sono esausto

Non volevo coinvolgerti nella mia risposta. Perciò scusa. Avremo modo di parlarne in un altro topic.
 
@BAT vedo che non demordi (https://www.youtube-nocookie.com/embed/ocwSX3lTjpI?start=64&end=71)! 😅
Non voglio offendere nessuno, ma hai dato l'ennesima riprova che non comprendi i contorni del problema e non capisci quello che scrivo... e te lo dimostro!

Come già detto, la "chiave" di cui parlo nella mia dimostrazione è legata agli intervalli (nel senso che fattorizza qualsiasi semiprimo costituito dal prodotto di una generica coppia di primi prelevati dai due intervalli) e non al singolo semiprimo S=A*B .
Fatta questa dovuta premessa, c'è da dire che nel tuo inutilmente lungo post, sì che hai scoperto l'acqua calda... relativamente al singolo semiprimo infatti vale quanto già avevo detto in modo più conciso in un mio precedente post:

- le chiavi c per cui MCD(A*B , A*B mod c) = B saranno i valori nella forma B(A-k) (e tutti i relativi divisori maggiori di kB ) con 0<k<A/2 , essendo A*B mod c = kB per tutte le chiavi associate ad un certo k ;

- le chiavi c per cui MCD(A*B , A*B mod c) = A saranno i valori nella forma A(B-k) (e tutti i relativi divisori maggiori di kA ) con 0<k<B/2 , essendo A*B mod c = kA per tutte le chiavi associate ad un certo k .

Se invece siamo interessati alla chiave che ci consente di fattorizzare qualsiasi semiprimo costituito dal prodotto di una generica coppia di primi prelevata da due determinati intervalli, allora ovviamente il discorso cambia ed ecco spiegata la condizione a mod c = 1 e il resto della mia dimostrazione.

Quanto appena detto già sarebbe sufficiente per replicare al tuo sopracitato post, ma se vuoi posso anche commentare nello specifico alcune cose che hai scritto...



Tutto molto semplice, ovvio e soprattutto generale, infatti su s, p, q non è stata fatta nessuna ipotesi né posto alcun vincolo, trovi la fattorizzazione per qualunque coppia di numeri (entrambi primi, entrambi composti, un primo e un composto, possono anche essere uguali).
FALSO, usando la tua notazione, se p=2 sarà MCD(s , s mod (s-q)) = s . Per esempio per s=2*2 sarà MCD(4 , 4 mod 2) = 4 .



Ci sono infinite chiavi, ecco perché alla fine ci sbatte contro
FALSO, tralasciando il contesto in cui l'hai detto, affinché s mod c ritorni un numero minore di s , deve essere c<=s , quindi le chiavi c non possono mai essere infinite...



Penso che su matematicamente non ti hanno risposto perché hai presentato male la questione, le premesse iniziali
premesse.webp
sembrano scollegate dalle 2 dimostrazioni che esponi, non si capisce dove vuoi andare a parare. Invece a me quelle premesse piacevano perché dal poco che si capisce di quello che fa @piergiac-1 le elevazioni a potenza di numeri primi sono pane quotidiano.
Lo screenshot che hai postato mostra la formalizzazione da me fatta del metodo utilizzato in principio dall'autore.
Inoltre c'è da dire che tale formalizzazione è antecedente alla mia dimostrazione, infatti dalla dimostrazione si evince che quella riscontrata sperimentalmente dall'autore è solo un caso particolare rispetto alla proprietà matematica generale da me dimostrata.



Alla base del tuo ragionamento iniziale c'era un'affermazione palesemente falsa...
[...]
bastavano carta, penna e 3 secondi per verificare che se hai 15=3*5=5*3 li fattorizzi con MCD(15, 15 mod c) in almeno 2 modi:
15 mod 10 = 5 -> MCD(15,5) = 5 -> 15 = 5 * 3
15 mod 4 = 3 -> MCD(15,3) = 3 -> 15 = 3 * 5
oltre a c=10 e 4 si fattorizza anche con c=12, 6, 9,;
ovvio che ti ho bollato come sbagliata la dimostrazione, con una simile premessa mi sembrava una perdita di tempo inutile controllare il resto.
L'errore ti ha fatto ragionare su mezza verità, un mesetto buono per arrivare alla conclusione che la fattorizzazione esiste, facendo 15 passaggi di calcoli laboriosi nella prima versione e 10 nella seconda. Ti ha infatti obbligato ad imporre la condizione a mod c = 1, l'unico modo per arrivare ad ottenere il numero primo più piccolo, e da lì tutti i calcoli.
Non so perché sei andato a ripescare quest'affermazione
Il primo passo è stato quello di inquadrare meglio e formalizzare il metodo proposto dall'autore, che più o meno dovrebbe essere il seguente.
Sia p un numero primo e siano e1 > e2 e b degli interi positivi. Sia poi z = p^[(e1+e2)/2] (dove le parentesi quadre indicano in questo caso la divisione intera), mentre p1 e p2 sono due generici numeri primi appartenenti rispettivamente agli intervalli [p^e1 + 1 ; p^e1 + 2^b] e [p^e2 + 1 ; p^e2 + 2^b] . Si afferma che determinati valori di p, e1, e2 e b individuano una famiglia di semiprimi s = p1*p2 (costituiti cioè dal prodotto di due primi prelevati da ciascuno dei suddetti due intervalli) per cui la formula MCD(s , s mod z) fornisce la fattorizzazione del semiprimo (restituendo il MCD o p1 o p2 ). Fine.

Non starò qui a tediarvi con tutti i passaggi, mi limito quindi a dire che, ragionando matematicamente su quanto appena scritto, ho dedotto che il suddetto MCD non può restituire il maggiore dei due numeri primi (ossia p1), quindi qualora il metodo fosse corretto dovrà per forza essere

a)
MCD(s , s mod z) = MCD(p1*p2 , p1*p2 mod z) = p2
che rappresenta un passaggio intermedio ormai superfluo che mi ha aiutato a passare dall'enigmatico metodo dell'autore alla mia dimostrazione, ma ti devo contraddire sul fatto che sia "palesemente falsa", sull'altro sito infatti l'ho anche dimostrata:

1234.webp



Infine dovresti ancora chiarire i seguenti due punti:

1)
invece la "dimostrazione" di @M1n021 non porta a nulla
L'hai capito che una cosa è trovare una chiave per fattorizzare un singolo semiprimo, un'altra è trovare una chiave che funzioni per più semiprimi contemporaneamente?
La mia dimostrazione fa la seconda cosa, definendo chiave e intervalli in cui funziona... a tal proposito ricordo ancora un tuo vecchio post:
Ci saranno altri numeri primi che una struttura non ce l'hanno (oppure ce l'hanno ma è diversa da quella con cui sono generati p e q); come diavolo puoi credere/pretendere che la chiave z nel modulo fattorizzi pure semiprimi generati con quelli? deve essere veramente magica se ne basta una, sempre quella, sempre la stessa, per domarli tutti, manco fosse il Signore degli Anelli.
Assurdo no? Questa non è matematica, è fantascienza.

2)
conclusione: del tuo arzigogolato meccanismo non funziona una mazza, a partire dalla "formula" per determinare gli insiemi alle "chiavi" -> la dimostrazione è sbagliata
Ne sei ancora convinto dopo che qui ho smontato le tue obiezioni e qui ti ho fornito tutti gli esempi che vuoi?
 
io non sono ne stupido ne ciarlatano
ma non hai i titoli, di matematica non ne sai nulla, e in tutto questo pretendi di conoscere la crittografia meglio dei professionisti, va beh, ci rinuncio
Ne sei ancora convinto dopo che qui ho smontato le tue obiezioni e qui ti ho fornito tutti gli esempi che vuoi?
tranquillo, a posto così 👍
vorrà dire che rimaniamo tutti in trepidane attesa che il nuovo rivoluzionario algoritmo metta in sicurezza le transazioni bancarie
buon proseguimento boyz
 
Per me questa discussione si può anche chiudere.
Vedo sempre arroganza in alcune risposte e poca educazione. La community non l’ho vista interessata a rispondere al dilemma se non le solite 3/4 persone!

Vediamo cosa ne pensano i super mod
 
Questo non significa che non la seguiamo, anche perché sono state scritte cose e la community (4000k visualizzazioni comunque...) si aspetta che vengano mantenute.
Troppo facile dire io qua, io là, io faccio e dopo aver tirato il sasso nascondere la mano.
Le parole volano, ma lo scritto resta. ^^
 
tranquillo, a posto così 👍
vorrà dire che rimaniamo tutti in trepidane attesa che il nuovo rivoluzionario algoritmo metta in sicurezza le transazioni bancarie
buon proseguimento boyz
@BAT sinceramente, perché la butti in caciara!? Dai... un po' di onestà intellettuale...
Parlate tanto di educazione attaccandovi a delle sciocchezze, ma poi quando si tratta di rispetto vero e proprio, inteso dal mio punto di vista come interazione sincera e nel merito col proprio interlocutore, non mi sembrate tanto coerenti...
Nel mio precedente post mi sono impegnato a replicare ad ogni tua obiezioni, perché non mi ricambi la cortesia?
 
Io quello che faccio lo posto e lo posto gratuitamente, se dico che sono impegnato in un altro progetto a cui sto lavorando anche ora 23.52 di sera legato all'AI (al di fuori del mio lavoro e della famiglia) mi pare di aver postato proprio ieri la versione 1.0.0 di questo progetto
 
Non fare il sapientone con me perchè so benissimo cos'è l'entropia informatica.
ecco! dopo i byte da 6 e da 7 bit l'entropia informatica mi mancava proprio 🤣
la cosa buona di averti conosciuto on-line è che talvolta riesci a mettermi di buon umore con le tue perle di sapienza

ero rientrato nella discussione per segnalare una correzione del mio precedente post ma nel frattempo:
FALSO, usando la tua notazione, se p=2 sarà MCD(s , s mod (s-q)) = s . Per esempio per s=2*2 sarà MCD(4 , 4 mod 2) = 4 .
scrivo post, non teoremi per libri di algebra.
Ad ogni modo, dopo la tua segnalazione e aver fatto ulteriori controlli, ho provveduto ad indebolire la condizione sui numeri p, q restrigendo la tesi semplicemente ai numeri primi dispari (quindi il 2 è escluso) e in modo che p e q siano differenti tra loro: in questo modo non c'è nessuna perdita di generalità, si rispetta il contesto reale in cui tali numeri sono usati e si tolgono di mezzo i casi banali. Ad ogni buon conto ho aggiunto una [NOTA-EDIT] casomai qualcuno dovesse confondersi.
FALSO, tralasciando il contesto in cui l'hai detto, affinché s mod c ritorni un numero minore di s , deve essere c<=s , quindi le chiavi c non possono mai essere infinite...
Semplice equivoco dovuto all'uso errato (da parte mia) della parola "chiave": ci sono di infiniti valori di z*p che soddisfino l'uguaglianza MCD(p*q, z*p)=p (simmetricamente infiniti valori w*q che soddisfino l'uguaglianza MCD(p*q, w*q)=q), ed è a quelli che mi riferivo. Colpa mia aver scritto "chiave" per sbrigarmi nel commento finale, ma mi riferivo ad altro.
I valori sono finiti se ci metti un limite (che tu chiami "chiave") e io non l'ho fatto. Che quelli "interessanti" siano <pq sono d'accordo e vanno calcolati con una equazione con congruenza, e qui vengo al motivo per cui ero rientrato nella discussione:
ho corretto una parte del post dove parlavo di altri valori di c a parte s-p ed s-q ricavabili da sottrazioni di valori multipli di p o di q: ho sostituito quella parte mettendoci direttamente l'equazione con congruenze da risolvere, e che lascio a chi ne ha la competanza perché non è matematica che ho studiato, la variabile sta nel modulo e non so se ci siano metodi diretti e/o efficienti per risolverla (il "for" in un programma lo fa ma in modo inefficiente).

La faccenda "una chiave che funzioni per più semiprimi" è seria ma non è "una nuova scoperta mai osservata", una cosa molto simile si trova nel teorema cinese dei resti che riguarda sistemi di equazioni con congruenza (vago ricordo del corso di Geometria ed Algebra seguito un milione di anni fa) e non ci sarebbe troppo da stupirsi se ci fosse proprio quello dietro alla risposta; se non quello, in concetti più avanzati di teoria dei numeri. Quindi no, non è fantascienza, ma dovete chiederlo ai professionisti del campo, non a me.
Sia come sia, rimane il fatto che la "chiave" la decide il programmatore quindi trovo decisamente più sensato affidarsi alle soluzioni esistenti certificate.

Buon proseguimento a tutti sul forum.
 
ecco! dopo i byte da 6 e da 7 bit l'entropia informatica mi mancava proprio 🤣
la cosa buona di averti conosciuto on-line è che talvolta riesci a mettermi di buon umore con le tue perle di sapienza

ero rientrato nella discussione per segnalare una correzione del mio precedente post ma nel frattempo:

scrivo post, non teoremi per libri di algebra. Gli unici casi banali sono p=q=2 (nessuna soluzione) e p=2, q=3 con unica soluzione c=4, in tutti gli altri casi ci sono almeno le 2 soluzioni c(1)=s-p e c(2)=s-q, quindi non c'è nessuna perdita di generalità. Anche il programma in C calcola nel primo caso 0 soluzioni e nel secondo 1 sola. Ad ogni buon conto ho aggiunto una [NOTA-EDIT] casomai qualcuno dovesse confondersi.

A parte il fatto che non mi piace il termine "chiave" per indicare un valore, nel contesto in cui l'ho detto c è un singolo valore non legato a intervalli quindi le cose stanno come ho detto. I valori sono finiti se ci metti un limite e io non l'ho fatto. Che quelli "interessanti" siano <pq sono d'accordo e vanno calcolati con una equazione con congruenza, e qui vengo al motivo per cui ero rientrato nella discussione:
ho corretto una parte del post dove parlavo di altri valori di c a parte s-p ed s-q ricavabili da sottrazioni di valori multipli di p o di q: ho sostituito quella parte mettendoci direttamente l'equazione con congruenze da risolvere, e che lascio a chi ne ha la competanza perché non è matematica che ho studiato, la variabile sta nel modulo e non so se ci siano metodi diretti e/o efficienti per risolverla (il "for" in un programma lo fa ma in modo inefficiente).

La faccenda "una chiave che funzioni per più semiprimi" è seria ma non è "una nuova scoperta mai osservata", una cosa molto simile si trova nel teorema cinese dei resti che riguarda sistemi di equazioni con congruenza (vago ricordo del corso di Geometria ed Algebra seguito un milione di anni fa) e non ci sarebbe troppo da stupirsi se ci fosse proprio quello dietro alla risposta; se non quello, in concetti più avanzati di teoria dei numeri. Quindi no, non è fantascienza, ma dovete chiederlo ai professionisti del campo, non a me.
Sia come sia , rimane il fatto che la "chiave" la decide il programmatore quindi trovo decisamente più sensato affidarsi alle soluzioni esistenti certificate.

Buon proseguimento a tutti sul forum.
Ci sono due cose che risaltano da questo topic: il tuo infantilismo e la tua incoerenza
Adesso ti tocca di lasciare la discussione perchè non sai più come mettere una pezza a tutte la cavolate che hai detto sulla proprietà matematica e la sicurezza informatica. In poche parole ti stai arrampicando sugli specchi pur di non dire la parola magica.... Scusate ho sbagliato.

Come ha detto una persona saggia. Le parole volano ma lo scritto rimane.
 
non sai più come mettere una pezza a tutte la cavolate che hai detto sulla proprietà matematica
sbagliato perché l'ho fatto: non è vero che è una "scoperta mai fatta prima" a prescindere da quale sia il motivo matematico (profondo o meno); quindi tutto il discorso sulla sicurezza decade, matematica o non matematica, sbaglio di giudizio da parte mia o meno.

La discussione la lascio perché nella vita ho molto di meglio da fare.
Buon lavoro.

P.S.
su questo forum ti è stato dato molto più spazio di quanto non sia stato fatto su tutti gli altri forum messi insieme in tutti gli anni che hai presentato la questione. Quindi facciamo così: visto che ogni volta che intervieni tu si finisce in flame, suggerisco a te e chi collabora con te di ripresentare la questione su un forum come matematicamente dove fino ad ora ti faccio notare che non hanno risposto. Solo che questa volta invece di presentarla in modo confuso, presentate tutto il pacco dall'inizio dato che lì nessuno ha capito che la cosa vuole essere collegata alla crittografia né alle modalità in cui dovrebbe avvenire. Trovate tutte le conferme che volete e fine della storia.
Io mi limito a dire che se uno vuole fare crittografia prima deve studiare a fondo la teoria dei numeri, se poi vuoi pure presentare un programma o una applicazione deve imparare a programmare come si deve invece di fare un guazzabuglio di codice.

Fino ad allora credo che concordino tutti con me che ci si deve affidare a soluzioni certificate e ampiamente collaudate.

Chiudo.
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top