Перейти к содержимому
Калькуляторы

Здравствуйте, коллеги.

Наверняка кому-то удалось реализовать поддержку GOST R 34.11-94 в openssl? Экспортировал сертификат в помощью купленной только что p12fromgostcsp, результат:
 

root@zapret:/opt/gost-ssl-1.0.1c/bin# ./openssl asn1parse -in /root/p12.pfx -inform DER
    0:d=0  hl=4 l=3231 cons: SEQUENCE          
    4:d=1  hl=2 l=   1 prim: INTEGER           :03
    7:d=1  hl=4 l=3153 cons: SEQUENCE          
   11:d=2  hl=2 l=   9 prim: OBJECT            :pkcs7-data
   22:d=2  hl=4 l=3138 cons: cont [ 0 ]        
   26:d=3  hl=4 l=3134 prim: OCTET STRING      [HEX DUMP]:
...
 3164:d=1  hl=2 l=  69 cons: SEQUENCE          
 3166:d=2  hl=2 l=  53 cons: SEQUENCE          
 3168:d=3  hl=2 l=  17 cons: SEQUENCE          
 3170:d=4  hl=2 l=   6 prim: OBJECT            :GOST R 34.11-94
 3178:d=4  hl=2 l=   7 prim: OBJECT            :id-GostR3411-94-CryptoProParamSet
 3187:d=3  hl=2 l=  32 prim: OCTET STRING      [HEX DUMP]:E61B68...
 3221:d=2  hl=2 l=   8 prim: OCTET STRING      [HEX DUMP]:4AB66C...
 3231:d=2  hl=2 l=   2 prim: INTEGER           :0800
root@zapret:/opt/gost-ssl-1.0.1c/bin# ./openssl ciphers | tr ":" "\n" | grep GOST
GOST2001-GOST89-GOST89
GOST94-GOST89-GOST89
root@zapret:/opt/gost-ssl-1.0.1c/bin#
./openssl pkcs12 -in /root/p12.pfx         
Enter Import Password:
MAC verified OK
Bag Attributes
    localKeyID: 38 D3 06 CA B9 AE 28 8B 8B...
subject=/1.2.643.100.3=07805797...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Bag Attributes
    localKeyID: 38 D3 06 CA B9 AE 28 8B 8B...
    friendlyName: csp_exported
Error outputting keys and certificates
140382018086560:error:0609E09C:digital envelope routines:PKEY_SET_TYPE:unsupported algorithm:p_lib.c:239:
140382018086560:error:0606F076:digital envelope routines:EVP_PKCS82PKEY:unsupported private key algorithm:evp_pkey.c:84:TYPE=1.2.643.7.1.1.1.1
root@zapret:/opt/gost-ssl-1.0.1c/bin#


Пробовал разные сборки openssl, собирал сам с openssl.org, но результатодин и тот же: unsupported private key algorithm:evp_pkey.c:84:TYPE=1.2.643.7.1.1.1.1

Изменено пользователем metalsoft

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Должно работать либо с МагПро Криптопакетом (www.cryptocom.ru), либо с более современной реализацией openssl 

Можете в понедельник мне написать, объясню подробнее

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Неделю назад столкнулся с такой же проблемой.

На самом деле только МАС подписан GOST94.

 

Для открытия полученного сертификата нужно поставить свежий openssl с GOST2012, т.к. контейнер в этом формате, вот примерно так:

# /usr/bin/openssl version
OpenSSL 1.1.1  11 Sep 2018

# /usr/bin/openssl ciphers|tr ':' '\n'|grep -i GOST
GOST2012-GOST8912-GOST8912
GOST2001-GOST89-GOST89

 

И отключить проверку МАС:

- добавить опцию -nomacver

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Уррааа!!! Заработало!!!! (с) :)

Фишка в том, что в openssl-1.1.* выпилена поддержка gost. Пришлось отдельно ставить отсюда: https://github.com/gost-engine/engine

