Форум программистов, компьютерный форум, киберфорум
.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
Эксперт С++
2325 / 1698 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
1

Хранение ключей шифрования

25.09.2010, 16:26. Просмотров 5206. Ответов 16
Метки нет (Все метки)

Здравствуйте, уважаемые форумчане!
Пользую стандартные .NET'ие реализации симетричных алгоритмов для шифрования файлов.
Возник вопрос: как безопаснее хранить используемый ключ шифрования?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.09.2010, 16:26
Ответы с готовыми решениями:

Хранение ключей симметричного шифрования
Пишу программу, использующую алгоритм шифрования AES. Озаботился хранением ключа и вектора...

Хранение ключей шифрования
Есть программа, которая шифрует некоторые файлы. Шифруется симметричным алгоритмом(ассиметричный...

Хранение ключей в .dll
Знаю одного человека, который реализовал хранение ключей в .dll И при запуске программы постоянно...

Хранение ключей и значений в словаре
Мне нужно в словарь записать пары ключ и значение. Но в ключах есть одинаковые значения и...

16
Почетный модератор
Эксперт .NET
8663 / 3615 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
25.09.2010, 17:01 2
А ключ создаете Вы или пользователь?
0
Эксперт С++
2325 / 1698 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
25.09.2010, 17:06  [ТС] 3
SSTREGG, я, у меня есть комплект ключей для шифрования различных типов файлов, которыми должна оперировать программа.
0
Почетный модератор
Эксперт .NET
8663 / 3615 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
25.09.2010, 17:56 4
Пока на ум приходит вариант хранить ключи в файле (шифрованном), и блокировать обращение к этому файлу (лучше всего драйвером) или создавать шифрованный раздел на диске... Либо хранить ключи на каком-нибудь внешнем устройстве... Но эти варианты могут быть очень затратными по времени их реализации, или финансово, к тому же всё зависит от того где программа будет применяться )

В общем я склоняюсь к варианту хранения ключей в каком-нибудь зашифрованном хранилище, тот же файл к примеру.
В любом случае кому надо будет, тот найдет способ обойти защиту...
1
Эксперт С++
2325 / 1698 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
25.09.2010, 18:11  [ТС] 5
Цитата Сообщение от SSTREGG Посмотреть сообщение
Пока на ум приходит вариант хранить ключи в файле
Файл не подойдет - случись, что с ним и все - никогда не сможем ничего расшифровать.
Цитата Сообщение от SSTREGG Посмотреть сообщение
Либо хранить ключи на каком-нибудь внешнем устройстве...
Шифрование файлов (например с данными пользователей) - это лишь заморочки самой программы, пользователь о нем вообще ничего знать не должен, поэтому, к сожалению, этот вариант не пойдет.

Можно в принципе в ресурсах самого приложения их разместить, но вот боюсь, не будет ли это легкой добычей для потенциального взломщика?
0
Почетный модератор
Эксперт .NET
8663 / 3615 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
25.09.2010, 18:39 6
В .NET принципиально всё "лёгкая добыча для взломщика". Для нормальной защиты нужен нормальный обфускатор, а для этого нужны деньги...
0
Эксперт С++
2325 / 1698 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
25.09.2010, 18:49  [ТС] 7
Ладно, и на том спасибо!
Пока буду хранить ключи в ресурсах сборки.

Буду очень рад, если кто нибудь подскажет более безопасный вариант хранения.
0
88 / 87 / 13
Регистрация: 28.09.2010
Сообщений: 262
21.10.2010, 17:20 8
Стоит обратить внимание на объект класс CspParameters. Он позволяет безопастно хранить ключи, правда, только для ассиметричных алгоритмов. Но здесь все проще - сохраняем ассиметричный ключ в безопасном хранилище, с его помощью шифруем файл с нужными ключами. Так и работаем.
0
Почетный модератор
Эксперт .NET
8663 / 3615 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
21.10.2010, 18:30 9
Цитата Сообщение от planar Посмотреть сообщение
сохраняем ассиметричный ключ в безопасном хранилище
Безопасное хранилище это CspParameters? Оно (точнее SecureString) хранит ключ в зашифрованном виде, в памяти. Если его (зашифрованный ключ) сохранить на диск, то восстановить его после завершения процесса будет невозможно.
0
88 / 87 / 13
Регистрация: 28.09.2010
Сообщений: 262
21.10.2010, 18:43 10
Неправда Ваша

