On Thu, 2012-07-26 at 14:00 +0200, Anders Rundgren wrote:
> On 2012-07-26 12:24, David Woodhouse wrote:
> <snip>
> > 
> >> My same concerns would apply to private keys.
> > 
> > An application-specific 'third slot' would certainly address that
> > concern.
> 
> </snip>
> 
> IMO, private keys is a very different topic because they are not
> really "owned" by the user and if misused they could hurt not only
> the user but the RP as well.

They are a very different topic, and one I was planning to look at
*after* sorting out the basic "sysadmin wants to install all $CORP CA
keys to be trusted system-wide" and "user wants to install her own CA
and the CACert one to be trusted for all purposes" use cases.

It's *insane* that we can't even cope with those two simple use cases
properly.

> There seems to be two ways ahead [for private keys]:
> 
> 1. Let each application manage/own its private keys
> 2. Let the system manage private keys and limit misuse by ACLs

Or 3. Let the system manage private keys, and let them have a PIN.

Which is what you get with a hardware token anyway. If I want to connect
to the VPN using a key from a hardware token, I just do:

 openconnect -c pkcs11:object=AnyConnect%20Remote%20Access $VPNSERVER

... and then I'm asked for the PIN. If the application knows the PIN¹,
it gets to use the key. If not, it doesn't. 

Since this scheme already *exists* and is used for hardware tokens, why
would we do something different for software storage of keys?

We thus get to conveniently punt the question of how the application
*gets* the PIN. It could ask the user once and store the PIN in "secure"
storage that we don't have to worry about. It could ask the user every
time. Or it could interact with some secret storage infrastructure which
will provide stored passwords only to the appropriate applications, and
already *has* the ACL stuff sorted out. But ideally, I lost you at
'conveniently punt'. We don't want to have to reinvent this particular
wheel.

All we need is a per-key passphrase, and I think we have a fairly good
(and realistic, and deployable, and not pie-in-the-sky) solution.

For private keys, which wasn't where I intended to start.

-- 
dwmw2

¹ Which includes asking the user for it on demand, of course.

Attachment: smime.p7s
Description: S/MIME cryptographic signature

-- 
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to