KR20040004679A - Kasumi 암호화를 수행하는 장치 및 방법 - Google Patents

Kasumi 암호화를 수행하는 장치 및 방법 Download PDF

Info

Publication number
KR20040004679A
KR20040004679A KR10-2003-7015753A KR20037015753A KR20040004679A KR 20040004679 A KR20040004679 A KR 20040004679A KR 20037015753 A KR20037015753 A KR 20037015753A KR 20040004679 A KR20040004679 A KR 20040004679A
Authority
KR
South Korea
Prior art keywords
output
sub
input
key
function
Prior art date
Application number
KR10-2003-7015753A
Other languages
English (en)
Other versions
KR100895224B1 (ko
Inventor
애버부로베르토페이비언
미시라프라딥쿠마르
다완라자트라진데르쿠마르
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20040004679A publication Critical patent/KR20040004679A/ko
Application granted granted Critical
Publication of KR100895224B1 publication Critical patent/KR100895224B1/ko

Links

Classifications

    • 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
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Complex Calculations (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

효과적인 KASUMI 암호화 기술이 개시되어 있다. 일 태양에서, KASUMI 암호의 분수부분을 발생시키는 하나의 KASUMI 라운드를 적절한 피드백으로 전개하여, 8개의 순차적인 라운드가 KASUMI 출력을 생성한다. 또 다른 태양에서, FO 펑션의 1/3을 적절한 피드백으로 전개하여, 3개의 연속 사이클이 FO 출력을 생성한다. 또 다른 태양에서, FI 펑션을 적절한 피드백으로 전개하여, 2개의 연속 사이클이 FI 출력을 생성한다. 또 다른 태양에서, 2개의 시프트 레지스터를 포함하는 서브-키 발생기는 효과적인 방법으로 라운드마다 서브-키와 그 서브-스테이지를 발생시킨다. 이들 태양은 단순한 유저 인터페이스를 이용하여 적은 면적과 낮은 비용의 KASUMI 실시의 향상된 이점을 총체적으로 가져온다. 또한, 본 발명의 다른 여러 태양도 개시되어 있다.

Description

KASUMI 암호화를 수행하는 장치 및 방법{APPARATUS AND METHOD FOR PERFORMING KASUMI CIPHERING}
배경 기술
기술분야
본 발명은 일반적으로 통신에 관한 것으로, 더욱 자세하게는, KASUMI 암호화를 수행하는 신규하고 진보한 방법 및 장치에 관한 것이다.
배경기술
무선 통신 시스템은 음성, 데이터 등과 같은 여러 종류의 통신을 제공하는데 널리 이용한다. 이들 시스템은 코드분할 다중 액세스 (CDMA), 시간분할 다중 액세스 (TDMA), 또는 다른 변조 기술에 기초할 수 있다. CDMA 시스템은 증가된 시스템 용량을 포함하여, 다른 종류의 시스템보다도 우수한 특정 이점을 제공한다.
CDMA 시스템은 (1) "TIA/EIA-95-B Mobile Station-Base Station Compatibility Standard for Dual-Mode Wideband Spread Spectrum Cellular System " (IS-95 표준), (2) "TIA/EIA-98-C Recommended Minimum Standard for Dual-Mode Wideband Spread Spectrum Cellular Mobile Station" (IS-98 표준), (3) "3rd Generation Partnership Project" (3GPP) 이라는 컨소시움에 의해 제공되며 도큐먼트 번호 3G TS 25.211, 3G TS 25.212, 3G TS 25.213, 및 3G TS 25.214 를 포함한 도큐먼트의 세트에서 구체화되어 있는 표준 (W-CDMA 표준), (4) "3rd GenerationPartnership Project 2" (3GPP2) 이라는 컨소시움에 의해 제공되며 "TR-45. 5 Physical Layer Standard for cdma2000 Spread Spectrum Systems", "C. S0005-A Upper Layer (Layer 3) Signaling Standard for cdma2000 Spread Spectrum Systems" 및 "C. S0024 cdma2000 High Rate Packet Data Air Interface Specification"을 포함한 도큐먼트의 세트에서 구체화되어 있는 표준 (cdma2000 표준), 및 (5) 이외의 다른 일부 표준들과 같은 하나 이상의 CDMA 표준들을 지원하도록 설계될 수 있다. 이하, cdma2000 표준의 고속 패킷 데이터 사양을 실행하는 시스템을 하이 데이터 레이트 (HDR) 시스템이라 한다. HDR 시스템은 "CDMA2000 High Rate Packet Data Air Interface Specification"인 TIA/EIA-IS-856으로 문서로 되어 있다. 또한, 제안된 무선 시스템은 단일 에어 인터페이스를 이용하여 HDR과 로우 데이터 레이트 서비스의 조합 (음성과 팩스 서비스) 을 제공한다.
통상적으로, 암호화 기술은 전송 데이터에 대하여 보안을 제공하며 데이터 액세스를 시도하는 유저에 대하여 인증을 제공하는데 이용한다. 암호화는 여러 분야에서 이용되며, 특히, 디지털 무선 통신 시스템에서 유용하다.
W-CDMA표준에서 이용하는 것으로 구체화되어 있는 암호화 알고리즘으로 KASUMI가 있다. KASUMI 는 ETSI/SAGE 사양 "Specification of the 3GPP Confidentiality and Integrity Algorithms" (1999년 12월 23일, 버전 1.0) 의 "Document 2: KASUMI Specification" (이하, KASUMI 사양이라 한다) 에 자세히 설명되어 있다. KASUMI의 다양한 이용은 동일한 ETSI/SAGE 사양에서 " Document1: f8 and f9 pecification"에 자세히 설명되어 있다. KASUMI는 128-bit 키를 이용하여 64-bit 입력으로부터 64-bit 출력을 생성하는 블록 암호이다. 통상적으로, KASUMI의 출력은, 암호화할 데이터의 비트를 키스트림의 비트와 배타적 논리합 (XOR) 을 취함으로써, 암호 데이터에 대한 키스트림 (keystream) 으로서 이용할 수 있다.
통상적으로, 당해 기술에서, 통신 시스템은 ASICs 또는 다른 하드웨어 솔루션을 이용하여 여러 부기능을 실시한다. ASIC 설계에서, 작은 이용면적일수록 낮은 비용, 높은 수율, 및 종종 낮은 전력으로 변환된다. 낮은 비용 및 낮은 전력은 고정 애플리케이션 및 모바일 애플리케이션에 모두 유용하지만, 저전력 배터리를 이용하는 모바일 장치에서 특히 중요하다. 이와 동시에, 어떤 제한 시간 내에 프로세싱을 완료해야 한다. W-CDMA 시스템과 같은 무선 데이터 시스템은 가입자국과 기지국으로의 KASUMI 실행을 실시할 필요가 있으며, 설계자들은 상술한 조건을 포함한 여러 구속조건 내에서 작업을 해야한다. 이와 같이, 당해기술에서, 효과적인 방법으로 KASUMI 암호화를 수행하는 장치 또는 방법이 필요하다.
발명의 개요
이하, 실시형태들은 효과적인 KASUMI 암호화에 대한 효과적인 장치 또는 방법의 필요성의 문제를 해결한다. 일 태양에서, KASUMI 암호화의 분수부분을 발생시키는 KASUMI라운드를 적절한 피드백으로 전개하여, 8개의 순차 라운드가 KASUMI 출력을 생성한다. 또 다른 태양에서, FO 펑션의 1/3을 적절한 피드백으로 전개하여, 3개의 순차 사이클이 FO 출력을 생성한다. 또 다른 태양에서, FI 펑션을 적절한 피드백으로 전개하여, 2개의 순차 사이클이 FI 출력을 생성한다. 또 다른 태양에서, 2개의 시프트 레지스터를 포함한 서브-키 발생기는 효과적인 방법으로 라운드마다 서브-스테이지와 서브-키를 생성한다. 이들 태양은 단순한 유저 인터페이스를 이용하여 적은 면적과 낮은 비용의 KASUMI 실시의 향상된 이점을 총체적으로 가져온다. 또한, 본 발명의 다른 여러 태양도 설명한다.
아래 더욱 자세히 설명할 바와 같이, 본 발명은 본 발명의 여러 태양, 실시형태 및 특징을 실시하는 방법과 시스템 엘리먼트를 제공한다.
도면의 간단한 설명
본 발명의 특징, 성질 및 이점들을, 명세서 전체에 걸쳐 동일한 요소를 동일한 부재번호로 대응시켜 나타낸 도면과 결합하여 자세히 설명한다.
도 1은 복수의 유저를 지원할 수 있는 무선 통신 시스템의 일반블록도이다.
도 2a 내지 2d는 KASUMI를 수행하는데 필요한 계산을 나타낸다.
도 3은 KASUMI를 수행하는 일 실시형태의 일반블록도이다.
도 4는 KASUMI 라운드의 일 실시형태의 블록도이다.
도 5는 FL 펑션의 일 실시형태의 블록도이다.
도 6은 FO 펑션의 일 실시형태의 블록도이다.
도 7은 FI 펑션의 일 실시형태의 블록도이다.
도 8은 서브-키 발생기의 블록도이다.
도 9는 KASUMI의 일 실시형태의 플로우차트이다.
도 10은 FO 펑션의 일 실시형태의 플로우차트이다.
도 11은 FI 펑션의 일 실시형태의 플로우차트이다.
도 12는 서브-키 발생기의 일 실시형태의 플로우차트이다.
도 13은 KASUMI의 다른 실시형태에 대한 제어플로우도를 나타낸다.
상세한 설명
도 1은 복수의 유저를 지원하며 본 발명의 다른 여러 태양을 실시할 수 있는 무선통신 시스템 (100) 을 나타낸다. 시스템 (100) 은 하나 이상의 CDMA 표준 및/또는 설계 (예를 들면, IS-95 표준, cdma2000 표준, HDR 사양, W-CDMA 표준) 를 지원하도록 설계될 수 있다. 단순화를 위해, 시스템 (100) 은, 2개의 액세스 단말기 (106; 이하, 원격 단말기 또는 이동국이라 할 수 있음) 와 통신하는 3개의 액세스 포인트 (104; 이하, 기지국이라고 할 수 있음) 를 포함하도록 나타낸다. 종종, 액세스 포인트와 그 통신가능구역을 총체적으로 "셀" 이라 한다. 하나 이상의 액세스 포인트, 하나 이상의 액세스 단말기 또는 이들의 조합에서, KASUMI 알고리즘을 전개할 수 있다.
실시중인 CDMA 시스템에 따라, 각각의 액세스 단말기 (106) 는 어떤 주어진 순간에 순방향 링크에 대하여 하나 (또는 가능한 그 이상의) 액세스 포인트 (104) 와 통신할 수 있으며, 액세스 단말기가 소프트 핸드오프인지의 여부에 따라 역방향 링크에 대하여 하나 이상의 액세스 포인트와 통신할 수 있다. 순방향 링크 (즉, 다운 링크) 는 액세스 포인트로부터 액세스 단말기로의 전송을 의미하며, 역방향 링크 (즉, 업링크) 는 액세스 단말기로부터 액세스 포인트로의 전송을 의미한다.
도 2a 내지 도 2d는 KASUMI 사양에서 규정되는 KASUMI 알고리즘을 나타낸다. 도 2a는 KASUMI (200) 의 상부레벨 다이어그램을 나타낸다. 도 2b는 FO 펑션을 나타낸다. 도 2c는 FI 펑션을 나타낸다. 도 2d는 FL 펑션을 나타낸다.
도 2a에 나타낸 바와 같이, KASUMI 는 8개의 라운드로 이루어진다. 각각의 라운드는 하나의 FL 펑션, 하나의 FO 펑션, 및 32-bit XOR 펑션으로 이루어진다. FL 펑션은 FLi로 나타내는데, 여기서 i는 라운드가 대응하는 것을 표시하며 1 내지 8의 범위이다. 이와 유사하게, FO 펑션은 FOi로 나타낸다. 각각의 라운드는 KLi, KOi, 및 KIi로서 표시되는 여러 서브-키를 이용한다. KLi는 KLi,1및 KLi,2로 표시되는 2개의 16-bit 서브키로 이루어진 32-bit 서브-키이다. KOi및 KIi는 48-bit 서브-키이며, 각각은 KOi,1, K0i,2, 및 KOi,3와 KIi,1, KIi,2및 KIi,3로 각각 표기되는 3개의 16bit 서브-키로 이루어진다. 16-bit 서브-키의 이용은 도 2b 내지 도 2d를 통하여 아래 더욱 자세히 설명한다.
라운드 1은 FL1 (202), F01 (204), 및 32-bit, 비트와이즈 XOR (206) 를 포함한다. 64 bit 입력은 2개의 32 bit 세그먼트로 나누어지는데, 이 세그먼트들을 좌측 세그먼트와 우측 세그먼트로 설명한다. 우측 세그먼트는 F01 (204) 의 출력을 갖는 XOR (206) 에서 XOR연산하여, 라운드 1 우측 출력을 생성한다. 각각의 라운드의 우측 출력은 후속 라운드에 대한 좌측 입력으로서 기능한다. 따라서, 라운드 1 우측 출력은 라운드 2에 대한 좌측 입력으로서 전달된다. 좌측입력 세그먼트는 FL1 (202) 으로 전달되는데, FL1 (202) 는 후술할 FL 펑션에 따라 후술하는 바와 같이 서브-키 KI1를 처리한다. FL1 (202) 의 출력은 또한 후술할 FO 펑션에 따라 KO1및 KI1를 처리하는 F01 (204) 로 전달된다. 상술한 바와 같이, F01 (204) 의 출력은 입력의 우측 세그먼트와 비트-와이즈 XOR연산하는 XOR (206) 으로 전달된다. 또한, 좌측 입력 세그먼트는 라운드 2에 대한 우측 입력으로서 전달된다. 통상적으로, 각각의 라운드의 좌측 입력은 그 라운드에서의 여러 처리를 위해 이용되며, 후속 라운드에 대한 우측 입력으로서 기능한다.
라운드 2 는 FL2 (210), F02 (208), 및 XOR (212) 를 포함한다. 라운드 2 는 펑션 (FO 및 FL) 의 순서가 역으로 되는 것을 제외하고는 라운드 1과 동일하다. 일반적으로, 홀수번째 라운드들은 FO 펑션을 피드 (feed) 하는 FL 펑션을 가지며, 짝수번째 라운드들은 FL 펑션으로 피드하는 FO 펑션을 갖는다. 라운드 2로의 우측 입력은 FL2 (210) 출력을 갖는 XOR (212) 에서 XOR연산되어, 라운드 2 우측 출력을 생성한다. 앞에서와 같이, 라운드 2 우측 출력은 라운드 3에 대한 좌측 입력으로서 전달된다. 좌측 입력 세그먼트는 FO 펑션에 따라 K02및 KI2를 처리하는 F02 (208) 로 전달된다. F02 (208) 의 출력은 FL 펑션에 따라 KL2를 처리하는 FL2 (210) 로 전달된다. 또한, 좌측 입력 세그먼트는 라운드 3 에 대한 우측 입력으로서 전달된다.
라운드 3, 5, 및 7 은, KASUMI의 입력보다는, 당연히 매 라운드마다 입력이이전 라운드의 출력으로부터 온다는 점을 제외하고는 라운드 1과 동일하게 구성된다. 라운드 4, 6, 및 8 은 라운드 2와 동일하게 구성된다.
라운드 3에서, XOR (212) 의 출력은 FL 펑션에 따라 KL3를 처리하는 FL3 (214) 으로 전달된다. FL3 (214) 의 출력은 FO 펑션에 따라 KO3및 KI3를 처리하는 F03 (216) 으로 전달된다. F03 (216) 의 출력은 XOR (206) 의 출력과 비트와이즈 XOR 연산하는 XOR (218) 로 전달된다.
라운드 4에서, XOR (218) 의 출력은 FO 펑션에 따라 K04, 및 KI4를 처리하는 F04 (220) 으로 전달된다. F04 (220) 의 출력은 FL 펑션을 이용하여 KI4를 처리하는 FL4 (222) 으로 전달된다. FL4 (222) 의 출력은 (XOR 212) 의 출력과 비트와이즈 XOR연산하는 XOR (224) 으로 전달된다.
라운드 5에서, XOR (224) 의 출력은 FL 펑션을 따라 KI5를 처리하는 FL5 (226) 으로 전달된다. FL5 (226) 의 출력은 FO 펑션에 따라 KO5및 KI5를 처리하는 F05 (228) 으로 전달된다. F05 (228) 의 출력은 XOR (218) 의 출력과 비트와이즈 XOR연산하는 XOR (230) 으로 전달된다.
라운드 6에서, XOR (230) 의 출력은 FO 펑션에 따라 KO6, 및 KI6를 처리하는 F06 (232) 으로 전달된다. F06 (232) 의 출력은 FL 펑션에 따라 KI6를 처리하는 FL6 (234) 으로 전달된다. FL6 (234) 의 출력은 XOR (224) 의 출력과 비트와이즈 XOR연산하는 XOR (236) 으로 전달된다.
라운드 7에서, XOR (236) 의 출력은 FL 펑션에 따라 KI7를 처리하는 FL7 (238) 으로 전달된다. FL7 (238) 의 출력은 FO 펑션에 따라 KO7및 KI7를 처리하는 F07 (240) 으로 전달된다. F07 (240) 의 출력은 XOR (230) 의 출력과 XOR연산하는 XOR (242) 로 전달된다.
라운드 8에서, XOR (242) 의 출력은 FO 펑션에 따라 KO8, 및 KI8를 처리하는 F08 (244) 으로 전달된다. F08 (244) 의 출력은 FL 펑션에 따라 KL8를 처리하는 FL8 (246) 으로 전달된다. FL8 (246) 의 출력은 XOR (236) 의 출력과 비트와이즈 XOR연산하는 XOR (248) 로 전달된다.
XOR (248) 의 출력과 XOR (242) 의 출력은 연결되어, 도 2a의 C로 표시된 64-bit KASUMI 출력을 생성한다.
도 2b는 상술한 FO 펑션을 수행하는 계산단계를 나타낸다. FO 펑션은 32-bit 입력을 받아들여 그 입력을 2개의 16-bit 세그먼트, 즉, 좌측 입력과 우측 입력으로 각각 분리한다. FO 펑션은 3개의 스테이지를 포함하는데, 스테이지 각각은 2개의 16-bit 비트와이즈 XORs 를 포함하며, 펑션 FIi의 경우는 후술할 FIi1, FIi2, 및 FIi3 로 각각 표시된다. 여기서, 도 2a를 통하여 설명한 각각의 라운드에는, 하나의 FO 펑션이 있기 때문에, 기호 i는 라운드 번호에 대응한다.
펑션 FO의 제 1 스테이지에서, 좌측 16-bit 입력은 XOR (250) 에서 16 bit 서브-키 (KOi,1) 와 비트와이즈 XOR연산된다. 상술한 바와 같이, KOi,1은 48-bit서브-키 KOi의 16-bit 서브-키이다. 또한, KOi,2및 KOi,3도 16-bit 서브-키 KOi이다. XOR (250) 의 출력은 후술할 FI 펑션에 따라 KIi,1를 처리하는 FIi1 (252) 으로 전달된다. 후술할 KIi,1는 48-bit 서브-키 KIi의 16-bit 서브-키이다. 또한, KIi,2및 KIi,3도 KIi의 16-bit 서브-키이다. FIi1 (252) 의 출력은 우측입력과 16-bit 비트와이즈 XOR연산하는 XOR (254) 로 전달된다.
펑션 FO의 제 2 스테이지에서, 우측 입력은 서브-키 KOi,2와 16-bit 비트와이즈 XOR연산하는 XOR (256) 으로 전달된다. XOR연산한 XOR (256) 의 출력은 FI펑션에 따라 KIi,2를 처리하는 FIi2 (258) 으로 전달된다. FIi2 (258) 의 출력은 XOR (254) 의 출력과 16-bit 비트와이즈 XOR연산하는 XOR (260) 으로 전달된다.
펑션 FO의 제 3 스테이지에서, XOR (254) 의 출력은 서브-키 KOi,3와 16-bit 비트와이즈 XOR연산하는 XOR (262) 로 전달된다. XOR연산한 XOR (262) 의 출력은 FI 펑션에 따라 KIi,3를 처리하는 FIi3 (264) 으로 전달된다. FIi3 (264) 의 출력은 XOR (260) 의 출력과 16-bit 비트와이즈 XOR연산하는 XOR (266) 으로 전달된다. XOR (260) 의 출력은 XOR (266) 의 출력과 연결되어, 도 2b에 FO로 표시한 펑션의 출력을 생성한다.
도 2c는 상술한 FI 펑션을 수행하는 계산 단계들을 나타낸다. FI 펑션은 16-bit 입력을 받아들여 이 입력을 9-bit 세그먼트와 7-bit 세그먼트로 분리한다.FI 펑션은 XORs (276 및 286) 로서 식별되는 2개의 단계들간의 XOR 단계와 동일한 동일한 처리를 갖는 2개의 스테이지를 포함한다. 도 2c의 보다 어두운 선은 9-bit 경로를 식별하는데 이용하며, 밝은 선은 7-bit 경로를 식별하는데 이용한다.
제 1 스테이지에서, 9-bit 입력 세그먼트는 이후 자세히 설명되는 처리펑션 S9 (268) 로 전달된다. 7-bit 입력 세그먼트는 XOR (270) 에서 제로 확장되며, S9 (268) 의 출력과 XOR연산된다. 또한, 7-bit 입력 세그먼트는 이후 자세히 설명되는 처리펑션 S7 (272) 로 전달된다. XOR (270) 의 9-bit 출력은 7 bits로 절단되어, XOR (274) 에서 S7 (272) 의 출력과 XOR연산된다.
XOR (276) 에서, XOR (274) 의 출력은 서브-키 KIi,j,1와 비트와이즈 XOR연산된다. KIi,j,1는 KIi,j의 7-bit 서브-키이며, 여기서 i는 라운드 번호를 나타내며, j 는 FI 펑션을 부르는 FO 스테이지 번호를 나타내며, 1 은 이것이 KIi,j의 제 1 서브-키임을 의미한다. XOR (286) 에서, XOR (270) 의 출력은 9-bit 서브-키 KIi,j,2와 비트와이즈 XOR 연산된다. KIi,j,2는 KIi,j의 제 2 서브-키이다.
XORs (276 및 286) 의 출력은 펑션 F1의 제 2 스테이지에 대한 입력으로 기능한다. XOR (286) 의 9-bit 출력은 처리 펑션 S9 (278) 으로 전달된다. XOR (276) 의 7-bit 출력은 제로 확장되며, XOR (280) 에서 S9 (278) 의 출력과 XOR연산된다. 또한, XOR (276) 의 출력은 펑션 S7 (282) 로 전달된다. XOR (280) 의 9-bit 출력은 7 bits로 절단되어, XOR (284) 에서 S7 (282) 의 출력과XOR연산된다.
XOR (284) 의 7-bit 출력은 XOR (280) 의 9-bit 출력과 연결되어 FI로 표시되는 16-bit 출력을 형성한다.
펑션 S7 은 KASUMI 사양으로 규정된다. 이는 7-bit 입력을 받아들여 7-bit 출력으로 리턴시킨다. 하기 식 1 내지 7은 각각의 출력 비트 (y0 내지 y6) 를 7개의 입력 비트의 펑션 x0 내지 x6로서 규정한다. x1, x3과 같은 2개의 피연산자의 연결은, 피연산자의 논리적 AND 연산(즉 x1 AND x3) 을 의미한다. 심볼는 배타적 OR 펑션을 나타낸다.
펑션 S9 는 KASUMI 사양으로 규정된다. 이는 9-bit 입력을 받아들여 9-bit 출력으로 리턴시킨다. 하기 식 8 내지 16 은 각각의 출력 비트 y0 내지 y8을 9개의 입력비트의 펑션 x0 내지 x8로서 규정한다. x0, x2와 같은 2개의 피연산자의 연결은 피연산자들의 AND연산 (즉, x0 AND x2) 을 의미한다. 심볼는 배타적 OR 펑션을 나타낸다.
도 2d는 도 2a를 통하여 상술한 FL 펑션을 나타낸다. 32-bit 입력은 2개의 16-bit 세그먼트, 즉, 좌측 세그먼트와 우측 세그먼트로 분할된다. 좌측 입력 세그먼트는 심볼 ∩ 로 표시되는 AND 게이트 (288) 에서 KLi,1와 비트와이즈 AND 연산된다. AND 게이트 (288) 의 출력은 심볼 <<<로 표시되는 로테이터 (290) 에서 1 bit만큼 좌회전한다. 로테이터 (290) 의 출력은 XOR (292) 에서 좌측 입력 세그먼트와 비트와이즈 XOR연산한다. XOR (292) 의 출력은 심볼 ∪로 표시되는 OR 게이트 (298) 에서 비트와이즈 OR연산한다. OR 게이트 (298) 의 출력은 로테이터 (296) 에서 1bit만큼 좌회전한다. 로테이터 (296) 의 출력은 XOR (294) 에서 좌측 입력 세그먼트와 비트와이즈 XOR연산한다. FL로 표시되는 32-bit 입력은 XOR (294) 의 출력과 XOR (292) 의 출력을 연결하여 형성된다.
상술한 바와 같이, KASUMI 알고리즘은 원하는 결과를 생성하는데 8개의 계산 라운드가 필요하다. 일 실시형태에서, 단일 라운드에 대한 소프트웨어가 전개되고 적절한 피드백으로 재이용되어, 8개의 라운드 KASUMI 출력을 생성한다. 도 3 은 이러한 예시적인 실시형태를 나타낸다. "예시적인"이란 단어는 "예, 보기 또는 설명으로서 기능"을 의미하는데 이용할 뿐이다. 여기에 "예시적으로" 설명한 어떠한 실시형태가 다른 실시형태보다도 반드시 바람직하거나 우수하다고는 볼 수 없다.
도 3은 KASUMI (300) 를 나타내는 것으로, 이 KASUMI 는 서브-키 발생기 (310), KASUMI 라운드 (330) 및 KASUMI 계산 컨트롤러 (320) 를 포함한다. KASUMI 라운드 (330) 는 서브-키 발생기 (310) 로부터 서브-키들을 수신한다.KLi,1및 KLi,2는 직접 연결되며, KOi,j및 KIi,j는 MUX (340 및 350) 를 통하여 각각 전달된다. MUX (340) 는 서브-키 발생기 (310) 로부터 KOi,1, KOi,2, 및 KOi,3를 수신한다. MUX (350) 는 서브-키 발생기 (310) 로부터 KIi,1, KIi,2, 및 KIi,3를 수신한다. MUX (340 및 350) 로부터 KASUMI 라운드 (330) 로 각각 전달되는 서브-키들의 세트 (KOi,j및 KIi,j) 는 KASUMI 계산 컨트롤러 (320) 로부터 제어 신호 subkey_select를 통하여 결정된다. 모든 서브-키들은 K로 표시되며 128 bits 길이를 갖는 키 입력으로부터의 서브-키 발생기 (310) 에서 발생된다. 또한, 서브-키 발생기 (310) 는 KASUMI 계산 컨트롤러 (320) 로부터의 회전 신호와 로드신호를 수신한다. 이하, 서브-키 발생을 더욱 자세히 설명한다.
KASUMI 계산 컨트롤러 (320) 는 리세트 신호와 스타트 신호를 입력으로서 수신한다. 이는 완료 신호를 생성하여, KASUMI 출력이 발생되었음을 나타낸다. 완료를 나타내는 이러한 신호는 선택적인 것이다. 또 다른 실시형태에서는, 완료시간을 시스템의 특성에 기초하여 알 수 있는 경우, 이러한 신호를 제거할 수도 있다. 예시적인 실시형태에서의 스타트 신호는, 스타트 신호가 스트로브된 경우에 키 K 및 64-bit 입력이 유효하도록 동기된다. KASUMI 라운드 (330) 의 동작을 제어 하는 여러 신호들을 도 3에 나타낸다. Kasumi_data_flow, kasumi_input_select, 및 kasumi_output_reg_en 은 KASUMI 라운드 (330) 내에서 라운드-레벨 펑션화를 제어 하는데 이용한다. Fo_input_select 및 fo_output_reg_en 은 KASUMI 라운드 (330) 내에서 FO 펑션을 제어 하는데 이용한다. Fi_input_select 및 fi_output_reg_en 은 KASUMI 라운드 (330) 내에서 FI 펑션을 제어 하는데 이용한다. 예시적인 실시형태에서, 이들 최종 2개의 신호는 일치하기 때문에, FI 펑션을 제어 하는데 단일 제어 신호만이 필요하다. 얼마나 많은 실시형태들을 전개하는가에 의존하여 이들 신호들의 서브세트가 필요할 수도 있다. 메모리와 피드백 회로를 제어 하는 여러 시그널 방식이 당해 기술에 알려져 있으며 본 발명의 범위내에 든다. 이하, 필요한 제어를 자세히 설명한다.
KASUMI 라운드 (330) 는 제어 신호와 상술한 서브-키에 더하여, 64-bit 출력을 발생시키는 64-bit 입력을 수신한다 (그 계산 방법은 도 2a 내지 도 2d를 통하여 설명하였음).
도 4 는 상술한 KASUMI 라운드 (330) 의 예시적인 실시형태인 KASUMI 라운드 (400) 를 나타낸다. KASUMI 라운드 (400) 에서, 64-bit 입력 (in) 은 2개의 32-bit 세그먼트, 상위 1/2 (63:32) 와 하위 1/2 (31:0) 로 분할한다. 상위 1/2는 MUX (405) 의 입력부에 접속된다. 하위 1/2는 MUX (410) 의 입력부에 접속된다. kasumi_output_reg_en 를 어설트 (assert) 하는 경우, 2개의 레지스터 (445 및 450) 는 KASUMI 라운드 (400) 에서 계산된 결과를 래치하며, 레지스터 (445 및 450) 의 출력을 연결하여 64-bit 출력 (out) 을 생성한다. 또한, 레지스터 (445) 의 출력은 MUX (410) 로 입력으로서 피드백되며, 레지스터 (450) 의 출력은 MUX (405) 로 입력으로서 피드백된다. MUX (405 및 410) 는 kasumi_input_select에 의해 제어되는데, kasumi_input_select를 어설트하지 않은경우에 in을 선택시키며 kasumi_input_select를 어설트하는 경우에 피드백 결과를 선택한다. MUX (405 및 410) 는 레지스터 (445 및 450) 에 의해 형성되는 메모리의 컨텐츠와 입력간을 선택하는 셀렉터로서 상호동작한다. 이러한 방법으로, KASUMI 라운드 (400) 를 이용하여, in이 선택된 경우에 KASUMI의 제 1 라운드를 수행할 수 있고, 이전 라운드의 결과가 피드배되는 경우에 KASUMI의 후속 라운드를 수행할 수 있다.
상술한 도 2a 내지 도 2d를 통하여 설명한 바와 같이 KASUMI 라운드의 처리의 핵심은 FL 펑션 (425), FO 펑션 (430), 및 XOR (440) 에서 수행된다. 그러나, 상술한 바와 같이, 이 펑션을 모든 라운드마다 각각 이용할 수 있지만, 처리 순서는 라운드마다 서로 상이하다. 3개의 MUX (415, 420, 및 435) 는 KASUMI의 후속 라운드 각각에서 구성요소들을 재이용하는데 필요한 스위칭을 제공한다. FL 펑션 (425), FO 펑션 (430), XOR (440) 및 MUX (415, 420, 및 435) 는 부분 라운드 계산기의 일 실시형태를 상호형성한다. MUX (405) 의 출력으로부터 MUX (415) 로 전달되며 XOR (440) 의 출력과 연결되는 입력으로 이루어지는 부분 라운드 계산기의 출력은 레지스터 (445 및 450) 에 의해 형성되는 메모리내에 저장된다. 부분 라운드 계산기로의 입력은 MUX (405 및 410) 에 의해 형성되는 셀렉터의 출력으로부터 나온다. 당업자는, 상술한 셀렉터, 부분 라운드 계산기, 및 메모리의 수개의 회로 구현을 잘 알고 있다. 이들 각각의 실시형태는 본 발명의 범위내에 있다.
3개의 MUX (415, 420 및 435) 는 짝수번째 라운드 계산과 홀수번째 라운드계산에 대하여 KASUMI 라운드를 구성하는 데이터 플로우 셀렉터를 형성한다. 이들은 모드 셀렉터 신호 (kasumi_data_flow) 에 의해 제어된다. MUX (415) 는 kasumi_data_flow 를 어설트하는 경우에 MUX (405) 의 출력을 선택하며, kasumi_data_flow 를 디어설트하는 경우에 펑션 FO (430) 의 피드백 출력을 선택한다. MUX (420) 는 kasumi_data_flow 를 디어설트하는 경우에 레지스터 (445) 의 출력을 선택하며, kasumi_data_flow를 어설트하는 경우에, 펑션 FL (425) 의 피드백 출력을 선택한다. MUX (415) 의 출력은 펑션 FL (425) 로 전달되며, 펑션 FL (425) 의 출력은 MUX (435) 로 전달된다. MUX (420) 의 출력은 펑션 FO (430) 로 전달되며 , 또한, 펑션 FO (430) 의 출력은 MUX (435) 로 전달된다. MUX (435) 는 kasumi_data_flow 를 디어설트하는 경우, 펑션 FL (425) 의 출력을 선택하며, kasumi_data_flow 를 어설트하는 경우, 펑션 FO (430) 의 출력을 선택한다. MUX (435) 의 출력은 비트와이즈 XOR (440) 로 in 입력으로서 전달된다. 비트와이즈 XOR (440) 의 또 다른 입력은 MUX (410) 의 출력이 된다. 상술한 레지스터 (450) 에 대한 입력은 XOR (440) 의 출력이 된다. 상술한 레지스터 (445) 에 대한 입력은 MUX (405) 의 출력이 된다. 제어 신호 ( kasumi_input_select, kasumi_data_flow 및 kasumi_output_reg_en) 의 적절한 조작과 결합한 도 4 에 나타낸 구성은 상술한 도 2a를 통하여 설명한 필요한 KASUMI 계산을 실시하는데 이용할 수 있다. 이하, 이 실시형태를 시그널링하는 제어를 설명한다.
도 5 는 상기 도 4에 나타낸 펑션 FL (425) 로서 이용하는데 적합한 FL 펑션(500) 의 일 실시형태를 나타낸다. FL 펑션 (500) 는 32-bit 입력 (in) 을 수신하여 32-bit 출력 (out) 을 생성한다. in의 상위 1/2 (bits 31 내지 16) 는 AND 게이트 (510) 에서 서브-키 KLi,1와 비트와이즈 AND 연산된다. AND 게이트 (510) 의 출력은 로테이터 (520) 에서 1 bit 만큼 좌회전한다. 로테이터 (520) 의 출력은 XOR (530) 에서 입력의 하위 1/2 (bits 15 내지 0) 와 비트와이즈 XOR연산된다. XOR (530) 의 결과는 OR 게이트 (540) 에서 서브-키 KLi,2와 비트와이즈 OR연산된다. OR 게이트 (540) 의 출력은 로테이터 (550) 에서 1bit 만큼 좌회전한다. 로테이터 (550) 의 출력은 XOR (560) 에서 입력의 상위1/2와 비트와이즈 XOR연산된다. XOR (560) 의 출력은 XOR (530) 의 출력과 연결되어 32-bit 출력 (out) 을 생성한다.
도 6은 상기 도 4에서 나타낸 펑션 FO (430) 로서 이용하기에 적합한 FO 펑션 (600) 의 일 실시형태를 나타낸다. FO 펑션 (600) 는 32 -bit 입력 (in) 을 수신하여, 32-bit 출력 (out) 을 생성한다. 이 실시형태에서, 상술한, 3개의 FO 스테이지들중 하나의 스테이지의 구성요소를 전개한다. 레지스터와 적절한 피드백에 의해 단일 스테이지를, FO 출력을 생성하도록 순차적으로 3회 이용할 수 있다.
2개의 레지스터 (660 및 670) 를 이용하여, fo_output_reg_en 을 어설트하는 경우, 중간 계산을 저장한다. 레지스터 (660) 의 출력은 MUX (620) 의 입력으로서 전달된다. 레지스터 (670) 의 출력은 MUX (610) 의 입력으로서 전달된다.입력 (in) 의 상위 1/2 는 MUX (610) 의 또 다른 입력으로서 기능한다. 입력 (in) 의 하위 1/2 는 MUX (620) 의 또 다른 입력으로서 기능한다. 신호 (fo_input_select) 는 MUX (610 및 620) 으로 전달되어 레지스터 (660 및 670) 으로부터의 피드백 값과 입력 (in) 간을 각각 선택한다. MUX (610) 의 출력은 XOR (630) 에서 서브-키 KOi,j와 비트와이즈 XOR연산된다. XOR (630)의 출력은 펑션 FI (640) 으로 전달되어, 서브-키 KIi,j를 처리하는데, 이를 아래에서 설명한다. 펑션 FI (640) 의 출력은 XOR (650) 에서 MUX (620) 의 출력과 비트와이즈 XOR연산된다. XOR (650) 의 출력은 상술한, 레지스터 (660) 의 입력으로서 전달된다. MUX (620) 의 출력은 상술한 레지스터 (670) 에 대한 입력으로서 전달된다. MUX (620) 의 출력은 XOR (650) 의 출력과 연결되어 32-bit 출력 (out) 을 형성한다.
레지스터 (660 및 670) 는 메모리를 형성한다. MUX (610 및 620) 는 셀렉터를 형성한다. XOR (630), FI 펑션 (640), 및 XOR (650) 은 부분 FO 계산기를 형성한다. 셀렉터는 부분 FO 계산기에 대한 입력을 전달하기 위해 메모리 결과와 입력 간을 선택한다. 부분 FO 계산기의 출력은 메모리 내에 저장된다. 상술한 바와 같이, 셀렉터, 부분 FO 계산기 및 메모리의 수개의 회로 구현은 당업자에게 잘 알려진 것이다. 각각의 실시형태는 본 발명의 범위 내에 있다.
도 7은 상기 도 6에 나타낸 펑션 FI (640) 로서 이용하는데 적합한 FI 펑션 (700) 의 일 실시형태를 나타낸다. FI 펑션 (700) 는 16-bit 입력 (in) 을 수신하여 16-bit 출력 (out) 을 생성한다. 이 실시형태에서, 상술한, 2개의 스테이지들 중의 하나의 스테이지에 대한 구성요소를 전개한다. 레지스터와 적절한 피드백에 의해, 단일 스테이지를, FI 출력을 생성하도록 순차적으로 2회 이용할 수 있다.
2개의 레지스터 (745 및 750) 를 이용하여, fi_output_reg_en를 어설트하는 경우 중간 계산을 저장한다. 9-bit 레지스터 (745) 의 출력은 MUX (705) 에 대한 입력으로서 전달된다. 7-bit 레지스터 (750) 의 출력은 MUX (710) 에 대한 입력으로서 전달된다. 입력 (in) 의 상위 9 bits 는 MUX (705) 에 대한 또 다른 입력으로서 기능한다. 입력 (in) 의 하위 7 bits 는 MUX (710) 에 대한 또 다른 입력으로서 기능한다. 신호 (fi_input_select) 는 MUX (705 및 710) 에 전달되어, 레지스터 (745 및 750) 로부터의 피드백 값과 입력간을 각각 선택한다. MUX (705) 의 출력은 상술한 펑션 S9 (715) 에서 처리되도록 전달된다. 펑션 S9 (715) 의 출력은 XOR (720) 에서 MUX (710) 의 제로 확장된 출력과 비트와이즈 XOR연산된다. 또한, MUX (710) 의 출력은 펑션 S7 (725) 에서 처리하도록 전달된다. 펑션 S7 (725) 의 출력은 XOR (730) 에서 XOR (720) 의 절단된 출력과 비트와이즈 XOR연산된다. XOR (720) 의 출력은 XOR (735) 에서 서브-키 KIi,j,2와 비트와이즈 XOR 연산된다. XOR (730) 의 출력은 XOR (740) 에서 서브-키 KIi,j,1와 비트와이즈 XOR 연산된다. XOR (735) 의 출력은 상술한 레지스터 (745) 에 대한 입력으로서 전달된다. XOR (740) 의 출력은 상술한, 레지스터(750) 에 대한 입력으로서 전달된다. XOR (730) 의 출력은 XOR (720) 의 출력과 연결되어 16-bit 출력 (out) 을 생성한다.
이 실시형태에서, 신호 (fi_input_select 및 fi_output_reg_en) 가 일치하기 때문에, MUX (705), MUX (710), 레지스터 (745) 및 레지스터 (750) 간에 공통신호를 공유할 수 있다. 다른 실시형태에서, 각각의 FI 처리 사이클이 클록 제어 레지스터 (745 및 750) 의 1 사이클에 대응하기 때문에, 인에이블 신호가 이들 레지스터에 필요없게 된다. 레지스터들은, 레지스터들이 FI 의 두번째 1/2 를 계산하는데 이용하는 1 사이클만큼 XORs (735 및 740) 의 결과들을 단순히 지연시킨다. 이와 같은 여러 기술을 이용할 수 있으며 이 기술들은 당해기술에서 잘 알려져 있다.
레지스터 (745 및 750) 는 메모리를 형성한다. MUX (705 및 710) 는 셀렉터를 형성한다. 펑션 S9 (715), XOR (720), 펑션 S7 (725), 및 XORs (730, 735, 및 740) 은 부분 FI 계산기를 형성한다. 셀렉터는 입력과 메모리간 결과를 선택하여 그 입력을 부분 FI 계산기에 전달한다. 부분 FI 계산기의 출력인, 중간 값은 메모리에 저장된다. 또한, XORs (720 및 730) 의 출력도 FI 출력으로서 기능한다. 상술한 바와 같이, 셀렉터, 부분 FI 계산기 및 메모리의 수개의 회로 구현은 당해기술에 잘 알려져 있다. 이들 각각의 실시형태는 본 발명의 범위내에 있다.
도 8은 서브-키 발생기 (800) 를 나타낸다. 서브-키 발생기 (800) 는 128-bit key (K) 를 수신하며 로딩 및 회전 신호와 결합하여 상술한 여러 서브-키들을 생성한다. 서브-키 발생기 (800) 는 2개의 128-bit 시프트 레지스터 (810 및 820) 를 포함한다. 이들 각각은 로딩신호를 어설트하는 경우에 병렬로딩이 가능하며, 회전신호를 어설트하는 경우에 각각은 8-bit 좌회전을 수행한다. 로딩 신호는 KASUMI 계산 초기에 한번 어설트된다. 회전 신호는, 각각의 라운드가 신규 라운드에 대하여 신규 서브-키들을 생성하는 것을 완료한 후에 인에이블된다. 이하, 다른 제어 신호들과 관련한 이들 제어신호를 더욱 자세하게 설명한다.
당업자는 이들 회전가능 시프트 레지스터에 대한 수개의 방법을 잘 알고 있다. 예를 들면, 시프트 레지스터는 제 1 스테이지에 대한 입력으로서 시프트된 출력 비트를 피드백시켜 회전 시프트 레지스터로 구성할 수 있다. 이러한 회전 시프트 레지스터는 8회 시프트하여 8-bit 좌측 회전을 발생시킬 수 있다. 다른 방법으로는, 시프트 레지스터는 각각의 시프트가 각각의 비트를 8개의 포지션 만큼 회전 (즉, 바이트폭 (byte-wise) 좌회전) 하도록 와이어링될 수도 있다. 이 다른 방법은 각각의 입력에 피드백되는 출력들로 구성된 8개의 인터리브된 16 bit 시프트 레지스터를 구현하는 것과 등가의 방법이다.
시프트 레지스터 (820) 는 K1 내지 K8로 표시된 8 개의 16-bit 섹션으로 이루어진다. K (127:112) 는 K1 에 대하여 로딩 입력으로서 기능한다. K (111:96) 는 K2 에 대하여 로딩입력으로서 기능한다. K (95:80) 는 K3에 대하여 로딩입력으로서 기능한다. K (79:64) 는 K4에 대하여 로딩입력으로서 기능한다. K (63:48) 는 K5에 대하여 로딩입력으로서 기능한다. K (47:32) 는K6에 대하여 로딩입력으로서 기능한다. K (31:16) 는 K7에 대하여 로딩입력으로서 기능한다. K (15:0) 는 K8에 대하여 로딩입력으로서 기능한다.
시프트 레지스터 (810) 는 K1' 내지 K8'로 표시된 8개의 16-bit 섹션으로 이루어진다. 시프트 레지스터 (810) 에 대한 로딩 입력은 상수 C1 내지 C8를 갖는 K의 여러 세그먼트를 비트와이즈 XOR연산하여 형성되는데, 이들 상수는 KASUMI 사양에서 규정된다. 아래 표 1은 이들 상수값을 제공한다.
[표 1]
K1'에 대한 로딩 입력은 XOR (801) 에서 C1과 K (127: 112) 를 비트와이즈 XOR연산하여 발생된다. K2'에 대한 로딩 입력은 XOR (802) 에서 C2와 K (111 : 96) 를 비트와이즈 XOR연산하여 발생된다. K3'에 대한 로딩 입력은 XOR (803) 에서 C3와 K (95: 80) 를 비트와이즈 XOR연산하여 발생된다. K4'에 대한 로딩 입력은 XOR (804) 에서 C4와 K (79: 64) 를 비트와이즈 XOR연산하여 발생된다. K5'에 대한 로딩 입력은 XOR (805) 에서 C5와 K (63: 48) 를 비트와이즈 XOR연산하여 발생된다. K6'에 대한 로딩 입력은 XOR (806) 에서 C6과 K (47: 32) 를 비트와이즈 XOR연산하여 발생된다. K7'에 대한 로딩 입력은 XOR (807)에서 C7과 K (31: 16) 를 비트와이즈 XOR연산하여 발생된다. K8'에 대한 로딩 입력은 XOR (808) 에서 C8과 K (15 : 0) 를 비트와이즈 XOR연산하여 발생된다. 물론, 각각의 XOR (801-808) 는 피연산자들중 하나의 피연산자로서 상수를 갖기 때문에, 각각의 128 XORs는, 대응 상수가 "0"인 경우 와이어로 그리고, 대응 상수가 "1"인 경우 인버터로 대체할 수 있다.
일부 서브-키는 시프트 레지스터 (810) 로부터 직접 태핑 (tapping) 된다. KLi,2는 K3'으로부터 태핑된다. KIi, 2는 K4'로부터 태핑된다. KIi, 1은 K5'로부터 태핑된다. KIi, 3는 K8'로부터 태핑된다. 또 다른 서브-키는, 시프트 레지스터 (820) 의 여러 세그먼트를 회전시켜 발생된다. KLi,1는 로테이터 (830) 에서 1 bit만큼 K1을 좌회전시켜 발생된다. KOi,1는 로테이터 (840) 에서 4 bit만큼 K2를 좌회전시켜 발생된다. KOi,2는 로테이터 (850) 에서 8 bit만큼 K6을 좌회전시켜 발생된다. KOi,3는 로테이터 (860) 에서 13 bit만큼 K7을 좌회전시켜 발생된다. 각각의 이들 로테이터는 상수값만큼 회전시키기 때문에, 각각의 회전은 단순 와이어-매핑을 통해 실시할 수 있다. 당업자는, 이러한 와이어-매핑을 실시하는 방법을 알고 있으며, 이에 대하여 회전에 대한 다른 여러 기술도 알고 있다.
도 9는 KASUMI의 일 실시형태에서 수행되는 플로우차트의 단계를 자세히 나타낸다. 또한, 도 3을 통하여 설명한 것과 같은 실시형태를 전개하는 경우, 이들 단계를, KASUMI 계산 컨트롤러 (320) 에 이용할 수 있다. 또한, 이들 단계는 도 4를 통하여 나타낸 KASUMI 라운드 (400) 와 같은 실시형태에 적용될 수도 있다.
이러한 처리는 시작단계 (902) 에서 시작하여 블록 (904) 으로 진행한다. 블록 (904) 에서, i 를 1로 설정하는데, 여기서 i는 라운드 번호를 의미한다. 여기서는 라운드 1이기 때문에, 라운드를 계산하기 위하여 KASUMI 라운드에 대한 입력을 선택한다. 도 4에 나타낸 바와 같이, 이는 KASUMI 입력 선택을 제로로 설정하는 것에 대응한다. 블록 결정블록 (906) 으로 진행하는데, 여기서, 테스트를 수행하여 i로 표시되는 현재 라운드가 짝수번째인지 또는 홀수번째인지를 판정한다. i 가 홀수 즉, 1, 3, 5, 또는 7인 경우 블록 (908) 으로 진행한다. i 가 짝수 즉, 2, 4, 6, 또는 8인 경우, 블록 (910) 으로 진행한다.
블록 (908) 에서, KASUMI 라운드의 데이터 플로우는 FL 펑션 내지 FO 펑션에 대한 (라운드 1에서의) 입력 또는 (라운드 3, 5 및 7에서의) 피드백으로부터 XOR 게이트로 플로우하도록 구성된다. 이는, 도 4에서 kasumi_data_flow를 1로 설정하는 것에 대응한다.
블록 (910) 에서, KASUMI 라운드의 데이터 플로우는 FO 펑션 내지 FL 펑션에 대한 피드백으로부터 XOR 게이트로 플로우하도록 구성된다. 이는, 도 4에서 kasumi_data_flow를 제로로 설정하는 것에 대응한다.
블록 (908 또는 910) 으로부터, 블록 (912) 으로 진행하여, KASUMI 라운드를 연산한다. KASUMI 라운드를 연산하는 일 실시형태를 도 4에 자세히 나타내지만, KASUMI 라운드를 연산하는 어떠한 방법도 도 9의 플로우차트의 범위내에 있다. KASUMI 라운드를 연산했으면, 그 연산 결과를 래치 결과 블록 (914) 에 저장시킨다. 이는 도 4에서 나타낸 kasumi_reg_en 신호를 어설트하는 것에 대응한다. 결정블록 (916) 으로 진행한다.
결정블록 (916) 에서, i 가 8과 동일한 경우, 8번째 및 최종 라운드를 수행하여 KASUMI 완료 블록 (922) 에서 처리를 완료한다. 완료 신호를 이용하는 일 실시형태에서, 도 3에 나타낸 바와 같이, 이 때, 신호를 어설트할 수 있다. i가 8보다 작은 경우, 부가 라운드들을 수행할 수 있기 때문에, i는 블록 (918) 에서 1만큼 증분된다. 블록 (914) 의 래치 결과로부터 피드백을 선택하여 다음 라운드를 연산하는 블록 (920) 으로 진행한다. 이는, 도 4에서 gkasumi_input_select를 1로 설정하는 것에 대응한다. 결정블록 (906) 으로 루프백 (loop back) 하여 다음 라운드를 수행한다. KASUMI 완료 블록 (922) 에 도달할 때까지 이들 단계를 반복한다.
도 10은 FO 펑션의 일 실시형태에서 수행되는 단계를 더욱 자세히 나타낸다. 또한, 도 3을 통하여 설명한 것과 같은 일 실시형태가 전개되는 경우에, 이들 단계는 KASUMI 계산 컨트롤러 (320) 에 이용될 수 있다. 또한, 이들 단계는 도 6을 통하여 설명한 FO 펑션 (600) 에도 적용할 수 있다.
이 처리는 시작 블록 (1002) 에서 시작하여, 블록 (1004) 로 진행한다. 블록 (1004) 에서, j 를 1로 설정하는데, 여기서 j 는 스테이지 번호를 나타낸다. 여기서는 스테이지 1이기 때문에, FO 펑션에 대한 입력을 선택하여 연산한다.이는, 도 6에 나타낸 바와 같이, fo_input_select를 1로 설정하는 것에 대응한다. 또한, 스테이지 번호 j는 도 3에 나타낸 subkey_select와 상관처리된다. (일부 실시형태에서, 0, 1, 및 2인 subkey_select 값은 1, 2, 및 3인 j값에 대응한다. 다른 방법으로는, j값에 일치하는 1, 2 및 3인 subkey_select 값에 기초하여 선택하는 3개의 입력 MUX를 전개시킬 수도 있다.)
다음, 블록 (1006) 으로 진행하는데, 여기서, 1/3 FO 펑션을 연산한다. 1/3 FO 펑션을 연산할 수 있는 실시형태를 도 6에 나타내지만, 다른 실시형태도 도 10의 플로우차트의 범위내에 있다. 1/3 계산의 결과를 래치 결과 블록 (1008) 에서 저장한다. 이는, 도 6에서의 fo_output_en를 어설트하는 것에 대응한다. 이후, 결정블록 (1010) 으로 진행하여, j 가 3과 같은지를 테스트한다. j가 3과 같은 경우, FO 완료 블록 (1016) 으로 진행하여, FO 펑션을 완료한다. j 가 3보다 작은 경우에는, 하나 이상의 스테이지들이 아직 완료되지 않은 것이다. 블록 (1012) 으로 진행하여 j를 1만큼 증분한다. 이후, 피드백을 블록 (1008) 에서 래치되는 결과로부터 FO 펑션에 대한 입력으로서 선택하는 블록 (1014) 으로 진행한다. 이는, 도 6에서 fo_input_select을 제로로 설정하는 것에 대응한다. 블록 (1006) 에서 루프백하여 다음 스테이지를 계산한 다음, 모든 스테이지들이 완료될 때까지 이러한 처리를 반복한다.
도 11은 FI 펑션의 일 실시형태에서 수행되는 단계들을 자세히 나타내는 플로우차트이다. 또한, 이들 단계는 도 3 을 통하여 설명한 바와 같이 일 실시형태가 전개되는 경우, KASUMI 계산 컨트롤러 (320) 에 이용될 수도 있다. 또한,이들 단계는 도 7을 통하여 설명한 FI펑션 (700) 과 같은 실시형태에서도 적용할 수 있다.
이 처리는 시작 블록 (1102) 에서 시작하여, 블록 (1104) 으로 진행한다. 블록 (1104) 에서, 연산을 위한 입력을 선택하는데 이는, 도 7에서의 fi_input_select를 1로 설정하는 것에 대응한다. 1/2 FI 펑션을 연산하는 블록 (1106) 으로 진행한다. 블록 (1108) 으로 진행하여, 블록 (1106) 에서 계산한 1/2 FI 펑션의 결과를 래치시킨다. 블록 (1110) 으로 진행하는데, 여기서 연산을 위한 피드백을 선택하며, 이는 도 7에서 fi_input_select를 제로로 설정하는 것에 대응한다. 두번째 1/2 FI 펑션을 연산하는 블록 (1112) 으로 진행한다. 블록 (1114) 으로 진행하여, FI 연산을 완료한다.
도 12는 도 8을 통하여 상술한 바와 같은, 서브-키 발생기의 실시형태를 제어 하는데 수행되는 단계를 자세히 나타내는 플로우차트이다. 또한, 이들 단계들은, 도 3을 통하여 설명한 것과 같은 실시형태가 전개되는 경우, KASUMI 계산 컨트롤러 (320) 에 이용될 수도 있다.
이 처리는 시작블록 (1202) 에서 시작하여, 블록 (1204) 으로 진행한다. 블록 (1204) 에서, i를 1로 설정하는데, 여기서, i 는 라운드 번호를 나타낸다. 서브-키 시프트 레지스터들을 로딩시킨다. 예를 들면, 도 3에서의 로딩신호를, 도 8에 나타낸 어설트되는 경우, 2개의 시프트 레지스터 (810 및 820) 를 로딩시키는 서브-키 발생기 (800) 에 접속시킬 수 있다. 블록 (1206) 으로 진행하여 이용할 서브-키들의 현재 세트를 대기하는데, 통상적으로, 이 현재 세트들은 하나의KASUMI 라운드가 일어나는데 걸리는 시간이 된다. 이 시간 동안에, 라운드 하나에 대응하는 서브-키들의 세트는 유효상태에 있다. 다음 결정블록 (1208) 으로 진행한다.
결정블록 (1208) 에서, i가 8과 같은 경우, 8번째 또는 마지막 KASUMI 라운드를 수행한 다음 완료 블록 (1214) 에서 이러한 처리를 완료한다. 또 다른 KASUMI 연산이 필요한 경우, 처리가 개시 블록 (1202) 으로 되돌아간다. i 가 8보다 작은 경우, 추가 라운드가 서브-키들의 신규 세트를 요청한다. 블록 (1210) 으로 진행하여, 서브-키 시프트 레지스터를 회전시킨다. 이는, 도 3에서의 회전 신호를 어설트하며, 도 8을 통하여 상술한 바와 같이, 이에 의해 시프트 레지스터 (810 및 820) 에서 8-bit 좌회전이 발생한다. 블록 (1212)으로 진행하여 i를 1만큼 증분한다. 블록 (1206) 으로 루프백하여 서브-키들을 다른 KASUMI 라운드에 제공한다. 완료 블록 (1214) 에 도달할 때까지 이들 단계를 반복한다.
도 13은 도 3 내지 도 8 및 도 9 내지 도 12의 플로우차트를 통하여 설명한 기술을 실시하는 KASUMI 를 수행하는 단계들을 나타내는 플로우차트이다. 도 13의 단계들을 이용한 예시적인 실시형태는 상기 도 3에서 나타낸 KASUMI (300) 이다. 예시적인 KASUMI (300) 는 서브-키 발생기 (310) 및 KASUMI 라운드 (330) 와 결합하여 도 13에 나타낸 제어 단계들을 수행하는 KASUMI 계산 컨트롤러 (320) 를 이용할 수 있다. 서브-키 발생기 (310) 는 도 9에 나타낸 서브-키 발생기 (800) 와 같은 종류일 수 있다. KASUMI 라운드 (330) 는 도 8에 나타낸KASUMI 라운드 (400) 와 같은 종류일 수 있다. KASUMI 라운드 (400) 는 도 5와 도 6에 설명한 FL 펑션 (500) 및 FO 펑션 (600) 를 각각 이용할 수 있다. FO 펑션 (600) 는 도 7에 나타낸 FI 펑션 (700) 를 이용할 수 있다. 도 13에서의 플로우차트는 시작 블록 (1302) 에서 시작하여 블록 (1304) 으로 진행한다.
블록 (1304) 에서, i 를 1로 설정하는데, 여기서, i 는 라운드 번호를 나타낸다. 여기서는 라운드 1이기 때문에, KASUMI 라운드에 대한 출력을 라운드를 연산하기 위하여 선택한다. 이는, 도 4에 나타낸 바와 같이, kasumi_input_select 를 제로로 설정하는 것에 대응한다. 서브-키 시프트 레지스터를 로딩시킨다. 예를들면, 도 3의 로딩 신호는, 어설트하는 경우, 2개의 시프트 레지스터 (810 및 820) 를 로딩시키는 도 8에 나타낸 서브-키 발생기 (800) 에 접속할 수 있다.
결정블록 (1306) 으로 진행하는데, 여기서, 테스트를 수행하여, i로 표시되는 현재의 라운드가 짝수번째인지 홀수번째인지를 결정한다. i 가 홀수 즉, 1, 3, 5, 또는 7 인 경우, 블록 (1308) 으로 진행한다. i가 짝수 즉, 2, 4, 6, 또는 8인 경우, 블록 (1310) 으로 진행한다. 블록 (1308) 에서, KASUMI 라운드의 데이터 플로우는 FL 펑션 내지 FO 펑션에 대한 (라운드 1에서의) 입력 또는 (라운드 3, 5 및 7에서의) 피드백으로부터 XOR 게이트로 플로우하도록 구성된다. 이는, 도 4에서 kasumi_data_flow를 1로 설정하는 것에 대응한다. 블록 (1310) 에서, KASUMI 라운드의 데이터 플로우는 FO 펑션 내지 FL 펑션에 대한 피드백으로부터 XOR 게이트로 플로우하도록 구성된다. 이는, 도 4에서 kasumi_data_flow를 제로로 설정하는 것에 대응한다.
블록 (1308 또는 1310) 으로부터, 블록 (1312) 으로 진행하여 KASUMI 라운드의 연산을 시작한다. FI 및 FO 의 스테이지에서와 같이 라운드의 서브-펑션들을 첫번째로 설명하였지만, 당업자는, 본 발명의 범위를 벗어나지 않고도 이들 방법 단계들을 변경할 수 있음을 안다.
블록 (1312) 에서, FO 펑션을 초기화한다. J를 1로 설정하는데, 여기서, j 는 스테이지 번호를 나타낸다. 여기서는 FO 스테이지 1이기 때문에, FO 펑션을 연산하기 위하여 FO 펑션에 대한 입력을 선택한다. 이는, 도 6에 나타낸 바와 같이, fo_input_select을 1로 설정하는 것에 대응한다. 또한, 스테이지 번호 j 는 도 3에 나타낸 신호 subkey_select와 상관된다. subkey_select 와 j 의 상관관계는 도 10을 통하여 자세히 설명하였다. 블록 (1314) 으로 진행하여 FI 펑션을 수행한다.
블록 (1314) 에서, FI 펑션을 연산하기 위하여 입력을 선택하는데, 이는, 도 7에서 fi_input_select를 1로 설정하는 것에 대응한다. 1/2 FI 펑션이 연산되는 블록 (1316) 으로 진행한다. 1/2 FI 펑션을 연산할 수 있는 일 실시형태를 도 7에 나타냈지만, 또 다른 실시형태도 도 13의 플로우차트의 범위내에 있다. 블록 (1318) 로 진행하여, 블록 (1316)에서 계산되는 첫번째 1/2 FI의 결과를 래치시킨다. 블록 (1320) 으로 진행하며 여기서, FI 피드백을 선택하여 FI 펑션을 연산하는데, 이는, 도 7에서 fi_input_select 를 제로로 설정하는 것에 대응한다. 두번째 1/2 FI를 연산하는 블록 (1322) 으로 진행한다. 블록 (1324) 으로 진행하여 FO 처리를 진행하고, FI 연산을 완료한다.
블록 (1324) 에서, 1/3 FO 펑션을 연산한다. 1/3 FO펑션을 연산할 수 있는 일 실시형태를 도 6에 나타냈지만, 또 다른 실시형태도 도 13의 플로우차트의 범위내에 있다. 1/3 FO 계산의 결과는 래치 FO 결과 블록 (1326) 에서 저장된다. 이는, 도 6에서 fo_output_en를 어설트하는 것에 대응한다. 이후, 결정블록 (1328) 으로 진행하여, j 가 3과 같은지를 테스트한다. j 가 3과 같은 경우, FO 처리를 완료한다. 블록 (1334) 으로 진행하여, KASUMI 처리를 진행한다. j 가 3보다 작은 경우, 하나 이상의 스테이지들이 아직 완료되지 않는다. 블록 (1330) 으로 진행하여 j를 1만큼 증분시킨다. 이후, 피드백을 블록 (1326) 에서 래치시킨 FO 결과들로부터 선택하는 블록 (1332) 으로 진행하여, 이 결과들을 FO 펑션에 대한 입력으로서 선택한다. 이는, 도 6에서 fo_input_select를 제로로 설정하는 것에 대응한다. 블록 (1314) 으로 루프백하여 다음 스테이지들을 계산한 다음, 모든 스테이지들이 완료될 때까지 이러한 처리를 반복한다.
블록 (1334) 에서, KASUMI 라운드를 연산한다. KASUMI 라운드를 연산하는 일 실시형태를 도 4에 자세히 나타내었지만, KASUMI 라운드를 연산하는 어떠한 방법도 도 13의 플로우차트의 범위내에 있다. KASUMI 라운드를 블록 (1334) 에서 연산한 경우, 그 연산한 결과를 래치 KASUMI 결과 블록 (1336) 에 저장한다. 이는, 도 4에 나타낸 kasumi_reg_en 신호를 어설트하는 것에 대응한다. 이후, 결정블록 (1338) 으로 진행한다.
결정블록 (1338) 에서, i 가 8과 같은 경우, 여덟번째 및 마지막 라운드를 수행하여 이러한 처리를 KASUMI 완료 블록 (1346) 에서 완료한다. 도 3에서 나타낸 것과 같이, 완료 신호를 이용하는 일 실시형태에서, 이때 신호를 어설트할 수 있다. 블록 (1340) 에서 i 가 8보다 작은 경우, 추가의 라운드를 수행하여, i를 1만큼 증분시킨다. 피드백을 블록 (1336) 의 래치 결과로부터 선택하여 다음 라운드에서 연산하는 블록 (1342) 으로 진행한다. 이는 도 4에서 kasumi_input_select를 1로 설정하는 것에 대응한다. 다음 라운드에서, 서브-키들의 신규 세트가 필요하기 때문에, 블록 (1344) 으로 진행하여 서브-키 시프트 레지스터를 회전시킨다. 이는, 도 3에서 회전신호를 어설트하는 것에 대응하며, 도 8을 통하여 설명한 바와 같이, 이에 의해 시프트 레지스터 (810 및 820) 에서 8-bit 좌회전을 수행할 수 있다. 결정블록 (1306) 으로 루프백하여, 다음 라운드를 수행한다. KASUMI 완료블록 (1346) 에 도달할 때까지 이들 단계를 반복한다.
상술한 모든 실시형태들에서, 본 발명의 범위에 벗어나지 않고도 방법단계들을 변경할 수 있다.
당업자는, 여러 상이한 방법과 기술을 이용하여 정보와 신호들을 표시할 수 있음을 안다. 예를 들면, 상술한 명세서 전반에 걸쳐 언급된 명령, 커맨드, 정보, 신호, 비트, 심볼 및 칩을 전압, 전류, 전자기파, 자기장, 또는 자기입자, 광 필드 또는 광입자 또는 이들의 조합으로 나타낼 수 있다.
또한, 당업자는, 상술한 이 실시형태들과 결합하여 기술되는 여러 논리 블록, 모듈, 회로, 및 알고리즘 스텝을 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합으로서 실시할 수 있음을 안다. 하드웨어와 소프트웨어의 호환가능성을 명확하게 설명하기 위하여, 여러 구성요소, 블록, 모듈, 회로, 및 스텝들을 그들의 기능성의 면에서 상술하였다. 이러한 기능성이 하드웨어 또는 소프트웨어로서 실시될 수 있는지의 여부는 전체적인 시스템에 부가되는 특정 애플리케이션과 설계상의 구속조건에 의존한다. 당업자는, 매 특정 애플리케이션마다 여러 방법으로 상술한 기능성을 실시할 수 있지만, 이러한 실시의 결정은 본 발명의 범위에 벗어나기 때문에 여기서는 설명하지 않는다.
상술한 이 실시형태들과 결합하여 설명된 여러 논리 블록, 모듈 및 회로는, 범용 프로세서 또는 디지털 신호 프로세서 (DSP), 응용 주문형 집적회로 (ASIC), 필드 프로그래밍가능 게이트 어레이 (FPGA) 또는 다른 프로그래밍가능 논리 장치, 별도의 게이트, 또는 트랜지스터 로직, 별도의 하드웨어, 구성요소들, 또는 상술한 기능을 수행할 수 있도록 설계된 이들의 조합을 이용하여 실시될 수도 있고 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 다른 것도 가능하며, 프로세서는 어떠한 통상적인 프로세서, 컨트롤러, 마이크로컨트롤러, 또는 스테이트 머신일 수도 있다. 또한, 프로세서는 연산 장치의 조합, 예를 들면, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 결합하는 하나 이상의 마이크로프로세서 또는 이들의 또 다른 구성으로서 실시될 수도 있다.
상술한 이 실시형태들과 결합하는 방법과 알고리즘의 단계들을 하드웨어에서, 소프트웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈, 또는 이들 2가지의 조합에서 직접 실시할 수도 있다. 소프트웨어 모듈은 RAM 메모리, 플래쉬 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드디스크, 제거가능 디스크, CD-ROM, 또는 당해기술에 알려진 기억매체의 어떠한 형태에도 존재할 수 있다. 예시적인 기억 매체는 기억매체에 정보를 기록하는 기억매체로부터 정보를 판독할 수 있는 프로세서에 연결된다. 다른 방법으로는, 기억매체는 프로세서에 집적화될 수도 있다. 프로세서와 기억매체는 ASIC내에 존재할 수도 있다. ASIC 은 유저 단말기에 존재할 수도 있다. 또 다른 방법으로는, 프로세서와 기억 매체는 유저 단말기에 별도의 부품으로서 존재할 수도 있다.
개시한 실시형태들의 이전 설명들이 제공되어, 당업자는 본 발명을 이용 또는 실시할 수 있다. 이들 실시형태에 대한 여러 변형을 용이하게 할 수 있으며 여기에 규정된 일반적인 원리를, 본 발명의 범위에 벗어남이 없이 다른 실시형태들에 적용할 수 있다. 따라서, 본 발명은 상술한 실시형태들로 제한되지 않으며, 개시된 신규 특징 및 원리와 부합하는 넓은 범위를 포함한다.

Claims (25)

  1. 8개의 라운드를 시퀀싱하는 계산 컨트롤러에 연결되어 동작하며 KASUMI 암호의 분수부분을 발생시켜 KASUMI 출력을 생성하는 KASUMI 라운드를 갖는, 장치.
  2. 제 1 항에 있어서,
    계산 컨트롤러에 접속되어 매 라운드마다 KASUMI 라운드에 이용하기 위한 서브-키를 생성하는 서브-키 발생기를 더 구비하는, 장치.
  3. KASUMI 출력을 생성하도록, 키를 갖고 KASUMI 입력에 대해 KASUMI 암호화를 수행하는 장치로서,
    짝수번째 라운드 및 홀수번째 라운드를 계산하도록 구성가능하며 8개의 라운드가 계산되어 KASUMI 출력을 생성하여, KASUMI 암호의 분수부분을 발생시키는 KASUMI 라운드;
    KASUMI 라운드의 출력을 저장하는 메모리; 및
    KASUMI 라운드에 입력을 제공하는 셀렉터를 구비하되,
    KASUMI 입력이 제 1 라운드 동안에 선택되며, 메모리의 컨텐츠가 후속 라운드 동안에 선택되는, KASUMI 암호화의 수행장치.
  4. 제 3 항에 있어서,
    키에 기초하여 매 라운드마다 서브-키를 발생시키는 서브-키 발생기를 더 구비하는, KASUMI 암호화의 수행장치.
  5. 제 3 항에 있어서,
    액세스 포인트에서 동작가능하게 구성되는, KASUMI 암호화의 수행장치.
  6. 제 3 항에 있어서,
    액세스 단말기에서 동작가능하게 구성되는, KASUMI 암호화의 수행장치.
  7. 제 3 항에 있어서,
    W-CDMA 시스템에서 동작가능하게 구성되는, KASUMI 암호화의 수행장치.
  8. 입력을 수신하여 출력을 생성하며, 출력을 생성하는 부분 라운드 계산기와 동작가능한 KASUMI 라운드로서,
    부분 라운드 계산기로부터의 중간값을 저장하는 메모리; 및
    부분 라운드 계산기로의 전달을 위해 메모리의 컨텐츠와 입력간을 선택하는 셀렉터를 구비하는, KASUMI 라운드.
  9. 64-bit 입력을 수신하여 64-bit 출력을 생성하는 KASUMI 라운드로서,
    FO 펑션;
    FL 펑션;
    XOR 게이트;
    제 1 레지스터;
    XOR 게이트의 출력을 수신하되, 출력이 제 1 레지스터의 출력과 연결되어 64-bit 출력을 생성하는, 제 2 레지스터;
    입력 선택 신호의 제어 하에서 64-bit 입력의 상위 1/2과 제 2 레지스터의 출력 간을 선택하되, 출력이 제 1 레지스터에서 수신되는, 제 1 입력 MUX;
    입력 선택 신호의 제어 하에서 64-bit 입력의 하위 1/2과 제 1 레지스터의 출력 간을 선택하되, 출력이 XOR 게이트로 제 2 피연산자로서 전달되는, 제 2 입력 MUX;
    데이터 플로우 신호의 제어 하에서 제 1 입력 MUX의 출력과 FO 펑션의 출력 간을 선택하되, 그 출력이 FL 펑션으로 전달되는, 제 1 데이터패스 MUX;
    데이터 플로우 신호의 제어 하에서 FL 펑션의 출력과 제 1 레지스터의 출력 간을 선택하되, 그 출력이 FO 펑션으로 전달되는, 제 2 데이터패스 MUX; 및
    데이터 플로우 신호의 제어 하에서 FL 펑션의 출력과 FO 펑션의 출력 간을 선택하되, 그 출력이 XOR 게이트로 제 1 피연산자로서 전달되는, 제 3 데이터패스 MUX를 구비하는, KASUMI 라운드.
  10. 입력을 수신하여 출력을 생성하며, 출력을 생성하는 부분 FO 계산기와 동작가능한 FO 펑션으로서,
    부분 FO 계산기로부터의 중간값을 저장하는 메모리; 및
    부분 FO 계산기로의 전달을 위해 메모리의 컨텐츠와 입력 간을 선택하는 셀렉터를 구비하는, FO 펑션.
  11. 32-bit 입력을 수신하여 32-bit 출력을 생성하는 FO 펑션으로서,
    KO 서브-키를 제 1 피연산자로서 수신하는 제 1 XOR 게이트;
    제 1 XOR 게이트의 출력을 수신하는 FI 펑션;
    FI 펑션의 출력을 제 1 피연산자로서 수신하는 제 2 XOR 게이트;
    제 2 XOR 게이트의 출력을 수신하는 제 1 레지스터;
    제 2 레지스터;
    입력 선택 신호의 제어 하에서 32-bit 입력의 상위 1/2과 제 2 레지스터의 출력 간을 선택하되, 그 출력이 제 1 XOR 게이트로 제 2 피연산자로서 전달되는 제 1 입력 MUX; 및
    입력 선택 신호의 제어 하에서 32-bit 입력의 하위 1/2과 제 1 레지스터의 출력 간을 선택하되, 그 출력이 제 2 XOR 게이트로 제 2 피연산자로서 전달되며, 출력이 제 2 XOR 게이트의 출력과 연결되어 32-bit 출력을 생성하는 제 2 입력 MUX를 구비하는, FO 펑션.
  12. 입력을 수신하여 출력을 생성하며, 중간값과 출력을 생성하는 부분 FI 계산기와 동작가능한 FI 펑션으로서,
    부분 FI 계산기로부터의 중간값을 저장하는 메모리; 및
    부분 FI 계산기로의 전달에 대한 메모리의 컨텐츠와 입력 간을 선택하는 셀렉터를 구비하는, FI 펑션.
  13. 16-bit 입력을 수신하여 16-bit 출력을 생성하는 FI 펑션으로서,
    제 1 레지스터;
    제 2 레지스터;
    입력 선택 신호의 제어 하에서 제 1 레지스터의 출력과 16-bit 입력의 상위 9 bits 간을 선택하는 제 1 입력 MUX;
    입력 선택 신호의 제어 하에서 제 2 레지스터의 출력과 16-bit 입력의 하위 7 bits 간을 선택하는 제 2 입력 MUX;
    제 1 입력 MUX의 출력을 수신하는 S9 펑션;
    제 2 입력 MUX의 제로 확장된 출력과 S9 펑션의 출력을 피연산자로서 수신하는 제 1 XOR;
    제 2 입력 MUX의 출력을 수신하는 S7 펑션;
    S7 펑션의 출력과 제 1 입력 MUX의 절단된 출력을 피연산자로서 수신하되, 출력이 제 1 XOR의 출력과 연결되어 16-bit 출력을 생성하는 제 2 XOR;
    제 1 KI 서브-키와 제 1 XOR의 출력을 피연산자로서 수신하되, 그 출력이 제 1 레지스터로 전달되는 제 3 XOR; 및
    제 2 KI 서브-키와 제 2 XOR의 출력을 피연산자로서 수신하되, 그 출력이 제2 레지스터로 전달되는 제 4 XOR를 구비하는, FI 펑션.
  14. 키를 수신하고 매 라운드마다 8개의 서브-키를 생성하는 서브-키 발생기로서,
    키로 로딩가능하고 회전신호의 제어 하에 8bits만큼 좌회전가능하되, 8개의 서브-키들 중 4개의 서브-키가 출력으로부터 유도되는, 제 1 시프트 레지스터; 및
    키의 마스킹 버전으로 로딩가능하고 회전신호의 제어 하에 8bits만큼 좌회전가능하되, 8개의 서브-키들 중 4개의 서브-키가 출력으로부터 유도되는, 제 2 시프트 레지스터를 구비하는, 서브-키 발생기.
  15. 128-bit 키를 수신하고 매 라운드마다 8개의 16-bit 서브-키를 생성하는 서브-키 발생기로서,
    키로 로딩가능한 제 1 128-bit 시프트 레지스터;
    키의 마스킹 버전으로 로딩가능하되, 제 1 서브-키가 제 3 최상위 16 bits로부터 생성되며, 제 2 서브-키가 제 4 최상위 16 bits로부터 생성되며, 제 3 서브-키가 제 5 최상위 16 bits로부터 생성되며, 제 4 서브-키가 최하위 16 bits로부터 생성되는, 제 2 128-bit 시프트 레지스터;
    최상위 16 bits 에 위치한 제 1 시프트 레지스터의 컨텐츠를 1bit만큼 좌회전하여 제 5 서브-키를 생성하는 로테이터;
    제 2 최상위 16 bits 에 위치한 제 1 시프트 레지스터의 컨텐츠를 5bits만큼좌회전하여 제 6 서브-키를 생성하는 로테이터;
    제 3 최하위 16 bits 에 위치한 제 1 시프트 레지스터의 컨텐츠를 8bits만큼 좌회전하여 제 7 서브-키를 생성하는 로테이터; 및
    제 2 최하위 16 bits 에 위치한 제 1 시프트 레지스터의 컨텐츠를 13bits만큼 좌회전하여 제 8 서브-키를 생성하는 로테이터를 구비하는, 서브-키 발생기.
  16. 매 8개의 라운드마다,
    제 1 라운드 동안에 계산단계에 이용하는 입력을 선택하는 단계;
    후속 라운드에서의 계산 단계에 이용하는 저장 결과를 선택하는 단계;
    부분 결과를 계산하는 단계; 및
    부분 결과를 메모리에 저장하는 단계: 및
    저장 결과를 출력으로서 전달하는 단계를 포함하는, KASUMI 암호화의 수행방법.
  17. 제 16 항에 있어서,
    계산단계는,
    라운드가 홀수번째인 경우,
    선택단계에서 선택된 저장 결과 또는 입력의 상위 1/2 에 대하여 FL 펑션을 수행하는 단계;
    FL 펑션의 출력에 대하여 FO 펑션을 수행하는 단계; 및
    선택단계에서 선택된 저장 결과 또는 입력의 하위 1/2과 FO 펑션의 출력을 XOR연산하는 단계:
    라운드가 짝수번째인 경우,
    저장 결과의 상위 1/2에 대하여 FO 펑션을 수행하는 단계;
    FO 펑션의 출력에 대하여 FL 펑션을 수행하는 단계; 및
    저장 결과의 하위 1/2 와 FL 펑션의 출력을 XOR연산하는 단계: 및
    선택단계에서 선택된 저장 결과 또는 입력의 상위 1/2와 연결된, XOR연산단계의 출력을 부분결과로서 전달하는 단계를 포함하는, KASUMI 암호화의 수행방법.
  18. 제 16 항에 있어서,
    매 라운드마다 서브-키를 발생하는 단계를 더 포함하는, KASUMI 암호화의 수행방법.
  19. 매 3개의 스테이지마다,
    제 1 스테이지에서 계산단계에 이용하는 입력을 선택하는 단계;
    후속 스테이지에서 계산단계에 이용하는 저장결과를 선택하는 단계;
    부분결과를 계산하는 단계; 및
    부분결과를 메모리에 저장하는 단계: 및
    부분결과를 출력으로서 전달하는 단계를 포함하는, FO 펑션의 수행방법.
  20. 제 19 항에 있어서,
    계산단계는,
    선택단계에서 선택된 저장결과 또는 입력의 상위 1/2를 서브-키와 XOR연산하는 단계;
    XOR연산단계에서의 출력에 대하여 FI 펑션을 수행하는 단계;
    선택단계에서 선택된 저장결과 또는 입력의 하위 1/2를 FI 펑션의 출력과 XOR연산하는 단계; 및
    두번째 XOR연산단계의 출력과 연결된, 선택단계에서 선택된 저장결과 또는 입력의 상위1/2를 부분결과로서 전달하는 단계를 포함하는, FO 펑션의 수행방법.
  21. 입력을 이용하여 부분결과를 계산하는 단계;
    부분결과와 서브-키를 XOR연산하는 단계;
    부분결과를 메모리에 저장하는 단계;
    저장결과를 이용하여 제 2 부분결과를 계산하는 단계; 및
    제 2 부분결과를 출력으로서 전달하는 단계를 포함하는, FI 펑션의 수행방법.
  22. 제 21 항에 있어서,
    계산단계는,
    저장결과 또는 입력의 상위 9 bits에 대하여 S9 펑션을 수행하는 단계;
    저장결과 또는 입력의 하위 7 bits 를 제로 확장하는 단계;
    제로 확장된 저장결과 또는 입력을 S9 펑션의 출력과 XOR연산하는 단계;
    저장결과 또는 입력의 하위 7 bits에 대하여 S7 펑션을 수행하는 단계;
    XOR연산단계의 출력을 절단하는 단계;
    절단된 XOR 출력을 S7 펑션의 출력과 XOR연산하는 단계; 및
    첫번째 XOR연산단계의 출력과 연결된 두번째 XOR연산단계의 출력을 부분결과로서 전달하는 단계를 포함하는, FI 펑션의 수행방법.
  23. 2개의 서브-키 시프트 레지스터를 로딩시키는 단계:
    매 8개의 라운드마다,
    서브-키 시프트 레지스터로부터 서브-키를 유도하는 단계; 및
    2개의 서브-키 시프트 레지스터를 8 bits만큼 좌회전시키는 단계를 포함하는, 서브-키의 발생방법.
  24. 제 23 항에 있어서,
    로딩단계는,
    제 1 서브-키 시프트 레지스터로 키를 로딩시키는 단계;
    키를 마스킹하는 단계; 및
    마스킹된 키를 제 2 서브-키 시프트 레지스터로 로딩시키는 단계를 포함하는, 서브-키의 발생방법.
  25. 제 24 항에 있어서,
    유도단계는,
    제 2 서브-키 시프트 레지스터의 16 bits 의 제 3 최상위 세트로부터 제 1 서브-키를 유도하는 단계;
    제 2 서브-키 시프트 레지스터의 16 bits 의 제 4 최상위 세트로부터 제 2 서브-키를 유도하는 단계;
    제 2 서브-키 시프트 레지스터의 16 bits 의 제 5 최상위 세트로부터 제 3 서브-키를 유도하는 단계;
    제 2 서브-키 시프트 레지스터의 16 bits 의 최하위 세트로부터 제 4 서브-키를 유도하는 단계;
    제 1 서브-키 시프트 레지스터의 16 bits의 최상위 세트를 1bit만큼 좌회전시켜, 제 5 서브-키를 생성하는 단계;
    제 1 서브-키 시프트 레지스터의 16 bits의 제 2 최상위 세트를 5bits만큼 좌회전시켜, 제 6 서브-키를 생성하는 단계;
    제 1 서브-키 시프트 레지스터의 16 bits의 제 3 최하위 세트를 8bits만큼 좌회전시켜, 제 7 서브-키를 생성하는 단계; 및
    제 1 서브-키 시프트 레지스터의 16 bits의 제 2 최하위 세트를 13bits만큼 좌회전시켜, 제 8 서브-키를 생성하는 단계를 포함하는, 서브-키의 발생방법.
KR1020037015753A 2001-05-31 2002-05-31 Kasumi 암호화를 수행하는 장치 및 방법 KR100895224B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US29495801P 2001-05-31 2001-05-31
US60/294,958 2001-05-31
US09/920,784 2001-08-01
US09/920,784 US7212631B2 (en) 2001-05-31 2001-08-01 Apparatus and method for performing KASUMI ciphering
PCT/US2002/017042 WO2002098052A2 (en) 2001-05-31 2002-05-31 Apparatus and method for performing kasumi ciphering

Publications (2)

Publication Number Publication Date
KR20040004679A true KR20040004679A (ko) 2004-01-13
KR100895224B1 KR100895224B1 (ko) 2009-05-04

Family

ID=26968838

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037015753A KR100895224B1 (ko) 2001-05-31 2002-05-31 Kasumi 암호화를 수행하는 장치 및 방법

Country Status (7)

Country Link
US (1) US7212631B2 (ko)
JP (4) JP2005517967A (ko)
KR (1) KR100895224B1 (ko)
CN (1) CN1321506C (ko)
AU (1) AU2002259318A1 (ko)
HK (1) HK1066357A1 (ko)
WO (1) WO2002098052A2 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100423811B1 (ko) * 2001-12-12 2004-03-22 한국전자통신연구원 카스미 암호화 알고리즘을 응용한 암호화 장치
US7796752B2 (en) * 2002-11-04 2010-09-14 Marvell International Ltd. Cipher implementation
KR100516548B1 (ko) * 2003-02-05 2005-09-22 삼성전자주식회사 이동 통신 시스템에서 최적화된 암호화 함수를 설계하는방법과 최적화된 암호화 장치
US7545928B1 (en) * 2003-12-08 2009-06-09 Advanced Micro Devices, Inc. Triple DES critical timing path improvement
US7580519B1 (en) 2003-12-08 2009-08-25 Advanced Micro Devices, Inc. Triple DES gigabit/s performance using single DES engine
US20050163313A1 (en) * 2004-01-23 2005-07-28 Roger Maitland Methods and apparatus for parallel implementations of table look-ups and ciphering
US7433469B2 (en) * 2004-04-27 2008-10-07 Intel Corporation Apparatus and method for implementing the KASUMI ciphering process
US7885405B1 (en) 2004-06-04 2011-02-08 GlobalFoundries, Inc. Multi-gigabit per second concurrent encryption in block cipher modes
US7561689B2 (en) * 2004-06-17 2009-07-14 Agere Systems Inc. Generating keys having one of a number of key sizes
US7526085B1 (en) 2004-07-13 2009-04-28 Advanced Micro Devices, Inc. Throughput and latency of inbound and outbound IPsec processing
US20060013387A1 (en) * 2004-07-14 2006-01-19 Ruei-Shiang Suen Method and system for implementing KASUMI algorithm for accelerating cryptography in GSM/GPRS/EDGE compliant handsets
US7688972B2 (en) 2004-07-14 2010-03-30 Broadcom Corporation Method and system for implementing FO function in KASUMI algorithm for accelerating cryptography in GSM (global system for mobile communication)GPRS (general packet radio service)edge(enhanced data rate for GSM evolution) compliant handsets
US7760874B2 (en) * 2004-07-14 2010-07-20 Broadcom Corporation Method and system for implementing FI function in KASUMI algorithm for accelerating cryptography in GSM/GPRS/EDGE compliant handsets
US20060037995A1 (en) * 2004-08-20 2006-02-23 Texas Instruments Incorporated Heatslug to leadframe attachment
US7627115B2 (en) 2004-08-23 2009-12-01 Broadcom Corporation Method and system for implementing the GEA3 encryption algorithm for GPRS compliant handsets
US7623658B2 (en) * 2004-08-23 2009-11-24 Broadcom Corporation Method and system for implementing the A5/3 encryption algorithm for GSM and EDGE compliant handsets
US7783037B1 (en) 2004-09-20 2010-08-24 Globalfoundries Inc. Multi-gigabit per second computing of the rijndael inverse cipher
US7627113B2 (en) * 2005-02-08 2009-12-01 Broadcom Corporation Method and system for hardware accelerator for implementing f8 confidentiality algorithm in WCDMA compliant handsets
US7869590B2 (en) * 2005-04-12 2011-01-11 Broadcom Corporation Method and system for hardware accelerator for implementing f9 integrity algorithm in WCDMA compliant handsets
WO2007003230A1 (en) * 2005-06-30 2007-01-11 Freescale Semiconductor, Inc Encryption apparatus and method therefor
US8553876B1 (en) * 2007-10-23 2013-10-08 Oracle America, Inc. High performance cryptography on chip multithreading processors
CN100581101C (zh) * 2007-11-19 2010-01-13 西安西电捷通无线网络通信有限公司 一种基于分组密码算法的加密处理设备
GB0724438D0 (en) * 2007-12-14 2008-01-30 Icera Inc Kasumi algorithm implementation
EP2237245B1 (en) * 2008-01-18 2017-07-19 Fujitsu Limited Processor of data conversion function
JP5182295B2 (ja) * 2008-01-18 2013-04-17 富士通株式会社 暗号化装置及び暗号処理方法
CN101237321B (zh) * 2008-02-03 2010-12-08 西北农林科技大学 基于循环队列移位规则的加密方法
JP5338327B2 (ja) * 2009-01-16 2013-11-13 富士通株式会社 暗号処理装置
JP5387295B2 (ja) * 2009-09-29 2014-01-15 富士通株式会社 暗号装置及び方法
US20110091035A1 (en) * 2009-10-20 2011-04-21 Sun Microsystems, Inc. Hardware kasumi cypher with hybrid software interface

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916651A (en) * 1988-01-29 1990-04-10 Texas Instruments Incorporated Floating point processor architecture
JPH02224516A (ja) * 1989-02-27 1990-09-06 Nec Corp 適応信号処理回路
US5381480A (en) * 1993-09-20 1995-01-10 International Business Machines Corporation System for translating encrypted data
JPH08179690A (ja) * 1994-12-22 1996-07-12 Nec Corp プロダクト暗号装置
JPH11242433A (ja) * 1995-09-05 1999-09-07 Mitsubishi Electric Corp デ―タ変換装置及びデ―タ変換方法
JP3088337B2 (ja) * 1997-05-30 2000-09-18 三菱電機株式会社 暗号処理装置、icカード及び暗号処理方法
KR100389902B1 (ko) * 1997-06-23 2003-09-22 삼성전자주식회사 차분해독법과선형해독법에대하여안전성을보장하는고속블럭암호화방법
JP3992888B2 (ja) * 1999-09-09 2007-10-17 三菱電機株式会社 暗号処理装置

Also Published As

Publication number Publication date
JP2005517967A (ja) 2005-06-16
JP2008148352A (ja) 2008-06-26
CN1321506C (zh) 2007-06-13
AU2002259318A1 (en) 2002-12-09
WO2002098052A3 (en) 2003-02-06
US20020186841A1 (en) 2002-12-12
KR100895224B1 (ko) 2009-05-04
JP2008158542A (ja) 2008-07-10
JP2008158541A (ja) 2008-07-10
US7212631B2 (en) 2007-05-01
HK1066357A1 (en) 2005-03-18
CN1528066A (zh) 2004-09-08
WO2002098052A2 (en) 2002-12-05

Similar Documents

Publication Publication Date Title
KR100895224B1 (ko) Kasumi 암호화를 수행하는 장치 및 방법
EP1271839B1 (en) AES Encryption circuit
Rezvani et al. Hardware implementations of NIST lightweight cryptographic candidates: A first look
US20020066014A1 (en) Message digest hardware accelerator
JP2005527853A (ja) 高度暗号化規格(aes)のハードウェア暗号法エンジン
US7860240B2 (en) Native composite-field AES encryption/decryption accelerator circuit
US7796752B2 (en) Cipher implementation
JP2007535001A (ja) 霞暗号処理を実行する装置及び方法
US20040071289A1 (en) Stream cipher cryptographic system and method
US7869590B2 (en) Method and system for hardware accelerator for implementing f9 integrity algorithm in WCDMA compliant handsets
US7627113B2 (en) Method and system for hardware accelerator for implementing f8 confidentiality algorithm in WCDMA compliant handsets
US7760874B2 (en) Method and system for implementing FI function in KASUMI algorithm for accelerating cryptography in GSM/GPRS/EDGE compliant handsets
US7623658B2 (en) Method and system for implementing the A5/3 encryption algorithm for GSM and EDGE compliant handsets
KR20030051111A (ko) AES Rijndael(라인달) 암호 알고리듬의 하드웨어 구현을위한 라운드 처리부 회로 및 온라인 라운드 키 생성 회로
US7688972B2 (en) Method and system for implementing FO function in KASUMI algorithm for accelerating cryptography in GSM (global system for mobile communication)GPRS (general packet radio service)edge(enhanced data rate for GSM evolution) compliant handsets
Pyrgas et al. A very compact architecture of CLEFIA block cipher for secure IoT systems
US20060013387A1 (en) Method and system for implementing KASUMI algorithm for accelerating cryptography in GSM/GPRS/EDGE compliant handsets
US7627115B2 (en) Method and system for implementing the GEA3 encryption algorithm for GPRS compliant handsets
US8111825B2 (en) Encryption apparatus and method therefor
Wu et al. Area-Efficient Architectures of KASUMI Block Cipher
CN118157843A (zh) 就地执行认证解密优化的aes-gcm引擎
US7443981B1 (en) Execution unit for performing the data encryption standard
Kim et al. Application of ESA in the CAVE Mode Authentication
Balderas-Contreras et al. An Efficient FPGA Architecture for Block Ciphering in Third Generation Cellular Network
KR20050019086A (ko) 진보된 암호화 표준(aes)의 하드웨어 암호 엔진

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: 20120329

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130329

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 11