Из MSDN

key container
A part of the key database that contains all the key pairs (exchange and signature key pairs) belonging to a specific user. Each container has a unique name that is used when calling the CryptAcquireContext function to get a handle to the container.
Класс CspParameters - надстройка над CryptoApi.
0
Почетный модератор
Эксперт .NET
8663 / 3615 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
21.10.2010, 18:53 11
Цитата Сообщение от planar Посмотреть сообщение
Из MSDN
Ссылку на цитату пожалуйста.
Цитата Сообщение от planar Посмотреть сообщение
Класс CspParameters - надстройка над CryptoApi.
Если уж не веришь мне, то залезь в рефлектор и посмотри. Максимум что там используется это SecureString, которая в свою очередь использует API RtlDecryptMemory и RtlEncryptMemory из advapi32.dll.
0
Эксперт С++
2325 / 1698 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
22.10.2010, 11:40  [ТС] 12
Цитата Сообщение от planar Посмотреть сообщение
Стоит обратить внимание на объект класс CspParameters.
Насколько я понял ключи хранятся в базе для конкретного пользователя. Это не то, что мне нужно. Необходимо свободно передавать зашифрованные файлы между компьютерами. Грубо говоря у меня есть один ключ с помощью которого шифруются все файлы, с которыми оперирует программа. Мне нужно хранить этот ключ (внутри сборки) наиболее безопасным образом.
0
88 / 87 / 13
Регистрация: 28.09.2010
Сообщений: 262
22.10.2010, 11:48 13
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Насколько я понял ключи хранятся в базе для конкретного пользователя.
Именно так. Смысл в чем - при первом запуске на компьютере, программа создает защищенный ключ, шифрует файл с ключами, и пользуется только зашифрованным файлом. Опасность только в том, если кто-то установочный дистрибутив распотрошит и заберет ключики. Но это надежнее, чем хранить их в открытом виде в ресурсах.
0
Эксперт С++
2325 / 1698 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
22.10.2010, 12:47  [ТС] 14
planar, т.е. ты предлагаешь вынести ключи в отдельный файл и при установке программы устанавливать этот файл на машину пользователя? Не будет ли это еще хуже, чем хранение в ресурсах?
0
88 / 87 / 13
Регистрация: 28.09.2010
Сообщений: 262
22.10.2010, 12:50 15
Именно. И после первого запуска (а можно и во время установки) зашифровать его ключом под ту машину. По крайней мере, ключи меньше открыты будут, чем при хранении в ресурсах.
0
Эксперт С++
2325 / 1698 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
22.10.2010, 22:21  [ТС] 16
planar, что в таком случае мешает получить доступ к файлу с ключами в дистрибутиве?
0
88 / 87 / 13
Регистрация: 28.09.2010
Сообщений: 262
22.10.2010, 22:25 17
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
что в таком случае мешает получить доступ к файлу с ключами в дистрибутиве?
Ничто. Но все равно - это надежнее, чем в открытую хранить в ресурсах.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2010, 22:25

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как организовать хранение ключей QSettings?
Всем привет! QSettings стал использоваться у меня во многих местах в программе и надоело каждый раз...

Хранение двух одинаковых ключей в HashMap
Если создать такую хэш функцию(hashCode так переопределить) которая для разных обьектов класса...

Вывод значения ключей массива по условию совпадения других ключей
Есть массив $arElements Array ( => Array ( => first ...

Генерация и проверка на работоспособность ключей активации (регистрационных ключей)
Помогите придумать как можно осуществить сие деяние. Суть заключается в чем, первая программа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.