Защита XML-файла от редактирования - PullRequest
2 голосов
/ 27 января 2010

У нас есть около 60 МБ конфигурации устройства, реализованной как минимум в 1000 XML-файлах.

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

Теперь нам нужно зашифровать XML-файлы. Есть ли рекомендуемый метод для шифрования XML-файла, и он может быть расшифрован во время выполнения?

Ответы [ 5 ]

2 голосов
/ 27 января 2010

Эта проблема известна в приложениях DRM - вы хотите сделать данные доступными для выбранного вами пользовательского агента, но не для пользователя, работающего с пользовательским агентом. Но, поскольку пользовательский агент обычно находится на стороне пользователя, как указывают Джон и Одед, решительный хакер найдет способ сломать шифрование. Это игра в кошки-мышки. Вы пытаетесь найти решение точно такой же проблемы, которую хотят решить люди, внедряющие DRM. Только программные пользовательские агенты легче взломать, чем аппаратные пользовательские агенты, но в любом случае время работает на хакеров. Последняя разработка - последняя - встраивание всей криптографии в аппаратные средства - например, метод HDCP HDMI (High-bandwith Path Digital Protection Path), где они по существу сделали дешифрованный цифровой сигнал недоступным для пользователя, позволив ему проходить по аппаратному обеспечению черного ящика. от точки расшифровки, до тех пор, пока она не станет доступной, но по назначению - экран телевизора. Однако ключом к успеху HDCP было внедрение его в аппаратном обеспечении. Большинство хакеров научились иметь дело с программным обеспечением. Но поскольку я бы сказал, что в настоящее время на 100 хороших хакеров программного обеспечения приходится 1 хороший аппаратный хакер, мышь надеется, что ни одного кота не будет рядом, чтобы его поймать. Извините за слишком много теории, я считаю, что это важно для вашей проблемы. Если вы по-прежнему хотите играть в игру, зашифруйте свои XML-файлы и убедитесь, что ключ дешифрования недоступен для потенциальных хакеров на серебряной пластине - то есть, запутывает его, больше ничего не может сделать.

1 голос
/ 27 января 2010

Осторожно: хакеры могут видеть все функции в сгенерированных исполняемых файлах .net и DLL! Если вы создадите алгоритм расшифровки в вашем .net-проекте, такой как DecryptXML (строка Path), хакеру будет очень легко вызвать эту инструкцию. Так что не забудьте поставить точку в вашем проекте.

1 голос
/ 27 января 2010

Как объяснили другие, вы не получите его абсолютно безопасно без доверенного устройства, которое хранит ключ и выполняет расшифровку без предоставления доступа к ключу ни при каких обстоятельствах. Компьютеры не являются «доверенными устройствами» ... Мой работодатель продает такую ​​технологию, и если ваши данные действительно стоят денег, вы, возможно, должны принять такое решение во внимание. Если дополнительный USB-ключ неприемлем (или слишком дорог), по крайней мере, используйте криптографию с открытым ключом (асимметричная) (см. System.Security.Cryptography). Преимущество асимметричной криптографии состоит в том, что ключ, используемый для расшифровки ваших данных, не может быть использован для шифрования данных. Ваше приложение должно хранить ключ дешифрования, и хакер может определить его с большим или меньшим усилием. Затем он может расшифровать все ваши данные, но он не может не зашифровать измененные данные снова. Поэтому он не может использовать ваше приложение с измененными данными. Если вы хотите помешать ему сделать это, вы должны запутать свое приложение и использовать методы антиотладки (статические и во время выполнения). Если вы пойдете этим путем, покупка существующего решения, вероятно, будет дешевле.

1 голос
/ 27 января 2010

Вы можете использовать классы в пространстве имен Cryptography .

Большинство классов шифрования позволят вам шифровать и дешифровать потоки, поэтому хороши для ваших целей.

Однако вам все равно нужно будет хранить ключи шифрования где-то , даже если он находится в сборке.

Как указывает Джон, решительный хакер найдет способ сломать любое шифрование.

1 голос
/ 27 января 2010

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

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