EA006639B1 - Способ компиляции и исполнения прикладных программ в многопроцессорной среде - Google Patents

Способ компиляции и исполнения прикладных программ в многопроцессорной среде Download PDF

Info

Publication number
EA006639B1
EA006639B1 EA200500121A EA200500121A EA006639B1 EA 006639 B1 EA006639 B1 EA 006639B1 EA 200500121 A EA200500121 A EA 200500121A EA 200500121 A EA200500121 A EA 200500121A EA 006639 B1 EA006639 B1 EA 006639B1
Authority
EA
Eurasian Patent Office
Prior art keywords
code
program
external device
program code
execution
Prior art date
Application number
EA200500121A
Other languages
English (en)
Other versions
EA200500121A1 (ru
Inventor
Ульф Карльсен
Хокон Хаммерстад
Эмир Горансис
Original Assignee
Соспита Ас
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Соспита Ас filed Critical Соспита Ас
Publication of EA200500121A1 publication Critical patent/EA200500121A1/ru
Publication of EA006639B1 publication Critical patent/EA006639B1/ru

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

Область техники, к которой относится изобретение
Настоящее изобретение относится к защищенным операционным системам с множеством приложений для небольших, защищенных внешних устройств, таких как микроконтроллеры (микропроцессоры) микропроцессорных карт (смарт-карт). В частности, настоящее изобретение относится к механизмам, предназначенным для надежной, выполняемой во время исполнения загрузки прикладных программ в такие устройства, к механизмам авторизации (санкционирования) и к обеспечению возможности авторизованного исполнения множества прикладных программ в устройствах, когда прикладная программа потенциально может иметь больший размер, чем объем запоминающего устройства микроконтроллера. Данный механизм упрощает управление микропроцессорными картами в течение срока их эксплуатации, связанное со сложностью загрузки и обновления выпущенных впоследствии прикладных программ для микропроцессоров (апплетов). Кроме того, описаны механизмы, предназначенные для подготовки прикладных программ (то есть, методики компиляции) с использованием общего набора файлов проекта в одном наборе инструментальных средств компилятора, для исполнения в многопроцессорной среде, состоящей из процессора, главного компьютера и микропроцессора, что позволяет разделить на части программирование интерфейсов передачи данных между прикладными программами главного компьютера и микропроцессора. Важная цель настоящего изобретения состоит в создании защищенной сопроцессорной среды для общих компьютерных прикладных программ, позволяющей обеспечить борьбу с пиратством в области программного обеспечения, которая содержит сопутствующие инструментальные средства разработки, и в обеспечении безопасного электронного распространения новых моделей программных средств и лицензирования программных средств.
Предшествующий уовень техники
Настоящее изобретение имеет отношение к И8 № 6266416, который включен в настоящее описание посредством ссылки. В этом патенте описана система, предназначенная для защиты лицензии на программные средства путем частичного исполнения прикладной программы во внешнем устройстве, которое защищено от несанкционированного вмешательства.
В случае, когда требуется разделять прикладную программу для исполнения на множестве процессоров, например, в рабочей станции главного компьютера и во внешнем идентификационном устройстве, таком как микроконтроллер микропроцессорной карты (карты с микропроцессором), возникает множество технических проблем. При этом требуется обеспечить возможность вызова прикладной программой, находящейся в главном компьютере, функций, размещенных в идентификационном устройстве. Различные переменные при этом находятся как в процессоре главного компьютера, так и в идентификационном устройстве. Все функции, которые работают с (защищенными) переменными, находящимися в идентификационном устройстве, должны быть выполнены в идентификационном устройстве. При этом требуется выполнять обмен переменными в обоих направлениях, тогда (и только тогда), когда это требуется.
Все такие функциональные возможности времени исполнения, которые управляют исполнением на двух процессорах, должны поддерживаться инструментальными средствами разработки. Часто вопросам защиты программных средств уделяют внимание отдельно, после разработки прикладной программы. Поэтому разработчику требуется простой и понятный для использования набор инструментальных средств для определения того, какие функции (или части кода) должны исполняться в идентификационном устройстве, какие программные переменные должны находиться в идентификационном устройстве и какие функции и программные переменные должны находиться в главном компьютере. Инструментальное средство разработки должно обеспечивать обработку всех аспектов защиты, включая использование криптографических алгоритмов. Оно должно скрывать от разработчика все детали низкоуровневых протоколов передачи данных, чтобы от разработчика не требовалось уделять внимание структуре модулей программных данных (ΡΌυ. МПД) и программированию протокола передачи данных аппаратного интерфейса.
Кроме того, код, исполняемый в идентификационном устройстве, должен быть независимым от аппаратных средств идентификационного устройства. Не зависимое от устройства исполнение подразумевает использование виртуальных машин и сопутствующих инструментальных средств компилятора для разработки.
Внешние устройства, в общем, не обладают теми же характеристиками, что и обычные процессоры главного компьютера. При этом чем большая часть кода будет переведена во внешнее устройство, тем более высокий уровень безопасности может быть обеспечен. Поэтому решение должно обеспечивать возможность многократной и простой настройки методом проб и ошибок защиты разработчиком для обеспечения максимально высоких рабочих характеристик и уровня безопасности.
В запоминающее устройство обычной микропроцессорной карты может быть предварительно загружена прикладная программа микропроцессорной карты (обычно называемая апплетом). Апплеты, содержащие байтовый код 1ауа, могут быть интерпретированы с помощью операционной системы 1ауа сагй (ТМ), которая представляет собой операционную систему для микропроцессорных карт, разработанную компанией 8ии МюгокукТешк В операционной системе 1ауа сагй может быть записано множество апплетов, которые выполняют различные функции. Во многих обычных микропроцессорных картах ап
- 1 006639 плеты заранее установлены в ПЗУ и сохраняются на карте в течение неограниченного времени. Однако многие операционные системы, микропроцессорных карт, включая операционную систему 1ауа сагб, содержат средство загрузки и сохранения апплетов в электрически стираемом программируемом постоянном запоминающем устройстве (БЕРКОМ), при этом такие апплеты могут быть впоследствии удалены. Другие известные смарт-карты включают в себя карты типа МиЬТО8 и 8тай Сагб £ог \νίηάο\ν5.
В И8 № 5923884 (Рсугс1 и др.) описана микропроцессорная карта, в запоминающем устройстве которой может храниться вся прикладная программа, включая права использования. В этой микропроцессорной карте прикладная программа допускает удаление. То есть, прикладная программа может быть удалена после ее полного использования, и может быть заменена новым апплетом. Одна из прикладных программ, которая может быть загружена в такую микропроцессорную карту, представляет собой апплет предварительно оплаченного времени пользования телефоном. По истечении времени новый апплет с восстановленными правами использования может быть загружен для восстановления работоспособности микропроцессорной карты. В качестве альтернативы, может быть загружен совершенно другой апплет.
Несмотря на гибкость применения обычных микропроцессорных карт, они все еще обладают недостатками. Например, размер апплета, который может исполняться в микропроцессорной карте, ограничен запоминающим устройством микропроцессорной карты, в частности, объемом энергонезависимого запоминающего устройства, которое обычно представляет собой ЕЕРКОМ. Хотя объем энергонезависимого запоминающего устройства в микропроцессорной карте увеличивается с каждым годом, было бы предпочтительно не накладывать ограничения запоминающего устройства на размер апплетов. Кроме того, поскольку энергонезависимое запоминающее устройство является дорогостоящим, было бы предпочтительно обеспечить возможность исполнения апплета на микропроцессорной карте, которая содержит энергонезависимое запоминающее устройство меньшего объема, чем размер даже малого апплета.
Кроме того, в известные микропроцессорные карты апплеты загружаются статически. То есть, апплеты загружаются в микропроцессорные карты либо во время их изготовления (например, предварительная установка апплета в ПЗУ), как показано на фиг. 1, или в течение режима программирования (например, в соответствии со схемой, представленной в ϋδ № 5923884 (Рсугс1 и др.)). До настоящего времени отсутствует решение (и очевидно отсутствует требование), которое позволяет обеспечить управление апплетом (загрузка и/или удаление) одновременно с исполнением этого апплета. Кроме того, до настоящего времени не описаны механизмы, обеспечивающие возможность загрузки только части апплета за один раз. В патенте ОБ 2163577 описана загрузка прикладных программ целиком, а не фрагментов или независимо исполняемых блоков программного кода. Используемые в настоящее время процессы загрузки апплетов требуют использования отдельного управляющего программного средства, что увеличивает время, сложность и затраты, связанные с использованием микропроцессорной карты. Такие стандарты, предназначенные для управления микропроцессорной картой, включая загрузку и удаление апплетов, которые реализованы в Τινη сагб, определяются глобальной платформой О1оЬа1 Р1аДогт (\у\\л\\д1оЬа1р1а1Гогт.огд).
Традиционный подход к программированию прикладных программ для множества процессоров, например, прикладных программ для микропроцессорных карт, которые всегда работают вместе с внешним главным компьютером определенного рода, состоит в разработке и компиляции одной прикладной программы отдельно для каждого процессора (как показано на фиг. 7), при этом требуется очень тщательно определять интерфейс передачи данных между каждым процессором. Одна проблема, связанная с таким традиционным подходом, состоит в необходимости для разработчиков прикладных программ тщательно проектировать (и выполнять отладку на самом раннем этапе) интерфейсов между различными процессорами. В настоящее время отсутствует возможность модификации программных интерфейсов между процессорами только компилятором прикладной программы, предназначенной для микропроцессорных карт, без необходимости выполнения такой же соответствующей модификации в компиляторе для прикладной программы главного компьютера. Другими словами, для обеспечения возможности автоматической адаптации и усовершенствования интерфейсов инструментальными средствами компилятора, компиляторы (или компилятор) должны (должен) работать одновременно с исходным кодом прикладной программы для главного компьютера и исходным кодом прикладной программы микропроцессорной карты. Однако для обеспечения одновременной работы одного компилятора с двумя (или множеством) прикладных программ, компилятор должен получать информацию о том, какие части кода прикладной программы принадлежат каким процессорным платформам. Настоящее изобретение направлено на решение этих проблем и обеспечивает дружественную для разработчика реализацию многопроцессорных прикладных программ, где заботу о деталях реализации низкоуровневого протокола ΡΌϋ (модуля программных данных) автоматически берет на себя компилятор, и, таким образом, эти детали скрыты от разработчика.
Сущность изобретения
Для упрощения аспектов управления апплетами, было бы предпочтительно обеспечить возможность динамической загрузки апплетов во время исполнения и без использования отдельного управляющего программного обеспечения. В настоящем изобретении решение такой задачи достигается путем обеспечения возможности переноса апплета во внешнее устройство (например, микропроцессорную кар
- 2 006639 ту) для исполнения в этом внешнем устройстве во время исполнения, без использования отдельного управляющего программного обеспечения, и путем обеспечения возможности переноса апплета в микропроцессорную карту и исполнения его в микропроцессорной карте в виде последовательно передаваемых блоков кода, которые ниже также называются РХ блоками (сокращение РХ происходит от названия операционной системы микропроцессорной карты, разработанной компанией 8о§рйа, и представляет собой сокращение 'АсРигс схссиПоп(« защищенное исполнение»)).
Настоящее изобретение обеспечивает возможность исполнения программного кода прикладной программы во внешнем устройстве. Внешнее устройство соединено с компьютером, с возможностью обмена данными. Компьютер содержит запоминающее устройство, предназначенное для содержания программного кода. Внешнее устройство включает в себя вход/выход для обмена данными с компьютером, процессор и запоминающее устройство.
Во время исполнения программного кода, программный код автоматически загружается в запоминающее устройство внешнего устройства. Программный код затем исполняется во внешнем устройстве, с использованием только процессора и запоминающего устройства внешнего устройства.
Согласно дополнительной характеристики настоящего изобретения, программный код скомпонован или разделен на множество различных блоков кода, причем каждый блок кода допускает независимое исполнение. В таком варианте выполнения, в соответствии с настоящим изобретением, первый блок кода, требуемый для исполнения, автоматически загружается в запоминающее устройство внешнего устройства. Затем первый блок кода исполняется во внешнем устройстве, с использованием только процессора и запоминающего устройства внешнего блока. По мере необходимости, последующие блоки программного кода затем последовательно и автоматически загружаются во внешнее устройство и исполняются во внешнем устройстве. В ходе этого процесса последующие блоки кода перезаписывают ранее загруженные блоки кода в запоминающем устройстве внешнего устройства, если это требуется для обеспечения достаточного объема запоминающего устройства во внешнем устройстве для последующих блоков кода.
В одном предпочтительном варианте выполнения настоящего изобретения программный код представляет собой апплет, и каждый из различных блоков кода представляет собой рХ блок. Программа может включать в себя множество апплетов, распределенных в программе. Процесс, описанный выше, используется для каждого апплета.
В другом предпочтительном варианте выполнения настоящего изобретения программный код включает в себя первую часть и вторую часть. Вторая часть представляет собой программный код, который исполняется во внешнем устройстве, первая часть исполняется в компьютере. После исполнения программного кода, внешнее устройство передает обратно в компьютер информацию состояния для последующего ее использования по меньшей мере первой частью программного кода.
Программный код, который исполняется во внешнем устройстве, предпочтительно зашифрован. В этом случае каждый блок кода должен быть дешифрован во внешнем устройстве перед исполнением.
Внешнее устройство предпочтительно представляет собой устройство, защищенное от несанкционированного вмешательства, такое как микропроцессорная карта, идентификационное устройство И8В (универсальной последовательной шины), карта стандарта РС сатб, рабочая станция ТЕМРЕ8Т (система проверки электромагнитного распространения и оценки безопасной передачи данных)/рабочая станция с защитой от несанкционированного вмешательства или физически защищенный компьютерный сервер, подключенный к сети.
В настоящее время существуют технологии разработки на основе компиляторов, которые позволяют для одного набора файлов содержать код одновременно для прикладной программы, исполняемой на главном компьютере, и для прикладной программы микропроцессора. Исходный код для конкретного целевого процессора помечают и в ходе компиляции преобразуют в зашифрованный (виртуальный) машинный код. Помеченные блоки кода заменяют вызовами функции, которые относятся к компонентам зашифрованного (виртуального) машинного кода, для обеспечения возможности динамической загрузки этих блоков защищенного кода во время исполнения в удаленный процессор, их дешифрования, записи и исполнения. Исходный код для конкретного целевого процессора разделяют на независимо исполняемые блоки кода, что позволяет обеспечить независимое исполнение каждого блока кода, что, в свою очередь, обеспечивает возможность для целевого процессора (с потенциально ограниченными доступными ресурсами запоминающего устройства и центрального процессорного устройства (ЦПУ)) исполнять прикладные программы большего размера, чем доступный объем запоминающего устройства.
Перечень фигур чертежей
Вышеприведенное краткое описание сущности изобретения, а также следующее подробное описание предпочтительных вариантов осуществления настоящего изобретения будут более понятны при их прочтении совместно с прилагаемыми чертежами. С целью иллюстрации настоящего изобретения на чертежах представлен предпочтительный в настоящее время вариант осуществления. Следует, однако, понимать, что настоящее изобретение не ограничивается представленными конкретными компоновками и инструментальными средствами.
- 3 006639
Фиг. 1 - процедуры загрузки и исполнения прикладных программ в микропроцессоре предшествующего уровня техники. Загрузку апплетов выполняют с использованием доверенного средства загрузки прикладных программ, перед каким-либо исполнением самого апплета или перед исполнением в главном компьютере связанной с ним прикладной программы. Апплеты обычно загружают в защищенных местах еще до выпуска микропроцессорных карт или в защищенном месте через некоторое время после поставки микропроцессорной карты потребителю. В этой процедуре предполагается, что потребитель должен принести свою карту в такое защищенное место для модернизации карты.
Фиг. 2 - предпочтительный вариант осуществления настоящего изобретения, в котором обеспечивается возможность безопасной загрузки апплета или даже части апплета в удаленный процессор.
Фиг. 3 и 4 - та же конфигурация, что и на фиг. 2, но по прошествии некоторого времени, и где удаленный процессор содержит информацию состояния в отношении того, какие апплеты и части апплетов записаны в нем.
Фиг. 5 - граф вызовов функций, представляющий взаимозависимости между четырьмя программными функциями.
Фиг. 6 - тот же граф вызова функции, что и на фиг. 5, дополнительно иллюстрирующий транзитивные зависимости аргументов каждой из функций.
Фиг. 7 - процедуры предшествующего уровня техники, предназначенные для компиляции множества приложений для множества процессоров с использованием множества компиляторов и инструментальных средств разработки.
Фиг. 8 - двухэтапная последовательно выполняемая процедура компиляции, которая позволяет использовать один набор исходных файлов для содержания кода прикладной программы для множества процессоров, и которая позволяет результирующей исполняемой программе, получаемой из этих исходных файлов, внедрять (в зашифрованном виде) код прикладной программы, допускающей загрузку во время исполнения, для каждого из множества процессоров.
Фиг. 9 - преимущество внедрения меток в форме полей комментария традиционных компиляторов, в результате чего традиционные компиляторы можно использовать для генерирования кода для целей моделирования и отладки.
Фиг. 10 - примеры исходного кода на языке программирования ΑΝ8Ι С, где внедрены метки, идентифицирующие код процессора для второго процессора.
Фиг. 11 - пример то же кода, что и на фиг. 10, после компиляции для второго процессора. Следует отметить, что код все еще остается исходным кодом на языке программирования ΑΝ8Ι С.
Фиг. 12 - криптографический протокол для безопасной передачи лицензии (или разрешения) из одного защищенного процессора в другой, таким образом, что исключается дублирование или пиратское использование лицензии.
Подробное описание изобретения
В настоящем описании используется определенная терминология, предназначенная только для удобства, а не для ограничения настоящего изобретения. На чертежах одинаковые номера позиций используются для обозначения одинаковых элементов на нескольких фигурах.
В настоящем изобретении описан механизм, согласно которому прикладные программы микропроцессора (апплеты) динамически загружаются в микропроцессорную карту во время исполнения, то есть, во время действительного исполнения самой прикладной программы. В результате этого, прикладная программа микропроцессора самостоятельно загружается потенциально каждый раз при ее исполнении вместе с соответствующей прикладной программой, исполняемой на главном компьютере. Такой подход существенно отличается от всех других операционных систем микропроцессорных карт, где прикладная программа микропроцессорной карты загружается в микропроцессорную карту на фазе производства или после производства, но всегда до действительного начала исполнения прикладной программы микропроцессора.
На фиг. 2 показан один предпочтительный вариант осуществления настоящего изобретения. Компьютер 20 включает в себя запоминающее устройство 22, которое содержит прикладные программы 10 и 11. Прикладная программа 10 включает в себя часть незашифрованного кода 101 (то есть, комбинированный код, обозначенный 101!, 1012 и 1013), который исполняется на компьютере 20. Прикладная программа 10 также содержит прикладную программу 102 микропроцессора (то есть, комбинацию ОХ блоков 1021 и 1022). В данном примере ОХ блоки 1021 и 1022 занимают 10 килобайт и 15 килобайт запоминающего устройства соответственно. Аналогично, прикладная программа 11 включает в себя порцию незашифрованного кода 111 (то есть, комбинированного кода, обозначенного 1111, 1112 и 1113), который исполняется на компьютере 20. Программа 11 также включает в себя прикладную программу 112 микропроцессора (то есть, комбинацию ОХ блоков 1121 и 1122). В данном примере, ОХ блоки 1121 и 1122 занимают 4 килобайта и 9 килобайтов объема запоминающего устройства соответственно.
На фиг. 2 также показано внешнее устройство 30, которое, в общем, аналогично внешним устройствам, описанным выше. Внешнее устройство включает в себя ЦПУ 36, вход-выход (Ι/Ο) 32, средство 34 управления прикладными программами микропроцессора и энергонезависимое запоминающее устройство 38, которое обычно представляет собой устройство типа БЕРНОМ, а также может быть представлено
- 4 006639 в виде запоминающего устройства типа флэш или запоминающего устройства любого другого типа, в зависимости от типа внешнего устройства. Средство 34 управления прикладными программами микропроцессора обрабатывает все задачи управления, относящиеся к дешифрованию и записи прикладных программ микропроцессора и блоков прикладных программ микропроцессора до и во время исполнения прикладной программы микропроцессора.
Средство 24 загрузки прикладных программ и средство 34 управления прикладными программами (апплетами) микропроцессора содержат механизмы, которые обеспечивают возможность динамической загрузки апплета во время его исполнения в операционную систему микропроцессора. Как описано выше, каждая прикладная программа микропроцессора состоит из множества отдельно идентифицируемых блоков (РХ блоков). Каждый раз, когда должен быть исполнен новый РХ блок, средство загрузки прикладных программ посылает запрос в средство управления апплетами. В одном варианте осуществления настоящего изобретения, средство управления прикладными программами микропроцессора вначале проверяет, содержит ли он действующую лицензию для этого РХ блока. Если лицензия является действительной, средство управления апплетами продолжает проверять, достаточно ли объема запоминающего устройства для записи этого РХ блока. Если остается недостаточное пространство, средство управления апплетами выбирает старые РХ блоки, которые разрешено удалить, что в совокупности высвобождает достаточно пространства для записи нового РХ блока. Новый РХ блок, который первоначально хранился в зашифрованном виде внутри исполняемых модулей на главном компьютере, переносят в идентификационное устройство, дешифруют, проверяют его целостность, сохраняют в запоминающем устройстве и затем, наконец, его активируют. Такой динамический подход времени наполнения к управлению апплетами имеет несколько важных преимуществ.
Запоминающее устройство микропроцессорной карты не требуется больше резервировать для одной прикладной программы, но оно может совместно использоваться всеми апплетами, которые ассоциированы с действующей лицензией в идентификационном устройстве. При этом запоминающее устройство многократно используется множеством апплетов, что обеспечивает возможность исполнения большего количества апплетов, чем могло бы поместиться в запоминающем устройстве микропроцессорной карты.
Поскольку средство управления апплетами работает с РХ блоками, а не только с целыми РХ апплетами, средство управления апплетами также обеспечивает возможность исполнения во внешнем устройстве одного РХ апплета, который сам по себе больше, чем доступный объем БЕРКОМ.
Файлы, исполняемые на главном компьютере, которые внедряют РХ апплеты, представляют собой идеальное хранилище и транспортный контейнер для прозрачного и эффективного по стоимости распространения новых апплетов, а также для моделирующих апплетов, что, таким образом, решает большую часть проблем поставки и поддержания эксплуатации прикладных программ микропроцессора.
В примере, показанном на фиг. 2, 3 и 4, запоминающее устройство 38 микропроцессора имеет в сумме 16 килобайт памяти. В известных вариантах реализации микропроцессорных карт внешнее устройство 30 не может одновременно исполнять прикладные программы 102 и 112 микропроцессора, поскольку общий размер прикладных программ микропроцессора (10К+15К=25К для прикладной программы 102 и 4К+9К=13К для прикладной программы 112 микропроцессора) превышает размер запоминающего устройства 38 (16 кб) . Кроме того, в известных вариантах реализации микропроцессорных карт во внешнем устройстве 30 отсутствует возможность исполнения прикладной программы 102 микропроцессора, поскольку общий размер одной прикладной программы 102 микропроцессора (25 кб) превышает размер запоминающего устройства 38 (16 кб).
Настоящее изобретение представляет решение проблемы, связанной с таким ограничением. Во время компиляции, каждый блок кода выполняется с возможностью независимого исполнения. При исполнении прикладной программы 11 по фиг. 2 (в момент времени 1=1) выполняется перенос РХ блока 1122 с помощью средства 24 загрузки прикладных программ во внешнее устройство 30. РХ блок 1122 дешифруют и сохраняют как дешифрованный РХ блок 113! в запоминающем устройстве 38. Поскольку каждый блок кода может исполняться независимо, обеспечивается возможность исполнения РХ блока 1122 с помощью ЦПУ 36. В другом варианте осуществления (не показан на чертеже), РХ блок 1122 сохраняют непосредственно в запоминающем устройстве 38 без дешифрования.
В еще одном варианте осуществления (не показан на чертеже) , микропроцессор 30 после приема РХ блока 1122 вначале проверяет, обладает ли он возможностью дешифровать и исполнить эту прикладную программу микропроцессора. Если это так, РХ блок 1122 дешифруют и сохраняют как дешифрованный блок РХ 1131 в запоминающем устройстве 38 и затем исполняют с помощью ЦПУ 36.
В момент времени 1=2 во время исполнения, РХ блок 1122 должен исполняться. Этот сценарий представлен на фиг. 3. Поскольку запоминающее устройство 38 содержит достаточный объем свободного пространства, РХ блок 1122 динамически загружают и сохраняют вместе с первым РХ блоком 112!. Если запоминающее устройство 38 микропроцессора имеет достаточный объем, в альтернативном варианте осуществления, показанном на фиг. 2 и 3, РХ блок 1121 и РХ блок 1122 могут быть загружены в запоминающее устройство микропроцессорной карты в один момент времени 1=1, сразу же когда начинается исполнение первого РХ блока. В момент времени 1=3 во время исполнения, путь исполнения при
- 5 006639 кладной программы достигает РХ блока 102!, либо потому, что код 101, исполняемый на главном компьютере, достигает этого места, либо потому, что этого места достигает прикладная программа 102, исполняемая в микропроцессоре. Если это происходит с прикладной программой микропроцессора, она посылает запрос в средство 24 загрузки приложений с целью предписания ему инициировать загрузку нового ОХ блока. Теперь, в любом случае, клиентский главный компьютер 20 посылает запрос в микропроцессор 30 для инициирования загрузки нового РХ блока. Средство 34 управления прикладными программами микропроцессора распознает, что РХ блок 1021 занимает 10 килобайт в памяти, в то время как запоминающее устройство 38 микропроцессора практически заполнено. Для обеспечения возможности загрузки и исполнения РХ блока 1021, средство 34 управления прикладными программами микропроцессора освобождает память путем удаления некоторых РХ блоков, уже хранящихся в запоминающем устройстве 38. На фиг. 4 средство 34 управления прикладными программами микропроцессора определяет, что достаточно удалить РХ блок 103!. Оно его удаляет и загружает новый РХ блок 1021 в микропроцессор, дешифрует его, сохраняет и исполняет. Следует отметить, что при таком сценарии обе прикладные программы 102 и 112 микропроцессора могут быть активными одновременно в микропроцессоре 30. Прикладная программа 102 микропроцессора может в любой момент времени повторно загружать любые отсутствующие РХ блоки.
Перед удалением РХ блока, средство 34 управления апплетами должно определить, какой РХ блок или блоки должны быть удалены. Для различных систем существуют общие стратегии удаления, включая выбор наилучшего согласования размера объекта и требуемого объема памяти, выбор наименее используемого объекта или наиболее давно использованного объекта. В одном варианте выполнения настоящего изобретения, каждый РХ блок может включать в себя атрибут режима удаления. Средство управления апплетами использует этот атрибут для определения того, какой РХ блок (блоки) следует удалить следующим. При этом предлагаются четыре уровня удаления:
1) Удаление при закрытии: РХ блок автоматически удаляется каждый раз, когда завершается исполнение РХ апплета.
2) Содержание на карте; удаляется любым апплетом: после загрузки и исполнения РХ блок остается на карте до тех пор, пока средство управления апплетами по запросу любого РХ апплета не примет решение на его удаление.
3) Содержание на карте; удаляется только самостоятельно: после загрузки и исполнения РХ блок остается на карте до тех пор, пока средство управления апплетами, по запросу другого РХ блока, который принадлежит тому же РХ апплету, не примет решение на его удаление.
4) Содержание на карте: в этом случае РХ блок никогда не удаляют, если возможно, не поступит аутентифицированный запрос, например, с использованием паролей. Пароль устанавливается производителем апплета, так что обычно только производитель может удалить апплет. Этот режим удаления напоминает традиционный подход, используемый в операционной системе 1ауа сагб, где апплеты хранятся на карте в большей или меньшей степени статично.
Механизм для динамической загрузки РХ блоков во время исполнения для множества апплетов повторяется для любых последующих РХ блоков до тех пор, пока все РХ блоки и все прикладные программы микропроцессора не будут исполнены. Любой полученный в результате параметр состояния после исполнения РХ блока сохраняют в запоминающем устройстве 38 микропроцессора или возвращают в программу 22 для последующего использования прикладной программой.
Как описано выше, одно существенное преимущество настоящего изобретения состоит в том, что программный код, исполняемый во внешнем устройстве 30, не ограничен объемом запоминающего устройства 38 во внешнем устройстве 30. Если прикладная программа содержит апплет размером 50 кб, может быть выполнено десять последовательных передач кода по 5 кб. Другие примеры находятся в пределах объема настоящего изобретения.
Разработка программного обеспечения для множества процессоров является сложной из-за необходимости использования множества интерфейсов передачи данных, при этом организация потоков исполнения может быть трудновыполнимой, если введено параллельное программирование и т.д. Поэтому важно разработать автоматизированные инструментальные средства, которые помогали бы в разработке, насколько это возможно. Рассмотрим следующий сценарий. Когда прикладные программы исполняются на множестве процессоров, различные части прикладных программ выделяют для исполнения на конкретном процессоре. Кроме того, различные переменные программ распределяют для хранения в различных, конкретных процессорах. Например, в среде с двумя процессорами, которая включает два процессора процессор главного компьютера и микропроцессор, прикладная программа, исполняемая на главном компьютере, может вызывать функцию Еипс1(А) микропроцессора. Параметр А передается как аргумент функции из главного компьютера в микропроцессор. Предположим, что параметры А и В постоянно находятся в главном компьютере, и предположим, что Еипс1(А), в текущий момент времени исполняемая в микропроцессоре, должна вызывать Еипс2(В). Тогда, даже если обе функции Ецпс1 (А) и Ецпс2 (В) присутствуют в микропроцессоре, поскольку В постоянно находится только в главном компьютере, операционная система микропроцессора должна посылать запрос обратно в главный компьютер, для того, чтобы главный компьютер передал параметр В в микропроцессор. Такая процедура имеет не
- 6 006639 сколько недостатков. С точки зрения безопасности, информация раскрывается, когда микропроцессор внезапно делает запрос нового параметра. С точки зрения рабочих характеристик, передача данных между микропроцессором и главным компьютером может выполняться медленно.
Для улучшения описанной выше ситуации, Рипс1 (А) может быть переопределена в Рипс1(А,В). Таким образом, обеспечивается, что микропроцессор всегда будет принимать оба параметра А и В при вызове Рипс1. Следовательно, если и когда Рипс1 должна вызвать Рипс2, параметр В будет уже присутствовать в микропроцессоре. На фиг. 5 и 6 представлен аналогичный случай. На фиг. 5 показаны четыре функции Рипс1(А), Рипс2(В), Рипс3(В, С) и Енпс4(Э) и структура их вызова. На фиг. 6 показаны преобразованные функции: поскольку Рипс2 вызывает РипсЗ и Рипс4, Рипс2 должна содержать параметры для РипсЗ и Рипс4. То есть, Рипс2(В) преобразуется в Рипс2(В, С, Ό). Аналогично, Рипс1 вызывает Рипс2 и РипсЗ, при этом Рипс1(А) преобразуется в Рипс1(А, В, С, Ό). Рипс3() не вызывает другие функции, поэтому не требуется ее преобразование. ЕнпсЭ рекурсивно вызывает саму себя. Поскольку рекурсия не добавляет какие-либо новые аргументы, преобразование ЕнпсЭ не требуется.
Задача переопределения функций может быть выполнена вручную разработчиками. Эта задача может быть трудоемкой, так что идеальное решение состоит в использовании инструментальных средств разработки, например, компиляторов, которые выполняют эту работу автоматически.
Традиционный подход к программированию прикладной программы для множества процессоров, например, для прикладных программ микропроцессорных карт, которые всегда работают совместно с внешним главным компьютером определенного вида, состоит в разработке одной прикладной программы отдельно для каждого процессора, с учетом очень тщательного определения интерфейса передачи данных между каждым процессором. Одна из проблем, связанная с таким традиционным подходом, тесно связана с описанной выше проблемой: не существует возможности для компилятора, работающего с отдельной прикладной программой микропроцессорной карты, когда он бы мог (или даже должен был) модифицировать интерфейсы функций, без выполнения таких же соответствующих модификаций в компиляторе для прикладной программы главного компьютера. Другими словами, для обеспечения возможности адаптации интерфейсов и автоматического усовершенствования с помощью инструментальных средств компилятора, компиляторы (или компилятор) должны (должен) работать одновременно с исходным кодом прикладной программы главного компьютера и с исходным кодом прикладной программы микропроцессорной карты. Однако для того, чтобы один компилятор работал одновременно с двумя (или с множеством) прикладными программами, компилятор должен получать информацию о том, какие части кода прикладной программы принадлежат какой платформе процессора. Одно из решений может состоять в содержании кода для различных платформ в разных файлах, и передаче указания в компилятор о том, какие файлы принадлежат какому процессору. Это решение работает достаточно хорошо, но не является оптимальным, поскольку логическая структура прикладной программы закрыта, когда функции, которые едины с логической точки зрения, принудительно разделяют для обеспечения возможности для компилятора ассоциировать код с конкретной платформой.
Разумный способ различения одного кода от другого состоит в предоставлении синтаксического средства идентификации и, установки меток кода для различных платформ. Как указано выше, прикладная программа микропроцессора (апплет) разделена на функционально независимые ОХ блоки, при этом пары уникально идентифицируемых ключевых слов, например, ОХВедш и ОХЕпб, можно использовать для установки меток начала и конца ОХ блока. Ключевые слова можно использовать многократно, так что, в принципе, каждый новый отмеченный участок кода составляет новый уникальный ОХ блок. Сумма всех отмеченных ОХ блоков составляет апплет или прикладную программу микропроцессора. Весь непомеченный код, то есть, все отрицательные блоки кода (от ОХЕпб до ОХВедш), составляет прикладную программу главного компьютера. Язык разметки может быть тривиально расширен для множества (более 2) платформ прикладной программы или блоков кода, которые совместно составляют апплет. Каждому ОХ блоку выделяют уникальный идентификатор ОХЫоск1б. На фиг. 10 представлен принцип разметки прикладной программы для двух процессоров: процессора главного компьютера и микропроцессора (микропроцессорной карты). Весь код, который находится между метками ОХВедш и ОХЕпб, назначен для исполнения на микропроцессоре.
ОХ блок можно сравнить с методом операционной системы 1ауа сагб. Одно существенное различие между методом 1ауа сагб и ОХ блоками, представленными на фиг. 10, состоит в том, что методы 1ауа сагб (и вся прикладная программа 1ауа сагб) никогда не содержатся вместе с кодом прикладной программы главного компьютера. Другое важное различие состоит в том, что ОХ блок не обязательно должен составлять целую функцию. Фактически, на фигуре 10 показаны два ОХ блока, ни один из которых не представляет собой определение всей функции. Другими словами, ничто не ограничивает размеченный код (ОХ блоки) быть чем угодно, от оператора, содержащего одну строку, до множества операторов, содержащихся в функции (например, блока ΑΝ8Ι С, определенного фигурными скобками {и}, до всей (не объектно-ориентированной) функции или (объектно-ориентированного) метода). В предпочтительном варианте выполнения, когда метки ОХВедш - ОХЕпб охватывают более чем одну полную функцию, компилятор будет генерировать один ОХ блок для каждой функции.
- 7 006639
Поскольку непомеченный и помеченный коды предназначены для исполнения на различных аппаратных платформах, весьма вероятно, что эти аппаратные платформы будут предлагать различные услуги, наборы инструкций, библиотеки функций и другие возможности. В этом случае для компилятора потребуется два (или множество) различных генераторов кода, по одному для каждой из различных платформ аппаратных средств. В качестве альтернативы, два (или множество) различных компиляторов могут быть назначены и могут использоваться так, что выходные данные одного компилятора будут представлять собой входные данные следующего компилятора. То есть, компиляторы соединены вместе последовательно. Для достижения этого важно, чтобы выходной формат одного компилятора соответствовал входному формату следующего компилятора. На практике, если многоплатформная прикладная программа написана на одном языке программирования (таком, как ΑΝ8Ι С или 1ата). это предполагает, что входной формат должен быть идентичен выходному формату. Эту часть изложения можно закончить компиляторами, которые, например, транслируют исходный код из ΆΝ8Ι С в ΆΝ8Ι С.
На фиг. 8 показана такая многокомпиляторная среда, с двумя компиляторами, один из которых выполняет компиляцию помеченного кода для прикладной программы микропроцессора, который считывает исходный код на языке программирования в качестве входной информации и выдает исходный код на том же языке программирования, и другой - стандартный компилятор для прикладной программы, исполняемой на главном компьютере, который считывает исходный код на языке программирования в качестве входной информации, но генерирует исполняемый код для платформы главного компьютера. Смысл этого сценария состоит в том, что получаемый в результате исполняемый код должен быть запущен на платформе главного компьютера, а не на платформе микропроцессора.
На фиг. 11 показан результат компиляции примера исходного кода на языке программирования ΆΝ8Ι С по фиг. 10 с использованием компилятора микропроцессора (маркер ОХ), показанного на фиг. 8. Код по фиг. 11 также соответствует языку программирования ΆΝ8Ι С. Помеченные блоки были компилированы в (виртуальный) машинный код для целевой платформы, затем (в одном варианте выполнения) зашифрованы. Массив ОХСобе, определенный в конце кода по фиг. 11, содержит этот зашифрованный виртуальный машинный код для виртуальной машины операционной системы микропроцессорной карты. Помеченные блоки и/или функциональные вызовы к помеченным блокам, содержащим функцию, были заменены анонимным функциональным вызовом интерфейса прикладного программирования (ΑΡΙ), который предназначен для передачи (зашифрованных, виртуальных) блоков машинного кода в платформу назначения для последующего сохранения и исполнения на удаленной платформе. Введенная функция ОХЕ.хесШеРЩ) приводит при исполнении к тому, что все ее аргументы будут переданы в микропроцессор микропроцессорной карты. Эти аргументы представляют собой, помимо прочих, массив ОХСобе, содержащий зашифрованный виртуальный машинный код.
Существенное преимущество использования меток ОХ для маркировки кода и для обеспечения возможности замещения компилятором их содержимого функциями стиля рХЕхеси1еР1т(), состоит в уменьшении потребности для разработчиков программировать протоколы передачи данных. Задача программирования для множества процессоров, таким образом, существенно упрощается.
Код, показанный на фиг. 11, может быть теперь скомпилирован с использованием коммерчески доступного компилятора, например, Мютокой У1киа1 С++ (обозначен стрелкой Компилятор для главного компьютера на фиг. 8), для получения исполняемого кода для платформы главного компьютера XV ίηбохтк РС (то есть, Исполняемого кода для главного компьютера и микропроцессора, показанного на фиг. 8).
Следует отметить, что метки (ОХВещп - ОХЕпб) расположены в комментариях по фиг. 10. Это позволяет компилировать код либо отдельно для главного компьютера (активируя только компилятор прикладной программы главного компьютера), либо для главного компьютера и микропроцессора (активируя компилятор прикладной программы микропроцессора перед компилятором прикладной программы главного компьютера). Обычные компиляторы игнорируют поля комментариев. Однако компилятор микропроцессора сконструирован так, что он позволяет синтаксически анализировать и понимать поля комментариев языков программирования. Преимущество меток, скрытых в полях комментариев, состоит в том, что при этом обеспечивается возможность непосредственной компиляции файла (файлов) первоначального (размеченного) исходного кода непосредственно конечным компилятором в цепочке (например, Мютокой У1киа1 С++ в представленном выше примере). Такая стандартная схема компиляции показана на фиг. 9. Преимущество обеспечения прямой компиляции всего кода на одной платформе состоит в том, что это обеспечивает моделирование и, таким образом, упрощает тестирование и отладку прикладной программы только на одной платформе. Теперь для разработчика не требуется изучать новые инструментальные средства для отладки, поскольку можно использовать инструментальные средства отладки, с которыми он или она уже хорошо знакомы. Если бы метки не были скрыты, рассматриваемый исходный код не мог бы быть непосредственно скомпилирован, например, с помощью Мютокой У1киа1 С++.
Кроме ключевых слов для отметки того, какой код принадлежит какой платформе, другие ключевые слова могут быть определены для различных целей. В качестве альтернативы меткам в стиле ОХВе§ίη, ОХЕпб, одиночная метка (например РХ) может быть определена для ассоциирования одиночного
- 8 006639 оператора с определенной платформой. Другая метка ОХир1оаб может предписать компилятору включить исходный код с целью обеспечения загрузки одного, нескольких или всех ОХ блоков в устройство, без фактического вызова какого-либо из ОХ блоков. В случае, когда исполнение ОХ блоков контролируется в соответствии с программной лицензией или разрешением, метки могут быть введены для учета лицензии или разрешения, например, для увеличения значения счетчика или установки метки времени. Ключевые слова также могут содержать аргументы, например, ОХВедш (Р1аЙогш1б, ЫееикеИ, Леес55Мобе, Соип1бо\уп). При этом компилятор может генерировать код для а) принудительного исполнения кода на конкретной, указанной платформе, Ь) принудительного условного исполнения в соответствии с возможностями предоставляемыми конкретной лицензией, с) представления режима доступа для проверки по отношению к лицензированному режиму доступа, также разрешая условное исполнение, и б) изменения значения счетчика.
В одном варианте выполнения настоящего изобретения исполнение прикладной программы на платформе контролируется в соответствии с лицензией, защищено расположенной на этой платформе. Лицензия представляет собой эквивалент разрешения. Она содержит атрибуты, которые определяют, при каких условиях апплет может быть загружен в карту и/или исполнен. Лицензия содержит различные атрибуты. Уникальный Ыееп8е1б уникально ассоциирован с конкретным апплетом. Другие атрибуты включают в себя ограничения лицензии (от даты/времени, до даты/времени, по количеству исполнений, по модели доступа для исполнения групп ОХ блоков), криптографические ключи, пароли/коды персональной идентификации (ΡΙΝ), различные поля текстового описания и так далее. В лицензии может быть, например, указано, что ОХ блоки 1 и 4 ассоциированного апплета могут исполняться любое количество раз до 30 ноября. ОХ блоки 2 и 3 апплета не могут исполняться и, когда срок лицензии истекает 30 ноября, владелец карты должен получить новую лицензию для обновления своих прав на исполнение апплета.
Лицензии могут перемещаться от одного идентификационного устройства к другому (при условии, что лицо, выдавшее лицензию, установило атрибут, который позволяет перемещать эту лицензию). Одно идентификационное устройство типично может быть соединено с АеЬ-сервером. работающим в интерактивном режиме (онлайн), или функции этого идентификационного устройства могут быть интегрированы в сам АеЬ-сервер. Это позволяет другим идентификационным устройствам устанавливать соединение в направлении идентификационного устройства - сервера и получать/покупать новые лицензии в режиме онлайн. Поскольку каждая передача лицензии происходит с использованием безопасных криптографических протоколов, конфиденциальность, целостность и проблемы, связанные с пиратским использованием лицензии, соответствующим образом учитываются. Такое безопасное и удобное средство для распространения лицензий в режиме онлайн наряду с безопасностью и удобством означает возможность для распространения защищенных прикладных программ в режиме онлайн, обеспечивает новые деловые возможности для аренды прикладных программных средств.
Криптографический протокол, используемый для безопасной передачи лицензии между идентификационными устройствами, представлен на фиг. 12. Лицензию передают из идентификационного устройства А в идентификационное устройство В. Протокол обеспечивает перемещение лицензии не более, чем один раз в идентификационное устройство назначения, и никогда вообще в какое-либо другое идентификационное устройство.
Обеспечение возможности для идентификационного устройства А действовать в качестве идентификационного устройства сервера, позволяет предоставлять/отзывать лицензии в отношении идентификационных устройств - клиентов, как описано выше. Благодаря возможности для идентификационного устройства сервера также действовать в качестве идентификационного устройства В, обеспечивается возврат неиспользованных или частично использованных лицензий на сервер. Это свойство используется, например, в серверах корпоративных лицензий, что позволяет предоставлять лицензии и отзывать их и, таким образом, перемещать их от клиента к клиенту в места, где требуется такая лицензия.
На фиг. 12 идентификационные устройства А и В первоначально совместно используют одну транспортную лицензию (производителя идентификационного устройства).
Идентификационные устройства также могут совместно использовать транспортную лицензию поставщика. Все транспортные лицензии содержат симметричный ключ. Идентификационное устройство А также содержит лицензию, которую требуется переместить в идентификационное устройство В. Если идентификационные устройства не используют совместно одну общую транспортную лицензию поставщика, вместо нее будет использоваться транспортная лицензия производителя. Протокол работает следующим образом: идентификационное устройство В генерирует на этапе 1 запрос на лицензию, включающий в себя случайный транспортный код. На этапе 2 запрос на лицензию передают в идентификационное устройство А. При этом обеспечивается защита целостности запроса на лицензию. На этапе 3 идентификационное устройство А проверяет целостность запроса на лицензию. При положительном результате проверки идентификационное устройство переходит на этапе 4 к генерированию сеансового ключа. На этапе 5 лицензию подготавливают для передачи, сеансовый ключ шифруют с транспортной лицензией поставщика, как указано в запросе лицензии, и лицензию удаляют из хранилища лицензии. На этапе 6 лицензию передают в идентификационное устройство В назначения. Конфиденциальность неко
- 9 006639 торых атрибутов лицензии защищена, в частности, криптографический ключ лицензии, в то время как защищена целостность всей лицензии. На этапе 7 выполняют сравнение транспортных кодов. Этот важный этап обеспечивает перемещение лицензии один раз и только один раз в требуемое идентификационное устройство, и никогда вообще в любое другое идентификационное устройство. Если транспортные коды соответствуют, идентификационное устройство В заменяет на этапе 8 запрос на лицензию (который содержал транспортный код) собственно лицензией.
В отношении описанных выше вариантов выполнения могут быть выполнены изменения, без отхода от их широкой изобретательной концепции. Настоящее изобретение, таким образом, не ограничено описанными конкретными вариантами осуществления, но подразумевается охватывающим модификации, находящиеся в пределах сущности и объема настоящего изобретения.

