Аутентифицировать устройство / пользователя на основе одного запроса URL - PullRequest
1 голос
/ 10 августа 2011

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

Хорошо, наконец, вот проблема: мы интегрируемся с компанией, которая производит устройства для отправкиЗапрос URL через GPRS, когда происходит определенное событие, этот URL является ссылкой на нашу систему.

Я бы (без ущерба для безопасности) хотел бы аутентифицировать это «устройство», невозможно отправить устройству какую-либо информациютаким образом, один запрос должен быть аутентифицирован, и никто не сможет «воспроизвести» этот URL

. Я не знаю, возможно ли это без какой-либо взаимной аутентификации.Я подумал о белом списке IP-адресов для проверки, но сети постоянно меняют IP-адреса, и устройство все еще «неопознано».Пожалуйста, посоветуйте какие-нибудь идеи?

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

Ответы [ 2 ]

4 голосов
/ 10 августа 2011

Можно разрешить устройству подписывать запрос (, включая уникальный идентификатор запроса) с помощью закрытого ключа. Затем сервер может проверить, действительна ли подпись, и принять / ответить на запрос только тогда, когда он есть.

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

1 голос
/ 10 августа 2011

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

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

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

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

...