Відповіді
- SRP - Безпечний віддалений пароль - на основі Diffie-Hellman. Ідея полягає в тому, що ви можете зробити взаємну перевірку пароля, фактично ніколи не передаючи пароль або будь-яку інформацію, яка може бути використана для його отримання. Незважаючи на те, що це надійно за допомогою дроту, ви все одно маєте хешувати і солити свої паролі, оскільки ваш сервер ніколи не повинен зберігати їх у простому тексті .
- Перевага SRP полягає в тому, що після його завершення він також дає ключ взаємного узгодження ключа шифрування, який зловмисник не зміг би вивести з огляду на передані вами дані. Це означає, що ви можете безкоштовно використовувати симетричний алгоритм шифрування (наприклад, AES), коли користувач перевіряє автентифікацію.
- Якщо припустимо, що ви використовуєте UDP з власною надійною / впорядкованою (орієнтованою на з'єднання) реалізацією поверх нього: зашифруйте всю програму UDP, включаючи ваш номер послідовності пакетів. Якщо ваша система сконструйована правильно, вона автоматично відкидає відтворені повідомлення, і зловмисник не зможе змінити номер послідовності пакету, оскільки він зашифрований (таким чином, повторна версія можлива - але вона буде автоматично ігнорована).
Думки
Чи має бути ваша автентифікація безпечною? Абсолютно. Не робіть жодних компромісів з точки зору безпеки, коли пароль під питанням. Таким чином, ви, безумовно, повинні розглянути перший кулю моєї відповіді.
Чи повинні ваші дані бути захищеними? Тільки якщо це купівля / мікро-транзакція в грі - і чому б тоді просто не використати щось випробуване та справжнє, наприклад HTTPS. Шифрування трафіку ігор, мабуть, не є прийнятним рішенням з наступних причин:
- Це повна параноїя.
- Це додасть накладні витрати на процесор на вашому сервері, якщо ви не зможете придбати (дорогі) апаратні модулі шифрування.
- Не має значення, яку безпеку ви забезпечуєте своїми даними по дроту - хтось може захопити клієнтський процес та перехопити повідомлення в той момент, перш ніж вони зашифровані та надіслані. Це не тільки можливість, але і нескінченно більш можлива, як суттєво простіше ввести код порівняно з перехоплюючими пакетами. Якщо ви робите це для запобігання накруткам, ви повністю і повністю витрачаєте свій час.
- Що стосується безпеки пароля, то, на жаль, нічого не можна зробити з приводу викраденої системи, клієнт став ворожим. Ключі Blizzards WoW розроблені для вирішення цього питання - але я не впевнений, наскільки це безпечно (особливо якщо ви залишите його підключеним).
Будь ласка, якщо ви шифруєте для запобігання читів, відмовтесь від цього. Ви збираєтесь коротко - я дав вам інформацію, якщо ви цього не зробите. Пам’ятайте, що ви можете вибірково зашифровувати пакети першим байтом у пакеті, що вказує, і індикатор того, чи решта зашифровані: хоча, ще раз, я б дотримувався HTTPS, якщо вам потрібно робити такі речі, як транзакції кредитною карткою: вони надзвичайно рідкісні та HTTPS розроблений фахівцями - на відміну від того, що ви або я розробили.
Все, що сказано, Blizzard насправді шифрує свій трафік WoW. Основна причина цього зламання полягає в тому, що хтось, імовірно, повноцінний аматор, вирішив спробувати свої сили в алгоритмі шифрування в домашніх умовах; це дуже добре вимкнено . Навіть якщо ви користуєтесь стандартними алгоритмами, є хороший шанс, що хтось перепрограмує ваш код і змоделює його - як тільки клієнт вводить свій пароль, немає повідомлення про те, що підключена непідтримувана система.