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

Уведомление

Icon
Error

6 Страницы«<3456>
Опции
К последнему сообщению К первому непрочитанному
Offline Евгений111  
#41 Оставлено : 2 октября 2023 г. 17:33:19(UTC)
Евгений111

Статус: Участник

Группы: Участники
Зарегистрирован: 08.09.2023(UTC)
Сообщений: 10
Российская Федерация
Откуда: Санкт-Петербург

Сказал(а) «Спасибо»: 2 раз
Автор: Андрей * Перейти к цитате

Странная версия плагина,откуда информация?
Версия плагина: 2.0.14815

Такую возвращает хром в инфе о расширении.
В виндовом списке программ указан номер сборки 2.0.14928.

зы: вот тоже прямо то, что кажет ваша тестовая страница:

Версия плагина: 2.0.14928
Версия криптопровайдера: 5.0.12922
Криптопровайдер: Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider
Платформа: Windows
UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36

Отредактировано пользователем 2 октября 2023 г. 17:37:46(UTC)  | Причина: Не указана

Offline SkySandy  
#42 Оставлено : 2 октября 2023 г. 17:45:49(UTC)
SkySandy

Статус: Участник

Группы: Участники
Зарегистрирован: 24.01.2023(UTC)
Сообщений: 18
Мужчина
Российская Федерация
Откуда: Москва

Сказал «Спасибо»: 1 раз
Поблагодарили: 15 раз в 9 постах
Автор: Максим Коллегин Перейти к цитате
Добрый день, спасибо за исследование.
Какая у вас версия плагина?
Кажется, мы подобное недавно исправляли.


Вы и сами можете убедиться что не работает шифрование.
1) Войдите на страницу на Вашем сайте https://www.cryptopro.ru...page/symalgo_sample.html

2) Выберите 2 сертификата

3) Установите точку останова на файле

https://www.cryptopro.ru...async_code.js?v=28675b12
Строка 931 document.getElementById("DataEncryptedKey1").innerHTML = escapeHtml(ExportedKey1);

4) Нажмите Шифровать

5) Почитайте значение переменной var ExportedKey1 = yield oSymAlgo.ExportKey(certificate1);

Там будет следующее

"31 2E 32 2E 36 34 33 2E 37 2E 31 2E 32 2E 35 2E 31 2E 31 00:0A 20 00 00 49 2E 00 00 4D 41 47 31 00 02 00 00 30 13 06 07 2A 85 03 02 02 24 00 06 08 2A 85 03 07 01 01 02 02 F5 D3 0F 04 6A 3E F3 12 5F F7 34 85 9A 03 2A 37 7E 78 7F 15 78 39 7F 8F BD 19 A6 FB 8A 1E A1 B9 54 85 2F B4 36 94 3D DD 00 20 77 DF 63 D9 95 A6 AB 6C 7E 31 25 02 2E 3D AB 61 EC A2 74 CE 2E C1:01 20 00 00 1E 66 00 00 FD 51 4A 37 1E 66 00 00 73 D8 35 F3 AD F5 84 E0 F7 B6 E7 62 6B F1 00 57 79 18 26 8C 4F 4A F6 21 4E 91 67 73 13 D7 2D 6E 6F B7 49 9F 42 2C AD EE 1F 3C AE FD 30 09 06 07 2A 85 03 02 02 1F 01"

Обратите внимание на конец строки
30 09 06 07 2A 85 03 02 02 1F 01

Именно об этом я и писал

А исправляли судя по всему вы то что я писал на 1-й странице этого обсуждения https://www.cryptopro.ru...&m=138487#post138487
Это совершенно разные вещи

Я уже 4 раза дизассемблировал код вашего плагина и думаю что то в нем понимаю )

Отредактировано пользователем 2 октября 2023 г. 17:49:32(UTC)  | Причина: Не указана

Выше только звезды
Offline Евгений111  
#43 Оставлено : 3 октября 2023 г. 13:01:51(UTC)
Евгений111

Статус: Участник

Группы: Участники
Зарегистрирован: 08.09.2023(UTC)
Сообщений: 10
Российская Федерация
Откуда: Санкт-Петербург

Сказал(а) «Спасибо»: 2 раз
Так. У меня есть некоторый прогресс.
После очередных манипуляций с передаваемыми параметрами, они таки принялись в ImportKey. После этого также отработали SetMode/SetPadding - по всей видимости, они могли принять нужные параметры только после и в контексте импортированного ключа (это мое предположение).
Дешифрование после этого отработало без ошибок, но выдало полную муть. Соответственно, ввиду отсутствия доков, есть вопросы:
- точно ли строка шифрованных данных передается именно в Hex, а не в Base64, как в других методах?
- учитывая, что первые 8 байт - это вектор инициализации, точно ли их нужно отрезать, или надо передавать вместе с преамбулой?
- для вектора инициализации - играет ли роль форматирование Hex (наличие пробелов между байтами либо их отсутствие) при передаче в setprop_IV(...)?
- при импорте ключа - проверяется ли результат декодирования симметричного ключа по MAC (что собственно обеспечивает "дуроустойчивость" к выбору нужного личного сертификата)?
Offline SkySandy  
#44 Оставлено : 3 октября 2023 г. 14:21:08(UTC)
SkySandy

Статус: Участник

Группы: Участники
Зарегистрирован: 24.01.2023(UTC)
Сообщений: 18
Мужчина
Российская Федерация
Откуда: Москва

Сказал «Спасибо»: 1 раз
Поблагодарили: 15 раз в 9 постах
Автор: Евгений111 Перейти к цитате
Так. У меня есть некоторый прогресс.
После очередных манипуляций с передаваемыми параметрами, они таки принялись в ImportKey. После этого также отработали SetMode/SetPadding - по всей видимости, они могли принять нужные параметры только после и в контексте импортированного ключа (это мое предположение).
Дешифрование после этого отработало без ошибок, но выдало полную муть. Соответственно, ввиду отсутствия доков, есть вопросы:
- точно ли строка шифрованных данных передается именно в Hex, а не в Base64, как в других методах?
- учитывая, что первые 8 байт - это вектор инициализации, точно ли их нужно отрезать, или надо передавать вместе с преамбулой?
- для вектора инициализации - играет ли роль форматирование Hex (наличие пробелов между байтами либо их отсутствие) при передаче в setprop_IV(...)?
- при импорте ключа - проверяется ли результат декодирования симметричного ключа по MAC (что собственно обеспечивает "дуроустойчивость" к выбору нужного личного сертификата)?


- шифрованная строка передается в формате: FF FF FF где FF - шестнадцатеричный код
- шифрованная строка она без первых 8 байт
- форматирование роли не играет. Но лучше все таки его соблюсти как в примерах
- да насколько я понимаю при импорте ключа проверяется. Поэтому ключ должен быть правильный (при декодировании ключ МО)

Выше только звезды
thanks 1 пользователь поблагодарил SkySandy за этот пост.
Евгений111 оставлено 03.10.2023(UTC)
Offline Евгений111  
#45 Оставлено : 3 октября 2023 г. 17:43:01(UTC)
Евгений111

Статус: Участник

Группы: Участники
Зарегистрирован: 08.09.2023(UTC)
Сообщений: 10
Российская Федерация
Откуда: Санкт-Петербург

Сказал(а) «Спасибо»: 2 раз
И я правильно понимаю, что в варианте, использованном ФСС, не применяется диверсификация ключа (DiversData)?
Этого блока там просто нет. У них есть Ukm, идущий внутри блоба SessionKey, и они этим вроде бы ограничиваются.
Offline SkySandy  
#46 Оставлено : 4 октября 2023 г. 9:30:26(UTC)
SkySandy

Статус: Участник

Группы: Участники
Зарегистрирован: 24.01.2023(UTC)
Сообщений: 18
Мужчина
Российская Федерация
Откуда: Москва

Сказал «Спасибо»: 1 раз
Поблагодарили: 15 раз в 9 постах
Автор: Евгений111 Перейти к цитате
И я правильно понимаю, что в варианте, использованном ФСС, не применяется диверсификация ключа (DiversData)?
Этого блока там просто нет. У них есть Ukm, идущий внутри блоба SessionKey, и они этим вроде бы ограничиваются.


Да в варианте шифрования-дешифрования ФСС - DiversData совсем не нужен
Выше только звезды
thanks 1 пользователь поблагодарил SkySandy за этот пост.
Евгений111 оставлено 04.10.2023(UTC)
Online Русев Андрей  
#47 Оставлено : 6 октября 2023 г. 22:18:29(UTC)
Русев Андрей

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,423

Сказал(а) «Спасибо»: 37 раз
Поблагодарили: 568 раз в 396 постах
Автор: SkySandy Перейти к цитате
Обратите внимание на конец строки
30 09 06 07 2A 85 03 02 02 1F 01
Там будет
Код:
30 0B 06 09 2A 85 03 07 01 02 05 01 01

Это исправлено в составе релиз-кандидата КриптоПро CSP 5.0.12922 от 17.08.2023, версия плагина при этом должна быть 2.0.14926 на Windows и 2.0.14928 на unix-ах. Отдельного дистрибутива плагина с исправлением пока нет. Предыдущие версии плагина не годятся.
Официальная техподдержка. Официальная база знаний.
Offline Евгений111  
#48 Оставлено : 9 октября 2023 г. 11:11:11(UTC)
Евгений111

Статус: Участник

Группы: Участники
Зарегистрирован: 08.09.2023(UTC)
Сообщений: 10
Российская Федерация
Откуда: Санкт-Петербург

Сказал(а) «Спасибо»: 2 раз
Новым плагином удалось успешно расшифровать, потому что он наконец-то принял в ImportKey OID от TZ26 (на который до этого упорно выдавал "плохие данные", что и заставило меня поменять оид в передаваемом блобе на вербу и получать хлам при расшифровке).
Ура. Всем огромное спасибо.
Offline cloud_gd  
#49 Оставлено : 20 ноября 2023 г. 5:49:06(UTC)
cloud_gd

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

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

Здравствуйте, пытаюсь отправить зашифрованное сообщение.


Шифрую данные следующим образом:
Код:

const oSymAlgo = await cadesplugin.CreateObjectAsync("cadescom.symmetricalgorithm");

await oSymAlgo.GenerateKey();

const oSesKeyIV = await oSymAlgo.IV;
    
const data = Buffer.from(`${unencryptedMessage}`).toString('base64');

await oSymAlgo.SetMode(cadesplugin.CRYPT_MODE_CBCSTRICT);
await oSymAlgo.SetPadding(cadesplugin.ISO10126_PADDING);

const EncryptedData = await oSymAlgo.Encrypt(data, 1);

const dataBase64 = Buffer.from(`${oSesKeyIV.replace(/ /g, '')}${EncryptedData}`, 'hex').toString('base64');


Далее, собираю KeyTransport:

Код:

const ExportedKey = await oSymAlgo.ExportKey(cadesCertificate);
const ExportedKeyArr = ExportedKey.replace(/ /g, '').split(':');

const publicKey = ExportedKeyArr[1].substr(-64 * 2);

const sessionKeyBlob = ExportedKeyArr[2];
// UKM
const sessionSV = sessionKeyBlob.substr(16 * 2, 8 * 2);
// sessionKey
const sessionKey = sessionKeyBlob.substr(24 * 2, 32 * 2);
// MAC сессионного ключа
const sessionMAC = sessionKeyBlob.substr(56 * 2, 4 * 2);

const
  T1 = '30 81 A9 30 28 04 20',
  T2 = '04 04',
  T3 = 'A0 7D 06 09 2A 85 03 07 01 02 05 01 01 A0 66 30 1F 06 08 2A 85 03 07 01 01 01 01 30 13 06 07 2A 85 03 02 02 24 00 ' +
       '06 08 2A 85 03 07 01 01 02 02 03 43 00 04 40',
  T4 = '04 08';

const keyTransport = (T1 + sessionKey + T2 + sessionMAC + T3 + publicKey + T4 + sessionSV)
  .replace(/ /g, '');

const keyTransportBase64 = Buffer.from(keyTransport, 'hex').toString('base64');



Но получаю ошибку "Не удалось расшифровать сообщение. Возможно сообщение зашифровано на ключе отличном от ключа уполномоченного лица ФСС".
Подскажите, в чем может быть ошибка?

Отредактировано пользователем 20 ноября 2023 г. 14:38:45(UTC)  | Причина: Не указана

Offline mountain347  
#50 Оставлено : 10 января 2024 г. 19:09:40(UTC)
mountain347

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

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

Автор: cloud_gd Перейти к цитате
Здравствуйте, пытаюсь отправить зашифрованное сообщение.


Шифрую данные следующим образом:
Код:

const oSymAlgo = await cadesplugin.CreateObjectAsync("cadescom.symmetricalgorithm");

await oSymAlgo.GenerateKey();

const oSesKeyIV = await oSymAlgo.IV;
    
const data = Buffer.from(`${unencryptedMessage}`).toString('base64');

await oSymAlgo.SetMode(cadesplugin.CRYPT_MODE_CBCSTRICT);
await oSymAlgo.SetPadding(cadesplugin.ISO10126_PADDING);

const EncryptedData = await oSymAlgo.Encrypt(data, 1);

const dataBase64 = Buffer.from(`${oSesKeyIV.replace(/ /g, '')}${EncryptedData}`, 'hex').toString('base64');


Далее, собираю KeyTransport:

Код:

const ExportedKey = await oSymAlgo.ExportKey(cadesCertificate);
const ExportedKeyArr = ExportedKey.replace(/ /g, '').split(':');

const publicKey = ExportedKeyArr[1].substr(-64 * 2);

const sessionKeyBlob = ExportedKeyArr[2];
// UKM
const sessionSV = sessionKeyBlob.substr(16 * 2, 8 * 2);
// sessionKey
const sessionKey = sessionKeyBlob.substr(24 * 2, 32 * 2);
// MAC сессионного ключа
const sessionMAC = sessionKeyBlob.substr(56 * 2, 4 * 2);

const
  T1 = '30 81 A9 30 28 04 20',
  T2 = '04 04',
  T3 = 'A0 7D 06 09 2A 85 03 07 01 02 05 01 01 A0 66 30 1F 06 08 2A 85 03 07 01 01 01 01 30 13 06 07 2A 85 03 02 02 24 00 ' +
       '06 08 2A 85 03 07 01 01 02 02 03 43 00 04 40',
  T4 = '04 08';

const keyTransport = (T1 + sessionKey + T2 + sessionMAC + T3 + publicKey + T4 + sessionSV)
  .replace(/ /g, '');

const keyTransportBase64 = Buffer.from(keyTransport, 'hex').toString('base64');



Но получаю ошибку "Не удалось расшифровать сообщение. Возможно сообщение зашифровано на ключе отличном от ключа уполномоченного лица ФСС".
Подскажите, в чем может быть ошибка?


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