bcrypto / btok

Cryptographic tokens
4 stars 4 forks source link

Неверная обработка времени при проверке цепочки сертификатов #79

Closed andrewkostevich closed 5 years ago

andrewkostevich commented 5 years ago

Проверяется, что текущая дата попадает в срок действия каждого сертификата маршрута

Текущая дата при штатном использовании может оказаться раньше даты выпуска сертификата терминала и/или подчиненного удостоверяющего центра.

Проверяться должно, что каждый сертификат цепочки не истек на текущую дату

agievich commented 5 years ago

Текущая дата при штатном использовании может оказаться раньше даты выпуска сертификата терминала и/или подчиненного удостоверяющего центра.

То есть в момент проверки сертификат Т/УЦ еще не действует. Как в такой ситуации цепочка может быть признана корректной? Еще раз повторю, что цепочка проверяется по схеме X.509 (СТБ 34.101.17): все сертификаты должны быть действительны в момент проверки.

andrewkostevich commented 5 years ago

То есть в момент проверки сертификат Т/УЦ еще не действует.

На карте моментом проверки является текущая дата и она определяется согласно п. 6.2 по реквизитам ранее проверенных сертификатов.

Сертификат терминала в стандарте рекомендуется регулярно выпускается на короткий срок: при использовании карты реже, чем выпуск сертификата терминала, текущая дата на карте будет определяться по сроку выпуска предыдущего сертификата терминала и будет раньше даты выпуска действующего сертификата терминала. В частности, в случае выпуска сертификата терминала на один день и использовании карты каждый день: текущая дата на карте всегда будет на один день раньше даты выпуска действующего сертификата терминала

Аналогично в случае регулярного обновления сертификата подчиненного удостоверяющего центра.

То есть на текущую дату карты, сертификат Т/УЦ может еще не действовать.

agievich commented 5 years ago

В п. 6.2 сказано, что

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

Ключевое слово -- приближенно. Например КТ считает, что текущая дата лежит в интервале [t, t + d], где t -- последняя дата выпуска действительного сертификата Т, d -- погрешность оценивания (2-3 дня, а может быть даже и месяц).

andrewkostevich commented 5 years ago

Введение приближений и погрешности оценивания не решает проблемы. В частности, текущая дата инициализируется датой выпуска. Если карта не использована в течение d дней после выпуска, то терминальный режим заблокируется и карта не сможет быть использована никогда, так как текущая дата всегда будет меньше срока выпуска сертификата терминала даже с учетом погрешности.

Нужно

agievich commented 5 years ago

Не согласен, что введение приближений не решает проблему. При d = \infty как раз реализуется первое предложение. Что касается второго предложения (изменить стандарт), то, как мы все понимаем, оно уже нереализуемо.

agievich commented 5 years ago

Открываем wishlist -- список предложений по развитию BTOK. Список пока неформальный. В будущем планируется сделать его публичным и обсуждаемым.

Первая запись wishlist -- детализировать механизм проверки сроков действия сертификатов с учетом обсуждения выше.