Poprzednie pytania SF, które widziałem, doprowadziły do odpowiedzi, które produkują hashowane hasło MD5.
Czy ktoś ma jakieś sugestie, aby stworzyć hashowane hasło SHA-512? Wolałbym jeden linijkę zamiast skryptu, ale jeśli skrypt jest jedynym rozwiązaniem, to też dobrze.
Aktualizacja
Zastępowanie poprzednich wersji py2 tą:
python3 -c "import crypt;print(crypt.crypt(input('clear-text pw: '), crypt.mksalt(crypt.METHOD_SHA512)))"
linux
authentication
encryption
md5
Belmin Fernandez
źródło
źródło
man 5 shadow
nazywa to „szyfrowanym hasłem”, więc zgodziłem się z tym terminem./etc/shadow
zawartość. Zobaczysz$x$salt$hash
.x
oznacza używany przez niego algorytmcrypt
, który6
jest typowy dla współczesnych linuksów, którym jest sha512 (patrzman 3 crypt
). Każda z poniższych odpowiedzi spowoduje wygenerowanie tego samego skrótu, o ile podasz mu tę samą sól.Odpowiedzi:
Oto jeden liniowiec:
Python 3.3+ zawiera
mksalt
w krypcie , która sprawia, że znacznie łatwiej (i bardziej bezpieczne) do wykorzystania:Jeśli nie stanowią argumentu
crypt.mksalt
(może to zaakceptowaćcrypt.METHOD_CRYPT
,...MD5
,SHA256
, iSHA512
), to użyje najsilniejszy dostępny.Identyfikator skrótu (liczba po pierwszej
$
) jest powiązany z zastosowaną metodą:Polecam sprawdzić, jakie są sole i takie, i jak dla drobnych pisarzy komentują różnicę między szyfrowaniem a haszowaniem.
Aktualizacja 1: Wytworzony ciąg jest odpowiedni dla skryptów shadow i kickstart. Aktualizacja 2: Ostrzeżenie. Jeśli używasz komputera Mac, zapoznaj się z komentarzem na temat używania tego w pythonie na komputerze Mac, gdzie nie działa ono zgodnie z oczekiwaniami.
źródło
random_salt
na rzeczywistą losową sól.$6asQOJRqB1i2
- nie wydaje się to wystarczająco długie, aby było poprawne!python -c 'import crypt; print crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512))'
crypt.crypt("test", "$6$rounds=200000$random_salt")
. 200000 zajmuje około 100 ms na moim obecnym laptopie.W Debianie możesz używać mkpasswd do tworzenia haseł za pomocą różnych algorytmów mieszających odpowiednich dla / etc / shadow. Jest zawarty w pakiecie whois (zgodnie z plikiem apt)
aby uzyskać listę dostępnych algorytmów mieszających:
HTH
źródło
mkpasswd
Pod Fedorą jest także program (część oczekiwań), ale do tego celu jest bezużyteczny.mkpasswd
której mówi, jest przeznaczona dla Debiana / Ubuntu. Wmkpasswd
Fedorze (przynajmniej do 14) brakuje-m
przełącznika.dpkg -S /usr/bin/mkpasswd
nie mogłem w to uwierzyć: Droot:$6$AbCdE$xyz:...
powinieneś użyć:mkpasswd -m sha-512 -S AbCdE
. Przy poprawnym haśle powinieneś uzyskać ten sam skrót.Najlepsza odpowiedź: grub-crypt
źródło
grub-crypt
polecenie, jest to naprawdę najbardziej niezawodny i wygodny sposób na zrobienie tego. Nie ma sensu bawić się solami ręcznie, gdy można to zepsuć. Problem polega na tym, że coraz bardziej nowoczesne systemy mają GRUB2 i dlatego nie będą zawierać tego polecenia.Oto krótki kod C do wygenerowania hasła SHA-512 w różnych systemach operacyjnych typu Unix.
Plik:
passwd-sha512.c
kompilować:
stosowanie:
źródło
Jednoliniowe rozwiązanie Perla do generowania zaszyfrowanego hasła SHA-512:
perl -le 'print crypt "desiredPassword", "\$6\$customSalt\$"'
Pracował na RHEL 6
źródło
Dlaczego nie wykonać poniższej kontroli i modyfikacji na maszynach Centos / RHEL, aby upewnić się, że wszystkie skróty haseł dla / etc / shadow są wykonywane za pomocą sha512. Następnie możesz po prostu ustawić swój passworkd normalnie za pomocą polecenia passwd
źródło
Oto jednowierszowy, który używa poleceń powłoki do utworzenia haszowanego hasła SHA-512 z losową solą:
Notatki
źródło
whois
pakiet z Fedory 18 nie zapewnia żadnychmkpasswd
.Przeczytaj komentarz poniżej, aby dowiedzieć się o konsekwencjach bezpieczeństwa dla tej odpowiedzi
Dla osób myślących w języku Ruby tutaj jest liniowiec:
źródło
Ten skrypt działał dla mnie na Ubuntu 12.04 LTS: https://gist.github.com/JensRantil/ac691a4854a4f6cb4bd9
Ma następujące funkcje, których brakuje niektórym innym alternatywom:
źródło
chpasswd
w systemie.Algogramy HASH służą do tworzenia skrótów MESSAGE, nigdy nie nadają się do haseł, które powinny używać pewnego rodzaju HKDF ( http://tools.ietf.org/rfc/rfc5869.txt ) - patrz PBKDF2 lub BCrypt
źródło
man crypt
mówi mi, że PBKDF2 nie jest obsługiwany.Możesz sklonować go z mojego repozytorium github, jeśli chcesz: https://github.com/antoncohen/mksha
źródło
To nie jest jeden liniowiec, ale może pomóc komuś:
źródło
random
nie jest kryptograficznie bezpieczny,os.urandom
należy go użyć. Również 8 znaków ze słownika o długości 56 znaków jest zdecydowanie za mało. Łączenie żądła w kółko w pythonie jest również złą formą (ma złożoność O (n ^ 2))Oczywiście, po prostu chwytasz drugie pole i możesz usunąć plik po dodaniu go do cienia lub do użycia z sudo (nadal najprawdopodobniej cień).
źródło
Spójrz na stronę podręcznika crypt (3) i myślę, że przekonasz się, że narzędzie do szyfrowania zostało zaktualizowane i używa glibc i sha256 (5 $) i sha512 (6 $), wielu rund, znacznie większej soli i tak dalej .
Najwyraźniej SHA512 ma znaczenie dla działania / etc / shadow.
To powiedziawszy, ta strona była bardzo pomocna - w szczególności MKPASSWD, ponieważ to rozwiązało MÓJ problem.
Biorąc pod uwagę potencjalnie „utracone” hasło, mogę użyć MKPASSWD i soli, aby wygenerować skrót SHA512 i potwierdzić / odrzucić listę haseł kandydujących.
Użyłbym rozpruwacza Johna - ale przynajmniej na moim sprzęcie (Raspberry Pi) i moim budżecie (nic) - John nie może tego zrobić (wydaje się, że nie obsługuje zaawansowanych funkcji crypt / glibc w darmowej wersji dla Raspbian).
Pamiętajcie, ponieważ mam wystarczające uprawnienia do czytania / pisania / etc / shadow, MOGĘ po prostu nadpisać skrót i kontynuować życie ... jest to ćwiczenie akademickie.
UWAGI Uwagi Glibc Wersja tej funkcji glibc2 obsługuje dodatkowe algorytmy szyfrowania.
źródło
Jeśli potrzebujesz alternatywy dla jednowierszowych napisanych w perl / python, mkpasswd jest dobrym rozwiązaniem. Chociaż jest zawarty w pakiecie Whois Debiana, brakuje go w systemach CentOS / RHEL. Zmodyfikowałem wersję Debiana mkpasswd i dodałem silniejszy mechanizm generowania soli oparty na OpenSSL. Wynikowy plik binarny w pełni zachowuje wszystkie parametry wiersza poleceń wersji Debiana. Kod jest dostępny na githubie i powinien zostać skompilowany w dowolnym systemie Linux: mkpasswd
źródło
Nie jestem pewien, w jaki sposób związany jest SHA-512
/etc/shadow
. Te hasła sącrypt
edytowane.Ale jeśli chcesz zaszyfrować hasło za pomocą SHA-512, możesz to zrobić przez
echo -n the_password | sha512sum
. Nie możesz użyć danych wyjściowych dla / etc / shadow.źródło
echo -n the_password
więc nie haszujesz nowej linii. </pedant>shadow
nie są już szyfrowane () od lat. Nowoczesne systemy używają co najmniej md5.shadow
dalszym ciągu sącrypt()
edytowane, ale funkcja została zaktualizowana w celu obsługi kilku różnych algorytmów. Niezależnie od tego metoda opisana w tej odpowiedzi nie wytwarza odpowiedniego skrótu/etc/shadow
. Algorytm jest bardziej złożony niż pojedyncza runda skrótu SHA-512.