我希望有人能帮助我理解DEK和KEK是如何在外行术语中工作的。
到目前为止,我的理解是
第1部分上传的数据存储在块中。每个块都用DEK加密。DEK存储在块数据附近。
第2部分数据块的 DEK用KEK包装
Part 3 KEK存储在KMS中。
这句话来自谷歌的课程材料,真让我大吃一惊。
然后使用
将包装的数据加密密钥与此数据一起存储。
,我的大脑疯狂地回答这些问题:
g 223
发布于 2022-06-10 10:46:00
这个包装的数据加密密钥是什么?这不是第二部分中的KEK吗?
包装的DEK是用KEK加密DEK的结果。密钥加密密钥之所以被称为密钥,是因为它加密(数据加密)密钥。
如果这是第2部分中的KEK,那不应该是KMS吗?KMS存储数据吗?
不是的。顾名思义,密钥管理系统只存储密钥,特别是KEKs。
一大块数据有多少个DEK?2个DEK?
一。数据只加密一次,所以只有一个密钥。
我们(用户/客户)保留哪些密钥?
只有KEK。当使用KMS时,即使是KMS的用户也不知道这个键。
我们用哪些键存储数据?
带着包裹的德克。
下面是一个具体的例子:
数据(即明文):yellow submarine KEK (又名。主密钥):my-secret-master DEK (为每一段数据随机生成):ttlly-random-dek
密文: Base64(AES(Data,DEK)) = TJ4SLFTy0sMdvGe55QCuYQ==包装DEK: Base64(DEK,KEK)= lOEmql1JuSONZ8uLorc/vQ==
第二个操作是由KMS完成的,如果存在的话(必须这样做,因为它是唯一拥有KEK的操作,而且永远不会公开)。
你们一起存储的东西:TJ4SLFTy0sMdvGe55QCuYQ==和lOEmql1JuSONZ8uLorc/vQ==。
以及重建给定的TJ4SLFTy0sMdvGe55QCuYQ== + lOEmql1JuSONZ8uLorc/vQ==的明文
DEK: AES'(Base64'(lOEmql1JuSONZ8uLorc/vQ==),KEK) // = ttlly-random-dek明文: AES'(Base64'(TJ4SLFTy0sMdvGe55QCuYQ==),DEK)
如果有第一个操作,第一个操作由KMS完成(同样,它必须是,因为涉及到KEK )。
在上面的例子中,我方便地选择了16字节的数据和16字节的密钥,这样我就可以在分组密码模式和IVs/nonces上光彩照人。当然,在实际应用中,每个加密的IVs也必须保留。
请注意,KMS从来没有看到您的数据,它只需加密和解密微小的数量。这就是为什么我们要这么做的原因;只有你,数据的所有者才能看到它的明文(显然,假设KMS是一个诚实的方)。
https://stackoverflow.com/questions/72570215
复制相似问题