#php #web #smartcard #smartcard-reader #two-factor-authentication
#php #веб #смарт-карта #считыватель смарт-карт #двухфакторная аутентификация
Вопрос:
Прежде всего, пожалуйста, извините мое невежество в этой теме. (связанный)
Что именно необходимо для реализации такого процесса:
- Клиент посещает сайт входа (example.com/login ).
-
Для входа в систему клиент вводит свой идентификатор клиента. Кроме того, посетителю отображается случайный (?) код:
251 221 555. -
Клиент берет свой считыватель смарт-карт, вставляет в него свою смарт-карту и нажимает на кнопку «Войти», вводит код 251 221 555
- Затем клиент вводит свой PIN-код (в считывателе смарт-карт)
- Затем возвращается токен: 922 444 113
- Клиент использует возвращенный токен для входа на веб-сайт.
Я думаю, нужно:
- Смарт-карта (с PIN-кодом)
- Устройство чтения смарт-карт (см. Рисунок 1, 2)
Мне интересно, как аутентифицировать возвращенный токен на веб-сайте, а также как вернуть токен в устройство чтения смарт-карт? Каковы точные (или простейшие) шаги для реализации процесса, подобного приведенному выше?
Комментарии:
1. Рассматривали ли вы возможность использования клиентского сертификата, хранящегося на смарт-карте? Это должно быть возможно даже с защищенным устройством ввода PIN-кода и может быть намного проще в реализации (но требует подключения считывателя к компьютеру, установки некоторых драйверов / промежуточного программного обеспечения и т. Д. — Зависит от вашего варианта использования и фактических используемых компонентов). Для метода запроса-ответа неясно (для меня), хотите ли вы на самом деле использовать CAP или нет (поскольку может быть довольно сложно получить автономный / т. Е. Не подключенный к ПК / считыватель, поддерживающий какой-либо другой протокол)
Ответ №1:
Самая простая реализация — иметь секретный ключ, хранящийся на смарт-карте, и запускать шифрование или вычисление MAC по входному номеру. Чтобы это сработало, ввод PIN-кода должен быть перед вводимым номером.
Команды будут
- ПРОВЕРКА (с помощью PIN-кода)
- ВНУТРЕННЯЯ АУТЕНТИФИКАЦИЯ (с введенным номером)
- или ВЫПОЛНИТЬ ОПЕРАЦИЮ БЕЗОПАСНОСТИ в режиме Вычисления криптографической контрольной суммы.
Для получения более подробной информации вам следует подробно ознакомиться с ISO 7816, часть 4 (проверка и внутренняя аутентификация) и 7816, часть 8 (выполнение операции безопасности).). Это предполагает так называемую собственную карту (в отличие от JavaCard).
Комментарии:
1. Если я правильно понимаю, мне нужен считыватель смарт-карт (EMV) и аналогичная карта, такая как смарт-карта SLE4442. Все ли считыватели EMV, например, работают с Arduino? Какой считыватель смарт-карт вы бы порекомендовали для Arduino?
2. @Kilise: Извините, у меня нет опыта работы со считывателями смарт-карт во встроенной среде; возьмите один, где вы можете найти подходящие драйверы. SLE4442, являющийся (синхронной) картой памяти, слишком глуп, чтобы поддерживать упомянутые команды. Вам нужна карта асинхронного процессора.