Les gens de BGP étaient jaloux de ceux du DNS, qui s'amusaient comme
des petits fous avec DNSSEC. Désormais, avec leur BGPdemisec, ils vont
pouvoir rire eux aussi. Par contre, Pakistan Telecom ne pourra plus
augmenter la productivité des entreprises occidentales, en empêchant
leurs employés de regarder des lolcats sur YouTube.

http://www.bortzmeyer.org/securite-routage-bgp-rpki-roa.html

----------------------------


On le sait, le protocole BGP (normalisé dans le RFC 4271), sur lequel 
repose tout l'Internet, car c'est lui qui permet à l'information de 
routage de circuler entre les opérateurs, ce protocole, donc, est peu 
sûr. N'importe qui peut annoncer n'importe quelle route, dire « Je suis 
Google, envoyez-moi toutes les requêtes Google » et les autres le 
croient. Résoudre cette vulnérabilité n'est pas trivial, pour des 
raisons essentiellement non techniques. Néanmoins, le manque d'un 
mécanisme standard pour valider les routes était une des faiblesses du 
routage Internet. Une série de RFC vient de partiellement combler ce 
déficit.

Écrits par le groupe de travail IETF SIDR 
<http://tools.ietf.org/wg/sidr> ("Secure Inter-Domain Routing"), ces 
RFC décrivent une série de protocoles, règles et formats qui permettent 
de sécuriser une partie de BGP. À eux seuls, ils sont loin de résoudre 
le problème, qui est très complexe. Mais ils fournissent des briques 
sur lesquelles seront bâties les solutions ultérieures.

Ces annonces de route anormales sont relativement banales sur 
l'Internet. Pour ne citer que trois exemples relativement récents :
* Le 24 février 2008, Pakistan Telecom annonce les adresses de YouTube 
et prive le monde de ce service pendant plusieurs heures 
<http://www.bortzmeyer.org/pakistan-pirate-youtube.html>,
* Le 8 avril 2010, China Telecom annonce les adresses d'une bonne 
partie de l'Internet et attire ainsi leur trafic 
<http://bgpmon.net/blog/?p=323>,
* Le 23 juin 2011, OpenTransit fait la même erreur et détourne 
également une partie du trafic 
<http://www.mail-archive.com/frnog@frnog.org/msg15150.html>. Les 
abonnés au service d'alarme BGPmon 
<http://www.bortzmeyer.org/alarmes-as.html> reçoivent des avis de 
détournement (en ligne sur 
http://www.bortzmeyer.org/files/bgpmon-as5511-june-2011.txt).
Toutes étaient des erreurs et pas des attaques. Néanmoins, le risque 
que cette même faiblesse soit exploitée pour des attaques est réel. 
Celles-ci seront sans doute plus subtiles que les trois grosses bavures 
citées plus haut, et utiliseront sans doute des techniques de furtivité 
comme celle de Kapela & Pilosov 
<http://www.bortzmeyer.org/faille-bgp-2008.html>.

Mais alors, pourquoi malgré autant d'attaques (n'exagérons rien : il 
n'y en a pas tous les mois), n'a-t-on pas encore déployé une solution 
de sécurité ? Parce que le problème est compliqué. Le routage sur 
l'Internet n'est pas hiérarchique. Les relations entre opérateurs sont 
un graphe plutôt complexe, et un opérateur qui est situé loin ne sait 
pas ce qui est normal : après tout, qui me dit que YouTube n'a pas 
subitement changé de fournisseur pour s'installer au Pakistan ? Mëme si 
un être humain peut trouver cela bizarre, le pauvre routeur BGP n'a pas 
de moyen de décider si une annonce est normale ou pas.

Il y a en fait deux choses qu'on peut vouloir authentifier dans une 
annonce BGP. Imaginons qu'un routeur reçoive une annonce pour le 
préfixe 2001:db8:666::/48 et que le chemin des AS traversés soit 64496 
65550 65543 (rappelez-vous que le chemin se lit de droite à gauche, 
l'annonce initiale a donc été faite par l'AS 65543). Le routeur peut se 
demander « Est-ce que 65543 était bien autorisé à annoncer ce 
préfixe ? », ce qu'on appelle la *validation de l'origine*. Et il peut 
aussi s'interroger « Est-ce que 65550 avait le droit de relayer cette 
annonce ? Et 64496 ? ». C'est la *validation du chemin*. La première 
est relativement simple (il n'y a pas tant de préfixes IP que cela et 
ils sont normalement tous enregistrés dans les bases des RIR, et les 
origines changent rarement). La seconde est bien plus complexe 
(explosion combinatoire du nombre de possibilités, relations entre 
opérateurs qui ne sont pas dans les bases des RIR, changements 
fréquents) et ne sera traitée que dans un deuxième temps.

Il y a donc eu de nombreuses tentatives de résoudre ce problème de 
sécurité (une liste partielle figure à la fin de cet article). 
Attention d'ailleurs en lisant ce qu'on trouve sur l'Internet : vous 
extrayerez des tas de propositions dépassées ou abandonnées.

L'approche choisie par le groupe SIDR est modulaire : il n'y a pas une 
technique unique qui résoud tout mais un ensemble d'outils, à combiner 
selon les cas. À la base, se trouve la RPKI, une IGC hiérarchique, 
partant de l'IANA et des RIR, permettant de produire des certificats 
attestant de la « possession » d'une ressource (un préfixe IP, un 
numéro d'AS, etc). L'émission de ces certificats a été un des premiers 
pas concrets 
<http://www.bortzmeyer.org/certificats-ressources-internet.html>.

Une fois les certificats émis, les titulaires des ressources 
(typiquement, des adresses IP) créent des objets signés, les ROA 
("Route Origin Authorizations"). Ces ROA et les certificats sont 
distribués sur l'Internet (pas en temps réel) et tout routeur peut les 
consulter pour savoir si une annonce est légitime. Pour éviter de 
charger le routeur avec des calculs cryptographiques, la validation 
sera typiquement faite par une machine spécialisée, le validateur, que 
le routeur interrogera avec un protocole simple.

Voici la longue liste des 14 (!) RFC qui viennent de paraître sur ce 
sujet. L'ordre ci-dessous est leur ordre d'importance décroissante 
(selon moi) :
* RFC 6480, "An Infrastructure to Support Secure Internet Routing", le 
plus important, décrit l'architecture générale du système et notamment 
l'infrastructure de clés publiques, la RPKI ("Resource Public Key 
Infrastructure").
* RFC 6483, "Validation of Route Origination using the Resource 
Certificate PKI and ROAs", décrit le mécanisme de validation de 
l'*origine* (le premier AS) d'une route, en utilisant les techniques 
ci-dessus.
* RFC 6481, "A Profile for Resource Certificate Repository Structure", 
décrit la structure du dépôt des objets de la RPKI (certificats et 
ROA).
* RFC 6488, "Signed Object Template for the Resource Public Key 
Infrastructure", spécifie le profil CMS des objets signés,
* RFC 6482, "A Profile for Route Origin Authorizations (ROAs)", décrit 
le format concret des *ROA* ("Route Origin Authorization"), les objets 
signés cryptographiquement qui permettent d'autoriser un AS à annoncer 
l'origine d'une route.
* RFC 6486, "Manifests for the Resource Public Key Infrastructure", sur 
les manifestes, ces listes d'objets signés, elles-mêmes signées, et qui 
seront distribuées dans les dépôts de la RPKI,
* RFC 6487 "A Profile for X.509 PKIX Resource Certificates", spécifie 
le profil (la restriction) pour les certificats numériques utilisés 
dans la RPKI,
* RFC 6493, "The RPKI Ghostbusters Record", indique comment préciser 
dans le certificat les informations permettant de contacter le 
titulaire de la ressource.
* RFC 6490, "Resource Certificate PKI (RPKI) Trust Anchor Locator", 
indique comment trouver les certificats racine,
* RFC 6492, "A Protocol for Provisioning Resource Certificates", le 
protocole d'avitaillement des certificats entre l'AC et ses clients,
* RFC 6484, "Certificate Policy (CP) for the Resource PKI (RPKI)", où 
sont exposés les principes de la politique que devraient suivre les AC 
de la RPKI,
* RFC 6491, "RPKI Objects issued by IANA", décrit les objets que va 
devoir signer l'IANA pour amorcer le processus (typiquement, les 
réseaux « spéciaux », normalement non annoncés en BGP),
* RFC 6489, "CA Key Rollover in the RPKI",
* Et enfin RFC 6485, "The Profile for Algorithms and Key Sizes for use 
in the Resource Public Key Infrastructure", qui spécifie les 
algorithmes de cryptographie utilisés par la RPKI.
En outre, un futur RFC, "The RPKI/Router Protocol", décrira le 
protocole de communication entre le routeur BGP et son validateur, 
typiquement un serveur Unix spécialisé.

Quelles sont les chances d'adoption de RPKI+ROA, sachant que 
d'innombrables protocoles de sécurité de l'IETF ont été peu ou pas 
déployés (IPsec, PGP, etc) ? Tout le monde dit en effet vouloir 
davantage de sécurité mais, en pratique, personne ne veut en payer le 
prix. Les systèmes de sécurité sont lourds, contraignants, et ne 
semblent pas en valoir la peine. Il est possible que des des mesures a 
posteriori 
<http://www.bortzmeyer.org/securite-bgp-et-reaction-rapide.html> (via 
des des systèmes d'alerte <http://www.bortzmeyer.org/alarmes-as.html>) 
suffisent à gérer le problème de la sécurité de BGP.

Sinon, ce système soulève des tas de questions liées à la gouvernance, 
comme c'est souvent le cas des mécanismes de sécurité. Quelques 
exemples :
* Faut-il une racine unique de certification ? Sur le papier, tout le 
monde dit oui (par exemple le NRO 
<http://www.nro.net/news/nro-declaration-on-rpki> ou bien l'IAB 
<http://www.ietf.org/mail-archive/web/ietf-announce/current/msg07028.htm
l> ; notez que les conflits dont parle l'IAB se sont déjà produits 
<http://www.bortzmeyer.org/conflit-numeros-as.html>) mais, en pratique, 
les membres du NRO n'en veulent pas et le candidat évident pour cette 
racine unique, l'IANA, n'a donc qu'un rôle minime. Pour l'instant, 
chaque RIR est racine de certification et il faut donc avoir cinq 
certificats racine. L'IGP <http://www.internetgovernance.org/> a 
produit une critique de la déclaration de l'IAB 
<http://blog.internetgovernance.org/blog/_archives/2010/3/13/4479658.htm
l>.
* RPKI+ROA augmente le pouvoir des RIR, via les révocations, ce qui est 
une nouveauté. Avant, les RIR n'intervenaient pas dans le routage, 
uniquement dans l'allocation des adresses. Un RIR pouvait en théorie 
révoquer une allocation, mais cela n'avait aucune conséquence pratique. 
Avec la RPKI, le RIR émettra une révocation X.509 et les routeurs ROA 
arrêteront automatiquement d'accepter la route... Le RIR aura donc 
désormais un rôle opérationnel. Comme l'explique très bien l'excellent 
article de l'IGP "Building a new governance hierarchy: RPKI and the 
future of Internet routing and addressing 
<http://internetgovernance.org/pdf/RPKI-VilniusIGPfinal.pdf>", cela 
peut changer les rôles des acteurs de la gouvernance de l'Internet et 
la RPKI devrait donc être discutée politiquement, pas uniquement 
techniquement. Pour l'instant, les partisans de la RPKI considèrent que 
le problème doit être relativisé car le contrôle final est entre les 
mains du cache validateur qui croit qui il veut. S'il ne veut pas 
utiliser les "trust anchors" des RIR, il le peut. (Il peut aussi ne pas 
valider du tout, ou bien accepter les routes invalides, surtout s'il 
n'y a pas de routes alternatives.)
* Discussions animées au sein de la communauté quant à l'intérêt pour 
le RIR de travailler dans cette direction. En novembre 2011, celle du 
RIPE a voté pour la poursuite du projet (voir les articles de Malcolm 
<https://publicaffairs.linx.net/news/?p=6118> et de Michele Neylon 
<http://www.circleid.com/posts/20111103_ripe_members_vote_to_continue_rp
ki_work/>).

Pour le fonctionnement concret du système RPKI+ROA, et des exemples, 
voir mon autre article <http://www.bortzmeyer.org/rpki-tests.html>.

Dans le futur, des travaux auront lieu pour valider le *chemin* et non 
plus seulement l'*origine* comme le fait notre nouveau système. Après 
des propositions comme Secure BGP 
<http://blog.ioshints.info/2010/03/secure-bgp.html>, le futur protocole 
se nommera probablement BGPSEC 
<http://tools.ietf.org/html/draft-ietf-sidr-bgpsec-overview> car, 
contrairement au système qui vient d'être normalisé, il sera une 
modification de BGP. Humour par Hugo Salgado 
<https://twitter.com/huguei> : si l'actuel BGP, sans sécurité, est 
*BGPbrut*, RPKI+ROA est un *BGPdemisec* - à moitié sécurisé - et le 
futur protocole sera, logiquement, *BGPsec*...

Quelques articles intéressants :
* Une introduction pour grands débutants 
<http://www.apnic.net/services/services-apnic-provides/resource-certific
ation/RPKI> par l'APNIC.
* Un court résumé technique 
<http://www.ietf.org/proceedings/75/slides/sidr-7.pdf> qui avait été 
fait à l'IETF.
* Un tutoriel RIPE 
<http://ripe63.ripe.net/presentations/32-RIPE63-RPKI-Session.pdf>, 
rappelant l'effort du RIPE-NCC.
* Une proposition alternative, où on ne valide pas les routes mais où 
on ne les adopte que prudemment, Pretty Good BGP 
<http://www.cs.unm.edu/~karlinjf/pgbgp/>.
* Un très bon article général 
<http://www.potaroo.net/ispcol/2011-07/bgpsec.pdf>, très détaillé, sur 
RPKI+ROA puis le passage à BGPsec.


---------------------------
Liste de diffusion du FRnOG
http://www.frnog.org/

Répondre à