I would like to mention that the option to invert touchpad scroll direction (natural scrolling) does not work when kloak is running. If this is something that can be worked around that would be nice in my opinion.
This must be reported upstream.
Kloak for Qubes again unfortunately seems stalled.
A test page that I don’t know anything about it other than it was added to the wiki a while ago by unknown.
Since kloak is unfortunately dead upstream, it needs to be forked and maintained independently by Whonix.
Thanks to @arraybolt3!
Merged.
- Add support for new devices attached after kloak starts by skyzzuu · Pull Request #67 · vmonaco/kloak · GitHub
- Fix/#12 fix keyboard layout reset by OmarMesqq · Pull Request #73 · vmonaco/kloak · GitHub
- notified, closed upstream tickets and pull requests that I previously opened, which are now fixed in our fork
- enable qvm-service `gui-agent-virtual-input-device` for Whonix-Workstation App Qubes by default · Issue #8534 · QubesOS/qubes-issues · GitHub
mouse click obfuscation · Issue #51 · vmonaco/kloak · GitHub is functional as independently confirmed by two contributors.
TypingDNA’s privacy policy is rather alarming IMO. I don’t think it’s necessarily something Whonix users should be using for testing purposes.
GitHub’s typing biometrics projects looked promising, but sadly there were only two that looked like they would be reasonably easy to get up-and-running. One of them turned out to be written in Python 2 and relied on a Python module that seemingly doesn’t exist anywhere anymore (perhaps the user accidentally failed to include some of the code they wrote). The other one wanted Python 3.7.2, trying to get it running on Python 3.12 was futile, and when trying to install Python 3.7.2 with pyenv, somehow Python 3.7.2’s code managed to get some part of the Python build process to segfault mid-build. So… yeah.
That leaves us with vmonaco’s test. While I was able to verify that it had an easy time picking out a device “frequency” without kloak, and a harder time picking one out with kloak, it still appears to have been designed for device fingerprinting, not user fingerprinting, which is a bit different. I also noticed that it required quite a lot of text input to get a good “read” on my behavior, and even then it seemed to be unsure and would sometimes change its mind if I typed for long enough. This makes me wonder whether it’s actually all that useful or not. Still, it seems to be the best one that exists.
For users who are interested in trying out kloak within Whonix Workstation VMs on Qubes OS, you can now do so with a bit of manual effort. Work is underway to eventually make this unnecessary, but in the mean time here’s how you can enable it:
- Launch a terminal in the
whonix-workstation-17
template. - In
whonix-workstation-17
, runsudo apt install xserver-xorg-input-evdev
. This is the X.Org evdev driver, which is necessary for the keyboard input method kloak requires. - In
whonix-workstation-17
, runsudo apt install kloak
. - In
dom0
, runqvm-service whonix-workstation-17-dvm gui-agent-virtual-input-device on
to enable the evdev-based input method. - Shut down
whonix-workstation-17
and wait for it to fully shut down. - Launch a DispVM from
whonix-workstation-17-dvm
. - Open XFCE Terminal in the new DispVM.
- Ensure you can type.
- Run
sudo systemctl stop kloak && sudo /usr/sbin/kloak -d250 &
and ensure kloak starts properly. - Type a bit in the terminal, you should notice significant lag and randomized timing as what you type appears on the screen.
- Press Ctrl+C to terminate kloak, then run
sudo systemctl start kloak
to start kloak with default settings again. - See Keystroke Deanonymization - Whonix if you want to set persistent settings that customize kloak’s behavior (like setting a longer input delay to allow better randomization of keystrokes and mouse movements).
In the event you accidentally lock yourself out of your Whonix Workstation VM while doing this, simply open a dom0
terminal and run qvm-service whonix-workstation-17-dvm gui-agent-virtual-input-device off
, then shut down all Whonix Workstation VMs and start them up again. This will go back to the original input method.
Potentially related issue:
Isnt this an x11 method which doesnt work with pure wayland environment? i think using libraries like libinput
or so better no?
This is the old, outdated, given up on approach.
Old approach:
- The old approach for Qubes support was to make kloak work in Qubes.
- Given up on.
New approach:
- Not using evdev in Qubes.
- Not using kloak in Qubes.
- Based on @DemiMarie advice in QubesOS/qubes-issues#8541:
- The new approach is Add X event buffering for cloaking user input patterns by ArrayBolt3 · Pull Request #149 · QubesOS/qubes-gui-daemon · GitHub which adds kloak-like functionality (not kloak) directly to Qubes GUI daemon.
- Little of that pull request will work in pure Wayland.
- This is because Qubes GUI agent needs to be rewritten for Wayland support
- All of this needs to be re-invented for Wayland.
- As long as Qubes GUI agent isn’t Wayland compatible, there is no way to have kloak-like functionality compatible with Waylnd in Qubes.