SHA-1 là gì? Tìm hiểu thuật toán bảo mật SHA-1

SHA-1 là gì?

SHA-1 (viết tắt của Secure Hash Algorithm 1) là một hàm băm mật mã được phát triển bởi Cơ quan An ninh Quốc gia Hoa Kỳ (NSA) và được công bố vào năm 1994. Thuật toán này lấy đầu vào là một chuỗi dữ liệu bất kỳ và tạo ra một giá trị băm 160 bit (20 byte) được gọi là thông báo đã tiêu hóa (message digest). Giá trị băm này thường được hiển thị dưới dạng chuỗi 40 ký tự thập lục phân.

Cách thức hoạt động của SHA-1?

Quá trình hoạt động của SHA-1 có thể được chia thành 4 bước chính:

Bước 1: Chuẩn bị

  • Dữ liệu đầu vào được đệm thêm các bit 1 theo sau là một chuỗi các bit 0 cho đến khi độ dài của dữ liệu là bội số của 512 bit.
  • Sau đó, một số nguyên 64 bit biểu thị độ dài của dữ liệu ban đầu được thêm vào cuối dữ liệu đã được đệm.

Bước 2: Xử lý

  • Mỗi khối 512 bit được xử lý qua 80 vòng lặp.
  • Mỗi vòng lặp sử dụng hàm băm F để xử lý khối dữ liệu hiện tại và giá trị băm của các vòng lặp trước đó.
  • Hàm băm F sử dụng các phép toán logic và toán học để tạo ra giá trị băm 160 bit từ dữ liệu đầu vào.

Bước 3: Kết hợp

  • Giá trị băm của mỗi khối được kết hợp với giá trị băm của khối trước đó bằng cách sử dụng phép toán XOR.

Bước 4: Đầu ra

  • Giá trị băm cuối cùng được biểu diễn dưới dạng chuỗi 40 ký tự thập lục phân.

Ứng dụng của SHA-1

SHA-1 từng được sử dụng rộng rãi trong nhiều ứng dụng bảo mật, bao gồm:

1. Xác minh tính toàn vẹn của dữ liệu:

  • SHA-1 có thể được sử dụng để đảm bảo rằng dữ liệu không bị thay đổi sau khi được tạo ra.
  • Ví dụ: SHA-1 có thể được sử dụng để kiểm tra tính toàn vẹn của các tập tin tải xuống, đảm bảo rằng chúng không bị sửa đổi hoặc bị nhiễm virus.

2. Chữ ký số:

  • SHA-1 có thể được sử dụng để tạo ra chữ ký số cho các tài liệu điện tử.
  • Chữ ký số giúp xác minh tính xác thực của người tạo tài liệu và đảm bảo rằng tài liệu không bị thay đổi sau khi được ký.

3. Mật khẩu:

  • SHA-1 có thể được sử dụng để mã hóa mật khẩu, giúp bảo vệ chúng khỏi bị đánh cắp.
  • Khi người dùng nhập mật khẩu, mật khẩu sẽ được băm bằng SHA-1 và so sánh với giá trị băm được lưu trữ trong cơ sở dữ liệu.

4. Mã hóa:

  • SHA-1 có thể được sử dụng để tạo ra các giá trị băm được sử dụng trong các thuật toán mã hóa khác.
  • Tuy nhiên, SHA-1 hiện nay không còn được coi là an toàn do đã có nhiều vụ tấn công thành công được thực hiện. Do đó, các tổ chức tiêu chuẩn khuyến nghị nên sử dụng các thuật toán băm an toàn hơn như SHA-256 hoặc SHA-384.

Dưới đây là một số ví dụ cụ thể về việc sử dụng SHA-1:

  • Microsoft Windows: Windows sử dụng SHA-1 để kiểm tra tính toàn vẹn của các tập tin hệ thống.
  • Apple macOS: macOS sử dụng SHA-1 để kiểm tra tính toàn vẹn của các bản cập nhật phần mềm.
  • Git: Git sử dụng SHA-1 để xác định các phiên bản của các tập tin.
  • Bitcoin: Bitcoin sử dụng SHA-1 để tạo ra các địa chỉ ví.

SHA-1 có an toàn không?

SHA-1 không còn được coi là an toàn cho các ứng dụng bảo mật cao.

Lý do:

  • Vào năm 2005, các nhà nghiên cứu từ Đại học Maryland, Đại học Sơn Đông và Đại học Hà Lan công bố một phương pháp tấn công hiệu quả đối với SHA-1, được gọi là tấn công SHAttered.
  • Vào năm 2017, Google và CWI Amsterdam công bố họ đã thực hiện một cuộc tấn công va chạm chống lại SHA-1, xuất bản hai tệp PDF không giống nhau tạo ra hàm băm SHA-1 giống nhau.

Hậu quả:

  • Do những vụ tấn công này, các tổ chức tiêu chuẩn như NIST và NSA khuyến nghị không nên sử dụng SHA-1 cho các ứng dụng bảo mật cao.
  • Các trình duyệt web lớn như Chrome, Firefox và Safari đã ngừng hỗ trợ SHA-1 cho chứng chỉ SSL/TLS.
  • Microsoft cũng đã ngừng sử dụng SHA-1 cho các bản cập nhật Windows.

Thay thế cho SHA-1:

  • Nên sử dụng các thuật toán băm an toàn hơn như SHA-256 hoặc SHA-384 cho các ứng dụng bảo mật cao.
  • SHA-256 và SHA-384 có độ dài băm lớn hơn và được coi là an toàn hơn so với SHA-1.

Lưu ý:

Mặc dù SHA-1 không còn được coi là an toàn cho các ứng dụng bảo mật cao, nhưng nó vẫn có thể được sử dụng cho một số ứng dụng ít quan trọng hơn, ví dụ như kiểm tra tính toàn vẹn của dữ liệu.

Hãy bình luận đầu tiên

Để lại một phản hồi

Thư điện tử của bạn sẽ không được hiện thị công khai.


*