Как создать безопасную систему паролей с пропуском?

Я работаю над системой входа в php, и мне было интересно, как можно создать безопасную систему ввода паролей, которая запрашивает, скажем, 1-й, 2-й и 8-й символы вашего пароля, как это делают многие системы онлайн-банкинга. Как можно это сделать а также пароли хранятся в виде двойных хешей?

1

Решение

Идея, которая приходит мне в голову, заключается в том, чтобы хранить каждый символ пароля, хэшированный в отдельном поле или сериализованный:

ПСЕВДОКОД:

$ password — пароль пользователя, $ secret_word — слово, которое вы используете для проверки отдельных символов

function get_hashed_characters($password, $secret_word) {
$char_store = ""
for every character $char in $secret_word
$hashed_char = some_hash_function($char + $password)
$hash_store = $char_store + $hashed_char

return $hash_store
}

function check_hashed_char($password, $hash_store, $char_index, $char) {
if len($hash_store) < $char_index * $HASH_LEN + $HASH_LEN return false

$hashed_char = substr($hash_store, $char_index * $HASH_LEN, $HASH_LEN)

return true if $hashed_char is equals to some_hash_function($char + $password), false otherwise
}

ОБНОВИТЬ: как указал C4ud3x, я хэширую оба символа, которые я хочу сохранить, соединенные с паролем

Это совершенно другое решение, иногда используемое в системах Linux: Аутентификация Challenge-Response

1

Другие решения

HSBC использует этот стиль системы паролей на своем сайте: Веб-сайт

и в их приложении: Приложение) *

После контакта они сказали:

Обеспечение безопасности наших систем является и останется нашим приоритетом номер один.

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

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

  • Шифровать данные пароля в базе данных
  • Зашифруйте пароли в базе данных, а затем зашифруйте всю базу данных для большей безопасности.

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

0

По вопросам рекламы [email protected]