Способ и система распределенной разработки программы для программируемого портативного носителя информации

Иллюстрации

Показать все

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

Реферат

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

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

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

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

Чип-карты, допускающие возможность дозагрузки в них исполняемого программного кода, а также способ такой дозагрузки исполняемых программных кодов в чип-карты описаны, например, в "Handbuch der Chipkarten", W.Ranki, W.Effing, изд-во Hansa Verlag München, 3-е изд. В соответствии с этой публикацией разработка программы полностью происходит в фоновой системе. Разработанный исполняемый программный код передается в чип-карту через защищенный, например путем взаимной аутентификации, интерфейс. По соображениям безопасности загрузку исполняемого программного кода в чип-карту предпочтительно осуществлять в режиме "он-лайн" после однозначной идентификации и соотнесения между собой фоновой системы, интерфейсов, операционной системы карты и ее микропроцессора. С целью обеспечить возможность управления содержащими идентификационную информацию базами данных в фоновых системах при одновременном сохранении максимально возможной степени защиты информации разрешения на формирование исполняемого программного кода в фоновых системах выдаются эмитентами карт лишь при наличии всей необходимой документации, а все выданные разрешения заносятся в соответствующий список. В результате существенно ограничивается обеспечиваемая этим способом принципиальная возможность разработки исполняемых программных кодов для чип-карт самим пользователем.

В настоящее время известно несколько основанных на различных алгоритмах шифрования методов защиты данных, которыми между собой обмениваются два компьютера по сетям передачи данных общего пользования, в частности SSL-протокол (от англ. "Secure Socket Layer", протокол защищенных сокетов), система PGP (от англ. "Pretty Good Privacy", "надежная конфиденциальность"), механизм безопасной передачи сообщений ("Secure Messaging") или SMIME-протокол. Методы подобного типа используются и в описанном ниже предлагаемом в изобретении способе, однако как таковые они не являются его объектом. В целом же детальное описание этих методов, включая особенности их криптологической реализации, можно найти в многочисленных, посвященных этой тематике литературных источниках, а также в сети Интернет. То же самое относится и к обычным, используемым в сочетании с различными методами защиты данных средствам, таким, например, как шифрование данных на основе стандарта 3DES или формирование кодов аутентификации сообщений (МАС-кодов от англ. "Message Authentication Code").

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

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

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

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

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

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

Преимущество предлагаемого в изобретении способа состоит в том, что разработкой исполняемых программ для носителя информации в принципе могут заниматься любые пользователи без необходимости идентификации того или иного пользователя и управления его действиями. Участие эмитента носителя информации в процессе разработки каждой программы всегда обеспечивает защиту вновь разрабатываемых программ, а также всей системы в целом от несанкционированного доступа. Оставление функций по компиляции за эмитентом носителя информации позволяет избежать необходимости в передаче пользователю важного и существенного для обеспечения безопасности "ноу-хау".

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

Формальная верификация вновь разработанных программ, выполняемая эмитентом, т.е. в безопасных или защищенных условиях, позволяет далее исключительно эффективно и надежно препятствовать проникновению агрессивных программных кодов в системы, для доступа к которым используется носитель информации. Еще одно преимущество предлагаемого в изобретении способа состоит в том, что компиляция всех вновь составляемых пользователями исполняемых программ осуществляется компилятором самой последней версии. При этом предлагаемый в изобретении способ можно осуществлять и в режиме "он-лайн", и в режиме "офф-лайн". Более того, предлагаемый в изобретении способ предоставляет эмитентам носителей информации возможность полностью передать пользователям функции по разработке необходимых им готовых к выполнению прикладных программ и поставлять им носители информации только в предварительно укомплектованном виде. Помимо этого обусловленное распределенной разработкой программ обязательное вовлечение эмитента в процесс разработки программы позволяет вводить методы расчета за пользование его ресурсами, использующие определенную систему тарификации, учитывающую, например, количество или тип загруженных в носитель информации исполняемых программ.

Ниже изобретение более подробно рассмотрено на примере одного из вариантов его осуществления со ссылкой на прилагаемые чертежи, на которых показано:

на фиг.1 - схематичное изображение системы для разработки программ,

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

на фиг.3 - схематичное изображение структуры второго компьютера,

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

