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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline scherepanov  
#1 Отправлено: : 11 августа 2015 г. 14:26:37(UTC)
scherepanov

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

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

Сказал(а) «Спасибо»: 4 раз
Добрый день!

Пытаемся расшифровать зашифрованный файл с помощью КриптоПро ЭЦП Browser plug-in (тестировалось в разных браузерах). Зашифрован может быть любой исходный файл (выбирается пользователем) - произвольное содержимое и размер (но не более 20 Мб).

Код:

var encryptedData = CreateObject("CAdESCOM.CPEnvelopedData");
encryptedData.Recipients.Clear();
encryptedData.Recipients.Add(certificate);
encryptedData.Decrypt(encryptedContent);

//encryptedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
encryptedData.ContentEncoding = CADESCOM_STRING_TO_UCS2LE;

// Отправляем результат на сервер
var xhr = new XMLHttpRequest();
xhr.open('POST', uploadUrl, true);
xhr.setRequestHeader("Content-Type", "text/plain;charset=UTF-16LE"); // Для случая, когда результат в UCS-2
xhr.responseType = 'text';
xhr.send(encryptedData.Content);


В качестве encryptedContent передаются зашифрованные данные, закодированные в Base64. Результат считываем из свойства encryptedData.Content.

Если в качестве ContentEncoding указываем CADESCOM_BASE64_TO_BINARY, то при исходном файле относительно небольшого размера все прекрасно работает. Получаем расшифрованный контент в виде Base64 строки, отправляем на сервер, там декодируем - на выходе исходный файл. Проблема в том, что при росте объема исходных данных время обращения к свойству encryptedData.Content нелинейно возрастает (метод Decrypt при этом выполняется быстро). Если контент файла в 0.5 МБ получаем за 5 сек, то файл 2 МБ - больше минуты, а 8 МБ - ни разу не дождался - браузер зависает напрочь, на запросы не реагирует.

Если в качестве ContentEncoding указываем CADESCOM_STRING_TO_UCS2LE, то все отрабатывает приемлемо быстро вне зависимости от размера исходного файла, но с полученным результатом в виде строки UTF-16 имеются проблемы. При передаче на сервер и последующем декодировании содержимое полученного файла отличается от исходного. В случае текстовых файлов может быть различие в 1 байт (при нечетном количестве байт в исходном файле при расшифровании теряется последний байт), в случае бинарников произвольного содержимого различия более существенные. На сервере контент декодируется примерно следующим java-кодом:

Код:

ByteArrayOutputSream output = new ByteArrayOutputStream();
byte[] buffer = new byte[16 * 1024];

int bytesRead;
while ((bytesRead = input.read(buffer)) != -1)
    output.write(buffer, 0, bytesRead);

String utf8 = new String(output.toByteArray(), "UTF-8");
return utf8.getBytes("UTF-16LE");


Есть ли какие-то выходы из сложившейся ситуации? Предпочтительным является возможность декодировать в Base64 за приемлемое время (точнее, декодирование происходит быстро, видимо, а тормозит какая-то внутренняя конвертация в Base64), есть ли возможность это исправить? Либо вариант с UCS-2, как достоверно получить корректный результат?

Отредактировано пользователем 11 августа 2015 г. 18:13:52(UTC)  | Причина: Не указана

Offline Павел Смирнов  
#2 Оставлено : 11 августа 2015 г. 19:15:21(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Можете подготовить изолированный тест с засечками времени чтения encryptedData.Content для разных размеров файла и выводом результата? Чтобы можно было увидеть нелинейный рост времени? И прислать нам этот тест?
Техническую поддержку оказываем тут.
Наша база знаний.
Offline scherepanov  
#3 Оставлено : 12 августа 2015 г. 11:57:44(UTC)
scherepanov

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

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

Сказал(а) «Спасибо»: 4 раз
Автор: Смирнов Перейти к цитате
Можете подготовить изолированный тест с засечками времени чтения encryptedData.Content для разных размеров файла и выводом результата? Чтобы можно было увидеть нелинейный рост времени? И прислать нам этот тест?


Да, во вложении. Посмотрите, пожалуйста. Тестовые данные там же в папке testfiles (testfile05.txt - 0.5МБ, testfile1.txt - 1МБ и т.д.).

test.zip (50kb) загружен 9 раз(а).

Отредактировано пользователем 12 августа 2015 г. 11:59:51(UTC)  | Причина: Не указана

Offline Павел Смирнов  
#4 Оставлено : 12 августа 2015 г. 12:02:11(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Какую версию плагина используете?
Техническую поддержку оказываем тут.
Наша база знаний.
Offline scherepanov  
#5 Оставлено : 12 августа 2015 г. 12:08:25(UTC)
scherepanov

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

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

Сказал(а) «Спасибо»: 4 раз
Автор: Смирнов Перейти к цитате
Какую версию плагина используете?


2.0.12191
Offline cross  
#6 Оставлено : 12 августа 2015 г. 13:45:32(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Размер файла: 4194304
Время шифрования, сек.: 0.528
Время расшифрования в Base64 (обращение к Content), сек.: 0.456 (0.098)
Время расшифрования в UCS2 (обращение к Content), сек.: 0.361 (0.001)

вот что тест выдал у меня на самый крупный файл в последней версии плагина.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline cross  
#7 Оставлено : 12 августа 2015 г. 13:48:16(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Для 43 Мб
Размер файла: 43221600
Время шифрования, сек.: 6.142
Время расшифрования в Base64 (обращение к Content), сек.: 7.323 (1.082)
Время расшифрования в UCS2 (обращение к Content), сек.: 4.046 (0)

Тут разница весьма существенна, но и размер файла большой.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline scherepanov  
#8 Оставлено : 12 августа 2015 г. 13:58:00(UTC)
scherepanov

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

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

Сказал(а) «Спасибо»: 4 раз
У нас так:

Размер файла: 524288
Время шифрования, сек.: 0.103
Время расшифрования в Base64 (обращение к Content), сек.: 6.285 (2.039)
Время расшифрования в UCS2 (обращение к Content), сек.: 0.045 (0.002)

Размер файла: 1048576
Время шифрования, сек.: 0.08
Время расшифрования в Base64 (обращение к Content), сек.: 8.495 (8.419)
Время расшифрования в UCS2 (обращение к Content), сек.: 0.076 (0.002)

Размер файла: 2097152
Время шифрования, сек.: 0.16
Время расшифрования в Base64 (обращение к Content), сек.: 36.188 (36.049)
Время расшифрования в UCS2 (обращение к Content), сек.: 0.15 (0.003)

Размер файла: 4194304
Зависает и выдается: https://yadi.sk/i/-h8ruYRNiQXc8
Offline scherepanov  
#9 Оставлено : 12 августа 2015 г. 14:09:29(UTC)
scherepanov

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

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

Сказал(а) «Спасибо»: 4 раз
А какое у Вас окружение:

1) ОС
2) Браузер
3) Версия плагина
4) Версия КриптоПро
5) Какие-то специфичные настройки для плагина есть?

Мы пробовали в разных браузерах, на разных машинах (c ОС Win), результат одинаков: на файле 4 Мб становится очень долго и подвисает...
Offline cross  
#10 Оставлено : 12 августа 2015 г. 15:07:54(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Linux
FireFox 38
2.0.12191
4.0
У меня timeout вот этого окошка "подождать ли скрипт" чуть сдвинут дальше. Правитm можно в about:config
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.