Я только что узнал о переполнении стека, и я просто проверяю, есть ли идеи для ограничения, с которым я сталкиваюсь с некоторыми друзьями в проекте, хотя это скорее теоретический вопрос, к которому я был пытаюсь найти ответ какое-то время.
Я не очень разбираюсь в криптографии, но если я не достаточно ясен, я попытаюсь отредактировать / прокомментировать, чтобы уточнить любые вопросы.
Попытка быть краткой, среда выглядит примерно так:
Приложение, в котором внешний интерфейс для доступа к ключам шифрования / дешифрования и внутренний интерфейс просто используется для хранения и запросов.
Имея базу данных, к которой у вас нет доступа для пары полей, например, скажем, «адрес», как обычно text / varchar.
У вас нет доступа к ключу для расшифровки информации, и вся информация поступает в базу данных уже в зашифрованном виде.
Основная проблема заключается в следующем: как последовательно выполнять запросы к базе данных, невозможно выполнять такие вещи, как "где адрес, например,"% F§YU / ´ ~ # JKSks23% '". (Если есть кто-нибудь, кто чувствует ответ на этот вопрос, не стесняйтесь стрелять).
Но нормально ли это делать where address='±!NNsj3~^º-:'
? Или это также полностью поглотит базу данных?
Еще одним ограничением, которое может применяться, является то, что интерфейс не имеет достаточной вычислительной мощности, поэтому уже шифрование / дешифрование информации начинает расширять ее до предела. (Сказать это просто, чтобы избежать ответов типа «Экспорт объединения таблиц во внешний интерфейс и запрос его там».)
Может ли кто-нибудь указать мне направление, чтобы продолжать думать об этом?
Что ж, спасибо за столь быстрые ответы в 4 часа утра, в первый раз я действительно впечатлен этим сообществом. (А может я просто для другого часового пояса)
Просто введите некоторую информацию:
Основная проблема - частичное совпадение. Обязательным требованием в большинстве баз данных является разрешение частичных совпадений. Основным ограничением на самом деле является , владельцу базы данных не разрешено заглядывать внутрь базы данных для получения информации . В течение последних 10 минут я придумал возможное решение, которое снова распространяется на возможные проблемы с базой данных, к которым я добавлю здесь:
Возможное решение для частичного совпадения:
- Пароль + пара открытых полей пользователя на самом деле являются ключом для шифрования. Для аутентификации идея состоит в том, чтобы зашифровать статическое значение и сравнить его в базе данных.
- Создание нового набора таблиц, в которых информация хранится в разобранном виде, что означает что-то вроде: «4-я улица» станет 2 зашифрованными строками (одна для «4-й», другая для «Улицы»). Это уже позволило бы полу-частичное сопоставление, поскольку поиск уже мог быть выполнен по отдельным таблицам.
Новый вопрос:
- Возможно, это снова поглотит сервер базы данных, или кто-то считает это жизнеспособным решением проблемы частичного сопоставления?
Post Scriptum: Я принял ответ от Cade Roux только для того, чтобы дать возможность для дальнейшего обсуждения и, в частности, возможного ответа на новый вопрос.