收藏本站威世動力晶片威世車業粉絲團SMART零件易購網SMART-FB粉絲團本站YouTube頻道|简体中文

Rank: 3Rank: 3

  • TA的每日心情
    開心
    2014-11-12 09:59:02
  • 簽到天數: 252 天

    [LV.8]以壇為家I

    升級  40%

    積分
    85
    貢獻
    0
    威望
    4
    能量
    8057
    管理該用戶勳章
    跳轉到指定樓層
    樓主
    發表於 2006-3-11 01:49:13 |只看該作者 |倒序瀏覽
    [這篇文章最後由昏迷中在 2006/03/11 01:55am 第 1 次編輯]

    WindowsXP序號產生原理(橢圓曲線法)
    從Win95起,MS(註:即Microsoft,下同)的產品安裝Key從原來的10 位數字改為25位字符,這一改動,****著MS告別了簡單的校驗和,從此投入了橢圓曲線法的懷抱。從密碼學的角度來看,這絕對是一個里程碑,因為當時橢圓曲線法仍在研究論證階段,MS是第一個將之實用以商業產品的廠家。 
      那麼在這25個字符裡到底有什麼呢? 
    1.Base24 
      這25個字符實際是114bits的數據用Base24進行UUCode後的結果,做為安裝Key,這個Base必須絕對避免誤認,所以MS選擇了以下這24個字符做為UUCode的Base:  BCDFGHJKMPQRTVWXY2346789 
      所以,如果你的安裝Key 有這24個字符以外的字符的話,你完全可以把它丟到垃圾筒裡去了??不用試就知道它根本通不過了。
    2.114 bits 
      UUDecode後得到的114位按Intel高位在後的格式表示如下: 
    [ X XXXXXXXX XXXXXXXX XXXXXXXXXXXXXXXXXX ] Total 114 Bits
    | | | \ 55 Bits Sign
    | | \ 28 Bits Hash 
    | \ 30 Bits Serial \ 31 Bits Data 
    \ 1 Bits Flag / 
    Flag: 不明標誌,目前所見的各類Key中這一位總是為0。 
    Serial:用戶序列號,轉成十進製表示為AAAABBBBBB,對應顯示為: 
    零售版:xxxxx-AAA-BBBBBBx-xxxxx 
    OEM版: xxxxx-OEM-0AAAABx-BBBBB 
    以上31bits總稱為Data,是CDKey中的基本部分。 
    Hash:Data經特定處理得到的結果,見後文。 
    Sign:Hash值的橢圓曲線簽名,見後文。 
    3.橢圓曲線簽名算法 
       要說明橢圓曲線簽名算法可不是一件容易的事,有興趣的可以自己用「橢圓曲線」或是「elliptic curve」在搜索引擎找相關的資料來看吧,這裡只簡單介紹MS的用法。 
    所謂橢圓曲線是指這樣一類曲線方程:
    y^2 + a1*xy + a3*y = x^3 + a2*x^2 + a4*x + a6 
    在密碼學裡用的是它的兩個特例,而MS用的更是這兩個特例中的特例:
    y^2 = x^3 + a*x + b ( mod p ) 
    當a、b、p選定後,就可以確定一個橢圓曲線,再選擇一個生成點 G(gx,gy), 
    於是,存在一個最小的整數q使得q*G=O,然後,再任意選擇一個整數 k K(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 ( mod q ); 
    D.把Data、Hash、Sign三個數組合後UUCode得到25位CDKey。 
    驗證CDKey時: 
    A.把25位CDKey先UUDecode再拆分後提到Data、Hash、Sign; 
    B.求點R( rx, ry ) = Sing * G + Hash * K ( mod p ); 
    C.將Data、rx、ry共100個字節求SHA-1,取結果中的28位得到Hash\'; 
    D.如果Hash = Hash\',則該CDKey為有效Key。 
    4.BINK 
      從前面的說明可以看出,為了驗證CDKey,MS 必須公開橢圓曲線簽名算法中的公開密鑰,那麼這個公開密鑰放在哪裡呢?答案是在pidgen.dll裡的BINK資源裡(其他產品如Office則被包在 *.MSI),而且一共有兩組,從目前已知的Key組合來看,第一組密鑰是用以零售版本的,第二組則用於OEM版本。兩個產品的Key能否通用就在於對應的密鑰是否相同,比如中文版的Windows 2000的Pro/Srv/AdvSrv的第二組密鑰也是相同的,即一個PWindows 2000 Pro的OEM版的Key,可同時供 PWindows 2000 Srv/Adv的OEM版使用。 
    5.破解及其難度 
       要破解CDKey的生成算法,必須從MS 公開的密鑰中求出對應的私有密鑰,即只要求出q和k即可。從BINK中公開的密鑰來看,p 是一個384 bits的質數,看起來計算量好像至少要O(2^168)才行,但MS設計中一個缺陷(?)使實際工作量降低到只有O(2^28)就可以了。 
    為什麼相差這麼遠? 
    回頭看看3.C中的式子: Sign = r - Hash * k ( mod q ) 
    通常情況下q可以是很大的值,因此Sign應該也很大,但MS 為了減少用戶輸入的CDKey的數量,把Sign的值限死在55 bits,因此,自然也限定了q最多也不能超過56 bits。依此類推,由於k 作者曾經在一台賽揚II 800的機器上只用6個小時就解出某組密鑰的q值,最多時在一台雷鳥1G上用了28個小時才算出另一組密鑰的k值,其他平均大約都在十個小時左右就可以求出。 

    註:關於什麼-640-和-005-,其實沒什麼意思,例如當我裝xp打入序號為FCKGW-RHQQ2-YXRKT-8TG6W-2B7Q8,我的產品號就是55274-640-0000356-23174,而我打入3H87P-VHQGD-M74M6-8MHMH-3JRB3時,我的產品號就變成了 55274-643-6941852-23174,這證明了什麼?其實產品號的頭五個key,是****windows的版本,而接著的十個key,就是 ****你裝windows時輸入的序號,最後的五個key是****光盤的cd-code罷了.............所以,產品號不是-005-的都未必不能啟動XP.................. :em64:

    [img]http://myweb.hinet.net/home4/kali-ua/f.gif[/img]

    Rank: 4

  • TA的每日心情
    擦汗
    2012-2-1 21:46:22
  • 簽到天數: 1 天

    [LV.1]初來乍到

    升級  8%

    積分
    104
    貢獻
    0
    威望
    3
    能量
    10148
    沙發
    發表於 2006-3-11 06:41:08 |只看該作者

    [密技][研究][爆料]WindowsXP序號(CD_KEY)產生原理

    .....
    實在太專業了
    你在微軟上班嗎?

    使用道具 舉報

    俱樂部版主

    朱小明Jeremy

    Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    開心
    2015-9-3 22:17:12
  • 簽到天數: 266 天

    [LV.8]以壇為家I

    積分
    126
    貢獻
    0
    威望
    5
    能量
    12144
    板凳
    發表於 2006-3-11 08:20:58 |只看該作者

    [密技][研究][爆料]WindowsXP序號(CD_KEY)產生原理

    原來是這樣

    [move]小明 [/move] 2006/1/25感謝車友完成我的心願MSN mazdaqq@hotmail.com Yahoo qq2mail@yahoo.com.tw
    『俱樂部台南保修指定店』天鎰汽車 06-2521997

    使用道具 舉報

    草蓆
    匿名  發表於 2006-3-11 08:40:33

    [密技][研究][爆料]WindowsXP序號(CD_KEY)產生原理

    感恩分享喔!!

    俱樂部推薦:威世國際,SMART晶片、零件、與電腦的專家 04-2229-1000

    使用道具

    臨時會員

    Member

    Rank: 1

    該用戶從未簽到

    升級  66.67%

    積分
    2
    貢獻
    0
    威望
    2
    能量
    0
    報紙
    發表於 2006-3-11 13:58:07 |只看該作者

    [密技][研究][爆料]WindowsXP序號(CD_KEY)產生原理

    thanks!!

    使用道具 舉報

    Rank: 6Rank: 6

  • TA的每日心情
    奮鬥
    2015-12-17 08:42:09
  • 簽到天數: 1448 天

    [LV.10]以壇為家III

    升級  31.6%

    積分
    1079
    貢獻
    0
    威望
    2
    能量
    107728
    6#
    發表於 2006-3-11 23:39:58 |只看該作者

    [密技][研究][爆料]WindowsXP序號(CD_KEY)產生原理

    真是太強了

    使用道具 舉報

    初級會員

    Member

    Rank: 1

    該用戶從未簽到

    升級  0%

    積分
    3
    貢獻
    0
    威望
    3
    能量
    0
    7#
    發表於 2006-3-12 11:19:50 |只看該作者

    [密技][研究][爆料]WindowsXP序號(CD_KEY)產生原理

    Bond∼James Bond!棒∼真是棒!
    謝謝分享

    俱樂部推薦:威世國際,SMART晶片、零件、與電腦的專家 04-2229-1000

    使用道具 舉報

    臨時會員

    Member

    Rank: 1

    該用戶從未簽到

    升級  66.67%

    積分
    2
    貢獻
    0
    威望
    2
    能量
    0
    8#
    發表於 2006-3-28 14:20:18 |只看該作者

    [密技][研究][爆料]WindowsXP序號(CD_KEY)產生原理

    原來XP的序號產生方法跟密碼學有關係喔!
    這學期有教密碼學...
    可是好深奧....聽不太懂 >"<


    [img]http://www.tmall.com.cn/images/News/2005/1012/200510121221572775.jpg[/img]

    使用道具 舉報

    Rank: 1

    該用戶從未簽到

    升級  28.57%

    積分
    5
    貢獻
    0
    威望
    5
    能量
    5
    9#
    發表於 2006-3-29 17:33:25 |只看該作者

    [密技][研究][爆料]WindowsXP序號(CD_KEY)產生原理

    謝謝你專業的解說!當初上密碼學都沒有上到這個。

    開著藍銀 Cabrio 出沒在高屏地區 星期六都在鴻吉偷學拉咧!!! 建明 chiening 0929053169 [img]http://tk.files.storage.msn.com/x1pUr2osLO3XWgbU2-oLW8Yi-qwrQnaJdWoHdnu7ejeQp64i4ak_4KMjQrKkDurg3nyKIJzlYVRzEEwWw3ddt3GEX39H3QujGGpzS0jaa2g8kHmvO8vEoauWgOaQuy0-lJG3GyHLRfltwc[/img]

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 註冊

    回頂部