openssh and keystroke timing attacks (again)

Andrew Clausen clausen at econ.upenn.edu
Tue Dec 28 09:53:51 EST 2010


Hi Damien,

On 27 December 2010 17:06, Damien Miller <djm at mindrot.org> wrote:
> I'd like to have better keystroke timing countermeasures in OpenSSH, but
> they are just too intrusive under the current mainloop design. I'd like
> to renovate the mainloop some time and this would make implementing things
> like this quite a bit more easy.

Yes, I agree that the client_loop() could do with some renovation.
What did you have in mind?

For what it's worth, I actually implemented most of my proposal before
finding Jason's patch from 10 years ago.  I only implemented the idea
of only checking for input at regular intervals... there are no dummy
messages, but that is trivial to add.  I attached my patch (against
the source I lazily acquired via Ubuntu's 10.10 apt-get source
command).

The main structural ingredient in the patch is a wrapper to select(2).
This allows the caller to specify a list of timing events to be woken
up on, in addition to file activity events.  This makes it easier to
"multiplex" multiple timing events such as tcp_keep_alive and
keystroke countermeasures along with the I/O events.  The wrapper's
prototype and commentary follow:

/* This wrapper to select(2) allows the user to supply a list of sleep times
 * to be woken up on.  The process is woken up either after activity on the
 * fds, or when the soonest sleep time arrives.  In the latter case, the
 * index of the relevant sleep event is recorded in *active_time.
 */
static int
select_times(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
       int ntimes, struct timeval **times, int *active_time)

I still think client_loop() and client_wait_until_can_do_something()
are still a bit too complicated though.

Cheers,
Andrew
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hideinputtiming.diff
Type: text/x-patch
Size: 8182 bytes
Desc: not available
URL: <http://lists.mindrot.org/pipermail/openssh-unix-dev/attachments/20101227/3757cc73/attachment-0001.bin>


More information about the openssh-unix-dev mailing list