I distribute a client application where I would like to identify a user's hardware specifications when they begin interacting with my server. I am specifically interested in identifying the user's GPU make and model, but I would appreciate hearing techniques applicable to other facets of the hardware such as CPU or RAM.
Users are aware that I seek to collect this information and have consented to its collection. Currently, the client is self-reporting what their hardware specifications are to my server. Most of my users are honest, but we can consider some of them as attackers seeking to lie about their hardware specifications.
My first thought is that I could issue a challenge to the client from the server that requires them to use their GPU in a manner such that I could benchmark it based on the response time, similarly to how GPU mining works. My concern with this approach is that I might not be able to achieve enough granularity to distinguish between GPUs with similar performance.
I know that the attacker in this case has physical hardware access and as such I am in fact hosed as far as perfect identification is concerned. As an example for the intents of this question, if the attacker has the capacity to solve my challenge such that I believe they are using an NVIDIA 2080 Ti when they are in fact using some specialized hardware of equivalent strength, then that is acceptable.
Any tools, techniques, or existing software options that could help me achieve this would be much appreciated. Thank you!