KR20050065976A - Sha-1 해쉬값 연산 장치 및 방법 - Google Patents
Sha-1 해쉬값 연산 장치 및 방법 Download PDFInfo
- Publication number
- KR20050065976A KR20050065976A KR1020030097149A KR20030097149A KR20050065976A KR 20050065976 A KR20050065976 A KR 20050065976A KR 1020030097149 A KR1020030097149 A KR 1020030097149A KR 20030097149 A KR20030097149 A KR 20030097149A KR 20050065976 A KR20050065976 A KR 20050065976A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- value
- register
- storage unit
- stored
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000004364 calculation method Methods 0.000 claims abstract description 8
- 230000008569 process Effects 0.000 claims abstract description 7
- 238000006243 chemical reaction Methods 0.000 claims description 15
- 238000013500 data storage Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 14
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Power Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
SHA-1 해쉬값 연산 장치 및 방법이 개시되어 있다. SHA-1 해쉬값 연산 장치는 입력 데이터 및 입력 데이터를 소정 처리한 결과 데이터로 이루어진 W 데이터를 출력하는 W 데이터 출력부, 저장부 A에 저장된 A 데이터를 저장하는 저장부 B, 저장부 B에 저장된 B 데이터를 소정 비트 회전 이동하여 저장하는 저장부 C, 저장부 C에 저장된 C 데이터를 저장하는 저장부 D, 저장부 D에 저장된 D 데이터를 저장하는 저장부 E, A 데이터를 소정 비트 회전 쉬프트한 결과, 상기 B, C, D 데이터를 소정 함수로 논리 연산한 결과 상기 E 데이터, 상기 W 데이터 및 소정 상수와 소정 논리 연산하여 저장하는 저장부 A, 소정의 주기마다 상기 각 저장부 A, B, C, D, E에 저장되는 데이터에 각각의 초기값을 각각 가산하는 가산부를 포함한다. 이와 같은 구성으로 부피가 작고 안정성이 높으면서도 고속의 해쉬 함수 연산이 가능하게 된다.
Description
본 발명은 중요 정보의 인증과 무결성을 위한 수단인 디지털 서명의 효율을 높이기 위해서 메시지를 압축하는 기능을 하는 해쉬 함수를 연산하는 장치 및 방법에 관한 것이다.
SHA(Secure Hash Algorithm)는 NIST에 의해서 개발된 전용 해쉬 알고리듬으로써 FIPS(Federal Information Processing Standard) 180-1에 표준으로 정의되어 있다. SHA-1 알고리듬은 임의 길이의 입력 데이터를 받아서 메시지를 분리하거나 0 패딩의 방법을 이용하여 512 비트 단위로 만든 후 80회의 라운드 연산 과정을 수행한 후 160 비트의 압축된 메시지 값을 출력한다. 따라서 디지털 서명시에는 압축된 메시지에 대해서 디지털 서명을 생성하기 때문에 보다 짧은 시간에 디지털 서명을 할 수 있게된다.
해쉬 알고리듬이 디지털 서명의 효율을 높이기 위한 목적으로 주로 사용되는 만큼 해쉬 알고리듬 수행에 걸리는 시간이 길어서는 안되고, 해쉬 프로세서의 추가로 인한 전체 시스템의 부하를 최대한 줄이기 위하여 프로세서의 크기를 되도록 작게 만드는 것이 중요하다. 현재 SHA 알고리듬은 대부분 소프트웨어로 구현되어 있는 실정이므로 소프트웨어 구현에 비해 속도도 빠르고, 파워 소모도 작으며, 안전성도 높은 SHA-1 하드웨어 프로세서의 개발이 시급하다.
본 발명이 이루고자 하는 기술적 과제는 부피가 작고 안정성이 높으며 고속의 해쉬 함수 연산이 가능한 SHA-1 함수 연산 장치 및 방법을 제공하는데 있다.
본 발명은 SHA-1 해쉬 함수의 하드웨어 구현 방법에 관한 것이다. SHA-1 알고리듬은 임의 길이의 입력 데이터를 받아서 데이터를 일정 길이로 자르거나 0을 패딩하여 입력 데이터를 512 비트 길이로 만든 후 라운드 연산을 반복 수행하여 160 비트의 해쉬값을 얻는다. 해쉬 함수는 디지털 서명에 걸리는 시간을 줄이기 위하여 메시지를 축약하기 위한 목적으로 주로 사용되므로 해쉬함수를 수행하는데 걸리는 시간이 길어서는 안되고, 또한 해쉬 함수가 추가되어 시스템 전체 면적에 미치는 영향을 최소로 줄여야 하기 때문에 면적이 작아야 한다.
따라서 본 발명에서는 해쉬 함수를 수행하는데 걸리는 시간을 줄이기 위해서 W 값의 생성 후 라운드 연산을 수행하는 게 아니라 W 값 생성과 라운드 연산을 동시에 수행하도록 하였고, 이는 80개의 워드(word), 즉, W0 ~ W79를 모두 저장해 둘 필요가 없기 때문에 해쉬 함수 구현에 필요한 면적을 줄일 수 있었다.
본 발명에서는 상기한 바와 같은 문제들을 해결하기 위하여 SHA-1 해쉬 알고리듬을 이용하여 디지털 서명의 효율성을 높이기 위한 장치 구현에 목적이 있다. 본 발명은 이를 위해서 SHA-1 알고리듬을 위한 레지스터들의 구현 방법과 컨트롤 방법에 관한 것이다.
본 발명의 SHA-1 해쉬값 연산 장치는 쉬프트와 f 함수 연산 그리고 덧셈기로 구성된 제 1 저장수단, 클럭 신호에 따라 입력을 받고 이전의 입력 값을 출력하는 제 2 저장수단, 쉬프트 연산기가 포함된 제 3 저장수단, 쉬프트 연산기와 32비트 덧셈기가 포함된 제 4 저장수단, 해쉬값 연산의 컨트롤을 담당하는 제 1 컨트롤러, 라운드 연산 후 해쉬값을 계산하기 위한 각종 덧셈기로 이루어진다.
또한, W0부터 W79까지 80개의 32 비트 W 값을 저장하기 위한 저장 수단을 사용하지 않고 16개의 W 값을 저장하기 위한 저장 수단만을 사용할 수 있는 구조로 설계하여 SHA-1 해쉬값 연산 장치 구현에 필요한 하드웨어의 양을 줄였고, W 값을 미리 생성 한 후 라운드 연산을 수행하지 않고 W 값 생성과 동시에 라운드 연산을 수행하는 구조로 설계함으로써 해쉬값을 생성하는데 소요되는 시간을 줄일 수 있다.
이들 W값을 저장하기 위한 저장 공간은 16개의 32비트 W 값을 저장하되 매 클럭마다 왼쪽으로 32비트씩 회전하여 최상위 32비트 위치의 W 값을 라운드 연산에 사용함으로써 제 1 컨트롤러의 기능을 보다 단순화 할 수 있다.
본 발명의 제 1관점에 따른 SHA-1 해쉬값 연산 장치는, 입력 데이터 및 상기 입력 데이터를 소정 처리한 결과 데이터로 이루어진 W 데이터를 출력하는 W 데이터 출력부, 저장부 A에 저장된 A 데이터를 저장하는 저장부 B, 저장부 B에 저장된 B 데이터를 소정 비트 회전 이동하여 저장하는 저장부 C, 저장부 C에 저장된 C 데이터를 저장하는 저장부 D, 저장부 D에 저장된 D 데이터를 저장하는 저장부 E; 상기 A 데이터를 소정 비트 회전 쉬프트한 결과, 상기 B, C, D 데이터를 소정 함수로 논리 연산한 결과, 상기 E 데이터, 상기 W 데이터 및 소정 상수와 소정 논리 연산하여 저장하는 저장부 A, 및 소정의 주기마다 상기 각 저장부 A, B, C, D, E에 저장되는 데이터에 각각의 초기값을 각각 가산하는 가산부를 포함하는 것을 특징으로 한다.
또한, 바람직하게는 상기 가산부로 가산 제어신호를 인가하고, 상기 저장부 A로 변환 제어신호를 인가하는 제어부를 더 포함하는 것을 특징으로 한다.
또한, 바람직하게는 상기 저장부 A는 상기 A 데이터를 5비트 회전 쉬프트하는 쉬프트 레지스터부, 상기 변환 제어 신호에 따라 함수를 변환하여 상기 B, C, 및 D 데이터를 연산하는 변환 함수 연산부, 상기 변환 제어 신호에 따라 상수를 변환 출력하는 상수 변환부, 및 상기 쉬프트 레지스터, 상기 변환 함수 연산부, 상기 상수 변환부, 상기 저장부 E 및 저장부 W의 출력을 가산하는 가산부를 포함하는 것을 특징으로 한다.
또한, 바람직하게는 레지스터 A, B, C, D, 및 E의 저장과 저장부 W의 출력은 동일 주기에 이루어지고, 상기 제어부는 상기 가산 제어 신호를 80 주기마다 인가하고, 상기 변환 제어 신호는 20 주기마다 인가하는 것을 특징으로 한다.
또한, 바람직하게는 상기 저장부 W는 32비트 단위의 16개의 W 데이터 중에서 제 1 W 데이터를 출력하고, 전체 W 데이터를 32비트 쉬프트하는 쉬프트 레지스터부, 상기 데이터 저장부 W의 제 1 및 제 3 W 데이터를 XOR 연산한 결과와 제 9 및 제 14 W 데이터를 XOR 연산한 결과를 다시 XOR 연산하여 1비트 회전 쉬프트하여 궤환하는 궤환부를 포함하는 것을 특징으로 한다.
본 발명의 제 2관점에 따른 SHA-1 해쉬값 연산 방법은, 레지스터 A, B, C, D, 및 E에 초기값을 저장하는 초기값 저장 단계, 입력 데이터를 레지스터 W에 저장하는 입력 데이터 저장 단계, 상기 레지스터 A, B, C, D, E, 및 W에 각각 저장된 A, B, C, D, E, 및 W 값을 처리하여 새로운 A, B, C, D, E, 및 W 값을 생성하고, 상기 생성된 A, B, C, D, E, 및 W 값을 각각 레지스터 A, B, C, D, E, 및 W에 저장하는 중간값 생성 단계, 및 상기 중간값 생성단계가 소정 횟수 반복된 후, 상기 레지스터 A, B, C, D, E에 저장된 값을 각각 상기 레지스터 A, B, C, D, 및 E의 초기값과 가산하여 최종값을 생성하는 최종값 생성 단계를 포함하는 것을 특징으로 한다.
또한, 바람직하게는 상기 중간값 생성 단계는, 상기 레지스터 A에 저장된 A 값을 5비트 회전 쉬프트한 값, 상기 레지스터 B, C, 및 D에 각각 저장된 B, C, D 값을 소정의 함수로 연산한 값, 및 상기 레지스터 E에 저장된 E 값, 소정의 상수, 및 상기 레지스터 W의 저장된 W 값 중 소정의 비트 값을 연산하여 중간값 A를 생성하는 단계, 상기 레지스터 B에 저장된 B 값을 30비트 회전 쉬프트하여 중간값 C를 생성하는 단계, 상기 레지스터 A에 저장된 A 값, 상기 레지스터 C에 저장된 C 값, 및 상기 레지스터 D에 저장된 D값을 각각 상기 레지스터 B, D, 및 E에 저장하는 단계, 상기 중간값 A 및 C 를 각각 레지스터 A 및 C에 저장하는 단계, 및 상기 레지스터 W에 저장된 소정의 비트값을 서로 연산하여 궤환 입력하고, 상기 레지스터 W에 저장된 비트값을 32 비트 쉬프트하여 생성된 W 값을 저장하는 단계를 포함하는 것을 특징으로 한다.
또한, 바람직하게는 상기 소정 함수 및 상기 소정 함수는 변환 제어 신호에 따라 변환되고, 상기 가산부는 상기 가산 제어 신호에 따라 수행되는 것을 특징으로 한다.
또한, 바람직하게는 상기 가산 제어 신호는 중간값 생성단계가 80회 반복될 때마다 인가되고, 상기 변환 제어 신호는 중간값 생성단계가 20회 반복될 때마다 인가되는 것을 특징으로 한다.
또한, 바람직하게는 상기 레지스터 W는 저장된 32비트 단위의 16개의 W 데이터 중에서 최상위인 제 1 W 데이터를 출력하고, 전체 W 데이터를 32비트 쉬프트하며, 상기 데이터 저장부 W의 제 1 및 제 3 W 데이터를 XOR 연산한 결과와 제 9 및 제 14 W 데이터를 XOR 연산한 결과를 다시 XOR 연산하여 1비트 회전 쉬프트하여 궤환하는 궤환부를 포함하는 것을 특징으로 한다.
이와 같은 구성으로 인해, 본 발명은 작은 부피로 빠르고 안정적으로 해쉬값을 연산할 수 있게 된다.
본 발명의 이점 및 특징은 첨부된 도면 및 아래의 상세한 설명에서 더욱 명확해 진다. 이하 첨부된 도면들을 참조하여 본 발명에 따른 SHA-1 해쉬값 연산 장치 및 해쉬값 연산 방법에 관하여 상세히 설명한다.
도 1은 본 발명에 따른 SHA-1 해쉬값 연산 장치의 일 실시예의 개략적인 블록도이다. 도 1에 도시된 바와 같이, 본 발명에 따른 SHA-1 해쉬값 연산 장치는 라운드 연산 및 해해쉬값성을 컨트롤하는 컨트롤러(100), 해쉬값 생성에 필요한 A, B, C, D, E, W 값을 계산하고 저장하기 위한 저장 공간(101, 102, 103, 104, 105, 106), 컨트롤러의 hash_ready신호에 따라 활성/비활성화 되는 32비트 덧셈기(107, 108, 109, 110, 111)들을 구비한다.
도 1의 SHA-1 프로세서 구성도의 동작을 살펴보면, 해쉬 함수값 계산이 시작되면 B 레지스터(102), C 레지스터(103), D 레지스터(104), E 레지스터(105)의 초기값과 W 레지스터(106)의 최상위 32비트값이 A 레지스터(101)의 입력 값으로 들어간다. A 레지스터(101)에서는 다음 라운드의 A 값을 계산하고 이와 동시에 B 레지스터(102), C 레지스터(103), D 레지스터(104), E 레지스터(105) 에서도 다음 라운드의 B, C, D, E 값을 계산한다.
계산된 A 레지스터의 값은 B 레지스터(102)와 32비트 덧셈기(107)에 동시에 들어가고 초기 B 레지스터 (102)의 값을 이용하여 계산된 B 레지스터(102) 값은 C 레지스터(103)와 32 비트 덧셈기(108)에 동시에 들어간다. 초기 C 레지스터(103)의 값을 이용하여 계산된 C 레지스터(103) 값은 D 레지스터(104)와 32 비트 덧셈기(108)에 동시에 들어간다. 초기 D 레지스터(104)의 값을 이용하여 계산된 D 레지스터(104) 값은 E 레지스터(105)와 32 비트 덧셈기(111)에 들어간다. 이로써 첫 번째 라운드 연산이 끝나게 된다.
두 번째 라운드 연산은 다음 클럭이 1이 되는 순간 시작되고, 이때 각 레지스터는 각각의 32비트 입력값을 받아서 각 레지스터의 연산을 수행하고, 연산 결과값을 해당 레지스터와 32비트 덧셈기로 보내게 된다. 그리고 라운드 연산에 사용되는 덧셈기는 컨트롤러로부터 hash_ready가 1의 값을 갖는 신호를 받았을 때에만 덧셈기로 동작하고, hash_ready 신호가 0 일 때에는 동작하지 않는다. 또한 hash_ready 신호는 초기값이 0으로 되어 있다가 컨트롤러 내부의 카운터가 0 부터 1씩 증가해서 79가 되는 순간 1의 값으로 바뀐다.
hash_ready 신호가 1이 되면 A 레지스터(101)의 출력 32비트값과 A 레지스터(101)의 초기값이었던 32비트 h0 값이 32비트 덧셈기(107)의 입력이 되어 덧셈 연산을 수행하고 결과값은 해쉬값 연산 장치 출력 값의 최상위 32비트 값 out[159:128] 이 된다. 이와 동시에 B 레지스터(102)의 출력 32비트값과 B 레지스터(102)의 초기값이었던 32비트 h1 값이 32비트 덧셈기(108)의 입력이 되어 덧셈 연산을 수행하고 결과값은 해쉬값 연산 장치 출력 값의 다음 상위 32비트 값 out[127:96] 이 된다.
C 레지스터(103)의 출력 32비트값과 C 레지스터(103)의 초기값이었던 32비트 h2 값이 32비트 덧셈기(109)의 입력이 되어 덧셈 연산을 수행하고 결과값은 해쉬값 연산 장치 출력 값의 다음 상위 32비트 값 out[95:64] 이 된다. D 레지스터(104)의 출력 32비트값과 D 레지스터(104)의 초기값이었던 32비트 h3 값이 32비트 덧셈기(110)의 입력이 되어 덧셈 연산을 수행하고 결과값은 해쉬값 연산 장치 출력 값의 다음 상위 32비트 값 out[63:32] 이 된다. E 레지스터(105)의 출력 32비비트값과 레지스터(105)의 초기값이었던 32비트 h4 값이 32비트 덧셈기(111)의 입력이 되어 덧셈 연산을 수행하고 결과값은 해쉬값 연산 장치 출력 값의 마지막 32비트 값 out[31:0] 이 된다. 이로써 160 비트의 해쉬값이 계산된다.
A 레지스터(101)와 W 레지스터(106)의 내부 연산은 도 2와 도 3에서 상세히 설명하기로 하고, B 레지스터(102), C 레지스터(103), D 레지스터(104), E 레지스터(105)의 내부 연산에 관하여 설명하기로 한다. B 레지스터(102)와 D 레지스터(104), E 레지스터(105)는 단순히 클럭이 1이 될 때 각 레지스터의 32비트 입력값을 출력 값으로 내보내는 기능만을 하는 일반적인 레지스터이다.
반면 C 레지스터(103)는 클럭이 1이 되는 순간 32비트 입력값을 왼쪽으로 30비트 회전 쉬프트 연산한 결과값을 출력으로 내보내는 기능을 하는 레지스터이다. 즉, C 레지스터의 입력 값 중 최하위 두 비트는 C 레지스터의 출력 값의 최상위 두 비트가 되고, 입력값의 최상위 비트는 출력값의 상위 3번째 비트가 된다.
도 2는 도 1의 A 레지스터의 내부 구성을 도시한 개략적인 블록도이다. 도 2는 본 발명에 따른 SHA-1 프로세서의 구성도(제1도) 중 A 레지스터(101)의 구현도를 나타낸다. 도 2를 살펴보면, 매 클럭마다 들어오는 입력 데이터 A, B, C, D, E, W 값과 sel 값을 이용하여 A 레지스터(200) 내부에서 연산을 하는데, 32비트의 A 값은 왼쪽으로 5 비트만큼 순환 쉬프트 연산을 수행하고, B, C, D 값은 2 비트의 sel 값에 따라 변화하는 f 함수의 입력이 되고 f 함수 연산을 수행하여 32비트의 결과값이 나온다.
Sel 신호값은 해쉬값 연산 장치의 컨트롤러(100)의 출력값으로써 컨트롤러 내부 카운터가 0 에서 19의 값을 가질 때 00 의 값이 되고, 컨트롤로 내부 카운터 값이 20 에서 39의 값일 때 01, 40 에서 59의 값일 때 10, 60 에서 79의 값일 때 11 의 값이 된다. Sel 신호값에 따른 f 함수의 변화는 아래 수식과 같다.
F(B,C,D) = (B and C) or (not B and D) (sel = 00)
F(B,C,D) = (B xor C xor D) (sel = 01 or sel = 11)
F(B,C,D) = (B and C) or (B and D) or (C and D) (sel = 10)
또한 K 레지스터도 해쉬값 연산 장치의 컨트롤러(100)의 출력값인 sel 신호값에 따라 연산 결과가 달라지는데, sel 신호값이 00 일 때 K 레지스터의 출력값은 16진수 5A827999, sel 신호값이 01 일 때 K 레지스터의 출력값은 16진수 6ED9EBA1, sel 신호값이 10 일 때 K 레지스터의 출력값은 6진수 8F1BBCDC, sel 신호값이 11 일 때 K 레지스터의 출력값은 16진수 CA62C1D6 이 된다.
A 값 쉬프트 연산기(201)의 결과값과 f 함수 연산기(202)의 결과값은 32비트 덧셈기(205)의 입력이 되어 덧셈 연산을 수행하고, A 레지스터 (200)의 입력 값 중 E 와 W 값은 32비트 덧셈기(204)의 입력으로 들어가 덧셈 연산이 수행된다. 32비트 덧셈기(204)의 결과값은 K 레지스터(203)의 결과값과 함께 32비트 덧셈기(207)의 입력이 되어 덧셈 연산을 수행한다. 그리고 32비트 덧셈기(205)의 덧셈 결과값과 32비트 덧셈기(207)의 덧셈 결과값은 다시 32비트 덧셈기(206)를 통하여 더하여 지고 이 결과값이 레지스터의 출력값이 된다. 이들 모든 과정이 한 클럭에 수행된다.
도 3은 도 1의 W 레지스터의 내부 구성을 도시한 개략적인 블록도이다. 도 3은 본 발명에 따른 SHA-1 프로세서의 구성도(제 1도) 중 W 레지스터(106)의 구현도를 나타낸다.
도 3을 살펴보면, 512 비트의 입력 데이터가 들어오면 W0(301)부터 W15(316)까지 차례로 32비트씩 저장이 된다. 즉, 512비트 입력 데이터의 최상위 32비트는 W0(301)에, 최하위 32비트는 W15에 저장된다. 클럭이 1의 값이 되는 순간 W0가 W레지스터(106)의 출력값이 되고, W0(301)와 W2(303)를 xor 연산(317)하고, W8(309)과 W13(314)을 xor연산(319) 한 후 결과값들을 각각 xor 연산(318)한 결과를 1 비트씩 왼쪽으로 회전 쉬프트(320)한 값을 W15(316)에 저장하면서 32 비트씩 왼쪽으로 쉬프트한다.
따라서 W1(302)의 값이 W0(301)의 위치로 가고, W2(303)의 값이 W1(302)의 위치로 가고, 1비트 왼쪽 회전 쉬프트 연산기(320)의 출력값은 W15(316)의 위치로 간다. 다음 클럭이 1이 되는 순간 W0 위치에 있는 32비트 데이터가 W레지스터(106)의 출력값이 되고 xor 연산들(317, 319, 318)과 회전 쉬프트 연산(320)이 수행되고 W0부터 W15(301 ~ 316)까지의 값들이 왼쪽으로 32비트씩 쉬프트하는 과정이 80회의 라운드 연산동안 반복된다.
도 4는 본 발명에 따른 SHA-1 해쉬값 연산 방법의 일 실시예를 수행하기 위한 개략적인 흐름도이다. 먼저, 레지스터 A, B, C, D, 및 E에 초기값을 저장한다(410). 입력 데이터가 W 레지스터에 저장되면(420), 레지스터 A, B, C, D, E, 및 W에 각각 저장된 A, B, C, D, E, 및 W 값을 처리하여 새로운 A, B, C, D, E, 및 W 값을 생성하고, 상기 생성된 A, B, C, D, E, 및 W 값을 각각 레지스터 A, B, C, D, E, 및 W에 저장하여 중간값 생성한다(430).
도 5는 중간값 생성 과정을 도시한 도면이고, 도 6은 그 중 W 레지스터의 동작을 도시한 도면이다. 중간값 생성 과정의 상세한 설명은 본 발명의 또 다른 양태인 장치 발명을 통해 이미 설명되었으므로 생략한다.
중간값 생성은 80회 반복하여 수행되고(440), 반복 횟수가 20의 배수인 경우(460)마다 레지스터 A의 함수와 상수가 변환된다(470). 중간값 생성이 80회 반복된 후, 레지스터 A, B, C, D, E에 저장된 값을 각각 레지스터 A, B, C, D, 및 E의 초기값과 가산하여 최종값을 생성한다(450).
상기와 같은 구성으로 인해, 본 발명의 SHA-1 해쉬값 연산 장치 및 방법은 W 값과 해쉬값을 동시에 계산하므로 해쉬값 계산을 빠른 시간 내에 할 수 있다. 80개의 W값을 모두 저장할 필요 없이 한 번에 16개 씩 만을 저장하여 해쉬값 연산에 필요한 W값을 얻을 수 있으므로 적은 면적 및 빠른 속도로 해쉬값을 연산할 수 있게 된다.
또한, 컨트롤러 내부의 카운터 값을 이용하여 sel신호를 내보내고, 이 신호를 이용하여 해쉬값 생성에 필요한 연산을 하므로 연산이 더욱 단순해지고, W 레지스터에서 32비트 왼쪽 쉬프터를 이용함으로써 W 레지스터의 출력값이 항상 W0 위치의 값이 되도록 하였기 때문에 W 레지스터 컨트롤이 단순해진다.
본 발명이 비록 본 발명의 일부 바람직한 실시예에 의해 설명되었지만 본 발명의 범위는 이에 의해 제한되어서는 아니 되고, 청구범위에 의해 뒷받침되는 상기 실시예의 변형 또는 개량에도 미쳐야 할 것이다.
도 1은 본 발명에 따른 SHA-1 해쉬값 연산 장치의 일 실시예의 개략적인 블록도이다.
도 2는 도 1의 A 레지스터의 내부 구성을 도시한 개략적인 블록도이다.
도 3은 도 1의 W 레지스터의 내부 구성을 도시한 개략적인 블록도이다.
도 4는 본 발명에 따른 SHA-1 해쉬값 연산 방법의 일 실시예를 수행하기 위한 개략적인 흐름도이다.
도 5는 도 4의 중간값 생성 과정을 도시한 도면이다.
도 6은 도 5의 W 레지스터의 동작을 도시한 도면이다.
Claims (10)
- 입력 데이터 및 상기 입력 데이터를 소정 처리한 결과 데이터로 이루어진 W 데이터를 출력하는 W 데이터 출력부;저장부 A에 저장된 A 데이터를 저장하는 저장부 B;저장부 B에 저장된 B 데이터를 소정 비트 회전 이동하여 저장하는 저장부 C;저장부 C에 저장된 C 데이터를 저장하는 저장부 D;저장부 D에 저장된 D 데이터를 저장하는 저장부 E;상기 A 데이터를 소정 비트 회전 쉬프트한 결과, 상기 B, C, D 데이터를 소정 함수로 논리 연산한 결과, 상기 E 데이터, 상기 W 데이터 및 소정 상수와 소정 논리 연산하여 저장하는 저장부 A;소정의 주기마다 상기 각 저장부 A, B, C, D, E에 저장되는 데이터에 각각의 초기값을 각각 가산하는 가산부를 포함하는 것을 특징으로 하는 SHA-1 해쉬값 연산 장치.
- 제 1항에 있어서, 상기 가산부로 가산 제어신호를 인가하고, 상기 저장부 A로 변환 제어신호를 인가하는 제어부를 더 포함하는 것을 특징으로 하는 SHA-1 해쉬값 연산 장치.
- 제 2항에 있어서, 상기 저장부 A는,상기 A 데이터를 5비트 회전 쉬프트하는 쉬프트 레지스터부;상기 변환 제어 신호에 따라 함수를 변환하여 상기 B, C, 및 D 데이터를 연산하는 변환 함수 연산부;상기 변환 제어 신호에 따라 상수를 변환 출력하는 상수 변환부; 및상기 쉬프트 레지스터, 상기 변환 함수 연산부, 상기 상수 변환부, 상기 저장부 E 및 저장부 W의 출력을 가산하는 가산부를 포함하는 것을 특징으로 하는 SHA-1 해쉬값 연산 장치.
- 제 3항에 있어서, 레지스터 A, B, C, D, 및 E의 저장과 저장부 W의 출력은 동일 주기에 이루어지고, 상기 제어부는 상기 가산 제어 신호를 80 주기마다 인가하고, 상기 변환 제어 신호는 20 주기마다 인가하는 것을 특징으로 하는 SHA-1 해쉬값 연산 장치.
- 제 1항에 있어서, 상기 저장부 W는 32비트 단위의 16개의 W 데이터 중에서 제 1 W 데이터를 출력하고, 전체 W 데이터를 32비트 쉬프트하는 쉬프트 레지스터부;상기 데이터 저장부 W의 제 1 및 제 3 W 데이터를 XOR 연산한 결과와 제 9 및 제 14 W 데이터를 XOR 연산한 결과를 다시 XOR 연산하여 1비트 회전 쉬프트하여 궤환하는 궤환부를 포함하는 것을 특징으로 하는 SHA-1 해쉬값 연산 장치.
- 레지스터 A, B, C, D, 및 E에 초기값을 저장하는 초기값 저장 단계;입력 데이터를 레지스터 W에 저장하는 입력 데이터 저장 단계;상기 레지스터 A, B, C, D, E, 및 W에 각각 저장된 A, B, C, D, E, 및 W 값을 처리하여 새로운 A, B, C, D, E, 및 W 값을 생성하고, 상기 생성된 A, B, C, D, E, 및 W 값을 각각 레지스터 A, B, C, D, E, 및 W에 저장하는 중간값 생성 단계; 및상기 중간값 생성단계가 소정 횟수 반복된 후, 상기 레지스터 A, B, C, D, E에 저장된 값을 각각 상기 레지스터 A, B, C, D, 및 E의 초기값과 가산하여 최종값을 생성하는 최종값 생성 단계를 포함하는 것을 특징으로 하는 SHA-1 해쉬값 연산 방법.
- 제 6항에 있어서, 상기 중간값 생성 단계는,상기 레지스터 A에 저장된 A 값을 5비트 회전 쉬프트한 값, 상기 레지스터 B, C, 및 D에 각각 저장된 B, C, D 값을 소정의 함수로 연산한 값, 및 상기 레지스터 E에 저장된 E 값, 소정의 상수, 및 상기 레지스터 W의 저장된 W 값 중 소정의 비트값을 연산하여 중간값 A를 생성하는 단계;상기 레지스터 B에 저장된 B 값을 30비트 회전 쉬프트하여 중간값 C를 생성하는 단계;상기 레지스터 A에 저장된 A 값, 상기 레지스터 C에 저장된 C 값, 및 상기 레지스터 D에 저장된 D값을 각각 상기 레지스터 B, D, 및 E에 저장하는 단계;상기 중간값 A 및 C 를 각각 레지스터 A 및 C에 저장하는 단계; 및상기 레지스터 W에 저장된 소정의 비트값을 서로 연산하여 궤환 입력하고, 상기 레지스터 W에 저장된 비트값을 32 비트 쉬프트하여 생성된 W 값을 저장하는 단계를 포함하는 것을 특징으로 하는 SHA-1 해쉬값 연산 방법.
- 제 7항에 있어서, 상기 소정 함수 및 상기 소정 함수는 변환 제어 신호에 따라 변환되고, 상기 가산부는 상기 가산 제어 신호에 따라 수행되는 것을 특징으로 하는 SHA-1 해쉬값 연산 방법.
- 제 8항에 있어서, 상기 가산 제어 신호는 중간값 생성단계가 80회 반복될 때마다 인가되고, 상기 변환 제어 신호는 중간값 생성단계가 20회 반복될 때마다 인가되는 것을 특징으로 하는 SHA-1 해쉬값 연산 방법.
- 제 6항에 있어서, 상기 레지스터 W는 저장된 32비트 단위의 16개의 W 데이터 중에서 최상위인 제 1 W 데이터를 출력하고, 전체 W 데이터를 32비트 쉬프트하며, 상기 데이터 저장부 W의 제 1 및 제 3 W 데이터를 XOR 연산한 결과와 제 9 및 제 14 W 데이터를 XOR 연산한 결과를 다시 XOR 연산하여 1비트 회전 쉬프트하여 궤환하는 궤환부를 포함하는 것을 특징으로 하는 SHA-1 해쉬값 연산 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020030097149A KR20050065976A (ko) | 2003-12-26 | 2003-12-26 | Sha-1 해쉬값 연산 장치 및 방법 |
US10/917,685 US7376685B2 (en) | 2003-12-26 | 2004-08-12 | Apparatus and method for computing SHA-1hash function |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020030097149A KR20050065976A (ko) | 2003-12-26 | 2003-12-26 | Sha-1 해쉬값 연산 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20050065976A true KR20050065976A (ko) | 2005-06-30 |
Family
ID=34698502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020030097149A KR20050065976A (ko) | 2003-12-26 | 2003-12-26 | Sha-1 해쉬값 연산 장치 및 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7376685B2 (ko) |
KR (1) | KR20050065976A (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100761132B1 (ko) * | 2005-09-26 | 2007-09-21 | 엘지전자 주식회사 | Sha-1 연산 방법 및 장치 |
WO2009073365A2 (en) * | 2007-12-03 | 2009-06-11 | Intel Corporation | Method and apparatus for generic multi-stage nested hash processing |
KR101389034B1 (ko) * | 2006-11-08 | 2014-04-28 | 라피스 세미컨덕터 가부시키가이샤 | Sha 연산 방법 및 sha 연산 장치 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100901697B1 (ko) * | 2007-07-09 | 2009-06-08 | 한국전자통신연구원 | 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치 |
AU2008286957B2 (en) * | 2007-08-10 | 2012-11-01 | Smiths Medical Asd, Inc. | System for controlling medical devices |
US9680637B2 (en) * | 2009-05-01 | 2017-06-13 | Harris Corporation | Secure hashing device using multiple different SHA variants and related methods |
CN104012032B (zh) | 2011-12-22 | 2017-04-19 | 英特尔公司 | 处理sha‑1安全散列算法的方法和设备 |
US20140009314A1 (en) * | 2012-07-06 | 2014-01-09 | International Business Machines Corporation | Efficient string hash computation |
US8874933B2 (en) * | 2012-09-28 | 2014-10-28 | Intel Corporation | Instruction set for SHA1 round processing on 128-bit data paths |
US10454670B2 (en) * | 2016-06-10 | 2019-10-22 | Cryptography Research, Inc. | Memory optimization for nested hash operations |
CN114648319A (zh) * | 2020-12-18 | 2022-06-21 | 深圳比特微电子科技有限公司 | 执行哈希算法的电路、计算芯片、加密货币矿机和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3709760B2 (ja) | 2000-03-28 | 2005-10-26 | 松下電工株式会社 | ハッシュ装置 |
US7142669B2 (en) * | 2000-11-29 | 2006-11-28 | Freescale Semiconductor, Inc. | Circuit for generating hash values |
DE60213762T2 (de) * | 2001-01-12 | 2007-10-04 | Broadcom Corp., Irvine | Implementierung des SHA1 Algorithmusses |
KR100417793B1 (ko) | 2001-07-06 | 2004-02-11 | 주홍정보통신주식회사 | Sha-1에 사용되는 중간값 생성회로 |
US7400722B2 (en) | 2002-03-28 | 2008-07-15 | Broadcom Corporation | Methods and apparatus for performing hash operations in a cryptography accelerator |
US7151829B2 (en) * | 2002-04-22 | 2006-12-19 | International Business Machines Corporation | System and method for implementing a hash algorithm |
TWI238636B (en) * | 2003-06-19 | 2005-08-21 | Yen-Fu Liu | Operation device and method of fast secure hash algorithm |
-
2003
- 2003-12-26 KR KR1020030097149A patent/KR20050065976A/ko not_active Application Discontinuation
-
2004
- 2004-08-12 US US10/917,685 patent/US7376685B2/en not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100761132B1 (ko) * | 2005-09-26 | 2007-09-21 | 엘지전자 주식회사 | Sha-1 연산 방법 및 장치 |
KR101389034B1 (ko) * | 2006-11-08 | 2014-04-28 | 라피스 세미컨덕터 가부시키가이샤 | Sha 연산 방법 및 sha 연산 장치 |
WO2009073365A2 (en) * | 2007-12-03 | 2009-06-11 | Intel Corporation | Method and apparatus for generic multi-stage nested hash processing |
WO2009073365A3 (en) * | 2007-12-03 | 2009-07-23 | Intel Corp | Method and apparatus for generic multi-stage nested hash processing |
US8363827B2 (en) | 2007-12-03 | 2013-01-29 | Intel Corporation | Method and apparatus for generic multi-stage nested hash processing |
Also Published As
Publication number | Publication date |
---|---|
US7376685B2 (en) | 2008-05-20 |
US20050144204A1 (en) | 2005-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7908641B2 (en) | Modular exponentiation with randomized exponent | |
CN109145616B (zh) | 基于高效模乘的sm2加密、签名和密钥交换的实现方法及*** | |
JP2009229615A5 (ko) | ||
KR20080005574A (ko) | Crc 에러 검출 방법, 장치, 시스템 및 crc 에러 검출방법을 수행하는인스트럭션 세트를 포함하는 머신판독가능한 매체 | |
KR20050065976A (ko) | Sha-1 해쉬값 연산 장치 및 방법 | |
CN111092718A (zh) | 加密方法、装置及电子设备 | |
JP5143817B2 (ja) | ハッシュ暗号装置及び方法 | |
EP1876523A1 (en) | Computation of A MOD (2^n - 1) | |
Van Hieu et al. | Hardware implementation for fast block generator of Litecoin blockchain system | |
Shoufan et al. | A novel processor architecture for McEliece cryptosystem and FPGA platforms | |
Moon et al. | Fast VLSI arithmetic algorithms for high-security elliptic curve cryptographic applications | |
Zhao et al. | Efficient implementation of kyber on mobile devices | |
JP4566513B2 (ja) | 擬似ランダム系列を発生させる方法および装置 | |
JP2004361969A (ja) | 暗号化方法 | |
US6662201B1 (en) | Modular arithmetic apparatus and method having high-speed base conversion function | |
JP5427117B2 (ja) | メッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、およびプログラム | |
CN114629665B (zh) | 一种用于可信计算的硬件平台 | |
Shoufan et al. | A novel cryptoprocessor architecture for chained Merkle signature scheme | |
KR100656375B1 (ko) | 저전력 해쉬함수 암호화 장치 | |
US20130108038A1 (en) | System and method for a collatz based hash function | |
KR20100067590A (ko) | 타원곡선 암호 연산 방법 | |
CN109375895B (zh) | 多项式乘法的加速方法及装置、ntru加解密加速方法及装置 | |
CN113505383A (zh) | 一种ecdsa算法执行***及方法 | |
KR100954843B1 (ko) | 센서 모트에서의 블록 인덱싱 기반의 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록 매체 | |
JP4692022B2 (ja) | 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |