KR20070117172A - 스마트 카드 및 그것의 데이터 보안 방법 - Google Patents

스마트 카드 및 그것의 데이터 보안 방법 Download PDF

Info

Publication number
KR20070117172A
KR20070117172A KR1020060051033A KR20060051033A KR20070117172A KR 20070117172 A KR20070117172 A KR 20070117172A KR 1020060051033 A KR1020060051033 A KR 1020060051033A KR 20060051033 A KR20060051033 A KR 20060051033A KR 20070117172 A KR20070117172 A KR 20070117172A
Authority
KR
South Korea
Prior art keywords
data
mask
address
processing unit
exclusive
Prior art date
Application number
KR1020060051033A
Other languages
English (en)
Other versions
KR100837270B1 (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 KR1020060051033A priority Critical patent/KR100837270B1/ko
Priority to US11/785,281 priority patent/US8332634B2/en
Priority to DE102007063755.3A priority patent/DE102007063755B4/de
Priority to DE102007026977A priority patent/DE102007026977B4/de
Priority to CN2007101082808A priority patent/CN101086769B/zh
Priority to JP2007151965A priority patent/JP2007328789A/ja
Priority to GB0710989A priority patent/GB2438972B/en
Priority to GB1006763A priority patent/GB2468419B/en
Priority to FR0755535A priority patent/FR2902252A1/fr
Priority to FR0707792A priority patent/FR2906665A1/fr
Publication of KR20070117172A publication Critical patent/KR20070117172A/ko
Application granted granted Critical
Publication of KR100837270B1 publication Critical patent/KR100837270B1/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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/004Countermeasures against attacks on cryptographic mechanisms for fault attacks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • G06K19/073Special arrangements for circuits, e.g. for protecting identification code in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • G06K19/077Constructional details, e.g. mounting of circuits in the carrier
    • 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
    • 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/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations
    • 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 Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명에 따른 스마트 카드는 스마트 카드는 보안 회로를 구비함으로써 데이터 버스를 통해 전송되는 데이터를 보호한다. 스마트 카드는 데이터 버스를 통해 암호화 데이터를 전송하며, 암호화 데이터를 메모리에 저장한다. 또한, 본 발명에 따른 스마트 카드는 논리 회로 및 이중 데이터 버스를 구비함으로써 데이터 전송 동안에 데이터 버스에서 발생한 에러를 검출한다. 본 발명에 따른 스마트 카드에 의하면, 데이터를 안전하게 보호할 수 있을 뿐만 아니라, 데이터 에러를 쉽게 검출할 수 있다.

Description

스마트 카드 및 그것의 데이터 보안 방법{SMART CARD AND DATA SECURITY METHOD THEREOF}
도 1은 일반적인 스마트 카드의 내부 구조를 보여주는 블록도이다.
도 2는 본 발명에 따른 스마트 카드의 제 1 실시예를 보여주는 블록도이다.
도 3은 도 2에 도시된 암호화 회로를 예시적으로 보여주는 블록도이다.
도 4는 도 2에 도시된 복호화 회로를 예시적으로 보여주는 블록도이다.
도 5는 도 3 및 도 4에 도시된 S박스의 S연산을 보여주는 테이블이다.
도 6은 본 발명에 따른 스마트 카드의 제 2 실시예를 보여주는 블록도이다.
도 7은 본 발명에 따른 스마트 카드의 제 3 실시예를 보여주는 블록도이다.
도 8은 본 발명에 따른 스마트 카드의 제 4 실시예를 보여주는 블록도이다.
도 9는 본 발명에 따른 스마트 카드의 제 5 실시예를 보여주는 블록도이다.
도 10 및 도 11은 도 9에 도시된 제 1 및 제 2 암호화 회로를 예시적으로 보여주는 블록도이다.
*도면의 주요부분에 대한 부호의 설명*
100, 400, 500; 스마트 카드 110, 410, 510; CPU
120, 420, 520; 메모리 130, 530; 보안 회로
140, 540; 키 스케줄러 430, 440, 450, 550; 논리 회로
131, 531, 532; 암호화 회로 132, 533; 복호화 회로
본 발명은 스마트 카드에 관한 것으로, 더욱 상세하게는 버스를 통해 전송되는 정보를 보호하는 스마트 카드 및 그것의 데이터 보안 방법에 관한 것이다.
스마트 카드(Smart Card)는 특정 업무를 처리할 수 있도록 집적 회로 칩(IC Chip)을 내장한 플라스틱 카드이다. 스마트 카드는 마이크로 프로세서, 카드 운영 체제, 보안 모듈, 메모리 등을 구비하며, 전자 화폐, 교통 카드, 전자상거래, 출입통제 등 응용 분야에서 다목적으로 활용되고 있다.
스마트 카드의 보안 장치는 초기에는 데이터 암호화 표준(Data Encryption Standard; DES) 시스템이 통용되었으나, 최근에는 암호화 알고리즘의 발달로 공개 키 암호 방식(RSA)으로 전환되고 있는 추세이다. 고도의 비밀 유지가 가능한 스마트 카드는 각종 전자 서명이나 결제, 신분 증명 등에도 유용하게 사용되고 있다.
스마트 카드는 마이크로 프로세서의 포함 여부에 따라 메모리 카드와 마이크로 프로세서 카드로 분류할 수 있다. 메모리 카드는 프로세서 없이 메모리만을 내장한다. 마이크로 프로세서 카드는 메모리 및 CPU를 포함하며 읽기/쓰기 기능 및 보안 기능을 제공한다. 또한, 스마트 카드는 인터페이스 방식에 따라 접촉식 카드와 비접촉식 카드로 분류할 수 있다. 이들을 상호 결합한 콤비 카드 및 하이브리드 카드도 있다. 접촉식 카드는 칩의 동작을 위한 전원과 클록 신호를 얻기 위해 판독 기와의 물리적인 접촉을 필요로 하며, 카드에 대한 전원은 판독기로부터 공급된다. 비접촉식 카드는 판독기에 카드를 접촉할 필요 없이 일정 거리를 두고도 동작 가능한 카드이다.
도 1은 일반적인 스마트 카드의 내부 구조를 보여주는 블록도이다. 도 1을 참조하면, 스마트 카드(10)는 중앙 처리 장치(11), 롬(ROM, 12), 램(RAM, 13), NVM(Non-Volatile Memory)(14), 입출력 장치(15), 그리고 버스(16)를 포함한다. 일반적으로, 롬(12)은 운영 체계(OS) 프로그램 등을 저장하고, 램(13)은 임시 저장 공간으로 활용되며, NVM은 응용 프로그램을 저장한다. 입출력 장치(15)는 외부 장치와의 데이터 통신에 사용된다.
도 1을 참조하면, 스마트 카드(10)는 중앙 처리 장치(11)와 메모리(12, 13, 14) 사이의 데이터 전송을 위한 버스(16)를 포함한다. 여기에서, 버스(16)는 어드레스 버스 및 데이터 버스를 포함한다. 데이터 버스는 중앙 처리 장치(11)와 메모리(12, 13, 14) 사이에서 실제 데이터의 이동 통로이다. 어드레스 버스는 여러 메모리 중에서 어느 하나를 선택하거나, 선택된 메모리의 특정 위치를 지정하기 위한 어드레스의 이동 통로이다. 일반적으로, 어드레스 버스의 하위 라인은 선택된 메모리의 특정 위치를 지정하며, 나머지 상위 라인은 여러 메모리 중에서 어느 하나를 선택하기 위해 사용된다.
스마트 카드(10) 내의 데이터 전송은 주로 버스(16)를 통해 이루어진다. 즉, 쓰기 동작 시에, 중앙 처리 장치(11)의 출력 데이터는 버스(16)를 통해 메모리(12, 13, 14)로 전송된다. 읽기 동작 시에, 메모리(12, 13, 14)에 저장된 데이터는 버스(16)를 통해 중앙 처리 장치(11)로 전송된다. 따라서 스마트 카드(10)에 있어서, 버스(16)를 통해 전송되는 데이터를 보호하는 것은 무엇보다 중요한 문제이다. 즉, 스마트 카드(10)는 버스를 통해 전송되는 데이터의 확실성(confidentiality) 및 무결성(integrity)이 보장되어야 한다.
그러나 현재 사용되고 있는 스마트 카드는 버스의 보안이 취약한 문제점이 있다. 즉, 검침(probing) 등과 같은 외부 공격(external attack)에 의해 버스를 통해 전송되는 데이터나 코드 등 중요한 정보가 쉽게 노출될 수 있다. 또한, 버스를 통해 전송되는 데이터는 메모리에 사용되는 감지 증폭기의 전력 소모와 관련이 있기 때문에, 감지 증폭기의 전력 소모를 파악함으로써 쉽게 분석될 수 있다.
본 발명은 상술한 문제점을 해결하기 위하여 제안된 것으로, 본 발명의 목적은 외부 공격으로부터 데이터를 안전하게 보호할 수 있는 스마트 카드 및 그것의 데이터 전송 방법을 제공하는 데 있다.
본 발명에 따른 스마트 카드는 중앙 처리 장치; 데이터를 저장하기 위한 메모리; 키(key)를 제공하기 위한 키 스케줄러; 상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고, 상기 메모리에 저장될 데이터를 암호화하는 암호화 회로; 및 상기 암호화된 데이터를 상기 메모리로 전송하기 위한 데이터 버스를 포함한다.
실시예로서, 상기 암호화 회로는 복수의 암호화 라운드 함수 블록을 갖는다. 각각의 암호화 라운드 함수 블록은 상기 중앙 처리 장치로부터 어드레스 및 상기 키 스케줄러로부터 키를 입력받고 암호화 동작을 수행한다. 상기 각각의 암호화 라운드 함수 블록은 상기 데이터와 상기 어드레스를 배타적 논리합 연산하는 제 1 논리 게이트; 상기 제 1 논리 게이트의 출력과 상기 키를 배타적 논리합 연산하는 제 2 논리 게이트; 하나 또는 그 이상의 S박스를 가지며, 각각의 S박스는 상기 제 2 논리 게이트의 출력을 소정 비트 단위로 입력받고 S 연산을 수행하는 S 연산 회로; 및 상기 S 연산 회로의 출력을 치환(permutation) 연산하는 치환 회로를 포함한다.
다른 실시예로서, 상기 스마트 카드는 상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고, 상기 메모리에 저장된 암호화 데이터를 복호화하는 복호화 회로를 더 포함한다. 상기 복호화 회로는 상기 각각의 암호화 라운드 함수 블록에 대응하는 복수의 복호화 라운드 함수 블록을 가지며, 각각의 복호화 라운드 함수 블록은 상기 중앙 처리 장치로부터 어드레스 및 상기 키 스케줄러로부터 키를 입력받고 복호화 동작을 수행한다. 상기 각각의 복호화 라운드 함수 블록은 입력 데이터를 역치환(inverse permutation) 연산하는 역치환 회로; 하나 또는 그 이상의 역변환 S박스를 가지며, 각각의 역변환 S박스는 상기 역치환 회로의 출력 데이터를 입력받고 역변환 S 연산하는 역변환 S회로; 상기 역변환 S회로의 출력과 상기 어드레스를 배타적 논리합 연산하는 제 1 논리 게이트; 및 상기 제 1 논리 게이트의 출력과 상기 키를 배타적 논리합 연산하는 제 2 논리 게이트를 포함한다.
본 발명에 따른 스마트 카드의 다른 일면은 중앙 처리 장치; 데이터를 저장 하기 위한 메모리; 제 1 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 데이터를 마스크하고, 제 1 마스크 데이터를 출력하는 제 1 논리 회로; 제 2 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 데이터를 마스크하고, 제 2 마스크 데이터를 출력하는 제 2 논리 회로; 상기 제 1 및 제 2 마스크 데이터를 각각 전송하기 위한 제 1 및 제 2 데이터 버스; 및 상기 제 1 마스크 신호에 응답하여 상기 제 1 데이터 버스를 통해 전송된 제 1 마스크 데이터로부터 상기 중앙 처리 장치의 출력 데이터를 복원하는 제 3 논리 회로를 포함하되, 상기 제 3 논리 회로는 상기 제 1 및 제 2 마스크 데이터를 입력받고, 데이터 전송 동안에 상기 제 1 및 제 2 데이터 버스에서 발생한 에러를 검출한다.
실시예로서, 상기 제 1 논리 회로는 상기 제 1 마스크 신호 및 상기 중앙 처리 장치의 출력 데이터를 배타적 논리합 연산한다. 상기 제 2 논리 회로는 상기 제 2 마스크 신호 및 상기 중앙 처리 장치의 출력 데이터를 배타적 논리합 연산한다. 상기 제 3 논리 회로는 상기 제 1 마스크 신호 및 상기 제 1 마스크 데이터를 배타적 논리합 연산하는 제 1 논리 게이트; 상기 제 1 및 제 2 마스크 데이터를 배타적 논리합 연산하는 제 2 논리 게이트; 및 상기 제 1 및 제 2 마스크 신호의 배타적 논리합 연산 값을 저장하며, 저장된 연산 값과 상기 제 2 논리 게이트의 출력 값을 비교하여 에러를 검출하는 에러 검출기를 포함한다. 상기 에러 검출기는 상기 저장된 연산 값과 상기 제 2 논리 게이트의 출력 값이 다를 경우에 에러 신호를 발생한다.
본 발명에 따른 스마트 카드의 또 다른 일면은 중앙 처리 장치; 어드레스에 의해 선택된 셀에 데이터를 저장하는 메모리; 제 1 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 어드레스를 마스크하고, 제 1 마스크 어드레스를 출력하는 제 1 논리 회로; 제 2 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 어드레스를 마스크하고, 제 2 마스크 어드레스를 출력하는 제 2 논리 회로; 상기 제 1 및 제 2 마스크 어드레스를 각각 전송하기 위한 제 1 및 제 2 어드레스 버스; 및 상기 제 1 마스크 신호에 응답하여 상기 제 1 어드레스 버스를 통해 전송된 제 1 마스크 어드레스로부터 상기 중앙 처리 장치의 출력 어드레스를 복원하는 제 3 논리 회로를 포함하되, 상기 제 3 논리 회로는 상기 제 1 및 제 2 마스크 어드레스를 입력받고, 어드레스 전송 동안에 상기 제 1 및 제 2 어드레스 버스에서 발생한 에러를 검출한다.
본 발명에 따른 스마트 카드의 또 다른 일면은 중앙 처리 장치; 데이터를 저장하기 위한 메모리; 키(key)를 제공하기 위한 키 스케줄러; 제 1 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 데이터를 마스크하고 제 1 마스크 데이터를 생성하는, 상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고 상기 제 1 마스크 데이터를 암호화는, 그리고 최종적으로 제 1 마스크 암호화 데이터를 출력하는 제 1 암호화 회로; 제 2 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 데이터를 마스크하고 제 2 마스크 데이터를 생성하는, 상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고 상기 제 2 마스크 데이터를 암호화하는, 그리고 최종적으로 제 2 마스크 암호화 데이터를 출력하는 제 2 암호화 회로; 상기 제 1 및 제 2 마스크 암 호화 데이터를 각각 전송하기 위한 제 1 및 제 2 데이터 버스; 및 상기 제 1 마스크 신호에 응답하여 상기 제 1 마스크 암호화 데이터로부터 암호화 데이터를 생성하고, 상기 암호화 데이터를 상기 메모리로 제공하는 논리 회로를 포함하되, 상기 논리 회로는 상기 제 1 및 제 2 마스크 암호화 데이터를 입력받고, 데이터 전송 동안에 상기 제 1 및 제 2 데이터 버스에서 발생한 에러를 검출한다.
실시예로서, 상기 제 1 및 제 2 암호화 회로는 복수의 암호화 라운드 함수 블록을 가지며, 각각의 암호화 라운드 함수 블록은 상기 중앙 처리 장치로부터 어드레스 및 상기 키 스케줄러로부터 키를 입력받고 암호화 동작을 수행한다. 상기 각각의 암호화 라운드 함수 블록은 상기 데이터와 상기 어드레스를 배타적 논리합 연산하는 제 1 논리 게이트; 상기 제 1 논리 게이트의 출력과 상기 키를 배타적 논리합 연산하는 제 2 논리 게이트; 하나 또는 그 이상의 S박스를 가지며, 각각의 S박스는 상기 제 2 논리 게이트의 출력을 소정 비트 단위로 입력받고 S 연산을 수행하는 S 연산 회로; 및 상기 S 연산 회로의 출력을 치환(permutation) 연산하는 치환 회로를 포함한다.
다른 실시예로서, 상기 제 1 마스크 암호화 데이터는 상기 암호화 데이터와 상기 제 1 마스크 신호의 배타적 논리합 연산이고, 상기 제 2 마스크 암호화 데이터는 상기 암호화 데이터와 상기 제 2 마스크 신호의 배타적 논리합 연산인 것을 특징으로 한다. 상기 논리 회로는 상기 제 1 마스크 신호 및 상기 제 1 마스크 암호화 데이터를 배타적 논리합 연산하는 제 1 논리 게이트; 상기 제 1 및 제 2 마스크 암호화 데이터를 배타적 논리합 연산하는 제 2 논리 게이트; 및 상기 제 1 및 제 2 마스크 신호의 배타적 논리합 연산 값을 저장하며, 저장된 연산 값과 상기 제 2 논리 게이트의 출력 값을 비교하여 에러를 검출하는 에러 검출기를 포함한다.
본 발명에 따른 스마트 카드의 데이터 보안 방법은 중앙 처리 장치로부터 제공된 어드레스 및 키 스케줄러로부터 제공된 키를 입력받고, 메모리에 저장될 데이터를 암호화하는 단계; 및 상기 암호화된 데이터를 데이터 버스를 통해 상기 메모리로 전송하는 단계를 포함한다.
실시예로서, 상기 암호화 단계는 상기 데이터 및 상기 어드레스를 배타적 논리합 연산하고, 그 연산 결과와 상기 키를 배타적 논리합 연산하는 단계; 상기 배타적 논리합 연산한 데이터를 소정 비트 단위로 등분하고, 미리 정의된 테이블에 따라 S 변환을 수행하는 단계; 및 상기 S 변환된 데이터를 치환(permutation) 연산하는 단계를 포함한다.
다른 실시예로서, 상기 데이터 보안 방법은 상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고, 상기 암호화된 데이터를 복호화하는 단계를 더 포함한다.
본 발명에 따른 스마트 카드의 데이터 보안 방법의 다른 일면은 제 1 및 제 2 마스크 신호에 응답하여 중앙 처리 장치의 출력 데이터를 마스크하고, 제 1 및 제 2 마스크 데이터를 출력하는 단계; 상기 제 1 및 제 2 마스크 데이터를 각각 제 1 및 제 2 데이터 버스를 통해 전송하는 단계; 상기 제 1 마스크 신호에 응답하여 상기 제 1 데이터 버스를 통해 전송된 제 1 마스크 데이터로부터 상기 중앙 처리 장치의 출력 데이터를 복원하는 단계; 및 상기 제 1 및 제 2 마스크 데이터를 입력 받고, 데이터 전송 동안에 상기 제 1 및 제 2 데이터 버스에서 발생한 에러를 검출하는 단계를 포함한다.
본 발명에 따른 스마트 카드의 어드레스 보안 방법은 제 1 및 제 2 마스크 신호에 응답하여 중앙 처리 장치의 출력 어드레스를 마스크하고, 제 1 및 제 2 마스크 어드레스를 출력하는 단계; 상기 제 1 및 제 2 마스크 어드레스를 각각 제 1 및 제 2 어드레스 버스를 통해 전송하는 단계; 상기 제 1 마스크 신호에 응답하여 상기 제 1 어드레스 버스를 통해 전송된 제 1 마스크 어드레스로부터 상기 중앙 처리 장치의 출력 어드레스를 복원하는 단계; 및 상기 제 1 및 제 2 마스크 어드레스를 입력받고, 어드레스 전송 동안에 상기 제 1 및 제 2 어드레스 버스에서 발생한 에러를 검출하는 단계를 포함한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 바람직한 실시예를 첨부된 도면을 참조하여 설명하기로 한다.
도 2는 본 발명에 따른 스마트 카드의 제 1 실시예를 보여주는 블록도이다. 도 2를 참조하면, 스마트 카드(100)는 중앙 처리 장치(110), 메모리(120), 보안 회로(130), 키 스케줄러(140), 그리고 데이터 버스(150)를 포함한다. 스마트 카드(100)는 검침(probing), 폴트 인젝션(fault injection), 또는 전력 분석(power analysis) 등과 같은 외부 공격(external attack)으로부터 데이터 버스(150)를 통해 전송되는 데이터를 보호한다. 스마트 카드(100)는 데이터 보호를 위해 보안 회로(130)를 구비한다.
도 2를 참조하면, 중앙 처리 장치(110)는 데이터 처리 동작 및 산술 동작 등과 같은 스마트 카드(100)의 전반적인 동작을 제어한다. 메모리(120)는 중앙 처리 장치(110)에 의해 시행될 프로그램 또는 데이터를 저장한다. 도 1에 도시된 바와 같이, 메모리(120)에는 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), NVM 등이 포함된다. 램(RAM)은 롬(ROM)에 비해서 읽고 쓰는 기능을 모두 제공하기 때문에 변경될 가능성이 있는 프로그램이나 데이터를 저장한다. 반면에, 롬(ROM)은 스마트 카드(100) 내에서 오랫동안 존재하거나 불변하는 부트 코드, 초기화 프로그램, 운영 체제 프로그램 등을 저장한다.
보안 회로(130)는 암호화 회로(131) 및 복호화 회로(132)를 포함한다. 암호화 회로(131)는 어드레스(Addr) 및 키(Key)를 입력받고, 데이터(Data)를 암호화한다. 여기에서, 어드레스(Addr) 및 데이터(Data)는 중앙 처리 장치(110)로부터 제공되고, 키(Key)는 키 스케줄러(140)로부터 제공된다. 암호화된 데이터(Encrypted Data)는 데이터 버스(150)를 통해 메모리(120)로 전송된다. 복호화 회로(132)는 어드레스(Addr) 및 키(Key)를 입력받고, 암호화된 데이터(Encrypted Data)를 복호화한다. 암호화 회로(131) 및 복호화 회로(132)의 구성 및 동작 원리는 후술하는 도 3 및 도 4를 참조하여 상세히 설명된다.
도 3은 도 2에 도시된 암호화 회로를 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 암호화 회로(131)는 복수의 암호화 라운드 함수 블록을 갖는다. 도 3에서는 제 1 및 제 2 암호화 라운드 함수 블록(210, 220)이 도시되어 있으나. 암호화 회로(131)는 더 많은 수의 암호화 라운드 함수 블록을 가질 수 있다. 각각의 암 호화 라운드 함수 블록은 어드레스(Addr) 및 키(Key)를 입력받고, 암호화 동작을 수행한다. 각 암호화 라운드 함수 블록의 암호화 동작은 동일한 동작 원리를 갖는다. 이하에서는 제 1 암호화 라운드 함수 블록(210)에 대해서 자세하게 설명한다.
도 3을 참조하면, 제 1 암호화 라운드 함수 블록(210)은 제 1 및 제 2 논리 게이트(211, 212), 데이터 레지스터(213), S1 박스(214), S2 박스(215), 그리고 치환 회로(216)를 포함한다. 제 1 암호화 라운드 함수 블록(210)은 8_비트 데이터를 암호화한다고 가정한다.
제 1 논리 게이트(211)는 8_비트 데이터(Data) 및 8_비트 어드레스(Addr1[7:0])를 입력받고, 이들을 배타적 논리합 연산(XOR)을 수행한다. 제 1 논리 게이트(211)의 출력식은 D
Figure 112006040014256-PAT00001
A1이다. 여기에서, D는 데이터(Data)를 의미하고, A1은 어드레스(Addr1)를 의미하여,
Figure 112006040014256-PAT00002
은 배타적 논리합 연산(XOR)을 의미한다. 제 2 논리 게이트(212)는 제 1 논리 게이트(211)의 출력 데이터 및 8_비트 키(Key1)를 입력받고, 이들을 배타적 논리합 연산(XOR)을 수행한다. 제 2 논리 게이트(212)의 출력식은 D
Figure 112006040014256-PAT00003
A1
Figure 112006040014256-PAT00004
K1 이다. 여기에서, K1은 키(Key1)를 의미한다. 데이터 레지스터(213)는 제 2 논리 게이트(212)로부터 출력되는 8_비트 데이터를 저장한다.
데이터 레지스터(213)에 저장된 8_비트 데이터는 양분되어, S1 및 S2 박스(214, 215)로 입력된다. S1 및 S2 박스(214, 215)는 각각 S1 연산 및 S2 연산을 수행한다. 도 5는 S 박스의 S1 및 S2 연산을 예로서 보여주는 테이블이다. 일반적으로, S 박스는 도 5에 도시된 바와 같은 테이블에 따라 S 연산을 수행한다.
예를 들어, 데이터 레지스터(213)의 출력 데이터가 '01011100'이라고 가정하자. 이때 상위 4_비트(0101)는 S1 박스(214)에 입력되고, 하위 4_비트(1100)는 S2 박스(215)에 입력된다. S1 박스(214)에 '0101(십진법 5)'이 입력되면, '1111(십진법 15)'이 출력된다. 즉, S1(5)=15이다. 그리고 S2 박스(215)에 '1100(십진법 12)'이 입력되면, '1001(십진법 9)'이 출력된다. 즉, S2(12)=9이다. S1 및 S2 박스(214, 215)의 출력식은 다음과 같이 표현될 수 있다.
Figure 112006040014256-PAT00005
Figure 112006040014256-PAT00006
(1) S1(DA1K1)
(2) S2(D
Figure 112006040014256-PAT00007
A1
Figure 112006040014256-PAT00008
K1)
여기에서, S1 및 S2 박스(214)의 출력 데이터는 각각 4_비트이다. 그리고 수학식 1에서, (1)식은 상위 4_비트이고, (2)식은 하위 4_비트이다.
치환 회로(216)는 S1 및 S2 박스(214, 215)의 출력 데이터를 입력받고, P(permutation) 연산을 수행한다. 치환 회로(216)의 출력식은 다음과 같이 표현될 수 있다.
Figure 112006040014256-PAT00009
Figure 112006040014256-PAT00010
Figure 112006040014256-PAT00011
Figure 112006040014256-PAT00012
P[S1(DA1K1)∥S2(DA1K1)]
여기에서, ∥은 연접(concatenation)을 의미한다. 치환 회로(216)의 출력 데이터는 8_비트이다.
제 1 암호화 라운드 함수 블록(210)의 출력 데이터는 제 2 암호화 라운드 함 수 블록(220)으로 제공되고, 위와 동일한 방식에 의해 암호화 동작이 수행된다. 제 2 암호화 라운드 함수 블록(220)은 어드레스(Addr2) 및 키(Key2)를 입력받는다. 그리고 제 2 암호화 라운드 함수 블록(220)은 제 1 암호화 라운드 함수 블록(210)과 달리, 데이터 레지스터(223)에 저장된 상위 4_비트를 S2 박스(225)에 입력하고, 하위 4_비트를 S1 박스(224)에 입력한다. 이는 암호화를 더욱 견고하게 하기 위함이다. 제 2 암호화 라운드 함수 블록(220)은 최종적으로 수학식 2의 형식을 갖는 암호화된 데이터(Encrypted Data; ED)를 출력한다. 암호화된 데이터는 8_비트이며, 데이터 버스(도 2 참조, 150)를 통해 메모리(120)로 전송된다.
도 4는 도 2에 도시된 복호화 회로를 예시적으로 보여주는 블록도이다. 도 4를 참조하면, 복호화 회로(132)는 도 3에서 설명한 각각의 암호화 라운드 함수 블록에 대응하는 각각의 복호화 라운드 함수 블록을 갖는다. 즉, 제 1 복호화 라운드 함수 블록(310)은 제 2 암호화 라운드 함수 블록(도 3 참조, 220)에 의해 암호화된 데이터를 복호화한다. 그리고 제 2 복호화 라운드 함수 블록(320)은 제 1 암호화 라운드 함수 블록(도 3 참조, 210)에 의해 암호화된 데이터를 복호화한다. 이하에서는 제 1 암호화 라운드 함수 블록(210)에 대응하는 제 2 복호화 라운드 함수 블록(320)에 대해서 자세하게 설명한다.
먼저, 메모리(도 2 참조, 120)에 저장된 암호화 데이터(Encrypted Data; ED)는 데이터 버스(도 2 참조, 150)를 통해 제 1 복호화 라운드 함수 블록(310)으로 전송된다. 제 1 복호화 라운드 함수 블록(310)은 어드레스(Addr2) 및 키(Key2)를 입력받고, 제 2 암호화 라운드 함수 블록(220)에 의해 암호화된 데이터를 복호화한 다. 제 1 복호화 라운드 함수 블록(310)의 출력 데이터는 제 2 복호화 라운드 함수 블록(320)으로 입력된다.
도 4를 참조하면, 제 2 복호화 라운드 함수 블록(320)은 역 치환 회로(321), 역 S1 박스(322), 역 S2 박스(323), 데이터 레지스터(324), 제 1 및 제 2 논리 게이트(325, 326)를 포함한다. 제 2 복호화 라운드 함수 블록(320)은 어드레스(Addr1) 및 키(Key1)를 입력받고, 제 1 암호화 라운드 함수 블록(210)에 의해 암호화된 데이터를 복호화한다.
역 치환 회로(321)는 제 1 복호화 라운드 함수 블록(310)의 출력 데이터를 입력받고, P-1 연산(inverse permutation)을 수행한다. 수학식 2에서 보는 바와 같이, 제 1 암호화 라운드 함수 블록(도 3 참조, 210)의 출력식이 S1(D
Figure 112006040014256-PAT00013
A1
Figure 112006040014256-PAT00014
K1)∥S2(D
Figure 112006040014256-PAT00015
A1
Figure 112006040014256-PAT00016
K1)라고 할 때, 역 치환 회로(321)의 출력식은 다음과 같이 표현될 수 있다.
Figure 112006040014256-PAT00017
Figure 112006040014256-PAT00018
Figure 112006040014256-PAT00019
Figure 112006040014256-PAT00020
Figure 112006040014256-PAT00021
Figure 112006040014256-PAT00022
Figure 112006040014256-PAT00023
Figure 112006040014256-PAT00024
P-1{P[S1(DA1K1)∥S2(DA1K1)]}=S1(DA1K1)∥S2(DA1K1)
역 치환 회로(321)의 출력 데이터는 양분되어, 역 S1 박스(322) 및 역 S2 박스(323)로 입력된다. 역 치환 회로(321)의 상위 4_비트는 역 S1 박스(322)로 입력되고, 하위 4_비트(323)는 역 S2 박스(323)로 입력된다. 즉, 수학식 3에서, S1(D
Figure 112006040014256-PAT00025
A1
Figure 112006040014256-PAT00026
K1)는 역 S1 박스(322)로 입력되고, S2(D
Figure 112006040014256-PAT00027
A1
Figure 112006040014256-PAT00028
K1)는 역 S2 박스(323)로 입력된다. 역 S1 박스(322) 및 역 S2 박스(323)는 도 5에 도시된 테이블에 따라 S-1 연산을 수행한다.
예를 들면, 역 S1 박스(322)에 '1111(십진법 15)'이 입력되면, '0101(십진법 5)'이 출력된다. 즉, 도 5에서, S1-1(15)=5이다. 역 S2 박스(323)에 '1001(십진법 9)이 입력되면, '1100(십진법 12)'이 출력된다. 즉, 도 5에서, S2-1(9)=12이다. 역 S1 박스(322) 및 역 S2 박스(323)의 출력식은 다음과 같이 표현될 수 있다.
Figure 112006040014256-PAT00029
Figure 112006040014256-PAT00030
Figure 112006040014256-PAT00031
Figure 112006040014256-PAT00032
(1) S1-1[S1(DA1K1)]=DA1K1
(2) S2-1[S2(D
Figure 112006040014256-PAT00033
A1
Figure 112006040014256-PAT00034
K1)]=D
Figure 112006040014256-PAT00035
A1
Figure 112006040014256-PAT00036
K1
여기에서, 역 S1 박스(322) 및 역 S2 박스(323)의 출력 데이터는 각각 4_비트이다. 그리고 수학식 4에서, (1)식은 상위 4_비트이고, (2)식은 하위 4_비트이다.
데이터 레지스터(324)는 역 S1 박스(322) 및 역 S2 박스(323)로부터 출력되는 8_비트 데이터를 저장한다. 데이터 레지스터(324)의 출력식은 D
Figure 112006040014256-PAT00037
A1
Figure 112006040014256-PAT00038
K1이다. 제 1 논리 게이트(325)는 데이터 레지스터(324)의 출력 데이터 및 어드레스(Addr1)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 제 1 논리 게이트(325)의 출력식은 D
Figure 112006040014256-PAT00039
K1이다. 제 2 논리 게이트(326)는 제 1 논리 게이트(325)의 출력 데이터 및 키(Key1)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 제 2 논리 게이 트(326)의 출력식은 D이다. 여기에서, D는 복호화된 데이터(Decrypted Data)이다.
복호화 회로(132)는 데이터 버스(도 2 참조, 150)를 통해 전송된 암호화 데이터(Encrypted Data)를 복호화하고, 최종적으로 복호화된 8_비트 데이터를 출력한다. 복호화된 데이터는 중앙 처리 장치(110)로 제공된다.
다시 도 2를 참조하면, 본 발명에 따른 스마트 카드(100)는 데이터 버스(150)를 통해 암호화된 데이터(Encrypted Data)를 전송한다. 즉, 데이터 버스(150)를 통해 전송되는 데이터는 실제 데이터가 아니라, 암호화된 데이터이다. 따라서 본 발명에 의하면, 데이터 버스(150)에 대한 외부 공격으로부터 데이터를 안전하게 보호할 수 있다.
또한, 본 발명에 따른 스마트 카드(100)는 배타적 논리합 연산을 수행하는 논리 회로 이외에 S박스 및 치환 회로를 사용하여 데이터를 암호화하기 때문에, 암호화된 데이터는 견고성(robustness)이 높으며 전력 분석(power analysis)에도 강하다. 그리고 본 발명에 따른 스마트 카드(100)는 비밀 키(key) 이외에 어드레스(Addr)를 사용하여 데이터를 암호화하기 때문에, 데이터가 동일하더라도 암호화 데이터는 달라질 수 있다. 따라서 본 발명에 의하면, 스마트 카드(100)에 저장된 데이터는 외부 공격으로부터 안전하게 보호될 수 있다.
도 6은 본 발명에 따른 스마트 카드의 제 2 실시예를 보여주는 블록도이다. 도 6을 참조하면, 스마트 카드(100')는 중앙 처리 장치(110') 내에 암호화 회로(131') 및 복호화 회로(132')가 포함되어 있다. 도 6에 도시된 스마트 카드(100')는 도 2에서 설명한 스마트 카드(100)와 동일한 원리에 의해, 데이터 버 스(150')를 통해 전송되는 데이터를 안전하게 보호할 수 있다.
도 7은 본 발명에 따른 스마트 카드의 제 3 실시예를 보여주는 블록도이다. 도 7을 참조하면, 스마트 카드(400)는 중앙 처리 장치(410), 제 1 및 제 2 마스크 회로(411, 412), 메모리(420), 제 1 내지 제 3 논리 회로(430, 440, 450), 그리고 제 1 및 제 2 데이터 버스(460, 470)를 포함한다. 도 7에 도시된 스마트 카드(400)에 의하면, 데이터 전송 동안에 데이터 버스(460, 470)에서 발생한 에러를 검출할 수 있다.
중앙 처리 장치(410) 및 메모리(420)는 도 2에서 설명한 바와 동일하다. 제 1 마스크 회로(411)는 제 1 및 제 3 논리 회로(430, 450)에 제 1 마스크 신호(M1)를 제공한다. 제 2 마스크 회로(412)는 제 2 논리 회로(440)에 제 2 마스크 신호(M2)를 제공한다.
제 1 논리 회로(430)는 제 1 마스크 신호(M1)를 입력받고, 중앙 처리 장치(410)의 출력 데이터(Data)를 마스킹한다. 제 1 논리 회로(430)는 제 1 마스크 데이터(D
Figure 112006040014256-PAT00040
M1)를 출력한다. 여기에서, D는 중앙 처리 장치(410)의 출력 데이터(Data)를 의미한다. 제 1 마스크 데이터(D
Figure 112006040014256-PAT00041
M1)는 제 1 데이터 버스(460)를 통해 제 3 논리 회로(450)로 전송된다. 제 1 논리 회로(430)는 논리 게이트(431)와 레지스터(432)를 포함한다. 논리 게이트(431)는 제 1 마스크 신호(M1)와 중앙 처리 장치(410)의 출력 데이터(Data)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 레지스터(432)는 논리 게이트(431)의 출력 데이터를 저장한다.
제 2 논리 회로(440)는 제 2 마스크 신호(M2)를 입력받고, 중앙 처리 장 치(410)의 출력 데이터(Data)를 마스킹한다. 제 2 논리 회로(440)는 제 2 마스크 데이터(D
Figure 112006040014256-PAT00042
M2)를 출력한다. 제 2 마스크 데이터(D
Figure 112006040014256-PAT00043
M2)는 제 2 데이터 버스(470)를 통해 제 3 논리 회로(450)로 전송된다. 제 2 논리 회로(440)는 논리 게이트(441)와 레지스터(442)를 포함한다. 논리 게이트(441)는 제 2 마스크 신호(M2)와 중앙 처리 장치(410)의 출력 데이터(Data)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 레지스터(442)는 논리 게이트(441)의 출력 데이터를 저장한다.
제 3 논리 회로(450)는 제 1 마스크 신호(M1)에 응답하여 제 1 데이터 버스(460)를 통해 전송된 제 1 마스크 데이터(D
Figure 112006040014256-PAT00044
M1)로부터 중앙 처리 장치(410)의 출력 데이터를 복원한다. 또한, 제 3 논리 회로(450)는 제 1 및 제 2 데이터 버스(460, 470)를 통해 전송된 제 1 및 제 2 마스크 데이터(D
Figure 112006040014256-PAT00045
M1, D
Figure 112006040014256-PAT00046
M2)를 비교하여, 데이터 전송 동안에 제 1 및 제 2 데이터 버스(460, 470)에서 발생한 에러를 검출한다.
제 3 논리 회로(450)는 제 1 및 제 2 레지스터(451, 452), 제 1 및 제 2 논리 게이트(453, 454), 그리고 에러 검출기(455)를 포함한다. 제 1 및 제 2 레지스터(451, 452)는 각각 제 1 및 제 2 데이터 버스(460, 470)를 통해 전송된 제 1 및 제 2 마스크 데이터(D
Figure 112006040014256-PAT00047
M1, D
Figure 112006040014256-PAT00048
M2)를 저장한다. 제 1 논리 게이트(453)는 제 1 마스크 신호(M1) 및 제 1 마스크 데이터(D
Figure 112006040014256-PAT00049
M1)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 제 1 논리 게이트(453)는 중앙 처리 장치(410)의 출력 데이터(Data)를 복원한다. 제 2 논리 게이트(454)는 제 1 및 제 2 마스크 데이 터(D
Figure 112006040014256-PAT00050
M1, D
Figure 112006040014256-PAT00051
M2)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 제 2 논리 게이트(454)의 출력식은 M1
Figure 112006040014256-PAT00052
M2이다.
에러 검출기(455)는 제 1 및 제 2 마스크 신호(M1, M2)의 배타적 논리합 연산 결과를 저장하고 있다. 에러 검출기(455)는 제 2 논리 게이트(454)의 출력을 입력받고, 저장된 배타적 논리합 연산 결과와 비교한다. 만약, 데이터 전송 동안에 데이터 버스에서 에러가 발생하지 않으면, 제 2 논리 게이트(454)의 출력값은 저장된 값과 일치할 것이다.
그러나 데이터 버스에서 에러가 발생하면, 제 2 논리 게이트(454)의 출력값은 저장값과 다를 것이다. 이때 제 1 논리 게이트(453)의 출력 데이터는 중앙 처리 장치(410)의 출력 데이터(Data)와 다를 수 있다. 에러 검출기(455)는 입력값과 저장값이 다를 경우에, 에러 신호(ERR)를 출력한다. 제 3 논리 회로(450)는 중앙 처리 장치(410) 또는 메모리(420)에 에러 신호(ERR)를 제공하여, 메모리(420)에 저장된 에러 데이터를 삭제하거나, 중앙 처리 장치(410)를 인터럽트 한다.
도 7에 도시된 스마트 카드(400)는 동일 데이터의 전송을 위해 두 개의 데이터 버스(460, 470)를 사용한다. 두 개의 데이터 버스(460, 470)를 통해 전송되는 데이터는 서로 다른 마스크 신호(M1, M2)에 의해 마스크된 데이터(D
Figure 112006040014256-PAT00053
M1, D
Figure 112006040014256-PAT00054
M2)이다. 본 발명에 따른 스마트 카드(400)는 서로 다른 두 개의 데이터 버스(460, 470)를 통해 전송되는 서로 다른 마스크 데이터(D
Figure 112006040014256-PAT00055
M1, D
Figure 112006040014256-PAT00056
M2)를 비교하여, 데이터 전송 동안에 데이터 버스에서 발생한 에러를 검출한다. 본 발명에 따른 스마트 카 드(400)에 의하면, 데이터 전송 동안에 데이터 버스에서 발생한 에러를 검출함으로써 데이터의 안전성을 보장할 수 있다.
도 8은 본 발명에 따른 스마트 카드의 제 4 실시예를 보여주는 블록도이다. 도 8을 참조하면, 스마트 카드(400')는 중앙 처리 장치(410'), 제 1 및 제 2 마스크 회로(411', 412'), 메모리(420'), 제 1 내지 제 3 논리 회로(430', 440', 450'), 그리고 제 1 및 제 2 데이터 버스(460', 470')를 포함한다. 도 8에 도시된 스마트 카드(400')에 의하면, 어드레스 전송 동안에 어드레스 버스(460, 470)에서 발생한 에러를 검출할 수 있다. 도 8에 도시된 스마트 카드(400')의 동작 원리는 도 7에서 설명한 데이터 버스 에러 검출 동작 원리와 동일하다.
도 9는 본 발명에 따른 스마트 카드의 제 5 실시예를 보여주는 블록도이다. 도 9를 참조하면, 스마트 카드(500)는 중앙 처리 장치(510), 제 1 및 제 2 마스크 회로(511, 512), 메모리(520), 보안 회로(530), 키 스케줄러(540), 그리고 논리 회로(550)를 포함한다. 본 발명에 따른 스마트 카드(500)는 데이터 버스를 통해 전송되는 데이터를 보호함과 동시에, 데이터 전송 동안에 데이터 버스에서 발생한 에러를 검출할 수 있다.
스마트 카드(500)는 도 2에서 설명한 바와 같이 데이터 보호를 위해 보호 회로(530)를 포함하며, 도 7에서 설명한 바와 같이 에러 검출을 위해 논리 회로(550) 및 두 개의 데이터 버스(560, 570)를 포함한다. 도 7에 도시된 중앙 처리 장치(510), 메모리(520), 키 스케줄러(540), 제 1 및 제 2 마스크 회로(511, 512), 그리고 논리 회로(550)의 동작 원리는 도 2 및 도 7에서 설명한 바와 동일하다.
스마트 카드(500)는 데이터 버스(560, 570)를 통해 마스크 암호화 데이터(masked encrypted data)를 전송한다. 제 1 데이터 버스(560)를 통해서 제 1 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00057
M1)가 전송되고, 제 2 데이터 버스(570)를 통해서 제 2 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00058
M2)가 전송된다. 여기에서, ED는 암호화된 데이터(Encrypted Data)를 의미한다.
스마트 카드(500)는 마스크 암호화 데이터를 생성하거나 암호화된 데이터를 복호화하기 위해 보안 회로(530)를 포함하고 있다. 보안 회로(530)는 제 1 및 제 2 암호화 회로(531, 532), 복호화 회로(533)를 포함한다.
제 1 암호화 회로(531)는 제 1 마스크 신호(M1) 및 데이터(Data)를 입력받고, 제 1 마스크 데이터를 생성한다. 그리고 제 1 암호화 회로(531)는 제 1 마스크 데이터 어드레스(Addr), 키(Key)를 입력받고, 제 1 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00059
M1)를 출력한다. 제 1 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00060
M1)는 제 1 데이터 버스(560)를 통해 논리 회로(550)로 전송된다.
제 1 암호화 회로(531)는 제 1 마스크 신호(M1) 및 데이터(Data)를 입력받고, 제 1 마스크 데이터를 생성한다. 그리고 제 1 암호화 회로(531)는 제 1 마스크 데이터, 어드레스(Addr), 키(Key)를 입력받고, 제 1 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00061
M1)를 출력한다. 제 1 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00062
M1)는 제 1 데이터 버스(560)를 통해 논리 회로(550)로 전송된다. 제 1 암호화 회로(531)의 구성 및 동작 원리는 도 8을 참조하여 상세히 설명된다.
제 2 암호화 회로(532)는 제 1 마스크 신호(M2) 및 데이터(Data)를 입력받고, 제 2 마스크 데이터를 생성한다. 그리고 제 2 암호화 회로(532)는 제 2 마스크 데이터, 어드레스(Addr), 키(Key)를 입력받고, 제 2 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00063
M2)를 출력한다. 제 2 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00064
M2)는 제 2 데이터 버스(570)를 통해 논리 회로(550)로 전송된다. 제 2 암호화 회로(532)의 구성 및 동작 원리는 도 9를 참조하여 상세히 설명된다.
복호화 회로(533)는 데이터 버스(560 또는 570)를 통해 전송된 암호화 데이터(Encrypted Data; ED)를 복호화하고, 최종적으로 복호화된 8_비트 데이터를 출력한다. 복호화된 데이터는 중앙 처리 장치(510)로 제공된다. 복호화 회로(533)의 구성 및 동작 원리는 도 4에서 설명한 바와 동일하다.
논리 회로(550)는 제 1 및 제 2 레지스터(551, 552), 제 1 및 제 2 논리 게이트(553, 554), 그리고 에러 검출기(555)를 포함한다. 제 1 및 제 2 레지스터(551, 552)는 제 1 및 제 2 데이터 버스(560, 570)를 통해 전송된 제 1 및 제 2 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00065
M1, ED
Figure 112006040014256-PAT00066
M2)를 각각 저장한다.
제 1 논리 게이트(553)는 제 1 마스크 신호(M1) 및 제 1 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00067
M1)를 배타적 논리합 연산(XOR)하고, 암호화 데이터(ED)를 출력한다. 암호화 데이터(ED)는 최종적으로 메모리(520)에 저장된다. 제 2 논리 게이트(554)는 제 1 및 제 2 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00068
M1, ED
Figure 112006040014256-PAT00069
M2)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 제 2 논리 게이트(554)의 출력식은 M1
Figure 112006040014256-PAT00070
M2이다.
에러 검출기(555)는 제 1 및 제 2 마스크 신호(M1, M2)의 배타적 논리합 연산 결과를 저장하고 있다. 에러 검출기(555)는 제 2 논리 게이트(554)의 출력을 입력받고, 저장된 배타적 논리합 연산 결과와 비교한다. 제 2 논리 게이트(554)의 출력값과 에러 검출기(555)의 저장값이 다를 경우에, 에러 검출기(555)는 에러 신호(ERR)를 출력한다. 논리 회로(550)는 중앙 처리 장치(510) 또는 메모리(520)에 에러 신호(ERR)를 제공하여, 메모리(520)에 저장된 에러 데이터를 삭제하거나, 중앙 처리 장치(510)를 인터럽트 한다.
이상에서 설명한 바와 같이, 본 발명에 따른 스마트 카드(500)는 보안 회로(530)를 구비함으로써 데이터를 마스크 및 암호화할 수 있다. 스마트 카드(500)는 데이터 버스(560, 570)를 통해 마스크 암호화 데이터를 전송하고, 메모리(520)에 암호화 데이터를 저장한다. 또한, 본 발명에 따른 스마트 카드(500)는 논리 회로(550) 및 이중 데이터 버스(560, 570)를 구비함으로써 데이터 전송 동안에 데이터 버스에서 발생한 에러를 검출할 수 있다. 따라서 본 발명에 따른 스마트 카드(500)는 데이터를 안전하게 보호할 수 있을 뿐만 아니라, 데이터 에러를 쉽게 검출할 수 있다.
도 10은 도 9에 도시된 제 1 암호화 회로를 예시적으로 보여주는 블록도이다. 도 10을 참조하면, 제 1 암호화 회로(531)는 논리 회로(605) 및 라운드 함수 블록(610, 620)을 포함한다. 논리 회로(605)는 데이터(Data) 및 제 1 마스크 신호(M1)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 논리 회로(605)는 제 1 마스크 데이터(D
Figure 112006040014256-PAT00071
M1)를 출력한다. 라운드 함수 블록(610, 620)은 논리 회로(605) 의 출력, 어드레스(Addr), 키(Key)를 입력받고, 최종적으로 제 1 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00072
M1)를 출력한다.
도 10을 참조하면, 제 1 암호화 회로(531)는 복수의 암호화 라운드 함수 블록을 갖는다. 도 10에서는 제 1 및 제 2 암호화 라운드 함수 블록(610, 620)이 도시되어 있으나. 제 1 암호화 회로(531)는 더 많은 수의 암호화 라운드 함수 블록을 가질 수 있다. 각각의 암호화 라운드 함수 블록은 어드레스(Addr) 및 키(Key)를 입력받고, 암호화 동작을 수행한다. 각 암호화 라운드 함수 블록의 암호화 동작은 동일한 동작 원리를 갖는다. 이하에서는 제 1 암호화 라운드 함수 블록(610)에 대해서 자세하게 설명한다.
도 10을 참조하면, 제 1 암호화 라운드 함수 블록(610)은 제 1 및 제 2 논리 게이트(611, 612), 데이터 레지스터(613), S1' 박스(614), S2' 박스(615), 그리고 치환 회로(616)를 포함한다. 여기에서, 이들 구성 요소 중에서, S1' 및 S2' 박스(614, 615)를 제외하고, 도 3에서 설명한 바와 동일하다.
제 1 논리 게이트(611)는 제 1 마스크 데이터(D
Figure 112006040014256-PAT00073
M1) 및 어드레스(Addr1)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 제 1 논리 게이트(211)의 출력식은 D
Figure 112006040014256-PAT00074
M1
Figure 112006040014256-PAT00075
A1이다. 제 2 논리 게이트(612)는 제 1 논리 게이트(611)의 출력 및 키(Key1)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 제 2 논리 게이트(612)의 출력식은 D
Figure 112006040014256-PAT00076
M1
Figure 112006040014256-PAT00077
A1
Figure 112006040014256-PAT00078
K1이다. 데이터 레지스터(613)는 제 2 논리 게이트(612)로부터 출력되는 8_비트 데이터를 저장한다.
데이터 레지스터(613)에 저장된 8_비트 데이터는 양분되어, S1' 및 S2' 박스(614, 615)로 입력된다. S1' 및 S2' 박스(614, 615)는 각각 S1' 및 S2' 연산을 수행한다. 여기에서, S1' 및 S2' 연산은 도 5에 도시된 S 박스의 S1 및 S2 연산과 는 다른 새로운 S 연산을 의미한다. 제 1 암호화 회로(531)가 새로운 S 연산, 즉 S' 연산을 사용하는 이유는 S 박스의 비선형성(non_linear)에 기인한다.
도 9에 도시된 스마트 카드(500)는 위에서 설명한 바와 같이, 메모리(520)에 암호화 데이터(Encrypted Data; ED)를 저장하도록 설계된다. 메모리(520)에 암호화 데이터(ED)를 저장하기 위해서는 제 1 암호화 회로(531)의 출력식은 ED
Figure 112006040014256-PAT00079
M1 형식을 가져야 한다. 제 1 암호화 회로(531)의 출력식은 ED
Figure 112006040014256-PAT00080
M1 형식을 가질 때, 논리 회로(550)는 제 1 마스크 신호(M1)를 사용하여 암호화 데이터(ED)를 복원할 수 있게 된다. 그러나 제 1 암호화 회로(531)의 S 박스는 비선형성을 갖기 때문에, S 연산 과정에서 마스크 신호(M1)가 뒤섞일 수 있다. 이를 방지하기 위해 제 1 암호화 회로(531)는 새로운 S 연산, 즉 S' 연산을 사용한다. S' 연산을 구하는 과정은 다음과 같다.
먼저, S1' 및 S2' 박스(614)의 출력식은 수학식 5와 같이 표현될 수 있다.
Figure 112006040014256-PAT00081
Figure 112006040014256-PAT00082
Figure 112006040014256-PAT00083
(1) S1'(DM1A1K1)
(2) S2'(D
Figure 112006040014256-PAT00084
M1
Figure 112006040014256-PAT00085
A1
Figure 112006040014256-PAT00086
K1)
여기에서, (1)식은 S1' 박스(614)의 출력으로서 상위 4_비트이고, (2)식은 S2' 박스(615)의 출력으로서 하위 4_비트이다.
치환 회로(616)는 S1' 및 S2' 박스(614, 615)의 출력 데이터를 입력받고, P(permutation) 연산을 수행한다. 치환 회로(616)는 선형성을 갖기 때문에 도 4의 치환 회로(216)와 동일한 P 연산을 수행한다. 치환 회로(616)의 출력식이 중간 암호화 데이터(ED)와 제 1 마스크 신호(M1)의 배타적 논리합 연산식의 형태를 갖기 위해서는, 다음 관계식을 만족해야 한다.
Figure 112006040014256-PAT00087
Figure 112006040014256-PAT00088
Figure 112006040014256-PAT00089
Figure 112006040014256-PAT00090
Figure 112006040014256-PAT00091
Figure 112006040014256-PAT00092
(1) S1'(DM1A1K1)=S1(DA1K1)P-1(M1)
(2) S2'(D
Figure 112006040014256-PAT00093
M1
Figure 112006040014256-PAT00094
A1
Figure 112006040014256-PAT00095
K1)=S2(D
Figure 112006040014256-PAT00096
A1
Figure 112006040014256-PAT00097
K1)
Figure 112006040014256-PAT00098
P-1(M1)
여기에서, D
Figure 112006040014256-PAT00099
A1
Figure 112006040014256-PAT00100
K1=i라고 가정하면,
S1'[i
Figure 112006040014256-PAT00101
M1]=S1[i]
Figure 112006040014256-PAT00102
P-1(M1)이고, S2'[i
Figure 112006040014256-PAT00103
M1]=S2[i]
Figure 112006040014256-PAT00104
P-1(M1)이다.
따라서, 치환 회로(616)의 출력식은 다음과 같은 수학식으로 표현된다.
Figure 112006040014256-PAT00105
Figure 112006040014256-PAT00106
Figure 112006040014256-PAT00107
Figure 112006040014256-PAT00108
P[S1'(iM1)∥S2'(iM1)]=P[S1(i)∥S2(i)]M1=ED1M1
여기에서, P[S1(i)∥S2(i)]는 수학식 2에서 설명한 암호화 데이터(ED), 정확하게는 중간 암호화 데이터(ED1)이다.
위의 수학식 7에서 보는 바와 같이, 제 1 암호화 라운드 함수 블록(610)의 출력 데이터는 중간 암호화 데이터(ED1)와 제 1 마스크 신호(M1)의 배타적 논리합 연산식의 형태를 갖는다.
제 1 암호화 라운드 함수 블록(610)의 출력 데이터는 제 2 암호화 라운드 함수 블록(620)으로 제공되고, 위와 동일한 방식에 의해 암호화 동작이 수행된다. 제 2 암호화 라운드 함수 블록(620)은 어드레스(Addr2) 및 키(Key2)를 입력받고, 최종적으로 제 1 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00109
M1)를 출력한다. 제 1 마스크 암호화 데이터는 암호화 데이터(ED)와 제 1 마스크 신호(M1)의 배타적 논리합 연산 형태를 갖는다. 제 1 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00110
M1)는 제 1 데이터 버스(도 9 참조, 560)를 통해 논리 회로(도 9 참조, 550)로 전송된다.
도 11은 도 9에 도시된 제 2 암호화 회로를 예시적으로 보여주는 블록도이다. 도 11에 도시된 제 2 암호화 회로(532)는 도 10에 도시된 제 1 암호화 회로(531)와 동일한 동작을 수행하며, 최종적으로 제 2 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00111
M2)를 출력한다. 제 2 마스크 암호화 데이터는 암호화 데이터(ED)와 제 2 마스크 신호(M2)의 배타적 논리합 연산 형태를 갖는다. 제 2 마스크 암호화 데이터(ED
Figure 112006040014256-PAT00112
M2)는 제 2 데이터 버스(도 9 참조, 570)를 통해 논리 회로(도 9 참조, 550)로 전송된다.
다시 도 9를 참조하면, 본 발명에 따른 스마트 카드(500)는 보안 회로(530)를 통해 마스크 암호화 데이터를 생성하고, 마스크 암호화 데이터를 데이터 버스를 통해 메모리로 전송한다. 또한, 본 발명에 따른 스마트 카드(500)는 논리 회로(550) 및 이중 데이터 버스(560, 570)를 통해 데이터 전송 동안에 데이터 버스에 서 발생한 에러를 검출한다. 따라서 본 발명에 따른 스마트 카드(500)는 데이터를 안전하게 보호할 수 있을 뿐만 아니라, 데이터 전송 동안에 데이터 버스에서 발생한 에러를 검출할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
상술한 바와 같이 본 발명에 따른 스마트 카드는 데이터를 안전하게 보호할 수 있을 뿐만 아니라, 데이터 전송 동안에 버스에서 발생한 에러를 검출할 수 있다.

Claims (32)

  1. 중앙 처리 장치;
    데이터를 저장하기 위한 메모리;
    키(key)를 제공하기 위한 키 스케줄러;
    상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고, 상기 메모리에 저장될 데이터를 암호화하는 암호화 회로; 및
    상기 암호화된 데이터를 상기 메모리로 전송하기 위한 데이터 버스를 포함하는 스마트 카드.
  2. 제 1 항에 있어서,
    상기 암호화 회로는 복수의 암호화 라운드 함수 블록을 가지며,
    각각의 암호화 라운드 함수 블록은 상기 중앙 처리 장치로부터 어드레스 및 상기 키 스케줄러로부터 키를 입력받고 암호화 동작을 수행하는 스마트 카드.
  3. 제 2 항에 있어서,
    상기 각각의 암호화 라운드 함수 블록은
    상기 데이터와 상기 어드레스를 배타적 논리합 연산하는 제 1 논리 게이트;
    상기 제 1 논리 게이트의 출력과 상기 키를 배타적 논리합 연산하는 제 2 논리 게이트;
    하나 또는 그 이상의 S박스를 가지며, 각각의 S박스는 상기 제 2 논리 게이트의 출력을 소정 비트 단위로 입력받고 S 연산을 수행하는 S 연산 회로; 및
    상기 S 연산 회로의 출력을 치환(permutation) 연산하는 치환 회로를 포함하는 스마트 카드.
  4. 제 3 항에 있어서,
    상기 키 스케줄러는 상기 각각의 암호화 라운드 함수 블록에 서로 다른 키를 제공하는 스마트 카드.
  5. 제 2 항에 있어서,
    상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고, 상기 메모리에 저장된 암호화 데이터를 복호화하는 복호화 회로를 더 포함하는 스마트 카드.
  6. 제 5 항에 있어서,
    상기 복호화 회로는 상기 각각의 암호화 라운드 함수 블록에 대응하는 복수의 복호화 라운드 함수 블록을 가지며, 각각의 복호화 라운드 함수 블록은 상기 중앙 처리 장치로부터 어드레스 및 상기 키 스케줄러로부터 키를 입력받고 복호화 동작을 수행하는 스마트 카드.
  7. 제 6 항에 있어서,
    상기 각각의 복호화 라운드 함수 블록은
    입력 데이터를 역치환(inverse permutation) 연산하는 역치환 회로;
    하나 또는 그 이상의 역변환 S박스를 가지며, 각각의 역변환 S박스는 상기 역치환 회로의 출력 데이터를 입력받고 역변환 S 연산하는 역변환 S회로;
    상기 역변환 S회로의 출력과 상기 어드레스를 배타적 논리합 연산하는 제 1 논리 게이트; 및
    상기 제 1 논리 게이트의 출력과 상기 키를 배타적 논리합 연산하는 제 2 논리 게이트를 포함하는 스마트 카드.
  8. 중앙 처리 장치;
    데이터를 저장하기 위한 메모리;
    제 1 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 데이터를 마스크하고, 제 1 마스크 데이터를 출력하는 제 1 논리 회로;
    제 2 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 데이터를 마스크하고, 제 2 마스크 데이터를 출력하는 제 2 논리 회로;
    상기 제 1 및 제 2 마스크 데이터를 각각 전송하기 위한 제 1 및 제 2 데이터 버스; 및
    상기 제 1 마스크 신호에 응답하여 상기 제 1 데이터 버스를 통해 전송된 제 1 마스크 데이터로부터 상기 중앙 처리 장치의 출력 데이터를 복원하는 제 3 논리 회로를 포함하되,
    상기 제 3 논리 회로는 상기 제 1 및 제 2 마스크 데이터를 입력받고, 데이터 전송 동안에 상기 제 1 및 제 2 데이터 버스에서 발생한 에러를 검출하는 스마트 카드.
  9. 제 8 항에 있어서,
    상기 제 1 논리 회로는 상기 제 1 마스크 신호 및 상기 중앙 처리 장치의 출력 데이터를 배타적 논리합 연산하고,
    상기 제 2 논리 회로는 상기 제 2 마스크 신호 및 상기 중앙 처리 장치의 출력 데이터를 배타적 논리합 연산하는 스마트 카드.
  10. 제 9 항에 있어서,
    상기 제 3 논리 회로는 상기 제 1 마스크 신호 및 상기 제 1 마스크 데이터를 배타적 논리합 연산하여, 상기 중앙 처리 장치의 출력 데이터를 복원하는 스마트 카드.
  11. 제 10 항에 있어서,
    상기 제 3 논리 회로는 상기 제 1 및 제 2 마스크 데이터를 배타적 논리합 연산하여 에러를 검출하는 스마트 카드.
  12. 제 9 항에 있어서,
    상기 제 3 논리 회로는
    상기 제 1 마스크 신호 및 상기 제 1 마스크 데이터를 배타적 논리합 연산하는 제 1 논리 게이트;
    상기 제 1 및 제 2 마스크 데이터를 배타적 논리합 연산하는 제 2 논리 게이트; 및
    상기 제 1 및 제 2 마스크 신호의 배타적 논리합 연산 값과 상기 제 2 논리 게이트의 출력 값을 비교하여 에러를 검출하는 에러 검출기를 포함하는 스마트 카드.
  13. 제 12 항에 있어서,
    상기 에러 검출기는 상기 제 1 및 제 2 마스크 신호의 배타적 논리합 연산 값과 상기 제 2 논리 게이트의 출력 값이 다를 경우에 에러 신호를 발생하는 스마트 카드.
  14. 중앙 처리 장치;
    어드레스에 의해 선택된 셀에 데이터를 저장하는 메모리;
    제 1 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 어드레스를 마스크하고, 제 1 마스크 어드레스를 출력하는 제 1 논리 회로;
    제 2 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 어드레스를 마스 크하고, 제 2 마스크 어드레스를 출력하는 제 2 논리 회로;
    상기 제 1 및 제 2 마스크 어드레스를 각각 전송하기 위한 제 1 및 제 2 어드레스 버스; 및
    상기 제 1 마스크 신호에 응답하여 상기 제 1 어드레스 버스를 통해 전송된 제 1 마스크 어드레스로부터 상기 중앙 처리 장치의 출력 어드레스를 복원하는 제 3 논리 회로를 포함하되,
    상기 제 3 논리 회로는 상기 제 1 및 제 2 마스크 어드레스를 입력받고, 어드레스 전송 동안에 상기 제 1 및 제 2 어드레스 버스에서 발생한 에러를 검출하는 스마트 카드.
  15. 제 14 항에 있어서,
    상기 제 1 논리 회로는 상기 제 1 마스크 신호 및 상기 중앙 처리 장치의 출력 어드레스를 배타적 논리합 연산하고,
    상기 제 2 논리 회로는 상기 제 2 마스크 신호 및 상기 중앙 처리 장치의 출력 어드레스를 배타적 논리합 연산하는 스마트 카드.
  16. 제 15 항에 있어서,
    상기 제 3 논리 회로는 상기 제 1 마스크 신호 및 상기 제 1 마스크 어드레스를 배타적 논리합 연산하여, 상기 중앙 처리 장치의 출력 어드레스를 복원하는 스마트 카드.
  17. 제 16 항에 있어서,
    상기 제 3 논리 회로는 상기 제 1 및 제 2 마스크 어드레스를 배타적 논리합 연산하여 에러를 검출하는 스마트 카드.
  18. 제 15 항에 있어서,
    상기 제 3 논리 회로는
    상기 제 1 마스크 신호 및 상기 제 1 마스크 어드레스를 배타적 논리합 연산하는 제 1 논리 게이트;
    상기 제 1 및 제 2 마스크 어드레스를 배타적 논리합 연산하는 제 2 논리 게이트; 및
    상기 제 1 및 제 2 마스크 신호의 배타적 논리합 연산 값과 상기 제 2 논리 게이트의 출력 값을 비교하여 에러를 검출하는 에러 검출기를 포함하는 스마트 카드.
  19. 제 18 항에 있어서,
    상기 에러 검출기는 상기 제 1 및 제 2 마스크 신호의 배타적 논리합 연산 값과 상기 제 2 논리 게이트의 출력 값이 다를 경우에 에러 신호를 발생하는 스마트 카드.
  20. 중앙 처리 장치;
    데이터를 저장하기 위한 메모리;
    키(key)를 제공하기 위한 키 스케줄러;
    제 1 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 데이터를 마스크하고 제 1 마스크 데이터를 생성하는, 상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고 상기 제 1 마스크 데이터를 암호화하는, 그리고 최종적으로 제 1 마스크 암호화 데이터를 출력하는 제 1 암호화 회로;
    제 2 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 데이터를 마스크하고 제 2 마스크 데이터를 생성하는, 상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고 상기 제 2 마스크 데이터를 암호화하는, 그리고 최종적으로 제 2 마스크 암호화 데이터를 출력하는 제 2 암호화 회로;
    상기 제 1 및 제 2 마스크 암호화 데이터를 각각 전송하기 위한 제 1 및 제 2 데이터 버스; 및
    상기 제 1 마스크 신호에 응답하여 상기 제 1 마스크 암호화 데이터로부터 암호화 데이터를 생성하고, 상기 암호화 데이터를 상기 메모리로 제공하는 논리 회로를 포함하되,
    상기 논리 회로는 상기 제 1 및 제 2 마스크 암호화 데이터를 입력받고, 데이터 전송 동안에 상기 제 1 및 제 2 데이터 버스에서 발생한 에러를 검출하는 스 마트 카드.
  21. 제 20 항에 있어서,
    상기 제 1 및 제 2 암호화 회로는 복수의 암호화 라운드 함수 블록을 가지며, 각각의 암호화 라운드 함수 블록은 상기 중앙 처리 장치로부터 어드레스 및 상기 키 스케줄러로부터 키를 입력받고 암호화 동작을 수행하는 스마트 카드.
  22. 제 21 항에 있어서,
    상기 각각의 암호화 라운드 함수 블록은
    상기 데이터와 상기 어드레스를 배타적 논리합 연산하는 제 1 논리 게이트;
    상기 제 1 논리 게이트의 출력과 상기 키를 배타적 논리합 연산하는 제 2 논리 게이트;
    하나 또는 그 이상의 S박스를 가지며, 각각의 S박스는 상기 제 2 논리 게이트의 출력을 소정 비트 단위로 입력받고 S 연산을 수행하는 S 연산 회로; 및
    상기 S 연산 회로의 출력을 치환(permutation) 연산하는 치환 회로를 포함하는 스마트 카드.
  23. 제 20 항에 있어서,
    상기 제 1 마스크 암호화 데이터는 상기 암호화 데이터와 상기 제 1 마스크 신호의 배타적 논리합 연산이고, 상기 제 2 마스크 암호화 데이터는 상기 암호화 데이터와 상기 제 2 마스크 신호의 배타적 논리합 연산인 것을 특징으로 하는 스마트 카드.
  24. 제 23 항에 있어서,
    상기 논리 회로는 상기 제 1 마스크 신호 및 상기 제 1 마스크 암호화 데이터를 배타적 논리합 연산하여 상기 암호화 데이터를 복원하는 스마트 카드.
  25. 제 24 항에 있어서,
    상기 논리 회로는 상기 제 1 및 제 2 마스크 암호화 데이터를 배타적 논리합 연산하여 에러를 검출하는 스마트 카드.
  26. 제 23 항에 있어서,
    상기 논리 회로는
    상기 제 1 마스크 신호 및 상기 제 1 마스크 암호화 데이터를 배타적 논리합 연산하는 제 1 논리 게이트;
    상기 제 1 및 제 2 마스크 암호화 데이터를 배타적 논리합 연산하는 제 2 논리 게이트; 및
    상기 제 1 및 제 2 마스크 신호의 배타적 논리합 연산 값과 상기 제 2 논리 게이트의 출력 값을 비교하여 에러를 검출하는 에러 검출기를 포함하는 스마트 카드.
  27. 제 20 항에 있어서,
    상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고, 상기 메모리로부터 입력된 암호화 데이터를 복호화하는 복호화 회로를 더 포함하는 스마트 카드.
  28. 스마트 카드의 데이터 보안 방법에 있어서:
    중앙 처리 장치로부터 제공된 어드레스 및 키 스케줄러로부터 제공된 키를 입력받고, 메모리에 저장될 데이터를 암호화하는 단계; 및
    상기 암호화된 데이터를 데이터 버스를 통해 상기 메모리로 전송하는 단계를 포함하는 데이터 보안 방법.
  29. 제 28 항에 있어서,
    상기 암호화 단계는
    상기 데이터 및 상기 어드레스를 배타적 논리합 연산하고, 그 연산 결과와 상기 키를 배타적 논리합 연산하는 단계;
    상기 배타적 논리합 연산한 데이터를 소정 비트 단위로 등분하고, 미리 정의된 테이블에 따라 S 변환을 수행하는 단계; 및
    상기 S 변환된 데이터를 치환(permutation) 연산하는 단계를 포함하는 데이터 보안 방법.
  30. 제 28 항에 있어서,
    상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고, 상기 암호화된 데이터를 복호화하는 단계를 더 포함하는 데이터 보안 방법.
  31. 스마트 카드의 데이터 보안 방법에 있어서:
    제 1 및 제 2 마스크 신호에 응답하여 중앙 처리 장치의 출력 데이터를 마스크하고, 제 1 및 제 2 마스크 데이터를 출력하는 단계;
    상기 제 1 및 제 2 마스크 데이터를 각각 제 1 및 제 2 데이터 버스를 통해 전송하는 단계;
    상기 제 1 마스크 신호에 응답하여 상기 제 1 데이터 버스를 통해 전송된 제 1 마스크 데이터로부터 상기 중앙 처리 장치의 출력 데이터를 복원하는 단계; 및
    상기 제 1 및 제 2 마스크 데이터를 입력받고, 데이터 전송 동안에 상기 제 1 및 제 2 데이터 버스에서 발생한 에러를 검출하는 단계를 포함하는 데이터 보안 방법.
  32. 스마트 카드의 어드레스 보안 방법에 있어서:
    제 1 및 제 2 마스크 신호에 응답하여 중앙 처리 장치의 출력 어드레스를 마스크하고, 제 1 및 제 2 마스크 어드레스를 출력하는 단계;
    상기 제 1 및 제 2 마스크 어드레스를 각각 제 1 및 제 2 어드레스 버스를 통해 전송하는 단계;
    상기 제 1 마스크 신호에 응답하여 상기 제 1 어드레스 버스를 통해 전송된 제 1 마스크 어드레스로부터 상기 중앙 처리 장치의 출력 어드레스를 복원하는 단계; 및
    상기 제 1 및 제 2 마스크 어드레스를 입력받고, 어드레스 전송 동안에 상기 제 1 및 제 2 어드레스 버스에서 발생한 에러를 검출하는 단계를 포함하는 어드레스 보안 방법.
