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

Уведомление

Icon
Error

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

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

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

Добрый день

Начальник поставил задачу автоматизировать процесс.
1.Надо файл подписать и сохранить в "p7s" и ключь должен быть отдельно.
2.Заархивировать
3.Зашифровать
4.И снова заархивировать

Пишу на DELPHI

В пунктах 1 и 3 естественно плаваю и тупею. Прочитал много тем кое, что понятно но несовсем.
Для пункта 1
подписать файл ЭЦП со следующими параметрами:
- указать в качестве выходного формата PKCS#7 Signature в DER-кодировке (.p7s или .sig)
- в параметрах ЭЦП выбрать опцию «Сохранить ЭЦП в отдельном файле»
- в качестве сертификата ЭЦП выбрать свой сертификат
1.я правильно понимаю что PKCS#7 Signature это
MY_ENCODING_TYPE = PKCS_7_ASN_ENCODING or X509_ASN_ENCODING;
SigParams.dwMsgEncodingType := MY_ENCODING_TYPE;
а расширение файла p7s я сам подставляю?
2.что такое DER-кодировке? как установить
3.где настроить сохранение ключа в отдельном файле?
4.Выбрать свой сертификат это имеется ввиду ключь? (у этих файлов расширение p7b или это из списка)


Для пункта 3
зашифровать ZIP-архив со следующими параметрами:
- указать в качестве выходного формата PKCS#7 Message в DER-кодировке (.p7m или .enc)
- в свойствах шифрования указать свой сертификат, а в списке сертификатов получателей выбрать сертификат «Оператор»
тут тоже все на раскоряку туплю. Но думаю надо сначало 1 пункт решить а уже потом 3
Offline Андрей Писарев  
#2 Оставлено : 11 июля 2012 г. 15:34:04(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Цитата:
1.Надо файл подписать и сохранить в "p7s" и ключь должен быть отдельно.
2.Заархивировать
3.Зашифровать
4.И снова заархивировать


пункт 4 - не имеет смысла, сжатия не будет
Техническую поддержку оказываем тут
Наша база знаний
Offline Bolt  
#3 Оставлено : 11 июля 2012 г. 15:37:29(UTC)
Bolt

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

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

Андрей * написал:
Цитата:
1.Надо файл подписать и сохранить в "p7s" и ключь должен быть отдельно.
2.Заархивировать
3.Зашифровать
4.И снова заархивировать


пункт 4 - не имеет смысла, сжатия не будет


Так они хотят, им видней. Я тоже был в ах...е от этих действий, там еще в конце ложно быть так КодУчастника_ГГГГММДД_ЧЧММСС.zip.p7m
Offline Андрей Писарев  
#4 Оставлено : 11 июля 2012 г. 15:42:13(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Bolt написал:


В пунктах 1 и 3 естественно плаваю и тупею. Прочитал много тем кое, что понятно но несовсем.
Для пункта 1
подписать файл ЭЦП со следующими параметрами:
- указать в качестве выходного формата PKCS#7 Signature в DER-кодировке (.p7s или .sig)
- в параметрах ЭЦП выбрать опцию «Сохранить ЭЦП в отдельном файле»
- в качестве сертификата ЭЦП выбрать свой сертификат
1.я правильно понимаю что PKCS#7 Signature это
MY_ENCODING_TYPE = PKCS_7_ASN_ENCODING or X509_ASN_ENCODING;
SigParams.dwMsgEncodingType := MY_ENCODING_TYPE;
а расширение файла p7s я сам подставляю?

да


Цитата:
2.что такое DER-кодировке? как установить


см. пункт 1 - уже будет в ней

Цитата:

3.где настроить сохранение ключа в отдельном файле?

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


Цитата:

4.Выбрать свой сертификат это имеется ввиду ключь? (у этих файлов расширение p7b или это из списка)


сертификат обычно выбирают из установленных в системе, из хранилища Личные... и имеющих ссылку на закрытый ключ...


p.s. какую обертку используешь (над CryptoAPI) ? Anxious
надеюсь не WCrypt2 ?


Отредактировано пользователем 11 июля 2012 г. 15:45:35(UTC)  | Причина: Не указана

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

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

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

Андрей * написал:
Bolt написал:


В пунктах 1 и 3 естественно плаваю и тупею. Прочитал много тем кое, что понятно но несовсем.
Для пункта 1
подписать файл ЭЦП со следующими параметрами:
- указать в качестве выходного формата PKCS#7 Signature в DER-кодировке (.p7s или .sig)
- в параметрах ЭЦП выбрать опцию «Сохранить ЭЦП в отдельном файле»
- в качестве сертификата ЭЦП выбрать свой сертификат
1.я правильно понимаю что PKCS#7 Signature это
MY_ENCODING_TYPE = PKCS_7_ASN_ENCODING or X509_ASN_ENCODING;
SigParams.dwMsgEncodingType := MY_ENCODING_TYPE;
а расширение файла p7s я сам подставляю?

да


Цитата:
2.что такое DER-кодировке? как установить


см. пункт 1 - уже будет в ней

Цитата:

3.где настроить сохранение ключа в отдельном файле?

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


Цитата:

4.Выбрать свой сертификат это имеется ввиду ключь? (у этих файлов расширение p7b или это из списка)


сертификат обычно выбирают из установленных в системе, из хранилища Личные... и имеющих ссылку на закрытый ключ...


