KR20120140217A - 반도체 장치 및 반도체 장치에의 데이터 기입 방법 - Google Patents

반도체 장치 및 반도체 장치에의 데이터 기입 방법 Download PDF

Info

Publication number
KR20120140217A
KR20120140217A KR1020120065834A KR20120065834A KR20120140217A KR 20120140217 A KR20120140217 A KR 20120140217A KR 1020120065834 A KR1020120065834 A KR 1020120065834A KR 20120065834 A KR20120065834 A KR 20120065834A KR 20120140217 A KR20120140217 A KR 20120140217A
Authority
KR
South Korea
Prior art keywords
unique code
semiconductor device
data
information
code
Prior art date
Application number
KR1020120065834A
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 KR20120140217A publication Critical patent/KR20120140217A/ko

Links

Images

Classifications

    • 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/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • 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/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • H04L9/3278Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response using physically unclonable functions [PUF]
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • 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/04Masking or blinding
    • 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/08Randomization, e.g. dummy operations or using noise
    • 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)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Semiconductor Integrated Circuits (AREA)

Abstract

종래의 반도체 장치에서는, 데이터 기입시의 시큐리티를 충분히 확보할 수 없는 문제가 있었다.
본 발명의 반도체 장치는, 디바이스에 고유한 값으로서 랜덤한 비트에 에러를 포함하는 초기 유니크 코드(UCp)를 생성하는 유니크 코드 생성부(12)와, 초기 유니크 코드(UCp)의 에러를 정정하여, 중간 유니크 코드(UCb)를 생성하는 제1 에러 정정부(13)와, 중간 유니크 코드(UCb)의 에러를 정정하여, 제1 확정 유니크 코드(UCm)를 생성하는 제2 에러 정정부(15)와, 외부 장치(20)가 중간 유니크 코드(UCb)에 기초해 생성한 키 정보(UCw)를 이용해서 비닉 정보(HF1)를 암호화한 송신 데이터(HF2)를 제1 확정 유니크 코드(UCm)를 이용해 복호해서 비닉 정보(HF1)를 생성하는 복호부(16)를 갖는다.

Description

