Abstract
In this paper, a design space exploration of a reconfigurable HMAC-hash unit is discussed. This unit implements one of six standard hash algorithms; namely, MD5, SHA-1, RIPEMD-160, HMAC-MD5, HMAC-SHA-1, and HMAC-RIPEMD-160. The design space exploration of this unit is done using the Handel-C language. We propose a key reuse mechanism for successive messages in order to improve the HMAC throughput. In addition, we explore the design space by providing two implementations of the HMAC algorithm, one for a general key size and another for a fixed key size. In each implementation, we incorporate standard key use and the proposed key reuse mechanisms, which results in four different implementations. The performance of these four implementations is analyzed with respect to four design metrics: area, delay, throughput, and power consumption. We found that the proposed key reuse mechanism improves the HMAC throughput significantly, with negligible increase in area and delay, when a large key is reused. In addition, we found that the implementation of HMAC for fixed key size is better in area, delay, throughput, and power consumption than the HMAC implementation for general key size.