KR101516573B1 - 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 - Google Patents

해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 Download PDF

Info

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
Application number
KR1020130088514A
Other languages
English (en)
Other versions
KR20150012691A (ko
Inventor
김동찬
홍득조
이정근
권대성
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020130088514A priority Critical patent/KR101516573B1/ko
Priority to US14/305,147 priority patent/US9479193B2/en
Priority to JP2014126217A priority patent/JP5869053B2/ja
Publication of KR20150012691A publication Critical patent/KR20150012691A/ko
Application granted granted Critical
Publication of KR101516573B1 publication Critical patent/KR101516573B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3059Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled

Abstract

본 발명은 512비트 메시지와 512비트 또는 1024비트 연쇄변수 데이터를 입력받아 256비트 레지스터 기반의 단계 함수를 반복 연산하여 해시값의 기초가 되는 갱신된 512비트 또는 1024비트 연쇄변수 데이터를 산출하기 위한, 고속 메시지 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법을 개시한다. 이를 위해, 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치는 메시지와 연쇄변수 데이터를 외부로부터 입력받는 인터페이스부; 메시지로부터 복수의 확장 메시지를 생성하는 메시지 확장부; 연쇄변수 데이터를 압축 함수에 대한 초기 상태 데이터로 변환하는 연쇄변수 초기 변환부; 초기 상태 데이터와 복수의 확장 메시지를 기초로 확장 메시지 결합 함수와 단계 함수를 반복 연산한 후 최종 확장 메시지와 결합하여 최종 상태 데이터를 산출하는 단계 함수 연산부; 및 최종 상태 데이터를 이용하여 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 연쇄변수 최종 변환부를 포함한다.

Description

해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 {APPARATUS AND METHOD FOR PERFORMING COMPRESSION OPERATION IN HASH ALGORITHM}
본 발명은 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법에 관한 것으로, 보다 구체적으로 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)]
Figure 112013067695157-pat00001
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]
Figure 112013067695157-pat00002
W_r[i],0≤i≤15이고, 수학식 8은 X_r[i]=X_r[i]
Figure 112013067695157-pat00003
X_r[i+8],0≤i≤7; X_r[i]=ROTL(X_r[i],a),0≤i≤7; X_r[i]=X_r[i]
Figure 112013067695157-pat00004
C_r[i],0≤i≤7; X_r[i]=X_r[i-8]
Figure 112013067695157-pat00005
X_r[i],8≤i≤15; X_r[i]=ROTL(X_r[i],b),8≤i≤15; X_r[i]=X_r[i]
Figure 112013067695157-pat00006
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]
Figure 112013067695157-pat00007
W_26[i],0≤i≤15;를 의미한다. 여기서, x
Figure 112013067695157-pat00008
y 는 각각 32비트 또는 64비트인 x, y의 논리적 배타합을 출력하는 연산, x
Figure 112013067695157-pat00009
y 는 각각 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)]
Figure 112013067695157-pat00010
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]
Figure 112013067695157-pat00011
W_r[i],0≤i≤15;이고, 수학식8은 X_r[i] = X_r[i]
Figure 112013067695157-pat00012
X_r[i+8],0≤i≤7; X_r[i] = ROTL(X_r[i],a),0≤i≤7; X_r[i]=X_r[i]
Figure 112013067695157-pat00013
C_r[i], 0≤i≤7; X_r[i]=X_r[i-8]
Figure 112013067695157-pat00014
X_r[i], 8≤i≤15; X_r[i]=ROTL(X_r[i],b), 8≤i≤15; X_r[i]=X_r[i]
Figure 112013067695157-pat00015
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]
Figure 112013067695157-pat00016
W_26[i],0≤i≤15;을 의미한다. 여기서, x
Figure 112013067695157-pat00017
y 는 각각 32비트 또는 64비트인 x, y의 논리적 배타합을 출력하는 연산, x
Figure 112013067695157-pat00018
y 는 각각 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에 도시된 본 발명에 따른 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법에서 확장 메시지 결합 함수와 단계 함수를 반복하여 연산하는 과정을 보다 구체적으로 설명하기 위한 흐름도이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
이하에서는 도 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])이 연접되어 구성된다.
Figure 112013067695157-pat00019
메시지 확장부(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)를 생성한다.
Figure 112013067695157-pat00020
이때, 메시지 확장부(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)을 생성한다.
Figure 112013067695157-pat00021
또한, 메시지 확장부(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])이 연접되어 구성된다.
Figure 112013067695157-pat00022
연쇄변수 초기 변환부(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])로 변환한다.
Figure 112013067695157-pat00023
이때, 연쇄변수 초기 변환부(300)는 하기의 수학식 6에 기초하여 512비트 또는 1024비트 연쇄변수 데이터(CV=CV[0]||CV[1]||…||CV[15])를 512비트 또는 1024비트 초기 상태 데이터(X_0= X_0[0]||X_0[1]||…||X_0[15])로 변환한다.
Figure 112013067695157-pat00024
연쇄변수 초기 변환부(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를 수행하여 최종 상태 데이터를 산출한다.
Figure 112013067695157-pat00025
Figure 112013067695157-pat00026
여기서, 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])는 고정해서 사용하는 상수를 의미한다.
Figure 112013067695157-pat00027
여기서,
Figure 112013067695157-pat00028
는 각각 32비트 또는 64비트인 x, y의 논리적 배타합을 출력하는 연산을 의미하고,
Figure 112013067695157-pat00029
는 각각 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)로 출력한다.
Figure 112013067695157-pat00030
한편, 압축 함수 연산부(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])를 생성한다.
Figure 112013067695157-pat00031
연쇄변수 최종 변환부(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: 연쇄변수 최종 변환부

Claims (12)

  1. 메시지와 연쇄변수 데이터를 외부로부터 입력받는 인터페이스부;
    상기 메시지로부터 복수의 확장 메시지를 생성하는 메시지 확장부;
    상기 연쇄변수 데이터를 압축 함수에 대한 초기 상태 데이터로 변환하는 연쇄변수 초기 변환부;
    상기 초기 상태 데이터와 상기 복수의 확장 메시지를 기초로 확장 메시지 결합 함수와 단계 함수를 반복한 후 최종 확장 메시지와의 결합하여 최종 상태 데이터를 산출하는 압축 함수 연산부; 및
    상기 최종 상태 데이터를 이용하여 상기 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 연쇄변수 최종 변환부를 포함하고,
    상기 메시지 확장부는,
    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]
    Figure 112014121620854-pat00048
  2. 삭제
  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])로 변환하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치.
  4. 청구항 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]
    Figure 112013067695157-pat00033

    [수학식8]
    Figure 112013067695157-pat00034

    [수학식9]
    Figure 112013067695157-pat00035


    (여기서, x
    Figure 112013067695157-pat00036
    y 는 각각 32비트 또는 64비트인 x, y의 논리적 배타합을 출력하는 연산, x
    Figure 112013067695157-pat00037
    y 는 각각 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])는 고정해서 사용하는 상수를 의미한다.)
  5. 청구항 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])를 산출하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치.
  6. 청구항 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])를 출력하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치.
  7. 메시지와 연쇄변수 데이터를 입력받는 단계;
    상기 메시지로부터 복수의 확장 메시지를 생성하는 단계;
    상기 연쇄변수 데이터를 압축 함수에 대한 초기 상태 데이터로 변환하는 단계;
    상기 초기 상태 데이터와 상기 복수의 확장 메시지를 기초로 확장 메시지 결합 함수와 단계 함수를 반복 연산한 후 최종 확장 메시지와 결합하여 최종 상태 데이터를 산출하는 단계; 및
    상기 최종 상태 데이터를 이용하여 상기 연쇄변수 데이터로부터 갱신된 연쇄변수 데이터를 생성하여 출력하는 단계를 포함하고,
    상기 복수의 확장 메시지를 생성하는 단계는,
    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]
    Figure 112014121620854-pat00049
  8. 삭제
  9. 청구항 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])로 변환하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법.
  10. 청구항 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]
    Figure 112013067695157-pat00039

    [수학식8]
    Figure 112013067695157-pat00040

    [수학식9]
    Figure 112013067695157-pat00041


    (여기서, x
    Figure 112013067695157-pat00042
    y 는 각각 32비트 또는 64비트인 x, y의 논리적 배타합을 출력하는 연산, x
    Figure 112013067695157-pat00043
    y 는 각각 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])는 고정해서 사용하는 상수를 의미한다.)
  11. 청구항 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])를 산출하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법.
  12. 청구항 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])를 출력하는 것을 특징으로 하는, 해시 알고리즘에서의 압축 연산을 수행하기 위한 방법.
KR1020130088514A 2013-07-26 2013-07-26 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법 KR101516573B1 (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010049126A (ja) 2008-08-25 2010-03-04 Sony Corp データ変換装置、およびデータ変換方法、並びにプログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
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 ハッシュ処理装置及びその方法
TWI501580B (zh) * 2009-08-07 2015-09-21 Dolby Int Ab 資料串流的鑑別
CN103477341B (zh) * 2011-04-06 2016-05-18 塞尔蒂卡姆公司 散列算法在处理器上的有效实现
KR101330664B1 (ko) * 2012-06-15 2013-11-15 한국전자통신연구원 저전력 암호화 장치 및 방법
KR101428770B1 (ko) * 2013-05-29 2014-08-08 한국전자통신연구원 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
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
JP2015026071A (ja) 2015-02-05
US20150032704A1 (en) 2015-01-29
KR20150012691A (ko) 2015-02-04
JP5869053B2 (ja) 2016-02-24
US9479193B2 (en) 2016-10-25

Similar Documents

Publication Publication Date Title
US11218320B2 (en) Accelerators for post-quantum cryptography secure hash-based signing and verification
JP4549303B2 (ja) パイプラインを用いてメッセージ認証コードを提供する方法および装置
EP3758281A1 (en) Fast xmss signature verification and nonce sampling process without signature expansion
JP6044738B2 (ja) 情報処理装置、プログラム及び記憶媒体
CN111370064A (zh) 基于simd的哈希函数的基因序列快速分类方法及系统
EP3758290A1 (en) Parallel processing techniques for hash-based signature algorithms
KR101428770B1 (ko) 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법
JP5183279B2 (ja) 情報処理装置、命令コードの暗号化方法および暗号化命令コードの復号化方法
US20140153725A1 (en) Low-power encryption apparatus and method
KR101516573B1 (ko) 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법
CN116318660B (zh) 一种消息扩展与压缩方法及相关装置
US20220123949A1 (en) Side channel protection for xmss signature function
CN114205104A (zh) 针对功率和电磁侧信道攻击的对认证标签计算的保护
US8312363B2 (en) Residue generation
US9843442B2 (en) Operation method and apparatus for providing compression function for fast message hashing
JP2010507813A (ja) 中央演算処理装置の演算能力を高めるための暗号方法および暗号装置
CN113971015B (zh) Uia2计算电路及其数据处理方法、芯片、电子设备及存储介质
CN112054889B (zh) 消息认证码的生成方法及生成装置、计算机可读存储介质
JP2011085739A (ja) 暗号アルゴリズムの計算方法、及び装置
JP2011081594A (ja) データ処理装置及びデータ処理プログラム
JP5421861B2 (ja) ハッシュ関数の安全性評価装置、方法及びプログラム
KR20230161195A (ko) 영지식 증명 친화적인 일방향 함수를 이용한 연산 방법, 그리고 이를 구현하기 위한 장치
WO2018094566A1 (zh) 并行哈希函数的构造方法
CN113821814A (zh) 模型文件的生成及解析方法、装置、设备和存储介质
CN116132015A (zh) 一种具有平衡性的通用密钥扩展快速方法

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