Howdy all, So, one night over beers I was telling a friend how you could use the timing between key presses on a type writer to extract information. Basically, you make some assumptions about the person typing (touch typing at so many words per second and then fuzzing the parameters until words come out). The I found a paper written back in 2001 talked about using the interpacket timing in interactive sessions to leak information. https://people.eecs.berkeley.edu/~dawnsong/papers/ssh-timing.pdf I'm sure this has been addressed (or dismissed) but I'm looking for the specific section of code that might deal with this. Any pointers? Thanks, Chris
On Thu, Aug 3, 2023 at 2:35?PM Chris Rapier <rapier at psc.edu> wrote:> > Howdy all, > > So, one night over beers I was telling a friend how you could use the > timing between key presses on a type writer to extract information. > Basically, you make some assumptions about the person typing (touch > typing at so many words per second and then fuzzing the parameters until > words come out). > > The I found a paper written back in 2001 talked about using the > interpacket timing in interactive sessions to leak information. > https://people.eecs.berkeley.edu/~dawnsong/papers/ssh-timing.pdf > > I'm sure this has been addressed (or dismissed) but I'm looking for the > specific section of code that might deal with this. Any pointers? > > Thanks, > > ChrisWhy would any code "deal with this"? What you're describing is a form of steganography, embedding another subtler, more dangerous message inside the larger, safer, apparent message. Because there are so many ways to hide such data, it's not even theoretically possible to avoid altogether. OpenSSH would be the wrong layer of the stack to manipulate this, especially given the attempts to improve interactive behavior by improving responsiveness and reducing latency. If you're making a system as swift and responsive as possible, it becomes very difficult to regulate the timing of what may be human driven interactions. And if you're going to manipulate packet delays..... that's at the network layer or data layer, layer 2 or layer 3 of the OSI stack. OpenSSH is more at the transport layer. I don't see how OpenSSH could be written to avoid this.without sacrificing responsive of interactive sessions.
On Thu, 3 Aug 2023, Chris Rapier wrote:> Howdy all, > > So, one night over beers I was telling a friend how you could use the timing > between key presses on a type writer to extract information. Basically, you > make some assumptions about the person typing (touch typing at so many words > per second and then fuzzing the parameters until words come out). > > The I found a paper written back in 2001 talked about using the interpacket > timing in interactive sessions to leak information. > https://people.eecs.berkeley.edu/~dawnsong/papers/ssh-timing.pdf > > I'm sure this has been addressed (or dismissed) but I'm looking for the > specific section of code that might deal with this. Any pointers?The main issue raised in that paper was that it was trivially detectable when terminal echo was switched off and so an attacker could specifically observe the moments when users were typing their passwords into (say) sudo. This got fixed around the time the paper was released IIRC, search for "Simulate echo" in channels.c:channel_handle_wfd(). The broader issue of hiding all potential keystroke timing is not yet fixed. -d