HMAC简介
HMAC的典型应用展开
编辑本段
HMAC简介
HMAC是密钥相关的哈希运算消息认证码(keyed-Hash Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
HMAC引擎提供HMAC运算作用:
(1)验证TPM接受的授权数据和认证数据;
(2)确认TPM接受到的命令请求是已授权的请求,并且,命令在传送的过程中没有被改动过。
定义HMAC需要一个加密用散列函数(表示为H,可以是MD5或者SHA-1)和一个密钥K。我们用B来表示数据块的字节数。(以上所提到的散列函数的分割数据块字长B=64),用L来表示散列函数的输出数据字节数(MD5中L=16,SHA-1中L=20)。鉴别密钥的长度可以是小于等于数据块字长的任何正整数值。应用程序中使用的密钥长度若是比B大,则首先用使用散列函数H作用于它,然后用H输出的L长度字符串作为在HMAC中实际使用的密钥。一般情况下,推荐的最小密钥K长度是L个字节。
HMAC约定的算法表示
H 代表所采用的HASH算法(如SHA-256)
K 代表认证密码
Ko 代表HASH算法的密文
B 代表H中所处理的块大小,这个大小是处理块大小,而不是输出hash的大小
如,SHA-1和SHA-256 B = 64
SHA-384和SHA-512 B = 128
L 表示hash的大小
Opad 用0x5a重复B次
Ipad 用0x36重复B次
Apad 用0x878FE1F3重复(L/4)次
HMAC运算步骤:
First-Hash = H(Ko XOR Ipad || (data to auth)) Second-Hash = H(Ko XOR Opad || First-Hash) (1) 在密钥K后面添加0来创建一个字长为B的字符串。(例如,如果K的字长是20
字节,B=64字节,则K后会加入44个零字节0x00)
(2) 将上一步生成的B字长的字符串与ipad做异或运算。
(3) 将数据流text填充至第二步的结果字符串中。
(4) 用H作用于第三步生成的数据流。
(5) 将第一步生成的B字长字符串与opad做异或运算。
(6) 再将第四步的结果填充进第五步的结果中。
(7) 用H作用于第六步生成的数据流,输出最终结果
编辑本段
HMAC的典型应用
HMAC的一个典型应用是用在“挑战/响应”(Challenge/Response)身份认证中,
认证流程:
(1) 先由客户端向服务器发出一个验证请求。
(2) 服务器接到此请求后生成一个随机数并通过网络传输给客户端(此为挑战)。
(3) 客户端将收到的随机数提供给ePass,由ePass使用该随机数与存储在ePass中的密钥进行HMAC-MD5运算并得到一个结果作为认证证据传给服务器(此为响应)。
(4) 与此同时,服务器也使用该随机数与存储在服务器数据库中的该客户密钥进行HMAC-MD5运算,如果服务器的运算结果与客户端传回的响应结果相同,则认为客户端是一个合法用户
安全性浅析
由上面的介绍,我们可以看出,HMAC算法更象是一种加密算法,它引入了密钥,其安全性已经不完全依赖于所使用的HASH算法,安全性主要有以下几点保证:
(1) 使用的密钥是双方事先约定的,第三方不可能知道。由3.2介绍的应用流程可以看出,作为非法截获信息的第三方,能够得到的信息只有作为“挑战”的随机数和作为“响应”的HMAC结果,无法根据这两个数据推算出密钥。由于不知道密钥,所以无法仿造出一致的响应。
(2) HMAC与一般的加密重要的区别在于它具有“瞬时”性,即认证只在当时有效,而加密算法被破解后,以前的加密结果就可能被解密。
分享到:
相关推荐
**一、HMAC-SHA256简介** HMAC-SHA256是基于SHA-256哈希函数的HMAC版本,SHA-256是SHA-2家族的一部分,能够产生256位的散列值。HMAC设计的核心在于它可以抵御长度扩展攻击,这是因为攻击者无法仅凭已知的HMAC值推算...
#### 三、SHA1算法简介 SHA1(Secure Hash Algorithm 1)是一种常用的哈希算法,能够将任意长度的消息转换为一个160位(20字节)的哈希值。SHA1具有较强的抗碰撞能力,使得在不改变原始消息的情况下很难找到另一个...
一、HMAC_SHA1 简介 HMAC(Hash-based Message Authentication Code)是一种使用密钥的哈希函数,它结合了密钥和消息,通过特定的哈希算法(如 SHA1)生成一个固定长度的摘要。这个摘要可以作为数据的数字签名,用于...
HMAC简介** HMAC是一种基于散列函数的消息认证码算法,它结合了散列函数(如MD5、SHA-1等)和一个密钥,用于验证数据的完整性和真实性。与简单的散列函数不同,HMAC能够提供更强大的安全性保障,因为它使用了一个...
**HMAC-MD5简介** HMAC(Hash-based Message Authentication Code)是一种基于密钥的哈希消息认证码,用于确保消息的完整性和来源的真实性。它结合了哈希函数(如MD5)和密钥,提供了比单纯使用哈希函数更高的安全...
### Flask-HMAC-Auth-m4l1c3简介 `flask_hmac_auth_m4l1c3`库是基于Flask的应用扩展,它实现了HMAC认证机制,旨在为API提供安全的身份验证。该库的核心功能是通过HMAC签名来验证API请求的来源和完整性,确保数据在...
**HMAC-SHA256简介** HMAC-SHA256是一种基于SHA256哈希函数的HMAC实现。SHA256是一种广泛应用的密码学安全哈希函数,能够将任意长度的消息转化为固定长度的摘要。而HMAC则增加了密钥的概念,使得只有知道特定密钥的...
hmac模块简介 `hmac`模块实现了基于密钥的消息认证码(HMAC),这是一种安全的机制,用于验证数据的完整性和来源的真实性。HMAC结合了散列函数和一个密钥,生成一个固定长度的摘要,用于校验数据是否被篡改。 ###...
- **简介**:`hmac` 模块提供了基于密钥的消息认证码(HMAC)算法的实现,主要用于验证数据完整性和数据源认证。 - **基本用法**: - 创建 HMAC 对象:`h = hmac.new(key, msg=None, digestmod='sha256')` - 更新 ...
1. HMAC算法简介: HMAC是基于密钥和哈希函数的安全机制,它结合了密钥和消息,生成一个固定长度的摘要。在API请求中,客户端使用共享的密钥对请求参数进行哈希运算,然后将结果作为签名发送给服务器。服务器同样...
内置硬件加密引擎,支持AES、RSA等多种加解密算法和HASH(SHA1/SHA256/HMAC_SHA1/HMAC_SHA256),并带有32Kbit的一次性编程空间和随机数发生器,增强了数据的安全性。 ### 接口 支持多种视频输入接口,如8/10/12bit...
Hi3516EV300 专业型HD IP Camera SoC产品简介 Hi3516EV300 是一款专业型 HD IP Camera SoC,主要特点包括: 1. 处理器内核: ARM Cortex A7@ 900MHz,32KB I-Cache,32KB D-Cache /128KB L2 cache,支持 Neon 加速...
### HI3516CV500芯片简介 #### 一、概述 HI3516CV500是一款由海思半导体有限公司推出的高性能、专业级的Smart IP Camera SoC(System on Chip)。该芯片集成了强大的计算能力、丰富的多媒体处理功能以及一系列智能...
安全引擎方面,该SoC硬件支持多种加解密算法,如AES/RSA以及HASH(SHA1/SHA256/HMAC_SHA1/HMAC_SHA256),具备高性能的加密运算能力,并且内部集成了32Kbit一次性编程空间和随机数发生器。 视频接口方面,Hi3516EV...
1. **H1算法简介** H1可能是一个自定义的哈希函数,或者是指基于SHA-1的HMAC。HMAC是一种使用密钥进行消息认证的机制,结合了哈希函数和密钥,能有效防止篡改和伪造。 2. **JavaScript实现HMAC** 在JavaScript中...
**一、crypto-js简介** crypto-js 是一个完全用JavaScript编写的加密库,它提供了多种加密算法,如AES(高级加密标准)、SHA(安全散列算法)系列、MD5等。这个库旨在为Web开发者提供易于使用的加密功能,使他们在...
CryptoJS 简介 CryptoJS 是一款由Jeff Mott开发的JavaScript库,它实现了多种密码学算法,如对称加密算法AES(Advanced Encryption Standard)、DES(Data Encryption Standard),非对称加密算法RSA,以及哈希...
简介 tinyToolkit是为减少编码工作而封装的简易工具套件,可单独提取二进制嵌入项目代码中,最低支持c ++ 11 依赖 fmtlib 安装 如若自动编译,可运行脚本目录下各平台安装脚本(脚本中会自动编译安装3rd / fmt库,如...
《Hi3516DV300 专业型 Smart IP Camera SoC 产品简介》 Hi3516DV300是一款专为智能网络摄像头设计的系统级芯片(SoC),由上海海思技术有限公司研发。这款SoC集成了高性能的处理器核心、先进的视频编解码技术和丰富...