СПОСОБ УПРАВЛЕНИЯ ПРАВАМИ ДОСТУПА К МИКРОПРОЦЕССОРНОЙ КАРТЕ
METHOD OF MANAGING ACCESS RIGHTS IN SMART CARD

Настоящее изобретение относится к управлению правами доступа к данным, записанным в микропроцессорной карте.
Уровень техники
Обычно микропроцессорная карта содержит перезаписываемое постоянное запоминающее устройство типа Flash или EEPROM (электрически стираемое программируемое постоянное запоминающее устройство), процессор или микроконтроллер и энергозависимое запоминающее устройство, или оперативную память (RAM).
Права доступа обеспечивают конфиденциальность данных, содержащихся в карте, и эта конфиденциальность является определяющей во многих вариантах применения, например, в банковских картах или в SIM-картах, используемых в мобильных телефонах.
Когда карту вставляют в прибор, выполнение команд, таких как считывание или запись данных, возможно только при соблюдении специальных условий.
Этими условиями являются, например, предварительная аутентификация путем проверки кода или установление защищенного канала между устройством считывания карты и терминалом, с которого поступают команды.
Управление правами доступа, которое позволяет определить, соблюдаются ли условия, необходимые для выполнения команды, обеспечивается программой оценки прав, называемой шаблоном, заранее записанной в запоминающее устройство карты и выполняемой ее процессором.
При получении запроса на выполнение команды, такой как считывание массива данных, программа оценки прав сначала идентифицирует права доступа, связанные с этими данными.
Эти права, хранящиеся в карте, определяют условия, необходимые для выполнения каждой команды над рассматриваемыми данными, например, необходимо произвести аутентификацию путем проверки кода, чтобы выполнить команду на считывание.
После этого программа определяет, выполняются ли указанные условия, путем проверки регистра, называемого регистром состояния защиты карты и записанного в этой карте, в котором обновляется список предварительно подтвержденных в качестве достоверных событий.
Этими событиями могут быть, например, аутентификация путем проверки кода, действительное установление защищенного канала связи между картой и терминалом, с которым она взаимодействует, или другое событие, при этом каждое событие находится в состоянии, называемом подтвержденным, если оно успешно выполнено.
На практике, известные программы и архитектура управления правами доступа не всегда являются удовлетворительными.
Это связано с тем, что общая структура прав доступа является сложной, так как каждый массив записанных в карте данных, например, каждый файл имеет свои собственные права доступа.
Кроме того, для одного и того же файла эти права определяют условия, которые не совпадают от одной команды к другой.
Кроме того, для одной и той же команды, выполняемой на одном и том же файле, условия различаются в зависимости от того, осуществляет ли карта связь с терминалом путем электрического контакта или при помощи беспроводной связи.
Считывание файла может потребовать аутентификации, кроме того, запись в этот файл может дополнительно потребовать установления защищенного канала, а его стирание может потребовать другой аутентификации при помощи другого кода, отличного от первого.
Для другого файла считывание, запись и стирание можно производить, не соблюдая никаких условий.
Таким образом, каждый файл имеет присущие только ему права, и система прав доступа может быть сама по себе сложной, так как необходимо задействовать множество условий, таких как множество уровней аутентификации при помощи разных кодов, установление защищенных каналов или других условий.
Кроме того, эти условия могут представлять собой комбинации: например, право записи данных в файл может быть предоставлено, если: была произведена аутентификация первого уровня, и был установлен защищенный канал или если аутентификация второго уровня была успешно осуществлена.
Таким образом, права доступа занимают большой объем памяти в карте, тогда как емкость памяти микропроцессорной карты сама по себе ограничена. Кроме того, на время выполнения программы оценки прав влияет необходимость осуществления множества считываний, чтобы определить, может или не может быть выполнена команда на данном файле.
Механизмы управления правами доступа описаны во множестве стандартов, таких как стандарты ISO 7816-4 или ISO 7816-9, но все они имеют недостатки: они являются мало открытыми и требуют слишком большого времени для оценки.
Объект изобретения
Цель изобретения - обеспечить архитектуру управления правами доступа, которая позволяет устранить вышеуказанные недостатки и сочетать совместимость записи данных, высокую скорость выполнения программы управления правами, а также достаточную безопасность работы.
Сущность изобретения
В этой связи объектом настоящего изобретения является способ управления правами доступа, связанными с данными микропроцессорной карты, таким образом, чтобы поставить выполнение команды, такой как команда на считывание этих данных, в зависимость от подтверждения логической комбинации нескольких событий, обнаруженных картой, таких как аутентификация, путем проверки кода,
в котором состояние подтверждения каждого события обновляют в регистре состояния защиты карты;
в котором права доступа к массиву данных записывают в список команд, с которым связан список событий, содержащий для каждого содержащегося в нем события идентификатор этого события,
при этом список команд образован парами, каждая из которых связывает команду с логической комбинацией предназначенных для подтверждения событий, которая определяется по уровням в списке событий для каждого из событий, образующих эту комбинацию;
в котором, при получении запроса на выполнение команды на массиве данных, разрешение или запрет на выполнение этой команды устанавливают следующим образом:
- в списке команд, связанном с этими данными, ищут пару, содержащую требуемую команду, и блокируют выполнение в случае неудачного поиска;
- и, в случае удачного поиска, из регистра состояния защиты карты определяют, подтверждена или не подтверждена комбинация событий, связанная с командой, для разрешения или блокировки выполнения команды.
Изобретение относится также к описанному выше способу, в котором каждую команду, записанную в список команд, кодируют в виде двоичного слова, характеризующего идентификатор этой команды. Следует отметить, что не обязательно все возможные команды вносятся в этот список команд.
Изобретение относится также к описанному выше способу, в котором список событий содержит также одну или несколько комбинаций событий, при этом каждую комбинацию определяют в нем по уровням в списке команд для каждого из событий, образующих эту комбинацию, причем этот список упорядочен таким образом, чтобы каждая логическая комбинация событий находилась после образующих ее событий.
Изобретение относится также к описанному выше способу, в котором список событий начинается с двоичного слова, характеризующего число событий и комбинаций событий, содержащихся в этом списке, причем этот список может быть пустым.
Изобретение относится также к описанному выше способу, в котором каждое событие или комбинацию событий, записанные в этот список, кодируют в виде двоичного слова, начинающегося с первого двоичного индикатора, указывающего, идет ли речь о событии или о логической комбинации событий.
Изобретение относится также к описанному выше способу, в котором каждое двоичное слово, соответствующее событию, содержит идентификатор этого события, закодированный в конце слова.
Изобретение относится также к описанному выше способу, в котором каждое слово, соответствующее логической комбинации событий, содержит ряд двоичных индикаторов, находящийся в конце слова, в котором каждый двоичный индикатор, имеющий значение «ОДИН», указывает, что событие, имеющее в списке событий уровень, на котором находится этот индикатор в ряду, является частью этой логической комбинации событий.
Изобретение касается также описанного выше способа, в котором второй двоичный индикатор каждого слова, соответствующего логической комбинации событий, указывает, идет ли речь о конъюнктивной или дизъюнктивной комбинации.
Объектом изобретения является также микропроцессорная карта, содержащая средства для осуществления описанного выше способа.
Краткое описание чертежей
Фиг.1 - схема списка событий и списка команд, связанных с массивом данных, в способе в соответствии с настоящим изобретением.
Фиг.2 - схема слова, характеризующего простое событие, в способе в соответствии с настоящим изобретением.
Фиг.3 - схема слова, характеризующего составное событие, в способе в соответствии с настоящим изобретением.
Подробное описание изобретения
Изобретение применяется, в частности, для микропроцессорной карты, содержащей средства запоминания, такие как энергозависимое запоминающее устройство и энергонезависимое запоминающее устройство, а также процессор и программу управления правами доступа к файлам или массивам данных, записанным в этой карте.
Настоящее изобретение основано на принципе определения формата записи прав доступа, изменяемого в зависимости от потребности, в сочетании с алгоритмом, который обеспечивает быструю оценку прав доступа.
Как правило, команда, выполняемая на массиве данных или файле, зависит от предварительного подтверждения события или комбинации событий, то есть подтверждения события, которое может быть либо простым, либо составным. Поэтому в дальнейшем тексте описания события как таковые называются простыми событиями, а комбинации событий называются составными событиями.
Подтверждение простого события соответствует, например, проверке кода PIN1 или PIN2 или пароля, или установлению защищенного канала связи.
Составное событие является логической комбинацией «И» или «ИЛИ», то есть конъюнкцией или дизъюнкцией нескольких простых событий, и его можно также определить как логическую комбинацию нескольких составных событий, сводящихся к комбинации простых событий.
a
b
x
События нумеруются и управляются как цифровые значения или идентификаторы, и состояние защиты карты, обозначенное (Evt, Evt, … Evt), является списком подтвержденных событий на данный момент, его записывают и обновляют в регистре запоминающего устройства микропроцессорной карты.
Если система прав доступа использует только простые события, формат записи прав доступа в основном содержит список команд, обозначенный List_Cmd и схематично показанный на фиг.1, который связан с каждым массивом данных или файлом.
1
k
Речь идет о списке пар или кортежей, обозначенных Cpl…Cpl, каждая из которых содержит команду и событие, при этом в данном списке не обязательно присутствуют все существующие команды.
1
1
1
k
k
k
'
'
В примере, показанном на фиг.1, пара Cpl связывает команду Cmd с событием Evt , а пара Cpl связывает команду Cmd с событием Evt .
1
k
'
'
Каждое событие Evt …Evt  представлено в списке команд своим цифровым идентификатором, который позволяет, например, определить его состояние путем простого считывания регистра состояния защиты карты.
При получении запроса на выполнение команды, обозначенной C, на массиве данных решение о разрешении или запрете выполнения этой команды принимают путем поиска команды C в списке команд List_Cmd, связанном с рассматриваемым массивом данных.
В случае безуспешного поиска команда C не выполняется. В случае успешного поиска команда выполняется, если событие, связанное с командой C в списке List_Cmd, подтверждено в регистре состояния защиты, если нет - команда не выполняется.
Если система управления правами доступа использует составные события, к списку команд List_Cmd добавляют список событий, схематично показанный на фиг.1, где он обозначен как List_Evt.
Этот список событий используют вместе со списком команд для определения составных событий:
Список событий содержит простые события, обозначенные своими идентификаторами, а каждое составное событие определено в списке команд по уровню в списке событий, составляющих его событий.
Список событий может также содержать составные события, что позволяет определять сложные логические комбинации, то есть комбинации, использующие операторы «ИЛИ» и «И». В этому случае каждое составное событие в списке событий определяют по уровню, в этом списке событий, образующих его простых или составных событий.
Таким образом, в любом случае каждое простое событие, участвующее в определении составного события, обязательно появляется в списке событий.
Если система прав доступа использует также простые события, которые сами по себе обуславливают выполнение команды, эти простые события появляются в списке команд аналогично случаю, когда система прав использует только простые события.
Простые события и составные события кодируют двоичными словами, соответственно Mot_Evt_Spl и Mot_Evt_Cps, которые имеют разные структуры.
Структура двоичного слова Mot_Evt_Spl, соответствующая простому событию, схематично показана на фиг.2. Это двоичное слово, то есть эта группа битов или двоичных индикаторов, содержит первый бит, обозначенный Spl/Cps, после которого следует последовательность битов, обозначенная S-P2.
Первому биту Spl/Cps, который является маркером, указывающим, что идет ли речь о простом или составном событии, придают значение, характеризующее простое событие. В нем нет необходимости, если управляют только простыми событиями.
Последовательность битов S-P2 является кодированием по степеням двойки идентификатора события, позволяющего, например, определить его состояние подтверждения путем считывания в регистре состояния защиты карты.
6
Если последовательность S-P2 содержит 4 бита, то возможны 16 простых событий: при этом простое событие, идентификатор которого является цифровым значением «3»и которое обозначено Evt3, кодируют в виде [0 -0 0 1 1], и простое событие, идентификатор которого является значением «6» и которое обозначено Evt, кодируют в виде [0 -0 1 1 0].
Структура двоичного слова Mot_Evt_Cps, определяющего составное событие, схематично показана на фиг.3. Это двоичное слово содержит первый бит, обозначенный Spl/Cps, за которым следует второй бит, обозначенный ИЛИ/И, за которым следует последовательность битов, обозначенная S-Rg.
Биту Spl/Cps, который является маркером, указывающим, что идет ли речь о простом или составном событии, придают значение, характеризующее составное событие. Второй бит, обозначенный И/ИЛИ, является маркером, указывающим, что составное событие является конъюнкцией или дизъюнкцией нескольких событий.
Последовательность битов S-Rg определяет события, образующие составное событие, которые в ней закодированы по уровням, а не по степеням двойки: в этой последовательности уровень каждого бита, имеющего значение 1, ссылается на событие того же уровня в списке событий List_Evt.
Это решение кодирования по уровню позволяет существенно сократить длину слова Mot_Evt_Cps: составное событие может состоять из числа событий, соответствующего просто длине последовательности S-Rg.
1
2
3
Таким образом, для размера списка событий 6, то есть, если N равно 6, составное событие «Evt ИЛИ Evt ИЛИ Evt» кодируют двоичным словом [1 -0 -0 0 0 1 1 1].
В вышеуказанном слове первый бит Spl/Cps имеет значение 1, указывая, что событие является составным, второй бит И/ИЛИ, имеющий значение 0, обозначает, что речь идет о логической комбинации «ИЛИ», и три следующих бита имеют значение 1, указывающее, что речь идет о комбинации событий уровней 1, 2 и 3 в списке событий List_Evt.
4
3
Аналогично, составное событие «Evt И Evt» кодируют словом [1 -1 -0 1 1 0 0 0].
Каждое составное событие является конъюнкцией или дизъюнкцией нескольких событий списка событий List_Evt, поэтому составное событие может состоять из событий, которые, в свою очередь, тоже являются составными. Это позволяет образовывать сложные логические комбинации, то есть комбинации, использующие конъюнкцию и дизъюнкцию.
1
2
3
В этой связи приведенный ниже пример иллюстрирует кодирование составного события «(Evt ИЛИ Evt) И Evt»:
[N=5]
[101]
3 битов
[Evt1]
[0-0001]
5 битов
[Evt2]
[0-0010]
5 битов
[Evt3]
[0-0011]
5 битов
[Evt4=Evt1 ИЛИ Evt2]
[1-0-000011]
8 битов
[Evt4 И Evt3]
[1-1-001100]
8 битов
Как и в случае управления простыми событиями, управление правами доступа системы, содержащей составные события, обеспечивается путем ссылки на регистр состояния защиты карты.
При получении запроса на выполнение команды C на массиве данных решение о разрешении или об отказе выполнения этой команды принимается после поиска команды C в списке команд List_Cmd, связанном с рассматриваемым массивом данных. Если поиск оказался безуспешным, команда C не выполняется.
Если поиск увенчался успехом, команда выполняется, если событие, связанное с командой C в списке List_Cmd, подтверждено.
Если речь идет о простом событии, путем считывания регистра состояния защиты карты определяют, является ли это событие подтвержденным или нет, чтобы разрешить или запретить выполнение команды.
Если речь идет о составном событии, определяющую его логическую комбинацию идентифицируют из списка событий List_Evt, к которому отсылает список команд List_Cmd. Затем, путем считывания регистра состояния защиты карты определяют, проверена ли эта логическая комбинация или нет, чтобы разрешить или запретить выполнение команды.
Таким образом, формат записи прав доступа можно модулировать в зависимости от потребностей, поскольку размер и присутствие каждого элемента можно определить с максимальной точностью для каждого случая использования, то есть для каждого применения микропроцессорной карты.
CMD
EVT
DAC
Изменяемыми параметрами являются максимальное число существующих команд, обозначенное N; максимальное число возможных событий, обозначенное N; и максимальное число событий, которые могут появиться в списке событий, обозначенное N.
Для управления очень простыми правами, предполагающими только команды считывания (READ) и записи (WRITE) и использующими только следующие простые события: «всегда», обозначенное [ALL]; «никогда», обозначенное [NEV]; «проверка PIN-кода», обозначенное [PIN]; «установление защищенного канала», обозначенное [SM], система может иметь следующие значения параметров:
CMD
N=2: команды в этом случае кодируют только одним битом: [READ]=0 и [WRITE]=1.
DAC
N=0: поскольку присутствуют только простые события, список List_Evt и бит Spl/Cps не являются необходимыми.
EVT
N=4: простые события кодируют последовательностью S-P2, содержащей два бита: [ALL]=00; [PIN]=01; [SM]=10; [NEV]=11.
Для права доступа, соответствующего постоянно разрешенному считыванию и записи, разрешенной, только если проверен PIN-код, кодирование можно осуществлять только на 6 битах, как показано ниже:
[READ]
[0]
1 бит
[ALL]
[00]
2 бита
[WRITE]
[1]
1 бит
[PIN]
[01]
2 бита
Что же касается очень открытой системы, то можно взять следующие значения:
CMD
N=64: команды при этом кодируют 6 битами.
EVT
N=128: простые события кодируют 8 битами, включая бит Spl/Cps и 7 битов, соответствующих последовательности S-P2, выделенной для их идентификаторов, кодированных по второй степени.
DAC
N=8: составные события кодируют 10 битами, в том числе бит Spl/Cps, бит ИЛИ/И и 8 битов, соответствующих последовательности S-Rg.
Таким образом, каждое составное событие может быть комбинацией от одного до восьми событий, взятых из первых 8 событий в списке ListEvt.
Таким образом, каждый элемент списка команд, то есть каждую пару, характеризующую команду и связанное с ней событие, кодируют 14 битами для простого события и 16 битами для составного события.
При таких параметрах можно представить следующий пример, описывающий права доступа для следующих условий: считывание разрешено, если проверен код PIN1; запись разрешена, если проверен код PIN2 и установлен защищенный канал; стирание разрешено, если проверен код PIN3 или если установлен защищенный канал:
[N=4]
[0100]
4 бита
[SM]
[0-0001111]
8 битов
[PIN2]
[0-0000010]
8 битов
[PIN3]
[0-0000011]
8 битов
[READ]
[000001]
6 битов
[PIN1]
[0-0000001]
8 битов
[WRITE]
[000010]
6 битов
[PIN2 И SM]
[1-1-00000011]
10 битов
[DELETE]
[000011]
6 битов
[PIN3 ИЛИ SM]
[1-0-00000101]
10 битов
Таким образом, все права доступа, связанные с этими данными или с этим файлом, закодированы только 74 битами.
Алгоритм, применяемый программой оценки прав доступа, возвращает значение «ИСТИНА», если для доступа к файлу соблюдены необходимые условия, и в противном случае возвращает значение «ЛОЖЬ».
a
b
x
Чтобы определить, разрешено или запрещено право доступа, программа сначала идентифицирует запрашиваемую команду, обозначенную С, а также состояние защиты карты, обозначенное {Evt, Evt, … Evt}.
DAC
a
b
x
На первом этапе, если список событий присутствует, то есть, если N не равно 0, программа идентифицирует простые события, появляющиеся в списке List_Evt, которые также присутствуют в состоянии защиты карты {Evt, Evt, … Evt}.
Иначе говоря, она определяет простые события из списка прав доступа, которые действительно подтверждаются состоянием защиты карты, и записывает это состояние.
После этого для каждого составного события, присутствующего в списке событий, если список содержит составные события, программа проверяет, подтверждено оно или нет в зависимости от состояния вышеуказанных записанных событий, и тоже записывает это состояние.
Список событий упорядочен следующим образом: простые события идут первыми, за ними могут следовать составные события таким образом, чтобы события, на которые они ссылаются, предшествовали им в списке. Благодаря такому порядку, оценку права доступа можно произвести за один проход, без возврата.
После этого программа ищет команду C в списке команд и, если команда C в этом списке отсутствует, возвращает значение «ЛОЖЬ», поскольку по договоренности отсутствие искомой команды соответствует условию «никогда».
Если команда C присутствует в списке, программа оценивает подтверждение связанного с ней события, которое является событием, появляющимся в паре, содержащей команду C.
Если речь идет о простом событии, его состояние подтверждения можно определить путем простого считывания в регистре состояния защиты карты. Если речь идет о составном событии, его состояние подтверждения определяют на основании состояний, записанных после первого этапа.
После этого программа возвращает значение «ИСТИНА» или «ЛОЖЬ» в зависимости от того, подтверждено ли связанное с командой событие или нет.
CVD
EVT
DAC
Для оптимизации поиска команды можно использовать параметры N, N, N, чтобы все элементы были записаны на полных байтах. Можно также предусмотреть, чтобы простые и составные события имели одинаковый размер.