In the book “Practical Linux Forensics, A Guide for Digital Investigators” by Bruce Nikkel (Chapter 7, Page 204) it states that Machine ID is created during system installation and can be used for identifying duplicated systems or tracking installation timestamps.
Does the current Whonix “shared machine-ID” approach really valid for anonymity or is it actually increase the fingerprinting that the system is Whonix and user is using Whonix?
Maybe it could be used to flag Whonix in targeted investigations or fingerprinting?
Tails has a file (config/chroot_local-hooks/99-zzzzzz_reproducible-builds-post-processing) that randomizes the machine-id each boot by emptying /etc/machine-id. This is a technique that works by leveraging systemd’s automatic regeneration, and it appears is largely independent of Tails RAM based system.
I see both arguments for random and shared ID’s and it reminds me of how Tor Browser users share the same fingerprint. There does however exist an argument that a unique and random fingerprint everytime might be beneficial to mitigating fingerprinting. In fact I believe Brave browser, despite their flaws, does this right in this regard. Mind you this is browser fingerprinting not device fingerprinting.
As @jonathanvlan mentioned in the “Anonymize /etc/machine-id” thread about /proc/sys/kernel/random/boot_id
I’m wondering if other Identifiers should either be syslinked to /dev/null
or sandboxed to prevent access like /sys/devices/virtual/dmi/id/*
for example?
^Note: AI did help with some of this info in this table, but I generally think it is correct when it comes to these locations and what role they serve
| File Path | Role in Identification | Associated Risks |
|--------------------------|-----------------------------------------------------------------------|----------------------------------------------------|
| /sys/class/net/*/address | Provides MAC addresses for network device tracking | Facilitates persistent network-based fingerprinting (real MAC address file) |
| /proc/cpuinfo | Details CPU model, speed, and features | Combines with other data for hardware-specific identification |
| /proc/meminfo | Reveals memory size, type, and usage | Aids in creating unique system memory profiles |
| /etc/machine-id | Stores a unique system identifier | Enables session correlation and long-term tracking (cloned systems and installation) |
| /sys/devices/* (e.g., USB or PCI details) | Exposes device-specific hardware information | Aggregates data for comprehensive device fingerprinting |
| /proc/sys/kernel/random/boot_id | Generates a unique ID per boot for session tracking by primarly used as a seed for RNG | Risks session linkage and uptime pattern exposure |
I can see certain hardening or sandboxing of these files could cause issues and conflicts with debugging or maybe making crypto weaker (/proc/cpuinfo and /proc/sys/kernel/random/boot_id).
You can’t hide the CPU info either in a browser fingerprinting sense.
Is there a way for applying a wildcard for all .appimage’s to prevent access to these things?
I’m pretty sure you can create a global flatpak apparmor file that prevents all software installed via flatpak from having access to these (there also is bubblewrap and flatseal).
What are your thoughts on this and what is already mitigated in whonix already?