Защита жестко закодированных данных, которые не могут быть доступны пользователю, например парольная фраза - PullRequest
0 голосов
/ 18 марта 2012

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

Я не специалист по криптографии, так как лучше всего защитить жестко запрограммированные парольные фразы и другие фрагменты данных от пользователей, отладить программное обеспечение и разобрать программное обеспечение?

Я понимаю, что это, вероятно, плохая практика, но она важна для меня (по крайней мере, пока).

Если есть другие способы защиты моих данных от вышеуказанных 3, не могли бы вы сообщить мне, что это такое?

Ответы [ 3 ]

2 голосов
/ 18 марта 2012

Краткий ответ: Вы не можете. Как только программное обеспечение окажется на диске пользователя, достаточно умный и решительный пользователь сможет извлечь из него секретные данные.

Более подробный ответ см. «Хранение секретов в программном обеспечении» в блоге security.SE.

0 голосов
/ 19 марта 2012

По моему опыту, подобные вопросы часто мотивируются одной из четырех причин:

  1. Ваше приложение подключается к ограниченной удаленной службе, такой как сервер базы данных.
  2. Вы не хотите, чтобы ваши пользователи связывались с настройками конфигурации, которые, в свою очередь, не должны оставаться конфиденциальными, пока они не изменены.
  3. Защита от копирования вашего собственного программного обеспечения.
  4. Защита от копирования данных.

Как Илмари Каронен написал в своем ответе , вы не можете делать в точности то, о чем просите, и это означает, в частности, что 3 и 4 не могут быть решены с помощью одной только криптографии.

Однако, если ваша причина для запроса - 1 или 2, вы в конечном итоге задаете вопросы, которые задаете, потому что вы приняли некоторые плохие решения на ранних этапах процесса проектирования. Например, в случае 1 вы не должны предоставлять доступ к ограниченной службе из систем, которым вы полностью не доверяете. Типичное безопасное решение - ввести промежуточный уровень, который является единственным клиентом для вашего ограниченного ресурса и который вы можете опубликовать.

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

0 голосов
/ 18 марта 2012

Каков наилучший способ защиты жестко закодированных парольных фраз и других фрагментов данных от пользователей, отладки программного обеспечения и дизассемблирования программного обеспечения?

Запросите пароль у пользователя и не вводите кодовую фразу жестко.Это единственный способ быть в безопасности.

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

Самое простое, что вы можете сделать (если у вас нет роскоши делать что-то сложное, что только задержит неизбежное ), - это передать ответственность пользователю системы.
Я имею в виду, прямо заявляю, что ваше программное обеспечение столь же безопасно, как и «машина», на которой оно работает.
Если у злоумышленника есть доступ, чтобы начать копаться в файловой системе, тогда ваше приложение будет наименьшим беспокойством пользователя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...