prova di conoscenza zero - dove lo usiamo?

8

prova della conoscenza zero , dove lo usiamo online? Ho pensato di utilizzare principalmente l'algoritmo RSA .

    
posta 0x90 29.03.2013 - 06:26
fonte

1 risposta

11

Le prove di conoscenza zero sono componenti di alcuni protocolli piuttosto complessi, in particolare schemi di voto elettronico, in cui i voti sono criptati, ma l'elettore deve essere in grado di dimostrare che il voto è conforme a un formato specifico (ad esempio è la crittografia di "0" o di "1", ma nient'altro) senza rivelarlo.

È anche possibile trasformare (genericamente) qualsiasi prova di conoscenza zero in uno schema firma digitale . L'idea è che in una prova ZK, il prover invia impegni , quindi il verificatore invia una sfida a cui il prover deve rispondere; la matematica coinvolta assicura che un falso investigatore non sia in grado di rispondere correttamente a tutti i possibili valori di sfida. Ciò che rende la dimostrazione "convincente" è che il verificatore non collude con il dimostratore e invia davvero una sfida casuale, non solo "valori di sfida facili". Pertanto, la dimostrazione interattiva di ZK è convincente solo nella misura in cui riteniamo che il verificatore non sia colluso. La dimostrazione diventa non interattiva calcolando la sfida con una funzione hash sull'intero insieme di impegni da parte del prover (le funzioni hash agiscono "casualmente" per costruzione). Includendo il messaggio per accedere all'input della funzione hash, si ottiene uno schema di firma digitale.

Lo schema di firma Schnorr è un'applicazione di questo principio di costruzione. Funziona in un gruppo in cui il logaritmo discreto è difficile; per esempio, ci sono parametri noti p , q e g ( p è un grande privilegio, q è un primo più piccolo ma ancora grande che divide p-1 , g è un modulo intero p tale che g q = 1 mod p ). Il firmatario conosce un valore privato x e la chiave pubblica corrispondente è y = g ^ x mod p . Per firmare il messaggio m , il firmatario esegue questa operazione:

  • Il firmatario genera un valore casuale k nell'intervallo 1..q-1 e calcola r = g ^ k mod < em> p .
  • Il firmatario calcola e = H (m || r) dove H è una funzione di hash (ad es. SHA-256) e "||" denota la concatenazione.
  • Il firmatario calcola s = k - xe mod q

La firma è quindi la coppia (r, s) . La verifica è fatta in questo modo:

  • Il verificatore ricalcola e = H (m || r) .
  • Il verificatore calcola r '= g s y e mod p .
  • Il verificatore verifica che r '= r .

Se vogliamo vederlo come una prova ZK adattata, allora r è l'impegno del prover (il firmatario, che vuole dimostrare la sua conoscenza di x ); e è la sfida e s è la risposta alla sfida. La risposta non rivela nulla su x finché il prover risponde a un singolo valore di sfida, per un dato impegno (cioè per ogni firma, il firmatario genererà un nuovo k che deve essere casuale e uniforme e mai rivelato a nessuno)

Tuttavia, per un falso investigatore che non conosce x , rispondere alla sfida con un valore s che si adatta all'equazione di verifica non è fattibile a meno che non possa < em> prevedi la sfida e e costruisci il suo falso impegno in accordo. Ad esempio, se la sfida e è conosciuta in anticipo, allora il falso prover può semplicemente scegliere un s casuale e calcolare il suo falso impegno r = g s y e mod p . È qui che la funzione di hash H entra nella scena: non puoi imbrogliare con una funzione hash. Se la funzione di hash è un oracle casuale , il suo output non può essere previsto in anticipo e poiché l'impegno r è usato come input per la funzione hash, il prover è necessariamente "impegnato" nel suo impegno.

In pratica, lo schema di firma Schnorr è usato molto raramente, ma una variante conosciuta come DSA è piuttosto diffusa (lungo con la sua versione a curva ellittica ECDSA ). DSA include alcuni colpi di scena che rendono la firma e più brevi lo rendono sufficientemente diverso dallo schema di firma Schnorr per essere fuori dallo scopo del brevetto di Schnorr (che il brevetto è ora scaduto in ogni caso).

La maggior parte dei certificati X.509 in natura, e quindi i siti Web abilitati per SSL, utilizzano RSA, che non è costruita attorno a una prova ZK. Ma ECDSA guadagna popolarità perché le curve ellittiche sono molto di moda.

    
risposta data 29.03.2013 - 14:45
fonte

Leggi altre domande sui tag