23-07-2012, 03:08 PM
COST-EFFICIENT SHA HARDWARE ACCELERATORS USING VHDL
COST-EFFICIENT SHA HARDWARE ACCELERATORS.pdf (Size: 1,015.7 KB / Downloads: 61)
INTRODUCTION:
Cryptographic algorithms can be divided into three several classes: public key algorithms, symmetric key algorithms, and hash functions. While the first two are used to encrypt and decrypt data, the hash functions are one-way functions that do not allow the processed data to be retrieved. This paper focuses on hashing algorithms. Currently, the most commonly used hash functions are the MD5 and the Secure Hash Algorithm (SHA), with 128- to 512-bit output Digest Messages (DMs), respectively. While for MD5, collision attacks are computationally feasible on a standard desktop computer [1], current SHA-1 attacks still require massive computational power [2], (around269 hash operations), making attacks unfeasible for the time being. For applications that require additional levels of security, the SHA-2 has been introduced. This algorithm outputs a DM with size from 224 to 512 bits.
SHA-1 AND SHA-2 HASH FUNCTIONS:
In 1993, the Secure Hash Standard
(SHA) was first published by the NIST. In
1995, this algorithm was revised [18] in order
to eliminate some of the initial weakness. The
revised algorithm is usually referenced as
SHA-1 (or SHA128). In 2001, the hashing
algorithm, SHA-2, was proposed. It uses larger
DM, making it more resistant to possible
attacks and allows it to be used with larger
data inputs, up to2128 bits in the case of
SHA512. The SHA-2 hashing algorithm is the
same for the SHA224, SHA256, SHA384, and
SHA512 hashing functions
SHA256 Hash Function:
In the SHA256 hash function, a final
DM of 256 bits is produced. Each 512 bit
input block is expanded and fed to the 64
rounds of the SHA256 function in words of 32
bits each (denoted by Wt ). Like in the SHA-1,
the data scrambling is performed according to
the computational structure depicted
Data Block Expansion for SHA Function:
The SHA-1 algorithm computation steps described in Fig. 1 are performed 80 times (rounds). Each round uses a 32-bit word obtained from the current input data block. Since each input data block only has 16 32-bits words (512 bits), the remaining 64 32-bit words are obtained from data expansion.
PROPOSED DESIGN FOR SHA-1:
In order to compute the values of one SHA-1 round, depicted in Fig. 1, the values from the previous round are required. This data dependency imposes sequentiality, preventing parallel computation between rounds. Only parallelism within each round can be efficiently explored. Some approaches [11] attempt to speed up the processing by unrolling each round computations.