18/3/17

Xung đột SHA1 đầu tiên trong thực tế


Lần đầu tiên sau 20 năm kể từ khi được giới thiệu, SHA1 đã bị phát hiện có thể bị làm cho xung đột với hai dữ liệu đầu vào khác nhau. Google đã công bố điều này vào cuối tháng 2 vừa rồi.

SHA1 là gì?


SHA1 là một SHA (Secure Hash Algorithm - Thuật toán băm an toàn) đời đầu, được giới thiệu vào 1995. Ứng dụng của SHA1 cho đến ngày nay vô cùng rộng rãi, bao gồm từ việc quản lý security cho trình duyệt, quản lý phiên bản của source code, kiểm tra file trùng v.v..

Xung đột băm mật mã (cryptographic hash) là gì?


Như hình minh hoạ, chúng ta có thể hình dung 2 dữ liệu đầu vào Michael và Toby tuy khác nhau nhưng có chung 1 kết quả băm. Hệ quả là hệ thống sử dụng kết quả băm làm mã unique cho dữ liệu đầu vào sẽ bị lẫn lộn trong xử lý vì sẽ không thể phân biệt giữa Michael và Toby.

Về nguyên tắc, hàm băm không được phép sinh ra cùng 1 kết quả băm cho 2 dữ liệu đầu vào khác nhau. Nhưng rất tiếc SHA1 đã bị điều này. Hệ quả là hacker có thể đánh lừa hệ thống để thay đổi nội dung của file mà có cùng kết quả hash nên hệ thống hoàn toàn không phát hiện ra được.

Cách mà đội nghiên cứu đã phát hiện ra xung đột này?


Đội nghiên cứu đã phát hiện ra xung đột này là một nhóm nghiên cứu từ học viện CWI Amsterdam của Hà Lan và đội nghiên cứu của Google. Hiện tại vì lý do chính sách của Google liên quan đến việc công bố những nội dung nhạy cảm nên phải đợi 90 ngày sau khi xung đột được phát hiện để đội nghiên cứu công bố đoạn code giúp tái tạo 2 file PDF có cùng kết quả băm SHA1.

Để tận mắt thấy điều này, bạn có thể thử tải 2 file PDF này (PDF1, PDF2) về và chạy lệnh sinh SHA1 trên console.

Trên trang shattered.io bạn có thể thử upload một file lên để kiểm tra xem file đó có khả năng trở thành nạn nhân của tấn công sử dụng xung đột SHA1 không.

Hệ thống nào bị ảnh hưởng bởi xung đột này?


Vì SHA1 từ trước tới nay được sử dụng khá rộng rãi (mặc cho những cảnh báo xung đột trên lý thuyết) nên có khá nhiều hệ thống sẽ bị ảnh hưởng bởi phát hiện này:

  • Chữ ký Chứng thư số (Digital Certificate signatures)
  • Chữ ký chứng nhận xác thực email (Email PGP/GPG signatures)
  • Chữ ký số của nhà cung cấp phần mềm (Software vendor signatures)
  • Cập nhật phần mềm (Software updates)
  • Checksum của ISO
  • Hệ thống backup
  • Hệ thống chống trùng lặp dữ liệu
  • Git, SVN
  • ...
Google Chrome phiên bản 56 cập nhật vào tháng 2/2017 trở đi sẽ xem các trang web được bảo vệ bằng SHA1 là không an toàn nữa. Firefox còn đi xa hơn khi không còn công nhận SHA1 nữa.

Ở bài viết tiếp theo, mình sẽ xem thử trạng thái của Git khi gặp vấn đề xung đột này. Lưu ý rằng Git sử dụng SHA1 để quản lý object trong repository, cho nên ảnh hưởng là chắc chắn có.

Không có nhận xét nào:

Đăng nhận xét