Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / ready to pay. GOST and XML encryption / 4 сообщений из 4, страница 1 из 1
02.01.2018, 14:40
    #39578700
cutecode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ready to pay. GOST and XML encryption
нужно сделать шифрование электронного больничного XML файла по стандарту "XML Encryption Syntax and Processing (W3C)"
согласно инструкции ФСС "Шифрование сессионного ключа и данных происходит по алгоритму ГОСТ 28147-89"

Вот шаблон зашифрованного XML файла
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<xenc:EncryptedData 
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Content" 
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 
xmlns:sch="http://gost34.ibs.ru/WrapperService/Schema" 
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
	<xenc:EncryptionMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gost28147"/>
	<ds:KeyInfo>
		<xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
			<xenc:EncryptionMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2001"/>
			<ds:KeyInfo>
				<ds:X509Data>
					<ds:X509Certificate></ds:X509Certificate>
				</ds:X509Data>
			</ds:KeyInfo>
			<xenc:CipherData>
				<xenc:CipherValue></xenc:CipherValue>
			</xenc:CipherData>
		</xenc:EncryptedKey>
	</ds:KeyInfo>
	<xenc:CipherData>
		<xenc:CipherValue></xenc:CipherValue>
	</xenc:CipherData>
</xenc:EncryptedData>



Если кто знает, то подскажите, согласно описанию
Код: sql
1.
xenc:EncryptionMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gost28147"


Какой режим gost89 надо использовать?
Код: sql
1.
2.
3.
4.
1. простой замены
2. гаммирование
3. гаммирование с обратной связью
4. режим выработки имитовставки.



В сети очень много инструментов для шифрования, но ни все знают что такое русский ГОСТ
Если у кого-то уже есть готовый инструмент, то я готов купить
...
Рейтинг: 0 / 0
02.01.2018, 23:14
    #39578799
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ready to pay. GOST and XML encryption
У Брюса Шнайера можно почитать теорию про режимы "сцепления блоков".
Первый из них тривиален - не делает никакого сцепления. А все остальные
- комбинируют различные варианты межблочных связей.

Кажется в openssl это называется CBC/ECB/OFB...

Как это относится к ГОСТ я к сожалению не знаю. Слишком мало инфы о нем.
Но скорее всего блочные операции у него такие-же как и у всяких там "Дутых Рыб",
и прочих AES.

Какой режим вам выбрать - пофиг. Если над вами нет контролирующей организации
то нет смысла чего-то там искать.
...
Рейтинг: 0 / 0
03.01.2018, 13:38
    #39578940
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ready to pay. GOST and XML encryption
openssl до 1.1 включал встроенную поддержку госта в режимах CFB, CNT. Можно его применить в режиме статической сборки, чтобы не зависеть от поставляемых с ОС более свежих openssl, где гост выкинули .
Если нужен openssl 1.1 и выше то там гост реализуется с помощью внешней библиотеки, которую надо подключить в список движков.
Как этим всем пользоваться легко гуглится.
...
Рейтинг: 0 / 0
25.01.2018, 22:15
    #39591348
cutecode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ready to pay. GOST and XML encryption
я согласен пока и на динамическую сборку openssl, это пока не важно.
вот что сказано в файле readme.gost
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
ALGORITHMS SUPPORTED

...

GOST 28147-89 - Symmetric cipher  with 256-bit key. Various modes are
   defined in the standard, but only CFB and CNT modes are implemented
   in the engine. To make statistical analysis more difficult, key
   meshing is supported (see RFC 4357).

GOST 28147-89 MAC mode. Message authentication code. While most MAC
    algorithms  out there are based on hash functions using HMAC
	algorithm, this algoritm is based on symmetric cipher. 
	It has 256-bit symmetric key and only 32 bits of MAC value
	(while HMAC has same key size and value size). 

	It is implemented as combination of EVP_PKEY type and EVP_MD type.



походу, вроде, 3 режима поддерживаюся
Код: sql
1.
2.
3.
2. гаммирование (CNT)
3. гаммирование с обратной связью (CFB)
4. режим выработки имитовставки. (MAC)



По поводу openssl, я с ним уже давно разобрался. Гост поддерживается начиная с версии 1.0.1

Код: sql
1.
2.
3.
4.
5.
6.
>openssl version
OpenSSL 1.0.1a 19 Apr 2012

>openssl engine
(dynamic) Dynamic engine loading support
(gost) Reference implementation of GOST engine



Пробовал шифровать и с openssl и с КриптоПро, но пока одни "танцы с бубном".

не подскажите, кто знает, действовать надо вроде как то так:
1. генерируем 8 байт IV
2. генерируем 32 байт сессионного ключа
3. c помощью IV и сессионного ключа шифруем данные алгоритмом ГОСТ 89
4. к полученным зашифрованным данным добавляем префикс из IV (8 байт)
5. из последнего делаем 64encoding и записываем в XML файл
6. шифруем сессионный ключ, открытым ключом ФСС алгоритмом ГОСТ 2001
7. из последнего делаем 64encoding и записываем в XML файл
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / ready to pay. GOST and XML encryption / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]