Alternatives open source et sécurisées de visioconférence : Jitsi

Jitsi paraît bien petit à côté de Zoom, le service de visioconférence qui rassemble plus de 300 millions de participants au quotidien. Pourtant, ce projet open source est utilisé par environ 10 millions de personnes mensuellement. Il propose des fonctionnalités intéressantes pour celui qui veut héberger sa propre application de communication.

Zoom sur Jitsi. Cet outil open source de visioconférence a été créé par Emil Ivov, un Bulgare alors étudiant à l’Université Louis Pasteur à Strasbourg. En 2003, le projet se nomme jsPhone. En 2005, il est totalement revu en accord avec les recommandations de l’OSGi. C’est en 2008 qu’il change une première fois de nom pour devenir SIP Communicator. Celui-ci s’écarte de JAIN SIP (Java APIs for Integrated Networks) et utilise principalement le protocole Session Initiation Protocol (SIP).

Doctorat en poche, Emil Ivov fait un tour par HEC pendant un an où il se forme à la gestion d’une startup. En 2009, il fonde Blue Jimp en France et emploie les contributeurs principaux du projet pour apporter une couche de support et des services de développement à SIP Communicator. Ce n’est qu’en 2011 que sa solution devient Jitsi (dérivé du mot zithsi, câbles en bulgare). Ce changement de nom entend répondre à l’évolution de la solution qui supporte non seulement le protocole SIP, mais également l’extension de XMPP nommé Jingle.

Jitsi, un projet passé par le giron Atlassian

De 2012 à 2014, Jitsi prend la forme qu’on lui connaît aujourd’hui. Blue Jimp et les contributeurs ajoutent un système de vidéoconférence basé sur un routeur pour dépasser la limite de deux utilisateurs. Cela donne naissance au projet Jitsi Videobridge en 2013. Celui-ci ajoute le support pour les protocoles ICE et DTLS/SRTP, rendant compatible Jitsi avec les clients WebRTC. En 2014, la communauté met au point Jitsi Meet, l’application côté client, à l’instar d’un Hangouts.

En 2015, Atlassian rachète Blue Jimp pour un montant inconnu. Emil Ivov suit le projet et devient alors le « Chief Video Architect » chez l’éditeur texan. Atlassian a alors pour projet d’ajouter un service de vidéoconférence à son outil de collaboration HipChat dont la version cloud sera renommée Stride en 2017. En 2018, l’éditeur met fin à ses ambitions dans ce domaine et revend le couple HipChat-Stride à Slack.
Le spécialiste américain de la communication unifiée 8x8 rachète la marque Jitsi et recrute l’équipe en charge du projet. Emil Ivov devient chef de produit collaboration vidéo chez 8x8. La société prend le rôle de contributeur principal à Jitsi et intègre la technologie dans ses propres produits.

Aujourd’hui, Jitsi reste un projet open source sous licence Apache 2.0. Il permet aux utilisateurs d’entamer des conférences vidéo sans configurer un compte, de créer un salon, de le protéger avec un mot de passe, d’échanger des messages via un chat, de partager son écran, des documents en s’appuyant sur Etherpad, ou encore des vidéos Youtube.
La communauté a récemment ajouté un mode présentateur qui permet à un hôte d’afficher sa caméra et son écran simultanément. Une option en bêta permet de flouter l’arrière-plan et une autre facilite l’enregistrement des conférences. L’outil est disponible depuis tous les navigateurs Web qui supportent le protocole WebRTC, ainsi que sur les appareils mobiles Android et Apple. Bref, nous retrouvons là la plupart des fonctionnalités supportées par Microsoft Teams, Zoom et autre Google Meet. Il existe également une application de bureau : Jitsi Desktop.

Un outil à déployer de préférence sur site

Sous le capot, Jitsi rassemble une collection de projets open source. L’outil repose sur deux briques principales (Meet, Videobridge) et sur six composants supplémentaires (libjitsi, jigasi, jitsi desktop, jibri, jicofo et ice4j). Jitsi Meet est une application côté client, codée en JavaScript et qui intègre l’API WebRTC. L’utilisateur passe par son navigateur Web, tandis que l’hébergeur du service de visioconférence peut passer par un package Ubuntu, Debian ou une image Docker à héberger sur site ou dans le cloud.

