KR100837270B1 - 스마트 카드 및 그것의 데이터 보안 방법 - Google Patents
스마트 카드 및 그것의 데이터 보안 방법 Download PDFInfo
- Publication number
- KR100837270B1 KR100837270B1 KR1020060051033A KR20060051033A KR100837270B1 KR 100837270 B1 KR100837270 B1 KR 100837270B1 KR 1020060051033 A KR1020060051033 A KR 1020060051033A KR 20060051033 A KR20060051033 A KR 20060051033A KR 100837270 B1 KR100837270 B1 KR 100837270B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- mask
- address
- processing unit
- central processing
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/004—Countermeasures against attacks on cryptographic mechanisms for fault attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record 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/067—Record 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/07—Record 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/073—Special arrangements for circuits, e.g. for protecting identification code in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record 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/067—Record 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/07—Record 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record 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/067—Record 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/07—Record 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/077—Constructional details, e.g. mounting of circuits in the carrier
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details 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
도 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)의 출력식은 DA1이다. 여기에서, D는 데이터(Data)를 의미하고, A1은 어드레스(Addr1)를 의미하여, 은 배타적 논리합 연산(XOR)을 의미한다. 제 2 논리 게이트(212)는 제 1 논리 게이트(211)의 출력 데이터 및 8_비트 키(Key1)를 입력받고, 이들을 배타적 논리합 연산(XOR)을 수행한다. 제 2 논리 게이트(212)의 출력식은 DA1K1 이다. 여기에서, 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)의 출력식은 다음과 같이 표현될 수 있다.
여기에서, S1 및 S2 박스(214)의 출력 데이터는 각각 4_비트이다. 그리고 수학식 1에서, (1)식은 상위 4_비트이고, (2)식은 하위 4_비트이다.
치환 회로(216)는 S1 및 S2 박스(214, 215)의 출력 데이터를 입력받고, P(permutation) 연산을 수행한다. 치환 회로(216)의 출력식은 다음과 같이 표현될 수 있다.
여기에서, ∥은 연접(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(DA1K1)∥S2(DA1K1)라고 할 때, 역 치환 회로(321)의 출력식은 다음과 같이 표현될 수 있다.
역 치환 회로(321)의 출력 데이터는 양분되어, 역 S1 박스(322) 및 역 S2 박스(323)로 입력된다. 역 치환 회로(321)의 상위 4_비트는 역 S1 박스(322)로 입력되고, 하위 4_비트(323)는 역 S2 박스(323)로 입력된다. 즉, 수학식 3에서, S1(DA1K1)는 역 S1 박스(322)로 입력되고, S2(DA1K1)는 역 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)의 출력식은 다음과 같이 표현될 수 있다.
여기에서, 역 S1 박스(322) 및 역 S2 박스(323)의 출력 데이터는 각각 4_비트이다. 그리고 수학식 4에서, (1)식은 상위 4_비트이고, (2)식은 하위 4_비트이다.
데이터 레지스터(324)는 역 S1 박스(322) 및 역 S2 박스(323)로부터 출력되는 8_비트 데이터를 저장한다. 데이터 레지스터(324)의 출력식은 DA1K1이다. 제 1 논리 게이트(325)는 데이터 레지스터(324)의 출력 데이터 및 어드레스(Addr1)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 제 1 논리 게이트(325)의 출력식은 DK1이다. 제 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 마스크 데이터(DM1)를 출력한다. 여기에서, D는 중앙 처리 장치(410)의 출력 데이터(Data)를 의미한다. 제 1 마스크 데이터(DM1)는 제 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 마스크 데이터(DM2)를 출력한다. 제 2 마스크 데이터(DM2)는 제 2 데이터 버스(470)를 통해 제 3 논리 회로(450)로 전송된다. 제 2 논리 회로(440)는 논리 게이트(441)와 레지스터(442)를 포함한다. 논리 게이트(441)는 제 2 마스크 신호(M2)와 중앙 처리 장치(410)의 출력 데이터(Data)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 레지스터(442)는 논리 게이트(441)의 출력 데이터를 저장한다.
제 3 논리 회로(450)는 제 1 마스크 신호(M1)에 응답하여 제 1 데이터 버스(460)를 통해 전송된 제 1 마스크 데이터(DM1)로부터 중앙 처리 장치(410)의 출력 데이터를 복원한다. 또한, 제 3 논리 회로(450)는 제 1 및 제 2 데이터 버스(460, 470)를 통해 전송된 제 1 및 제 2 마스크 데이터(DM1, DM2)를 비교하여, 데이터 전송 동안에 제 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 마스크 데이터(DM1, DM2)를 저장한다. 제 1 논리 게이트(453)는 제 1 마스크 신호(M1) 및 제 1 마스크 데이터(DM1)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 제 1 논리 게이트(453)는 중앙 처리 장치(410)의 출력 데이터(Data)를 복원한다. 제 2 논리 게이트(454)는 제 1 및 제 2 마스크 데이 터(DM1, DM2)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 제 2 논리 게이트(454)의 출력식은 M1M2이다.
에러 검출기(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)에 의해 마스크된 데이터(DM1, DM2)이다. 본 발명에 따른 스마트 카드(400)는 서로 다른 두 개의 데이터 버스(460, 470)를 통해 전송되는 서로 다른 마스크 데이터(DM1, DM2)를 비교하여, 데이터 전송 동안에 데이터 버스에서 발생한 에러를 검출한다. 본 발명에 따른 스마트 카 드(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 마스크 암호화 데이터(EDM1)가 전송되고, 제 2 데이터 버스(570)를 통해서 제 2 마스크 암호화 데이터(EDM2)가 전송된다. 여기에서, ED는 암호화된 데이터(Encrypted Data)를 의미한다.
스마트 카드(500)는 마스크 암호화 데이터를 생성하거나 암호화된 데이터를 복호화하기 위해 보안 회로(530)를 포함하고 있다. 보안 회로(530)는 제 1 및 제 2 암호화 회로(531, 532), 복호화 회로(533)를 포함한다.
제 1 암호화 회로(531)는 제 1 마스크 신호(M1) 및 데이터(Data)를 입력받고, 제 1 마스크 데이터를 생성한다. 그리고 제 1 암호화 회로(531)는 제 1 마스크 데이터 어드레스(Addr), 키(Key)를 입력받고, 제 1 마스크 암호화 데이터(EDM1)를 출력한다. 제 1 마스크 암호화 데이터(EDM1)는 제 1 데이터 버스(560)를 통해 논리 회로(550)로 전송된다.
제 1 암호화 회로(531)는 제 1 마스크 신호(M1) 및 데이터(Data)를 입력받고, 제 1 마스크 데이터를 생성한다. 그리고 제 1 암호화 회로(531)는 제 1 마스크 데이터, 어드레스(Addr), 키(Key)를 입력받고, 제 1 마스크 암호화 데이터(EDM1)를 출력한다. 제 1 마스크 암호화 데이터(EDM1)는 제 1 데이터 버스(560)를 통해 논리 회로(550)로 전송된다. 제 1 암호화 회로(531)의 구성 및 동작 원리는 도 8을 참조하여 상세히 설명된다.
제 2 암호화 회로(532)는 제 1 마스크 신호(M2) 및 데이터(Data)를 입력받고, 제 2 마스크 데이터를 생성한다. 그리고 제 2 암호화 회로(532)는 제 2 마스크 데이터, 어드레스(Addr), 키(Key)를 입력받고, 제 2 마스크 암호화 데이터(EDM2)를 출력한다. 제 2 마스크 암호화 데이터(EDM2)는 제 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 마스크 암호화 데이터(EDM1, EDM2)를 각각 저장한다.
제 1 논리 게이트(553)는 제 1 마스크 신호(M1) 및 제 1 마스크 암호화 데이터(EDM1)를 배타적 논리합 연산(XOR)하고, 암호화 데이터(ED)를 출력한다. 암호화 데이터(ED)는 최종적으로 메모리(520)에 저장된다. 제 2 논리 게이트(554)는 제 1 및 제 2 마스크 암호화 데이터(EDM1, EDM2)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 제 2 논리 게이트(554)의 출력식은 M1M2이다.
에러 검출기(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 마스크 데이터(DM1)를 출력한다. 라운드 함수 블록(610, 620)은 논리 회로(605) 의 출력, 어드레스(Addr), 키(Key)를 입력받고, 최종적으로 제 1 마스크 암호화 데이터(EDM1)를 출력한다.
도 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 마스크 데이터(DM1) 및 어드레스(Addr1)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 제 1 논리 게이트(211)의 출력식은 DM1A1이다. 제 2 논리 게이트(612)는 제 1 논리 게이트(611)의 출력 및 키(Key1)를 입력받고, 배타적 논리합 연산(XOR)을 수행한다. 제 2 논리 게이트(612)의 출력식은 DM1A1K1이다. 데이터 레지스터(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)의 출력식은 EDM1 형식을 가져야 한다. 제 1 암호화 회로(531)의 출력식은 EDM1 형식을 가질 때, 논리 회로(550)는 제 1 마스크 신호(M1)를 사용하여 암호화 데이터(ED)를 복원할 수 있게 된다. 그러나 제 1 암호화 회로(531)의 S 박스는 비선형성을 갖기 때문에, S 연산 과정에서 마스크 신호(M1)가 뒤섞일 수 있다. 이를 방지하기 위해 제 1 암호화 회로(531)는 새로운 S 연산, 즉 S' 연산을 사용한다. S' 연산을 구하는 과정은 다음과 같다.
먼저, S1' 및 S2' 박스(614)의 출력식은 수학식 5와 같이 표현될 수 있다.
여기에서, (1)식은 S1' 박스(614)의 출력으로서 상위 4_비트이고, (2)식은 S2' 박스(615)의 출력으로서 하위 4_비트이다.
치환 회로(616)는 S1' 및 S2' 박스(614, 615)의 출력 데이터를 입력받고, P(permutation) 연산을 수행한다. 치환 회로(616)는 선형성을 갖기 때문에 도 4의 치환 회로(216)와 동일한 P 연산을 수행한다. 치환 회로(616)의 출력식이 중간 암호화 데이터(ED)와 제 1 마스크 신호(M1)의 배타적 논리합 연산식의 형태를 갖기 위해서는, 다음 관계식을 만족해야 한다.
따라서, 치환 회로(616)의 출력식은 다음과 같은 수학식으로 표현된다.
여기에서, P[S1(i)∥S2(i)]는 수학식 2에서 설명한 암호화 데이터(ED), 정확하게는 중간 암호화 데이터(ED1)이다.
위의 수학식 7에서 보는 바와 같이, 제 1 암호화 라운드 함수 블록(610)의 출력 데이터는 중간 암호화 데이터(ED1)와 제 1 마스크 신호(M1)의 배타적 논리합 연산식의 형태를 갖는다.
제 1 암호화 라운드 함수 블록(610)의 출력 데이터는 제 2 암호화 라운드 함수 블록(620)으로 제공되고, 위와 동일한 방식에 의해 암호화 동작이 수행된다. 제 2 암호화 라운드 함수 블록(620)은 어드레스(Addr2) 및 키(Key2)를 입력받고, 최종적으로 제 1 마스크 암호화 데이터(EDM1)를 출력한다. 제 1 마스크 암호화 데이터는 암호화 데이터(ED)와 제 1 마스크 신호(M1)의 배타적 논리합 연산 형태를 갖는다. 제 1 마스크 암호화 데이터(EDM1)는 제 1 데이터 버스(도 9 참조, 560)를 통해 논리 회로(도 9 참조, 550)로 전송된다.
도 11은 도 9에 도시된 제 2 암호화 회로를 예시적으로 보여주는 블록도이다. 도 11에 도시된 제 2 암호화 회로(532)는 도 10에 도시된 제 1 암호화 회로(531)와 동일한 동작을 수행하며, 최종적으로 제 2 마스크 암호화 데이터(EDM2)를 출력한다. 제 2 마스크 암호화 데이터는 암호화 데이터(ED)와 제 2 마스크 신호(M2)의 배타적 논리합 연산 형태를 갖는다. 제 2 마스크 암호화 데이터(EDM2)는 제 2 데이터 버스(도 9 참조, 570)를 통해 논리 회로(도 9 참조, 550)로 전송된다.
다시 도 9를 참조하면, 본 발명에 따른 스마트 카드(500)는 보안 회로(530)를 통해 마스크 암호화 데이터를 생성하고, 마스크 암호화 데이터를 데이터 버스를 통해 메모리로 전송한다. 또한, 본 발명에 따른 스마트 카드(500)는 논리 회로(550) 및 이중 데이터 버스(560, 570)를 통해 데이터 전송 동안에 데이터 버스에 서 발생한 에러를 검출한다. 따라서 본 발명에 따른 스마트 카드(500)는 데이터를 안전하게 보호할 수 있을 뿐만 아니라, 데이터 전송 동안에 데이터 버스에서 발생한 에러를 검출할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
상술한 바와 같이 본 발명에 따른 스마트 카드는 데이터를 안전하게 보호할 수 있을 뿐만 아니라, 데이터 전송 동안에 버스에서 발생한 에러를 검출할 수 있다.
Claims (32)
- 중앙 처리 장치;데이터를 저장하기 위한 메모리;키(key)를 제공하기 위한 키 스케줄러;상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고, 상기 메모리에 저장될 데이터를 암호화하는 암호화 회로; 및상기 암호화된 데이터를 상기 메모리로 전송하기 위한 데이터 버스를 포함하되,상기 암호화 회로는 복수의 암호화 라운드 함수 블록을 가지며, 각각의 암호화 라운드 함수 블록은 상기 중앙 처리 장치로부터 어드레스 및 상기 키 스케줄러로부터 키를 입력받고 암호화 동작을 수행하는 스마트 카드.
- 삭제
- 제 1 항에 있어서,상기 각각의 암호화 라운드 함수 블록은상기 데이터와 상기 어드레스를 배타적 논리합 연산하는 제 1 논리 게이트;상기 제 1 논리 게이트의 출력과 상기 키를 배타적 논리합 연산하는 제 2 논리 게이트;하나 또는 그 이상의 S박스를 가지며, 각각의 S박스는 상기 제 2 논리 게이트의 출력을 소정 비트 단위로 입력받고 S 연산을 수행하는 S 연산 회로; 및상기 S 연산 회로의 출력을 치환(permutation) 연산하는 치환 회로를 포함하는 스마트 카드.
- 제 3 항에 있어서,상기 키 스케줄러는 상기 각각의 암호화 라운드 함수 블록에 서로 다른 키를 제공하는 스마트 카드.
- 제 1 항에 있어서,상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고, 상기 메모리에 저장된 암호화 데이터를 복호화하는 복호화 회로를 더 포함하는 스마트 카드.
- 제 5 항에 있어서,상기 복호화 회로는 상기 각각의 암호화 라운드 함수 블록에 대응하는 복수의 복호화 라운드 함수 블록을 가지며, 각각의 복호화 라운드 함수 블록은 상기 중앙 처리 장치로부터 어드레스 및 상기 키 스케줄러로부터 키를 입력받고 복호화 동작을 수행하는 스마트 카드.
- 제 6 항에 있어서,상기 각각의 복호화 라운드 함수 블록은입력 데이터를 역치환(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 데이터 버스에서 발생한 에러를 검출하는 스마트 카드.
- 제 8 항에 있어서,상기 제 1 논리 회로는 상기 제 1 마스크 신호 및 상기 중앙 처리 장치의 출력 데이터를 배타적 논리합 연산하고,상기 제 2 논리 회로는 상기 제 2 마스크 신호 및 상기 중앙 처리 장치의 출력 데이터를 배타적 논리합 연산하는 스마트 카드.
- 제 9 항에 있어서,상기 제 3 논리 회로는 상기 제 1 마스크 신호 및 상기 제 1 마스크 데이터를 배타적 논리합 연산하여, 상기 중앙 처리 장치의 출력 데이터를 복원하는 스마트 카드.
- 제 10 항에 있어서,상기 제 3 논리 회로는 상기 제 1 및 제 2 마스크 데이터를 배타적 논리합 연산하여 에러를 검출하는 스마트 카드.
- 제 9 항에 있어서,상기 제 3 논리 회로는상기 제 1 마스크 신호 및 상기 제 1 마스크 데이터를 배타적 논리합 연산하는 제 1 논리 게이트;상기 제 1 및 제 2 마스크 데이터를 배타적 논리합 연산하는 제 2 논리 게이트; 및상기 제 1 및 제 2 마스크 신호의 배타적 논리합 연산 값과 상기 제 2 논리 게이트의 출력 값을 비교하여 에러를 검출하는 에러 검출기를 포함하는 스마트 카드.
- 제 12 항에 있어서,상기 에러 검출기는 상기 제 1 및 제 2 마스크 신호의 배타적 논리합 연산 값과 상기 제 2 논리 게이트의 출력 값이 다를 경우에 에러 신호를 발생하는 스마트 카드.
- 중앙 처리 장치;어드레스에 의해 선택된 셀에 데이터를 저장하는 메모리;제 1 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 어드레스를 마스크하고, 제 1 마스크 어드레스를 출력하는 제 1 논리 회로;제 2 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 어드레스를 마스 크하고, 제 2 마스크 어드레스를 출력하는 제 2 논리 회로;상기 제 1 및 제 2 마스크 어드레스를 각각 전송하기 위한 제 1 및 제 2 어드레스 버스; 및상기 제 1 마스크 신호에 응답하여 상기 제 1 어드레스 버스를 통해 전송된 제 1 마스크 어드레스로부터 상기 중앙 처리 장치의 출력 어드레스를 복원하는 제 3 논리 회로를 포함하되,상기 제 3 논리 회로는 상기 제 1 및 제 2 마스크 어드레스를 입력받고, 어드레스 전송 동안에 상기 제 1 및 제 2 어드레스 버스에서 발생한 에러를 검출하는 스마트 카드.
- 제 14 항에 있어서,상기 제 1 논리 회로는 상기 제 1 마스크 신호 및 상기 중앙 처리 장치의 출력 어드레스를 배타적 논리합 연산하고,상기 제 2 논리 회로는 상기 제 2 마스크 신호 및 상기 중앙 처리 장치의 출력 어드레스를 배타적 논리합 연산하는 스마트 카드.
- 제 15 항에 있어서,상기 제 3 논리 회로는 상기 제 1 마스크 신호 및 상기 제 1 마스크 어드레스를 배타적 논리합 연산하여, 상기 중앙 처리 장치의 출력 어드레스를 복원하는 스마트 카드.
- 제 16 항에 있어서,상기 제 3 논리 회로는 상기 제 1 및 제 2 마스크 어드레스를 배타적 논리합 연산하여 에러를 검출하는 스마트 카드.
- 제 15 항에 있어서,상기 제 3 논리 회로는상기 제 1 마스크 신호 및 상기 제 1 마스크 어드레스를 배타적 논리합 연산하는 제 1 논리 게이트;상기 제 1 및 제 2 마스크 어드레스를 배타적 논리합 연산하는 제 2 논리 게이트; 및상기 제 1 및 제 2 마스크 신호의 배타적 논리합 연산 값과 상기 제 2 논리 게이트의 출력 값을 비교하여 에러를 검출하는 에러 검출기를 포함하는 스마트 카드.
- 제 18 항에 있어서,상기 에러 검출기는 상기 제 1 및 제 2 마스크 신호의 배타적 논리합 연산 값과 상기 제 2 논리 게이트의 출력 값이 다를 경우에 에러 신호를 발생하는 스마트 카드.
- 중앙 처리 장치;데이터를 저장하기 위한 메모리;키(key)를 제공하기 위한 키 스케줄러;제 1 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 데이터를 마스크하고 제 1 마스크 데이터를 생성하는, 상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고 상기 제 1 마스크 데이터를 암호화하는, 그리고 최종적으로 제 1 마스크 암호화 데이터를 출력하는 제 1 암호화 회로;제 2 마스크 신호에 응답하여 상기 중앙 처리 장치의 출력 데이터를 마스크하고 제 2 마스크 데이터를 생성하는, 상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고 상기 제 2 마스크 데이터를 암호화하는, 그리고 최종적으로 제 2 마스크 암호화 데이터를 출력하는 제 2 암호화 회로;상기 제 1 및 제 2 마스크 암호화 데이터를 각각 전송하기 위한 제 1 및 제 2 데이터 버스; 및상기 제 1 마스크 신호에 응답하여 상기 제 1 마스크 암호화 데이터로부터 암호화 데이터를 생성하고, 상기 암호화 데이터를 상기 메모리로 제공하는 논리 회로를 포함하되,상기 논리 회로는 상기 제 1 및 제 2 마스크 암호화 데이터를 입력받고, 데이터 전송 동안에 상기 제 1 및 제 2 데이터 버스에서 발생한 에러를 검출하는 스 마트 카드.
- 제 20 항에 있어서,상기 제 1 및 제 2 암호화 회로는 복수의 암호화 라운드 함수 블록을 가지며, 각각의 암호화 라운드 함수 블록은 상기 중앙 처리 장치로부터 어드레스 및 상기 키 스케줄러로부터 키를 입력받고 암호화 동작을 수행하는 스마트 카드.
- 제 21 항에 있어서,상기 각각의 암호화 라운드 함수 블록은상기 데이터와 상기 어드레스를 배타적 논리합 연산하는 제 1 논리 게이트;상기 제 1 논리 게이트의 출력과 상기 키를 배타적 논리합 연산하는 제 2 논리 게이트;하나 또는 그 이상의 S박스를 가지며, 각각의 S박스는 상기 제 2 논리 게이트의 출력을 소정 비트 단위로 입력받고 S 연산을 수행하는 S 연산 회로; 및상기 S 연산 회로의 출력을 치환(permutation) 연산하는 치환 회로를 포함하는 스마트 카드.
- 제 20 항에 있어서,상기 제 1 마스크 암호화 데이터는 상기 암호화 데이터와 상기 제 1 마스크 신호의 배타적 논리합 연산이고, 상기 제 2 마스크 암호화 데이터는 상기 암호화 데이터와 상기 제 2 마스크 신호의 배타적 논리합 연산인 것을 특징으로 하는 스마트 카드.
- 제 23 항에 있어서,상기 논리 회로는 상기 제 1 마스크 신호 및 상기 제 1 마스크 암호화 데이터를 배타적 논리합 연산하여 상기 암호화 데이터를 복원하는 스마트 카드.
- 제 24 항에 있어서,상기 논리 회로는 상기 제 1 및 제 2 마스크 암호화 데이터를 배타적 논리합 연산하여 에러를 검출하는 스마트 카드.
- 제 23 항에 있어서,상기 논리 회로는상기 제 1 마스크 신호 및 상기 제 1 마스크 암호화 데이터를 배타적 논리합 연산하는 제 1 논리 게이트;상기 제 1 및 제 2 마스크 암호화 데이터를 배타적 논리합 연산하는 제 2 논리 게이트; 및상기 제 1 및 제 2 마스크 신호의 배타적 논리합 연산 값과 상기 제 2 논리 게이트의 출력 값을 비교하여 에러를 검출하는 에러 검출기를 포함하는 스마트 카드.
- 제 20 항에 있어서,상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고, 상기 메모리로부터 입력된 암호화 데이터를 복호화하는 복호화 회로를 더 포함하는 스마트 카드.
- 스마트 카드의 데이터 보안 방법에 있어서:상기 스마트 카드는, 중앙 처리 장치; 데이터를 저장하기 위한 메모리; 키(key)를 제공하기 위한 키 스케줄러; 복수의 암호화 라운드 함수 블록을 갖는 암호화 회로; 및 데이터를 상기 메모리로 전송하기 위한 데이터 버스를 포함하고,상기 스마트 카드의 데이터 보안 방법은상기 암호화 회로의 각각의 암호화 라운드 함수 블록이 상기 중앙 처리 장치로부터 어드레스 및 상기 키 스케줄러로부터 키를 입력받고, 상기 메모리에 저장될 데이터를 암호화하는 단계; 및상기 암호화된 데이터를 상기 데이터 버스를 통해 상기 메모리로 전송하는 단계를 포함하는 데이터 보안 방법.
- 제 28 항에 있어서,상기 암호화 단계는상기 데이터 및 상기 어드레스를 배타적 논리합 연산하고, 그 연산 결과와 상기 키를 배타적 논리합 연산하는 단계;상기 배타적 논리합 연산한 데이터를 소정 비트 단위로 등분하고, 미리 정의된 테이블에 따라 S 변환을 수행하는 단계; 및상기 S 변환된 데이터를 치환(permutation) 연산하는 단계를 포함하는 데이터 보안 방법.
- 제 28 항에 있어서,상기 중앙 처리 장치로부터 제공된 어드레스 및 상기 키 스케줄러로부터 제공된 키를 입력받고, 상기 암호화된 데이터를 복호화하는 단계를 포함하는 데이터 보안 방법.
- 스마트 카드의 데이터 보안 방법에 있어서:제 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 어드레스 버스에서 발생한 에러를 검출하는 단계를 포함하는 어드레스 보안 방법.
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 |
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. |
GB1006763A GB2468419B (en) | 2006-06-07 | 2007-06-07 | Cyrptographic systems for encrypting input data, error detection circuits, and methods of operating the same |
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 |
CN2007101082808A CN101086769B (zh) | 2006-06-07 | 2007-06-07 | 用于加密输入数据的密码系统及其操作方法 |
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 KR20070117172A (ko) | 2007-12-12 |
KR100837270B1 true 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 (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8528081B2 (en) | 2009-01-05 | 2013-09-03 | Samsung Electronics Co., Ltd. | Memory system |
Families Citing this family (33)
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 |
DE102008056383B4 (de) | 2007-11-16 | 2015-08-20 | Lg Electronics Inc. | Dampf-Trocknungsguttrockner |
WO2009074726A1 (fr) * | 2007-12-13 | 2009-06-18 | Oberthur Technologies | Procede de traitement cryptographique de donnees, notamment a l'aide d'une boite s, dispositif et programme associes |
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 |
KR101537018B1 (ko) * | 2008-10-01 | 2015-07-17 | 삼성전자주식회사 | 보안 메모리 인터페이스, 이를 포함하는 시스템 및 스마트카드 |
US9336160B2 (en) * | 2008-10-30 | 2016-05-10 | Qualcomm Incorporated | Low latency block cipher |
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 |
EP2933944B1 (en) * | 2012-12-11 | 2017-09-20 | Mitsubishi Electric Corporation | Integrated security device and signal processing method used by integrated security device |
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 |
CN107547193A (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 |
WO2018106570A1 (en) * | 2016-12-09 | 2018-06-14 | Cryptography Research, Inc. | Programmable block cipher with masked inputs |
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 |
CN116561715A (zh) * | 2019-12-20 | 2023-08-08 | 无锡矽杰微电子有限公司 | 一种mcu程序加密解密方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5357467A (en) | 1992-10-27 | 1994-10-18 | Kabushiki Kaisha Toshiba | Security circuit for protecting data stored in memory |
US5377343A (en) | 1990-07-19 | 1994-12-27 | Kabushiki Kaisha Toshiba | Security circuit for protecting data stored in an internal memory of a microcomputer |
KR20000075917A (ko) * | 1997-03-03 | 2000-12-26 | 칼 하인쯔 호르닝어 | 전자 데이터 처리 장치 및 시스템 |
KR20010032591A (ko) * | 1998-09-30 | 2001-04-25 | 롤페스 요하네스 게라투스 알베르투스 | 소비 전력이 데이터 버스 수단에 의해 전송된 데이터와무관한 데이터 버스 수단을 구비한 데이터 캐리어 디바이스 |
KR20020085753A (ko) * | 2001-05-07 | 2002-11-16 | 후지쯔 가부시끼가이샤 | 반도체 집적 회로 및 집적 회로 카드의 보안성 보호 방법 |
KR20030055745A (ko) * | 2001-12-27 | 2003-07-04 | 주식회사 하이닉스반도체 | 전자칩의 외부공격 탐지장치 |
Family Cites Families (33)
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 |
EP0447117B1 (en) * | 1990-03-15 | 1997-02-19 | AT&T Corp. | Built-in self test for analog to digital converters |
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 |
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 |
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 |
BR9917358B1 (pt) | 1999-06-10 | 2012-07-24 | meio legÍvel por computador, sistema, e, mÉtodos para suportar armazenamento persistente de um conjunto de dados, e para atualizar um conjunto de dados. | |
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 |
AR032396A1 (es) | 2001-01-16 | 2003-11-05 | Nagracard Sa | Metodo para almacenar datos encriptados. |
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 |
FR2825877B1 (fr) * | 2001-06-12 | 2003-09-19 | Canal Plus Technologies | Procede de controle d'acces a un programme crypte |
JP2005505069A (ja) | 2001-10-03 | 2005-02-17 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | メモリ暗号化 |
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 | 삼성전자주식회사 | 다수의 동작 모드들을 지원하는 암호화 장치 |
DE10345454A1 (de) * | 2003-09-30 | 2005-04-28 | Infineon Technologies Ag | Wortindividuelle Schlüsselerzeugung |
DE10345378B4 (de) | 2003-09-30 | 2010-08-12 | Infineon Technologies Ag | Verfahren und Vorrichtung zur Ver-/Entschlüsselung |
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 | 주식회사 하이닉스반도체 | 반도체 장치의 데이터 출력장치 및 출력방법 |
-
2006
- 2006-06-07 KR KR1020060051033A patent/KR100837270B1/ko active IP Right Grant
-
2007
- 2007-04-16 US US11/785,281 patent/US8332634B2/en active Active
- 2007-06-05 DE DE102007063755.3A patent/DE102007063755B4/de active Active
- 2007-06-07 CN CN2007101082808A patent/CN101086769B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5377343A (en) | 1990-07-19 | 1994-12-27 | Kabushiki Kaisha Toshiba | Security circuit for protecting data stored in an internal memory of a microcomputer |
US5357467A (en) | 1992-10-27 | 1994-10-18 | Kabushiki Kaisha Toshiba | Security circuit for protecting data stored in memory |
KR20000075917A (ko) * | 1997-03-03 | 2000-12-26 | 칼 하인쯔 호르닝어 | 전자 데이터 처리 장치 및 시스템 |
KR20010032591A (ko) * | 1998-09-30 | 2001-04-25 | 롤페스 요하네스 게라투스 알베르투스 | 소비 전력이 데이터 버스 수단에 의해 전송된 데이터와무관한 데이터 버스 수단을 구비한 데이터 캐리어 디바이스 |
KR20020085753A (ko) * | 2001-05-07 | 2002-11-16 | 후지쯔 가부시끼가이샤 | 반도체 집적 회로 및 집적 회로 카드의 보안성 보호 방법 |
KR20030055745A (ko) * | 2001-12-27 | 2003-07-04 | 주식회사 하이닉스반도체 | 전자칩의 외부공격 탐지장치 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8528081B2 (en) | 2009-01-05 | 2013-09-03 | Samsung Electronics Co., Ltd. | Memory system |
Also Published As
Publication number | Publication date |
---|---|
US8332634B2 (en) | 2012-12-11 |
DE102007063755B4 (de) | 2014-01-09 |
CN101086769B (zh) | 2012-05-09 |
KR20070117172A (ko) | 2007-12-12 |
CN101086769A (zh) | 2007-12-12 |
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 | |
RU2251726C2 (ru) | Микропроцессорное устройство с шифрованием | |
US7201326B2 (en) | Information processing device | |
US7454017B2 (en) | Information processing unit | |
CN100480946C (zh) | 用于在计算机系统内为sim设备提供受信通道的方法和装置 | |
CN104252881B (zh) | 半导体集成电路及系统 | |
US20080282087A1 (en) | System debug and trace system and method, and applications thereof | |
CN102737202B (zh) | 利用迭代加密/解密密钥更新的指令加密/解密设备和方法 | |
CN105320895B (zh) | 用于联机加密处理的高性能自主硬件引擎 | |
CN105790927B (zh) | 一种总线分级加密系统 | |
US8249253B2 (en) | Semiconductor integrated circuit having encrypter/decrypter function for protecting input/output data transmitted on internal bus | |
US8904193B2 (en) | Method for operating a security device | |
KR20010048160A (ko) | Pc 기반의 유.에스.비. 보안 모듈과 암호칩을 사용한정보 보호 장치 | |
JP2007328789A (ja) | 入力データに関するアドレスを使用して入力データを符号化するための暗号システム、エラー検出回路、及びそれの動作方法 | |
JP2001338271A (ja) | Icカード及びicカード利用システム | |
US9069988B2 (en) | Detecting key corruption | |
JP4435593B2 (ja) | 耐タンパー情報処理装置 | |
JPWO2005027403A1 (ja) | 情報処理装置 | |
KR20100015077A (ko) | 시스템 온 칩에서 암호화 방법 및 장치 | |
WO2006046484A1 (ja) | 認証方法 | |
GB2468419A (en) | Circuit for detecting data or address errors in a smart card | |
EP2334005A1 (en) | Integrated circuit and method of producing same | |
Zhao | Research on Encryption Technology in Contactless IC Card | |
CN114520740A (zh) | 一种加密方法、装置、设备及存储介质 |
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 |