Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Ключ для AES


Автор: Dray 30.3.2008, 12:31
Использую алгоритм AES с 128-битным ключом. Суть заключается в следующем. Инсталлятор собирает необходимые данные, шифрует их и сохраняет в файл. Затем программа, которая устанавливается, расшифровывает файл и пользуется данными. Всё это происходит на Windows (2000, XP, 2003, Vista). Вопрос заключается в следующем - что использовать в качестве ключа? Было бы неплохо брать какую-нибудь специфичную для данного компьютера информацию, так, чтобы расшифровать можно было только на нём, а на других нельзя было ни расшифровать, ни получить ключ. И если свой ключь генерить, то как его хранить? Хардкодить не хочется, тем более написано это на C#. 

Автор: v2v 30.3.2008, 12:41
ключ надо именно генерить ... существует множество специальных алгоритмов.
суть алгоритма в том, что ты зашифровав данные ключём не сможешь расшифровать их не зная ключа.

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

Автор: Alexandr87 30.3.2008, 17:19
Dray, я так понял, суть манипуляций в том, чтобы уже синсталлированную программу нельзя было просто скопировать и запустить на другом компе?

Добавлено через 2 минуты и 9 секунд
Цитата(Dray @  30.3.2008,  15:31 Найти цитируемый пост)
Было бы неплохо брать какую-нибудь специфичную для данного компьютера информацию, так, чтобы расшифровать можно было только на нём, а на других нельзя было ни расшифровать, ни получить ключ

вопрос в том, как преобразовать эту информацию в форму ключа?

Автор: Dray 31.3.2008, 10:21
Цитата(Alexandr87 @  30.3.2008,  17:19 Найти цитируемый пост)
Dray, я так понял, суть манипуляций в том, чтобы уже синсталлированную программу нельзя было просто скопировать и запустить на другом компе?

Не... не для этого. Просто пользователь при инсталяции будет вводить личные для него данные. Их надо хранить в зашифрованном виде.

Цитата(Alexandr87 @  30.3.2008,  17:19 Найти цитируемый пост)
вопрос в том, как преобразовать эту информацию в форму ключа? 

Вопрос заключается в том, где взять такую информацию, которая будет специфична только для этого компьютера, чтобы сгенерить из неё ключь.
Если такую информацию взять негде, то как я понимаю придётся генерить ключ из каких-то случайных данных? Как их потом восстановить? И если ключь хранить...
Цитата(v2v @  30.3.2008,  12:41 Найти цитируемый пост)
- внешний носитель (выдать такой носитель пользовател|ю(ям), который будет пользоваться программой и сказать что бы берёг(ли) его как зеницу глаза ). 

С этим будет сложнее... Т. к. инсталируемая программа - это сервис. Который крутится на сервере и соответственно не будет возможности запросить у пользователя какие-либо действия.
Цитата(v2v @  30.3.2008,  12:41 Найти цитируемый пост)
- защищённое хранилище (место куда может доступится только твоя прога и администратор)

А вот это уже интересней. Можно пример? Или что в моём случае подойдёт?

Автор: maxdiver 31.3.2008, 12:38
Dray
Поищите на http://wasm.ru/forum. Не так давно (несколько месяцев назад) точно такая же тема обсуждалась.

Автор: Dray 31.3.2008, 20:46
Всем спасибо, было решено использовать System.Security.Cryptography.ProtectedData вместо AES. Проблема с ключём решилась, т. к. там выполняется защита данных специфичная для данного компьютера автоматически.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)