Таким образом, у меня есть ситуация, когда мы должны предоставлять услуги сельской местности через простые в использовании приложения, такие как чат-боты и офлайн-кошельки. Однако в бэкэнде каждый пользователь при регистрации получает новую пару ключей, которая действует как ключ доступа к используемому нами API, который предоставляет сервис. По сути, мы являемся посредниками.
Я исследовал и не смог прийти к решению, как лучше хранить эти закрытые ключи. Несколько подходов; наряду с плюсами и минусами; Я подумал:
Первый: шифр
пусть шифр = (secret_salt + идентификатор чата пользователя / номер телефона)
сохранить ключ pvt в базе данных как aes256 (privatekey, cipher)
Плюсы:
Минусы:
- секретная соль - единственная точка отказа
Второе: шифрование конверта
Создайте ключ шифрования основного ключа, используя aws KMS
Для каждого пользователя создайте ключ шифрования данных
Используйте ключ шифрования данных для шифрования закрытого ключа пользователя и сохраните его в базе данных
Зашифруйте ключ шифрования данных с помощью ключа шифрования основного ключа и сохраните его в базе данных как скважина
Плюсы:
Минусы: * 10 67 *
- если злоумышленник получит доступ к приложению, которое он все еще может имитировать, вызовы aws?
Я не уверен, что второй вариант лучше первого, или если мне следует рассмотреть различные варианты в целом.
Любая помощь будет признательна.