wolfSSL

Un article de Wikipédia, l'encyclopédie libre.

wolfSSL

Informations
Développé par Todd Ouska
Première version le 19 février, 2006[1]
Dernière version 4.6.0 ()
Dépôt https://github.com/wolfSSL
État du projet Actif
Écrit en C (langage)
Système d'exploitation MultiplateformeVoir et modifier les données sur Wikidata
Environnement Multiplate-forme
Type Bibliothèque de sécurité
Licence GNU General Public License ou Commercial Distribution License
Site web wolfssl.com

wolfSSL (aussi connu sous les anciens noms CyaSSL et yet another SSL) est une bibliothèque logicielle SSL/TLS à faible empreinte mémoire. Elle est écrite dans le langage de programmation C ANSI et cible les environnements embarqués, systèmes temps réels et à ressources limitées, grâce à sa petite taille, sa vitesse et ses fonctionnalités. Elle est aussi implémentée dans les environnements d'exploitation standards comme Linux.

Son modèle économique est exempt de royalties. wolfSSL implémente des standards industriels comme TLS 1.3 et DTLS 1.2. Elle est jusqu'à vingt fois plus petite qu'OpenSSL et supporte des algorithmes récents tels que ChaCha20, Curve25519, NTRUEncrypt, Blake2b et SHA-3. Les benchmarks et les retours utilisateur montrent une meilleure performance en utilisant wolfSSL au lieu d'OpenSSL[2].

yaSSL, un prédécesseur de wolfSSL, est une bibliothèque cliente SSL, écrite en C++, pour les environnements embarqués et les systèmes d'exploitation temps réel (RTOS) ayant des ressources limitées.

Plateformes[modifier | modifier le code]

La bibliothèque embarquée wolfSSL fonctionne sans problème avec des environnements de bureau, d'entreprise et d'informatique en nuage.

wolfSSL soutient les normes d'industrie jusqu'au TLS 1.3 actuel ainsi que DTLS 1.2. Elle est jusqu'à vingt fois plus petite qu'OpenSSL et offre une API simple ainsi qu'une couche compatible avec la bibliothèque OpenSSL. Elle est sécurisée par la bibliothèque de cryptographie wolfCrypt[3].

wolfSSL est actuellement disponible pour Win32/64, Linux, macOS, Solaris, Threadx, VxWorks, FreeBSD, NetBSD, OpenBSD, embedded Linux, WinCE, Haiku, OpenWrt, iPhone, Android, Nintendo Wii et Gamecube avec le soutien DevKitPro, QNX, MontaVista, Tron variants, NonStop, OpenCL, MicroC/OS-II de Micrium, FreeRTOS, SafeRTOS, Freescale MQX, Nucleus, TinyOS, TI-RTOS, HP-UX, uTasker, ainsi qu’embOS.

Historique[modifier | modifier le code]

La genèse de yaSSL, ou yet another SSL, remonte à 2004. OpenSSL était disponible à l'époque et était sous licence double « OpenSSL License » et « SSLeay License »[4]. La bibliothèque alternative yaSSL a été développée et mise à disposition sous deux licences, l'une commerciale et l'autre GPL[5]. yaSSL offrait une API plus moderne, le support des développeurs d'un produit commercial et était complète avec une couche de compatibilité OpenSSL[2]. Le premier utilisateur majeur de wolfSSL / CyaSSL / yaSSL a été MySQL[6]. Par l'intermédiaire d'un bundle avec MySQL, yaSSL a atteint des volumes de distribution extrêmement élevés (plusieurs millions).

Protocoles[modifier | modifier le code]

La bibliothèque wolfSSL légère met en œuvre les protocoles suivants[7] :

  • SSL 3.0, TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3
  • DTLS 1.0, DTLS 1.2

Le protocole SSL 2.0 a été interdit en 2011 par la RFC 6176[8] et wolfSSL ne le prend pas en charge.

Le protocole SSL 3.0 a été interdit en 2015 par RFC 7568[9]. En réponse à l'attaque POODLE, SSL 3.0 a été désactivé par défaut depuis la version 3.6.6 de wolfSSL mais peut être activé via une option de compilation[10].

Algorithmes[modifier | modifier le code]

wolfCrypt[modifier | modifier le code]

wolfSSL utilise les bibliothèques cryptographiques suivantes :

