Perché i numeri primi sono importanti nella crittografia?


191

Una cosa che mi colpisce sempre come non crittografo: perché è così importante usare i numeri primi? Cosa li rende così speciali nella crittografia?

Qualcuno ha una breve spiegazione semplice ? (Sono consapevole che ci sono molti primer e che la crittografia applicata è la Bibbia, ma come detto: non sto cercando di implementare il mio algoritmo crittografico e le cose che ho trovato mi hanno fatto esplodere il cervello - non ci sono 10 pagine di formule matematiche per favore :))

Grazie per tutte le risposte Ho accettato quello che mi ha reso più chiaro il concetto reale.


Un paio di osservazioni: 1. Le persone che seguono menzionano che "la scomposizione in fattori primi di grandi numeri richiede molto tempo". In realtà, lo stesso vale per qualsiasi fattorizzazione. L'importante è che qualsiasi numero intero! = 0 abbia una fattorizzazione unica come prodotto di numeri primi (incluso 1, che ha una decomposizione di lunghezza 0).
TT_

1
2. Controlla la mia spiegazione del perché i numeri primi sono importanti per le funzioni hash: stackoverflow.com/questions/1145217/… È correlato alla proprietà dei polinomi con coefficienti appartenenti a un campo (che probabilmente non è una breve spiegazione).
TT_

2
Troppo semplice breve spiegazione → Solve: a * b = 91. Ora, risolvere: 13 * 7 = x. La seconda equazione è molto più rapida da risolvere (per un essere umano o un computer).
Dem Pilafian,

Risposte:


204

Spiegazione più basilare e generale: la crittografia riguarda la teoria dei numeri e tutti i numeri interi (tranne 0 e 1) sono costituiti da numeri primi, quindi si tratta molto di numeri primi nella teoria dei numeri.

Più in particolare, alcuni importanti algoritmi crittografici come RSA dipendono in modo determinante dal fatto che la fattorizzazione primaria di grandi numeri richiede molto tempo. Fondamentalmente hai una "chiave pubblica" composta da un prodotto di due numeri primi grandi usati per crittografare un messaggio e una "chiave segreta" composta da quei due numeri primi usati per decifrare il messaggio. Puoi rendere pubblica la chiave pubblica e tutti possono usarla per crittografare i messaggi, ma solo tu conosci i fattori primi e puoi decrittografarli. Tutti gli altri dovrebbero considerare il numero, che richiede troppo tempo per essere pratico, dato l'attuale stato dell'arte della teoria dei numeri.


7
Mentre entriamo nell'era dell'informatica quantistica, sembra appropriato notare che la fattorizzazione dei numeri primi usando un computer quantistico può essere raggiunta in un tempo polinomiale usando l'algoritmo di Shor en.wikipedia.org/wiki/Shor%27s_algorithm È probabile che esistano già dei computer che possono decodifica la crittografia della chiave pubblica come RSA
stujo,

16
@stujo: stai sovrastimando enormemente lo stato dell'informatica quantistica. È infatti certo che non esiste tale computer. Il numero più grande che è stato preso in considerazione usando l'algoritmo di Shor e gli sforzi di ricerca all'avanguardia nell'hardware quantistico è 21. Non sono 21 bit, ma il numero 21, fattori primi 3 e 7.
Michael Borgwardt,

1
Non sono sicuro di quali siano i dati attuali, è difficile ottenere informazioni sull'ultimo lavoro, credo che sia stato nel 2012, questo articolo è del 2014 ( m.phys.org/news/2014-11-largest-factored- quantum-device.html ) Abbiamo visto dati pubblici dal 2016? Non escludere ciò che potrebbe essere classificato. Sebbene non sia in grado di eseguire l'algoritmo di Shors, D-Wave ora supera i 1000 qbit
stujo

1
@stujo: gli stessi principi governeranno quando tutti noi useremo CPU quantistiche, poiché i numeri primi possono continuare a crescere, è tutto sulla ricerca di CPU più grandi, poco pratiche, il problema esiste se alcuni usano il CPUS regolare per creare le chiavi, e altri usano le CPU quantistiche per rompi quelli. Il potere delle CPU quantistiche, come ho capito, è che usa qbit, ogni qbit può avere 3 valori, quindi la nuova tecnologia è base 3 non base 2. una CPU a 64 qbit avrebbe 3 ^ 64 combinazioni in una parola. Non so come influisce sulle prestazioni.
juanmf,

5
@juanmf: la tua comprensione del calcolo quantistico è completamente sbagliata. Non ha assolutamente nulla a che fare con il fatto di avere 3 valori, che sarebbero assolutamente poco interessanti. I dettagli sono molto complessi, ma l'effetto è che alcuni algoritmi quantistici possono risolvere problemi con una complessità Big-O inferiore rispetto agli algoritmi "normali" su hardware non quantistico.
Michael Borgwardt,

137

Semplice? Sì.

Se moltiplichi due numeri primi grandi, otterrai un numero enorme non primo con solo due (primi) fattori primi.

La fattorizzazione di quel numero è un'operazione non banale e quel fatto è la fonte di molti algoritmi crittografici. Vedi le funzioni a senso unico per maggiori informazioni.

Addendum: solo un po 'più di spiegazione. Il prodotto dei due numeri primi può essere usato come chiave pubblica, mentre i numeri primi stessi come chiave privata. Qualsiasi operazione eseguita sui dati che può essere annullata solo conoscendo uno dei due fattori sarà non banale da decifrare.


2
Vale anche la pena notare che, oltre al problema della fattorizzazione, molta criptovaluta moderna si basa anche (o invece) sul problema del logaritmo discreto. Entrambe sono funzioni "a senso unico": è facile prendere input noti e calcolare una risposta, ma è difficile prendere una risposta e calcolare quegli input.
Nezroy,

4
Collegare questa spiegazione al termine "funzione a senso unico" sarebbe utile: en.wikipedia.org/wiki/One-way_function
Chris Conway,

Ma se la chiave pubblica può essere utilizzata per crittografare perché non può essere utilizzata per fare il contrario?
jayarjo,

45

Ecco un esempio molto semplice e comune.

L' algoritmo di crittografia RSA che viene comunemente utilizzato nei siti Web di commercio sicuro, si basa sul fatto che è facile prendere due numeri primi (molto grandi) e moltiplicarli, mentre è estremamente difficile fare il contrario - il che significa: prendere un un numero molto grande, dato che ha solo due fattori primi e li trova.


30
Proprio FYI, il numero che ottieni moltiplicando due numeri primi è chiamato semi-primo.
Matthew Brubaker,

15

Non sono tanto i numeri primi stessi che sono importanti, ma gli algoritmi che funzionano con i numeri primi. In particolare, trovare i fattori di un numero (qualsiasi numero).

Come sai, qualsiasi numero ha almeno due fattori. I numeri primi hanno la proprietà unica in quanto hanno esattamente due fattori: 1 e se stessi.

Il motivo per cui il factoring è così importante è che i matematici e gli informatici non sanno come fattorizzare un numero senza semplicemente provare ogni possibile combinazione. Cioè, prima prova a dividere per 2, quindi per 3, quindi per 4 e così via. Se provi a fattorizzare un numero primo - specialmente un numero molto grande - dovrai provare (essenzialmente) ogni numero possibile tra 2 e quel numero primo grande. Anche sui computer più veloci, ci vorranno anni (persino secoli) per considerare i tipi di numeri primi utilizzati nella crittografia.

È il fatto che non sappiamo come fattorizzare efficacemente un numero elevato che dia forza agli algoritmi crittografici. Se, un giorno, qualcuno riuscisse a capire come farlo, tutti gli algoritmi crittografici attualmente in uso diventeranno obsoleti. Questa rimane un'area aperta di ricerca.


10
In realtà devi solo testare i numeri primi fino alla radice quadrata del numero che stai cercando di fattorizzare.
Matthew Brubaker,

3
Lo so. Era un dettaglio che "trascuravo" in nome della semplicità.
Barry Brown,

@MatthewBrubaker Ti dispiacerebbe spiegare perché questo è? Non capisco davvero.
Kartik Chugh,

4
@KartikChugh ヅ dire che nnon è primo e n = a * b. Se a > sqrt(n), bdeve essere più piccolo e viceversa, altrimenti a * b > nstesso che negherebbe la nostra richiesta iniziale. Quindi per verificare la presenza di prime, controlliamo solo fino a sqrt.
Abhinav Gauniyal,