За подсказку про -nomacver отдельное спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Апну тему.

Бодаюсь уже второй день, установил openssl 1.1.1a. на CentOS 6.5 32 & 64 bit из исходников. Поддержки ГОСТ2012 тут нет, это понятно.
Пытаюсь собрать и установить https://github.com/gost-engine/engine, на тех же системах, выдаёт ошибки:

64bit

Цитата

[ 72%] Built target test_params
[ 74%] Building C object CMakeFiles/gost12sum.dir/gost12sum.c.o
[ 76%] Linking C executable bin/gost12sum
[ 76%] Built target gost12sum
[ 78%] Building C object CMakeFiles/test_keyexpimp.dir/test_keyexpimp.c.o
[ 80%] Linking C executable bin/test_keyexpimp
[ 80%] Built target test_keyexpimp
[ 82%] Building C object CMakeFiles/test_context.dir/test_context.c.o
[ 84%] Linking C executable bin/test_context
[ 84%] Built target test_context
[ 86%] Building C object CMakeFiles/sign.dir/benchmark/sign.c.o
[ 88%] Linking C executable bin/sign
CMakeFiles/sign.dir/benchmark/sign.c.o: In function `main':
/rico/git/engine-master/benchmark/sign.c:150: undefined reference to `clock_gettime'
/rico/git/engine-master/benchmark/sign.c:175: undefined reference to `clock_gettime'
collect2: выполнение ld завершилось с кодом возврата 1
gmake[2]: *** [bin/sign] Ошибка 1
gmake[1]: *** [CMakeFiles/sign.dir/all] Ошибка 2
gmake: *** [all] Ошибка 2
 

или

32bit

Цитата

[ 26%] Built target gost_core
[ 28%] Building C object CMakeFiles/gost_engine.dir/e_gost_err.c.o
[ 30%] Building C object CMakeFiles/gost_engine.dir/gost_asn1.c.o
[ 32%] Building C object CMakeFiles/gost_engine.dir/gost_crypt.c.o
[ 34%] Building C object CMakeFiles/gost_engine.dir/gost_ctl.c.o
[ 36%] Building C object CMakeFiles/gost_engine.dir/gost_eng.c.o
[ 38%] Building C object CMakeFiles/gost_engine.dir/gost_keywrap.c.o
[ 40%] Building C object CMakeFiles/gost_engine.dir/gost_params.c.o
[ 42%] Building C object CMakeFiles/gost_engine.dir/gost_keyexpimp.c.o
cc1: warnings being treated as errors
/rico/git/engine/gost_keyexpimp.c: In function ‘gost_tlstree’:
/rico/git/engine/gost_keyexpimp.c:234: error: integer constant is too large for ‘long’ type
/rico/git/engine/gost_keyexpimp.c:235: error: integer constant is too large for ‘long’ type
/rico/git/engine/gost_keyexpimp.c:236: error: integer constant is too large for ‘long’ type
/rico/git/engine/gost_keyexpimp.c:237: error: integer constant is too large for ‘long’ type
gmake[2]: *** [CMakeFiles/gost_engine.dir/gost_keyexpimp.c.o] Error 1
gmake[1]: *** [CMakeFiles/gost_engine.dir/all] Error 2
gmake: *** [all] Error 2
 

 

Что не так ?

Какие могут быть еще вариант решения глобальной проблемы (выгрузка реестра ?) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Варианты: 

 

1. Оторвите сборку этого теста

2. Возьмите engine из ветки 1_1_0, там возможны варианты.

3. Напишите на support@cryptocom.ru, с удовольствием продадим вам коммерческий пакет openssl с ГОСТами.

Изменено пользователем Dmitry Belyavskiy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
33 минуты назад, Dmitry Belyavskiy сказал:

Варианты: 

 

1. Оторвите сборку этого теста

2. Возьмите engine из ветки 1_1_0, там возможны варианты.

3. Напишите на support@cryptocom.ru, с удовольствием продадим вам коммерческий пакет openssl с ГОСТами.

 

1. Вообще не понял, поясните

2. Ссылочкой можете поделится ?

3. Интересно. Но крайний вариант.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, baronzzz сказал:

1. Вообще не понял, поясните

2. Ссылочкой можете поделится ?

3. Интересно. Но крайний вариант.

1. Закомментируйте в CmakeLists.txt сборку benchmark/sign.

2. Там же, просто ветку из git возьмите другую. git checkout openssl_1_1_0. 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Dmitry Belyavskiy сказал:

3. Напишите на support@cryptocom.ru, с удовольствием продадим вам коммерческий пакет openssl с ГОСТами.

У вас GOST запилен через ENGINE?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 минут назад, TheUser сказал:

У вас GOST запилен через ENGINE?

У нас сертифицированный продукт, включающий реализацию ГОСТ через engine для OpenSSL. OpenSSL несколько патченный. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, baronzzz сказал:

/rico/git/engine-master/benchmark/sign.c:150: undefined reference to `clock_gettime'

rt либу потеряли в цемейке.

list(APPEND CMAKE_REQUIRED_LIBRARIES rt)

...

target_link_libraries(ИМЯБИНАРНИКА ${CMAKE_REQUIRED_LIBRARIES} ${CMAKE_EXE_LINKER_FLAGS})

 

3 часа назад, baronzzz сказал:

/rico/git/engine/gost_keyexpimp.c:234: error: integer constant is too large for ‘long’ type

Править исходник или искать переключатель ветки на х32/более короткие константы.

 

1 час назад, Dmitry Belyavskiy сказал:

1. Закомментируйте в CmakeLists.txt сборку benchmark/sign.

А не судьба была сразу CMake поправить чтобы rt либу на линухах добавлял?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, Ivan_83 сказал:

А не судьба была сразу CMake поправить чтобы rt либу на линухах добавлял?

На бегу - слабо :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Dmitry Belyavskiy сказал:

У нас сертифицированный продукт, включающий реализацию ГОСТ через engine для OpenSSL. OpenSSL несколько патченный. 

А зачем покупать сертифицированный у вас, если можно взять не менее сертифицированный в Infotecs, который в паблике лежит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, baronzzz сказал:

В этом деле не сильно искушен. Знал бы, ессесно подправил бы, чего где. Поэтому и обращаюсь к сообществу...

Перекачай/обнови исходник (автор недавно типа пофиксил) и поменяй:

target_link_libraries(sign gost_engine gost_core ${OPENSSL_CRYPTO_LIBRARY})

на

target_link_libraries(sign gost_engine gost_core ${OPENSSL_CRYPTO_LIBRARY} ${CMAKE_REQUIRED_LIBRARIES})

 

но вообще, цмейк написан пиздецово, переписать бы его.

 

3 часа назад, Dmitry Belyavskiy сказал:

На бегу - слабо :)

1. list(APPEND CMAKE_REQUIRED_LIBRARIES rt) - оно само себя не добавит куда надо

2. оно нахер не нужно за пределами линукса

3. нафига было пихать сборку всего в один цмейк файл!?

4. полезный код из корня в /src, тесты в /tests и тп, развели помойку.

5. по коду плачет автоформатер, местами сильно

6. пиздецовые типы данных: int->size_t; unsigned char,byte->uint8_t; word32->uint32_t

 

Вот как выглядят цмейки у меня: https://github.com/rozhuk-im/ssdpd/blob/master/CMakeLists.txt

хотя думаю тоже не идеал, но хотя бы оно структурировано и читабельно/поддерживаемо.

 

Мало того что нашей крипте не доверяют, вы ещё пишите так, как будто только что из школы и на дворе 1990 год. :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Про форматирование и раскладку файлов - согласен. 

 

Про Cmake - с удовольствием приму патчи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

СПасибо.Попробую Ваши советы.

Сиё чудо сразу воткнулось на Centos 7 64bit

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, Dmitry Belyavskiy сказал:

Про Cmake - с удовольствием приму патчи.

Все вы так говорите :)

https://savannah.nongnu.org/bugs/index.php?55235

 

Я редко правлю то, чем не пользуюсь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 25.01.2019 в 11:58, Hawk128 сказал:

И отключить проверку МАС:

- добавить опцию -nomacver

Спасибо. Помогло в случае когда openssl  не хотела читать файл pfx ругаясь на неверный пароль.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 07.02.2019 в 09:55, baronzzz сказал:

1. Вообще не понял, поясните

2. Ссылочкой можете поделится ?

3. Интересно. Но крайний вариант.

Меня как то жаба задушила что либо покупать, и пошел другим путем: Взят РУТОКЕН ЭЦП, его воткнуть в сервак, предварительно залив туда закрытый ключ, и все подписи делаю через него, т.е. хардварно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А вам это всем для РКН нужно или для чего-то ещё?

Про РКН вроде бы говорили , что метка времени по факту игнорируется и можно постоянно один и тот же подготовленный запрос слать

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

мне не только для РКН. Хотя по поводу метки времени - дык, проще будет, один рутокен модно будет снять. Пригодится в других местах. Спасибо за совет!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, reest сказал:

мне не только для РКН. Хотя по поводу метки времени - дык, проще будет, один рутокен модно будет снять. Пригодится в других местах. Спасибо за совет!

а зачем вам вообще рутокен?

ключ кмк экспортируется из носителя и кладется в виде файлика.

Использование ключа в USB конечно добавит немного гемороя потенциальным хакерам, но совсем немного, так как обычный дешевый rutoken криптопроцессором не оборудован, и является не более чем тупо носителем приватного ключа , отдаюшимся прямым текстом по паролю

( при каждой операции подписи, ключ в его исходном виде, загружается в ОЗУ операционной системы и в ней используется )

так чтоб операция подписи выполнялась внутри ключа - это минимум уже от версии "рутокен эцп" и выше

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, LostSoul сказал:

Использование ключа в USB конечно добавит немного гемороя потенциальным хакерам, но совсем немного, так как обычный дешевый rutoken криптопроцессором не оборудован, и является не более чем тупо носителем приватного ключа , отдаюшимся прямым текстом по паролю

( при каждой операции подписи, ключ в его исходном виде, загружается в ОЗУ операционной системы и в ней используется )

так чтоб операция подписи выполнялась внутри ключа - это минимум уже от версии "рутокен эцп" и выше

 

 

Речь и шла именно про РУТОКЕН ЭЦП, имеющий в себе криптопроцессор.  Всякие РУТОКЕН С, лайт, ВЕБ  не имеют криптопроцессора.

Суть проблемы, в том, что бы извлечь ключ в формате PF12, надо отдать 2999р Лисисофту. А ночью пришла жаба, и начала душить ,ведь 2999р надо будет отдавать как минимум через два года сказала, используй рутокен ЭЦП, все операции будут хардварно, и мучиться с опенссл и ГОСТ не надо будет, надо будет просто опенссл натравить на ключ, что делается быстро и без бубна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не знаю кто такой ЛИССофт , но я в УЦ Контур получил вообще на первый год бесплатно , а на второй и последующие года 500р / год.

Ключ делают экспортируемым , если попросить.

 

 

13 минут назад, reest сказал:

мучиться с опенссл и ГОСТ не надо будет, надо будет просто опенссл натравить на ключ

мне думается , там ни разу все не просто, а наоборот намного сложнее чем все делать софтварно , работая с ключем из обычного файла.

так как Токен ЭЦП это не значит что он все делает внутри "под ключ" , как мне кажется. 

Там наверняка API от которого скулы сводит и который все равно в openssl должен быть собран

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас