Pull to refresh

Краткое введение в SIM-карты

Computer hardware
Когда на вопрос «кем вы работаете?» я отвечал «разработчиком ПО для SIM-карт», даже технически подкованные люди частенько удивлялись. Многие думают, что SIM-карта это «что-то типа флешки».

В этой статье я постараюсь кратко рассказать что такое SIM-карта (и смарт-карты в общем), зачем она нужна и что у нее внутри.

На самом деле SIM-карта — это частный случай контактной смарт-карты с микропроцессором. По сути, представляет из себя достаточно защищенный микрокомпьютер с CPU, ROM (опционально), RAM и NVRAM (которая выступает в качестве аналога жесткого диска в PC), с аппаратными генераторами случайных чисел и аппаратной реализацией крипто-алгоритмов.

В некотором приближении архитектуру микропроцессорной смарт-карты можно представить так:
Архитектура смарт-карты

Читать дальше →
Total votes 474: ↑470 and ↓4 +466
Views 210K
Comments 180

Поддержка электронных USB ключей в Thinstation

System administration *
Озадачился вопросом использования двухфакторной аутентификации для терминального доступа на тонких клиентах на базе Thinstation и немного удивился. Оказывается, что на текущий момент ни одна сборка или конструктор Thinstation не поддерживает электронные USB ключи, такие как eToken, RuToken, iKey. Несмотря на то, что дистрибутив Thinstation настолько популярен, что его используют вместо стандартного ПО на тонких клиентах HP, да и средства аутентификации eToken получили больше распространения на постсоветском пространстве, чем решения от других компаний, но факт остается фактом — в Thinstation нет поддержки электронных USB ключей.
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Views 9.5K
Comments 3

Чип против магнита

СМП Банк corporate blog
Привет, хабрамир!
Банковской картой уже давно никого не удивишь – она перестала быть показателем «крутизны» и теперь есть почти у каждого. Но мало кто знает, что в своём развитии она прошла долгий путь. Появившись в 1914 году в виде самописных картонок от компании «Mobil Oil» и пройдя дебри эволюции через металлические пластинки с выдавленными буквами и символами, современные пластиковые карты стали незаменимым атрибутом повседневной жизни для большинства из нас.
Читать дальше →
Total votes 7: ↑5 and ↓2 +3
Views 16K
Comments 11

Смарт-карты для самых маленьких

API *Development of communication systems *
Sandbox
Поскольку статья вводная и обзорная, то рассматриваться будет простейшая разновидность смарт-карт — SIM-карты, полагаю, что таких карт на планете сейчас больше всего.
По сегодняшним меркам стандарт SIM выглядит архаично, но зато он идеален для первого знакомства с миром смарт-карт, усвоение принципов, которые заложены в основу этого стандарта, облегчит дальнейшее погружение в тему.
Если Вы «карточник», то вряд ли узнаете для себя что-то новое, разве что какие-нибудь не очень понятные моменты разложатся по полочкам, а может быть Вы разложете по полочкам то, что недопонял автор (но, напоминаю, держимся в рамках SIM!).

Читать дальше →
Total votes 51: ↑45 and ↓6 +39
Views 52K
Comments 19

Смарт-карты. Часть 2. APDU

Cellular communication
Привет, Гиктаймс!

После общей информации, описанной в первой части, сегодня поговорим об APDU в формате, описанном в стандарте ISO7816-4.

APDU (application protocol data unit) — это формат общения карты и терминала. Терминал посылает Command APDU (C-APDU), а карта отвечает с Response APDU (R-APDU).

C-APDU


Формат C-APDU таков:
Header Body
CLA INS P1 P2 [Lc field] [Data field] [Le field]

Каждый элемент заголовка (header) сохранен на одном байте и является обязательным. К заголовку вернемся чуть позже, сейчас поговорим о body команды.

Элементы body следующие:

  • Lc: длина элемента Data в байтах.
  • Data: данные команды.
  • Le: ожидаемая длина данных ответа в байтах, исключая длину Status Word.


Lc и Le, если присутствуют, могут занимать 1 (Short Length) или 3 байта (Extended Length) каждый. При Short Length кодируются значения от 1 до 256. Длина данных на 256 байтов записывается как «00». При Extended Length кодируются значения от 1 до 65536. Первый байт всегда «00» и остальные 2 байта — номер в формате Big Endian. Когда Lc или Le — «00 00 00», то длина данных — 65536 байтов.

В зависимости от присутствия или отсутствия элементы body команды можно разделить на 4 категории:

  • Case 1: Body полностью отсутсвует, то есть команда не содержит в себе никаких данных и не ожидается получение каких либо данных от карты при ответе.
  • Case 2: В body присутствует только Le, то есть команда не содержит в себе никаких данных, но при этом ожидается получение данных от карты.
  • Case 3: В body присутствуют Lc и Data, то есть команда содержит в себе данные, но при этом не ожидается получение данных от карты.
  • Case 4: В body присутствуют все элементы, а значит команда содержит в себе данные и ожидается получение данных от карты.

Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Views 45K
Comments 0

Смарт-карты. Часть 3. TLV

Cellular communication
Привет, Гиктаймс!

