KR20090040246A - 메모리 컨트롤러, 보안 메모리 카드, 및 보안 메모리 카드시스템 - Google Patents
메모리 컨트롤러, 보안 메모리 카드, 및 보안 메모리 카드시스템 Download PDFInfo
- Publication number
- KR20090040246A KR20090040246A KR1020087007551A KR20087007551A KR20090040246A KR 20090040246 A KR20090040246 A KR 20090040246A KR 1020087007551 A KR1020087007551 A KR 1020087007551A KR 20087007551 A KR20087007551 A KR 20087007551A KR 20090040246 A KR20090040246 A KR 20090040246A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- signature
- card
- encrypted
- encrypted data
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- 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/34—Encoding or coding, e.g. Huffman coding or error correction
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
본원 발명은 서명의 변경을 수행하는 수고가 발생하고, 시간이 걸리는 과제를 해결하기 위한 것이다. 본원 발명의 보안 메모리 카드에서는, 암호 데이터와 서명 대상 데이터를 수신하는 통신 수단과, 임의의 데이터에 대하여 암복호 처리를 수행하는 암복호 수단과, 상기 서명 대상 데이터와, 상기 암복호 수단으로 복호된 상기 암호 데이터에 격납되어 있는 서명을 조합하는 조합 수단과, 상기 조합 수단의 조합 결과에 기초하여, 상기 서명 대상 데이터의 정당성을 판단하는 판단 수단과, 상기 판단 수단에 의해 상기 서명 대상 데이터가 정당하다고 판단될 때, 상기 서명이 포함되어 있는 상기 암호 데이터의 상기 서명 이외의 데이터를 정당한 데이터로서 기억하는 기억 수단을 구비한다.
메모리 카드, 암호, 서명
Description
본 발명은 비휘발성 메모리의 제어를 수행하는 메모리 컨트롤러, 비휘발성 메모리를 구비한 반도체 메모리 카드 등의 보안 메모리 카드, 상기 보안 메모리 카드와 액세스 장치를 갖는 보안 메모리 카드 시스템에 관한 것이다.
종래 기술로서, 암호화된 데이터의 배포와, 이 암호화된 데이터를 암호화할 때에 이용되는 키의 배포를 서로 다른 서버가 수행함으로써, 유저에 대하여 안전한 콘텐츠를 배포하고, 판매하는 것을 가능하게 하는 것이 있다(일본 특허 제 3130267호). 여기에서 유저에게 배포되는 암호화된 데이터는 복수의 암호화 정보 파트와, 암호화 정보 파트의 리스트와, 그 리스트에 대한 서명을 포함하고 있다.
그러나, 상기 종래의 기술에서는 리스트의 내용이 바뀔 때마다 리스트에 대한 서명을 다시 할 필요가 있다. 즉, 암호화된 데이터의 일부를 변경할 때마다 리스트의 내용이 바뀌기 때문에 서명을 다시 할 필요가 있었다. 따라서, 서명의 다시 하는데 많은 시간과 노력을 필요로 하고 있었다.
그런 점에서, 본원 발명에서는 서명의 대상이 되는 데이터와, 그 서명과, 서명 대상이 아닌 다른 데이터를 한꺼번에 암호화한 데이터 구조로 함으로써, 서명 대상이 아닌 데이터의 일부가 변경된 경우라도 서명을 다시 할 필요가 없는 메모리 컨트롤러 및 보안 메모리 카드를 제공한다.
본 발명에 따른 메모리 컨트롤러는 암호 데이터와 서명 대상 데이터를 수신하는 통신 수단과, 데이터에 대하여 암복호 처리를 수행하는 암복호 수단과, 상기 암복호 수단으로 복호된 상기 암호 데이터에 부여되어 있는 서명과 상기 서명 대상 데이터를 조합(照合)하는 조합 수단과, 상기 조합 수단의 조합 결과에 기초하여, 상기 서명 대상 데이터의 정당성을 판단하는 판단 수단과, 상기 판단 수단에 의해 상기 서명 대상 데이터가 정당하다고 판단될 때, 상기 서명이 포함되어 있는 상기 암호 데이터의 상기 서명 이외의 데이터를 정당한 데이터로서 기억하는 기억 수단을 구비하는 것을 특징으로 하는 메모리 컨트롤러이다.
또한, 본 발명에 따른 보안 메모리 카드는 비휘발성 메모리와, 상기 비휘발 메모리에 대하여 데이터의 읽기, 쓰기를 수행하는 상기 메모리 컨트롤러와, 상기 암호 처리를 수행하는 암복호 수단을 가지며, 보안 메모리 카드는 암호 데이터와 서명 대상 데이터를 수신하는 통신 수단과, 데이터에 대하여 암복호 처리를 수행하는 암복호 수단과, 상기 암복호 수단으로 복호된 상기 암호 데이터에 부여되어 있는 서명과 상기 서명 대상 데이터를 조합하는 조합 수단과, 상기 조합 수단의 조합 결과에 기초하여, 상기 서명 대상 데이터의 정당성을 판단하는 판단 수단과, 상기 판단 수단에 의해 상기 서명 대상 데이터가 정당하다고 판단될 때, 상기 서명이 포함되어 있는 상기 암호 데이터의 나머지 데이터를 정당한 데이터로서 기억하는 기억 수단을 구비하고 있다.
또한, 본 발명에 따른 보안 메모리 카드 시스템은 보안 메모리 카드와 액세스 장치로 구성되며, 보안 메모리 카드는 암호 데이터와 서명 대상 데이터를 수신하는 통신 수단과, 데이터에 대하여 암복호 처리를 수행하는 암복호 수단과, 상기 암복호 수단으로 복호된 상기 암호 데이터에 부여되어 있는 서명과 상기 서명 대상 데이터를 조합하는 조합 수단과, 상기 조합 수단에 의한 조합 결과에 의해 상기 서명 대상 데이터의 정당성을 판단하는 판단 수단과, 상기 판단 수단에 의해 상기 서명 대상 데이터가 정당하다고 판단될 때, 상기 서명이 포함되어 있는 상기 암호 데이터의 상기 서명 이외의 데이터를 정당한 데이터로서 기억하는 기억 수단을 구비하고 있으며, 액세스 장치는 상기 보안 메모리 카드와 통신하기 위한 통신 수단과, 상기 보안 메모리 카드에 송신하는 데이터를 기억하는 기억 수단과, 상기 기억 수단으로부터 상기 보안 메모리 카드에 송신하는 데이터를 읽어 내어, 상기 보안 메모리 카드가 수신 가능한 데이터로 변환하는 프로토콜 변환 수단을 가지고, 상기 보안 메모리 카드로부터 통지되는 결과를 수신하고, 상기 결과에 기초하여 상기 보안 메모리 카드와의 통신을 제어한다.
서명 대상 데이터와, 서명과, 서명 대상이 아닌 다른 데이터가 함께 암호화된 데이터 구조로 함으로써, 서명을 올바르게 검증할 수 있는 경우에 함께 암호화된 다른 데이터의 정당성을 모두 신뢰할 수 있기 때문에, 서명 대상이 아닌 데이터의 일부를 변경할 때마다 서명을 다시 할 필요가 없다.
도 1은 서버, 외부 기기, 카드의 관계도.
도 2는 카드 구성도.
도 3은 서버, 외부 기기, 카드의 구성도.
도 4는 플레이어의 관계도.
도 5는 애플리케이션 개발자, 서비스 제공자, 카드 제조자, 카드 간의 처리 흐름.
도 6은 서버 운용자, 서비스 제공자간의 처리 흐름.
도 7a는 서버 운용자, 서버, 외부 기기, 카드 간의 처리 흐름 a
도 7b는 서버 운용자, 서버, 외부 기기, 카드 간의 처리 흐름 b
도 7c는 서버 운용자, 서버, 외부 기기, 카드 간의 처리 흐름 c
도 8은 개별 이니셜 데이터의 예를 나타내는 도.
도 9는 관리 데이터 포맷의 예를 나타내는 도.
도 10은 서버에서의 데이터 격납 구성과 카드 버전 정보의 관계도.
도 11은 영역 제어 수단을 포함하는 카드 구성도.
도 12는 카드와 외부 기기간의 통신 흐름.
도 13은 2계통 보유하는 카드와 외부 기기간의 통신 흐름.
도 14는 데이터 갱신시에서의 통신 흐름.
도 15a는 데이터 갱신시의 처리 흐름 a.
도 15b는 데이터 갱신시의 처리 흐름 b.
도 16a는 2계통 보유하는 카드와의 처리 흐름 a
도 16b는 2계통 보유하는 카드와의 처리 흐름 b
도 16c는 2계통 보유하는 카드와의 처리 흐름 c
(도면의 주요 부분에 대한 부호의 설명)
100 카드
1001 통신 수단
1002 코맨드 해석 수단
1003 판단 수단
1004 수치 계산 수단
1005 기억 수단
1006 암복호 수단
1007 조합 수단
1008 판단 수단
1009 해시 생성 수단
1010 영역 제어 수단
200 외부 기기
2001 통신 수단
2002 프로토콜 변환 수단
2003 일시 기억 수단
300 서버
3001 통신 수단
3002 기억 제어 수단
3003 기억 수단
P1 카드 제조자
P2 애플리케이션 개발자
P3 서비스 제공자
P4 서버 운용자
P5 유저
P6 카드 판매자
M01 제조자 공개키
M02 제조자 비밀키
M03 카드 공개키
M04 카드 비밀키
A01 애플리케이션 코드 암호키
A02 애플리케이션 코드
A03 암호화 애플리케이션 코드
A04 암호화 애플리케이션 코드 암호키
A05 서명
H01 개별 이니셜 데이터 암호키
H02 개별 이니셜 데이터
H03 암호화 개별 이니셜 데이터
H04 암호화 개별 이니셜 데이터 암호키
H05 개별 이니셜 데이터로부터 생성한 해시
H06 공통 데이터
H07 관리 데이터
H08 관리 데이터 암호키
H09 암호화한 관리 데이터
H10 암호화한 관리 데이터 암호키
이하, 본 발명의 실시예에 대하여 도면을 참조하면서 설명한다. 또한, 본 발명은 이들 실시예에 한정되는 것이 아니라, 그 요지를 벗어나지 않는 범위에서 다양한 변경을 실시할 수 있다.
(실시예 1)
본 실시예에서는 도 1에 나타내는 바와 같은 서버(300), 외부 기기(200), 카드(100)로 구성되는 보안 메모리 카드 시스템에 대하여 설명한다. 도 2는 카드(100)의 구성을 나타낸다. 도 3은 도 1에 나타낸 보안 메모리 카드 시스템의 상세한 구성을 나타낸다. 이하, 도 3을 이용하여 설명한다.
서버(300)는, 외부와 통신하는 통신 수단(3001)과, 기억 제어 수단(3002)과, 기억 수단(3003)을 갖는다. 이 기억 수단(3003)은 애플리케이션 데이터, 애플리케이션 코드, 대응하는 카드 정보, 그 외 외부 단말에 관한 정보를 보유하고 있다. 여기에서, 애플리케이션 코드와 애플리케이션 데이터를 합친 것이 애플리케이션이 다. 애플리케이션 코드는 실행 가능한 프로그램이나 코드 등의 오브젝트를 가리키는 것이다. 애플리케이션 데이터는 그들 코드가 참조하는 데이터를 가리키며, 애플리케이션에 대하여, 동작이나 거동 등을 제어하거나, 초기 설정치를 부여하거나 하는 목적으로 준비하는 것이다. 또한, 본 실시예에서는 애플리케이션 코드와 애플리케이션 데이터가 분리되어 있는 것으로 설명하지만, 애플리케이션 데이터가 애플리케이션 코드의 일부에 포함되는 것이어도 좋다.
기억 제어 수단(3002)은 통신 수단(3001)을 경유하여 외부로부터의 요구를 받고, 그 요구에 따라 기억 수단(3003)으로부터 선택적으로 데이터를 읽어낼 수 있다.
외부 기기(200)는 통신 수단(2001), 프로토콜 변환 수단(2002), 일시 기억 수단(2003)을 갖는다. 통신 수단(2001)은 서버(300)로부터 데이터나 코드를 수신한다. 프로토콜 변환 수단(2002)은 이 데이터나 코드를 카드(100)에 송신 가능한 코맨드로 변환한다. 통신 수단(2001)은 프로토콜 변환 수단(2002)에서 변환된 코맨드를 카드(100)에 전달한다. 또한, 서버(300)로부터 미리 카드의 코맨드 사양에 준한 데이터를 수신한 경우에는, 외부 기기(200)는 수신한 데이터를 그대로 카드(100)에 송신한다.
카드(100)는 통신 수단(1001), 코맨드 해석 수단(1002), 수치 계산 수단(1004), 기억 제어 수단(1003), 기억 수단(1005), 암복호 수단(1006), 조합 수단(1007), 해시 생성 수단(1009), 판단 수단(1008)을 갖는다. 통신 수단(1001)은 외부 기기(200)로부터 데이터나 코맨드를 수신한다. 코맨드 해석 수단(1002)은 통 신 수단(1001)을 이용하여 수신한 코맨드를 해석하여, 수치 계산 수단(1004)에 데이터를 전달한다. 수치 계산 수단(1004)은 코맨드 해석 수단(1002)에서 코맨드를 해석한 결과에 따라, 데이터의 배치 및 데이터의 변환, 데이터의 연산을 수행한다. 또한, 수치 계산 수단(1004)은 필요에 따라 암복호 처리를 수행하는 암복호 수단(1006)과, 데이터의 비교, 조합을 수행하는 조합 수단(1007)과, 데이터의 해시치를 생성하는 해시 생성 수단(1009)과, 기억 수단(1005)을 제어하는 기억 제어 수단(1003)을 이용하여 암호 처리를 수행한다. 기억 수단(1005)은 카드(100) 내의 데이터를 보유하고 있는 부분으로서, 기억 제어 수단(1003)을 통하여 액세스된다. 조합 수단(1007)은 서명 대상 데이터와, 암복호 수단(1006)에서 복호된 암호 데이터에 격납되어 있는 서명을 조합한다. 또한, 판단 수단(1008)은 조합 수단(1007)에서의 조합 결과에 의해 데이터의 정당성을 판단한다.
여기에서, 상기 시스템 구성과는 별도로, 카드(100)의 제조, 애플리케이션 등의 제공에 따른 플레이어의 관계에 대하여 도 4를 이용하여 설명한다.
도 4에 나타내는 바와 같이, 카드(100)를 제조/발행하는 플레이어(P1)(이하, 카드 제조자라 한다), 애플리케이션을 개발하는 플레이어(P2)(이하, 애플리케이션 개발자라 한다), 서비스를 제공하는 플레이어(P3)(이하, 서비스 제공자라 한다), 서버의 운용을 수행하는 플레이어(P4)(이하, 서버 운용자라 한다), 외부 기기(200)를 조작하여, 카드에 대한 데이터를 서버에 요구하는 트리거를 제공하는 플레이어(P5)(이하, 유저라 한다), 이렇게 5자(者)가 존재한다. 또한, 카드를 유저에게 판매하는 플레이어(P6)로서 카드 판매자가 운용상은 존재하지만, 본 실시예에는 직 접적인 관계가 없으므로 설명을 생략한다.
그 외의 플레이어(P1~P4)는 유저(P5) 입장에서 보면 특별히 의식되는 것은 아니지만, 시스템상, 실시하는 처리 내용이 다르다고 상정하여, 나누어 생각한다. 먼저 카드 제조자(P1)는 카드의 제조부터 카드에 필요한 데이터를 설정하여 시장에서 사용할 수 있는 카드의 유효화까지를 수행하는 것으로, 애플리케이션 개발자(P2)에게 개발 환경의 대출이나 애플리케이션 코드의 서명을 수행한다. 다음으로, 애플리케이션 개발자(P2)는 공통적, 범용적으로 배포 가능한 애플리케이션을 개발하여, 복수의 서비스 제공자(P3)에게 애플리케이션 코드를 범용적으로 제공하는 것이 가능하다. 이어서, 서비스 제공자(P3)는 애플리케이션 개발자(P2)로부터 수취한 애플리케이션 코드에 식별 정보나 키 정보 등의 서비스 고유의 정보를 넣음으로써, 애플리케이션을 커스터마이즈할 수 있다. 서비스 제공자(P3)는 상술한 애플리케이션을 커스터마이즈하여, 실제의 서비스를 운영하는 것으로 상정한다. 서버 운용자(P4)는 외부 기기(200)로부터의 요구에 따라, 데이터를 출력하는 Web 서버를 운용한다.
이상에 설명한 플레이어 모델은 어디까지나 일예에 지나지 않고, 한 플레이어가 몇 가지의 플레이어를 겸임하는 경우나, 한 플레이어의 처리가 보다 세분화되는 경우도 본 특허의 범주에 포함된다. 예를 들면, 카드 제조자(P1)는 카드의 제조만을 수행하고, 카드의 유효화 및 개발 환경의 대출, 애플리케이션 코드의 서명을 다른 플레이어가 수행하는 경우도 있다. 또한, 상기에서는 설명을 생략한 카드 판매자가 점두(店頭)에서 카드의 유효화를 수행하는 경우나 서비스 제공자가 작성한 데이터를 카드 제조자가 받아 카드에 설정하는 경우도 상정할 수 있다. 또한, 서비스 제공자(P3)나 카드 제조자(P1)가 애플리케이션 개발자(P2)를 겸임하는 경우도 생각할 수 있다.
다음으로 도 5, 도 6, 도 7a, 도 7b, 도 7c를 사용하여, 각 플레이어가 수행하는 처리를 설명한다.
도 5에 나타내는 바와 같이, 먼저, 카드 제조자(P1)는 카드 제조자의 RSA 키페어(제조자 키페어 M01, M02)를 사전에 생성한다(S01). 그리고, 생성한 키 중, 제조자 공개키(M01)를 카드(100)에 설정(격납)한다(S02). 제조자 공개키(M01)와 대칭인 제조자 비밀키(M02)는 애플리케이션 개발자(P2)가 작성한 애플리케이션에 대한 서명을 수행할 때에 이용된다. 다음으로, 카드 제조자(P1)는 제조하는 카드(100)에 격납하는 RSA 키페어(카드 키페어(M03, M04))를 생성한다(S03). 생성한 키 중, 카드 공개키(M03)는 애플리케이션 개발자(P2), 서비스 제공자(P3)에게 배포된다(S04). 한편, 카드 비밀키(M04)는 카드(100)에 격납된다(S05). 또한, 카드 제조자(P1)가 생성하는 제조자 키(M01, M02)나 카드 키(M03, M04)는 상술한 RSA키일 수도 있고, 타원 암호 방식, DH키 배송 방식, ElGamal 암호 방식 등 다른 공개키 암호 방식을 이용한 것이어도 상관없다. 또한, 마찬가지로 RSA의 키 길이도 1024bit, 2048bit로 한정되는 것이 아니라, 카드 운용의 보안 정책에 따라 자유롭게 변경할 수도 있다.
애플리케이션 코드에 대한 서명은 애플리케이션 개발자(P2)에 의한 신청, 즉 애플리케이션 코드의 카드 제조자(P1)에게로의 송부(S06)에 의해 수행된다. 카드 제조자(P1)는 제출된 애플리케이션의 동작 내용을 확인하고, 문제가 없으면, 제출된 애플리케이션 코드의 해시 데이터를 작성한다. 그리고, 작성한 해시 데이터에 대하여, 카드 제조자(P1)는 제조자 비밀키(M02)를 사용하여 서명(A05)을 생성한다(S07). 여기에서 생성된 서명(A05)은 애플리케이션 개발자(P2)에 송부된다(S08).
또한, 애플리케이션 개발자(P2)는 카드 제조자(P1)로부터 사전에 카드(100)에 대응한 개발 환경과 카드 공개키(M03)를 수탁하고 있다. 그 개발 환경을 이용하여, 애플리케이션 개발자(P2)는 카드(100)에 대응한 애플리케이션 코드의 개발을 수행한다(S09). 이 단계(S09)에서 완성한 애플리케이션 코드가, 단계(S06)에서 카드 제조자(P1)에게 송부되는 애플리케이션 코드(A02)이다.
애플리케이션 개발자(P2)는, 작성한 애플리케이션 코드를 서비스 제공자(P3)에게 양도할 때에는 애플리케이션 코드를 암호화하여 전달한다. 암호화하는 이유는 카드 제조자(P1)가 배포한 개발 환경을 이용하여 애플리케이션 코드를 개발할 수 있는 것은 애플리케이션 개발자(P2)뿐이기 때문이며, 애플리케이션 코드를 암호화하지 않고 서비스 제공자(P3)에게 전달해 버리면, 서비스 제공자(P3)는 애플리케이션 코드 내용을 열람할 수 있어 비밀 정보의 유출이 되기 때문이다. 암호화하지 않고 코드를 넘겨 복수의 플레이어가 비밀 정보를 공유하고 있을 때에 비밀 정보가 누설되면, 어느 쪽 책임으로 발생했는지가 애매해져 책임의 분담이 불가능하다는 문제가 생길 수 있다.
그에 대해서, 본 실시예에서는 애플리케이션 개발자(P2)가, 독자적으로 작성한 암호용 키(A01)(이하, 애플리케이션 코드 암호키라 한다)로 애플리케이션 코 드(A02)를 암호화하여, 암호화된 애플리케이션 코드(A03)를 생성한다(S10). 그리고, 애플리케이션 개발자(P2)는 애플리케이션 코드 암호키(A01)를 사전에 배포된 카드 공개키(M03)로 암호화하여, 암호화된 애플리케이션 코드 암호키(A04)를 생성한다(S11). 그 후 애플리케이션 개발자(P2)는 서비스 제공자(P3)에게, 암호화된 애플리케이션 코드(A03)와, 암호화된 애플리케이션 코드 암호키(A04)와, 애플리케이션 코드의 서명(A05)을 양도한다(S12). 서비스 제공자(P3)는 수취한 어느 쪽 암호 데이터(A03, A04)도 복호할 수 없다.
다음으로, 서비스 제공자(P3)가 수행하는 작업에 대하여, 도 6을 이용하여 설명한다. 서비스 제공자(P3)는 애플리케이션 개발자(P2)로부터 수취한 애플리케이션 코드를 개별적으로 커스터마이즈하기 위한 애플리케이션 데이터(H02)(이하, 개별 이니셜 데이터라 한다)를 작성한다(S20). 또한, 작성하는 모든 데이터에 대하여, 애플리케이션 하나하나 개별적으로 데이터를 변경할지, 어떤 데이터는 공통화할지 등에 대해서는 서비스의 운용 정책에 따른 것으로, 고려하지 않는다. 서비스 제공자(P3)가 개별 이니셜 데이터(H02)를 작성하는 경우에는, 별도 애플리케이션 개발자(P2)로부터 애플리케이션의 외부 사양을 수취할 필요가 있다. 개별 이니셜 데이터의 데이터 구조의 예로서, 도 8에 나타내는 바와 같이, 최초 100byte(논리 어드레스 0-99)는 식별 정보, 다음의 100byte(논리 어드레스 100-1099)는 자기 증명서 데이터, 다음의 1000byte(논리 어드레스 1100-2099)는 루트 증명서 데이터, 다음의 3000byte(논리 어드레스 2100-5099)는 파일 시스템 정보로서 애플리케이션으로부터 참조한다라고 하는 외부 사양으로 한다. 데이터의 개시 지점에는 길이를 나타내는 정보를 설정하고, 그 영역의 어디까지를 유효한 데이터로서 애플리케이션이 참조해야 할지를 나타낸다.
도 6으로 되돌아가, 서비스 제공자(P3)는 애플리케이션 개발자(P2)와 마찬가지로, 작성한 개별 이니셜 데이터(H02)를, 독자적으로 작성한 키(H01)(이하, 개별 이니셜 데이터 암호키라 한다)로 암호화하여, 암호화한 개별 이니셜 데이터(H03)를 작성한다(S21). 그리고 서비스 제공자(P3)는 개별 이니셜 데이터 암호키(H01)를 사전에 카드 제조자(P1)로부터 배포되어 있는 카드의 공개키(M03)로 암호화하여, 암호화된 개별 이니셜 데이터 암호키(H04)를 작성한다(S22). 이 때, 서비스 제공자(P3)는 작성한 개별 이니셜 데이터(H02)에 대하여 해시(H05)를 생성한다(S23).
서비스 제공자(P3)는 생성한 해시(H05)와, 애플리케이션 개발자(P2)로부터 수취한 서명(A05)과, 공통 데이터(H06)로부터 관리 데이터(H07)를 생성한다. 여기에서, 공통 데이터(H06)라 함은 서비스 제공자(P3)가 작성하는(S24), 애플리케이션을 식별하기 위한 식별 정보나, 저작권 정보 등의 애플리케이션 관리 정보나, 서비스 제공자 정보 등을 포함하는 데이터이다. 도 9에 관리 데이터(H07)의 포맷예를 기재한다.
서비스 제공자(P3)는 관리 데이터(H07)를 독자적으로 생성한 키(이하, 관리 데이터 암호키(H08)라 한다)로 암호화하여, 암호화된 관리 데이터(H09)를 작성한다(S25). 이어서, 서비스 제공자(P3)는 관리 데이터 암호키(H08)를 사전에 카드 제조자(P1)로부터 배포되어 있는 카드의 공개키(M03)를 이용하여 암호화하여, 암호화된 관리 데이터 암호키(H10)를 작성한다(S26).
또한, 개별 이니셜 데이터 암호키(H01)와 관리 데이터 암호키(H08)는 서비스 제공자(P3) 자신이 작성하여 관리하는 것이기 때문에, 같은 것을 준비해도 되고, 따로따로 준비해도 된다. 따로따로 준비한 경우, 관리의 수고가 늘어나지만, 키 누설에 대한 보안 대책은 보다 강고해지기 때문에, 본 실시예에서는 따로따로 준비한 경우에 대하여 기재한다.
서비스 제공자(P3)는 애플리케이션 제공자(P2)로부터 수취한 암호화된 애플리케이션 코드(A03)와, 암호화된 애플리케이션 코드 암호키(A04)와, 암호화된 개별 이니셜 데이터(H03)와, 암호화된 개별 이니셜 데이터 암호키(H04)와, 암호화된 관리 데이터(H09)와, 암호화된 관리 데이터 암호키(H10)를 서버 운용자(P4)에게 배포한다(S27). 또한, 서버 운용자(P4)는 수취한 모든 암호 데이터(A03, A04, H03, H04, H09, H10)를 복호할 수 없다.
본 실시예에서는, 애플리케이션 코드 암호키(A01), 개별 이니셜 데이터 암호키(H01), 관리 데이터 암호키(H08), 이렇게 세 개의 키에 이용하는 암호 알고리즘으로서, 데이터의 암복호에 드는 시간이나 키 길이를 고려하여 공통키 암호 방식을 이용한 경우에 대하여 설명하였다. 그러나, 공통키 암호 방식에 한정되는 것이 아니라, 공개키 암호 방식을 이용하여도 상관없다. 또한, 본 실시예에서는 공통키 암호 방식의 AES를 이용하고 있지만, 이에 한정되는 것이 아니라 DES나 T-DES, MISTY, Camellia, RC6 등 알려져 있는 공통키 암호 방식이어도 무방하다. 또한, 카드가 암호 방식에 대응하는 것이라면, 향후 공표되는 공통키 암호 방식에도 대응하는 것은 가능하다.
이어서, 도 7a를 이용하여 설명한다. 서버 운용자(P4)는 도 6의 S27에서 수취한 데이터를 서버(300)의 기억 수단(3003)에 등록한다(S30). 등록할 때, 서버(300)는 서비스 제공자(P3)로부터 수취한 데이터가 어느 카드의, 어떤 버전에 대응한 것인지를 알 필요가 있다. 카드의 종별이나 버전 정보를 나타내는 정보의 예로는 카드의 식별 정보가 있으며, 카드의 식별 정보는 외부 기기(200)가 카드(100)로부터 취득하여, 서버(300)에 대하여 데이터 요구할 때에 함께 서버에 송신되는 정보이다. 서버(300)는 상기 식별 정보에 대응하는 복수의 암호화 데이터를 외부 기기에 송신하기 위하여, 사전에 식별 정보를 알 필요가 있다. 이들 데이터는 서비스 제공자(P3), 혹은 애플리케이션 개발자(P2)로부터 별도 통지되는 정보이다.
카드가 출력하는 버전 정보와 그에 대응한 서버 상의 데이터 관리 형식의 예를 도 10에 나타낸다. 카드가 상기의 식별 정보(도 10에서는 카드 ID)를 출력하기 위하여 코맨드가 규정되어 있고, 카드의 식별 정보는 그 코맨드에 대응한 응답 데이터로 외부 기기에 통지된다. 코맨드는 카드에 탑재되어 있는 애플리케이션이나 통신 레이어에 의해 규정된 교섭시에 교환되는 것이다. 또한, 1버전의 카드만을 운용하는 경우에는 사전에 카드의 종별이나 버전 정보를 교환할 필요가 없다.
서버(300)가 외부 기기(200)로부터의 데이터 요구에 대하여, 데이터를 송신하는 순서는 관리 데이터 암호키, 관리 데이터, 개별 이니셜 데이터 암호키, 개별 이니셜 데이터, 애플리케이션 코드 암호키, 애플리케이션 코드의 순으로 한다. 또한, 상기의 순서는 카드 내에서 가능한 한 데이터를 일시적으로 유지하지 않고, 순차 처리하기에 적합한 것으로, 카드에 충분한 일시 기억 영역이 존재하는 경우에는 이에 한정되지 않는다.
다음으로, 카드(100)와 외부 기기(200) 간의 통신 흐름을 도 12에 나타낸다. 이하에서는 도 7a도 이용하여 설명한다.
먼저, 카드(100)에 있어서, 통신 수단(1001)은 암호화된 관리 데이터 암호키(H10)를 외부 기기(200)를 경유하여 수신하여(C01), 코맨드 해석 수단(1002)에 전달한다. 코멘드 해석 수단(1002)은 상기 암호화된 관리 데이터 암호키(H10)에 부여되어 있는 코맨드를 체크하여, 그 코맨드가 무엇을 나타내고 있는지, 어떤 목적으로 사용되고 있는지를 해석한다. 본 실시예에서는 코맨드의 내용은 카드(100)로의 애플리케이션의 인스톨로 상정하여 이하의 동작을 기재한다. 코맨드 해석 수단(1002)은 수치 계산 수단(1004)에 애플리케이션의 인스톨임을 통지하고, 수신 데이터를 전달한다. 수치 계산 수단(1004)은 기억 수단(1005)이 보유하는 카드 RSA 비밀키(M04)를 기억 제어 수단(1003)을 경유하여 취득하고, 수신 데이터를 암복호 수단(1006)에서 복호한다(S31). 즉, S31에 있어서, 카드(100)는 카드 비밀키(M04)를 이용하여, 암호화된 관리 데이터 암호키(H10)를 복호하여 관리 데이터 암호키(H08)를 취득한다. 수치 계산 수단(1004)은 복호한 관리 데이터 암호키(H08)를, 기억 제어 수단(1003)을 경유하여 기억 수단(1005)에서 유지한다. 상기의 처리가 문제없이 수행되면, 카드(100)는 외부 기기(200) 및 서버(300)에 대하여 정상 종료라는 의미를 갖는 코드를 출력한다(C02).
다음으로 통신 수단(1001)은 암호화된 관리 데이터(H09)를 외부 기기를 경유하여 수신한다(C03). 수치 계산 수단(1004)은 상기의 관리 데이터 암호키(H08)를 이용하여, 암복호 수단(1006)으로 암호화된 관리 데이터(H09)의 복호를 수행하여, 관리 데이터(H07)를 취득한다(S32). 복호에 의해 얻어진 관리 데이터(H07)는, 미리 규정되어 있는 포맷(도 9)에 따르고 있기 때문에, 수치 계산 수단(1004)은 상기 포맷에 따라 데이터를 읽어낸다. 애플리케이션을 식별하기 위한 정보는 이미 카드 내에 같은 식별 정보를 보유하고 있는 애플리케이션이 없는지를 조사하기 위하여 이용한다(S33). 즉, 카드(100)는 S33에 있어서, 관리 데이터(H07)로부터 공통 데이터(H06)를 취득하고 내용을 확인한다. 그리고 카드(100)는, 확인한 결과, 문제가 있으면 처리를 정지하고, 없으면 계속한다. 구체적으로는, 같은 식별 정보가 이미 있는 경우, 즉, 관리 데이터(H07)로부터 공통 데이터(H06)를 취득하여 내용을 확인한 결과, 문제가 있는 경우에는 수치 계산 수단(1004)은 인스톨 처리를 중지(정지)한다. 그리고 수치 계산 수단(1004)은 외부 기기(200)에 결과를 출력할 때(C04), 정상 종료가 아니라, 식별 정보가 중복하고 있다는 에러 코드로 하여 출력한다. 중복하고 있지 않으면, 공통 데이터(H06)를 기억 제어 수단(1003)을 경유하여 기억 수단(1005)에 임시 격납한다(S34). 또한, 상기의 에러에 한정되는 것이 아니라, 이상 동작을 한 경우, 수치 계산 수단(1004)은 사전에 외부와 교환된 그 뜻을 나타내는 코드를 출력한다.
다음으로, 도 7b를 이용하여 설명한다. 카드(100)에 있어서, 통신 수단(1001)은 암호화된 개별 이니셜 데이터 암호키(H04)를 외부 기기(200)를 경유하여 수신하여(C05), 수치 계산 수단(1004)에 전달한다. 수치 계산 수단(1004)은 기억 수단(1005)에서 보유하는 카드 RSA 비밀키(M04)를 사용하여, 암호화된 개별 이 니셜 데이터 암호키(H04)를 암복호 수단(1006)에서 복호하여, 개별 이니셜 데이터 암호키(H01)를 취득한다(S35). 카드(100)는 복호한 개별 이니셜 데이터 암호키(H01)를 기억 수단(1005)에서 보유한다. 다음으로 통신 수단(1001)은 서버(300)로부터, 암호화된 개별 이니셜 데이터(H03)를 외부 기기(200)를 경유하여 수신한다(C07). 통신 수단(1001)은 상기 데이터를 수치 계산 수단(1004)에 넘긴다. 수치 계산 수단(1004)은 상기의 개별 이니셜 데이터 암호키(H03)를 이용하여, 암호화된 개별 이니셜 데이터(H03)의 복호를 암복호 수단(1006)에서 수행하여, 개별 이니셜 데이터(H02)를 취득한다(S36). 개별 이니셜 데이터(H02)의 내용은, 후술하는 애플리케이션 코드(A02)가 해석하는 것으로, 카드(100)가 해석할 필요는 없다. 수치 계산 수단(1004)은 복호한 개별 이니셜 데이터(H02)의 해시를 해시 생성 수단(1009)에서 생성하여(S37), 관리 데이터에 포함되어 있는 개별 이니셜 데이터의 해시(H05)와 같은지를, 조합 수단(1007)을 이용하여 확인한다(S38). 같으면, 수치 계산 수단(1004)은 개별 이니셜 데이터(H02)를 기억 제어 수단(1003)을 경유하여 기억 수단(1005)에 임시 격납한다(S39). 서로 다른 경우, 수치 계산 수단(1004)은 인스톨 처리를 중지한다(S40). 카드(100)는 외부 기기(200), 서버(300)에 결과를 출력할 때(C08), 정상 종료가 아니라, 해시가 다르다는 것을 나타내는 에러 코드를 출력한다.
다음으로, 도 7c를 이용하여 설명한다. 카드(100)에 있어서, 통신 수단(1001)은 서버(300)로부터, 암호화된 애플리케이션 코드 암호키(A04)를 외부 기기(200)를 경유하여 수신하여(C09), 수치 계산 수단(1004)에 전달한다. 수치 계산 수단(1004)은 기억 수단(1005)에서 보유하는 카드 RSA 비밀키(M04)를 사용하여, 암복호 수단(1006)에서 복호하여, 애플리케이션 코드 암호키(A01)를 취득한다(S41). 카드(100)는 복호한 애플리케이션 코드 암호키(A01)를 기억 수단(1005)에서 보유한다. 다음으로 통신 수단(1001)은 서버(300)로부터, 암호화된 애플리케이션 코드(A03)를 외부 기기(200)를 경유하여 수신한다(C11). 통신 수단(1001)은 상기 데이터를 수치 계산 수단(1004)에 넘긴다. 수치 계산 수단(1004)은 상기의 애플리케이션 코드 암호키(A01)를 이용하여, 암호화된 애플리케이션 코드(A03)의 복호를 암복호 수단(1006)에서 수행하여, 애플리케이션 코드(A02)를 취득한다(S42). 애플리케이션 코드(A02)는 사전에 제조자에 의해 동작 확인되어 있다는 전제가 있기 때문에, 카드(100)에서 새로 상기 애플리케이션 코드의 동작을 검증할 필요는 없다. 수치 계산 수단(1004)은 애플리케이션 코드(A02)를 기억 제어 수단(1003)을 경유하여 기억 수단(1005)에 임시 격납한다(S43). 카드는 복호한 애플리케이션 코드(A02)의 해시를 해시 생성 수단(1009)으로 생성한다(S44). 수치 계산 수단(1004)은 제조자의 공개키(M01)를 사용하여 서명(A05)을 암복호 수단(1006)으로 복호하고, 해시를 취득하여, 상기 생성한 애플리케이션 코드의 해시와 조합 수단(1007)으로 조합한다(S45). 같으면, 수치 계산 수단(1004)은 애플리케이션 코드(A02)를 기억 수단(1005)에 격납한다(S39). 서로 다른 경우, 수치 계산 수단(1004)은 인스톨 처리를 중지한다(S46). 수치 계산 수단(1004)은 외부 기기(200), 서버(300)에 결과를 출력할 때(C10), 정상 종료가 아니라, 서명이 다르다는 것을 나타내는 에러 코드를 출력한다. 같은 경우, 수치 계산 수단(1004)은 모든 데이터가 정상임을 확인하여 판단 수단(1008)에 통지하고, 인스톨 처리를 종료한다. 판단 수단(1008)은 서명이 정당하다는 통지를 받아, 서명과 함께 암호화되어 있던 개별 이니셜 데이터의 해시, 공통 데이터를 정당하다고 판단하여, 해당 애플리케이션에 관련된 공통 데이터, 개별 이니셜 데이터, 애플리케이션 코드를 카드 내에서 동작 가능한 상태로 변경시킨다. 구체적으로는, 애플리케이션의 상태는 기억 수단(1006)에서 관리되고 있으며, 외부 기기(200)로부터의 요구에 의해, 수치 계산 수단(1004)이 기억 제어 수단(1003)을 경유하여 기억 수단(1005)으로부터 상기 상태를 확인하여, 애플리케이션으로서 동작 가능하다고 나타나 있으면, 기억 수단(1005)은 애플리케이션 코드를 불러 내어, 코맨드 해석 수단(1002)으로부터 보내져 오는 코맨드를 애플리케이션 코드에 전달하도록 동작하게 된다.
본 발명의 다운로드, 인스톨 방법은 최종적인 신뢰 포인트를 애플리케이션 코드의 서명 확인에 두고 있어, 서명 확인이 정상으로 종료했음을 받으면, 서명과 함께 암호 데이터에 격납되어 있던 개별 이니셜 데이터의 해시를 신뢰하여, 그 해시와 일치하는 개별 이니셜 데이터를 신뢰하게 된다. 서명 데이터는 제조자에 의해 부여되어 있고, 서명 생성에 사용하는 제조자의 비밀키는 카드에는 격납되어 있지 않아 시장에 나오는 일이 없기 때문에, 누설의 위험성은 낮다. 또한, 애플리케이션 개발자(P2), 서비스 제공자(P3)가 독자적으로 키 생성을 하고 있기 때문에, 어딘가에서 키가 누설된 경우에도, 그 영향을 다른 한 쪽이 받을 염려가 없다. 또한, 독자적으로 생성한 키를 배포하는 방법은 공개키 암호 방식을 채용하고 있기 때문에, 애플리케이션 개발자끼리, 서비스 제공자끼리라도 키를 복호할 수 없으며, 카드 비 밀키를 소유하는 카드만이 복호를 수행할 수 있다.
다음으로, 상기 데이터의 갱신을 수행하는 순서를 설명한다.
상호 인증을 하지 않는 경우, 서버, 카드가 서로 상대의 가장(假裝)을 막을 방법이 없기 때문에, 서버는 어느 카드에 애플리케이션이 인스톨되었는지 관리할 수 없고, 카드는 어떤 서비스 제공자의 애플리케이션을 인스톨했는지 알 수 없다. 그 때문에, 카드 상의 애플리케이션을 갱신하는 경우, 같은 서비스 제공자로부터 배포된 애플리케이션인지를 카드가 확인할 수 없다. 그 때문에, 일단 애플리케이션을 삭제하고 다시 인스톨할 수는 있지만, 갱신시에 최초의 애플리케이션과의 관련성을 입증할 수 없기 때문에, 일부의 데이터를 카드에 남겨 두고, 데이터 처리부만을 변경하는 갱신 처리를 실현할 수 없는 과제가 있다. 그런 점에서, 상술한 다운로드, 인스톨 방법을 이용하여 인스톨한 애플리케이션을 갱신할 때, 외부 인증없이 적절한 서비스 제공자로부터의 애플리케이션의 갱신임을 검증하여, 갱신 처리를 실현하는 방법을 이하에 설명한다.
데이터에는 상술한 바와 같이, 관리 데이터, 개별 이니셜 데이터, 애플리케이션 코드, 이렇게 3가지가 존재한다. 관리 데이터는 개별 이니셜 데이터와 애플리케이션 코드에 관련된 데이터를 격납하기 위하여 반드시 존재하지만, 개별 이니셜 데이터, 혹은 애플리케이션 코드만을 갱신하는 경우가 존재한다.
개별 이니셜 데이터만을 갱신하는 경우에는, 관리 데이터 중에, 개별 이니셜 데이터의 해시(H05)와, 갱신할 애플리케이션 식별 정보(공통 데이터)(H06)를 격납하여 암호화하고, 암호화된 개별 이니셜 데이터와 함께 송신한다. 애플리케이션 코 드만을 갱신하는 경우, 관리 데이터 중에, 애플리케이션 코드의 서명과 갱신할 애플리케이션 식별 정보(공통 데이터)(H06)를 격납하여 암호화하여, 암호화된 애플리케이션 코드와 함께 송신한다.
상기와 같이, 본 발명의 다운로드, 인스톨 방법은 서명 데이터에 신뢰 포인트를 두기 때문에, 개별 이니셜 데이터만의 갱신인 경우, 서명 데이터(A05)가 포함되어 있지 않아, 카드는 신뢰성을 확립할 수 없다. 그 때문에, 갱신을 수행하는 경우에 대비하여, 최초로 인스톨할 때에 개별 이니셜 데이터 암호키를 함께 보존해 두고, 갱신시에는, 공개키로 암호화된 키 데이터로부터 키를 복호하는 것이 아니라, 미리 카드 내에서 보유하고 있는 개별 이니셜 데이터 암호키를 이용하여 복호를 수행한다. 서비스 제공자밖에 알 수 없는 개별 이니셜 데이터 암호키를 사용할 수 있어, 복호한 데이터의 해시가 관리 데이터에 의해 보내져 온 해시와 일치한다는 것은, 최초로 인스톨한 서비스 제공자(P3), 또는 그에 준하는 정보를 갖는 대리 서비스 제공자임을 알 수 있다. 이 방법을 사용함으로써, 카드에 의한 외부 인증이나 서버에 의한 애플리케이션 관리를 하지 않고도, 카드만으로, 최초의 인스톨시와 동일한 서비스 제공자만을 갱신 가능한 플레이어로 제한할 수 있다.
애플리케이션 코드에 대해서도 상기의 방법을 이용함으로써, 최초로 인스톨했을 때의 애플리케이션 개발자(P2)만으로 제한한 갱신 처리로 할 수 있다. 애플리케이션 코드에는 서명(A05)이 딸려 있기 때문에 애플리케이션 코드 자체를 변경할 수 없지만, 갱신시에는 개별 이니셜 데이터(H02)와의 관련성을 발견할 수 없기 때문에, 이미 카드에 인스톨된 다른 개별 이니셜 데이터를 갖는 애플리케이션 코드에 대하여, 애플리케이션 코드 부분만을 바꾸어 다른 애플리케이션의 개별 이니셜 데이터를 참조할 수 있게 되어 버린다. 그 때문에, 상기와 같은 대책에 의해 갱신을 수행하는 것에 대하여 제한을 두는 것이 중요하다.
카드(100)와 외부 기기(200)간의 통신 흐름을 도 14에 나타내고, 도 15a, 도 15b를 사용하여, 각 플레이어가 수행하는 처리 흐름을 설명한다.
애플리케이션 개발자가 다시 애플리케이션 코드를 개발하여, 그 애플리케이션 코드가 서비스 제공자를 통해 서버 운용자에 납입되고, 암호 데이터로 되어 서버 운용자가 등록하는 부분의 처리에 대해서는, 신규 인스톨에서의 데이터 준비와 비교하여, 서비스 제공자가 개별 이니셜 데이터를 생성하지 않는 부분과 개별 이니셜 데이터의 해시를 관리 데이터에 포함시키지 않는 것이 다를 뿐이므로, 흐름의 설명에 대해서는 생략한다.
먼저, 도 15a를 이용하여 설명한다. 서버 운용자(P4)는 서비스 제공자(P3)로부터 납입된, 암호화된 애플리케이션 코드(A03), 암호화된 관리 데이터(H09), 암호화된 관리 데이터 암호키(H10)를 갱신용 애플리케이션으로 하여 서버(300)에 등록한다(ZOO). 이 때, 외부 기기(200)로부터의 요구에 대응하기 위하여, 갱신용 애플리케이션의 버전 정보나 설명 등을 부여하여 외부로부터 명시적으로 알 수 있도록 해 둔다. 또는 외부 기기(200)로부터의 갱신 요구에 미리 어떠한 정보가 포함되어 있는 경우에는, 서버(300)는 상기 정보에 대응하여, 애플리케이션을 배신(配信)하게 된다. 그 때, 외부 기기(200)로부터 송신되는 상기 정보에는 애플리케이션의 식별 정보나 카드에 격납되어 있는 현재의 애플리케이션의 버전 정보, 카드 식별 정 보 등이 있다.
먼저, 카드(100)에 있어서, 통신 수단(1001)은 서버(300)로부터, 암호화된 관리 데이터 암호키(H10)를 외부 기기(200) 경유로 수신하여(Z01), 코맨드 해석 수단(1002)에 전달한다. 코맨드 해석 수단(1002)은 상기 데이터에 부여되어 있는 코맨드를 체크하여, 그 코맨드가 무엇을 나타내고 있는지, 어떤 목적으로 사용되고 있는지를 해석한다. 코맨드의 내용은, 애플리케이션 코드의 갱신 처리라 상정하여 이하의 동작을 기재한다. 갱신 작업을 판별하는 부분에 대해서는, 코맨드 해석 수단(1002)에서 갱신 처리인지를 확인하는 방법과, 처음에는 인스톨 처리로서 처리하고, 애플리케이션의 식별자에 대응하는 애플리케이션의 상태를 확인함으로써, 다음에 수행하는 처리를 갱신 처리로서 카드(100)가 자동적으로 인식하는 방법이 있다. 본 실시예에서는 코맨드에 의한 해석을 수행하고, 처리 내용을 확정하는 경우를 기재한다.
코맨드 해석 수단(1002)은 수치 계산 수단(1004)에 애플리케이션 코드의 개신 처리임을 통지하고, 수신 데이터를 전달한다. 수치 계산 수단(1004)은 기억 수단(1005)이 보유하는 카드 RSA 비밀키(M04)를 기억 제어 수단(1003) 경유로 취득하고, 수신 데이터를 암복호 수단(1006)으로 복호하여, 관리 데이터 암호키(H08)를 취득한다(S51). 수치 계산 수단(1004)은 복호한 관리 데이터 암호키(H08)를 기억 제어 수단(1003) 경유로 기억 수단(1005)에 유지한다(S51). 상기의 처리가 문제없이 수행되면, 외부 기기(200), 서버(300)에 대하여 정상 종료라는 의미를 갖는 코드를 출력한다(Z02).
다음으로 통신 수단(1001)은 서버(300)로부터, 암호화된 관리 데이터(H09)를 외부 기기(200) 경유로 수신한다(Z03). 수치 계산 수단(1004)은 상기의 관리 데이터 암호키(H08)를 이용해, 암복호 수단(1006)으로 암호화된 관리 데이터(H09)의 복호를 수행하여 관리 데이터(H07)를 취득한다(S52). 복호한 관리 데이터(H07)는 미리 규정되어 있는 포맷(도 9)에 따르고 있기 때문에, 수치 계산 수단(1004)은 상기 포맷에 따라 데이터를 읽어낸다. 갱신의 경우, 모든 데이터가 포함되어 있는 것이 아니라, 갱신시에 필요한 정보가 포함되어 있으면 된다. 본 실시예의 경우에는 애플리케이션 코드의 갱신에 해당하기 때문에, 개별 이니셜 데이터의 버전 정보, 개별 이니셜 데이터의 사이즈, 개별 이니셜 데이터의 해시가 기재되어 있지 않아도 되며, 애플리케이션 식별자 길이, 애플리케이션 식별자, 애플리케이션 코드의 버전 정보, 애플리케이션 코드 사이즈, 애플리케이션 코드의 서명(A05)이 필수가 된다. 애플리케이션을 식별하기 위한 정보는, 갱신할 애플리케이션이 카드(100) 내에 있는지를 조사하기 위하여 이용한다(S53). 또한 갱신 대상인 애플리케이션이 갱신 가능한 상태를 유지하고 있는지를, 기억 수단(1005)에서 보유하고 있는 애플리케이션의 상태로부터 확인한다. 같은 식별 정보가 없는 경우나 갱신 가능한 상태가 아닌 경우에는, 수치 계산 수단(1004)은 인스톨 처리를 중지한다. 수치 계산 수단(1004)은 외부 기기(200), 서버(300)에 결과를 출력할 때(Z04), 정상 종료가 아니라, 대상 애플리케이션이 없다는 에러 코드로 하여 출력한다. 대상 애플리케이션이 있으면, 카드(100)는 공통 데이터를 기억 제어 수단(1003) 경유로 기억 수단(1005)에 임시 격납한다(S54). 또한, 상기의 에러에 한정된 것이 아니라, 이상 동작을 한 경 우에는 사전에 외부와 교환된 그 뜻을 나타내는 코드를 출력한다.
다음으로, 도 15b를 이용하여 설명한다. 카드(100)에 있어서, 통신 수단(1001)은 서버(300)로부터, 암호화된 애플리케이션 코드(A03)를 외부 기기(200) 경유로 수신한다(Z051). 통신 수단(1001)은 상기 데이터를 수치 계산 수단(1004)에 전달한다. 수치 계산 수단(1004)은 갱신 대상인 애플리케이션의 식별자와 애플리케이션 코드의 갱신이라는 정보로부터, 최초의 데이터 격납시에 데이터를 복호한 애플리케이션 코드 암호키(A01)를 기억 수단(1005)으로부터 취득한다(S55). 상기의 애플리케이션 코드 암호키(A01)를 이용하여, 암호화된 애플리케이션 코드(A03)의 복호를 암복호 수단(1006)에서 수행한다(S56). 애플리케이션 코드는, 사전에 제조자에 의해 동작 확인되어 있다는 전제가 있기 때문에, 카드(100)에서 새로 상기 애플리케이션 코드의 동작을 검증할 필요는 없다. 수치 계산 수단(1004)은 애플리케이션 코드를 기억 제어 수단(1003) 경유로 기억 수단(1005)에 임시 격납한다(S57). 카드(100)는, 복호한 애플리케이션 코드(A02)의 해시를 해시 생성 수단(1009)에서 생성한다(S58). 수치 계산 수단(1004)은 제조자의 공개키(M01)를 사용하여 서명(A05)을 암복호 수단(1006)에서 복호하여 해시를 취득하고, 상기 생성한 애플리케이션 코드의 해시와 조합 수단(1007)에서 조합한다(S59). 같으면, 수치 계산 수단(1004)은 애플리케이션 코드(A02)를 기억 수단(1005)에 격납한다. 서로 다른 경우, 수치 계산 수단(1004)은 인스톨 처리를 중지한다(S60). 수치 계산 수단(1004)은 외부 기기(200), 서버(300)에 결과를 출력할 때(Z06), 정상 종료가 아니라, 서명이 다르다는 것을 나타내는 에러 코드를 출력한다. 같은 경우, 수치 계산 수 단(1004)은 모든 데이터가 정상임을 확인하여 판단 수단(1008)에 통지하고, 인스톨 처리를 종료한다. 판단 수단(1008)은 서명이 정당하다는 통지를 받아, 서명과 함께 암호화되어 있던 공통 데이터를 정당하다고 판단하여, 해당 애플리케이션에 관련된 공통 데이터, 애플리케이션 코드를 카드 내에서 동작 가능한 상태로 변경시킨다.
또한, 상기의 설명에서는 외부 기기(200)와 카드(100)간의 통신로에 대하여 상세하게 기재하고 있지 않지만, 고속으로 기억부에 액세스할 수 있지만 사전에 영역 지정이 필요한 통신로(이하, 고속 통신로라 한다)와, 그보다 속도는 떨어지지만 영역 지정을 내부에서 해석하여 수행해 주는 통신로(이하, 저속 통신로라 한다), 이렇게 2계통을 보유하는 카드(도 11)가 있다.
카드가 복수의 통신 방식에 대응하고 있는 경우, 그 처리 내용에 따라, 인스톨 도중에 방식의 전환을 하고자 하는 경우가 있다. 서버 상의 데이터가 암호화되어 있는 경우, 서버, 외부 기기는 그 내용을 볼 수 없어 전환할 타이밍을 파악할 수 없다. 또한, 서버가 사전에 전환 타이밍을 별도의 평문 정보로서 가지고 있어도, 외부 기기 경유로 전환을 지정한 경우에, 외부 기기가 인증이 되어 있지 않은 카드는 그 코맨드를 신용할 수 없다는 과제가 있다. 그런 점에서, 상술한 다운로드, 인스톨 방법을 이용하여도, 카드가 갖는 복수의 통신 방법을 적절하게 동적으로 전환하는 방법을 제공한다.
카드(100)가 내용을 해석하여 데이터를 격납하는 관리 데이터(H07)는 저속 통신로를 사용하여 데이터를 기입할 필요가 있지만, 카드가 내용을 해석하지 않는 개별 이니셜 데이터(H02), 애플리케이션 코드(A02)는 고속 통신로를 사용하여 데이 터를 기입할 수 있다. 특히 개별 이니셜 데이터(H02), 애플리케이션 코드(A02)가 대용량인 경우에 그 효과는 커서, 인스톨 시간의 단축을 도모할 수 있다. 또한, 저속 통신로와 고속 통신로로 나눈 경우, 그 데이터가 정상인 외부 기기(200)로부터 보내져 온 것인지 불확실해지지만, 그 부분은 상기 서명 데이터(A05)와 상기 해시(H05)가 두 개의 통신로의 관련성을 보장할 수 있기 때문에 문제없다.
카드가 2계통 통신로를 보유하고 있는 경우의 카드(100)와 외부 기기(200)간의 통신 흐름을 도 13에서 나타내고, 도 16a, 도 16b, 도 16c를 사용하여, 각 플레이어가 수행하는 처리 흐름을 설명한다.
먼저, 도 16a를 이용하여 설명한다. 카드(100)에 있어서, 통신 수단(1001)은 서버(300)로부터, 암호화된 관리 데이터 암호키(H10)를 외부 기기(200) 경유로 수신하여(C01), 코맨드 해석 수단(1002)에 전달한다. 코맨드 해석 수단(1002)은 상기 데이터에 부여되어 있는 코맨드를 체크하여, 그 코맨드가 무엇을 나타내고 있는지, 어떤 목적으로 사용되고 있는지를 해석한다. 본 실시예에서는, 코맨드의 내용은, 카드로의 애플리케이션의 인스톨이라 상정하여 이하의 동작을 기재한다. 코맨드 해석 수단(1002)은 수치 계산 수단(1004)에 애플리케이션의 인스톨임을 통지하고, 수신 데이터를 전달한다. 수치 계산 수단(1004)은 기억 수단(1005)이 보유하는 카드 RSA 비밀키(M04)를 기억 제어 수단(1003) 경유로 취득하고, 수신 데이터를 암복호 수단(1006)에서 복호하여 관리 데이터 암호키(H08)를 취득한다(S31). 수치 계산 수단(1004)은 복호한 관리 데이터 암호키(H08)를, 기억 제어 수단(1003)을 경유하여 기억 수단(1005)에서 유지한다. 상기의 처리가 문제없이 수행되면, 카드(100)는 외 부 기기(200), 서버(300)에 대하여 정상 종료라는 의미를 갖는 코드를 출력한다(C02).
다음으로 통신 수단(1001)은, 암호화된 관리 데이터(H09)를 외부 기기(200) 경유로 수신한다(C03). 수치 계산 수단(1004)은 상기의 관리 데이터 암호키(H08)를 이용하여, 암복호 수단(1006)에서 암호화된 관리 데이터(H09)의 복호를 수행하여 관리 데이터(H07)를 취득한다(S32). 복호한 관리 데이터(H07)는 미리 규정되어 있는 포맷(도 9)에 따르고 있기 때문에, 수치 계산 수단(1004)은 상기 포맷에 따라 데이터를 읽어낸다. 애플리케이션을 식별하기 위한 정보는 이미 카드(100) 내에 같은 식별 정보를 보유하고 있는 애플리케이션이 없는지를 조사하기 위하여 이용한다(S33). 같은 식별 정보가 이미 있는 경우에는 수치 계산 수단(1004)은 인스톨 처리를 중지한다. 수치 계산 수단(1004)은 외부 기기(200), 서버(300)에 결과를 출력할 때(C04), 정상 종료가 아니라, 식별 정보가 중복하고 있다는 에러 코드로 하여 출력한다. 중복하고 있지 않으면, 공통 데이터를 기억 제어 수단(1003) 경유로 기억 수단(1005)에 임시 격납한다(S34). 또한, 상기의 에러에 한정되는 것이 아니라, 이상 동작을 한 경우에는 사전에 외부와 교환된 그 뜻을 나타내는 코드를 출력한다.
다음으로, 도 16b를 이용하여 설명한다. 카드(100)에 있어서, 통신 수단(1001)은 암호화된 개별 이니셜 데이터 암호키(H04)를 외부 기기(200) 경유로 수신하여(C05) 수치 계산 수단(1004)에 전달한다. 수치 계산 수단(1004)은 기억 수단(1005)에서 보유하는 카드 RSA 비밀키(M04)를 사용하여, 암복호 수단(1006)에서 복호하여 개별 이니셜 데이터 암호키(H01)를 취득한다(S35). 복호한 개별 이니셜 데이터 암호키(H01)를 카드 내의 기억 수단(1005)에서 유지한다. 수치 계산 수단(1004)은 다음 개별 이니셜 데이터를 저속 통신로가 아니라 고속 통신로를 사용하여 수신한다는 판단을 하고, 기억 제어 수단(1003)으로부터 데이터를 전개하는 어드레스 정보를 취득하여 영역 제어 수단(1010)에 통지한다(S80 전 단계). 수치 계산 수단(1004)은 복호한 개별 이니셜 데이터 암호키(H01)를, 영역 제어 수단(1010)에 통지한다. 영역 제어 수단(1010)은 수신한 어드레스 정보를 유지하고, 어드레스 정보에 대응한 외부에 공개하기 위한 에어리어 번지와 에어리어 사이즈(이하, 상기 두 개의 정보를 합쳐 에어리어 정보라 한다)를 생성하여(S80 후 단계) 수치 계산 수단(1004)에 송신한다. 수치 계산 수단(1004)은 상기 에어리어 정보를 외부 기기(200)에 출력한다(D01). 영역 제어 수단(1010)은 수신한 개별 이니셜 데이터 암호키(H01)를 복호용 키로서 설정한다.
외부 기기(200)는 수신한 에어리어 정보를 사용하여, 고속 통신로를 이용해, 기입 에어리어 번지와 기입 에어리어 사이즈(기입 사이즈)를 카드(100)에 통지하는 코맨드(이하, 영역 정보 설정 코맨드라 한다)를 송신한다(D02). 에어리어 사이즈는 통지된 사이즈보다 작아져도 무방하다. 통신 수단(1001)은 상기 영역 정보 설정 코맨드를 수신하여, 그 데이터를 코맨드 해석 수단(1002)에 송신한다. 코맨드 해석 수단(1002)은 상기 영역 정보 설정 코맨드를 해석하여, 영역 제어 수단(1010)에 에어리어 번지와 기입 사이즈를 통지한다. 영역 제어 수단(1010)은 에어리어 번지를 확인하고, 기입 사이즈를 설정한다(S81). 번지가 서로 다른 경우나, 사이즈가 미리 통지한 사이즈보다 큰 경우에는 에러가 된다.
다음으로 통신 수단(1001)은 고속 통신로를 사용하여 송신된 암호화된 개별 이니셜 데이터(H03)를 수신한다(D03). 통신 수단(1001)은 상기 데이터를 코맨드 해석 수단(1002)에 전달한다. 코맨드 해석 수단(1002)은 수신한 데이터를 영역 제어 수단(1010)에 송신한다.
영역 제어 수단(1010)은 상기의 개별 이니셜 데이터 암호키(H01)를 이용하여, 암호화된 개별 이니셜 데이터(H03)의 복호를 암복호 수단(1006)에서 수행하여 개별 이니셜 데이터(H03)를 취득한다(S82). 그리고 영역 제어 수단(1010)은 복호한 개별 이니셜 데이터(H02)를 기억 수단(1005)에 임시 격납한다(S84). 영역 제어 수단(1010)은 개별 이니셜 데이터(H02)의 해시를 해시 생성 수단(1009)에서 생성한다(S83).
다음으로, 통신 수단(1001)은 애플리케이션 암호키를 암호화한 데이터(A04)를 외부 기기(200) 경유로 수신하여(D04) 수치 계산 수단(1004)에 전달한다. 수치 계산 수단(1004)은 영역 제어 수단(1010)에서 생성한 해시를 취득하여, 관리 데이터에 포함되어 있던 개별 이니셜 데이터의 해시(H05)와 같은지를, 조합 수단(1007)을 이용하여 확인한다(S85).
이어서, 도 16c으로 넘어간다. 영역 제어 수단(1010)에서 생성한 해시와, 관리 데이터에 포함되어 있던 개별 이니셜 데이터의 해시(H05)가 다른 경우, 수치 계산 수단(1004)은 인스톨 처리를 중지한다. 카드(100)는 외부 기기(200), 서버(300)에 결과를 출력할 때(D05), 정상 종료가 아니라, 해시가 다르다는 것을 나타내는 에러 코드를 출력한다(S86). 수치 계산 수단(1004)은 기억 수단(1005)에서 보유하는 카드 RSA 비밀키(M04)를 사용하여, 암복호 수단(1006)에서 암호화된 애플리케이션 암호키(A04)를 복호하여 애플리케이션 코드 암호키(A01)를 취득한다(S87). 수치 계산 수단(1004)은 다음 애플리케이션 코드를 저속 통신로가 아니라 고속 통신로를 사용하여 코드를 수신한다는 판단을 하고, 기억 제어 수단(1003)으로부터 코드를 전개하는 어드레스 정보를 취득하여 영역 제어 수단(1010)에 통지한다. 수치 계산 수단(1004)은 복호한 애플리케이션 코드 암호키(A01)를 영역 제어 수단(1010)에 통지한다. 영역 제어 수단(1010)은 수신한 어드레스 정보를 유지하고, 어드레스 정보에 대응한 외부에 공개하기 위한 에어리어 번지와 에어리어 사이즈(이하, 상기 두 개의 정보를 합쳐 에어리어 정보로 한다)를 생성하여 수치 계산 수단(1004)에 송신한다(S88). 수치 계산 수단(1004)은 상기 에어리어 정보를 외부 기기(200)에 출력한다(D05). 영역 제어 수단(1010)은 수신한 애플리케이션 코드 암호키(A01)를 복호용 키로서 설정한다.
외부 기기(200)는 수신한 에어리어 정보를 사용하여, 고속 통신로를 이용해, 기입 에어리어 번지와 기입 에어리어 사이즈(기입 사이즈)를 카드에 통지하는 코맨드(이하, 영역 정보 설정 코맨드라 한다)를 송신한다(D06). 에어리어 사이즈는 통지된 사이즈보다 작아져도 무방하다. 통신 수단(1001)은 상기 영역 정보 설정 코맨드를 수신하여, 그 데이터를 코맨드 해석 수단(1002)에 송신한다. 코맨드 해석 수단(1002)은 상기 영역 정보 설정 코맨드를 해석하여, 영역 제어 수단(1010)에 에어리어 번지와 기입하는 사이즈를 통지한다. 영역 제어 수단(1010)은 에어리어 번지 를 확인하고, 기입 사이즈를 설정한다(S89). 번지가 서로 다른 경우나, 사이즈가 미리 통지한 사이즈보다 큰 경우에는 에러가 된다.
다음으로 통신 수단(1001)은 서버(300)로부터, 고속 통신로를 사용하여 송신된 암호화된 애플리케이션 코드(A03)를 외부 기기(200) 경유로 수신한다(D07). 통신 수단(1001)은 상기 데이터를 코맨드 해석 수단(1002)에 전달한다. 코맨드 해석 수단(1002)은 수신한 데이터를 영역 제어 수단(1010)에 송신한다.
영역 제어 수단(1010)은 상기의 애플리케이션 암호키(A01)를 이용하여, 암호화된 개별 이니셜 데이터의 복호를 암복호 수단(1006)에서 수행하여 애플리케이션 코드(A02)를 취득한다(S90). 영역 제어 수단(1010)은 애플리케이션 코드(A02)의 해시를 해시 생성 수단(1009)에서 생성한다(S91). 수치 계산 수단(1004)은 복호한 애플리케이션 코드(A02)를 기억 수단(1005)에 임시 격납한다(S92).
다음으로, 통신 수단(1001)은 조합을 요구하는 코맨드를 외부 기기(200)로부터 수신하여(D08) 수치 계산 수단(1004)에 전달한다. 수치 계산 수단(1004)은 영역 제어 수단(1010)에서 생성한 해시를 취득하고, 제조자의 공개키(M01)를 사용해 관리 데이터에 포함되어 있던 서명(A05)을 암복호 수단(1006)에서 복호하여 해시를 취득하고, 상기 취득한 애플리케이션 코드의 해시와 조합 수단(1007)에서 조합한다(S93). 서로 다른 경우, 수치 계산 수단(1004)은 인스톨 처리를 중지한다. 수치 계산 수단(1004)은 외부 기기(200), 서버(300)에 결과를 출력할 때(D09), 정상 종료가 아니라, 해시가 다르다는 것을 나타내는 에러 코드를 출력한다. 같은 경우, 수치 계산 수단(1004)은 판단 수단(1008)에 서명이 정상임을 통지하고, 인스톨 처 리를 종료한다(S94). 판단 수단(1008)은 서명이 정당하다는 통지를 받아, 서명과 함께 암호화되어 있던 개별 이니셜 데이터의 해시, 공통 데이터를 정당하다고 판단하여, 해당 애플리케이션에 관련된 공통 데이터, 개별 이니셜 데이터, 애플리케이션 코드를 카드 내에서 동작 가능한 상태로 변경시킨다. 수치 계산 수단(1004)은 정상 종료했다는 것을 나타내는 코드를 외부 기기(200), 서버(300)에 출력한다(D09).
본 발명에서는, 외부 기기(200)는 카드(100)로부터의 출력 데이터에 부여된 영역 정보(D01, D05)를 사용하여, 고속 통신로를 사용할 타이밍과 기입 대상 영역, 대상 영역 사이즈를 알 수 있다. 외부 기기(200)는 수신한 상기 영역 정보를 카드(100)에 송신하고, 다음으로 고속 통신로를 사용하여 기입할 영역 정보와 사이즈를 카드(100)에 전달한다(D02, D06). 그 다음에 고속 통신로를 사용하여, 카드(100)에 데이터(개별 이니셜 데이터, 애플리케이션 코드)를 기입한다(D03, D07).
본 발명을 사용함으로써, 외부 기기(200)가 서버(300)로부터의 암호 데이터를 수신하는 것만으로는 알 수 없는 정보, 즉, 카드(100)가 통신로를 복수 가지고 있는지, 또는 어떤 타이밍으로 저속 통신로와 고속 통신로를 전환할지, 어디에 데이터를 기입할지와 같은 점을 한 번에 통지할 수 있다.
외부 기기(200)는, 상기의 통신로의 개수에 대해서는 카드(100)의 식별 정보로부터 판별하는 것도 가능하고, 타이밍에 대해서는 카드(100)에 송신하는 암호 데이터의 종별을 사전에 외부 기기(200)가 알고 있으면, 전환하는 것이 가능하다. 하지만, 데이터를 기입하는 영역에 대해서는 카드(100)로부터 정보를 취득하지 않으 면 아는 것이 불가능하다. 그 때문에 상기 영역 정보를 취득했을 때에 전환 작업을 수행하는 것이, 다른 판별 방법을 수행하지 않아도 되므로 효율적이다.
또한, 애플리케이션 개발자(P2)가 카드 제조자(P1)에 대하여 서명의 신청을 하는 방법에 있어서, 애플리케이션 개발자(P2)를 물리적, 시각적, 사회적으로 확인하는 방법은 시스템의 규정 외로서, 공공 기관, 금융 기관 등이 실시하고 있는 본인 확인 방법을 이용하여도 상관없다. 또한, 생성된 서명을 배송하는 구조나, 카드 제조자(P1)로부터 애플리케이션 개발자(P2)에게 배포되는 개발 환경을 배송하는 구조에서도 마찬가지로 일반적인 배포 방법을 채용하면 되므로 언급하지 않는다. 또한, 상기의 개발 환경을 사용하여, 서명의 신청을 수행하고, 애플리케이션 개발자의 개발 환경과 제조자간에 암호 세션을 구축하여 서명을 배송하는 것도 가능하지만, 개발 환경의 배포를 올바르고 안전하게 하지 못하면 실현할 수 없다.
본 실시예에서는, 플레이어로서 애플리케이션 개발자, 서비스 제공자, 서버 운용자, 이렇게 3자로 나뉘어 있는데, 3자의 처리 내용으로서, 공통으로 사용하는 데이터를 구축하는, 개별적으로 사용하는 데이터를 구축하는, 그것을 배신(配信)하는, 그러한 형태에 한정되는 것이 아니다. 최종적인 신용 포인트를 제조자가 부여하는 애플리케이션의 서명에 두고 있으며, 그에 관련지어진 데이터를 포함하여 신용하고 인스톨하는 점이 본 특허의 목적으로서, 상기의 3자가 수행하는 처리 내용의 변경에 의해 본 발명은 전혀 영향을 받지 않는다.
또한, 본 실시예에서는 전 카드에 공통의 카드 RSA 비밀키(M04)를 설정하고 있지만, 그에 한정되는 것이 아니라, 전 카드에 개별의 카드 RSA 비밀키(M04)가 설 정되어 있어도 문제없다. 그 경우에는 카드 RSA 비밀키(M04)에 대응하는 공개키 증명서를 카드 내에서 보유해 두고, 서버에 그 공개키 증명서를 송부한다. 서버측은 증명서의 정당성을 검증 후에, 그 증명서에 포함되는 공개키를 이용하여 데이터(개별 이니셜 데이터, 애플리케이션 코드)를 암호화할 수 있기 때문에, 카드 개별로 데이터를 송부하는 것이 가능하다.
또한, 본 실시예에서는 카드에 카드 제조자(P1)의 공개키(M01)를 설정하고 있지만, 그에 한정되는 것이 아니라, 카드 제조자로부터 서명 처리의 권한을 위양(委讓)받은 사업자라면 대리로 서명 처리를 수행할 수 있다. 그 경우에는 카드 제조자는 권한을 위양하는 사업자의 공개키 페어에 카드 제조자의 비밀키를 이용하여 증명서를 발행한다. 위양받은 사업자는 자신의 비밀키를 사용하여 애플리케이션 코드에 서명을 부여한다. 위양받은 사업자는 제조자가 발행한 상기 증명서를 카드에 송부한다. 카드는 수신한 증명서에 대하여, 카드 내에 있는 카드 제조자의 공개키(M01)를 이용하여 증명서 검증을 수행하고, 정당하다고 판단되면, 증명서에 포함되는 공개키를 애플리케이션의 서명 검증용 키로서 이용한다. 위양받은 사업자가 생성한 서명을 포함하는 암호 데이터를 카드에 송부하면, 카드는 상기 서명 검증용 키를 사용하기 때문에, 위양받은 사업자가 생성한 서명의 정당성을 확인할 수 있다.
또한, 본 실시예에서 기재하고 있는 해시를 생성하는 방법은 일방향성 함수를 사용하고 있고, 종래 기술에서는 SHA-1이나 MD5, SHA-256 등이 사용되고 있다. 사용하는 목적으로 하는 점은, 대규모의 데이터를 요약하여 적은 데이터량으로 식 별하는 것이고, 상기 데이터가 이미 작아 해시를 생성할 필요가 없으면 그대로의 값을 비교하여도 좋다.
또한, 본 실시예에서 기재하고 있는 서명은 공개키 암호 방식의 경우에 한정하여 기재하고 있는 것이 아니라, 이용하는 암호 알고리즘이 공통키 암호 방식이면, 서명은 메세지 인증 코드(MAC:Massage Authentication Code)에 해당한다. 서명의 생성 방법에 관하여, 본 실시예에서는 해시를 작성하고 나서 비밀키로 서명을 실시하고 있지만, 상기 해시를 생성하는 방법에서도 기재했듯이, 데이터가 이미 작은 것이라면 상기 데이터를 그대로 이용하여도 상관없다.
또한, 본 실시예에서는 서버와 외부 기기간의 통신로에 대해서는 HTTP, 혹은 HTTPS로 기재하였으나, 그에 한정되는 것이 아니라, 유선, 무선에 관계없이 일반적으로 서버와 외부 기기가 통신하는 방법이라면, 본 발명에 하등 영향은 없다. 따라서, 서버와 외부 기기가 독자적으로 암호 통신을 수행하는 것도 가능하며, 상기 암호 통신을 수행하는 것에 의해 카드의 거동은 변하지 않는다.
본 실시예에서 나타내고 있는 시스템은 본 발명의 보안 메모리 카드 시스템의 일예로서, 시스템 내에서 사용되고 있는 카드가 보안 메모리 카드에 해당하고, 외부 기기가 액세스 장치에 해당한다. 또한 카드 내에 포함되는 기억 수단이 비휘발성 메모리에 해당하고, 그 이외의 수단을 실현하고 있는 것이 본 발명의 메모리 컨트롤러에 해당한다.
본 발명을 상세하게 또한 특정의 실시예를 참조하여 설명하였으나, 본 발명의 정신과 범위를 벗어나지 않는 한 다양한 변경이나 수정을 가할 수 있다는 것은 당업자에게 있어 자명하다.
본 발명은 2006년 8월 10일 출원된 일본 특허 출원 제 2006-218795호에 기초한 것으로서, 그 내용은 여기에 참조로서 포함된다.
본 발명에 따른 보안 메모리 카드는, 데이터를 수신하고, 보존하는 보안 메모리 카드로서 이용할 수 있다.
Claims (18)
- 적어도, 암호 데이터와 서명 대상 데이터를 수신하는 통신 수단과,임의의 데이터에 대하여 암복호 처리를 수행하는 암복호 수단과,상기 서명 대상 데이터와, 상기 암복호 수단으로 복호된 상기 암호 데이터에 격납되어 있는 서명을 조합하는 조합 수단과,상기 조합 수단의 조합 결과에 기초하여, 상기 서명 대상 데이터의 정당성을 판단하는 판단 수단과,상기 판단 수단에 의해 상기 서명 대상 데이터가 정당하다고 판단될 때, 상기 서명이 포함되어 있는 상기 암호 데이터의 상기 서명 이외의 데이터를 정당한 데이터로서 기억하는 기억 수단을 구비하는 보안 메모리 카드.
- 제1항에 있어서,상기 통신 수단은 제 1 암호 데이터와 제 2 암호 데이터를 수신하고,상기 조합 수단은 상기 암복호 수단으로 복호된 상기 제 1 암호 데이터에 포함되는 제 1 데이터인 서명과, 상기 제 2 암호 데이터를 복호한 데이터를 조합하고,상기 판단 수단은 상기 조합 수단의 조합 결과에 기초하여 상기 제 2 복호 데이터의 정당성을 판단하고,상기 기억 수단은, 상기 판단 수단에 의해 상기 제 2 암호 데이터가 정당하 다고 판단될 때, 상기 제 1 암호 데이터에 포함되는 제 2 데이터를 정단한 데이터로서 기억하는 것을 특징으로 하는 보안 메모리 카드.
- 제2항에 있어서,상기 통신 수단은 제 3 암호 데이터를 더 수신하고,상기 제 1 암호 데이터에 포함되는 제 3 데이터는 상기 제 3 암호 데이터의 해시이고, 상기 판단 수단은 상기 해시를 이용하여, 상기 제 3 암호 데이터의 정당성을 검증하는 것을 특징으로 하는 보안 메모리 카드.
- 제3항에 있어서,상기 제 1 암호 데이터에 포함되는 복수의 제 3 데이터는 복수의 제 3 암호 데이터 각각의 해시이고, 상기 판단 수단은 상기 복수의 제 3 데이터 각각의 해시를 이용하여 상기 복수의 제 3 암호 데이터 각각의 정당성을 판단하는 것을 특징으로 하는 보안 메모리 카드.
- 제2항에 있어서,참조처를 나타내는 링크 정보가 상기 제 1 암호 데이터에 포함되는 것을 특징으로 하는 보안 메모리 카드.
- 제2항에 있어서,상기 기억 수단은 보안 메모리 카드의 제조자가 제조할 때와, 보안 메모리 카드를 발행할 때 중 어느 하나로 설정한, 제 1 암호키 정보를 기억하는 것을 특징으로 하는 보안 메모리 카드.
- 제3항에 있어서,상기 통신 수단은 제 4 암호 데이터를 더 수신하고,상기 암복호 수단은 상기 제 1 암호키 정보를 이용하여 상기 제 4 암호 데이터를 복호하고, 복호한 제 4 암호 데이터를 제 2 암호키로서 상기 제 1 암호 데이터와 상기 제 2 암호 데이터와 상기 제 3 암호 데이터를 복호하는 것을 특징으로 하는 보안 메모리 카드.
- 제7항에 있어서,상기 제 2 암호키와, 복호한 상기 제 1 암호 데이터와 상기 제 2 암호데이터와 상기 제 3 암호 데이터를 포함하는 격납 데이터를 관리하는 복호키 관리 수단을 더 구비하는 것을 특징으로 하는 보안 메모리 카드.
- 제8항에 있어서,상기 격납 데이터를 갱신할 때에, 상기 격납 데이터를, 상기 제 1 암호키로 복호한 후, 상기 제 2 암호키로 복호하는 것을 특징으로 하는 보안 메모리 카드.
- 제3항에 있어서,외부 기기에 대하여, 상기 제 2 암호 데이터와 상기 제 3 암호 데이터 중 적어도 한 쪽 데이터를 기억하는 상기 기억 수단의 영역을 나타내는, 영역 정보를 송신하는 영역 제어 수단을 구비하고, 상기 영역 정보를 상기 외부 기기에 송신하는 것을 특징으로 하는 보안 메모리 카드.
- 제6항에 있어서,상기 서명은 상기 제조자에 의해 작성되는 것을 특징으로 하는 보안 메모리 카드.
- 제3항에 있어서,상기 제 1 암호 데이터는 상기 카드 내에서 실행 가능한 애플리케이션을 관리하기 위한 데이터이고, 상기 제 2 암호 데이터는 상기 실행 가능한 애플리케이션 코드 자체이며, 상기 제 3 암호 데이터는 애플리케이션이 사용하는 데이터인 것을 특징으로 하는 보안 메모리 카드.
- 적어도, 암호 데이터와 서명 대상 데이터를 수신하는 통신 수단과,임의의 데이터에 대하여 암복호 처리를 수행하는 암복호 수단과,상기 서명 대상 데이터와, 상기 암복호 수단으로 복호된 상기 암호 데이터에 격납되어 있는 서명을 조합하는 조합 수단과,상기 조합 수단의 조합 결과에 기초하여, 상기 서명 대상 데이터의 정당성을 판단하는 판단 수단과,상기 판단 수단에 의해 상기 서명 대상 데이터가 정당하다고 판단될 때, 상기 서명이 포함되어 있는 상기 암호 데이터의 상기 서명 이외의 데이터를 정당한 데이터로서 기억하는 기억 수단을 구비하는 메모리 컨트롤러.
- 제13항에 있어서,상기 통신 수단은 제 1 암호 데이터와 제 2 암호 데이터를 수신하고,상기 조합 수단은 상기 제 1 암호 데이터에 포함되는 제 1 데이터인 서명과, 상기 제 2 암호 데이터를 복호한 데이터를 조합하고,상기 조합 수단에 의해, 상기 복호한 제 2 암호 데이터가 정당하다고 판단될 때, 상기 제 1 암호 데이터에 포함되는 제 2 데이터를 정단한 데이터로서 상기 기억 수단에 기억하는 것을 특징으로 하는 메모리 컨트롤러.
- 제14항에 있어서,상기 통신 수단은 제 3 암호 데이터를 더 수신하고,상기 제 1 암호 데이터에 포함되는 제 3 데이터는 상기 제 3 암호 데이터의 해시이고, 상기 판단 수단은 상기 해시를 이용하여, 상기 제 3 암호 데이터의 정당성을 검증하는 것을 특징으로 하는 메모리 컨트롤러.
- 제15항에 있어서,상기 제 1 암호 데이터는 상기 카드 내에서 실행 가능한 애플리케이션을 관리하기 위한 데이터이고, 상기 제 2 암호 데이터는 상기 실행 가능한 애플리케이션 코드 자체이며, 상기 제 3 암호 데이터는 애플리케이션이 사용하는 데이터인 것을 특징으로 하는 메모리 컨트롤러.
- 액세스 장치와, 상기 액세스 장치로부터의 액세스 지시에 따라 데이터의 읽기, 쓰기를 수행하는 보안 메모리 카드를 갖는 보안 메모리 카드 시스템으로서,상기 보안 메모리 카드는,비휘발성 메모리와,적어도, 암호 데이터와 서명 대상 데이터를 수신하는 통신 수단과,임의의 데이터에 대하여 암복호 처리를 수행하는 암복호 수단과,상기 서명 대상 데이터와, 상기 암복호 수단으로 복호된 상기 암호 데이터에 격납되어 있는 서명을 조합하는 조합 수단과,상기 조합 수단의 조합 결과에 기초하여, 상기 서명 대상 데이터의 정당성을 판단하는 판단 수단과,상기 판단 수단에 의해 상기 서명 대상 데이터가 정당하다고 판단될 때, 상기 서명이 포함되어 있는 상기 암호 데이터의 상기 서명 이외의 데이터를 정당한 데이터로서 기억하는 기억 수단을 구비하는 메모리 컨트롤러를 가지며,상기 통신 수단을 사용하여, 상기 판단 수단이 산출한 결과를 상기 액세스 장치에 통지하는 것을 특징으로 하는 보안 메모리 카드 시스템.
- 비휘발성 메모리를 갖는 보안 메모리 카드와 접속하여 사용하는 액세스 장치로서,상기 액세스 장치는,상기 보안 메모리 카드와 통신하기 위한 통신 수단과,상기 보안 메모리 카드에 송신하는 데이터를 기억하는 기억 수단과,상기 기억 수단으로부터 상기 보안 메모리 카드에 송신하는 데이터를 읽어 내어, 상기 보안 메모리 카드가 수신 가능한 데이터로 변환하는 프로토콜 변환 수단을 가지고,상기 보안 메모리 카드로부터 통지되는 결과를 수신하고, 상기 결과에 기초하여 상기 보안 메모리 카드와의 통신을 제어하는 것을 특징으로 하는 액세스 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPJP-P-2006-00218795 | 2006-08-10 | ||
JP2006218795 | 2006-08-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20090040246A true KR20090040246A (ko) | 2009-04-23 |
Family
ID=39032987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087007551A KR20090040246A (ko) | 2006-08-10 | 2007-08-07 | 메모리 컨트롤러, 보안 메모리 카드, 및 보안 메모리 카드시스템 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20100153746A1 (ko) |
JP (1) | JPWO2008018457A1 (ko) |
KR (1) | KR20090040246A (ko) |
TW (1) | TW200818839A (ko) |
WO (1) | WO2008018457A1 (ko) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8826037B2 (en) * | 2008-03-13 | 2014-09-02 | Cyberlink Corp. | Method for decrypting an encrypted instruction and system thereof |
JP2010268417A (ja) * | 2009-04-16 | 2010-11-25 | Toshiba Corp | 記録装置及びコンテンツデータ再生システム |
JP5369916B2 (ja) * | 2009-06-11 | 2013-12-18 | ソニー株式会社 | カード管理装置およびカード管理システム |
US9846789B2 (en) | 2011-09-06 | 2017-12-19 | International Business Machines Corporation | Protecting application programs from malicious software or malware |
US9954875B2 (en) | 2009-06-26 | 2018-04-24 | International Business Machines Corporation | Protecting from unintentional malware download |
US8578175B2 (en) * | 2011-02-23 | 2013-11-05 | International Business Machines Corporation | Secure object having protected region, integrity tree, and unprotected region |
US8954752B2 (en) | 2011-02-23 | 2015-02-10 | International Business Machines Corporation | Building and distributing secure object software |
US9298894B2 (en) * | 2009-06-26 | 2016-03-29 | International Business Machines Corporation | Cache structure for a computer system providing support for secure objects |
US8819446B2 (en) | 2009-06-26 | 2014-08-26 | International Business Machines Corporation | Support for secure objects in a computer system |
JP5521803B2 (ja) | 2010-06-10 | 2014-06-18 | ソニー株式会社 | 通信装置、通信方法、及び、通信システム |
US9864853B2 (en) | 2011-02-23 | 2018-01-09 | International Business Machines Corporation | Enhanced security mechanism for authentication of users of a system |
JP5050114B1 (ja) | 2011-04-28 | 2012-10-17 | 株式会社東芝 | 情報記録装置 |
US9223965B2 (en) | 2013-12-10 | 2015-12-29 | International Business Machines Corporation | Secure generation and management of a virtual card on a mobile device |
US9235692B2 (en) | 2013-12-13 | 2016-01-12 | International Business Machines Corporation | Secure application debugging |
FR3019347B1 (fr) * | 2014-03-25 | 2017-07-21 | Oberthur Technologies | Securisation du chargement de donnees dans une memoire non-volatile d'un element securise |
US11632244B2 (en) * | 2020-09-14 | 2023-04-18 | Paypal, Inc. | Techniques for single round multi-party computation for digital signatures |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3114991B2 (ja) * | 1990-11-30 | 2000-12-04 | 株式会社東芝 | データ通信システム |
US6268788B1 (en) * | 1996-11-07 | 2001-07-31 | Litronic Inc. | Apparatus and method for providing an authentication system based on biometrics |
US6446206B1 (en) * | 1998-04-01 | 2002-09-03 | Microsoft Corporation | Method and system for access control of a message queue |
JP2003317043A (ja) * | 2002-04-23 | 2003-11-07 | Nippon Telegr & Teleph Corp <Ntt> | 広域アプリケーション管理者によるicカード相互運用方法及びシステム |
JP4155393B2 (ja) * | 2002-06-17 | 2008-09-24 | 富士通株式会社 | ファイル交換装置、個人情報登録・紹介サーバ、送信制御方法、及びプログラム |
JP4744106B2 (ja) * | 2003-08-06 | 2011-08-10 | パナソニック株式会社 | セキュアデバイス、情報処理端末、通信システム及び通信方法 |
-
2007
- 2007-08-07 KR KR1020087007551A patent/KR20090040246A/ko not_active Application Discontinuation
- 2007-08-07 JP JP2008528829A patent/JPWO2008018457A1/ja not_active Withdrawn
- 2007-08-07 US US12/088,591 patent/US20100153746A1/en not_active Abandoned
- 2007-08-07 WO PCT/JP2007/065443 patent/WO2008018457A1/ja active Application Filing
- 2007-08-10 TW TW096129517A patent/TW200818839A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20100153746A1 (en) | 2010-06-17 |
JPWO2008018457A1 (ja) | 2009-12-24 |
TW200818839A (en) | 2008-04-16 |
WO2008018457A1 (fr) | 2008-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20090040246A (ko) | 메모리 컨트롤러, 보안 메모리 카드, 및 보안 메모리 카드시스템 | |
US9531681B2 (en) | Method for the authentication of applications | |
US7958353B2 (en) | Information security device | |
EP2954448B1 (en) | Provisioning sensitive data into third party network-enabled devices | |
CN109639427B (zh) | 一种数据发送的方法及设备 | |
US9124561B2 (en) | Method of transferring the control of a security module from a first entity to a second entity | |
JP5400611B2 (ja) | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びアクセス装置 | |
GB2530028A (en) | Registry apparatus, agent device, application providing apparatus and corresponding methods | |
CN113411190B (zh) | 密钥部署、数据通信、密钥交换、安全加固方法及系统 | |
EP2372592B1 (en) | integrated circuit and system for installing computer code thereon | |
JP2004280284A (ja) | 制御プロセッサ、電子機器及び電子機器のプログラム起動方法、並びに電子機器のシステムモジュール更新方法 | |
CN110213039B (zh) | 一种管理方法、终端和服务器 | |
JP7484092B2 (ja) | サーバ及びコンピュータプログラム | |
JP6894469B2 (ja) | 情報処理装置およびその制御プログラム | |
KR20180052479A (ko) | 서명 체인을 이용한 유무선 공유기의 펌웨어 업데이트 시스템, 유무선 공유기 및 유무선 공유기의 펌웨어 업데이트 방법 | |
WO2023073198A1 (en) | Method to store data persistently by a software payload | |
EP4423969A1 (en) | Method to establish a secure channel | |
JP4158758B2 (ja) | プログラムid通信処理制御方法、プログラムid通信範囲制御方法および公開鍵毎通信路提供方法 | |
JP2007533018A (ja) | ネットワークを介した動作をセキュリティ保護する方法および関連装置 | |
US9729333B2 (en) | Revocation of a root certificate stored in a device | |
JP2004252578A (ja) | 提供元のicカード、提供先のicカード、情報授受媒介装置、icカード間情報授受システム、icカードプログラム、プログラム及びicカード間情報授受方法 | |
WO2023073200A1 (en) | Method to establish a secure channel | |
Torvinen et al. | Public-key Deployment in Context |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |