Olá Habr!
Hoje vou falar sobre como desenvolvemos um misturador de transações para o nosso messenger. Até agora vou falar sobre o conceito como um todo; Espero que seja interessante tanto para desenvolvedores quanto para quem é apaixonado pelo anonimato, proteção de dados e pelo resto do banco de códigos.
Breve histórico. Como você já sabe, nosso messenger opera em seu próprio blockchain e implementa transferências de várias criptomoedas em salas de bate-papo. Adicionar: as conexões entre as carteiras são públicas. Portanto, o fato de correspondência e transferência de tokens está disponível e confirmado no blockchain. Mas, às vezes, é o fato da comunicação (ou transferência de fundos) que pode comprometer! Todo mundo se lembra dos Três Mosqueteiros e dos pingentes da Rainha, certo?

Nossos usuários indicaram que é hora de eliminar essa "brecha na privacidade". Portanto, antes de tudo, removemos as transações de mensagens e de serviço do nosso explorador de blocos. Portanto, um usuário comum agora não pode estabelecer o fato de correspondência entre dois números.
Mas as transações ainda são armazenadas na blockchain e seus metadados podem ser recuperados usando a API. Portanto, decidimos criar um misturador de transações que pudesse ser conectado se fosse importante ocultar o fato de transferência ou correspondência.
Como funciona: monte e compartilhe
Decidimos usar uma tecnologia semelhante à usada por criptomoedas anônimas populares: Z-Cash, Monero e outras.
O misturador aqui atua como intermediário. Como qualquer usuário do nosso messenger, ele terá seu próprio endereço exclusivo. Quando uma mensagem ou tradução é enviada através do misturador, um registro aparecerá no blockchain em que o usuário A fez uma transação para o endereço do misturador.
O mixer acumula mensagens e traduções e as envia para os destinatários a partir do endereço. O usuário B receberá uma mensagem não do usuário A, mas do misturador.
Quanto mais pessoas usam o serviço, mais anonimato ele fornece. Quando o mixer possui muitas transações de entrada e saída, é difícil rastrear para qual endereço o usuário A enviou uma mensagem. Além disso, o mixer fará transações intermediárias entre carteiras internas.
Ninguém pode ser confiável
Ninguém pode ser confiável na Internet, incluindo um mixer. Portanto, fizemos isso para que o intermediário não pudesse descriptografar o texto da mensagem - apenas o endereço do destinatário. Isso é obtido pelo fato de a mensagem ser criptografada duas vezes.
Mecanismo de envio clássico
Mecanismo de envio do misturadorDeixe-me explicar em palavras como o processo ocorre.
- Alice primeiro criptografa o texto da mensagem com a chave de Bob.
- Em seguida, ele adiciona o endereço de Bob e o criptografa novamente com a tecla Mixer.
- O mixer pode descriptografar apenas sua parte e obter o endereço de Bob.
- Depois disso, o Mixer adiciona seu endereço à mensagem criptografada de Alice e criptografa com a chave de Bob.
- Bob extrai a mensagem do blockchain, na primeira descriptografia, ele reconhece o remetente, na segunda - o texto da mensagem.
No entanto, o misturador conhece os endereços dos remetentes e destinatários e existe um risco potencial de divulgar essas informações. Com a paranóia cibernética de nível superior, você pode se defender em 146% usando um sistema de vários misturadores.
Um pouco mais de alta cozinha
Os pagamentos de criptomoeda dentro do nosso messenger também podem ser feitos através de um misturador. Isso ocultará a conexão entre as carteiras. O remetente indica o valor da transferência, os endereços e o atraso máximo de tempo, e o mixer envia tokens em partes e em momentos diferentes. Ele coletará transações de vários usuários e fará transações entre carteiras internas e, assim, ocultará a conexão entre destinatários e remetentes.

Ao mesmo tempo, a criptomoeda será armazenada em suas carteiras por algum tempo. Portanto, o misturador terá que ser confiável. Para tornar a fraude não lucrativa, introduziremos uma taxa para registrar misturadores públicos e fazer classificações.
Os fundadores do misturador terão a opção de torná-lo público (acessível a todos), ao mesmo tempo em que recebem taxas de transação e lucram. Ou não registre-o no registro geral.Em seguida, o misturador será anônimo, mas também não receberá lucro das transações. Essa é uma opção para quem deseja configurar o serviço para si - por exemplo, para correspondência dos funcionários da empresa.
Se implementarmos o conceito com sucesso, um pouco mais tarde farei um post "técnico" sobre o mesmo tópico.