ЗАПИСЬ ДАННЫХ В ЭНЕРГОНЕЗАВИСИМОЕ ЗАПОМИНАЮЩЕЕ УСТРОЙСТВО СМАРТ-КАРТЫ
RECORDING OF DATA INTO SMART CARD NONVOLATILE MEMORY

Изобретение относится к записи данных в энергонезависимое запоминающее устройство смарт-карты.
Как правило, смарт-карты одновременно содержат энергонезависимое запоминающее устройство и энергозависимое запоминающее устройство.
Так называемые «энергонезависимые» запоминающие устройства являются устройствами, которые могут сохранять данные, не требуя питания от внешнего источника. Энергонезависимые запоминающие устройства могут быть программируемыми (например, ЗУ типа EEPROM, Flash и т.д.) или не программируемыми (например, ЗУ типа ROM, содержимое которых определено раз и навсегда во время изготовления). Программируемые энергонезависимые запоминающие устройства часто служат для записи данных или приложений, которые можно передавать из одной карты в другую, например, систем файлов, содержащих различные каталоги и подкаталоги, файлов с данными пользователя карты (фамилия, координаты и т.д.), апплетов Javacard и т.д. Как правило, смарт-карты имеют емкость программируемого энергонезависимого ЗУ (часто EEPROM) примерно от 8 килобайт до 256 килобайт. Не программируемые энергонезависимые ЗУ часто служат для записи операционных систем и, в целом, данных, которые не могут переходить из одной карты в другую. Как правило, смарт-карты имеют память ROM емкостью примерно от 64 килобайт до 512 килобайт. Разумеется, существуют также и другие емкости для ЗУ RAM, EEPROM или ROM. В некоторых смарт-картах вместо пары ROM, EEPROM используют память Flash.
Так называемые «энергозависимые» запоминающие устройства (например, ЗУ типа RAM) являются запоминающими устройствами, которые теряют свое содержимое при отключении от внешнего источника, питающего их энергией. Обычно энергозависимые запоминающие устройства являются более скоростными, чем энергонезависимые запоминающие устройства, например, при операциях записи. Например, запись EEPROM или Flash обычно является намного более медленной, чем запись RAM. Например, энергозависимые запоминающие устройства позволяют оперировать временными данными (переменные состояния, результаты вычислений и т.д.) во время исполнения программы. Как правило, смарт-карты содержат запоминающее устройство RAM, часто имеющее емкость от 2 килобайт до 8 килобайт. Как правило, большая часть этого ЗУ RAM занята переменными (в частности, операционной системой карты) и различными приложениями. Как правило, часть запоминающего устройства RAM занята буферной памятью (buffer на английском языке), которая представляет собой зону, размер которой обычно составляет несколько сот байт и которая предназначена для приема команд.
Как правило, смарт-карты не позволяют производить запись из внешнего устройства напрямую в какое-либо из их запоминающих устройств посредством прямой адресации. С другой стороны, смарт-карты имеют интерфейс (такой как интерфейс типа ISO 7816-4), при помощи которого внешнее устройство может передавать команды в карту (в частности, команды записи или считывания). Команды поступают в буферную память. Таким образом, карта сама исполняет принятые команды и может по выбору обрабатывать их или отклонять, запрещать некоторые доступы, обуславливать некоторые доступы для аутентификации и т.д. Согласно протоколу T=0 стандарта ISO 7816-4, который является самым распространенным протоколом, команды содержат пять байтов (байт класса, контрольный байт и три байта параметров P1, P2 и P3), за которыми следуют данные (например, данные для записи в карту). Длину этих возможных данных обычно определяет байт P3, поэтому за один раз передают не более 255 байт (плюс 5 предыдущих байт). Однако это требует наличия буферной памяти объемом не менее 260 байт. Существуют также варианты и другие протоколы (например, протокол T=1, который теоретически может передавать и принимать до 64 килобайт данных в рамках одной команды).
Учитывая относительно небольшой размер буферной памяти, а также ограничение протокола T=0, как правило, в карту невозможно передавать очень длинные команды. Так, если в файл карты необходимо записать более 255 байт (в протоколе T=0), то, как правило, данные разбивают на более мелкие подгруппы (например, на блоки в 255 байт), и количество передаваемых команд записи соответствует количеству блоков.
Можно, например, использовать команду UPDATE BINARY (команда 0×D6 стандарта ISO 7816-4), которая позволяет произвести запись в так называемый прозрачный файл. Речь идет о файле типа EF (Elementary File), в который можно произвести запись с уточнением адреса назначения (составляет от 0×0000 для начала файла и до адреса, соответствующего размеру файла менее одного байта, если необходимо изменить последний байт файла). Однако это требует не только вычисления в передающем устройстве подгрупп данных (блоки в 255 байт), но также вычисления адреса, по которому необходимо записать каждый блок в объектном файле, что не является практичным.
Известно также использование команды UPDATE RECORD (команда 0×DC стандарта ISO 7816-4), которая позволяет создать файл EF для записей, при этом каждую запись идентифицируют при помощи индекса, и каждая запись может иметь разный размер (в зависимости от карт). Однако это требует вычисления индекса записей, что является мало практичным. Кроме того, иногда необходимо записывать блоки определенного размера (например, блок в 11 байт), а считывать блоки другого размера (например, блоки в 13 байт), в этом случае структура файла для записей является очень непрактичной, так как считываемые данные накладываются на другие записи и участки записей.
Известно также использование команды PUT DATA (команда 0×DA стандарта ISO 7816-4). Стандарт уточняет, что в зависимости от выбранного объекта (в котором команда PUT DATA предназначена для записи) можно осуществлять либо операцию типа "writing once", либо типа "updating", либо типа "appending". Однако в стандарте не уточнен принцип осуществления операции типа "appending".
Изобретение призвано улучшить эту ситуацию.
Объектом изобретения является способ записи данных в энергонезависимое запоминающее устройство смарт-карты, включающий в себя:
/a/ поступление команды записи в буферную память энергозависимого запоминающего устройства смарт-карты;
/b/ сравнение смарт-картой параметра идентификации объекта, соответствующего команде записи, с параметром идентификации объекта, хранящимся в энергонезависимом запоминающем устройстве смарт-карты;
/c/ в случае положительного результата сравнения:
/c1/ запись предназначенных для записи данных, включенных в команду записи, из буферной памяти в объект, соответствующий команде записи, на заранее определенный адрес, значение которого хранится в энергонезависимом запоминающем устройстве;
/c2/ вычисление адреса, соответствующего сумме заранее определенного адреса и размера записываемых данных;
/c3/ сохранение вычисленного адреса в энергонезависимом запоминающем устройстве вместо заранее определенного адреса;
/d/ в случае отрицательного результата сравнения:
/d1/ запись предназначенных для записи данных, включенных в команду записи, из буферной памяти в объект, соответствующий команде записи, на адрес по умолчанию;
/d2/ вычисление адреса, соответствующего сумме адреса по умолчанию и размера записываемых данных;
/d3/ сохранение вычисленного адреса в энергонезависимом запоминающем устройстве в качестве заранее определенного адреса.
Преимуществом этого способа является то, что он является простым и позволяет записывать данные большого размера в смарт-карту. В частности, он позволяет записывать данные длиной, превышающей размер буферной памяти карты, а также данные размером, превышающим предел 255 байт, предписанный протоколом T=0, причем без необходимости вычисления адреса или индекса на уровне устройства, передающего данные. Это представляет интерес, в частности, в контексте карт, в которых использованы технологии биометрии, такие как технологии, называемые "match-on-card", обеспечивающие идентификацию биометрических данных самой картой. Действительно, биометрические данные (например, отпечатки пальцев или данные распознавания лица) могут иметь очень большой размер до нескольких килобайт.
Объектом изобретения является также компьютерная программа, содержащая ряд команд, которые осуществляют заявленный способ, когда их исполняет процессор смарт-карты.
Объектом изобретения является также носитель автономного хранения, считываемый компьютером и хранящий компьютерную программу в соответствии с изобретением.
Объектом изобретения является также смарт-карта, содержащая энергонезависимое запоминающее устройство, энергозависимое запоминающее устройство, буферную память, включенную в энергозависимое запоминающее устройство, и схему обработки команд записи в энергонезависимое запоминающее устройство, при этом схема выполнена с возможностью обработки команды, записанной в буферной памяти и связанной с параметром идентификации объекта, который хранится в энергонезависимом запоминающем устройстве и в котором команда должна производить запись, при этом указанная схема выполнена с возможностью записи в энергонезависимое запоминающее устройство, с одной стороны, параметра идентификации объекта, при этом объект хранится в энергонезависимом запоминающем устройстве, и с другой стороны, заранее определенного адреса внутри этого объекта, при этом схема выполнена с возможностью - во время обработки команды записи - сравнения параметра идентификации объекта, соответствующего команде записи, с параметром идентификации объекта, хранящимся в энергонезависимом запоминающем устройстве, и в случае положительного результата сравнения - с возможностью записи предназначенных для записи данных, включенных в команду записи, из буферной памяти в объект, соответствующий команде записи, на заранее определенный адрес, хранящийся в энергонезависимом запоминающем устройстве, с возможностью вычисления адреса, соответствующего сумме хранящегося заранее определенного адреса и размера записываемых данных, а также с возможностью сохранения вычисленного адреса в энергонезависимом запоминающем устройстве вместо заранее определенного адреса, при этом схема выполнена - в случае отрицательного результата сравнения - с возможностью записи предназначенных для записи данных, включенных в команду записи, из буферной памяти в объект, соответствующий команде записи, на адрес по умолчанию, с возможностью вычисления адреса, соответствующего сумме адреса по умолчанию и размера записываемых данных, и с возможностью сохранения вычисленного адреса в энергонезависимом запоминающем устройстве в качестве заранее определенного адреса.
Объектом изобретения является также система, содержащая электронное устройство и заявленную смарт-карту, при этом электронное устройство выполнено с возможностью разделения данных, предназначенных для записи устройством в смарт-карту, на такие подгруппы, при которых размер каждой подгруппы не превышает определенного значения, с возможностью построения совокупности команд записи, связанных с одним объектом карты, при этом каждая команда записи содержит соответствующую подгруппу предназначенных для записи данных, и с возможностью передачи в карту каждой построенной таким образом команды записи.
Другие аспекты, задачи и преимущества изобретения будут более очевидны из нижеследующего описания некоторых вариантов его выполнения со ссылками на прилагаемые чертежи, на которых:
фиг. 1 - шесть последовательных исполнений способа согласно варианту выполнения изобретения;
фиг. 2 - система, состоящая из переносного компьютера, считывателя смарт-карт, подключенного к этому компьютеру, и из смарт-карты согласно варианту выполнения изобретения;
фиг. 3 - схема архитектуры смарт-карты согласно варианту выполнения изобретения.
Возможный вариант выполнения касается способа записи данных в энергонезависимое запоминающее устройство (такое как ЗУ EEPROM или Flash) смарт-карты. Способ включает в себя получение команды записи. Эта команда может быть, например, форматированной командой, такой как команда типа PUT DATA стандарта ISO 7816-4, но функционально измененной описанным ниже образом. Для этой команды записи можно использовать командный код, отличный от командного кода INS со значением 0×DA или 0×DB, предусмотренный стандартом ISO 7816-4 (такой как неиспользованный командный код), чтобы можно было также использовать обычную команду PUT DATA. Эта полученная команда записи может включать в себя заголовок, содержащий различные параметры, такие как тип команды (в частности, ее командный код INS в случае команды согласно стандарту ISO 7816-4), и предназначенные для записи данные. Эта команда поступает из устройства, внешнего по отношению к карте (такого как банковский терминал, мобильный телефон или подключенный в компьютеру считыватель смарт-карт), в буферную память энергозависимого запоминающего устройства (такого как ЗУ RAM) смарт-карты. Получение может происходить, в частности, через входной-выходной интерфейс смарт-карты (например, с использованием контакта IO, предусмотренного стандартом ISO 7816-3).
Способ включает в себя сравнение смарт-картой параметра идентификации объекта, соответствующего команде записи, с параметром идентификации объектом, хранящимся в энергонезависимом запоминающем устройстве смарт-карты. Так, команда может быть связана с определенным объектом карты, таким как файл типа EF. Следствием этой связи является то, что команда предназначена для записи содержащихся в ней данных в объект, с которым она связана. Параметр идентификации объекта, хранящийся в энергонезависимом запоминающем устройстве, может идентифицировать последний объект, в котором смарт-карта произвела запись при помощи другой команды (записи) согласно варианту выполнения изобретения. Эта другая команда является командой такого же типа, то есть она имеет, например, такой же командный код, а именно такой же байт INS в рамках стандарта ISO 7816-4, и отличается, например, только своими параметрами (например, параметрами P1, P2 и P3 в рамках протокола T=0) и своими данными (а именно, в случае протокола T=0, байтами, следующими после пятого байта команды). Когда карту инициализируют (например, во время ее первого запуска или при каждой подаче напряжения), в качестве параметра идентификации объекта, хранящегося в энергонезависимом запоминающем устройстве, можно записать значение по умолчанию, которое не соответствует ни одному возможному объекту (например, значение «ноль» или любое другое значение, выбранное для этого произвольно и условно). Таким образом, сравнение между этим значением по умолчанию и параметром идентификации объекта, соответствующего команде записи, обязательно является отрицательным.
В случае положительного результата сравнения, то есть, если команда записи предназначена для записи в том же объекте, в котором произвела запись последняя команда записи такого же типа, способ может включать в себя следующие этапы.
Первый этап включает в себя запись предназначенных для записи данных (которые включены в команду записи) из буферной памяти (в которой они сохранены после получения содержащей их команды записи) в объект, соответствующий команде записи, на заранее определенный адрес, значение которого хранится в энергонезависимом запоминающем устройстве. Следовательно, смарт-карта может считать значение заранее определенного адреса из энергонезависимого запоминающего устройства, затем произвести запись в этом объекте на этот заранее определенный адрес. Предпочтительно этот заранее определенный адрес является относительным адресом внутри объекта. Карта может произвести адрес на абсолютный адрес, равный сумме адреса объекта (выраженного в виде абсолютного адреса) и заранее определенного адреса. Разумеется, карта может использовать защитные механизмы, отвечающие за то, чтобы запись происходила именно в надлежащем объекте (например, проверяя, что адрес, равный сумме заранее определенного адреса и размера предназначенных для записи данных минус один, действительно находится внутри объекта).
Второй этап включает в себя вычисление адреса, соответствующего сумме хранящегося заранее определенного адреса и размера записываемых данных. Это соответствует адресу, непосредственно следующему за последним записанным байтом.
Третий этап включает в себя сохранение вычисленного адреса в энергонезависимом запоминающем устройстве вместо заранее определенного адреса. Таким образом, при следующем применении команды записи такого же типа будет произведена запись при условии, что эта команда такого же типа связана с этим же объектом вследствие того, что было описано выше, при этом устройство (например, мобильный телефон), отвечающее за построение и передачу этой команды записи, не обязано запоминать предыдущий адрес и вычислять новый адрес.
В случае отрицательного результата сравнения, то есть, если команда записи предназначена для записи в объекте, отличном от объекта, в который должна была произвести запись команда записи этого же типа, или если команда записи этого же типа была задействована в первый раз, способ может содержать следующие этапы.
Первый этап включает в себя запись предназначенных для записи данных, включенных в команду записи, из буферной памяти в объект, соответствующий команде записи, на адрес по умолчанию. Предпочтительно этот адрес по умолчанию является относительным адресом внутри объекта. Таким образом, карта может производить запись на абсолютный адрес, равный сумме адреса объекта (выраженного в виде абсолютного адреса) и адреса по умолчанию. Разумеется, карта может использовать защитные механизмы, отвечающие за то, чтобы запись происходила именно в надлежащем объекте (например, проверяя, что адрес, равный сумме заранее определенного адреса и размера предназначенных для записи данных минус один, действительно находится внутри объекта).
Второй этап включает в себя вычисление адреса, соответствующего сумме адреса по умолчанию и размера записываемых данных. Это соответствует адресу, непосредственно следующему за последним записанным байтом.
Третий этап включает в себя сохранение вычисленного адреса в энергонезависимом запоминающем устройстве в качестве заранее определенного адреса. Таким образом, при следующем применении команды записи такого же типа будет произведена запись при условии, что эта команда такого же типа связана с этим же объектом вследствие того, что было описано выше, при этом устройство (например, мобильный телефон), отвечающее за построение и передачу этой команды записи, не обязано запоминать предыдущий адрес и вычислять новый адрес.
Возможный вариант выполнения касается способа, в котором параметр идентификации объекта, соответствующий команде записи, включен в команду записи. Так, например, можно использовать параметры P1 и P2 для сохранения идентификатора (Файл ID, сокращенно FID в рамках стандарта ISO 7816-4) объекта (например, Elementary File EF в рамках стандарта ISO 7816-4). Например, если предположить, что команда основана на команде UPDATE BINARY в рамках стандарта ISO 7816-4, то в параметрах P1 и P2, которые должны отображать внутренний адрес объекта, куда следует производить запись, больше нет необходимости, и их можно заменить файлом ID идентификатора объекта, где следует произвести запись.
Возможный вариант выполнения касается способа, в котором параметр идентификации объекта, соответствующий команде записи, хранится в энергозависимом запоминающем устройстве и обновляется командой выбора объекта смарт-карты. Например, можно использовать команду SELECT в рамках стандарта ISO 7816-4 (которая имеет командный код INS со значением 0×A4), чтобы выбрать файл EF, в котором последующая команда записи будет автоматически производить запись, при этом она не обязательно должна точно указывать, в каком объекте должна осуществить запись.
Возможный вариант выполнения касается способа, в котором адрес по умолчанию является нулевым адресом. Таким образом, каждый раз, когда команда записи согласно варианту выполнения изобретения производит запись в объекте, тогда как поданная другая команда записи этого же типа (если таковая была) произвела запись в другом объекте, и каждый раз, когда команда записи этого типа была задействована впервые (например, первый раз в рамках отдельного сеанса или первый раз после подачи напряжения в карту, или первый раз вообще с момента изготовления карты), способ производит запись на нулевой адрес. Разумеется, речь идет о нулевом адресе, который является относительным к рассматриваемому объекту и который соответствует началу этого объекта.
В альтернативном варианте можно использовать адрес по умолчанию, отличный от нуля. Например, если структура объектов, в которых должна производить запись команда записи согласно варианту выполнения изобретения, является такой, при которой запись возможна только на некоторые адреса и не на самое начало объекта (которое содержит, например, административные данные, которыми управляет сама карта), в качестве значения по умолчанию можно использовать подтвержденный адрес в этом объекте.
Это значение по умолчанию, если оно является общим для всех объектов и если способ применяется программным средством, может быть записано собственно в коде (код может храниться, например, в ЗУ ROM).
Адрес по умолчанию может меняться от одного типа объекта к другому типу объекта (например, в карте записаны разные значения адресов по умолчанию для каждого типа объекта). В этом случае разные значения адресов по умолчанию могут быть записаны, например, в таблице в ЗУ EEPROM или Flash, если они могут меняться или если разработчик карты не может заранее предугадать используемые типы объектов. Типами объектов могут быть, например: прозрачный файл EF, хранящий отпечатки пальцев, прозрачный файл EF, хранящий данные распознавания по лицу, прозрачный файл EF, хранящий даты, прозрачный файл EF, хранящий места, прозрачный файл EF, хранящий географические адреса (например, номер улицы, название улицы, город, страна) и т.д. Таким образом, можно отметить, что тип объекта не обязательно соответствует (хотя это и возможно) типу файла (такому как тип «прозрачный файл EF» согласно стандарту ISO 7816-4), а может соответствовать более мелкому подразделу, соответствующему содержимому этих файлов, и подлежит определению не системой применения смарт-карты, а устройством, использующим смарт-карту. В этом случае, как правило, наиболее предпочтительной является таблица в запоминающем устройстве EEPROM или Flash.
Можно также предусмотреть, чтобы значение по умолчанию было связано с каждым отдельным объектом (то есть с каждым экземпляром объекта, при этом два разных объекта могут быть связаны с разными значениями по умолчанию). Так, два прозрачных файла EF, содержащих отпечатки пальцев, могут быть связаны с разными значениями по умолчанию. Это значение по умолчанию может быть нулевым значением (или другим значением, в зависимости от типа объекта, как было указано выше), когда объект создается, затем его можно обновить. Оно может быть записано в самом объекте или вместе с объектом в перезаписываемом энергонезависимом запоминающем устройстве (например, EEPROM или Flash). Согласно возможному варианту выполнения, смарт-карта хранит только одно заранее определенное значение, независимо от числа объектов. Это заранее определенное значение инициализируют каждый раз, когда команда записи согласно варианту выполнения изобретения производит запись в новом объекте (то есть в объекте, отличном от объекта, в котором поданная последняя команда этого же типа произвела запись, или в первом объекте). В этом случае обновление значения по умолчанию, хранящегося для данного объекта, может состоять в копировании заранее определенного значения, связанного с этим объектом, чтобы использовать его в качестве значения по умолчанию. Таким образом, если при помощи команд записи одного типа внешнее устройство производит запись в первом объекте, затем во втором объекте, затем опять в первом объекте, оно будет производить запись опять в первом объекте после того, что оно записало первоначально, не накладывая ее на первоначально записанные значения. В случае, когда смарт-карта применяет автоматическое обновление значения по умолчанию, предпочтительно внутри карты создают команду повторной инициализации значения по умолчанию, которая может, например, присвоить ему значение, которое было присвоено во время создания объекта. Таким образом, при помощи команды записи согласно варианту выполнения изобретения можно заменять данные, ранее записанные в рассматриваемый объект.
Возможный вариант выполнения касается способа, в котором команда закодирована в виде команды APDU согласно стандарту ISO 7816-4. Команда записи может быть командой APDU, и возможная команда выбора тоже может быть командой APDU (речь может идти о команде SELECT согласно стандарту ISO 7816-4). Возможная команда повторной инициализации значения по умолчанию тоже может быть командой APDU.
На фиг. 1 представлено повторяющееся применение способа согласно варианту выполнения изобретения. Считыватель RDR направляет первую команду записи WRITE (FID_1, DATA_1) в смарт-карту SC согласно варианту выполнения изобретения. Первый раз смарт-карта получает команду WRITE на запись в файле с идентификатором FID_1. Следовательно, она записывает данные DATA_1 в начале файла. Считыватель направляет в смарт-карту вторую команду записи WRITE (FID_1, DATA_2). При этом смарт-карта записывает данные DATA_2 после данных DATA_1. Затем считыватель направляет в смарт-карту третью команду записи WRITE (FID_1, DATA_3). Смарт-карта записывает данные DATA_3 после данных DATA_2. Считыватель направляет в смарт-карту четвертую команду записи WRITE (FID_1, DATA_4). Карта обнаруживает, что получает команду записи в файл, отличный от того, в котором она только что произвела запись. Следовательно, она записывает данные DATA_4 в начале файла, идентификатором которого является FID_2. Считыватель направляет в смарт-карту пятую команду записи WRITE (FID_2, DATA_5). Смарт-карта записывает данные DATA_5 после данных DATA_4 в файл с идентификатором FID_2. Считыватель направляет в смарт-карту шестую команду записи WRITE (FID_1, DATA_6). Карта обнаруживает, что получает команду записи в файл, отличный от того, в котором она только что произвела запись. Она проверяет значение адреса по умолчанию для файла с идентификатором FID_1, которое было обновлено во время предыдущих записей в этот файл, и, следовательно, записывает данные DATA_6 после данных DATA_3.
Этот вариант работы представляет особый интерес, в частности, когда несколько приложений устройства работают в многозадачном режиме и могут передавать команды записи в карту. При этом карта может чередовать записи в разных файлах, и приложения устройства не занимаются деталями организации файлов и не вычисляют адреса, по которым следует производить запись. В крайнем случае, различные приложения, которые могут не сообщаться друг с другом, могут пытаться произвести запись в одном и том же файле смарт-карты, например в файле журнала записи событий по мере их наступления. При этом ни одно из двух приложений не может отдельно определить адрес, на который следует записать новое событие.
Согласно другому варианту (не показанному), смарт-карта содержит два пустых объекта (O1 и O2). Способ включает в себя последовательное получение следующих команд записи данных (например, биометрических данных D1-D7):
Write (O1, D1),
Write (O1, D2),
Write (O1, D3),
Write (O2, D4),
Write (O2, D5),
Write (O1, D6), затем
Write (O1, D7).
Данные Dl, D2 и D3 логически объединяются в цепочку в объекте O1, при этом объект O2 пока остается пустым, затем происходит логическое связывание данных D4 и D5 в объекте O2 (при этом данные D1, D2 и D3 по-прежнему остаются в объекте O1), и наконец, данные D1, D2 и D3 из объекта O1 теряются (стираются), поскольку происходит логическое связывание данных D6 и D7 в объекте O1 вместо данных D1-D3. Как только объект меняется (например, как только меняется файл FID), можно произвести запись в начало вновь выбранного объекта, стирая старые данные. Если цепочка данных D1-D3 была более длинной, чем цепочка данных D6 и D7, ее остаток может физически оставаться в памяти смарт-карты (после данных D7), хотя и не считается, что присутствует в объекте O1 (с логической точки зрения). Например, объект O1 может содержать параметр, указывающий на текущий размер (в данном случае соответствует размеру логической цепочки данных D6 и D7), и любой информацией за пределами этого размера можно пренебречь. Не стирание остатка ограничивает число операций записи в энергонезависимом запоминающем устройстве (поскольку стирание представляет собой форму записи), что может представлять интерес, в частности, для ускорения обработки (меньше операций записи) или для увеличения срока службы энергонезависимого запоминающего устройства (поскольку каждая операция записи сказывается на качестве памяти, которое обеспечено только для определенного числа циклов записи).
Возможный вариант выполнения касается способа записи данных в энергонезависимое запоминающее устройство смарт-карты при помощи электронного устройства (такого как мобильный телефон, банковский терминал и т.д.).
Способ включает в себя разделение предназначенных для записи данных устройством на подгруппы. Подгруппы являются такими, при которых размер каждой подгруппы не превышает определенного значения. Это определенное значение может быть, например, максимальным количеством записываемых данных, которое можно передать в команде записи согласно варианту выполнения, при этом команда записи имеет размер, равный наименьшему значению между размером буферной памяти энергозависимого запоминающего устройства смарт-карты (принимающего команды) и максимальным размером команды (например, при T=0 команда записи составляет не больше 260 байт и может передать не более 255 байт).
Например, терминал контроля электронного паспорта (который является частным вариантом смарт-карты) может считать отпечаток пальцев предъявителя паспорта (например, на посту пограничного контроля в аэропорту) и разбить его на смежные участки по 255 байт. По меньшей мере, один из участков, например последний участок, может иметь меньший размер, если размер отпечатка в байтах не является кратным числу 255. В этом случае каждый участок соответствует вышеупомянутой подгруппе.
Способ включает в себя построение совокупности команд записи, связанных с одним объектом карты, при этом каждая команда записи содержит соответствующую подгруппу предназначенных для записи данных.
Построение команды может, например, состоять в том, чтобы перед каждой подгруппой данных, например перед каждым блоком из 255 байт, представляющим собой часть отпечатка пальца, поместить заголовок команды записи.
Заголовок может принимать форму {CLA, INS, P1, P2, P3}, при этом каждое из значений CLA, INS, P1, P2 и P3 кодировано на одном байте, и получаемая в результате команда имеет размер 260 байт. P3 может быть равно 0×FF, чтобы показать, что 255 байт предназначенных для записи данных следуют за пятью байтами заголовка. P1 и P2 могут быть равны нулю. В альтернативном варианте P1 || P2 может представлять собой идентификатор файла, в котором команда записи предусматривает запись данных. Байт INS может иметь, например, любое значение, не указанное в стандарте ISO 7816-4, или любое значение, указанное, но не используемое данной смарт-картой. Действительно, стандарт ISO 7816-4 не настаивает на применении всех указанных в нем команд. Этот последний вариант (использование стандартного командного кода, который раньше в смарт-карте не использовался) приводит к тому, что смарт-карта не строго следует стандарту ISO 7816-4. Это несоблюдение не обязательно является недостатком (это зависит от приложений). Байт класса (CLA) может принимать любое соответствующее значение.
Способ включает в себя передачу устройством в смарт-карту каждой команды записи. Устройство направляет команды, содержащие подгруппы в том порядке, который эти подгруппы занимали в предназначенных для записи данных (до их разделения). Таким образом, данные, записываемые в энергонезависимое запоминающее устройство смарт-карты, являются идентичными данным, которые и должны были быть записаны.
Наконец, способ включает в себя обработку смарт-картой каждой принятой команды при помощи способа согласно варианту выполнения изобретения.
Согласно другому варианту выполнения, устройство принимает или считывает данные, предназначенные для записи в смарт-карте, по мере их поступления и постепенно располагает их одна за другой в карте (путем последовательного построения команд записи). В этом случае устройство не обязательно должно само создавать подгруппы, если только оно не получает сразу более 255 байт (в случае протокола T=0) или больше, чем размер буферной памяти смарт-карты (если ее размер меньше 255 байт).
В случае, когда буферная память смарт-карты имеет размер менее 260 байт, предпочтительно предусматривают передачу размера этой буферной памяти в устройство пользователя. Этот размер может фигурировать, например, в свободных байтах ATR (Answer То Reset), указанных в стандарте ISO 7816. В общем случае ограничительным фактором является скорее размер 255 байт, вытекающий из протокола T-0, чем размер буфера (который, как правило, равен, по меньшей мере, 255 байт), и в этом случае нет необходимости передавать размер буферной памяти.
Возможный вариант выполнения касается компьютерной программы, содержащей ряд команд, которые при их исполнении процессором смарт-карты позволяют осуществлять способ согласно варианту выполнения изобретения. Эти команды могут быть командами на языке «Ассемблер» или, для смарт-карт, процессор которых является программируемым по языку более высокого уровня (например, язык С или Java), - на этом более продвинутом языке.
Возможный вариант выполнения касается носителя автономного хранения, считываемого компьютером, в котором записана компьютерная программа согласно варианту выполнения изобретения. Носителем может быть, например, ЗУ ROM, Flash или EEPROM смарт-карты.
Возможный вариант выполнения касается смарт-карты SC, содержащей энергонезависимое запоминающее устройство EEPROM, энергозависимое запоминающее устройство RAM, буферную память BUF, включенную в энергозависимое запоминающее устройство, и схему PROC, ROM обработки команд записи в энергонезависимом запоминающем устройстве.
Схема может содержать процессор смарт-карты, а также запоминающее устройство (например, ЗУ ROM), содержащее программу, исполняемую процессором и осуществляющую способ согласно варианту выполнения изобретения. Показанный на фиг. 3 процессор PROC представляет собой интегральную схему в корпусе DIP. Однако здесь речь идет о схематичном отображении, и обычно процессор смарт-карты встроен в микроконтроллер, тоже содержащий различные запоминающие устройства (RAM, EEPROM, ROM…). Обычно этот микроконтроллер имеет форму кубика (или квадрата полупроводника), вырезанного из пластины и закрепленного на модуле известным способом. Эта схема может быть также выполнена полностью электронной без процессора и без программы (например, при помощи логики с фиксированной структурой или при помощи FPGA).
Схема выполнена с возможностью обработки команды, сохраненной в буферной памяти. Команда связана с параметром идентификации. Этот параметр идентификации может быть записан в энергозависимом запоминающем устройстве. Этот параметр идентификации идентифицирует объект, хранящийся в энергонезависимом запоминающем устройстве. Команда должна производить запись в этом объекте. Схема выполнена также с возможностью записи в энергонезависимое запоминающее устройство параметра идентификации FID объекта EF. Объект EF хранится в энергонезависимом запоминающем устройстве (речь может идти о вышеуказанном объекте, который связан с командой, или о другом объекте). Схема выполнена также с возможностью записи в энергонезависимое запоминающее устройство заранее определенного адреса ADDR. Этот заранее определенный адрес является адресом, находящимся внутри этого объекта EF. Схема может быть выполнена с возможностью, - во время обработки команды записи, сравнения параметра идентификации объекта, соответствующего команде записи, с параметром идентификации FID объекта EF, хранящимся в энергонезависимом запоминающем устройстве.
В случае положительного результата сравнения схема может записывать предназначенные для записи данные, включенные в команду записи, из буферной памяти в объект, соответствующий команде записи, на заранее определенный адрес, хранящийся в энергонезависимом запоминающем устройстве. Схема выполнена с возможностью вычисления адреса, соответствующего сумме хранящегося заранее определенного адреса ADDR и размера записываемых данных. Схема выполнена с возможностью сохранения вычисленного адреса в энергонезависимом запоминающем устройстве вместо заранее определенного адреса ADDR.
В случае отрицательного результата сравнения схема может записать предназначенные для записи данные, включенные в команду записи, из буферной памяти в объект, соответствующий команде записи, на адрес по умолчанию. Схема выполнена с возможностью вычисления адреса, соответствующего сумме адреса по умолчанию и размера записываемых данных. Схема выполнена с возможностью сохранения вычисленного адреса в энергонезависимом запоминающем устройстве в качестве заранее определенного адреса.
Возможный вариант выполнения касается системы, содержащей электронное устройство (такое как пара из компьютера PC и считывателя карты RDR) и смарт-карту SC согласно возможному варианту выполнения изобретения. Электронное устройство выполнено с возможностью разделения предназначенных для записи данных при помощи устройства в смарт-карте на такие подгруппы, при которых размер каждой подгруппы не превышает определенного значения. Электронное устройство выполнено с возможностью построения совокупности команд записи, связанных с одним объектом карты, при этом каждая команда содержит соответствующую подгруппу предназначенных для записи данных. Электронное устройство выполнено с возможностью передачи каждой построенной таким образом команды записи в карту.
Варианты выполнения, описанные в связи с заявленным способом, можно транспонировать на смарт-карту и систему в соответствии с изобретением, а также на компьютерные программы и на носители записи программы в соответствии с изобретением, и наоборот.
Изобретение было проиллюстрировано на частном примере, но не ограничивается этим примером. В частности, изобретение можно применять для смарт-карт в любых их видах (бесконтактные или контактные карты, защищенные ключи USB, электронные удостоверения личности, SIM-карты, банковские карты, пропуска, защищенные жетоны, электронные паспорта, хронотахографы, медицинские карты, электронные визы, карты SecureMMC и т.д.). Электронные устройства, передающие команды записи в смарт-карту, могут быть самыми разными устройствами (банкомат, автомат оплаты на платных дорогах, платежный терминал типа POS, терминал считывания медицинской карты, пункт персонализации смарт-карты, машина для изготовления смарт-карт, мобильный телефон, компьютер, оборудованный считывателем смарт-карты, пункт проверки электронных паспортов и т.д.).
Команда записи согласно варианту выполнения изобретения может представлять собой цепочку, то есть, когда буферная память имеет размер, превышающий максимальный размер такой команды, можно передавать несколько команд сразу и производить запись в энергонезависимое запоминающее устройство только во время последней из команд. Например, если буферная память позволяет содержать три команды и если предназначенные для записи данные требуют двенадцати команд, смарт-карта может сформировать цепочки из трех команд и, таким образом, осуществлять только четыре этапа записи, а не двенадцать (но на данных в три раза длиннее).
Хотя представленные примеры в основном являются примерами, основанными на протоколе T=0, изобретение может работать и на других протоколах. Например, команда записи согласно варианту выполнения изобретения может быть командой по протоколу T=1, при этом карта должна просто проверить, чтобы команда не была длиннее размера ее буферной памяти.