Orange voit rouge
EDIT : Archive.org n'a eu le temps de mirrorer qu'une version obsolète de siproxd_orange souffrant d'un bug bloquant au login. Ce n'est pas la peine d'essayer de le faire marcher et je ne répondrai pas aux mails ou commentaires à ce propos.
C'est avec peine et regret que j'ai pris la décision de suspendre pour une durée indéterminée tous les liens de téléchargement de siproxd_orange, ainsi que l'accès à son dépôt BitBucket.
Je fais en effet l'objet de pressions de la part d'Orange visant à me faire cesser le développement et la diffusion de siproxd_orange. Après avoir consulté plusieurs personnes dont un avocat spécialisé en droit d'auteur, j'ai estimé plus prudent d'abandonner la diffusion de ce projet.
Je tiens d'abord à remercier toutes les personnes qui ont manifesté leur intérêt pour siproxd_orange, que ce soit en le téléchargeant, en postant des liens vers ce blog sur d'autres sites, en commentant sur les nombreux billets à ce sujet ou en rapportant des bugs. Mais je tiens aussi à ajouter que cela ne signifie aucunement la fin de l'aventure.
Ma motivation : l'interopérabilité
Ma motivation principale était celle d'utiliser un PBX Asterisk sous Linux sur ma ligne Livebox.
La solution la plus simple était d'utiliser l'interface analogique en enfichant une carte FXO/FXS dans la machine, mais cette solution n'est pas sans lacunes. En effet, la Livebox ne signale pas l'état décroché ou raccroché de la ligne à l'aide de signaux électriques. Ce défaut peut entraîner des problèmes potentiellement graves : par exemple, sans hacks à base de « busydetect », le PBX maintient la ligne occupée indéfiniment lorsque la personne à l'autre bout de la ligne raccroche en premier.
En voulant écrire des scripts de supervision Livebox pour Nagios, je suis tombé sur une interface qui exposait une partie des paramètres SIP utilisés par la box : proxy SIP sortant, login, etc., mais bien évidemment pas de mots de passe.
J'ai ensuite constaté que l'application Livephone pour Windows s'enregistrait directement auprès des serveurs SIP d'Orange, à condition de lui fournir les identifiants de l'espace client Orange.
J'ai alors décidé de creuser plus loin afin de savoir quels étaient les identifiants SIP utilisés pour s'authentifier auprès du proxy SIP Orange. Il s'avère que le client SIP officiel n'utilise aucun mot de passe, mais obtient un des secrets nécessaires pour l'échange RFC 2617 (authentification HTTP Digest) par une méthode totalement propre à Orange. Ces secrets étaient impossibles à obtenir sans décompiler l'application d'origine. Impossible donc d'exploiter sa ligne SIP sans autre chose que les applications proposées par Orange.
C'est en modifiant le processus d'authentification qu'Orange cassait l'interopérabilité avec les autres implémentations SIP conformes à la RFC 3261, empêchant ceux-ci de s'enregistrer directement auprès de l'infrastructure d'Orange.
Je m'inscrivais donc dans une double démarche d'interopérabilité : la possibilité d'utiliser un terminal SIP « RFC 3261 » avec ma ligne téléphonique comprise dans l'abonnement que je paye d'une part, et la réimplémentation des extensions propriétaires d'Orange sous Linux et FreeBSD d'autre part.
L'exception de décompilation
C'est dans cette démarche d'interopérabilité que j'estimais être en droit de me prévaloir des dispositions de l'article L122-6-1 du Code de la propriété intellectuelle, qui dispose entre autres que :
IV. La reproduction du code du logiciel ou la traduction de la forme de ce code n'est pas soumise à l'autorisation de l'auteur lorsque la reproduction ou la traduction au sens du 1° ou du 2° de l'article L. 122-6 est indispensable pour obtenir les informations nécessaires à l'interopérabilité d'un logiciel créé de façon indépendante avec d'autres logiciels, sous réserve que soient réunies les conditions suivantes :
1° Ces actes sont accomplis par la personne ayant le droit d'utiliser un exemplaire du logiciel ou pour son compte par une personne habilitée à cette fin ;
2° Les informations nécessaires à l'interopérabilité n'ont pas déjà été rendues facilement et rapidement accessibles aux personnes mentionnées au 1° ci-dessus ;
3° Et ces actes sont limités aux parties du logiciel d'origine nécessaires à cette interopérabilité.
Les informations ainsi obtenues ne peuvent être :
1° Ni utilisées à des fins autres que la réalisation de l'interopérabilité du logiciel créé de façon indépendante ;
2° Ni communiquées à des tiers sauf si cela est nécessaire à l'interopérabilité du logiciel créé de façon indépendante ;
3° Ni utilisées pour la mise au point, la production ou la commercialisation d'un logiciel dont l'expression est substantiellement similaire ou pour tout autre acte portant atteinte au droit d'auteur.
Le seul aspect qui posait vraiment problème, c'était la question de savoir si j'avais le droit de mettre à disposition le code source de siproxd_orange, qui contenait du coup des informations d'interopérabilité obtenues par décompilation. J'étais en outre obligé de diffuser le code source, car siproxd est sous licence GPL et son système de plugins fonctionne par édition de liens dynamiques. Mais les jurisprudences autour de l'exception de décompilation sont rares et il incomberait à moi de prouver que mon travail satisfaisait toutes les conditions pour me prévaloir de cette exception, ce qui n'est pas certain. L'article de François Pellegrini à ce propos est une lecture intéressante.
J'avais donc prédit avec justesse que la réalisation de ce plugin pour siproxd était « à la limite de la légalité ». La question de savoir si mon travail était licite ou illicite était ténue.
J'ai pris des risques en proposant siproxd_orange ici. J'aurais pu faire le choix de continuer malgré les pressions et, si nécessaire, me défendre au tribunal. Mais dans le pire cas, je risquerais de perdre plus que juste la mention « néant » dans mon casier judiciaire.
Conclusion
Je suis vraiment triste de devoir prendre ce genre de décisions. Je suis triste à l'idée de décevoir le grand nombre de personnes qui semblaient intéressés par ce projet. Mais je suis surtout triste de devoir prendre des décisions contraires à mes valeurs de curiosité scientifique et de partage du savoir.
Il s'agissait de mon plus gros projet de rétroingénierie jusqu'à maintenant. Même en mettant hors ligne les archives des sources de siproxd_orange, je n'accepterai pas l'idée d'avoir sacrifié tous ces week-ends, toutes ces soirées et toutes ces pages de mon cahier de brouillon en vain.
L'étape d'après serait d'obtenir les informations nécessaires à l'interopérabilité par une autre voie que la décompilation, par une méthode qui m'autoriserait à les publier. Je n'en dirai pas plus ; je sais désormais que des salariés d'Orange ouvertement hostiles à ce projet me lisent.
En tout cas, je n'ai pas dit mon dernier mot.