MySQL и хранение зашифрованных пользовательских данных

#php #mysql #sql #encryption #aes

#php #mysql #sql #шифрование #aes

Вопрос:

У меня есть много пользовательских данных, которые я буду хранить на совместимом сервере базы данных.

Прямо сейчас существует около 10 различных итераций данных, которые я буду хранить, но со временем их может быть сотни.

Данные обычно выглядят так, плюс-минус 50 других строк данных:

 ID          INT (10)
Name        VARCHAR (40)
Address     VARCHAR (65)
City        VARCHAR (40)
State       VARCHAR (2)
Zip         VARCHAR (5)
Birthdate   INT (11)
SSN         VARCHAR (11)

etc.
  

Мой вопрос не обязательно о шифровании данных, но о наиболее практичном способе хранения и извлечения данных.

Прямо сейчас у меня есть 10 разных таблиц для 10 разных классов данных, которые я храню. В ближайшие 6 месяцев это может вырасти до 100 или даже 1000 различных таблиц.

  • Было бы лучшей идеей сохранить все эти данные в массиве JSON и сохранить их в blob, поскольку строки данных не всегда будут одинаковыми?

  • Или я должен хранить все данные в отдельных столбцах и шифровать столбцы отдельно?

  • Или что-то совсем другое

Комментарии:

1. Вам нужно выполнить поиск по каким-либо данным?

2. Я думаю, вам следует пересмотреть свой дизайн, если вы действительно рассчитываете вырасти с 10 таблиц до 100 или 1000 различных таблиц.

3. @AndrewBarber Нет, просто извлеките. Поскольку он будет зашифрован, маловероятно, что я смогу выполнить поиск в любом случае

4. @Ray разным компаниям требуется разная таблица, потому что они хранят совершенно разную информацию. Если у вас есть какие-либо идеи, пожалуйста, дайте мне знать

5. @bryan Если вы хотите хранить everything зашифрованные данные, и вы не собираетесь каким-либо образом обращаться к ним в зависимости от отношений, и вам не нужна согласованность между строками, определяющими, какие столбцы используются (кроме, возможно, идентификатора пользователя с первичным ключом), вы могли бы использовать простой столбец 2, идентификатор и таблицу ДАННЫХ. Может быть, третий столбец, например, company_id. На самом деле это звучит как возможный вариант для MongoDB или Amazon Dynamo вместо Mysql — если только остальные ваши таблицы не используются более реляционно.

Ответ №1:

Было бы лучшей идеей сохранить все эти данные в массиве JSON и сохранить их в blob, поскольку строки данных не всегда будут одинаковыми?

Если вы столкнулись с проблемой, связанной с нереляционными структурами базы данных, тогда используйте нереляционную базу данных. Или JSON-функции PostgreSQL. Это, конечно, само по себе не имеет практически никакого отношения к шифрованию.

Или я должен хранить все данные в отдельных столбцах и шифровать столбцы отдельно?

Независимо от того, сохраняете ли вы эти данные в столбце или переносите их в поле JSON, в конечном итоге вы будете шифровать столбцы независимо.

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