2011-09-19 2 views
1

Я разрабатываю дополнительный модуль безопасности для веб-приложения, в котором предлагается ввести PIN-код, случайно сгенерированный при регистрации пользователя. PIN-код хранится в AES-128, зашифрованном в db и отправленном sms новому пользователю.Запросить у пользователя частичный PIN

Пользователь будет запрашивать PIN-код при возникновении определенных ситуаций (например, «странные» обращения или необычные операции), - и я хотел бы, чтобы пользователь не вводил весь ПИН-код, а всего 2 цифры (для пример: 1-й и 6-й).

2 4 6 2 9 1 8 3 -> entire PIN 
^---------^---- -> digits i'm asking 

Мой вопрос: является более безопасным способом выбора цифр, которые нужно задать? Должен ли я выбирать их случайным образом (но потенциальный злоумышленник, которому принадлежит часть булавки, может повторять попытку, пока запрашиваемые ему цифры не будут запрошены), или я должен каждый пользователь запрашивать одни и те же цифры - возможно, хранить свои индексы, зашифрованные с помощью PIN-кода, или генерировать их с функцией, параметризованной самим ПИН?

Спасибо.

+0

Любопытно, как вы можете проверить эти две цифры, учитывая, что полный ПИН-код хэширован? – henko

+0

Вам нужно было бы хэшировать каждую цифру с ее местоположением в пределах ПИН-кода, я думаю! Очень открыт для того, чтобы быть грубым. –

+0

PIN-код не хеширован, а зашифрован. – geezmo

ответ

3

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

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

+0

О, хорошо, я пропустил немного о перезагрузке. +1. А как насчет очистки файлов cookie, однако, сохраняется ли выбор цифр? –

+1

@ Kerrek - Вы не можете использовать файлы cookie для выбора цифр, поскольку это просто не безопасно. Вы просто сохранили два числа в БД, которые относятся к запрограммированным цифрам (на стороне сервера), - которые будут меняться только при наличии правильных цифр –

+0

Я вижу, вы хотите сделать это независимо от любой пользовательской сессии. Это хорошая идея. –

1

Если у вас есть вторичный, more secureway подлинности, тогда задайте произвольные цифры, но заблокируйте учетную запись после нескольких неудачных попыток. Таким образом, вероятность того, что атакующая имеет правильные цифры, очень мала, но последствия утечки двух и двух цифр также смягчаются.

[Edit:. Как @ m.edmondson предлагает только изменить пару после успешного входа, не раньше]

Если вы просто попросите тех же двух цифр снова и снова, вы могли бы а также просто двузначный PIN-код.

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

+0

Спасибо. На самом деле, каждый раз, запрашивая одинаковые 2 цифры, не совпадает с 2-значным PIN-кодом. Просить частичный PIN-код - это защита от атак подслушивания - это предотвращает вставку полного кода (и, в конечном итоге, кражу в полном объеме). – geezmo

+0

@geezmo: Если каждый аспект вашей системы только для каждого требует две одинаковые цифры, * то * это ничем не отличается от двузначного PIN-кода, я полагаю. Если вам нужны разные наборы цифр в разных местах, то это совсем другая история. –

+0

каждый пользователь будет иметь различный набор цифр для ввода, в моей идее – geezmo

Смежные вопросы