Selon sa documentation, Rustls (prononcez “rustles”) est une bibliothèque TLS moderne écrite en Rust qui vise à fournir un bon niveau de sécurité cryptographique. Il ne nécessite aucune configuration pour obtenir cette sécurité et ne fournit aucune fonctionnalité non sécurisée ou une cryptographie obsolète. Il dispose de nombreuses caractéristiques telles que l’authentification du serveur ECDSA ou RSA par les clients et l’authentification du serveur ECDSA ou RSA par les serveurs, tout en prenant en charge la vérification du certificat du serveur.
Cela signifie que vous n'avez pas besoin de fournir autre chose qu'un ensemble de certificats racines. La vérification de certificat ne peut pas être désactivée dans l'API principale. De l’autre côté, OpenSSL est une boîte à outils robuste, de qualité commerciale et complète pour les protocoles TLS (Transport Layer Security) et SSL (Secure Sockets Layer). C'est aussi une bibliothèque de cryptographie polyvalente. OpenSSL est sous licence Apache, ce qui signifie que vous êtes libre de l'obtenir et de l'utiliser à des fins commerciales et non commerciales, sous réserve de conditions de licence simples.
Dans sa série de tests des performances, Joseph Birr-Pixton dit avoir tenu compte de plusieurs points pour évaluer la manière dont les performances peuvent varier entre les bibliothèques TLS à savoir les performances de prise de contact et les performances globales. Les performances de prise de contact couvrent la rapidité avec laquelle de nouvelles sessions TLS peuvent être configurées. Quant aux performances globales, elles couvrent la rapidité avec laquelle les données d'application peuvent être transférées sur une session déjà configurée.
Les résultats des différents tests ont montré que Rustls était 10 % plus rapide lors de la configuration et de la négociation d'une nouvelle connexion au serveur, et entre 20 et 40 % plus rapide lors de la configuration d'une connexion client. Mais si les vitesses de négociation pour les nouvelles connexions TLS sont importantes, la majorité du trafic TLS repose sur la reprise des négociations déjà négociées. Ici aussi, Rustls a surclassé la bibliothèque OpenSSL, reprenant une connexion côté serveur entre 10 et 20 %, et entre 30 et 70 % plus rapide pour reprendre une connexion client.
De plus, Rustls se comportait mieux en termes de performances globales ou de vitesse de transfert des données via la connexion TLS. Birr-Pixton a déclaré que Rustls pourrait envoyer des données 15 % plus rapidement que OpenSSL et les recevoir 5 % plus rapidement. Enfin, précise-t-il, la bibliothèque Rustls n’utilisait que la moitié de la mémoire requise pour exécuter OpenSSL, ce qui représente un avantage majeur. Il a rappelé que de ce côté là, OpenSSL a très souvent été critiqué pour son empreinte mémoire importante et le grand nombre de problèmes de sécurité rencontrés dans son code.
Birr-Pixton a expliqué que du fait que Rustls soit codé en Rust, les problèmes de faille de sécurité sont en grande partie résolus par la conception du langage Rust lui-même. Le langage a été conçu de toute pièce pour éviter les bogues de sécurité liés à la mémoire. Pour résumer les résultats, on peut dire à peu près :
- Rustls est 15 % plus rapide pour envoyer des données ;
- Rustls est 5 % plus rapide pour recevoir des données ;
- Rustls est 20 à 40 % plus rapide pour configurer une connexion client ;
- Rustls est 10 % plus rapide pour configurer une connexion serveur ;
- Rustls est de 30 à 70 % plus rapide pour reprendre une connexion client ;
- Rustls est 10 à 20 % plus rapide pour reprendre une connexion au serveur ;
- Rustls utilise moins de la moitié de la mémoire de OpenSSL.
La manière dont les programmes écrits avec le langage de programmation Rust interagissent avec la mémoire est l’une des performances du langage les plus mises en avant. Ces dernières années, plusieurs entreprises ont été séduites par les performances du langage. Dans le mois de mars passé, l’équipe de développement de npm, le gestionnaire de paquets officiels de Node.js avait annoncé qu’elle utiliserait désormais Rust pour gérer les goulots d'étranglement liés au CPU au détriment de Go, C, C++ et Java.
L’équipe a mis de côté le Go, le Java, le C et le C++ à cause de leur gestion plus que compliquée de la mémoire. Pour Chris Dickinson, ingénieur chez npm Inc., le C et le C++ nécessitent une expertise en gestion de la mémoire afin d’éviter de faire des erreurs pouvant causer des problèmes catastrophiques. Ils constituent donc un choix avec un risque élevé pour écrire une application HTTP à l’endroit du Web. L’équipe de npm a également cité d’autres raisons qui sont à l’origine du choix de l’entreprise. Microsoft est également rentré dans lot dernièrement.
En effet, face à l’augmentation sans cesse du nombre de bogues de corruption de mémoire dans les codes C et C ++ des développeurs, Microsoft a récemment recommandé l’utilisation de Rust comme une approche proactive pour un code plus sécurisé. « Nous avons besoin d'un langage de programmation plus sûr pour la mémoire », a déclaré l’équipe de Microsoft Security Response Center (MSRC). Selon eux, le C++ manque de bons outils pour intégrer du code non sécurisé dans des abstractions sécurisées, alors qu’il est possible d’appliquer des pratiques de codage correctes au niveau local, il peut s'avérer extrêmement difficile de créer des composants logiciels en C ou C++ qui fonctionnent en toute sécurité.
Pour eux, Rust reste à l’heure actuelle le meilleur choix sur le marché. « Le langage de programmation Rust est actuellement le meilleur choix à adopter par l'industrie, dans la mesure du possible, en raison de sa capacité à écrire des programmes de niveau système de manière sûre pour la mémoire », a déclaré l’équipe du MSRC. L’on estime également que des navigateurs tels que Firefox et Brave utilisent actuellement des composants Rust, mais aussi que de grandes entreprises comme Cloudflare, Dropbox et Yelp l’ont également adopté pour les systèmes de production. Le projet Tor expérimente également Rust et Libra, une cryptomonnaie récemment lancée par Facebook l’utilisera également.
Si les grandes entreprises reconnaissent l’utilité du langage créé par Mozilla Research, sa croissance pourrait exploser dans les années à venir. Sur des plateformes de développeur telles que StackOverflow, l’on estime que Rust est devenu le langage de programmation le plus populaire dans le sondage auprès des développeurs de StackOverflow pour les cinq dernières années, en 2016, 2017, 2018 et 2019.
Source : Joseph Birr-Pixton
Et vous ?
Qu'en pensez-vous ?
Avez-vous déjà essayé Rustls ?
Pensez-vous qu'il soit plus rapide qu'OpenSSL ?
Voir aussi
L'équipe Microsoft Security Response Center recommande l'utilisation de Rust comme approche proactive pour un code plus sécurisé
L'équipe de npm choisit Rust pour gérer les goulots d'étranglement liés au CPU au détriment de Go, C, C++ et Java. Voici les raisons de ce choix
La version 1.25 de Rust est désormais disponible et apporte avec elle stabilisation et réorganisation dans l'écosystème du langage
La version stable de Rust 1.26 est maintenant disponible et est probablement la version la plus riche en termes de fonctionnalités depuis Rust 1.0