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ä .
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.
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] .
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 |
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 |
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] .
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] .
MacOS X : ssä natiivi crypt()tarjoaa rajoitetusti toimintoja ja tukee vain DES:ää ja BSDi:tä. OS X käyttää erillistä järjestelmää hasheilleen.