Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Получение данных с Web сервиса ФСС по электронному больничному листу в системе SAP
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,398  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.08.2017(UTC) Сообщений: 19   Откуда: Санкт-Петербург Сказал «Спасибо»: 2 раз
|
Автор: Максим Коллегин  Да, мы используем эти функции во внутреннем документообороте. А чем тогда заполнять тег <xenc:CipherValue>..xenc:CipherValue>?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,398  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
Без программирования это значение не заполнить. У xmlenc не очень простая структура.
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.08.2017(UTC) Сообщений: 19   Откуда: Санкт-Петербург Сказал «Спасибо»: 2 раз
|
т.е. это какая-то информация из сертификата, на котором мы шифруем?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,398  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
Вы же сами привели цитату из документа ФСС вчера. xmlenc - это отдельный формат зашифрованных данных, только отдаленно похож на pkcs#7. Доработка нашего модуля SAP SSF для его поддержки - отдельная сложная задача. Отредактировано пользователем 1 октября 2019 г. 15:25:42(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Автор: Михаил К.  А чем тогда заполнять тег <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) Сообщений: 19   Откуда: Санкт-Петербург Сказал «Спасибо»: 2 раз
|
Автор: 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) Сообщений: 19   Откуда: Санкт-Петербург Сказал «Спасибо»: 2 раз
|
И еще вопрос, правильно я понимаю, как заполнять запрос с шифрованными данными? Код:
<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 раз Поблагодарили: 395 раз в 366 постах
|
Цитата:Добрый день. Как я понял, формат 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) Сообщений: 19   Откуда: Санкт-Петербург Сказал «Спасибо»: 2 раз
|
Автор: 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