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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline sadgb  
#1 Оставлено : 28 ноября 2012 г. 23:31:26(UTC)
sadgb

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

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

Сказал(а) «Спасибо»: 4 раз
Здравствуйте.
Требуется реализовать генерацию ключа в соответствии с пунктом 5.2 http://www.rfc-editor.org/rfc/rfc4357.txt

Просмотрев примеры насколько я понял нужный мне пример gEncryptFileAgree.cs


Код:
        // Шифрование тестового файла.
        static void EncryptTestFile(string SourceContainer, string certFileName)


Но у меня в коде есть X509Certificate2 отправителя ( с закрытым и открытым ключом ) и X509Certificate получателя.
Соответственно я не понимаю ( сегодня целый день пытался и не смог )
Как мне получить из них GostSharedSecretAlgorithm agree
Код:
CspParameters par = new CspParameters(75, null, SourceContainer);
            Gost3410CryptoServiceProvider srcContainer = new Gost3410CryptoServiceProvider(par);
            Gost3410Parameters srcPublicKeyParameters = srcContainer.ExportParameters(false);

            // Создаем agree ключ
            GostSharedSecretAlgorithm agree = srcContainer.CreateAgree(
                alg.ExportParameters(false) );


Проблема в том что у меня нет контейнера ( в системе он конечно есть, но какое его имя я не знаю ), но при этом у меня есть оба необходимых для создания agree сертификата.

Помогите пожалуйста имея cert1 & cert2 получить GostSharedSecretAlgorithm agree.

Спасибо
Offline Георгий Садофьев  
#2 Оставлено : 29 ноября 2012 г. 12:24:57(UTC)
Георгий Садофьев

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

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

Поблагодарили: 33 раз в 32 постах
Вопрос в том, как по сертификату найти ему соответствующий контейнер с закрытым ключом?
Можно, например, так:
1.
Код:
Gost3410CryptoServiceProvider prov = (Gost3410CryptoServiceProvider)certificate.PrivateKey;

2.
Код:
CspKeyContainerInfo info = ((ICspAsymmetricAlgorithm)certificate.PrivateKey).CspKeyContainerInfo;
CspParameters pars = new CspParameters(info.ProviderType, info.ProviderName, info.KeyContainerName);
Gost3410CryptoServiceProvider srcContainer = new Gost3410CryptoServiceProvider(pars);




Отредактировано пользователем 29 ноября 2012 г. 12:25:31(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline sadgb  
#3 Оставлено : 29 ноября 2012 г. 13:31:56(UTC)
sadgb

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

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

Сказал(а) «Спасибо»: 4 раз
Как просто, спасибо.

Также у меня есть еще один вопрос по тому же самому AgreeKey.
Код:
GostSharedSecretAlgorithm agree = srcContainer.CreateAgree(alg.ExportParameters(false));

У класса GostSharedSecretAlgorithm есть только 2 функции - Wrap and Unwrap позволяющие зашифровать и расшифровать секретный ключ.
Есть какой-нибудь способ вытащить ключ из класса GostSharedSecretAlgorithm и прямо им зашифровать файл для отправки ?
Offline Георгий Садофьев  
#4 Оставлено : 29 ноября 2012 г. 13:45:42(UTC)
Георгий Садофьев

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

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

Поблагодарили: 33 раз в 32 постах
Не очень понятен вопрос. Сам файл вы зашифровываете симметричным ключом. В открытом виде этот ключ получить нельзя.

Отредактировано пользователем 29 ноября 2012 г. 13:49:32(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline sadgb  
#5 Оставлено : 29 ноября 2012 г. 13:49:15(UTC)
sadgb

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

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

Сказал(а) «Спасибо»: 4 раз
Ну а хотя бы зашифровать им какие-либо данные кроме как ключ шифрования ?
Offline Георгий Садофьев  
#6 Оставлено : 29 ноября 2012 г. 13:54:54(UTC)
Георгий Садофьев

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

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

Поблагодарили: 33 раз в 32 постах
Нельзя.
Техническую поддержку оказываем тут
Наша база знаний
Offline sadgb  
#7 Оставлено : 29 ноября 2012 г. 19:39:00(UTC)
sadgb

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

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

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

Последний непонятный момент.
Как сказано в RFC в том же самом пункте 5.2 http://www.rfc-editor.org/rfc/rfc4357.txt

Цитата:
1) Let K(x,y,UKM) = ((UKM*x)(mod q)) . (y.P) (512 bit), where
x - sender's private key (256 bit)
x.P - sender's public key (512 bit)
y - recipient's private key (256 bit)
y.P - recipient's public key (512 bit)
UKM - non-zero integer, produced as in step 2 p. 6.1 [GOSTR341001]
P - base point on the elliptic curve (two 256-bit coordinates)
UKM*x - x multiplied by UKM as integers
x.P - a multiple point
2) Calculate a 256-bit hash of K(x,y,UKM):
KEK(x,y,UKM) = gostR3411 (K(x,y,UKM))



