To: danielbirns@hotmail.com, slangford@certicom.com, bolson@certicom.com, David Znidarsic <davidz@globes.com>, Matt Christiano <matt@globes.com>
Subject: Summary of review
Cc: richard Mirabella <rich@globes.com>
发现了ECC的一个安全漏洞
o 在handshake中使用seed3和seed4,我们可以用一台运行较快的PC用大约一天的时间暴力破解出seed3和seed4。
o 假如在signature生成过程不超过1毫秒,那么第一个一半如果signature为2个signature(这句话不会翻译,:()。假如是真的,有经验的hacker就能立刻获得私钥。这
对于113位的sign(57字节)将很快找到私钥,我的PC的运算速度就可以。
建立(setup)
o 96位的seed S。
o 提供优化的选项给ISV(独立软件开发商) 生成可靠的随机96位seed,或者客户自己定义96位的seed n。
o 从96位的seed S和n生成更多的96位的seed Tn,使用FIPS186随机数发生器产生这些96 位的seed Tn。
o 这些Tn必须一次生成。
o 新的客户使用T2和T3生成seed1~seed4,所以他们只需要96位的seed S。(LM_SEED1-3共12字节96位)
公钥/私钥对的产生
o 用T1生成公钥和私钥
o 用T1和常数113生成一个113位的公钥/私钥对
o 同样用T1和常数163及239生成相应长度的公钥/私钥对
o 确保这些公钥/私钥对不是相同的,即使seed只相差1也足够了。
signing
o 使算法暂时停止工作
o Private key,消息的散列。
o 相同的feature会产生相同signature
o 为每个signature需要一个不同的Certicom "context"。(Certicom 公司就是提供ECC软件服务的公司。)
测试
o 加一个测试去避免发生上面提到第二种情况----113位有第一个signature的一半相同。
o 标记f1-f100并且查找前半部分相同的signature
ISV(独立软件开发商)用如下方法加强保护
o Brian Olson 提到的方法对于私钥和seed3-4在客户端是安全的。目前的技术水平硬件狗的是合适的。除了seed和实际的signing取代了硬件狗。一般认为这是安全的和
方便的。当然现在硬件狗没有广泛使用,主要没有被更多的客户接受。
o 我的观点是没有真正的安全,在ISV(独立软件开发商)实践过程中,不愿意使用,或者是找到其他方法绕过这种复杂的验证。举个例子,假设每次生成license你都被要求输入password。
个文件里,或者登陆一次后永不注销,这些都是极不安全的做法。
o 也就是说我们现在需要做一项工作:改进文档,解释什么需要保护。如今,大容量的硬盘上有太多的文件,这些文件没有注释,其中也包括S或者私钥。
结论
o 我认为hacker唯一可以破解的地方是通过handshake来获得seed3和seed4,除非hacker发现其它的漏洞。
o 还有两步需要做
1)Macrovision高级工程师应该查看源代码试图找到其他的漏洞。这样就能在hacker发现之前修补漏洞。
2)所有的Certicom 代码都是c语言写的。我可以发送最终版本给Certicom 公司,让他们发现其中明显的错误用法。