background
Savoir-faire Linux recrute
Nous travaillons à un monde plus libre
Rejoignez-nous

Joint the Ring!Je suis très emballé par une initiative dont Savoir-faire Linux est le fer de lance et qui vise le marché de la communication sécurisée. Le problème majeur, c’est essentiellement qu’il n’y a pas de réelle confidentialité possible tant qu’un serveur ou un service centralisé est en mesure de surveiller et mesurer vos communications. Big Brother surveille toujours! Or, les fournisseurs des solutions actuelles exigent que vous vous connectiez à leur service afin d’alimenter leur modèle de revenus tel que la vente de publicité ou de l’imposition de frais d’utilisation.

Fidèles à nos engagements originels de soutenir et développer le logiciel libre, Savoir-faire Linux développe une plate-forme de communication qui ne nécessite pas de serveur centralisé pour communiquer, laissant ainsi le contrôle et la confidentialité entre les mains de l’utilisateur.

En adoptant la technologie DHT (Distributed Hash Table ou « Table de hachage distribuée ») qui est utilisée par les réseaux de partage de fichiers comme BitTorrent, la plate-forme crée son propre réseau sécurisé sur Internet sur lequel elle distribue des fonctions d’annuaire, d’authentification et de chiffrement à tous les systèmes qui s’y connectent. C’est pourquoi nous l’avons appelée Ring.

Vous vous demandez peut-être maintenant :

« OK, ça a l’air cool mais concrètement, ça veut dire quoi pour moi? »

Jetons donc un œil à quelques-uns des avantages :

  • Comme il n’y a pas de serveur centralisé, personne ne peut vous suivre à la trace et la plate-forme ne sera jamais hors service.
  • Vous contrôlez à qui vous donnez votre clé d’identification; sans la connaître, impossible de vous joindre.
  • Ce logiciel libre est gratuit et placé sous licence GPL.
  • Il ne nécessite aucune configuration ni aucun mot de passe.
  • Tout est chiffré — la communication point à point est chiffrée pour le clavardage, la vidéoconférence et les appels vocaux avec le standard de chiffrement AES 128.
  • Il est disponible sur plusieurs plates-formes  : Linux, Mac, Windows, iOS, Android, et potentiellement plus.

Rejoignez Ring!Imaginez un logiciel libre de communication multimédia tellement ergonomique et immédiat qu’il ne requiert ni configuration spéciale, ni compte en ligne, ni mot de passe. Imaginez qu’il soit construit à partir des dernières technologies pair à pair (P2P), sécurisé avec les meilleurs standards de chiffrement, et que vous puissiez l’utiliser gratuitement, sans frais de licence, pour échanger de la voix et de la vidéo avec un ou plusieurs correspondants. Ce logiciel vient de naître. Il s’appelle Ring et en est à sa toute première version alpha.

Voici quelques précisions techniques recueillies auprès de Guillaume Roguez, consultant senior en logiciel libre chez Savoir-faire Linux et directeur du projet.

Comment Ring est-il né et quelles sont ses caractéristiques fondamentales?

Guillaume RoguezRing est l’évolution d’un ancien projet, SFLPhone, qui a mûri au cours des dix dernières années et qui reposait sur l’ancien concept des données centralisées. Le changement des technologies et du monde en général a été le cadre directeur de ce logiciel : nous avons complètement réécrit les couches profondes et décidé de le doter de caractéristiques si nouvelles et révolutionnaires que nous devions en changer le nom.

Le concept essentiel est la décentralisation. Ring implémente le DHT : une technologie permettant d’identifier et d’obtenir l’adresse IP de clients connectés à un système réparti en réseau. Du coup, il n’est plus nécessaire de passer par un serveur centralisé sous protocole SIP ou AIX2 pour localiser et appeler un correspondant — même si nous avons conservé ces options de protocole dans le logiciel pour ceux que cela intéresse.

