Boa tarde irmãos.
No versículo anterior terminamos a obra “Crypto Anarchy and Virtual Communities”, de Tima May. Hoje começamos o Capítulo 14. Nele veremos a obra “Detecting Double Spending”, de satoshi nakamoto Hal Finney, publicada em outubro de 1993. Serão 3 versículos, este é o primeiro.
Detectando Gasto Duplo
Hal Finney
15 de outubro de 1993
Aqui está uma tentativa de descrever o dinheiro digital de Chaum a partir de seu trabalho, “Untreaceable Eletronic Cash” (Dinheiro Eletrônico não rastreável), de Chaum, Fiat, e Naor, do Crypto 88 – procedimentos. Esse dinheiro tem a propriedade de que o usuário do dinheiro pode permanecer anônimo, desde que não o gaste mais de uma vez, se o gastar duas vezes sua identidade é revelada.
Assim é como funciona em termos gerais: Alice abre uma conta com um banco não anonimamente. Ela mostra a identidade para que o banco saiba quem ela ; tanto ela como o banco sabem o número da sua conta. Quando ela sacar dinheiro, ela vai ao banco ou entra em contato com eles eletronicamente e apresenta uma prova de que ela é e qual é o número de sua conta, e o banco lhe dá algum dinheiro digital. O dinheiro digital é um padrão de informação, talvez armazenado em um arquivo de computador em um cartão inteligente ou disco magnético. Mais tarde, ela gasta o dinheiro digital enviando ou dando para Bob, um comerciante. Bob pode checar e verificar se o dinheiro deve ter vindo do banco. Ele aceita o dinheiro se for válido, dando a Alice a mercadoria. Mais tarde, ele envia o dinheiro para o banco para ser adicionado à sua própria conta.
Note que isso basicamente poderia ser feito com uma simples assinatura RSA. O banco poderia dar a Alice uma declaração dizendo “isso vale 1 dólar”, assinada pela chave secreta do banco. Bob poderia verificar que essa declaração era de fato assinada pelo banco e, saberia portanto, que ninguém a não ser o banco poderia tê-la criado. Ele a aceita e a envia para o banco, que a honra porque reconhece sua própria assinatura.
Um problema com esse dinheiro trivial é que o gasto dulo não pode ser detectado ou evitado, já que todo o dinheiro parece igual. Isso pode ser remediado ao incluir nele um número de série único. Agora, quando Bob vai aceitar o dinheiro de Alice, ele pode ligar para o banco e dizer: alguém mais depositou o número de série 123456? Se não, ele aceita o dinheiro e o deposita. Isso é chamado de dinheiro eletrônico online; o comerciante deve verificar com o banco para cada transação.
Esse sistema simples melhorado não merece ser chamado de dinheiro, todavia, porque não possui a característica distintiva do dinheiro digital: não é anônimo. Quando o banco vê o dinheiro com o número de série 123456 sendo depositado, o banco reconhece que essa foi a mesma fatura que Alice retirou. O banco pode então deduzir que Alice gastou o dinheiro com Bob, e desse tipo de informação um dossiê poderia ser construído com todos os tipos de informações destruidoras de privacidade sobre ela.
Para permitir o anonimato, precisamos entrar na matemática. O que queremos é que Alice e o banco criem coletivamente um assinatura RSA do banco que não pode ser forjada, mas que o banco não reconhecerá como proveniente de Alice. Esta é a primeira coisa que o artigo de Chaum discute.
O dinheiro neste sistema é da forma (x, f (x) ^ (1/3)) mod n, onde n é o módulo público do banco. f () (e, abaixo, g ()) é uma função unidirecional, que pode ser calculada facilmente, mas para a qual é inviável calcular o inverso. Também deve ser inviável encontrar dois y,z diferentes tais que f(y) = f(z). Atualmente, existem várias opções adequadas para funções unidirecionais, sendo as mais comuns o algoritmo MD5 da RSA e o Secure Hash Algorithm (SHA) do governo dos EUA.
A razão pela qual a expressão acima seria aceita como dinheiro é dupla. Primeiro, somente o banco pode calcular qualquer coisa ^ (⅓) mod n. Esta é basicamente a operação de assinatura do RSA para o expoente 3. Ninguém mais pode encontrar raízes cúbicas. A razão porque f (x) é usada é isso. Suponha que nós propusemos que (x, x ^ (1/3)) deveria ser o dinheiro, para algum x aleatório, raciocinando que somente o banco poderia encontrar a raiz cúbica de x. Você pode ver como forjar dinheiro assim? (Dedique alguns instantes e tente ver como você poderia construir um par como este, mesmo que você não consiga tirar raízes cúbicas.)
A resposta é que é fácil forjar isso escolhendo primeiro um y aleatório, e exibindo o par (y ^ 3, y). Agora temos um número e, em seguida, sua raiz cúbica. No entanto, não precisamos ter tirado raízes cúbicas para encontrá-lo. É por isso que esse tipo de dinheiro não seria bom.
O sistema de Chaum evita isso tirando a raiz cúbica de uma função unidirecional de x . Para forjar sem ter uma raiz cúbica, você teria que produzir (finv (y ^ 3), y), que corresponderia ao padrão acima, mas não é possível inverter a função unidirecional como essa. Então, apenas o banco pode criar dinheiro da forma apropriada. Isso pode ser entendido como o modelo matemático formal do meu “dinheiro” informal, acima do qual havia uma nota assinada digitalmente com um número de série. Aqui, x é o número de série, e é assinado digitalmente desta maneira especial. Nada mais é necessário.
Terminamos aqui o primeiro versículo. Amanhã, no próximo, continuamos. Ricas bençãos, até o próximo.