22.06.2005 18:10:05Нужен совет Ответов: 3
Сергей
Здравствуйте,
передо мной стоит следующая проблема:
есть клиент-серверное решение(тонкий клиент-IE)
пользователь должен иметь возможность подписывать файлы находящиеся на сервере

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

Насколько я понимаю при помощи capicom это реализовать невозможно. Возможна ли такая реализация при помощи функций высокого уровня CryptoAPI или все же придется делать через низкоуровневые?

Заранее благодарен.
 
Ответы:
23.06.2005 10:16:54Kirill Sobolev
Корректен, если
1)Клиент уверен, что он подписывает именно тот хэш, который сформировал сервер
2)Сервер уверен, что именно клиент подписал хэш
3)Если данные секретные - то обеспечивается конфиденциальность
Вообщем, нужен защищенный канал :)
Да, придется пользоваться функциями CryptHashData, CryptSignHash, CryptVerifySignature etc.
Или есть такой вариант (с CAPICOM) - подписывать хэш хэша - т.е. на сервере пользоваться HashedData а на клиенте - SignedData.
23.06.2005 11:45:57Сергей
Спасибо за ответ.
Канал действительно защищенный (забыл написать).

Теперь возникает еще один вопрос:
Скорее всего при использованиии capicom невозможно будет проверить подпись и целосность данных другими приложениями(Crpytrocp, КриптоАРМ). Следовательно остается только вариант работы с низкоуровневыми функциями CryptoAPI?
23.06.2005 12:38:20Kirill Sobolev
Да, невозможно.
Но и при работе с низкоуровневыми функциями надо иметь ввиду, что CryptSignHash возвращает совсем не ту подпись (не PKCS7), с которой умеют работать КриптоАРМ и cryptcp. Т.е. формирование PKCS7 надо будет делать самостоятельно.