Claims (27)

  1. ФОРМУЛА ИЗОБРЕТЕНИЯ
    1. Способ исполнения программного кода программы во внешнем устройстве, причем программный код разделен на множество различных блоков кода, каждый из которых выполнен с возможностью независимого исполнения, при этом внешнее устройство соединено с возможностью обмена данными с компьютером, компьютер включает в себя запоминающее устройство, предназначенное для содержания программного кода, внешнее устройство включает в себя (ί) вход/выход для обмена данными с компьютером, (ίί) процессор и (ίίί) запоминающее устройство, причем способ содержит этапы, на которых:
    (a) выполняют автоматическую загрузку первого блока кода в запоминающее устройство внешнего устройства;
    (b) исполняют первый блок кода во внешнем устройстве с использованием только процессора и запоминающего устройства внешнего устройства и (c) выполняют последовательную и автоматическую загрузку и исполнение остальных блоков программного кода во внешнем устройстве, при этом последующие блоки кода перезаписывают ранее загруженные блоки кода в запоминающем устройстве внешнего устройства.
  2. 2. Способ по п.1, в котором программный код представляет собой прикладную программу (апплет) микропроцессорной карты, и каждый из упомянутых различных блоков кода представляет собой функции или методы.
  3. 3. Способ по п.2, в котором компьютер включает в себя множество программ и апплетов и для каждого апплета выполняются этапы (а) и (Ь).
  4. 4. Способ по п.1, в котором этап (а) выполнятся в компьютере во время исполнения программного кода.
  5. 5. Способ по п.1, в котором этап (а) выполняется перед исполнением программного кода.
  6. 6. Способ по п.1, в котором программный код включает в себя первую часть и вторую часть, причем вторая часть представляет собой программный код, содержащий множество различных блоков кода, каждый из которых выполнен с возможностью независимого исполнения, при этом способ дополнительно содержит этап, на котором:
    (й) исполняют первую часть кода в компьютере.
  7. 7. Способ по п.1, в котором программный код зашифрован, причем способ дополнительно содержит этап, на котором:
    (й) дешифруют каждый блок кода во внешнем устройстве перед исполнением.
  8. 8. Способ по п.1, дополнительно содержащий этап, на котором:
    (й) после исполнения последнего блока кода, посредством внешнего устройства посылают информацию о состоянии обратно в компьютер для последующего использования по меньшей мере первой частью программного кода.
  9. 9. Способ по п.1, в котором внешнее устройство представляет собой микропроцессорную карту.
  10. 10. Способ исполнения программного кода по меньшей мере одной программы в многопроцессорной компьютерной среде, причем каждая программа включает в себя (ί) первую часть программного кода, предназначенную для исполнения в компьютере, и (ίί) вторую часть программного кода, предназначенную для исполнения в одном или больше внешних устройств, которые соединены с возможностью обмена данными с компьютером, причем программный код второй части разделен на множество различных блоков кода, выполненных с возможностью независимого исполнения, каждое внешнее устройство включает в себя (ί) вход/выход, для обмена данными с компьютером, (ίί) процессор и (ίίί) запоминающее устройство, при этом способ содержит этапы, на которых:
    (a) выполняют автоматическую загрузку первого блока кода в запоминающее устройство внешнего устройства во время исполнения второй части программного кода;
    (b) исполняют первый блок кода во внешнем устройстве с использованием только процессора и запоминающего устройства внешнего устройства и (c) выполняют последовательную и автоматическую загрузку и исполнение остальных блоков программного кода во внешнем устройстве, при этом последующие блоки кода перезаписывают ранее загруженные блоки кода в запоминающем устройстве внешнего устройства.
    - 10 006639
  11. 11. Способ по п.10, в котором вторая часть программного кода представляет собой прикладную программу (апплет) микропроцессорной карты и каждый из упомянутых различных блоков кода представляет собой функции или методы.
  12. 12. Способ по п.11, в котором прикладная программа включает в себя множество апплетов, распределенных в программе, и для каждого апплета выполняются этапы (а)-(с).
  13. 13. Способ по п.10, в котором вторая часть программного кода шифрована, при этом способ дополнительно содержит этап, на котором:
    (й) дешифруют каждый блок кода во внешнем устройстве перед исполнением.
  14. 14. Способ по п.10, дополнительно содержащий этап, на котором:
    (й) после исполнения программного кода, посредством внешнего устройства посылают информацию о состоянии обратно в компьютер для последующего использования по меньшей мере первой частью программного кода.
  15. 15. Способ по п.10, в котором внешнее устройство представляет собой микропроцессорную карту.
  16. 16. Способ подготовки программного кода программы для исполнения во внешнем устройстве, которое соединено с возможностью обмена данными с компьютером, включающим в себя запоминающее устройство, предназначенное для хранения программного кода, при этом способ содержит этап, на котором разделяют программный код на множество различных блоков кода, которые могут быть последовательно загружены и независимо исполнены во внешнем устройстве.
  17. 17. Способ по п.16, в котором программный код представляет собой прикладную программу (апплет) микропроцессорной карты и каждый из упомянутых различных блоков кода представляет собой функции или методы.
  18. 18. Способ по п.16, в котором программа содержит (1) первую часть программного кода, предназначенную для исполнения в компьютере, и (и) вторую часть программного кода, предназначенную для исполнения во внешнем устройстве, которое соединено с возможностью обмена данными с компьютером, и только вторую часть программного кода разделяют на множество различных блоков кода, которые могут быть последовательно загружены во внешнее устройство и независимо исполнены в нем.
  19. 19. Способ подготовки исходного кода программы, содержащий этап, на котором создают предварительно скомпилированный исходный код из первоначального исходного кода, при этом по меньшей мере часть предварительно скомпилированного исходного кода представляет собой исходный код, имеющий вызов функции с аргументами, которые представляют собой зашифрованный машинный код, и предварительно скомпилированный исходный код имеет тот же синтаксис языка, что и первоначальный исходный код.
  20. 20. Способ по п.19, в котором предварительно скомпилированный исходный код включает в себя распределенные первые и вторые части предварительно скомпилированного исходного кода, при этом только вторые части представляют собой исходный код, имеющий вызов функции с аргументами, которые представляют собой зашифрованный машинный код.
  21. 21. Способ получения защищенного компьютерного кода из первоначального исходного кода программы, причем первоначальный исходный код включает в себя распределенные первые части и вторые части кода программы, при этом способ содержит создание предварительно скомпилированной версии первоначального исходного кода посредством этапов, на которых:
    (a) преобразуют каждую вторую часть в вызов функции с аргументами, которые представляют собой зашифрованный исполняемый машинный код; и (b) копируют каждую первую часть в предварительно скомпилированную версию, причем предварительно скомпилированная версия первоначального исходного кода имеет тот же синтаксис языка, что и первоначальный исходный код.
  22. 22. Способ по п.21, в котором каждая из вторых частей первоначального исходного кода содержит ассоциированную метку, и на этапе (а) метки используют для идентификации каждой второй части для преобразования.
  23. 23. Способ по п.21, дополнительно содержащий этап, на котором:
    (c) выполняют повторную компиляцию предварительно скомпилированной версии первоначального исходного кода в единую интегрированную исполняемую программу машинного кода, содержащую вызовы функций, которые ассоциированы с зашифрованным исполняемым машинным кодом.
  24. 24. Способ исполнения одного или больше блоков защищенного программного кода в программе машинного кода в среде с множеством процессоров, причем каждый блок защищенного программного кода имеет вызов функции с аргументами, которые представляют собой зашифрованный исполняемый машинный код, при этом способ содержит этапы, на которых:
    (a) исполняют по меньшей мере части программы машинного кода в первом процессоре и (b) при достижении вызова функции для блока защищенного программного кода дешифруют и исполняют ассоциированный защищенный программный код во втором процессоре.
  25. 25. Способ по п.24, в котором этап (Ь) дополнительно содержит этап, на котором при достижении вызова функции для защищенного блока программного кода посылают ассоциированный защищенный программный код во второй процессор для дешифрования и исполнения в нем.
    - 11 006639
  26. 26. Способ по п.24, дополнительно содержащий этап, на котором:
    (с) после инициирования этапа (а) загружают все блоки защищенного программного кода в запоминающее устройство, ассоциированное со вторым процессором, для последующего дешифрования и исполнения в нем при достижении каждого из соответствующих вызовов функций.
  27. 27. Способ по п.24, в котором второй процессор представляет собой микропроцессорную карту.
