CryptoLocker 主密钥

信息安全 密码学 勒索软件
2021-08-18 00:27:49

我很难理解如何使用其创建者提供的主密钥来解密由 TeslaCrypt 勒索软件加密的文件。

据我所知,勒索软件使用对称加密系统加密文件,然后使用非对称加密方案加密密钥。如何通过拥有主密钥来解密受影响的文件?

1个回答

在一个非常抽象的层面上:每个受害者机器上的恶意软件除了用于加密文件的加密 AES 密钥外,还存储解密它们所需的私钥的加密副本。这个副本本身是用攻击者的公钥加密的,可以用攻击者的私钥(文中称为“主密钥”)解密。

我将尝试以更详细的方式重新表述卡巴斯基的文章TeslaCrypt 2.0 伪装成 CryptoWall 。

为了简单起见,我将跳过每个文件可以使用不同的 AES 密钥编码的事实。实际实现也可能不同(特别是可以将更多数据发送给攻击者,并且在攻击者一方执行一些步骤)。无论如何,答案旨在解释主密码方案的工作原理:


起初,受害者只有attacker-public-key(嵌入在恶意软件中)。
攻击者有attacker-private-key

  1. victim1-BTC-public-key恶意软件使用 a (发送 BTC)和 a BTC-private-key(提取 BTC)创建一个新的 BTC 地址
  2. 恶意软件使用attacker-public-keyandvictim1-BTC-private-key作为 ECDH 的输入,生成一个encryption-key-1
  3. 恶意软件 XORvictim1-BTC-private-keyencryption-key-1, 将结果存储为encrypted-victim1-BTC-private-key, 忘记encryption-key-1
  4. 恶意软件将其发送victim1-BTC-private-key给攻击者并将其删除

受害者拥有:attacker-public-key, victim1-BTC-public-key, encrypted-victim1-BTC-private-key.
攻击者拥有:attacker-private-key, victim1-BTC-private-key.

下一个恶意软件开始加密文件:

  1. 恶意软件生成一个密钥对并将私钥用作 AES 加密密钥,因此该对由victim1-AES-key( victim1-keypair-private-key) 和victim1-keypair-public-key
  2. 恶意软件使用victim1-BTC-public-keyandvictim1-AES-key作为 ECDH 的输入,ECDH 生成一个encryption-key-2
  3. 恶意软件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.


现在受害者支付了赎金,攻击者释放了一个密钥来解密文件:

  1. 攻击者透露 BTC-victim1-private-key
  2. 恶意软件使用BTC-victim1-private-keyvictim1-keypair-public-key作为计算ECDH的输入encryption-key-2(同上)
  3. 恶意软件 XORencrypted-victim1-AES-keyencryption-key-2victim1-AES-key
  4. 恶意软件解密文件 victim1-AES-key

没有其他受害者可以使用BTC-victim1-private-key.


攻击者决定释放主密钥:

  1. 攻击者揭示了 attacker-private-key
  2. 恶意软件使用attacker-private-keyandvictim1-BTC-public-key作为 ECDH 的输入,生成一个encryption-key-1(与上面相同)
  3. 恶意软件 XORencrypted-victim1-BTC-private-keyencryption-key-1, 将结果存储为victim1-BTC-private-key
  4. 恶意软件使用BTC-victim1-private-keyvictim1-keypair-public-key作为计算 ECDH 的输入encryption-key-2
  5. 恶意软件 XORencrypted-victim1-AES-keyencryption-key-2victim1-AES-key
  6. 恶意软件解密文件 victim1-AES-key

在后一种情况下,任何受害者都可以使用attacker-private-keyfirst 来推导出victim*-BTC-private-keythen victim*-AES-key