Trình tạo SHA-1

5 trên 2 xếp hạng

Trình tạo SHA-1 là công cụ miễn phí giúp chuyển đổi một chuỗi thành mã băm SHA-1 160 bit, hiển thị dưới dạng 40 ký tự thập lục phân.

SHA-1 có tác dụng gì?

SHA-1 tạo ra một dấu vân tay có độ dài cố định từ dữ liệu đầu vào dài bất kỳ. Băm SHA-1 là thao tác một chiều, vì vậy giá trị băm không chứa bản sao có thể đọc được của văn bản gốc. Chỉ một thay đổi nhỏ trong đầu vào cũng tạo ra kết quả 160 bit khác.

SHA-1 được Cơ quan An ninh Quốc gia Hoa Kỳ thiết kế và Viện Tiêu chuẩn và Công nghệ Quốc gia công bố vào năm 1995. Tên này là viết tắt của Secure Hash Algorithm 1. Dù vẫn mang tên đó, SHA-1 không còn được coi là an toàn trước các cuộc tấn công va chạm.

Va chạm SHA-1 xảy ra khi hai đầu vào khác nhau tạo ra cùng một giá trị băm. Các nhà nghiên cứu đã chứng minh rằng có thể tạo va chạm SHA-1 trong thực tế, vì vậy thuật toán này không còn được khuyến nghị cho chữ ký số, chứng chỉ và các tình huống khác mà kẻ tấn công có thể cố ý thay đổi nội dung.

Làm cách nào để tạo mã băm SHA-1?

Nhập chính xác chuỗi cần băm rồi xem giá trị thập lục phân gồm 40 ký tự trong trường kết quả Mã băm SHA-1. Quá trình xử lý diễn ra trên máy chủ. Dữ liệu đầu vào được gửi đến máy chủ qua HTTPS và không được lưu trữ.

Các ví dụ tiêu chuẩn sau cho thấy định dạng kết quả và cách đầu vào ảnh hưởng đến giá trị băm:

  • Đầu vào abc tạo ra a9993e364706816aba3e25717850c26c9cd0d89d.
  • Chuỗi byte rỗng tạo ra da39a3ee5e6b4b0d3255bfef95601890afd80709.
  • Đầu vào abc , có một dấu cách ở cuối, tạo ra mã băm khác với abc.

SHA-1 xử lý byte chứ không xử lý trực tiếp các ký tự theo cách con người đọc. Dấu cách, dấu câu, chữ hoa và ký tự xuống dòng đều được tính. Trình tạo SHA-1 này băm các số nhập trong trường văn bản dưới dạng ký tự, vì vậy 123 có nghĩa là ba ký tự 1, 2 và 3.

Với SHA-1, các ký tự có dấu và ký tự không thuộc bảng chữ cái Latinh trước tiên phải được mã hóa thành byte. Hai hệ thống có thể tạo ra mã băm khác nhau cho văn bản trông giống hệt nhau nếu dùng bảng mã ký tự hoặc cách chuẩn hóa Unicode khác nhau. Khi đối chiếu kết quả SHA-1 của công cụ này với một hệ thống khác, hãy xác nhận rằng cả hai bên dùng cùng bảng mã, thường là UTF-8, và cùng quy ước ký tự xuống dòng.

Có thể giải mã hoặc đảo ngược SHA-1 không?

Không. Không thể giải mã mã băm SHA-1 vì băm không phải là mã hóa và không có khóa giải mã. Nhìn chung, việc khôi phục một đầu vào gốc bất kỳ từ giá trị băm của nó vẫn không khả thi về mặt tính toán.

Đầu vào dễ đoán lại là một trường hợp khác. Kẻ tấn công có thể tính mã băm SHA-1 của những giá trị có khả năng xuất hiện trong từ điển hoặc danh sách được tạo tự động cho đến khi tìm thấy kết quả trùng khớp. Vì vậy, không được dùng SHA-1 để lưu mật khẩu, dù bản thân giá trị băm không thể bị đảo ngược một cách đơn giản.

Tấn công va chạm cũng không giải mã mã băm. Nó tìm hai đầu vào khác nhau có cùng giá trị băm, điều này đủ để làm suy yếu chữ ký và phép kiểm tra tính toàn vẹn trong môi trường có nguy cơ bị tấn công.

SHA-1 vẫn được dùng ở đâu?

SHA-1 vẫn xuất hiện trong các phép kiểm tổng không có nguy cơ đối kháng, quá trình phát hiện dữ liệu trùng lặp và những hệ thống cần tương thích với định dạng cũ. Dạng biểu diễn thập lục phân gồm 40 ký tự của SHA-1 cũng có trong các mã định danh lịch sử của hệ thống quản lý mã nguồn và hồ sơ phần mềm lưu trữ.

  • Kiểm tổng: SHA-1 có thể phát hiện thay đổi ngoài ý muốn khi giá trị băm dự kiến đến từ một nguồn đáng tin cậy. Thuật toán này không thể chứng minh tính toàn vẹn nếu kẻ tấn công có thể thay thế cả tệp lẫn mã băm đã công bố.
  • Loại bỏ dữ liệu trùng lặp: SHA-1 có thể giúp xác định những bản ghi hoặc tệp có vẻ giống hệt nhau khi việc cố ý tạo va chạm không nằm trong mô hình đe dọa. Những hệ thống dùng SHA-1 nhưng không thể chấp nhận bất kỳ va chạm nào cũng nên so sánh cả dữ liệu gốc.
  • Tương thích với hệ thống cũ: một số cơ sở dữ liệu, API và định dạng tệp yêu cầu giá trị SHA-1 có sẵn. Đáp ứng yêu cầu đó là hợp lý, nhưng các thiết kế mới nên dùng thuật toán hiện hành.

Không dùng SHA-1 thuần túy cho mật khẩu, chữ ký số, việc tạo hoặc ký chứng chỉ, tạo mã thông báo bảo mật, xác thực hay hồ sơ tài liệu cần chống sửa đổi.

Mức độ an toàn của SHA-1 và các phương án thay thế

Khả năng chống va chạm của SHA-1 đã bị phá vỡ về mặt mật mã, vì vậy thuật toán này không còn được khuyến nghị cho các công việc mới có yêu cầu bảo mật. Giá trị băm 160 bit của SHA-1 ngắn hơn kết quả do các biến thể SHA-2 và SHA-3 phổ biến tạo ra, nhưng độ dài không phải là lý do duy nhất để ngừng sử dụng. Yếu tố quyết định là các cuộc tấn công va chạm đã được chứng minh.

Hãy dùng SHA-256 hoặc SHA-512 cho các phép kiểm tổng có giá trị dự kiến đến từ nguồn đáng tin cậy, trừ khi đặc tả yêu cầu thuật toán khác. Để xác thực tính toàn vẹn, cần dùng một cơ chế MAC hoặc chữ ký số phù hợp. SHA-3 là một họ thuật toán hiện hành khác. Nếu đặc biệt cần giá trị băm SHA-2 224 bit, Trình tạo SHA-224 sẽ tạo đúng định dạng đó. Thay vì SHA-1, mật khẩu cần được xử lý bằng hàm băm chuyên dụng như Argon2id, scrypt hoặc bcrypt.

Câu hỏi thường gặp về SHA-1

SHA-1 viết bằng chữ hoa và chữ thường có khác nhau không?

Không. Chữ cái thập lục phân viết hoa và viết thường có thể biểu diễn cùng một giá trị 160 bit. Tuy nhiên, hệ thống so sánh văn bản có phân biệt chữ hoa chữ thường vẫn có thể coi hai chuỗi là khác nhau, vì vậy hãy giữ đúng định dạng mà hệ thống đó yêu cầu.

Tôi có thể tính SHA-1 cho tệp bằng công cụ này không?

Công cụ này băm chuỗi đầu vào và không hỗ trợ tải tệp lên. Để tính kiểm tổng cho tệp, hãy dùng tiện ích cục bộ như sha1sum trên Linux hoặc một lệnh tương đương có thể đọc trực tiếp các byte của tệp. Không dán nội dung tệp nhị phân vào trường văn bản của Trình tạo SHA-1 vì thay đổi về bảng mã hoặc ký tự xuống dòng có thể làm kết quả khác đi.

HMAC-SHA-1 cũng đã bị phá vỡ phải không?

Các cuộc tấn công va chạm SHA-1 đã được công bố không trực tiếp phá vỡ HMAC-SHA-1 theo cùng một cách, vì HMAC dùng khóa bí mật và một cấu trúc riêng. Dù vậy, các giao thức mới thường chọn HMAC-SHA-256 hoặc một phương án hiện hành khác để tránh phụ thuộc vào công nghệ cũ và các hạn chế về chính sách.

Thêm salt có giúp SHA-1 an toàn để lưu mật khẩu không?

Không. Salt ngăn các mật khẩu giống nhau có cùng giá trị băm SHA-1 được lưu trữ và gây khó khăn cho việc dùng bảng tính sẵn, nhưng SHA-1 vẫn quá nhanh để lưu mật khẩu an toàn. Hãy dùng hàm băm mật khẩu có hệ số công việc tùy chỉnh được và một salt ngẫu nhiên, duy nhất.

Kiểm tra lần cuối

Trước khi so sánh kết quả SHA-1 của công cụ này với một mã băm khác, hãy kiểm tra dấu cách ẩn, ký tự xuống dòng ở cuối, khác biệt về bảng mã ký tự và sự thay đổi chữ hoa chữ thường trong đầu vào. Chỉ dùng SHA-1 khi hệ thống hiện có yêu cầu hoặc khi khả năng chống va chạm không thuộc yêu cầu bảo mật. Với thiết kế mới, hãy chọn hàm băm hiện hành có khả năng chống va chạm cho các phép kiểm tổng đáng tin cậy, MAC có khóa để xác thực thông điệp hoặc một cơ chế chữ ký số phù hợp.

Công cụ phổ biến