On Fri, Jun 26, 2020 at 04:40:53PM +0300, Tero Kivinen wrote:
> Michael Richardson writes:
> > Unless we can convince various people otherwise, the TA will all be
> > private enterprise/ISP CAs.
> 
> And for some reason those same private enterprise/ISP people are
> exactly those who say that we can't leak our CA certificates out, and
> thats why we can't have publicly available repository of our
> certificates or CAs, which of course lead to problem if you mandate
> sending that private information whoever ever wants to ask it... 

I hope -25 captures this accordingly. 

   Signalling of TA certificates may not be appropriate when the
   deployment is relying on a security model where the TA certificate
   content is considered confidential and only its hash is appropriate
   for signalling.  ACP nodes SHOULD have a mechanism to select whether
   the TA certificate is signalled or not.  Assuming that both options
   are possible with a specific secure channel protocol.

Btw: i have not heard an explanation why a CA cert would have to
be secret other than the classic "security by secrecy" dogma.

Do you have an actual example why a CA cert would need to be kept secret ?

I can only think of something like oh, the Coca Cola Root Certificate
having the Coca Cola recipe in one of its fields as a human proof
of authenticity of the certificate. But i can't imagine a ral
case where this has been done. Although it sounds like a fun idea
to be able to claim in court that a cert was creted by a holder of
a particular non-cypto secret. Alas, that claim would then mean
you would hve to reveal that non-crypto secret to court.

In any case: If there is an actual crypto root CA in a company,
you can always create a non-secret TA as a subCA without any of the
secret information in the rootCA. IMHO!

> > Sending the *complete* trust chain solves the problem, and should
> > never cause a problem to any properly implemented daemon/certificate
> > chain validator.
> 
> That might not solve anything even when you send the final TA.
> 
> It does not really help when you get TA which has Subject name of
> "CN=Root", and Issuer name of "CN=Root".

Of course not, but it is a lot easier to put diagnostic information
into the root-CA that you may actually have manually crafted
instead of the automatically enrolled EE or even potentially also
automatically created intermediate CA certs. Like rfc822Name
addresses of actual human contacts.

> There is still no information where to go to find out who is the owner
> of the TA. If those are private TAs created by private
> enterprises/ISPs there is no guarantee that the TA itself has anything
> useful in it that allows you to identify who created it. This is
> especially true if the certificate hiearchy is created automatically
> by the vendor software without any actual user interaction.

Yes, there are no mandates whatsoever for any form of transparency
to support diagnostics. The goal of the technology choices made is to
support diagnostics if so desired by the operator deploying the
solution. Mandating any level of transparency is beyond the reach
of this spec.

> Yes, the TA might have something useful but it might not.
> 
> On the other hand the Identity the other end sent might also have
> something useful or might not.
> 
> If we look at different information available during IKEv2 negotiation
> to the endpoint of the exchange.
> 
> During IKE_SA_INIT we might have Vendor IDs indicating the vendor of
> the implementation. This usually is hash of something, and it is
> always priprietary format, meaning you can recognize familiar vendors
> (i.e., you can map vendor you have seen before to vendor ID it sent
> before), but you cannot map random vendor ID to vendor. Anyways this
> might give you some debugging information.

Yepp. As i said in before, as much as i like to do as much for
diagnostics in ACP as possible, i will not be the one asking for
anything new to be put into ACP, because the whole IETF/IESG review
goes on for years already, so it needs to finish so we can work on
all those additional good ideas via followup documents.
> 
> Then we have CERTREQ from the responder, i.e., we know which trust
> anchors it trusts, and we get hash of those keys it trust.
> 
> The main idea there is to allow initiator to select one of the
> certificates he has in such way that he proposes certificate signed
> by one of those trust anchors. As both ends are supposed to be
> configured with trust anchors which they trust in, and from which they
> have certificates from, they can map this hash to actual trust anchor
> without any problems.

Sure. But i still fail to see an example where this would be really helpfull.

I get the idea, but the root problem is that a particular IPsec
session is opened by the initiator for a particular functional
purpose. Different VPNs, different ACP, etc. pp. As soon
as the certificates for different purposes where derived
from overlapping TA, CERTREQ does not help to identify the
purpose. And IPsec implementations are prone to not
support binding to different UDP ports for different purposes,
so there are always workarounds needed to support multiple
purposes on the same device simultaneously.

