时间:2015-02-14 | 来源:互联网 | 阅读:195
话题:
(1) CTB-Locker的作者首先生成一个公私钥对。公钥保存在前面说的释放出来的配置文件中,私钥保存在服务器上. 这里我们把这个公钥称为master public key,私钥称为master private key。 (2) 在对每一个文件加密的时候会产生一个会话公私钥对,当然使用的是ECDH算法。私钥生成的算法是对文件的时间,系统运行时间等计算SHA256,这里我们称为session private key。然后使用ECDH算法生成公钥即session public key.之所以称为会话公私钥是因为每一个文件的公私钥对都是和文件自身时间以及系统运行时间有关的。 (3) 根据ECDH算法,我们知道 sessionshared secret=ECDH(masterpublic key, session private key)=ECDH(session public key,master private key). 在计算的时候要使用会话私钥和主公钥计算出sessionshared secret,然后对session shared secret计算sha256作为AES的密钥。虽然我们可以获取到主公钥但是会话私钥是不保存的,唯一的解密方法是通过主私钥和会话公钥计算出session shared secret。会话公钥是保存在加密的文件里的。
计算出会话公钥的代码如下:
其中var_104是一个长度为0×20的缓冲区,第一个字节为9其余的字节为0。这个值就相当于ECDH算法中爱丽丝与鲍伯协定使用的g值。
接着就是使用会话私钥和主公钥计算出来sessionshared secret,然后对其计算sha256并将其作为AES加密的KEY。需要强调的是这里面会话私钥是不保存的。相关代码如下:
图中的najzljf_data就是解密出来的配置文件的内容。
一句话总结:要想解密文件只能通过主私钥和保存在文件中的会话公钥计算出来session shared secret,再计算一下sha256才能得到AES的KEY。除此外别无他法。
湘ICP备2022002427号-10 湘公网安备:43070202000427号
© 2013~2024 haote.com 好特网