Я хочу хранить в Amazon S3 много файлов для своего приложения. У меня есть возможность использовать шифрование на стороне сервера или на стороне клиента или и то, и другое.
Под шифрованием на стороне сервера я подразумеваю использование функции шифрования Amazon S3 для шифрования файлов. И под шифрованием на стороне клиента я имею в виду, что я буду шифровать файлы в своем приложении, а затем сохранять их в S3.
Какой из них предпочтительнее, поскольку оба метода имеют разные преимущества, например, шифрование на стороне сервера будет хорошо обрабатывать, поскольку Amazon использовала полную оптимизацию, но при шифровании на стороне клиента я не зависим от Amazon в будущем. Я могу легко перенести свой файл в другой файл. система, и мое шифрование останется нетронутым. Также, если кто-то получит доступ к моему пользовательскому интерфейсу Amazon S3, он сможет легко загрузить расшифрованные файлы с помощью метода шифрования на стороне сервера. Кроме того, за шифрование Amazon S3 приходится платить.
Пожалуйста, помогите мне решить это.
Чтобы использовать шифрование на стороне клиента, вы должны предоставить ключ шифрования каждому клиенту, выполняющему загрузку, и ключ дешифрования каждому клиенту, выполняющему загрузку. И убедитесь, что ни один из этих ключей никогда не просочился и не потерян. Вы можете это гарантировать? — person Pranav schedule 16.09.2020
@Parsifal Для клиента Amazon S3 это мое приложение. Шифрование на стороне клиента означает, что шифрование будет выполняться в моем приложении, а ключ шифрования находится в моем приложении. Это не имеет ничего общего с загружаемым пользователем файлом. Пользователь просто загружает файл, шифрование будет выполнено на моем сервере приложений и для хранения он будет отправлен в Amazon S3. — person Pranav schedule 16.09.2020
Под клиентом я подразумеваю клиента S3, которым в данном случае является ваш сервер приложений. Как вы планируете управлять ключами шифрования / дешифрования для него? — person Pranav schedule 17.09.2020
Если вы используете шифрование на стороне сервера, ваши данные будут защищены только политиками. Если вы случайно дадите кому-то доступ (или кто-то украдет ваши ключи доступа к AWS), не имеет значения, хранится он в зашифрованном виде или нет.
Используя шифрование на стороне клиента, вы управляете ключом, и без него никто не сможет получить доступ к содержимому файлов. Если вы испортите политики, ключи защитят ваши данные.
Спасибо @Tamas за ответ — person Pranav; 16.09.2020
Шифрование на стороне сервера — самое простое.
Он обеспечивает шифрование в состоянии покоя, но S3 управляет всем за вас. Когда к объекту обращается кто-то с соответствующими разрешениями, S3 автоматически расшифровывает объект и предоставляет содержимое. (Запросы также выполняются через HTTPS, поэтому содержимое объекта при передаче будет зашифровано.)
Существует несколько вариантов шифрования на стороне сервера:
При использовании KMS для шифрования удостоверение, осуществляющее доступ к объекту, также требует разрешения на использование ключа KMS. Итак, это дополнительный уровень безопасности, который вы, возможно, захотите использовать.
Если вы беспокоитесь о том, что кто-то незаконно получит доступ к вашей учетной записи, вам следует подумать об использовании Многофакторной аутентификации для предотвращения несанкционированного доступа.
Спасибо, @John. Один небольшой вопрос: если в будущем я захочу переключиться на любое другое хранилище файлов, мне нужно будет расшифровать и загрузить все файлы и перейти в другую точку хранения. Затем мне нужно разработать шифрование на моей стороне. Пожалуйста, поправьте меня по этому поводу. — person Pranav; 16.09.2020
Шифрование на стороне сервера выполняется автоматически. Расшифровывать не нужно — все происходит автоматически и прозрачно. Если вам разрешен доступ к объектам, вы всегда будете видеть только незашифрованную версию. В состоянии покоя он зашифрован, но автоматически расшифровывается при доступе к контенту. Следовательно, вам просто нужно будет загрузить контент. — person Pranav; 16.09.2020