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
Sorts funktionsbibliotek , krypteringsmjukvara och verktyg
Utvecklaren OpenBSD-projekt [d]
Skrivet i C [2] och assemblerspråk
Operativ system BSD [3] , GNU/Linux [3] , GNU/Hurd [3] , UNIX , macOS [3] och Microsoft Windows [3]
Första upplagan 11 juli 2014
senaste versionen
Licens OpenSSL-licens [d] [3]ochISC-licens[3]
Hemsida libressl.org

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:

  1. OpenBSD sedan version 5.6 [28]
  2. Void Linux , från och med 6 augusti 2014 [29] (Flyttades tillbaka till OpenSSL [30] den 23 februari 2021 )
  3. PC-BSD sedan version 10.1.2 [31]
  4. som ett alternativ i OPNsense sedan version 15.7 [32]
  5. OpenELEC sedan version 6.0beta2 [33]
  6. 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]

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:

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] .

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

  1. Cook B. LibreSSL 3.6.1 släpptes  - 2022 .
  2. Libressl Open Source Project på Open Hub: Languages-sidan - 2006.
  3. 1 2 3 4 5 6 7 Gratis programvarukatalog
  4. LibreSSL: Releases . www.libressl.org. Hämtad 3 oktober 2019. Arkiverad från originalet 1 oktober 2019.
  5. Unangst, Ted Origins of libressl . flak (22 april 2014). Hämtad 24 april 2014. Arkiverad från originalet 24 april 2014.
  6. 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.
  7. 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.
  8. 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. 
  9. 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.
  10. 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.
  11. Re: OpenSSL sju säkerhetsfixar . E-postlista (5 juni 2014). Tillträdesdatum: 9 juni 2014.
  12. de Raadt, Theo Re: nya OpenSSL-brister . E-postlista (5 juni 2014). Tillträdesdatum: 9 juni 2014.
  13. 12 Langley, Adam BoringSSL (20 juni 2014) . Imperial Violet (20 juni 2014). Hämtad 21 juni 2014. Arkiverad från originalet 1 juni 2018.
  14. 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.
  15. 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. 
  16. de Raadt, Theo Boringssl och liknande . E-postlista (21 juni 2014). Hämtad: 28 oktober 2015.
  17. 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. 
  18. 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. 
  19. Index för /pub/OpenBSD/LibreSSL (11 juli 2014). Hämtad 11 juli 2014. Arkiverad från originalet 14 januari 2016.
  20. Beck, Bob Första utgåvan av LibreSSL portable är tillgänglig . E-postlista (11 juli 2014). Hämtad: 11 juli 2014.
  21. Beck, Bob LibreSSL 2.0.1 släppt . E-postlista (13 juli 2014). Hämtad: 28 oktober 2015.
  22. Beck, Bob LibreSSL portable 2.0.2 släppt . E-postlista (16 juli 2014). Hämtad: 28 oktober 2015.
  23. Beck, Bob LibreSSL 2.0.3 släppt . E-postlista (22 juli 2014). Hämtad: 28 oktober 2015.
  24. 12 Beck , Bob LibreSSL 2.0.4 släppt . E-postlista (3 augusti 2014). Hämtad: 28 oktober 2015.
  25. Cook, Brent LibreSSL 2.0.5 släppt . E-postlista (8 augusti 2014). Hämtad: 28 oktober 2015.
  26. Unangst, Ted LibreSSL: Mer än 30 dagar senare (28 september 2014). Hämtad 9 juni 2014. Arkiverad från originalet 28 september 2014.
  27. 12 Beck , Bob LibreSSL 2.1.0 släppt . E-postlista (12 oktober 2014). Hämtad: 28 oktober 2015.
  28. 1 2 3 4 Jacoutot, Antoine OpenBSD 5.6 släppt . E-postlista (1 november 2014). Hämtad: 28 oktober 2015.
  29. LibreSSL aktiverat som standard (nedlänk) . ogiltig linux. Tillträdesdatum: 15 oktober 2015. Arkiverad från originalet den 8 december 2015. 
  30. Byter tillbaka till OpenSSL . voidlinux.org . Hämtad 12 september 2021. Arkiverad från originalet 16 oktober 2021.
  31. 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.
  32. OPNsense version 15.7 släppt . OPNsense. Hämtad 15 oktober 2015. Arkiverad från originalet 21 september 2015.
  33. [Beta OpenELEC 6.0 Beta 2 släppt] (nedlänk) . Öppna ELEC. Hämtad 15 oktober 2015. Arkiverad från originalet 26 november 2015. 
  34. 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. 
  35. 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.
  36. OpenBSD LibreSSL CVS Calloc Commits . Hämtad 28 november 2015. Arkiverad från originalet 23 mars 2019.
  37. OpenBSD LibreSSL CVS Double Free Commits . Hämtad 28 november 2015. Arkiverad från originalet 23 mars 2019.
  38. OpenBSD LibreSSL CVS osäker sådd .
  39. OpenBSD LibreSSL CVS kärnsådd (nedlänk) . Hämtad 28 november 2015. Arkiverad från originalet 16 september 2014. 
  40. 1 2 3 LibreSSL-bärbar ChangeLog . LibreSSL. Datum för åtkomst: 28 november 2015. Arkiverad från originalet 28 november 2015.
  41. Beck, Bob LibreSSL 2.1.2 släppt . E-postlista (9 december 2014). Hämtad: 28 oktober 2015.
  42. 1 2 Cook, Brent LibreSSL 2.1.3 släppt . E-postlista (22 januari 2015). Hämtad: 28 oktober 2015.
  43. Cook, Brent LibreSSL 2.1.4 släppt . E-postlista (4 mars 2015). Hämtad: 28 oktober 2015.
  44. Cook, Brent LibreSSL 2.1.5 släppt . E-postlista (17 mars 2015). Hämtad: 28 oktober 2015.
  45. Cook, Brent LibreSSL 2.1.6 släppt . E-postlista (19 mars 2015). Hämtad: 28 oktober 2015.
  46. Cook, Brent LibreSSL 2.1.7 och 2.2.0 släpptes . E-postlista (11 juni 2015). Hämtad: 28 oktober 2015.
  47. 1 2 Cook, Brent LibreSSL 2.2.1 släppt . E-postlista (9 juli 2015). Hämtad: 28 oktober 2015.
  48. 1 2 Cook, Brent LibreSSL 2.2.2 släppt . E-postlista (6 augusti 2015). Hämtad: 28 oktober 2015.
  49. Beck, Bob LibreSSL 2.1.1 släppt (16 oktober 2014). Hämtad 28 november 2015. Arkiverad från originalet 23 mars 2019.
  50. OpenBSD LibreSSL CVS OPENSSL_NO_HEARTBEATS .
  51. 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.
  52. Framtiden (eller bristen på sådan) för LibreSSL:s FIPS-objektmodul . Hämtad 28 november 2015. Arkiverad från originalet 8 december 2015.
  53. Vallat, Miod Re: CVS: cvs.openbsd.org: src . E-postlista (10 november 2014). Hämtad: 28 oktober 2015.
  54. Belopp sedan release 1.0.2