crypt (Unix)
crypt je v informatice název unixové knihovní funkce a též název méně používané utility pro příkazový řádek. Aby bylo obě možnosti možné odlišit, je v textu často knihovní funkce označována jako crypt(3)
a utilita jako crypt(1)
, přičemž číslo vyjadřuje příslušnou sekci standardní manuálové stránky.
Typ softwaru | šifrovací software a příkaz |
---|---|
Některá data mohou pocházet z datové položky. |
Knihovní funkce crypt(3)
Knihovní funkce crypt()
slouží k jednosměrnému zakódování hesla pomocí kryptografické hašovací funkce, které využívá též kryptografickou sůl. Výstupem je textový řetězec určité délky, který obsahuje sůl, identifikaci použitého algoritmu a vlastní hash. Existuje několik variant implementace této funkce. Linuxová knihovna GNU C Library obsahuje funkci, která podporuje od verze 2.7 algoritmy DES, MD5 a SHA.
Tradiční DES schéma
Tradičně je používána modifikovaná forma DES algoritmu. Před zakódováním je heslo oříznuto na osm znaků, jsou odstraněny nejvyšší bity (je použita jen dolní polovina ASCII), čímž vzniká 56bitový DES klíč, který je použit k zakódování vynulovaného bloku, přičemž kódování je se stejným klíčem celkem 25× opakováno. Jako kryptografická sůl je použito 12 bitů, které slouží k variaci DES algoritmu, takže standardní DES implementace nelze použít. Výsledek je převeden do prostého textu pomocí Base64.
Filtr crypt(1)
Příkaz crypt
není běžnou součástí linuxových distribucí, protože je použit algoritmus ze šifrovacího stroje Enigma, který je pokládán za kryptograficky slabý a tudíž málo odolný vůči kryptoanalýze.
Související články
Externí odkazy
- Zdrojový kód pro crypt(1) z Version 7 Unixu (trivializovaný jednorotorový Enigma stroj)
- Zdrojový kód pro crypt(3) z Version 7 Unixu (implementuje navrhovaný DES)
- Zdrojový kód pro crypt(1) z Version 6 Unixu (implementace kryptografického stroje Borise Hagelina)