KR1020060051033A 2006-06-07 2006-06-07 스마트 카드 및 그것의 데이터 보안 방법 KR100837270B1 (ko)

Priority Applications (10)

Application Number Priority Date Filing Date Title
KR1020060051033A KR100837270B1 (ko) 2006-06-07 2006-06-07 스마트 카드 및 그것의 데이터 보안 방법
US11/785,281 US8332634B2 (en) 2006-06-07 2007-04-16 Cryptographic systems for encrypting input data using an address associated with the input data, error detection circuits, and methods of operating the same
DE102007026977A DE102007026977B4 (de) 2006-06-07 2007-06-05 Kryptographisches System und zugehöriges Betriebsverfahren und Computerprogrammprodukt
DE102007063755.3A DE102007063755B4 (de) 2006-06-07 2007-06-05 Fehlererkennungsschaltung und zugehöriges Betriebsverfahren und Computerprogrammprodukt
CN2007101082808A CN101086769B (zh) 2006-06-07 2007-06-07 用于加密输入数据的密码***及其操作方法
JP2007151965A JP2007328789A (ja) 2006-06-07 2007-06-07 入力データに関するアドレスを使用して入力データを符号化するための暗号システム、エラー検出回路、及びそれの動作方法
GB0710989A GB2438972B (en) 2006-06-07 2007-06-07 Cryptographic systems for encrypting input data using an address associated with the input data and methods of operating the same
GB1006763A GB2468419B (en) 2006-06-07 2007-06-07 Cyrptographic systems for encrypting input data, error detection circuits, and methods of operating the same
FR0755535A FR2902252A1 (fr) 2006-06-07 2007-06-07 Systemes cryptographiques pour chiffrer des donnees d'entree en utilisant une adresse associee aux donnees d'entree, circuits de detection d'erreur et procedes pour les faire fonctionner.
FR0707792A FR2906665A1 (fr) 2006-06-07 2007-11-06 Systemes cryptographiques pour chiffrer des donnees d'entree en utilisant une adresse aux donnees d'entree, circuits de detection d'erreur et procedes pour les faire fonctionner

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060051033A KR100837270B1 (ko) 2006-06-07 2006-06-07 스마트 카드 및 그것의 데이터 보안 방법

Publications (2)

Publication Number Publication Date
KR20070117172A true KR20070117172A (ko) 2007-12-12
KR100837270B1 KR100837270B1 (ko) 2008-06-11

Family

ID=38822009

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060051033A KR100837270B1 (ko) 2006-06-07 2006-06-07 스마트 카드 및 그것의 데이터 보안 방법

Country Status (4)

Country Link
US (1) US8332634B2 (ko)
KR (1) KR100837270B1 (ko)
CN (1) CN101086769B (ko)
DE (1) DE102007063755B4 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102008056383A1 (de) 2007-11-16 2009-06-10 Lg Electronics Inc. Dampf-Trocknungsguttrockner
KR101537018B1 (ko) * 2008-10-01 2015-07-17 삼성전자주식회사 보안 메모리 인터페이스, 이를 포함하는 시스템 및 스마트카드

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009043139A1 (en) * 2007-10-01 2009-04-09 Research In Motion Limited Substitution table masking for cryptographic processes
ES2366753T3 (es) * 2007-12-13 2011-10-25 Oberthur Technologies Método de procesamiento criptográfico de datos, en particular con la ayuda de una caja s, dispositivo y programas asociados.
FR2925968B1 (fr) * 2007-12-26 2011-06-03 Ingenico Sa Procede de securisation d'un microprocesseur, programme d'ordinateur et dispositif correspondants
FR2935503A1 (fr) * 2008-08-28 2010-03-05 St Microelectronics Rousset Protection d'un algorithme de chiffrement
US9336160B2 (en) * 2008-10-30 2016-05-10 Qualcomm Incorporated Low latency block cipher
KR101685633B1 (ko) 2009-01-05 2016-12-12 삼성전자주식회사 메모리 시스템
WO2010109516A1 (ja) 2009-03-23 2010-09-30 富士通株式会社 データ処理装置及びデータ処理方法
FR2952735B1 (fr) * 2009-11-18 2011-12-09 St Microelectronics Rousset Procede et dispositif de detection d'attaques par injection de fautes
EP2326042B1 (fr) * 2009-11-18 2013-04-03 STMicroelectronics (Rousset) SAS Procédé de détection d'une attaque par injection de fautes
FR2960728B1 (fr) * 2010-05-26 2016-04-15 Oberthur Technologies Procede de determination d'une representation d'un produit et procede d'evaluation d'une fonction
US20120063597A1 (en) * 2010-09-15 2012-03-15 Uponus Technologies, Llc. Apparatus and associated methodology for managing content control keys
US9128876B2 (en) * 2011-12-06 2015-09-08 Honeywell International Inc. Memory location specific data encryption key
FR2984553B1 (fr) 2011-12-15 2015-11-06 Proton World Int Nv Procede et dispositif de detection de fautes
US9270460B2 (en) * 2011-12-22 2016-02-23 Intel Corporation Instructions to perform JH cryptographic hashing in a 256 bit data path
CN103368730A (zh) * 2012-04-09 2013-10-23 丛树业 八种数字信息的无逻辑硬加密方法组合
KR101929984B1 (ko) * 2012-05-17 2018-12-18 삼성전자주식회사 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법
US9571269B2 (en) 2012-06-28 2017-02-14 Nec Corporation Encryption device, encryption method and program
WO2014091559A1 (ja) * 2012-12-11 2014-06-19 三菱電機株式会社 統合セキュリティ装置および統合セキュリティ装置に用いられる信号処理方法
US10142099B2 (en) * 2013-01-11 2018-11-27 Qualcomm Incorporated Method and apparatus for a computable, large, variable and secure substitution box
CN103199998A (zh) * 2013-04-17 2013-07-10 天津大学 五种数字信息的无逻辑硬加密方法组合
US10146701B2 (en) * 2014-08-29 2018-12-04 The Boeing Company Address-dependent key generation with a substitution-permutation network
US9531384B1 (en) * 2014-12-01 2016-12-27 University Of South Florida Adiabatic dynamic differential logic for differential power analysis resistant secure integrated circuits
US10013363B2 (en) 2015-02-09 2018-07-03 Honeywell International Inc. Encryption using entropy-based key derivation
CN107547194A (zh) * 2016-06-28 2018-01-05 埃沙尔公司 免受侧信道分析的保护方法和设备
US10530567B2 (en) * 2016-10-05 2020-01-07 Megachips Corporation Encryption device and memory device
US10708073B2 (en) 2016-11-08 2020-07-07 Honeywell International Inc. Configuration based cryptographic key generation
CN109804596B (zh) * 2016-12-09 2023-05-09 密码研究公司 具有加掩码的输入的可编程块密码器
US10673616B2 (en) 2017-01-11 2020-06-02 Qualcomm Incorporated Lightweight mitigation against first-order probing side-channel attacks on block ciphers
US20190007223A1 (en) * 2017-07-01 2019-01-03 Intel Corporation Techniques to power encryption circuitry
CN109753821B (zh) 2017-11-01 2022-03-15 瑞昱半导体股份有限公司 数据存取装置及方法
FR3101983B1 (fr) * 2019-10-11 2021-11-12 St Microelectronics Grenoble 2 Détermination d'un bit indicateur
CN111079098B (zh) * 2019-12-20 2023-07-14 无锡矽杰微电子有限公司 一种mcu程序加密解密方法

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4168396A (en) * 1977-10-31 1979-09-18 Best Robert M Microprocessor for executing enciphered programs
US4772845A (en) * 1987-01-15 1988-09-20 Raytheon Company Cable continuity testor including a sequential state machine
DE69124709T2 (de) * 1990-03-15 1997-05-28 At & T Corp Eingebaute Selbstprüfung für Analog-Digitalumsetzer
JPH0476749A (ja) 1990-07-19 1992-03-11 Toshiba Corp セキュリティ回路
US5166977A (en) * 1991-05-31 1992-11-24 Encrypto, Inc. Protocol converter for a secure fax transmission system
US5276690A (en) * 1992-01-30 1994-01-04 Intel Corporation Apparatus utilizing dual compare logic for self checking of functional redundancy check (FRC) logic
JPH06208516A (ja) 1992-10-27 1994-07-26 Toshiba Corp セキュリティ回路
DE4403899B4 (de) * 1994-02-08 2007-12-13 Robert Bosch Gmbh Vorrichtung zur seriellen Übertragung von Daten zwischen mindestens zwei Stationen
JP3179004B2 (ja) * 1995-10-17 2001-06-25 富士通株式会社 論理回路検証システムおよび方法
US6134631A (en) * 1996-08-19 2000-10-17 Hyundai Electronics America, Inc. Non-volatile memory with embedded programmable controller
DE19708616C2 (de) * 1997-03-03 1999-09-02 Siemens Ag Elektronische Datenverarbeitungseinrichtung und -system
US5963053A (en) * 1997-10-09 1999-10-05 Pericom Semiconductor Corp. Self-biasing CMOS PECL receiver with wide common-mode range and multi-level-transmit to binary decoder
US6061449A (en) * 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
US5896337A (en) * 1998-02-23 1999-04-20 Micron Technology, Inc. Circuits and methods for multi-level data through a single input/ouput pin
US6438678B1 (en) * 1998-06-15 2002-08-20 Cisco Technology, Inc. Apparatus and method for operating on data in a data communications system
ATE229207T1 (de) * 1998-09-30 2002-12-15 Koninkl Philips Electronics Nv Datenträgervorrichtung mit datenbus deren energieverbrauch unabhängig ist von den über den datenbus gesendeten daten
CA2391826A1 (en) * 1999-06-10 2000-12-21 Belle Gate Investment B.V. Arrangements storing different versions of a set of data in separate memory areas and method for updating a set of data in a memory
JP2001195441A (ja) * 2000-01-13 2001-07-19 Nec Ic Microcomput Syst Ltd 出力ドントケア指定方法並びにこれを用いた処理装置、処理方法及び処理プログラムを記録した記録媒体
FR2817683B1 (fr) * 2000-12-05 2003-01-31 Bull Sa Procede de codage/decodage de donnees numeriques transmises sur une liaison serie, notamment du type dit "8b/10b", et dispositif de mise en oeuvre
RU2294057C2 (ru) 2001-01-16 2007-02-20 Награкард С.А. Способ хранения зашифрованных данных
US6700827B2 (en) * 2001-02-08 2004-03-02 Integrated Device Technology, Inc. Cam circuit with error correction
DE10115118A1 (de) * 2001-03-27 2002-10-10 Philips Corp Intellectual Pty Verfahren zur Übertragung von Daten über einen Datenbus
JP2002328845A (ja) * 2001-05-07 2002-11-15 Fujitsu Ltd 半導体集積回路及びicカードのセキュリティー保護方法
FR2825877B1 (fr) * 2001-06-12 2003-09-19 Canal Plus Technologies Procede de controle d'acces a un programme crypte
WO2003030441A2 (en) 2001-10-03 2003-04-10 Koninklijke Philips Electronics N.V. Memory encryption system and method
KR20030055745A (ko) * 2001-12-27 2003-07-04 주식회사 하이닉스반도체 전자칩의 외부공격 탐지장치
FR2838892A1 (fr) 2002-04-23 2003-10-24 Scm Microsystems Gmbh Procede et dispositif de chiffrement de donnees numeriques
EP1387519A3 (fr) 2002-07-09 2004-02-18 Cp8 Procédé de sécurisation d'un ensemble électronique contre des attaques par introduction d'erreurs
KR100583635B1 (ko) * 2003-01-24 2006-05-26 삼성전자주식회사 다수의 동작 모드들을 지원하는 암호화 장치
DE10345378B4 (de) 2003-09-30 2010-08-12 Infineon Technologies Ag Verfahren und Vorrichtung zur Ver-/Entschlüsselung
DE10345454A1 (de) * 2003-09-30 2005-04-28 Infineon Technologies Ag Wortindividuelle Schlüsselerzeugung
KR100604828B1 (ko) * 2004-01-09 2006-07-28 삼성전자주식회사 펌웨어 암호화 방법 및 해독 방법과 그 처리 장치
FR2867325A1 (fr) 2004-03-02 2005-09-09 St Microelectronics Sa Dispositif de protection contre l'injection d'erreur dans un bloc logique asynchrone d'un module logique elementaire
EP1578053A1 (en) 2004-03-18 2005-09-21 STMicroelectronics Limited Data obfuscation
ATE407494T1 (de) * 2004-07-06 2008-09-15 Proton World Int Nv Stromverschlüsselung des inhalts eines speichers, welcher ausserhalb eines prozessors angeordnet ist
US6943638B1 (en) * 2005-01-07 2005-09-13 Toppoly Optoelectronics Corp. Voltage controlled oscillator and electronic system using the same
KR100888614B1 (ko) * 2005-02-22 2009-03-17 삼성전자주식회사 보안 알고리즘 회로 및 데이터 암호화 방법
US20070019805A1 (en) * 2005-06-28 2007-01-25 Trustees Of Boston University System employing systematic robust error detection coding to protect system element against errors with unknown probability distributions
KR100613464B1 (ko) * 2005-07-06 2006-08-22 주식회사 하이닉스반도체 반도체 장치의 데이터 출력장치 및 출력방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102008056383A1 (de) 2007-11-16 2009-06-10 Lg Electronics Inc. Dampf-Trocknungsguttrockner
KR101537018B1 (ko) * 2008-10-01 2015-07-17 삼성전자주식회사 보안 메모리 인터페이스, 이를 포함하는 시스템 및 스마트카드

