Krypto (C)

crypt on kirjastotoiminto, jota käytetään salasanahajautusarvon laskemiseen , jota voidaan käyttää käyttäjätilien salasanojen tallentamiseen pitäen ne suhteellisen piilossa ( passwd - tiedostossa). Toiminnon tulos ei ole vain hash, vaan tekstijono, joka sisältää myös  suolan , käytetyn hash-algoritmin ja parametrit, joilla hash luotiin, kuten kierrosten lukumäärä ja muut vaihtoehdot. Tämä tulostemerkkijono voidaan sitten tallentaa tekstitiedostoon.

Muodollisesti crypt tarjoaa salausavainten luontitoimintoja  salasanan varmentamiseen ja tallentamiseen Unix -järjestelmissä .

Suhde Unixin krypta-apuohjelmaan

UNIX - käyttöjärjestelmissä on samanniminen apuohjelma, crypt , joka sekoitetaan usein C-kirjastotoimintoon. Näiden kahden erottamiseksi toisistaan ​​viitataan yleensä järjestelmän apuohjelmaan nimellä crypt(1) , koska se on dokumentoitu julkaisun osiossa 1 .  UNIX-käsikirjaan ja kryptografiseen hajautustoimintoon kryptona (3) , kuten osiossa 3 on dokumentoitu.

Tiedot

Samaa kryptaustoimintoa käytetään sekä uuden tiivisteen luomiseen tallennusta varten että varmennettavan salasanan tiivisteen laskemiseen, ja   vertailua varten on kirjallinen suola .

Nykyaikaiset Unix crypt(3) -toteutukset tukevat erilaisia ​​hajautusmenetelmiä. Erityisesti hajautusalgoritmi voidaan määrittää ainutlaatuisella tunnisteella tuloksena olevan hash-tekstin etuliitteestä, joka noudattaa de facto -standardia nimeltä Modular Crypt Format (MCF) [1] [2] [3] .

Kirjastotoiminto crypt() sisältyy myös  ohjelmointikieliin Perl [4] , PHP [5] , Pike [6] , Python [7] ja Ruby [8] .

Tuetut avainten luontitoiminnot

Ajan myötä erilaisia ​​algoritmeja on otettu käyttöön. Taaksepäin yhteensopivuuden ylläpitämiseksi kirjoittajat alkoivat käyttää serialisointikäytäntöjä salasanatiivisteissä , joita myöhemmin kutsuttiin Modular Crypt Formatiksi (MCF) [ 2] . Koska standardia ei alun perin ollut olemassa, vanhat crypt(3)-tiivisteet voivat vaihdella skeemasta toiseen. Salasanahajautuskilpailun aikana muodostettiin seuraava muoto, joka edustaa keskimuotoa [9] :

$<id>[$<param>=<value>(,<param>=<value>)*][$<salt>[$<hash>]]

missä

Valitettavasti tätä standardia ei kehitetty heti, eivätkä kaikki järjestelmät noudata sitä.

Kaavio Algoritmi Esimerkki
DES Kyq4bCxAXJkbg
_ BSDi _EQ0.jzhSVeUyoSqLupI
yksi MD5 $1$etNnh7FA$OlM7eljE/B7F1J4XYNnk81
2, 2a, 2x, 2v bcrypt $2a$10$VIhIOofSMqgdGlL4wzE//e.77dAQGqntF/1dT7bqCrVtquInWy2qi
3 NTHASH $3$$8846f7eaee8fb117ad06bdd830b7586c
5 SHA-256 $5$9ks3nNEqv31FX.F$gdEoLFsCRsn/WRN3wxUnzfeZLoooVlzeF4WjLomTRFD
6 SHA-512 $6$qoE2letU$wWPRl.PVczjzeMVgjiA8LLy2nOyZbf7Amj3qLIL978o18gbMySdKZ7uepq9tmMQXxyTIrS12Pln.2Q/6Xscao0
md5 Solaris MD5 $md5,rounds=5000$GUBv0xjJ$$mSwgIswdjlTY0YxV7HBVm0
sha1 PBKDF1 ja SHA-1 $sha1$40000$jtNX3nZ2$hBNaIXkt4wBI2o5rsi8KejSjNqIq

Tuki käyttöjärjestelmissä