13

Perché nessuno conosce un algoritmo veloce per fattorizzare un numero intero nei suoi fattori primi. Tuttavia, è molto facile verificare se un insieme di fattori primi si moltiplica per un certo numero intero.


1
È interessante notare che è già possibile in tempo veloce scoprire se un numero è primo.
nes1983,

Manca qui "se i fattori primi sono grandi".
Ben Voigt,

@Ben: non manca. Il problema è difficile in generale. Si noti che i problemi che sono difficili in generale possono avere casi facili. In questo caso, i numeri primi piccoli non sono affatto gli unici casi facili.
nes1983,

2
Nessuno sa "in pubblico". Potrebbe essere possibile che le agenzie di intelligence dei vari governi del mondo abbiano tecniche che non condividono. Assumono un numero enorme di laureati in matematica. Ad esempio, la NSA ha promosso segretamente la generazione primaria casuale di "Dual EC_DRBG", che sapeva essere debole, come parte di uno schema crittografico standard per uso pubblico. bits.blogs.nytimes.com/2013/09/10/…
don luminoso

don: i documenti innevati sembrano rivelare che non è così. disegnano un quadro piuttosto conclusivo che, (nel complesso, potrebbero esserci degli angoli), l'NSA non può decrittografare i dati crittografati attraverso speciali magie matematiche che solo loro conoscono. Schneier ha discusso ampiamente della questione.
nes1983,

12

Ci sono alcune buone risorse per accelerare la criptovaluta. Eccone uno:

Da quella pagina:

Nel sistema di crittografia a chiave pubblica più comunemente usato, inventato da Ron Rivest, Adi Shamir e Len Adleman nel 1977, sia la chiave pubblica che quella privata derivano da una coppia di grandi numeri primi secondo una formula matematica relativamente semplice. In teoria, potrebbe essere possibile derivare la chiave privata dalla chiave pubblica lavorando la formula al contrario. Ma solo il prodotto di grandi numeri primi è pubblico e numeri di factoring di quella dimensione in numeri primi sono così difficili che persino i supercomputer più potenti del mondo non possono rompere una chiave pubblica ordinaria.

Il libro di Bruce Schneier Applied Cryptography è un altro. Consiglio vivamente quel libro; è divertente leggere.


9

Per essere un po 'più concreti su come RSA utilizza le proprietà dei numeri primi, l'algoritmo RSA dipende in modo critico dal teorema di Eulero , che afferma che per i numeri relativamente primi "a" e "N", a ^ e è congruente con 1 modulo N, dove e è la funzione completa di Eulero di N.

Da dove vengono i numeri primi? Per calcolare in modo efficiente la funzione di Eulero di N di Euler è necessario conoscere la scomposizione in fattori primi di N. Nel caso dell'algoritmo RSA, dove N = pq per alcuni numeri primi "p" e "q", quindi e = (p - 1) (q - 1) = N - p - q + 1. Ma senza conoscere p e q, il calcolo di e è molto difficile.

Più astrattamente, molti protocolli crittografici usano varie funzioni di botola , funzioni che sono facili da calcolare ma difficili da invertire. La teoria dei numeri è una ricca fonte di tali funzioni botola (come la moltiplicazione di grandi numeri primi), e i numeri primi sono assolutamente centrali nella teoria dei numeri.


7

Suggerirei il libro A Mathematical Journey In Code . Il libro ha un bel tocco di terra, il che è sorprendente, dal momento che riguarda la crittografia. Il libro riassume il viaggio di Sarah Flannery dall'apprendimento dei puzzle da bambino alla creazione dell'algoritmo Cayley-Purser (CP) all'età di 16 anni. Fornisce una spiegazione incredibilmente dettagliata di funzioni a senso unico, teoria dei numeri e numeri primi e come si relazionano crittografia.

Ciò che rende questo libro ancora più specifico per la tua domanda è che Sarah ha cercato di implementare un nuovo algoritmo a chiave pubblica usando quello di Matrix. È stato molto più veloce dell'uso dei numeri primi, ma è stato trovato un foro circolare che poteva sfruttarlo. Si scopre che il suo algoritmo è stato meglio utilizzato come meccanismo di crittografia privato. Il libro è una grande testimonianza dell'uso dei numeri primi per la crittografia in quanto ha superato la prova del tempo e le sfide di individui molto intelligenti.



6

Non sono un matematico o un criptico, quindi ecco un'osservazione esterna in termini di profani (niente equazioni fantasiose, scusate).

Questo intero thread è pieno di spiegazioni su COME vengono utilizzati i numeri primi nella crittografia, è difficile trovare qualcuno in questo thread che spieghi in modo semplice PERCHÉ vengono utilizzati i numeri primi ... molto probabilmente perché tutti danno questa conoscenza per scontata.

Solo guardare il problema dall'esterno può generare una reazione simile; ma se usano le somme di due numeri primi, perché non creare un elenco di tutte le somme possibili che possono generare due numeri primi?

In questo sito c'è un elenco di 455.042.511 numeri primi, dove i numeri primi più alti sono 9.987.500.000 ( 10 cifre).

Il primo più grande conosciuto (a partire da febbraio 2015) è 2 alla potenza di 257.885.161 - 1 che è 17.425.170 cifre.

Ciò significa che non ha senso tenere un elenco di tutti i numeri primi noti e tanto meno tutte le loro possibili somme. È più facile prendere un numero e verificare se è un numero primo.

Il calcolo dei numeri primi di per sé è un compito monumentale, quindi il calcolo inverso di due numeri primi che è stato moltiplicato tra loro sia i crittografi che i matematici direbbero che è abbastanza difficile ... oggi.


3
Solo il tuo ultimo paragrafo è veramente valido. L'argomento delle somme può essere detto anche per qualsiasi numero composto (esiste un ampio intervallo [tecnicamente infinitamente grande], la memorizzazione di tutte le somme è impossibile / stupida). Anche le somme di numeri primi non hanno molta rilevanza nella crittografia, più importante (di solito, come nel caso di RSA) è il loro prodotto. Inoltre, con il calcolo inverso si intende probabilmente il factoring . Questo probabilmente aiuterà con ciò che intendi lì.
initramfs

4

Gli algoritmi crittografici si basano generalmente sulla loro sicurezza per avere un "problema difficile". La maggior parte degli algoritmi moderni sembra usare il factoring di numeri molto grandi come loro problema difficile - se moltiplichi due numeri grandi insieme, calcolare i loro fattori è "difficile" (cioè richiede tempo). Se quei due numeri sono numeri primi, allora c'è solo una risposta, il che rende ancora più difficile, e garantisce anche che quando trovi la risposta, è quella giusta, non un'altra risposta che dà lo stesso risultato.


4

Penso che ciò che è importante nella crittografia non siano i numeri primi in sé, ma è la difficoltà del problema della fattorizzazione primaria

Supponiamo di avere un intero molto grande che è noto per essere il prodotto di due numeri primi m e n, non è facile trovare cosa sono m e n. Un algoritmo come RSA dipende da questo fatto.

A proposito, c'è un articolo pubblicato sull'algoritmo che può "risolvere" questo problema di fattorizzazione primaria in tempi accettabili usando il computer quantistico. Quindi i nuovi algoritmi di crittografia potrebbero non fare più affidamento su questa "difficoltà" della fattorizzazione primaria quando il computer quantistico arriva in città :)


3

Perché gli algoritmi di fattorizzazione accelerano considerevolmente con ogni fattore trovato. Rendere prime entrambe le chiavi private garantisce che anche il primo fattore trovato sia l'ultimo. Idealmente, anche entrambe le chiavi private avranno quasi lo stesso valore poiché conta solo la forza delle chiavi più deboli.


Questo aspetto un po 'ridondante per me. Una parte della parte chiave più debole che potrebbe essere commentata alla risposta principale :)
Ulysse BN,

-1

I numeri primi sono utilizzati principalmente nella crittografia poiché richiede molto tempo per determinare se un determinato numero è un numero primo o no. Per l'hacker se un algoritmo impiega molto tempo a decifrare il codice, diventa inutile per loro


7
Capire se un numero è un numero primo è economico e abbiamo bisogno che sia economico. In quale altro modo potremmo sapere che abbiamo scelto i primi come i nostri fattori primi in RSA o i primi come modulo nella crittografia a campo finito? Ciò che è costoso è il factoring di un grande numero composto nei suoi grandi fattori primi.
Codici A Caos il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.