Наборы параметров, идентификаторы OID и совместимость¶
Канонический источник: Математические определения и RFC: ГОСТ Р 34.10-2012/256, ГОСТ Р 34.10-2012/512, VKO. Здесь — команды и OID конкретного OpenSSL engine.
Имя алгоритма описывает семейство криптографической операции, а параметр paramset задаёт конкретную эллиптическую кривую или набор параметров. Для совместимости нужны оба значения; они включаются в кодировку открытого ключа и сертификата.
Наборы параметров в gost-engine¶
| Алгоритм ключа | Имена paramset |
|---|---|
gost2001 |
0, A, B, C, XA, XB |
gost2012_256 |
0, A, B, C, XA, XB, TCA, TCB, TCC, TCD |
gost2012_512 |
A, B, C |
0 используется как тестовый набор параметров — его не выбирают для рабочих ключей. Наборы с префиксом X исторически применяются в сценариях согласования ключей, остальные — в сценариях подписи. Конкретное применение задаёт профиль принимающей системы.
Примеры создания по разным профилям¶
umask 077
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:TCA -out tc-a.pem
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:TCB -out tc-b.pem
openssl genpkey -algorithm gost2012_512 -pkeyopt paramset:A -out 512-a.pem
Параметр задают при генерации. Нельзя изменить кривую в уже сформированном ключе: требуется новая пара.
OID, которые встречаются при работе¶
| OID | Значение |
|---|---|
1.2.643.7.1.1.1.1 |
ГОСТ Р 34.10-2012, 256 |
1.2.643.7.1.1.1.2 |
ГОСТ Р 34.10-2012, 512 |
1.2.643.7.1.1.2.2 |
ГОСТ Р 34.11-2012, Стрибог-256 |
1.2.643.7.1.1.2.3 |
ГОСТ Р 34.11-2012, Стрибог-512 |
1.2.643.7.1.1.3.2 |
Подпись ГОСТ 2012/256 со Стрибог-256 |
1.2.643.7.1.1.3.3 |
Подпись ГОСТ 2012/512 со Стрибог-512 |
1.2.643.2.2.19 |
ГОСТ Р 34.10-2001 |
Узнать OID в DER¶
openssl pkey -in tc-a.pem -pubout -outform DER -out tc-a.der
openssl asn1parse -inform DER -in tc-a.der -i
Для сертификата:
openssl x509 -in server.crt -noout -text \
| grep -E 'Signature Algorithm|Public Key Algorithm|ASN1 OID'
Команда для сертификата предполагает, что server.crt создан в предыдущем упражнении.
Как согласовать обмен ключами с получателем¶
Запрашивайте у принимающей стороны: тип ключа, OID кривой, формат (PKCS#8, SubjectPublicKeyInfo), допустимый сертификатный профиль, способы передачи открытого ключа и требования к ГОСТ-хэшу. Это помогает избежать ошибки, при которой криптографически корректный ключ не распознаётся приложением.
Дополнительно: RFC 7091, форматы ключей, КриптоПро.