Deanonymizing transações de conjunto de dados elípticas

Olá pessoal, meu nome é Alexander e sou cientista de dados na Clain. Estamos envolvidos na análise de transações de blockchain para sua afiliação a ações criminais, como retirada de dinheiro, roubo, financiamento terrorista e similares.


Os regulamentos de criptomoeda são mais rígidos a cada ano e agora as empresas precisam cumprir as políticas de AML \ KYC. Sobre a mesma coisa, a empresa Elliptic, que no início de agosto de 2019 publicou um conjunto de dados rotulado de 200k transações de bitcoin.


O principal objetivo de sua publicação é fornecer dados reais à comunidade criptográfica para testar novas abordagens para detectar transações duvidosas usando um conjunto de atributos padrão (o número de entradas e saídas, transferências, transferências para mineradores etc.) e a topologia do gráfico criado nessas transações. . O conjunto de dados é anonimizado e possui 167 atributos. Todos eles têm média zero e variação de unidade, exceto o primeiro, que é o identificador, e o segundo - caracteriza o tempo de 1 a 49, que corresponde aos componentes do gráfico da transação.


Usando o arquivo elliptic_txs_edgelist.csv, você pode criar um gráfico direcionado e calcular os graus de entrada e saída de cada transação txId. Isso permite estimar aproximadamente (desde que o gráfico é cortado de toda a cadeia de blocos e parte das conexões perdidas) estimar o número de endereços de remetente e destinatário para cada transação. Na placa elliptic_txs_features.csv, renomeie as colunas como V1 - V167 e substitua imediatamente V1 por txId, V2 por elliptic_time. Alguns atributos se correlacionam melhor que outros com o valor dos graus de entrada e saída do gráfico: cor (fora de grau, V16) = 0,669, cor (fora de grau, V7) = 0,680, cor (dentro de grau, V6) = 0,589, cor (in- grau, V8) = 0,582. Vamos olhar para essas variáveis.


imagem
Variável de deslocamento de dispersão V6 e grau do gráfico recebido de elliptic_txs_edgelist


De acordo com o gráfico, para cada valor em grau, há um limite superior dos valores de V6; além disso, se você classificar V6 e encontrar a diferença entre valores semelhantes, ele mudará como um número inteiro vezes uma constante:


imagem
Valores exclusivos para alterar V6 classificada (diff_V6), a frequência (Freq) dos valores diff_V6 encontrados e a proporção de diff_V6 para o valor mínimo de diff_V6.


Na tabela de alterações da V6, você pode ver que 0,075038 ocorre com muito mais frequência que o restante dos valores e provavelmente está associado a uma alteração de grau de 1. Dado que o número mínimo de entradas em uma transação é 1 (se não for uma transação com base em moeda), escrevemos:


inputs_count_V6 = (V6 - min (V6)) / min (diff_V6) + 1.


Após uma análise semelhante para V7, V8, V16:


  • inputs_count_V6 = 13.3266685112665 ​​* V6 + 2.62544842444139,
  • inputs_unique_count_V8 = 11.9243179897452 * V8 + 2.34747189219164,
  • outputs_count_V7 = 50.3777694891647 * V7 + 4.21030186142152,
  • outputs_unique_count_V16 = 49.3957564403755 * V16 + 4.121809499973.

Aqui inputs_count_V6 é o número total de entradas na transação, inputs_unique_count_V8 é o número de entradas exclusivas na transação, outputs_count_V7 é o número de saídas da transação, outputs_unique_count_V16 é o número de saídas exclusivas.


A questão pode surgir - por que o V6 e não o V8 são mapeados para inputs_count? A resposta é simples, sempre inputs_count> = inputs_unique_count e substituindo os valores de V6 e V8 de elliptic_txs_features.csv nas fórmulas indicadas, podemos garantir que a desigualdade (13.3266685112665 V6 + 2.62544842444139)> = (11.9243179897347457 correlacionar entre V6, V8, inputs_count e inputs_unique_count. O mesmo vale para outputs_count e outputs_unique_count.


Depois de encontrar o número de entradas e saídas, bem como o número de entradas e saídas exclusivas, você pode encontrar transações nas quais combinações desses números ocorrem apenas uma vez em todo o histórico do Bitcoin (até a publicação do conjunto de dados elíptico). Isso permite que você encontre transações exclusivas e tempos aproximados para cada valor elliptic_time:


imagem
Data das transações exclusivas encontradas para cada elliptic_time.


O gráfico acima mostra que a data é linearmente dependente de elliptic_time:
tempo aproximado = 1450468509.80488 + 1155672.19512195 * tempo elíptico.
Aqui approx_time é um unixtime aproximado para cada elliptic_time. E como elliptic_time varia de 1 a 49, a data aproximada de tempo muda de 01/01/2016 para 04/10/2017, em incrementos de 1155672.19512195 / 3600/24 ​​= 13.37584 dias.


Dadas as restrições de tempo em possíveis transações e combinações de um número único de entradas e saídas, você pode encontrar 189 transações que são adequadas para essas condições e são encontradas apenas uma vez em todo o blockchain do Bitcoin. Por exemplo, há apenas uma transação com 1 entrada e 13107 saídas - dd9f6bbf80ab36b722ca95d93268667a3ea6938288e0d4cf0e7d2e28a7a91ab3.


Agora você pode encontrar outras características das transações, como taxa, bem como o volume total de entrada (total_in_value) e de saída (total_out_value) no Satoshi. A pesquisa de correlação e a regressão linear ajudam a fazer isso rapidamente; darei apenas as fórmulas finais:


  • fee_V4 = 81341.4537626213 + 386323.710952989 * V4,
  • total_out_value_V3 = 2742460603.92287 + 15853961614.9796 * V3.

Encontraremos o valor necessário total_in_value a partir da igualdade:
total_in_value = total_out_value + taxa.


O total de informações encontradas nos permite identificar 92,9% de todas as transações de conjuntos de dados elípticos. A outra parte pode ser revelada se você usar o gráfico de transação de elliptic_txs_edgelist.csv, comparando-o com um gráfico criado em muitas transações adequadas com suas conexões registradas na blockchain, isso adiciona outros 6,6%.


Assim, 99,5% de todas as transações anônimas são facilmente divulgadas, os 0,5% restantes também podem ser identificados, mas o tempo gasto na desanonimização provavelmente é comparável ao tempo gasto na parte já divulgada das transações. Você pode ver o conjunto de dados descriptografado aqui . E aqui estão os dados elípticos originais.

Source: https://habr.com/ru/post/pt479178/


All Articles