同样是HMAC初始化,凭什么你可以不传算法标识?"

admin 2026-10-17 11:50:14 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

同样是HMAC初始化,凭什么你可以不传算法标识?

原创

利刃信安
利刃信安

利刃信安

2026年8月5日 08:00
北京

在小说阅读器读本章

去阅读

同样是HMAC初始化,凭什么你可以不传算法标识?

01

0016 SKF

带密钥的杂凑运算初始化

  • 原型

ULONG DEVAPI SKF\_HMACInit(HANDLE hKey,HANDLE \*phHMac)

  • 功能描述

三步式带密钥的数据杂凑运算的第一步。

  • 参数

hKey [IN] 密钥句柄。

phHmac [OUT] HMAC对象句柄。

  • 返回值

SAR\_OK:成功。

其他:错误码。

02

0018 SDF

带密钥的杂凑运算初始化

  • 原型

LONG SDF\_HMACInit(HANDLE hSessionHadle,HANDLE hKeyHandle,ULONF uiAlgID)

  • 功能描述

三步式带密钥的数据杂凑运算第一步。

  • 参数

hSessionHandle [in] 与设备建立的会话句柄

hKeyHandle [in] 指定的密钥句柄

uiAlgID [in] 指定杂凑算法标识

  • 返回值

0 成功

非0 失败,返回错误代码

03

正确调用

0016 SKF

...c

/\ 第1步:导入会话密钥(7.6.19),在此用 SGD\_SM3\_HMAC 标记 HMAC 密钥用途 \/

rv = SKF\_ImportSessionKey(hContainer, SGD\_SM3\_HMAC,

(ECCCIPHERBLOB \)pbWrapedData, ulWrapedLen, \phKey);

/\ 第2步:带密钥的杂凑运算初始化(7.6.36),无需算法参数 \/

rv = SKF\_HMACInit(hKey, \*phHMac);

/\ 第3步:带密钥的单包杂凑运算(7.6.37)或带密钥的多包杂凑运算 + 带密钥的杂凑运算结束(7.6.38 + 7.6.39) \/

rv = SKF\_HMAC(hHMac, \pbData, ulDataLenth, \pbHashData, \*pulHashLen);

涉及会话密钥算法标识的函数包括:

...Code

RSA 生成导出会话密钥 SKF\_RSAExportSessionKey

ECC 生成并导出会话密钥 SKF\_ECCExportSessionKey

ECC 生成密钥协商参数并输出 SKF\_GenerateAgreementDataWithECC

ECC 产生协商数据并计算会话密钥 SKF\_GenerateAgreementDataAndKeyWithECC

导入会话密钥 SKF\_ImportSessionKey

SM9 生成密钥协商参数并输出 SKF\_SM9GenerateAgreementData

SM9 产生协商数据并计算会话密钥 SKF\_SM9GenerateAgreementDataAndKey

SM9 密钥解封装 SKF\_SM9KeyDecapsulate

0018 SDF

...c

/\ 第1步:生成会话密钥并用密钥加密密钥加密输出,同时返回密钥句柄。加密模式为ECB模式(SDF 的密钥句柄不绑定用途) \/

rv = SDF\_GenerateKeyWithKEK(hSessionHandle, uiKeyBits, uiAlgID,

uiKEKIndex, \pucKey, \puiKeyLength, \*phKeyHandle);

/\* 第2步:带密钥的杂凑运算初始化(6.6.2)

\ uiAlgID 指定杂凑算法标识:SGD\_SM3 \/

rv = SDF\_HMACInit(hSessionHandle, hKeyHandle, SGD\_SM3);           /\ 指定杂凑算法标识 \/

rv = SDF\_HMACUpdate(hSessionHandle, \pucData, uiDataLenth);       /\ 6.6.3 \*/

rv = SDF\_HMACFinal(hSessionHandle, \pucHMac, \puiHMacLength);     /\ 6.6.4 \/

带外部密钥的杂凑运算初始化(GM/T 0018-2023 §6.8.13):密钥不落设备、没有句柄时,算法标识同样在 init 显式传入:

...c

LONG SDF\_ExternalKeyHMACInit(HANDLE hSessionHandle, ULONG uiAlgID,BYTE \*pucKey, ULONG uiKeyLength);

我是利刃信安,网络安全和密码安全、数据安全领域的小白。

如果你觉得今天这篇有收获,欢迎点赞、在看、转发三连,我们下篇见

点赞

在看

转发

如有疑问,请联系:Mannix6


同样是HMAC初始化,凭什么你可以不传算法标识?" 网络安全文章

同样是HMAC初始化,凭什么你可以不传算法标识?"

本文对比了国密SKF与SDF标准HMAC初始化接口的差异。SKF在导入密钥时已将算法标识绑定至句柄,HMACInit无需算法参数;而SDF密钥句柄未绑定算法,必须在初始化时显式传入算法标识。开发者对接这两类密码设备API时需注意此底层设计差异,按规范正确传递参数以避免调用异常。
全球安全动态日报|20260805|早" 网络安全文章

全球安全动态日报|20260805|早"

这份日报汇总了2026年8月4日全球安全动态,涵盖npm供应链攻击、AI工作流漏洞、远程访问木马传播及关键漏洞利用。主要发现包括Keyv相关npm蠕虫污染数百软件包、假冒更新安装ScreenConnect、谷歌因恶意Issue删除AI工作流、cPanel严重漏洞、DOUBLECUP利用ClickFix传播RAT、CISA将N-able漏洞加入KEV、18个恶意npm包投递RAT、Google密码管理器攻击及INC勒索软件利用SonicWall漏洞。建议关注供应链安全、AI工作流安全及及时修补已知漏洞。
评论:0   参与:  0