Форум КриптоПро
	 » 
	Средства криптографической защиты информации
	 » 
	Встраивание
	 » 
	Получение данных с Web сервиса  ФСС по электронному больничному листу в системе SAP
	 
	
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРОСказал «Спасибо»: 37 разПоблагодарили: 729 раз в 630 постах
 
 |  | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 16.08.2017(UTC) Сообщений: 24   Откуда: Санкт-ПетербургСказал «Спасибо»: 4 раз
 | 
            
		      
                Автор: Максим Коллегин  Да, мы используем эти функции во внутреннем документообороте. А чем тогда заполнять тег <xenc:CipherValue>..xenc:CipherValue> ?  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРОСказал «Спасибо»: 37 разПоблагодарили: 729 раз в 630 постах
 
 | 
            
		      
                Без программирования это значение не заполнить. У xmlenc не очень простая структура. 
 | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 16.08.2017(UTC) Сообщений: 24   Откуда: Санкт-ПетербургСказал «Спасибо»: 4 раз
 | 
            
		      
                т.е. это какая-то информация из сертификата, на котором мы шифруем? | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРОСказал «Спасибо»: 37 разПоблагодарили: 729 раз в 630 постах
 
 | 
            
		      
                Вы же сами привели цитату из документа ФСС вчера.  xmlenc - это отдельный формат зашифрованных данных, только отдаленно похож на pkcs#7.  Доработка нашего модуля SAP SSF для его поддержки - отдельная сложная задача. Отредактировано пользователем 1 октября 2019 г. 15:25:42(UTC)
 | Причина: Не указана | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Эксперт
 Группы: Участники
 Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская областьСказал(а) «Спасибо»: 110 разПоблагодарили: 397 раз в 367 постах
 
 | 
            
		      
                Автор: Михаил К.  А чем тогда заполнять тег <xenc:CipherValue>..xenc:CipherValue>?  В случае ФСС процесс как раз "несколько сложнее". Если в общих чертах, то чтобы из pkcs#7 получить данные для xmlenc нужно "доработать напильником": 1) убедиться что параметры совпадают, при необходимости выровнять паддингом данные до шифрования; 2) сделать заготовку xmlenc с этими параметрами и со своим сертификатом; 3) зашифровать данные, указывая сертификат получателя и свой закрытый ключ (иногда вместо ключа указывается свой сертификат из хранилища, закрытый ключ находится автоматически по выбранному своему сертификату); 4) декодировать ASN.1 структуры из pkcs#7 и вырезать 3 значения: блоб зашифрованного сессионного ключа, вектор инициализации, зашифрованные данные; 5) в одно CipherValue вставляется base64 от зашифрованного сессионного ключа, в другое CipherValue - base64 от склейки (вектор инициализации + зашифрованные данные). Вот тут попытка аналогичное сделать на php https://www.cryptopro.ru...aspx?g=posts&t=16790  Хотелось бы комментарий от сотрудников все ли там правильно или о чем-то забыли. | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 16.08.2017(UTC) Сообщений: 24   Откуда: Санкт-ПетербургСказал «Спасибо»: 4 раз
 | 
            
		      
                Автор: two_oceans  Автор: Михаил К.  А чем тогда заполнять тег <xenc:CipherValue>..xenc:CipherValue>?  В случае ФСС процесс как раз "несколько сложнее". Если в общих чертах, то чтобы из pkcs#7 получить данные для xmlenc нужно "доработать напильником": 1) убедиться что параметры совпадают, при необходимости выровнять паддингом данные до шифрования; 2) сделать заготовку xmlenc с этими параметрами и со своим сертификатом; 3) зашифровать данные, указывая сертификат получателя и свой закрытый ключ (иногда вместо ключа указывается свой сертификат из хранилища, закрытый ключ находится автоматически по выбранному своему сертификату); 4) декодировать ASN.1 структуры из pkcs#7 и вырезать 3 значения: блоб зашифрованного сессионного ключа, вектор инициализации, зашифрованные данные; 5) в одно CipherValue вставляется base64 от зашифрованного сессионного ключа, в другое CipherValue - base64 от склейки (вектор инициализации + зашифрованные данные). Вот тут попытка аналогичное сделать на php https://www.cryptopro.ru...aspx?g=posts&t=16790  Хотелось бы комментарий от сотрудников все ли там правильно или о чем-то забыли. Добрый день. Как я понял, формат pkcs#7 это частный случай ISO_10126. Т.е. паддинг уже есть. Свой сертификат так же есть (открытая/закрытая части). Случайный сессионный ключ шифрую на открытой части сертификата ФСС. А дальше необходимо сделать, как пишете вы? Разобрать зашифрованные данные по формату ASN.1? Паресер формата ASN.1 у меня есть. Вот только надо понять, что там что... Так же теперь непонятно, каким образом в SAP выполнить симметричное шифрование на сессионом ключе? | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 16.08.2017(UTC) Сообщений: 24   Откуда: Санкт-ПетербургСказал «Спасибо»: 4 раз
 | 
            
		      
                И еще вопрос, правильно я понимаю, как заполнять запрос с шифрованными данными? Код:  
<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"></xenc:EncryptionMethod>
      <ds:KeyInfo>
        <ds:X509Data>
          <ds:X509Certificate>BASE64 открытой часть своего сертификата</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
      <xenc:CipherData>
        <xenc:CipherValue>base64 от зашифрованного сессионного ключа</xenc:CipherValue>
      </xenc:CipherData>
    </xenc:EncryptedKey>
</ds:KeyInfo>
<xenc:CipherData>
    <xenc:CipherValue>base64 от склейки (вектор инициализации + зашифрованные данные)</xenc:CipherValue>
</xenc:CipherData>
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Эксперт
 Группы: Участники
 Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская областьСказал(а) «Спасибо»: 110 разПоблагодарили: 397 раз в 367 постах
 
 | 
            
		      
                Цитата:Добрый день.Как я понял, формат pkcs#7 это частный случай ISO_10126. Т.е. паддинг уже есть. Свой сертификат так же есть (открытая/закрытая части). Случайный сессионный ключ шифрую на открытой части сертификата ФСС. А дальше необходимо сделать, как пишете вы? Разобрать зашифрованные данные по формату ASN.1? Паресер формата ASN.1 у меня есть. Вот только надо понять, что там что...
 Так же теперь непонятно, каким образом в SAP выполнить симметричное шифрование на сессионом ключе?
 Действительно, pkcs#7 добавляет некий паддинг, но в соседней теме этот паддинг оказался неподходящим. 
 
 Также там (в ASN1 структуре pkcs#7) уже есть сгенерированный и зашифрованный сессионный ключ, есть шифрованные данные этим сессионным ключом и есть вектор инициализации. То есть теоретически надо добиться, чтобы параметры шифрования были правильные (TK26Z), выбрать нужные двоичные кусочки из ASN1 и сложить в правильные места XML, закодировав BASE64.
 По разбору - лучше конечно почитать формат pkcs#7. Ориентировочно - обычно самая большая структура в конце данных, которую ASN.1 не делит - зашифрованное сообщение, размер = размер сообщения, который дополнен до ближайшего большего кратного 8; перед ним неделимая структурка из 8 байт - вектор инициализации; c ключом посложнее - он обернут ASN.1, как в pkcs#7, так и XML, то есть вырезание делать вместе с оберткой, а не весь закрытый ключ.
 Автор: Михаил К.  И еще вопрос, правильно я понимаю, как заполнять запрос с шифрованными данными? По расположению похоже верно, но 1) не хватает нескольких атрибутов; 2) какая такая "открытая часть сертификата"? 
 
 Если включать только часть сертификата (открытый ключ), нужны другие теги и другие схемы, поэтому в тег Certificate включается весь сертификат. На случай если просто спутали термины: закрытый ключ не нужен, нужно именно то, что получаете когда экспортируете сертификат из хранилища сертификатов без закрытого ключа c кодированием BASE64 и без дополнительных атрибутов. Еще точнее: что между ограничителей ----- BEGIN CERTIFICATE----- -----END CERTIFICATE-----. Скорее всего это Вы и имели ввиду, но для ясности.
 | 
    | 
              1 пользователь поблагодарил two_oceans за этот пост. |  | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 16.08.2017(UTC) Сообщений: 24   Откуда: Санкт-ПетербургСказал «Спасибо»: 4 раз
 | 
            
		      
                Автор: two_oceans  Цитата:Добрый день.Как я понял, формат pkcs#7 это частный случай ISO_10126. Т.е. паддинг уже есть. Свой сертификат так же есть (открытая/закрытая части). Случайный сессионный ключ шифрую на открытой части сертификата ФСС. А дальше необходимо сделать, как пишете вы? Разобрать зашифрованные данные по формату ASN.1? Паресер формата ASN.1 у меня есть. Вот только надо понять, что там что...
 Так же теперь непонятно, каким образом в SAP выполнить симметричное шифрование на сессионом ключе?
 Действительно, pkcs#7 добавляет некий паддинг, но в соседней теме этот паддинг оказался неподходящим. 
 
 Также там (в ASN1 структуре pkcs#7) уже есть сгенерированный и зашифрованный сессионный ключ, есть шифрованные данные этим сессионным ключом и есть вектор инициализации. То есть теоретически надо добиться, чтобы параметры шифрования были правильные (TK26Z), выбрать нужные двоичные кусочки из ASN1 и сложить в правильные места XML, закодировав BASE64.
 По разбору - лучше конечно почитать формат pkcs#7. Ориентировочно - обычно самая большая структура в конце данных, которую ASN.1 не делит - зашифрованное сообщение, размер = размер сообщения, который дополнен до ближайшего большего кратного 8; перед ним неделимая структурка из 8 байт - вектор инициализации; c ключом посложнее - он обернут ASN.1, как в pkcs#7, так и XML, то есть вырезание делать вместе с оберткой, а не весь закрытый ключ.
 Автор: Михаил К.  И еще вопрос, правильно я понимаю, как заполнять запрос с шифрованными данными? По расположению похоже верно, но 1) не хватает нескольких атрибутов; 2) какая такая "открытая часть сертификата"? 
 
 Если включать только часть сертификата (открытый ключ), нужны другие теги и другие схемы, поэтому в тег Certificate включается весь сертификат. На случай если просто спутали термины: закрытый ключ не нужен, нужно именно то, что получаете когда экспортируете сертификат из хранилища сертификатов без закрытого ключа c кодированием BASE64 и без дополнительных атрибутов. Еще точнее: что между ограничителей ----- BEGIN CERTIFICATE----- -----END CERTIFICATE-----. Скорее всего это Вы и имели ввиду, но для ясности.
 Спасибо большое за разъяснения (про сертификат имел ввиду именно часть между ----- BEGIN CERTIFICATE----- -----END CERTIFICATE-----)!  Т.е. алгоритм такой: формирую случайный ключ, шифрую на нем данные запроса, потом применяю паддинг к ключу, шифрую его на открытой части сертификата ФСС. Получаю данные в формате ASN.1(PKCS7). Разбираю их и необходимые куски вставляю в итоговый XML?  Если все так, то вот еще вопросы: есть ли требования к формированию ключа? Шифровать на нем данные надо до применения к нему паддинга? или после? И надо ли применять паддинг к данным, которые шифрую на ключе? | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
	                           
	Форум КриптоПро
	 » 
	Средства криптографической защиты информации
	 » 
	Встраивание
	 » 
	Получение данных с Web сервиса  ФСС по электронному больничному листу в системе SAP
	 
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close