Có phải tất cả các bản phân phối Linux đều sử dụng cùng hàm băm mật mã ?
Nếu có, nó có được cung cấp với kernel không?
EDIT: - Tôi đề cập đến chức năng chủ yếu được sử dụng để lưu trữ mật khẩu đăng nhập của người dùng.
Có phải tất cả các bản phân phối Linux đều sử dụng cùng hàm băm mật mã ?
Nếu có, nó có được cung cấp với kernel không?
EDIT: - Tôi đề cập đến chức năng chủ yếu được sử dụng để lưu trữ mật khẩu đăng nhập của người dùng.
Câu trả lời:
Không & không cho câu hỏi của bạn.
Tôi sẽ xem crypt(3)
chức năng để biết thêm. Từ man crypt(3)
:
KIỂM TRA GNU
Phiên bản glibc2 của chức năng này có các tính năng bổ sung sau. Nếu muối là một chuỗi ký tự bắt đầu bằng ba ký tự
$1$
theo sau nhiều nhất là tám ký tự và được chấm dứt tùy ý$
, thì thay vì sử dụng máy DES, hàm mật mã glibc sử dụng thuật toán dựa trên MD5 và xuất ra tối đa 34 byte, cụ thể là , trong đó viết tắt của tối đa 8 ký tự theo sau trong muối, theo sau là 22 byte được chọn từ tập hợp . Toàn bộ khóa có ý nghĩa ở đây (thay vì chỉ 8 byte đầu tiên).$1$&‹string›$
‹string›
$1$
[a–zA–Z0–9./]
Bạn có thể kiểm tra cài đặt pam của mình để xem bạn đang sử dụng MD5 hay DES:
$ egrep "password.*pam_unix.so" /etc/pam.d/system-auth
password sufficient pam_unix.so md5 shadow nis nullok try_first_pass use_authtok
Và bạn có thể thấy trong /etc/shadow
tệp hệ thống này cũng đang sử dụng MD5:
root:$1$<DELETED PASSWORD HASH>:14245:0:99999:7:::
Các mã bạn sẽ thấy trong /etc/shadow
mỗi loại băm:
Trên các bản phân phối Red Hat, bạn có thể thay đổi điều này bằng cách sử dụng authconfig
lệnh.
$ sudo authconfig --passalgo=sha512 --update
Lưu ý rằng hàm băm mật khẩu là một loại hàm băm mật mã cụ thể, không được sử dụng cho các mục đích sử dụng khác của hàm băm mật mã. Hàm băm mật khẩu cần phải chậm; thông thường, chúng tôi sử dụng các hàm băm mật mã nhanh. Trên thực tế, về mặt kỹ thuật, hàm băm mật khẩu không phải là hàm băm mà là thuật toán kéo dài khóa mặn , lấy hai đầu vào (mật khẩu và muối) trong khi đó hàm băm chỉ có một đầu vào (dữ liệu). Xem Làm thế nào để băm mật khẩu an toàn? để biết thêm thông tin về băm mật khẩu.
Vì lý do lịch sử, nhiều tài liệu unix gọi mật khẩu băm mã hóa, nhưng đây không phải là quá trình mã hóa (bạn không thể giải mã một hàm băm trở lại mật khẩu). Lý do lịch sử là vào thời kỳ đầu của Unix, chức năng băm mật khẩu được xây dựng trên thuật toán DES , chủ yếu được sử dụng để mã hóa.
Băm mật khẩu được thực hiện bởi một chức năng trong thư viện tiêu chuẩn được gọi là crypt
. (Lưu ý rằng có một tiện ích Unix truyền thống được gọi crypt
là không liên quan; tiện ích này thực sự mã hóa.) Nhân không biết gì về mật khẩu. (Một số hạt nhân trên một số nền tảng cung cấp thư viện mật mã, để tận dụng các máy gia tốc phần cứng.)
Hàm lịch sử đã sử crypt
dụng thuật toán dựa trên DES, thời gian này vẫn ổn nhưng quá yếu so với tốc độ máy tính ngày nay. Ngày nay các chức năng mật khẩu băm được chỉ định bởi các nhân vật ở phần đầu của muối: $1$
, $5$
, $6$
, ... Những ba giá trị (và một vài chi tiết) là tiêu chuẩn trên thực tế de qua nhiều unices (bao gồm cả các hệ thống Linux dựa trên Glibc, đó là thực tế tất cả phi những cái được bổ sung và một số những cái nhúng lớn hơn). Một số biến thể unix cung cấp nhiều sự lựa chọn hơn. Các hệ thống nhúng Linux có thể không có tất cả các phương thức này.
$1$
được dựa trên MD5, nhưng với số lần lặp cố định và không được chấp nhận vì lý do đó. $5$
và $6
được dựa trên số lần lặp khác nhau của SHA2-256 và SHA2-512 tương ứng. Xem Cách tạo băm mật khẩu SHA512 trên dòng lệnh nếu bạn muốn tính toán một số băm mật khẩu từ dòng lệnh.
Không và nó không được cung cấp bởi kernel. tùy thuộc vào phiên bản, của bản phân phối và các bản hòa âm bạn sử dụng, bạn sẽ tìm thấy thuật toán mã hóa băm khác nhau được sử dụng (tôi giả sử bạn có nghĩa là lưu trữ mật khẩu là chủ yếu).
Bằng cách xem /etc/shadow
tệp dưới dạng root, bạn sẽ có thể thấy hàm băm nào được sử dụng trên linux của mình.
Nếu bạn muốn ký một cái gì đó bằng hàm băm, hầu hết các Unices, sẽ tích hợp nhị phân md5sum
hoặcsha1sum
md5sum
và bạn bè là băm mật mã thông thường, không được sử dụng để băm mật khẩu. Băm mật khẩu chậm; những cái thông thường trên unix được xây dựng trên MD5 hoặc SHA-2 (lặp đi lặp lại nhiều lần và với muối ném vào). Xem câu trả lời của tôi để biết thêm chi tiết.