GostCryptography icon indicating copy to clipboard operation
GostCryptography copied to clipboard

Реализация под Net 5

Open AlexAlexKud opened this issue 2 years ago • 7 comments

Хотим переехать на новую платформу, а не можем из-за отсутствия GostCryptography... Очень прошу рассмотреть возможность портировать библиотеку под Net 5. или .Net Core

AlexAlexKud avatar Jul 12 '21 17:07 AlexAlexKud

Здравствуйте. Вопрос в проработке, надеюсь, что все получится :)

AlexMAS avatar Jul 13 '21 03:07 AlexMAS

Есть продвижения в данном вопроса? Может сделаете нам подарок к новому году?)

sa13m avatar Dec 12 '21 13:12 sa13m

Да, стараюсь :) Многие вещи получилось сделать, некоторые идут совсем с трудом, но думаю, что все получится. Все никак не могу урвать время, чтобы оформить существующие наработки.

AlexMAS avatar Dec 13 '21 04:12 AlexMAS

Добрый день. Тоже столкнулся с ошибкой "Unknown algorithm '1.2.643.7.1.1.1.1". В проекте используется .Net 5.0. Я так понял вы как раз и занимаетесь этой проблемой в новом обновлении под .Net 5.0? Я не очень хорошо разбираюсь в работе с ЭЦП. Передо мной стоит задача валидации подписанных данных (хэш полей карточки документа). Данные подписываются с клиентской стороны с использованием crypto pro. Я так понимаю что у меня не получится проверить подпись пока не выйдет обновление?

DmitryKrakhmalev avatar Dec 24 '21 07:12 DmitryKrakhmalev

С появлением .NET Core реализация базовых абстракций для работы с криптографией существенно изменилась. Разработчикам .NET нужно было обеспечить работу криптографии на многих платформах (не только Windows). Они отказались от жесткой привязки к Crypto API, беря большую часть работы на себя. При этом для .NET разработчиков ничего не изменилось, поменялись только внутренности. При этом с точки зрения объема и формы предоставляемой функциональности для работы с криптографией ничего не изменилось. Но в этом и суть основной проблемы для данной библиотеки.

Механизмы криптографии в .NET не позволяют (до сих пор) делать какое-либо функциональное расширение. Например, добавить поддержку криптографии по ГОСТ. В связи с этим реализация библиотеки достаточно сильно завязана на внутреннее устройство самого .NET. И это является основной причиной "тормоза" в переходе на новые версии платформы. Просто так взять исходники, собрать и запустить их под .NET 5+ не получится по указанным причинам. Сборка может и пройдет, но ничего не заработает. Сейчас, да, я худо-бедно стараюсь перевести существующую кодовую базу на .NET 5+.

Пока я могу предложить вам такие варианты на выбор:

  • Сделать отдельный микросервис на базе .NET Framework 4.8
  • Сделать отдельную консольную утилиту .NET Framework 4.8

Проверку подписи реализовать в рамках отдельной службы или утилиты и обращаться к ним из своего основного приложения (работающего на .NET 5). После выхода обновления вы сможете сделать проверку in-process.

AlexMAS avatar Dec 24 '21 08:12 AlexMAS

С появлением .NET Core реализация базовых абстракций для работы с криптографией существенно изменилась. Разработчикам .NET нужно было обеспечить работу криптографии на многих платформах (не только Windows). Они отказались от жесткой привязки к Crypto API, беря большую часть работы на себя. При этом для .NET разработчиков ничего не изменилось, поменялись только внутренности. При этом с точки зрения объема и формы предоставляемой функциональности для работы с криптографией ничего не изменилось. Но в этом и суть основной проблемы для данной библиотеки.

Механизмы криптографии в .NET не позволяют (до сих пор) делать какое-либо функциональное расширение. Например, добавить поддержку криптографии по ГОСТ. В связи с этим реализация библиотеки достаточно сильно завязана на внутреннее устройство самого .NET. И это является основной причиной "тормоза" в переходе на новые версии платформы. Просто так взять исходники, собрать и запустить их под .NET 5+ не получится по указанным причинам. Сборка может и пройдет, но ничего не заработает. Сейчас, да, я худо-бедно стараюсь перевести существующую кодовую базу на .NET 5+.

Пока я могу предложить вам такие варианты на выбор:

  • Сделать отдельный микросервис на базе .NET Framework 4.8
  • Сделать отдельную консольную утилиту .NET Framework 4.8

Проверку подписи реализовать в рамках отдельной службы или утилиты и обращаться к ним из своего основного приложения (работающего на .NET 5). После выхода обновления вы сможете сделать проверку in-process.

Александр, правильно ли я понимаю, что на текущее время единственный вариант встраивания ГОСТ под Linux в .NET 5+ - это форк CoreFX и реализация алгоритмов в нем, как сделали CryptoPro?

Bykiev avatar Mar 03 '22 09:03 Bykiev

@AlexMAS, здравствуйте! Не могли бы вы использовать для реализации на .NET 6 библиотеку OpenGOST?

Bykiev avatar Sep 01 '22 12:09 Bykiev