[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Shim6 proxies



On 14-jun-2006, at 16:24, Erik Nordmark wrote:

shim6 security could work much the same way by tying a certificate to a ULID, either with or without the intermediate step of an FQDN. Such a certificate allows a host to prove that it holds a certain identity, irrespective of the address it's actually using.

I can see this working, but it can't securely recover a context after a failure failure! This is because there is no trusted relationship between the certificate for the server and the alternate locators of the server.

Does there have to be? You don't have to authenticate the envelope if you know the letter is real. But let's see...

The host (which doesn't have a cert) uses HBA. Looks up www.example.com and gets some IP addresses. The shim6 layer on the host is told the FQDN for the peer.

Really? I don't remember the FQDN playing a part in any shim mechanics.

During the shim6 context establishment TLS is used, which verifies the server's cert. If the server needs to use a different locator it can use TLS to tell the client the new locator; the shim6 layer needs to verify that the same cert is used for the locator update as was used for the context establishment.

Ok.

But that happens if the client looses the context and the server needs to send it some data? One would have to fall back on essentially return routability, since the client's shim doesn't remember the FQDN of the server any more (perhaps the application remembers the FQDN but that doesn't help unless we redo all the socket APIs from scratch).

The worst case is when the client has lost the context and the server needs to contact the client but using a locator that is different than its ULID; in this case even return routability can't be used.

Ok, I see what you mean. One solution would be to forget the FQDN and work with ULIDs, but the downside of that is that people need new certificates. Alternatively, the FQDN can be recovered from the DNS, but without DNSSEC that's not the most secure thing in the world. In stuff like HTTPS the important relationship is betweeen the FQDN and the certificate, the addresses are mostly incidental. But for the shim the FQDN <-> ULID relationship is much more crucial.

I think it would be possible to repair this by having side A create a hash of some of side B's stuff along with a secret, and then transmit that hash to B. When A then garbage collects and B subsequently reconnects, B can say "I presented this to you earlier and you believed me then, this hash proves it".

With such a system in place we can also reduce the state that has to be kept for an inactive shim context to pretty much just one or more alternative locators and a hash. All other information can be recovered from the other side when needed.