このページの本文へ

前へ 1 2 3 4 5 6 7 8 9 10 11 11 次へ

噂のWindows XP最新情報 ~ Microsoft社のWindows Product Activationの内容(下)

2001年07月20日 09時53分更新

文● フーリー・ライセンスト社/著、吉川邦夫/訳

  • この記事をはてなブックマークに追加
  • 本文印刷

プロダクトIDは、次に示すような、5つのグループからなる10進数である。

AAAAA-BBB-CCCCCCC-DDEEE

あなたのレジストリで'ProductID'という名前の値をサーチすると、あなたのインストレーションに対応するIDが見つかるはずだ。このプロダクトIDは、Internet Explorerの'About'ウィンドウでも、表示されるだろう。

デコーディング

10進数表記によるプロダクトIDと、そのダブルワードP1、P2およびバイトP3によるバイナリエンコーディングとのマッピングを、要約して以下の表に示す。

ディジット ビット長 エンコーディング
AAAAA 17ビット P1のbit0からbit16まで
BBB 10ビット P1のbit17からbit26まで
CCCCCCC 28ビット P1のbit27からbit31まで(下位5ビット)
P2のbit0からbit22まで(上位23ビット)
DDEEE 17ビット P2のbit23からbit31まで(下位9ビット)
P3のbit0からbit7まで(上位8ビット)

5つのグループの、それぞれのディジットの意味を、次の表に示す。

ディジット 意味
AAAAA 明らかに、いつでも55034(WindowsXPRC1において)
BBB 生のプロダクトキーの最上位3桁(後述)
CCCCCCC 生のプロダクトキーの下位6桁にチェックディジットを足したもの(後述)
DD プロダクトキーの照合に使われる公開鍵のインデックス(後述)
EEE ランダムな値

プロダクトIDを生成するのに、(生の)プロダクトキーが重要な役割を果たしていることがわかる。

プロダクトキー

生のプロダクトキー(Raw Product Key)は、配布されるWindows XPのCDのそれぞれに添付されるステッカーに印刷されているプロダクトキー(Product Key)の中に埋め込まれている。プロダクトキーは、次に示すように、'-'文字で区切られた5つの英数字文字列で構成され、それぞれの文字列は5文字からなる。

FFFFF-GGGGG-HHHHH-JJJJJ-KKKKK

使用される文字は、以下に示す24種類の英数字のどれかである。

B C D F G H J K M P Q R T V W X Y 2 3 4 6 7 8 9

これはインストレーションIDの10進エンコーディングと酷似しており、25文字のプロダクトキーは、バイナリ表現のプロダクトキーをBase-24エンコードしたものである。このプロダクトキーをデコードすると、およそ115ビットの多倍精度整数が得られ、それは(ここでもリトルエンディアンのバイト並びで)15バイトの配列に格納される。上記のプロダクトキーをデコードすると、以下に示すバイトシーケンスが得られる。

0x6F 0xFA 0x95 0x45 0xFC 0x75 0xB5 0x52
0xBB 0xEF 0xB1 0x17 0xDA 0xCD 0x00

これら15バイトのうち、最下位の4バイトは、リトルエンディアンのバイト並びで生のプロダクトキーを含んでいる。そのうち最下位ビットは、この32ビットの値(リトルエンディアンなので、0x4595FA6F)を1ビット左シフトすることによって取り除かれ、生のプロダクトキー、0x22CAFD37が得られる。10進数で表すならば、

583728439

である。

残りの11バイトはディジタル署名を成していて、固定公開鍵によるプロダクトキーの認証を可能とする。

プロダクトキー → プロダクトID

生のプロダクトキーを9桁の10進数で表すこの表記のうち、最上位の3桁(すなわち583)は、上述したプロダクトIDのBBBの部分に直接マップされる。

CCCCCCCの部分を得るには、残りの6桁(728439)にチェックディジットを追加する。このチェックディジットには、すべての桁(チェックディジットを含む)の合計が7で割り切れるような数値が選ばれる。上の例でいえば、6桁のディジットの合計は

7 + 2 + 8 + 4 + 3 + 9     = 33

であり、チェックディジットは2が選ばれる。なぜなら、

7 + 2 + 8 + 4 + 3 + 9 + 2 = 33 + 2 = 35

であり、35なら7で割り切れるからだ。プロダクトIDのCCCCCCCの部分は、したがって、7284392である。

プロダクトキーの認証には、複数の公開鍵を利用できる。もし最初の鍵による照合が失敗したら、2番目(以降)の鍵で試行される。プロダクトIDのDDの部分は、プロダクトキーの認証で、このシーケンスのうち、どの公開鍵で成功するのかを指定する。

この機構は、複数の会社が、それぞれ異なる秘密鍵(private key)を使って有効なプロダクトキーを生成できるように、サポートされているのかもしれない。

けれども、秘密鍵が異なるということは、ある製品(プロダクト)の別バージョンを意味するのかもしれない。とすれば、「プロフェッショナル」リリースのプロダクトキーは、「サーバ」リリースのプロダクトキーとは別の鍵で署名されよう。その場合、DDの部分は製品バージョンを示すことになる。

そして最後に、我々の例としてあげたプロダク トキーから生成される、有効なプロダクトキーは、たとえば次のようになる。

55034-583-7284392-00123

これは、最初の公開鍵(DD=インデックス=0)で照合され、ランダムな数EEEには123が選ばれたことを示す。

msoobe.exeが、呼び出されるたびに別々のインストレーションIDを提示するのは、このランダムに選ばれるEEEの部分が原因である。選ばれた暗号化の方式によって、この小さな変化が、結果的にはまったく異なったインストレーションIDを作り出す。

このため、アクティベーションの間に送信されるプロダクトIDと、Internet Explorerに表示され、レジストリに格納されている、あなたのプロダクトIDとでは、必ずといっていいほど、これら最後の3桁が異なっているはずだ。

前へ 1 2 3 4 5 6 7 8 9 10 11 11 次へ

カテゴリートップへ

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン