KR101688636B1 - 고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 그 장치 - Google Patents

고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 그 장치 Download PDF

Info

Publication number
KR101688636B1
KR101688636B1 KR1020150010693A KR20150010693A KR101688636B1 KR 101688636 B1 KR101688636 B1 KR 101688636B1 KR 1020150010693 A KR1020150010693 A KR 1020150010693A KR 20150010693 A KR20150010693 A KR 20150010693A KR 101688636 B1 KR101688636 B1 KR 101688636B1
Authority
KR
South Korea
Prior art keywords
quot
state data
data
message
equation
Prior art date
Application number
KR1020150010693A
Other languages
English (en)
Other versions
KR20160090646A (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 KR1020150010693A priority Critical patent/KR101688636B1/ko
Priority to US14/741,511 priority patent/US9843442B2/en
Publication of KR20160090646A publication Critical patent/KR20160090646A/ko
Application granted granted Critical
Publication of KR101688636B1 publication Critical patent/KR101688636B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/30Compression, e.g. Merkle-Damgard construction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

고속 메시지 해싱을 위한 압축함수를 제공하는 방법 및 장치가 개시된다. 메시지를 사용하여 복수의 확장 메시지들이 생성되며, 연쇄변수 데이터를 사용하여 상태 데이터의 초기의 값이 생성된다. 상태 데이터 및 복수의 확장 메시지들을 사용하는 결합 함수 및 단계 함수의 반복되는 수행에 의해 상태 데이터의 최종의 값이 생성되고, 최종의 값의 상태 데이터를 사용하여 연쇄변수 데이터가 갱신된다.

Description

고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 그 장치{COMPUTATION METHOD FOR PROVIDING COMPRESSION FUNCTION FOR FAST MESSAGE HASHING, AND APPARATUS USING THE SAME}
아래의 실시예들은 해시 알고리즘에서의 압축 연산에 관한 것으로, 보다 상세하게는 고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 연산 장치가 개시된다.
암호 어플리케이션의 주된 기능으로서, 암호 어플리케이션은 메시지에 대한 무결성(integrity)을 제공한다.
해시(hash) 함수는 이러한 메시지의 무결성을 보장하기 위한 함수이며, 메시지의 서명(sign) 및 인증(authentication) 등에서 널리 활용된다. 일반적으로, 해시 함수에서는 연쇄변수(chain variable) 데이터가 사용된다. 해시 함수는 메시지를 소정의 길이의 단위로 분할한 후, 분할된 메시지들 및 연쇄변수 데이터를 압축 함수의 입력으로 사용하여 연쇄변수 데이터를 갱신한다. 압축 함수에서 출력되는 최종의 연쇄변수 데이터는 다양한 알고리즘에 의해 가공될 수 있고, 가공된 연쇄변수 데이터가 메시지의 해시 값이 된다.
해시 함수와 관련하여, "256비트 출력을 갖는 해쉬 알고리즘"을 발명의 명칭으로 하는 한국등록특허 제10-0916805호 및 "해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법"을 발명의 명칭으로 하는 한국등록특허 제10-1428770호가 있다. 한국등록특허 제10-1428770호에서 개시된 해시 알고리즘에서, 입력된 임의의 길이의 메시지의 비트 열은 워드 열로 변환되고, 메시지는 기설정된 비트로 변환되며, 변환된 메시지에 대한 압축 연산에 의해 연쇄변수 데이터가 산출된다.
해시 함수의 계산 속도의 효율성을 향상시키기 위해서는 해시 함수의 핵심 알고리즘인 압축 함수가 암호 어플리케이션에 특화된 칩 또는 중앙 처리 장치(Central Processing Unit; CPU)에서 최적화되어 구현되는 것이 가능하도록 설계되어야 할 필요가 있다.
일 실시예는 고속 메시지 해싱을 위한 압축 함수가 구현된 장치 및 방법을 제공할 수 있다.
일 실시예는 공격에 대한 안전성을 보장하면서 메시지 해싱을 가능하게 하는 압축 함수가 구현된 장치 및 방법을 제공할 수 있다.
일 측면에 있어서, 메시지를 사용하여 복수의 확장 메시지들을 생성하는 단계; 연쇄변수 데이터를 사용하여 상태 데이터의 초기의 값을 생성하는 단계; 상기 상태 데이터 및 상기 복수의 확장 메시지들을 사용하는 결합 함수 및 단계 함수를 반복하여 수행함으로써 상기 상태 데이터의 최종의 값을 생성하는 단계; 및 상기 최종의 값의 상기 상태 데이터를 사용하여 상기 연쇄변수 데이터를 갱신하는 단계를 포함하는 연산 방법이 제공된다.
상기 연산 방법은, 상기 갱신된 연쇄변수 데이터에 소정의 연산을 적용함으로써 상기 메시지에 대한 해시 값을 생성하는 단계를 더 포함할 수 있다.
상기 메시지는 32w개의 비트들을 포함할 수 있다.
상기 w는 1 이상의 정수일 수 있다.
상기 복수의 확장 메시지들의 각 확장 메시지는 16w개의 비트들을 포함할 수 있다.
상기 복수의 확장 메시지들은 W0부터 WR까지의 R+1개일 수 있다.
상기 R은 1 이상의 정수일 수 있고, 0 이상 R 이하의 정수 r에 대하여, 상기 복수의 확장 메시지들 중 상기 r+1 번째의 확장 메시지 Wr는 상기 결합 함수의 상기 r+1 번째 반복에서 사용될 수 있다.
상기 복수의 확장 메시지들은 W0부터 WR까지의 R+1개일 수 있다.
상기 메시지 M은 M[0]부터 M[31]까지의 32개의 서브 메시지들의 연접일 수 있다. 상기 복수의 확장 메시지들은 아래의 수학식 1에 기반하여 생성될 수 있다.
[수학식 1]
Wr = Wr[0]||Wr[1]||...||Wr[15], 0≤r≤R
여기서, 상기 Wr은 상기 복수의 확장 메시지들 중 r+1 번째의 확장 메시지일 수 있고, 상기 Wr은 16개의 서브 확장 메시지들의 연접일 수 있고, 0 이상 15 이하의 정수인 x에 대해서 Wr[x]는 상기 Wr의 x+1 번째의 서브 확장 메시지일 수 있다.
상기 서브 확장 메시지들은 아래의 수학식 2, 수학식 3 및 수학식 4에 기반하여 생성될 수 있다.
[수학식 2]
W0[i] = M[i], 0≤i≤15;
[수학식 3]
W1[i] = M[i+16], 0≤i≤15;
[수학식 4]
Wr[i] = Wr -2[τ(i)]
Figure 112015006956208-pat00001
Wr -1[i], 2≤r≤R, 0≤i≤15;
여기서, 상기 τ(i)의 값은 0 이상 15 이하의 정수일 수 있고, 상기 τ는 전단사함수(bijection)일 수 있다.
상기 τ는 아래의 수학식 5 및 수학식 6의 조건을 충족시킬 수 있다.
[수학식 5]
τ (τ (τ (τ(i)))) = i, 0≤i≤15;
[수학식 6]
i ≠ τ(i) ≠ τ (τ (i)) ≠ τ (τ (τ(i))), 0≤i≤15;
상기 τ는 아래의 수학식 7의 조건을 충족시킬 수 있다.
[수학식 7]
int(i / 4) = int(τ(i) / 4), 0≤i≤15;
여기서, int(x)는 상기 x 이하인 최대의 정수일 수 있다.
상기 τ는 아래의 수학식 8의 조건을 충족시킬 수 있다.
[수학식 8]
int(τ(i*4) / 4) = int(τ(i*4+1) / 4) = int(τ(i*4+2) / 4) = int(τ(i*4+3) / 4), 0≤i≤3;
상기 τ는 아래의 수학식 9과 같이 정의될 수 있다.
[수학식 9]
τ(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.
상기 연쇄변수 데이터 CV는 CV[0]부터 CV[15]까지의 16개의 서브 연쇄변수 데이터의 연접일 수 있다.
상기 초기의 값의 상기 상태 데이터 X0는 X0[0]부터 X0[15]까지의 16개의 초기의 값의 서브 상태 데이터일 수 있다.
상기 초기의 값의 상기 서브 상태 데이터는 아래의 수학식 10에 기반하여 생성될 수 있다.
[수학식 10]
X0[i] = CV[i], 0≤i≤15
상기 결합 함수는 R+1회 반복될 수 있다.
상기 결합 함수는 상기 결합 함수의 r+1 번째 반복에서 Xr에 Wr의 값을 반영할 수 있다.
상기 r은 0 이상 R 이하의 정수일 수 있다.
상기 Xr은 r+1 번째의 상기 상태 데이터일 수 있다.
상기 Wr은 상기 복수의 확장 메시지들 중 r+1 번째의 확장 메시지일 수 있다.
X0은 상기 초기의 값을 갖는 상기 상태 데이터일 수 있다.
XR은 상기 최종의 값을 갖는 상기 상태 데이터일 수 있다.
상기 결합 함수는 상기 결합 함수의 r+1 번째 반복에서 논리적 배타합 연산
Figure 112015006956208-pat00002
으로 상기 Xr에 상기 Wr을 결합시킬 수 있다.
상기 결합 함수는 아래의 수학식 11에 기반하여 상기 상태 데이터 Xr에 상기 Wr의 값을 반영할 수 있다.
[수학식 11]
Xr[i] = Xr[i]
Figure 112015006956208-pat00003
Wr[i], 0≤i≤15;
여기서, 상기 Xr은 16개의 서브 상태 데이터의 연접일 수 있고, Xr[i]는 상기 Xr의 i+1 번째의 서브 상태 데이터일 수 있다.
상기 Wr은 16개의 서브 확장 메시지들의 연접일 수 있고, 상기 Wr[i]는 상기 Wr의 i+1 번째의 서브 확장 메시지일 수 있다.
상기 단계 함수는 R회 반복될 수 있다.
0 이상 R-1 이하의 정수 r에 대하여, 상기 단계 함수의 r+1 번째 반복에서 Xr+1는 상기 Xr에 기반하여 생성될 수 있다.
상기 Xr은 상기 단계 함수의 r+1 번째 반복에서의 상태 데이터일 수 있다.
X0은 상기 초기의 값을 갖는 상기 상태 데이터일 수 있고, XR은 상기 최종의 값을 갖는 상기 상태 데이터일 수 있다.
상기 단계 함수의 r+1 번째 반복에서 Xr+1는 아래의 수학식 12에 따라 생성되는 연산 방법.
[수학식 12]
Xr+1[i] = Xr[σ(i)], 0≤i≤15;
여기서, 상기 σ(i)의 값은 0 이상 15 이하의 정수일 수 있다.
상기 σ는 전단사함수일 수 있다.
상기 σ는 아래의 수학식 13의 조건을 충족시킬 수 있다.
[수학식 13]
int(σ(i*4) / 4) = int(σ(i*4+1) / 4) = int(σ(i*4+2) / 4) = int(σ (i*4+3) / 4), 0≤i≤3;
상기 σ는 아래의 수학식 14과 같이 정의될 수 있다.
[수학식 14]
σ(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.
상기 단계 함수의 r+1 번째 반복에서, 0 이상 7 이하의 i에 대하여 상기 Xr[i]는 Xr[i+8]에 기반하여 갱신될 수 있다.
상기 단계 함수의 r+1 번째 반복에서, 8 이상 15 이하의 i에 대하여 상기 Xr[i]는 Xr[i-8]에 기반하여 갱신될 수 있다.
0 이상 15 이하의 i에 대하여 상기 Xr[i]는 소정의 개수의 비트의 순환 이동에 의해 갱신될 수 있다.
상기 단계 함수의 r+1 번째 반복에서, 상기 Xr+1[i]는 아래의 수학식 15, 수학식 16, 수학식 17, 수학식 18, 수학식 19, 수학식 20, 수학식 21 및 수학식 22의 순차적인 수행에 기반하여 생성될 수 있다.
[수학식 15]
Xr[i] = Xr[i]
Figure 112015006956208-pat00004
Xr[i+8], 0≤i≤7;
[수학식 16]
Xr[i] = Xr[i] <<< ar[i], 0≤i≤7;
[수학식 17]
Xr[i] = Xr[i]
Figure 112015006956208-pat00005
Dr[i], 0≤i≤7;
[수학식 18]
Xr[i+8] = Xr[i]
Figure 112015006956208-pat00006
Xr[i+8], 0≤i≤7;
[수학식 19]
Xr[i+8] = Xr[i+8] <<< br[i], 0≤i≤7;
[수학식 20]
Xr[i] = Xr[i]
Figure 112015006956208-pat00007
Xr[i+8], 0≤i≤7;
[수학식 21]
Xr[i+8] = Xr[i+8] <<< cr[i], 0≤i≤7;
[수학식 22]
Xr+1[i] = Xr[σ(i)], 0≤i≤15;
여기서, 0 이상 15 이하인 i에 대해서, ar[i], br[i], cr[i] 및 Dr[i]는 각각 상수일 수 있고, σ(i)의 값은 0 이상 15 이하의 정수일 수 있고, 상기 σ는 전단사함수일 수 있다.
다른 일 측면에 따르면, 메시지를 사용하여 복수의 확장 메시지들을 생성하는 메시지 확장부; 연쇄변수 데이터를 사용하여 상태 데이터의 초기의 값을 생성하는 상태 데이터 초기화부; 상기 상태 데이터 및 상기 복수의 확장 메시지들을 사용하는 결합 함수 및 단계 함수를 반복하여 수행함으로써 상기 상태 데이터의 최종의 값을 생성하는 상태 데이터 생성부; 및 상기 최종의 값의 상기 상태 데이터를 사용하여 상기 연쇄변수 데이터를 갱신하는 연쇄변수 갱신부를 포함하는 연산 장치가 제공된다.
고속 메시지 해싱을 위한 압축 함수가 구현된 방법 및 장치가 제공된다.
공격에 대한 안전성을 보장하면서 메시지 해싱을 가능하게 하는 압축 함수가 구현된 방법 및 장치가 제공된다.
CPU에서 보편적으로 사용되는 비트 연산자들의 조합을 사용함으로써 고속 병렬처리를 가능하게 하고 CPU의 연산량을 감소시키는 압축 함수가 구현된 방법 및 장치가 제공된다.
다양한 길이의 입력들에 대하여 압축 함수의 구조의 정의를 가능하게 하는 방법 및 장치가 제공된다.
도 1은 일 실시예에 따른 연산 장치의 블록도이다.
도 2는 일 실시예에 따른 연산 장치에 의한 연산 방법의 흐름도이다.
도 3은 일 예에 따른 상태 데이터 생성 방법을 설명한다.
도 4는 일 예에 따른 단계 함수의 다이어그램(diagram)이다.
도 5는 일 예에 따른 연산 방법을 구현하는 컴퓨터를 도시한다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 실시예들은 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다.
실시예들에서 사용되는 용어는, 단순한 용어의 명칭이 아닌 용어가 가지는 실질적인 의미와 본 명세서의 전반에 걸친 내용을 토대로 해석될 수 있다.
실시예들에서, 특정 부분과 다른 부분에 대한 연결관계는, 양자의 직접적인 연결관계 이외에, 그 사이에 또 다른 부분을 거쳐 연결되는 간접적인 연결관계를 포함할 수 있다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낼 수 있다.
실시예에서, 데이터를 나타내는 영문자는 대괄호 "[" 및 "]"와 함께 사용될 수 있다. 대괄호 안의 숫자는 영문자가 나타내는 데이터가 배열(array) 등의 하나 이상의 요소 등을 가질 때 요소의 인덱스(index)를 나타낸다. 예를 들면, "a[0]"은 하나 이상의 요소들을 갖는 데이터 a의 첫 번째의 요소를 나타낼 수 있으며, "a[r]"은 a의 r+1 번째의 요소를 나타낼 수 있다.
실시예에서, 데이터 또는 변수의 값을 생성한다는 것은 상기 데이터 또는 상기 변수에게 할당(assign)될 값을 산출하는 것을 의미할 수 있고, 산출된 값을 상기 데이터 또는 상기 변수에게 할당하는 것을 의미할 수 있다.
도 1은 일 실시예에 따른 연산 장치의 블록도이다.
연산 장치(100)는 해시 알고리즘에서 사용되는 압축 연산을 수행할 수 있다.
연산 장치(100)는 수신부(110), 연쇄변수 생성부(115), 메시지 확장부(120), 상태 데이터 초기화부(130), 상태 데이터 생성부(140), 연쇄변수 갱신부(150) 및 해시 값 생성부(160)를 포함할 수 있다.
일 실시예에 따르면, 수신부(110), 연쇄변수 생성부(115), 메시지 확장부(120), 상태 데이터 초기화부(130), 상태 데이터 생성부(140), 연쇄변수 갱신부(150) 및 해시 값 생성부(160)는 그 중 적어도 일부가 외부 시스템과 통신하는 프로그램 모듈들일 수 있다. 이러한 프로그램 모듈들은 운영 시스템, 응용 프로그램 모듈 및 기타 프로그램 모듈의 형태로 연산 장치(100)에 포함될 수 있으며, 물리적으로는 여러 가지 공지의 기억 장치 상에 저장될 수 있다. 또한, 이러한 프로그램 모듈 중 적어도 일부는 연산 장치(100) 와 통신 가능한 원격 기억 장치에 저장될 수도 있다. 한편, 이러한 프로그램 모듈들은 본 발명에 따라 후술할 특정 업무를 수행하거나 특정 추상 데이터 유형을 실행하는 루틴(Routine), 서브루틴(Subroutine), 프로그램(Program), 오브젝트(Object), 컴포넌트(Component) 및 데이터 구조(Data Structure) 등을 포괄하지만, 이에 제한되지는 않는다.
수신부(110)는 메시지 및 연쇄변수 데이터를 수신할 수 있다. 예를 들면, 수신부(110)는 사용자에 의해 입력되거나 외부의 다른 장치로부터 입력된 메시지를 수신할 수 있다. 수신부(110)는 연쇄변수 생성부(115)에 의해 생성되거나 외부의 다른 장치로부터 전송된 연쇄변수 데이터를 수신할 수 있다.
연쇄변수 생성부(115)는 연쇄변수 데이터를 생성할 수 있다.
메시지 확장부(120)는 메시지를 사용하여 복수의 확장 메시지들을 생성할 수 있다. 예를 들면, 메시지 확장부(120)는 메시지를 복수의 확장 메시지들로 확장할 수 있다.
상태 데이터 초기화부(130)는 연쇄변수 데이터를 사용하여 상태 데이터의 초기의 값을 생성할 수 있다. 여기서, 초기의 값은 후술될 결합 함수 및 단계 함수의 연산이 시작되기 전 상태 데이터가 갖는 값을 의미할 수 있다. 초기 상태 데이터는 초기의 값을 갖는 상태 데이터를 의미할 수 있다. 상태 데이터 초기화부(130)는 연쇄변수 데이터를 압축 함수에 대한 초기 상태 데이터로 변환할 수 있다.
상태 데이터 생성부(140)는 상태 데이터 및 복수의 확장 메시지들을 사용하는 결합 함수 및 단계 함수를 반복하여 수행함으로써 상태 데이터의 최종의 값을 생성할 수 있다. 여기서, 최종의 값은 결합 함수 및 단계 함수의 연산이 종료된 후 상태 데이터가 갖는 값을 의미할 수 있다. 최종 상태 데이터는 최종의 값을 갖는 상태 데이터를 의미할 수 있다.
결합 함수는 복수의 확장 메시지들 및 상태 데이터의 결합을 통해 상태 데이터를 갱신할 수 있고, 단계 함수는 상태 데이터를 사용하여 상태 데이터를 갱신할 수 있다. 결합 함수 및 단계 함수가 반복해서 수행됨에 따라, 결합 함수 및 단계 함수는 다음의 반복에서 사용될 상태 데이터를 생성할 수 있다. 상태 데이터의 갱신에 의해 다음의 반복에서 사용될 상태 데이터가 생성될 수 있다.
연쇄변수 갱신부(150)는 최종의 값의 상태 데이터를 사용하여 연쇄변수 데이터를 갱신할 수 있다.
해시 값 생성부(160)는 갱신된 연쇄변수 데이터에 소정의 연산을 적용함으로써 메시지에 대한 해시 값을 생성할 수 있다. 여기서, 소정의 연산은 연쇄변수 데이터에 기반하여 메시지에 대한 해시 값을 생성하는 기존의 함수, 알고리즘 및 방법 등이 사용될 수 있다.
일 실시예에서, 전술된 상태 데이터는 결합 함수 및 단계 함수에서 사용되는 연쇄변수 데이터의 임시의 값을 의미할 수 있다. 상태 데이터의 초기의 값은 결합 함수 및 단계 함수의 반복이 수행되기 전의 연쇄변수 데이터의 값일 수 있고, 상태 데이터의 최종의 값은 결합 함수 및 단계 함수의 반복이 수행된 후의 연쇄변수 데이터의 값일 수 있다. 결합 함수 및 단계 함수에서, 상태 데이터에 대한 동작은 연쇄변소 데이터에 이루어지는 것으로도 해석될 수 있다. 예를 들면, 상태 데이터 생성부(140)는 연쇄변수 데이터 및 복수의 확장 메시지들을 사용하는 결합 함수 및 단계 함수를 반복하여 수행함으로써 연쇄변수 데이터의 최종의 값을 생성할 수 있다. 또한, 결합 함수는 복수의 확장 메시지들 및 연쇄변수 데이터의 결합을 통해 연쇄변수 데이터를 갱신할 수 있고, 단계 함수는 연쇄변수 데이터를 사용하여 연쇄변수 데이터를 갱신할 수 있다.
도 2는 일 실시예에 따른 연산 장치에 의한 연산 방법의 흐름도이다.
단계(205)에서, 연쇄변수 데이터 생성부(115)는 연쇄변수 데이터 CV를 생성할 수 있다. 단계(205)는 선택적인 것으로, 연쇄변수 데이터는 외부의 다른 장치로부터 전송될 수도 있다.
단계(210)에서, 수신부(110)는 메시지 M 및 연쇄변수 데이터 CV를 수신할 수 있다. 예를 들면, 수신부(110)는 사용자에 의해 입력되거나 외부의 다른 장치로부터 입력된 메시지 M을 수신할 수 있다. 또한, 수신부(110)는 연쇄변수 생성부(115)에 의해 생성되거나 외부의 다른 장치로부터 전송된 연쇄변수 데이터 CV를 수신할 수 있다.
메시지 M은 압축 및 암호화의 대상일 수 있다. 메시지 M은 32w개의 비트들을 포함할 수 있다. 말하자면, 메시지 M의 비트들의 개수는 32w일 수 있다. w는 1 이상의 정수일 수 있다.
연쇄변수 데이터 CV는 16w개의 비트들을 포함할 수 있다. 말하자면, 연쇄변수 데이터 CV의 비트들의 개수는 16w일 수 있다. 연쇄변수 데이터 CV는 메시지 M에 비해 절반의 길이를 가질 수 있다.
메시지 M은 M[0]부터 M[31]까지의 32개의 서브 메시지들의 연접(concatenation)일 수 있다. 32개의 서브 메시지들의 각 서브 메시지는 w개의 비트들을 포함할 수 있다. 말하자면, 각 서브 메시지의 비트들의 개수는 w일 수 있다.
메시지 M 및 복수의 서브 메시지들 간의 관계는 아래의 수학식 1과 같이 표현될 수 있다.
[수학식 1]
M = M[0]||M[1]||...||M[31]
여기서, "||"는 연접 연산을 나타낼 수 있다.
단계(220)에서, 메시지 확장부(120)는 메시지 M을 사용하여 복수의 확장 메시지들을 생성할 수 있다. 예를 들면, 메시지 확장부(120)는 메시지를 복수의 확장 메시지들로 확장할 수 있다.
복수의 확장 메시지들은 W0부터 WR까지의 R+1개일 수 있다. R은 1 이상의 정수일 수 있다.
복수의 확장 메시지들은 아래의 수학식 2에서와 같이 표시될 수 있다.
[수학식 2]
W0, W1,..., WR: Wr, 0≤r≤R
여기서, Wr은 복수의 확장 메시지들 중 r+1 번째의 확장 메시지일 수 있다. 복수의 확장 메시지들은 후술될 결합 함수가 반복해서 수행됨에 따라 순차적으로 사용될 수 있다. 0 이상 R 이하인 r에 대해서, r+1 번째의 확장 메시지 r은 결합 함수의 r+1 번째 반복에서 사용될 수 있다.
복수의 확장 메시지들의 각 확장 메시지는 16w개의 비트들을 포함할 수 있다. 각 확장 메시지는 메시지 M에 비해 절반의 길이를 가질 수 있다.
메시지 확장부(130)는 아래의 수학식 3에 기반하여 복수의 확장 메시지들을 생성할 수 있다.
[수학식 3]
Wr = Wr[0]||Wr[1]||...||Wr[15], 0≤r≤R
0 이상 15 이하의 정수 x에 대해서, Wr[x]는 확장 메시지 Wr의 x+1 번째의 서브 확장 메시지일 수 있다. 수학식 3에서 설명된 것과 같이 확장 메시지 Wr은 16개의 서브 확장 메시지들인 Wr[0] 내지 Wr[15]의 연접일 수 있다.
확장 메시지 및 서브 확장 메시지들 간의 관계는 아래의 수학식 4에서와 같이 표현될 수 있다.
[수학식 4]
W0, W1,...,WR; Wr = Wr[0]||Wr[1]||...||Wr[15], 0≤r≤R
메시지 확장부(130)는 아래의 수학식 5, 수학식 6 및 수학식 7에 기반하여 서브 확장 메시지들을 생성할 수 있다. 말하자면, 아래의 수학식 5, 수학식 6 및 수학식 7에 의해 32w 비트들의 메시지 M으로부터 모두 R+1개의 16w 비트들의 확장 메시지들이 생성될 수 있다.
[수학식 5]
W0[i] = M[i], 0≤i≤15;
[수학식 6]
W1[i] = M[i+16], 0≤i≤15;
[수학식 7]
Wr[i] = Wr -2[τ(i)]
Figure 112015006956208-pat00008
Wr -1[i], 2≤r≤R, 0≤i≤15;
여기서, w개의 비트들을 포함하는 x 및 w개의 비트들을 포함하는 y에 대해서, "x
Figure 112015006956208-pat00009
y"는 x를 양의 정수로 표현한 값 및 y를 양의 정수로 표현한 값의 합이 2w로 나뉘었을 때의 나머지를 출력하는 연산일 수 있다. 나머지는 w개의 비트들일 수 있다. 말하자면,
Figure 112015006956208-pat00010
는 양의 정수인 좌측 피연산자 및 양의 정수인 우측 피연산자의 합이 2w로 나뉘었을 때의 w개의 비트들의 나머지일 수 있다.
τ(i)의 값은 0 이상 15 이하의 정수일 수 있고, τ는 전단사함수(bijection)일 수 있다. τ는 아래의 수학식 8과 같이 정의될 수 있다.
[수학식 8]
τ(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.
또한, 일 실시예에 따른 τ는 소정의 조건을 충족시키는 범위 내에서 다양하게 정의될 수 있다. 예를 들면, τ는 아래의 수학식 9 및 수학식 10의 조건을 충족시킬 수 있다.
[수학식 9]
τ (τ (τ (τ(i)))) = i, 0≤i≤15;
[수학식 10]
i ≠ τ(i) ≠ τ (τ (i)) ≠ τ (τ (τ(i))), 0≤i≤15;
예를 들면, 0 이상 15 이하의 i가 τ로 입력되고, τ로부터의 출력이 다음의 τ로 다시 입력될 때, i가 4개의 τ들을 거치게 되면 다시 원래의 i가 출력될 수 있고, 중간 과정에서 출력되는 값들 및 마지막의 출력인 i는 모두 서로 상이할 수 있다.
또는, τ는 아래의 수학식 11 또는 수학식 12의 조건을 충족시킬 수 있다.
[수학식 11]
int(i / 4) = int(τ(i) / 4), 0≤i≤15;
[수학식 12]
int(τ(i*4) / 4) = int(τ(i*4+1) / 4) = int(τ(i*4+2) / 4) = int(τ(i*4+3) / 4), 0≤i≤3;
여기서, int(x)는 상기 x 이하인 최대의 정수일 수 있다. 예를 들면, 0 이상 3 이하인 i에 대해서 τ(i)는 0 이상 3 이하일 수 있다. 4 이상 7 이하인 i에 대해서 τ(i)는 4 이상 7 이하일 수 있다. 8 이상 11 이하인 i에 대해서 τ(i)는 8 이상 11 이하일 수 있다. 또한, 12 이상 15 이하인 i에 대해서 τ(i)는 12 이상 15 이하일 수 있다.
메시지 확장부(130)는 32w비트들의 갖는 메시지 M에 기반하여 생성된 R+1개의 16w비트들의 확장 메시지들 W0, W1,..., WR 을 상태 데이터 생성부(140)로 출력할 수 있다.
단계(230)에서, 상태 데이터 초기화부(130)는 연쇄변수 데이터 CV를 사용하여 상태 데이터의 초기의 값을 생성할 수 있다. 초기 상태 데이터 X0은 초기의 값을 갖는 상태 데이터를 의미할 수 있다.
상태 데이터 초기화부(130)는 16w비트들의 연쇄변수 데이터 CV를 16w비트들의 초기 상태 데이터 X0으로 변환할 수 있다.
연쇄변수 데이터 CV는 CV[0]부터 CV[15]까지의 16개의 서브 연쇄변수 데이터의 연접일 수 있다. 연쇄변수 데이터 CV 및 서브 연쇄변수 데이터 간의 관계는 아래의 수학식 13과 같이 표현될 수 있다.
[수학식 13]
CV = CV[0]||CV[1]||...||CV[15]
초기 상태 데이터 X0는 X0[0]부터 X0[15]까지의 16개의 초기의 값의 서브 상태 데이터의 연접일 수 있다. 초기 서브 상태 데이터는 초기의 값을 갖는 서브 상태 데이터를 의미할 수 있다.
초기 상태 데이터 X0 및 초기 서브 상태 데이터 간의 관계는 아래의 수학식 14와 같이 표현될 수 있다.
[수학식 14]
X0 = X0[0]||X0[1]||...||X0[15]
초기 서브 상태 데이터는 아래의 수학식 15에 기반하여 생성될 수 있다.
[수학식 15]
X0[i] = CV[i], 0≤i≤15
말하자면, 0 이상 15 이하인 i에 대하여, CV[i]의 값이 X0[i]로 복사될 수 있다. 또는, X0[i]의 값은 CV[i]의 값에 동일한 값으로 설정될 수 있다.
상태 데이터 초기화부(130)는 연쇄변수 데이터의 변환에 의해 생성된 초기 상태 데이터를 상태 데이터 생성부(140)로 출력할 수 있다.
단계(240)에서, 상태 데이터 생성부(140)는 상태 데이터 및 복수의 확장 메시지들을 사용하는 결합 함수 및 단계 함수를 반복하여 수행함으로써 상태 데이터의 최종의 값을 생성할 수 있다. 최종 상태 데이터 XR은 최종의 값을 갖는 상태 데이터를 의미할 수 있다.
상태 데이터 생성부(140)는 메시지 확장부(120)로부터 R+1개의 16w비트들의 확장 메시지들을 수신할 수 있고, 상태 데이터 초기화부(130)로부터 초기 상태 데이터 X0을 수신할 수 있다.
상태 데이터 생성부(140)는 결합 함수 및 단계 함수를 순차적으로 반복하여 수행할 수 있다.
결합 함수는 R+1회 반복될 수 있고, 단계 함수는 R회 반복될 수 있다. r이 0 이상 R-1 이하의 정수일 때, r+1 번째 반복의 결합 함수가 수행된 후 r+1 번째 반복의 단계 함수가 수행될 수 있다. r+1 번째 반복의 단계 함수가 수행된 후 r+2 번째 반복의 결합 함수가 수행될 수 있다. 말하자면, r+1 번째 반복의 단계 함수는 r 번째 반복의 결합 함수 및 r+1 번째 반복의 결합 함수의 사이에서 수행될 수 있다. 또한, 마지막으로 R 번째 반복의 단계 함수가 수행된 후 R+1 번째 반복의 결합 함수가 수행될 수 있다.
결합 함수 및 단계 함수가 반복됨에 따라 상태 데이터의 값이 갱신될 수 있고, 각 반복에서 사용되는 상태 데이터가 생성될 수 있다. X0는 초기의 값을 갖는 상태 데이터일 수 있고, 결합 함수 및 단계 함수가 수행되기 전의 상태 데이터의 값을 나타낼 수 있다. XR은 최종의 값을 갖는 상태 데이터일 수 있고, 결합 함수 및 단계 함수가 모두 수행된 후의 상태 데이터의 값을 나타낼 수 있다.
X0 및 XR 외에도 상태 데이터는 결합 함수 및 단계 함수의 반복에 따라 구분될 수 있다. 상태 데이터는 X0 내지 XR의 R+1개로 구분될 수 있다. 0 이상 R 이하인 r에 대해서, r+1 번째의 상태 데이터 Xr은 Xr[0]부터 Xr[15]까지의 16개의 서브 상태 데이터의 연접일 수 있다.
Xr 및 Xr의 서브 상태 데이터 간의 관계는 아래의 수학식 16과 같이 표현될 수 있다.
[수학식 16]
Xr = Xr[0]||Xr[1]||...||Xr[15]
0 이상 15 이하의 i에 대해서, Xr[i]는 Xr의 i+1 번째의 서브 상태 데이터일 수 있다.
우선, 아래에서 일 실시예에 따른 결합 함수에 대해 설명된다.
r이 0 이상 R 이하의 정수일 때, 결합 함수는 결합 함수의 r+1 번째 반복에서 Xr에 Wr의 값을 반영할 수 있다. Xr는 r+1 번째의 상태 데이터일 수 있고, Wr은 복수의 확장 메시지들 중 r+1 번째의 확장 메시지일 수 있다. 말하자면, r+1 번째의 상태 데이터 Xr r+1 번째의 확장 메시지 Wr은 각각 결합 함수의 r+1 번째 반복에서 사용되는 상태 데이터 및 확장 메시지를 의미할 수 있다. 예를 들면, 결합 함수의 r+1 번째 반복에서, Xr 및 Wr에 의해 Xr이 갱신될 수 있다.
또한, r이 0 이상 R 이하의 정수이고, i가 0 이상 15 이하의 정수일 때, 결합 함수의 r+1 번째 반복에서, Xr[i] 및 Wr[i]에 의해 Xr[i]가 갱신될 수 있다. Xr[i]는 Xr의 i+1 번째의 서브 상태 데이터일 수 있다. Wr[i]는 Wr의 i+1번째의 서브 확장 메시지일 수 있다.
결합 함수는 아래의 수학식 17의 연산을 수행할 수 있다.
[수학식 17]
Xr[i] = Xr[i]
Figure 112015006956208-pat00011
Wr[i], 0≤i≤15;
결합 함수는 수학식 17에 기반하여 Xr에 Wr의 값을 반영할 수 있다. 결합 함수는, 수학식 17에서 나타난 것과 같이, 결합 함수의 r+1 번째 반복에서 논리적 배타합 연산
Figure 112015006956208-pat00012
로 Xr에 Wr를 결합시킬 수 있다.
Figure 112015006956208-pat00013
연산은 2개의 피연산자(operand)들에 대한 XOR의 결과를 출력하는 연산일 수 있다. 말하자면, 결합은 Xr에 Wr가 XOR되는 것을 의미할 수 있으며, Xr는 Wr과의 XOR에 의해 갱신될 수 있다.
또한, 결합 함수는 수학식 12에 기반하여 Xr[i]에 Wr[i]의 값을 반영할 수 있다. 결합 함수의 r+1 번째 반복에서 논리적 배타합 연산
Figure 112015006956208-pat00014
로 Xr[i]에 Wr[i]를 결합시킬 수 있다. 말하자면, 결합은 Xr[i]에 Wr[i]가 XOR되는 것을 의미할 수 있으며, Xr[i]는 Wr[i]과의 XOR에 의해 갱신될 수 있다.
다음으로, 아래에서 일 실시예에 따른 단계 함수에 대해 설명된다.
전술된 것과 같이, 0 이상 R-1 이하인 r에 대해서, Xr은 단계 함수의 r+1 번째 반복에서의 상태 데이터일 수 있다. 단계 함수의 r+1 번째 반복에서, Xr의 값이 갱신될 수 있으며, Xr에 기반하여 Xr+1이 생성될 수 있다. 말하자면, 단계 함수는 현재의 단계의 상태 데이터 Xr를 사용하여 다음의 단계의 상태 데이터 Xr+1를 생성하는 과정으로 간주될 수 있다. 생성된 다음의 단계의 상태 데이터 Xr+1는 다음의 결합 함수의 반복에서 Wr+1과 결합될 수 있다. 앞서 설명된 상태 데이터의 갱신 및 생성에 대한 설명은 서브 상태 데이터에도 적용될 수 있다.
0 이상 R-1 이하인 r에 대해서, 단계 함수의 r+1 번째 반복에서, Xr+1[i]는 아래의 수학식 18, 수학식 19, 수학식 20, 수학식 21, 수학식 22, 수학식 23, 수학식 24, 수학식 25 및 수학식 26의 순차적인 수행에 기반하여 생성될 수 있다.
[수학식 18]
Xr[i] = Xr[i]
Figure 112015006956208-pat00015
Xr[i+8], 0≤i≤7;
[수학식 19]
Xr[i] = Xr[i] <<< ar[i], 0≤i≤7;
[수학식 20]
Xr[i] = Xr[i]
Figure 112015006956208-pat00016
Dr[i], 0≤i≤7;
[수학식 21]
Xr[i+8] = Xr[i]
Figure 112015006956208-pat00017
Xr[i+8], 0≤i≤7;
[수학식 22]
Xr[i+8] = Xr[i+8] <<< br[i], 0≤i≤7;
[수학식 23]
Xr[i] = Xr[i]
Figure 112015006956208-pat00018
Xr[i+8], 0≤i≤7;
[수학식 24]
Xr[i+8] = Xr[i+8] <<< cr[i], 0≤i≤7;
[수학식 25]
Xr+1[i] = Xr[σ(i)], 0≤i≤15;
여기서, "x <<< y"는 x가 y의 값의 비트들만큼 왼쪽으로 순환 이동(rotation)된 결과를 출력하는 연산일 수 있다. 말하자면, <<< 연산은 좌측 피연산자가 우측 피연산자의 값의 비트들만큼 왼쪽으로 순환 이동된 값을 생성할 수 있다.
0 이상 15 이하인 i에 대해서, ar[i], br[i], cr[i] 및 Dr[i]은 각각 상수일 수 있다. ar[i], br[i], cr[i] 및 Dr[i]의 값을 각각 조정함으로써 동일한 메시지 M 및 동일한 연쇄변수 데이터 CV에 대해서, 상이한 최종 상태 데이터 XR가 생성될 수 있다. 말하자면, ar[i], br[i], cr[i] 및 Dr[i]의 값의 조정을 통해 실시예의 방법에 따른 결과가 획일화되는 것이 방지될 수 있다.
Dr는 8w개의 비트들을 갖는 상수일 수 있다. Dr는 Dr[0] 내지 Dr[7]의 연접일 수 있다. D는 하기의 수학식 26과 같이 표현될 수 있다.
[수학식 26]
Dr = Dr[0]||Dr[1]||...||Dr[7]
0 이상 15 이하인 i에 대해서, Dr[i]는 상수일 수 있다.
말하자면, 수학식 18 내지 수학식 25는 단계 함수에 의한 Xr의 갱신 및 Xr+1의 생성의 과정을 나타낼 수 있다. 예를 들면, 단계 함수의 r+1 번째 반복에서, Xr+1는 수학식 21에 따라 생성될 수 있다. σ(i)의 값은 0 이상 15 이하의 정수일 수 있으며, σ는 전단사함수일 수 있다.
수학식 18 내지 수학식 24에서 도시된 것과 같이, 단계 함수의 r+1 번째 반복에서, 0 이상 7 이하의 i에 대하여 Xr[i]는 Xr[i+8]에 기반하여 갱신될 수 있고, 8 이상 15 이하의 i에 대하여 Xr[i]는 Xr[i-8]에 기반하여 갱신될 수 있다. 0 이상 7 이하의 i에 대하여 Xr[i] 및 Xr[i+8]는 서로 간에 영향을 줄 수 있으며, Xr[i] 및 Xr[i+8]를 제외한 다른 서브 상태 데이터에 의해서는 영향을 받지 않을 수 있다.
0 이상 15 이하의 i에 대하여 Xr[i]는 소정의 개수의 비트의 순환 이동에 의해 갱신될 수 있다. 일 실시예에서, 0 이상 7 이하의 i에 대하여 Xr[i]는 Xr[i+8]과의
Figure 112015006956208-pat00019
연산, 소정의 개수의 비트의 순환 이동 및 상수와의
Figure 112015006956208-pat00020
연산에 의해 생성될 수 있다. 8 이상 15 이하의 i에 대하여 Xr[i]는 Xr[i-8]과의
Figure 112015006956208-pat00021
연산 및 소정의 개수의 비트의 순환 이동에 의해 생성될 수 있다.
σ는 아래의 수학식 27과 같이 정의될 수 있다.
[수학식 27]
σ(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.
또한, 일 실시예에 따른 σ 는 소정의 조건을 충족시키는 범위 내에서 다양하게 정의될 수 있다. 예를 들면, σ 는 아래의 수학식 28의 조건을 충족시킬 수 있다.
[수학식 28]
int(σ(i*4) / 4) = int(σ(i*4+1) / 4) = int(σ(i*4+2) / 4) = int(σ (i*4+3) / 4), 0≤i≤3;
전술된 것처럼, 단계 함수 및 압축 함수가 R-1 번씩 반복되면, 마지막으로 R+1 번째 반복의 단계 함수가 수행될 수 있다.
R+1 번째 반복의 단계 함수의 수행에 의해 XR[i]이 생성될 수 있다. XR[i]는 하기의 수학식 29의 수행에 기반하여 생성될 수 있다.
[수학식 29]
XR[i] = XR[i]
Figure 112015006956208-pat00022
WR[i], 0≤i≤15;
상태 데이터 생성부(140)는 압축 함수에 의해 생성된 서브 상태 데이터들 XR[0] 내지 XR[15]를 연접함으로써 최종 상태 데이터 XR를 생성할 수 있다. 상태 데이터 생성부(140)는 최종 상태 데이터 XR을 연쇄변수 갱신부(150)로 전송할 수 있다.
일 예에 따른 초기 상태 데이터 R0 및 확장 메시지들을 사용하는 결합 함수 및 단계 함수를 통해 최종 상태 데이터 XR를 산출하는 연산이 아래에서 도 3을 참조하여 상세하게 설명된다.
단계(250)에서, 연쇄변수 갱신부(150)는 최종의 값의 상태 데이터를 사용하여 연쇄변수 데이터를 갱신할 수 있다.
연쇄변수 갱신부(150)는 상태 데이터 생성부(140)로부터 전송된 최종 상태 데이터 XR을 사용하여 수신부(110)로부터 전송된 연쇄변수 데이터 CV를 갱신할 수 있고, 갱신된 연쇄변수 데이터 CV'를 해시 값 생성부(160)로 전송할 수 있다.
갱신된 연쇄변수 데이터 CV'는 16w개의 비트들을 포함할 수 있다. 말하자면, 갱신된 연쇄변수 데이터 CV'의 비트들의 개수는 16w일 수 있다.
갱신된 연쇄변수 데이터 CV'는 CV'[0]부터 CV'[15]까지의 16개의 갱신된 서브 연쇄변수 데이터의 연접일 수 있다. 갱신된 연쇄변수 데이터 CV' 및 갱신된 서브 연쇄변수 데이터 간의 관계는 아래의 수학식 30과 같이 표현될 수 있다.
[수학식 30]
CV' = CV'[0]||CV'[1]||...||CV'[15]
갱신된 서브 연쇄변수 데이터는 아래의 수학식 31에 기반하여 생성될 수 있다.
[수학식 31]
CV'[i] = XR[i], 0≤i≤15
말하자면, 0 이상 15 이하인 i에 대하여, XR[i]의 값이 CV'[i]로 복사될 수 있다. 또는, CV'[i]의 값은 XR[i]의 값에 동일한 값으로 설정될 수 있다.
단계(260)에서, 해시 값 생성부(160)는 갱신된 연쇄변수 데이터에 소정의 연산을 적용함으로써 메시지에 대한 해시 값을 생성할 수 있다.
해시 값 생성부(160)는 해싱에 관련된 기존의 함수, 알고리즘 및 방법 등을 사용하여 메시지 M에 대한 해시 값을 생성할 수 있다.
도 3은 일 예에 따른 상태 데이터 생성 방법을 설명한다.
도 2를 참조하여 전술된 단계(240)는 후술될 단계들(310, 320, 330, 340, 350, 360, 370 및 380)를 포함할 수 있다.
단계(310)에서, 상태 데이터 생성부(140)는 상태 데이터 초기화부(130)로부터 초기 상태 데이터 X0를 수신할 수 있고, 메시지 확장부(120)로부터 확장 메시지들 W0 내지 WR을 수신할 수 있다.
단계(320)에서, 상태 데이터 생성부(140)는 r의 값을 0으로 설정할 수 있다.
단계(330)에서, 상태 데이터 생성부(140)는 결합 함수의 r+1 번째 반복을 수행할 수 있다. 결합 함수에서 이루어지는 연산이 도 3에서 도시되었다.
단계(340)에서, 상태 데이터 생성부(140)는 단계 함수의 r+1 번째 반복을 수행할 수 있다. 단계 함수에서 이루어지는 연산이 도 3에서 도시되었다.
단계(350)에서, 상태 데이터 생성부(140)는 r의 값이 R-1인지 여부를 검사할 수 있다. r의 값이 R-1이 아니라면, 결합 함수 및 단계 함수의 반복을 위해 단계(460)가 수행될 수 있다. r의 값이 R-1이라면 결합 함수의 마지막 반복을 위해 단계(370)가 수행될 수 있다. 또는, 상태 데이터 생성부(140)는 r의 값이 R-1보다 작은지 여부를 검사할 수 있다. r의 값이 R-1보다 작다면, 결합 함수 및 단계 함수의 반복을 위해 단계(460)가 수행될 수 있다. r의 값이 R-1 이상이라면 결합 함수의 마지막 반복을 위해 단계(370)가 수행될 수 있다.
단계(360)에서, 상태 데이터 생성부(140)는 r의 값을 1 증가시킬 수 있다.
단계(370)에서, 상태 데이터 생성부(140)는 결합 함수의 R 번째 반복을 수행할 수 있다. 결합 함수의 R 번째 반복에서 이루어지는 연산이 도 3에서 도시되었다. 결합 함수의 R 번째 반복에 의해 최종 상태 데이터 XR이 생성될 수 있다.
단계(380)에서, 상태 데이터 생성부(140)는 최종 상태 데이터 XR을 출력할 수 있다.
도 4는 일 예에 따른 단계 함수의 다이어그램(diagram)이다.
도 4에서는, 0 이상 R-1 이하의 r에 대하여, 단계 함수의 r+1 번째 반복에서 수행되는 연산이 다이어그램으로서 도시되었다.
도 4에서 도시된 것처럼, 단계 함수의 r+1 번째 반복에서, Xr[0] 내지 Xr[15]가 입력으로서 사용될 수 있다, Xr+1[0] 내지 Xr+1[15]가 출력으로서 생성될 수 있다.
도 4에서, Xr[0] 내지 Xr[15]에 적용되는 연산이 위에서부터 아래로 순차적으로 도시되었다.
도 4에서 수직선은 수직선의 위의 표시된 Xr[i]의 값을 나타낼 수 있다. 수평선은 수평선의 꼬리의 위에 표시된 Xr[x]가 수평선의 머리의 위에 표시된 Xr[y]의 값을 갱신하기 위한 피연산자로 사용된다는 것을 의미할 수 있다.
Figure 112015006956208-pat00023
를 향하는 화살표들은
Figure 112015006956208-pat00024
의 피연산자들을 나타낼 수 있다.
Figure 112015006956208-pat00025
로부터 나오는 화살표는
Figure 112015006956208-pat00026
연산의 결과를 나타낼 수 있다.
Figure 112015006956208-pat00027
를 향하는 화살표들은
Figure 112015006956208-pat00028
의 피연산자들을 나타낼 수 있다.
Figure 112015006956208-pat00029
로부터 나오는 화살표는
Figure 112015006956208-pat00030
연산의 결과를 나타낼 수 있다.
사각형을 향하는 화살표는 사각형이 나타내는 연산의 좌측 피연산자를 나타낼 수 있고, 사각형 내의 연산자는 사각형의 연산을 나타낼 수 있다. 연산자의 우측의 기호는 사각형이 나타내는 연산의 우측 피연산자를 나타낼 수 있다. 도 4에서는 사각형이 나타내는 연산자로서 <<< 연산이 도시되었다.
도 4에서, 아래에 표시된 Xr+1[i]는 Xr+1[i]를 가리키는 화살표에 대응하는 X[i]를 사용하여 Xr+1[i]의 값이 생성된다는 것을 나타낼 수 있다.
도 5는 일 예에 따른 연산 방법을 구현하는 컴퓨터를 도시한다.
연산 장치는 도 5에서 도시된 컴퓨터(500)로서 구현될 수 있다.
연산 장치(100)는 컴퓨터에 의해 독출(read)될 수 있는 기록매체를 포함하는 컴퓨터 시스템에서 구현될 수 있다. 도 5에 도시된 바와 같이, 전자 장치(500)는 버스(522)를 통하여 서로 통신하는 적어도 하나의 프로세서(processor)(521), 메모리(523), 사용자 인터페이스(User Interface; UI) 입력 디바이스(526), UI 출력 디바이스(527) 및 저장소(528)를 포함할 수 있다. 또한, 전자 장치(500)는 네트워크(530)에 연결되는 네트워크 인터페이스(529)를 더 포함할 수 있다. 프로세서(521)는 중앙 처리 장치(Central Processing Unit; CPU) 또는 메모리(523)나 저장소(528)에 저장된 프로세싱(processing) 명령어(instruction)들을 실행하는 반도체 장치일 수 있다. 메모리(523) 및 저장소(528)는 다양한 형태의 휘발성 또는 비휘발성 저장 매체일 수 있다. 예를 들어, 메모리는 롬(ROM)(524)이나 램(RAM)(525)을 포함할 수 있다.
연산 장치(100)의 적어도 하나의 모듈은 메모리(523)에 저장될 수 있고, 적어도 하나의 프로세서(521)에 의하여 실행되도록 구성될 수 있다. 연산 장치(100)의 데이터 또는 정보의 통신과 관련된 기능은 네트워크 인터페이스(529)를 통해 수행될 수 있다.
적어도 하나의 프로세서(521)는 전술된 동작 및 연산 등을 수행할 수 있고, 저장소(528)는 전술된 상수, 변수 및 데이터 등을 저장할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
100: 연산 장치
110: 수신부
115: 연쇄변수 생성부
120: 메시지 확장부
130: 상태 데이터 초기화부
140: 상태 데이터 생성부
150: 연쇄변수 갱신부
160: 해시 값 생성부

Claims (20)

  1. 메시지를 사용하여 복수의 확장 메시지들을 생성하는 단계;
    연쇄변수 데이터를 사용하여 상태 데이터의 초기의 값을 생성하는 단계;
    상기 상태 데이터 및 상기 복수의 확장 메시지들을 사용하는 결합 함수 및 단계 함수를 반복하여 수행함으로써 상기 상태 데이터의 최종의 값을 생성하는 단계; 및
    상기 최종의 값의 상기 상태 데이터를 사용하여 상기 연쇄변수 데이터를 갱신하는 단계
    를 포함하고,
    상기 복수의 확장 메시지들은 W0부터 WR까지의 R+1개이고,
    상기 R은 1 이상의 정수이고, 0 이상 R 이하의 정수 r에 대하여, 상기 복수의 확장 메시지들 중 r+1 번째의 확장 메시지 Wr은 상기 결합 함수의 상기 r+1 번째 반복에서 사용되는 연산 방법.
  2. 제1항에 있어서,
    상기 갱신된 연쇄변수 데이터에 소정의 연산을 적용함으로써 상기 메시지에 대한 해시 값을 생성하는 단계
    를 더 포함하는 연산 방법.
  3. 제1항에 있어서,
    상기 메시지는 32w개의 비트들을 포함하고,
    상기 w는 1 이상의 정수이고,
    상기 복수의 확장 메시지들의 각 확장 메시지는 16w개의 비트들을 포함하는 연산 방법.
  4. 삭제
  5. 메시지를 사용하여 복수의 확장 메시지들을 생성하는 단계;
    연쇄변수 데이터를 사용하여 상태 데이터의 초기의 값을 생성하는 단계;
    상기 상태 데이터 및 상기 복수의 확장 메시지들을 사용하는 결합 함수 및 단계 함수를 반복하여 수행함으로써 상기 상태 데이터의 최종의 값을 생성하는 단계; 및
    상기 최종의 값의 상기 상태 데이터를 사용하여 상기 연쇄변수 데이터를 갱신하는 단계
    를 포함하고,
    상기 복수의 확장 메시지들은 W0부터 WR까지의 R+1개이고,
    상기 메시지 M은 M[0]부터 M[31]까지의 32개의 서브 메시지들의 연접이고,
    상기 복수의 확장 메시지들은 아래의 수학식 1에 기반하여 생성되는 연산 방법.
    [수학식 1]
    Wr = Wr[0]||Wr[1]||...||Wr[15], 0≤r≤R
    여기서, 상기 Wr은 상기 복수의 확장 메시지들 중 r+1 번째의 확장 메시지이고, 상기 Wr은 16개의 서브 확장 메시지들의 연접이고, 0 이상 15 이하의 정수인 x에 대해서 Wr[x]는 상기 Wr의 x+1 번째의 서브 확장 메시지임.
  6. 제5항에 있어서,
    상기 서브 확장 메시지들은 아래의 수학식 2, 수학식 3 및 수학식 4에 기반하여 생성되는 연산 방법.
    [수학식 2]
    W0[i] = M[i], 0≤i≤15;
    [수학식 3]
    W1[i] = M[i+16], 0≤i≤15;
    [수학식 4]
    Wr[i] = Wr -2[τ(i)]
    Figure 112015006956208-pat00031
    Wr -1[i], 2≤r≤R, 0≤i≤15;
    여기서, 상기 τ(i)의 값은 0 이상 15 이하의 정수이며, 상기 τ는 전단사함수(bijection)임.
  7. 제6항에 있어서,
    상기 τ는 아래의 수학식 5 및 수학식 6의 조건을 충족시키는 연산 방법.
    [수학식 5]
    τ (τ (τ (τ(i)))) = i, 0≤i≤15;
    [수학식 6]
    i ≠ τ(i) ≠ τ (τ (i) ≠ τ (τ (τ(i))), 0≤i≤15;
  8. 제6항에 있어서,
    상기 τ는 아래의 수학식 7의 조건을 충족시키는 연산 방법.
    [수학식 7]
    int(τ(i*4) / 4) = int(τ(i*4+1) / 4) = int(τ(i*4+2) / 4) = int(τ(i*4+3) / 4), 0≤i≤3;
  9. 제6항에 있어서,
    상기 τ는 아래의 수학식 8과 같이 정의되는 연산 방법.
    [수학식 8]
    τ(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.
  10. 제5항에 있어서,
    상기 연쇄변수 데이터 CV는 CV[0]부터 CV[15]까지의 16개의 서브 연쇄변수 데이터의 연접이고,
    상기 초기의 값의 상기 상태 데이터 X0는 X0[0]부터 X0[15]까지의 16개의 초기의 값의 서브 상태 데이터이고,
    상기 초기의 값의 상기 서브 상태 데이터는 아래의 수학식 9에 기반하여 생성되는 연산 방법.
    [수학식 9]
    X0[i] = CV[i], 0≤i≤15
  11. 메시지를 사용하여 복수의 확장 메시지들을 생성하는 단계;
    연쇄변수 데이터를 사용하여 상태 데이터의 초기의 값을 생성하는 단계;
    상기 상태 데이터 및 상기 복수의 확장 메시지들을 사용하는 결합 함수 및 단계 함수를 반복하여 수행함으로써 상기 상태 데이터의 최종의 값을 생성하는 단계; 및
    상기 최종의 값의 상기 상태 데이터를 사용하여 상기 연쇄변수 데이터를 갱신하는 단계
    를 포함하고,
    상기 결합 함수는 R+1회 반복되고,
    상기 결합 함수는 상기 결합 함수의 r+1 번째 반복에서 Xr에 Wr의 값을 반영하고,
    상기 r은 0 이상 R 이하의 정수이고, 상기 Xr은 r+1 번째의 상기 상태 데이터이고,
    상기 Wr은 상기 복수의 확장 메시지들 중 r+1 번째의 확장 메시지이고,
    X0은 상기 초기의 값을 갖는 상기 상태 데이터이고, XR은 상기 최종의 값을 갖는 상기 상태 데이터인 연산 방법.
  12. 제11항에 있어서,
    상기 결합 함수는 상기 결합 함수의 r+1 번째 반복에서 논리적 배타합 연산
    Figure 112016051963218-pat00032
    으로 상기 Xr에 상기 Wr을 결합시키는 연산 방법.
  13. 제11항에 있어서,
    상기 결합 함수는 아래의 수학식 10에 기반하여 상기 상태 데이터 Xr에 상기 Wr의 값을 반영하는 연산 방법.
    [수학식 10]
    Xr[i] = Xr[i]
    Figure 112016051963218-pat00033
    Wr[i], 0≤i≤15;
    여기서, 상기 Xr은 16개의 서브 상태 데이터의 연접이고, Xr[i]는 상기 Xr의 i+1 번째의 서브 상태 데이터이고,
    상기 Wr은 16개의 서브 확장 메시지들의 연접이고, 상기 Wr[i]는 상기 Wr의 i+1 번째의 서브 확장 메시지임.
  14. 제5항에 있어서,
    상기 단계 함수는 R회 반복되고,
    0 이상 R-1 이하의 정수 r에 대하여, 상기 단계 함수의 r+1 번째 반복에서 Xr+1는 Xr에 기반하여 생성되고,
    상기 Xr은 상기 단계 함수의 r+1 번째 반복에서의 상태 데이터이고,
    X0은 상기 초기의 값을 갖는 상기 상태 데이터이고, XR은 상기 최종의 값을 갖는 상기 상태 데이터인 연산 방법.
  15. 제14항에 있어서,
    상기 단계 함수의 r+1 번째 반복에서 Xr+1는 아래의 수학식 11에 따라 생성되는 연산 방법.
    [수학식 11]
    Xr+1[i] = Xr[σ(i)], 0≤i≤15;
    여기서, 상기 Xr은 16개의 서브 상태 데이터의 연접이고, Xr[i]는 상기 Xr의 i+1 번째의 서브 상태 데이터이고,
    상기 σ(i)의 값은 0 이상 15 이하의 정수이며, 상기 σ는 전단사함수임.
  16. 제15항에 있어서,
    상기 σ는 아래의 수학식 12와 같이 정의되는 연산 방법.
    [수학식 12]
    σ(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.
  17. 제15항에 있어서,
    상기 단계 함수의 r+1 번째 반복에서,
    0 이상 7 이하의 i에 대하여 상기 Xr[i]는 Xr[i+8]에 기반하여 갱신되고,
    8 이상 15 이하의 i에 대하여 상기 Xr[i]는 Xr[i-8]에 기반하여 갱신되는 연산 방법.
  18. 제17항에 있어서,
    0 이상 15 이하의 i에 대하여 상기 Xr[i]는 소정의 개수의 비트의 순환 이동에 의해 갱신되는 연산 방법.
  19. 제15항에 있어서,
    상기 단계 함수의 r+1 번째 반복에서,
    상기 Xr+1[i]는 아래의 수학식 13, 수학식 14, 수학식 15, 수학식 16, 수학식 17, 수학식 18, 수학식 19 및 수학식 20의 순차적인 수행에 기반하여 생성되는 연산 방법.
    [수학식 13]
    Xr[i] = Xr[i]
    Figure 112016051963218-pat00034
    Xr[i+8], 0≤i≤7;
    [수학식 14]
    Xr[i] = Xr[i] <<< ar[i], 0≤i≤7;
    [수학식 15]
    Xr[i] = Xr[i]
    Figure 112016051963218-pat00035
    Dr[i], 0≤i≤7;
    [수학식 16]
    Xr[i+8] = Xr[i]
    Figure 112016051963218-pat00036
    Xr[i+8], 0≤i≤7;
    [수학식 17]
    Xr[i+8] = Xr[i+8] <<< br[i], 0≤i≤7;
    [수학식 18]
    Xr[i] = Xr[i]
    Figure 112016051963218-pat00037
    Xr[i+8], 0≤i≤7;
    [수학식 19]
    Xr[i+8] = Xr[i+8] <<< cr[i], 0≤i≤7;
    [수학식 20]
    Xr+1[i] = Xr[σ(i)], 0≤i≤15;
    여기서, 0 이상 15 이하인 i에 대해서, ar[i], br[i], cr[i] 및 Dr[i]는 각각 상수이고, σ(i)의 값은 0 이상 15 이하의 정수이며, 상기 σ는 전단사함수임.
  20. 메시지를 사용하여 복수의 확장 메시지들을 생성하는 메시지 확장부;
    연쇄변수 데이터를 사용하여 상태 데이터의 초기의 값을 생성하는 상태 데이터 초기화부;
    상기 상태 데이터 및 상기 복수의 확장 메시지들을 사용하는 결합 함수 및 단계 함수를 반복하여 수행함으로써 상기 상태 데이터의 최종의 값을 생성하는 상태 데이터 생성부; 및
    상기 최종의 값의 상기 상태 데이터를 사용하여 상기 연쇄변수 데이터를 갱신하는 연쇄변수 갱신부
    를 포함하고,
    상기 단계 함수는 R회 반복되고,
    0 이상 R-1 이하의 정수 r에 대하여, 상기 단계 함수의 r+1 번째 반복에서 Xr+1는 Xr에 기반하여 생성되고,
    상기 Xr은 상기 단계 함수의 r+1 번째 반복에서의 상태 데이터이고,
    X0은 상기 초기의 값을 갖는 상기 상태 데이터이고, XR은 상기 최종의 값을 갖는 상기 상태 데이터인 연산 장치.
KR1020150010693A 2015-01-22 2015-01-22 고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 그 장치 KR101688636B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150010693A KR101688636B1 (ko) 2015-01-22 2015-01-22 고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 그 장치
US14/741,511 US9843442B2 (en) 2015-01-22 2015-06-17 Operation method and apparatus for providing compression function for fast message hashing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150010693A KR101688636B1 (ko) 2015-01-22 2015-01-22 고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20160090646A KR20160090646A (ko) 2016-08-01
KR101688636B1 true KR101688636B1 (ko) 2016-12-21

Family

ID=56434297

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150010693A KR101688636B1 (ko) 2015-01-22 2015-01-22 고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 그 장치

Country Status (2)

Country Link
US (1) US9843442B2 (ko)
KR (1) KR101688636B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100916805B1 (ko) 2006-09-15 2009-09-14 고려대학교 산학협력단 256비트 출력을 갖는 해쉬 알고리즘
JP2010049126A (ja) * 2008-08-25 2010-03-04 Sony Corp データ変換装置、およびデータ変換方法、並びにプログラム
KR101428770B1 (ko) * 2013-05-29 2014-08-08 한국전자통신연구원 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5842224A (en) * 1989-06-16 1998-11-24 Fenner; Peter R. Method and apparatus for source filtering data packets between networks of differing media
KR19990053174A (ko) * 1997-12-23 1999-07-15 정선종 해쉬함수를 이용한 정보의 무결성 확인방법
JP5532560B2 (ja) * 2008-08-25 2014-06-25 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにプログラム
US8843457B2 (en) 2008-08-25 2014-09-23 Sony Corporation Data conversion device, data conversion method, and program
JP2010128392A (ja) * 2008-11-28 2010-06-10 Canon Inc ハッシュ処理装置及びその方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100916805B1 (ko) 2006-09-15 2009-09-14 고려대학교 산학협력단 256비트 출력을 갖는 해쉬 알고리즘
JP2010049126A (ja) * 2008-08-25 2010-03-04 Sony Corp データ変換装置、およびデータ変換方法、並びにプログラム
KR101428770B1 (ko) * 2013-05-29 2014-08-08 한국전자통신연구원 해시 알고리즘에서의 압축 연산을 수행하기 위한 장치 및 방법

Also Published As

Publication number Publication date
US20160218861A1 (en) 2016-07-28
US9843442B2 (en) 2017-12-12
KR20160090646A (ko) 2016-08-01

Similar Documents

Publication Publication Date Title
JP4334582B2 (ja) 秘密分散装置、方法及びプログラム
JP4304215B2 (ja) 秘密分散装置、方法及びプログラム
US20150262074A1 (en) Solving digital logic constraint problems via adiabatic quantum computation
EP3758285A1 (en) Odd index precomputation for authentication path computation
US11516008B2 (en) Efficient post-quantum secure software updates tailored to resource-constrained devices
US11750403B2 (en) Robust state synchronization for stateful hash-based signatures
US9762384B2 (en) Generation and verification of alternate data having specific format
US11575515B2 (en) Post-quantum secure remote attestation for autonomous systems
EP3965360A1 (en) State synchronization for post-quantum signing facilities
US20150172044A1 (en) Order-preserving encryption system, encryption device, decryption device, encryption method, decryption method, and programs thereof
EP3758290A1 (en) Parallel processing techniques for hash-based signature algorithms
JP7312293B2 (ja) デジタル署名方法、署名情報の検証方法、関連装置及び電子機器
RU2680761C1 (ru) Безопасные преобразования данных
CN116318660B (zh) 一种消息扩展与压缩方法及相关装置
KR101688636B1 (ko) 고속 메시지 해싱을 위한 압축함수를 제공하는 연산 방법 및 그 장치
US20220123949A1 (en) Side channel protection for xmss signature function
KR20210072711A (ko) 사물인터넷 디바이스와 신뢰 서버 간 상호 인증 방법 및 장치
CN111124447A (zh) 一种平台管理方法、系统、设备及计算机可读存储介质
KR20230161195A (ko) 영지식 증명 친화적인 일방향 함수를 이용한 연산 방법, 그리고 이를 구현하기 위한 장치
US20240126896A1 (en) System and method for encrypting machine learning models
US20240154802A1 (en) Model protection method and apparatus
CN113821814A (zh) 模型文件的生成及解析方法、装置、设备和存储介质
US9479193B2 (en) Apparatus and method for performing compression operation in hash algorithm
KR20160141962A (ko) 모듈로 연산을 적용한 형식 보존 암호화 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20190925

Year of fee payment: 4