KR100505106B1 - 강화된 보안 기능을 갖춘 스마트 카드 - Google Patents

강화된 보안 기능을 갖춘 스마트 카드 Download PDF

Info

Publication number
KR100505106B1
KR100505106B1 KR10-2002-0029877A KR20020029877A KR100505106B1 KR 100505106 B1 KR100505106 B1 KR 100505106B1 KR 20020029877 A KR20020029877 A KR 20020029877A KR 100505106 B1 KR100505106 B1 KR 100505106B1
Authority
KR
South Korea
Prior art keywords
area
program
security
program memory
address
Prior art date
Application number
KR10-2002-0029877A
Other languages
English (en)
Other versions
KR20030092264A (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 KR10-2002-0029877A priority Critical patent/KR100505106B1/ko
Priority to US10/424,654 priority patent/US7353403B2/en
Priority to JP2003143234A priority patent/JP2004005679A/ja
Priority to DE10324337A priority patent/DE10324337B4/de
Priority to FR0306427A priority patent/FR2840421B1/fr
Priority to CNB031429238A priority patent/CN100547541C/zh
Publication of KR20030092264A publication Critical patent/KR20030092264A/ko
Application granted granted Critical
Publication of KR100505106B1 publication Critical patent/KR100505106B1/ko

Links

Classifications

    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/34User authentication involving the use of external additional devices, e.g. dongles or smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/341Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/357Cards having a plurality of specified features
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/0806Details of the card
    • G07F7/0833Card having specific functional components
    • G07F7/084Additional components relating to data transfer and storing, e.g. error detection, self-diagnosis
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system

Abstract

여기에 개시되는 발명은 스마트 카드에 관한 것으로서, 응용 프로그램 실행 중에 프로그램 메모리 어드레스 값이 특정 값이 될 경우에 보안 프로그램이 활성화 되도록 하여 응용 프로그램의 실행 중에 보안 프로그램으로의 직접 접근을 방지한다.

Description

강화된 보안 기능을 갖춘 스마트 카드{SMART CARD WITH ENHANCED SECURITY}
본 발명은 데이타 처리 시스템 및 데이타 처리 시스템의 보안 방법에 관한 것이다. 더 상세하게는 보안 정보 및 보안 프로그램에 대한 임의 접근을 제한하는 스마트 카드 및 스마트 카드 내에서 메모리에 저장된 정보를 보호하는 방법에 관한 것이다.
스마트 카드는, 중앙처리장치(CPU) 또는 마이크로 프로세서, 운영체제(Chip Operating System: COS), 그리고 안전한 저장영역으로서의 EEPROM(Electrically Erasable and Programmable Read Only Memory) 등을 포함하는 집적회로(IC) 칩이 일반적인 신용카드와 동일한 재질과 사이즈인 플라스틱 카드의 표면에 부착된 전자식 카드이다. 스마트 카드에서는, 단순히 메모리만 내장된 메모리 카드에서와는 달리, 카드 내에서 정보의 저장과 처리가 가능하다.
스마트 카드가 갖고 있는 가장 기본적인 장점은 고신뢰성/보안성, 대용량 데이타의 저장, 전자지갑(E-purse) 기능과 더불어 다양한 어플리케이션을 탑재할 수 있다는 것이다. 이 스마트 카드는, 쌍방향 통신, 분산처리, 정보의 안전 보호 등 정보의 입출력이 가능해 금융, 유통, 공장 자동화, 사무 자동화, 의료, 교통, 산업, 사회보장, 이동 통신, 공중전화, 케이블 TV, 전력, 가스, 수도, 교육, 신용카드, 직불카드, 선불카드, 도시가스 관리, 정보 보안, 홈뱅킹 등으로 그 적용 분야 또한 비약적으로 발전하고 있다. 그리고, 상기와 같은 서비스들은 하나의 카드로 통합되어가고 있는 추세이다. 이러한 추세에 부응하여, 금융 결재 수단 등으로 사용되는 스마트 카드를 보다 편리하게 구비하여 사용할 수 있고, 상기 스마트 카드와 결부된 다양한 서비스를 사용자에게 보다 편리하게 제공할 수 있는 장치 및 그것을 위한 서비스 방법이 요구되고 있다.
스마트 카드 내에 저장된 데이타 및 프로그램들에 대한 독출, 기입, 지우기 작업, 그리고 스마트 카드와 그 외부 사이의 통신은 스마트 카드 자체의 물리적인 보안과 정교한 암호 기법을 통해서 엄격히 통제, 보호된다. 이와 같은 스마트 카드의 특징들로 인해, 근래에 스마트 카드의 사용이 증가하면서 스마트 카드 IC에 대한 보안기술이 많이 등장하고 있지만, 그에 반하여 보안기술을 깨뜨려 금전적 이익 등을 얻으려는 어택(attack) 기술 또한 매우 다양하게 등장하고 있다.
최근의 해킹 기술의 발달로 인해, 악의의 사용자가 운영체제 프로그램의 실행 중에 점프 명령을 실행하여, 스마트 카드가 가지는 복잡한 암호 장벽을 바이패스하여 보안 정보로의 직접적인 접근을 시도할 수 있다. 예컨대, 운영체제 프로그램 실행 중에, 보안 프로그램으로의 점프 명령, 또는 로드(load)나 저장(save) 명령에 의한 보안 정보의 유출 및 훼손 등이 이루어 질 수 있다. 즉, 보안 프로그램에 사용되는 코드 및 데이타가 유출 또는 조작될 수 있다.
따라서, 본 발명의 목적은 악의의 사용자로부터 보안 정보로의 임의 접근을 방지할 수 있는 보안 기능이 강화된 스마트 카드 및 그것의 보안 정보 보호 방법을 제공하는 것이다.
본 발명의 다른 목적은 다중 응용 프로그램들 사이에 보안을 유지할 수 있는 시스템을 제공하는 것이다.
상술한 목적을 달성하기 위한 본 발명의 일 특징에 따르면, 중앙처리장치(또는 마이크로프로세서)에 의한 사용자 운영체제 프로그램의 실행 중에는 보안이 요구되는 메모리들의 칩 선택신호들이 디스에이블 상태가 되도록 함으로써 상기 보안 요구 메모리들로의 접근이 완전히 차단한다. 운영체제 프로그램 실행 중에 프로그램 카운터가 프로그램 메모리 내의 소정의 코드 영역(예컨대, '벡터 테이블 영역')을 지정하는 경우에만 보안 프로그램 활성화 수단에 의해 상기 보안 요구 메모리들의 칩 선택신호들이 인이에블 상태가 된다. 상기 프로그램 메모리는 일반 코드 영역, 벡터 테이블 영역 및 보안 코드 영역을 포함한다.
상기 보안 프로그램 활성화 수단은 어드레스 디코더 로직과 래치 로직을 구비한다. 어드레스 디코더 로직은 프로그램 수행중의 메모리 어드레스(즉, 프로그램 카운터)가 특정 메모리 어드레스가 될 때, 이를 디코딩하여 래치 로직을 세트 시킨다. 래치 로직의 출력 신호가 보안이 요구되는 보안 장치들, 예컨대, 보안 코드 영역, 보안전용 프로세서, 보안 데이타 영역에 인가되어 이들을 활성화 시킨다.
상기 벡터 테이블 영역은 상기 보안 코드 영역으로 점프 하는 점프 코드들(이하, '함수 점프 코드들')만을 저장한다. 상기 보안 코드 영역은 데이타 메모리의 보안 데이타 영역에 저장된 보안 데이타를 조작하기 위한 코드 세트들(이하, '보안 함수 코드들')을 저장한다. 상기 일반 코드 영역은 데이타 메모리의 일반 데이타 영역에 저장된 일반 데이타를 조작하기 위한 코드 세트들(이하, '일반 코드들')을 포함하고, 또한 상기 벡터 테이블 영역의 각 함수 점프 코드들로 점프 하는 코드들(이하, '벡터 점프 코드들')을 포함한다.
상기 어드레스 디코더 로직은, 프로그램 카운터 값이 상기 벡터 테이블 영역의 어드레스 값을 지정할 때 상기 래치 로직을 세트 시킨다. 이에 따라 래치 로직은 인에이블 상태의 칩 선택신호를 출력하여 상기 보안 코드 영역 및 보안 정보 영역을 접근 가능하도록 활성화 시킨다. 즉, 일반 코드 영역에서 사용자 운영체제 프로그램이 수행되다가, 벡터 테이블 영역으로 점프 하는 벡터 점프 코드의 실행에 의해 프로그램 카운터 값이 상기 벡터 테이블 영역의 어드레스 값을 지정하면, 상기 보안 프로그램 활성화 수단이 상기 보안 코드 및 보안 정보 영역에 대한 칩 선택신호를 인에이블 시킨다.
상기 벡터 점프 코드가 실행되면 상기 벡터 테이블 영역의 특정 함수 점프 코드로 점프 하고 이어서 보안 코드 영역의 보안 함수 코드로 점프한다. 이로 인해 보안 프로그램이 실행되고 보안 정보 영역의 데이타를 처리한다.
상술한 목적을 달성하기 위한 본 발명의 다른 특징에 의하면, 다중 응용 프로그램을 탑재한 데이타 처리 시스템은, 데이타를 저장하기 위한 데이타 메모리와, 응용 프로그램들을 저장하기 위한 프로그램 메모리와, 상기 프로그램 메모리 중 다른 응용 프로그램으로부터 보호되어야 할 보안 프로그램을 저장하는 보안 프로그램 영역으로 점프 하는 점프 코드만을 저장하는 벡터 테이블 영역과, 응용 프로그램 실행 중에 프로그램 카운터 값이 상기 벡터 테이블 영역의 어드레스를 지정하는 경우에 상기 보안 프로그램을 실행하여 상기 데이타 메모리의 보안 데이타를 처리하는 프로세서를 포함한다.
상기 데이타 처리 시스템은, 어드레스 디코더 로직 및 래치 로직으로 구성된 보안 프로그램 활성화 수단을 더 포함한다. 이때, 상기 프로그램 카운터 값이 변하여 상기 벡터 테이블 영역의 어드레스를 지정하면, 상기 어드레스 디코터 로직은 상기 변화된 프로그램 카운터 값을 디코딩하여 세트 신호를 발생하고 이에 응답하여 상기 래치 로직은 세트되고 인에이블 상태의 칩 선택신호를 출력하여 상기 보안 프로그램 및 보안 데이타 영역에 인가한다.
상술한 목적을 달성하기 위한 스마트 카드는, 일반 프로그램이 실행되는 일반 코드 영역 및 보안 프로그램이 실행되는 보안 코드 영역을 포함하는 프로그램 메모리와, 일반 데이타 영역 및 보안 데이타 영역을 포함하는 데이타 메모리와, 중앙처리장치의 제어에 의해 현재 실행되고 있는 프로그램 메모리의 코드 영역의 어드레스를 디코딩하여 세트 또는 리세트 신호를 출력하는 어드레스 디코더 로직, 그리고, 상기 어드레스 디코더 로직의 출력 신호에 응답하여 세트 또는 리세트 되어 상기 보안 코드 영역 및 보안 데이타 영역을 활성화 또는 비활성화 시키는 래치 로직을 포함한다. 이때, 상기 일반 코드 영역은 상기 보안 코드 영역으로 점프 하는 함수 점프 코드들을 저장하는 벡터 테이블 영역을 포함하고, 상기 어드레스 디코더 로직은 현재 실행되고 있는 프로그램 메모리의 코드 영역의 어드레스가 상기 벡터 테이블 영역의 어드레스에 해당하는 경우에만 세트 신호를 출력한다.
바람직하게, 상기 함수 점프 코드는 상기 보안 코드 영역의 정당 사용자 여부를 확인하는 인증 코드로 점프한다.
상기 일반 코드 영역은 상기 벡터 테이블 영역으로 점프 하는 벡터 점프 코드를 포함한다. 또, 상기 벡터 점프 코드로 점프 하는 또 다른 점프 코드를 포함할 수 있다.
실시예에 따라서, 상기 보안 프로그램 실행을 제어하는 보안전용 프로세서를 더 포함할 수 있다.
상기 래치 로직의 출력 신호는, 상기 보안 코드 영역 및 보안 데이타 영역 각각에 인가되어 이들 영역을 활성화 또는 비활성화 시키는 칩 선택 신호로 작용한다. 래치 로직이 세트 되면 칩 선택신호는 활성화 상태가 되고 리세트 되면 비활성화 상태가 된다.
바람직한 실시예에 있어서, 상기 일반 코드 영역 및 보안 코드 영역의 어드레스 최상위 비트는 서로 상보적이며, 현재 실행되고 있는 프로그램 메모리의 코드 영역의 어드레스의 최상위 비트가 상기 일반 코드 영역 및 보안 코드 영역에 인가되어 또 따른 칩 선택 신호로 작용하되, 상기 일반 코드 영역에는 반전되어 인가되고, 이에 따라, 상기 칩 선택 신호 및 또 다른 칩 선택 신호의 논리곱에 의해 상기 보안 코드 영역이 활성화 또는 비활성화 된다.
상술한 바와 같이 본 발명에 따르면, 프로그램 카운터가 지정하는 어드레스 값이 특정 영역의 어드레스 값이 될 경우 보안을 필요로 하는 영역을 선택하여 이를 활성화 시킨다. 따라서, 보안 등급이 상이한 서로 다른 응용 프로그램을 동일한 스마트 카드 칩 내에 탑재할 수 있다.
이하에서는 첨부된 도면을 참조하여 본 발명을 보다 상세히 설명하기로 한다.
도1은 본 발명에 따른 스마트 카드를 개략적으로 도시하고 있다. 스마트 카드는 입출력단(1), 마이크로프로세서 또는 CPU(중앙처리장치, 2), 프로그램 메모리(3) 및 데이타 메모리(7) 그리고 보안 프로그램 활성화 수단(10)을 포함한다. 프로그램 메모리(3)는 스마트 카드 칩을 운영하는 카드운영체제(COS)가 프로그램 되어 있는 메모리로서, 예컨대 ROM에 기록되어 있다. CPU(2)는 데이타 메모리(7), 프로그램 메모리(3) 및 RAM(미도시)등 칩의 모든 구성요소들에 접근하기 위해 거치게 되는 내부 통로를 제어한다. 데이타 메모리(7)는 CPU(2) 및 카드운영체제에 의해 외부의 접근에 대해 보호되어지는 사용자 데이타 영역인 보안 데이타 영역(8)과 일반 데이타 영역(9)을 포함하는 메모리로서, 예컨대, 전기적으로 읽기/쓰기가 가능한 EEPROM으로 설계된다. 사용자 데이타 영역(8)은 오퍼레이션, 카드 발행자 데이타, 사용자 데이타를 가지고 있는 데이타 세트, 각종 어플리케이션에서 실현 가능한 함수를 포함한다.
도1에 개략적으로 도시된 바와 같이, 본 발명에 따른 프로그램 메모리(3)는 사용자(일반) 코드 영역(6), 보안 코드 영역(4) 및 상기 보안 코드 영역(4)으로 점프만 하는 특별한 코드인 함수 점프 코드들로 이루어진 벡터 테이블 영역(5)을 포함한다. 이들 영역들은 하나의 메모리에서 물리적으로 서로 다른 위치에 위치하도록 나뉘어질 수 있으며, 또는 각각 서로 다른 메모리로 구성될 수 있다.
보안 프로그램 활성화 수단(10)은 보안 코드 영역(4) 및 보안 데이타 영역(8)에 접근(access) 가능 또는 접근 불가능하도록 칩 선택신호(CS)를 인에이블 또는 디스에이블 시킨다. 상기 보안 프로그램 활성화 수단(10)은, 어드레스 디코더 로직(11) 및 여기에 연결된 래치 로직 회로(12)로 이루어진다.
인터페이스를 위해 모든 메모리 영역들(4,5,6,8,9)은 어드레스 버스(13)에 의해 CPU(2)에 연결되어 있다. 비록 도시하지는 않았지만, 데이타 교환을 위해 데이타 버스를 더 구비한다. 또는 어드레스 버스를 데이타 버스로 사용할 수도 있다. 그리고 보안 프로그램 활성화 수단(10)의 어드레스 디코더 로직(11)은 어드레스 버스(13)에 실리는 프로그램 메모리(3)의 해당 어드레스(현재 실행되고 있는 프로그램 코드의 어드레스, 프로그램 카운터)를 디코딩하기 위해 어드레스 버스(13)에 연결된다. 래치 로직(12)은 어드레스 디코더 로직(11)의 출력 신호(세트 또는 리세트 신호)에 응답하여 그 출력을 보안 코드 영역(4) 및 보안 데이타 영역(8)에 인가한다. 래치 로직(12)의 출력 신호는 상기 보안 코드 영역(4) 및 보안 데이타 영역(8)을 인에이블 또는 디스에이블 시키는 칩 선택신호 CS로 작용한다.
이와 같은 메모리 구조에 따른 본 발명의 보안 프로그램 작동 개념을 설명한다. 본 발명에 따르면, 프로그램 메모리 영역(3)에서 프로그램 실행 중에 프로그램 카운터가 특정 값으로 변할 경우에만 보안 프로그램 활성화 수단(10)에 의해 보안 코드 영역(4) 및 보안 데이타 영역(8)이 활성화 된다.
일반 코드 영역(6)에서 CPU(2)의 제어에 의해 사용자 운영체제 프로그램(일반 프로그램)이 실행된다. 이때, 실행되는 프로그램 코드의 어드레스(프로그램 카운터)가 특정 값, 즉, 벡터 테이블 영역의 어드레스 값이 아니기 때문에, 보안 프로그램 활성화 수단(10)은 보안 코드 영역(4) 및 보안 데이타 영역(8)을 활성화 시키지 않는다. 즉 이들에 대한 접근이 불가능하다. 한편, 일반 프로그램의 실행이 계속 되면서 프로그램 카운터가 변하여 벡터 테이블 영역(5)의 어드레스 값이 되면 이를 보안 프로그램 활성화 수단(10)의 어드레스 디코더 로직(11)이 디코딩하여 세트 신호를 발생한다. 어드레스 디코더 로직(11)이 발생한 세트 신호에 응답하여 래치 로직(12)이 세트되어 보안 코드 영역(4) 및 보안 데이타 영역(8)을 활성화 시키는 칩 선택 신호CS가 인에이블 상태가 된다. 여기서, 벡터 테이블 영역(5)은 보안 코드 영역(4)으로 점프만 하는 코드들로 구성되어 있기 때문에, 보안 코드 영역(4)에서 프로그램이 수행된다. 따라서, 보안 데이타 영역(8)의 보안 정보를 처리할 수 있게 된다.
본 발명의 스마트 카드는, 또한 보안 프로그램을 제어하는 암호전용 프로세서(15)를 더 포함할 수 있다. 이 경우, 암호전용 프로세서(15) 역시 보안 프로그램 활성화 수단(10)에 의해서 활성화된다.
보안 정보에 대한 처리가 끝나고 보안 프로그램이 종료되어 다시 일반 코드 영역(6)의 어드레스에 대응하도록 프로그램 카운터가 변하면 보안 프로그램 활성화 수단(10)의 어드레스 디코더 로직(11)이 어드레스 값을 디코딩하여 리세트 신호를 출력하고 이에 따라 래치 로직(12)이 리세트 되어 칩 선택신호 CS가 디스에이블 상태가 된다. 이로 인해 보안 데이타 영역(8) 및 보안 코드 영역(4)은 비활성화 되어 접근이 불가능한 상태가 된다.
도2를 참조하여 본 발명을 더 상세히 설명한다. 도2는 본 발명을 설명하기 위한 프로그램 메모리 구성의 일예를 도시하고 있다. 도2를 참조하면, 스마트 카드의 프로그램 메모리(3)는 상술한 바와 같이 일반 코드 영역(6), 벡터 테이블 영역(5) 및 보안 코드 영역(4)으로 구성된다. 각 영역들은 소정의 주소 범위를 갖는다. 예를 들어, 상기 일반 코드 영역(6)은 프로그램 메모리 어드레스 000000h에서 부터 023FFFh 사이의 영역이고, 상기 벡터 테이블 영역(5)은 프로그램 메모리 어드레스 024000h에서 부터 0241FFh 사이의 영역이고, 상기 보안 코드 영역(4)은 프로그램 메모리 어드레스 024200h에서 부터 027FFFh 사이의 영역이다. 이러한 메모리 어드레스 및 그 크기는 본 발명을 보다 명확하게 설명하기 위해 일예를 든 것으로서, 스마트 카드 응용 프로그램에 따라 다양하게 변경될 수 있다.
상기 벡터 테이블 영역(5)은 본 발명의 일 특징을 이루는 것으로서, 상기 보안 코드 영역(4)의 특정 부분으로 점프 하는 코드, 즉, 함수 점프 코드로만 이루어진다. 일예로, Vector_E1:JMP F1 및 Vector_E2:JMP F2, 두개의 함수 점프 코드가 나타나 있다. 상기 보안 코드 영역(4)은 상기 벡터 테이블 영역(5)의 함수 점프 코드 Vector_E1:JMP F1, Vector_E2:JMP F2 등이 점프 하는 보안 함수 코드들, F1, F2 등으로 이루어진다. 한편, 상기 일반 코드 영역(6)은 일반 정보를 처리하는 일반 코드, 예컨대, LD r0,r1, LD r2, r0, LD r3, r2 등의 3개의 로드 명령 코드와 상기 벡터 테이블 영역(5)의 함수 점프 코드, Vector_E1, Vector_E2로 각각 점프 하는 벡터 점프 코드 JMP Vector_E1, JMP Vector_E2를 포함한다. 선택적으로, 벡터 점프 코드, 예컨대, JMP Vector_E1을 호출하는 호출 벡터 점프 코드 Call JMP Vector_E1을 더 포함할 수 있다. 결국, 일반 코드 영역에서 보안 코드 영역으로의 이동은 서브루틴(subroutine) 호출(점프)에 의해서만이 가능하다.
다시 도1을 참조하여, 중앙처리장치(2)는 컨트롤 유닛(미도시)과 데이타패스 또는 실행 유닛(미도시)으로 나누어진다. 컨트롤 유닛은 실행될 다음 인스트럭션을 페치(fetch)하기 위한 프로그램 메모리 어드레스(program memory address)를 가지는 레지스터인 프로그램 카운터(Program Counter:PC)와 메모리로부터 페치한 인스트럭션을 저장하기 위한 레지스터인 인스트럭션 레지스터(Instruction Register:IR)를 포함한다. 데이타패스는 ALU(산술 논리 유닛:Arithmetic Logic Uint), AC(누산기:Accumulator)를 포함한다. 또한 컨트롤 유닛은 메모리와의 인터페이스를 위해 메모리 액세스 동안 프로그램 메모리 어드레스를 간직하는 메모리 어드레스 레지스터(MAR:Memory Address Register)를 포함한다. 한편 데이타패스는 CPU 내부 동작으로부터 메모리를 디커플시키기 위한 메모리 버퍼 레지스터(MBR:Memory Buffer Register)를 포함한다.
먼저, CPU(2)가 초기화되고 CPU(2)의 컨트롤 유닛이 리세트(reset) 된다고 하자. 이때, 컨트롤 유닛의 프로그램 카운터도 일정한 값(예컨대 @)으로 세트된다. 프로그램 카운터(PC)에 저장된 다음 명령 페치를 위한 프로그램 메모리 어드레스가 메모리 어드레스 레지스터(MAR)로 옮겨지고, 컨트롤 유닛에 의해 메모리 독출(read) 오퍼레이션(operation)이 시작된다. 인스트럭션 패스(instruction path)를 통해 프로그램 메모리(3)로부터 읽은 다음 인스트럭션 세트를 인스트럭션 레지스터(IR)에 저장한다. 이어서 인스트럭션 레지스터(IR)에 저장된 명령서 세트, 예컨대 로드(load) 명령 LD r0, r1을 해석하고 데이타 메모리(일반 정보 영역, 9)에 저장된 데이타를 읽어서 메모리 버퍼 레지스터(MBR)에 저장한 후 레지스터 r0, r1에 저장하면 로드 오퍼레이션이 끝난다. 끝으로 프로그램 카운터가 증가한다(@->@+1). 계속해서, 프로그램 카운터(PC)가 지정하는 프로그램 메모리 어드레스 값(@+1)이 메모리 어드레스 레지스터(MAR)에 옮겨지고, 프로그램 메모리 독출 오퍼레이션이 다시 시작되어 인스트럭션 세트를 인스트럭션 레지스터(IR)에 저장한다. 이어서 인스트럭션 레지스터(IR)에 저장된 명령어 예컨대, LD r2,r0를 해석하고 데이타 메모리(일반 정보 영역, 9)에 저장된 값을 레지스터 r2, r0에 저장하여 로드 오퍼레이션이 끝나고, 마지막으로 프로그램 카운터(PC)가 다시 증가한다(@+1->@+2). 상술한 방법으로, 계속해서 프로그램이 실행되면서 프로그램 카운터 값이 증가한다(예컨대 @+2-> -> -> ->@+n).
계속해서, 프로그램 메모리(3)로부터 인스트럭션 세트 예컨대, JMP Vector E1를 페치하고 이를 인스트럭션 레지스터(IR)에 저장한다. 이어서 인스트럭션 레지스터(IR)에 저장된 인스트럭션 JMP Vector E1을 해석한다. 페치한 인스트럭션이 점프(jump) 명령어이므로 프로그램 카운터(PC) 값이 Vector E1이 저장된 메모리 영역의 어드레스 값(벡터 테이블 영역의 주소 02400h-0241FFh 중 어느 하나, 예컨대, Vector_E1으로 라벨링된 값: 도2에는 024000h)으로 대체된다. 상기 벡터 테이블 영역(5)의 어드레스 값이 메모리 어드레스 레지스터(MAR)에 옮겨지고 어드레스 버스(13)에 실린다. 상기 어드레스 버스(13)에 연결된 보안 프로그램 활성화 수단(10)의 어드레스 디코더 로직(11)이 벡터 테이블 영역의 어드레스 값 024000h을 디코딩하여 세트 신호를 발생시키고 이에 응답하여 래치 로직(12)이 세트되어 보안 코드 영역(4) 및 보안 정보 영역(8)에 작용하는 칩 선택신호 CS가 인에이블 상태가 된다. 이로써, 보안 프로그램이 활성화 된다.
한편, 프로그램 카운터에 저장된 Vector_E1으로 라벨링된 주소값 024000h에 존재하는 인스트럭션 세트 예컨대, JMP F1(함수 점프 코드)가 다시 인스트럭션 레지스터(IR)에 저장되어 컨트롤 유닛에 의해 해석된다. 전술한 바와 같이 벡터 테이블 영역(5)에 있는 모든 인스트럭션 세트는 보안 코드 영역(4)으로 점프만 하는 인스트럭션 세트로 구성되어있다. 따라서 프로그램 카운터가 보안 코드 영역(4)의 어드레스 중 어느 하나(도2에서는 F1으로 라벨링된 보안 함수 코드의 어드레스 024200h)로 된다. 이에 따라, 보안 코드 영역에서 보안 프로그램이 실행된다. 즉, 보안 함수 코드 F1이 실행된다. 보안 함수 코드 F1은 정당한 사용자 여부를 확인하는 보안 인증 코드(Security Code)로 시작하는 것이 바람직하다. 예를 들어, 보안 인증 코드로서 RSA_Sign 함수일 수 있다. 함수 내에서 다음과 같은 기능 루틴들이 실행될 수 있다.
RSA(input, output)
{보안조건 확인,
키 로드
데이타 로드
RSA Sign 오퍼레이션
결과 저장
return}
정당한 사용자 인증이 끝이 나면, 보안 데이타 영역(8)의 보안 정보를 조작한다. 보안 정보의 조작이 끝이 나면 리턴 코드(RET)에 의해 다시 일반 코드 영역(6)의 어드레스 값으로 프로그램 카운터가 변한다(예컨대 LD r3, r2 명령이 존재하는 일반 코드 영역의 어드레스 012000h).
프로그램 카운터에 저장된 프로그램 메모리 어드레스 012000h가 메모리 어드레스 레지스터(MAR)를 통해 어드레스 버스(13)에 실리면, 보안 프로그램 활성화 수단(10)의 어드레스 디코더 로직(11)이 이를 디코딩하여 리세트 신호를 발생시키고 이에 응답하여 래치 로직(12)이 리세트 되어 보안 코드 영역(4) 및 보안 데이타 영역(8)에 작용하는 칩 선택신호 CS가 디스에이블 상태가 된다. 이로써, 보안 프로그램으로의 접근이 불가능하게 된다. 이어서 프로그램 카운터가 지정하는 프로그램 메모리 어드레스에 존재하는 인스트럭션 세트 LD r3, r2를 페치하고 이를 해석하여 실행한다.
프로그램이 일반 코드 영역(6)에서 계속 수행되다가, 다시 벡터 테이블 영역(5)으로 점프 하는, 프로그램 메모리 어드레스 01FFFFh에 존재하는 명령어, 예컨대 JMP Vector_E2를 페치한다. 페치한 명령어가 점프 명령어이므로 프로그램 카운터가 JMP Vector_E2가 존재하는 벡터 테이블 영역(5)의 어드레스 값으로 변하고 보안 프로그램 활성화 수단(10)에 의해 보안 코드(4) 및 보안 데이타 영역(8)이 다시 활성화 상태가 된다. 이와 동시에 벡터 테이블 영역(5)의 점프 명령 세트 JMP F2의 실행으로 보안 코드 영역(4)으로 프로그램이 이동하여 그곳에서 보안 프로그램이 실행되어 보안 함수 코드 F2가 실행된다.
전술한 바와 같이 본 발명에 따르면, 미리 정해진 경로를 통해서만이 즉, 서브루틴 함수 호출(점프)을 통해서만이 보안 프로그램이 실행된다. 즉, 일반 코드 영역(6)에서 벡터 점프 코드 JMP Vector_E1가 실행되고 이에 따라 벡터 테이블 영역(5)의 함수 점프 코드 Vector_E1로 점프 하고 JMP F1이 실행되어 최종적으로 보안 코드 영역(4)으로 점프 하여 보안 함수 코드 F1이 실행된다. 이때, 벡터 점프 코드에 의해 벡터 테이블 영역으로 점프 하는 점프 명령이 실행되어 프로그램 카운터가 벡터 점프 코드가 저장된 벡터 테이블 영역(5)의 어드레스 값으로 변하면, 보안 프로그램 활성화 수단(10)이 이를 디코딩하여 보안 코드(4) 및 보안 정보 영역(8)을 활성화시킨다.
따라서 일반 코드 영역에서 직접적인 점프 또는 로드 명령에 의해서는 보안 코드 영역 및 보안 데이타 영역에 접근할 수 없다. 즉, 보안 프로그램을 실행할 수 없다.
본 발명은 서브루틴 함수 호출(점프)에 의해 그리고 특정 프로그램 카운터 값에 의해 보안 프로그램을 활성화 시키는 칩 선택신호가 인에이블 된다. 따라서, 이에 기초하여 다양한 변형예가 가능하다. 예를 들어, 상기 방법에서 벡터 테이블 영역의 어드레스 값으로 프로그램 카운터가 변할 때 단지 보안 코드 영역에 대한 칩 선택신호가 인에이블 되고 이어서 서브루틴 함수 점프에 의해 보안 코드 영역의 어드레스 값으로 프로그램 카운터 값이 변할 때, 보안 데이타 영역에 대한 칩 선택신호가 인에이블 될 수 있다.
이하에서는 도3을 참조하여 본 발명의 바람직한 실시예를 설명한다. 도2에 나타난 구성요소와 동일한 기능을 같은 것에 대하여는 동일한 참조번호를 사용하였으며, 이에 대한 상세한 설명은 생략한다. 도3에서, CPU(2)와 메모리들(4,5,6,8,9) 사이의 데이타 전송을 위해 모든 메모리 영역들은 CPU와 데이타 버스(미도시)에 의해 연결되어 있으며, CPU(2)와 메모리들(4,5,6,8,9) 사이의 인터페이스를 위해 모든 메모리 영역들은 CPU와 어드레스 버스(A)에 의해 연결되어 있다. 도에서 'A'는 어드레스 버스를 의미한다. 일반 코드 영역(6)은 논리 어드레스 00000h에서 부터 0FEFFh 사이의 영역이고, 벡터 테이블 영역(5)은 어드레스 0FF00h에서 부터 0FFFFh 사이의 영역이고, 보안 코드 영역(4)은 어드레스 10000h에서 부터 1FFFFh 사이의 영역이다. 일반 코드 영역(6)과 보안 코드 영역(5)의 최상위 어드레스 비트를 서로 상보적으로 하여(즉, 논리 적으로 서로 상반되는 상태로 하여) 이들 두 영역을 구분하였다.
도3을 참조하면, 일반 데이타 영역(9), 보안 데이타 영역(8), 일반 코드 영역(6), 보안 코드 영역(4)이 각각 두개의 칩 선택신호들(CS1, CS2)의 논리곱에 의해 활성화 또는 비활성화 된다. 또, 보안 데이타 영역(8) 및 보안 코드 영역(4)에 작용하는 칩 선택신호들 CS2(제2칩 선택신호)만이 보안 프로그램 활성화 수단(10)의 어드레스 디코더 로직(11)에 의해 인에이블/디스에이블 된다. 또한, 실행되는 프로그램의 코드 어드레스 중 최상위 비트가 일반 코드 영역(6) 및 보안 코드 영역(4)에 인가되어 또 다른 칩 선택 신호들(제1 칩 선택 신호)로 작용하며 일반 코드 영역(6)에는 반전되어 인가된다.
구체적으로 설명하면, 본 발명의 바람직한 실시예에서, 프로그램 메모리 어드레스의 최상위 비트(MSB:Most Significant Bit, Address bit16)에 따라 보안 코드 영역(4) 및 일반 코드 영역(6)에 작용하는 제1 칩 선택신호들 CS1이 인에이블 또는 디스에이블 된다. 즉, 일반 코드 영역(6)의 경우 어드레스 버스(A)에 실리는 어드레스 최상위 비트(MSB)의 논리 상태가 반전되어 제1 칩 선택신호 CS1로 작용하고, 보안 코드 영역(4)의 경우 어드레스 최상위 비트의 논리 상태가 그대로 제1 칩 선택신호(CS1)로 작용한다. 어드레스 최상위 비트가 '0'이면, 논리 로우 상태이고 '1'이면 논리 하이 상태이다. 일반 데이타 영역(9) 및 보안 데이타 영역(8)에 작용하는 제1 칩 선택신호 CS1는 논리 '1', 즉 논리 하이 상태로 주어진다. 또, 일반 데이타 영역(9) 및 일반 코드 영역(6)에 작용하는 제2 칩 선택 신호들(CS2)도 역시 논리 '1', 즉 논리 하이 상태로 주어진다. 보안 프로그램 활성화 수단(10)의 어드레스 디코더 로직(11)은 어드레스 버스(A)에 실리는 코드 어드레스(프로그램 카운터 값)가 벡터 테이블 영역(5)의 어드레스 값이 될 때(도3에서 메모리 어드레스의 최상위 비트(Address bit16)가 '0'이고 8번째 비트에서 15번째 비트(Address bit5-Address bit8)가 '1'이면) 세트 신호를 발생하여 래치 로직(12)을 세트 시킨다. 이에 따라 보안 데이타 영역(8) 및 보안 코드 영역(4)에 작용하는 제2 칩 선택 신호 CS2가 인에이블 상태가 된다.
더 구체적으로 설명하면, 중앙처리장치(2)의 제어에 의해 일반 프로그램이 일반 코드 영역(6)에서 실행된다고 하자. 일반 코드 영역(6)은 논리 어드레스 00000h에서 부터 0FFFFFh 사이의 영역을 차지하고 있어, 프로그램 메모리 어드레스의 최상위 비트가 논리 '0'이다. 따라서, 그 상태가 반전된 논리 '1'이 칩 선택신호 CS1로 작용하기 때문에 제1 칩 선택 신호 CS1는 인에이블 상태이다. 한편 일반 코드 영역(6)의 제2 칩 선택신호 CS2는 인에이블 상태에 있으므로 이들 두 칩 선택신호들의 논리곱에 의해 일반 코드 영역(6)은 접근가능 상태가 된다. .
하지만, 보안 코드 영역(4)의 경우에는, 프로그램 메모리 어드레스의 최상위 비트 논리 '0'이 그대로 제1 칩 선택신호 CS1로 작용하기 때문에 제1 칩 선택 신호 CS1는 디스에이블 상태이다. 또한, 프로그램 메모리 어드레스가 벡터 테이블 영역의 값이 아니므로, 어드레스 디코더 로직(11)이 이를 디코딩하여 리세트 신호를 발생하고 이에 응답하여 래치 로직(12)이 리세트 되어 보안 코드 영역(4) 및 보안 데이타 영역(8)에 작용하는 제2 칩 선택신호들은 디스에이블 상태가 된다. 결과적으로, 보안 코드 영역(4)은 및 보안 데이타 영역(8)은 활성화되지 않는다. 일반 프로그램이 실행되고 있을 때, 보안 코드 영역(4) 및 보안 데이타 영역(8)은 비활성 상태가 되어 근본적으로 접근이 불가능하다.
일반 프로그램이 진행되다가 서브루틴 함수 호출(점프)에 의해 프로그램 카운터가 벡터 테이블 영역(5)의 어드레스 값(0FF00h에서 부터 0FFFFh 중 어느 하나)으로 변하면, 어드레스 버스(A)에 해당 어드레스가 실린다. 이에 따라, 보안 프로그램 활성화 수단(10)의 어드레스 디코더 로직(11)에 의해 보안 코드 영역(4) 및 보안 데이타 영역(8)에 작용하는 제2 칩 선택 신호 CS2가 인에이블 상태가 된다. 한편 벡터 테이블 영역(5)은 보안 코드 영역(5)으로 점프만 하는 점프 코드들로만 구성되어 있기 때문에, 프로그램 메모리 어드레스는 보안 코드 영역(4)의 어드레스로 변한다. 보안 코드 영역(4)의 프로그램 메모리 어드레스 값의 최상위 비트는 논리 '1'이기 때문에, 보안 코드 영역(4)에 작용하는 칩 선택신호 CS1는 인에이블 상태이다. 하지만 일반 코드 영역(6)의 경우 반전되기 때문에 일반 코드 영역(6)에 작용하는 칩 선택신호 CS1는 디스에이블 상태이다. 결과적으로 서브루틴 함수 호출이 일어나서 프로그램이 보안 코드 영역(4)에서 실행될 때, 일반 코드 영역은 비활성화 상태가 된다.
보안 프로그램이 실행이 끝이 나고 다시 프로그램 메모리 어드레스 값으로 프로그램 카운터 값이 변하면, 보안 코드 영역(4) 및 보안 데이타 영역(8)에 작용하는 제2 칩 선택신호 CS2 및 보안 코드 영역(4)에 작용하는 제1 칩 선택 신호 CS1이 디스에이블 된다. 이에 따라 보안 코드 영역 및 보안 데이타 영역은 비활성화 되어 접근이 불가능하게 된다. 한편, 일반 코드 영역(6)에 작용하는 제2 칩 선택신호 CS2는 인에이블 상태이다. 또, 일반 코드 영역(6)의 프로그램 메모리 어드레스의 최상위 비트는 '0'이기 때문에 일반 코드 영역(6)에 작용하는 제1 칩 선택신호 CS1는 인에이블 상태이다. 결과적으로 일반 코드 영역(6)이 활성화되어 일반 프로그램이 실행된다.
상기 바람직한 실시예에서, 보안 데이타 영역(8)에 작용하는 제2 칩 선택신호 CS2가 항상 논리 하이로 주어졌다. 하지만 실시예에 따라서, 보안 코드 영역(4)과 동일하게 프로그램 메모리 어드레스의 최상위 비트를 적용할 수 있다.
또, 상기 실시예에서, 일반 데이타 영역(9)의 경우, 칩 선택 신호들(CS1, CS2)은 모두 항상 인에이블 상태로 주어졌다. 하지만 일반 데이타 영역(9)의 제1 칩 선택신호 CS1에도 일반 코드 영역(6)과 동일하게 프로그램 메모리 어드레스의 최상위 비트를 반전시켜 적용할 수 있다. 이렇게 하면, 일반 데이타 영역(9)도 항상 인에이블 상태가 아니라 일반 프로그램이 실행될 때만 인에이블 상태가 된다.
본 발명에서 프로그램 메모리 어드레스의 최상위 두 비트 이상을 사용하여 칩 선택신호를 인에이블/디스에이블 시킬 수 있으며, 이로 인해 보안 등급이 서로 다른 다양한 응용 프로그램을 하나의 칩에 탑재할 수 있다. 또한, 벡터 테이블 영역이 점프 하는 보안이 필요로 되는 보안 코드 영역을 다양하게 할 수 도 있다.
도4는 이러한 변형예를 설명하기 위한 도면으로서, 다중 응용 프로그램을 저장하는 프로그램 메모리(50) 및 이에 상응하는 데이타 메모리(60)의 일예를 도시하고 있다.
프로그램 메모리(50)는 예컨대, 응용 프로그램 A 영역(52), 응용 프로그램 B 영역(56), 응용 프로그램 C 영역(58) 그리고 벡터 테이블 영역(54)를 포함한다. 응용 프로그램 B 및 응용 프로그램 C는 보호가 요구되는 보안 프로그램 영역으로서 응용 프로그램 A 실행 중에 이들에 대한 접근이 금지된다.
한편, 데이타 메모리(60)는 응용 프로그램 A에 대응하는 데이타 영역 A(62), 응용 프로그램 B에 대응하는 데이타 영역 B(64), 응용 프로그램 C에 대응하는 데이타 영역 C(66)을 포함하며, 데이타 영역 B(64) 및 데이타 영역 C(66)은 보호가 요구되는 보안 데이타 영역들이다.
벡터 테이블 영역(54)은 응용 프로그램 B 영역(56) 및 응용 프로그램 C 영역(58)으로 점프 하는 점프 코드들을 저장하며 어드레스 AA 에서 어드레스 BB 사이의 영역이다. 예컨대, 도시된 바와 같이 벡터 테이블 영역(54)의 메모리 어드레스 XX에는 응용 프로그램 B 영역(56)의 어드레스 CC로 점프 하라는 점프 명령어가 존재한다. 또, 벡터 테이블 영역(54)의 메모리 어드레스 XX+N 에는 응용 프로그램 B 영역(56)의 어드레스 DD로 점프 하라는 점프 명령어가 존재한다.
이들 프로그램 메모리의 각 영역들 또는 데이타 메모리의 각 영역들은 하나의 메모리에서 물리적으로 서로 다른 위치에 위치하도록 나뉘어질 수 있으며, 또는 각각 서로 다른 메모리로 구성될 수 있다.
중앙처리장치에 의해 응용 프로그램 A 영역(52)에서 응용 프로그램 A(일반 프로그램)가 실행되는 중에, 프로그램 카운터 값이 상기 벡터 테이블 영역(54)의 어드레스 XX로 변하면(상기 어드레스 XX로 점프 하는 점프 명령어 실행에 의해) 칩 선택 신호(CS1)가 인에이블 되어 응용 프로그램 B 및 데이타 영역 B(64)가 활성화 된다. 마찬가지로, 프로그램 카운터 값이 상기 벡터 테이블 영역(54)의 어드레스 XX+N 으로 변하면(상기 어드레스 XX로 점프 하는 점프 명령어 실행에 의해) 칩 선택신호(CS2)가 인에이블 되어 응용 프로그램 C 및 데이타 영역 C(66)가 활성화 된다. 따라서, 응용 프로그램 A에서 응용 프로그램 B 또는 응용 프로그램 C로의 직접적인 접근은 불가능하다. 또한 동일한 보안 프로그램 B 및 C 사이에서도 직접적인 접근은 불가능하다.
비록 스마트 카드에 대하여 실시예들을 설명하였지만, 본 발명의 사상이 여기에 한정되는 것은 아니며, 마이크로 프로세서에 의해 데이타를 처리하는 여러 데이타 처리 시스템에 적용될 수 있다.
본 발명에 따르면, 보안 프로그램은 서브루틴 호출(점프)에 의해 특정 프로그램 메모리 어드레스 값으로 프로그램 카운터 값이 변할 경우에만 보안 코드 영역 및 보안 데이타 영역에 대한 접근이 허용된다. 따라서, 보안 프로그램을 일반 프로그램으로부터 완전히 분리시킬 수 있다. 즉, 일반 프로그램에서는 직접적으로 보안 정보에 접근하여 이를 처리할 수 없으며, 미리 특정된 경로를 통하여 보안 프로그램을 활성화 시켜야만 가능하다.
따라서, 보안 정보 및 보안 장치를 일반 응용 프로그램과 완전히 분리시킬 수 있어 보안 정보를 안전하게 보호할 수 있다. 또한 보안 정보 및 보안 장치는 서비스 제공자의 역할을 하게 함으로써 보안 강도가 다른 응용 프로그램을 같은 칩내에 탑재 할 수 있다.
도1은 본 발명에 따른 스마트 카드를 개략적으로 도시한 도면이다.
도2는 도1의 프로그램 메모리 구성의 일 예를 도시한 도면이다.
도3은 본 발명의 일 실시예에 따른 스마트 카드를 개략적으로 도시한 도면이다.
도4는 본 발명에 따른 다중 응용 프로그램이 저장된 프로그램 메모리 및 데이타 메모리를 개략적으로 도시한 도면이다.

Claims (19)

  1. 데이타 처리 시스템에 있어서,
    적어도 하나 이상의 응용 프로그램을 포함하는 제1프로그램 메모리 영역, 적어도 하나의 보안 프로그램을 포함하는 제3프로그램 메모리 영역 및 상기 제3프로그램 메모리 영역으로의 적어도 하나의 서브루틴 호출을 저장하는 제2프로그램 메모리 영역을 포함하는 프로그램 메모리;
    상기 응용 프로그램 및 상기 보안 프로그램의 실행을 제어하는 마이크로프로세서를 포함하되,
    상기 제2프로그램 메모리 영역에서 상기 제3프로그램 메모리 영역으로의 서브루틴 호출이 실행될 때 상기 제3프로그램 메모리 영역에 대한 접근이 허용되는 것을 특징으로 하는 데이타 처리 시스템.
  2. 제1항에 있어서,
    상기 제1프로그램 메모리 영역은 상기 제2프로그램 메모리 영역에 저장된 서브루틴 호출을 호출하는 적어도 하나의 서브루틴 호출을 저장하며,
    상기 제1프로그램 메모리 영역에서 상기 제2프로그램 메모리 영역으로의 서브루틴 호출이 실행될 때, 상기 제3프로그램 메모리 영역에 대한 접근이 허용되는 것을 특징으로 하는 데이타 처리 시스템.
  3. 제1항 또는 제2항에 있어서,
    상기 프로그램 메모리 영역들에 대한 어드레스를 전송하는 어드레스 버스;
    상기 어드레스 버스에 의해 제공된 프로그램 메모리 영역들에 대한 어드레스에 응답해서 상기 제3프로그램 메모리 영역에 대한 선택신호를 발생하여 상기 제3프로그램 메모리에 대한 접근을 허용 또는 불허용하는 보안 프로그램 활성화 수단을 더 포함하며,
    상기 보안 프로그램 활성화 수단은 상기 어드레스 버스에 의해 제공된 어드레스가 상기 제2프로그램 메모리 영역의 어드레스일 경우에 상기 제3프로그램 메모리에 대한 상기 선택신호를 활성화하여 상기 제3프로그램 메모리 영역에 대한 접근을 허용하는 것을 특징으로 하는 데이타 처리 시스템.
  4. 제3항에 있어서,
    상기 제1프로그램 메모리 영역의 어드레스 비트의 최상위 어드레스 비트와 상기 제3프로그램 메모리 영역의 어드레스 비트의 최상위 어드레스 비트는 서로 상보적이며,
    상기 선택신호 및 상기 최상위 어드레스 비트의 논리곱 연산에 의해서 상기 프로그램 메모리들에 대한 접근이 허용 또는 불허용되되, 상기 제1프로그래밍 메모리 영역의 최상위 어드레스 비트는 반전되어 연산되는 것을 특징으로 하는 데이타 처리 시스템.
  5. 제1항 또는 제2항에 있어서,
    상기 응용 프로그램에 의해서 처리되는 데이타를 포함하는 제1데이타 메모리 영역과 상기 보안 프로그램에 의해서 처리되는 데이타를 포함하는 제2데이타 메모리 영역을 포함하는 데이타 메모리 영역을 더 포함하되,
    상기 제2프로그램 메모리 영역에서 상기 제3프로그램 메모리 영역으로의 서브루틴 호출이 실행될 때 상기 제3프로그램 메모리 영역에 대한 접근이 허용되는 것을 특징으로 하는 데이타 처리 시스템.
  6. 제5항에 있어서,
    상기 제1프로그램 메모리 영역은 상기 제2프로그램 메모리 영역의 서브루틴 호출을 호출하는 적어도 하나의 서브루틴 호출을 저장하며,
    상기 제1프로그램 메모리 영역에서 상기 제2프로그램 메모리 영역으로의 서브루틴 호출이 실행될 때, 상기 제3프로그램 메모리 영역에 대한 접근이 허용되는 것을 특징으로 하는 데이타 처리 시스템.
  7. 제6항에 있어서,
    상기 프로그램 메모리 영역들에 대한 어드레스를 전송하는 어드레스 버스;
    상기 어드레스 버스에 의해 제공된 프로그램 메모리 영역들에 대한 어드레스에 응답해서 상기 제3프로그램 메모리 영역에 대한 선택신호를 발생하여 상기 제3프로그램 메모리에 대한 접근을 허용 또는 불허용하는 보안 프로그램 활성화 수단을 더 포함하며,
    상기 보안 프로그램 활성화 수단은 상기 어드레스 버스에 의해 제공된 어드레스가 상기 제2프로그램 메모리 영역의 어드레스일 경우에 상기 제3프로그램 메모리에 대한 상기 선택신호를 활성화하여 상기 제3프로그램 메모리 영역에 대한 접근을 허용하는 것을 특징으로 하는 데이타 처리 시스템.
  8. 제1항 또는 제2항에 있어서,
    상기 응용 프로그램이 실행 중일 때에는 상기 보안 프로그램에 대한 접근이 허용되지 않는 것을 특징으로 하는 데이타 처리 시스템.
  9. 제1항 또는 제2항에 있어서,
    상기 보안 프로그램은 사용자 인증 프로그램을 포함하는 것을 특징으로 하는 데이타 처리 시스템.
  10. 마이크로프로세서를 구비한 데이타 처리 시스템에 있어서,
    응용 프로그램을 저장하고 서브루틴 호출을 저장하는 일반 코드 영역, 보안 프로그램을 저장하는 보안 코드 영역, 그리고 상기 일반 코드 영역의 서브루틴 호출에 의해서 상기 보안 코드 영역으로의 서브루틴 호출을 저장하는 벡터 테이블 영역을 포함하는 프로그램 메모리;
    상기 응용 프로그램에 의해 처리되는 일반 데이타를 저장하는 일반 데이타 영역 및 상기 보안 프로그램에 의해 처리되는 보안 데이타를 저장하는 보안 데이타 영역을 포함하는 데이타 메모리; 그리고,
    현재 실행되고 있는 상기 프로그램 메모리의 어드레스를 디코딩하여 상기 보안 코드 영역을 활성화 또는 불활성화 시키는 보안 프로그램 활성화 수단을 포함하되,
    상기 마이크로프로세서의 제어하에 상기 일반 코드 영역에서 상기 보안 코드 영역으로의 서브루틴 호출이 실행될 때 상기 보안 프로그램 활성화 수단은 상기 보안 코드 영역을 활성화시켜 상기 보안 코드 영역에 대한 접근이 허용되는 것을 특징으로 하는 보안 프로그램으로의 임의 접근을 방지하는 데이타 처리 시스템.
  11. 제10항에 있어서,
    상기 보안 코드 영역은 사용자 인증 코드를 포함하며, 상기 벡터 테이블 영역에서의 서브루틴 호출은 상기 사용자 인증 코드를 호출하는 것을 특징으로 하는 보안 프로그램으로의 임의 접근을 방지하는 데이타 처리 시스템.
  12. 일반 코드 영역, 벡터 테이블 영역 및 보안 코드 영역을 포함하되, 상기 일반 코드 영역은 응용 프로그램을 포함하고 상기 벡터 테이블 영역으로의 서브루틴 호출을 저장하며, 상기 벡터 테이블 영역은 상기 보안 코드 영역으로의 서브루틴 호출을 저장하며, 상기 보안 코드 영역은 상기 벡터 테이블 영역에서의 서브루틴 호출에 의해서만 실행되는 보안 프로그램을 저장하는 프로그램 메모리;
    일반 데이타 영역 및 보안 데이타 영역을 포함하는 데이타 메모리;
    현재 실행되고 있는 상기 프로그램 메모리의 어드레스를 디코딩하여 세트 또는 리세트 신호를 출력하는 어드레스 디코더 로직; 및
    상기 어드레스 디코더 로직의 출력 신호에 응답하여 세트 또는 리세트 되어 상기 보안 코드 영역 및 상기 보안 데이타 영역을 활성화 또는 비활성화 시키는 래치 로직을 포함하되,
    상기 어드레스 디코더 로직은 현재 실행되고 있는 프로그램 메모리의 어드레스가 상기 벡터 테이블 영역의 어드레스에 해당하는 경우에만 세트 신호를 출력하는 것을 특징으로 하는 보안 프로그램 임의 접근을 방지하기 위한 스마트 카드.
  13. 제12항에 있어서,
    상기 보안 프로그램 실행을 제어하는 보안전용 프로세서를 더 포함하는 것을 특징으로 하는 보안 프로그램 임의 접근을 방지하기 위한 스마트 카드.
  14. 제12항에 있어서,
    상기 벡터 테이블 영역의 서브루틴 호출은 상기 보안 코드 영역의 사용자 확인 프로그램을 호출하는 것을 특징으로 하는 보안 프로그램 임의 접근을 방지하기 위한 스마트 카드.
  15. 제12항 있어서,
    상기 래치 로직의 출력 신호는, 상기 보안 코드 영역 및 보안 데이타 영역 각각에 인가되어 칩 선택 신호로 작용하는 보안 프로그램 임의 접근을 방지하기 위한 스마트 카드.
  16. 제15항에 있어서,
    상기 일반 코드 영역 및 보안 코드 영역의 어드레스 최상위 비트는 서로 상보적이며,
    현재 실행되고 있는 프로그램 메모리의 코드 영역의 어드레스의 최상위 비트가 상기 일반 코드 영역 및 보안 코드 영역에 인가되어 또 다른 칩 선택 신호로 작용하되, 상기 일반 코드 영역에는 반전되어 인가되고, 이에 따라, 상기 칩 선택 신호 및 상기 또 다른 칩 선택 신호의 논리곱에 의해 상기 보안 코드 영역이 활성화 또는 비활성화 되는 것을 특징으로 하는 보안 프로그램 임의 접근을 방지하기 위한 스마트 카드.
  17. 제16항에 있어서,
    상기 현재 실행되고 있는 프로그램 메모리의 코드 영역의 어드레스의 최상위 비트가 상기 일반 데이타 영역에 인가되어 상기 래치 로직의 출력 신호와 논리곱되어 상기 일반 데이타 영역을 활성화 또는 비활성화 시키는 보안 프로그램 임의 접근을 방지하기 위한 스마트 카드.
  18. 삭제
  19. 삭제
KR10-2002-0029877A 2002-05-29 2002-05-29 강화된 보안 기능을 갖춘 스마트 카드 KR100505106B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR10-2002-0029877A KR100505106B1 (ko) 2002-05-29 2002-05-29 강화된 보안 기능을 갖춘 스마트 카드
US10/424,654 US7353403B2 (en) 2002-05-29 2003-04-28 Computer systems such as smart cards having memory architectures that can protect security information, and methods of using same
JP2003143234A JP2004005679A (ja) 2002-05-29 2003-05-21 コンピュータシステム、メモリ構造、および、プログラムを実行する方法
DE10324337A DE10324337B4 (de) 2002-05-29 2003-05-27 Rechnersystem und zugehöriges Verfahren zum Durchführen eines Sicherheitsprogramms
FR0306427A FR2840421B1 (fr) 2002-05-29 2003-05-27 Systemes informatiques tels que des cartes a puce ayant des architectures de memoire capables de proteger une information de securite, et procedes d'utilisation de ceux-ci
CNB031429238A CN100547541C (zh) 2002-05-29 2003-05-29 具备能保护保密信息的存储结构的计算机系统及应用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0029877A KR100505106B1 (ko) 2002-05-29 2002-05-29 강화된 보안 기능을 갖춘 스마트 카드

Publications (2)

Publication Number Publication Date
KR20030092264A KR20030092264A (ko) 2003-12-06
KR100505106B1 true KR100505106B1 (ko) 2005-07-29

Family

ID=29578170

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0029877A KR100505106B1 (ko) 2002-05-29 2002-05-29 강화된 보안 기능을 갖춘 스마트 카드

Country Status (6)

Country Link
US (1) US7353403B2 (ko)
JP (1) JP2004005679A (ko)
KR (1) KR100505106B1 (ko)
CN (1) CN100547541C (ko)
DE (1) DE10324337B4 (ko)
FR (1) FR2840421B1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006004280A (ja) * 2004-06-18 2006-01-05 Toshiba Kyaria Kk マイクロコンピュータおよび電気機器
US8528102B2 (en) * 2006-10-06 2013-09-03 Broadcom Corporation Method and system for protection of customer secrets in a secure reprogrammable system
US20080263256A1 (en) * 2007-04-20 2008-10-23 Motorola, Inc. Logic Device with Write Protected Memory Management Unit Registers
FR2923634B1 (fr) * 2007-11-13 2010-06-18 Oberthur Card Syst Sa Carte a microprocesseur, telephone comprenant une telle carte et procede d'execution d'une commande dans une telle carte.
US8281154B2 (en) 2009-07-23 2012-10-02 International Business Machines Corporation Encrypting data in volatile memory
US8276188B2 (en) * 2009-12-03 2012-09-25 Condel International Technologies Inc. Systems and methods for managing storage devices
KR101009297B1 (ko) * 2010-05-14 2011-01-18 김진숙 비틀림 식별 라인이 형성되고 편직 방법으로 피복층을 형성한 엘리베이터 보정 체인 및 그 제조장치
KR101009296B1 (ko) * 2010-05-14 2011-01-18 김진숙 곡률반경을 조절 생산할 수 있는 엘리베이터 보정 체인의 제조방법 및 그 방법으로 제조된 엘리베이터 보정 체인
JP2012238273A (ja) * 2011-05-13 2012-12-06 Denso Corp Ram書込制御装置および不正アクセス防止プログラム
US20120265904A1 (en) * 2011-06-23 2012-10-18 Renesas Electronics Corporation Processor system
DE102012218363A1 (de) * 2012-10-09 2014-04-10 Continental Automotive Gmbh Verfahren zur Steuerung eines getrennten Ablaufs von verknüpften Programmblöcken und Steuergerät
JP2015026358A (ja) * 2013-06-20 2015-02-05 株式会社東芝 デバイス、ホスト装置、ホストシステム、及びメモリシステム
US9836318B2 (en) * 2014-02-21 2017-12-05 Infineon Technologies Ag Safety hypervisor function
US9703948B2 (en) 2014-03-28 2017-07-11 Intel Corporation Return-target restrictive return from procedure instructions, processors, methods, and systems
CA2884544A1 (en) * 2015-03-10 2016-09-10 Scs Card Technology Inc. Multi-application personal health record microprocessor card
FR3118219B1 (fr) * 2020-12-17 2024-03-15 Stmicroelectronics Grand Ouest Sas Procédé de protection d’un système, par exemple un microcontrôleur, et sytème correspondant

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR940024630A (ko) * 1993-04-22 1994-11-18 미쉘 꼴롱브 스마트 카드용 키 보호장치
JPH07210642A (ja) * 1994-01-11 1995-08-11 Dainippon Printing Co Ltd Icカード
JPH0855204A (ja) * 1994-08-12 1996-02-27 Dainippon Printing Co Ltd Cpu付きicカード及びcpu付きicカードに於けるアクセス可能アドレス制限方法
JPH0935018A (ja) * 1995-07-17 1997-02-07 Dainippon Printing Co Ltd 携帯可能情報記録媒体およびそのアクセス方法
KR100232087B1 (ko) * 1994-01-14 1999-12-01 미쉘 꼴롱브 프로그램으로 제어되는 시큐리티 액세스 콘트롤을 가진 보안성 메모리 카드
KR20020039374A (ko) * 1999-10-19 2002-05-25 바누치 유진 지. 상이한 메모리 기술 특성을 갖는 분할 메모리 장치

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5783850A (en) * 1980-11-12 1982-05-25 Mitsubishi Electric Corp Data processing device
US5027317A (en) * 1989-03-17 1991-06-25 Allen-Bradley Company, Inc. Method and circuit for limiting access to a RAM program memory
US5081675A (en) * 1989-11-13 1992-01-14 Kitti Kittirutsunetorn System for protection of software in memory against unauthorized use
JP2677458B2 (ja) * 1991-01-25 1997-11-17 松下電器産業株式会社 システムコール実行装置
US5610981A (en) * 1992-06-04 1997-03-11 Integrated Technologies Of America, Inc. Preboot protection for a data security system with anti-intrusion capability
FR2711833B1 (fr) * 1993-10-28 1995-12-01 Sgs Thomson Microelectronics Circuit intégré contenant une mémoire protégée et système sécurisé utilisant ledit circuit intégré.
JP3221588B2 (ja) 1994-04-28 2001-10-22 日本電信電話株式会社 通信インタフェースモジュール及び通信制御方法
US5513337A (en) * 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
JPH08272625A (ja) * 1995-03-29 1996-10-18 Toshiba Corp マルチプログラム実行制御装置及び方法
JPH0922385A (ja) * 1995-07-05 1997-01-21 Rohm Co Ltd データセキュリティ装置および方法
DE19709975C2 (de) * 1997-03-11 1999-04-22 Siemens Ag Mikrocomputer
US6220510B1 (en) * 1997-05-15 2001-04-24 Mondex International Limited Multi-application IC card with delegation feature
US6259124B1 (en) * 1998-08-07 2001-07-10 Eastman Kodak Company Active pixel sensor with high fill factor blooming protection
US6609199B1 (en) * 1998-10-26 2003-08-19 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US6633984B2 (en) * 1999-01-22 2003-10-14 Sun Microsystems, Inc. Techniques for permitting access across a context barrier on a small footprint device using an entry point object
JP4226760B2 (ja) * 2000-05-08 2009-02-18 株式会社東芝 マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
JP4033619B2 (ja) * 2000-05-26 2008-01-16 シャープ株式会社 サーバ装置
FR2811096A1 (fr) * 2000-06-28 2002-01-04 St Microelectronics Sa Microprocesseur securise comprenant un systeme d'attribution de droits a des librairies
JP2002149431A (ja) * 2000-11-07 2002-05-24 Nec Corp マイクロコンピュータ

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR940024630A (ko) * 1993-04-22 1994-11-18 미쉘 꼴롱브 스마트 카드용 키 보호장치
JPH07210642A (ja) * 1994-01-11 1995-08-11 Dainippon Printing Co Ltd Icカード
KR100232087B1 (ko) * 1994-01-14 1999-12-01 미쉘 꼴롱브 프로그램으로 제어되는 시큐리티 액세스 콘트롤을 가진 보안성 메모리 카드
JPH0855204A (ja) * 1994-08-12 1996-02-27 Dainippon Printing Co Ltd Cpu付きicカード及びcpu付きicカードに於けるアクセス可能アドレス制限方法
JPH0935018A (ja) * 1995-07-17 1997-02-07 Dainippon Printing Co Ltd 携帯可能情報記録媒体およびそのアクセス方法
KR20020039374A (ko) * 1999-10-19 2002-05-25 바누치 유진 지. 상이한 메모리 기술 특성을 갖는 분할 메모리 장치

Also Published As

Publication number Publication date
FR2840421A1 (fr) 2003-12-05
JP2004005679A (ja) 2004-01-08
CN100547541C (zh) 2009-10-07
US7353403B2 (en) 2008-04-01
DE10324337A1 (de) 2003-12-24
CN1461992A (zh) 2003-12-17
KR20030092264A (ko) 2003-12-06
DE10324337B4 (de) 2005-11-10
US20030233565A1 (en) 2003-12-18
FR2840421B1 (fr) 2007-02-23

Similar Documents

Publication Publication Date Title
KR100505106B1 (ko) 강화된 보안 기능을 갖춘 스마트 카드
US5432950A (en) System for securing a data processing system and method of operation
US5237616A (en) Secure computer system having privileged and unprivileged memories
JP3710671B2 (ja) 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法
US9836609B2 (en) Event-based apparatus and method for securing bios in a trusted computing system during execution
US6453417B1 (en) Microcontroller with secure signature extraction
KR100386154B1 (ko) 휴대용데이터처리장치를포함한데이터교환시스템
US9430409B2 (en) Memory protection
US6160734A (en) Method for ensuring security of program data in one-time programmable memory
CN101281506B (zh) 数据处理系统内基于存储器域的安全控制
KR970004513B1 (ko) 데이타 처리장치
KR20000048718A (ko) 안전 부팅
JP2007226839A (ja) データ構造を記憶するメモリ及び方法
CN1954302A (zh) 数字信号控制器安全存储器分割
WO2007004219A2 (en) System, device and method of verifying that a code is executed by a processor
US7409251B2 (en) Method and system for writing NV memories in a controller architecture, corresponding computer program product and computer-readable storage medium
EP1172731A2 (en) Data processing apparatus and integrated circuit
US20130055025A1 (en) Microprocessor protected against memory dump
US9542113B2 (en) Apparatuses for securing program code stored in a non-volatile memory
US20190370439A1 (en) Secure system on chip for protecting software program from tampering, rehosting and piracy and method for operating the same
US20020174309A1 (en) Protection against abusive use of a statement in a storage unit
JP3234959B2 (ja) マイクロコンピュータおよびこれを内蔵するカード
US20070220612A1 (en) Protection of a program against a trap
KR20070052113A (ko) 스마트카드 및 그것의 쓰기 제어 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130701

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140630

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150630

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20170630

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20180629

Year of fee payment: 14