KR20100114817A - Ic 칩 및 이것을 탑재한 정보 처리 장치 - Google Patents

Ic 칩 및 이것을 탑재한 정보 처리 장치 Download PDF

Info

Publication number
KR20100114817A
KR20100114817A KR1020100001375A KR20100001375A KR20100114817A KR 20100114817 A KR20100114817 A KR 20100114817A KR 1020100001375 A KR1020100001375 A KR 1020100001375A KR 20100001375 A KR20100001375 A KR 20100001375A KR 20100114817 A KR20100114817 A KR 20100114817A
Authority
KR
South Korea
Prior art keywords
data
processing unit
application
arithmetic processing
memory
Prior art date
Application number
KR1020100001375A
Other languages
English (en)
Other versions
KR101070580B1 (ko
Inventor
히로끼 야마자끼
마꼬또 아이까와
가즈노리 하시모또
Original Assignee
가부시키가이샤 히타치세이사쿠쇼
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시키가이샤 히타치세이사쿠쇼 filed Critical 가부시키가이샤 히타치세이사쿠쇼
Publication of KR20100114817A publication Critical patent/KR20100114817A/ko
Application granted granted Critical
Publication of KR101070580B1 publication Critical patent/KR101070580B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

시큐러티를 유지하면서, 사용하기에 편리한 IC 칩 및 이것을 탑재한 정보 처리 장치를 제공한다. 본 발명에 따른 IC 칩은, 암호 처리를 실행하기 위한 제어 프로그램을 기억하는 제1 메모리와, 어플리케이션을 기억하는 제2 메모리와, 상기 어플리케이션의 소정 영역에 기억된 암호 비밀키의 적어도 일부로 구성된 제1 데이터를 수취하고, 상기 제어 프로그램에 기초하여 암호 처리를 행하는 연산 처리부와, 상기 연산 처리부의 제어에 의해 소정의 연산 처리를 행하는 보조 연산 처리부를 구비한다. 상기 제1 데이터가 상기 보조 연산 처리부의 소프트웨어 인터페이스에 의해 규정된 데이터 형식에 적합하지 않은 경우, 상기 연산 처리부는, 상기 데이터 형식에 적합하도록 상기 제1 데이터에 처리를 실시한 제2 데이터를 생성하고, 상기생성된 제2 데이터를 상기 제2 메모리에 구비한 데이터 테이블에 기억하도록 제어한다.

Description

IC 칩 및 이것을 탑재한 정보 처리 장치{IC CHIP AND INFORMATION PROCESSING DEVICE HAVING THE SAME}
본 발명은, 암호 처리를 행하는 IC 칩 및 이것을 탑재한 정보 처리 장치에 관한 것이다.
최근, 컴퓨터 등의 정보 기기를 이용하여 금융 거래나 입퇴장 관리를 행하는 경우의 본인 확인의 수단으로서, 암증 번호나 패스워드 등의 본인만 알 수 있는 정보를 확인하는 것이나, 카드 등의 본인만이 소지할 수 있는 물건을 이용하여 확인하는 것 등이 일반적으로 행하여지고 있다. 특히, 내탬퍼 성능을 갖는 IC 칩을 탑재한 IC 카드에서는, IC 칩 내부에 보호된 비밀 정보를 이용하여 암호 처리를 행하는 것이 가능하여, 본인 확인의 수단으로서 널리 이용되고 있다.
이와 같은 IC 카드에 저장되는 비밀 정보로서는, 공개키 암호의 비밀키가 있다. 공개키 암호의 비밀키는 매우 기밀성이 높은 정보이며, 보다 강고한 시큐러티를 확보하기 위해서 암호화하여 저장하는 것이 바람직하다.
특허 문헌 1에는, 프라이빗 키를 패스워드에 의해 암호화하여 보관하는 방법이 기재되어 있다. 구체적으로는, 유저에 의해 보관하고자 하는 프라이빗 키와 패스워드가 입력되면, 패스워드로부터 프라이빗 키를 암호화하기 위한 DES(Data Encryption standard) 암호의 키를 생성하고, 이 키에 의해 프라이빗 키를 암호화하고, 프라이빗 키로부터 생성된 식별자와 암호화 프라이빗 키를 키 관리 테이블에 보관한다. 그리고, 연산 처리의 대상인 데이터와 함께, 식별자와 패스워드가 입력 되면, 식별자에 기초하여 키 관리 테이블로부터 암호화 프라이빗 키를 취득하고, 패스워드에 의해 복호하고, 복호한 프라이빗 키를 이용하여 데이터의 연산을 행한다.
[특허문헌1]일본특개2000-349749호공보
공개키 암호의 비밀키를 이용한 처리를, 예를 들면 비접촉 통신 인터페이스에서의 통신 중에 행함으로써, 시큐러티나 신뢰성을 향상할 수 있다. 한편, 비접촉 통신 인터페이스를 이용한 통신은 고속 처리가 요구되지만, 공개키 암호의 비밀키를 복호화하고, 그 비밀키로 공개키 암호 처리를 행한다고 하는 프로세스에는 시간이 걸리게 되어, 사용하기에 불편하다고 하는 문제가 있다.
따라서, 본 발명은, 시큐러티를 유지하면서, 사용하기에 편리한 IC 칩 및 이것을 탑재한 정보 처리 장치를 제공하는 것을 목적으로 한다.
본 발명에 따른 IC 칩은, 암호 처리를 실행하기 위한 제어 프로그램을 기억하는 제1 메모리와, 어플리케이션을 기억하는 제2 메모리와, 상기 어플리케이션의 소정 영역에 기억된 암호 비밀키의 적어도 일부로 구성된 제1 데이터를 수취하고, 상기 제어 프로그램에 기초하여 암호 처리를 행하는 연산 처리부와, 상기 연산 처리부의 제어에 의해 소정의 연산 처리를 행하는 보조 연산 처리부를 구비한다. 상기 제1 데이터가 상기 보조 연산 처리부의 소프트웨어 인터페이스에 의해 규정된 데이터 형식에 적합하지 않은 경우, 상기 연산 처리부는, 상기 데이터 형식에 적합하도록 상기 제1 데이터에 처리를 실시한 제2 데이터를 생성하고, 상기 생성된 제2 데이터를 상기 제2 메모리에 구비한 데이터 테이블에 기억하도록 제어한다.
본 발명에 따르면, 시큐러티를 유지하면서, 사용하기에 편리한 IC 칩 및 이것을 탑재한 정보 처리 장치를 제공할 수 있다.
도 1은 IC 카드의 구성예를 도시하는 도면.
도 2는 IC 칩의 데이터 플로우 일례를 도시하는 도면.
도 3은 공개키 암호 비밀키의 암호 처리 및 데이터 테이블에의 데이터 저장 처리의 일례를 도시하는 도면.
도 4는 공개키 암호 처리 플로우예를 도시하는 도면.
도 5는 어플리케이션의 삭제 처리 플로우예를 도시하는 도면.
도 1은 IC 카드의 구성예를 도시하는 도면이다.
IC 카드(1)는, IC 칩(2)을 탑재하는 카드이다. IC 카드(1)의 재질로서는, 예를 들면 플라스틱 등이 이용된다. 또한, 도 1의 예에는 기재하고 있지 않지만, IC 카드(1)에, 자기 기록 테이프 부가나 엠보스 가공 등의 처리가 실시되어 있어도 되고, 비접촉 통신 등의 통신을 행하기 위한 안테나가 탑재되어 있어도 된다.
IC 칩(2)은, 외부로부터 취득한 데이터나 내부에 보관한 데이터의 암호 처리를 행하는 기능을 갖는다. 또한,IC 칩(2)은 IC 카드(1)의 표면에 노출된 형태로 탑재되어도 되고, IC 카드(1)의 내부에 매립되어 있어도 된다.
IC 칩(2)은, 프로그램 저장 메모리(10)와, 데이터 저장 메모리(20)와, 연산 처리부(30)와, 보조 연산 처리부(40)와, 통신부(50)를 갖고 있다. 이들 구성은, 통신용 버스 등을 통하여, 서로 접속되어 있다. 또한, 도 1의 예에서는, 프로그램 저장 메모리(10)와 데이터 저장 메모리(20)를 각각의 구성으로 하고 있지만, 1개의 메모리로 구성하도록 하여도 된다.
연산 처리부(30)는, IC 칩(2) 전체를 제어하는 것이며, 예를 들면 마이크로프로세서가 이용된다. 연산 처리부(30)는, 프로그램 저장 메모리(10)에 저장되어 있는 프로그램을 읽어내어, 암호 처리 등의 처리를 실행한다.
보조 연산 처리부(40)는, 연산 처리부(30)의 제어에 의해, 소정의 연산에 특화된 처리를 행하는 코프로세서이다. 예를 들면, 연산 처리부(30)가 프로그램 저장 메모리(10)에 저장되어 있는 암호 처리 프로그램을 실행하는 경우에, 보조 연산 처리부(40)는, 암호 계산이나 잉여 승산 연산을 고속으로 행하는 몽고메리 승산 등, 소정의 연산 처리를 행한다.
통신부(50)는, IC 칩(2)과 외부 장치 사이에서 정보를 송수신한다. 통신부(50)로서는, 예를 들면, ISO/IEC 7816 등의 통신 규격에 따른 접촉 통신 모듈이나, ISO/IEC 14443 등의 통신 규격에 따른 비접촉 통신 모듈, USB 모듈, 싱글 와이어 프로토콜에 따른 통신을 행하는 모듈 등이 이용된다.
프로그램 저장 메모리(10)는, ROM(Read Only Memory) 등의 반도체 메모리 등으로 구성되고, 연산 처리부(30)에서 실행되는 제어 프로그램을 저장한다. 프로그램 저장 메모리(10)는, 카드 오퍼레이팅 시스템(100)(이하 카드 OS(100))과, 라이브러리(110)와, OS용 암호키(120)를 갖는다. 또한,이하, 연산 처리부(30), 보조 연산 처리부(40), 카드 OS(100), 라이브러리(110)를 플랫폼이라고 칭한다.
카드 OS(100)는, 플랫폼에 의존하지 않는 범용의 어플리케이션과의 사이에서 데이터의 수수를 할 때에 이용되는 가상 머신(101)을 갖고, 라이브러리(110)나 데이터 저장 메모리(20)에 기억된 어플리케이션의 읽어내기를 제어한다. 가상 머신(101)은, 범용의 어플리케이션과의 사이에서 수수하는 데이터의 종류나 조건 등의 데이터 형식을 정한 소프트웨어 인터페이스(API)에 기초하여, 데이터의 주고 받기를 행한다.
또한, 카드 OS(100)로서는, 예를 들면 MULTOS(등록 상표)나 Java(등록 상표)가 이용된다. 또한, 본 예에서는, 가상 머신(101)을 이용하고 있지만, 이에 한정되는 것은 아니다. 가상 머신을 이용하지 않고 연산 처리부(30)가 어플리케이션을 직접 실행하는 구성으로 하여도 된다.
라이브러리(110)는, 암호 처리 등의 처리를 행하기 위한 프로그램이며, 카드 OS(100)에 의해 읽어내어지고, 연산 처리부(30)에 의해 실행된다. 라이브러리(110)는, 카드 OS(100)와의 사이에서 데이터의 수수를 하는 데이터 형식을 정한 소프트웨어 인터페이스에 기초하여, 데이터의 주고 받기를 행한다.
OS용 암호키(120)는, 연산 처리부(30)에 의해 실행되는 암호 처리에 이용되는 암호키이다. OS용 암호키(120)에는, 예를 들면 공통키 방식의 블록 암호의 키 등이 이용된다. 또한, 본 예에서는, OS용 암호키(120)를 프로그램 저장 메모리(10)에 보존하고 있지만, 이에 한정되는 것이 아니라, 암호키의 전부 또는 일부를, 데이터 저장 메모리(20)나 연산 처리부(30) 등 다른 모듈 내에 보존하도록 하여도 된다.
데이터 저장 메모리(20)는, EEPROM(Electrically Erasable and Programmable ROM) 등의 반도체 메모리 등으로 구성되고, 어플리케이션(200), 어플리케이션(210)과, 데이터 테이블(220)을 기억한다.
어플리케이션(200 및 210)은 공개키 암호 처리를 행하기 위한 프로그램이며, 가상 머신(101)의 소프트웨어 인터페이스를 통하여 연산 처리부(30)에 의해 실행된다. 또한, 어플리케이션(200 및 210)은 각각 공개키 암호 처리에 이용되는 공개키 암호 비밀키(이하, 비밀키라고 약칭함)를 기억하는 비밀키 기억 영역(201 및 211)을 갖는다. 또한, 도 1에서는, 2개의 어플리케이션을 기억하고 있는 예를 나타내고 있지만, 기억하는 어플리케이션을 2개로 한정하는 것이 아니라, 1개 혹은 3 이상의 어플리케이션을 기억하도록 하여도 된다. 또한, 데이터 저장 메모리(20)는, 다운로드 등에 의해 입수된 어플리케이션을 추가하거나, 기억되어 있는 어플리케이션을 삭제하거나 할 수 있는 것이 바람직하다.
여기서, 어플리케이션(200, 210)과 카드 OS(100)와 라이브러리(110) 사이에서 주고 받아지는 데이터의 일례에 대하여 도 2를 이용하여 설명한다. 또한, 도 2에서는, 어플리케이션(200)을 이용한 경우를 예로 하고 있지만, 어플리케이션(210)을 이용한 경우도 마찬가지이다. 도 2에서, 도 1과 동일한 구성은 동일한 부호를 붙이고, 설명을 생략한다.
도 2의 예에서는, 어플리케이션(200)은, 비밀키 기억 영역(201)에 기억된 비밀키의 일부 또는 전부를 카드 OS(100)에 건네준다. 예를 들면, 비밀키가 RSA(Rivest Shamir Adleman) 공개키 암호의 비밀키인 경우, P, Q, U, DP, DQ의 데이터(5개를 통합하여 데이터(900)라고 함)를 카드 OS(100)에 건네준다. 이 때, 어플리케이션(200)이, 플랫폼에 의존하지 않는 범용의 어플리케이션인 경우, 가상 머신(101)을 통하여 카드 OS(100)와 데이터의 주고 받기를 행할 필요가 있다. 본 예에서는, 소프트웨어 인터페이스에 기초하여, 데이터(900)의 형식으로 가상 머신(101)과 어플리케이션(200) 사이에서 비밀 정보의 수수를 행하는 것이 사전에 정해져 있는 것으로 한다.
또한,P, Q, U, DP, DQ는, RSA 공개키 암호 비밀키로서 일반적으로 이용되고 있고, 각각, 제1 비밀 소수, 제2 비밀 소수, 비밀 계수, 제1 비밀 소수에 기초하는 비밀 지수, 제2 비밀 소수에 기초하는 비밀 지수를 나타낸다.
상술한 바와 같이, 공개키 암호의 처리를 고속화하기 위해서, 특정한 연산에 특화된 처리를 행하는 코프로세서인 보조 연산 처리부(40)나 암호 처리를 행하기 위한 프로그램인 라이브러리(100)가 이용된다. 카드 OS(100)는 수취한 데이터를 보조 연산 처리부(40)나 라이브러리(100)에 넘겨주는 것이 필요하지만, 일반적으로 코프로세서나 라이브러리는 그 내부 처리를 자유롭게 변경할 수 없고, 사용을 위한 소프트웨어 인터페이스가 미리 정해져 있다. 예를 들면, 라이브러리(100)는 데이터(900)를 수취할 수 없고, 카드 OS(100)는, 데이터(900)에 특정한 처리를 실시하고, N, E(각각, 모듈러스수, 공개 지수) 등의 데이터를 추가한 데이터(901)를 생성할 필요가 있다.
또한, 도 2에서는, RSA 공개키 암호를 이용한 경우를 예로 하여 기재하고 있지만, 이에 한정되는 것이 아니라, 타원 암호에 기초하는 공개키 암호 등의 다른 공개키 암호나, 공통키 암호를 이용하여도 된다.
이상 설명한 바와 같이, 공개키 암호의 처리를 고속화하기 위해서 보조 연산 처리부(40)나 라이브러리(100)를 이용하는 경우에, 이들 소프트웨어 인터페이스에 적응하도록 데이터 생성이 필요하다. 그러나, 공개키 암호 처리 시마다 데이터 생성을 행하고 있었던 것에서는, 처리의 고속화를 도모할 수 없다고 하는 문제가 있다. 이 문제를 해결하기 위해서, 생성한 데이터를 보존해 두는 방법이 생각된다. 생성 데이터를 보존해 두는 경우, 복수의 어플리케이션마다 보존된 생성 데이터를 읽어내기 위한 식별자가 필요로 된다. 그러나, 상술한 바와 같이, 소프트웨어 인터페이스에 의해 수수를 행하는 데이터의 형식이 정해져 있기 때문에, 자유로운 형식의 식별자를 이용할 수는 없다. 한편, 예를 들면 데이터(900) 등의 비밀 정보 그 자체를 식별자로 한 경우에는, 데이터의 수수를 할 수 있지만, 시큐러티를 확보할 수는 없다고 하는 문제가 있다. 이하, 이 식별자의 설정 방법과 함께, 데이터 저장 메모리(20)에 설치된 데이터 테이블(220)에 대하여 설명한다.
데이터 테이블(220)은, 키 MAC(Message Authentication Code)값(230, 240)과 연산용 데이터(231, 241)를 대응지어 보존한다. 도 1의 예에서는, 2조의 키 MAC값과 연산용 데이터를 보존하고 있지만, 이에 한정되는 것이 아니라, 1조 또는 3조 이상의 데이터를 보존하도록 하여도 된다. 또한, 1개의 키 MAC값에 대하여 복수의 연산용 데이터가 대응지어져 기억되어 있어도 된다.
여기서 키 MAC값이란, 데이터(900)의 CBC(Cipher Block Chaining)-MAC값이며, 데이터 테이블(220)을 참조하기 위해서 이용되는 식별자이다. CBC-MAC값이란, 데이터(900) 등, 암호 처리를 실시하는 대상에 CBC 모드의 블록 암호 처리를 실시한 결과 얻어진 MAC값의 최종 블록의 값을 가리킨다. 이와 같이, 키 MAC값은, 데이터(900) 등, 플랫폼의 소프트웨어 인터페이스에 적합한 데이터로부터 생성되기 때문에, 라이브러리(110) 등에 데이터의 수수를 할 수 있다. 또한, 데이터(900) 등, 비밀 정보를 암호화할 때에, 그 비밀 정보에 관련된 정보를 데이터 테이블(220)로부터 읽어내기 위한 식별자를 생성할 수 있기 때문에, 효율적으로 처리를 행할 수 있다.
또한, 블록 암호의 CBC 모드에 의한 처리에서는, 임의의 평문 블록과 그 전단 블록의 암호 결과와의 배타적 논리합을 취한 것에 대하여 암호 처리를 실시하고, 그것을 해당 블록의 암호 결과로 한다. 따라서, CBC 모드에 의한 암호화에서는, 평문 메시지 전체가 염주처럼 줄줄이 엮어져 암호화되기 때문에, 최종 블록의 암호 결과(이것을 CBC-MAC값이라고 함)는, 평문 메시지 전체를 반영한 해시값으로서 이용할 수 있다.
또한,CBC-MAC값의 생성은 암호 처리이기 때문에, 데이터(900) 등의 비밀 정보라도, 계산 도중에 데이터가 누설되는 등의 위험성이 낮아, 안전하게 계산할 수 있다. 또한, CBC-MAC값으로부터 원래의 비밀 정보를 복원할 수는 없다. 그 때문에, 테이블 참조를 위한 식별자의 비교 연산이, IC 칩에의 부정한 공격에 의해 외부에 누설된 경우라도, 그 정보로부터 원래의 비밀 정보를 취득할 수는 없어, 시큐러티를 유지할 수 있다고 하는 효과를 갖는다.
데이터 테이블(220)의 연산용 데이터에는, 어플리케이션(200, 210)으로부터 제공되는 비밀 정보(예를 들면 데이터(900))를, 라이브러리(110) 등의 소프트웨어 인터페이스에 적합하도록 형성된 데이터(예를 들면, N, E 등의 생성 데이터, 또는, 생성 데이터를 포함하는 데이터(901)를 저장한다.
또한, 예를 들면 가상 머신(101)과 라이브러리(110)에서 데이터 패딩의 방식이나 다바이트 길이 데이터를 취급할 때의 엔디안이 상이한 경우가 생각된다. 가상 머신에서는 다바이트 길이 데이트를 빅 엔디안으로 취급하고, 라이브러리(110)에서는 다바이트 길이 데이터를 리틀 엔디안으로 취급하는 경우, 빅 엔디안의 다바이트 길이 데이터를 리틀 엔디안으로 변환하고, 연산용 데이터에 저장해 둔다. 엔디안의 변환은 메모리의 카피를 수반하지만, 비밀 정보를 메모리 카피하는 경우, 그 때의 소비 전력 파형으로부터 데이터가 누설되는 것을 방지하기 위해서, 카피의 순번을 랜덤하게 행하는 등의 처리를 요하여, 그 만큼 시간이 걸린다. 그 때문에, 이와 같이 변환된 데이터를 연산용 데이터에 저장해 둠으로써, 처리 시간을 단축할 수 있다. 또한, 저장하는 연산용 데이터가 비밀 정보인 경우에는 암호화하고 나서 보존하고, 복호화하고 나서 이용한다.
여기서, IC 칩(2)에서의 데이터의 흐름의 일례를, 도 2를 이용하여 보충한다.
우선, 데이터(900)가 어플리케이션(200)으로부터 가상 머신(101)을 통하여 카드 OS(100)에 건네진다. 연산 처리부(30)는, 카드 OS(100)에 의해 데이터(900)의 일부 또는 전부의 CBC-MAC값을 계산하고, 그 값(데이터(902))을 이용하여 데이터 테이블(220)을 참조한다. 참조의 결과, 데이터(902)가 키 MAC값(230)과 합치한 경우, 카드 OS(100)는, 연산용 데이터(231)를 읽어내어, 데이터(903)로서 취득한다. 도 2의 예에서는, 데이터(903)는 N, E이다. 카드 OS(100)는, 데이터(900)와 데이터(903)를 합하여, 데이터(901)로서 라이브러리(110)에 넘겨준다.
다음으로, 도 3을 이용하여, 비밀키의 암호 처리 및 데이터 테이블(220)에의 데이터 저장 처리의 일례에 대하여 설명한다.
도 3에 도시한 처리 플로우는, 카드 OS(100) 등의 프로그램에 기초하여, 연산 처리부(30)에 의해 실행된다. 또한,이 처리 플로우는, 다운로드 등에 의해 새롭게 취득한 어플리케이션을 데이터 저장 메모리(20)에 보존한 경우, 혹은, 그 어플리케이션을 처음으로 실행한 경우를 계기로 개시된다. 이하, 새롭게 보존된 어플리케이션 혹은, 처음으로 실행되는 어플리케이션이 어플리케이션(200)인 경우를 예로 설명을 행한다.
우선, 어플리케이션(200)으로부터 가상 머신(101)을 통하여 카드 OS(100)에, 비밀키 기억 영역(201)에 기억된 비밀키가 건네진다(S1000). 이 때, 어플리케이션(200)으로부터 카드 OS(100)에 비밀키의 값 그 자체가 건네져도 되고, 비밀키가 저장되어 있는 비밀키 기억 영역(201)을 특정하는 정보가 건네져도 된다. 연산 처리부(30)는, 비밀키를 수취하면, 비밀키의 엔디안을 플랫폼에 적합한 형태로 변환하고, OS용 암호키(120)를 이용하여 CBC-MAC 방식으로 암호화를 행한다(S1010).
여기서, 어플리케이션(200)이 플랫폼에 의존하지 않는 어플리케이션인지의 여부를 판단한다(S1020). 플랫폼에 의존한 어플리케이션의 경우, 연산 처리를 행하지 않고, 라이브러리(110) 등과의 사이에서 데이터 수수를 할 수 있기 때문에, S1040으로 진행한다. 또한, 도 1의 예에서는, 미리 데이터 테이블(220)이 설치되어 있지만, 데이터 저장 메모리(20)에 기억되어 있는 어플리케이션이 모두 플랫폼에 의존한 어플리케이션인 경우에는, 데이터 테이블(220)를 설치하지 않고, 플랫폼에 의존하지 않는 어플리케이션이 새롭게 기억된 경우에 데이터 테이블(220)을 설치하도록 하여도 된다.
한편, 플랫폼에 의존하지 않는 어플리케이션인 경우에는(S1010 아니오), 연산 처리부(30)는 연산용 데이터(231)를 생성한다. 생성된 연산용 데이터(231)는, S1010의 암호 처리에 의해 얻어진 키 MAC값(230)과 대응지은 형태로 데이터 테이블(220)에 보존된다(S1030). S1010에서 키 MAC값(230)이 생성되면, 암호화된 비밀키는, 가상 머신(101) 경유로 카드 OS(100)로부터 어플리케이션(200)에 건네진다(S1040).
어플리케이션(200)은, 카드 OS(100)로부터 수취한 암호화된 비밀키를 비밀키기억 영역(201)에 보존한다(S1050). 이 때, 암호화되기 전의 비밀키는 삭제되는 것이 바람직하다.
또한, 도 3의 플로우는 일례이며, 이에 한정되는 것은 아니다. 예를 들면, S1030과, S1050을 동일한 타이밍에서 행하도록 하여도 된다. 또한,S1020 전에 S1040 및 S1050을 실행하도록 하여도 된다.
다음으로, 공개키 암호 처리를 행할 때의 처리 플로우에 대하여, 도 4를 이용하여 설명한다. 이하, 어플리케이션(200)에 결제 정보가 포함되어 있고, IC 카드(1)가 ATM 등의 카드 리더와의 통신을 개시한 경우를 예로 설명을 행한다.
우선, 어플리케이션(200)의 비밀키 기억 영역(201)으로부터 암호화된 비밀키를 읽어내어, 가상 머신(101)에 암호화된 비밀키와, 예를 들면 결제 정보 등, 암호 처리 대상의 정보가 건네진다(S2000). 여기서, 어플리케이션을 처음으로 실행할 때에 도 3에 도시한 처리를 실행하도록 설정되어 있는 경우, 비밀키가 아직 암호화 되어 있지 않은 경우가 있다. 이 경우에는, S2000에서 도 3의 처리를 실행한 후에, 암호화된 비밀키 및 암호화 대상의 정보의 수수를 행한다.
가상 머신(101) 경유로 카드 OS(100)가 암호화된 비밀키(MAC값)을 수취하면, 연산 처리부(30)는 암호화된 비밀키의 최종 블록(CBC-MAC값)과 데이터 테이블(220)의 키 MAC값을 비교한다(S2010).
대응하는 데이터가 데이터 테이블(220)에 존재하는 경우에는, 연산용 데이터를 데이터 테이블(220)로부터 취득한다(S2020). 한편, 데이터 테이블(220)에 대응하는 값이 존재하지 않는 경우에는, S2030으로 이행한다.
또한,S2010 전에, 실행 지시된 어플리케이션이 플랫폼에 의존한 어플리케이션인지의 여부를 판별하고, 플랫폼에 의존하고, 연산 데이터가 불필요한 경우에는, S2010의 처리를 생략하고, S2030부터 처리를 실행하도록 하여도 된다. 또한,S2010에서 대응하는 데이터가 없는 경우에, 도 3의 S1020의 판별을 행하고, 연산 처리 데이터가 필요한 경우에는 S1030을 실행한 후에, S2030으로 이행하도록 하여도 된다. 또한, 이와 같은 처리를 행하는 경우에는, 데이터 테이블에 연산 데이터가 불필요한 것을 나타내는 플래그를 세워 두는 것이 바람직하다. 이에 의해, 플래그가 없는 경우에만 S2010 후에 S1020을 실행하도록 제어할 수 있어, 불필요한 처리를 생략할 수 있다.
연산 처리부(30)에 의해, S2000에서 카드 OS(100)가 수취한 암호화된 비밀키를 OS용 암호키(120)로 복호한다. 결제 정보 등의 암호화 대상의 정보와 함께, 복호된 비밀키와, S2020이나 S2030에서 얻어진 연산용 데이터가, 카드 OS(100)로부터 라이브러리(110)에 넘겨진다(S2030). 연산 처리부(30)는, 라이브러리(110)의 프로그램에 기초하여, 보조 연산 처리 장치(40)를 이용하여, 결제 정보 등, 암호화가 필요한 정보의 암호 처리를 실행한다(S2040). 암호화된 정보는, 라이브러리(110)로부터 카드 OS(100)를 통하여 어플리케이션(200)에 넘겨지고, 통신부(50)로부터 출력된다(S2050). 또한,S2050에서, 통신부(50)로부터의 출력 대신에, 혹은 출력과 함께, 어플리케이션(200)의 소정 영역에 암호화된 정보를 보존하도록 하여도 된다.
이상 설명한 바와 같이, 도 1의 예에 도시한 바와 같이 보조 연산 처리부(40)나 라이브러리(100)를 이용하는 경우라도, 비밀키의 CBC-MAC값을 데이터 테이블 참조값으로 하여, 보조 연산 처리부(40) 등에의 데이터 수수에 필요한 데이터를 보존해 둠으로써, 시큐러티를 손상시키지 않고, 처리를 고속화할 수 있다.
또한, 도 1의 예에서는, 라이브러리(110)를 이용하는 구성을 나타냈지만, 라이브러리(110)를 설치하지 않고, 보조 연산 처리부(40)에 의해 암호 처리를 행하여도 된다. 이 경우, 보조 연산 처리부(40)는, 예를 들면 몽고메리 승산에 특화된 연산 처리 장치인 것으로 한다. 몽고메리 승산은, 잉여 승산에 걸리는 처리 시간을 삭감할 수 있는 연산 처리이며, 이에 의해 공개키 암호 처리를 고속화하는 것이 가능하다. 여기서, 임의의 수를 몽고메리 승산하는 경우, 모듈러스수 N과 R=2DL(단 DL은 모듈러스수 N의 비트 길이)로부터 정해지는 R2 mod N의 값이 필요로 되지만, 공개키 암호 처리를 비롯한 잉여 연산의 처리에 대하여, 어플리케이션과 가상 머신의 소프트웨어 인터페이스로서 R2 mod N을 넘겨줄 수 없는 경우, 도 1이나 도 2를 이용하여 나타낸 예와 마찬가지로, 매회의 잉여 연산 처리에서 R2 mod N을 N으로부터 계산할 필요가 있어, 처리에 시간이 걸린다고 하는 문제가 있다. R2 mod N의 값은 N의 값에 의해 일의로 정해지기 때문에, 데이터 테이블(220)을 이용하여, N부터 키 MAC값을 구하고, R2 mod N의 값을 연산용 데이터로서 대응지어 둠으로써, 처리를 고속화할 수 있다. 또한 이 때 N의 값은 비밀 정보가 아니기 때문에, 키 MAC값의 연산은 내탬퍼성을 수반하지 않는 방식이어도 되고, CBC-MAC 암호화에 의한 방식에 한하지 않아도 된다.
또한, 어플리케이션(200)이 IC 칩(2)으로부터 삭제되거나, 로크 기능 등에 의해 사용 불능으로 되거나 한 경우, 데이터 테이블(220)로부터 키 MAC값(230) 및 연산용 데이터(231)를 삭제 또는 무효화하도록 하여도 된다. 이에 의해, 데이터 저장 메모리(20)의 용량을 절약할 수 있다. 또한, 데이터 테이블(220)에, 키 MAC값 및 연산용 데이터와 함께, 어플리케이션을 식별하는 어플리케이션 ID를 기억하고, 어플리케이션을 삭제할 때에, 어플리케이션 ID를 이용하여 대응한 연산용 데이터 등을 데이터 테이블(220)로부터 삭제하도록 하여도 된다. 예를 들면 도 5의 처리 플로우에 도시한 바와 같이, 어플리케이션의 삭제 또는 무효화의 지시가 입력 되면, 어플리케이션의 ID와 일치하는 어플리케이션 ID가 데이터 테이블(220)에 존재하는지의 여부를 조사한다(S3000). 존재하는 경우에는 어플리케이션 ID에 대응지어진 연산용 데이터와 키 MAC값을 삭제 또는 무효화한다(S3010). 그 후, 어플리케이션의 삭제 또는 무효화를 행한다(S3020). 또한, 도 5에서는, S3010 후에 S3020을 실행하는 예를 나타내고 있지만, 이에 한정되는 것은 아니다. 예를 들면, S3010 및 S3020을 동일한 타이밍에서 행하여도 되고, S3020을 S3000 전에 실행하도록 하여도 된다.
또한,IC 칩(2)의 시큐러티 레벨을 변경하는 타이밍에서 데이터 테이블(220)의 작성을 행하도록 하여도 된다. IC 칩(2)의 시큐러티 레벨의 변경이란, 예를 들면, 기능의 일부에 제한이 가해진 제1 시큐러티 레벨(공장 출하 시 등)로부터, 임의의 기능을 어플리케이션으로부터 실행할 수 있는 제2 시큐러티 레벨(시장 유통 시 등)로의 변경이다.
이상 설명한 바와 같이, 본 발명에 따르면 시큐러티를 유지하면서, 고속으로 사용하기에 편리한 IC 칩 및 이것을 탑재한 IC 카드를 제공할 수 있다. 또한, 도 1의 예에서는, IC 칩을 IC 카드에 탑재하고 있지만, 이에 한정되는 것이 아니라, 휴대 전화 등의 정보 처리 장치에 탑재하도록 하여도 된다.
1 : IC 카드
2 : IC 칩
10 : 프로그램 저장 메모리
100 : 카드 오퍼레이팅 시스템
101 : 가상 머신
110 : 라이브러리
120 : OS용 암호키
20 : 데이터 저장 메모리
200 : 어플리케이션
201 : 비밀키 기억 영역
210 : 어플리케이션
211 : 비밀키 기억 영역
220 : 데이터 테이블
230 : 키 MAC값
231 : 연산용 데이터
240 : 키 MAC값
241 : 연산용 데이터
30 : 연산 처리부
40 : 보조 연산 처리부
50 : 통신부

Claims (8)

  1. 암호 처리를 실행하기 위한 제어 프로그램을 기억하는 제1 메모리와,
    어플리케이션을 기억하는 제2 메모리와,
    상기 어플리케이션의 소정 영역에 기억된 암호 비밀키의 적어도 일부로 구성된 제1 데이터를 수취하고, 상기 제어 프로그램에 기초하여 암호 처리를 행하는 연산 처리부와,
    상기 연산 처리부의 제어에 의해 소정의 연산 처리를 행하는 보조 연산 처리부
    를 구비하고,
    상기 제1 데이터가 상기 보조 연산 처리부의 소프트웨어 인터페이스에 의해 규정된 데이터 형식에 적합하지 않은 경우, 상기 연산 처리부는, 상기 데이터 형식에 적합하도록 상기 제1 데이터에 처리를 실시한 제2 데이터를 생성하고, 상기 생성된 제2 데이터를 상기 제2 메모리에 구비한 데이터 테이블에 기억하도록 제어하는 것을 특징으로 하는 IC 칩.
  2. 제1항에 있어서,
    상기 연산 처리부는, 상기 제1 메모리에 기억된 암호키를 이용하여 상기 암호 비밀키를 암호화함과 함께 상기 제2 데이터를 생성하고, 상기 암호화된 암호 비밀키의 일부를 식별자로서 이용하여 상기 제2 데이터를 상기 데이터 테이블에 기억하도록 제어하는 것을 특징으로 하는 IC 칩.
  3. 제2항에 있어서,
    상기 연산 처리부는, 상기 어플리케이션을 실행하는 경우에, 상기 식별자를 이용하여 상기 데이터 테이블로부터 상기 제2 데이터를 읽어내고, 상기 보조 연산 처리부에 넘겨주도록 제어하는 것을 특징으로 하는 IC 칩.
  4. 제2항에 있어서,
    상기 연산 처리부는, 상기 제2 메모리에 상기 어플리케이션을 새롭게 기억한 경우, 혹은 상기 어플리케이션을 처음으로 실행하는 경우에, 상기 암호 비밀키의 암호화 및 상기 제2 데이터의 생성을 행하는 것을 특징으로 하는 IC 칩.
  5. 제2항에 있어서,
    상기 연산 처리부는, 상기 암호화된 암호 비밀키를 상기 소정 영역에 기억하도록 제어하는 것을 특징으로 하는 IC 칩.
  6. 제1항에 있어서,
    상기 제1 메모리는 가상 머신을 갖고, 상기 연산 처리부는 상기 가상 머신을 통하여 상기 제1 데이터를 수취하는 것을 특징으로 하는 IC 칩.
  7. 암호 처리를 실행하기 위한 제어 프로그램을 기억하는 제1 메모리와,
    어플리케이션을 기억하는 제2 메모리와,
    상기 어플리케이션의 소정 영역에 기억된 암호 비밀키의 적어도 일부로 구성된 제1 데이터를 수취하고, 상기 제어 프로그램에 기초하여 암호 처리를 행하는 연산 처리부와,
    상기 연산 처리부의 제어에 의해 소정의 연산 처리를 행하는 보조 연산 처리부
    를 구비하고,
    상기 제1 데이터가 상기 보조 연산 처리부의 소프트웨어 인터페이스에 의해 규정된 데이터 형식에 적합하지 않은 경우, 상기 연산 처리부는, 상기 데이터 형식에 적합하도록 상기 제1 데이터에 처리를 실시한 제2 데이터를 생성하고, 상기 생성된 제2 데이터를 상기 제2 메모리에 구비한 데이터 테이블에 기억하도록 제어하는 것을 특징으로 하는 정보 처리 장치.
  8. 제7항에 있어서,
    상기 연산 처리부는, 상기 제1 메모리에 기억된 암호키를 이용하여 상기 암호 비밀키를 암호화함과 함께 상기 제2 데이터를 생성하고, 상기 암호화된 암호 비밀키의 일부를 식별자로서 이용하여 상기 제2 데이터를 상기 데이터 테이블에 기억하도록 제어하는 것을 특징으로 하는 정보 처리 장치.
KR1020100001375A 2009-04-16 2010-01-07 Ic 칩 및 이것을 탑재한 정보 처리 장치 KR101070580B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2009-099519 2009-04-16
JP2009099519A JP5235764B2 (ja) 2009-04-16 2009-04-16 Icチップおよびこれを搭載した情報処理装置

Publications (2)

Publication Number Publication Date
KR20100114817A true KR20100114817A (ko) 2010-10-26
KR101070580B1 KR101070580B1 (ko) 2011-10-05

Family

ID=42040474

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100001375A KR101070580B1 (ko) 2009-04-16 2010-01-07 Ic 칩 및 이것을 탑재한 정보 처리 장치

Country Status (4)

Country Link
US (1) US20100266121A1 (ko)
EP (1) EP2241996A1 (ko)
JP (1) JP5235764B2 (ko)
KR (1) KR101070580B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5719244B2 (ja) 2011-06-29 2015-05-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 安全に管理された仮想マシンの実行環境を構築する方法、プログラムおよびコンピュータ装置
WO2013081629A1 (en) * 2011-12-02 2013-06-06 Empire Technology Development. Llc Integrated circuits as a service

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5027272A (en) * 1988-01-28 1991-06-25 Weitek Corporation Method and apparatus for performing double precision vector operations on a coprocessor
JP4021956B2 (ja) * 1996-08-27 2007-12-12 大日本印刷株式会社 Icカード
US6216227B1 (en) * 1998-06-29 2001-04-10 Sun Microsystems, Inc. Multi-venue ticketing using smart cards
JP4168305B2 (ja) * 2000-01-12 2008-10-22 株式会社ルネサステクノロジ Icカードとマイクロコンピュータ
TW536672B (en) * 2000-01-12 2003-06-11 Hitachi Ltd IC card and microcomputer
JP2001266103A (ja) * 2000-01-12 2001-09-28 Hitachi Ltd Icカードとマイクロコンピュータ
JP2001282543A (ja) * 2000-03-29 2001-10-12 Hitachi Ltd Icカードアプリケーションのローディング方法及びローディングシステム
JP4717329B2 (ja) * 2003-03-14 2011-07-06 キヤノン株式会社 デジタル署名生成装置
JP4729839B2 (ja) * 2003-05-20 2011-07-20 株式会社日立製作所 Icカード
JP4368718B2 (ja) * 2004-03-30 2009-11-18 株式会社日立製作所 図書貸出履歴管理方法、プログラム、記憶媒体
JP4863058B2 (ja) * 2006-03-20 2012-01-25 大日本印刷株式会社 Icカード、および、アプリケーションの書込み方法
JP4960034B2 (ja) * 2006-07-27 2012-06-27 株式会社東芝 情報記憶媒体及び情報記憶媒体処理装置
JP5487966B2 (ja) * 2007-07-03 2014-05-14 日本電気株式会社 データ暗号化/復号化処理方法およびデータ処理装置

Also Published As

Publication number Publication date
EP2241996A1 (en) 2010-10-20
US20100266121A1 (en) 2010-10-21
KR101070580B1 (ko) 2011-10-05
JP5235764B2 (ja) 2013-07-10
JP2010252059A (ja) 2010-11-04

Similar Documents

Publication Publication Date Title
CN101256613B (zh) 无需制造者和用户知道彼此的加密信息的安全处理器系统
CN100487715C (zh) 一种数据安全存储系统和装置及方法
EP0529261B1 (en) A hybrid public key algorithm/data encryption algorithm key distribution method based on control vectors
CN108345806B (zh) 一种硬件加密卡和加密方法
US8762742B2 (en) Security architecture for using host memory in the design of a secure element
CN1269071C (zh) 存储卡
TW413988B (en) Cryptographic system
CN103415855A (zh) 大容量存储设备存储器加密方法、系统及装置
CN108768963B (zh) 可信应用与安全元件的通信方法和系统
JPH09270785A (ja) 情報処理装置
CN109768862B (zh) 一种密钥管理方法、密钥调用方法及密码机
JP4107420B2 (ja) 安全なバイオメトリック認証/識別方法、バイオメトリックデータ入力モジュールおよび検証モジュール
EP4319041A1 (en) Cipher card and root key protection method therefor, and computer readable storage medium
KR101070580B1 (ko) Ic 칩 및 이것을 탑재한 정보 처리 장치
CN110740036A (zh) 基于云计算的防攻击数据保密方法
KR101656092B1 (ko) 비동기적인 인증을 갖는 보안 컴퓨팅 시스템
KR101214899B1 (ko) 유에스비 보안장치 및 그 보안 방법
CN100462992C (zh) 生产信息安全设备的方法和系统
KR101054075B1 (ko) 보호키 사용 제한 방법 및 장치
JP2000232442A (ja) 情報処理方法及びシステム
KR101188659B1 (ko) 플레이어 및 카트리지 간의 디지털 콘텐츠 보호 방법
JP2004248330A (ja) 暗号装置、暗号鍵生成方法、暗号鍵管理方法
JP3982013B2 (ja) アクセス制御情報生成装置および方法
CN117592079A (zh) 机密计算环境创建方法、密码运算方法及相关设备
KR20160090556A (ko) 오프라인 토큰의 안전성을 보장할 수 있는 온라인/오프라인 전자서명 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140902

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee