KR101516573B1 - 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 - Google Patents
해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 Download PDFInfo
- Publication number
- KR101516573B1 KR101516573B1 KR1020130088514A KR20130088514A KR101516573B1 KR 101516573 B1 KR101516573 B1 KR 101516573B1 KR 1020130088514 A KR1020130088514 A KR 1020130088514A KR 20130088514 A KR20130088514 A KR 20130088514A KR 101516573 B1 KR101516573 B1 KR 101516573B1
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- chain variable
- data
- message
- final
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 발명은 512비트 메시지와 512비트 또는 1024비트 연쇄변수 데이터를 입력받아 256비트 레지스터 기반의 단계 함수를 반복 연산하여 해시값의 기초가 되는 갱신된 512비트 또는 1024비트 연쇄변수 데이터를 산출하기 위한, 고속 메시지 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법을 개시한다. 이를 위해, 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치는 메시지와 연쇄변수 데이터를 외부로부터 입력받는 인터페이스부; 메시지로부터 복수의 확장 메시지를 생성하는 메시지 확장부; 연쇄변수 데이터를 압축 함수에 대한 초기 상태 데이터로 변환하는 연쇄변수 초기 변환부; 초기 상태 데이터와 복수의 확장 메시지를 기초로 확장 메시지 결합 함수와 단계 함수를 반복 연산한 후 최종 확장 메시지와 결합하여 최종 상태 데이터를 산출하는 단계 함수 연산부; 및 최종 상태 데이터를 이용하여 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 연쇄변수 최종 변환부를 포함한다.
Description
본 발명은 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법에 관한 것으로, 보다 구체적으로 1024비트 메시지와 512비트 연쇄변수 데이터, 또는 2048비트 메시지와 1024비트 연쇄변수 데이터를 입력받아 256비트 레지스터 기반의 확장 메시지 결합 함수와 단계 함수를 반복 연산한 후, 최종 확장 메시지와 결합하여 해시 값의 기초가 되는 갱신된 512비트 또는 1024비트 연쇄변수 데이터를 산출하는, 고속 메시지 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법에 관한 것이다.
메시지에 대한 무결성의 제공은 각종 기기의 통신 및 자료 저장을 위한 암호 어플리케이션의 주된 기능이다. 해시(Hash) 함수는 이러한 메시지의 무결성을 보장하기 위한 함수로써, 메시지의 서명, 인증 등에서 널리 활용된다. 일반적으로, 해시 함수에서는 연쇄변수(Chain variable) 데이터가 사용되고, 메시지를 특정 길이 단위로 분할한 후, 각 메시지 단위들을 연쇄변수 데이터와 함께 압축 함수에 입력하여 연쇄변수 데이터를 갱신한다. 압축 함수에서 출력되는 최종 연쇄변수 데이터는 다양한 알고리즘에 의해 가공되어 해당 메시지의 해시값이 된다.
이와 관련하여, '256비트 출력을 갖는 해쉬 알고리즘'을 발명의 명칭으로 하는 한국등록특허 제10-0916805호는 임의의 길이의 메시지 비트열을 입력받아 워드열로 변환하고, 입력된 메시지를 기설정된 비트로 변환하여 압축 연산을 수행함으로써 연쇄변수를 산출하는 해시 알고리즘 기법을 제시하고 있다.
이러한, 해시 함수의 속도 효율성을 높이기 위해서는 해시 함수의 핵심 알고리즘인 압축 함수가 암호 어플리케이션에 특화된 칩 또는 CPU에 최적 구현이 가능하도록 설계되어야 할 필요가 있다.
본 발명의 목적은 512비트 또는 1024비트 출력 값을 가지며 기존 공격에 대한 안전성을 보장하면서 고속 메시지 해싱이 가능한 해시 함수에 적용되는 256비트 레지스터 기반의 압축 함수를 연산하는 기법을 제공함에 있다.
상기한 목적을 달성하기 위한 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치는 메시지와 연쇄변수 데이터를 외부로부터 입력받는 인터페이스부; 상기 메시지로부터 복수의 확장 메시지를 생성하는 메시지 확장부, 연쇄변수 데이터를 압축 함수에 대한 초기 상태 데이터로 변환하는 연쇄변수 초기 변환부; 초기 상태 데이터와 복수의 확장 메시지를 기초로 확장 메시지 결합 함수와 단계 함수를 반복한 후 최종 확장 메시지와의 결합하여 최종 상태 데이터를 산출하는 압축 함수 연산부; 및 최종 상태 데이터를 이용하여 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 연쇄변수 최종 변환부를 포함하는 것을 특징으로 한다.
메시지 확장부는, 32개의 32비트 또는 64비트 서브 메시지들(M[0],M[1],…,M[31])이 연접되어 구성된 1024비트 또는 2048비트 메시지(M=M[0]||M[1]||…||M[31])를 입력받아, 하기의 수학식 3에 기초하여 각각 16개의 32비트 또는 64비트 서브 확장 메시지들(W_r[0], W_r[1],…, W_r[15])이 연접되어 구성되는 27개의 512비트 또는 1024비트 확장 메시지(W_r=W_r[0]||W_r[1]||…||W_r[15], 0≤r≤26)를 생성하는 것을 특징으로 하고, 여기서, 수학식 3은 W_0[i] = M[i], 0≤i≤15; W_1[i-16] = M[i], 16≤i≤31; W_r[i] = W_(r-2)[τ(i)] W_(r-1)[i], 2≤r≤26, 0≤i≤15; τ(0)=3, τ(1)=2, τ(2)=0, τ(3)=1, τ(4)=7, τ(5)=4, τ(6)=5, τ(7)=6, τ(8)=11, τ(9)=10, τ(10)=8, τ(11)=9, τ(12)=15, τ(13)=12, τ(14)=13, τ(15)=14일 수 있다.
연쇄변수 초기 변환부는, 16개의 32비트 또는 64비트 서브 연쇄변수 데이터들(CV[0],CV[1],…,CV[15])이 연접되어 구성된 512비트 또는 1024비트 연쇄변수 데이터(CV=CV[0]||CV[1]||…||CV[15])를 입력받아, 수학식 X_0[i] = CV[i], 0≤i≤15에 기초하여 16개의 32비트 또는 64비트 초기 서브 상태 데이터들(X_0[0],X_0[1],…,X_0[15])이 연접되어 구성되는 512비트 또는 1024비트 초기 상태 데이터(X_0= X_0[0]||X_0[1]||…||X_0[15])로 변환하는 것을 특징으로 한다.
압축 함수 연산부는, 상기 512비트 또는 1024비트 초기 상태 데이터 (X_0= X_0[0]||X_0[1]||…||X_0[15])와 상기 27개의 512비트 또는 1024비트 확장 메시지(W_r[0], W_r[1],…, W_r[15]; 0≤r≤26)를 기초로 상기 최종 상태 데이터를 산출하되, 상기 확장 메시지 결합 함수인 하기 수학식 7과 상기 단계 함수인 하기 수학식 8을 반복 연산한 후, 최종 확장 메시지와 결합하는 하기 수학식 9를 수행하여 상기 최종 상태 데이터를 산출하는 것을 특징으로 한다. 여기서, 수학식7은 X_r[i]=X_r[i] W_r[i],0≤i≤15이고, 수학식 8은 X_r[i]=X_r[i] X_r[i+8],0≤i≤7; X_r[i]=ROTL(X_r[i],a),0≤i≤7; X_r[i]=X_r[i] C_r[i],0≤i≤7; X_r[i]=X_r[i-8] X_r[i],8≤i≤15; X_r[i]=ROTL(X_r[i],b),8≤i≤15; X_r[i]=X_r[i] X_r[i+8],0≤i≤7; X_r[9]=ROTL(X_r [9],c); X_r[10]=ROTL(X_r[10],2c); X_r[11]=ROTL(X_r[11],3c); X_r[13]=ROTL(X_r[13],c); X_r[14]=ROTL(X_r[14],2c); X_r[15]=ROTL(X_r[16],3c); X_(r+1)[i] = X_r[σ(i)], 0≤i≤15;σ(0)=6,σ(1)=4,σ(2)=5,σ(3)=7,σ(4)=12,σ(5)=15,σ(6)=14,σ(7)=13,σ(8)=2,σ(9)=0,σ(10)=1,σ(11)=3,σ(12)=8,σ(13)=11,σ(14)=10,σ(15)=9;이며, 수학식9는 X_26[i]=X_26[i] W_26[i],0≤i≤15;를 의미한다. 여기서, xy 는 각각 32비트 또는 64비트인 x, y의 논리적 배타합을 출력하는 연산, xy 는 각각 32비트 또는 64비트인 x, y를 양의 정수로 표현한 값의 합을 232 또는 264 나누었을 때의 나머지를 32비트 또는 64비트로 출력하는 연산, ROTL(x,j) 는 32비트 또는 64비트인 x를 왼쪽으로 j비트만큼 순환 이동시켜 출력하는 연산을 의미한다.
단계 함수 연산부는, 상기 확장 메시지 결합 함수와 단계 함수를 r에 대해 0에서 25까지 26회 반복하여 연산한 후, 최종 확장 메시지와 결합하여, 16개의 32비트 또는 64비트 최종 서브 상태 데이터들 (X_26[0],X_26[1],…,X_26[15])이 연접되어 구성되는 512비트 또는 1024비트 최종 상태 데이터 (X_26=X_26[0]||X_26[1]||…||X_26[15])를 산출하는 것을 특징으로 한다.
연쇄변수 최종 변환부는, 수학식 CV'[i]=X_26[i],0≤i≤15에 기초하여 512비트 또는 1024비트 연쇄변수 데이터 (CV=CV[0]||CV[1]||…||CV[15])를 갱신하고, 갱신된 512비트 또는 1024비트 연쇄변수 데이터 (CV'=CV'[0]||CV'[1]||…||CV'[15])를 출력하는 것을 특징으로 한다.
상기한 목적을 달성하기 위한 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법은 메시지와 연쇄변수 데이터를 입력받는 단계; 상기 메시지로부터 복수의 확장 메시지를 생성하는 단계; 상기 연쇄변수 데이터를 압축 함수에 대한 초기 상태 데이터로 변환하는 단계; 상기 초기 상태 데이터와 상기 복수의 확장 메시지를 기초로 확장 메시지 결합 함수와 단계 함수를 반복 연산한 후 최종 확장 메시지와 결합하여 최종 상태 데이터를 산출하는 단계; 및 상기 최종 상태 데이터를 이용하여 상기 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 하는 단계를 포함하는 것을 특징으로 한다.
복수의 확장 메시지를 생성하는 단계는, 32개의 32비트 또는 64비트 서브 메시지들(M[0],M[1],…,M[31])이 연접되어 구성된 1024비트 또는 2048비트 메시지(M=M[0]||M[1]||…||M[31])를 입력받아, 하기의 수학식 3에 기초하여 각각 16개의 32비트 또는 64비트 서브 확장 메시지들(W_r[0], W_r[1],…,W_r[15)이 연접되어 구성되는 27개의 512비트 또는 1024비트 확장 메시지(W_r=W_r[0]||W_r[1]||…||W_r[15], 0≤r≤26)를 생성하는 것을 특징으로 한다. 여기서, 수학식 3은 W_0[i] = M[i], 0≤i≤15; W_1[i-16] = M[i], 16≤i≤31; W_r[i] = W_(r-2)[τ(i)] W_(r-1)[i], 2≤r≤26, 0≤i≤15; τ(0)=3, τ(1)=2, τ(2)=0, τ(3)=1, τ(4)=7, τ(5)=4, τ(6)=5, τ(7)=6, τ(8)=11, τ(9)=10, τ(10)=8, τ(11)=9, τ(12)=15, τ(13)=12, τ(14)=13, τ(15)=14일 수 있다.
연쇄변수 데이터를 상기 압축 함수에 대한 상기 초기 상태 데이터로 변환하는 단계는, 16개의 32비트 또는 64비트 서브 연쇄변수 데이터들 (CV[0],CV[1],…,CV[15])이 연접되어 구성된 512비트 또는 1024비트 연쇄변수 데이터 (CV=CV[0]||CV[1]||…||CV[15])를 입력받아, 수학식 X_0[i]=CV[i], 0≤i≤15에 기초하여 16개의 32비트 또는 64비트 초기 서브 상태 데이터들 (X_0[0],X_0[1],…,X_0[15])이 연접되어 구성되는 512비트 또는 1024비트 초기 상태 데이터 (X_0=X_0[0]||X_0[1]||…||X_0[15])로 변환하는 것을 특징으로 한다.
확장 메시지 결합 함수와 단계 함수를 반복 연산한 후 최종 확장 메시지와 결합하여 상기 최종 상태 데이터를 산출하는 단계는, 상기 512비트 또는 1024비트 초기 상태 데이터 (X_0= X_0[0]||X_0[1]||…||X_0[15])와 상기 27개의 512비트 또는 1024비트 확장 메시지(W_r[0], W_r[1],…, W_r[15]; 0≤r≤26)를 기초로 상기 최종 상태 데이터를 산출하되, 상기 확장 메시지 결합 함수인 하기 수학식 7과 상기 단계 함수인 하기 수학식 8을 반복 연산한 후, 최종 확장 메시지와 결합하는 하기 수학식 9를 수행하여 상기 최종 상태 데이터를 산출하는 것을 특징으로 한다. 여기서, 수학식7은 X_r[i] = X_r[i] W_r[i],0≤i≤15;이고, 수학식8은 X_r[i] = X_r[i] X_r[i+8],0≤i≤7; X_r[i] = ROTL(X_r[i],a),0≤i≤7; X_r[i]=X_r[i] C_r[i], 0≤i≤7; X_r[i]=X_r[i-8] X_r[i], 8≤i≤15; X_r[i]=ROTL(X_r[i],b), 8≤i≤15; X_r[i]=X_r[i] X_r[i+8],0≤i≤7; X_r[9]=ROTL(X_r[9],c); X_r[10]=ROTL(X_r[10],2c); X_r[11]=ROTL(X_r[11],3c); X_r[13]=ROTL(X_r[13],c); X_r[14]=ROTL(X_r[14],2c); X_r[15]=ROTL(X_r[16],3c); X_(r+1)[i] = X_r[σi)],0≤i≤15;σ(0)=6, σ(1)=4, σ(2)=5, σ(3)=7, σ(4)=12, σ(5)=15, σ(6)=14, σ(7)=13, σ(8)=2, σ(9)=0,σ(10)=1,σ(11)=3,σ(12)=8,σ(13)=11,σ(14)=10, σ(15)=9;이며, 수학식9는 X_26[i] = X_26[i] W_26[i],0≤i≤15;을 의미한다. 여기서, xy 는 각각 32비트 또는 64비트인 x, y의 논리적 배타합을 출력하는 연산, xy 는 각각 32비트 또는 64비트인 x, y를 양의 정수로 표현한 값의 합을 232 또는 264 나누었을 때의 나머지를 32비트 또는 64비트로 출력하는 연산, ROTL(x,j) 는 32비트 또는 64비트인 x를 왼쪽으로 j비트만큼 순환 이동시켜 출력하는 연산을 의미한다.
단계 함수를 반복 연산하여 상기 최종 상태 데이터를 산출하는 단계는, 확장 메시지 결합 함수와 단계 함수를 r에 대해 0에서 25까지 26회 반복하여 연산한 후, 최종 확장 메시지와 결합하여, 16개의 32비트 또는 64비트 최종 서브 상태 데이터들 (X_26[0],X_26[1],…,X_26[15])이 연접되어 구성되는 512비트 또는 1024비트 최종 상태 데이터 (X_26=X_26[0]||X_26[1]||…||X_26[15])를 산출하는 것을 특징으로 한다.
연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 하는 단계는, 수학식 CV'[i]=X_26[i], 0≤i≤15에 기초하여 512비트 또는 1024비트 연쇄변수 데이터 (CV=CV[0]||CV[1]||…||CV[15])를 갱신하고, 갱신된 512비트 또는 1024비트 연쇄변수 데이터 (CV'=CV'[0]||CV'[1]||…||CV'[15])를 출력하는 것을 특징으로 한다.
본 발명에 따르면, 단순한 메시지 확장 알고리즘을 제공하는 한편, 대부분의 CPU에서 보편적으로 사용되는 비트 덧셈(Addition), 비트 순환이동(Rotation), 비트 논리적 배타합(XOR: eXclusive-OR) 연산자들만을 조합한 압축 연산 알고리즘을 제공함으로써, 256비트 레지스터를 이용한 고속 병렬처리가 가능하고, 이에 따라 CPU가 적은 연산량만으로도 압축 연산을 수행할 수 있도록 하는 효과가 있다.
도 1은 본 발명의 실시예에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치의 구성을 설명하기 위한 블록도이다.
도 2는 도 1에 도시된 확장 메시지 결합 함수와 단계 함수 연산부에서 수행되는 연산을 도식화한 도면이다.
도 3은 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법을 설명하기 위한 흐름도이다.
도 4는 도 3에 도시된 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법에서 확장 메시지 결합 함수와 단계 함수를 반복하여 연산하는 과정을 보다 구체적으로 설명하기 위한 흐름도이다.
도 2는 도 1에 도시된 확장 메시지 결합 함수와 단계 함수 연산부에서 수행되는 연산을 도식화한 도면이다.
도 3은 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법을 설명하기 위한 흐름도이다.
도 4는 도 3에 도시된 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법에서 확장 메시지 결합 함수와 단계 함수를 반복하여 연산하는 과정을 보다 구체적으로 설명하기 위한 흐름도이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
이하에서는 도 1 및 도 2를 참조하여, 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치의 구성 및 그 동작에 대하여 설명하도록 한다.
도 1은 본 발명의 실시예에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치의 구성을 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명에 따른 압축 연산 수행 장치(10)는, 외부로부터 메시지(M, 20)와 연쇄변수 데이터(CV, 30)를 입력받는 인터페이스부(100), 메시지(M, 20)로부터 복수의 확장 메시지를 생성하는 메시지 확장부(200), 연쇄변수 데이터(CV, 30)를 압축 함수에 대한 초기 상태 데이터로 변환하는 연쇄변수 초기 변환부(300), 메시지 확장부(200)에 의해 생성된 복수의 확장 메시지와 연쇄변수 데이터(CV, 30)와의 결합을 통해 연쇄변수 데이터를 갱신하는 확장 메시지 결합 함수와 연쇄변수 데이터(CV, 30)를 직접 갱신하는 단계 함수를 반복 연산한 후 연쇄변수 데이터(CV, 30)를 최종 확장 메시지와 결합하여 최종 상태 데이터를 산출하는 압축 함수 연산부(400)에 의해 산출된 최종 상태 데이터를 이용하여 인터페이스부(100)에 입력된 연쇄변수 데이터(CV, 30)를 갱신한 연쇄변수 데이터(CV', 40)를 출력하는 연쇄변수 최종 변환부(500)를 포함한다.
인터페이스부(100)는 사용자로부터 압축 및 암호화의 대상이 되는 메시지로서 1024 비트수 또는 2048 비트수를 갖는 메시지(M, 20)을 입력받는다. 또한, 인터페이스부(100)는 본 발명에 따른 압축 연산 수행 장치(10)의 외부에 위치하는 연쇄변수 생성 수단(미도시)으로부터 512 비트수 또는 1024비트를 갖는 연쇄변수 데이터(CV, 30)를 입력받는다. 이때, 인터페이스부(100)는 입력받은 메시지(M, 20)를 메시지 확장부(200)로 전달하는 한편, 연쇄변수 데이터(CV, 30)를 연쇄변수 초기 변환부(300)로 전달한다.
메시지 확장부(200)는 인터페이스부(100)로부터 전달받은 1024 비트수 또는2048 비트수를 갖는 메시지(M)로부터 27개의 512 비트수 또는 1024비트수를 갖는 확장 메시지들 (W_0,W_1,…,W_26: W_r, 0≤r≤26)을 생성한다. 이때, 메시지 확장부(200)로 입력되는 1024비트 또는 2048비트 메시지(M)는 하기의 수학식 1로 표현되는 바와 같이 각각 32 비트수 또는 64비트수를 갖는 32개의 서브 메시지들(M[0],M[1],…,M[31])이 연접되어 구성된다.
메시지 확장부(200)는 입력된 1024 비트 또는 2048 비트 메시지(M=M[0]||M[1]||…||M[31])로부터 하기의 수학식 2로 표현되는 바와 같이 16개의 32 비트수 또는 64비트수를 갖는 서브 확장 메시지들(W_r[0], W_r[1],…, W_r[15])이 연접되어 구성되는 512 비트수 또는 1024 비트수를 갖는 27개의 확장 메시지(W_r, 0≤r≤26)를 생성한다.
이때, 메시지 확장부(200)는 하기의 수학식 3에 기초하여 1024비트 또는 2048비트 메시지(M=M[0]||M[1]||…||M[31])로부터 총 27개의 512비트 또는 1024비트 확장 메시지들(W_0,W_1,…,W_26; W_r=W_r[0]||W_r[1]||…||W_r[15], 0≤r≤26)을 생성한다.
또한, 메시지 확장부(200)는 1024비트 또는 2048비트 메시지(M=M[0],M[1],…,M[31])로부터 생성한 27개의 512비트 또는 1024비트 확장 메시지들(W_0,W_1,…,W_26; W_r=W_r[0]||W_r[1]||…||W_r[15], 0≤r≤26)을 압축 함수 연산부(400)로 출력한다.
연쇄변수 초기 변환부(300)는 인터페이스부(100)로부터 전달받은 512 비트수 또는 1024비트수를 갖는 연쇄변수 데이터(CV)를 512 비트수 또는 1024비트수를 갖는 초기 상태 데이터(X_0)로 변환한다. 이때, 연쇄변수 초기 변환부(300)로 입력되는 512비트 또는 1024비트 연쇄변수 데이터(CV)는 하기의 수학식 4로 표현되는 바와 같이 각각 32 비트수 또는 64비트수를 갖는 16개의 서브 연쇄변수 데이터들(CV[0],CV[1],…,CV[15])이 연접되어 구성된다.
연쇄변수 초기 변환부(300)는 입력된 512비트 또는 1024비트 연쇄변수 데이터(CV=CV[0]||CV[1]||…||CV[15])를 하기의 수학식 5로 표현되는 바와 같이 16개의 32 비트수 또는 64비트수를 갖는 초기 서브 상태 데이터들(X_0[0],X_0[1],…,X_0[15])이 연접되어 구성되는 512 비트수 또는 1024비트수를 갖는 초기 상태 데이터(X_0= X_0[0]||X_0[1]||…||X_0[15])로 변환한다.
이때, 연쇄변수 초기 변환부(300)는 하기의 수학식 6에 기초하여 512비트 또는 1024비트 연쇄변수 데이터(CV=CV[0]||CV[1]||…||CV[15])를 512비트 또는 1024비트 초기 상태 데이터(X_0= X_0[0]||X_0[1]||…||X_0[15])로 변환한다.
연쇄변수 초기 변환부(300)는 입력된 512비트 또는 1024비트 연쇄변수 데이터(CV=CV[0]||CV[1]||…||CV[15])로부터 변환한 512비트 또는 1024비트 초기 상태 데이터(X_0= X_0[0]||X_0[1]||…||X_0[15])를 압축 함수 연산부(400)로 출력한다.
압축 함수 연산부(400)는 연쇄변수 초기 변환부(300)로부터 입력받은 512비트 또는 1024비트 초기 상태 데이터(X_0= X_0[0]||X_0[1]||…||X_0[15])를 초기값으로, 메시지 확장부(200)로부터 입력받은 27개의 512비트 또는 1024비트 확장 메시지들(W_0,W_1,…,W_26; W_r=W_r[0]||W_r[1]||…||W_r[15], 0≤r≤26)을 이용하여 하기의 확장 메시지 결합 함수인 수학식 7과 단계 함수인 수학식 8의 연산이 순차적으로 반복 연산한 후 수학식 9를 수행하여 최종 상태 데이터를 산출한다.
여기서, r이 짝수일 때, a는 5, b는 23이며, 홀수일 때, a는 25, b는 19이다. c는 32비트 단위인 경우 8, 64비트인 경우 16이다. 또한, 여기서 256비트 또는 512비트 데이터(C_r=C_r[0]||C_r[1]||…||C_r[7])는 고정해서 사용하는 상수를 의미한다.
여기서, 는 각각 32비트 또는 64비트인 x, y의 논리적 배타합을 출력하는 연산을 의미하고, 는 각각 32비트 또는 64비트인 x, y를 양의 정수로 표현한 값의 합을 232 또는 264로 나누었을 때의 나머지를 32비트 또는 64비트로 출력하는 연산을 의미하며, ROTL(x,j)는 32비트 또는 64비트인 x를 왼쪽으로 j비트만큼 순환 이동시켜 출력하는 연산을 의미한다.
…
압축 함수 연산부(400)는 수학식 7과 수학식 8을 순차적으로 26회 반복 연산한 후 수학식 9를 수행한다. 압축 함수를 연산한 결과값들(X_26[0], X_26[1],…, X_26[15])을 하기의 수학식 10과 같이 연접하여 최종 상태 데이터(X_26)를 산출한다. 압축 함수 연산부(400)는 최종 상태 데이터(X_26)를 연쇄변수 최종 변환부(500)로 출력한다.
한편, 압축 함수 연산부(400)가 서브 상태 데이터들(X_r[0], X_r[1],…, X_r[15])과 서브 확장 메시지들(W_r[0], W_r[1],…,W_r[15]; 0≤r≤26)을 입력값으로 확장 메시지 결합 함수와 단계 함수를 연산함으로써 서브 상태 데이터들(X_(r+1)[0], X_(r+1)[1],…, X_(r+1)[15])을 산출하는 연산은 도 2에 도시된 바와 같이 나타낼 수 있다.
연쇄변수 최종 변환부(500)는 압축 함수 연산부(400)로부터 입력받은 최종 상태 데이터(X_26=X_26[0]||X_26[1]||…||X_26[15])를 이용하여 인터페이스부(100)에 입력되는 연쇄변수 데이터(CV=CV[0]||CV[1]||…||CV[15])를 갱신하고, 갱신된 연쇄변수 데이터(CV'=CV'[0]||CV'[1]||…||CV'[15])를 출력한다. 이때, 연쇄변수 최종 변환부(500)는 하기의 수학식 12에 기초하여 512 비트수를 갖는 연쇄변수 데이터(CV=CV[0]||CV[1]||…||CV[15])를 갱신한 연쇄변수 데이터(CV'=CV'[0]||CV'[1]||…||CV'[15])를 생성한다.
연쇄변수 최종 변환부(500)로부터 출력되는 갱신된 512비트 또는 1024비트 연쇄변수 데이터(CV'=CV'[0]||CV'[1]||…||CV'[15])는 이미 공지된 다양한 알고리즘에 따라 가공되어 인터페이스부(100)로 입력되는 1024비트 또는 2048비트 메시지(M=M[0]||M[1]||…||M[31])에 대한 해시값으로 이용된다.
이하에서는 도 3 및 도 4를 참조하여, 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치에 의해 수행되는 압축 연산 수행 방법에 대하여 설명하도록 한다. 앞서, 도 1 및 도 2를 참조하여 설명한 본 발명에 따른 압축 연산 수행 장치(10)의 동작과 일부 중복되는 부분은 생략하여 설명하기로 한다.
도 3은 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법을 설명하기 위한 흐름도이다.
도 3을 참조하면, 본 발명에 따른 압축 연산 수행 방법은, 먼저 인터페이스부(100)가 외부로부터 1024비트 또는 2048비트 메시지 (M=M[0]||M[1]||…||M[31])와 512비트 연쇄변수 데이터 (CV=CV[0]||CV[1]||…||CV[15])를 입력받는다(S100). 이때, 인터페이스부(100)는 입력된 512비트 메시지(M=M[0]||M[1]||…||M[31])를 메시지 확장부(200)로 전달하는 한편, 512비트 또는 1024비트 연쇄변수 데이터(CV=CV[0]||CV[1]||…||CV[15])를 연쇄변수 초기 변환부(300)로 전달한다.
그리고, 메시지 확장부(200)는 수학식 3에 기초하여, 32개의 32비트 또는 64비트 서브 메시지들(M[0],M[1],…,M[31])이 연접되어 구성된 1024비트 또는 2048비트 메시지 (M=M[0]||M[1]||…||M[31])로부터 각각 16개의 32비트 또는 64비트 서브 확장 메시지들(W_r[0], W_r[1],…, W_r[15])이 연접되어 구성되는 27개의 512비트 또는 1024비트 확장 메시지들(W_0,W_1,…,W_26; W_r=W_r[0]||W_r[1]||…||W_r[15], 0≤r≤26)을 생성한다(S200). 이때, 메시지 확장부(200)는 생성한 27개의 512비트 또는 1024비트 확장 메시지들(W_r, 0≤r≤26)을 압축 함수 연산부(400)로 출력한다.
한편, 연쇄변수 초기 변환부(300)는 인터페이스부(100)로부터 전달받은 16개의 32비트 또는 64비트 서브 연쇄변수 데이터들 (CV[0],CV[1],…,CV[15])이 연접되어 구성된 512비트 또는 1024비트 연쇄변수 데이터 (CV=CV[0]||CV[1]||…||CV[15])를 수학식 6에 기초하여 16개의 32비트 초기 서브 상태 데이터들 (X_0[0],X_0[1],…,X_0[15])이 연접되어 구성되는 512비트 또는 1024비트 초기 상태 데이터 (X_0= X_0[0]||X_0[1]||…||X_0[15])로 변환한다(S300). 이때, 연쇄변수 초기 변환부(300)는 변환한 512비트 또는 1024비트 초기 상태 데이터 (X_0= X_0[0]||X_0[1]||…||X_0[15])를 압축 함수 연산부(400)로 출력한다.
그 다음으로, 압축 함수 연산부(400)는 메시지 확장부(200)로부터 수신한 27개의 512비트 또는 1024비트 확장 메시지들 (W_r, 0≤r≤26)과 연쇄변수 초기 변환부(300)로부터 수신한 512비트 또는 1024비트 초기 상태 데이터 (X_0= X_0[0]||X_0[1]||…||X_0[15])에 기초하여 수학식 7 내지 수학식 8에 따른 연산을 순차적으로 반복 수행하고 최종적으로 수학식 9를 수행하는 압축 함수를 연산한다(S400). 이때, 압축 함수 연산부(400)는 각각 32 비트수 또는 64비트수를 갖는 16개의 초기 서브 상태 데이터들 (X_0[0],X_0[1],…,X_0[15])을 1회째 압축 함수의 입력 값으로 하고, (r+1)회째 단계 함수의 연산 시에 각각 32비트수 또는 64비트수를 갖는 16개의 서브 확장 메시지들 (W_r[0], W_r[1],…, W_r[15])을 적용하여 연산한다.
그리고, 압축 함수 연산부(400)는 마지막으로 연산된 결과값들(즉, X_26[0],X_26[1],…,X_26[15])을 연접하여 512비트 최종 상태 데이터 (X_26=X_26[0]||X_26[1]||…||X_26[15])를 산출한다(S500). 이때, 압축 함수 연산부(400)는 산출한 512비트 또는 1024비트 최종 상태 데이터 (X_26=X_26[0]||X_26[1]||…||X_26[15])를 연쇄변수 최종 변환부(500)로 출력한다.
마지막으로, 연쇄변수 최종 변환부(500)는 압축 함수 연산부(400)로부터 수신한 512비트 또는 1024비트 최종 상태 데이터(X_26=X_26[0]||X_26[1]||…||X_26[15])를 이용하여 인터페이스부(100)로 입력되는 512비트 또는 1024비트 연쇄변수 데이터(CV=CV[0]||CV[1]||…||CV[15])를 갱신하여 출력한다(S600). 이때, 연쇄변수 최종 변환부(500)는 수학식 11에 기초하여 인터페이스부(100)로 입력되는 512비트 연쇄변수 데이터(CV=CV[0]||CV[1]||…||CV[15])를 갱신하고, 갱신된 512비트 또는 1024비트 연쇄변수 데이터(CV'=CV'[0]||CV'[1]||…||CV'[15])를 생성하여 출력한다.
도 4는 도 3에 도시된 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법을 나타낸 흐름도에서, 확장 메시지 결합 함수와 단계 함수를 반복하여 연산하는 S400 단계를 보다 구체적으로 설명하기 위한 흐름도이다.
도 4를 참조하면, 확장 메시지 결합 함수와 단계 함수를 반복하여 연산하는 S400 단계는, 먼저 단계 함수 연산부(400)가 메시지 확장부(200)로부터 27개의 512비트 또는 1024비트 확장 메시지들(W_r, 0≤r≤26)을 입력 받는 한편, 연쇄변수 초기 변환부(300)로부터 512비트 또는 1024비트 초기 상태 데이터 (X_0= X_0[0]||X_0[1]||…||X_0[15]) 를 입력 받는다(S410).
그 다음으로, 단계 함수 연산부(400)는 r값을 0으로 설정한 후, 초기 서브 상태 데이터들 (X_0[0],X_0[1],…,X_0[15])을 입력값으로 하여 1회째 확장 메시지 결합 함수와 단계 함수의 연산을 시작한다(S420).
그리고, (r+1)회째 연산에서, 압축 함수 연산부(400)는 수학식 7을 먼저 계산하고(S430), 그 다음으로, 수학식 8을 계산한다(S440). 그리고, 압축 함수 연산부(400)는 상기 S440 단계에서 계산한 값을 이용하여 최종적으로 (r+1)회째 단계 함수에서의 결과값들 (X_(r+1)[0], X_(r+1)[1],…, X_(r+1)[15])을 산출한다(S450).
그 다음으로, 상기 S430 내지 S450 단계에 따라 (r+1)회째 단계 함수의 연산이 수행된 다음, 단계 함수 연산부(400)는 r값이 25인지 여부를 확인한다(S460).
상기 S460 단계에서의 확인 결과, r값이 25가 아니라면(즉, r값이 25 보다 작다면), 압축 함수 연산부(400)는 r값을 1 증가시키고(S470), 상기 S430 내지 S450 단계에 따른 함수를 반복하여 연산한다.
반면에, 상기 S460 단계에서의 확인 결과, r값이 25라면, 압축 함수 연산부(400)는 26회째 단계 함수의 연산에서 출력된 결과값들 (X_25[0],X_25[1],…,X_25[15])에 최종적으로 수학식 9를 수행하여 512비트 또는 1024비트 최종 상태 데이터 (X_26=X_26[0]||X_26[1]||…||X_26[15])를 연쇄변수 최종 변환부(500)로 출력한다(S480).
한편, 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터로 판독 가능한 기록 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 기록 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터로 판독 가능한 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 모든 형태의 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상에서와 같이 도면과 명세서에서 최적의 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: 압축 연산 수행 장치
100: 인터페이스부
200: 메시지 확장부
300: 연쇄변수 초기 변환부
400: 압축 함수 연산부
500: 연쇄변수 최종 변환부
100: 인터페이스부
200: 메시지 확장부
300: 연쇄변수 초기 변환부
400: 압축 함수 연산부
500: 연쇄변수 최종 변환부
Claims (12)
- 메시지와 연쇄변수 데이터를 외부로부터 입력받는 인터페이스부;
상기 메시지로부터 복수의 확장 메시지를 생성하는 메시지 확장부;
상기 연쇄변수 데이터를 압축 함수에 대한 초기 상태 데이터로 변환하는 연쇄변수 초기 변환부;
상기 초기 상태 데이터와 상기 복수의 확장 메시지를 기초로 확장 메시지 결합 함수와 단계 함수를 반복한 후 최종 확장 메시지와의 결합하여 최종 상태 데이터를 산출하는 압축 함수 연산부; 및
상기 최종 상태 데이터를 이용하여 상기 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 연쇄변수 최종 변환부를 포함하고,
상기 메시지 확장부는,
32개의 32비트 또는 64비트 서브 메시지들(M[0],M[1],…,M[31])이 연접되어 구성된 1024비트 또는 2048비트 메시지(M=M[0]||M[1]||…||M[31])를 입력받아, 하기의 수학식 3에 기초하여 각각 16개의 32비트 또는 64비트 서브 확장 메시지들(W_r[0], W_r[1],…, W_r[15])이 연접되어 구성되는 27개의 512비트 또는 1024비트 확장 메시지(W_r=W_r[0]||W_r[1]||…||W_r[15], 0≤r≤26)를 생성하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치.
[수학식 3]
- 삭제
- 청구항 1에 있어서,
상기 연쇄변수 초기 변환부는,
16개의 32비트 또는 64비트 서브 연쇄변수 데이터들(CV[0],CV[1],…,CV[15])이 연접되어 구성된 512비트 또는 1024비트 연쇄변수 데이터(CV=CV[0]||CV[1]||…||CV[15])를 입력받아, 수학식 X_0[i] = CV[i], 0≤i≤15에 기초하여 16개의 32비트 또는 64비트 초기 서브 상태 데이터들(X_0[0],X_0[1],…,X_0[15])이 연접되어 구성되는 512비트 또는 1024비트 초기 상태 데이터(X_0=X_0[0]||X_0[1]||…||X_0[15])로 변환하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치. - 청구항 3에 있어서,
상기 압축 함수 연산부는,
상기 512비트 또는 1024비트 초기 상태 데이터 (X_0= X_0[0]||X_0[1]||…||X_0[15])와 상기 27개의 512비트 또는 1024비트 확장 메시지(W_r[0], W_r[1],…, W_r[15]; 0≤r≤26)를 기초로 상기 최종 상태 데이터를 산출하되,
상기 확장 메시지 결합 함수인 하기 수학식 7과 상기 단계 함수인 하기 수학식 8을 반복 연산한 후, 최종 확장 메시지와 결합하는 하기 수학식 9를 수행하여 상기 최종 상태 데이터를 산출하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치.
[수학식7]
[수학식8]
[수학식9]
(여기서, xy 는 각각 32비트 또는 64비트인 x, y의 논리적 배타합을 출력하는 연산, xy 는 각각 32비트 또는 64비트인 x, y를 양의 정수로 표현한 값의 합을 232 또는 264 나누었을 때의 나머지를 32비트 또는 64비트로 출력하는 연산, ROTL(x,j) 는 32비트 또는 64비트인 x를 왼쪽으로 j비트만큼 순환 이동시켜 출력하는 연산을 의미한다. 또한, r이 짝수일 때, a는 5, b는 23이며, 홀수일 때, a는 25, b는 19이다. c는 32비트 단위인 경우 8, 64비트인 경우 16이다. 또한, 256비트 또는 512비트 데이터(C_r=C_r[0]||C_r[1]||…||C_r[7])는 고정해서 사용하는 상수를 의미한다.) - 청구항 4에 있어서,
상기 단계 함수 연산부는,
상기 확장 메시지 결합 함수와 단계 함수를 r에 대해 0에서 25까지 26회 반복하여 연산한 후, 최종 확장 메시지와 결합하여, 16개의 32비트 또는 64비트 최종 서브 상태 데이터들(X_26[0],X_26[1],…,X_26[15])이 연접되어 구성되는 512비트 또는 1024비트 최종 상태 데이터 (X_26=X_26[0]||X_26[1]||…||X_26[15])를 산출하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치. - 청구항 5에 있어서,
상기 연쇄변수 최종 변환부는,
수학식 CV'[i]=X_26[i],0≤i≤15에 기초하여 512비트 또는 1024비트 연쇄변수 데이터 (CV=CV[0]||CV[1]||…||CV[15])를 갱신하고, 갱신된 512비트 또는 1024비트 연쇄변수 데이터 (CV'=CV'[0]||CV'[1]||…||CV'[15])를 출력하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치. - 메시지와 연쇄변수 데이터를 입력받는 단계;
상기 메시지로부터 복수의 확장 메시지를 생성하는 단계;
상기 연쇄변수 데이터를 압축 함수에 대한 초기 상태 데이터로 변환하는 단계;
상기 초기 상태 데이터와 상기 복수의 확장 메시지를 기초로 확장 메시지 결합 함수와 단계 함수를 반복 연산한 후 최종 확장 메시지와 결합하여 최종 상태 데이터를 산출하는 단계; 및
상기 최종 상태 데이터를 이용하여 상기 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 단계를 포함하고,
상기 복수의 확장 메시지를 생성하는 단계는,
32개의 32비트 또는 64비트 서브 메시지들(M[0],M[1],…,M[31])이 연접되어 구성된 1024비트 또는 2048비트 메시지(M=M[0]||M[1]||…||M[31])를 입력받아, 하기의 수학식 3에 기초하여 각각 16개의 32비트 또는 64비트 서브 확장 메시지들(W_r[0], W_r[1],…, W_r[15)이 연접되어 구성되는 27개의 512비트 또는 1024비트 확장 메시지(W_r=W_r[0]||W_r[1]||…||W_r[15], 0≤r≤26)를 생성하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법.
[수학식 3]
- 삭제
- 청구항 7에 있어서,
상기 연쇄변수 데이터를 상기 압축 함수에 대한 상기 초기 상태 데이터로 변환하는 단계는,
16개의 32비트 또는 64비트 서브 연쇄변수 데이터들 (CV[0],CV[1],…,CV[15])이 연접되어 구성된 512비트 또는 1024비트 연쇄변수 데이터 (CV=CV[0]||CV[1]||…||CV[15])를 입력받아, 수학식 X_0[i]=CV[i], 0≤i≤15에 기초하여 16개의 32비트 또는 64비트 초기 서브 상태 데이터들 (X_0[0],X_0[1],…,X_0[15])이 연접되어 구성되는 512비트 또는 1024비트 초기 상태 데이터 (X_0=X_0[0]||X_0[1]||…||X_0[15])로 변환하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법. - 청구항 9에 있어서,
상기 확장 메시지 결합 함수와 단계 함수를 반복 연산한 후 최종 확장 메시지와 결합하여 상기 최종 상태 데이터를 산출하는 단계는,
상기 512비트 또는 1024비트 초기 상태 데이터 (X_0= X_0[0]||X_0[1]||…||X_0[15])와 상기 27개의 512비트 또는 1024비트 확장 메시지(W_r[0], W_r[1],…, W_r[15]; 0≤r≤26)를 기초로 상기 최종 상태 데이터를 산출하되,
상기 확장 메시지 결합 함수인 하기 수학식 7과 상기 단계 함수인 하기 수학식 8을 반복 연산한 후, 최종 확장 메시지와 결합하는 하기 수학식 9를 수행하여 상기 최종 상태 데이터를 산출하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법.
[수학식7]
[수학식8]
[수학식9]
(여기서, xy 는 각각 32비트 또는 64비트인 x, y의 논리적 배타합을 출력하는 연산, xy 는 각각 32비트 또는 64비트인 x, y를 양의 정수로 표현한 값의 합을 232 또는 264 나누었을 때의 나머지를 32비트 또는 64비트로 출력하는 연산, ROTL(x,j) 는 32비트 또는 64비트인 x를 왼쪽으로 j비트만큼 순환 이동시켜 출력하는 연산을 의미한다. 또한, r이 짝수일 때, a는 5, b는 23이며, 홀수일 때, a는 25, b는 19이다. c는 32비트 단위인 경우 8, 64비트인 경우 16이다. 또한, 256비트 또는 512비트 데이터(C_r=C_r[0]||C_r[1]||…||C_r[7])는 고정해서 사용하는 상수를 의미한다.)
- 청구항 10에 있어서,
상기 단계 함수를 반복 연산하여 상기 최종 상태 데이터를 산출하는 단계는,
상기 확장 메시지 결합 함수와 단계 함수를 r에 대해 0에서 25까지 26회 반복하여 연산한 후, 최종 확장 메시지와 결합하여, 16개의 32비트 또는 64비트 최종 서브 상태 데이터들(X_26[0],X_26[1],…,X_26[15])이 연접되어 구성되는 512비트 또는 1024비트 최종 상태 데이터 (X_26=X_26[0]||X_26[1]||…||X_26[15])를 산출하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법. - 청구항 11에 있어서,
상기 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 하는 단계는,
수학식 CV'[i]=X_26[i], 0≤i≤15에 기초하여 512비트 또는 1024비트 연쇄변수 데이터 (CV=CV[0]||CV[1]||…||CV[15])를 갱신하고, 갱신된 512비트 또는 1024비트 연쇄변수 데이터 (CV'=CV'[0]||CV'[1]||…||CV'[15])를 출력하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130088514A KR101516573B1 (ko) | 2013-07-26 | 2013-07-26 | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 |
US14/305,147 US9479193B2 (en) | 2013-07-26 | 2014-06-16 | Apparatus and method for performing compression operation in hash algorithm |
JP2014126217A JP5869053B2 (ja) | 2013-07-26 | 2014-06-19 | ハッシュアルゴリズムにおける圧縮演算を行うための装置および方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130088514A KR101516573B1 (ko) | 2013-07-26 | 2013-07-26 | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150012691A KR20150012691A (ko) | 2015-02-04 |
KR101516573B1 true KR101516573B1 (ko) | 2015-05-04 |
Family
ID=52391359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130088514A KR101516573B1 (ko) | 2013-07-26 | 2013-07-26 | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9479193B2 (ko) |
JP (1) | JP5869053B2 (ko) |
KR (1) | KR101516573B1 (ko) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010049126A (ja) | 2008-08-25 | 2010-03-04 | Sony Corp | データ変換装置、およびデータ変換方法、並びにプログラム |
Family Cites Families (14)
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 |
JP3160201B2 (ja) * | 1996-03-25 | 2001-04-25 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 情報検索方法、情報検索装置 |
US6258167B1 (en) * | 1996-11-27 | 2001-07-10 | Tokyo Electron Limited | Process liquid film forming apparatus |
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 |
US7181009B1 (en) * | 2002-12-18 | 2007-02-20 | Cisco Technology, Inc. | Generating message digests according to multiple hashing procedures |
KR100916805B1 (ko) | 2006-09-15 | 2009-09-14 | 고려대학교 산학협력단 | 256비트 출력을 갖는 해쉬 알고리즘 |
US20090319547A1 (en) * | 2008-06-19 | 2009-12-24 | Microsoft Corporation | Compression Using Hashes |
JP5532560B2 (ja) | 2008-08-25 | 2014-06-25 | ソニー株式会社 | データ変換装置、およびデータ変換方法、並びにプログラム |
JP2010128392A (ja) * | 2008-11-28 | 2010-06-10 | Canon Inc | ハッシュ処理装置及びその方法 |
AR077680A1 (es) * | 2009-08-07 | 2011-09-14 | Dolby Int Ab | Autenticacion de flujos de datos |
CN103477341B (zh) * | 2011-04-06 | 2016-05-18 | 塞尔蒂卡姆公司 | 散列算法在处理器上的有效实现 |
KR101330664B1 (ko) * | 2012-06-15 | 2013-11-15 | 한국전자통신연구원 | 저전력 암호화 장치 및 방법 |
KR101428770B1 (ko) * | 2013-05-29 | 2014-08-08 | 한국전자통신연구원 | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 |
-
2013
- 2013-07-26 KR KR1020130088514A patent/KR101516573B1/ko active IP Right Grant
-
2014
- 2014-06-16 US US14/305,147 patent/US9479193B2/en active Active
- 2014-06-19 JP JP2014126217A patent/JP5869053B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010049126A (ja) | 2008-08-25 | 2010-03-04 | Sony Corp | データ変換装置、およびデータ変換方法、並びにプログラム |
Also Published As
Publication number | Publication date |
---|---|
US9479193B2 (en) | 2016-10-25 |
US20150032704A1 (en) | 2015-01-29 |
KR20150012691A (ko) | 2015-02-04 |
JP2015026071A (ja) | 2015-02-05 |
JP5869053B2 (ja) | 2016-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11218320B2 (en) | Accelerators for post-quantum cryptography secure hash-based signing and verification | |
EP3758281A1 (en) | Fast xmss signature verification and nonce sampling process without signature expansion | |
EP3758290A1 (en) | Parallel processing techniques for hash-based signature algorithms | |
JP6044738B2 (ja) | 情報処理装置、プログラム及び記憶媒体 | |
CN111370064A (zh) | 基于simd的哈希函数的基因序列快速分类方法及*** | |
KR101428770B1 (ko) | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 | |
JP5183279B2 (ja) | 情報処理装置、命令コードの暗号化方法および暗号化命令コードの復号化方法 | |
KR101516573B1 (ko) | 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 | |
CN116318660B (zh) | 一种消息扩展与压缩方法及相关装置 | |
US20220123949A1 (en) | Side channel protection for xmss signature function | |
JP5113833B2 (ja) | 中央演算処理装置の演算能力を高めるための暗号方法および暗号装置 | |
CN114205104A (zh) | 针对功率和电磁侧信道攻击的对认证标签计算的保护 | |
US8312363B2 (en) | Residue generation | |
US9843442B2 (en) | Operation method and apparatus for providing compression function for fast message hashing | |
JP2011081594A (ja) | データ処理装置及びデータ処理プログラム | |
CN113971015B (zh) | Uia2计算电路及其数据处理方法、芯片、电子设备及存储介质 | |
US20240171401A1 (en) | Method for calculating using an one-way function effienct in a zero knowledge proof, and apparatus implementing the same method | |
KR102319459B1 (ko) | Hmac 기반 통신 방법 및 시스템 | |
CN112054889B (zh) | 消息认证码的生成方法及生成装置、计算机可读存储介质 | |
JP2011085739A (ja) | 暗号アルゴリズムの計算方法、及び装置 | |
KR20230161195A (ko) | 영지식 증명 친화적인 일방향 함수를 이용한 연산 방법, 그리고 이를 구현하기 위한 장치 | |
WO2018094566A1 (zh) | 并行哈希函数的构造方法 | |
CN116132015A (zh) | 一种具有平衡性的通用密钥扩展快速方法 | |
JP2012002831A (ja) | ハッシュ関数の安全性評価装置、方法及びプログラム | |
JP2003330367A (ja) | 加算の線形確率計算方法、加算の線形確率計算装置、加算の線形確率計算プログラム、及び該プログラムを記録したコンピュータが読み取り可能な記録媒体 |
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: 20180406 Year of fee payment: 4 |