Järjestelmän tunnus Kaavio Linux FreeBSD NetBSD OpenBSD Solaris Mac käyttöjärjestelmä
DES y y y y y y
_ BSDi y y y y
yksi MD5 y y y y y
2, 2a, 2x, 2v bcrypt y y y y
3 NTHASH y
5 SHA-256 2,7+ 8.3+ y
6 SHA-512 2,7+ 8.3+ y
md5 Solaris MD5 y
sha1 PBKDF1 ja SHA1 y

Arkaaiset Unix-skeemat

BigCrypt on muunnos DES:stä, jota käyttävät HP-UX , Digital Unix ja OSF/1. Suurin ero DES:ään on se, että BigCrypt käyttää kaikkia salasanan merkkejä, ei vain ensimmäistä 8, ja siksi sillä on erilainen hash-pituus [10] .

Crypt16 on pieni muunnos DES:stä, joka tukee jopa 16 merkin pituisia salasanoja. Käytetään Ultrixissa ja Tru64 :ssä [11] .

Linux

C-standardikirjasto , jota käyttävät lähes kaikki Linux - jakelut , tarjoaa  salaustoiminnon toteutuksen, joka tukee DES-, MD5- ja (versiosta 2.7 lähtien) SHA-2-hajautusalgoritmien perhettä. Ulrich Drepper, glibc:n ylläpitäjä, on hylännyt tuen bcryptille, koska NIST ei ole hyväksynyt sitä [12] .

Mac OS

MacOS X : ssä natiivi crypt()tarjoaa rajoitetusti toimintoja ja tukee vain DES:ää ja BSDi:tä. OS X käyttää erillistä järjestelmää hasheilleen.

Muistiinpanot

  1. Simson Garfinkel, Alan Schwartz, Gene Spafford. "Practical Unix & Internet Security" Arkistoitu 31. heinäkuuta 2020 Wayback Machinessa . 2003. osio "4.3.2.3 crypt16( ), DES Extended, and Modular Crypt Format" Arkistoitu 18. kesäkuuta 2018 Wayback Machinessa . "Modular Crypt Format (MCF) määrittää laajennettavan järjestelmän salattujen salasanojen muotoilulle. MCF on yksi suosituimmista salattujen salasanojen muodoista"
  2. ↑ 1 2 "Modulaarinen salausmuoto: tai sivuhuomautus standardista, joka ei ole" Arkistoitu 9. syyskuuta 2017 Wayback Machineen .
  3. "Binäärinen modulaarinen kryptausmuoto" . Haettu 21. maaliskuuta 2016. Arkistoitu alkuperäisestä 11. kesäkuuta 2018.
  4. krypta - perldoc.perl.org . Haettu 21. maaliskuuta 2016. Arkistoitu alkuperäisestä 16. huhtikuuta 2018.
  5. PHP: krypta - Manuaalinen . Haettu 21. maaliskuuta 2016. Arkistoitu alkuperäisestä 16. huhtikuuta 2018.
  6. アーカイブされたコピー(linkki ei saatavilla) . Käyttöpäivä: 9. helmikuuta 2013. Arkistoitu alkuperäisestä 2. lokakuuta 2012. 
  7. 36.5. crypt - Unix-salasanojen tarkistustoiminto - Python 2.7.11 - dokumentaatio . Haettu 21. maaliskuuta 2016. Arkistoitu alkuperäisestä 26. lokakuuta 2012.
  8. Luokka: String (Ruby 2.3.0) . Haettu 21. maaliskuuta 2016. Arkistoitu alkuperäisestä 3. lokakuuta 2011.
  9. Salasanahajautuskilpailumerkkijonomuoto . Haettu 21. maaliskuuta 2016. Arkistoitu alkuperäisestä 27. tammikuuta 2017.
  10. passlib.hash.bigcrypt - BigCrypt - Passlib v1.6.5 - dokumentaatio . Haettu 21. maaliskuuta 2016. Arkistoitu alkuperäisestä 7. heinäkuuta 2017.
  11. passlib.hash.crypt16 - Crypt16 - Passlib v1.6.5 - dokumentaatio . Haettu 21. maaliskuuta 2016. Arkistoitu alkuperäisestä 7. heinäkuuta 2017.
  12. bcrypt-tuki salasanoille /etc/shadow - Red Hat Customer Portal . Haettu 21. maaliskuuta 2016. Arkistoitu alkuperäisestä 17. huhtikuuta 2018.

Linkit