Пользователь
3,2
рейтинг
2 ноября 2009 в 17:11

Разработка → Как устроена смарт-карта

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


Смарт карту с USB контроллером, или USB-ключ можно представить в виде схемы (по большому счёту USB-ключ отличается от смарт-карты лишь наличием/отсутствием контроллера шины USB):

image

Как видно из рисунка в смарт-карте присутствуют 3 раздела памяти:
  • Системная память – содержит файловую систему и операционную систему. В ней хранятся данные необходимые для проверки правильности вводимых PIN-кодов и паролей администратора.
  • Открытая память – содержит данные, которые возможно прочитать без PIN-кода. Имя смарт-карты, идентификатор смарт-карты и другие.
  • Закрытая память – содержит данные доступ к которым возможет только по PIN-коду.

Соответственно процессор работает с этими тремя областями памяти, существует возможность чтения и записи во все вышеописанные области памяти.

Для работы с процессором на низком уровне используются APDU (Application Protocol Data Unit) команды. С использованием APDU команд возможно даже получить доступ к файловой системе смарт-карты, хотя это делать категорически не рекомендуется.

Самым интересным компонентом является чип смарт карты, который обеспечивает:
  • Хранение информации во внутреннем хранилище чипа смарт-карты. Причём, необходимо отметить, что информацию из этого хранилища извлечь невозможно. Чип смарт-карты не содержит команда по извлечению данных из хранилища. В этом хранилище находятся закрытые ключи цифровых сертификатов (несколько неграмотная фраза, но суть надесь понятна).
  • Генерацию ключевой пары. В чипе смарт-карты содержится датчик случайных чисел (не знаю, почему в отечественной литературе это называется датчиком, я со школы привык называть генератором случайных чисел). После генерации ключевой пары закрытый ключ попадает в хранилище чипа смарт карты и никогда не выходит за пределы чипа смарт карты, открытый ключ передаётся процессору, который генерирует запрос на сертификат и посылает его за пределы смарт-карты (в центр выдачи цифровых сертификатов).
  • Аппаратную реализацию симметричных алгоритмов шифрования. Однако в силу ограниченности ресурсов, симметричное шифрование в чипе смарт карты процесс очень долгий. В связи с этим не рекомендуется производить симметричное шифрование больших объёмов информации средствами чипа смарт-карты.
  • Аппаратную реализацию алгоритмов хэширования.
  • Аппаратную реализацию ассиметричных алгоритмов.

Возможности чипов смарт карт отличаются в зависимости от производителей, но эти различия незначительны. Различия связаны с алгоритмами аппаратной реализацией алгоритмов шифрования и хэширования, различные производители реализовывают различные алгоритмы. Но такие алгоритмы как RSA (асимметричное шифрование), DES (симметричное шифрование) и SHA-1(хэширование), думаю реализованы практически во всех чипах смарт карты.

