KR100967880B1 - M6 블록암호시스템 - Google Patents

M6 블록암호시스템 Download PDF

Info

Publication number
KR100967880B1
KR100967880B1 KR1020040097944A KR20040097944A KR100967880B1 KR 100967880 B1 KR100967880 B1 KR 100967880B1 KR 1020040097944 A KR1020040097944 A KR 1020040097944A KR 20040097944 A KR20040097944 A KR 20040097944A KR 100967880 B1 KR100967880 B1 KR 100967880B1
Authority
KR
South Korea
Prior art keywords
round
signal
constant
cyclic
constants
Prior art date
Application number
KR1020040097944A
Other languages
English (en)
Other versions
KR20060058912A (ko
Inventor
최홍묵
노미정
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020040097944A priority Critical patent/KR100967880B1/ko
Priority to US11/258,059 priority patent/US7613296B2/en
Priority to DE102005056815A priority patent/DE102005056815B4/de
Priority to FR0511957A priority patent/FR2880704A1/fr
Publication of KR20060058912A publication Critical patent/KR20060058912A/ko
Application granted granted Critical
Publication of KR100967880B1 publication Critical patent/KR100967880B1/ko

Links

Images

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
    • 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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

하나의 코아를 이용하여 컨텐츠의 암호화 및 디바이스의 인증과정 모두에 사용할 수 있는 M6 블록암호시스템을 개시한다. 상기 M6 블록암호시스템은, 하나의 클록 사이클에 하나의 라운드를 수행하도록 할 수 있으며, 하나의 라운드를 복수 개의 서브 라운드로 구분하여 복수 개의 클록 사이클을 수행함으로써 하나의 라운드를 수행하도록 할 수도 있다. 상기 M6 블록암호시스템은, 순환상수선택장치, 순환상수 순서결정장치, 순환상수 예정표 및 M6 코아를 구비한다.
블록암호시스템, 순환상수, 코아, 컨텐츠, 암호시스템, 암호화, 디바이스 인증

Description

M6 블록암호시스템{M6 Block Cipher system}
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 M6 블록암호시스템(100)의 블록 다이어그램이다.
도 2는 도 1에 도시된 M6 코아(140)의 내부 블록 다이어그램이다.
도 3은 도 2에 도시된 Pi 함수(240)의 내부 블록 다이어그램이다.
도 4는 본 발명의 다른 일 실시 예에 따른 M6 블록암호시스템(400)의 블록 다이어그램이다.
도 5는 도 4에 도시된 M6 코아(440)의 내부 블록 다이어그램이다.
도 6은 도 5에 도시된 Pi 함수(540)의 일 실시 예를 나타내는 내부 블록 다이어그램이다.
도 7은 도 5에 도시된 Pi 함수(540)의 다른 일 실시 예를 나타내는 내부 블록 다이어그램이다.
도 8은 서브 라운드를 사용하지 않는 경우의 M6 블록암호시스템의 상태 다이어그램(state diagram)이다.
도 9는 복수 개의 서브라운드를 사용하는 M6 블록암호시스템의 상태 다이어 그램이다.
도 10은 서브 라운드를 사용하지 않는 M6 블록암호시스템의 동작을 설명하는 타이밍 다이어그램이다.
도 11은 복수 개의 서브 라운드를 사용하는 M6 블록암호시스템의 동작을 설명하는 타이밍 다이어그램이다.
본 발명은 암호시스템에 관한 것으로서, 특히, 고성능 디지털 버스를 이용하여 데이터를 전송할 때 불법복제를 방지하지 위한 M6 블록암호시스템에 관한 것이다.
각종 오디오/비디오 데이터(이하 컨텐츠, content)를 데이터 버스를 이용하여 전송할 때, 불법 복제, 가로채기 및 각종 탬퍼링(tampering)이 가능하다. 이러한 현상은 사용자가 IEEE 1394 표준에서 정한 고성능의 버스(bus)를 이용할 때에도 마찬가지이다. 히다치(Hitachi), 인텔(Intel), 마츠시다(Matsushita), 소니(Sony) 및 도시바(Toshiba)사가 공동으로 발표한 DTCP(Digital Transmission Content Protection) 사양(specification) V1.3은, 상술한 외부의 침입으로부터 컨텐츠를 보호하기 위한 암호화 기반의 프로토콜(protocol)을 정의하고 있다.
상기 프로토콜에서 송수신 디바이스들 사이의 인증과정에서 사용되는 난수(random number) 발생과 교환키의 생성 및 컨텐츠 암호화에 기본적으로 M6 블록 암 호 알고리즘(algorithm)을 사용한다.
M6 알고리즘은 블록 싸이퍼(block cipher) 알고리즘으로, M6-S56 및 M6-KE56이 있다. M6_S56은 컨텐츠의 암호화에 관계된 블록 암호 알고리즘이고, M6-KE56는 디바이스의 인증에 관계된 블록 암호 알고리즘이다. M6 알고리즘이 지원하는 블록의 길이는 64비트(bit)이고, 각 블록에 대한 키(key)의 길이는 56비트이며, 총 10개의 라운드(round)로 이루어져있다.
미국에 특허등록 된 "Cipher core in a content protection system(US 6,324,288)"에서는, DTCP에 사용되는 M6 알고리즘 중에서 M6-S56 C-CBC 모드의 싸이퍼 코아(cipher core)의 하드웨어 구현에 대하여 제안하고 있다. 상기 발명에서는 M6-S56에 대한 내용만을 다루고 있으며, 인증과정에서의 난수 발생 및 교환키의 생성에 사용되는 M6-KE56에 대한 내용은 다루고 있지 않다. 또한 M6-S56 구현에 대한 내용에서도 라운드 함수인 Pi함수의 구현에 대하여는 언급을 하지 않았을 뿐만 아니라 이에 대한 어떠한 암시도 없다. 현재까지의 일반적인 M6 알고리즘 시스템은, 컨텐츠 암호화 시에 사용하는 코아(core) 및 디바이스의 인증 시 사용하는 코아를 따로 두었다.
본 발명이 이루고자 하는 기술적 과제는, 컨텐츠 암호화 및 디바이스 인증에 하나의 코아를 사용하며, 하나의 라운드를 하나의 클록 사이클에 처리하는 M6 블록암호시스템을 제공하는데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는, 컨텐츠 암호화 및 디바이스 인증에 하나의 코아를 사용하며, 하나의 라운드를 복수 개의 서브 라운드로 구분하여 복수 개의 클록 사이클에 처리하는 M6 블록암호시스템을 제공하는데 있다.
상기 기술적 과제를 달성하기 위한 본 발명에 따른 M6 블록암호시스템은, 컨텐츠를 송수신하는 디바이스들에 대한 인증과 컨텐츠 암호화를 위하여 복수 개의 연산 라운드를 수행하며, 이를 위하여 순환상수선택장치, 순환상수 순서결정장치, 순환상수 예정표 및 M6 코아를 구비한다.
상기 순환상수선택장치(Rotate Constant Selector)는, 컨텐츠 암호화를 수행할 것인가 혹은 디바이스 인증과 관련된 난수발생 및 교환키를 생성할 것인가를 결정하는 SKE 선택신호에 응답하여, 수신 된 복수 개의 순환상수들 중에서 일부의 순환상수들을 선택하여 출력한다.
상기 순환상수 순서결정장치(Rotate Constant Order Decision Device)는, 상기 순환상수 선택신호에 응답하여, 상기 순환상수 선택장치에서 선택된 상기 일부의 순환상수들 및 컨텐츠의 암호화와 디바이스의 인증 모두에 공통으로 사용되는 공통 순환상수를 수신하고, 이들의 순서를 결정하여 출력한다.
상기 순환상수 예정표(Rotate Constant Scheduler)는, 상기 SKE 선택신호 및 라운드 넘버에 응답하여 연산 라운드에서 사용할 순환상수들의 순서를 결정하게 하는 상기 순환상수 선택신호를 출력한다.
상기 M6 코아(Core)는, 상기 순환상수 순서결정장치로부터 출력되는 순환상수, 각 라운드에서 수행되는 연산에 사용될 2개의 라운드 연산키를 생성하기 위해 사용되는 키 및 암호화 단계인지 또는 복호화 단계인지를 지시하는 모드 선택신호 및 동작개시신호에 응답하여, 수신된 입력신호를 암호화하거나 복호화하여 출력하고, 현재 진행되는 연산 라운드(Operation Round)에 대한 정보를 가진 상기 라운드 넘버를 출력한다.
상기 다른 기술적 과제를 달성하기 위한 본 발명에 따른 M6 블록암호시스템은, 컨텐츠를 송수신하는 디바이스(Devices)들에 대한 인증과 컨텐츠 암호화를 위하여 복수 개의 연산 라운드를 수행하며, 상기 복수 개의 연산 라운드는 복수 개의 서브 연산 라운드를 각각 포함하며, 이를 위하여 순환상수선택장치, 순환상수 순서결정장치, 순환상수 예정표 및 M6 코아(Core)를 구비한다.
상기 순환상수선택장치(Rotate Constant Selector)는, 컨텐츠 암호화를 수행할 것인가 혹은 디바이스 인증과 관련된 난수발생 및 교환키를 생성할 것인가를 결정하는 SKE 선택신호에 응답하여, 수신 된 복수 개의 순환상수들 중에서 하나의 순환상수를 선택하여 출력한다.
상기 순환상수 순서결정장치(Rotate Constant Order Decision Device)는 순환상수 선택신호에 응답하여, 상기 순환상수 선택장치에서 선택된 상기 일부의 순환상수들, 컨텐츠의 암호화와 디바이스의 인증 모두에 공통으로 사용되는 공통 순환상수 및 순환되지 않을 경우에 사용하는 비 순환상수를 수신하고, 이들의 순서를 결정하여 차례로 출력(RC)한다.
상기 순환상수 예정표(Rotate Constant Scheduler)는, 상기 SKE 선택신호, 라운드 넘버 및 서브 라운드 넘버에 응답하여 연산 라운드에서 사용할 순환상수들 의 순서를 결정하게 하는 상기 순환상수 선택신호를 출력한다.
상기 M6 코아(Core)는, 상기 순환상수 순서결정장치로부터 차례로 출력되는 순환상수, 각 라운드에서 수행되는 연산에 사용될 2개의 라운드 연산키를 생성하기 위해 사용되는 키 및 암호화 단계인지 또는 복호화 단계인지를 지시하는 모드 선택신호 및 동작개시신호에 응답하여, 수신된 입력신호를 암호화하거나 복호화하여 출력하고, 현재 진행되는 연산 라운드(Operation Round)에 대한 정보를 가진 상기 라운드 넘버 및 상기 각 라운드의 서브 라운드에 대한 정보를 가진 서브 라운드 넘버를 출력한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시 예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시 예에 따른 M6 블록암호시스템(100)의 블록 다이어그램이다.
도 1을 참조하면, M6 블록암호시스템(100)은, 순환상수 선택장치(110), 순환상수 순서결정장치(120), 순환상수 예정표(130) 및 M6 코아(140)를 구비한다.
순환상수 선택장치(110, Rotate Constant Selector)는, SKE 선택신호(SKE_SEL)에 응답하여, 수신 된 복수 개의 순환상수들(S56_S2, S56_S3, KE56_S2 및 KE56_S3) 중에서 일부의 순환상수들을 선택하여 출력(S2 및 S3)한다. 여기서, SKE 선택신호(SKE_SEL)는 컨텐츠 암호화를 수행할 것인가(M6_S56) 혹은 디바이스 인증과 관련된 난수발생 및 교환키를 생성할 것인가(M6_KE56)를 결정하는 신호이다. 상기 복수 개의 순환상수들(S56_S2, S56_S3, KE56_S2 및 KE56_S3) 중에서 2개의 순환상수(S56_S2 및 S56_S3)들은 컨텐츠 암호화를 수행할 때 사용될 순환상수들이고, 2개의 순환상수(KE56_S2 및 KE56_S3)들은 디바이스 인증과 관련된 난수발생 및 교환키를 생성할 때 사용될 순환상수들이다.
순환상수 순서결정장치(120, Rotate Constant Order Decision Device)는, 순환상수 선택장치(110)로부터 출력된 순환상수들(S2 및 S3) 및 공통 순환상수(S1)를 수신하고, 순환상수 선택신호(RC_SEL)에 응답하여, 이들의 순서를 결정하여 출력(RC1 내지 RC3)한다. 여기서, 공통 순환상수(S1)는 컨텐츠의 암호화와 디바이스의 인증 모두에 공통으로 사용되는 순환상수이다.
순환상수 예정표(130, Rotate Constant Scheduler)는, SKE 선택신호(SKE_SEL) 및 라운드 넘버(R_NUM)에 응답하여 연산 라운드에서 사용할 순환상수들의 순서를 결정하게 하는 순환상수 선택신호(RC_SEL)를 출력한다. 여기서 라운드 넘버(R_NUM)는 현재 진행되는 연산 라운드(Operation Round)에 대한 정보를 포함하고 있는 신호이다.
M6 코아(140, core)는, 복수 개의 순환상수(RC1 내지 RC3), 키(KEY) 및 모드 선택신호(MODE_SEL)에 응답하여, 수신된 입력신호(TEXT_IN)를 암호화하거나 복호화하여 출력(TEXT_OUT)하고, 현재 진행되는 연산 라운드(Operation Round)에 대한 정 보를 가진 상기 라운드 넘버(R_NUM) 및 암호화 및 복호화과정이 종료되었음을 지시하고 암/복호화 결과 값이 유효함을 나타내는 유효신호(Valid)를 출력한다. 여기서 키(KEY)는, M6 코아(130)에 내부에서 수행되는 각 연산 라운드에서 수행되는 연산에 사용될 2개의 라운드 연산키를 생성하기 위해 사용되는 신호이다. 모드 선택신호(MODE_SEL)는 암호화 단계인지 또는 복호화 단계인지를 지시하는 신호이다. 입력신호(TEXT_IN)는, 모드 선택신호(MODE_SEL)가 암호화를 지시할 때에는 평문(Plain-text)이고, 복호화를 지시할 때에는 암호문(Cipher-text)이 된다.
M6 코아(140)는, M6 코아의 동작 개시를 지시하는 동작개시신호(START_M6)를 더 수신하여 동작할 수 있다.
도 1에 도시된 본 발명의 일 실시 예에 따른 M6 블록암호시스템은, SKE 선택신호(SKE_SEL)의 값을 조절함으로써, 컨텐츠 암호화(M6_S56)를 수행하는데 사용할 뿐만 아니라 디바이스 인증(M6_KE56)과 관련된 난수발생 및 교환키를 생성하는데도 사용할 수 있다. 종래의 기술이 2개의 코아를 사용하는 데 반해 본 발명은 하나의 M6 코아(140)를 2개의 연산에 공통으로 사용할 수 있도록 한 것에 새로운 기술적 사상이 포함된다.
상기 M6 블록 암호시스템은 하나의 클록 사이클에 하나의 라운드가 수행되며, 모두 10개의 라운드로 구성된다.
도 2는 도 1에 도시된 M6 코아(140)의 내부 블록 다이어그램이다.
도 2를 참조하면, M6 코아(140)는, 제1멀티플렉서(210), M6 코아 제어장치(220), 라운드 키 생성장치(230) 및 Pi 함수(240)를 구비한다.
제1멀티플렉서(210)는, 제1제어신호(C1)에 응답하여, 입력신호(TEXT_IN) 및 라운드 출력신호(ROUND_OUT) 중에서 어느 하나를 선택하여 출력한다.
M6 코아 제어장치(220)는, 라운드 넘버(R_NUM) 및 동작개시신호(START_M6)에 응답하여, 연산개시신호(START_OP), 제1제어신호(C1), 유효신호(Valid)를 출력한다. 여기서 연산개시신호(START_OP)는 라운드 연산의 수행을 지시하는 신호이다. 제1제어신호(C1)는 연산의 제1라운드인 경우에는 입력신호(TEXT_IN)를 선택하게 하고 그 외의 라운드인 경우에는 라운드 출력신호(ROUND_OUT)를 선택할 것을 지시하는 신호이다. 유효신호(Valid)는 암호화 및 복호화과정이 종료되었음을 지시하고 암/복호화 결과 값이 유효함을 나타내는 신호이다. M6 코아 제어장치(220)는, M6 코아의 동작 개시를 지시하는 동작개시신호(START_M6)를 더 수신하며, 연산개시신호(START_OP)를 더 출력한다.
라운드 키 생성장치(230)는, 키(KEY) 신호에 응답하여 2개의 라운드 연산키(Key1 및 Key2)를 생성한다.
Pi 함수(240)는, 연산개시신호(START_OP), 복수 개의 순환상수(RC1 내지 RC3), 2개의 라운드 연산키(Key1 및 Key2) 및 모드 선택신호(MODE_SEL)에 응답하여, 제1멀티플렉서(210)의 출력신호에 대한 라운드 연산을 수행한 결과인 라운드 출력신호(ROUND_OUT) 및 라운드 넘버(R_NUM)를 출력한다. 여기서 라운드 출력신호(ROUND_OUT)가 마지막 라운드의 출력일 경우에는 M6 코아(140)의 최종 출력신호(TEXT_OUT)가 된다.
도 3은 도 2에 도시된 Pi 함수(240)의 내부 블록 다이어그램이다.
도 3을 참조하면, Pi 함수(240)는, 제1기본연산장치(301) 내지 제4기본연산장치(307) 및 제1순환함수(302) 내지 제3순환함수(306)를 구비한다.
제1멀티플렉서(210)의 출력신호는 64비트이며, Pi 함수(240)에서는 상기 64비트의 출력신호를 연속된 2개의 데이터 제1데이터 스트림(L, 32비트) 및 제2데이터 스트림(R, 32비트)으로 구분하여 사용한다.
제1기본연산장치(301)는, 제1연산 라운드 키(Key1) 및 상기 제1데이터 스트림(L)을 이용하여 기본연산을 수행한다. 제1순환함수(302)는, 제1기본연산장치(301)의 출력신호를 제1순환상수(RC1)의 값만큼 순환시킨다. 제2기본연산장치(303)는, 제1순환함수(302)의 출력신호, 제1기본연산장치(301)의 출력신호 및 상수(constant) "1"을 이용하여 기본연산을 수행한다. 제2순환함수(304)는, 제2기본연산장치(303)의 출력신호를 제2순환상수(RC2)의 값만큼 순환시킨다. 제3기본연산장치(305)는, 제2기본연산장치(303)의 출력신호, 제2순환함수(304)의 출력신호 및 제2연산 라운드 키(Key2)를 이용하여 기본연산을 수행한다. 제3순환함수(306)는, 제3기본연산장치(305)의 출력신호를 제3순환상수(RC3)의 값만큼 순환시킨다. 제4기본연산장치(307)는, 모드 선택신호(MODE_SEL), 제3기본연산장치(305)의 출력신호, 제3순환함수(306)의 출력신호 및 제2데이터 스트림(R)을 이용하여 기본연산을 수행하며, 동시에 현재 진행중인 연산 라운드에 대한 정보를 가지고 있는 라운드 넘버(R_NUM)를 출력한다.
상기 기본연산은, 기본연산장치들(301, 303, 305 및 307)의 위치에 따라, 가산(Add operation), 감산(Subtraction operation) 및 XOR(Exclusive OR operation) 의 연산 중에서 선택하여 그에 해당하는 연산을 수행한다.
도 4는 본 발명의 다른 일 실시 예에 따른 M6 블록암호시스템(400)의 블록 다이어그램이다.
도 4를 참조하면, M6 블록암호시스템(400)은, 컨텐츠를 송수신하는 디바이스(Devices)들에 대한 인증과 컨텐츠 암호화를 위하여 복수 개의 연산 라운드를 수행하며, 상기 복수 개의 연산 라운드는 복수 개의 서브 연산 라운드를 각각 포함하며, 이를 위하여, 순환상수선택장치(410), 순환상수 순서결정장치(420), 순환상수 예정표(420) 및 M6 코아(420)를 구비한다.
순환상수선택장치(410, Rotate Constant Selector)는, SKE 선택신호(SKE_SEL)에 응답하여, 수신 된 복수 개의 순환상수들(S56_S2, S56_S3, KE56_S2 및 KE56_S3) 중에서 일부의 순환상수들을 선택하여 출력(S2 및 S3)한다. 여기서, SKE 선택신호(SKE_SEL)는 컨텐츠 암호화를 수행할 것인가(M6_S56) 혹은 디바이스 인증과 관련된 난수발생 및 교환키를 생성할 것인가(M6_KE56)를 결정하는 신호이다. 상기 복수 개의 순환상수들(S56_S2, S56_S3, KE56_S2 및 KE56_S3) 중에서 2개의 순환상수(S56_S2 및 S56_S3)들은 컨텐츠 암호화를 수행할 때 사용될 순환상수들이고, 2개의 순환상수(KE56_S2 및 KE56_S3)들은 디바이스 인증과 관련된 난수발생 및 교환키를 생성할 때 사용될 순환상수들이다.
순환상수 순서결정장치(420, Rotate Constant Order Decision Device)는, 순환상수들(S2 및 S3), 공통 순환상수(S1) 및 비 순환상수(S0)를 수신하고, 순환상수 선택신호(RC_SEL)에 응답하여, 이들의 순서를 결정하여 차례로 출력(RC)한다. 여기 서, 공통 순환상수(S1)는 컨텐츠의 암호화와 디바이스의 인증 모두에 공통으로 사용되는 상수이다. 비 순환상수(S0)는 순환되지 않을 경우에 사용하는 상수이다.
순환상수 예정표(430, Rotate Constant Scheduler)는, SKE 선택신호(SKE_SEL), 라운드 넘버(R_NUM) 및 서브 라운드 넘버(S_R_NUM)에 응답하여 연산 라운드에서 사용할 순환상수들의 순서를 결정하게 하는 상기 순환상수 선택신호(RC_SEL)를 출력한다. 라운드 넘버(R_NUM)는 현재 진행되는 연산 라운드(Operation Round)에 대한 정보를 가지며, 서브 라운드 넘버(S_R_NUM)는 상기 각 라운드에서 현재 진행되는 서브 연산 라운드에 대한 정보를 가진다.
M6 코아(440, Core)는, 순환상수(RC), 키(KEY) 및 모드 선택신호(MODE_SEL) 에 응답하여, 수신된 입력신호(TEXT_IN)를 암호화하거나 복호화하여 출력(TEXT_OUT)하고, 현재 진행되는 연산 라운드(Operation Round)에 대한 정보를 가진 상기 라운드 넘버(R_NUM), 상기 각 라운드의 서브 라운드에 대한 정보를 가진 서브 라운드 넘버(S_R_NUM) 및 암호화 및 복호화 과정이 종료되었음을 지시하고 암/복호화 결과 값이 유효함을 나타내는 유효신호(VALID)를 출력한다. 여기서 키(KEY)는 각 라운드에서 수행되는 연산에 사용될 2개의 라운드 연산키를 생성하기 위해 사용되는 신호이다. 모드 선택신호(MODE_SEL)는 암호화 단계인지 또는 복호화 단계인지를 지시하는 신호이다.
입력신호(TEXT_IN)는, 모드 선택신호(MODE_SEL)가 암호화를 지시할 때에는 평문(Plain-text)이고, 복호화를 지시할 때에는 암호문(Cipher-text)이 된다.
M6 코아(440)는, M6 코아의 동작 개시를 지시하는 동작개시신호(START_M6)를 더 수신하여 동작할 수 있다.
도 4에 도시된 본 발명의 다른 일 실시 예에 따른 M6 블록암호시스템은, 복수 개의 클록 사이클에 하나의 라운드가 수행되며, 모두 10개의 라운드로 구성된다. 여기서 하나의 라운드를 수행함에 있어서 복수 개의 클록 사이클이 필요한 이유는 , 상기 라운드를 복수 개의 서브 라운드로 나누었고, 각 서브 라운드가 하나의 클록 사이클에 동작하기 때문이다.
도 5는 도 4에 도시된 M6 코아(440)의 내부 블록 다이어그램이다.
도 5를 참조하면, M6 코아(440)는, 제1멀티플렉서(510), M6 코아 제어장치(520), 라운드 키 생성장치(530) 및 Pi 함수(540)를 구비한다.
제1멀티플렉서(510)는, 제1제어신호(C1)에 응답하여, 입력신호(TEXT_IN) 및 라운드 출력신호(ROUND_OUT) 중에서 어느 하나를 선택하여 출력한다.
M6 코아 제어장치(520)는, 라운드 넘버(R_NUM), 서브 라운드 넘버(S_R_NUM) 및 동작 개시신호(START_M6)에 응답하여, 연산개시신호(START_OP), 제1제어신호(C1) 및 유효신호(Valid)를 출력한다. 여기서 연산개시신호(START_OP)는 라운드 연산의 수행을 지시하는 신호이다. 제1제어신호(C1)는 연산의 제1라운드인 경우에는 상기 입력신호(TEXT_IN)를 선택하게 하고 그 외의 라운드인 경우에는 상기 라운드 출력신호(ROUND_OUT)를 선택할 것을 지시하는 신호이다. 유효신호(Valid)는 암호화 및 복호화 과정이 종료되었음을 지시하고 암/복호화 결과 값이 유효함을 나타내는 신호이다. M6 코아 제어장치(520)는, M6 코아의 동작 개시를 지시하는 동작개시신호(START_M6)를 더 수신하여 동작할 수 있다.
라운드 키 생성장치(530)는, 키(KEY) 신호에 응답하여 2개의 라운드 연산키(Key1 및 Key2)를 생성한다.
Pi 함수(540)는, 연산개시신호(STRAT_OP), 순환상수(RC), 2개의 라운드 연산키(Key1 및 Key2) 및 모드 선택신호(MODE_SEL)에 응답하여, 라운드 넘버(R_NUM), 서브 라운드 넘버(S_R_NUM) 및 제1멀티플렉서(440)의 출력신호에 대한 라운드 연산을 수행한 결과인 라운드 출력신호(ROUND_OUT)를 출력한다. 여기서 라운드 출력신호(ROUND_OUT)가 마지막 라운드의 출력일 경우에는 M6 코아(140)의 최종 출력신호(TEXT_OUT)가 된다.
도 6은 도 5에 도시된 Pi 함수(540)의 일 실시 예를 나타내는 내부 블록 다이어그램이다.
도 6을 참조하면, Pi 함수(540)는, 3개의 서브 라운드로 구성되며, 제1기본연산장치(601), 순환함수(602) 및 제2기본연산장치(603)를 구비한다. 여기서, 원(circle) 안의 숫자는 서브 라운드를 표시한다.
제1기본연산장치(601)는, 2개의 라운드 연산키(Key1 및 Key2), 상수 "1" 및 제1데이터 스트림(L)을 이용하여 기본연산을 수행한다. 순환함수(602)는, 제1기본연산장치(601)의 출력신호를 순환상수(RC)의 값만큼 순환시킨다.
제2기본연산장치(603)는, 순환함수(602)의 출력신호, 제1기본연산장치(601)의 출력신호 및 제2데이터 스트림(R)을 이용하여 기본연산을 수행한다. 제1기본연산장치(601)는 모드 선택신호(MODE_SEL) 및 서브 라운드 넘버(S_R_NUM)에 대응하여 동작한다. 제2기본연산장치(603)는, 서브 라운드 넘버(S_R_NUM) 및 라운드 넘버 (R_NUM)를 발생시킨다. 상기 기본연산은, 가산(Add operation), 감산(Subtraction operation) 및 XOR(Exclusive OR operation)의 연산 중에서 선택하여 그에 해당하는 연산을 수행한다.
이하에서 제1기본연산장치(601) 및 제2기본연산장치(603)의 동작 특성을 설명한다.
제1기본연산장치(601)는, 각 라운드의 첫 번째 서브 라운드일 때는 제1연산 라운드 키(Key1) 및 제1데이터 스트림(L)에 대하여 기본연산을 수행하고, 두 번째 서브 라운드부터 마지막 서브 라운드 이전까지는 제2기본연산장치의 출력신호(ROUND_OUT) 및 상수 "1"에 대하여 기본연산을 수행하며, 마지막 서브 라운드일 때는 제2연산 라운드 키(Key2) 및 제2기본연산장치의 출력신호(ROUND_OUT)에 대하여 기본연산을 수행한다.
제2기본연산장치는, 매 라운드의 마지막 서브 라운드 일 경우에만 제2데이터 스트림(R)을 연산에 활용한다.
도 7은 도 5에 도시된 Pi 함수(540)의 다른 일 실시 예를 나타내는 내부 블록 다이어그램이다.
도 7을 참조하면, 상기 M6 블록암호시스템은, 6개의 서브 라운드로 구성되며, 기본연산장치(701) 및 순환함수(702)를 구비한다. 여기서, 원(circle) 안의 숫자는 서브 라운드를 표시한다.
기본연산장치(701) 및 순환함수(702)의 기능은 상술하였으므로, 이하에서는 동작에 대하여 설명한다.
첫 번째 서브라운드 에서는 제1데이터 스트림(L) 및 제1연산 라운드 키(Key1)가 선택되어 기본연산이 이루어지며, 기본연산이 이루어진 데이터 스트림을 해당 순환상수의 값만큼 순환시킨 데이터를 생성시킨다. 생성된 데이터들은 기본연산장치(701)에 다시 입력되며, 이 후에는 도면에 그려진 번호에 따라서 연산이 수행된다. 순환함수(702)는 현재 진행중인 라운드 및 서브 라운드에 대한 정보를 가지는 라운드 넘버(R_NUM) 및 서브 라운드 넘버(S_R_NUM)를 출력한다.
도 8은 서브 라운드를 사용하지 않는 경우의 M6 블록암호시스템의 상태 다이어그램(state diagram)이다.
도 8을 참조하면, 서브 라운드를 사용하지 않는 M6 블록암호시스템은, 1개의 라운드를 하나의 클럭 사이클에 처리하기 때문에, 준비상태(IDLE)와 동작상태(RUN)의 2가지 상태를 가진다. 평상시(R_NUM=10)에는 준비상태(IDLE)에 있다가, 동작개시신호(START_M6)가 인에이블("1")되면, 동작상태(RUN)에 들어가게 된다. 라운드 넘버(R_NUM)의 숫자가 10이 넘지 않으면 계속하여 동작상태(RUN)를 유지하고, 10인 경우에는 다시 준비상태(IDLE)로 환원한다.
도 9는 복수 개의 서브라운드를 사용하는 M6 블록암호시스템의 상태 다이어그램이다.
도 9를 참조하면, 복수 개의 서브라운드를 사용하는 M6 블록암호시스템, 1개의 서브 라운드를 하나의 클록 사이클에 처리하기 때문에, 준비상태(RUN)는 하나이지만 동작상태(IDLE)는 복수 개의 서브동작상태(S_R1 S_R2 …)를 구비하게 된다. 즉, 복수 개의 서브동작상태가 모두 완료되어야(S_R Final) 하나의 라운드가 끝나 게 된다는 점에서 하나의 준비상태(RUN)에 의하여 하나의 라운드가 종료되는 도 8과 구별된다.
도 10은 서브 라운드를 사용하지 않는 M6 블록암호시스템의 동작을 설명하는 타이밍 다이어그램이다.
도 10은 참조하면, 준비상태(IDLE)에 있던 M6 블록암호시스템은 동작개시신호(START_M6)에 의하여 동작이 시작되며 데이터가 로드(load)됨과 동시에 동작상태(RUN)로 들어간다. 동작상태(RUN)는 총 10개의 라운드로 이루어지며 하나의 클럭(clock) 사이클에 하나의 라운드(round)가 수행되며, 마지막 라운드가 모두 수행되면 유효신호(Valid)와 동시에 처리된 신호(TEXT_OUT)가 출력된다.
도 11은 복수 개의 서브 라운드를 사용하는 M6 블록암호시스템의 동작을 설명하는 타이밍 다이어그램이다.
도 11을 참조하면, 상기 M6 블록암호시스템은, 하나의 라운드(round)에 복수 개의 서브 라운드(sub-round1 내지 final-sub-round)를 구비하는 것 외에는 도 10에 도시한 타이밍 다이어그램과 동일함을 알 수 있다.
서브 라운드를 사용하는 경우와 사용하지 않는 경우는 서로 장단점이 있기 때문에 이들이 사용되는 시스템의 특성에 따라 선택하면 효과적으로 본 발명을 사용할 수 있다. 서브 라운드를 사용하지 않는 M6 블록암호시스템은 짧은 클럭 사이클에 작업을 완수할 수 있는 장점이 있지만, 서브 라운드를 사용하는 M6 블록암호시스템은 하드웨어의 크기를 상당히 감소시킬 수 있는 장점이 있다. 따라서, 처리 속도가 중요한 경우 및 하드웨어의 크기가 중요한 경우 등과 같이 필요에 따라서 적절하게 선택하여 사용할 수 있다.
상기의 설명에서는 서브 라운드가 3개 및 6개의 경우에 대하여 설명하였지만, 4개의 경우도 상당히 효과적임을 실험을 통하여 발견하였다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 M6 블록암호시스템은, 컨텐츠의 암호화 및 디바이스의 인증에 관한 작업을 하나의 코아를 이용하여 모두 구현할 수 있게 하는 장점이 있으며, 특히 1개의 라운드를 복수 개의 서브 라운드로 분할하여 동작을 할 수 있도록 하여 시스템의 크기를 더욱 더 감소시키는 장점이 있다.

Claims (20)

  1. 컨텐츠를 송수신하는 디바이스(Devices)들에 대한 인증과 컨텐츠 암호화를 위하여 복수 개의 연산 라운드를 수행하는 M6 블록암호시스템에 있어서,
    컨텐츠 암호화를 수행할 것인가(M6_S56) 혹은 디바이스 인증과 관련된 난수 발생 및 교환키를 생성할 것인가(M6_KE56)를 결정하는 SKE 선택신호(SKE_SEL)에 응답하여, 수신 된 복수 개의 순환상수들(S56_S2, S56_S3, KE56_S2 및 KE56_S3) 중에서 일부의 순환상수들을 선택하여 출력(S2 및 S3)하는 순환상수선택장치(Rotate Constant Selector);
    순환상수 선택신호(RC_SEL)에 응답하여, 상기 순환상수 선택장치에서 선택된 상기 일부의 순환상수들(S2 및 S3) 및 컨텐츠의 암호화와 디바이스의 인증 모두에 공통으로 사용되는 공통 순환상수(S1)를 수신하고, 이들의 순서를 결정하여 출력(RC1 내지 RC3)하는 순환상수 순서결정장치(Rotate Constant Order Decision Device);
    상기 SKE 선택신호(SKE_SEL) 및 라운드 넘버(R_NUM)에 응답하여 연산 라운드에서 사용할 순환상수들의 순서를 결정하게 하는 상기 순환상수 선택신호(RC_SEL)를 출력하는 순환상수 예정표(Rotate Constant Scheduler); 및
    상기 순환상수 순서결정장치로부터 출력되는 순환상수(RC1 내지 RC3), 각 라운드에서 수행되는 연산에 사용될 2개의 라운드 연산키를 생성하기 위한 키(KEY) 및 암호화 단계인지 또는 복호화 단계인지를 지시하는 모드 선택신호(MODE_SEL)에 응답하여, 수신된 입력신호(TEXT_IN)를 암호화하거나 복호화하여 출력(TEXT_OUT)하고, 현재 진행되는 연산 라운드(Operation Round)에 대한 정보를 가진 상기 라운드 넘버(R_NUM) 및 암호화 및 복호화 과정이 종료되었음을 지시하고 암/복호화 결과 값이 유효함을 나타내는 유효신호(VALID)를 더 출력하는 M6 코아(Core)를 구비하는 것을 특징으로 하는 M6 블록암호시스템.
  2. 제1항에 있어서, 상기 순환상수선택장치에서 수신한 상기 복수 개의 순환상수들(S56_S2, S56_S3, KE56_S2 및 KE56_S3)은,
    컨텐츠 암호화(M6_S56)를 수행할 때 사용될 2개의 순환상수들 및 디바이스 인증(M6_KE56)과 관련된 난수발생 및 교환키를 생성할 때 사용될 2개의 순환상수들인 것을 특징으로 하는 M6 블록암호시스템.
  3. 제1항에 있어서, 상기 입력신호(TEXT_IN)는,
    상기 모드 선택신호(MODE_SEL)가 암호화를 지시할 때에는 평문(Plain-text)이고, 복호화를 지시할 때에는 암호문(Cipher-text)인 것을 특징으로 하는 M6 블록암호시스템.
  4. 제1항에 있어서, 상기 M6 코아는,
    제1제어신호(C1)에 응답하여, 상기 입력신호(TEXT_IN) 및 라운드 출력신호(ROUND_OUT) 중에서 어느 하나를 선택하여 출력하는 제1멀티플렉서;
    라운드 넘버(R_NUM)에 응답하여, 연산의 제1라운드인 경우에는 상기 입력신호(TEXT_IN)를 선택하게 하고 그 외의 라운드인 경우에는 상기 라운드 출력신호(ROUND_OUT)를 선택할 것을 지시하는 상기 제1제어신호(C1) 및 상기 유효신호(Valid)를 출력하는 M6 코아 제어장치;
    상기 키(KEY) 신호에 응답하여 2개의 라운드 연산키(Key1 및 Key2)를 생성하 는 라운드 키 생성장치; 및
    상기 복수 개의 순환상수(RC1 내지 RC3), 상기 2개의 라운드 연산키(Key1 및 Key2) 및 상기 모드 선택신호(MODE_SEL)에 응답하여 상기 제1멀티플렉서의 출력신호에 대한 라운드 연산을 수행하여 상기 라운드 출력신호(ROUND_OUT) 및 상기 라운드 넘버(R_NUM)를 출력하는 Pi 함수를 구비하는 것을 특징으로 하는 M6 블록암호시스템.
  5. 제4항에 있어서, 상기 M6 코아는,
    M6 코아의 동작 개시를 지시하는 동작개시신호(START_M6)를 더 수신하며,
    상기 M6 코아 제어장치는,
    상기 동작개시신호(START_M6)에 응답하여 동작하는 것을 특징으로 하는 M6 블록암호시스템.
  6. 제4항에 있어서, 상기 M6 코아 제어장치는,
    상기 Pi 함수의 연산 수행을 개시할 것을 지시하는 연산개시신호(START_OP)를 더 출력하며,
    상기 Pi 함수는,
    상기 연산개시신호(START_OP)에 응답하여 동작하는 것을 특징으로 하는 M6 블록암호시스템.
  7. 제4항에 있어서, 상기 Pi 함수는,
    상기 제1멀티플렉서의 출력신호를 연속된 2개의 데이터인 제1데이터 스트림(L) 및 제2데이터 스트림(R)으로 구분하였을 때, 상기 2개의 라운드 연산키 중 하나인 제1연산키(Key1) 및 상기 제1데이터 스트림(L)을 이용하여 기본연산을 수행하는 제1기본연산장치;
    상기 제1기본연산장치의 출력신호를 상기 복수 개의 순환상수(RC1 내지 RC3) 중 하나인 제1순환상수(RC1)의 값만큼 순환시켜 출력하는 제1순환함수;
    상기 제1순환함수의 출력신호, 상기 제1기본연산장치의 출력신호 및 연산 중 이용될 상수(constant) "1"을 이용하여 기본연산을 수행하는 제2기본연산장치;
    상기 제2기본연산장치의 출력신호를 상기 복수 개의 순환상수(RC1 내지 RC3) 중 하나인 제2순환상수(RC2)의 값만큼 순환시켜 출력하는 제2순환함수;
    상기 제2기본연산장치의 출력신호, 상기 제2순환함수의 출력신호 및 상기 2개의 라운드 연산키 중 하나인 제2연산키(Key2)를 이용하여 기본연산을 수행하는 제3기본연산장치;
    상기 제3기본연산장치의 출력신호를 상기 복수 개의 순환상수(RC1 내지 RC3) 중 하나인 제3순환상수(RC3)의 값만큼 순환하여 출력하는 제3순환함수;
    상기 모드 선택신호(MODE_SEL), 상기 제3기본연산장치의 출력신호, 상기 제3순환함수의 출력신호 및 상기 제2데이터 스트림(R)을 이용하여 기본연산을 수행하는 제4기본연산장치를 구비하며,
    상기 기본연산은,
    상기 기본연산장치들의 위치에 따라, 가산(Add operation), 감산(Subtraction operation) 및 XOR(Exclusive OR operation)의 연산 중에서 선택하여 그에 해당하는 연산을 수행하는 것을 특징으로 하는 M6 블록암호시스템.
  8. 제7항에 있어서, 상기 제1멀티플렉서의 출력신호는,
    64비트이고,
    제1데이터 스트림(L) 및 제2데이터 스트림(R)은,
    각각 32비트 인 것을 특징으로 하는 M6 블록암호시스템.
  9. 제1항에 있어서, 상기 M6 블록암호시스템은,
    하나의 클록 사이클에 하나의 라운드가 수행되는 것을 특징으로 하는 M6 블록암호시스템.
  10. 컨텐츠를 송수신하는 디바이스(Devices)들에 대한 인증과 컨텐츠 암호화를 위하여 복수 개의 연산 라운드를 수행하며, 상기 복수 개의 연산 라운드는 복수 개의 서브 연산 라운드를 각각 포함하는 M6 블록암호시스템에 있어서,
    컨텐츠 암호화를 수행할 것인가(M6_S56) 혹은 디바이스 인증과 관련된 난수발생 및 교환키를 생성할 것인가(M6_KE56)를 결정하는 SKE 선택신호(SKE_SEL)에 응답하여, 수신 된 복수 개의 순환상수들(S56_S2, S56_S3, KE56_S2 및 KE56_S3) 중에서 일부의 순환상수들을 선택하여 출력(S2 및 S3)하는 순환상수선택장치(Rotate Constant Selector);
    순환상수 선택신호(RC_SEL)에 응답하여, 상기 순환상수 선택장치에서 선택된 상기 일부의 순환상수들(S2 및 S3), 컨텐츠의 암호화와 디바이스의 인증 모두에 공통으로 사용되는 공통 순환상수(S1) 및 순환되지 않을 경우에 사용하는 비 순환상수(S0)를 수신하고, 이들의 순서를 결정하여 차례로 출력(RC)하는 순환상수 순서결정장치(Rotate Constant Order Decision Device);
    상기 SKE 선택신호(SKE_SEL), 라운드 넘버(R_NUM) 및 서브 라운드 넘버(S_R_NUM)에 응답하여 연산 라운드에서 사용할 순환상수들의 순서를 결정하게 하는 상기 순환상수 선택신호(RC_SEL)를 출력하는 순환상수 예정표(Rotate Constant Scheduler); 및
    상기 순환상수 순서결정장치로부터 차례로 출력되는 순환상수(RC), 각 라운드에서 수행되는 연산에 사용될 적어도 2개의 라운드 연산키를 생성하기 위한 키(KEY) 및 암호화 단계인지 또는 복호화 단계인지를 지시하는 모드 선택신호(MODE_SEL)에 응답하여, 수신된 입력신호(TEXT_IN)를 암호화하거나 복호화하여 출력(TEXT_OUT)하고, 현재 진행되는 연산 라운드(Operation Round)에 대한 정보를 가진 상기 라운드 넘버(R_NUM), 상기 각 라운드의 서브 라운드에 대한 정보를 가진 서브 라운드 넘버(S_R_NUM) 및 암호화 및 복호화 과정이 종료되었음을 지시하고 암/복호화 결과 값이 유효함을 나타내는 유효신호(Valid)를 출력하는 M6 코아(Core)를 구비하는 것을 특징으로 하는 M6 블록암호시스템.
  11. 제10항에 있어서, 상기 순환상수선택장치에서 수신한 상기 복수 개의 순환상수들(S56_S2, S56_S3, KE56_S2 및 KE56_S3)은,
    컨텐츠 암호화(M6_S56)를 수행할 때 사용될 2개의 순환상수들 및 디바이스 인증(M6_KE56)과 관련된 난수발생 및 교환키를 생성할 때 사용될 2개의 순환상수들인 것을 특징으로 하는 M6 블록암호시스템.
  12. 제10항에 있어서, 상기 입력신호(TEXT_IN)는,
    상기 모드 선택신호(MODE_SEL)가 암호화를 지시할 때에는 평문(Plain-text)이고, 복호화를 지시할 때에는 암호문(Cipher-text)인 것을 특징으로 하는 M6 블록암호시스템.
  13. 제10항에 있어서, 상기 M6 코아는,
    제1제어신호(C1)에 응답하여, 상기 입력신호(TEXT_IN) 및 라운드 출력신호(ROUND_OUT) 중에서 어느 하나를 선택하여 출력하는 제1멀티플렉서;
    상기 키(KEY) 신호에 응답하여 적어도 2개의 라운드 연산키(Key1 및 Key2)를 생성하는 라운드 키 생성장치;
    라운드 연산의 수행을 지시하는 연산개시신호(START_OP), 연산의 제1라운드인 경우에는 상기 입력신호(TEXT_IN)를 선택하게 하고 그 외의 라운드인 경우에는 상기 라운드 출력신호(ROUND_OUT)를 선택할 것을 지시하는 상기 제1제어신호(C1) 및 상기 유효신호(Valid)를 출력하는 M6 코아 제어장치; 및
    상기 순환상수 순서결정장치로부터 출력되는 순환상수(RC), 상기 2개의 라운드 연산키(Key1 및 Key2) 및 상기 모드 선택신호(MODE_SEL)에 응답하여 상기 제1멀티플렉서의 출력신호에 대한 라운드 연산을 수행하여 상기 라운드 출력신호(ROUND_OUT), 상기 라운드 넘버 및 상기 서브 라운드 넘버를 출력하는 Pi 함수를 구비하는 것을 특징으로 하는 M6 블록암호시스템.
  14. 제13항에 있어서, 상기 M6 코아는,
    M6 코아의 동작 개시를 지시하는 동작개시신호(START_M6)를 더 수신하며,
    상기 M6 코아 제어장치는,
    상기 동작개시신호(START_M6)에 응답하여 동작하는 것을 특징으로 하는 M6 블록암호시스템.
  15. 제13항에 있어서, 상기 M6 코아 제어장치는,
    상기 Pi 함수의 연산 수행을 개시할 것을 지시하는 연산개시신호(START_OP)를 더 출력하며,
    상기 Pi 함수는,
    상기 연산개시신호(START_OP)에 응답하여 동작하는 것을 특징으로 하는 M6 블록암호시스템.
  16. 제13항에 있어서, 상기 Pi 함수는,
    상기 제1멀티플렉서의 출력신호를 연속된 2개의 데이터인 제1데이터 스트림(L) 및 제2데이터 스트림(R)으로 구분하였을 때, 상기 2개의 라운드 연산키(Key1 및 Key2), 상수 "1" 및 상기 제1데이터 스트림(L)을 이용하여 기본연산을 수행하는 제1기본연산장치;
    상기 제1기본연산장치의 출력신호를 상기 순환상수(RC)의 값만큼 순환시켜 출력하는 순환함수; 및
    상기 순환함수의 출력신호, 상기 제1기본연산장치의 출력신호 및 상기 제2데이터 스트림(R)을 이용하여 기본연산을 수행하는 제2기본연산장치를 구비하며,
    상기 제1기본연산장치 및 상기 제2기본연산장치는 상기 모드 선택신호(MODE_SEL) 및 상기 서브 라운드 넘버(S_R_NUM)에 대응하여 동작하고,
    상기 기본연산은,
    가산(Add operation), 감산(Subtraction operation) 및 XOR(Exclusive OR operation)의 연산 중에서 선택하여 그에 해당하는 연산을 수행하는 것을 특징으로 하는 M6 블록암호시스템.
  17. 제16항에 있어서, 상기 제1기본연산장치는,
    각 라운드의 첫 번째 서브 라운드일 때는 상기 2개의 라운드 연산키 중에서 제1연산 라운드 키(Key1) 및 상기 제1데이터 스트림(L)에 대하여 기본연산을 수행하고, 두 번째 서브 라운드부터 마지막 서브 라운드 이전까지는 상기 제2기본연산장치의 출력신호(ROUND_OUT) 및 상기 상수 "1"에 대하여 기본연산을 수행하며, 마 지막 서브 라운드일 때는 적어도 2개의 라운드 연산키 중에서 제2연산 라운드 키(Key2) 및 상기 제2기본연산장치의 출력신호(ROUND_OUT)에 대하여 기본연산을 수행하는 것을 특징으로 하는 M6 블록암호시스템.
  18. 제16항에 있어서, 상기 제2기본연산장치는,
    매 라운드의 마지막 서브 라운드 일 경우에만 상기 제2데이터 스트림(R)을 연산에 활용하는 것을 특징으로 하는 M6 블록암호시스템.
  19. 제10항에 있어서, 상기 서브 라운드의 개수는,
    3개, 4개 및 6개 중에서 어느 하나인 것을 특징으로 하는 M6 블록암호시스템.
  20. 제16항에 있어서, 상기 제1멀티플렉서의 출력신호는,
    64비트이고,
    제1데이터 스트림(L) 및 제2데이터 스트림(R)은,
    각각 32비트 인 것을 특징으로 하는 M6 블록암호시스템.
KR1020040097944A 2004-11-26 2004-11-26 M6 블록암호시스템 KR100967880B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020040097944A KR100967880B1 (ko) 2004-11-26 2004-11-26 M6 블록암호시스템
US11/258,059 US7613296B2 (en) 2004-11-26 2005-10-26 M6 block cipher system and method for encoding content and authenticating a device
DE102005056815A DE102005056815B4 (de) 2004-11-26 2005-11-24 M6-Blockchiffriersystem und Inhaltskodierverfahren
FR0511957A FR2880704A1 (fr) 2004-11-26 2005-11-25 Systeme de chiffrement par blocs m6 et procede pour coder un contenu et authentifier un dispositif

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040097944A KR100967880B1 (ko) 2004-11-26 2004-11-26 M6 블록암호시스템

Publications (2)

Publication Number Publication Date
KR20060058912A KR20060058912A (ko) 2006-06-01
KR100967880B1 true KR100967880B1 (ko) 2010-07-05

Family

ID=36371626

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040097944A KR100967880B1 (ko) 2004-11-26 2004-11-26 M6 블록암호시스템

Country Status (4)

Country Link
US (1) US7613296B2 (ko)
KR (1) KR100967880B1 (ko)
DE (1) DE102005056815B4 (ko)
FR (1) FR2880704A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1865481A1 (en) * 2005-03-31 2007-12-12 Matsushita Electric Industrial Co., Ltd. Data encryption device and data encryption method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990084419A (ko) * 1998-05-06 1999-12-06 이석우 블록 데이터 암호화 장치
US6324288B1 (en) 1999-05-17 2001-11-27 Intel Corporation Cipher core in a content protection system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4642424A (en) * 1984-01-03 1987-02-10 At&T Information Systems Inc. Cryptographic transmission system
US6850252B1 (en) * 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
CA2173688C (en) 1996-04-09 2000-01-18 Hideo Shimizu Encryption apparatus and method capable of controlling encryption process in accordance with an internal state
US6185304B1 (en) * 1998-02-23 2001-02-06 International Business Machines Corporation Method and apparatus for a symmetric block cipher using multiple stages
US6199052B1 (en) * 1998-03-06 2001-03-06 Deloitte & Touche Usa Llp Secure electronic transactions using a trusted intermediary with archive and verification request services
US6914983B2 (en) * 2000-12-19 2005-07-05 International Business Machines Corporation Method for checking modular multiplication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990084419A (ko) * 1998-05-06 1999-12-06 이석우 블록 데이터 암호화 장치
US6324288B1 (en) 1999-05-17 2001-11-27 Intel Corporation Cipher core in a content protection system

Also Published As

Publication number Publication date
FR2880704A1 (fr) 2006-07-14
DE102005056815B4 (de) 2010-07-29
KR20060058912A (ko) 2006-06-01
DE102005056815A1 (de) 2006-06-01
US20060126834A1 (en) 2006-06-15
US7613296B2 (en) 2009-11-03

Similar Documents

Publication Publication Date Title
EP1686722B1 (en) Block cipher apparatus and block cipher method including rotational key scheduling
US6324286B1 (en) DES cipher processor for full duplex interleaving encryption/decryption service
JP2628660B2 (ja) 暗号化/復号方法および装置
US9003202B2 (en) Memory control device, semiconductor memory device, memory system, and memory control method
JP2007522764A (ja) データを暗号的に処理する方法及び装置
KR20080078013A (ko) 보안 시스템 온 칩
CN113098675B (zh) 基于多项式完全同态的二进制数据加密系统及方法
EP1932275B1 (en) Security device and building block functions
US20050050340A1 (en) Hardware cryptographic engine and encryption method
CN116846542A (zh) 一种数据加密和解密方法、装置及电子设备
WO2021176242A1 (en) Scrambler apparatus and method in particular for cryptographic applications, and descrambler apparatus and method therefor
CN101227274A (zh) 机密信息处理机器、机密信息处理装置及机密信息处理方法
JP3769804B2 (ja) 解読化方法および電子機器
KR0137709B1 (ko) 암호화된 컴퓨터 목적 코드의 암호 해독 방지 방법
US7006634B1 (en) Hardware-based encryption/decryption employing dual ported key storage
US7089426B1 (en) Method and system for encryption
US8774402B2 (en) Encryption/decryption apparatus and method using AES rijndael algorithm
KR100967880B1 (ko) M6 블록암호시스템
US20120321079A1 (en) System and method for generating round keys
JP5500923B2 (ja) 情報処理装置
JP4395527B2 (ja) 情報処理装置
KR100494560B1 (ko) Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법
Cody et al. High speed SOC design for blowfish cryptographic algorithm
KR100845835B1 (ko) 다단계 암호화 및 복호화 시스템
US6971020B1 (en) Circuit and method for the securing of a coprocessor dedicated to cryptography

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130531

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140530

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150601

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160531

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 10