В прошлой части мы видели как происходит общение между терминалом и картой. Мы посмотрели форматы C-APDU и R-APDU, но мы не обращали внимания на то, какие данные содержат эти APDU. В этой части мы рассмотрим самые распространенные форматы, в которых передается информация между терминалом и картой (и наоборот). Все они относятся к одному семейству — TLV.

TLV означает Tag, Length, Value и используется для того, чтобы структурировать информацию. На очень абстрактном уровне, TLV можно рассматривать как бинарную версию XML. Однако что такое Tag, Length, Value?

  • Tag: он говорит, какой вид информации находится в TLV. Видом может быть, к примеру, простая строка или номер, идентификатор или даже сложная структура. В некоторых вариантах Tag также содержит мета-информацию о TLV.
  • Length: длина, в байтах, элемента Value.
  • Value: данные, содержащиеся в TLV

Каждый вариант TLV имеет свои правила кодирования каждого элемента. Далее мы посмотрим самые распространенные варианты TLV. Хочу сразу отметить, что данная статья будет, в основном, посвящена BER-TLV, поскольку это самый распространенный, гибкий и сложный формат. Остальные варианты TLV будут рассмотрены лишь вкратце.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views 27K
Comments 5

Смарт-карты. Часть 4. JavaCard

Cellular communication
Привет, Гиктаймс!

Сегодня я бы хотел поговорить о JavaCard. Данная статья будет посвящена понятию JavaCard и обзору ее архитектуры. Если есть интерес к этой теме, то я бы мог написать отдельную серию статей, в которых будут подробно освящаться все аспекты JavaCard. Сразу скажу, что я не собираюсь учить вас, как написать свое первое приложение в JavaCard, т.к. по этому поводу уже существует слишком много статей в Интернете. Мы поговорим сегодня преимущественно о принципах работы JavaCard.

Итак, смарт-карта на основе JavaCard — это карта, на которой приложения исполняются на JavaCard Virtual Machine (ограниченная версия Java Virtual Machine, адаптированная для смарт-карт) в так называемом JavaCard Runtime Environment (который с Java Runtime Environment имеет очень мало общего).

Что касается терминологии, то приложения называются Applets и содержатся в Packages (пакетах). Пакеты распространяются в CAP-files (вместо Jar-files). Пакеты и приложения имеют собственный AID (Application Identifier). Это необходимо для того, чтобы их можно было однозначно идентифицировать в таких командах, как: SELECT, INSTALL, DELETE, и т.д. (SELECT описывается в ISO7816-4, а JavaCard и остальные команды — в Global Platform).

Жизненный цикл Applets несколько отличается от привычного жизненного цикла приложений для компьютеров. Applet — это любой класс, наследующий от базового класса «Applet». При установке приложений вызывается его статический метод install. Этот метод должен создать объект соответствующего класса и вызвать на него метод register. Впоследствии объект будет сохранен в системе и получит собственный AID, который будет использован для дальнейшего общения с приложением. Объект и его поля данных сохраняются в NVM (Non-Volatile Memory). Каждый объект или массив, созданный приложением с помощью оператора «new», также будет находиться в NVM. Это означает, что, в отличие от традиционных компьютерных программ, состояние приложений JavaCard является постоянным и не теряется даже при выключении карты.
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Views 12K
Comments 8

Обзор ноутбука Dell Latitude 7390: корпоративный супергерой

Dell Technologies corporate blog Computer hardware Laptops
Привет, друзья! Совсем недавно мы провели мероприятие, посвященное запуску новых ноутбуков Dell Latitude в России, и сразу же после него одна из «топовых» машин серии оказалась в нашем московском офисе. Мы ее пристально изучили и теперь хотим поделиться с вами подробными впечатлениями от использования. Знакомьтесь: это Latitude 7390, компактный 13-дюймовый лэптоп с процессором Intel Core 8-го поколения, быстрым NVMe SSD, опциональным LTE-модемом, считывателем смарт-карт и хорошей автономностью.


Читать дальше →
Total votes 12: ↑9 and ↓3 +6
Views 39K
Comments 121

SmartCard I2C Protocol. Обмен APDU командами через I2C интерфейс

Information Security *Cryptography *Programming *Development for IOT *Manufacture and development of electronics *

Введение


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

К сожалению, тогда подобное решение не подошло по некоторым причинам, хотя если бы удалось использовать уже готовую российскую аппаратную криптографию, то это должно было значительно ускорить разработку и последующую сертификацию конечного изделия. А причины невозможности использования USB токенов или смарткарты были весьма банальны: устройство должно было быть довольно компактным (небольшой модуль для M2M или IoT устройств), эксплуатироваться преимущественно в необслуживаемом режиме и работать в широком температурном диапазоне.

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


Читать дальше →
Total votes 18: ↑17 and ↓1 +16
Views 5.1K
Comments 5

Протоколы защищенного обмена сообщениями и новинка от GlobalPlatform

Information Security *IT Standards *

Известная международная организация GlobalPlatform, занимающаяся стандартизацией в области смарт-карт, в июле 2022 года опубликовала документ со статусом Public Review, где предложила новый вариант протокола защищенного обмена сообщениями (ЗОС): SCP04.

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

Статья посвящена анализу главных особенностей протоколов ЗОС из документов GlobalPlatform, включая новый SCP04.

Читать далее
Rating 0
Views 283
Comments 0