на фиг.5-7 - блок-схемы, иллюстрирующие различные варианты осуществления процесса разработки программы, и

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

На фиг.1 схематично показана основная структура системы распределенной разработки программы для программируемого портативного носителя информации. В этой системе имеются предназначенный для обмена данными с портативным носителем 10 информации первый компьютер 20 и соединенный с ним через линию передачи данных второй компьютер 30.

Первый компьютер 20 находится у пользователя, например установлен в банке, в страховой компании, на предприятии розничной торговли, в медицинском учреждении либо в иной аналогичной организации или же у поставщика услуг (провайдера), который по поручению указанных организаций и учреждений разрабатывает программы для установленного у них оборудования. Этот первый компьютер имеет контактный или бесконтактный первый интерфейс 24, который может быть выполнен, например, в виде контактной площадки, катушки или оптического датчика сигналов и который обеспечивает возможность обмена данными с портативным носителем 10 информации. Через другой интерфейс 26 этот первый компьютер подсоединен к линии 28 передачи данных. Тем самым пользовательский компьютер 20 через оба его интерфейса 24, 26 соединяет носитель 10 информации с линией 28 передачи данных. При этом пользовательский компьютер 20 обеспечивает выполнение некоторых дополнительных функций, связанных с носителем 10 информации. Так, в частности, на этом компьютере выполняется кратко называемая в последующем описании редактором программа 22 редактирования, позволяющая разрабатывать исходные тексты программ для носителя 10 информации.

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

Второй компьютер 30 обычно находится у эмитента портативных носителей 10 информации либо у уполномоченной компании-оператора, под управлением которой осуществляется рассмотренный в настоящем описании способ. Обычно этот компьютер обладает существенно большей по сравнению с пользовательским компьютером 20, соответственно портативным носителем 10 информации вычислительной мощностью. При этом конструктивно этот второй компьютер 30 не обязательно должен быть выполнен в виде единого устройства. Более того, он может быть выполнен в виде системы с распределенными компонентами, соединенными между собой специальной сетью передачи данных. Для хранения данных, относящихся к наиболее важным для обеспечения безопасности функций, соответственно для выполнения этих функций могут использоваться аппаратные модули защиты от несанкционированного доступа. Второй компьютер 30 подсоединен к линии 28 передачи данных через имеющийся у него интерфейс 34. Второй компьютер 30 предназначен главным образом для выполнения компилирующей программы 310, с помощью которой созданный на языке программирования высокого уровня исходный текст программы транслируется в машинный (объектный) код, и поэтому в последующем описании этот компьютер называется компилирующим сервером.

Линия 28 передачи данных обычно представляет собой сеть передачи данных и может быть реализована прежде всего в виде линии передачи данных через сеть Интернет. Хотя на фиг.1 и показана только одна соединяющая между собой два компонента (компьютеры 20, 30) линия передачи данных, такая линия 28 передачи данных, называемая в последующем описании сетью передачи данных, может также соединять несколько пользовательских компьютеров 20 с одним или несколькими компилирующими серверами 30.

На фиг.2 схематично показана структура интегральной схемы 12 чип-карты 10, предварительно укомплектованной определенными инструментальными программными средствами. Эта интегральная схема 12 имеет типичную для процессоров чип-карт архитектуру и содержит центральный процессор (ЦП) 100, энергозависимую оперативную (рабочую) память 102, а также энергонезависимую память 104, которая состоит из энергонезависимой постоянной памяти и энергонезависимой перезаписываемой памяти. Обычно энергозависимая оперативная память 102 представляет собой запоминающее устройство с произвольной выборкой (ЗУПВ), энергонезависимая постоянная память представляет собой постоянное запоминающее устройство (ПЗУ), а энергонезависимая перезаписываемая память представляет собой электрически стираемое программируемое ПЗУ (ЭСППЗУ). Вместо указанных выше могут использоваться и запоминающие устройства любых иных типов, обладающие аналогичными функциональными возможностями. Центральный процессор 100 также соединен с интерфейсом 14.

В энергонезависимой памяти 104 хранится некоторое количество необходимых для использования носителя 10 информации инструментальных программных средств, заложенных в нее на стадии предварительного комплектования еще до передачи носителя 10 информации пользователю. Под такими инструментальными программными средствами в контексте настоящего изобретения подразумеваются все не доступные для изменения пользователем программы, подпрограммы или наборы данных, используемые по мере необходимости для выполнения определенных задач по обработке данных. При этом на стадии предварительного комплектования в указанной памяти сохраняется в первую очередь программное обеспечение, которым определяется не зависящая от конкретной реализации базовая конфигурация 110 чип-карты, всегда являющаяся однотипной для всех чип-карт. Такая базовая конфигурация чип-карты включает по меньшей мере операционную систему 111, базовый программный код 112 для реализации приложений, которые заложены в память чип-карты 10 уже при ее передаче пользователю, а также область 113 памяти для записи дозагружаемого в нее в последующем исполняемого программного кода.

Помимо этого в памяти чип-карты сохраняется согласованный с конкретно выбранным вариантом реализации набор следующих инструментальных программных средств: индивидуальные для интегральной схемы 12 и тем самым для чип-карты 10 идентификационные данные 114, позволяющие однозначно идентифицировать чип-карту, например серийный номер, программа 116 для выполнения алгоритмов асимметричного шифрования, программа 118 для выполнения алгоритмов симметричного шифрования, программа 120 для обмена данными, основанного на принципе безопасной передачи сообщений (Secure Messaging), программа 122 для обмена данными через сеть 28 передачи данных в соответствии с SSL-протоколом, индивидуальный для чип-карты ключ 124 для создания цифровой подписи, индивидуальный для чип-карты симметричный ключ 126, открытый ключ 128 взаимодействующего с чип-картой 10 компилирующего сервера 30, секретный ключ 130 карты, используемый при выполнении алгоритма асимметричного шифрования, сертификат 132, подтверждающий взаимную принадлежность между хранящимися в памяти карты открытыми ключами и идентификационными данными с цифровой подписью эмитента, сохраняемый в отдельной области памяти сеансовый ключ 134, который в отличие от указанных выше ключей каждый раз создается вновь при каждом возобновлении обмена данными с компилирующим сервером 30, а также счетчик 136 команд. Каждое из указанных выше инструментальных программных средств может присутствовать на чип-карте и в нескольких экземплярах. Сказанное относится прежде всего к перечисленным выше ключам, сертификатам и счетчикам команд.

На фиг.3 схематично показана структура компилирующего сервера 30 с используемыми при разработке программ для носителя информации программами и инструментальными программными средствами. Ядро компилирующего сервера 30 образует центральный процессор 300, который через интерфейс 34 соединен с сетью 28 передачи данных, по которой он обменивается данными с пользовательским компьютером 20 и через него с чип-картой 10. Этот центральный процессор 300 взаимодействует также с энергозависимой оперативной памятью 302, которая обычно выполнена в виде ЗУПВ, а также с энергонезависимой памятью 304, которая обычно состоит из ПЗУ и массовой памяти, например жесткого диска.

В памяти 304 хранятся необходимые для осуществления предлагаемого в изобретении способа инструментальные программные средства. На фиг.3 для наглядности показаны все инструментальные программные средства, которые могут упоминаться в настоящем описании. Выбор тех или иных фактически необходимых инструментальных программных средств зависит, как и в случае чип-карты 10, от конкретно выбранной для осуществления предлагаемого в изобретении способа реализации. В целом же в памяти 304 могут храниться следующие инструментальные программные средства: обозначенная на фиг.3 как компилятор компилирующая программа 310 для трансляции исходного текста программы в машинный (объектный) код, обозначенная на фиг.3 как компоновщик программа-компоновщик 312 для встраивания уже разработанного программного кода в контекст вновь разработанной программы, библиотека 318 кодов, содержащая программный код уже имеющихся программ и разделов программ, банк 320 данных для хранения относящихся к определенным пользователям программных кодов, программа-отладчик 316 для проверки разработанной программы на готовность к выполнению, программа 321 для формальной верификации разработанных программ и/или их исходных текстов, один или несколько основных ключей 324, соответствующих одному или нескольким индивидуальным для каждой чип-карты симметричным ключам 126, один или несколько основных ключей 326, соответствующих индивидуальным для каждой чип-карты ключам 124 для формирования кода защиты данных, прежде всего МАС-кодов, один или несколько открытых ключей 328 сервера для выполнения алгоритмов асимметричного шифрования, один или несколько соответствующих секретных ключей 330 сервера, один или несколько открытых ключей 332 карты или карт для выполнения алгоритмов асимметричного шифрования, один или несколько сертификатов 334 сервера, один или несколько счетчиков 338 команд, а также список 336 сертификатов, сформированных при изготовлении предварительно укомплектованной чип-карты 10 и сохраненных на чип-карте 10 в области 132 ее памяти. Помимо этого в памяти 304 содержится список 340 пользователей с идентификационными данными, позволяющими однозначно идентифицировать чип-карту, при этом в качестве таких идентификационных данных, используемых для идентификации чип-карт 10, могут использоваться, например, их серийные номера.

