全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版

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

[复制链接]
1154 0

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
引言
    在开放的通信和计算机系统中,建立安全可靠的电子商务平台是十分重要的。通常需要通过加密的方法对客户的有关信息,如密码、合同等加以保护,使之不被盗取或篡改。当客户提出服务申请时,必须对客户身份的合法性、报文的完整性进行确认。
    HMAC(Keyed-Hashing for Message Authentication)是一个公开的协议。它是一种基于密钥的报文完整性的验证方法,其安全性是建立在Hash算法基础上的。它要求通信双方共享密钥、约定算法、对报文进行Hash运算,如MD5、SHA、RIPEMD等,形成固定长度的认证码。通信双方通过认证码的校验来确定报文的合法性。这个协议可以用来作加密、数字签名、报文验证等。
  
  利用HMAC协议可以建立一个身份认证的电子商务平台,客户和服务端双方需要预先约定唯一的公钥和加密算法;客户单方面保留自己密码作为密钥,服务端只保留公钥和认证码。这个认证码是密钥经HMAC协议加密得到定长码字。当客户提出服务申请时,应提交钥和密钥的认证码。服务端通过公钥确认客户的基本身份,再检验认证码确定客户的合法性。这样,客户的私密信息在服务端、传输媒介中都是加密隐藏的。
    我们利用服务器建立了服务端的模拟用户数据库,单片机实现客户端的加密算法,电话线作为传输介质,实现了HMAC协议在IP电话计费系统中的应用。
    1 HMAC的算法原理
    1.1 HMAC算法定义
    用公式表示如下:
    HMAC=H(key xor opad,H(key xor ipad,text))
    H(X,Y)代表对X+Y的消息进行一种Hash运算;
    ipad代表重复B次的单字节十六进制常数0x36;
    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算法以对任意长度消息多次循环迭代的散列运算,最终形成16 Byte报文摘要。这个摘要对文本具有唯一性,可作为认证码。在目标计算机的计算速度下,这个摘要是难于破解的。
    (1)报文填充
    MD5算法要求对任意长度报文进行填充,构成N×64 Byte消息分组,N为整数。其中每一分组又划分为16个4字节子分组。
    填充数据分2步。首先,填充使得数据位长度恰好为(N×64-8)Byte的数,即在报文有效数据后补1个0x1,其它补0x0至满足上述要求。然后,再后补上8字节(64位)的报文数据长度(填充前字节数)。这样,数据就被填充为64Byte(512bit)的整数倍。
    (2)初始化MD5参数
    4个4字节位变量(A、B、C、D)用来作为报文摘要的初始值:
    A=0x01234567
    B=0x89abcdef
    C=0xfedcba98
    D=0x76543210
    (3)算法
    MD5算法是对消息分组依次迭代算法。第1次运算的初始值为ABCD,以后每一次迭代运算的结果都替换ABCD作为下一次的初始值,共经过N次的迭代运算,就得到该消息的报文摘要,如图1所示。
    对每一消息分组的运算方法是相同的。首先把初始值ABCD放入变量abcd,然后进行4轮相似的运算变换,每轮包含16次操作。每次操作对其中的3个变量(4字节)bcd做1次非线性运算,将其结果加上变量a,一个消息子分组Mi,一个常数Ti;将所得结果向环移一个不定的数Si,再加变量b,然后用该结果取代变量a,变换abcd&;=dabc,进入下一次运算,共16次,如图2所示。4轮运算结束后,把变量abcd与初始ABCD进行“异或”运算,结果作为下一分组的初始值。

举报

回复
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表