112 / 736BLIND

Blind Signature

Assinatura cega: confirmar uma mensagem sem ver seu conteúdo

Imagine um vale que precisa da aprovação do emissor, mas cujo número único ele não deve anotar. Mais tarde, o emissor reconhece um vale autêntico sem usar a assinatura para identificar quem o retirou. Blind Signature ajuda a resolver essa aparente contradição. É uma ideia fundamental do dinheiro eletrônico: verificar sua validade sem que essa verificação, por si só, registre todas as compras do titular.

Blind Signature, ou assinatura cega, é um procedimento criptográfico: o solicitante oculta uma mensagem do assinante, obtém a assinatura da forma oculta e depois remove a ocultação. Resta uma assinatura utilizável da mensagem original. David Chaum aplicou essa ideia ao dinheiro eletrônico. Com um protocolo correto, o assinante não consegue relacionar um token posterior à sua emissão a partir da interação de assinatura. Outras pistas, como horário, valor ou endereço de rede, não desaparecem automaticamente.

Em uma aprovação comum, o emissor pode registrar o número do vale junto com seu destinatário. Quando uma loja devolve o vale, ele relaciona os registros. Chaum explicava a assinatura cega com um envelope revestido de papel-carbono: o carimbo externo passa para o papel de dentro, cujo número o emissor não vê. Ao sair do envelope, o papel tem uma aprovação válida. É uma analogia didática, não um procedimento seguro com papel e carimbo. O protocolo real usa números e matemática para criar essa separação entre computadores. [7] [1]

Ana quer um vale digital de 100 sats. Sats são pequenas unidades de Bitcoin. A carteira, o aplicativo que ela usa para guardar esses vales e pagar com eles, gera um valor secreto imprevisível que distinguirá o vale e o encobre matematicamente com outro valor aleatório. Essa transformação se chama cegamento. O emissor recebe a mensagem oculta, não o segredo original. A carteira conserva o necessário para remover a ocultação depois. Renomear um arquivo ou apagar um nome não basta: o cegamento precisa cumprir propriedades criptográficas bem definidas. Para simplificar o exemplo, usamos um único vale; uma carteira real pode combinar vários vales de valores diferentes para chegar à quantia desejada. [8] [2]

Assinar às cegas não significa assinar qualquer coisa gratuitamente para qualquer pessoa. O emissor pode primeiro verificar o pagamento de Ana ou descontar o saldo correspondente. Conhece o valor pedido, 100 sats, mas não precisa saber o número oculto do vale. Uma chave de assinatura é um valor numérico secreto que o programa do emissor usa para criar assinaturas. O valor do vale pode estar ligado a uma chave de assinatura específica daquela denominação; alterar um número em um arquivo não produz um vale de valor maior. O emissor assina a entrada oculta e devolve o resultado. Assim, separa-se o direito de Ana a receber um vale da identificação daquele vale quando circular. [7] [8]

Ana não precisa revelar agora o segredo ao emissor. Sua carteira remove sozinha a ocultação aleatória do resultado recebido. Esse passo é chamado de unblinding. Um procedimento bem projetado deixa uma confirmação válida da mensagem inicial sem entregar à carteira a chave privada de assinatura do emissor. O usuário vê um novo valor; a embalagem matemática é colocada e retirada em segundo plano. O comprovante digital resultante costuma ser chamado de token. Não é um bitcoin separado na blockchain, o registro compartilhado das transações de Bitcoin, mas um direito de resgate perante o emissor. [2] [8]

A verificação pergunta se a confirmação corresponde à mensagem e à chave correta do emissor. Nas assinaturas cegas baseadas no sistema criptográfico RSA, a chave pública basta; outras construções podem exigir uma prova adicional ou participação do emissor. Isso não demonstra que o vale nunca foi gasto, que ninguém o copiou nem que existem reservas suficientes para resgatá-lo. São três outras perguntas. Como um ingresso verdadeiro já utilizado não dá direito a outra entrada, um comprovante criptograficamente válido pode não servir para um novo pagamento. [2] [10]

