Нужно хранить пароли в mysql от других сервисов. Хэш не работает, мне нужно было расшифровать пароли. Как с безопасностью это сделать? Только я думаю, что безопасный способ — это использовать аппаратный токен с ключом дешифрования? Есть ли другие проблемы? Извините, мой плохой английский.
Вы спрашиваете, как безопасно хранить зашифрованные данные в MySQL таким образом, чтобы их можно было расшифровать автоматически.
Вот в чем дело: само шифрование и дешифрование легко. Php предлагает пакет mcrypt. http://php.net/manual/en/mcrypt.examples.php
Однако безопасность такой процедуры зависит от безопасного управления ключами. Если приложение, которое вы используете с MySQL, способно дешифровать данные, и ключ доступен для него, то киберпреступник, который проникнет в вашу систему, получит к нему доступ. Киберпреступники могут прочитать ваш php-код, посмотреть, как вы расшифровываете эти данные, и сделать это сами. Таким образом, безопасность этого процесса зависит от того, насколько сложно вашим противникам получить ваши ключи.
Я полагаю, вы могли бы создать веб-сервис, который принимает зашифрованные данные и возвращает расшифрованные данные. Этот веб-сервис может содержать ключи внутри него. Вы можете защитить его несколькими способами:
Другая возможность — сделать что-то на стороне клиента. Безопасный пароль с открытым исходным кодом под названием Keepass http://keepass.info/ хороший пример, как и менеджер паролей Брюса Шнайера. https://www.schneier.com/blog/archives/2014/09/security_of_pas.html
Одностороннее хеширование паролей (http://php.net/manual/en/book.password.php) предотвращает дешифрование, но все же позволяет проверку пароля. Гораздо сложнее украсть пароли с односторонним хешированием.
С уважением, это не подходящий проект для неопытного человека, если пароли защищают ценные активы. Киберпреступники намного опережают нас.
Других решений пока нет …