Tấn công xen giữa

Trong mật mã học và an ninh máy tính, một cuộc tấn công xen giữa, còn được gọi theo , là một cuộc tấn công mà kẻ tấn công bí mật chuyển tiếp và có thể làm thay đổi giao tiếp giữa hai bên mà họ tin rằng họ đang trực tiếp giao tiếp với nhau. Một ví dụ về các cuộc tấn công man-in-the-middle là nghe trộm (eavesdropping), trong đó kẻ tấn công kết nối độc lập với các nạn nhân và chuyển tiếp thông tin giữa họ để họ tin rằng họ đang nói chuyện trực tiếp với nhau qua kết nối riêng tư, trong khi thực ra toàn bộ cuộc trò chuyện được kiểm soát bởi kẻ tấn công. Người tấn công phải có khả năng đánh chặn tất cả các thông tin liên quan đi lại giữa hai nạn nhân và tiêm những thông tin mới. Điều này đơn giản trong nhiều trường hợp; ví dụ, một kẻ tấn công trong phạm vi tiếp nhận của một điểm truy cập không dây (Wi-Fi) không được mã hóa có thể chèn mình như một "người đàn ông ở giữa" (man-in-the-middle).

Khi một cuộc tấn công nhằm phá hoại sự chứng thực lẫn nhau hoặc thiếu sót đó, một cuộc tấn công xen giữa có thể thành công chỉ khi kẻ tấn công có thể mạo nhận mỗi điểm cuối để thỏa mãn mong đợi chính danh từ đầu kia. Hầu hết các giao thức mã hóa bao gồm một số dạng xác thực thiết bị đầu cuối đặc biệt để ngăn chặn các cuộc tấn công MITM. Ví dụ: TLS có thể xác thực một hoặc cả hai bên sử dụng một nhà cung cấp chứng thực số được cả hai bên tin cậy.

Thí dụ

Giả sử Alice muốn liên lạc với Bob. Trong khi đó, Mallory muốn chặn cuộc đối thoại để nghe trộm và có thể gửi tin sai cho Bob.

Đầu tiên, Alice hỏi Bob về chìa khóa công khai của mình. Nếu Bob gửi chìa khoá công cộng của mình đến Alice, nhưng Mallory có thể chặn nó, một cuộc tấn công xen giữa có thể bắt đầu. Mallory gửi một thông điệp giả mạo đến Alice mạo nhận rằng nó đến từ Bob, nhưng thiệt ra đó là khóa công khai của Mallory.

Alice, tin rằng khóa công khai này là của Bob, mã hóa tin nhắn của cô bằng chìa khoá của Mallory và gửi tin nhắn được mã hóa về Bob. Mallory một lần nữa chặn lại, giải mã tin nhắn sử dụng khóa riêng của mình, có thể thay đổi nó nếu cô ấy muốn và mã hóa lại nó bằng khóa công khai mà Bob gửi cho Alice. Khi Bob nhận được thông tin mới mã hóa, anh tin rằng nó đến từ Alice.

Alice gởi một thông tin tới Bob, mà bị chặn bởi Mallory:
: Alice "Hi Bob, đây là Alice. Đưa chìa khóa của anh cho tôi." → &nbsp; &nbsp; Mallory &nbsp; &nbsp; Bob
Mallory chuyển thông tin này tới Bob; Bob không có cách nào để chứng thực nó là từ Alice:
: Alice &nbsp; &nbsp; Mallory "Hi Bob, đây là Alice. Đưa chìa khóa của anh cho tôi." → &nbsp; &nbsp; Bob
Bob trả lời với chìa khóa mật mã của anh ta:
: Alice &nbsp; &nbsp; Mallory &nbsp; &nbsp; ← [Bob's key] Bob
Mallory thay thế key của Bob với cái của mình, và chuyển nó tới Alice, cho đó là Bob's key:
: Alice &nbsp; &nbsp; ← [Mallory's key] Mallory &nbsp; &nbsp; Bob
Alice mã hóa một thông tin bằng cái mà chị ta tin là Bob's key, nghĩa là chỉ Bob có thể đọc được nó:
: Alice "Đến gặp mình tại trạm xe buýt!" [mã hóa với Mallory's key] → &nbsp; &nbsp; Mallory &nbsp; &nbsp; Bob
Tuy nhiên, vì nó được mã hóa với Mallory's key, Mallory có thể giải mã nó, đọc nó, thay đổi nó (nếu muốn), tái mã hóa với Bob's key, và chuyển nó tới Bob:
: Alice &nbsp; &nbsp; Mallory "Đến gặp tôi tại xe tải nhỏ ở bờ sông!" [mã hóa với Bob's key] → &nbsp; &nbsp; Bob
Bob nghĩ thông điệp này là một giao tiếp được bảo mật của Alice.
Bob đi tới xe tải nhỏ ở bờ sông và bị cướp bởi Mallory.
Alice không biết rằng Bob bị cướp bởi Mallory, cứ nghĩ là Bob chậm trễ.
Đợi lâu không thấy Bob tới, chị ta mới nghĩa ra là có thể có điều gì xảy ra cho Bob.

Thí dụ này
cho thấy sự cần thiết của Alice và Bob phải có một số cách để đảm bảo rằng họ thực sự sử dụng các mật mã khóa công khai của nhau, chứ không phải là khóa công khai của kẻ tấn công. Nếu không, các cuộc tấn công như vậy nói chung có thể xảy ra, về nguyên tắc, đối với bất kỳ thông tin nào được gửi bằng công nghệ khoá công khai. Một loạt các kỹ thuật khác nhau có thể giúp bảo vệ chống lại các cuộc tấn công MITM.

Tham khảo

Liên kết ngoài
Finding Hidden Threats by Decrypting SSL (PDF). SANS Institute.
SSH Man-in-the-Middle Penetration Testing Tool