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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline rebeled  
#1 Оставлено : 19 декабря 2016 г. 13:00:02(UTC)
rebeled

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

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

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Добрый день.
Формирую открепленную не форматированную цифровую подпись по алгоритму GOST3411withGOST3410EL
Верифицирую с помощью JCP
Код:

public static boolean verify(byte[] signature, byte[] hash, X509Certificate cert, String alg) throws Exception {

            Signature sig = Signature.getInstance(alg);

            sig.initVerify(cert.getPublicKey());
            sig.update(hash);
            return sig.verify(signature);
}

Верификация проходит.
Меняю алгоритм подписи и проверки на GOST3411_2012_256withGOST3410_2012_256. Верификация возвращает false.
Нужно как то менять алгоритм проверки, или проблема скорее где то в другом месте?
Offline Евгений Афанасьев  
#2 Оставлено : 21 декабря 2016 г. 15:25:22(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Добрый день.
Проверяете подпись длиной 64 байта?
Проверка выполняется по хешу (hash)? Если да, то надо использовать алгоритм вида NONEwithGOST3410_2012_256 (JCP.RAW_...), посмотрите среди констант JCP или в документации.
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
rebeled оставлено 22.12.2016(UTC)
Offline rebeled  
#3 Оставлено : 22 декабря 2016 г. 9:58:10(UTC)
rebeled

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

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

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Автор: afev Перейти к цитате
Добрый день.
Проверяете подпись длиной 64 байта?
Проверка выполняется по хешу (hash)? Если да, то надо использовать алгоритм вида NONEwithGOST3410_2012_256 (JCP.RAW_...), посмотрите среди констант JCP или в документации.


Добрый день.
Да, длина подписи 64 байта, проверяется подписанный хеш, не валидируется ни одним алгоритмом из констант JCP.
Переформулирую вопрос:
При переходе подписи от ГОСТ 2001, к ГОСТ 2012 валидирующий код менять не нужно (например развернуть сигнатуру, взять двойной хеш, проверять на исходных данных и другая магия)? Если при переходе к ГОСТ 2012 приведенный выше код возвращает false, значит подпись не верна?
PS. JCP v2.RELEASE; JDK v1.7.80

Отредактировано пользователем 22 декабря 2016 г. 10:01:14(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#4 Оставлено : 22 декабря 2016 г. 10:10:57(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Автор: rebeled Перейти к цитате
При переходе подписи от ГОСТ 2001, к ГОСТ 2012 валидирующий код менять не нужно (например развернуть сигнатуру, взять двойной хеш, проверять на исходных данных и другая магия)? Если при переходе к ГОСТ 2012 приведенный выше код возвращает false, значит подпись не верна?

Кроме алгоритма, передаваемого в Signature.getIstance(), ничего менять не нужно. Если все сделано правильно (верный алгоритм, данные и т.п.), то да - подпись не верна.

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
rebeled оставлено 22.12.2016(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.