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

Уведомление

Icon
Error

4 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline const  
#1 Оставлено : 19 мая 2008 г. 14:46:42(UTC)
const

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

Группы: Участники
Зарегистрирован: 19.05.2008(UTC)
Сообщений: 14
Откуда: Тольятти

Здравствуйте,
подскажите, пожалуйста, как сделать или дайте направление.
Необходимо с помощью JCP подписать, зашифровать сообщение, сохранить в файл (на подобие функции CryptoAPI - CryptSignAndEncryptMessage).
Затем, необходимо, чтобы зашифрованное сообщение разбиралось с помощью функции CryptoApi – CryptDecryptAndVerifyMessageSignature.

Я предполагаю, что нужно рыть в сторону CMS (PKCS7). Посмотрел примеры, но там происходит только подпись сообщения и создание его обертки (PKCS7).

Подскажите куда смотреть, желательно примеры.
Заранее благодарен
Offline Ольга  
#2 Оставлено : 19 мая 2008 г. 15:37:52(UTC)
Ольга

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

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

Поблагодарили: 3 раз в 3 постах
примеров к сожалению нет. советую прочитать rfc Cryptographic Message Syntax Encrypted-data Content Type
Все необходимые классы есть в JCP_ASN.jar (package ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax)
Offline const  
#3 Оставлено : 19 мая 2008 г. 15:44:01(UTC)
const

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

Группы: Участники
Зарегистрирован: 19.05.2008(UTC)
Сообщений: 14
Откуда: Тольятти

где можно найти описание классов ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax?
Offline Ольга  
#4 Оставлено : 19 мая 2008 г. 15:51:29(UTC)
Ольга

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

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

Поблагодарили: 3 раз в 3 постах
описания классов нет. Их названия и структура соответствуют функциям из стандарта CMS, основная часть создания CMS сообщения дана в виде примеров, вам остается разобраться только с данными и тем как их обработать(воспользовавшись примерами(хеш, подпись) и rfc).
класс соответствующий Encrypted-data Content Type - ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.EncryptedData
идентификатор задается: contentType = new Asn1ObjectIdentifier(new OID("1.2.840.113549.1.7.6).value);
Offline const  
#5 Оставлено : 19 мая 2008 г. 16:14:44(UTC)
const

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

Группы: Участники
Зарегистрирован: 19.05.2008(UTC)
Сообщений: 14
Откуда: Тольятти

ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.EncryptedData encd = new EncryptedData();

encd.encryptedContentInfo.contentType = new Asn1ObjectIdentifier(new OID("1.2.840.113549.1.7.6").value);

!!!...несовместимые типы
Offline Ольга  
#6 Оставлено : 19 мая 2008 г. 18:37:45(UTC)
Ольга

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

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

Поблагодарили: 3 раз в 3 постах
вообще должно быть:
ContentInfo all = new ContentInfo();
all.contentType = new Asn1ObjectIdentifier(new OID("1.2.840.113549.1.7.6").value);
final EncryptedData ed = new EncryptedData();
all.content = ed;

насколько я поняла из описания функции CryptSignAndEncryptMessage вам скорее всего нужно будет как то совместить SignedData() и EncryptedData()... как это делается на самом деле не скажу, нужно читать литературу.

Отредактировано пользователем 19 мая 2008 г. 19:07:43(UTC)  | Причина: Не указана

Offline const  
#7 Оставлено : 19 мая 2008 г. 19:33:10(UTC)
const

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

Группы: Участники
Зарегистрирован: 19.05.2008(UTC)
Сообщений: 14
Откуда: Тольятти

Большое спасибо за ответы, но этого мало.
Все так же непонятны назначение и применение:
EncryptedData.encryptedContentInfo
EncryptedData.encryptedContentInfo.contentType
EncryptedData.encryptedContentInfo.encryptedContent
EncryptedData.encryptedContentInfo.contentEncryptionAlgorithm
EncryptedData.unprotectedAttrs
EncryptedData.unprotectedAttrs.elements
и т.д.

выложите пример, пожалуйста

Отредактировано пользователем 19 мая 2008 г. 19:36:13(UTC)  | Причина: Не указана

Offline Ольга  
#8 Оставлено : 19 мая 2008 г. 21:54:17(UTC)
Ольга

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

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

Поблагодарили: 3 раз в 3 постах
читаем rfc 2315 пункт 11 (сначала создается объект SignedData затем EnvelopedData, все функции и праметры для данных типов описаны в rfc 2315 и 2630).

ps:будут примеры - выложу, а пока читаем...
Offline const  
#9 Оставлено : 21 мая 2008 г. 14:41:32(UTC)
const

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

Группы: Участники
Зарегистрирован: 19.05.2008(UTC)
Сообщений: 14
Откуда: Тольятти

вопрос остается открытым

ContentInfo all = new ContentInfo();
all.contentType = new Asn1ObjectIdentifier(new OID("1.2.840.113549.1.7.6").value); - это идентификатор для EncryptedData, а для EnvelopedData какой?
final EncryptedData ed = new EncryptedData();
all.content = ed
ed.encryptedContentInfo.contentEncryptionAlgorithm = ?
ed.encryptedContentInfo.contentType = ?
ed.encryptedContentInfo.encryptedContent = "зашифрованное(подписанное сообщение в PKCS7)";
ed.originatorInfo - обязательно указывать? для чего может пригодиться?
ed.recipientInfos - что сюда подставлять?
ed.unprotectedAttrs - обязательно указывать? что сюда подставлять?

примерчиков бы)...
Offline Ольга  
#10 Оставлено : 21 мая 2008 г. 14:47:33(UTC)
Ольга

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

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

Поблагодарили: 3 раз в 3 постах
идентификаторы вообще написаны в стандарте. (для EnvelopedData 1.2.840.113549.1.7.3)
как впрочем и все ваши вопросы (в стандарте все описано, какие поля обязательны какие нет и зачем они нужны)
пока могу сказать что сначала делается SignedData, а затем то что получилось шифруется (-> encryptedContentInfo)

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