본 발명의 한 형태에 의하면, 접근 방법은, 기기로부터 메모리 디바이스에의 접근 방법으로, 상기 기기가, 상기 메모리 디바이스에 대한 접근 영역을 지정하는 지정 정보를 송신하는 스텝과, 상기 접근 영역에 대한 처리 명령과, 상기 지정 정보에 관한 검증 정보를 함께 송신하는 스텝과, 상기 메모리 디바이스가, 상기 지정 정보를 수신하는 스텝과, 상기 처리 명령과 상기 검증 정보를 수신하여, 상기 지정 정보를 상기 검증 정보를 이용하여 검증하는 스텝과, 상기 검증에서 성공한 경우, 상기 처리 명령을 실행하는 스텝을 가진다.
본 발명의 다른 형태에 의하면, 접근 방법은, 기기로부터 메모리 디바이스에의 접근 방법으로, 상기 기기가, 상기 메모리 디바이스와의 사이에서, 해당 메모리 디바이스에 대한 접근 가능 영역에 관한 가능 영역 정보를 공유화하는 스텝과, 상기 가능 영역 정보를 참조하여, 상기 메모리 디바이스에 대한 접근 영역을 지정하는 지정 정보를 송신하는 스텝과, 상기 접근 영역에 대한 처리 명령과, 상기 지정 정보에 관한 검증 정보를 합쳐서 송신하는 스텝과, 상기 메모리 디바이스가, 상기 지정 정보를 수신하는 스텝과, 상기 처리 명령과 상기 검증 정보를 수신하고, 상기 지정 정보를 상기 검증 정보를 이용하여 검증하는 스텝과, 상기 검증에서 성공한 경우, 상기 처리 명령을 실행하는 스텝을 가진다.
본 발명의 또 다른 형태에 의하면, 접근 방법은, 기기로부터 메모리 디바이스에의 접근 방법으로, 상기 기기가, 상기 메모리 디바이스와의 사이에서, 검증용 키를 공유화하는 스텝과, 상기 메모리 디바이스에 대한 접근 영역을 지정하는 지정 정보를 송신하는 스텝과, 상기 접근 영역에 대한 처리 명령과, 상기 지정 정보에 관한 검증 정보를 상기 검증용 키로 암호화한 검증 데이터를 합쳐서 송신하는 스텝과, 상기 메모리 디바이스가, 상기 지정 정보를 수신하는 스텝과, 상기 처리 명령과 상기 검증 데이터를 수신하여, 상기 지정 정보를 상기 검증 데이터와 상기 검증용 키를 이용해서 검증하는 스텝과, 상기 검증에서 성공한 경우, 상기 처리 명령을 실행하는 스텝을 가진다.
본 발명의 또 다른 형태에 의하면, 접근 방법은, 기기로부터 메모리 디바이스에의 접근 방법으로, 상기 기기가, 상기 메모리 디바이스와의 사이에서, 해당 메모리 디바이스에 대한 접근 가능 영역에 관한 가능 영역 정보를 공유화하는 스텝과, 상기 메모리 디바이스와의 사이에서, 상기 접근 가능 영역에 대응한 검증용 키를 공유화하는 스텝과, 상기 가능 영역 정보를 참조하여, 상기 메모리 디바이스에 대한 접근 영역을 지정하는 지정 정보를 송신하는 스텝과, 상기 접근 영역에 대한 처리 명령과, 상기 지정 정보에 관한 검증 정보를 상기 검증용 키로 암호화한 검증 데이터를 합쳐서 송신하는 스텝과, 상기 메모리 디바이스가, 상기 지정 정보를 수신하는 스텝과, 상기 처리 명령과 상기 검증 데이터를 수신하고, 상기 지정 정보를 상기 검증 데이터와 상기 검증용 키를 이용하여 검증하는 스텝과, 상기 검증에서 성공한 경우, 상기 처리 명령을 실행하는 스텝을 가진다.
본 발명의 또 다른 형태에 의하면, 접근 방법은, 기기로부터 메모리 디바이스에의 접근 방법으로, 상기 기기가, 상기 메모리 디바이스와의 사이에서, 제 1 처리계 명령을 이용하여, 해당 메모리 디바이스에 대한 접근 가능 영역에 관한 가능 영역 정보를 공유화하는 스텝과, 상기 가능 영역 정보를 참조해, 제2의 처리계 명령을 이용하여, 상기 메모리 디바이스에 대한 접근 영역을 지정하는 지정 정보를 송신하는 스텝과, 상기 제2 처리계 명령을 이용하여, 상기 접근 영역에 대한 처리 명령과, 상기 지정 정보에 관한 검증 정보를 합쳐서 송신하는 스텝과, 상기 메모리 디바이스가, 상기 지정 정보를 수신하는 스텝과, 상기 처리 명령과 상기 검증 정보를 수신하여, 상기 지정 정보를 상기 검증 정보를 이용해 검증하는 스텝과, 상기 검증에서 성공한 경우, 상기 처리 명령을 실행하는 스텝을 가진다.
본 발명의 또 다른 형태에 의하면, 접근 방법은, 기기로부터 메모리 디바이스에의 접근 방법으로, 상기 기기가, 상기 메모리 디바이스와의 사이에서, 제1 처리계 명령을 이용해서, 검증용 키를 공유화하는 스텝과, 제2 처리계 명령을 이용해서, 상기 메모리 디바이스에 대한 접근 영역을 지정하는 지정 정보를 송신하는 스텝과, 상기 제2 처리계 명령을 이용해서, 상기 접근 영역에 대한 처리 명령과, 상기 지정 정보에 관한 검증 정보를 상기 검증용 키로 암호화한 검증 데이터를 합쳐서 송신하는 스텝과, 상기 메모리 디바이스가, 상기 지정 정보를 수신하는 스텝과, 상기 처리 명령과 상기 검증 데이터를 수신해서, 상기 지정 정보를 상기 검증 데이 터와 상기 검증용 키를 이용하여 검증하는 스텝과, 상기 검증에서 성공한 경우, 상기 처리 명령을 실행하는 스텝을 가진다.
본 발명의 또 다른 형태에 의하면, 접근 방법은, 기기로부터 메모리 디바이스에의 접근 방법으로, 상기 메모리 디바이스는, 상기 기기로부터의 접근이 제약된 변형억제성(tamper resistant)인 제1 영역과, 상기 기기로부터의 접근이 제약된 비변형억제성인 제2 영역과, 상기 기기로부터 접근이 가능한 제3 영역을 가지며, 적어도 상기 제1 영역에 대한 처리 명령인 제1 처리계 명령과, 적어도 상기 제3 영역에 대한 처리 명령인 제2 처리계 명령을 판별하는 기능을 구비하며, 상기 기기는, 상기 메모리 디바이스와의 사이에서, 제1 처리계 명령을 이용하여, 해당 메모리 디바이스에 대한 접근 가능 영역에 관한 가능 영역 정보를 공유화하는 스텝과, 상기 가능 영역 정보를 참조하여, 제2 처리계 명령을 이용해, 상기 제2 영역에 대한 접근 영역을 지정하는 지정 정보를 송신하는 스텝과, 제2 처리계 명령을 이용하여, 상기 접근 영역에 대한 처리 명령과, 상기 지정 정보에 관한 검증 정보를 합쳐서 송신하는 스텝과, 상기 메모리 디바이스는, 상기 지정 정보를 수신하는 스텝과, 상기 처리 명령과 상기 검증 정보를 수신하고, 상기 지정 정보를 상기 검증 정보를 이용해서 검증하는 스텝과, 상기 검증에서 성공한 경우, 상기 처리 명령을 실행하는 스텝을 가진다.
본 발명의 또 다른 형태에 의하면, 접근 방법은, 기기로부터 메모리 디바이스에의 접근 방법으로, 상기 메모리 디바이스는, 상기 기기로부터의 접근이 제약된 변형억제성안 제1 영역과, 상기 기기로부터의 접근이 제약된 비변형억제성인 제2 영역과, 상기 기기로부터 접근이 가능한 제3 영역을 가지며, 적어도 상기 제1 영역에 대한 처리 명령인 제 1 처리계 명령과, 적어도 상기 제3 영역에 대한 처리 명령인 제2 처리계 명령을 판별하는 기능을 구비하고, 상기 기기는, 상기 메모리 디바이스와의 사이에서, 제1 처리계 명령을 이용하여, 검증용 키를 공유화하는 스텝과, 제2 처리계 명령을 이용하여, 상기 제2 영역에 대한 접근 영역을 지정하는 지정 정보를 송신하는 스텝과, 제2 처리계 명령을 이용하여, 상기 접근 영역에 대한 처리 명령과, 상기 지정 정보에 관한 검증 정보를 상기 검증용 키로 암호화한 검증 데이터를 합쳐서 송신하는 스텝과, 상기 메모리 디바이스는, 상기 지정 정보를 수신하는 스텝과, 상기 처리 명령과 상기 검증 데이터를 수신하여, 상기 지정 정보를 상기 검증 데이터와 상기 검증용 키를 이용해서 검증하는 스텝과, 상기 검증에서 성공한 경우, 상기 처리 명령을 실행하는 스텝을 가진다.
본 발명의 또 다른 형태에 의하면, 메모리 디바이스는, 기기에서 판독 기록되는 메모리 디바이스로서, 접근하는 영역을 지정하는 지정 정보를 수신함과 동시에, 상기 지정 정보를 기초로 검증 정보와 판독 또는 기록 명령을 합쳐서 수신하는 처리 명령 수신 수단과, 상기 지정 정보를, 상기 검증 정보를 이용하여 검증 처리를 실시하는 지정 정보 검증 수단과, 데이터를 격납하는 기억 영역과, 상기 검증 처리가 성공한 경우에, 상기 처리 명령에 따라, 상기 기억 영역의 상기 지정 영역에 대한 판독 또는 기록을 실시하는 기억 영역 접근 수단과, 상기 기억 영역 접근 수단이 판독한 데이터를 상기 기기에 송신하는 데이터 송신 수단과, 상기 기기로부터 기록 데이터를 수신하는 데이터 수신 수단을 구비한다.
본 발명의 또 다른 형태에 의하면, 정보 기기는, 메모리 디바이스를 판독 기록하는 정보 기기로서, 판독 또는 기록하는 영역을 결정하고, 상기 영역을 지정하는 지정 정보를 결정하는 지정 정보 결정수단과, 상기 지정 정보로부터 상기 검증 정보의 생성 처리를 하는 검증 정보 생성수단과, 상기 지정 정보의 송신과, 상기 검증 정보와 판독 또는 기록의 처리 명령을 합쳐서 송신하는 처리 명령 송신 수단과, 상기 처리 명령이 기록일 경우는, 상기 메모리 디바이스에 데이터를 송신하는 데이터 송신 수단과, 상기 처리 명령이 판독일 경우는, 상기 메모리 디바이스로부터 데이터를 수신하는 데이터 수신 수단과, 상기 메모리 디바이스에 송신하는 데이터를 기억하거나, 또는, 상기 메모리 디바이스로부터 수신한 데이터를 기억하는 데이터 기억 수단을 구비한다.
본 발명의 또 다른 형태에 의하면, 접근 방법은, 기기로부터 메모리 디바이스에의 접근 방법으로, 상기 기기가, 상기 메모리 디바이스에 대한 접근 영역을 지정하는 지정 정보를 송신하는 스텝과, 상기 접근 영역에 대한 처리 명령과, 상기 지정 정보에 관한 검증 정보를 검증용 키로 암호화한 검증 데이터를 합쳐서 송신하는 스텝과, 상기 메모리 디바이스가, 상기 지정 정보를 수신하는 스텝과, 상기 처리 명령과 상기 검증 데이터를 수신하여, 상기 지정 정보를 상기 검증 데이터와 검증용 키를 이용해 검증하는 스텝과, 상기 검증에 성공한 경우, 상기 처리 명령을 실행하는 스텝을 가진다.
본 발명의 또 다른 형태에 의하면, 접근 방법은, 기기로부터 메모리 디바이스에의 접근 방법으로, 상기 기기는, 제1 처리계 명령을 이용하여 상기 메모리 디 바이스에 대한 접근 가능 영역에 관한 가능 영역 정보를 공유화하는 스텝과, 제1 처리계 명령을 이용해서 상기 접근 가능 영역에 대응한 검증용 키를 공유화하는 스텝과, 제2 처리계 명령을 이용하여, 상기 메모리 디바이스에 대한 접근 영역을 지정하는 지정 정보를 송신하는 스텝과, 제2 처리계 명령을 이용해 상기 접근 영역에 대한 처리 명령과, 상기 지정 정보에 관한 검증 정보를 상기 검증용 키로 암호화한 검증 데이터를 합쳐서 송신하는 스텝과, 상기 메모리 디바이스는, 상기 지정 정보를 수신하는 스텝과, 상기 처리 명령과 상기 검증 데이터를 수신하여, 상기 지정 정보를 상기 검증 데이터와 상기 검증용 키를 이용해서 검증하는 스텝과, 상기 검증에서 성공한 경우는, 상기 처리 명령을 실행하는 스텝을 가진다.
본 발명의 또 다른 형태에 의하면, 접근 방법은, 기기로부터 메모리 디바이스에의 접근 방법으로, 상기 메모리 디바이스는, 상기 기기로부터의 접근이 제약된 변형억제성인 제1 영역과, 상기 기기로부터의 접근이 제약된 비변형억제성이면서 또 대용량인 제2 영역과, 상기 기기로부터 접근이 가능하면서도 또 대용량인 제3 영역을 가지며, 적어도 상기 제1 영역에 대한 처리 명령인 제1 처리계 명령과, 적어도 상기 제3 영역에 대한 처리 명령인 제2 처리계 명령을 판별하는 기능을 구비하며, 상기 기기는, 상기 메모리 디바이스와의 사이에서, 제1 처리계 명령을 이용하여, 해당 메모리 디바이스에 대한 접근 가능 영역에 관한 가능 영역 정보를 공유화하는 스텝과, 제1 처리계 명령을 이용하여, 상기 접근 가능 영역에 대응한 검증용 키를 공유화하는 스텝과 제2 처리계 명령을 이용해서, 상기 제2 영역에 대한 접근 영역을 지정하는 지정 정보를 송신하는 스텝과, 제2 처리계 명령을 이용해서, 상기 접근 영역에 대한 처리 명령과, 상기 지정 정보에 관한 검증 정보를 상기 검증용 키로 암호화한 검증 데이터를 합쳐서 송신하는 스텝과, 상기 메모리 디바이스는, 상기 지정 정보를 수신하는 스텝과, 상기처리 명령과 상기 검증 데이터를 수신하여 상기 지정 정보를 상기 검증 데이터와 상기 검증용 키를 이용해 검증하는 스텝과, 상기 검증에서 성공한 경우, 상기 처리 명령을 실행하는 스텝을 가진다.
이하, 본 발명의 실시형태에 대해서, 첨부 도면을 참조하여 상세하게 설명한다. 또한, 본 발명은, 이 실시형태에 한정되는 것은 전혀 아니며, 그 요지를 일탈하지 않는 범위에서, 여러 가지의 형태로 실시할 수가 있다.
(실시형태 1)
본 발명에 있어서의 카드내 모듈 구성에 대해 도 3을 이용해 설명한다. 또, 카드(100)의 단자 배치는, 도 4에 나타내는데, 그 단자 구성은, 도 1에 나타낸 것과 각 단자에 붙인 부호는 다르지만, 그 구성은 동일하기 때문에 설명은 생략 한다.
카드내 모듈은, 콘트롤러(106)와 플래시 메모리(105)로 구성된다. 콘트롤러 (106)는, CMD 라인에 접속된, 명령 수신 및 응답 송신을 실시하는 명령 수신부(101)와, DAT 라인에 접속된 데이터 송수신부(102)와, 데이터 송수신부 (102)가 송수신 한 데이터에 대해서 세션 키로 암복호 처리를 가하여, 또 플래시 메모리 격납용 키로 암복호 하여 메모리 접근부(104)와 데이터를 주고받는 암복호부(107)와 플래시 메모리(105)에 대한 데이터의 판독 및 기록를 실시하는 메모리 접근부(104)와 수신한 명령에 따라, 메모리 접근부(104), 세션 키 공유부(110), 및 파라미터 검증부(108), 암복호부(107)에 대해서 처리요구를 실시하는 데이터 제어부(103)와, 단말(200)로부터 수신한 보안성 보호 영역에 접근하기 위한 파라미터를 기억해 두는 파라미터 기억부(109)와, 파라미터가 정상임을 검증하는 파라미터 검증부(108)와, 단말(200)과의 사이에서 인증용 및 암복호용의 세션 키를 교환하는 세션키 공유부(110)와, 세션키와, 세션키와 대응된 보안성 보호 영역을 기억해 두는 에리어 세션키 관리부(111)로 구성된다.
이어서, 본 실시형태 1에 있어서의 단말(200)의 구성에 대해 도 5를 이용해 설명한다.
단말(200)은, 카드(100)에 메모리 카드 명령을 송신하는 명령 송신부(204)와, 카드(100)의 DAT 라인에 데이터를 송신하는 데이터 송수신 수단(207)과, 데이터 송수신 수단(207)이 송신하는 데이터를 암호화하고, 또 수신하는 데이터를 복호화 하는 암복호 수단(206)과, 카드(100)와의 사이에서 세션키의 공유 처리를 실시하는 세션키 공유 수단(202)과 보안성 보호 영역 접근 명령에 따라 접근하는 영역을 결정하여, 영역 지정정보를 생성하는 지정정보 결정수단(201)과, 영역 지정정보와 세션키로부터 검증 데이터를 생성하는 검증 데이터 생성부(203)와, 송신하는 데이터, 또는 수신한 데이터를 기억하는 데이터 기억수단( 205)를 구비한다.
*이어서, 도 3의 카드(100)와 도 5의 단말(200) 사이에서 이루어지는 처리의 개요에 대해 도 6을 이용하여 설명한다.
도 6에 있어서, 우선, 단말(200)과 카드(100) 사이에서는, 카드(100) IC카드 명령을 이용한 처리로서, 단말(200)과 카드(100) 상호 간을 인증하기 위한 인증 처리 및 세션키를 공유하기 위한 키 공유 처리와, 단말(200)로부터 카드(100)내 메모리에 대한 접근 가능 영역의 영역 번호(도면 안의 영역 No.x)를 할당하는 영역 번호 할당 처리가 실행된다(스텝 S401).
인증 처리를 실시하여, 서로 정당성이 확인된 후, 키 공유 처리 및 영역 번호 할당 처리가 실시되고, 그 결과로서, 단말(200)내와 카드(100)내에는, 영역 No.x으로 표시되는 보안성 보호 영역에의 접근을 가능하게 하는 검증용 및 암호용 세션키가 영역 번호(영역 No.x)와 대응되어 보관 유지된다.
이어서, 단말(200)과 카드(100) 사이에서는, 메모리 카드 명령을 이용한 처리로서 단말(200)로부터 카드(100)에 대한 접근 영역 지정 명령 송신 처리(스텝 S402) 및 데이터 전송 명령 송신 처리(스텝 S403)와, 카드(100)로부터 단말(200)에 대한 암호화 데이터 송신 처리(스텝 S404)가 실행된다.
접근 영역 지정 명령 송신 처리에서는, 접근하고 싶은 보안성 보호 영역내의 영역을 지정하기위해, 영역 No.x, 블록 주소 및 블록길이를 설정한 데이터를 포함한 접근 영역 지정 명령이 단말(200)로부터 카드(100)에 송신된다. 카드(100)에서는, 수신한 접근 영역 지정 명령으로부터 추출한 영역 No.x을 기초로 보안성 보호 영역에 대한 접근 가부 검증 처리가 실행된다.
또, 데이터 전송 명령 송신 처리에서는, 단말(200)에 있어서 영역 No.x, 블록 주소 및 블록길이와, 스텝(S401)에서 카드(100)와의 사이에서 공유한 검증용 키를 이용하여 검증 데이터가 작성되고, 이 검증 데이터를 포함한 데이터 전송(Read) 명령이 카드(100)에 송신된다. 카드(100)에서는, 수신한 데이터 전송(Read) 명령으로부터 단말(200)과의 사이에서 공유한 검증용키인 공개키를 이용하여 영역 No.x, 블록 주소 및 블록길이를 기초로 검증 데이터를 작성하고 있음을 확인하는 것으로, 스텝(S402)에서 지정된 보안성 보호 영역에 대한 접근 가부가 검증된다.
또, 암호화 데이터 송신 처리에서는, 카드(100)에 있어서 상기 검증 처리에서 접근 가능하게 된 카드 애플리케이션에 대응하는 영역 No.x에 격납된 데이터가, 단말(200)과의 사이에서 공유한 암호용 키를 이용하여 암호화 되어, 이 암호화 데이터가 단말(200)에 송신된다.
이하의 설명에서는, 상기 처리 개요에 처리 순서에 대해 상세하게 설명한다.
단말(200)과 세션키 공유부(110) 사이에서 송수신 되는 명령 형태는, 일반적인 IC카드에서 이용되는 APDU 포맷에 따른 형태로 한다. 즉, 세션키 공유부(110)는 IC 카드 애플리케이션의 형태를 취한다.
여기에서는, APDU의 송수신 방법에 대해, 도 7의 순서도를 이용하여 설명한다.
우선, 단말(200)로부터 카드(100)에 대한 명령 APDU의 송신 처리에 대해 설명한다. 여기서, 명령 APDU란, 메모리 카드측에서 실행시키고 싶은 명령을 APDU 포맷 형식으로 단말(200)로부터 메모리 카드에 송부하는 것을 말하며, 구체적으로는 IC카드용 명령을 사용한다.
우선, 단말(200)은 세션키 공유부(110)에 대해서 송신하는 명령 APDU를 작성한다. 다음에, 단말(200)은 도 2의 카드(100)의 CMD 라인(22)에 대해서, APDU 송 신 명령을 송신한다(스텝 S501).
이 APDU 송신 명령은, 종래의 데이터 판독 명령과 마찬가지로, 도 9에 나타내는 포맷으로 되어있으며, 6비트의 명령 코드(401)와 32비트의 명령 인수(402)로 구성된다.
APDU 송신 명령에 있어서의 명령 인수(402)는, 도 18에서 나타내는 바와 같이, DAT0 라인(27)에 입력하는 데이터가 명령 APDU임을 나타내는 플래그(1401)와 송신 데이터수를 나타내는 (1403)으로 구성된다. 플래그(1401)및 송신 데이터수(1403)를 합쳐서 32비트에 못 미치는 경우는 미사용 필드(1402)가 존재한다.
도 4의 DAT0 라인(27)에 입력하는 데이터는 512바이트 단위로 되어있으며, 송신 데이터수(1403)는, 이 512바이트 단위의 입력을 몇 회 실시하는지를 나타낸다.
이어서, 카드(100)의 명령 수신부(101)는, 단말(200)로부터 송신된 명령을 수신하여(스텝 S502), 그것이 APDU 송신 명령임을 인식하고, CMD 라인(22)을 경유하여 단말(200)에 응답을 돌려줌과 동시에(스텝 S503), 데이터 제어부(103)에 대해, APDU 송신 명령을 수신하였음을 통지한다(스텝 S504).
이어서, 단말(200)은 카드(100)의 CMD 라인(22)으로부터 APDU 송신 명령에 대한 응답을 수신하여(스텝 S503), DAT0 라인(27)에 도 20에서 나타내는 포맷으로 명령 APDU(1602)를 입력한다(스텝 S505).
도 20에 있어서, (1601)로 표시되는 길이는 후에 계속되는 APDU(1602)의 길이를 나타내고 있다. 길이 필드(1601)와 APDU(1602)의 합계길이에 맞추어 명령 인 수의 송신 데이터수(1403)가 설정되고 있다. 또, 상기 합계길이는 반드시 512바이트의 배수가 되는 것은 아니기 때문에, 512바이트의 배수가 되도록 패딩(padding/채우기)(1603)을 부가한다.
이어서, 카드(100) 내부의 데이터 송수신부(102)는, 단말(200)로부터 DAT0 라인(27)에 입력된 명령 APDU를 수신함과 동시에(스텝 S505), 데이터 제어부(103)에 명령 APDU를 수신하였음을 통지한다(스텝 S506). 이어서, 데이터 제어부(103)는, 데이터 송수신부(102)로부터 명령 APDU를 판독하고(스텝 S507), 세션 키 공유부(110)(IC 카드 애플리케이션 케이 숀)에 명령 APDU를 건네준다.(스텝 S508)
이어서, 세션 키 공유부(110)는, 명령 APDU에 기술된 대로의 처리를 실시하고(스텝 S509), 처리 결과 발생한 데이터와 상태(suatus)정보를 응답 APDU로서 데이터 제어부(103)에 건네준다(스텝 S510). 이 상태 정보란, ISO7816에서 정의된 상태어(suatus word)로서, 정상 종료였는지, 이상종료였는지를 나타내는 2바이트의 값이다.
이어서, 카드(100)로부터 단말(200)에 대한 응답 APDU의 송신 처리에 대해, 도 8의 순서도를 이용해 설명한다. 여기서 응답 APDU란, 카드(100)가 실행한 명령 APDU의 처리 결과를 카드(100)로부터 단말(200)에 송신하는 것을 말한다.
여기에서는, 상기의 명령 APDU의 송신 방법에서 나타낸 바와 같이, 세션 키 공유부(110)가 출력한 응답 APDU가 데이터 제어부(103)에서 보관 유지되고 있는 상태에 있는 것으로 한다.
우선, 단말(200)은, 카드(100)의 CMD 라인(22)에 대해서, APDU 수신 명령을 송신한다(스텝 S601). 이 APDU 수신 명령은, APDU 송신 명령과 마찬가지로, 도 9에 나타내는 종래의 데이터 판독 명령과 같은 포맷으로 되어 있으며, 6비트 명령 코드(401)와 32비트 명령 인수(402)로 구성된다.
APDU 수신 명령에 있어서의 명령 인수(402)는, 도 19에 나타내는 바와 같이, 미사용 필드(1501)와 송신 데이터수(1502)로 구성된다. 송신 데이터수(1502)가 32비트에 못 미치는 경우는 미사용 필드(1501)가 존재한다.
도 4의 DAT0 단자(27)로부터 출력되는 데이터는, APDU 송신 명령에 있어서의 입력 데이터와 마찬가지로 512바이트 단위로 되어 있으며, 송신 데이터수(1502)는 512바이트 단위로 몇 회 출력을 실시하는지를 나타낸다.
이어서, 카드(100)의 명령 수신부(101)는, 단말(200)로부터 송신된 명령을 수신하여(스텝 S602), 그것이 APDU 수신 명령임을 인식하고, CMD 라인(22)을 경유해 단말(200)에 응답을 돌려줌과 동시에(스텝 S603), 데이터 제어부(103)에 대해서, APDU 수신 명령을 수신하였음을 통지한다(스텝 S604).
이어서, 데이터 제어부(103)는, 데이터 송수신부(102)에 대해서, 세션 키 공유부(110)로부터 받은 응답 APDU를 건네준다(스텝 S605).
이어서, 단말(200)은, 카드(100)의 CMD 라인(22)으로부터 APDU 수신 명령에 대한 응답을 수신하여(스텝 S603), DAT0 라인(27)을 경유하여 데이터 송수신부 (102)에서 응답 APDU를 판독한다(스텝 S606). 판독된 응답 APDU는, 도 20에 나타내는 포맷으로 출력된다. 각 필드의 상세한 것에 대하여는, APDU 송신 명령에 있어서의 입력시와 동일하기 때문에 설명을 생략 한다.
카드(100)에 탑재되는 플래시 메모리(105)는, 도 10에 나타내는 바와 같이, 적어도 단말(200)로부터 종래의 판독용 명령 및 기록용 명령으로 대표되는 메모리 카드 명령으로 접근이 가능한 통상 영역(비변형억제성 메모리 영역)(62)과, 상기 종래의 명령으로는 접근할 수 없는 보안성 보호 영역(변형억제성 메모리 영역)(61)을 가진다. 또, 카드(100)는, 도 10에 나타내는 바와 같이, IC카드 명령으로 접근이 가능한 변형억제 영역(TRM:tamper resistant module )(80)을 가진다.
보안성 보호 영역(61)은, 통상, 오로지 카드 애플리케이션으로 부터만 접근 가능한 상태이며, 단말(200)로부터의 종래의 판독용 명령 및 기록용 명령에 대해서는, 명령 수신부(101)에 의해 접근이 배제된다.
본 발명에 있어서의 메모리 카드는 내부에 복수의 카드 애플리케이션을 탑재할 수 있도록 되어있으며, 도 11에 나타내는 바와 같이, 보안성 보호 영역(61)은 각 애플리케이션에 대해 개별 영역(AP1용 영역(71) ~AP3용 영역(73))을 할당할 수가 있다.
보안성 보호 영역(61)은, 데이터 제어부(103)가 관리하는 격납용 암호 키(Ks)로 암호화되어 있다. 이 암호 키는, 보안성 보호 영역(61) 전체로 1개의 (Ks)여도 좋고, 각 애플리케이션용인 AP1용 영역(71) ~ AP3용 영역(73)에 개별적으로 격납용 암호 키 (Ks_1~Ks_3)를 준비해도 좋다. 본 실시형태에서는 각 애플리케이션(AP1~3) 에 격납용 암호 키(Ks_1~Ks_3)를 준비한다.
이어서, 보안성 보호 영역(61)의 각 애플리케이션용인 AP1용 영역(71) ~ AP3용 영역(73)의 내부 구성에 대해 도 12를 이용하여 설명한다.
여기서는, 예로서 카드 애플리케이션 AP1용 영역(71)을 들고 있다. AP1용 영역(71)의 내부는 디렉터리 DIR1, DIR2와 파일 FILE1 ~ FILE3을 이용한 계층 구조를 이용한 데이터 관리로 되어 있다.
카드 애플리케이션AP1은, AP1용 영역(71)내에서 디렉터리 이동을 실시하여, 목적하는 파일이 존재하는 디렉터리 DIR1, DIR2상에서 파일 FILE1~FILE3에 대한 판독 및 기록을 실시한다.
예를 들면, 카드 애플리케이션 AP1이 파일 FILE3에 접근할 경우는, 디렉터리 DIR1에 이동하여, 다음에 디렉터리 DIR2로 이동한 후, 파일 FILE3의 판독 기록을 실시한다. 또, 각 디렉터리 DIR1, DIR2 에 있어서, 그 하위의 디렉터리 또는 파일의 작성 및 삭제가 가능하다.
이어서, 카드(100)내의 세션 키 공유부(110)와 단말(200) 사이에서 행해지는 세션 키 공유 순서에 대해서 도 13~도 16을 이용하여 설명한다.
카드 애플리케이션과 단말(200)은 각각 공개 키 암호로 이용되는 공개 키와 비밀열쇠의 쌍(pair)을 보관 유지하고, 서로 상대의 공개 키를 보관 유지하고 있다.
세션 키 공유 순서에 있어서의 명령 형태는 상기에서 나타낸 APDU를 이용한다. 이후의 설명에 있어서는 명령 형태에 관한 기술은 하지않고, 단지 명령 APDU, 응답 APDU라고 표기한다.
우선, 단말(200)은, SELECT 명령 APDU를 송신하는 것으로, 카드 애플리케이션AP1의 선택을 실시한다(스텝 901). SELECT 명령 APDU이란, 이후의 IC카드 명령 (명령 APDU)을 카드(100) 내부의 어느 애플리케이션에 송신하는지를 지정하는 명령 APDU로서, 다른 명령 APDU와 마찬가지로 APDU 송신 명령을 이용하여 송신한다.
카드(100)는, 단말(200)로부터 지정된 카드 애플리케이션 AP1의 선택이 정상적으로 완료하면 정상 완료의 응답 APDU, 완료하지 않으면 이상종료의 응답 APDU를 돌려준다(스텝 902).
이어서, 단말(200)은, 처리(903)를 실행한다. 이 처리(903)에 대해 간단히 설명하면, 선택한 카드 애플리케이션 AP1에 접근을 가능케 하는 DATA2를 생성하기 위한 처리이다. 이 처리(903)의 상세한 것에 대해서는, 도 14의 흐름도를 참조하여 설명한다.
단말(200)은, 난수(Rh)를 생성하고(스텝 S9031), 난수(Rh)와 단말(200)이 접근하고 싶은, 도 12에서 나타낸 파일FILE3의 파일명을 결합하여, 카드 애플리케이션(AP1)이 보관 유지하는 비밀 키(PriS)에 대응한 공개 키(PubS)로 암호화 하여 DATA1를 생성하고(스텝 S9032), 또 단말(200)이 보관 유지하는 비밀키(PriH)에 대응한 공개 키(PubH)를 나타내는 식별자Info_PubH와 DATA1를 결합하여 DATA2를 생성한다(스텝 S9033).
도 13으로 돌아와, 이어서, 단말(200)은, 카드 애플리케이션과의 세션 키의 공유 및, 단말(200)이 접근 가능한 영역 정보의 공유를 실시하기 위해서, 스텝(S9033)으로 생성한 DATA2를 포함한 REQ_AREA_INFO 명령을 카드 애플리케이션에 송신한다(스텝 904).
REQ_AREA_INFO 명령을 수신한 카드 애플리케이션 AP1은, 처리(905)를 실행 한다. 이 처리(905)의 상세한 것에 대하여는, 도 15의 흐름도를 참조해서 설명한다.
카드 애플리케이션 AP1는, DATA2에서 DATA1를 추출하여, 카드 애플리케이션 (AP1)이 보관 유지하는 비밀열쇠(PriS)로 복호화 하여, 난수(Rh)와 파일명(FILE3)을 얻는다(스텝 S9051).
이어서, DATA2에서 공개 키를 식별하여 식별자Info_PubH를 추출하고, Info_PubH가 나타내는 공개 키(PubH)에 대응지워진 단말(200)을 이용한 접근이 인정되고 있는지를, 파일(FILE3)의 접근 권한 설정을 참조하여 확인한다. 권한이 없으면, 그 취지의 오류를 응답 APDU로서 단말(200)에 돌려준다. 접근할 권한이 있으면, FILE3의 파일 사이즈 SIZE3를 취득한다(스텝 S9052).
이어서, 난수(Rs)를 생성하여(스텝 S9053), 파일 FILE3에 대한 단말(200)로부터의 보안성 보호 영역 접근 명령을 이용한 접근이 가능해지도록, 도 47에 나타내는 접근 유효 테이블(4500)에 대한 등록을 실시하고, 단말(200)이 보안성 보호 영역 접근 명령을 이용하여 접근할 경우에 사용하기 위한 에리어 번호(X)를 파일 FILE3에 할당하여, 파일 사이즈 SIZE3와 함께 에리어 세션 키 관리부(111)에 기억한다(스텝 S9054). 이 에리어 번호란, 단말(200)이 보안성 보호 영역 접근 명령을 이용하여 접근할 때, 접근 영역 지정 명령으로 송신하는 접근 영역 지정 정보에 포함하는 정보를 말한다.
이어서, 난수(Rs), 에리어 번호(X), 파일 사이즈(SIZE3)를 결합하여, DATA3을 생성하고(스텝 S9055), DATA3을 단말(200)의 공개 키(PubH)로 암호화하여 DATA4 를 생성한다(스텝 S9056).
이어서, 난수(Rs)와 난수(Rh)에 배타적논리합을 실시하여, 난수(R)를 생성하고(스텝 S9057), 난수(R)로부터 암호용 세션 키(Kd), 검증용 세션 키(Km)를 생성한다(스텝 S9058).
이어서, 세션 키(Kd) 및 (Km)을 에리어 번호(X)와 관련지워 에리어 세션 키 관리부(111)에 기억한다(스텝 S9059).
도 13으로 돌아와, 카드(100)는 여기까지의 처리를 끝내면 단말(200)에 DATA4를 포함한 응답 APDU를 단말(200)에 송신한다(스텝 906).
응답 APDU를 수신한 단말(200)은, 응답 APDU로부터 DATA4를 추출하여, 처리(907)를 실행한다. 이 처리(907)의 상세한 것에 대하여는, 도 16의 흐름도를 참조하여 설명한다.
단말(200)은, 단말(200)의 비밀 키(PriH)를 이용하여 DATA4를 복호하고 DATA3을 취득한다(스텝 S9071). 이어서, 단말(200)은, DATA3에서 난수(Rs)를 취득하고, 난수(Rs)와 난수(Rh)에 배타적논리합을 실시하여, 난수(R)를 생성하고 (스텝 S9072), 난수(R)로부터 암호용 세션 키(Kd), 검증용 세션 키(Km)를 생성한다(스텝 S9073).
이상의 스텝 (901) 에서 (907) 을 거침으로써, 단말(200)과 카드(100) 간의 상호 인증을 실시하고, 또 단말(200)이 지정한 파일에 대한 접근 권한이 있으면 단말(200)로부터의 접근이 가능한 상태가 되고, 또 접근 할 때에 필요한 에리어 번호, 에리어 번호에 할당된 파일 사이즈(SIZE3), 및 검증용 세션 키(Km), 암호용 세 션 키(Kd)를 공유할 수가 있다,
또, 스텝(904)에 있어서 단말(200)로부터 카드(100)에 전해지는 파일명은, 카드 애플리케이션이 관리하는 파일을 직접 표시할 필요는 없고, 카드 애플리케이션이 어느 파일을 가리키고 있는지를 인식할 수 있는 형태이면 좋다.
또, 단말(200)이 접근하고 싶은 파일 및 스텝(S9054)에 있어서, 그 파일에 대해 단말(200)이 접근 가능하게 되는 설정을 한 때에 할당되는 에리어 번호를 항상 동일해 지도록 하고, 이러한 정보를 단말(200)과 카드(100) 사이에서 미리 인식해 두는 것으로, 스텝(904)에 있어서의 단말(200)이 접근하고 싶은 파일명의 통지 및 스텝(906)에 있어서의 파일에 할당된 에리어 번호의 통지를 생략 할 수도 있다.
또한, 본 설명에서는, 각 카드 애플리케이션이 도 12에 나타내는 바와 같이 디렉터리와 파일로 구성되는 계층 구조를 갖고, 디렉터리명 및 파일명으로 데이터를 관리하고 있는 형태로 설명했지만, 카드 애플리케이션에 할당된 영역을 적당한 크기로 분할하여, 분할된 각각의 영역에 번호 등의 식별자를 할당하여 관리하는 형태이어도 좋다. 그 경우는, 도 13에서 나타낸 처리 순서에서 이용되는 파일명 FILE3 대신에 상기 식별자를 이용한다.
이어서, 단말(200)로부터 보안성 보호 영역에 대해 접근을 실시할 때의 처리에 대해 도 17및 도 3을 이용해 설명한다. 도 17의 실선은 CMD 라인(22), 점선은 DAT0 라인(27)에 있어서의 전송을 나타낸다.
우선, 단말(200)은 카드(100)에 대해 메모리 카드 명령인 접근 영역 지정 명령을 송신한다(스텝 1301). 이 접근 영역 지정 명령은, 도 9에서 표시되는 포맷으 로 되어 있으며, 6비트의 명령 코드(401)와 32비트의 명령 인수(402)로 구성된다.
접근 영역 지정 명령에 있어서의 명령 인수(402)는, 도 18에서 표시되는 바와 같이, DAT0 라인(27)에 입력하는 데이터가 접근 영역 지정 정보임을 나타내는 플래그(1401)와 송신 데이터수를 나타내는(1403)으로 구성된다. 플래그(1401) 및 송신 데이터수(1403)를 합쳐서 32비트에 못 미치는 경우는 미사용 필드(1402)가 존재한다.
DAT0 라인(27)에 입력하는 데이터는, 512바이트 단위로 되어있으며, 송신 데이터수(1403)는, 이 512바이트 단위의 입력을 몇 회 실시하는지를 나타낸다.
이어서, 카드(100)의 명령 수신부(101)는, 단말(200)로부터 송신된 명령을 수신하고, 그것이 접근 영역 지정 명령임을 인식하여, 단말에 응답을 돌려줌과 동시에 데이터 제어부(103)에 대해서, 접근 영역 지정 명령을 수신했음을 통지한다(스텝 1302).
이어서, 단말(200)은 카드(100)의 CMD 라인(22)으로부터 접근 영역 지정 명령에 대한 응답을 수신하고, DAT0 라인(27)에 도 21에 나타내는 포맷으로 접근 영역 지정 정보(1702)를 입력한다(스텝 1303).
도 21의 (1701)에 표시되는 길이는, 후에 계속되는 접근 영역 지정 정보(1702)의 길이를 나타내고 있다. 길이 필드(1701)와 접근 영역 지정 정보(1702)의 합계 길이에 맞추어 명령 인수(402)의 송신 데이터수(1403)가 설정되고 있다. 또, 상기 합계 길이는 반드시 512바이트의 배수가 되는 것은 아니기 때문에, 512바이트의 배수가 되도록 패딩(1703)을 부가한다.
접근 영역 지정 정보(1702)는, 도 22에 표시되는 바와 같이, 도 13의 스텝 (906)에서 카드에서 통지된 에리어 번호(X)를 지정하는 에리어 번호(1801)와, 0이상, 마찬가지로 카드에서 통지된 파일 사이즈(SIZE3)의 범위에서 선택 가능한 접근 개시 주소(1802)와, 1이상, (파일 사이즈 SIZE3?접근 개시 주소 1802)의 범위에서 선택 가능한 접근 데이터 사이즈(1803)로 구성된다.
이어서, 카드내부의 데이터 송수신부(102)는, 단말로부터 입력된 접근 영역 지정 정보(1702)를 수신함과 동시에, 데이터 제어부(103)에 접근 영역 지정 정보(1702)를 수신하였음을 통지한다.
이어서, 데이터 제어부(103)는, 데이터 송수신부(102)로부터 접근 영역 지정 정보(1702)를 판독하여, 에리어 번호(1801)가, 도 15의 스텝(S9054)에서 할당되어진 에리어 번호(X)인지, 접근 개시 주소 및 접근 데이터 사이즈는, 에리어 번호(X)와 대응한 파일의 파일 사이즈 범위에 들어있는지를 체크하고, 이상이 있으면 카드내부 에 보관 유지하는 오류 플래그를 ON로 설정한다.
데이터 제어부(103)는, 이상이 없으면, 도 3에 나타내는 파라미터 기억부(109)에 접근 영역 지정 정보(1702)(구체적으로는 에리어 번호(1801), 접근 개시 주소(1802), 접근 데이터 사이즈(1803))를 기억한다.
이상이, 접근 영역을 지정하는 처리이다.
이어서, 도 10의 보안성 보호 영역(61)에 대해서 판독을 실시할 때의 처리에 대해 설명한다. 도 17에 있어서, 단말(200)은, 카드(100)에 대해서 보안성 보호 영역 판독 명령을 송신한다(스텝 1304). 이 보안성 보호 영역 판독 명령은, 도 8 에 나타내는 포맷으로 되어 있으며, 6비트의 명령 코드(401)와 32비트의 명령 인수(402)로 구성된다.
보안성 보호 영역 판독 명령에 있어서의 명령 인수(402)는, 보안성 보호 영역 판독 명령을 송신한 단말이, 접근 영역 지정 명령을 송신한 단말(200)과 동일한지, 또 세션 키 공유 순서를 거쳐 에리어 번호(X)가 가리키는 영역에 대한 접근 권한이 있음이 확인된 단말(200)과 동일한지를 검증하기 위한 검증 데이터로 구성된다.
이 검증 데이터의 생성 방법에 대해 도 23을 이용해 설명한다.
접근 영역 지정 정보(1702)는, 접근 영역 지정 명령에 있어서 DAT 라인(27)에 입력하는 파라미터이다. 검증 키(2101)는, 도 13의 스텝(907)에서 생성한 검증용 세션 키(Km)이다.
단말(200) 내부의 검증 데이터 생성부(203)는, 암호 연산을 실시하는 모듈로서, 보안성 보호 영역 접근(판독 또는 기록) 명령에 포함하는 검증 데이터를 생성한다.
여기에서는, DES-MAC로 불리는 MAC(Message Authentication Code) 생성 처리를 실시한다. 접근 영역 지정 정보(1702)에 대해서 패딩 데이터(2105)를 부가한 (2102)를 입력 데이터로서, 검증 키(2101)를 이용하여 DES 암호를 이용한 MAC 생성 처리를 실시하고, MAC 데이터를 검증 데이터(2104)로서 작성한다.
패딩 데이터(2105)에 대해서는, 단말(200)로부터 카드(100)에 대해 접근 영역 지정 명령을 송신할 경우에 접근 영역 지정 정보(1702)과 함께 송신해도 좋고, 미리 단말과 카드 간에서 결정한 패딩 생성 룰을 기초로 생성한 패딩 데이터를 부여해도 좋다.
또한 본 실시의 형태에서는 DES-MAC를 이용하여 검증 데이터를 작성하지만, 다른 알고리즘을 이용해도 좋다. 또 용도에 따라 검증 알고리즘을 선택할 수 있도록 해도 좋다.
또한, 단말(200)이 정당한지 인증할 필요는 없고, 접근 영역 지정 명령과의 대응관계에 대해서만 확인하고 싶은 경우는, 암호 처리를 이용하지않고, 단지 SHA1(Secure Hash Algorithm 1 )나 MD5(Message Digest 5) 알고리즘을 이용한 해시 데이터를 검증 데이터로서 이용해도 좋다.
단말(200)은, 상기의 검증 데이터 생성 처리로서 32비트의 검증 데이터를 생성하고, 보안성 보호 영역 판독 명령의 인수로 사용한다.
이어서, 카드(100)의 명령 수신부(101)는, 단말(200)로부터 송신된 명령을 수신하여, 그것이 보안성 보호 영역 판독 명령임을 인식하고, 접근 영역 지정 정보(1702)에 관한 오류 플래그가 ON으로 설정되어 있는 경우는, 응답으로서 오류를 돌려준다. 또, 접근 영역 지정 정보(1702)에 관한 오류 플래그가 ON으로 설정되어 있지 않은 경우는, 도 15에서 표시되는 바와 같이, 단말에 정상 응답을 돌려줌(스텝 1305)과 동시에, 데이터 제어부(103)에 대해서 보안성 보호 영역 판독 명령을 수신하였음을 통지하고, 파라미터 검증부(108)에 명령 인수(402)로서 받은 검증 데이터(2104)를 건네준다.
이어서, 단말(200)은, 카드(100)의 CMD 라인(22)으로부터 보안성 보호 영역 판독 명령에 대한 응답을 수신하고, DAT0 라인(27)으로부터 데이터가 출력되기를 기다린다.
이후에 카드(100)에 의한 보안성 보호 영역의 데이터 출력 처리에 대해 설명한다.
카드(100)의 파라미터 검증부(108)는, 파라미터 기억부(109)로부터 접근 영역 지정 명령에 의해 단말(200)로부터 받아서 기억해 둔 접근 영역 지정 정보(1702)를 판독하고, 접근 영역 지정 정보(1702)에 포함되는 에리어 번호(X)(1801)에 대응하는, 도 15의 스텝(S9059)에서 기억한 검증용 세션 키(Km)를 에리어 세션 키 관리부(111)로부터 취득한다.
이어서, 카드(100)의 파라미터 검증부(108)는, 검증용 세션 키(Km)와 접근 영역 지정 정보(1702)를 이용하여, 도 24에 나타낸 검증 데이터 생성 처리를 실시하여, 검증 데이터(1904)를 생성한다. 또한, 검증 데이터 생성 처리에 대해서는, 도 23에 나타낸 단말(200)에 의한 검증 데이터 생성 처리와 동일하므로 상세한 설명은 생략 한다.
이어서, 카드(100)의 파라미터 검증부(108)는, 상기 검증 데이터 생성 처리로 생성한 검증 데이터(1904)와 단말(200)로부터 보안성 보호 영역 판독 명령의 인수를 이용해서 받은 검증 데이터(504)를 비교하고, 일치하지 않으면 오류로 하고, 데이터 판독 처리로 이행하지 않는다. 일치한 경우는, 다음의 데이터 판독 처리로 이행함을 데이터 제어부(103)에 통지한다.
이어서, 카드(100)의 데이터 제어부(103)는, 파라미터 기억부(109)로부터 접 근 영역 지정 정보(1702)를 판독, 그 중에 포함되는 에리어 번호(X)를 취득하고, 에리어 세션 키 관리부(111)로부터 에리어 번호에 대응하는 파일(FILE3)을 인식한다.
이어서, 카드(100)의 데이터 제어부(103)는, 파일(FILE3)이 애플리케이션 AP1용 영역임을 확인하고, 격납용 암호 키(Ks_1)를 취득한다.
이어서, 카드(100)의 데이터 제어부(103)는, 접근 영역 지정 정보(1702)로부터 접근 개시 주소(1802)와 접근 데이터 사이즈(1803)를 취득하고, 파일(FILE3)로서 관리되고 있는 영역에 대해서, 접근 개시 주소(1802)를 오프셋, 접근 데이터 사이즈(1803)를 판독 사이즈로서 메모리 접근부(104)에 데이터 판독 요구를 실시한다.
이어서, 카드(100)의 데이터 제어부(103)는, 암복호부(107)에 대해서, 메모리 접근부(104)를 이용하여 판독된 데이터를 격납용 암호 키(Ks_1)로 복호화 하도록 요구한다.
이어서, 카드(100)의 데이터 제어부(103)는, 암복호부(107)에 대해서, 암복호부(107)에 의해 복호화 된 데이터를 암호용 세션 키(Kd)로 암호화하도록 요구한다.
이어서, 카드(100)의 데이터 제어부(103)는, 데이터 송수신부(102)에 대해서, 복호부(107)에 의해 암호용 세션 키(Kd)로 암호화된 데이터를 단말(200)에 송신하도록 요구한다.
상기의 처리로 인해, 카드(100)로부터 보안성 보호 영역의 데이터가 세션 키(Kd)를 이용하여 암호화된 상태로 출력 가능해진다.
단말(200)은, 카드(100)로부터 데이터가 출력 가능해진 것을 인식하고, 도 17에 나타내는 바와 같이, DAT0 라인(27)으로부터 세션 키(Kd)를 이용하여 암호화된 상태의 데이터를 취득하여(스텝 1306), 단말이 보관 유지하는 암호용 세션 키(Kd)를 이용하여 데이터를 복호화 하여, 접근 영역 지정 정보(1702)로 지정한 영역의 데이터를 얻는다.
다음에, 보안성 보호 영역에 대해서 기록을 실시할 때의 처리에 대해, 도 25를 참조하여 설명한다.
단말(200)로부터의 접근 영역 지정 명령의 송신(스텝 2001), 상기 명령에 대한 카드(100)로부터의 응답(스텝 2002), 및 접근 영역 지정 정보의 송신(스텝 2003)에 대해서는, 각각 도 17에 나타낸 보안성 보호 영역에 대한 판독 처리에 있어서의 스텝 (1301)~(1303)과 동일하므로 설명을 생략 한다. 스텝(2001)~스텝(2003)을 실시한 후, 단말(200)은, 카드(100)에 대해서 보안성 보호 영역 기록 명령을 송신한다(스텝 2004). 이 보안성 보호 영역 기록 명령은, 도 8에 표시되는 포맷으로 되어있으며, 6비트의 명령 코드(401)와 32비트의 명령 인수(402)로 구성된다.
보안성 보호 영역 판독 명령에 있어서의 명령 인수(402)는, 보안성 보호 영역 판독 명령을 송신한 단말(200)이, 접근 영역 지정 명령을 송신한 단말(200)과 동일한가, 또, 세션 키 공유 순서를 거쳐 에리어 번호(X)가 가리키는 영역에 대한 접근 권한이 있음이 확인된 단말(200)과 동일한가를 검증하기 위한 검증 데이 터(1904)로 구성된다.
이 검증 데이터의 생성 방법에 대해서는 보안성 보호 영역 판독 명령과 동일하기 때문에, 상세한 설명은 생략 한다.
단말(200)은, 검증 데이터 생성 처리를 이용하여 32비트의 검증 데이터를 생성하여, 보안성 보호 영역 기록 명령의 인수로서 사용한다.
이어서, 카드(100)의 명령 수신부(101)는, 단말(200)로부터 송신된 명령을 수신하고, 그것이 보안성 보호 영역 기록 명령임을 인식하여, 접근 영역 지정 정보(1702)에 관한 오류 플래그가 설정되어 있는 경우는, 응답으로서 오류를 돌려준다.
또, 접근 영역 지정 정보(1702)에 관한 오류 플래그가 설정되어 있지 않은 경우는, CMD 라인(22)으로부터 단말(200)에 대해서 정상 응답을 돌려줌(스텝 2005)과 동시에, 데이터 제어부(103)에 대해서 보안성 보호 영역 기록 명령을 수신하였음을 통지하고, 파라미터 검증부(108)에 명령 인수로서 받은 검증 데이터(504)를 건네준다.
다음에, 단말(200)은, 카드(100)의 CMD 라인(22)으로부터 보안성 보호 영역 기록 명령에 대한 응답을 수신하여, DAT0 라인(27)에 데이터의 입력을 실시한다. 여기서 DAT0 라인(27)에 입력하는 데이터는, 도 13의 스텝(907)에서 생성한 암호용 세션 키(Kd)로 암호화한 것이다. 또, 입력 데이터 사이즈는, 접근 영역 지정 정보(1702)에서 지정한 접근 데이터 사이즈와 동일하다.
이후에 카드에 의한 보안성 보호 영역에로의 데이터 격납 처리에 대해 설명 한다.
카드(100)의 파라미터 검증부(108)는, 파라미터 기억부(109)로부터, 접근 영역 지정 명령을 이용하여 단말(200)로부터 받아 기억해 둔 접근 영역 지정 정보(1702)를 판독하고, 접근 영역 지정 정보(1702)에 포함되는 에리어 번호 X(1801)에 대응하는, 도 15의 스텝(9059)에서 기억한 검증용 세션 키(Km)를 에리어 세션 키 관리부(111)로부터 취득한다.
이어서, 카드(100)의 파라미터 검증부(108) 내부의 검증 데이터 생성부(1903)는, 검증용 세션 키(Km)와 접근 영역 지정 정보(1702)를 이용하여, 도 24에 나타낸 검증 데이터 생성 처리를 실시하여, 검증 데이터(1904)를 생성한다. 또한, 검증 데이터 생성 처리에 대해서는, 도 23에서 나타낸 단말에 의한 검증 데이터 생성 처리와 동일하므로 상세한 설명은 생략 한다.
이어서, 카드(100)의 파라미터 검증부(108)는, 상기로 생성한 검증 데이터(1904)와, 단말(200)로부터 보안성 보호 영역 기록 명령의 인수를 이용하여 받은 검증 데이터(2101)를 비교하고, 일치하지 않으면 오류로 하여, 데이터 기록 처리로 이행하지 않는다. 일치한 경우는 다음의 데이터 기록 처리로 이행함을 데이터 제어부(103)에 통지한다.
이어서, 카드(100)의 데이터 제어부(103)는, 파라미터 기억부(109)로부터 접근 영역 지정 정보(1702)를 판독하여, 그 중에 포함되는 에리어 번호(X)를 취득하여, 에리어 세션 키 관리부(111)에서 에리어 번호에 대응하는 파일(FILE3)을 인식한다.
이어서, 카드(100)의 데이터 송수신부(102)는, 단말(200)로부터 입력된 데이터를 수신한다.
이어서, 카드(100)의 데이터 제어부(103)는, 파일(FILE3)이 애플리케이션 AP1용 영역(71) 안에 존재하므로, 애플리케이션 AP1용 영역(71)에 대응한 격납용 암호 키(Ks_1)을 취득한다.
이어서, 카드(100)의 데이터 제어부(103)는, 암복호부(107)에 대해서, 데이터 송수신부(102)가 수신한 데이터를 암호용 세션 키(Kd)로 복호화 하도록 요구한다.
이어서, 카드(100)의 데이터 제어부(103)는, 암복호부(107)에 대해서, 암복호부(107)가 복호화 한 데이터를 격납용 암호 키(Ks_1)로 암호화하도록 요구한다.
이어서, 카드(100)의 데이터 제어부(103)는, 접근 영역 지정 정보(1702)로부터 접근 개시 주소(1802)와 접근 데이터 사이즈(1803)를 취득하고, 파일(FILE3)로서 관리되고 있는 영역에 대해, 접근 개시 주소(1802)를 오프셋, 접근 데이터 사이즈(1803)를 기록 사이즈로서, 메모리 접근부(104)에 대해서 데이터 기록 요구를 실시한다.
상기와 같이 하여, 단말(200)이 입력한 세션 키(Kd)로 암호화된 데이터를 격납 키(Ks_1)로 암호화하여 플래시 메모리(105)에 격납한다.
본 실시형태에서는, 세션 키의 공유와 접근 가능 영역에 관한 정보의 공유를 1개의 명령으로 동시에 실시하고 있지만, 별개의 명령으로 실시해도 좋다.
본 실시형태에서는, 세션 키의 공유와 접근 가능 영역에 관한 정보의 공유를 1개의 명령으로 동시에 실시하고 있지만, 별개의 명령으로 실시해도 좋다.
이상, 본 발명과 같이, IC카드용 명령과 메모리 접근용 명령을 수신할 수 있는 메모리 카드에 있어서, 카드 애플리케이션이 이용하고, 통상은 카드 애플리케이션 경유로서만 접근 가능하며, 단말로부터의 접근이 제한되어 있는 보안성 보호 영역에 대해서, 카드 애플리케이션과 단말이 상호 인증하여, 카드 애플리케이션이 접근 가능 설정을 실시함으로써, 단말로부터 메모리 접근용 명령을 이용하여 접근이 가능해진다.
또, 카드 애플리케이션이 접근 가능 설정을 실시하기 위한 카드 애플리케이션 과 단말 간의 상호 인증은, 용도가 한정된 메모리 접근용 명령이 아니라, IC카드용 명령을 사용함으로써, 데이터의 보안성 레벨에 따라 상호 인증 방식을 유연하게 선택 가능해진다.
또, 메모리 접근용 명령에 포함되는 인수 사이즈가 32비트와 같이 작은 경우라도, 본 발명과 같이, 접근 영역 지정과 보안성 보호 영역 접근의 명령을 분리하여, 보안성 보호 영역 접근용 명령에 검증 데이터를 포함시킴으로써, 접근 영역 지정을 실시한 단말 애플리케이션과 보안성 보호 영역 접근용 명령을 발행한 단말 애플리케이션과 검증용 키를 보관 유지한 단말 애플리케이션이 동일한 것을 카드가 검증하는 일이 가능해진다.
또, 검증용 및 암호용 세션 키의 공유 처리를 보안성 보호 영역 접근별로 따로 실시함으로써, 보안성 보호 영역 접근에 포함시키는 검증 데이터로서 적당한 값을 설정하여 반복 부정 접근을 실시하는 공격에 대한 방어성을 높일 수가 있다.
또, 단말로부터 접근하고 싶은 파일을 카드에 통지하고, 거기에 에리어 번호를 할당하여 카드로부터 단말에 통지함으로써, 단말이 접근 가능한 영역을 설정할 수가 있다. 또, 복수의 파일에 대해서 실시함으로써, 동시에 복수의 파일에 대해서 접근 가능한 상태를 만들 수가 있다.
(실시형태 2)
본 실시형태에서는, 단말이, 영역 지정 명령으로 지정하는 에리어 번호를 미리 인식하고 있는 경우의 순서를 설명한다.
우선, 카드내 모듈 구성에 대해 도 26을 이용해 설명한다. 또한, 도 26의 카드(500)의 단자 구성은, 도 4에 나타낸 것과 동일하기 때문에, 그 도면 표시 및 설명은 생략한다.
카드(500)내 모듈은, CMD 라인에 접속되어 명령의 수신 및 응답의 송신을 실시하는 처리 명령 수신 수단(501)과, 데이터를 격납하는 기억 영역(506)과, 기억 영역(506)에 대한 접근 처리를 실시하는 기억 영역 접근 수단(505)과 DAT 라인에 접속되어, 기억 영역 접근 수단(505)이 판독한 데이터를 외부 기기에 송신하는 데이터 송신 수단(502)과, 마찬가지로 DAT 라인에 접속되어, 외부 기기로부터 데이터를 수신하는 데이터 수신 수단(503)과 처리 명령 수신 수단(501)이 받은 지정 정보를 검증하는 지정 정보 검증 수단(504)으로 구성된다.
이어서, 단말(600)내 모듈 구성에 대해, 도 27을 이용해 설명한다.
단말(600)내 모듈은, 카드(500)에 대한 명령 송신과 응답 수신을 실시하는 처리 명령 송신 수단(604)과, 카드(500)에 대한 데이터 송신을 실시하는 데이터 송 신 수단(605)과, 카드(500)로부터의 데이터 수신을 하는 데이터 수신 수단(606)과, 접근하는 영역을 결정하는 지정정보 결정수단(601)과 지정정보로부터 검증정보를 생성하는 검증정보 생성수단(602)과, 카드(500)에 송신하는 데이터 및 카드(500)로 부터 수신하는 데이터를 격납하는 데이터 기억수단(603)으로 구성된다.
이어서, 단말(600)로부터 카드(500)의 보안성 보호영역에 대해서 접근을 실시할 때의 처리에 대해, 상기 도 26및 도 27과 도 28에 나타내는 흐름도를 이용해 설명한다.
우선, 단말(600)은 지정 정보 결정 수단(601)으로 판독(read)접근 또는 기록(Write)접근을 실시할 영역을 결정하고(스텝 S2601), 접근영역 지정정보를 생성한다(스텝 S2602). 이어서, 이 접근 영역 지정 정보를 데이터 기억 수단(603)에 격납하고 영역지정 명령을 처리명령 송신수단(604)으로부터 카드(500)에 송신한다(스텝 S603).
영역 지정 명령의 데이터부의 일례를 도 29에 나타낸다.
DAT 라인(27)에 입력하는 데이터는 512바이트 단위로 되어 있으며, 영역 지정 명령의 데이터부는, 접근영역 지정정보(2702)의 길이 필드(2701)와, 접근영역 지정 정보 필드(2702)의 합계 길이가 512바이트에 못 미친 경우, 패딩(2703)이 추가된다. 본 실시형태에서는, 길이 필드(2701)는 2바이트의 길이를 가지며, 접근영역 지정정보(2702)는, 도 30에 나타내는 바와 같이, 1바이트의 에리어 번호(2801), 3바이트의 접근 개시 주소(2802), 및 3바이트의 접근 데이터 사이즈(2803)로 구성된다. 즉 합계 9바이트여서 512바이트에 못 미치기 때문에, 503바이트의 패 딩(2703)이 부가된다.
이어서, 도 28로 돌아와, 카드(500)는, 처리명령 수신수단(501)으로 영역지정 명령을 수신하면(스텝 S2604), 지정정보 검증수단(504)으로 접근영역 지정정보(2702)를 확인하고, 지정한 영역이 올바른지 어떤지를 에리어 번호(2801)에 대응하는 영역이 존재하는지, 접근 개시 주소(2802) 및 접근 데이터 사이즈(2803)가 에리어 번호(2801)에 나타난 영역 범위에 들어가 있는지를 기초로 판단한다(스텝 S2605). 지정정보 검증수단(504)은, 지정한 영역이 올바르지 않으면, 영역지정 명령을 무효로서 취급한다(스텝 S2606) . 지정한 영역이 올바른 경우, 접근영역 지정정보(2702)를 보존하고, 접근영역 지정정보(2702)와, 단말(600)과 카드(500) 사이에서 공유하고 있는 키를 이용하여, 비교 정보를 생성한다(스텝 S2607).
비교 정보의 생성 방법의 일례를 도 29에 나타낸다.
검증 데이터 생성부(2902)는 암호 연산을 실시하는 모듈로서, 본 실시형태 에서는 DES-MAC로 불리는 MAC(Message Authentication Code)를 생성하는 처리를 한다. 입력은, 영역지정 명령의 데이터부(2704)와 단말(600) 사이에서 공유하고 있는 검증용 키(2901)이다. DES-MAC의 출력 결과는 64비트이지만, 본 실시형태에서는, 비교 대상이 되는 단말(600)로부터 송신되는 검증 정보가 32비트이기 때문에, 그 출력을 줄인(2903)것인 전반 32비트만을 비교 정보(2904)로서 이용한다. 또, 검증용 키(2901)는, 에리어 번호에 대응하여 개별적이면서도 또한 고정된 키이어도 좋고, 에리어 번호에 관계없이 1개의 키여도 좋다.
또, 도 32에 나타내는 바와 같이, 카드(700) 내부에 검증용 키 공유수 단(701)을 구비하고, 도 33에 나타내는 바와 같이 단말(800) 내부에 검증용 키 공유수단(801)을 구비하여 카드(700)과 단말(800) 간에서, 보안성 보호 영역에의 접근을 실시할 때마다 검증용 키를 변경해도 좋다. 또한, 도 32및 도 33의 각 구성에 있어서, 도 26및 도 27에 나타낸 구성과 동일한 부분에는 동일한 부호를 붙이고 있다.
다음에, 검증용 키의 공유방법에 대해 상기 도 32및 도 33과 도 34에 나타내는 순서 및 도 35에 나타내는 검증용 키 생성방법을 이용하여 설명한다.
도 34에 있어서, 단말(800)은 검증용 키 공유수단(801)에 있어서, 난수(Ra)를 생성하고, 이 난수(Ra)를 포함한 세션 키 공유 요구 명령 APDU를 작성하여, 처리 명령 송신수단(604)으로부터 APDU 송신 명령을 카드(700)에 송신함과 동시에(스텝 S3201), 데이터 송신수단(605)으로부터 세션키 공유요구 명령 APDU를 카드(700)에 송신한다(스텝 S3202).
이어서, 카드(700)는 처리명령 수신수단(501)으로 APDU 송신명령을 단말(800)로부터 수신하고, 데이터 수신수단(503)으로 단말(800)로부터 수신한 세션 키 공유 요구 명령 APDU를 검증용 키 공유 수단(701)에 건네준다.
검증용 키 공유수단(801)으로는, 난수(Rb)를 생성하여, 도 35에 나타내는 바와 같이, 단말(800)로부터 수신한 난수(Ra)와 난수(Rb)를 결합한 것에 대해, 미리 단말(800)과의 사이에서 공유하고 있는 마스터 키(K)를 이용하여 암호화 처리(DES-MAC 처리)를 실시하여, 세션 키(R)를 생성한다. 이어서, 카드(700)는, 난수(Rb)를 포함한 응답 APDU를 생성한다.
이어서, 단말(800)은, 처리명령 송신수단(604)으로부터 APDU 수신 명령을 카드(700)에 송신한다(스텝 S3203).
이어서, 카드(700)는, 처리명령 수신수단(501)으로 APDU 수신 명령을 단말(800)로부터 수신하고, 방금 전에 작성한 난수(Rb)를 포함한 응답 APDU를 데이터 송신수단(502)으로부터 단말(800)에 송신한다(스텝 S3204).
이어서, 단말(800)은, 데이터 수신수단(606)을 이용하여 응답 APDU를 카드(700)로부터 수신하고, 검증용 키 공유수단(801)에 건네준다. 검증용 키 공유 수단(801)은, 도 35에 나타내는 바와 같이, 방금전에 자신이 생성한 난수(Ra)와 응답 APDU에 포함되는 난수(Rb)를 결합한 것에 대해, 미리 카드(700)와의 사이에서 공유하고 있는 마스터 키(K)를 이용하여 암호화 처리(DES-MAC 처리)를 실시하고, 세션 키(R)를 생성한다.
이상이, 보안성 보호 영역에의 접근을 실시할 때마다 세션 키를 변경할 경우의, 단말(800)과 카드(700) 사이에 있어서의 검증용 키 공유 순서이다.
또한, 본 실시형태에서는 DES-MAC를 이용하고 있지만, 당연히 다른 암호 알고리즘을 이용해도 좋다. 또, 단말(800)이 정당한지, 즉 동일한 키를 가지고 있는지를 검증할 필요가 없는 경우, 예를 들면, 영역 지정 명령의 접근 영역 지정 정보(2702)가 단말이 의도한 것으로 되어 있는지에 대한 검증만 실시할 경우는, 암호 처리를 이용하지 않고 , 도 36에 나타내는 등의 검증 데이터 생성부(3401)로 SHA-1 연산이나, MD5 알고리즘을 이용한 해시 연산이나 체크 섬 연산의 결과를 비교 정보로서 이용할 수가 있다. 이러한 알고리즘을 이용한 경우도, 비교 대상이 32 비 트 길이라면, 출력 결과를 줄여서(3402), 그 일부인 32비트만을 비교 정보(3403)로 한다.
이어서, 도 28으로 돌아와, 단말(800)은, 검증 데이터 생성부에서 접근 영역 지정 정보(2702)와, 단말(800)과 카드(700) 사이에서 공유하고 있는 검증용 키(2901)로부터 검증 정보를 생성한다(스텝 S2608).
이 검증 정보의 생성에 대해, 도 37에 나타낸다. 검증 정보 생성부(3502)로 검증용 키(3501)와 영역 지정 명령의 데이터부(2704)를 이용하여 암호처리를 실시하여, 검증 정보(3504)를 생성한다. 생성 방법은, 도 31에서 나타낸 카드(700)에 있어서의 비교 정보(2904)의 생성 방법과 완전히 동일하다.
이어서, 도 28으로 돌아와, 단말(800)은, 생성한 검증 정보(3504)를 접근 명령(판독)의 인수에 격납시켜, 처리명령 송신수단(604)으로부터 접근 명령을 송신한다(스텝 S609).
접근 명령은, 도 38로 나타낸 포맷으로 되어 있으며, 명령 코드(3601)와 명령 인수(3602)의 길이는 각각 6비트와 32비트이다. 접근 명령에서는, 명령 인수(3602)에 검증 정보(3504)를 격납한다.
이어서, 도 28로 돌아와, 카드(700)는, 처리명령 수신수단(501)으로 접근 명령(판독)을 수신하고(스텝 S2610), 지정 정보 검증 수단(504)으로 사전에 영역 지정 명령이 정상적으로 완료했는지 어떠했는지를 확인한다(스텝 S2611). 영역 지정 명령이 미수신이거나, 또는 지정한 영역이 올바르지 않은 등의 이유로 정상적으로 완료하고 있지 않을 경우는, 접근 명령을 오류로서 단말(800)에 통지한다(스텝 S2612). 이 때, 단말(800)은, 카드(700)로부터 오류를 수신한다(스텝 S2612A).
사전에 영역 지정 명령이 정상적으로 완료하고 있는 경우, 지정 정보 검증 수단(504)은, 방금전에 카드(700)가 작성한 비교 정보(2904)와 접근 명령의 명령 인수에 격납된 검증 정보(3504)를 비교한다(스텝 S2613). 비교한 결과, 검증 정보(3504)가 비정상이라면, 접근 명령을 오류로서 단말(800)에 통지한다(스텝 S2614). 이 때, 단말(800)은, 카드(700)로부터 오류를 수신한다(스텝 S2614A). 검증 정보가 정상이라면, 지정 정보 검증 수단(5044)은 기억 영역 접근 수단(505)에 접근영역 지정정보(2702)를 통지하고, 기억영역 접근수단(505)은 기억 영역(506)내의 접근 영역 지정 정보(2702)로 지정된 영역으로부터 데이터를 판독하여, 데이터 송신 수단(502)으로부터 데이터를 단말(800)에 송신한다(스텝 S2615).
이어서, 단말(800)은, 카드(700)로부터 송신된 판독 데이터를 데이터 수신 수단(606)으로 수신하여(스텝 S2616), 데이터 기억 수단(603)에 격납한다.
이상과 같이, 메모리 접근용 명령에 포함되는 인수 사이즈가 32비트와 같이 작은 경우에서도, 본 발명과 같이, 접근 영역 지정과 보안성 보호 영역 접근의 명령을 분리하여, 보안성 보호 영역 접근용 명령에 검증 데이터를 포함시킴으로써, 접근 영역 지정을 실시한 단말 애플리케이션과 보안성 보호 영역 접근용 명령을 발행한 단말 애플리케이션과 검증용 키를 보관 유지한 단말 애플리케이션이 동일한 것을 카드가 검증할 수 있게된다.
또한, 검증 데이터 생성을 위해, 영역 지정 정보와 검증용 키에 추가하여, 카드로부터 출력되는 난수 정보를 이용하는 방법을, 도 39에 나타내는 순서를 이용 하여 이하에 설명한다. 또, 도 39에 나타내는 각 스텝에 있어서, 도 28에 나타낸 순서의 스텝과 동일한 스텝에는 동일 부호를 붙이며, 그 설명은 생략한다.
도 39에 나타내는 바와 같이, 단말(800)로부터, 난수 취득 명령을 단말(800)로부터 카드(700)에 송신하고(스텝 S3701), 카드(700)가 난수(T)를 생성하여, 이 난수(T)를 카드(700) 내부의 지정 정보 검증 수단(504)에 보관 유지함과 동시에, 데이터 송신 수단(502)로부터 단말(800)에 송신한다(스텝 S3702). 단말(800)은, 카드(700)로부터 송신된 난수(T)를 데이터 수신 수단(606)으로 수신한다(스텝 S3703).
난수(T)를 검증 정보 생성 처리에 이용하는 경우의 카드(700)에 있어서의 비교 정보의 생성 처리(스텝 S2607), 및, 단말(800)에 있어서의 검증 정보의 생성 처리(스텝 S2608)는, 각각 도 40 및 도 41에 나타내는 바와 같이, 난수(T)와 영역 지정 명령의 데이터부(2704)를 결합한 것에 대해 암호 처리를 실시하고, 비교 정보(3804) 및 검증 정보(3904)를 출력한다.
이상과 같이, 검증 정보 생성에 난수 정보를 이용함으로써, 동일한 영역 지정 정보와 검증용 키를 이용하여 검증 정보를 작성하여도, 난수 정보가 변화함으로써 출력되는 검증 정보가 변화하기때문에, 보다 보안성 강도를 향상시킬 수가 있다.
(실시형태 3)
본 실시형태에서는, 키의 공유 처리를 포함한 순서의 예를 설명한다.
우선, 카드내 모듈 구성에 대해 도 42를 이용해 설명한다.
또한, 카드의 단자 구성은, 도 4에 나타낸 것과 동일하기 때문에, 그 도면 표시 및 설명은 생략 한다.
카드내 모듈은, CMD 라인에 접속되어, 명령의 수신 및 응답의 송신을 실시하는 처리명령 수신수단(901)과, 데이터를 격납하는 기억 영역(906)과, 기억영역(906)에 대한 접근 처리를 실시하는 기억 영역 접근 수단(905)과, DAT 라인에 접속되어 기억 영역 접근 수단(905)이 판독한 데이터를 외부 기기에 송신하는 데이터 송신 수단(902)과, 마찬가지로 DAT 라인에 접속되어, 외부 기기로부터 데이터를 수신하는 데이터 수신 수단(903)과, 단말(1000)과의 사이에서 보안성 보호 영역 접근 명령에 의한 접근이 가능한 영역에 관한 정보를 공유하는 가능영역정보 공유부(907)와, 데이터 수신 수단(903)을 경유하여 받은 지정 정보를, 검증용 키를 이용하여 검증하는 지정정보 검증수단(904)으로 구성된다.
이어서, 단말내 모듈 구성에 대해, 도 43을 이용해 설명한다.
단말내 모듈은, 카드(900)에 대한 명령 송신과 응답 수신을 실시하는 처리 명령 송신 수단(1004)과, 카드(900)에 대한 데이터 송신을 실시하는 데이터 송신 수단(1005)과, 카드(900)로부터의 데이터 수신을 실시하는 데이터 수신 수단(1006)과, 접근하는 영역을 결정하는 지정 정보 결정 수단(1001)과, 보안성 보호 영역 접근 명령에 의한 접근이 가능한 영역에 관한 정보를 공유하는 가능 영역 정보 공유부 (1007)와, 지정 정보로부터 검증 정보를 생성하는 검증정보 생성수단(1002)과, 카드(900)에 송신하는 데이터 및 카드(900)로부터 수신하는 데이터를 격납하는 데이터 기억 수단(1003)으로 구성된다.
이어서, 단말(1000)로부터 카드(900)내의 보안성 보호 영역에 대해서 접근을 실시할 때의 처리에 대해, 상기 도 42및 도 43과 도 44및 도 45에 나타내는 순서를 이용해 설명한다.
우선, 단말(1000)은, 지정 정보 결정 수단(1001)으로, 판독(read)접근 또는 기록 (write)접근을 실시할 영역(A)를 결정하고(스텝 S4201), 가능 영역 정보 공유부(1007)로, 상기 영역(A)에 대한 보안성 보호 영역 접근 명령에 의한 접근을 허가하도록 요구하는 명령 APDU인 영역 개방 요구 명령을 처리 명령 송신 수단(1004)으로부터 카드(900)에 송신한다(스텝 S4202). 영역 개방 요구 명령은, 단말(1000)의 공개 키를 나타내는 식별자(Info_PubH)와 영역(A)를 나타내는 식별자(a)를 카드( 900)의 공개 키( PubS)로 암호화한 데이터를 포함한다. 또한, 명령 APDU의 송신 방법은 실시형태 1에서 설명한 방법과 동일하므로, 상세한 설명은 생략 한다.
이어서, 영역 개방 요구 명령을 수신한 카드(900)는, 가능 영역 정보 공유 수단(907)으로 명령에 포함되는 암호화 데이터를 카드(900) 자신의 비밀키(PriS)로 복호화 한다(스텝 S4203). 그 다음에, 단말(1000)의 공개 키 식별자(Info_PubH)로부터 명령을 송신한 단말(1000)을 식별하여, 식별자(a)로 표시되는 영역(A)의 접근 권한을 참조함으로써, 해당단말(1000)이 영역(A)에 대한 접근이 허가되어 있는지 어떤지를 확인한다(스텝 S4205).
접근이 허가되어 있지 않은 경우는, 영역 개방 실패를 나타내는 데이터를 응답 APDU로서 데이터 송신 수단(902)으로부터 단말(1000)에 송신한다(스텝 S4206).
접근이 허가되어 있는 경우는, 영역(A)의 식별자(a)와 영역(A)에 할당한 에 리어 번호(X)를, 지정 정보 검증 수단(904)내에 가지는, 보안성 보호 영역 접근 명령에 의한 접근 가부를 설정하는 접근 유효 테이블(4400)(도 46 참조)에 등록한다(스텝 S4207). 이어서, 영역(A)에 대응한 검증용 키(R)를 접근 유효 테이블(4400)에 등록한다(스텝 S4208).
이어서, 에리어 번호(X), 영역(A)의 사이즈를 단말(1000)의 공개 키(PubH)로 암호화하여, 응답 APDU로서 데이터 송신 수단(902)으로부터 단말(1000)에 송신한다(스텝 S4209).
이어서, 단말(1000)은, APDU 수신 명령을 처리 명령 송신 수단(1004)으로부터 카드(900)에 송신하고, 데이터 수신 수단(1006)을 이용하여 응답 APDU를 카드(900)로부터 취득한다(스텝 S4210). 또한, 응답 APDU의 취득 방법은 실시형태 1에서 설명한 방법과 동일하므로, 상세한 설명은 생략 한다.
이어서, 단말(1000)의 가능 영역 정보 공유 수단(1007)은, 응답 APDU에 포함되는 암호 데이터를 단말(1000) 자신의 비밀 키(PriH)로 복호화 하여(스텝 S4211), 에리어 번호(X), 에리어 번호(X)로 표시되는 영역(A)의 사이즈를 얻는다. 이어서, 단말(1000)은 영역(A)에 대응한 세션 키를 검증 정보 생성 수단(1002)에 등록한다. 에리어 번호(X)는 접근 영역 지정 정보를 생성하기 위해서 지정 정보 결정 수단(1001)에 등록한다(스텝 S4212). 이후, 도 45의 흐름도로 옮겨간다.
이어서, 단말(1000)은 지정 정보 결정 수단(1001)으로 가능 영역 정보 공유 수단(1007)에 의해 등록된 에리어 번호(X)를 이용하여 접근 영역 지정 정보를 생성한다(스텝 S4213). 이어서, 이 접근 영역 지정 정보를 데이터부(2704)(도 29 참 조)에 격납하고, 영역 지정 명령을 처리 명령 송신 수단(1004)으로부터 카드(900)에 송신한다(스텝 S4214). 또한, 영역 지정 명령에 있어서의 접근 영역 지정 정보는 실시형태 2와 동일하므로, 상세한 설명은 생략한다.
이어서, 카드(900)는, 처리 명령 수신 수단(901)으로 단말(1000)로부터 영역 지정 명령을 수신하면(스텝 S4215), 지정 정보 검증 수단(904)으로 접근 영역 지정 정보를 확인하고, 에리어 번호(X)가 접근 유효 테이블(4400)에 등록되어 있는지, 도 30에 나타낸 접근 개시 주소(2802) 및 접근 데이터 사이즈(2803)를 기초로 영역(A)의 범위에 들어 있는지를 판단한다(스텝 S4216). 지정 정보 검증 수단(904)은, 지정한 영역이 올바르지 않으면, 영역 지정 명령을 무효로서 취급한다(스텝 S4217). 지정한 영역이 올바른 경우, 접근 영역 지정 정보를 보존하고, 접근 영역 지정 정보와 접근 유효 테이블(4400)에 등록된 영역(A)에 대응한 검증용 키(R)를 이용하여, 비교 정보를 생성한다(스텝 S4218). 또한, 비교 정보의 생성 방법은 실시형태 2와 동일하므로, 상세한 설명은 생략 한다.
이어서, 단말(1000)은, 검증 정보 생성 수단(1002)으로 접근 영역 지정 정보와 가능 영역 정보 공유부(1007)에 의해 등록된 세션 키(R)를 이용하여 검증 정보를 생성하여(스텝 S4219), 접근 명령(판독)의 인수에 넣어, 처리 명령 송신 수단(1001)으로부터 접근 명령을 카드(900)에 송신한다(스텝 S4220). 또한, 검증 정보의 생성 방법 및 접근 명령의 송신 방법은 실시형태 2와 동일하므로, 상세한 설명은 생략 한다.
이어서, 카드(900)는, 처리 명령 수신 수단(901)으로 접근 명령(판독)을 수 신하고(스텝 S4221), 지정 정보 검증 수단(904)으로 사전에 영역 지정 명령이 정상적으로 완료했는지 어떠했는지를 확인한다(스텝 S4222). 영역 지정 명령이 미수신이거나, 또는 지정한 영역이 올바르지 않은 등의 이유로 정상적으로 완료해 있지 않는 경우는, 접근 명령을 오류로서 단말(1000)에 통지한다(스텝 S4223). 이 때, 단말(1000)은, 카드(900)로부터 오류를 수신한다(스텝 S4223A).
사전에 영역 지정 명령이 정상적으로 완료해 있는 경우, 지정 정보 검증 수단(904)은, 방금전에 카드(900)가 작성한 비교 정보와 접근 명령의 인수에 격납된 검증 정보를 비교한다(스텝 S4224). 비교한 결과, 검증 정보가 비정상이라면, 접근 명령을 오류로서 단말(1000)에 통지한다(스텝 S4225). 이 때, 단말(1000)은, 카드(900)로부터 오류를 수신한다(스텝 S4225A).
검증 정보가 정상이라면, 지정 정보 검증 수단(904)는, 기억 영역 접근 수단(905)에 지정 정보를 통지하고, 기억 영역 접근 수단(905)은 기억 영역(906)내의 영역 지정 명령으로 지정된 영역으로부터 데이터를 판독하여, 데이터 송신 수단(902)으로부터 데이터를 단말(1000)에 송신한다(스텝 S4226).
이어서, 단말(1000)은, 카드(900)로부터 송신된 판독 데이터를 데이터 수신 수단(1006)으로 수신하여, 데이터 기억 수단(1003)에 격납한다(스텝 S4227).
이어서, 단말(1000)은, 영역(A)에 대한 보안성 보호 영역 접근 명령을 이용한 접근이 불필요해 졌을 때, 영역(A)에 대응하는 에리어 번호(X)를 무효화하기 위한 영역 무효 명령 APDU를 작성하여, 데이터 송신 수단(1005)으로부터 카드(900)에 송신한다(스텝 S4228).
이어서, 영역 무효 명령 APDU를 수신한 카드(900)는, 접근 유효 테이블(4400)을 검색하고, 에리어 번호(X)가 발견되면, 테이블 내의 에리어 번호(X)에 할당된 영역 식별자(a), 세션 키(R)와 함께 에리어 번호(X)의 등록을 삭제하고, 에리어 번호(X)를 지정한 영역(A)에 대한 보안성 보호 영역 접근 명령을 이용한 접근을 무효화한다(스텝 S4229).
이상과 같이, 보안성 보호 영역내의 어느 영역에 대하여, 필요한 경우만 영역 개방 요구에 의해 보안성 보호 영역 접근 명령을 이용한 접근을 가능한 상태로 하고, 또 불필요해졌을 때는 영역 무효 요구에 의해, 그 영역에 대한 접근을 불가능하게 함으로써, 보안성 강도를 향상시킬 수가 있다.
본 명세서는, 2003년 7월 16 일에 출원한 특허 출원 2003-275672 및 2004년 7월 2 일에 출원한 특허 출원 2004-197453에 기초하고 있는 것이다. 이 내용은 모두 여기에 포함시켜 놓는다.