| ||||
| ||||
Уважаемые гуру, планируется шифрование файлов в хранилище с постоянным симметричным ключом. Извлечением файла из хранилища и занесением файла в хранилище должен заниматься некий программный сервис. То есть, получается, что этому сервису при работе с файлами необходимо откуда-то знать ключ для операций шифрации-дешифрации. У меня вот какой вопрос: Откуда сервис может читать ключ? Из какого хранилища? Из реестра – как-то не хочется. Из лежащего рядом файла – плохо. Как я понял, в контейнере ключей симметричные ключи нельзя хранить. Вообще, хотелось бы понять, как это обычно делается. | ||||
Ответы: | ||||
| ||||
имхо, так: от пользователя требуют ввести что-то вроде пароля. Затем от этого пароля получают хеш, который является ключом для шифрования. В ГОСТе длина хеша = длине ключа шифрования, вот так. | ||||
| ||||
Нет нет, ввод пароля пользователем исключен. Пользователей много, а пароль(скорее ключ) всегда один, и знать его должен только упомянутый программный сервис. Так как только он уполномочен заниматься шифрацией-дешифрацией. И откуда он может читать ключ? Я не совсем разбираюсь, может со смарт-карты? Или еще какой-нибудь стандартный способ? ЗЫ. ну и e-mail я в первом посте написал :) | ||||
| ||||
имхо: ну наверное тогда пароль можешь зашить в программу или организовать считывание с носителя. Способ хранения где и как выбирай как тебе удобнее, это может быть ключевой файл на дискете персональный для каждого пользователя и т.п. | ||||
| ||||
Господа, есть еще мысли, как это сделать наиболее правильно? | ||||
| ||||
Вообще-то хранить один симметричный ключ и шифровать им всё подряд это не правильно. Потому что в конечном итоге накопиться большой объём шифрованной информации на основе которой можно разгадать ваш секретный ключ. Можно сделать так: 1. У каждого пользователя есть сертификат; 2. Ваш сервис генерит секретный ключ; 3. Шифруем файл; 4. Шифруем секретный ключ на открытом ключе пользователя и помешаем эту последовательность в начало файла. Расшифрование происходит в обратном порядке.(Закрытый ключ пользователя может храниться на дискете либо на другом носителе). Не знаю на сколько вам этот вариант подойдёт. Смотрите сами. | ||||