Хранение обратимых данных аутентификации

Иногда на ум приходят глупые вещи, но мне интересно, не могли бы вы поделиться некоторым пониманием этой ситуации.

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

Пример из жизни: я пользуюсь услугами CodeAnywhere на случай, если у меня нет доступа к компьютеру с программным обеспечением для разработки. Эта ситуация применима и там.

Затем соединение переходит с сервера A на сервер B. На сервере A материалы (файлы) управляются с помощью сервера B. На сервере B создается учетная запись для использования службы с сервера B, и устанавливается соединение с сервером A, сохраняя авторизацию данные для сервера А.

Люди создают свои собственные правила «хеширования», чтобы иметь возможность хранить что-то вроде mypassword как drowsappym. В этом примере пароль восстановлен. Но на ум приходят и другие вещи: используйте точки Юникода для каждого символа или создайте схему сопоставления для каждого символа (например, a=i,b=Q,c=*, and so on..). Конечно, вы хотите защитить не только пароль, но и все данные авторизации.

С нетерпением жду ответов.


person Ben Fransen    schedule 24.04.2015    source источник
comment
...вы ищете что-то вроде enpass?   -  person ʰᵈˑ    schedule 24.04.2015
comment
Я специально не ищу приложение. Я ищу методы/лучшие практики, которые можно использовать, когда вы хотите достичь этой цели.   -  person Ben Fransen    schedule 24.04.2015
comment
Как насчет использования RSA-аутентификации? Предполагая, что вы можете передать свой закрытый ключ?   -  person ʰᵈˑ    schedule 24.04.2015
comment
Пара открытый/закрытый ключ — это, безусловно, то, что вам нужно для обеспечения симметричности шифрования (и возможности восстановления вашего пароля).   -  person Answers_Seeker    schedule 24.04.2015
comment
Вы используете MySQL?   -  person Sid    schedule 24.04.2015
comment
MySQL, предположительно, является используемым механизмом базы данных, учитывая, что мы находимся в Интернете (и он находится в свободном доступе). Я бы почитал про RSA. Но при использовании CodeAnywhere я никогда ничего не загружал/не делал с сертификатами.   -  person Ben Fransen    schedule 24.04.2015


Ответы (1)


Я хотел бы объяснить два способа, которые я бы использовал.

  1. Используйте mcrypt_encrypt, чтобы сохранить зашифрованный пароль, а затем используйте mcrypt_decrypt, чтобы получить простой текстовый пароль.
  2. Если вы работаете с MySQL, вам также следует ознакомиться с DES_ENCRYPT

Я думаю, это самые быстрые способы, и они также обеспечивают довольно приличную безопасность, конечно, если кто-то взломает вашу систему, это может быть проблемой, но это также произойдет, если вы используете RSA, что более сложно. использовать также.

person Sid    schedule 24.04.2015
comment
Оба интересовались способами достижения цели, но что, если базу данных взломают. Тогда будет несложно попробовать некоторые из этих методов и проверить, совпадают ли учетные данные. Я не знал об этих функциях, поэтому было полезно прочитать о них. +1 - person Ben Fransen; 24.04.2015
comment
Если вы используете mcrypt_encrypt, даже если ваша БД была взломана, и у вас есть хранилище ключей в файле PHP, расшифровать его будет невозможно (легко). Но если ваша система будет взломана, у вас не будет возможности защитить пароль, так как где-то в вашей логике в какой-то момент будет способ расшифровки. Вот почему мы обычно используем необратимый хэш для хранения паролей. - person Sid; 24.04.2015
comment
Я согласен с тобой. Использование солей в коде устраняет (или усложняет) проблему. И правда, когда все скомпрометировано, не остается ничего другого, кроме как подумать о том, как вас вообще могут взломать. - person Ben Fransen; 24.04.2015
comment
@Ben Точно, так что я думаю, для вашей цели это способ получить, если вам позже понадобится простой текстовый пароль! - person Sid; 24.04.2015