Par défaut, wolfSSL utilise les services cryptographiques fournis par wolfCrypt[11]. wolfCrypt met en œuvre les algorithmes RSA, ECC, DSS, Diffie–Hellman, EDH (en), NTRUEncrypt, DES, Triple DES, AES (CBC, CTR, CCM, GCM), Camellia, IDEA, ARC4, HC-128 (en), ChaCha20, MD2, MD4, MD5, SHA-1, SHA-2, BLAKE2 (en), RIPEMD-160, Poly1305 (en). wolfCrypt fournit également un générateur de nombres aléatoires, le support des grands entiers, l'encodage/décodage en base 16 et 64. Un algorithme de chiffrement expérimental par flot appelé Rabbit, qui est un algorithme dans le domaine public émanant du projet eSTREAM de l'Union Européenne, est également inclus. Rabbit est potentiellement utile pour ceux qui chiffrent des flux dans des environnements à forte demande et requérant des performances de vitesses élevées.

wolfCrypt inclut également le support des récents algorithmes Curve25519 et Ed25519.

wolfCrypt est utilisé comme implémentation cryptographique de bas niveau pour plusieurs logiciels et bibliothèques connus, dont notamment MIT Kerberos (où il peut être activé à l'aide d'une option de compilation)[12].

NTRUEncrypt[modifier | modifier le code]

CyaSSL+ inclut l'algorithme de chiffrement à clef publique NTRUEncrypt. L'ajout de NTRUEncrypt dans CyaSSL+ est le résultat d'un partenariat entre yaSSL et Security Innovation. NTRUEncrypt fonctionne très bien dans les environnements mobiles et embarqués grâce à la taille réduite des clefs requises pour obtenir le même niveau de sécurité que d'autres algorithmes de chiffrement à clef publique. De plus, NTRUEncrypt n'est pas connu pour être vulnérable aux attaques quantiques. Plusieurs suites de chiffrement utilisant NTRUEncrypt sont disponibles dans CyaSSL+ avec AES-256, RC4, et HC-128[13].

Plates-formes d'accélération matérielle prises en charge[modifier | modifier le code]

Les tables ci-dessous présentent le support par wolfSSL de diverses plates-formes matérielles avec différents algorithmes.

Modes de chiffrement AES
Plate-forme AES-GCM AES-CCM AES-CBC AES-ECB AES-CTR
Intel AES-NI

(Processeurs Xeon et Intel Core)

Toutes Toutes Toutes Toutes Toutes
Freescale

Cryptographic Accelerator and Assurance Module (CAAM)

Toutes Toutes Toutes Toutes
Freescale Coldfire SEC

(NXP MCF547X et MCF548X)

Toutes
Freescale Kinetis MMCAU

K50, K60, K70, et K80 (cœur ARM Cortex-M4)

Toutes Toutes Toutes Toutes
STMicroelectronics STM32

Série F1, F2, F4, L1, W (ARM Cortex - M3/M4)

Toutes Toutes
Cavium NITROX

(Processeurs III/V PX)

Toutes
Microchip PIC32 MX/MZ

(Connectivité embarquée)

Toutes Toutes Toutes
Texas Instruments TM4C1294

(ARM Cortex-M4F)

Toutes Toutes Toutes Toutes Toutes
Nordic NRF51

(Famille de système sur une puce à cœur 32-bit ARM Cortex M0)

128-bit
ARMv8 Toutes Toutes Toutes
Technologie Intel QuickAssist[14] Toutes Toutes
Freescale NXP LTC Toutes Toutes Toutes Toutes Toutes
Xilinx Zynq UltraScale+ 256-bit

- La mention « Toutes » signifie que des blocs d'une taille de 128, 192, et 256 bits sont supportés.

Modes de chiffrement DES/3DES
Plate-forme DES-CBC DES-ECB 3DES-CBC
Freescale Coldfire SEC

(NXP MCF547X et MCF548X)

64 bit 192 bit
Freescale Kinetis MMCAU

K50, K60, K70, et K80 (cœur ARM Cortex-M4)

64 bit 192 bit
STMicroelectronics STM32

F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)

64 bit 64 bit (chiffrement) 192 bit
Cavium NITROX

(Processeurs III/V PX)

192 bit
Microchip PIC32 MX/MZ

(Connectivité embarquée)

64 bit 192 bit
Texas Instruments TM4C1294

(ARM Cortex-M4F)

64 bit 192 bit
Chiffrement de flux
Plate-forme RC4 ChaCha20
AVX1/AVX2

(Intel et AMD x86)

Supporté
Cavium NITROX

(Processeurs III/V PX)

2048 bit max.
Support de fonctions de hachage
Plate-forme MD5 SHA1 SHA2 SHA-256 SHA-384 SHA-512
AVX1/AVX2

(Intel and AMD x86)

Supporté Supporté Supporté
Freescale Kinetis MMCAU

K50, K60, K70, et K80 (cœur ARM Cortex-M4)

Supporté Supporté Supporté
STMicroelectronics STM32

F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)

Supporté Supporté
Microchip PIC32 MX/MZ

(Connectivité embarquée)

Supporté Supporté Supporté
ARMv8 Supporté
Technologie Intel QuickAssist[14] Supporté Supporté Supporté
Freescale NXP LTC Supporté Supporté
Xilinx Zynq UltraScale+ Supporté
Gestion de clés: génération et échange, cryptographie sur les courbes elliptiques
Plate-forme RSA ECC ECC-DHE Curve25519 Ed25519
Cavium NITROX

(Processeurs III/V PX)

512 - 4096 bit NIST Prime

192, 224, 256, 384, 521

Microchip/Atmel

ATECC508A (compatible avec tout microcontrôleur ou microprocesseur,

dont les microcontrôleurs Atmel SMART et AVR)

256 bit

(NIST-P256)

Technologie Intel QuickAssist[14] 512 - 4096 bit 128, 256 bit
Freescale NXP LTC 512 - 4096 bit 128, 256 bit 128, 256 bit 256 bit 256 bit
Xilinx Zynq UltraScale+ 2048 - 4096 bit
Algorithmes de code d'authentification de message (ou MAC, message authentication code)
Plate-forme HMAC-MD5 HMAC-SHA1 HMAC-SHA2 HMAC-SHA256 SHA-3 Poly1305
AVX1/AVX2

(Intel et AMD x86)

Supporté
Cavium NITROX

(Processeurs III/V PX)

Supporté Supporté Supporté Supporté
Microchip PIC32 MX/MZ

(Connectivité embarquée)

Supporté Supporté Supporté
Technologie Intel QuickAssist[14] Supporté Supporté
Génération de nombres aléatoires
Plate-forme RNG
STMicroelectronics STM32

F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)

Supporté
Cavium NITROX

(Processeurs III/V PX)

Supporté
Nordic NRF51

(Famille de système sur une puce à cœur 32-bit ARM Cortex M0)

Supporté

Octroi de licence[modifier | modifier le code]

wolfSSL est en code source ouvert, sous licence GNU General Public License GPLv2.

Notes et références[modifier | modifier le code]

(en) Cet article est partiellement ou en totalité issu de la page de Wikipédia en anglais intitulée « WolfSSL » (voir la liste des auteurs).

  1. (en) « wolfSSL ChangeLog », .
  2. a et b (en-US) « Embedded Communications Products | wolfSSL SSL/TLS Library », wolfSSL,‎ 6/21/18 (lire en ligne, consulté le ).
  3. (en-US) « wolfSSL Embedded SSL/TLS Library | Now Supporting TLS 1.3 », sur wolfSSL (consulté le ).
  4. (en) OpenSSL Foundation, Inc., « /source/license.html », sur www.openssl.org (consulté le ).
  5. (en) « Licensing Information », sur wolfssl.com (consulté le ).
  6. (en) « wolfSSL », dans Wikipedia, (lire en ligne).
  7. (en-US) « wolfSSL User Manual | Chapter 4: Features | Documentation », wolfSSL,‎ 6/21/18 (lire en ligne, consulté le ).
  8. (en) « Prohibiting Secure Sockets Layer (SSL) Version 2.0 », Request for comments no 6176, .
  9. (en) « Deprecating Secure Sockets Layer Version 3.0 », Request for comments no 7568, .
  10. (en-US) « wolfSSL 3.6.6 is Now Available - wolfSSL », wolfSSL,‎ (lire en ligne, consulté le ).
  11. (en-US) « wolfSSL User Manual | Chapter 10: wolfCrypt Usage Reference | Docs », wolfSSL,‎ 6/21/18 (lire en ligne, consulté le ).
  12. (en) « Kerberos: The Network Authentication Protocol », sur web.mit.edu (consulté le ).
  13. (en) « Security Innovation | Crypto Corner | The Application Security Company », archive.is,‎ (lire en ligne, consulté le ).
  14. a b c et d (en) « Wolfssl / Wolfcrypt Async With Intel Quickassist », sur wolfssl.com (consulté le ).

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]