Задать вопрос

Безопасность смарт-карт

Здравствуйте!
Постановка проблемы:
Есть смарт-карта, которая умеет подписывать документы электронной подписью. Для подписи нужно вставить карту в кард-ридер и ввести ПИН-код.
Вопросы:
1. Как можно быть уверенным, что ПИН-код не будет перехвачен каким-либо вредоносным ПО и это ПО не сможет потом подписывать документы без ведома пользователя? Есть какие-либо варианты, кроме использования внешней клавиатуры кард-ридера?
2. Как можно быть уверенным, что вредоносное ПО не заменило подписываемый документ на другой?

Подобные системы же используются много где (в Эстонии например, на государственном уровне), как разработчики обходят данные проблемы?
  • Вопрос задан
  • 3541 просмотр
Подписаться 3 Оценить Комментировать
Решения вопроса 1
kostik450
@kostik450
>как разработчики обходят данные проблемы

Нужно иметь на девайсе отдельный экран и отдельную кнопку. На экране отображаются основные поля платежного документа и если пользователь согласен — нажимает на кнопку, тем самым давая команду на создание ЭЦП.

Если это смарткарта, без экрана и без кнопки — то защиты никакой. Пин-код это всего лишь защита если смарт-карта будет потеряна.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
Maximus43
@Maximus43
1. Никак. Обращение к смарт-карте идет через API, который предоставляет драйвер. Если вредоносное ПО перехватило PIN, то оно с таким же успехом может производить операции со смарт-картой через API. Все можно реализовать в фоне.
2. Никак. Смарт-карта не знает, правильный документ или нет. Ей передают хеш документа, она шифрует его своим закрытым ключом и отдает результат обратно. Если передать хеш левого документа, то смарт-карта его без дополнительных вопросов зашифрует.
Вывод: плюс смарт-карты только в том, что из нее нельзя извлечь закрытый ключ (если все правильно настроено) и в том, что когда ее нет в ридере, то подписать ничего не возможно физически. А если рабочая среда скомпрометирована и у вредоносной программы есть PIN и доступ к API, то тут уж как говорится: «Против лома нет приема».
Все сказанное касается обычных смарт-карт, для Java карт можно добавить аплет с хитрой логикой, тогда просто API может быть недостаточно для подписания. Это вариант защиты, но требует дополнительных действий со стороны разработчиков и со стороны клиентского ПО.
Ответ написан
Комментировать
VicTun
@VicTun
Ответ написан
Комментировать
@vkar Автор вопроса
А как же всякие удостоверяющие центры, трехузловые аутентификации (или как они там называются) и все такое?
Наверняка же должен быть способ.
Например, можно обязать смарт-карту подписывать только те документы, которые отправлены сервером. Для этого документ до подписывания смарт-картой должен быть подписан сервером (удостоверяющим центром)
Ответ написан
@kukumumu
Для решения таких проблем Крипто-Про разработала технологию «функционального ключевого носителя» . Там есть взаимная аутентификация аппаратной и программной частей криптопровайдера.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы