KR100417793B1 - Sha-1에 사용되는 중간값 생성회로 - Google Patents

Sha-1에 사용되는 중간값 생성회로 Download PDF

Info

Publication number
KR100417793B1
KR100417793B1 KR10-2001-0040452A KR20010040452A KR100417793B1 KR 100417793 B1 KR100417793 B1 KR 100417793B1 KR 20010040452 A KR20010040452 A KR 20010040452A KR 100417793 B1 KR100417793 B1 KR 100417793B1
Authority
KR
South Korea
Prior art keywords
intermediate value
round
circuit
sha
hash function
Prior art date
Application number
KR10-2001-0040452A
Other languages
English (en)
Other versions
KR20030004771A (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 KR10-2001-0040452A priority Critical patent/KR100417793B1/ko
Publication of KR20030004771A publication Critical patent/KR20030004771A/ko
Application granted granted Critical
Publication of KR100417793B1 publication Critical patent/KR100417793B1/ko

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • H03K19/21EXCLUSIVE-OR circuits, i.e. giving output if input signal exists at only one input; COINCIDENCE circuits, i.e. giving output only if all input signals are identical
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising

Abstract

80라운드의 연산을 수행하는 SHA-1 해쉬 함수 중간값 발생회로는 32비트 단위의 16개의 레지스터 블록들을 구비하여 상기 80라운드 각각의 연산을 위한 상기 중간값을 각각 저장할 수 있는 중간값 저장블락; 제 1제어신호에 응답하여 각각의 라운드의 연산에 필요한 상기 중간값을 생성하기 위하여 상기 중간값 저장블락에 저장된 4개의 중간값들을 선택하는 제 1멀티플렉서; 상기 멀티플렉서의 출력신호들을 수신하여 소정의 논리연산을 통하여 17번째 라운드 내지 80번째 라운드의 연산을 위한 중간값을 생성하는 중간값 연산회로; 제 2제어신호에 응답하여 상기 각각의 라운드에 필요한 상기 중간값을 선택하여 출력하는 제 2멀티플렉서; 제 3제어신호에 응답하여 상기 중간값 연산회로가 생성한 상기 중간값을 각각의 라운드의 연산을 위하여 선택되지 않는 상기 중간값들을 저장하는 레지스터 블록에 저장하는 것을 특징으로 한다. 상기 중간값은 다음식에 의하여 발생되며 Wt=S(W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16), 여기서 S는 1비트 서큘러 레프트 쉬프트 연산을, XOR는 비트 대 비트의 배타 논리합을, Wt는 t번째 중간값을, 그리고 t는 0내지 79인 것을 특징으로 한다.

Description

SHA-1에 사용되는 중간값 생성회로{Word generation circuit used in the Secure Hash Algorithm-1}
본 발명은 반도체 장치에 관한 것으로, 보다 상세하게는 기본적으로 필요한 512비트 레지스터와 다수개의 멀티플렉서를 사용하여 SHA-1연산을 할 수 있는 해쉬 함수의 중간값(또는 워드(word)라 한다.)생성회로에 관한 것이다.
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비트 입력블록을 수신하여 한번의 완전한 연산을 수행하기 위해 80라운드(round)의 연산이 필요하며, 각각의 라운드 연산은 32비트로 구성되는 하나의 데이터(이하 '중간값(Wt)'이라 한다.)를 필요로 한다.
도 1은 종래의 SHA-1 해쉬 함수의 중간값 발생회로를 나타낸다. 도 2는 종래의 SHA-1 해쉬 함수의 중간값을 나타낸다. 도 1 및 도 2를 참조하여 SHA-1해쉬 함수 중간값 발생회로(10)를 설명하면 다음과 같다.
중간값 발생회로(10)는 중간값 저장블록(1), 버퍼(5) 및 중간값 연산회로(7)를 구비하며, 중간값 저장블록(1)은 80개의 32비트 레지스터 블록들(0 내지 79)과 제어회로(3)를 구비한다.
16개의 중간값(W0 내지 W15)은 512비트 입력블록을 상위 비트부터 시작하여 32비트 단위로 블록화함으로서 생성되고, 이렇게 생성된 중간값(W0 내지 W15) 각각은 32비트 레지스터 블락(0 내지 15)에 각각 저장된다.
SHA-1 해쉬 함수 연산회로가 한 클락(one clock)에 한 라운드(one round)를 연산하는 경우, 16번째 라운드까지는 중간값들(W0 내지 W15)을 이용하여 해쉬 함수 연산을 할 수 있으나, 17번째 라운드 내지 80번째 라운드는 수학식 1을 이용하여 생성된 64개의 중간값(W16 내지 W79) 각각을 이용하여 해쉬 함수 연산해야 된다.
따라서 64개의 중간값(W16 내지 W79) 각각이 32비트 레지스터 블락(16 내지 79)에 미리 저장되어 있어야 원활하게 80라운드의 해쉬 연산을 할 수 있다.
Wt=S(W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16)
여기서 S는 1비트 서큘러 레프트 쉬프트 연산(1 bit circular left shifter operation)을, XOR는 비트 대 비트의 배타 논리합을, t는 0부터 79사이의 수를 각각 나타낸다.
예컨대, 17번째 32비트 레지스터(16)에 저장되는 중간값(W16)을 계산하기 하여 제어회로(3)는 제어신호(CTL)에 응답하여 4개의 중간값들(W13, W8, W2 및 W0)을 순차적으로 버퍼(5)로 출력한다.
버퍼(5)는 4개의 중간값들(W13, W8, W2 및 W0)을 버퍼링하여 중간값 연산회로(7)로 출력하면, 중간값 연산회로(7)는 수학식 1을 이용하여 17번째 중간값(W16)을 생성한 후 제어회로(3)에 응답하여 17번째 레지스터 블락(16)에 저장한다.
종래의 SHA-1 해쉬 함수의 중간값 발생회로(10)는 512비트를 저장하는 16개의 32비트 레지스터 블락(0 내지 15)과 도 2의 중간값들(W16 내지 W79)을 각각 저장하기 위한 64개의 32비트 레지스터 블락들(16 내지 79)을 필요로 한다.
따라서 종래의 SHA-1 해쉬 함수의 중간값 발생회로(10)를 집적회로로 구현하는 경우, 64개의 레지스터 블락들(16내지 79)을 구성하는 2048개의 레지스터들로 인하여 집적회로의 크기가 증가되는 문제점이 있다. 또한 2048개의 레지스터들이 소모하는 전력이 증가되고, 집적회로를 설계하는데 어려움이 있다.
따라서 본 발명이 이루고자 하는 기술적인 과제는 SHA-1 해쉬 함수의 중간값을 저장하는 전체 레지스터들의 수를 감소시켜 중간값 발생회로의 동작 속도를 증가시키고, 중간값 발생회로가 소모하는 전력을 감소시킬 수 있는 중간값 발생회로를 제공하는 것이다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 종래의 SHA-1 해쉬 함수의 중간값 발생회로를 나타낸다.
도 2는 종래의 SHA-1 해쉬 함수의 중간값을 나타낸다.
도 3은 본 발명의 일 실시예에 따른 SHA-1 해쉬 함수의 중간값 발생회로를 나타낸다.
도 4는 본 발명의 일 실시예에 따른 SHA-1 해쉬 함수 연산회로를 나타낸다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 SHA-1 해쉬 함수 중간값 발생회로는 512비트로 패딩된 데이터를 수신하여 32비트 단위로 16개의 블록들을 생성하여 저장하는 버퍼; 제 1제어신호에 응답하여 상기 버퍼의 출력신호들 또는 상기 중간값을 선택하는 제 1선택회로; 상기 제 1선택회로의 출력신호를 저장하는 중간값 저장블락; 제 2제어신호에 응답하여 상기 중간값 저장블락에 저장된 4개의 중간값들을 선택하여 출력하는 제 2선택회로; 상기 제 2선택회로의 출력들을 논리연산하여 생성된 상기 중간값을 상기 제 1선택회로로 출력하는 중간값 연산회로; 및 제 3제어신호에 응답하여 상기 중간값 저장블락에 저장된 상기 중간값을 선택하여 출력하는 제 3선택회로를 구비한다.
상기 중간값 저장블록은 16개의 레지스터 블록들을 구비하며, 상기 각각의 레지스터 블록은 32비트 레지스터이고, 상기 제 1내지 제 3선택회로는 멀티플렉서인 것이 바람직하다.
또한, 80라운드의 연산을 수행하는 SHA-1 해쉬 함수 중간값 발생회로는 32비트 단위의 16개의 레지스터 블록들을 구비하여 상기 80라운드 각각의 연산을 위한상기 중간값을 각각 저장할 수 있는 중간값 저장블락; 제 1제어신호에 응답하여 각각의 라운드의 연산에 필요한 상기 중간값을 생성하기 위하여 상기 중간값 저장블락에 저장된 4개의 중간값들을 선택하는 제 1멀티플렉서; 상기 멀티플렉서의 출력신호들을 수신하여 소정의 논리연산을 통하여 17번째 라운드 내지 80번째 라운드의 연산을 위한 중간값을 생성하는 중간값 연산회로; 제 2제어신호에 응답하여 상기 각각의 라운드에 필요한 상기 중간값을 선택하여 출력하는 제 2멀티플렉서; 제 3제어신호에 응답하여 상기 중간값 연산회로가 생성한 상기 중간값을 각각의 라운드의 연산을 위하여 선택되지 않는 상기 중간값들을 저장하는 레지스터 블록에 저장하는 것을 특징으로 한다.
상기 중간값은 다음식에 의하여 발생되며 Wt=S(W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16), 여기서 S는 1비트 서큘러 레프트 쉬프트 연산을, XOR는 비트 대 비트의 배타 논리합을, Wt는 t번째 중간값을, 그리고 t는 0내지 79인 것을 특징으로 한다.
상기 기술적 과제를 달성하기 위한 본 발명의 일실시예에 따른 80라운드의 연산을 수행하기 위하여 SHA-1 해쉬 함수의 중간값을 발생하는 방법은 (a)로 패딩된 데이터를 수신하여 32비트 단위로 16개의 블록들을 생성하여 1번째 라운드의 연산을 위한 중간값 내지 16번째 라운드의 연산을 위한 중간값들을 생성하여 32비트의 16개 레지스터 블락들에 저장하는 단계; (b) 상기 32비트의 16개 레지스터 블락들에 저장된 중간값들 중에서 4개의 중간값들을 논리 연산하여 제 17번째 라운드 내지 제 80번째 라운드연산에 필요한 17번째 중간값 내지 제 80번째 중간값을 각각생성하는 단계; (c) 상기(b)단계에서 생성된 상기 17번째 중간값 내지 상기 제 80번째 중간값을 상기 17번째 중간값 내지 상기 제 80번째 중간값을 생성하는데 필요로 하지 않는 상기 레지스터 블락들에 저장하는 단계; 및 (d) 상기 80라운드의 연산을 수행하기 위하여 상기 (a)단계에 저장된 중간값을 선택하여 상기 선택된 중간값에 상응하는 라운드의 연산을 행하는 것을 특징으로 한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 3은 본 발명의 일 실시예에 따른 SHA-1 해쉬 함수의 중간값 발생회로를 나타낸다. 도 3을 참조하면, SHA-1 해쉬 함수의 중간값 발생회로(20)는 입력버퍼(21), 제 1선택회로(23), 중간값 저장블락(27), 제 2선택회로(29), 제 3선택회로(31), 컨트롤러(33) 및 중간값 연산회로(35)를 구비한다.
입력버퍼(21)는 512비트로 패딩(padding)된 데이터를 32비트씩 분할하여 생성되는 16개의 중간값(W0 내지 W15)을 제 1선택회로(23)로 출력한다.
제 1선택회로(23)는 16개의 멀티플렉서들(25)로 구성될 수 있으며, 각각의 멀티플렉서(25)는 제어신호(CNTL1)에 응답하여 32비트씩 분할된 입력버퍼(21)의 출력신호(W0 내지 W15) 또는 중간값 연산회로(35)의 출력신호(Wt)를 중간값저장블락(27)으로 출력한다.
중간값 저장블락(27)은 16개의 레지스터 블락들(0 내지 15)을 구비하며, 16개의 레지스터 블락들(0 내지 15)각각은 32비트의 중간값(Wt)을 각각 저장한다. 예컨대 1번째 라운드를 수행하는데 필요한 1번째 중간값(W0)을 레지스터 블락(0)에 저장하고, 2번째 라운드를 수행하는데 필요한 2번째 중간값(W1)을 레지스터 블락(1)에 저장하고, 10번째 라운드를 수행하는데 필요한 10번째 중간값(W9)을 레지스터 블락(9)에 저장하고, 16번째 라운드를 수행하는데 필요한 16번째 중간값(W15)을 레지스터 블락(15)에 저장할 수 있다.
또한 중간값 저장블락(27)은 17번째 라운드를 수행하는데 필요한 17번째 중간값(W16)을 레지스터 블락(0)에 저장하고, 18번째 라운드를 수행하는데 필요한 18번째 중간값(W17)을 레지스터 블락(17)에 저장할 수도 있다. 중간값 저장블락(27)의 16개의 레지스터 블락들(0 내지 15)에 저장될 수 있는 중간값(Wt)은 제 1선택회로(23)에 의하여 결정된다.
제 2선택회로(29)는 멀티플렉서로 구성될 수 있으며, 제 2선택회로(29)는 제어신호(CNTL2)에 응답하여 16개의 레지스터 블락들(0 내지 15)에 각각 저장되는 16개의 중간값 중에서 수학식 1에 의하여 결정되는 4개의 중간값을 선택하여 중간값 연산회로(35)로 출력한다. 17번째 라운드 내지 80번째 라운드의 연산을 수행하기 위하여 선택되는 중간값(Wt)은 도 2에 기재되어 있다.
중간값 연산회로(35)는 제 2선택회로(29)의 출력신호, 즉 4개의 중간값들을 수신하여 17번째 라운드 내지 80번째 라운드 연산에 필요한 중간값(W16 내지 W79)을 각각 생성하여 제 1선택회로(23)로 출력한다. 제 2선택회로(29)의 출력신호는 128비트(4×32비트)이다. 제 1선택회로(23)는 제어신호(CNTL1)에 응답하여 80개의 중간값(W0 내지 W79)중에서 소정의 중간값(Wt)을 중간값 저장블락(27)으로 출력한다.
제 3선택회로(31)는 멀티플렉서로 구성될 수 있으며, 제어신호(CNTL2)에 응답하여 중간값 저장블락(27)의 16개의 레지스터 블락들(0 내지 15)에 저장되는 중간값(W0 내지 W79)중에서 총 80라운드의 SHA-1 해쉬함수 연산을 수행하는데 필요한 하나의 중간값을 출력한다.
예컨대 1번째 라운드는 레지스터 블락(0)에 저장된 중간값(W0)을 이용하여 해쉬 함수 연산을 수행하고, 16번째 라운드는 레지스터 블락(15)에 저장된 중간값(W15)을 이용하여 해쉬 함수 연산을 수행한다.
그리고 17번째 라운드 연산을 하기 위한 중간값(W16)을 생성하기 위하여, 중간값 연산회로(35)는 1번째 중간값(W0), 3번째 중간값(W2), 9번째 중간값(W8) 및 14번째 중간값(W13)을 필요로 한다.
17번째 라운드 연산을 하기 위한 중간값(W16)은 제 1선택회로(23)에 의하여 18번째 라운드 연산을 하는데 필요한 중간값들, 예컨대 2번째 중간값(W1), 4번째 중간값(W3), 10번째 중간값(W9) 및 15번째 중간값(W143)이 저장되어 있는 레지스터 블락(1, 3, 9, 14) 이외의 소정의 레지스터 블락에 저장될 수 있다.
18번째 라운드 연산을 하기 위한 중간값(W17)은 2번째 중간값(W1), 4번째 중간값(W3), 10번째 중간값(W9) 및 15번째 중간값(W143)을 연산하여 얻을 수 있다.도 2는 수학식 1을 통하여 얻은 17번째 라운드 연산을 하기 위한 중간값(W16) 내지 80번째 라운드를 연산하기 위한 중간값(W79)을 각각 나타낸다.
종래에는 80라운드를 수행하기 위한 중간값(W0 내지 W79)을 미리 생성하여 80개의 레지스터 블락들(도 1의 0 내지 79)에 저장하고 각각의 라운드를 수행하는데 필요한 중간값을 선택하여 사용하였다.
그러나 따라서 본 발명의 일실시예에 따른 SHA-1 해쉬 함수의 중간값 발생회로(20)는 중간값(Wt)을 저장하는 기본적인 16개의 레지스터 블락들(도 3의 0내지 15)과 다수개의 선택회로들(23, 29, 31)만을 사용하므로, 중간값(Wt)을 저장하는 레지스터 블락들을 80개에서 16개로 감소시킬 수 있는 장점이 있다.
도 4는 본 발명의 일 실시예에 따른 SHA-1 해쉬 함수 연산회로를 나타낸다. 도 4를 참조하여 SHA-1 해쉬 함수 연산회로(40)를 간단히 설명하면 다음과 같다. SHA-1 해쉬 함수 연산회로(40)는 672 비트 입력버퍼(41), SHA-1 해쉬 함수의 중간값 발생회로(20), 초기값 저장블락(43), 제 1쉬프터(45), 제 2쉬프터(51), 논리회로(47), 제 1멀티플렉서(42), 제 2멀티플렉서(49), 제 1내지 제 4 캐리 세이브 가산기(53, 55, 59, 61), 캐리 전달 가산기(63), 상수 블락(57), 가산기 블락(65) 및 출력버퍼(67)를 구비한다.
각각의 멀티플렉서들(25, 42, 29, 31, 49), 상수 블락(57)과 논리회로(47)는 소정의 제어신호에 응답하여 그 동작이 제어되나 상기 소정의 제어신호들의 도시는 생략한다.
672 비트 입력버퍼(41)는 512비트로 패딩된 데이터와 160비트의 초기값을 저장하며, 512비트로 패딩된 데이터는 중간값(Wt)을 생성하는 데 사용되는 데이터이고, 160비트의 초기값은 전체 SHA-1 연산을 수행하는데 사용되는 데이터 값이다.
SHA-1 해쉬 함수의 중간값 발생회로(20)는 도 3에 상세히 설명되어 있으므로 SHA-1 해쉬 함수 연산회로(40)를 설명하는 과정에서 필요한 부분을 간단히 설명한다. 초기값 저장블락(43)은 5개의 레지스터 블락들(A, B, C, D, E)을 구비하며, 레지스터 블락들(A, B, C, D, E) 각각은 32비트 레지스터로 구성되어, 160비트 초기값 연산을 수행하는데 필요한 160비트를 임시로 저장하는 레지스터 블락이다.
제 1쉬프터(45)는 32비트를 수신하여 30비트 서큘러 레프트(circular left) 연산을 수행하고, 제 2쉬프터(51)는 32비트를 수신하여 5비트 서큘러 레프트(circular left) 연산을 수행한다.
논리회로(47)는 레지스터 블락들(B, C, D)의 출력신호를 수신하여 SHA-1에서 사용되는 연산을 수행하며, F_1 내지 F_4는 수학식 2와 같이 정의된다.
제 2멀티 플렉서(49)는 수학식 2로 표현되는 논리회로(47)의 출력신호들(F_1, F_2, F_3, F_4)을 수신하고 소정의 제어신호에 응답하여 출력신호들(F_1, F_2, F_3, F4)의 하나를 제 1캐리 세이브 가산기(53)로 출력한다.
제 1캐리 세이브 가산기(53)는 제 2멀티 플렉서(49)의 출력신호와 제 3선택회로(31)의 출력신호를 가산하여 그 가산결과를 제 2캐리 세이브 가산기(55)로 출력한다. 제 2캐리 세이브 가산기(55)는 제 1캐리 세이브 가산기(53)의 출력신호와 제 2쉬프터(51)의 출력신호를 가산하여 그 가산결과를 제 3캐리 세이브 가산기(59)로 출력한다.
제 3캐리 세이브 가산기(59)는 제 2캐리 세이브 가산기(53)의 출력신호와 상수 블락(57)의 출력신호를 가산하여 그 가산결과를 제 4캐리 세이브 가산기(61)로 출력한다. 상수 블락(57)은 수학식 3과 같이 표현되는 SHA-1에서 사용되는 상수를 구비한다.
제 4캐리 세이브 가산기(61)는 제 3캐리 세이브 가산기(59)의 출력신호와 레지스터 블락(E)의 출력신호에 응답하여 캐리(carry)와 합(sun)을 캐리 전달 가산기(63)로 출력하고, 캐리 전달 가산기(63)는 제 4캐리 세이브 가산기(61)의 출력신호들에 응답하여 가산하는데 필요한 지연을 최소화하여 보정된 신호를 제 1멀티플렉서(42)를 구성하는 멀티플렉서(c)로 출력한다.
가산기 블락(65)은 5개의 가산기들(add_0, add_1, add_2, add_3, add_4)을구비한다. 가산기(add_0)는 672비트 입력버퍼(41)의 출력신호 중 소정의 32비트와 32비트인 레지스터 블락(A)의 출력신호를 가산하여 32비트의 가산결과를 출력버퍼(67)로 출력한다. 출력버퍼(67)는 160비트의 가산기 블락(65)의 출력신호를 버퍼링한다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 SHA-1 해쉬 함수의 중간값 발생회로(20)는 중간값(Wt)을 저장하는 기본적인 16개의 레지스터 블락들(도 3의 0내지 15)과 다수개의 선택회로들(23, 29, 31)만을 사용하므로, 중간값(Wt)을 저장하는 레지스터 블락들을 80개에서 16개로 감소시킬 수 있는 장점이 있다.
따라서 SHA-1 해쉬 함수의 중간값 발생회로(20)가 소모하는 전력이 감소하고, SHA-1 해쉬 함수의 중간값 발생회로의 연산속도가 증가하는 효과가 있다.

Claims (6)

  1. SHA-1 해쉬 함수 중간값 발생회로에 있어서,
    512비트로 패딩된 데이터를 수신하여 32비트 단위로 16개의 블록들을 생성하여 저장하는 버퍼;
    제 1제어신호에 응답하여 상기 버퍼의 출력신호들 또는 상기 중간값을 선택하는 제 1선택회로;
    상기 제 1선택회로의 출력신호를 저장하는 중간값 저장블락;
    제 2제어신호에 응답하여 상기 중간값 저장블락에 저장된 4개의 중간값들을 선택하여 출력하는 제 2선택회로;
    상기 제 2선택회로의 출력들을 논리연산하여 생성된 상기 중간값을 상기 제 1선택회로로 출력하는 중간값 연산회로; 및
    제 3제어신호에 응답하여 상기 중간값 저장블락에 저장된 상기 중간값을 선택하여 출력하는 제 3선택회로를 구비하는 것을 특징으로 하는 SHA-1 해쉬 함수 중간값 발생회로.
  2. 제 1항에 있어서, 상기 중간값 저장블록은 16개의 레지스터 블록들을 구비하며, 상기 각각의 레지스터 블록은 32비트 레지스터인 것을 특징으로 하는 SHA-1 해쉬 함수 중간값 발생회로.
  3. 제 1항에 있어서, 상기 제 1내지 제 3선택회로는 멀티플렉서인 것을 특징으로 하는 SHA-1 해쉬 함수 중간값 발생회로.
  4. 80라운드의 연산을 수행하는 SHA-1 해쉬 함수 중간값 발생회로에 있어서,
    32비트 단위의 16개의 레지스터 블록들을 구비하여 상기 80라운드 각각의 연산을 위한 상기 중간값을 각각 저장할 수 있는 중간값 저장블락;
    제 1제어신호에 응답하여 각각의 라운드의 연산에 필요한 상기 중간값을 생성하기 위하여 상기 중간값 저장블락에 저장된 4개의 중간값들을 선택하는 제 1멀티플렉서;
    상기 멀티플렉서의 출력신호들을 수신하여 소정의 논리연산을 통하여 17번째 라운드 내지 80번째 라운드의 연산을 위한 중간값을 생성하는 중간값 연산회로;
    제 2제어신호에 응답하여 상기 각각의 라운드에 필요한 상기 중간값을 선택하여 출력하는 제 2멀티플렉서;
    제 3제어신호에 응답하여 상기 중간값 연산회로가 생성한 상기 중간값을 각각의 라운드의 연산을 위하여 선택되지 않는 상기 중간값들을 저장하는 레지스터 블록에 저장하는 것을 특징으로 하는 SHA-1 해쉬 함수 중간값 발생회로.
  5. 제 1항 또는 제 4항에 있어서, 상기 중간값은 다음식에 의하여 발생되며,
    Wt=S(W(t-3) XOR W(t-8) XOR W(t-14) XOR W(t-16)
    여기서 S는 1비트 서큘러 레프트 쉬프트 연산을, XOR는 비트 대 비트의 배타 논리합을, Wt는 t번째 중간값을, 그리고 t는 0내지 79인 것을 특징으로 하는 SHA-1 해쉬 함수 중간값 발생회로.
  6. 80라운드의 연산을 수행하기 위하여 SHA-1 해쉬 함수의 중간값을 발생하는방법에 있어서,
    (a)로 패딩된 데이터를 수신하여 32비트 단위로 16개의 블록들을 생성하여 1번째 라운드의 연산을 위한 중간값 내지 16번째 라운드의 연산을 위한 중간값들을 생성하여 32비트의 16개 레지스터 블락들에 저장하는 단계;
    (b) 상기 32비트의 16개 레지스터 블락들에 저장된 중간값들 중에서 4개의 중간값들을 논리 연산하여 제 17번째 라운드 내지 제 80번째 라운드연산에 필요한 17번째 중간값 내지 제 80번째 중간값을 각각 생성하는 단계;
    (c) 상기(b)단계에서 생성된 상기 17번째 중간값 내지 상기 제 80번째 중간값을 상기 17번째 중간값 내지 상기 제 80번째 중간값을 생성하는데 필요로 하지 않는 상기 레지스터 블락들에 저장하는 단계; 및
    (d) 상기 80라운드의 연산을 수행하기 위하여 상기 (a)단계에 저장된 중간값을 선택하여 상기 선택된 중간값에 상응하는 라운드의 연산을 행하는 것을 특징으로 하는 SHA-1 해쉬 함수의 중간값 발생방법.
KR10-2001-0040452A 2001-07-06 2001-07-06 Sha-1에 사용되는 중간값 생성회로 KR100417793B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0040452A KR100417793B1 (ko) 2001-07-06 2001-07-06 Sha-1에 사용되는 중간값 생성회로

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0040452A KR100417793B1 (ko) 2001-07-06 2001-07-06 Sha-1에 사용되는 중간값 생성회로

Publications (2)

Publication Number Publication Date
KR20030004771A KR20030004771A (ko) 2003-01-15
KR100417793B1 true KR100417793B1 (ko) 2004-02-11

Family

ID=27713762

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0040452A KR100417793B1 (ko) 2001-07-06 2001-07-06 Sha-1에 사용되는 중간값 생성회로

Country Status (1)

Country Link
KR (1) KR100417793B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210108782A (ko) 2020-02-26 2021-09-03 스타일치과기공 주식회사 유체쿠션 및 그것을 포함하는 치과용 유니트 체어

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050065976A (ko) 2003-12-26 2005-06-30 한국전자통신연구원 Sha-1 해쉬값 연산 장치 및 방법
KR100581662B1 (ko) * 2005-08-31 2006-05-22 주식회사 칩스앤미디어 알고리즘이 다른 복수의 해쉬 함수 연산을 위한 공통엔진
CN108427575B (zh) * 2018-02-01 2022-03-15 深圳市安信智控科技有限公司 全流水结构sha-2消息扩展优化方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623545A (en) * 1995-08-31 1997-04-22 National Semiconductor Corporation Automatic data generation for self-test of cryptographic hash algorithms in personal security devices
JPH11215117A (ja) * 1997-10-20 1999-08-06 Sun Microsyst Inc 鍵の符号化及び回復方法及び装置
JP2002287635A (ja) * 2001-03-26 2002-10-04 Hitachi Ltd Sha演算の高速演算回路

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623545A (en) * 1995-08-31 1997-04-22 National Semiconductor Corporation Automatic data generation for self-test of cryptographic hash algorithms in personal security devices
JPH11215117A (ja) * 1997-10-20 1999-08-06 Sun Microsyst Inc 鍵の符号化及び回復方法及び装置
JP2002287635A (ja) * 2001-03-26 2002-10-04 Hitachi Ltd Sha演算の高速演算回路

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Paper 1997.12. 논문 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210108782A (ko) 2020-02-26 2021-09-03 스타일치과기공 주식회사 유체쿠션 및 그것을 포함하는 치과용 유니트 체어

Also Published As

Publication number Publication date
KR20030004771A (ko) 2003-01-15

Similar Documents

Publication Publication Date Title
Rogaway et al. A software-optimized encryption algorithm
US20020032551A1 (en) Systems and methods for implementing hash algorithms
US20090161863A1 (en) Hardware implementation of the secure hash standard
US20210182021A1 (en) Computational Units for Element Approximation
US11750402B2 (en) Message index aware multi-hash accelerator for post quantum cryptography secure hash-based signing and verification
CN112152786A (zh) 无签名扩展的快速xmss签名验证和临时数采样过程
CN111464308A (zh) 一种实现多种哈希算法可重构的方法和系统
EP0673134A2 (en) Pseudo-random number generator, and communication method and apparatus using encrypted text based upon pseudo-random numbers generated by said generator
US7849125B2 (en) Efficient computation of the modulo operation based on divisor (2n-1)
CN108959168B (zh) 基于片上内存的sha512全流水电路及其实现方法
US20210109711A1 (en) Processor and method for processing mask data
KR100417793B1 (ko) Sha-1에 사용되는 중간값 생성회로
US20020191783A1 (en) Method and apparatus for creating a message digest using a multiple round, one-way hash algorithm
US6785798B2 (en) Method and system for circular addressing with efficient memory usage
US7307453B1 (en) Method and system for parallel state machine implementation
Sun et al. Design and optimized implementation of the SHA-2 (256, 384, 512) hash algorithms
US7376685B2 (en) Apparatus and method for computing SHA-1hash function
US6047364A (en) True modulo addressing generator
US7181009B1 (en) Generating message digests according to multiple hashing procedures
US7151829B2 (en) System and method for implementing a hash algorithm
US20100104098A1 (en) Cryptographic method and device for scheduling and compressing message based on secure hash algorithm
US20180357043A1 (en) Transcendental calculation unit apparatus and method
JP2003098960A (ja) 暗号復号回路
US20220123949A1 (en) Side channel protection for xmss signature function
KR100581662B1 (ko) 알고리즘이 다른 복수의 해쉬 함수 연산을 위한 공통엔진

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20070122

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee
FPAY Annual fee payment

Payment date: 20160810

Year of fee payment: 20