Also Published As

Publication number Publication date
US8332634B2 (en) 2012-12-11
CN101086769A (zh) 2007-12-12
KR100837270B1 (ko) 2008-06-11
CN101086769B (zh) 2012-05-09
DE102007063755B4 (de) 2014-01-09
US20070286413A1 (en) 2007-12-13

Similar Documents

Publication Publication Date Title
KR100837270B1 (ko) 스마트 카드 및 그것의 데이터 보안 방법
US5828753A (en) Circuit and method for ensuring interconnect security within a multi-chip integrated circuit package
US7201326B2 (en) Information processing device
RU2251726C2 (ru) Микропроцессорное устройство с шифрованием
KR100445406B1 (ko) 데이터 암호화 장치 및 그 방법
CN104252881B (zh) 半导体集成电路及***
US7454017B2 (en) Information processing unit
CN100480946C (zh) 用于在计算机***内为sim设备提供受信通道的方法和装置
CN102737202B (zh) 利用迭代加密/解密密钥更新的指令加密/解密设备和方法
CN105790927B (zh) 一种总线分级加密***
CN105320895A (zh) 用于联机加密处理的高性能自主硬件引擎
JP2006107274A (ja) ハッシュ関数演算システム、暗号化システムおよび不正解析・改竄防止システム
US8904193B2 (en) Method for operating a security device
US8249253B2 (en) Semiconductor integrated circuit having encrypter/decrypter function for protecting input/output data transmitted on internal bus
WO2008071222A1 (en) Protecting a programmable memory against unauthorized modification
KR20010048160A (ko) Pc 기반의 유.에스.비. 보안 모듈과 암호칩을 사용한정보 보호 장치
JP2007328789A (ja) 入力データに関するアドレスを使用して入力データを符号化するための暗号システム、エラー検出回路、及びそれの動作方法
JP2001338271A (ja) Icカード及びicカード利用システム
WO2006046484A1 (ja) 認証方法
US9069988B2 (en) Detecting key corruption
JP4435593B2 (ja) 耐タンパー情報処理装置
JPWO2005027403A1 (ja) 情報処理装置
CN114520740B (zh) 一种加密方法、装置、设备及存储介质
EP2334005A1 (en) Integrated circuit and method of producing same
Zhao Research on Encryption Technology in Contactless IC Card

Legal Events

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

FPAY Annual fee payment

Payment date: 20140530

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150601

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160531

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 12