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

Уведомление

Icon
Error

6 Страницы«<3456>
Опции
К последнему сообщению К первому непрочитанному
Offline Denisekat  
#41 Оставлено : 21 сентября 2022 г. 12:28:47(UTC)
Denisekat

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

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

Сказал(а) «Спасибо»: 7 раз
Автор: Андрей * Перейти к цитате
Trainmanual .pdf
8994FEC4EE6B49AD0A5CD0B57563BC44332944DA6D7029470F7E99FC23C55844 GOST R 34.11-2012 256

Ага, оба наших хэша созданы не правильно.. Ну и фиг с ним с фронтом, на бэке то что я не так делаю?
Вот же подарок:
Автор: Санчир Момолдаев Перейти к цитате

дарю функцию хэширования:
Код:
# хэширование текстовых или байтовых данных
def gost_hash(data: Union[str, bytes, bytearray], encoding="utf-8") -> str:
    hashed_data = pycades.HashedData()
    hashed_data.Algorithm = pycades.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256
    hashed_data.DataEncoding = pycades.CADESCOM_BASE64_TO_BINARY
    if isinstance(data, str):
        data = bytes(data.encode(encoding))
    hashed_data.Hash(base64.b64encode(data).decode())
    hex_hash = hashed_data.Value
    byte_hash = bytes.fromhex(hex_hash)
    return base64.b64encode(byte_hash).decode()


Собственно ничего от себя не добавлял..
Offline Denisekat  
#42 Оставлено : 21 сентября 2022 г. 12:47:55(UTC)
Denisekat

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

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

Сказал(а) «Спасибо»: 7 раз
Автор: Санчир Момолдаев Перейти к цитате
хэши разнятся.
back hash != front hash (из зачем он?)
что-то вы перемудрили

Я отправил два варианта:
- когда на бэке создается и передается на подпись(на фронте не хэштруется): (back)hash.txt
- когда с бэка передается файл(или сразу находиться у фронта) и хэш создается на фронте перед его подписанием: (front)HASH.txt

Хотя не понятно почему по одному алгоритму(GOST R 34.11-2012 256) получаются разные хэши..

Отредактировано пользователем 21 сентября 2022 г. 12:50:05(UTC)  | Причина: Дополнения

Offline Санчир Момолдаев  
#43 Оставлено : 21 сентября 2022 г. 14:41:42(UTC)
Санчир Момолдаев

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

Группы: Администраторы, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,244
Российская Федерация

Сказал(а) «Спасибо»: 106 раз
Поблагодарили: 300 раз в 278 постах
не надо считать хэш от хэша!
Техническую поддержку оказываем тут
Наша база знаний
Offline Denisekat  
#44 Оставлено : 21 сентября 2022 г. 16:20:27(UTC)
Denisekat

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

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

Сказал(а) «Спасибо»: 7 раз
Автор: Санчир Момолдаев Перейти к цитате
не надо считать хэш от хэша!

Возможно я неоднозначно объяснил.

Я беру документ, создаю его хэш((back)hash.txt) и передаю на фронт его значение. Внимание, уже на этом этапе хэш иной, чем нужно(Андрей дал верный). Фронт ловит хэш и сразу отправляет его в плагин. Плагин не принимает хэш без указания алгоритма(фронт его передает параметром) - oSignedData.SignHash(oHashedData, oSigner, 1). Указываем алгоритм. Возвращается подпись - она не валидна.

Код:
// Пришло с бэка
var sHashValue = "8994FEC4EE6B49AD0A5CD0B57563BC44332944DA6D7029470F7E99FC23C55844 ";

// Алгоритм хэширования, при помощи которого было вычислено хэш-значение
// Полный список поддерживаемых алгоритмов указан в перечислении CADESCOM_HASH_ALGORITHM
var hashAlg = 101; // 101

// Создаем объект CAdESCOM.HashedData
var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");

// Инициализируем объект заранее вычисленным хэш-значением
// Алгоритм хэширования нужно указать до того, как будет передано хэш-значение
yield oHashedData.propset_Algorithm(hashAlg);
yield oHashedData.SetHashValue(sHashValue);
sSignedMessage = yield oSignedData.SignHash(oHashedData, oSigner, 1);


Так как это не работает, мы, для тестирования, убираем бэк(совсем), и делаем все операции на фронте. Фронт берет файл напрямую. Берет его хэш((front)HASH.txt) - он опять != эталонному от Андрея, а еще и != тому что пришел с бэка, когда мы использовали бэк, но сейчас не используем и ничего не получаем, а создаем напрямую от файла один раз хэш. Этот хэш уходит в функцию oSignedData.SignHash(oHashedData, oSigner, 1) вместе с указанием алгоритма, который использовался при хэшировании один раз на фронте напрямую, и нам возвращается подпись - которая проходит валидацию функцией из библиотеки, НО, и это самое важное, не проходит валидацию ни в одном из онлайн валидаторов и cptools.

Offline Санчир Момолдаев  
#45 Оставлено : 21 сентября 2022 г. 17:50:06(UTC)
Санчир Момолдаев

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

Группы: Администраторы, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,244
Российская Федерация

Сказал(а) «Спасибо»: 106 раз
Поблагодарили: 300 раз в 278 постах
у hashedData укажите DataEncoding = CADESCOM_BASE64_TO_BINARY
Техническую поддержку оказываем тут
Наша база знаний
Offline Denisekat  
#46 Оставлено : 22 сентября 2022 г. 9:00:33(UTC)
Denisekat

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

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

Сказал(а) «Спасибо»: 7 раз
Автор: Санчир Момолдаев Перейти к цитате
у hashedData укажите DataEncoding = CADESCOM_BASE64_TO_BINARY

На бэке указано.
Offline Санчир Момолдаев  
#47 Оставлено : 22 сентября 2022 г. 10:46:41(UTC)
Санчир Момолдаев

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

Группы: Администраторы, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,244
Российская Федерация

Сказал(а) «Спасибо»: 106 раз
Поблагодарили: 300 раз в 278 постах
На фронте тоже укажите
Техническую поддержку оказываем тут
Наша база знаний
Offline Denisekat  
#48 Оставлено : 22 сентября 2022 г. 16:46:06(UTC)
Denisekat

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

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

Сказал(а) «Спасибо»: 7 раз
Автор: Denisekat Перейти к цитате
Автор: Санчир Момолдаев Перейти к цитате
не надо считать хэш от хэша!

Возможно я неоднозначно объяснил.

Я беру документ, создаю его хэш((back)hash.txt) и передаю на фронт его значение. Внимание, уже на этом этапе хэш иной, чем нужно(Андрей дал верный). Фронт ловит хэш и сразу отправляет его в плагин. Плагин не принимает хэш без указания алгоритма(фронт его передает параметром) - oSignedData.SignHash(oHashedData, oSigner, 1). Указываем алгоритм. Возвращается подпись - она не валидна.

Код:
// Пришло с бэка
var sHashValue = "8994FEC4EE6B49AD0A5CD0B57563BC44332944DA6D7029470F7E99FC23C55844 ";

// Алгоритм хэширования, при помощи которого было вычислено хэш-значение
// Полный список поддерживаемых алгоритмов указан в перечислении CADESCOM_HASH_ALGORITHM
var hashAlg = 101; // 101

// Создаем объект CAdESCOM.HashedData
var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");

// Инициализируем объект заранее вычисленным хэш-значением
// Алгоритм хэширования нужно указать до того, как будет передано хэш-значение
yield oHashedData.propset_Algorithm(hashAlg);
yield oHashedData.SetHashValue(sHashValue);
sSignedMessage = yield oSignedData.SignHash(oHashedData, oSigner, 1);


Так как это не работает, мы, для тестирования, убираем бэк(совсем), и делаем все операции на фронте. Фронт берет файл напрямую. Берет его хэш((front)HASH.txt) - он опять != эталонному от Андрея, а еще и != тому что пришел с бэка, когда мы использовали бэк, но сейчас не используем и ничего не получаем, а создаем напрямую от файла один раз хэш. Этот хэш уходит в функцию oSignedData.SignHash(oHashedData, oSigner, 1) вместе с указанием алгоритма, который использовался при хэшировании один раз на фронте напрямую, и нам возвращается подпись - которая проходит валидацию функцией из библиотеки, НО, и это самое важное, не проходит валидацию ни в одном из онлайн валидаторов и cptools.



Вот же:

Код:
var hashAlg = 101; // 101
var oHashedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
yield oHashedData.propset_Algorithm(hashAlg);


Offline Санчир Момолдаев  
#49 Оставлено : 22 сентября 2022 г. 22:08:27(UTC)
Санчир Момолдаев

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

Группы: Администраторы, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,244
Российская Федерация

Сказал(а) «Спасибо»: 106 раз
Поблагодарили: 300 раз в 278 постах
и где там DataEncoding?
Техническую поддержку оказываем тут
Наша база знаний
Offline Denisekat  
#50 Оставлено : 23 сентября 2022 г. 11:43:08(UTC)
Denisekat

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

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

Сказал(а) «Спасибо»: 7 раз
Автор: Санчир Момолдаев Перейти к цитате
и где там DataEncoding?

Добавили.
Но. Хэш от Андрея и без добавления этого параметра подписывался валидной подписью.
Проблема, очевидно, не в том что функция подписи неправильно воспринимает хэш, а в том что бэк создает неправильный хэш от файла.

Бэк: B2E592BC7325D98DD18B431CD925489FA3679585B72025133EB55B33ACB62B37
Надо: 8994FEC4EE6B49AD0A5CD0B57563BC44332944DA6D7029470F7E99FC23C55844

И не понятно в чем причина, если функция(код функции хэширования) фактически одна и та же..
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
6 Страницы«<3456>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.