ユーザーがサーバーとの対話を開始したときにユーザーのハードウェア仕様を特定したいクライアントアプリケーションを配布しています。ユーザーのGPUの製造元とモデルを特定することに特に関心がありますが、CPUやRAMなどのハードウェアの他の面に適用できる聴覚技術に感謝します。
ユーザーは、私がこの情報を収集しようとしていることを認識しており、その収集に同意しました。現在、クライアントは自分のサーバーに対するハードウェア仕様を自己報告しています。私のユーザーのほとんどは正直ですが、一部のユーザーはハードウェアの仕様について嘘をついている攻撃者と見なすことができます。
私の最初の考えは、GPUマイニングのしくみと同様に、応答時間に基づいてベンチマークできるような方法でGPUを使用する必要があるサーバーからクライアントにチャレンジを発行できるということです。このアプローチに関する私の懸念は、同様のパフォーマンスを持つGPUを区別するのに十分な粒度を達成できない可能性があることです。
この場合、攻撃者は物理的なハードウェアにアクセスできることを知っています。そのため、完全な識別に関しては、私は実際にはうんざりしています。この質問の意図の例として、攻撃者が私の課題を解決する能力を持ち、実際に同等の強度の特殊なハードウェアを使用しているときにNVIDIA 2080 Tiを使用していると私が信じる場合、それは許容されます。
これを達成するのに役立つ可能性のあるツール、テクニック、または既存のソフトウェアオプションは、高く評価されます。ありがとうございました!
問題を考えすぎている可能性があります。
クライアントをクライアントに配布する場合、OSを直接クエリするだけで済みます。最善のルートは、ユーザーに仕様を尋ね、黙って問い合わせることです。彼らがあなたがそれを収集していることを知らない場合、彼らはデータを作成するための(かなり相当な)努力をすることはほとんどありません。
Windowsでは、WMIを介してWin32_VideoControllerクラスをクエリして、ハードウェアを識別できます。例えば。、
wmic PATH Win32_VideoController GET *
収集するデータの量を最小限にしたい場合は、*の代わりにName、PnPDeviceID、またはDeviceIDを指定できます。
これはコマンドラインユーティリティですが、アプリケーション用に WMIが公開されています です。直接クエリする場合は、ネイティブユーティリティに依存する必要はありません。
このデータはデフォルトでローカルで実行されるアプリケーションで読み取ることができ、WMIアクセス許可は、通常のアプリケーションやサードパーティの管理ツールで広く使用されているため、めったに強化されません。