我很难理解如何使用其创建者提供的主密钥来解密由 TeslaCrypt 勒索软件加密的文件。
据我所知,勒索软件使用对称加密系统加密文件,然后使用非对称加密方案加密密钥。如何通过拥有主密钥来解密受影响的文件?
我很难理解如何使用其创建者提供的主密钥来解密由 TeslaCrypt 勒索软件加密的文件。
据我所知,勒索软件使用对称加密系统加密文件,然后使用非对称加密方案加密密钥。如何通过拥有主密钥来解密受影响的文件?
在一个非常抽象的层面上:每个受害者机器上的恶意软件除了用于加密文件的加密 AES 密钥外,还存储解密它们所需的私钥的加密副本。这个副本本身是用攻击者的公钥加密的,可以用攻击者的私钥(文中称为“主密钥”)解密。
我将尝试以更详细的方式重新表述卡巴斯基的文章TeslaCrypt 2.0 伪装成 CryptoWall 。
为了简单起见,我将跳过每个文件可以使用不同的 AES 密钥编码的事实。实际实现也可能不同(特别是可以将更多数据发送给攻击者,并且在攻击者一方执行一些步骤)。无论如何,答案旨在解释主密码方案的工作原理:
起初,受害者只有attacker-public-key
(嵌入在恶意软件中)。
攻击者有attacker-private-key
。
victim1-BTC-public-key
恶意软件使用 a (发送 BTC)和 a BTC-private-key
(提取 BTC)创建一个新的 BTC 地址attacker-public-key
andvictim1-BTC-private-key
作为 ECDH 的输入,生成一个encryption-key-1
victim1-BTC-private-key
与encryption-key-1
, 将结果存储为encrypted-victim1-BTC-private-key
, 忘记encryption-key-1
victim1-BTC-private-key
给攻击者并将其删除受害者拥有:attacker-public-key
, victim1-BTC-public-key
, encrypted-victim1-BTC-private-key
.
攻击者拥有:attacker-private-key
, victim1-BTC-private-key
.
下一个恶意软件开始加密文件:
victim1-AES-key
( victim1-keypair-private-key
) 和victim1-keypair-public-key
victim1-BTC-public-key
andvictim1-AES-key
作为 ECDH 的输入,ECDH 生成一个encryption-key-2
AES-key
与 进行异或encryption-key-2
运算,将结果存储为加密的 AES 密钥,忘记加密密钥 2受害者拥有:attacker-public-key
, victim1-BTC-public-key
, encrypted-victim1-BTC-private-key
, victim1-keypair-public-key
, encrypted-victim1-AES-key
.
攻击者拥有:attacker-private-key
, BTC-victim1-private-key
.
现在受害者支付了赎金,攻击者释放了一个密钥来解密文件:
BTC-victim1-private-key
BTC-victim1-private-key
和victim1-keypair-public-key
作为计算ECDH的输入encryption-key-2
(同上)encrypted-victim1-AES-key
与encryption-key-2
victim1-AES-key
victim1-AES-key
没有其他受害者可以使用BTC-victim1-private-key
.
攻击者决定释放主密钥:
attacker-private-key
attacker-private-key
andvictim1-BTC-public-key
作为 ECDH 的输入,生成一个encryption-key-1
(与上面相同)encrypted-victim1-BTC-private-key
与encryption-key-1
, 将结果存储为victim1-BTC-private-key
BTC-victim1-private-key
和victim1-keypair-public-key
作为计算 ECDH 的输入encryption-key-2
encrypted-victim1-AES-key
与encryption-key-2
victim1-AES-key
victim1-AES-key
在后一种情况下,任何受害者都可以使用attacker-private-key
first 来推导出victim*-BTC-private-key
then victim*-AES-key
。