Хранение Паролей в обратимой форме

$SECONDS на самом деле является специальной Bash Variable для определения количества секунд, в течение которых выполнялся скрипт. Поскольку это таймер, он автоматически увеличивается каждую секунду, а скрипт ничего не делает. Просто измените имя переменной на другое, и все будет в порядке.

17
задан Greg Hewgill 4 November 2008 в 02:52
поделиться

12 ответов

Необходимо будет изучить хорошие 2 пути криптографические методы, и мое общее правило ползунка:

при реализации собственного криптографического кода Вы перестанете работать.

Так, найдите хорошую реализацию, которая хорошо проверяется, и используйте это.

здесь существует, вероятно, некоторая хорошая информация:

http://phpsec.org/library/

15
ответ дан 30 November 2019 в 11:08
поделиться

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

3
ответ дан 30 November 2019 в 11:08
поделиться

Я предложил бы, чтобы Вы не сохранили пароли, но использовали passwordless соединение SSH от хоста до удаленной системы путем генерации ssh ключа и хранения открытого ключа в authorized_keys файле удаленной системы. Тогда необходимо было бы только установить возможность соединения во время конфигурации. По общему признанию не совсем ответ на Ваш вопрос, но хранение паролей в обратимой форме является скользким путем к нарушению защиты, по моему скромному мнению, хотя я уверен более умные мозги, чем мой может сделать его безопасным.

2
ответ дан 30 November 2019 в 11:08
поделиться

Один простой способ начать состоит в том, чтобы использовать mysql's, КОДИРУЮТ () и ДЕКОДИРУЮТ () функции. Я не знаю, какой алгоритм используется внизу, но достаточно легко использовать:

INSERT INTO tbl_passwords SET encoded_pw = ENCODE('r00t', 'my-salt-string');

и

SELECT DECODE(encoded_pw, 'my-salt-string') FROM tbl_passwords;
1
ответ дан 30 November 2019 в 11:08
поделиться

Если Вы идете PKI, и я был бы, удостовериться Вы безопасность Ваши закрытые ключи! Устойчивое шифрование, обеспеченное PKI, только так же безопасно как Ваши ключи.

0
ответ дан 30 November 2019 в 11:08
поделиться

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

0
ответ дан 30 November 2019 в 11:08
поделиться

Похоже, что у Вас в значительной степени есть два метода выполнения этого:

1) Как Вы предложенный использование алгоритм шифрования или алгоритмы, которые могут тогда дешифровываться и использоваться для аутентификации в Ваших сценариях. Можно пользоваться библиотекой MCrypt в PHP для выполнения этого.

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

0
ответ дан 30 November 2019 в 11:08
поделиться

Как многие заявили Вам, сценарий требует, чтобы Вы зашифровали имя пользователя и пароль. Я рекомендовал бы проверить расширение mcrypt php для шифрования/дешифрования.

0
ответ дан 30 November 2019 в 11:08
поделиться

Я думаю, что собираюсь исследовать компиляцию Сценария PHP со встроенными учетными данными, на лету, из веб-приложения.

я попросил бы учетные данные (для данного использования), затем создал бы и скомпилировал бы новый Сценарий PHP для этого использования только. Тем путем сценарий будет [только 111] делать то, в чем я нуждаюсь и не должен быть "читаемым". Я думаю, что это походит на самый безопасный способ сделать это.

попытается использовать Roadsend. http://www.roadsend.com/

0
ответ дан 30 November 2019 в 11:08
поделиться

Только для следования предложению для использования MySQL кодируют и декодируют функции, руководство неопределенно на, как они работают:

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

, Но то, что я предложил бы, - то, что можно вместо этого использовать встроенный MySQL 5.0 функции AES ; AES_ENCRYPT() и AES_DECRYPT()

SELECT AES_ENCRYPT('secret squirrel', '12345678') AS encoded

=> ØA;J×ÍfOU»] É8

SELECT AES_DECRYPT('ØA;J×ÍfOU»] É8', '12345678') AS decoded

=> secret squirrel

Они используют 128-разрядную AES, которая должна быть достаточно сильной в большинстве целей. Как другие прокомментировали, с помощью соленого значения, и ключ с высокой энтропией является хорошей практикой.

0
ответ дан 30 November 2019 в 11:08
поделиться

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

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

, Если необходимо сохранить decryptable учетные данные:

  1. Выбирают хороший алгоритм шифрования - AES-256, 3DES (датированный), или шифр с открытым ключом (хотя я думаю, что это является ненужным для этого использования). Используйте криптографическое программное обеспечение из уважаемого защищенного источника - НЕ ПЫТАЮТСЯ К САМОКРУТКЕ, ВЫ, ВЕРОЯТНО, ПОЙМЕТЕ IT превратно.
  2. Использование безопасный случайный генератор для генерации ключей. Слабая случайность является причиной номер один связанных с шифрованием отказов безопасности, не алгоритмами шифра.
  3. Хранилище шифрование (шифрование)/ключ расшифровки отдельно от Вашей базы данных, в O/S защитило файл, доступный только для Вашего профиля времени выполнения приложений. Тот путь, если бы Ваш DB нарушен (например, посредством Внедрения SQL) Ваш ключ, не автоматически уязвим, так как это потребовало бы доступа к к жесткому диску в целом. Если Ваш O/S поддерживает шифрование файлов, связанное с профилем, используйте его - это может только помочь, и это вообще прозрачно (например, шифрование NTFS).
  4. , Если практично, сохраните сами ключи, зашифрованные с основным паролем. Это обычно означает Ваше приложение. будет нуждаться в том пароле, введенном при запуске - это делает отрицательный результат для предоставления его в параметре из сценария с тех пор, если жесткий диск нарушен, необходимо предположить, что и файл ключей и сценарий могут быть просмотрены.
  5. Для каждого учетного набора, сохраните соль (незашифрованный) наряду с зашифрованными данными; это привыкло к "главному", который шифрование зашифровывает таким образом, что два идентичных пароля не производят тот же шифрованный текст - так как это отдает это, пароли являются тем же.
  6. , Если имя пользователя не необходимо для определения местоположения записи учетной записи (который в случае это не), зашифруйте и имя пользователя и пароль. Если Вы шифруете обоих, шифруете их как одно шифрование, выполненное, например,

    userAndPass = (пользователь + ":" + передача);
    encryptInit ();
    шифруют (солят);
    шифруют (userAndPass);
    cipherText=encryptFinal ();

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

пз: Я не программирую в PHP, так не может прокомментировать подходящий crypto s/w в той среде.

23
ответ дан 30 November 2019 в 11:08
поделиться

Для PHP важно отметить, что шифрование AES реализовано с помощью функций MCRYPT_RIJNDAEL. Не платите за закрытые реализации, если они доступны в PHP.

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

0
ответ дан 30 November 2019 в 11:08
поделиться
Другие вопросы по тегам:

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