Код документа: RU2289157C2
Настоящее изобретение относится к способу защищенной от несанкционированного доступа разработки исполняемого программного кода для портативных программируемых носителей информации, предпочтительно в виде чип-карт (карточек со встроенной микросхемой).
Из патента 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 и типа защиты передаваемых данных.
В левой части каждой из фиг.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, например на языке программирования высокого уровня. В предпочтительном варианте подобный редактор поддерживает графические средства разработки программ с вводом данных в диалоговом режиме и предоставляет программисту непосредственно задействуемые при вводе данных вспомогательные средства разработки программ, такие как проверка синтаксиса или интеграция программных интерфейсов в библиотеку кодов.
С использованием этого редактора 22 пользователь при наличии в его распоряжении чип-карты 10 в предварительно укомплектованном виде и компьютера 20 составляет на шаге 504 предназначенную для ввода в память чип-карты 10 программу в исходном тексте Q. Исходный текст программы предпочтительно составлять на языке программирования высокого уровня, однако в принципе его можно составлять и в любом ином формате. По завершении процесса составления исходного текста Q программы пользователь дает с помощью редактора 22 соответствующую команду чип-карте 10 на шифрование составленного им исходного текста Q программы и его защиту от изменений с помощью МАС-кода. С этой целью чип-карта 10 сначала на шаге 506 увеличивает показание SEQC ее счетчика команд и, например, с использованием алгоритма симметричного шифрования 3DES формирует сеансовые ключи SKENC, SKMAC. После этого на шаге 508 чип-карта с помощью сеансового ключа SKENC шифрует полученный от редактора 22 через интерфейсы 24, 14 исходный текст Q программы с получением промежуточного кода Q' и затем с помощью сеансового ключа SKMAC вычисляет для этого промежуточного кода Q' МАС-код. Затем чип-карта 10 передает через интерфейсы 24, 14 промежуточный код Q' и МАС-код обратно в редактор 22.
В последующем этот редактор на шаге 509 считывает хранящиеся в области 114 памяти этой чип-карты 10 ее идентификационные данные ИД и вместе с промежуточным кодом Q' и МАС-кодом объединяет их в транспортный код Т. На шаге 510 этот сформированный подобным путем транспортный код Т передается пользовательским компьютером 20 по сети 28 передачи данных в компилирующий сервер 30. При этом передача транспортного кода Т может происходить любым возможным образом с использованием незащищенной передающей либо записывающей среды. Так, например, транспортный код Т можно передавать эмитенту по электронной почте или пересылать в его адрес обычной почтой на дискете. Наряду с этим транспортный код Т можно пересылать на компилирующий сервер 30 и в режиме "он-лайн" по сети 28 передачи данных. Конфиденциальность и целостность, соответственно сохранность передаваемого транспортного кода Т обеспечиваются за счет шифрования и вычисления МАС-кода чип-картой 10.
Компилирующий сервер 30 после получения им транспортного кода Т сначала на шаге 512 проверяет, присутствуют ли содержащиеся в этом транспортном коде Т идентификационные данные ИД в списке 340 идентификационных данных, который хранится в компилирующем сервере 30 и который предпочтительно представляет собой список клиентов. При наличии указанных идентификационных данных ИД в списке идентификаторов компилирующий сервер сначала на шаге 514 с их использованием определяет на основе хранящихся в областях 324, 326 памяти основных ключей MKENC И МКМАС соответствующие индивидуальные для чип-карты ключи KENC и КМАС. Затем на основе этих ключей, а также на основе увеличившегося показания SEQC счетчика команд компилирующий сервер 30 вычисляет в соответствии с теми же правилами, которые использовались ранее чип-картой 10, сеансовые ключи SKENC и SKMAC. После этого компилирующий сервер 30 на следующем шаге 516 с использованием сеансового ключа SKMAC вычисляет МАС'-код и сравнивает его с МАС-кодом, содержащимся в транспортном коде Т. При совпадении обоих кодов между собой (МАС'-кода и МАС-кода) транспортный код Т признается компилирующим сервером 30 как аутентичный, т.е. как действительно поступивший от чип-карты 10 с идентификационными данными ИД, а также как целостный, т.е. как не измененный при передаче.
После этого компилирующий сервер 30 при признании им транспортного кода Т как аутентичного дешифрует с помощью сеансового ключа SKENC содержащийся в этом транспортном коде Т исходный текст Q' программы. Учитывая установленную ранее целостность транспортного кода Т, формат полученного в результате дешифрования исходного текста Q' программы соответствует формату ее первоначально составленного на пользовательском компьютере исходного текста Q.
Далее на шаге 518 компилирующий сервер 30 с использованием компилятора 310 преобразует восстановленный исходный текст Q программы в промежуточный формат, который затем с помощью компоновщика 312 связывается путем обращения к библиотеке 318 кодов с уже имеющимся программным кодом.
Компилятор 310 и компоновщик 312 целесообразно реализовать в виде аппаратного модуля защиты, который выполняет функции по компиляции и редактированию межпрограммных связей, а также обеспечивает шифрование и дешифрование составляющих программу обрабатываемых данных, проверку и создание цифровых подписей и аутентификацию. В этом случае все составляющие программу обрабатываемые данные, прежде всего поступающие исходные тексты Q программ и сформированные исполняемые программные коды С, присутствуют вне этого аппаратного модуля защиты только в зашифрованном виде. Подобный подход обеспечивает гарантированную защиту прикладного "ноу-хау", разработанного и используемого пользователем, от возможного несанкционированного просмотра и доступа через компилирующий сервер 30.
Помимо этого в компилирующем сервере 30 целесообразно предусмотреть ограничивающую доступ к библиотеке 318 кодов функцию, которая ограничивает встраивание компоновщиком 312 уже имеющегося программного кода во вновь разработанный программный код.
Полученный в результате компиляции и компоновки программный код С подвергается формальной верификации соответствующей программой 321 (верификатором). При этом программный код С подвергается на шаге 520 проверке на наличие очевидных ошибок, например на соблюдение условий распределения адресного пространства, на учет заданной емкости памяти, на несоответствие типов, а также на наличие агрессивности.
Если полученный на основе исходного текста Q программы программный код С пригоден для его последующего использования, т.е. пригоден для исполнения чип-картой 10, то он для его обратной передачи преобразуется в транспортный код U. С этой целью сначала увеличивается показание SEQH счетчика команд. С использованием этого увеличенного показания SEQH счетчика команд затем на шаге 522 с привлечением основных ключей MKENC, соответственно МКМАС и идентификационных данных ИД формируются индивидуальные для чип-карты ключи KENC и КМАС, а тем самым вновь вычисляются и сеансовые ключи SKENC и SKMAC. Вычисление сеансовых ключей SKENC, SKMAC компилирующим сервером 30 происходит тем же путем, что и ранее пользовательским компьютером 20 на шаге 506, с тем лишь отличием, что вместо показания SEQC одного счетчика команд используется показание SEQH другого счетчика команд.
После этого на шаге 524 с помощью сеансового ключа SKENC шифруется программный код С с получением промежуточного кода С', для которого затем с помощью сеансового ключа SKMAC вычисляется МАС''-код. Далее промежуточный код С' и МАС''-код объединяются в транспортный код U, который затем на шаге 526 передается компилирующим сервером 30 в пользовательский компьютер 20. Пересылать транспортный код U, как и в случае транспортного кода Т, можно с использованием любой незащищенной записывающей среды, например в записанном на дискету виде, или любой незащищенной передающей среды, например путем пересылки по электронной почте. Очевидно, что для этой же цели может использоваться и прямая связь через сеть 28 передачи данных. При использовании прямой связи существует возможность за один единственный сеанс связи в режиме "он-лайн" не только отправить задание на обработку, т.е. переслать в компилирующий сервер 30 содержащийся в транспортном коде Т исходный текст Q программы, но и получить от этого сервера полученный при такой обработке результат, т.е. транспортный код U с содержащимся в нем программным кодом С'.
После этого на шаге 528 пользовательский компьютер 20 через интерфейсы 24, 14 направляет полученный им транспортный код U далее в чип-карту 10. Чип-карта в свою очередь на шаге 530 увеличивает показание SEQH ее счетчика 136 команд, затем с использованием этого увеличенного показания счетчика команд тем же путем, что и ранее компилирующий сервер 30 на шаге 522, формирует сеансовые ключи SKENC, соответственно SKMAC и после этого проверяет, идентичен ли переданный с транспортным кодом U МАС''-код МАС-коду, который может вычисляться самой чип-картой 10 с использованием ключа SKMAC на основе содержимого транспортного кода U. Совпадение МАС''-кода и МАС-кода указывает на успешную верификацию МАС''-кода, извлеченного из транспортного кода U. Поскольку возможностью использовать ключ SKMAC помимо самой чип-карты 10 обладает только компилирующий сервер 30, программный код С, полученный путем дешифрования переданного в транспортном коде U программного кода С', является аутентичным, т.е. он был сформирован компилирующим сервером 30 на основе исходного текста Q программы, полученного от этой же чип-карты 10 в защищенном на время передачи виде. В завершение признанный аутентичным программный код С на шаге 532 загружается чип-картой 10 в область 113 ее памяти.
На фиг.6 в виде блок-схемы показан другой вариант процесса распределенной разработки программ, в соответствии с которым данные, обмен которыми происходит между пользовательским компьютером 20 и компилирующим сервером 30 через сеть 28 передачи данных, защищаются с помощью SSL-протокола, тогда как данные, пересылаемые напрямую из компилирующего сервера 30 в чип-карту 10 и в обратном направлении, защищаются с помощью механизма безопасной передачи сообщений. Этот вариант аналогично рассмотренному выше и показанному на фиг.5 варианту наиболее пригоден для реализации в режиме "он-лайн" в системах, используемые в которых чип-карты 10 поддерживают только алгоритмы симметричного шифрования.
Чип-карта 10, предварительно укомплектованная для осуществления процесса распределенной разработки программ в соответствии с этим вторым вариантом, наряду с компонентами ее базовой конфигурации 110, к которым относятся операционная система 111, базовый программный код 112 и область 113 памяти для записи дозагружаемого в нее в последующем исполняемого программного кода, содержит также программу 120 для обмена данными, основанного на механизме безопасной передачи сообщений (Secure Messaging), секретный ключ 130 карты и открытый ключ 128 сервера. Помимо этого пользовательский компьютер 20 оснащен программными средствами, обеспечивающими возможность выполнения SSL-протокола без аутентификации чип-карт.
Начальные стадии процесса разработки программы в соответствии со вторым вариантом совпадают с шагами 500-504 описанного выше и показанного на фиг.5 процесса разработки программы, осуществляемого в соответствии с первым вариантом.
После составления программы в исходном тексте Q пользователь на шаге 600 устанавливает соединение через сеть 28 передачи данных между своим компьютером 20 и принадлежащим эмитенту компилирующим сервером 30.
После установления физического соединения с компилирующим сервером 30 между пользовательским компьютером 20 и компилирующим сервером 30 запускается SSL-протокол. При этом пользовательский компьютер 20 и компилирующий сервер 30 на шагах 601, 602 формируют по сеансовому ключу SKSSL. Затем на шаге 604 между компилирующим сервером 30 и чип-картой 10 в соответствии с SSL-протоколом создается так называемый IP-туннель, необходимый для безопасный передачи сообщений. При этом в пользовательском компьютере 20 поддерживаемый чип-картой 10 протокол безопасный передачи сообщений интегрируется в SSL-протокол, используемый при обмене данными только между пользовательским компьютером 20 и компилирующим сервером 30. По этому IP-туннелю в последующем между чип-картой 10 и компилирующим сервером 30 происходит непосредственный обмен относящимися к конкретной чип-карте наборами данных, представленными предпочтительно в виде блоков данных протокола уровня прикладной программы (APDU-блоков от англ. "Application Protocol Data Unit"). При этом с точки зрения протокола безопасной передачи сообщений пользовательский компьютер 20 выполняет исключительно лишь функцию посредника.
Затем в соответствии с протоколом безопасной передачи сообщений чип-карта 10 и компилирующий сервер 30 выполняют процедуру взаимной аутентификации, при этом сначала чип-карта 10 на шаге 606 передает свою аутентификационную информацию в компилирующий сервер 30, а затем компилирующий сервер 30 на шаге 608 передает свою аутентификационную информацию в чип-карту 10. После успешного завершения процедуры взаимной аутентификации между чип-картой 10 и компилирующим сервером 30 на следующем шаге 610 выдается разрешение на использование пользовательским компьютером 20 всех функций компилирующего сервера 30.
При наличии такого разрешения на использование функций компилирующего сервера пользовательский компьютер 20 на следующем шаге 612 шифрует с помощью сформированного ранее сеансового ключа SKSES составленный пользователем исходный текст Q программы и передает полученный в результате такого шифрования транспортный код TQ в компилирующий сервер 30.
На шаге 614 поступивший в компилирующий сервер 30 транспортный код TQ дешифруется с помощью сформированного ранее в этом компилирующем сервере 30 сеансового ключа SKSSL и таким путем преобразуется обратно в составленный на пользовательском компьютере 20 исходный текст Q программы. Операции на шагах 610, 612 и 614 целесообразно выполнять путем непрерывного обмена данными между пользовательским компьютером 20 и компилирующим сервером 30, что обеспечивает восстановление исходного текста Q программы в компилирующем сервере 30 сразу же по поступлении в него от пользовательского компьютера 20 последнего набора данных, содержащих зашифрованный исходный текст программы.
После этого компилирующий сервер 30 выполнением операций, которые аналогичны операциям, выполняемым на описанных выше со ссылкой на фиг.5 шагах 518 и 520, формирует на основе исходного текста Q исполняемый программный код С.
Далее на шаге 620 компилирующий сервер 30 с использованием механизмов безопасной передачи сообщений преобразует исполняемый программный код С в защищенный программный код CSM. Затем этот защищенный программный код CSM на шаге 622 преобразуется компилирующим сервером путем шифрования с помощью сеансового ключа SKSESB представленный в переходном формате транспортный код UCSM. За счет шифрования с помощью сеансового ключа SKSES защищенный программный код CSM, который обычно представлен в виде APDU-блоков, встраивается в защищенный поток данных, передаваемых по сети 28 передачи данных между компилирующим сервером 30 и пользовательским компьютером 20.
Такой представленный в переходном формате транспортный код UCSM передается компилирующим сервером 30 в пользовательский компьютер 20. Пользовательский компьютер по получении этого транспортного кода UCSM дешифрует его на шаге 624 с помощью сеансового ключа SKSES, вновь снимая таким путем защиту с данных, использовавшуюся для их передачи между компилирующим сервером 30 и пользовательским компьютером 20. После этого дешифрованный таким путем программный код CSM, который представлен в защищенном в соответствии с протоколом безопасной передачи сообщений виде, на следующем шаге 626 передается пользовательским компьютером 20 в чип-карту 10.
В чип-карте 10 этот защищенный программный код CSM на шаге 628 вновь переводится путем его обратного преобразования в соответствии с протоколом безопасной передачи сообщений в исполняемый программный код С, который затем на шаге 630 загружается в предназначенную для записи окончательного программного кода область 113 памяти 104 чип-карты.
Операции описанного выше со ссылкой на фиг.6 процесса разработки программы для наглядности представлены в виде последовательно выполняемых в определенном порядке отдельных стадий. На практике же передача данных между чип-картой 10, пользовательским компьютером 20 и компилирующим сервером 30 обычно предполагает обмен данными в обоих направлениях. Помимо этого те стадии процесса разработки программы, выполнение которых возможно в непрерывном, квазипараллельном режиме обмена данными и их обработки, целесообразно осуществлять на компилирующем сервере 30 и на пользовательском компьютере 20, соответственно в чип-карте 10 одновременно или по меньшей мере с некоторым совпадением во времени. В таком режиме целесообразно выполнять, например, предусмотренные на шагах 620-630 операции, которые предпочтительно осуществлять в ходе непрерывного обмена данными между компилирующим сервером 30 и пользовательским компьютером 20, в процессе которого передача наборов данных, составляющих транспортный код UCSM, в пользовательский компьютер 20 происходит уже в то время, когда в компилирующем сервере 30 еще продолжается преобразование программного кода С в соответствии с протоколом безопасной передачи сообщений, а наборы данных, передаваемые от компилирующего сервера 30 через пользовательский компьютер 20 в чип-карту 10, дешифруются в ней непосредственно перед их загрузкой в область 113 памяти, т.е. без их промежуточного сохранения до полного завершения процесса их поступления в чип-карту.
На фиг.7 показан следующий вариант описанного выше со ссылкой на фиг.4 процесса разработки программы, в соответствии с которым пользовательский компьютер 20 в основном выполняет функцию посредника между чип-картой 10 и компилирующим сервером 30. В этом случае защита данных, передаваемых между чип-картой 10 и компилирующим сервером 30, обеспечивается за счет установления напрямую защищенного или безопасного сквозного соединения между чип-картой 10 и компилирующим сервером 30 с применением SSL-протокола.
У чип-карты 10, используемой для осуществления процесса распределенной разработки программ в соответствии с этим вариантом, на стадии ее предварительного комплектования наряду с компонентами ее базовой конфигурации 110, к которым относятся операционная система 111, базовый программный код 112 и область 113 памяти для записи дозагружаемого в нее в последующем исполняемого программного кода, предусматривают также программу 122 для выполнения SSL-протокола, сертификат 132, секретный ключ 130 карты, а также открытый ключ 128 сервера.
Начальные стадии процесса разработки программы в соответствии с показанным на фиг.7 вариантом совпадают с шагами 500-504 описанного выше процесса разработки программы, осуществляемого в соответствии с показанным на фиг.5 вариантом. Выполнение предусмотренных на этих шагах операций начинается после установления на шаге 700 соединения между чип-картой 10 и компилирующим сервером 30 через пользовательский компьютер 20.
В этом варианте обмен данными между чип-картой 10 и компилирующим сервером 30 полностью происходит в соответствии с SSL-протоколом. При этом в ходе процедуры квитирования выполняется процесс взаимной аутентификации, при которой чип-карта 10 на шаге 701 проверяет сертификат 332 компилирующего сервера 30, который со своей стороны на шаге 702 проверяет хранящийся в памяти чип-карты 10 сертификат 132. Если результаты такой взаимной проверки сертификатов подтверждают возможность дальнейшего обмена данными, то чип-карта 10 и компилирующий сервер 30 на шагах 704 и 706 соответственно формируют по сеансовому ключу.
Показанный на фиг.7 вариант пригоден прежде всего для его реализации в режиме "он-лайн". После установления в сети передачи данных защищенного или безопасного соединения между чип-картой 10 и компилирующим сервером 30 пользователю на выбор может предлагаться несколько возможных функциональных опций по дальнейшей обработке данных, из которых он должен выбрать какую-либо одну. В этом случае после установления в сети передачи данных защищенного или безопасного соединения компилирующий сервер 30 на шаге 708 передает в пользовательский компьютер 20 сообщение о возможных функциональных опциях с приглашением выбрать одну из них. При получении такого сообщения о доступных опциях пользователь на шаге 710 выбирает на своем компьютере 20 необходимую, например, опцию по разработке программы с ее он-лайновой трансляцией либо режим отладки, в котором выполняется он-лайновая проверка вновь разработанного программного кода на его готовность к выполнению.
Для повышения безопасности передачи данных в компилирующий сервер 30 после этого может быть предусмотрена выполняемая на шаге 711 необязательная операция по снабжению исходного текста Q программы цифровой подписью, создаваемой чип-картой 10. Метод создания такой цифровой подписи известен как таковой и применительно к рассматриваемому случаю заключается в вычислении чип-картой 10 значения хеш-функции для исходного текста Q программы и в шифровании этого значения с помощью секретного ключа 130, имеющегося у чип-карты. При этом значение хеш-функции может вычисляться пользовательским компьютером 20, необходимость в чем возникает прежде всего в том случае, когда собственных аппаратных ресурсов чип-карты 10 оказывается недостаточно для выполнения этой операции.
После этого чип-карта 10 на следующем шаге 712 с помощью сформированного ранее сеансового ключа SKSSL шифрует этот необязательно снабженный цифровой подписью исходный текст программы с получением в результате транспортного кода TQSSL, который она затем на шаге 714 передает через пользовательский компьютер 20 в компилирующий сервер 30.
Компилирующий сервер в свою очередь на шаге 716 с помощью сеансового ключа SKSES дешифрует полученный им транспортный код TQSSL, восстанавливая таким путем исходный текст Q программы в первоначальном виде. При наличии цифровой подписи компилирующий сервер проверяет ее правильность путем повторного вычисления значения хеш-функции с использованием для этой цели открытого ключа 332 карты.
После этого компилирующий сервер 30 на шагах 518, 520 формирует на основе восстановленного исходного текста Q программы исполняемый программный код С.
Затем компилирующий сервер 30 добавляет к сформированному таким путем программному коду С цифровую подпись, которую он создает, вычисляя значение хеш-функции и шифруя его с помощью своего секретного ключа 330. На следующем шаге 718 компилирующий сервер шифрует полученный в результате код, снабженный цифровой подписью, с помощью открытого ключа 332 чип-карты 10. Полученные после выполнения этой операции зашифрованные данные преобразуется компилирующим сервером 30 на следующем шаге 720 путем их шифрования с помощью сеансового ключа SKSES в переходный формат CSSL, который в виде транспортного кода в завершение передается компилирующим сервером на шаге 722 в пользовательский компьютер 20.
Пользовательский компьютер в свою очередь на шаге 724 перенаправляет полученный им транспортный код CSSL в чип-карту 10, которая путем его дешифрования с помощью сеансового ключа SKSES на следующем шаге 725 восстанавливает зашифрованные данные, в виде которых представлен исполняемый программный код. При наличии у программного кода С цифровой подписи, которой он возможно был снабжен в компилирующем сервере 30, чип-карта 10 на следующем шаге 726 дешифрует далее эти зашифрованные данные с помощью ее секретного ключа 130 и с использованием открытого ключа 128 компилирующего сервера 30 проверяет выявленную при дешифровании зашифрованных данных цифровую подпись. При положительном результате проверки цифровой подписи чип-карта 10 на шаге 728 загружает восстановленный таким путем исполняемый программный код С в предназначенную для записи окончательного программного кода область 113 ее памяти.
Аналогично показанному на фиг.5 варианту операции описанного выше со ссылкой на фиг.7 процесса разработки программы для наглядности представлены в виде последовательно выполняемых стадий. Однако на практике те стадии процесса разработки программы, которые допускают такую возможность, целесообразно выполнять в квазипараллельном режиме и осуществлять их на компилирующем сервере 30 и в чип-карте 10 одновременно или по меньшей мере с некоторым совпадением во времени. Сказанное относится, например, к выполняемым на шагах 712-716 операциям, т.е. к шифрованию исходного текста Q программы чип-картой и его восстановлению компилирующим сервером. Эти операции целесообразно выполнять в непрерывном, квазипараллельном режиме обмена данными и их обработки, благодаря чему процедура восстановления исходного текста Q программы компилирующим сервером 30 завершается практически сразу же после отправки чип-картой 10 последнего набора данных. При этом отсутствует необходимость в промежуточном сохранении исходного текста Q программы до полного завершения процесса его поступления в компилирующий сервер. В таком же непрерывном, квазипараллельном режиме обмена данными и их обработки целесообразно выполнять и операции на шагах 718-728, т.е. шифрование компилирующим сервером исполняемого программного кода С и его восстановление чип-картой, а также его загрузку в область 113 памяти чип-карты 10. Целесообразно, чтобы выполнение операций на этих шагах компилирующим сервером 30 и чип-картой 10 происходило без промежуточного сохранения данных непосредственно по мере поступления наборов данных, что обеспечивает загрузку исполняемого программного кода С в память чип-карты практически сразу же после отправки компилирующим сервером 30 последнего набора данных, передаваемых в виде транспортного кода.
В любом из описанных выше вариантов процесса разработки программы может быть предусмотрено выполнение программы отладки. С помощью этой программы проверяется готовность сформированного компилирующим сервером 30 программного кода С к выполнению еще до его загрузки в память чип-карты 10. Основные операции, осуществляемые при выполнении такой программы отладки, показаны в виде блок-схемы на фиг.8, при этом для упрощения последующего описания на этой блок-схеме не показаны меры, направленные на защиту передаваемых данных, т.е. не показаны прежде всего различные операции по шифрованию данных.
Программа отладки установлена в виде программы 316 на компилирующем сервере 30 и выполняется им. Дополнительно к этой программе 316 либо в качестве ее компонента предусмотрены имитирующие носитель информации аппаратные средства для его моделирования и/или программные средства его имитации, позволяющие эмулировать разработанную программу на компилирующем сервере 30 с соблюдением технических ограничений, накладываемых на реальный носитель информации. Выполнение этой программы отладки после задания и настройки в компилирующем сервере 30 соответствующего рабочего режима происходит под управлением редактора 22, установленного на пользовательском компьютере 20. Подобные задание и настройка рабочего режима могут происходить, например, по выбору функциональной опции на шагах 708 и 710 при разработке программы в соответствии с вариантом, показанным на фиг.6. Режим отладки позволяет помимо прочего запускать с пользовательского компьютера 20 сгенерированную в компилирующем сервере 30 программу, устанавливать метки остановки, отображать содержимое областей памяти, а также считывать и задавать переменные.
Для выполнения программы отладки сначала на шаге 504 обычным путем составляется исходный текст Q программы, а затем на шаге 700 устанавливается соединение с компилирующим сервером 30. После этого исходный текст Q программы на следующем шаге 800 передается в соответствии с одним из описанных выше вариантов процесса разработки программы в компилирующий сервер 30.
На следующем шаге 802 компилирующий сервер 30 после получения им исходного текста Q программы предлагает пользователю возможность создания программного кода С в режиме отладки. В ответ на это пользователь может на шаге 804 выбрать такой режим со своего компьютера 20. При выборе режима отладки компилирующий сервер 30 выполнением предусмотренных на шагах 526, 528 операций транслирует полученный им исходный текст Q программы во временный программный (объектный) код Cv, допускающий возможность его исполнения в имеющейся на компилирующем сервере 30 моделирующей и/или эмулирующей среде. На шаге 806 этот временный программный код Cv сохраняется компилирующим сервером 30 в буферной памяти. Затем компилирующий сервер на шаге 808 передает в пользовательский компьютер 20 воспроизводимое на экране его монитора на шаге 810 сообщение о завершении процесса составления программы.
После этого на шаге 812 пользователь может на своем компьютере 20 снабдить исходный текст Q программы операторами отладки, т.е. установить метки остановки, обеспечивающие выполнение программы в пошаговом режиме либо визуальное отображение переменных. Такие операторы отладки передаются в виде соответствующего сообщения в компилирующий сервер 30.
Затем на шаге 814 с пользовательского компьютера 20 можно инициировать выполнение представленной в виде временного программного кода Cv программы на компилирующем сервере 30. По получении подобной команды на запуск выполнения программы компилирующий сервер 30 на следующем шаге 816 начинает ее выполнение с учетом переданных ему ранее операторов отладки. По завершении выполнения каждого определяемого этими операторами отладки программного сегмента компилирующий сервер на шаге 818 передает в пользовательский компьютер 20 воспроизводимое на экране его монитора на шаге 820 сообщение о результатах выполнения соответствующего программного сегмента. В ответ на получение такого сообщения на следующем шаге 822 в зависимости от переданных пользователем операторов отладки может быть предусмотрена возможность его вмешательства в процесс выполнения программы, заключающегося, например, во вводе переменных или задании новых операторов отладки. Все такие возможные изменения, при необходимости вносимые пользователем в исходный текст Q программы, или новые операторы отладки передаются пользовательским компьютером 20 в компилирующий сервер 30. По завершении процесса отработки оператора отладки пользовательский компьютер 20 на следующем шаге 824 передает в компилирующий сервер 30 сигнал на продолжение работы, в ответ на который компилирующий сервер, возвращаясь к шагу 814, переходит к выполнению следующего программного сегмента. При этом компилирующий сервер учитывает возможные изменения, внесенные пользователем в исходный текст Q программы, или новые операторы отладки. Выполнение операций, предусмотренных на шагах 814-824, циклически повторяется до тех пор, пока компилирующий сервер 30 полностью не выполнит всю представленную в виде временного программного кода Cv программу.
По завершении процесса отладки программы, обеспечивающего ее выполнение без сбоев, пользователь дает команду со своего компьютера 20 на переключение из режима отладки в обычный режим работы. После этого компилирующий сервер 30 на следующем шаге 826 формирует на основе имеющегося на этот момент исходного текста Q программы исполняемый программный код С и затем на шаге 828 передает его описанным выше со ссылкой на фиг.4-7 путем через пользовательский компьютер 20 в чип-карту 10. В завершение компилирующий сервер на шаге 830 стирает из своей буферной памяти промежуточно сохраненный в ней временный программный код Cv.
Каждый из описанных выше вариантов осуществления изобретения следует рассматривать лишь в качестве основы для конкретной реализации предлагаемого в нем способа. Все эти варианты осуществления изобретения, на примере которых оно рассмотрено выше, предполагают возможность внесения в них различных, варьирующихся в широких пределах модификаций и изменений при соблюдении лишь основополагающего принципа, в соответствии с которым для надежной и безопасной разработки программы следует использовать предварительно укомплектованный носитель информации. Сказанное относится прежде всего к выполнению и конфигурации аппаратных средств, т.е. чип-карты, пользовательского компьютера, сети передачи данных и компилирующего сервера. Очевидно также, что вместо описанных выше методов и алгоритмов шифрования и аутентификации могут использоваться и иные методы и алгоритмы, обеспечивающие равноценную степень защиты данных. Степень защиты данных во всех описанных выше вариантах осуществления изобретения можно дополнительно повысить прежде всего за счет использования дополнительных криптографических ключей, счетчиков команд или иных алгоритмов шифрования. Помимо этого по соображениям технического характера или же по соображениям безопасности может быть предусмотрена возможность перевода данных и в другие форматы. Так, в частности, из-за ограниченного объема памяти прежде всего программируемых чип-карт сформированный компилирующим сервером 30 исполняемый программный код перед его загрузкой в чип-карту или в процессе его загрузки в чип-карту обычно принято подвергать дополнительному, направленному на оптимальное использование доступного места в ее памяти преобразованию в другой формат путем, например, замены символьных ссылок абсолютными адресами, что позволяет уменьшить занимаемый таким программным кодом объем памяти. Помимо этого в приведенном выше описании для наглядности рассмотрены только ситуации, в которых процесс разработки программ не сопровождается появлением ошибок или сбоев. Однако на практике возможно возникновение ситуаций, в которых в процессе разработки программ могут появляться ошибки, для обработки которых в этом случае могут использоваться известные стандартные решения и подходы.
Изобретение относится к защищенной от несанкционированного доступа разработке исполняемого программного кода для портативных программируемых носителей информации. Техническим результатом является повышение защищенности данных. Способ заключается в следующем: исходный текст программы составляют на компьютере пользователя, передают на компьютер эмитента носителя информации, где осуществляют компиляцию и компоновку исходного текста программы с получением исполняемого программного кода, который зашифровывают и преобразовывают в транспортный код, который загружают в носитель информации через компьютер пользователя, при этом на стадии предварительного комплектования носитель информации снабжают инструментальными программными средствами, позволяющими восстанавливать из представленного в переходном формате транспортного кода исполняемый программный код. Также раскрыта система для распределенной разработки исполняемой программы для портативного носителя информации и носитель информации. 5 н. и 15 з.п. ф-лы, 8 ил., 1 табл.
Система информационного обмена