LibreSSL
| Tipus | biblioteca informàtica, programari lliure, programari criptogràfic i utilitat |
|---|---|
| Basat en | OpenSSL i SSLeay |
| Versió inicial | |
| Versió estable | |
| Ús | criptografia |
| Llicència | OpenSSL License (en) llicència ISC |
| Característiques tècniques | |
| Sistema operatiu | BSD, GNU/Linux, GNU/Hurd, Unix, macOS i Microsoft Windows |
| Escrit en | C i llenguatge assemblador |
| Equip | |
| Desenvolupador(s) | OpenBSD Project (en) |
| Més informació | |
| Lloc web | libressl.org (anglès) |
| Free Software Directory | libressl |
|
| |
LibreSSL és una implementació de codi obert del protocol Transport Layer Security (TLS). La implementació rep el nom de Secure Sockets Layer (SSL), el predecessor obsolet de TLS, per al qual es va eliminar el suport a la versió 2.3.0. El projecte OpenBSD va bifurcar LibreSSL a partir d'OpenSSL 1.0.1g l'abril de 2014 com a resposta a la vulnerabilitat de seguretat Heartbleed,[1][2][3][4] amb els objectius de modernitzar la base de codi, millorar la seguretat i aplicar les millors pràctiques de desenvolupament.[5][6]
Història
[modifica]Després que es descobrís la vulnerabilitat de seguretat Heartbleed a OpenSSL, l'equip d'OpenBSD va auditar la base de codi i va decidir que era necessari bifurcar OpenSSL per eliminar el codi perillós.[7] El domini libressl.org es va registrar l'11 d'abril de 2014; el projecte va anunciar el nom el 22 d'abril de 2014. Durant la primera setmana de desenvolupament, es van eliminar més de 90.000 línies de codi C.[8][9] Es va eliminar el codi no utilitzat i es va eliminar la compatibilitat amb sistemes operatius obsolets (Mac OS clàssic, NetWare, OS/2, Windows de 16 bits) i alguns sistemes operatius més antics (OpenVMS).
Inicialment, LibreSSL es va desenvolupar com a substitut previst d'OpenSSL a OpenBSD 5.6, i es va portar a altres plataformes un cop una versió simplificada de la biblioteca va ser estable.[10] A Abril 2014[update] , el projecte buscava un "compromís estable" de finançament extern.[11] El 17 de maig de 2014, Bob Beck va presentar "LibreSSL: Els primers 30 dies i què ens depara el futur" durant la conferència BSDCan de 2014, en què va descriure el progrés aconseguit durant el primer mes.[12] El 5 de juny de 2014, es van fer públics diversos errors d'OpenSSL. Tot i que diversos projectes van ser notificats amb antelació, LibreSSL no ho va ser; Theo de Raadt va acusar els desenvolupadors d'OpenSSL de retenir intencionadament aquesta informació a OpenBSD i LibreSSL.
El 20 de juny de 2014, Google va crear una altra bifurcació d'OpenSSL anomenada BoringSSL i va prometre intercanviar correccions amb LibreSSL.[13][14] Google ja ha tornat a llicenciar algunes de les seves contribucions sota la llicència ISC, tal com ho van sol·licitar els desenvolupadors de LibreSSL.[13] El 21 de juny de 2014, Theo de Raadt va donar la benvinguda a BoringSSL i va exposar els plans per a LibreSSL-portable. A partir del 8 de juliol, va començar la migració de codi per a macOS i Solaris,[15] mentre que la migració inicial a Linux va començar el 20 de juny.
A partir del 2021, OpenBSD utilitza LibreSSL com a biblioteca TLS principal. Alpine Linux va donar suport a LibreSSL com a biblioteca TLS principal durant tres anys, fins al llançament 3.9.0 el gener de 2019. Gentoo va donar suport a LibreSSL fins al febrer de 2021.[16] Python 3.10 va abandonar LibreSSL[17] després de ser compatible des de Python 3.4.3 (2015).
Canvis
[modifica]Funcions afegides
[modifica]La versió inicial de LibreSSL va afegir diverses funcions: l'algoritme ChaCha i Poly1305, les corbes el·líptiques Brainpool i ANSSI, i els modes AEAD AES-GCM i ChaCha20-Poly1305.
Les versions posteriors van afegir el següent:
- 2.1.0: Claus EC efímeres automàtiques.
- 2.1.2: Implementació integrada d'arc4random a macOS i FreeBSD.
- 2.1.2: S'ha reelaborat el suport del conjunt de xifratge GOST.
- 2.1.3: Suport d'ALPN.
- 2.1.3: Suport per a conjunts de xifratge SHA-256 i Camellia.
- 2.1.4: Suport del costat del servidor per a TLS_FALLBACK_SCSV.
- 2.1.4: certhash com a substitut de l'script c_rehash.
- 2.1.4: API X509_STORE_load_mem per carregar certificats des de la memòria (millora la compatibilitat amb chroot).
- 2.1.4: Binaris experimentals de Windows.
- 2.1.5: Actualització menor principalment per millorar el suport de Windows, primers binaris de 32 i 64 bits que funcionen.
- 2.1.6: libtls declarat estable i habilitat per defecte.
- 2.2.0: Suport per a AIX i Cygwin.
- 2.2.1: Addició d'EC_curve_nid2nist i EC_curve_nist2nid des d'OpenSSL, suport inicial per a Windows XP /2003.
- 2.2.2: Defineix LIBRESSL_VERSION_NUMBER, s'han afegit els mètodes TLS_* com a substitut de les crides al mètode SSLv23_*, i s'ha implementat la compilació cmake.
Eliminació de codi
[modifica]La versió inicial de LibreSSL ha eliminat diverses característiques que es consideraven insegures, innecessàries o obsoletes com a part de l'OpenBSD 5.6.
- En resposta a Heartbleed, la funcionalitat del batec del cor[18] va ser una de les primeres característiques que es va eliminar.
- S'ha eliminat el suport per a plataformes obsoletes (Mac OS clàssic, NetWare, OS/2, Windows de 16 bits).
- S'ha eliminat el suport per a algunes plataformes més antigues (OpenVMS).
- Suport per a plataformes que no existeixen, com ara big-endian i386 i amd64.
- Suport per a compiladors antics.
- Els motors IBM 4758, Broadcom ubsec, Sureware, Nuron, GOST, GMP, CSwift, CHIL, CAPI, Atalla i AEP es van eliminar per la irrellevància del maquinari o la dependència de biblioteques no lliures.
- L'OpenSSL PRNG s'ha eliminat (i s'ha substituït per una implementació d'arc4random basada en ChaCha20).
- Macros de preprocessador que s'han considerat innecessàries o insegures o que ja havien estat obsoletes a OpenSSL durant molt de temps (per exemple, des_old.h).
- Fitxers antics i innecessaris per al llenguatge assemblador, C i Perl (per exemple, Entropy Gathering Daemon).
- MD2, funcionalitat SEED.
- SSL 3.0, SHA-0, DTLS1_BAD_VER
Referències
[modifica]- ↑ Unangst, Ted. «Origins of libressl» (en anglès). flak, 22-04-2014. [Consulta: 24 abril 2014].
- ↑ Kerner, Sean Michael. «After Heartbleed, OpenSSL Is Forked Into LibreSSL» (en anglès). eWeek, 22-04-2014. [Consulta: 24 abril 2014].
- ↑ «Not Just a Cleanup Any More: LibreSSL Project Announced» (en anglès). Slashdot, 22-04-2014. [Consulta: 24 abril 2014].
- ↑ M, Constantine. «30-Day Status Update On LibreSSL» (en anglès). Slashdot, 17-05-2014.
- ↑ «LibreSSL» (en anglès).
- ↑ Seltzer, Larry. «OpenBSD forks, prunes, fixes OpenSSL» (en anglès). Zero Day. ZDNet, 21-04-2014. [Consulta: 21 abril 2014].
- ↑ Unangst, Ted. «Origins of libressl» (en anglès). flak, 22-04-2014. [Consulta: 24 abril 2014].
- ↑ Seltzer, Larry. «OpenBSD forks, prunes, fixes OpenSSL» (en anglès). Zero Day. ZDNet, 21-04-2014. [Consulta: 21 abril 2014].
- ↑ Brodkin, Jon. «OpenSSL code beyond repair, claims creator of "LibreSSL" fork» (en anglès). Ars Technica, 22-04-2014. [Consulta: 24 abril 2014].
- ↑ McCallion, Jane. «Heartbleed: LibreSSL scrubs "irresponsible" OpenSSL code» (en anglès). PC Pro, 22-04-2014. Arxivat de l'original el 26 June 2014. [Consulta: 23 abril 2014].
- ↑ Brodkin, Jon. «OpenSSL code beyond repair, claims creator of "LibreSSL" fork» (en anglès). Ars Technica, 22-04-2014. [Consulta: 24 abril 2014].
- ↑ Beck, Bob. «LibreSSL: The first 30 days, and what the Future Holds Slides» (en anglès), 17-05-2014. [Consulta: 17 maig 2014].
- 1 2 Langley, Adam. «BoringSSL (20 Jun 2014)» (en anglès). Imperialviolet.org, 20-06-2014. [Consulta: 21 juny 2014].
- ↑ Goodin, Dan. «Google unveils independent "fork" of OpenSSL called "BoringSSL"» (en anglès). Ars Technica, 20-06-2014. [Consulta: 21 juny 2014].
- ↑ Beck, Bob. «OpenBSD - lib/libcrypto/crypto getentropy_osx.c getentropy_solaris.c» (en anglès), 08-07-2014. Arxivat de l'original el 22 July 2014. [Consulta: 8 juliol 2014].
- ↑ «LibreSSL languishes on Linux [LWN.net]» (en anglès). lwn.net. [Consulta: 6 gener 2021].
- ↑ «PEP 644 -- Require OpenSSL 1.1.1 or newer» (en anglès).
- ↑ «OpenBSD LibreSSL CVS OPENSSL_NO_HEARTBEATS» (en anglès).