Использование протокола DTLS для многопользовательских игр

8

Я рассматриваю возможность использования протокола DTLS для моей многопользовательской онлайн-игры. Для тех, кто не знает, это по сути порт TLS для UDP-дейтаграмм.

Согласно этому документу , основные издержки протокола находятся в фазе рукопожатия, что в их тестах заняло 950 мс. Тем не менее, это исследование (неработающая ссылка; см. Копию на archive.org ) указывает на то, что во время фактического зашифрованного транспорта задержка часто составляет менее 1 миллисекунды.

Это звучит как находка для игр в реальном времени. Это защищенный зашифрованный канал с низкой задержкой, работающий по протоколу UDP. Он обеспечивает надежность и защиту на этапе рукопожатия, а затем уходит с дороги. Тем не менее, я никогда не слышал о том, чтобы он использовался в игре раньше, хотя спецификация RFC была написана в 2006 году и реализована в OpenSSL.

Почему не каждая игра использует это?

Кай
источник
1
Я не знаю, это звучит здорово ... Может быть, это не поддерживается во многих популярных языках? Есть ли хорошие и рабочие библиотеки для этого? Я не использую его просто потому, что не слышал об этом, и сомневаюсь, что node.js его поддерживает ...
jcora
gamedev.stackexchange.com/faq#dontask «Почему не каждая игра использует это» в глубине души не доходит до проблемы: полезно ли это для ваших целей.
Тетрад
1
@Tetrad Проблема в том, что это звучит замечательно, но широко не используется. Это последняя загадка в определении того, полезно ли это для моих целей.
Кай
1
@ Тетрад Я согласен. Однако, знание истории библиотек, которые я выбираю, важно для меня. Конечно, если он популярен, это значительно облегчает разработку.
Кай
1
Из любопытства, откуда вы знаете, что игры не используют его?
Тревор Пауэлл

Ответы:

4

Почему не каждая игра использует это? Во-первых, я сомневаюсь, что большинство людей даже слышали об этом протоколе. Сетевая безопасность не очень известна среди разработчиков игр, и в любом случае это довольно неясный вариант. Во-вторых, не каждая игра использует UDP. В-третьих, производительность является проблемой. Пятая часть миллисекундной задержки на каждом 200-байтовом пакете, очевидно, означает, что вы можете обрабатывать только 5000 пакетов в секунду, даже если ваша система больше ничего не делает (что маловероятно). И есть сравнение производительности записи - шифрование может быть дороже, чем дешифрование.

Kylotan
источник
2

Каковы будут преимущества?

Не путайте запутывание с методом защиты в многопользовательских играх. Возможность перехватывать / вводить трафик, как правило, не является проблемой, поскольку клиент все равно не должен иметь возможности изменять игровое состояние сверх нормальных параметров (иначе, чит). Если вы шифруете трафик как способ избежать этого, вы, вероятно, неправильно пишете свой сетевой код, и вам нужно переместить большую часть сервера моделирования.

Итак ... в ответ на ваш вопрос - безопасность такого рода обычно не имеет значения в играх.

Извините, если я, возможно, неправильно понял. Может быть, вы могли бы обрисовать, почему вы думаете, что игры должны использовать это. Затем вы можете найти ответ на свой вопрос (если это не так)

ProPuke
источник
5
Подобное шифрование приносит пользу игрокам так же, как TLS на веб-сайте - это означает, что никто, кроме оператора игры, которому вы доверяете, не отправляет вам запросы и не отслеживает то, что вы делаете. Например, никто не перехватывает ваши пакеты и не заставляет вас торговать предметами. Никто не подделывает журналы чата на ваше имя.
1
Важно отметить, что его можно использовать для безопасных транзакций, таких как покупка товара в магазине. Кроме того, он предотвращает перехват пакетов и атаки «человек посередине». Это не замена тупому терминалу, но кажется простым и дешевым способом полностью устранить вектор атаки.
Кай
2
Обе действительные точки. Приносим извинения за то, что пропустили: S Тем не менее, этот вопрос говорил «каждая игра» и был сосредоточен на играх в реальном времени с малой задержкой, где, как и в приведенных выше 2 случаях, кажется, что они ограничены mmorpgs. Итак, в ответ на «каждую игру» я бы все же сказал, что в большинстве случаев это не нужно. (Я не думаю, что вышеуказанные 2 были бы
полезны
1
Для таких вещей, как покупка предметов или отправка чата, просто используйте обычный HTTPS API. Нет никакой причины, по которой вся игра должна работать по некоему ориентированному на действия оптимизированному протоколу UDP, если только у вас нет сумасшедших проблем с пропускной способностью (которые DTLS собирается перевернуть в любом случае; вам нужно дополнить пакеты, чтобы избежать размера сообщения - основанные атаки).
Шон Мидлдитч