Настройка
- У меня есть база данных SQLite, в которой есть конфиденциальная информация о пользователе.
- Эта база данных может быть реплицирована на другие машины.
- Я доверяю пользователю, но не другим приложениям
- Пользователь имеет случайный доступ к глобальному серверу
Цели безопасности
- Любая программа, кроме авторизованной (моей), не может получить доступ к базе данных SQLite.
- Нарушение безопасности на одной машине НЕ нарушит безопасность на других машинах.
- Система должна быть обновляемой (это означает, что если какой-то алгоритм, такой как конкретный алгоритм генерации ключей, окажется ошибочным, его можно будет изменить)
Предлагаемый дизайн
Используйте зашифрованную базу данных SQLite, хранящую ключ в безопасном хранилище ОС.
Проблемы
Любой взлом Windows позволит человеку получить доступ к ключу для всех машин, что нарушает цель № 2.
Примечания
- Подобно этому методу, если я сохраню ключ в исполняемом файле, нарушение безопасности поставит под угрозу все системы.
- Кроме того, я упомянул безопасное хранилище Windows. В то время как я перейду к решению, специфичному для ОС, если мне нужно, я бы предпочел решение, не зависящее от ОС.
Любая идея о том, как достичь целей дизайна?
1 ответ
Я думаю, вам нужно будет использовать оборудование TPM, например. через TBS или что-то подобное, чтобы сделать безопасную версию этого. Насколько я понимаю, TPM позволяет приложению проверять, что оно не отлаживается и не отслеживается на программном уровне, а операционная система должна предотвращать любое другое приложение, притворяющееся перед модулем TPM, что это ваше приложение. Хотя я могу ошибаться.
Вы можете использовать какой-нибудь кладж защиты через неясность, но его можно будет взломать с помощью отладчика, если вы не используете TPM.
Похожие вопросы
Новые вопросы
security
Темы, касающиеся безопасности приложений и атак на программное обеспечение. Пожалуйста, не используйте этот тег в одиночку, что приводит к неоднозначности. Если ваш вопрос не о конкретной проблеме программирования, попробуйте вместо этого задать ее на информационной безопасности SE: https://security.stackexchange.com