it-swarm-vi.com

Có bất kỳ lợi thế để tách mật khẩu?

Tôi đã đọc về hàm băm LANMAN (LM) và tôi tò mò về một phần cụ thể của thuật toán.

Hàm băm LM được tính như sau:

  1. Mật khẩu người dùng ASCII được chuyển đổi thành chữ hoa.
  2. Mật khẩu này được đệm vào 14 byte.
  3. Mật khẩu 14 byte được chia thành hai nửa 7 byte.
  4. Các giá trị này được sử dụng để tạo hai khóa DES, một từ mỗi nửa byte.
  5. Mỗi trong hai khóa được sử dụng để mã hóa hằng số ASCII chuỗi "KGS! @ # $%" , dẫn đến hai giá trị văn bản mã 8 byte.
  6. Hai giá trị văn bản mã hóa này được nối với nhau để tạo thành giá trị 16 byte, là giá trị băm LM.

Có rất nhiều điểm yếu về bảo mật được nêu trong bài viết Wikipedia được liên kết và nói về những nơi khác, nhưng tôi đặc biệt quan tâm đến các bước từ 3 đến 6. Tôi tò mò về những gì dẫn đến thiết kế này. Có bất kỳ lợi thế bảo mật thực sự nào để tách mật khẩu, mã hóa hai nửa riêng biệt, sau đó kết hợp hai nửa để tạo thành một hàm băm một lần nữa không? Hay đây chỉ là một ví dụ về "bảo mật thông qua che khuất" ?

45
Bill the Lizard

Chia mật khẩu thành băm là không phải là một lợi thế. Nó đã được thực hiện vì những lý do mơ hồ không còn phù hợp ngày nay.

Lý do băm LanMan hoạt động theo cách này là vì băm LanMan được xây dựng dựa trên DES. DES chấp nhận khóa 56 bit. Do đó, việc xử lý một đoạn 7 byte là tạo thành một khóa DES. Không có cách nào tốt để sử dụng DES để băm hơn 7 byte cùng một lúc và chúng tôi cần một số cách để tạo một hàm băm cho mật khẩu dài hơn từ DES, vì vậy các nhà thiết kế hàm băm Lanman đã quyết định chia mật khẩu thành hai một nửa.

Ngày nay, chúng tôi sẽ không bao giờ xây dựng mật khẩu băm theo cách này. Chúng tôi chỉ sử dụng Bcrypt, Scrypt, PBKDF2 hoặc một số tương đương - hoặc chúng tôi sẽ xây dựng một cái gì đó tương tự dựa trên các nguyên thủy hiện có, như SHA256. Nhưng tại thời điểm đó, Bcrypt, Scrypt, SHA256, v.v., đã không tồn tại, mở ra cơ hội cho các nhà thiết kế LanMan mắc phải loại lỗi nghiêm trọng này.

Theo tiêu chuẩn hiện đại, băm LanMan là một thiết kế nhàu nát. Có nhiềnhiềtấn công trên đó. Nó rất yếu. Không ai nên sử dụng băm LanMan ngay hôm nay nếu họ có thể tránh được. (Như những người khác đã chỉ ra, bảo mật của nó rất tệ ngay cả theo tiêu chuẩn của thời đại. Một điểm công bằng.)

38
D.W.

Tách mật khẩu là a điểm yếu, không phải lợi thế. Nó cho phép phá vỡ một nửa mật khẩu một cách độc lập. Bắt đầu bằng ASCII ký tự (mã từ 32 đến 126, đã bao gồm), sau đó xóa các chữ cái viết thường, bạn kết thúc với 127-32-26 = 69 ký tự có thể có trong bảng chữ cái mật khẩu. Điều này dẫn đến 697 một nửa có thể, có phần dưới đây 243. Nói cách khác, điều này rất dễ bị tấn công thông qua lực lượng vũ phu. Bạn thậm chí không cần một từ điển.

Đây không phải là bảo mật thông qua tối nghĩa. Đây là sự bất an thông qua sự bất tài.

Chỉnh sửa: "rất dễ điều khiển với lực lượng vũ phu" cũng mở đường cho các tối ưu hóa khác nhau. Lưu ý rằng LanMan không được muối, do đó các bảng được tính toán trước có thể hiệu quả (bạn phải trả chi phí xây dựng bảng một lần, sau đó bạn tấn công vài một nửa mật khẩu - nó thực sự có giá trị ngay cả đối với một mật khẩu duy nhất, vì một mật khẩu là hai một nửa mật khẩu). Năm 2003, Philippe Oechslin đã xuất bản một cải thiện sự đánh đổi bộ nhớ thời gian (đó là bài viết trong đó ông đặt ra thuật ngữ "Bảng cầu vồng") và tính toán các bảng để bẻ khóa mật khẩu LanMan. Anh ta tự giới hạn mình với mật khẩu chữ và số (chữ cái và chữ số, nhưng không có dấu hiệu đặc biệt), do đó, khoảng trống 237. Kích thước tích lũy của các bảng sau đó sẽ là 1,4 GB, với hiệu suất bẻ khóa là 99,9% và thời gian tấn công dưới một phút.

Với a 243 không gian, tức là lớn hơn 64 lần, kích thước bảng và thời gian tấn công đều tăng theo hệ số 16 (đó là 642/3), vì vậy chúng tôi đang nói về 23 GB hoặc hơn (không nhiều cho các đĩa ngày nay) và một cuộc tấn công kéo dài 15 phút. Trên thực tế, cuộc tấn công sẽ nhanh hơn thế, bởi vì nút cổ chai đang tìm kiếm trên đĩa cứng và kẻ tấn công thông minh sẽ sử dụng ổ SSD có thể thực hiện tra cứu nhanh hơn 50 lần so với ổ cứng cơ học (ổ SSD 32 GB có giá thấp hơn 70 $ ...). Nỗ lực xây dựng bảng (chi tiêu một lần) có thể mất vài tuần trên một PC hoặc một vài ngày trên bất kỳ đám mây tử tế nào, vì vậy nó khá rẻ.

Rõ ràng , các bảng như vậy đã tồn tại ...

54
Thomas Pornin

Chỉ vì một cái gì đó phức tạp hơn không làm cho nó an toàn hơn. Tôi đã chạy một trình bẻ khóa mật khẩu trên hộp cửa sổ của mình và nó xuất hiện để phá mật khẩu thành 8 chuỗi ký tự và nó phá vỡ từng chuỗi độc lập của chuỗi khác, khiến quá trình diễn ra cực kỳ nhanh chóng.

Vì vậy, từ quan điểm thực tế, việc chia mật khẩu là không có lợi và @Thomas đã đề cập tại sao nó không có lợi về mặt toán học.

3
MasterZ