system online · no logs · no tracking · no kyc tor: v3 ready
root@neverkyc:/blog/stealth-address-vs-ring-signature-no-monero$ cat post.md

Stealth Address vs Ring Signature no Monero

// by ~anon · 2026-05-29 · mock,auto-generated,pt

Stealth Address vs Ring Signature no Monero

Cerca de 1,2 milhão de transações Monero foram processadas pela rede em abril de 2026, e nenhuma delas revelou publicamente remetente, destinatário ou valor exato no livro-razão. Essa propriedade não vem de um único truque criptográfico. Ela se apoia em pelo menos três camadas sobrepostas, duas das quais confundem iniciantes e até bitcoiners experientes o tempo todo: o stealth address e o ring signature. Soam parecidos, aparecem juntos em todo guia de Monero por aí e ambos são descritos de forma displicente como "aquilo que torna o Monero anônimo". Só que protegem lados diferentes da mesma transação, e misturar os conceitos torna impossível raciocinar com clareza sobre o que um observador da blockchain consegue ou não enxergar.

Aqui na MoneroSwapper recebemos essa pergunta quase todo dia — geralmente de quem acabou de usar nossa interface de swap, percebeu que não houve KYC e quer entender a razão criptográfica concreta por trás disso. Este artigo destrincha os dois primitivos, mostra onde se sobrepõem, onde não, e o que cada um deixaria vazar se desaparecesse do protocolo amanhã. Ao fim da leitura você saberá exatamente qual problema cada construção resolve e por que remover qualquer uma delas desmontaria as garantias de privacidade do Monero.

Por que confundir os dois prejudica seu modelo mental

Quem raciocina sobre a privacidade do Monero a partir de um balde único chamado "as paradas de anonimato" costuma cometer três erros previsíveis. Acreditam que compartilhar uma view key é inofensivo porque "as ring signatures ainda protegem tudo", assumem que aumentar o tamanho do anel também fortalece a privacidade do destinatário e acham que o receptor de um pagamento é escondido pela mesma construção que oculta a escolha de input do remetente. Nenhuma dessas afirmações é verdadeira, e todas as três geram erros operacionais reais.

A divisão entre privacidade do lado do remetente e do lado do destinatário é a distinção mais útil de internalizar. O protocolo do Monero aplica criptografia diferente em cada lado porque os dois problemas são diferentes. Esconder quem está te pagando significa tornar outputs não vinculáveis ao seu endereço publicado. Esconder qual output anterior você está gastando significa tornar seu input indistinguível de um grupo de iscas. Esses problemas não são simétricos.

  • Privacidade do destinatário: resolvida pelos stealth addresses (chaves de output únicas, derivadas do endereço publicado do recebedor).
  • Privacidade do remetente: resolvida pelas ring signatures (especificamente CLSAG desde o hardfork de outubro de 2020).
  • Privacidade de valores: resolvida pelo RingCT com provas de range Bulletproofs+ — uma terceira camada, separada.

Quando alguém pergunta "o Monero é rastreável?", a resposta honesta depende de qual dessas três camadas a pessoa tem em mente. Um vazamento de view key compromete apenas a primeira. Uma escolha ruim de anel compromete apenas a segunda. E uma falha futura em Bulletproofs+ comprometeria apenas a terceira. Elas falham de forma independente, e é por isso que entendê-las independentemente importa.

O que é, de fato, um stealth address

Um stealth address é uma chave pública de uso único, gerada pelo remetente no instante em que ele te paga. Toda vez que alguém paga o mesmo endereço Monero publicado, uma chave de destino fresca e matematicamente sem relação com as anteriores aparece na blockchain. Dois pagamentos jamais compartilham o mesmo destino, mesmo que vão para a mesma carteira, no mesmo minuto, partindo do mesmo remetente.

A construção se baseia em Diffie-Hellman sobre curvas elípticas. Seu endereço publicado codifica dois pontos públicos: um ligado à sua spend key e outro ligado à sua view key. Quando a Ana te paga, a carteira dela gera um escalar efêmero aleatório, multiplica esse escalar pelo ponto da sua view key para derivar um segredo compartilhado, faz hash desse segredo e soma o resultado ao ponto da sua spend key. O que sai é a chave de destino única gravada no output da transação. A Ana publica apenas o ponto público efêmero dela — o segredo usado para derivar o destino não pode ser recuperado a partir de nada que esteja na blockchain.

Como sua carteira encontra pagamentos destinados a você

Sua carteira usa a view key para executar a mesma operação Diffie-Hellman em sentido inverso contra cada output que ela vê. Quando a matemática bate, a carteira sabe que aquele output é seu. Quando não bate, o output é silenciosamente ignorado. É por isso que rodar uma carteira Monero exige varrer toda a cadeia, em vez de consultar um endereço num índice de busca: simplesmente não existe endereço na blockchain para consultar.

Importante: somente a sua spend key consegue, de fato, gastar o output. A view key revela quais outputs são seus, mas não consegue movê-los. Essa é a razão estrutural pela qual o Monero suporta carteiras "view-only" — contadores, auditores ou serviços de monitoramento podem confirmar entradas sem ganhar a capacidade de esvaziar a carteira. Para um pequeno empreendedor no Brasil que aceita Monero como pagamento e precisa repassar relatórios ao contador para fins de imposto de renda, isso significa entregar comprovação de receita sem entregar o controle dos fundos.

Subaddresses estendem a mesma ideia

A maioria dos usuários nunca compartilha o endereço principal. Em vez disso, distribui subaddresses — endereços públicos separados, derivados do par de chaves principal usando um índice fixo. Cada subaddress é não vinculável ao endereço principal e a todos os outros subaddresses, mesmo para alguém que detenha todos eles. É essa propriedade que viabiliza a geração de endereços por cliente em ferramentas para comerciantes, páginas de doação e no nosso próprio fluxo de depósito da MoneroSwapper: cada pedido recebe um subaddress novo, de forma que observadores on-chain jamais conseguem agregá-los sob uma única carteira.

O erro mais comum de privacidade que vemos novos usuários cometerem é reutilizar um único endereço principal em todo lugar. O protocolo te dá subaddresses ilimitados de graça — use-os.

O que é, de fato, uma ring signature

Uma ring signature é uma assinatura digital produzida em nome de um grupo, em que qualquer verificador pode confirmar "um membro deste grupo assinou isto", mas não consegue dizer qual deles. O Monero usa ring signatures para esconder qual output passado está sendo gasto como input numa nova transação.

Quando você gasta, sua carteira seleciona quinze outros outputs on-chain que não são seus e os agrupa com seu input real, formando um anel de dezesseis. A assinatura é válida se e somente se um dos dezesseis membros detiver a spend key correspondente — mas o verificador (e a blockchain pública) não consegue dizer qual. Seu output e quinze iscas sem relação tornam-se todos igualmente plausíveis como candidatos a verdadeiro input gasto.

CLSAG e o estado da arte atual

A construção específica do Monero se chama CLSAG (Concise Linkable Spontaneous Anonymous Group signatures), que substituiu o MLSAG no hardfork de outubro de 2020. O CLSAG produziu transações cerca de 25% menores e verificação cerca de 20% mais rápida, com a mesma segurança. O tamanho do anel é um valor fixo no protocolo desde 2019 — primeiro 11, depois 16 a partir do hardfork de agosto de 2022. Um tamanho de anel uniforme importa porque tamanhos variáveis em si vazariam informação sobre o software da carteira, o tipo de transação ou o comportamento do usuário.

Key images impedem o gasto duplo

Como ninguém consegue ver qual é o input verdadeiro, o protocolo precisa de um mecanismo separado para impedir o gasto duplo. Esse mecanismo é a key image: um valor determinístico derivado da spend key e da chave de output único. Cada output produz exatamente uma key image possível, e a rede rejeita qualquer transação cuja key image já tenha aparecido antes. A imagem não revela nada sobre a identidade do output, mas garante uso único.

Lado a lado: o que cada construção esconde

A matriz abaixo deixa explícita a divisão de trabalho. Note que nenhum primitivo isolado esconde os três — remetente, destinatário e valor. O Monero precisa da pilha completa para entregar a propriedade de privacidade que a maioria dos usuários tem em mente.

Propriedade Stealth Address Ring Signature (CLSAG)
O que esconde A ligação entre um endereço publicado e os destinos de output on-chain A ligação entre um output on-chain e a transação que o gasta
Lado da transação Destinatário (output) Remetente (input)
Primitivo subjacente Diffie-Hellman sobre curvas elípticas + hash Linkable Spontaneous Anonymous Group signature
Parâmetro ajustável Nenhum — a derivação é única por output Tamanho do anel (atualmente fixo em 16)
O que quebra Divulgação da view key a uma parte hostil Ataques de output envenenado, heurísticas estilo EAE, conjuntos de anonimato muito pequenos
O que NÃO esconde O valor da transação, o input do remetente O destino, o valor, o tempo
Custo por transação Pequeno — uma multiplicação escalar extra Maior — escala com o tamanho do anel, hoje domina o tamanho da tx

Uma observação que vale uma pausa: o stealth address não é um chute probabilístico. É uma garantia criptográfica rígida de que o destino do output não pode ser ligado de volta ao endereço do recebedor sem a view key. A ring signature, por outro lado, é estatística — a confiança do observador é, por padrão, mais ou menos um em dezesseis, e esse número pode degradar diante de um atacante que controle o processo de seleção de iscas ou que possua muitos dos membros do anel.

Como elas se combinam numa única transação real do Monero

Para entender por que nenhuma é suficiente sozinha, vamos percorrer um pagamento. A Ana quer enviar 2 XMR para o Bruno, cujo endereço Monero ela obteve numa página pública de doações.

  1. A carteira da Ana calcula o output stealth. Ela gera um escalar efêmero, faz o Diffie-Hellman contra o ponto da view key do Bruno e deriva uma chave pública de destino única. Esse valor entra na lista de outputs da transação. Ninguém olhando a cadeia consegue conectar aquele output ao endereço publicado do Bruno.
  2. A carteira da Ana seleciona o anel. Para financiar o pagamento, a Ana precisa gastar um dos outputs anteriores dela. A carteira escolhe esse output real e mais quinze iscas do conjunto de outputs recentes e históricos da cadeia. A seleção de iscas segue uma distribuição gama publicada, que espelha os padrões de gasto de usuários reais.
  3. A carteira da Ana assina com CLSAG. A assinatura prova que um dos dezesseis membros do anel consentiu com o gasto. O verificador não aprende nada sobre qual deles. A key image anexada à assinatura garante que o output real não pode ser gasto de novo.
  4. A carteira da Ana oculta os valores com RingCT. Inputs e outputs são codificados como commitments de Pedersen. As provas de range Bulletproofs+ convencem a rede de que nenhum output excede o total dos inputs, sem nunca revelar os números.
  5. A carteira do Bruno varre o novo bloco. Usando a view key, o Bruno faz Diffie-Hellman contra cada output. Quando a matemática bate com o pagamento da Ana, o output se revela. O Bruno agora sabe que recebeu 2 XMR, mas a cadeia em si exibe apenas um blob opaco.

Tire o stealth address e a carteira do Bruno ainda acharia o pagamento, mas todas as empresas de chain analysis também: todo pagamento para o endereço dele cairia no mesmo destino, e o histórico de entradas inteiro ficaria público. Tire a ring signature e o gasto da Ana apontaria para exatamente um output anterior, expondo o grafo de transações da carteira dela. Tire o RingCT e os valores vazariam, tornando as outras duas camadas muito mais fáceis de desanonimizar via correlação de valores. Cada camada protege contra um adversário diferente.

Um exemplo prático: um swap na MoneroSwapper

Considere uma usuária que deposita 0,05 BTC na MoneroSwapper e recebe XMR num subaddress recém-gerado da carteira Feather dela. Dois livros-razão registram partes desse comércio, e o que cada observador enxerga é instrutivo.

Do lado do Bitcoin, o endereço de depósito é claramente visível. Ferramentas de chain analysis — Chainalysis, Elliptic, TRM Labs — vão marcá-lo como pertencente a um serviço de swap não custodial se tiverem heurísticas para o nosso padrão de depósito. O valor, o momento e os UTXOs de origem são todos públicos. Isso é normal no Bitcoin e é uma das razões pelas quais usuários buscam o Monero. O motor de swap envia o BTC para uma pool de liquidez, e o rastro na cadeia BTC efetivamente termina naquela pool.

Do lado do Monero, o cenário é fundamentalmente diferente. Nossa transação de payout cria um output stealth derivado do subaddress da usuária. Para um observador da cadeia, o output é uma chave pública fresca, sem conexão aparente nem com a MoneroSwapper nem com a usuária. A transação gasta um anel de dezesseis, incluindo um dos nossos outputs e quinze iscas, então até o nosso próprio gasto não é transparentemente identificável a partir do estado da cadeia sozinho. O RingCT oculta o valor exato do payout. O resultado é que mesmo um observador que saiba que um swap ocorreu não consegue provar qual transação Monero específica do bloco em questão foi o payout, nem qual subaddress recebeu.

Essa assimetria — BTC transparente entrando, XMR opaco saindo — é exatamente a razão para usar o Monero como camada de privacidade, em vez de como moeda de transação ponta a ponta para todo pagamento. O stealth address garante que o output do swap não pode ser ligado ao endereço da usuária; a ring signature garante que nosso payout não pode ser rastreado de volta pelo histórico da nossa hot wallet.

Perguntas frequentes

Stealth addresses podem ser desanonimizados?

Apenas por quem detiver a view key do endereço destinatário. A view key revela quais outputs pertencem a qual carteira, mas não consegue gastá-los. Se você compartilha uma view key com terceiros — por exemplo, para demonstrar solvência a um auditor —, essa parte conseguirá ver todos os seus pagamentos recebidos para sempre, inclusive os passados. Trate a view key como dado sensível, não como uma "senha somente leitura" que pode ser postada à vontade. No Brasil, isso vale especialmente para qualquer tipo de comprovação a contador ou consultoria tributária: prefira gerar um arquivo de saídas exportado da carteira a entregar a view key crua.

Por que o Monero aumentou o tamanho do anel para 16?

O hardfork Fluorine Fermi de agosto de 2022 elevou o tamanho do anel de 11 para 16 para ampliar o conjunto de anonimato por gasto. Dezesseis é aproximadamente o ponto ótimo em que iscas adicionais produzem ganhos de privacidade decrescentes a um custo crescente no tamanho da transação. A próxima geração, FCMP++ (full-chain membership proofs), deve substituir anéis de tamanho fixo por provas sobre todo o conjunto de outputs, fazendo com que o conjunto de anonimato seja efetivamente a cadeia inteira.

As ring signatures vão sumir com o FCMP++?

Sim, eventualmente. O FCMP++ é o sucessor planejado do CLSAG para a privacidade do remetente e está em desenvolvimento ativo em 2026. Ele usará uma construção criptográfica diferente — Curve Trees mais uma prova SAL — para provar a pertinência do input no conjunto completo de UTXOs, em vez de num anel de 16 membros. Os stealth addresses não são afetados e seguirão em uso. As duas camadas sempre foram independentes, e é exatamente por isso que uma pode ser atualizada sem mexer na outra.

Uma é mais importante que a outra no dia a dia?

Para receber pagamentos, o stealth address faz quase todo o trabalho — sem ele, qualquer endereço compartilhado publicamente exporia todo pagamento recebido na vida. Para gastar, a ring signature é o que impede que o grafo de transações da sua carteira vire registro público. Os dois importam, mas em cenários diferentes. Um comerciante que aceita Monero depende mais fortemente dos stealth addresses. Um remetente preocupado com privacidade depende mais fortemente das ring signatures.

Um serviço de swap como a MoneroSwapper precisa de alguma chave minha?

Não. A usuária fornece apenas o endereço Monero de destino (ou subaddress). O motor de swap deriva o output stealth do mesmo jeito que qualquer outro remetente faria, sem acesso à spend key ou à view key da usuária. Essa é a razão estrutural pela qual swaps Monero no-KYC sequer existem: nada na criptografia exige que o serviço identifique o usuário, e nada na privacidade do usuário depende de confiar que o serviço guardará segredos.

Conclusão

Stealth addresses e ring signatures não são dois nomes para a mesma coisa. Resolvem metades opostas do problema de privacidade — uma esconde para onde o dinheiro vai, a outra esconde de onde ele veio — e falham sob modelos de ameaça diferentes. Entender essa divisão é a diferença entre tratar o Monero como caixa mágica e efetivamente conseguir raciocinar sobre a sua própria postura de privacidade. Se você quer colocar qualquer uma das camadas para trabalhar sem pensar em detalhes de implementação, é exatamente para isso que a MoneroSwapper foi feita: swaps anônimos, sem KYC, que te entregam um output stealth fresco protegido por um anel de 16 membros, toda vez.