首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AES密钥包装(使用JSON加密)有什么意义?

AES密钥包装(使用JSON加密)有什么意义?
EN

Security用户
提问于 2015-02-05 17:47:42
回答 4查看 14.4K关注 0票数 15

我正在看网络加密(JWE),我对为什么要使用AES密钥包装感到有点困惑。

该文档甚至谈到使用匹配关键算法的优点

在可能的情况下,应该同时使用匹配强度的算法。例如,当AES密钥包装与给定的密钥大小一起使用时,建议在使用AES GCM时使用相同的密钥大小。如果密钥加密算法和内容加密算法不同,则这两种算法的优劣决定了有效的安全性。

本质上,我想知道您为什么要使用AES密钥包装。

示例

因此,作为一个例子比较,使用A256GCM加密算法,我需要一个256位的密钥.为了方便起见,我的钥匙将是"secret0123456789secret0123456789“,我正在编码”测试“。

DIR

使用直接(DIR)密钥算法(因此使用我的密钥作为内容密钥),我得到:

eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..Vlf_WdLm-spHbfJe.RxMPrw.5VC8Y_qSPdSubbGNGyfn6A

具体如下:

代码语言:javascript
复制
         JWE Header:  {"alg":"dir","enc":"A256GCM"}
Encrypted key (CEK):  (blank)
                 IV:  Vlf_WdLm-spHbfJe
         Ciphertext:  RxMPrw
 Authentication Tag:  5VC8Y_qSPdSubbGNGyfn6A

A256KW

将密钥包装算法与加密算法相匹配,我将使用AES 256位键,这将产生:

eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0.66xZoxFI18zfvLMO6WU1zzqqX1tT8xu_qZzMQyPcfVuajPNkOJUXQA.X5ZL8yaOektXmfny.brz-Lg.xG-EvM-9hrw0XRiuRW7HrA

具体如下:

代码语言:javascript
复制
         JWE Header:  {"alg":"A256KW","enc":"A256GCM"}                         
Encrypted key (CEK):  66xZoxFI18zfvLMO6WU1zzqqX1tT8xu_qZzMQyPcfVuajPNkOJUXQA   
                 IV:  X5ZL8yaOektXmfny                                         
         Ciphertext:  brz-Lg                                                   
 Authentication Tag:  xG-EvM-9hrw0XRiuRW7HrA                                   

据我所知,内容密钥是使用网络密钥(JWK)加密的,但实际上是这样做的:

  • 创建随机256位内容加密密钥(CEK)
  • 用这个CEK加密实际数据(和一个随机IV)
  • 用我提供的密钥加密CEK

加密的CEK、IV和加密数据都是结果JWE对象(所有base64url编码的)的一部分。

Direct会导致一个较小的有效负载通过线路发送,我认为它的加密和解密速度略快一些,因为它跳过了一步。

使用AES密钥包装会产生更高的安全性吗?如果是,为什么?如果没有,为什么要使用它而不是直接的内容加密?

EN

回答 4

Security用户

回答已采纳

发布于 2015-02-06 15:08:57

如果您需要存储大量数据,那么将密钥包装在加密层中的优点意味着,如果您以后需要更改密钥,那么您就不必对所有数据进行重新加密。您只需更改KEK (密钥加密密钥)并重新加密CEK,而不必再次传输所有密文。

例如,假设您使用JSON将数据传输到服务器以确保安全存储。您可以使用A256KW传输所有这些数据,而另一端的服务器只需存储这些数据。

也就是说,传输以下内容,然后存储服务器端:

代码语言:javascript
复制
Encrypted key (CEK):  66xZoxFI18zfvLMO6WU1zzqqX1tT8xu_qZzMQyPcfVuajPNkOJUXQA   
                 IV:  X5ZL8yaOektXmfny                                         
         Ciphertext:  brz-Lg                                                   
 Authentication Tag:  xG-EvM-9hrw0XRiuRW7HrA       

如果需要更改密钥,只需将CEK提取到客户端,使用旧的KEK解密,然后用新密钥加密CEK,然后将其发送回服务器更新所有相关记录。

仅为短期传输目的,这并不重要,它将更容易使用的直接一个较小的有效载荷。

票数 7
EN

Security用户

发布于 2016-05-27 00:18:26

KW允许您建立一个长期的秘密,但仍然使用不同的CEK为每个消息,这是重要的一些用例,但不是所有。

在使用JWE向具有不同长期密钥的多个收件人发送单个消息的情况下,这一点至关重要,因为您需要对每个收件人多次包装CEK。

JWE支持许多高级用例,但常用的是直接在双方之间加密JWT。

当我们开发JWE时,有些人只想支持KW选项,而放弃直接优化。最后,我们根据用例选择了两个选项。直接创建较小的令牌,并且更容易实现。如果你不需要KW,那就别担心。

票数 6
EN

Security用户

发布于 2015-02-06 03:29:31

使用AES密钥包装是有原因的。一旦你加密了一些东西,密钥就是弱项。所有获取数据的尝试都需要知道密钥。由于密钥和加密/解密软件没有加密,攻击者可以窃取您的密钥并使用它。这就是钥匙包装的重点,它有助于保护你的钥匙。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/80966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档