| ||||
| ||||
Здравствуйте! По заказу одного из банков, использующего нашу систему "Банк+Клиент" мы начали разработку ее клона с поддержкой СКЗИ "Крипто ПРО". К сожалению мы наткнулись на следующую проблему: невозможность запуска функции шифрации на произвольной машине в локальной сети при необходимости использования одного и того же секретного ключа. Проблема усугубляется тем, что подобная функция используется подавляющим большинством клиентов банка, при этом ныне применяемая система криптозащиты им это позволяет. Говоря про большое число клиентов мы имеем в виду, что использование ручных операций, таких как копирование содержимого реестра с машины на машину нежелательно. Также нежелательно использовать гибкие диски для хранения ключей и нежелательно использовать сертификаты. Нас интересует возможность использования сетевой версии нашего ПО с возможностью шифрования документов на разных компьютерах одними и теми же ключами. Какие в этой ситуации у Вас есть предложения на базе Вашей текущей реализации? Заранее спасибо С уважением, Влад Степанов, ЗАО "Компания СФТ" | ||||
Ответы: | ||||
| ||||
Можно поподробнее о пожеланиях использования. Правильно ли я понимаю (если не так, поправьте), что: 1. Ключи должны быть не на дискете и вообще не на носителе, а на диске. 2. ЭЦП нужна 3. Пользователь должен иметь возможность работать с разных компьютеров и при этом с разных компьютеров шифровать и подписывать (или к подписи это не имеет отношение). 4. Операционки могут быть разными (от 95 до XP). | ||||
| ||||
>1. Ключи должны быть не на дискете и вообще > не на носителе, а на диске. Очень желательно (сейчас на диске); если придется все же на дискете, то хотелось бы обойтись без сертификатов (сейчас, насколько знаю, перенести секретный ключ на дискете с одной машины на другую можно только при установке сертификата) > 2. ЭЦП нужна Да > 3. Пользователь должен иметь возможность > работать с разных компьютеров и при этом с > разных компьютеров шифровать и подписывать (или > к подписи это не имеет отношение). Шифровать и расшифровывать пользователи должны на одних и тех же ключах с разных машин. По поводу подписывания одними и теми же ключами с разных компьютеров - это не обязательно, но желательно. > 4. Операционки могут быть разными (от 95 до > XP). К сожалению, да. | ||||
| ||||
>1. Ключи должны быть не на дискете и вообще > не на носителе, а на диске. Очень желательно (сейчас на диске); если придется все же на дискете, то хотелось бы обойтись без сертификатов (сейчас, насколько знаю, перенести секретный ключ на дискете с одной машины на другую можно только при установке сертификата) > 2. ЭЦП нужна Да > 3. Пользователь должен иметь возможность > работать с разных компьютеров и при этом с > разных компьютеров шифровать и подписывать (или > к подписи это не имеет отношение). Шифровать и расшифровывать пользователи должны на одних и тех же ключах с разных машин. По поводу подписывания одними и теми же ключами с разных компьютеров - это не обязательно, но желательно. > 4. Операционки могут быть разными (от 95 до > XP). К сожалению, да. | ||||
| ||||
Ну тогда попробую описать вариант. 1. Хранить личные ключи на диске (точнее в реестре) можно, но по требованиям безопаснсоти - плохо. Если заказчик это понимает и может обеспечить их безопасное хранение на диске - это его проблема. 2. Если хранить ключи в реестре то для их использования на другом компьютере нужно часть реестра перенести, что не желательно. 3. Вариант - личные ключи хранятся на дискете. Для ЭЦП вообще больше ничего не надо. Пользователь всегда имеет свой ключ, ничего устанавливать не нужно, все работает через уровень Base Cryptographic Function. Т.е. открыли контекст провайдера, посчитали хеш, подписали ключом с дискеты. Вопрос при реализации - создание формата сообщения, чтобы получивший мог проверить подпись. Ну этом вам решить как и где открытый ключ пользователя зарегистрировать и как его сопоставить с пользователем (раз не хочется использовать сертификаты). 4. Шифрование. Имеем два способа решения. 4.1. Шифруем через те же функции. Для этого нужно определить открытые ключи получателей. Расшифровываем всегда на своем ключе (дискета). 4.2. Неправильный вариант (не рекомендуется использовать) но работать будет. Пользуемся функций DeriveKey и у вас один ключ шифрования для всех или не для всех. Только в этом случае сначала надо порешать вопрос: от кого защищаемся. | ||||
| ||||
Спасибо >Если хранить ключи в реестре то для их >использования на другом компьютере нужно часть >реестра перенести, что не желательно. Как все-таки корректно осуществлять этот перенос? Документирован ли формат хранения ключей КриптоПро в реестре? Будет ли поддерживаться в следующих версиях Вашего продукта? | ||||
| ||||
P.S. еще - возможно ли перенести ключи с дискеты в реестр? | ||||
| ||||
> Как все-таки корректно > осуществлять этот перенос? > Документирован ли формат > хранения ключей КриптоПро > в реестре? > Будет ли поддерживаться > в следующих версиях Вашего продукта? Местоположение контейнера в реестре видимо будет оставаться неизменным от версии к версии. Формат ключей несуществен для переноса - копируется целиком весь ключевой контейнер. Для перечисления содержимого контейнера удобно использовать функцию RegEnumValue; | ||||