EA200500121A 2002-07-01 2003-05-22 Способ компиляции и исполнения прикладных программ в многопроцессорной среде EA006639B1 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
NO20023194A NO20023194D0 (no) 2002-07-01 2002-07-01 Fremgangsmåte og apparatur for eksekvering av programvareapplikasjoner i et multiprosessormiljö
PCT/NO2003/000167 WO2004003861A1 (en) 2002-07-01 2003-05-22 Process for compiling and executing software applications in a multi-processor environment

Publications (2)

Publication Number Publication Date
EA200500121A1 EA200500121A1 (ru) 2005-08-25
EA006639B1 true EA006639B1 (ru) 2006-02-24

Family

ID=19913784

Family Applications (1)

Application Number Title Priority Date Filing Date
EA200500121A EA006639B1 (ru) 2002-07-01 2003-05-22 Способ компиляции и исполнения прикладных программ в многопроцессорной среде

Country Status (6)

Country Link
US (1) US20060130128A1 (ru)
EP (1) EP1535250A1 (ru)
AU (1) AU2003232692A1 (ru)
EA (1) EA006639B1 (ru)
NO (1) NO20023194D0 (ru)
WO (1) WO2004003861A1 (ru)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1632828A (zh) * 2003-12-24 2005-06-29 劲永国际股份有限公司 一种对资料加密保护的usb界面资料处理卡
US8321923B2 (en) * 2004-03-04 2012-11-27 Gemalto Sa Secure sharing of resources between applications in independent execution environments in a retrievable token (e.g. smart card)
US7945904B2 (en) 2005-08-22 2011-05-17 Microsoft Corporation Embedding expression in XML literals
JP4818279B2 (ja) * 2005-12-22 2011-11-16 富士通株式会社 プログラム処理装置、プログラム処理方法及びプログラム
US20080183626A1 (en) * 2007-01-31 2008-07-31 Francisco Romero Software license agreement management based on temporary usage
WO2009108245A2 (en) * 2007-12-21 2009-09-03 University Of Virginia Patent Foundation System, method and computer program product for protecting software via continuous anti-t ampering and obfuscation transforms
US8307215B2 (en) 2008-01-23 2012-11-06 Noam Camiel System and method for an autonomous software protection device
US8253531B2 (en) * 2009-03-26 2012-08-28 International Business Machines Corporation On chip verification and consequent enablement of card OS operation in smart cards
US20130283396A1 (en) * 2009-07-30 2013-10-24 Rascalim Software Security Ltd. System and method for limiting execution of software to authorized users
US8468592B2 (en) * 2009-07-31 2013-06-18 Google Inc. Native code module security for 64-bit instruction set architectures
CN101710295A (zh) * 2009-10-10 2010-05-19 深圳市江波龙电子有限公司 一种智能存储卡与外部主机设备的通信***及方法
JP5775523B2 (ja) * 2009-11-18 2015-09-09 アイセレロ エルエルシー メモリカードを有するクライアントデバイス用のクラウドコンピューティングサービス方法およびシステム
US8464233B2 (en) * 2010-06-21 2013-06-11 Microsoft Corporation Compile time interpretation of markup codes
US9195810B2 (en) * 2010-12-28 2015-11-24 Microsoft Technology Licensing, Llc Identifying factorable code
JP5092074B1 (ja) 2011-04-28 2012-12-05 楽天株式会社 決済モジュール、決済方法、プログラム及び情報記録媒体
US8543841B2 (en) * 2011-06-30 2013-09-24 Oracle International Corporation Secure hosted execution architecture
US10104046B2 (en) * 2011-09-26 2018-10-16 Mo-Dv, Inc. Content distribution systems and methods
US9165332B2 (en) 2012-01-27 2015-10-20 Microsoft Technology Licensing, Llc Application licensing using multiple forms of licensing
US8898769B2 (en) 2012-11-16 2014-11-25 At&T Intellectual Property I, Lp Methods for provisioning universal integrated circuit cards
US8959331B2 (en) * 2012-11-19 2015-02-17 At&T Intellectual Property I, Lp Systems for provisioning universal integrated circuit cards
US9036820B2 (en) 2013-09-11 2015-05-19 At&T Intellectual Property I, Lp System and methods for UICC-based secure communication
US9124573B2 (en) 2013-10-04 2015-09-01 At&T Intellectual Property I, Lp Apparatus and method for managing use of secure tokens
US9208300B2 (en) 2013-10-23 2015-12-08 At&T Intellectual Property I, Lp Apparatus and method for secure authentication of a communication device
US9240994B2 (en) 2013-10-28 2016-01-19 At&T Intellectual Property I, Lp Apparatus and method for securely managing the accessibility to content and applications
US9313660B2 (en) 2013-11-01 2016-04-12 At&T Intellectual Property I, Lp Apparatus and method for secure provisioning of a communication device
US9240989B2 (en) 2013-11-01 2016-01-19 At&T Intellectual Property I, Lp Apparatus and method for secure over the air programming of a communication device
US9413759B2 (en) 2013-11-27 2016-08-09 At&T Intellectual Property I, Lp Apparatus and method for secure delivery of data from a communication device
CN104793964B (zh) * 2014-01-16 2018-10-02 国民技术股份有限公司 java卡及其应用更新方法、应用于java卡的终端、智能卡***
US9713006B2 (en) 2014-05-01 2017-07-18 At&T Intellectual Property I, Lp Apparatus and method for managing security domains for a universal integrated circuit card
US10419401B2 (en) 2016-01-08 2019-09-17 Capital One Services, Llc Methods and systems for securing data in the public cloud
US11520913B2 (en) * 2018-05-11 2022-12-06 International Business Machines Corporation Secure execution support for A.I. systems (and other heterogeneous systems)

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5923884A (en) * 1996-08-30 1999-07-13 Gemplus S.C.A. System and method for loading applications onto a smart card
ES2184066T3 (es) * 1996-10-25 2003-04-01 Schlumberger Systems & Service Uso de un lenguaje de programacion de alto nivel con microcontrolador.
US6317832B1 (en) * 1997-02-21 2001-11-13 Mondex International Limited Secure multiple application card system and process
US6575372B1 (en) * 1997-02-21 2003-06-10 Mondex International Limited Secure multi-application IC card system having selective loading and deleting capability
DE69827405T2 (de) * 1997-03-24 2005-05-19 Visa International Service Association, Foster City System und verfahren für eine mehrzweckchipkarte die eine nachträgliche speicherung einer anwendung auf dieser karte ermöglicht
US6328217B1 (en) * 1997-05-15 2001-12-11 Mondex International Limited Integrated circuit card with application history list
US6488211B1 (en) * 1997-05-15 2002-12-03 Mondex International Limited System and method for flexibly loading in IC card
US6164549A (en) * 1997-05-15 2000-12-26 Mondex International Limited IC card with shell feature
US6220510B1 (en) * 1997-05-15 2001-04-24 Mondex International Limited Multi-application IC card with delegation feature
US6385723B1 (en) * 1997-05-15 2002-05-07 Mondex International Limited Key transformation unit for an IC card
US6254098B1 (en) * 1998-03-02 2001-07-03 Francis H Kirkpatrick Practical four-dimensional tic-tac-toe
SG92632A1 (en) * 1998-03-30 2002-11-19 Citicorp Dev Ct Inc Method and system for managing applications for a multi-function smartcard
US6010417A (en) * 1998-05-15 2000-01-04 Young Bat Co., Inc. Baseball bat
US6230627B1 (en) * 1998-10-22 2001-05-15 William T. Poe Method and apparatus for removing abandoned offshore fixed platform
US7200842B1 (en) * 1999-02-02 2007-04-03 Sun Microsystems, Inc. Object-oriented instruction set for resource-constrained devices
WO2000068902A1 (en) * 1999-05-11 2000-11-16 Microsoft Corporation Method and apparatus for sharing data files among runtime environment applets in an integrated circuit card

Also Published As

Publication number Publication date
NO20023194D0 (no) 2002-07-01
EA200500121A1 (ru) 2005-08-25
WO2004003861A1 (en) 2004-01-08
AU2003232692A1 (en) 2004-01-19
US20060130128A1 (en) 2006-06-15
EP1535250A1 (en) 2005-06-01

Similar Documents

Publication Publication Date Title
EA006639B1 (ru) Способ компиляции и исполнения прикладных программ в многопроцессорной среде
KR100329063B1 (ko) 마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용
RU2289157C2 (ru) Способ и система распределенной разработки программы для программируемого портативного носителя информации
EP1410150B1 (en) Protecting software applications against software piracy
US20160364707A1 (en) Potentate: A Cryptography-Obfuscating, Self-Policing, Pervasive Distribution System For Digital Content
US6834799B2 (en) IC card with capability of having plurality of card managers installed
CN109583152A (zh) 用于隔离的密码强制执行能力
US20070089090A1 (en) Method and system for protecting source code
CN101980160B (zh) 一种.net程序加密后的执行方法
Rosenmüller et al. Flexible feature binding in software product lines
EP1901190A1 (en) Method and system for managing access to add-on data files
BRPI0614089A2 (pt) método para evitar engenharia reversa de software, modificação não autorizada e interceptação de dados de tempo de execução
KR101544731B1 (ko) 실행형 컨텐츠의 분리 실행이 가능한 저장 장치 및 그의 네이티브 실행 환경 구현 장치
WO2011013120A1 (en) System and method for limiting execution of software to authorized users
CN109413189B (zh) 一种基于底层转译的电子交易***
US20240095344A1 (en) Computer implemented method
CN110597496B (zh) 应用程序的字节码文件获取方法及装置
Abrath et al. Code renewability for native software protection
KR101436741B1 (ko) 프로그램 보안 솔루션 적용 방법 및 시스템
KR101444070B1 (ko) 저장장치에서 호스트 단말의 메모리 이용 시스템 및 방법, 그 호스트 단말 및 저장장치, 이를 위한 기록매체
CN112241519A (zh) 一种软件版权保护的实现方法
GB2579072A (en) Computer implemented method
CN105393216A (zh) 运行时内存调节
Abrath et al. $\Delta $ Δ Breakpad: Diversified Binary Crash Reporting
Hansen Flow logic for language-based safety and security

Legal Events

Date Code Title Description
MM4A Lapse of a eurasian patent due to non-payment of renewal fees within the time limit in the following designated state(s)

Designated state(s): AM AZ BY KZ KG MD TJ TM RU