KR20190058302A - 반도체 장치, 인증 시스템 및 인증 방법 - Google Patents

반도체 장치, 인증 시스템 및 인증 방법 Download PDF

Info

Publication number
KR20190058302A
KR20190058302A KR1020180138975A KR20180138975A KR20190058302A KR 20190058302 A KR20190058302 A KR 20190058302A KR 1020180138975 A KR1020180138975 A KR 1020180138975A KR 20180138975 A KR20180138975 A KR 20180138975A KR 20190058302 A KR20190058302 A KR 20190058302A
Authority
KR
South Korea
Prior art keywords
data
authentication
security module
hardware security
error detection
Prior art date
Application number
KR1020180138975A
Other languages
English (en)
Inventor
타다아키 타니모토
다이스케 모리야마
요시타카 타키
Original Assignee
르네사스 일렉트로닉스 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 르네사스 일렉트로닉스 가부시키가이샤 filed Critical 르네사스 일렉트로닉스 가부시키가이샤
Publication of KR20190058302A publication Critical patent/KR20190058302A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/34User authentication involving the use of external additional devices, e.g. dongles or smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • G06F21/445Program or device authentication by mutual authentication, e.g. between devices or programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3234Cryptographic 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 additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Quality & Reliability (AREA)

Abstract

[과제] 기능 안전이 고려된 안전한 데이터 수수(授受)를 실시할 수 있는 반도체 장치를 제공한다.
[해결수단] 반도체 장치는, 인증 처리를 실시하는 하드웨어 시큐리티 모듈 회로와, 적어도 하드웨어 시큐리티 모듈 회로에서 처리되는 제1의 데이터에 대하여 에러 검출 처리를 실시하기 위하여 사용되는 에러 검출 회로를 가진다. 에러 검출 회로에 관한 메모리 영역은, 적어도 제1의 데이터에 대하여 에러 검출 처리가 실시될 때에, 하드웨어 시큐리티 모듈 회로로부터만 액세스 가능하게 되도록 구성되어 있다.

Description

반도체 장치, 인증 시스템 및 인증 방법{Semiconductor device, authentication system, and authentication method}
본 발명은 반도체 장치, 인증 시스템 및 인증 방법에 관한 것으로, 예를 들면, 하드웨어 시큐리티 모듈 회로를 갖는 반도체 장치, 인증 시스템 및 인증 방법에 관한 것이다.
기기 간에 데이터를 수수(授受)하는 경우에 있어서 안전한 데이터 로드 방식이 제안되고 있다. 예를 들면, 특허문헌 1은 공개 키·비밀 키에 의한 디지털 서명 및 MAC(Message Authentication Code; 메시지 인증 코드)값을 데이터에 부가한 데이터 구조와, 본 구조를 이용하여 데이터 로드 시에 인증 처리 또는 데이터 개찬(改竄) 유무 확인을 실시하는 방법을 개시한다. 또한, 특허문헌 2는 차재(車載) 네트워크에서의 부정한 프레임을 검지(檢知)하기 위한 검지 룰(rule)의 갱신을 가능하게 하는 기술을 개시한다.
또한, 오류 부호 정정 기술을 취입(取入)한 암호 복호 방식이 제안되어 있다. 특허문헌 3은 오류 부호 정정 기술을 취입한 암호 복호 방식을 개시한다. 특허문헌 3에 있어서는 평문(平文)에 오류 부호화 처리를 실시하고, 이 오류 부호화 데이터에 대하여 정정 가능한 범위에서의 랜덤 비트 에러(random bit error)를 일으킨 후에 암호화하여 암호문을 작성한다. 또한, 이 암호문을 복호하고, 복호화 후에 오류 부호 정정을 실시하여, 평문을 얻는다.
[특허문헌 1] 일본 특허 제4856080호 공보 [특허문헌 2] 일본 특허공개 2016-134914호 공보 [특허문헌 3] 일본 특허공개 2002-77135호 공보
상기 특허문헌 1 및 2에 따른 기술에서는, 통신에 있어서의 데이터 오류 또는 하드웨어 고장으로 인한 데이터 오류에 대한 유무 확인 또는 오류 부호와 같은, 기능 안전면에의 대응에 관하여 고려되고 있지 않다. 또한, 상기 특허문헌 3에 따른 기술에서는, 오류 부호 정정은 암호 복호법에의 대책을 목적으로 도입되어 있고, 기능 안전면에의 대응을 위하여 이루어진 것은 아니다. 따라서, 상기 특허문헌에 따른 기술에서는, 기능 안전이 고려된 안전한 데이터 수수를 실시할 수 없을 우려가 있다.
그 밖의 과제와 신규한 특징은, 본 명세서의 기술 및 첨부 도면으로부터 명백해질 것이다.
일 실시형태에 따르면, 반도체 장치는, 인증 처리를 실시하는 하드웨어 시큐리티 모듈 회로와, 적어도 상기 하드웨어 시큐리티 모듈 회로에서 처리되는 제1의 데이터에 대하여 에러 검출 처리를 실시하기 위하여 사용되는 에러 검출 회로를 가지고, 상기 에러 검출 회로에 관한 메모리 영역은, 적어도 상기 제1의 데이터에 대하여 상기 에러 검출 처리가 실시될 때에, 상기 하드웨어 시큐리티 모듈 회로로부터만 액세스 가능하도록 구성되어 있는 반도체 장치이다.
또한, 상기 실시형태의 장치를 방법이나 시스템으로 대체 표현한 것, 그 장치 또는 그 장치의 일부 처리를 컴퓨터로 실행시키는 프로그램, 그 장치를 구비한 촬상 장치 등도, 본 양태로서는 유효하다.
상기 일 실시형태에 따르면, 기능 안전이 고려된 안전한 데이터 수수를 실시할 수 있다.
[도 1] 실시형태 1에 따른 반도체 장치의 하드웨어 구성을 나타내는 도면이다.
[도 2] 실시형태 1에 따른 하드웨어 시큐리티 모듈 회로의 하드웨어 구성을 나타내는 도면이다.
[도 3] 실시형태 1에 따른, 액세스 제어 회로를 가지는 반도체 장치를 나타내는 도면이다.
[도 4] 실시형태 1에 따른, 액세스 제어 회로를 가지는 반도체 장치를 나타내는 도면이다.
[도 5] 도 3 및 도 4에 나타낸 액세스 제어 회로에 설치되는 속성 제어 스테이트 머신을 나타내는 도면이다.
[도 6] 도 5에 나타낸 속성 제어 스테이트 머신에 의해 실현되는 상태천이도(狀態遷移圖)이다.
[도 7] (R, W, E) 속성 제어 기구와 메모리 공간과의 접속 구성의 일례를 나타낸다.
[도 8] 실시형태 1에 따른 하드웨어 시큐리티 모듈 회로, 에러 검출 회로에 설치된 액세스 제어 회로, 및 CPU에 설치된 액세스 제어 회로의 접속 구성을 나타내는 도면이다.
[도 9] 도 4에 나타낸 복수의 구성 요소에 액세스 제어 회로가 설치되는 경우의 데이터 판독 유닛 및 명령 페치 유닛의 구성을 나타내는 도면이다.
[도 10] 실시형태 1에 따른 데이터 수수 시퀀스가 실시되는 인증 시스템을 나타내는 도면이다.
[도 11] 실시형태 1에 따른 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 12] 실시형태 1에 따른 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 13] 실시형태 1에 따른 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 14] 실시형태 1의 변형예에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 15] 실시형태 1의 변형예에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 16] 실시형태 1의 변형예에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 17] 실시형태 1의 변형예에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 18] 실시형태 1의 변형예에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 19] 실시형태 1의 변형예에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 20] 실시형태 2에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스이다.
[도 21] 실시형태 2에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스이다.
[도 22] 실시형태 2에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스이다.
[도 23] 실시형태 2의 변형예에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 24] 실시형태 2의 변형예에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 25] 실시형태 2의 변형예에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 26] 실시형태 2의 변형예에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 27] 실시형태 2의 변형예에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 28] 실시형태 2의 변형예에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 29] 실시형태 3에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 30] 실시형태 3에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 31] 실시형태 3에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 32] 실시형태 3에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 33] 실시형태 3에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
[도 34] 실시형태 3에 따른 인증 시스템에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다.
이하, 실시형태에 관하여, 도면을 참조하면서 설명한다. 설명의 명확화를 위하여, 이하의 기재 및 도면은 적절히 생략 및 간략화가 이루어져 있다. 또한, 각 도면에 있어서 동일 요소에는 동일 부호가 부여되어 있으며, 필요에 따라 중복 설명은 생략되어 있다.
이하의 실시형태에 있어서는 편의상 그 필요가 있을 때는, 복수의 섹션 또는 실시형태로 분할하여 설명하지만, 특별히 명시한 경우를 제외하고, 그들은 서로 무관계한 것이 아니라, 한쪽은 다른 쪽의 일부 또는 전부의 변형예, 응용예, 상세 설명, 보충 설명 등의 관계에 있다. 또한, 이하의 실시형태에 있어서, 요소의 수 등(개수, 수치, 양, 범위 등을 포함한다)으로 언급하는 경우, 특별히 명시한 경우 및 원리적으로 명백하게 특정의 수(數)에 한정되는 경우 등을 제외하고, 그 특정의 수에 한정되는 것이 아니라, 특정의 수 이상이어도 이하이어도 된다.
또한, 이하의 실시형태에서, 그 구성요소(동작 스텝 등도 포함한다)는, 특별히 명시한 경우 및 원리적으로 명백하게 필수이라고 생각되는 경우 등을 제외하고, 반드시 필수인 것은 아니다. 동일하게, 이하의 실시형태에서, 구성요소 등의 형상, 위치관계 등으로 언급할 때는, 특별히 명시한 경우 및 원리적으로 명백하게 그렇지 않다고 생각되는 경우 등을 제외하고, 실질적으로 그 형상 등에 근사 또는 유사한 것 등을 포함하는 것으로 한다. 이 점은, 상기 수 등(개수, 수치, 양, 범위 등을 포함한다)에 관해서도 동일하다.
또한, 다양한 처리를 실시하는 기능 블록으로서 도면에 기재된 각 요소는, 하드웨어적으로는, CPU(Central Processing Unit), 메모리, 그 밖의 회로로 구성할 수 있으며, 소프트웨어적으로는, 메모리에 로드된 프로그램 등에 의해 실현된다. 따라서, 이들의 기능 블록이 하드웨어만, 소프트웨어만, 또는 그것들의 조합에 의해 다양한 형태로 실현될 수 있는 것은 당업자에게 이해될 것이며, 어느 하나에 한정되는 것은 아니다.
또한, 상술한 프로그램은, 다양한 타입의 비(非) 일시적인 컴퓨터 판독 가능 매체를 이용하여 저장되고, 컴퓨터에 공급할 수 있다. 비 일시적인 컴퓨터 판독 가능 매체는 다양한 타입의 실체가 있는 기록 매체를 포함한다. 비 일시적인 컴퓨터 판독 가능 매체의 예는, 자기 기록 매체(예를 들면 플렉시블 디스크, 자기 테이프, 하드 디스크 드라이브), 광자기 기록 매체(예를 들면 광자기 디스크), CD-ROM(Read Only Memory), CD-R, CD-R/W, 반도체 메모리(예를 들면, 마스크 ROM 또는 PROM(Programmable ROM), EPROM(Erasable PROM), 플래시 ROM, RAM(Random Access Memory)를 포함한다. 또한, 프로그램은 다양한 타입의 일시적인 컴퓨터 판독 가능 매체에 의해 컴퓨터에 공급되어도 된다. 일시적인 컴퓨터 판독 가능 매체의 예는, 전기 신호, 광신호, 및 전자파를 포함한다. 일시적인 컴퓨터 판독 가능 매체는, 전선 및 광섬유 등의 유선 통신로, 또는 무선 통신로를 통하여 프로그램을 컴퓨터에 공급할 수 있다.
<실시형태 개요>
본 실시형태의 설명에 앞서, 본 실시형태의 개요에 관하여 설명한다.
기능 안전 대응에서는, 수수 데이터의 보호가 중요하다. 즉, 에러에 대하여 수수 데이터가 파괴되지 않도록 하는 것이 바람직하다. 따라서 데이터 송신측에서의 적절한 CRC(Cyclic Redundancy Check) 또는 ECC(Error-Correction Code)의 부가(에러 검출용 데이터의 부가) 및 데이터 수신측에서의 적절한 CRC 또는 ECC의 체크가 필요하다.
이하에서 설명하는 실시형태에서는, 데이터 수신측에서의 CRC 또는 ECC 처리를 HSM(Hardware Security Module; 하드웨어 시큐리티 모듈) 이외로부터 은폐함으로써, 개찬 내성(耐性) 이외에 비닉성(秘匿性)까지 보증 가능한 데이터 수수 시퀀스를 실현 가능하다. 또한, 본 실시형태에서는, HSM 전용의 CRC 또는 ECC의 처리 기구가 소프트웨어 또는 하드웨어에 설치되어 있다. 또한, 이와 같은 HSM 전용의 처리 기구가 설치되어 있지 않은 경우, 기능 안전 대응으로 개찬 내성을 가지는 데이터 수수 시퀀스를 구성할 수 있지만, 비닉 내성이 실현되지 않을 우려가 있다. 이에 대하여, 본 실시형태에서는, HSM에 전용의 CRC 또는 ECC의 처리기구를 소프트웨어 또는 하드웨어에 의해 구비하는 구성, 및 해당 구성에 의해 기능 안전 대응으로 개찬 내성 및 비닉성을 갖는 데이터 수수 시퀀스를 개시한다.
여기에서, 수수 대상 데이터는 프로그램을 포함한다. 또한, 이하에 나타내는 데이터 수수 시퀀스는 기능 안전 대응의 안전한 데이터 저장 및 프로그램의 저장을 포함하고, 특히 프로그램 보호를 위한, 실행 가능하지만 판독 불가한 메모리 영역에의 저장을 포함한다.
또한, 본 실시형태에서는, 데이터 저장에 있어서, 저장처의 (R, W, E) 속성(액세스 속성)의 지정이 W 불가나 R 불가로 되어 있는 경우이라도, 기능 안전 대응과 동시에 안전한 기록이 가능하다. 여기에서, R, W, E는 하기를 나타낸다.
R: 판독 여부 지정: 1로 가능 0으로 불가
W: 기록 여부 지정: 1로 가능 0으로 불가
E: 실행 여부 지정: 1로 가능 0으로 불가
즉, 액세스 속성은, 그 메모리 영역에 저장된 데이터의 판독이 가능한지 여부, 그 메모리 영역에 데이터 기록이 가능한지 여부, 및 그 메모리 영역에 저장된 데이터(프로그램)의 실행이 가능한지 여부를 나타내고 있다.
(R, W, E) 속성 지정은, 예를 들면, UNIX(등록상표) 또는 Linux(등록상표) 등이 제공하는 소프트웨어에서의 속성 설정 변경 수단을 이용하여도 되고, 이하에서 설명하는 본 실시형태에 있어서의 (R, W, E) 속성 제어 기구를 이용하여도 된다. 특히 소프트웨어에서 (R, W, E) 속성의 설정 변경이 가능한 경우는, 시도 응답 등의 적절한 암호 인증을 수반하는 (R, W, E) 속성 변경 기구인 것이 바람직하다.
본 실시형태에 있어서, 액세스 제어 기구의 이용을 전제로 하는 기술이 있으나, 액세스 제어 기구로는, 예를 들면, SELinux가 제공하는 강제 액세스 제어 기구에서의 실현이어도 되고, ATMega128이 제공하는 것과 같은 메모리 영역마다 로크 비트 설정에 의한 방식이어도 된다. 또한, 본 실시형태에서 개시하는 (R, W, E) 속성 제어 기구와 기존의 액세스 제어 기구의 병용에 의한 실현이어도 된다. 특히 소프트웨어에서 액세스 제어 설정 변경이 가능한 경우는, 시도 응답 등의 적절한 암호 인증을 수반하는 액세스 제어 기구인 것이 바람직하다.
또한, 본 실시형태에 있어서, (R, W, E) 속성 및 액세스 제어 설정은, HSM에 내장된 CPU 또는 제어 스테이트 머신에 의해 실시되어도 되고, HSM 외부의 비(非)시큐어부(non-secure portion)에 배치된 CPU에 의해 실시되어도 된다. 어떤 경우이라도, 이 설정을 실행하는 소프트웨어는, 그 실행에 앞서, 시큐어 부팅 등으로 개찬이 없는 것이 검증된 것으로 한다. 또한, HSM에서의 실행인 경우는, HSM에 내장된 CPU 또는 제어 스테이트 머신이 실행하는 것으로 한다.
<실시형태 1>
도 1은 실시형태 1에 따른 반도체 장치(1)의 하드웨어 구성을 나타내는 도면이다. 반도체 장치(1)는, 예를 들면, 차량 등에 탑재되는 MCU(Micro Control Unit; 마이크로 컨트롤러)이다. 반도체 장치(1)는 CPU(2)와, 프로그램 메모리(3)와, 에러 검출 회로(4)와, 입출력 인터페이스(5)(입출력 I/F)와, 워크 메모리(6)와, 하드웨어 시큐리티 모듈 회로(10)(HSM)를 갖는다. CPU(2), 프로그램 메모리(3), 에러 검출 회로(4), 입출력 인터페이스(5), 워크 메모리(6), 및 하드웨어 시큐리티 모듈 회로(10)는 버스(9)를 통해 서로 접속되어 있다. 또한, 반도체 장치(1)의 하드웨어 시큐리티 모듈 회로(10) 이외의 구성 요소(특히 메모리 영역)를 비시큐어부라고 칭하는 경우가 있다.
CPU(2)는 연산 처리 및 프로그램의 실행 처리를 실시한다. 프로그램 메모리(3)는 CPU(2)에서 실행되는 프로그램을 저장한다. 워크 메모리(6)는 프로그램의 실행 등의 처리를 실행할 때에 이용된다. 입출력 인터페이스(5)는 외부와의 입출력을 실시하기 위한 처리를 행한다. 또한, 입출력 인터페이스(5)는 패킷에 대하여 프로토콜로 규정된 CRC/ECC를 처리하기 위한 기능이 구비되어 있는 것으로 한다.
에러 검출 회로(4)는 반도체 장치(1)에서 처리되는 데이터에 대하여 에러 검출 처리(CRC/ECC처리)를 실시한다. 구체적으로는, 에러 검출 회로(4)는 반도체 장치(1)의 내부 버스(9) 상의 통신 데이터에 대한 CRC/ECC의 생성 및 부가(에러 검출용 데이터 생성 및 부가), 및 CRC/ECC 처리(체크)를 실시한다. 또한, 에러 검출 회로(4)는 입출력 인터페이스(5)와 주고받는 데이터에 대한 CRC/ECC의 생성 및 부가, 및 CRC/ECC 처리(체크)를 실시한다.
또한, 반도체 장치(1)는 하드웨어 시큐리티 모듈 회로(10)에 전용인 전용 에러 검출 회로(8)를 가져도 된다. 전용 에러 검출 회로(8)는 하드웨어 시큐리티 모듈 회로(10)에만 접속되어 있다. 따라서 전용 에러 검출 회로(8)에는, 하드웨어 시큐리티 모듈 회로(10)만 액세스 가능하다. 다시 말하면, 전용 에러 검출 회로(8)는 하드웨어 시큐리티 모듈 회로(10)에 전용인 하드웨어 회로이다. 전용 에러 검출 회로(8)는 에러 검출 회로(4)와 실질적으로 동일한 기능을 갖는다.
따라서 전용 에러 검출 회로(8)는 하드웨어 시큐리티 모듈 회로(10)에서 처리되는 데이터 (제1의 데이터)에 대하여 에러 검출 처리를 실시한다. 즉, 전용 에러 검출 회로(8)는 하드웨어 시큐리티 모듈 회로(10)에 있어서의 시큐리티 관련 처리에서 실행되는 CRC/ECC 처리(에러 검출 처리)에 이용된다. 그리고, 전용 에러 검출 회로(8)에 관한 메모리 영역은 하드웨어 시큐리티 모듈 회로(10)에 의해 CRC/ECC 처리가 실행되고 있을 때, 하드웨어 시큐리티 모듈 회로(10)로부터만 액세스 가능하도록 구성되어 있다.
여기에서, 전용 에러 검출 회로(8)가 배치되어 있지 않은 경우, 에러 검출 회로(4)가 하드웨어 시큐리티 모듈 회로(10)에 있어서의 시큐리티 관련 처리에서 실행되는 CRC/ECC 처리(에러 검출 처리)에 사용될 수 있다. 즉, 실시형태 1에 따른 에러 검출 회로(4)는 적어도 하드웨어 시큐리티 모듈 회로(10)에서 처리되는 데이터(제1의 데이터)에 대하여 에러 검출 처리를 실시한다. 이 경우, 하드웨어 시큐리티 모듈 회로(10)에 의해, CRC/ECC 처리가 실행되고 있을 때, CPU(2)는 적절한 액세스 제어에 의해 에러 검출 회로(4)에 관한 데이터에의 액세스가 금지되도록 구성되어 있다. 또한, 액세스 제어는, 하드웨어 시큐리티 모듈 회로(10)에 의해 후술하는 수수 시퀀스 내에서 설정되는 것이 바람직하다.
도 2는 실시형태 1에 따른 하드웨어 시큐리티 모듈 회로(10)의 하드웨어 구성을 나타내는 도면이다. 하드웨어 시큐리티 모듈 회로(10)는 CPU(11)와, 입출력 인터페이스(12)(입출력 I/F)와, 암호 처리부(13)와, 워크 메모리(14)와, 코드용 불휘발성 메모리(15)와, 데이터용 불휘발성 메모리(16)를 갖는다.
CPU(11)는 연산 처리를 실시한다. 구체적으로는, CPU(11)은 후술하는 데이터 수수 시퀀스에서 실행되는 처리(액세스 제어 등)를 실시한다. 또한, 하드웨어 시큐리티 모듈 회로(10)는 CPU(11)를 가지지 않아도 된다. 이 경우, 하드웨어 시큐리티 모듈 회로(10)는 어떤 제어 스테이트 머신을 가져도 된다.
입출력 인터페이스(12)는 외부와의 입출력을 행하기 위한 처리를 실시한다. 암호 처리부(13)는 암호화, 복호화 또는 인증 처리 등의 암호 처리를 실시한다. 또한, 암호 처리부(13)는 서명 검증을 행하기 위한 처리를 실시해도 된다. 워크 메모리(14)는 하드웨어 시큐리티 모듈 회로(10)에 있어서의 처리를 실행할 때에 이용된다. 코드용 불휘발성 메모리(15)는 하드웨어 시큐리티 모듈 회로(10)에서 실행되는 코드를 저장한다. 데이터용 불휘발성 메모리(16)는 하드웨어 시큐리티 모듈 회로(10)에 있어서의 처리에서 이용되는 데이터를 저장한다.
또한, 코드용 불휘발성 메모리(15) 및 데이터용 불휘발성 메모리(16)는 그들의 일부 영역이 하드웨어 시큐리티 모듈 회로(10)의 외부로부터 아무런 인증없이 액세스 가능하게 구성되어 있어도 된다. 즉, 코드용 불휘발성 메모리(15) 및 데이터용 불휘발성 메모리(16)의 일부 영역은 보호되어 있지 않아도(안전하지 않아도)된다. 다시 말하면, 코드용 불휘발성 메모리(15) 및 데이터용 불휘발성 메모리(16)는 그들의 일부 영역이 시큐리티 영역으로서, 하드웨어 시큐리티 모듈 회로(10)의 관리하에 있도록 배치되어 있어도 된다.
여기에서, 실시형태 1에 따른 동작의 개요에 관하여 설명한다.
반도체 장치(1)가 전용 에러 검출 회로(8)를 가지고 있는 경우, 전용 에러 검출 회로(8)는 하드웨어 시큐리티 모듈 회로(10) 내에서 복호된 데이터에 부가된 ECC/CRC 값을 이용한 ECC/CRC체크 처리를 실시한다. 또한, 전용 에러 검출 회로(8)는 하드웨어 시큐리티 모듈 회로(10) 내에서 암호화 대상 데이터에 ECC/CRC 값을 생성(발행)하고, 생성된 ECC/CRC 값을 암호화 대상 데이터에 부가하여 암호화한다.
한편, 반도체 장치(1)가 전용 에러 검출 회로(8)를 가지고 있지 않은 경우, 버스(9)에 접속된 에러 검출 회로(4)가 상술한 전용 에러 검출 회로(8)의 처리와 동일한 처리를 실시한다. 여기에서, 하드웨어 시큐리티 모듈 회로(10)에서의 복호 데이터를 대상으로 한 ECC/CRC체크는 에러 검출 회로(4)가 하드웨어 시큐리티 모듈 회로(10)로부터만 액세스 가능하도록 제어함으로써 실현될 수 있다. 동일하게, 암호화 처리는 하드웨어 시큐리티 모듈 회로(10)로부터만 액세스 가능하도록 제어함으로써 실현될 수 있다. 또한, 액세스 제어의 자세한 내용은 후술한다.
기능 안전 대응에서는 수수 데이터의 보호가 중요하며, 따라서 데이터 송신측에서의 적절한 CRC 또는 ECC의 부가와, 데이터 수신측에서의 적절한 CRC 또는 ECC 체크가 필요하다. 이 때, 이들 처리를 실시하는 에러 검출 회로는 하드웨어 시큐리티 모듈 회로(10) 이외로부터의 액세스가 금지되어 있음으로써, 시큐리티(비닉성)가 향상된다. 따라서, 본 실시형태에 따른 반도체 장치(1)는 기능 안전이 고려된 안전한 데이터 수수를 실시할 수 있다.
여기에서, 전용 에러 검출 회로(8)를 구비하는 반도체 장치(1)에서는 하드웨어 구성을 확장함으로써, 상기의 처리를 실현 가능하게 하고 있다. 따라서 CRC/ECC 부가 및 CRC/ECC 체크(에러 검출 처리)시에, 전용 에러 검출 회로(8)는 하드웨어 시큐리티 모듈 회로(10) 이외로부터의 액세스가 금지된다. 따라서, 본 실시형태에 따른 반도체 장치(1)는 기능 안전이 고려된 안전한 데이터 수수를 실시할 수 있다. 그리고, 전용 에러 검출 회로(8)를 설치함으로써 후술하는 바와 같은 액세스 제어를 실시할 필요가 없어진다. 따라서 액세스 제어를 실시하는 경우와 비교하여 처리 내용이 간소해진다.
또한, 반도체 장치(1)가 전용 에러 검출 회로(8)를 구비하지 않는 경우, 즉 하드웨어 구성을 확장하지 않는 경우, 에러 검출 회로(4)는 적절한 액세스 제어에 의해 하드웨어 시큐리티 모듈 회로(10)로부터만 액세스 가능하게 한다. 이에 의해, CRC/CC 부가 및 CRC/ECC 체크(에러 검출 처리) 시에, 에러 검출 회로(4)는 하드웨어 시큐리티 모듈 회로(10) 이외로부터의 액세스가 금지된다. 따라서, 본 실시형태에 따른 반도체 장치(1)는 기능 안전이 고려된 안전한 데이터 수수를 실시할 수 있다. 또한, 액세스 제어를 실시함으로써, 전용 에러 검출 회로(8)를 설치할 필요가 없어지므로, 전용 에러 검출 회로(8)를 설치하는 경우와 비교하여 반도체 장치(1)의 하드웨어 구성이 간소해진다. 즉, 에러 검출 회로(4)가 하드웨어 시큐리티 모듈 회로(10) 이외에 관한 처리도 실시할 수 있는 구성인 채로, 시큐리티의 저하를 억제하면서, 기능 안전하게 대응할 수 있다.
<액세스 제어>
다음으로, 액세스 제어에 관하여 설명한다.
도 3 및 도 4는 실시형태 1에 따른 액세스 제어 회로를 갖는 반도체 장치(1)을 나타내는 도면이다. 액세스 제어 회로(20)는 보호가 요구되는 구성 요소에 설치된다. 또한, 액세스 제어 회로(40)는 CPU(2)(버스 마스터)에 설치된다. 도 3에 나타낸 반도체 장치(1)는 에러 검출 회로(4)에만 액세스 제어 회로(20)가 설치되도록 구성되어 있다. 다시 말하면, 도 3에 나타낸 예에서는, 에러 검출 회로(4)만이 액세스 제어(강제 액세스 제어)의 대상이 되고 있다.
한편, 도 4에 나타낸 반도체 장치(1)는 에러 검출 회로(4)뿐만 아니라 복수의 구성 요소에 액세스 제어 회로(20)(액세스 제어 회로(20A~20D))가 설치되도록 구성되어 있다. 다시 말하면, 도 4에 나타낸 예에서는, 에러 검출 회로(4)를 포함하는 복수의 구성 요소가 액세스 제어(강제 액세스 제어)의 대상이 되고 있다. 또한, 도 4에서는, 모든 구성 요소에 액세스 제어 회로(20)가 설치되어 있지만, 보호할 필요가 없는 구성 요소에는, 액세스 제어 회로(20)를 설치하지 않아도 된다. 또한, 도 4에 나타낸 예에서는, 액세스 제어 회로(20)의 배치 수에 따라 액세스 제어 회로(40)를 구성하여도 된다. 또한, CPU(2)(버스 마스터)가 복수인 경우는, 각각의 CPU(2)(버스 마스터)에 액세스 제어 회로(40)를 설치해도 된다.
도 5는 도 3 및 도 4에 나타낸 액세스 제어 회로(20)에 설치되는 속성 제어 스테이트 머신(22)을 나타내는 도면이다. 도 5에 나타낸 속성 제어 스테이트 머신(22)은 상술한 (R, W, E) 속성 제어 기구의 일례이다. 속성 제어 스테이트 머신(22)은 (R, W, E) 값을 레지스터 설정하기 위한 스테이트 머신이다. 속성 제어 스테이트 머신(22)은 CPU(2) 등으로부터 (R_in, W_in, E_in)의 3bit 입력 신호를 받으면, 상태 천이를 실시하고, 천이 장소의 상태를 (R_out, W_out, E_out)로 3bit 신호를 출력한다. 또한, (R_in, W_in, E_in)의 값은 CPU(2) 등으로부터의 레지스터 설정으로 갱신될 수 있다.
또한, 속성 제어 스테이트 머신(22)은 상태 천이가 발생할 때마다 불휘발성 메모리에 갱신된 상태를 저장하는 하드웨어 제어기구인 상태 유지 레지스터를 가진다. 전원 차단 또는 리셋 등이 발생되면, 상태 유지 레지스터의 값은 (0, 0, 0)으로 일단 초기화된다. 한편, 전원이 투입되면, 상태 유지 레지스터는 발생되는 기동 신호를 검지하고, 불휘발성 메모리에 저장된 값을 판독하여 설정한다. 또한, 상태 저장 판독소의 불휘발성 메모리 영역에의 액세스 보호를 목적으로 하여, 본 기구 및 불휘발성 메모리 영역을 하드웨어 시큐리티 모듈 회로(10)로부터만 액세스 가능해도 된다.
도 6은 도 5에 나타낸 속성 제어 스테이트 머신(22)에 의해 실현되는 상태천이도이다. 각 상태(S0~S7)의 상태 (R, W, E)를 이하에 나타낸다. 또한, R, W, E는 각각 "1"로 실행 가능하고, "0"으로 실행 불가하다.
S0: (1, 1, 1): 전부 실행 가능
S1: (1, 1, 0): 판독 가능 및 기록 가능
S2: (1, 0, 1): 판독 가능 및 실행 가능
S3: (1, 0, 0): 판독 가능
S4: (0, 1, 0): 기록 가능
S5: (0, 0, 1): 실행 가능
S6: (0, 0, 0): 전부 실행 불가
S7: (0, 1, 1): 기록 가능 및 실행 가능
여기에서, 상태 S0이 초기 상태이다. 또한, 상태 S7에서는, 공격자 등이 프로그램을 입력하고 그 프로그램을 실행하면, 시스템에 큰 영향을 미칠 우려가 있다. 따라서, 상태 S7로는 천이되지 않는다. 또한, 상태 S6으로도 천이하지 않는다. 또한, 상태 S5에서는, 프로그램(명령)을 실행하기 위해서만 프로그램(명령)을 판독하는 것(페치)은 가능하다.
도 6에 나타낸 바와 같이, S0으로부터 S0, S1, S2, S3, S4, S5로 천이할 수 있다. S1로부터 S1, S2, S3, S5로 천이할 수 있다. S2로부터 S1, S2, S4, S5로 천이할 수 있다. S3으로부터 S3, S4, S5로 천이할 수 있다. S4로부터 S3, S4, S5로 천이할 수 있다. 그리고, S5로부터는, S5로만 천이할 수 있다. 즉, S1과 S2 사이에서의 천이 및 S3과 S4 사이에서의 천이가 인정되는 이외에는, 보다 엄격한(즉, 가능한 동작이 많지 않은)(R, W, E) 속성에 대한 변경만이 허용되어 있다. 또한, 도 6에서는 S1과 S2와의 사이에서의 천이가 인정되고 있다고 했지만, S1과 S2 사이에서의 천이는 인정되지 않아도 된다.
이와 같이, 본 실시형태에 따른 속성 제어 스테이트 머신(22)은 전원 차단 또는 리셋 후의 상태 재설정에 의해, 보다 엄격한 (R, W, E) 속성으로 일단 천이되면, 그보다 엄격한 속성으로만 천이 가능하다. 즉, 본 실시형태에 따른 속성 제어 스테이트 머신(22)은 제1의 상태로부터, 제1의 상태보다도 가능한 동작이 많지 않은 제2의 상태로 천이 가능하다. 따라서, 견고한 하드웨어 기구가 되어 있다. 또한, 이 속성 제어 스테이트 머신(22)을 가지는 액세스 제어 회로(20)를 상위 메모리 영역의 수만큼 배치함으로써, 보호가 필요한 각 메모리 영역의 (R, W, E) 속성 제어를 실시하는 것이 가능하게 된다. 예를 들면, Bootloader 등 크리티컬한 소프트웨어를 배치하는 불휘발성 메모리 영역을 본 실시형태에 따른 액세스 제어 회로(20)에 의해 소프트웨어 기록(S1 or S4)→판독에 의한 기록 검증(S1 or S3)→실행만 허가(S5)와 제어함으로써, 소프트웨어의 도용 및 소프트웨어에 의한 공격을 억제하는 것이 가능하게 된다.
도 7은 (R, W, E) 속성 제어 기구와 메모리 공간과의 접속 구성의 일례를 나타낸다. 도 7에 나타낸 접속 구성은 도 5에 나타낸 속성 제어 스테이트 머신(22)의 신호에 더하여, 이하에 나타내는 신호를 이용하여 구성된다.
D_in은 메모리(보호 대상의 메모리 영역)에의 입력 신호이다. D_out은 메모리로부터의 출력 데이터 신호이다. Dec_Addr[i]는 메모리 내에서 생성되는 어드레스의 디코딩 신호이다. 여기에서, Dec_Addr[i]가 '1'일 때, 입력 어드레스가 해당 메모리 엘리먼트[i]를 가리키는 것을 나타낸다. Dec_Addr[i]가 "0"일 때, 입력 어드레스가 해당 메모리 엘리먼트[i]를 가리키지 않는 것을 나타낸다.
또한, R_dec:=Dec_Addr[i]∧R_out이다. 또한, W_dec:=Dec_Addr[i]∧W_out이다. 또한, R_out'은 복수의 대상 메모리 영역 중, 어드레스 상위 비트열 등으로 식별되는 영역에 부수되는 R_out이지만, (R, W, E) 속성의 지정 대상 외인 경우는 "1"이 되는 신호이다. E_out'은 복수의 대상 메모리 영역 중, 어드레스 상위 비트열 등으로 식별되는 영역에 부수되는 E_out이지만, (R, W, E) 속성의 지정 대상 외인 경우는 "1"이 되는 신호이다.
도 7에 기재된 구성에 의해, W_out이 1일 때만, 셀렉터(23)에 의해, 메모리 셀/레지스터(24) 내의, 어드레스로 지정된 대상 메모리 영역에 데이터가 기록된다. 또한, R_out 및 E_out 중 적어도 한쪽이 1일 때만, 메모리 셀/레지스터(24)로부터, 셀렉터(25)에 의해, 데이터의 판독이 이루어진다.
판독된 데이터는 버스(9)를 통하여, 예를 들면 CPU(2) 등에 전송된다. 이 때, CPU(2)에 설치된 데이터 판독 유닛(41)은 R_out이 1일 때(또는 (R, W, E) 속성의 지정 대상 외인 경우)만, 셀렉터(42)에 의해 데이터의 판독이 가능하다. 또한, 명령 페치 유닛(43)은 E_out이 1일 때(또는 (R, W, E) 속성의 지정 대상 외인 경우)만, 셀렉터(44)에 의해 명령 페치가 가능하다. 이 때, CPU(2)는 판독 데이터를 명령으로 실행하는 것이 가능하다. 여기에서, DMAC(Direct Memory Access Controller) 등의 버스 마스터를 이용한 경우이라도, 동일한 데이터 판독 제어가 이루어진다.
이와 같이, 도 6 및 도 7에 나타낸 구성을 조합함으로써, (R, W, E) 속성에 맞는 실행 만이 가능하게 된다. 즉, 도 6 및 도 7에 나타낸 구성을 조합하는 것으로 보호가 필요한 각 메모리 영역의 (R, W, E) 속성 제어가 가능하게 되며, 적절한 액세스 권한을 가진 하드웨어 또는 소프트웨어만이 보호가 필요한 메모리 영역에의 판독, 실행, 기록의 동작을 실시하는 것이 가능하게 된다. 상술한 바와 같이, 일단, 보다 엄격한 액세스 제한이 설정되면, (R, W, E) 속성 제어에의 입력 신호 또는 입력 레지스터 설정 변경에서는, 보다 유연한 액세스 제한으로는 되돌릴 수 없다. 그리고, 이 액세스 제한이 전원 차단 또는 리셋을 실시하여도 유지 될 수 있다. 가령, OS(Operating System)가 크랙(crack)되고, 부정하게 권한 승격이 이루어져, 악성 소프트웨어가 실행된다고 해도, (R, W, E) 속성 제어가 정한 보호 대상 영역의 액세스 제어에 따른 액세스밖에 악성 소프트웨어는 실행할 수 없다. 따라서 적절한 액세스 제어에서의 메모리 보호가 가능해진다. 따라서 이 도 6 및 도 7에 나타낸 구성을 도 3에 적용함으로써, 하드웨어 시큐리티 모듈 회로(10)만으로부터 에러 검출 회로(4)에의 액세스가 실현 가능해진다. 이하 설명한다.
도 8은 실시형태 1에 따른 하드웨어 시큐리티 모듈 회로(10), 에러 검출 회로(4)에 설치된 액세스 제어 회로(20) 및 CPU(2)에 설치된 액세스 제어 회로(40)의 접속 구성을 나타내는 도면이다. 도 8에 나타낸 접속 구성은 도 5에 나타낸 속성 제어 스테이트 머신(22)의 신호에 더하여, 이하에 나타내는 신호를 이용하여 구성된다.
D_in은 셀렉터(23)에 입력되는, 메모리에의 입력 데이터 신호이다. D_out은 셀렉터(25)로부터 출력되는, 메모리로부터의 출력 데이터 신호이다. 또한, R_HSM은 하드웨어 시큐리티 모듈 회로(10) 내에서 발행(생성)된 강제 Read 신호이다. R_HSM은 "1"일 때 판독이 실행 가능하며, "0"일 때 판독이 실행 불가함을 나타낸다. 또한, W_HSM는 하드웨어 시큐리티 모듈 회로(10) 내에서 발행(생성)된 강제 Write 신호이다. W_HSM는 "1"일 때 기록이 실행 가능하며, "0"일 때 기록이 실행 불가함을 나타낸다.
또한, R_e=R_out ∨ R_HSM이고, R_e는 "1"일 때 판독이 실행 가능하며, "0"일 때 판독이 실행 불가함을 나타낸다. W_e=W_out ∨ W_HSM이고, W_e는 "1"일 때 기록이 실행 가능하며, "0"일 때 기록이 실행 불가함을 나타낸다. 또한, Dec_Addr[i]는 메모리내에서 생성하는 어드레스의 디코딩 신호이다. 여기에서, Dec_Addr[i]가 '1'일 때, 입력 어드레스가 해당 메모리 엘리먼트[i]를 가리키는 것을 나타낸다. Dec_Addr[i]가 "0"일 때, 입력 어드레스가 해당 메모리 엘리먼트[i]를 가리키지 않는 것을 나타낸다.
또한, R_e2:=Dec_Addr[i]∧R_e이다. 또한, W_e2:=Dec_Addr[i]∧W_e이다. 또한, E_e2:=Dec_Addr[i]∧E_out이다. 또한, Dec_UpperAddr[j]는 대상 메모리 영역은 복수 존재할 수 있으므로, 어드레스 상위 비트열 등으로 대응하는 영역을 식별하기 위한 어드레스 디코딩 신호이다. 또한, R_e':=Dec_UpperAddr[j]∧R_e이다. R_e'는 복수의 대상 메모리 영역 중, 어드레스 상위 비트열 등으로 식별되는 영역에 부수되는 R_e이지만, (R, W, E) 속성의 지정 대상 외인 경우는 "1"이 되는 신호이다. 또한, E_out':=Dec_UpperAddr[j]∧E_out이다. E_out'는 복수의 대상 메모리 영역 중, 어드레스 상위 비트열 등으로 식별되는 영역에 부수되는 E_out이지만, (R, W, E) 속성의 지정 대상 외인 경우는 "1"이 되는 신호이다.
도 8에 기재된 구성에 의해 W_out 및 W_HSM 중 적어도 한쪽이 1일 때만, 셀렉터(23)에 의해, 메모리 셀/레지스터(24) 내의 어드레스에서 지정된 대상 메모리 영역에 데이터가 기록된다. 즉, (R, W, E) 속성에서 R_out 지정값이 0이어도 하드웨어 시큐리티 모듈 회로(10)가 강제적으로 기록 가능하게 할 수 있다. 또한, R_out, E_out, R_HSM 중 적어도 하나가 1일 때만, 메모리 셀/레지스터(24)로부터 셀렉터(25)에 의해 데이터가 판독된다. 즉, (R, W, E) 속성에서 R_out 지정값 및 E_out 지정값이 모두 0이어도 하드웨어 시큐리티 모듈 회로(10)가 강제적으로 판독 가능하게 할 수 있다.
판독된 데이터는 버스(9)를 통하여, 예를 들면, CPU(2) 등에 전송된다. 이 때, CPU(2)에 설치된 액세스 제어 회로(40)의 데이터 판독 유닛(41)은 R_out 및 R_HSM 중 적어도 한쪽이 1일 때(또는 (R, W, E) 속성의 지정 대상 외인 경우)만, 셀렉터(42)에 의해 데이터의 판독이 가능하다. 즉, (R, W, E) 속성에서 R_out 지정값이 0이어도 하드웨어 시큐리티 모듈 회로(10)가 강제적으로 CPU(2)에서의 데이터 판독을 가능하게 할 수 있다. 한편, 액세스 제어 회로(40)의 명령 페치 유닛(43)은 E_out이 1일 때(또는 (R, W, E) 속성의 지정 대상 외인 경우)만, 셀렉터(44)에 의해 명령 페치가 가능하다. 즉, CPU(2)는 판독 데이터를 명령으로 실행하는 것이 가능하다.
이와 같이, 도 6 및 도 8에 나타낸 구성을 조합함으로써, 도 7에 나타낸 구성에 의한 효과에 더하여, (R, W, E) 속성이 무엇이든 간에, 하드웨어 시큐리티 모듈 회로(10) 내에서 생성되는 신호 R_HSM 및 W_HSM에 의한 대상 메모리 영역에의 판독 및 기록의 실행이 가능해진다. 즉, 도 8에 나타낸 구성에 의해, 하드웨어 시큐리티 모듈 회로(10)만으로부터는, (R, W, E) 속성 제어에서 정한 보호 대상 영역의 액세스 제어를 무시하는 메모리 영역에의 판독, 실행, 기록의 동작을 실시하는 것이 가능하게 된다. 이에 따라, 기록 불가가 된 영역에의 데이터 또는 프로그램의 기록 등이 실현 가능해진다. 통상, 프로그램의 비닉성을 보증하는 목적으로 실행만 가능하게 한 경우, 그 프로그램의 갱신이 불가능하게 되지만, 도 8에 나타낸 구성에서는, 하드웨어 시큐리티 모듈 회로(10)에서만 갱신 가능해진다. 여기에서, 이와 같은 액세스 제어를 무시한 하드웨어 시큐리티 모듈 회로(10)에서의 보호 메모리 영역에의 데이터 기록은 후술하는 데이터 수수 시퀀스내에서만 실시되는 것이 바람직하다. 그리고, 이 도 6 및 도 8에 나타낸 구성을 도 3에 적용함으로써, 하드웨어 시큐리티 모듈 회로(10)에서만 에러 검출 회로(4)에의 액세스가 실현 가능해진다.
도 9는 도 4에 나타낸 복수의 구성 요소에 액세스 제어 회로(20)가 설치되는 경우의 데이터 판독 유닛(41) 및 명령 페치 유닛(43)의 구성을 나타내는 도면이다. 도 9는 2개의 액세스 제어 회로(20A, 20B)((R, W, E) 속성 제어 기구#1)로부터, 각각, R_eA, E_outA 및 R_eB, E_outB가 수신되는 구성을 나타내고 있다. 또한, Dec_UpperAddr[j]는 액세스 제어 회로(20A)에 관한 영역을 식별하기 위한 어드레스 디코딩 신호이다. Dec_UpperAddr[i]는 액세스 제어 회로(20B)에 관한 영역을 식별하기 위한 어드레스 디코딩 신호이다.
도 9에 나타낸 바와 같이 데이터 판독 유닛(41)은 액세스 제어 회로(20A, 20B)마다, 셀렉터(42A, 42B)를 가진다. 셀렉터(42A)는 액세스 제어 회로(20A)에 있어서 R_out 및 R_HSM 중 적어도 한쪽이 1일 때(R_eA=1)만, 데이터를 판독한다. 또한, 셀렉터(42B)는 액세스 제어 회로(20B)에 있어서 R_out 및 R_HSM 중 적어도 한쪽이 1일 때(R_eB=1)만, 데이터를 판독한다. 그리고, 셀렉터(51)는 어드레스 디코딩 신호(Dec_UpperAddr[j] 또는 Dec_UpperAddr[i])에 따라, 셀렉터(42A) 또는 셀렉터(42B)로부터 판독된 데이터를 출력한다.
또한, 명령 페치 유닛(43)은 액세스 제어 회로(20A, 20B)마다, 셀렉터(44A), (44B)를 가진다. 셀렉터(44A)는 액세스 제어 회로(20A)에 있어서 E_outA가 1일 때만, 명령 페치를 실시한다. 또한, 셀렉터(44B)는 액세스 제어 회로(20B)에 있어서 E_outB가 1일 때만, 명령 페치를 실시한다. 그리고, 셀렉터(53)는 어드레스 디코딩 신호(Dec_UpperAddr[j] 또는 Dec_UpperAddr[i])에 따라, 셀렉터(44A) 또는 셀렉터(44B)로부터 판독된 데이터를 출력한다.
또한, 도 9에는 2개의 액세스 제어 회로(20A, 20B)((R, W, E) 속성 제어 기구#1)에서 각각 R_eA, E_outA 및 R_eB, E_outB를 수신하는 구성의 예가 나타나 있지만, 액세스 제어 회로(20)의 개수는 임의이다. N개(N>2의 정수)의 액세스 제어 회로(20)에의 확장은 상위 어드레스 디코딩 결과 신호를 추가하고, 버스(9)에서의 판독 제어부(셀렉터(42, 44))를 추가하여 최종단의 셀렉터(51), (53)를 N개의 어드레스 디코딩 결과에 따라 하나의 신호 출력을 셀렉터로 교체함으로써 실현 가능하다.
<데이터 수수 시퀀스>
다음으로, 실시형태 1에 따른 반도체 장치(1)에 의해 이루어지는 데이터 수수 시퀀스에 관하여 설명한다. 이하에서 설명하는 데이터 수수 시퀀스는 개찬 내성과 비닉성을 가진 기능 안전 고려한 데이터 수수 프로토콜의 동작이다. 여기에서, 기능 안전 고려이란, 통신로에서의 데이터 오류 및 하드웨어 고장에서의 데이터 오류에의 대응을 나타낸다.
도 10은 실시형태 1에 따른 데이터 수수 시퀀스가 실시되는 인증 시스템(100)을 나타내는 도면이다. 인증 시스템(100)은 예를 들면, 자동차 등의 차량에 적용되는 차량 네트워크 시스템이다. 인증 시스템(100)은 서버(104), 기기A(102)(제1의 기기) 및 기기B(110)(제2의 기기)를 가진다.
기기A(102) 및 기기B(110)는 차량 내부에 설치되어 있다. 서버(104)는 차량의 외부에 설치되어 있다. 기기A(102)는 예를 들면, 차량의 외부(서버(104) 등)에서의 신호를 수신하는 게이트웨이(센트럴 게이트웨이)이다. 기기B(110)는 예를 들면, 차량의 각 부품(브레이크, 모터, 엔진, 스티어링 등)을 제어하는 MCU이다. 기기A(102)는 서버(104)와 무선 등을 통하여 통신 가능하게 접속되어 있다. 기기A(102) 및 기기B(110)는 유선 또는 무선을 통하여 통신 가능하게 접속되어 있다. 또한, 기기B(110)는 실시형태 1에 따른 반도체 장치(1)에 대응한다. 즉, 기기A(102)는 반도체 장치(1)의 외부 기기이다. 기기B(110)는 하드웨어 시큐리티 모듈 회로(10)와, 하드웨어 시큐리티 모듈 회로(10) 이외의 비시큐어부(120)(CPU(2) 프로그램 메모리(3), 에러 검출 회로(4), 입출력 인터페이스(5), 워크 메모리(6) 등)을 가진다. 또한, 기기A(102)도 기기B(110)와 동일한 구성 요소를 가져도 된다.
도 11~도 13은 실시형태 1에 따른 데이터 수수 시퀀스를 나타내는 시퀀스를 나타내는 도면이다. 또한, 기기A(102) 및 기기B(110)에 대한 공동 대칭 키의 초기 설정으로서, 하기 설정이 사전에 이루어져 있는 것으로 한다.
시큐리티 파라미터를 k(k=128 또는 256)이라고 하여, 기기A(102)는 1 ^ k를 입력한다. 기기A(102)는 인증 식별자 IDi∈{0,1} ^ k가 할당되어 있는 기기B(110)에 대하여 대칭 키 ski←{0,1} ^ k(즉 ski의 비트 길이는 k)를 선택하고, (ski, IDi)를 송부한다. 기기B(110)는 (ski, IDi)를 불휘발성 메모리에 보존한다. 또한, 기기B(110)는 인증 식별자 IDi의 집합 ID를 기기A(102)에 송부한다. 여기에서, 기기B(110)의 총수를 N이라고 하고, i∈[1, N]이라고 한다. 예를 들면, 기기B(110)를 출하하기 전에 이들 초기 설정을 실행함으로써, 각 기기B(110)에 별도의 키를 설정함과 동시에, 기기A(102)에 동일한 키를 저장하여도 된다. 또한, 기기B(110)의 비시큐어부(120)는 기기B(110)에 내장된 하드웨어 시큐리티 모듈 회로(10)에 저장된 IDi를 판독하는 것이 가능한 것이라고 한다. 단, 덮어쓰기 변경이나 소거는 적절한 액세스 제어에 의해 할 수 없는 것으로 한다.
(1) 기기 인증 정보의 기기A에서의 구축:
기기B(110)의 비시큐어부(120)는 하드웨어 시큐리티 모듈 회로(10)로부터 IDi를 취득한다(단계 S101). 비시큐어부(120)는 하드웨어 시큐리티 모듈 회로(10)로부터 IDi를 판독해도 되고, 하드웨어 시큐리티 모듈 회로(10)로부터 IDi를 수신해도 된다. 비시큐어부(120)는 IDi를 얻으면, 세션 관리를 위하여 세션 정보 rp∈{0,1} ^ k를 선택하고(단계 S102), (1, rp, IDi)를 기기A(102)에 송부한다(단계 S103). 여기에서, "1"은 세션 정보 rp에 있어서의 첫 번째 처리를 나타낸다. 기기A(102)는 (1, rp, IDi)를 수취하면, 하기의 처리를 실시한다(단계 S104). 이에 의해, 기기B(110)가 인증된다.
1. rp, IDi∈{0,1} ^ k인지, 그리고, IDi∈ID인지를 검증한다. 즉, rp, IDi의 비트 길이의 검증 및 IDi가 등록 된 것인지 여부의 검증을 실시한다. 만약 상이하면 처리를 종료한다. 만약 만족한다면, 이하를 실행한다.
2. 현재의 시각을 tss←TimeStamp로서 선택한다.
3. 난수를 rh1←{0,1} ^ k로서 선택한다.
4. 송신 데이터 data에 대하여, CRC 또는 ECC를 산출하고, 예를 들면 CRC를 산출 한 것으로 하여 data_crc:=CRC(data)로 한다.
5. c1:=AE. Enc (ski, tss || IDi || rh1 || data || data_crc)를 계산한다.
그리고, 기기A(102)는 Data1:=(tss, IDi, c1)로 하여, 기기B(110)의 비시큐어부(120)에, (1, rp, Data1)을 송부한다(단계 S105). 여기에서, 연산자 "||"는 비트 연접(連接)을 나타낸다. 또한, c1은 인증된 암호 데이터이다. 또한, AE.Enc는 인증된 암호이며, AES-GCM 또는 AES-CCM 이어도 된다.
또는 AE.Enc, 예를 들면, 암호와 CMAC 값의 조합으로, 예를 들면, 하기로 구성되어 있어도 된다. 이는 특히 인증된 암호를 사용할 수 없는 경우 등에 효과적이다.
난수를 rh0←{0,1} ^ m으로서 선택한다. 여기에서, m:=sizeof (data || data_crc)이다.
r1':=PRF(ski, tss || IDi || rh1 || rh0 || 2)
c1':=Enc (r1', tss || IDi || rh1 || data || data_crc)
r1:=PRF(ski, tss || IDi || rh1 || c1 '|| 1)
이 경우, Data1 내의 c1은 c1:=(rh1, rh0, c1', r1)가 된다. 여기에서, PRF는 의사(疑似) 랜덤 함수이며, CMAC 값으로 이용하고 있다. 또한, Enc는 공통 키 블록 암호이며, 예를 들면, AES-CBC이다. 또한, r1'는 의사 랜덤 함수용의, 서명을 발행하기 위한 공통 키이며, r1은 서명된 암호 결과이다.
(2) 기기B에서의 데이터 복호와 데이터 저장, 및 결과 수집:
기기B(110)의 비시큐어부(120)는 Data1을 저장하는 메모리 영역의 (R, W, E) 속성을, 예를 들면 상술한 액세스 제어 회로(20)에 의해, (1, 1, 0) 또는 (0, 1, 0)으로 설정한다(단계 S106). 즉, 액세스 제어 회로(20)는 (R, W, E) 속성을, 기록 가능 또한 프로그램 실행 불가하게 설정한다. 또한, 비시큐어부(120)는 현재의 시각을 tsp←TimeStamp로서 선택하고, Data1을 수취하면, 비시큐어부(120)의 메모리 영역의 (R, W, E) 속성을, 예를 들면 액세스 제어 회로(20)에 의해, (1, 0, 0)으로 설정한다(단계 S107). 즉, 액세스 제어 회로(20)는 (R, W, E) 속성을 판독만 가능하게 설정한다.
그 후, 비시큐어부(120)는 (rp, tsp, Data1)를 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 송부한다(단계 S108). 이 때, 송부가 완료되면, 비시큐어부(120)는 비시큐어부(120)의 메모리 영역의 (R, W, E) 속성을, 예를 들면 액세스 제어 회로(20)에 의해 (0, 1, 0)으로 설정한 후에 Data1을 소거한다(단계 S109). 여기에서, (R, W, E) 속성의 변경은 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 내장된 CPU(11)에 의해 실행되어도 되고, 비시큐어부(120)의 CPU(2)에 의해 실행되어도 된다. 어느 경우이라도, 설정 소프트웨어는 그 실행에 앞서, 시큐어 부팅 등에 의해 개찬이 없는 것이 확인되어 있는 것으로 한다.
그런데, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 (rp, tsp, Data1=(tss, IDi, c1))을 수취하면, m을 data || data_crc 의 사이즈이라고 하고, rh2←{0,1} ^ m이라고 하여(즉, rh2의 비트 길이를 m이라고 하고), 이하를 수행한다(단계 S110). 이에 의해, 기기A(102)의 인증, 수신된 데이터의 검증 및 데이터의 복호 처리가 이루어진다.
1. rp, tsp, tss, IDi, c1∈{0,1} ^ k인지, 즉, 각각의 데이터의 길이가 규정값대로의 길이로 되어 있는지를 검증하고, 또한, IDi가 자신의 것과 일치하는지를 확인한다. 이에 의해, 간단한 스크리닝이 이루어진다. 또한, c1:=(rh1, rh0, c1', r1)의 경우는, rh1, rh0, c1', r1∈{0,1} ^ k인지의 검증도 함께 실시한다.
만약 만족하지 않으면, result1:=000, rc←{0,1} ^ (k-3), rc:=rc || result1로 한다. 그리고, 후술하는 바와 같은 처리는 이것 이상 실행되지 않는다. 여기에서, result1의 값 "000"은 부정한 액세스가 된 것을 나타낸다. 만약 만족하는 경우는, 이하의 조작을 실행한다.
2. tss || IDi || rh1 || data || data_crc=AE. Dec (ski, c1), 즉 인증된 암호에서의 복호를 실시하고, 인증이 만족되는지를 검증한다. 만약 만족되지 않는 경우, result1을 인증된 암호의 결과가 불합격임을 나타내는 result1:=110으로 한다. 만약 만족한 경우는 3. 이후를 실행한다.
또한, c1:=(rh1, rh0, c1', r1)의 경우는, r1=PRN (ski, tss || ID || rh1 || c1'|| 1)이 만족되는지 여부를 검증한다(즉 서명 체크를 실시한다). 만약 만족되지 않은 경우, result1:=110으로 한다. 만약 만족하는 경우는, 이하의 조작을 실행한다. 즉, 복호 처리로서, r1':=PRN (ski, tss || IDi || rh1 || rh0 || 2) tss || IDi || rh1 || data || data_crc:=Dec (r1', c1')을 실시 후, 3. 이후를 실행한다. 여기에서, Dec는 공통 키 블록 암호에서의 복호이고, 예를 들면, AES-CBC의 복호이다.
3. 예를 들면, 액세스 제어 회로(20)는 액세스 제어 설정이 하드웨어 시큐리티 모듈 회로(10)만이 에러 검출 회로(4)에 액세스 가능하게 설정된다. 에러 검출 회로(4)를 이용하여 복호하여 얻어진 data의 CRC를 CRC(data)로 산출하고, data_crc와 일치하는지 검증한다. 일치하지 않는 경우, result1을 CRC체크가 실패했다는 것을 나타내는 result1:=100으로 한다. 만약 만족한 경우는 이하의 조작을 실행한다.
4. 복호로 얻어진 data를 저장하는 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로(즉 기록 가능 및 실행 불가하게) 설정하고, data를 영역 A1에 저장한다(기록한다). 이에 의해, CRC체크로 합격한(즉 에러가 검출되지 않았던) 데이터를 기록할 때에, 하드웨어 시큐리티 모듈 회로(10)만이 기록 가능하게 설정되므로, 공격자 등으로부터 데이터가 개찬되는 것을 억제할 수 있다.
그리고, 영역 A1의 (R, W, E) 속성을 (1, 0, 1) 또는 (1, 0, 0)으로(즉 판독 가능 및 기록 불가하게) 설정하고, data를 A1로부터 다시 판독하여 data'라고 한다. data'의 CRC를 CRC(data')로 산출하여, data_crc와 일치하는지 검증한다. 불휘발성 메모리에 데이터를 기록할 때에 데이터가 파괴될 수 있기 때문에 내고장성을 향상시키기 위하여, 이와 같이, 데이터 기록 후에 데이터를 판독하여 CRC체크를 실시한다. 여기에서, 이 때, 하드웨어 시큐리티 모듈 회로(10)만이 판독 가능하게 설정되므로, 데이터를 기록할 때의 에러를 검출하기 위하여 데이터를 판독할 때에 공격자 등으로부터 데이터가 개찬되하는 것을 억제할 수 있다.
CRC(data')와 data_crc가 일치하는 경우, 영역 A1의 (R, W, E) 속성을 (1, 0, 1) 또는 (1, 0, 0) 또는 (0, 0, 1)으로(즉 기록 불가하게) 설정한다. 영역 A1이 불휘발성 메모리부라면 활성화 처리를 실시한다. 또한, result1을 모든 처리가 성공한 것을 나타내는 result1:=001로 한다. data가 크리티컬한 프로그램이고 비닉성이 필요한 경우는, (0, 0, 1)로 설정함으로써, 실행만 가능하게 한다. 일치하지 않는 경우, 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로(즉 기록 가능 또한 실행 불가하게) 설정하고, 영역 A1에 기록한 data를 소거한다. 이에 의해, 부적절한 데이터의 실행 또는 판독을 억제할 수 있다. 그리고, result1을 다시 CRC체크가 실패한(기록에 실패한)것을 나타내는 result1:=010으로 한다.
5. 예를 들면, 액세스 제어 회로(20)에 의해, 액세스 제어 설정이 에러 검출 회로(4)의 처리를 필요로 하는 CPU(2) 등 다른 모듈이 에러 검출 회로(4)에 액세스 가능하게 설정된다. 그리고, 난수를 rc←{0,1} ^ (k-3)으로서 선택하고, rc:=rc || result1∈{0,1} ^ k로 한다.
6. r2:=PRF(ski, tss || tsp || IDi || rh2 || rc)를 구한다. 그리고, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 Data2:=(tss, IDi, rh2, rc, r2)로 하여, (rp, tsp, Data2)를 기기B(110)의 비시큐어부(120)에 송부한다(단계 S120).
7. 기기B(110)의 비시큐어부(120)는 Data2를 수취하면, 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한 후(단계 S121), (2, rp, tsp, Data2)를 기기A(102)에 송부한다(단계 S122). 여기에서, '2'는 세션 정보 rp에 있어서의 2번째 처리를 나타낸다. 송부가 완료되면, 비시큐어부(120)는 해당 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정하고, 그 후, Data2를 소거한다(단계 S123).
또한, (R, W, E) 속성의 갱신은, 도 3~도 9에 나타낸 (R, W, E) 속성 제어 기구(액세스 제어 회로(20))를 이용하여 실시되어도 된다. 또한, 도 3~도 9에 나타낸 (R, W, E) 속성 제어 기구를 이용하지 않는 경우는, 메모리 프로텍션 유닛(Memory Protection Unit; MPU) 또는 메모리 관리 유닛(Memory Management Unit; MMU)을 이용하여 설정이 실시되어도 된다. 또한, 도 6의 기구를 이용하는 경우, R 속성과 W 속성이 비록 0이 되어 있어도 하드웨어 시큐리티 모듈 회로(10)의 설정에서 판독 및 기록을 가능하게 할 수 있으므로, 이를 고려한 속성 변경을 실시할 필요가 있다. 도 6에 있어서 S1과 S2의 천이가 이루어지지 않은 경우는, 갱신 가능한 범위가 제한되기 때문에, 그 제한에 따른 형태로 속성 변경을 실시할 필요가 있다.
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)에의 송부에 시간 제약이 있는 경우로서 tsp가 신뢰할 수 있을 때는, 상기 1. 의 사이즈 체크 시에, tss와 tsp를 비교함으로써, 시간 제약의 확인을 실시해도 된다. 또한, 인증 대상 단말에서의 인증 처리에의 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계가 신뢰할 수 있는 경우는, tsp와 인증 단말에서의 인증 결과 수취 시각(이하, tsp2이라고 기재)을 비교함으로써, 시간 제약의 확인을 실시해도 된다. 이에 의해, 처리에 너무 긴 시간을 필요로 하는 경우에, 부적절한 처리를 검출할 수 있다.
(3) 기기A에서의 인증 결과 검증:
기기B(110)의 비시큐어부(120)는 (2, rp, tsp, Data2)를 기기A(102)에 송부한다(S122). 기기A(102)는 (2, rp, tsp, Data2=(tss, IDi, rh2, rc, r2)를 수취하면, 이하의 처리를 실행한다(단계 S124). 이에 의해, 기기A(102)와 기기B(110)의 상호 인증이 실시된다.
기기A(102)는 rp, tss, tsp, IDi, rc, r2∈{0,1} ^ k, 또한 rh2∈{0,1} ^ m인지, 즉, 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지를 검증하고, 만족하지 않으면, result2:=000으로 한다. 만약 만족한다면, 기기A(102)는 r2=PRF(ski, tss || tsp || IDi || rh2 || rc)인지(즉 서명이 올바른지 여부)를 검증한다. 기기A(102)는, 만약 올바르다면 result2:=rc의 하위 3bit(즉 result1의 값)으로 하고, 그렇지 않으면 result2:=000으로 한다.
그리고, 기기A(102)는 result2를 인증 결과로서 출력하고, 이를 기록한다. 여기에서, result2가 "001"를 나타내는 경우, 데이터 data가 중간자에게 개찬되는 경우도 누설되는 경우도 없고, 또한, 데이터가 결손되는 경우도 없이, 기기B(110)의 데이터 저장 영역에 데이터 저장을 실시하는 것이 성공했음을 의미한다. 또한, result2가 "010"을 나타내는 경우, 기록에서의 데이터 결손에 의한 기록 실패를 의미한다. 또한, result2가 "100"을 나타내는 경우, 인증·복호는 성공했으나 기록 전에 데이터 결손이 발생된 것을 의미한다. 또한, result2가 "110"을 나타내는 경우, 수신 에러(메시지 개찬의 가능성 있음)가 발생된 것을 의미한다.
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)에 인증된 암호 데이터를 송부 후, 기기A(102)가 기기B(110)의 비시큐어부(120)로부터의 인증된 암호 데이터를 취득할 때까지의 사이에 시간 제약이 있는 경우, 상기 사이즈 체크 시에, tss와 기기A(102)에서의 현재 시각과 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 또한, 기기B(110)의 비시큐어부(120)로부터의 인증된 암호 데이터에 대한 복호 조작 성공 여부의 기기A(102)에의 송부에 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계를 신뢰할 수 있는 경우는, tsp2가 추가된 데이터를 기기B(110)의 비시큐어부(120)로부터 기기A(102)에 송부하고 tsp2와 tss를 비교함으로써, 그 시간 제약의 확인을 실시해도 된다.
실시형태 1에 따른 반도체 장치(1)(기기B(110))는 외부 기기인 기기A(102)로부터, 기기B(110)로 전송 대상 데이터가 전송되는 경우에, 하드웨어 시큐리티 모듈 회로(10)가 비시큐어부(120)의 메모리 영역을 통하여, 인증용 데이터(Data1, Data2)를 기기A(102)로부터 수신하여, 기기A(102)로 송신한다. 이에 의해, 반도체 장치(1)(기기B(110))는 기기A(102)와 상호 인증을 할 수 있다. 여기에서, 비시큐어부(120)의 메모리 영역은 액세스 제어에 의해, 공격자 등으로부터의 액세스가 이루어지지 않도록 구성되어 있다. 따라서 전송 대상 데이터가 전송될 때에 공격자 등이 상대측의 기기로 가장하는 것을 억제하는 것이 가능해진다.
실시형태 1에 따른 데이터 수수 시퀀스는, rp가 개찬되면, 대응하는 세션이 비존재가 되거나, 존재하더라도 상이한 세션에서의 기기B(110)에 있어서의 인증 실패를 위한 시퀀스가 계속되지 않기 때문에, 페일 세이프이다. 또한, 실시형태 1에 따른 데이터 수수 시퀀스는, rh2가 개찬되면, 기기A(102)의 인증된 암호의 복호 처리 여부에 대한 검증이 실패하기 때문에, 페일 세이프이다. 또한, 실시형태 1에 따른 데이터 수수 시퀀스에서는 기기A(102)에서 인증된 암호의 복호 조작의 성공 여부에 대한 검증 수단에 의해, 공격자 등이 rc의 값을 개찬하여도, 기기A(102)에서 검증 합격이라고 할 수 없다. 또한, 실시형태 1에 따른 데이터 수수 시퀀스에서는 tsp가 개찬된 경우도, 기기A(102)에서의 인증 결과의 검증 수단에 의해. 기기A(102)에서 검증 합격이라고 할 수 없다. 즉, rp, rh2, tsp 중 어느 쪽을 개찬해도, 공격자 등은, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)로 구성한 인증된 암호의 복호 처리 여부를 기록 성공이나 검증 합격이라고 할 수 없다. 따라서, 실시형태 1에 있어서는 rp, rh2, rc의 전부 또는 어느 쪽이 개찬된 경우, 어떠한 개찬이 있었다는 것을 검지하는 것이 가능해진다. 또한, 개찬에 의한 인증 실패 또는 검증 불합격을 효율적으로 검출할 목적으로, tsp에 대하여 해시 값(hash value)을 부가해도 된다.
<실시형태 1의 변형예>
다음으로, 실시형태 1의 변형예에 관하여 설명한다. 도 11~도 13에 나타낸 시퀀스 도면은 기기A(102)로부터 기기B(110)로 전송 대상 데이터를 한 번에 전송하기 위한 시퀀스이다. 여기에서, 전송 대상 데이터의 데이터 사이즈가 전송 가능 사이즈보다도 크기 때문에 데이터를 분할하여 복수회로 나누어 전송하는 것이 필요한 경우는, 도 11~도 13에 기재한 시퀀스를 그대로 사용하는 경우, 그 횟수만큼, 인증 등의 처리를 실행할 필요가 있다.
여기에서, 전송 가능 사이즈에 제한이 있는 경우, 전송 대상 데이터 전체를 인증된 암호 방식으로 암호화하고, 그 암호화된 데이터 전체를 분할하여 전송하는 것이, 전송 횟수마다 암호화하여 전송하는 것 보다도 효율적이라고 생각된다. 예를 들면, 불휘발성 메모리에의 데이터 저장을 생각하는 경우, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 데이터가 충분히 축적되고나서, 인증된 암호 방식에서의 복호를 실시하고, 데이터 영역에의 기록을 실시 하는 것이 효율적이다. 여기에서, 인증된 암호 방식은 암호화와 서명 생성이라는 다른 키를 사용하는 것을 전제로 한, 블록 암호 방식에서의 암호와 암호 결과에 대한 서명을 부가하는 방식이어도 된다.
도 14~도 19는 실시형태 1의 변형예에 따른 인증 시스템(100)에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다. 또한, 실시형태 1의 변형예에 따른 인증 시스템(100)의 구성은 도 10에 나타낸 실시형태 1에 따른 인증 시스템(100)과 실질적으로 동일하므로 설명을 생략한다.
도 14~도 19의 시퀀스 도면을 사용하여, 개찬 내성과 비닉성을 가진 기능 안전 고려한 데이터의 일괄적인 암호화와 그 암호화된 데이터의 분할 전송에서의 데이터 수수를 가능하게 하는 프로토콜 동작을 설명한다. 여기에서, 도 14~도 19의 시퀀스는 (1) 전송 횟수의 통지를 수반하는 상호 인증 처리(S201)~(S224), (2) 전체를 암호화한 데이터의 반복 분할 전송 처리(S231)~(S257), 및 (3) 결합 데이터의 복호와 데이터 저장을 수반하는 상호 인증 처리(S262)~(S286)를 가진다. 또한, 기기A(102) 및 기기B(110)에 대한 공통 대칭 키의 초기 설정으로, 하기 설정이 사전에 이루어지고있는 것으로 한다.
시큐리티 파라미터를 k이라고 하여, 기기A(102)는 1 ^ k를 입력한다. 기기A(102)는 인증 식별자 IDi∈{0,1} ^ k가 할당되어 있는 기기B(110)에 대하여 대칭 키 ski←{0,1} ^ k를 선택하고, (ski, IDi)를 송부한다. 기기B(110)는 (ski, IDi)를 불휘발성 메모리에 보존한다. 또한, 인증 식별자 IDi의 집합 ID를 기기A(102)에 송부한다. 여기에서, 기기B(110)의 총수를 M이라고 하고, i∈[1, M]이라고 한다. 예를 들면, 기기B(110)를 출하하기 전에 이들 처리를 실시함으로써, 각 기기B(110)에 별도의 키를 설정함과 동시에, 기기A(102)에 그 키를 저장해도 된다. 또한, 기기B(110)의 비시큐어부(120)는 기기B(110)에 내장된 하드웨어 시큐리티 모듈 회로(10)에 저장된 IDi를 판독 가능하게 한다. 단, 덮어쓰기 변경이나 소거는 적절한 액세스 제어에 의해 할 수 없는 것으로 한다.
(1) 전송 횟수의 통지를 수반하는 상호 인증 처리:
(1-1) 기기 인증 정보의 기기A에서의 구축:
기기B(110)의 비시큐어부(120)는 하드웨어 시큐리티 모듈 회로(10)로부터 IDi를 취득한다(단계 S201). 비시큐어부(120)는 하드웨어 시큐리티 모듈 회로(10)로부터 IDi를 판독해도 되고, 하드웨어 시큐리티 모듈 회로(10)로부터 IDi를 수신해도 된다. 비시큐어부(120)는 IDi를 얻으면, 세션 관리를 위하여 세션 정보 rp∈{0,1} ^ k를 선택하고(단계 S202), (1, rp, IDi)를 기기A(102)에 송부한다(단계 S203). 여기에서, "1"은 세션 정보 rp에 있어서의 첫 번째 처리를 나타낸다. 기기A(102)는 (1, rp, IDi)를 수취하면, 이하를 실시한다(단계 S204). 이에 의해, 기기B(110)가 인증되고, 전송 횟수에 서명이 부여된다.
1. rp, IDi∈{0,1} ^ k인지, 그리고, IDi∈ID인지를 검증한다. 만약 상이하다면 처리를 종료한다. 만약 만족하면, 이하를 실행한다.
2. 현재의 시각을 tss1←TimeStamp로서 선택한다.
3. 난수 두개를 rh0←{0,1} ^ k, rh1←{0,1} ^ k로서 선택한다.
4. 세션 키로서, r1':=PRF(ski, tss1 || IDi || rh0 || 1)을 계산한다. 여기에서, "ski"는 서명 검증용 키이다.
5. 송신 데이터(전송 대상 데이터) data의 전체에 대하여, CRC 또는 ECC를 산출하고, 예를 들면 CRC를 산출한 것으로 하여, data_crc:=CRC(data)이라고 한다.
6. c1:=AE.Enc(r1', data || data_crc)를 계산한다. 그리고, 기기A(102)는, c1을, 전송 사이즈를 고려하여 N개로 분할하고, {c1[j]; j=1, ..., N}을 구성한다. 여기에서, 연산자 "||"는 비트 연접을 나타낸다. 또한, 상술한 예와 동일하게, AE.Enc는 인증된 암호이며, AES-GCM 또는 AES-CCM 이어도 되고, 예를 들면, 암호와 CMAC 값의 조합으로 하여도 된다.
7. 분할 전송 개수 N의 통지를 실시하기 위하여, r1:=PRF(ski, tss1 || IDi || rh1 || N || 1)을 계산한다. 여기에서, r1은 전송 대상 데이터에 대한 서명이 아니라 전송 횟수 N에 대한 서명이다.
8. Data1:=(tss, IDi, rh1, r1, N)이라고 하여, 기기B(110)의 비시큐어부(120)에 (1, rp, Data1)을 송부한다(단계 S205).
(1-2) 기기B에서의 데이터 복호와 데이터 저장, 및 결과 수집:
기기B(110)의 비시큐어부(120)는, Data1을 저장하는 메모리 영역의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로 설정한다(단계 S206). 즉, (R, W, E) 속성은 기록 가능 또한 프로그램 실행 불가하게 설정된다. 또한, (R, W, E) 속성의 변경은, 예를 들면, 상술한 액세스 제어 회로(20)를 이용하여 실시되어도 된다. 또한, 비시큐어부(120)는 현재의 시각을 tsp1←TimeStamp로서 선택하고, Data1을 수취하면, 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한다(단계 S207). 즉, 액세스 제어 회로(20)는 (R, W, E) 속성을 판독만 가능하게 설정한다.
그 후, 비시큐어부(120)는 (rp, tsp1, Data1)을 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 송부한다(단계 S208). 송부가 완료되면, 비시큐어부(120)는, 비시큐어부(120)의 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한 후, Data1을 소거한다(단계 S209). 여기에서, (R, W, E) 속성의 변경은 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 내장된 CPU(11)에 의해 실행되어도 되고, 비시큐어부(120)의 CPU(2)에 의해 실행되어도 된다. 어느 경우이라도, 설정 소프트웨어는 그 실행에 앞서, 시큐어 부팅 등에 의해 개찬이 없는 것이 확인되어 있는 것으로 한다.
그런데, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 (rp, tsp1, Data1=(tss1, IDi, rh1, r1, N))을 수취하면, rh2←{0,1} ^ k로 하여, 이하를 실시한다(단계 S210). 이에 의해, 기기A(102) 및 전송 횟수 N의 인증이 이루어진다.
1. rp, tsp1, tss1, IDi, rh1, r1∈{0,1} ^ k인지, 즉, 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지를 검증하고, 또한, IDi가 자신의 것과 일치하는지를 확인한다. 만약 만족하지 않으면, result1:=00, rc1←{0,1} ^ (k-2), rc1:=rc1 || result1로 한다. 그리고, 후술하는 바와 같은 처리는 이것 이상 실행되지 않는다. 여기에서, result1의 값 "00"은 부정한 액세스가 있었던 것을 나타낸다. 만약 만족하는 경우는, 이하의 조작을 실행한다.
2. r1=PRF(ski, tss1 || IDi || rh1 || N || 1)을 만족시키는지를 검증한다. 만약 만족하는 경우, result1을, 기기A(102) 및 전송 횟수 N의 인증에 성공한 것을 나타내는 result1:=01로 하고, 만족하지 않는 경우는, result1을 기기A(102) 및 전송 횟수 N의 인증에 실패한 것을 나타내는 result1:=10으로 한다. 또한, 분할수 "N"이 하드웨어 시큐리티 모듈 회로(10)에 송부되었으므로, 하드웨어 시큐리티 모듈 회로(10)는 기기A(102)로부터 데이터가 몇 번이 전송되어 오는지(즉 데이터가 몇개로 분할되었는지)를 파악할 수 있다.
3. 난수 rc1←{0,1} ^ k-2로 하고, rc1:=rc1 || result1로 한다.
4. r2:=PRF(ski, tss1 || tsp1 || IDi || rh2 || rc1 || N)을 계산한다. 여기에서, r2는 전송 횟수 N에 대한 서명이다. 그리고, 기기B(110)는 Data2:=(tss1, IDi, rh2, rc1, N, r2)로 하고, (rp, tsp1, Data2)를 기기B(110)의 비시큐어부(120)에 송부한다(단계 S220).
5. 기기B(110)의 비시큐어부(120)는 Data2를 수취하면, 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한 후(단계 S221), (2, rp, tsp1, Data2)를 기기A(102)에 송부한다(단계 S222). 여기에서, "2"는 세션 정보에 있어서의 2번째 처리를 나타낸다. 송부가 완료되면, 비시큐어부(120)는 해당 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한 후, Data2를 소거한다. 또한, 비시큐어부(120)는 기기A(102)에서의 Data3의 수신에 대비하여 Data3을 배치하는 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한다(단계 S223).
또한, (R, W, E) 속성의 갱신은, 도 3~도 9에 나타낸 (R, W, E) 속성 제어 기구(액세스 제어 회로(20))를 이용하여 실시되어도 된다. 또한, 도 3~도 9에 나타낸 (R, W, E) 속성 제어 기구를 이용하지 않는 경우는, 메모리 프로텍션 유닛(MPU) 또는 메모리 관리 유닛(MMU)를 이용하여 설정이 실시되어도 된다. 또한, 도 6의 기구를 이용하는 경우, R 속성과 W 속성이 비록 0으로 되어 있어도 하드웨어 시큐리티 모듈 회로(10)의 설정에서 판독 및 기록을 가능하게 할 수 있으므로, 이를 고려한 속성 변경을 실시할 필요가 있다. 도 6에 있어서 S1과 S2의 천이가 이루어지지 않은 경우는, 갱신 가능한 범위가 제한되기 때문에, 그 제한에 따른 형태로 속성 변경을 실시할 필요가 있다. 이는 후술하는 실시형태 2의 변형예에서도 동일하다.
또한, 기기A(102)부터 기기B(110)의 비시큐어부(120)에의 송부에 시간 제약이 있는 경우로서 tsp가 신뢰할 수 있는 경우는 상기 1. 의 사이즈 체크 시에, tss1과 tsp1를 비교함으로써, 시간 제약의 검증을 실시해도 된다. 또한, 인증 대상 단말에서의 인증 처리에의 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계가 신뢰할 수 있는 경우는, tsp1 과 인증 단말에서의 인증 결과 수취 시간(이하 tsp'라고 기재)을 비교함으로써, 시간 제약의 확인을 실시해도 된다. 이에 의해, 처리에 너무 긴 시간을 요하는 경우에 부적절한 처리를 검출할 수 있다. 이는 후술하는 실시형태 2의 변형예에서도 동일하다.
(1-3) 기기A에서의 인증 결과 검증:
기기B의 비시큐어부(120)는 (2, rp, tsp1, Data2)를 기기A(102)에 송부한다(S222). 기기A(102)는 (2, rp, tsp1, Data2=(tss1, IDi, rh2, rc1, N, r2))를 수취하면, 이하의 처리를 실행한다(단계 S224). 이에 의해, 전송 대상 데이터를 전송하기 전에 기기A(102)와 기기B(110)와의 상호 인증이 실시되게 된다.
기기A(102)는 rp, tss1, tsp1, IDi, rh2, rc1, r2∈{0,1} ^ k, 또한, N∈{0,1} ^ l인지, 즉, 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지를 검증하고, 만족하지 않으면, result2:=11로 한다. 만약 만족한다면, 기기A(102)는 r2=PRF(ski, tss1 || tsp1 || IDi || rh2 || rc1 || N)인지(즉 서명이 올바른지 여부)를 검증한다. 기기A(102)는, 만약 올바르다면 result2:=rc1의 하위 2bit로 하고, 그렇지 않으면 result2를 상호 인증에 실패한 것을 나타내는 result2:=11로 한다.
그리고, 기기A(102)는 result2를 인증 결과로서 출력하고, 이를 기록한다. 여기에서, result2가 "01"을 나타내는 경우, 데이터 분할 수 N이 개찬되는 경우 없이 기기A(102)로부터 기기B(110)에 통지되어, 기기A(102)와 기기B(110) 사이에의 상호 인증이 성공한 것을 의미한다. result2가 "10"을 나타내는 경우, 수신 에러(메시지 개찬의 가능성 있음)가 발생된 것을 의미한다. 그리고, 기기A(102)는 result2=01인 경우, 전송 횟수를 나타내는 인덱스 변수 j를 j=1(초기값)로 한다. 그렇지 않은 경우, 처리는 종료한다.
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)에 인증 데이터를 송부 후, 기기A(102)가 기기B(110)의 비시큐어부(120)로부터의 인증 데이터를 취득하기까지의 사이에 시간 제약이 있는 경우, 상기 사이즈 체크 시에, tss1과 기기A(102)에서의 현재 시각을 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 또한, 기기B(110)의 비시큐어부(120)로부터의 인증 데이터의 검증 성공 여부의 기기A(102)에의 송부에 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계가 신뢰할 수 있는 경우는, tsp'가 추가된 데이터를 기기B(110)의 비시큐어부(120)로부터 기기A(102)에 송부하고, tsp'와 tss1을 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 이는 후술하는 실시형태 2의 변형예에서도 동일하다.
실시형태 1의 변형예에 따른 반도체 장치(1)(기기B(110))는 외부 기기인 기기A(102)로부터, 기기B(110)에 전송 대상 데이터가 전송되는 경우에, 하드웨어 시큐리티 모듈 회로(10)가 비시큐어부(120)의 메모리 영역을 통해 인증 데이터(Data1, Data2)를 기기A(102)로부터 수신하고, 기기A(102)로 송신한다. 이에 의해, 반도체 장치(1)(기기B(110))는 기기A(102)와 상호 인증을 실시할 수 있다. 따라서 전송 대상 데이터가 전송될 때에 공격자 등이 상대방측의 기기로 가장하는 것을 억제하는 것이 가능해진다.
실시형태 1의 변형예에 따른 데이터 수수 시퀀스는 rp가 개찬되면, 대응하는 세션이 비존재가 되거나, 존재한다고해도 다른 세션에서의 기기B(110)에서의 인증이 실시되어 인증이 실패하기 때문에, 페일 세이프이다. 또한, 실시형태 1의 변형예에 따른 데이터 수수 시퀀스는 rh2가 개찬된 경우도, 기기A(102)의 인증된 암호의 복호 처리 여부에 대한 검증이 실패하기 때문에, 페일 세이프이다. 또한, 실시형태 1의 변형예에 따른 데이터 수수 시퀀스는 기기A(102)에서의 PRF를 이용한 검증 수단에 의해 공격자 등이 rc1의 값을 개찬하여도, 기기A(102)에서 검증 합격이라고 할 수 없다. 또한, 실시형태 1의 변형예에 따른 데이터 수수 시퀀스는 tsp1이 개찬된 경우도, 기기A(102)에서의 인증 결과의 검증 수단에 의해 기기A(102)에서 검증 합격은할 수 없다. 즉, rp, rh2, tsp1 어느 쪽을 개찬해도, 공격자 등은 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)로 구성한 Data2를 검증 합격이라고 할 수 없다. 따라서 rp, rh2, rc1의 전부 또는 어느 쪽이 개찬된 경우, 어떠한 개찬이 있었다는 것을 검지하는 것이 가능해진다. 또한, 개찬에 의한 인증 실패나 검증 실패를 효율적으로 검출할 목적으로, tsp1 대하여 해시 값을 부가하여도 된다.
(2) 전체에서 암호화된 데이터의 반복 분할 전송 처리:
이하, 처리(2-1)~(2-3)이 기기A(102)로부터 기기B(110)로의 분할 데이터{c1[j]; j=1, ..., N}의 전송이 완료될 때까지, 반복 실행된다. 여기에서, 기기A(102)와 기기B(110)와의 상호 인증은 데이터 분할 전송 처리에서는 실시되지 않는다.
(2-1) 전송 데이터의 기기A에서의 구축:
기기A(102)는, j=1이라고 하여, 이하를 실시한다.
1. Data3:=(tss1, IDi, N, j, c1[j])를 생성하고(단계 S231), 기기B(110)의 비시큐어부(120)에 (j+2, rp, Data3)을 송부한다(단계 S232).
(2-2) 기기B에서의 데이터 복호와 데이터 저장, 및 결과 수집:
기기B(110)의 비시큐어부(120)는 현재의 시각을 tspj←TimeStamp로서 선택하고, Data3을 수취하면, 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한다(단계 S233). 비시큐어부(120)는, 그 후, (rp, tspj, Data3)을 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 송부한다(단계 S234).
송부가 완료되면, 비시큐어부(120)는 해당 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한 후, Data3을 소거한다. 또한, 비시큐어부(120)는 기기B(110)에서의 Data4의 수신에 대비하여 Data4를 배치하는 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한다(단계 S235). 여기에서, (R, W, E) 속성의 변경은 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 내장된 CPU(11)에 의해 실행되어도 되고, 비시큐어부(120)의 CPU(2)에 의해 실행되어도 된다. 어느 경우이라도, 설정 소프트웨어는 그 실행에 앞서, 시큐어 부팅 등으로 개찬이 없는 것이 확인되어 있는 것으로 한다.
그런데, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 (rp, tspj, Data3=(tss1, IDi, N, j, c1[j]))를 수취하면, enc_data_with_crc:={}이라고 하여, 이하를 실시한다(단계 S240).
1. rp, tss1, tspj, IDi, c1[j]∈{0,1} ^ k, 또한 N, j∈{0,1} ^ l 인지, 즉, 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지를 검증한다. 또한, IDi가 자신의 것과 일치하는지를 확인한다. 만약 만족하지 않으면, result1:=00, rc←{0,1} ^ (k-2), rc1:=rc1 || result1로 한다. 만약 만족하는 경우는, 이하의 조작을 실행한다.
2. enc_data_with_crc:=enc_data_with_crc∪c1[j]를 산출하고, result1:=01로 한다.
3. 난수 rc1←{0,1} ^ k-2로 하고, rc1:=rc1 || result1로 한다.
4. 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 Data4:=(tss1, IDi, rc1, N, j)로 하여, (rp, tspj, Data4)를 기기B(110)의 비시큐어부(120)에 송부한다(단계 S250). 만약 j=N 이고 rc1의 최하위 비트가 1이면, N 분할한 데이터의 수신 동작을 완료한다.
5. 기기B(110)의 비시큐어부(120)는 Data4를 수취하면, 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정하고(단계 S252), 그 후, (j+2, rp, tspj, Data4)를 기기A(102)에 송부한다(단계 S254). 송부가 완료되면, 비시큐어부(120)는 해당 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한 후, Data4를 소거한다. j<N인 경우, 기기A(102)에서의 Data3의 수신에 대비하여, Data3을 배치하는 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한다(단계 S256).
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)에의 송부에 시간 제약이 있는 경우로서 tspj를 신뢰할 수 있는 경우는, 상기 1의 사이즈 체크 시에, tss1과 tspj를 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 또한, 인증 대상 단말에서의 인증 처리에의 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계를 신뢰할 수 있는 경우는 tspj와 인증 단말에서의 인증 결과의 수취 시간(이하 tsp'라고 기재)을 비교함으로써, 그 시간 제약의 확인을 실시해도 된다.
(2-3) 기기A에서의 인증 결과 검증:
기기B(110)의 비시큐어부(120)는 (j+2, rp, tspj, Data4)를 기기A(102)에 송부한다(S254). 기기A(102)는 (j+2, rp, tspj, Data4=(tss1, IDi, rc1, N, j))를 수취하면, 이하의 처리를 실행한다(단계 S257).
기기A(102)는 rp, tss1, tspj, IDi, rc1∈{0,1} ^ k, 또한 N, j∈{0,1} ^ l 이거나, 즉, 각각의 데이터의 길이가 규정값 대로의 길이로 되어 있는지를 검증하고 만족하지 않으면 result2:=00으로 한다. 만약 만족한다면, 기기A(102)는 result2:=rc의 하위 2bit로 한다. 기기A(102)는 result2=01이면, j:=j+1로 한다. 그리고, 기기A(102)는, j>N일 때, 기기A(102)에서의 분할 데이터의 전송을 완료한다. 여기에서, result2가 "01"을 나타내는 경우, 데이터 c1[j]가 사이즈를 유지한 채로, 기기B(110)의 데이터 저장 영역에의 데이터 c1[j]의 저장이 성공했다는 것을 의미한다. result2가 "00"을 나타내는 경우, 데이터 사이즈가 일치하지 않은 것을 의미한다.
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)로 분할한 인증된 암호 데이터를 송부 후, 기기A(102)가 기기B(110)의 비시큐어부(120)로부터 응답을 취득할 때까지의 사이에 시간 제약이 있는 경우, 상기 사이즈 체크 시에, tss1과 기기A(102)에서의 현재 시각을 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 또한, 기기B(110)의 비시큐어부(120)로부터의 분할한 인증된 암호 데이터의 사이즈 체크 성공 여부의 기기A(102)에의 송부에 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계를 신뢰할 수 있는 경우는, tsp'가 추가된 데이터를 기기B(110)의 비시큐어부(120)로부터 기기A(102)에 송부하고 tsp'와 tss1를 비교함으로써, 그 시간 제약의 확인을 실시해도 된다.
실시형태 1의 변형예에 따른 데이터 수수 시퀀스는 후술하는 (3) 결합 데이터의 복호와 데이터 저장을 수반하는 상호 인증 처리에서의 분할한 인증된 암호 데이터를 모두 결합 후, 인증된 암호 방식으로 인증과 복호를 실시한다. 따라서 {c1[j]; j=1, ..., N}의 전부 또는 어느 하나가 개찬된 경우, 어떠한 개찬이 있었다는 것을 검지할 수 있다.
(3) 결합 데이터의 복호와 데이터 저장을 수반하는 상호 인증 처리:
(3-1) 기기 인증 정보의 기기A에서의 구축:
(2)의 반복 실행으로, 기기A(102)는, j>N이 만족되면, (2)의 반복 실행 완료를 식별하고, 하기를 실시한다(단계 S262).
1. 현재의 시각을 tss2←TimeStamp로서 선택한다.
2. 난수를 rh3←{0,1} ^ k로서 선택한다.
3. r3:=PRF(ski, tss1 || tss2 || IDi || rh0 || rh3 || N || N+1)을 계산한다. 여기에서, 마지막의 "N+1"은 분할 데이터의 전송을 완료했으므로 전송 대상 데이터를 복호하는 취지를 지시하기 위한 것이다. 그리고, 기기A(102)는 Data5:=(tss1, tss2, IDi, rh0, rh3, r3, N, N+1)로 하여, 기기B(110)의 비시큐어부(120)에 (j+2, rp, Data5)를 송부한다(단계 S263). 여기에서, 연산자 "||"는 비트 연접을 나타낸다.
(3-2) 기기B에서의 데이터 복호와 데이터 저장, 및 결과 수집:
기기B(110)의 비시큐어부(120)는 Data5를 저장하는 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한다(단계 S264). 즉, (R, W, E) 속성은 기록만 가능하게 설정된다. 또한, 비시큐어부(120)는 현재의 시각을 tspN+1←TimeStamp로서 선택하고, Data5를 수취하면, 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한다(단계 S265). 즉, (R, W, E) 속성은 판독만 가능하게 설정된다.
그 후, 비시큐어부(120)는 (rp, tspN+1, Data5)를 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 송부한다(단계 S266). 송부가 완료되면, 비시큐어부(120)는 비시큐어부(120)의 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한 후, Data5를 소거한다(단계 S267). 또한, 비시큐어부(120)는 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)로부터 수신하는 Data6을 저장하는 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정해 둔다(단계 S281). 여기에서, (R, W, E) 속성의 변경은 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 내장된 CPU(11)에 의해 실행되어도 되고, 비시큐어부(120)의 CPU(2)에 의해 실행되어도 된다. 어느 경우이라도, 설정 소프트웨어는 그 실행에 앞서, 시큐어 부팅 등에 의해 개찬이 없는 것이 확인되어 있는 것으로 한다.
그런데, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 (rp, tspN+1 Data5=(tss1, tss2, IDi, rh0, rh3, r3, N, N+1))을 수취하면, rh4←{0,1} ^ k로 하여, 이하를 실시한다(단계 S270). 이에 의해, 기기A(102)의 인증, 수신된 데이터의 검증 및 데이터의 복호 처리가 이루어진다.
1. rp, tspN+1 tss1, tss2, IDi, rh0, rh3, r3∈{0,1} ^ k, 또한 N, N+1∈{0,1} ^ l인지, 즉, 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지를 검증한다. 또한, IDi가 자신의 것과 일치하는지를 확인한다. 만약 만족하지 않으면, result2:=0000, rc2←{0,1} ^ (k-4), rc2:=rc2 || result2로 한다. 만약 만족하는 경우는, 이하의 조작을 실행한다. 그리고, 후술하는 바와 같은 처리는 이것 이상 실행되지 않는다. 여기에서, result2의 값 "0000"은 부정한 액세스가 있었던 것을 나타낸다.
2. r3=PRF(ski, tss1 || tss2 || IDi || rh0 || rh3 || N || N+1))을 만족하는지 검증한다. 만족하지 않는 경우, result2를 서명 검증의 결과가 불합격임을 나타내는 result2:=1100으로 한다. 만족하는 경우, r1'=PRF(ski, tss1 || IDi || rh0 || 1)을 계산하여 이하의 조작을 실행한다.
3. data || data_crc=AE. Dec (r1', enc_data_with_crc), 즉 인증된 암호화 대해 (3)의 반복 실행에서 {c1[j]; j=1, ..., N}을 연접한 enc_data_with_crc의 복호를 실시하고 인증이 만족되는지 검증한다. 만약 만족되지 않은 경우, result2를 데이터의 인증 결과가 불합격임을 나타내는 result2:=1000으로 한다. 만약 만족하는 경우는, 이하의 조작을 실행한다.
4. 액세스 제어 설정이 하드웨어 시큐리티 모듈 회로(10)만이 에러 검출 회로(4)에 액세스 가능하도록 설정된다. 복호하여 얻어진 data의 CRC를 CRC(data)로 산출하고, data_crc와 일치하는지 검증한다. 일치하지 않는 경우, result2를 CRC체크가 실패했음을 나타내는 result2:=0100으로 한다. 만약 만족하는 경우는, 이하의 조작을 실행한다.
5. 복호로 얻어진 data를 저장하는 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로(즉 기록 가능 및 실행 불가하게) 설정하고, data를 영역 A1에 저장한다(기록한다). 이에 의해, CRC체크에서 합격한(즉 에러가 검출되지 않았던) 데이터를 기록할 때에, 공격자 등으로부터 데이터가 개찬되는 것을 억제할 수 있다. 그리고, 영역 A1의 (R, W, E) 속성을 (1, 0, 1) 또는 (1, 0, 0)으로(즉 판독 가능 및 기록 불가하게) 설정하고, data를 A1로부터 다시 판독하여 data'로 한다. data'의 CRC를 CRC(data)로 산출하고, data_crc와 일치하는지 검증한다. 불휘발성 메모리에 데이터를 기록할 때에 데이터가 파괴될 가능성이 있기 때문에 내고장성을 향상시키기 위하여, 이와 같이, 데이터의 기록 후에 기록한 데이터를 판독하여 CRC체크를 실시한다. 이와 같은 처리에 의해, 데이터를 기록할 때의 에러를 검지하기 위해 데이터를 판독할 때에, 공격자 등으로부터 데이터가 개찬되는 것을 억제할 수 있다.
CRC(data')와 data_crc가 일치하는 경우, 영역 A1의 (R, W, E) 속성을 (1, 0, 1) 또는 (1, 0, 0) 또는 (0, 0, 1)으로(즉 기록 불가하게) 설정한다. 그리고, 영역 A1이 불휘발성 메모리부라면 활성화 처리를 실시한다. 또한, result2를 모든 처리가 성공했음을 나타내는 result2:=0001로 한다. data가 크리티컬한 프로그램이고 비닉성이 필요한 경우는, (0, 0, 1)로 설정함으로써, 실행만 가능하게 한다. 일치하지 않는 경우, 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로(즉 기록 가능 및 실행 불가하게) 설정하고, 영역 A1에 기록한 data를 소거한다. 이에 의해, 부적절한 데이터의 실행 또는 판독을 억제할 수 있다. 그리고, result2를 다시 CRC체크가 실패했음을 나타내는 result2:=0010으로 한다.
6. 액세스 제어 설정이 에러 검출 회로(4)의 처리를 필요로 하는 CPU(2) 등 다른 모듈이 에러 검출 회로(4)에 액세스 가능하게 한다("Default"). 그리고, 난수를 rc2←{0,1} ^ (k-3)으로서 선택하고, rc2:=rc2 || result2∈{0,1} ^ k로 한다.
7. r4:=PRF(ski, tss2 || tspN+1 || IDi || rh4 || rc2 || 0)을 구한다. 그리고, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 Data6:=(tss2, IDi, rh4, rc2, r4)로 하여, (rp, tspN+1 Data6)을 기기B(110)의 비시큐어부(120)에 송부한다(단계 S282).
8. 기기B(110)의 비시큐어부(120)는 Data6을 수취하면, 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한 후(단계 S283), (j+2, rp, tspN+1 Data6)을 기기A(102)에 송부한다(단계 S284). 송부가 완료되면, 비시큐어부(120)는 해당 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한 후, Data6을 소거한다(단계 S285).
또한, (R, W, E) 속성의 갱신은, 도 3~도 9에 나타낸 (R, W, E) 속성 제어 기구(액세스 제어 회로(20))를 이용하여 실시되어도 된다. 또한, 도 3~도 9에 나타낸 (R, W, E) 속성 제어 기구를 이용하지 않는 경우는, 메모리 프로텍션 유닛(MPU) 또는 메모리 관리 유닛(MMU)을 이용하여 설정이 실시되어도 된다. 또한, 도 6의 기구를 이용하는 경우, R 속성과 W 속성이 비록 0으로 되어 있어도 하드웨어 시큐리티 모듈 회로(10)의 설정에서 판독 및 기록을 가능하게 할 수 있으므로 이를 고려한 속성 변경을 실시할 필요가 있다. 도 6에서 S1과 S2의 천이가 이루어지지 않은 경우는, 갱신 가능한 범위가 제한되기 때문에 그 제한에 따른 형태로 속성 변경을 실시할 필요가 있다.
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)에의 송부에 시간 제약이 있는 경우로서 tspN+1를 신뢰할 수 있는 경우는, 상기 1의 사이즈 체크 시에, tss2와 tspN+1을 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 또한, 인증 대상 단말에서의 인증 처리에의 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계를 신뢰할 수 있는 경우는, tspN+1과 인증 단말에서의 인증 결과의 수취 시간(이하 tsp'라고 기재)를 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 이에 의해, 처리에 너무 긴 시간을 요하는 경우에, 부적절한 처리를 검출할 수 있다.
(3-3) 기기A에서의 인증 결과 검증:
기기B(110)의 비시큐어부(120)는 (j+2, rp, tspN+1 Data6)을 기기A(102)에 송부한다(S284). 기기A(102)는 (j+2, rp, tspN+1 Data6=(tss2, IDi, rh4, rc2, r4))를 수취하면, 이하의 처리를 실행한다(단계 S286). 이에 의해, 기기A(102)와 기기B(110)와의 상호 인증이 실시되게 된다.
기기A(102)는 rp, tss2, tspN+1 IDi, rh4, rc2, r4∈{0,1} ^ k인지, 즉, 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지를 검증하고, 만족되지 않으면, result2:=1110으로 한다. 만약 만족한다면, 기기A(102)는 r4=PRF(ski, tss2 || tspN+1 || IDi || rh4 || rc2 || 0)인지 (즉 서명이 올바른지 여부)를 검증한다. 기기A(102)는, 만약 올바르다면 result2:=rc2의 하위 4bit으로 하고, 그렇지 않으면 result2:=1110으로 한다.
그리고, 기기A(102)는 result2를 인증 결과로서 출력하고, 이를 기록한다. 여기에서, result2가 "0001"을 나타내는 경우, 기기A(102)와 기기B(110) 사이의 상호 인증이 성공하고, 데이터 data가 중간자에게 개찬되는 경우도 누설되는 경우도 없고 데이터가 결손되는 경우도 없이, 기기B(110)의 데이터 저장 영역에 데이터 저장을 실시하는 것이 성공했음을 의미한다. 또한, result2가 "0010"을 나타내는 경우, 기록에서의 데이터 결손에 의한 기록 실패를 의미한다. 또한, result2가 "0100"을 나타내는 경우, 인증·복호는 성공했지만 기록 전에 데이터 결손이 발생된 것을 의미한다. 또한, result2가 "1000"을 나타내는 경우, enc_data_with_crc의 인증된 암호 방식에서의 인증이 실패한 것, 즉, {c1[j]; j=1, ..., N} 중 어느 하나에 개찬의 가능성이 있다는 것을 의미한다. 또한, result2가 "1100"을 나타내는 경우, 수신 에러(메시지 개찬의 가능성 있음)가 발생된 것을 의미한다.
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)에 인증 데이터를 송부 후, 기기A(102)가 기기B(110)의 비시큐어부(120)로부터의 인증 데이터를 취득하기까지의 사이에 시간 제약이 있는 경우, 상기 사이즈 체크 시에, tss2와 기기A(102)에서의 현재 시각을 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 또한, 기기B(110)의 비시큐어부(120)로부터의 인증된 암호 데이터의 복호 조작의 성공 여부의 기기A(102)에의 송부에 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계를 신뢰할 수 있는 경우는, tsp'가 추가된 데이터를 기기B(110)의 비시큐어부(120)로부터 기기A(102)에 송부하고 tsp'와 tss2를 비교함으로써, 그 시간 제약의 확인을 실시해도 된다.
실시형태 1의 변형예에 따른 데이터 수수 시퀀스는 rp가 개찬되면, 대응하는 세션이 비존재가 되거나, 존재했다고 해도 상이한 세션에서의 기기B(110)에서의 인증이 실시되어 인증이 실패하기 때문에 시퀀스가 계속되지 않으므로, 페일 세이프이다. 또한, 실시형태 1의 변형예에 따른 데이터 수수 시퀀스는 rh4이 개찬된 경우도, 기기A(102)의 인증된 암호의 복호 처리 여부에 대한 검증이 실패하기 때문에, 페일 세이프이다. 또한, 실시형태 1의 변형예에 따른 데이터 수수 시퀀스는 기기A(102)에서의 인증된 암호의 복호 조작의 성공 여부에 대한 검증 수단에 의해, 공격자 등이 rc2의 값을 개찬하여도, 기기A(102)에서 검증 합격이라고 할 수 없다. 또한, 실시형태 1의 변형예에 따른 데이터 수수 시퀀스에서는 tspN+1이 개찬된 경우도, 기기A(102)에서의 인증 결과의 검증 수단에 의해, 기기A(102)에서 검증 합격이라고 할 수 없다. 즉, rp, rh4, tspN+1 중 어느 하나를 개찬하여도, 공격자 등은, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에서 구성한 인증된 암호의 복호 처리 여부를, 기록 성공이나 검증 합격이라고 할 수 없다. 따라서 rp, rh4, rc2의 전부 또는 어느 하나가 개찬된 경우, 어떠한 개찬이 있었다는 것을 검지하는 것이 가능해진다. 또한, 개찬에 의한 인증 실패나 검증 실패를 효율적으로 검출할 목적으로, tspN+1에 대하여 해시 값을 부가해도 된다.
또한, 실시형태 1의 변형예에 따른 데이터 수수 시퀀스는 데이터 사이즈에 제한이 있는 경우, 전송 대상 데이터의 전송 전후로 상호 인증을 실시하고, 전송 대상 데이터 전체에 CRC를 부가하여 인증된 암호 방식으로 암호화하고, 그 암호화된 데이터 전체를 분할하여 전송하고 있다. 따라서 분할된 데이터 각각의 전송 시에 상호 인증이 필요하지 않다. 따라서, 실시형태 1의 변형예에 따른 데이터 수수 시퀀스에서는 전송 횟수마다 암호화하여 전송하는 것보다도, 효율적으로 전송하는 것이 가능하다.
(실시형태 2)
다음으로, 실시형태 2에 관하여 설명한다. 도 11~도 13에 나타낸 시퀀스 도면은, 인증된 암호 방식을 이용한, 개찬 내성과 비닉성을 가진 기능 안전 고려한 데이터 수수 프로토콜을 제공한다. 한편, 개찬 내성만의 보증이 필요한 경우는, 서명 발행 검증만으로 기능 안전 고려한 시퀀스가 구성 가능하다. 여기에서, 기능 안전 고려이란, 통신로에서의 데이터 오류나 하드웨어 고장으로 인한 데이터 오류에의 대응 나타낸다.
도 20~도 22는 실시형태 2에 따른 인증 시스템(100)에서 실행되는 데이터 수수 시퀀스이다. 또한, 실시형태 2에 따른 인증 시스템(100)의 구성은 도 10에 나타낸 실시형태 1에 따른 인증 시스템(100)과 실질적으로 동일하므로, 설명을 생략한다. 또한, 기기A(102) 및 기기B(110)에 대한 공통 대칭 키의 초기 설정으로서, 하기 설정이 사전에 이루어져 있는 것으로 한다.
시큐리티 파라미터를 k이라고 하여, 기기A(102A)는 1 ^ k를 입력한다. 기기A(102)는 인증 식별자 IDi∈{0,1} ^ k가 할당되어 있는 기기B(110)에 대하여 대칭 키 ski←{0,1} ^ k를 선택하고, (ski, IDi)를 송부한다. 기기B(110)는 (ski, IDi)를 불휘발성 메모리에 보존한다. 또한, 기기B(110)는 인증 식별자 IDi의 집합 ID를 기기A(102)에 송부한다. 여기에서, 기기B(110)의 총수를 N이라고 하고, i∈[1, N]이라고 한다. 예를 들면, 기기B(110)를 출하하기 전에 이와 같은 초기 설정을 실행함으로써, 각 기기B(110)에 개별 키를 설정함과 동시에, 기기A(102)에 같은 키를 저장해도 된다. 또한, 기기B(110)의 비시큐어부(120)는 기기B(110)에 내장된 하드웨어 시큐리티 모듈 회로(10)에 저장된 IDi를 판독하는 것이 가능한 것이라고 한다. 단, 덮어쓰기 변경이나 소거는 적절한 액세스 제어에 의해 할 수 없는 것으로 한다.
(1) 기기 인증 정보의 기기A에서의 구축:
기기B(110)의 비시큐어부(120)는 하드웨어 시큐리티 모듈 회로(10)로부터 IDi를 취득한다(단계 S301). 비시큐어부(120)는 하드웨어 시큐리티 모듈 회로(10)로부터 IDi를 판독해도 되고, 하드웨어 시큐리티 모듈 회로(10)로부터 IDi를 수신해도 된다. 비시큐어부(120)는 IDi를 얻으면, 세션 관리를 위해 세션 정보 rp∈{0,1} ^ k를 선택하고, (단계 S302), (1, rp, IDi)를 기기A(102)에 송부한다(단계 S303). 여기에서, "1"은 세션 정보 rp에 있어서의 첫 번째 처리를 나타낸다. 기기A(102)는 (1, rp, IDi)를 수취하면, 하기의 처리를 실시한다(단계 S304). 이에 의해, 기기B(110)가 인증된다.
1. rp, IDi∈{0,1} ^ k인지, 그리고, IDi∈ID인지를 검증한다. 즉, rp, IDi의 비트 길이의 검증 및 IDi가 등록된 것인지 여부의 검증을 실시한다. 만약 상이하다면 처리를 종료한다. 만약 만족한다면 이하를 실행한다.
2. 현재의 시각을 tss←TimeStamp로서 선택한다.
3. 난수를 rh1←{0,1} ^ k로서 선택한다.
4. 전송 데이터 data에 대하여, CRC 또는 ECC를 산출하고, 예를 들면 CRC를 산출한 것으로 하여, data_crc:=CRC(data)로 한다.
5. r1:=PRF(ski, tss || IDi || rh1 || data || data_crc || 1)을 계산한다. 여기에서, r1은 데이터 data에 대한 서명이다. 이와 같이, 실시형태 2에서는 c1(인증된 암호 데이터)를 생성하지 않는다. 다시 말하면, 실시형태 2에서는, 데이터를 암호화하지 않는다.
그리고, 기기A(102)는 Data1:=(tss, IDi, rh1, r1, data, data_crc)로 하여, 기기B(110)의 비시큐어부(120)에 (1, rp, Data1)를 송부한다(단계 S305).
(2) 기기B에서의 데이터 서명 검증과 데이터 저장, 및 결과 수집:
기기B(110)의 비시큐어부(120)는 Data1을 저장하는 메모리 영역의 (R, W, E) 속성을, 예를 들면 상술한 액세스 제어 회로(20)에 의해, (1, 1, 0) 또는 (0, 1, 0) 로 설정한다(단계 S306). 즉, 액세스 제어 회로(20)는 (R, W, E) 속성을 기록 가능 또한 프로그램 실행 불가하게 설정한다. 또한, 비시큐어부(120)는 현재의 시각을 tsp←TimeStamp로서 선택하고, Data1을 수취하면, 비시큐어부(120)의 메모리 영역의 (R, W, E) 속성을, 예를 들면 액세스 제어 회로(20)에 의해, (1, 0, 0)으로 설정한다(단계 S307). 즉, 액세스 제어 회로(20)는 (R, W, E) 속성을 판독만 가능하게 설정한다.
그 후, 비시큐어부(120)는 (rp, tsp, Data1)를 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 송부한다(단계 S308). 이 때, 송부가 완료되면, 비시큐어부(120)는 비시큐어부(120)의 메모리 영역의 (R, W, E) 속성을, 예를 들면 액세스 제어 회로(20)에 의해 (0, 1, 0)으로 설정한 후에 Data1을 소거한다(단계 S309). 여기에서, (R, W, E) 속성의 변경은 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 내장된 CPU(11)에 의해 실행되어도 되고, 비시큐어부(120)의 CPU(2)에 의해 실행되어도 된다. 어느 경우이라도, 설정 소프트웨어는 그 실행에 앞서, 시큐어 부팅 등으로 개찬이 없는 것이 검증되어 있는 것으로 한다.
그런데, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 (rp, tsp, Data1=(tss, IDi, rh1, r1, data, data_crc))를 수취하면, m을 data || data_crc의 사이즈이라고 하고, rh2←{0,1} ^ m이라고 하여(즉 rh2의 비트 길이를 m이라고 하여), 이하를 실시한다(단계 S310). 이에 의해, 기기A(102)의 인증 및 수신된 데이터의 검증이 이루어진다.
1. rp, tsp, tss, IDi, rh1, r1, data, data_crc∈{0,1} ^ k인지, 즉, 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지를 검증한다. 또한, IDi가 자신의 것과 일치하는지를 확인한다. 이에 의해, 간단한 스크리닝이 이루어진다.
만약 만족하지 않으면, result1:=000, rc←{0,1} ^ (k-3), rc:=rc || result1로 한다. 그리고, 후술하는 바와 같은 처리는 이것 이상 실행되지 않는다. 여기에서, result1의 값 "000"은 부정한 액세스가 있었던 것을 나타낸다. 만약 만족하는 경우는, 이하의 조작을 실행한다.
2. r1=PRF(ski, tss || IDi || rh1 || data || data_crc || 1), 즉 인증(서명 검증)이 만족되는지를 검증한다. 만약 만족하지 않으면 result1을ㅡ 서명 검증이 실패했음을 나타내는 result1:=110으로 한다. 만약 만족하는 경우는, 이하의 조작을 실행한다.
3. 예를 들면, 액세스 제어 회로(20)에 의해, 액세스 제어 설정이, 하드웨어 시큐리티 모듈 회로(10)만이 에러 검출 회로(4)에 액세스 가능하도록 설정된다. data의 CRC를 data_crc와는 별도로 CRC(data)로 산출하고, data_crc와 일치하는지 검증한다. 일치하지 않는 경우, result1을 CRC체크가 실패했음을 나타내는 result1:=100으로 한다. 만약 만족하는 경우는, 이하의 조작을 실행한다.
여기에서, 액세스 제어 기구가 없는 경우는, 기기B(110)의 비시큐어부(120)에 배치되어 있는 에러 검출 회로(4)에 CRC체크를 의뢰하게 된다. 이 경우는 하드웨어 시큐리티 모듈 회로(10)는 난수 rh2'← {0,1} ^ k를 선택하고, r0:=PRF(ski, tss || IDi || rh2'|| data || data_crc || 2)로 하여, data를 기기B(110)의 비시큐어부(120)에 배치되어 있는 에러 검출 회로(4)에 송부한다. 이에 의해, 하드웨어 시큐리티 모듈 회로(10)는 CRC체크를 에러 검출 회로(4)에 위양(委讓)하고, 결과 및 data_crc2를 수취한다. 이어서, 하드웨어 시큐리티 모듈 회로(10)는 데이터 개찬이 없는 것의 확인으로서, r0=PRF(ski, tss || IDi || rh2'|| data || data_crc2 || 2)가 만족되는지 검증하고, 만족되지 않는 경우 또는 수신 결과가 NG인 경우는, result1:=100으로 한다. 만약 만족하고 결과가 OK인 경우는, 이하의 조작을 실행한다.
4. data를 저장하는 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로(즉 기록 가능 및 실행 불가하게) 설정하고, data를 영역 A1에 저장한다(기록한다). 이에 의해, CRC체크로 합격한(즉 에러가 검출되지 않았던) 데이터를 기록할 때에, 공격자 등으로부터 데이터가 개찬되는 것을 억제할 수 있다. 그리고, 영역 A1의 (R, W, E) 속성을 (1, 0, 1) 또는 (1, 0, 0)으로(즉 판독 가능 및 기록 불가하게) 설정하고, data를 A1로부터 다시 판독하여 data'로 한다. data'CRC를 CRC(data')로 산출하여, data_crc와 일치하는지 검증한다. 불휘발성 메모리에 데이터를 기록할 때에 데이터가 파괴될 가능성이 있기 때문에, 내고장성을 향상시키기 위해, 이와 같이, 데이터의 기록 후에 데이터를 판독하여 CRC체크를 실시한다. 이와 같은 처리에 의해, 데이터를 기록할 때의 에러를 검지하기 위해서 데이터를 판독할 때에 공격자 등으로부터 데이터가 개찬되는 것을 억제할 수 있다.
CRC(data')와 data_crc가 일치하는 경우, 영역 A1의 (R, W, E) 속성을 (1, 0, 1) 또는 (1, 0, 0) 또는 (0, 0, 1)로(즉 기록 불가하게) 설정한다. 영역 A1이 불휘발성 메모리부라면 활성화 처리를 실시한다. 또한, result1을, 모든 처리가 성공했음을 나타내는 result1:=001로 한다. data가 크리티컬한 프로그램이며 비닉성이 필요한 경우는, (0, 0, 1)으로 설정함으로써, 실행만 가능하게 한다. 일치하지 않는 경우, 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로(즉 기록 가능 및 실행 불가하게) 설정하고, 영역 A1에 기록한 data를 소거한다. 이에 의해, 부적절한 데이터의 실행 또는 판독을 억제할 수 있다. 그리고, result1을 다시 CRC체크가 실패했음을 나타내는 result1:=010으로 한다.
여기에서, 에러 검출 회로(4)에 대한 액세스 제어 설정을 할 수 없는 경우는, 에러 검출 회로(4)에 CRC체크를 의뢰하게 된다. 이 경우, 이하와 같은 처리를 실시해도 된다. 즉, 하드웨어 시큐리티 모듈 회로(10)는 난수 rh2''←{0,1} ^ k를 선택하고, r0':=PRF(ski, tss || IDi || rh2' '|| data || data_crc | | 3)으로 하여, data를 기기B(110) 내의 비시큐어부(120)에 배치되어 있는 에러 검출 회로(4)에 송부한다. 이에 의해, 하드웨어 시큐리티 모듈 회로(10)은 CRC체크를 에러 검출 회로(4)에 위양하고, 결과 및 data_crc2'을 수취한다. 이어서, 하드웨어 시큐리티 모듈 회로(10)는 데이터 개찬이 없는 것의 확인으로서, r0'=PRF(ski, tss || IDi || rh2' '|| data || data_crc2'|| 3)이 만족되는지를 검증한다. 만족되지 않는 경우 또는 수취 결과가 NG인 경우는, 하드웨어 시큐리티 모듈 회로(10)는 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (1, 0, 0) 또는 (0, 1, 0)으로 설정하고, 영역 A1에 기록한 data를 소거하고, result1:=010으로 한다. 만약 만족하고 결과가 OK인 경우는, 하드웨어 시큐리티 모듈 회로(10)는 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (1, 0, 0) 또는 (0, 0, 1)로 설정한다. 또한, 하드웨어 시큐리티 모듈 회로(10)는 영역 A1이 불휘발성 메모리부라면 활성화 처리를 실시한다. 또한, 하드웨어 시큐리티 모듈 회로(10)는 result1:=001로 한다. data가 크리티컬한 프로그램이며 비닉성이 필요한 경우는, (0, 0, 1)러 설정함으로써, 실행만 가능하게 한다.
5. 예를 들면, 액세스 제어 회로(20)에 의해, 액세스 제어 설정이 에러 검출 회로(4)의 처리를 필요로 하는 CPU(2) 등 다른 모듈이 에러 검출 회로(4)에 액세스 가능하게 설정된다. 그리고, 난수를 rc←{0,1} ^ (k-3)로 선택하고, rc:=rc || result1∈{0,1} ^ k로 한다.
6. r2:=PRF(ski, tss || tsp || IDi || rh2 || rc)를 구한다. 그리고, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 Data2:=(tss, IDi, rh2, rc, r2)로 하여, (rp, tsp, Data2)를 기기B(110)의 비시큐어부(120)에 전송한다(단계 S320).
7. 기기B(110)의 비시큐어부(120)는 Data2를 수취하면, 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한 후(단계 S321), (2, rp, tsp, Data2)를 기기A(102)에 송부한다(단계 S322). 여기에서, '2'는 세션 정보 rp에 있어서의 2번째의 처리를 나타낸다. 송부가 완료되면, 비시큐어부(120)는 해당 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정하고, 그 후, Data2를 소거한다(단계 S323).
또한, (R, W, E) 속성의 갱신은, 도 3~도 9에 나타낸 (R, W, E) 속성 제어 기구(액세스 제어 회로(20))를 이용하여 실시되어도 된다. 또한, 도 3~도 9에 나타낸 (R, W, E) 속성 제어 기구를 이용하지 않는 경우는, 메모리 프로텍션 유닛(MPU) 또는 메모리 관리 유닛(MMU)을 이용하여 설정이 실시되어도 된다. 또한, 도 6의 기구를 이용하는 경우, R 속성과 W 속성이 비록 0으로 되어 있어도 하드웨어 시큐리티 모듈 회로(10)의 설정에서 판독 및 기록을 가능하게 할 수 있으므로, 이를 고려한 속성 변경을 실시할 필요가 있다. 도 6에 있어서 S1과 S2의 천이가 이루어지지 않은 경우는, 갱신 가능한 범위가 제한되기 때문에, 그 제한에 따른 형태로 속성 변경을 실시할 필요가 있다.
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)에의 송부에 시간 제약이 있는 경우로서 tsp를 신뢰할 수 있을 때는, 상기 1. 사이즈 체크 시에, tss와 tsp를 비교함으로써, 시간 제약의 확인을 실시해도 된다. 또한, 인증 대상 단말에서의 인증 처리에 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계를 신뢰할 수 있는 경우는, tsp와 인증 단말에서의 인증 결과 수취 시각(이하 tsp2이라고 기재)를 비교함으로써, 시간 제약의 확인을 실시해도 된다. 이에 의해, 처리에 너무 긴 시간을 요하는 경우에, 부적절한 처리를 검출할 수 있다.
(3) 기기A에서의 인증 결과의 검증:
기기B(110)의 비시큐어부(120)는 (2, rp, tsp, Data2)를 기기A(102)에 송부한다(S322). 기기A(102)는 (2, rp, tsp, Data2=(tss, IDi, rh2, rc, r2))를 수취하면, 이하의 처리를 실행한다(단계 S324). 이에 의해, 기기A(102)와 기기B(110)와의 상호 인증이 실시되게 된다. 또한, 데이터의 암호화는 실시되고 있지 않으므로, 복호는 이루어지지 않는다.
기기A(102)는 rp, tss, tsp, IDi, rc, r2∈{0,1} ^ k, 또한 rh2∈{0,1} ^ m인지, 즉, 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지를 검증하고, 만족하지 않으면, result2:=000으로 한다. 만약 만족한다면, 기기A(102)는 r2=PRF(ski, tss || tsp || IDi || rh2 || rc)인지(즉 서명이 올바른지 여부)를 검증한다. 기기A(102)는, 만약 올바르다면 result2:=rc의 하위 3bit(즉 result1의 값)로 하고, 그렇지 않으면 result2:=000으로 한다.
그리고, 기기A(102)는 result2를 인증 결과로서 출력하고, 이를 기록한다. 여기에서, result2가 "001"을 나타내는 경우, 데이터 data가 중간자에게 개찬되는 경우 없이, 데이터가 결손되는 경우도 없이, 기기B(110)의 데이터 저장 영역에 데이터 저장을 실시하는 것이 성공했음을 의미한다. 또한, result2가 "010"을 나타내는 경우, 기록에서의 데이터 결손에 의한 기록 실패를 의미한다. 또한, result2가 "100"을 나타내는 경우, 인증은 성공했지만 기록 전에 데이터 결손이 발생된 것을 의미한다. 또한, result2가 "110"을 나타내는 경우, 수신 에러(메시지 개찬의 가능성 있음)가 발생된 것을 의미한다.
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)에 인증된 암호 데이터를 송부 후, 기기A(102)가 기기B(110)의 비시큐어부(120)로부터의 인증된 암호 데이터를 취득할 때 까지의 사이에 시간 제약이 있는 경우, 상기 사이즈 체크 시에, tss와 기기A(102)에서의 현재 시각을 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 또한, 기기B(110)의 비시큐어부(120)로부터의 서명 데이터에 대한 서명 검증의 성공 여부의 기기A(102)에의 송부에 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계를 신뢰할 수 있는 경우는, tsp2가 추가된 데이터를 기기B(110)의 비시큐어부(120)로부터 기기A(102)에 송부하고, tsp2와 tss를 비교함으로써, 그 시간 제약의 확인을 실시해도 된다.
실시형태 2에 따른 반도체 장치(1)(기기B(110))는, 외부 기기인 기기A(102)로부터, 기기B(110)로 전송 대상 데이터가 전송되는 경우에, 하드웨어 시큐리티 모듈 회로(10)가 비시큐어부(120)의 메모리 영역을 통해 인증 데이터(Data1, Data2)를 기기A(102)로부터 수신하고, 기기A(102)로 전송한다. 이에 의해, 반도체 장치(1)(기기B(110))는 기기A(102)와 상호 인증을 실시할 수 있다. 여기에서, 비시큐어부(120)의 메모리 영역은 액세스 제어에 의해 공격자 등으로부터의 액세스가 이루어지지 않도록 구성되어 있다. 따라서 전송 대상 데이터가 전송될 때에 공격자 등이 상대방의 기기로 가장하는 것을 억제하는 것이 가능해진다.
실시형태 2에 따른 데이터 수수 시퀀스는 rp가 개찬되면, 대응하는 세션이 비존재가 되거나, 존재했다고 해도 상이한 세션에서의 기기B(110)에 있어서의 인증 실패로 인해 시퀀스가 계속되지 않기 때문에, 페일 세이프이다. 또한, 실시형태 2에 따른 데이터 수수 시퀀스는 rh2가 개찬되면, 기기A(102)의 서명 데이터에 대한 서명 검증이 실패하기 때문에, 페일 세이프이다. 또한, 실시형태 2에 따른 데이터 수수 시퀀스는 기기A(102)에서의 서명 데이터에 대한 서명 검증 수단에 의해 공격자 등이 rc의 값을 개찬하여도, 기기A(102)에서 검증 합격이라고 할 수 없다. 또한, 실시형태 2에 따른 데이터 수수 시퀀스는 tsp가 개찬된 경우도, 기기A(102)에서의 인증 결과의 검증 수단에 의해 기기A(102)에서 검증 합격이라고 할 수 없다. 즉, rp, rh2, tsp 중 어느 하나를 개찬해도, 공격자 등은, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에서 구성한 서명 데이터에 대한 서명 검증을, 기록 성공이나 검증 합격이라고 할 수 없다. 따라서, 실시형태 2에 있어서는 rp, rh2, rc의 전부 또는 어느 하나가 개찬된 경우, 어떠한 개찬이 있었다는 것을 검지하는 것이 가능해진다. 또한, 개찬에 의한 인증 실패 또는 검증 불합격을 효율적으로 검출할 목적으로, tsp에 대하여 해시 값을 부가해도 된다.
또한, 실시형태 2에 있어서는 전송 대상 데이터를 암호하지 않는다. 그러나 비시큐어부(120)에 대한 액세스 제어를 실시하고 있기 때문에, 데이터 전송 시에 공격자 등이 데이터를 판독하는 것, 및 공격자 등이 데이터(프로그램)을 실행하는 것을 억제하는 것이 가능해진다. 또한, 비록 개찬이 이루어졌다 하더라도, CRC체크에 의해 개찬이 있었다는 것을 검출하는 것은 가능하다. 따라서, 전송 대상 데이터를 암호화하지 않고, 서명 검증만으로, 안전하고 기능 안전을 고려한 데이터 수수를 실현할 수 있다. 이에 의해, 전송 대상 데이터를 암호화하기 위한 처리 및 하드웨어를 삭감하는 것이 가능해진다.
(실시형태 2의 변형예)
다음으로, 실시형태 2의 변형예에 관하여 설명한다. 도 20~도 22에 나타낸 시퀀스 도면은 기기A(102)로부터, 기기B(110)로 전송 대상 데이터를 한 번에 전송하기 위한 시퀀스이다. 여기에서, 전송 대상 데이터의 데이터 사이즈가 전송 가능 사이즈보다도 크기 때문에 데이터를 분할하여 복수회로 나누어 전송하는 것이 필요한 경우, 도 20~도 22에 기재한 시퀀스를 그대로 사용하는 경우, 그 횟수만큼, 서명 검증 등의 처리를 실행 할 필요가 있다.
여기에서, 전송 가능 사이즈에 제한이 있는 경우, 전송 대상 데이터 전체에 대하여 서명 데이터 등을 부가하고 그 서명 데이터 등이 부가된 데이터 전체를 분할하여 전송하는 것이, 전송 횟수마다 서명 데이터 등을 부가하여 전송하는 것보다도, 효율적이라고 생각된다. 예를 들면, 불휘발성 메모리에 데이터 저장을 생각한 경우, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 데이터가 충분히 축적되고 나서, 서명 검증 등을 실시하고, 데이터 영역에의 기록을 실시하는 것이, 효율적이다.
도 23~도 28은 실시형태 2의 변형예에 따른 인증 시스템(100)에서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다. 또한, 실시형태 2의 변형예에 따른 인증 시스템(100)의 구성은 도 10에 나타낸 실시형태 1에 따른 인증 시스템(100)과 실질적으로 동일하므로 설명을 생략한다.
도 23~도 28의 시퀀스 도면을 이용하여, 개찬 내성과 비닉성을 가진 기능 안전 고려한 데이터의 일괄적인 서명 데이터 등의 부가와 서명 데이터 등이 부가된 데이터의 분할 전송에서의 데이터 수수를 가능하게 하는 프로토콜 동작을 설명한다. 여기에서, 도 23~도 28의 시퀀스는 (1) 전송 횟수의 통지를 수반하는 상호 인증 처리(S401~S424), (2) 전체에 서명이 부가된 데이터의 반복 분할 전송 처리(S431~S457), 및 (3) 결합 데이터의 서명 검증과 데이터 저장을 수반하는 상호 인증 처리(S462~S486)를 가진다. 또한, 기기A(102) 및 기기B(110)에 대한 공통 대칭 키의 초기 설정으로서, 하기 설정이 사전에 이루어진 것으로 한다.
시큐리티 파라미터를 k이라고 하여, 기기A(102)는 1 ^ k를 입력한다. 기기A(102)는 인증 식별자 IDi∈{0,1} ^ k가 할당되어 있는 기기B(110)에 대하여 대칭 키 ski←{0,1} ^ k를 선택하고, (ski, IDi)를 송부한다. 기기B(110)는 (ski, IDi)를 불휘발성 메모리에 보존한다. 또한, 인증 식별자 IDi의 집합 ID를 기기A(102)에 송부한다. 여기에서, 기기B(110)의 총수를 M이라고 하고, i∈[1, M]이라고 한다. 예를 들면, 기기B(110)을 출하하기 전에 이와 같은 처리를 실시함으로써, 각 기기B(110)에 개별 키를 설정함과 동시에, 기기A(102)에 같은 키를 저장해도 된다. 또한, 기기B(110)의 비시큐어부(120)는 기기B(110)에 내장된 하드웨어 시큐리티 모듈 회로(10)에 저장된 IDi를 판독 가능하게 한다. 단, 덮어쓰기 변경이나 소거는 적절한 액세스 제어에 의해 할 수 없는 것으로 한다.
(1) 전송 횟수의 통지를 수반하는 상호 인증 처리:
(1-1) 기기 인증 정보의 기기A에서의 구축:
기기B(110)의 비시큐어부(120)는 하드웨어 시큐리티 모듈 회로(10)로부터 IDi를 취득한다(단계 S401). 비시큐어부(120)는 하드웨어 시큐리티 모듈 회로(10)로부터 IDi를 판독해도 되고, 하드웨어 시큐리티 모듈 회로(10)로부터 IDi를 수신해도 된다. 비시큐어부(120)는 IDi를 얻으면, 세션 관리를 위해 세션 정보 rp∈{0,1} ^ k를 선택하고(단계 S402), (1, rp, IDi)를 기기A(102)에 송부한다(단계 S403). 여기에서, "1"은 세션 정보 rp에 있어서의 첫 번째 처리를 나타낸다. 기기A(102)는 (1, rp, IDi)를 수취하면, 하기를 실시한다(단계 S404). 이에 의해, 기기B(110)가 인증되고, 전송 횟수에 서명이 부여된다.
1. rp, IDi∈{0,1} ^ k인지, 그리고, IDi∈ID인지를 검증한다. 만약 상이하다면 처리를 종료한다. 만약 만족한다면, 이하를 실행한다.
2. 현재의 시각을 tss1←TimeStamp로서 선택한다.
3. 난수를 rh1←{0,1} ^ k로서 선택한다.
4. 송신 데이터 data에 대하여 CRC 또는 ECC를 산출하고, 예를 들어 CRC를 산출한 것으로 하여, data_crc:=CRC(data)로 한다. 그리고, 기기A(102)는 data || data_crc를 전송 사이즈를 고려하여 N개로 분할하여, {d [j]; j=1, ..., N}를 구성한다.
5. 분할 전송 개수 N의 통지를 실시하기 위하여, r1:=PRF(ski, tss1 || IDi || rh1 || N || 1)을 계산한다. 여기에서, r1은 전송 대상 데이터에 대한 서명이 아니라 전송 횟수N에 대한 서명이다. 또한, "ski"는 서명 검증용 키이다.
6. Data1:=(tss, IDi, rh1, r1, N)로 하여, 기기B(110)의 비시큐어부(120)에 (1, rp, Data1)을 송부한다(단계 S405).
(1-2) 기기B에서의 데이터 서명 검증과 데이터 저장 및 결과 수집:
기기B(110)의 비시큐어부(120)는 Data1을 저장하는 메모리 영역의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로 설정한다(단계 S406). 즉, (R, W, E) 속성은 기록 가능 및 기록 불가하게 설정된다. 또한, (R, W, E) 속성의 변경은, 예를 들면, 상술한 액세스 제어 회로(20)를 이용하여 실시되어도 된다. 또한, 비시큐어부(120)는 현재의 시각을 tsp1←TimeStamp로서 선택하고, Data1을 수취하면, 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한다(단계 S407). 즉, 액세스 제어 회로(20)는 (R, W, E) 속성을 판독만 가능하게 설정한다.
그 후, 비시큐어부(120)는 (rp, tsp1, Data1)를 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 송부한다(단계 S408). 송부가 완료되면, 비시큐어부(120)는 비시큐어부(120)의 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한 후, Data1을 소거한다(단계 S409). 여기에서, (R, W, E) 속성의 변경은 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 내장된 CPU(11)에 의해 실행되어도 되고, 비시큐어부(120)의 CPU(2)에 의해 실행되어도 된다. 어느 경우이라도, 설정 소프트웨어는 그 실행에 앞서, 시큐어 부팅 등에 의해 개찬이 없는 것이 확인되어 있는 것으로 한다.
그런데, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 (rp, tsp1, Data1=(tss1, IDi, rh1, r1, N))을 수취하면, rh2←{0,1} ^ k로 하여, 이하를 실시한다(단계 S410). 이에 의해, 기기A(102) 및 전송 횟수N의 인증이 이루어진다.
1. rp, tsp1, tss1, IDi, rh1, r1∈{0,1} ^ k인지, 즉, 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지를 검증한다. 또한, IDi가 자신의 것과 일치하는지를 확인한다. 만약 만족하지 않으면, result1:=00, rc1←{0,1} ^ (k-2), rc1:=rc1 || result1로 한다. 그리고, 후술하는 바와 같은 처리는 이것 이상 실행되지 않는다. 여기에서, result1의 값 "00"은 부정한 액세스가 있었던 것을 나타낸다. 만약 만족하는 경우는, 이하의 조작을 실행한다.
2. r1=PRF(ski, tss1 || IDi || rh1 || N || 1)을 만족시키는지를 검증한다. 만약 만족하는 경우, result1을 기기A(102) 및 전송 횟수N의 인증에 성공했음을 나타내는 result1:=01로 하고, 만족하지 않는 경우는, result1을 기기A(102)의 인증에 실패했음을 나타내는 result1:=10으로 한다. 또한, 분할수 "N"이 하드웨어 시큐리티 모듈 회로(10)에 송부됐으므로 하드웨어 시큐리티 모듈 회로(10)는 기기A(102)에서 데이터가 몇 번 전송되어 오는지(즉 데이터가 몇 개로 분할되었는지)를 파악할 수 있다.
3. 난수 rc1←{0,1} ^ k-2로, rc1:=rc1 || result1로 한다.
4. r2:=PRF(ski, tss1 || tsp1 || IDi || rh2 || rc1 || N)을 계산한다. 여기에서, r2는 전송 횟수 N에 대한 서명이다. 그리고, 기기B(110)는 Data2:=(tss1, IDi, rh2, rc1, N, r2)로 하여, (rp, tsp1, Data2)를 기기B(110)의 비시큐어부(120)에 송부한다(단계 S420).
5. 기기B(110)의 비시큐어부(120)는 Data2를 수취하면, 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한 후(단계 S421), (2, rp, tsp1, Data2)를 기기A(102)에 송부한다(단계 S422). 여기에서, '2'는 세션 정보 rp에 있어서의 두 번째의 처리를 나타낸다. 송부가 완료되면, 비시큐어부(120)는 해당 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한 후, Data2를 소거한다. 또한, 비시큐어부(120)는 기기A(102)에서의 Data3의 수신에 대비하여 Data3을 배치하는 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한다(단계 S423).
(1-3) 기기A에서의 인증 결과의 검증:
기기B 비시큐어부(120)는 (2, rp, tsp1, Data2)를 기기A(102)에 송부한다(S422). 기기A(102)는 (2, rp, tsp1, Data2=(tss1, IDi, rh2, rc1, N, r2))를 수취하면, 이하의 조작을 실행한다(단계 S424). 이에 의해, 기기A(102)와 기기B(110)와의 상호 인증이 실시되게 된다.
기기A(102)는 rp, tss1, tsp1, IDi, rh2, rc1, r2∈{0,1} ^ k, 또한 N∈{0,1} ^ l인지, 즉, 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지를 검증하고, 만족하지 않으면, result2:=11로 한다. 만약 만족한다면, 기기A(102)는 r2=PRF(ski, tss1 || tsp1 || IDi || rh2 || rc1 || N)인지(즉 서명이 올바른지 여부)를 검증한다. 기기A(102)는, 만약 올바르다면 result2:=rc1의 하위 2bit로 하고, 그렇지 않으면 result2:=11로 한다.
그리고, 기기A(102)는 result2를 인증 결과로서 출력하고, 이를 기록한다. 여기에서, result2가 "01"을 나타내는 경우, 데이터 분할수 N이 개찬되는 경우 없이 기기A(102)에서 기기B(110)에 통지되어, 기기A(102)와 기기B(110) 사이에서의 상호 인증이 성공한 것을 의미한다. result2가 "10"을 나타내는 경우, 수신 에러(메시지 개찬의 가능성 있음)가 발생된 것을 의미한다. 그리고, 기기A(102)는 result2=01인 경우, 전송 횟수를 나타내는 인덱스 변수 j를 j=1(초기 값)로 한다. 그렇지 않은 경우, 처리는 종료한다.
실시형태 2의 변형예에 따른 데이터 수수 시퀀스는, rp가 개찬되면, 대응하는 세션이 비존재가 되거나, 존재했다고 해도 상이한 세션에서의 기기B(110)에서의 인증이 실시되어 인증이 실패하기 때문에, 페일 세이프이다. 또한, 실시형태 2의 변형예에 따른 데이터 수수 시퀀스는, rh2가 개찬된 경우도, 기기A(102)의 서명 검증이 실패하기 때문에, 페일 세이프이다. 또한, 실시형태 2의 변형예에 따른 데이터 수수 시퀀스는, 기기A(102)의 PRF를 이용한 검증 수단에 의해, 공격자 등이 rc1의 값을 개찬하여도, 기기A(102)에서 검증 합격이라고 할 수 없다. 또한, 실시형태 2의 변형예에 따른 데이터 수수 시퀀스는, tsp1이 개찬된 경우도, 기기A(102)에서의 인증 결과의 검증 수단에 의해 기기A(102)에서 검증 합격이라고 할 수 없다. 즉, rp, rh2, tsp1 중 어느 하나를 개찬해도 공격자 등은 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에서 구성한 Data2를 검증 합격이라고 할 수 없다. 따라서, rp, rh2, rc1의 전부 또는 어느 하나가 개찬된 경우, 어떠한 개찬이 있었다는 것을 검지하는 것이 가능해진다. 또한, 개찬에 의한 인증 실패나 검증 불합격을 효율적으로 검출할 목적으로, tsp1에 대하여 해시 값을 부가하여도 된다.
(2) 전체에 서명이 부여된 데이터의 반복 분할 전송 처리:
이하, 처리(2-1)~(2-3)이 기기A(102)로부터 기기B(110)로의 분할 데이터{d [j]; j=1, ..., N}의 전송이 완료될 때까지, 반복 실행된다. 여기에서, 기기A(102)와 기기B(110)와의 상호 인증은 데이터 분할 전송 처리에서는 실행되지 않는다.
(2-1) 전송 데이터의 기기A에서의 구축:
기기A(102)는, j=1로 하여, 하기를 실시한다.
1. Data3:=(tss1, IDi, N, j, d [j])를 생성하고(단계 S431), 기기B(110)의 비시큐어부(120)에 (j+2, rp, Data3)을 송부한다(단계 S432).
(2-2) 기기B에서의 CRC체크와 데이터 저장, 및 결과 수집:
기기B(110)의 비시큐어부(120)는 현재의 시각을 tspj←TimeStamp로서 선택한다. 또한, 비시큐어부(120)는 (j+2, rp, Data3=(tss1, IDi, N, j, d [j]))를 수취하면, enc_data_with_crc:={}로 하여, 이하를 실시한다(단계 S433).
1. rp, tspj, tss1, IDi, d [j] ∈{0,1} ^ k, 또한 N, j∈{0,1} ^ l, 인지, 즉 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지를 검증한다. 또한, IDi가 자신의 것과 일치하는지를 확인한다. 만약 만족하지 않으면, rc1[0]:=0으로 한다. 만약 만족하는 경우는, 이하의 조작을 실행한다.
2. enc_data_with_crc:=enc_data_with_crc∪d [j]를 산출하고, rc1[0]:=1로 한다.
3. 비시큐어부(120)는 (2, rp, tspj, rc1[0])을 Data3 저장 영역에 기록하고, 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한다.
비시큐어부(120)는, 그 후, (j+2, rp, tspj, rc1[0])을 기기A(102)에 송부한다(단계 S454). 송부가 완료되면, 비시큐어부(120)는 해당 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한 후, rc1[0]을 소거한다(단계 S456). 또한, j<N인 경우, 기기A(102)에서 Data3의 수신에 대비하여 Data3을 배치하는 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한다.
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)에의 송부에 시간 제약이 있는 경우로서 tspj를 신뢰할 수 있는 경우는, 상기 1의 사이즈 체크 시에, tss1과 tspj를 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 또한, 인증 대상 단말에서의 인증 처리에의 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계를 신뢰할 수 있는 경우는, tspj와 인증 단말에서의 인증 결과의 수취 시간(이하 jtsp'라고 기재)를 비교함으로써, 그 시간 제약의 확인을 실시해도 된다.
(2-3) 기기A에서의 인증 결과의 검증:
기기B(110)의 비시큐어부(120)는, (j+2, rp, tspj, rc1[0])을 기기A(102)에 송부한다(S454). 기기A(102)는 (j+2, rp, tspj, rc1[0])을 수취하면, 이하의 처리를 실행한다(단계 S457).
기기A(102)는 rp, tspj∈{0,1} ^ k, 또한, rc1[0] ∈{0,1} ^ 1인지, 즉 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지를 검증하고 rc1[0]=1을 만족시키는지를 검증한다. 모두 만족하면, j:=j+1로 한다. 그리고, j>N이면 기기A(102)에서의 분할 데이터의 전송을 완료한다.
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)로 분할한 서명된 데이터를 송부 후, 기기A(102)가 기기B(110)의 비시큐어부(120)로부터의 응답을 취득할 때까지의 사이에 시간 제약이 있는 경우, 상기 사이즈 체크 시에, tss1과 기기A(102)에서의 현재 시각을 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 또한, 기기B(110)의 비시큐어부(120)로부터의 분할한 서명된 데이터의 사이즈 체크 성공 여부의 기기A(102)에의 송부에 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계를 신뢰할 수 있는 경우는, jtsp'가 추가된 데이터를 기기B(110)의 비시큐어부로부터 기기A(102)에 송부하고 jtsp'와 tss1를 비교함으로써, 그 시간 제약의 확인을 실시해도 된다.
실시형태 2의 변형예에 따른 데이터 수수 시퀀스는 후술하는 (3) 결합 데이터의 서명 검증과 데이터 저장을 수반하는 상호 인증 처리에서의, 분할한 서명된 데이터를 모두 결합 후, 서명 검증을 실시한다. 따라서, {d [j]; j=1, ..., N}의 전부 또는 어느 하나가 개찬된 경우, 어떠한 개찬이 있었다는 것을 검지하는 것이 가능하다.
(3) 결합 데이터의 서명 검증과 데이터 저장을 수반하는 상호 인증부:
(3-1) 기기 인증 정보의 기기A에서의 구축:
(2)의 반복 실행으로, 기기A(102)는, j>N이 만족되면, (2)의 반복 실행 완료를 식별하고, 하기를 실시한다(단계 S462).
1. 현재의 시각을 tss2←TimeStamp로서 선택한다.
2. 난수를 rh0←{0,1} ^ k로서 선택한다.
3. r3:=PRF(ski, tss2 || IDi || rh0 || data || data_crc || N || N+1)을 계산한다. 여기에서, 마지막 "N+1"은 분할 데이터의 전송이 완료되었으므로 전송 대상 데이터에 대하여 서명 검증을 실시하는 취지를 지시하기 위한 것이다. 또한, r3은 전송 대상 데이터에 대한 서명이다. 그리고, 기기A(102)는 Data5:=(tss1, tss2, IDi, rh0, r3, N, N+1)로 하여, 기기B(110)의 비시큐어부(120)에 (j+2, rp, Data5)를 송부한다(단계 S463). 여기에서, 연산자 "||"는 비트 연접을 나타내고, PRF는 의사 랜덤 함수를 나타낸다.
(3-2) 기기B에서의 서명 검증과 데이터 저장, 및 결과 수집:
기기B(110)의 비시큐어부(120)는 Data5를 저장하는 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한다(단계 S464). 즉, (R, W, E) 속성은 기록만 가능하게 설정된다. 또한, 비시큐어부(120)는 현재의 시각을 tspN+1←TimeStamp로서 선택하고, Data5를 수취하면, Data5:=Data5∪data || data_crc를 계산한다. 또한, 비시큐어부(120)는 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한다(단계 S465). 즉, (R, W, E) 속성은 판독만 가능하게 설정된다.
그 후, 비시큐어부(120)는 (rp, tspN+1 Data5)를 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 송부한다(단계 S466). 송부가 완료되면, 비시큐어부(120)는, 비시큐어부(120)의 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한 후, Data5를 소거한다(단계 S467). 또한, 비시큐어부(120)는 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)로부터 수신하는 Data6을 저장하는 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정하여 둔다(단계 S481). 여기에서, (R, W, E) 속성의 변경은 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 내장된 CPU(11)에 의해 실행되어도 되고, 비시큐어부(120)의 CPU(2)에 의해 실행되어도 된다. 어느 경우이라도, 설정 소프트웨어는 그 실행에 앞서, 시큐어 부팅 등에 의해 개찬이 없는 것이 확인되어 있는 것으로 한다.
그런데, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 (rp, tspN+1 Data5=(tss1, tss2, IDi, rh0, rh3, r3, N, N+1, data, data_crc)를 수취하면, rh4←{0, 1} ^ k로 하여, 이하를 실시한다(단계 S470). 이에 의해, 기기A(102)의 인증 및 수신된 데이터의 서명 검증이 이루어진다.
1. rp, tspN+1 tss1, tss2, IDi, rh0, r3, data, data_crc∈{0,1} ^ k, 또한, N, N+1∈{0,1} ^ l인지, 즉, 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지를 검증한다. 또한, IDi가 자신의 것과 일치하는지를 확인한다. 만약 만족하지 않으면, result2:=000, rc2←{0,1} ^ (k-3), rc2:=rc2 || result2로 한다. 만약 만족하는 경우는, 이하의 조작을 실행한다. 그리고, 후술하는 바와 같은 처리는 이것 이상 실행되지 않는다. 여기에서, result2의 값 "000"은 부정한 액세스가 있었던 것을 나타낸다.
2. r3=PRF(ski, tss1 || tss2 || IDi || rh0 || data || data_crc || N || N+1)을 만족하는지 검증한다. 만족하지 않는 경우, result2를 서명 검증의 결과가 불합격임을 나타내는 result2:=110으로 한다. 만족하는 경우, 이하의 조작을 실행한다.
3. 액세스 제어 설정에서 하드웨어 시큐리티 모듈 회로(10)만이 에러 검출 회로(4)에 액세스 가능하게 설정된다. 복호하여 얻어진 data CRC를 CRC(data)로 산출하고, data_crc와 일치하는지 검증한다. 일치하지 않는 경우, result2를 CRC체크가 실패했음을 나타내는 result2:=010으로 한다. 만약 만족하는 경우는, 이하의 조작을 실행한다.
여기에서, 액세스 제어 기구가 없는 경우는, 기기B(110) 내의 비시큐어부(120)에 배치되어 있는 에러 검출 회로(4)에 CRC체크를 의뢰하게 된다. 이 경우는, 하드웨어 시큐리티 모듈 회로(10)는 난수 rh2'← {0,1} ^ k를 선택하고, r0:=PRF(ski, tss || IDi || rh2'|| data || data_crc || 2)로 하여, data를 기기B(110) 내의 비시큐어부(120)에 배치되어 있는 에러 검출 회로(4)에 송부한다. 이에 의해, 하드웨어 시큐리티 모듈 회로(10)은 CRC체크를 에러 검출 회로(4)에 위양하고, 결과와 data_crc2를 수취한다. 이어서, 하드웨어 시큐리티 모듈 회로(10)는 데이터 개찬이 없는 것의 확인으로서, r0=PRF(ski, tss || IDi || rh2'|| data || data_crc2 || 2)가 만족되는지 검증하고, 만족되지 않는 경우 또는 수취 결과가 NG인 경우는, result1:=100으로 한다. 만약 만족하고 있고 결과가 OK인 경우는, 이하의 조작을 실행한다.
4. 서명 검증에서 얻어진 data를 저장하는 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로(즉 기록 가능 및 실행 불가하게) 설정하고, data를 A1에 저장한다(기록한다). 이에 의해, 따라서 CRC체크로 합격한(즉 에러가 검출되지 않았던) 데이터를 기록할 때에, 공격자 등으로부터 데이터가 개찬되는 것을 억제할 수 있다. 그리고, 영역 A1의 (R, W, E) 속성을 (1, 0, 1) 또는 (1, 0, 0)으로(즉 판독 가능 및 기록 불가하게) 설정하고, data를 A1로부터 다시 판독하여 data'로 한다. data'CRC를 CRC(data)로 산출하고, data_crc와 일치하는지 검증한다. 불휘발성 메모리에 데이터를 기록할 때에 데이터가 파괴될 가능성이 있기 때문에 내고장성을 향상시키기 위해, 이와 같은 , 데이터의 기록 후에 기록한 데이터를 판독하여 CRC체크를 실시한다. 이와 같은 처리에 의해 데이터를 기록할 때의 에러를 검출하기 위하여 데이터를 판독할 때에, 공격자 등으로부터 데이터가 개찬되는 것을 억제할 수 있다.
CRC(data')와 data_crc가 일치하는 경우, 영역 A1의 (R, W, E) 속성을 (1, 0, 1) 또는 (1, 0, 0) 또는 (0, 0, 1)로(즉 기록 불가하게) 설정한다. 그리고, 영역 A1이 불휘발성 메모리부라면 활성화 처리를 실시한다. 또한, result2를 모든 처리가 성공했음을 나타내는 result2:=001로 한다. data가 크리티컬한 프로그램이며 비닉성이 필요한 경우는, (0, 0, 1)로 설정함으로써, 실행만 가능하게 한다. 일치하지 않는 경우, 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로(즉 기록 가능 및 실행 불가하게) 설정하고, 영역 A1에 기록한 data를 소거한다. 이에 의해, 부적절한 데이터의 실행 또는 판독을 억제할 수 있다. 그리고, result2를 다시 CRC체크가 실패했음을 나타내는 result2:=010으로 한다.
여기에서, 에러 검출 회로(4)에 대한 액세스 제어 설정을 할 수 없는 경우는 에러 검출 회로(4)에 CRC체크를 의뢰하게 된다. 이 경우, 이하와 같은 처리를 실시해도 된다. 즉, 하드웨어 시큐리티 모듈 회로(10)는 난수 rh2''←{0,1} ^ k를 선택하고, r0':=PRF(ski, tss || IDi || rh2'' || data || data_crc || 3)으로 하여, data'를 기기B(110) 내의 비시큐어부(120)에 배치되어 있는 에러 검출 회로(4)에 송부한다. 이에 의해, 하드웨어 시큐리티 모듈 회로(10)은 CRC체크를 에러 검출 회로(4)에 위양하고, 결과 및 data_crc2'를 수취한다. 이어서, 하드웨어 시큐리티 모듈 회로(10)는 데이터 개찬이 없는 것의 확인으로서, r0'=PRF(ski, tss || IDi || rh2'' || data' || data_crc2' || 3)이 만족되는지를 검증한다. 만족되지 않는 경우 또는 수취 결과가 NG인 경우는, 하드웨어 시큐리티 모듈 회로(10)는 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (1, 0, 0) 또는 (0, 1, 0)으로 설정하고, 영역 A1에 기록한 data를 소거하고, result1:=010으로 한다. 만약 만족하고 결과가 OK인 경우는, 하드웨어 시큐리티 모듈 회로(10)는 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (1, 0, 0) 또는 (0, 0, 1)로 설정하고, 영역 A1이 불휘발성 메모리부라면 활성화 처리를 실시한다. 또한, result1:=001로 한다. data가 크리티컬한 프로그램이며 비닉성이 필요한 경우는, (0, 0, 1)로 설정함으로써, 실행만 가능하게 된다.
5. 액세스 제어 설정이 에러 검출 회로(4)의 처리를 필요로 하는 CPU(2) 등 다른 모듈이 에러 검출 회로(4)에 액세스 가능하게 한다. 그리고, 난수를 rc2←{0,1} ^ (k-3)으로서 선택하고, rc2:=rc2 || result2∈{0,1} ^ k로 한다.
6. r4:=PRF(ski, tss2 || tspN+1 || IDi || rh4 || rc2 || 0)을 구한다. 그리고, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 Data6:=(tss2, IDi, rh4, rc2, r4)로 하여, (rp, tspN+1 Data6)을 기기B(110)의 비시큐어부(120)에 송부한다(단계 S482).
7. 기기B(110)의 비시큐어부(120)는 Data6을 수취하면, 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한 후(단계 S483), (j+2, rp, tsp, Data6)을 기기A(102)에 송부한다(단계 S484). 송부가 완료되면, 비시큐어부(120)는 해당 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한 후, Data6을 소거한다(단계 S485).
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)에의 송부에 시간 제약이 있는 경우로서 tspN+1을 신뢰할 수 있는 경우는, 상기 1의 사이즈 체크 시에, tss2와 tspN+1를 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 또한, 인증 대상 단말에서의 인증 처리에의 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계를 신뢰할 수 있는 경우는, tspN+1과 인증 단말에서의 인증 결과의 수취 시간(이하, tsp'이라고 기재)을 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 이에 의해, 처리에 너무 긴 시간을 필요로 하는 경우에, 부적절한 처리를 검출할 수 있다.
(3-3) 기기A에서의 인증 결과의 검증:
기기B(110)의 비시큐어부(120)는 (j+2, rp, tspN+1, Data6)을 기기A(102)에 송부한다(S484). 기기A(102)는 (j+2, rp, tspN+1, Data6=(tss2, IDi, rh4, rc2, r4))를 수취하면, 이하의 처리를 실행한다(단계 S486). 이에 의해, 기기A(102)와 기기B(110)와의 상호 인증이 실시되게 된다.
기기A(102)는 rp, tss2, tspN+1, IDi, rh4, rc2, r4∈{0,1} ^ k인지, 즉, 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지 검증하고, 만족하지 않으면, result2:=000으로 한다. 만약 만족한다면, 기기A(102)는 r4=PRF(ski, tss2 || tspN+1 || IDi || rh4 || rc2 || 0)인지(즉 서명이 올바른지 여부)를 검증한다. 기기A(102)는, 만약 올바르다면 result2:=rc2의 하위 3bit으로 하고, 그렇지 않으면 result2:=111로 한다.
그리고, 기기A(102)는 result2를 인증 결과로서 출력하고, 이를 기록한다. 여기에서, result2가 "001"을 나타내는 경우, 기기A(102)와 기기B(110) 사이에서의 상호 인증이 성공하고, 데이터 data가 중간자에게 개찬되는 경우 없이, 또는 데이터가 결손되는 경우도 없이, 기기B(110)의 데이터 저장 영역에 데이터 저장을 실시하는 것이 성공했음을 의미한다. 또한, result2가 "010"를 나타내는 경우, 기록에서의 데이터 결손에 의한 기록 실패를 의미한다. 또한, result2가 "100"을 나타내는 경우, 인증은 성공했지만 기록 전에 데이터 결손이 발생된 것을 의미한다. 또한, result2가 "100"을 나타내는 경우, enc_data_with_crc의 서명 검증이 실패한 것, 즉, {d[j]; j=1, ..., N} 중 어느 하나가 개찬의 가능성이 있음을 의미한다. 또한, result2가 "110"를 나타내는 경우, 수신 에러(메시지 개찬의 가능성 있음)가 발생된 것을 의미한다.
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)에 인증 데이터를 송부 후, 기기A(102)가 기기B(110)의 비시큐어부(120)로부터의 인증 데이터를 취득하기까지의 사이에 시간 제약이 있는 경우, 상기 사이즈 체크 시에, tss2와 기기A(102)에서의 현재 시각을 비교함으로써, 그 시간 제약의 확인을 실시해도 된다. 또한, 기기B(110)의 비시큐어부(120)로부터의 서명 데이터에 대한 서명 검증의 성공 여부의 기기A(102)에의 송부에 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계를 신뢰할 수 있는 경우는, tsp'가 추가된 데이터를 기기B(110)의 비시큐어부(120)로부터 기기A(102)에 송부하고, tsp'와 tss2를 비교함으로써, 그 시간 제약의 확인을 실시해도 된다.
실시형태 2의 변형예에 따른 데이터 수수 시퀀스는, rp가 개찬되면, 대응하는 세션이 비존재가 되거나, 존재했다고 해도 상이한 세션에서의 기기B(110)에서의 인증이 실시되어 인증을 실패하기 때문에 시퀀스가 계속되지 않으므로, 페일 세이프이다. 또한, 실시형태 2의 변형예에 따른 데이터 수수 시퀀스는, rh4가 개찬된 경우도, 기기A(102)의 서명 데이터에 대한 서명 검증을 실패하기 때문에, 페일 세이프이다. 또한, 실시형태 2의 변형예에 따른 데이터 수수 시퀀스는, 기기A(102)에서의 서명 데이터에 대한 서명 검증 수단에 의해, 공격자 등이 rc2의 값을 개찬하여도, 기기A(102)에서 검증 합격이라고 할 수 없다. 또한, 실시형태 2의 변형예에 따른 데이터 수수 시퀀스에서는, tspN+1이 개찬된 경우도, 기기A(102)에서의 인증 결과의 검증 수단에 의해, 기기A(102)에서 검증 합격이라고 할 수 없다. 즉, rp, rh4, tspN+1 중 어느 하나를 개찬해도, 공격자 등은, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에서 구성한 서명 데이터에 대한 서명 검증을, 기록 성공이나 검증 합격이라고 할 수 없다. 따라서 rp, rh4, rc2의 전부 또는 어느 하나가 개찬된 경우, 어떠한 개찬이 있었다는 것을 검지하는 것이 가능해진다. 또한, 개찬에 의한 인증 실패나 검증 불합격을 효율적으로 검출할 목적으로, tspN+1에 대하여 해시 값을 부가해도 된다.
또한, 실시형태 2의 변형예에 따른 데이터 수수 시퀀스는, 데이터 사이즈에 제한이 있는 경우, 전송 대상 데이터의 전송 전후로 상호 인증을 실시하고, 전송 대상 데이터 전체에 CRC를 부가하여 서명을 부가하고, 그 서명이 부가된 데이터 전체를 분할하여 전송하고 있다. 따라서 분할된 데이터 각각의 전송 시에, 상호 인증이 불필요해진다. 따라서, 실시형태 2의 변형예에 따른 데이터 수수 시퀀스에서는, 전송 횟수마다 암호화하여 전송하는 것보다도, 효율적으로 전송하는 것이 가능하다.
(실시형태 3)
다음으로, 실시형태 3에 관하여 설명한다. 상술한 실시형태 1 및 실시형태 2에서는, 기기A(102)와 기기B(110)가, 사전에 대칭 키 ski를 공유하는 것을 전제로 하고 있다. 여기에서, 기기의 출하시에 기기에의 키 기록을 실시하는 경우, 기기의 IDi∈ID와 키 ski의 집합을 {(IDi, ski); IDi∈ID, ski←{0,1} ^ k, k: 양의 정수의 시큐리티 파라미터}로 서버(서버(104))가 데이터베이스에 등록되는 것을 생각할 수 있다.
한편, 출하 후에 어느 2개 이상의 기기가 데이터 수수를 실시할지를 미리 예측하는 것은 일반적으로 쉽지 않기 때문에, 기기 조립 후(예를 들면, 기기 사용 시 등)에 공통 대칭 키를 설정할 수 있는 것이 바람직하다. 또한, 기기의 ID를 자유롭게 판독하는 한편, 덮어 쓰기나 소거는 할 수 없다는 것을 전제하는 경우에, 기기A(102)와 기기B(110) 사이의 데이터 수수에 있어서, 기기A(102) 및 기기B(110) 이외의 예를 들면 기기A'에도 완전히 동일한 대칭 키가 배치되는 경우가 있다. 이 경우, 기기B가 데이터를 수신하는 경우, 기기A(102)의 데이터인지 기기A'의 데이터인지를 식별하는 것은 쉽지 않다. 따라서 기기A(102) 및 기기B(110)의 2개의 기기만이 공유하는 대칭 키를 배치할 수 있는 것이 바람직하다.
여기에서, 기기A(102)로부터 기기B(110)에 송신되는 데이터는, 기기A(102)에 의해 생성된 데이터여도 되고, 데이터 송신 서버(서버(104))로부터 별도 시큐어 통신 등 적절한 수단으로 기기A(102)에 배치된 데이터이어도 된다. 특히, 후자의 경우는 TLS(Transport Layer Security)등의 시큐어 프로토콜에 의해, 기기A(102)에 배치된 HSM 내에 저장되어 있는 것이 바람직하다. 또한, 데이터 송신 서버의 데이터베이스에 각 기기의 IDi와 키 ski가 등록되어 있지 않은 상황, 및, 원래 그와 같은 데이터베이스가 없고 각 기기의 IDi와 키 ski는 데이터 송신 서버와는 상이한 서버에서 관리되어 있는 상황도, 고려해야 한다. 실시형태 3에서는, 서버(104)가 기기A(102)와 기기B(110) 사이의 데이터 수수에만 사용되는 키 정보(난수)를 발행한다.
도 29~도 34은, 실시형태 3에 따른 인증 시스템(100)에 있어서 실행되는 데이터 수수 시퀀스를 나타내는 시퀀스 도면이다. 도 29~도 34에 나타낸 시퀀스 도면은 송신원 기기에 의해 생성된(또는 송신원 기기에 별개의 수단으로 시큐어에 배비(配備)된 데이터를, 송신처 기기에 송신하는 프로토콜 동작을 나타낸다. 여기에서, 도 29~도 34에 나타내는 시퀀스 도면은, 송신원 기기와 송신처 기기가 사전에 공통 키를 가지지 않는 전제에 있어서의, 개찬 내성 및 비닉성을 가진 기능 안전을 고려한 데이터 수수 프로토콜 동작을 나타낸다. 또한, 기기A(102) 및 기기B(110)에 대한 공통 대칭 키의 초기 설정으로서, 하기 설정이 사전에 이루어지고 있는 것으로 한다.
시큐리티 파라미터를 k이라고 하여 기기A(102)는 1 ^ k를 입력한다. 서버(104)는 인증 식별자 IDp∈{0,1} ^ k가 할당되어 있는 기기A(102)에 대하여 대칭 키 skp←{0,1} ^ k를 선택하고, (skp, IDp)를 송부한다. 동일하게, 서버(104)는 인증 식별자 IDd∈{0,1} ^ k가 할당되어 있는 기기B(110)에 대하여 대칭 키 skd←{0,1} ^ k를 선택하고, (skd, IDd)를 송부한다. 여기에서, skp는 서버(104)와 기기A(102) 사이의 공통 키이고, skd는 서버(104)와 기기B(110) 사이의 공통 키이다. 기기A(102) 및 기기B(110)는 각각 (skp, IDp) 및 (skd, IDd)에 대응하는 것을, 각각의 불휘발성 메모리에 보존한다. 예를 들면, 기기A(102) 및 기기B(110)를 출하하기 전에 이와 같은 처리를 실시함으로써, 각 기기에 개별 키를 설정해도 된다. 또한, 기기B(110)의 비시큐어부(120)는 기기B(110)에 내장된 하드웨어 시큐리티 모듈 회로(10)에 저장된 IDi를 판독 가능하다. 단, 덮어 쓰기 변경 및 소거는 적절한 액세스 제어에 의해 할 수 없는 것으로 한다.
(1) 기기 인증 정보 및 기기A(102)와 기기B(110) 사이에 배비하는 공통 키 정보 서버에서의 구축:
기기A(102)는, 기기A(102)에서 IDd를 취득한다(단계 S501). 기기A(102)는, 기기B(110)에서 IDd를 판독하여도 되고, 기기B(110)로부터 수신해도 된다. 기기A(102)는 세션 관리를 위해 rp∈{0,1} ^ k를 선택하고(단계 S502), (1, rp, IDd, IDp)를 서버(104)에 송부한다(단계 S503). 서버(104)는 (1, rp, IDd, IDp))를 수취하면, 하기의 처리를 실시한다(단계 S504). 이에 의해, 기기A(102) 및 기기B(110)가 인증되고, 기기A(102)와 기기B(110) 사이의 세션 키가 생성된다.
1. rp, IDd, IDp∈{0,1} ^ k인지, 그리고, IDd, IDp∈ID인지를 검증한다. 만약 상이하다면 처리를 종료한다. 만약 만족하면, 이하를 실행한다.
2. 현재의 시각을 tss←TimeStamp로서 선택한다.
3. 난수를 rh←{0,1} ^ k로서 선택한다.
4. 기기A(102) 및 기기B(110)에 대한 세션 키를 k1←{0,1} ^ k로서 선택한다.
5. 기기A(102)와 서버(104)와의 상호 인증을 위한 정보로서, r1p:=PRF (skp, tss || IDp || rh || 1)을 계산한다.
6. 기기B(110)와 서버(104)와의 상호 인증을 위한 정보로서, r1d:=PRF (skd, tss || IDd || rh || 1)을 계산한다.
7. 기기A(102) 및 기기B(110)에 대하여 세션 키 k1를 송신하기 위하여, 하기를 실시한다.
·기기A(102) 용으로, r1'p:=PRF (skp, tss || IDp || rh || 2) 및, c1p:=AE. Enc (r1'p, k1)를 계산한다. 여기에서, r1'p은 키 k1를 암호화하기 위한 키이다.
·기기B(110) 용으로, r1'd:=PRF (skd, tss || IDd || rh || 2) 및, c1d:=AE. Enc (r1'd, k1)를 계산한다. 여기에서, r1'd은 키 k1를 암호화하기 위한 키이다.
8. 서버(104)는 Data1:=(tss, IDd, rh, r1d, c1d, IDp, r1p, c1p)로 하여, 기기A(102)에 (1, rp, Data1)를 송부한다(단계 S505).
(2) 기기A에서의 서버 기기 인증 정보의 검증과, 기기B에 송신하는 인증된 암호 데이터의 구축:
기기A(102)는 현재의 시각을 tsp←TimeStamp로서 선택하고, 난수 2개를 rcp←{0,1} ^ (k-3), r3p←{0,1} ^ k로서 선택한다. 또한, 기기A(102)는 Data1을 저장하는 메모리 영역의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로(즉 기록 가능 및 실행 불가하게) 설정하고, Data1을 수취하면, 해당 메모리 영역에 Data1을 기록한다. 그리고, 기기A(102)는 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정하고, 이하를 실시한다(단계 S510).
1. rp, tss, IDd, rh, r1d, c1d, IDp, r1p, c1p∈{0,1} ^ k인지, 그리고, IDd, IDp∈ID인지를 검증한다. 만약 만족하지 않으면, result1p:=000, rcp:=rcp || result1p로 난수를 r2p←{0,1} ^ k로서 선택한다. 여기에서, result1p의 값 "000"은 서버(104)와 기기A(102) 사이에서 부정한 액세스가 있었던 것을 나타낸다. 만약 만족한다면, 이하를 실행한다.
2. r1p=PRF (skp, tss || IDp || rh || 1)을 만족하는지 검증하고 만족하지 않은 경우, result1p:=0100으로 한다. 만족하는 경우는, 이하를 실시한다.
·result1p:=001로 한다.
·r1'p:=PRF (skp, tss || IDp || rh || 2), k1:=AE. Dec (r1'p, c1p)를 계산한다. 여기에서, AE. Dec는 인증된 암호 방식에서의 암호이다. 또한, 암호와 서명이 쌍(組)으로서 부여된 경우는, 암호문의 서명 검증을 실시하고, 검증이 통과되면, 암호문의 복호를 실시한다.
·만약 인증된 암호 방식에서의 인증으로, 인증 에러가 나온 경우는, result1p을 result1p:=010에 덮어 쓰기 한다.
3. 기기A(102)에서의 서버(104)의 인증 결과, 및 서버(104)에 의한 기기A(102)의 인증에 이용하는 인증 정보로서, rcp:=rcp || result1p, r2p:=PRF (skp, tss || tsp || IDp || rh || rcp || 1)을 계산한다.
4. 난수를 rh1←{0,1} ^ k로서 선택한다.
또한, 3. 및 4. 는 5. 이후에 실시해도 된다. 또한, 하기 5. 가 실시될 때, 4. 는 실시되지 않아도 된다.
5. result1p=001을 만족하는지 검증하고, 만족하는 경우, 하기를 실시한다. 만족하지 않는 경우는, 6. 이하를 실시한다.
·현재의 시각을 tss1←TimeStamp로서 선택하고, 난수를 rh1←{0,1} ^ k로서 선택한다.
·기기B(110)에의 송신 데이터 data에 대하여, 기기A(102)의 에러 검출 회로(ECC/CRC 처리부)로, 예를 들면 data_crc:=CRC(data)로 하여, CRC를 계산한다. 여기에서, 본 처리는, 적절한 액세스 제한을 수반하는 것으로서, 기기A(102) 내의 HSM 내에서 개찬 내성과 비닉성을 만족하는 범위에서 실시되는 것으로 한다. 이 처리에서, 개찬 내성만의 보증 밖에할 수 없는 경우는, 기기A(102) 내에서는 개찬 내성만 보증 가능하다. 또한, 기기A(102)에서 기기B(110) 내의 HSM에서의 저장에 이르기까지의 경로에서의 중간자 공격에 대해서는, 개찬 내성과 비닉성을 가지게 된다.
·기기A(102)와 기기B(110)와의 상호 인증을 위해, r1''p:=PRF (k1, tss1 || IDd || rh || 2), c1:=AE. Enc (r1''p, tss1 || IDd || rh1 || data || data_crc)를 계산한다.
6. 기기A(102)는 Data2:=(tss, tss1, IDd, rh, r1d, c1d, IDp, r1p, c1p, rcp, r2p, c1)로 하여, 기기B(110)의 비시큐어부(120)에 (1, rp, tsp, Data2)를 송부한다(단계 S522).
(3) 기기B에서의 데이터 복호와 데이터 저장, 및 결과 수집:
기기B(110)의 비시큐어부(120)는 Data2를 저장하는 메모리 영역의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로 설정한다(단계 S521). 또한, 비시큐어부(120)는 Data2를 수취하면(S522), 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한 후(단계 S523), (rp, tsp, Data2)를 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 송부한다(단계 S524). 송부가 완료되면, 비시큐어부(120)는 해당 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한 후, Data2를 소거한다(단계 S525). 여기에서, (R, W, E) 속성의 변경은 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에 내장된 CPU(11)가 실행해도 되고, 비시큐어부(120)의 CPU(2)가 실행해도 된다. 어느 경우이라도, 설정 소프트웨어는 그 실행에 앞서, 시큐어 부팅 등에서 개찬이 없는 것이 확인되어 있는 것으로 한다.
그런데, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 (rp, tsp, Data2=(tss, tss1, IDd, rh, r1d, c1d, IDp, r1p, c1p, rcp, r2p, c1))을 수취하면, 난수 4개를, r2d←{0,1} ^ k, r3d←{0,1} ^ k, rcd←{0,1} ^ (k-3), rcdp←{0,1} ^ (k-4)로 한다. 그리고, 하드웨어 시큐리티 모듈 회로(10)는 이하를 실시한다(단계 S530).
1. rp, tsp, tss, tss1, IDd, rh, r1d, c1d, IDp, r1p, c1p, rcp, r2p, c1∈{0,1} ^ k인지, 즉, 각각의 데이터의 길이가 규정 값 대로의 길이로 되어 있는지, 그리고, IDd, IDp∈ID로 되어 있는지를 검증한다. 만약 만족하지 않으면 result1d:=000, rcd:=rcd || result1d, result1dp:=000, rcdp:=rcdp || result1에로 한다. 여기에서, result1d의 값 "000"은 서버(104)와 기기B(110) 사이에 부정한 액세스가 있었던 것을 나타낸다. 또한, result1에의 값 "000"은 기기A(102)에서 기기B(110) 사이에 부정한 액세스가 있었던 것을 나타낸다. 만약 만족하는 경우는, 이하의 조작을 실행한다.
2. r1d=PRF (skd, tss || IDd || rh || 1)을 만족하는지 검증하고, 만족하지 않은 경우는, result1d:=100으로 한다. 만족하는 경우는 하기를 실시한다.
·result1d:=001로 한다.
·r1'd:=PRF (skd, tss || IDd || rh || 2), k1:=AE. Dec (r1'd, c1d)를 계산한다.
·만약 인증된 암호 방식에서의 인증으로, 인증 에러가 발생된 경우는 result1d을 result1d:=010로 덮어 쓰기 한다.
3. 기기B(110)에서의 서버 인증 결과와, 서버(104)에 의한 기기B(110)의 인증에 이용하는 인증 정보로서, rcd:=rcd || result1d, r2d:=PRF (skd, tss || tsp || IDd || rh || rcd || 1)을 계산한다.
4. result1d=001을 만족하는지 검증하고, 만족하지 않은 경우는, result1dp: 1100으로 한다. 만족하는 경우는, r1''p:=PRF (k1, tss1 || IDd || rh || 2) tss1 || IDd || rh || data || data_crc:=AE. Dec (r1''p, c1)을 계산한다. 이에 의해, c1이 체크된다.
5. tss1 || IDd || rh || data || data_crc:=AE. Dec (r1''p, c1), 즉 인증된 암호에서의 인증된 복호를 실시하고, 인증이 만족되는지를 검증한다. 만약 만족되지 않는 경우, result1dp:=1000으로 한다. 만약 만족하는 경우는, 이하의 조작을 실행한다. 여기에서, AE. Dec는 인증된 암호 방식에서의 암호이다. 암호와 서명이 쌍으로서 부여된 경우는, 암호문의 서명 검증을 실시하고, 검증이 통과되면, 암호문의 복호를 실시한다. 또한, 여기에서의 서명 검증이 인증에 해당한다.
6. 액세스 제어 설정에 의해, 하드웨어 시큐리티 모듈 회로(10)만이 에러 검출 회로(4)에 액세스 가능해진다. 복호하여 얻어진 data의 CRC를 CRC(data)로 산출하고, data_crc와 일치하는지 검증한다. 일치하지 않는 경우, CRC체크가 실패했음을 나타내는 result1dp:=0100으로 한다. 만약 만족하는 경우는, 이하의 조작을 실행한다.
·복호로 얻어진 data를 저장하는 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로(즉 기록 가능 및 실행 불가하게) 설정하고, data를 A1에 저장한다. 이에 의해, CRC체크로 합격한(즉 에러가 검출되지 않았던) 데이터를 기록할 때에, 공격자 등으로부터 데이터가 개찬되는 것을 억제할 수 있다. 그리고, 영역 A1의 (R, W, E) 속성을 (1, 0, 1) 또는 (1, 0, 0)으로(즉 판독 가능 및 기록 불가하게) 설정하고, data를 A1로부터 다시 판독하여 data'로 한다. data'의 CRC를 CRC(data')로 산출하여, data_crc와 일치하는지 검증한다. 불휘발성 메모리에 데이터를 기록할 때에 데이터가 파괴 가능성이 있기 때문에, 내고장성을 향상시키기 위해, 이와 같이 데이터의 기록 후에 데이터를 판독하여 CRC체크를 실시한다. 이와 같은 처리에 의해, 데이터를 기록할 때의 에러를 검출하기 위하여 데이터를 판독할 때에, 공격자 등으로부터 데이터가 개찬되는 것을 억제할 수 있다.
·CRC(data')와 data_crc가 일치하는 경우, 영역 A1의 (R, W, E) 속성을 (1, 0, 1) 또는 (1, 0, 0) 또는 (0, 0, 1)으로(즉 기록 불가하게) 설정한다. 영역 A1이 불휘발성 메모리부라면 활성화 처리를 실시한다. 또한, result1dp을 모든 처리가 성공했음을 나타내는 result1dp:=0001로 한다. data가 크리티컬한 프로그램이며 비닉성이 필요한 경우는, (0, 0, 1)로 설정함으로써 실행만 가능하게 한다. 일치하지 않는 경우, 영역 A1의 (R, W, E) 속성을 (1, 1, 0) 또는 (0, 1, 0)으로(즉 기록 가능 및 실행 불가하게) 설정하고, 영역 A1에 기록한 data를 소거한다. 이에 의해, 부적절한 데이터의 실행 또는 판독을 억제할 수 있다. 그리고, result1dp을, 다시 CRC체크가 실패했음을 나타내는 result1dp:=0010으로 한다.
·액세스 제어 설정에 의해, 에러 검출 회로(4)의 처리를 필요로 하는 CPU(2)등 다른 모듈이 에러 검출 회로(4)에 액세스 가능해진다.
·기기B(110)에서의 기기A(102) 인증 결과와, 기기A(102)에 의한 기기B(110)의 인증에 이용하는 인증 정보로서, rcdp := rcdp || result1dp, r3d:=PRF (k1, tss || tsp || IDd || rh || rcdp || 1)을 계산한다.
7. 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)는 Data3:=(tss, tss1, IDd, rh, r1d, c1d, IDp, r1p, c1p, rcp, r2p, r3p, rcd, r2d, rcdp, r3d)로 하여, (rp, tsp, Data3)을 기기B(110)의 비시큐어부(120)에 송부한다(단계 S540).
8. 기기B(110)의 비시큐어부(120)는 Data3을 수취하면, 해당 메모리 영역의 (R, W, E) 속성을 (1, 0, 0)으로 설정한 후(단계 S541), (2, rp, tsp, Data3)을 기기A(102)에 송부한다(단계 S542). 송부가 완료되면, 비시큐어부(120)는 해당 메모리 영역의 (R, W, E) 속성을 (0, 1, 0)으로 설정한 후, Data3을 소거한다(단계 S543).
또한, (R, W, E) 속성의 갱신은, 도 3~도 9에 나타낸 (R, W, E) 속성 제어 기구(액세스 제어 회로(20))를 이용하여 실시되어도 된다. 또한, 도 3~도 9에 나타낸 (R, W, E) 속성 제어 기구를 이용하지 않는 경우는, 메모리 프로텍션 유닛(MPU) 또는 메모리 관리 유닛(MMU)을 이용하여 설정이 실시되어도 된다. 또한, 도 6의 기구를 이용하는 경우, R 속성과 W 속성이 비록 0으로 되어 있어도 하드웨어 시큐리티 모듈 회로(10)의 설정에서 판독 및 기록을 가능하게 할 수 있으므로, 이를 고려한 속성 변경을 실시할 필요가 있다. 도 6에서 S1과 S2의 천이가 이루어지지 않은 경우는, 갱신 가능한 범위가 제한되기 때문에, 그 제한에 따른 형태로 속성 변경을 실시할 필요가 있다.
또한, 기기A(102)로부터 기기B(110)의 비시큐어부(120)에의 송부에 시간 제약이 있는 경우로서 tsp 및 tss1를 신뢰할 수 있을 때는 상기 1. 사이즈 체크 시에, tss와 tsp 및 tss1을 비교함으로써, 시간 제약의 확인을 실시해도 된다. 또한, 인증 대상 단말에서의 인증 처리에의 시간 제약이 있고, 기기B(110)의 비시큐어부(120)의 시계를 신뢰할 수 있는 경우는, tsp 및 tss1과 인증 단말로부터의 인증 결과 수취 시각(이하 tsp'이라고 기재)을 비교함으로써, 시간 제약의 확인을 실시해도 된다. 이에 의해, 처리에 너무 긴 시간을 요하는 경우에, 부적절한 처리를 검출할 수 있다.
(4) 기기A에서의 기기B에 있어서의 인증 결과의 검증:
기기B(110)의 비시큐어부(120)는 (2, rp, tsp, Data3)을 기기A(102)에 송부한다(S542). 기기A(102)는 (2, rp, tsp, Data3=(tss, tss1, IDd, rh, r1d, c1d, IDp, r1p, c1p, rcp, r2p, r3p, rcd, r2d, rcdp, r3d))를 수취하면, rcp←{0,1} ^ (k-3)으로 하여, 이하의 처리를 실행한다(단계 S544). 이에 의해, 서버(104)의 인증 및 k1의 검증이 실시되게 된다.
1. rp, tss, tss1, tsp, IDd, rh, r1d, c1d, IDp, r1p, c1p, rcp, r2p, r3p, rcd, r2d, rcdp, r3d∈{0,1} ^ k인지, 즉 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지, 그리고, IDd, IDp∈ID로 되어 있는지를 검증한다. 만족하지 않으면 result1pd:=000, result1p:=000으로 한다. 여기에서, result1pd의 값 "000"은 기기B(110)로부터 기기A(102)의 사이에 부정한 액세스가 있었던 것을 나타낸다. 만약 만족한다면, 이하를 실시한다.
2. r1p=PRF (skp, tss || IDp || rh || 1)을 만족하는지(즉 서명이 올바른지 아닌지) 검증하고 만족하지 않은 경우는 result1p:=110으로 한다. 만족하는 경우는 이하를 실시한다.
·result1p:=001로 한다.
·r1'p:=PRF (skp, tss || IDp || rh || 2), k1:=AE. Dec (r1'p, c1p)를 계산한다.
·만약 인증된 암호 방식에서의 인증으로, 인증 에러가 발생된 경우는 result1p을 result1p:=010으로 덮어 쓰기한다.
3. result1p=001을 만족하는지 검증하고, 만족하지 않은 경우 5. 로 처리를 이행한다. 만족하는 경우는, 이하를 실시한다.
4. r3d=PRF (k1, tss || tsp || IDd || rh || rcd || 1)을 만족하는지 검증한다. 이에 의해, 서버(104)에 송신하는 데이터의 검증이 이루어진다. 만족하지 않은 경우, result1pd:=100으로 하고, 만족하는 경우, result1pd:=001로 한다.
5. result1pd=001을 만족하는지 검증하고, 만족하지 않은 경우, result2pd:=1111으로 하고, 만족하는 경우, result2pd:=0x0 ... 0f & rcdp(rcdp의 하위 4bit)로 한다.
그리고, 기기A(102)는 result2pd를 인증 결과로서 출력하고, 이를 기록한다. 여기에서, result2pd가 "0001"인 경우, 서버(104)의 진정(眞正)이 증명되고, 데이터 data가 중간자에게 개찬되는 경우도 누설되는 경우도 없이, 또는 데이터가 결손되는 경우도 없이 기기B(110)의 데이터 저장 영역에 데이터 저장을 실시하는 것이 성공했음을 의미한다. result2pd가 "0010"인 경우, 기록에서의 데이터 결손에 의한 기록 실패를 의미한다. 또한, result2pd가 "0100"인 경우, 서버(104)의 진정 증명과 인증·복호는 성공했지만 기록 전에 데이터 결손이 발생된 것을 의미한다. 또한, result2pd가 "1100"인 경우, 수신 에러(메시지 개찬의 가능성: 서버(104)의 진정이 증명되지 않거나, 증명할 수 있었지만 공통 키 k1의 인증된 암호 방식에서의 인증 불합격)가 발생된 것을 의미한다.
(5) 서버에서의 기기A와 기기B 각각의 인증 결과의 검증:
기기A(102)는 (2, rp, tsp, Data3)를 서버(104)에 송부한다(단계 S551). 서버(104)는 (2, rp, tsp, Data3=(tss, tss1, IDd, rh, r1d, c1d, IDp, r1p, c1p, rcp, r2p, r3p, rcd, r2d, rcdp, r3d))를 수취하면, result2d:=111, result2p:=111로 하여, 이하를 실시한다(단계 S552).
1. rp, tss, tss1, tsp, IDd, rh, r1d, c1d, IDp, r1p, c1p, rcp, r2p, r3p, rcd, r2d, rcdp, r3d∈{0,1} ^ k인지(즉 각각의 데이터의 길이가 규정 값대로의 길이로 되어 있는지), 그리고, IDd, IDp∈ID로 되어 있는지를 검증한다. 만족하지 못하면 result2d:=101, result2p:=101로 한다. 만약 만족한다면, 이하를 실시한다. 여기에서, result2d 및 result2p의 값 "101"은 부정한 액세스가 있었다는 것을 나타낸다.
2. 기기A(102)에서의 서버(104)의 진정한 결과의 검증을 위해, r2p=PRF (skp, tss || tsp || IDp || rh || rcp || 1)을 만족하는지를 검증한다. 만족하는 경우, result2p:=0x0 ... 7 & rcp(rcp의 하위 3bit)로 한다. 그리고, result2p를 기기A(102)와 서버(104)와의 상호 인증 결과로 기록한다. 여기에서, result2p가 "001"인 경우, 서버(104)의 진정이 증명되어, 키 k1이 중간자에게 개찬되는 경우도 누설되는 경우도 없이, 기기A(102)의 데이터 저장 영역에 데이터 저장을 실시하는 것이 성공한 것을 의미한다. 또한, result2p가 "010"인 경우, 키 k1의 인증된 암호 방식에서의 인증에 실패(메시지 개찬의 가능성)한 것을 의미한다. 또한, result2p가 "100"인 경우, 서버(104)의 진정 인증에 실패(메시지 개찬의 가능성)한 것을 의미한다.
3. 기기B(110)에서의 서버(104)의 진정한 결과의 검증을 위해, r2d=PRF (skd, tss || tsp || IDd || rh || rcd || 1)을 만족하는지를 검증한다. 만족하는 경우, result2d:=0x0 ... 7 & rcd(rcd의 하위 3bit)로 한다. 그리고, result2d를 기기B(110)와 서버(104)와의 상호 인증 결과로 기록한다. 여기에서, result2d가 "001"인 경우, 서버(104)의 진정이 증명되고, 키 k1이 중간자에게 개찬되는 경우도 누설되는 경우도 없이, 기기B(110)의 데이터 저장 영역에 데이터 저장을 실시하는 것이 성공한 것을 의미한다. 또한, result2d가 "010"인 경우, 키 k1의 인증된 암호 방식에서의 인증에 실패(메시지 개찬의 가능성)한 것을 의미한다. 또한, result2d가 "100"인 경우, 서버(104)의 진정 증명에 실패(메시지 개찬의 가능성)한 것을 의미한다.
또한, 서버(104)로부터 기기A(102)에 키 k1의 인증된 암호 데이터를 송부 후, 기기A(102) 및 기기B(110)에 의한 서버(104)의 진정 증명이나 키 k1의 인증에 대한 결과를 서버(104)가 취득할 때까지의 사이에 시간 제약이 경우, 상기 사이즈 체크 시에, tss와 서버(104)에서의 현재 시각을 비교함으로써, 그 시간 제약의 확인을 실시해도 된다.
실시형태 3에 따른 데이터 수수 시퀀스는, rp가 개찬되면, 대응하는 세션이 비존재가 되거나, 존재하더라도 다른 세션에서의 기기B(110)에서의 인증이 실시되지만 인증이 실패하기 때문에, 페일 세이프이다. 또한, 실시형태 3에 따른 데이터 수수 시퀀스는, rh가 개찬되는 경우도 기기A(102) 및 기기B(110)에서의 키 k1의 인증된 암호의 복호 처리 여부에 대한 검증이 실패하기 때문에, 페일 세이프이다. 또한, 실시형태 3에 따른 데이터 수수 시퀀스는, 기기B(110)에서의 인증된 암호의 복호 조작의 성공 여부에 대한 검증 수단에 의해, rh이 개찬된 경우에 기기A(102)가 기기B(110)에 송부한 데이터의 복호 시의 인증에 실패하기 때문에, 페일 세이프이다. 또한, 실시형태 3에 따른 데이터 수수 시퀀스에서는, 기기A(102)와 기기B(110) 사이에서의 상호 인증 수단에 의해, 공격자가 rc에의 값을 개찬하여도, 기기A(102)에 있어서 기기B(110)에서의 데이터 기록에 성공하였다고 할 수 없다. 또한, 실시형태 3에 따른 데이터 수수 시퀀스에서는, tsp가 개찬된 경우도, 기기A(102) 및 기기B(110)에서의 인증 결과의 검증 수단에 의해, 기기B(110)에서의 데이터 기록을 성공하게 하는 것도, 기기A(102)에 있어서 기기B(110)에 데이터 기록을 성공하게 하는 것도할 수 없다. 다른 값도 동일하다. 즉, rp, rh2, tsp 등 모든 값 중, 어느 하나를 개찬하여도, 기기B(110)의 하드웨어 시큐리티 모듈 회로(10)에서 구성된 인증된 암호의 복호 처리 여부를, 공격자 등은, 기록 성공이나 검증 합격이라고 할 수 없다. 따라서, 실시형태 3에 있어서는 메시지에 포함된 값의 전부 또는 어느 하나가 개찬된 경우, 어떠한 개찬이 있었다는 것을 검지 가능하다. 또한, 개찬에 의한 인증 실패 또는 검증 불합격을 효율적으로 검출할 목적으로, tsp에 대하여 해시 값을 부가해도 된다.
또한, 실시형태 3에 따른 데이터 수수 시퀀스에서는, 기기A(102) 기기B(110)(반도체 장치(1)와의 통신에만 사용되는 키 정보(k1)가 서버(104)에 의해 기기A(102) 및 기기B(110)에 대하여 발행된다. 그리고, 기기A(102) 및 기기B(110)에 키 정보가 송신될 때에, 서버(104)와, 기기A(102)와, 기기B(110)에서 상호 인증을 실시한다. 또한, 실시형태 1 및 실시형태 2에 있어서 전송 대상 데이터를 전송하는 경우와 동일하게, 비시큐어부(120)의 메모리 영역에 대하여, 액세스 제어가 이루어진다. 따라서 기기A(102) 및 기기B(110)에 공통 키를 미리 배치해 둘 필요가 없어진다. 또한, 배치될 때에 액세스 제어가 이루어짐으로써, 공격자 등에 의해 키 정보가 개찬되는 것을 억제하는 것이 가능해진다.
(변형예)
또한, 본 실시형태는 상기 실시형태에 한정되는 것이 아니라, 취지를 벗어나지 않는 범위에서 적절하게 변경하는 것이 가능하다. 예를 들면, 상술한 복수의 실시형태의 각각은, 서로 적용 가능하다. 예를 들면, 실시형태 1에 따른 데이터 수수 시퀀스가 진행되기 전에 실시형태 3에 따른 키 정보의 송부가 실시되어도 된다. 또한, 상술한 실시형태에 따른 시퀀스 도면에 있어서, 각 처리 순서는 적절히 변경 가능하다.
또한, 상술한 실시형태에서, 인증 시스템(100)은 자동차 네트워크 시스템이라고 했으나, 인증 시스템(100)은 자동차 네트워크 시스템에 한정되지 않는다. 인증 시스템(100)은 다른 기기와 통신 가능한 임의의 장치에 적용 가능하다. 예를 들면, 인증 시스템은 외부 기기와 통신 가능한 가전제품 등에 적용 가능하다.
이상, 본 발명자에 의해 이루어진 발명을 실시형태에 따라 구체적으로 설명하였지만, 본 발명은 앞서 설명한 실시형태에 한정되는 것이 아니라, 그 요지를 벗어나지 않는 범위에서 다양한 변경이 가능함은 물론이다.
1 반도체 장치
2 CPU
3 프로그램 메모리
4 에러 검출 회로
5 입출력 인터페이스
6 워크 메모리
8 전용 에러 검출 회로
10 하드웨어 시큐리티 모듈 회로
11 CPU
12 입출력 인터페이스
13 암호처리부
14 워크 메모리
15 코드용 불휘발성 메모리
16 데이터용 불휘발성 메모리
20 액세스 제어 회로
22 속성 제어 스테이트 머신
40 액세스 제어 회로
41 데이터 판독 유닛
43 명령 페치 유닛
100 인증 시스템
102 기기A
104 서버
110 기기B
120 비시큐어부

Claims (18)

  1. 인증 처리를 하는 하드웨어 시큐리티 모듈 회로와,
    적어도 상기 하드웨어 시큐리티 모듈 회로에서 처리되는 제1의 데이터에 대하여 에러 검출 처리를 실시하기 위하여 사용되는 에러 검출 회로,
    를 가지며,
    상기 에러 검출 회로에 관한 메모리 영역은, 적어도 상기 제1의 데이터에 대하여 상기 에러 검출 처리가 실시될 때에, 상기 하드웨어 시큐리티 모듈 회로로부터만 액세스 가능하도록 구성되어 있는
    반도체 장치.
  2. 청구항 1에 있어서,
    상기 에러 검출 회로는, 상기 하드웨어 시큐리티 모듈 회로에 전용인 하드웨어 회로인 반도체 장치.
  3. 청구항 1에 있어서,
    상기 메모리 영역에 대한 액세스 제어를 실시하는 액세스 제어 회로를 더 가지는 반도체 장치.
  4. 청구항 3에 있어서,
    상기 하드웨어 시큐리티 모듈 회로는, 상기 메모리 영역에 대하여, 상기 액세스 제어 회로에 의한 지정에 따르지 않고, 데이터의 판독 또는 기록이 가능하도록 구성되어 있는 반도체 장치.
  5. 청구항 3에 있어서,
    상기 액세스 제어 회로는 상기 메모리 영역에 대한, 판독, 기록 및 실행의 각각의 동작 여부 상태를 설정하고,
    상기 액세스 제어 회로는 제1의 상태로부터, 상기 제1의 상태보다도 가능한 동작이 많지 않은 제2의 상태로 천이(遷移)되도록 제어를 실시하는 반도체 장치.
  6. 청구항 4에 있어서,
    상기 반도체 장치의 외부 기기로부터, 상기 반도체 장치에 전송 대상 데이터가 전송되는 경우,
    상기 하드웨어 시큐리티 모듈 회로는, 상기 메모리 영역을 통하여 상기 전송 대상 데이터에 관한 인증 데이터를 상기 기기로부터 수신 및 상기 기기에 송신함으로써, 상호 인증을 실시하고,
    상기 에러 검출 회로는, 상기 인증용 데이터에 대하여, 에러 검출 처리를 실시하고,
    상기 액세스 제어 회로는, 상기 인증용 데이터를 상기 메모리 영역에 기록할 때 또는 상기 메모리 영역으로부터 판독할 때에, 액세스 제어를 실시하는 반도체 장치.
  7. 청구항 4에 있어서,
    상기 하드웨어 시큐리티 모듈 회로는, 에러 검출 처리의 결과, 에러가 검출되지 않았던 상기 제1의 데이터를 상기 메모리 영역에 저장할 때에, 상기 메모리 영역을 기록 가능하게 하는 반도체 장치.
  8. 청구항 4에 있어서,
    상기 하드웨어 시큐리티 모듈 회로는, 상기 메모리 영역에 저장한 상기 제1의 데이터에 대하여 에러 검출 처리를 실시하기 위하여, 상기 메모리 영역을 판독 가능하게 하여, 상기 제1의 데이터를 상기 메모리 영역으로부터 판독하는 반도체 장치.
  9. 청구항 8에 있어서,
    상기 제1의 데이터를 상기 메모리 영역으로부터 판독하고 상기 에러 검출 처리를 실시하여 에러가 검출된 경우에, 상기 하드웨어 시큐리티 모듈 회로는, 상기 메모리 영역을 기록 가능 또한 실행 불가로 하여, 상기 메모리 영역에 기록한 상기 제1의 데이터를 소거하는 반도체 장치.
  10. 청구항 3에 있어서,
    상기 제1의 데이터에는, 세션 정보 및 난수(亂數) 중 적어도 한쪽이 부가되고,
    상기 하드웨어 시큐리티 모듈 회로는, 상기 세션 정보 또는 난수가 개찬(改竄)된 경우에, 데이터 수수(授受) 시퀀스가 계속되지 않도록 구성되어 있는 반도체 장치.
  11. 청구항 6에 있어서,
    상기 기기로부터, 상기 전송 대상 데이터가 분할되어 전송되는 경우,
    상기 하드웨어 시큐리티 모듈 회로는, 상기 전송 대상 데이터의 전송 전에, 상기 기기와 상호 인증을 실시하고,
    상기 하드웨어 시큐리티 모듈 회로는, 상기 기기에 의해 상기 전송 대상 데이터 전체에 대하여 에러 검출용 데이터의 부가 및 인증 처리가 이루어진 상기 인증용 데이터를 분할하여 수신하고,
    상기 하드웨어 시큐리티 모듈 회로는, 상기 전송 대상 데이터의 전송 후에, 상기 기기와 상호 인증을 실시하는 반도체 장치.
  12. 청구항 11에 있어서,
    상기 하드웨어 시큐리티 모듈 회로는, 상기 전송 대상 데이터의 전송 후, 상기 기기의 인증이 성공한 경우에, 분할된 암호 데이터를 결합하여 상기 전송 대상 데이터를 복호하는 반도체 장치.
  13. 청구항 6에 있어서,
    상기 인증용 데이터는, 암호화되지 않고 상기 기기로부터 전송되고,
    상기 하드웨어 시큐리티 모듈 회로는, 상기 상호 인증을, 암호화 및 복호를 수반하지 않고 실시하는 반도체 장치.
  14. 청구항 4에 있어서,
    상기 반도체 장치의 외부 기기와 통신 가능한 서버로부터, 상기 기기를 통하여, 상기 반도체 장치에 대하여, 상기 반도체 장치와 상기 기기와의 통신에만 이용되는 키 정보가 발행되고,
    상기 하드웨어 시큐리티 모듈 회로는, 상기 메모리 영역을 통하여 상기 키 정보에 관한 인증용 데이터를 상기 기기로부터 수신 및 상기 기기로 송신함으로써, 상기 서버 및 상기 기기와 상호 인증을 실시하고,
    상기 에러 검출 회로는, 상기 인증용 데이터에 대하여, 에러 검출 처리를 실시하고,
    상기 액세스 제어 회로는, 상기 인증용 데이터를 상기 메모리 영역에 기록할 때 또는 상기 메모리 영역으로부터 판독할 때에, 액세스 제어를 실시하는 반도체 장치.
  15. 제1의 기기와,
    상기 제1의 기기와 통신 가능한 제2의 기기
    를 가지며,
    상기 제1의 기기로부터 상기 제2의 기기에 대하여, 전송 대상 데이터가 전송되고,
    상기 제2의 기기는,
    인증 처리를 실시하는 하드웨어 시큐리티 모듈 회로와,
    적어도 상기 하드웨어 시큐리티 모듈 회로에서 처리되는 상기 전송 대상 데이터에 대하여 에러 검출 처리를 실시하기 위하여 사용되는 에러 검출 회로
    를 가지며,
    상기 에러 검출 회로에 관한 메모리 영역은, 적어도 상기 전송 대상 데이터에 대하여 상기 에러 검출 처리가 실시될 때에, 상기 하드웨어 시큐리티 모듈 회로로부터만 액세스 가능하도록 구성되어 있는 인증 시스템.
  16. 청구항 15에 있어서,
    상기 제2의 기기는,
    상기 메모리 영역에 대한 액세스 제어를 실시하는 액세스 제어 회로
    를 더 가지고,
    상기 하드웨어 시큐리티 모듈 회로는, 상기 메모리 영역에 대하여, 상기 액세스 제어 회로에 의한 지정에 따르지 않고, 데이터 판독 또는 기록이 가능하도록 구성되어 있는 인증 시스템.
  17. 청구항 16에 있어서,
    상기 하드웨어 시큐리티 모듈 회로는, 상기 메모리 영역을 통하여 상기 전송 대상 데이터에 관한 인증 데이터를 상기 제1의 기기로부터 수신 및 상기 제2의 기기에 송신함으로써, 상호 인증을 실시하고
    상기 에러 검출 회로는, 상기 인증용 데이터에 대하여, 에러 검출 처리를 실시하고,
    상기 액세스 제어 회로는, 상기 인증용 데이터를 상기 메모리 영역에 기록 또는 상기 메모리 영역으로부터 판독할 때에, 액세스 제어를 실시하는 인증 시스템.
  18. 제1의 데이터에 대하여, 인증 처리를 실시하고,
    상기 제1의 데이터에 대하여 에러 검출 처리를 실시하고,
    상기 에러 검출 처리에 관한 메모리 영역에 대하여 액세스 제어가 이루어지고,
    상기 제1의 데이터에 대하여 에러 검출 처리가 실시될 때에, 상기 메모리 영역에 대하여, 상기 액세스 제어에 의한 지정에 따르지 않고, 상기 인증 처리를 실시하는 회로가 데이터의 판독 또는 기록이 가능하도록 하는 인증 방법.
KR1020180138975A 2017-11-21 2018-11-13 반도체 장치, 인증 시스템 및 인증 방법 KR20190058302A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017223607A JP2019095969A (ja) 2017-11-21 2017-11-21 半導体装置、認証システム及び認証方法
JPJP-P-2017-223607 2017-11-21

Publications (1)

Publication Number Publication Date
KR20190058302A true KR20190058302A (ko) 2019-05-29

Family

ID=64402001

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180138975A KR20190058302A (ko) 2017-11-21 2018-11-13 반도체 장치, 인증 시스템 및 인증 방법

Country Status (5)

Country Link
US (1) US10949527B2 (ko)
EP (1) EP3486832B1 (ko)
JP (1) JP2019095969A (ko)
KR (1) KR20190058302A (ko)
CN (1) CN109815046A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3109229B1 (fr) * 2020-04-09 2023-08-25 Proton World Int Nv Procédé d'authentification
US11893550B2 (en) * 2021-06-02 2024-02-06 Thales Dis Cpl Usa, Inc. System and method for hosting and remotely provisioning a payment HSM by way of out-of-band management

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4856080A (ko) 1971-11-12 1973-08-07
JP2002077135A (ja) 2000-09-05 2002-03-15 Ntt Fanet Systems Corp 暗号化方法および復号化方法とそれらの装置
JP2016134914A (ja) 2015-01-20 2016-07-25 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 不正検知ルール更新方法、不正検知電子制御ユニット及び車載ネットワークシステム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8627086B2 (en) 2004-10-11 2014-01-07 Telefonaktiebolaget Lm Ericsson (Publ) Secure loading and storing of data in a data processing device
EP1645931A1 (en) 2004-10-11 2006-04-12 Telefonaktiebolaget LM Ericsson (publ) Secure loading and storing of data in a data processing device
EP2715598B1 (en) * 2011-05-23 2016-10-05 Samsung Electronics Co., Ltd. Method and apparatus for authenticating a non-volatile memory device
EP2802152B1 (en) * 2013-05-07 2017-07-05 Nagravision S.A. Method for secure processing a stream of encrypted digital audio / video data
WO2015144764A1 (de) * 2014-03-26 2015-10-01 Continental Teves Ag & Co. Ohg Verfahren und system zur verbesserung der datensicherheit bei einem kommunikationsvorgang
WO2015157693A2 (en) 2014-04-11 2015-10-15 Rubicon Labs, Inc. System and method for an efficient authentication and key exchange protocol
WO2016007712A1 (en) 2014-07-11 2016-01-14 Entrust, Inc. Method and apparatus for providing vehicle security
DE102015203776A1 (de) * 2015-03-03 2016-09-08 Robert Bosch Gmbh Verfahren zur Programmierung eines Steuergeräts eines Kraftfahrzeugs

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4856080A (ko) 1971-11-12 1973-08-07
JP2002077135A (ja) 2000-09-05 2002-03-15 Ntt Fanet Systems Corp 暗号化方法および復号化方法とそれらの装置
JP2016134914A (ja) 2015-01-20 2016-07-25 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 不正検知ルール更新方法、不正検知電子制御ユニット及び車載ネットワークシステム

Also Published As

Publication number Publication date
US10949527B2 (en) 2021-03-16
CN109815046A (zh) 2019-05-28
JP2019095969A (ja) 2019-06-20
US20190156018A1 (en) 2019-05-23
EP3486832B1 (en) 2021-07-21
EP3486832A1 (en) 2019-05-22

Similar Documents

Publication Publication Date Title
TWI740409B (zh) 使用密鑰之身份驗證
KR102434444B1 (ko) 가상 트러스트 컴퓨팅 베이스를 이용한 기기 보안성 검증 방법 및 장치
US20220116221A1 (en) Verifying identity of a vehicle entering a trust zone
CN104734854B (zh) 密钥的安全提供
EP3644181B1 (en) Embedded program secure boot method, apparatus and device, and storage medium
JP2022528070A (ja) 運転中の緊急車両のidの検証
JP4689945B2 (ja) リソースアクセス方法
JP4689946B2 (ja) 安全なデータを使用して情報処理を実行するシステム
US20190028267A1 (en) In-vehicle computer system, vehicle, key generation device, management method, key generation method, and computer program
JP2022527757A (ja) 物理複製困難関数を使用したコンピューティングデバイスのidの生成
CN102063592B (zh) 一种可信平台及其对硬件设备的控制方法
CN101047495B (zh) 用于传送数据的方法和系统
US10305679B2 (en) Method for implementing a communication between control units
CN111740854B (zh) 用于安全装置通信的设备、方法和系统
JP7400744B2 (ja) 車両制御システム
CN110311780A (zh) 信息处理装置以及信息处理方法
CN106384042A (zh) 一种电子设备以及安全系统
JP2019105946A (ja) 車載更新装置、プログラム及びプログラム又はデータの更新方法
US11481523B2 (en) Secure element
JP6888122B2 (ja) 半導体装置、更新データ提供方法、更新データ受取方法およびプログラム
WO2020090418A1 (ja) 電子制御装置、電子制御装置のリプログラミング方法
KR20190058302A (ko) 반도체 장치, 인증 시스템 및 인증 방법
CN114780981A (zh) 安全数据的存储方法、计算机装置及计算机可读存储介质
CN103336919A (zh) 实现仪表加密验证控制功能的系统和方法
US20220050605A1 (en) Remote enforcement of device memory