KR100473449B1 - Calculating method for message digest 5 hashing function having parallel calculating structure - Google Patents
Calculating method for message digest 5 hashing function having parallel calculating structure Download PDFInfo
- Publication number
- KR100473449B1 KR100473449B1 KR10-2002-0049498A KR20020049498A KR100473449B1 KR 100473449 B1 KR100473449 B1 KR 100473449B1 KR 20020049498 A KR20020049498 A KR 20020049498A KR 100473449 B1 KR100473449 B1 KR 100473449B1
- Authority
- KR
- South Korea
- Prior art keywords
- value
- buffer
- bit
- hash function
- inputting
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Power Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 엠디5 해쉬함수(Hash Function) 연산과정에 있어서 512 비트의 메시지 블록과 128 비트 값을 연산하여 압축된 128 비트의 출력값을 만들어내는 연산과정을 부분적으로 병렬 수행함으로써 고속의 메시지 축약연산을 할 수 있는 병렬 연산구조를 갖는 엠디5 해쉬함수 연산 방법에 관한 것이다.According to the present invention, a fast message reduction operation is performed by partially performing a parallel operation of a 512-bit message block and a 128-bit value to generate a compressed 128-bit output value in an MD5 hash function calculation process. The present invention relates to an MD5 hash function calculation method having a parallel operation structure.
본 발명은 엠디5 해쉬함수 처리과정 중 소정의 연산과정을 병렬로 처리함으로써 처리속도를 현저하게 향상시킬 수 있다.The present invention can significantly improve the processing speed by processing a predetermined operation of the MD5 hash function processing in parallel.
Description
본 발명은 병렬 연산구조를 갖는 엠디5 해쉬함수 연산 방법에 관한 것으로서, 더욱 상세히 설명하면, 엠디5 해쉬함수(Hash Function) 연산과정에 있어서 512 비트의 메시지 블록과 128 비트 값을 연산하여 압축된 128 비트의 출력값을 만들어내는 연산과정을 부분적으로 병렬 수행함으로써 고속의 메시지 축약연산을 할 수 있는 병렬 연산구조를 갖는 엠디5 해쉬함수 연산 방법에 관한 것이다.The present invention relates to a method for calculating an MD5 hash function having a parallel operation structure. More specifically, the present invention relates to a 128-bit message block and 128-bit value compressed in an MD5 hash function calculation process. The present invention relates to an MD5 hash function calculation method having a parallel operation structure capable of performing a fast message reduction operation by partially performing an operation of generating an output value of a bit.
인터넷과 전자상거래 시스템에서 전송하고자 하는 정보를 안전하게 전송하는 것은 매우 중요한 문제이다. 이러한 정보보안에서 메시지 인증은 수신자의 입장에서 발신자의 메시지인지를 증명하고, 또한 전송된 메시지가 손상되지 않은 것임을 확인시켜 준다. 인증의 핵심적인 요소로 메시지 인증코드(MAC : Message Authentication Code)가 있는데, 그 중에서도 해쉬함수를 바탕으로 해서 메시지 인증코드를 생성하는 방법을 HMAC 이라고 한다.It is very important to securely transmit the information to be transmitted in the Internet and the e-commerce system. In this information security, message authentication proves that the sender's message is from the receiver's point of view, and also confirms that the transmitted message is intact. A key element of authentication is Message Authentication Code (MAC). Among them, HMAC is a method of generating a message authentication code based on a hash function.
이러한 전자상거래 등에서의 메시지인증(Message Authentication)을 위하여 핵심적으로 사용되는 것으로 엠디5(MD5 : Message Digest 5) 해쉬알고리즘(Hash Algorithm)이 있다.The core used for message authentication in such electronic commerce is the MD5 (Message Digest 5) Hash Algorithm.
해쉬알고리즘이란 임의의 길이의 비트열을 고정된 길이의 출력값인 해쉬코드로 압축시키는 알고리즘이다. 해쉬 알고리즘이 메시지 인증이 사용되는 필수적인 요구조건으로는,The hash algorithm is an algorithm that compresses a bit string of arbitrary length into a hash code that is a fixed length output value. The hash algorithm is an essential requirement for message authentication to be used.
첫째, 주어진 출력에 대하여 입력값을 구하는 것이 계산상 불가능하며,First, it is impossible to calculate the input value for a given output.
둘째, 주어진 입력에 대하여 같은 출력을 내는 또 다른 입력을 찾아내는 것이 계산상 불가능하며,Second, it is impossible to find another input that produces the same output for a given input,
셋째, 전자서명에서 송신자 외의 제 3 자에 의한 문서위조를 방지하는 부인방지 서비스를 제공해야 하는데, 이러한 용도로 사용되는 대표적인 해쉬 알고리즘이 엠디5 이다.Third, the non-repudiation service that prevents forgery by third parties other than the sender in the digital signature should be provided. The typical hash algorithm used for this purpose is MD5.
엠디5 는 미국 MIT 대학의 로날드 리베스트 교수에 의해 개발된 메시지 압축 알고리즘으로, 엠디2 를 초기버전으로 시작하여 엠디4, 엠디5 가 개발되었다. 엠디5 는 이전 버전의 엠디4 에 비하여 계산속도는 느리지만 훨씬 안전성이 뛰어나 외부공격의 위협에 강하도록 고안되었다.MD5 is a message compression algorithm developed by Ronald Livest, a professor at MIT University in the United States. The MD5 is designed to be resistant to external attack threats because it is slower than previous versions of the MD4 but is much safer.
엠디5 는 임의 길이의 메시지를 입력받아 128 비트의 고정된 길이를 출력시키는 함수로 임의의 입력 메시지를 512 비트 단위로 처리한다.MD5 is a function that receives a message of arbitrary length and outputs a fixed length of 128 bits, and processes any input message in units of 512 bits.
도 1 은 엠디5 해쉬함수를 이용한 MAC 의 생성과정을 나타내는 도로서, 입력 메시지를 512 비트 단위로 나누고 각 512 비트를 엠디5 해쉬함수 과정을 통하여 128 비트의 값으로 출력하는 과정을 나타낸다. 도 1 을 참조하여, 메시지를 입력받아 출력값을 생성하는 과정을 설명하면 다음과 같다. L 은 512 비트 메시지 블록의 개수를 표시한다.FIG. 1 is a diagram illustrating a process of generating a MAC using an MD5 hash function, and illustrates a process of dividing an input message into units of 512 bits and outputting each of 512 bits to a value of 128 bits through an MD5 hash function. Referring to Figure 1, the process of generating an output value by receiving a message as follows. L indicates the number of 512 bit message blocks.
첫번째 과정은, 패딩(padding) 및 덧붙이기 과정으로 입력 메시지는 512 비트 단위로 처리된다. 상세하게는, 마지막 메시지 블록을 블록의 길이가 448 비트가 되도록 1 다음에 필요한 개수의 0 으로 패딩하고, 마지막 64 비트에 전체 메시지 길이를 표시한다.The first step is padding and appending, where the input message is processed in units of 512 bits. Specifically, the last message block is padded with 1 followed by the required number of zeros so that the block length is 448 bits, and the total message length is indicated in the last 64 bits.
두번째 과정은, 엠디5 버퍼를 초기화하는 과정으로 128 비트 버퍼는 엠디5 를 수행하는 동안의 중간값과 최종 결과값을 저장하기 위해 사용된다. 128 비트 버퍼는 32 비트 레지스터 ABCD 로 표시되며 초기값은 다음과 같다.The second step is to initialize the MD5 buffer. A 128-bit buffer is used to store the intermediate value and the final result during the MD5 operation. The 128-bit buffer is represented by the 32-bit register ABCD. The initial values are as follows.
A : 0 1 2 3 4 5 6 7, B : 8 9 a b c d e f,A: 0 1 2 3 4 5 6 7, B: 8 9 a b c d e f,
C : f e d c b a 9 8, D : 7 6 5 4 3 2 1 0 (16 진수 표기법)C: f e d c b a 9 8, D: 7 6 5 4 3 2 1 0 (Hexadecimal notation)
세번째 과정은, 512 비트 블록처리 과정으로 엠디5 해쉬함수를 처리한다. 512 비트 블록의 메시지와 128 비트 버퍼의 값을 입력으로 받고 4 개의 라운드 계산과정을 통하여 128 비트의 축약(digest)된 출력값을 생성한다. 이 출력값은 128 비트 버퍼에 저장되며 다음 메시지 블록 축약과정의 입력값으로 사용된다. 각 라운드는 각각 F, G, H, I라는 함수를 이용하는데 함수의 논리연산식은 다음과 같다.The third process is the 512-bit block process, which processes the MD5 hash function. It takes a message of 512-bit block and a value of 128-bit buffer as input and generates 128-bit digested output through four round calculation process. This output is stored in a 128-bit buffer and used as the input for the next message block abbreviation. Each round uses the functions F, G, H, and I, respectively. The logical expression of the function is as follows.
F(X,Y,Z) = XY and not(X)Z, G(X,Y,Z) = XZ and Ynot(Z),F (X, Y, Z) = XY and not (X) Z, G (X, Y, Z) = XZ and Ynot (Z),
H(X,Y,Z) = X xor Y xor Z, I(X,Y,Z) = Y xor (X and not(Z))H (X, Y, Z) = X xor Y xor Z, I (X, Y, Z) = Y xor (X and not (Z))
또한, 각 라운드의 계산에는 사인(SIGN) 함수값이 이용되는데 라운드당 16 개씩 모두 64 개의 값을 사용한다.In addition, the SIGN function is used to calculate each round, which uses 64 values, 16 for each round.
도 2 는 엠디5 의 해쉬함수 처리과정을 나타내는 도로서, 512 비트 메시지로부터 128 비트 엠디5 해쉬함수 출력값을 생성하는 과정을 나타낸다. 도 2 에서 T[1...16] 는 첫번째 라운드에서 사용되는 16 개의 사인(SIGN) 값을 나타내고 이어서 T[17...32] 는 두번째 라운드, T[33...48] 는 세번째 라운드, T[49...64] 는 네번째 라운드의 사인(SIGN) 값을 나타낸다. X[] 는 해쉬함수에서 사용되는 메시지의 32 비트를 나타낸다.FIG. 2 is a diagram illustrating a hash function processing process of an MD5, and illustrates a process of generating a 128-bit MD5 hash function output value from a 512-bit message. In Fig. 2, T [1 ... 16] represents the 16 SIGN values used in the first round, followed by T [17 ... 32] for the second round, and T [33 ... 48] for the third round. , T [49 ... 64] represents the SIGN value of the fourth round. X [] represents the 32 bits of the message used in the hash function.
네번째 라운드를 지나고 나온 결과값은 첫번째 라운드의 입력값과 더해져 128 비트 축약값이 생성된다. 이 과정을 메시지 마지막 블록까지 진행하여 나온 최종 128 비트값이 엠디5 를 이용한 메시지 압축값이 된다.The result after the fourth round is added to the input of the first round to produce a 128-bit abbreviation. This process proceeds to the last block of the message, and the final 128-bit value is the message compression value using the MD5.
엠디5 는 32 비트 단위의 처리과정을 갖도록 회로가 제안되어 있기 때문에 도 2 는 다시 32 비트 처리구조인 도 3 의 회로로 구성된다. 도 2 에서 각 라운드를 32 비트 단위로 처리하기 위해서는 한개의 라운드를 16 스텝으로 구성할 수 있으므로 각 스텝이 도 3 의 회로에 해당된다. 즉, 도 3 은 도 2 를 32 비트 단위로 처리하기 위한 기본 구조가 된다.Since the MD 5 has a circuit proposed to have a 32-bit process, FIG. 2 is composed of the circuit of FIG. 3 which is a 32-bit process structure. In order to process each round in 32 bit units in FIG. 2, one round may be configured in 16 steps, so each step corresponds to the circuit of FIG. 3. That is, FIG. 3 becomes a basic structure for processing FIG. 2 in 32 bit units.
도 3 은 64 스텝 반복구조의 엠디5 해쉬함수 처리과정에서 1 스텝 처리과정을 나타내는 도이다. 도 3 에 도시된 바와 같이 엠디5 해쉬함수 처리과정의 1 스텝 처리과정은, 초기값 및 출력값을 저장하는 128 비트 버퍼를 4 개의 32 비트로 나눈 A, B, C, D, 512 비트 메시지를 16 개의 32 비트 단위로 나누어 놓은 입력값 X[], 32비트의 사인(SIGN) 값 T[], A, B, C, D의 값을 이용하여 논리연산을 수행하는 F/G/H/I 함수값, 덧셈기(10) 및 쉬프터(20, Shifter)를 이용하여 처리된다.3 is a diagram illustrating a one-step process in the MD5 hash function process of the 64-step repeat structure. As shown in FIG. 3, the one-step process of the MD5 hash function processing process includes 16 A, B, C, D, and 512 bit messages obtained by dividing a 128 bit buffer into four 32 bits to store an initial value and an output value. F / G / H / I function value that performs logical operation using the input value X [] divided into 32 bit units and the SIGN value T [], A, B, C, D of 32 bits. , Using the adder 10 and the shifter 20.
상세하게는, A 와 F/G/H/I 함수값과 덧셈기(10)에 의해 덧셈이 이루어지고 그 결과값은 입력값 X[k]와 덧셈된다. 다음으로, 덧셈 결과값은 사인(SIGN) 값 T[i]와 덧셈이 수행된다. 이 덧셈 결과값은 쉬프터(20)에 의하여 일정값에 따라 쉬프트가 수행되고 다시 그 결과값은 B 와 덧셈이 수행된다. 마지막 계산값은 버퍼 B 에 저장되고, 입력 B 는 C 에, 입력 C 는 D 에, 입력 D 는 A 에 저장된다.Specifically, addition is performed by the A and F / G / H / I function values and the adder 10 and the resultant value is added to the input value X [k]. Next, the addition result is performed with the SIGN value T [i] and the addition. The addition result is shifted by the shifter 20 according to a predetermined value, and the result is added with B. The last calculation is stored in buffer B, input B is stored in C, input C is stored in D, and input D is stored in A.
엠디5 해쉬함수 처리블록이 128 비트의 초기값과 512 비트의 메시지를 입력받아 128 비트로 압축하기 위해서는 도 3 의 처리과정을 64 번 반복하게 된다. 64 번의 반복과정은 F 함수를 이용한 16 번 반복과정, G 함수를 이용한 16 번 반복과정, H 함수를 이용한 16 번 반복과정, I 함수를 이용한 16 번 반복과정으로 구성된다. 이때 16 번의 반복과정을 4 번의 반복과정으로 묶어보면 도 4 와 같은 구조가 된다.In order for the MD5 hash function processing block to receive an initial value of 128 bits and a message of 512 bits, the process of FIG. 3 is repeated 64 times. The 64 iterations consist of 16 iterations using the F function, 16 iterations using the G function, 16 iterations using the H function, and 16 iterations using the I function. At this time, if the 16 iterations are combined into 4 iterations, the structure is as shown in FIG.
도 4 는 종래의 엠디5 해쉬함수 4 스텝 처리과정을 나타내는 도이다. 도 4 에 도시된 바와 같이, 반복과정의 초기값으로 사용되는 버퍼 A 의 값은 덧셈과 쉬프트 과정에 사용되지만 버퍼 B 의 값은 두번째 반복과정의 초기값 C 로 이용된다. 또한 첫번째 과정의 C 값은 두번째 반복과정의 초기값 D 로 이용되고 첫번째 과정의 D 값은 두번째 반복과정의 초기값 A 로 이용된다. 결국, 각 반복과정이 수행되면서, 첫번째 버퍼 A 의 값은 첫번째 반복과정의 덧셈에 사용되고 첫번째 버퍼 B 의 값은 네번째 반복과정에서, 첫번째 버퍼 C 의 값은 세번째 반복과정에서, 첫번째 버퍼 D 의 값은 두번째 반복과정에서 덧셈에 이용된다4 is a diagram illustrating a conventional MD5 hash function 4-step process. As shown in FIG. 4, the value of the buffer A used as the initial value of the repetition process is used for the addition and shift processes, but the value of the buffer B is used as the initial value C of the second iteration process. The C value of the first process is used as the initial value D of the second iteration, and the D value of the first process is used as the initial value A of the second iteration. Finally, as each iteration is performed, the value of the first buffer A is used to add the first iteration, the value of the first buffer B is the fourth iteration, the value of the first buffer C is the third iteration, and the value of the first buffer D is Used for addition in the second iteration
이러한 엠디5 해쉬함수 연산과정을 하드웨어적으로 구현한 것이 엠디5 해쉬함수 연산기이다. 엠디5 해쉬함수 연산기는 임의 길이의 메시지를 입력받아 128 비트의 압축된 메시지 인증코드를 생성하며, 덧셈과 쉬프트 그리고 일련의 논리 게이트로 구성된다. 특히, 메시지를 512 비트 단위로 처리하며, 512 비트 메시지를 128 비트 해쉬함수 출력값으로 만들기 위해서는 라운드(round) 당 16 스텝(step)씩 모두 64 스텝의 연산과정이 반복된다. 상기의 64 스텝 연산과정은 1 스텝씩 64 번 반복되는데, 이 반복 연산과정은 엠디5 해쉬함수 특성상 순차적(sequential)으로 이루어진다. 즉, 여러 스텝을 중복하여 병렬로 수행할 수 없는 해쉬함수 특성을 갖고 있다. 이러한 점은 고속의 엠디5 해쉬함수 처리 하드웨어를 구현하는데 장애가 되고 있다.The hardware implementation of the MD5 hash function calculation process is an MD5 hash function calculator. The MD5 hash function operator receives a message of arbitrary length and generates a 128-bit compressed message authentication code. It consists of addition, shift, and a series of logic gates. In particular, the message is processed in units of 512 bits, and in order to convert the 512-bit message into a 128-bit hash function output value, 64 steps of operations are repeated, each of 16 steps per round. The 64 step calculation process is repeated 64 times by 1 step, and this iterative operation process is sequential due to the characteristics of the MD5 hash function. That is, it has a hash function characteristic that multiple steps cannot be performed in parallel. This impedes the implementation of fast MD5 hash function processing hardware.
이러한 문제점을 해결하여 엠디5 해쉬함수 처리과정으로 고속으로 구현하기 위해서는 도 3 의 구조를 개선하는 것이 중요하다. 이를 위하여 그동안 여러가지 방법이 제안되어 왔는데 대표적으로 도 5a 및 도 5b 에 도시된 바와 같다.It is important to improve the structure of FIG. 3 in order to solve this problem and implement the MD5 hash function at high speed. To this end, various methods have been proposed, as shown in FIGS. 5A and 5B.
도 3 의 해쉬함수 처리과정은 일반적으로 도 5a 와 같이 씨엘에이(30, CLA : Carry Lookahead Adder) 구조의 덧셈기로 구현되며, 최근에는 도 5b 와 같이 씨에스에이(40, CSA : Carry Save Adder)를 이용하여 2 개의 씨엘에이를 줄이는 방법이 제안되었다. 이 방법은 씨에스에이(40)가 씨엘에이(30)에 비하여 처리속도가 빠르다는 점을 이용하여 씨엘에이 대신 씨에스에이를 사용함으로써 전체 처리속도를 개선하였다. 그러나, 이 경우에도 완전 직렬형 구조를 가지므로 처리속도를 증가시키는데 한계가 있게 된다. 따라서, 처리속도를 효과적으로 향상시킬 수 있는 방법이 요청되고 있다.The hash function processing of FIG. 3 is generally implemented as an adder of a CLA (30, CLA: Carry Lookahead Adder) structure as shown in FIG. 5A. A method of reducing two CLs by using the proposed method has been proposed. This method improves the overall processing speed by using the CS instead of the CL using the fact that the CS 40 is faster than the CS 30. However, even in this case, there is a limit in increasing the processing speed since it has a completely serial structure. Therefore, there is a need for a method that can effectively improve the processing speed.
본 발명은 상기와 같은 문제점을 해결하고자 제시된 것으로서, 본 발명의 목적은 엠디5 해쉬함수 처리속도가 향상된 병렬 연산구조를 갖는 엠디5 해쉬함수 연산방법을 제공하는 것이다.The present invention has been made to solve the above problems, and an object of the present invention is to provide an MD5 hash function calculation method having a parallel operation structure with improved MD5 hash function processing speed.
즉, 엠디5 해쉬함수의 처리과정 중 일부를 병렬처리할 수 있도록 구조를 개선함으로써 처리속도가 향상된 엠디5 해쉬함수 연산 방법을 제공하는 것이다. In other words, by improving the structure so that some of the processing of the MD 5 hash function can be processed in parallel to provide an MD 5 hash function calculation method with improved processing speed.
상기의 목적을 달성하기 위하여, 본 발명에 따른 병렬 연산구조를 갖는 엠디5 해쉬함수 연산방법은, 16 스텝의 반복구조로 이루어진 4 개의 라운드를 통해, 512 비트의 메시지 블록과 128 비트값을 연산하여 압축된 128 비트의 출력값을 생성하는 연산과정으로 이루어지고, 연산과정 중 소정의 연산과정이 병렬 연산구조를 갖는 엠디5 해쉬함수 연산 방법으로서,In order to achieve the above object, the MD5 hash function calculation method having a parallel operation structure according to the present invention calculates a 512-bit message block and a 128-bit value through four rounds of a 16-step repetition structure. Comprising an operation process for generating a compressed 128-bit output value, a predetermined operation of the operation process as an MD5 hash function calculation method having a parallel operation structure,
각 스텝 중 N 번째 스텝이,Nth step of each step,
초기값 및 출력값을 저장하는 128 비트 버퍼를 4 개의 32 비트로 분할한 제 1 버퍼, 제 2 버퍼, 제 3 버퍼 및 제 4 버퍼 중 제 1 버퍼의 값과, 512 비트 메시지를 32 비트 단위씩 16 개로 분할한 입력값 X[k] 및 32 비트의 사인값 T[i]를 씨에스에이에 입력하여 덧셈연산을 수행하는 제 1 단계; 씨에스에이의 출력값을 제 1 씨엘에이에 입력하여 덧셈연산을 수행하는 제 2 단계; 제 2 버퍼, 제 3 버퍼 및 제 4 버퍼의 값을 입력받고, F(X, Y, Z) = XY and not(X)Z, G(X, Y, Z) = XZ and Ynot(Z), H(X, Y, Z) = X xor Y xor Z, I(X, Y, Z) = Y xor (X and not(Z)) 의 논리연산을 수행하는 F/G/H/I 함수의 출력값을 생성하는 제 3 단계; 제 1 씨엘에이의 출력값과 F/G/H/I 함수의 출력값을 제 2 씨엘에이에 입력하여 덧셈연산을 수행하는 제 4 단계; 제 2 씨엘에이의 출력값을 쉬프터에 의해 소정 값만큼 쉬프트하는 제 5 단계; 쉬프터의 출력값과 제 2 버퍼의 값을 제 3 씨엘에이에 입력하여 덧셈연산을 수행하는 제 6 단계; 및 제 3 씨엘에이의 출력값을 제 2 버퍼에 저장하고, 제 2 버퍼 및 제 3 버퍼의 값을 쉬프트하는 제 7 단계를 포함하고,The 128-bit buffer that stores the initial value and the output value is divided into four 32-bit values of the first buffer, the second buffer, the third buffer, and the fourth buffer, and 16 512-bit messages in 32-bit units. A first step of performing addition operation by inputting the divided input value X [k] and the 32-bit sine value T [i] to the CS; A second step of performing an addition operation by inputting the output value of the CS to the first CL; The values of the second buffer, the third buffer and the fourth buffer are input, and F (X, Y, Z) = XY and not (X) Z, G (X, Y, Z) = XZ and Ynot (Z), Output of F / G / H / I function that performs logical operation of H (X, Y, Z) = X xor Y xor Z, I (X, Y, Z) = Y xor (X and not (Z)) Generating a third step; A fourth step of performing an addition operation by inputting the output value of the first CL and the output value of the F / G / H / I function to the second CL; A fifth step of shifting the output value of the second CL by a shifter; A sixth step of performing an addition operation by inputting an output value of the shifter and a value of the second buffer to the third CL; And a seventh step of storing the output value of the third CL in the second buffer and shifting the values of the second buffer and the third buffer,
제 1 단계 및 제 2 단계가, (1) 제 4 버퍼의 값, X[k+1] 및 T[i+1], (2) 제 3 버퍼의 값, X[k+2] 및 T[i+2], 그리고 (3) 제 2 버퍼의 값, X[k+3] 및 T[i+3]을 각기 씨에스에이에 입력하여 덧셈연산을 수행하는 제 8 단계; 및 각 씨에스에이의 출력값을 제 1 씨엘에이에 입력하여 덧셈연산을 수행하는 제 9 단계와 병렬로 동시에 수행되는 것을 특징으로 한다.The first and second steps comprise (1) the value of the fourth buffer, X [k + 1] and T [i + 1], (2) the value of the third buffer, X [k + 2] and T [ i + 2] and (3) an eighth step of performing addition operation by inputting values of the second buffer, X [k + 3] and T [i + 3], to the CS, respectively; And inputting an output value of each CS into the first CL to be performed simultaneously in parallel with a ninth step of performing an addition operation.
바람직하게는, 제 7 단계가, 제 2 버퍼의 값을 제 3 버퍼에 저장하는 단계; 및 제 3 버퍼의 값을 제 4 버퍼에 저장하는 단계를 포함하는 것을 특징으로 한다.Preferably, the seventh step comprises the steps of: storing the value of the second buffer in a third buffer; And storing the value of the third buffer in the fourth buffer.
더욱 바람직하게는, More preferably,
N+1 번째 스텝이,N + 1th step,
N 번째 스텝의 제 4 버퍼의 값, X[k+1] 및 T[i+1]을 씨에스에이에 입력하여 덧셈연산을 수행하는 제 8 단계; 및 씨에스에이의 출력값을 제 1 씨엘에이에 입력하여 덧셈연산을 수행하는 제 9 단계의 출력값을 입력값으로 하여 제 3 단계 내지 제 7 단계의 연산을 수행하고,An eighth step of performing addition operation by inputting the value of the fourth buffer, X [k + 1] and T [i + 1], to the Nth step to the CS; And performing the operations of the third to seventh steps using the output value of the ninth step of performing the addition operation by inputting the output value of the CS to the first CL,
N+2 번째 스텝이,N + 2th step,
N 번째 스텝의 제 3 버퍼의 값, X[k+2] 및 T[i+2]를 씨에스에이에 입력하여 덧셈연산을 수행하는 제 8 단계; 및 씨에스에이의 출력값을 제 1 씨엘에이에 입력하여 덧셈연산을 수행하는 제 9 단계의 출력값을 입력값으로 하여 제 3 단계 내지 제 7 단계의 연산을 수행하며,An eighth step of performing addition operation by inputting the values of the third buffer of the N th step, X [k + 2] and T [i + 2], to the CS; And performing the operations of the third to seventh steps by using the output value of the ninth step of performing the addition operation by inputting the output value of the CS to the first CL,
N+3 번째 스텝이,N + 3th step,
N 번째 스텝의 제 2 버퍼의 값, X[k+3] 및 T[i+3]을 씨에스에이에 입력하여 덧셈연산을 수행하는 제 8 단계; 및 씨에스에이의 출력값을 제 1 씨엘에이에 입력하여 덧셈연산을 수행하는 제 9 단계의 출력값을 입력값으로 하여 제 3 단계 내지 제 7 단계의 연산을 수행하는 것을 특징으로 한다.An eighth step of performing addition operation by inputting the values of the second buffer of the N th step, X [k + 3] and T [i + 3], to the CS; And performing operations of the third to seventh steps by using the output value of the ninth step of performing the addition operation by inputting the output value of the CS to the first CL as an input value.
이하에서는, 첨부한 도면을 참조하여 본 발명의 장점, 특징 및 바람직한 살시례에 대해 상세히 설명한다.Hereinafter, with reference to the accompanying drawings will be described in detail the advantages, features and preferred salicyle of the present invention.
상기한 바와 같이, 종래의 엠디5 해쉬함수 4 스텝 처리과정에서는 도 4 에 도시된 바대로, 첫번째 버퍼 A 의 값은 첫번째 과정에서 덧셈에 사용되고 첫번째 버퍼 B 의 값은 네번째 과정에서 덧셈에 사용된다. 또한, 첫번째 버퍼 C 의 값은 세번째 과정의 덧셈에 사용되고 첫번째 버퍼 D 의 값은 두번째 과정의 덧셈에 이용된다. 본 발명에서는 상기와 같은 종래의 기술을 개선하여, 도 3 의 처리과정을 4 개로 연결하였을 때 첫번째 과정의 초기값 A, B, C, D 를 이용하여 두번째, 세번째, 네번째의 덧셈과정이 동시에 수행되도록 한다.As described above, in the conventional MD5 hash function four step process, as shown in FIG. 4, the value of the first buffer A is used for addition in the first process and the value of the first buffer B is used for addition in the fourth process. Also, the value of the first buffer C is used for addition of the third process and the value of the first buffer D is used for addition of the second process. In the present invention, by improving the prior art as described above, when the process of Figure 3 is connected to four, the second, third, fourth addition process is performed simultaneously using the initial values A, B, C, D of the first process. Be sure to
따라서, 본 발명에서는 도 5a 및 도 5b 에 도시된 바와 같이 첫번째 과정이 완료되어야 두번째 과정이 시작되는 종래의 완전 직렬형 구조를 개선하여, 도 6 을 4 개로 연결하여 처리할 때 두개의 덧셈부분이 동시에 수행되는 구조를 제공한다.Therefore, in the present invention, as shown in FIGS. 5A and 5B, the first full process is completed to improve the conventional fully serial structure in which the second process is started. Provides a structure that is performed at the same time.
본 발명의 구성부분은 도 6 및 도 7 과 같다. 본 발명에 따른 병렬 연산구조를 갖는 엠디5 해쉬함수 연산 방법은 도 6 에 도시된 구조 4 개를 연속으로 연결하여 4 개의 연속되는 처리과정을 만듦으로써 이루어진다. 또한, 도 6 에서 점선으로 표시된 부분이 4 개의 처리과정에서 동시에 처리되어야 한다. 따라서, 4 스텝을 한 묶음으로 하여 처리하게 되는데, 이는 4 스텝을 수행할 때 각 스텝에 있는 2 번의 덧셈과정을 동시에 처리할 수 있기 때문이다.The components of the present invention are shown in FIGS. 6 and 7. The MD5 hash function calculation method having a parallel operation structure according to the present invention is achieved by connecting four structures shown in FIG. 6 in succession to create four consecutive processes. In addition, the portion indicated by the dotted line in FIG. 6 should be processed simultaneously in four processes. Therefore, four steps are processed in a batch, because when four steps are performed, two addition processes in each step can be processed simultaneously.
이를 위하여, 본 발명에 따른 병렬 연산구조를 갖는 엠디5 해쉬함수 연산 방법은, F/G/H/I 함수값을 메시지, 사인(SIGN) 값 다음에 덧셈이 이루어지도록 하고 F/G/H/I 함수값을 계산하는 동안 메시지, 사인(SIGN) 값의 덧셈을 수행한다. 메시지, 사인(SIGN) 값, 초기값 A, B, C, D 는 미리 결정된 값이므로 4 개의 처리과정에서 동시에 수행될 수 있다.To this end, in the MD5 hash function calculation method having a parallel operation structure according to the present invention, the F / G / H / I function value is added after the message and the SIGN value, and the F / G / H / During the calculation of the I function value, the message and SIGN values are added. Since the message, SIGN value, initial values A, B, C, and D are predetermined values, they can be simultaneously executed in four processes.
도 6 은 본 발명에 따른 엠디5 해쉬함수 1 스텝 처리장치의 블록 다이어그램이다. 도 6 에 도시된 바와 같이, 첫번째 덧셈연산은 씨에스에이(40, CSA : Carry Save Adder)를 사용하여 이루어지며, 초기값 A 와 메시지, 사인(SIGN) 값 등 3 개의 값을 덧셈하게 된다. 또한, 씨에스에이(40)에서 발생된 합(SUM)과 캐리 (CARRY)를 더하기 위해서 씨에스에이 다음 단에는 씨엘에이(30, CLA : Carry Lookahead Adder)를 구비한다. 씨엘에이(30)의 덧셈 결과값은 F/G/H/I 의 함수값과 씨엘에이에서 덧셈연산이 이루어지고, 이후에 쉬프트연산과 초기값 B 와의 덧셈연산이 이루어진다. 이 과정에서 첫번째 덧셈연산인 씨에스에이와 두번째 덧셈연산인 씨엘에이는 4 개의 처리과정에서 동시에 수행된다.6 is a block diagram of an MD5 hash function 1 step processing apparatus according to the present invention. As shown in FIG. 6, the first addition operation is performed by using a Carry Save Adder (CSA) 40, and adds three values such as an initial value A, a message, and a SIGN value. In addition, in order to add the sum (SUM) and the carry (CARRY) generated in the CS 40, the next stage of the CS is provided with a CL (30, CLA: Carry Lookahead Adder). The addition result of the CL 30 is a function of F / G / H / I and an addition operation in the CL, and then an addition operation of the shift operation and the initial value B is performed. In this process, the first addition operation, CS, and the second addition operation, SL, are performed simultaneously in four processes.
도 7 은 본 발명에 따른 엠디5 해쉬함수 4 스텝 처리과정을 나타내는 도로서, 도 6 의 구조를 이용하여 본 발명에 따른 병렬 연산구조를 갖는 엠디5 해쉬함수 연산과정을 구현한 것이다. 도 7 에 도시된 바와 같이, 본 발명에 따른 병렬 연산구조를 갖는 엠디5 해쉬함수 연산과정은, 도 6 의 구조를 4 개 연속으로 연결하고 도 6 에서 점선으로 표시된 부분을 분리하여 4 개를 동시에 수행하도록 한다.FIG. 7 illustrates an MD5 hash function 4-step process according to the present invention, and implements an MD5 hash function calculation process having a parallel operation structure according to the present invention using the structure of FIG. 6. As shown in FIG. 7, the MD5 hash function calculation process having a parallel operation structure according to the present invention connects the structure of FIG. 6 in succession and separates the portions indicated by the dotted lines in FIG. Do it.
상세하게는, 초기값 A, B, C, D 가 첫 단계(1st step) 버퍼에 저장된 후에 A, B, C, D 값은 동시에 메시지 값(X), 사인(SIGN) 값(T)과 함께 씨에스에이(40), 씨엘에이(30)를 거쳐 계산이 이루어진다. 또한, D 값을 이용하여 계산된 값은 두번째 단계(2nd step)로 일점쇄선을 따라 전달되고, C 값을 이용하여 계산된 값은 세번째 단계(3rd step)로 일점쇄선을 따라 전달되며, B 값을 이용하여 계산된 값은 네번째 단계(4th step)로 일점쇄선을 따라 전달된다. 이 전달과정도 동시에 이루어진다. 또한, A, B, C, D 값이 씨에스에이(40)와 씨엘에이(30)를 거쳐 계산되고 두번째 씨엘에이로 전달되는 과정도 동시에 이루어진다. 즉, 초기값 A, B, C, D 를 이용한 씨에스에이(40)와 씨엘에이(30)에서의 덧셈연산, B, C, D 를 이용한 씨에스에에(40)와 씨엘에이(30)에서의 각각의 덧셈연산이 동시에 병렬로 수행되며, 결과값의 전달 또한 동시에 이루어진다. 따라서, 각 과정이 순차적으로 이루어질 때에 비하여 현저하게 처리속도를 향상시킬 수 있다.Specifically, after the initial values A, B, C, and D are stored in the first step buffer, the A, B, C, and D values are simultaneously combined with the message value (X) and the SIGN value (T). Calculation is made through the CS 40 and the SL 30. In addition, the value calculated using the D value is transferred along the dashed line in the 2nd step, and the value calculated using the C value is transferred along the dashed line in the 3rd step, and the B value The calculated value is transferred along the dashed line in the fourth step. This delivery process takes place simultaneously. In addition, the process of A, B, C, D value is calculated through the CS 40 and the CL 30 and transferred to the second CL is also performed at the same time. In other words, the addition operation in the CS 40 and the SL 30 using the initial values A, B, C, and D, the CS 40 and the SL 30 using the B, C, and D, respectively. Each addition operation is performed in parallel at the same time, and the result is transferred simultaneously. Therefore, the processing speed can be remarkably improved as compared to when each process is performed sequentially.
두번째 씨엘에이(30)에 전달된 후에는 쉬프터(20)와 세번째 씨엘에이(30)를 거치는 순차적(sequential) 연산이 진행된다. A 를 이용하여 계산된 A' 값은 두번째 단계의 F/G/H/I 함수값 계산과 세번째 씨엘에이에 이용된다. B 를 이용하여 계산된 A'' 값은 세번째 단계의 계산에 사용되고, C 를 이용하여 계산된 A''' 값은 네번째 단계의 계산에 이용된다. 결국, A' 이 만들어져야 A'' 생성이 가능하고 차례대로 A''' 이 만들어진다.After being delivered to the second CL 30, a sequential operation through the shifter 20 and the third CL 30 is performed. The A 'value calculated using A is used to calculate the F / G / H / I function value of the second stage and the third CL. The A '' value calculated using B is used for the third step, and the A '' 'value calculated using C is used for the fourth step. Eventually, A 'must be created to create A' 'and in turn A' ''.
종래의 구조와 본 발명의 구조에서의 계산속도를 비교하면 표 1 과 같다.Comparing the calculation speed in the conventional structure and the structure of the present invention is shown in Table 1.
계산속도를 계산하는데는 대략 씨에스에이 : 씨엘에이 = 0.4 : 1 의 비율을 사용하였다. 물론 씨에스에이와 씨엘에이의 속도 차이가 적을수록 본 발명의 구조에서의 계산속도와 종래의 구조에서의 계산속도 차이는 더욱 커질 것이다.In calculating the calculation speed, the ratio of CS: CL = 0.4: 1 was used. Of course, the smaller the speed difference between the CS and the SL, the larger the difference in the calculation speed in the structure of the present invention and the conventional structure.
표 1 의 비교결과 도 5a 의 지연시간을 1 로 할때 도 5b 는 0.7 로 대략 30 % 가 개선되었다. 그러나, 본 발명의 구조에서의 지연시간은 0.58 로 도 5a 에 비하여 대략 42 %, 도 5b 에 12 % 가 개선되었다. 따라서, 표 1 의 결과를 통해 본 발명은 종래의 구조에 비하여 처리속도를 크게 향상시켰음을 알 수 있다.As a result of the comparison of Table 1, when the delay time of FIG. 5A is 1, FIG. However, the delay time in the structure of the present invention is 0.58, which is improved by approximately 42% compared to FIG. 5A and 12% in FIG. 5B. Therefore, it can be seen from the results of Table 1 that the present invention significantly improved the processing speed compared to the conventional structure.
이상 설명한 바대로, 본 발명은 엠디5 해쉬함수 처리과정 중 소정의 연산과정을 병렬로 처리함으로써 처리속도를 현저하게 향상시킬 수 있다.As described above, the present invention can significantly improve the processing speed by processing a predetermined operation in parallel in the MD5 hash function processing.
또한, 고속의 메시지 인증코드의 생성으로 전자상거래, 디지털 서명 등을 효과적으로 구현할 수 있다.In addition, it is possible to effectively implement electronic commerce, digital signature, etc. by generating a high-speed message authentication code.
본 발명의 바람직한 실시례가 특정 용어들을 사용하여 기술되어 왔지만, 그러한 기술은 오로지 설명을 하기 위한 것이며, 다음의 청구범위의 기술적 사상 및 범위로부터 이탈되지 않고서 여러 가지 변경 및 변화가 가해질 수 있는 것으로 이해되어져야 한다.While the preferred embodiments of the present invention have been described using specific terms, such descriptions are for illustrative purposes only, and it is understood that various changes and modifications may be made without departing from the spirit and scope of the following claims. Should be done.
도 1 은 엠디5 해쉬함수를 이용한 MAC(Message Authentication Code)의 생성과정을 나타내는 도.1 is a diagram illustrating a process of generating a message authentication code (MAC) using an MD5 hash function.
도 2 는 512 비트 메시지로부터 128 비트 엠디5 해쉬함수 출력값을 생성하는 과정을 나타내는 도.FIG. 2 is a diagram illustrating a process of generating a 128-bit MP5 hash function output value from a 512-bit message. FIG.
도 3 은 64 스텝 반복구조의 엠디5 해쉬함수 처리과정에서 1 스텝 처리과정을 나타내는 도.3 is a diagram illustrating a one-step process in the MD5 hash function process of the 64-step repeat structure;
도 4 는 종래의 엠디5 해쉬함수 4 스텝 처리과정을 나타내는 도.4 is a diagram illustrating a conventional MD5 hash function 4-step process.
도 5 는 종래의 엠디5 해쉬함수 1 스텝 처리장치의 블록 다이어그램.5 is a block diagram of a conventional MD5 hash function 1 step processing apparatus.
도 6 은 본 발명에 따른 엠디5 해쉬함수 1 스텝 처리장치의 블록 다이어그램.6 is a block diagram of an MD5 hash function 1 step processing apparatus according to the present invention;
도 7 은 본 발명에 따른 엠디5 해쉬함수 4 스텝 처리과정을 나타내는 도.7 is a diagram showing a four-step MD5 hash function processing according to the present invention.
*** 도면의 주요부분에 대한 부호 설명 ****** Explanation of symbols on main parts of drawing ***
10 : 덧셈기 20 : 쉬프터10: adder 20: shifter
30 : 씨엘에이(CLA) 40 : 씨에스에이(CSA)30: CLA 40: CSA
Claims (5)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0049498A KR100473449B1 (en) | 2002-08-21 | 2002-08-21 | Calculating method for message digest 5 hashing function having parallel calculating structure |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0049498A KR100473449B1 (en) | 2002-08-21 | 2002-08-21 | Calculating method for message digest 5 hashing function having parallel calculating structure |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040017434A KR20040017434A (en) | 2004-02-27 |
KR100473449B1 true KR100473449B1 (en) | 2005-03-10 |
Family
ID=37322984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2002-0049498A KR100473449B1 (en) | 2002-08-21 | 2002-08-21 | Calculating method for message digest 5 hashing function having parallel calculating structure |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100473449B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015053945A1 (en) * | 2013-10-09 | 2015-04-16 | Intel Corporation | Generating multiple secure hashes from a single data buffer |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7401110B1 (en) * | 2004-09-09 | 2008-07-15 | Sun Microsystems, Inc. | System, method and apparatus for an improved MD5 hash algorithm |
KR100761132B1 (en) * | 2005-09-26 | 2007-09-21 | 엘지전자 주식회사 | Apparatus and method for computing SHA-1 |
KR100656375B1 (en) * | 2005-12-10 | 2006-12-11 | 한국전자통신연구원 | Low power hash function encryption device |
-
2002
- 2002-08-21 KR KR10-2002-0049498A patent/KR100473449B1/en not_active IP Right Cessation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015053945A1 (en) * | 2013-10-09 | 2015-04-16 | Intel Corporation | Generating multiple secure hashes from a single data buffer |
US9425953B2 (en) | 2013-10-09 | 2016-08-23 | Intel Corporation | Generating multiple secure hashes from a single data buffer |
US9917689B2 (en) | 2013-10-09 | 2018-03-13 | Intel Corporation | Generating multiple secure hashes from a single data buffer |
Also Published As
Publication number | Publication date |
---|---|
KR20040017434A (en) | 2004-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6829355B2 (en) | Device for and method of one-way cryptographic hashing | |
EP1360795B1 (en) | Implentation of the SHA1 algorithm | |
US5351299A (en) | Apparatus and method for data encryption with block selection keys and data encryption keys | |
US20110211688A1 (en) | Data converter, data conversion method and program | |
US7886210B2 (en) | Apparatus for pipelined cyclic redundancy check circuit with multiple intermediate outputs | |
US8370411B2 (en) | Generating unique random numbers for multiple instantiations | |
Mendel et al. | Finding collisions for round-reduced SM3 | |
Kahri et al. | Efficient FPGA hardware implementation of secure hash function SHA-256/Blake-256 | |
KR100473449B1 (en) | Calculating method for message digest 5 hashing function having parallel calculating structure | |
US8577942B2 (en) | Electronic device and data processing device for implementing cryptographic algorithms | |
CN108494547B (en) | AES encryption system and chip | |
Mohamed et al. | SHA-2 hardware core for virtex-5 FPGA | |
JP2825205B2 (en) | Encryption device | |
JP2003098960A (en) | Crystograph decoding device | |
El Bakrawy et al. | A fast and secure one-way hash function | |
Kahri et al. | An FPGA implementation and comparison of the SHA-256 and Blake-256 | |
US7151829B2 (en) | System and method for implementing a hash algorithm | |
CN109462458B (en) | Method for realizing parallel CRC (cyclic redundancy check) by multistage pipeline circuit | |
Hulle et al. | Compact Reconfigurable Architecture for Sosemanuk Stream Cipher | |
US7206994B2 (en) | Checksum calculator with tree structure of reduction stages | |
CN114626537B (en) | Irreducible polynomial and quantum secure hash value calculation method based on x86 platform SIMD | |
Danda | Design and analysis of hash functions | |
US5781465A (en) | Method and apparatus for fast carry generation detection and comparison | |
RU2309549C2 (en) | Method for cryptographic transformation of digital data | |
Das et al. | On usage of cellular automata in strengthening stream ciphers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20080212 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |