На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Модераторы: Pr0[)!9Y, ANDLL
  
> ready to pay. GOST and XML encryption
    нужно сделать шифрование электронного больничного XML файла по стандарту "XML Encryption Syntax and Processing (W3C)"
    согласно инструкции ФСС "Шифрование сессионного ключа и данных происходит по алгоритму ГОСТ 28147-89"

    Вот шаблон зашифрованного XML файла
    ExpandedWrap disabled
      <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>


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

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


    В сети очень много инструментов для шифрования, но ни все знают что такое русский ГОСТ
    Если у кого-то уже есть готовый инструмент, то я готов купить
    Regards,
    Alexander Saprykin
      Вроде как есть openssl с ГОСТ, но емнип, собирать надо руками из сырцов, вобщем гугли.
        Цитата Gonarh @
        Вроде как есть openssl с ГОСТ, но емнип, собирать надо руками из сырцов, вобщем гугли.

        Для тек кто не знает: "openssl с XML не работает"
        к тому же оно поддерживает только 2 режима
        2. гаммирование
        3. гаммирование с обратной связью

        А вопрос темы был в другом
        Regards,
        Alexander Saprykin
          прикол в том, что
          Цитата
          по стандарту "XML Encryption Syntax and Processing (W3C)"

          и
          Цитата
          ГОСТ 28147-89

          это разнополярные вещи.
          Первое - высокотехнологичный стандарт обработки данных, являющийся частью чего-то серьезного.
          ГОСТ 29147 - старый, как дерьмо мамонта, советский приторможенный на полную катушку стандарт.
          Это приблизительно как каменный топор рядом с айфоном положить. Как скрещивание старого дискового телефона с современной сотовой станцией ,)
          R Tape loading error, 0:1
            Цитата nemez @
            как дерьмо мамонта

            Причем тут это? Есть определенный формат XML, который указан выше.
            Не я устанавливаю правила.
            Пожалуйста. Кто не читал "XML Encryption Syntax and Processing (W3C)"
            Не засоряйте ветку
            Regards,
            Alexander Saprykin
              Цитата cutecode @
              ? Есть определенный формат XML, который указан выше.

              Так вот. Я его читал и понимю в чем дело.
              Три блочных шифра, предусмотренные технической спецификацией - это Triple DES, AES-128, AES-256 и AES-192 опционально.
              Бронелобый ГОСТ эпохи серпа и молотка чужой на этом празнике жизни.
              Соответственно, реализация не имеет ничего общего ни с форматом ЭксЭмЭль, ни с его синтаксисом, ни с реальностью сегодняшнего дня.
              На выходе будет "колхоз красное дышло, куда повернул, то и вышло", или же "срала мазала лепила", или же как в одноименной сказке про велик, у которого руль от КрАЗа, фары от Белаза и седло от унитаза.
              Потому никто и ничего не пишет. Ибо говноинжеиринг
              R Tape loading error, 0:1
                Цитата nemez @
                Потому никто и ничего не пишет.

                луди, хватит философии, помогите задачу решить. Я сам зашифрую, вот тока какой режим использовать?
                Просто не знаю на каком режиме остановиться.

                а не пишут потому что, весь нормальный опенсос в штатах пишут, и наше "приведение" им до Фени.
                Regards,
                Alexander Saprykin
                  "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
                    Цитата ^D^ima @

                    смотрел, но там все туманно
                    ExpandedWrap disabled
                      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
                    но это рекомендуют, а как там в ФСС надо...?
                    Судя по скудной документации ФСС, они сами не знают как там все происходит.
                    Regards,
                    Alexander Saprykin
                      Я думаю что все проще-простого:
                      Раз алгоритм ГОСТ 28147-89 предусматривает 4 режима работа, то можно использовать ЛЮБОЙ режим при условии указании режима, а софт в ФСС обязан отработать любой из 4 вариантов, иначе это будет нарушение госта.

                      Добавлено
                      В документе ФСС написано
                      Цитата
                      Шифрование сессионного ключа и данных происходит по алгоритму ГОСТ 28147-89
                      ни больше, ни меньше. Раз режим шифрования не указан. применяй любой
                      "Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
                        Цитата ^D^ima @

                        cutecode

                        используй режим гаммирования с обратной связью.
                        Не забывай о хранении векторов инициализации. Они должны быть рандомные, на всякий случай напоминаю, а то не в первый раз видеть на их месте захардкоженные константы.
                        R Tape loading error, 0:1
                          Да, в инструкции ФСС написано
                          ExpandedWrap disabled
                            Шифрование сессионного ключа и данных происходит по алгоритму ГОСТ 28147-89

                          Но это же неправильно? Уже только эта фраза говорит о том, что человек из ФСС, это писавший, не совсем понимает все тонкости XML encryption.

                          Я бы написал это так
                          ExpandedWrap disabled
                            Шифрование данных происходит сессионным ключом алгоритмом ГОСТ 28147-89
                            Шифрование сессионного ключа происходит алгоритмом ГОСТ 2001, открытым ключом, "взятым" из сертификата ФСС


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

                          ExpandedWrap disabled
                            >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 файл
                          Regards,
                          Alexander Saprykin
                          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script Execution time: 0,1117 ]   [ 14 queries used ]   [ Generated: 22.06.18, 13:21 GMT ]