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

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

Наверняка кому-то удалось реализовать поддержку 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 должен быть собран

 

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


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.