KR100901697B1 - 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치 - Google Patents
저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치 Download PDFInfo
- Publication number
- KR100901697B1 KR100901697B1 KR1020070068874A KR20070068874A KR100901697B1 KR 100901697 B1 KR100901697 B1 KR 100901697B1 KR 1020070068874 A KR1020070068874 A KR 1020070068874A KR 20070068874 A KR20070068874 A KR 20070068874A KR 100901697 B1 KR100901697 B1 KR 100901697B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- unit
- sha
- hash
- bit register
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/164—Implementing security features at a particular protocol layer at the network layer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0485—Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Power Engineering (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 모바일 신뢰 컴퓨팅(Mobile Trusted Computing) 환경에 적용하는 TPM(Trusted Platform Module)에 있어서 최적화 및 저전력화 구조를 가지는 저전력 SHA-1 해쉬 연산 장치 및 이를 이용한 저전력 HMAC 암호 장치에 관한 것으로, 본 발명의 저전력 SHA-1 해쉬 연산 장치를 이용한 저전력 HMAC 암호 장치는 HMAC 연산을 위한 키데이터의 패딩 처리를 위한 키패딩부; 상기 패딩된 키데이터와 패딩상수를 XOR 연산하는 XOR 연산부; 상기 XOR 연산한 데이터에 암호화할 텍스트를 연접하는 데이터연접부; 상기 연접된 데이터의 패딩 처리를 위한 데이터패딩부; 상기 패딩된 데이터에 대한 SHA-1 해쉬 연산을 지원하는 SHA-1 해쉬 연산부; 상기 SHA-1 해쉬 연산의 결과 또는 상기 암호화할 텍스트를 선택하여 상기 데이터연접부에 인가하는 데이터선택부; 및 암호연산의 수행을 위해 필요한 데이터들을 읽어오고, 그 값들을 메모리에 저장하기 위해 상기 키패딩부, 데이터연접부 및 데이터패딩부의 동작을 제어하며, SHA-1 해쉬연산부의 해쉬 연산의 수행 순서 및 연산 결과의 저장을 제어하는 제어부를 포함하여 구성됨으로써, 유무선 환경의 네트워크 시스템과 저전력 임베디드 시스템에서 데이터의 무결성과 인증과 같은 안전성을 제공하기 위한 핵심 암호 기술로 활용될 수 있는 효과가 있다.
HMAC 암호회로, SHA-1 연산, 해쉬함수
Description
본 발명은 해쉬 연산 장치 및 이를 이용한 암호화 장치에 관한 것으로, 더욱 상세하게는 모바일 신뢰 컴퓨팅(Mobile Trusted Computing) 환경과 같이 제한된 파워 리소스를 갖는 핸드폰, PDA 등의 모바일 장치 또는 저전력 성능을 요구하는 임베디드 시스템에서 플랫폼의 무결성 검증과 관련된 플랫폼 및 사용자 인증에 사용하는 HMAC 알고리즘의 최적화된 저전력화 구조를 가지는 저전력 SHA-1 해쉬 연산 장치 및 이를 이용한 저전력 HMAC 암호 장치에 관한 것이다.
본 발명은 정보통신부 및 정보통신연구진흥원의 IT신성장동력핵심기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2006-S-041-02, 과제명: 차세대 모바일 단말기의 보안 및 신뢰 서비스를 위한 공통 보안 핵심 모듈].
최근 들어 급속한 무선 네트워크 기술의 발전과 더불어 디지털 정보사회가 고도화되고 전자상거래가 활성화됨에 따라 암호기술은 고속 인터넷망을 기반으로 한 사회, 경제적 활동의 안전성과 신뢰성, 사용자 프라이버시 보호 등을 위한 핵심 기술로서 인식되고 있다. 특히 모바일 폰과 같은 이동용 플랫폼은 적절한 보안 조치가 없다면, 해커나 다른 악의적인 프로그램의 공격대상이 될 수 있다.
한편, 신뢰 컴퓨팅 그룹(Mobile Trusted Group: TCG)은 다양한 컴퓨팅 시스템을 위한 보안 솔루션에 대하여 open specification을 개발하고 추진하는 단체이다. 최근동안 TCG는 시스템 부팅과 관련한 안전한 절차와 플랫폼의 환경 관리 및 개인 컴퓨팅 플랫폼을 위한 각종 응용들의 실행 등을 정의하는 몇몇 문서와 규격들을 발표하였다. TCG 규격의 핵심 요소는 플랫폼을 모니터링하고 상태를 리포팅하는 핵심 요소로 동작하는 신뢰 플랫폼 모듈(Trusted Platform Module: TPM)이다.
상기 TPM은 별도의 coprocessor로써 암호키들의 안전한 저장 기능과 함께 공개키 암호화 연산과 서명 및 해쉬함수의 기능을 제공할 수 있으며, 내부의 상태를 호스트 시스템의 소프트웨어로 임의로 조작할 수 없다. 이러한 TPM의 보안 기능을 이용하여 사용자는 플랫폼의 초기 환경을 보증하거나 또는 플랫폼의 특정 환경에 데이터를 실링(seal) 하거나 바인드(bind) 할 수 있다.
특히, 상기 TCG의 Mobile Phone Working Group(MPWG)는 특별히 TCG의 보안 규격들을 모바일 폰 장치에 적합하도록 확장하는 작업을 수행하고 있다. 이러한 보 안 규격에서 모바일 폰 장치를 위한 필수 보안 모듈인 Mobile Trusted Module(MTM)은 해당 플랫폼의 무결성을 측정하고 이를 검증하는 작업을 수행하기 위하여, 키를 사용하지 않는 SHA-1(Secure Hash Algorithm-1) 해쉬함수와 함께 키를 사용하는 HMAC(Keyed-Hash Massage Authentication Code) 알고리즘을 사용하도록 지정하고 있다.
상술한 HMAC(Keyed-Hash Massage Authentication Code)은 해쉬 함수를 이용하여 MAC을 생성하는 암호화 방법이다. 일반적으로 해쉬함수는 임의의 길이의 비트스트림을 고정된 길이의 출력값인 해쉬코드로 압축시키는 함수이다. 대표적인 해쉬함수로는 1993년 NSA에 의해 설계된 SHA(Secure Hash Algorithm)를 1995년에 수정/보완한 SHA-1이 있으며, 상기 SHA-1은 임의의 길이의 입력 데이터를 받아서 메시지를 분리하거나 0 패딩의 방법을 이용하여 512 비트 단위로 만든 후 80회의 라운드 연산 과정을 수행함으로써 160비트의 출력을 얻으며, 대부분의 공격에 강한 저항성을 갖는다.
그러나, 대부분의 모바일 디바이스나 임베디드 시스템의 경우 메모리와 가용할 수 있는 전원 및 컴퓨팅 능력에 한계가 있기 때문에, TCG의 이러한 보안 규격들을 모바일폰에 적용하기에는 여러 가지 기술적 어려움이 따른다. 특히 모바일폰의 경우, 배터리의 용량에 한계가 있으므로 이러한 제약 요인들 중에 소비 전력에 큰 영향을 받게 된다. 따라서 저면적이면서 저전력의 SHA-1회로 및 HMAC 회로의 설계 기술이 필요하다.
본 발명은 상기와 같은 문제점을 해결하기 위한 것으로서, 그 목적은 제한된 파워 리소스를 갖는 모바일 장치 또는 저전력 성능을 요구하는 임베디드 시스템에서 플랫폼의 무결성 검증과 관련된 플랫폼 및 사용자 인증에 사용하는 HMAC 알고리즘의 최적화된 저전력화 구조를 가지는 저전력 SHA-1 해쉬 연산 장치 및 이를 이용한 저전력 HMAC 암호 장치를 제공하는 데 있다.
상기와 같은 본 발명의 목적을 달성하기 위하여, 본 발명의 저전력 SHA-1 해쉬 연산 장치는, 해쉬 연산할 데이터를 수신하여 전달하는 데이터입력부; 하나의 32-bit 레지스터를 이용하여 상기 해쉬 연산할 데이터로 상기 해쉬 연산을 위한 각 라운드의 중간값을 생성하는 데이터확장부; 하나의 덧셈기를 이용해 상기 생성된 해쉬 연산을 위한 각 라운드의 중간값에 대해 SHA-1 해쉬 연산을 수행하는 메시지압축부; 상기 SHA-1 해쉬 연산의 결과값을 출력하는 데이터출력부; 및 상기 데이터확장부와 상기 메시지압축부의 동작 순서를 제어하는 해쉬연산제어부를 포함하는 것을 특징으로 한다.
또한, 상기 데이터확장부는, 상기 해쉬 연산할 데이터 및 상기 해쉬 연산을 위한 각 라운드의 중간값의 저장을 위한 메모리; 상기 해쉬 연산을 위한 각 라운드의 중간값을 구하는 중간 연산 결과를 저장하는 하나의 32-비트 레지스터; 상기 레지스터에 저장된 중간 연산 결과와 상기 메모리에서 읽어온 해쉬 연산을 위한 각 라운드의 중간값을 XOR 연산하는 XOR 연산기; 상기 XOR 연산한 값 또는 상기 메모리에 저장된 상기 해쉬 연산할 데이터 및 상기 해쉬 연산을 위한 각 라운드의 중간값 중 하나를 선택하여 상기 하나의 32-비트 레지스터에 입력하는 입력선택기; 상기 하나의 32-비트 레지스터의 출력값을 1 비트 회전이동시키기 위한 회전이동연산기; 및 상기 1 비트 회전이동시킨 값 또는 상기 메모리로부터 읽어온 데이터 중 하나를 선택하여 상기 해쉬 연산을 위한 각 라운드의 중간값으로 출력하는 출력선택기를 포함하여, 데이터의 확장연산을 저전력으로 수행하는 것을 특징으로 한다.
또한, 상기 데이터압축부는, 해쉬 연산을 위한 초기값과 상수값을 저장하기 위한 KH부; 제1의 데이터를 5 bit 쉬프트한 값, 하기 제2 내지 제4의 32-bit 레지스터에 각각 저장된 제2 내지 제4의 데이터를 F함수 연산한 값, 라운드 상수 값 및 상기 해쉬 연산을 위한 각 라운드의 중간값 중 선택된 하나의 값과 하기 제5의 32-bit 레지스터에 저장된 제5의 데이터를 덧셈 연산하여 저장하는 제1의 32-bit 레지스터; 상기 제1의 32-bit 레지스터에 저장된 제1의 데이터를 저장하는 제2의 32-bit 레지스터; 상기 제2의 32-bit 레지스터에 저장된 제2의 데이터를 30 bit 쉬프트하여 저장하는 제3의 32-bit 레지스터; 상기 제3의 32-bit 레지스터에 저장된 제3의 데이터를 저장하는 제4의 32-bit 레지스터; 제4의 32-bit 레지스터에 저장된 제4의 데이터를 저장하는 제5의 32-bit 레지스터; 상기 제1 및 제2의 32-bit 레지스터의 데이터출력을 각각 쉬프트하는 회전쉬프트기; 상기 제2 내지 제4의 32-bit 레지스터의 제2 내지 제4의 데이터들을 F 함수 연산하는 F함수연산기; 데이터 패스를 선택하기 위한 복수의 입력선택수단; 및 한 클럭 주기마다 4번의 덧셈 연산을 반복 수행하여 상기 제1의 데이터를 계산하는 하나의 덧셈기를 포함하여 구성된 것을 특징으로 한다.
또한, 상기 해쉬연산제어부는 4번에 걸쳐 XOR 연산한 값을 상기 하나의 32-비트 레지스터에 저장되도록 상기 입력선택기를 제어하는 것을 특징으로 한다.
한편 본 발명의 저전력 SHA-1 해쉬 연산 장치를 이용한 저전력 HMAC 암호 장치는, HMAC 연산을 위한 키데이터의 패딩 처리를 위한 키패딩부; 상기 패딩된 키데이터와 패딩상수를 XOR 연산하는 XOR 연산부; 상기 XOR 연산한 데이터에 암호화할 텍스트를 연접하는 데이터연접부; 상기 연접된 데이터의 패딩 처리를 위한 데이터패딩부; 상기 패딩된 데이터에 대한 SHA-1 해쉬 연산을 수행하는 SHA-1 해쉬 연산부; 상기 SHA-1 해쉬 연산의 결과 또는 상기 암호화할 텍스트를 선택하여 상기 데이터연접부에 인가하는 데이터선택부; 및 암호연산의 수행을 위해 필요한 데이터들 을 읽어오고, 그 값들을 메모리에 저장하기 위해 상기 키패딩부, 데이터연접부 및 데이터패딩부의 동작을 제어하며, SHA-1 해쉬연산부의 해쉬 연산의 수행 순서 및 연산 결과의 저장을 제어하는 제어부를 포함하여 구성되는 것을 특징으로 한다.
또한, 본 발명은 모바일 신뢰 컴퓨팅(Mobile Trusted Computing) 환경에 사용하는 저전력 HMAC 암호 장치의 구성을 위해서 HMAC 암호 장치와 SHA-1 해쉬 연산 장치 사이에 SHA-1 연산을 구동하는 부분과 HMAC 연산을 수행하는 부분의 제어부로를 분리하여 핸드쉐이크 방식을 사용하고, 키메모리와 데이터메모리 부분을 구분하여 SHA-1 해쉬 연산의 수행과 다음에 수행할 SHA-1 연산의 전처리 과정을 동시에 수행하는 구조를 특징으로 한다.
또한, 본 발명은 플랫폼에서 SHA-1 해쉬 연산과 HMAC 연산이 별도로 필요한 경우, 해당 연산을 지원하기 위하여, 인터페이스부 내부의 제어레지스터를 사용하여 연산의 종류를 지정하고, SHA-1 해쉬연산부에서 SHA-1 해쉬 연산과 HMAC 연산을 모두 지원하는 것을 특징으로 한다.
또한, 본 발명의 인터페이스부는 SHA-1 연산의 경우, 한 번의 SHA-1 해쉬 연산을 수행할 것인지, 아니면 연속적인 데이터에 대해 계속해서 SHA-1 해쉬 연산을 수행할 것인지를 설정하는 명령을 별도로 입력받는 것을 특징으로 한다.
또한, 본 발명은 저전력회로의 설계를 위한 HMAC 암호 알고리즘의 효율적인 연산을 위한 블록의 설계와 함께 데이터를 처리하지 않는 회로 블록이 소모하는 전력을 최소화하기 위하여 데이터를 저장하는 레지스터의 값이 변화하는 시점에만 클 럭 신호를 인가하고, 조합회로의 경우에는 불필요한 데이터 값의 변화에 따른 스위칭 연산을 줄이기 위하여 별도의 레지스터를 사용하여 스위칭 동작을 최소화하도록 구성되는 것을 특징으로 한다.
상술한 바와 같이, 본 발명에 따른 저전력 SHA-1 해쉬 연산 장치 및 이를 효율적으로 이용한 저전력 HMAC 암호 장치는 모바일 신뢰 컴퓨팅(Mobile Trusted Computing)과 RFID 시스템, 무선 센서네트워크 및 홈 네트워크 등의 유무선 데이터 환경에서 사용자의 프라이버시 보호에 사용할 수 있는 효과가 있다.
또한 본 발명은 암호회로 구현에 제약이 많은 유무선 환경의 네트워크 시스템과 저전력 임베디드 시스템에서 데이터의 무결성과 인증과 같은 안전성을 제공하기 위한 핵심 암호 기술로 활용될 수 있는 효과가 있다.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시 예를 상세히 설명한다.
다만, 본 발명의 바람직한 실시 예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
또한, 도면 전체에 걸쳐 유사한 기능 및 작용을 하는 부분에 대해서는 동일한 도면 부호를 사용한다.
덧붙여, 명세서 전체에서, 어떤 부분이 다른 부분과 '연결'되어 있다고 할때, 이는 '직접적으로 연결'되어 있는 경우뿐만 아니라, 그 중간에 다른 소자를 사이에 두고 '간접적으로 연결'되어 있는 경우도 포함한다.
또한 어떤 구성 요소를 '포함'한다는 것은, 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
우선, 본 발명에 대한 이해를 돕기 위하여 구성 및 작용 설명에 앞서, 도 1을 참조하여 일반적인 HMAC 암호연산에 대해서 설명한다.
도 1은 HMAC 암호의 표준 문서인 FIPS PUB-198에 나타나 있는 HMAC 암호의 연산 순서를 정의하는 흐름도를 나타낸 것이다.
도 1에 도시된 바와 같이, HMAC 암호화에서는 HMAC 연산을 위해 사용하는 키(K0)를 결정한다(S100).
이때, 입력되는 키(K)의 길이가 해쉬 연산에 사용하는 SHA-1의 블록 크기(B), 예를 들어 512비트와 같은 경우에는 입력되는 키(K)를 그대로 K0로 결정하고, 상기 입력되는 키(K)의 길이가 해쉬 연산에 사용하는 SHA-1의 블록 크기(B)보다 작은 경우에는 블록 크기(B)가 될 때까지 입력되는 키(K) 뒤에 0을 패딩(padding)하여 K0로 결정한다. 그리고, 입력되는 키(K)의 길이가 SHA-1 해쉬함수 의 블록 크기(B)보다 큰 경우는 안정성에 큰 영향을 미치지 않으므로, 그대로 둔다. 이와 관련하여 FIPS-198에서는 한번의 추가적인 해쉬 연산을 수행하여 키 크기를 줄여서 사용하도록 하고 있으나, 이러한 연산은 HMAC을 구동하는 상위 프로그램에서 수행할 수 있으므로 본 발명에서는 이 경우를 고려하지 않는다.
상기와 같이, HMAC 연산에 사용할 키(K0)가 정해지면, 상기 결정된 키(K0)와 패딩상수(ipad) 이용한 연산을 수행(S110)한 후, 그 결과값에 HMAC 연산에 사용할 메시지(text)를 연접한다(S120). 그 후, 상기 연접된 데이터에 대해 SHA-1 해쉬 연산을 수행한다(S130).
여기서, 상기 키(K0)값을 SHA-1 해쉬의 블록값(512비트)이므로 메시지(text)를 연접한 값은 SHA-1의 블록 크기인 512 비트보다 크다. 따라서 상기 S130 단계를 수행하기 위해서는 최소 2번의 SHA-1 해쉬 연산이 필요하다.
또한, 상기 키값(K0)을 패딩상수(opad)를 이용한 연산을 수행하고(S140), 상기 S140의 단계의 결과값과 SHA-1 해쉬 연산의 결과를 연접한다(S150). 그 후, 상기 S150의 연접된 데이터에 대해 다시 SHA-1 해쉬 연산을 수행한다(S160).
앞서와 마찬가지로 키(K0)값이 SHA-1 해쉬의 블록값(512비트)이므로 S130 단계의 해쉬 연산 결과를 연접한 값은 SHA-1의 블록 크기인 512비트 보다는 크다. 따라서 상기 S160 단계에서도 최소 2번의 SHA-1 해쉬 연산이 이루어진다.
상기 S160 단계의 해쉬 연산 결과값 중에서 좌측 "t"bytes를 MAC으로 결정한다(S170)
상기 과정에 의하면, HMAC 알고리즘은 2단계에 걸쳐서 SHA-1 해쉬 연산을 수행한다.
즉, 첫 번째는 S130 단계에서, 패딩상수(ipad)에 의한 XOR 연산값( )과 텍스트(text)의 연접값에 대해 512-bit씩 연산을 수행한다. 상기 의 값이 512-bit 이상의 길이를 가지므로, 실제로 첫 번째 단계에서는 2번에 걸친 SHA-1 해쉬 연산이 수행된다.
두 번째 S160 단계에서 패딩상수(opad)에 의한 XOR 연산값과 상기 제130 단계의 해쉬 연산의 결과인 160-bit 출력의 연접값에 대해 수행된다.
따라서 상기 SHA-1의 연산 장치를 최적화시킬 경우, HMAC 암호장치의 저전력 구현이 가능하다.
도 2는 본 발명에 따른 저전력 HMAC 암호 장치의 구성도를 나타낸 것이다.
상기 저전력 HMAC 암호 장치는 모바일 플랫폼에 구비되어 마이크로프로세 서(210)와 연동하여 동작하며, 상기 마이크로프로세서(210)는 모바일 신뢰 컴퓨팅(Mobile Trusted Computing)을 위한 연산에 필요한 모든 내부 동작을 제어한다.
더하여 상기 마이크로프로세서(210)는 모바일 플랫폼의 인터페이스(interface)를 관리하고, TPM(Trusted Platform Module) 내부의 암호 모듈의 연산을 제어하며, TCG spec.에 명시된 명령들을 수행한다.
모바일 플랫폼에 대해서만 언급하였으나, 본 발명의 HMAC 암호장치는, 그 외에 파워 리소스에 제한이 있거나, 저전력 성능이 요구되는 장치이면 어디에나 적용가능하다.
도 2를 참조하면, 본 발명의 HMAC 암호 장치는 인터페이스부(220), 키패딩부(230), 입력선택기(231), 출력선택기(232), XOR 연산기(233), 데이터연접부(240), 데이터패딩부(250), 제어부(260) 및 SHA-1 해쉬연산부(270)를 포함하여 구성된다.
인터페이스부(220)는 TPM(Trusted Platform Module)에 사용되는 이크로프로세서(210)와 HMAC 암호 장치를 연결하여 데이터와 명령들을 송수신하는 역할을 한다.
더 구체적으로, 상기 인터페이스부(220)는 마이크로프로세서(210)에서 전송되는 데이터나 명령들을 해석하여 HMAC 암호 장치에서 수행하여야 하는 명령이면 내부의 제어레지스터(미도시)에 저장한다. 상기 제어레지스터에 저장된 제어신호들은 제어부(260)에서 저전력 HMAC 암호 장치의 구동에 필요한 제어신호를 발생하는 데 이용된다.
그리고 인터페이스부(220)는 SHA-1 해쉬 연산의 경우엔 데이터만 입력받고, HMAC 연산의 경우엔 데이터와 비밀키를 함께 입력으로 받는다. 이때 필요한 데이터의 경로 설정은 제어부(260)에서 인가한다.
또한 상기 인터페이스부(220)는 HMAC 암호 장치에서 수행된 SHA-1 해쉬 연산 또는 HMAC 연산의 결과와 연산의 종료를 알리는 인터럽터 신호(end_op)를 마이크로프로세서(210)로 출력하는 기능을 수행한다.
키패딩부(230)는 HNAC 암호화를 위하여 TPM 규격에 정의된 20-byte의 입력키 외에 선택사항으로 규정되는 49-byte 또는 64-byte의 키를 HMAC 알고리즘에서 규정하는 64-byte 길이의 키로 확장하는 연산을 수행한다. 키패딩부(230)에 의해 패딩 처리된 키 값(padded key)은 상수 값을 선택하는 입력선택기(231)를 통해 선택되는 패딩상수 ipad 또는 opad 값과 XOR 연산을 수행하게 된다.
데이터연접부(240)는 인터페이스부(220)를 통해 입력되는 데이터(text)와 상기 XOR 연산을 수행한 키값을 연접한다. 또한 도 1의 HMAC 알고리즘에서 정의하였듯이, 한 번의 SHA-1 연산을 수행한 결과를 opad값으로 XOR 연산한 값과 연접하여 데이터패딩부(250)로 인가한다. 이때 상기 데이터연접부(240)로 인가되는 데이터의 선택은 출력선택기(232)에 의해 수행된다.
데이터패딩부(250)의 동작은 HMAC 암호장치의 동작모드에 따라 달라진다. 먼저 HMAC 암호 장치가 SHA-1 해쉬 연산만 수행하는 경우, SHA-1 해쉬 연산의 수행에 필요한 데이터 패딩 연산과 전체 데이터 길이를 계산하여 64-bit 길이로 입력하는 데이터 패딩을 수행한다. 그리고, HMAC 암호 장치가 HMAC 연산을 수행하는 경우, 데이터연접부(240)에서 수행된 연접된 데이터에 대해 필요한 데이터 패딩 연산과 전체 데이터 길이를 계산하여 패딩하는 작업을 수행한다.
그리고 본 발명의 HMAC 연산의 경우, 키데이터를 처리하기 위한 전처리 작업과 데이터를 연접하고 패딩하는 전처리 작업으로 구분되므로, 키와 데이터에 사용하는 메모리를 구분하여 키와 데이터 처리에 필요한 전처리 연산을 동시에 수행함으로써 효율적인 HMAC 연산에 걸리는 시간을 줄일 수 있다.
따라서 본 발명에 따른 키패딩부(230), 데이터연접부(240) 및 데이터패딩부(250)는 HMAC 암호 장치의 효율적인 연산을 수행하기 위해 키를 저장하는 키메모리와 데이터를 저장하는 데이터 메모리를 분리해서 사용한다.
또한, 키패딩부(230), 데이터연접부(240) 및 데이터패딩부(250)는 메모리와 약간의 부가회로들로 구성된다. 이러한 회로들(230, 240, 250)을 위해 사용하는 메모리는 기본 로직셀들로 구성된 레지스터들을 사용하여 512-bit single port 메모리로 구성한다.
소비 전력의 최소화를 위해 이러한 메모리를 구성하는 레지스터들이 동작하지 않을 때는 스위칭이 발생하지 않으며, 메모리 부분은 사용하는 공정 기술에 따 라 적절한 모듈로 대체 가능하며 dual-port 메모리 역시 사용할 수 있을 것이다.
SHA-1 해쉬연산부(270)는 SHA-1 해쉬 연산을 수행한다. 데이터패딩부(250)의 출력값을 입력으로 받은 SHA-1 해쉬연산부(270)는 제어부(260)에서 인가되는 연산 시작 명령인 sha_start 신호를 입력받아 연산을 시작하고, 80라운드에 이르는 SHA-1 해쉬 연산이 끝나면, 연산이 종료되었음을 나타내는 sha_end 신호를 출력한다.
SHA-1 해쉬연산부(270)의 내부에는 별도의 SHA-1 해쉬 연산의 수행을 제어하는 해쉬연산제어부(도 3의 360)가 있으며, HMAC 암호 장치의 제어부(260)와는 핸드쉐이크 형태로 연산의 시작과 종료를 알린다.
이러한 핸드쉐이크 구조를 사용함으로써 SHA-1 해쉬 연산과 HMAC 연산을 위한 전처리 기능을 각각 분리하여 수행할 수 있다. SHA-1 해쉬연산부(270)에 대한 자세한 설명은 도 3 내지 도 4를 참조하여 추후 다시 설명한다.
제어부(260)는 HMAC 암호 장치 전반의 데이터 흐름을 관리하고 제어한다. 상술한 바와 같이 80라운드에 이르는 SHA-1 해쉬 연산을 수행하기 위해서는 약간의 시간이 필요하고, HMAC 연산의 경우에는 SHA-1 해쉬 연산을 최소 4회에 걸쳐 반복해서 수행하여야한다.
따라서 SHA-1 해쉬 연산이 수행되는 동안 다음에 수행될 SHA-1 연산의 전처리 과정을 미리 수행함으로써 HMAC 연산의 수행 속도를 줄이는 효율적인 계산이 가능하다. 이러한 제어 과정을 위하여 제어부(260)는 sha-start와 sha_end라는 제어 신호를 이용하여 SHA-1 해쉬연산부(270)를 제어한다.
또한 제어부(260)는 인터페이스부(220)를 통한 데이터의 입/출력을 제어하며, 입력되는 데이터들의 주소를 검사함으로써 인터페이스부(220)로 인가되는 값이 데이터인지 제어명령인지를 구분하여 처리한다.
또한, 제어부(260)는 본 발명의 저전력 HMAC 암호 장치에서 수행하는 연산의 종류에 따라 제어를 달리한다. HMAC 암호 장치에서 수행하여야 할 연산의 종류는 마이크로프로세서(210)에서 HMAC 암호 장치로 전송되는 제어명령에 의해 설정된다.
즉, 제어부(260)는 입력되는 데이터의 주소를 검사하여 제어명령인 경우, 입력되는 데이터를 인터페이스부(220) 내부의 제어레지스터에 저장하도록 상태천이를 수행한다.
그런 다음, 상기 제어부(260)는 상기 제어레지스터에 저장된 제어명령을 조사하여 HMAC 암호 장치에서 수행하여야 할 연산의 종류를 인지하고, 수행할 연산에 해당하는 상태천이를 시작한다. 더하여 상기 제어부(260)는 HMAC 암호 장치에서 수행하는 암호연산의 수행을 위해 필요한 데이터들을 읽어오고, 그 값들을 메모리에 저장하기 위하여 키패딩부(230)와 데이터연접부(240) 및 데이터패딩부(250)의 동작을 제어하며, 이들로부터 읽어올 데이터의 주소와 읽어오는 순서 등을 제어하고, SHA-1 해쉬연산부(270)에서 수행하는 해쉬 연산의 수행 순서들과 연산 결과들을 저장하는 과정을 전반적으로 제어한다.
도 3은 본 발명에 따른 저전력 구조의 SHA-1 해쉬연산부(270)의 상세 구성도 를 나타낸 것이다.
도 3을 참조하면, 저전력 구조의 SHA-1 해쉬연산부(270)는 데이터입력부(320), 데이터출력부(330), 데이터확장부(340), 메시지압축부(350) 및 해쉬연산제어부(360)로 구성된다. 그리고 HMAC 암호 장치(310)는 도 2의 HMAC 암호 장치에서 SHA-1 해쉬연산부(270)를 제외한 나머지 회로들을 나타낸다.
데이터입력부(320)는 HMAC 암호 장치(310)를 통해 인가되는 데이터(din)를 데이터확장부(340)에 전달하고, 제어신호(start)를 해쉬연산제어부(360)에 전달한다. 또한 상기 데이터입력부(320)는 HMAC 암호 장치(310)에서 패딩 연산 되어 입력되는 데이터(din)의 길이 정보(m_len)를 해쉬연산제어부(360)에 전달한다.
데이터출력부(320)는 SHA-1 해쉬 연산이 종료된 후 메시지압축부(350) 내에 저장되어 있는 해쉬 결과값을 읽어와서 HMAC 암호 장치(310)로 전송한다.
데이터확장부(340)는 메모리(도 4의 410)와 추가적인 회로로 구성되며, 데이터입력부(320)를 통해 입력되는 데이터(din)를 하나의 32 bit 레지스터에 저장하고, 해쉬연산의 전체 80라운드 필요한 중간값 를 생성하여 메시지압축부(350)에 인가한다. 데이터확장부(340)의 세부 설명은 도 4를 참조하여 추후 설명한다.
메시지압축부(350)는 실제로 SHA-1 해쉬연산을 수행하는 영역으로, 데이터확장부(340)에서 공급되는 해쉬연산을 위한 각 라운드의 중간값 를 입력으로 받아서 80라운드의 해쉬 연산을 하나의 덧셈기를 이용해 반복 수행하고, 그 해쉬결과값을 내부 레지스터(미도시)에 저장한다. 메시지압축부(350)의 세부적인 구성에 대한 설명은 추후 도 5 내지 도 6을 참조하여 자세히 설명한다.
해쉬연산제어부(360)는 본 발명에서 제안하는 저전력 HMAC 암호 장치의 수행을 위해 필요한 SHA-1 해쉬연산부(270)를 구성하는 모듈들이 수행하는 전반적인 동작들의 순서와 데이터의 흐름을 제어한다.
또한, 해쉬연산제어부(360)는 SHA-1 해쉬연산부(270)에서 수행하는 동작에 따라 적절한 제어신호를 순차적으로 발생하기 위해 80라운드의 연산에서 필요한 메시지 스케쥴링과 메시지 압축에 사용하는 상수값의 선택과 함수들의 선택 및 레지스터에 데이터를 저장하는 일련의 작업들을 미리 지정된 절차를 따라 동작하도록 제어한다.
즉, 해쉬연산제어부(360)가 SHA-1 연산 회로의 동작을 제어하기 위해서는 데이터입력, 데이터출력, 제어명령의 입력, 데이터 압축을 위한 라운드연산 및 인터럽터 발생들을 각각 처리하기 위한 상태 흐름이 정의되어야 하고, 이들 상태들 사 이에는 필요에 따라 서로 천이가 가능하도록 설계되어야 한다.
예를 들어 메시지 압축 연산을 수행하는 경우에는 각 라운드에 따라 사용되는 상수를 선택하고 라운드 연산의 중간 결과를 메시지압축부(350) 내의 레지스터에 저장한 후 다음 라운드를 수행하도록 상태를 변경시켜야하며, SHA-1 해쉬 연산을 수행하여 모든 연산이 끝난 경우에는 인터럽트 발생 상태로 이동하여 연산의 종료를 나타내는 인터럽트를 발생하여야 한다.
따라서 본 발명에서 제안하는 저전력 SHA-1 해쉬연산부(270)의 회로면적과 소비전력 및 동작속도에 대한 효율성은 도 3에서 나타낸 데이터확장부(340)와 메시지압축부(350)의 구조에 의해 좌우된다. 이러한 데이터확장부(340)와 메시지압축부(350)에 대해 도 4 내지 도 6을 참조하여 구체적으로 설명한다.
도 4는 본 발명에 따른 데이터확장부(340)의 상세 구성도를 나타낸 것으로, 데이터확장부(340)는 입력되는 데이터로부터 SHA-1 해쉬 연산의 각 라운드 연산에 사용되는 를 계산하여 메시지압축부(350)로 인가한다.
수학식 1에 따르면, 해쉬연산의 각 라운드 연산에 사용되는 는 80라운드의 연산에서 0에서 15 라운드까지는 32-bit 데이터()를 그대로 사용하고, 16에서 79 라운드에서는 이전의 을 사용하여 연산한다. 상기에서 32-bit 데이터()는 512 비트 입력값을 32-bit 단위로 나눈 데이터이다.
메모리(410)는 데이터입력부(320)를 통해 인가되는 패딩된 데이터를 저장하며, 512-bit 길이를 가진다.
그리고 메모리(410)는 SHA-1 해쉬 연산을 수행하기 위하여 해쉬연산제어부(360)의 제어에 의해 저장된 데이터를 32 비트 단위로 출력하고, 계산된 값을 나중에 수행할 라운드 연산의 값 계산을 위해 다시 저장한다.
즉, 논리회로부(400)의 제1 데이터선택기(420)는 메모리(410)에서 읽어온 데이터 값과, 32-bit 레지스터(430)에 저장된 값과 메모리(410)에서 읽어온 데이터 값을 XOR 연산한 값 중 하나를 선택하여 상기 32-bit 레지스터(430)에 저장하도록 경로를 설정한다.
상기 4번에 걸친 연산이 끝나면 상기 32-bit 레지스터(430)에는 수학식 1에서 회전이동 전까지의 연산(, , , 의 XOR 연산 내용) 값이 저장되며, 이 결과는 회전이동부(440)를 거쳐 출력으로 나온다.
상기 회전이동부(440)는 상기 4번의 XOR 연산을 수행한 결과값에 대해 1-bit 회전이동하여 제2 데이터선택기(450)로 출력한다. 이러한 회전이동부(440)는 하드웨어적으로는 결선의 순서를 바꾸어서 간단히 구현할 수 있다.
상기 제2 데이터선택기(450)는 라운드에 따라 출력되는 값의 선택을 위해 사용된다. 즉, 초기 16라운드에서는 로서 메모리(410)에서 출력한 데이터를 그대로 선택하며, 그 이후의 라운드에는 회전이동부(440)의 연산 결과값을 선택 출력한다.
일반적으로 SHA-1 해쉬연산회로를 구현하는 방법은 상기 수식 1의 연산을 위해 16 단계에 이르는 32-bit 레지스터를 사용한다. 그러나 이러한 방법은 SHA-1 해쉬연산회로의 면적과 소비 전력을 고려할 때, 모바일 환경에 적용하기에는 비효율적이다.
따라서 본 특허에서는 16개의 32-bit 레지스터를 사용하는 대신, 32-bit 레지스터 한 개만 사용하여 데이터확장부(340)를 구성하여 4번에 걸친 메모리 데이터의 접근과 XOR 연산으로 의 계산을 수행도록 구현된다. 이러한 구성은 연산 시간은 더 걸리더라도, 일반적으로 16개의 레지스터를 사용하는 방법보다 회로의 면적과 소비 전력을 줄일 수 있다.
도 5는 본 발명에 따른 SHA-1 해쉬 연산부에서 5개의 32-bit 레지스터와 하나의 덧셈기를 사용하는 메시지압축부(350)의 기능적 특징을 나타내는 블록도이다.
도 5를 참조하면, SHA-1 연산의 수행을 위해서는 5개의 32-bit 레지스터에 각각 저장되는 5개의 변수(, , , 및 )가 사용되며, 5개의 변수 중에 4개는 한 단계씩 시프트 연산이 되고, 단지 변수 를 계산하기 위해서만 연산이 필요하다.
따라서 본 발명의 메시지압축부(350)는 저면적/저전력 구조를 갖기 위해 한 개의 덧셈기를 사용하여 4번의 덧셈을 한 클럭 주기마다 반복하여 상기 연산을 수행한다. 이때 변수 를 반복되는 덧셈연산의 중간값을 저장하는 매체로 사용한다. 이를 수식으로 표현하면 다음의 수학식 2와 같다.
도 6은 본 발명에 따른 5단계로 이루어진 32-bit 레지스터와 하나의 덧셈기를 사용하는 메시지압축부(350)의 상세 구성도를 나타낸 것이다.
우선, KH부(641)에는 SHA-1 연산의 수행에 필요한 초기값인 와 라운드 상수 가 저장된다. 또한 KH(641)는 SHA-1 연산에 필요한 메시지가 512-bit 이상인 경우, 다음 수행할 SHA-1 연산의 수행을 위해 필요한 초기값 를 업데이 트한다.
KH부(641)에 초기값이 저장된 상태에서, 장치가 초기화되면 모든 32-bit 레지스터(611~615)들은 0으로 초기화되고, SHA-1 알고리즘에서 정의하는 초기값 에서 까지의 값을 KH부(641)에서 읽어와 저장한다.
모든 레지스터 reg_a, reg_b, reg_c, reg_d 및 reg_e(611~615)는 초기에 0으로 설정되었으므로, 덧셈기(650)의 출력은 여전히 가 되며, reg_a(611)에는 값이 저장된다.
다음으로 KH(641)에서 를 읽어와서 동일한 경로를 통해 reg_a(611)에 저장된다. Reg_e(615)는 초기값이 여전히 0으로 설정되어 있으므로 reg_a(611)에는 가 저장되고 원래 reg_a(611)에 저장되어있던 값은 시프트되어 reg_b(612)에 저장된다. 이러한 동작이 5번에 걸쳐 반복됨으로써 reg_a(611)에 가 저장된다.
이때 데이터선택기(621)는 reg_b(612)의 출력을 30-bit 시프트 연산한 값을 선택하며, 데이터선택기(623)도 역시 4번에 걸친 덧셈 연산을 위한 값을 설정한다.
수학식 2에서 알 수 있듯이 reg_e(615)는 4번의 덧셈 연산이 수행되는 동안 덧셈의 중간 결과를 저장하고, 이를 위해 데이터선택기(622)는 경로 1로 설정된다. 4번의 덧셈 연산이 끝난 결과는 reg_a(611)에 저장된다.
덧셈기(650)은 마지막 라운드 연산 동안, 5개의 레지스터(reg_a~e)에 저장된 값들, 이전 메시지 블록의 결과값, 또는 특정 초기값들과 더해져서 최종 결과값을 출력한다.
이상에서 설명한 본 발명은 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경할 수 있다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 당업자에게 있어 명백할 것이다.
도 1은 HMAC 암호의 표준 문서인 FIPS PUB-198에 나타나 있는 HMAC 암호의 연산 순서를 정의하는 흐름도,
도 2는 본 발명에 따른 저전력 구조를 갖는 SHA-1 해쉬연산부를 이용한 저전력 HMAC 암호 장치의 구성도,
도 3은 본 발명에 따른 저전력 구조의 SHA-1 해쉬연산부의 상세 구성도,
도 4는 본 발명에 따른 데이터확장부의 상세 구성도,
도 5는 본 발명에 따른 메시지압축부의 기능적 특징을 나타내는 블록도, 그리고,
도 6은 본 발명에 따른 메시지압축부의 상세 구성도이다.
*도면의 주요 부호에 대한 설명*
210. 마이크로프로세서 220. 인터페이스부
230. 키패딩부 231. 입력선택기
232. 출력선택기 240. 데이터연접부
250. 데이터패딩부 260. 제어부
270. SHA-1 해쉬연산부 310. HMAC 암호 장치
320. 데이터입력부 330. 데이터출력부
340. 데이터확장부 350. 메시지압축부
360. 해쉬연산제어부 400. 논리회로부
410. 메모리 430, 611-615. 32-bit 레지스터
420. 제1 데이터선택기 450. 제2 데이터선택기
440. 회전이동부 641. KH부
642. F함수 650. 덧셈기
Claims (17)
- 해쉬 연산할 데이터를 수신하여 전달하는 데이터입력부;하나의 32-bit 레지스터를 이용하여 상기 해쉬 연산할 데이터로 해쉬 연산을 위한 각 라운드의 중간값을 생성하는 데이터확장부;하나의 덧셈기를 이용해 상기 생성된 해쉬 연산을 위한 각 라운드의 중간값에 대해 SHA-1 해쉬 연산을 수행하는 메시지압축부;상기 SHA-1 해쉬 연산의 결과값을 출력하는 데이터출력부; 및상기 데이터확장부와 상기 메시지압축부의 동작 순서를 제어하는 해쉬연산제어부를 포함하되, 상기 해쉬연산제어부는 4번에 걸쳐 XOR 연산한 값을 상기 하나의 32-bit 레지스터에 저장되도록 XOR 연산한 값을 입력하는 입력선택기를 제어하는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산 장치.
- 제1항에 있어서, 상기 데이터확장부는,상기 해쉬 연산할 데이터 및 상기 해쉬 연산을 위한 각 라운드의 중간값의 저장을 위한 메모리;상기 해쉬 연산을 위한 각 라운드의 중간값을 구하는 중간 연산 결과를 저장하는 하나의 32-bit 레지스터;상기 하나의 32-bit 레지스터에 저장된 중간 연산 결과와 상기 메모리에서 읽어온 해쉬 연산을 위한 각 라운드의 중간값을 XOR 연산하는 XOR 연산기;상기 XOR 연산한 값 또는 상기 메모리에 저장된 상기 해쉬 연산할 데이터 및 상기 해쉬 연산을 위한 각 라운드의 중간값 중 하나를 선택하여 상기 하나의 32-bit 레지스터에 입력하는 입력선택기;상기 하나의 32-bit 레지스터의 출력값을 1 bit 회전이동시키기 위한 회전이동연산기; 및상기 1 bit 회전이동시킨 값 또는 상기 메모리로부터 읽어온 데이터 중 하나를 선택하여 상기 해쉬 연산을 위한 각 라운드의 중간값으로 출력하는 출력선택기를 포함하여, 데이터의 확장연산을 저전력으로 수행하는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산 장치.
- 제1항에 있어서, 상기 메시지압축부는,해쉬 연산을 위한 초기값과 상수값을 저장하기 위한 KH부;제1의 데이터를 5 bit 쉬프트한 값, 하기 제2 내지 제4의 32-bit 레지스터에 각각 저장된 제2 내지 제4의 데이터를 F함수 연산한 값, 라운드 상수 값 및 상기 해쉬 연산을 위한 각 라운드의 중간값 중 선택된 하나의 값과 하기 제5의 32-bit 레지스터에 저장된 제5의 데이터를 덧셈 연산하여 저장하는 제1의 32-bit 레지스터;상기 제1의 32-bit 레지스터에 저장된 제1의 데이터를 저장하는 제2의 32-bit 레지스터;상기 제2의 32-bit 레지스터에 저장된 제2의 데이터를 30 bit 쉬프트하여 저장하는 제3의 32-bit 레지스터;상기 제3의 32-bit 레지스터에 저장된 제3의 데이터를 저장하는 제4의 32-bit 레지스터제4의 32-bit 레지스터에 저장된 제4의 데이터를 저장하는 제5의 32-bit 레지스터;상기 제1 및 제2의 32-bit 레지스터의 데이터출력을 각각 쉬프트하는 회전쉬프트기;상기 제2 내지 제4의 32-bit 레지스터의 제2 내지 제4의 데이터들을 F 함수 연산하는 F함수연산기;데이터 패스를 선택하기 위한 복수의 입력선택수단; 및한 클럭 주기마다 4번의 덧셈 연산을 반복 수행하여 상기 제1의 데이터를 계산하는 하나의 덧셈기를 포함하여 구성된 것을 특징으로 하는 저전력 SHA-1 해쉬 연산 장치.
- 제3항에 있어서, 상기 하나의 덧셈기는,상기 제1의 데이터를 5 bit 쉬프트한 값, 하기 제2 내지 제4의 32-bit 레지스터에 각각 저장된 제2 내지 제4의 데이터를 F함수 연산한 값, 라운드 상수 값 및 상기 해쉬 연산을 위한 각 라운드의 중간값 중 선택된 하나의 값과 하기 제5의 32-bit 레지스터에 저장된 제5의 데이터를 덧셈 연산하여 SHA-1 해쉬 연산의 최종 80라운드의 해쉬결과값을 생성하는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산 장치.
- 삭제
- HMAC 연산을 위한 키데이터의 패딩 처리를 위한 키패딩부;상기 패딩된 키데이터와 패딩상수를 XOR 연산하는 XOR 연산부;상기 XOR 연산한 데이터에 암호화할 텍스트를 연접하는 데이터연접부;상기 연접된 데이터의 패딩 처리를 위한 데이터패딩부;상기 패딩된 데이터에 대한 SHA-1 해쉬 연산을 수행하는 SHA-1 해쉬 연산부;상기 SHA-1 해쉬 연산의 결과 또는 상기 암호화할 텍스트를 선택하여 상기 데이터연접부에 인가하는 데이터선택부; 및암호연산의 수행을 위해 필요한 데이터들을 읽어오고, 그 값들을 메모리에 저장하기 위해 상기 키패딩부, 데이터연접부 및 데이터패딩부의 동작을 제어하며, SHA-1 해쉬연산부의 해쉬 연산의 수행 순서 및 연산 결과의 저장을 제어하는 제어부를 포함하여 구성되는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산을 이용한 저전력 HMAC 암호 장치.
- 제6항에 있어서,상기 키패딩부는 내부에 32-bit 단위의 레지스터를 사용해 512-bit single-port 키메모리로 구성되는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산을 이용한 저전력 HMAC 암호 장치.
- 제6항에 있어서,상기 데이터연접부와 상기 데이터 패딩부는 내부에 32-bit 단위의 레지스터를 사용해 512-bit single-port 데이터메모리로 구성되는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산을 이용한 저전력 HMAC 암호 장치.
- 제8항에 있어서,상기 데이터 패딩부는 SHA-1 해쉬 연산 또는 HMAC 연산에 따라 요구되는 데 이터 길이로 데이터 패딩을 수행하는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산을 이용한 저전력 HMAC 암호 장치.
- 제6항에 있어서, 상기 SHA-1 해쉬 연산부는,해쉬 연산할 데이터를 수신하여 전달하는 데이터입력부;하나의 32-bit 레지스터를 이용하여 상기 해쉬 연산할 데이터로 상기 해쉬 연산을 위한 각 라운드의 중간값을 생성하는 데이터확장부;하나의 덧셈기를 이용해 상기 생성된 해쉬 연산을 위한 각 라운드의 중간값에 대해 SHA-1 해쉬 연산을 수행하는 메시지압축부;상기 SHA-1 해쉬 연산의 결과값을 출력하는 데이터출력부; 및상기 데이터확장부와 상기 메시지압축부의 동작 순서를 제어하는 해쉬연산제어부를 포함하여 구성되는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산을 이용한 저전력 HMAC 암호 장치.
- 제10항에 있어서, 상기 데이터확장부는,상기 해쉬 연산할 데이터 및 상기 해쉬 연산을 위한 각 라운드의 중간값의 저장을 위한 메모리;상기 해쉬 연산을 위한 각 라운드의 중간값을 구하는 중간 연산 결과를 저장하는 하나의 32-bit 레지스터;상기 하나의 32-bit 레지스터에 저장된 중간 연산 결과와 상기 메모리에서 읽어온 해쉬 연산을 위한 각 라운드의 중간값을 XOR 연산하는 XOR 연산기;상기 XOR 연산한 값 또는 상기 메모리에 저장된 상기 해쉬 연산할 데이터 및 상기 해쉬 연산을 위한 각 라운드의 중간값 중 하나를 선택하여 상기 하나의 32-bit 레지스터에 입력하는 입력선택기;상기 하나의 32-bit 레지스터의 출력값을 1 bit 회전이동시키기 위한 회전이동연산기; 및상기 1 bit 회전이동시킨 값 또는 상기 메모리에 저장된 상기 해쉬 연산할 데이터 및 상기 해쉬 연산을 위한 각 라운드의 중간값 중 하나를 선택하여 상기 해쉬 연산을 위한 각 라운드의 중간값으로 출력하는 출력선택기를 포함하여 구성되는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산을 이용한 저전력 HMAC 암호 장치.
- 제10항에 있어서, 상기 메시지압축부는,해쉬 연산을 위한 초기값과 라운드 상수값을 저장하기 위한 KH부;제1의 데이터를 5 bit 쉬프트한 값, 하기 제2 내지 제4의 32-bit 레지스터에 각각 저장된 제2 내지 제4의 데이터를 F함수 연산한 값, 라운드 상수 값 및 상기 해쉬 연산을 위한 각 라운드의 중간값 중 선택된 하나의 값과 하기 제5의 32-bit 레지스터에 저장된 제5의 데이터를 덧셈 연산하여 저장하는 제1의 32-bit 레지스터;상기 제1의 32-bit 레지스터에 저장된 제1의 데이터를 저장하는 제2의 32-bit 레지스터;상기 제2의 32-bit 레지스터에 저장된 제2의 데이터를 30 bit 쉬프트하여 저장하는 제3의 32-bit 레지스터;상기 제3의 32-bit 레지스터에 저장된 제3의 데이터를 저장하는 제4의 32-bit 레지스터제4의 32-bit 레지스터에 저장된 제4의 데이터를 저장하는 제5의 32-bit 레지스터;상기 제1 및 제2의 32-bit 레지스터의 데이터출력을 각각 쉬프트하는 회전쉬프트기;상기 제2 내지 제4의 32-bit 레지스터의 제2 내지 제4의 데이터들을 F 함수 연산하는 F함수연산기;데이터 패스를 선택하기 위한 복수의 입력선택수단; 및한 클럭 주기마다 4번의 덧셈 연산을 반복 수행하여 상기 제1의 데이터를 계산하는 하나의 덧셈기를 포함하여 구성되는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산을 이용한 저전력 HMAC 암호 장치.
- 제12항에 있어서,상기 제1 내지 제5의 32 bit 레지스터는 상기 KH부로부터 초기값을 읽어와 저장하는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산 장치를 이용한 저전력 HMAC 암호 장치.
- 제12항에 있어서,상기 KH부에서 상기 라운드 상수값와 초기값을 이용한 80 라운드의 SHA-1 해쉬 연산이 종료된 후에 최종 결과값이 저장되는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산을 이용한 저전력 HMAC 암호 장치.
- 제11항에 있어서,상기 해쉬연산제어부는 4번에 걸쳐 XOR 연산한 값을 상기 하나의 32-bit 레지스터에 저장되도록 상기 입력선택기를 제어하는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산을 이용한 저전력 HMAC 암호 장치.
- 제6항에 있어서,상기 제어부는 SHA-1 해쉬 연산 또는 HMAC 연산을 지정하고, 상기 SHA-1 해쉬 연산 또는 HMAC 연산이 한 번만 수행될지 또는 연속되는 연산인지를 지정하는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산을 이용한 저전력 HMAC 암호 장치.
- 해쉬 연산할 데이터를 수신하여 전달하는 데이터입력부;하나의 32-bit 레지스터를 이용하여 상기 해쉬 연산할 데이터로 해쉬 연산을 위한 각 라운드의 중간값을 생성하는 데이터확장부;하나의 덧셈기를 이용해 상기 생성된 해쉬 연산을 위한 각 라운드의 중간값에 대해 SHA-1 해쉬 연산을 수행하는 메시지압축부;상기 SHA-1 해쉬 연산의 결과값을 출력하는 데이터출력부; 및상기 데이터확장부와 상기 메시지압축부의 동작 순서를 제어하는 해쉬연산제어부를 포함하되, 상기 메시지압축부는, 해쉬 연산을 위한 초기값과 상수값을 저장하기 위한 KH부; 제1의 데이터를 5 bit 쉬프트한 값, 하기 제2 내지 제4의 32-bit 레지스터에 각각 저장된 제2 내지 제4의 데이터를 F함수 연산한 값, 라운드 상수 값 및 상기 해쉬 연산을 위한 각 라운드의 중간값 중 선택된 하나의 값과 하기 제5의 32-bit 레지스터에 저장된 제5의 데이터를 덧셈 연산하여 저장하는 제1의 32-bit 레지스터; 상기 제1의 32-bit 레지스터에 저장된 제1의 데이터를 저장하는 제2의 32-bit 레지스터; 상기 제2의 32-bit 레지스터에 저장된 제2의 데이터를 30 bit 쉬프트하여 저장하는 제3의 32-bit 레지스터; 상기 제3의 32-bit 레지스터에 저장된 제3의 데이터를 저장하는 제4의 32-bit 레지스터; 제4의 32-bit 레지스터에 저장된 제4의 데이터를 저장하는 제5의 32-bit 레지스터; 상기 제1 및 제2의 32-bit 레지스터의 데이터출력을 각각 쉬프트하는 회전쉬프트기; 상기 제2 내지 제4의 32-bit 레지스터의 제2 내지 제4의 데이터들을 F 함수 연산하는 F함수연산기; 데이터 패스를 선택하기 위한 복수의 입력선택수단; 및 한 클럭 주기마다 4번의 덧셈 연산을 반복 수행하여 상기 제1의 데이터를 계산하는 하나의 덧셈기를 포함하고, 상기 하나의 덧셈기는, 상기 제1의 데이터를 5 bit 쉬프트한 값, 하기 제2 내지 제4의 32-bit 레지스터에 각각 저장된 제2 내지 제4의 데이터를 F함수 연산한 값, 라운드 상수 값 및 상기 해쉬 연산을 위한 각 라운드의 중간값 중 선택된 하나의 값과 하기 제5의 32-bit 레지스터에 저장된 제5의 데이터를 덧셈 연산하여 SHA-1 해쉬 연산의 최종 80라운드의 해쉬결과값을 생성하는 것을 특징으로 하는 저전력 SHA-1 해쉬 연산 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070068874A KR100901697B1 (ko) | 2007-07-09 | 2007-07-09 | 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치 |
US12/103,559 US8086864B2 (en) | 2007-07-09 | 2008-04-15 | Low power HMAC encryption apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070068874A KR100901697B1 (ko) | 2007-07-09 | 2007-07-09 | 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090005673A KR20090005673A (ko) | 2009-01-14 |
KR100901697B1 true KR100901697B1 (ko) | 2009-06-08 |
Family
ID=40487227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070068874A KR100901697B1 (ko) | 2007-07-09 | 2007-07-09 | 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8086864B2 (ko) |
KR (1) | KR100901697B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024090770A1 (ko) * | 2022-10-27 | 2024-05-02 | 주식회사 소테리아 | 저전력 쿼터 라운드 연산기 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8175266B2 (en) * | 2008-05-07 | 2012-05-08 | Apple Inc. | System and method of performing authentication |
JP5156540B2 (ja) * | 2008-08-22 | 2013-03-06 | 株式会社日立製作所 | ハッシュ値生成装置 |
JP2010128392A (ja) * | 2008-11-28 | 2010-06-10 | Canon Inc | ハッシュ処理装置及びその方法 |
DE102009002396A1 (de) * | 2009-04-15 | 2010-10-21 | Robert Bosch Gmbh | Verfahren zum Manipulationsschutz eines Sensors und von Sensordaten des Sensors und einen Sensor hierzu |
CN107133018B (zh) * | 2011-12-22 | 2020-12-22 | 英特尔公司 | 执行groestl散列的指令 |
US9960917B2 (en) | 2011-12-22 | 2018-05-01 | Intel Corporation | Matrix multiply accumulate instruction |
US10218496B2 (en) * | 2014-08-04 | 2019-02-26 | Cryptography Research, Inc. | Outputting a key based on an authorized sequence of operations |
US9960909B2 (en) | 2014-12-08 | 2018-05-01 | Open-Silicon Inc. | High speed and low power hashing system and method |
US20180034787A1 (en) * | 2016-08-01 | 2018-02-01 | Vormetric, Inc. | Data encryption key sharing for a storage system |
US10755242B2 (en) * | 2016-09-23 | 2020-08-25 | Intel Corporation | Bitcoin mining hardware accelerator with optimized message digest and message scheduler datapath |
IL250657A0 (en) * | 2017-02-19 | 2017-03-30 | Sella Yaron | Cooperative computation of an authentication code based on a cryptographic hash function |
GB201802582D0 (en) * | 2018-02-16 | 2018-04-04 | Nordic Semiconductor Asa | Protecting cryptographic key data |
US11436022B2 (en) * | 2019-01-29 | 2022-09-06 | Samsung Electronics Co., Ltd. | Semiconductor memory device for hash solution and method of driving the same |
CA3128973A1 (en) | 2019-03-04 | 2020-09-10 | Bhaskar Bhattacharyya | Data compression and communication using machine learning |
KR102319459B1 (ko) * | 2019-11-26 | 2021-10-29 | 주식회사 제이에스전자 | Hmac 기반 통신 방법 및 시스템 |
CN114648319A (zh) * | 2020-12-18 | 2022-06-21 | 深圳比特微电子科技有限公司 | 执行哈希算法的电路、计算芯片、加密货币矿机和方法 |
CN113704791B (zh) * | 2021-09-01 | 2024-03-15 | 北京兆芯电子科技有限公司 | 处理器、以及哈希信息认证码编码方法 |
CN115442026B (zh) * | 2022-11-07 | 2023-03-24 | 苏州浪潮智能科技有限公司 | 一种hmac算法处理***、方法、设备及介质 |
CN118074889A (zh) * | 2024-03-14 | 2024-05-24 | 杭州金智塔科技有限公司 | 基于国密sm3算法和mac算法的数据处理方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100656375B1 (ko) * | 2005-12-10 | 2006-12-11 | 한국전자통신연구원 | 저전력 해쉬함수 암호화 장치 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020032551A1 (en) * | 2000-08-07 | 2002-03-14 | Jabari Zakiya | Systems and methods for implementing hash algorithms |
DE60213762T2 (de) * | 2001-01-12 | 2007-10-04 | Broadcom Corp., Irvine | Implementierung des SHA1 Algorithmusses |
US6829355B2 (en) * | 2001-03-05 | 2004-12-07 | The United States Of America As Represented By The National Security Agency | Device for and method of one-way cryptographic hashing |
US7489779B2 (en) * | 2001-03-22 | 2009-02-10 | Qstholdings, Llc | Hardware implementation of the secure hash standard |
JP4206205B2 (ja) | 2001-03-26 | 2009-01-07 | 株式会社日立製作所 | Sha演算の高速演算回路 |
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 |
US7607012B2 (en) * | 2003-10-01 | 2009-10-20 | Nokia Corporation | Method for securing a communication |
US7921300B2 (en) * | 2003-10-10 | 2011-04-05 | Via Technologies, Inc. | Apparatus and method for secure hash algorithm |
KR20050065976A (ko) * | 2003-12-26 | 2005-06-30 | 한국전자통신연구원 | Sha-1 해쉬값 연산 장치 및 방법 |
KR100581662B1 (ko) | 2005-08-31 | 2006-05-22 | 주식회사 칩스앤미디어 | 알고리즘이 다른 복수의 해쉬 함수 연산을 위한 공통엔진 |
US20080019524A1 (en) * | 2006-06-29 | 2008-01-24 | Kim Moo S | Apparatus and method for low power aes cryptographic circuit for embedded system |
JP4308840B2 (ja) * | 2006-11-08 | 2009-08-05 | Okiセミコンダクタ株式会社 | Sha演算方法およびsha演算装置 |
-
2007
- 2007-07-09 KR KR1020070068874A patent/KR100901697B1/ko not_active IP Right Cessation
-
2008
- 2008-04-15 US US12/103,559 patent/US8086864B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100656375B1 (ko) * | 2005-12-10 | 2006-12-11 | 한국전자통신연구원 | 저전력 해쉬함수 암호화 장치 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024090770A1 (ko) * | 2022-10-27 | 2024-05-02 | 주식회사 소테리아 | 저전력 쿼터 라운드 연산기 |
Also Published As
Publication number | Publication date |
---|---|
US20100031052A1 (en) | 2010-02-04 |
US8086864B2 (en) | 2011-12-27 |
KR20090005673A (ko) | 2009-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100901697B1 (ko) | 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치 | |
US20220138349A1 (en) | Cryptographic architecture for cryptographic permutation | |
US20080019524A1 (en) | Apparatus and method for low power aes cryptographic circuit for embedded system | |
JP4890976B2 (ja) | 暗号処理装置 | |
CN111464308B (zh) | 一种实现多种哈希算法可重构的方法和*** | |
US20070245147A1 (en) | Message authentication code generating device, message authentication code verification device, and message authentication system | |
CN102799800B (zh) | 一种安全加密协处理器及无线传感器网络节点芯片 | |
Chaves et al. | Reconfigurable memory based AES co-processor | |
EP2425580B1 (en) | Secure hashing device using multiple different sha variants and related methods | |
CN104468089A (zh) | 数据保护装置及其方法 | |
KR20190039850A (ko) | 비트-믹서들로부터 안전한 해시 함수를 구성하는 방법 | |
JP5143817B2 (ja) | ハッシュ暗号装置及び方法 | |
Shi et al. | Hardware implementation of hash functions | |
JP2004054128A (ja) | 暗号化装置 | |
JP2010107947A (ja) | Shaアルゴリズム基盤のメッセージスケジュール演算方法、メッセージ圧縮演算方法及びこれを行う暗号装置 | |
Khelladi et al. | On security issues in embedded systems: challenges and solutions | |
Fan et al. | A secure IoT firmware update scheme against SCPA and DoS attacks | |
Hämäläinen et al. | Review of hardware architectures for advanced encryption standard implementations considering wireless sensor networks | |
JP2004078053A (ja) | 暗号化装置 | |
Gauri et al. | Design and Implementation of a Fully Pipelined and Parameterizable Hardware Accelerator for BLAKE2 Cryptographic Hash Function in FPGA | |
Sumathi et al. | Study of Data Security Algorithms using Verilog HDL. | |
Abbas et al. | Dictionary Attack on TRUECRYPT with RIVYERA S3-5000 | |
Wang et al. | Design and implementation of a SoC-based security coprocessor and program protection mechanism for WSN | |
Sumathi et al. | Performance comparison of data security algorithms | |
Kim et al. | Efficient implementation of the keyed-hash message authentication code based on SHA-1 algorithm for mobile trusted computing |
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: 20120531 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |