微软这个词是什么意思,微软是个啥

聚客2022-05-29  42

cdkey什么意思:微软的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版本的密钥可以同时被OEM版本的PWindows 2000 Srv/Adv使用。

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的值限制在以下。

5比特,因此,自然地,Q被限制为最多56比特。以此类推,因为k

我们面对的最多只有两个2 ^ 56的数据,目前最常用算法的工作量只有O(2 ^ 28)。

笔者曾经在一台赛扬II 800机上只用6个小时就解决了一组按键的Q值,在一台雷鸟1G上最多需要28个小时。

计算另一组键的k值,十个小时左右就能找到其他平均值。

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-005-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,英语公司精选版,序列号为xxxxx-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/180206.html

最新回复(0)