Ana envia o vale a Pedro. Como são dados, ela pode manter uma cópia idêntica. A assinatura cega não apaga arquivos do aparelho dela. Em um sistema online comum, a carteira do recebedor apresenta o token ao emissor, que verifica sua validade e se um token com o mesmo segredo já foi gasto. Se aceitar, marca o token antigo como usado e pode emitir para Pedro um novo token pelo mesmo processo de assinatura cega. Ana não conhece o novo segredo de Pedro. Uma tentativa posterior de gastar a cópia antiga será rejeitada. Reutilizar os mesmos fundos é um double spend, ou gasto duplo; preveni-lo depende de outra parte do sistema de pagamentos. [9] [8]

A proteção também precisa impedir que o cliente transforme assinaturas autorizadas em comprovantes válidos adicionais, com novos segredos. Essa propriedade é a resistência à falsificação. Nas assinaturas cegas, examina-se especialmente a one-more unforgeability: após certo número de interações de assinatura, um atacante consegue apresentar um novo par válido de mensagem e assinatura a mais? Copiar o mesmo par é o problema anterior. A criptografia correta tampouco substitui as verificações do servidor sobre direitos, valores e estrutura permitida dos tokens. Juntas, essas verificações podem impedir emissões não autorizadas. [2] [3]

O emissor pode saber quando Ana recebeu tokens e qual era seu valor. No resgate, pode conhecer horário, quantia ou endereço de rede do recebedor. São metadados: informações que acompanham o comprovante de pagamento. Entre poucos usuários, um valor incomum ou uma transferência imediatamente posterior pode facilitar associações. Chaves compartilhadas e verificadas também importam: uma chave exclusiva de uma pessoa poderia identificá-la. A cegueira do protocolo protege um vínculo específico entre assinatura e emissão, não todas as informações ao redor. Também não recupera uma carteira comprometida nem obriga o emissor a cumprir seus compromissos. [7] [2]

A ideia de Chaum sustenta o dinheiro eletrônico historicamente ligado à DigiCash. Cashu e Fedimint a utilizam no ecossistema Bitcoin, com conexões à Lightning Network (uma rede para pagamentos rápidos em bitcoin) facilitando entradas e saídas de fundos. Suas construções, porém, não são RSA. O Cashu básico verifica tokens com a chave secreta da entidade emissora; NUT-12 acrescenta uma prova para verificar assinaturas com dados públicos, não para demonstrar que o token continua não gasto. Fedimint distribui a administração entre operadores. Nos dois casos, o usuário tem um direito perante o emissor e depende da custódia e disponibilidade dele. GNU Taler, por exemplo, combina privacidade do comprador com rastreabilidade das receitas comerciais. [5] [6] [10] [4]

Algumas equações mostram um esquema simplificado. A mensagem é codificada com segurança como número m; a chave pública contém n e e, enquanto d indica a parte privada. O solicitante escolhe r aleatório com inverso multiplicativo r⁻¹ módulo n e envia m′ = m·r^e mod n. Mod n significa calcular com os restos da divisão por n. O assinante devolve s′ = (m′)^d mod n, e o solicitante obtém s = s′·r⁻¹ mod n. A verificação resulta em s^e mod n = m. O fator r⁻¹ remove a ocultação. Essas relações explicam o mecanismo, mas não são um programa seguro completo. RFC 9474 também define a preparação da mensagem, o esquema RSA-PSS com codificação segura, verificações de entrada e separação das chaves. A aleatoriedade e a variante correta do protocolo são essenciais. [2] [3]

Para ter uma visão mais completa, leia este verbete junto com David Chaum, Chaumian eCash, DigiCash, Cashu, Fedimint, Privacidade no Bitcoin. Também há referências a este verbete em DigiCash, Chaumian eCash, Reusable Proofs of Work, Fedimint.

DOC · 001David Chaum — Blind Signatures for Untraceable PaymentsFonte primária DOC · 002RFC 9474 — RSA Blind SignaturesEspecificação DOC · 003IRTF/CFRG — RFC 9474 publication recordEspecificação DOC · 004GNU Taler — PrinciplesFonte primária DOC · 005Cashu protocol specificationsEspecificação DOC · 006Fedimint — How Federations WorkFonte primária DOC · 007David Chaum — Security without IdentificationFonte primária DOC · 008Cashu NUT-00 — Notation and modelsEspecificação DOC · 009Cashu NUT-03 — Swapping tokensEspecificação DOC · 010Cashu NUT-12 — DLEQ proofsEspecificação
Revisto em: Fontes em primeiro lugar · Não é recomendação de investimento