Система с открытым / закрытым ключом в PHP - PullRequest
2 голосов
/ 25 февраля 2012

Для моего сценария автологина я думал о реализации следующего:

  • пользователь получает какой-то личный «открытый ключ», который хранится в cookie-файле
  • потому что я не хочу сохранять тот же ключ в моей базе данных, я хочу создать соответствующий "закрытый ключ"
  • при обнаружении cookie-файла извлекается ключ, хранящийся в базе данных, и проверяется отношение между публичным и частным доступом между двумя ключами

Каков наилучший способ реализовать это в php без openSSL и т. Д.

Вот что у меня сейчас:

$public = hash($hash_algorithm, uniqid(rand()));
$private = hash_hmac($hash_algorithm, $public, $encryption_key);

И для проверки:

$check = hash_hmac($hash_algorithm, $public, $encryption_key);
return $check == $private;

$ encryption_key - это случайный ключ из файла конфигурации.

Я думаю об этом слишком просто или это достаточно хорошо? Конечно, когда ключ используется, генерируется новый, как принцип здесь: http://jaspan.com/improved_persistent_login_cookie_best_practice

1 Ответ

0 голосов
/ 13 октября 2018

Хотя строго возможно создать систему криптографии с открытым ключом, которая использует только криптографические примитивы с симметричным ключом (см .: SPHINCS ), вы, вероятно, не должны бросать свои собственныеспроектируйте и ожидайте, что это будет безопасно здесь.

Каков наилучший способ реализовать это в php без openSSL и т. д.

В 2018 году ответ: «с libsodium ».Но когда вы задали этот вопрос, на самом деле это был не вариант.

Но в духе вопроса: За пределами библиотек криптографии, которые предоставляют асимметричную криптографию для вас или изобретают велосипед, нетрешение.

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