Больше всего интересует UKM, который в соответствии с RFC
Цитата:
1) For a unique symmetric KEK, generate 8 octets at random and call
the result UKM. For a KEK, produced by VKO GOST R 34.10-2001,
use the UKM that was used for key derivation.



В примерах UKM отсутствует. Как его указать или что испольузется вместо него ?


Offline sadgb  
#8 Оставлено : 3 декабря 2012 г. 16:24:55(UTC)
sadgb

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

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

Сказал(а) «Спасибо»: 4 раз
Так все таки, является ли реализация криптопро соответствующей стандарту ?
Offline Павел Смирнов  
#9 Оставлено : 5 декабря 2012 г. 12:38:38(UTC)
Павел Смирнов

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
sadgb написал:
В примерах UKM отсутствует. Как его указать или что испольузется вместо него ?

UKM генерируется и используется неявно, поэтому в примерах он не наблюдается.

sadgb написал:
Так все таки, является ли реализация криптопро соответствующей стандарту ?

Конечно. Наша реализация соответствует нашему стандарту.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline sadgb  
#10 Оставлено : 5 декабря 2012 г. 14:34:26(UTC)
sadgb

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

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

Сказал(а) «Спасибо»: 4 раз
Здорово. Проблема в том что нам нужно реализовать взаимодествие двух ОС с использованием этого протокола и на одной из них ( ОС Магистра ) нет возможности использовать КриптоПРО ( а на второй мы используем криптопро ).

Проблема в том, что мы не можем понять как сделать аналог строчки,

Код:
 var symmetric = agree.Unwrap(cek, GostKeyWrapMethod.CryptoProKeyWrap);

потому что не понимаем где взять UMK. Особая проблема это то, что в примерах передаваемый WrappedKey 65 байт. А если смотреть стандарт то чтобы сделать Key Unwrap всегда первый шаг

Цитата:
1) If the wrapped content-encryption key is not 44 octets, then
error.



Подскажите пожалуйста где взять UMK или как хотя бы сделать UnWrap. И почему передается CEK в 65 байт а не в 44. И как вообще передается 256 битовый ключ и 32-х битный UNK в 65 байтах ( 520 бит )

Ведь как сказано в стандарте
Цитата:
5) The wrapped content-encryption key is (UKM | CEK_ENC | CEK_MAC).
а это 8 + 32 + 4 = 44 байта

Но строчка
Код:
var wrappedKey = agree.Wrap(symmetric, GostKeyWrapMethod.CryptoProKeyWrap);

возвращает массив 65 байт.

Что занимает еще 21 байт и можно ли их как-то откинуть ?

Например, если отправитель и получатель не меняются, то первые 5 байт всегда одинаковые 48-63-48-40-4

Отредактировано пользователем 5 декабря 2012 г. 15:03:42(UTC)  | Причина: Не указана

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