En un nivel muy abstracto: el malware en el equipo de cada víctima, además de las claves AES cifradas utilizadas para cifrar los archivos, almacena una copia cifrada de la clave privada necesaria para descifrarlos. Esta copia en sí misma está cifrada con la clave pública del atacante y se puede descifrar con la clave privada del atacante (llamada "clave maestra" en el artículo).
Intentaré reformular el artículo de Kaspersky TeslaCrypt 2.0 disfrazado de CryptoWall de una manera más detallada.
En aras de la simplicidad, omitiré el hecho de que cada archivo se puede codificar con una clave AES diferente. También la implementación real puede diferir (en particular, se pueden enviar más datos al atacante y algunos pasos se realizan en el lado del atacante). De todos modos, la respuesta apunta a explicar cómo funciona el esquema de contraseña maestra:
Al principio, la víctima solo tiene attacker-public-key
(incrustado en el malware).
El atacante tiene attacker-private-key
.
- el malware crea una nueva dirección BTC con un
victim1-BTC-public-key
(para enviar BTC) y un BTC-private-key
(para retirar BTC)
- el malware utiliza
attacker-public-key
y y victim1-BTC-private-key
como entrada para ECDH que genera un encryption-key-1
- el malware XORs
victim1-BTC-private-key
con el encryption-key-1
, almacena el resultado como encrypted-victim1-BTC-private-key
, olvida encryption-key-1
- el malware envía el
victim1-BTC-private-key
al atacante y lo elimina
La víctima posee: attacker-public-key
, victim1-BTC-public-key
, encrypted-victim1-BTC-private-key
.
El atacante posee: attacker-private-key
, victim1-BTC-private-key
.
El siguiente malware comienza a cifrar archivos:
- el malware genera un par de claves y utiliza la clave privada como clave de cifrado AES, por lo que el par consiste en
victim1-AES-key
( victim1-keypair-private-key
) y victim1-keypair-public-key
- el malware utiliza
victim1-BTC-public-key
y victim1-AES-key
como entrada para ECDH que genera un encryption-key-2
- el malware XORs
AES-key
con el encryption-key-2
, almacena el resultado como clave AES cifrada, olvida la clave 2 encriptada
La víctima posee: attacker-public-key
, victim1-BTC-public-key
, encrypted-victim1-BTC-private-key
, victim1-keypair-public-key
, encrypted-victim1-AES-key
.
El atacante posee: attacker-private-key
, BTC-victim1-private-key
.
Ahora la víctima pagó el rescate y el atacante libera una clave para descifrar los archivos:
- el atacante revela
BTC-victim1-private-key
- el malware usa
BTC-victim1-private-key
y victim1-keypair-public-key
como entrada para ECDH que calcula encryption-key-2
(igual que arriba)
- malware XORs
encrypted-victim1-AES-key
con el encryption-key-2
que da victim1-AES-key
- el malware descifra el (los) archivo (s) con
victim1-AES-key
Ninguna otra víctima puede hacer nada usando BTC-victim1-private-key
.
El atacante decide liberar la clave maestra:
- el atacante revela el
attacker-private-key
- el malware usa
attacker-private-key
y victim1-BTC-public-key
como entrada para ECDH que genera un encryption-key-1
(igual que arriba)
- el malware XORs
encrypted-victim1-BTC-private-key
con el encryption-key-1
, almacena el resultado como victim1-BTC-private-key
- el malware utiliza
BTC-victim1-private-key
y victim1-keypair-public-key
como entrada para ECDH que calcula encryption-key-2
- malware XORs
encrypted-victim1-AES-key
con el encryption-key-2
que da victim1-AES-key
- el malware descifra el (los) archivo (s) con
victim1-AES-key
En el último escenario, cualquier víctima puede usar el attacker-private-key
primero para obtener el victim*-BTC-private-key
y luego el victim*-AES-key
.