Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
beldmit opened this issue Feb 7, 2022 · 22 comments
Open

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

beldmit opened this issue Feb 7, 2022 · 22 comments

Comments

@beldmit
Copy link
Contributor

beldmit commented Feb 7, 2022

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

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

@beldmit
Copy link
Contributor Author

beldmit commented Aug 31, 2022

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

@yanovich
Copy link

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

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

@beldmit
Copy link
Contributor Author

beldmit commented Aug 31, 2022

Нужно!

@yanovich
Copy link

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

@beldmit
Copy link
Contributor Author

beldmit commented Sep 22, 2022

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

@yanovich
Copy link

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

@beldmit
Copy link
Contributor Author

beldmit commented Sep 22, 2022

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

@yanovich
Copy link

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

@yanovich
Copy link

yanovich commented Sep 22, 2022

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

@beldmit
Copy link
Contributor Author

beldmit commented Sep 22, 2022

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

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

@yanovich
Copy link

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

@yanovich
Copy link

п.1 в #414

@igrkir
Copy link

igrkir commented Sep 26, 2022

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

@yanovich
Copy link

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

@beldmit
Copy link
Contributor Author

beldmit commented Sep 26, 2022

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

@UndefBehavior
Copy link

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

@beldmit
Copy link
Contributor Author

beldmit commented Sep 1, 2023

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

@yanovich
Copy link

yanovich commented Sep 6, 2023

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

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

@beldmit
Copy link
Contributor Author

beldmit commented Sep 6, 2023

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

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

@Mironenko
Copy link

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

@beldmit
Copy link
Contributor Author

beldmit commented Sep 6, 2023

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants