Я буду использовать симметричное шифрование AES-256 VIA Open SSL. Пожалуйста, ознакомьтесь с моим рабочим процессом и дайте мне знать, выглядит ли он безопасным.
Рабочий процесс шифрования
1: Приложение будет надежно шифровать данные, используя Open SSL с PHP (для каждого пользователя будет создан уникальный ключ)
2: APP зашифрует все конфиденциальные данные пользователя с помощью ключа на шаге 1.
3: Приложение зашифрует сгенерированный пользователем ключ вторым ключом (главный ключ на стороне клиента) перед отправкой в AWS. Этот ключ будет храниться в файле конфигурации на моем сервере (эта функция только для ключей будет препятствовать тому, чтобы AWS когда-либо видел ключ пользователя)
4 Отправьте ключ, сгенерированный мастер-ключом на стороне клиента, в AWS API Gateway для шифрования.
5 Запускать лямбда-функцию AWS при успешном запросе шлюза API.
6: Функция Lambda зашифрует мастер-ключ на стороне клиента с помощью мастер-ключа AWS KMS, а затем сохранит мастер-ключ вместе с зашифрованными конфиденциальными данными пользователя в Dynamo DB.
Рабочий процесс расшифровки
1: Сделать звонок на шлюз AWS - вызвать лямбда-функцию
2: лямбда-функция будет извлекать конфиденциальные зашифрованные данные пользователей, а также ключ - затем функция лямбда расшифровывает ключ, сгенерированный AWS Master Key
3: Затем лямбда-функция вернет ответ шлюзу API, содержащий зашифрованные данные карты и зашифрованный ключ.
4: APP расшифрует полученный ключ с открытым SSL, используя главный ключ на стороне клиента.
5: Затем расшифрованный ключ на стороне клиента расшифрует данные карты пользователя.
Ноты: Приложение будет поддерживать WAF и будет иметь IPS, IDS, антивирус и решение FIM. FIM проверит наличие изменений в файловой системе и уведомит меня по электронной почте, плюс я добавлю некоторую логику для автоматического отключения мастер-ключа AWS KMS, если FIM обнаружит изменение.
Дополнительное примечание: Доступ к AWS API Gateway будет ограничен IP-адресом моих серверов.
Пожалуйста, дайте мне знать ваши мысли и предложения.