暴かれた「Windows」プロダクトキー生成の秘密:724th Lap
Windowsインストール時には、長ったらしい面倒なプロダクトキーの入力が求められる。ある研究者が「Windows 95」のプロダクトキーを解析したところ、ある法則が分かった。
「Windows 11」ではデジタルライセンス認証も可能になったが、Windowsを使い始めるには、正規品であることを証明するために数桁のユニークな英数字「プロダクトキー」の入力が求められる。
ある研究者は興味本位で「Windows 95」のプロダクトキーを解析したところ、ある法則によって生成されていたことが分かった。本質を理解すれば、誰でも簡単にプロダクトキーを生成できてしまうという。その法則とは?
セキュリティ研究者のstacksmashing氏は、Windows OSのプロダクトキー認証を突破できる裏ワザを発見した。同氏はさまざまなデバイスやアプリ、ゲーム機などをハッキングしてはその模様をYouTubeに投稿している。Windowsのプロダクトキーに関する話も動画で取り上げられた話題の一つだ。
ただし、この裏ワザが通用するのは「Windows 95」のインストール時のみだ。Windows 95は1995年8月25日に英語版が、同年11月23日に日本語版が発売され、今のWindowsの礎を築いたOSと言っても過言ではない。
stacksmashing氏が解明したプロダクトキーの生成アルゴリズムについて、詳しく解説しよう。
Windows 95のプロダクトキーは「XXX-YYYYYYY」というように「-(ハイフン)」で接続された10桁(前半3桁と後半7桁)の数字で構成される。同氏は試行錯誤しながらそのプロダクトキーを入力する中で、ある傾向をつかんだ。
まず、「111−1111111」と全て「1」にするとインストールは成功する。また、全て「0」の場合でも成功する。そして前半3桁を「000」「001」「567」と変更し、後半7桁が全て「1」の場合も有効なキーと認識される。ただし「333」「444」「555」といった「0」や「1」「2」以外の3連続の数字を入力した場合は失敗するようだ。
後半7桁は「0000001」だと失敗し、そこから1ずつ数を増やしていったところ「0000007」の場合は成功することが分かった。それを繰り返していくと、後半の数字は「0000000」「0000007」「0000016」「0000025」だと成功することが判明した。同氏は、後半7桁の各数字の合計が「7の倍数」であれば成功するのでは、と推測した。確かに「1111111」も全て合算すれば「7」だ。
stacksmashing氏はリバースエンジニアリングツール「Ghidra」を使って禁断のプログラム解析を敢行した。すると前半3桁は「333」「444」「555」「666」「777」「888」「999」の数字がブラックリスト入りしているだけで、その他の3桁の数字なら何でもいいことが判明した。そして後半7桁については、同氏の予測通り、全ての桁の数字を合計して7で割り切れれば成功することが分かった。しかも、3桁と7桁の間の文字はチェックされておらず、必ずしも「-(ハイフン)」である必要がない。
これらの情報をまとめると「前半3桁は3〜9の3並び以外なら何でもいい」「前半と後半をつなぐ文字はどれでもいい」「後半7桁は合計したとき『7』で割り切れればいい」と単純なものだったのだ。
ちなみに、このアルゴリズムはWindows 95リテール版で通用するものであり、OEM版はまた異なる。OEM版の場合、プロダクトキーは「AAABB-OEM-XXXXXXX-YYYYY」という形式(「A」「B」「X」「Y」はそれぞれ整数、「OEM」は固定の文字列)で構成されているが、これも単純なアルゴリズムだ。
stacksmashing氏の解析をまとめると「AAA」は「1〜366」で、「BB」は「00〜02」または「95〜99」、「XXXXXXX」は先頭が「0」で、かつ合算して7で割り切れる7桁の数字、そして「YYYYY」はノーチェック、つまり「何でもいい5桁の数字」だ。何とも単純な仕様だ。
これで誰でもプロダクトキーが生成できるのだが、言うまでもなくこの手法によってWindows 95を有効にするのは違法行為だ。もっとも、今さらWindows 95のライセンスキーをどうこうしようという人はそう多くはないと思われるが……。
上司X: Windowsのセットアップに利用するプロダクトキーの生成アルゴリズムが判明した、ただしWindows 95に限るけどね、という話だよ。
ブラックピット: Windows 95のプロダクトキーですか。Windows 95って初めて「Internet Explorer」(IE)が搭載されたWindowsでしたっけ?
上司X: そんなことを言うと、インターネット黎明(れいめい)期を知る人から叱られるぞ。Windows 95ではIEは別売り。「Microsoft Plus!」を買う必要があったんだよ。
ブラックピット: それはそれは。まあ、今になってWindows 95のプロダクトキーの仕組みを知ったとて……。
上司X: だからいいんじゃないか。「めんどくせーな」と思いながら入力していたプロダクトキーがこんな単純な仕様だったなんて。
ブラックピット: Windows 95のインストール体験自体がもはやレアなような……。ともかく、こんな単純なキーで認証していたとは、確かに意外っちゃ意外ですね。もしかしたら、当時から気付いていた人もいるんじゃないですか?
上司X: いたかもしれないね。ちなみに、「Windows XP」についてもプロダクトキーを生成するツールが公開されているけど、これについてはstacksmashing氏の解析に比べるといろいろとグレーなところが多いのでいったんスルーしておく。
ブラックピット: ああ、Windows XPならプロダクトキーを欲しがる人がワンチャンいるかもしれませんね。それでも多くはないでしょうが。
上司X: なんだよ、ワンチャンて(笑)。まあ、Windows XPの話はいったん置いておくとしてだ、Windows 95のプロダクトキーのアルゴリズムの単純さを耳にすれば、必ずしもインターネット初期を知る人でなくても「へー、面白い」と思うだろう。決して長いとは言えないITの歴史だけど、こういう話題が出てくると楽しいものだよ。
ブラックピット(本名非公開)
年齢:36歳(独身)
所属:某企業SE(入社6年目)
昔レーサーに憧れ、夢見ていたが断念した経歴を持つ(中学生の時にゲームセンターのレーシングゲームで全国1位を取り、なんとなく自分ならイケる気がしてしまった)。愛車は黒のスカイライン。憧れはGTR。車とF1観戦が趣味。笑いはもっぱらシュールなネタが好き。
上司X(本名なぜか非公開)
年齢:46歳
所属:某企業システム部長(かなりのITベテラン)
中学生のときに秋葉原のBit-INN(ビットイン)で見たTK-80に魅せられITの世界に入る。以来ITひと筋。もともと車が趣味だったが、ブラックピットの影響で、つい最近F1にはまる。愛車はGTR(でも中古らしい)。人懐っこく、面倒見が良い性格。
Copyright © ITmedia, Inc. All Rights Reserved.