이제, 본 발명에 따른 자율형 IC 카드의 실시예에 대해서 첨부 도면을 참조로 상세히 설명한다.
도 3은 본 발명에 따른 IC 카드의 일 실시예의 논리 구성을 도시한 도면이다.
도 3에서, 본 발명의 자율형 IC 카드는 중앙 처리부(CPU)(10), 읽기 전용 메모리(ROM)(11), 랜덤 액세스 메모리(RAM)(12), 불휘발성 메모리(13), 암호 처리부(14), 통신 제어부(15), 외부 통신 인터페이스(16), 및 호스트 장치 인터페이스(17)를 포함한다.
여기서, 전술한 구성은 물리적 구성(하드웨어)과 논리적 구성(소프트웨어)의 혼합이다. 이하, 이들 구성 모두에 관해 몇 가지 설명한다.
호스트 장치 인터페이스(17)는 외부 통신을 수행하는 종래의 물리적 인터페이스이다. 종래 기술과 마찬가지로, 이 호스트 장치 인터페이스(17)는 접촉식과 무접촉식을 포함한다. CPU(10)는 부동 소수점 연산을 제외하고는 모든 종류의 연 산을 실행하는 중앙 처리 장치이다. 몇 가지 부동 소수점 연산을 실행하기 위하여 부동 소수점 처리부(미도시)가 특별히 구비됨에 유의한다. ROM(11)은 자율형 IC 카드(1)용의 고유 소프트웨어(운영체제(OS)나 프로그램 같은 것)와 후술될 본 발명의 칩 ID가 저장되는 읽기 전용 메모리이다. RAM(11)은 자율형 IC 카드 내부에서 동작하는 소프트웨어에 의해 처리되는 데이터가 임시로 저장되는 랜덤 액세스 메모리이다. RAM(12) 내의 내용들은 IC 카드에의 전력 공급이 중단되면 완전히 소거된다.
불휘발성 메모리(13)는 후술될 가치 정보를 저장한다. 가치 정보는 전자 티켓과 전자 화폐와 같은 가치를 갖는 데이터에 해당한다. 불휘발성 메모리(13)는 내용을 보존하도록 설계된 메모리이므로 전원 공급이 중단되어도 그 내용은 보존됨에 유의한다.
전술한 것들은 물리적 구성 요소들이다.
외부 통신 인터페이스(16)는 CPU(10) 등을 포함하는 후술될 본 발명의 칩이 외부와 직접적으로 통신을 수행할 수 있도록 하는 논리 인터페이스이다. 종래의 IC 카드는 물리적으로 접속되는 장치와만, 통상적으로는 IC 카드 단말기와만 통신하는 논리 인터페이스만을 포함한다. 그러나 본 발명의 자율형 IC 카드(1)는 이 논리 호스트 인터페이스 외에 외부 장치(후술될 본 발명의 칩이 내장된 서비스 클라이언트)와 직접적인 통신을 수행하는 외부 통신 인터페이스(16)를 포함한다. 이 외부 통신 인터페이스(16)는 후술될 "4. 본 발명의 칩용 API 프로토콜"에서 설명될 프로토콜에 따라서 통신을 수행하는 인터페이스이다.
통신 제어부(15)는 외부 통신 인터페이스(16)를 통한 외부 장치와의 통신을 제어하는 소프트웨어 모듈이다. 통신 제어부(15)는 후술될 "10. 본 발명의 칩용 API 사양" 전체를 실현하는 소프트웨어 모듈이다. 이 소프트웨어 모듈은 특히 "10.1 세션(session) 관리 명령 그룹" 및 "10.2 트랜잭션(transaction) 관리 명령 그룹"과 밀접하게 관련된다. 이 모듈을 이용하여 외부 장치와 직접적으로 통신이 수행된다.
암호 처리부(14)는 후술될 "3.4 인증, 액세스 제어 및 암호화", "5. eTP 키 증명서", 및 "6. 키 실체"에서 정의되는 다양한 종류의 상호 인증 및 암호 통신을 가능하게 하는 모듈이다. 암호 처리부(14)는 복수의 상호 인증 옵션 및 복수의 암호 통신 옵션 중에서 적절한 상호 인증 및 적절한 암호 통신을 선택하여 교체한다. 여기서 IC 카드 단말기와 같은 개재 장치를 통한 데이터 내용의 도청이나 데이터의 위조의 위험은 암호 처리부(14)를 이용한 상호 인증과 암호 통신을 수행함으로써 더욱 감소될 것이다.
도 3에 도시된 본 발명에 따른 구성부는 바람직하게는 원-칩 마이크로컴퓨터(이후로는 "IC 칩"이하 함")를 이용하여 구현되며, 그 사양은 본 실시예에 대한 설명의 마지막 부분에 수록될 것이다.
이제, 본 발명의 자율형 IC 카드에 내장될 IC 카드의 전체 특징에 대해서 설명한다.
본 발명에 따른 IC 카드는 분산 환경에서의 노드(node)로 기능하도록 설계된다. 그러므로, 본 발명의 IC 카드가 IC 카드 리더/라이터를 포함하는 IC 카드 단말기 본체에 접촉식 또는 비접촉식으로 접속되어 기능하는 장치가 네트워크를 통해 예컨대 다른 IC 카드와 물리적으로 통신할 수 있도록 구성되어 있다면, 본 발명에 따른 IC 카드를 포함한 몇 가지 IC 카드는 각각 통신 네트워크 상의 노드로서의 기능을 갖는다. 더욱이 이 경우에 IC 카드 리더/라이터 및 IC 카드 단말기 본체는 네트워크와 무접촉식 통신의 물리층을 통신 가능하게 하는 게이트웨이(브리지)로서의 역할을 한다. 즉, 전술한 외부 통신 인터페이스(16)는 분산 시스템에서 노드인 IC 카드의 통신을 제어하고, 호스트 장치 인터페이스(17)는 무접촉식 통신의 물리층을 통신 가능하게 하는 역할을 한다.
그러므로, 본 발명에 따른 IC 칩은 분산 환경에서 노드로서 기능하기 위해서, 가장 간단한 예로서 전술한 네트워크로 표현되는 전체 분산 시스템에서 고유 식별자(ID)를 갖는다.
더욱이, 본 발명의 자율형 IC 카드에 내장된 IC 칩은 네트워크를 통해 접속되어 있으면서 유사한 IC 칩들을 몇 개씩 갖고 있는 복수의 장치를 식별하고, 이들 장치들과의 상호 인증을 먼저 수행한다. 그리고 나서 이들 장치들이 정규의 실체인 것으로 확인한 후에 IC 카드는 이들 장치들과 통신을 수행하도록 설계된다. 인증에는 두 가지 모드, 즉 (정보) 발행자 모드와 소유자 모드가 있다. 이 모드들에 대해서는 후술한다.
더욱이, 본 발명에 따른 IC 칩은 IC 칩이 갖고 있는 자원을 보호하기 위하여 전술한 ID에 기초하여 액세스 제어 리스트를 채용한다. 즉, 칩과 파일(및 레코드) 각각에 액세스 제어 리스트가 부가된다.
본 발명에 따른 IC 칩은 "소유자", "발행자", 및 "기타" 서비스 클라이언트를 통일적으로 취급한다. IC 카드는 각 서비스 클라이언트가 갖고 있는 권한에 따라서 액세스 제어 리스트를 변경하는 애플리케이션 프로그래밍 인터페이스(API)를 발행한다. 이런 식으로, IC 칩은 액세스 권한의 제한, 해제, 또는 양도와 같은 제어를 유연하게 수행할 수 있다.
한편, 본 발명에 따른 IC칩은 콘텐츠를 복수의 콘텐츠 홀더들 사이에, 예컨대 본 발명의 칩과 네트워크 상의 가치 정보 저장 서버 사이에 분산시켜서 유지하는 하이브리드 모드를 지원한다. 본 발명에 따른 IC 칩은 하이브리드 모드를 지원하기 위한 기구로서 콘텐츠들 간의 링크 기능을 더 제공한다.
다음, 본 발명의 자율형 IC 카드를 이용하여 구체적인 통신 예에 대해 설명한다.
도 4는 본 발명의 자율적 IC 카드를 이용하여 IC 카드들 간의 통신을 수행하는 시스템 구성을 도시한 도면이다.
도면에서, 자율형 IC 카드는 IC 카드 단말기 본체(3)에 구비된 IC 카드 리더/라이터(2a)에 접촉식 또는 무접촉식으로 접속된다. 한편, 자율형 IC 카드(1b)도 마찬가지로 IC 카드 단말기 본체(3)에 구비된 IC 카드 리더/라이터(2b)에 접촉식 또는 무접촉식으로 접속된다.
전술한 구성에서, 조작자가 자율형 IC 카드(1a)에 대해 자율형 IC 카드(1b)와 통신을 행하려고 하면, 조작자는 IC 카드 단말기 본체(3)에 구비된 입력 단말기(미도시)에 지시를 입력한다. 이 지시에 응답하여 IC 카드 단말기 본체(3) 는 IC 카드 리더/라이터(2a)를 통해 IC 카드에 명령을 전송한다. 자율형 IC 카드는 이 명령을 수신하면 도 3에 도시된 외부 통신 인터페이스(16)를 통해 자율형 IC 카드와 소프트웨어 방식으로 직접적으로 그리고 자율적으로 통신한다. 자율형 IC 카드(1a)가 자율형 IC 카드(1b)와 직접적으로 통신할 수 있는 이유는 자율형 IC 카드(1a)가 전술한 분산 시스템에서 노드로서 기능할 수 있기 때문이다. 이와 같은 통신에서, 도 3에 도시된 암호 처리부(14)가 통신 데이터를 암호화 및 복호화한다면, 통신 과정에서 데이터의 위조나 도청같은 위험을 확실하게 방지할 수 있다.
도 5는 본 발명의 자율형 IC 카드를 이용하여 통신을 수행하는 다른 시스템 구성을 도시한 도면이다.
본 발명의 자율형 IC 카드를 이용한 통신에서는 통신 상대방은 IC 카드일 필요는 없고 다른 통신 장치일 수도 있다. 도면에서, IC 카드 단말 본체(3)는 네트워크(4)를 통해 통신 장치(5)에 접속된다. 자율형 IC 카드(1)가 네트워크(4)를 통해 통신 장치(5)와 통신할 때, IC 카드 단말기 본체(3)로부터 명령을 수신한 자율형 IC 카드(1)는 통신 장치(5)와 소프트웨어 방식으로 직접적으로 그리고 자율적으로 통신한다.
이제, 본 발명의 자율형 IC 카드에 내장된 IC 칩(이후 간단히 "본 발명 칩"이라 함)의 상세 사양에 대해서 설명한다. 다음의 설명에서 콘텐츠 홀더(CH)는 전술한 자율형 IC 카드(1, 1a)에 해당하며, 서비스 클라이언트(SC)는 자율형 IC 카드(1, 1a)와 통신하는 모든 장치, 즉 전술한 IC 카드 단말기 본체(3), 자율형 IC 카드(1b), 및 통신 장치(5)에 해당한다.
여기서, 전체 내용의 파악을 용이하게 하기 위하여, 아래와 같이 목차를 달고, 설명의 본체에는 IC 칩의 각 구성에 인덱스를 붙인다.
목차
1. 소개
1.1 분산 환경에서 노드로서의 본 발명 칩
1.2 본 발명 칩 ID로 특정되는 상호 인증 방식
1.3 본 발명 칩 ID에 기초한 액세스 제어 리스트 방식에 의한 자원 보호 기구
1.4 칩 소유자, 가치 정보 발행자, 및 가치 정보 이용자에 대한 총합적 액세스 제어의 실현
1.5 롤백(roll-back) 가능 트랜잭션 기구
1.6 링크 기능을 가진 저장 구조
1.7 관련 칩 체계와의 정합성
1.8 각종 칩에 대응하는 적절한 표준화
2. 시스템 사양
2.1 시스템 아키텍쳐
2.2 본 발명 칩 식별자(본 발명 칩 ID)
3. 본 발명 칩의 개요
3.1 본 발명 칩
3.2 데이터 구조 모델
3.3 본 발명 칩 API
3.4 인증, 액세스 및 암호
4. 본 발명 칩 API 프로토콜
4.1 패킷 형식
4.2 명령 식별자(명령 ID) 리스트
4.3 에러 코드 리스트
4.4 MAC, 트레일러
4.5 세션 통신 및 비세션(non-session) 통신
5. eTP 키 증명서
세션 구축 중의 인증 시의 증명서 이용
1. 개요
2. 상세
6. 키 실체
7. 본 발명의 표준 콘텐츠 형식
8. 키 실체에 의한 본 발명의 표준 콘텐트 조작 시의 결산 처리
9. 본 발명 칩 API의 사양(데이터형 정의)
10. 본 발명 칩 API의 사양(명령 정의)
10.1 세션 관리 명령 그룹
10.2 트랜잭션 관리 명령 그룹
10.3 파일 관리 명령 그룹
10.4 레코드 관리 명령 그룹
10.5 키 실체 관리 명령 그룹
10.6 인증 보조 관리 명령 그룹
암호 구현 사양
1. 소개
본 발명 칩(가치 정보 부가 칩)은 본 발명에 관련된 프로젝트가 지향하는 초기능(highly functional) 분산 시스템에서 가치 정보의 저장 매체를 구성하는 컴퓨터 시스템(IC 카드 같은 것)과 이 컴퓨터 시스템의 외부 사양이다. 장래의 기술적 발전을 상정해서, 본 발명 칩은 8비트 CPU 버전, 16 비트 CPU 버전, 32 비트 CPU 버전으로 각각 계열화되어 있으며, 본 발명 칩은 공통의 조작에 관해서는 공통의 명령과 공통의 메시지 형식을 제공한다. 본 발명 칩의 사양의 각종 체계 중에서도 본 설명은 특히 16 비트 CPU 버전의 IC 칩을 대상 하드웨어로 하여 사양의 개요를 설명하기로 한다.
본 장(chapter)에서는 기존의 다른 내탬퍼(tamper-resistant) 칩과 비교해서 본 발명 칩의 특징에 관해서 설명한다.
1.1 분산 환경에서 노드로서의 본 발명 칩
리더/라이터를 통해 조작될 컴퓨터 주변 장치로서 설계되는 종래의 IC 칩과는 달리, 본 발명 칩은 분산 환경에서 노드로서 설계된다. 네트워크 상의 서비스 제공자 모듈과 칩, 그리고 칩과 카드는 대등하게 피어-투-피어(peer-to-peer) 통신을 수행한다. 리더/라이터 장치는 무접촉식 통신의 물리층을 근거리 통신망(LAN)과 통신 가능하게 하는 게이트웨이(브리지)를 구성한다.
본 발명 칩의 아키텍쳐에서 본 발명 칩은 전체 분산 시스템에서 고유의 식별자(본 발명 칩 ID)를 갖는다. 본 발명 칩 ID는 칩을 물리적으로 식별하는 것뿐만 아니라 분산 시스템에서의 경로를 제어하는데 이용된다. 여기서 인증 통신에서는 본 발명 칩 ID는 통신 상대방에 의해 식별자로서 이용된다.
그러므로, 본 발명 칩의 인증 대상은 리더/라이터가 아니고 네트워크와 리더/라이터를 통해 칩과 정보를 교환하는 네트워크 상의 계산 실체(컨텐츠 홀더)이다.
1.2 본 발명 칩 ID로 특정되는 상호 인증 방식
본 발명 칩은 상호 인증을 수행하여 통신 상대방이 정규의 실체임을 확인한 후에 통신을 수행한다. 본 발명 칩 아키텍쳐에서 본 발명 칩 내장 콘텐츠 홀더(CH)와 본 발명 칩 내장 서비스 클라이언트(SC)는 모두 일관 고유 식별자(본 발명 칩 ID)를 포함하고 있으며, 상호 인증 후에 통신 상대방의 본 발명 칩 ID를 식별한다.
1.3 본 발명 칩 ID에 기초한 액세스 제어 리스트 방식에 의한 자원 보호 기구
본 발명 칩은 상호 인증을 통해 본 발명 칩 API를 발행하는 SC를 특정한다. 그러므로, 본 발명 칩 ID에 기초한 액세스 제어 리스트는 본 발명 칩이 가진 자원을 보호하는데 이용된다. 현재의 본 발명 칩은 자원에 대해서 본 발명 칩 ID를 이용하여 "발행자", "소유자" 등과 같은 속성을 표현한다. 더욱이, 액세스 제어 리 스트를 이용하여 "발행자", "소유자" 및 "기타" SC에 의해 발행될 수 있는 명령을 지정할 수 있다.
1.4 칩 소유자, 가치 정보 발행자, 및 가치 정보 이용자에 대한 총합적 액세스 제어의 실현
본 발명 칩에서는 가치 정보를 저장하는 각종 애플리케이션이 구현될 수 있다. 가치 정보에는 다양한 타입이 있다. 예컨대, 다음과 같은 종류의 정보도 칩 상에서의 정보로 생각될 수 있다.
-정보 발행자 뿐만 아니라 칩 소유자에 의해서도 변경될 수 없는 정보(예컨대, 전자 티켓의 좌석 번호)
- 칩 소유자에게도 공개되지 않는 정보(예컨대, 전자 티켓을 변경하는 키)
-칩 소유자에 의해서만 완전히 제어될 수 있는 정보(예컨대, 칩 소유자의 개인 정보), 및
-누구라도 읽을 수 있는 정보
본 발명 칩은 액세스 제어 리스트에서 "발행자", "소유자" 및 "기타" SC를 통일적으로 취급하며, 각 SC가 갖고 있는 권한에 따라서 액세스 제어 리스트를 변경하는 API를 발행한다. 이런 식으로 본 발명 칩은 액세스 권한의 제한, 해제, 또는 양도와 같은 제어를 유연하게 수행할 수 있다.
1.5 롤백(roll-back) 가능 트랜잭션 기구
가치 정보를 본 발명 칩으로 안전하게 이송하는 것이 매우 중요하다. 그러므로, 특히 가치 정보의 작성과 삭제에 관해서는, 본 발명 칩은 처리의 원자성(atomicity)을 보증하기 위해서 트랜잭션 기구를 제공한다. 트랜잭션을 개시한 후에, 발행된 명령에 의한 조작은 트랜잭션 종료 시의 커미트(commit) 명령에 의해 반영된다. 만일 어보트(abort) 명령이 발행되거나 커미트 명령이 규정된 타임아웃 시간까지 도착하지 않으면, 발행된 명령은 롤백된다. 마찬가지로, 본 발명 칩이 어떤 장애로 인해 트랜잭션 도중에 전원이 차단된 경우에는 본 발명 칩이 다시 동작하는 초기 상태에서 롤백 처리가 행해진다.
1.6 링크 기능을 가진 저장 구조
현재, 내탬퍼 칩은 정보 처리 능력에 있어서 또 저장 용량 등과 같은 자원에 있어서도 다양하게 존재한다. 이 중에서 작은 자원을 가진 하드웨어는 상정되는 애플리케이션의 모든 가치 정보를 칩 내에 저장할 수 없는 경우가 있을 수 있다. 한편, 가치 정보를 칩 내에 분산시켜 유지하는 방법을 채용하는 것이 처리 효율 면에서 바람직할 수 있다. 그러므로, 본 발명은 콘텐츠를 본 발명의 복수의 콘텐츠 홀더, 예컨대 본 발명 칩과 네트워크 상의 가치 정보 저장 서버와 같은 것들 중에 분산시켜서 보유하는 혼성 방법을 지원한다. 더욱이, 본 발명은 이 혼성 방법을 지원하는 기구로서 콘텐츠들 간의 링크 기능을 제공한다.
1.7 관련 칩 체계와의 정합성
본 발명 칩은 API 명령 컨벤션, 에러 코드, 자원의 정적 및 동적 취급 방법 등에 관하여 본 발명에 관련된 프로젝트의 다른 아키텍쳐와 정합성을 갖는다. 예컨대, 에러 코드의 일반적인 부분은 관련 칩과 본 발명 칩에서 공통이다. 이런 식으로 본 발명은 본 발명 칩 애플리케이션 개발 시에 관련 칩 아키텍쳐 상에서의 개 발 경험이 있는 기술자를 지원한다.
1.8 각종 칩에 대응하는 적절한 표준화
본 발명 칩은 8 비트 내지 32 비트 CPU, 접촉식/비접촉식/듀얼 인터페이스, 스마트 카드에서 무선 주파수 식별(RF-ID)을 포함하는 각종 IC 카드와 정합성을 가진 API 시스템을 제공한다.
2. 시스템 사양
2.1 시스템 아키텍쳐
본 발명 칩은 내탬퍼 가치 정보를 안전하게 저장하고 컴퓨터 네트워크 상에서 내탬퍼 가치 정보를 안전하게 교환하는 분산 시스템 아키텍쳐이다. 본 발명 칩 아키텍쳐는 다음의 구성요소들을 필수적으로 포함한다.
(A) 가치 정보 네트워크 기반구조(실체 네트워크 기반구조)
이것은 가치 정보를 교환하는 아키텍쳐로서 다음의 두 가지 구성 요소를 포함한다.
A-i) 본 발명 칩 내장 콘텐츠 홀더(CH)
본 발명 칩 내장 콘텐츠 홀더는 분산 시스템 상의 계산 실체이다. 본 발명 칩 내장 콘텐츠 홀더는 가치 정보를 저장하고 본 발명 칩 내장 API를 제공하며, 따라서 외부로부터 이 가치 정보의 조작이 가능하다. 예컨대 본 발명 칩 내장 콘텐츠 홀더는 다음을 포함한다.
본 발명 칩: 가치 정보를 안전하게 저장하는 내탬퍼 LSI 칩.
본 발명 칩 박스: 내탬퍼 케이싱에 내장되어 가치 정보를 안전하게 저장하는 대용량 전자금고.
A-ii) 본 발명 칩 내장 서비스 클라이언트(SC)
본 발명 칩 내장 서비스 클라이언트는 본 발명 칩 API를 통해 본 발명 칩 내장 콘텐츠 홀더에 저장된 가치 정보에 액세스하는 계산 실체이다. 예컨대 본 발명 칩 내장 서비스 클라이언트는 다음의 타입을 포함한다.
본 발명 칩: 본 발명 칩들 중 고도한 것은 클라이언트로서의 기능을 갖고 있다.
발행 서버: 가치 정보를 발행하고 이 가치 정보를 본 발명 칩 내장 콘텐츠 홀더에 저장하는 서버.
서비스 현장 시스템: 본 발명 칩에 저장된 가치 정보를 이용하는 애플리케이션 시스템. 이 서비스 현장 시스템은 예컨대 전자 티켓팅 게이트를 포함한다.
*주의: 본 발명 칩 내장 서비스 클라이언트는 물론이고 본 발명 칩 박스로 기능하는 계산 실체도 존재한다.
(B) 암호/인증 네트워크 기반구조(AENI)
이것은 본 발명 칩이 공개키 암호 체계의 인증과 암호를 구현하는 경우의 인증 시스템이다. 인증국이 주된 역할을 수행한다.
(C) 애플리케이션 네트워크 기반구조(ANI)
이것은 애플리케이션에 의존하는 각종 통신 시스템에 해당한다. 예컨대 전자 티켓팅의 경우에 애플리케이션 네트워크 기반구조는 티켓의 검색이나 구매를 지시하는 네트워크 프로토콜 등을 포함한다. 구매 지시까지는 ANI 프레임 내에서 이 루어지고, 가치 정보인 티켓의 양도는 본 발명 칩의 기능을 적용한 ENI에서 이루어진다.
2.2 본 발명 칩 식별자(본 발명 칩 ID)
본 발명 칩 내장 콘텐츠 홀더와 서비스 클라이언트는 고유 식별자들을 갖고 있으며, 이들 각각은 본 발명 칩 식별자(본 발명 칩 ID)라 불린다. 본 발명 칩 ID는 네트워크 상에서 본 발명 칩 내장 콘텐츠 홀더 및 서비스 클라이언트의 인증, 메시지의 경로 제어 등에 사용된다. 본 발명 칩 ID는 16 옥테트(128 비트) 수로 표현된다.
*본 발명 칩 ID는 ENI 통신 프로토콜에서 이용되는 식별자의 교환 형식이다. 본 발명 칩 ID는 본 발명 칩 내에서의 내부 보존 형식을 정하지 않는다.
*경로 제어 구현의 용이성을 고려하면, ENI의 네트워크층의 프로토콜에서의 식별자를 직접 본 발명 칩 ID로 정의하는 구현 방법도 상정할 수 있다. 예컨대 네트워크 어드레스의 하위 비트는 그대로 본 발명 칩 ID에 적용될 수 있다.
*소유자의 본 발명 칩 ID는 "0x00∼00"(모두 "0")으로 정의될 것이다.
예컨대 본 발명 칩 ID "X"를 갖고 있는 본 발명 칩 내장 서비스 클라이언트는 소유자 인증 모드에서 인증된 후에 세션을 설정한 다음에 그 세션에서 파일을 작성하고, 그 파일의 발행자 ID난은 "0"을 저장한다.
*관리 운용의 수퍼유저의 본 발명 칩 ID는 "0xff∼ff"(모두 "1")로 정의될 것이다.
3. 본 발명 칩의 개요
3.1 본 발명 칩
본 발명 칩은 각종 회사로부터의 가치 정보를 이용한 서비스를 직접적으로 향유하는 이용자가 가치 정보를 휴대할 수 있게 하는데 이용되는 소형 계산 실체이다. 본 발명 칩은 본 사양서가 주로 취급하는 대상이다. 통상적으로, 본 발명 칩은 IC 카드, 스마트 카드, 또는 휴대형 단말기와 같은 하드웨어 상으로 주로 구현되는 것으로 생각된다. 이들 하드웨어에서 정보 처리 능력과 자원의 큰 차이와, 내탬퍼 기술이 아직도 발전 단계에 있다는 사실을 고려하면, 본 발명 칩의 사양은 다양한 종류의 하드웨어에 대응하는 각종 사용을 제공하면서, 인터페이스만을 표준화하고, 시리즈화를 도모한다.
3.2 데이터 구조 모델
본 발명 칩 박스나 본 발명 칩에 저장될 가치 정보는 다음의 계층적 데이터 구조로서 외부로부터 보여질 것이다.
● 폴더
복수의 파일 집합을 편집하는 구조.
본 발명 칩/16에는 루트 폴더 만이 존재한다.
●파일
가치 정보를 저장하는 자원.
파일에는 레코드가 저장되나, 본 발명 칩/16은 하나의 파일에는 하나의 레코드만이 저장되는 구조를 채용한다.
3.3 본 발명 칩 API
본 발명은 본 발명 칩 내장 서비스 클라이언트로부터 본 발명 칩 API에 의해서 동작된다.
기본적으로, 본 발명 칩 API는 다음의 절차를 이용하는 세션에 기초한 프로토콜이다:
- 본 발명 칩과 본 발명 칩 내장 서비스 클라이언트 간의 상호 인증과 암호 통신 경로 구축,
→ 세션(트랜잭션)의 구축
- 명령 메시지의 전송
- 세션(트랜잭션)의 절단
*세션/트랜잭션 방식은 메시지 교환 횟수가 빈번함, 따라서 "&Go"와 같은 고응답성을 요구하는 애플리케이션에는 부적당하다. 따라서 명령 메시지마다 인증이나 암호가 적용된다. 비세션 프로토콜도 일부의 명령에 관하여 채택된다.
*"세션 ID = 0"으로 발행된 명령은 비세션 모드로 취급될 것이다.
3.4 인증, 액세스 및 암호
본 발명 칩과 본 발명 칩 내장 서비스 클라이언트는 세션 구축 시에 상호 인 증을 수행한다. 이 인증의 구체적인 알고리즘은 칩에 내장된 하드웨어 등에서 특화되어 다양한 형태로 사용된다.
ㆍ인증 모드
인증은 인증 시에 지정되는 (정보) 발행자 모드와 소유자 모드를 포함한다. 인증 알고리즘은 각 모드에 따라서 (일반적으로) 다르다.
(정보) 발행자 모드:
본 발명 칩 내장 서비스 클라이언트를 파일의 발행자로 인증하는 모드. 발행자 모드에 의해 인증된 후, 본 발명 칩 내장 서비스 클라이언트에 의해 작성된 파일은 발행자 권한으로 액세스할 수 있으며, 다른 자원은 다른 권한으로 액세스할 수 있다.
소유자 모드:
본 발명 칩 내장 서비스 클라이언트를 칩의 소유자로 인증하는 모드. 통상적으로 패스워드와 같은 인간에게 친숙한 인증 방법이 사용된다. 소유자 모드에 의해 인증된 본 발명 칩 내장 서비스 클라이언트는 소유자 권한을 보유한다.
ㆍ 상호 인증 후의 본 발명 칩의 상태
인증 후, 본 발명 칩은 다음의 정보를 보유한다.
- 정규로 인증된 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID;
- 본 발명 칩 내장 서비스 클라이언트에 전송될 메시지의 암호 공통키;
- 본 발명 칩 내장 서비스 클라이언트로부터 도착된 메시지의 복호 공통키;
- 세션 ID; 및
- 세션 모드(발행자 모드/소유자 모드).
ㆍ 액세스 제어
칩과 파일(및 레코드)에는 다음의 정보가 첨부된다.
- 발행자를 나타내는 본 발명 칩 ID; 및
- 액세스 제어 리스트(권한에 따라 허용되는 조작).
다음과 같이 정해지는 세션이 소유할 권한에 따라서 액세스가 제한된다.
ㆍ 파일 액세스 모드
본 발명 칩 ID = eid를 가진 SC가 본 발명 칩 내의 파일(F)(파일(F)을 작성했던 본 발명 칩 SC의 본 발명 칩 ID = F.eid)에 액세스할 수 있게 하는 모드는 다음의 3가지 타입을 포함한다.
1. 소유자 액세스:
소유자 인증을 통과한 후의 세션에서의 액세스
* 이 경우에는 eid = 0x00(모두 "0")
2. (정보) 발행자 액세스:
(정보) 발행자 인증을 통과한 후의 세션에서 eid = F.eid인 경우의 액세스.
3. 기타 액세스
(정보) 작성자 인증을 통과한 후의 세션에서 eid ! = F.eid인 경우의 액세스, 또는 비세션 모드에서의 액세스.
ㆍ 루트 폴더로의 액세스 제어 리스트
ACL0 = 0/1 ecre_fil 소유자 액세스 NO/YES
*소유자 액세스에 의한 루트 폴더에서 파일 작성의 허가 여부
ACL1 = 0/1 ecre_fil 기타 액세스 NO/YES
*소유자 액세스가 아닌 다른 액세스에 의한 루트 폴더에서 파일 작성의 허가 여부
ACL2 = 0/1 edel_fil 소유자 액세스 NO/YES
*소유자 액세스에 의한 루트 폴더로부터의 파일 삭제의 허가 여부
ACL3 = 0/1 edel_fil 기타 액세스 NO/YES
*소유자 액세스가 아닌 다른 액세스에 의한 루트 폴더로부터의 파일 삭제의 허가 여부
ACL4 = 0/1 etra_fil 소유자 액세스 NO/YES
*소유자 액세스에 의한 루트 폴더로부터의 파일 양도의 허가 여부
ACL5 = 0/1 etra_fil 기타 액세스 NO/YES
*소유자 액세스가 아닌 다른 액세스에 의한 루트 폴더로부터의 파일 양도의 허가 여부
* 루트 폴더의 (정보) 발행자는 소유자로서 운용한다.
* 즉, 가치 정보를 루트 폴더 내에 정리하고 키 실체를 작성하는 일반적인 가치 정보 서버는 루트 폴더에 따라서 "기타 액세스"에 상당한다.
ㆍ 파일의 액세스 제어 리스트
ACL0 =0/1 eupd_rec 소유자 액세스 No/Yes
ACL1 =0/1 eupd_rec 기타 액세스 No/Yes
ACL2 =0/1 erea_rec 소유자 액세스 No/Yes
ACL3 =0/1 erea_rec 기타 액세스 No/Yes
ACL4 =0/1 eupd_fim 소유자 액세스 No/Yes
ACL5 =0/1 eupd_fim 기타 액세스 No/Yes
ACL6 =0/1 elst_fil 소유자 액세스 No/Yes
ACL7 =0/1 elst_fil 기타 액세스 No/Yes
ACL8 =0/1 edel_fil 소유자 액세스 No/Yes
ACL9 =0/1 edel_fil 기타 액세스 No/Yes
ACLa =0/1 etra_fil 소유자 액세스 No/Yes
ACLb =0/1 etra_fil 기타 액세스 No/Yes
ACLc =0/1 eenc_fil 소유자 액세스 No/Yes
ACLd =0/1 eenc_fil 기타 액세스 No/Yes
ACLe =0/1 edec_fil 소유자 액세스 No/Yes
ACLf =0/1 edec_fil 기타 액세스 No/Yes
ㆍ 키 실체의 액세스 제어 리스트
ACL0 =0/1 eupd_key 소유자 액세스 No/Yes
ACL1 =0/1 eupd_key 기타 액세스 No/Yes
ACL2 =0/1 erea_key 소유자 액세스 No/Yes
ACL3 =0/1 erea_key 기타 액세스 No/Yes
ACL4 =0/1 eupd_kym 소유자 액세스 No/Yes
ACL5 =0/1 eupd_kym 기타 액세스 No/Yes
ACL8 =0/1 edel_key 소유자 액세스 No/Yes
ACL9 =0/1 edel_key 기타 액세스 No/Yes
ACLc =0/1 eenc_fil 소유자 액세스 No/Yes
ACLd =0/1 eenc_fil 기타 액세스 No/Yes
ACLe =0/1 edec_fil 소유자 액세스 No/Yes
ACLf =0/1 edec_fil 기타 액세스 No/Yes
4. 본 발명 칩 API 프로토콜
4.1 패킷 형식
* 패킷 형식의 우단의 마크 "□"는 암호 세션 시에 비암호화 부분이고, 마크 "■"는 암호화 부분이다.
* 2 옥테트 이상의 수치 데이터는 리틀 엔디안(Little Endian) 형식을 이용하여 저장된다.
루팅 헤더
본 발명 칩 세션부(전방)
본 발명 칩 세션부(후방)
MAC, 트레일러
* MAC는 암호화 후에 데이터에 첨부된다.
4.2 명령 식별자(명령 ID) 리스트
본 발명 칩 API의 명령 식별자(명령 ID)는 정의(positive) 1바이트 정수로 표현된다.
명령 식별자는 다음과 같이 본 발명 칩/8, 16 및 32의 시리즈에서 공통으로 정의된다.
*본 발명 칩/16 제1 버전에는 실려있지 않음
4.3 에러 코드 리스트
본 발명 칩에서의 명령의 에러 코드는 부호가 붙은 정수로 표현된다. 조작이 정상적으로 종료되면, 그 조작 결과를 나타내는 E_OK나 양수가 된다. 조작이 정상적으로 종료되지 않거나 에러가 발생하면 음수가 된다.
ㆍ 표기 "E_"는 칩 내의 로컬 명령 처리 시에 발생되는 일반적인 에러를 나타낸다(관련 칩의 에러 코드에 공통임).
ㆍ 표기 "EN_"은 통신에 관련된 일반적인 에러를 나타낸다(세션 에러를 제외한 관련 칩의 에러 코드에 공통임).
ㆍ 표기 "ES_"는 주로 보안에 관련된 일반적인 에러를 나타낸다(본 발명 칩에 전용).
4.4 MAC, 트레일러
1 체크 섬(Check SUM)
2 CRC-CCITT
CRC-CCITT에서의 생성 다항식
G(X) = X^16+X^12+X^5+1
*패킷 크기가 홀수이면, 후의 바이트가 널 패딩(null padding)된 후에 CRC가 수행된다.
5 MD5를 가진 HMAC [RFC 2085]
세션/트랜잭션 암호 통신에서 사용됨.
암호 통신경로의 비밀키 암호의 키의 처음의 64 바이트는 키 K로서 이용된다. 여기서 HMAC는 다음 공식에 의해 계산된다.
MD5 (K xor opad | MD5 (K xor ipad | TEXT))
opad + the byte 0x36 repeated 64 times
ipad + the byte 0x36 repeated 64 times
"|" means simple bit append
e.g. ("0100" | "1001") = ("01001001")
* 세션 구축 후 암호 통신을 수행하는 경우에, 16 바이트 암호 키를 4회 반복해서 얻은 수, 즉 eopn_ses ()의 RSA 인증의 경우에 교환된 난수를 다음과 같이 부가하여 64 바이트 비밀키로 이용한다.
K=Ra | Rb | Ra | Rb | Ra | Rb | Ra | Rb |
4.5 세션 통신 및 비세션 통신
본 발명 칩과의 통신과 관련하여, "상호 인증" 후에 "암호" 통신경로서의 세션/트랜잭션이 구축되며, 그 후에 "암호화된" 메시지 통신이 수행된다. "erea_rec 명령"(즉, 레코드 내용의 독출)과 관련해서는, "인증" 단계를 통과함이 없이 직접 실행되는 비세션 통신이 지원된다. 이 경우에, 세션을 구축하는 대신에 "세션 ID=0"를 가지고 명령을 검색함으로써 기동할 수가 있다. 비세션 통신에 의한 이러한 액세스는 그 파일이 "기타 액세스"를 허용하는 경우에는 성공할 것이다. 이 때, 액세스 패킷은 암호화되지 않는다. 이것은 티켓 게이팅에서와 같이 "터치 & go 애플리케이션"의 필요성이 높은 장소에서 사용된다.
* 서비스 제공자는 이 모드를 이용함에 의해 위험이 더 클 것이다. 다음의 음원 칩이 내장된다.
5. eTP 키 증명서
세션 구축 중의 인증 시의 증명서 이용
1. 개요
본 발명 칩/16에서는 세션 구축 시의 상호 인증은 공개키 베이스와 PKI의 존재를 전제로 한다.
- 본 발명 칩은 본 발명 칩 내장 CH와 본 발명 칩 내장 SC 각각에 할당되며, 인증용의 한 쌍의 공개키와 비밀키는 발행 시에 할당된다.
- 본 발명 칩 내장 CA에 의한 서명이 첨부된 증명서는 본 발명 칩 내장 CH나 본 발명 칩 내장 SC 내부에 항상 저장되므로, 본 발명 칩 내장 CH와 본 발명 칩 내장 SC는 세션/트랜잭션 구축 시에 서로 대해 정규로 발행된 (본 발명 칩 ID 및 공개키) 쌍의 소유를 표시할 수 있다.
* 장래에는 복수의 본 발명 칩 내장 CA이 있을 것으로 상정되지만, 여기서는 본 발명 칩 내장 CA는 하나로 한정된다.
- 증명서에서 본 발명 칩 내장 CA의 서명(S_ca(id, PK_id))은 본 발명 칩 ID, 공개키 쌍, 및 (id, PK_id)가 정규로 발행된 것임을 증명한다.
2. 상세
인증 단계 전의 단계로서, 본 발명 칩 내장 노드(본 발명 칩 내장 SC 및 본 발명 칩 내장 CH를 통합해서 부름)는 자신의 본 발명 칩의 공개키를 본 발명 칩 디바이스 발행자의 서명이 첨부된 증명서로서 서로에게 전송한다. * 주(1) 참조.
본 발명 칩 내장 노드는 증명서 형태로 증명서 발행자의 서명이 첨부된 키의 공개키를 갖고 있다. 이 키를 이용하여 정당성이 확인된다.
그런 다음, 다음이 검증된다. * 주(2) 참조.
"상대방 노드로부터 전송된 공개키의 정당성" = "발행자의 정규의 서명" + "유효 기간 내의 증명서"
정당성이 확인되지 않으면, 세션 구축 없이 통신이 차단된다. * 주(3) 참 조.
* 주(1)
공개키 베이스의 인증에서는, 그 후의 세션에서 고가의 가치의 전송/교환 시에 증명서가 "폐지 및 파기"되는 경우에 대해서도 고려해야 한다. 본 발명 칩/16은 다음의 것들 중 하나를 이용한다.
1. CRL(파기 리스트), (그러나 데이터 크기는 크게 됨); 또는
2. 특정의 증명서의 "폐지 및 파기" 여부를 조회하는 서버 액세스.
* 주(2)
그 외에, 주(1)에서 서술된 증명서의 "폐지 및 파기"에 대한 질의를 확인하는 것도 가능하다.
* 주(3)
증명서의 정당성의 확인을 종료하기 전에, 인증 단계를 시험적으로 개시하고, 상대방에 인증에 필요한 패킷을 전송하거나 상대방으로부터 인증에 필요한 패킷을 기다리는 동안에 다른 태스크에 의해서 정당성을 확인하는 것이 효과적이다. 이를 위해서는 칩 내에 인터럽트와 멀티 태스크 OS를 실현해야 하지만, 이것은 짧은 처리 기간 내에 전체 인증을 구현하는데 효과적인 수단이다.
상기 설명된 것은 본 발명 칩이나 카드와 같은 노드의 통신의 초기 설정에 필요한 시간을 줄이는 방책이다. 서버 장치 상에서 구현된 노드는 항상 제1 장소에서 서명 오프 라인의 확인을 완료한 다음에 "폐지 및 파기"의 확인으로 진행해야 한다. 이것은 부정한 증명서를 가진 장치로부터 무정한 증명서의 전송으로 인한 서버 조회 처리의 낭비인 DoS를 방지하기 위한 것이다.
eTP 키 증명서의 형식 (ver. 0.1)
ㆍ ver: 증명서 형식의 버전 번호로서, ver. 0.1에서는 ver="1"로 설정된다.
ㆍ 증명서 번호: 본 발명 칩 ID에 대한 키의 증명서 시리얼 번호
ㆍ 서명방식: 서명 알고리즘 지정자
0: 증명서의 키 필드 부분까지는 SHA-1 해시 처리되고, 그 결과는 RSA 암호화(구현)된다.
1: 예약
2: 예약
3: 예약
ㆍ 발행자 ID: 증명서 발행자의 ID로서, ver. 0.1에서는 "0"으로 고정된다.
ㆍ 유효 기간 개시, 만료일 종료: 증명서의 유효 기간
ㆍ 부호가 없는 4 옥테트 정수(2000년 1월 1일 0:00AM부터 시작한 초(second)의 적산
ㆍ CAKEY#: CA가 키 서명에 복수의 키를 사용하는 경우에 구별을 위한 키의 ID 번호
ㆍ 키 길이: 부가된 종단을 가진 키의 비트 길이 크기
* 증명서에서 키가 8 옥테트의 정수배가 아니면, 키를 저장하는 키 필드의 종단에 "0"이 부가되고(널 패딩), 따라서 키는 8 옥테트 정수배 데이터로 저장된다. 키 필드 내의 "키 길이"는 유효 키이다.
ㆍ 서명 길이: 종단에 부가될 서명을 위해 사용되는 해시(sha-1 같은 것)의 비트 길이
* 해시는 필요하다면 마지막에 널 패딩을 갖는 8 옥테트 정수배 데이터를 얻은 다음에 그 수를 CA 키를 가지고 암호화하여 서명을 작성한다.
서명 확인 시에, 종단에 부가된 이 8 옥테트 정수배 데이터는 본 발명 칩 내장 노드에 저장된 CA 서버의 공개키로 복호된다. 이 복호값 중에서 선두의 서명 길이 비트는 확인을 위해 이용되는 해시값이 된다.
ㆍ 구체적인 길이의 예(RSA/sha-1 서명이 적용되는 경우):
- RSA
본 발명 칩 인증을 위한 공개키는 RSA에 의해 1024 비트로 설정된다.
1024 비트 = 128 바이트 = 16 × 8 바이트
"sha-1"은 서명을 위한 해시 함수로 사용된다.
- sha-1
sha-1의 출력은 160 비트이다.
160 비트 = 20 바이트
이 바이트 길이는 널 패딩에 의해 8의 정수배가 되고, 24 바이트 데이터는 RSA 암호에 의해 서명된다.
증명서의 총 길이는 다음과 같이 계산된다.
증명서의 길이는
ㆍ 고정 길이부(40 바이트)이고; 그리고
키 부분의 길이는
ㆍ 서명부(128 바이트)이고,
따라서, 총 길이는 이 두 부분의 합(168 바이트)이다.
그러나, 키 부분은 단순히 128 바이트가 아님에 유의해야 한다.
이것은 RSA 키의 경우 공개키로서의 1024 비트의 공통 인용이 1024 비트의 N과 지수 e(e, N)의 쌍을 염두에 두고 있기 때문이다. 그러므로, (e, N) 양쪽을 키 부분에 입력할 필요가 있다.
RSA 경우, e와 N은 후술하는 바와 같이 키 필드에 입력될 것이다.
e에 대한 바이트 길이: (1 바이트)
값 e 자체: 이것은 필요에 따라 바이트 단위까지 확장되어 바이트 열로서 메 워진다. 이어서, 값 N이 바이트 열로서 메워진다.
(e, N)에서 e=3인 경우를 예로 들면, 130 바이트의 바이트 데이터가 후술하는 바와 같이 키 필드에 입력된다.
공개키 = 0x01 | 0x03 | N의 바이트 열(128 바이트)
130은 8의 정수배가 아니므로, 이 값은 136 바이트까지 패딩된다. 따라서, 키 데이터는 136 바이트를 점유한다.
따라서, 총 길이는 다음과 같이 계산될 수 있다:
고정 길이부 (40 바이트)
+ 키 부분이 점유하는 길이 (136 바이트)
+ 서명 부분 (128 바이트)
= 304 바이트
이런 식으로, e = 3일 때, 총 길이는 304 바이트이다.
6. 키 실체
키 실체는 암호 키와 이 암호 키를 이용하여 가치 정보 조작에 필요한 정보를 컴파일하는 시스템 데이터 형식이다. 이 암호 키와 정보는 본 발명 칩에 의해 통상의 파일에 저장된다.
암호 방식 지정자: KEY(1) 및 KEY(2)가 어떤 암호 알고리즘의 키인가를 지정한다. 후술하는 바와 같이, 이와 같은 지정은 "eopn_ses"에서 암호 통신경로의 암호 알고리즘 지정과 동일한 방식으로 수행된다.
7. 본 발명의 표준 콘텐츠 형식
표준 콘텐츠 형식은 본 발명 칩 내부에서 가치 정보 조작을 행하는 표준 콘텐츠 데이터 형식이다. 키 실체를 조작함으로써 암호/복호 조작을 부가하고, 그 경우에 키 실체 내부의 과금 정보를 원자성(atomic)으로 변경할 수 있다.
기본적으로, 여기서는 암호화된 콘텐츠의 복호할 때에 과금하는 판매 모델이 본 발명 칩 내부에서 확실히 수행되는 것을 상정한다.
■ 전체 콘텐츠 형식
(A) 콘텐츠 헤더
(B) 과금 헤더
(C) 암호화 콘텐츠
* 암호화 KEY (1)과 (2)는 콘텐츠를 복호하는데 필요한 키 실체에 저장된 키를 이용하여 암호화된다. 본 발명 칩/16에서는 파일 용량 문제로 공통키 암호만이 키 실체의 암호로 고려되고, 여기서는 공개키 암호는 고려하지 않을 것이다. (그 암호키의 데이터 길이가 암호화 후에 길어질 것이기 때문이다.)
(D) 서명 트레일러
* 서명 방식은 e세 패킷의 서명 트레일러와 동일한 방식으로 설정될 것이다.
K는 MD5를 가진 HMAC [RFC 2085]의 경우에 64 바이트 비밀키로서, 콘텐츠에 포함된 암호화 키(1)와 암호화 키(2)를 키 실체의 키로 복호함으로써 얻어진 K1과 K2를 이용하여 다음의 방법에 의해 생성된다.
K = K1 | K2 | K1 | K2 | K1 | K2 | K1 | K2
■ 과금 헤더
■ 암호화 콘텐츠
■ 서명 트레일러
본 발명 칩의 패킷과 동일한 사양
8. 키 실체에 의한 본 발명의 표준 콘텐트 조작 시의 결산 처리
키 실체를 이용한 계산 방법은 다음의 방법이 채용된다.
(1) 본 발명 암호화 콘텐츠의 과금 헤더의 과금액(본 발명 칩/16에서는 고정액만) 산출.
(2) 키 실체의 MONEY 필드로부터 결제액 감산 처리
9. 본 발명 칩 API의 사양(데이터형 정의)
B 부호가 있는 1 바이트 정수
UB 부호가 없는 1 바이트 정수
H 부호가 있는 2 바이트 정수
UH 부호가 없는 2 바이트 정수
본 발명 칩 ID 16 바이트 정수
SID 부호가 없는 1 바이트 정수(세션 Id)
FID 부호가 없는 2 바이트 전수(파일/폴더 Id)
RID 부호가 없는 2 바이트 정수(레코드 Id)
CACL 부호가 없는 2 바이트 정수(칩 액세스 제어 리스트)
FACL 부호가 없는 2 바이트 정수(파일 액세스 제어 리스트)
KEYACL 부호가 없는 2 바이트 정수(키 오브젝트 액세스 제어 리스트)
TIME 부호가 없는 4 바이트 정수(2000년 1월 1일 0:00AM부터 시작하여 초의 적산)
ERR 부호가 있는 2 바이트 정수
ㆍ C 언어 표현에 의한 정의예
10. 본 발명 칩 API의 사양(명령 정의)
10.1 세션 관리 명령 그룹
세션 구축
Open/Confirm Session
[기능 개요]
본 발명 칩에 대해서 안전한 세션 통신경로가 구축된다. "eopn_ses"는 1 경로로 만족되는 인증을 사용하는 경우에 이용되고, "eopn_ses"와 "ecnf_ses"는 2 경 로를 필요로 하는 인증을 사용하는 경우에 그 순서대로 이용된다.
이러한 세션 구축에 의해서, 호출자인 본 발명 칩 내장 서비스 클라이언트측과 피호출자인 본 발명 칩측 간에는 세션 중에만 유효한 임시 공통 암호키를 공유한다.
인증 방식과 암호 종류는 패킷 내의 파라미터에 따라서 선택될 수 있다. 본 발명 칩 측에서 이용할 수 없는 인증/암호가 지정된 경우에는 에러가 발생된다.
[함수 표현]
ERR eopn_ses (ETRONID destId, ETRONID srcId, TIME t,
UB authMode, UB authAlgorithm,
UB sessionAlgorithm, UH len,
UB*authData, UH*rlen,
UB**rAuthData);
destId 명령의 발행 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩
(소스 본 발명 칩 ID)
t 시각
authMode 인증 모드 지정
authAlgorithm 인증에 사용된 알고리즘의 지정자
sessionAlgorithm 인증 후의 세션에서의 암호 알고리즘의 지정자
len 아웃바운드 패킷 길이(옥테트수)
authData 증명용으로 본 발명 칩 내장 서비스 클라이언트로부터 본 발명 칩으로 전달될 데이터(len-16)
rlen 복귀 패킷 길이(옥테트수)
rAuthData 인증용으로 본 발명 칩으로부터 본 발명 칩 내장 서비스 클라이언트로 복귀되는 데이터(rlen-8)
[파라미터값]
□ authMode
0x01 ISSUER 발행자 모드
0x02 OWNER 소유자 모드
□ authAlgorithm
0x01 예약
0x02 RSA(증명서를 사용하는 오프 라인 인증)
0x03 RSA(CRL을 확인하는 온 라인 인증)
0x04 예약
□ sessionAlgorithm
0x01 DES
0x02 3DES
0x03 예약
0x04 예약
0x05 예약
[복귀값]
1 경로 인증에서는
> 0 세션 ID(정상 종료 시)
< 0 에러 코드
2 경로 인증에서는
<= 0 에러 코드
[아웃바운드 패킷 형식]
[복귀 패킷 형식]
[함수 표현]
ERR ecnf_ses (ETRONID destId, ETRONID srcId, TIME t,
UB len, UB*authData, UH*rlen,
UB**rAuthData);
destId 명령의 발행 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩
(소스 본 발명 칩 ID)
t 시각
len 아웃바운드 패킷 길이(옥테트수)
authData 증명용으로 본 발명 칩 내장 서비스 클라이언트로부터 본 발명 칩으로 전달될 데이터(len-12)
rlen 복귀 패킷 길이(옥테트수)
rAuthData 인증용으로 본 발명 칩으로부터 본 발명 칩 내장 서비스 클라이언트로 복귀되는 데이터(rlen-8)
[복귀값]
> 0 세션 ID(정상 종료 시)
< 0 에러 코드
[아웃바운드 패킷 형식]
[복귀 패킷 형식]
[기능 상세]
"open/confirm session" 명령은 본 발명 칩 내장 서비스 클라이언트와 본 발명 칩 간의 상호 통신 후에 세션을 안전한 암호 통신경로로 구축한다. 구체적인 동작은 인증과 암호 방식에 의존하며, 이 방식은 통상적으로 본 발명 N 칩 하드웨어의 암호 지원 기능에 의존한다(구현 의존성). 세션 구축 프로토콜은 발행자 모드에서의 인증과 소유자 모드에서의 인증을 포함하며, 이들은 "open session" 명령의 automode 파라미터에 의해 구별된다.
■ 공개키 암호에 의한 발행자 모드(authmode=ISSUER) 인증
(1) eopn_ses (A → B)
<<파라미터예>>
ㆍ authMode 0x02 (ISSUER)
ㆍ authAlgorithm 0x03 (RSA: CRL을 확인하는 온 라인 인증)
ㆍ sessionAlgorithm 0x02 (3DES)
ㆍ authData A의 eTP 공개키 증명서
ㆍ MAC 트레일러 체크 섬
<<B의 동작>>
ㆍ A의 eTP 증명서의 정당성 확인
- eTP 증명서의 기한 확인
- CA국의 공개키에서 eTP 증명서의 서명 확인 → (2)로
- CRL 리스트 확인
ㆍ A의 공개키 검색
(2) ecfm_cer (B → CRL Rep. Server)
<<파라미터예>>
ㆍ checkMode 0x00
ㆍ certificateId ***********
ㆍ MAC 트레일러 체크 섬
(3) ecfm_cer (B ← CRL Rep. Server)
<<파라미터예>>
ㆍ Error Code E_OK or not
ㆍ MAC 트레일러 체크 섬
(4) eopn_ses (A ← B)
<<파라미터예>>
ㆍ Error Code E_OK or not
ㆍ authMode 0x02 (ISSUER)
ㆍ authAlgorithm 0x03 (RSA: CRL을 확인하는 온 라인 인증)
ㆍ sessionAlgorithm 0x02 (3DES)
ㆍ authData 1. B의 eTP 공개키 증명서
2. 64 비트 난수 Rb를 A의 공개키로 RSA 암호화하여 얻은 값
ㆍ MAC 트레일러 체크 섬
<<A측의 동작>>
ㆍ B의 eTP 증명서의 정당성 확인
- eTP 증명서의 기한 확인
- CRL 리스트 확인 → (5)로
- CA국의 공개키에서 eTP 증명서의 서명 확인
ㆍ 증명서 중에서 B의 공개키 검색
ㆍ A의 비밀키로 복호화한 후에 authData2.에서 수신된 난수 Rb를 검색
ㆍ 검색된 난수 Rb를 세션 암호의 3DES의 비밀키의 일부로 할당
ㆍ 검색된 난수 Rb에 대해 A의 비밀키를 이용하여 디지털 서명을 작성
(5) ecfm_cer (A → CRL Rep. Server)
<<파라미터예>>
ㆍ checkMode 0x00
ㆍ certificateId ***********
ㆍ MAC 트레일러 체크 섬
(6) ecfm_cer (A ← CRL Rep. Server)
<<파라미터예>>
ㆍ Error Code E_OK or not
ㆍ MAC 트레일러 체크 섬
(7) ecfm_ses (A → B)
<<파라미터예>>
ㆍ authData 1. 64 비트 난수 Ra를 A의 공개키로 RSA 암호화하여 얻은 값
2. B로부터 수신된 난수의 A의 비밀키에 의한 디지털 서명을 B의 공개키에서 RSA 암호화 하여 얻은 값
을 첨부하여 전송
ㆍ MAC 트레일러 체크 섬
<<B측의 동작>>
ㆍ A의 공개키로 authData에서 수신된 데이터를 복호하여 얻은 Ra와 디지털 서명을 검색
ㆍ 검색된 Ra를 세션 암호의 3DES의 비밀키의 일부로 할당
ㆍ 검색된 Ra에 대해 B의 비밀키를 이용하여 디지털 서명을 작성
ㆍ 검색된 서명을 A의 공개키로 확인
(8) ecfm_ses (Caller ← Callee)
<<파라미터예>>
ㆍ Error Code E_OK or not
ㆍ authData B의 비밀키에 따라 A로부터 수신된 난수 Ra의 디비털 서명
ㆍ MAC 트레일러 체크 섬
<<A측의 동작>>
ㆍ 수신된 서명을 B의 공개키를 이용하여 확인
■ (보충) 인증 알고리즘의 상세
■ 알고리즘 상세
ㆍ 암호 및 인증 키
비밀키 sk = d
공개키 pk = (e, n)
ㆍ 평문 m에 대한 암호 알고리즘
E_pk(m) = m^e mod n
ㆍ 암호문 c에 대한 복호 알고리즘
D_sk(c) = c^d mod n
ㆍ 메시지 M에 대한 서명 생성 알고리즘
f_sk(M) = (h(M))^d mod n
* 여기서 h(M)은 MD5나 SHA-1과 같은 해시 함수이다.
ㆍ 메시지 M에 대한 서명 s의 검증 알고리즘
g_pk(M, s) = if(h(M)==s^e mod n) then 1 else 0 endif
■ 각 노드가 소유하는 정보 리스트
ㆍ CA국(C)
CA의 공개키 pk_c (130B)
CA의 비밀키 sk_c (128B)
ㆍ Caller(A) 측
A의 공개키 pk_a (130B)
A의 비밀키 sk_a (128B)
A의 증명서 cer_a (304B)
A의 증명서에 있어서의 CA국의 서명 s_(a, c) (128B)
CA의 공개키 pk_c (130B)
상호 인증 중에 발생된 난수 Ra (8B)
ㆍ Callee(B)측
B의 공개키 pk_b (130B)
B의 비밀키 sk_b (128B)
B의 증명서 cer_b (304B)
B의 증명서에 있어서의 CA국의 서명 s_(b, c) (128B)
CA의 공개키 pk_c (130B)
상호 인증 중에 발생된 난수 Rb (8B)
■ eTP에 의한 RSA 베이스의 인증 알고리즘 상세
eopn_ses: (A) → (B)
[송신정보] (cer_a) *총 304 바이트
A의 증명서 cer_a:
PK_a 및 s_(a, c) 포함
[B의 동작]
증명서의 기한 확인
증명서의 서명 확인 g_(pk_c)(cer_a, s_(a, c))
증명서의 CRL 확인
eopn_ses: (A) ← (B)
[송신정보] (cer_b | rb) * 총 432 바이트
B의 증명서 cer_b:
pk_b 및 s_(b, c) 포함
B에 의해 생성된 난수 (Rb) Rb=E_(pk_a)(Rb)
[A의 동작]
증명서의 기한 확인
증명서의 서명 확인 g_(pk_c)(cer_b, s_(b, c))
증명서의 CRL 확인
메시지(rb)의 복호 Rb'=D_(sk_a)(rb)
수신된 난수(Rb')의 서명 작성 srb=f_(sk_a)(Rb')
ecfm_ses: (A) → (B)
[송신정보] (x_a1 | x_a2) * 총 256 바이트
A에 의해 발생된 난수(Ra) 및 서명(srb)
x_a1=E_(pk_b)(Ra)
x_a2=E_(pk_b)(srb)
[B의 동작]
메시지(x_a)의 복호 Ra'=D_(sk_b)(x_a1)
srb'=D_(sk_b)(x_a2)
수신된 서명(srb)의 검증 g_(pk_a)(Rb', srb')
수신된 난수(Ra')의 서명 작성 sra=f_(sk_b)(Ra')
[송신정보] (x_b) * 총 128 바이트
B에 의해 발생된 서명(sra) x_b=E_(pk_a)(srb)
[A의 동작]
메시지(x_b)의 복호 sra'=D_(sk_a)(x_b)
수신된 서명(sra)의 검증 g_(pk_a)(Ra, sra')
* 이런 식으로, 한 쌍의 (Ra, Rb)가 A와 B 모두에 남겨지고, 이로부터 특정 알고리즘에 의해서 세션 공통키가 생성된다.
■ 세션 구축 후의 암호 통신 파라미터의 설정
예) 3DES 경우
Ra-Rb-Ra를 이용한 E-D-E 방식의 3DES 암호화가 수행된다. 이 경우에 "eopn_ses ()"의 아웃바운드 패킷의 sid난에 저장된 값을 세션 ID로 이용한다. 즉, 맨 처음 호출된 호출자가 지정한 세션 id를 그대로 이용한다.
예) DES 경우
Rb를 키로 이용하여 DES 암호화가 수행된다. 이 경우, Ra는 세션 ID로 이용된다.
■ 비밀키 암호에 따른 소유자 모드(authmode=OWNER) 인증
"eopn_ses"와 "ecfm_ses"를 이용한 2 경로 모드 소유자 인증에 따라 세션을 구축하는 동작의 일례에 대해서 이하에서 설명한다. 이 모드는 기본적으로 다음의 방법을 적용한다. 특히, 본 발명 칩은 소유자에 의존하여 패스워드를 보유하며, 이 패스워드를 이용하여 인증이 수행된다. 인증이 개시되면, 본 발명 칩은 난수를 발생시켜 이것을 R/W로 전송한다. 그 후, R/W측은 이 난수를 사용하여 패스워드를 암호화한 다음에 이것을 본 발명 칩에 전송한다.
(1) eopn_ses (A → B)
난수 Ra가 생성되고, 그 다음에,
ㆍ ID_A; 및
ㆍ Ra가 B로 전송된다.
(2) eopn_ses (A ← B)
난수 Rb가 생성되고, 그 다음에,
ㆍ X1=E1_Key(ID_A | Ra); 및
ㆍ X2=E2_P(Pb)가 계산되고 A로 복귀된다.
(3) ecfm_ses (A → B)
a. D1_Key(X1)에 의해 복호화가 수행되고, Ra가 확인된다.
(정당한 본 발명 칩인 것을 인증한다.)
b. R_B=D2_P(X2)가 계산되고, X2가 복호되어 Rb를 검색한다.
c. R_B를 부분 비트 반전을 이용하여 변형하여 R'b가 생성되고, 그 다음에,
ㆍ Y=E3_P(R'b)가 생성되어 B로 전송된다.
(4) ecfm_ses (A ← B)
D3_p(Y)에 의해 복호화가 수행되고, R'b가 확인된다.
(정당한 소유자가 본 발명 칩 내장 서비스 클라이언트를 통해 조작하고 있음을 확인하는 것을 인증한다.)
세션 ID(sid)는 Ra로부터 생성되고 A로 복귀된다.
* 여기서, "|"는 비트열을 첨부하고 결합하는 것을 의미한다. 예컨대, A="010010011"이고, B="00100101"이면, (A | B)="01001001100100101"이다.
ID_A 및 ID_B는 각각 본 발명 칩 내장 서비스 클라이언트(A) 및 본 발명 칩(B)의 본 발명 칩 ID(128 비트)를 나타낸다.
*E2를 DES의 동작이고, E3은 인수를 비트 반전시켜 DES 처리하는 동작이다.
세션의 종료
Close Session
[기능 개요]
세션이 종료된다.
[함수 표현]
ERR ecls_ses (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, UH*rlen);
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트 의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[아웃바운드 패킷 형식]
[복귀 패킷 형식]
[액세스 제어]
이 명령은 세션을 구축한 본 발명 칩 내장 서비스 클라이언트에 의해 항상 사용될 수 있다.
[기능 상세]
구축된 세션이 종료된다.
10.2 트랜잭션 관리 명령 그룹
트랜잭션 세션의 구축
Open/Confirm Transaction
[기능 개요]
본 발명 칩에 대해서 트랜잭션 세션이 구축된다. "eopn_tra"는 1 경로가 만족되는 인증을 이용하는 경우에 사용되고, "eopn_tra"와 "ecnf_tra"는 2 경로를 필요로 하는 인증을 이용하는 경우에 그 순서대로 사용된다.
* 기본 동작은 "eopn_ses"와 "ecfm_ses"와 같다. 다만, 차이는 후속 처리에 있어서의 롤백 기능이다.
[함수 표현]
ERR eopn_tra (ETRONID destId, ETRONID srcId, TIME t,
UB authMode, UB authAlgorithm,
UB sessionAlgorithm, UH len,
UB*authData, UH*rlen,
UB**rAuthData);
destId 명령의 발행 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩
(소스 본 발명 칩 ID)
t 시각
authMode 인증 모드 지정
authAlgorithm 인증에 사용된 알고리즘의 지정자
sessionAlgorithm 인증 후의 세션에서의 암호 알고리즘의 지정자
len 아웃바운드 패킷 길이(옥테트수)
authData 증명용으로 본 발명 칩 내장 서비스 클라이언트로부터 본 발명 칩으로 전달될 데이터(len-16)
rlen 복귀 패킷 길이(옥테트수)
rAuthData 인증용으로 본 발명 칩으로부터 본 발명 칩 내장 서비스 클라이언트로 복귀되는 데이터(rlen-8)
[파라미터값]
"eopn_ses" 참조
[복귀값]
1 경로 인증에서는
> 0 세션 ID(정상 종료 시)
< 0 에러 코드
2 경로 인증에서는
<= 0 에러 코드
[아웃바운드 패킷 형식]
[복귀 패킷 형식]
[함수 표현]
ERR ecnf_tra (ETRONID destId, ETRONID srcId, TIME t,
UB len, UB*authData, UH*rlen,
UB**rAuthData);
destId 명령의 발행 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩
(소스 본 발명 칩 ID)
t 시각
len 아웃바운드 패킷 길이(옥테트수)
authData 증명용으로 본 발명 칩 내장 서비스 클라이언트로부터 본 발명 칩으로 전달될 데이터(len-12)
rlen 복귀 패킷 길이(옥테트수)
rAuthData 인증용으로 본 발명 칩으로부터 본 발명 칩 내장 서비스 클라이언트로 복귀되는 데이터(rlen-8)
[복귀값]
> 0 세션 ID(정상 종료 시)
< 0 에러 코드
[아웃바운드 패킷 형식]
[복귀 패킷 형식]
[기능 상세]
인증과 암호에 대해서는 "eopn_ses"와 "ecfm_ses"와 동일하다.
다만, 트랜잭션이 구축된 후에는 다음의 본 발명 칩 API만이 발행될 수 있다. 다른 API가 발행되면 에러가 발생할 것이다.
ㆍ 파일 생성 ecre_fil
ㆍ 파일 삭제 edel_fil
ㆍ 레코드 생성 ecre_rec
ㆍ 레코드 삭제 edel_rec
ㆍ 레코드 갱신 eupd_rec
여기서 발행된 명령열은 "econ_tra"가 발행될 때에 반영되고, "eabo_tra"가 발행될 때에 또는 "ecom_tra" 발생없이 일정 시간 경과 후 타임아웃된 경우에는 완전히 롤백되는 것을 보증해야 한다.
트랜잭션의 종료
Commit/Abort Transaction
[기능 개요]
트랜잭션이 종료된다. "ecom_tra"는 커미팅(committing)해서 종료하는데 사용되고, "eabo_tra"는 어보팅(aborting)해서 종료하는데 사용된다.
[함수 표현]
ERR ecom_tra (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, UH*rlen);
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[아웃바운드 패킷 형식]
[복귀 패킷 형식]
[함수 표현]
ERR eabo_tra (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, UH*rlen);
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[아웃바운드 패킷 형식]
[복귀 패킷 형식]
[액세스 제어]
이 명령은 세션을 구축한 본 발명 칩 내장 서비스 클라이언트에 의해 항상 사용될 수 있다.
[기능 상세]
ㆍ 구축된 트랜잭션은 커미트 또는 어보트된다.
ㆍ 트랜잭션이 커미트되는 경우에는 "ecfm_tra"와 "ecom_tra" 사이에 발행된 모든 명령들은 본 발명 칩의 불휘발성 메모리에 반영된다.
ㆍ 트랜잭션이 어보트되거나 일정 기간 기다린 후에도 커미트가 도착하지 않으면, "ecfm_tra"와 "ecom_tra" 사이에 발행된 모든 명령들은 본 발명 칩의 불휘발성 메모리에 반영된다.
10.3 파일 관리 명령 그룹
[구현 제한 사항]
본 시스템에서의 파일은 다음의 제한을 갖는다.
ㆍ 사용 가능한 파일 수의 상한 50
ㆍ 파일 ID 0 내지 49
ㆍ 파일 크기의 상한 256(옥테트)
파일의 작성
Create File
[기능 개요]
(공)파일이 작성된다.
[함수 표현]
ERR ecre_fil (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, FID fid, UH blk, UH cnt, FACL facl, UH*rlen);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트 의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
fid 작성될 파일 ID
facl 파일 액세스 제어 리스트의 초기값
blk 파일의 개시 어드레스(여기서는 "1"로 고정됨)
cnt 파일 길이(옥테트수)
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
> 0 작성된 파일 ID(정상 종료 시)
< 0 에러 코드
[아웃바운드 패킷 형식]
[복귀 패킷 형식]
[액세스 제어]
ㆍ 발행자 모드(패런트(parent) 폴더의 ISSUER의 본 발명 칩 ID는 세션을 구축한 SC의 본 발명 칩 ID임)에서 항상 사용 가능하다.
ㆍ 패런트 폴더의 액세스 제어 리스트에서 허가되면 소유자 모드와 기타 모드에서 사용 가능하다.
[동작의 상세]
fid에 의해 지정된 파일 ID를 가진 파일이 작성된다. 지정된 fid가 이미 사용 중이면 에러가 발생된다.
파일의 삭제
Delete File
[기능 개요]
파일이 삭제된다.
[함수 표현]
ERR edel_fil (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, FID fid, UH*rlen);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
fid 작성될 파일 ID
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[아웃바운드 패킷 형식]
[복귀 패킷 형식]
[액세스 제어]
ㆍ "edel_fil"을 실행하기 위해서는 다음의 조건이 만족되어야 한다. 여기서는 두 종류의 액세스 제어 리스트가 포함되어 있으므로 주의를 요한다.
(케이스 1) 소유자 인증 액세스의 경우
1. 루트 폴더가 "소유자 액세스"로서 명령 "edel_fil"이 가능하도록 허가되어야 한다. 즉 "루트 폴더의 ACL2 == 1"이 충족되어야 한다.
2. 대상 파일이 "소유자 액세스"로서 명령 "edel_fil"이 가능하도록 허가되어야 한다. 즉 "대상 파일의 ACL8 == 1"이 충족되어야 한다.
(케이스 2) 발행자 인증 액세스의 경우
1. 루트 폴더가 "기타 액세스"로서 명령 "edel_fil"이 가능하도록 허가되어야 한다. 즉 "루트 폴더의 ACL3 == 1"이 충족되어야 한다.
2. 대상 파일 측의 ACL에는 무관하다.(항상 OK)
(케이스 3) 기타 액세스의 경우
1. 루트 폴더가 "기타 액세스"로서 명령 "edel_fil"이 가능하도록 허가되어야 한다. 즉 "루트 폴더의 ACL3 == 1"이 충족되어야 한다.
2. 대상 파일이 "기타 액세스"로서 명령 "edel_fil"이 가능하도록 허가되어야 한다. 즉 "대상 파일의 ACL9 == 1"이 충족되어야 한다.
[동작의 상세]
fid에 의해 지정된 파일 ID를 가진 파일은 삭제된다. 파일의 물리적 위치를 지정하는 제어 블록은 클리어되며, 불휘발성 메모리는 해제되고, 그 외에도 메모리 내의 모든 데이터는 "0"이나 "1"로 세트된다.
파일 양도 요구
Request for transferring a file
[기능 개요]
파일의 내용은 다른 본 발명 칩 내장 콘텐츠 홀더에 양도된다.
[함수 표현]
ERR atra_fil (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, FID fid, ETRONID targetID,
Fid targetFid, UH*rlen);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
fid 작성될 파일 ID
targetId 파일의 양도 목적지의 본 발명 칩 ID
targetFid 양도 목적지에 양도될 파일의 파일 ID
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
> 0 실제로 갱신된 데이터 길이(정상 종료 시)
< 0 에러 코드
[아웃바운드 패킷 형식]
[복귀 패킷 형식]
[동작 상세]
이 시스템 호출이 발생된 칩은 이하의 일련의 처리를 수행한다.
다음의 본 발명 칩 API열이 양도 목적지 칩에 발행된다.
ㆍ 트랜잭션 세션 구축 eopn_tra
ecfm_tra
ㆍ 파일 작성 ecre_fil
ㆍ 레코드 작성 ecre_rec
: :
ㆍ 트랜잭션 커미트 ecom_tra
도중에 비정상이 검출되면 트랜잭션이 어보트된다. 한편, 커미트 명령이 정상적으로 도달하지 않으면 세션 중의 명령이 반영되지 않는다.
파일 데이터의 암호와 및 복호화
Encrypting/Decrypting File
[기능 개요]
암호화된 콘텐츠를 저장하는 파일이 복호된다.
[함수 표현]
ERR eenc_fil (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UB len, FID srcFid, FID destFid, FID Keyed,
UB*rlen, UW*currentMoney, UW*payedMoney);
ERR ednc_fil (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UB len, FID srcFid, FID destFid, FID Keyed,
UB*rlen, UW*currentMoney, UW*payedMoney);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
srcFid 암호화된 콘텐츠가 저장되는 파일 ID
destFid 복호화된 콘텐츠를 저장하는 파일 ID
KeyId 복호화 처리에 사용될 키 실체를 저장하는 파일 ID
currentMoney 키 실체에 남아 있는 금액 잔고
payedMoney 금회 결제된 금액
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[패킷 형식]
[복귀 패킷 형식]
[기능 상세]
■ edec_fil ()의 동작
■ eenc_fil ()의 동작
* 콘텐츠의 암호화는 "원 KEY"를 가지고 실행된다.
* KEY의 암호화는 키 실체의 지정된 키를 가지고 실행된다.
* 서명은 암호화가 종료된 후에 데이터에 관하여 작용한다.
* 원 KEY를 4회 반복함으로써 얻어진 값은 MD5를 가진 HMAC에서 64 비트 비밀키 K로 사용된다.
파일의 액세스 제어 리스트 변경
Update File Mode
[기능 개요]
파일의 액세스 제어 리스트가 변경된다.
[함수 표현]
ERR eupd_fim (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, FIDfid, FILACLfilacl, UH*rlen);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
fid 액세스 제어 리스트에서 변경 대상의 파일 ID
filacl 파일 액세스 제어 리스트의 갱신 데이터
callerId 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[아웃바운드 패킷 형식]
[복귀 패킷 형식]
[액세스 제어]
ㆍ 대상 파일에 대해서 발행자 모드(패런트 폴더의 ISSUER의 본 발명 칩 ID는 세션을 구축한 SC의 본 발명 칩 ID임)에서 항상 사용 가능하다.
ㆍ 대상 파일의 액세스 제어 리스트에서 허가되면 소유자 모드와 기타 모드에서 사용 가능하다.
[기능 개요]
파일의 액세스 제어 리스트가 지정된 값으로 변경된다.
정의된 파일의 리스트의 획득
List File_ID
[기능 개요]
정의된 파일의 리스트가 획득된다.
[함수 표현]
ERR elst_fid (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, FIDfid, UH*rlen, UB**fileCtrlBlk);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
fid 대상 파일 ID
fileCtrlBlk 대상 파일의 제어 블록
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[아웃바운드 패킷 형식]
[복귀 패킷 형식]
[액세스 제어]
ㆍ 대상 파일에 대해서 발행자 모드(패런트 폴더의 ISSUER의 본 발명 칩 ID는 세션을 구축한 SC의 본 발명 칩 ID임)에서 항상 사용 가능하다.
ㆍ 대상 파일의 액세스 제어 리스트에서 허가되면 소유자 모드와 기타 모드에서 사용 가능하다.
10.4 레코드 관리 명령 그룹
레코드 데이터 갱신
Update Record
[기능 개요]
레코드의 콘텐츠가 변경된다.
[함수 표현]
ERR eupd_rec (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, FID fid, UH blk, UH cnt, UB*data, UH*rlen);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
fid 변경될 파일 ID
blk 변경될 레코드 번호(여기서는 1로 고정)
cnt 변경될 레코드 데이터 길이(옥테트수)
data 변경될 데이터의 내용(cnt 옥테트)
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
> 0 tlfwpfh 갱신된 데이터 길이(정상 종료 시)
< 0 에러 코드
[패킷 형식]
[복귀 패킷 형식]
[액세스 제어]
ㆍ 대상 파일에 대해서 발행자 모드(패런트 폴더의 ISSUER의 본 발명 칩 ID는 세션을 구축한 SC의 본 발명 칩 ID임)에서 항상 사용 가능하다.
ㆍ 대상 파일의 액세스 제어 리스트에서 허가되면 소유자 모드와 기타 모드에서 사용 가능하다.
[동작 상세]
blk 레코드에서 시작부터 cnt 옥테트의 데이터 기록 요구가 발행된다. 하드웨어 조건에 따라서 cnt에 상한이 정해진다. 실제로 기록된 옥테트수는 rCnt로 복귀된다.
레코드로부터 데이터 독출
Read Record
[기능 개요]
레코드의 콘텐츠가 독출된다.
[함수 표현]
ERR erea_rec (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, FID fid, UH blk, UH cnt, UH*rlen, UB*rData);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
fid 독출될 파일 ID
blk 독출될 레코드 번호
cnt 독출될 데이터 길이(옥테트수)
rCnt 실제로 독출된 데이터의 길이(옥테트수)
rData 독출된 데이터(rCnt 옥테트)
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[패킷 형식]
[복귀 패킷 형식]
[액세스 제어]
ㆍ 대상 파일에 대해서 발행자 모드(패런트 폴더의 ISSUER의 본 발명 칩 ID는 세션을 구축한 SC의 본 발명 칩 ID임)에서 항상 사용 가능하다.
ㆍ 대상 파일의 액세스 제어 리스트에서 허가되면 소유자 모드와 기타 모드에서 사용 가능하다.
[동작 상세]
blk 레코드에서 시작부터 cnt 옥테트의 데이터 기록 요구가 발행된다. 하드웨어 조건에 따라서 cnt에 상한이 정해진다. 실제로 기록된 옥테트수는 rCnt로 복귀된다.
통상적으로는 세션이 구축될 때에 명령 발행되어 실행된다. 그러나, "터치 &go" 애플리케이션의 특화에 의해서 세션을 구축하지 않은 본 발명 칩 내장 서비스 클라이언트에 의해서 sid=0에서 명령을 호출하는 것도 가능하다. 이 경우, 레코드의 액세스 제어 리스트에서는 다른 권한에 의한 독출이 허가되면 명령의 실행은 성공한다.
10.5 키 실체 관리 명령 그룹
[구현 제한 사항]
이 시스템에서 키 실체는 다음의 제한을 갖는다.
ㆍ 사용가능한 파일 수위 상한 10
ㆍ 키 실체 ID 0 내지 9
ㆍ 키 실체 크기의 상한 256(옥테트)
키 실체의 작성
Create Key Object
[기능 개요]
[함수 표현]
ERR ecre_key (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, UH kid, UH keyAlgorithm, UB*Key,
UH bankId, KEYACL, acl, UL initMoney Val, UH*rlen);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
kid 키 실체 ID
KeyAlgorithm 암호 알고리즘 지정자
Key 암호키
bankID 은행 ID
initMoney Val 초기 금액
acl 초기 액세스 제어 리스트 값(최초 버전에서는 미사용)
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[패킷 형식]
[복귀 패킷 형식]
키 실체의 삭제
Delete Key Object
[기능 개요]
[함수 표현]
ERR edel_key (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UB len, UH kid, UH*bankId, UL*remainingMoney,
UH*rsize, UB*bookList, UH*rlen);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
kid 삭제될 키 실체 ID
bankID 은행 ID
remainingMoney 잔금
rsize 분배(Distribution) 리스트의 크기
bookList 분배 리스트
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[패킷 형식]
[복귀 패킷 형식]
키 실체의 갱신
Update Key Object
[기능 개요]
지정된 키 실체의 금액이 갱신된다.
[함수 표현]
ERR eupd_key (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, UH kid, UL addMoney,
UH*rlen, UL*currentMoney);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
kid 갱신될 키 실체 ID
addMoney 가산될 금액
currentMoney 가산 후 금액
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[패킷 형식]
[복귀 패킷 형식]
키 실체의 정보 독출
Read Key Object
[기능 개요]
지정된 키 실체로부터 금액 정보가 독출된다.
[함수 표현]
ERR erea_key (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, UH kid, UH*rlen, UL*currentMoney);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
kid 금액 정보 독출 대상인 키 실체 ID
currentMoney 현재금액
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[패킷 형식]
[복귀 패킷 형식]
키 실체의 액세스 제어 리스트의 갱신
Update Key Mode
[기능 개요]
키 실체의 액세스 제어 리스트가 갱신된다.
* 최초 버전에는 실려있지 않음
[함수 표현]
ERR eupd_key (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, UH kid, KEYACL keyacl, UH*rlen);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
kid 액세스 제어 리스트 갱신 대상인 키 실체 ID
keyacl 갱신될 키 실체 액세스 제어 리스트
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[패킷 형식]
[복귀 패킷 형식]
정의된 키 실체의 리스트의 획득
List Key Object ID
[기능 개요]
정의된 키 실체의 리스트가 획득된다.
[함수 표현]
ERR elst_key (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, KID kid, UH*rlen, UB*keyCtrlBlk);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
kid 대상 키 실체 ID
keyCtrlBlk 대상 키 실체의 제어 블록
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[아웃바운드 패킷 형식]
[복귀 패킷 형식]
[액세스 제어]
ㆍ 대상 키 실체에 대해서 발행자 모드(패런트 폴더의 ISSUER의 본 발명 칩 ID는 세션을 구축한 SC의 본 발명 칩 ID임)에서 항상 사용 가능하다.
ㆍ 대상 키 실체의 액세스 제어 리스트에서 허가되면 소유자 모드와 기타 모드에서 사용 가능하다.
10.6 인증 보조 관리 명령 그룹
eTP 증명서 체크
[함수 표현]
ERR ecfm_cer (SID sid, ETRONID destId, ETRONID srcID, TIME t,
UH len, UB checkMode, UH serial,
UHcaId, UB*rlen, UB*crl);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
checkMode 파기될 리스트의 체크 모드
serial 확인될 증명서의 증명서 번호
caId 확인될 증명서의 발행자 ID
crl 파기 리스트(본 발명 칩 형식)
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[checkMode]
0x00 체크만을 복귀
0x01 대응하는 파기 리스트 획득
[복귀값]
> 0 세션 ID(정상 종료 시)
< 0 에러 코드
[패킷 형식]
[복귀 패킷 형식]
■ 5.3 준 본 발명 칩 API 명령 정의
이하의 API 명령은 본 발명 칩 API 명령과 유사한 형식을 갖는다. 그럼에도 불구하고 다음의 명령들은 본 발명 칩 내장 서비스 클라이언트에 의해서만 발행되는 것이 아니라 다른 실체에 의해서도 발행된다. 이 명령들은 주로 하드웨어에 의존하는 관리와 운용, 및 통신의 하위 계층을 지원하는 인터페이스에 중점을 두고 있다. 이 명령들은 칩 리더/라이터 유니트에 의해 발행되거나 제조 시의 컴퓨터에 의해 발행될 수 있다.
칩 폴링
Poll CHIP
[기능 개요]
본 발명 칩의 상태가 독출된다(구현 의존성, 운용 의존성).
[함수 표현]
ERR epol_car (ETRONID* destId, ETRONID srcID, TIME t);
destId 폴링 시에 복귀되는 칩 ID
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
t 시각
[복귀값(예)]
<= 0 에러 코드
[패킷 형식]
[복귀 패킷 형식]
* eared와 clientId 모두 칩 헤더에 첨부되며, 따라서 본체에는 포함되지 않는다.
[액세스 제어]
이 API는 항상 사용 가능하다.
세션 중에 있어야 할 필요는 없다.
[기능 상세]
"epol_car"의 복귀 패킷의 루팅 헤더 부분의 scrID 부분에 칩의 본 발명 칩 ID가 저장되어 복귀된다. 따라서 누구라도 최초에 본 발명 칩 ID를 얻기 위해 이 API를 사용할 수 있다.
세션 중에 있지 않더라도 누구라도 이 명령을 발행할 수 있다.
칩의 초기화
Initialization CHIP
[기능 개요]
본 발명 칩을 초기화하기 위해서 칩 관리부가 작성된다.
[함수 표현(예)]
ERR eini_car (ETRONID destId, ETRONID srcID, TIME t,
UB initKey1[8], UB initKey2[8],
UB initPasswd[8], UB fileNum,
UB KeyObjLen, UB swapLen, CACL cacl,
UB rsaSecretKey[128], UH len, UH*rlen);
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 모두 "1"
t 시각
initKey1 인증용 공통키(1)
initKey2 인증용 공통키(2)
initPasswd 초기 패스워드
fileNum 칩 내에 작성 가능한 파일 수의 상한
keyObjNum 키 엔트리 수의 상한
swapLen 불휘발성 메모리 중의 스왑 영역의 크기
cacl 칩의 액세스 제어 리스트
rsaSecretKey 자신의 카드의 인증용 (RSA) 비밀키
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[패킷 형식]
[복귀 패킷 형식]
[기능 상세]
주어진 인수에 따라서 시스템 제어 블록이 초기화된다.
모든 다른 메모리 영역은 클리어되어 "0"으로 세트된다.
[액세스 제어]
이 명령은 본 발명 칩의 소스 본 발명 칩 ID = 0xff...ff(모두 "1")일 때만 받아들여진다.
자신의 인증 공개키 증명서의 교체
Update My Certificate
[기능 개요]
본 발명 칩의 자신의 증명서가 갱신된다.
[함수 표현]
ERR eupd_cer (ETRONID destId, ETRONID srcID, TIME t,
UB*certificate, UH len, UH*rlen);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
certificate 증명서
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[패킷 형식]
[복귀 패킷 형식]
CA국 공개키의 교체
Update CA Public Key
[기능 개요]
CA국의 공개키가 교체된다.
[함수 표현]
ERR eupd_cpk (ETRONID destId, ETRONID srcID, TIME t,
UB*caPublicKey, UH len, UH*rlen);
sid 세션 ID
destId 명령 대상인 본 발명 칩의 칩 ID
(목적지 본 발명 칩 ID)
srcId 본 명령을 호출하는 본 발명 칩 내장 서비스 클라이언트의 본 발명 칩 ID
(소스 본 발명 칩 ID)
t 시각
caPublicKey CA국의 공개키
len 아웃바운드 패킷 길이(옥테트수)
rlen 복귀 패킷 길이(옥테트수)
[복귀값]
<= 0 에러 코드
[패킷 형식]
[복귀 패킷 형식]
암호 구현 사양
■ DES
64 비트 비밀키 중에서 56 비트 DES 키를 생성하는 방법
각 옥테트의 최하위 비트는 이하에 나타낸 패리티 비트로 할당된다(칩은 패리티 비트를 무시는 할 수 있으나 체크하지는 못한다). 8 옥테트의 상위 7 비트를 가산하여 얻은 56 비트는 DES로 이용된다.
■ RSA
RSA 키의 데이터 형식
이 키는 다음과 같이 표현된다.
d = 1024 비트 (128 옥테트)
n = 1024 비트 (128 옥테트)
e = 0x0003으로 고정(1 옥테트)
비밀키 sk = d (128 옥테트)
공개키 pk = e의 길이(1 옥테트) | e(1옥테트) | n(128 옥테트)