En mode DHT, chaque compte Ring est identifié sur le réseau par une empreinte numérique personnelle communément appelée « hash », un code unique de 40 lettres et chiffres, lié à un certificat d’identification et à une paire de clés asymétriques pour le chiffrement de ses communications. Il s’enregistre lui-même en distribuant son identité non pas à un mais à des « serveurs » équivalents, chaque machine agissant en effet comme serveur d’identité pour les autres. Ces machines peuvent apparaître, disparaître et être remplacées par d’autres à tout moment. La table des hashs contenant l’ensemble des identités des utilisateurs connectés et leurs adresses IP à un instant donné est répartie entre toutes leurs machines.

Pour recourir à une analogie simple, disons que cela se passe un peu comme dans une rue d’un quartier résidentiel. On connaît ses voisins, mais pas les voisins des voisins de ses voisins. Pourtant, il sera facile de les trouver en interrogeant un premier voisin qui en interrogera un autre, et ainsi de suite. Différence notable : les réseaux numériques sont beaucoup plus rapides et efficaces que le bouche à oreilles. (rires)

Peut-on réellement parler de totale confidentialité?

Oui, dans la mesure où cette question est ramenée là où elle résidait auparavant, soit au niveau humain. Quand vous communiquez avec quelqu’un, vous le faites avec confiance envers cette personne. Ring fait en sorte que cette confiance soit conservée et fiable.

Technologiquement, le chiffrement est basé sur le système bien connu des clés asymétriques, avec clé publique et clé privée. Ring utilise cette dernière pour chiffrer les communications sortantes. La clé privée n’est stockée que sur votre machine et n’en sort jamais : vous seul en posséder la copie. Même si une entité quelconque interceptait les paquets de données que vous échangez, vous pouvez être certain qu’elles ne pourra pas en tirer profit.

Un autre aspect très important de la sécurité, c’est le fait que Ring est un logiciel libre sous licence GPLv3. Son code source réside sur les serveurs publics de Savoir-faire Linux. Celui de ses dépendances logicielles est disponible sur les serveurs publics de leurs communautés respectives. Bref, tout est libre, tout est accessible, tout est transparent!

L’utilisateur avancé peut d’ailleurs nous aider à corriger les problèmes : nous acceptons volontiers les contributions. On s’attend à ce que les gens nous fassent part de ce qui ne va pas afin qu’on le corrige, mais ils peuvent aussi le corriger eux-mêmes et nous soumettre leurs correctifs. C’est ce que l’on faisait déjà avec SFLPhone et cela fonctionne très bien.

Quels systèmes d’exploitation Ring supporte-t-il et quelle est sa feuille de route?

Fin avril, nous avons ouvert au public une version alpha, encore très embryonnaire, pour les systèmes 64 bits basée sur Linux (Ubuntu 14.04/14.10 et Fedora 20/21) et Mac OSX. Nous l’avons bien entendu déjà testée à l’interne et avec quelques geeks ici et là, mais nous devons vérifier si tout se passe bien sur un grand réseau distribué. On s’attend à recevoir beaucoup de commentaires et à devoir corriger quelques problèmes. C’est précisément le but de cette première version.

Par la suite, nous aborderons la phase bêta en y ajoutant des fonctionnalités plus avancées et avec deux objectifs principaux :

  • Premièrement, la fréquence. Nous voulons en effet être très proches des retours et des besoins de la communauté. Nous offrirons donc des mises à jour fréquentes.
  • Deuxièmement, l’interopérabilité. Nous allons travailler sur les plate-formes mobiles comme Android et, parallèlement, sur un portage Windows qui est déjà bien avancé.

Il est en effet dans la logique et les valeurs du logiciel libre de rendre nos outils accessibles au plus grand nombre de personnes possible. Nous avons donc développé Ring en gardant constamment à l’esprit le fait qu’il devait être portable sur un maximum d’architectures. On pense bien entendu aux ordinateurs de bureau et aux plate-formes mobiles, mais aussi (et peut-être même surtout) aux systèmes embarqués qui vont devenir, avec l’Internet des objets, des plate-formes très sensibles dans les années à venir.

» Propos recueillis par ring:6a8da1380eb39e06d76634944384022ca92da937

Adrien Béraud encryptedLe besoin de systèmes distribués publics efficaces se fait de plus en plus pressant alors que grandit chaque jour l’influence des géants du Net qui centralisent plus que jamais l’information et les communications. Un paradoxe, alors qu’Internet offre aux nœuds du réseau la possibilité inédite de se contacter directement, sans point de traitement centralisé.

