作者jlovet (Want 2 see u no more)
看板CodeJob
标题Re: [讨论] 序号保护机制
时间Mon Feb 23 01:16:03 2009
※ 引述《datoguo (秋)》之铭言:
: 你有没有考虑用公钥密码系统,如RSA,
: 把序号被破解的困难度建立在密码学已知且公认安全的公钥密码系统上,
: 发序号时,以私钥将明文加密後的密文为序号,
: 再於软体中使用公钥检验,如此,破解者逆向追踪程式码,纵然知道原始码,
: 不知道私钥,也无法设计出序号产生器。
没错,这是我本来的想法。
可是,许多密码学的人,例如CryptoPP的作者,不认同private key加密这个动作
因此CryptoPP里面的非对称金钥都只能用公钥加密
如果直接用他里面的实做,那就得把私钥放在软体里面,
有人就会质疑从私钥可以得到公钥然後生出keygen
(ECIES那篇有很多人这麽问)
: 不过,缺点是:如果你要用RSA,必须选大质数才够安全(破解者难以大数分解),
: 但是一旦如此,你的序号也会非常长。
: 可是如果选用不够大的质数,序号可以比较短,但是也相对比较容易被大数分解破解。
: 除此之外,你可以针对序号检验的部份的code加Anti-Debug,及加壳,
: 增加破解及逆向追踪的困难度。
: 以上小小建议。
http://www.codeproject.com/KB/security/ProductActivation.aspx
这个人做了三种,RSA,AES,ECC
RSA用512 bits,就花了28个字元了..
http://www.codeproject.com/KB/security/ECIESProductKey.aspx
ECC可以做出比较小的签章,或是加密结果..
我用的是ECC的变形,
加壳...不觉得非常需要
我的client部份就算程式码被知道,要逆向也没办法,就像你要从public key去得到
private key一样...很难 :p
有兴趣我们来Programming版讨论吧
或是
http://bbs.pediy.com/showthread.php?t=82573
我怕在这边会被骂
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.216.204