Tấn công phát lại

Tấn công phát lại là một hình thức tấn công mạng trong đó việc truyền dữ liệu hợp lệ là độc hại hoặc gian lận được lặp đi lặp lại hoặc trì hoãn. Điều này được thực hiện bởi người khởi tạo hoặc bởi một đối thủ nào đó chặn dữ liệu và truyền lại nó, có thể là một phần của cuộc tấn công giả trang bằng cách thay thế gói IP. Đây là một trong những phiên bản cấp thấp hơn của " Tấn công trung gian ".

Một cách khác để mô tả một cuộc tấn công như vậy là: "một cuộc tấn công vào giao thức bảo mật sử dụng các tin nhắn lặp lại từ một bối cảnh khác vào bối cảnh dự định (hoặc ban đầu và dự kiến), do đó đánh lừa người tham gia trung thực nghĩ rằng họ đã hoàn thành thành công giao thức chạy. " 

== Cách thức tấn công phát lại ==
Giả sử Alice muốn chứng minh danh tính của mình với Bob. Bob yêu cầu mật khẩu của cô làm bằng chứng nhận dạng, Alice cung cấp một cách nghiêm túc (có thể sau một số biến đổi như hàm băm); Trong khi đó, Eve đang nghe lén cuộc trò chuyện và giữ mật khẩu (hoặc hàm băm). Sau khi trao đổi kết thúc, Eve (đóng giả là Alice) kết nối với Bob; khi được yêu cầu bằng chứng về danh tính, Eve gửi mật khẩu (hoặc hàm băm) của Alice đọc từ phiên cuối cùng mà Bob chấp nhận, do đó cấp quyền truy cập cho Eve.

== Phòng ngừa và biện pháp đối phó ==
=== Biện pháp đối phó chung cho tất cả các cuộc tấn công chơi lại ===
Các cuộc tấn công phát lại có thể được ngăn chặn bằng cách gắn thẻ cho từng thành phần được mã hóa với ID phiên và số thành phần. Sử dụng kết hợp các giải pháp này không được dùng bất cứ thứ gì phụ thuộc lẫn nhau. Bởi vì không có sự phụ thuộc lẫn nhau nên có ít lỗ hổng hơn. Điều này hoạt động vì một phiên ID ngẫu nhiên, duy nhất được tạo cho mỗi lần chạy chương trình, do đó lần chạy trước trở nên khó lặp lại hơn. Trong trường hợp này, kẻ tấn công sẽ không thể thực hiện phát lại vì trong lần chạy mới, ID phiên sẽ thay đổi.

=== Thêm về ===
Phiên Ids, còn được gọi là mã thông báo phiên, là một cơ chế có thể được sử dụng để giúp tránh các cuộc tấn công phát lại. Cách tạo id phiên làm việc như sau.

1. Bob gửi mã thông báo một lần cho Alice, Alice sử dụng để chuyển đổi mật khẩu và gửi kết quả cho Bob. Ví dụ: cô ấy sẽ sử dụng mã thông báo để tính toán hàm băm của mã thông báo phiên và nối nó với mật khẩu sẽ được sử dụng.
2. Về phía mình, Bob thực hiện tính toán tương tự với mã thông báo phiên.
3. Nếu và chỉ khi cả hai giá trị của Alice và Bob khớp nhau, đăng nhập thành công.
4. Bây giờ, giả sử một kẻ tấn công Eve đã chiếm được giá trị này và cố gắng sử dụng nó trong một phiên khác. Bob sẽ gửi một mã thông báo phiên khác và khi Eve trả lời với giá trị đã nắm bắt của cô, nó sẽ khác với tính toán của Bob để anh ta biết đó không phải là Alice.

Mã thông báo phiên nên được chọn theo một quy trình ngẫu nhiên (thông thường, các quy trình giả ngẫu nhiên được sử dụng). Nếu không, Eve có thể đóng vai Bob, đưa ra một số mã thông báo dự đoán trong tương lai và thuyết phục Alice sử dụng mã thông báo đó trong quá trình chuyển đổi của cô. Sau đó, Eve có thể phát lại câu trả lời của cô ấy sau đó (khi mã thông báo được dự đoán trước đó thực sự được trình bày bởi Bob) và Bob sẽ chấp nhận xác thực.

=== Mật khẩu một lần ===
Mật khẩu một lần tương tự như mã thông báo phiên ở chỗ mật khẩu hết hạn sau khi được sử dụng hoặc sau một khoảng thời gian rất ngắn. Chúng có thể được sử dụng để xác thực các giao dịch riêng lẻ ngoài các phiên. Chúng cũng có thể được sử dụng trong quá trình xác thực để giúp thiết lập lòng tin giữa hai bên đang liên lạc với nhau. bạn có thể tưởng tượng như các phương thức thanh toán trực tiếp của ngân hàng.

=== Nonces và MAC ===
Bob cũng có thể gửi Nonces nhưng sau đó nên bao gồm mã xác thực tin nhắn (MAC) mà Alice nên kiểm tra.

=== Dấu thời gian ===
Dấu thời gian là một cách khác để ngăn chặn một cuộc tấn công phát lại. Đồng bộ hóa phải đạt được bằng cách sử dụng một giao thức an toàn. Ví dụ, Bob định kỳ phát sóng thời gian trên đồng hồ của mình cùng với MAC. Khi Alice muốn gửi tin nhắn cho Bob, cô ấy bao gồm ước tính tốt nhất về thời gian trên đồng hồ của anh ấy trong tin nhắn của cô ấy, cũng được xác thực. Bob chỉ chấp nhận các tin nhắn mà dấu thời gian nằm trong dung sai hợp lý. Ưu điểm của sơ đồ này là Bob không cần tạo số ngẫu nhiên (giả) và Alice không cần hỏi Bob số ngẫu nhiên. Trong các mạng đơn hướng hoặc gần một chiều, nó có thể là một lợi thế. Sự đánh đổi là phát lại các cuộc tấn công, nếu chúng được thực hiện đủ nhanh, tức là trong giới hạn 'hợp lý' đó, có thể thành công.

== Biện pháp đối phó trong các tình huống cụ thể ==
=== Ngăn chặn giao thức Kerberos ===
Giao thức xác thực Kerberos bao gồm một số biện pháp đối phó. Trong trường hợp cổ điển của một cuộc tấn công phát lại, một thông điệp được bắt bởi một kẻ thù và sau đó phát lại vào một ngày sau đó để tạo hiệu ứng. Ví dụ: nếu một chương trình ngân hàng dễ bị tấn công, một thông điệp dẫn đến việc chuyển tiền có thể được phát lại nhiều lần để chuyển nhiều tiền hơn dự định ban đầu. Tuy nhiên, giao thức Kerberos, được triển khai trong nhiều phiên bản LDAP và Microsoft Windows Active Directory, bao gồm việc sử dụng sơ đồ liên quan đến tem thời gian để hạn chế nghiêm trọng hiệu quả của các cuộc tấn công phát lại. Các tin nhắn đã qua "thời gian để sống (TTL)" được coi là cũ và bị loại bỏ.

Đã có những cải tiến được đề xuất, bao gồm cả việc sử dụng sơ đồ ba mật khẩu. Ba mật khẩu này được sử dụng với máy chủ xác thực, máy chủ cấp vé và TGS. Các máy chủ này sử dụng mật khẩu để mã hóa tin nhắn bằng các khóa bí mật giữa các máy chủ khác nhau. Mã hóa được cung cấp bởi ba khóa này giúp hỗ trợ ngăn chặn các cuộc tấn công phát lại.

=== Định tuyến an toàn trong các mạng ad hoc ===
Mạng ad hoc không dây cũng dễ bị tấn công lại. Trong trường hợp này, hệ thống xác thực có thể được cải thiện và mạnh hơn bằng cách mở rộng giao thức AODV. Phương pháp cải thiện bảo mật của mạng Ad Hoc này làm tăng tính bảo mật của mạng với một lượng nhỏ chi phí. Nếu phải có chi phí hoạt động rộng thì mạng sẽ có nguy cơ trở nên chậm hơn và hiệu suất của nó sẽ giảm. Vì vậy, bằng cách giữ chi phí tương đối thấp, mạng có thể duy trì hiệu suất tốt hơn trong khi vẫn cải thiện bảo mật.

=== Giao thức xác thực bắt tay ===
Xác thực và đăng nhập bởi khách hàng sử dụng Giao thức điểm-điểm (PPP) dễ bị trả lời các cuộc tấn công khi sử dụng Giao thức xác thực mật khẩu (PAP) để xác thực danh tính của họ, vì khách hàng xác thực gửi tên người dùng và mật khẩu của mình " rõ ràng ", và máy chủ xác thực sau đó gửi xác nhận của mình để đáp lại điều này; do đó, một máy khách chặn có thể tự do đọc dữ liệu được truyền và mạo danh từng máy khách và máy chủ khác, cũng như có thể lưu trữ thông tin đăng nhập của khách hàng để sau đó mạo danh máy chủ. Giao thức xác thực bắt tay thử thách (CHAP) bảo vệ chống lại loại tấn công phát lại này trong giai đoạn xác thực bằng cách sử dụng thông báo "thử thách" từ trình xác thực mà khách hàng phản hồi với giá trị được tính toán băm dựa trên bí mật chung (ví dụ: mật khẩu của khách hàng), mà trình xác thực so sánh với tính toán riêng của thử thách và chia sẻ bí mật để xác thực ứng dụng khách. Bằng cách dựa vào một bí mật chung chưa được truyền đi, cũng như các tính năng khác như lặp lại các thách thức do người xác thực kiểm soát, và thay đổi định danh và giá trị thách thức, CHAP cung cấp bảo vệ hạn chế chống lại các cuộc tấn công.

== Các ví dụ thực tế về tính nhạy cảm của cuộc tấn công chơi lại ==
Có một số ví dụ trong thế giới thực về cách các cuộc tấn công phát lại đã được sử dụng và cách các vấn đề được phát hiện và khắc phục để ngăn chặn các cuộc tấn công tiếp theo.

=== Hệ thống khóa không chìa khóa từ xa cho xe ===
Nhiều phương tiện trên đường sử dụng hệ thống không chìa khóa từ xa, hoặc chìa khóa điện tử, để thuận tiện cho người dùng. Các hệ thống hiện đại được tăng cường chống lại các cuộc tấn công phát lại đơn giản, nhưng dễ bị tấn công đệm phát lại. Cuộc tấn công này được thực hiện bằng cách đặt một thiết bị có thể nhận và truyền sóng vô tuyến trong phạm vi của xe mục tiêu. Máy phát sẽ cố gắng gây nhiễu bất kỳ tín hiệu mở khóa xe RF nào được gửi đến nó, trong khi đặt nó vào bộ đệm để sử dụng sau. Khi tiếp tục cố gắng mở khóa xe, bộ phát sẽ kẹt tín hiệu mới, lưu vào bộ đệm và phát lại tín hiệu cũ, tạo ra bộ đệm lăn đi trước xe một bước. Sau đó, kẻ tấn công có thể sử dụng mã đệm này để mở khóa xe.

=== Xác minh người nói phụ thuộc vào văn bản ===
Nhiều thiết bị sử dụng nhận dạng loa, để xác minh danh tính của loa. Trong các hệ thống phụ thuộc vào văn bản, kẻ tấn công có thể ghi lại lời nói của cá nhân mục tiêu đã được hệ thống xác minh chính xác, sau đó phát lại bản ghi để được hệ thống xác minh. Một biện pháp đối phó đã được đưa ra bằng cách sử dụng bitmap phổ từ lời nói được lưu trữ của người dùng đã được xác minh. Phát biểu lại có một mẫu khác trong kịch bản này và sau đó sẽ bị hệ thống từ chối.

== Xem thêm ==
- Hoạt động nghe lén
- Xác thực truy cập
- Từ chối dịch vụ
- Người đàn ông giữa cuộc chiến
- Nghe lén thụ động
- Rơle tấn công
- Tấn công trước khi chơi
- Phiên phát lại