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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Andrey  
#1 Оставлено : 25 июня 2008 г. 0:08:21(UTC)
Andrey

Статус: Новичок

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

Подскажите погу ли я сформировать ЭЦП согласно требованиям ГОСТ Р 34.10-2001
и ГОСТ Р 34.11-94 ("Информационная технология. Криптографическая защита информации. Функция хэширования.").
через capicom ?
Offline Kure  
#2 Оставлено : 25 июня 2008 г. 12:56:57(UTC)
Kure

Статус: Администратор

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

Поблагодарили: 33 раз в 10 постах
Да.
Если при создании подписи вы выбираете свой сертификат с ГОСТом, подпись будет формироваться на перечисленных вами алгоритмах.
Offline Andrey  
#3 Оставлено : 25 июня 2008 г. 13:14:29(UTC)
Andrey

Статус: Новичок

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

Kure написал:
Да.
Если при создании подписи вы выбираете свой сертификат с ГОСТом, подпись будет формироваться на перечисленных вами алгоритмах.

А хеширование ?
Offline Andrey  
#4 Оставлено : 26 июня 2008 г. 3:40:57(UTC)
Andrey

Статус: Новичок

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

Направьте в правильную сторону на perl-e пытаюсь подписать строку у меня получается 25 строк подпись
а в примере По для которого эта подпись нужна 1 строка такого вида
's43asdDsfAnDgt+4mRFtWD9+xFEnPtq5lFwQ5yQMCVsEY0Ou7CS1PhkZRPwdzBVR6QwO2tX4xPZzFI87DpYTMg=='
Подскажите какой метод нужно использовать ? может SignedCode ?

use warnings;
use Win32::OLE;
use Win32::OLE::Variant;
use MIME::Base64;
my $StoreName = 'MY';
my $cert ;
my $certforsign = Win32::OLE->new('CAPICOM.Certificate') or die "Could create object: ".Win32::FormatMessage Win32::GetLastError()."\n";;
my $Store = Win32::OLE->new('CAPICOM.Store') or die "Could create object: ".Win32::FormatMessage Win32::GetLastError()."\n";
my $Signer = Win32::OLE->new('CAPICOM.Signer') or die "Oops, cannot start CAPICOM.Signer";
my $SignedData = Win32::OLE->new('CAPICOM.SignedData') or die "Oops, cannot start CAPICOM.SignedData";
use constant {
Unknown => 0,
Sign => 1,
Timestamp => 2,
Verify => 3,
CAPICOM_LOCAL_MACHINE_STORE => 1,
CAPICOM_CURRENT_USER_STORE => 2,
CAPICOM_SMART_CARD_USER_STORE => 4,
CAPICOM_OTHER_STORE => 1,
CAPICOM_STORE_OPEN_READ_ONLY => 0,
CAPICOM_KEY_STORAGE_DEFAULT => 0,
CAPICOM_CERTIFICATE_FIND_SHA1_HASH => 0,
CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME => 1,
CAPICOM_CERTIFICATE_FIND_ROOT_NAME => 3,
CAPICOM_ENCODE_ANY => 0xffffffff,
CAPICOM_ENCODE_BASE64 => 0,
CAPICOM_ENCODE_BINARY => 1,

CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT => 0,
CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN => 1,
CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY => 2,
CAPICOM_VERIFY_SIGNATURE_ONLY => 0,
CAPICOM_VERIFY_SIGNATURE_AND_CERTIFICATE => 1,


};

my $Masksign ='cb72197e56ed78dbeeaac027c6268b159a6c6238';

