Операционная система в банковской карте

Раз чиповая карта представляет собой микрокомпьютер, то неудивительно было бы обнаружить в ней и операционную систему. И знаете, что? Она там правда есть! Конечно, не Windows 10 и не Linux... Своя, операционная система, адекватная тем задачам, которые решает карта.

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

Давайте вообще вспомним, что такое операционная система и зачем она вообще нужна. Строго говоря, граница между операционной системой и прикладными программами довольно зыбкая, что на компьютере, что в смартфоне, что в пластиковой карте. Смысл операционной системы в том, чтобы предоставить универсальный и удобный механизм доступа к ресурсам устройства. Например, чтобы включить светодиодный индикатор на смартфоне, надо отправить определенную последовательность бит устройству, которое подключено к центральному процессору. Надо знать и последовательность бит (код команды) и адрес, по которому это внешнее устройство доступно процессору. В общем, надо очень много технических деталей знать. Каждый раз писать все это в каждой программе - очень трудно. Поэтому и разрабатывается операционная система, которая сама знает, какие биты и куда послать, чтобы включить светодиод. А программа, которая хочет это сделать - просто вызывает функцию операционной системы, не вдаваясь в эти детали. Это предельно упрощенное понимание, у реальных операционных систем многкратно больше всяких функций, ну да нам сойдет пока такая картинка.

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

Я чуть выше сказал, что каждый производитель пишет операционную систему так, как ему заблагорассудится. Это верно, но лишь отчасти. Есть и некоторые рамочные спецификации; например, независимо от того, какая операционная система там установлена, карта должна взаимодействовать с внешним миром (терминалом, банкоматом) по определенному протоколу. Кроме того, чтобы взаимодействовать, например, с международной платежной системой, на карте должно быть установлено приложение, которое соответствует спецификации этой платежной системы. А это приложение еще кто-то должен написать и сертифицировать в платежной системе.

Поэтому, хоть операционные системы и разные, но они имеют множество общих черт, поскольку решают похожие задачи.

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

По большому счету, широко распространены только две такие системы: MULTOS и JavaCard OS. А еще есть некоммерческая спецификация Global Platform, которую развивают участники рынка (платежные системы, производители чипов, терминалов и т.п.). Реально полностью этой спецификации соответсвует только JavaCard, но все остальные операционные системы (даже не многоприкладные) развиваются с оглядкой на эту спецификацию и в той или иной мере частично ей соответствуют.

Приложения для MultOS пишутся на трех языках - Си, Java и свой специальный язык (уже заточенный, а потому более эффективный) MULTOS Executable Language (MEL).

Для JavaCard, как не трудно догадаться, все приложения пишутся на Java.

Обычно JavaCard-карты содержат наибольшее количество ресурсов (мощнее процессор, больше памяти и т.п.), и потому самые дорогие среди прочих. Это та самая причина, почему существуют другие операционные системы и более дешевые чипы. Но надо понимать, что использование Java имеет и свои преимущества. Кстати, SIM-карта в вашем телефоне с очень высокой вероятностью является JavaCard.

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

Чтобы установить новое приложение на чип, надо иметь специальный секретный ключ. Этот ключ есть у того, кто выпустил карту (у вашего банка или сотового оператора). Без этого ключа ничего не выйдет. Вообще, карта - очень защищенная штука, нет ни одного мгновения в ее жизни, когда она не была бы защищена хоть каким-то секретным ключом. Поэтому можете не волноваться: ничего лишнего на вашей карте оказаться не может.

Рынок приложений для смарт-карт довольно узкий, в силу того, что нет широкого спроса на разнообразые программы :) Потому производители карточных приложений в прессе не гремят. Более того, даже крупные компании, разрабатывающие системы для банковских процессингов, обычно сами не пишут приложения для карт, а берут уже готовые.

Подписывайтесь на канал "Технологии Денег" в Яндекс.Дзен и в Телеграм! У меня еще много интересного материала!