Comment ça marche ? Le protocole unique AdGuard VPN
Depuis des années, nous nous concentrons sur le développement de toutes sortes d'applications de blocage des publicités et d'extensions de navigateur. Et il y a deux ans, nous avons décidé de développer notre propre service VPN, une idée apparemment sortie de nulle part. En réalité, plusieurs considérations nous ont poussés à le faire.
- Les applications mobiles AdGuard avaient des problèmes de compatibilité avec les applications VPN. C'est pourquoi nous avons vu dans le développement d'un VPN interne la seule solution possible qui puisse garantir la compatibilité : avec un peu de magie, les deux applications sont capables de fonctionner ensemble comme un seul service VPN.
- Deuxièmement, le VPN semblait plus que pertinent à notre philosophie et à nos priorités.
- Et finalement, au cours des années de développement du logiciel AdGuard, nous sommes devenus de véritables experts du filtrage du trafic réseau. Cela nous a permis d'apporter quelque chose de nouveau au lieu de devenir un autre VPN flou.
Dès le début, nous avons décidé qu'AdGuard VPN aurait une différence clé par rapport à ses concurrents - nous développerions et déploierions un protocole VPN interne au lieu de choisir une solution toute faite.
Pourquoi se donner tout ce mal, vous pourriez demander. Dans cet article, nous allons vous dire pourquoi nous n'étions pas satisfaits des protocoles existants et avons créé le nôtre, et partager notre feuille de route.
Spoiler: le protocole AdGuard VPN est plus rapide que celui des services concurrents et difficile à detecter.
Mais d'abord il nous faudra plonger dans les aspects techniques pour déterminer les moments suivants :
- Comment fonctionne Internet
- Comment les protocoles VPN polulaires fonctionnent-ils
- Les limites des protocoles existants
- Les atouts du protocole AdGuard VPN
- Nos plans pour l'avenir
Comment fonctionne Internet
N'ayez aucune crainte : nous n'oserons pas aborder ici l'ensemble de l'Internet, mais nous couvrirons les principes fondamentaux de son fonctionnement. Toute communication sur Internet est basée sur la transmission de petits "paquets" de données d'un ordinateur à un serveur et vice-versa. Il existe plusieurs types de paquets, chacun ayant son utilité. Les règles d'encapsulation et de traitement des paquets s'appellent un protocole.
Protolocole IP
Vous avez sûrement déjà entendu parler de l'adresse IP, n'est-ce pas ? L'adresse IP fait partie du protocole IP, le mécanisme principal de transmission des données sur le réseau. Chaque paquet est composé de trois parties : les données elles-mêmes, les adresses IP de l'expéditeur et du destinataire.
Le destinataire sait qui a envoyé le paquet, et peut donc renvoyer des données. Cependant, le protocole IP "pur" est pratiquement inutilisé, mais deux autres protocoles basés sur celui-ci sont utilisés partout : TCP et UDP.
Protocole TCP
TCP est le " cheval de trait " principal de l'Internet. Lorsque vous ouvrez un site web, il est fort probable que le protocole TCP y est utilisé pour la transmission des données.
Un paquet TCP se compose de quatre parties :
- L'en-tête du paquet IP, y compris les adresses de source et de destination.
- Numéros de port de l'expéditeur et du destinataire. Ce numéro est nécessaire au système d'exploitation pour comprendre à quel programme envoyer le paquet pour traitement.
- Le numéro de séquence des paquets. Les paquets peuvent ne pas arriver au destinataire dans le même ordre qu'ils ont été envoyés. Les numéros de séquence permettent de rétablir l'ordre correct.
- Le type de paquet. Cette caractéristique est nécessaire pour mettre en œuvre la "livraison garantie", qui est abordée ci-dessous.
Quel que soit le réseau que vous utilisez, certains paquets envoyés risquent de se perdre en route. Le protocole TCP veille à ce qu'ils parviennent à leur destination : en réponse à chaque paquet envoyé, le récepteur envoie un petit paquet TCP confirmant la réception. Si l'expéditeur n'obtient pas de confirmation, il renvoie le paquet jusqu'à ce que la confirmation soit enfin reçue.
Protocole UDP
UDP est un autre protocole connu, bien que moins populaire, basé sur IP. Par rapport au protocole IP, la seule différence est que, hormis les données elles-mêmes et les adresses de l'expéditeur et du destinataire, il transmet des informations sur les numéros de port (voir la description des numéros de port dans la section TCP), ce qui distingue UDP d'IP. Comme vous pouvez le voir sur l'animation, le flux de paquets de données se déplace plus rapidement que dans le cas de TCP - et ce n'est pas étonnant, il n'y a pas de confirmation de livraison dans UDP. Contrairement à TCP, UDP ne garantit rien. Mais il n'envoie pas non plus de paquets de confirmation supplémentaires, ce qui le rend plus rapide.
Comment les protocoles VPN polulaires fonctionnent-ils
Lorsque vous envoyez une lettre ou un courriel à quelqu'un, vous pouvez faire abstraction du contenu, de l'en-tête, de la signature, mais pas de l'adresse du destinataire. L'internet fonctionne de la même manière : vous avez besoin d'une adresse IP pour envoyer des données.
Lorsque vous visitez un site web, votre adresse IP lui est visible, et en connaissant l'adresse IP, il n'est pas très difficile de déterminer l'emplacement de l'utilisateur. Un VPN permet d'acheminer vos données par une connexion cryptée depuis votre domicile, votre lieu de travail ou votre smartphone vers un autre point sur Internet, peut-être dans un autre pays, puis sur l'Internet public. Comme un lapin sournois plongeant dans un trou qui mène à l'autre bout du miroir.
Grâce au cryptage, vos données se voient attribuer une adresse IP à l'autre bout du tunnel au lieu de votre adresse personnelle ou professionnelle. Désormais, lorsque vous vous connectez à un serveur web, ce qu'il voit n'est pas l'adresse IP de votre domicile, mais celle d'une autre personne, appartenant au point d'extrémité du VPN. Ainsi, si vous allez sur un site web, vos données ne seront pas divulguées.
Vous le saviez déjà sans doute, mais un petit rappel ne ferait pas de mal, n'est-ce pas ? Maintenant nous pouvons nous plonger dans les détails techniques. Pour qu'un VPN fonctionne, il doit transmettre et crypter les données de votre appareil au serveur VPN et dans l'autre sens. Les règles de transmission et de cryptage de ces données sont appelées protocole VPN. Les protocoles VPN les plus courants sont OpenVPN, WireGuard et IPSec. Ils fonctionnent tous à peu près de la même façon et sont fonctionnellement très similaires, mais le diable se cache dans les détails (du cryptage et de l'établissement de la connexion).
Voyons comment ils fonctionnent. Disons que vous souhaitez consulter un site Web. Si vous avez activé un VPN, le serveur VPN sert d'intermédiaire entre vous et le site Web. Au départ, un paquet IP crypté est envoyé au serveur. Le serveur VPN le décrypte, modifie l'"adresse de l'expéditeur" (c'est-à-dire votre IP) et envoie le paquet au destinataire (c'est-à-dire le site Web). Cette opération est généralement effectuée en utilisant UDP comme transport, car elle est habituellement plus "rapide" puisqu'elle ne nécessite pas d'attente de confirmation.
Les limites des protocoles existants
Tous les protocoles VPN populaires (OpenVPN, WireGuard, IPSec etc.) sont unis par deux défauts :
- Ils peuvent être facilement détectés et bloqués au niveau du réseau.
- Si vous essayez de les "cacher", les performances chuteront.
Pour "dissimuler" l'utilisation du VPN, le flux de données est souvent "enveloppé" dans une connexion TCP, et parfois il est crypté en plus pour que le trafic ressemble à une connexion normale à un site web. Malheureusement, cette approche présente un inconvénient : à cause de l'utilisation du TCP, une confirmation supplémentaire de la livraison est nécessaire.
Donc, en utilisant n'importe quel protocole VPN populaire, nous faisons toujours face à un compromis : rapide mais facile à détecter, soit lent.
Les atouts du protocole AdGuard VPN
Nous avons développé le protocole AdGuard VPN en observant les inconvénients des protocoles précédents et en ne voulant pas y faire face. Quels sont donc ses points forts ?
- Il est presque impossible de le distinguer du trafic HTTPS normal, c'est-à-dire que la connexion au serveur VPN d'AdGuard ressemble exactement à la connexion à un site Web normal.
- Pour le cryptage, nous utilisons HTTPS (TLS), qui gère parfaitement cette tâche. C'est la méthode de cryptage la plus populaire dans le monde, et les bibliothèques qui l'implémentent sont constamment évaluées en matière de sécurité.
Certains protocoles VPN existants se chargent également de la tâche de chiffrement, et ils sont difficiles à détecter (de même que le fait d'utiliser un VPN). Mais cela se fait généralement au prix d'une vitesse réduite. Ce n'est pas notre cas, grâce à plusieurs solutions.
- Nous utilisons le protocole de transport HTTP/2, ce qui rend pratiquement impossible la détection du protocole VPN AdGuard tout en maintenant une vitesse élevée.
- Contrairement aux autres, le protocole AdGuard VPN opère avec des données et non avec des paquets. Cela signifie qu'AdGuard VPN établit un "tunnel" séparé pour chaque connexion, chaque flux HTTP/2 correspond à une connexion. AdGuard VPN transfère les données à travers ce tunnel. Cela nous permet d'accélérer l'opération en économisant sur les paquets de confirmation, car nous pouvons tamponner les données de plusieurs paquets en un seul avant de l'envoyer au serveur VPN (ou du serveur au client). Et moins il y a de paquets, moins il faut de confirmations.
Nos plans pour l'avenir
Passer vers HTTP/3 et QUIC
La première chose que nous avons l'intention de faire est de passer aux protocoles HTTP/3 et QUIC pour communiquer avec le serveur. HTTP/3 est la version la plus récente et la plus avancée de HTTP. Malheureusement, les nouveaux protocoles n'affecteront pas la vitesse lorsque la connexion est bonne et stable, mais leurs avantages se manifesteront lorsque la connexion sera moins bonne - par exemple, sur les appareils mobiles ou lors de la connexion à un réseau Wi-Fi public. Les nouveaux protocoles présentent plusieurs avantages évidents : ils ne provoqueront pas de retransmissions de paquets ni de queues HoLB ou Head of Line Blocking, et ils permettront également la migration des connexions. Sans être trop technique, leur avantage principal est l'amélioration déjà mentionnée de la qualité de la connexion dans des conditions non idéales.
Le protocole TCP et les autres protocoles qui l'utilisent (TLS, SSL, HTTP /1.1 et HTTP/2) existent depuis un certain temps et sont excellents dans leur domaine, mais il y a un problème : ils ont besoin de conditions quasi parfaites pour fonctionner correctement. Cela signifie qu'ils fonctionnent bien sur un réseau doté d'une connexion stable et de haute qualité (par exemple, un réseau Wi-Fi domestique). Mais si vous vous aventurez dans le monde extérieur avec ses réseaux mobiles, vous ne pouvez pas vous prémunir contre les signaux faibles, les connexions lentes et autres problèmes qui entraînent des pertes de paquets. Ces pertes conduisent aux retransmissions et HoLB. Même la 5G n'est pas toute-puissante, et la connexion sera pire dans les ascenseurs et les longues sections de métro entre les stations. Avec le VPN sur HTTP/3, le problème est résolu comme par magie : la connexion VPN ne sera pas interrompue, même si vous entrez dans un ascenseur, ou si le réseau change pour une autre raison.
Nous testons actuellement un prototype de cette nouvelle mise en œuvre. Il devrait être prêt d'ici quelques mois.
Оpen source
Si vous connaissez AdGuard depuis longtemps, vous savez déjà que beaucoup de nos produits sont open-source. Le concept de logiciel libre nous est cher car nous pensons que de tels projets aident les gens et contribuent au développement de la technologie. Mais notre approche est respectueuse de la confidentialité, c'est pourquoi nous ne rendons les produits open-source que lorsque cela est possible.
Nous allons rendre la mise en œuvre de notre protocole accessible au public dans un avenir proche. Malheureusement, pour l'instant, nous n'avons pas assez de temps pour préparer le projet, parce que c'est un grand travail. Mais nous espérons que d'ici la fin de l'année, nous pourrons trouver suffisamment de temps et publier le code des implémentations serveur et client.
Notre protocole est utilisé par toutes les applications mobiles et de bureau AdGuard VPN. Téléchargez l'un de nos produits (ou plusieurs !) maintenant et utilisez-le en sachant que vos données sont protégées de la manière la plus sûre. Et si vous le souhaitez, partagez vos impressions avec nous - dans la section des commentaires de l'article de blog ou sur les réseaux sociaux.