bcrypto / bpki

A public key infrastructure profile
8 stars 0 forks source link

Идентификация получателя в EnvelopedData #49

Closed agievich closed 6 years ago

agievich commented 6 years ago

В EnvelopedData субъект сертификата идентифицируется через SKID. В большинстве (во всех?) остальных случаях для идентификации используется пара (issuer, serialNumber). Почему не сделать единообразно?

pavlovkv commented 6 years ago

В случае с конвертованными данными, на мой взгляд, нет необходимости использовать более тяжеловесный issuerAndSerialNumber, поскольку если же и произойдет коллизия в skid, то пользователь просто не сможет расшифровать данные. Никакой опасности. В случае с подписью это может привести к тому, что подпись можно воспринять как невалидную.

agievich commented 6 years ago

За SKID:

  1. Простота.

Против:

  1. Нарушение единообразия.
  2. Неоднозначность SKID (м.б. варианты с SHA1 и belt-hash).
  3. Проблемы с SHA1.

Все-таки я против. SKID желательно не использовать без большой необходимости.

agievich commented 6 years ago

И еще одна проблема со SKID: если в нескольких сертификатах указаны одинаковые ок, то по SKID нельзя понять, о каком сертификате идет речь (именно поэтому вводится альтернативная идентификация сертификата через SigningCertificate, см. https://github.com/bcrypto/stb/issues/1).

Решение -- отказ от SKID:

  1. Идентификатор получателя задается через issueAndSerialNumber.
  2. Внесены изменения в demo-скрипты: в команде openssl cms -encrypt исключен флаг -keyid.