14.08.2007 13:33:54Использование ключа подписи (AT_SIGNATURE) вместо кдюча обмена (AT_KEYEXCHANGE) Ответов: 6
Сергей
Из документации я понял, что для шифрования (выработки и передачи сессионного ключа) необязательно использовать ключ обмена, а можно воспользоваться ключом подписи - так ли это и насколько данное применение корректно?
Другой вопрос - если данное использование допустимо, то можно ли использовать для передачи сессионного ключа "несимметричную пару" - с одной стороны ключ подписи, а с другой - ключ обмена.
 
Ответы:
14.08.2007 15:44:51Kirill Sobolev
Если разговор про алгоритм ГОСТ, то для обмена шифрованными данными используется ключ обмена, и только он. В какой документации Вы прочитали обратное?
14.08.2007 16:36:26Сергей
Уверен, что где-то читал (речь шла о том, что функцию ключа обмена может выполнять ключ подписи, НО ключ обмена не может использоваться как ключ подписи). Поясню...речь идет об использовании функции CPImportKey. Из хелпа:

Обычно для согласования (экспорта/импорта) сессионного ключа применяют алгоритм Диффи-Хеллмана. В этом случае ключ парной связи (ключ экспорта/импорта сессионного ключа) порождается операцией импорта открытого ключа получателя (отправителя) на ключевой паре отправителя (получателя). Т.е. для импорта сессионного ключа следует выполнить следующие шаги:

Импорт блоба открытого ключа отправителя на своей ключевой паре;
Импорт сессионого ключа на ключе парной связи.


Нельзя разве вместо ключа парной связи использовать ключи подписи?
14.08.2007 16:45:57Сергей
На Вашем форуме я видел следующий текст (автор - Василий, как я понимаю ваш сотрудник):

------------
На практике, для пользовательских сертификатов и ключей, в 99% случаев используется AT_KEYEXCHANGE (который используется и для подписи, и для обмена ключами при шифровании).
--------------
14.08.2007 17:37:22Kirill Sobolev
Нельзя. В этом суть алгоритма ДХ.
А Василий все правильно написал.
15.08.2007 10:18:00Сергей
Т.е. если я хочу разработать систему, где пользоатель должен будет не только подписывать, но и шифровать файл для передачи другому пользователю, я ,выполняя генерацию ключа, делаю его AT_KEYEXCHANGE, а использую уже его и как ключ обмена и как ключ подписи, а также делаю запрос на сертификат этого ключа (в том смысле что это сертификат ключа подписи пользователя)??? Не возникает ли в данном случае какой нибудь правовой коллизии? нормальный это подход?
15.08.2007 10:32:43Василий
Нормальный подход. В MSDN чётко написано, что ключ AT_KEYEXCHANGE можно использовать для подписи.
Можно, конечно, написать софт, который для подписи будет требовать именно ключ AT_SIGNATURE.
Но, для шифрования в любом случае нужен будет ключ AT_KEYEXCHANGE.