Шифрование в коде против шифрования в столбце БД

#php #mysql #security #encryption #architecture

#php #mysql #Безопасность #шифрование #архитектура

Вопрос:

Необходимо обратиться за советом по архитектуре!

В настоящее время конфиденциальные данные хранятся в базе данных (скажем, SSN пользователя) в виде обычного текста

Он должен быть зашифрован.

Подход 1: Шифрование в коде

  • Некоторая встроенная библиотека шифрования может быть использована для шифрования (с использованием ключа, хранящегося в хранилище).
  • Зашифрованный текст может быть сохранен в столбце DB
  • Для извлечения ВЫБЕРИТЕ в этой таблице DB из DAO, используйте функцию Decrypt в code, верните расшифрованный ответ

Подход 2: Зашифруйте столбец базы данных

  • примените триггер к столбцу, который зашифрует вставленные данные для этого столбца
  • Для извлечения база данных предлагает методы дешифрования, которые можно использовать при ВЫБОРЕ запроса на уровне DAO

Параметры для определения:

  1. Производительность
  2. Качество кода (выглядит более чистым при подходе 2)
  3. Надежность шифрования (обеспечат ли оба подхода одинаковую надежность шифрования)

В настоящее время код приложения находится на php Laravel, а DB — на MySQL

Планируемый алгоритм шифрования: AES 256 CBC

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

1. Одним из аспектов, который вы должны учитывать, является управление ключами и то, как эти параметры решают его. Как правило, некоторые правила требуют, чтобы приложение поворачивало клавишу каждые 12 месяцев. Могут ли оба этих варианта без проблем обрабатывать поворот клавиш? Если у вас нет времени простоя, живое приложение должно иметь возможность обрабатывать две клавиши одновременно во время поворота клавиши.

2. Поворот ключа @TheImpaler не требуется. Мы планируем, даже в случае сомнений в ключе secet, повторно зашифровать данные с помощью нового ключа!

3. Насколько уязвима машина, на которой хранится ключ дешифрования? И многие другие места, которые нуждаются в подключении. Вам действительно следует нанять эксперта по безопасности и не ожидать полного ответа от этого «бесплатного» сервиса.

4. Ключ @RickJames останется на собственном облачном сервере Hashicorp.

5. @RickJames Мне было больше любопытно, какой подход лучше? шифрование в коде .. или пусть DB принимает cae из enc-decyption. Подход БД представляется более простым для подключения к существующей системе, так как это приведет к минимальным изменениям кода