Настройка

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

Цели безопасности

  1. Любая программа, кроме авторизованной (моей), не может получить доступ к базе данных SQLite.
  2. Нарушение безопасности на одной машине НЕ нарушит безопасность на других машинах.
  3. Система должна быть обновляемой (это означает, что если какой-то алгоритм, такой как конкретный алгоритм генерации ключей, окажется ошибочным, его можно будет изменить)

Предлагаемый дизайн

Используйте зашифрованную базу данных SQLite, хранящую ключ в безопасном хранилище ОС.

Проблемы

Любой взлом Windows позволит человеку получить доступ к ключу для всех машин, что нарушает цель № 2.

Примечания

  1. Подобно этому методу, если я сохраню ключ в исполняемом файле, нарушение безопасности поставит под угрозу все системы.
  2. Кроме того, я упомянул безопасное хранилище Windows. В то время как я перейду к решению, специфичному для ОС, если мне нужно, я бы предпочел решение, не зависящее от ОС.

Любая идея о том, как достичь целей дизайна?

0
chacham15 16 Апр 2011 в 13:32

1 ответ

Я думаю, вам нужно будет использовать оборудование TPM, например. через TBS или что-то подобное, чтобы сделать безопасную версию этого. Насколько я понимаю, TPM позволяет приложению проверять, что оно не отлаживается и не отслеживается на программном уровне, а операционная система должна предотвращать любое другое приложение, притворяющееся перед модулем TPM, что это ваше приложение. Хотя я могу ошибаться.

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

0
Robin Green 16 Апр 2011 в 13:44