Hiểu rõ về tấn công đã biết mật mã
Tấn công đã biết mật mã (KPA) xảy ra khi một hacker sử dụng cặp dữ liệu đã được mã hóa và chưa mã hóa để giải mã thuật toán hay khóa mã hóa.
Trong cuộc tấn công này, hacker có quyền truy cập cả dữ liệu đã mã hóa (ciphertext) và phiên bản chưa mã hóa ban đầu (plaintext). Bằng cách so sánh hai cái này, kẻ tấn công cố gắng phát hiện ra phương pháp mã hóa hoặc khóa.
Ví dụ, nếu từ “blockchain” được mã hóa thành “eorfnfkdlq,” việc biết cặp này có thể giúp kẻ tấn công giải mã các phần khác của thông điệp sử dụng cùng khóa. Điều này cho thấy trong một số phương pháp mã hóa, dù chỉ một lượng thông tin nhỏ cũng có thể đủ giúp phá giải mã hóa.
Cuộc tấn công này khai thác những điểm yếu trong kỹ thuật mã hóa, cho phép kẻ tấn công nhận diện mẫu hình hoặc mối quan hệ giữa plaintext và ciphertext. Nếu không được bảo vệ tốt, tấn công đã biết mật mã có thể làm suy yếu sự an toàn của một hệ thống mã hóa.
Hai kỹ thuật phổ biến để khai thác plaintext và ciphertext là phân tích tần suất và đối chiếu mẫu:
- Phân tích tần suất: Kẻ tấn công sử dụng phương pháp mã hóa đơn giản, trong đó mỗi chữ cái hay ký tự được thay bằng một ký tự cụ thể khác. Bằng cách so sánh tần suất của các chữ cái hay mẫu hình trong plaintext và ciphertext, kẻ tấn công có thể phát hiện khóa hoặc giải mã thông điệp còn lại.
- Đối chiếu mẫu: Kẻ xấu tìm kiếm các mẫu lặp lại. Nếu cùng một plaintext dẫn đến cùng một ciphertext, họ có thể nhận diện xu hướng trong văn bản mã hóa và sử dụng chúng để xác định thuật toán mã hóa, cuối cùng giải mã toàn bộ thông điệp.
Tấn công đã biết mật mã hoạt động ra sao?
Kẻ tấn công có thể sử dụng cặp đã biết này để “đảo chiều kỹ thuật” phương pháp mã hóa. Ngay cả khi không biết chính xác khóa hay thuật toán từ ban đầu, chỉ cần truy cập vào cặp plaintext và ciphertext này cũng đủ để họ bắt đầu giải mã mã hóa.
Vì vậy, càng có nhiều cặp, kẻ tấn công sẽ càng dễ phát hiện ra phương pháp mã hóa và khóa, từ đó dễ dàng giải mã các thông điệp khác được mã hóa bằng cùng phương pháp.
Hãy hiểu cách cuộc tấn công này có thể hoạt động, tiếp tục với ví dụ cặp “blockchain” và “eorfnfkdlq”:
Các bước trong một tấn công đã biết mật mã
- Thu thập các cặp đã biết: Kẻ tấn công thu thập các cặp plaintext và ciphertext tương ứng. Chúng có thể có được thông qua các giao tiếp bị chặn, dữ liệu bị rò rỉ hoặc các phương tiện khác.
- Phân tích mẫu: Kẻ tấn công so sánh các chữ cái trong plaintext (“blockchain”) với các chữ cái tương ứng trong ciphertext (“eorfnfkdlq”). Bằng cách nghiên cứu cách mỗi chữ cái trong plaintext chuyển đổi thành một chữ cái khác trong ciphertext, kẻ tấn công có thể nhận ra một mẫu. Ví dụ: chữ “b” chuyển thành “e,” “l” chuyển thành “o” v.v.
- Đoán mật mã: Dựa trên sự thay đổi giữa plaintext và ciphertext, kẻ tấn công có thể đưa ra những phỏng đoán có cơ sở về thuật toán mã hóa. Ví dụ, nếu các chữ cái được chuyển đổi theo một số vị trí cố định, kẻ tấn công có thể nhận thấy rằng mỗi chữ cái trong “blockchain” đã được chuyển đổi theo một số vị trí trong bảng chữ cái. Ví dụ, trong mật mã Caesar, bạn có thể chuyển các chữ cái đi ba vị trí, như đã thấy trong hình trên.
- Phá giải mã hóa: Khi kẻ tấn công đã xác định được mẫu hoặc quy tắc mã hóa, họ có thể áp dụng kiến thức đó để giải mã các phần khác của thông điệp hoặc thậm chí cả những thông điệp trong tương lai sử dụng cùng khóa hay thuật toán.
Bạn có biết? Phương pháp mã hóa Caesar được đặt tên theo Julius Caesar, người đã sử dụng nó cho những thông điệp riêng tư của mình.
Tấn công chọn plaintext (CPA) vs. tấn công đã biết mật mã (KPA)
Tấn công chọn plaintext liên quan đến việc đối thủ chọn plaintext và phân tích ciphertext tương ứng, trong khi tấn công đã biết mật mã xảy ra khi kẻ tấn công có kiến thức một phần về plaintext.
Nói một cách đơn giản, sự khác biệt chính giữa CPA và KPA là:
- Tấn công chọn plaintext: Kẻ tấn công có thể chọn hoặc chọn plaintext mà họ muốn và nghiên cứu cách nó được mã hóa thành ciphertext.
- Tấn công đã biết mật mã: Kẻ tấn công đã có quyền truy cập vào các cặp plaintext-ciphertext và sử dụng thông tin này để phân tích mã hóa, mà không cần chọn plaintext cho riêng mình.
Hiểu rõ những khác biệt này là quan trọng để phát triển các biện pháp bảo vệ mật mã mạnh mẽ.
Bạn có biết? Phishing là một kỹ thuật đánh lừa mà kẻ tấn công lừa các cá nhân tiết lộ thông tin nhạy cảm, chẳng hạn như mật khẩu, bằng cách giả mạo làm các nguồn tin cậy, trong khi plaintext chỉ đơn giản thể hiện dữ liệu hoặc thông điệp không mã hóa và có thể đọc được bởi bất kỳ ai.
Làm thế nào để bảo vệ chống lại tấn công đã biết mật mã?
Để bảo vệ chống lại các cuộc tấn công đã biết mật mã, hãy áp dụng các thuật toán mã hóa mạnh mẽ, quản lý khóa mã hóa một cách an toàn, sử dụng các khóa độc nhất trong mỗi phiên và thêm tính ngẫu nhiên vào quá trình mã hóa để tăng cường bảo vệ chống lại các cuộc tấn công.
Chọn các thuật toán mã hóa có khả năng chịu được tấn công đã biết mật mã bằng cách sử dụng các kỹ thuật mã hóa mạnh mẽ. Bằng cách ngăn chặn mẫu hình trong plaintext tương quan với mẫu hình trong ciphertext, các thuật toán mật mã hiện đại như Tiêu chuẩn Mã hóa Tiên tiến (AES) được chế tạo để chịu các cuộc tấn công như vậy. AES là một thuật toán mã hóa đối xứng được sử dụng rộng rãi, nổi tiếng về tính an toàn và hiệu suất của nó.
Quản lý khóa mã hóa một cách an toàn để tránh truy câ’p trái phép. Sử dụng khoá lưu trữ an toàn, thường xuyên xoay vòng các khóa của bạn và sử dụng các kỹ thuật tạo khóa mạnh mẽ. Ngoài ra, tránh mã hóa các khối dữ liệu rời rạc, có thể dự đoán. Để ngăn kẻ tấn công sử dụng cặp đã biết, mã hóa toàn bộ thông điệp hoặc tệp.
Hơn nữa, sử dụng các khóa khác nhau cho các phiên và nhiệm vụ khác nhau. Ảnh hưởng của một cuộc tấn công đã biết mật mã sẽ giảm xuống vì mỗi phiên sẽ sử dụng một khóa mã hóa khác biệt. Đồng thời, duy trì các phiên bản mới nhất của hệ thống, thư viện và phần mềm mã hóa của bạn. Các bản cập nhật thường bao gồm các bản sửa lỗi bảo mật khắc phục các lỗ hổng.
Trước khi mã hóa plaintext của dữ liệu, thêm một giá trị ngẫu nhiên mật mã — một lượng ngẫu nhiên — vào dữ liệu. Điều này làm cho mỗi lần mã hóa trở nên độc nhất, ngay cả khi mã hóa cùng một plaintext nhiều lần. Ngoài ra, tránh các phương thức mã hóa được biết là dễ bị tấn công đã biết mật mã. Như đã nói, hãy thực hiện đầy đủ thẩm định khi chọn các thuật toán mã hóa.