人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統(tǒng)下載站 > 技術開發(fā)教程 > 詳細頁面

Microsoft的25位CDKey里有啥

Microsoft的25位CDKey里有啥

更新時間:2022-07-01 文章作者:未知 信息來源:網(wǎng)絡 閱讀次數(shù):

從win95起,microsoft的產(chǎn)品安裝key從原來的10位數(shù)字改為25位字符,這一改動,代表著microsoft告別了簡單的校驗和,從此投入了橢圓曲線法的懷抱。從密碼學的角度來看,這絕對是一個里程碑,因為當時橢圓曲線法仍在研究論證階段,microsoft是第一個將之實用以商業(yè)產(chǎn)品的廠家。那么在這25個字符里到底有什么呢?
  1.base24
  這25個字符實際是114bits的數(shù)據(jù)用base24進行uucode后的結果,做為安裝key,這個base必須絕對避免誤認,所以microsoft選擇了以下這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經(jīng)特定處理得到的結果,見后文。
  sign:hash值的橢圓曲線簽名,見后文。

  3.橢圓曲線簽名算法
  要說明橢圓曲線簽名算法可不是一件容易的事,有興趣的可以自己用“橢圓曲線”或是“elliptic curve”在搜索引擎找相關的資料來看吧,這里只簡單介紹microsoft的用法。
  所謂橢圓曲線是指這樣一類曲線方程:
  y^2 + a1*xy + a3*y = x^3 + a2*x^2 + a4*x + a6
  在密碼學里用的是它的兩個特例,而microsoft用的更是這兩個特例中的特例:
  y^2 = x^3 + a*x + b ( mod p )
  當a、b、p選定后,就可以確定一個橢圓曲線,再選擇一個生成點 g(gx,gy),
于是,存在一個最小的整數(shù)q使得q*g=o,然后,再任意選擇一個整數(shù) 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.先任意選擇一個整數(shù)r  b.將data、rx、ry共100個字節(jié)求sha-1,取結果中的28位得到hash;
  c.求sign = r - hash * k ( mod q );
  d.把data、hash、sign三個數(shù)組合后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個字節(jié)求sha-1,取結果中的28位得到hash';
  d.如果hash = hash',則該cdkey為有效key。

  4.bink
  從前面的說明可以看出,為了驗證cdkey,microsoft 必須公開橢圓曲線簽名算法中的公開密鑰,那么這個公開密鑰放在哪里呢?答案是在pidgen.dll里的bink資源里(其他產(chǎn)品如office則被包在*.msi),而且一共有兩組,從目前已知的key組合來看,第一組密鑰是用以零售版本的,第二組則用于oem版本。兩個產(chǎn)品的key能否通用就在于對應的密鑰是否相同,比如中文版的windows 2000的pro/srv/advsrv的第二組密鑰也是相同的,即一個pwindows 2000 pro的oem版的key,可同時供 pwindows 2000 srv/adv的oem版使用。

  5.破解及其難度
  要破解cdkey的生成算法,必須從microsoft 公開的密鑰中求出對應的私有密鑰,即只要求出q和k即可。從bink中公開的密鑰來看,p 是一個384 bits的質數(shù),看起來計算量好象至少要o(2^168)才行,但microsoft設計中一個缺陷(?)使實際工作量降低到只有o(2^28)就可以了。
  為什么相差這么遠?
  回頭看看3.c中的式子: sign = r - hash * k ( mod q )
  通常情況下q可以是很大的值,因此sign應該也很大,但microsoft 為了減少用戶輸入的cdkey的數(shù)量,把sign的值限死在55 bits,因此,自然也限定了q最多也不能超過56 bits。依此類推,由于k在一臺賽揚ii 800的機器上只用6個小時就解出某組密鑰的q值,最多時在一臺雷鳥1g上用了28個小時才算出另一組密鑰的k值,其他平均大約都在十個小時左右就可以求出。

先貼上再說,有空在再來研究

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 济源市| 公安县| 衡水市| 新安县| 通州市| 西林县| 扎兰屯市| 建宁县| 南宁市| 甘德县| 铜鼓县| 佳木斯市| 滦平县| 高阳县| 尼木县| 宜黄县| 合水县| 普陀区| 隆昌县| 区。| 岳池县| 舟山市| 自治县| 桦南县| 千阳县| 库车县| 修武县| 永昌县| 洪洞县| 新郑市| 海口市| 高碑店市| 北辰区| 桦甸市| 朝阳区| 凉城县| 唐河县| 邮箱| 华容县| 封开县| 铜鼓县|