C’est pour répondre à cette problématique que nous avons développé OpenDHT, une bibliothèque logicielle sous licence libre implémentant une table de hachage distribuée et intégrant un certain nombre d’innovations importantes. OpenDHT est en effet au cœur du système de communication décentralisé Ring.

Le DHT (table de hachage distribuée) est une classe de systèmes distribués permettant d’accéder, depuis tout nœud du réseau, à un dictionnaire partagé (paires clévaleur) dont les données sont réparties entre les participants. Les réseaux DHT actuellement les plus populaires, tel Mainline DHT (BitTorrent), sont utilisés pour le partage de fichiers de pair à pair. Sur ces réseaux, la clé est l’identifiant du fichier torrent, aussi appelé « lien Magnet », et les valeurs sont les adresses IP des seeders, c’est à dire les clients partageant le torrent.

OpenDHT

OpenDHT est un projet de réseau DHT léger et robuste en C++11 proposant une interface simple à utiliser pour les développeurs d’applications. Inspiré à l’origine de la bibliothèque DHT développée par Juliusz Chroboczek et utilisée, par exemple, par le client BitTorrent Transmission, OpenDHT inclus un certain nombre d’innovations importantes.

OpenDHT offre la possibilité de stocker tout type de données — pas seulement des adresses IP — avec une limite par valeur de 64 Ko. Il offre également une fonction d’écoute (listen), permettant à un nœud d’être informé des changements de valeurs concernant une clé. Le besoin de ces fonctionnalités cruciales pour le projet Ring nous ont poussé à créer OpenDHT, avec la contrepartie de rendre son protocole incompatible avec le réseau DHT Mainline de BitTorrent.

La fonction listen est par exemple utilisée dans Ring pour permettre de recevoir des appels ou des messages, même pour des ordinateurs situés derrière des NATs. En conjonction avec la technologie ICE, OpenDHT permet alors l’établissement de connections pair à pair de manière robuste.

OpenDHT est publié sur GitHub sous licence GPL version 3. Commentaires et correctifs sont les bienvenus. Un début de documentation est aussi disponible ici.

OpenDHT se veut simple à utiliser, réduisant ainsi le coût et la difficulté du développement des applications qui en tirent parti.

Ainsi, lancer un nouveau nœud sur le port local 4222, puis se connecter au réseau à travers un nœud connu est aussi simple que trois lignes de C++ :

dht::DhtRunner node; node.run(4222, dht::crypto::generateIdentity(), true);
node.bootstrap("bootstrap.ring.cx", "4222");

Stocker une valeur quelconque sur le réseau est alors possible en une unique ligne de code :

node.put("ma_clé", std::vector<uint8_t>(5, 10));

La clé utilisée sera alors le condensat SHA1 du texte ma_clé. La valeur sera une suite de 5 octets valant 10.

Récupérer par la suite cette valeur depuis un autre nœud sera alors aussi simple que :

node.get("ma_clé", [](const
std::vector<std::shared_ptr<dht::Value>>& values) { for (const auto& value :
values) std::cout << "Valeur trouvée: "<< *value << std::endl; return true;
});

Les DHT : un peu de théorie

Dans le type de réseau DHT le plus populaire (Kademlia), utilisé par OpenDHT, chaque nœud (programme participant) du réseau possède un identifiant unique uniformément distribué dans l’espace des identifiants — un espace de 160 bits, dans notre cas.

De même, chaque donnée stockée sur le réseau est caractérisée par un identifiant : sa clé. Les clés sont uniformément distribuées dans le même espace de 160 bits que les identifiants de nœud. Plusieurs valeurs peuvent partager une même clé.

L’opérateur binaire XOR (⊕) est défini comme l’opérateur de distance entre clés, ou entre clés et identifiants de nœud. Pour rappel, le résultat de XOR est vrai si les deux opérandes ont des valeurs booléennes distinctes. Ceci implique que le résultat du XOR de deux clés de 160 bits représente la « distance binaire » entre ces clés : A ⊕ A = 0 pour toute clé A. Pour deux clés distinctes A et B avec X = A ⊕ B, le nombre de bits à zéro au début de X sera égal au nombre de bits communs au début de A et B.

Cette propriété intéressante offre la possibilité de partitionner la table de routage de chaque nœud en utilisant un arbre binaire. Chaque nœud maintient à jour, en effet, une table de routage incluant principalement les nœuds voisins (au sens de l’opérateur de distance XOR introduit ci-dessus).

Fig. 1. Pour trouver le nœud R possédant les valeurs pour la clé H, le nœud S contacte A, le nœud plus proche de H dans sa table de routage. La réponse de A inclut l’adresse IP de B, maintenant le plus proche de H dans la table de S et qui est donc contacté, et ainsi de suite.

Une donnée, c’est-à-dire une paire clé-valeur (K, V), sera alors stockée sur les L nœuds les plus proches de la clé K (avec typiquement L=8). Tout nœud connaissant K pourra alors retrouver V par un algorithme itératif qui l’amènera à contacter des nœuds dont l’identifiant est de plus en plus proche de K (fig. 1).

Les requêtes incluent la clé K et la réponse de chaque nœud comprend une liste des autres nœuds connus les plus proches de K. La valeur V sera alors retrouvée en seulement O(log(N)) itérations, N représentant le nombre de nœuds sur le réseau.

Cryptographie

Tout comme Internet, les DHT publiques sont par nature des réseaux non-fiables. Ils impliquent de faire confiance à un grand nombre d’autres programmes au hasard sur le réseau pour stocker des données.

Plutôt que de tenter de rendre le protocole robuste à tout type de nœud malveillant, ce qui serait illusoire, l’approche d’OpenDHT est de considérer le réseau lui-même comme non digne de confiance et de construire par dessus une couche optionnelle de cryptographie à clé publique, utilisant l’infrastructure standard PKCS, et permettant de vérifier l’auteur et l’intégrité du message (signature) et de le chiffrer grâce aux certificats publiques publiés sur le réseau DHT.

Connaissant l’identifiant de la clef publique contact_id d’un contact, stocker sur le réseau DHT une donnée chiffrée pour ce contact est aussi simple que :

node.putEncrypted("ma_clé", contact_id, value);

La couche de cryptographie, ou couche d’identité, va alors récupérer, de manière transparente, le certificat du contact, utiliser la clef publique pour chiffrer la donnée, puis la stocker sur le réseau. Cette couche va, également de manière transparente, vérifier la signature des données signées reçues. Si la vérification échoue, la donnée n’est pas présentée à l’application. De même, seules les données chiffrées qu’il est possible de déchiffrer sont remontées à l’application.

Ring utilise ces opérations de cryptographie pour échanger de manière sécurisée les invitations, les initiations d’appels et messages privés. Le réseau est alors vraiment utilisé comme un point de rencontre public.

Odoo Québec MeetupLe 29 avril, lors du Meetup Odoo Québec, Pierre Lamarche et David Dufresne présenteront pour la première fois en public les nouveaux modules de paie d’Odoo localisés pour le Québec et le Canada. Disponibles pour la version 7.0 de la plate-forme ERP open-source, cette ensemble de modules spécialisés permettent désormais à toute petite ou moyenne entreprise du Québec de gérer la paie de ses employés de A à Z, du calcul à l’émission des fiches de paie en passant par les écritures comptables associées.

Un projet de stage bien encadré

Pierre Lamarche« Odoo comprenait déjà des modules standards pour faire la gestion de la paie, explique Pierre Lamarche, consultant fonctionnel chez Savoir-faire Linux, mais ils n’étaient pas du tout adaptés à la réalité québécoise. On se les faisait souvent demander et c’était un réel problème. Alors, on a profité de l’embauche de David, un stagiaire au profil très particulier, pour les développer. »
David Dufresne

Employé à notre bureau de Québec depuis septembre dernier, David Dufresne détient en effet un baccalauréat en administration des affaires, avec une spécialisation en comptabilité, et il prépare un second baccalauréat en informatique. Il avait donc le profil idéal pour s’attaquer à ces modules sous la supervision de nos experts techniques Odoo et de nos consultants fonctionnels.