Так как основное предназначение смарт-карты это работы с цифровыми сертификатами, то эту работу можно представить следующим образом:
  1. Процессор получает из внешней среды команду генерации ключевой пары.
  2. Процессор транслирует эту команду в чип смарт-карты.
  3. В чипе смарт карты датчик случайных чисел генерирует ключевую пару, закрытый ключ которой помещается в хранилище чипа смарт-карты, а открытый ключ передаётся процессору.
  4. Процессор генерирует запрос на сертификат(в формате PKCS#10), в котором содержится открытый ключ сгенерированной ключевой пары.
  5. Процессор передаёт сгенерированный запрос во внешнюю среду. Данный запрос попадает в центр выдачи сертификатов и на основании этого запроса выдаёт сертификат, который возвращается в смарт-карту.
  6. Получив сертификат процессор записывает его в закрытую область памяти.


P.S. Данный топик был написан на основе материалов компании Aladdin. Если у кого-то есть техническое описание аппаратной составляющей ключей других производителей, поделитесь, пожалуйста, буду очень признателен.
Роман Совалов @rlepricon
карма
43,0
рейтинг 3,2
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (59)

  • +1
    А если не секрет, с RSA ключами какой размерности умеют работать алладиновские «свистки»?
    • +4
      Это большой секрет, доступный на официальном сайте.

      В eToken PRO и NG-OTP аппаратно реализованы алгоритмы RSA с длинами ключа 1024 бит и 2048* бит, DSA, DES (ECB, CBC), 3DES (CBC), SHA-1, MAC, iMAC, MAC3, iMAC3, HMAC SHA-1(**).

      (*) аппаратная поддержка ключей RSA длиной 2048 бит реализована
      только для модели eToken PRO/64К
      (**) только в eToken NG-OTP. Этот алгоритм используется при
      вычислении значения одноразового пароля.
      • 0
        гм… не видел)
        Спасибо за информацию.
        В принципе 1024 — это пока недостижимый уровень для криптоанализа, так что для большинства применений вполне достаточно.
        • –1
          Это вы на основании чего решили?
          • 0
            Читал какой-то отчёт, в котором была оговорка, что математики от криптографии обещают предоставить теоретические обоснования «взлома» RSA ключа на 1024 бита не ранее 2010 года, но на практике по всей видимости реализация затянется не менее чем до 2013г. Источника не дам, читал пол года назад.
            • 0
              Таким образом выводим, что тратить деньги на инфраструктуру с длиной ключа 1024 глупо — через 4-е года будете в срочном порядке все менять.
              • +3
                Да, конечно станем менять. Ведь все суперкомпьютеры мира сразу бросятся взламывать именно мой ключ!!! :-)
              • +3
                Дело в том что инфраструктуру в любом случае стоит обновлять каждые 2 года так, что вполне разумно закупить «свистки» на 1кбит, поднять инфраструктуру, воспитать юзерленд, а потом уже через пару лет планомерно перейти на те-же 4кбит. Опять-же железо подешевеет.

                И то что будет теоретическая база, ещё не значит что будет разумное решение. Методика взлома MD5 по радужным таблицам существует давно, объём таблиц для чистого MD5 весит около 500Гб, но для «подсоленного» MD5 они уже измеряются сотнями терабайт. Теоретическая база есть, реализация есть, а что толку? Какой стоимости система получается? Во сколько обойдётся расшифровка одного хэша? Я более чем уверен что работающие системы есть у компетентных органов, но они не будут размениваться на подбор паролей к форумам.

                А теперь представьте какой сложности будет система подбора RSA 1024бит, сколько лет и денег уйдёт на её постройку, и какого уровня «клиентов» она будет обслуживать. Вы уверены что по вам звонит колокол? Думаю что если интересует маленькая партия недорогих ключей, то врядле. Так что не стоит заморачиваться, 1024 — оптимальный выбор.
            • 0
              Соответственно это означает, что 1024 ни в коем случае нельзя использовать сейчас. В делах безопасности надо быть немножко параноиком. Завтра запустят ботнет на квантовых компьютерах и поломают 1024 уже не теоретически, а до 2048 всё-равно запас останется. Поэтому стоит использовать 4096 минимум :)
              • +1
                Дело в том, что не всегда реализация алгоритма с большей длиной ключа гарантирует большую криптоустойчивость алгоритма. А иногда — даже меньшую.
  • –2
    пользуюсь смарт-картой для 1С, эта штука постоянно глючит.
    • 0
      пользуетесь смарт-картой или ключом HASP?
  • +10
    А насчёт, почему у нас принято говорить «датчик», так это потому что есть такое устройство «датчик случайных чисел» — оно бывает реализовано по разному, но это либо антенна, слушающая белый шум, либо счётчик гейгера вблизи распадающегося радиоматериала. Но в любом случае это аппаратное решение. А то что привыкли мы использовать — это всего-лишь «генераторы псевдослучайных последовательностей», основанные на «голой» математике.
    • 0
      Спасибо. Да, с такой точки зрения, терминология становиться понятной :-)
  • 0
    Может кто подскажет компанию, производящую смарткарты (интересует вариант в виде usb-токена) и при этом работающая с партиями меньшими, чем «один вагон 60 тонн»?

    Аладдин в своё время посылал меня нафиг, другие производители тоже что-то не спешат выкладывать цены на свою продукцию («contact us, we предложим вам самые заебца тарифы»), а мне хочется просто добавить 3-5 токенов в корзину, ввести адрес и оплатить пейпалом.
    • +1
      Посмотрите сюда, тут вроде как от 1шт можно брать: http://www.guardant.ru/
      • 0
        В списке поддерживаемых opensc (http://www.opensc-project.org/opensc/), на сайте я вижу только решения для защиты программ, а не для аутентификации (или их можно и так использовать?). Мне, собсно, нужна интеграция с почтой, браузером, ssh, vpn. Защищать программы не надо :)
        • 0
          Там есть заказные конфигурации с реализацией любого заданного заказчиком набора алгоритмов, думаю нужно тут копать.
          • 0
            «Заказное», «штучное» и «дёшево» несовместимо, к сожалению…
      • 0
        Прошёлся по их продукции, ни слова о популярных алгоритмах, только самодельные. Так что мимо.
      • 0
        скорее rutoken.ru. Гардант — это аналог ХАСПа, а не токенов.
        • 0
          Ага, вроде как оно. И не дорого совсем. Буду изучать.
    • 0
      Не знаю как раньше, но сейчас аладдин может продать и один ключик, но за безнал. Если за нал, то думаю можно обратиться к партнёрам.
      • –1
        Ну их лесом, что их, что партнёров. Лучший токен — usb-флешка на ключах.
        • 0
          и чем же он лучший? тем что ключ без проблем можно украсть за секунду? :)
          • 0
            Смарт-карту тоже можно украсть, а pin-код подобрать терморектальным криптоанализом.
            Вопрос в удобстве и совместимости. На флешке я могу сам выбрать алгоритмы, длины ключей и т.п., а в случае смарт-карты я завишу от доброй воли поставщика. Более того, нет уверенности в надёжности работы смарт-карты и её невзламываемости (внизу вон говорят, что где-то есть возможность секретный ключ извлечь, где-то он сам по себе извлекался для ускорения работы). В случае с флешкой я могу использовать софт, который находится под присмотром тысяч независимых специалистов (открытые протоколы, как-никак). Это всё нивелирует разницу (по крайней мере, для меня) между аппаратной смарт-картой и програмной реализацией с небезопасным хранилищем.
            • 0
              ключ с флешки любым трояном можно утянуть, причем Вы даже не будете знать что у кого-то копия уже есть. и никаких пинов не нужно.
              • 0
                Закрытый ключ обычно всегда закрывается паролем. А если защищаться от троянов смарт-картами, то это в консерватории что-то не то.
                • 0
                  в смарт-картах ключи закрыты не паролем, а физически.
                  а пароли с флешки как раз можно подбирать и т.д.
                  • 0
                    Да, я в курсе, спасибо.
                    С остальными доводами вы согласны? :)
                  • +1
                    Вопрос выбора технологии для решения поставленных задач — это вопрос религии. И каждый выбирает ту технологию которую считает правильной. Я вообще считаю, что выбирать решение надо исходя из условий задачи и ограничений по срокам и стоимости.
                    Есть решения в которых более удобно использовать смарт-карты. Есть решения, в которых удобнее использовать флешки и программным шифрованием.
    • 0
      Я покупал у аладина 2 токена лет 6 назад без пробле и сейчас вот покупали 2-3 пару раз.
      • 0
        Меня напрягает сам подход — вы к нам позвоните-напишите-заполнитеформу, а мы уже будем думать, что с вами делать…

        • 0
          Лично я сам не покупал уже давно, но вроде видел что аладинами торгует не только сам аладин, поэтому проблем не должно быть. Поправьте если не прав.
          • 0
            У меня очень гнусные впечатления от общения с реселлерами разных мастей. Мне б официальный сайт с официальным магазином, цеником и доставкой по миру. В комментах посоветовали рутокен, видимо, ими и займусь.
            • 0
              Рутокен не работал с файрфоксом последний раз когда я его пробовал, возможно, чтото изменилось с того времени.
              • 0
                Я буду токен юзать через opensc, так что мне пофиг, любит он фаерфокс или нет :)
            • 0
              Имхо вот и ответ на ваш вопрос — 99% контор триста лет не нужно делать «официальный магазин, ценик и доставку по миру». Для этого розница есть, монстрам этим заниматься лень…
              • 0
                Тем, кому лень, дают ссылки на своём сайте на инет-магазины, где можно купить их железяки. Если я не вижу ссылки «где купить», это означает, что продавать они ничего не хотят.
                • 0
                  тю. Ну где вы на сайте microsoft, cisco или ibm видели ссылки на инет-магазины?
                  • 0
                    Их продукция и так есть в любом инет-магазине.
                    • 0
                      Да, но ссылок нет не по этому. Ладно, фиг с ним, с софтом, хотя его и продавать проще.
                      Возьмем к примеру Moxa www.moxa.com/. Мейнстримом их продукцию назвать трудно, но что уних есть? Только www.moxa.com/where_to_buy/where_to_buy.aspx — Search for Moxa distributors — никаких интернет магазинов. Ладно, идем на местный, украинский сайт. Что видим — www.moxa.com.ua/2008/menu/Vector-sales.html — телефон наш друг, тем более интернет магазинами и не пахнет.
                      Вывод — головной компании не нужен «головняк» с интернет магазинами, местным же дистрибьюторам тоже лень связываться с розницей (инерция мышления или еще какая хрень...)
                      • 0
                        Ну вот поэтому их продукция и не используется широко. А могли бы создать новую нишу на рынке. Бред, в общем.
                        • 0
                          У них и так есть своя ниша на рынке, в которой они чувствуют себя очень неплохо. Просто это промышленное оборудование, и им не интересно работать с «просто Васей с улицы». И такая ситуация _доминирует_ на рынке — это скорее правило. А вот наличие интернет магазина — скорее исключение.
                          И раз так — то этому есть причины.
                          • 0
                            Это обычная ошибка больших и толстых контор, они считают, что их уникальность и исключительность позволит им вечно сидеть и ничего не делать :)
                            Ничего, придут китайские братья со смарт-картами за 5 долларов, поддерживающими все мыслимые протоколы и алгоритмы и теперешние «заниматели рынка» тупо вылетят.
                            • 0
                              Согласен, вполне возможно. Я из за этого сильно переживать не буду. :)
    • 0
      Вам наверное ШИПКА подойдёт.
    • 0
      Посмотрите сюда:
      english.cyprotect.com/main0154.php
      Сам пока там ничего не покупал, но из всего найденного этот магазин (как и сама карта) понравился больше всего.
  • 0
    Блок-схема впечатлила…
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Тссс, не говорите об этом Аладдину, они это отрицают :)
    • 0
      Это интересно, постараюсь найти информацию на эту тему :-) буду благодарен, если сразу отошлёте по ссылочкам :-)
  • 0
    А вот прокомментируйте, пожалуйста, заявление одного уважаемого мной технаря, о том, что все российские смарт-карты на самом деле не выполняют криптопреобразование как положено на встроенном криптопроцессоре (не выпуская закрытый ключ никогда из карты), а делают всё по-простому: запросто отдают закрытый ключ своему драйверу, который собственно производит все вычисления/подписания/и т.п. на процессоре самого компьютера, что конечно отвратно.

    Я даже не знаю верить этому или нет, т.к. был о смарт-картах и токенах вне зависимости от производства очень высокого мнения.
    • 0
      Не готов спорить с этим заявлением, так как не знаю аргументов приводимых в поддержку высказанного мнения. По доступной мне документации и по информации от коллег, могу сказать, что ключи для симметричных алгоритмов шифрования действительно извлекаются из закрытой области памяти (не из хранилища чипа смарт-карты). Закрытый ключ невозможно физически извлечь из хранилища чипа смарт-карты, так как сам чип смарт-карты не предоставляет команды по извлечению закрытого ключа из чипа. Можно попробовать найти список команд чипа смарт-карты и проверить это утверждение. В аладдиновских ключах, например, используется чип Infineon SLE66CX320P для 32k ключей. Точнее сказать использовался, так как с переходом на платформу Java, чип смарт-карты сменился.
    • +1
      Так делают «Простые» Рутокены из известных мне карт. Современные Етокены и Рутокен ЭЦП так уже себя не ведут.
  • +1
    не знаю, почему в отечественной литературе это называется датчиком

    Потому, что качественный генератор случайных чисел получает поток данных от внешнего датчика.

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