Войти
Unreal EngineФорумBlueprints

Как зашифровать сохранения?

Страницы: 1 2 Следующая »
#0
14:55, 7 фев. 2020

Всем привет, такой вопрос. Приложение использует связку логина и пароля для дальнейшей работы. Я их сохраняю через Save Game Object и пр., короче, самым простым способом (например, под именем Main). Глянул на диске в этот файл - он как бы что-то кодирует, но введённый мой логин и пароль можно прочесть в первоначальном виде!

Проблема ещё в том, что для авторизации нужен не хэш, а связка с логином и паролем в естественном виде, то есть приложение должно сохранять и восстанавливать именно их (прямо используются в нодах). В принципе, я могу придумать какой-нибудь свой алгорим кодирования - декодирования, но зачем, если вдруг такая проблема уже решена. ) Заранее всем спасибо за ответы!


#1
15:14, 7 фев. 2020

привет, пап. принципиально невозможно создать алгоритм кодирования, который невозможно взломать, если все данные для шифровки хранятся у самого пользователя. то есть единственный способ сделать это нормально — это использовать либо шифровку на стороне удалённого игрового сервера, либо использовать цифровую подпись на сервере. если ты не планируешь хостить для этой цели серверы, я бы не советовал с этим заморачиваться, так как в любом случае если кому-то это сильно понадобится, они всё равно это взломают (они и удалённый сервер взломают, если ты не знаешь, что делаешь), так что просто сделай тривиальную шивровку вроде xor'а данных, просто чтоб совсем в явном виде не хранить данные и на этом успокойся.

#2
15:14, 7 фев. 2020

Может быть лучше хранить не логин-пароль, а токен авторизации?
При успешной авторизации сервер дает клиенту токен (например SHA256(соль+время+SHA256(логин+SHA256(пароль)), или еще какая-нибудь уникальная комбинация), сервер и клиент сохраняют этот токен. После этого клиент всегда автоматически авторизуется с токеном. По каким-нибудь триггерам (срок действия авторизации вышел, клиент присоединился с IP из другого блока, клиент получил временный бан, и т.п.) сервер отзывает токен или клиент его стирает, и далее пользователь должен авторизоваться заново для получения нового токена.
Конечно это вид security through obscurity, но среди каких-нибудь двоичных данных и если в файле нет очевидной разметки, такой токен будет малозаметен.

#3
16:23, 7 фев. 2020

Suslik
Спасибо! Действительно, мне нужно совсем простое шифрование (вопрос не во взломе сервера, а во взломе мобилы клиента, с которого можно этот пароль заполучить и попробовать применить где-нибудь ещё).

Ranma
> Может быть лучше хранить не логин-пароль, а токен авторизации?
Да, там работа по токену. Токен каждый раз разный, а чтобы его получить, нужно передать сначала логин и пароль.

#4
9:50, 8 фев. 2020

papa
ясное дело, что ни логин, ни пароль нигде хранить нельзя ни в явном, ни в зашифрованном виде, потому что если их ломанут, то ты попал. хранят только хеши от подобной информации, читай, что тебе Ranma написал и потом — долго про википедию, что такое SHA, что такое соль и всё такое.

#5
10:16, 8 фев. 2020

Suslik
> хранят только хеши от подобной информации
Вот у меня вопрос и был, по сути, о том, как средствами блупринтов сделать хэш, и возможно ли его передать по JSON (я использую плагин VaRest). В серверной документации написано просто - передать пароль, и пока в моём прототипе при передаче подходит обычный нешифрованный пароль.

#6
0:48, 9 фев. 2020

papa
> Вот у меня вопрос и был, по сути, о том, как средствами блупринтов сделать хэш,

Здесь должна быть картинка с джеки чаном.

#7
0:10, 10 фев. 2020

>Suslik

хранят только хеши от подобной информации

Drupal превосходно хранит пасы пользователей в открытом виде... нет конечно он использует хеши, так как есть таблица где пасы в виде хешей хранятся, но и в открытом виде пасы есть. Так что не все ))

#8
(Правка: 1:23) 1:22, 10 фев. 2020

А у вас отдельный логин/пароль на каждое сохранение? Или на профиль игрока? Или даже на установку игры? Потому что если количество паролей ограниченное, то можно воспользоваться штатными средствами. Раз уж упоминается мобила, то стоит начать с изучения систем хранения паролей, предоставляемых мобильными платформами, вроде:
andriod:
Android keystore system https://developer.android.com/training/articles/keystore
Secure Device Storage https://github.com/adorsys/secure-storage-android
ios:
Storing Keys in the Secure Enclave https://developer.apple.com/documentation/security/certificate_ke… ecure_enclave

Ну и разумеется придётся ещё поискать как получить к ним доступ из C++. Как я понял, вы Unreal используете?

#9
5:53, 10 фев. 2020

FourGen
> Drupal превосходно хранит пасы пользователей в открытом виде
где ты это нашёл?

#10
7:33, 10 фев. 2020

>Suslik
где ты это нашёл?

Да вот когда делал прогу посчитать новых зареганных на сайте без использования админки... нашел таблицу, где пасы сохранялись без шифрования.

#11
7:35, 10 фев. 2020

FourGen
может быть, это была инициатива разрабов того сайта — хранить логины-пароли как обычные данные? потому что сам drupal использует нормальную систему авторизации, насколько я понимаю.

#12
(Правка: 8:08) 7:38, 10 фев. 2020

Ну я сказал об этом им. Уверяют что все стандартно. (Я сам в жизни с CMS не работал не знаю).

P.S.
Ну еще надо учесть, конечно, что нужен пасс от MySQL, но это уже детали... может быть бекап где-то.

  • Так же вероятно это где-то отключается, то же не знаю.
  • P.P.S
    Да вспомнил... они же как раз и рассказывали про нормальную систему авторизации, когда я начал вещать, что надо как-то данные сохранять. Они говорили, что нельзя использовать данные открытые. Что восстановление пароля идет только через замену. Что там все уже предусмотренно, что там все автоматически и очень удобно.
    Я же сам в этих админках ничего не понимаю и разбираться как-то нет желания, а вот подконнектиться и считать/удалить/добавить/изменить программно нужные данные просто. Так пока искал, где оно храниться так и нашел полностью открытую базу. Хотя еще раз говорю есть база и с хешами паролей. Если пароль менять, меняется и там и там. Для меня в общем странно.
    Может такого и не должно быть, я уже и забыл про это, сейчас увидел тему и вспомнил.

    #13
    9:11, 10 фев. 2020

    В 99% cms (drupal, wordpress, joomla, битрикс и тд)
    в таблицу с пользователями в поле пароль кладется что то такое md5(логин + пароль + соль) больше ничего нет.

    #14
    17:43, 10 фев. 2020

    >forwhile

    В 99% cms (drupal, wordpress, joomla, битрикс и тд)

    Да есть таблица с хешами, я уже написал. Есть ссылка на нее из других таблиц. Но по факту есть и с открытыми данными.

    Пока не могу сказать точнее, завтра будут люди на месте которые сайт делали, попрошу глянуть еще раз, что это такое. Весьма вероятно, что это они что-то сами создали, но когда этот вопрос поднимался, помню, что говорили, что все стандартно сделано, и очень удивились узнав про открытые данные.

    Пока возьму паузу, посмотрю, скажу точно. Может это просто что-то криво было сделано и они уже убрали. А я подумал, что это так везде.

    Страницы: 1 2 Следующая »
    Unreal EngineФорумBlueprints