Какая техника может защитить секрет от полностью доверяемого пользователя?

Я программирую систему с помощью C#. Моя программа генерирует маленькое сообщение (обзор хеша для файла), что я хочу сохранить на жестком диске - но я не хочу, чтобы пользователь смог считать его. Я собирался зашифровать это сообщение, но кто-то предположил, что это - ПЛОХАЯ ИДЕЯ.

Таким образом, я ищу альтернативы - как Вы защищаете часть секретной информации от полностью доверяемого пользователя?

6
задан Craig Schwarze 27 January 2010 в 23:31
поделиться

6 ответов

Сделайте шаг назад; У вас есть решение, которое принципиально не работает на проблему, которую у вас есть. Вместо того, чтобы пытаться забить на него, пока он не работает, остановись, отступает назад и решите реальную проблему.

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

Во-первых, Написать модель угроз :

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

Как только вы знаете ресурсы, угрозы и уязвимости, Только тогда начните думать о смяганиях к этим угрозам. Назначать затраты и эффективность для каждой из смягчений.

Например:

  • Ресурс: мой телевизор
  • Значение для меня: $ 400
  • Значение для атакующего: $ 40
  • Уязвимость: разблокированное окно ванной
  • Угроза: воров или вандалы используют окно Получите доступ к телевизору

Хорошо, теперь, когда я знаю, какие атаки, я могу начать думать о смягчениях:

  • Блокировка окна
  • Получить сигнализацию
  • Собаки
  • Guards

Это в растущем порядке расходов. В конце концов стоимость смягчения последствий больше, чем потеря ресурса, и не имеет смысла тратить деньги.

Есть также способы выставления расходов на смягчение последствий:

  • угрожают нападающему обвинению - налогоплательщики платят за это
  • Застраховать телевидение против кражи, сократив стоимость успешной атаки против меня.
  • И так далее.

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

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

Для более «программного обеспечения» сфокусированы примеры моделирования угроз, см.:

http://download.microsoft.com/download/3/7/3a7fa450-1f33-41f7-9e6d-3aa95b5a6aeau/msdnmagazinenovember2006en-us .chm

http://www.owasp.org/index.php/threat_risk_modeling

http://msdn.microsoft.com/en-us/library/aa302419.aspx

и так далее; Вы можете найти много вещей в Интернете о том, как мы делаем моделирование угроз здесь в Microsoft.

Наконец:

Получите профессионал безопасности.

Серьезно, вы увлекаетесь от одной из самых сложных рабочих мест, в которых есть в реализации программного обеспечения, где последствия небольших ошибок имеют серьезные финансовые последствия. Потратьте свой бюджет внедрения в Top-Notch Expert Consultant, у которого есть опыт в этой области, и может помочь вам найти отдельные и настраиваемые детали, которые вам необходимо сделать безопасное решение. Прокат собственной системы безопасности может звучать весело и дешево; Это ни один. Оставьте такую ​​вещь для людей, которые потратили свою карьеру, изучая это пространство.

29
ответ дан 8 December 2019 в 02:07
поделиться

Нет. Это невозможно. Если у человека есть физический / полный доступ к машине, вы не можете защитить жесткий диск на нем без шифрования.

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

2
ответ дан 8 December 2019 в 02:07
поделиться

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

Другими словами: возьмите стоимость вдали от секрета, поэтому он больше не будет секретом, и клиент не будет иметь никакого интереса к его получению.

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

Если вы все еще хотите это сделать, не полагайтесь на единую технику. Используйте много: шифровать данные на диске, используя открытый ключ, который хранится в памяти и взятой из репозитория; Не храните данные как «ClearText» в памяти, но сделайте блок шифрования; часто перемешать память; Обитное использование, узоры, задержки и т. Д.

Взгляните на то, как реализован Skype: через код запутывания, обнаружение отладки (когда отладчик работает на исполняемой, изменяется путь для выполнения), а также путем принятия фактического значения реализация. Даже если вы понимаете, как работает Skype, это уже стандарт; И если вы хотите отменить инженера, чтобы получить ваше программное обеспечение «работать с Skype», ну, они никогда не дадут вам автор, чтобы использовать их бренд.

2
ответ дан 8 December 2019 в 02:07
поделиться

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

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

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

Почему вам нужно остановить пользователь, читающий хэш-накопитель в любом случае?

7
ответ дан 8 December 2019 в 02:07
поделиться

Это проблема DRM, она не может быть сделана. Вы можете сделать это очень неудобным и разочаровывающим, придумав новые и новые способы запугивать данные, но это принципиально ошибочная идея, чтобы подумать, что вы можете защитить данные, когда машины для шифрования и дешифрования проводятся в системе «врага «Полностью контроль.

6
ответ дан 8 December 2019 в 02:07
поделиться

В одном из комментариев к другому ответу, вы писали:

Это попытка сделать определенный журнал Файл доказательство доказательства.

Если это действительно так, то, возможно, вы должны взять другой подход и переместить файл журнала в место, где пользователь нет полностью доверился (то есть: какая-то другая система).

В противном случае вы не можете гарантировать безопасность файла (как упомянул другие).

2
ответ дан 8 December 2019 в 02:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: