问题标签 [hkdf]

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 回答
4756 浏览

java - HKDF 是否在 Java 密码体系结构中实现?

在我正在编写的应用程序中,我需要执行 HKDF 以从一个密码中派生两个不同的密钥。在 Java 中搜索有关如何使用它的示例时,我发现了这两个:

在这两种情况下,HKDF 都是在 JCA 提供的 HMAC 之上实现的。我还没有详细阅读这些实现,但我想知道,这不是在 JCA 中的任何地方实现还是在它本身中实现?我必须实施自己的 HKDF 吗?

最让我担心的部分是在应用 info 参数时犯了一个错误。它看起来不平凡和关键。

0 投票
2 回答
796 浏览

hsm - 使用 HSM 和 HKDF 生成 AES 密钥

我们有安全网 HSM。我们的系统要求我们生成 AES-256 密钥。我应该采取哪种方法?

  1. 指示 HSM 生成 AES 密钥。

  2. 使用 HSM 创建输入密钥材料并使用 HKDF 派生密钥。

HSM 应该能够生成高质量的密钥。是否需要第二种方法?

0 投票
0 回答
642 浏览

android - HKDF Android 实现

我正在尝试与 HKDF 实现密钥交换以进行密钥派生。我已经看过HKDF 在 Java Cryptography Architecture 中实现了吗?提出问题 ,但是,我仍然没有得到我应该得到的东西。

在 python 中,我有以下(src)

这适用于 python 和 iOS(我也在那里实现了它)。但是,Android 在最后一步给我带来了麻烦。有人可以详细说明适用于 Android 的 HKDF 吗?

编辑:现有的 Kotlin 代码

谢谢!

0 投票
1 回答
291 浏览

c# - 如何将 HKDF 与 ECDiffieHellmanCng 一起使用

我正在尝试使用 ECDiffieHellmanCng 类在桌面和通过 BLE 连接的设备之间执行密钥交换操作。系统规范要求使用 HKDF 来派生密钥。对于 ECDiffieHellmanCng 类中的散列函数,这似乎不是一个选项。有没有办法做到这一点?然后我需要获取生成的密钥并将其传递给 AesCng 对象。

0 投票
1 回答
550 浏览

openssl - 如何使用 OpenSSL 1.1.1 实现 HDF-Extract?

我正在尝试实现部分 QUIC RFC,他们注意到:

我只是想知道,如何将其映射到此处:https ://www.openssl.org/docs/man1.1.1/man3/EVP_PKEY_CTX_set_hkdf_md.html

我明白了:

EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY 在这种模式下调用 EVP_PKEY_derive(3) 将只执行提取操作。返回的值将是中间固定长度的伪随机密钥 K。

必须在派生密钥或发生错误之前设置摘要、密钥和盐值。

但我在这里很困惑。我可以看到如何设置模式、算法、盐,但我不知道在哪里设置client_dst_connection_id.

0 投票
1 回答
174 浏览

java - 使用 javacardx.security.derivation 的 Javacard 密钥派生 (hmac)

我试图弄清楚 javacard 派生函数是如何工作的,我必须承认我对如何设置函数感到迷茫。

我认为 DerivationFunction 可用于派生密钥,并且使用 ALG_KDF_HKDF 我可以指定所需的基于 HMAC 的密钥派生。但是,我不明白我如何设置秘密和盐。KDFHmacSpec 接口仅指定 getter。它没有指定如何设置这些值。到目前为止,我无法弄清楚如何设置这些。

我想用它来生成 XOR 密钥(最好指定长度),基于一个秘密和一些随机的公共值。

这适用于 javacard 3+。

0 投票
1 回答
560 浏览

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

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

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

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

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

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

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

0 投票
0 回答
67 浏览

cryptography - 实现双棘轮算法

我正在尝试使用它作为我的指南从头开始实现双棘轮算法,但是我不是加密专家,因此有些事情还不清楚:

  1. 该指南引用了“根键” RK,并将 a 的输出DH作为函数的参数KDF_RK(rk, dh_out),但我需要知道这个根键是什么以及第一次必须如何初始化它。
  2. 我看到了,KDF_RK(rk, dh_out) 并且KDF_CK(ck)基于 HKDF 加密函数:有人可以画图让我更好地理解这些函数是如何工作的吗?以伪代码方式模拟 Alice 和 Bob 之间的典型执行就足够了。

谢谢

0 投票
1 回答
141 浏览

c++ - 未声明 Openssl 'EVP_KDF'

openssl中,我想运行从 HKDF 提取文档中获得的以下代码示例:

但我不知道这些标头是否已更改或是否存在其他问题。当我编译为 g++ test.cpp -g -lssl -lcrypto.

输出是,

它以这种方式遵守,并且在此编译单元中没有看到任何类型。

0 投票
1 回答
51 浏览

python - 使用 pycryptodome 计算 ecies hkdf 对称密钥

背景:我正在从google tink 库制作一个 python 版本的paymentmethodtoken来处理 gpay 消息。为此,我只使用 python 和 PyCryptodome。

话虽如此,我目前正在尝试实现与kem 功能等效的功能

python中的等价物:

据我所知,google tink computeEciesHkdfSymmetricKey (代码) 根本不像PyCryptodome HKDF 那样工作。我的问题是,pycryptomde 或其他库中是否存在与 computeEciesHkdfSymmetricKey 等效的内容,如果没有,是否可以重现相同的行为?