LibreSSL
Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från
versionen som granskades den 19 maj 2020; kontroller kräver
3 redigeringar .
LibreSSL är ett bibliotek med implementering av SSL / TLS-protokoll . Detta bibliotek är en produkt från OpenBSD -teamet , som utvecklar en gaffel av OpenSSL som syftar till att ge en högre säkerhetsnivå. Före gaffeln upptäcktes en sårbarhet för hjärtblod i OpenSSL .
Bland funktionerna i LibreSSL kan man notera fokus på högkvalitativt stöd för SSL / TLS-protokoll med borttagning av onödig funktionalitet, involvering av ytterligare skyddsverktyg och en betydande rengöring och omarbetning av kodbasen.
OpenBSD -projektet utvecklar en inbyggd utgåva av LibreSSL-paketet för OpenBSD själv och en bärbar utgåva för Unix - liknande system och Microsoft Windows . [fyra]
Historik
Efter att Heartbleed-sårbarheten upptäcktes i OpenSSL, granskade OpenBSD-utvecklingsteamet koden och drog slutsatsen att det var nödvändigt att skapa och underhålla sin egen fork av biblioteket [5] . Den 11 april 2014 registrerades domänen libressl.org och den 22 april 2014 tillkännagavs lanseringen av projektet.
Under den första veckan tog utvecklarna bort över 90 000 rader med C -kod [6] [7] . Tog bort föråldrad eller oanvänd kod, tog även bort stöd för föråldrade och sällan använda operativsystem i vår tid. Från början var det planerat att utveckla LibreSSL-biblioteket som en ersättning för OpenSSL i operativsystemet OpenBSD 5.6, och efter att det lätta biblioteket blivit tillräckligt stabilt, porta det till andra plattformar [8] [9] .
Den 17 maj 2014, vid BSDCan-konferensen 2014, presenterade Bob Beck föredraget "LibreSSL: First 30 days and what lies ahead", som beskrev resultaten av den första månadens utveckling, de ändringar som gjorts och de problem som hittats. [tio]
Den 5 juni 2014 offentliggjordes vissa sårbarheter i OpenSSL. Även om vissa projekt informerades om dessa sårbarheter i förväg [11] informerades inte utvecklarna av LibreSSL; som ett resultat anklagade Theo de Raadt OpenSSL-utvecklarna för att medvetet dölja information från OpenBSD- och LibreSSL-projekten [12] .
Den 20 juni 2014 skapade Google en annan fork av OpenSSL som heter BoringSSL och tillkännagav sin avsikt att dela patchar med LibreSSL-projektet [13] [14] . På begäran av utvecklarna av LibreSSL har Google återlicensierat några av sina ändringar till en ISC-licens [13] [15] . Den 21 juni tillkännagav Theo de Raadt planer på att släppa en bärbar version av LibreSSL-portabla bibliotek [16] . Den 20 juni började porteringen av koden till Linux [17] och den 8 juli - till OS X- och Solaris-plattformarna [18] .
Den 11 juli 2014 släpptes den första bärbara versionen av LibreSSL 2.0.0 [19] [20] . Den första utgåvan följdes snabbt av versionerna 2.0.1 [21] (13 juli), 2.0.2 [22] (16 juli), 2.0.3 [23] (22 juli), 2.0.4 [24] (3 augusti ) ) och 2.0.5 [25] (5 augusti), som åtgärdade många av bristerna i den första bärbara versionen.
Den 28 september 2014 presenterade Ted Unangst föredraget "LibreSSL: över 30 dagar senare", som beskriver prestationerna, problemen och förändringarna som gjorts under månaderna sedan Bob Becks föredrag på BSDCan-konferensen [10] [26] .
Från och med version 2.1.0, [27] , släppt den 12 oktober 2014, har hastigheten för att göra ändringar i LibreSSL minskat avsevärt, och biblioteket har blivit ett fungerande alternativ till OpenSSL. De flesta ändringarna i version 2.1.x är fixar för sårbarheter som finns i OpenSSL.
Användning
LibreSSL används som standardbibliotek för att implementera TLS på följande system:
- OpenBSD sedan version 5.6 [28]
- Void Linux , från och med 6 augusti 2014 [29] (Flyttades tillbaka till OpenSSL [30] den 23 februari 2021 )
- PC-BSD sedan version 10.1.2 [31]
- som ett alternativ i OPNsense sedan version 15.7 [32]
- OpenELEC sedan version 6.0beta2 [33]
- OS X sedan version 10.11 El Capitan [34]
Ändringar
Arbeta med minne
Några av de mest anmärkningsvärda och viktiga förändringarna är relaterade till ersättningen av självskrivna minnesfunktioner med standardbiblioteksfunktioner (t.ex. , strlcpy, calloc, asprintfetc. reallocarray) [35] [36] . Detta gör att du senare kan hitta buffertspillfel med hjälp av speciella verktyg för minnesläckageanalys , samt undersöka fel med ASLR - teknik, NX- bitattributet , " whistleblowers ", etc.
Versionskontrollloggen visar också fixar för potentiella dubbla frisläppningar [37] . Det finns också många ytterligare kontroller för att matcha parameterstorlekar, konverteringar mellan osignerade och signerade variabler, kontroller för pekarvärden och returvärden.
Förebyggande åtgärder
I enlighet med allmänt accepterade säkra programmeringsrutiner är kompilatoralternativ och flaggor aktiverade som standard för att upptäcka potentiella problem i byggskedet (-Wall, -Werror, -Wextra, -Wuninitialized). Förbättrad kodläsbarhet, vilket borde göra koden lättare att kontrollera i framtiden. Att fixa eller ta bort onödiga makron och metodomslag förbättrar också kodläsbarheten och gör det lättare att granska.
År 2038-problemet har åtgärdats helt i LibreSSL-koden . Dessutom, för att förhindra kompilatorn från att ta bort minnesrensningskoden från den optimerade builden, har funktionsanrop explicit_bzerooch bn_clearhar lagts till för att förhindra en potentiell angripare från att läsa värden från tidigare använt minne.
Kryptografi
Den osäkra initieringen av pseudo-slumptalsgeneratorn med initiala värden har ersatts med de funktioner som tillhandahålls av operativsystemets kärna [38] [39] . Andra viktiga innovationer inkluderar stöd för det nya ChaCha -strömchifferet och Poly1305- meddelandeautentiseringskoden , samt en säkrare uppsättning elliptiska kurvor (brainpool-kurvor från RFC 5639 , upp till 512 bitar).
Tillagda funktioner
Följande funktioner lades till i den första versionen av LibreSSL: stöd för ChaCha och Poly1305 algoritmer , Brainpool elliptiska kurvor Arkiverade 19 november 2015 på Wayback Machine och ANSSI Arkiverade 8 december 2015 på Wayback Machine , AEAD krypteringslägen AES-GCM och ChaCha20-Poly1305 .
I efterföljande versioner dök följande upp: [40]
- 2.1.0: Automatiska tillfälliga nycklar på elliptiska kurvor [27]
- 2.1.2: Stöd för inbyggd arc4random PRNG på OS X och FreeBSD [41]
- 2.1.2: Omdesignat GOST-chifferstöd
- 2.1.3: ALPN- stöd [42]
- 2.1.3: Stöd för SHA-256 Camellia - chiffersviter
- 2.1.4: Stöd för TLS_FALLBACK_SCSV på serversidan [43]
- 2.1.4: certhash som ersättning för c_rehash- skriptet
- 2.1.4: X509_STORE_load_mem API för att ladda certifikat från minnet (förbättrat chroot-stöd)
- 2.1.4: Experimentell konstruktion för Windows
- 2.1.5: Windows stödjer förbättringar, första fungerande 32-bitars och 64-bitars builds [44]
- 2.1.6: libtls förklaras stabil och aktiverad som standard [45]
- 2.2.0: Stöd för AIX och Cygwin [46]
- 2.2.1: Lade till elliptiska kurvor EC_curve_nid2nist och EC_curve_nist2nid [47] från OpenSSL, initialt stöd för Windows XP/2003
- 2.2.2: Definierad konstant LIBRESSL_VERSION_NUMBER [48] , lagt till TLS_*-metoder som ersättning för SSLv23_*-metoder, bygg stöd med cmake.
Gamla osäkra funktioner
I den ursprungliga versionen av LibreSSL var vissa funktioner inaktiverade som standard [28] . Några av dessa funktioner togs senare bort helt, inklusive stöd för Kerberos , exportchiffersvit , TLS-komprimering, DTLS heartbeat och SSL v2.
I senare versioner var följande funktioner dessutom inaktiverade:
- 2.1.1: Efter upptäckten av POODLE-sårbarheten i det föråldrade SSL 3.0-protokollet är detta protokoll inaktiverat som standard i LibreSSL [49] .
- 2.1.3: Borttaget stöd för digital signatur GOST R 34.10-94 [40] [42]
- 2.2.1: Borttaget stöd för dynamisk motor och MDC-2DES [47]
- 2.2.2: Tog bort stöd för SSLv3 från openssl binär , tog bort stöd för Internet Explorer 6, RSAX-motor. [48]
- 2.3.0: Helt borttaget stöd för SSLv3, SHA-0 och DTLS 1_BAD_VER
Borttagna funktioner
Den första utgåvan av LibreSSL i OpenBSD 5.6 tog bort en stor mängd kod som ansågs osäker, onödig eller föråldrad [28] .
- Som svar på Heartbleed- sårbarheten var en av de första funktionerna som togs bort stöd för Heartbeat-paket [50]
- Stöd för onödiga plattformar ("klassiskt" Mac OS , NetWare , OS / 2 , VMS , 16-bitars Windows , etc.)
- Stöd för äldre kompilatorer
- Har tagit bort motorerna IBM 4758 , Broadcom ubsec , Sureware, Nuron, GOST, GMP, CSwift, CHIL, CAPI, Atalla och AEP på grund av föråldrad hårdvara eller beroende av icke-fria bibliotek
- Tog bort OpenSSL pseudo-slumptalsgenerator (och ersattes med arc4random)
- C förbehandlare makron som ansågs onödiga eller osäkra och föråldrades i OpenSSL (t.ex. des_old.h)
- Gamla skräpfiler i assemblerspråk , C och Perl (t.ex. EGD )
- Stöd för MD2 och SEED
- SSLv3, SHA-0, DTLS1_BAD_VER
Dual_EC_DRBG- algoritmen , som misstänks ha en bakdörr [51] , förstördes också. Även oanvända protokoll och osäkra algoritmer togs bort, inklusive stöd för FIPS 140-2 [52] , MD4 / MD5 [40] J-PAKE , [28] och SRP . [24]
Gamla misstag
En anledning till kritiken mot OpenSSL är det stora antalet poster i buggspåraren som förblir okorrigerade i många år. Dessa gamla buggar är nu fixade i LibreSSL [53] .
Säkerhet och sårbarhet
LibreSSL visade sig vara immun mot många av de sårbarheter som finns i OpenSSL efter gaffelgrenen. Det är anmärkningsvärt att ingen av de högnivåsårbarheter som hittats i OpenSSL hittills är tillämpliga på LibreSSL.
| LibreSSL |
OpenSSL |
LibreSSL |
OpenSSL
|
Klassificering |
1.0.1 |
1.0.2 [54]
|
kritisk |
0 |
0 |
0 |
0
|
hög |
0 |
fyra |
0 |
2
|
Medium |
fjorton |
25 |
12 |
17
|
Låg |
fyra |
elva |
3 |
6
|
Total |
arton |
39 |
femton |
23
|
Länkar
Anteckningar
- ↑ Cook B. LibreSSL 3.6.1 släpptes - 2022 .
- ↑ Libressl Open Source Project på Open Hub: Languages-sidan - 2006.
- ↑ 1 2 3 4 5 6 7 Gratis programvarukatalog
- ↑ LibreSSL: Releases . www.libressl.org. Hämtad 3 oktober 2019. Arkiverad från originalet 1 oktober 2019. (obestämd)
- ↑ Unangst, Ted Origins of libressl . flak (22 april 2014). Hämtad 24 april 2014. Arkiverad från originalet 24 april 2014. (obestämd)
- ↑ Seltzer, Larry OpenBSD gafflar, katrinplommon, fixar OpenSSL . Noll dag . ZDNet (21 april 2014). Hämtad 21 april 2014. Arkiverad från originalet 21 april 2014. (obestämd)
- ↑ Brodkin, Jon OpenSSL-kod bortom reparation, hävdar skaparen av "LibreSSL"-gaffeln . Ars Technica (22 april 2014). Hämtad 24 april 2014. Arkiverad från originalet 19 augusti 2014. (obestämd)
- ↑ McCallion, Jane Heartbleed: LibreSSL skrubbar "oansvarig" OpenSSL-kod (länk ej tillgänglig) . PC Pro (22 april 2014). Hämtad 23 april 2014. Arkiverad från originalet 26 juni 2014. (obestämd)
- ↑ Larabel, Michael OpenBSD bekräftar att LibreSSL kommer att vara portabel . Phoronix (9 maj 2014). Hämtad 30 maj 2014. Arkiverad från originalet 8 december 2015. (obestämd)
- ↑ 1 2 Beck, Bob LibreSSL: The first 30 days, and what the Future Holds slides (17 maj 2014). Hämtad 17 maj 2014. Arkiverad från originalet 24 september 2015. (obestämd)
- ↑ Re: OpenSSL sju säkerhetsfixar . E-postlista (5 juni 2014). Tillträdesdatum: 9 juni 2014. (obestämd)
- ↑ de Raadt, Theo Re: nya OpenSSL-brister . E-postlista (5 juni 2014). Tillträdesdatum: 9 juni 2014. (obestämd)
- ↑ 12 Langley, Adam BoringSSL (20 juni 2014) . Imperial Violet (20 juni 2014). Hämtad 21 juni 2014. Arkiverad från originalet 1 juni 2018. (obestämd)
- ↑ Goodin, Dan Google avslöjar oberoende "gaffel" av OpenSSL kallad "BoringSSL" . Ars Technica (20 juni 2014). Hämtad 21 juni 2014. Arkiverad från originalet 23 juni 2014. (obestämd)
- ↑ Sing, Joel OpenBSD - lib/libssl/src/crypto/evp evp_aead.c e_chacha20poly1305.c (nedlänk) (21 juni 2014). Hämtad 21 juni 2014. Arkiverad från originalet 22 juni 2014. (obestämd)
- ↑ de Raadt, Theo Boringssl och liknande . E-postlista (21 juni 2014). Hämtad: 28 oktober 2015. (obestämd)
- ↑ Beck, Bob OpenBSD - lib/libcrypto/crypto getentropy_linux.c (nedlänk) (20 juni 2014). Datum för åtkomst: 28 november 2015. Arkiverad från originalet den 9 juli 2014. (obestämd)
- ↑ Beck, Bob OpenBSD - lib/libcrypto/crypto getentropy_osx.c getentropy_solaris.c (nedlänk) (8 juli 2014). Datum för åtkomst: 28 november 2015. Arkiverad från originalet 22 juli 2014. (obestämd)
- ↑ Index för /pub/OpenBSD/LibreSSL (11 juli 2014). Hämtad 11 juli 2014. Arkiverad från originalet 14 januari 2016. (obestämd)
- ↑ Beck, Bob Första utgåvan av LibreSSL portable är tillgänglig . E-postlista (11 juli 2014). Hämtad: 11 juli 2014. (obestämd)
- ↑ Beck, Bob LibreSSL 2.0.1 släppt . E-postlista (13 juli 2014). Hämtad: 28 oktober 2015. (obestämd)
- ↑ Beck, Bob LibreSSL portable 2.0.2 släppt . E-postlista (16 juli 2014). Hämtad: 28 oktober 2015. (obestämd)
- ↑ Beck, Bob LibreSSL 2.0.3 släppt . E-postlista (22 juli 2014). Hämtad: 28 oktober 2015. (obestämd)
- ↑ 12 Beck , Bob LibreSSL 2.0.4 släppt . E-postlista (3 augusti 2014). Hämtad: 28 oktober 2015. (obestämd)
- ↑ Cook, Brent LibreSSL 2.0.5 släppt . E-postlista (8 augusti 2014). Hämtad: 28 oktober 2015. (obestämd)
- ↑ Unangst, Ted LibreSSL: Mer än 30 dagar senare (28 september 2014). Hämtad 9 juni 2014. Arkiverad från originalet 28 september 2014. (obestämd)
- ↑ 12 Beck , Bob LibreSSL 2.1.0 släppt . E-postlista (12 oktober 2014). Hämtad: 28 oktober 2015. (obestämd)
- ↑ 1 2 3 4 Jacoutot, Antoine OpenBSD 5.6 släppt . E-postlista (1 november 2014). Hämtad: 28 oktober 2015. (obestämd)
- ↑ LibreSSL aktiverat som standard (nedlänk) . ogiltig linux. Tillträdesdatum: 15 oktober 2015. Arkiverad från originalet den 8 december 2015. (obestämd)
- ↑ Byter tillbaka till OpenSSL . voidlinux.org . Hämtad 12 september 2021. Arkiverad från originalet 16 oktober 2021. (obestämd)
- ↑ Mark VonFange. PC-BSD 10.1.2: en intervju med Kris Moore . Officiell PC-BSD-blogg. Hämtad 15 oktober 2015. Arkiverad från originalet 6 september 2015. (obestämd)
- ↑ OPNsense version 15.7 släppt . OPNsense. Hämtad 15 oktober 2015. Arkiverad från originalet 21 september 2015. (obestämd)
- ↑ [Beta OpenELEC 6.0 Beta 2 släppt] (nedlänk) . Öppna ELEC. Hämtad 15 oktober 2015. Arkiverad från originalet 26 november 2015. (obestämd)
- ↑ Apple iOS 9: Säkerhets- och sekretessfunktioner (länk ej tillgänglig) . medium. - "OS X 10.11 levereras med LibreSSL.". Hämtad 24 oktober 2015. Arkiverad från originalet 25 november 2015. (obestämd)
- ↑ Orr, William En snabb sammanfattning av den senaste veckan . OpenSSL Valhalla Rampage (23 april 2014). Hämtad 30 april 2014. Arkiverad från originalet 29 april 2014. (obestämd)
- ↑ OpenBSD LibreSSL CVS Calloc Commits . Hämtad 28 november 2015. Arkiverad från originalet 23 mars 2019. (obestämd)
- ↑ OpenBSD LibreSSL CVS Double Free Commits . Hämtad 28 november 2015. Arkiverad från originalet 23 mars 2019. (obestämd)
- ↑ OpenBSD LibreSSL CVS osäker sådd . (obestämd)
- ↑ OpenBSD LibreSSL CVS kärnsådd (nedlänk) . Hämtad 28 november 2015. Arkiverad från originalet 16 september 2014. (obestämd)
- ↑ 1 2 3 LibreSSL-bärbar ChangeLog . LibreSSL. Datum för åtkomst: 28 november 2015. Arkiverad från originalet 28 november 2015. (obestämd)
- ↑ Beck, Bob LibreSSL 2.1.2 släppt . E-postlista (9 december 2014). Hämtad: 28 oktober 2015. (obestämd)
- ↑ 1 2 Cook, Brent LibreSSL 2.1.3 släppt . E-postlista (22 januari 2015). Hämtad: 28 oktober 2015. (obestämd)
- ↑ Cook, Brent LibreSSL 2.1.4 släppt . E-postlista (4 mars 2015). Hämtad: 28 oktober 2015. (obestämd)
- ↑ Cook, Brent LibreSSL 2.1.5 släppt . E-postlista (17 mars 2015). Hämtad: 28 oktober 2015. (obestämd)
- ↑ Cook, Brent LibreSSL 2.1.6 släppt . E-postlista (19 mars 2015). Hämtad: 28 oktober 2015. (obestämd)
- ↑ Cook, Brent LibreSSL 2.1.7 och 2.2.0 släpptes . E-postlista (11 juni 2015). Hämtad: 28 oktober 2015. (obestämd)
- ↑ 1 2 Cook, Brent LibreSSL 2.2.1 släppt . E-postlista (9 juli 2015). Hämtad: 28 oktober 2015. (obestämd)
- ↑ 1 2 Cook, Brent LibreSSL 2.2.2 släppt . E-postlista (6 augusti 2015). Hämtad: 28 oktober 2015. (obestämd)
- ↑ Beck, Bob LibreSSL 2.1.1 släppt (16 oktober 2014). Hämtad 28 november 2015. Arkiverad från originalet 23 mars 2019. (obestämd)
- ↑ OpenBSD LibreSSL CVS OPENSSL_NO_HEARTBEATS . (obestämd)
- ↑ Perlroth, Nicole . Regeringen tillkännager åtgärder för att återställa förtroendet för krypteringsstandarder (10 september 2013). Arkiverad från originalet den 12 juli 2014. Hämtad 9 maj 2014.
- ↑ Framtiden (eller bristen på sådan) för LibreSSL:s FIPS-objektmodul . Hämtad 28 november 2015. Arkiverad från originalet 8 december 2015. (obestämd)
- ↑ Vallat, Miod Re: CVS: cvs.openbsd.org: src . E-postlista (10 november 2014). Hämtad: 28 oktober 2015. (obestämd)
- ↑ Belopp sedan release 1.0.2
OpenBSD |
---|
Operativ system |
|
---|
gafflar |
|
---|
Relaterade Projekt |
|
---|
människor |
|
---|
Organisationer och andra resurser |
- OpenBSD Foundation
- Plädad tunga djävlar
- Journal
|
---|