HMAC的一个典型应用是用在“挑战/响应”(Challenge/Response)身份认证中。
认证流程
(2) 服务器接到此请求后生成一个随机数并通过
网络传输给
客户端(此为挑战)。
(3)
客户端将收到的随机数提供给ePass,由ePass使用该随机数与存储在ePass中的
密钥进行HMAC-MD5运算并得到一个结果作为认证证据传给服务器(此为响应)。
(4) 与此同时,服务器也使用该随机数与存储在服务器数据库中的该客户
密钥进行HMAC-MD5运算,如果服务器的运算结果与
客户端传回的响应结果相同,则认为客户端是一个合法用户
安全性浅析
由上面的介绍,我们可以看出,HMAC算法更象是一种加密算法,它引入了
密钥,其安全性已经不完全依赖于所使用的HASH算法,安全性主要有以下几点保证:
(1) 使用的
密钥是双方事先约定的,第三方不可能知道。由3.2介绍的应用流程可以看出,作为非法截获信息的第三方,能够得到的信息只有作为“挑战”的随机数和作为“响应”的HMAC结果,无法根据这两个数据推算出
密钥。由于不知道
密钥,所以无法仿造出一致的响应