System eindeutig identifizieren

Da die Frage nicht in den Java-Bereich passt, und nur mit Java auch sicher nicht lösbar sein wird, mal hier rein gepostet:

Der Titel sagt es eigentlich schon: Wie identifiziere ich ein bestimmtes Hardware-System eindeutig unabhängig von der darauf installierten Software?
Mir ist durchaus bewusst dass diese Frage sehr breit gefächert ist, aber es wird doch sicher gewisse low-level-Informationen geben die immer den gleichen Wert enthalten - egal ob ich unter Unix als non-root (wird sich für die meisten Infos nötig sein) oder unter Windows als Gast danach frage. Ich gehe bewusst so weit runter da ich hoffe möglichst viele Daten mit den geringsten Rechten zu erhalten. MAC-Adresse des/der NIC/s ist leider nicht praktikabel, zumindest nicht unter Windows, denn dort ist es relativ einfach via Software einen Wert zu ändern der eigentlich in Hardware read-only sein sollte (ist eh so n design-flaw). Sehr viel interessanter finde ich da schon eindeutige Hardware-IDs, aber hier hat man teils wieder Treiber-Probleme. Von Embedded-Systemen wie RasPi mal ganz zu schweigen.

Hintergrund der Frage: Um gewisse Rechte durchzusetzen (im Sinne von Berechtigungsverwaltung) würde ich gerne die Maschine an sich als Token nutzen statt User-spezifische Daten.

Ist sowas überhaupt möglich? Klar, TPM und UEFI gehen ja in diese Richtung, und BitLocker kann sowas auch (also eher: Hat sich die "Umgebung der Festplatte seit dem letzten Mal geändert?).

Bin mal gespannt …

eher nicht -> vertraue keinem Bit was Du nicht selbst gefälscht hast (Du kannst quasi keiner Information trauen die du ausliest)

unter Linux würde ich jetzt so was wie lspci -v | md5sum versuchen - ist aber auch nur ein Schätzen