« Ça a été un projet de stage vraiment passionnant, dit-il. Les seules spécifications du Québec et du Canada prennent quelque 30 000 lignes, incluant les gabarits et la traduction. Au total, j’ai travaillé sur ce projet un bon millier d’heures, car outre l’écriture du code et de la documentation, nous avons réalisé une centaine de tests unitaires afin d’assurer la stabilité du code. »

David a également appris le fonctionnement d’une communauté internationale de logiciel libre, puisque les nouveaux modules ont été contribués par l’entremise de la Odoo Community Association, dont notre directeur Qualité, Environnement et Sécurité et chef de pratique Odoo, Maxime Chambreuil, est l’actuel vice-président.

Un système de gestion de la paie autorisé par Revenu Québec

Grâce à cette contribution, Odoo est le seul logiciel libre de gestion ayant reçu une autorisation officielle de Revenu Québec pour l’émission des fiches de paie. « Les fonctionnaires du ministère ont mis du temps à nous donner accès aux spécifications de la paie, se rappelle Pierre, car ils ne comprenaient pas que l’on fasse tout ce travail sans vendre le logiciel. C’était nouveau pour eux. Nous leur avons expliqué le modèle d’affaires de l’open-source, qui nous permet de gagner notre vie en offrant simplement des services à valeur ajoutée d’installation, de configuration, d’intégration et de support, bien que le logiciel lui-même et l’accès à son code soient gratuits. »

Lors de la présentation du 29 avril (de 17h30 à 19h), Pierre et David présenteront les modules, de leur installation à leur fonctionnement détaillé, tant au niveau de la configuration des employés, des contrats, des taux horaires, etc., qu’au niveau de l’utilisation finale. Lors de la discussion, ils présenteront la feuille de route pour la suite des choses, qui comprend notamment une future mise à jour pour la version 8 d’Odoo/OpenERP.

Programme de la démo

  • Installation des nouveaux modules de la paie (en cours de révision).
  • Définition des règles précises pour chaque employé ou catégorie d’employés: création du contrat contenant un ou plusieurs « emplois », des taux horaires, des cotisations sociales ou professionnelles, un salaire annuel, etc.
  • Ajout de feuille(s) de temps selon les tâches prévues au contrat
  • Calcul et création automatique d’une fiche de paie: on définit la période, on appuie sur un bouton et le logiciel se charge du reste en fonction des paramètres enregistrés, incluant les bons prélèvements.
  • Présentation du traitement par lot (batch) des fiches de paie.

Il ne reste plus qu’à les vérifier en y intégrant au besoin des corrections manuelles, puis à les valider et à les imprimer. En arrière, toutes les écritures comptables sont créées et sauvegardées automatiquement.

Informations complémentaires

Prix COUP DE CŒUR TIIl y a quelques jours, le Réseau ACTION TI annonçait que, pour la première fois en 2015, un prix du public serait remis lors du Gala des OCTAS 2015, le 28 mai prochain : le prix COUP DE CŒUR TI. Parmi les 77 organisations nominées figure le Centre collégial des services regroupés (CCSR), qui lançait récemment Véga. Cette application Web de dernière génération permet à ses abonnés de gérer efficacement les données sur les produits dangereux entreposés par leur organisation, conformément aux normes et lois en vigueur.

En tant que fournisseur ayant développé ce projet, Savoir-faire Linux vous suggère fortement — sans aucun parti-pris LOL — de voter pour le Centre collégial des services regroupés avant le 27 mai. Comme vous allez le constater en lisant ce qui suit, ce ne sont pas les bonnes raisons qui manquent, que ce soit pour l’amour du logiciel libre, du langage Python, des applications Web utiles et bien faites, des normes de sécurité publique, de l’éducation supérieure ou de la mutualisation!

Un peu d’histoire*

Centre collégial de services regroupésEn 2001, le CCSR met sur pied une banque de fiches signalétiques de produits contrôlés, Reprofics, pour en centraliser la mise à jour. Reprofics est d’abord accessible aux abonnés par l’entremise d’un logiciel propriétaire. Au tournant de 2008, ce logiciel n’est plus développé, ni supporté. De nombreux établissements continuent néanmoins de l’utiliser.

