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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline Андрей Фомин  
#1 Оставлено : 17 декабря 2020 г. 11:59:05(UTC)
Андрей Фомин

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

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

Сказал(а) «Спасибо»: 3 раз
Здравствуйте.
Вопрос не совсем по вашему продукту, но вдруг поможете.
Подписываю документ для отправки в сервис РЕГИЗ.
Валидация на той стороне говорит "Ошибка декодирования ЭП MO: В подписи отсутствует атрибут [1.2.840.113549.1.9.4]"
Я так понял, это AES хэш подписи?
Подскажите, этот атрибут должен содержаться в подписи/сертификате?
Можно ли его посмотреть в ваших приложениях?
Offline Андрей *  
#2 Оставлено : 17 декабря 2020 г. 13:11:21(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2045 раз в 1586 постах
Автор: Андрей Фомин Перейти к цитате
Здравствуйте.
Вопрос не совсем по вашему продукту, но вдруг поможете.
Подписываю документ для отправки в сервис РЕГИЗ.
Валидация на той стороне говорит "Ошибка декодирования ЭП MO: В подписи отсутствует атрибут [1.2.840.113549.1.9.4]"
Я так понял, это AES хэш подписи?
Подскажите, этот атрибут должен содержаться в подписи/сертификате?
Можно ли его посмотреть в ваших приложениях?


Здравствуйте.

Это подписанный атрибут: хеш подписываемых данных (алгоритм хеша связан с сертификатом подписанта).

Вы используете pkcs#7 \ без подписанных атрибутов?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#3 Оставлено : 17 декабря 2020 г. 13:12:36(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2045 раз в 1586 постах
Snimok ehkrana ot 2020-12-17 14-11-44.png (45kb) загружен 43 раз(а).

1.2.840.113549.1.9.4 = messageDigest
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Андрей Фомин оставлено 18.12.2020(UTC)
Offline Андрей Фомин  
#4 Оставлено : 17 декабря 2020 г. 15:37:49(UTC)
Андрей Фомин

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

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

Сказал(а) «Спасибо»: 3 раз
Цитата:
Вы используете pkcs#7 \ без подписанных атрибутов?


Видимо, да.

Алгоритм требуется CAdES.
В CSP экспортировал сертификат в *.cer, открыл в ASN1Editor, там нет messageDigest и вообще ветки "CONTEXT SPECIFIC".
Я пытаюсь понять, подписанные атрибуты должны содержаться в сертификате или генериться при создании подписи?
Если генериться, то разве CSP провайдер не должен сам посчитать хэш и добавить нужные атрибуты к подписи?
Offline Андрей *  
#5 Оставлено : 17 декабря 2020 г. 15:48:34(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2045 раз в 1586 постах
Автор: Андрей Фомин Перейти к цитате
Цитата:
Вы используете pkcs#7 \ без подписанных атрибутов?


Видимо, да.

Алгоритм требуется CAdES.
В CSP экспортировал сертификат в *.cer, открыл в ASN1Editor, там нет messageDigest и вообще ветки "CONTEXT SPECIFIC".
Я пытаюсь понять, подписанные атрибуты должны содержаться в сертификате или генериться при создании подписи?
Если генериться, то разве CSP провайдер не должен сам посчитать хэш и добавить нужные атрибуты к подписи?


Это OID в подписанных атрибутах, в подписи.


Цитата:
то разве CSP провайдер не должен сам посчитать хэш и добавить нужные атрибуты к подписи

Зависит от функций, также это можно отключать в реестре.

Вы бы побольше информации предоставили.
Какие именно используете функции.

Для проверки - подпишите на демо-странице и посмотрите, в структуре должен быть этот OID в подписанных атрибутах.

хеш:
66 6C F4 FB F7 4E C6 8A 66 E8 DD 3D 30 61 B0 33
75 68 CE 21 A1 04 54 1D 4D EE 03 F5 44 8C 29 AF

Snimok ehkrana ot 2020-12-17 16-47-49.png (39kb) загружен 16 раз(а).

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Фомин  
#6 Оставлено : 17 декабря 2020 г. 19:32:54(UTC)
Андрей Фомин

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

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

Сказал(а) «Спасибо»: 3 раз
Да, простите, что не уточнил.
java8 + bouncycastle + advapi32.dll
Создаю открепленную подпись (CAdES, ГОСТ Р 34.10-2012) для pdf файла.
Примерно так
Код:

        File file = new File("test.pdf");
        byte[] fileContent = FileUtils.readFileToByteArray(file);
        
        Advapi32 lib = Native.loadLibrary("advapi32", Advapi32.class);
        Advapi32Wrapper advapi32 = new Advapi32Wrapper(lib);
        // провайдер, алиас контейнера, пароль
        X509Certificate cert = advapi32.getCentificate("CRYPTOPROCSP", "alias", "password");
        
        final byte[] hash = advapi32.CryptSignHashA(fileContent);
        
        List<X509Certificate> certList = new ArrayList<>();
        CMSTypedData msg = new CMSProcessableFile(file);
        certList.add(cert);
        
        Store<?> certs = new JcaCertStore(certList);
        CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
        ContentSigner signer = new ContentSigner() {
            @Override
            public AlgorithmIdentifier getAlgorithmIdentifier() {
                return new AlgorithmIdentifier(new ASN1ObjectIdentifier(cert.getSigAlgOID()));
            }
            
            @Override
            public OutputStream getOutputStream() {
                return new ByteArrayOutputStream();
            }
            
            @Override
            public byte[] getSignature() {
                return hash;
            }
        };
    
        JcaDigestCalculatorProviderBuilder dcpb = new JcaDigestCalculatorProviderBuilder();
        JcaSignerInfoGeneratorBuilder sigb = new JcaSignerInfoGeneratorBuilder(dcpb.build());
        
        boolean hasNoSignedAttributes = true;
        sigb.setDirectSignature(hasNoSignedAttributes);
        
        SignerInfoGenerator g = sigb.build(signer, cert);
        gen.addSignerInfoGenerator(g);
        gen.addCertificates(certs);
        CMSSignedData sigData = gen.generate(msg, false);
        byte[] sig = sigData.getEncoded();


Она создается и проходит валидацию в программе "Инструменты КриптоПро"
Но, видимо, в ней отсутствует атрибут [1.2.840.113549.1.9.4]
ASN1 Editor полученный файл подписи не понимает.

Судя по исходникам bouncycastle, hasNoSignedAttributes = false должен добавлять подписанные атрибуты, в т.ч. messageDigest,
но так подпись получается невалидная, CSP говорит - "0x80090006: Неправильная подпись".

Может, есть другой способ создания открепленной подписи с помощью CSP провайдера?
В примерах JCP не нашел.
Offline Андрей *  
#7 Оставлено : 17 декабря 2020 г. 20:01:33(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2045 раз в 1586 постах
Автор: Андрей Фомин Перейти к цитате

ASN1 Editor полученный файл подписи не понимает.


а https://lapo.it/asn1js ?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Андрей Фомин оставлено 18.12.2020(UTC)
Offline Андрей Фомин  
#8 Оставлено : 17 декабря 2020 г. 22:13:01(UTC)
Андрей Фомин

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

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

Сказал(а) «Спасибо»: 3 раз
Спасибо, этот декодер справился.
Поменял флаг в коде, теперь создается подпись с атрибутом messageDigest
screen.png (27kb) загружен 22 раз(а).

Не подскажете, почему теперь ее CSP не принимает?
screen2.png (25kb) загружен 19 раз(а).
Offline Андрей *  
#9 Оставлено : 17 декабря 2020 г. 23:34:09(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2045 раз в 1586 постах
приложить можете в архиве тестовый файл и подпись к нему?

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#10 Оставлено : 17 декабря 2020 г. 23:35:15(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2045 раз в 1586 постах
...d'oh!

Отредактировано пользователем 17 декабря 2020 г. 23:39:25(UTC)  | Причина: Не указана

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