Grrrr
@Grrrr

Надёжно ли такое шифрование?

Привет,

Задача зашифровать трафик игры чтобы предотвратить перехват и подмену пакетов, перехват игровых сессий. Пришел вот к чему, что скажите? это надёжно?

1. Регистрация клиента

Пароль от клиента хэшируется SHA256 и отправляется по открытому каналу серверу (хэш светится 1 раз при регистрации!)

2. Взаимодействие с зарегистрированным клиентом

Клиент хочет войти в игру, отправляет намерение серверу. Сервер присылает клиенту случайное число по открытому каналу. Клиент шифрует свой пароль используя SHA256 и случайное число от сервера (RN):

CPASSWORD = SHA(RN + SHA(PASSWORD))

отправляет серверу, сервер сравнивает свой сгенерированный хэш на основе хэша пароля и известного случайного числа RN с пришедшим от клиента:

if(SHA(RN + SHA(PASSWORD))client == SHA(RN + SHA(PASSWORD))server)

если совпадают, клиент входит в игру.

3. Шифрование трафика

Теперь весь трафик шифруется с помощью симметричного алгоритма Blowfish, а в качестве ключа используется хэш пароля.

data: 1,0,Login
key: 99c2bb3e7c93dd54a206c77388ee09708e39db1a6f544ff6887612495bce3920
alg: Blowfish
Output: tFoTF0Oms+8Z

Итого: ключ шифрования светится только в момент регистрации, что не абсолютно надёжно, но и не сильно страшно? можно использовать протокол Диффи — Хеллмана для обмена ключами, но возникает другая проблема, алгоритм уязвим для модификации данных в канале связи, в том числе для атаки «Человек посередине». Если выбирать из двух зол, первое представляется более простым и надёжным, или нет?
  • Вопрос задан
  • 742 просмотра
Решения вопроса 1
alsopub
@alsopub
Как вариант - не изобретая велосипед можно попробовать SSL + SSL Pinning https://habrahabr.ru/company/dsec/blog/229849/ (против подмены сертификата)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
sim3x
@sim3x
Используй библиотеки для своего ЯП -- не нужно изобретать велосипед, когда уже все и так есть
Ответ написан
Комментировать
@Sing303
Используйте готовые библиотеки, не нужно придумывать велосипед, если вы не специалист в этой области

Вспомнились статьи
Вы опасно некомпетентны в криптографии
Почему я не лезу в криптографию
Ответ написан
Комментировать
@napa3um
Ненадёжно, и сформулированные вами критерии "зол" неверны. Используйте SSL/TLS/HTTPS, там уже всё за вас сделано.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы