A propos | Laboratoire | Voisinage | Meilleurs articles | Nous aider | Forums

Panoramisk / Le druide de la VoIP 

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.


  1. Advanced Encryption Standard []
Posté par: Alexandre Chauvin-Hameau, le 14/05/2007
Trackback | Popularité: 29%
marqué , , , , et
AddThis Social Bookmark Button
UselessNothing newInformativeLearned a lotAmazingly helpful (4 votes, average: 4 out of 5)
Loading ... Loading ...

Voir aussi

Et pourquoi pas

Laisser un commentaire

© 2008 Panoramisk | Creative Commons License wordpress logo