🛠️ Serveur et Open Source


Olvid utilise-t-elle un serveur ?

Olvid s’appuie sur un serveur afin de permettre une transmission asynchrone efficace des messages. Concrètement, cela permet Ă  un message d’être « mis en attente Â» jusqu’à ce que le destinataire ait de la connexion. Le message lui est alors immĂ©diatement envoyĂ© et est ensuite supprimĂ© de notre serveur. Dans la majeure partie des cas, le message est supprimĂ© quasiment immĂ©diatement après avoir Ă©tĂ© reçu.

Cette architecture prĂ©sente-t-elle un risque en termes de sĂ©curitĂ© ?

Il est important de noter que Olvid chiffre l’intĂ©gralitĂ© des communications de bout-en-bout. Les messages, en particulier, sont donc chiffrĂ©s sur le tĂ©lĂ©phone de l’envoyeur, pour n’être dĂ©chiffrĂ©s que sur le tĂ©lĂ©phone du destinataire. Ils restent intĂ©gralement chiffrĂ©s pendant leur transit d’un tĂ©lĂ©phone Ă  l’autre. Le chiffrement mis en Ĺ“uvre par Olvid concerne l’intĂ©gralitĂ© des donnĂ©es et mĂ©tadonnĂ©es, Ă  l’exception de la clĂ© publique du destinataire (ce qui est le strict minimum pour permettre au serveur de « router Â» efficacement les messages vers le bon destinataire). Notez que la clĂ© publique de l’envoyeur n’apparaĂ®t pas dans le message envoyĂ©, toutefois, son adresse IP est visible par le serveur (comme pour n’importe quel service sur internet via TCP/IP). Olvid fonctionnera très bien derrière un VPN ou via Tor si vous souhaitez masquer cette dernière.

Les protocoles cryptographiques mis en Ĺ“uvre par Olvid ont Ă©tĂ© conçus dans un modèle de sĂ©curitĂ© exigeant. En particulier, les garanties de confidentialitĂ© doivent ĂŞtre maintenues y compris dans la situation oĂą le serveur d’Olvid serait contrĂ´lĂ© par un adversaire. Pour dire les choses simplement : lorsque vous communiquez avec Olvid, vous n’avez pas Ă  faire confiance au serveur par lequel transitent les messages. MĂŞme dans la situation oĂą il serait malveillant, les garanties de sĂ©curitĂ© d’Olvid sont maintenues.

Peer-to-peer vs. serveur de distribution centralisé

Certaines messageries instantanées ont fait le choix de décentraliser la distribution des messages. Cette décentralisation n’apporte pas une sécurité comparable à un chiffrement à l’état de l’art, et doit donc toujours être accompagnée d’un chiffrement de bout-en-bout. En revanche, une décentralisation de la distribution peut garantir une certaine résilience aux pannes ou aux dénis de service. Mais ceci s’accompagne généralement d’une expérience utilisateur dégradée (latence pour recevoir les messages, bande passante limitée).

Olvid en multi-serveurs

Aujourd’hui, Olvid utilise un seul serveur pour relayer les messages. Ceci dit, l’architecture actuelle a déjà été conçue de façon à pouvoir supporter plusieurs serveurs (un peu à l’image du mail). S’il ne s’agit pas de peer-to-peer, à terme, chaque groupe d’utilisateurs pourra avoir son propre serveur.

Nous réévaluons aussi régulièrement les possibilités vers une architecture multicloud.

Le code du serveur est-il open source ?

L’intégralité du code des clients est open-source. Ce code, une fois compilé, permet de produire des clients iOS et Android qui pourront communiquer avec notre serveur en production (le même que celui utilisé par les applications clients téléchargées sur l’App Store ou Google Play), et donc d’entrer en relation et de discuter avec tous les autres utilisateurs d’Olvid.

Pour le moment, nous avons nĂ©anmoins choisi de ne pas publier le code source du serveur par lequel transitent les messages et ce, pour quatre raisons :

Le modèle de sécurité d’Olvid vous protège de son serveur

Pour les raisons donnĂ©es ci-dessus, le serveur d’Olvid ne joue aucun rĂ´le dans la sĂ©curitĂ© des communications. Cet aspect distingue Olvid de l’immense majoritĂ© des autres messageries chiffrĂ©es de bout-en-bout, qui s’appuient gĂ©nĂ©ralement sur un « tiers de confiance Â» pour permettre aux utilisateurs d’entrer facilement en communication les uns avec les autres. Ce tiers peut prendre plusieurs formes, les plus classiques Ă©tant une blockchain ou un annuaire centralisĂ© permettant Ă  l’opĂ©rateur de la solution d’associer une donnĂ©e privĂ©e de l’utilisateur (numĂ©ro de tĂ©lĂ©phone, adresse email, etc.) Ă  son identitĂ© numĂ©rique. Ce tiers de confiance intervient alors Ă  chaque dĂ©but d’interaction entre deux utilisateurs et son rĂ´le est de garantir l’intĂ©gritĂ© de l’échange de leurs identitĂ©s numĂ©riques. Si ce tiers est malveillant, c’est la sĂ©curitĂ© de toute l’architecture qui est mise Ă  mal.

Toute messagerie qui aurait fait le choix de centraliser la sécurité au sein d’un annuaire unique qu’elle contrôle a donc intérêt à en publier le code.

Le cas d’Olvid est diffĂ©rent : nous avons fait le choix de ne jamais imposer un tiers de confiance unique Ă  nos utilisateurs, considĂ©rant que cela reprĂ©senterait un risque trop important en termes de sĂ©curitĂ©. Par ailleurs, cela permet Ă  Olvid de fonctionner sans avoir Ă  demander/connaĂ®tre la moindre donnĂ©e personnelle sur ses utilisateurs. Rendre le code open source n’aurait pas d’impact sur la sĂ©curitĂ©. Ce qui protège les utilisateurs d’Olvid, ce sont les protocoles cryptographiques mis en Ĺ“uvre, intĂ©gralement publiĂ©s (et donc auditables) dans les codes sources des applications clientes iOS et Android.

Le code source actuel est aussi en grande partie de la configuration AWS

Le serveur de distribution de messages d’Olvid est aujourd’hui hébergé par AWS. Nous utilisons une architecture entièrement serverless qui nous a notamment permis de garantir une excellente qualité de service jusqu’à aujourd’hui. Cette architecture permet à nos équipes techniques de libérer du temps pour développer les applications clientes (au sein desquelles se situe l’intelligence d’Olvid) plutôt que de passer du temps en administration serveurs (un sujet particulièrement complexe et chronophage).

Si cette architecture est parfaitement adaptĂ©e dans le cadre d’une messagerie grand public pouvant servir plusieurs centaines de milliers d’utilisateurs (voir plus), elle n’est clairement pas pratique pour dĂ©ployer un serveur « personnel Â» dont l’objectif est de n’en servir que quelques centaines. Le code source du serveur actuel ne serait donc pas très utile pour celles et ceux qui dĂ©sirent dĂ©ployer leur propre serveur.

Le serveur d’Olvid est en évolution permanente

Olvid propose rĂ©gulièrement de nouvelles fonctionnalitĂ©s. Il est alors important de permettre aux utilisateurs ayant mis Ă  jour l’application de pouvoir en profiter au plus vite, sans pour autant les empĂŞcher de communiquer avec leurs contacts qui n’ont pas encore mis Ă  jour. Le serveur joue un rĂ´le important dans ce mĂ©canisme, en Ă©tant capable de gĂ©rer aussi les anciennes versions de l’application. Ă€ noter : le serveur Olvid actuel est encore utilisable avec les premières versions publiques d’Olvid (sorties Ă  l’étĂ© 2019).

En pratique, lorsque de nouvelles fonctionnalités sont développées dans Olvid, le serveur est mis à jour avant la publication de ces mises à jour sur les stores. Si ce n’était pas le cas, l’application pourrait ne plus être fonctionnelle. L’API du serveur est donc en évolution permanente. Tant qu’elle n’est pas stabilisée, nous ne pouvons pas encourager nos utilisateurs à gérer leur propre serveur puisqu’ils pourraient perdre l’usage d’Olvid à chaque mise à jour des apps. Pire, tous leurs contacts pourraient être impactés, donnant alors l’impression que c’est l’application qui ne fonctionne pas.

Le risque de déni de service

Comme nous l’avons expliqué, le serveur de distribution des messages d’Olvid ne joue aucun rôle dans la sécurité. En revanche, il est central pour la qualité de service. Il est donc important de le protéger au mieux contre les dénis de service, ou autres attaques sur la disponibilité.

Ouvrir le code du serveur présente alors un risque important, car il donnerait à des personnes mal intentionnées tous les outils nécessaires pour cibler au mieux leurs attaques contre ces serveurs.

Sera-t’il open source un jour ?

Oui, quand les API seront stabilisĂ©es et que nous serons prĂŞts. Mais pour toutes les raisons expliquĂ©es prĂ©cĂ©demment, ça ne sera probablement pas la version AWS que nous ouvrirons, mais plutĂ´t une version « standalone Â» (par exemple un Docker), facile Ă  dĂ©ployer et plus adaptĂ©e pour un « petit Â» nombre d’utilisateurs (quelques centaines).

Vers une architecture multicloud

Nous réévaluons régulièrement les possibilités afin d’être en mesure de proposer une offre infrastructure et serveurs multicloud. Notre objectif est de privilégier, quand cela sera possible, des solutions labélisées SecNumCloud (ou une qualification européenne d’un niveau au moins équivalent).