bcrypto / btok

Cryptographic tokens
4 stars 4 forks source link

Issues23-39-22-48-31-34 #45

Closed agievich closed 5 years ago

agievich commented 5 years ago

Напомню оставшиеся предложения/вопросы из #23:

  1. Зафиксировать жесткие длины certAuthorityReference, certHolderReference (14 символов).
  2. Зафиксировать жесткую длину серийного номера (12 символов).

Не реализовано. Для обсуждения.

agievich commented 5 years ago

Добавил в этот PR реакцию на #39: уточнил детали управления паролями. Параллельно внес незначительные редакционные правки в раздел 12.2 (Описание операций).

Логика управления паролями довольно сложная. Начал описывать ее в виде модели для пакета Sismic (https://sismic.readthedocs.io). Начало в ./model/pwd.yaml. По хорошему, моделью конечного автомата нужно закрыть весь функционал КТ.

agievich commented 5 years ago

Добавил реакцию на #22: новые AID

andrewkostevich commented 5 years ago
  1. По тексту п. 7.1. Серийный номер КТ в группе DG1 должен устанавливаться в соответствии с правилами, заданными в СТБ 34.101.78 для идентификационного атрибута serialNumber. Cерийный номер должен начинаться с префикса ’IDCBY’. Пример: ’IDCBY-590082394654’.
  2. По тексту п. 9.1 Компонент certHolderReference идентифицирует субъекта (владельца) сертификата. ... Если же субъектом является КТ или терминал, то идентификационная строка должна быть получена добавлением к серийному номеру субъекта префикса ’BY’. Например, ’BY590082394654’.

Если оттолкнуться от:

и если СТБ 34.101.78 согласованно установит идентификационный атрибут serialNumber для eID вида IDCBY-MP1234567, то в случае certHolderReference для КТ: серийный номер - это строка длиной 9 символов, идентификационная строка получается добавлением префикса BY. Общая длина certHolderReference - 11 символов.

Для терминала ограничений на формат серийного номера нет, кроме как СТБ 34.101.78, где это PrintableString длиной до 64. Следует оценить число терминалов, грубо:

Если для номера терминала использовать PrintableString, то длина номера в 12 символов вполне нормальная и общая длина certHolderReference (с префиксом BY) составит 14 символов.

agievich commented 5 years ago

Ограничение на длину серийного номера уже введено: https://github.com/bcrypto/btok/blob/issue23/spec/09Certs.tex#L72. Действительно, это ограничение следует продублировать в разделе 7. Будет сделано.

Для общего понимания. Дублирование в серийном номере КТ номера паспорта никогда не предполагалось. Скорее наоборот. Если этот вопрос является дискуссионным, надо выносить его в отдельную тему.

agievich commented 5 years ago

В раздел 7 добавил ограничения на длину serialNumber (DG1). Как и в сертификате, длина серийного номера (без учета префикса) должна находиться в диапазоне от 8 до 12 символов. Но в сертификате шла речь и о КТ, и о терминалах. В нашем случае (DG1) речь идет только о КТ. Развилка: оставить диапазон или жестко зафиксировать длину (12). Если не будет предложений, остается диапазон.

andrewkostevich commented 5 years ago

Требования к серийному номеру КТ идут от разных источников. Вопрос: серийный номер КТ в DG1 как то связан с серией и номером, напечатанным на карте? Если связан, то формат уже определен: длина зафиксирована и равна 9.

agievich commented 5 years ago

Добавил реакцию по #48.

agievich commented 5 years ago

Требования к серийному номеру КТ идут от разных источников.Вопрос: серийный номер КТ в DG1 как то связан с серией и номером, напечатанным на карте? Если связан, то формат уже определен: длина зафиксирована и равна 9.

Мы не располагаем другими источниками. По крайней мере, официальными. Между тем предложенная раскладка дата-групп неоднократно обсуждалась, в нее вносились изменения. Дублирование номера паспорта в серийном номере КТ выглядит спорным.

В любом случае, диапазон 8-12 покрывает и номер паспорта (9), т.е. оставляет требуемую свободу.

olegotory commented 5 years ago

Еще могут быть и другие типы КТ, например, usb-токен с приложениями eID, eSign (можно ли считать такой токен id-картой?). Наверное, нужно как-то различать КТ разных типов. Лучше всего это делать по префиксу серийного номера. Может лучше сказать в стандарте, что для id-карты серийный номер должен начинаться с префикса "idcby-".

agievich commented 5 years ago

Может лучше сказать в стандарте, что для id-карты серийный номер должен начинаться с префикса "idcby-".

Об этом сказано.

olegotory commented 5 years ago

Наш стандарт только для id-карт? Я имел в виду, что серийный номер id-карт должен начинаться с такого префикса. У нас сказано: "Согласно этим правилам, серийный номер должен сопровождаться префиксом IDCBY-", т.е. КТ, которые соответствуют стандарту, не могут начинаться с других префиксов.

agievich commented 5 years ago

Редакционные корректировки (раздел 12):

  1. "Ключевая пара" -> "пара ключей".
  2. Добавил дополнительный разрыв в таблицах описания команд между CDF и RDF.
  3. В таблицах команд описание INS дал строго через существительное, описание P1, P2 --- через глагол.
  4. Удалил неинформативную строку в таблице 17.
  5. "Инициализация алгоритма {выработки | разбора}" -> "Инициализация {выработки | разбора}".
  6. "Битовая длина транспортируемого ключа не дб больше уровня стойкости лк" ->"Битовая длина транспортируемого ключа не дб меньше уровня стойкости лк".
  7. Дал пояснения по длинам ок, эцп, токена ключа, транспортируемого ключа.
agievich commented 5 years ago

В certHolderReference сертификатов КТ и терминала исключен префикс BY. Теперь сертификат терминала укладывается в одну команду на уровне l = 128 (см. #34 и также #23).