序言
前些天借着Windows上的”永恒之蓝“漏洞,本来几乎快销声匿迹的加密勒索病毒又重新回到了公众视线里。由于电信等网络运营商早就封堵了可能导致中毒的445端口,所以外网影响不大,但是教育网里的同学就遭殃了,尤其是很多临毕业的学生纷纷中招,论文被加密,可能因此被迫延毕。
本文尝试着还原这些勒索病毒中文件加解密的原理,来了解为什么这些病毒这么难缠,并给出一些“破解”的可能性,虽然条件都比较苛刻。
原理
这类病毒都利用了公钥加密来加密文件。关于公钥加密原理和实现可以看本博客的其它相关文章,这里不再赘述。
有的病毒使用RSA加密(比如本次爆发的WannaCry病毒),有的使用椭圆曲线加密(比如CTB Locker),以下简称ECC。本文主要讲解使用椭圆曲线加密的方式。
ECC的优势在于,相比RSA加密,达到同样强度的密钥要短得多,要达到128位AES的加密强度,RSA密钥长度需要3072位,而ECC只需要256位。对于病毒来说,体积越小越隐蔽越容易传播,公钥自然是越短越好了。
但是相应的RSA实现更加简单,更加易用。
DH(Diffie–Hellman密钥交换)
DH(Diffie–Hellman key exchange)通常用于通信中双方协商密钥。利用公钥系统的特性,双方只需要向对方公布自己的公钥,即可得到同一个只有双方知道的共享密钥。
假设小红跟小明进行一次DH,具体流程是:
小红生成私钥 x 和公钥
小红公布公钥 (g