$Store->Open(CAPICOM_CURRENT_USER_STORE ,$StoreName,CAPICOM_STORE_OPEN_READ_ONLY);
my $Certificates = $Store->Certificates;
if ($Certificates->Count > 0)
{
$Certificates = $Certificates->Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, $Masksign);
}
{
if ($Certificates->Count == 0)
{
print "Error!\n";
exit;
}
if ($Certificates->Count == 1)
{
$Signer->LetProperty('Certificate',$Certificates->Item(1));
last;
}
print "Error! 2!\n";
exit;
}
undef $Certificates;
undef $Store;
my $ContentToSign ='aa';
$SignedData->{'Content'} = Variant(VT_UI1, $ContentToSign);
my $Message = $SignedData->Sign($Signer, 1, CAPICOM_ENCODE_BASE64);
$SignedData->Verify($Message, 1, 0);
print $Message ;
Offline Kirill Sobolev  
#5 Оставлено : 30 июня 2008 г. 14:59:23(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Вы получаете результат в виде PKCS7, а вам видимо нужна просто подпись в виде зашифрованного хеша. Она конечно в этом PKCS#7 содержится, но вытащить средствами CAPICOM ее не получится.
Техническую поддержку оказываем тут
Наша база знаний
Offline Andrey  
#6 Оставлено : 3 июля 2008 г. 16:50:10(UTC)
Andrey

Статус: Новичок

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

Kirill Sobolev написал:
Вы получаете результат в виде PKCS7, а вам видимо нужна просто подпись в виде зашифрованного хеша. Она конечно в этом PKCS#7 содержится, но вытащить средствами CAPICOM ее не получится.

Спасибо буду пробовать без capicom
Offline tim128  
#7 Оставлено : 15 июля 2008 г. 22:56:07(UTC)
tim128

Статус: Новичок

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

Требуется реализовать электронную подпись документа, формируемого на веб-сервере. Ввиду большого размера некоторых таких документов скачивать их на клиента не хочется. Хочу вычислить хеш на сервере через CryptoAPI и отправить его на клиента. Но как я понял CAPICOM умеет подписывать только исходный документ, а доступа к CryptoAPI из javascript нет. Насколько я себе представляю ЭЦП это шифрование хеша. Можно ли зашифровать полученный с веб-сервера хэш через CAPICOM и получить подпись, которую потом можно было бы проверить через CryptoAPI функцией CryptVerifySignature()?
Offline Kirill Sobolev  
#8 Оставлено : 16 июля 2008 г. 13:51:29(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Цитата:
Ввиду большого размера некоторых таких документов скачивать их на клиента не хочется.

Интересный подход - Вы хотите сказать, что клиент будете подписывать "кота в мешке"?
Техническую поддержку оказываем тут
Наша база знаний
Offline tim128  
#9 Оставлено : 16 июля 2008 г. 22:48:15(UTC)
tim128

Статус: Новичок

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

Kirill Sobolev написал:
Цитата:
Ввиду большого размера некоторых таких документов скачивать их на клиента не хочется.

Интересный подход - Вы хотите сказать, что клиент будете подписывать "кота в мешке"?

По сути да. Но если так размышлять, тогда в любом случае подписывается кот в мешке. Кто его знает что на самом деле подписывает эта железяка, пусть даже на экране и виден какой-то документ. На самом деле клиент конечно может открыть документ и посмотреть при желании - загрузка не производится именно в момент нажатия на кнопку подписать. Над документом работа ведется коллективно, подписывающий человек вряд ли будет его читать - он доверяет своим сотрудникам и в случае чего спрашивать будет с них. Хотелось бы все-таки услышать ответ на вопрос, советы тоже приветствуются...
Offline Kirill Sobolev  
#10 Оставлено : 17 июля 2008 г. 13:54:26(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,732
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
По Вашему вопросу - нет, CAPICOM такого не умеет.
Цитата:
Кто его знает что на самом деле подписывает эта железяка, пусть даже на экране и виден какой-то документ.

Это знает, как минимум, разработчик. А разработка таких "железяк" требует лицензию ФСБ, если они предназначены для продажи. Если же для внутреннего пользования - то эти функции должна выполнять внутренняя СБ или ее аналог.
Цитата:
подписывающий человек вряд ли будет его читать - он доверяет своим сотрудникам и в случае чего спрашивать будет с них

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