Обзор
Подпись на эллиптической кривой ГОСТ Р 34.10 используется официальными лицами и предприятиями в России. Поддержка этого может упростить интеграцию существующих приложений (обычно на базе CryptoPro). Функция хеширования - ГОСТ Р 34.11 размером 32 или 64 байта. По сути, работает так же, как EcDSA, размер подписи и открытого ключа составляет 64 или 128 байт.
Мотивация
Криптография на эллиптических кривых никогда не вызывала полное доверие и порождала множество спекуляций относительно возможных закладок. Таким образом, нет универсального типа подписи, которому доверяют все. Добавление еще одного типа подписи даст людям больше выбора, чему они доверяют больше.
Дизайн
ГОСТ Р 34.10 использует стандартную эллиптическую кривую с собственными наборами параметров. Математические группы могут быть переиспользованы. Однако подпись и проверка отличаются и должны быть реализованы. См. RFC: https://www.rfc-editor.org/rfc/rfc7091.txt ГОСТ Р 34.10 предполагается использовать вместе с хешем ГОСТ Р 34.11. Мы будем использовать ГОСТ Р 34.10-2012 (также известный как steebog) либо 256, либо 512 бит. См. RFC: https://tools.ietf.org/html/rfc6986
ГОСТ Р 34.10 не указывает параметры, однако существует несколько хороших наборов параметров, используемых всеми. ГОСТ Р 34.10-2012 с 64-байтными открытыми ключами наследует наборы параметров CryptoPro от ГОСТ Р 34.10-2001 См. RFC: https://tools.ietf.org/html/rfc4357
Однако более новые наборы параметров для 128-байтных ключей созданы специальным техническим комитетом tc26 (tc26.ru). См. RFC: https://www.rfc-editor.org/rfc/rfc7836.txt
Реализация на основе Openssl в i2pd показывает, что она быстрее P256 и медленнее 25519.
Спецификация
Поддерживаются только ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012. Два новых типа подписи: 9 - GOSTR3410_GOSTR3411_256_CRYPTO_PRO_A соответствует открытому ключу и типу подписи размером 64 байта, размеру хеша 32 байта и набору параметров CryptoProA (также известному как CryptoProXchA) 10 - GOSTR3410_GOSTR3411_512_TC26_A соответствует открытому ключу и типу подписи размером 128 байт, размеру хеша 64 байта и набору параметров A от TC26.
Миграция
Эти типы подписи предполагается использовать только в качестве необязательного типа подписи. Миграция не требуется. i2pd уже поддерживает это.