问题标签 [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.
aes - Java 卡中的 AES-CMAC
是否有在 Java 卡中进行AES CMAC加密的正确方法?
经过研究,我遇到了一个障碍,我找不到任何具有AES CMAC加密的 Java 卡示例或样本。有什么方法或至少可以在 Java 卡上进行AES CMAC加密
ios - iOS 上的 CMAC-AES
我正在将 Android 应用程序转换为 iOS。Android 版本使用 CMAC-AES 加密,但我找不到适用于 iOS 的 CMAC。有谁知道图书馆或可以给小费吗?我不熟悉密码学,所以我有点乱。
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。
这是我的代码:
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。
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
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 和相互身份验证。
(额外信息)
3-pass-authentication:https ://prezi.com/p/rk6rhd03jjo5/3-pass-mutual-authentication/
密钥存储硬件:https ://www.microchip.com/design-centers/security-ics/cryptoauthentication
python - CMAC算法的Python实现不起作用
我需要为我的论文实现 CMAC 算法,但是我得到了错误的结果,并且根本无法识别错误在哪里。
子密钥 K1 的生成和 AES 加密算法,以及异或和 m_i 的组成都是正确的,我已经仔细检查过。
有人可以帮我吗?
只有一个大小为 128 位(16 个八位字节)的块,因此 'flag' 为真且 'n' = 1
我试图复制的步骤是:
我的实现是这样的:
cmac - 这个 CMAC 计算有什么问题?
我有一个 CMAC 计算示例,我想在 Python 中重现它,但是我失败了。该示例如下所示:
预期的(截断的)CMAC 看起来像这样(注意:截断意味着每隔一个字节被丢弃)
因此,我尝试使用以下代码重新制定此示例:
我的函数generate_cmac()
适用于其他情况,为什么不适合这个例子呢?
(如果有人好奇,这个例子来自本文档第 18 页/表 6)
编辑:成功的 cmac 计算示例如下:
python - Pycryptodome 生成错误的 CMAC
根据 PyCryptodome 文档中给出的示例
它生成 AES CMAC,但是当我尝试来自RFC4493的测试向量时,我得到了错误的 CMAC。例如,来自 RFC4493 的测试向量是:
但是当我尝试相同的密钥和消息时
我得到以下输出
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 加密库(我不完全理解代码)错误之间。
谁能帮我弄清楚这两者中哪一个是真的?如果我的代码有误,请帮我修复它。