Форум программистов, компьютерный форум, киберфорум
.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане!
Пользую стандартные .NET'ие реализации симетричных алгоритмов для шифрования файлов.
Возник вопрос: как безопаснее хранить используемый ключ шифрования?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2010, 16:26
Ответы с готовыми решениями:

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

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

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

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

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

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

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

Из 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
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
21.10.2010, 18:53
Цитата Сообщение от planar Посмотреть сообщение
Из MSDN
Ссылку на цитату пожалуйста.
Цитата Сообщение от planar Посмотреть сообщение
Класс CspParameters - надстройка над CryptoApi.
Если уж не веришь мне, то залезь в рефлектор и посмотри. Максимум что там используется это SecureString, которая в свою очередь использует API RtlDecryptMemory и RtlEncryptMemory из advapi32.dll.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
22.10.2010, 11:40  [ТС]
Цитата Сообщение от planar Посмотреть сообщение
Стоит обратить внимание на объект класс CspParameters.
Насколько я понял ключи хранятся в базе для конкретного пользователя. Это не то, что мне нужно. Необходимо свободно передавать зашифрованные файлы между компьютерами. Грубо говоря у меня есть один ключ с помощью которого шифруются все файлы, с которыми оперирует программа. Мне нужно хранить этот ключ (внутри сборки) наиболее безопасным образом.
0
90 / 89 / 13
Регистрация: 28.09.2010
Сообщений: 262
22.10.2010, 11:48
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Насколько я понял ключи хранятся в базе для конкретного пользователя.
Именно так. Смысл в чем - при первом запуске на компьютере, программа создает защищенный ключ, шифрует файл с ключами, и пользуется только зашифрованным файлом. Опасность только в том, если кто-то установочный дистрибутив распотрошит и заберет ключики. Но это надежнее, чем хранить их в открытом виде в ресурсах.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
22.10.2010, 12:47  [ТС]
planar, т.е. ты предлагаешь вынести ключи в отдельный файл и при установке программы устанавливать этот файл на машину пользователя? Не будет ли это еще хуже, чем хранение в ресурсах?
0
90 / 89 / 13
Регистрация: 28.09.2010
Сообщений: 262
22.10.2010, 12:50
Именно. И после первого запуска (а можно и во время установки) зашифровать его ключом под ту машину. По крайней мере, ключи меньше открыты будут, чем при хранении в ресурсах.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
22.10.2010, 22:21  [ТС]
planar, что в таком случае мешает получить доступ к файлу с ключами в дистрибутиве?
0
90 / 89 / 13
Регистрация: 28.09.2010
Сообщений: 262
22.10.2010, 22:25
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
что в таком случае мешает получить доступ к файлу с ключами в дистрибутиве?
Ничто. Но все равно - это надежнее, чем в открытую хранить в ресурсах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.10.2010, 22:25
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru