问题标签 [cmac]

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

aes - Java 卡中的 AES-CMAC

是否有在 Java 卡中进行AES CMAC加密的正确方法?

经过研究,我遇到了一个障碍,我找不到任何具有AES CMAC加密的 Java 卡示例或样本。有什么方法或至少可以在 Java 卡上进行AES CMAC加密

0 投票
1 回答
331 浏览

ios - iOS 上的 CMAC-AES

我正在将 Android 应用程序转换为 iOS。Android 版本使用 CMAC-AES 加密,但我找不到适用于 iOS 的 CMAC。有谁知道图书馆或可以给小费吗?我不熟悉密码学,所以我有点乱。

0 投票
1 回答
1773 浏览

c++ - 使用 mbedtls 的 AES-CMAC:未定义的参考错误

我尝试使用 mbedTLS 实现 AES-CMAC。我收到一些错误:

未定义的引用mbedtls_cipher_cmac_starts,未定义的引用mbedtls_cipher_cmac_update,未定义的引用mbedtls_cipher_cmac_finish

为什么这些功能不能解决,即使mbedtls_cipher_init并且mbedtls_cipher_setup可以?

顺便提一句。我在同一个项目下使用 mbedTLS 实现了 AES 没有问题。我使用 Eclipse Nano。

这是我的代码:

0 投票
0 回答
1041 浏览

c# - 如何在 .net 框架 4.7.1 中使用基于 AES 的 CMAC 作为 PRF 来使用 KDF 计算加密密钥?

我正在尝试使用密钥派生函数从已知的主密钥创建加密密钥。NIST 出版物 800-108 包含使用伪随机函数 (PRF) 推导密钥的建议。本文档定义了几种 KDF 模式。我正在尝试在计数器模式下使用 KDF(如第 5.1 节所述)。这(与本规范中的其他 KDF 模式一样)使用 PRF,根据第 4 节,它可以是 HMAC 或 CMAC。

我有所有的输入 K,标签。可以在计数器模式下进入 KDF 的上下文和 L。我想使用基于 AES 的 CMAC 作为 PRF。

如何使用基于 AES 的 CMAC 在计数器模式下计算 KDF 中的以下步骤(即 PRF(s, x))?

K(i) := PRF (KI, [i]2 || Label || 0x00 || Context || [L]2) 这基本上是 PRF(s, x)

我发现的唯一与 MAC 远程相关的参考是 System.Security.Cryptography.MACTripleDES。

0 投票
0 回答
446 浏览

security - 为 SHE 模块重新编程内存/密钥时,不会从 M1||M2 生成正确的 M3

我需要生成 M1、M2 和 M3 以便在 SHE 模块中重新编程安全密钥。我已经验证了我的 AES_128_ECB 函数以及我的 CMAC 函数都可以针对 NIST 测试向量正常工作。我也能够毫无问题地正确生成 M1 和 M2,但是,当我将 M1||M2 输入到我的 CMAC 函数中时,我得到的结果不是我应该根据 SHE 测试向量得到的 M3 的结果SHE 文档中的内存重新编程。

以下是 M1、M2、M3 生成过程中每个步骤的所有输入和结果:

输出 1 xor 输入 2 M2:24 1f 13 21 98 fe 8f 5e 6c cd bf 19 7c 78 96 97

这真让我抓狂。生成算法的输入数据直接取自 SHE 测试向量。根据算法,要获得 M3,我要做的就是在 M1||M2 上运行 CMAC,但我的结果与应有的不匹配。

我只能假设我错过了 M3 所需的一些额外步骤,而不仅仅是在 M1||M2 上运行 CMAC。这里有人对 SHE 模块和生成数据以重新编程密钥有任何经验吗?

尝试重新排列 M1||M2 的顺序,但没有成功

...

M3 / CMAC 结果应为: b9 d7 45 e5 ac e7 d4 18 60 bc 63 c2 b9 f5 bb 46

0 投票
2 回答
1686 浏览

authentication - 使用 NTAG 424 DNA TT 的身份验证提示

我需要在阅读器和 NFC 标签之间实施身份验证程序,但由于我在这方面的知识有限,我将感谢一些帮助,以了解一些概念。

提前原谅重写圣经,但我无法总结更多。

有许多标签系列(ICODE、MIFARE、NTAG...),但经过研究,我认为 NTAG 424 DNA 符合我的要求(我主要需要身份验证功能)。

它带有 AES 加密、CMAC 协议和 3-pass-authentication 系统,这就是我开始需要帮助的时候。

AES -> 就我而言,这是一种通过排列和映射来加密纯文本的分组密码。是一个对称标准,它不使用主密钥,而是使用会话密钥,它们是从主密钥派生的。(Q01:我不知道这些密钥存储在标签中的什么位置。密钥必须存储在专门的硬件上,但除了 MIFARE SAM 标签之外,没有标签“规范”说明这一点。)

CMAC -> 它是对 CBC-MAC 的更改,以使动态大小的消息的身份验证安全。如果数据不是机密的,则可以在纯文本上使用 MAC 来验证它们,但要获得机密性和身份验证功能,必须追求“加密比 mac”。这里也使用了会话密钥,但与加密步骤中使用的密钥不同。(Q02:CMAC 的总体观点可能是一种实现验证和保密的协议,这是我的看法,可能是错误的。)

3-pass-protocol -> ISO/IEC 9798-2 标准,标签和阅读器相互验证。它还可以使用 MAC 和会话密钥来完成此任务。(Q03:我认为这是验证标签和阅读器的所有系统的上层。“3 pass 协议”在 MAC 中中继以发挥作用,如果还需要机密性功能,则可以使用 CMAC 代替单个 MAC . CMAC 需要 AES 才能正常工作,在每一步都应用会话密钥。如果我发布了野蛮人的错误,请纠正我)

/*********/

PS:我知道这是一个与编码相关的论坛,但我肯定可以在这里找到比我更了解密码学的人来回答这个问题。

PSS:我完全不知道主密钥和会话密钥保存在 Tag 端的什么位置。是否需要将它们与主 NFC 电路一起包含在单独的硬件中?

(目标)

这是为了实现标签和阅读器之间的相互验证过程,使用 NTAG 424 DNA TagTamper 标签。(目标是避免 3º 方副本,主要是身份验证而不是消息机密性)

缺乏密码学知识并试图了解如何在此 NTAG 上使用 AES、CMAC 和相互身份验证。

(额外信息)

NTAG 424 DNA TT: https ://www.nxp.com/products/identification-security/rfid/nfc-hf/ntag/ntag-for-tags-labels/ntag-424-dna-424-dna-tagtamper-advanced -受信任物联网应用程序的安全和隐私:NTAG424DNA

ISO 9798-2: http ://bcc.portal.gov.bd/sites/default/files/files/bcc.portal.gov.bd/page/adeaf3e5_cc55_4222_8767_f26bcaec3f70/ISO_IEC_9798-2.pdf

3-pass-authentication:https ://prezi.com/p/rk6rhd03jjo5/3-pass-mutual-authentication/

密钥存储硬件https ://www.microchip.com/design-centers/security-ics/cryptoauthentication

0 投票
0 回答
103 浏览

python - CMAC算法的Python实现不起作用

我需要为我的论文实现 CMAC 算法,但是我得到了错误的结果,并且根本无法识别错误在哪里。

子密钥 K1 的生成和 AES 加密算法,以及异或和 m_i 的组成都是正确的,我已经仔细检查过。

有人可以帮我吗?

只有一个大小为 128 位(16 个八位字节)的块,因此 'flag' 为真且 'n' = 1

我试图复制的步骤是:

我的实现是这样的:

0 投票
1 回答
271 浏览

cmac - 这个 CMAC 计算有什么问题?

我有一个 CMAC 计算示例,我想在 Python 中重现它,但是我失败了。该示例如下所示:

预期的(截断的)CMAC 看起来像这样(注意:截断意味着每隔一个字节被丢弃)

因此,我尝试使用以下代码重新制定此示例:

我的函数generate_cmac()适用于其他情况,为什么不适合这个例子呢?

(如果有人好奇,这个例子来自本文档第 18 页/表 6)

编辑:成功的 cmac 计算示例如下:

0 投票
1 回答
224 浏览

python - Pycryptodome 生成错误的 CMAC

根据 PyCryptodome 文档中给出的示例

它生成 AES CMAC,但是当我尝试来自RFC4493的测试向量时,我得到了错误的 CMAC。例如,来自 RFC4493 的测试向量是:

但是当我尝试相同的密钥和消息时

我得到以下输出

0 投票
1 回答
187 浏览

javascript - javascript中的aes-cmac没有给出与python相同的结果

我正在编写代码来读取/写入 NTAG424 DNA NFC 标签。我完全在 javascript 中执行此操作,因为我希望能够在 react native 应用程序中使用它。

NTAG 424 DNA 和 NTAG 424 DNA TagTamper 功能和提示中,它们显示了您应该在每一步中获得的结果。但他们使用 python 解决方案。

输入消息是A55A0001008013C56268A548D8FBBF237CCCAA20EC7E6E48C3DEF9A4C675360F,输出(根据手册)是1309C877509E5A215007FF0ED19CA564。而我得到7CCEF6FEB32F34CA48CB685ECAA0F32C.

因为我需要能够在商业上使用此代码,所以我不能只使用任何库。

我已经尝试过这里提到的用于 Node.js 的 AES-CMAC 模块?并将代码完全重写为我自己的 AES-CMAC 算法版本。在我尝试过的那个和我制作的那个(在NIST 特别出版物 800-38B的帮助下)中,我得到了相同的结果。

现在我被困在认为我的代码错误或python 加密库(我不完全理解代码)错误之间。

谁能帮我弄清楚这两者中哪一个是真的?如果我的代码有误,请帮我修复它。