On 02/01/2011 12:02 PM, Marsh Ray wrote:
> On 02/01/2011 10:56 AM, Gervase Markham wrote:
>> Dear crypto-hackers,
>>
>> Your thoughts on the following problem would be appreciated.
>>
>> Goal: fix bug 570252. Provide 2-factor authentication for some Bugzilla
>> accounts.
>> https://bugzilla.mozilla.org/show_bug.cgi?id=570252
>>
>> Sub-goal: do it in a way which doesn't involve purchasing or running
>> proprietary software.
>>
>> General musings on these goals welcome. Here also are some specific
>> questions:
>>
>> Q1) There is conflicting advice in that bug about whether a client
>> certificate-based solution
>
> Whether or not client certs count as a second factor is somewhat
> philosophical. In some sense, the private key stored in the browser
> functions as another "something you know" like a password. If the PC
> is pwned, they can get the private key too.
>
> Of course, just about anything is better than just a password alone.
You are presuming generic certificates. Certificate auth can be part of
a 2 factor system if stored in a token. You can know the cert is stored
in the token if you issued the certificate and you know you only issue
certificates into tokens.
>
>> can meet the requirement of "implement it
>> only for some accounts" (with the implicit requirement that it doesn't
>> bother or affect people who are not using it). Can a client certificate
>> solution be made to work?
>
> Those accounts would probably have to access a particular URL and be
> banned from the main one. May or may not be an issue.
There are lots of ways to meet this requirement, though some may require
tweaking of server code.

1) use request/not require certificate. If a certificate is supplied,
that will show up in the initial handshake. The certificate will tell
the server which account and you can bypass login altogether. If no
certificate is supplied, you can bounce to user to a normal login
screen. The server would have to know if some accounts must have
certificates or not.

Downside: This doesn't work well with 'remember these settings' options
-- particularly IE's version-- there is no way to tell the browser to
'unremember' the setting. I think IE will prompt for the certificate
even if there isn't one you can use. Netscape/Mozilla family browsers
will usually not supply the certificate if there isn't one available,
nor will it prompt the user, but if the user has a certificate that
doesn't (even if it doesn't match the ca list from the server), it may
be that Firefox prompts for it (I don't know what the current semantic is).

Back when ask automatically was the default, this could be made to work
really smoothly with smart cards (including automatically changing state
when the smart card was inserted or removed.

1) use normal ssl on your opening page. When the user logs in, if the
account requires a certificate and SSL-Renegotiate is initiated. This
can be accomplished as Marsh indicates by bouncing to a different URL,
but it's possible that you can create a server that handles this
directly. This may be what Marsh was thinking since he was instrumental
in discovering the original bug in SSL-Renegotiate and also in pushing
to get is resolved.

Downside: The user needs to start the login process before you know that
you need a new cert. This only works safely with newer browsers (which
has the renegotiate extension). Obviously you server needs to properly
handle the extension (including refusing to renegotiate with clients
that don't have the extension).
>
>> Q2) If not, does anyone know of any commercial 2-factor systems which
>> can be implemented entirely with open source tools and software? (I'd
>> accept having to purchase closed hardware tokens.)
If you want an open source solution, you can look at Dogtag with it's
Token Management System. It even allows secure provisioning remotely
(mail an unpersonalized token to remotee, The plug the token in and TMS
will load the token with the appropriate keys and certs after validating
the user with the mechanism of your choice.

I

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

Reply via email to