LibreSSL

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 19. května 2020; kontroly vyžadují 3 úpravy .
LibreSSL
Typ knihovna funkcí , šifrovací software a nástroj
Vývojář Projekt OpenBSD [d]
Zapsáno v C [2] a jazyk symbolických instrukcí
Operační systém BSD [3] , GNU/Linux [3] , GNU/Hurd [3] , UNIX , macOS [3] a Microsoft Windows [3]
První vydání 11. července 2014
Nejnovější verze
Licence Licence OpenSSL [d] [3]alicence ISC[3]
webová stránka libressl.org

LibreSSL  je knihovna s implementací protokolů SSL / TLS . Tato knihovna je produktem týmu OpenBSD , který vyvíjí vidlici OpenSSL zaměřenou na poskytování vyšší úrovně zabezpečení. Před forkem byla v OpenSSL objevena chyba zabezpečení typu heartbleed .

Mezi funkcemi LibreSSL lze zaznamenat zaměření na vysoce kvalitní podporu protokolů SSL / TLS s odstraněním zbytečných funkcí, zapojení dalších ochranných nástrojů a výrazné vyčištění a přepracování základny kódu.

Projekt OpenBSD vyvíjí nativní edici balíčku LibreSSL pro samotné OpenBSD a přenosnou edici pro systémy podobné Unixu a Microsoft Windows . [čtyři]

Historie

Poté, co byla v OpenSSL objevena zranitelnost Heartbleed, vývojový tým OpenBSD provedl audit kódu a dospěl k závěru, že je nutné vytvořit a udržovat vlastní větev knihovny [5] . 11. dubna 2014 byla zaregistrována doména libressl.org a 22. dubna 2014 bylo oznámeno spuštění projektu.

Během prvního týdne vývojáři odstranili přes 90 000 řádků kódu C [6] [7] . Odstraněn zastaralý nebo nepoužívaný kód, také odstraněna podpora pro zastaralé a v naší době zřídka používané operační systémy. Zpočátku bylo plánováno vyvinout knihovnu LibreSSL jako náhradu za OpenSSL v operačním systému OpenBSD 5.6 a poté, co se odlehčená knihovna stane dostatečně stabilní, portovat ji na jiné platformy [8] [9] .

17. května 2014 na konferenci BSDCan 2014 představil Bob Beck přednášku „LibreSSL: Prvních 30 dní a co nás čeká“, která popsala výsledky prvního měsíce vývoje, provedené změny a nalezené problémy. [deset]

5. června 2014 byly zveřejněny některé zranitelnosti v OpenSSL. Přestože některé projekty byly o těchto zranitelnostech informovány předem [11] , vývojáři LibreSSL informováni nebyli; v důsledku toho Theo de Raadt obvinil vývojáře OpenSSL ze záměrného skrývání informací z projektů OpenBSD a LibreSSL [12] .

20. června 2014 Google vytvořil další fork OpenSSL s názvem BoringSSL a oznámil svůj záměr sdílet patche s projektem LibreSSL [13] [14] . Na žádost vývojářů LibreSSL Google přelicencoval některé své změny na licenci ISC [13] [15] . 21. června Theo de Raadt oznámil plány na vydání přenosné verze knihovny LibreSSL-portable [16] . 20. června začal portování kódu na Linux [17] a 8. července na platformy OS X a Solaris [18] .

11. července 2014 byla vydána první přenosná verze LibreSSL 2.0.0 [19] [20] . Po prvním vydání rychle následovaly verze 2.0.1 [21] (13. července), 2.0.2 [22] (16. července), 2.0.3 [23] (22. července), 2.0.4 [24] (3. srpna ) a 2.0.5 [25] (5. srpna), které opravily mnoho nedostatků první přenosné verze.

Dne 28. září 2014 představil Ted Unangst přednášku „LibreSSL: over 30 days later“, která popisuje úspěchy, problémy a změny provedené v měsících od vystoupení Boba Becka na konferenci BSDCan [10] [26] .

Počínaje verzí 2.1.0, [27] , vydanou 12. října 2014, se rychlost provádění změn v LibreSSL výrazně snížila a knihovna se stala funkční alternativou k OpenSSL. Většina změn ve verzích 2.1.x jsou opravy zranitelností nalezených v OpenSSL.

Použití

LibreSSL se používá jako výchozí knihovna pro implementaci TLS na následujících systémech:

  1. OpenBSD od verze 5.6 [28]
  2. Void Linux , od 6. srpna 2014 [29] (přesunuto zpět do OpenSSL [30] 23. února 2021 )
  3. PC-BSD od verze 10.1.2 [31]
  4. jako alternativa v OPNsense od verze 15.7 [32]
  5. OpenELEC od verze 6.0beta2 [33]
  6. OS X od verze 10.11 El Capitan [34]

Změny

Práce s pamětí

Některé z nejpozoruhodnějších a nejdůležitějších změn souvisí s nahrazením samostatně zapisovaných paměťových funkcí standardními knihovními funkcemi (např. strlcpy, calloc, asprintf, reallocarrayatd.) [35] [36] . To vám umožní později najít chyby přetečení vyrovnávací paměti pomocí speciálních nástrojů pro analýzu úniku paměti a také prošetřit selhání pomocí technologie ASLR , atributu NX bit , „ informátorů “ atd.

Protokol správy verzí také zobrazuje opravy pro potenciální dvojité uvolnění [37] . Existuje také mnoho dalších kontrol pro shodu velikostí parametrů, převody mezi nepodepsanými a podepsanými proměnnými, kontroly hodnot ukazatelů a návratových hodnot.

Preventivní opatření

V souladu s obecně uznávanými postupy bezpečného programování jsou možnosti a příznaky kompilátoru ve výchozím nastavení povoleny pro detekci potenciálních problémů ve fázi sestavování (-Wall, -Werror, -Wextra, -Wuninitialized). Vylepšená čitelnost kódu, která by měla v budoucnu usnadnit kontrolu kódu. Oprava nebo odstranění nepotřebných maker a obalů metod také zlepšuje čitelnost kódu a usnadňuje audit.

Problém z roku 2038 byl v kódu LibreSSL zcela opraven . Kromě toho, aby se zabránilo kompilátoru smazat kód pro vyčištění paměti z optimalizovaného sestavení, byly přidány funkce volání explicit_bzeroa , aby se zabránilo potenciálnímu útočníkovi číst hodnoty z dříve používané paměti.bn_clear

Kryptografie

Nebezpečná inicializace generátoru pseudonáhodných čísel s počátečními hodnotami byla nahrazena možnostmi, které poskytuje jádro operačního systému [38] [39] . Mezi další významné inovace patří podpora nové proudové šifry ChaCha a autentizačního kódu zprávy Poly1305 , stejně jako bezpečnější sada eliptických křivek (křivky brainpoolu z RFC 5639 , až 512 bitů).

Přidané funkce

V první verzi LibreSSL byly přidány následující funkce: podpora pro algoritmy ChaCha a Poly1305 , eliptické křivky Brainpool Archivováno 19. listopadu 2015 na Wayback Machine a ANSSI Archivováno 8. prosince 2015 na Wayback Machine , režimy šifrování AEAD -GCM a AES-GCM ChaCha20-Poly1305.

V následujících verzích se objevilo toto: [40]

Staré nezabezpečené funkce

V původní verzi LibreSSL byly některé funkce ve výchozím nastavení zakázány [28] . Některé z těchto funkcí byly později zcela odstraněny , včetně podpory pro Kerberos , exportní šifrovací sadu , TLS kompresi, DTLS heartbeat a SSL v2.

V pozdějších verzích byly navíc zakázány následující funkce:

Odebrané prvky

První vydání LibreSSL v OpenBSD 5.6 odstranilo velké množství kódu, který byl považován za nebezpečný, nepotřebný nebo zastaralý [28] .

Algoritmus Dual_EC_DRBG , u kterého existuje podezření, že má zadní vrátka [51] , byl také zničen. Také byly odstraněny nepoužívané protokoly a nezabezpečené algoritmy, včetně podpory pro FIPS 140-2 [52] , MD4 / MD5 [40] J-PAKE , [28] a SRP . [24]

Staré chyby

Jedním z důvodů kritiky OpenSSL je velký počet záznamů v nástroji pro sledování chyb , které zůstávají po mnoho let neopravené. Tyto staré chyby jsou nyní opraveny v LibreSSL [53] .

Zabezpečení a zranitelnost

Ukázalo se, že LibreSSL je imunní vůči mnoha zranitelnostem nalezeným v OpenSSL po větvi rozvětvení. Je pozoruhodné, že žádná z dosud nalezených zranitelností na vysoké úrovni v OpenSSL se nevztahuje na LibreSSL.

LibreSSL OpenSSL LibreSSL OpenSSL
Klasifikace 1.0.1 1.0.2 [54]
kritický 0 0 0 0
vysoký 0 čtyři 0 2
Střední čtrnáct 25 12 17
Nízký čtyři jedenáct 3 6
Celkový osmnáct 39 patnáct 23

Odkazy

Poznámky

  1. ↑ Vydání Cook B. LibreSSL 3.6.1  – 2022 .
  2. Projekt libressl Open Source na Open Hub: Stránka jazyků - 2006.
  3. 1 2 3 4 5 6 7 Adresář svobodného softwaru
  4. LibreSSL: Vydání . www.libressl.org. Získáno 3. října 2019. Archivováno z originálu dne 1. října 2019.
  5. Unangst, Ted Původ libressl . flak (22. dubna 2014). Získáno 24. dubna 2014. Archivováno z originálu 24. dubna 2014.
  6. Seltzer, Larry OpenBSD rozvětvují, prořezávají švestky, opravují OpenSSL . Nultý den . ZDNet (21. dubna 2014). Získáno 21. dubna 2014. Archivováno z originálu 21. dubna 2014.
  7. Brodkin, Jon OpenSSL kód neopravitelný, tvrdí tvůrce vidlice „LibreSSL“ . Ars Technica (22. dubna 2014). Získáno 24. dubna 2014. Archivováno z originálu 19. srpna 2014.
  8. McCallion, Jane Heartbleed: LibreSSL drhne „nezodpovědný“ kód OpenSSL (odkaz není k dispozici) . PC Pro (22. dubna 2014). Získáno 23. dubna 2014. Archivováno z originálu 26. června 2014. 
  9. Larabel, Michael OpenBSD potvrzuje, že LibreSSL bude přenosný . Phoronix (9. května 2014). Získáno 30. 5. 2014. Archivováno z originálu 8. 12. 2015.
  10. 1 2 Beck, Bob LibreSSL: Snímky prvních 30 dní a co budoucnost drží (17. května 2014). Získáno 17. 5. 2014. Archivováno z originálu 24. 9. 2015.
  11. Re: OpenSSL sedm bezpečnostních oprav . Seznam adres (5. června 2014). Datum přístupu: 9. června 2014.
  12. de Raadt, Theo Re: nové chyby OpenSSL . Seznam adres (5. června 2014). Datum přístupu: 9. června 2014.
  13. 12 Langley, Adam BoringSSL (20. června 2014) . Imperial Violet (20. června 2014). Získáno 21. června 2014. Archivováno z originálu 1. června 2018.
  14. Dobrý den, Dan Google odhaluje nezávislý „fork“ OpenSSL s názvem „BoringSSL“ . Ars Technica (20. června 2014). Získáno 21. června 2014. Archivováno z originálu 23. června 2014.
  15. Sing, Joel OpenBSD - lib/libssl/src/crypto/evp evp_aead.c e_chacha20poly1305.c (downlink) (21. června 2014). Získáno 21. června 2014. Archivováno z originálu 22. června 2014. 
  16. de Raadt, Theo Boringssl a takoví . Seznam adres (21. června 2014). Staženo: 28. října 2015.
  17. Beck, Bob OpenBSD - lib/libcrypto/crypto getentropy_linux.c (downlink) (20. června 2014). Datum přístupu: 28. listopadu 2015. Archivováno z originálu 9. července 2014. 
  18. Beck, Bob OpenBSD - lib/libcrypto/crypto getentropy_osx.c getentropy_solaris.c (stahování) (8. července 2014). Datum přístupu: 28. listopadu 2015. Archivováno z originálu 22. července 2014. 
  19. Index /pub/OpenBSD/LibreSSL (11. července 2014). Získáno 11. července 2014. Archivováno z originálu 14. ledna 2016.
  20. Beck, Bob První vydání LibreSSL portable je k dispozici . Seznam adres (11. července 2014). Staženo: 11. července 2014.
  21. ↑ Vydán Beck, Bob LibreSSL 2.0.1 . Seznam adres (13. července 2014). Staženo: 28. října 2015.
  22. ↑ Vydán Beck, Bob LibreSSL portable 2.0.2 . Seznam adres (16. července 2014). Staženo: 28. října 2015.
  23. ↑ Vydán Beck, Bob LibreSSL 2.0.3 . Seznam adres (22. července 2014). Staženo: 28. října 2015.
  24. ↑ Vydáno 12 Beck , Bob LibreSSL 2.0.4 . Seznam adres (3. srpna 2014). Staženo: 28. října 2015.
  25. ↑ Vydán Cook, Brent LibreSSL 2.0.5 . Seznam adres (8. srpna 2014). Staženo: 28. října 2015.
  26. Unangst, Ted LibreSSL: Více než 30 dní poté (28. září 2014). Získáno 9. června 2014. Archivováno z originálu 28. září 2014.
  27. ↑ Vydáno 12 Beck , Bob LibreSSL 2.1.0 . Seznam adres (12. října 2014). Staženo: 28. října 2015.
  28. 1 2 3 4 Jacoutot, Antoine Vydán OpenBSD 5.6 . Seznam adres (1. listopadu 2014). Staženo: 28. října 2015.
  29. LibreSSL je standardně povoleno (downlink) . neplatný linux. Datum přístupu: 15. října 2015. Archivováno z originálu 8. prosince 2015. 
  30. Přepnutí zpět na OpenSSL . voidlinux.org . Získáno 12. září 2021. Archivováno z originálu dne 16. října 2021.
  31. Mark VonFange. PC-BSD 10.1.2: Rozhovor s Krisem Moorem . Oficiální blog PC-BSD. Získáno 15. října 2015. Archivováno z originálu 6. září 2015.
  32. Vydána verze OPNsense 15.7 . OPNsense. Získáno 15. října 2015. Archivováno z originálu 21. září 2015.
  33. [Beta OpenELEC 6.0 Beta 2 uvolněna] (downlink) . OpenELEC. Získáno 15. října 2015. Archivováno z originálu dne 26. listopadu 2015. 
  34. Apple iOS 9: Funkce zabezpečení a ochrany osobních údajů (odkaz není k dispozici) . střední. - "OS X 10.11 se dodává s LibreSSL.". Získáno 24. října 2015. Archivováno z originálu dne 25. listopadu 2015. 
  35. Orr, William Krátká rekapitulace za poslední týden . OpenSSL Valhalla Rampage (23. dubna 2014). Získáno 30. dubna 2014. Archivováno z originálu 29. dubna 2014.
  36. OpenBSD LibreSSL CVS Calloc Commits . Získáno 28. listopadu 2015. Archivováno z originálu dne 23. března 2019.
  37. OpenBSD LibreSSL CVS Double Free Commits . Získáno 28. listopadu 2015. Archivováno z originálu dne 23. března 2019.
  38. Nezabezpečené seedování OpenBSD LibreSSL CVS .
  39. OpenBSD LibreSSL CVS Kernel Seeding (downlink) . Získáno 28. listopadu 2015. Archivováno z originálu 16. září 2014. 
  40. 1 2 3 Přenosný protokol změn LibreSSL . LibreSSL. Datum přístupu: 28. listopadu 2015. Archivováno z originálu 28. listopadu 2015.
  41. ↑ Vydán Beck, Bob LibreSSL 2.1.2 . Seznam adres (9. prosince 2014). Staženo: 28. října 2015.
  42. ↑ Vydán 1 2 Cook, Brent LibreSSL 2.1.3 . Seznam adres (22. ledna 2015). Staženo: 28. října 2015.
  43. ↑ Vydán Cook, Brent LibreSSL 2.1.4 . Seznam adres (4. března 2015). Staženo: 28. října 2015.
  44. Cook, Brent LibreSSL 2.1.5 vydán . Seznam adres (17. března 2015). Staženo: 28. října 2015.
  45. ↑ Vydán Cook, Brent LibreSSL 2.1.6 . Seznam adres (19. března 2015). Staženo: 28. října 2015.
  46. ↑ Vydány Cook, Brent LibreSSL 2.1.7 a 2.2.0 . Seznam adres (11. června 2015). Staženo: 28. října 2015.
  47. ↑ Vydán 1 2 Cook, Brent LibreSSL 2.2.1 . Seznam adres (9. července 2015). Staženo: 28. října 2015.
  48. ↑ Vydán 1 2 Cook, Brent LibreSSL 2.2.2 . Seznam adres (6. srpna 2015). Staženo: 28. října 2015.
  49. Beck, Bob LibreSSL 2.1.1 vydán (16. října 2014). Získáno 28. listopadu 2015. Archivováno z originálu dne 23. března 2019.
  50. OpenBSD LibreSSL CVS OPENSSL_NO_HEARTBEATS .
  51. Perlroth, Nicole . Vláda oznamuje kroky k obnovení důvěry v šifrovací standardy  (10. září 2013). Archivováno z originálu 12. července 2014. Staženo 9. května 2014.
  52. Budoucnost (nebo její nedostatek) FIPS Object Module LibreSSL . Získáno 28. listopadu 2015. Archivováno z originálu 8. prosince 2015.
  53. Vallat, Miod Re: CVS: cvs.openbsd.org: src . Seznam adres (10. listopadu 2014). Staženo: 28. října 2015.
  54. Částka od vydání 1.0.2