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 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:
- OpenBSD od verze 5.6 [28]
- Void Linux , od 6. srpna 2014 [29] (přesunuto zpět do OpenSSL [30] 23. února 2021 )
- PC-BSD od verze 10.1.2 [31]
- jako alternativa v OPNsense od verze 15.7 [32]
- OpenELEC od verze 6.0beta2 [33]
- 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]
- 2.1.0: Automatické efemérní klávesy na eliptických křivkách [27]
- 2.1.2: Podpora pro vestavěný arc4random PRNG v OS X a FreeBSD [41]
- 2.1.2: Přepracovaná podpora šifer GOST
- 2.1.3: Podpora ALPN [42]
- 2.1.3: Podpora pro šifrovací sady SHA-256 Camellia
- 2.1.4: Podpora pro TLS_FALLBACK_SCSV na straně serveru [43]
- 2.1.4: certhash jako náhrada za skript c_rehash
- 2.1.4: X509_STORE_load_mem API pro načítání certifikátů z paměti (vylepšená podpora chroot)
- 2.1.4: Experimentální sestavení pro Windows
- 2.1.5: Vylepšení podpory Windows, první funkční 32bitová a 64bitová sestavení [44]
- 2.1.6: libtls deklarován jako stabilní a standardně povolený [45]
- 2.2.0: Podpora pro AIX a Cygwin [46]
- 2.2.1: Přidány eliptické křivky EC_curve_nid2nist a EC_curve_nist2nid [47] z OpenSSL, počáteční podpora pro Windows XP/2003
- 2.2.2: Definovaná konstanta LIBRESSL_VERSION_NUMBER [48] , přidány metody TLS_* jako náhrada za metody SSLv23_*, podpora sestavení s cmake.
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:
- 2.1.1: Po zjištění zranitelnosti POODLE v zastaralém protokolu SSL 3.0 je tento protokol standardně v LibreSSL zakázán [49] .
- 2.1.3: Odebrána podpora pro digitální podpis GOST R 34.10-94 [40] [42]
- 2.2.1: Odebrána podpora pro dynamický motor a MDC-2DES [47]
- 2.2.2: Odebrána podpora pro SSLv3 z openssl binary , odebrána podpora pro Internet Explorer 6, engine RSAX. [48]
- 2.3.0: Zcela odstraněna podpora pro SSLv3, SHA-0 a DTLS 1_BAD_VER
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] .
- V reakci na zranitelnost Heartbleed byla jednou z prvních odstraněných funkcí podpora paketů Heartbeat [50]
- Podpora nepotřebných platforem ("klasický" Mac OS , NetWare , OS / 2 , VMS , 16bitové Windows atd.)
- Podpora starších kompilátorů
- Odstraněny motory IBM 4758 , Broadcom ubsec , Sureware, Nuron, GOST, GMP, CSwift, CHIL, CAPI, Atalla a AEP kvůli zastaralému hardwaru nebo závislosti na nesvobodných knihovnách
- Odstraněn generátor pseudonáhodných čísel OpenSSL (a nahrazen arc4random)
- Makra preprocesoru C , která byla považována za nepotřebná nebo nebezpečná a byla v OpenSSL zastaralá (např. des_old.h)
- Staré nevyžádané soubory v assembleru , C a Perl (např . EGD )
- Podpora MD2 a SEED
- SSLv3, SHA-0, DTLS1_BAD_VER
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
- ↑ Vydání Cook B. LibreSSL 3.6.1 – 2022 .
- ↑ Projekt libressl Open Source na Open Hub: Stránka jazyků - 2006.
- ↑ 1 2 3 4 5 6 7 Adresář svobodného softwaru
- ↑ LibreSSL: Vydání . www.libressl.org. Získáno 3. října 2019. Archivováno z originálu dne 1. října 2019. (neurčitý)
- ↑ Unangst, Ted Původ libressl . flak (22. dubna 2014). Získáno 24. dubna 2014. Archivováno z originálu 24. dubna 2014. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ Re: OpenSSL sedm bezpečnostních oprav . Seznam adres (5. června 2014). Datum přístupu: 9. června 2014. (neurčitý)
- ↑ de Raadt, Theo Re: nové chyby OpenSSL . Seznam adres (5. června 2014). Datum přístupu: 9. června 2014. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ de Raadt, Theo Boringssl a takoví . Seznam adres (21. června 2014). Staženo: 28. října 2015. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ Index /pub/OpenBSD/LibreSSL (11. července 2014). Získáno 11. července 2014. Archivováno z originálu 14. ledna 2016. (neurčitý)
- ↑ Beck, Bob První vydání LibreSSL portable je k dispozici . Seznam adres (11. července 2014). Staženo: 11. července 2014. (neurčitý)
- ↑ Vydán Beck, Bob LibreSSL 2.0.1 . Seznam adres (13. července 2014). Staženo: 28. října 2015. (neurčitý)
- ↑ Vydán Beck, Bob LibreSSL portable 2.0.2 . Seznam adres (16. července 2014). Staženo: 28. října 2015. (neurčitý)
- ↑ Vydán Beck, Bob LibreSSL 2.0.3 . Seznam adres (22. července 2014). Staženo: 28. října 2015. (neurčitý)
- ↑ Vydáno 12 Beck , Bob LibreSSL 2.0.4 . Seznam adres (3. srpna 2014). Staženo: 28. října 2015. (neurčitý)
- ↑ Vydán Cook, Brent LibreSSL 2.0.5 . Seznam adres (8. srpna 2014). Staženo: 28. října 2015. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ Vydáno 12 Beck , Bob LibreSSL 2.1.0 . Seznam adres (12. října 2014). Staženo: 28. října 2015. (neurčitý)
- ↑ 1 2 3 4 Jacoutot, Antoine Vydán OpenBSD 5.6 . Seznam adres (1. listopadu 2014). Staženo: 28. října 2015. (neurčitý)
- ↑ LibreSSL je standardně povoleno (downlink) . neplatný linux. Datum přístupu: 15. října 2015. Archivováno z originálu 8. prosince 2015. (neurčitý)
- ↑ Přepnutí zpět na OpenSSL . voidlinux.org . Získáno 12. září 2021. Archivováno z originálu dne 16. října 2021. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ Vydána verze OPNsense 15.7 . OPNsense. Získáno 15. října 2015. Archivováno z originálu 21. září 2015. (neurčitý)
- ↑ [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. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ OpenBSD LibreSSL CVS Calloc Commits . Získáno 28. listopadu 2015. Archivováno z originálu dne 23. března 2019. (neurčitý)
- ↑ OpenBSD LibreSSL CVS Double Free Commits . Získáno 28. listopadu 2015. Archivováno z originálu dne 23. března 2019. (neurčitý)
- ↑ Nezabezpečené seedování OpenBSD LibreSSL CVS . (neurčitý)
- ↑ OpenBSD LibreSSL CVS Kernel Seeding (downlink) . Získáno 28. listopadu 2015. Archivováno z originálu 16. září 2014. (neurčitý)
- ↑ 1 2 3 Přenosný protokol změn LibreSSL . LibreSSL. Datum přístupu: 28. listopadu 2015. Archivováno z originálu 28. listopadu 2015. (neurčitý)
- ↑ Vydán Beck, Bob LibreSSL 2.1.2 . Seznam adres (9. prosince 2014). Staženo: 28. října 2015. (neurčitý)
- ↑ Vydán 1 2 Cook, Brent LibreSSL 2.1.3 . Seznam adres (22. ledna 2015). Staženo: 28. října 2015. (neurčitý)
- ↑ Vydán Cook, Brent LibreSSL 2.1.4 . Seznam adres (4. března 2015). Staženo: 28. října 2015. (neurčitý)
- ↑ Cook, Brent LibreSSL 2.1.5 vydán . Seznam adres (17. března 2015). Staženo: 28. října 2015. (neurčitý)
- ↑ Vydán Cook, Brent LibreSSL 2.1.6 . Seznam adres (19. března 2015). Staženo: 28. října 2015. (neurčitý)
- ↑ Vydány Cook, Brent LibreSSL 2.1.7 a 2.2.0 . Seznam adres (11. června 2015). Staženo: 28. října 2015. (neurčitý)
- ↑ Vydán 1 2 Cook, Brent LibreSSL 2.2.1 . Seznam adres (9. července 2015). Staženo: 28. října 2015. (neurčitý)
- ↑ Vydán 1 2 Cook, Brent LibreSSL 2.2.2 . Seznam adres (6. srpna 2015). Staženo: 28. října 2015. (neurčitý)
- ↑ 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. (neurčitý)
- ↑ OpenBSD LibreSSL CVS OPENSSL_NO_HEARTBEATS . (neurčitý)
- ↑ 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.
- ↑ Budoucnost (nebo její nedostatek) FIPS Object Module LibreSSL . Získáno 28. listopadu 2015. Archivováno z originálu 8. prosince 2015. (neurčitý)
- ↑ Vallat, Miod Re: CVS: cvs.openbsd.org: src . Seznam adres (10. listopadu 2014). Staženo: 28. října 2015. (neurčitý)
- ↑ Částka od vydání 1.0.2
OpenBSD |
---|
Operační systém |
- OpenBSD ( chronologie
- zabezpečení )
|
---|
vidličky |
|
---|
Související projekty |
|
---|
Lidé |
|
---|
Organizace a další zdroje |
- OpenBSD Foundation
- Plaid Tongue Devils
- Journal
|
---|