KR20050087271A - 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치 - Google Patents

가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치 Download PDF

Info

Publication number
KR20050087271A
KR20050087271A KR1020040012992A KR20040012992A KR20050087271A KR 20050087271 A KR20050087271 A KR 20050087271A KR 1020040012992 A KR1020040012992 A KR 1020040012992A KR 20040012992 A KR20040012992 A KR 20040012992A KR 20050087271 A KR20050087271 A KR 20050087271A
Authority
KR
South Korea
Prior art keywords
key
key data
output
round
data
Prior art date
Application number
KR1020040012992A
Other languages
English (en)
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 KR1020040012992A priority Critical patent/KR20050087271A/ko
Priority to US11/032,118 priority patent/US7606365B2/en
Priority to DE102005010779A priority patent/DE102005010779B4/de
Priority to JP2005054965A priority patent/JP4740611B2/ja
Publication of KR20050087271A publication Critical patent/KR20050087271A/ko

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60LPROPULSION OF ELECTRICALLY-PROPELLED VEHICLES; SUPPLYING ELECTRIC POWER FOR AUXILIARY EQUIPMENT OF ELECTRICALLY-PROPELLED VEHICLES; ELECTRODYNAMIC BRAKE SYSTEMS FOR VEHICLES IN GENERAL; MAGNETIC SUSPENSION OR LEVITATION FOR VEHICLES; MONITORING OPERATING VARIABLES OF ELECTRICALLY-PROPELLED VEHICLES; ELECTRIC SAFETY DEVICES FOR ELECTRICALLY-PROPELLED VEHICLES
    • B60L8/00Electric propulsion with power supply from forces of nature, e.g. sun or wind
    • B60L8/006Converting flow of air into electric energy, e.g. by using wind turbines
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60KARRANGEMENT OR MOUNTING OF PROPULSION UNITS OR OF TRANSMISSIONS IN VEHICLES; ARRANGEMENT OR MOUNTING OF PLURAL DIVERSE PRIME-MOVERS IN VEHICLES; AUXILIARY DRIVES FOR VEHICLES; INSTRUMENTATION OR DASHBOARDS FOR VEHICLES; ARRANGEMENTS IN CONNECTION WITH COOLING, AIR INTAKE, GAS EXHAUST OR FUEL SUPPLY OF PROPULSION UNITS IN VEHICLES
    • B60K16/00Arrangements in connection with power supply of propulsion units in vehicles from forces of nature, e.g. sun or wind
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60KARRANGEMENT OR MOUNTING OF PROPULSION UNITS OR OF TRANSMISSIONS IN VEHICLES; ARRANGEMENT OR MOUNTING OF PLURAL DIVERSE PRIME-MOVERS IN VEHICLES; AUXILIARY DRIVES FOR VEHICLES; INSTRUMENTATION OR DASHBOARDS FOR VEHICLES; ARRANGEMENTS IN CONNECTION WITH COOLING, AIR INTAKE, GAS EXHAUST OR FUEL SUPPLY OF PROPULSION UNITS IN VEHICLES
    • B60K16/00Arrangements in connection with power supply of propulsion units in vehicles from forces of nature, e.g. sun or wind
    • B60K2016/006Arrangements in connection with power supply of propulsion units in vehicles from forces of nature, e.g. sun or wind wind power driven
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60YINDEXING SCHEME RELATING TO ASPECTS CROSS-CUTTING VEHICLE TECHNOLOGY
    • B60Y2200/00Type of vehicle
    • B60Y2200/90Vehicles comprising electric prime movers
    • B60Y2200/91Electric vehicles
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02EREDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
    • Y02E10/00Energy generation through renewable energy sources
    • Y02E10/70Wind energy
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02TCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
    • Y02T10/00Road transport of goods or passengers
    • Y02T10/60Other road transportation technologies with climate change mitigation effect
    • Y02T10/7072Electromobility specific charging systems or methods for batteries, ultracapacitors, supercapacitors or double-layer capacitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Sustainable Development (AREA)
  • Sustainable Energy (AREA)
  • Power Engineering (AREA)
  • Transportation (AREA)
  • Mechanical Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호 라운드 키와 복호 라운드 키를 선택적으로 발생하는 키 스케쥴 장치가 개시된다. 본 발명에 의한 키 스케쥴 장치는 키 저장부, 키 연산부, 및 키 출력부를 구비하는 것을 특징으로 한다. 키 저장부는 로드 인에이블 신호들과 클럭 신호에 응답하여 연산 키 데이터들과 저장 키 데이터들 중 어느 하나를 입력 키 데이터들로서 수신하여 저장하고, 저장된 상기 입력 키 데이터들을 저장 키 데이터들로서 출력한다. 키 연산부는 연산 제어 신호들에 응답하여 저장 키 데이터들을 연산하고 그 연산 결과로서 연산 키 데이터들을 출력한다. 키 출력부는 출력 제어 신호들에 응답하여 입력 키 데이터들과 저장 키 데이터들 중 일부를 선택하여 암호 라운드 키 또는 복호 라운드 키로서 출력한다. 본 발명에 의한 키 스케쥴 장치는 초기 라운드 키의 길이에 대응하는 암호 라운드 키와 복호 라운드 키를 선택적으로 발생하고, 라운드 키 생성 동작에 필요한 치환 테이블의 수를 감소시킬 수 있는 장점이 있다.

Description

가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호 라운드 키와 복호 라운드 키를 선택적으로 발생하는 키 스케쥴 장치{Key schedule apparatus for generating an encryption round key and a decryption round key selectively corresponding to initial round key having variable key length}
본 발명은 AES(advanced encryption standards) 알고리즘을 이용하는 암호화/복호화 장치에 관한 것으로서, 특히, 상기 암호화/복호화 장치의 암호화 및 복호화 동작에 필요한 라운드 키를 생성하는 키 스케쥴 장치에 관한 것이다.
최근, AES(advanced encryption standard) 알고리즘이 DES(data encryption standard) 알고리즘에 이어 새로운 암호화 표준으로서 제시됨에 따라, 보안을 필요로 하는 응용 제품에서 AES 알고리즘이 적용되고 있다. AES 알고리즘은 실시간으로 입력되는 데이터 스트림을 블록별로 나누어 암호화하거나 또는 복호화하는 블록 사이퍼(block cipher) 알고리즘으로서 한 번에 처리 가능한 한 블록의 길이는 128비트이다. 이러한 AES 알고리즘은 소프트웨어로 구현될 수도 있지만, 외부 공격에 대한 안전성을 보장하기 위해서는 하드웨어로 구현되는 것이 바람직하다. 특히, 고속 동작이 요구되는 응용 제품에서는 하드웨어로 구현된 암호화/복호화 장치가 널리 사용되고 있다.
통상적으로 AES 알고리즘을 이용한 암호화는 서브바이트(SubBytes) 변환, 쉬프트로우(ShiftRows) 변환, 믹스칼럼(MixColumns) 변환, 및 애드라운드키(AddRoundKey) 변환 과정들에 의해 수행된다. 또, AES 알고리즘을 이용한 복호화는 역쉬프트로우(InvShiftRows) 변환, 역서브바이트(InvSubBytes) 변환, 역믹스칼럼(InvMixColumns) 변환, 및 애드라운드키(AddRoundKey) 변환 과정들에 의해 수행된다. 암호화 또는 복호화를 위한 상기 변환 과정들이 순차적으로 한 번씩 모두 수행될 때 1라운드가 완료되고, 상기 라운드가 복수회 반복적으로 수행됨으로써, 데이터의 암호화 또는 복호화가 이루어진다.
암호화 및 복호화 과정 중 상기 애드라운드키 변환 과정에서는 이전의 변환 과정들에서 처리된 블록 단위의 데이터들이 키 스케쥴러에 의해 생성된 라운드 키들과 혼합됨으로써 최종적으로 암호화되거나 또는 복호화된 데이터 스트림으로 변환된다. 여기에서, 상기 키 스케쥴러에 의한 라운드 키의 생성을 위해, 상기 키 스케쥴러에 입력되는 초기 입력 키는 128비트, 192비트, 256비트의 3종류의 키 길이를 갖는다. 상기 초기 입력 키의 길이가 길어질수록 데이터는 더욱 높은 수준으로 암호화될 수 있다. 또, 상기 초기 입력 키의 길이에 따라 상기 라운드의 반복 횟수가 결정된다. 즉, 상기 암호화/복호화 장치는 상기 초기 입력 키의 길이가 128비트일 때 10 라운드, 192비트일 때 12 라운드, 256비트일 때 14 라운드를 각각 반복적으로 수행한다. 이 때, 상기 키 스케쥴러는 상기 암호화/복호화 장치가 매 라운드를 수행할 때마다 상기 라운드 키를 제공할 필요가 있다.
일반적으로, 상기 키 스케쥴러는 온 더 플라이(on-the-fly) 방식 또는 프리 컴퓨테이션(pre-computation) 방식으로 구현될 수 있다. 온 더 플라이 방식은 데이터의 암호화 또는 복호화 과정과 동시에 라운드 키를 생성하는 것으로서, 매 라운드마다 필요한 라운드 키를 그때그때 생성하여 출력하는 것이다. 프리 컴퓨테이션 방식은 전체 라운드들에서 사용될 라운드 키들을 미리 생성하여 메모리에 저장해 두고, 각 라운드마다 필요한 라운드 키를 상기 메모리로부터 독출하여 출력하는 것이다.
그러나 프리 컴퓨테이션 방식은 미리 생성된 라운드 키들을 저장하기 위한 대용량의 메모리가 필요하고, 각 라운드마다 메모리로부터 라운드 키가 독출되어야 하기 때문에 동작 속도가 감소되는 단점이 있다. 여기에서, 상기 메모리에 저장되는 전체 라운드 키들의 크기는 암호화/복호화 처리되는 한 블록의 비트 수(128비트×(라운드 수 + 1)) 이다. 예를 들어, 상기 라운드 키가 128비트인 경우 라운드 수는 10이므로, 상기 메모리에 저장되는 전체 라운드 키들의 크기는 1408(128×11)비트이다. 이와 유사하게, 상기 라운드 키가 192비트, 256비트인 경우에는 상기 전체 라운드 키들의 크기가 각각 1644(128×13)비트, 1920(128×15)비트이다.
상기 라운드 키들을 저장하는 장치로서 레지스터가 사용된다고 가정하면, 라운드 키의 길이가 256비트인 경우 최소 15000 게이트 이상의 하드웨어가 사용되어야 한다. 따라서 하드웨어의 낭비를 최소화하면서 최고의 동작 성능을 얻기 위해서는 키 스케쥴러가 온 더 플라이 방식으로 구현될 필요가 있다. 키 스케쥴러가 온 더 플라이 방식으로 구현될 경우 데이터의 암호화/복호화 동작과 동시에 키 생성을 하므로 전류 소비가 증가되기는 하지만, 전체 라운드 키들을 저장하는 대용량의 메모리를 추가로 구비하지 않아도 되고, 하나의 라운드 키를 저장하는 공간만 구비하면 되므로, 하드웨어의 낭비를 최소화할 수 있다.
도 1은 종래 기술에 따른 키 스케쥴 장치를 구비하는 AES 알고리즘을 이용한 암호화/복호화 장치를 나타내는 블록도이다. 도 1을 참고하면, 암호화/복호화 장치(10)는 제어부(11), 암호 키 스케쥴 장치(12), 복호 키 스케쥴 장치(13), 및 블록 라운드 처리부(14)를 포함한다. 상기 암호 키 스케쥴 장치(12)는 외부로부터 수신되는 제1 초기 라운드 키(E_INKEY)로부터 암호 라운드 키(R_KEY)를 생성하여 상기 블록 라운드 처리부(14)에 출력한다. 상기 복호 키 스케쥴 장치(13)는 외부로부터 수신되는 제2 초기 라운드 키(D_INKEY)로부터 복호 라운드 키(IR_KEY)를 생성하여 상기 블록 라운드 처리부(14)에 출력한다.
상기와 같이, 종래 기술에 따른 암호 키 스케쥴 장치와 복호 키 스케쥴 장치는 각각 별개의 하드웨어로 구현되므로, 그 제조비용과 크기가 증가하는 문제점이 있다.
한편, 상기 암호 키 스케쥴 장치(12)와 상기 복호 키 스케쥴 장치(13)는 암호 라운드 키와 복호 라운드 키를 생성할 때 통상적으로 워드 치환(word substitution) 과정을 수행한다. 워드 치환 과정에서 상기 암호 키 스케쥴 장치와 상기 복호 키 스케쥴 장치는 32비트의 키 데이터를 4개의 워드(8비트)로 분리하고, 4개의 치환 테이블(substitution table)들을 이용하여 상기 키 데이터의 각 워드들을 소정 값들로 치환한다. 여기에서, 상기 제1 초기 라운드 키(E_INKEY)의 길이와 상기 제2 초기 라운드 키(D_INKEY)의 길이가 각각 256비트인 경우, 상기 암호 키 스케쥴 장치(12)와 상기 복호 키 스케쥴 장치(13)는 상기 워드 치환 과정을 1 클럭 사이클 동안 2번 수행해야 한다. 따라서 상기 암호 키 스케쥴 장치와 상기 복호 키 스케쥴 장치는 각각 8개의 동일한 치환 테이블들을 구비해야 한다. 상기 치환 테이블은 그 구현 방식에 따라 800 게이트들에서 2200 게이트들의 하드웨어로 구현될 수 있다. 결국, 8개의 치환 테이블들을 구현하기 위해서 6400 게이트들에서 17600 게이트들의 하드웨어가 요구되므로, 암호 키 스케쥴 장치와 복호 키 스케쥴 장치에 의해 전체 암호화/복호화 장치의 크기가 증가하게 되는 문제점이 있다.
본 발명이 이루고자하는 기술적 과제는, 단일의 하드웨어로 구현되어 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호 라운드 키와 복호 라운드 키를 선택적으로 발생하고, 라운드 키 생성 동작에 필요한 치환 테이블의 수를 감소시켜 전체 크기를 감소시킬 수 있는 키 스케쥴 장치를 제공하는데 있다.
상기 기술적 과제를 달성하기 위한 본 발명에 따른 키 스케쥴 장치는, 암호화/복호화 장치의 암호화 또는 복호화 동작에 필요한 라운드 키를 생성하는 키 스케쥴 장치에 있어서, 키 저장부, 키 연산부, 및 키 출력부를 구비하는 것을 특징으로 한다. 키 저장부는 로드 인에이블 신호들과 클럭 신호에 응답하여 연산 키 데이터들과 저장 키 데이터들 중 어느 하나를 입력 키 데이터들로서 수신하여 저장하고, 저장된 상기 입력 키 데이터들을 저장 키 데이터들로서 출력한다. 키 연산부는 연산 제어 신호들에 응답하여 저장 키 데이터들을 연산하고 그 연산 결과로서 연산 키 데이터들을 출력한다. 키 출력부는 출력 제어 신호들에 응답하여 입력 키 데이터들과 저장 키 데이터들 중 일부를 선택하여 암호 라운드 키 또는 복호 라운드 키로서 출력한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
도 2는 본 발명에 따른 키 스케쥴 장치를 구비하는 암호화/복호화 장치(600)를 나타내는 블록도이다. 도 2를 참고하면, 상기 암호화/복호화 장치(600)는 제어부(601), 키 스케쥴 장치(700), 및 블록 라운드 처리부(602)를 포함한다. 상기 제어부(601)는 외부로부터 수신되는 키 정보 신호(KEY_LEG)에 기초하여 상기 키 스케쥴 장치(700)에 입력되는 초기 라운드 키의 길이를 판단한다. 또, 상기 제어부(601)는 외부로부터 수신되는 모드 결정 신호(ENC_DEC)에 기초하여 암호 동작 모드인지 또는 복호 동작 모드인지를 판단한다. 상기 제어부(601)는 상기 판단 결과들에 따라 클럭 신호(CLK), 로드 인에이블 신호들(LD1,LD1B∼LD4,LD4B), 내부 선택 신호들(M1∼M4), 출력 선택 신호들(S1, S2), 연산 제어 신호들(P1∼P4), 및 라운드 제어신호(RCTL)를 출력한다.
상기 키 스케쥴 장치(700)는 외부로부터 제1 내지 제3 초기 라운드 키들(EIKEY1∼EIKEY3) 중 어느 하나를 수신한다. 상기 제1 초기 라운드 키(EIKEY1)의 길이는 128비트이고, 상기 제2 초기 라운드 키(EIKEY2)의 길이는 192비트이고, 상기 제3 초기 라운드 키(EIKEY3)의 길이는 256비트이다. 상기 키 스케쥴 장치(700)는 상기 클럭 신호(CLK), 상기 로드 인에이블 신호들(LD1,LD1B∼LD4,LD4B), 상기 내부 선택 신호들(M1∼M4), 상기 출력 선택 신호들(S1, S2), 및 상기 연산 제어 신호들(P1∼P4)에 응답하여 제1 내지 제3 암호 라운드 키들(ERKEY1∼ERKEY3) 중 어느 하나 또는 상기 제1 내지 제3 복호 라운드 키들(DRKEY1∼DRKEY3) 중 어느 하나를 발생한다.
여기에서, 상기 초기 라운드 키의 길이에 따라 상기 블록 라운드 처리부(602)가 암호화 또는 복호화를 위해 반복해야 할 라운드의 수와, 상기 키 스케쥴 장치(700)에 의해 발생될 암호 라운드 키 또는 복호 라운드 키의 개수가 결정된다.
즉, 상기 키 스케쥴 장치(700)는 상기 제1 초기 라운드 키(EIKEY1)를 수신하면, 10라운드 동안 10개의 제1 암호 라운드 키(ERKEY1)들 또는 10개의 제1 복호 라운드 키(DRKEY1)들을 발생한다. 또, 상기 키 스케쥴 장치(700)는 상기 제2 초기 라운드 키(EIKEY2)를 수신하면, 12라운드 동안 12개의 제2 암호 라운드 키(ERKEY2)들 또는 12개의 제2 복호 라운드 키(DRKEY2)들을 발생한다. 상기 키 스케쥴 장치(700)는 상기 제3 초기 라운드 키(EIKEY3)를 수신하면 14라운드 동안 14개의 제3 암호 라운드 키(ERKEY3)들 또는 14개의 상기 제3 복호 라운드 키(DRKEY3)들을 발생한다. 여기에서, 상기 블록 라운드 처리부(602)에 의해 처리되는 하나의 데이터 블록 당 비트 수가 128비트라고 가정할 때, 상기 키 스케쥴 장치(700)가 각 라운드 마다 발생하는 상기 제1 내지 제3 암호 라운드 키들(ERKEY1∼ERKEY3) 또는 상기 제1 내지 제3 복호 라운드 키들(DRKEY1∼DRKEY3)의 비트수는 각각 128비트이다.
상기 블록 라운드 처리부(602)는 상기 제1 내지 제3 초기 라운드 키들(EIKEY1∼EIKEY3) 중 어느 하나와, 상기 제1 내지 상기 제3 암호 라운드 키들(ERKEY1∼ERKEY3) 중 어느 하나 또는 상기 제1 내지 상기 제3 복호 라운드 키들(DRKEY1∼DRKEY3) 중 어느 하나를 수신한다. 상기 블록 라운드 처리부(602)는 상기 라운드 제어신호(RCTL)에 응답하여 입력 스트림 데이터(SDAT_IN)를 블록별로 나누고, 수신된 암호 라운드 키(ERKEY1 또는 ERKEY2 또는 ERKEY3) 또는 복호 라운드 키(DRKEY1 또는 DRKEY2 또는 DRKEY3)와 혼합하여 암호화하거나 또는 복호화하고 출력 스트림 데이터(SDAT_OUT)를 출력한다.
여기에서, 상기 블록 라운드 처리부(602)는 암호화 또는 복호화를 위한 라운드를 복수회 반복적으로 수행하고, 상기 키 스케쥴 장치(700)는 상기 블록 라운드 처리부(602)의 각 라운드마다 필요한 상기 암호 라운드 키 또는 상기 복호 라운드 키를 그때그때 생성하여 상기 블록 라운드 처리부(602)에 제공한다.
도 3은 본 발명의 일실시예에 따른 키 스케쥴 장치를 상세히 나타내는 블록도이다. 도 3을 참고하면, 상기 키 스케쥴 장치(700)는 키 저장부(701), 키 연산부(702), 및 키 출력부(703)를 포함한다.
상기 키 저장부(701)는 제1 내지 제8 로드 인에이블 회로들(711∼718)과 제1 내지 제8 레지스터들(721∼728)을 포함한다. 상기 제1 내지 제8 로드 인에이블 회로들(711∼718)은 로드 인에이블 신호들(LD1, LD1B∼LD4, LD4B)에 응답하여, 초기 키 데이터들(w[0]∼w[7]), 연산 키 데이터들(c[8m]∼c[8m+7])(m은 자연수), 및 저장 키 데이터들(r[8n]∼r[8n+7])(n은 정수) 중 어느 하나를 선택하여 입력 키 데이터들(w[8n]∼w[8n+7])(n은 정수)로서 각각 출력한다. 여기에서, 상기 초기 키 데이터들(w[0]∼w[7])이 상기 제1 내지 제8 로드 인에이블 회로들(711∼718)에 입력될 때, 상기 키 연산부(702)는 상기 연산 키 데이터들(c[8m]∼c[8m+7])을 출력하지 않는다.
또, 상기 제1 내지 제8 로드 인에이블 회로들(711∼718)에 입력되는 키 데이터들의 수는 상기 키 스케쥴 장치(700)에 입력되는 초기 라운드 키에 따라 결정된다. 좀 더 상세하게는, 상기 제1 초기 라운드 키(EIKEY1)가 초기 키 데이터들(w[0]∼w[3])을 포함하고, 상기 제2 초기 라운드 키(EIKEY2)가 초기 키 데이터들(w[0]∼w[5])을 포함하고, 상기 제3 초기 라운드 키(EIKEY3)가 초기 키 데이터들(w[0]∼w[7])을 포함한다. 따라서 상기 키 스케쥴 장치(700)에 상기 제1 초기 라운드 키(EIKEY1)가 입력될 때, 상기 초기 키 데이터들(w[0]∼w[3])이 상기 제1 내지 제4 로드 인에이블 회로들(711∼714)에 입력된다. 또, 상기 키 스케쥴 장치(700)에 상기 제2 초기 라운드 키(EIKEY2)가 입력될 때, 상기 초기 키 데이터들(w[0]∼w[5])이 상기 제1 내지 제6 로드 인에이블 회로들(711∼716)에 입력된다. 또, 상기 키 스케쥴 장치(700)에 상기 제3 초기 라운드 키(EIKEY3)가 입력될 때, 상기 초기 키 데이터들(w[0]∼w[7])이 상기 제1 내지 제8 로드 인에이블 회로들(711∼718)에 입력된다.
상기 로드 인에이블 신호들(LD1, LD1B∼LD4, LD4B)은 각 쌍들은 두 개의 로드 인에이블 회로들에 인가된다. 즉, 상기 로드 인에이블 신호들(LD1, LD1B)은 상기 제1 및 제2 로드 인에이블 회로들(711, 712)에 인가되고, 상기 로드 인에이블 신호들(LD2, LD2B)은 상기 제3 및 제4 로드 인에이블 회로들(713, 714)에 인가된다. 또, 상기 로드 인에이블 신호들(LD3, LD3B)은 상기 제5 및 제6 로드 인에이블 회로들(715, 716)에 인가되고, 상기 로드 인에이블 신호들(LD4, LD4B)은 상기 제7 및 제8 로드 인에이블 회로들(717, 718)에 인가된다.
상기 제1 내지 제8 레지스터들(721∼728)은 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[8n]∼w[8n+7])을 각각 저장하고, 저장된 상기 입력 키 데이터들(w[8n]∼w[8n+7])을 상기 저장 키 데이터들(r[8n]∼r[8n+7])로서 각각 출력한다. 상기 제1 내지 제8 로드 인에이블 회로들(711∼718)과 상기 제1 내지 제8 레지스터들(721∼728)은 도 4를 참고하여 좀 더 상세히 후술된다.
상기 키 연산부(702)는 제1 내지 제8 체인 연산기들(731∼738), 독립 연산기(739), 제1 내지 제3 선택 회로들(741∼743), 워드 로테이션부(751), 워드 치환부(752), 및 라운드 상수 발생기(753)를 포함한다.
상기 제1 내지 제8 체인 연산기들(731∼738)은 상호 직렬 연결되고, 상기 제1 내지 제8 레지스터들(721∼728)에 대응하게 각각 배치되어, 상기 저장 키 데이터들(r[8n]∼r[8n+7])을 각각 수신한다. 상기 제1 내지 제8 체인 연산기들(731∼738)은 상기 저장 키 데이터들(r[8n]∼r[8n+7])과 변환 키 데이터(SUC)에 응답하여 상기 연산 키 데이터들(c[8m]∼c[8m+7])을 각각 출력한다. 이를 좀 더 상세히 설명하면, 상기 제1 체인 연산기(731)는 변환 키 데이터(SUC)를 더 수신하고, 상기 제2 내지 제8 체인 연산기들(732∼738)은 각각 상기 제1 내지 제7 체인 연산기들(731∼737)로부터 상기 연산 키 데이터들(c[8m]∼c[8m+6])을 더 수신한다. 상기 제1 내지 제8 체인 연산기들(731∼738)은 바람직하게 배타적 OR 연산 동작을 수행한다. 즉, 상기 제1 체인 연산기(731)는 상기 저장 키 데이터(r[8n])와 상기 변환 키 데이터(SUC)를 배타적 OR 연산하고, 그 연산 결과로서 상기 연산 키 데이터(c[8m])를 출력한다. 상기 제2 내지 제8 체인 연산기들(732∼738)은 상기 저장 키 데이터들(r[8n+1]∼r[8n+7])과 상기 연산 키 데이터들(c[8m]∼c[8m+6])을 각각 배타적 OR 연산하고, 그 연산 결과로서 상기 연산기 키 데이터들(c[8m+1]∼c[8m+7])을 출력한다.
상기 독립 연산기(739)는 치환 키 데이터(SUB)와 라운드 상수(RNC)를 배타적 OR 연산하여 상기 변환 키 데이터(SUC)를 출력한다.
상기 제1 선택 회로(741)는 제어부(601, 도 2참고)로부터 수신되는 연산 제어 신호(P1)에 응답하여 상기 치환 키 데이터(SUB)와 상기 연산 키 데이터(c[8m+3]) 중 어느 하나를 상기 제5 체인 연산기(735)에 출력한다. 좀 더 상세히 설명하면, 상기 제1 선택 회로(741)는 상기 연산 제어 신호(P1)가 인에이블될 때, 상기 치환 키 데이터(SUB)를 상기 제5 체인 연산기(735)에 출력하고, 상기 연산 제어 신호(P1)가 디세이블될 때 상기 연산 키 데이터(c[8m+3])를 상기 제5 체인 연산기(735)에 출력한다. 또, 상기 제2 선택 회로(742)는 상기 제어부(601)로부터 수신되는 연산 제어 신호들(P2∼P3)에 응답하여 출력 키 데이터들(x3, x5, x7) 중 어느 하나를 상기 워드 로테이션부(751)에 출력한다. 좀 더 상세히 설명하면, 상기 연산 제어 신호들(P2, P3)이 모두 디세이블될 때, 상기 제2 선택 회로(742)는 상기 출력 키 데이터(x3)를 상기 워드 로테이션부(751)에 출력한다. 상기 연산 제어 신호(P2)가 인에이블 되고 상기 연산 제어 신호(P3)가 디세이블 될 때, 상기 제2 선택 회로(742)는 상기 출력 키 데이터(x5)를 상기 워드 로테이션부(751)에 출력한다. 또, 상기 연산 제어 신호(P2)가 디세이블 되고 상기 연산 제어 신호(P3)가 인에이블 될 때, 상기 제2 선택 회로(742)는 상기 출력 키 데이터(x7)를 상기 워드 로테이션부(751)에 출력한다. 상기 제3 선택 회로(743)는 상기 제어부(601)로부터 수신되는 연산 제어 신호(P4)에 응답하여 상기 연산 키 데이터(c[8m+3])와 로테이션 키 데이터(ROT) 중 어느 하나를 상기 워드 치환부(752)에 출력한다. 즉, 상기 제3 선택 회로(743)는 상기 연산 제어 신호(P4)가 인에이블될 때 상기 연산 키 데이터(c[8m+3])를 출력하고, 상기 연산 제어 신호(P4)가 디세이블될 때 상기 로테이션 키 데이터(ROT)를 출력한다. 상기 제1 내지 제3 선택 회로들(741∼743)은 각각 멀티플렉서로 구현될 수 있다.
상기 워드 로테이션부(751)는 상기 제2 선택 회로(742)로부터 상기 출력 키 데이터들(x3, x5, x7) 중 어느 하나를 수신한다. 상기 워드 로테이션부(751)는 수신된 상기 출력 키 데이터(x3 또는 x5 또는 x7)의 비트들을 8비트 만큼 로테이션하고, 상기 로테이션 키 데이터(ROT)를 출력한다. 여기에서, 상기 워드 로테이션부(751)의 동작은 본 발명의 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있으므로 상기 워드 로테이션부(751)의 상세한 동작 설명은 생략된다.
다음으로, 상기 워드 치환부(752)는 상기 제3 선택 회로(743)로부터 상기 연산 키 데이터(c[8m+3])와 상기 로테이션 키 데이터(ROT) 중 어느 하나를 수신한다. 상기 워드 치환부(752)는 상기 연산 키 데이터(c[8m+3])와 상기 로테이션 키 데이터(ROT) 중 수신된 어느 하나를 치환하여, 상기 치환 키 데이터(SUB)를 출력한다. 여기에서, 상기 워드 치환부(752)는 도시되지 않았지만 내부에 4개의 치환 테이블들을 포함한다. 상기 워드 치환부(752)는 상기 연산 키 데이터(c[8m+3])와 상기 로테이션 키 데이터(ROT) 중 수신된 어느 하나를 상기 4개의 치환 테이블들에 포함된 소정 값들로 각각 치환한다. 상기 라운드 상수 발생기(753)는 상기 라운드 상수(RNC)를 발생한다.
상기 키 출력부(703)는 제1 내지 제8 내부 선택 회로들(761∼768)과 출력 선택부(770)를 포함한다. 상기 제1 내지 제8 내부 선택 회로들(761∼768)은 상기 제어부(601)로부터 수신되는 상기 내부 선택 신호들(M1∼M4)에 응답하여 상기 입력 키 데이터들(w[8n]∼w[8n+7])과 상기 저장 키 데이터들(r[8n]∼r[8n+7]) 중 어느 하나를 선택하여, 출력 키 데이터들(x0∼x7)로서 각각 출력한다. 여기에서, 상기 내부 선택 신호들(M1∼M4)은 각각 두 개의 내부 선택 회로들에 입력된다. 즉, 상기 제1 및 제2 내부 선택 회로들(761, 762)에 상기 내부 선택 신호(M1)가 입력되고, 상기 제3 및 제4 내부 선택 회로들(763, 764)에 상기 내부 선택 신호(M2)가 입력된다. 또, 상기 제5 및 제6 내부 선택 회로들(765, 766)에 상기 내부 선택 신호(M3)가 입력되고, 상기 제7 및 제8 내부 선택 회로들(767, 768)에 상기 내부 선택 신호(M4)가 입력된다.
상기 제1 및 제2 내부 선택 회로들(761, 762)은 상기 내부 선택 신호(M1)가 인에이블될 때 상기 입력 키 데이터들(w[8n], w[8n+1])을 상기 출력 키 데이터들(x0, x1)로서 각각 출력한다. 또, 상기 제1 및 제2 내부 선택 회로들(761, 762)은 상기 내부 선택 신호(M1)가 디세이블될 때 상기 저장 키 데이터들(r[8n], r[8n+1])을 상기 출력 키 데이터들(x0, x1)로서 각각 출력한다. 이와 유사하게, 상기 제3 내지 제8 내부 선택 회로들(763∼768)은 상기 내부 선택 신호들(M2∼M4)이 인에이블될 때 상기 입력 키 데이터들(w[8n+2]∼w[8n+7])을 상기 출력 키 데이터들(x3∼x7)로서 각각 출력한다. 또, 상기 제3 내지 제8 내부 선택 회로들(763∼768)은 상기 내부 선택 신호들(M2∼M4)이 디세이블될 때 상기 저장 키 데이터들(r[8n+2]∼r[8n+7])을 상기 출력 키 데이터들(x3∼x7)로서 각각 출력한다. 여기에서, 상기 제1 내지 제8 내부 선택 회로들(761∼768)은 각각 멀티플렉서로 구현될 수 있다.
상기 출력 선택부(770)는 상기 제어부(601)로부터 수신되는 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 키 데이터들(x0∼x7) 중 일부를 선택하여 제1 내지 제3 암호 라운드 키들(ERKEY1∼ERKEY3) 중 어느 하나 또는 제1 내지 제3 복호 라운드 키들(DRKEY1∼DRKEY3) 중 어느 하나로서 출력한다. 상기 출력 선택부(770)는 도 5를 참고하여 좀 더 상세히 후술된다.
도 4는 도 3에 도시된 로드 인에이블 회로들과 레지스터들을 상세히 나타내는 도면이다. 도 4에서는 상기 제1 및 제2 로드 인에이블 회로들(711, 712)과 상기 제1 및 제2 레지스터들(721, 722)이 도시되어 있다. 상기 제3 내지 제8 로드 인에이블 회로들(713∼718)의 구성 및 구체적인 동작 설명은 상기 제1 및 제2 로드 인에이블 회로들(711, 712)과 유사하므로 생략된다. 또, 상기 제3 내지 제8 레지스터들(723∼728)의 구성 및 구체적인 동작 설명은 상기 제1 및 제2 레지스터들(721, 722)과 유사하므로 생략된다.
도 4를 참고하면, 상기 제1 로드 인에이블 회로(711)는 AND 게이트들(71, 73)과 OR 게이트(81)를 포함하고, 상기 제2 로드 인에이블 회로(712)는 AND 게이트들(72, 74)과 OR 게이트(82)를 포함한다. 상기 AND 게이트들(71, 72)은 상기 로드 인에이블 신호(LD1)와 상기 초기 키 데이터들(w[0], w[1])(또는 상기 연산 키 데이터들(c[8m], c[8m+1]))에 응답하여 제1 논리 신호들(T1, T2)을 각각 출력한다. 또, 상기 AND 게이트들(73, 74)은 반전된 로드 인에이블 신호(LD1B)와 저장 키 데이터들(r[8n], r[8n+1])에 응답하여 제2 논리 신호들(T3, T4)을 출력한다. 상기 OR 게이트(81)는 상기 제1 논리 신호(T1)와 상기 제2 논리 신호(T3)에 응답하여 입력 키 데이터(w[8n])를 출력한다. 상기 OR 게이트(82)는 상기 제1 논리 신호(T2)와 상기 제2 논리 신호(T4)에 응답하여 입력 키 데이터(w[8n+1])를 출력한다. 여기에서, 상기 로드 인에이블 신호(LD1)가 하이 레벨로 인에이블될 때 상기 AND 게이트들(71, 72)이 상기 초기 키 데이터들(w[0], w[1])(또는 상기 연산 키 데이터들(c[8m], c[8m+1]))을 상기 제1 논리 신호들(T1, T2)로서 각각 출력한다. 이 때, 상기 반전된 로드 인에이블 신호(LD1B)가 로우 레벨이므로 상기 AND 게이트들(73, 74)은 상기 제2 논리 신호들(T3, T4)을 로우 레벨로 출력한다. 그 결과 상기 OR 게이트들(81, 82)은 상기 제1 논리 신호들(T1, T2)을 상기 입력 키 데이터들(w[8n], w[8n+1])로서 각각 출력한다.
한편, 상기 로드 인에이블 신호(LD1)가 로우 레벨로 디세이블될 때 상기 AND 게이트들(71, 72)은 상기 제1 논리 신호들(T1, T2)을 로우 레벨로 출력한다. 또, 상기 반전된 로드 인에이블 신호(LD1B)가 하이 레벨이므로, 상기 AND 게이트들(73, 74)은 상기 저장 키 데이터들(r[8n], r[8n+1])을 상기 제2 논리 신호들(T3, T4)로서 출력한다. 그 결과 상기 OR 게이트들(81, 82)은 상기 제2 논리 신호들(T3, T4)을 상기 입력 키 데이터들(w[8n], w[8n+1])로서 각각 출력한다. 따라서 상기 제1 및 제2 로드 인에이블 회로들(711, 712)은 상기 로드 인에이블 신호(LD1)가 하이 레벨로 인에이블될 때 상기 초기 키 데이터들(w[0], w[1])(또는 상기 연산 키 데이터들(c[8m], c[8m+1]))을 상기 입력 키 데이터들(w[8n], w[8n+1])로서 각각 출력한다. 또, 상기 제1 및 제2 로드 인에이블 회로들(711, 712)은 상기 로드 인에이블 신호(LD1)가 로우 레벨로 디세이블될 때 상기 저장 키 데이터들(r[8n], r[8n+1])을 상기 입력 키 데이터들(w[8n], w[8n+1])로서 각각 출력한다.
상기 제1 및 제2 로드 인에이블 회로들(711, 712) 각각의 출력 단자들에는 제1 및 제2 레지스터들(721, 722)의 입력 단자들이 각각 연결된다. 상기 제1 및 제2 레지스터들(721, 722) 각각은 D 플립플롭으로 구현될 수 있다. 상기 제1 및 제2 레지스터들(721, 722)은 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[8n], w[8n+1])을 저장하고, 저장된 상기 입력 키 데이터들(w[8n], w[8n+1])을 상기 저장 키 데이터들(r[8n], r[8n+1])로서 각각 출력한다.
도 5는 도 3에 도시된 출력 선택부(770)를 상세히 나타내는 도면이다. 도 5를 참고하면, 상기 출력 선택부(770)는 제1 내지 제4 출력 선택 회로들(771∼774)을 포함한다. 상기 제1 내지 제4 출력 선택 회로들(771∼774) 각각은 멀티플렉서로 구현될 수 있다. 상기 제1 출력 선택 회로(771)는 상기 제어부(601)로부터 수신되는 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 키 데이터들(x0, x4, x2) 중 어느 하나를 선택하여 출력한다. 이를 좀 더 상세히 설명하면, 상기 제1 출력 선택 회로(771)는 상기 출력 선택 신호들(S1, S2)이 모두 디세이블 될 때 상기 출력 키 데이터(x0)를 출력하고, 상기 출력 선택 신호들(S1, S2) 중 어느 하나가 인에이블될 때 상기 출력 키 데이터(x4)를 출력한다. 또, 상기 제1 출력 선택 회로(771)는 상기 출력 선택 신호들(S1, S2)이 모두 인에이블될 때 상기 출력 키 데이터(x2)를 출력한다.
상기 제2 출력 선택 회로(772)는 상기 출력 선택 신호들(S1, S2)에 응답하여 출력 키 데이터들(x1, x5, x3) 중 어느 하나를 출력한다. 이를 좀 더 상세히 설명하면, 상기 제2 출력 선택 회로(772)는 상기 출력 선택 신호들(S1, S2)이 모두 디세이블 될 때 상기 출력 키 데이터(x1)를 출력하고, 상기 출력 선택 신호들(S1, S2) 중 어느 하나가 인에이블될 때 상기 출력 키 데이터(x5)를 출력한다. 또, 상기 제2 출력 선택 회로(772)는 상기 출력 선택 신호들(S1, S2)이 모두 인에이블될 때 상기 출력 키 데이터(x3)를 출력한다.
상기 제3 출력 선택 회로(773)는 상기 출력 선택 신호들(S1, S2)에 응답하여 출력 키 데이터들(x2, x6, x0, x4) 중 어느 하나를 출력한다. 이를 좀 더 상세히 설명하면, 상기 제3 출력 선택 회로(773)는 상기 출력 선택 신호들(S1, S2)이 모두 디세이블 될 때 상기 출력 키 데이터(x2)를 출력하고, 상기 출력 선택 신호(S1)가 인에이블 되고 상기 출력 선택 신호(S2)가 디세이블될 때 상기 출력 키 데이터(x6)를 출력한다. 또, 상기 제3 출력 선택 회로(773)는 상기 출력 선택 신호(S2)가 인에이블 되고 상기 출력 선택 신호(S1)이 디세이블 될 때 상기 출력 키 데이터(x0)를 출력하고, 상기 출력 선택 신호들(S1, S2)이 모두 인에이블될 때 상기 출력 키 데이터(x4)를 출력한다.
상기 제4 출력 선택 회로(774)는 상기 출력 선택 신호들(S1, S2)에 응답하여 출력 키 데이터들(x3, x7, x1, x5) 중 어느 하나를 출력한다. 이를 좀 더 상세히 설명하면, 상기 제4 출력 선택 회로(774)는 상기 출력 선택 신호들(S1, S2)이 모두 디세이블 될 때 상기 출력 키 데이터(x3)를 출력하고, 상기 출력 선택 신호(S1)가 인에이블 되고 상기 출력 선택 신호(S2)가 디세이블 될 때 상기 출력 키 데이터(x7)를 출력한다. 또, 상기 제4 출력 선택 회로(774)는 상기 출력 선택 신호(S2)가 인에이블 되고 상기 출력 선택 신호(S1)가 디세이블 될 때 상기 출력 키 데이터(x1)를 출력하고, 상기 출력 선택 신호들(S1, S2)이 모두 인에이블될 때 상기 출력 키 데이터(x5)를 출력한다.
한편, 도 5에서, 상기 제1 내지 제4 출력 선택 회로들(771∼774)에 상기 출력 선택 신호들(S1, S2)이 입력되는 것으로 도시되었지만, 상기 제1 내지 제4 출력 선택 회로들(771∼774)에는 출력 선택 신호(S3)가 더 입력될 수도 있다. 그 결과 상기 제1 내지 제4 출력 선택 회로들(771∼774)은 상기 출력 선택 신호(S3)가 디세이블될 때, 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 키 데이터들(x0∼x3 또는 x4∼x7 또는 x4, x5, x0, x1 또는 x2∼x5)을 출력한다. 또, 상기 제1 내지 제4 출력 선택 회로들(771∼774)은 상기 출력 선택 신호(S3)가 인에이블될 때, 상기 출력 키 데이터들(x0∼x3 또는 x4∼x7 또는 x4, x5, x0, x1 또는 x2∼x5)을 출력하지 않는다.
다음으로, 상기와 같이 구성된 키 스케쥴 장치(700)의 동작 과정을 설명하면 다음과 같다. 먼저, 상기 키 스케쥴 장치(700)가 키 데이터들(w[0]∼w[3])을 포함하는 제1 초기 라운드 키(EIKEY1)를 수신하고, 제1 암호 라운드 키(ERKEY1)를 발생하는 과정을 설명한다.
상기 키 스케쥴 장치(700)에 상기 초기 키 데이터들(w[0]∼w[3])을 포함하는 상기 제1 초기 라운드 키(EIKEY1)가 입력될 때, 상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)과 상기 내부 선택 신호들(M1, M2)이 인에이블 되어, 상기 키 스케쥴 장치(700)가 10개의 상기 제1 암호 라운드 키들(ERKEY1s)을 모두 발생할 때까지 유지된다.
또, 상기 키 스케쥴 장치(700)가 10개의 상기 제1 암호 라운드 키들(ERKEY1s)을 모두 발생할 때까지, 상기 로드 인에이블 신호들(LD3, LD3B, LD4, LD4B)과 상기 내부 선택 신호들(M3, M4), 출력 선택 신호들(S1, S2), 및 상기 연산 제어 신호들(P1∼P4)이 모두 디세이블 상태로 유지된다. 그 결과 상기 키 스케쥴 장치(700)가 10개의 상기 제1 암호 라운드 키들(ERKEY1s)을 발생하는 동안, 상기 제1 내지 제4 로드 인에이블 회로들(711∼714), 상기 제1 내지 제4 레지스터들(721∼724), 상기 제1 내지 제4 체인 연산기들(731∼734)만이 동작한다.
상기 제5 내지 제8 로드 인에이블 회로들(715∼718)은 상기 로드 인에이블 신호들(LD3, LD3B, LD4, LD4B)이 디세이블 상태이므로, 상기 저장 키 데이터들(r[8n+4]∼r[8n+7])을 상기 입력 키 데이터들(w[8n+4]∼w[8n+7])로서 계속 출력한다. 그 결과 상기 제5 내지 제8 레지스터들(725∼728)의 출력 신호들이 토글링되지 않으므로, 상기 제5 내지 제8 레지스터들(725∼728)에 의한 소모 전류가 감소된다.
상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)에 응답하여 상기 제1 내지 제4 로드 인에이블 회로들(711∼714)은 상기 초기 키 데이터들(w[0]∼w[3])을 입력 키 데이터들(w[0]∼w[3])로서 각각 출력한다. 상기 제1 내지 제4 레지스터들(721∼724)은 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[0]∼w[3])을 수신하여 저장하고, 저장된 상기 입력 키 데이터들(w[0]∼w[3])을 저장 키 데이터들(r[0]∼r[3])로서 각각 출력한다.
상기 내부 선택 신호들(M1, M2)에 응답하여 상기 제1 내지 제4 내부 선택 회로들(761∼764)은 상기 입력 키 데이터들(w[0]∼w[3])을 선택하여 출력 키 데이터들(x0∼x3)로서 각각 출력한다. 여기에서, 상기 출력 선택 신호들(S1, S2)이 디세이블 상태이므로, 상기 출력 선택부(770)가 상기 출력 키 데이터들(x0∼x3)(즉, 상기 입력 키 데이터들(w[0]∼w[3]))을 상기 제1 암호 라운드 키(ERKEY1)로서 출력한다. 그러나, 블록 라운드 처리부(602, 도 2참고)는 상기 출력 선택부(770)로부터 출력되는 상기 입력 키 데이터들(w[0]∼w[3])을 포함하는 상기 제1 암호 라운드 키(ERKEY1)를 실질적으로 수신하지 않는다. 그 이유는 상기 블록 라운드 처리부(602)가 도 2에서 참조되는 것과 같이, 외부로부터 직접 상기 초기 키 데이터들(w[0]∼w[3])를 수신하기 때문이다. 이 때, 상기 블록 라운드 처리부(602)는 라운드 제어신호(RCTL)에 응답하여, 상기 출력 선택부(770)로부터 출력되는 상기 제1 암호 라운드 키(ERKEY1)를 수신하거나 또는 수신하지 않는다.
상기 제2 선택 회로(742)는 상기 연산 제어 신호들(P2, P3)에 응답하여 상기 출력 키 데이터(x3)를 선택하여 출력한다. 워드 로테이션부(751)는 상기 출력 키 데이터(x3)의 각 비트들을 로테이션하여, 로테이션 키 데이터(ROT)를 출력한다. 제3 선택 회로(743)는 상기 연산 제어 신호(P4)에 응답하여 상기 로테이션 키 데이터(ROT)를 선택하여 출력한다.
상기 워드 치환부(752)는 상기 로테이션 키 데이터(ROT)를 4개의 치환 테이블들을 사용하여 각각 소정 값들로 치환하고 치환 키 데이터(SUB)를 출력한다. 상기 독립 연산기(739)는 상기 치환 키 데이터(SUB)와 상기 라운드 상수 발생기(753)로부터 수신되는 라운드 상수(RNC)를 논리 연산하여 변환 키 데이터(SUC)를 출력한다.
상기 제1 체인 연산기(731)는 상기 변환 키 데이터(SUC)와 상기 저장 키 데이터(r[0])를 논리 연산하여 연산 키 데이터(c[4])를 출력한다. 상기 제2 체인 연산기(732)는 상기 저장 키 데이터(r[1])와 상기 제1 체인 연산기(731)로부터 수신되는 상기 연산 키 데이터(c[4])를 논리 연산하여 연산 키 데이터(c[5])를 출력한다. 상기 제3 체인 연산기(733)는 상기 저장 키 데이터(r[2])와 상기 제2 체인 연산기(732)로부터 수신되는 상기 연산 키 데이터(c[5])를 논리 연산하여 연산 키 데이터(c[6])를 출력한다. 상기 제4 체인 연산기(734)는 상기 저장 키 데이터(r[3])와 상기 제3 체인 연산기(733)로부터 수신되는 상기 연산 키 데이터(c[6])를 논리 연산하여 연산 키 데이터(c[7])를 출력한다. 상기 제1 내지 제4 로드 인에이블 회로들(711∼714)은 상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)에 응답하여 상기 연산 키 데이터들(c[4]∼c[7])을 입력 키 데이터들(w[4]∼w[7])로서 각각 출력한다.
상기 내부 선택 신호들(M1, M2)에 응답하여 상기 제1 내지 제4 내부 선택 회로들(761∼764)은 상기 입력 키 데이터들(w[4]∼w[7])을 선택하여 출력 키 데이터들(x0∼x3)로서 각각 출력한다. 상기 출력 선택부(770)는 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 키 데이터들(x0∼x3)을 선택하여 상기 제1 암호 라운드 키(ERKEY1)로서 출력한다. 그 결과 상기 키 스케쥴 장치(700)는 클럭 신호(CLK)의 첫 번째 사이클 동안 상기 출력 키 데이터들(x0∼x3), 즉, 상기 입력 키 데이터들(w[4]∼w[7])을 포함하는 상기 제1 암호 라운드 키(ERKEY1)를 발생한다. 여기에서, 상기 클럭 신호(CLK)의 첫 번째 사이클 동안 상기 제1 암호 라운드 키(ERKEY1)(즉, 상기 입력 키 데이터들(w[4]∼w[7]))과 상기 제1 초기 라운드 키(EIKEY1)의 상기 초기 키 데이터들(w[0]∼w[3])이 블록 라운드 처리부(602, 도 2 참고)에 입력된다.
이 후, 상기 키 스케쥴 장치(700)는 입력 키 데이터들(w[40]∼w[43])을 포함하는 상기 제1 암호 라운드 키(ERKEY1)를 발생할 때까지 상술한 연산 동작들과 상기 제1 암호 라운드 키(ERKEY1)의 출력 동작을 반복적으로 수행한다. 또, 상기 키 스케쥴 장치(700)로부터 상기 입력 키 데이터들(w[40]∼w[43])을 포함하는 상기 제1 암호 라운드 키(ERKEY1)가 발생된 후, 상기 제1 내지 상기 제4 레지스터들(721∼724)은 제1 복호 라운드 키(DRKEY1)를 발생할 때 사용될 상기 입력 키 데이터들(w[40]∼w[43])을 저장하고, 그 저장 상태를 유지한다. 여기에서, 각 클럭 사이클별로 상기 키 스케쥴 장치(700)에 의해 발생되는 상기 제1 암호 라운드 키(ERKEY1)는 다음의 표로 나타낼 수 있다.
클럭사이클 ERKEY1
x0 x1 x2 x3 x4 x5 x6 x7
1 w[0]w[4] w[1]w[5] w[2]w[6] w[3]w[7]
2 w[8] w[9] w[10] w[11] - - - -
... ... ... ... ... - - - -
10 w[40] w[41] w[42] w[43] - - - -
여기에서, 상기 클럭 신호(CLK)의 첫 번째 사이클 동안 상기 입력 키 데이터들(w[4]∼w[7])을 포함하는 상기 제1 암호 라운드 키(ERKEY1)와 상기 제1 초기 라운드 키(EIKEY1)의 상기 초기 키 데이터들(w[0]∼w[3])이 상기 블록 라운드 처리부(602)에 입력된다.
한편, 도 6은 상기 키 스케쥴 장치(700)가 10개의 상기 제1 암호 라운드 키(ERKEY1)를 발생하는 동안, 상기 제1 내지 제8 레지스터들(721∼728)로부터 출력되는 상기 저장 키 데이터들(r[8n]∼r[8n+7])의 타이밍도이다. 상기 [표 1]과 도 6에서 참조되는 것과 같이, 상기 제1 내지 제4 레지스터들(721∼724)로부터 출력되는 상기 저장 키 데이터들(r[8n]∼r[8n+3])은 상기 클럭 신호(CLK)의 매 사이클마다 토글링된다. 또, 상기 제5 내지 제8 레지스터들(725∼728)로부터 출력되는 상기 저장 키 데이터들(r[8n+4]∼r[8n+7])은 상기 키 스케쥴 장치(700)가 10개의 상기 제1 암호 라운드 키(ERKEY1)를 모두 발생하는 동안 토글링되지 않는다. 그 결과 상기 제5 내지 제8 레지스터들(725∼728)에 의한 소모 전류가 감소된다.
다음으로, 상기 키 스케쥴 장치(700)가 제1 복호 라운드 키(DRKEY1)를 발생하는 동작 과정을 설명한다. 상기 키 스케쥴 장치(700)가 제1 복호 라운드 키(DRKEY1)를 발생하는 과정은 상기 키 스케쥴 장치(700)가 상기 초기 키 데이터들(w[0]∼w[3])을 포함하는 제1 초기 라운드 키(EIKEY1)를 수신하는 경우와 수신하지 않은 경우로 구분될 수 있다.
먼저, 상기 키 스케쥴 장치(700)가 상기 초기 키 데이터들(w[0]∼w[3])을 포함하는 상기 제1 초기 라운드 키(EIKEY1)를 수신하는 경우 상기 제1 복호 라운드 키(DRKEY1)를 발생하는 과정을 설명한다.
상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)이 인에이블되고, 로드 인에이블 신호들(LD3, LD3B, LD4, LD4B)은 디세이블된다. 이 후, 상기 키 스케쥴 장치(700)가 상기 제1 복호 라운드 키(DRKEY1)를 모두 발생할 때까지 상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)이 인에이블 상태로 유지되고, 로드 인에이블 신호들(LD3, LD3B, LD4, LD4B)은 디세이블 상태로 유지된다.
상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)에 응답하여 상기 제1 내지 제4 로드 인에이블 회로들(711∼714)은 상기 초기 키 데이터들(w[0]∼w[3])을 입력 키 데이터들(w[0]∼w[3])로서 출력한다. 상기 제1 내지 제4 레지스터들(721∼724)은 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[0]∼w[3])을 수신하여 저장하고, 저장된 상기 입력 키 데이터들(w[0]∼w[3])을 저장 키 데이터들(r[0]∼r[3])로서 각각 출력한다.
이 후, 상기 제1 내지 제4 체인 연산기들(731∼734)로부터 상기 연산 키 데이터들(c[40]∼c[43])이 출력될 때까지, 상기 키 스케쥴 장치(700)는 상술한 상기 제1 암호 라운드 키(ERKEY1)의 생성을 위한 연산 동작들을 반복적으로 수행한다. 상기 제1 내지 제4 체인 연산기들(731∼734)이 상기 연산 키 데이터들(c[40]∼c[43])을 출력할 때까지 상술한 연산 동작을 반복 수행하는 동안, 상기 블록 라운드 처리부(602)는 상기 라운드 제어신호(RCTL)에 응답하여, 상기 키 스케쥴 장치(700)로부터 출력되는 상기 제1 암호 라운드 키(ERKEY1)를 수신하지 않는다. 여기에서, 상기 제1 내지 제4 체인 연산기들(731∼734)이 상기 연산 키 데이터들(c[40]∼c[43])을 출력할 때까지 상술한 연산 동작을 반복 수행하는 동안, 도 5를 참고하여 상술한 것과 같이, 상기 출력 선택부(770)가 상기 제1 암호 라운드 키(ERKEY1)를 출력하지 않도록 할 수도 있다.
이 후, 상기 제1 내지 제4 체인 연산기들(731∼734)로부터 상기 연산 키 데이터들(c[40]∼c[43])이 출력될 때, 상기 제1 내지 제4 로드 인에이블 회로들(711∼714)이 상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)에 응답하여 상기 연산 키 데이터들(c[40]∼c[43])을 입력 키 데이터들(w[40]∼w[43])로서 출력한다. 상기 제1 내지 제4 레지스터들(721∼724)이 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[40]∼w[43])을 수신하여 저장하고, 저장된 상기 입력 키 데이터들(w[40]∼w[43])을 저장 키 데이터들(r[40]∼r[43])로서 각각 출력한다.
이 때, 상기 내부 선택 신호들(M1, M2)이 디세이블된다. 상기 연산 제어 신호들(P1∼P4)과 상기 출력 선택 신호들(S1, S2)은 모두 디세이블 되어, 상기 키 스케쥴 장치(700)가 마지막 상기 제1 복호 라운드 키(DRKEY1)를 발생할 때까지 유지된다.
상기 제1 내지 제4 내부 선택 회로들(761∼764)은 상기 내부 선택 신호들(M1, M2)에 응답하여 상기 저장 키 데이터들(r[40]∼r[43])을 상기 출력 키 데이터들(x0∼x3)로서 각각 출력한다. 이 때, 상기 출력 선택부(770)는 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 키 데이터들(x0∼x3)(즉, 상기 저장 키 데이터들(r[40]∼r[43]))을 선택하여 출력한다.
상기 제2 선택 회로(742)는 상기 연산 제어 신호들(P2, P3)에 응답하여 상기 출력 키 데이터(x3), 즉, 상기 저장 키 데이터(r[43])를 상기 워드 로테이션부(751)에 출력한다. 상기 워드 로테이션부(751)는 상기 저장 키 데이터(r[43])의 각 비트들을 로테이션하여, 로테이션 키 데이터(ROT)를 출력한다. 상기 연산 제어 신호(P4)에 응답하여 상기 제3 선택 회로(743)가 상기 로테이션 키 데이터(ROT)를 선택하여 상기 워드 치환부(752)에 출력한다. 상기 워드 치환부(752)는 상기 로테이션 키 데이터(ROT)를 치환 테이블을 사용하여 치환하고, 치환 키 데이터(SUB)를 출력한다. 상기 독립 연산기(739)는 상기 치환 키 데이터(SUB)와 상기 라운드 상수(RNC)를 논리 연산하여 변환 키 데이터(SUC)를 출력한다.
상기 제1 체인 연산기(731)는 상기 저장 키 데이터(r[40])와 상기 변환 키 데이터(SUC)를 논리 연산하여 연산 키 데이터(c[36])를 출력한다. 상기 제2 내지 상기 제4 체인 연산기들(732∼734)은 상기 저장 키 데이터들(r[41]∼r[43])과 앞단으로부터 수신되는 연산 키 데이터들(c[36]∼c[38])을 각각 논리 연산하여 연산 키 데이터들(c[37]∼c[39])을 각각 출력한다. 상기 제1 내지 제4 로드 인에이블 회로들(711∼714)은 상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)에 응답하여 상기 연산 키 데이터들(c[36]∼c[39])을 입력 키 데이터들(w[36]∼w[39])로서 각각 출력한다.
이 후, 상기 내부 선택 신호들(M1, M2)이 인에이블되고, 상기 키 스케쥴 장치(700)가 마지막 상기 제1 복호 라운드 키(DRKEY1)를 발생할 때까지 유지된다. 상기 제1 내지 제4 내부 선택 회로들(761∼764)은 상기 내부 선택 신호들(M1, M2)에 응답하여 상기 입력 키 데이터들(w[36]∼w[39])을 상기 출력 키 데이터들(x0∼x3)로서 각각 출력한다. 또, 상기 출력 선택부(770)는 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 키 데이터들(x0∼x3)을 선택하여 상기 제1 복호 라운드 키(DRKEY1)로서 출력한다. 그 결과 상기 키 스케쥴 장치(700)는 상기 클럭 신호(CLK)의 11번째 사이클 동안 상기 출력 키 데이터들(x0∼x3), 즉, 상기 입력 키 데이터들(w[36]∼w[39])을 포함하는 상기 제1 복호 라운드 키(DRKEY1)를 발생한다. 여기에서, 상기 클럭 신호(CLK)의 11번째 사이클 동안 상기 제1 복호 라운드 키(ERKEY1)(즉, 상기 입력 키 데이터들(w[36]∼w[39]))와 상기 저장 키 데이터들(r[40]∼r[43])이 상기 블록 라운드 처리부(602)에 입력된다.
상기 제1 내지 상기 제4 레지스터들(721∼724)은 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[36]∼w[39])을 수신하여 저장하고, 저장된 상기 입력 키 데이터들(w[36]∼w[39])을 저장 키 데이터들(r[36]∼r[39])로서 각각 출력한다. 이 후, 상기 키 스케쥴 장치(700)는 입력 키 데이터들(w[0]∼w[3])을 포함하는 상기 제1 복호 라운드 키(DRKEY1)를 발생할 때까지 상술한 연산 동작과 상기 제1 복호 라운드 키(DRKEY1)의 출력 동작을 반복적으로 수행한다.
다음으로, 상기 키 스케쥴 장치(700)가 상기 초기 키 데이터들(w[0]∼w[3])을 포함하는 상기 제1 초기 라운드 키(EIKEY1)를 수신하지 않은 경우 상기 제1 복호 라운드 키(DRKEY1)를 발생하는 과정을 설명한다. 먼저, 상기 제1 내지 상기 제4 레지스터들(721∼724)은 상기 클럭 신호(CLK)에 응답하여 저장되어 있던 입력 키 데이터들(w[40]∼w[43])을 저장 키 데이터들(r[40]∼r[43])로서 출력한다.
이 때, 상기 내부 선택 신호들(M1, M2)이 디세이블된다. 상기 연산 제어 신호들(P1∼P4)과 출력 선택 신호들(S1, S2)은 디세이블되어, 상기 키 스케쥴 장치(700)가 마지막 상기 제1 복호 라운드 키(DRKEY1)를 발생할 때까지 유지된다.
상기 제1 내지 제4 내부 선택 회로들(761∼764)은 상기 내부 선택 신호들(M1, M2)에 응답하여 상기 저장 키 데이터들(r[40]∼r[43])을 상기 출력 키 데이터들(x0∼x3)로서 각각 출력한다. 상기 출력 선택부(770)는 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 키 데이터들(x0∼x3)(즉, 상기 저장 키 데이터들(r[40]∼r[43]))을 선택하여 출력한다. 이 후 상기 키 스케쥴 장치(700)의 동작은 상기 초기 키 데이터들(w[0]∼w[3])을 포함하는 상기 제1 초기 라운드 키(EIKEY1)를 수신한 경우 상기 제1 복호 라운드 키(DRKEY1)를 발생하는 과정과 실질적으로 동일하므로 그 구체적인 설명은 생략된다.
한편, 상기 키 스케쥴 장치(700)가 상기 제1 복호 라운드 키(DRKEY1) 발생 과정 동안, 상기 제1 내지 제4 레지스터들(721∼724)은 상기 클럭 신호(CLK)의 매 사이클마다 업데이트된 입력 키 데이터들(w[4n]∼w[4n+3])을 저장한다.
여기에서, 각 클럭 사이클별로 상기 키 스케쥴 장치(700)에 의해 발생되는 상기 제1 복호 라운드 키(DRKEY1)는 다음의 표로 나타낼 수 있다.
클럭사이클 DRKEY1
x0 x1 x2 x3 x4 x5 x6 x7
1 r[40] r[41] r[42] r[43] - - - -
w[36] w[37] w[38] w[39] - - - -
2 w[32] w[33] w[34] w[35] - - - -
... ... ... ... ... - - - -
10 w[0] w[1] w[2] w[3] - - - -
상기 키 스케쥴 장치(700)가 상기 제1 복호 라운드 키(DRKEY1)를 발생하는 동안, 상기 제1 내지 제8 레지스터들(721∼728)로부터 출력되는 상기 저장 키 데이터들(r[8n]∼r[8n+7])의 타이밍도는 도 6에 도시된 것과 동일하다. 상기 [표 2]와 도 6에서 참조되는 것과 같이, 상기 제1 내지 제4 레지스터들(721∼724)로부터 출력되는 상기 저장 키 데이터들(r[8n]∼r[8n+3])은 상기 클럭 신호(CLK)의 매 사이클마다 토글링된다. 반면에, 상기 제5 내지 제8 레지스터들(725∼728)로부터 출력되는 상기 저장 키 데이터들(r[8n+4]∼r[8n+7])은 상기 키 스케쥴 장치(700)가 상기 제1 복호 라운드 키(DRKEY1)를 모두 발생하는 동안 토글링되지 않는다. 그 결과 상기 제5 내지 제8 레지스터들(725∼728)에 의한 소모 전류가 감소된다.
다음으로, 상기 키 스케쥴 장치(700)가 초기 키 데이터들(w[0]∼w[5])을 포함하는 제2 초기 라운드 키(EIKEY2)를 수신하고, 제2 암호 라운드 키(ERKEY2)를 발생하는 과정을 설명한다. 상기 키 스케쥴 장치(700)에 상기 초기 키 데이터들(w[0]∼w[5])을 포함하는 상기 제2 초기 라운드 키(EIKEY2)가 입력될 때, 상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)과 상기 내부 선택 신호들(M1∼M3)이 인에이블된다. 상기 연산 제어 신호(P2)는 인에이블 되어, 상기 키 스케쥴 장치(700)가 상기 제2 암호 라운드 키(ERKEY2)를 모두 발생할 때까지 유지된다. 또, 상기 연산 제어 신호들(P1, P3, P4)과 상기 로드 인에이블 신호들(LD4, LD4B)은 디세이블되어, 상기 키 스케쥴 장치(700)가 상기 제2 암호 라운드 키(ERKEY2)를 모두 발생할 때까지 유지된다. 그 결과 상기 키 스케쥴 장치(700)가 12개의 상기 제2 암호 라운드 키들(ERKEY2s)을 발생하는 동안, 상기 제1 내지 제6 로드 인에이블 회로들(711∼716), 상기 제1 내지 제6 레지스터들(721∼726), 상기 제1 내지 제6 체인 연산기들(731∼736)만이 동작한다.
상기 제7 및 제8 로드 인에이블 회로들(717, 718)은 상기 로드 인에이블 신호들(LD4, LD4B)이 디세이블 상태이므로, 상기 저장 키 데이터들(r[8n+6], r[8n+7])을 상기 입력 키 데이터들(w[8n+6], w[8n+7])로서 계속 출력한다. 그 결과 상기 제7 및 제8 레지스터들(727, 728)의 출력 신호들이 토글링되지 않는다. 따라서 상기 제7 및 제8 레지스터들(727, 728)에 의한 소모 전류가 감소된다.
상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)에 응답하여 상기 제1 내지 제6 로드 인에이블 회로들(711∼716)은 상기 초기 키 데이터들(w[0]∼w[5])을 입력 키 데이터들(w[0]∼w[5])로서 출력한다. 상기 제1 내지 제6 레지스터들(721∼726)은 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[0]∼w[5])을 수신하여 저장하고, 저장된 상기 입력 키 데이터들(w[0]∼w[5])을 저장 키 데이터들(r[0]∼r[5])로서 각각 출력한다.
상기 내부 선택 신호들(M1∼M3)에 응답하여 상기 제1 내지 제6 내부 선택 회로들(761∼766)이 상기 입력 키 데이터들(w[0]∼w[5])을 출력 키 데이터들(x0∼x5)로서 각각 출력한다.
상기 제2 선택 회로(742)는 상기 연산 제어 신호들(P2, P3)에 응답하여 상기 출력 키 데이터(x5), 즉, 상기 입력 키 데이터(w[5])를 선택하여 상기 워드 로테이션부(751)에 출력한다. 상기 워드 로테이션부(751)는 상기 입력 키 데이터(w[5])의 비트들을 로테이션하고, 로테이션 키 데이터(ROT)를 출력한다. 상기 제3 선택 회로(743)는 상기 연산 제어 신호(P4)에 응답하여 상기 로테이션 키 데이터(ROT)를 선택하여 상기 워드 치환부(752)에 출력한다. 상기 워드 치환부(752)는 상기 로테이션 키 데이터(ROT)를 소정 값으로 치환하고 치환 키 데이터(SUB)를 출력한다. 독립 연산기(739)는 상기 치환 키 데이터(SUB)와 상기 라운드 상수(RNC)를 논리 연산하여 변환 키 데이터(SUC)를 출력한다.
상기 제1 체인 연산기(731)는 상기 변환 키 데이터(SUC)와 상기 저장 키 데이터(r[0])를 논리 연산하여 연산 키 데이터(c[6])를 출력한다. 상기 제2 내지 제4 체인 연산기들(732∼734)은 상기 저장 키 데이터들(r[1]∼r[3])과 앞단으로부터 수신되는 연산 키 데이터들(c[6]∼c[8])을 각각 논리 연산하여, 연산 키 데이터들(c[7]∼c[9])을 각각 출력한다. 이 때, 상기 제1 선택 회로(741)가 상기 연산 제어 신호(P1)에 응답하여 상기 연산 키 데이터(c[9])를 상기 제5 체인 연산기(735)에 출력한다. 따라서 상기 제5 및 제6 체인 연산기들(735, 766)이 상기 저장 키 데이터들(r[4], r[5])과 앞단으로부터 수신되는 연산 키 데이터들(c[9], c[10])을 각각 논리 연산하여, 연산 키 데이터들(c[10], c[11])을 출력한다.
상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)이 인에이블 상태이므로, 상기 제1 내지 제6 로드 인에이블 회로들(711∼716)은 상기 연산 키 데이터들(c[6]∼c[11])을 입력 키 데이터들(w[6]∼w[11])로서 각각 출력한다.
이 때, 상기 내부 선택 신호(M1)만이 인에이블 상태로 유지되고, 상기 내부 선택 신호들(M2, M3)은 디세이블된다. 상기 내부 선택 신호(M1)에 응답하여 상기 제1 및 제2 내부 선택 회로들(761, 762)이 상기 입력 키 데이터들(w[6], w[7])을 출력 키 데이터들(x0, x1)로서 각각 출력한다. 또, 상기 내부 선택 신호들(M2, M3)에 응답하여 상기 제3 내지 제6 내부 선택 회로들(763∼766)이 저장 키 데이터들(r[2]∼r[5])을 출력 키 데이터들(x2∼x5)로서 각각 출력한다.
이 때, 상기 출력 선택 신호(S2)가 인에이블되고, 상기 출력 선택 신호(S1)가 디세이블된다. 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 선택부(770)는 상기 출력 키 데이터들(x0∼x7) 중 상기 출력 키 데이터들(x4, x5, x0, x1)을 선택하여 상기 제2 암호 라운드 키(ERKEY2)로서 출력한다. 그 결과 상기 키 스케쥴 장치(700)는 상기 클럭 신호(CLK)의 첫 번째 사이클 동안 상기 출력 키 데이터들(x0, x1)(즉, 상기 입력 키 데이터들(w[6], w[7]))과 상기 출력 키 데이터들(x4, x5)(즉, 상기 저장 키 데이터들(r[4], r[5])을 포함하는 상기 제2 암호 라운드 키(ERKEY2)를 발생한다. 상기 클럭 신호(CLK)의 첫 번째 사이클 동안 상기 블록 라운드 처리부(602)에는 상기 제2 암호 라운드 키(ERKEY2)와 상기 제2 초기 라운드 키(EIKEY2)의 상기 초기 키 데이터들(w[0]∼w[5])이 함께 입력된다. 여기에서, 상기 제2 암호 라운드 키(ERKEY2)의 상기 저장 키 데이터들(r[4], r[5])과 상기 초기 키 데이터들(w[4], w[5])이 실질적으로 동일하므로, 상기 블록 라운드 처리부(602)는 상기 저장 키 데이터들(r[4], r[5])을 수신하지 않는다. 따라서 상기 블록 라운드 처리부(602)는 상기 입력 키 데이터들(w[6], w[7])을 포함하는 상기 제2 암호 라운드 키(ERKEY2)와 상기 초기 키 데이터들(w[0]∼w[5])을 수신한다.
상기 제1 내지 제6 레지스터들(721∼726)은 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[6]∼w[11])을 저장하고, 저장된 상기 입력 키 데이터들(w[6]∼w[11])을 저장 키 데이터들(r[6]∼r[11])로서 각각 출력한다.
이 후, 상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)과 상기 내부 선택 신호들(M1∼M3)이 모두 디세이블되고, 상기 출력 선택 신호들(S1, S2)이 모두 인에이블된다. 상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)에 응답하여, 상기 제1 내지 제6 로드 인에이블 회로들(711∼716)이 상기 저장 키 데이터들(r[6]∼r[11])을 상기 입력 키 데이터들(w[6]∼w[11])로서 계속 출력한다. 상기 내부 선택 신호들(M1∼M3)에 응답하여, 상기 제1 내지 제6 내부 선택 회로들(761∼766)이 상기 저장 키 데이터들(r[6]∼r[11])을 상기 출력 키 데이터들(x0∼x5)로서 출력한다.
상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 선택부(770)는 상기 출력 키 데이터들(x2∼x5)을 선택하여 상기 제2 암호 라운드 키(ERKEY2)로서 출력한다. 그 결과 상기 키 스케쥴 장치(700)는 상기 클럭 신호(CLK)의 두 번째 사이클 동안 상기 출력 키 데이터들(x2∼x5), 즉, 상기 저장 키 데이터들(r[8]∼r[11])을 포함하는 상기 제2 암호 라운드 키(ERKEY2)를 발생한다.
이 후, 상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)이 다시 인에이블된다. 상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)에 응답하여, 상기 제1 내지 제6 로드 인에이블 회로들(711∼716)은 상기 제1 내지 제6 체인 연산기들(731∼736)로부터 상술한 동작과 유사하게 연산되어 출력되는 연산 키 데이터들(c[12]∼c[17])을 입력 키 데이터들(w[12]∼w[17])로서 출력한다.
이 후, 상기 키 스케쥴 장치(700)는 상기 제1 내지 제6 체인 연산기들(731∼736)로부터 연산 키 데이터들(c[46]∼c[51])이 출력될 때까지 상술한 연산 동작들과 상기 제2 암호 라운드 키(ERKEY2)의 출력 동작을 반복적으로 수행한다. 또, 상기 제1 내지 제6 체인 연산기들(731∼736)로부터 상기 연산 키 데이터들(c[46]∼c[51])이 출력될 때, 상기 제1 내지 상기 제6 레지스터들(721∼726)은 상기 제1 내지 제6 로드 인에이블 회로들(711∼716)로부터 수신되는 입력 키 데이터들(w[46]∼w[51])을 저장하고, 그 저장 상태를 유지한다. 상기 입력 키 데이터들(w[46]∼w[51])은 상기 키 스케쥴 장치(700)에 의한 제2 복호 라운드 키(DRKEY2) 발생 과정에서 사용된다. 또, 상기 키 스케쥴 장치(700)가 상기 제2 암호 라운드 키(ERKEY2)를 발생하는 동안, 상기 제1 내지 제6 레지스터들(721∼726)은 상기 클럭 신호(CLK)의 두 사이클마다 업데이트된 입력 키 데이터들(w[6n]∼w[6n+5])을 저장한다. 여기에서, 각 클럭 사이클별로 상기 키 스케쥴 장치(700)에 의해 발생되는 상기 제2 암호 라운드 키(ERKEY2)는 다음의 표로 나타낼 수 있다.
클럭사이클 ERKEY2
x0 x1 x2 x3 x4 x5 x6 x7
1 w[0] w[1] w[2] w[3] - -
w[6] w[7] - - w[4] w[5] - -
2 - - r[8] r[9] r[10] r[11] - -
... ... ... ... ... ... ... - -
12 - - w[48] w[49] w[50] w[51] - -
한편, 도 7a는 상기 키 스케쥴 장치(700)가 상기 제2 암호 라운드 키(ERKEY2)를 발생하는 동안 상기 제1 내지 제8 레지스터들(721∼728)로부터 출력되는 상기 저장 키 데이터들(r[8n]∼r[8n+7])의 타이밍도이다. 상기 [표 3]과 도 7a에서 참조되는 것과 같이, 상기 제1 내지 제6 레지스터들(721∼726)로부터 출력되는 상기 저장 키 데이터들(r[8n]∼r[8n+5])은 상기 클럭 신호(CLK)의 두 사이클마다 토글링된다. 또, 상기 제7 및 제8 레지스터들(727, 728)로부터 출력되는 상기 저장 키 데이터들(r[8n+6], r[8n+7])은 상기 키 스케쥴 장치(700)가 상기 제2 암호 라운드 키(ERKEY2)를 모두 발생하는 동안 토글링되지 않는다. 그 결과 상기 제7 및 제8 레지스터들(727, 728)에 의한 소모 전류가 감소된다.
다음으로, 상기 키 스케쥴 장치(700)가 상기 제2 복호 라운드 키(DRKEY2)를 발생하는 과정을 설명한다. 상기 키 스케쥴 장치(700)가 상기 제2 복호 라운드 키(DRKEY2)를 발생하는 과정은 상기 키 스케쥴 장치(700)가 상기 초기 키 데이터들(w[0]∼w[5])을 포함하는 상기 제2 초기 라운드 키(EIKEY2)를 수신하는 경우와 상기 제2 초기 라운드 키(EIKEY2)를 수신하지 않은 경우로 구분될 수 있다.
먼저, 상기 키 스케쥴 장치(700)가 상기 초기 키 데이터들(w[0]∼w[5])을 포함하는 상기 제2 초기 라운드 키(EIKEY2)를 수신하는 경우 상기 제2 복호 라운드 키(DRKEY2)를 발생하는 과정을 설명한다. 상기 키 스케쥴 장치(700)에 상기 초기 키 데이터들(w[0]∼w[5])을 포함하는 상기 제2 초기 라운드 키(EIKEY2)가 입력될 때, 상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)이 인에이블된다. 상기 연산 제어 신호(P2)는 인에이블 되어 상기 키 스케쥴 장치(700)가 상기 제2 복호 라운드 키(DRKEY2)를 모두 발생할 때까지 유지된다. 연산 제어 신호들(P1, P3, P4)과 상기 로드 인에이블 신호들(LD4, LD4B)이 디세이블되어, 상기 키 스케쥴 장치(700)가 상기 제2 복호 라운드 키(DRKEY2)를 모두 발생할 때까지 유지된다. 그 결과 상기 키 스케쥴 장치(700)가 12개의 상기 제2 복호 라운드 키들(DRKEY2s)을 발생하는 동안, 상기 제1 내지 제6 로드 인에이블 회로들(711∼716), 상기 제1 내지 제6 레지스터들(721∼726), 상기 제1 내지 제6 체인 연산기들(731∼736)만이 동작한다.
상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)에 응답하여 상기 제1 내지 제6 로드 인에이블 회로들(711∼716)은 상기 초기 키 데이터들(w[0]∼w[5])을 입력 키 데이터들(w[0]∼w[5])로서 출력한다. 상기 제1 내지 제6 레지스터들(721∼726)은 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[0]∼w[5])을 저장하고, 저장된 상기 입력 키 데이터들(w[0]∼w[5])을 저장 키 데이터들(r[0]∼r[5])로서 각각 출력한다. 이 후, 상기 키 스케쥴 장치(700)는 상기 제1 내지 제6 체인 연산기들(731∼736)로부터 상기 연산 키 데이터들(c[46]∼c[51])이 출력될 때까지 상술한 상기 제2 암호 라운드 키(ERKEY2)의 생성을 위한 연산 동작을 반복적으로 수행한다.
상기 제1 내지 제6 체인 연산기들(731∼736)이 상기 연산 키 데이터들(c[46]∼c[51])을 출력할 때까지 상술한 연산 동작을 반복 수행하는 동안, 상기 블록 라운드 처리부(602)는 상기 라운드 제어신호(RCTL)에 응답하여, 상기 키 스케쥴 장치(700)로부터 출력되는 상기 제2 암호 라운드 키(ERKEY2)를 수신하지 않는다. 여기에서, 상기 제1 내지 제6 체인 연산기들(731∼736)이 상기 연산 키 데이터들(c[46]∼c[51])을 출력할 때까지 상술한 연산 동작을 반복 수행하는 동안, 도 5를 참고하여 상술한 것과 같이, 상기 출력 선택부(770)가 상기 제2 암호 라운드 키(ERKEY2)를 출력하지 않도록 할 수도 있다.
이 후, 상기 제1 내지 제6 체인 연산기들(731∼736)로부터 상기 연산 키 데이터들(c[46]∼c[51])이 출력될 때, 상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)이 인에이블된다. 상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)에 응답하여 상기 제1 내지 제6 로드 인에이블 회로들(711∼716)이 상기 연산 키 데이터들(c[46]∼c[51])을 입력 키 데이터들(w[46]∼w[51])로서 각각 출력한다. 상기 제1 내지 제6 레지스터들(721∼726)은 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[46]∼w[51])을 수신하여 저장하고, 저장된 상기 입력 키 데이터들(w[46]∼w[51])을 저장 키 데이터들(r[46]∼r[51])로서 각각 출력한다.
이 때, 상기 내부 선택 신호들(M1∼M3)이 디세이블되고, 상기 출력 선택 신호들(S1, S2)이 모두 인에이블된다. 상기 내부 선택 신호들(M1∼M3)에 응답하여 상기 제1 내지 제6 내부 선택 회로들(761∼766)이 상기 저장 키 데이터들(r[46]∼r[51])을 출력 키 데이터들(x0∼x5)로서 각각 출력한다. 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 선택부(770)가 상기 출력 키 데이터들(x2∼x5)(즉, 상기 저장 키 데이터들(r[48]∼r[51]))을 선택하여 출력한다. 상기 제2 선택 회로(742)는 상기 연산 제어 신호들(P2, P3)에 응답하여 상기 출력 키 데이터(x5)(즉, 상기 저장 키 데이터(r[51]))를 선택하여 상기 워드 로테이션부(751)에 출력한다. 상기 워드 로테이션부(751)는 상기 저장 키 데이터(r[51])의 비트들을 로테이션하고, 로테이션 키 데이터(ROT)를 출력한다. 상기 제3 선택 회로(743)는 상기 연산 제어 신호(P4)에 응답하여 상기 로테이션 키 데이터(ROT)를 선택하여 상기 워드 치환부(752)에 출력한다. 상기 워드 치환부(752)는 상기 로테이션 키 데이터(ROT)를 소정 값으로 치환하여 치환 키 데이터(SUB)를 출력한다. 상기 독립 연산기(739)는 상기 치환 키 데이터(SUB)와 상기 라운드 상수(RNC)를 논리 연산하여 변환 키 데이터(SUC)를 출력한다.
상기 제1 체인 연산기(731)는 상기 변환 키 데이터(SUC)와 상기 저장 키 데이터(r[46])를 논리 연산하여 연산 키 데이터(c[40])를 출력한다. 상기 제2 내지 제4 체인 연산기들(732∼734)은 상기 저장 키 데이터들(r[47]∼r[49])과 앞단으로부터 수신되는 연산 키 데이터들(c[40]∼c[42])을 각각 논리 연산하여, 연산 키 데이터들(c[41]∼c[43])을 각각 출력한다. 상기 제1 선택 회로(741)는 상기 연산 제어 신호(P1)에 응답하여 상기 연산 키 데이터(c[43])를 제5 체인 연산기(735)에 출력한다. 상기 제5 체인 연산기(735)는 상기 연산 키 데이터(c[43])와 상기 저장 키 데이터[r[50])를 논리 연산하여, 연산 키 데이터(c[44])를 출력한다. 상기 제6 체인 연산기(736)는 상기 연산키 데이터(c[44])와 상기 저장 키 데이터[r[51])를 논리 연산하여 연산 키 데이터(c[45])를 출력한다.
이 때, 상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)이 인에이블 상태이므로, 상기 제1 내지 제6 로드 인에이블 회로들(711∼716)이 상기 연산 키 데이터들(c[40]∼c[45])을 입력 키 데이터들(w[40]∼w[45])로서 출력한다.
이 후, 상기 내부 선택 신호(M3)가 인에이블 되고, 상기 내부 선택 신호들(M1, M2)은 디세이블 된다. 또, 상기 출력 선택 신호(S1)가 디세이블 되고, 상기 출력 선택 신호(S2)가 인에이블 된다. 상기 내부 선택 신호(M3)에 응답하여 상기 제5 및 제6 내부 선택 회로들(765, 766)이 상기 입력 키 데이터들(w[44], w[45])을 출력 키 데이터들(x4, x5)로서 출력한다. 또, 상기 내부 선택 신호들(M1, M2)에 응답하여 상기 제1 내지 제4 내부 선택 회로들(761∼764)이 상기 저장 키 데이터들(r[46]∼r[49])을 출력 키 데이터들(x0∼x3)로서 출력한다. 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 선택부(770)는 상기 출력 키 데이터들(x4, x5, x0, x1)을 선택하여 상기 제2 복호 라운드 키(DRKEY2)로서 출력한다. 그 결과 상기 키 스케쥴 장치(700)는 상기 클럭 신호(CLK)의 13번째 사이클 동안 상기 출력 키 데이터들(x4, x5, x0, x1), 즉, 상기 저장 키 데이터들(r[46], r[47])과 상기 입력 키 데이터들(w[44], w[45])을 포함하는 상기 제2 복호 라운드 키(DRKEY2)를 발생한다. 여기에서, 상기 클럭 신호(CLK)의 13번째 사이클 동안 상기 저장 키 데이터들(r[46], r[47])과 상기 입력 키 데이터들(w[44], w[45])을 포함하는 상기 제2 복호 라운드 키(ERKEY2)와 상기 저장 키 데이터들(r[48]∼r[51])이 상기 블록 라운드 처리부(602)에 입력된다.
상기 제1 내지 제6 레지스터들(721∼726)은 상기 클럭 신호(CLK)에 응답하여, 상기 입력 키 데이터들(w[40]∼w[45])을 각각 저장하고, 저장된 상기 입력 키 데이터들(w[40]∼w[45])을 저장 키 데이터들(r[40]∼r[45])로서 각각 출력한다.
이 후, 상기 내부 선택 신호들(M1∼M3)이 디세이블 되고, 상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)과 상기 출력 선택 신호들(S1, S2)이 디세이블 된다. 상기 내부 선택 신호들(M1∼M3)에 응답하여 상기 제1 내지 제6 내부 선택 회로들(761∼766)이 상기 저장 키 데이터들(r[40]∼r[45])을 출력 키 데이터들(x0∼x7)로서 출력한다. 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 선택부(770)는 상기 출력 키 데이터들(x0∼x3)을 선택하여 상기 제2 복호 라운드 키(DRKEY2)로서 출력한다. 그 결과 상기 키 스케쥴 장치(700)는 상기 클럭 신호(CLK)의 14번째 사이클 동안 상기 출력 키 데이터들(x0∼x3), 즉, 상기 저장 키 데이터들(r[40]∼r[43])을 포함하는 상기 제2 복호 라운드 키(DRKEY2)를 발생한다. 이 후, 상기 로드 인에이블 신호들(LD1, LD1B∼LD3, LD3B)이 다시 인에이블 된다.
상기 키 스케쥴 장치(700)는 상기 제1 내지 제6 체인 연산기들(731∼736)로부터 연산 키 데이터들(c[0]∼c[5])이 출력될 때까지 상술한 연산 동작들과 상기 제2 복호 라운드 키(DRKEY2)의 출력 동작을 반복적으로 수행한다.
다음으로, 상기 키 스케쥴 장치(700)가 상기 초기 키 데이터들(w[0]∼w[5])을 포함하는 상기 제2 초기 라운드 키(EIKEY2)를 수신하지 않은 경우 상기 제2 복호 라운드 키(DRKEY2)를 발생하는 과정을 설명한다. 먼저, 상기 제1 내지 제6 레지스터들(721∼726)이 미리 저장되어 있던 상기 입력 키 데이터들(w[46]∼w[51])을 저장 키 데이터들(r[46]∼r[51])로서 각각 출력한다.
이 때, 상기 내부 선택 신호들(M1∼M3)이 디세이블되고, 상기 출력 선택 신호들(S1, S2)이 인에이블된다. 상기 내부 선택 신호들(M1∼M3)에 응답하여 상기 제1 내지 제6 내부 선택 회로들(761∼766)이 상기 저장 키 데이터들(r[46]∼r[51])을 출력 키 데이터들(x0∼x5)로서 각각 출력한다. 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 선택부(770)가 상기 출력 키 데이터들(x2∼x5)(즉, 상기 저장 키 데이터들(r[48]∼r[51]))을 선택하여 출력한다. 이 후 상기 키 스케쥴 장치(700)의 동작은 상기 초기 키 데이터들(w[0]∼w[5])을 포함하는 상기 제2 초기 라운드 키(EIKEY2)를 수신한 경우 상기 제2 복호 라운드 키(DRKEY2)를 발생하는 과정과 실질적으로 동일하므로 그 구체적인 설명은 생략된다. 상기 키 스케쥴 장치(700)의 상기 제2 복호 라운드 키(DRKEY2) 발생 과정 동안, 상기 제1 내지 제6 레지스터들(721∼726)은 상기 클럭 신호(CLK)의 두 사이클마다 업데이트된 입력 키 데이터들(w[6n]∼w[6n+5])을 저장한다. 여기에서, 각 클럭 사이클별로 상기 키 스케쥴 장치(700)에 의해 발생되는 상기 제2 복호 라운드 키(DRKEY2)는 다음의 표로 나타낼 수 있다.
클럭사이클 DRKEY2
x0 x1 x2 x3 x4 x5 x6 x7
1 - - r[48] r[49] r[50] r[51] - -
r[46] r[47] - - w[44] w[45] - -
2 r[40] r[41] r[42] r[43] - - - -
... ... ... ... ... ... ... - -
12 r[0] r[1] r[2] r[3] - - - -
한편, 도 7b는 상기 키 스케쥴 장치(700)가 상기 제2 복호 라운드 키(DRKEY2)를 발생하는 동안 상기 제1 내지 제8 레지스터들(721∼728)로부터 출력되는 상기 저장 키 데이터들(r[8n]∼r[8n+7])의 타이밍도이다. 상기 [표 4]와 도 7b에서 참조되는 것과 같이, 상기 제1 내지 제6 레지스터들(721∼726)로부터 출력되는 상기 저장 키 데이터들(r[8n]∼r[8n+5])은 상기 클럭 신호(CLK)의 두 사이클마다 토글링된다. 또, 상기 제7 및 제8 레지스터들(727, 728)로부터 출력되는 상기 저장 키 데이터들(r[8n+6], r[8n+7])은 상기 키 스케쥴 장치(700)가 상기 제2 복호 라운드 키(DRKEY2)를 모두 발생하는 동안 토글링되지 않는다. 그 결과 상기 제7 및 제8 레지스터들(727, 728)에 의한 소모 전류가 감소된다.
다음으로, 상기 키 스케쥴 장치(700)가 초기 키 데이터들(w[0]∼w[7])을 포함하는 제3 초기 라운드 키(EIKEY3)를 수신하고, 제3 암호 라운드 키(ERKEY3)를 발생하는 과정을 설명한다. 상기 키 스케쥴 장치(700)에 상기 초기 키 데이터들(w[0]∼w[7])을 포함하는 상기 제3 초기 라운드 키(EIKEY3)가 입력될 때, 상기 로드 인에이블 신호들(LD1, LD1B∼LD4, LD4B)과 상기 내부 선택 신호들(M1∼M4)이 인에이블 된다.
상기 로드 인에이블 신호들(LD1, LD1B∼LD4, LD4B)에 응답하여 상기 제1 내지 제8 로드 인에이블 회로들(711∼718)이 상기 초기 키 데이터들(w[0]∼w[7])을 입력 키 데이터들(w[0]∼w[7])로서 각각 출력한다. 상기 내부 선택 신호들(M1∼M4)에 응답하여, 상기 제1 내지 제8 내부 선택 회로들(761∼768)이 상기 입력 키 데이터들(w[0]∼w[7])을 출력 키 데이터들(x0∼x7)로서 각각 출력한다. 상기 제1 내지 제8 레지스터들(721∼728)은 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[0]∼w[7])을 각각 수신하여 저장하고, 저장된 상기 입력 키 데이터들(w[0]∼w[7])을 저장 키 데이터들(r[0]∼r[7])로서 각각 출력한다.
이 때, 상기 연산 제어 신호(P2, P4)들이 디세이블 되고, 상기 연산 제어 신호(P3)가 인에이블 된다. 상기 연산 제어 신호들(P2, P3)에 응답하여, 상기 제2 선택 회로(742)가 상기 출력 키 데이터(x7)(즉, 상기 입력 키 데이터(w[7]))를 선택하여 상기 워드 로테이션부(751)에 출력한다. 상기 워드 로테이션부(751)는 상기 저장 키 데이터(r[7])의 비트들을 로테이션하고, 로테이션 키 데이터(ROT)를 출력한다. 상기 제3 선택 회로(743)는 상기 연산 제어 신호(P4)에 응답하여 상기 로테이션 키 데이터(ROT)를 선택하여 상기 워드 치환부(752)에 출력한다. 상기 워드 치환부(752)는 상기 로테이션 키 데이터(ROT)를 소정 값으로 치환하고 치환 키 데이터(SUB)를 출력한다. 상기 독립 연산기(739)는 상기 치환 키 데이터(SUB)와 상기 라운드 상수(RNC)를 논리 연산하여 변환 키 데이터(SUC)를 출력한다.
상기 제1 체인 연산기(731)는 상기 변환 키 데이터(SUC)와 상기 저장 키 데이터(r[0])를 논리 연산하여 연산 키 데이터(c[8])를 출력한다. 상기 제2 내지 제4 체인 연산기들(732∼734)은 상기 저장 키 데이터들(r[1]∼r[3])과 앞단으로부터 수신되는 연산 키 데이터들(c[8]∼c[10])을 각각 논리 연산하여, 연산 키 데이터들(c[9]∼c[11])을 각각 출력한다.
이 때, 상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)과 상기 내부 선택 신호들(M1, M2)만이 인에이블 되고, 상기 로드 인에이블 신호들(LD3, LD3B, LD4, LD4B)과 상기 내부 선택 신호들(M3, M4)은 디세이블 된다. 또, 상기 출력 선택 신호들(S1, S2)이 모두 디세이블 되고, 상기 연산 제어 신호들(P1, P4)이 인에이블 된다.
상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)에 응답하여 상기 제1 내지 제4 로드 인에이블 회로들(711∼714)이 상기 연산 키 데이터들(c[8]∼c[11])을 입력 키 데이터들(w[8]∼w[11])로서 각각 출력한다. 상기 로드 인에이블 신호들(LD3, LD3B, LD4, LD4B)에 응답하여 상기 제5 내지 제8 로드 인에이블 회로들(715∼718)은 상기 저장 키 데이터들(r[4]∼r[7])을 상기 입력 키 데이터들(w[4]∼w[7])로서 계속 출력한다. 상기 내부 선택 신호들(M1, M2)에 응답하여 상기 제1 내지 제4 내부 선택 회로들(761∼764)이 상기 입력 키 데이터들(w[8]∼w[11])을 선택하여, 상기 출력 키 데이터들(x0∼x3)로서 각각 출력한다. 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 선택부(770)가 상기 출력 키 데이터들(x0∼x3)을 선택하여 상기 제3 암호 라운드 키(ERKEY3)로서 출력한다. 그 결과 상기 키 스케쥴 장치(700)는 상기 클럭 신호(CLK)의 두 번째 사이클 동안 상기 출력 키 데이터들(x0∼x3), 즉, 상기 입력 키 데이터들(w[8]∼w[11])을 포함하는 상기 제3 암호 라운드 키(ERKEY3)를 발생한다. 여기에서, 상기 클럭 신호(CLK)의 첫 번째 사이클 동안, 상기 블록 라운드 처리부(602)에는 도 2에 도시된 것과 같이, 상기 제3 초기 라운드 키(EIKEY3)의 상기 초기 키 데이터들(w[0]∼w[7])이 외부로부터 직접 입력된다.
상기 연산 제어 신호(P4)에 응답하여 상기 제3 선택 회로(743)가 상기 연산 키 데이터(c[11])를 선택하여, 상기 워드 치환부(752)에 출력한다. 상기 워드 치환부(752)는 상기 연산 키 데이터(c[11])를 소정 값으로 치환하고 치환 키 데이터(SUB)를 출력한다. 상기 제1 선택 회로(741)는 상기 연산 제어 신호(P1)에 응답하여 상기 치환 키 데이터(SUB)를 상기 제5 체인 연산기(735)에 출력한다.
상기 제5 체인 연산기(735)는 상기 저장 키 데이터(r[4])와 상기 치환 키 데이터(SUB)를 논리 연산하고, 연산 키 데이터(c[12])를 출력한다. 상기 제6 내지 제8 체인 연산기들(736∼738)은 상기 저장 키 데이터들(r[5]∼r[7])과 앞단으로부터 수신되는 연산 키 데이터들(c[12]∼c[14])을 각각 논리 연산하여, 연산 키 데이터들(c[13]∼c[15])을 각각 출력한다.
이 때, 상기 로드 인에이블 신호들(LD3, LD3B, LD4, LD4B), 상기 내부 선택 신호들(M3, M4), 및 상기 출력 선택 신호(S1)가 인에이블 된다. 또, 상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B), 상기 내부 선택 신호들(M1, M2), 및 상기 출력 선택 신호(S2)가 디세이블된다. 상기 로드 인에이블 신호들(LD3, LD3B, LD4, LD4B)에 응답하여 상기 제5 내지 제8 로드 인에이블 회로들(715∼718)이 상기 연산 키 데이터들(c[12]∼c[15])을 입력 키 데이터들(w[12]∼w[15])로서 각각 출력한다. 상기 내부 선택 신호들(M3, M4)에 응답하여 상기 제5 내지 제8 내부 선택 회로들(765∼768)이 상기 입력 키 데이터들(w[12]∼w[15])을 선택하여, 상기 출력 키 데이터들(x4∼x7)로서 각각 출력한다. 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 선택부(770)가 상기 출력 키 데이터들(x4∼x7)을 선택하여 상기 제3 암호 라운드 키(ERKEY3)로서 출력한다. 그 결과 상기 키 스케쥴 장치(700)는 상기 클럭 신호(CLK)의 세 번째 사이클 동안 상기 출력 키 데이터들(x4∼x7), 즉, 상기 입력 키 데이터들(w[12]∼w[15])을 포함하는 상기 제3 암호 라운드 키(ERKEY3)를 발생한다.
상기 제1 내지 제8 레지스터들(721∼728)은 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[8]∼w[15])을 각각 저장하고, 저장된 상기 입력 키 데이터들(w[8]∼w[15])을 저장 키 데이터들(r[8]∼r[15])로서 각각 출력한다. 이 후, 상기 키 스케쥴 장치(700)는 상기 제1 내지 상기 제8 체인 연산기들(731∼738)이 연산 키 데이터들(c[52]∼c[59])을 각각 출력할 때까지 상기 연산 동작과 상기 제3 암호 라운드 키(ERKEY3)의 출력 동작을 반복적으로 수행한다.
또, 상기 제1 내지 상기 제8 체인 연산기들(731∼738)이 상기 연산 키 데이터들(c[52]∼c[59])을 각각 출력할 때, 상기 제1 내지 상기 제8 레지스터들(721∼728)이 상기 제1 내지 제8 로드 인에이블 회로들(711∼718)로부터 수신되는 상기 입력 키 데이터들(w[52]∼w[59])을 저장하고, 그 저장 상태를 유지한다. 상기 입력 키 데이터들(w[52]∼w[59])은 상기 키 스케쥴 장치(700)가 제3 복호 라운드 키(DRKEY3)를 발생할 때 사용된다.
또, 상기 키 스케쥴 장치(700)의 상기 제3 암호 라운드 키(ERKEY3) 발생 과정 동안, 첫 번째 사이클을 제외하고, 상기 클럭 신호(CLK)의 매 사이클마다 상기 제1 내지 제4 레지스터들(721∼724)과 상기 제5 내지 제8 레지스터들(725∼728)이 교번적으로 업데이트된 연산 키 데이터들(c[8n]∼c[8n+3], c[8n+4]∼c[8n+7])을 각각 저장한다. 그 결과 상기 클럭 신호(CLK)의 한 사이클 동안 상기 워드 치환부(752)에 의한 치환 과정이 한 번만 수행되므로, 상기 워드 치환부(752)는 4개의 치환 테이블들만을 포함하면 된다. 여기에서, 각 클럭 사이클별로 상기 키 스케쥴 장치(700)에 의해 발생되는 상기 제3 암호 라운드 키(ERKEY3)는 다음의 표로 나타낼 수 있다.
클럭사이클 ERKEY3
x0 x1 x2 x3 x4 x5 x6 x7
1 w[0] w[1] w[2] w[3] - - - -
- - - - w[4] w[5] w[6] w[7]
2 w[8] w[9] w[10] w[11] - - - -
... ... ... ... ... ... ... - -
14 w[56] w[57] w[58] w[59] - - - -
한편, 도 8a는 상기 키 스케쥴 장치(700)가 상기 제3 암호 라운드 키(ERKEY3)를 발생하는 동안 상기 제1 내지 제8 레지스터들(721∼728)로부터 출력되는 상기 저장 키 데이터들(r[8n]∼r[8n+7])의 타이밍도이다. 상기 [표 5]와 도 8a에서 참조되는 것과 같이, 상기 클럭 신호(CLK)의 매 사이클마다 상기 제1 내지 제4 레지스터들(721∼724)로부터 출력되는 상기 저장 키 데이터들(r[8n]∼r[8n+3])과 상기 제5 내지 제8 레지스터들(725∼728)로부터 출력되는 상기 저장 키 데이터들(r[8n+4]∼r[8n+7])이 교번적으로 토글링된다.
다음으로, 상기 키 스케쥴 장치(700)가 상기 제3 복호 라운드 키(DRKEY3)를 발생하는 과정을 설명한다. 상기 키 스케쥴 장치(700)가 상기 제3 복호 라운드 키(DRKEY3)를 발생하는 과정은 키 스케쥴 장치(700)가 초기 키 데이터들(w[0]∼w[7])을 포함하는 제3 초기 라운드 키(EIKEY3)를 수신하는 경우와 수신하지 않은 경우로 구분될 수 있다.
먼저, 키 스케쥴 장치(700)가 상기 초기 키 데이터들(w[0]∼w[7])을 포함하는 상기 제3 초기 라운드 키(EIKEY3)를 수신하는 경우 상기 제3 복호 라운드 키(DRKEY3)를 발생하는 과정을 설명한다.
상기 키 스케쥴 장치(700)에 상기 초기 키 데이터들(w[0]∼w[7])을 포함하는 상기 제3 초기 라운드 키(EIKEY3)가 입력될 때, 로드 인에이블 신호들(LD1, LD1B∼LD4, LD4B)이 모두 인에이블된다. 상기 로드 인에이블 신호들(LD1, LD1B∼LD4, LD4B)에 응답하여 상기 제1 내지 제8 로드 인에이블 회로들(711∼718)이 상기 초기 키 데이터들(w[0]∼w[7])을 입력 키 데이터들(w[0]∼w[7])로서 각각 출력한다. 상기 제1 내지 상기 제8 레지스터들(721∼728)은 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[0]∼w[7])을 저장하고, 저장된 상기 입력 키 데이터들(w[0]∼w[7])을 저장 키 데이터들(r[0]∼r[7])로서 각각 출력한다.
이 후, 상기 키 스케쥴 장치(700)는 상기 제1 내지 제8 체인 연산기들(731∼738)로부터 연산 키 데이터들(c[52]∼c[59])이 출력될 때까지 상술한 상기 제3 암호 라운드 키(ERKEY3)의 생성을 위한 연산 동작을 반복적으로 수행한다. 상기 제1 내지 제8 체인 연산기들(731∼738)이 상기 연산 키 데이터들(c[52]∼c[59])을 출력할 때까지 상기 키 스케쥴 장치(700)가 상술한 연산 동작을 반복 수행하는 동안, 상기 블록 라운드 처리부(602)는 상기 라운드 제어신호(RCTL)에 응답하여, 상기 키 스케쥴 장치(700)로부터 출력되는 상기 제3 암호 라운드 키(ERKEY3)를 수신하지 않는다. 여기에서, 상술한 연산 동작을 반복 수행하는 동안, 도 5를 참고하여 상술한 것과 같이, 상기 출력 선택부(770)가 상기 제3 암호 라운드 키(ERKEY3)를 출력하지 않도록 할 수도 있다.
상기 제1 내지 제8 체인 연산기들(731∼738)로부터 상기 연산 키 데이터들(c[52]∼c[59])이 출력될 때, 상기 로드 인에이블 신호들(LD1, LD1B∼LD4, LD4B)에 응답하여 상기 제1 내지 제8 로드 인에이블 회로들(711∼718)이 상기 연산 키 데이터들(c[52]∼c[59])을 입력 키 데이터들(w[52]∼w[59])로서 각각 출력한다. 상기 제1 내지 제8 레지스터들(721∼728)이 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[52]∼w[59])을 수신하여 저장하고, 저장된 상기 입력 키 데이터들(w[52]∼w[59])을 저장 키 데이터들(r[52]∼r[59])로서 각각 출력한다.
이 때, 상기 내부 선택 신호들(M1∼M4)과 상기 연산 제어 신호들(P2, P4)이 디세이블되고, 상기 연산 제어 신호(P3)가 인에이블 된다. 또, 상기 출력 선택 신호(S1)가 인에이블 되고, 상기 출력 선택 신호(S2)가 디세이블 된다. 상기 내부 선택 신호들(M1∼M4)에 응답하여 상기 제1 내지 제8 내부 선택 회로들(761∼768)이 상기 저장 키 데이터들(r[52]∼r[59])을 출력 키 데이터들(x0∼x7)로서 각각 출력한다. 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 선택부(770)가 상기 출력 키 데이터들(x4∼x7)(즉, 상기 저장 키 데이터들(r[56]∼r[59]))을 선택하여 출력한다.
이 후, 상기 출력 선택 신호들(S1, S2)이 모두 디세이블 된다. 상기 출력 선택 신호들(S1, S2)에 응답하여, 상기 출력 선택부(770)가 상기 출력 키 데이터들(x0∼x3)(즉, 상기 저장 키 데이터들(r[52]∼r[55]))을 선택하여 출력한다. 그 결과 상기 키 스케쥴 장치(700)는 상기 클럭 신호(CLK)의 15번째 사이클 동안 상기 출력 키 데이터들(x0∼x3), 즉, 상기 저장 키 데이터들(r[52]∼r[55])을 포함하는 상기 제3 복호 라운드 키(DRKEY3)를 발생한다. 여기에서, 상기 클럭 신호(CLK)의 15번째 사이클 동안 상기 저장 키 데이터들(r[52]∼r[55])을 포함하는 상기 제3 복호 라운드 키(DRKEY3)와 상기 저장 키 데이터들(r[56]∼r[59])이 상기 블록 라운드 처리부(602)에 입력된다.
상기 연산 제어 신호들(P2, P3)에 응답하여 상기 제2 선택 회로(742)가 상기 출력 키 데이터(x7)(즉, 상기 저장 키 데이터(r[59]))를 선택하여 상기 워드 로테이션부(751)에 출력한다. 상기 워드 로테이션부(751)는 상기 저장 키 데이터(r[59])의 비트들을 로테이션하고, 로테이션 키 데이터(ROT)를 출력한다. 상기 제3 선택 회로(743)는 상기 연산 제어 신호(P4)에 응답하여 상기 로테이션 키 데이터(ROT)를 선택하여 상기 워드 치환부(752)에 출력한다. 상기 워드 치환부(752)는 상기 로테이션 키 데이터(ROT)를 소정 값으로 치환하고 치환 키 데이터(SUB)를 출력한다. 상기 독립 연산기(739)는 상기 치환 키 데이터(SUB)와 상기 라운드 상수(RNC)를 논리 연산하여 변환 키 데이터(SUC)를 출력한다.
상기 제1 체인 연산기(731)는 상기 변환 키 데이터(SUC)와 상기 저장 키 데이터(r[52])를 논리 연산하여 연산 키 데이터(c[44])를 출력한다. 상기 제2 내지 제4 체인 연산기들(732∼734)은 상기 저장 키 데이터들(r[53]∼r[55])과 앞단으로부터 수신되는 연산 키 데이터들(c[44]∼c[46])을 각각 논리 연산하여, 연산 키 데이터들(c[45]∼c[47])을 각각 출력한다.
이 때, 상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)이 디세이블 되고, 상기 연산 제어 신호들(P1, P4)이 인에이블 된다. 상기 제1 내지 제4 로드 인에이블 회로들(711∼714)은 상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)에 응답하여 상기 저장 키 데이터들(r[52]∼r[55])을 상기 입력 키 데이터들(w[52]∼w[55])로서 계속 출력한다.
상기 연산 제어 신호(P4)에 응답하여 상기 제3 선택 회로(743)가 상기 연산 키 데이터(c[47])를 선택하여, 상기 워드 치환부(752)에 출력한다. 상기 워드 치환부(752)는 상기 연산 키 데이터(c[47])를 소정 값으로 치환하고 치환 키 데이터(SUB)를 출력한다. 상기 제1 선택 회로(741)는 상기 연산 제어 신호(P1)에 응답하여 상기 치환 키 데이터(SUB)를 상기 제5 체인 연산기(735)에 출력한다. 상기 제5 체인 연산기(735)는 상기 저장 키 데이터(r[56])와 상기 치환 키 데이터(SUB)를 논리 연산하고, 연산 키 데이터(c[48])를 출력한다. 상기 제6 내지 제8 체인 연산기들(736∼738)은 상기 저장 키 데이터들(r[57]∼r[59])과 앞단으로부터 수신되는 연산 키 데이터들(c[48]∼c[50])을 각각 논리 연산하여, 연산 키 데이터들(c[49]∼c[51])을 각각 출력한다.
이 때, 상기 로드 인에이블 신호들(LD3, LD3B, LD4, LD4B)과 상기 내부 선택 신호들(M3, M4), 및 상기 출력 선택 신호(S1)가 인에이블되고 상기 출력 선택 신호(S2)가 디세이블된다. 상기 로드 인에이블 신호들(LD3, LD3B, LD4, LD4B)에 응답하여 상기 제5 내지 제8 로드 인에이블 회로들(715∼718)이 상기 연산 키 데이터들(c[48]∼c[51])을 입력 키 데이터들(w[48]∼w[51])로서 각각 출력한다. 상기 내부 선택 신호들(M3, M4)에 응답하여 상기 제5 내지 제8 내부 선택 회로들(765∼768)이 상기 입력 키 데이터들(w[48]∼w[51])을 선택하여, 상기 출력 키 데이터들(x4∼x7)로서 각각 출력한다. 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 선택부(770)가 상기 출력 키 데이터들(x4∼x7)을 선택하여 상기 제3 복호 라운드 키(DRKEY3)로서 출력한다. 그 결과 상기 키 스케쥴 장치(700)는 상기 클럭 신호(CLK)의 16번째 사이클 동안 상기 출력 키 데이터들(x4∼x7), 즉, 상기 입력 키 데이터들(w[48]∼w[51])을 포함하는 상기 제3 복호 라운드 키(DRKEY3)를 발생한다.
이 후, 상기 제5 내지 제8 레지스터들(725∼728)은 상기 입력 키 데이터들(w[48]∼w[51])을 저장하고, 저장된 상기 입력 키 데이터들(w[48]∼w[51])을 저장 키 데이터들(r[48]∼r[51])로서 각각 출력한다. 이 때, 상기 로드 인에이블 신호들(LD3, LD3B, LD4, LD4B)과 상기 내부 선택 신호들(M3, M4)이 디세이블되고, 상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)과 상기 내부 선택 신호들(M1, M2)이 인에이블된다. 또, 상기 출력 선택 신호들(S1, S2)과 연산 제어 신호들(P2, P4)이 모두 디세이블 되고, 상기 연산 제어 신호(P3)가 인에이블 된다.
상기 로드 인에이블 신호들(LD1, LD1B, LD2, LD2B)에 응답하여 상기 제1 내지 제4 로드 인에이블 회로들(711∼714)이 상기 연산 키 데이터들(c[44]∼c[47])을 상기 입력 키 데이터들(w[44]∼w[47])로서 출력한다. 상기 내부 선택 신호들(M1, M2)에 응답하여, 상기 제1 내지 제4 내부 선택 회로들(761∼764)이 입력 키 데이터들(w[44]∼w[47])을 선택하여 출력 키 데이터들(x0∼x3)로서 출력한다. 상기 제5 내지 제8 내부 선택 회로들(765∼768)은 상기 내부 선택 신호들(M3, M4)에 응답하여 상기 저장 키 데이터들(r[48]∼r[51])을 선택하여 상기 출력 키 데이터들(x4∼x7)로서 출력한다. 상기 출력 선택 신호들(S1, S2)에 응답하여 상기 출력 선택부(770)가 상기 출력 키 데이터들(x0∼x3)을 선택하여, 상기 제3 복호 라운드 키(DRKEY3)로서 출력한다. 그 결과 상기 키 스케쥴 장치(700)는 상기 클럭 신호(CLK)의 17번째 사이클 동안 상기 출력 키 데이터들(x0∼x3), 즉, 상기 입력 키 데이터들(w[44]∼w[47])을 포함하는 상기 제3 복호 라운드 키(DRKEY3)를 발생한다.
상기 제1 내지 제4 레지스터들(721∼724)은 상기 클럭 신호(CLK)에 응답하여 상기 입력 키 데이터들(w[44]∼w[47])을 각각 저장하고, 저장된 상기 입력 키 데이터들(w[44]∼w[47])을 저장 키 데이터들(r[44]∼r[47])로서 각각 출력한다. 상기 연산 제어 신호(P4)에 응답하여 상기 제2 선택 회로(742)가 상기 출력 키 데이터(x7)(즉, 상기 저장 키 데이터(r[51]))를 선택하여 상기 워드 로테이션부(751)에 출력한다. 이 후, 상기 키 스케쥴 장치(700)는 상기 제1 내지 상기 제8 체인 연산기들(731∼738)이 연산 키 데이터들(c[0]∼c[7])을 각각 출력할 때까지 상기 연산 동작과 상기 제3 복호 라운드 키(DRKEY3)의 출력 동작을 반복적으로 수행한다.
다음으로, 상기 키 스케쥴 장치(700)가 상기 초기 키 데이터들(w[0]∼w[7])을 포함하는 상기 제3 초기 라운드 키(EIKEY3)를 수신하지 않은 경우 상기 제3 복호 라운드 키(DRKEY3)를 발생하는 과정을 설명한다.
상기 제1 내지 제8 레지스터들(721∼728)은 미리 저장되어 있던 상기 입력 키 데이터들(w[52]∼w[59])을 저장 키 데이터들(r[52]∼r[59])로서 각각 출력한다. 이 후, 상기 로드 인에이블 신호들(LD1, LD1B∼LD4, LD4B)과 상기 내부 선택 신호들(M1∼M4)이 모두 디세이블된다. 상기 로드 인에이블 신호들(LD1, LD1B∼LD4, LD4B)에 응답하여, 상기 제1 내지 제8 로드 인에이블 회로들(711∼718)이 상기 저장 키 데이터들(r[52]∼r[59])을 상기 입력 키 데이터들(w[52]∼w[59])로서 계속 출력한다. 상기 내부 선택 신호들(M1∼M4)에 응답하여 상기 제1 내지 제8 내부 선택 회로들(761∼768)이 상기 저장 키 데이터들(r[52]∼r[59])을 출력 키 데이터들(x0∼x7)로서 출력한다. 이 후 상기 키 스케쥴 장치(700)의 동작은 상기 초기 키 데이터들(w[0]∼w[7])을 포함하는 상기 제3 초기 라운드 키(EIKEY3)를 수신한 경우 상기 제3 복호 라운드 키(DRKEY3)를 발생하는 과정과 실질적으로 동일하므로 그 구체적인 설명은 생략된다. 상기 키 스케쥴 장치(700)의 상기 제3 복호 라운드 키(DRKEY3) 발생 과정 동안, 상기 클럭 신호(CLK)의 매 사이클마다 상기 제1 내지 제4 레지스터들(721∼724)과 상기 제5 내지 제8 레지스터들(725∼728)이 교번적으로 업데이트된 입력 키 데이터들(w[8n]∼w[8n+3], w[8n+4]∼w[8n+7])을 각각 저장한다. 여기에서, 각 클럭 사이클별로 상기 키 스케쥴 장치(700)에 의해 발생되는 상기 제3 복호 라운드 키(DRKEY3)는 다음의 표로 나타낼 수 있다.
클럭사이클 DRKEY3
x0 x1 x2 x3 x4 x5 x6 x7
1 - - - - r[56] r[57] r[58] r[59]
r[52] r[53] r[54] r[55] - - - -
2 - - - - w[48] w[49] w[50] w[51]
... ... ... ... ... ... ... ... ...
14 w[0] w[1] w[2] w[3] - - - -
한편, 도 8b는 상기 키 스케쥴 장치(700)가 상기 제3 복호 라운드 키(DRKEY3)를 발생하는 동안 상기 제1 내지 제8 레지스터들(721∼728)로부터 출력되는 상기 저장 키 데이터들(r[8n]∼r[8n+7])의 타이밍도이다. 상기 [표 6]과 도 8b에서 참조되는 것과 같이, 상기 클럭 신호(CLK)의 매 사이클마다 상기 제1 내지 제4 레지스터들(721∼724)로부터 출력되는 상기 저장 키 데이터들(r[8n]∼r[8n+3])과 상기 제5 내지 제8 레지스터들(725∼728)로부터 출력되는 상기 저장 키 데이터들(r[8n+4]∼r[8n+7])이 교번적으로 토글링된다.
도 9는 본 발명의 다른 실시예에 따른 키 스케쥴 장치(800)를 상세히 나타내는 도면이다. 도 9를 참고하면, 키 스케쥴 장치(800)는 키 저장부(801), 키 연산부(802), 및 키 출력부(803)를 포함한다. 여기에서, 상기 키 스케쥴 장치(800)의 구성 및 구체적인 동작 설명은 도 3에 도시된 상기 키 스케쥴 장치(700)와 한 가지 차이점을 제외하고 실질적으로 동일하므로 생략된다.
상기 키 스케쥴 장치들(800, 700)의 차이점은 상기 키 스케쥴 장치(800)의 상기 키 저장부(801)가 제1 내지 제4 클럭 게이트 회로들(811∼814)과 제1 내지 제8 레지스터들(821∼828)을 포함하는 것이다. 상기 제1 내지 제4 클럭 게이트 회로들(811∼814)은 각각 두 개의 레지스터들에 연결된다. 즉, 상기 제1 클럭 게이트 회로(811)가 상기 제1 및 제2 레지스터들(821, 822)에 연결되고, 상기 제2 클럭 게이트 회로(812)가 상기 제3 및 제4 레지스터들(823, 824)에 연결된다. 또, 상기 제3 클럭 게이트 회로(813)가 상기 제5 및 제6 레지스터들(825, 826)에 연결되고, 상기 제4 클럭 게이트 회로(814)가 상기 제7 및 제8 레지스터들(827, 828)에 연결된다. 상기 제1 내지 제4 클럭 게이트 회로들(811∼814) 각각은 로드 인에이블 신호들(LD1∼LD4)에 응답하여 상기 제1 내지 제8 레지스터들(821∼828)에 클럭 신호(CLK)를 공급하거나 또는 공급을 중단한다. 그 결과, 제1 내지 제8 레지스터들(821∼828)이 입력되는 신호를 저장하거나 또는 저장하지 않는다.
도 10은 도 9에 도시된 클럭 게이트 회로들과 레지스터들을 상세히 나타내는 도면으로서, 제1 클럭 게이트 회로(811)와 제1 및 제2 레지스터들(821, 822)만이 도시된다. 상기 제2 내지 제4 클럭 게이트 회로들(812∼814)의 구성 및 구체적인 동작 설명은 상기 제1 클럭 게이트 회로(811)와 실질적으로 동일하므로 생략된다. 도 10을 참고하면, 상기 제1 클럭 게이트 회로(811)는 AND 게이트로 구현될 수 있다. 상기 제1 클럭 게이트 회로(811)는 로드 인에이블 신호(LD1)와 클럭 신호(CLK)를 수신한다. 상기 제1 클럭 게이트 회로(811)는 로드 인에이블 신호(LD1)에 응답하여 클럭 신호(CLK)를 상기 제1 및 제2 레지스터들(821, 822)에 출력하거나 또는 출력하지 않는다. 즉, 상기 제1 클럭 게이트 회로(811)는 상기 로드 인에이블 신호(LD1)가 인에이블될 때 상기 클럭 신호(CLK)를 출력하고, 상기 로드 인에이블 신호(LD1)가 디세이블될 때 상기 클럭 신호(CLK)를 출력하지 않는다. 상기 제1 및 제2 레지스터들(821, 822)은 상기 클럭 신호(CLK)를 수신하면 입력되는 신호(w[0], w[1] 또는 c[8n], c[8n+1])를 저장한다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상기한 것과 같이, 본 발명에 따른 키 스케쥴 장치는 초기 라운드 키의 길이에 대응하는 암호 라운드 키와 복호 라운드 키를 선택적으로 발생하고, 라운드 키 생성 동작에 필요한 치환 테이블의 수를 감소시켜 전체 크기를 감소시킬 수 있는 효과가 있다.
또, 본 발명에 따른 키 스케쥴 장치는 초기 라운드 키의 길이에 따라 일부 레지스터들의 출력 신호가 토글링 되는 것을 방지하여, 소모 전류를 감소시킬 수 있는 효과가 있다.
도 1은 종래 기술에 따른 키 스케쥴 장치를 구비하는 AES(advanced encryption standards algorithm) 알고리즘을 이용하는 암호화/복호화 장치를 나타내는 블록도이다.
도 2는 본 발명에 따른 키 스케쥴 장치를 구비하는 암호화/복호화 장치를 나타내는 블록도이다.
도 3은 본 발명의 일실시예에 따른 키 스케쥴 장치를 상세히 나타내는 블록도이다.
도 4는 도 3에 도시된 로드 인에이블 회로들과 레지스터들을 상세히 나타내는 도면이다.
도 5는 도 3에 도시된 출력 선택부를 상세히 나타내는 도면이다.
도 6은 도 3에 도시된 키 스케쥴 장치에 의해 제1 암호 라운드 키 또는 제1 복호 라운드 키가 생성될 때 레지스터들의 출력 신호들의 타이밍도이다.
도 7a와 도 7b는 도 3에 도시된 키 스케쥴 장치에 의해 제2 암호 라운드 키 또는 제2 복호 라운드 키가 생성될 때 레지스터들의 출력 신호들의 타이밍도이다.
도 8a와 도 8b는 도 3에 도시된 키 스케쥴 장치에 의해 제3 암호 라운드 키 또는 제3 복호 라운드 키가 생성될 때 레지스터들의 출력 신호들의 타이밍도이다.
도 9는 본 발명의 다른 실시예에 따른 키 스케쥴 장치를 상세히 나타내는 도면이다.
도 10은 도 9에 도시된 클럭 게이트 회로들과 레지스터들을 상세히 나타내는 도면이다.

Claims (30)

  1. 암호화/복호화 장치의 암호화 또는 복호화 동작에 필요한 라운드 키를 생성하는 키 스케쥴 장치에 있어서,
    로드 인에이블 신호들과 클럭 신호에 응답하여 연산 키 데이터들과 저장 키 데이터들 중 어느 하나를 입력 키 데이터들로서 수신하여 저장하고, 저장된 상기 입력 키 데이터들을 상기 저장 키 데이터들로서 출력하는 키 저장부;
    연산 제어 신호들에 응답하여 상기 저장 키 데이터들을 연산하고 그 연산 결과로서 상기 연산 키 데이터들을 출력하는 키 연산부; 및
    출력 제어 신호들에 응답하여 상기 입력 키 데이터들과 상기 저장 키 데이터들 중 일부를 선택하여 암호 라운드 키 또는 복호 라운드 키로서 출력하는 키 출력부를 구비하는 것을 특징으로 하는 키 스케쥴 장치.
  2. 제1항에 있어서,
    상기 키 저장부는 외부로부터 초기 라운드 키의 초기 키 데이터들이 수신될 때 상기 로드 인에이블 신호들과 상기 클럭 신호에 응답하여 상기 초기 키 데이터들을 저장하고, 저장된 상기 초기 키 데이터들을 상기 저장 키 데이터들로서 출력하는 것을 특징으로 하는 키 스케쥴 장치.
  3. 제2항에 있어서,
    상기 초기 키 데이터들 각각은 N(N은 자연수) 비트이고,
    수신되는 상기 초기 키 데이터들의 전체 비트 수에 따라 상기 키 출력부로부터 출력되는 상기 암호 라운드 키의 개수 및 상기 복호 라운드 키의 개수와, 상기 키 연산부에 의해 수행되는 연산 동작의 반복 횟수가 결정되는 것을 특징으로 하는 키 스케쥴 장치.
  4. 제3항에 있어서,
    상기 키 연산부는 상기 연산 제어 신호들에 응답하여 상기 초기 키 데이터들의 전체 비트 수가 J(J는 상기 N 보다 큰 자연수) 비트일 때 상기 연산 동작을 R(R은 상기 N 보다 작은 자연수)회 반복적으로 수행하고, 상기 초기 키 데이터들의 전체 비트 수가 K(K는 상기 J 보다 큰 자연수) 비트일 때 상기 연산 동작을 S(S는 상기 R보다 크고 상기 N 보다 작은 자연수)회 반복적으로 수행하고, 상기 초기 키 데이터들의 전체 비트 수가 L(L은 상기 K 보다 큰 자연수) 비트일 때 상기 연산 동작을 T(T는 상기 S 보다 크고 상기 N 보다 작은 자연수)회 반복적으로 수행하는 것을 특징으로 하는 키 스케쥴 장치.
  5. 제4항에 있어서,
    상기 키 출력부는 상기 출력 제어 신호들에 응답하여 상기 초기 키 데이터들의 전체 비트 수가 상기 J 비트일 때, 각각 상기 J 비트를 포함하는 상기 R개의 상기 암호 라운드 키들 또는 상기 복호 라운드 키들을 순차적으로 발생하고, 상기 초기 키 데이터들의 전체 비트 수가 상기 K 비트일 때, 각각 상기 J 비트를 포함하는 상기 S개의 상기 암호 라운드 키들 또는 상기 복호 라운드 키들을 순차적으로 발생하고, 상기 초기 키 데이터들의 전체 비트 수가 L 비트일 때, 각각 상기 J 비트를 포함하는 상기 T개의 상기 암호 라운드 키들 또는 상기 복호 라운드 키들을 순차적으로 발생하는 것을 특징으로 하는 키 스케쥴 장치.
  6. 제5항에 있어서,
    상기 키 출력부는 상기 출력 제어 신호들에 응답하여 상기 R번째 또는 상기 S번째 또는 상기 T번째로 출력한 상기 암호 라운드 키를 첫 번째 라운드의 상기 복호 라운드 키로서 출력하는 것을 특징으로 하는 키 스케쥴 장치.
  7. 제4항에 있어서,
    상기 키 연산부는 상기 연산 동작을 상기 초기 키 데이터들의 전체 비트 수가 상기 J 비트일 때 2R회, 상기 초기 키 데이터들의 전체 비트 수가 상기 K 비트일 때 2S회, 상기 초기 키 데이터들의 전체 비트 수가 상기 L 비트일 때 2T회 각각 반복적으로 수행하는 것을 특징으로 하는 키 스케쥴 장치.
  8. 제7항에 있어서,
    상기 키 연산부가 상기 연산 동작을 R-1회 또는 S-1회 또는 T-1회 반복적으로 수행하는 동안 상기 키 출력부는 디세이블되고, 상기 키 연산부가 상기 R회 째 또는 상기 S회 째 또는 상기 T회 째 상기 연산 동작을 수행할 때 상기 키 출력부가 인에이블되어, 상기 복호 라운드 키의 출력 동작을 시작하는 것을 특징으로 하는 키 스케쥴 장치.
  9. 제7항에 있어서,
    상기 초기 키 데이터들의 전체 비트 수가 상기 J 비트일 때 상기 키 저장부는 상기 클럭 신호의 1주기마다 상기 입력 키 데이터들을 저장하고, 상기 초기 키 데이터들의 전체 비트 수가 상기 K 비트일 때 상기 키 저장부는 상기 클럭 신호의 2주기마다 상기 입력 키 데이터들을 저장하고, 상기 초기 키 데이터들의 전체 비트 수가 상기 L 비트일 때 상기 키 저장부는 상기 클럭 신호의 한 주기마다 상기 입력 키 데이터들 중 일부를 저장하는 것을 특징으로 하는 키 스케쥴 장치.
  10. 제4항에 있어서, 상기 키 저장부는,
    상기 로드 인에이블 신호들에 응답하여 상기 연산 키 데이터들과 상기 저장 키 데이터들 중 어느 하나를 상기 입력 키 데이터들로서 각각 출력하는 로드 인에이블 회로들; 및
    상기 클럭 신호에 응답하여 상기 로드 인에이블 회로들로부터 수신되는 상기 입력 키 데이터들을 각각 저장하고, 저장된 상기 입력 키 데이터들을 상기 저장 키 데이터들로서 각각 출력하는 레지스터들을 구비하는 것을 특징으로 하는 키 스케쥴 장치.
  11. 제10항에 있어서,
    상기 로드 인에이블 신호들 각각은 한 쌍의 상기 로드 인에이블 회로들에 인가되는 것을 특징으로 하는 키 스케쥴러 장치.
  12. 제10항에 있어서,
    상기 로드 인에이블 회로들은 상기 로드 인에이블 신호들이 인에이블될 때 상기 연산 키 데이터들을 상기 입력 키 데이터들로서 출력하고, 상기 로드 인에이블 신호들이 디세이블될 때 상기 저장 키 데이터들을 상기 입력 키 데이터들로서 출력하는 것을 특징으로 하는 키 스케쥴러 장치.
  13. 제12항에 있어서,
    상기 초기 키 데이터들의 전체 비트 수가 상기 J 비트 또는 상기 K 비트일 때, 상기 로드 인에이블 회로들 중 일부가 동작하고, 상기 초기 키 데이터들의 전체 비트 수가 상기 L 비트일 때, 상기 로드 인에이블 회로들이 모두 동작하는 것을 특징으로 하는 키 스케쥴 장치.
  14. 제13항에 있어서,
    상기 초기 키 데이터들의 전체 비트 수가 상기 J 비트일 때 동작하는 상기 로드 인에이블 회로들의 수는 상기 초기 키 데이터들의 전체 비트 수가 상기 K 비트일 때 동작하는 상기 로드 인에이블 회로들의 수 보다 작은 것을 특징으로 하는 키 스케쥴 장치.
  15. 제10항에 있어서,
    상기 키 저장부에 포함되는 상기 로드 인에이블 회로들과 상기 레지스터들의 수는 각각 L/N개인 것을 특징으로 하는 키 스케쥴러 장치.
  16. 제10항에 있어서, 상기 키 연산부는,
    상기 레지스터들 각각에 대응하도록 배치되고, 상호 직렬 연결되어 상기 저장 키 데이터들과 변환 키 데이터에 응답하여 상기 연산 키 데이터들을 각각 출력하는 체인 연산기들; 및
    치환 키 데이터와 라운드 상수를 논리 연산하여 상기 변환 키 데이터를 출력하는 독립 연산기를 구비하는 것을 특징으로 하는 키 스케쥴 장치.
  17. 제16항에 있어서,
    상기 체인 연산기들과 상기 독립 연산기는 각각 배타적 오아(OR) 연산을 수행하는 것을 특징으로 하는 키 스케쥴 장치.
  18. 제16항에 있어서,
    상기 체인 연산기들 중 제1 체인 연산기는 상기 변환 키 데이터와 상기 저장 키 데이터들 중 제1 저장 키 데이터를 논리 연산하여 상기 연산 키 데이터들 중 제1 연산 키 데이터를 출력하고, 나머지 상기 체인 연산기들 각각은 앞단의 체인 연산기로부터 수신되는 상기 연산 키 데이터와, 대응하는 상기 레지스터로부터 수신되는 상기 저장 키 데이터를 논리 연산하여 상기 연산 키 데이터를 출력하는 것을 특징으로 하는 키 스케쥴 장치.
  19. 제16항에 있어서,
    상기 출력 제어 신호들은 내부 선택 신호들과 출력 선택 신호들을 포함하고,
    상기 키 출력부는,
    상기 내부 선택 신호들에 응답하여 상기 입력 키 데이터들과 상기 저장 키 데이터들 중 어느 하나를 선택하여 출력 키 데이터들로서 각각 출력하는 내부 선택 회로들; 및
    상기 내부 선택 회로들로부터 상기 출력 키 데이터들을 수신하고, 상기 출력 선택 신호들에 응답하여 상기 출력 키 데이터들 중 일부를 선택하여 상기 암호 라운드 키 또는 상기 복호 라운드 키로서 출력하는 출력 선택부를 구비하는 것을 특징으로 하는 키 스케쥴 장치.
  20. 제19항에 있어서,
    상기 내부 선택 신호들 각각은 한 쌍의 상기 내부 선택 회로들에 인가되는 것을 특징으로 하는 키 스케쥴 장치.
  21. 제20항에 있어서,
    상기 내부 선택 회로들은 상기 내부 선택 신호들이 인에이블될 때 상기 연산 키 데이터들을 선택하여 상기 출력 키 데이터들로서 출력하고, 상기 내부 선택 신호들이 디세이블될 때 상기 저장 키 데이터들을 선택하여 상기 출력 키 데이터들로서 출력하는 것을 특징으로 하는 키 스케쥴러 장치.
  22. 제19항에 있어서,
    상기 연산 제어 신호들은 제1 내지 제4 연산 제어 신호들을 포함하고,
    상기 키 연산부는,
    상기 제1 연산 제어 신호에 응답하여 체인 연산기들 중 제L/2N 체인 연산기로부터 출력되는 제L/2N 연산 키 데이터와 상기 치환 키 데이터 중 어느 하나를 선택하여, 제(L/2N)+1 체인 연산기에 출력하는 제1 선택 회로;
    상기 제2 및 제3 연산 제어 신호들에 응답하여 상기 내부 선택 회로들 중 제L/2N 내부 선택 회로, 제(L/2N)+2 내부 선택 회로, 및 제L/N 내부 선택 회로로부터 각각 출력되는 제L/2N 출력 키 데이터, 제(L/2N)+2 출력 키 데이터, 및 제L/N 출력 키 데이터 중 어느 하나를 출력하는 제2 선택 회로;
    상기 제2 선택 회로로부터 수신되는 상기 출력 키 데이터의 비트들을 설정된 횟수 동안 로테이션 하여 로테이션 키 데이터를 출력하는 워드 로테이션부;
    상기 제4 연산 제어 신호에 응답하여 상기 로테이션 키 데이터와 상기 제L/2N 연산 키 데이터 중 어느 하나를 출력하는 제3 선택 회로;
    상기 로테이션 키 데이터와 상기 제L/2N 연산 키 데이터 중 수신되는 어느 하나를 치환 테이블을 이용하여 상기 치환 키 데이터로 치환하여 출력하는 워드 치환부; 및
    상기 라운드 상수를 발생하여 상기 독립 연산기에 출력하는 라운드 상수 발생기를 더 구비하는 것을 특징으로 하는 키 스케쥴 장치.
  23. 제22항에 있어서,
    상기 제1 연산 제어 신호는 상기 초기 키 데이터들의 전체 비트 수가 상기 J 비트 또는 상기 K 비트일 때 디세이블되고, 상기 초기 키 데이터들의 전체 비트 수가 상기 L 비트일 때 매 클럭 사이클마다 교번적으로 인에이블 및 디세이블되고,
    상기 초기 키 데이터들의 전체 비트 수가 상기 J 비트일 때 상기 제2 및 제3 연산 제어 신호들이 모두 디세이블 되고, 상기 초기 키 데이터들의 전체 비트 수가 상기 K 비트일 때 상기 제2 연산 제어 신호가 인에이블 되고 상기 제3 연산 제어 신호가 디세이블 되고, 상기 초기 키 데이터들의 전체 비트 수가 상기 L 비트일 때 상기 제2 연산 제어 신호가 디세이블 되고 상기 제3 연산 제어 신호가 인에이블 되고,
    상기 제4 연산 제어 신호는 상기 초기 키 데이터들의 전체 비트 수가 상기 J 비트 또는 상기 K 비트일 때 디세이블되고, 상기 초기 키 데이터들의 전체 비트 수가 상기 L 비트일 때 매 클럭 사이클마다 교번적으로 디세이블 및 인에이블되는 것을 특징으로 하는 키 스케쥴 장치.
  24. 제23항에 있어서,
    상기 제1 선택 회로는 상기 제1 연산 제어 신호가 인에이블될 때 상기 치환 키 데이터를 출력하고, 상기 제1 연산 제어 신호가 디세이블될 때 상기 제L/2N 연산 키 데이터를 출력하고,
    상기 제2 선택 회로는 상기 제2 및 제3 연산 제어 신호들이 디세이블 될 때 상기 제L/2N 출력 키 데이터를 출력하고, 상기 제2 연산 제어 신호가 인에이블 되고 상기 제3 연산 제어 신호가 디세이블 될 때 상기 제(L/2N)+2 출력 키 데이터를 출력하고, 상기 제2 연산 제어 신호가 디세이블 되고 상기 제3 연산 제어 신호가 인에이블 될 때 상기 제L/N 출력 키 데이터를 출력하고,
    상기 제3 선택 회로는 상기 제4 연산 제어 신호가 인에이블될 때 상기 로테이션 키 데이터를 출력하고, 상기 제4 연산 제어 신호가 디세이블될 때 상기 로테이션 키 데이터를 출력하는 것을 특징으로 하는 키 스케쥴 장치.
  25. 제22항에 있어서,
    상기 출력 키 데이터들의 전체 비트 수는 상기 J 비트, 상기 K 비트, 및 상기 L 비트 중 어느 하나이고,
    상기 출력 선택부는, 매 클럭 사이클마다 상기 출력 키 데이터들 중 상기 J 비트의 출력 키 데이터들을 선택하여 상기 암호 라운드 키 또는 상기 복호 라운드 키로서 출력하는 것을 특징으로 하는 키 스케쥴 장치.
  26. 제4항에 있어서, 상기 키 저장부는,
    상기 클럭 신호에 응답하여 상기 연산 키 데이터들을 각각 저장하고, 저장된 상기 연산 키 데이터들을 상기 저장 키 데이터들로서 각각 출력하는 레지스터들; 및
    상기 로드 인에이블 신호들에 응답하여 상기 클럭 신호를 상기 레지스터들에 각각 공급하거나 또는 공급을 중단하는 클럭 게이트 회로들을 구비하는 것을 특징으로 하는 키 스케쥴 장치.
  27. 제26항에 있어서,
    상기 클럭 게이트 회로들 각각은 상기 로드 인에이블 신호들 각각에 응답하여 한 쌍의 상기 레지스터들에 상기 클럭 신호를 공급하거나 또는 공급을 중단하는 것을 특징으로 하는 키 스케쥴 장치.
  28. 제26항에 있어서,
    상기 클럭 게이트 회로들은 상기 로드 인에이블 신호들이 인에이블될 때 상기 클럭 신호를 상기 레지스터들에 공급하고, 상기 로드 인에이블 신호들이 디세이블될 때 상기 레지스터들에 상기 클럭 신호의 공급을 중단하는 것을 특징으로 하는 키 스케쥴 장치.
  29. 제28항에 있어서,
    상기 초기 키 데이터들의 전체 비트 수가 상기 J 비트 또는 상기 K 비트일 때, 상기 클럭 게이트 회로들 중 일부가 동작하고, 상기 초기 키 데이터들의 전체 비트 수가 상기 L 비트일 때, 상기 클럭 게이트 회로들이 모두 동작하는 것을 특징으로 하는 키 스케쥴 장치.
  30. 제29항에 있어서,
    상기 초기 키 데이터들의 전체 비트 수가 상기 J 비트일 때 동작하는 상기 클럭 게이트 회로들의 수는 상기 초기 키 데이터들의 전체 비트 수가 상기 K 비트일 때 동작하는 상기 클럭 게이트 회로들의 수 보다 작은 것을 특징으로 하는 키 스케쥴 장치.
KR1020040012992A 2004-02-26 2004-02-26 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치 KR20050087271A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020040012992A KR20050087271A (ko) 2004-02-26 2004-02-26 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치
US11/032,118 US7606365B2 (en) 2004-02-26 2005-01-11 Encryption/decryption system and key scheduler with variable key length
DE102005010779A DE102005010779B4 (de) 2004-02-26 2005-02-25 Schlüsseldispositionsvorrichtung und System zur Ver-/Entschlüsselung von Daten
JP2005054965A JP4740611B2 (ja) 2004-02-26 2005-02-28 可変キー長を有する初期ラウンドキーに対応する暗号ラウンドキーと復号ラウンドキーとを選択的に発生させるキースケジュラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040012992A KR20050087271A (ko) 2004-02-26 2004-02-26 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치

Publications (1)

Publication Number Publication Date
KR20050087271A true KR20050087271A (ko) 2005-08-31

Family

ID=34880297

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040012992A KR20050087271A (ko) 2004-02-26 2004-02-26 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치

Country Status (4)

Country Link
US (1) US7606365B2 (ko)
JP (1) JP4740611B2 (ko)
KR (1) KR20050087271A (ko)
DE (1) DE102005010779B4 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190020988A (ko) * 2017-08-22 2019-03-05 국민대학교산학협력단 컴퓨터 실행 가능한 경량 화이트박스 암호화 방법 및 장치

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050087271A (ko) * 2004-02-26 2005-08-31 삼성전자주식회사 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치
CN101167301B (zh) * 2005-04-27 2011-02-16 松下电器产业株式会社 机密信息处理用主机及机密信息处理方法
US9191198B2 (en) 2005-06-16 2015-11-17 Hewlett-Packard Development Company, L.P. Method and device using one-time pad data
US8842839B2 (en) * 2005-09-29 2014-09-23 Hewlett-Packard Development Company, L.P. Device with multiple one-time pads and method of managing such a device
US20070177424A1 (en) * 2005-09-29 2007-08-02 Martin Sadler Device with n-time pad and a method of managing such a pad
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
US8879727B2 (en) * 2007-08-31 2014-11-04 Ip Reservoir, Llc Method and apparatus for hardware-accelerated encryption/decryption
US8520845B2 (en) * 2007-06-08 2013-08-27 Intel Corporation Method and apparatus for expansion key generation for block ciphers
KR100949538B1 (ko) * 2008-09-09 2010-03-25 한국전자통신연구원 Aes 라인달 알고리즘을 이용하는 암호화 및 복호화 장치와 그 방법
US8958550B2 (en) * 2011-09-13 2015-02-17 Combined Conditional Access Development & Support. LLC (CCAD) Encryption operation with real data rounds, dummy data rounds, and delay periods
GB2508052A (en) * 2012-11-18 2014-05-21 Nds Ltd Glitch resistant device
US9135834B2 (en) * 2013-04-30 2015-09-15 The United Sates of America as represented by the Secretary of the Air Force Apparatus and method to prevent side channel power attacks in advanced encryption standard using floating point operation
EP2996277B1 (en) * 2014-09-10 2018-11-14 Nxp B.V. Securing a crytographic device against implementation attacks

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000056679A (ja) * 1998-08-11 2000-02-25 Fujitsu Ltd Desの鍵スケジュール装置
KR20020061718A (ko) * 2001-01-17 2002-07-25 엘지전자 주식회사 실시간 입력 스트림의 암호화/복호화 장치

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5511123A (en) * 1994-08-04 1996-04-23 Northern Telecom Limited Symmetric cryptographic system for data encryption
DE69721439T2 (de) * 1996-05-20 2004-03-18 Koninklijke Philips Electronics N.V. Kryptographisches verfahren und einrichtung zum nichtlinearen zusammenfugen eines datenblocks und eines schlussels
US5745577A (en) * 1996-07-25 1998-04-28 Northern Telecom Limited Symmetric cryptographic system for data encryption
KR100389902B1 (ko) * 1997-06-23 2003-09-22 삼성전자주식회사 차분해독법과선형해독법에대하여안전성을보장하는고속블럭암호화방법
US6243470B1 (en) * 1998-02-04 2001-06-05 International Business Machines Corporation Method and apparatus for advanced symmetric key block cipher with variable length key and block
ATE298952T1 (de) * 2000-08-03 2005-07-15 Koninkl Philips Electronics Nv Lineartransformation für symmetrische verschlüsselungssysteme
US20020061107A1 (en) * 2000-09-25 2002-05-23 Tham Terry K. Methods and apparatus for implementing a cryptography engine
US7142671B2 (en) * 2000-12-13 2006-11-28 Broadcom Corporation Methods and apparatus for implementing a cryptography engine
US7366300B2 (en) * 2000-12-13 2008-04-29 Broadcom Corporation Methods and apparatus for implementing a cryptography engine
US7502463B2 (en) * 2000-12-13 2009-03-10 Broadcom Corporation Methods and apparatus for implementing a cryptography engine
US7280657B2 (en) * 2001-06-13 2007-10-09 Itt Manufacturing Enterprises, Inc. Data encryption and decryption system and method using merged ciphers
JP3851115B2 (ja) 2001-06-28 2006-11-29 富士通株式会社 暗号回路
US20030086564A1 (en) * 2001-09-05 2003-05-08 Kuhlman Douglas A. Method and apparatus for cipher encryption and decryption using an s-box
GB0121793D0 (en) * 2001-09-08 2001-10-31 Amphion Semiconductor Ltd An apparatus for generating encryption/decryption keys
KR20030051111A (ko) 2001-12-18 2003-06-25 신경욱 AES Rijndael(라인달) 암호 알고리듬의 하드웨어 구현을위한 라운드 처리부 회로 및 온라인 라운드 키 생성 회로
JP4230152B2 (ja) * 2002-01-28 2009-02-25 富士通株式会社 暗号回路
WO2003101020A1 (en) * 2002-05-23 2003-12-04 Atmel Corporation Advanced encryption standard (aes) hardware cryptographic engine
GB0214620D0 (en) 2002-06-25 2002-08-07 Koninkl Philips Electronics Nv Round key generation for AES rijndael block cipher
JP4117157B2 (ja) * 2002-07-08 2008-07-16 富士通株式会社 暗号回路
US20040047466A1 (en) * 2002-09-06 2004-03-11 Joel Feldman Advanced encryption standard hardware accelerator and method
EP1625693A2 (en) * 2003-05-14 2006-02-15 Koninklijke Philips Electronics N.V. A hardware implementation of the mixcolumn / invmixcolumn functions
KR20060014420A (ko) * 2003-05-23 2006-02-15 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 암호화/암호 해독용 장치, 메모리 요구량 감소 방법 및컴퓨터 프로그램 제품
JP2006527865A (ja) * 2003-06-16 2006-12-07 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法
JP2005077517A (ja) * 2003-08-28 2005-03-24 Mitsumi Electric Co Ltd 暗号化/復号化装置及び暗号化/復号化方法
KR100546375B1 (ko) * 2003-08-29 2006-01-26 삼성전자주식회사 자체 오류 감지 기능을 강화한 상호 의존적 병렬 연산방식의 하드웨어 암호화 장치 및 그 하드웨어 암호화 방법
KR20050087271A (ko) * 2004-02-26 2005-08-31 삼성전자주식회사 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치
US7561689B2 (en) * 2004-06-17 2009-07-14 Agere Systems Inc. Generating keys having one of a number of key sizes
US7715555B2 (en) * 2004-09-07 2010-05-11 Broadcom Corporation Method and system for extending advanced encryption standard (AES) operations for enhanced security
US8538015B2 (en) * 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000056679A (ja) * 1998-08-11 2000-02-25 Fujitsu Ltd Desの鍵スケジュール装置
KR20020061718A (ko) * 2001-01-17 2002-07-25 엘지전자 주식회사 실시간 입력 스트림의 암호화/복호화 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190020988A (ko) * 2017-08-22 2019-03-05 국민대학교산학협력단 컴퓨터 실행 가능한 경량 화이트박스 암호화 방법 및 장치

Also Published As

Publication number Publication date
DE102005010779A1 (de) 2005-09-22
DE102005010779B4 (de) 2010-07-08
JP2005242366A (ja) 2005-09-08
US7606365B2 (en) 2009-10-20
JP4740611B2 (ja) 2011-08-03
US20050190923A1 (en) 2005-09-01

Similar Documents

Publication Publication Date Title
US7606365B2 (en) Encryption/decryption system and key scheduler with variable key length
KR100806468B1 (ko) 데이터 변환 장치, 데이터 변환 방법 및 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
US7295671B2 (en) Advanced encryption standard (AES) hardware cryptographic engine
US7561689B2 (en) Generating keys having one of a number of key sizes
JP2009211071A (ja) 一連の変換を行って一変換を分離する命令を含む命令の組合せ
AU4105801A (en) Block encryption device using auxiliary conversion
KR100377176B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
JP2009516976A (ja) マルチレーン高速暗号化及び復号
US7123720B2 (en) Key scheduler for encryption apparatus using data encryption standard algorithm
US6931127B2 (en) Encryption device using data encryption standard algorithm
JP3769804B2 (ja) 解読化方法および電子機器
US20240097880A1 (en) High-speed circuit combining aes and sm4 encryption and decryption
Mohan et al. Revised aes and its modes of operation
KR101662291B1 (ko) 경량 블록암호 lea 기반 암호화 및 복호화 장치
EP1629626B1 (en) Method and apparatus for a low memory hardware implementation of the key expansion function
KR100667189B1 (ko) 휴대 기기를 위한 aes 암호화 장치 및 방법
KR20020087331A (ko) 부분 라운드간 파이프라인 기법을 이용한 AES Rijndael암호 및 복호 회로
KR102348802B1 (ko) Aes 암호화 및 복호화 회로
Das et al. An efficient VLSI implementation of AES encryption using ROM submodules and exclusion of shiftrows
KR100377173B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
KR100316025B1 (ko) 데이터 암호 표준 알고리즘을 이용한 암호 및 복호 장치
KR100384873B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
KR20030087893A (ko) 라운드 키의 온라인 계산 기능을 갖는 모듈화 구조의 AESRijndael 라운드 키 생성 회로
KR20050060301A (ko) Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리방법, 이에 적합한 f함수 처리기, 그리고 보안 시스템
KR20010109626A (ko) 3중 데이터 암호화 표준 아키텍쳐를 구현한 암호화 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E801 Decision on dismissal of amendment
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20060824

Effective date: 20070730

S901 Examination by remand of revocation
E902 Notification of reason for refusal
S601 Decision to reject again after remand of revocation
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20080102

Effective date: 20080828