Amazon SSE-S3 密钥轮换如何工作?

2024-01-12

我正在尝试围绕 Amazon 的服务器端加密选项进行思考,以便在我的应用程序上传文件时开始要求 S3 加密我的静态数据。

到目前为止,AWS 管理的加密密钥选项听起来像是我正在寻找的(Model C https://media.amazonwebservices.com/AWS_Securing_Data_at_Rest_with_Encryption.pdf):

但随后它说

作为额外的保护措施,该密钥本身是用 定期轮换 Amazon S3 独有的安全主密钥 存储在 AWS 控制下的单独系统中。

这种轮换是如何运作的?这是否意味着每次 AWS 轮换其密钥加密密钥时,他们都必须重新加密每个密钥Data Key存储在S3中???

这对我来说似乎很疯狂,当我试图说服我的老板这是一个好主意时,我不想听起来很疯狂:)


对于您上传的每个对象,都会生成一个新的加密密钥,并在将对象存储到磁盘之前用于对其进行加密。

将对象加密存储意味着拥有存储在磁盘上的原始数据的人在计算上无法对其进行解密......但是,当然,拥有该密钥的任何人都可以解密它,因此必须存储密钥安全地以相对无用的形式,这是通过使用主密钥对它们进行加密来完成的。

要破坏存储的对象,您必须拥有该对象的特定加密密钥......但即使您拥有它,它也是无用的,因为它也被加密了。要解密它,或者至少让它代表您使用它,您必须拥有主密钥,或者与控制主密钥并可以代表您使用它的实体具有信任关系。

当然,到目前为止,我所做的一切都是显而易见的。

加密密钥本身很小,每个只有几十个字节。当主密钥轮换时,对象特定的加密密钥将使用旧密钥解密,并使用新密钥重新加密。新版本被存储,旧版本被丢弃。

由于密钥很小,因此如果对象本身被解密并重新加密,这并不是所需的大量操作...但当主密钥被解密时,仅对每个对象的加密密钥进行解密和重新加密。旋转。

可以对公寓大楼进行一些类比,其中钥匙存储在公共密码箱中,其中改变密码箱锁将通过限制对公共密码箱的访问来限制对单个公寓钥匙的访问,从而限制将来对单个公寓的访问。这个类比不成立,因为物理钥匙很容易被复制,等等……但很明显,在这个插图中,改变密码箱锁(相对简单的操作)与改变一个或多个公寓的锁(一个或多个公寓)无关。更实质性的操作)。

最重要的是,在这种情况下,他们创建一个新的密钥来加密/解密您上传的每个对象,然后以加密形式存储该密钥......定期且对您透明地,他们更改该密钥的存储表示形式作为预防措施的关键。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Amazon SSE-S3 密钥轮换如何工作? 的相关文章

  • AWS CodeBuild - 如何跳过构建

    我的构建是在每次推送到存储库和每次拉取请求时触发的 因此 CODEBUILD SOURCE VERSION 看起来像 pr 8 或 4570d2e7158cfef687af8da31d1ffec7b02e5ca3 我只希望为 pr 分支执行
  • 保护移动连接 - 存储秘密和密钥

    感谢您花时间阅读本文 我是一名年轻的开发人员 在 Web 项目和服务器端编码方面拥有一些专业经验 但我现在正在构建我的第一个移动应用程序 经过在线深入研究后 我还没有能够澄清我关于保护移动应用程序数据传输的一些问题 这是我认为我理解正确的
  • 如何加密捆绑的文本/json 文件?

    我的 iOS 应用程序捆绑了几个文件 现在 如果有人下载该应用程序并访问 ipa 文件 他就可以轻松阅读它们 我想让事情变得更难 您知道有关该主题的任何资源吗 我想我需要一个加密库 以及编码文件的构建脚本中的一些脚本 当然 我知道有人可能会
  • 穷人序列号生成方案

    我想得到一些简单的方案 算法 用于根据一些唯一的硬件ID CPU ID或以太网MAC地址或硬盘序列号 生成序列号 我希望方案仅在一个方向上工作 因此客户端计算机上的应用程序可以验证序列号但不能生成序列号 所以破解起来并不简单 现在很可能大多
  • 如何在 RTMP 流中嵌入 pic_timing SEI 挂钟时间码?

    我需要将我的桌面流式传输到 AWS MediaLive 服务 并且根据要求 我必须在流中包含挂钟时间码 AWS 支持人员善意地通知我 对于 h 264 编码流 我需要提供时间码作为 pic timing SEI 消息 我在 Windows
  • AWS CloudWatchLog 限制

    我正在尝试找到集中式解决方案来将我的应用程序日志记录从数据库 RDS 中移出 我本想使用 CloudWatchLog 但注意到 PutLogEvents 请求有限制 PutLogEvents 请求的最大速率为每秒 5 个请求 每个日志流 即
  • Jquery 文件上传 - 如何限制上传的文件数量

    我正在尝试从 blueimp 进行 Jquery 文件上传 该文档说我应该能够使用 maxNumberOfFiles 设置限制要上传的文件数量 然而 这似乎不适用于我的情况 其他诸如acceptFileTypes loadImageMaxF
  • H2数据库:如何进行加密保护,而不暴露文件加密密钥

    我们在服务器模式下使用Java H2数据库 因为我们不希望用户访问数据库文件 为了对数据库文件添加更多保护 我们计划使用 AES 加密 将 CIPHER AES 添加到数据库 URL 以防存储被盗 但是 每个用户在连接时还需要提供文件保护密
  • iOS 目标 c 中的 AES/CBC/PKCS5Padding 结果与 Android 不同

    我在 Android 应用程序中使用 AES CBC PKCS5Padding 代码就像 private static String TRANSFORMATION AES CBC PKCS5Padding private static St
  • 将 CSV 复制到 Amazon RDS 托管的 Postgresql 数据库

    我有一个使用 Amazon 的 RDS 服务托管的数据库 我正在尝试编写一个 Web 服务来更新所述数据库 我遇到的问题是它不允许我使用 COPY 命令 因为我收到此错误 错误 必须是超级用户才能复制到文件或从文件复制 我正在使用我为数据库
  • 使用 Python 从 AWS S3 下载文件

    我尝试使用以下代码将文件从 Amazon S3 存储桶下载到本地 但收到错误消息 无法找到凭证 下面给出的是我编写的代码 from boto3 session import Session import boto3 ACCESS KEY A
  • AWS CLI s3 复制失败并出现 403 错误,尝试管理用户上传的对象

    尝试将文件从 S3 存储桶复制到我的本地计算机 aws s3 cp s3 my bucket name audio 0b7ea3d0 13ab 4c7c ac66 1bec2e572c14 wav fatal error An error
  • 如何将 RedShift 上的表卸载到单个 CSV 文件?

    我想将一个表从Amazon RedShift迁移到MySQL 但是使用 unload 会生成多个数据文件 这些数据文件很难直接导入到MySQL中 有什么方法可以将表卸载到单个 CSV 文件中 以便我可以将其直接导入到 MySQL 中吗 为了
  • 解密 TLS 1.2 AES-GCM 数据包

    我正在开发一个 Java 程序来解密TLS 1 2正在使用的会话TLS RSA WITH AES 128 GCM SHA256密码 我使用wireshark 录制了一个测试会话 这大师秘密是已知的 No Time Protocol Leng
  • MD5 哈希怎么可能无法“解密”呢? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 MD5 哈希值不可逆 https stackoverflow com questions 330207 how come md5 hash values are not reversible
  • 使用 C# 和 .NET Core 在 AWS Cognito 用户池中进行用户管理

    如何使用 C 和 NET Core 3 x 管理 AWS Cognito 用户池中的用户 在文档中找不到有关它的任何内容 Attilio Gelosa 的原创文章 我写这篇文章是希望对其他人有帮助 我必须阅读一页又一页的文档 并从 AWS
  • 为什么 dagger 被认为比 Guice 更适合 AWS lambda 实现?

    我知道 dagger 通过生成代码在编译时创建注入 因此它的性能比 Guice 更好 Guice 在运行时执行注入 但特别是对于 lambda 的情况 我看到在多个地方都提到 Dagger 是首选 是因为冷启动问题吗 由于lambda的冷启
  • CryptoJS 和 Pycrypto 一起工作

    我正在使用 CryptoJS v 2 3 加密 Web 应用程序中的字符串 并且需要在服务器上使用 Python 对其进行解密 因此我使用 PyCrypto 我觉得我错过了一些东西 因为我无法让它工作 这是JS Crypto AES enc
  • AWS Java SDK 中 DynamoDB v2 的迁移详细信息?

    有没有人对新的命名空间进行了更改 com amazonaws services dynamodbv2 以及 AWS Java SDK 1 4 2 及更高版本 中 DynamoDB 的接口 本地二级指数的发布显然需要根据1 4 2 发行说明
  • Amazon S3:奇怪的错误 - “有时”签名不匹配,有时确实如此

    我正在为销售人员开发代码 我们正在使用 Appexchange 的 Force com for Amazon Web Services 应用程序 该应用程序由亚马逊提供 我正在计算机上从 Amazon S3 下载文件 有时我会收到下面提到的

