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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Илья Муромец  
#1 Оставлено : 24 июня 2010 г. 20:23:37(UTC)
Илья Муромец

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

Группы: Участники
Зарегистрирован: 25.12.2008(UTC)
Сообщений: 25
Откуда: Че

Сначала мы использовали для шифрования высокоуровневую функцию CryptEncryptMessage, которая получала в качестве параметров только сертификат открытого ключа (с алгоритмом шифрования 1.2.643.2.2.21 - ГОСТ 28147-89).
В итоге получаем PKCS7-сообщение, в котором хранятся зашифрованные данные, информация о сертификате и некоторые параметры шифрования.

Вскоре появилась потребность написать шифрование под Java, совместимое с шифрованием CryptEncryptMessage.

Курение форума, документации, примеров и RFC привело к тому, что появилось некоторое понимание.
Например, того, что необходимо для шифрования с использованием только сертификата получателя, необходимо создавать эфемеральную (или всё же эфемерную?) пару ключей, ключ согласования, шифровать этим ключом, ключ сам шифровать.

Непонятны следующие моменты:
0) я правильно понимаю, что CryptEncryptMessage использует алгоритм с созданием эфемеральной пары?
1) если CryptEncryptMessage всё же неявно генерирует и использует эфемеральную пару, то где в PKCS7-сообщении хранятся все нужные параметры? удалось разобрать только зашифрованный секретный ключ, его MAC, а также вектор синхропосылки. а вот публичного ключа пары не нашёл. Чуть ниже приведена структура сообщения
Код:
ASN1Sequence: 
	class codec.asn1.ASN1ObjectIdentifier === 1.2.840.113549.1.7.3
	ASN1TaggedType: 
		ASN1OctetString: 
			ASN1Sequence: 
				class codec.asn1.ASN1Integer === Integer 0
				ASN1Set: 
					ASN1Sequence: 
						class codec.asn1.ASN1Integer === Integer 0
						ASN1Sequence: 
							ASN1Sequence: 
								ASN1Set: 
									ASN1Sequence: 
										class codec.asn1.ASN1ObjectIdentifier === 1.2.840.113549.1.9.1
										class codec.asn1.ASN1IA5String === IA5String "info@cryptopro.ru"
								ASN1Set: 
									ASN1Sequence: 
										class codec.asn1.ASN1ObjectIdentifier === 2.5.4.6
										class codec.asn1.ASN1PrintableString === PrintableString "RU"
								ASN1Set: 
									ASN1Sequence: 
										class codec.asn1.ASN1ObjectIdentifier === 2.5.4.10
										class codec.asn1.ASN1PrintableString === PrintableString "CRYPTO-PRO"
								ASN1Set: 
									ASN1Sequence: 
										class codec.asn1.ASN1ObjectIdentifier === 2.5.4.3
										class codec.asn1.ASN1PrintableString === PrintableString "Test Center CRYPTO-PRO"
							class codec.asn1.ASN1Integer === Integer 410881619509760955014168
						ASN1Sequence: 
							class codec.asn1.ASN1ObjectIdentifier === 1.2.643.2.2.19
							ASN1Sequence: 
								class codec.asn1.ASN1ObjectIdentifier === 1.2.643.2.2.36.0
								class codec.asn1.ASN1ObjectIdentifier === 1.2.643.2.2.30.1
						ASN1OctetString: 
							ASN1Sequence: 
								ASN1Sequence: 
									ASN1OctetString: 
										32: Octet String 07 9c 13 ad 84 66 18 40 10 06 41 0b 69 86 c4 9f b5 e6 7b 34 40 65 a0 67 77 b7 08 7f e1 a9 88 98
									ASN1OctetString: 
										4: Octet String f4 ec 61 37
								ASN1TaggedType: 
									ASN1OctetString: 
										class codec.asn1.ASN1ObjectIdentifier === 1.2.643.2.2.31.1
				ASN1Sequence: 
					class codec.asn1.ASN1ObjectIdentifier === 1.2.840.113549.1.7.1
					ASN1Sequence: 
						class codec.asn1.ASN1ObjectIdentifier === 1.2.643.2.2.21
						ASN1Sequence: 
							ASN1OctetString: 
								8: Octet String bd be 74 a9 7a f2 00 ac
							class codec.asn1.ASN1ObjectIdentifier === 1.2.643.2.2.31.1
					ASN1TaggedType: 
						ASN1OctetString: 
							ASN1TaggedType: 
								ASN1OctetString: 
									15: Octet String 05 a7 26 46 34 92 08 f6 97 96 50 85 e0 0b 39

2) вектор инициализации, если он не указан, по умолчанию нулевой?
3) правильно ли я понимаю, что
32: Octet String 07 9c 13 ad 84 66 18 40 10 06 41 0b 69 86 c4 9f b5 e6 7b 34 40 65 a0 67 77 b7 08 7f e1 a9 88 98 - это зашифрованный секретный ключ
4: Octet String f4 ec 61 37 - MAC этого ключа
8: Octet String bd be 74 a9 7a f2 00 ac - вектор синхропосылки?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.