En tant que soutien de l’outil open source, 8x8 propose ses propres instances gratuites sous le nom de meet.jit.si. L’éditeur américain a récemment passé ses workloads vidéo sur Oracle Cloud (OCI). Il les hébergeait auparavant sur AWS. Cette version gratuite est malheureusement soumise au CLOUD Act.

Pour installer soi-même Jitsi Meet, il faut d’abord déployer un serveur web open source asynchrone Nginx ou Apache. Puis, le développeur configure son pare-feu, les paramètres DNS pour ensuite générer un certificat SSL Let’s Encrypt. Il est recommandé de chiffrer les communications à l’aide du protocole TLS. La prochaine étape consiste à installer la passerelle Jigasi. Cette application côté serveur permet d’identifier les middlewares SIP utilisés et de faire le lien avec Jitsi Meet. Un mode moins automatisé de l’installation révèle l’importance de Prosody. Ce serveur de messagerie instantanée implémente le protocole XMPP pour faire le lien avec une autre brique essentielle : Jitsi Videobridge.

Prosody se connecte également à Jicofo. Ce composant côté serveur gère les sessions médias entre les participants. À chaque début de conférence, Jicofo va créer une connexion Jingle entre le terminal du participant et Videobridge. Concrètement, cela permet de déterminer qui parle et d'afficher les bons flux aux utilisateurs.

Un effort notable sur le chiffrement

Il faut comprendre que Jitsi dispose de deux niveaux d’architectures de communication. Avec l’approche pair-à-pair, deux utilisateurs peuvent communiquer ensemble en profitant d’un chiffrement de bout en bout. Le couple de protocoles DTLS-SRTP sert à chiffrer les échanges entre l’émetteur et le receveur, même si le signal traverse des composants réseau comme des serveurs TURN (via la brique ice4j, une implémentation du protocole ICE basée sur Java).

Pour des discussions avec un plus grand nombre de participants, l’application Meet repose entièrement sur Jitsi VideoBridge. Ce serveur s’appuie sur l’architecture de communication SFU (Selective Forward Units ou Unité de Renvoi Sélectif). Il assure la communication audio et vidéo dès la présence de trois utilisateurs. Les paquets sont chiffrés avec DTLS-SRTP, mais il y a une phase de chiffrement-déchiffrement une fois qu’ils atteignent Videobridge. Les responsables de Jitsi promettent que les paquets ne sont jamais stockés sur des systèmes persistants et ne sont présents que dans la mémoire vive, le temps de transmettre les flux aux participants.

Pour pallier ce défaut, l’équipe derrière Jitsi veut s’appuyer sur Insertable Streams, un projet lié à WebRTC. Cette API vise à apporter un chiffrement de bout en bout en intégrant des processus supplémentaires entre la phase d’encodage et de décodage des flux vidéo et leur mise à disposition dans des paquets RTP.
Les utilisateurs peuvent l’expérimenter depuis une application Chrome via la version gratuite de l’outil. Une personne qui entrerait dans une salle de conversation sans y être invitée ne verrait qu’une marée de pixels et n’entendrait rien. Malgré l’enthousiasme de la communauté, la jeunesse d’Insertable Streams demande d’attendre encore un peu avant de se faire un avis définitif sur le niveau de protection offert.

Conclusion

À condition de l’installer sur site ou dans un cloud européen, les opérateurs d’importance vitale peuvent s’essayer à Jitsi. D’ailleurs, l’éditeur français Jamespot en propose une version commerciale hébergée sur le cloud de 3DS Outscale. Plutôt complet, le service de visioconférence open source n’offre pas encore un chiffrement de bout en bout pour plus de deux participants (il peut en supporter jusqu’à 75).
La communauté cherche activement à améliorer le niveau de sécurité en s’appuyant sur le standard WebRTC. En France, Greenpeace, la Quadrature du Net et l’Université de Strasbourg (solidarité avec les anciens étudiants oblige) ont adopté la solution.

Pour approfondir sur Open Source