Коротке впровадження SIM-карт

Коли я відповідав, що ви працюєте? - як розробник програмного забезпечення SIM-карти, навіть tech-savvy людей часто дивилися. Багато людей думають, що SIM-карта є «зрозумінь як флеш-накопичувач. й

У цій статті я спробую коротко пояснити, що SIM-карта (і смарт-карта в цілому), чому вона потрібна і що вона має всередині.

За фактом SIM-карти є спеціальний випадок смарт-карти з мікропроцесором. Насправді це досить захищений мікрокомп'ютер з процесором, ROM (опціонально), оперативною пам'яттю та NVRAM (який виступає як аналог жорсткого диска в ПК), з апаратними генераторами випадкових чисел та апаратним впровадженням крипто алгоритмів.

У деяких апроксимаціях архітектура мікропроцесорної смарт-карти може бути представлена наступним чином:


Трохи про виробництво.
Для того, щоб зрозуміти наступний матеріал, мені зрозуміло, щоб пояснити основні процеси у виробництві карт.

1,1 км Виробництво чіпа
Виконавці: Виробник чіпсів (силікон постачальник).
Остаточний продукт: Тарілка з чіпсами (вага).
Чіпси виготовляються кількома компаніями, найбільш поширеними є Samsung, ST Мікроелектроніки, Infinion, SST тощо.



Задня частина модуля. Білий прямокутник в центрі - SIM-схема.

2,2 км Збірка модулів
Виконавці: виробник смарт-карти (постачальник картки) або стороннього модуля.
Остаточний продукт: стрічка з модулями (chip + контактна платформа).
На даному етапі пластина ріжеться на чіпси (часто пластини ріжуться виробником чіпів), чіпси кріпляться на контактні платформи, після чого зламуються контакти, а чіп заповнюється клеєм (див. попередній фото заднього боку модуля). Ця структура називається модулем.

3. У Виробництво карти
Виконавці: постачальник карток.
Остаточний продукт: SIM-карта.
Модулі знімаються з стрічок, прикріплених до пластикової основи картки, потім навантажуються файлова система, додатки, після чого картка персоналізована - завантаження даних, унікальних для кожної картки (диферентних ідентифікаторів, ключів і т.д.) і нанесення їх на картку (наприклад, коди ICCID і PIN у випадку SIM-карт).

За типом пам'яті, що використовується останнім часом, SIM-карти діляться на 2 групи: картки, які використовують ROM і EEPROM, і картки, які використовують флеш-пам'ять.
У першому типі карток, операційна система (OS) і постійно використовуються і незмінні програми розміщені в ROM виробником чіп (перший етап виробництва). Цикл виробництва в цьому випадку дуже довгий і інтервал між випуском ОС і відвантаженням перших чіпсів займає 2-3 місяці. EEPROM використовується виробником картки для завантаження файлової системи (FS) та додатків.
У разі флеш-карти ОС, ПК і додатків зберігаються на флеш-пам'яті. Використання Flash дозволяє завантажувати ОС під час складання модуля або виготовлення карт (стежки 2 і 3). На даний момент карти з використанням флеш-пам'яті практично замінені ROM від SIM-карткового ринку. Флеш-плаття дешевше і легко вносити зміни в ОС. Крім того, для того, щоб планувати замовлення чіпсів, так як не потрібно замовляти чіпси з певними версіями ОС, але просто замовляти чіпси з різними розмірами пам'яті, а бажана ОС навантажується для конкретного замовника - оператора. Так як прогнози купівлі чіпів, як правило, тільки зроблені один раз на рік, це значно полегшує планування.

Java на карті Так, я не неправильно. Згідно з програмним забезпеченням «застоювання» смарт-карти діляться на 2 великі групи - рідні і javacard.

Нативні карти для рідних карток писуються в C. Застосування (за потреби виробника) зазвичай тісно інтегровані з ОС і завантажені одночасно з ОС на карту. Не можна встановлювати будь-які додатки, розроблені іншою компанією на рідній карті. Додатковий функціонал, необхідний оператором, часто доводиться додавати в код ОС. Розмір самої ОС через використання C і простоту ОС досить невелика (для SIM-карт близько 10-20KB). Таким чином, на картці використовуються рідні картки, де оператор нічого не хоче, крім простого меню.

У віці Java, Sun Microsystems написав специфікації javacard. Ідея javacard стала можливість встановити додатки (додатки) на картки з різних виробників (і на різних чіпах). У 1996 році Смарт-карта компанії Shlumberger Corporation (лат. перейменована в Axalto, тепер Gemalto) представила першу javacard. Ідея досить проста. На додаток до ОС, карта містить віртуальну машину Java. Розроблена програма скомпільована в байт і завантажується на карту. Застосунки в цьому випадку завантажуються після завантаження ОС (при виготовленні картки), а також якщо в картці міститься віддалений Applet Manager, завантажувач Applet може бути встановлений після виходу картки через CMC.
EnglishDeutschPусский简体中文中國傳統EspañolالعربيةFrançaisελληνικάDanskАнглійскаябългарски Це набагато менше, ніж J2ME. З примітивів, тільки boolean, байт, короткий і необов'язково підтримуваний int залишився (але практично не використовується для забезпечення сумісності, так як він не підтримується усіма виробниками). Не існує звичних класів String (в цілому, тільки Об'єкт, різкий і кілька Виняток, що мігруються з java.lang), не багатопрочитаних, без сміття. Недоліки javacard, на мій погляд, є швидкістю роботи і великим вимогам пам'яті (як оперативної пам'яті, так і EEPROM / Flash). Java-карти є більш дорогими за рахунок використання більш дорогих чіпсів і більш складної структури програмного забезпечення.

У попередньому тексті часто згадувалися заявки, але людина незнайома з смарт-картами часто не розуміє, які програми можна на карті.

По-перше, основний функціонал картки можна зробити в окремому додатку. Наприклад, є SIM яблуко, написаний в java, що реалізує всі функціональні можливості SIM. У мережі CDMA використовуються картки R-UIM. Програма Visa або Mastercard, яка перетворює смарт-карту в банківську картку. По суті, при використанні java, ви можете залишити управління пам'яттю, I / O і Java машини в ОС. У той же час, якщо виробник повинен виробляти SIM-карти - SIM-карта завантажується, якщо потрібно зробити Visa - завантажується Visa.

По-друге, існує клас додатків на картах - мікробів. Ці інтерпретатори для побудови SIM меню. Це не java bytecode, але байт, зрозумілий для встановленого браузера. Меню в цьому випадку найчастіше розроблене в xml-подібній мові розмітки, перетвореній в байт-код і завантажений в браузер. На даний момент найбільш широко використовуються браузери S@T від Simalliance і WIB від Smarttrust. Обидві організації не розробляють веб-переглядачі, вони писають технічні характеристики та засвідчують браузери, написані на ці специфікації.

Третя, вона може бути SIM-меню, розробленим в java (без використання браузерів), або просто фоновому яблукі. Наприклад, він може бути яблуком, який контролює який телефон ви використовуєте. Якщо ви вставляєте картку в новий телефон, SIM відправляє IMEI нового телефону до перевізника, який в свою чергу надсилає вам налаштування wap/gprs для вашої моделі.

SIM-карти мають файлову систему, як і настільні комп'ютери. Є 2 типи файлів – DF (Dedicated file) та EF (Elementary file – аналог звичайного файлу). Корінь DF файл називається MF (Master File).

Система SIM-файлів зберігає приватні ключі, адресну книгу, список останніх SMS, ім'я оператора, мережі, які віддають перевагу роумінгу, мережах, заборонених до використання тощо. Природно, є рівні доступу до файлів. Ключові слова часто не мають доступу до читання, що запобігає їх читанню ззовні.

Що все це для? Додані послуги SIM- меню та інші додатки несистеми. Основною метою карти є виявлення та автентифікації абонента в мережі.

Щоб зробити це, карта має IMSI (International Mobile Signr Identity) - унікальний ідентифікатор SIM-карти та ключ 128-bit Ki.
Нижче наведено порядок ідентифікації GSM мережі та створення ключа сеансу Kc.

Ауттентифікація здійснюється за допомогою алгоритму A3, покоління Kc A8.
Центр Ауттентифікації (AuC) створює 128-бітну послідовність псевдорандом RAND і надсилає її на SIM-карту. Далі, знаючи МВС карти, AuC використовує ключ Ki, пов'язаний з даними IMSI та даними RAND, як вхід в алгоритми A3 та A8. Карта виконує однакові розрахунки одночасно. В результаті розрахунку алгоритму A3 Signed Response (SRES) направляється картою на авт, де отримана СРЕС порівнюється з однією розрахованою на авт. Якщо результати збігаються, процедура автентифікації вважається успішним. Клавіша Kc, отримана за допомогою алгоритму A8, використовується для шифрування трафіку між телефоном та мережею.

Карточні програми використовують вразливість у старшій версії алгоритму A8 (COMP128-1). Зараз COM128-2 і COM128-3 широко використовуються в GSM мережі. Відкрито вразливість у 1999 році, але деякі оператори GSM не переключилися до 2-го та 3-го алгоритмів.

У цій статті я спробував розповісти вам досить коротко, що SIM-карти. Я сподіваюсь, що я отримав. Практично все описано вище, за винятком автентифікації, відноситься до обох карток USIM, що використовуються в мережах 3G (UMTS) та карток R-UIM (CDMA). Якщо у вас є якісь коментарі або питання, будь ласка, напишіть.

Посилання:
Веб-сайт: www.gpp.org
Веб-сайт: www.3gpp2.org
Технологія Java Карта

Джерело: habrahabr.ru/post/93210/