Replies: 5 comments
|
Модельные сертификаты (включая линк-сертификат): https://github.com/bcrypto/btok/blob/master/model/certs/init.sh. |
|
Опишем, каким образом выполняется аутентификация терминала перед криптографическим токеном (КТ) согласно TR-03110/part3, и приведем основные отличия от СТБ 34.101.79. В TR-03110/part3 аутентификация терминала выполняется по защищенному соединению после успешной аутентификации по протоколу PACE (Password Authenticated Connection Establishment, установление соединения с аутентификацией по паролю). Для аутентификации по PACE может использоваться пароль CAN, PIN или PUK. Для аутентификации терминала используется следующая последовательность команд:
Команды 1 и 2 предназначены для проверки сертификатов и выполняются для каждого сертификата цепочки (линк-сертификата, сертификата подчиненного УЦ, сертификата терминала), а команды 3 - 5 предназначены для инициализации и выполнения протокола аутентификации терминала. При выполнении команды 2 используется процедура проверки сертификата, которая обеспечивает, в том числе и обновление точек доверия. При аутентификации терминала с использованием команд 3 - 5 применяется действительный сертификат терминала, переданный на шаге 2. В случае, если требуется только обновить точки доверия, команды 1 и 2 могут быть вызваны без последующего выполнения команд 3 - 5. Командой 1 через передачу идентификатора владельца сертификата (соответствует компоненту Процедура проверки сертификата выполняется для каждого сертификата цепочки. Если у КТ отсутствует внутренний аппаратный таймер, то процедура включает следующие шаги:
Для проверки первого сертификата из цепочки (линк-сертификата или сертификата подчиненного УЦ) должен использоваться открытый ключ, соответствующий точке доверия. Идентификатор В СТБ 34.101.79 для аутентификации терминала используется следующая последовательность команд:
Команда 1 инициализирует протокол аутентификации терминала, команда 2 используется для проверки сертификатов и выполняется для каждого сертификата цепочки, а команда 3 - применяется для выполнения шагов протокола. Сравнивая используемые в TR-03110 и СТБ 34.101.79 для аутентификации терминала команды и порядок их вызова можно видеть следующие отличия, связанные с проверкой сертификатов:
Отметим также, что в СТБ 34.101.79 при выполнении протокола BPACE (аналога протокола PACE) не предусмотрен возврат идентификаторов открытых ключей точек доверия, как это возможно в TR-03110. |
|
Механизм раннего информирования о точках доверия в каомандах управления BPACE избавляет от необходимости прямого чтения В связи с этим два вопроса.
|
|
По поводу первого вопроса (изменение команды BPACE для раннего информирования КП о точках доверия). Для выполнения шагов протокола BPACE используется цепочка из 2-x команд General Authenticate. В текущей редакции СТБ 34.101.79 при последнем вызове команды возвращается RDF = der(7C, der(83,M4) ), где M4 — сообщение протокола (является имитовставкой длины 8 октетов). Для информирования КП о точках доверия вместо текущего RDF можно возвращать RDF' = der(7C, der(83,M4) || der(84,CAR) [|| der(85,CAR')]). Отметим следующие:
Отметим также, что протокол PACE/BPACE выполняется между клиентской программой (КП) и КТ. Поэтому после выполнения PACE/BPACE информация о точках доверия, доступных на КТ, должна быть передана от КП на терминал. В TR-03110 способ передачи такой информации никак не регламентируется. |
|
По поводу второго вопроса (изменение команд BAUTH для раннего информирования терминала). Для команды "MSE: Set AT", используемой при инициализации протокола аутентификации терминала, не допускается возврат от КТ каких-либо данных (в компоненте RDF). Поэтому, в последовательности команд, используемой при аутентификации терминала, можно разрешить выполнение дополнительной команды, возвращающей доступные на КТ точки доверия. Данная команда должна вызываться после инициализации протокола BAUTH (команды "MSE: Set AT") и до проверки цепочки сертификатов (команды "PSO: Verify Certificate"). В качестве такой команды может использоваться, например, стандартная команда чтения данных "Get Data", для которой INS = CA, в P1||P2 содержится значение 0200 (возвратить информацию о точках доверия), CDF отсутствует, а в RDF возвращается содержимое файла EF.CVCA. В этом случае, для аутентификации терминала с передачей от КТ информации о точках доверия должна использоваться следующая последовательность команд:
Для аутентификации терминала вызов команды "Get Data" можно сделать необязательным. Можно также, как и для рассмотренной выше модификации протокола BPACE, ввести новый идентификатор протокола BAUTH (протокол BAUTH с передачей информации о точках доверия), который следует передавать в команде "MSE: Set AT" вместо стандартного идентификатора. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Проблематика
Срок действия криптографического токена (КТ) может выходить за срок действия
корневого сертификата, записанного на токен. После перехода на новый корневой
сертификат подчиненные ему сертификаты терминалов не будут приниматься КТ и
работа с токеном будет заблокирована.
Для сохранения работоспособности токена в его криптографической архитектуре
следует предусмотреть механизм добавления корневых сертификатов или, более
широко, любых других сертификатов корневого УЦ, называемых точками доверия.
Предлагается использовать подход, предложенный в стандарте TR-03110/part3 [1].
Стандарт разработан в ФРГ, распространяется на ЕС.
В [1] в качестве точки доверия используется либо корневой сертификат,
либо связной или линк- сертификат. Оба сертификата принадлежат корневому УЦ.
Подпись корневого сертификата проверяется на собственном открытом ключе,
подпись линк-сертификата --- на открытом ключе корневого сертификата или
предыдущего линк-сертификата. Линк-сертификаты связаны друг с другом, отсюда и
название.
Линк-сертификат загружается в КТ терминалом с помощью той же команды,
которая используется при аутентификации терминала перед КТ. При выполнении
команды проверяется, что передан линк-сертификат и, если это так и сертификат
признан действительным, он устанавливается в качестве точки доверия. Логика
работы с КТ не меняется, логика работы КТ меняется незначительно, новые команды
вводить не требуется. Поэтому решение [1] представляется нам удобным и
предпочтительным.
Далее мы описываем решение [1], дополняя его недостающими деталями.
Сертификат, открытый ключ которого используется для проверки линк-сертификата,
в настоящем документе мы называем пред-сертификатом. Термин "пред-сертификат"
не является окончательным, может меняться в будущих редакциях документа.
Уточнения СТБ 34.101.79
Настоящий документ предполагает внесение в СТБ 34.101.79 следующих поправок:
В инфраструктуре КТ имеется единственный корневой УЦ. Идентификатор
BYCA0NNN, который указывается в полеcertAuthorityReferenceкорневогосертификата, следует интерпретировать как "как корневой сертификат номер
NNN". (В СТБ этот идентификатор интерпретировался как "сертификат корневогоУЦ номер
NNN").При выпуске КТ в обращение на него записывается единственный корневой
сертификат. (В СТБ допускается запись нескольких корневых сертификатов).
Сроки действия сертификатов:
(В СТБ сроки действия не определялись).
В СТБ 34.101.79[12.3.2] требуется, чтобы команда
<PSO: Verify Certificate>выполнялась после команды
<General Authenticate>, которая отвечает заинициализацию протокола BAUTH. Для загрузки линк-сертификатов вне контекста
BAUTH разрешается прямой вызов
<PSO: Verify Certificate>.Линк-сертификаты: содержание
Линк-сертификатам назначаются последовательные серийные номера. Нумерация
ведется от 1, пропуски номеров не допускаются. Серийный номер 0 резервируется
для начального корневого сертификата. Серийные номера кодируются тремя
десятичными цифрами:
000,001,002и т.д.Серийный номер линк-сертификата
NNNи предыдущий серийный номерMMMуказываются в полях
certHolderReferenceиcertAuthorityReference--- этиполя должны принимать значения
BYCA0NNNиBYCA0MMMсоответственно.Сертификат с номером
MMM-- это пред-сертификат для линк-сертификата сномером
NNN.Другие требования к содержанию линк-сертификатов:
Срок действия линк-сертификата --- 5 лет.
Дата начала действия линк-сертификата должна быть позже даты начала действия
пред-сертификата.
Дата начала действия линк-сертификата должна быть не менее чем на 10 дней
раньше даты окончания действия пред-сертификата.
Дата начала действия линк-сертификата не должна быть раньше даты его
фактического выпуска.
Примечание. Требование мотивировано тем, что дата начала действия
сертификата, признанного корректным, используется КТ для оценки текущей даты.
Сроки действия линк-сертификата и пред-сертификата его пред-сертификата,
если таковой имеется, не должны пересекаться.
Права доступа к прикладным программам eId и eSign в линк-сертификате
должны совпадать с соответствующими правами в пред-сертификате.
Примечание. Требование может быть пересмотрено или вообще исключено.
При развитии инфраструктуры могут появляться новые флаги доступа (в данный
момент зарезервированные на будущее), и эти флаги могут открываться через
настройки в выпускаемых линк-сертификатах.
Линк-сертификаты: выпуск
Корневой УЦ должен выпускать очередной линк-сертификат при приближении к
окончанию срока действия текущей точки доверия (корневого сертификата или
линк-сертификата). При выпуске линк-сертификата УЦ должен обеспечить
выполнение требований к его содержанию, перечисленных в предыдущем пункте.
При выпуске линк-сертификатов УЦ не должен допускать ветвлений --- ситуаций,
когда у двух различных линк-сертификатов совпадает пред-сертификат.
Вместе с линк-сертификатом УЦ должен выпускать корневой сертификат с тем же
ключом, тем же серийным номером, теми же правами доступа к прикладным
программам и тем же сроком действия.
В корневом сертификате оба поля
certHolderReferenceиcertAuthorityReferenceдолжны принимать значение
BYCA0NNN, гдеNNN--- серийный номер.Примечание. Актуальный корневой сертификат (а не соответствующий ему
линк-сертификат) будет записываться на КТ при выпуске токена.
Загрузка линк-сертификата: терминал
При аутентификации перед КТ терминал передает токену цепочку сертификатов.
Цепочка начинается сертификатом, который непосредственно подчинен одному из
сертификатов корневого УЦ (точке доверия), и заканчивается сертификатом терминала.
Примечание. Если сертификат терминала выпускается корневым УЦ, то цепочка
будет включать только этот сертификат.
Сертификаты цепочки загружаются на КТ по-отдельности, друг за другом.
Используется команда
<PSO: Verify Certificate>(см. СТБ 34.101.79[12.2.21]).Каждый переданный сертификат проверяется, в случае ошибки загрузка цепочки и
вся аутентификация прерываются.
Одна из причин ошибки -- отсутствие на КТ актуальных точек доверия. Для снятия
ошибки терминал загружает линк-сертификаты, выполняя следующий алгоритм:
серийных номеров. Пусть
(Cert_1,..., Cert_n)-- итоговый список.На шаге 2 устанавливается доверие одному из линк-сертификатов, а затем на шаге
4 это доверие распространяется на более поздние линк-сертификаты.
Алгоритм возвращает
i, если удалось загрузитьCert_iи не удалось загрузитьсертификаты с большими серийными номерами. Возврат
0означает, что не удалосьзагрузить ни одного линк-сертификата.
Могут использоваться другие алгоритмы загрузки актуальных линк-сертификатов.
В частности, терминал может предварительно сузить список
(Cert_1,..., Cert_n),используя информацию о загруженных точках доверия из файла
EF.CVCA(см. далее).
Загрузку линк-сертификатов можно выполнять в рамках протокола BAUTH, после
вызова
<General Authenticate>. В случае успеха загрузки можно перейтик загрузке цепочку сертификатов терминала, оставаясь в рамках протокола.
Загрузка линк-сертификата: криптографический токен
КТ хранит в постоянной памяти от одной до двух точек доверия. Первоначальная
точка доверия записывается на КТ при выпуске токена -- это корневой
сертификат (самостоятельный или ассоциированный с линк-сертификатом). Точки
доверия добавляются и обновляются в процессе эксплуатации токена.
При обработке команды загрузки сертификата КТ выполняет все действия,
определенные в СТБ 34.101.79 (в том числе обновляет оценку текущей даты).
Дополнительные шаги после того, как сертификат признан действительным:
certAuthorityReference. Если a) поле имеет видBYCA0NNN(обрабатывается линк-сертификат) и b) порядковый номер
NNNбольше обоихпорядковых номеров текущих точек доверия, то атомарно ("все или ничего")
выполнить следующие шаги:
номером;
(команде
<PSO: Verify Certificate>предшествует команда<General Authenticate>);Примечание. Поскольку линк-сертификат признан действительным, среди точек
доверия есть сертификат с предыдущим серийным номером. Отсюда следует, что
если КТ хранит две точки доверия, то это сертификаты с последовательными
серийными номерами. Хранение двух точек полезно для взаимодействия с
"отставшими" терминалами.
Файл
EF.CVCAСсылки на актуальные точки доверия (корневые сертификаты или линк-сертификаты)
указываются в элементарном файле
EF.CVCA. Ссылки представлены строкой октетоводной из двух форм:
CAR || 0x0000000000000000;CAR || CAR'.Здесь
CARиCAR'--- поляcertAuthorityReferenceточек доверия (8 октетов).Строка первой формы соответствует случаю, когда на КТ хранится одна точка
доверия, строка второй формы --- когда хранится две точки. В обоих случаях файл
EF.CVCA состоит из 16 октетов.
При наличии двух точек доверия серийный номер
CARдолжен быть (на единицу)больше серийного номера
CAR'.Файлу
EF.CVCAдолжен быть назначен идентификатор0x541C.Должно быть разрешено чтение файла
EF.CVCAв состояниях PS и AS.Примечание. Терминал может использовать файл
EF.CVCAдля уточнения серийныхномеров недостающих линк-сертификатов, которые следует загрузить на КТ при
ошибке аутентификации перед КТ. Из-за ошибки терминал не имеет доступа к
EF.CVCA,но может получить файл от клиентской программы, которая прошла парольную
аутентификации и поэтому может прочитать
EF.CVCA.Литература
[1] Technical Guideline TR-03110 "Advanced Security Mechanisms for Machine
Readable Travel Documents and eIDAS Token~--- Part 3: Common Specifications",
Version 2.21, 2016.
All reactions