Как запретить пользователю расшифровывать файл данных, когда программа способна свободно читать файл данных? - PullRequest
0 голосов
/ 16 декабря 2009

Я хочу попросить зрелую модель сделать это. Предположим, я хочу доставить программу и конфиденциальный файл данных пользователю. Программа может читать любые данные, хранящиеся в файле данных, но пользователь не может легко взломать файл данных. Файл данных будет зашифрован стандартным алгоритмом, таким как AES. Теперь проблема превращается в то, как управлять ключом. Ввод ключа в программу кажется плохой идеей, но что еще я могу сделать? Видимо, я не могу дать ключ пользователю напрямую.

Ответы [ 5 ]

5 голосов
/ 16 декабря 2009

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

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

3 голосов
/ 16 декабря 2009

Должно ли это быть чисто программное обеспечение? Если нет, вы можете посмотреть на решение, которое выполняет дешифрование и хранение ключа на аппаратном устройстве, например, USB-ключ.

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

В противном случае, как отмечали другие, не существует известного хорошего программного решения.

2 голосов
/ 16 декабря 2009

Не существует 100% безопасного решения, потому что в какой-то момент вам необходимо загрузить ключ в память, чтобы можно было выполнить дешифрование, и хакер, достаточно опытный, сможет его перехватить. Лучшее, что вы можете сделать, - это сделать его очень трудным для захвата и уменьшить воздействие на данные (максимально ограничив доступ), если ключ скомпрометирован.

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

1 голос
/ 16 декабря 2009

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

0 голосов
/ 16 декабря 2009

DVD Джон загадка, а? Почему плохой ключ в программе? У вас может быть супер-скрытая функция, которая надежно вычисляет ее один раз. Кто-то с дизассемблером и отладчиком может сломать твой ключ, если им хватит времени, ИМО.

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