KR101428770B1 - 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 - Google Patents
해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 Download PDFInfo
- Publication number
- KR101428770B1 KR101428770B1 KR20130060863A KR20130060863A KR101428770B1 KR 101428770 B1 KR101428770 B1 KR 101428770B1 KR 20130060863 A KR20130060863 A KR 20130060863A KR 20130060863 A KR20130060863 A KR 20130060863A KR 101428770 B1 KR101428770 B1 KR 101428770B1
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- chain variable
- state data
- data
- rti
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Abstract
본 발명은 512비트 메시지와 512비트 연쇄변수 데이터를 입력받아 128비트 레지스터 기반의 단계 함수를 반복 연산하여 해시값의 기초가 되는 갱신된 512비트 연쇄변수 데이터를 산출하기 위한, 고속 메시지 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법을 개시한다. 이를 위해, 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치는 메시지를 입력받아 복수의 확장 메시지를 생성하는 메시지 확장부; 연쇄변수 데이터를 입력받아 초기 상태 데이터로 변환하는 연쇄변수 초기 변환부; 초기 상태 데이터와 복수의 확장 메시지를 기초로 단계 함수를 반복 연산하여 최종 상태 데이터를 산출하는 단계 함수 연산부; 및 최종 상태 데이터를 이용하여 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 연쇄변수 최종 변환부를 포함한다.
Description
본 발명은 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법에 관한 것으로, 보다 구체적으로 512비트 메시지와 512비트 연쇄변수 데이터를 입력받아 128비트 레지스터 기반의 단계 함수를 반복 연산하여 해시값의 기초가 되는 갱신된 512비트 연쇄변수 데이터를 산출하는, 고속 메시지 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법에 관한 것이다.
메시지에 대한 무결성의 제공은 각종 기기의 통신 및 자료 저장을 위한 암호 어플리케이션의 주된 기능이다. 해시(Hash) 함수는 이러한 메시지의 무결성을 보장하기 위한 함수로써, 메시지의 서명, 인증 등에서 널리 활용된다. 일반적으로, 해시 함수에서는 연쇄변수(Chain variable) 데이터가 사용되고, 메시지를 특정 길이 단위로 분할한 후, 각 메시지 단위들을 연쇄변수 데이터와 함께 압축 함수에 입력하여 연쇄변수 데이터를 갱신한다. 압축 함수에서 출력되는 최종 연쇄변수 데이터는 다양한 알고리즘에 의해 가공되어 해당 메시지의 해시값이 된다.
이와 관련하여, '256비트 출력을 갖는 해쉬 알고리즘'을 발명의 명칭으로 하는 한국등록특허 제10-0916805호는 임의의 길이의 메시지 비트열을 입력 받아 워드열로 변환하고, 입력된 메시지를 기설정된 비트로 변환하여 압축 연산을 수행함으로써 연쇄변수를 산출하는 해시 알고리즘 기법을 제시하고 있다.
이러한, 해시 함수의 속도 효율성을 높이기 위해서는 해시 함수의 핵심 알고리즘인 압축 함수가 암호 어플리케이션에 특화된 칩 또는 CPU에 최적 구현이 가능하도록 설계되어야 할 필요가 있다.
본 발명의 목적은, 512비트의 출력값을 갖고, 기존 공격에 대한 안정성을 보장하면서, 고속 메시지 해싱이 가능한 해시 함수에 적용되는 128비트 레지스터 기반의 압축 함수를 연산하는 기법을 제공함에 있다.
상기한 목적을 달성하기 위한 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치는, 메시지를 입력받아 복수의 확장 메시지를 생성하는 메시지 확장부; 연쇄변수 데이터를 입력받아 초기 상태 데이터로 변환하는 연쇄변수 초기 변환부; 상기 초기 상태 데이터와 상기 복수의 확장 메시지를 기초로 단계 함수를 반복 연산하여 최종 상태 데이터를 산출하는 단계 함수 연산부; 및 상기 최종 상태 데이터를 이용하여 상기 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 연쇄변수 최종 변환부를 포함하는 것을 특징으로 한다.
이때, 상기 메시지 확장부는, 16개의 32비트 서브 메시지들(, , … , , )이 연접되어 구성된 512비트 메시지()를 입력받아, 수학식 에 기초하여 각각 12개의 32비트 서브 확장 메시지들(, , … , , )이 연접되어 구성되는 32개의 384비트 확장 메시지()를 생성할 수 있다. 여기서, r은 인 정수이고, 은 x를 16으로 나누었을 때의 나머지를 출력하는 연산을 의미한다.
이때, 상기 연쇄변수 초기 변환부는, 16개의 32비트 서브 연쇄변수 데이터들(, , … , , )이 연접되어 구성된 512비트 연쇄변수 데이터()를 입력받아, 수학식 에 기초하여 16개의 32비트 초기 서브 상태 데이터들(, , … , , )이 연접되어 구성되는 512비트 초기 상태 데이터()로 변환할 수 있다.
이때, 상기 단계 함수 연산부는, 상기 512비트 초기 상태 데이터()와 상기 32개의 384비트 확장 메시지()를 기초로, 수학식 ; ; ; ; 을 연산하는 단계 함수를 반복 연산하여 최종 상태 데이터를 산출할 수 있다. 여기서, 는 각각 32비트인 x, y의 논리적 배타합을 출력하는 연산, 는 각각 32비트인 x, y를 양의 정수로 표현한 값의 합을 232로 나누었을 때의 나머지를 32비트로 출력하는 연산, 는 32비트인 x를 왼쪽으로 a비트만큼 순환이동시켜 출력하는 연산을 의미한다.
이때, 상기 단계 함수 연산부는, 상기 단계 함수를 r에 대해 0에서 31까지 32회 반복하여 연산하여, 16개의 32비트 최종 서브 상태 데이터들(, , … ,, )이 연접되어 구성되는 512비트 최종 상태 데이터()를 산출할 수 있다.
또한, 상기한 목적을 달성하기 위한 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법은, 메시지를 입력받아 복수의 확장 메시지를 생성하는 단계; 연쇄변수 데이터를 입력받아 초기 상태 데이터로 변환하는 단계; 상기 초기 상태 데이터와 상기 복수의 확장 메시지를 기초로 단계 함수를 반복 연산하여 최종 상태 데이터를 산출하는 단계; 및 상기 최종 상태 데이터를 이용하여 상기 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 하는 단계를 포함하는 것을 특징으로 한다.
이때, 상기 복수의 확장 메시지를 생성하는 단계에서는, 16개의 32비트 서브 메시지들(, , … , , )이 연접되어 구성된 512비트 메시지()를 입력받아, 수학식 에 기초하여 각각 12개의 32비트 서브 확장 메시지들(, , … , , )이 연접되어 구성되는 32개의 384비트 확장 메시지()를 생성할 수 있다. 여기서, r은 인 정수이고, 은 x를 16으로 나누었을 때의 나머지를 출력하는 연산을 의미한다.
이때, 상기 연쇄변수 데이터를 입력받아 상기 초기 상태 데이터로 변환하는 단계에서는, 16개의 32비트 서브 연쇄변수 데이터들(, , … , , )이 연접되어 구성된 512비트 연쇄변수 데이터()를 입력받아, 수학식 에 기초하여 16개의 32비트 초기 서브 상태 데이터들(, , … , , )이 연접되어 구성되는 512비트 초기 상태 데이터()로 변환할 수 있다.
이때, 상기 단계 함수를 반복 연산하여 상기 최종 상태 데이터를 산출하는 단계에서는, 상기 512비트 초기 상태 데이터()와 상기 32개의 384비트 확장 메시지()를 기초로, 수학식 ; ; ; ; 을 연산하는 단계 함수를 반복 연산하여 최종 상태 데이터를 산출할 수 있다. 여기서, 는 각각 32비트인 x, y의 논리적 배타합을 출력하는 연산, 는 각각 32비트인 x, y를 양의 정수로 표현한 값의 합을 232로 나누었을 때의 나머지를 32비트로 출력하는 연산, 는 32비트인 x를 왼쪽으로 a비트만큼 순환이동시켜 출력하는 연산을 의미한다.
이때, 상기 단계 함수를 반복 연산하여 상기 최종 상태 데이터를 산출하는 단계에서는, 상기 단계 함수를 r에 대해 0에서 31까지 32회 반복하여 연산하여, 16개의 32비트 최종 서브 상태 데이터들(, , … , , )이 연접되어 구성되는 512비트 최종 상태 데이터()를 산출할 수 있다.
본 발명에 따르면, 단순한 메시지 확장 알고리즘을 제공하는 한편, 대부분의 CPU에서 보편적으로 사용되는 비트 덧셈(Addition), 비트 순환이동(Rotation), 비트 논리적 배타합(XOR: eXclusive-OR) 연산자들만을 조합한 압축 연산 알고리즘을 제공함으로써, 128비트 레지스터를 이용한 고속 병렬처리가 가능하고, 이에 따라 CPU가 적은 연산량만으로도 압축 연산을 수행할 수 있도록 하는 효과가 있다.
도 1은 본 발명의 실시예에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치의 구성을 설명하기 위한 블록도이다.
도 2는 도 1에 도시된 단계 함수 연산부에서 수행되는 단계 함수의 연산을 도식화한 도면이다.
도 3은 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법을 설명하기 위한 흐름도이다.
도 4는 도 3에 도시된 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법에서 단계 함수를 반복하여 연산하는 과정을 보다 구체적으로 설명하기 위한 흐름도이다.
도 2는 도 1에 도시된 단계 함수 연산부에서 수행되는 단계 함수의 연산을 도식화한 도면이다.
도 3은 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법을 설명하기 위한 흐름도이다.
도 4는 도 3에 도시된 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법에서 단계 함수를 반복하여 연산하는 과정을 보다 구체적으로 설명하기 위한 흐름도이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
이하에서는 도 1 및 도 2를 참조하여, 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치의 구성 및 그 동작에 대하여 설명하도록 한다.
도 1은 본 발명의 실시예에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치의 구성을 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명에 따른 압축 연산 수행 장치(10)는, 외부로부터 메시지(M, 20)를 입력받아 복수의 확장 메시지를 생성하는 메시지 확장부(100), 외부로부터 연쇄변수 데이터(CV, 30)를 입력받아 단계 함수의 초기 상태 데이터로 변환하는 연쇄변수 초기 변환부(200), 메시지 확장부(100)에 의해 생성된 복수의 확장 메시지와 연쇄변수 초기 변환부(200)에 의해 변환된 초기 상태 데이터에 기초하여 단계 함수를 반복 연산하여 최종 상태 데이터를 산출하는 단계 함수 연산부(300) 및 단계 함수 연산부(300)에 의해 산출된 최종 상태 데이터를 이용하여 연쇄변수 초기 변환부(200)에 입력된 연쇄변수 데이터(CV, 30)를 갱신한 연쇄변수 데이터(CV', 40)를 출력하는 연쇄변수 최종 변환부(400)를 포함한다.
메시지 확장부(100)는 압축 연산 수행 장치(10)에 별도로 구비되는 인터페이스(미도시)를 통해 사용자로부터 512 비트수를 갖는 메시지(M)을 입력받고, 그로부터 32개의 384 비트수를 갖는 확장 메시지들(, , … , , ; , )을 생성한다. 이때, 메시지 확장부(100)로 입력되는 512비트 메시지(M)는 하기의 수학식 1로 표현되는 바와 같이 각각 32 비트수를 갖는 16개의 서브 메시지들(, , … , , )이 연접되어 구성된다.
메시지 확장부(100)는 입력된 512비트 메시지()로부터 하기의 수학식 2로 표현되는 바와 같이 12개의 32 비트수를 갖는 서브 확장 메시지들(, , … , , )이 연접되어 구성되는 384 비트수를 갖는 확장 메시지(, )를 생성한다.
여기서, 은 (12r+1)을 16으로 나누었을 때의 나머지를 출력하는 연산을 의미한다. 한편, 메시지 확장부(100)는 입력된 512비트 메시지()로부터 생성한 32개의 384비트 확장 메시지들(, , … , , ; , )을 단계 함수 연산부(300)로 출력한다.
연쇄변수 초기 변환부(200)는 압축 연산 수행 장치(10)에 별도로 구비되는 인터페이스 또는 외부에 위치하는 연쇄변수 생성 수단(미도시)으로부터 512 비트수를 갖는 연쇄변수 데이터(CV)를 입력받고, 이를 512 비트수를 갖는 초기 상태 데이터(X0)로 변환한다. 이때, 연쇄변수 초기 변환부(200)로 입력되는 512비트 연쇄변수 데이터(CV)는 하기의 수학식 4로 표현되는 바와 같이 각각 32 비트수를 갖는 16개의 서브 연쇄변수 데이터들(, , … , , )이 연접되어 구성된다.
연쇄변수 초기 변환부(200)는 입력된 512비트 연쇄변수 데이터()를 하기의 수학식 5로 표현되는 바와 같이 16개의 32 비트수를 갖는 초기 서브 상태 데이터들(, , … , , )이 연접되어 구성되는 512 비트수를 갖는 초기 상태 데이터(X0)로 변환한다.
단계 함수 연산부(300)는 연쇄변수 초기 변환부(200)로부터 입력받은 512비트 초기 상태 데이터()를 초기값으로, 메시지 확장부(100)로부터 입력받은 32개의 384비트 확장 메시지들(, , … , , ; , )을 이용하여 하기의 수학식 7 내지 수학식 11의 연산이 수행되는 단계 함수를 반복 연산하여 최종 상태 데이터를 산출한다.
여기서, 는 각각 32비트인 x, y의 논리적 배타합을 출력하는 연산을 의미하고, 는 각각 32비트인 x, y를 양의 정수로 표현한 값의 합을 232로 나누었을 때의 나머지를 32비트로 출력하는 연산을 의미하며, 는 32비트인 x를 왼쪽으로 a비트만큼 순환이동시켜 출력하는 연산을 의미한다. 이때, 단계 함수 연산부(300)는 n()회째 단계 함수에서 수학식 7에 따른 연산을 먼저 수행한 후, 수학식 8 내지 수학식 11에 따른 연산을 병렬적으로 수행할 수 있다. 단계 함수 연산부(300)는 상기의 수학식 7 내지 수학식 11과 같은 단계 함수를 32회 반복하여 연산하고, 단계 함수를 32회째 연산한 결과값들(, , … , , )을 하기의 수학식 12와 같이 연접하여 최종 상태 데이터(X32)를 산출한다. 단계 함수 연산부(300)는 단계 함수를 반복 연산하여 산출한 최종 상태 데이터(X32)를 연쇄변수 최종 변환부(400)로 출력한다.
한편, 단계 함수 연산부(300)가 서브 상태 데이터들(, , … , , )과 서브 확장 메시지들(, , … , , )을 입력값으로 (r+1)회째 단계 함수를 연산함으로써 서브 상태 데이터들(, , … , , )을 산출하는 연산은 도 2에 도시된 바와 같이 나타낼 수 있다.
연쇄변수 최종 변환부(400)는 단계 함수 연산부(300)로부터 입력받은 최종 상태 데이터()를 이용하여 연쇄변수 초기 변환부(200)에 입력되는 연쇄변수 데이터()를 갱신하고, 갱신된 연쇄변수 데이터()를 출력한다. 이때, 연쇄변수 최종 변환부(400)는 하기의 수학식 13에 기초하여 512 비트수를 갖는 연쇄변수 데이터()를 갱신한 연쇄변수 데이터()를 생성한다.
연쇄변수 최종 변환부(400)로부터 출력되는 갱신된 512비트 연쇄변수 데이터()는 이미 공지된 다양한 알고리즘에 따라 가공되어 메시지 확장부(100)로 입력되는 512비트 메시지()에 대한 해시값으로 이용된다.
이하에서는 도 3 및 도 4를 참조하여, 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치에 의해 수행되는 압축 연산 수행 방법에 대하여 설명하도록 한다. 앞서, 도 1 및 도 2를 참조하여 설명한 본 발명에 따른 압축 연산 수행 장치(10)의 동작과 일부 중복되는 부분은 생략하여 설명하기로 한다.
도 3은 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법을 설명하기 위한 흐름도이다.
도 3을 참조하면, 본 발명에 따른 압축 연산 수행 방법은, 먼저 메시지 확장부(100)가 사용자 인터페이스를 통해 압축 및 암호화의 대상이 되는 512비트 메시지()를 입력받는다(S100).
그 다음으로, 메시지 확장부(100)는 수학식 3에 기초하여, 16개의 32비트 서브 메시지들(, , … , , )이 연접되어 구성된 512비트 메시지()로부터 각각 12개의 32비트 서브 확장 메시지들(, , … , , )이 연접되어 구성되는 32개의 384비트 확장 메시지들(, , … , , ; , )을 생성한다(S200). 이때, 메시지 확장부(100)는 생성한 32개의 384비트 확장 메시지들(, )을 단계 함수 연산부(300)로 출력한다.
한편, 연쇄변수 초기 변환부(200)는 사용자 인터페이스 또는 외부의 연쇄변수 생성 수단으로부터 16개의 32비트 서브 연쇄변수 데이터들(, , … ,, )이 연접되어 구성된 512비트 연쇄변수 데이터()를 입력받고, 수학식 6에 기초하여 512비트 연쇄변수 데이터()를 16개의 32비트 초기 서브 상태 데이터들(, , … , , )이 연접되어 구성되는 512비트 초기 상태 데이터()로 변환한다(S300). 이때, 연쇄변수 초기 변환부(200)는 변환한 512비트 초기 상태 데이터()를 단계 함수 연산부(300)로 출력한다.
그 다음으로, 단계 함수 연산부(300)는 메시지 확장부(100)로부터 수신한 32개의 384비트 확장 메시지들(, )과 연쇄변수 초기 변환부(200)로부터 수신한 512비트 초기 상태 데이터()에 기초하여 수학식 7 내지 수학식 11과 같이 표현되는 단계 함수를 반복하여 연산한다(S400). 이때, 단계 함수 연산부(300)는 각각 32 비트수를 갖는 16개의 초기 서브 상태 데이터들(, , … , , )을 1회째 단계 함수의 입력값으로 하고, (r+1)회째 단계 함수의 연산 시에 각각 32비트수를 갖는 12개의 서브 확장 메시지들(, , … , , )을 적용하여 단계 함수를 32회 반복하여 연산한다.
그리고, 단계 함수 연산부(300)는 마지막으로 연산된 단계 함수의 결과값들(즉, 32회째에 연산된 단계 함수의 결과값들; , , … , , )을 연접하여 512비트 최종 상태 데이터()를 산출한다(S500). 이때, 단계 함수 연산부(300)는 산출한 512비트 최종 상태 데이터()를 연쇄변수 최종 변환부(400)로 출력한다.
마지막으로, 연쇄변수 최종 변환부(400)는 단계 함수 연산부(300)로부터 수신한 512비트 최종 상태 데이터()를 이용하여 연쇄변수 초기 변환부(200)로 입력되는 512비트 연쇄변수 데이터()를 갱신하여 출력한다(S600). 이때, 연쇄변수 최종 변환부(400)는 수학식 13에 기초하여 연쇄변수 초기 변환부(200)로 입력되는 512비트 연쇄변수 데이터()를 갱신하고, 갱신된 512비트 연쇄변수 데이터()를 생성하여 출력한다(S600).
도 4는 도 3에 도시된 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법을 나타낸 흐름도에서, 단계 함수를 반복하여 연산하는 S400 단계를 보다 구체적으로 설명하기 위한 흐름도이다.
도 4를 참조하면, 단계 함수를 반복하여 연산하는 S400 단계는, 먼저 단계 함수 연산부(300)가 메시지 확장부(100)로부터 32개의 384비트 확장 메시지들(, )을 입력받는 한편, 연쇄변수 초기 변환부(200)로부터 512비트 초기 상태 데이터()를 입력받는다(S410).
그 다음으로, 단계 함수 연산부(300)는 r값을 0으로 설정한 후, 초기 서브 상태 데이터들(, , … , , )을 입력값으로 하여 1회째 단계 함수의 연산을 시작한다(S420).
그리고, (r+1)회째 단계 함수의 연산에서, 단계 함수 연산부(300)는 수학식 7()에 따라 값을 먼저 계산하고(S430), 수학식 8(), 수학식 9(), 수학식 10(), 및 수학식 11()에 따라 결과값들(, , … , , ; , )을 산출한다(S440).
상기 S430 내지 S440 단계에 따라 (r+1)회째 단계 함수의 연산이 수행된 다음, r값이 31인지 여부를 확인한다(S450).
상기 S450 단계에서의 확인 결과, r값이 31이 아니라면(즉, r값이 31 보다 작다면), 단계 함수 연산부(300)는 r값을 1 증가시키고(S460), 상기 S430 내지 S440 단계에 따라 단계 함수를 반복하여 연산한다.
반면에, 상기 S450 단계에서의 확인 결과, r값이 31이라면, 32회째 단계 함수의 연산에서 출력된 결과값들(, , … , , )을 연접하여 512비트 최종 상태 데이터()를 출력한다(S470).
한편, 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터로 판독 가능한 기록 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 기록 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터로 판독 가능한 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 모든 형태의 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상에서와 같이 도면과 명세서에서 최적의 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: 압축 연산 수행 장치
100: 메시지 확장부
200: 연쇄변수 초기 변환부
300: 단계 함수 연산부
400: 연쇄변수 최종 변환부
100: 메시지 확장부
200: 연쇄변수 초기 변환부
300: 단계 함수 연산부
400: 연쇄변수 최종 변환부
Claims (12)
- 메시지를 입력받아 복수의 확장 메시지를 생성하는 메시지 확장부;
연쇄변수 데이터를 입력받아 초기 상태 데이터로 변환하는 연쇄변수 초기 변환부;
상기 초기 상태 데이터와 상기 복수의 확장 메시지를 기초로 단계 함수를 반복 연산하여 최종 상태 데이터를 산출하는 단계 함수 연산부; 및
상기 최종 상태 데이터를 이용하여 상기 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 연쇄변수 최종 변환부를 포함하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치. - 청구항 3에 있어서,
상기 단계 함수 연산부는,
상기 512비트 초기 상태 데이터()와 상기 32개의 384비트 확장 메시지()를 기초로 상기 단계 함수를 반복 연산하여 상기 최종 상태 데이터를 산출하고,
상기 단계 함수는 하기의 수학식 1 내지 5를 연산하는 함수인 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치.
수학식 1;
수학식 2;
수학식 3;
수학식 4;
수학식 5;
(여기서, 는 각각 32비트인 x, y의 논리적 배타합을 출력하는 연산, 는 각각 32비트인 x, y를 양의 정수로 표현한 값의 합을 232로 나누었을 때의 나머지를 32비트로 출력하는 연산, 는 32비트인 x를 왼쪽으로 a비트만큼 순환이동시켜 출력하는 연산을 의미한다.) - 메시지 확장부가, 메시지를 입력받아 복수의 확장 메시지를 생성하는 단계;
연쇄변수 초기 변환부가, 연쇄변수 데이터를 입력받아 초기 상태 데이터로 변환하는 단계;
단계 함수 연산부가, 상기 초기 상태 데이터와 상기 복수의 확장 메시지를 기초로 단계 함수를 반복 연산하여 최종 상태 데이터를 산출하는 단계; 및
연쇄변수 최종 변환부가, 상기 최종 상태 데이터를 이용하여 상기 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 하는 단계를 포함하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법. - 청구항 9에 있어서,
상기 단계 함수를 반복 연산하여 상기 최종 상태 데이터를 산출하는 단계는,
상기 512비트 초기 상태 데이터()와 상기 32개의 384비트 확장 메시지()를 기초로 상기 단계 함수를 반복 연산하여 상기 최종 상태 데이터를 산출하고,
상기 단계 함수는 하기의 수학식 1 내지 5를 연산하는 함수인 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법.
수학식 1;
수학식 2;
수학식 3;
수학식 4;
수학식 5;
(여기서, 는 각각 32비트인 x, y의 논리적 배타합을 출력하는 연산, 는 각각 32비트인 x, y를 양의 정수로 표현한 값의 합을 232로 나누었을 때의 나머지를 32비트로 출력하는 연산, 는 32비트인 x를 왼쪽으로 a비트만큼 순환이동시켜 출력하는 연산을 의미한다.)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130060863A KR101428770B1 (ko) | 2013-05-29 | 2013-05-29 | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 |
US14/155,756 US9288041B2 (en) | 2013-05-29 | 2014-01-15 | Apparatus and method for performing compression operation in hash algorithm |
JP2014005890A JP5728596B2 (ja) | 2013-05-29 | 2014-01-16 | ハッシュアルゴリズムにおける圧縮演算を行うための装置および方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130060863A KR101428770B1 (ko) | 2013-05-29 | 2013-05-29 | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101428770B1 true KR101428770B1 (ko) | 2014-08-08 |
Family
ID=51750076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20130060863A KR101428770B1 (ko) | 2013-05-29 | 2013-05-29 | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9288041B2 (ko) |
JP (1) | JP5728596B2 (ko) |
KR (1) | KR101428770B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160090646A (ko) * | 2015-01-22 | 2016-08-01 | 한국전자통신연구원 | 고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 그 장치 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201501437A (zh) * | 2013-06-26 | 2015-01-01 | Dawnary Tech Co Ltd | 直連式介質轉換器 |
KR101516573B1 (ko) * | 2013-07-26 | 2015-05-04 | 한국전자통신연구원 | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080025354A (ko) * | 2006-09-15 | 2008-03-20 | 고려대학교 산학협력단 | 256비트 출력을 갖는 해쉬 알고리즘 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5897662A (en) * | 1995-08-18 | 1999-04-27 | International Business Machines Corporation | Pseudo-random address generation mechanism that reduces address translation time |
US20030041242A1 (en) * | 2001-05-11 | 2003-02-27 | Sarver Patel | Message authentication system and method |
US20060034456A1 (en) * | 2002-02-01 | 2006-02-16 | Secure Choice Llc | Method and system for performing perfectly secure key exchange and authenticated messaging |
JP2003302901A (ja) * | 2002-04-11 | 2003-10-24 | Sony Corp | セルラーオートマタを適用したハッシュ値算出処理方法およびデータ処理装置 |
JP2010128392A (ja) | 2008-11-28 | 2010-06-10 | Canon Inc | ハッシュ処理装置及びその方法 |
TWI501580B (zh) * | 2009-08-07 | 2015-09-21 | Dolby Int Ab | 資料串流的鑑別 |
CN103477341B (zh) * | 2011-04-06 | 2016-05-18 | 塞尔蒂卡姆公司 | 散列算法在处理器上的有效实现 |
-
2013
- 2013-05-29 KR KR20130060863A patent/KR101428770B1/ko active IP Right Grant
-
2014
- 2014-01-15 US US14/155,756 patent/US9288041B2/en not_active Expired - Fee Related
- 2014-01-16 JP JP2014005890A patent/JP5728596B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080025354A (ko) * | 2006-09-15 | 2008-03-20 | 고려대학교 산학협력단 | 256비트 출력을 갖는 해쉬 알고리즘 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160090646A (ko) * | 2015-01-22 | 2016-08-01 | 한국전자통신연구원 | 고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 그 장치 |
KR101688636B1 (ko) * | 2015-01-22 | 2016-12-21 | 한국전자통신연구원 | 고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 그 장치 |
US9843442B2 (en) | 2015-01-22 | 2017-12-12 | Electronics And Telecommunications Research Institute | Operation method and apparatus for providing compression function for fast message hashing |
Also Published As
Publication number | Publication date |
---|---|
US20140355755A1 (en) | 2014-12-04 |
JP2014232301A (ja) | 2014-12-11 |
US9288041B2 (en) | 2016-03-15 |
JP5728596B2 (ja) | 2015-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3758281A1 (en) | Fast xmss signature verification and nonce sampling process without signature expansion | |
KR101330664B1 (ko) | 저전력 암호화 장치 및 방법 | |
CN111464308A (zh) | 一种实现多种哈希算法可重构的方法和系统 | |
JP6044738B2 (ja) | 情報処理装置、プログラム及び記憶媒体 | |
KR101428770B1 (ko) | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 | |
CN111370064A (zh) | 基于simd的哈希函数的基因序列快速分类方法及系统 | |
EP3758290A1 (en) | Parallel processing techniques for hash-based signature algorithms | |
US20140153725A1 (en) | Low-power encryption apparatus and method | |
US20120069998A1 (en) | Encryption device | |
JP5202350B2 (ja) | 暗号処理装置及び暗号処理方法及び暗号処理プログラム | |
JP5752337B1 (ja) | 情報処理システム、情報処理方法およびプログラム | |
KR101516573B1 (ko) | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 | |
JP5858938B2 (ja) | 計算装置、計算システム、計算方法 | |
US8312363B2 (en) | Residue generation | |
US9843442B2 (en) | Operation method and apparatus for providing compression function for fast message hashing | |
CN113971015B (zh) | Uia2计算电路及其数据处理方法、芯片、电子设备及存储介质 | |
JP5791562B2 (ja) | 圧縮関数演算装置、圧縮関数演算方法、およびプログラム | |
WO2022127085A1 (zh) | 执行哈希算法的电路、计算芯片、数据处理设备和方法 | |
KR20230161195A (ko) | 영지식 증명 친화적인 일방향 함수를 이용한 연산 방법, 그리고 이를 구현하기 위한 장치 | |
KR101541157B1 (ko) | 이진 확장 유한체 곱셈 연산을 수행하는 방법 | |
WO2018094566A1 (zh) | 并行哈希函数的构造方法 | |
KR101508495B1 (ko) | 아리아 암호화 장치 및 방법 | |
JP2013195453A (ja) | 演算装置 | |
JP2009258437A (ja) | べき乗計算装置及びプログラム | |
JP2007266879A (ja) | データ変換装置及びデータ変換方法及びデータ変換プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170703 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180625 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190701 Year of fee payment: 6 |