Мы создаем мобильное приложение, которое требует хранения зашифрованных файлов на устройстве и последующей загрузки его на сервер.Только сервер должен иметь возможность дешифровать его, и если устройство скомпрометировано, файлы не должны быть дешифрованы.
Я изучал использование шифрования с открытым ключом для этой цели, однако я читал в некоторых устанавливает , что использование асимметричных ключей для шифрования больших файлов неэффективно, и шифрование с использованием конвертов является лучшим подходом.Шаги для шифрования / дешифрования конверта:
- Клиентское устройство (C) получает открытый ключ сервера (S)
- C создает симметричный ключ шифрования данных (DK)
- C шифрует файл с использованием DK
- C шифрует DK с помощью открытого ключа S
- C загружает файл в S как с зашифрованным файлом, так и с зашифрованным DK
- S расшифровывает зашифрованный DK с помощьюэто закрытый ключ
- S, который расшифровывает файл, используя DK
Мой вопрос: правильны ли вышеуказанные шаги и есть ли библиотеки, которые реализуют этот поток? Шифрование AWS SDK предоставляет эту функцию, однако нам необходимо реализовать ее в мобильном приложении, которое не может подключиться к AWS
и использовать его *