p.s. какую обертку используешь (над CryptoAPI) ? Anxious
надеюсь не WCrypt2 ?




Планирую использовать JwaWinCrypt он новее чем WCrypt2.
3.Да я тоже вычитал что ключь хранят в файле но тут хотят отдельно.
4.Тут пока туплю по полной. Перечитывал статью но пока недошло

я так понимаю
CryptAcquireContext(@Prov,nil,nil,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT);
...
CryptReleaseContext(Prov,0);
это будет обязательным
далее в середине надо открыть файл
идалее снова плаваю какой ключь что и как

Отредактировано пользователем 11 июля 2012 г. 16:02:33(UTC)  | Причина: Не указана

Offline Bolt  
#6 Оставлено : 16 июля 2012 г. 10:43:59(UTC)
Bolt

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

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

Bolt написал:

Планирую использовать JwaWinCrypt он новее чем WCrypt2.
3.Да я тоже вычитал что ключь хранят в файле но тут хотят отдельно.
4.Тут пока туплю по полной. Перечитывал статью но пока недошло

я так понимаю
CryptAcquireContext(@Prov,nil,nil,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT);
...
CryptReleaseContext(Prov,0);
это будет обязательным
далее в середине надо открыть файл
идалее снова плаваю какой ключь что и как


И так сертификаты пролистываю нахожу, код подписания будет приблезительно такой:

Код:
try
      if ( not assigned( pSignerCert )) then
        Err( Format( 'Сертификат %s не найден', [ SignerName ] ));
      pStreamIn := TMemoryStream.Create;
      pStreamOut := TMemoryStream.Create;
      try
        pStreamIn.LoadFromFile( 'd:\test.txt' );
        GetMem( MessageArray, 1 * SizeOf( PByte ));
        GetMem( MessageSize, 1 * SizeOf( DWORD ));
        GetMem( MessageCert, 1 * SizeOf( PAPCCERT_CONTEXT ));
        MessageArray[ 1 ] := pStreamIn.Memory;
        MessageSize[ 1 ] := pStreamIn.Size;
        MessageCert[ 1 ] := pSignerCert;
        FillChar( SigParams, SizeOf( CRYPT_SIGN_MESSAGE_PARA ), #0 );
        SigParams.cbSize := SizeOF( CRYPT_SIGN_MESSAGE_PARA );
        SigParams.dwMsgEncodingType := MY_ENCODING_TYPE;
        SigParams.pSigningCert := pSignerCert;
        SigParams.HashAlgorithm.pszObjId := szOID_RSA_MD5;
        SigParams.cMsgCert := 1;
        SigParams.rgpMsgCert := MessageCert;
        if not ( CryptSignMessage( @SigParams, false, 1, MessageArray, MessageSize, nil, cbSignedMessageBlob )) then
          Err( 'Размер буфера' );
        pStreamOut.Size := cbSignedMessageBlob;
        if not ( CryptSignMessage( @SigParams, false, 1, MessageArray, MessageSize, pStreamOut.Memory, cbSignedMessageBlob )) then
          Err( 'Файл не подписан' );
        pStreamOut.Size := cbSignedMessageBlob;
        pStreamOut.SaveToFile( 'd:\test.sig' );
        Memo.Lines.Add( 'Файл подписан' );
      finally
        FreeAndNil( pStreamIn );
        FreeAndNil( pStreamOut );
      end;
    finally
      CertFreeCertificateContext(pSignerCert);
    end;

КАК СОХРАНИТЬ ОТДЕЛЬНО КЛЮЧЬ?
Offline Андрей Писарев  
#7 Оставлено : 16 июля 2012 г. 11:59:28(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Ключ брать тут (есть же... поиск, я не про интернет, а про поиск по структурам в jwawincrypt)
Certificate.pCertInfo.SubjectPublicKeyInfo.PublicKey
Anxious

Цитата:

КАК СОХРАНИТЬ ОТДЕЛЬНО КЛЮЧЬ?

в Help: работа с файлами...
также элементарно, как и имея указатель на участок памяти и ее размер... или здесь проблемы?

Отредактировано пользователем 16 июля 2012 г. 12:09:01(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#8 Оставлено : 16 июля 2012 г. 12:07:05(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Цитата:
3.Да я тоже вычитал что ключь хранят в файле но тут хотят отдельно.


Bolt, надеюсь ты уточнил у заказчика за это время, открытый ключ нужен или все таки сертификат (содержащий открытый ключ) ?
Техническую поддержку оказываем тут
Наша база знаний
Offline Bolt  
#9 Оставлено : 16 июля 2012 г. 12:13:13(UTC)
Bolt

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

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

Андрей * написал:
Цитата:
3.Да я тоже вычитал что ключь хранят в файле но тут хотят отдельно.


Bolt, надеюсь ты уточнил у заказчика за это время, открытый ключ нужен или все таки сертификат (содержащий открытый ключ) ?


Заказчик отправил к конторе которая дала требование
я им воросы задал и они молчат уже неделю. Дурдом.
Я теперь пытаюсь сам разобраться и подсунуть им файл.
Offline Андрей Писарев  
#10 Оставлено : 16 июля 2012 г. 12:21:47(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Bolt написал:

SigParams.HashAlgorithm.pszObjId := szOID_RSA_MD5;


как это относится к КРИПТО-ПРО \СКЗИ\ Встраивание

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