Windows Autopilotのハッシュ値について

皆さんこんにちは。国井です。
先日Twitterを脊髄反射でこんなことを書いたら、ちょっとした反響をいただきました。

image

ちょっと誤解を招くような表現があったので、
反省も込みでWindows Autopilotで使われるハッシュ値について調べたことを書き残しておこうと思います。

【基礎】Windows Autopilotハッシュ値とは

Windows Autopilotでデバイスのセットアップを行う場合、
最初に行う作業としてAutopilotにデバイスの情報を登録します。
デバイスの情報はGet-AutopilotInfo.ps1を実行するなどして取得することができます。
取得した情報はCSV形式のファイルになっており、ファイルを開くとこんな感じの内容になっています。

image

ファイルは3つの列から構成され、

・Device Serial Number
・Windows Product ID
・Hardware Hash

の3つで、このうちのHardware Hashが私がTwitterで言及したところです。

Hardware Hashとは

Hardware Hashとはデバイスのハードウェア由来のデータで、4000bytesあることから4K Hashと呼ばれることもあります。(実はAutopilotの初期は4K Hashではなく、ある頃から現在のフォーマットになった経緯があります)
ハードウェア由来のデータであるがゆえにハードウェアが変わらなければハッシュ値が変わらないものと思われていました。ところがOSを再インストールしてみたところ、ハッシュ値が変わってしまったのです。なんでハッシュ値が変わってしまったのか?を探るべく、oa3tool.exeというツールを使って解析してみることにしました。

Hardware Hashを分解する

CSVファイルからHardware Hash部分の値を取り出して以下のように実行します。

oa3tool.exe /DecodeHwHash=<hardware hash>

image

実行結果はこちら。

image

このような属性群からHardware Hashは構成されていることがわかります。
これらの属性が一部でも変わるとハッシュ値は変化します。

では私がOSの再インストールをした後に生成されたHardware Hashを分解してみましょう。

image

字が小さくてわかりにくいのですが、
OSバージョンが違うから、違うハッシュが生成されるのか!

image

image

Hardware Hashが変わったら別のハードウェアと認識されるのか?

みんなが一番知りたいところはここですよね!
ここは検証してみたところ、Hardware Hashが異なる、どちらのCSVファイルも同じく利用することができました。

さらに同じデバイスから生成されたAとBの2つのCSVファイルに対して、XとYのIntuneテナントを持っているときに
AのCSVファイルをXのテナントに登録すると、
BのCSVファイルをYのテナントに登録して利用することはできませんでした。

なので、AutopilotのCSVファイルは一度登録したら明示的に削除しない限り、他のテナントで登録できなくなるのでご注意を。