Why 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.
>The keystroke timing issue would be solved by adding LINEMODE support as I did back in 2010.
>https://lists.mindrot.org/pipermail/openssh-unix-dev/2010-June/028732.html
Local line editing by using GNU libreadline? *shudder* No, thanks.
bye,
//mirabilos
--
Infrastrukturexperte • tarent solutions GmbH
Am Dickobskreuz 10, D-53121 Bonn • http://www.tarent.de/
Telephon +49 228 54881-393 • Fax: +49 228 54881-235
HRB AG Bonn 5168 • USt-ID (VAT): DE122264941
Geschäftsführer: Dr. Stefan Barth, Kai Ebenrett, Boris Esser, Alexander Steeg
****************************************************
/⁀\ The UTF-8 Ribbon
╲ ╱ Campaign against Mit dem tarent-Newsletter nichts mehr verpassen:
╳ HTML eMail! Also, https://www.tarent.de/newsletter
╱ ╲ header encryption!
****************************************************
This isn't steganography but a timing attack. However, the timing attack
isn't focused on the cipher but the user. Basically, let's assume that
you are an attacker. All you have are the timing sequences of packets
between a client and a host. The question is if you can take the timing
between each packet to tell you anything about the data being sent.
You can make some assumptions -
1) It's an interactive session.
2) The person behind the interactive session is trained in touch typing
(this won't work as well with self taught/hunk and peck/whatever typists
as well because the "fist" (if we want to go back the old Morse code
terminology is going be much more idiosyncratic and harder to model).
What you know is that it takes a certain amount of time for a finger to
travel from the home row to a specific key and from that key to another
key in a well known language. You also know that SSH doesn't delay
sending packets and that each individual character is represented by a
new packet. As such the pause between each individual packet roughly
corresponds to the time between each key press.
Since you can model the time between key presses (given that person is
trained in touch typing) for pairs of letters you may be able to use
that to gain some entry into what the person is actually typing during
the session.
If you can figure out even a relatively small percentage of letters you
can possibly recreate large portions of the text and, from that, maybe
even figure out the encryption key being used.
The Soviets did something similar to this when they bugged the American
embassy in Moscow. However, in this case they did timing attack on the
movement of the type ball in IBM Selectrics which might have made it
easier.
https://arstechnica.com/information-technology/2015/10/how-soviets-used-ibm-selectric-keyloggers-to-spy-on-us-diplomats/
Chris
> Sorry for top posting but I'm on my phone. My colleague just sent me
> this. https://www.theregister.com/2023/08/07/audio_keystroke_security/
> I don't know how relevant this is as of yet but based on a quick
> reading it seems related.
AFAIK using audio is a much easier target, as each key probably has
some acoustically-unique signal to define it in addition to the
inter-keystroke timing signal.