Я являюсь автором настольного приложения, которое имеет интегрированный модуль обновления, который может загрузить новую версию приложения через Интернет. Я хотел бы аутентифицировать загруженный файл, чтобы загрузчик мог убедиться, что новый файл был создан мной и не был изменен кем-то другим. Аутентификация сервера на основе SSL не является вариантом, поскольку файлы размещаются на стороннем сервисе, которому я не доверяю.Проверка загрузки в пользовательском обновлении на основе Qt
Я подумал о следующей процедуре:
С моей стороны:
- Hash загрузка с помощью SHA512
- шифровать хэш с помощью закрытого RSA ключа
- Сделать зашифрованного хэш общественности наряду с объявлением новой версии
Обновление на клиенте п выполняет следующие функции:
- Скачать файл (Дух)
- дешифровать хэш из нового анонса обновления с помощью жёстко прописанного открытого ключа, соответствующего моего частного один
- Сравните расшифрованный хэш с реальными один из Загруженный файл
Есть ли недостатки в этом рабочем процессе, предполагая, что я изначально могу предоставить неизмененную версию обновления с открытым ключом внутри клиента?