tech-install archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: HTTPS trust anchors in sysinst



[Someone keeps dropping me from cc, as if they don't actually want me
to pay attention to issues with keeping NetBSD running on low-resource
machines!]


> Date: Fri, 1 Sep 2023 04:07:24 +0200
> From: Johnny Billquist <bqt%softjar.se@localhost>
> 
> Yay! New build of latest current was a bit more successful. Here are
> the results from "openssl speed" on a VAXstation 4000/90. Mind it,
> it's a bit on the fast side among VAXen...
> 
> I hope it is somewhat useful for figuring out how painful things
> might be. ;-)

Great, thanks!  This is missing the higher-speed public-key options I
asked about in the original message (rwverify, falcon), but that's not
terribly important, because the bog-standard public-key options look
just fine too.

But first, before public-key operations, let's look at:

(reformatted from the original)
> The 'numbers' are in 1000s of bytes per second processed.
> type    16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
> sha256  30.15k   94.04k   230.49k   358.23k    428.59k    437.99k

This is going to be the main bottleneck, and it shows you can hash at
about half a megabyte per second.  Which will take several minutes,
but my guess is that it already takes quite a bit more than several
minutes to download and extract the sets anyway -- and perhaps if
pipelined with the I/O it might not make much difference at all.

There are also potentially cheaper options that are still likely
secure, like randomized MD5, which your machine can do at ~3 MB/sec.

Note: For TLS, a better measure of the crypto overhead will be
`openssl speed -evp chacha20-poly1305', which should be much faster
than SHA-256.

>                               sign    verify    sign/s verify/s
>  253 bits EdDSA (Ed25519)   0.0547s   0.1743s     18.3      5.7

This is the modern standard choice of public-key signature scheme, and
you would only need to do _one_ of these operations during
installation to verify a manifest of the release, which will take less
than a fifth of a second on your machine.

Now, I can't tell with 100% certainty that a fifth of a second isn't
catastrophic in your case, but...let's call it 99 and 4/5ths of a %
certainty that this won't be the catastrophe that Mouse predicted?


(OK, I lied: you might actually need to do up to, let's say, four of
these operations, in case we deploy both a system of certificates and
a system of 2-of-3 threshold signatures.  That would bring it up to
almost 0.7 seconds!  Is that gonna tip us over into catastrophe?)


> Doing 253 bits  ecdh's for 10s: 68 253-bits ECDH ops in 10.14s
> ECDH computations don't match.
> [...]
> Doing 456 bits sign Ed448's for 10s: 29 456 bits Ed448 signs in 10.13s
> EdDSA verify failure.  No EdDSA verify will be done.

This suggests there's a bug in the X448/Ed448 logic in OpenSSL on VAX,
which is not too surprising, and also not particularly alarming,
because:

- X448/Ed448 was designed (like X25519/Ed25519) for specially
  optimized arithmetic around the prime shape 2^448 - 2^224 - 1, so
  this is likely using special-purpose arithmetic that isn't used
  anywhere else in OpenSSL for anything else; and

- X448/Ed448 are very seldom used in the real world, because their two
  reasons for existence are (a) the cute arithmetic and (b) to serve
  as a hedge against a modest cryptanalytic advance in elliptic curve
  cryptography -- performance is much worse than the widely used
  X25519/Ed25519, and they're just as vulnerable in the post-quantum
  setting.

It would be nice, and might be fun, to figure out what's wrong here.
But it is unlikely to indicate problems for anything else.


Home | Main Index | Thread Index | Old Index