| ||||
| ||||
Из документации я понял, что для шифрования (выработки и передачи сессионного ключа) необязательно использовать ключ обмена, а можно воспользоваться ключом подписи - так ли это и насколько данное применение корректно? Другой вопрос - если данное использование допустимо, то можно ли использовать для передачи сессионного ключа "несимметричную пару" - с одной стороны ключ подписи, а с другой - ключ обмена. | ||||
Ответы: | ||||
| ||||
Если разговор про алгоритм ГОСТ, то для обмена шифрованными данными используется ключ обмена, и только он. В какой документации Вы прочитали обратное? | ||||
| ||||
Уверен, что где-то читал (речь шла о том, что функцию ключа обмена может выполнять ключ подписи, НО ключ обмена не может использоваться как ключ подписи). Поясню...речь идет об использовании функции CPImportKey. Из хелпа: Обычно для согласования (экспорта/импорта) сессионного ключа применяют алгоритм Диффи-Хеллмана. В этом случае ключ парной связи (ключ экспорта/импорта сессионного ключа) порождается операцией импорта открытого ключа получателя (отправителя) на ключевой паре отправителя (получателя). Т.е. для импорта сессионного ключа следует выполнить следующие шаги: Импорт блоба открытого ключа отправителя на своей ключевой паре; Импорт сессионого ключа на ключе парной связи. Нельзя разве вместо ключа парной связи использовать ключи подписи? | ||||
| ||||
На Вашем форуме я видел следующий текст (автор - Василий, как я понимаю ваш сотрудник): ------------ На практике, для пользовательских сертификатов и ключей, в 99% случаев используется AT_KEYEXCHANGE (который используется и для подписи, и для обмена ключами при шифровании). -------------- | ||||
| ||||
Нельзя. В этом суть алгоритма ДХ. А Василий все правильно написал. | ||||
| ||||
Т.е. если я хочу разработать систему, где пользоатель должен будет не только подписывать, но и шифровать файл для передачи другому пользователю, я ,выполняя генерацию ключа, делаю его AT_KEYEXCHANGE, а использую уже его и как ключ обмена и как ключ подписи, а также делаю запрос на сертификат этого ключа (в том смысле что это сертификат ключа подписи пользователя)??? Не возникает ли в данном случае какой нибудь правовой коллизии? нормальный это подход? | ||||
| ||||
Нормальный подход. В MSDN чётко написано, что ключ AT_KEYEXCHANGE можно использовать для подписи. Можно, конечно, написать софт, который для подписи будет требовать именно ключ AT_SIGNATURE. Но, для шифрования в любом случае нужен будет ключ AT_KEYEXCHANGE. | ||||