Цель:
Я хотел бы позволить пользователям создавать вопросы и собирать информацию от других пользователей в пользовательском веб-приложении (PHP / MySQL в среде для хостинга) и защита собранных данных.
Фон:
Вопросы по умолчанию, которые все пользователи отвечают достаточно, чтобы они не могли быть истолкованы как лично идентифицируемая информация (PII), тем самым ограничивая свою ответственность, чтобы защитить ее, но пользователи, которые создают свои собственные вопросы, вероятно, будут задать для PII, который затем становится ответственностью.
То, что я хотел бы сделать, это защитить эту информацию таким образом, что если либо хостинг-счет, либо база данных были скомпрометированы (или оба!), PII не будет восстанавливаться без значительного количества работы, и даже тогда только небольшая часть теоретически была бы восстановлена.
Предлагаемое решение:
Предполагая, что встроенный MySQL AES_ESCRYPT () / AES_DECRYPT ()
функций используются для шифрования таблицы PII, парольная фраза должна быть сохранена в хостинговой учетной записи, так что если Учреждение хостинга было скомпрометировано, данные могут быть легко прочитаны.
Поскольку пароли пользователей хорошо защищены (хешированы с солью), я думаю о захвате их открытого текста пароля во время аутентификации, шифрование его, и сохраняя его в сеансе PHP, пока пользователь не выходит из системы.
Combo Combo Public / Party будет создан для каждого пользователя с помощью пароля закрытого ключа, защищенный паролем пользователя + солью.
Затем, когда данные PII, основанные на пользовательских вопросах этого пользователя, добавляются в DB, открытый ключ пользователя будет использоваться для шифрования PII, который они собирали через приложение. Когда данные прочитаны (только тогда, когда пользователь вошел в систему), данные будут незашифрованы с закрытым ключом пользователя (который разблокирован с их паролем + соль).
Пособия Я вижу:
Недостатки Я вижу:
Мой вопрос: Есть ли лучший способ сделать это?