Sự phát triển của hàm băm (Hash Function)

Hàm băm là các biện pháp kiểm soát quan trọng và làm một phần trong chiến lược bảo mật của mọi công ty. Kỹ thuật băm được dùng rộng rãi để xác thực và chống thoái thác, khái niệm quy định rằng không thể phủ nhận tính xác thực của thông tin.
Trước đó, bạn đã tìm hiểu rằng hàm băm là các thuật toán tạo ra một mã không thể giải. Các hàm băm chuyển đổi thông tin thành một giá trị duy nhất có thể được dùng để xác định tính toàn vẹn của thông tin đó. Trong bài đăng này, bạn sẽ tìm hiểu về nguồn gốc của hàm băm và quá trình chúng thay đổi theo thời gian.
Nguồn gốc kỹ thuật của hàm băm
Hàm băm xuất hiện từ những ngày đầu hình thành điện toán. Hàm băm ban đầu được tạo ra để tìm kiếm dữ liệu nhanh chóng. Ngay từ đầu, các thuật toán này đã được thiết kế để biểu thị dữ liệu có kích cỡ bất kỳ dưới dạng những giá trị nhỏ, có kích cỡ cố định hay chuỗi đại diện. Bằng cách dùng bảng băm, một cấu trúc dữ liệu dùng để lưu trữ và tham chiếu các giá trị băm, những giá trị nhỏ này đã giúp máy tính có thể tham chiếu dữ liệu một cách an toàn và hiệu quả hơn.
Một trong những hàm băm đầu tiên là Message Digest 5, thường được gọi là MD5. Giáo sư Ronald Rivest thuộc viện công nghệ Massachusetts (MIT) đã phát triển MD5 vào đầu thập niên 1990 để xác minh rằng một tệp được gửi qua mạng khớp với tệp nguồn của tệp đó.
MD5 hoạt động bằng cách chuyển đổi dữ liệu thành giá trị 128 bit, bất kể được dùng để chuyển đổi một email đơn lẻ hay mã nguồn của một ứng dụng. Bạn có thể nhớ rằng bit là đơn vị nhỏ nhất dùng để đo lường dữ liệu trên máy tính. Bit có thể là 0 hoặc 1. Trong máy tính, bit đại diện cho dữ liệu đầu vào của người dùng theo cách mà máy tính có thể diễn giải. Trong bảng băm, đơn vị này sẽ hiển thị dưới dạng một chuỗi gồm 32 ký tự. Việc thay đổi bất kỳ điều gì trong tệp nguồn sẽ tạo ra một giá trị băm hoàn toàn mới.
Thông thường, giá trị băm càng dài thì càng an toàn. Không lâu sau khi MD5 ra đời, các chuyên gia bảo mật phát hiện ra các chuỗi đại diện 128 bit đã gây nên một lỗ hổng lớn.
Sau đây là một ví dụ về cách chuyển văn bản thuần túy thành giá trị băm:
Xung đột băm
Một trong những lỗ hổng của MD5 vô tình lại là đặc điểm chung nhất của tất cả các hàm băm. Thuật toán băm ánh xạ mọi dữ liệu đầu vào, bất kể độ dài, thành một giá trị có kích cỡ cố định gồm chữ cái và số. Có vấn đề gì với điều đó? Mặc dù có vô số dữ liệu đầu vào khả thi, nhưng chỉ có một tập hợp hữu hạn các kết quả đầu ra sẵn có!
Giá trị MD5 bị giới hạn ở độ dài 32 ký tự. Do kích cỡ kết quả đầu ra bị giới hạn, thuật toán này được coi là dễ bị xung đột băm, một trường hợp khi các dữ liệu đầu vào khác nhau tạo ra cùng một giá trị băm. Vì hàm băm được dùng để xác thực, nên xung đột băm tương tự việc sao chép danh tính của ai đó. Kẻ tấn công có thể thực hiện các cuộc tấn công xung đột để giả mạo dữ liệu xác thực theo cách gian lận.
Kỹ thuật băm thế hệ tiếp theo
Để tránh xung đột băm, cần sử dụng các hàm có khả năng tạo ra giá trị dài hơn. Những hạn chế của MD5 đã dẫn đến sự ra đời của một nhóm hàm mới được gọi là Thuật toán băm an toàn hay SHA.
Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) phê duyệt từng thuật toán trong số này. Các số bên cạnh mỗi hàm SHA cho biết kích cỡ giá trị băm của hàm đó tính theo bit. Ngoại trừ SHA-1, vốn tạo ra chuỗi đại diện 160 bit, các thuật toán này được coi là có khả năng chống xung đột. Tuy nhiên, điều đó không khiến chúng trở nên bất khả xâm phạm trước các hoạt động khai thác.
Năm hàm tạo nên họ thuật toán SHA bao gồm:
SHA-1
SHA-224
SHA-256
SHA-384
SHA-512
Lưu trữ mật khẩu an toàn
Mật khẩu thường được lưu trữ trong cơ sở dữ liệu, nơi chúng được ánh xạ tới tên người dùng. Máy chủ nhận được yêu cầu xác thực có chứa thông tin đăng nhập do người dùng cung cấp. Sau đó, máy chủ sẽ tra cứu tên người dùng trong cơ sở dữ liệu và so sánh với mật khẩu đã cung cấp, đồng thời xác minh rằng thông tin trùng khớp trước khi cấp quyền truy cập cho người dùng.
Đây là một hệ thống an toàn trừ phi kẻ tấn công có được quyền truy cập vào cơ sở dữ liệu về người dùng. Nếu mật khẩu được lưu trữ dưới văn bản thuần túy, kẻ tấn công sẽ đánh cắp và dùng thông tin đó để truy cập vào các tài nguyên của công ty. Kỹ thuật băm sẽ bổ sung thêm một lớp bảo mật. Vì không thể đảo ngược giá trị băm, nên kẻ tấn công sẽ không thể đánh cắp thông tin đăng nhập của ai đó ngay cả khi chúng chiếm được quyền truy cập vào cơ sở dữ liệu.
Bảng cầu vồng
Bảng cầu vồng là một tệp chứa các giá trị băm đã được tạo sẵn cùng với văn bản thuần túy liên quan. Chúng giống như từ điển mật khẩu yếu. Những kẻ tấn công có khả năng lấy được cơ sở dữ liệu mật khẩu của một tổ chức có thể dùng bảng cầu vồng để so sánh với tất cả các giá trị có thể.
Thêm một số “dữ liệu ngẫu nhiên”
Các hàm có chuỗi đại diện lớn hơn sẽ ít chịu ảnh hưởng hơn từ các cuộc tấn công xung đột và tấn công bằng bảng cầu vồng. Nhưng như bạn đang tìm hiểu, không có biện pháp kiểm soát bảo mật nào là hoàn hảo.
Thêm dữ liêu ngẫu nhiên là biện pháp bảo vệ bổ sung được sử dụng để củng cố các hàm băm. Dữ liệu ngẫu nhiên là một chuỗi ký tự ngẫu nhiên được thêm vào dự liệu trước khi băm. Các ký tự bổ sung tạo ra giá trị băm độc đáo hơn, giúp dữ liệu đã được thêm dữ liệu ngẫu nhiên có khả năng chống lại các cuộc tấn công bằng bảng cầu vồng.
Ví dụ: cơ sở dữ liệu chứa mật khẩu có thể có nhiều mục băm cho mật khẩu “password”. Nếu tất cả những mật khẩu đó đều được thêm dữ liệu ngẫu nhiên, mỗi mục nhập sẽ hoàn toàn khác biệt. Điều đó có nghĩa là kẻ tấn công sử dụng bảng cầu vồng sẽ không thấy giá trị khớp với “password” trong cơ sở dữ liệu.
Vì lý do này, các phương pháp thêm dữ liệu ngẫu nhiên ngày càng trở nên phổ biến khi lưu trữ mật khẩu và các loại dữ liệu nhạy cảm khác. Độ dài và tính duy nhất của một dữ liệu ngẫu nhiên có ý nghĩa rất quan trọng. Tương tự như giá trị băm, dữ liệu ngẫu nhiên càng dài và phức tạp thì càng khó bẻ khóa.
Những điểm chính cần ghi nhớ
Các chuyên gia bảo mật thường dùng kỹ thuật băm làm công cụ xác thực tính toàn vẹn của tệp chương trình, tài liệu và các loại dữ liệu khác. Ngoài ra, kỹ thuật băm còn được dùng để giảm nguy cơ rò rỉ dữ liệu. Như các bạn đã biết, không phải hàm băm nào cũng có mức độ bảo vệ như nhau. Các cuộc tấn công sử dụng bảng cầu vồng có nhiều khả năng thành công với những thuật toán tọa ra khóa ngắn hơn như MD5. Nhiều doanh nghiệp có quy mô vừa và nhỏ vẫn dựa vào MD5 để bảo mật dữ liệu nhạy cảm. Việc hiểu rõ về các thuật toán thay thế và phương pháp thêm dữ liệu ngẫu nhiên sẽ giúp bạn có cơ sở tốt hơn để đưa ra những khuyến nghị bảo mật có tầm ảnh hưởng.
Subscribe to my newsletter
Read articles from Khoa Nguyen directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Khoa Nguyen
Khoa Nguyen
Mình là người mới bắt đầu tìm hiểu công nghệ đặc biệt về ngành an toàn thông tin. Mình có viết lại các bài này chủ yếu luyện tiếng Anh và đọc thêm. Cảm ơn mọi người đã quan tâm và đón đọc. Nếu có góp ý gì xin hãy liên lạc với mình nhé!