Trong lĩnh vực an ninh mạng, việc bảo vệ mật khẩu của người dùng là một trong những yếu tố quan trọng hàng đầu. Tuy nhiên, các hình thức tấn công ngày càng tinh vi khiến nhiều hệ thống dù có mã hóa mật khẩu vẫn có nguy cơ bị xâm nhập. Một trong những phương pháp tấn công nổi tiếng trong tấn công Brute Force và nguy hiểm từng được sử dụng là tấn công Rainbow Table. Vậy Rainbow Table là gì? Nó hoạt động như thế nào và làm sao để phòng tránh? Cùng TopOnTech tìm hiểu sau bài viết dưới đây.
>>> Xem thêm:
- Nguyên nhân và cách khắc phục lỗi bảo mật khi vào web
- SOC là gì? Tìm hiểu về Trung tâm Điều hành An ninh mạng (SOC)
Mục lục
ToggleTấn công Rainbow Table là gì?
Rainbow Table hay còn gọi là bảng cầu vồng, là một kỹ thuật bẻ khóa mật khẩu đã mã hóa bằng cách sử dụng một bảng dữ liệu được tính toán trước. Bảng này chứa các cặp giá trị đầu vào (thường là mật khẩu gốc) và giá trị băm (hash) tương ứng được tạo ra bởi một hàm băm cụ thể. Khi kẻ tấn công có được một chuỗi hash (do hệ thống lưu trữ mật khẩu ở dạng hash thay vì dạng văn bản thuần túy), chúng chỉ cần so sánh với bảng Rainbow Table để truy ra mật khẩu gốc.
Không giống như brute-force (tấn công thử từng mật khẩu một) hoặc dictionary attack (dùng danh sách mật khẩu phổ biến để thử), Rainbow Table tiết kiệm thời gian tính toán vì đã chuẩn bị sẵn dữ liệu. Tuy nhiên, để đổi lại hiệu suất, Rainbow Table yêu cầu dung lượng lưu trữ rất lớn.

Tấn công Rainbow Table hoạt động như thế nào?
Quá trình tấn công bằng Rainbow Table thường trải qua ba bước chính: tạo danh sách mật khẩu, chọn hàm hash và chuyển đổi, sau đó tạo bảng cầu vồng để truy ngược mật khẩu.
Tạo danh sách mật khẩu
Đầu tiên, hacker sẽ tạo ra một danh sách mật khẩu khả thi. Danh sách này có thể dựa trên những mật khẩu phổ biến, các biến thể theo quy tắc (ví dụ: thay “a” bằng “@”, “s” bằng “$”, v.v.), hoặc toàn bộ tổ hợp ký tự nếu muốn xây dựng bảng cho mọi trường hợp có thể xảy ra. Các mật khẩu càng ngắn thì bảng càng nhỏ và dễ xử lý, nhưng cũng ít có giá trị nếu người dùng sử dụng mật khẩu mạnh.
Chọn hàm hash và chuyển đổi mật khẩu
Tiếp theo, hacker chọn một hàm băm cụ thể (chẳng hạn như MD5, SHA-1, SHA-256) và băm tất cả các mật khẩu trong danh sách. Mỗi mật khẩu đầu vào sẽ được chuyển đổi thành một chuỗi ký tự mã hóa duy nhất.
Ví dụ, mật khẩu “123456” khi băm bằng MD5 sẽ trở thành: e10adc3949ba59abbe56e057f20f883e.
>>> Xem thêm: Các chứng chỉ bảo mật (SSL) phổ biến nhất dành cho website

Tạo bảng cầu vồng để tiết lộ mật khẩu
Lúc này, hacker sử dụng kỹ thuật “chuỗi giảm” (reduction function) để rút gọn bảng hash nhằm tiết kiệm không gian lưu trữ. Thay vì lưu toàn bộ cặp mật khẩu-hash, Rainbow Table chỉ lưu điểm đầu và điểm cuối của các chuỗi mật khẩu-hash liên tiếp.
Khi thực hiện tấn công, hacker có thể tìm kiếm nhanh chóng hash cần bẻ khóa trong bảng, tái tạo lại chuỗi từ điểm đầu đến khi tìm được khớp với hash mục tiêu. Quá trình này nhanh hơn nhiều so với việc tính toán từng hash mới.
Tuy nhiên, Rainbow Table chỉ có tác dụng với những mật khẩu không được thêm “muối” (salt). Salt là một chuỗi ngẫu nhiên được thêm vào mật khẩu trước khi băm, khiến cho cùng một mật khẩu sẽ tạo ra các hash khác nhau nếu có salt khác nhau. Do đó, nếu hệ thống sử dụng salt đúng cách, Rainbow Table gần như trở nên vô dụng.
>>> Xem thêm:
- OWASP là gì? 10 lỗ hổng và rủi ro bảo mật hàng đầu theo OWASP
- Cyber Security là gì? Tổng hợp 9 loại Cyber Security phổ biến hiện nay
Cách ngăn chặn các cuộc tấn công Rainbow Table
Dù tấn công Rainbow Table đã dần lỗi thời do sự phổ biến của salt và các hàm hash an toàn hơn, nhưng việc hiểu rõ phương pháp phòng tránh vẫn rất cần thiết. Dưới đây là những biện pháp hữu hiệu giúp ngăn chặn loại hình tấn công này:
Chọn nền tảng có hàm hash mạnh
Sử dụng các hàm hash hiện đại và được thiết kế chuyên biệt cho việc bảo vệ mật khẩu như bcrypt, scrypt, hay Argon2 là điều tối quan trọng. Các hàm này không chỉ hỗ trợ tích hợp salt mà còn có thể điều chỉnh độ phức tạp tính toán (CPU cost) để làm chậm quá trình bẻ khóa.
Ví dụ:
- Bcrypt: tự động sinh salt và lưu trữ cùng với hash
- Scrypt: thêm cơ chế tiêu tốn bộ nhớ để chống lại tấn công bằng phần cứng
- Argon2: hàm chiến thắng trong cuộc thi hash mật khẩu PHC (Password Hashing Competition)
Khi lựa chọn nền tảng hoặc framework phát triển ứng dụng, hãy đảm bảo rằng nó hỗ trợ và áp dụng những chuẩn hash mới này thay vì các hàm cũ như MD5 hay SHA-1.
Sử dụng mật khẩu phức tạp
Người dùng cần được giáo dục để tạo ra các mật khẩu đủ mạnh: dài ít nhất 12 ký tự, bao gồm chữ hoa, chữ thường, số và ký tự đặc biệt. Việc này khiến mật khẩu của họ không nằm trong danh sách các mật khẩu phổ biến – đối tượng ưu tiên trong các bảng Rainbow Table.
Tránh dùng:
- Tên riêng, ngày sinh
- Các chuỗi đơn giản như 123456, abc123, password
- Các biến thể dễ đoán như p@ssw0rd, admin1
Hãy ưu tiên sử dụng trình quản lý mật khẩu để tạo và lưu trữ các mật khẩu ngẫu nhiên, mạnh, và khác biệt cho từng tài khoản.
Bật xác thực đa yếu tố (MFA)
Xác thực đa yếu tố (MFA) là lớp bảo vệ bổ sung quan trọng bên cạnh mật khẩu. Ngay cả khi mật khẩu bị đánh cắp hoặc giải mã, hacker vẫn không thể truy cập nếu không có mã xác thực từ thiết bị thứ hai (như điện thoại, email, app xác thực). Ngoài ra bạn cũng có thể tham khảo cách xác thực hai yếu tố 2FA cũng khá đơn giản.
Các phương thức xác thực phổ biến:
- Mã OTP qua SMS hoặc email
- App xác thực (Google Authenticator, Authy)
- Thiết bị phần cứng (YubiKey)
Nhiều nền tảng lớn như Google, Facebook, Microsoft đều hỗ trợ MFA và khuyến khích người dùng kích hoạt.
>>> Xem thêm: Kiến trúc Zero Trust là gì? Nguyên tắc của mô hình bảo mật Zero Trust
Sử dụng địa chỉ email alias
Một chiến lược đơn giản nhưng hiệu quả khác là sử dụng alias cho email – nghĩa là bạn tạo các biến thể khác nhau của địa chỉ email để đăng ký dịch vụ. Điều này giúp giảm khả năng hacker xác định đúng email gốc để tấn công, đồng thời hỗ trợ dễ dàng truy dấu nếu xảy ra rò rỉ thông tin.
Ví dụ:
- Email chính: nguyenvana@gmail.com
- Alias cho dịch vụ X: nguyenvana+x_dichvu@gmail.com
- Alias cho dịch vụ Y: nguyenvana+y_dichvu@gmail.com
Ngoài ra, nếu phát hiện rò rỉ từ alias nào, bạn có thể dễ dàng xóa bỏ hoặc vô hiệu hóa mà không ảnh hưởng tới email chính.
Theo dõi mạng Internet để phát hiện vi phạm dữ liệu
Cuối cùng, một cách chủ động để bảo vệ tài khoản là sử dụng các công cụ giám sát dữ liệu rò rỉ. Các dịch vụ như:
- Have I Been Pwned
- Firefox Monitor
- Google Password Checkup
cho phép bạn kiểm tra xem email hoặc mật khẩu của mình có nằm trong các vụ rò rỉ dữ liệu lớn hay không. Nếu có, hãy thay đổi ngay lập tức và áp dụng các biện pháp bảo vệ bổ sung như MFA.
Một số hệ thống quản lý mật khẩu (như 1Password, Bitwarden) cũng tích hợp tính năng kiểm tra dữ liệu bị rò rỉ để giúp bạn phát hiện sớm.
>>> Xem thêm:
- Pentest là gì? Những thông tin cần biết về Penetration Testing
- XSS là gì? Kỹ thuật tấn công XSS, cách kiểm tra và ngăn chặn hiệu quả
- CSRF là gì? Kỹ thuật tấn công và cách phòng chống CSRF hiệu quả
Kết luận
Tấn công Rainbow Table là một ví dụ điển hình cho thấy sự sáng tạo trong cách thức xâm nhập hệ thống của hacker. Dù hiện tại loại hình tấn công này đã không còn phổ biến như trước, nhưng nó vẫn là một mối đe dọa tiềm ẩn nếu hệ thống không được thiết kế bảo mật đúng chuẩn.
Bằng việc áp dụng các biện pháp như sử dụng hàm hash mạnh, kết hợp salt, khuyến khích người dùng tạo mật khẩu phức tạp và kích hoạt xác thực đa yếu tố, bạn hoàn toàn có thể giảm thiểu rủi ro. Quan trọng nhất là không nên chủ quan – vì trong thế giới số, chỉ một lỗ hổng nhỏ cũng có thể dẫn đến hậu quả nghiêm trọng.
An ninh mạng không chỉ là trách nhiệm của nhà phát triển, mà còn là ý thức của người dùng. Hãy bắt đầu từ việc bảo vệ tài khoản của chính bạn, từng bước một.