IAX et chiffrement de la voix 
Dès lors que l’on envisage de faire passer de la voix sur un réseau public, à fortiori sur Internet, la confidentialité des communications téléphoniques est à prendre en compte. Asterisk vient avec un protocole de mise en réseau des centrex qui permet le chiffrement de la voix : IAX.
Bien que moins riche que SIP en terme de signalisation, notamment pour ce qui est de l’ouverture avec le reste du monde, IAX offre certains avantages. Le plus fréquemment utilisé étant le passage aisé des pare-feux grâce à l’usage d’un seul port UDP bien connu pour le transport de la voix mais également de la signalisation. Apparu depuis peu et encore frais, on trouve désormais le chiffrement de la voix.
Le principe de fonctionnement est assez simple et d’un point de vue sécuritaire, encore un peu faible à mon goût, mais c’est bien mieux que rien: on dérive des clés des chiffrement des paramètres échangés lors de l’authentification. Ces clés seront utilisée ensuite pour finaliser la signalisation et transporter la voix. Le chiffrement proposé est de l’AES1, ce qui se fait de mieux à ce jour donc.
La mise en place est simplifiée, il suffit de spécifier que l’on souhaite faire du chiffrement dans la configuration de la mise en réseau (iax.conf).
Avant la mise en place entre nos deux sites (A et B), nous avons la vision suivante de notre mise en réseau (iax2 show peers):
Site A (192.168.16.13):
Name/Username Host Mask Port Status
Trunk/TRUNK 192.168.1.253 (S) 255.255.255.255 4569 Unmonitored
Site B (192.168.1.253):
Name/Username Host Mask Port Status
Trunk/TRUNK 192.168.16.13 (S) 255.255.255.255 4569 Unmonitored
La configuration nécessaire est la suivante dans iax.conf, sur chacun des deux Asterisk:
auth=md5
encryption=aes128
Après prise en compte (module reload), on peut vérifier que la mise en réseau est désormais sécurisé par chiffrement (E), par exemple ici sur le site B:
Name/Username Host Mask Port Status
Trunk/TRUNK 192.168.16.13 (S) 255.255.255.255 4569 (E) Unmonitored
Le reste du fonctionnement n’est pas modifié, notamment en terme de plan d’appel.
On peut vérifier à l’analyseur réseau qu’il y a bien un changement, par exemple avec Wireshark qui intègre un module de décodage du protocole IAX2 :
Avant:
No. Src Dst Proto len Info
1 A B IAX2 131 IAX, source call# 1, timestamp 8ms NEW
2 B A IAX2 76 IAX, source call# 4, timestamp 18ms AUTHREQ
3 A B IAX2 88 IAX, source call# 1, timestamp 36ms AUTHREP
4 B A IAX2 60 IAX, source call# 4, timestamp 30ms ACCEPT
5 A B IAX2 60 IAX, source call# 1, timestamp 30ms ACK
6 B A IAX2 54 Control, source call# 4, timestamp 33ms RINGING
7 A B IAX2 60 IAX, source call# 1, timestamp 33ms ACK
8 B A IAX2 54 Control, source call# 4, timestamp 7336ms stop sounds
9 B A IAX2 54 Control, source call# 4, timestamp 7339ms ANSWER
10 A B IAX2 60 IAX, source call# 1, timestamp 7336ms ACK
11 A B IAX2 60 IAX, source call# 1, timestamp 7339ms ACK
12 B A IAX2 214 Voice, source call# 4, timestamp 7380ms, Raw A-law data (G.711)
13 A B IAX2 60 IAX, source call# 1, timestamp 7380ms ACK
14 B A IAX2 206 Mini packet, source call# 4, timestamp 7400ms, Raw A-law data (G.711)
15 B A IAX2 206 Mini packet, source call# 4, timestamp 7420ms, Raw A-law data (G.711)
16 B A IAX2 206 Mini packet, source call# 4, timestamp 7440ms, Raw A-law data (G.711)
17 B A IAX2 206 Mini packet, source call# 4, timestamp 7460ms, Raw A-law data (G.711)
18 B A IAX2 206 Mini packet, source call# 4, timestamp 7480ms, Raw A-law data (G.711)
19 B A IAX2 206 Mini packet, source call# 4, timestamp 7500ms, Raw A-law data (G.711)
20 B A IAX2 206 Mini packet, source call# 4, timestamp 7520ms, Raw A-law data (G.711)
On voit ici toute la cinématique de l’appel avec l’initiation (trame 1), l’authentification (2-3), le retour de sonnerie (6), le décroché (9) et les paquets relatifs au transport de la voix, ici utilisant un codec G.711 loi A.
Après:
No. Src Dst Proto len Info
1 A B IAX2 135 IAX, source call# 1, timestamp 6ms NEW
2 B A IAX2 80 IAX, source call# 2, timestamp 5ms AUTHREQ
3 A B IAX2 110 Unknown (0x25), source call# 1, timestamp 1430387355ms subclass 45
4 B A IAX2 78 Unknown (0x1d), source call# 2, timestamp 597413362ms subclass 8
5 A B IAX2 78 Unknown (0x6f), source call# 1, timestamp 438296161ms subclass 49
6 B A IAX2 78 Unknown (0x78), source call# 2, timestamp 381704198ms subclass 255
7 A B IAX2 78 Unknown (0x6c), source call# 1, timestamp 3638405095ms subclass 51
8 B A IAX2 78 Unknown (0x68), source call# 2, timestamp 1230132843ms subclass 129
9 B A IAX2 78 Unknown (0x0b), source call# 2, timestamp 2389260322ms subclass 47
10 B A IAX2 238 Unknown (0xd9), source call# 2, timestamp 3043325243ms subclass 40
11 A B IAX2 78 Unknown (0x61), source call# 1, timestamp 768224630ms subclass 92
12 A B IAX2 78 Unknown (0xe9), source call# 1, timestamp 706764186ms subclass 59
13 A B IAX2 78 Voice, source call# 1, timestamp 3987333658ms, unknown (0x66)
14 B A IAX2 236 Mini packet, source call# 2, timestamp 45655ms, unknown (0x00)
15 B A IAX2 236 Mini packet, source call# 2, timestamp 63334ms, unknown (0x00)
16 B A IAX2 236 Mini packet, source call# 2, timestamp 52953ms, unknown (0x00)
17 B A IAX2 236 Mini packet, source call# 2, timestamp 31588ms, unknown (0x00)
18 B A IAX2 236 Mini packet, source call# 2, timestamp 3198ms, unknown (0x00)
19 B A IAX2 236 Mini packet, source call# 2, timestamp 19488ms, unknown (0x00)
20 B A IAX2 236 Mini packet, source call# 2, timestamp 31942ms, unknown (0x00)
Après chiffrement, on peut constater que l’analyseur de protocole ne décode plus que le premier paquet relatif à l’établissement de l’appel. Dans celui-ci on trouve les informations sur l’appelant et le numéro appelé. Toute la suite de la communication (authentification, acheminement, sonnerie et accéptation) est chiffrée.
Cette manipulation assez simple, dès lors qu’une mise en réseau d’Asterisk a été effectuée permet donc d’améliorer de façon sensible la sécurité du transport sur le réseau sous-jacent. Attention néanmoins à prendre en compte le fait que ce code n’est pas encore finalisé et que le chiffrement peut impacter les performances, on pourrait pour des installation échangeant en permanence plusieurs centaines d’appel de passer par un module de chiffrement spécifique afin de ne pas ajouter un délai dégradant la qualité de la communication téléphonique.
- Advanced Encryption Standard [↩]
|
Posté par: Alexandre Chauvin-Hameau, le 14/05/2007 Trackback | Popularité: 29% marqué 1.4, AES, IAX, QoS, RTP et sécurité |
|





(4 votes, average: 4 out of 5)
