椭圆曲线加密的分析:FLEXLM ECC问答.docVIP

  • 104
  • 0
  • 约 50页
  • 2016-03-13 发布于安徽
  • 举报
椭圆曲线加密的分析:FLEXLM ECC问答.doc

标 题: 【原创】椭圆曲线加密分析:FLEXLM ECC问答[7月16日更新到第7部分] 作 者: readyu 时 间: 2012-06-25,19:00:18 链 接: /showthread.php?t=152615 说明: 我曾经写过ECCTool用于学习和研究椭圆曲线加密在软件上的应用。 椭圆曲线密码学工具?ECCTooL?v1.04 原帖年代久远不再更新。v1.05版本我放在本帖3#。 FLexLM?ECC是椭圆曲线签名的一个典型应用,不可不察。 我整理了一下FLEXLM?ECC方面的研究心得,?准备把它完全写出来。 后面会有算法描述的例子代码。 FLEXLM?ECC问答?(1) readyu?2012.6 1.?FLEXLM是个虾米东西? FLEXlm是应用广泛的License管理工具。宣称数千家EDA工具采用它管理授权。 FLEXlm对厂商来说,它的优点是证书管理功能强大,?支持平台众多。 对最终用户来说,它的缺点是不够友好,?比如Windows下,经常由于某些原因,flexlm服务启动错误。对于破解者来说,它有着为数众多的教本。维基百科上的条目为:/wiki/FLEXlm FLEXLM本来属于GLOBEtrotter。Macrovision曾经收购GLOBEtrotter。 2006年的时候,FLEXLM原来的开发组跑路,另起灶头,产品叫RLM。 /index.php 2008年Macrovision把FLEXLM卖了。现在叫FlexNet?Publisher。 /products/flexnet-publisher.htm 2.?FLexLM?的ECC(椭圆曲线加密)怎么来的? 早期的flexlm采用的常规加密,不安全,能被做出lic。这样的教程是很多的。 flexlm的安全性完全得不到保障,所以,自?v8(大约2001-2002)版本引入了公钥加密算法:椭圆曲线加密。 从此,它一直是flexlm的金钟罩。包括v9(2003-)?,?v10(2004-)?,?v11(2007-),?到最新的版本?v11.10?(2012)?。 FlexLm的ECC没有它自己的东西,完全采购自椭圆曲线加密系统的专利拥有者:Certicom公司。 换而言之,?flexlm?ecc是购买自certicom的一套代码,相当于在腐朽的木门上套一层黄金甲。 OK,?从此它是不破金身了。 3.?Certicom公司是何方神圣? RSA和ECC是两大主流的公钥密码算法体系。相比RSA,ECC晚出生10多年,推广不如前者。 Certicom公司是ECC的主要商业支持者,它拥有多项专利。其地位可与RSA公司匹敌(RSA于2006年被EMC公司收购)。 有一则消息说,2003年美国国家安全局(NSA)以2500万美元支付了Certicom的26项技术许可。 另外有一则消息,?Certicom?2007年起诉索尼公司,要求其支付PS3,DVD播放器等涉及加密技术侵权的专利费用。 Certicom的创办人Scott?Vanstone,是加拿大滑铁卢大学的数学系教授和皇家科学院院士。 以前是研究椭圆曲线加密的,后来创办Certicom公司,努力把ECC从数学界推广到工业界。 Scott写过一本《椭圆曲线密码学导论》,?颇有名气。 4.?FLEXLM?如何用的ECC? 说来话长。一句话说:FLexLM?在license验证上,主要用的ECDSA(椭圆曲线数字签名算法)。 具体的讲:?flexlm针对ECDSA有一些自己定义的东西以抵抗破解。?后面我会说到,这些自定义的 东西也不是那么牢固。 5.?FLEXLM?ECC的通用破解方法? FLEXLM?ECC的通用破解方法就是: 完全按照它的ECDSA算法签名,?只替换公钥和checksum,?写一个keygen生成license。 从逻辑上讲,生成license的方法和原厂的完全一致。 具体该怎么做呢: 首先,?实现标准的ECDSA签名算法。椭圆曲线的具体算法,可以用现成的miracl,cryptopp等加密库代码。?只需要搞清楚ECDSA的使用方法就可以。 从早期版本?v9.2?(2004)?,?到最新版本v11.10?(2012)?。它的ecc公钥都是有checksum的。 替换公钥,首先得搞清楚checksum。它只有一个函数,不算复杂,后面我会给出代码。 计算这个checksum,?对所有版本都是适合的。 其次,?公钥在文件里是加密打散的,有大量垃圾代码。这些干扰使得flexlm可读性很差。获取公钥需要调试。在我写SlickEdit的patch?keygen,我曾经采用调试的方法,非常不方便。 那么,有没有更方便的方法获取公钥呢? ECC验证代码在它执行过

文档评论(0)

1亿VIP精品文档

相关文档