> Creating a mapping from trust anchor hash to trust anchor is trivial
> if you ever see the actual trust anchor certificate anywhere.

Sure. You just need to have seen the actul trust anchor cert once.

> If you ever have more than one TA ever in normal operations you want
> to mandate sending CERTREQs always. 

See above. To actually ensure that the other sides cert chain
is signalled even when connection fails (for diagnosstics),
the certreq must be ignored, which is fine, but given how it
was also not helpfull (IMHO) to determine the purpose and hence
valid TA in the first place, i consider it to be a well
meaning but not useful option.

But always happy to hear solutions that would only work when it is used.

> In the IKE_AUTH you have CERTREQ from the initiator, containing all of
> the trust anchors from the initiator, even when it used certificate
> from the only one of them. This allows responder to use different trust
> anchor when responding, i.e., initiator might use TA1, and responder
> might use TA2, but both trust in both TA1, and TA2, but they just
> happen to have certificates from different TAs.

yepp. i think i understand how it works.

> In addition to that there is CERT from to initiator, if initiator does
> not already know that the responder has its certificate. In some
> setups the TA hierarchy is properly made and each peer can find
> certificates from somewhere else, and there is no need to send them
> inside IKEv2 at all.

Sure. actually the more common case. Albeit also one that i think
should be avoided as much as possible because it just creates
additional compllexity / third party dependencies. TO me its just
an optimization when there are lots of possible TA (whole set of
web CA for example), or a lot of connections for which setup is to
be optimized.

> In most common case you always send end entity certificate inside the
> IKE_AUTH so other end can verify it against its TA and match it
> against the identity.
> 
> Note, that the certificate itself include Subject Name telling who
> this certificate was created for, and Issure Name telling who signed
> it.
> 
> If the certificate hierarchy and names in the hierarchy are properly
> set there is no need to send TA. If the Subject name is "CN=device1,
> OU=HR Department, O=Example Inc, C=US", and the Issuer name is
> "CN=Root TA 2020, O=Example Inc, C=US", that already gives you all
> information you need to find out who is the owner of the cert. If the
> names are stupid like Subject name of "CN=device1231", and Issuer Name
> of "CN=Root" that does not help to get TA, as the TA again just have
> both Issuer Name and Subject Name of "CN=Root" which does not help
> you.

yepp.

> Then there is still the IDi and IDr identities, those tell the
> identity of the peer. Depending on what identities are in use they
> might be very useful for debugging (like "devi...@hr.example.com" and
> "v...@example.com") or they might be completely useless like "10.5.0.1"
> and "10.1.0.1".

Hah. Ok, so this is an interesting point. I didn't try to
understand this part so far and was just taking in the advice
to use the ID_IPV6_ADDR from the certs ACP domain informatin field
The more complete ID would have actually been the complete
ACP domain information field, which would be possible too because
IKEv2 also supports ID_RFC822_ADDR, which is the forward we have
for the domain information field. Alas, there are IMHO unjustified
dogmatic concerns about using rfc822addr at all, so it wouldn't
really help to suggest using this also as the ID in IKEv2 for
our case - however logical and iseful IMHO that would be.

Are there actual configs in typical IKEv2 implementations
that would allow to tie policies to flexibly matched peer
identifies. And by that i men not IPv4/IPv6 peer identities
but any of the other identitites, all of which are more
descriptive than IPv4/IPv6. ??

> Anyways sending TA only helps at all if the one who created the TA
> actually put some useful information in there, and if he did that,
> then the same information is already in the EE, thus seeing the TA
> does not really help. 

Agreed. But see above, this was at least from my side the
intent anyhow (allow CA certs to have diagnostic info).

> I would just put suggestion saying that whoever is creating those
> certificate hierarhies, they should use proper naming and include the
> name of the company etc in the Subject name of the certificates... 

Yes. Good point to explicitly indicate that signaling TA
is only more useful than not when it has additional
useful diagnostics, sch as e.g.: contact person email or the like.

Cheers
    Toerless

> -- 
> kivi...@iki.fi

_______________________________________________
IPsec mailing list
IPsec@ietf.org
https://www.ietf.org/mailman/listinfo/ipsec

Reply via email to