bcrypto / bpki

A public key infrastructure profile
8 stars 0 forks source link

Расширение ExtKeyUsage для автоматов #62

Closed agievich closed 4 years ago

agievich commented 4 years ago

Возник вопрос о расширении ExtKeyUsage. Ситуация следующая: запрос на получение сертификата формируется для криптографического автомата, который не планирует выступать в роли сервера/клиента терминального режима. Из СТБ 34.101.78-2019:

8.1.4 Расширение ExtKeyUsage
…
Расширение ExtKeyUsage не должно включаться в сертификаты УЦ, ЦАС, РЦ 
и должно включаться в сертификаты остальных сторон. Расширение является 
критическим.
…
8.2.3 Атрибут extensionRequest
…
1 ExtKeyUsage. Расширение указывается в тех случаях, когда будущий субъект 
планирует выступать в роли сервера/клиента терминального режима. 
Соответственно, расширение может содержать только идентификаторы 
bpki-eku-serverTM/bpki-eku-clientTM …

Т.е. в вышеописанной ситуации получается, что в запросе на получение сертификата в атрибут extensionRequest не нужно включать расширение ExtKeyUsage (из п. 8.2.3). Но в сертификате это расширение должно присутствовать (из п. 8.1.4). Получается (исходя из нижеприведенных схем), что УЦ должен включить расширение ExtKeyUsage, в котором extnValue будет нулевой длины, т.к. тип ExtKeyUsageSyntax требует НЕ МЕНЕЕ ОДНОГО дочернего объектного идентификатора:

ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..МАХ) OF KeyPurposeId
KeyPurposeId ::= OBJECT IDENTIFIER
Extension ::= SEQUENCE {
  extnID OBJECT IDENTIFIER,
  critical BOOLEAN DEFAULT FALSE,
  extnValue OCTET STRING
}
agievich commented 4 years ago

Действительно, случай автоматов-не-терминалов выпадает из контекста.

В п. 8.1.4 предлагается написать:

Расширение ExtKeyUsage не должно включаться в сертификаты УЦ, ЦАС, РЦ, может включаться в сертификаты КА и и должно включаться в сертификаты остальных сторон.

agievich commented 4 years ago

Реализовано в https://github.com/bcrypto/bpki/commit/a0d8a2998d2ee3a8450cb38bac3157912414cf5b.