Băm muối SHA512 từ mkpasswd không khớp với phiên bản trực tuyến


7

Tôi bối rối trước mã băm (ASCII) được lưu trữ trong Linux (Ubuntu) / etc / bóng.

Lấy một trường hợp giả định, hãy để mật khẩu là 'thử nghiệm' , muối là 'Zem197T4' .

Bằng cách chạy lệnh sau,

$ mkpasswd -m SHA-512 test Zem197T4

Một chuỗi dài các ký tự ASCII được tạo ra (Đây thực sự là cách Linux lưu trữ trong / etc / bóng)

$6$Zem197T4$oCUr0iMuvRJnMqk3FFi72KWuLAcKU.ydjfMvuXAHgpzNtijJFrGv80tifR1ySJWsb4sdPJqxzCLwUFkX6FKVZ0

Khi sử dụng trình tạo SHA-512 trực tuyến (ví dụ: http://www.insidepro.com/hashes.php?lang=eng ), những gì được tạo là một số mã hex như dưới đây:

tùy chọn 1) mật khẩu + muối

8d4b73598280019ef818e44eb4493c661b871bf758663d52907c762f649fe3355f698ccabb3b0c59e44f1f6db06ef4690c16a2682382617c6121925082613fe2

tùy chọn 2) muối + mật khẩu

b0197333c018b3b26856473296fcb8637c4f58ab7f4ee2d6868919162fa6a61c8ba93824019aa158e62ccf611c829026b168fc4bf90b2e6b63c0f617198006c2

Tôi tin rằng các mã hex này phải là 'cùng một thứ' như mã ascii được tạo bởi mkpasswd. Nhưng chúng có liên quan như thế nào?

Hy vọng ai đó có thể khai sáng cho tôi?


mkpasswdđang tạo băm trong "định dạng mã hóa mô-đun": pythonhosted.org/passlib/modular_crypt_format.html
Martin von Wittich

Câu trả lời:


7

Trên Ubuntu / Debian mkpasswdlà một phần của gói whois và được triển khai trong mkpasswd.cđó thực sự chỉ là một trình bao bọc tinh vi xung quanh crypt()chức năng trong glibc được khai báo unistd.h. crypt () lấy hai đối số mật khẩu và muối. Mật khẩu là "thử nghiệm" trong trường hợp này, muối được trả trước bằng "$ 6 $" cho hàm băm SHA-512 (xem mã hóa SHA ) để "$ 6 $ Zem197T4" được chuyển đến tiền điện tử ().

Có lẽ bạn nhận thấy -Rtùy chọn trong mkpasswdđó xác định số lượng vòng. Trong tài liệu bạn sẽ tìm thấy mặc định 5000 vòng. Đây là gợi ý đầu tiên tại sao kết quả sẽ không bao giờ bằng cách kết hợp đơn giản giữa muối và mật khẩu, nó không chỉ được băm một lần. Trên thực tế nếu bạn vượt qua -R 5000bạn nhận được kết quả tương tự. Trong trường hợp này, "$ 6 $ rounds = 5000 $ Zem197T4" được chuyển cho crypt () và việc triển khai trong glibc (đó là libc của Debian / Ubuntu) trích xuất phương thức và số vòng từ điều này.

Điều xảy ra bên trong tiền điện tử () phức tạp hơn là chỉ tính toán một hàm băm duy nhất và kết quả là mã hóa base64 cuối cùng. Đó là lý do tại sao kết quả bạn hiển thị chứa tất cả các loại ký tự sau '$' cuối cùng và không chỉ [0-9a-f] như trong chuỗi hex điển hình của hàm băm SHA-512. Thuật toán được mô tả chi tiết trong tài liệu SHA-Crypt đã được đề cập .


0

Toàn bộ ý tưởng của việc sử dụng mật khẩu muối là mỗi khi bạn tạo một hàm băm cho cùng một mật khẩu, bạn sẽ nhận được một kết quả khác nhau. Điều này là để tránh các vấn đề với bảng cầu vồng.

Giả sử một trong những người dùng của bạn sử dụng mật khẩu yếu, giả sử 123456, bóng / etc / của bạn bị lộ. Bây giờ tất cả các hacker độc ác phải làm là sử dụng bảng cầu vồng để tìm ra mật khẩu yếu và sử dụng lại nó tại các địa điểm khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.