几位操作系统是什么意思,操作系统位于

聚客2022-05-29  60

cdkey什么意思:[操作系统]Microsoft的25位CDKey里有什么?(转载)

微软的25位CDKey里面有什么?

作者:Bug修复

出发地:

从Win98开始,M$的产品安装密钥由原来的10位改为25位。这一变化意味着M$告别了简单的校验和,从此拥抱了椭圆曲线方法。从密码学的角度来看,这绝对是一个里程碑,因为当时椭圆曲线方法还处于研究论证阶段,M$是第一个将其应用于商业产品的厂商。

那么这25个字里到底有什么呢?

1.Base24

这25个字符实际上是基数为24的114位数据的UUCode的结果。作为安装密钥,这个基数必须绝对避免误认,所以M$选择了以下24个字符作为UUCode的基数:

BCDFGHJKMPQRTVWXY2346789

所以,如果你的安装密钥有这24个字符以外的字符,你可以把它扔到垃圾桶里━ ━你不用试就知道它根本不通过。

2.114位

UUDecode后得到的114位按照Intel高位的格式表示如下:

[X XXXXXXXX XXXXXXXX XXXXXXXX xxxxxxxxxxxxxxx]共114位

| | | \ 55位符号

| | \ 28位哈希

| \ 30位串行\ 31位数据

\ 1位标志/

标志:未知标志。这种到目前为止看到的各种键都是0。

Serial:用户的序列号,用十进制的AAAABBBBBB表示,显示如下:

零售版:xxxxx-AAA-BBBBBBx-xxxxx

版本:xxxxx-OEM-0aaabx-bbbbb

以上31位统称为数据,是CDKey的基本部分。

哈希:数据是特定处理的结果,见下文。

Sign:哈希值的椭圆曲线签名,见下图。

3.椭圆曲线签名算法

解释椭圆曲线签名算法并不容易。有兴趣的可以在搜索引擎里用“椭圆曲线”或者“椭圆曲线”。

寻找相关信息。下面简单介绍一下M$的用法。

所谓椭圆曲线是指这样一种曲线方程:

y^2+a1 * xy+a3 * y = x^3+a2*x^2+a4 * x+a6

它的两种特殊情况在密码学中使用,M$使用这两种特殊情况中的特殊情况:

y^2 = x^3 + a*x + b ( mod p)

当选择A、B和P时,可以确定椭圆曲线,然后可以选择生成点G(gx,gy)。然后,有一个最小整数Q使得q*G=O,然后,一个整数K < Q,求点K(kx,ky)=k*G,这样椭圆曲线签名算法的密钥就全部生成了:

公钥是:a,b,p,G(gx,gy),K(kx,ky)

私钥是:A,B,P,G (GX,GY),Q,k

要签署数据:

A.选一个整数r < Q,求点r (rx,ry)= r * g;

b、由100字节的数据rx和ry计算SHA-1,取结果中的28位得到Hash;

C.find Sign = r-Hash * k(mod q);;

d .通过UUCode将三个数的数据、Hash和Sign组合得到一个25位的CDKey。

验证CDKey时:

A.25位的CDKey先UUDecode后split,再提为Data,Hash,Sign;

B.求点r (rx,ry)= sing * g+hash * k(mod p);

C.从100字节的数据rx和ry中找出SHA-1,取结果的28位得到hash ’;

D.如果Hash = Hash ',则CDKey是有效的密钥。

4.宾克

从前面的描述可以看出,为了验证CDKey,M$必须公开椭圆曲线签名算法中的公钥,那么这个公钥放在哪里呢?答案在pidgen.dll的BINK resources(Office等其他产品包装在*。MSI),而且有两组。根据目前已知的组合键,第一组键是零售版的,第二组是OEM版的。两个产品的密钥能否通用,取决于对应的密钥是否相同。比如中文版Windows 2000的Pro/Srv/AdvSrv的第二套密钥是一样的,即一个PWindows 2000 Pro的OEM密钥可以同时被PWindows 2000 Srv/Adv的OEM使用。

5.开裂及其难度

破解CDKey的生成算法,必须从M$的公钥中找到对应的私钥,也就是只需要找到Q和k,根据BINK中的公钥,P是一个384位的素数,看起来计算量至少需要O(2 ^ 168),但是M$(?)把实际工作量减少到只有O(2 ^ 28)。

为什么会有这样的差别?

回头看看3中的公式。C: Sign = r-Hash * k (mod q)

通常,Q可以是一个很大的值,所以Sign也应该很大。但是M$为了减少用户输入的CDKey数量,将Sign的值限制为55位。因此,自然地,它也将Q限制为不超过56位。以此类推,因为k

笔者曾经在一台赛扬II 800机上,仅用6个小时就算出了某组键的Q值。最多的时候,在一台雷鸟1G上花了28个小时才算出另一组键的K值。其他平均时间约为10小时左右。

6.实际例子

gtMSK show CCC 64-69q 48-Y3KWW-8V9GV-tvk RM

key CCC 64-69q 48-Y3KWW-8v 9gv-tvk RM是给P-WinXP_Pro的,Sign OK。

Flag = 0,Serial = 005-080936,Hash = 5AA62EB,Sign = ED6AA259。

此密钥适用于Windows XP Pro,简体中文OEM/MSDN,序列号为xxxxx-0

05-080936x-xxxxx

gtMSK show GJ27Y-xh2x-GRR3G-Q3WVJ-h9p 33

键GJ27Y-xh2x-GRR3G-Q3WVJ-h9p 33为E-WinXP_Pro-2,Sign OK。

Flag = 0,Serial = OEM-006400-00001,Hash = 2177C11,Sign = 79B54F13。

此密钥用于Windows XP Pro,英语企业精选版,序列号为x

xxxx-OEM-006400x-00001

gtMSK show bcc 64-69q 48-Y3KWW-8V9GV-tvk RM

密钥BCC64-69Q48-Y3KWW-8V9GV-TVKRM用于未知产品,未检查标志

Flag = 0,Serial = 005-080936,Hash = 5AA62EB,Sign = 564E8259。

这个钥匙是给一些我不知道的产品的,序列号是xxxxx-005-080936x-xxxxx

gtMSK show ACC 64-69q 48-Y3KWW-8V9GV-tvk RM

无效密钥:ACC64-69Q48-Y3KWW-8V9GV-TVKRM。

该密钥不是有效的M$ CD密钥。

转载请注明原文地址:https://juke.outofmemory.cn/read/180205.html

最新回复(0)