engine icon indicating copy to clipboard operation
engine copied to clipboard

TLS 1.3 по ГОСТ в openssl - roadmap

Open beldmit opened this issue 3 years ago • 22 comments

  1. Добавить в уже существующую провайдерную сборку MGM-шифры - done #414
  2. Спортировать в апстрим те патчи, которые добавляют собственно шифронаборы. На этом этапе получаем возможность российских шифронаборов с западным ключевым обменом
  3. Спортировать в провайдер асимметричные алгоритмы.
  4. Поддержать ключевой обмен по ГОСТ
  5. Спортировать в провайдер MAC и оторвать сборку engine

beldmit avatar Feb 07 '22 19:02 beldmit

Что-то аналогичное patches/openssl_111g.diff для 3.0/master существует?

yanovich avatar Aug 31 '22 15:08 yanovich

Нет и не должно. Части на стороне openssl я надеюсь протолкнуть в апстрим - но чтобы это начать, нужно хотя бы п.1 реализовать

beldmit avatar Aug 31 '22 16:08 beldmit

Можно реализацию MGM шифров брать из этой ветки [1]?

  1. https://github.com/gost-engine/engine/tree/ossl_patched

yanovich avatar Aug 31 '22 16:08 yanovich

Нужно!

beldmit avatar Aug 31 '22 16:08 beldmit

А возможно NID для magma-mgm и kuznyechik-mgm в апстриме добавить?

yanovich avatar Sep 22 '22 17:09 yanovich

Проще считать, что нет. OID-ов для них нет, а предлагать новый код для работы через engine - не поймут.

beldmit avatar Sep 22 '22 17:09 beldmit

я тогда создам динамические с помощью OBJ_add_object()? придётся немного с инициализацией engine повозиться.

yanovich avatar Sep 22 '22 17:09 yanovich

Не надо добавлять в engine. Надо брать провайдер, шифры в нём уже реализованы как концепция.

beldmit avatar Sep 22 '22 17:09 beldmit

node.js видит шифроалгоритмы, только если они есть и в старых объектах, и в новых. это работает для всех алгоритмов default провайдера. для gost работает, если одновременно подключить и движок, и провайдер. а я хочу сделать TLS-1.3 в node.js.

yanovich avatar Sep 22 '22 17:09 yanovich

когда всё заработает, можно будет сделать большой рефакторинг и убрать в провайдере обёртку движка. это проще будет сделать для всех алгоритмов за раз

yanovich avatar Sep 22 '22 17:09 yanovich

я тогда создам динамические с помощью OBJ_add_object()? придётся немного с инициализацией engine повозиться.

Ну в качестве промежуточного варианта можно

beldmit avatar Sep 22 '22 19:09 beldmit

В провайдере надо обрабатывать параметр контекста OSSL_CIPHER_PARAM_AEAD_TAG для шифров с AEAD (-omac, -mgm). Чем отличается EVP_CIPH_FLAG_CIPHER_WITH_MAC от EVP_CIPH_FLAG_AEAD_CIPHER?

yanovich avatar Sep 24 '22 00:09 yanovich

п.1 в #414

yanovich avatar Sep 24 '22 15:09 yanovich

так PR #414 в таком виде (через engine) закрывает п.1? или требуется перенос в провайдер?

igrkir avatar Sep 26 '22 07:09 igrkir

может кто пальцем ткнуть в реализацию п.4 (ключевой обмен) для 1.1.1xyz?

yanovich avatar Sep 26 '22 13:09 yanovich

Сходу не соображу. Скорее всего где-то здесь https://github.com/gost-engine/engine/blob/ossl_patched/gost_ec_keyx.c

beldmit avatar Sep 26 '22 17:09 beldmit

подскажите, есть ли какая-то активность по задаче? планируется ли внедрение в upstream openssl поддержки протокольной части ГОСТового TLS 1.3?

UndefBehavior avatar Sep 01 '23 10:09 UndefBehavior

пока кто-нибудь не сделает асимметрику в gost provider - ничего не планируется. Мне сейчас не до того.

beldmit avatar Sep 01 '23 10:09 beldmit

Я могу ПР сделать. Какие конкретно ассиметричнеы алгоритмы надо портировать?

И ещё такой вопрос. Есть какой-то публичный сервер на котором можно потестить соединение по ГОСТ TLS 1.3?

yanovich avatar Sep 06 '23 16:09 yanovich

Публичный сервер есть у КриптоПро, кажется. Но патченная ветка 1.1.1 вполне себе вариант для тестирования.

Для TLS 1.3 надо портировать только подпись 2012 года, оба варианта. Но добавить туда 2001-й после того, как появится 2012-й, не так сложно.

beldmit avatar Sep 06 '23 16:09 beldmit

Добрый день! Относительно тестовых стендов КриптоПро стоит уточнить (см. https://cryptopro.ru/products/csp/tc26tls), а у Инфотекса стенд TLS 1.3 есть: https://infotecs.ru/products/tls-test.php

Mironenko avatar Sep 06 '23 16:09 Mironenko

https://github.com/BuHToPe3/gost-engine/tree/master

Вот тут коллега по прошлой работе начинал процесс, но далеко не продвинулся, к сожалению.

beldmit avatar Sep 06 '23 18:09 beldmit