Na criptografia, uma prova de conhecimento é uma prova interativa na qual o provador consegue "convencer" um verificador de que o provador sabe algo. O que significa para uma máquina "saber algo" é definido em termos de computação. Uma máquina "sabe algo", se esse algo pode ser calculado, dado a máquina como uma entrada. Como o programa do provador não expele necessariamente o conhecimento em si (como é o caso das provas de conhecimento zero[1]), uma máquina com um programa diferente, chamado extrator de conhecimento, é introduzida para capturar essa ideia. Estamos principalmente interessados no que pode ser comprovado por máquinas de tempo polinomial limitado. Neste caso, o conjunto de elementos de conhecimento se limita a um conjunto de testemunhas de alguma linguagem em NP.
Seja
uma declaração de linguagem
em NP e
o conjunto de testemunhas de x que devem ser aceitas na prova. Isso nos permite definir a seguinte relação:
.
Uma prova de conhecimento para a relação
com erro de conhecimento
é um protocolo de duas partes com um provador
e um verificador
com as duas propriedades seguintes:
- Integridade: Se
, então o provador
que conhece a testemunha
para
é bem sucedido em convencer o verificador
de seu conhecimento. Mais formalmente:
, isto é, dada a interação entre o provador P e o verificador V, a probabilidade de o verificador estar convencido é 1.
- Validade: A validade requer que a probabilidade de sucesso de um extrator de conhecimento
em extrair a testemunha, dado ao oráculo acesso a um provador possivelmente malicioso
, deve ser pelo menos tão alta quanto a probabilidade de sucesso do provador
em convencer o verificador. Esta propriedade garante que nenhum provador que não conheça a testemunha consiga convencer o verificador.
Detalhes na definição
Esta é uma definição mais rigorosa de validade:[2]
Seja
uma relação de testemunha,
o conjunto de todas as testemunhas para valor público
e
o erro de conhecimento. Uma prova de conhecimento é
-válida se existe uma máquina de tempo polinomial
, dado ao oráculo acesso a
, tal que para cada
, é o caso que
e
O resultado
significa que a máquina de Turing
não chegou à uma conclusão.
O erro de conhecimento
denota a probabilidade de que o verificador
pode aceitar
, mesmo que o provador de fato não conheça uma testemunha
. O extrator de conhecimento
é usado para expressar o que se entende por conhecimento de uma máquina de Turing. Se
pode extrair
de
, dizemos que
conhece o valor de
.
Esta definição da propriedade de validade é uma combinação das propriedades de validade e validade forte.[2] Para pequenos erros de conhecimento
, como, por exemplo,
ou
pode ser visto como sendo mais forte do que a solidez das provas interativas comuns.
Relação com provas interativas gerais
Para definir uma prova de conhecimento específica, é necessário definir não apenas o linguagem, mas também as testemunhas que o verificador deve conhecer. Em alguns casos, provar a associação em uma linguagem pode ser fácil, enquanto computar uma testemunha específica pode ser difícil. Isso é melhor explicado usando um exemplo:
Seja
um grupo cíclico com gerador
no qual se acredita que resolver o problema de logaritmo discreto é difícil. Decidir a participação na linguagem
é trivial, pois todo
está em
. No entanto, encontrar a testemunha
de modo que
se mantenha corresponde a resolver o problema de logaritmo discreto.
Protocolos
Protocolo Schnorr
Uma das provas de conhecimento mais simples e frequentemente usadas, a prova de conhecimento de um logaritmo discreto, é devida a Schnorr.[3] O protocolo é definido para um grupo cíclico
da ordem
com gerador
.
A fim de provar o conhecimento de
, o provador interage com o verificador da seguinte forma:
- Na primeira rodada, o provador se compromete com a aleatoriedade math>r</math>; portanto, a primeira mensagem
também é chamada de confirmação.
- O verificador responde com um desafio
escolhido aleatoriamente.
- Depois de receber
, o provador envia a terceira e última mensagem (a resposta)
módulo reduzido a ordem do grupo.
O verificador aceita, se
.
Podemos ver que esta é uma prova válida de conhecimento, pois possui um extrator que funciona da seguinte forma:
- Simula o provador para produzir
. O provador está agora no estado math>Q</math>.
- Gera valor aleatório
e o insire no provador. Ele produz
.
- Retrocede o provador para declarar
. Agora gera um valor aleatório diferente
e o insire no provador para obter
.
- Produz
.
Uma vez que
, a saída do extrator é precisamente
.
Esse protocolo passa a ser de conhecimento zero, embora essa propriedade não seja exigida para uma prova de conhecimento.
Protocolos Sigma
Os protocolos que têm a estrutura de três movimentos acima (compromisso, desafio e resposta) são chamados de protocolos sigma[carece de fontes]. A letra grega
visualiza o fluxo do protocolo. Os protocolos Sigma existem para provar várias declarações, como aquelas pertencentes a logaritmos discretos. Usando essas provas, o provador pode não apenas provar o conhecimento do logaritmo discreto, mas também que o logaritmo discreto tem uma forma específica. Por exemplo, é possível provar que dois logaritmos de
e
em relação às bases
e
são iguais ou cumprem alguma outra relação linear. Para os elementos a e b de
, dizemos que o provador prova conhecimento de
e
de modo que
e
. A igualdade corresponde ao caso especial em que a = 1 eb = 0. Como
pode ser calculado trivialmente a partir de
isso é equivalente a provar conhecimento de um x tal que
.
Essa é a intuição por trás da seguinte notação,[4] que é comumente usada para expressar o que exatamente é provado por uma prova de conhecimento.
![{\displaystyle PK\{(x):y_{1}=g_{1}^{x}\land y_{2}={(g_{2}^{a})}^{x}g_{2}^{b}\},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d185fa4abebab4c779dc63fa57f25461189834b6)
afirma que o provador conhece um x que cumpre a relação acima.
Aplicações
As provas de conhecimento são ferramentas úteis para a construção de protocolos de identificação e, em sua variante não interativa, os esquemas de assinatura. Esses esquemas são:
Eles também são usados na construção de sistemas de assinatura de grupo e credenciais digitais anônimas.
Ver também
Referências
- ↑ Shafi Goldwasser, Silvio Micali e Charles Rackoff. A complexidade do conhecimento dos sistemas de prova interativos (em inglês). Anais do 17º simpósio de teoria da computação, Providence, Rhode Island. 1985. Esboço, projeto. Resumo estendido (em inglês)
- ↑ a b Mihir Bellare, Oded Goldreich: Sobre a definição de provas de conhecimento (em inglês). CRYPTO 1992: 390 à 420
- ↑ C. P. Schnorr, Identificação e assinaturas eficientes para cartões inteligentes, em G Brassard, Avanços na criptologia – Crypto '89, 239 à 252 (em inglês), Springer-Verlag, 1990. Notas de aula em ciência da computação, número 435
- ↑ Esquemas de assinatura de grupo eficientes para grandes grupos (em inglês)