HMAC认证协议的单片机实现_3689

上传人:飞*** 文档编号:45964203 上传时间:2018-06-20 格式:DOC 页数:7 大小:35KB
返回 下载 相关 举报
HMAC认证协议的单片机实现_3689_第1页
第1页 / 共7页
HMAC认证协议的单片机实现_3689_第2页
第2页 / 共7页
HMAC认证协议的单片机实现_3689_第3页
第3页 / 共7页
HMAC认证协议的单片机实现_3689_第4页
第4页 / 共7页
HMAC认证协议的单片机实现_3689_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《HMAC认证协议的单片机实现_3689》由会员分享,可在线阅读,更多相关《HMAC认证协议的单片机实现_3689(7页珍藏版)》请在金锄头文库上搜索。

1、HMAC 认证协议的单片机实现摘要:HMAC 是一种基于密钥的 Hash 算法的认证协议,可以应用于电子商务领 域。我们通过国有自主知识产权的单片机 ZQ032SA,实现了以 MD5 算法为核心 的 HMAC 协议,并把它调用于 IP 电话计费认证系统。 关键词:关键词:HMAC ZQ032SA(6805) MD5 IP 电话引言引言在开放的通信和计算机系统中,建立安全可靠的电子商务平台是十分重要的。 通常需要通过加密的方法对客户的有关信息,如密码、合同等加以保护,使之 不被盗取或篡改。当客户提出服务申请时,必须对客户身份的合法性、报文的 完整性进行确认。HMAC(Keyed-Hashing

2、for Message Authentication)是一个公开的协议。它 是一种基于密钥的报文完整性的验证方法,其安全性是建立在 Hash 算法基础上 的。它要求通信双方共享密钥、约定算法、对报文进行 Hash 运算,如 MD5、SHA、RIPEMD 等,形成固定长度的认证码。通信双方通过认证码的校验来 确定报文的合法性。这个协议可以用来作加密、数字签名、报文验证等。利用 HMAC 协议可以建立一个身份认证的电子商务平台,客户和服务端双方需要 预先约定唯一的公钥和加密算法;客户单方面保留自己密码作为密钥,服务端 只保留公钥和认证码。这个认证码是密钥经 HMAC 协议加密得到定长码字。当客 户

3、提出服务申请时,应提交钥和密钥的认证码。服务端通过公钥确认客户的基 本身份,再检验认证码确定客户的合法性。这样,客户的私密信息在服务端、 传输媒介中都是加密隐藏的。我们利用服务器建立了服务端的模拟用户数据库,单片机实现客户端的加密算 法,电话线作为传输介质,实现了 HMAC 协议在 IP 电话计费系统中的应用。1 1 HMACHMAC 的算法原理的算法原理1.1 HMAC 算法定义用公式表示如下:HMAC=H(key xor opad,H(key xor ipad,text))H(X,Y)代表 对 X+Y 的消息进 行一种 Hash 运 算;ipad 代表重复 B 次的单字节十六进制常数 0x

4、36;opad 代表重复 B 次的单字节十六进行常数 0x5c;key 代表 64 字节的字符串,由密钥组成,不足的补 0;text 代表任意长度文本。密钥L 字节。当大于 B 时,先经 Hash 计算形成 L 字节的秘钥(B 是 Hash 算法 中一次迭代运算的数据块字节数;L 是 Hash 算法形成报文摘要的字节数)。HMAC 协议定义了迭代两次的 Hash 加密算法,最终形成报文摘要(DIGEST)值 就是认证码。基于算法的可靠性、安全性和易于计算机实现特性,先用 Hash 中 的 MD5 算法实现 HMAC,其 B=64,L=16。1.2 MD5 算法定义MD5 算法以对任意长度消息多

5、次循环迭代的散列运算,最终形成 16 Byte 报文 摘要。这个摘要对文本具有唯一性,可作为认证码。在目标计算机的计算速度 下,这个摘要是难于破解的。(1)报文填充MD5 算法要求对任意长度报文进行填充,构成 N64 Byte 消息分组,N 为整数。 其中每一分组又划分为 16 个 4 字节子分组。填充数据分 2 步。首先,填充使得数据位长度恰好为(N64-8)Byte 的数, 即在报文有效数据后补 1 个 0x1,其它补 0x0 至满足上述要求。然后,再后补上 8 字节(64 位)的报文数据长度(填充前字节数)。这样,数据就被填充为 64Byte(512bit)的整数倍。(2)初始化 MD5

6、 参数4 个 4 字节位变量 (A、B、C、D)用来作为报 文摘要的初始值:A=0x01234567B=0x89abcdefC=0xfedcba98D=0x76543210(3)算法MD5 算法是对消息分组依次迭代算法。第 1 次运算的初始值为 ABCD,以后每一 次迭代运算的结果都替换 ABCD 作为下一次的初始值,共经过 N 次的迭代运算, 就得到该消息的报文摘要,如图 1 所示。对每一消息分组的运算方法是相同的。首先把初始值 ABCD 放入变量 abcd,然 后进行 4 轮相似的运算变换,每轮包含 16 次操作。每次操作对其中的 3 个变量 (4 字节)bcd 做 1 次非线性运算,将其

7、结果加上变量 a,一个消息子分组 Mi, 一个常数 Ti;将所得结果向环移一个不定的数 Si,再加变量 b,然后用该结果 取代变量 a,变换 abcd=dabc,进入下一次运算,共 16 次,如图 2 所示。4 轮 运算结束后,把变量 abcd 与初始 ABCD 进行“异或”运算,结果作为下一分组 的初始值。计算公式如下:第 1 轮:SUB_FF(a,b,c,d,Mi,Si,Ti):a=b+(a+F(b,c,d)+Mi+Ti)Si)第 2 轮:SUB_GG(a,b,c,d,Mi,Si,Ti):a=b+(a+G(b,c,d)+Mi+Ti)Si)第 3 轮:SUB_HH(a,b,c,d,Mi,Si,Ti):a=b+(a+H(b,c,d)+Mi+Ti)Si)第 4 轮:SUB_II(a,b,c,d,Mi,Si,Ti):a=b+(a+I(b,c,d)+Mi+Ti)Si)数据交换规则: a,b,c,dd,a,b,cc,d,a,b, b,c,d,a最终:ABCD=ABCD+abcd其中:Mi 为 16 个信息子包,每个 4 字 节;Ti 为 4 字节常数;Si 为左移位数; abcd 为 32 位变量;初始值为 ABCD。函数:F(X,Y,Z)=X ;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号