KR100761132B1 - Sha-1 연산 방법 및 장치 - Google Patents
Sha-1 연산 방법 및 장치 Download PDFInfo
- Publication number
- KR100761132B1 KR100761132B1 KR1020050089419A KR20050089419A KR100761132B1 KR 100761132 B1 KR100761132 B1 KR 100761132B1 KR 1020050089419 A KR1020050089419 A KR 1020050089419A KR 20050089419 A KR20050089419 A KR 20050089419A KR 100761132 B1 KR100761132 B1 KR 100761132B1
- Authority
- KR
- South Korea
- Prior art keywords
- value
- sha
- modular addition
- addition operation
- variable
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000004364 calculation method Methods 0.000 abstract description 18
- 238000010586 diagram Methods 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
순차적인 연산 방식이 아니라 2단계 파이프 라인 구조의 연산 방식을 채택하여 제1 및 제2 부분 라운드 연산을 동시에 수행하도록 하여 연산 속도를 향상시킬 수 있는 SHA-1 연산 방법 및 장치가 제공된다. SHA-1 연산 방법은, 32 비트 메시지 변수를 W라 하고, 32비트 연쇄 변수를 각각 A, B, C, D 및 E라 하고 상수를 K라 할 때, SHA-1 해쉬 연산을 수행하는 SHA-1 해쉬 연산 방법에 있어서, B, C 및 D 연쇄 변수값에 대해 소정의 부울 함수 연산을 수행하는 단계; E 연쇄 변수값 및 W 메시지 변수값에 대해 제1 모듈러 가산 연산하는 단계; 부울 연산의 결과값 및 제1 모듈러 가산 연산의 결과값을 제2 모듈러 가산 연산하는 단계; 제2 모듈러 가산 연산의 결과값을 일시 저장하는 단계; 저장된 제2 모듈러 가산 연산의 결과값과 상수 K값을 제3 모듈러 가산 연산하는 단계; A 연쇄 변수값을 소정 비트로 쉬프트 연산하는 단계; 및 제3 모듈러 가산 연산의 결과값 및 쉬프트 연산의 결과값을 제4 모듈러 가산 연산하고, 그 결과값을 상기 A 연쇄 변수값으로 할당하는 단계를 포함하되, 연계 변수 E, 메시지 변수 W, 상수 K는 상호간에 연산 위치가 변경 가능한 것을 특징으로 한다.
SHA-1, 해쉬, 파이프라인, 모듈러 연산
Description
도 1 및 도 2는 종래의 SHA-1 연산방법 및 장치를 설명하기 위한 도면이다.
도 3은 본 발명의 실시예에 따른 SHA-1 연산 방법을 설명하기 위한 흐름도이다.
도 4는 본 발명의 실시예에 따른 SHA-1 연산 장치를 설명하기 위한 구성 블록도이다.
도 5는 도 4에 도시된 본 발명의 실시예에 따른 SHA-1 연산 장치의 동작을 설명하기 위한 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
1, 2, 3, 4: 모듈러 가산부 5, 6: 쉬프트 연산부
7: 부울 함수 연산부 8: 레지스터
본 발명은 SHA-1 연산 방법 및 장치에 관한 것이다.
일반적으로, SHA(Secure Hash Algorithm)은 미국 NIST(national institute of standards and technology)에 의하여 개발된 SHS(secure hash standard)내에 정의된 알고리즘이다. SHA-1은 1994년에 발간된 SHA의 개정판으로 현재 미국 표준으로 공인되어 있다. SHA-1에 대한 내용은 FIPS PUB(Federal Information Processing Standards Publications) 180-1에 상세히 기재되어 있다.
SHA-1 해쉬 연산 알고리즘을 살펴보면, 임의의 길이의 입력 데이터를 받아서 이를 512 비트보다 길이가 작은 경우, 0으로 패팅하여 512 비트씩 입력 데이터를 분할한 후, 각 분할 데이터 블럭에 대해 20 스텝으로 이루어진 4 라운드(round), 즉, 80회의 반복 연산을 수행하여 32 비트씩 5개의 연쇄 변수 A, B, C, D 및 E에 해당하는 최종 160 비트의 해쉬값을 얻게 된다.
도 1 및 도 2는 특허공개번호 10-2005-0065976의 종래의 SHA-1 해쉬값 연산 장치 및 방법을 설명하기 위한 도면이다.
먼저, 도 1은 종래의 SHA-1 해쉬값 연산 방법을 설명하기 위한 흐름도이다.
도 1을 참조하여, 종래의 SHA-1 해쉬값 연산 방법을 살펴보면, 먼저 레지스터 A, B, C, D 및 E에 초기값을 저장한다(10). 이어서, 입력 데이터가 W 레지스터에 저장되면(20), 레지스터 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에 저장하여 중간값을 생성한다(30). 이때, 중간값 생성 횟수가 80회 이내이고(40), 20 배수에 해당하면(50), 상수 K 및 부울함수 F를 변경한다(60). 반면에 중간값 생성 횟수가 80회에 도달하면, 레지스터 A, B, C, D 및 E에 저장된 값이 최종값으로 생성된다(70).
도 2는 도 1에 도시된 중간값 생성 과정(30)을 설명하기 위한 개념도를 도시한 것이다.
이어서, 도 2에 도시된 개념을 식으로 표현하면 다음 수학식 1과 같다.
상기 수학식 1에 있어서, W는 분할된 메시지 블록을, K는 메시지 상수를, +는 모듈러 덧셈 연산을, F는 부울 함수 연산을, t는 0~79까지의 반복 횟수를, <<는 소정 비트의 쉬프트 연산을 각각 나타낸 것이다.
도 2 및 수학식 1에 도시된 바와 같이, 종래의 SHA-1 해쉬값 연산 장치 및 방법은 중간값 생성을 위한 순차적 연산을 수행하므로 알고리즘의 수행에 걸리는 시간이 길어지는 문제점이 있다. 즉, 한번의 중간값 연산을 위해서는 4회의 모듈러 가산 연산이 순차적으로 수행되어야 하고, 추가적으로 1회의 부울함수 연산(또는 쉬프트 연산) 만큼의 시간이 소요됨을 알 수 있다. 따라서, 이러한 중간값 생성 과정을 80회 반복 수행하여야 하므로 알고리즘 연산 속도가 매우 느리다는 문제점이 있었다.
상술한 종래의 문제점을 해결하기 위하여 본 발명의 목적은, 종래의 순차적인 연산 방식이 아니라 2단계 파이프 라인 구조의 연산 방식을 채택하여 제1 및 제2 부분 라운드 연산을 동시에 수행하도록 하여 연산 속도를 향상시킬 수 있는 SHA-1 해쉬 연산 방법 및 장치를 제공하기 위한 것이다.
상술한 본 발명의 목적을 달성하기 위한 본 발명에 따른 SHA-1 연산 방은, 32 비트 메시지 변수를 W라 하고, 32비트 연쇄 변수를 각각 A, B, C, D 및 E라 하고 상수를 K라 할 때, SHA-1 해쉬 연산을 수행하는 SHA-1 해쉬 연산 방법에 있어서, 상기 B, C 및 D 연쇄 변수값에 대해 소정의 부울 함수 연산을 수행하는 단계; 상기 E 연쇄 변수값 및 상기 W 메시지 변수값에 대해 제1 모듈러 가산 연산하는 단계; 상기 부울 연산 단계의 결과값 및 제1 모듈러 가산 연산의 결과값을 제2 모듈러 가산 연산하는 단계; 상기 제2 모듈러 가산 연산의 결과값을 일시 저장하는 단계; 상기 저장된 제2 모듈러 가산 연산의 결과값과 상기 상수 K값을 제3 모듈러 가산 연산하는 단계; 상기 A 연쇄 변수값을 소정 비트로 쉬프트 연산하는 단계; 및 상기 제3 모듈러 가산 연산의 결과값 및 상기 쉬프트 연산 결과값을 제4 모듈러 가산 연산하고, 그 결과값을 상기 A 연쇄 변수값으로 할당하는 단계를 포함하되, 상기 연계 변수 E, 메시지 변수 W, 상수 K는 상호간에 연산 위치가 변경 가능한 것을 특징으로 한다.
상술한 본 발명의 목적을 달성하기 위한 본 발명에 따른 SHA-1 연산 장치는, 32 비트 메시지 변수를 W라 하고, 32비트 연쇄 변수를 각각 A, B, C, D 및 E라 하고 상수를 K라 할 때, SHA-1 해쉬 연산을 수행하는 SHA-1 해쉬 연산 장치에 있어서, 상기 B, C 및 D 연쇄 변수값에 대해 소정의 부울 함수 연산을 수행하는 부울 연산부; 상기 E 연쇄 변수값 및 상기 W 메시지 변수값에 대해 제1 모듈러 가산 연산하는 제1 가산부; 상기 부울 연산부 및 제1 가산부의 출력을 제2 모듈러 가산 연산하는 제2 가산부; 상기 제2 가산부의 출력을 일시 저장하기 위한 저장부; 상기 저장부에 저장된 값과 상기 상수 K값을 제3 모듈러 가산 연산하는 제3 가산부; 상기 A 연쇄 변수값을 소정 비트로 쉬프트 연산하는 쉬프트 연산부; 및 상기 제3 가산부 및 상기 쉬프트 연산부의 출력을 제4 모듈러 가산 연산하는 제4 가산부를 포함하되, 상기 연계 변수 E, 메시지 변수 W, 상수 K는 상호간에 연산 위치가 변경 가능한 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여, 본 발명의 실시예에 따른 SHA-1 연산 방법 및 장치를 상세히 설명하고자 한다.
도 3은 본 발명의 실시예에 따른 SHA-1 연산 방법을 설명하기 위한 흐름도를 도시한 것이다.
이어서, 초기 제1 부분 라운드 연산을 수행하며(120), 이를 식으로 표현하면 다음 수학식 2와 같다.
상기 수학식 2에 따르면, 초기 제1 라운드 연산 결과값 은 초기 연계 변수 에 대하여 상기 수학식 3에 따라 주어진 부울 함수 연산을 수행한 후, 이 결과값과 연계 변수 및 초기 메시지 변수 의 모듈러 가산 연산을 통해 구해진다.
이어서, 제1 및 제2 부분 라운드 연산을 동시에 수행하여 연계변수 A, B, C, D 및 E에 대한 중간값을 생성하며(130), 이를 식으로 표현하면 다음 수학식 4와 같다.
이어서, 중간값 반복 횟수가 80회 이내이고(140), 반복 횟수가 20 배수에 해당하면(160), 부울함수 와 상수 는 알고리즘에 따라 변환 처리된다(170). 이때, 반복 횟수가 80회에 도달하면(140), 32 비트의 연계변수 A, B, C, D 및 E를 최종 결과값으로 생성한다(150).
도 4는 본 발명의 실시예에 따른 SHA-1 연산 장치의 구성 블록도를 도시한 것으로, SHA-1 연산 장치는 4개의 모듈러 가산부(1, 2, 3, 4)와 2개의 쉬프트 연산부(5, 6)와 하나의 부울함수 연산부(7) 그리고 레지스터(8)로 구성된다.
이하, 상기 구성에 따른 SHA-1 연산 과정을 좀 더 상세히 살펴보면 다음과 같다.
도 4에 도시된 바와 같이, 본 발명의 실시예에 따른 SHA-1 연산장치는, 2단계의 파이프 라인 구조를 가지며, 제1 부분 라운드 연산 과정은 부울 함수 연산부(7)를 통해 연계 변수 의 입력값을 주어진 부울 함수 연산을 수행하며, 제1 모듈러 가산부(1)를 통해 연계 변수 및 메시지 변수 를 제1 모듈러 가산되며, 부울 함수 연산부(7) 및 제1 모듈러 가산부(1)의 출력은 다시 제2 모듈러 가산부(2)에 의해 제2 모듈러 가산 연산된 후, 레지스터(8)에 저장되어 제1 부분 라운드 연산이 마무리된다. 이때, 레지스터(8)에 저장된 값은 상기 수학식 4의 값에 해당한다.
이어서, 제2 부분 라운드 연산 과정은 제1 부분 라운드 연산 결과, 즉, 레지스터(8) 값과 상수 값이 제2 모듈러 가산부(3)를 통해 제2 모듈러 가산 연산된 결과와 연계 변수 값이 쉬프트 연산부(6)에 의해 5 비트 왼쪽 쉬프트된 결과값이 모듈러 가산부(4)에 의해 모듈러 가산된 후, 다음 연계변수 로서 출력된다. 또한, 연계 변수 값은 쉬프트 연산부(5)에 의해 30 비트 왼쪽 쉬프트 연산된후, 다음 연계 변수 로서 출력된다. 또한, 나머지 다음 연계 변수 B, D 및 E도 상기 수학식 4에 따라 추가 생성된다.
도 5는 도 4에 도시된 본 발명의 실시예에 따른 SHA-1 연산 장치의 동작을 설명하기 위한 도면이다.
도 5를 참조하면, 도 4에 도시된 SHA-1 연산 장치에 클럭 신호(clock)를 인가할 때, 일반적으로는 SHA-1 최종 결과값을 얻기 위해서는 중간값 반복 생성 횟수가 80이므로 총 80회의 클럭이 필요하나, 본 발명의 실시예에서는 초기 제1라운드 연산 결과값()을 구하기 위해서는 한 번의 클럭이 더 필요하게 되므로 총 81회의 클럭이 필요하다. 즉, 1회의 클럭 시간이 더 필요하나, 파이프 라인 구조에 의해 2중화하고, 이를 동시에 수행함으로써 전체 연산 시간은 종래의 연산 장치에 비해 약 2배의 연산 속도를 향상시킬 수 있다.
상술한 바와 같이, 본 발명의 실시예에 따른 SHA-1 연산 장치는, 종래의 연산 장치가 모든 중간값 연산 과정을 하나의 클럭으로서 순차적으로 처리함으로써, 전체 연산 시간이 상당히 길어지는 측면이 있었다. 그런데, 본 발명의 실시예와 같이, 2단계의 부분 라운드 연산을 동시에 수행하도록 함으로써, 종래에 비해 2배 정도의 연산 속도를 향상시킬 수 있다.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며, 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위 내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.
본 발명에 따르면, 종래의 순차적인 연산 방식이 아니라 2단계 파이프 라인 구조의 연산 방식을 채택하여 제1 및 제2부분 라운드 연산을 동시에 수행하도록 함으로써, 종래의 순차적인 연산 방식보다 대략 2배 정도의 연산 속도를 향상시킬 수 있다.
Claims (4)
- 32 비트 메시지 변수를 W라 하고, 32비트 연쇄 변수를 각각 A, B, C, D 및 E라 하고 상수를 K라 할 때, SHA-1 해쉬 연산을 수행하는 SHA-1 해쉬 연산 방법에 있어서,상기 B, C 및 D 연쇄 변수값에 대해 소정의 부울 함수 연산을 수행하는 단계;상기 E 연쇄 변수값 및 상기 W 메시지 변수값에 대해 제1 모듈러 가산 연산하는 단계;상기 부울 연산의 결과값 및 제1 모듈러 가산 연산의 결과값을 제2 모듈러 가산 연산하는 단계;상기 제2 모듈러 가산 연산의 결과값을 일시 저장하는 단계;상기 저장된 제2 모듈러 가산 연산의 결과값과 상기 상수 K값을 제3 모듈러 가산 연산하는 단계;상기 A 연쇄 변수값을 소정 비트로 쉬프트 연산하는 단계; 및상기 제3 모듈러 가산 연산의 결과값 및 상기 쉬프트 연산의 결과값을 제4 모듈러 가산 연산하고, 그 결과값을 상기 A 연쇄 변수값으로 할당하는 단계를 포함하되,상기 연계 변수 E, 메시지 변수 W, 상수 K는 상호간에 연산 위치가 변경 가능한 것을 특징으로 하는 SHA-1 연산 방법.
- 삭제
- 32 비트 메시지 변수를 W라 하고, 32비트 연쇄 변수를 각각 A, B, C, D 및 E라 하고 상수를 K라 할 때, SHA-1 해쉬 연산을 수행하는 SHA-1 해쉬 연산 장치에 있어서,상기 B, C 및 D 연쇄 변수값에 대해 소정의 부울 함수 연산을 수행하는 부울 연산부;상기 E 연쇄 변수값 및 상기 W 메시지 변수값에 대해 제1 모듈러 가산 연산하는 제1 가산부;상기 부울 연산부 및 제1 가산부의 출력을 제2 모듈러 가산 연산하는 제2 가산부;상기 제2 가산부의 출력을 일시 저장하기 위한 저장부;상기 저장부에 저장된 값과 상기 상수 K값을 제3 모듈러 가산 연산하는 제3 가산부;상기 A 연쇄 변수값을 소정 비트로 쉬프트 연산하는 쉬프트 연산부; 및상기 제3 가산부 및 상기 쉬프트 연산부의 출력을 제4 모듈러 가산 연산하는 제4 가산부를 포함하되,상기 연계 변수 E, 메시지 변수 W, 상수 K는 상호간에 연산 위치가 변경 가능한 것을 특징으로 하는 SHA-1 연산 장치.
- 삭제
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050089419A KR100761132B1 (ko) | 2005-09-26 | 2005-09-26 | Sha-1 연산 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050089419A KR100761132B1 (ko) | 2005-09-26 | 2005-09-26 | Sha-1 연산 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070034834A KR20070034834A (ko) | 2007-03-29 |
KR100761132B1 true KR100761132B1 (ko) | 2007-09-21 |
Family
ID=41629400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050089419A KR100761132B1 (ko) | 2005-09-26 | 2005-09-26 | Sha-1 연산 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100761132B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040017434A (ko) * | 2002-08-21 | 2004-02-27 | 이광엽 | 병렬 연산구조를 갖는 엠디5 해쉬함수 연산 방법 |
KR20050065976A (ko) * | 2003-12-26 | 2005-06-30 | 한국전자통신연구원 | Sha-1 해쉬값 연산 장치 및 방법 |
-
2005
- 2005-09-26 KR KR1020050089419A patent/KR100761132B1/ko not_active IP Right Cessation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040017434A (ko) * | 2002-08-21 | 2004-02-27 | 이광엽 | 병렬 연산구조를 갖는 엠디5 해쉬함수 연산 방법 |
KR20050065976A (ko) * | 2003-12-26 | 2005-06-30 | 한국전자통신연구원 | Sha-1 해쉬값 연산 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR20070034834A (ko) | 2007-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Roy et al. | Compact and side channel secure discrete Gaussian sampling | |
US10768898B2 (en) | Efficient modulo calculation | |
JP2004534266A (ja) | ハードウェアにおいて算術演算を効率的に行う方法および装置 | |
CN115344237A (zh) | 结合Karatsuba和蒙哥马利模乘的数据处理方法 | |
EP3769208B1 (en) | Stochastic rounding logic | |
KR20080005574A (ko) | Crc 에러 검출 방법, 장치, 시스템 및 crc 에러 검출방법을 수행하는인스트럭션 세트를 포함하는 머신판독가능한 매체 | |
CN108959168B (zh) | 基于片上内存的sha512全流水电路及其实现方法 | |
JP2005209095A (ja) | 多倍長データ積和演算処理回路及びモンゴメリ積和剰余演算回路 | |
CN114968173A (zh) | 基于ntt和intt结构的多项式乘法运算方法和多项式乘法器 | |
US20070118584A1 (en) | Apparatus and method for calculation of divisions and square roots | |
US6662201B1 (en) | Modular arithmetic apparatus and method having high-speed base conversion function | |
KR20050065976A (ko) | Sha-1 해쉬값 연산 장치 및 방법 | |
JP5175983B2 (ja) | 演算装置 | |
KR100761132B1 (ko) | Sha-1 연산 방법 및 장치 | |
JP5752337B1 (ja) | 情報処理システム、情報処理方法およびプログラム | |
JP3660075B2 (ja) | 除算装置 | |
KR100836737B1 (ko) | 중국인 나머지 정리(crt)와 캐리 저장 가산 기반의모듈러 곱셈 장치 및 방법 | |
CN113485751A (zh) | 执行伽罗瓦域乘法的方法、运算单元和电子装置 | |
JP2011133916A (ja) | 演算装置 | |
CN113971015B (zh) | Uia2计算电路及其数据处理方法、芯片、电子设备及存储介质 | |
KR100392370B1 (ko) | 유한체내에서 다단 구조의 역수 계산 장치 | |
JP2004226516A (ja) | べき乗剰余演算方法及びそのプログラム | |
JP2002157114A (ja) | 乗算器及びそれを搭載した集積回路装置 | |
JP4850884B2 (ja) | べき乗剰余演算器 | |
JP2004240299A (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 | ||
G170 | Publication of correction | ||
FPAY | Annual fee payment |
Payment date: 20100630 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |