wolfSSL

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche
wolfSSL

Informations
Développé par Todd Ouska
Première version le 19 février, 2006[1]
Dernière version 3.15.3 (le 22 juin, 2018)
Dépôt https://github.com/wolfSSL
État du projet Actif
Écrit en C (langage)
Environnement Multiplate-forme
Type Bibliothèque de sécurité
Licence GNU General Public License ou Commercial Distribution License
Site web www.wolfssl.com

wolfSSL (encore connu sous les anciens noms CyaSSL ou yet another SSL ) est une bibliothèque SSL/TLS à faible empreinte mémoire. Elle est écrite en C ANSI et cible les environnements embarqués, systèmes temps réels et à ressources limités, grâce à sa petite taille, vitesse et ses fonctionnalités. Elle est aussi implémentée dans les environnements d'exploitation standards comme Linux. Le modèle économique est exempte 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 elle supporte des algorithmes récents tels que ChaCha20, Curve25519, NTRU, Blake2b et SHA-3 (Keccak). Les benchmarks et les retours utilisateur montrent une meilleure performance en utilisant wolfSSL au lieu d'OpenSSL[2].

Un prédécesseur de CyaSSL, yaSSL 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. C'est jusqu'à vingt fois plus petite qu'OpenSSL et cela offre un 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é et mise à disposition sous deux licences, l'une commerciale et l'autre GPL.[1] 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.[5] 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]

Article détaillée: Transport Layer Security

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

Quelques notes du protocole :

SSL 2.0 était interdit en 2011 par RFC 6176[8]. wolfSSL ne le soutient pas.

SSL 3.0 était interdit en 2015 par RFC 7568[9]. En réponse à l’attaque POODLE, SSL 3.0 est donc désactivé par défaut depuis que wolfSSL 3.6.6 mais pourrait être activé grâce à 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, NTRU, DES, Triple DES, AES (CBC, CTR, CCM, GCM), Camellia, IDEA, ARC4, HC-128, ChaCha20, MD2, MD4, MD5, SHA-1, SHA-2, BLAKE2, RIPEMD-160, Poly1305. 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'UE, 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, incluant  MIT Kerberos (où il peut être activé à l'aide d'une option de build)[12].

NTRU[modifier | modifier le code]

CyaSSL+ inclus l'algorithme de chiffrement à clef publique NTRU. L'ajout de NTRU dans CyaSSL+ est le résultat d'un partenariat entre yaSSL et Security Innovation. NTRU 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, NTRU n'est pas connu pour être vulnérable aux attaques quantiques. Plusieurs suites de chiffrement utilisant NTRU sont disponibles dans CyaSSL+ avec AES-256, RC4, et HC-128[13].

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

Intel AES-NI (Xeon and Core processor families)
AES-GCM 128, 192, 256 bit
AES-CCM 128, 192, 256 bit
AES-CBC 128, 192, 256 bit
AES-ECB 128, 192, 256 bit
AES-CTR 128, 192, 256 bit
AVX1/AVX2 (Intel and AMD x86)
SHA-256
SHA-384
SHA-512
RDRAND (Intel 64, IA-32 architectures)
SHA-256
SHA-512
RDSEED (Intel Broadwell, AMD Zen)
SHA-256
SHA-512
Freescale Coldfire SEC (NXP MCF547X and MCF548X)
DES-CBC 64 bit
3DES-CBC 192 bit
AES-CBC 128, 192, 256 bit
Freescale Kinetis MMCAU K50, K60, K70 and K80 (ARM Cortex-M4 core)
MD5 128 bit digest
SHA1 160 bit digest
SHA256
DES-CBC 64 bit
3DES-CBC 192 bit
AES-CBC 128, 192, 256 bit
AES-CCM 128, 192, 256 bit
AES-GCM 128, 192, 256 bit
AES-ECB 128, 192, 256 bit
STMicroelectronics STM32 F1, F2, F4, L1, W Series (ARM Cortex - M3/M4)
RNG
DES-CBC 64 bit
DES-ECB 64 bit Encrypt
3DES-CBC 192 bit
MD5 128 bit
SHA1 160 bit
AES-CBC 128, 192, 256 bit
AES-CTR 128, 192, 256 bit
CubeMX and Std Per Lib
Cavium NITROX (III/V PX processors)
RNG
AES-CBC 128, 192, 256 bit
3DES-CBC 192 bit
RC4 2048 bit maximum
HMAC MD5, SHA1, SHA256, SHA3
RSA 512 - 4096 bit
ECC NIST Prime 192, 224, 256, 384 and 521
Microchip PIC32 MX/MZ (Embedded Connectivity)
MD5 128 bit digest
SHA1 160 bit digest
SHA256
HMAC MD5, SHA1, SHA256
DES-CBC 64 bit
3DES-CBC 192 bit
AES-CBC 128, 192, 256 bit
AES-CTR 128, 192, 256 bit
AES-GCM 128, 192, 256 bit
Texas Instruments TM4C1294 (ARM Cortex-M4F)
DES-CBC 64 bit
3DES-CBC 192 bit
AES-CCM 128, 192, 256 bit
AES-GCM 128, 192, 256 bit
AES-ECB 128, 192, 256 bit
AES-CTR 128, 192, 256 bit
AES-CBC 128, 192, 256 bit
Nordic NRF51 (Series SoC family, 32-bit ARM Cortex M0 processor core)
AES-ECB 128 bit
RNG
Microchip/Atmel ATECC508A (compatible with MPU or MCU)
ECC 256 bit (NIST-P256)
ARMv8
AES-CBC 128, 192, 256 bit
AES-CTR 128, 192, 256 bit
AES-GCM 128, 192, 256 bit
SHA256
Intel QuickAssist Technology
RSA 512 - 4096 bit
SHA1 160 bit digest
SHA2 224, 256, 384 and 512 bit
AES-CBC 128, 192, 256 bit
AES-GCM 128, 192, 256 bit
ECC Any curve or bit strength
HMAC SHA1, SHA2
MD5
Freescale NXP LTC
Curve25519 256 bit
Ed25519 256 bit
AES-CCM 128, 192, 256 bit
AES-ECB 128, 192, 256 bit
AES-CBC 128, 192, 256 bit
AES-CTR 128, 192, 256 bit
AES-GCM 128, 192, 256 bit
SHA1 160 bit digest
SHA256
ECC 128, 256 bit
ECC-DHE 128, 256 bit
RSA 512 - 4096 bit

Octroi de licence[modifier | modifier le code]

wolfSSL est code source ouvert, sous licence de GNU General Public License GPLv2[14].

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. « wolfSSL ChangeLog »,
  2. (en-US) « Embedded Communications Products | wolfSSL SSL/TLS Library », wolfSSL,‎ 6/21/18 (lire en ligne, consulté le 22 juin 2018)
  3. (en-US) « wolfSSL Embedded SSL/TLS Library | Now Supporting TLS 1.3 », sur wolfSSL (consulté le 21 juin 2018)
  4. (en) OpenSSL Foundation, Inc., « /source/license.html », sur www.openssl.org (consulté le 22 juin 2018)
  5. (en-US) « Embedded Communications Products | wolfSSL SSL/TLS Library », wolfSSL,‎ 6/21/18 (lire en ligne, consulté le 22 juin 2018)
  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 22 juin 2018)
  8. (en) « Prohibiting Secure Sockets Layer (SSL) Version 2.0 », Request for Comments no 6176, mars 2011.
  9. (en) « Deprecating Secure Sockets Layer Version 3.0 », Request for Comments no 7568, juin 2015.
  10. (en-US) « wolfSSL 3.6.6 is Now Available - wolfSSL », wolfSSL,‎ (lire en ligne, consulté le 21 juin 2018)
  11. (en-US) « wolfSSL User Manual | Chapter 10: wolfCrypt Usage Reference | Docs », wolfSSL,‎ 6/21/18 (lire en ligne, consulté le 22 juin 2018)
  12. « Kerberos: The Network Authentication Protocol », sur web.mit.edu (consulté le 21 juin 2018)
  13. « Security Innovation | Crypto Corner | The Application Security Company », archive.is,‎ (lire en ligne, consulté le 22 juin 2018)
  14. (en) « GNU License »

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]