9

Windows 8 Metro アプリで一意のデバイス識別子を使用したいと考えており、ここに記載されている ASHWID が推奨されます。

http://msdn.microsoft.com/en-us/library/windows/apps/jj553431.aspx

これが一意であることを保証する方法を確認するのに苦労しています。この形式には、ハードウェア コンポーネントごとに 2 バイトが含まれます。そのうち最も一意に識別できるのは、MAC アドレスとハード ディスクのシリアル番号です。しかし、これらの値に 2 バイトだけでは十分ではないようです。

使用されているバイトが最下位桁 (人間が読み取るための右端) 以外である場合、生産ラインで隣接する 2 台の同一のラップトップはおそらく同じ ASHWID を持つことになります。MAC とドライブ シリアルは隣接している可能性があります。

したがって、私の質問の要点は、重複する可能性が高くなる前に、同じ CPU タイプとメモリ構成でいくつのデバイスを製造する必要があるかということです。誕生日のパラドックスと同じ種類の問題のように思えるので、そのための電卓を見つけて数字を入力しました :)

1 つの MAC アドレスと、それぞれ 2 バイトの識別子を持つ 1 つのハードディスクを使用すると、約 40 億の順列があります。それらを 6,000 個だけ割り当てた場合、同じものが 2 個あるのはおよそ 50/50 です。

( http://jeff.aaron.ca/cgi-bin/birthdayに移動し、実際の計算のために「6563」と「4294967296」を挿入します)。

したがって、これは実際には非常にユニークではないようです。この識別子に非常に懐疑的であるというのは正しいのでしょうか、それとも本当に重要なものを見落としているのでしょうか?

4

2 に答える 2

4

いいえ、ASHWID がデバイスを一意に識別することは保証されていません。職場では、月に 1 回が許容範囲である衝突を毎日何十回も見てきました。

さらに、ASHWID は同じデバイスに対して頻繁に変更される可能性があります。Windows 8 は、ドッキング ステーション、USB サム ドライブ、またはプラグイン Bluetooth アダプターを追加するラップトップで実行されることが多いためです。ASHWID の最適な使用法は、ユーザーが限られた数のデバイスにのみアプリをインストールしたことを確認することです。これは、ASHWID を解析し、そのユーザーから以前に確認された ASHWID と選択的に比較することによって行います。

一意のハードウェア識別子については、複数のコンポーネントを含む文字列の MD5 ダイジェストをお勧めします。そのうちの ASHWID の一部のコンポーネントが役割を果たす可能性があります。

多数 (64 ビット以上) をランダムに生成し、それを (レジストリなどに) 格納する場合があります。もちろん、ハッシュに何か他のものを含めたい場合は、ユーザーのログイン名/IDはそのユーザーに固有のものでなければなりません。また、ユーザーが OS インストールのクローンを作成したり、ドライブの障害後に HD を交換したりした場合に、何をしたいのかを考慮する必要があります。

Windows デスクトップの世界では、MachineGuid レジストリ キーとブート デバイスのシリアル番号を使用していましたが、Windows ストア アプリでその情報にアクセスするのに苦労しています。アクセスできる場合、MachineGuid は にHKLM\SOFTWARE\Microsoft\Cryptographyあり、MS が一意であることを保証します。起動デバイスのシリアル番号は::GetVolumeInformationW(::SHGetFolderPathW(~),~)かなり一意ですが、32 ビットのみです。

于 2014-02-10T19:56:28.937 に答える
1

記事から:

ASHWIDは、いくつかの個別のハードウェア特性を表すことにより、アプリ/パッケージとデバイス間の強力なバインディングを提供します。ユーザーのプライバシーを保護するために、ASHWIDはアプリごとに異なります。基盤となるハードウェアが変更されていない限り、同じアプリから2回呼び出すと、同じASHWIDになります。ただし、ユーザーがUSB Bluetoothアダプターを取り外した場合など、デバイスのハードウェアプロファイルが変更されると、ASHWIDは変更されます。バックエンドクラウドサービスは、ASHWIDを検証し、以前に報告された値と比較できます。ASHWIDは変化しますが、その変化が単にシステムへのメモリの追加などの小さな変更によるものかどうかを検出するために解析できます。変動に対する許容度は、バックエンドクラウドサービスの実装次第です。

ASHWIDは、次の9つのコンポーネントで構成されています。

  1. プロセッサのCPUID
  2. メモリのサイズ
  3. ディスクデバイスのシリアル番号
  4. ネットワークアダプタ(NIC MACアドレス-最初のインスタンス)
  5. オーディオアダプター
  6. ドッキングステーション
  7. Bluetoothアドレス
  8. モバイルブロードバンドデバイスID
  9. BIOS

CPU IDはプロセッサモデルにのみ固有ですが、NICMACアドレスは非常に固有である必要があります。そうは言っても、MACアドレスのクローンを作成したり、USBNICをデバイス間で移動したりすることができます。したがって、2つのデバイスが同じASHWIDを持つ可能性はあると思いますが、それはほとんどありません。このIDを使用する上で最も難しいのは、ハードウェアが変更される可能性があるという事実です。ASHWIDのどの部分を変更できるか、どの部分を変更できないかを決定するのはサービス次第です(許容可能な差異)。記事自体はそれに関するガイダンスを提供します。

于 2012-10-09T20:48:13.087 に答える