Я ранее задавал связанный вопрос здесь . Я придумал схему, которую опишу ниже. Я прошу экспертов предоставить обратную связь.
Поскольку целевое приложение является приложением-потребителем, подразумевается, что приложение не будет развернуто на BES. При необходимости будет разработано отдельное приложение, которое более подходит и хорошо интегрируется со средой BES.
Во-первых, система сборки приложения (включая исходный код) связана с регистрацией пользователя. То есть, когда пользователь регистрируется, приложение создается для этого пользователя только со ссылкой, предоставляемой, как только регистрация завершена. Следующая последовательность шагов выполняется сервером от имени пользователя.
Установка
- (закрытый ключ, открытый ключ), называемые "мастер-ключами", для этого пользователя.
- (закрытый ключ, открытый ключ), называемые «канальными ключами» для этого пользователя.
- Главный открытый ключ будет подписан ключами для подписи кода Сервера.
- Открытый ключ канала будет подписан ключами подписи кода Сервера
- (ключ канала, мастер-ключ) будет упакован вместе с исходным кодом приложения.
- Уникальный идентификатор для этого приложения генерируется и связывается вместе с приложением.
- Приведенный выше исходный код скомпилирован с использованием инструментов RIM и подписан сертификатом подписавшего RIM.
- Любые промежуточные файлы, созданные для вышеуказанного процесса, удаляются сразу после завершения сборки.
Мастер-ключи используются для выполнения таких важных операций, как (а) Сброс пароля пользователя на устройстве (б) Сброс пароля приложения (в) Удаленная очистка при потере устройства (d) Включение удаленное отслеживание, когда устройство потеряно.
Канальные ключи используются для шифрования / подписи данных при взаимодействии клиента с сервером.
Создание ключей сеанса . Ключи сеанса используются для одноразовой связи между клиентом и сервером. Они передаются по HTTPS между устройством и сервером в зашифрованном виде (возможно, с использованием AES-256).
Когда пользователь загружает приложение в телефон и успешно устанавливает его, при первом запуске пользователь выбирает пароль для приложения. Этот пароль известен только пользователю.
Приложение отправляет (идентификатор пользователя, идентификатор приложения), зашифрованный с помощью сеансового ключа, на сервер через HTTPS
Приложение генерирует 128-битный UUID под названием «Rescue Code» и запрашивает у пользователя идентификатор электронной почты. На этот идентификатор электронной почты будет отправлено электронное письмо, содержащее этот «Код спасения». Пользователь обязан , чтобы сохранить его в безопасности и выдать его, когда пользователь теряет телефон или забывает пароль.
Этот спасательный код хранится на устройстве.
- После запуска приложение ВСЕГДА запускается в фоновом режиме и запускается при загрузке телефона.
Восстановление
Когда пользователь забывает пароль или теряет телефон.
- Пользователь подтверждает свою личность путем предъявления действующего удостоверения личности (возможно, предоставленного правительством) соответствующему органу власти.
- Сервер запрашивает у клиента создание безопасного канала. Клиент повторно подключается к серверу, представляя токен, зашифрованный с помощью мастер-ключа.
- Клиенты предъявляют серверу запрос, запрашивая «Rescue Code». Это может быть показано в веб-интерфейсе.
- Пользователь представляет «Спасательный код» на сервер
- Клиент сопоставляет код восстановления, представленный сервером, с тем, который хранится, а затем код успеха отправляется на сервер.
- Теперь клиент может выполнять конфиденциальные операции от имени пользователя.