1 / 19

Верификация байт-кода в среде смарт-карт: использование криптографических методов

Верификация байт-кода в среде смарт-карт: использование криптографических методов. К. Н. Хюппенен Кафедра информатики и математического обеспечения ПетрГУ 20 июня 2003 г. Содержание. Загрузка апплетов на смарт-карты Алгоритм верификации байт-кода компании Sun

addo
Download Presentation

Верификация байт-кода в среде смарт-карт: использование криптографических методов

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Верификация байт-кода в среде смарт-карт: использование криптографических методов К. Н. Хюппенен Кафедра информатики и математического обеспечения ПетрГУ 20 июня 2003 г.

  2. Содержание • Загрузка апплетов на смарт-карты • Алгоритм верификации байт-кода компании Sun • Разделенная модель верификации байт-кода • Описание разработанного прототипа

  3. Приложение a Приложение b Приложение c Приложение ... Современная архитектура Java Card API Виртуальная машина Рабочая среда (ОС) Ресурсы микросхемы

  4. Собственный код Загрузка апплета Апплет Требования Верификация Собственный код Апплет типа s Апплет типа 2 Апплет типа 1 Контекст s Контекст 2 Контекст 1 JCVM Системные ресурсы

  5. Верификация байт-кода • Верификация байт-кода Java: • Статический и структурный анализ загружаемого пакета • Проверяет, что байт-код пакета оперирует верными типами данных. • Верификация байт-кода – это крайне важный элемент защиты: • Предотвращает нелегальные операции: • Подделка ссылок на объекты. • Неверное преобразование ссылок. • Созданные со злым умыслом апплеты способны: • Полностью считать память карты. • Получить доступ к частным данным.

  6. Как работает верификация • Что такое верификатор? • Это программа, которая определяет, является ли апплет «безопасным» или «небезопасным». • Что значит «безопасный»? • Апплет удовлетворяет набору свойств, которые необходимы, но не достаточны для обеспечения реальной защиты.

  7. Как работает верификация • Тесты, которые могут осуществляться: • Переменные имеют верные типы во всех ситуациях • Нелегальные преобразования типов (напр., чтение целочисленного типа как ссылки на объект) не происходят. • Код является замкнутым • Команды перехода не выводят интерпретатор за границы метода. • Стек ограничен • Не возникает переполнение или незагруженность стека. • Объекты используются безопасно • Все переменные инициализируются перед использованием. • И прочие...

  8. Регистр 3 Регистр 2 Регистр 1 Регистр 0 Виртуальная машина Java Card Ячейка стека 2 Объект 67 Имеет стековую архитектуру Стек операндов Ячейка стека 1 Объект 3 Ячейка стека 0 Системная область Объект 42 Ссылка Регистры Объект 2 Куча Стековый кадр

  9. 0 iload_1 .L i i ? 1 iload_2 ? ? ? ? ? 2 if_icmpne 12 ? ? ? ? ? 5 iload_1 ? ? ? ? ? 6 iload_2 ? ? ? ? ? 7 iadd ? ? ? ? ? 8 istore_3 ? ? ? ? ? 9 goto 16 ? ? ? ? ? 12 iload_1 ? ? ? ? ? 13 iload_1 ? ? ? ? ? 14 imul ? ? ? ? ? 15 istore_3 ? ? ? ? ? 16 iload_3 ? ? ? ? ? 17 ireturn ? ? ? ? ? Работа алгоритма верификации Sun Регистры 0 1 2 3 Стек

  10. 0 iload_1 . L i i ? 1 iload_2 i L i i ? 2 if_icmpne 12 ? ? ? ? ? 5 iload_1 ? ? ? ? ? 6 iload_2 ? ? ? ? ? 7 iadd ? ? ? ? ? 8 istore_3 ? ? ? ? ? 9 goto 16 ? ? ? ? ? 12 iload_1 ? ? ? ? ? 13 iload_1 ? ? ? ? ? 14 imul ? ? ? ? ? 15 istore_3 ? ? ? ? ? 16 iload_3 ? ? ? ? ? 17 ireturn ? ? ? ? ? Работа алгоритма верификации Sun Регистры 0 1 2 3 Стек

  11. 0 iload_1 . L i i ? 1 iload_2 i L i i ?2 if_icmpne 12 i,i L i i ? 5 iload_1 ? ? ? ? ? 6 iload_2 ? ? ? ? ? 7 iadd ? ? ? ? ? 8 istore_3 ? ? ? ? ? 9 goto 16 ? ? ? ? ? 12 iload_1 ? ? ? ? ? 13 iload_1 ? ? ? ? ? 14 imul ? ? ? ? ? 15 istore_3 ? ? ? ? ? 16 iload_3 ? ? ? ? ? 17 ireturn ? ? ? ? ? Работа алгоритма верификации Sun Регистры 0 1 2 3 Стек

  12. 0 iload_1 . L i i ? 1 iload_2 i L i i ? 2 if_icmpne 12 i,i L i i ? 5 iload_1 . L i i ? 6 iload_2 ? ? ? ? ? 7 iadd ? ? ? ? ? 8 istore_3 ? ? ? ? ? 9 goto 16 ? ? ? ? ? 12 iload_1 . L i i ? 13 iload_1 ? ? ? ? ? 14 imul ? ? ? ? ? 15 istore_3 ? ? ? ? ? 16 iload_3 ? ? ? ? ? 17 ireturn ? ? ? ? ? Работа алгоритма верификации Sun Регистры 0 1 2 3 Стек

  13. Разделенная модель верификации байт-кода • Терминал используется как внешний источник памяти. Для защиты данных применяются криптографические методы. • Требования к памяти сокращаются до O(S log S), где S – количество байт-кодов в методе. • Верификация производится на карте

  14. Постановка задачи • Исследовать применимость модели разделенной верификации байт-кода к технологии Java Card • Реализовать прототип верификатора • Провести тесты и измерения

  15. Разделенная модель верификации ТерминалХранилище кадров Данные Frame 0: MAC, PC=0, un/changed bit, types of variables Процедура верификации со стороны терминала Программа Frame 0: MAC, PC=0, un/changed bit, types of variables Frame 0: MAC, PC=0, un/changed bit, types of variables Frame 0: MAC, PC=0, un/changed bit, types of variables Frame i: MAC, PC=i, un/changed bit, types of variables Frame i: MAC, PC=i, un/changed bit, types of variables Кадр i Запись кадра Чтение кадра КартаСчетчики MAC-функция f с эфемерным ключом k С[i] 3 подписать проверить 5 12 2 Исходящий кадр 2 C[i] C[i]++ 1 Исходящий кадр Входящий кадр 3 7 Процедура верификации со стороны карты

  16. Оптимизации модели • Экспорт счетчиков на терминал • Дальнейшее сокращение объема требуемой для работы оперативной памяти. • Неявные запросы • Уменьшение объема передаваемых данных и снижение нагрузки на карту.

  17. Архитектура прототипа Содержимое пакета Апплет, исполняемый на терминале Апплет, исполняемый на карте Команды Кадры Принять/отвергнуть Проверяемый апплет

  18. Тестирование прототипа • Оценен объем требуемой памяти • Оценен объем передаваемых данных • Проведены измерения времени работы программы • Проведено тестирование на реальных смарт-картах • Доказана применимость модели разделенной верификации

  19. Результаты работы • Разделенная модель верификации байт-кода исследована и адаптирована к технологии Java Card; • Предложено несколько оптимизаций модели; • Реализован прототип верификатора, экспериментально подтверждающий применимость данного метода.

More Related