Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.217.220.114] |
|
Сообщ.
#1
,
|
|
|
нужно сделать шифрование электронного больничного XML файла по стандарту "XML Encryption Syntax and Processing (W3C)"
согласно инструкции ФСС "Шифрование сессионного ключа и данных происходит по алгоритму ГОСТ 28147-89" Вот шаблон зашифрованного XML файла <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> Если кто знает, то подскажите, согласно описанию xenc:EncryptionMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gost28147" Какой режим gost89 надо использовать? 1. простой замены 2. гаммирование 3. гаммирование с обратной связью 4. режим выработки имитовставки. В сети очень много инструментов для шифрования, но ни все знают что такое русский ГОСТ Если у кого-то уже есть готовый инструмент, то я готов купить |
Сообщ.
#2
,
|
|
|
Вроде как есть openssl с ГОСТ, но емнип, собирать надо руками из сырцов, вобщем гугли.
|
Сообщ.
#3
,
|
|
|
Цитата Gonarh @ Вроде как есть openssl с ГОСТ, но емнип, собирать надо руками из сырцов, вобщем гугли. Для тек кто не знает: "openssl с XML не работает" к тому же оно поддерживает только 2 режима 2. гаммирование 3. гаммирование с обратной связью А вопрос темы был в другом |
Сообщ.
#4
,
|
|
|
прикол в том, что
Цитата по стандарту "XML Encryption Syntax and Processing (W3C)" и Цитата ГОСТ 28147-89 это разнополярные вещи. Первое - высокотехнологичный стандарт обработки данных, являющийся частью чего-то серьезного. ГОСТ 29147 - старый, как дерьмо мамонта, советский приторможенный на полную катушку стандарт. Это приблизительно как каменный топор рядом с айфоном положить. Как скрещивание старого дискового телефона с современной сотовой станцией ,) |
Сообщ.
#5
,
|
|
|
Цитата nemez @ как дерьмо мамонта Причем тут это? Есть определенный формат XML, который указан выше. Не я устанавливаю правила. Пожалуйста. Кто не читал "XML Encryption Syntax and Processing (W3C)" Не засоряйте ветку |
Сообщ.
#6
,
|
|
|
Цитата cutecode @ ? Есть определенный формат XML, который указан выше. Так вот. Я его читал и понимю в чем дело. Три блочных шифра, предусмотренные технической спецификацией - это Triple DES, AES-128, AES-256 и AES-192 опционально. Бронелобый ГОСТ эпохи серпа и молотка чужой на этом празнике жизни. Соответственно, реализация не имеет ничего общего ни с форматом ЭксЭмЭль, ни с его синтаксисом, ни с реальностью сегодняшнего дня. На выходе будет "колхоз красное дышло, куда повернул, то и вышло", или же "срала мазала лепила", или же как в одноименной сказке про велик, у которого руль от КрАЗа, фары от Белаза и седло от унитаза. Потому никто и ничего не пишет. Ибо говноинжеиринг |
Сообщ.
#7
,
|
|
|
Цитата nemez @ Потому никто и ничего не пишет. луди, хватит философии, помогите задачу решить. Я сам зашифрую, вот тока какой режим использовать? Просто не знаю на каком режиме остановиться. а не пишут потому что, весь нормальный опенсос в штатах пишут, и наше "приведение" им до Фени. |
Сообщ.
#8
,
|
|
|
Сообщ.
#9
,
|
|
|
смотрел, но там все туманно Encryption mode is specified by mode parameter of Gost28147-89- ParamSetParameters structure. CFB and CNT modes are RECOMMENDED to use. т.е. рекомендуется gammirovanie (counter) mode или gammirovanie s obratnoj svyaziyu но это рекомендуют, а как там в ФСС надо...? Судя по скудной документации ФСС, они сами не знают как там все происходит. |
Сообщ.
#10
,
|
|
|
Я думаю что все проще-простого:
Раз алгоритм ГОСТ 28147-89 предусматривает 4 режима работа, то можно использовать ЛЮБОЙ режим при условии указании режима, а софт в ФСС обязан отработать любой из 4 вариантов, иначе это будет нарушение госта. Добавлено В документе ФСС написано Цитата ни больше, ни меньше. Раз режим шифрования не указан. применяй любой Шифрование сессионного ключа и данных происходит по алгоритму ГОСТ 28147-89 |
Сообщ.
#11
,
|
|
|
Цитата ^D^ima @ cutecode используй режим гаммирования с обратной связью. Не забывай о хранении векторов инициализации. Они должны быть рандомные, на всякий случай напоминаю, а то не в первый раз видеть на их месте захардкоженные константы. |
Сообщ.
#12
,
|
|
|
Да, в инструкции ФСС написано
Шифрование сессионного ключа и данных происходит по алгоритму ГОСТ 28147-89 Но это же неправильно? Уже только эта фраза говорит о том, что человек из ФСС, это писавший, не совсем понимает все тонкости XML encryption. Я бы написал это так Шифрование данных происходит сессионным ключом алгоритмом ГОСТ 28147-89 Шифрование сессионного ключа происходит алгоритмом ГОСТ 2001, открытым ключом, "взятым" из сертификата ФСС По поводу openssl, я с ним уже давно разобрался. Гост поддерживается начиная с версии 1.0.1 >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 файл |