L'opportunistic encryption (ou appelé OE) est une fonctionnalité non RFC ajoutée par les développeurs de freeswan sur le protocole IPSEC. Il a pour intérêt de pouvoir négocier avec n'importe quel serveur (connu ou non) acceptant l'OE la création d'un tunnel ipsec temporaire entre une machine et l'autre.
Pour cela, il utilise les propriétés des DNS pour pouvoir authentifier la machine distante.
Sans rentrer dans les arcanes des DNS, il va faire une double vérification en se basant sur les champs de commentaires de DNS (champs TXT).
Lorsqu'une machine se connecte à une serveur ipsec gérant l'OE, il va faire deux résolutions DNS :
# host -t TXT machine.ecranbleu.org machine.ecranbleu.org TXT "X-IPsec-Server(10)=81.255.82.6" " AQNnycIot0WaNFL6LHInCoWnLz72qHb6Cvpw7Za3oWkWO5uksyKn2EN8Ckw 6N/bX2Opbz53h+PjFBUcyjO65UzamUqbOdiJemE0RZq2Jv1fmcAOTw+8oKoq6N a0pMD3Nl9MP0bhrW5KnExTZ8IBAWIGF7yqlFaSXW6rsCYmavkU+kHFo7NsEa0W oHUwdzEscyapV0WR0Apvqu4t8AB3pgkTg5/Xpo2qD64QQybjkUFx7QKYLg7QX1 WcnwAgHW2" "EyEz+Z9tAwoamhAG4Ckunbwm3ot8mhu4EFdukrG+mXDOVPXiZn w3zmvWYDiJFdqcfl6oy8cbTmOao2UDoOGkjgzk+SE7L1EAod ipsec auto --up net-to-netlhBU/z4bidc+y3xxcVs5NaCKOTXUVBw/qirOHnmCC+FYYg bwS7qobaL1XOb+w7N2ipgba/f6NFmxC+WHuTbepYv7+4iafajeizDQEeEYSZVD 7qFqe9H0HeY5jF+x+gKFKM/cgrMYEoBJQb3s2f4qWOnf6s1Kv" "p1fCER+qD0U Af4JZEbBAvNMWcdK6ll3HkvwtfVlSaEW8Bs=" # host -t TXT 6.82.255.81.in-addr.arpa. 6.82.255.81.in-addr.arpa CNAME 6.0-16.82.255.81.in-addr.arpa 6.0-16.82.255.81.in-addr.arpa TXT "X-IPsec-Server(10)=81.255.82.6" " AQNnycIot0WaNFL6LHInCoWnLz72qHb6Cvpw7Za3oWkWO5uksyKn2EN8Ckw6N/bX2Opb z53h+PjFBUcyjO65UzamUqbOdiJemE0RZq2Jv1fmcAOTw+8oKoq6Na0pMD3Nl9MP0bhrW5K nExTZ8IBAWIGF7yqlFaSXW6rsCYmavkU+kHFo7NsEa0WoHUwdzEscyapV0WR0Apvqu4t8AB 3pgkTg5/Xpo2qD64QQybjkUFx7QKYLg7QX1WcnwAgHW2" "EyEz+Z9tAwoamhAG4Ckunbwm 3ot8mhu4EFdukrG+mXDOVPXiZnw3zmvWYDiJFdqcfl6oy8cbTmOao2UDoOGkjgzk+SE7L1E AodlhBU/z4bidc+y3xxcVs5NaCKOTXUVBw/qirOHnmCC+FYYgbwS7qobaL1XOb+w7N2ipgb a/f6NFmxC+WHuTbepYv7+4iafajeizDQEeEYSZVD7qFqe9H0HeY5jF+x+gKFKM/cgrMYEoB JQb3s2f4qWOnf6s1Kv" "p1fCER+qD0UAf4JZEbBAvNMWcdK6ll3HkvwtfVlSaEW8Bs="
Pour rajouter ces champs, il faut générer la clé public. Il existe un programme inclus dans openswan qui permet de générer l'enregistrement DNS au format utilisé par BIND (principal serveur DNS sur le net) :
# ipsec showhostkey --txt @`hostname --fqdn` # la partie entre entre backquote permet de récuperer le nom de la machine
Une fois le processus de vérification et d'échange des clés a été effectué, un tunnel est effectué de manière transparente entre les deux machines.
Par exemple, si une machine gérant l'OE essaye de consulter un site internet héberge sur une machine supportant cette technologie, la sécurisation se ferra automatiquement.
Le projet freeswan met à disposition publique une machine de test pour vérifier que cette fonctionnalité marche de manière correcte.
Ainsi, si on essaye de se connecter (quelque soit le protocole) sur la machine oetest.freeswan.org, le tunnel va être mis en place pour une certaine durée.
Le tunnel ainsi obtenu est similaire à celui que l'on a pu obtenir précédemment en dehors du fait qu'il a une durée de vie.
# ipsec eroute 0 193.17.15.19/32 -> 81.255.82.7/32 => tun0x1002@81.255.82.7
Si on sniffe le réseau, on ne va voir que des informations chiffrées circuler, sans même d'informations quant au port de destination ou source.
Voila ce que tcpdump nous retourne quand on sniffe une connexion cryptée.
Entête : 14:16:52.493098 81.255.82.7 > 193.17.15.19: ESP(spi=0x629ad466,seq=0x19) Contenu du packet : E..h^U..42..Q.R.....b..f.....B..+.....-.o/|.... .]q.g[...Y.".....y..4r..P."..Kx.. Entête : 14:16:52.493199 193.17.15.19 > 81.255.82.7: ESP(spi=0xf9e66fad,seq=0x1b) Contenu du packet : E..`i...@2......Q.R...o........<..^...z9Rt.... .Q..~6..Y..8..:n.G...Q,.....I...wx..
Alors que si la connexion n'avait pas été chiffré, on aurait obtenu bien plus d'informations, tel que le port source, de destination, les numéros de séquence et surtout le contenu du paquet :
Entête : 14:19:29.709798 81.255.82.7.21 > 193.17.15.19.36111: P 62:94(32) ack 11 win 32416 <nop,nop,timestamp 90859454 188978569> (DF) [tos 0x10] Contenu du packet : 220 ProFTPD 1.2.9 Server (Debian) [brannigan.ecranbleu.org].. Entête : 14:20:42.840999 193.17.15.19.36113 > 81.255.82.7.21: P 11:26(15) ack 94 win 5840 <nop,nop,timestamp 188985899 90866560> (DF) Contenu du packet : PASS mon_pass..
Intêret de l'OE L'opportunistic encryption est très intéressante pour sécuriser les flux sur internet. Si toutes les machines utilisaient ce système, les problèmes de sécurité a l'échelle d'internet seraient sensiblement diminués étant donné que tous les flux sont automatiquement cryptés entre deux périphériques. Mais malheureusement, cette technologie est difficile à déployer pour principalement trois raisons :
root 2004-05-04