Rustls, une bibliothèque TLS écrite en Rust, surclasse les performances d'OpenSSL,
Selon son développeur

Le , par Bill Fassinou

74PARTAGES

8  0 
Dans une série de tests réalisés par Joseph Birr-Pixton, développeur de la bibliothèque TLS Rustls, il a remarqué que les performances de cette dernière surpassaient celles d’OpenSSL sur plusieurs niveaux. Rustls est une bibliothèque TLS open source légèrement connue du grand public, disponible sous les licences Apache 2.0, MIT et ISC, mais OpenSSL quant à elle est une bibliothèque bien connue et représente le standard de l'industrie, dans presque toutes les grandes catégories.

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

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 21/07/2019 à 8:21
Citation Envoyé par Neckara Voir le message
C'est bien beau de dire qu'on est plus rapide, mais est-ce pour le même niveau de sécurité ?

Notamment est-il protégé contre les attaques par canaux cachés ? Est-il protégé contre des injections de fautes/bit flipping ?
En ce qui concerne la sécurité logique, les développeurs ont expliqué que c'était au moins du même niveau que OpenSSL, vu que à la base c'est un portage de BorringSSL qui est lui même un fork de OpenSSL visant a améliorer sa sécurité. Ils ont même corrigé des problèmes lors du portage.

Après le langage Rust apporte des garanties techniques particulièrement au niveau de la gestion mémoire. Des bugs comme ceux qui ont produit la tristement célèbre faille Heartblead sont impossibles en Rust.

Citation Envoyé par mh-cbon Voir le message
c'est un peu léger comme explication. La news laisse penser qu'il suffirait d'écrire du rust pour obtenir un code plus performant.

il semble pourtant que le langage n'est pas plus magique qu'un autre

https://gist.github.com/jFransham/36...d25121454acec1

le blog parle de quelques alloc et copies en moins, mais sans plus de détails.
Oui c'est pas le langage lui même qui explique de tel gains mais le fait qu'il y ait eu des optimisations lors du portage. Ceci dit le Rust reste un langage très performant, au même niveau que C ou C++.
4  0 
Avatar de SimonDecoline
Membre expert https://www.developpez.com
Le 21/07/2019 à 9:38
Citation Envoyé par Uther Voir le message
Oui c'est pas le langage lui même qui explique de tel gains mais le fait qu'il y ait eu des optimisations lors du portage. Ceci dit le Rust reste un langage très performant, au même niveau que C ou C++.
Complètement d'accord. Rust apporte beaucoup de sureté pour la gestion mémoire tout en restant performant. Mais ici, c'est certainement la réécriture du projet qui apporte un gain. D'ailleurs aprés Heartbleed, les dev de openbsd ont forké en libressl et ils ont commencé par enlever 90k lignes de code obsolète, faire une review complète de la gestion mémoire, activer et corriger des warnings de compilation...
4  0 
Avatar de Neckara
Expert éminent sénior https://www.developpez.com
Le 20/07/2019 à 14:25
C'est bien beau de dire qu'on est plus rapide, mais est-ce pour le même niveau de sécurité ?

Notamment est-il protégé contre les attaques par canaux cachés ? Est-il protégé contre des injections de fautes/bit flipping ?
3  0 
Avatar de mh-cbon
Membre extrêmement actif https://www.developpez.com
Le 20/07/2019 à 15:02
c'est un peu léger comme explication. La news laisse penser qu'il suffirait d'écrire du rust pour obtenir un code plus performant.

il semble pourtant que le langage n'est pas plus magique qu'un autre

https://gist.github.com/jFransham/36...d25121454acec1

le blog parle de quelques alloc et copies en moins, mais sans plus de détails.
3  0 
Avatar de walfrat
Membre actif https://www.developpez.com
Le 24/07/2019 à 9:55
Côté sécurité, il faut voir quand ça aura vécu suffisamment longtemps.

Côté performance, s'ils ont pu effectivement améliorer le code qu'ils ont repris c'est bien. L'inverse aurait été un peu décevant (je met un peu, car ce domaine du développement n'est quand même pas le plus facile).

En outre puisque les améliorations de perfs ne concernent pas le language, cela veut dire que les autres implémentation pourront le reprendre, s'ils sont définitivement certain que cela n'introduit pas de problème de sécurité.
0  0 

 
Firefox empêche désormais les sites Web et les annonceurs de vous suivre
Sondage : quels sont les langages de programmation que vous détestez le plus en 2019 ? Pourquoi ?
Apprendre à programmer une application Web personnalisée PHP et MySQL sur IBM Cloud, un tutoriel proposé par IBM
Apprendre la couverture de code .NET avec JetBrains dotCover, un tutoriel de Maarten Balliauw
Contacter le responsable de la rubrique Développement Web

Partenaire : Hébergement Web