[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
BGP over TLS
On Tue, Oct 22, 2019 at 2:21 PM Bjørn Mork <bjorn at mork.no> wrote:
>
> Christopher Morrow <morrowc.lists at gmail.com> writes:
>
> > The x.509 system, to be effective here would require a TrustAnchor /
> > Root-of-Trust that both parties agreed was acceptable...
>
> As in a shared TrustAnchor? No. Both ends could use a simple self
as an option, sure. not a great one as you say. (and I agree, today's
'web pki' model just isn't sane for networking)
> signed certificate and be configured to trust the other. A hash of the
> peers public key would be sufficient for the BGP peer configuration.
>
This is effectively the same as the md5 problem, right? and there'd
have to be a bunch of not-standard machinations in the tls connection
to support this behavior... never mind: "Was that E5S or E5s gosh..
can you send me this over IM please?" :) (passing around the
fingerprints is hard)
> Or you could use more complex PKI models, with a CA hierarchy or
> whatever. The point is that TLS doesn't force you to do that
>
right, I think I said that in the next paragraph: "Hey, you could use psk..."
> Authenticating the peer by its public key hash is as simple as using an
> TCP-MD5 password.
err... is it though?
'foobarbaz' is a long simpler than:
SHA1 Fingerprint=A2:A8:74:E7:3C:20:49:E4:2D:5A:6E:97:EF:B2:65:C7:59:44:1A:6E
> > To get around that you propose we hopscotch over to 'TLS with
> > preshared keys (PSK)'...ok, that smells nice,
>
> Maybe. Personally I don't see the point.
I think ... if we are working away from a static 'key' and to
something that could be machine managed in a secure fashion (certs,
for instance) we'd be in a better place for:
bgp session security
bgp session integrity
bgp session authentication
> >> My personal major gripe with certificate based systems is that many
> >> routers don't have an RTC and won't know what time it is until they can
> >> NTP, which likely requires protocol adjacencies, and then a dependency loop.
> >
> > this is also a problem, but really ... your igp should get you to an
> > NTP source... or we'd all get to that fairly quickly, right? :)
> > (some of this is updating 'best practices' in building / maintaining
> > a network, right?)
>
> You may ignore notAfter and notBegin like DANE does. The ntp issue is
I don't know what those fields are but:
notBefore=Oct 3 17:13:51 2019 GMT
notAfter=Dec 26 17:13:51 2019 GMT
maybe you mean these? sure, you CAN ignore those, but that's also
'non-standard, outside openssl-like behavior' so likely to cause
problems :(
and, you really do want certs with expiry that's 'short' so you don't
need to worry about CRL distribution and such. I think anyway.
> another reason. But IMHO the most important one is that you don't want
> any sort of forced key rotation, where the configuration that was valid
> yesterday suddenly becomes invalid. That's a policy designed for a
> completely different usecase than running a routing protocol.
there are many examples of (outside x509/ssl) key management systems
that use date initiated keys though, on network devices.
most vendors support a key table for ISIS and OSPF... and LDP (I believe)
> You'll probably want to trust your configured pinned peer key for as
> long as it is part of your configuration. And if you are using a CA,
that seems .. bad. What if someone gets the key material that's not your peer?
https://arstechnica.com/information-technology/2019/10/hackers-steal-secret-crypto-keys-for-nordvpn-heres-what-we-know-so-far/
this doesnt' happen too often... wait, yes it does.
You want the ability to CRL or expire or make a lost cert less useful.
keys/certs/secrets that last forever are not a thing.
> then you'll probably want to use a CRL to withdraw specific certificates
> instead of depending on a timeout.
CRLs imply some external dependency, maybe that's ok depending on your
deployment, but I imagine that if we get to a world with a CA per
peer-as, there are going to be folk very busy getting CRLs and not so
busy getting routes done.
there's a tradeoff for each of these things, I imagine a well reasoned
paper (juilien?) and some standards (possibly) + implementer work
would be necessary to get true forward movement. (and desire to
actually do this work)
> And before someone claims that notAfter and notBegin validation is
> mandated by the RFC 5280 certificate policy - The good authors of RFC
> 5280 anticipated that their "Internet applications" policy wouldn't
> necessarily fit all:
>
> Some communities will need to supplement, or possibly replace, this
> profile in order to meet the requirements of specialized application
> domains or environments with additional authorization, assurance, or
> operational requirements. However, for basic applications, common
> representations of frequently used attributes are defined so that
> application developers can obtain necessary information without
> regard to the issuer of a particular certificate or certificate
> revocation list (CRL).
>
>
> BTW, using TLS for management protocols is not completely unknown. We
> already have RADSEC (RFC 6614) and syslog-tls (RFC 5425), and probably
> others I haven't touched yet. The certificate management problem is
> pretty much the same for all these. You have a closed group of
> clients/servers/peers using explicitly configured sessions. You want
> both ends to authenticate each other. You don't necessarily want an
> umbrella trust anchor in the form of a CA. Defining trust per session
> is fine, using pinned certificates.
to each his/her own I suspect... on the 'use pinned certs' thing.
I am hoping we can imagine a better world and move there.