2009年FFF team的SeVeN写了个WinRAR的注册机,里面当然包含了其中用到的椭圆曲线的私钥。
其中私钥:k = 0x59fe6abcca90bdb95f0105271fa85fb9f11f467450c1ae9044b7fd61d65e
但是这个私钥怎么来的,一直是个谜。当时brute-force这个ECDLP不太可能。
最近翻一个东西的时候,发现有人早就知道了。
原来WinRAR的作者自己在sha-1基础上设计了一个hash算法,用来计算付费用户的license key。
如果给这个hash函数传入的文本串长度为0,那么得到的hash值正好就是上面那个私钥k。
也就是说用了固定算法和固定输入搞出来的数作为私钥,这犯了大忌:私钥必须是强随机的。
等于是他这个椭圆曲线的一套费半天劲也是白搞了。
不过要看出“输入文本长度为0时的hash就是k”这点需要点运气,是需要尝试的。
计算license key时还会调用这个hash函数传入其他两个不同的文本/种子进去算出来另外两个私钥,应该是从这里得到了启发。
github /bitcookies/winrar-keygen/blob/master/README.HOW_DOES_IT_WORK.zh-CN.md
--
修改:z16166 FROM 123.115.128.*
FROM 123.115.128.*