|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。从win95起,microsoft的产物安装key从本来的10位数字改成25位字符,这一修改,代表着microsoft告辞了复杂的校验和,今后投进了椭圆曲线法的度量。从暗码学的角度来看,这相对是一个里程碑,由于事先椭圆曲线法仍在研讨论证阶段,microsoft是第一个将之有用以贸易产物的厂家。那末在这25个字符里究竟有甚么呢?
1.base24
这25个字符实践是114bits的数据用base24举行uucode后的了局,做为安装key,这个base必需相对制止误认,以是microsoft选择了以下这24个字符做为uucode的base:bcdfghjkmpqrtvwxy2346789,以是,假如你的安装key有这24个字符之外的字符的话,你完整能够把它丢到渣滓筒里往了━━不必试就晓得它基本通不外了。
2.114bits
uudecode后失掉的114位按intel高位在后的格局暗示以下:
[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]total114bits
|||55bitssign
||28bitshash
|30bitsserial31bitsdata
1bitsflag/
flag:不明标记,今朝所见的各种key中这一名老是为0。
serial:用户序列号,转成十进制暗示为aaaabbbbbb,对应显现为:
批发版:xxxxx-aaa-bbbbbbx-xxxxx
oem版:xxxxx-oem-0aaaabx-bbbbb
以上31bits总称为data,是cdkey中的基础部分。
hash:data经特定处置失掉的了局,见后文。
sign:hash值的椭圆曲线署名,见后文。
3.椭圆曲线署名算法
要申明椭圆曲线署名算法可不是一件简单的事,有乐趣的能够本人用“椭圆曲线”或是“ellipticcurve”在搜刮引擎找相干的材料来看吧,这里只复杂先容microsoft的用法。
所谓椭圆曲线是指如许一类曲线方程:
y^2+a1*xy+a3*y=x^3+a2*x^2+a4*x+a6
在暗码学里用的是它的两个惯例,而microsoft用的更是这两个惯例中的惯例:
y^2=x^3+a*x+b(modp)
当a、b、p选定后,就能够断定一个椭圆曲线,再选择一个天生点g(gx,gy),
因而,存在一个最小的整数q使得q*g=o,然后,再恣意选择一个整数kk(kx,ky)=k*g,如许椭圆曲线署名算法的key就全天生了:
公然密钥为:a,b,p,g(gx,gy),k(kx,ky)
公有密钥为:a,b,p,g(gx,gy),q,k
要对data署名时:
a.先恣意选择一个整数r b.将data、rx、ry共100个字节求sha-1,取了局中的28位失掉hash;
c.求sign=r-hash*k(modq);
d.把data、hash、sign三个数组合后uucode失掉25位cdkey。
考证cdkey时:
a.把25位cdkey先uudecode再拆分后提到data、hash、sign;
b.求点r(rx,ry)=sing*g+hash*k(modp);
c.将data、rx、ry共100个字节求sha-1,取了局中的28位失掉hash;
d.假如hash=hash,则该cdkey为无效key。
4.bink
夙昔面的申明能够看出,为了考证cdkey,microsoft必需公然椭圆曲线署名算法中的公然密钥,那末这个公然密钥放在那里呢?谜底是在pidgen.dll里的bink资本里(其他产物如office则被包在*.msi),并且一共有两组,从今朝已知的key组合来看,第一组密钥是用以批发版本的,第二组则用于oem版本。两个产物的key可否通用就在于对应的密钥是不是不异,好比中文版的windows2000的pro/srv/advsrv的第二组密钥也是不异的,即一个pwindows2000pro的oem版的key,可同时供pwindows2000srv/adv的oem版利用。
5.破解及其难度
要破解cdkey的天生算法,必需从microsoft公然的密钥中求出对应的公有密钥,即只需求出q和k便可。从bink中公然的密钥来看,p是一个384bits的质数,看起来盘算量好象最少要o(2^168)才行,但microsoft计划中一个缺点(?)使实践事情量下降到只要o(2^28)就能够了。
为何相差这么远?
转头看看3.c中的式子:sign=r-hash*k(modq)
一般情形下q能够是很年夜的值,因而sign应当也很年夜,但microsoft为了削减用户输出的cdkey的数目,把sign的值限逝世在55bits,因而,天然也限制了q最多也不克不及凌驾56bits。依此类推,因为k在一台赛扬ii800的呆板上只用6个小时就解出某组密钥的q值,最多时在一台雷鸟1g上用了28个小时才算出另外一组密钥的k值,其他均匀约莫都在十个小时摆布就能够求出。
先贴上再说,有空在再来研讨
</p>因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQLServer还有更多的扩展,可以用存储过程,数据库大小无极限限制。 |
|