All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Machek <pavel@ucw.cz>
To: bancfc@openmailbox.org
Cc: linux-kernel@vger.kernel.org
Subject: Re: Proposal for Anti-Keystroke Fingerprinting at the Input Driver Level
Date: Sat, 23 Apr 2016 21:49:12 +0200	[thread overview]
Message-ID: <20160423194912.GC15755@amd> (raw)
In-Reply-To: <d14e5a667f8607bdbce89093e7216a91@openmailbox.org>

On Wed 2016-03-23 23:40:49, bancfc@openmailbox.org wrote:
> == Attack Description ==
> 
> Keystroke fingerprinting works by measuring how long keys are pressed and
> the time between presses. Its very high accuracy poses a serious threat to
> anonymous users.[1]
> 
> This tracking technology has been deployed by major advertisers (Google,
> Facebook), banks and massive online courses. Its also happening at a massive
> scale because just using a JS application (or SSH in interactive mode) in
> presence of a network adversary that records all traffic allows them to
> construct biometric models for virtually everyone (think Google suggestions)
> even if the website does not record these biometric stats itself.[2] They
> have this data from everyone's clearnet browsing and by comparing this to
> data exiting the Tor network they will unmask users.
> 
> 
> == Current Measures and Threat Model ==
> 
> While the Tor Browser team is aware of the problem and working on a
> solution, current measures [6] are not enough. [4][5]
> 
> It's very useful to have it fixed on the OS level so even compromised VMs
> could not perform keystroke fingerprinting. Another reason is, that other
> applications (chat clients come to mind) and others that implement
> javascript one or another way, may be leaking this also. So having this
> fixed in Tor Browser is nice but non-ideal.
> 
> This is valid for systems running in VMs or on bare metal such as the TAILS
> Anonymous distro.
> 
> 
> == Existing Work on Countermeasures ==
> 
> As a countermeasure security researcher Paul Moore created a prototype
> Chrome plugin known as KeyboardPrivacy. It works by caching keystrokes and
> introducing a random delay before passing them on to a webpage.[3]
> Unfortunately there is no source code available for the add-on and the
> planned Firefox version has not surfaced so far. There are hints that the
> author wants to create a closed hardware USB device that implements this
> which does not help our cause.
> 
> GenodeOS a security centric microkernel OS has already implemented a
> solution: https://github.com/genodelabs/genode-world/issues/12
> 
> QubesOS a security centric OS based on Xen will add a fix to deal with it.
> 
> A widely deployed Linux version only makes sense and would have the greatest
> impact for security of most free/open systems out there.
> 
> 
> == Proposal for a System-wide Solution ==
> 
> A very much needed project would be to write a program that mimics the
> functionality of the this add-on but on the kernel level. Implementing it in
> the kernel ensures absolutely everything consuming input events on a
> workstation is protected.

/proc/interrupts is world-readable on my machine. That's where you'd
need to start.

Now, introducing random delays into input... I'm not sure I'd like
that... how long delays would you need?

OTOH: currently applications can easily get both keyboard presses and
keyboard releases. We could probably randomly delay releases by a
small ammounts without any ill effects. Would that help?

Oh and you probably want to cc: input mailing lists for such stuff.
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

      reply	other threads:[~2016-04-23 19:49 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-23 22:40 Proposal for Anti-Keystroke Fingerprinting at the Input Driver Level bancfc
2016-04-23 19:49 ` Pavel Machek [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160423194912.GC15755@amd \
    --to=pavel@ucw.cz \
    --cc=bancfc@openmailbox.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.