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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline gysek  
#1 Оставлено : 8 июня 2019 г. 13:09:04(UTC)
gysek

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

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

Добрый день.
Пытаюсь понять как правильно получить hmac используя HMAC_GOSTR3411_2012_256.
Пришел к такому варианту но сам себе объяснить правильно ли это не могу.
Смущают первые две строки так как в примерах JCA KeyGenerator.getInstance("указывается тот же алгоритм что и в Mac.getInstance");


KeyGenerator kg = KeyGenerator.getInstance("GOST28147");
kg.init(CryptParamsSpec.getInstance(CryptParamsSpec.Rosstandart_TC26_Z)); //<-- для ГОСТ 2012
SecretKey sk = kg.generateKey();
Mac mac = Mac.getInstance("HMAC_GOSTR3411_2012_256",JCSP.PROVIDER_NAME);
mac.init(sk);
byte[] result = mac.doFinal("Hi There".getBytes());
Encoder encoder = new Encoder();
System.out.println("Digest: " + encoder.encode(result) +"\nfor Message: " + "Hi There");


И еще вопрос, возможно ли создать SecretKey свой? Например SecretKey sk = new SecretKey("моя соль"):
Видел пример такой SecretKeySpec sk = new SecretKeySpec("key".getBytes("UTF-8"), "HmacSha-256");
Но валится эксепшн.

Спасибо
Offline Евгений Афанасьев  
#2 Оставлено : 10 июня 2019 г. 9:49:28(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Здравствуйте.
Автор: gysek Перейти к цитате

И еще вопрос, возможно ли создать SecretKey свой?

Нет, нужно использовать иной способ, например, получать его из долговременного ключа.

Offline gysek  
#3 Оставлено : 10 июня 2019 г. 10:24:22(UTC)
gysek

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

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

Есть ли пример hmac по гост 2012 для КриптоПро Browser Plugin ?
Offline Евгений Афанасьев  
#4 Оставлено : 10 июня 2019 г. 10:41:05(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Этот вопрос лучше задать в разделе про "КриптоПро Browser Plugin".
Offline gysek  
#5 Оставлено : 20 июня 2019 г. 7:40:15(UTC)
gysek

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

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

Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте.
Автор: gysek Перейти к цитате

И еще вопрос, возможно ли создать SecretKey свой?

Нет, нужно использовать иной способ, например, получать его из долговременного ключа.



Прошу помощи. Ни пример из первого поста (SecretKey#getEncoded() == null) ни пример ниже (no such algorithm: GOST28147 for provider JCSP) не работают.


Код:

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("GOST28147", JCSP.PROVIDER_NAME);
KeyPair alicaPair = keyGen.generateKeyPair();

PublicKey alicaPublic = alicaPair.getPublic();
PrivateKey alicaPrivate = alicaPair.getPrivate();

System.out.println("TEST "+Arrays.toString(alicaPublic.getEncoded()));
Mac mac2 = Mac.getInstance("HMAC_GOSTR3411_2012_256",JCSP.PROVIDER_NAME);
mac2.init(alicaPrivate);
byte[] result2 = mac2.doFinal("Hi There".getBytes());
Encoder encoder2 = new Encoder();
System.out.println("Digest: " + encoder2.encode(result2) +"\nfor Message: " + "Hi There");

Offline Евгений Афанасьев  
#6 Оставлено : 20 июня 2019 г. 15:41:51(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Автор: gysek Перейти к цитате

mac2.init(alicaPrivate);

Инициализировать нужно сессионным ключом (SecretKey), не закрытым.

Offline gysek  
#7 Оставлено : 21 июня 2019 г. 7:22:11(UTC)
gysek

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

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

Автор: Евгений Афанасьев Перейти к цитате
Автор: gysek Перейти к цитате

mac2.init(alicaPrivate);

Инициализировать нужно сессионным ключом (SecretKey), не закрытым.



У меня есть требование что этот hmac и соль будет храниться долго, то есть за это время может поменяться сертификат.
Таким образом, если я все правильно понимаю, то я не смогу выработать сессионый ключ и проверить hmac из базы ??

Если ли вариант который подходит под мое требование ?

Спасибо
Offline Евгений Афанасьев  
#8 Оставлено : 24 июня 2019 г. 9:51:44(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
В следующей версии в ГОСТ HMac в Java CSP будет возможность передать хеш для выработки сессионного ключа (new SecretKeySpec(hash, "GOST28147")).
Offline gysek  
#9 Оставлено : 26 июня 2019 г. 10:07:34(UTC)
gysek

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

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

Автор: Евгений Афанасьев Перейти к цитате
В следующей версии в ГОСТ HMac в Java CSP будет возможность передать хеш для выработки сессионного ключа (new SecretKeySpec(hash, "GOST28147")).


Примерные сроки выхода следуещей версии когда ?

Offline Евгений Афанасьев  
#10 Оставлено : 26 июня 2019 г. 11:48:20(UTC)
Евгений Афанасьев

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

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

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