Какое шифрование Python является наиболее безопасным паролем - PullRequest
5 голосов
/ 25 июня 2009

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

Так какой же самый безопасный способ зашифровать / расшифровать что-либо с помощью python?

Ответы [ 4 ]

5 голосов
/ 26 июня 2009

Если ваш скрипт может декодировать пароли, то может кто-то взломать ваш сервер. Шифрование действительно полезно только тогда, когда кто-то вводит пароль для его разблокировки - если он остается разблокированным (или в сценарии есть пароль для разблокировки), шифрование бессмысленно

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

Я бы не стал беспокоиться о сохранении паролей к игре в виде простого текста. Если вы обеспокоены их защитой, исправьте, возможно, SQL-инъекции и т. Д., Убедитесь, что ваш веб-сервер и другое программное обеспечение обновлены и правильно настроены и т. Д.

Возможно, придумаете способ сделать пароли менее привлекательными, чем играть в игру? Например, была игра (я не помню, что это было), в которой, если вы использовали чит пропуска уровня, вы переходили на следующий уровень, но он не помечал его как «завершенный», или вы могли пропустить уровень но не получил ни одного очка. Или посмотрите на Project Euler, вы можете пройти любой уровень, но вы получаете очки только тогда, когда вводите ответ (а отработка ответа - это весь смысл игры, поэтому обман обманывает игру)

Если вы действительно параноик, вы можете возможно использовать асимметричное шифрование, где вы в основном шифруете что-то с помощью key A, и вы можете читать это только с помощью key B ..

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

Короче говоря, я бы сказал, хранит пароли в виде простого текста и концентрирует ваши проблемы безопасности в другом месте (сам код веб-приложений)

5 голосов
/ 25 июня 2009

Самое безопасное шифрование - это не шифрование. Пароли должны быть сокращены до хеша. Это одностороннее преобразование, делающее пароль (почти) невосстановимым.

Когда вы даете кому-то код, вы можете сделать следующее, чтобы быть на самом деле безопасным.

(1) генерирует случайную строку.

(2) дайте им строку.

(3) сохранить хэш сгенерированной вами строки.

один раз.

Если они «забывают» код, вы должны (1) убедиться, что у них есть права на получение кода, а затем (2) повторить процесс (сгенерировать новый код, дать ему, сохранить хэш.)

2 голосов
/ 25 июня 2009

Если это веб-игра, не можете ли вы сохранить серверы кодов и отправить их клиенту, когда он завершит задачу? Какова архитектура вашей игры?

Что касается шифрования, возможно, попробуйте что-то вроде pyDes ?

0 голосов
/ 26 июня 2009

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

Выберите шифр и покончите с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...