Perché non esiste un algoritmo di crittografia basato sui noti problemi NP-Hard?


109

La maggior parte della crittografia odierna, come RSA, si basa sulla fattorizzazione a numeri interi, che non si ritiene sia un problema NP-difficile, ma appartiene a BQP, che lo rende vulnerabile ai computer quantistici. Mi chiedo, perché non esiste un algoritmo di crittografia basato su un noto problema NP-difficile. Sembra (almeno in teoria) come sarebbe un algoritmo di crittografia migliore di quello che non ha dimostrato di essere NP-difficile.

Risposte:


76

PNPPNP

Una lettura eccellente è il classico di Russell Impagliazzo, A Personal View of Average-Case Complexity , 1995.

Un eccellente sondaggio è la complessità dei casi medi di Bogdanov e Trevisan, Fondamenti e tendenze dell'informatica teorica Vol. 2, n. 1 (2006) 1–106


1
Non abbiamo bisogno della durezza anche nel migliore dei casi? Dopo tutto, tutte le nostre chiavi dovrebbero essere sicure. O possiamo effettivamente (ed efficacemente) impedire che si verifichi il caso migliore?
Raffaello

7
NP-hard

@Raphael, dovrebbe essere sufficiente se la probabilità di ottenere un caso "buono" indesiderabile è abbastanza piccola. Se si dice più piccolo della probabilità di indovinare la chiave corretta di un caso "cattivo" desiderabile, questo rischio dovrebbe essere considerato IMHO accettabile.
Quazgar,

49

Ci sono stati.

Un esempio è il sistema crittografico McEliece basato sulla durezza della decodifica di un codice lineare.

Un secondo esempio è NTRUEncrypt che si basa sul problema vettoriale più breve che credo sia noto per essere NP-Hard.

Un altro è il sistema crittografico a zaino Merkle-Hellman che è stato rotto.

Nota: non ho idea se i primi due sono rotti / quanto sono buoni. Tutto quello che so è che esistono e ho ottenuto quelli facendo una ricerca sul web.


6
Ai fini della crittoanalisi, probabilmente McEliece non dovrebbe essere considerato un solo sistema di crittografia; per ogni classe di codici lineari decodificabili in modo efficiente che colleghi, devi necessariamente elaborare una strategia diversa per romperla. È stato rotto per alcune classi di codici, ma (come dice l'articolo di Wikipedia) non per i codici Goppa, che erano il suggerimento originale di McEliece.
Peter Shor,

Da quell'elenco direi che NTRU sembra il più promettente, deve ancora essere ampiamente testato nel modo in cui RSA è stato testato sulla base di ciò che ho letto finora.
Ken Li

Il sistema crittografico Merkle-Hellman non è un esempio appropriato. I vettori di zaini Merkle-Hellman sono solo un sottoinsieme di tutti i vettori di zaini, quindi il problema degli zaini Merkle-Hellman potrebbe non essere NP difficile. Non penso che sia NP-difficile, almeno non sono a conoscenza di alcun documento che lo mostri.
miracle173,

25

Mi vengono in mente quattro ostacoli principali che non sono del tutto indipendenti:

  • La durezza NP fornisce solo informazioni sulla complessità del limite . Per molti problemi NP-completi, esistono algoritmi che risolvono tutte le istanze di interesse (in un determinato scenario) ragionevolmente velocemente. In altre parole, per qualsiasi dimensione di problema fissa (ad es. Una determinata "chiave"), il problema non è necessariamente difficile solo perché è NP-difficile.
  • La durezza NP considera solo il momento peggiore. Molte, anche la maggior parte delle istanze, possono essere facili da risolvere con algoritmi esistenti. Anche se sapessimo caratterizzare le istanze difficili (afaik, non lo facciamo), dovremmo comunque trovarle.
  • 2n(n1)nn
  • Hai bisogno di una sorta di reversibilità. Ad esempio, qualsiasi numero intero è descritto in modo univoco dalla sua scomposizione in fattori primi. Immagine che vorremmo usare TSP come metodo di crittografia; dati tutti i tour più brevi, puoi (ri) costruire il grafico da cui provengono in modo univoco?

Si noti che non ho esperienza in crittografia; questi sono semplicemente resp algoritmici. obiezioni teoriche sulla complessità.


Riepilogo eccellente. Ma nota che la durezza BQP ha gli stessi avvertimenti dei tuoi primi due punti.
Mitch,

14

La crittografia a chiave pubblica come la conosciamo oggi è costruita su permutazioni a botola a senso unico e la botola è essenziale.

Affinché un protocollo sia protetto pubblicamente, è necessaria una chiave disponibile per chiunque e un modo per crittografare un messaggio utilizzando questa chiave. Ovviamente, una volta crittografato, dovrebbe essere difficile recuperare il messaggio originale conoscendo solo la sua cifra e la chiave pubblica: la cifra deve essere decifrabile solo con alcune informazioni aggiuntive, vale a dire la chiave privata.

Con questo in mente, è facile costruire un sistema crittografico primitivo basato su qualsiasi permutazione a botola a senso unico.

  1. Alice dà la permutazione unidirezionale al pubblico e tiene la botola per sé.
  2. Bob inserì il suo input nella permutazione e trasmise l'output ad Alice.
  3. Alice usa la botola per invertire la permutazione con l'uscita di Bob.

PNP

PNPNPINPNPNPINP

NPNPNP


RSA, sì, è una funzione botola. Non sono sicuro che dlog sia TDF (è a senso unico)
111

Se un problema intermedio NP fosse NP-difficile, sarebbero NP-completi, una contraddizione.
Myria, il

0

Giusto per dare una discussione euristica, basata sull'esperienza pratica.

Quasi tutti i casi, di quasi tutti i problemi NP-completi, sono facili da risolvere. Ci sono problemi in cui questo non è vero, ma sono difficili da trovare, ed è difficile essere sicuri di avere una classe del genere.

Ciò è emerso in pratica diverse volte quando le persone provano a scrivere generatori di problemi casuali per alcune famose classi NP-complete, come Constraint Programming, SAT o Traveling Salesman. In un secondo momento qualcuno trova un metodo per risolvere quasi tutte le istanze che il generatore casuale produce banalmente. Naturalmente, se fosse il caso di un sistema di crittografia, saremmo in guai seri!


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.