반도체 장치 및 반도체 장치에의 데이터 기입 방법 {SEMICONDUCTOR DEVICE AND METHOD OF WRITING DATA TO SEMICONDUCTOR DEVICE}
본 발명은 반도체 장치 및 반도체 장치에의 데이터 기입 방법에 관한 것으로, 특히 외부로부터의 공격에 대하여 비닉(秘匿)해야 할 비닉 정보를 유지하는 반도체 장치 및 해당 반도체 장치에의 비닉 정보의 데이터 기입 방법에 관한 것이다.
최근, 반도체 장치에 대한 부정 액세스에의 내성 향상, 혹은 모조품 대책 때문에 암호화 기술을 이용한 시큐리티 기술이 많이 제안되어 있다. 이 암호화 기술에서는, 암호키가 이용되지만, 암호키를 공격자에게 취득당한 경우, 반도체 장치에의 부정 액세스가 가능하게 되기 때문에 문제가 있다. 그 때문에, 키 정보와 같이, 누설되었을 경우에 부적합한 정보는, 비닉 정보로서 외부에의 누설을 방지하는 것이 요구된다. 따라서, 비닉 정보의 하나인 키 정보에 관한 시큐리티 대책의 예가 특허 문헌 1∼4에 개시되어 있다. 특허 문헌 1∼4는, 어느 것이나, 실리콘ID, 혹은 PUF(Physically Unclonable Function) 등의 반도체 장치의 제조 변동에 의해 값이 다른 고유값을 이용해서 키 정보 등의 비닉 정보를 생성한다. 특허 문헌 1∼4에서는, 이러한 고유값은 에러를 포함하기 때문에, 이러한 고유값을 이용해서 확정적인 비닉 정보를 생성하는 경우, 고유값에 대하여 에러 정정 처리를 실시할 필요가 있다. 이러한 고유값에 기초해 비닉 정보를 생성함으로써, 비닉 정보가 고정적인 값으로서 유지할 필요가 없기 때문에 반도체 장치의 시큐리티를 향상시킬 수 있다.
(특허 문헌 1) 국제공개 제2008/056612호 (특허 문헌 2) 일본 특허 출원 공개 제2006-179001호 공보 (특허 문헌 3) 일본 특허 출원 공표 제2010-527219호 공보 (특허 문헌 4) 일본 특허 출원 공표 제2008-545323호 공보
예를 들면, PUF를 이용해서 키 정보 등의 비닉 정보를 생성하는 경우, 비닉 정보를 생성하기 위해서, 반도체 장치로부터 PUF를 읽어내고, 키 정보를 암호화한다. 이 비닉해야 할 키 정보를 암호화한 데이터를, 반도체 장치 내에서 PUF를 이용해서 복호함으로써, 반도체 장치 내에 키 정보를 안전하게 저장하는 것이 가능하게 된다. 그러나 그 경우에서도, 반도체 장치를 탑재한 시스템을 메인터넌스하는 자가 공격자가 될 가능성이 있다. 이러한 경우에, 특허 문헌 1∼4에 기재되는 기술을, 반도체 장치 간의 암호 통신에 적용해도, 메인터넌스하는 자가 사이드채널 어택 등에 의해 반도체 장치로부터 PUF의 값과 PUF를 이용해서 생성된 암호 데이터를 대량으로 수집한 경우, 비닉 정보를 해석해 버릴 가능성이 있다. 즉, 특허 문헌 1∼4에 기재되는 기술을 적용해도 반도체 장치의 시큐리티를 충분히 향상시킬 수 없는 문제가 있다.
본 발명에 따른 반도체 장치 및 데이터 기입 방법에서는, 반도체 장치가 초기 유니크 코드의 에러를 정정한 중간 유니크 코드를 생성하고, 또한 중간 유니크 코드의 에러를 정정한 제1 확정 유니크 코드를 생성하고, 외부 장치로부터 송신된 송신 데이터를 제1 확정 유니크 코드를 이용해 복호해서 비닉 정보를 취득한다. 또한, 외부 장치는, 반도체 장치에서 생성된 중간 유니크 코드를 수신하고, 해당 중간 유니크 코드에 기초해 생성한 키 정보를 이용해 비닉 정보를 암호화하여 송신 데이터를 생성한다. 이상의 동작에 의해, 본 발명에 따른 반도체 장치는, 송신 데이터를 암호화하는 키 정보 자체를 송수신하지 않고, 암호화된 비닉 정보를 얻을 수 있고, 외부 장치 사이에서 시큐리티가 높은 통신을 가능하게 하는 것이다.
또한, 외부 장치는, 반도체 장치에 있어서 초기 유니크 코드의 에러 정정 처리에 이용되는 제1 정정 데이터를 갖지만, 이 제1 정정 데이터는, 암호화된 상태에서 외부 장치 내에 저장된다. 그리고, 암호화된 제1 정정 데이터를 수신하는 반도체 장치는, 수신한 암호화된 제1 정정 데이터를 복호하고, 복호화 후의 제1 정정 데이터를 이용해서 중간 유니크 코드를 생성한다. 이상의 동작에 의해, 반도체 장치는, 시큐리티가 더욱 높은 통신을 가능하게 한다.
또한, 외부 장치는, 복수의 장치(예를 들면, 기입기 및 서버)를 갖고, 반도체 장치에 직접 접속되지 않는 장치(예를 들면, 서버)에서 송신 데이터를 생성하고, 반도체 장치에 직접 접속되는 장치(예를 들면, 기입기)를 개재해서 송신 데이터를 반도체 장치에 기입한다. 이에 의해, 외부 장치에 관한 시큐리티를 향상시킬 수 있다.
또한, 외부 장치는, 반도체 장치로 송신하는 제1 정정 데이터와, 키 정보의 생성에 이용되는 제2 정정 데이터를 복수의 장치에 분산하여 배치한다. 이에 의해, 외부 장치에 관한 시큐리티를 더욱 향상시킬 수 있다.
즉, 본 발명에 따른 반도체 장치 및 반도체 장치에의 데이터 기입 방법에 따르면, 반도체 장치의 시큐리티를 향상시킬 수 있다.
도 1은 실시 형태 1에 관한 반도체 장치 및 외부 장치의 블록도이다.
도 2는 실시 형태 1에 관한 반도체 장치 및 외부 장치에서 생성되는 확정 유니크 코드의 일례를 나타내는 표이다.
도 3은 실시 형태 1에 관한 반도체 장치 및 외부 장치의 동작을 나타내는 시퀀스도이다.
도 4는 실시 형태 2에 관한 반도체 장치 및 외부 장치의 블록도이다.
도 5는 실시 형태 2에 관한 반도체 장치 및 외부 장치의 동작을 나타내는 시퀀스도이다.
도 6은 실시 형태 3에 관한 반도체 장치 및 외부 장치의 블록도이다.
도 7은 실시 형태 4에 관한 반도체 장치 및 외부 장치의 블록도이다.
도 8은 실시 형태 5에 관한 반도체 장치 및 외부 장치의 블록도이다.
도 9는 실시 형태 6에 관한 반도체 장치 및 외부 장치의 블록도이다.
도 10은 실시 형태 6에 관한 반도체 장치 및 외부 장치의 동작을 나타내는 시퀀스도이다.
도 11은 실시 형태 7에 관한 반도체 장치 및 외부 장치의 블록도이다.
도 12는 실시 형태 7에 관한 반도체 장치 및 외부 장치를 이용해서 비닉 정보가 기입된 반도체 장치를 이용한 암호 통신 시스템의 일례의 블록도이다.
도 13은 도 12에서 나타낸 암호 통신 시스템의 동작을 설명하기 위한 플로우차트이다.
도 14는 도 12에서 나타낸 암호 통신 시스템의 공통키 생성부의 동작을 설명하기 위한 플로우차트이다.
도 15는 도 12에서 나타낸 암호 통신 시스템의 공통키 생성부로 처리되는 유니크 코드의 일례를 나타내는 표이다.
도 16은 실시 형태 7에 관한 반도체 장치 및 외부 장치를 이용해서 비닉 정보가 기입된 반도체 장치를 이용한 암호 통신 시스템의 다른 예를 나타내는 블록도이다.
도 17은 도 16에서 나타낸 암호 통신 시스템의 동작을 설명하기 위한 플로우차트이다.
도 18은 도 16에서 나타낸 암호 통신 시스템의 정정 데이터 생성부의 동작을 설명하기 위한 플로우차트이다.
도 19는 복수의 반도체 장치를 이용해서 정정 데이터를 생성하는 경우를 나타내는 도면이다.
(실시 형태 1)
이하, 도면을 참조해서 본 발명의 실시 형태에 대해서 설명한다. 실시 형태 1에 관한 반도체 장치(10) 및 외부 장치(예를 들면, 기입기(20))의 블록도를 나타낸다. 도 1에 도시한 바와 같이, 실시 형태 1에서는, 반도체 장치(10)와 외부 장치(20)에 의해 1개의 데이터 기입 시스템(1)이 구성된다. 반도체 장치(10)는, 해당 데이터 기입 시스템(1)을 이용해서 비닉 정보가 기입되고, 해당 비닉 정보를 이용해서 암호 통신을 행한다.
도 1에 도시한 바와 같이, 반도체 장치(10)는, 유니크 코드 생성부(12), 제1 에러 정정부(예를 들면, 비트 마스크 회로(13)), 제2 에러 정정부(예를 들면, ECC 회로(15)), 복호부(예를 들면, 해시 함수 복호부(16))를 갖는다. 또한, 반도체 장치(10)는, 이들 회로에 부수되는 것으로서 식별 정보 유지부(11), 저장부(14), 암호부(17)를 갖는다.
식별 정보 유지부(11)는, 디바이스마다 미리 고정치로서 설정되는 식별 정보(ID)를 유지한다. 그리고, 식별 정보 유지부(11)는, 식별 정보(ID)를 기입기(20)에 대하여 출력한다. 이 식별 정보(ID)는, 예를 들면, 제품의 로트 번호, 제조 관리 번호, 제품ID 등의 값이며, 에러를 포함하지 않는 값이다.
유니크 코드 생성부(12)는, 디바이스에 고유한 값으로서 랜덤한 비트에 에러를 포함하는 초기 유니크 코드(UCp)를 생성한다. 유니크 코드 생성부(12)는, 예를 들면, 반도체 장치(10)가 구비하는 메모리 소자(예를 들면, SRAM(Static Random Access Memory))의 기동시의 초기값을 이용해서 초기 유니크 코드(UCp)를 생성한다. 초기 유니크 코드(UCp)는, 같은 설계의 회로로부터 생성되는 값이지만, 실제로 반도체 장치로서 제조되는 회로는 제각각 변동을 갖는다고 하는 성질을 이용해서 생성되는 코드이다. 이러한 기술은, PUF(Physical Unclonable Function)라 불리고, 내 탬퍼 칩과 같은 특수한 하드웨어를 필요로 하지 않고, 복제가 곤란한 데이터이기 때문에, 데이터의 높은 비닉성을 실현할 수 있다.
비트 마스크 회로(13)는, 초기 유니크 코드(UCp)의 에러를 정정하여, 중간 유니크 코드를 생성한다. 보다 구체적으로는, 비트 마스크 회로(13)는, 외부(예를 들면, 기입기(20))로부터 얻은 제1 정정 데이터(예를 들면, 비트 마스크 데이터(BM))에 의해 초기 유니크 코드(UCp)의 에러를 정정하여, 중간 유니크 코드(UCb)를 생성한다. 실시 형태 1에서는, 이 중간 유니크 코드(UCb)는, ECC 회로(15)에 출력됨과 동시에, 기입기(20)에 출력된다. 비트 마스크 회로(13)에서 행해지는 비트 마스크 처리는, 제1 에러 정정 처리에 상당한다.
ECC 회로(15)는, 중간 유니크 코드(UCb)의 에러를 정정하여, 제1 확정 유니크 코드(UCm)를 생성한다. 보다 구체적으로는, ECC 회로(15)는, 중간 유니크 코드(UCb)에 미리 내부에 유지하고 있는 제2 정정 데이터(예를 들면, ECC 코드)를 적용해서 중간 유니크 코드(UCb)의 에러를 정정하여, 제1 확정 유니크 코드(UCm)를 생성한다. ECC 회로(15)에서 행해지는 ECC 코드에 의한 에러 정정 처리는, 제2 에러 정정 처리에 상당한다.
저장부(14)는, 반도체 장치(10)의 ECC 회로(15)에서 이용되는 ECC 코드를 저장한다. ECC 코드는 반도체 장치 제조시에 미리 기입되어 있는 값이다.
해시 함수 복호부(16)는, 제1 확정 유니크 코드(UCm)를 이용해서 외부로부터 수신한 송신 데이터(HF2)를 복호하고, 비닉 정보(예를 들면, 해시 함수(HF1))를 복호한다.
암호부(17)는, 송신 대상 정보를 암호화한다. 보다 구체적으로는, 암호부(17)는, 해시 함수(HF1)를 암호키로서 이용해서 암호 통신을 행한다. 보다 구체적으로는, 암호부(17)는, 송신 대상 정보를 해시 함수(HF1)를 이용해서 암호화해서 암호화 완료 정보를 생성하고, 해당 암호화 완료 정보를 외부에 출력한다.
도 1에 도시한 바와 같이, 기입기(20)는, 저장부(21, 22, 25), 제3의 에러 정정부(예를 들면, ECC 회로(23)), 정당성 판정 회로(예를 들면, CRC 회로(24)), 암호 처리부(예를 들면, 해시 함수 암호부(26))를 갖는다.
저장부(21)는, 식별 정보(ID)와 제1 정정 데이터(예를 들면, 비트 마스크 데이터(BM))를 관련지어진 정보(예를 들면, 식별 정보-마스크 비트 대응 표)를 유지한다. 그리고, 저장부(21)는, 반도체 장치(10)로부터 식별 정보(ID)를 읽어내고, 식별 정보-마스크 비트 대응 표를 참조해서 식별 정보(ID)에 대응하는 비트 마스크 데이터(BM)를 선택한다. 그리고, 저장부(21)는, 선택한 비트 마스크 데이터(BM)를 반도체 장치(10)에 송신한다. 또한, 저장부(21)는, 식별 정보(ID)가 없으면 비트 마스크 데이터(BM)를 반도체 장치(10)에 송신할 수 없는 구성을 갖는 것으로 한다. 또한, 비트 마스크 데이터(BM)는, 초기 유니크 코드를 구성하는 비트의 어느 것을 마스크 할지를 지정하는 데이터이다.
저장부(22)는, ECC 코드와, CRC(Cyclic Redundancy Check) 코드 테이블을 저장한다. ECC 코드는, 반도체 장치(10)의 저장부(14)에 저장된 ECC 코드와 동일한 것이다. 또한, CRC 코드 테이블은, 반도체 장치(10)에서 생성되는 제1 확정 유니크 코드(UCm)에 대응해서 미리 생성되는 것이다.
ECC 회로(23)는, 저장부(22)로부터 ECC 코드를 읽어내고, 반도체 장치(10)로부터 송신되는 중간 유니크 코드(UCb)에 대하여 읽어낸 ECC 코드에 의한 에러 정정 처리를 행한다. 즉, ECC 회로(23)에서는, 반도체 장치(10)의 ECC 회로(15)와 동일한 에러 정정 처리를 행한다. 이에 의해, ECC 회로(23)는, 중간 유니크 코드(UCb)의 에러를 정정한 제2 확정 유니크 코드(UCw)를 생성한다. 이 제2 확정 유니크 코드(UCw)는, 송신 대상의 비닉 정보의 암호화에 이용되는 키 정보로서 이용된다.
CRC 회로(24)는, 저장부(22)의 CRC 코드 테이블로부터 제1 확정 유니크 코드(UCm)에 대응한 CRC 코드를 읽어낸다. 그리고, CRC 회로(24)는, CRC 코드를 이용해서 제2 확정 유니크 코드(UCw)의 에러 체크를 행한다. 그리고, CRC 회로(24)는, 제2 확정 유니크 코드(UCw)에 에러가 인지되었을 경우에는 제2 확정 유니크 코드(UCw)가 부정한 것이라고 판정하고, 제2 확정 유니크 코드(UCw)에 에러가 검출되지 않으면 제2 확정 유니크 코드(UCw)가 정당한 것이라고 판정한다. 그리고, CRC 회로(24)는, 제2 확정 유니크 코드(UCw)가 정당한 것일 경우에만 후단의 회로에 제2 확정 유니크 코드(UCw)를 출력한다. 한편, CRC 회로(24)는, 제2 확정 유니크 코드(UCw)가 부정한 것일 경우에는 기입기(20)의 동작을 정지시키는 처리를 행한다. CRC 회로(24)는, 제2 확정 유니크 코드(UCw)가 부정한 것이라고 판정되었을 경우에는, 정당한 것이라고 판정될 때까지, 제2 확정 유니크 코드(UCw)의 에러 체크를 소정의 횟수를 한도로하여 반복하도록 해도 된다.
저장부(25)에는, 비닉 정보인 해시 함수(HF1)가 저장된다. 해시 함수 암호부(26)는, 저장부(25)로부터 해시 함수(HF1)를 읽어내고, 제2 확정 유니크 코드(UCw)에 의해 해시 함수(HF1)를 암호화해서 송신 데이터(HF2)를 생성한다. 또한, 해시 함수 암호부(26)는, 송신 데이터(HF2)를 반도체 장치(10)에 송신한다.
여기서, 실시 형태 1에 관한 반도체 장치 및 외부 장치에서 생성되는 확정 유니크 코드에 대해서 설명한다. 실시 형태 1에 관한 반도체 장치 및 외부 장치에서 생성되는 확정 유니크 코드의 일례를 나타내는 표를 도 2에 나타낸다.
우선, 반도체 장치(10)에서는, 유니크 코드 생성부(12)로부터 초기 유니크 코드(UCp)를 생성한다(도 2의 (1)). 다음으로, 비트 마스크 회로(13)는, 비트 마스크 데이터(BM)를 이용하여, 초기 유니크 코드(UCp)에 대하여 소정의 비트를 마스크 하는 비트 마스크 처리를 실시한다. 여기서, 비트 마스크 데이터(BM)는, 초기 유니크 코드를 구성하는 비트의 어느 것을 마스크 할지를 지정하는 데이터이다. 어느 쪽의 비트를 마스크 할지는, 초기 유니크 코드(UCp)의 비트의 에러율에 의해 결정된다. 본 실시 형태에서는, 비트 마스크 데이터(BM)에서 마스크 대상으로 지정되는 비트는, 에러율이 높은 초기 유니크 코드(UCp)의 비트가 설정된다. 도 2에 나타내는 예에서는, 초기 유니크 코드(UCp)의 1비트째와 6비트째의 비트의 에러율이 높기 때문에, 비트 마스크 데이터(BM)가 "0"이 되어 있다. 이 이외의 비트는, 에러율이 낮은 비트 또는 값이 안정되어 있는 비트이기 때문에, 비트 마스크 데이터(BM)가 "1"이 되어 있다. 즉, 마스크가 필요한 비트의 비트 마스크 데이터(BM)는 "0"이 되고, 마스크가 불필요한 비트의 마스크 데이터는 "1" 이 된다. 그리고, 비트 마스크 데이터(BM)를 이용해서 초기 유니크 코드(UCp)를 마스크함으로써, 초기 유니크 코드(UCp)의 1비트째와 6비트째의 비트를 삭제한 마스크 처리 후의 데이터(예를 들면, 중간 유니크 코드(UCb))를 얻을 수 있다(마스크 처리에 의해 삭제한 비트는 "X"로 나타낸다). 그 후, 마스터 처리에 의해 생성된 중간 유니크 코드(UCb)는 좌측 정렬된다. 여기에서 말하는 에러율이란, 초기 유니크 코드(UCp)를 생성할 때마다, 비트의 데이터가 "0", 또는 "1"로 어떤 일정한 고확률로 변동하는 값이며, 이 초기 유니크 코드(UCp)에는, 에러율이 낮은 비트도 포함되어 있다.
다음으로, ECC 코드(에러 정정 코드)를 이용하여, 중간 유니크 코드(UCb)의 에러 정정이 행해진다. 도 2에 나타내는 예에서는, ECC 코드를 이용한 에러 정정 처리(이하, ECC 처리라 칭한다)에 의해, 2비트째의 비트가 "0"에서 "1"로 정정된다. ECC 처리에 의해 생성된 유니크 코드가 제1 확정 유니크 코드(UCm) 또는 제2 확정 유니크 코드(UCw)가 된다.
계속해서, 실시 형태 1에 관한 데이터 기입 시스템(1)에서의 반도체 장치(10) 및 기입기(20)의 동작에 대해서 설명한다. 도 3에 실시 형태 1에 관한 반도체 장치(10) 및 기입기(20)의 동작을 나타내는 시퀀스도를 나타낸다.
도 3에 도시한 바와 같이, 실시 형태 1에 관한 데이터 기입 시스템(1)에서는, 우선, 기입기(20)가 반도체 장치(10)로부터 식별 정보(ID)를 취득한다(스텝 S1). 그리고, 기입기(20)는, 수신한 식별 정보(ID)에 대응하는 비트 마스크 데이터(BM)를 저장부(21) 내의 데이터로부터 선택한다(스텝 S2). 계속해서, 기입기(20)는, 선택한 비트 마스크 데이터(BM)를 반도체 장치(10)에 송신한다(스텝 S3).
계속해서, 반도체 장치(10)에서는, 기입기(20)로부터 수신한 비트 마스크 데이터(BM)를 이용해서 초기 유니크 코드(UCp)에 비트 마스크 처리를 실시해서 중간 유니크 코드(UCb)를 생성한다(스텝 S4). 계속해서, 반도체 장치(10)는, 중간 유니크 코드(UCb)를 반도체 장치 내의 ECC 회로(15) 및 기입기(20)에 송신한다(스텝 S6).
반도체 장치(10)에서는, ECC 회로(15)가 중간 유니크 코드(UCb)에 대하여 저장부(14)에 저장되어 있는 ECC 코드를 적용하고, 중간 유니크 코드(UCb)의 에러 정정 처리를 행한다. 그리고, ECC 회로(15)는, 제1 확정 유니크 코드(UCm)를 생성한다(스텝 S5).
한편, 기입기(20)는, ECC 회로(23)가 중간 유니크 코드(UCb)에 대하여 저장부(22)에 저장되어 있는 ECC 코드를 적용하고, 중간 유니크 코드(UCb)의 에러 정정 처리를 행한다. 그리고, ECC 회로(23)는, 제2 확정 유니크 코드(UCw)를 생성한다(스텝 S7). 계속해서, 기입기(20)는, CRC 회로(24)가 저장부(22)에 저장되어 있는 CRC 코드를 이용해서 제2 확정 유니크 코드(UCw)의 정당성을 검증한다(스텝 S8). 스텝 S8에서 제2 확정 유니크 코드(UCw)가 정당한 것이라고 판정되었을 경우, 해시 함수 암호부(26)는, CRC 회로(24)의 제2 확정 유니크 코드(UCw)를 적용하고, 제2 확정 유니크 코드(UCw)에 의해 해시 함수(HF1)를 암호화하고, 송신 데이터(HF2)를 생성한다(스텝 S9). 그리고, 기입기(20)는, 생성한 송신 데이터(HF2)를 반도체 장치(10)에 송신한다(스텝 S10). 또한, 스텝 S8에서 제2 확정 유니크 코드(UCw)가 부정한 것이라고 판정되었을 경우, 기입기(20)는, 처리를 정지한다.
계속해서, 반도체 장치(10)는, 수신한 송신 데이터(HF2)를 스텝 S5에서 생성된 제1 확정 유니크 코드(UCm)로 복호해서 해시 함수(HF1)를 생성한다(스텝 S11). 그리고, 반도체 장치(10)는, 해시 함수(HF1)를 이용해서 다른 반도체 장치와 암호 통신을 개시한다(스텝 S12).
실시 형태 1에 관한 반도체 장치에서는, 암호화한 비닉 정보(예를 들면, 해시 함수(HF1))를 기입기(20)로부터 취득하고, 반도체 장치 내에서 생성되는 제1 확정 유니크 코드(UCm)에서 송신 데이터(HF2)를 복호함으로써 이용 가능한 해시 함수(HF1)를 얻을 수 있다. 이렇게, 기입기(20)로부터 반도체 장치(10)에 송신하는 송신 데이터로서 암호화한 정보를 적용함으로써, 비닉 정보의 높은 시큐리티를 유지해서 비닉 정보를 반도체 장치(10)에 기입할 수 있다. 그러나, 종래의 일반적인 암호 통신을 반도체 장치(10)에의 비닉 정보의 기입에 적용하는 것만으로는, 시큐리티를 유지할 수 없다는 문제가 있다.
암호 통신의 일반적 기술로서, 비닉 정보를 송신하는 송신측 장치에 공개키를 구비하고, 비닉 정보를 수신하는 수신측 장치에 비밀키를 구비하는 공개키 방식과, 통신을 행하는 장치 간에서 공통인 키를 이용하는 공통키 방식이 있다. 따라서, 암호 방식으로서 공개키 방식을 채용한 경우, 수신측 장치가 되는 반도체 장치에 비밀키를 미리 저장하고, 송신측 장치가 되는 기입기에 공개키를 미리 저장할 필요가 있다. 그리고, 공개키 방식을 채용할 경우, 반도체 장치와 기입기 사이에서 키 정보의 수수를 행할 필요가 없기 때문에, 반도체 장치와 기입기 사이의 통신에서의 키 정보의 누설을 방지할 수 있는 메리트가 있다. 그러나, 반도체 장치는, 기입기의 유통량에 반해서 훨씬 대량으로 유통되기 때문에 이 비밀키의 관리가 문제가 된다. 또한, 암호 방식으로서 공통키 방식을 채용했을 경우, 반도체 장치와 기입기와의 양방에 공통키를 미리 저장해 둠으로써, 반도체 장치와 기입기 사이의 통신에서의 키 정보의 누설을 방지할 수 있는 메리트가 있다. 그러나, 공통키 방식을 채용했을 경우, 공통키의 누설을 방지하는 대책을 반도체 장치와 기입기의 양방에서 행하지 않으면 안 되는 문제가 있다. 또한, 공개키 방식을 채용했을 경우, 일반적인 키 정보의 누설 방지 대책 외에 기입기의 도난 대책 등을 행할 필요도 있다.
특히, 반도체 장치(10)가 자동차에 탑재되는 차량 탑재용 반도체 장치인 경우, 상기한 바와 같은 시큐리티 대책을 만전에 유지하는 것은 어렵다. 자동차는, 일반적으로 메인터넌스가 필요해서, 해당 메인터넌스 과정에서는, 메인터넌스하는 자가 기입기의 조작을 하는 경우가 있어, 메인터넌스하는 자가 공격자가 되는 것을 완전하게 방지하는 것은 어렵기 때문이다. 또한, 기입기는, 자동차 메이커의 공장뿐만 아니라, 카 딜러 등에 배치되기 때문에, 이들 모두의 설정 개소에서 완전하게 기입기의 도난을 방지하는 것은 어렵기 때문이다.
여기서, 일반적인 반도체 장치를 해석해서 부정하게 데이터를 취득하는 방법으로서는, 이하와 같은 방법이 있다. (1) 반도체 장치를 FIB(Focused Ion Beam)를 이용해서 가공하고, 프로브를 이용해서 반도체 장치를 물리적으로 해석하는 방법. (2) 반도체 장치에 레이저 등의 전자파를 조사하거나, 전원 단자에 노이즈를 삽입하거나 함으로써 CPU를 폭주시켜서 부정하게 데이터를 취득하는 폴트 트리 해석. (3) 반도체 장치의 소비 전류량을 관측하고, 키 데이터를 해석하는 리크 해석. (4) 반도체 장치의 신호 단자에 직접 접속하고, 신호 정보를 읽어내는 방법.
이러한 부정한 해석을 회피하기 위해서, 높은 시큐리티 레벨이 필요한 분야에서는, 시큐리티 레벨이 높은 마이크로컴퓨터(이하, 시큐어 마이크로컴퓨터라고 말한다)가 이용되고 있다. 이 시큐어 마이크로컴퓨터에는, 배선 영역에의 실드, 광이나 신호 노이즈를 검출하는 기능, 신호에 난수 신호를 조합해서 전류를 쓰는 복잡한 기능 등이 실장되어 있다.
이와 같이, 시큐어 마이크로컴퓨터를 이용함으로써 제삼자가 부정하게 반도체 장치를 해석하는 것을 방지할 수 있다. 그러나, 시큐어 마이크로컴퓨터를 이용한 경우에는, 부정 해석을 방지할 수 있는 반면, 그 내탬퍼성에 의해 반도체 장치 메이커 등이 불량 해석이나 고장 해석을 실시할 수 없게 된다고 하는 문제가 있었다. 특히, 자동차에 이용되는 차량 탑재용의 마이크로컴퓨터(ECU 등)에서는, 고신뢰성이 필요하기 때문에, 반도체 장치의 불량 해석이나 고장 해석이 필요하게 된다. 이러한 이유 때문에, 차량 탑재용의 마이크로컴퓨터에는 시큐어 마이크로컴퓨터보다 시큐리티 레벨이 낮은 범용의 마이크로컴퓨터(이하, 범용 마이크로컴퓨터라고 한다)가 널리 이용되어 왔다. 종래, 차량 탑재용의 마이크로컴퓨터에서는, 범용 마이크로컴퓨터를 사용하면서, 반도체 장치의 시큐리티 레벨을 향상시키는 것이 가능한 암호 통신 시스템이 필요하게 되었다.
그러나, 실시 형태 1에 관한 반도체 장치 및 반도체 장치에의 데이터 기입 방법에 따르면, 상기 과제를 해결할 수 있다. 실시 형태 1에 관한 반도체 장치(10)에서는, 초기 유니크 코드(UCp)에 대하여 제1 에러 정정 처리(예를 들면, 비트 마스크 처리)를 실시해서 중간 유니크 코드(UCb)를 생성한다. 그리고, 실시 형태 1에 관한 반도체 장치(10)는, 이 중간 유니크 코드(UCb)를 반도체 장치(10)의 ECC 회로(15)에 송신함과 함께, 기입기(20)에 송신한다. 반도체 장치(10)에서는, ECC 회로(15)에서 중간 유니크 코드(UCb)에 제2 에러 정정 처리(예를 들면, ECC 코드에 의한 에러 정정 처리)를 실시해서 제1 확정 유니크 코드(UCm)를 생성한다. 또한, 기입기(20)는, ECC 회로(23)에서 중간 유니크 코드(UCb)에 제2 에러 정정 처리와 동일한 에러 정정 처리를 실시해서 제2 확정 유니크 코드(UCw)를 생성하고, 이것을 키 정보로서 해시 함수(HF1)를 암호화해서 송신 데이터(HF2)를 생성한다. 그리고, 반도체 장치(10)에서는, 송신 데이터(HF2)를 제1 확정 유니크 코드(UCm)를 이용해 복호해서 해시 함수(HF1)를 생성한다. 즉, 실시 형태 1에 관한 반도체 장치(10)는, 해시 함수(HF1)를 기입기(20)로부터 얻기 위해서, 기입기(20)와의 통신에서 키 정보 및 해시 함수(HF1)를 직접 송수신할 필요가 없다. 이 때문에, 실시 형태 1에 관한 반도체 장치(10)는, 비닉 정보인 해시 함수(HF1) 및 해시 함수(HF1)의 암호화 처리·복호화 처리에 이용하는 키 정보가 누설하는 것을 방지하여, 시큐리티를 높일 수 있다.
실시 형태 1에 관한 반도체 장치(10)에서는, 해시 함수(HF1)의 복호에 이용하는 키 정보를 초기 유니크 코드(UCp)(예를 들면, PUF)로부터 생성한다. 이 초기 유니크 코드(UCp)로부터 키 정보를 생성하는 경우, 실시 형태 1에 관한 반도체 장치(10)에서는, 제1 정정 데이터(예를 들면, 비트 마스크 데이터(BM)) 및 제2 정정 데이터(예를 들면, ECC 데이터)를 이용할 필요가 있다. 그러나, 실시 형태 1에 관한 반도체 장치에서는, 비트 마스크 데이터(BM)가 반도체 장치(10)의 외부로부터 공급된다. 그 때문에, 실시 형태 1에 관한 반도체 장치에서는, 해석 등의 부정 행위에 의해 ECC 코드와 초기 유니크 코드(UCp)가 판명되었다고 하더라도, 제1 확정 유니크 코드(UCm)를 특정할 수 없다. 이에 의해, 실시 형태 1에 관한 반도체 장치(10)에서는, 부정 액세스에 의한 키 정보의 누설을 방지하고, 높은 시큐리티를 실현할 수 있다.
또한, 실시 형태 1에 관한 데이터 기입 시스템(1)에서는, 반도체 장치(10)의 인식 정보(ID)에 대응하는 비트 마스크 데이터(BM)를 기입기(20)가 갖고 있지 않을 경우, 반도체 장치(10)에는, 비트 마스크 데이터(BM)가 송신되지 않는다. 이러한 점 때문에, 가짜 기입기에 의해, 반도체 장치(10)에 악의를 갖는 가짜 해시 함수를 송신해도, 반도체 장치(10)에서, 본래의 제1 확정 유니크 코드(UCm)와 다른 가짜 제1 확정 유니크 코드밖에 생성되지 않고, 반도체 장치(10)는, 해시 함수를 정상적으로 생성할 수 없다. 또한, 가짜 기입기였을 경우, ECC 코드도 본래의 ECC 코드와는 상이한 것이기 때문에, 기입기측에서 생성되는 제2 확정 유니크 코드(UCw)와 반도체 장치측에서 생성되는 제1 확정 유니크 코드(UCm)가 일치하지 않는다. 이러한 점 때문에도, 가짜 기입기에 의해 생성된 송신 데이터는, 반도체 장치측에서 정상적으로 복호 처리를 행할 수 없다. 이러한 점 때문에, 실시 형태 1에 관한 반도체 장치(10)에 따르면, 가짜 기입기로부터의 악의를 갖는 해시 함수의 기입을 방지할 수 있다.
또한, 실시 형태 1에 관한 반도체 장치(10)에서는, 부정 액세스에 의해, 반도체 장치(10) 내의 식별 정보(ID), 초기 유니크 코드(UCp), 및 ECC 코드 등의 저장 데이터의 누설이 있는 경우에도, 누설한 데이터만으로는 비닉 정보인 해시 함수(HF1), 혹은 해시 함수(HF1)의 복호 처리에 이용되는 제1 확정 유니크 코드(UCm)를 인식할 수 없다. 이러한 점 때문에, 실시 형태 1에 관한 반도체 장치(10)는, 시큐어 마이크로컴퓨터 등의 비싼 반도체 장치를 이용하는 일없이, 범용 마이크로컴퓨터 등에 의해 실현할 수 있다. 또한, 범용 마이크로컴퓨터에 의해 반도체 장치(10)를 실현할 수 있기 때문에, 정규의 메인터넌스하는 자이면, 반도체 장치(10)의 문제점을 용이하게 해석할 수 있다.
또한, 실시 형태 1에 관한 데이터 기입 시스템(1)에서는, 반도체 장치(10)와 기입기(20)의 통신에서, 송수신하는 데이터는, 반도체 장치(10)의 식별 정보(ID), 제1 확정 유니크 코드(UCm)의 생성에 필요한 복수의 정정 데이터 중 1개의 정정 데이터, 에러 정정 처리가 행해지기 전의 제1 확정 유니크 코드(UCm)(즉, 중간 유니크 코드(UCb)), 및 암호화된 해시 함수(HF1)(즉, 송신 데이터(HF2))이다. 즉, 실시 형태 1에 관한 데이터 기입 시스템(1)에서는, 반도체 장치(10)와 기입기(20)의 통신에서, 비닉 정보인 해시 함수(HF1) 및 복호에 이용하는 제1 확정 유니크 코드(UCm)를 직접 송수신하지 않는다. 이러한 점 때문에, 실시 형태 1에 관한 데이터 기입 시스템(1)에서는, 반도체 장치(10)와 기입기(20) 사이의 통신 경로에 대하여 신호의 방수 등이 행해진 경우에도, 비닉 정보 또는 비닉 정보의 재생에 직접 이용되는 데이터가 누설되는 일이 없다. 이러한 점 때문에, 실시 형태 1에 관한 데이터 기입 시스템(1)에서는, 반도체 장치(10)와 기입기(20) 사이의 통신 경로에 대해 높은 시큐리티를 실현할 수 있다.
또한, 실시 형태 1에 관한 반도체 장치(10) 및 기입기(20)에서는, 제1 확정 유니크 코드(UCm)와 제2 확정 유니크 코드(UCw)와의 비교 처리에 의해 반도체 장치(10)와 기입기(20) 사이의 인증을 행할 수 있다. 즉, 실시 형태 1에 관한 반도체 장치(10) 및 기입기(20)에서는, RSA 암호와 같은 복잡한 계산을 행하는 일없이 인증 처리를 행할 수 있다. 이러한 점 때문에, 실시 형태 1에 관한 반도체 장치(10) 및 기입기(20)에 따르면, 간단한 계산에 의한 처리만으로 데이터 기입 시스템(1)의 높은 시큐리티를 실현할 수 있다.
또한, 실시 형태 1에 관한 데이터 기입 시스템(1)에서는, 기입기(20)가 도난 된 경우에, 기입기(20)에 저장되어 있는 비트 마스크 데이터(BM) 및 ECC 코드가 누설될 우려가 있다. 그러나, 이들 데이터만으로 제1 확정 유니크 코드(UCm)를 도출하는 것은 극히 곤란하다. 이러한 점 때문에, 실시 형태 1에 관한 데이터 기입 시스템(1)에서는, 기입기(20)에 대하여 고도의 도난 대책을 실시할 필요가 없다고 하는 효과를 발휘한다. 또한, 도난 대책을 생각한 경우, 기입기(20)에 저장되어 있는 비닉 정보(예를 들면, 해시 함수(HF1))는, 이용시에 입력하거나, 혹은 정보 누설 방지 대책이 이루어진 상태에서 유지하고 있는 것이 바람직하다.
또한, 실시 형태 1에 관한 기입기(20)에서는, 가짜 반도체 장치가 접속된 경우에는, 가짜 반도체 장치로부터 기입기(20)에 송신되는, 에러 정정 처리가 행해지기 전의 제1 확정 유니크 코드(UCm)(즉, 중간 유니크 코드(UCb))가 다르기 때문에, 기입기 내부의 ECC 회로(23)에서 생성되는, 제2 확정 유니크 코드(UCw)가 올바르게 생성될 수 없다. 그 때문에, CRC 회로(24)에 의한 정당성 판정 처리에 의해, 해당 가짜 반도체 장치의 판별을 행할 수 있다. 즉, 실시 형태 1에 관한 기입기(20)에 따르면, 반도체 장치(10)의 모조품의 확산을 방지할 수 있다.
또한, 통상적으로, 반도체 장치(10)가 이용하는 비닉 정보는, 반도체 장치(10)의 이용자에 있어서의 기밀 사항이다. 이러한 기밀 사항을 반도체 장치에 높은 시큐리티를 유지하면서 저장하기 위해서는, 이용자가 미리 반도체 메이커에 비닉 정보를 전달할 필요가 있다. 그 때문에, 이용자의 관점으로부터는, 비닉 정보에 관한 누설 방지 관리를 충분히 행하는 것을 확증할 수 없다고 하는 문제가 있다. 그러나, 실시 형태 1에 관한 반도체 장치(10) 및 기입기(20)를 이용함으로써, 이용자가 기입기(20)를 이용하여, 이용자 자신이 직접 반도체 장치(10)에 비닉 정보를 기입할 수 있다. 즉, 실시 형태 1에 관한 반도체 장치(10) 및 기입기(20)를 이용함으로써, 이용자에 있어서의 비닉 정보의 누설 방지 관리의 확실성을 향상시킬 수 있다. 한편, 반도체 메이커는, 반도체 장치(10)에 대응하는 비트 마스크 데이터(BM) 및 ECC 코드를 이용자에 제공할 필요가 있지만, 이들 데이터만으로는, 제1 확정 유니크 코드(UCm)를 도출하는 것은 곤란하다. 즉, 반도체 메이커에 있어서도, 비트 마스크 데이터(BM) 및 ECC 코드에 대한 고도의 누설 대책은 필요가 없어진다.
또한, 상기에서 설명한 CRC 회로는, 처리 대상 데이터의 에러 검출 또는 오정정을 방지하는 처리를 실행할 수 있는 회로(예를 들면, 패리티 체크 회로)로 치환하는 것도 가능하다. 또한, ECC 회로는, 처리 대상 데이터의 에러 정정을 할 수 있는 것 이외의 구성의 회로로 치환하는 것도 가능하다.
(실시 형태 2)
실시 형태 2에 관한 반도체 장치(30) 및 외부 장치(예를 들면, 기입기(40))의 블록도를 도 4에 나타낸다. 도 4에 도시한 바와 같이, 실시 형태 2에서는, 데이터 기입 시스템(2)이 반도체 장치(30) 및 기입기(40)에 의해 구성된다. 또한, 실시 형태 2의 설명에서, 실시 형태 1과 같은 구성 요소에 대해서는, 실시 형태 1과 같은 부호를 붙여서 설명을 생략한다.
도 4에 도시한 바와 같이, 반도체 장치(30)에, 실시 형태 1에 관한 반도체 장치(10)에서의 제1 데이터 정정부로서 ECC 회로(31)를 구비하고, 제2 데이터 정정부로서 비트 마스크 회로(33)를 갖는다. 또한, 반도체 장치(30)에서는, 제2 데이터 정정부에서 이용되는 제2 정정 데이터로서 비트 마스크 데이터(BM)가 이용된다. 도 4에서는, 비트 마스크 데이터(BM)가 저장되는 영역으로서 저장부(32)를 나타냈다. 또한, 도 4에서는, ECC 회로(31)가 생성하는 중간 유니크 코드에 UCe의 부호를 붙였다.
도 4에 도시한 바와 같이, 기입기(40)는, 반도체 장치(10)로부터 반도체 장치(30)로의 변경에 수반하여, 제2 확정 유니크 코드(UCw)를 생성하는 에러 정정부가 ECC 회로(23)로부터 비트 마스크 회로(43)로 변경되어 있다. 그 때문에, 기입기(40)는, 저장부(22) 대신에 비트 마스크 데이터와 CRC 코드 테이블을 저장하는 영역으로서 저장부(42)를 갖는다. 또한, 기입기(40)에서는, 반도체 장치의 제1 에러 정정부가 비트 마스크 회로(13)로부터 ECC 회로(31)로 변경된 것에 수반하여, 식별 정보(ID)와 대응지을 수 있는 에러 정정 데이터가 ECC 코드로 변경되어 있다. 그 때문에, 기입기(40)에는, 식별-마스크 비트 대응 표 대신에 식별 정보-ECC 코드 대응 표가 저장된다. 이 식별 정보-ECC 코드 대응 표를 저장하는 영역으로서, 도 4에서는 저장부(41)를 도시한다. 이 저장부(41)는, 식별 정보(ID)를 수신했을 경우, 식별 정보(ID)에 대응하는 ECC 코드를 출력한다. 이 ECC 코드는, 초기 유니크 코드(UCp)에 대응해서 미리 생성되는 코드이다. 이 ECC 코드를 이용해서 다른 반도체 장치에서 생성된 중간 유니크 코드의 에러 정정을 행해도, 생성되는 확정 유니크 코드는, 반도체 장치(10)에서 생성되는 제1 확정 유니크 코드(UCm)와는 다른 값이 된다.
계속해서, 실시 형태 2에 관한 반도체 장치(30) 및 기입기(40)의 동작에 대해서 설명한다. 도 5에 실시 형태 2에 관한 반도체 장치(30) 및 기입기(40)의 동작을 나타내는 시퀀스도를 나타낸다.
도 5에 도시한 바와 같이, 실시 형태 2에 관한 데이터 기입 시스템(2)에서는, 우선, 기입기(40)가 반도체 장치(30)로부터 식별 정보(ID)를 취득한다(스텝 S21). 그리고, 기입기(40)는, 수신한 식별 정보(ID)에 대응하는 ECC 코드를 저장부(41) 내의 데이터로부터 선택한다(스텝 S22). 계속해서, 기입기(40)는, 선택한 ECC 코드를 반도체 장치(30)에 송신한다(스텝 S23).
계속해서, 반도체 장치(30)에서는, 기입기(40)로부터 수신한 ECC 코드를 이용해서 초기 유니크 코드(UCp)에 에러 정정 처리를 실시해서 중간 유니크 코드(UCe)를 생성한다(스텝 S24). 계속해서, 반도체 장치(30)는, 중간 유니크 코드(UCe)를 반도체 장치 내의 비트 마스크 회로(33) 및 기입기(40)에 송신한다(스텝 S26).
반도체 장치(30)에서는, 비트 마스크 회로(33)가 중간 유니크 코드(UCe)에 대하여 저장부(32)에 저장되어 있는 비트 마스크 데이터(BM)를 적용하고, 중간 유니크 코드(UCe)의 에러 정정 처리를 행한다. 그리고, 비트 마스크 회로(33)는, 제1 확정 유니크 코드(UCm)를 생성한다(스텝 S25).
한편, 기입기(40)는, 비트 마스크 회로(43)가 중간 유니크 코드(UCe)에 대하여 저장부(42)에 저장되어 있는 비트 마스크 데이터(BM)를 적용하고, 중간 유니크 코드(UCe)의 에러 정정 처리를 행한다. 그리고, 비트 마스크 회로(43)는, 제2 확정 유니크 코드(UCw)를 생성한다(스텝 S27). 계속해서, 기입기(40)는, 비트 마스크 회로(43)에서 생성된, 제2 확정 유니크 코드를 CRC 회로(24)에 송신하고, 저장부(42)에 저장되어 있는 CRC 코드를 이용해서 제2 확정 유니크 코드(UCw)의 정당성을 검증한다(스텝 S28). 스텝 S28에서 제2 확정 유니크 코드(UCw)가 정당한 것이라고 판정되었을 경우, 기입기(40)는, 해시 함수 암호부(26)에서, 제2 확정 유니크 코드(UCw)에 의해 해시 함수(HF1)를 암호화해서 송신 데이터(HF2)를 생성한다(스텝 S29). 그리고, 기입기(40)는, 생성한 송신 데이터(HF2)를 반도체 장치(30)에 송신한다(스텝 S30). 또한, 스텝 S28에서 제2 확정 유니크 코드(UCw)가 부정한 것이라고 판정되었을 경우, 기입기(40)는, 처리를 정지한다.
계속해서, 반도체 장치(30)는, 수신한 송신 데이터(HF2)를 스텝 S25에서 생성된 제1 확정 유니크 코드(UCm)로 복호해서 해시 함수(HF1)를 생성한다(스텝 S31). 그리고, 반도체 장치(30)는, 해시 함수(HF1)를 이용해서 다른 반도체 장치와 암호 통신을 개시한다(스텝 S32).
상기 설명으로부터, 실시 형태 2에서는, 제1 에러 정정 처리로서 행해지는 처리와 제2 에러 정정 처리로서 행해지는 처리를 실시 형태 1과 역의 순서로 했다. 이렇게 처리의 순서를 교체한 경우에도, 반도체 장치(30)와 기입기(40) 사이에서 키 정보 및 비닉 정보를 직접 송수신하는 일은 없다. 그 때문에, 실시 형태 1과 마찬가지로, 실시 형태 2에서도 키 정보 및 비닉 정보가 누설되는 것을 방지하고, 높은 시큐리티를 실현할 수 있다.
또한, 반도체 장치(30)와 기입기(40) 사이에서 송수신되는 데이터의 기본적인 성질은, 실시 형태 1과 다르지 않다. 그 때문에, 실시 형태 2에서도 실시 형태 1과 마찬가지로, 반도체 장치의 모조품 대책, 기입기의 도난 대책, 비닉 정보의 누설 대책 등의 관점에서의 시큐리티를 향상시킬 수 있다.
(실시 형태 3)
실시 형태 3에 관한 반도체 장치(50) 및 외부 장치(예를 들면, 기입기(60))의 블록도를 도 6에 나타낸다. 도 6에 도시한 바와 같이, 실시 형태 3에서는, 데이터 기입 시스템(3)이 반도체 장치(50) 및 기입기(60)에 의해 구성된다. 또한, 실시 형태 3의 설명에서, 실시 형태 1과 같은 구성 요소에 대해서는, 실시 형태 1과 같은 부호를 붙여서 설명을 생략한다.
도 6에 도시한 바와 같이, 실시 형태 3에서는, 기입기(60)가 식별 정보-비트 마스크 대응 표를 암호화한 상태에서 유지된다. 도 6에서는, 암호화된 식별 정보-비트 마스크 대응 표를 갖는 영역을 저장부(61)로 나타냈다. 저장부(61)는, 식별 정보(ID)를 수신했을 경우, 식별 정보(ID)에 대응하는 암호화 처리가 이루어진 비트 마스크 데이터(BME)를 출력한다. 비트 마스크 데이터는, 예를 들면, 공통키 방식으로 암호화 처리가 이루어진 것이다. 또한, 비트 마스크 데이터의 암호화 처리는, 저장부(61)에 저장되기 전에 행해진다. 이것은, 기입기(60)에 공통키(CK) 정보를 유지하지 않음으로써, 비트 마스크 데이터의 비닉성을 높이기 위해서이다.
도 6에 도시한 바와 같이, 실시 형태 3에 관한 반도체 장치(50)는, 실시 형태 1에 관한 반도체 장치(10)에 비트 마스크 복호부(51)를 추가한 것이다. 비트 마스크 복호부(51)는, 비트 마스크 데이터의 암호화에 이용된 공통키(CK)의 정보를 유지한다. 그리고, 비트 마스크 복호부(51)는, 암호화 완료 비트 마스크 데이터(BME)를 공통키(CK)를 이용해서 복호하고, 암호화되지 않은 비트 마스크 데이터(BM)를 생성하여, 비트 마스크 회로(13)에 송신한다.
실시 형태 3에 관한 데이터 기입 시스템(3)의 동작은, 실시 형태 1에 관한 데이터 기입 시스템(1)의 동작에 비트 마스크 데이터의 복호 처리가 가해진 것뿐이기 때문에, 여기서는 설명을 생략한다.
상기 설명으로부터, 실시 형태 3에 관한 기입기(60)는, 반도체 장치(50)의 제1 에러 정정 처리에서 이용되는 정정 데이터를 암호화한 상태로 유지한다. 이에 의해, 실시 형태 3에 관한 기입기(60)는, 기입기가 도난된 경우에도 제1 정정 데이터(예를 들면, 비트 마스크 데이터)의 비닉성을 높일 수 있다.
또한, 저장부(61)에 저장되는 비트 마스크 데이터의 복호에 이용하는 키를 식별 정보(ID)로 할 수도 있다. 이 경우, 반도체 장치(50)의 비트 마스크 복호부(51)는 불필요해진다. 또한, 저장부(61)는, 올바르게 복호된 비트 마스크 데이터를 식별 정보(ID)에 대응한 것으로 인식하고, 복호된 비트 마스크 데이터(BM)를 반도체 장치(50)에 송신하는 구성으로 한다.
(실시 형태 4)
실시 형태 4에 관한 반도체 장치(10) 및 외부 장치의 블록도를 도 7에 나타낸다. 도 7에 도시한 바와 같이, 실시 형태 4에서는, 외부 장치가 기입기(70)와 서버(73)로 구성된다. 또한, 실시 형태 4에서는, 데이터 기입 시스템(4)이 반도체 장치(10), 기입기(70), 및 서버(73)로 구성된다. 또한, 실시 형태 4의 설명에서, 실시 형태 1과 같은 구성 요소에 대해서는, 실시 형태 1과 같은 부호를 붙여서 설명을 생략한다.
실시 형태 4에서는, 반도체 장치(10)에 기입할 송신 데이터(HF2)를 서버(73)에서 생성한다. 또한, 반도체 장치(10)와 서버(73)는, 예를 들면, 공중 네트워크를 개재해서 접속된다. 기입기(70)는, 반도체 장치(10)와 서버(73) 사이의 통신을 중개한다.
기입기(70)는, 데이터 송수신 유닛(71, 72)을 갖는다. 데이터 송수신 유닛(71)은, 반도체 장치(10)와의 인터페이스 회로가 되고, 반도체 장치(10)와 송수신 가능한 프로토콜에 기초해 동작한다. 또한, 데이터 송수신 유닛(71)은, 데이터 송수신 유닛(72) 사이에서 통신을 행한다. 데이터 송수신 유닛(72)은, 서버(73)와 송수신 가능한 프로토콜에 기초해 동작을 행한다. 본 실시 형태에서는 기입기(70)는, 2개의 데이터 송수신 유닛으로 구성되어 있지만, 하나의 데이터 송수신 유닛으로 구성되어도 좋다.
서버(73)는, 실시 형태 1에 관한 기입기(20)가 갖는 기능 블록 모두를 갖고, 기입기(20)에서 실질적으로 같은 동작을 행한다.
이와 같이, 중간 유니크 코드(UCb)에 기초해 비닉 정보를 암호화한 송신 데이터(HF2)를 생성하는 기능은, 반도체 장치(10)에의 데이터의 기입 처리를 행하는 장소에 존재할 필요는 없다.
실시 형태 4에 관한 데이터 기입 시스템(4)에서는, 중간 유니크 코드(UCb)에 기초하는 송신 데이터(HF2)의 생성 처리를 서버(73)에서 행한다. 이 서버(73)는, 공중 네트워크 또는 전용선을 개재해서 통신할 수 있는 장소이면 어떤 장소에 설치되어도 좋다. 그 때문에, 서버(73)를 반도체 장치(10)의 이용자(예를 들면, 자동차 메이커)가 직접 관리가능한 장소에 설치하고, 기입기(70)를 메인터넌스 공장 등에 배치하는 것이 가능하다. 이렇게 함으로써, 반도체 장치(10)의 이용자는, 보다 직접적으로 비닉 정보를 관리할 수 있다. 또한, 기입기(70)가 도난당한 경우에도, 기입기(70)의 내부에는 비닉해야 할 정보가 존재하지 않기 때문에 , 데이터가 누설되는 것을 방지할 수 있다. 이에 의해, 실시 형태 4에 관한 데이터 기입 시스템(4)에서는, 다른 실시예에 비교해서 시큐리티를 높일 수 있다.
(실시 형태 5)
실시 형태 5에 관한 반도체 장치(10) 및 외부 장치의 블록도를 도 8에 나타낸다. 도 8에 도시한 바와 같이, 실시 형태 5에서는, 외부 장치가 기입기(74)와 서버(75)로 구성된다. 또한, 실시 형태 5에서는, 데이터 기입 시스템(5)이 반도체 장치(10), 기입기(74), 및 서버(75)로 구성된다. 도 8에 도시한 바와 같이, 실시 형태 5는, 실시 형태 4의 변형예를 나타내는 것이다. 따라서, 이하의 설명에서는, 실시 형태 4와 실시 형태 5 사이에서 다른 점에 대해 특히 설명한다.
실시 형태 5에 관한 데이터 기입 시스템(5)에서는, 기입기(70)에 비트 마스크 데이터(BM)가 저장되는 저장부(21)를 배치한 기입기(74)를 갖는다. 또한, 실시 형태 5에 관한 데이터 기입 시스템(5)에서는, 서버(73)로부터 비트 마스크 데이터(BM)가 저장되는 저장부(21)를 제외한 서버(75)를 갖는다. 즉, 실시 형태 5는, 중간 유니크 코드(UCb)에 기초해 비닉 정보를 암호화한 송신 데이터(HF2)를 생성하는 실시 형태 1에 관한 기입기(20)의 구성을, 기입기(74)와 서버(75)에 분산하여 배치하는 예를 나타내는 것이다. 이렇게, 실시 형태 1에 관한 기입기(20)의 구성을 분산하여 배치해도, 실시 형태 5에 관한 데이터 기입 시스템(5)은, 실시 형태 1에 관한 데이터 기입 시스템과 동일한 처리를 행하는 것이 가능하다. 즉, 실시 형태 5에 관한 데이터 기입 시스템(5)은, 실시 형태 1에 관한 데이터 기입 시스템(1)과 마찬가지로, 높은 시큐리티를 실현할 수 있다.
또한, 실시 형태 5에 관한 데이터 기입 시스템(5)에서는, 실시 형태 4에 관한 데이터 기입 시스템(4)과 마찬가지로, 서버를 외부 장치로서 이용하고 있다. 그 때문에, 실시 형태 5에서도 실시 형태 4와 마찬가지로 시큐리티를 높일 수 있다.
(실시 형태 6)
실시 형태 6에 관한 반도체 장치(80) 및 외부 장치(예를 들면, 기입기(90))의 블록도를 도 9에 나타낸다. 도 9에 도시한 바와 같이, 실시 형태 6에 관한 데이터 기입 시스템(6)은, 반도체 장치(80) 및 기입기(90)에 의해 구성된다. 또한, 실시 형태 6의 설명에서, 실시 형태 1과 같은 구성 요소에 대해서는, 실시 형태 1과 같은 부호를 붙여서 설명을 생략한다.
도 9에 도시한 바와 같이, 반도체 장치(80)는, 실시 형태 1에 관한 반도체 장치(10)에 기입 정보 기억부(81)를 추가한 것이다. 또한, 기입기(90)는, 실시 형태 1에 관한 기입기(20)에 기입 정보 생성부(91)를 추가한 것이다. 실시 형태 6에 관한 데이터 기입 시스템(6)에서는, 기입 정보 생성부(91)에서 송신 데이터(HF2)와 송신 데이터(HF2)의 비닉성을 높이는 더미 값(Dd)을 머지한 기입 정보를 생성한다. 그리고, 반도체 장치(80)는, 기입 정보 기억부(81)에서 기입 정보 생성부(91)에서 생성된 기입 정보를 유지함과 함께, 제1 확정 유니크 코드(UCm)를 이용해서 송신 데이터(HF2)를 기입 정보 기억부(81)로부터 읽어낸다. 이하에서는, 특히, 기입 정보 기억부(81)와 기입 정보 생성부(91)에 대해서 설명한다.
기입 정보 기억부(81)는, 유니크 코드 대응 정보 생성부(예를 들면, 다이제스트 생성부(82)), 기억 영역(83), 메모리 컨트롤러(84)를 갖는다.
다이제스트 생성부(82)는, 제1 확정 유니크 코드(UCm)로부터 유니크 코드 대응 정보(예를 들면, 다이제스트 값(DIm))를 생성한다. 실시 형태 6에서는, 유니크 코드 대응 정보 생성부로서 다이제스트 생성부(82)를 이용했지만, 유니크 코드 대응 정보 생성부로서는, 제1 확정 유니크 코드(UCm)로부터 일의적으로 어드레스 값에 상당하는 정보를 생성하는 것이면 좋고, 다이제스트 생성부 이외의 알고리즘으로 동작하는 회로를 이용하는 것도 가능하다.
기억 영역(83)은, 다이제스트 값(DIm)과 관련지을 수 있는 영역(예를 들면, 다이제스트 값(DIm)을 액세스 대상의 어드레스로 했을 경우, 다이제스트 값(DIm)에서 나타내지는 영역)에 비닉 대상 정보를 암호화한 송신 데이터(HF2)가 저장된다. 또한, 기억 영역(83)은, 플래시 메모리 등의 불휘발성 메모리이며, 전원을 차단해도 저장하고 있는 정보를 유지하는 기억 장치이다.
메모리 컨트롤러(84)는, 다이제스트 값(DIm)에 기초해 기억 영역(83)에 대한 액세스를 행하기 위한 어드레스를 생성하고, 해당 어드레스에 대응하는 영역으로부터 정보를 읽어낸다. 또한, 메모리 컨트롤러(84)는, 기입기(90)로부터 기입 명령이 있을 경우, 해당 기입 명령을 따라서 기억 영역(83)에 정보를 기입한다.
보다 구체적으로는, 기입 정보 기억부(81)에 저장되는 송신 데이터(HF2)는, 기입기(90)에서 생성된다. 그리고, 기입기(90)는, 송신 데이터(HF2)를 기입할 때에, 더미 값(Dd)과 송신 데이터(HF2)를 머지해서 기입 명령을 발행한다. 이때, 기입기(90)는, 송신 데이터(HF2)를 저장하는 영역으로서 제2 확정 유니크 코드(UCw)의 다이제스트 값(DIw)을 송신 데이터(HF2)의 기입 어드레스로서 지정한다. 그리고, 메모리 컨트롤러(84)는, 반도체 장치(80)의 다이제스트 생성부(82)가 제1 확정 유니크 코드(UCm)로부터 생성하는 다이제스트 값(DIm)을 리드 어드레스로 하여 송신 데이터(HF2)를 읽어낸다.
기입 정보 생성부(91)는, 다이제스트 생성부(92), 더미 값 발생 회로(93), 셀렉터(94), 버퍼(95)를 갖는다.
다이제스트 생성부(92)는, 다이제스트 생성부(82)와 같은 알고리즘에 의해, 제2 확정 유니크 코드(UCw)로부터 일의적으로 다이제스트 값(DIw)을 생성한다. 다이제스트 생성부(92)에 입력되는 제2 확정 유니크 코드(UCw)는, 반도체 장치(80)가 정규 제품이면 다이제스트 생성부(92)에 입력되는 제1 확정 유니크 코드(UCm)와 같은 것이다. 즉, 다이제스트 생성부(92)에서 생성되는 다이제스트 값(DIw)은, 반도체 장치(80)의 다이제스트 생성부(82)에서 생성되는 다이제스트 값(DIm)과 동일한 값이 된다.
더미 값 발생 회로(93)는, 송신 데이터(HF2)와 함께 반도체 장치(80)의 기억 영역(83)에 기입되는 더미 값(Dd)을 생성한다. 더미 값(Dd)은, 해시 함수(HF1)와는 다른 값을 암호화한 가짜 암호화 정보이다.
셀렉터(94)는, 버퍼(95)에 기입하는 정보를 선택하는 회로이다. 버퍼(95)는, 더미 값(Dd)과 송신 데이터(HF2)를 일시적으로 기억하는 기억 장치이다. 버퍼(95)는, 예를 들면, DRAM(Dynamic Random Access Memory) 등의 불휘발성 메모리이다. 이 버퍼(95)는, 반도체 장치(80)의 기억 영역(83)과 같은 용량의 기억 장치인 것이 바람직하다.
보다 구체적으로는, 셀렉터(94)는, 송신 데이터(HF2)를 버퍼(95)에 기입할 때는, 반도체 장치(80)의 메모리 컨트롤러(84)가 다이제스트 값(DIw)을 이용해서 읽어내기 동작을 행하는 알고리즘과 같은 알고리즘으로 버퍼(95)에 정보를 기입한다. 예를 들면, 기입기(90)에서는, 셀렉터(94)는, 버퍼(95)의 영역 중 다이제스트 값(DIw)에서 나타내지는 어드레스의 영역에 송신 데이터(HF2)를 기입하고, 버퍼(95)의 다른 어드레스에서 나타내지는 영역에는 더미 값(Dd)을 기입한다. 그리고, 기입기(90)는, 버퍼(95)에 저장되어 있는 정보를 머지해서 반도체 장치(80)에 송신하는 명령을 발행한다.
계속해서, 실시 형태 6에 관한 반도체 장치(80) 및 기입기(90)의 동작에 대해서 설명한다. 도 10에 실시 형태 6에 관한 반도체 장치(80) 및 기입기(90)의 동작을 나타내는 시퀀스도를 나타낸다.
도 10에 도시한 바와 같이, 실시 형태 6에 관한 데이터 기입 시스템(6)에서는, 우선, 기입기(90)가 반도체 장치(80)로부터 식별 정보(ID)를 취득한다(스텝 S41). 그리고, 기입기(90)는, 수신한 식별 정보(ID)에 대응하는 비트 마스크 데이터(BM)를 저장부(21) 내의 데이터로부터 선택한다(스텝 S42). 계속해서, 기입기(90)는, 선택한 비트 마스크 데이터(BM)를 반도체 장치(80)에 송신한다(스텝 S43).
계속해서, 반도체 장치(80)에서는, 기입기(90)로부터 수신한 비트 마스크 데이터(BM)를 이용해서 초기 유니크 코드(UCp)에 비트 마스크 처리를 실시해서 중간 유니크 코드(UCb)를 생성한다(스텝 S44). 계속해서, 반도체 장치(10)는, 중간 유니크 코드(UCb)를 ECC 회로(15) 및 기입기(90)에 송신한다(스텝 S46).
반도체 장치(80)에서는, ECC 회로(15)가 중간 유니크 코드(UCb)에 대하여 저장부(14)에 저장되어 있는 ECC 코드를 적용하고, 중간 유니크 코드(UCb)의 에러 정정 처리를 행한다. 그리고, ECC 회로(15)는, 제1 확정 유니크 코드(UCm)를 생성한다(스텝 S45).
한편, 기입기(90)는, ECC 회로(23)가 중간 유니크 코드(UCb)에 대하여 저장부(22)에 저장되어 있는 ECC 코드를 적용하고, 중간 유니크 코드(UCb)의 에러 정정 처리를 행한다. 그리고, ECC 회로(23)는, 제2 확정 유니크 코드(UCw)를 생성한다(스텝 S47). 계속해서, 기입기(90)는, CRC 회로(24)가 저장부(22)에 저장되어 있는 CRC 코드를 이용해서 제2 확정 유니크 코드(UCw)의 정당성을 검증한다(스텝 S48). 스텝 S48에서 제2 확정 유니크 코드(UCw)가 정당한 것이라고 판정되었을 경우, 기입기(90)는, 제2 확정 유니크 코드(UCw)에 의해 해시 함수(HF1)를 암호화해서 송신 데이터(HF2)를 생성한다(스텝 S49).
계속해서, 기입기(90)는, 더미 값 발생 회로(93)에서 더미 값(Dd)을 생성한다(스텝 S50). 또한, 기입기(90)는, 다이제스트 생성부(92)에서 제2 확정 유니크 코드(UCw)로부터 다이제스트 값(DIw)을 생성한다(스텝 S51). 그리고, 기입기(90)는, 더미 값(Dd)과 송신 데이터(HF2)를 머지해서 버퍼(95)에 저장한다(스텝 S52). 그 후, 기입기(90)는, 더미 값(Dd)과 송신 데이터(HF2)를 반도체 장치(80)에 송신한다(스텝 S53).
계속해서, 반도체 장치(80)에서는, 기입기(90)에서 생성된 더미 값(Dd)과 송신 데이터(HF2)를 기억 영역(83)에 저장한다(스텝 S54). 그 후, 반도체 장치(80)는, 다이제스트 생성부(82)에서 제1 확정 유니크 코드(UCm)를 이용해서 다이제스트 값(DIm)을 생성한다(스텝 S55). 그리고, 반도체 장치(80)는, 기억 영역(83)의 영역 중 다이제스트 값(DIm)에 대응하는 어드레스가 나타내는 영역으로부터 송신 데이터(HF2)를 읽어내고, 송신 데이터(HF2)를 스텝 S45에서 생성된 제1 확정 유니크 코드(UCm)로 복호해서 해시 함수(HF1)를 생성한다(스텝 S56). 그리고, 반도체 장치(10)는, 해시 함수(HF1)를 이용해서 다른 반도체 장치와 암호 통신을 개시한다(스텝 S57).
실시 형태 6에 관한 반도체 장치(80)에서는, 암호화된 송신 데이터(HF2)를 자신의 제1 확정 유니크 코드(UCm)로부터 생성된 유니크 코드 대응 정보(예를 들면, 다이제스트 값(DIm))와 관련지을 수 있는 영역에 관련되는 영역에 저장한다. 이에 의해, 반도체 장치(80)에서는, 디바이스마다 다른 영역에 송신 데이터(HF2)가 저장되는 것이기 때문에, 공격자에게서 송신 데이터(HF2)가 저장된 영역 바로 그것을 비닉할 수 있다. 따라서, 실시 형태 6에 관한 반도체 장치(80)에서는, 반도체 장치(80)에 저장된 송신 데이터(HF2)의 시큐리티를 향상시킬 수 있다. 또한, 실시 형태 6에 관한 반도체 장치(80)에서는, 상기의 시큐어 마이크로컴퓨터를 이용하는 일없이 시큐리티를 향상시킬 수 있다.
또한, 실시 형태 6에 관한 반도체 장치(80)에서는, 송신 데이터(HF2)는, CPU(Central Processing Unit) 등으로부터 액세스 가능한 영역인 기억 영역에 저장된다. 그러나, 저장하는 송신 데이터(HF2)는, 자신의 제1 확정 유니크 코드(UCm)와 동일한 값의 제2 확정 유니크 코드(UCw)에 의해 암호화된 정보이다. 그리고, 실시 형태 6에 관한 반도체 장치(80)에서는, 해시 함수(HF1)를 필요에 따라서 그때마다 생성한다. 그 때문에, 메인터넌스 등에서는, 송신 데이터(HF2)의 원래의 정보인 해시 함수(HF1)에 대응하는 암호키를 갖는 메인터넌스하는 자가 해시 함수(HF1)의 문제점을 해석할 수 있다. 한편, 공격자가 만일 이 송신 데이터(HF2)를 읽어낼 수 있었던 경우에도, 공격자는, 송신 데이터(HF2)가 어떤 알고리즘으로 암호화되어 있는지를 이해할 수 없기 때문에, 송신 데이터(HF2)로부터 해시 함수(HF1)를 복호할 수 없다. 즉, 실시 형태 6에 관한 반도체 장치(80)는, 비닉 정보인 해시 함수(HF1)에 대한 메인터넌스성을 희생하지 않고 시큐리티를 향상시킬 수 있다.
또한, 실시 형태 6에 관한 데이터 기입 시스템(6)에서는, 자신의 유니크 코드(UCw)를 이용해서 해시 함수(HF1)를 암호화함으로써 송신 데이터(HF2)를 생성한다. 그 때문에, 실시 형태 6에 관한 반도체 장치(80)에서는, 송신 데이터(HF2)를 복호할 때에, 자신의 제1 확정 유니크 코드(UCm)를 이용하는 것만으로 좋고, 서버 등의 데이터베이스에 접속하는 등 해서 복호에 이용하는 암호키를 취득할 필요가 없다. 즉, 실시 형태 6에 관한 반도체 장치(80)에서는, 서버 등과의 접속에 관한 시큐리티 대책을 필요로 하지 않는다.
또한, 실시 형태 6에 관한 반도체 장치(80)에서는, 송신 데이터(HF2)를 저장하는 기억 영역의 용량으로서 기입기(90)의 버퍼(95)의 용량 이상으로 확보할 필요가 없다. 그 때문에, 실시 형태 6에 관한 반도체 장치(80)에서는, 반도체 장치(80)에 실장되어 있는 기억 영역을 유효하게 이용할 수 있다.
또한, 실시 형태 6에서는, 기입기(90)로부터 반도체 장치(80)에는, 더미 값(Dd)과 송신 데이터(HF2)를 머지한 상태에서 기입을 행한다. 이에 의해, 기입기(90)로부터 반도체 장치(80)에의 통신 경로에 대하여 사이드채널 어택 등의 공격이 있는 경우에도, 공격자는 더미 값(Dd)과 송신 데이터(HF2)를 구별할 수 없다. 또한, 기입기(90)로부터 반도체 장치(80)에 해시 함수(HF1)의 정보를 송신할 때에, 해시 함수(HF1)를 암호화한 송신 데이터(HF2)로서 송신한다. 이에 의해, 만일, 공격자가 송신 데이터(HF2)를 판별할 수 있었다고 하더라도, 암호화 알고리즘이 불분명한 해시 함수(HF1)를 공격자에게 취득당하는 일이 없다. 이러한 관점으로부터도 실시 형태 6에 관한 반도체 장치(80) 및 기입기(90)는, 비닉 대상 정보인 해시 함수(HF1)에 대한 시큐리티를 향상시킬 수 있다.
(실시 형태 7)
실시 형태 7에 관한 반도체 장치(100) 및 외부 장치(예를 들면, 기입기(200))의 블록도를 도 11에 나타낸다. 도 11에 도시한 바와 같이, 실시 형태 7에 관한 데이터 기입 시스템(7)은, 반도체 장치(100) 및 기입기(200)에 의해 구성된다.
반도체 장치(100)는, 실시 형태 1에 관한 반도체 장치(1)의 암호부(17)를 통신 처리부(101)로 변경한 것이다. 또한, 반도체 장치(100)는, 복호부가 기입 데이터를 복호하기 때문에, 이 복호부를 데이터 복호부(16)로서 나타냈다. 통신부(101)는, 기억부를 갖는다. 이 기억부에는, 데이터 복호부(16)가 수신 데이터에 대하여 복호 처리를 실시함으로써 얻어지는 기입 데이터(DA1)가 저장된다. 또한, 통신 처리부(101)는, 기억부에 저장된 기입 데이터를 이용해서 동작하는 회로이다. 또한, 기입기(200)는, 기입 대상의 비닉 정보로서 해시 함수(HF1) 대신에 기입 데이터(DA1)를 갖는다. 도 11에서는, 기입 데이터(DA1)를 저장하는 저장부(225)를 나타냈다. 또한, 도 11에서는, 기입 데이터(DA1)를 제2 확정 유니크 코드(UCw)로 암호화해서 송신 데이터(DA2)를 생성하는 회로로서 데이터 암호부(226)를 나타냈다. 데이터 암호부(226)의 동작은, 실시 형태 1에 관한 해시 함수 암호부(26)에서 실질적으로 같은 동작을 하기 때문에, 설명을 생략한다.
실시 형태 7에서는, 반도체 장치에 기입한 정보의 이용 방법에 대해서 설명한다. 보다 구체적으로는, 기억한 기입 데이터(DA1)를 이용해서 동작하는 통신 처리부(101)(혹은 반도체 장치)의 예에 대해서 설명한다. 따라서, 도 11에 나타내는 데이터 기입 시스템(7)에 의해 기입 데이터(DA1)가 기입된 반도체 장치에 의해 구성되는 암호 통신 시스템(8)의 일례를 도 12에 나타낸다. 도 12에 나타내는 예에서는, 비닉 정보로서 수신한 기입 데이터에 디바이스에 고유한 값으로서 랜덤한 비트에 에러를 포함하는 유니크 코드의 에러를 정정하는 고유 정정 데이터와, 에러 정정 후의 상기 초기 유니크 코드로부터 암호키를 생성하는 연산식 정보가 포함되는 것으로 한다. 또한, 도 12에 나타내는 반도체 장치의 회로 블록의 구성은, 상기 통신 처리부(101)의 구성의 일례에 상당하는 것이다.
도 12에 도시한 바와 같이, 실시 형태 7에 관한 암호 통신 시스템(8)은, 반도체 장치(ICa)(110)와 반도체 장치(ICb)(120)를 갖는다. 반도체 장치(110)는, 유니크 코드 생성부(111), 기억부(112), 공통키 생성부(113), 및 암호부(114)를 갖는다.
유니크 코드 생성부(111)는, 반도체 장치(110)에 고유한 유니크 코드(UC(a))를 생성하고, 공통키 생성부(113)에 출력한다. 여기서, 유니크 코드 생성부(111)가 생성하는 유니크 코드(UC(a))는, 반도체 장치(1)의 유니크 코드 생성부(12)가 생성하는 초기 유니크 코드와 동일한 성질의 것이다. 그 때문에, 유니크 코드 생성부(111) 대신에 유니크 코드 생성부(12)를 이용할 수도 있다.
기억부(112)는, 정정 데이터(CD(a)), 공통키 생성부(113)에서 생성된 공통키(CK(a)), 및 반도체 장치(120)의 공개키(PK(b))를 저장할 수 있다. 이 정정 데이터(CD(a))가 반도체 장치(ICa)에 기입된 기입 데이터에 상당한다. 기억부(112)는, 예를 들면 휘발성 메모리와 불휘발성 메모리를 갖고, 정정 데이터(CD(a)) 및 공개키(PK(b))는 불휘발성 메모리에 저장되고, 공통키(CK(a))는 휘발성 메모리에 저장된다. 따라서, 기억부(112)는 일시적으로 공통키(CK(a))를 저장하지만, 반도체 장치(110)의 전원이 오프가 되면 공통키(CK(a))의 정보는 소실된다.
공통키 생성부(113)는, 유니크 코드 생성부(111)로부터 출력된 유니크 코드(UC(a))와, 기억부(112)에 저장되어 있는 정정 데이터(CD(a))를 이용해서 공통키(CK(a))를 생성한다.
유니크 코드 생성부(111)에서 생성되는 유니크 코드(UC(a))는, 유니크 코드 생성시의 외적 요인, 예를 들면, 온도, 전압 등에 의해 변동하는 비트의 값을 포함하는 데이터이다. 이 때문에, 유니크 코드 생성부(111)에서 생성되는 유니크 코드(UC(a))에는, (1) 값이 안정된 비트, (2) 고확률로 변동하는 비트(즉, 값의 변동이 비교적 큰 비트), (3) 저확률로 변동하는 비트(즉, 값의 변동이 비교적 작은 비트)의 세 가지가 포함된다. 이렇게, 유니크 코드 생성부(111)에서 생성되는 유니크 코드(UC(a))는, (2) 고확률로 변동하는 비트와 (3) 저확률로 변동하는 비트를 포함한다. 따라서, 유니크 코드(UC(a))는 생성될 때마다 다른 값이 된다.
고확률로 변동하는 비트는 제조 공정에서 파악하는 것이 가능하다. 따라서, 제조 공정에서 각 비트를 판정함으로써, 고확률로 변동하는 비트를 마스크하는 마스크 데이터를 작성할 수 있다. 그리고, 이 마스크 데이터를 이용하여, 유니크 코드 생성부(111)에서 생성된 유니크 코드(UC(a))를 마스크함으로써, 유니크 코드(UC(a))에 포함되는 고확률로 변동하는 비트를 삭제할 수 있다. 여기서, 고확률로 변동하는 비트의 위치는 반도체 장치마다 다르기 때문에, 마스크 데이터는 반도체 장치에 고유한 데이터가 된다.
저확률로 변동하는 비트는, 외적 요인이나 잔존하는 전하 등에 기인해서 변동하기 때문에, 예측하는 것이 곤란하다. 이 때문에, 저확률로 변동하는 비트는, 예를 들면 BCH 부호나 리드 솔로몬 부호에 대표되는 ECC 코드를 제조시에 생성하고, 이 ECC 코드를 이용해서 에러를 정정한다. 이하에서, 공통키 생성부(113)의 동작에 대해서 구체적으로 설명한다.
도 14는, 공통키 생성부(113)의 동작을 설명하기 위한 플로우차트이며, 도 15는 공통키 생성부(113)로 처리되는 유니크 코드의 일례를 나타내는 표이다. 우선, 공통키 생성부(113)는, 유니크 코드 생성부(111)로부터 유니크 코드(UC(a))를 읽어들인다(스텝 S71). 이때 읽어들여진 유니크 코드(UC(a))는, 에러 정정이 실시되지 않은 유니크 코드이다.
다음으로, 정정 데이터(CD(a))에 포함되는 마스크 데이터를 이용하여, 읽어들여진 유니크 코드(UC(a))를 마스크 한다(스텝 S72). 여기서, 마스크 데이터는, 유니크 코드(UC(a))의 비트 중 에러율이 높은 비트를 마스크 하기 위한 데이터이다. 도 15에 나타내는 예에서는, 유니크 코드(UC(a))의 1비트째와 6비트째의 비트의 에러율이 높기 때문에, 마스크 데이터가 "0"이 되어 있다. 이 이외의 비트는, 에러율이 낮은 비트 또는 값이 안정되어 있는 비트이기 때문에, 마스크 데이터가 "1"이 되어 있다. 즉, 마스크가 필요한 비트의 마스크 데이터는 "0"이 되고, 마스크가 불필요한 비트의 마스크 데이터는 "1"이 된다. 그리고, 마스크 데이터를 이용해서 유니크 코드(UC(a))를 마스크함으로써, 유니크 코드(UC(a))의 1비트째와 6비트째의 비트를 삭제한 마스크 처리 후의 데이터를 얻을 수 있다(마스크 처리에 의해 삭제한 비트는 "X"로 나타내고 있다). 그 후, 마스크 처리 후의 유니크 코드(UC(a))는 좌측 정렬된다.
다음으로, 정정 데이터(CD(a))에 포함되는 ECC 코드(에러 정정 코드)를 이용하여, 마스크 처리 후의 유니크 코드(UC(a))의 에러를 정정한다(스텝 S73). 도 15에 나타내는 예에서는, ECC 코드를 이용한 에러 정정에 의해, 1비트째의 비트가 "0"에서 "1"로 정정되어 있다.
다음으로, 정정 데이터(CD(a))에 포함되는 연산 파라미터를 이용하여, 에러 정정 후의 유니크 코드UC(a)에 소정의 연산을 실시한다(스텝 S74). 도 15에 나타내는 예에서는, 에러 정정 후의 유니크 코드(UC(a))에 NOT 연산을 실시한다. 이 연산 처리 후의 유니크 코드(UC(a))가 공통키(CK(a))가 된다. 또한, NOT 연산은 일례이며, 에러 정정 후의 유니크 코드(UC(a))에 실시하는 연산은 어떤 연산이어도 된다. 이 연산 파라미터를 변경함으로써, 필요에 따라서 공통키(CK(a))를 변경할 수 있다. 또한, 연산 파라미터를 이용해서 에러 정정 후의 유니크 코드(UC(a))에 소정의 연산을 실시함으로써, 공통키(CK(a))를 유니크 코드(UC(a))와 외관상 유사하지 않은 코드로 할 수 있다. 따라서, 시큐리티 레벨을 더욱 향상시킬 수 있다. 또한, 에러 정정 후의 유니크 코드(UC(a))에 실시하는 연산은 생략할 수도 있다. 이 경우는, 마스크 데이터 및 ECC 코드를 이용해서 에러 정정된 유니크 코드(UC(a))가 공통키(CK(a))가 된다. 이렇게 하여 생성된 공통키(CK(a))는, 기억부(112) 및 암호부(114)에 출력된다.
또한, 정정 데이터(CD(a))에 포함되는 마스크 코드, ECC 코드, 및 연산 파라미터는, 반도체 장치(110)의 고유한 데이터로서 미리 생성되어 기억부(112)에 저장된다.
이상에서 설명한 바와 같이, 공통키 생성부(113)는 공통키(CK(a))를 생성하는 기능을 가짐과 동시에, 정정 데이터(CD(a))를 이용해서 유니크 코드(UC(a))를 정정하는 기능도 갖는다. 도 12에 나타내는 비밀키 생성부(123)도 마찬가지로, 정정 데이터(CD)를 이용해서 유니크 코드(UC)를 정정하는 유니크 코드 정정부로서 기능한다. 또한, 본원 명세서에서는, 편의상, 생성되는 키마다 공통키 생성부, 비밀키 생성부, 공개키 생성부라고 표현하고 있지만, 이들의 구성 및 동작은 기본적으로는 마찬가지이다.
도 12의 암호부(114)는, 공통키 생성부(113)에서 생성된 공통키(CK(a))를 반도체 장치(120)의 공개키(PK(b))를 이용해서 암호화한다. 여기서, 암호화에 이용되는 공개키(PK(b))는, 미리 반도체 장치(120)로부터 반도체 장치(110)에 송부되어 기억부(112)에 저장되어도 된다. 또한, 암호화에 이용되는 공개키(PK(b))는, 암호부(114)에서 공통키(CK(a))를 암호화할 때에, 반도체 장치(120)로부터 암호부(114)에 직접 공급되도록 구성해도 좋다.
반도체 장치(120)는, 유니크 코드 생성부(121), 기억부(122), 비밀키 생성부(123), 및 복호부(124)를 갖는다. 유니크 코드 생성부(121)는, 반도체 장치(120)에 고유한 유니크 코드(UC(b))를 생성하여, 비밀키 생성부(123)에 출력한다. 또한, 유니크 코드 생성부(121)의 구성 및 동작은, 상기에서 설명한 유니크 코드 생성부(111)와 기본적으로 마찬가지이다.
기억부(122)는, 정정 데이터(CD(b)), 공개키(PK(b)), 및 복호부에서 복호된 공통키(CK(a))를 저장할 수 있다. 여기서, 정정 데이터(CD(b))는, 실시 형태 7에 관한 데이터 기입 시스템(7)에 의해 기입되는 기입 데이터에 상당한다. 기억부(122)는, 예를 들면 휘발성 메모리와 불휘발성 메모리를 갖고, 정정 데이터(CD(b)) 및 공개키(PK(b))는 불휘발성 메모리에 저장되고, 공통키(CK(a))는 휘발성 메모리에 저장된다. 따라서, 기억부(122)는 일시적으로 공통키(CK(a))를 저장하지만, 반도체 장치(120)의 전원이 오프가 되면 공통키(CK(a))의 정보는 소실된다.
비밀키 생성부(123)는, 유니크 코드(UC(b))와 정정 데이터(CD(b))를 이용해서 반도체 장치(120)의 비밀키(SK(b))를 생성한다. 또한, 비밀키 생성부(123)에서 비밀키(SK(b))를 생성하는 방법은, 상기 공통키 생성부(113)가 공통키(CK(a))를 생성하는 방법과 기본적으로 마찬가지이다.
복호부(124)는, 반도체 장치(110)의 암호부(114)에서 암호화된 공통키(CK(a)')를 비밀키(SK(b))를 이용해서 복호해서 공통키(CK(a))를 생성한다.
다음으로, 본 실시 형태에 관한 암호 통신 시스템의 동작에 대해서, 도 13에 나타내는 플로우차트를 이용하여 설명한다. 우선, 반도체 장치(ICb)(120)는, 반도체 장치(ICa)(110)에 반도체 장치(ICb)(120)의 공개키(PK(b))를 송부한다(스텝 S61). 송부된 공개키(PK(b))는, 반도체 장치(110)의 기억부(112)에 저장된다. 다음으로, 반도체 장치(110)의 공통키 생성부(113)는, 유니크 코드 생성부(111)로부터 출력된 유니크 코드(UC(a))와, 기억부(112)에 저장되어 있는 정정 데이터(CD(a))를 이용해서 공통키(CK(a))를 생성한다(스텝 S62). 암호부(114)는, 공통키 생성부(113)에서 생성된 공통키(CK(a))를 반도체 장치(120)의 공개키(PK(b))를 이용해서 암호화하고, 암호화된 공통키(CK(a)')를 생성한다(스텝 S63). 그 후, 반도체 장치(110)로부터 반도체 장치(120)에 암호화된 공통키(CK(a)')가 송부된다(스텝 S64).
반도체 장치(120)의 비밀키 생성부(123)는, 유니크 코드(UC(b))와 정정 데이터(CD(b))를 이용하여, 반도체 장치(120)의 비밀키(SK(b))를 생성한다(스텝 S65). 복호부(124)는, 암호화된 공통키(CK(a)')를 비밀키(SK(b))를 이용해서 복호해서 공통키(CK(a))를 생성한다(스텝 S66). 상기 처리에 의해, 반도체 장치(110)와 반도체 장치(120)는 함께 공통키(CK(a))를 유지할 수 있다. 따라서, 반도체 장치(110) 및 반도체 장치(120)는 공통키(CK(a))를 이용해서 암호 통신하는 것이 가능하게 된다(스텝 S67). 또한, 상기 각 스텝은 모순이 없는 한 적절히 순번을 변경할 수 있다. 예를 들면, 반도체 장치(110)가 스텝 S62와 S63을 실시하는 것과 병행하여, 반도체 장치(120)에서 스텝 S65를 실시해도 좋다.
종래의 기술에서는, 반도체 장치(ICx)와 반도체 장치(ICy) 사이에서 공통키(CK(x))를 이용해서 암호 통신을 실시할 경우, ICx와 ICy로 공통키(CK(x))를 공유할 필요가 있다. ICx가 공통키(CK(x))를 유지하고 있을 경우, ICx는 미리 취득한 ICy의 공개키(PK(y))를 이용해서 공통키(CK(x))를 암호화하고, ICy에 송부한다. 그리고, ICy는, ICy의 비밀키(SK(y))를 이용하여, 암호화된 공통키(CK(x)')를 복호함으로써, 공통키(CK(x))를 취득할 수 있다. 이렇게, 공개키 암호 방식을 이용해서 ICx로부터 ICy에 공통키(CK(x))를 송부함으로써, 제삼자에 알려지는 일없이 ICx와 ICy로 공통키(CK(x))를 공유할 수 있다. 이에 의해, ICx와 ICy 사이에서 공통키 암호 방식을 이용해서 암호 통신을 실시할 수 있다.
ICx로부터 ICy에 공통키(CK(x))를 송부할 때는, 공통키(CK(x))가 암호화되어 있기 때문에, 공통키(CK(x))의 정보가 누설되는 일은 없다. 그러나, 반도체 장치(반도체 칩)(ICx, ICy)의 불휘발성 메모리(기억부)에는 공통키(CK(x))나 비밀키(SK(y)) 등의 중요한 데이터가 저장되어 있다. 이 때문에, 반도체 장치가 부정하게 해석되면, 공통키(CK(x))나 비밀키(SK(y)) 등의 중요한 데이터가 누설되어버린다고 하는 문제가 있었다.
이것에 대해, 본 실시 형태에 관한 암호 통신 시스템에서는, 반도체 장치(110)의 공통키 생성부(113)에서, 반도체 장치(110)에 고유한 유니크 코드(UC(a))와 정정 데이터(CD(a))를 이용해서 공통키(CK(a))를 생성한다. 또한, 반도체 장치(120)의 비밀키 생성부(123)에서, 반도체 장치(120)에 고유한 유니크 코드(UC(b))와 정정 데이터(CD(b))를 이용하여, 반도체 장치(120)의 비밀키(SK(b))를 생성한다. 따라서, 공통키(CK(a))나 비밀키(SK(b)) 등의 중요한 데이터를 기억부(112, 122)에 직접 저장하지 않기 때문에, 반도체 장치가 부정하게 해석되었다고 하더라도, 공통키(CK(a))나 비밀키(SK(b)) 등의 중요한 데이터가 누설되는 일은 없다.
또한, 실시 형태 7에 관한 암호 통신 시스템(8)에서는, 공통키(CK(a))나 비밀키(SK(b)) 등의 중요한 데이터를 기억부(112, 122)에 직접 저장하지 않기 때문에, 반도체 장치가 부정하게 해석되었다고 하더라도, 공통키(CK(a))나 비밀키(SK(b)) 등의 중요한 데이터가 누설되는 일은 없다. 이 때문에, 반도체 장치(110) 및 반도체 장치(120)를 시큐리티 레벨이 비교적 낮은 범용 마이크로컴퓨터를 이용해서 구성한다고 하더라도, 높은 시큐리티 레벨을 실현할 수 있다.
또한, 공통키(CK(a))나 비밀키(SK(b))를 생성하기 위해서 사용되는 정정 데이터(CD(a), CD(b))는, 공통키(CK(a))나 비밀키(SK(b))보다도 시큐리티 레벨은 낮지만, 비교적 시큐리티 레벨이 높은 정보이다. 따라서, 정정 데이터(CD(a), CD(b))가 제삼자에 누설되는 것을 방지하기 위해서, 정정 데이터(CD(a), CD(b))가 저장되는 반도체 장치(110, 120)에 시큐어 마이크로컴퓨터를 사용해도 좋다.
실시 형태 7에 관한 암호 통신 시스템(8)에서는, 정정 데이터(CD(a)) 및 정정 데이터(CD(b))는, 키 정보를 생성하기 위해서 매우 중요한 데이터이지만, 실시 형태 7에 관한 데이터 기입 시스템(7)을 이용함으로써, 이들 중요한 데이터를 높은 시큐리티를 유지한 채 반도체 장치에 기입할 수 있다.
(실시 형태 8)
실시 형태 8에서는, 실시 형태 7에 관한 데이터 기입 시스템(7)에 의해 기입 데이터가 기입되는 반도체 장치를 이용한 다른 예에 대해서 설명한다. 따라서, 실시 형태 8에 관한 암호 통신 시스템(9)의 블록도를 도 16에 나타낸다. 또한, 도 16에 나타내는 반도체 장치의 회로 블록은, 도 11에서 나타낸 통신 처리부(101) 내의 회로에 상당하는 것이다.
실시 형태 8에 관한 암호 통신 시스템(9)은, 반도체 장치(ICa)(130)(제1 반도체 장치)와 반도체 장치(ICz)(140)(제2 반도체 장치)를 갖는다. 반도체 장치(ICa)(130)는 다른 반도체 장치(도시 생략)로 시큐어한 네트워크를 구성하고 있다. 본 실시 형태에서는, 반도체 장치(ICa)(130)를 포함하는 시큐어한 네트워크에, 반도체 장치(ICz)(140)를 새롭게 추가하는 경우에 대해서 설명한다.
반도체 장치(130)는, 유니크 코드 생성부(131), 기억부(132), 공통키 생성부(제1 공통키 생성부)(133), 및 정정 데이터 생성부(134)를 갖는다.
유니크 코드 생성부(131)는, 반도체 장치(130)에 고유한 유니크 코드(UC(a))(제1 유니크 코드)를 생성하고, 공통키 생성부(133)에 출력한다. 여기서, 유니크 코드 생성부(131)가 생성하는 유니크 코드(UC(a))는, 반도체 장치(1)의 유니크 코드 생성부(12)가 생성하는 초기 유니크 코드와 동일한 성질의 것이다. 그 때문에, 유니크 코드 생성부(131) 대신에 유니크 코드 생성부(12)를 이용할 수도 있다.
기억부(132)는, 정정 데이터(CD(a))(제1 정정 데이터)와, 공통키 생성부(133)에서 생성된 공통키(CK(a))(제1 공통키)를 저장할 수 있다. 기억부(132)는, 예를 들면 휘발성 메모리와 불휘발성 메모리를 갖고, 정정 데이터(CD(a))는 불휘발성 메모리에 저장되고, 공통키(CK(a))는 휘발성 메모리에 저장된다. 따라서, 기억부(132)는 일시적으로 공통키(CK(a))를 저장하지만, 반도체 장치(130)의 전원이 오프가 되면 공통키(CK(a))의 정보는 소거된다.
공통키 생성부(133)는, 유니크 코드 생성부(131)로부터 출력된 유니크 코드(UC(a))와, 기억부(132)에 저장되어 있는 정정 데이터(CD(a))를 이용해서 공통키(CK(a))를 생성한다.
여기서, 유니크 코드 생성부(131)에서 생성되는 유니크 코드(UC(a))는, 실시 형태 7의 유니크 코드 생성부(111)에서 생성되는 유니크 코드(UC(a))와 같은 성질의 것이다. 그 때문에, 실시 형태 7과 마찬가지로, 키 정보를 생성하는 데 있어서 마스크 데이터 및 ECC 코드에 의해 에러를 정정할 필요가 있다.
또한, 공통키 생성부(133)의 동작은, 실시 형태 7의 공통키 생성부(113)의 동작과 실질적으로 동일하기 때문에, 여기에서는 설명을 생략한다. 또한, 정정 데이터(CD(a))에 포함되는 마스크 코드, ECC 코드, 및 연산 파라미터는, 반도체 장치(130)의 고유한 데이터로서 미리 생성되어 기억부(132)에 저장되어 있다. 정정 데이터(CD(a))의 생성 방법에 대해서는, 후술하는 정정 데이터 생성부(134)가 정정 데이터(CD(z))를 생성하는 경우와 마찬가지이다.
정정 데이터 생성부(134)는, 반도체 장치(140)의 유니크 코드(UC(z))(제2 유니크 코드)와 공통키(CK(a))를 이용해서 정정 데이터(CD(z))(제2 정정 데이터)를 생성한다. 정정 데이터 생성부(134)가 정정 데이터를 생성하는 경우의 동작에 대해서, 도 18을 이용해서 상세하게 설명한다.
우선, 반도체 장치(ICz)(140)로부터 유니크 코드(UC(z))를 복수 회 취득한다(스텝 S91). 다음으로, 스텝 S91에서 취득한 유니크 코드(UC(z))를 통계적으로 처리하고, 유니크 코드(UC(z))의 각 비트를, (1) 값이 안정된 비트, (2) 고확률로 변동하는 비트(즉, 값의 변동이 비교적 큰 비트), (3) 저확률로 변동하는 비트(즉, 값의 변동이 비교적 작은 비트)의 세 가지로 분류한다. 그리고, (2) 고확률로 변동하는 비트를 이용해서 마스크 데이터를 생성한다(스텝 S92). 이때, 예를 들면 유니크 코드(UC(z))의 각 비트 중, 소정의 임계값보다 높은 확률로 변동하는 비트의 위치를 나타내는 정보를 마스크 데이터라고 한다.
다음으로, 스텝 S92에서 생성한 마스크 데이터를 이용해서 유니크 코드(UC(z))를 마스크 하고, 고확률로 변동하는 비트를 삭제한다. 그리고, 마스크 후의 유니크 코드(UC(z))(즉, 값이 안정된 비트와 저확률로 변동하는 비트를 포함하는 유니크 코드)의 에러를 정정할 수 있는 ECC 코드를 생성한다(스텝 S93). ECC 코드는, 예를 들면 BCH 부호나 리드 솔로몬 부호이다.
다음으로, 스텝 S92에서 생성한 마스크 데이터 및 스텝 S93에서 생성한 ECC 코드를 이용해서 에러 정정한 유니크 코드(UC(z))(즉, 값이 안정된 비트를 포함하는 유니크 코드)와, 기억부(132)에 저장되어 있는 공통키(CK(a))를 이용하여, 연산 파라미터를 생성한다(스텝 S94). 즉, 연산 파라미터는, 정정된 유니크 코드(UC(z))로부터 공통키(CK(a))를 생성하기 위해서 필요한 파라미터이다. 상기 처리에 의해 생성된 마스크 데이터, ECC 코드, 및 연산 파라미터를 정정 데이터(CD(z))로서 반도체 장치(ICz)(140)에 송부한다(스텝 S95).
또한, 정정 데이터(CD(z))를 생성하기 위한 처리(스텝 S91∼S95)는, 복수의 반도체 장치를 이용해 분산해서 실시해도 좋다. 도 19는, 복수의 반도체 장치(ICa, ICb, ICc, ICd)를 이용해서 정정 데이터(CD(z))를 생성하는 경우를 나타내는 도면이다. 여기서, 반도체 장치(ICa, ICb, ICc, ICd)는 시큐어한 네트워크를 구성하고 있다.
도 19에 나타내는 예에서는, 반도체 장치(ICa)가 스텝 S91, S95를 실시한다. 즉, 반도체 장치(ICa)는 반도체 장치(ICz)와의 창구로서 기능한다. 반도체 장치(ICb)는 스텝 S92(마스크 데이터의 생성)를 실시한다. 반도체 장치(ICc)는 스텝 S93(ECC 코드의 생성)을 실시한다. 반도체 장치(ICd)는 스텝 S94(연산 파라미터의 생성)를 실시한다. 또한, 도 19에 나타내는 예는 일례이며, 각 스텝을 실시하는 반도체 장치는, 임의로 할당할 수 있다. 이렇게, 정정 데이터(CD(z))를 생성하기 위한 처리(스텝 S91∼S95)를, 복수의 반도체 장치에 분산시킴으로써, 암호 통신 시스템의 시큐리티 레벨을 향상시킬 수 있고, 또한 1개의 반도체 장치에 부하가 집중하는 것을 회피할 수 있다.
도 16에 나타내는 반도체 장치(140)는, 유니크 코드 생성부(141), 기억부(142), 및 공통키 생성부(제2 공통키 생성부)(143)를 갖는다. 유니크 코드 생성부(141)는, 반도체 장치(140)에 고유한 유니크 코드(UC(z))를 생성하고, 정정 데이터 생성부(134) 및 공통키 생성부(143)에 출력한다. 또한, 유니크 코드 생성부(141)의 구성 및 동작은, 상기에서 설명한 유니크 코드 생성부(131)와 기본적으로 마찬가지이다.
기억부(142)는, 공통키 생성부(143)에서 생성된 공통키(CK(a))를 저장할 수 있다. 기억부(142)는, 휘발성 메모리에 공통키(CK(a))를 저장한다. 따라서, 기억부(142)는 일시적으로 공통키(CK(a))를 저장하지만, 반도체 장치(140)의 전원이 오프가 되면 공통키(CK(a))의 정보는 소거된다.
공통키 생성부(143)는, 유니크 코드 생성부(141)로부터 출력된 유니크 코드(UC(z))와, 정정 데이터 생성부(134)로부터 출력된 정정 데이터(CD(z))를 이용해서 공통키(CK(a))(제1 공통키)를 생성한다. 또한, 공통키 생성부(143)가 공통키(CK(a))를 생성하는 방법은, 상술한 공통키 생성부(133)가 공통키(CK(a))를 생성하는 방법과 기본적으로 마찬가지이다.
다음으로, 본 실시 형태에 관한 암호 통신 시스템의 동작에 대해서, 도 17에 나타내는 플로우차트를 이용하여 설명한다. 우선, 반도체 장치(ICa)(130)의 공통키 생성부(133)는, 유니크 코드 생성부(131)로부터 출력된 유니크 코드(UC(a))와, 기억부(132)에 저장되어 있는 정정 데이터(CD(a))를 이용해서 공통키(CK(a))를 생성한다(스텝 S81). 그 후, 반도체 장치(ICa)(130)는 다른 반도체 장치(ICb∼ICy)(도시 생략)와 공통키(CK(a))를 이용해서 통신을 개시한다(스텝 S82).
반도체 장치(140)는, 반도체 장치(130)의 정정 데이터 생성부(134)에 반도체 장치(140)의 유니크 코드(UC(z))를 송부한다(스텝 S83). 반도체 장치(130)의 정정 데이터 생성부(134)는, 반도체 장치(140)의 유니크 코드(UC(z))와, 기억부(132)에 저장되어 있는 공통키(CK(a))를 이용해서 정정 데이터(CD(z))를 생성한다(스텝 S84). 정정 데이터 생성부(134)가 정정 데이터(CD(z))를 생성하기에는, 유니크 코드(UC(z))를 복수 회 취득할 필요가 있다. 따라서, 유니크 코드(UC(z))를 복수 회 취득하기 위해서 스텝 S83을 반복한다.
생성된 정정 데이터(CD(z))는 반도체 장치(140)의 공통키 생성부(143)에 송부된다(스텝 S85). 반도체 장치(140)의 공통키 생성부(143)는, 유니크 코드 생성부(141)로부터 출력된 유니크 코드(UC(z))와, 정정 데이터 생성부(134)로부터 출력된 정정 데이터(CD(z))를 이용해서 공통키(CK(a))를 생성한다(스텝 S86). 상기 처리에 의해, 새롭게 추가된 반도체 장치(140)는 공통키(CK(a))를 유지할 수 있다. 따라서, 새롭게 추가된 반도체 장치(ICz)(140)는, 반도체 장치(ICa)(130) 및 다른 반도체 장치(ICb∼ICy)와 공통키(CK(a))를 이용해서 암호 통신하는 것이 가능하게 된다(스텝 S87).
시큐어한 통신이 확립되어 있는 암호 통신 시스템에 새롭게 반도체 장치(ICz)를 추가하는 경우는, 추가되는 반도체 장치(ICz)가 정규의 반도체 장치인지를 검증할 필요가 있다. 그러나, 추가되는 반도체 장치(ICz)가 정규의 반도체 장치인지를 검증하기 위해서는, 예를 들면 고가의 시큐어 서버를 암호 통신 시스템에 내장할 필요가 있다. 이 때문에, 암호 통신 시스템의 코스트가 증가한다고 하는 문제가 있었다.
이것에 대해 실시 형태 8에 관한 암호 통신 시스템(9)에서는, 반도체 장치(130)가 구비하는 정정 데이터 생성부(134)에서, 반도체 장치(140)에 고유한 유니크 코드(UC(z))와, 공통키(CK(a))를 이용해서 정정 데이터(CD(z))를 생성하고, 반도체 장치(140)의 공통키 생성부(143)에서, 이 정정 데이터(CD(z))와 반도체 장치(140)의 유니크 코드(UC(z))를 이용해서 공통키(CK(a))를 생성하고 있다. 따라서, 추가되는 반도체 장치(ICz)가 정규의 반도체 장치인지를 검증하기 위해서, 고가의 시큐어 서버를 암호 통신 시스템에 내장할 필요가 없으므로, 시큐어한 통신을 실시하고 있는 암호 통신 시스템에, 반도체 장치를 용이하고 또한 저코스트로 추가할 수 있다.
또한, 실시 형태 8에 관한 암호 통신 시스템(9)에서는, 반도체 장치(130)의 공통키 생성부(133)에서, 반도체 장치(130)에 고유한 유니크 코드(UC(a))와 정정 데이터(CD(a))를 이용해서 공통키(CK(a))를 생성하고 있다. 또한, 반도체 장치(140)의 공통키 생성부(143)에서, 반도체 장치(140)에 고유한 유니크 코드(UC(z))와 정정 데이터(CD(z))를 이용하여, 공통키(CK(a))를 생성하고 있다. 따라서, 중요한 데이터인 공통키(CK(a))를 기억부(132, 142)에 직접 저장하고 있지 않기 때문에, 반도체 장치가 부정하게 해석되었다고 하더라도, 공통키(CK(a))의 데이터가 누설되는 일은 없다. 따라서, 본 실시 형태에 관한 암호 통신 시스템에 의해, 시큐리티의 향상을 실현하면서, 시큐어한 통신을 실시하고 있는 암호 통신 시스템에, 반도체 장치를 용이하고 또한 저코스트로 추가할 수 있다.
실시 형태 8에 관한 암호 통신 시스템(9)에서는, 공통키(CK(a)) 등의 중요한 데이터를 기억부(132, 142)에 직접 저장하고 있지 않기 때문에, 반도체 장치가 부정하게 해석되었다고 하더라도, 공통키(CK(a)) 등의 중요한 데이터가 누설되는 일은 없다. 이 때문에, 반도체 장치(130) 및 반도체 장치(140)를 시큐리티 레벨이 비교적 낮은 범용 마이크로컴퓨터를 이용해서 구성한다고 하더라도, 높은 시큐리티 레벨을 실현할 수 있다.
또한, 반도체 장치(130)에서 공통키(CK(a))를 생성하기 위해서 사용되는 정정 데이터(CD(a))는, 공통키(CK(a))보다 시큐리티 레벨은 낮지만, 비교적 시큐리티 레벨이 높은 정보이다. 실시 형태 7에 관한 데이터 기입 시스템(7)에서는, 이러한 비교적 시큐리티 레벨이 높은 정보를 높은 시큐리티를 유지하면서 반도체 장치에 저장할 수 있다.
또한, 반도체 장치(130)로부터 반도체 장치(140)에 송부되는 정정 데이터(CD(z))는, 유니크 코드(UC(z))와 공통키(CK(a))에 관련되는 데이터이기 때문에, 비교적 시큐리티 레벨이 높은 정보이다. 따라서, 정정 데이터(CD(z))를 반도체 장치(130)로부터 반도체 장치(140)에 송부할 때는, 공개키 암호 방식을 이용해서 암호화해서 송부해도 좋다. 이 경우는, 예를 들면 반도체 장치(140)가 반도체 장치(140)의 비밀키를 유지하고, 반도체 장치(130)가 정정 데이터(CD(z))를 송부할 때에 반도체 장치(140)의 공개키로 정정 데이터(CD(z))를 암호화한다. 그리고, 반도체 장치(140)가 암호화된 정정 데이터(CD(z))를 비밀키를 이용해서 복호한다. 이에 의해, 반도체 장치(130)로부터 반도체 장치(140)에 암호화해서 정정 데이터를 송부할 수 있다.
또한, 본 발명은 상기 실시 형태에 한정된 것이 아니라, 취지를 일탈하지 않는 범위에서 적절히 변경하는 것이 가능하다. 복수의 실시 형태에 관한 사항을 조합하여, 1개의 장치로 하는 것, 예를 들면, 실시 형태 3에 대해서, 실시 형태 1로부터 실시 형태 2로의 변경 내용을 적용하는 것은, 당업자이면 당연하게 상도하는 사항이다.
1∼7 데이터 기입 시스템
8, 9 암호 통신 시스템
10, 30, 50, 80, 100 반도체 장치
11 식별 정보 유지부
12 유니크 코드 생성부
13, 33, 43 비트 마스크 회로
14, 21, 22, 25, 32, 41, 42, 61, 225 저장부
15, 23, 31 ECC 회로
16, 51 복호부
17 암호부
20, 40, 60, 70, 74, 90, 200 기입기
24 CRC 회로
26 해시 함수 암호부
71, 72 데이터 송수신 유닛
73, 75 서버
81 정보 기억부
82 다이제스트 생성부
83 기억 영역
84 메모리 컨트롤러
91 정보 생성부
92 다이제스트 생성부
93 더미 값 발생 회로
94 셀렉터
95 버퍼
101 통신 처리부
110, 120 , 130, 140 반도체 장치
111, 121, 131, 141 유니크 코드 생성부
112, 122, 132, 142 기억부
113, 133 공통키 생성부
114 암호부
123 비밀키 생성부
124 복호부
134 정정 데이터 생성부
143 공통키 생성부
226 데이터 암호부
BM 비트 마스크 데이터
BME 암호화 완료 비트 마스크 데이터
CD 정정 데이터
CK 공통키
PK 공개키
DA1 기입 데이터
DA2 송신 데이터
Dd 더미 값
DIm, DIw 다이제스트 값
HF1 해시 함수
HF2 송신 데이터
ID 식별 정보
SK 비밀키
UC 유니크 코드
UCb, UCe 중간 유니크 코드
UCm, UCw 확정 유니크 코드
UCp 초기 유니크 코드

Claims (21)

  1. 디바이스에 고유한 값으로서 랜덤한 비트에 에러를 포함하는 초기 유니크 코드(unique code)를 생성하는 유니크 코드 생성부와,
    상기 초기 유니크 코드의 에러를 정정하여, 중간 유니크 코드를 생성하는 제1 에러 정정부와,
    상기 중간 유니크 코드의 에러를 정정하여, 제1 확정 유니크 코드를 생성하는 제2 에러 정정부와,
    외부 장치가 상기 중간 유니크 코드에 기초하여 생성한 키 정보를 이용해서 비닉(秘匿) 정보를 암호화한 송신 데이터를 상기 제1 확정 유니크 코드를 이용해 복호해서 비닉 정보를 생성하는 복호부
    를 갖는 반도체 장치.
  2. 제1항에 있어서,
    상기 제1 에러 정정부는, 상기 초기 유니크 코드를 구성하는 비트 중 어느 것을 마스크 할지를 지정하는 비트 마스크 데이터를 상기 외부 장치로부터 수신하고, 상기 비트 마스크 데이터를 이용해서 상기 중간 유니크 코드를 생성하고, 상기 제2 에러 정정부는, 미리 내부에 유지되는 ECC 코드를 이용하여 상기 제1 확정 유니크 코드를 생성하는 반도체 장치.
  3. 제1항에 있어서,
    상기 제1 에러 정정부는, 상기 외부 장치로부터 ECC 코드를 수신하고, 상기 ECC 코드를 이용해서 상기 중간 유니크 코드를 생성하고, 상기 제2 에러 정정부는, 미리 내부에 유지되는 상기 초기 유니크 코드를 구성하는 비트 중 어느 것을 마스크 할지를 지정하는 비트 마스크 데이터를 이용하여 상기 제1 확정 유니크 코드를 생성하는 반도체 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 외부 장치에서 생성되는 상기 키 정보는, 상기 외부 장치에서 행해지는 상기 제2 에러 정정부와 동일한 처리에 의해 생성되는 제2 확정 유니크 코드인 반도체 장치.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    디바이스마다 미리 고정값으로서 설정되는 식별 정보를 출력하는 식별 정보 유지부를 더 갖고, 상기 제1 에러 정정부에서의 에러 정정 처리에 이용되는 데이터는, 상기 식별 정보에 대응지어진 데이터인 반도체 장치.
  6. 제5항에 있어서,
    상기 제1 에러 정정부에서의 에러 정정 처리에 이용되는 데이터를 암호화된 상태로 수신하고, 수신한 데이터에 대하여 복호 처리를 실시하여 상기 제1 에러 정정부에 출력하는 정정 데이터 복호부를 갖는 반도체 장치.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 초기 유니크 코드는, 반도체 장치의 소자의 제조 변동에 기인하여 불확정해지는 비트를 포함하는 PUF(Physically Unclonable Function) 데이터인 반도체 장치.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 비닉 정보를 암호키로서 이용하여 암호 통신을 행하는 암호부를 갖는 반도체 장치.
  9. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 비닉 정보는, 디바이스에 고유한 값으로서 랜덤한 비트에 에러를 포함하는 유니크 코드의 에러를 정정하는 고유 정정 데이터와, 에러 정정 후의 상기 초기 유니크 코드로부터 암호키를 생성하는 연산식 정보가 포함되고, 상기 비닉 정보와 상기 유니크 코드에 기초하여 상기 암호키를 생성하는 키 생성부와, 상기 키 생성부에서 생성된 상기 암호키를 이용해서 암호 통신을 행하는 암호부를 갖는 반도체 장치.
  10. 비닉 정보를 이용하는 반도체 장치에 상기 비닉 정보를 기입하는 데이터 기입 방법으로서,
    상기 반도체 장치에 고유한 값으로서 랜덤한 비트에 에러를 포함하는 초기 유니크 코드에 대하여 제1 에러 정정 처리를 실시하여 상기 초기 유니크 코드의 에러를 정정하여 중간 유니크 코드를 생성하고, 상기 중간 유니크 코드에 대하여 제2 에러 정정 처리를 실시하여 제1 확정 유니크 코드를 생성하고,
    상기 반도체 장치와는 다른 외부 장치에 있어서 상기 중간 유니크 코드에 대하여 상기 제2 에러 정정 처리와 동일한 에러 정정 처리를 실시하여 제2 확정 유니크 코드를 생성하고,
    상기 외부 장치 내에서 상기 제2 확정 유니크 코드를 이용하여 상기 비닉 정보를 암호화한 상기 송신 데이터를 상기 반도체 장치로 송신하고,
    상기 제1 확정 유니크 코드를 이용하여 상기 송신 데이터를 복호하여 상기 비닉 정보를 취득하는 데이터 기입 방법.
  11. 제10항에 있어서,
    상기 제1 에러 정정 처리에서는, 상기 초기 유니크 코드를 구성하는 비트 중 어느 것을 마스크 할지를 지정하는 비트 마스크 데이터를 상기 외부 장치로부터 수신하고, 상기 비트 마스크 데이터를 이용하여 상기 중간 유니크 코드를 생성하고, 상기 제2 에러 정정 처리에서는, 미리 자장치(自裝置)에 유지되는 ECC 코드를 이용하여 상기 제1 확정 유니크 코드를 생성하는 데이터 기입 방법.
  12. 제10항에 있어서,
    상기 제1 에러 정정 처리에서는, 상기 외부 장치로부터 ECC 코드를 수신하고, 상기 ECC 코드를 이용하여 상기 중간 유니크 코드를 생성하고, 상기 제2 에러 정정 처리는, 미리 자장치에 유지되는 상기 초기 유니크 코드를 구성하는 비트 중 어느 것을 마스크 할지를 지정하는 비트 마스크 데이터를 이용하여 상기 제1 확정 유니크 코드를 생성하는 데이터 기입 방법.
  13. 제10항 내지 제12항 중 어느 한 항에 있어서,
    상기 반도체 장치는, 디바이스마다 미리 고정값으로서 설정되는 식별 정보를 출력하고, 상기 외부 장치는, 상기 제1 에러 정정 처리에서 이용되는 제1 정정 데이터와 상기 식별 정보를 관련지었던 정보를 유지하고, 상기 외부 장치는, 상기 반도체 장치로부터 상기 식별 정보를 읽어내고, 상기 식별 정보와 관련지어진 상기 제1 정정 데이터를 상기 반도체 장치에 송신하는 데이터 기입 방법.
  14. 제13항에 있어서,
    상기 외부 장치는, 상기 제1 정정 데이터를 미리 암호화한 상태에서 유지하고, 상기 반도체 장치는, 암호화된 상기 제1 정정 데이터를 복호화한 데이터를 적용하여 상기 초기 유니크 코드로부터 상기 중간 유니크 코드를 생성하는 데이터 기입 방법.
  15. 제10항 내지 제14항 중 어느 한 항에 있어서,
    상기 외부 장치는, 상기 제2 확정 유니크 코드의 정당성을 판정하고, 상기 판정의 결과가 상기 제2 확정 유니크 코드가 부정한 것으로 판정된 경우에는, 상기 송신 데이터의 상기 반도체 장치에의 전송을 정지하는 데이터 기입 방법.
  16. 제15항에 있어서,
    상기 제2 확정 유니크 코드의 정당성의 판정은, CRC(Cyclic Redundancy Check)코드를 이용한 CRC 처리에 의해 행해지는 데이터 기입 방법.
  17. 제10항 내지 제16항 중 어느 한 항에 있어서,
    상기 외부 장치는, 상기 반도체 장치에 직접 접속되는 기입기와, 상기 기입기와 통신 경로를 개재해서 접속되는 서버를 갖고, 상기 서버는, 상기 기입기를 개재하여 상기 중간 유니크 코드를 수신하고, 상기 중간 유니크 코드에 대하여 상기 제2 에러 정정 처리와 동일한 에러 정정 처리를 실시하여 제2 확정 유니크 코드를 생성하고, 상기 외부 장치 내에서 상기 제2 확정 유니크 코드를 이용하여 상기 비닉 정보를 암호화한 상기 송신 데이터를 생성하고, 상기 기입기를 개재하여 상기 송신 데이터를 상기 반도체 장치에 송신하는 데이터 기입 방법.
  18. 제17항에 있어서,
    상기 외부 장치는, 상기 기입기와 상기 서버에 있어서, 상기 제1 에러 정정 처리에서 이용되는 제1 정정 데이터와, 상기 제2 확정 유니크 코드의 생성에 이용되는 제2 정정 데이터를 분산하여 유지하는 데이터 기입 방법.
  19. 제10항 내지 제18항 중 어느 한 항에 있어서,
    상기 초기 유니크 코드는, 반도체 장치의 소자의 제조 변동에 기인해서 불확정해지는 비트를 포함하는 PUF(Physically Unclonable Function) 데이터인 데이터의 기입 방법.
  20. 제10항 내지 제19항 중 어느 한 항에 있어서,
    상기 반도체 장치는, 취득한 상기 비닉 정보를 암호키로서 이용하여 암호 통신을 행하는 데이터 기입 방법.
  21. 제10항 내지 제19항 중 어느 한 항에 있어서,
    상기 반도체 장치는, 취득한 상기 비닉 정보를 저장부에 저장하는 데이터 기입 방법.
KR1020120065834A 2011-06-20 2012-06-19 반도체 장치 및 반도체 장치에의 데이터 기입 방법 KR20120140217A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2011136133A JP5770026B2 (ja) 2011-06-20 2011-06-20 半導体装置
JPJP-P-2011-136133 2011-06-20

Publications (1)

Publication Number Publication Date
KR20120140217A true KR20120140217A (ko) 2012-12-28

Family

ID=46197061

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120065834A KR20120140217A (ko) 2011-06-20 2012-06-19 반도체 장치 및 반도체 장치에의 데이터 기입 방법

Country Status (5)

Country Link
US (2) US9026882B2 (ko)
EP (1) EP2538608B1 (ko)
JP (1) JP5770026B2 (ko)
KR (1) KR20120140217A (ko)
CN (1) CN102843234B (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013031151A (ja) 2011-06-20 2013-02-07 Renesas Electronics Corp 暗号通信システムおよび暗号通信方法
JP5710460B2 (ja) * 2011-12-16 2015-04-30 株式会社東芝 暗号化鍵生成装置およびプログラム
CN104025500B (zh) 2011-12-29 2017-07-25 英特尔公司 使用在物理上不可克隆的函数的安全密钥存储
US8750502B2 (en) * 2012-03-22 2014-06-10 Purdue Research Foundation System on chip and method for cryptography using a physically unclonable function
KR101332517B1 (ko) 2012-08-21 2013-11-22 한양대학교 산학협력단 인증 정보 처리 장치 및 방법
US9742563B2 (en) * 2012-09-28 2017-08-22 Intel Corporation Secure provisioning of secret keys during integrated circuit manufacturing
US8938792B2 (en) 2012-12-28 2015-01-20 Intel Corporation Device authentication using a physically unclonable functions based key generation system
KR102007163B1 (ko) * 2013-04-22 2019-10-01 에스케이하이닉스 주식회사 인코더, 디코더 및 이를 포함하는 반도체 장치
JP6182371B2 (ja) 2013-06-28 2017-08-16 ルネサスエレクトロニクス株式会社 半導体集積回路を含むシステム
US20150046764A1 (en) * 2013-08-06 2015-02-12 Kabushiki Kaisha Toshiba Recording and reproducing apparatus
JP2015065495A (ja) * 2013-09-24 2015-04-09 ルネサスエレクトロニクス株式会社 暗号鍵供給方法、半導体集積回路および暗号鍵管理装置
US9992031B2 (en) * 2013-09-27 2018-06-05 Intel Corporation Dark bits to reduce physically unclonable function error rates
CN104598829B (zh) * 2013-10-31 2018-08-07 上海复旦微电子集团股份有限公司 数据处理方法、装置及防攻击方法和装置以及存储装置
EP2911086A1 (en) 2014-02-19 2015-08-26 Renesas Electronics Europe GmbH Integrated circuit with parts activated based on intrinsic features
JP2016046719A (ja) 2014-08-25 2016-04-04 株式会社東芝 データ生成装置、通信装置、移動体、データ生成方法およびプログラム
WO2016058793A1 (en) * 2014-10-13 2016-04-21 Intrinsic Id B.V. Cryptographic device comprising a physical unclonable function
KR102201642B1 (ko) 2014-11-28 2021-01-13 삼성전자주식회사 Puf 회로 및 그것의 키 등록 방법
US10044500B2 (en) * 2015-05-15 2018-08-07 ScaleFlux, Inc. Error correction coding redundancy based data hashing
KR102296738B1 (ko) * 2015-06-01 2021-09-01 삼성전자 주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 에러 정정 방법
EP3373508B1 (en) * 2015-11-05 2020-11-04 Mitsubishi Electric Corporation Security device and security method
JP6542148B2 (ja) * 2016-03-18 2019-07-10 株式会社東芝 情報処理装置、情報処理方法およびプログラム
CN106653094B (zh) * 2016-08-30 2019-07-16 北京中电华大电子设计有限责任公司 一种非易失存储器耐久力物理数据模型测试方法
JP2018042203A (ja) * 2016-09-09 2018-03-15 株式会社東芝 情報処理装置、サーバ装置、情報処理システム、移動体、および情報処理方法
CN109039590A (zh) * 2017-06-09 2018-12-18 深圳九磊科技有限公司 存储器、电子设备及其防止侧信道攻击的加解密方法
KR102410021B1 (ko) * 2017-11-20 2022-06-21 에스케이하이닉스 주식회사 메모리 컨트롤러 및 메모리 모듈을 갖는 메모리 시스템 및 그 메모리 시스템에서의 데이터 처리 방법
JP6550502B1 (ja) * 2018-05-10 2019-07-24 ウィンボンド エレクトロニクス コーポレーション 固有データ生成装置、半導体装置および認証システム
CN108920984B (zh) * 2018-07-06 2021-11-16 北京计算机技术及应用研究所 一种防克隆篡改安全ssd主控芯片
US11170115B2 (en) * 2018-07-30 2021-11-09 Taiwan Semiconductor Manufacturing Co., Ltd. Method and apparatus for secure external access of the PUF information to an authorized entity
US11218330B2 (en) * 2019-03-25 2022-01-04 Micron Technology, Inc. Generating an identity for a computing device using a physical unclonable function
US11233650B2 (en) 2019-03-25 2022-01-25 Micron Technology, Inc. Verifying identity of a vehicle entering a trust zone
US20210051010A1 (en) * 2019-08-16 2021-02-18 PUFsecurity Corporation Memory Device Providing Data Security
US11568093B2 (en) * 2020-04-17 2023-01-31 SK Hynix Inc. Data scramblers with enhanced physical security
US11734114B2 (en) * 2020-12-09 2023-08-22 Advanced Micro Devices, Inc. Programmable error correction code encoding and decoding logic
JP2023039212A (ja) * 2021-09-08 2023-03-20 キオクシア株式会社 メモリシステムおよび制御方法
CN116702236A (zh) * 2023-06-02 2023-09-05 无锡摩芯半导体有限公司 一种保护ucb安全的方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08335040A (ja) * 1995-06-02 1996-12-17 Fujitsu Ltd 暗号化処理方式
JPH10327143A (ja) * 1997-05-23 1998-12-08 Nec Corp データ伝送システム
US6092231A (en) * 1998-06-12 2000-07-18 Qlogic Corporation Circuit and method for rapid checking of error correction codes using cyclic redundancy check
ATE255787T1 (de) * 1999-02-11 2003-12-15 Rsa Security Inc Ein fuzzy engagement schema
US6986098B2 (en) * 2001-11-20 2006-01-10 Lsi Logic Corporation Method of reducing miscorrections in a post-processor using column parity checks
EP1359550A1 (fr) * 2001-11-30 2003-11-05 STMicroelectronics S.A. Régéneration d'une quantité secrète à partir d'un identifiant d'un circuit intégré
KR20070058581A (ko) * 2004-10-04 2007-06-08 코닌클리케 필립스 일렉트로닉스 엔.브이. 물리적 토큰을 위한 양방향 에러 정정
US20060133607A1 (en) * 2004-12-22 2006-06-22 Seagate Technology Llc Apparatus and method for generating a secret key
EP1832036A2 (en) * 2004-12-22 2007-09-12 Koninklijke Philips Electronics N.V. Method and device for key generation and proving authenticity
EP1715404A1 (de) * 2005-04-22 2006-10-25 Siemens Aktiengesellschaft System zur Speicherung und Wiedergewinnung vertraulicher Informationen
JP2008545323A (ja) 2005-07-07 2008-12-11 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 物の真正性を検証する方法、装置及びシステム
US20070268905A1 (en) * 2006-05-18 2007-11-22 Sigmatel, Inc. Non-volatile memory error correction system and method
WO2008056612A1 (fr) 2006-11-06 2008-05-15 Panasonic Corporation Appareil de sécurité d'informations
CN101286338B (zh) * 2007-04-12 2010-06-02 鸿富锦精密工业(深圳)有限公司 电子设备及其数据加密方法与数据解密方法
US8290150B2 (en) 2007-05-11 2012-10-16 Validity Sensors, Inc. Method and system for electronically securing an electronic device using physically unclonable functions
JP5662157B2 (ja) * 2007-12-20 2015-01-28 コーニンクレッカ フィリップス エヌ ヴェ テンプレート保護システムにおける分類閾値の規定
DE102008003946A1 (de) * 2008-01-11 2009-07-23 Micronas Gmbh Schaltung und Verfahren zur Generierung einer echten, schaltungsspezifischen und zeitinvarianten Zufallszahl
US8699714B2 (en) * 2008-11-17 2014-04-15 Intrinsic Id B.V. Distributed PUF
TW201034421A (en) * 2009-03-02 2010-09-16 Chang Jung Christian University Encoding device, decoding device and encrypted multimedia system
KR101678568B1 (ko) * 2009-03-06 2016-11-22 인트린직 아이디 비브이 물리적 시스템에 의존하여 암호화 키를 설정하기 위한 시스템
US8850281B2 (en) * 2009-05-12 2014-09-30 Empire Technology Development Llc Digital signatures
WO2010134197A1 (ja) * 2009-05-22 2010-11-25 株式会社 東芝 乱数生成回路およびこれを用いた暗号回路
CN102439897A (zh) * 2009-05-22 2012-05-02 三菱电机株式会社 电子仪器、密钥生成程序、记录介质以及密钥生成方法
FR2948793B1 (fr) * 2009-07-28 2014-10-31 Thales Sa Procede securise de reconstruction d'une mesure de reference d'une donnee confidentielle a partir d'une mesure bruitee de cette donne, notamment pour la generation de cles cryptographiques
FR2955394B1 (fr) * 2010-01-18 2012-01-06 Inst Telecom Telecom Paristech Circuit integre en silicium comportant une fonction physiquement non copiable, procede et systeme de test d'un tel circuit
US8683295B1 (en) * 2010-08-31 2014-03-25 Western Digital Technologies, Inc. Hybrid drive writing extended error correction code symbols to disk for data sectors stored in non-volatile semiconductor memory
JP5839659B2 (ja) * 2011-06-20 2016-01-06 ルネサスエレクトロニクス株式会社 半導体装置

Also Published As

Publication number Publication date
CN102843234A (zh) 2012-12-26
EP2538608A1 (en) 2012-12-26
US20150207629A1 (en) 2015-07-23
US9026882B2 (en) 2015-05-05
US20120324310A1 (en) 2012-12-20
CN102843234B (zh) 2018-04-03
JP5770026B2 (ja) 2015-08-26
EP2538608B1 (en) 2016-08-24
US9300470B2 (en) 2016-03-29
JP2013003431A (ja) 2013-01-07

Similar Documents

Publication Publication Date Title
JP5770026B2 (ja) 半導体装置
JP5839659B2 (ja) 半導体装置
US10469256B2 (en) Cryptographic communication system and cryptographic communication method
US10944554B2 (en) Semiconductor device and information processing system for encrypted communication
US7564345B2 (en) Volatile device keys and applications thereof
US9003197B2 (en) Methods, apparatus and system for authenticating a programmable hardware device and for authenticating commands received in the programmable hardware device from a secure processor
CN101770559A (zh) 数据保护装置和方法
CN103907309A (zh) 存储器
JPWO2019142307A1 (ja) 半導体装置、更新データ提供方法、更新データ受取方法およびプログラム
JP5986279B2 (ja) 半導体装置
US20170310646A1 (en) Method to detect an ota (over the air) standard message affected by an error
JP6014214B2 (ja) 暗号通信システムおよび暗号通信方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E601 Decision to refuse application