Шифрование / защита данных, которые использует мое приложение - PullRequest
1 голос
/ 12 октября 2011

Мы пишем программу (на C # или MFC), в которой некоторые из наших данных необходимо будет использовать. Мы НЕ хотим, чтобы пользователь мог получить доступ к этим данным в расшифрованном виде. Мы могли бы использовать что-то вроде шифрования AES, но тогда ключ легко перехватывается. То же самое с DPAPI в Windows; в какой-то момент всегда будет какой-то ключ, и даже запутанный ключ будет довольно легко найти.

Есть ли другой способ помочь защитить эти данные?

  • Данные только для чтения.
  • Они могут или не могут быть подключены к Интернету
  • Данные не принадлежат лицу, использующему приложение, но программе необходим доступ к нему

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

Вероятно, самый простой способ достичь этой цели - использовать сопроцессор какого-либо рода;разгрузите вычисления с ограниченными данными на кусок аппаратного обеспечения, защищенного от несанкционированного доступа , и , может быть , чтобы ваши пользователи не потратили усилия, необходимые для чтения данных.(Если ваши данные находятся в открытом тексте в основной памяти или ЦП, они могут просто прочитать их прямо из памяти, используя strace(1), ltrace(1), gdb(1) или другие встроенные в платформу средства отладки - поэтому убедитесь, чтоОткрытый текст никогда не покидает устройство.)

Совместные процессоры обладают рядом возможностей: что-то вроде Maxim Java iButton может обеспечить низкое энергопотребление и потенциально низкую стоимость входа для вашего решения -но с низким энергопотреблением идет медленная обработка.Что-то вроде криптографического сопроцессора IBM PCIeCC предъявляет более строгие требования к оборудованию и энергопотреблению, но имеет способ увеличения вычислительной мощности для любых операций, которые вы можете захотеть выполнить.

Если требования к оборудованию выходят за рамки требований ваших клиентов, возможно, вы могли бы договориться с вашими клиентами о том, чтобы иметь доступ к Интернету или доступ к частной сети, чтобы вы могли разместить данные на своих собственных серверах и предоставить доступ к ним через API.,(Подумайте Wolfram Alpha - они предоставляют своим клиентам огромное количество кураторских данных , но они полностью живут на своих серверах.)

0 голосов
/ 12 октября 2011

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

Независимо от того, используете ли вы Windows, MacOS или Ubuntu (или что-то еще), вы могли бы работать вместе с локализованным сервером MySQL (или другой базой данных), настроить базу данных так, чтобы данные были зашифрованы, а затем запутать себя ваш скрипт / код (не уверен, говорите ли вы на Java / PHP / .Net или скомпилированное приложение C для собственного использования в Windows или что-то в этом роде.

По крайней мере, таким образом на компьютере размещается только скомпилированный или зашифрованный код, и связь между базой данных (даже если localhost) может быть защищена с помощью шифрования SSH.

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

Обновление:

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

Если вы думаете о приложении для iPhone, возможно, вы захотите подумать о настройке SaaS API вне офиса, где вы можете безопасно проверять и принимать информацию по беспроводной сети, но я все еще не уверен, ожидается ли, что это будет «Установите его сами и используйте» - простое программное обеспечение, или если вы работаете в какой-то контролируемой ситуации, когда вы контролируете, когда / где / кто его использует.

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