我们要包装/封装
在每种情况下,我们都希望允许用相同的密钥包装/封装多个密钥(在案例2中可能不需要,在第3种情况下可以避免)。我们还想把数字1和2结合起来,也就是说,用非对称键(S)和对称键(S)来封装/封装密钥。
数字3是密钥封装的标准情况,而在第1和第2种情况下,我认为密钥包装是首选方法。
我们使用Python,而pyNaCl (“”)似乎是一个不错的库。不过,我愿意听取其他建议。
然而,pyNaCl/pyNaCl似乎不提供密钥包装或密钥封装的方法。我假设后者被隐式地用于“密封盒”(大数据的非对称加密)。这还不够,因为我们希望封装多个非对称键的单键(并且能够在以后添加更多的键)。
我们是否应该尝试在给定方法的基础上构建密钥封装和密钥包装?如果是这样的话,是怎么做的?
我们甚至可以使用对称密钥加密密钥,也可以使用密钥封装。
通常,我倾向于避免为密钥封装和密钥包装编写自己的方法。
发布于 2022-12-10 14:54:12
crypto_kdf()派生两个密钥:一个用于身份验证(让我们称之为kH),另一个用于加密(让我们称之为kE)。h=crypto_generichash(kH, key_to_be_wrapped) .这将既是加密现在和身份验证者。wk=crypto_stream_xor(kE, h, key_to_be_wrapped)。返回h和wk的级联。若要展开包装,请计算Kh和Ke,然后:
crypto_stream_xor(kE, h, wk)返回包装好的秘密。h,如果它与包装键中的不匹配,则返回一个错误h可以被截断为16个字节,但在这种情况下,在调用crypto_stream_xor()时添加一些填充。
https://security.stackexchange.com/questions/266915
复制相似问题