On Mon, Oct 3, 2016 at 5:24 PM, Jakob Bohm <jb-mozi...@wisemo.com> wrote:
> On 03/10/2016 20:41, Kyle Hamilton wrote:
>> WoSign is known to be cross-signed by several independent CAs (as well as
>
>> 2. There is only One Certificate Path that can be proven in TLS, which
>> prevents risk management by end-entities.
>>
>
> Are you sure, I thought the standard TLS protocol transmitted a *set*
> of certificates in which the client could/should search for a chain
> leading to a client trusted CA.  For example, this is how cross-
> certificates are often used by servers: Send the cross certificate for
> the benefit of those clients that don't trust the (newer) root that
> leads to the server cert.

Kyle is right.  In TLS, you can only send one chain.  The
specification requires that the server send an ordered sequence of
certificates.

There is nothing in any TLS version that allows the server to send
multiple independent certificate chains.  For example I can't send
these two at the same time:

(server) -> Let's Encrypt Authority X1 -> DST Root CA X3 -> DST RootCA X1
(server) -> DigiCert Baltimore CA-1 G2 -> Baltimore CyberTrust Root ->
GTE CyberTrust Global Root

Even if there is only one private key for the server, you can't send
multiple independent chains

>> The primary reason why CAs have historically not been fully and
>> unilaterally distrusted is because of the damage that would be done to the
>> certified end-entities by distrusting the One Certificate Chain that can
>> be
>> provided via TLS.  We need a means to provide multiple certificate chains
>> simultaneously, with 1/N of those chains needing to pass verification in
>> order for the connection to be deemed authentic.
>
>
> The big limitation here is that most CAs have conditions of
> certification that end entities are not allowed to submit the same
> public key more than once, thus ensuring that each end entity public
> key would be in only one cert from one CA.

Sure. But you could do a threshold scheme where at least N chains have
to be valid. You could even combine this with key pinning to require
that at least N pins are met rather than the current scheme which is
at least 1 pin is valid.

>> This protocol would have permitted end entities to have multiple
>> certificate chains from multiple providers, so that they wouldn't have had
>> to go into crisis mode if one of their providers was distrusted.  It also
>> would have permitted in-protocol stapling of all necessary OCSP responses
>> for validation.  In other words, the One True Certificate issue (which has
>> been known for several years as being the main reason why issuers could
>> not
>> be simply distrusted) has been worked around and worked around and worked
>> around -- most recently with Certificate Transparency -- when the actual
>> reason for the problem was simply "end entities cannot do risk management
>> within the current protocols".

It would seem the obvious tradeoff here is size.  More chains means
larger handshakes.  It does have the advantage of allowing server
operators to "set it and forget it" and still work even if one CA is
distrusted.  It wouldn't even require a change to signatures, it could
just be an extra TLS message, something like "Alternative Server
Certificate".

Thanks,
Peter
_______________________________________________
dev-security-policy mailing list
dev-security-policy@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-security-policy

Reply via email to