Des démarches sont entreprises pour l’adoption d’un nouveau logiciel, mais aucun des produits analysés ne convient aux utilisateurs. Le Cégep régional de Lanaudière amorce alors le développement d’un logiciel d’inventaire des produits contrôlés sous la supervision d’un chimiste, en collaboration avec des stagiaires. Au terme de ce développement, le Cégep propose au CCSR d’intégrer la banque de fiches au logiciel d’inventaire : la première version de Véga voit le jour.

Cette première application Web réalisée en .NET par des étudiants permet de répertorier les produits se trouvant dans un local donné et de les relier aux fiches signalétiques de Reprofics. Une autre interface permet de consulter la banque de fiches. Des fonctionnalités s’ajoutent au fil des ans (impression d’étiquettes en quatre formats, intégration de plans en PDF, aide à la préparation de laboratoires).

En 2012, Véga n’est cependant utilisée que par quelques établissements en phase pilote et n’est toujours pas commercialisable. En raison de son développement par des stagiaires sur une courte période, de la multiplication des modules et du manque de cohérence du code, faire évoluer Véga devient difficile, tant en ce qui a trait à l’apparence et à l’adaptabilité (téléphone, tablette) qu’à l’optimisation des fonctionnalités.

Le CCSR, propriétaire de Reprofics, rachète alors les droits de Véga au Cégep régional de Lanaudière et entreprend la refonte de l’application dans le but de la faire évoluer. Il met sur pied un comité d’utilisateurs responsable de proposer et de prioriser les adaptations et les développements.

Véga, la refonte

La refonte de Véga a été réalisée de janvier 2013 à janvier 2015 en collaboration avec Savoir-faire Linux. La nouvelle solution Web, développée en python avec le cadre d’applications Django, maintient et améliore les fonctionnalités existantes, en plus d’en proposer de nouvelles :

  • Banque de fiches – Accès aux fiches sommaires normalisées réalisées à partir des fiches d’origine (PDF), facilitant la tâche des utilisateurs des produits contrôlés en regroupant sur une même feuille toute l’information relative à l’identification du produit, à sa classification SIMDUT, à l’équipement de protection individuelle requis lors de l’utilisation, à sa manutention, à son entreposage et aux premiers soins à donner en cas d’urgence; ◤vidéos◥
  • Étiquettes – Production d’étiquettes conformes à la loi pour chaque produit dans tout format d’étiquette possible; (voir figure 1 plus bas)
  • Inventaire – Gestion, dans un emplacement accessible à tout intervenant autorisé, de l’inventaire des produits dangereux reliés aux fiches signalétiques des produits; ◤vidéos◥
  • Mesures d’urgence – Centralisation des plans de contingence concernant les produits dangereux et des plans détaillés des bâtiments, possibilité de les imprimer à même l’interface Web et de les envoyer sous forme de fichiers PDF aux services d’urgence, possibilité de créer un compte d’accès spécial permettant aux intervenants externes de récupérer en tout temps l’information et les plans les plus récents.
  • Mobilité et consultation multi-plateformes – Prise d’inventaire et gestion des fiches signalétiques et accès facilités par l’usage de tablettes et de téléphones intelligents.
  • Accès en mode consultation – Accès direct à partir de n’importe quel poste informatique d’une organisation membre (filtre par adresses IP), une fonctionnalité appréciée des professeurs et étudiants.

En conclusion, Véga est un projet numérique novateur qui tire parti des technologies de l’information afin d’améliorer l’efficacité et la transparence de la gestion des produits dangereux au sein des organisations. Le recours aux technologies ouvertes python et Django donne au CCSR le contrôle du code et de la propriété intellectuelle et assure le développement futur de l’application en fonction de l’évolution des besoins des utilisateurs, sans frais de licence et sans dépendre d’un fournisseur.

Image

Figure 1 – Exemple de formats d’impression d’étiquettes

* Ce texte de présentation du projet Véga est une reprise de celui qui a été présenté au jury des OCTAS par le CCSR.