У нас есть настольное и мобильное приложение, которое используется для доступа ко многим услугам третьих сторон. Эти службы имеют некоторую потенциально чувствительную информацию - например, токены аутентификации, а в некоторых случаях - имена и пароли обычного текста.Лучшая практика для хранения конфиденциальной информации пользователя на удаленном сервисе
Мы хотим предоставить услугу для синхронизации своих настроек на нескольких компьютерах и устройствах. То есть - они подписываются на услугу, которую мы предоставляем, а затем эта информация синхронизируется везде, где они вошли.
У нас нет способа заставить сторонние приложения прекратить использование паролей с открытым текстом.
Есть несколько подходов мы рассматривали:
Никогда не отправлять пароли или аутентификации токены вверх.
Когда пользователь регистрируется на новом устройстве, им необходимо повторно ввести/аутентифицировать устройство для каждой сторонней службы.
Преимущество: безопасность, отсутствие риска компрометации пароля/токена.
Недостаток: Сложный для пользователей.Шифрование конфиденциальной информации с использованием сертификата клиента или аппаратного токена.
Когда пользователь хочет войти в систему, они предоставляют токен сертификата/оборудования.
Преимущества: Очень безопасный.
Недостаток: Огромный барьер для входа, труднодоступный для некоммерческого приложения для реализации.шифровать конфиденциальную информацию с помощью пароля, который пользователь предоставляет
Когда пользователь входит в новое устройство, ему будет предложено ввести пароль.
Если пароль неверен, им необходимо повторно ввести/аутентифицировать все остальные устройства.Advantage: Secure, если пользователь предоставляет надежный пароль.
Недостаток: если пользователь сбрасывает свой пароль, ему необходимо перезапустить устройство для всех сторонних приложений.Зашифровать конфиденциальную информацию на наших серверах.
Преимущество: Легко для пользователей.
Недостаток: только незначительно больше работы, чем открытый текст для тех, кто захватывает таблицы настроек.Не беспокойтесь, шифруя что угодно. (Хранилище с обычным текстом)
Преимущество: Легко для пользователей.
Недостаток: Легко для тех, кто захватывает нашу БД, чтобы получить все пароли пользователя/auth-tokens.
Мой вопрос: Есть ли лучший подход, который мы еще не рассмотрели?