问题标签 [kdf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
174 浏览

ios - ios SecKeyCopyKeyExchangeResult sharedInfo 参数

我试图使用 SecKeyCopyKeyExchangeResult 函数从我的本地私钥获取共享密钥并接收服务器的公钥。共享密钥已成功生成,我能够使用 AES 加密解密传入的消息 不久前,服务器开发人员决定将 KDF 添加到密钥生成流程中。我开始研究如何在 iOS 端做到这一点,并发现有一个特殊的参数static let sharedInfo: SecKeyKeyExchangeParameter 要说文档很差,什么都不说......只有我发现的是标题中的这个描述

@constant kSecKeyKeyExchangeParameterSharedInfo 包含 CFDataRef 以及 KDF(密钥派生函数)的附加共享信息。

如果有人处理过这个问题,请帮忙。服务器使用此参数在 scala 上生成 KDF

iOS端代码

0 投票
0 回答
47 浏览

python-3.x - 用于 nuki smartlock 2.0 的 pynacl crypto_core_hsalsa20

我需要 crypto_core_hsalsa20 函数来为我的NUKI 增加密钥。

双方使用函数 dh1 a 计算 DH Key k。密钥 0DE40B998E0E330376F2D2FC4892A6931E25055FD09F054F99E93FECD9BA611E 8. 双方使用函数 kdf1 a 从 k 导出一个长期共享密钥 s。共享密钥 217FCB0F18CAF284E9BDEA0B94B83B8D10867ED706BFDEDBD2381F4CB3B8F730

4.2 密钥推导函数kdf1

用于从 dh1 计算的共享密钥中导出一个长期密钥

我已经用 nacl.publik.Box (=dh1) 函数计算了 DH Key k。

有人可以告诉我如何在 pynacl 中使用 kdf1 函数吗?谢谢!

0 投票
1 回答
560 浏览

cryptography - 使用 HKDF 的目的是什么?

我看到了一个通过以下步骤生成 AES 密钥的代码片段:

  1. 生成一个 16 字节的随机值数组。

  2. 将 HKDF 应用于密钥以生成新的加密密钥。

我很困惑为什么我们需要两个步骤。SecureRandom 似乎为密钥提供了足够的熵,对吧?两个问题:

  1. 我们可以key直接使用 1) 进行 AES 加密吗?
  2. 2)中的空盐有什么影响?我正在考虑可能额外的步骤 2)是为了保护被泄露的密钥(只是一个猜测)。如果是,空盐是否使目的无效?因为我们可以预先计算 HKDF 的输入密钥材料与其输出之间的联系。

HKDF 声称盐是可选的,尽管使用随机盐确实可以增强它。我很困惑什么时候需要 HKDF(尤其是没有盐)。如果我们已经有一个具有足够熵的密钥,为什么我们需要它?如果我们有一个没有足够熵的弱密钥,HKDF(没有盐)如何帮助这种情况?我想象攻击者可以预先计算出弱密钥与生成密钥之间的映射,对吧?

0 投票
1 回答
118 浏览

python - 将 Python PBKDF2HMAC 转换为 Ruby

我在 python 中有以下内容,并希望将其转移到 ruby​​。但我不让它工作。原始来源来自这里:https ://github.com/HurricaneLabs/splunksecrets/blob/177d350a9164791c66139d11b4c63f5db83710b6/splunksecrets.py#L112

我的“秘密”是:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Python

红宝石

开始和结束在某种程度上是相同的,但中间根本不匹配。我从 python 字符串中删除了 \x 以更好地阅读它。

0 投票
0 回答
101 浏览

aes - 在 Cryptojs 中:AES 如何从密码中生成密钥?

在 CryptoJS 的 wiki 中,它指出:

CryptoJS 支持 AES-128、AES-192 和 AES-256。它将根据您传入的密钥的大小来选择变体。如果您使用密码,那么它将生成一个 256 位密钥。

最后一句话说如果我使用密码,“它”将生成一个 256 位密钥。所以我的问题是:AES 函数如何从密码中生成密钥?它是否使用KDF类似的标准PBKDF2?还是它使用了KDF只存在于 AES 函数中的自定义?

0 投票
1 回答
147 浏览

python - 在 Python 中使用预主密钥计算 TLS PRF 主密钥

我有以下信息:

使用上面的,我需要计算主密钥和密钥块。正确答案应该是:

我的代码如下:

但我最终用这段代码得到了错误的答案:

有人看到我在哪里出错了吗?

0 投票
1 回答
178 浏览

python - 为什么 python 关键派生函数“需要”一个可选参数:后端?

我正在尝试使用 python 的密码库来生成与密码相关的密钥:

这两个函数都从文档中复制出来:https://cryptography.io/en/latest/hazmat/primitives/key-derivation-functions/ 对于 Scrypt 和 PBKDF2HMAC 后端都被列为可选参数但是当我运行这些函数时我长大了:

模块是否收到了现在需要后端的更新,或者我做错了什么,当导入默认后端并使用这些或仅使用 None 作为后端参数时,我收到后端不支持给定算法的错误。

0 投票
0 回答
29 浏览

bouncycastle - 如何使用充气城堡在 Java 中进行三重 Diffie-Hellman(3 - DH) 密钥协议?

关于如何进行 Diffie-Hellman 密钥协商来计算共享秘密的例子很多。但是,我找不到任何关于如何使用充气城堡(或者说实话提供的任何安全性)在 java 中进行 3DH 的示例。我发现的所有内容,阅读都是抽象理论,而不是实际的实际实现/示例。

更具体地说,如何将三个单独计算的 DH 协议结合起来?Signal 的 x3dh 协议协议是一个很好的参考来源:

伪代码

或者:

准确地说,我正在寻找SK = KDF(DH1 || DH2 || DH3)已经在充气城堡中计算出 DH1 DH2 和 DH3 的方法?IE 如何将 secret1、secret2 和 secret3 组合为 HKDFParameters 的输入密钥材料或种子?