Sử dụng giao thức DTLS cho các trò chơi nhiều người chơi


8

Tôi đang xem xét sử dụng giao thức DTLS cho trò chơi nhiều người chơi trực tuyến của mình. Đối với những người không biết, về cơ bản, đó là một cổng của các datagram TLS đến UDP.

Theo bài báo này , chi phí chính của giao thức là trong giai đoạn bắt tay, mất 950 ms trong các thử nghiệm của họ. Tuy nhiên, nghiên cứu này (liên kết bị hỏng; xem bản sao trên archive.org ) chỉ ra rằng trong quá trình vận chuyển được mã hóa thực tế, thường có độ trễ dưới 1 phần nghìn giây.

Điều này nghe có vẻ như một ơn trời cho các trò chơi thời gian thực. Đây là một kênh được mã hóa có độ trễ thấp, bảo mật cao, hoạt động trên UDP. Nó cung cấp độ tin cậy và bảo vệ cho giai đoạn bắt tay, sau đó bước ra khỏi đường. Tuy nhiên, tôi chưa bao giờ nghe nói về việc nó được sử dụng trong một trò chơi trước đây, mặc dù thông số RFC được viết vào năm 2006 và nó được triển khai trong OpenSSL.

Tại sao mọi trò chơi không sử dụng nó?


1
Tôi không biết, nghe có vẻ hay ... Có lẽ nó không được hỗ trợ bằng nhiều ngôn ngữ phổ biến? Có thư viện tốt và làm việc cho nó? Tôi không sử dụng nó đơn giản vì tôi chưa từng nghe về nó và tôi nghi ngờ node.js hỗ trợ nó ...
jcora

gamedev.stackexchange.com/faq#dontask "Tại sao mọi trò chơi không sử dụng nó" không giải quyết được vấn đề: liệu nó có hữu ích cho mục đích của bạn hay không .
Tetrad

1
@Tetrad Vấn đề cốt lõi là nó nghe hay nhưng không được sử dụng rộng rãi. Đó là bí ẩn cuối cùng trong việc xác định liệu nó có hữu ích cho mục đích của tôi không.
Kai

1
@Tetrad Tôi đồng ý. Tuy nhiên, biết lịch sử của các thư viện tôi chọn là quan trọng đối với tôi. Chắc chắn, nếu nó phổ biến, điều đó làm cho sự phát triển dễ dàng hơn nhiều.
Kai

1
Vì tò mò, làm thế nào để bạn biết rằng các trò chơi không sử dụng nó?
Trevor Powell

Câu trả lời:


4

Tại sao mọi trò chơi không sử dụng nó? Đầu tiên, tôi nghi ngờ hầu hết mọi người thậm chí đã nghe nói về giao thức này. An ninh mạng không nổi tiếng trong số các nhà phát triển trò chơi và dù sao đây cũng là một biến thể khá mơ hồ. Thứ hai, không phải mọi trò chơi đều sử dụng UDP. Thứ ba, hiệu suất là một mối quan tâm. Một phần năm độ trễ một phần nghìn giây trên mỗi gói 200 byte rõ ràng có nghĩa là bạn chỉ có thể xử lý 5000 gói một giây ngay cả khi hệ thống của bạn hoàn toàn không có gì khác (điều này là không thể). Và có sự so sánh về hiệu suất ghi - mã hóa có thể đắt hơn giải mã.


2

Những lợi ích sẽ là gì?

Đừng nhầm lẫn obfuscation là một phương pháp bảo mật trong các trò chơi nhiều người chơi. Khả năng chặn / tiêm lưu lượng truy cập thường không phải là một mối quan tâm, vì khách hàng không thể sửa đổi giao thức vượt quá các tham số bình thường (hay còn gọi là gian lận). Nếu bạn đang mã hóa lưu lượng truy cập như một phương tiện để tránh điều này thì có lẽ bạn đã viết sai mã mạng của mình và cần di chuyển nhiều hơn các máy chủ mô phỏng.

Vì vậy, trong câu trả lời cho câu hỏi của bạn - bảo mật loại này thường không quan trọng trong các trò chơi.

Xin lỗi nếu tôi có lẽ hiểu lầm. Có lẽ bạn có thể phác thảo lý do tại sao bạn nghĩ rằng các trò chơi nên sử dụng điều này. Sau đó, bạn có thể tìm thấy câu trả lời cho câu hỏi của mình (nếu không phải vậy)


5
Mã hóa như thế này mang lại lợi ích cho người chơi giống như TLS trên trang web - điều đó có nghĩa là không ai ngoài nhà điều hành trò chơi, người bạn tin tưởng, đang gửi yêu cầu cho bạn hoặc rình mò những gì bạn đang làm. Ví dụ, không ai chặn các gói của bạn và khiến bạn giao dịch các mặt hàng. Không ai giả mạo nhật ký trò chuyện trong tên của bạn.

1
Điều quan trọng, nó có thể được sử dụng cho các giao dịch an toàn, chẳng hạn như mua một mặt hàng từ cửa hàng. Bên cạnh đó, nó ngăn chặn các gói đánh hơi và các cuộc tấn công trung gian. Nó không phải là một sự thay thế cho thiết bị đầu cuối câm nhưng nó có vẻ như là một cách dễ dàng và rẻ tiền để loại bỏ hoàn toàn một vectơ tấn công.
Kai

2
Cả hai điểm hợp lệ. Xin lỗi vì đã bỏ lỡ rằng: S Tuy nhiên, câu hỏi đã nói "mọi trò chơi" và tập trung vào các trò chơi thời gian thực có độ trễ thấp, trong đó 2 trường hợp trên dường như bị giới hạn ở mmorpg. Vì vậy, trong câu trả lời cho "mọi trò chơi" tôi vẫn sẽ nói rằng trong hầu hết các trường hợp không cần thiết. (Tôi không nghĩ rằng 2 cái trên sẽ được sử dụng trong trò chơi crysis chẳng hạn)
ProPuke

1
Đối với những việc như mua vật phẩm hoặc gửi trò chuyện, chỉ cần có API HTTPS thông thường. Không có lý do nào cả việc toàn bộ trò chơi phải chạy trên một số giao thức UDP được tối ưu hóa tập trung vào hành động, trừ khi bạn có một số lo ngại về băng thông điên rồ (dù sao DTLS sẽ gặp rắc rối; bạn cần phải loại bỏ các gói để tránh kích thước tin nhắn- tấn công dựa trên).
Sean Middleditch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.