Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ggok56crypt  
#1 Оставлено : 20 октября 2017 г. 9:02:02(UTC)
ggok56crypt

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.10.2017(UTC)
Сообщений: 3

Здравствуйте.
Разбираюсь с веб-сервисом ФСС для электронных больничных. Застрял на формировании хэша элемента "S:Body" по алгоритму ГОСТ34.11-94.
С тестового кабинета ФСС скачал их корректный запрос (GETLNINS_3103275205_2017_10_12_00010_request.xml.xml). В нём элементу
Код:
<S:Body wsu:Id="REGNO_3103275205"><ns1:getPrivateLNData xmlns:ns1="http://ru/ibs/fss/ln/ws/FileOperationsLn.wsdl" xmlns:ns2="http://ru/ibs/fss/ln/ws/FileOperationsLnInternal.wsdl" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:eln="http://ru/ibs/fss/ln/ws/FileOperationsLn.wsdl" 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" xmlns:xml="http://www.w3.org/XML/1998/namespace"><ns1:regNum>3103275205</ns1:regNum><ns1:lnCode>290195190104</ns1:lnCode><ns1:snils>09365295200</ns1:snils></ns1:getPrivateLNData></S:Body>
соответствует хэш
Код:
<DigestValue>g2gM6UHHFESVK0JbH/yDCBOXlWQM2ZV24gGfEszLD1Y=</DigestValue>


Из форума на foxclub.ru переделал код для формирования хэша
Код:
*Расчет хэш Igor Korolyov  
  clear  
  ? calculatemd5(FILETOSTR("test.txt"))    
    
    PROCEDURE calculatemd5    
    LPARAMETERS tcInput    
  * Получаем хэш от переданной строки    
    #DEFINE dnPROV_RSA_FULL               1    
  #DEFINE PROV_GOST_2001_DH		75   
    #DEFINE dnCALG_MD5                    0x8003    
  #DEFINE dnCALG_GR3411			0x801E   
    #DEFINE dnHP_HASHVAL                  0x0002    
    
    DECLARE INTEGER CryptAcquireContext IN WIN32API ;    
     INTEGER @, STRING, STRING, INTEGER, INTEGER    
    DECLARE INTEGER CryptCreateHash IN WIN32API ;    
     INTEGER, INTEGER, INTEGER, INTEGER, INTEGER @    
    DECLARE INTEGER CryptHashData IN WIN32API ;    
     INTEGER, STRING, INTEGER, INTEGER    
    DECLARE INTEGER CryptGetHashParam IN WIN32API ;    
     INTEGER, INTEGER, STRING @, INTEGER @, INTEGER    
    DECLARE INTEGER CryptDestroyHash IN WIN32API ;    
     INTEGER    
    DECLARE INTEGER CryptReleaseContext IN WIN32API ;    
     INTEGER, INTEGER    
    LOCAL lnProviderHandle, lnHashHandle, lcHash, lnHashLen    
    lnProviderHandle = 0    
    lnHashHandle = 0    
    lcHash = SPACE(16)    
  lcHash = SPACE(32)    
    lnHashLen = 16    
  lnHashLen = 32  
    IF CryptAcquireContext(@m.lnProviderHandle, "", "", PROV_GOST_2001_DH, 0xF0000000) = 0    
     MESSAGEBOX("Ошибка получения CryptoAPI контекста")    
     RETURN ""    
    ENDIF    
    IF CryptCreateHash(m.lnProviderHandle, dnCALG_GR3411, 0, 0, @m.lnHashHandle) = 0    
     MESSAGEBOX("Ошибка создания хендла хеша")    
     CryptReleaseContext(m.lnProviderHandle, 0)    
     RETURN ""    
    ENDIF    
    IF CryptHashData(m.lnHashHandle, m.tcInput, LEN(m.tcInput), 0) = 0    
     MESSAGEBOX("Ошибка хеширования")    
     CryptDestroyHash(m.lnHashHandle)    
     CryptReleaseContext(m.lnProviderHandle, 0)    
     RETURN ""    
    ENDIF    
    IF CryptGetHashParam(m.lnHashHandle, dnHP_HASHVAL, @m.lcHash, @m.lnHashLen, 0) = 0    
     MESSAGEBOX("Ошибка получения хеша")    
     CryptDestroyHash(m.lnHashHandle)    
     CryptReleaseContext(m.lnProviderHandle, 0)    
     RETURN ""    
    ENDIF    
    CryptDestroyHash(m.lnHashHandle)    
    CryptReleaseContext(m.lnProviderHandle, 0)    
  =STRTOFILE(STRCONV(m.lcHash, 13),'1.txt')  
    RETURN STRCONV(m.lcHash, 13)                     &&возвращает хэш в base64
    ENDPROC


Но получается совершенно другой хэш:
Код:
a7CJeE2xDLoKNWtNHpFefJWsozIsI0jmSy643viOFXY=

Пробовал и утилиты rhash,cpverify. Корректного хэша так и не добился.
Через soapUI тестировал GETLNINS_3103275205_2017_10_12_00010_request.xml.xml Если изменить "S:Body" (или DigestValue), то запрос не работает. Т.е. в запросе DigestValue действительно хранит хэш элемента S:Body.
Подскажите, пожалуйста, как в ФСС рассчитывают хэш? В их спецификации описывается, что применяется ГОСТ34.11-94 и base64.
Offline Максим Коллегин  
#2 Оставлено : 20 октября 2017 г. 9:14:42(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Перевидите обе base64 строки в шестнадцатиричный вид - может будет видна разница.
Знания в базе знаний, поддержка в техподдержке
Offline ggok56crypt  
#3 Оставлено : 20 октября 2017 г. 13:37:41(UTC)
ggok56crypt

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.10.2017(UTC)
Сообщений: 3

Автор: maxdm Перейти к цитате
Перевидите обе base64 строки в шестнадцатиричный вид - может будет видна разница.

из запроса
Код:
83680CE941C71444952B425B1FFC8308139795640CD99576E2019F12CCCB0F56

из моего кода
Код:
6BB089784DB10CBA0A356B4D1E915E7C95ACA3322C2348E64B2EB8DEF88E1576


Offline georgy111  
#4 Оставлено : 25 октября 2017 г. 0:34:03(UTC)
georgy111

Статус: Активный участник

Группы: Участники
Зарегистрирован: 23.07.2015(UTC)
Сообщений: 74

Сказал(а) «Спасибо»: 30 раз
Offline ggok56crypt  
#5 Оставлено : 25 октября 2017 г. 11:43:04(UTC)
ggok56crypt

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.10.2017(UTC)
Сообщений: 3

Автор: georgy111 Перейти к цитате
https://habrahabr.ru/post/279895/


нет, не помогло:

rhash.exe --gost test.txt > 1.txt
Код:
4003556e5620cec51b1b335a2daa9e316ddcecf548d85ee90dd44115b7e7ed72


rhash.exe --gost-cryptopro test.txt > 1.txt
Код:
6bb089784db10cba0a356b4d1e915e7c95aca3322c2348e64b2eb8def88e1576


rhash --gost --gost-reverse test.txt > 1.txt
Код:
72ede7b71541d40de95ed848f5ecdc6d319eaa2d5a331b1bc5ce20566e550340


rhash --gost-cryptopro --gost-reverse test.txt > 1.txt
Код:
76158ef8deb82e4be648232c32a3ac957c5e911e4d6b350aba0cb14d7889b06b
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.