OpenSSL - OpenSSL

OpenSSL
OpenSSL logo.svg
Sallii R3 -varmenteen yksityiskohtien salauksen kuvakaappauksen.png
Kehittäjä (t) OpenSSL -projekti
Ensimmäinen julkaisu 1998 ; 23 vuotta sitten ( 1998 )
Vakaa julkaisu 3.0.0 (7. syyskuuta 2021 ; 36 päivää sitten ) [±] ( 2021-09-07 )
Varasto
Kirjoitettu sisään C , kokoonpano , Perl
Tyyppi Cryptography kirjasto
Lisenssi OpenSSL -lisenssi, v3.0 vaihdettu Apache License 2.0: ksi
Verkkosivusto www .openssl .org

OpenSSL on ohjelmisto kirjasto sovelluksille että turvallisen viestinnän tietokoneverkoissa salakuuntelulta tai tarpeen yksilöidä osapuoli toisessa päässä. Sitä käyttävät laajalti Internet -palvelimet , mukaan lukien suurin osa HTTPS -verkkosivustoista .

OpenSSL sisältää avoimen lähdekoodin toteutuksen SSL- ja TLS- protokollista. Ydin kirjasto , kirjoitettu C-kielellä , toteuttaa perus salauksen toimintoja sekä tarjoaa erilaisia apuohjelmia. Saatavilla on kääreitä, jotka mahdollistavat OpenSSL -kirjaston käytön useilla tietokoneen kielillä.

OpenSSL -ohjelmistosäätiö (OSF) edustaa OpenSSL -projektia useimmissa juridisissa ominaisuuksissa, mukaan lukien avustajien lisenssisopimukset, lahjoitusten hallinta ja niin edelleen. OpenSSL -ohjelmistopalvelut (OSS) edustavat myös OpenSSL -projektia tukisopimuksia varten.

OpenSSL on saatavana useimpiin Unix-tyyppisiin käyttöjärjestelmiin (mukaan lukien Linux , macOS ja BSD ) ja Microsoft Windowsiin .

Projektin historia

OpenSSL -projekti perustettiin vuonna 1998 tarjoamaan ilmainen salausvälineiden sarja Internetissä käytettävälle koodille. Se perustuu Eric Andrew Youngin ja Tim Hudsonin SSLeay -haarukkaan , joka epävirallisesti päätti kehityksen 17. joulukuuta 1998, jolloin Young ja Hudson menivät molemmat RSA Securityn palvelukseen . Alkuperäiset jäsenet olivat Mark Cox, Ralf Engelschall, Stephen Henson, Ben Laurie ja Paul Sutton.

Toukokuussa 2019 OpenSSL: n hallintokomitea koostui 7 henkilöstä ja 17 kehittäjällä on sitoutumisoikeus (joista monet ovat myös osa OpenSSL: n hallintokomiteaa). Kokoaikaisia ​​työntekijöitä (stipendiaatteja) on vain kaksi ja loput vapaaehtoisia.

Hankkeen budjetti on alle miljoona dollaria vuodessa ja se perustuu pääasiassa lahjoituksiin. TLS 1.3: n kehittämistä sponsoroi Akamai.

Tärkeimmät versiot

OpenSSL -julkaisuhistoria
Versio Alkuperäinen julkaisupäivä Kommentti Viimeinen pieni versio
Vanha versio, ei enää yllä: 0.9.1 23. joulukuuta 1998 ( 1998-12-23 )
  • OpenSSL -projektin virallinen aloitus
0.9.1c (23. joulukuuta 1998)
Vanha versio, ei enää yllä: 0.9.2 22. maaliskuuta 1999 ( 1999-03-22 )
  • 0.9.1c: n seuraaja
0.9.2b (6. huhtikuuta 1999)
Vanha versio, ei enää yllä: 0.9.3 25. toukokuuta 1999 ( 1999-05-25 )
  • 0.9.2b: n seuraaja
0.9.3a (27. toukokuuta 1999)
Vanha versio, ei enää yllä: 0.9.4 9. elokuuta 1999 ( 1999-08-09 )
  • Seuraaja 0.9.3a
