Hey there,

On Thursday 07 Nov 2002 6:13 pm, Eric Rescorla wrote:
> I'm not one of the developers, but I have it pretty hard to get excited
> about this sort of thing.

Well I'm tempted to agree with you - a lot of the whole key-scanning
attack hoopla has been wildly overstated, and from both ways of looking
at it;

(a) It's not as bad as some like to make out. There are a variety of
ways to stamp out key-scanning attacks - the most obvious of which, of
course, is to not let untrusted code run inside the same process nor as
the same user as a process holding/managing SSL keys! The argument that
"keys in memory" poses a security risk is, IMHO, logically equivalent to
saying that network architects who let 3rd parties run CGIs/libraries in
the same process as their SSL/TLS applications should be forced to
community service.

(b) The "solutions" to this problem aren't as good as some like to make
out. Eg. putting the keys in hardware, which is essentially the same as
putting the keys anywhere else out of reach (eg. different process,
different user account, different machine), will only stop you
reading/copying the key-data - it doesn't implicitly stop you doing key
operations. AFAICS, keys are only useful for doing key operations so
being able to do key operations is all you really need. The subtle
difference is that if you can read keys, you will *always* be able to do 
key
operations (key-revocation isn't that effective yet), whereas otherwise
your attacks last only as long as they go untreated. But you may only
need one key operation performed fraudulently to do quite some damage
(eg. I could sign a CRL request for your expensive cert/key). So the
scope of risk is a little different, but the absolute "is it secure or
isn't it?" exposure to it is much the same.

> In the case of SSL in particular, the private key is generally
> kept in memory for the life of the process. If it's not zeroed,
> there's not a lot of point in zeroing other keys, since compromise
> of the private key is usually sufficient to reveal all other keys.

Yes, although the argument does at follow that you have the *option* of
putting SSL/TLS keys outside the realm of "copy" attacks (putting aside
the issue of "unauthorised key operations" for a moment). Session keys
on the other hand pretty much have to be in-memory whether you like it
or not, you don't get much choice about that. So correct zeroing may
perhaps make some people feel better.

Note, on the possibility of having session secrets in hardware too ...
there are ways to do it, the most obvious of which is to rewrite an
SSL/TLS implementation from scratch to support it. You'd also need a
hardware device that supports the necessary logic, but that may also
exist. However, you really start to wander aimlessly (and expensively)
into the territory of calling something "secure hardware" because it's
just a computer that can't do anything except security.  Computers that
can't do anything except security are quite straightforward to create
already - eg. install an SSL/TLS (or HTTPS-forwarding) proxy on a linux
box and disable all other services.

Cheers,
Geoff

-- 
Geoff Thorpe
[EMAIL PROTECTED]
http://www.geoffthorpe.net/


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to