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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
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)
Сообщений: 110
Откуда: Крипто-Про

Поблагодарили: 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 такого не умеет.
Цитата:
Кто его знает что на самом деле подписывает эта железяка, пусть даже на экране и виден какой-то документ.

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

Сделайте еще проще - подписывайте непосредственно на сервере.
Техническую поддержку оказываем тут
Наша база знаний
Offline tim128  
#11 Оставлено : 18 июля 2008 г. 13:09:12(UTC)
tim128

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

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

Kirill Sobolev написал:
По Вашему вопросу - нет, CAPICOM такого не умеет.

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

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

А вот это СБ не разрешает - говорят что передача закрытого ключа на сервер - компрометация этого ключа.
Offline Юрий Маслов  
#12 Оставлено : 18 июля 2008 г. 15:59:25(UTC)
Юрий Маслов

Статус: Активный участник

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

Поблагодарили: 36 раз в 25 постах
tim128 написал:
А вот это СБ не разрешает - говорят что передача закрытого ключа на сервер - компрометация этого ключа.

позволю вставить своё слово. Тут я с СБ не согласен. Передачи ключа на сервер нет. Есть использование ключа на сервере. А это две большие разницы.
Берете сервер. Вставляете в него электронный замок типа "Соболь-PCI". "Соболь" настраиваете на 2 таблетки доступа. Одна таблетка храниться в СБ, а другая у владельца этого ключа. Опечатываете системный блок сервера. Защищаете сервер межсетевым экраном. И пишите "Инструкцию по порядку использования и защиты ключа на сервере ХХХ". В которой прописываете, в том числе, что никто не может ничего делать на сервере (обновлять ПО, устанавливать серви-паки и т.д.) без присутствия владельца ключа и сотрудника СБ. Т.о. Вы обеспечиваете защиту ключа по классу КС2 по требованиям ФСБ. Всё, и подписывайте на сервере!
С уважением,
КРИПТО-ПРО
Offline danila_y  
#13 Оставлено : 23 октября 2008 г. 14:43:21(UTC)
danila_y

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

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

tim128 написал:
... Ввиду большого размера некоторых таких документов скачивать их на клиента не хочется. Хочу вычислить хеш на сервере через CryptoAPI и отправить его на клиента. ...
интересует этот же вопрос... но из прочитанного не совсем понял.. так нельзя сделать из-за каких-то юридических ограничений... или требуются какие-то дополнительные меры защиты при передаче хэша или его обработке?
Offline Kirill Sobolev  
#14 Оставлено : 23 октября 2008 г. 18:13:05(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
сделать так можно, tim128 даже написал как он будет это делать, но
1) юридические ограничения определяются исключительно требованиями Вашей системой
2) пользователю нужно быть уверенным, что хэш который пришел с сервера и есть хэш подписываемого документа
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.