0.9.4 (9. elokuuta 1999)
Vanha versio, ei enää yllä: 0.9.5 28. helmikuuta 2000 ( 2000-02-28 )
  • Seuraaja 0.9.4
0.9.5a (1. huhtikuuta 2000)
Vanha versio, ei enää yllä: 0.9.6 24. syyskuuta 2000 ( 2000-09-24 )
  • Seuraaja 0.9.5a
0.9.6m (17. maaliskuuta 2004)
Vanha versio, ei enää yllä: 0.9.7 31. joulukuuta 2002 ( 2002-12-31 )
  • Seuraaja 0,9,6 m
0.9.7m (23. helmikuuta 2007)
Vanha versio, ei enää yllä: 0.9.8 5. heinäkuuta 2005 ( 2005-07-05 )
  • Seuraaja 0,9,7 m
0.9.8zh (3. joulukuuta 2015)
Vanha versio, ei enää yllä: 1.0.0 29. maaliskuuta 2010 ( 29.3.2010 )
  • Seuraaja 0.9.8n
1.0.0t (3. joulukuuta 2015 )  ( 2015-12-03 )
Vanha versio, ei enää yllä: 1.0.1 14. maaliskuuta 2012 ( 14.3.2012 )
  • 1.0.0h: n seuraaja
  • Tuettu 31. joulukuuta 2016 asti
  • RFC 6520 TLS/DTLS -syketuki
  • SCTP -tuki
  • RFC 5705 TLS -materiaalin viejä
  • RFC 5764 DTLS-SRTP-neuvottelut
  • Seuraava pöytäkirjaneuvottelu
  • PSS -allekirjoitukset varmenteissa, pyynnöissä ja varmenteiden peruutusluetteloissa (CRL)
  • Tuki salasanapohjaisille vastaanottajatiedoille CMS: lle
  • Tuki TLS 1.2 ja TLS 1.1
  • Alustava FIPS 140 -ominaisuus vahvistamattomalle 2.0 -FIPS -moduulille
  • Secure Remote Password Protocol (SRP) -tuki
1.0.1u (22. syyskuuta 2016 )  ( 22.9.2016 )
Vanha versio, ei enää yllä: 1.0.2 22. tammikuuta 2015 ( 22.1.2015 )
  • 1.0.1l: n seuraaja
  • Tuettu 31. joulukuuta 2019 asti (pitkäaikainen tuki)
  • Suite B -tuki TLS 1.2: lle ja DTLS 1.2: lle
  • Tuki DTLS 1.2: lle
  • TLS -automaattisen elliptisen käyrän (EC) valinta
  • API määrittää TLS -tuetut allekirjoitusalgoritmit ja -käyrät
  • SSL_CONF -määrityssovellusliittymä
  • TLS Brainpool -tuki
  • ALPN -tuki
  • CMS tuki RSA-PSS , RSA-OAEP , ECDH ja X9.42 DH
  • FIPS 140 -tuki
1.0.2u (20. joulukuuta 2019 )  ( 2019-12-20 )
Vanha versio, ei enää yllä: 1.1.0 25. elokuuta 2016 ( 25.8.2016 )
  • 1.0.2h: n seuraaja
  • Tuettu 11.9.2019 asti
  • Tuki BLAKE2: lle (RFC 7693)
  • Tuki ChaCha20 - Poly1305 (RFC 7539 )
  • Tuki: X25519 (RFC 7748)
  • Tukea DANE ja Certificate Transparency
  • Tuki CCM salausohjelmistoa
  • Tuki laajennetulle pääsalaisuudelle
  • SSLv2 poistettu
  • Kerberos -salaustuki tuki poistettu
  • RC4 ja 3DES poistettiin oletusarvoisista salausohjelmista libssl: ssä
  • Poista DSS, SEED, IDEA, CAMELLIA ja AES-CCM DEFAULT-salausluettelosta
  • 40 ja 56 bitin salaustuki poistettu libssl: stä
  • FIPS 140 -tuki poistettu
1.1.0l (10. syyskuuta 2019 )  ( 2019-09-10 )
Vanhempi versio, mutta silti ylläpidetty: 1.1.1 11. syyskuuta 2018 ( 2018-09-11 ) jatkuva kehitys
Nykyinen vakaa versio: 3.0.0 7. syyskuuta 2021 ( 2021-09-07 ) jatkuva kehitys
Legenda:
Vanha versio
Vanhempi versio, edelleen ylläpidetty
Uusin versio
Uusin esikatseluversio
Tuleva julkaisu

Algoritmit

OpenSSL tukee useita erilaisia ​​salausalgoritmeja:

Ciphers
AES , Blowfish , Camellia , Chacha20 , Poly1305 , SEED , CAST-128 , DES , IDEA , RC2 , RC4 , RC5 , Triple DES , GOST 28147-89 , SM4
Salaushajautustoiminnot
MD5 , MD4 , MD2 , SHA-1 , SHA-2 , SHA-3 , RIPEMD-160 , MDC-2 , GOST R 34.11-94 , BLAKE2 , Whirlpool , SM3
Julkisen avaimen salaus
RSA , DSA , Diffie – Hellman-avainten vaihto , elliptinen käyrä , X25519 , Ed25519 , X448 , Ed448 , GOST R 34.10-2001 , SM2

( Täydellistä eteenpäin salassapitoa tuetaan käyttämällä elliptistä käyrää Diffie – Hellman versiosta 1.0 lähtien.)

FIPS 140 Validointi

FIPS 140 on Yhdysvaltain liittovaltion ohjelma salausmoduulien testaamiseen ja sertifiointiin. Varhainen FIPS 140-1 -varmenne OpenSSL: n FOM 1.0: lle peruutettiin heinäkuussa 2006 "kun esitettiin kysymyksiä validoidun moduulin vuorovaikutuksesta ulkopuolisten ohjelmistojen kanssa". Moduuli sertifioitiin uudelleen helmikuussa 2007, ennen kuin se siirtyi FIPS 140-2: lle. OpenSSL 1.0.2 tuki OpenSSL FIPS Object Module (FOM) -moduulin käyttöä, joka rakennettiin toimittamaan FIPS-hyväksyttyjä algoritmeja FIPS 140-2 -validoidussa ympäristössä. OpenSSL päätti kiistanalaisesti luokitella 1.0.2 -arkkitehtuurin 31. elokuuta 2019 voimaan '' End of Life '' tai '' EOL '' huolimatta siitä, että se oli ainoa OpenSSL -versio, joka oli tällä hetkellä saatavilla FIPS -tilan tuella. EOL: n seurauksena monet käyttäjät eivät pystyneet ottamaan FOM 2.0: ta oikein käyttöön ja eivät noudattaneet vaatimuksia, koska he eivät saaneet 1.0.2 -arkkitehtuurin laajennettua tukea, vaikka itse FOM pysyi vahvistettuna vielä kahdeksan kuukautta.

FIPS Object Module 2.0 pysyi FIPS 140-2 -validoinnissa useissa muodoissa 1. syyskuuta 2020 asti, jolloin NIST poistikin FIPS 186-2: n käytön digitaalisesta allekirjoitusstandardista ja merkitsi kaikki ei-yhteensopivat moduulit historiallisiksi. Tämä nimitys sisältää liittovaltion virastoille varoituksen, että niiden ei pitäisi sisällyttää moduulia uusiin hankintoihin. Kaikki kolme OpenSSL -validointia sisällytettiin poistamiseen - OpenSSL FIPS Object Module (sertifikaatti #1747), OpenSSL FIPS Object Module SE (sertifikaatti #2398) ja OpenSSL FIPS Object Module RE (sertifikaatti #2473). Monet "Private Label" OpenSSL -pohjaiset validoinnit ja konsulttien luomat kloonit siirrettiin myös historialliseen luetteloon, vaikka jotkin FIPS-validoidut moduulit, joilla on korvaava yhteensopivuus, välttivät poistamisen, kuten Googlen BoringCrypto ja SafeLogicin CryptoComply.

OpenSSL 3.0 palautti FIPS-tilan ja kävi läpi FIPS 140-2 -testauksen, mutta viivästyi merkittävästi: Työ aloitettiin ensimmäisen kerran vuonna 2016 SafeLogicin tuella ja Oraclen lisätuella vuonna 2017, mutta prosessi on ollut haastava. 20. lokakuuta 2020 OpenSSL FIPS Provider 3.0 lisättiin CMVP Implementation Under Test List -luetteloon, mikä heijasti virallista sitoutumista testauslaboratorioon FIPS 140-2 -validoinnin jatkamiseksi. Tämä johti joukkoon sertifikaatteja seuraavien kuukausien aikana.

Lisensointi

OpenSSL oli kaksoislisenssillä OpenSSL-lisenssin ja SSLeay-lisenssin mukaisesti, mikä tarkoittaa, että kumman tahansa lisenssin ehtoja voidaan käyttää. OpenSSL-lisenssi on Apache-lisenssi 1.0 ja SSLeay-lisenssi muistuttaa jonkin verran 4-lausekkeen BSD-lisenssiä . Koska OpenSSL -lisenssi oli Apache License 1.0, mutta ei Apache License 2.0, se vaatii mainosmateriaalissa ja mahdollisessa uudelleenjaossa ilmauksen "tämä tuote sisältää OpenSSL -projektin kehittämän ohjelmiston käytettäväksi OpenSSL -työkalupakissa". OpenSSL -lisenssi). Tämän rajoituksen vuoksi OpenSSL -lisenssi ja Apache -lisenssi 1.0 eivät ole yhteensopivia GNU GPL: n kanssa . Jotkut GPL -kehittäjät ovat lisänneet lisensseihinsä OpenSSL -poikkeuksen , joka sallii nimenomaan OpenSSL: n käytön järjestelmän kanssa. Sekä GNU Wget että climm käyttävät tällaisia ​​poikkeuksia. Jotkut paketit (kuten Deluge ) muuttavat nimenomaisesti GPL -lisenssiä lisäämällä ylimääräisen osan poikkeuksen dokumentoivan lisenssin alkuun. Muut paketit käyttävät LGPL -lisensoitua GnuTLS- , BSD -lisensoitua Botan- tai MPL -lisensoitua NSS -palvelua , jotka suorittavat saman tehtävän.

OpenSSL ilmoitti elokuussa 2015, että se vaatii useimpia osallistujia allekirjoittamaan Contributor License Agreement (CLA) -lisenssisopimuksen ja että OpenSSL lisensoidaan lopulta Apache License 2.0 -ehtojen mukaisesti . Tämä prosessi alkoi maaliskuussa 2017 ja valmistui vuonna 2018.

OpenSSL 3.0.0 julkaistiin 7. syyskuuta 2021 Apache License 2.0 -lisenssillä.

Huomattavia haavoittuvuuksia

Palvelun epääminen: ASN.1 -jäsennys

OpenSSL 0.9.6k: ssä on vika, jossa tietyt ASN.1 -sekvenssit laukaisevat suuren määrän rekursioita Windows -koneilla, jotka löydettiin 4. marraskuuta 2003. Windows ei voinut käsitellä suuria rekursioita oikein, joten OpenSSL kaatui. Mahdollisen suuren määrän ASN.1 -sekvenssien lähettäminen voisi aiheuttaa OpenSSL: n kaatumisen.

OCSP -nidontahaavoittuvuus

Luodessaan kättelyä asiakas voi lähettää väärin muotoillun ClientHello -viestin, mikä johtaa OpenSSL -jäsennykseen enemmän kuin viestin loppu. CVE -projektin antama tunniste CVE - 2011-0014 vaikutti kaikkiin OpenSSL -versioihin 0.9.8h - 0.9.8q ja OpenSSL 1.0.0 - 1.0.0c. Koska jäsentäminen voi johtaa lukemiseen väärästä muistiosoitteesta, hyökkääjä saattoi aiheuttaa DoS: n . On myös mahdollista, että jotkin sovellukset paljastavat jäsennettyjen OCSP -laajennusten sisällön , mikä johtaa siihen, että hyökkääjä voi lukea ClientHello -muistin jälkeen tulleen muistin sisällön.

ASN.1 BIO -haavoittuvuus

Kun käytät Basic Input/Output (BIO) - tai FILE -pohjaisia ​​toimintoja epäluotettavien DER -muotoisten tietojen lukemiseen , OpenSSL on haavoittuva. Tämä haavoittuvuus havaittiin 19. huhtikuuta 2012, ja sille annettiin CVE -tunniste CVE - 2012-2110 . Vaikka se ei vaikuta suoraan OpenSSL: n SSL/TLS -koodiin, se ei myöskään vaikuttanut kaikkiin sovelluksiin, jotka käyttivät ASN.1 -toimintoja (erityisesti d2i_X509 ja d2i_PKCS12).

SSL-, TLS- ja DTLS -selkeän tekstin palautushyökkäys

Käsiteltäessä CBC-salauspaketteja SSL-, TLS- ja DTLS-protokollissa OpenSSL havaittiin haavoittuvaksi ajoitushyökkäykselle MAC-käsittelyn aikana. Nadhem Alfardan ja Kenny Paterson löysivät ongelman ja julkaisivat havaintonsa 5. helmikuuta 2013. Haavoittuvuudelle annettiin CVE -tunnus CVE - 2013-0169 .

Ennustettavat yksityiset avaimet (Debian-erityinen)

OpenSSL: n pseudosatunnaislukugeneraattori saa entropian käyttämällä monimutkaisia ​​ohjelmointimenetelmiä. Jotta Valgrind -analyysityökalu ei antaisi siihen liittyviä varoituksia, Debian -jakelun ylläpitäjä asetti korjaustiedoston Debianin OpenSSL -paketin varianttiin, joka vahingossa rikkoi satunnaislukugeneraattorinsa rajoittamalla sen luottamien yksityisten avainten kokonaismäärän 32 768: een. Rikkoutunut versio sisällytettiin Debian-julkaisuun 17. syyskuuta 2006 (versio 0.9.8c-1), mikä vaaransi myös muut Debian-pohjaiset jakelut, esimerkiksi Ubuntun . Käyttövalmiit hyödyt ovat helposti saatavilla.

Debian ilmoitti virheestä 13. toukokuuta 2008. Debian 4.0 -jakelussa (etch) nämä ongelmat korjattiin versiossa 0.9.8c-4etch3, kun taas Debian 5.0 -jakelun (lenny) korjaukset toimitettiin versiossa 0.9.8g -9.

Sydämellinen

Image
Heartbleed -bugia edustava logo

OpenSSL versio 1.0.1 kautta 1.0.1f on vakava muistin käsittelyllä bugi niiden täytäntöönpanossa TLS Heartbeat laajennus, jonka avulla voitaisiin paljastaa jopa 64  kt sovelluksen muistiin jokaisen syke ( CVE - 2014-0160 ). Lukemalla verkkopalvelimen muistia hyökkääjät voivat käyttää arkaluonteisia tietoja, mukaan lukien palvelimen yksityinen avain . Tämä voi sallia hyökkääjien purkaa aiemmin salakuunnellut viestinnät, jos käytetty salausprotokolla ei takaa täydellistä eteenpäin salassapitoa . Yksityisen avaimen tuntemus voi myös antaa hyökkääjälle mahdollisuuden tehdä välitön hyökkäys tulevaa viestintää vastaan. Haavoittuvuus saattaa myös paljastaa salaamattomia osia muiden käyttäjien arkaluonteisista pyynnöistä ja vastauksista, mukaan lukien istuntoevästeet ja salasanat, joiden avulla hyökkääjät voivat kaapata palvelun toisen käyttäjän henkilöllisyyden .

Sen julkistamisen yhteydessä 7. huhtikuuta 2014 noin 17% tai puoli miljoonaa luotettavien viranomaisten varmentamista Internetin suojatuista verkkopalvelimista uskottiin olevan alttiita hyökkäykselle. Heartbleed voi kuitenkin vaikuttaa sekä palvelimeen että asiakasohjelmaan.

CCS -injektion haavoittuvuus

CCS -ruiskutuksen haavoittuvuus ( CVE - 2014-0224 ) on suojauksen ohitushaavoittuvuus, joka johtuu materiaalin avaamiseen käytettävien OpenSSL -menetelmien heikkoudesta.

Tätä haavoittuvuutta voidaan hyödyntää man-in-the-middle-hyökkäyksen avulla, jolloin hyökkääjä voi pystyä purkamaan salauksen ja muuttamaan liikennettä. Todentamaton etähyökkääjä voi hyödyntää tätä haavoittuvuutta pakottamalla heikon avainmateriaalin käyttämään erikoismuotoiltua kättelyä. Onnistunut hyväksikäyttö voi johtaa suojauksen ohitustilaan, jossa hyökkääjä voi päästä käsiksi mahdollisesti arkaluonteisiin tietoihin. Hyökkäys voidaan suorittaa vain haavoittuvan asiakkaan ja palvelimen välillä.

OpenSSL -asiakkaat ovat haavoittuvia kaikissa OpenSSL -versioissa ennen versioita 0.9.8za, 1.0.0m ja 1.0.1h. Palvelinten tiedetään olevan haavoittuvia vain OpenSSL 1.0.1: ssä ja 1.0.2-beta1: ssä. OpenSSL -palvelimien käyttäjiä, jotka ovat vanhempia kuin 1.0.1, kehotetaan päivittämään varotoimenpiteenä.

ClientHello sigalgs DoS

Tämän haavoittuvuuden ( CVE - 2015-0291 ) avulla kuka tahansa voi ottaa varmenteen, lukea sen sisällön ja muokata sitä tarkasti väärinkäyttääkseen heikkoutta, joka saa varmenteen kaatamaan asiakkaan tai palvelimen. Jos asiakas muodostaa yhteyden OpenSSL 1.0.2 -palvelimeen ja neuvottelee uudelleen virheellisen allekirjoitusalgoritmin laajennuksen kanssa, tapahtuu nollapisteen poistaminen. Tämä voi aiheuttaa DoS -hyökkäyksen palvelinta vastaan.

Stanfordin tietoturvatutkija David Ramos käytti yksityistä hyväksikäyttöä ja esitteli sen OpenSSL -tiimille, joka sitten korjasi ongelman.

OpenSSL luokitteli virheen vakavaksi ongelmaksi, ja huomasi, että versio 1.0.2 havaittiin haavoittuvaksi.

Avainhyökkäys Diffie – Hellmanin pieniä alaryhmiä vastaan

Tämän haavoittuvuuden ( CVE - 2016-0701 ) avulla voidaan tiettyjen olosuhteiden täyttyessä palauttaa OpenSSL -palvelimen yksityinen Diffie -Hellman -avain. Adobe System Security -tutkija Antonio Sanso ilmoitti haavoittuvuudesta yksityisesti.

OpenSSL luokitteli virheen vakavaksi ongelmaksi ja huomasi vain version 1.0.2 olevan haavoittuva.

Haarukat

Yhdistetty SSL

Vuonna 2009 alkuperäisen OpenSSL -sovellusliittymän turhautumisen jälkeen tuolloin OpenBSD -kehittäjä Marco Peereboom hajotti alkuperäisen sovellusliittymän luomalla Agglomerated SSL (assl), joka käyttää OpenSSL API: ta uudelleen konepellin alla, mutta tarjoaa paljon yksinkertaisemman ulkoisen käyttöliittymän. Se on sittemmin poistettu käytöstä vuoden 2016 LibreSSL -haarukan valossa .

LibreSSL

Huhtikuussa 2014 Heartbleedin jälkeen OpenBSD -projektin jäsenet haarautuivat OpenSSL: lle 1.0.1g -haarasta alkaen luodakseen projektin nimeltä LibreSSL . Ensimmäisen OpenSSL -koodikannan karsimisviikon aikana haarukasta oli poistettu yli 90 000 C -koodiriviä.

BoringSSL

Kesäkuussa 2014 Google julkisti oman OpenSSL -haarukkansa, nimeltään BoringSSL. Google aikoo tehdä yhteistyötä OpenSSL- ja LibreSSL-kehittäjien kanssa. Google on sittemmin kehittänyt uuden BoringSSL -pohjaisen Tink -kirjaston.

Katso myös

Huomautuksia

Viitteet

Ulkoiset linkit