随机推荐

  • 为什么spring找不到Spring Cloud Stream创建的@Source bean通道?

    我正在尝试使用 Spring Cloud Stream 来发布和使用 Kafka 消息 我一直在研究文档这里关于访问绑定通道 http docs spring io spring cloud stream docs Chelsea SR2
  • React-dnd getDecolatedComponentInstance() 不是一个函数

    我目前正在 React 中构建文件上传和排序功能 我使用了以下示例 https gaearon github io react dnd examples chessboard tutorial app html https gaearon
  • 根据距离聚合 sf 点

    当点在指定距离内时 我想创建 SpatialPointsDataFrame 的所有变量的平均值 我有一个方法可以做到这一点 但这似乎是解决问题的愚蠢方法 任何使用整洁的现代语法来做到这一点的想法将不胜感激 首先 我有一个SpatialPoi
  • 如何将此 MySQL SELECT 查询转换为 DELETE 查询?

    我想从数据库中删除某些项目 我有以下查询 SELECT FROM sheets entries WHERE entries sheetID sheets id AND sheets clientID 13 这有效 并返回 2 个结果 现在我
  • 如何锁定尚不存在的 InnoDB 行?

    如何保证我可以搜索数据库中是否存在用户名 然后将该用户名作为新行插入数据库中 而在用户名之间没有任何拦截SELECT and INSERT声明 几乎就好像我锁定了不存在的行 我想用用户名锁定不存在的行 Foo 这样我现在就可以检查它是否存在
  • 结对编程、混合 IDE 环境?

    有人有过在混合 IDE 环境中进行结对编程的团队经验吗 我是 IntelliJ 的长期用户 其他人使用 Eclipse 您可能听说过 在我看来 结对编程涉及程序员之间大量传递键盘 但每次我拿到键盘时 我都会停下来 因为我不知道还能做什么 就
  • 使用 HTTP PUT 通过 Jquery 和 Rails 3 发送 JSON

    HTTP PUT 并不完全跨浏览器 因此 Rails 我使用的是 Rails 3 支持使用 POST 并传递 method查询参数这很棒 但是在发送 JSON 时似乎不起作用 Example ajax url window location
  • 如何在 Bokeh (Python) 中绘制水平条形图

    我有这个数据 data Cities Des Moines 80 0 Lubbock 300 0 Minneapolis 85 7 Orange County 80 0 Salt Lake City 81 8 San Diego 80 0
  • Visual Studio 设计器不显示嵌入字体

    我在 Visual Studio 2013 的 C WPF NET 4 0 应用程序 特别是 Open Sans 和 FontAwesome 中使用一些自定义字体 I have 将 FontAwesome otf 和 OpenSans Re
  • 杰克逊 2.0 与球衣 1.12

    有人设法将 Jackson 2 0 与 Jersey 1 12 一起使用吗 知道这一点将会非常有趣 我们必须在所有地方使用 Jackson 1 9 x 只是因为 jersey 与 Jackson 的耦合如此紧密 据我所知 甚至 jersey
  • 我的 App Engine 控制面板中的数据存储区管理页面为空白

    我在 appspot com 上的所有应用程序中的数据存储管理页面都是空白的 我已按照说明启用它们 并且没有收到任何错误消息 只是加载了空白页面 有人可以帮忙吗 如果您使用的是 Google Chrome 并通过多个 Gmail 帐户登录
  • 模拟本地网络的低速连接

    有时我想手动测试我的 Web 应用程序 调用 Web 服务或网站或 RIA 的桌面应用程序 以查看它们在低速互联网连接 例如 56 kbps 下的行为方式 是否可以通过网络模拟比真实速度更低的速度来实现 如果是 是否也可以模拟低质量连接 例
  • 使用苹果的 auriotouch 示例计算频率

    我正在开发一个需要捕获吉他声音频率的程序 我修改了 aurioTouch 示例 以使用幅度最高的频率来输出频率 它适用于高音 但在低音弦上非常不准确 我相信这是由于泛音造成的 我研究了如何解决这个问题的方法 例如倒谱分析 但我不知道如何在示
  • 是否可以在同一个 Django 项目中拥有单独的 SQLite 数据库?

    我正在考虑为 Django 项目上的某些应用程序创建一个单独的 SQLite 数据库 但是 如果可能的话 我不想使用直接 SQLite 访问 对这些数据库的 Django 风格 ORM 访问将是理想的选择 这可能吗 谢谢 是的 低级 API
  • 从 swift 调用 Objective-C typedef 块

    我正在尝试从 swift 调用一个方法 该方法是用 Objective C 编写的单例 头文件中的块 typedef void VPersonResultBlock Person person NSError error void askF
  • 为什么 Swift 中的协议比类更好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过观看Apple提供的视频教程 似乎swift是面向协议的编程语言 并且Apple鼓励程序员使用协议而不是类 但从我个人的角度来看 我认为协议
  • Magento 购物车 API 不显示价格

    我正在尝试使用 Magento Enterprise 1 10 XML RPC API 来处理 Magento 安装之外的购物车 目录功能 我遇到的问题是当我添加到购物车时 我可以很好地连接到 API 端点 登录并检索数据 以下是我用来发现
  • 更新 Google App Engine 中的模型架构?

    谷歌建议一次将一个条目更改为默认值 http code google com appengine articles update schema html http code google com appengine articles upd
  • 为什么 WinForms/WPF 控件不在内部使用 Invoke?

    我明白为什么 GUI 控件具有线程关联性 But 为什么控件不在其方法和属性中内部使用调用 现在你必须做这样的事情才能更新TextBox value this Invoke new MethodInvoker delegate textBo
  • Amazon SSE-S3 密钥轮换如何工作?

    我正在尝试围绕 Amazon 的服务器端加密选项进行思考 以便在我的应用程序上传文件时开始要求 S3 加密我的静态数据 到目前为止 AWS 管理的加密密钥选项听起来像是我正在寻找的 Model C https media amazonweb