Difference between revisions of "SEND"

From Livre IPv6

(Génération d'une adresse CGA)
(Génération d'une adresse CGA)
Line 53: Line 53:
 
=== Génération d'une adresse CGA ===
 
=== Génération d'une adresse CGA ===
  
Le principe est de créer une association cryptographique (un fonction de hashage) entre une clé publique et une adresse IPv6.
+
Le principe est de créer une association cryptographique (un fonction de hachage) entre une clé publique et une adresse IPv6.
 +
 
 +
Par la suite lorsque que l'on parlera d'adresse, il faudra comprendre les 64 bits les plus à droite : ceux de l'identifiant d'interface.
 +
 
 +
Une adresse CGA dépend d'abord d'un paramètre de sécurité, noté Sec, codé sur 3 bits.
  
 
== Signature RSA ==
 
== Signature RSA ==

Revision as of 14:29, 23 June 2006

SeND : SEcure Neighbor Discovery

Introduction

SeND (RFC 3971) est une version sécurisée de NDP (Neighbor Discovery Protocol, RFC 2461 et RFC 2462), le protocole de découverte de voisins d'IPv6.

Il est conseillé de connaitre un minimum ce protocole (voir Découverte de voisins) et posséder quelques notions de sécurité (voir Sécurité, Généralités) avant de lire ce chapitre.

Après un état des lieux des problèmes de sécurité lié à NDP (RFC 3756), les travaux ont commencés afin de répondre à chacune des menaces décrites dans ce document. IPSec avait été envisagé à l'époque de la conception de NDP pour sécuriser ce dernier, mais cela s'est révélé inapproprié en pratique.

La première innovation est l'utilisation de CGA (RFC 3972) pour Cryptographically Generated Addresses, qui permet de créer des identifiants d'interfaces à partir d'une clé publique.

Le deuxième mécanisme important de SEND est la possibilité de découvrir automatiquement un chemin de certification sur le réseau.

Une extension du protocole NDP

Le protocole SEND ajoute des fonctions de sécurité grace à l'ajout d'options au messages NDP.

Voici la structure de tels paquets :

                    <------------NDP Message---------------->
*-------------------------------------------------------------*
| IPv6 Header      | ICMPv6   | ND Message- | ND Message      |
| Next Header = 58 | Header   | specific    | Options         |
| (ICMPv6)         |          | data        |                 |
*-------------------------------------------------------------*
                    <--NDP Message header-->

L'option CGA permet de vérifier l'identité d'une machine émettrice d'un paquet NDP. Cette option contient entre autre la clé publique de la machine émettrice, dont la cohérence avec l'adresse source utilisée est vérifiée par la machine réceptrice.

L'option RSA contient une signature du paquet, calculée avec la clé privée de la machine émettrice. Le noeud recevant le paquet peut vérifier l'intégrité at l'authenticité du paquet, grâce à la clé publique reçue conjointement ou précédemment.

La confiance dans la clé publique utilisée par les options CGA et RSA se base sur un mécanisme de certification décrit dans les chapitres suivants.

Une option d'horodatage (Timestamp) est utilisée pour protéger NDP des attaques de type 'rejeu'.

Une option unicité (NOnce) est utilisée pour protéger les associations Demande/Réponse (Solicit/Advertisement) : une réponse NDP devra contenir la même valeur NOnce que la demande correspondante pour être valide.

Enfin deux options (Certicate Path Solicitation et Certificate Path Advertisement) sont utilisées afin de permettre la découverte automatique par une machine terminal d'un chemin de certification. Ce mécanisme permet à des machines utilisant l'auto configuration sans état (RFC 2462) de vérifier la légitimité d'un routeur et celle des préfixes publiés sur le lien auprès d'un tiers de confiance sur le réseau.

Ces options sont utilisées par NDP uniquement lorsque cela est nécessaire, c'est à dire pour se protéger d'un risque d'attaque spécifique.

Adresses CGA

Une adresse CGA (Cryptographically Generated Address) est utilisée afin de prouver, en temps qu'émetteur d'un message NDP, que l'on bien le propriétaire de l'adresse source utilisée : afin prouver son identité réseau. Une paire de clé Publique/Privée est générée pour chaque noeud voulant prouver la possession d'une adresse.

Le mécanisme de génération CGA crée la partie identifiant d'interface d'une adresse IPv6, à partir d'une clé publique et d'autres paramètres, comme le mécanisme de configuration sans état. Cette adresse est ensuite utilisée comme adresse source du message NDP, auquel au ajoute également l'option CGA, qui contient les paramètres ayant servis à la génération de l'adresse. Ainsi le récepteur peut générer une adresse CGA à partir des données reçues via l'option du même nom, et comparer la CGA calculée avec la CGA utilisée comme adresse source. Elles doivent être identiques bien sûr.

Voyons ces deux phases en détails.

Génération d'une adresse CGA

Le principe est de créer une association cryptographique (un fonction de hachage) entre une clé publique et une adresse IPv6.

Par la suite lorsque que l'on parlera d'adresse, il faudra comprendre les 64 bits les plus à droite : ceux de l'identifiant d'interface.

Une adresse CGA dépend d'abord d'un paramètre de sécurité, noté Sec, codé sur 3 bits.

Signature RSA

Options horodatage et 'NOnce'

Découverte dynamique du chemin de certification

Implementations connues

  • Docomo (mai 2006, implémentation complète sous license GPL, [1] )
  • Alcatel (septembre 2005, implémentation des options CGA et RSA, [2])
Personal tools