Использование SMS в качестве фактора аутентификации для сайта - PullRequest
1 голос
/ 26 октября 2010

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

Я изучаю идею использования телефона Android для SMS или робота для передачи пин-кода / токена на домашний телефон пользователя или мобильное устройство. Я смотрю на использование Android, потому что аппаратное обеспечение будет дешевым, и я смогу установить приложение, которое я сделаю без проблем.

Пользователь должен заходить в систему примерно раз в день. Приложение в настоящее время имеет 75 пользователей. Пользователю не гарантируется наличие мобильного телефона.

У меня есть несколько вопросов:
Это жизнеспособная вторая форма аутентификации?
Есть ли более дешевый способ сделать это?

Рабочий процесс выглядит следующим образом.

Пользователь заходит в веб-приложение, вводит имя пользователя, выбирает желаемый тип уведомления, SMS или речь и отправляет.

Веб-приложение (в моем случае C # .net) проверяет, существует ли пользователь, и ищет номер телефона, который у нас есть в записи.

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

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

Затем телефон уведомляет веб-приложение о том, что сообщение было отправлено или не удалось, и веб-приложение уведомляет пользователя.

Вот картинка того, о чем я думаю. alt text

Спасибо за любые отзывы. Охрана - это не моя сильная сторона.

Ответы [ 2 ]

2 голосов
/ 26 октября 2010

Вы можете сделать это для SMS, но не для записи голоса. Вы также, вероятно, не хотите ... но я вернусь к этому через мгновение.

Чтобы телефон Android работал как делегат вашего веб-сервера, вы, вероятно, захотите включить отладку по USB на телефоне, а затем использовать инструмент adb, чтобы настроить переадресацию порта так, чтобы определенный локальный порт на веб-сервере Переадресация на порт на телефоне, где у вас будет служба прослушивания. Поддержание этой службы может быть немного сложнее, поскольку android действительно разработан для интерактивных пользовательских приложений, но, вероятно, это можно сделать, особенно если вы рутируете телефон и запускаете собственный исполняемый файл со значениями OOM killer, установленными для его защиты. *

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

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

Я думаю, что было бы гораздо более уместным рассмотреть использование службы шлюза sms и, возможно, службы шлюза voip, если пользователь выбирает голосовое уведомление. Возможно, кто-то уже продает решение вашей полной проблемы.

1 голос
/ 26 октября 2010

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

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

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

Общая мантра для аутентификации: что-то, что вы знаете, что-то, что вы держите.Пароль, который вы знаете, телефон, который вы держите.

...