При практической реализации предлагаемого в изобретении способа на компилирующем сервере 30 целесообразно устанавливать лишь фактически необходимые инструментальные программные средства из числа указанных выше и соответственно не устанавливать не требующиеся для последующей работы инструментальные программные средства.

Назначение и использование заложенных в предварительно укомплектованную чип-карту 10, соответственно в компилирующий сервер 30 инструментальных программных средств поясняется ниже со ссылкой на фиг.4, где схематично проиллюстрирован основной процесс распределенной разработки программ, а также со ссылкой на фиг.5-7, где схематично проиллюстрированы три возможных варианта процесса распределенной разработки программ.

На фиг.4 схематично показан основной процесс распределенной разработки программ. Сначала на шаге 400, который соответствует подготовительной стадии, в распоряжение пользователя предоставляются предварительно укомплектованная необходимыми инструментальными программными средствами чип-карта 10, а также редактор 22. С использованием этого редактора 22 пользователь на следующем шаге 402 составляет на своем компьютере 20 программу в исходном тексте Q. После этого на шаге 404 этот исходный текст программы снабжается с использованием соответствующих алгоритмов шифрования обеспечивающей его безопасную пересылку по сети передачи данных защитой и затем на шаге 406 переводится в пригодный для передачи, т.е. транспортный, код Т, TQ, TQSSL. На следующем шаге 408 этот транспортный код Т, TQ, TQSSL передается в компилирующий сервер 30.

Компилирующий сервер 30 на шаге 410 путем дешифрования полученных данных снимает обеспечивающую их безопасную пересылку по сети передачи данных защиту и затем на шаге 412 восстанавливает содержащийся в транспортном коде Т, TQ, TQSSL исходный текст Q программы до первоначального вида. Далее на шаге 414 этот исходный текст Q программы подвергается в компилирующем сервере компиляции, компоновке (редактированию связей) и верификации. Результатом этих операций является получаемый на шаге 416 готовый к выполнению программный код С, который на следующем шаге 418 вновь снабжается обеспечивающей его безопасную пересылку по сети передачи данных защитой. С этой целью этот программный код на шаге 420 переводится с использованием соответствующих алгоритмов шифрования, которые в принципе не обязательно должны соответствовать использовавшимся ранее на пользовательском компьютере 20, в промежуточный или переходный формат U, USM, USSL. В этом промежуточном формате программный код передается на шаге 422 через пользовательский компьютер 20 в чип-карту 10.

В чип-карте в свою очередь с использованием заложенных в нее на стадии предварительного комплектования инструментальных программных средств из поступившего в пользовательский компьютер 20 в переходном формате U, USM, USSL транспортного кода на шаге 424 вновь извлекается путем его дешифрования готовый к выполнению программный код С, который в завершение на шаге 426 сохраняется в ее памяти.

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

В показанном на фиг.6 варианте данные, обмен которыми происходит между пользовательским компьютером 20 и компилирующим сервером 30 через сеть 28 передачи данных, защищаются с помощью SSL-протокола, тогда как данные, пересылаемые напрямую из компилирующего сервера 30 в чип-карту 10 и в обратном направлении, защищаются с помощью механизма безопасной передачи сообщений. Этот вариант также пригоден для систем, используемые в которых чип-карты 10 поддерживают только алгоритмы симметричного шифрования.

В показанном на фиг.7 варианте пользовательский компьютер 20 в основном выполняет функцию посредника между чип-картой 10 и компилирующим сервером 30. В этом случае защита данных, передаваемых между чип-картой 10 и компилирующим сервером 30, обеспечивается за счет установления напрямую защищенного или безопасного сквозного соединения между чип-картой 10 и компилирующим сервером 30 с применением SSL-протокола.

В таблице 1 в наглядном и систематизированном виде приведена информация о применимости трех рассмотренных более подробно ниже со ссылкой на фиг.5, 6 и 7 вариантов процесса распределенной разработки программы в зависимости от особенностей передачи данных, требований к комплектации чип-карты 10 и типа защиты передаваемых данных.

Таблица 1
ВариантПередача данныхТребования к чип-картеТип защиты передаваемых данных
фиг.5непрямаятолько алгоритмы симметричного шифрованияшифрование и MAC-код, обеспечиваемые чип-картой
фиг.6прямаяалгоритмы симметричного и/или асимметричного шифрованиябезопасная передача сообщений, обеспечиваемая чип-картой
фиг.7прямаяалгоритмы симметричного и асимметричного шифрованияпередача по SSL-протоколу, обеспечиваемая чип-картой

В левой части каждой из фиг.5, 6 и 7 показаны действия, выполняемые компилирующим сервером 30, а в правой части - действия, выполняемые пользовательским компьютером 20, соответственно чип-картой 10, при этом буквой "П" обозначены действия, выполняемые пользовательским компьютером 20, а буквой "К" - действия, выполняемые чип-картой 10.

Показанному на фиг.5 процессу собственно разработки программ предшествует подготовительная стадия. На этой стадии эмитентом в распоряжение пользователя предоставляются предварительно укомплектованная чип-карта 10, чему соответствует шаг 500, а также редактор 22 для установки на его компьютере 20, чему соответствует шаг 502. Помимо компонентов базовой конфигурации 110 в предварительно укомплектованной чип-карте 10 предусмотрены, соответственно в нее загружены следующие компоненты: идентификационные данные ИД, хранящиеся в области 114 памяти, программа 118 для выполнения алгоритмов симметричного шифрования, например алгоритма шифрования данных на основе стандарта 3DES, по меньшей мере один хранящийся в области 124 памяти индивидуальный для чип-карты ключ КМАС для формирования кода защиты данных, предпочтительно в виде МАС-кода, по меньшей мере один хранящийся в области 126 памяти ключ KENC для симметричного шифрования, а также область 134 памяти для хранения по меньшей мере двух сеансовых ключей SKENC, SKMAC. Помимо этого на предварительно укомплектованной чип-карте 10 организовано по меньшей мере два счетчика 136 команд, показания которых обозначаются как SEQC, SEQH. При этом счетчик команд SEQC служит для выполнения вычислений, связанных с формированием сеансовых ключей SKENC, SKMAC, используемых для защищенной или безопасной передачи исходных текстов Q программ от пользовательского компьютера 20 в компилирующий сервер 30, а счетчик команд SEQH служит для для выполнения вычислений, связанных с формированием сеансовых ключей SKENC, SK.MAC, используемых для защищенной или безопасной передачи программного кода С от компилирующего сервера 30 в пользовательский компьютер 20.

Для каждой выданной эмитентом чип-карты 10 на компилирующем сервере 30 организуется два счетчика 338 команд, показания которых обозначаются как SEQC, SEQH. Показания этих счетчиков команд SEQC, SEQH всегда должны соответствовать показаниям соответствующих счетчиков 136, организованных на соответствующей чип-карте 10, чтобы компилирующий сервер 30 мог вычислять сеансовые ключи SKENC, SKMAC на основе тех же правил, которые используются и чип-картой 10. Для повышения безопасности при каждой передаче исходных текстов Q программ, соответственно программных кодов С используются новые сеансовые ключи SKENC, SKMAC. С этой целью перед каждым последующим вычислением сеансовых ключей SKENC, SKMAC увеличиваются показания SEQc и SEQH счетчиков 136, 338 команд, организованных на чип-карте 10 и компилирующем сервере 30 соответственно.

Редактор 22 позволяет составлять программы в исходном тексте Q, например на языке программирования высокого уровня. В предпочтительном варианте подобный редактор поддерживает графические средства разработки программ с вводом данных в диалоговом режиме и предоставляет программисту непосредственно задействуемые при вводе данных вспомогательные средства разработки программ, такие как проверка синтаксиса или интеграция программных интерфейсов в библиотеку кодов.

С использованием э