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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ReFLeXive  
#1 Оставлено : 28 августа 2019 г. 22:16:13(UTC)
ReFLeXive

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

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

Сказал(а) «Спасибо»: 2 раз
Здравствуйте.
Решил создать собственную тему, т.к. мой вопрос отличается от существующих тем по эфемерным ключам.
В существующем android-приложении необходимо применить гибридное шифрование, чтобы передать зашифрованное сообщение получателю. Получатель может использовать как андроид, так и iOs, десктоп. Для этого нужно создавать сессионные ключи шифрования с использованием эфемерных ключей.
Алгоритм, как я его понимаю: вырабатываем секретный ключ, который используем в симметричном шифровании текста, сам выработанный секретный ключ шифруем с помощью ассиметричного алгоритма на основе пары сгенерированных ключей, для которых устанавливаем параметры такие же, как публичный ключ получателя. После формирования пары ключей нам необходимо создать ключ согласования, в котором будут участвовать закрытая часть эфемерного ключа и открытая часть сертификата получателя. И используя данный ключ согласования мы шифруем секретный симметричный ключ. Далее это все запаковываем в транспортный ключ и передаем получателю вместе с зашифрованным сообщением. Далее получатель, получив зашифрованное сообщение и зашифрованный сессионный ключ, с помощью своего закрытого ключа и публичной части эфемерного ключа, которую он получает вместе с транспортным ключом, формирует ключ согласования. На этом ключе согласования он расшифровывает секретный ключ шифрования, который используется для дешифрования сообщения.
В примерах к sdk для андроид подсказали смотреть на PKCS7EnvEphTransport. В общем то более менее понятно, что происходит: сперва генерируется секретный ключ, далее им шифруется сообщение, потом сам секретный ключ шифруется парой сгенерированных ключей, для пары ключей устанавливаются такие же параметры, что и у открытого ключа получателя. Для передачи зашифрованного ключа 2й стороне используется некий стандартный транспортный контейнер, в который записываются данные как самого зашифрованного ключа, так и открытая часть эфемерной пары, а также IV и параметры открытого ключа получателя. На принимающей стороне происходит все наоборот: выделяется зашифрованное сообщение, транспортный контейнер для сессионного ключа, из транспортного контейнера достается зашифрованный ключ, имитовставка, публичная часть эфемерного ключа, формируется ключ согласования из закрытого ключа получателя и открытой части эфемерного ключа и на этом ключе согласования расшифровывается симметричный секретный ключ.
Мне необходимо формировать данный сессионный ключ таким образом, чтобы его можно было корректно дешифровать на всех платформах. Есть ли механизмы, позволяющие на разных платформах использовать один и тот же формат транспортного ключа, при условии, что везде используется CryptoPro? Есть ли в iOs, десктопе аналог GostR3410_KeyTransport из примера PKCS7EnvEphTransport, заполнив который я бы смог получить нужные данные (iv, публичная часть эфемерного ключа, сам сессионный ключ) для дешифровки сессионого ключа? Или нужно самому формировать транспортный ключ в виде последовательности байт, обговорив на каждой платформе границы всех необходимых компонентов (что то типа массива байт, в котором сперва указывается размер iv, потом сам iv, затем размер публичной части эфемерного ключа, потом сама публичная часть, затем размер сессионного ключа, затем сам сессионный ключ, размер имитовставки, сама имитовставка) и на каждой платформе использовать только те компоненты, которые ей необходимы для работы?
Offline Евгений Афанасьев  
#2 Оставлено : 30 августа 2019 г. 10:56:16(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Здравствуйте.
Структуры, подобные
Автор: ReFLeXive Перейти к цитате
GostR3410_KeyTransport
- стандартные, они описаны в RFC. Они генерируются из asn1-представлений. Они есть на всех платформах, скорее всего, в составе SDK (например, в JCP/JCSP она находится в модуле ASN1P.jar), их формат - одинаковый, различия только в языке, на котором они записаны, и называться они могут немного по-разному (слово KeyTransport, полагаю, будет содержаться везде в названии).

Отредактировано пользователем 30 августа 2019 г. 10:57:41(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
ReFLeXive оставлено 30.08.2019(UTC)
Offline ReFLeXive  
#3 Оставлено : 30 сентября 2019 г. 13:01:22(UTC)
ReFLeXive

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

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

Сказал(а) «Спасибо»: 2 раз
Евгений, здравствуйте.
Удалось реализовать шифрование с использованием эфемерных ключей, не прибегая к структуре GostR3410_KeyTransport. Как и говорил ранее, это связано с тем, что есть работающее решение на других платформах. Теперь возник вопрос с скрещиванием платформы андроид и остальных. В андроиде для дешифрования ключа используется массив байт, соответствующий MAC, который я могу передавать передавать в пределах платформы android. Но проблема в том, что ключах, созданных в iOs, такой параметр не передается, что не позволяет расшифровывать сообщения на андроиде из других платформ.
Можете подсказать, возможно ли безболезненно обойтись без mac?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.