IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

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


Sujet :

Sécurité

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Dirigeant
    Inscrit en
    Juin 2016
    Messages
    3 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Dirigeant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2016
    Messages : 3 160
    Points : 66 257
    Points
    66 257
    Par défaut Rustls, une bibliothèque TLS écrite en Rust, surclasse les performances d'OpenSSL
    Rustls, une bibliothèque TLS écrite en Rust, surclasse les performances d'OpenSSL,
    selon son développeur

    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.

    Nom : rustls-logo-web.png
Affichages : 38815
Taille : 84,0 Ko

    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
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    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. #3
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 223
    Points : 561
    Points
    561
    Par défaut
    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.

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    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++.

  5. #5
    Invité
    Invité(e)
    Par défaut
    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...

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    909
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 909
    Points : 2 818
    Points
    2 818
    Par défaut
    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é.

Discussions similaires

  1. Réponses: 18
    Dernier message: 15/04/2009, 09h14
  2. Réponses: 3
    Dernier message: 02/09/2008, 16h17
  3. Installation d'une bibliothèque
    Par Empty_body dans le forum JBuilder
    Réponses: 3
    Dernier message: 09/02/2006, 19h43
  4. Réponses: 8
    Dernier message: 07/12/2005, 11h18
  5. Réponses: 19
    Dernier message: 26/04/2004, 08h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo