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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline kalganovrg  
#1 Оставлено : 30 сентября 2022 г. 10:18:01(UTC)
kalganovrg

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

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

Добрый день, используем signal-com-jcp:3.1.2 и при дешифровании c использованием GOST28147PRNG PKCS#8 получаем ошибку:
Caused by: java.lang.IllegalArgumentException: too long data: 4000256
at ru.signalcom.crypto.e.a.c(Unknown Source)
at ru.signalcom.crypto.e.h.a(Unknown Source)
at ru.signalcom.crypto.d.a(Unknown Source)
at ru.signalcom.crypto.provider.JCEBlockCipher.engineUpdate(Unknown Source)
at java.base/javax.crypto.Cipher.update(Cipher.java:1985)
at java.base/javax.crypto.CipherInputStream.getMoreData(CipherInputStream.java:158)
at java.base/javax.crypto.CipherInputStream.read(CipherInputStream.java:261)
at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:244)
at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:284)
at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:343)
at ru.signalcom.cms.v.read(Unknown Source)
at java.base/java.io.InputStream.transferTo(InputStream.java:782)

Из байткода не понятно что за число 4000256, когда как верхняя граница судя по байт коду 4000000
public final int c(byte[] var1, int var2, byte[] var3, int var4, int var5) {
int var6 = 0;
if (this.h == 0) {
this.i += var5;
if (this.i > 4000000) {
throw new IllegalArgumentException("too long data: " + this.i);
} else {
return this.b(var1, var2, var3, var4, var5);
}

Дешифруется небольшой файл - 14мб. Используя автогенеренные ключи, удавалось дешифровывать файлы большего размера.

Подскажите в чем может быть проблема, спасибо.
Offline Евгений Афанасьев  
#2 Оставлено : 3 октября 2022 г. 21:03:26(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.
Что используете при зашифровании?
Offline kalganovrg  
#3 Оставлено : 4 октября 2022 г. 14:34:59(UTC)
kalganovrg

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

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

Добрый день, не имею возможности узнать ПО, которым проводится зашифрование. Могу лишь только сказать что на вход получаем файл с 1.3.6.1.4.1.5849.1.1.3 oid для алгоритма шифрования. Код дешифрации выглядит следующим образом

val contentInfoParser = ContentInfoParser.getInstance(inputStream)
if (contentInfoParser !is EnvelopedDataParser) {
throw CryptographyException("EnvelopedData expected here")
}
val recInfos = contentInfoParser.recipientInfos as ArrayList<RecipientInfo?>
for (recInfo in recInfos) {
val content = recInfo!!.getEncryptedContent(privateKey, this.secureRandom)
val bOut = ByteArrayOutputStream()
content.transferTo(bOut)
contentInfoParser.close()
return bOut.toByteArray()
}
inputStream - набор байт из входного файла. Падает код в content.transferTo(bOut) по достижению в InputStream отметки в 4000256 байт. Однако если залезть внутрь объекта Cipher и обнулять значение this.i файл в конечном итоге полностью правильно дешифруется в выходном стриме. Сколько бы я не пытался у меня не получается собрать такой же объект Cipher как у библиотечного варианта.

Также утилита File-Pro прекрасно справляется с дешифрацией, поэтому ключ\сертификат точно верны. Проблема лежит именно в реализации библиотеки.

Также удалось выяснить, что проблема именно в этом алгоритме шифрования, например, для 1.2.643.2.2.21 все прекрасно работает.
Offline Евгений Афанасьев  
#4 Оставлено : 5 октября 2022 г. 14:13:26(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Затрудняюсь подсказать по проблеме. Лучше обратиться к разработчику - ru.signalcom.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.