enabling "none" cipher
Chris Rapier
rapier at psc.edu
Tue Mar 3 06:35:11 AEDT 2026
On 2/27/26 20:35, Ron Frederick wrote:
> From what I understand, it’s a bit more complicated than this, as the
> desire is to still encrypt the authentication phase of the SSH handshake
> and only switch to the null cipher and mac algorithms after auth completes
> successfully. To do this, there would need to be a way to negotiate
> algorithms and keys for use during auth, with an intent to turn these off
> once auth completes, and ideally to do so in a way that allows both sides
> to know the exact place in the byte stream to switch over.
Yes, that's what we do in HPN-SSH. I'm the lead dev on that. The NONE
cipher switch was developed by Michael Stevens (one of my undergrad
interns) after he noticed that you could force a rekey at any point
during a connection using the control characters.
> It might be possible to do something like this with re-keying, but I think
> there would be some amount of data which was encrypted at the beginning of
> the connection until the rekeying completed. This may be ok, but it’s not
> very clean. It would be better if you could negotiate up front whether to
> turn encryption off when auth completes.
Nope, the rekeying happens immediately after the auth process completes.
Basically, we negotiate the auth process with the chosen public key
algorithm and whatever the default private key algo might be. This
negotiated provate key algo is not actually used at any point because we
immediately rekey to NONE after auth but before any data is sent. It
would be somewhat cleaner, conceptually, if we negotiated NONE during
the initial process but it really doesn't make a difference overall.
Doing it this way is also less intrusive in terms of the merging with
OpenSSH.
Now, on one level I disagree with Theo about supporting smaller
communities because sometimes these small communities are not that small
That said, OpenSSH has a vastly larger user base across a much wider
range of platforms and use cases. HPN-SSH also isn't a core pillar of
expected functionality that is essentially ubiquitous across most every
platform. We serve people we specific needs and goals in terms of bulk
data transport. That's not the same mission as OpenSSH and I fully
respect the incredible work that the OpenSSH dev team does day in and
day out. They are able to do that great work by focusing clearly on
their mission and their priorities. Incorporating NONE cipher as a
transport encryption method is simply outside of that focus.
Anyway, from what we can tell not many people actually use the NONE
cipher because the performance benefits, while notable (8-9Gbps vs 7Gbps
for GCM), aren't as compelling as they used to be. When the transfer
process was largely limited by the overhead imposed by the encryption
process the NONE cipher made a lot more sense for transferring public
data sets. With modern processors with AESNI and significantly more
processing power it's just not as important as it once was. There are
other bottlenecks in the main thread that we (HPN-SSH) are more focused
on. We'll continue to support NONE and, maybe, after we resolve some of
these other bottlenecks, it will once again be 2x or 3x faster that an
encrypted method but, until then, it's just not as compelling, from a
performance perspective, as it once was.
Chris
More information about the openssh-unix-dev
mailing list