KR20130129431A - 인증자, 피인증자 및 인증 방법 - Google Patents

인증자, 피인증자 및 인증 방법 Download PDF

Info

Publication number
KR20130129431A
KR20130129431A KR1020137022688A KR20137022688A KR20130129431A KR 20130129431 A KR20130129431 A KR 20130129431A KR 1020137022688 A KR1020137022688 A KR 1020137022688A KR 20137022688 A KR20137022688 A KR 20137022688A KR 20130129431 A KR20130129431 A KR 20130129431A
Authority
KR
South Korea
Prior art keywords
data
secret information
authenticator
random number
subject
Prior art date
Application number
KR1020137022688A
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 KR20130129431A publication Critical patent/KR20130129431A/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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • 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/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

일 실시형태에 따르면, 키 천이 레코드로 구성된 데이터 구조를 갖는 키 정보, 행렬 형태의 비밀 정보 XY, 및 비밀 정보 XY를 암호화하여 생성된 비밀 정보 XYE를 기억하는 피인증자와, 피인증자를 인증하는 인증자 사이의 인증 방법은, 인증자가, 피인증자로부터 수신된 키 정보로부터 인증자의 장치 인덱스에 대응하는 레코드를 선택하여, 레코드를 장치 키에 의해서 복호하여 키 천이를 추출하는 단계, 및 인증자가, 피인증자로부터 수신된 비밀 정보 XYE에 대하여, 대응하는 키 천이를 이용하여 복호 처리를 실행하여, 비밀 정보 XY를 공유하는 단계를 포함한다.

Description

인증자, 피인증자 및 인증 방법{AUTHENTICATOR, AUTHENTICATEE AND AUTHENTICATION METHOD}
관련 출원의 교차 참조
본 출원은 2011년 6월 17일에 출원된 이전의 일본 특허 출원 제2011-135644호를 기초로 하고, 그로부터 우선권의 이익을 청구하며, 그 전체 내용은 참고로 본 명세서에 병합되어 있다.
기술분야
본 명세서에 개시된 실시형태들은 통상적으로, 인증자, 피인증자 및 인증 방법에 관한 것이다.
일반적으로, 보안을 필요로 하는 분야에서, 암호기와 공유되는 비밀을 기초로 하는 방법이 자신의 정당성을 증명하기 위한 수단으로서 채택된다.
예를 들면, 전자 결제용으로 사용되는 IC 카드 등에는, 카드 내의 IC에 개별화된 ID 및 비밀 정보가 기억되어 있고, IC 카드는 ID 및 비밀 정보를 기초로 하는 인증을 실행하기 위한 암호 처리 기능을 갖는다. 다른 예에서는, 콘텐츠의 저작권 보호에 있어서, SD(등록상표) 카드의 정당성을 증명하는 수단이 존재한다.
상기한 예들의 각각에서는, 피인증자가 비밀 키와 암호기를 포함하고 있는 것이 필요하다. 그러나, 암호기의 실장은 비교적 큰 회로 규모를 요구한다. 그에 따라, 회로 규모에 대한 제약이 동시에 부과되는 환경에서는, 자신의 정당성을 증명하는 것은 매우 곤란이다. 회로 규모에 대한 제약이 부과되는 대표적인 예는 RFID(Radio Frequency Identification)이다. 그에 따라, 최근에는, 점점 실장에 대한 필요성이 높아지고 있다는 배경이 있다.
도 1은 비교예 1에 따르는 프로토콜을 도시하는 블록도이다.
도 2는 비교예 2에 따르는 프로토콜을 도시하는 블록도이다.
도 3은 제1 실시형태에 따르는 구성예를 도시하는 블록도이다.
도 4는 제1 실시형태에 따르는 인증 플로우를 도시하는 플로우차트이다.
도 5는 제2 실시형태에 따르는 구성예를 도시하는 블록도이다.
도 6은 제2 실시형태에 따르는 인증 플로우를 도시하는 플로우차트이다.
도 7은 제3 실시형태에 따르는 구성예를 도시하는 블록도이다.
도 8은 제3 실시형태에 따르는 인증 플로우를 도시하는 플로우차트이다.
도 9는 제3 실시형태에 따르는 비밀 정보의 데이터 전송을 도시하는 블록도이다.
도 10은 제4 실시형태에 따르는 구성예를 도시하는 블록도이다.
도 11은 제4 실시형태에 따르는 인증 플로우를 도시하는 플로우차트이다.
도 12는 제5 실시형태에 따르는 구성예를 도시하는 블록도이다.
도 13은 제5 실시형태에 따르는 인증 플로우를 도시하는 플로우차트이다.
도 14는 제6 실시형태에 따르는 구성예를 도시하는 블록도이다.
도 15는 제6 실시형태에 따르는 인증 플로우를 도시하는 플로우차트이다.
도 16은 제7 실시형태에 따르는 구성예를 도시하는 블록도이다.
도 17은 제7 실시형태에 따르는 인증 플로우를 도시하는 플로우차트이다.
도 18은 제8 실시형태에 따르는 구성예를 도시하는 블록도이다.
도 19는 제8 실시형태에 따르는 행렬 데이터 구성예를 도시하는 도면이다.
도 20은 제8 실시형태에 따르는 행렬 데이터를 이용하는 방법을 도시한 도면이다.
도 21은 제8 실시형태에 따르는 키 시퀀스 정보의 데이터 배포의 일례를 도시한 도면이다.
도 22a는 제8 실시형태에 따르는 인증 플로우를 도시하는 플로우차트이다.
도 22b는 제8 실시형태 및 제2 실시형태의 경우에 있어서의 시간과 비밀 허용도 사이의 관계를 도시한 도면이다.
도 23은 제9 실시형태에 따르는 구성예를 도시하는 블록도이다.
도 24는 제9 실시형태에 따르는 행렬 데이터 구성예(1)를 도시한 도면이다.
도 25는 제9 실시형태에 따르는 행렬 데이터 구성예(2)를 도시한 도면이다.
도 26은 제9 실시형태에 따르는 행렬 데이터 구성예(3)를 도시한 도면이다.
도 27은 제9 실시형태에 따르는 인증 플로우를 도시하는 플로우차트이다.
도 28은 제10 실시형태에 따르는 구성예를 도시하는 블록도이다.
도 29는 도 28에서의 일방향성 함수의 구성예를 도시하는 블록도이다.
도 30은 도 29에서의 암호 박스(Crypto box)의 구성예를 도시하는 블록도이다.
도 31은 제10 실시형태에 따르는 인증 플로우를 도시하는 플로우차트이다.
도 32는 제11 실시형태에 따르는 ID 검색(retrieval) 프로세스(1)를 도시하는 블록도이다.
도 33은 제11 실시형태에 따르는 ID 검색 프로세스(2)를 도시하는 블록도이다.
도 34는 제11 실시형태에 따르는 ID 검색 프로세스(3)를 도시하는 블록도이다.
도 35는 제11 실시형태에 따르는 ID 검색 프로세스(4)를 도시하는 블록도이다.
도 36은 제12 실시형태에 따르는 ID 결합(binding) 프로세스(1)를 도시하는 블록도이다.
도 37은 제12 실시형태에 따르는 ID 결합 프로세스(2)를 도시하는 블록도이다.
도 38은 제13 실시형태에 따르는 구성예를 도시하는 블록도이다.
도 39는 제14 실시형태에 따르는 구성예를 도시하는 블록도이다.
도 40은 제15 실시형태에 따르는 구성예를 도시하는 블록도이다.
도 41은 제16 실시형태에 따르는 NAND 플래시 메모리의 구성예를 도시하는 블록도이다.
도 42는 도 41에서의 블록(BLOCK)을 도시하는 등가 회로도이다.
도 43은 단일 레벨 메모리 셀(SLC)의 임계치 분포를 도시한 도면이다.
도 44는 다중 레벨 메모리 셀(MLC)의 임계치 분포를 도시한 도면이다.
일반적으로, 일 실시형태에 따르면, 키 천이 레코드로 구성된 데이터 구조를 갖는 키 정보, 행렬 형태의 비밀 정보 XY, 및 비밀 정보 XY를 암호화하여 생성된 비밀 정보 XYE를 기억하는 피인증자와, 피인증자를 인증하는 인증자 사이의 인증 방법은, 인증자가 피인증자로부터 수신한 키 정보로부터 인증자의 장치 인덱스에 대응하는 레코드를 선택하여, 레코드를 장치 키에 의해서 복호하여 키 천이를 추출하는 단계, 및 인증자가 피인증자로부터 수신한 비밀 정보 XYE에 대하여, 대응하는 키 천이를 이용하여 복호 처리를 실행하여, 비밀 정보 XY를 공유하는 단계를 포함한다.
[비교예 1(HB+ 프로토콜의 일례)]
우선, 도 1을 참조하여, 비교예 1을 설명한다. 비교예 1은 HB+ 프로토콜의 일례에 관한 것이다.
HB+ 프로토콜은, 2000년에 호퍼(Hopper) 및 블럼(Blum)에 의해 제안된 경량의 인증 프로토콜인 HB 프로토콜의 개량 프로토콜이다. HB 프로토콜은, 잡음으로 패리티 값의 확인이 곤란하다는 것(LPN: Learning Parity with Noise)을 기초로 하여, 수동 공격(passive attack)에 대한 안전성이 증명되어 있다. 그러나, HB 프로토콜은, 리더(Reader)의 행세(disguise)와 같은 능동 공격에 대하여 취약성을 갖는다. 이 문제점을 해결하기 위해, 2005년에 주엘스(Juels) 등에 의해 HB+ 프로토콜이 제안되었다.
HB+ 프로토콜의 개요는 도 1에 도시된 바와 같다. 도 1에서, a, b, x 및 y는 벡터이며, ν 및 z는 비트이다.
도면에 도시된 바와 같이, HB+ 프로토콜에서는, 피인증자(피인증 성분)인 태그(Tag)와 인증자(인증 성분)인 리더(Reader)가 비밀 정보 벡터 x 및 y를 공유한다.
태그는, 리더에 대하여 임시 난수 벡터 b를 전달한다.
그 후, 리더는 태그에 대하여 임시 난수 벡터 a를 전달한다.
후속해서, 태그는 난수 a와 비밀 정보 벡터 x 간의 내적 (a·x) 및 난수 b와 비밀 정보 벡터 y 간의 내적 (b·y)를 계산한다. 또한, 태그는 η의 확률로 1이 되는 변수 ν를 생성한다. 그 후, 내적 (a·x), 내적 (b·y) 및 변수 ν를 가산하여, z = ax
Figure pct00001
by
Figure pct00002
ν를 산출한다. 이 경우에, ax는 내적 (a·x)를 의미하고,
Figure pct00003
는 배타적 논리합을 의미한다.
그 후, 태그는 산출한 z를 리더로 송신한다.
후속해서, 리더는, 수신한 z와, 자신으로 계산한 ax
Figure pct00004
by를 비교하여, 일치/불일치를 검사한다. 상기 일련의 프로세스들은 "1 라운드"라고 칭해지기도 한다.
1 라운드의 프로세스가 복수회(예를 들면, 수십회∼수만회 정도) 반복될 때, 및 상술한 불일치의 확률이 소정치 t보다 작을 때, 태그가 비밀 정보를 유지하고 있다고 간주되어, 인증이 성공적으로 실행된다.
한편, ax
Figure pct00005
by는, 비밀 정보 x, y와 결합 벡터 a, b의 내적이다. 그러므로, x, y의 결합 벡터 xy가 비밀 정보이고, a, b의 결합 벡터가 Concat(a, b)인 경우, ax
Figure pct00006
by는 Concat(a, b) xy로서 표현될 수도 있다.
[비교예 2(Random HB# 프로토콜의 일례)]
다음에, 도 2를 참조하여, 비교예 2를 설명한다. 비교예 2는, Random HB# 프로토콜의 일례에 관한 것이다. Random HB# 프로토콜은, 상술한 비교예 1에 도시된 HB+ 프로토콜의 더욱 개량된 프로토콜이다.
상술한 HB+ 프로토콜은, 수동 공격과 능동 공격에 대한 해결책을 제공하지만, 중간자 공격에 대하여 취약성을 갖는 경향이 있다. 이 문제점을 해결하기 위해서, 길버트(Gilbert) 등에 의해서 HB+ 프로토콜의 개량된 프로토콜로서, Random HB# 프로토콜이 제안되었다.
Random HB# 프로토콜의 개요는, 도 2에 도시된 바와 같다. 도 2에서, X 및 Y는 행렬이며, a, b, z 및 ν는 벡터이다.
도 2에 도시된 바와 같이, Random HB# 프로토콜에서는, 태그(Tag)와 리더(Reader)가 비밀 정보 행렬 X 및 Y를 공유한다.
우선, 태그는 리더에 대하여 임시 난수 벡터 b를 전달한다.
그 후, 리더는 태그에 대하여 임시 난수 a를 전달한다.
후속해서, 태그는 난수 a와 비밀 정보 행렬 X 간의 내적 (aX) 및 난수 b와 비밀 정보 행렬 Y와의 내적 (bY)를 계산한다. 이 경우에, X 및 Y는 행렬이고, a 및 b는 벡터이므로, 각각의 내적 결과는 벡터이다. 또한, 태그는 η의 확률로 1이 되는 변수 ν를 생성한다. 그 후, 태그는 상술한 값을 가산하여, z= aX
Figure pct00007
bY
Figure pct00008
ν를 산출한다. 이 경우에 z는 벡터이다.
그 후, 태그는 산출한 z를 리더로 송신한다.
후속해서, 리더는, 수신한 z와 자신으로 계산한 aX
Figure pct00009
bY 간의 비트 가산을 실행한다, 즉 배타적 논리합 연산의 결과를 이용하여, aX
Figure pct00010
bY
Figure pct00011
z의 해밍 가중 Hwt(aX
Figure pct00012
bY
Figure pct00013
z)를 계산한다. 해밍 가중 Hwt(aX
Figure pct00014
bY
Figure pct00015
z)가, 소정치 t* clen보다 작을 때, 태그가 비밀 정보를 유지하고 있다고 간주되어, 인증이 성공적으로 실행된다. 이 경우에는, η≤ t<0.5이고, clen은 aX
Figure pct00016
bY의 비트 길이이다.
한편, aX
Figure pct00017
bY는 비밀 정보 부분들 X 및 Y의 결합 행렬과 a 및 b의 결합 벡터 간의 내적이다. 그러므로, X 및 Y의 결합 행렬 XY가 비밀 정보이고, a 및 b의 결합 벡터가 Concat(a, b)인 경우, aX
Figure pct00018
bY는 Concat(a, b) XY로 표현될 수도 있다.
<실장상의 개선점>
그러나, 상술한 비교예 1 및 2의 프로토콜에서는, 예컨대, NAND 플래시 메모리 등에 실장될 때, 이하의 (I)∼(IV)의 개선점을 생각할 수 있다.
(I) 비밀 정보 X 및 Y의 공유 수단
상술한 바와 같이, 상술한 비교예 1 및 2에서는, 리더와 태그는 비밀 정보 X, Y를 공유할 필요가 있다. 그러나, 비교예 1 및 2는, 비밀 정보 X, Y를 공유하기 위한 구체적인 공유 방법을 프리셋하고 있지 않다.
그러므로, 모든 리더와 태그가 동일한 X, Y를 사전에 공유하고 있었던 경우에는, 일단 X, Y가 노출되면, 전체 시스템이 치명적인 영향을 받게 된다. 한편, 태그마다 다른 정보 X, Y가 적용되는 경우에는, 리더측은 모든 태그에 적용되는 X, Y를 기억하고 있거나, X 및 Y를 통합적으로 관리하고 있는 예컨대, 데이터베이스로 액세스하는 것이 요구된다. 그 결과, 리더측에 대한 부담이 증가한다.
관련 선행기술로서, 일본 특허 공개 제2000-357213호 공보에는, 연산 처리 기능을 갖는 기록 매체에 복제 콘텐츠를 기록하는 기록 장치와 해당 기록 매체 사이의 상호 인증 방법이 제안되어 있다. 상기 기록 매체는, 적어도 해당 기록 매체에 의존하는 제1 정보와, 상기 기록 장치와 상호 인증을 실행할 때에 해당 기록 장치와 공유되는 해당 기록 매체에 의존하는 제2 정보를 기억한다. 상기 기록 장치는, 상기 기록 매체로부터 얻어진 제1 정보에 기초하여, 해당 기록 매체와 상호 인증을 실행할 때 이용하는 인증 정보를 생성한다. 생성된 인증 정보와 상기 제2 정보를 이용하여 상기 기록 장치와 상기 기록 매체 간의 상호 인증이 실행된다.
(II) 성분 P에 비밀 정보 X 및 Y를 효율적으로 기록하는 수단
상술한 HB+프로토콜 및 Random HB# 프로토콜에 있어서는, 상술한 LPN 문제를 현실적인 계산량으로 확인하는 것이 곤란하게 하기 위해서는 상응하는 비밀 정보량, 즉 X, Y의 상응하는 데이터 사이즈가 필요하다. X, Y가 모든 태그에 대해 공통이면, 하드와이어드 로그(hardwired log) 실장이 가능하다. 그러나, X, Y가 태그마다 변경되는 경우, 태그는 X, Y를 유지하기 위해서 충분한 메모리 용량을 가질 필요가 있다. 또한, 이와 동시에 태그 제조 시에 데이터를 개별적으로 기록하는 것이 필요하고, 기록 시간은 제조 시간에 반영된다.
그 결과, 메모리 용량의 증가와 기록 시간의 증가에 의해, 태그의 비용이 증가한다.
(III) 성분 P에 기억되어 있는 비밀 정보 X 및 Y의 손상에 대한 보호 수단
성분 P가 내부 메모리에 X, Y를 기억하고 있는 경우, X, Y가 인증에 이용될 때, X, Y의 데이터 완전성이 요구된다. 그러나, 선행문헌에서는 이들에 관해서 언급되어 있지 않다. 데이터 완전성을 보증하기 위해서는, 태그의 내부 메모리에 에러 정정 부호가 부가된 X, Y를 기억하여, 인증 시에 정정 프로세스를 실행하는 그러한 방법을 생각할 수 있다. 그러나, 일반적으로, 염가의 메모리는 반드시 정정 기능을 갖는 것은 아니다. 메모리가 정정 기능을 갖지 않는 경우에는 메모리 이외의 태그 내의 성분으로서 정정 기능이 제공될 필요가 있다.
그 결과, 태그의 비용이 증가한다.
(IV) 비밀 정보 X 및 Y의 노출 시의 비밀 정보 갱신 수단
상술한 Random HB# 프로토콜은, 수동 공격, 능동 공격 및 소정 조건 하에서의 중간자 공격에 대한 내성을 갖는 것으로 인정된다. 그러나, 최근에는 일반화된 중간자 공격에 대한 취약성이 보고되어 왔고, X, Y가 노출될 가능성을 배제할 수 없다. X, Y의 노출에는, 상응하는 공격 비용이 요구되지만, 일단 X, Y가 노출되면, X, Y를 이용하여 위조된 태그의 제조가 가능해진다. 그러므로, X, Y가 노출되는 경우에도 새로운 X, Y로 천이할 수 있도록, 비밀 정보의 갱신 수단이 있는 것이 바람직하다.
상기한 점을 고려하여, 이하에 있어서 실시형태들을 도면을 참조하여 설명한다. 지금까지 RFID의 리더와 태그를 예로서 설명을 했다. 그러나, 같은 요건은 NAND 플래시 메모리와 같은 회로 면적이 비용에 직결되는 메모리 칩에도 적용된다. 그러므로, 이하의 실시형태에서는, 인증자으로서의 역할을 하는 리더(Reader)로서 이용되는 NAND 플래시 메모리 및 피인증자로서의 역할을 하는 태그(Tag)로서 이용되는 NAND 플래시 메모리(NAND 칩)를 인증하는 호스트 디바이스(Host)를 예를 들어 설명한다. 그러나, 실시형태들은 이들 예에 한정되는 것은 아니다. 예컨대, NOR 플래시 메모리, 저항 랜덤 액세스 메모리(ReRAM: Resistive Random Access Memory), 자기 저항(Magnetoresistive) 랜덤 액세스 메모리(MRAM), 상변화 랜덤 액세스 메모리(PRAM), 강유전체 랜덤 액세스 메모리(FeRAM), 하드 디스크 드라이브나 고체 상태 드라이브와 같은 연산 기능 및 메모리를 갖는 기억 장치, RFID나 IC 카드와 같은 인증이 필요한 성분, 및 범용 연산 소자와 범용 메모리를 구비하는 컴퓨터와 소프트웨어를 포함하는 시스템과 같은, 다양한 실장 모드에 적용할 수 있다. 이하의 설명에 있어서는, 도면 전반에 걸쳐 공통의 부분에는 같은 참조 부호로 나타낸다.
[제1 실시형태]
제1 실시형태에 따르는 인증자, 피인증자 및 인증 방법에 관해서 설명한다.
<1. 구성예(메모리 시스템)>
우선, 도 3을 참조하여, 제1 실시형태에 따르는 구성예에 관해서 설명한다.
도 3에 도시하는 메모리 시스템은, 피인증자인 NAND 플래시 메모리(10), 인증자인 호스트 장치(20) 및 양자 간을 중개하는 컨트롤러(19)를 구비한다. 도 3에 도시된 바와 같이, 호스트 장치(20)는, "컨트롤러(19)"라고 칭해지는 NAND 플래시 메모리(10)에 액세스하는 기능을 갖는 디바이스를 경유하여 NAND 플래시 메모리(10)에 액세스한다.
반도체 제품의 제조 프로세스에 관해서 설명한다. 반도체 제품의 제조 프로세스는 주로 기판 웨이퍼 상에 회로를 형성하는 전공정(pre-process)과, 상기 웨이퍼를 단편으로 절단한 후, 배선 및 수지 패키지 봉입을 실행하는 후속 공정으로 나누어진다. 이 경우에, 예를 들면, 컨트롤러(19)가 전공정에 있어서 NAND 플래시 메모리(10) 내에 포함되도록 구성되는 경우, 컨트롤러(19)가 전공정에 있어서는 포함되지 않지만 후속 공정에 있어서 동일 패키지에 포함되도록 구성되는 경우, 또는 컨트롤러(19)가 NAND 플래시 메모리(10)와는 다른 칩으로서 형성되는 경우 등 여러 가지 경우가 있다. 도 3을 포함하는 도면들에서는, 컨트롤러(19)가 NAND 플래시 메모리(10)와는 다른 칩으로서 형성되는 경우를 예로서 설명하고 있다. 그러나, 본 실시형태는, 상기 어느 경우에 있어서도 적용 가능하다. 이하의 설명에서는, 특별히 명시하지 않는 한, 호스트 장치(20)와 NAND 플래시 메모리(10) 사이의 데이터 및 명령의 교환에 있어서는, 많은 경우 컨트롤러가 중개하는 것이지만, 이것의 설명은 생략한다. NAND 플래시 메모리(10) 및 컨트롤러(19)의 구성예에 관해서는 후술한다.
도 3에 도시하는 각각의 성분 및 데이터 처리에 관해서는 후술한다. 도면에 도시된 바와 같이, 비밀 정보 X, Y를 공유하는 방법과, 이 방법을 NAND 플래시 메모리(10)에 적용하는 경우의 구성이 예시된다.
1-1. NAND 플래시 메모리
NAND 플래시 메모리(10)는 피인증자이다. 이 예에 따르는 NAND 플래시 메모리(10)는, 셀 어레이(11), 및 셀 어레이(11)의 주변 영역에 배치되는 데이터 캐시(12), 압축 연산 회로(13), 바이어스된 RNG(14), 출력 모듈(15), 난수 생성기(16), 치환 및 결합(permutation & concatenation) 회로(18), 및 비트별 가산(bit-by-bit addition) 회로(C1)를 구비한다.
셀 어레이(Cell array)(11)에는, 비트선 및 워드선(도시 생략됨) 사이의 교차위치에 행렬형으로 복수의 메모리 셀이 배치된다. 메모리 셀은, 반도체 기판상에 이하의 순서로, 터널 절연막, 부동 게이트, 층간 절연막, 및 워드선에 접속되는 제어 게이트를 구비한다. 비트선 방향에 있어서의 메모리 셀의 전류 경로는 직렬 접속되어, 셀 유닛을 구성한다. 셀 유닛은, 비트선 및 소스선에 접속되는 선택 트랜지스터에 의해 선택된다. 워드선 방향에 있어서의 복수의 메모리 셀은, 데이터 판독 및 데이터 기록의 단위인 1 페이지(Page)를 구성한다. 또한, 복수의 페이지는 데이터 소거의 단위인 블록(Block)을 구성한다.
셀 어레이(Cell array)(11)는 ROM 영역(11-1), 은닉 영역(11-2) 및 사용자 영역(11-3)을 구비한다.
ROM 영역(Rom area)(11-1)은, 데이터 기록이 금지되고, 데이터 판독이 허가되는 영역이다. 이 예에 따르는 ROM 영역(11-1)에는, 비밀 정보 XY를 암호화하여, 암호화된 비밀 정보에 정정 부호를 추가로 덧붙인 데이터 XYE(xe bits)가 기록된다. 암호화에는, 대칭 키 암호인 예컨대, AES(Advanced Encryption Standard)의 암호기를 이용할 수도 있다. 암호 모드로서는 CTR(Counter), CBC(Cipher block chain) 등을 이용할 수도 있다. 또한, 비대칭 암호인 ECDSA(elliptic curve cipher: 타원 곡선 암호)나 RSA를 이용할 수도 있다. 또한 에러 정정 부호로서는, BCH 부호, 리드 솔로몬(Reed Solomon) 부호, LDPC(Low density parity check: 저밀도 패리티 검사) 부호 등을 이용할 수도 있다. 이 방식으로, 본 예는, 어떠한 암호 방법 및 어떠한 정정 부호에도 적용하는 것이 가능하다. 이 경우에, XYE는, 비밀 정보 XY를 암호화하여, 암호화된 비밀 정보에 정정 부호를 추가로 덧붙여 얻어진 데이터로서 표기된다. 또한, (xe bits)는, 비트 수를 나타낸다.
은닉 영역(Hidden area)(11-2)은, NAND 플래시 메모리(10)의 외부에 대해서는 데이터 기록이 금지되고, 데이터 판독도 금지되는 영역(Read Program inhibit)이다. 본 예에 따르는 은닉 영역(11-2)에는, 상기 인증에 이용하는 X, Y에 대응하는 데이터 XY가 기록된다.
사용자 영역(User area)(11-3)은, 데이터 기록 및 데이터 판독이 자유롭게 실행 가능한 영역이다. 사용자 영역(11-3)에는, 예컨대, 사진과 같은 화상 데이터 및 동화상 데이터가 기록된다.
상술한 ROM 영역, 은닉 영역 및 사용자 영역은, 물리적 구성을 다르게 한 것으로 실현될 수도 있고, 물리적 구성은 동일하지만 NAND 플래시 메모리 내의 논리적 제어로 실현될 수도 있다. 이 경우에, 논리적 제어는, 영역마다 NAND 플래시 메모리의 외부로부터의 액세스를 제어하는 식별자를 설치하여, 이들 식별자가 기억되어, NAND 플래시 메모리가 외부에서 해당 영역으로의 액세스를 수신했을 때에, 그 식별자에 의해서 액세스 제어가 실행되는 그러한 방법이다.
또한, 셀 어레이(Cell array)(11)를 구성하는 개개의 메모리 셀은, 복수의 비트를 기억하는 메모리 셀일 수도 있고(MLC: Multi Level Cell), 1 비트를 기억하는 메모리 셀일 수도 있다(SLC: Single Level Cell). 더욱이, ROM 영역 및 은닉 영역은 SLC에서 이용하는 구성으로 할 수도 있고, 사용자 영역은 MLC에서 이용하는 구성으로 할 수도 있다. 이때, SLC 영역과 MLC 영역 간에 셀 어레이의 물리적 구성이 다를 수도 있고, MLC로서 이용 가능한 메모리 셀의 일부의 비트만을 의사 SLC 영역으로서 이용할 수도 있다.
데이터 캐시(Data Cache)(12)는, 셀 어레이(11)로부터 판독한 데이터를 일시적으로 기억한다.
바이어스된 RNG(Biased RNG)(14)는, 소정 확률 η로 1이 되는 난수 ν를 생성한다. 한편, 바이어스된 RNG의 입력원으로서 후술하는 난수 생성기를 이용할 수도 있다. 이 경우에, 난수 생성기로부터 출력되는 복수의 난수 시퀀스에 대하여, 논리곱이나 논리합과 같은 연산을 실행함으로써 소정 확률η에 대응하는 난수를 생성하는 것이 가능하다.
난수 생성기(RNG: Random Number Generator)(16)는, 인증에 이용하는 난수 Nonce_N(a bit)를 생성한다.
순서 교환 회로(Permutation & Concatenation)(18)는, 양자가 공유한 XY를 이용하여, 호스트 장치(20)로부터 입력되는 난수 Nonce_H와, 메모리(10)로부터 입력되는 난수 Nonce_N으로 구성되는 난수 Nonce(c bits)를 생성한다. 이 경우에, a는 Nonce_N의 비트 길이를 의미하고, b는 Nonce_H의 비트 길이를 의미하며, c는 압축 연산 회로의 1 프로세스당 입력되는 비트 길이를 의미한다. 구체적으로는, 순서 교환 회로(Permutation & Concatenation)로부터 출력되는 개개의 난수 Nonce는 압축 연산 회로의 1 프로세스용의 데이터이며, 1 프로세스용으로 Nonce_N 및 Nonce_H의 총 비트를 이용할 수도 있고, 부분마다 선택적으로 이용할 수도 있다.
압축 연산 회로(Compress (ex. inner product))(13)는, 데이터 캐시(12)의 출력 XY(c bit each) 및 순서 교환 회로(18)의 출력(c bits)에 대해서 내적 연산과 같은 소정의 연산을 실행하여, 데이터 C를 출력한다.
비트별 가산 회로(C1)는, 압축 연산 회로(13)의 출력 비트에 대하여, 바이어스된 RNG에 의해서 생성된 ν를 가산하여 얻어진 z= C+ν를, 출력 모듈(15)에 출력한다. 상술한 바와 같이, 비트 가산은 배타적 논리합을 의미한다. 구체적으로는, 비트별 가산 회로는, 2 입력 데이터의 비트들의 배타적 논리합을 출력한다.
출력 모듈(15)은, 비트별 가산 회로(C1)의 결과(z= C+ν)를, 컨트롤러(19)를 통해 호스트 장치(20)에 출력한다.
상기 셀 어레이(11) 이외의 데이터 캐시(12)와 같은 구성 요소는, 메모리 컨트롤러(19)에 배치되는 것도 마찬가지로 가능하다.
1-2. 호스트
본 예에 따르는 호스트(Host)(20)는, 정정 처리 모듈(21), 복호 모듈(22), 키 유지 모듈(23), 데이터 일시 기억 모듈(25), 압축 연산 회로(26), 난수 생성기(27), 순서 교환 회로(29), 및 판정 모듈(30)을 구비한다.
정정 처리 모듈(ECC)(21)은, NAND 플래시 메모리(10)의 ROM 영역(11-1)으로부터 판독된 데이터 XYE에 대하여 오류 정정 처리(ECC)를 실행한다.
복호 모듈(Decrypt)(22)은, 판독한 데이터 XYE에 대하여 에러 정정 처리를 행한 후, 키 유지 모듈(23)에 유지되어 있는 키(KEY)에 의해 데이터 XYE를 복호하여, XY를 얻는다.
데이터 일시 기억 모듈(Data cache)(25)은, 복호한 XY를 일시적으로 기억한다. 이에 따라, 호스트 장치(20)와 NAND 플래시 메모리(20)는, 비밀 정보 XY를 공유할 수 있다.
압축 연산 회로(Compress (ex inner product))(26)는, 데이터 캐시(25)의 출력(c bit each) 및 순서 교환 회로(29)의 출력(c bits)에 대해서 내적 연산과 같은 소정의 연산을 실행하여, 데이터 C를 출력한다.
난수 생성기(RNG)(27)는, 호스트의 난수 Nonce_H(b bit)를 생성한다.
순서 교환 회로(Permutation & Concatenation)(29)는, 양자가 공유한 XY를 이용하여, 호스트 장치(20)로부터 입력되는 난수 Nonce_H 및 메모리(10)로부터 입력되는 난수 Nonce_N으로 구성되는 난수 Nonce(c bits)를 생성한다.
판정 모듈(Accept if Hwt(z
Figure pct00019
C) ≤ t* clen)(30)은, 압축 연산 모듈(26)의 출력 C 및 출력 모듈(15)의 출력 z에 대해서, 상술한 바와 같이 해밍 가중 Hwt(z
Figure pct00020
C)를 계산한다. 해밍 가중 Hwt(z
Figure pct00021
C)가, 소정치 t* clen보다 더 작아지는 경우, 판정 모듈(30)은 비밀 정보를 유지하고 있는 것으로 간주하여, 인증 성공이라고 판정한다. η≤t<0.5이고, clen은 z
Figure pct00022
C의 비트 길이라고 가정한다.
이 방식으로, 호스트 장치(20)는, 바이어스된 RNG 처리(27)를 제외하고, 판정 모듈(30)에 의해 동일한 처리에 의해서 얻어진 C와 z를 비교하여, 피인증자인 NAND 플래시 메모리(10)의 정당성을 확인한다.
한편, 상술한 구성에 의해 동일한 처리를 복수회 실행할 수도 있고, 그에 의해 최종적으로 정당성을 확인할 수도 있다. 예컨대, 본 도면에서는, C가 복수 비트인 경우를 예로서 예시되고, 비교 판정 방법은 Z와 C의 가산 비트 시퀀스에 있어서의 해밍 가중을 판정에 이용하고 있다. 만약에 C가 단일 비트인 경우, 상술한 프로세스는 HB+ 프로토콜과 같이, 복수 회 실행할 필요가 있다. 이 경우에는, HB+ 프로토콜과 같이, 에러 변수의 발생 확률을 기초로 하여 Z와 C 사이의 불일치율을 검사하면 충분하다.
1-3. 변형예
상기에 한정되지 않고, 본 실시형태의 구성은, 후술하는 바와 같이 필요에 따라서, 변형하는 것이 가능하다.
압축 처리는, 도 1 및 도 2에 도시한 비교예 1 및 2에 따르는 내적 계산에 대응할 수도 있지만, 반드시 내적 계산에 대응할 필요는 없다. 예컨대, 압축 처리에서, LFSR(Linear Feedback Shift Registor)로 구성되는 연산 장치에 대하여 XY를 기초로 하는 데이터와 Nonce_H 및 Nonce_N을 기초로 하는 데이터를 입력할 수도 있고, 입력 후의 LFSR 내의 레지스터치의 일부 또는 전부를 압축 결과로서 이용할 수도 있다. 이와 달리, LFSR로서 CRC 연산 장치를 이용할 수도 있다. 더욱이, 압축 처리에 이용하는 함수로서 해시 함수를 이용할 수도 있다. 해시 함수는 암호기에 따라서는 있을 수도 있거나 없을 수도 있다. 어떠한 연산 방법을 이용하더라도 본 실시형태에서 제안하고 있는 방법을 적용하는 것이 가능하다. 안전성의 근거인 LPN 문제에 속해 있는 것에는 변함이 없다. 압축 처리는 가역 압축일수도 또는 비가역 압축일수도 있다. 압축 처리는 적어도 입력된 데이터보다도 작고, 또한 입력데이터에 의존하는 데이터를 출력하는 처리를 의미한다.
또한, Nonce_H 및 Nonce_N을 기초로 하여 생성되는 Nonce를 전송하는 처리에 관해서 설명한다. Nonce는 Nonce_H 및 Nonce_N을 소정의 순서로 결합한 후에 전송되는 데이터이다. 결합/전송 방법으로서는, 단순한 순방향 이송 데이터 결합/전송 방법, 또는 서로의 데이터를 교대로 삽입하는 인터리브 데이터 결합/전송 방법일 수도 있다. 데이터는 상술한 방법에 의해 복수 회 전송될 수도 있다. 어느 경우에나, Nonce는, Nonce_N 및 Nonce_H의 적어도 일부의 데이터보다 생성되는 데이터이며, c 비트 길이를 갖는 데이터이다. 여기서, Nonce_N의 데이터 길이가 a이고, Nonce_H의 데이터 길이는 b이며, 양자의 총 데이터 길이는 d이라고 가정한다. 만일 c = d이며, 또한 데이터가 복수 회 전송되지 않은 경우, 압축 계산 모듈로부터의 출력은 1 비트가 된다. 만일 c = d이며, 또한 데이터가 복수 회 전송되는 경우, 압축 계산 모듈로부터의 출력은 1 비트가 복수 회 전송되도록 된다. 만일 c < d이며, 또한 데이터가 복수 회 전송되는 경우, 압축 계산 모듈로부터의 출력은 1 비트가 복수 회 전송되도록 된다.
한편, Nonce와의 압축이 계산되는 XY에 대해서도, XY 내의 데이터가 c 비트 단위로 압축 계산 모듈로 전송된다. 여기서, XY 데이터의 비트 사이즈 x는 c 또는 c의 정수배와 같다. 비트 사이즈 x가 c와 같은 경우, 압축 계산 모듈의 출력은 1비트로 된다. XY 데이터의 비트 사이즈 x가 c의 정수배인 경우, 압축 계산 모듈의 출력은 1 비트가 복수회 출력되게 된다. 대표적인 조합은 아래와 같다:
· c = d = x인 경우, 압축 계산 모듈의 출력은 1 비트이고,
· c = d < x인 경우, 압축 계산 모듈의 출력은 1 비트가 복수회이며,
· c < d, c < x인 경우, 압축 계산 모듈의 출력은 1 비트가 복수회로 된다. 한편, 상기 예는 압축 계산 모듈이 2 입력을 1 비트로 압축하는 경우에 관한 것이다. 압축 계산 모듈이 2 입력을 복수의 비트로 압축하는 경우에는, 1회당의 출력값 자체도 복수의 비트가 된다.
<2.인증 플로우>
다음에, 도 4에 따라서, 도 3에 도시한 구성을 갖는 메모리 시스템의 인증플로우에 관한 설명을 제공한다.
인증이 개시되면(Start), 단계 S11에서, 호스트 장치(10)는, NAND 플래시 메모리(10)로 XYE의 판독 명령(Read XYE)를 전송한다.
그 후, 단계 S12에서, NAND 플래시 메모리(10)는, 상기 판독 명령에 따라서, XYE를 셀 어레이(11-1)로부터 로드(load XYE)하여, 이것을 호스트 장치(20)로 전송한다.
후속해서, 단계 S13에서, 호스트 장치(20)는, 수신한 XYE에 대하여, 상술한 복호 처리를 실행하여, XY를 회복한다(Retrieve XY).
그 후, 단계 S14에서, 호스트 장치(20)는, 인증 요구(Request authentication)를 NAND 플래시 메모리(10)로 전송한다. 이 경우에, 인증 요구는 Nonce_H를 포함할 수도 있다.
그 후에, 단계 S15에서, NAND 플래시 메모리(10)는, Nonce_H를 수신하여, XY를 로드한다(Load XY (if required)).
그 후, 단계 S16에서, NAND 플래시 메모리(10)는, Nonce_N 및 ν을 생성한다 (Create Nonce_N, Create ν).
후속해서, 단계 S17에서, NAND 플래시 메모리(10)는, 상술한 바와 같이, 생성된 ν를 가산하여, Z를 계산한다. NAND 플래시 메모리(10)는, Nonce_N 및 Z를 호스트 장치(20)로 전송한다.
그 후, 단계 S18에서, 호스트 장치(20)는, 이들 데이터 Nonce_N 및 Z를 수신한 후, 내적 연산과 같은 소정의 연산을 실행하여, 데이터 C를 계산한다.
후속해서, 단계 S19에서, 호스트 장치(20)는, Z 및 C의 비트마다 XOR 치의 시퀀스에 대하여 해밍 가중 Hwt(Z
Figure pct00023
C)를 계산하여, 이 해밍 가중 Hwt(Z
Figure pct00024
C)가 소정치 t*Clen보다 작은지의 여부를 판정하기 위해 판정 처리(Check Hwt(Z
Figure pct00025
C) ≤ t* Clen)를 실행한다. 여기서, 상술한 바와 같이, t는 NAND 플래시 메모리(10)가 z의 산출시에 이용한 에러 비트 또는 에러 벡터에 있어서의 에러 부여 확률(또는 데이터에서의 1의 출현 확률) η에 기초하는 값이며, η≤t<0.5라고 가정한다. 또한, clen은 C의 비트 길이라고 가정한다.
후속해서, 단계 S20에서, 상기 단계 S19에서의 판정 결과가 소정치 보다 작아지지 않은 경우(fail), 호스트 장치(20)는, 실패로 판정하고 이 동작을 정지한다.
그 후, 단계 S21에서, 상기 단계 S19에서의 판정 결과가 소정치 보다 작은 경우(Success), 호스트 장치(20)는, 미리 정해진 라운드 수에 도달하였는지의 여부를 판정한다(Enough round). 이 상황에서, 라운드 수는 상기 인증 요구 처리로부터 상기 판정 처리까지의 일련의 처리를 나타낸다. 라운드 수에 도달하지 않은 경우(No)에는, 인증 요구 처리(S14∼)를 반복한다.
후속해서, 단계 S22에서, 라운드 수에 도달하고 있는 경우(Yes)에는, 호스트 장치(10)는 인증이 성공했다고 간주하고, 필요에 따라서, 상기 XY에 기초하여 매체 ID(Media ID)를 산출하는 처리를 실행한다. 매체 ID의 산출 처리 및 매체 ID의 이용방법(S23 이하)에 관하여는 후술한다.
상술한 동작에 의해, 제1 실시형태에 따르는 인증 플로우를 종료한다(End).
한편, Nonce_N, Nonce_H, ν의 파라미터는, 각각의 라운드 간에 다른 것을 이용할 필요가 있다. 또한, NAND 플래시 메모리(10)가 인증 요구를 수신했을 때, 이전의 인증 요구시의 XY가 Data Cache에 로드된 상태인 경우, 셀 어레이부터의 XY의 로드를 생략하여, Data cache 내의 값을 이용하는 것도 가능하다. 또한, 단계 S17 이후에, Data cache 내의 XY를 소거할 수도 있다. 특히, NAND 플래시 메모리(10)가 Data cache로의 액세스 기능을 외부에 제공하고 있는 경우, 인증에 필요한 데이터 Z를 계산한 때의 단계에서 Data cache 내의 비밀 정보 XY를 소거하는 것이 보안의 관점에서 유용하다.
<3.작용효과>
제1 실시형태에 관한 구성 및 인증 방법에 따르면, 상기 포인트들 (I)∼(IV)를 개선할 수 있고, 적어도 하기 (1)의 효과를 얻을 수 있다.
(1) 인증자와 피인증자 사이에서, 다른 비밀 정보 XY의 비밀 상태를 유지한 채로 다른 비밀 정보 XY를 공유할 수 있고, 공유한 비밀 정보에 기초하는 경량의 계산에 의해서 인증을 수행할 수 있다.
본 실시형태에 따르는 NAND 플래시 메모리(10)는, 비밀 정보 XY를 기록 금지/판독 금지 영역인 은닉 영역(11-2)에 기억하고, 그 비밀 정보 XY를 암호화하여 암호화된 비밀 정보에 또한 정정 부호를 부가하여 얻어진 XYE를 기록 금지/판독 허가 영역인 ROM 영역(11-1)에 기억한다. 또한, 호스트 장치(20)는, XYE를 판독하여 에러 정정 처리(21) 및 복호화 처리(22)를 실행하는 기능을 갖고, 복호에 이용하는 키(23)에 의해, NAND 플래시 메모리(10)와 호스트 장치(20) 간에 비밀 정보 XY를 공유할 수 있다. 그러므로, 인증자와 피인증자는, 공유한 비밀 정보 XY에 의해 인증을 수행할 수 있다(S11∼S23).
또한, NAND 플래시 메모리(10)와 호스트 장치(20)는, 임시 난수를 생성하는 RNG(16, 17), 치환 및 결합 모듈(18, 29), 압축 계산 모듈(13, 26), 임시 난수의 비트별 가산 모듈(C1, 26), 및 출력 모듈(15)을 구비한다. 또한, NAND 플래시 메모리(10)는, 바이어스된 RNG(14)를 구비한다. 호스트 장치(20)는, NAND 플래시 메모리(10)로부터 출력되는 Z와 호스트 장치 내부에서 계산한 C를 비교하여 인증을 실행하는 판정 모듈(30)을 구비한다.
상술한 바와 같이, 제1 실시형태에서는, 비밀 정보 XY를 기록 금지/판독 금지 영역인 은닉 영역(11-2)에 기억하고, 이것을 이용하여 데이터 Z를 생성하기 때문에, 은닉성을 유지할 수 있다. 또한, 비밀 정보 XY를 암호화하여 암호화된 비밀 정보에 정정 부호를 부가하여 얻어진 XYE를 기록 금지/판독 허가 영역인 ROM 영역(11-1)에 기억한다. 호스트 장치(20)는, 여기에서 판독한 XYE에 대하여, 에러 정정 처리(21) 및 키(23)를 이용한 복호화 처리(22)를 실행함으로써 XY를 공유한다. 그러므로, 인증자와 피인증자 사이에서 다른 비밀 정보 XY를 비밀 정보 XY의 비밀상태를 유지한 상태로 공유할 수 있다.
따라서, 제1 실시형태에 관한 구성 및 인증 방법에 따르면, 인증자와 피인증자 사이에서, 다른 비밀 정보 XY를 비밀 정보 XY의 비밀 상태를 유지한 상태로 공유할 수 있고, 공유한 비밀 정보에 기초하는 경량의 계산에 의해서 인증을 수행할 수 있는 점에서 유리하다.
[제2 실시형태]
다음에, 도 5 및 도 6을 참조하여, 제2 실시형태에 따르는 인증자/피인증자 및 그 인증 방법에 관해서 설명을 제공한다. 또한, 이하의 설명에 있어서, 상기 제1 실시형태와 중복하는 부분의 설명에 대해서는 생략한다.
<구성예(메모리 시스템)>
도 5를 참조하여, 제2 실시형태에 관한 구성예에 관해서 설명한다.
도 5에 도시되는 바와 같이, 제2 실시형태에 관한 구성예는, NAND 플래시 메모리(10)가 ROM 영역(11-1) 및 은닉 영역(11-2)에 각각 복수 개의 XYE 및 복수 개의 XY를 기억하는 점에서, 상기 제1 실시형태와 상이하다. 이 예에서는, i와 j가 다른 경우, XY[i]≠ XY[j], 및 XYE[i]≠ XYE[j]이다.
이와 같은 방식으로, 복수의 XYE 및 복수의 XY의 세트를 기억함으로써, 비밀 정보 X 및 Y가 노출될 때 비밀 정보의 갱신 수단을 제공할 수 있다. 하나의 XY 및 XYE의 세트가 중간자 공격 등에 의해 노출되어, 노출된 XY 및 XYE를 유용한 위조 디바이스가 제조된 경우, 그렇지만, 본 실시형태에서는, 호스트 장치(20)가 유지하는 KEY[1]23를 갱신(예컨대, KEY[1] ⇒ 갱신된 KEY[2])할 수 있다. 이와 같은 방식으로, 노출된 XY 및 XYE의 세트와 다른 세트를 이용함으로써, 위조 디바이스의 배제가 가능해진다. 각 XY[i]의 암호화에 이용되는 KEY와 관련하여, i가 다른 경우, 다른 키를 이용하는 것이 바람직하다.
다른 점에서는, 제2 실시형태는 상기 제1실시형태와 실질적으로 마찬가지이므로, 상세한 설명을 생략한다.
<인증 플로우>
다음에, 도 6을 참조하여, 제2 실시형태에 따르는 인증 동작에 관해서 설명한다.
제2 실시형태에서는, NAND 플래시 메모리(10)내에는 복수의 XY 및 복수의 XYE가 기록되어 있기 때문에, 호스트 장치(20)가 이용될 XY를 선택함으로써, 인증을 실행한다.
그러므로, 제2 실시형태에서는, 단계 S14에서, 호스트 장치(20)가, 인증을 요구하는(Request authentication) 경우, 이용되는 XY를 지정하는 파라미터 i를, 난수 Nonce_H와 함께, NAND 플래시 메모리(10)에 전송한다. 이러한 점에서, 제2 실시형태는 제1 실시형태와 상이하다.
다른 점에서는, 제2 실시형태는 상기 제1실시형태와 실질적으로 마찬가지이므로, 상세한 설명을 생략한다.
<작용효과>
제2 실시형태에 관한 인증자/피인증자 및 그 인증 방법에 따르면, 상기 포인트 (I)∼(IV)를 개선할 수 있고, 적어도 상술한 (1)의 효과를 얻을 수 있다.
또한, 제2 실시형태는, NAND 플래시 메모리(10)가 ROM 영역(11-1) 및 은닉 영역(11-2)에 복수 개의 XYE 및 복수 개의 XY를 기억하는 점에서, 상기 제1 실시형태와 상이하다.
이와 같은 방식으로, 복수의 XYE 및 복수의 XY의 세트를 기억함으로써, 비밀 정보 X 및 Y의 노출 시의 비밀 정보의 갱신 수단을 제공할 수 있다. 하나의 XY와 XYE의 세트가 중간자 공격 등에 의해서 노출되어, 노출된 XY 및 XYE를 유용한 위조 디바이스가 제조된 경우, 그렇지만, 본 실시형태에서는, 호스트 장치(20)가 유지하는 KEY[1]23을 갱신(예컨대, KEY[1] ⇒ 갱신 KEY[2])할 수 있다.
그러므로, 제2 실시형태에 관한 인증 플로우에서는, 단계 S14에서, 호스트 장치(20)가 인증을 요구하는(Request authentication) 경우, 호스트 장치(20)는 이요될 XY를 지정하는 파라미터 i를, 난수 Nonce_H와 함께, NAND 플래시 메모리(10)에 전송한다.
상술한 바와 같이, 제2 실시형태에서는, NAND 플래시 메모리(10)가, 복수의 XY 및 복수의 XYE를 갖고, 호스트 장치로부터의 명령에 의해 XYE를 선택적으로 전송하는 기능을 가지며, 호스트 장치로부터의 명령에 의해 인증에 이용하는 XY를 선택적으로 설정한다. 또한, 호스트 장치는, 자신이 유지하는 키에 대응하는 XYE를 선택적으로 판독하는 기능을 가지고, 그 XYE를 복호하는 기능을 가지며, 또한 자신이 유지하는 키를 소정의 조건 하에서 갱신하는 기능을 갖는다.
그 결과, 노출된 XY 및 XYE의 세트와 다른 세트를 이용함으로써, 위조 디바이스의 배제가 가능해지는 점에서 유리하다.
[제3 실시형태]
다음에, 도 7 내지 도 9를 참조하여, 제3 실시형태에 따르는 인증자/피인증자 및 그 인증 방법에 관해서 설명한다.
<구성예(메모리 시스템)>
도 7을 참조하여, 제3 실시형태에 관한 구성예에 관해서 설명한다.
도 7에 도시되는 바와 같이, 제3 실시형태는 NAND 플래시 메모리(10)가, ROM 영역(11-1B) 및 은닉 영역(11-2B)에, 복수 개의 XYsubE 및 복수 개의 XYsub를 각각 기억하는 점에서, 상기 제2 실시형태와 상이하다. 이 예에서, i와 j가 다른 경우, XYsub[i] ≠ XYsub[j], 및 XYsubE[i] ≠ XYsubE[j]이다. XYsubE는 XYsub를 암호화한 후, 정정 부호를 부가하여 얻어진 데이터이다.
XYsub는, XY와 같이, 기록 금지/판독 금지 영역(은닉 영역)(11-2B)에 기록되고, XYsubE는, XYE와 같이, 기록 금지/판독 허가 영역(ROM 영역)(11-1B)에 기록된다.
여기서, XYmain의 데이터 사이즈는, XYsub의 데이터 사이즈보다 크다(데이터사이즈: XYmain > XYsub). 또한, XYmain과 XYsub로 구성된 데이터는, 상술한 비밀 정보 XY에 대응한다.
상술한 바와 같이, 제3 실시형태에서는, XY의 세트에 덧붙여, XYsub[i] 및 XYsubE[i]의 세트를 더 구비하기 때문에, 비밀 정보 X 및 Y를 효율적으로 기록할 수 있는 점에서 유리하다. 상세에 관하여는 후술한다.
또한, NAND 플래시 메모리(10)는, 상기 XYsub를 기억하기 위한 데이터 캐시(12B), 및 XYmain과 XYsub를 비트마다 가산하기 위한 비트별 가산 모듈(C2)을 구비한다. 비트별 가산 모듈(C2)의 출력값은, 상술한 인증에 이용되는 XY 치에 대응한다. 이 예에서는, XYmain과 XYsub의 비트 길이가 다르기 때문에, 비트 가산 모듈(C2)에 XYsub의 반복 데이터가 적용된다.
예컨대, 본 도면에 도시된 바와 같이, 소정의 연산으로서는, 비트 가산이 생각될 수 있다. XYmain의 데이터 사이즈가 XYsub의 데이터 사이즈의 정수배인 경우, XYmain의 데이터를 기억하는 데이터 캐시로부터 XYmain이 연속적으로 전송되고, XYsub의 데이터를 기억하는 데이터 캐시로부터 XYsub가 연속적이고 또한 반복적으로 전송되는 구성이 생각될 수 있다. XYsub를 기억하는 데이터 캐시는 링 버퍼라고 생각할 수도 있다. 또한, 비트별 가산 외에도, XYmain과 XYsub의 결합치를 XY로서 이용할 수도 있고, XYmain과 XYsub의 인터리브 결합치를 XY로서 이용할 수도 있다. 또한, XYmain과 XYsub를 LFSR에 입력할 수도 있고 LFSR의 소정 레지스터의 값을 XY로서 이용할 수도 있다. 즉, 본 실시형태에서는 비트별 가산 모듈을 이용하고 있지만, 2개의 입력으로 구성되는 데이터를 XY로서 이용하는 연산 방법의 어느 것도 적용 가능하다.
마찬가지로, 호스트 장치(20)는, 판독한 XYsubE에 대응하기 위한, 정정 처리 모듈(21B), 복호 모듈(22B), 키 유지 모듈(23B), 데이터 기억 모듈(25B), 및 가산 모듈(C3)을 더 구비한다. 호스트 장치(20)는, 상기 구성에 의해, 마찬가지로, 에러 정정 처리를 실행하고, 대응하는 KEY_XYsub에 의해 복호함으로써 XYsub를 얻는다. 이에 따라, 호스트 장치와 NAND 플래시 메모리 사이에서, 비밀 정보 XYmain 및 XYsub를 공유할 수 있다. 여기서, 본 도면에 있어서는 KEY_XYmain과 KEY_XYsub는 다른 오브젝트(object)로서 도시되어 있지만, 이들은 실제로는 동일할 수도 있다. 또한, 각 XYsub[i]의 암호화에 이용되는 KEY_XYsub와 관련하여, i가 다른 경우, 다른 KEY_XYsub를 이용하는 것이 바람직하다. 또한, 호스트 장치(20) 및 메모리(10)는, XYmain과 XYsub를 이용하여 소정의 연산을 수행함으로써 얻어진 XY 치에 기초하여, 인증 처리를 실행한다.
<인증 플로우>
다음에, 도 8에 참조하여, 제3 실시형태에 따르는 인증 동작에 관해서 설명한다.
제3 실시형태에서는, NAND 플래시 메모리(10)내에는 XYmain에 덧붙여 XYsub가 기록되고, 또한 이들을 암호화하여 얻어진 XYmainE 및 XYsubE가 기록된다.
그러므로, 도면에 도시된 바와 같이, 대응하는 단계 S13에 있어서, 호스트(10)는, XYmainE 및 XYsubE를 추가로 판독하고 이들을 복호하여, 비밀 정보 XYmain 및 XYsub에 기초하여 비밀 정보 XY를 생성한다(Create XY). 후속해서, 호스트 장치(20)는, 비밀 정보 XYmain과 XYsub에서 도출된 정보를 이용하여, 유사한 인증을 실행한다.
또한, NAND 플래시 메모리(10)에서도 마찬가지로, 단계 S15에 있어서, 판독한 비밀 정보 XYmain 및 XYsub를 기초로 하여 비밀 정보 XY를 생성한다(Create XY). 이러한 점에서, 제3 실시형태는 상기 제2 실시형태와 상이하다.
<작용효과>
제3 실시형태에 관한 인증자/피인증자 및 그 인증 방법에 따르면, 상기 포인트 (I)∼(IV)를 개선할 수 있고, 적어도 상술한 (1)의 효과를 얻을 수 있다. 또한, 제3 실시형태에서는, 하기 (2)의 효과를 얻을 수 있다.
(2) 비밀 정보 X, Y를 효율적으로 기록할 수 있고, 기록 시간을 고속화할 수 있는 점에서 유리하다.
제3 실시형태에서는, NAND 플래시 메모리(10)가, 복수의 XYsub 및 복수의 XYsubE를 가지고, 호스트 장치(20)부터의 명령에 의해 XYsubE를 선택적으로 전송하며, 호스트 장치(20)부터의 명령에 의해 인증에 이용하는 XYsub를 선택적으로 설정하여, 선택된 XYsub와 XY를 소정의 연산으로 도출한 값에 의해 인증을 실행한다.
또한, 호스트 장치는, 자신이 유지하는 키(23B)에 대응하는 XYsubE를 선택적으로 판독하는 기능을 가지고, 그 XYsubE를 복호하는 기능(22B)을 가지며, 또한 자신이 유지하는 키(23B)를 소정의 조건 하에서 갱신하는 기능을 더 가지고, 선택한 XYsub와 XYmain을 소정의 연산으로 도출한 값에 의해 인증(30)을 실행한다.
상술한 바와 같이, XYmain의 세트에 덧붙여, XYsub[i] 및 XYsubE[i]의 세트를 더 구비하기 때문에, 비밀 정보 X 및 Y를 효율적으로 기록할 수 있는 점에서 유리하다.
보다 구체적으로는, 예컨대, 이것은 도 9에 예시된다. 도 9에 도시되는 바와 같이, NAND 플래시 메모리의 제조 공정에 있어서, XYmain, XYmainE, XYsub, XYsubE의 복수의 세트는, XY 생성 장치(XY GEN)에 의해 생성되어, 기록 장치(Writer)에 의해, 복수의 NAND 플래시 메모리(이 예에서는, Chip1∼Chip4)에 기록이 된다.
이 예에서, XYmain 및 XYmainE의 데이터는, 복수의 칩(Chip1∼Chip4)으로 구성되는 그룹(예컨대, 로트(lot))에서의 동일한 데이터일 수도 있다. 한편, XYsub 및 XYsubE는, 칩(Chip1∼Chip4)마다 다른 데이터(XYsub1∼XYsub4 및 XYsubE1∼XYsubE4)로 되는 것이 필요하다.
상술한 바와 같이, 제3 실시형태에서는, 데이터 기록 동작에 있어서, 데이터량이 많은 XYmain 및 XYmainE를 복수의 칩(Chip1∼Chip4) 사이에서 공통화한다. 그것에 의해, 메모리로의 데이터 기록 프로세스를 최적화할 수 있어, 데이터를 효율적으로 기록하는 것이 가능해진다.
XYmain 및 XYmainE를 하드와이어드 구성으로 구성하는 경우, 실제로 기록하는 데이터는, 데이터 사이즈가 작은 XYsub 및 XYsubE가 되어 기록 시간을 단축 가능하다. 또한, XYmain 및 XYmainE를 셀 상에 기록하는 경우에 있어서, 이들은 그룹 내에서 동일하기 때문에, NAND 플래시 메모리에 있어서의 데이터 기록 장치에 대하여 기록 데이터를 전송하는 시간을 단축 가능하다. 상술한 바와 같이, 기록 시간의 증가는, 비용의 증가로 되기 때문에, 제3 실시형태에 따르면, 제조 비용을 절감할 수 있다고 하는 메리트도 크다.
[제4 실시형태(다중 기록의 일례)]
다음에, 도 10 및 도 11을 참조하여, 제4 실시형태에 따르는 인증자/피인증자 및 그 인증 방법에 관해서 설명한다.
<구성예(메모리 시스템)>
도 10을 참조하여, 제4 실시형태에 관한 구성예에 관해서 설명한다.
제4 실시형태는, 메모리(10)의 은닉 영역(11-2)에, 복수의 XY[i]를 다중으로 복제하여 생성한 정보들 11-2A, 11-2B, 11-2C를 더 포함하는 점에서, 상기 제2 실시형태와 상이하다.
구체적으로는, 제2 실시형태에 있어서의 XY[i]를 복제하여 얻어진 데이터는, 도 10에 있어서, XY[i, 1], XY[i, 2],. . . , XY[i, n]에 의해서 표시되고, 1≤ i≤ m에 대하여 XY[i, 1] = XY[i, 2] =, …, = XY[i, n]이다. 또한, 1≤ j≤ n에 대하여 XY[1, j] ≠ XY[2, j] ≠, …, ≠ XY[m, j]이다.
이 예에서, XYE에는 ECC가 부가되어 있는 한편, XY에는 ECC이 부가되어 있지 않는다. 그러므로, NAND 플래시 메모리 내에서 셀로부터 판독한 데이터에 에러가 포함되어 있는 경우, NAND 플래시 메모리가 인증에 이용하는 XY의 완전성이 상실되는 것도 생각될 수 있다. 그러나, 본 실시형태에서와 같이, 복수의 XY[i]를 복제하여 생성된 정보들 11-2A, 11-2B, 11-2C가 더 포함되기 때문에, 검사 합 및 선택 모듈(12-0)은 상기 에러가 포함되어 있는지의 여부를 복제 데이터 간의 데이터 비교에 의해 검출할 수 있다.
그러므로, 본 실시형태의 메모리는, 이 실시형태는 XY[i]을 복제하여 생성된 정보들 11-2A, 11-2B, 11-2C에 대응하기 위한 검사 합 및 선택 모듈(Check sum & select)(12-0)을 더 구비하는 점에서, 제2 실시형태와 상이하다.
도 10에 있어서, 셀(11-2)로부터 로드된 적어도 2개 이상의 XY의 데이터 세트는 소정의 상술한 바와 같은 방법에 의해 비교되어, 에러가 포함되어 있는지의 여부가 검사된다. 에러가 포함되어 있었던 경우 또는 에러가 제거될 수 없는 경우에는, 다른 2개 이상의 XY의 데이터 세트를 다시 한번 로드하여, 마찬가지로 검사를 실행한다. 이것을 에러가 포함되어 있지 않을 때까지 또는 제거할 수 있는 데이터 세트가 발견될 때까지 반복한다. 그러한 데이터 세트가 발견되는 경우, 그것을 인증에 이용한다. 상기 소정의 방법의 일례로서는, 2개의 XY를 로드하여, 비트마다 XOR 치를 산출한 후, XOR 치가 모두 0인지에 관한 검사를 실행하는 방법이 생각될 수 있다. 이와 달리, 3개 이상의 XY를 로드하여, 다수결 판정에 의해서 비트마다 에러를 제거한 XY를 얻는 방법도 생각될 수 있다. 또한, 본 도면에 있어서는, XY의 복제 데이터가 전부 동일한 데이터라고 하고 있지만, 복제 데이터 중 홀수 번호의 데이터와 짝수 번호의 데이터의 극성이 반전하는 상보 관계에 있는 데이터를 형성하여 사전에 기록해 두는 방법을 채용하는 것도 생각될 수 있다. 이 경우에는, 상기 상보 관계에 있는 2개의 XY를 로드하여, 비트마다 XOR 치를 산출한 후, XOR 치가 모두 1인지에 관해 검사를 실행한다.
<인증 플로우>
다음에, 도 11을 참조하여, 제4 실시형태에 따르는 인증 동작에 관해서 설명한다.
도 11에 도시되는 바와 같이, 제4 실시형태에서는, NAND 플래시 메모리(10)의 은닉 영역(11-2)내에 복수의 XY가 다중 기록된다.
그러므로, 단계 S15에서, NAND 플래시 메모리(10)는, 적어도 2개의 XY를 판독하여, 이들을 비교하여, 에러를 포함하고 있지 않은 XY를 이용하여 인증을 실행한다(Load/compare XYs).
<작용효과>
제4 실시형태에 관한 인증자/피인증자 및 그 인증 방법에 따르면, 상기 포인트 (I)∼(IV)를 개선할 수 있고, 적어도 상술한 (1)의 효과를 얻을 수 있다.
또한, 제4 실시형태에 따르면, 메모리(10)의 은닉 영역(11-2)에, 복수의 XY[i]를 다중으로 복제하여 생성된 정보들 11-2A, 11-2B, 11-2C를 더 포함한다.
이 경우에는, XYE에는 ECC가 부가되어 있는 한편, XY에는 ECC가 부가되어 있지 않다. 그러므로, NAND 플래시 메모리 내에서 셀로부터 판독한 데이터에 에러가 포함되어 있는 경우, NAND 플래시 메모리가 인증에 이용하는 XY의 완전성이 상실되는 것도 생각될 수 있다.
그러나, 제4 실시형태에 따르면, 복수의 XY[i]를 복제하여 생성된 정보들 11-2A, 11-2B, 11-2C를 더 포함하기 때문에, 검사 합 및 선택 모듈(12-0)은 상기 에러가 포함되어 있는지의 여부를 복제 데이터 간의 데이터 비교에 의해 검출할 수 있다. 그 결과, 메모리(10) 내에서 셀로부터 판독한 데이터에 에러가 포함되어 있는 경우에도, 메모리(10)가 인증에 이용하는 XY의 완전성이 상실되는 것을 방지할 수 있다는 점에서 유리하다.
[제5 실시형태]
다음에, 도 12 및 도 13을 참조하여, 제5 실시형태에 따르는 인증자/피인증자 및 그 인증 방법에 관해서 설명한다.
<구성예(메모리 시스템)>
도 12를 참조하여, 제5 실시형태에 관한 구성예에 관해서 설명한다. 제5 실시형태에 관한 구성예는, 상기 제3 및 제4 실시형태를 조합시킨 것에 관한 일례이다.
도 12에 도시되는 바와 같이, 제5 실시형태에 관한 NAND 플래시 메모리(10)는, 은닉 영역(11-2)에, XYsub 및 XYsubE의 복제 데이터 XYsub[i, j] 및 XYsubE[i, j]를 또한 기록하는 점에서, 상기 제4 실시형태와 상이하다.
또한, 상기에 대응하기 위한 검사 합 및 선택 모듈(12-0B) 및 데이터 캐시(12B)를 더 구비한다.
<인증 플로우>
다음에, 도 13을 참조하여, 제5 실시형태에 따르는 인증 동작에 관해서 설명한다.
제5 실시형태에서는, NAND 플래시 메모리(10) 내에 또한 XYsub도 다중 기록되어 있다(XYsub[i, j] 및 XYsubE[i, j]).
그러므로, 단계 S15에서, NAND 플래시 메모리(10)는 또한, 적어도 2개의 XYsub를 판독하여, 이들을 비교하여, 에러를 포함하고 있지 않은 XYsub를 이용하여 인증을 실행한다(Load/compare XYs and XYsubs).
<작용효과>
제5 실시형태에 관한 인증자/피인증자 및 그 인증 방법에 따르면, 상기 포인트 (I)∼(IV)를 개선할 수 있고, 적어도 상술한 (1)의 효과를 얻을 수 있다.
또한, 제5 실시형태에 따르면, NAND 플래시 메모리(10)는 또한, 은닉 영역(11-2)에 XYsub 및 XYsubE의 복제 데이터 XYsub[i, j] 및 XYsubE[i, j]를 기록한다.
필요에 따라서, 본 실시형태의 같은 구성 및 방법을 적용하는 것이 가능하다.
[제6 실시형태]
다음에, 도 14 및 도 15를 참조하여, 제6 실시형태에 따르는 인증자/피인증자 및 그 인증 방법에 관해서 설명한다.
<구성예(메모리 시스템)>
도 14를 참조하여, 제6 실시형태에 관한 구성예에 관해서 설명한다.
제6 실시형태에서도 마찬가지로, NAND 플래시 메모리(10)가, 복수 개의 XY[i]를 복제하여 생성된 정보를 구비한다. 구체적으로는, 제2 실시형태에 있어서의 XY[i]를 복제하여 생성된 데이터는 도 14에 있어서 XY[i, 1], XY[i, 2], …, XY[i, n]에 의해서 표시되어 있고, 1 ≤ i ≤ m에 대하여 XY[i, 1] = XY[i, 2] = … = XY[i, n]이다. 또한, 1 ≤ j ≤ n에 대하여 XY[1, j] ≠ XY[2, j] ≠ … ≠ XY[m, j]이다.
이 예에서, XY 데이터를 복제하는 것은 제4 실시형태와 마찬가지이다. 그렇지만, 제6 실시형태에 있어서는, NAND 플래시 메모리(10)측에서는 복제 데이터의 비교 처리를 실행하지 않는다. 그 대신에, 호스트 장치(20)로 비교 처리를 실행한다. 이러한 점에서, 제6 실시형태는 제4 실시형태와 상이하다. 또한, 제6 실시형태는, 호스트 장치(20)가, 다수결 판정 모듈(Majority check)(30)을 구비하는 점에서, 제4 실시형태와 상이하다.
구체적으로는, NAND 플래시 메모리(10)는, 호스트 장치(20)에 의해 지정된 i에 따라서, XY[i, 1], XY[i, 2], …, XY[i, n] 중 적어도 2개를 로드하여, 각각의 XY에 대하여 상술한 인증 처리를 실행한다. 이 경우에, 각각의 XY에 대해서는 동일한 Nonce_N 및 동일한 Nonce_H를 이용하고, 또한 바이어스된 RNG에 의해서 생성된 ν에 관해서도 동일한 것을 적용한다.
NAND 플래시 메모리(10)의 송신 모듈(15)은, 복수의 XY에 대하여, 다른 파라미터가 동일한 조건으로 복수의 z(z[i, 1], z[i, 2],…, z[i, n])를 계산하여, 그것을 호스트 장치(20)에 전송한다.
호스트 장치는, 복수의 z(z[i, 1], z[i, 2],…, z[i, n])를 수신한 후, 다수 결 판정 모듈(31)에 의해, 다수결 판정을 실행하여, 단일의 z를 얻는다. 이 예에서, 각 z가 복수의 비트 요소로 구성되어 있는 경우, 압축 계산 모듈의 출력이 복수의 비트로 이루어지는 경우, 상기 다수결 판정이 비트 요소마다 실행된다.
호스트 장치는, 다수결 판정에 의해서 에러를 제거한 z를 얻은 후, 상술한 바와 같은 판정 처리(30)를 실행함으로써 NAND 플래시 메모리(10)를 인증한다.
<인증 플로우>
다음에, 도 15를 참조하여, 제6 실시형태에 따르는 인증 동작에 관해서 설명한다.
제6 실시형태에서는, NAND 플래시 메모리(10) 내에 다중 기록되어 있는 XY를 이용하여, NAND 플래시 메모리(10)가 복수의 Z를 계산하여, Z를 전송한다. 호스트 장치는 복수의 Z에 대하여 다수결 판정을 실행함으로써 단일의 Z를 얻어, 인증을 실행한다.
그러므로, 단계 S17에서, NAND 플래시 메모리(10)는, 계산한 복수의 Z 및 j를 호스트 장치(20)에 송신한다.
후속해서, 단계 S18에서, 호스트 장치(20)는, 복수의 Z의 다수결 판정(Majority check)을 실행하며, 이 점이 제4 실시형태와 상이하다.
<작용효과>
제6 실시형태에 관한 인증자/피인증자 및 그 인증 방법에 따르면, 상기 포인트 (I)∼(IV)를 개선할 수 있고, 적어도 상술한 (1)의 효과를 얻을 수 있다.
또한, 제6 실시형태에서는, NAND 플래시 메모리(10)가, 복수의 XY[i]를 복제하여 생성된 정보를 더 구비한다. 또한, 호스트 장치(20)가, 다수결 판정 모듈(Majority check)(30)을 구비한다.
따라서, 계산 자원에 제약이 있는 NAND 플래시 메모리(10)에서의 비교 처리의 부담을 경감할 수 있고, 계산 자원에 여유가 있는 호스트 장치(20)에 비교 처리(다수결 처리)(30)를 실행하도록 의뢰할 수 있다. 그 결과, NAND 플래시 메모리(10)의 비용 증가를 억제할 수 있어, 에러의 제거가 가능해지는 점에서 유리하다.
[제7 실시형태]
다음에, 도 16 및 도 17을 참조하여, 제7 실시형태에 따르는 인증자/피인증자 및 그 인증 방법에 관해서 설명한다.
<구성예(메모리 시스템)>
도 16을 참조하여, 제7 실시형태에 관한 구성예에 관해서 설명한다. 제7 실시형태는, 상기 제3 및 제6 실시형태를 조합시킨 일례에 관한 것이다.
도 16에 도시된 바와 같이, NAND 플래시 메모리(10)는, XYsub 및 XYsubE에 관한 복제 데이터(11-2B 및 11-1B)를 또한 기억한다. 상기 제6 실시형태와 같이, 복수의 XY에 대한 인증 데이터 Z를 산출하여 산출 모듈(15)에 의해 호스트 장치(20)에 전송하여, 호스트 장치(20)에서 다수결 검사(31)를 실행한다.
<인증 플로우>
다음에, 도 17을 참조하여, 제7 실시형태에 따르는 인증 동작에 관해서 설명한다.
제7 실시형태에서는, NAND 플래시 메모리(10) 내에, 다중 기록되어 있는 XYmain 및 XYsub를 이용하여, NAND 플래시 메모리(10)가 복수의 Z를 계산하여, Z를 전송한다. 호스트 장치는 복수의 에 대하여 다수결 검사함으로써 단일의 Z를 얻어, 인증을 실행한다.
그러므로, 단계 S11에서, 호스트 장치(20)는, 다중 기록되어 있는 XYmain 및 XYsub의 판독 요구(Read XYmainE and XYsubE)를 발행한다.
후속해서, 단계 S12에서, NAND 플래시 메모리(10)는, 다중 기록되어 있는 XYmain 및 XYsub를 판독하여(Load XYmainE and XYsubE), 호스트 장치(20)에 전송한다(XYmainE and XYsubE).
<작용효과>
제7 실시형태에 관한 인증자/피인증자 및 그 인증 방법에 따르면, 상기 포인트 (I)∼(IV)를 개선할 수 있고, 적어도 하기 (1)의 효과를 얻을 수 있다.
또한, 제7 실시형태에 따르면, NAND 플래시 메모리(10)가, XYsub 및 XYsubE 에 관한 복제 데이터(11-2B 및 11-1B)를 또한 기록한다. 상기 제6 실시형태와 같이, 복수의 XY에 대한 인증 데이터 Z를 산출하여 산출 모듈(15)에 의해 호스트 장치(20)에 전송하여, 호스트 장치(20)에서 다수결 검사(31)를 실행한다.
이와 같은 방식으로, 필요에 따라, 본 실시형태를 적용하는 것이 가능하다.
[제8 실시형태]
다음에, 도 18 내지 도 22를 참조하여, 제8 실시형태에 따르는 인증자/피인증자 및 그 인증 방법에 관해서 설명한다.
<구성예(메모리 시스템)>
도 18을 참조하여, 제8 실시형태에 관한 구성예에 관해서 설명한다. 제8 실시형태는, 제6 실시형태에서 호스트 장치(20)마다 이용하는 XY 치의 조합을 다르게 한 방법을 제공한다.
도 18에 도시된 바와 같이, 제8 실시형태는 NAND 플래시 메모리(10)가 키 천이 레코드로 구성된 데이터 구조를 갖는 키 정보(Key Sequence Information)(80)를 사용자 영역(Other area)(11-3)에 기억하는 점에서, 상기 제6 실시형태와 상이하다. 또, 키 정보(Key Sequence Information)(80)는 반드시 사용자 영역(11-3)에 저장될 필요는 없다. 키 정보(Key Sequence Information)(80)는 ROM 영역(11-1)에 저장될 수도 있고, 혹은 데이터 기록 및 데이터 소거 동작 중 적어도 하나가 금지된 영역에 저장될 수도 있다.
또한, ROM 영역(11-1)에 기록되어 있는 컨테이너는, 제6 실시형태에서와 같이 복수의 XYE를 기억하도록 구성되어 있다. 그러나, 제6 실시형태와는 달리, 복수의 XYE는 행렬 형태의 데이터 구조를 가지고, 호스트 장치(20)에서의 이용 방법이 다르다. 그러므로, 이하의 설명에서는 복수의 XYE를 "XYE Matrix 81"라고 칭한다. 또, 여기서 데이터 구조는 행렬 데이터 구조인 것을 상정하지만, 셀 어레이(11)에서의 실제의 데이터 배치가 행렬 구조를 가질 필요는 없다. 하기 XY Matrix 82에도 마찬가지로 적용된다.
또한, 은닉 영역(11-2)에 기록되어 있는 XY 데이터도, 제6 실시형태에서와 같이 복수의 XY를 기억하도록 구성되어 있다. 그러나, 제6 실시형태와는 달리, 복수의 XY는 행렬 형태의 데이터 구조를 가지고, 호스트 장치(20)에서의 이용 방법이 다르다. 그러므로, 이하의 설명에서는 "XY Matrix 82"라고 칭한다. 여기서, XY Matrix 82는, 필요에 따라서 다중 기록(Recorded multiple times)된다. 다중 기록의 목적은, 상술한 바와 같이, 데이터의 신뢰성을 보증하기 위해서이며, 그 이용 방법에도 마찬가지로 적용된다. 또한, 다중 기록된 XY Matrix 82는, 다른 페이지에 또는 다른 블록에 배치될 수도 있다.
본 실시형태는, 호스트 장치(20)가, 키 정보(Key Sequence Information)(80)를 취급하기 위해서, 분석 및 선택 모듈(84), 필터 및 복호 모듈(86), 및 필터 및 다수결 검사 모듈(88)을 구비하고, 호스트 장치(20)가 장치 인덱스(83) 및 장치 키(Device Key)(23)를 이용하여, 슬롯 키(Slot Keys corresponding Device Index)(85) 및 슬롯 인덱스 시퀀스(Slot Index Sequence)(87)를 얻는 점에서, 상기 실시형태들과 상이하다.
장치 인덱스(Device Index)(83)는, NAND 플래시 메모리(10)로부터 판독되는 키 정보(Key Sequence Information)(80)로부터, 이 호스트 장치(20)에 대응하는 데이터 레코드를 선택하기 위한 인덱스이다. 호스트 장치(20)에 있어서, 장치 인덱스(Device Index)(83)의 저장 장소는 임의이지만, 장치 인덱스(Device Index)(83)는 용이하게 노출되지 않는 장소에 저장하는 것이 요구된다.
분석 및 선택 모듈(84)은, NAND 플래시 메모리(10)로부터 판독되는 키 정보(Key Sequence Information)(80)로부터, 자신의 장치 인덱스(Device Index)(83)에 대응하는 데이터 레코드를 선택한다. 선택된 데이터 레코드는, 복호 모듈(22)에 출력되어, 장치 키(Device Key)(23)를 이용하여 복호된다. 호스트 장치(20)에 있어서, 장치 키(Device Key)(23)의 저장 장소는 임의이지만, 장치 키(Device Key)(23)는 용이하게 노출되지 않는 장소에 저장하는 것이 요구된다.
슬롯 키(Slot Keys corresponding Device Index)(85)는, 장치 인덱스(Device Index)(83)에 대응하는 데이터 레코드를 장치 키(Device Key)(23)로 복호하여 얻어진 데이터에 포함된다. 슬롯 키(Slot Keys corresponding Device Index)(85)는, 장치 인덱스(83)에 대응하는 슬롯 키 데이터이다.
슬롯 인덱스 시퀀스(Slot Index Sequence)(87)는, 슬롯 키(Slot Keys corresponding Device Index)(85)와 같이 장치 인덱스(Device Index)(83)에 대응하는 데이터 레코드를 장치 키(Device Key)(23)로 복호하여 얻어진 데이터에 포함된다. 슬롯 인덱스 시퀀스(Slot Index Sequence)(87)는, 각각의 슬롯키(Slot Keys corresponding Device Index)(85)에 대응하는 인덱스 데이터이다.
필터 및 복호 모듈(86)은, NAND 플래시 메모리(10)로부터 판독한 ECC 처리가 행해진 후의 XYE Matrix 81로부터 슬롯 인덱스 시퀀스(Slot Index Sequence)(87)에 대응하는 요소를 선택하여, 슬롯 키(Slot Keys corresponding Device Index)(85)를 이용하여 복호 처리를 행한다. 이에 따라, 호스트 장치(20)는 비밀 정보 XY Sequence(24)를 취득한다.
필터 및 다수결 검사 모듈(88)은, NAND 플래시 메모리(10)로부터 수신한 연산 결과로부터, 상기 데이터 레코드 내의 슬롯 인덱스 시퀀스(Slot Index Sequence)(87)에 대응하는 연산 결과 z[i]를 선택한다.
판정 모듈(30)은, 생성한 데이터 C와 필터 및 다수결 검사 모듈(88)에 의해 선택된 연산 결과 z[i]를 이용하여, 판정 처리를 실행한다.
<데이터 구조에 관해서>
도 19를 참조하여, 상기 키 정보(Key Sequence Information)(80), XYE Matrix 81, XY Matrix 82의 데이터 구조에 관해서 설명한다.
우선, 도 19의 부분 (a)에 도시된, 은닉 영역(11-2)에 기록되는 XY Matrix 82에 관해서 설명한다. XY Matrix 82는, 소정 데이터 단위마다 번호가 부여된 복수의 XY 데이터(XY(1,1) - XY(n,m))로 구성된다. 도시하는 예에서는, XY Matrix 82는, 16 x 16의 배열 구조를 가지고, 각 요소가 단일의 XY 데이터를 구성한다. XY 데이터가 64 바이트로 구성되어 있는 경우, XY Matrix 82는, 64 x 16 x 16 바이트로 구성된다.
다음에, 도 19의 부분 (b)에 도시된, 컨테이너 내에 유지되어 있는 XYE Matrix 81에 관해서 설명한다. 상기 컨테이너는, 상기 XY 행렬의 각 요소들을 암호화함으로써 얻어지는 복수의 암호화 XY 데이터(Enc(Ks(1,1), XY(1,1)) - Enc(Ks(n,m), XY(n,m)))로 구성된다. XY Matrix 82와 같이, XYE Matrix 81은, 16 x 16의 배열 구조를 가지고, 각 요소가 단일의 XYE 데이터를 구성한다. 또한, 각각의 요소는 다른 키에 의해서 암호화되어 있다. 여기서, 암호화에 이용하는 키를 "슬롯 키(Slot Key(Ks))"라고 칭하고, 동일 번호(Index)가 할당된 슬롯 키(Slot Key(Ks))는 동일 번호(Index)가 할당된 XY 데이터의 암호화에 이용된다. 구체적으로는, XYE Matrix 81 내의 각 요소 XYE(i,j)는, XYE(i,j) = Enc(Ks(i,j), XY(i,j))의 관계를 갖는다.
다음에, 도 19의 부분 (c)에 도시된, 키 정보(Key Sequence Information)(80)에 관해서 설명한다. 키 정보(Key Sequence Information)(80)는, 호스트 장치(20)가 갖고 있는 장치 키(Device Key(Kd))(23) 및 장치 인덱스(Device Index)(83)에 대응하는 복수의 데이터 레코드로 구성된다. 각 데이터 레코드는, 장치 인덱스(Device Index)(83)에 대응하는 데이터와, 그 장치 인덱스(Device Index)(83)에 대응하는 장치 키(Device Key(Kd))(23)에 의해서 암호화된 암호화 슬롯 키 시퀀스(Encrypted Slot Key Sequence)를 포함한다.
암호화 슬롯 키 시퀀스(Encrypted Slot Key Sequence)는, 슬롯 인덱스(Slot Index)를 장치 키(Device Key(Kd))(23)에 의해서 암호화함으로써 얻어지는 데이터 Enc(Kd, Index)와, 상기 슬롯 인덱스에 대응하는 슬롯 키(Slot Key(Ks))를 장치 키(Device Key(Kd))(23)에 의해서 암호화함으로써 얻어지는 데이터 Enc(Kd, Ks)로 구성된다. 본 예에 있어서는 XYE Matrix 81의 각 행으로부터 하나의 슬롯 인덱스(Slot Index) 및 슬롯 키(Slot key(Ks))를 선택하는 구조를 채용한다.
또, XY Matrix 82에 있어서, 단일의 XY 데이터의 사이즈는 임의이며, 상기 64 바이트에 한정되지 않는다. 따라서 XY Matrix 82 전체의 사이즈도 임의이며, XY Matrix 82는 그 사이즈에 따라서 셀 어레이(11) 상에서 동일 페이지 내에 기억할 수도 있고, 또는 복수의 페이지에 기억할 수도 있으며, 또는 동일 블록 내에 기억할 수도 있고, 복수의 블록 내에 기억할 수도 있다. 마찬가지로 XYE Matrix 81에 관해서도 그 사이즈에 따라서 셀 어레이(11) 상에서 동일 페이지 내에 기억할 수도 있고, 또는 복수 페이지에 기억할 수도 있으며, 또는 동일 블록 내에 기억할 수도 있고, 또는 복수의 블록에 기억할 수도 있다.
<비밀 정보 공유 방법의 구체예>
다음에, 도 20을 참조하여, 상기 키 정보(Key Sequence Information)(80)를 이용하여 비밀 정보를 공유하는 방법의 구체예에 관해서 설명한다. 호스트 장치(20)는, 호스트 장치(20) 자신이 갖고 있는 장치 인덱스(Device Index)(83)에 대응하는 데이터 레코드를, NAND 플래시 메모리(10)로부터 판독한 키 정보(Key Sequence Information)(80)로부터 선택한다. 본 예에서는, 판독한 키 정보(Key Sequence Information)(80)로부터, 장치 인덱스(Device index 1)에 대응하는 암호화된 데이터 레코드(Encrypted Slot Key Sequence 1)가 선택된다.
후속해서, 복호 모듈(22)은, 장치 키(Kd1)(23)를 이용하여, 선택된 데이터 레코드(Encrypted Slot Key Sequence 1)를 복호한다. 그 결과, 슬롯 인덱스(Slot Index)및 슬롯키(Slot Key(Ks))의 시퀀스인 Sequence((1, m, …, 2) : (XY(1,1), XY(2,m), …, XY(n,2))를 얻을 수 있다. 여기서, 슬롯 인덱스(Slot Index)의 천이를 나타내는 Sequence(1, m, …, 2)이 슬롯 인덱스 시퀀스(Slot Index Sequence)(87)가 된다.
그 후, 도 20에서 파선에 의해 나타내는 바와 같이, 필터 및 복호 모듈(86)은, NAND 플래시 메모리(10)로부터 송신되는 XYE Matrix 81의 각 행으로부터, 슬롯 인덱스 시퀀스(Slot Index Sequence)(87)에 대응하는 요소를 선택하고, 슬롯 인덱스(Slot Index)에 대응하는 슬롯 키(Slot Key(Ks))에 의해 복호하여, XY Sequence(24)를 취득한다.
후속해서, 여기서 얻어진 XY Sequence(24)에 기초하여, 호스트 장치(20) 내의 필터 및 다수결 검사 모듈(88)은, NAND 플래시 메모리(10)로부터 복귀된 Z를 검사한다. 이 검사에 있어서, NAND 플래시 메모리(10)는, 호스트 장치(20)가 취득한 XY Sequence(24)에 대응하는 Z만을 복귀시키는 것은 아니고, XY Matrix 82 내의 모든 요소에 대응하는 Z도 복귀시킨다. 그러므로, 필터 및 다수결 검사 모듈(88)은, 자신이 얻은 XY Sequence(24) 및 슬롯 인덱스 시퀀스(Slot Index Sequence)(87)에 대응하는 Z만을 필터링 및 선택하여, 이 Z에 대해서만, 판정 모듈(30)에 의해 인증 처리를 실행한다.
<키 정보(Key Sequence Information)(80)의 배포 방법에 관해서>
다음에, 도 21을 참조하여, 키 정보(Key Sequence Information 80)의 배포 방법에 관해서 설명한다. NAND 플래시 메모리(10)에는, NAND 플래시 메모리(10)의 제조 시에 XY Matrix 82 및 XYE Matrix 81이 기록된다. 이 경우에, "제조시"란 광의이다. 전 공정에 있어서 XY Matrix 82 및 XYE Matrix 81은 웨이퍼 상태로 있는 모든 칩에 대하여 병렬로 기록될 수도 있고, 또는 후속 공정에 있어서 개편화(diced), 패키징된 각 칩에 대하여 기록될 수도 있다. XY Matrix 82 및 XYE Matrix 81에 대응하는 키 정보(Key Sequence Information)(80)는, XY Matrix 82 및 XYE Matrix 81과 동시에 기록될 수도 있고, 또는 상이한 타이밍에 기록될 수도 있다.
예컨대, NAND 플래시 메모리(10)를 구입하여, 메모리 카드를 제조하는 카드 제조회사가, 키 정보(Key Sequence Information)(80)를 NAND 플래시 메모리(10)에 기록할 수도 있고, 키 정보(Key Sequence Information)(80)를 배포하는 서버(Key Matrix Distributor)가 네트워크를 통해, 키 정보(Key Sequence Information)(80)를 NAND 플래시 메모리(10)에 기록할 수도 있다.
어느 경우에 있어서도, NAND 플래시 메모리(10) 내부에는, XY Matrix 82 및 XYE Matrix 81에 구속되는 IDm이 기록되어 있다. 카드 제조회사 혹은 서버는 그 IDm에 대응하는 Key Sequence Information(80)를 데이터베이스(Key Matrix database)f로부터 선택하여, Key Sequence Information(80)를 NAND 플래시 메모리(10)에 기록한다. 이 경우에, IDm은 NAND 플래시 메모리(10)의 식별자이며, Key Sequence Information(80)에 구속되는 정보이다. NAND 플래시 메모리(10)의 제조와 메모리카드의 제조가 동일 회사에서 행해지더라도, NAND 플래시 메모리(10)의 제조 장소와 메모리 카드의 제조 장소가 다른 경우도 상기와 마찬가지로 적용된다.
여기서, 호스트 장치에 크랙(crack)이 생기지 않은 경우, 키 정보(Key Sequence Information)(80)는 모든 호스트 장치의 데이터 레코드를 포함하고 있다. 한편, 호스트 장치에 크랙이 생긴 경우, 예를 들면, 호스트 장치 B(Host B)에서 크랙이 생긴 경우에는, 이 호스트 장치에 대한 레코드가 키 정보(Key Sequence Information)(80)에는 포함되지 않는 형태로 배포한다(Exclude the recorded hacked device B). 이에 따라, 크랙이 생긴 호스트 장치(Host B)로부터 XY Sequence가 유출하는 것을 더욱 방지할 수 있게 된다.
상기한 예에서는, XY Sequence를 다르게 한 단위로서 호스트 장치(디바이스)를 설명하였다. 그렇지만, 실제의 운용에 있어서는, 그러한 단위는 복수의 장치로 구성되는 그룹, 예를 들면, 동일 모델 번호의 장치들의 장치 그룹, 동일 제조회사에 의해서 제조된 장치들의 장치 그룹, 장치의 실장 방법(하드웨어 실장, 소프트웨어 실장, 하드웨어 및 소프트웨어 실장)에 의해 카테고리 나눠진 장치 그룹, 장치의 사용자(일반 사용자, 업무 사용자, 또는 서버 내의 처리장치)에 의해 카테고리 나눠진 장치 그룹, 또는 상기의 조합일 수도 있다.
<인증 플로우>
다음에, 도 22a를 참조하여, 제8 실시형태에 따르는 인증 동작에 관해서 설명한다.
제8 실시형태에서는, 호스트 장치(20)는, NAND 플래시 메모리(10) 내에 기록되어 있는 키 정보(Key Sequence Information)(80)를 판독하고, 자신의 장치 인덱스(Device Index)에 대응하는 데이터 레코드를 선택한 후, 이 레코드를 장치 키(Device Key)에 의해서 복호함으로써, 슬롯 키(Slot Keys) 및 슬롯 인덱스(Slot Indexes)를 취득한다.
인증이 개시(Start)하면, 단계 S31에서, 호스트 장치(20)는, NAND 플래시 메모리(10)로 키 정보(Key Sequence Information)(80)의 판독 명령(Read Key Sequence Information)을 전송한다. 여기서는 컨트롤러가 호스트 장치(20)와 NAND 플래시 메모리(10)를 중개하는 예를 예시하고 있기 때문에, 호스트 장치(20)로부터 컨트롤러로 전송하는 명령 체계와, 컨트롤러로부터 실제로 NAND 플래시 메모리로 전송하는 명령 체계는 다르거나, 동일할 수도 있다.
그 후, 단계 S32에서, NAND 플래시 메모리(10)는, 상기 판독 명령에 따라서, 키 정보(Key Sequence Information)(80)를 사용자 영역(11-3)으로부터 로드하여(Load Key Sequence Information), 이 키 정보(Key Sequence Information)(80)를 호스트 장치(20)로 전송한다. 판독 명령은 키 정보(Key Sequence Information)(80)가 기록되어 있는 어드레스를 포함하고 있어도 되고, 포함하고 있지 않아도 된다. 판독 명령이 이 어드레스를 포함하고 있지 않은 경우, NAND 플래시 메모리는 자체적으로 소정의 내부 어드레스를 생성하여 키 정보(Key Sequence Information)(80)를 취득한다.
후속해서, 단계 S33에서, 호스트 장치(20)는, 전송된 키 정보(Key Sequence Information)(80)로부터, 자신의 장치 인덱스(Device Index)에 대응하는 데이터 레코드를 선택한 후에, 이 레코드를 장치 키(Device Key)에 의해서 복호하여, 슬롯키(Slot Keys) 및 슬롯 인덱스(Slot Indexes)를 추출한다(Retrieve Key Sequence).
그 후, 단계 S11에서, 호스트 장치(20)는, NAND 플래시 메모리(10)로 XYE Matrix 81의 판독 명령(Read XYE)를 전송한다. 판독 명령(Read XYE)는 판독 명령(Read Key Sequence Information)과 다른 커맨드일 수도 있고, 동일한 커맨드를 사용하여 다른 어드레스를 입력함으로써 양자를 구별할 수도 있다.
후속해서, 단계 S12에서, NAND 플래시 메모리(10)는, 상기 판독 명령에 따라서, XYE Matrix 81을 ROM 영역(11-1)으로부터 로드하여(Load XYE), 이 XYE Matrix 81을 호스트 장치(20)로 전송한다.
그 후, 단계 S13에서, 호스트 장치(20)는, 상기 슬롯 인덱스(Slot Indexes)에 대응하는 XYE 요소를, 대응하는 슬롯 키(Slot Key)로 복호하여, XY Sequence(24)를 얻는다.
후속해서, 단계 S14에서, 호스트 장치(20)는, XY Matrix 80의 인덱스 번호 (i) 및 난수(Nonce_H)와 함께, NAND 플래시 메모리(10)에 인증 요구를 전송한다(Request authentication). 여기서, 인덱스 번호는 슬롯 인덱스, 또는 XY 행렬의 행이나 열에 해당하는 번호이다.
그 후, 단계 S15∼S17에서, NAND 플래시 메모리(10)는, 은닉 영역(11-2)에 기록되어 있는 XY Matrix 80을 이용하여, 상기 XY Matrix 80의 인덱스 번호에 해당하는 XY를 이용함으로써 복수의 Z를 계산하여, 이 Z를 난수(Nonce_N)와 함께 호스트 장치(20)에 전송한다.
후속해서, 단계 S18∼S23에서, 호스트 장치(20)는, 호스트 장치(20) 자신이 갖고 있는 상기 슬롯 인덱스 시퀀스(Slot Index Sequence)에 따라서, 판독한 데이터를 필터링함으로써 단일의 Z를 얻고, 유사한 인증을 실행한다.
<작용효과>
제8 실시형태에 관한 인증자/피인증자 및 그 인증 방법에 따르면, 상기 포인트 (I)∼(IV)를 개선할 수 있고, 적어도 하기의 효과를 얻을 수 있다.
제8 실시형태에서는, NAND 플래시 메모리(10)가, 호스트 장치(20)에 사용되는 키 천이 레코드로 구성된 데이터 구조를 갖는 키 정보(Key Sequence Information)(80)를 구비한다. NAND 플래시 메모리(10)는, 키 정보(Key Sequence Information)(80)에 대응하는 방식으로, 행렬 데이터 구조의 비밀 정보 XY Matrix 82 및 이 비밀 정보 XY Matrix 82을 암호화함으로써 생성되는 XYE Matrix 81을 구비한다.
따라서, 우선, 첫째로, 개별 호스트 장치(20)마다 이용하는 키 정보(Key Sequence Information)(80)의 값을 변경할 수 있으므로, 중간자 공격에 대한 내성을 향상시킬 수 있다. 구체적으로는, 어떤 XY 데이터를 인증에 이용하고 있느냐를 불가시화하는 효과가 있는 점에서 유리하다.
둘째로, 호스트 장치(20)로부터 XYE Matrix 81을 복호하는 키가 유출하여, 그 후에 XY Matrix 82의 값이 노출된 경우이더라도, 호스트 장치(20) 간에 이용하고 있는 키 정보(Key Sequence Information)(80)가 다르다. 그러므로, 인증 시스템 전체에 부여하는 시큐리티 보호의 영향을 저감할 수 있는 점에서 유리하다.
구체적으로는, 다른 실시형태에 있어서는, 각 호스트 장치(20)는, XYE Matrix의 각 행을 복호하기 위한 KEY[i]를 갖는다, 즉 각 호스트 장치(20)를 글로벌 시크리트(global secret)로서 취급하고 있었다. 그러므로, 하나의 호스트 장치(20)가 크랙되어 키가 유출되는 경우, 이 키를 이용하여 암호화된 XYE Matrix의 행의 XY 치는 전부 노출되어 버린다. 이 경우를 대비하여, XYE는, 복수의 행 및 이들 행에 대응하는 KEY에 의해 암호화되어 있다. 그렇지만, 비밀을 유지할 수 있는 것은 몇몇 행의 호스트 장치의 크랙에 대해서만이다. 몇몇 행의 수에 도달하여 버린 경우에는 인증 시스템 전체가 붕괴되어 버린다.
그러나, 제8 실시형태에서는, 행수 x 열수의 요소로부터 인증에 이용하는 XY Sequence를 선택할 수 있는 조합의 수로, 최대 (16*16!)/(16*16-16!)가 확보할 수 있다. 그러므로, 호스트 장치(20)가 크랙되어, 이 디바이스의 XY Sequence 데이터가 노출된 경우이더라도, 다른 호스트 장치에 대한 영향은 감소될 수 있고, 또한 인증 시스템 전체가 붕괴되기까지의 크랙 마진이 향상될 수 있다.
보다 구체적으로는, 제8 실시형태와 제2 실시형태의 경우에 있어서의 시간과 시스템 마진 간의 관계를 도시한 도 22b를 참조하여 설명한다. 도 22b에서 파선으로 나타내는 제2 실시형태의 경우에는, 비밀 정보가 L회(예컨대, 수 회 정도) 누설했을 때의 누설도가 선형으로 증가하여 간다. 한편, 실선으로 나타내는 제8 실시형태에서는, 디바이스들 간에 비밀 정보의 중복 성분이 있기 때문에, 누설도가 제2 실시형태에서보다도 낮다. 또한, 비밀 정보가 M회(예컨대, 약 10회 정도) 누설했을 때의 시스템 마진은, 제2 실시형태에서는 M회가 비밀 정보의 행 수의 상한으로 설정한 경우 모든 비밀이 누설한 것에 해당한다. 이 경우에는, 치환할 수 있는 비밀 정보가 부족하기 때문에 시스템이 붕괴된다. 한편, 실선으로 나타내는 제8 실시형태의 경우에 있어서는, 비밀 정보가 M회(예컨대, 약 10회 정도) 누설했을 때이더라도, 비밀 누설도의 상승은 선형이 아니며, 그에 따라 파선으로 나타내는 참고예보다도 충분한 시스템 마진을 확보할 수 있어, 제품으로서의 비밀 유지의 시큐리티의 허용도를 충분히 만족하는 것이 가능하다.
상술한 바와 같이, 본 실시형태는, 비밀 누설의 위험도를 분산할 수 있는 점에서, 상기 실시형태와 상이하다. 그 때문에, 예컨대, 실선으로 나타내는 제8 실시형태의 경우에는, 비밀 정보가 N회(예컨대, 수십 회 정도) 누설되어, 제품으로서의 허용도가 만족할 수 없게 되는 제품 수명의 시점 t3(예컨대, 약 10년 정도) 이전에, 그 제품의 세대의 시큐리티의 누설도를 충분히 만족시키도록 설계하면 충분하다.
더욱이, 노출된 XY Sequence에 의해 크랙된 호스트 장치(디바이스)는 확인 가능하다. 한편, 크랙된 디바이스가 판명된 경우, 키 정보(Key Sequence Information)(80)로부터 이 디바이스가 갖는 장치 키에 의해 암호화된 데이터 레코드를 배제한다. 그것에 의해, 크랙된 디바이스가 무효화가 가능해져, 신규로 제조된 NAND 플래시 메모리(10)의 XY 행렬의 은닉성은 담보할 수 있다. 이와 같은 방식으로, 비밀이 노출된 데이터 레코드를 포함하고 있지 않음으로써, 차세대로의 비밀 누설을 방지할 수 있고, 세대 간의 은닉성을 향상할 수 있는 점에서 유리하다.
상술한 바와 같이, 제8 실시형태에 따르면, 중간자 공격에 대한 내성이 향상될 수 있고, 디바이스마다 도출할 수 있는 XY Sequence를 개별화함에 의하여 XY 치가 노출될 때의 영향이 감소될 수 있으며, 크랙된 호스트 장치가 확인 가능해지고, 크랙된 호스트 장치 키가 무효화될 수 있는 점에서 유리하다.
[제9 실시형태]
다음에, 도 23 내지 도 27을 참조하여, 제9 실시형태에 따르는 인증자/피인증자 및 그 인증 방법에 관해서 설명한다.
<구성예(메모리 시스템)>
우선, 도 23을 참조하여, 제9 실시형태에 따르는 메모리 시스템의 구성예에 관해서 설명한다. 제9 실시형태는, 상기 제7 실시형태와 같이, XYsub 82B 및 XYsubE 81B를 이용하는 점에서, 제8 실시형태와 상이하다.
도 23에 도시되는 바와 같이, 제9 실시형태의 NAND 플래시 메모리(10)는, 제8 실시형태의 NAND 플래시 메모리(10)와는, XYsub 82B 및 XYsubE 81B를 더 기억하고 있는 점에서 상이하다. 여기서, XYsub 82B 및 XYsubE 81B의 각각은 하나의 경우 또는 복수의 경우가 있다. 더욱이, 복수의 XYsub 82B 및 XYsubE 81B의 경우에는, 열 구조를 채용하는 경우와 행렬 구조를 채용하는 경우가 가능하다.
행렬 데이터(1) ("단일"의 경우)
다음에, 도 24를 참조하여, XYsub 82B 및 XYsubE 81B의 각각이 단일의 경우 에 관해서 설명한다.
도 24의 부분 (a)에 도시한 바와 같이, 단일의 XYsub 82B가, NAND 플래시 메모리(10) 내에 내부 처리용의 은닉 영역(11-2)에 기록되어 있다.
도 24의 부분 (b)에 도시한 바와 같이, 컨테이너에는, 상기 XYsub를 슬롯 키(Ks_sub)에 의해서 암호화하여 생성된 단일의 데이터 XYsubE(Enc(Ks_sub, XYsub)) 81B가 기록되어 있다.
도 24의 부분 (c)에 도시한 바와 같이, 키 정보(Key Sequence Information)(80)에는 상기 슬롯 키(Ks_sub)를 장치 키에 의해서 암호화하여 얻은 단일의 데이터(Encrypted Sub Slot Key) 80B가 포함된다.
행렬 데이터(2) (열 구조의 경우)
다음에, 도 25를 참조하여, 열구조를 채용하는 복수의 XYsub를 이용하는 경우에 관해서 설명한다.
도 25의 부분 (a)에 도시한 바와 같이, 본 예에 있어서, 열 구조를 갖는 복수의 XYsub(XYsub(1), XYsub(2), …, XYsub(n)) 82B가, NAND 플래시 메모리(10) 내의 내부 처리용의 은닉 영역(11-2)에 기록되어 있다.
도 25의 부분 (b)에 도시한 바와 같이, 컨테이너(11-1)에는, 각 XYsub를 슬롯 키(Ks_sub)에 의해서 암호화하여 얻은 복수 열의 데이터 XYsubE(Enc(Ks_sub(1), XYsub(1)), …, Enc(Ks_sub(n), XYsub(n)))가 기록되어 있다.
도 25의 부분 (c)에 도시한 바와 같이, 키 정보(Key Sequence Information)(80)에는, 상기 슬롯 키(Ks_sub)를 장치 키에 의해서 암호화하여 얻은 열 구조의 데이터(Encrypted Sub Slot Key 1, …, Encrypted Sub Slot Key n)(80B)가 포함된다.
행렬 데이터(3) (행렬 구조의 경우)
다음에, 도 26을 참조하여, 행렬 구조를 채용하는 복수의 XYsub를 이용하는 경우에 관해서 설명한다.
도 26의 부분 (a)에 도시한 바와 같이, 제8 실시형태에 있어서 설명한 XY에 부수되는 방식으로, XYsub 행렬 82B가, NAND 플래시 메모리(10) 내의 내부 처리용의 은닉 영역(11-2)에 기록되어 있다.
도 26의 부분 (b)에 도시한 바와 같이, 컨테이너(11-1)에는, 각 XYsub(i, j)를, XY(i, j)의 암호화에 이용한 슬롯 키 Ks(i, j)에 의해서 암호화하여 얻은 행렬 구조의 데이터 XYsubE Array(Enc(Ks(1,1), XYsub(1,1)), …, Enc(Ks(n,m), XYsub(n,m))(81B)가 기록되어 있다.
도 26의 부분 (c)에 도시한 바와 같이, 키 정보(Key Sequence Information)(80)는 이미 XY(i, j)의 암호화에 이용한 슬롯키 Ks(i, j)를 포함하고 있기 때문에, XYsub 전용의 슬롯 키를 새롭게 포함시킬 필요는 없다.
상술한 바와 같이, XYsub 82B 및 XYsubE 81B에는 예를 들어 단일의 XYsub 82B 및 단일의 XYsubE 81B의 경우나, 복수의 XYsub 82B 및 복수의 XYsubE 81B의 경우의 행렬 구조를 적용할 수 있다.
<인증플로우>
다음에, 도 27을 참조하여, 제9 실시형태에 따르는 인증동작에 관해서 설명한다.
제9 실시형태에서는, 단계 S31∼S33에서, 마찬가지로 하여, 호스트 장치(20)는, NAND 플래시 메모리(10) 내에 기록되어 있는 키 정보(Key Sequence Information)(80)를 판독하고, 자신의 장치 인덱스(Device Index)에 대응하는 데이터 레코드를 선택한 후에, 이 레코드를 장치 키(Device Key)에 의해서 복호하며, 그것에 의해, 슬롯 키(Slot Keys)와 슬롯 인덱스(Slot Indexes)를 얻는다.
그 후, 단계 S13에서, 호스트 장치(20)는 NAND 플래시 메모리(10)로부터 XYE 행렬을 판독하고, 상기 슬롯 인덱스(Slot Index)에 해당하는 XYE 요소, 및 XYsubE 요소를 대응하는 슬롯 키(Slot Key)에 의해 복호하여, XY Sequence 및 XYsub를 얻는다.
후속해서, 단계 S14에서, 호스트 장치(20)는, XY 행렬의 인덱스 번호 (i) 및 난수(Nonce_H)와 함께, NAND 플래시 메모리(10)에 인증 요구를 전송한다.
그 후, 단계 S15∼S17에서, NAND 플래시 메모리(10)는, 은닉 영역(11-2)에 기록되어 있는 XY 행렬을 이용하여, 상기 XY 행렬의 인덱스 번호에 해당하는 XY 및 XYsub를 이용하여, 복수의 Z를 계산하여, 난수(Nonce_N)와 함께 호스트 장치(20)에 전송한다.
후속해서, 마찬가지로, 호스트 장치(20)는, 자신이 유지하는 상기 슬롯 인덱스 시퀀스(Slot Index Sequence)에 따라서 판독한 데이터를 필터링함으로써 단일의 Z를 얻어, 인증을 실행한다.
<작용효과>
제9 실시형태에 관한 인증자/피인증자 및 그 인증 방법에 따르면, 상기 포인트 (I)∼(IV)를 개선할 수 있고, 상기 제8 실시형태와 동일한 효과를 얻을 수 있다. 또한, 적어도 기록 시간을 단축할 수 있는 점에서 유리하다.
[제10 실시형태]
다음에, 도 28 내지 도 31을 참조하여, 제10 실시형태에 따르는 인증자/피인증자 및 그 인증 방법에 관해서 설명한다.
여기서, 상기 실시형태에 있어서는, 호스트 장치(20)가, NAND 플래시 메모리(10)의 비밀 정보를 얻기 위한 장치 키(23)를 포함한다. 그것에 의해, NAND 플래시 메모리(10)의 암호화된 비밀 정보 XYE를 판독하고, 비밀 정보 XY를 NAND 플래시 메모리(10)와 호스트 장치(20) 사이에서 공유한다.
이것에 대하여, 제10 실시형태에서는, 호스트 장치(20)는, NAND 플래시 메모리(10)로부터는 일체의 비밀 정보를 수신하지 않고, 또한 호스트 장치(20)가 갖고 있는 비밀 정보인 장치 고유(Device Unique) XY(90H)는, 호스트 장치(20)마다 변화한다. 이에 따라, NAND 플래시 메모리(10)가 갖고 있는 비밀 정보가, 호스트 장치(20)로부터 유출되는 일은 없다. 또한, 호스트 장치(20)로부터 비밀이 유출되었다고 하더라도, 그러한 유출의 영향은 장치 고유 XY(90H)의 유출에 한정되어, 다른 장치 고유 XY를 갖는 다른 호스트 장치에 있어서는 영향을 받지 않는다. 이것은, 후술하는 바와 같이, 장치 고유 XY(90H)가, XY(90M)와 Device ID(89H) 사이에서의 일방향 함수 처리 모듈(91)에 의한 계산 결과이기 때문이다. 구체적으로는, 장치 고유 XY(90H) 및 Device ID(89H)가 노출되어 있다고 하더라도, XY(90M)를 도출하기 위한 역방향 함수 처리를 실행할 수 없다.
<구성예(메모리 시스템)>
우선, 도 28을 참조하여, 제10 실시형태에 따르는 메모리 시스템의 구성예에 관해서 설명한다. 제10 실시형태는, 이하의 점에 대해서, 상기 실시형태와 상이하다.
우선, NAND 플래시 메모리(10)는, 일방향 함수 처리 모듈(91) 및 비선형 처리 모듈(92M)을 구비한다. 또한, ROM 영역(11-1)에는, NAND 플래시 메모리(10)의 고유 ID인 Memory ID(89M)가 기록된다. 은닉 영역(11-2)에는, XY 치(90 M)가 기록되는 점에서, 상기 실시형태와 상이하다.
이 실시형태의 호스트 장치(20)는, 이 호스트 장치(20)의 고유 ID인 Device ID(89H), 호스트 장치(20)의 고유의 XY 치인 장치 고유 XY(90H), 에러 정정 모듈(95), 및 비선형 처리 모듈(92H)을 구비하는 점에서, 상기 실시형태와 상이하다.
상술한 구성에 있어서, 호스트 장치(20)는, Device ID(89H)를 판독하고, NAND 플래시 메모리(10)에 판독한 Device ID(89H)를 전송한다.
호스트 장치(20)에서는, NAND 플래시 메모리(10)로부터 판독된 Memory ID(ECC or recorded multiple times)(89M)에 대하여, 에러 정정 모듈(95)이 에러 정정 처리를 실행한다.
후속해서, 호스트 장치(20)에서는, 자신이 갖는 장치 고유 XY(90H) 및 판독한 에러 정정 후의 Memory ID(89M)를, 비선형 처리 모듈(92H)이 비선형 처리를 실행하며, 그것에 의해, 고유치 Unique XY for Memory and Device를 얻는다.
한편, NAND 플래시 메모리(10)에서는, 호스트 장치(20)로부터 수신한 Device ID(89H) 및 캐시(12B)에서 판독한 자신의 XY 치(90M)에 대해, 일방향 함수 처리 모듈(91)이 일방향 함수 처리를 실행한다. 그것에 의해, 호스트 장치(20)가 갖고 있는 장치 고유 XY와 동일한 값을 얻는다. 후속해서, 캐시(12A)에서 판독한 자신의 Memory ID(89M) 및 상기 장치 고유 XY를, 비선형 처리 모듈(92M)에서 비선형 처리를 수행한다. 그러므로, 호스트 장치와 같은 고유치 Unique XY for Memory and Device를 얻을 수 있다.
그 후에, NAND 플래시 메모리(10)와 호스트 장치(20)의 양자는, Unique XY for Memory and Device를 이용하여, 동일한 인증 처리를 실행한다.
<일방향 함수 처리 모듈(One way function)(91)에 관해서>
다음에, 도 29를 참조하여, 일방향 함수 처리 모듈(One way function)(91)에 관해서 설명한다.
도 29에 도시되는 바와 같이, 본 실시형태에 따르는 일방향 함수 처리 모듈(91)은, 암호 박스(Crypto Box)(96) 및 배타적 논리합 회로(C8)를 구비한다.
암호 박스(96)는, 입력에 대하여 키를 이용하여 해독 처리를 실행한다. 배타적 논리합 회로(C8)는, 상기 입력과 암호 박스(96)의 출력 간의 배타적 논리합 처리를 실행하여, 출력을 산출한다.
이 경우에는, 입력이 일방향 함수 처리 모듈(91)의 대상의 데이터이며, 출력은 처리 결과이다. 입력으로서 상술한 XY 치를, 그리고 키로서 상술한 Device ID 치를 이용하는 것도 가능하고, 입력으로서 상술한 Device ID 치를, 그리고 키로서 상술한 XY 치를 이용하는 것도 가능하다.
<암호 박스(96)에 관해서>
다음에, 도 30을 참조하여, 암호 박스(96)에 관해서 설명한다.
도 30에 도시되는 바와 같이, 본 실시형태의 암호 박스(96)는, 복수의 배타적 논리합 회로(C9-0∼C9-n), 복수의 S 박스 및 치환 모듈(S-Box and Permutation module)(97-1∼97-n), 및 복수의 업데이트 처리 모듈(98-1∼98-n)을 구비한다.
복수의 배타적 논리합 회로(C9-0∼C9-n)는, 입력 및 키, 또는 업데이트 처리 모듈(98-1∼98-n)에 의해 업데이트된 키 및 복수의 S 박스 및 치환 모듈(97-1∼97-n)로부터의 입력을 수신하여 그 배타적 논리합치를 출력한다.
S 박스 및 치환 모듈(97-1∼97-n)은, 이전 단계의 배타적 논리합 회로(C9-0∼C9-n)의 출력에 대하여, 비선형 처리를 실행한다. 이 경우에, S 박스(S-Box)는, 데이터 전위(transposition) 테이블에 의한 입력값의 변환 처리이며, 치환(Permutation)은 전위 처리 후의 값에 관한 비트의 치환이다.
업데이트 처리부(98-1∼98-n)은, 이전 단계의 키를 업데이트한다. 또한, 업데이트는, 전위 처리 및 치환(permutation) 처리의 결과를 추가 생성 또는 외부 입력된 업데이트 치와 업데이트 연산을 실행하는 것에 해당한다. 업데이트 치로서는 카운터에 의해서 생성된 값을 이용할 수도 있고, 업데이트 연산으로서는 배타적 논리합 처리를 이용할 수도 있다.
상술한 바와 같이, 본 실시형태에 관한 암호 박스(96)에 있어서의 처리는 병렬로 실행되며, 각각의 처리를 "1 라운드"라고 칭한다. 이 경우에, 각 라운드마다의 출력값은, 다음 라운드에 대한 입력값으로서 이용된다. 그리고, 상술한 비선형의 처리를 복수 라운드 처리된 결과가, 출력(Output)으로서 출력된다. 그러므로, 비선형 처리에 관한 "1 라운드"만으로도 복잡한 처리이므로, 이들 처리를 복수 라운드 그와 같이 업데이트 및 실행함으로써 일방향 함수 처리 모듈(91)에 필요한 일방향 함수 처리를 실행하는 것이 가능해진다.
한편, 상술한 전위 처리 및 치환 처리의 각각은 비선형 처리이기 때문에, 이들 전위 처리 또는 치환 처리 중 어느 하나, 또는 그 조합을 상술한 비선형 처리 모듈의 구성 요소로서 이용하는 것도 가능하다.
<인증 플로우>
다음에, 도 31을 참조하여, 제10 실시형태에 관한 인증 동작에 관해서 설명한다.
단계 S41에서, 호스트 장치(20)는, NAND 플래시 메모리(10) 내에 기록되어 있는 Memory ID(89M)의 판독을 요구한다.
그 후, 단계 S42에서, NAND 플래시 메모리(10)는, 호스트의 요구에 응답하여, ROM 영역(11-1) 내에 기록되는 Memory ID(89M)를 판독하여, 그것을 호스트 장치(20)에 전송한다.
후속해서, 단계 S43에서, 호스트 장치(20)는, 취득한 Memory ID(89M) 및 자신이 갖는 장치 고유 ID(90 H)에 대하여 비선형 처리를 실행하여, Unique XY for Memory and Device를 얻는다.
그 후, 단계 S44에서, 호스트 장치(20)는, 호스트 난수(Nonce_H) 및 Device ID(89H)와 함께 인증 요구를 NAND 플래시 메모리(10)에 전송한다.
후속해서, 단계 S45에서, NAND 플래시 메모리(10)는, 전송된 Device ID(89H), 및 자신이 갖는 XY(90M) 및 Memory ID(89M)를 이용하여, 상술한 처리에 의해, Unique XY for Memory and Device를 얻는다.
그 후에, 상술한 바와 같은 인증 처리를 실행한다.
<작용효과>
제10 실시형태에 관한 인증자/피인증자 및 그 인증 방법에 따르면, 상기 포인트 (I)∼(IV)를 개선할 수 있고, 또한 하기의 효과를 얻을 수 있다.
여기서, 상기 실시형태에 있어서는, 호스트 장치(20)가, NAND 플래시 메모리(10)의 비밀 정보를 얻기 위한 장치 키(23)를 구비한다. 그것에 의해, NAND 플래시 메모리(10)의 암호화된 비밀 정보 XYE를 판독하여, 비밀 정보 XY를 NAND 플래시 메모리(10)와 호스트 장치(20) 사이에서 공유한다.
이것에 대하여, 제10 실시형태에서는, 호스트 장치(20)는, NAND 플래시 메모리(10)로부터는 일체의 비밀 정보를 수신하지 않고, 또한 호스트 장치(20)가 갖고 있는 비밀 정보인 장치 고유 XY(90H)는, 호스트 장치(20)마다 변화한다. 이에 따라, NAND 플래시 메모리(10)가 갖고 있는 비밀 정보가, 호스트 장치(20)로부터 유출되는 일은 없다. 또한, 호스트 장치(20)로부터 비밀이 유출되었다고 하더라도, 그러한 유출의 영향은 장치 고유 XY(90H)의 유출에 한정되어, 다른 장치 고유 XY를 갖는 다른 호스트 장치에 있어서는 영향을 받지 않게 된다. 이것은, 상술한 바와 같이, 장치 고유 XY(90H)가, XY(90M)와 Device ID(89 H) 간의 일방향 함수 처리 모듈(91)에 의한 계산 결과이기 때문이다. 구체적으로는, 장치 고유 XY(90H) 및 Device ID(89H)가 예로 들어 노출되었다고 하더라도, 일방향 함수 처리를 실행하기 때문에, XY를 도출하기 위한 역방향 함수 처리를 행할 수 없다.
또한, 본 실시형태에서는, 비선형 처리 모듈(92M 및 92H)이, Unique XY for Memory and Device를 얻기 위해서, Memory ID(89M) 및 장치 고유 XY(89H)에 대하여, 비선형 처리를 실행한다. 그러므로, 교환 법칙이 성립할 우려가 적은 점에서도 유리하다. 예컨대, 인증 방법으로서 내적 연산을 채용한 경우, 내적 연산은 선형 처리이다. 그러므로, Unique XY for Memory and Device를 얻기 위해서, Memory ID와 장치 고유 XY에 대하여 선형 처리를 실행한 경우에는, 교환 법칙이 성립하는 우려가 있다. 이 경우에는, Memory ID의 위장이 이루어질 수 있는 우려가 있기 때문에, 호스트 장치(20)와 NAND 플래시 메모리(10) 중 적어도 하나에서 비선형 처리를 제공하는 것이 바람직하다. 본 실시형태에서는, 호스트 장치(20) 및 NAND 플래시 메모리(10)의 양자의 비선형 처리 모듈(92M 및 92H)에서, 비선형 처리가 실행되기 때문에, 교환 법칙이 성립하는 것을 방지할 수 있다.
또한, 인증에 이용하는 정보가, 인증되는 NAND 플래시 메모리(10)와 호스트 장치(20)의 조합에 따라서 다른 Unique XY for Memory and Device이다. 그러므로, 중간자 공격의 위협을 저감할 수 있는 점에서도 유리하다. 이것은, 중간자 공격에 의해서 Unique XY for Memory and Device가 노출되더라도, 이 값을 이용할 수 있는 환경은 매우 한정되어 있다. 그 이유는, 해당 호스트 장치(20)에 대해서만 인증을 위장할 수 있기 때문이다.
상술한 바와 같이, 제10 실시형태에 따르면, 중간자 공격에 대한 내성이 향상될 수 있고, 디바이스들에 배포되는 비밀 정보를 개별 디바이스에 고유로 하는 것에 의해서 비밀 정보 노출 시의 영향이 감소될 수 있으며, 크랙된 호스트 장치를 확인할 수 있고, 크랙된 호스트 장치 키가 무효화될 수 있는 유리한 효과를 갖는다.
[제11 실시형태 (매체 ID 검색 프로세스)]
다음에, 도 32 내지 도 35를 참조하여, 제11 실시형태에 관해서 설명한다. 제11 실시형태는, 상술한 단계 S22에 있어서, 매체 ID(매체 ID)를 산출하는 여러 가지 처리(매체 ID 검색 프로세스)에 관한 것이다.
ID 검색 프로세스 (1)
ID 검색 프로세스 (1)은, 도 32에 도시된 바와 같이 표시된다. 도 32에 도시되는 바와 같이, 이 예(1)에서는, 단계 RS1에서, 상술한 인증에 이용되는 XYmain 및 XYsub에 대하여, 일방향 함수 처리(One-way function)가 행하여진다. 그 결과가, 매체 ID로서 취급된다.
이 경우에, 일방향 함수 처리로서는, 예컨대, SHA-1, SHA-256, AEG-H와 같은 암호에 기초하는 일방향 연산을 이용하는 것이 가능하다.
ID 검색 프로세스 (2)
ID 검색 프로세스 (2)는, 도 33에 도시된 바와 같이 표시된다. 도 33에 도시된 바와 같이, 이 예(2)에서는, 단계 RS1, RS2에서, 상기 인증에 이용되는 XYmain 및 XYsub는, 상술한 인증 처리에 있어서 XYmainE 및 XYsubE의 복호에 이용된 KEY_XYmain과 KEY_XYsub 중 어느 하나에 해당하는 KEY_XY를 이용하여, 더욱 복호 처리(Decode)가 행하여진다.
후속해서, 단계 RS3에서, 유사한 일방향 함수 처리(One-way function)가 행해져서, 그 결과가 매체 ID로서 취급된다.
ID 검색 프로세스 (3)
ID 검색 프로세스 (3)은, 도 34도에 도시된 바와 같이 표시된다. 도 34에 도시된 바와 같이, 이 예(3)에서는, 단계 RS1, RS2에서, 상술한 인증에 이용된 XYmain 및 XYsub는, 상술한 인증 처리에 있어서 XYmainE 및 XYsubE의 복호에 이용된 KEY_XYmain 및 KEY_XYsub를 이용하여, 더 복호 처리(Decode)가 행하여진다.
후속해서, 단계 RS3에서, 유사한 일방향 함수 처리(One-way function)가 행해져서, 그 결과가 매체 ID로서 취급된다.
ID 검색 프로세스 (4)
ID 검색 프로세스 (4)는, 도 35에 도시된 바와 같이 표시된다. 도 35에 도시된 바와 같이, 이 예(4)에서는, 단계 RS1, RS2에서, 상기한 인증에 이용된 XYmain 및 XYsub는, 상술한 인증 처리에 있어서 XYmainE 및 XYsubE의 복호에 이용된 KEY_XYmain 및 KEY_XYsub와 다른 KEY_XYmain2 및 KEY_XYsub2를 이용하여, 더 복호 처리(Decode)가 행하여진다. 이 경우에는, KEY_XYmain2 및 KEY_XYsub2는 동일한 값을 가질 수도 있다.
후속해서, 단계 RS3에서, 유사한 일방향 함수 처리(One-way function)가 행해져서, 그 결과가 매체 ID로서 취급된다.
[제12 실시형태 (매체 ID 결합 프로세스)]
다음에, 도 36 내지 도 37을 참조하여, 제12 실시형태에 관해서 설명한다. 제12 실시형태는, 매체 ID의 이용 방법(매체 ID 결합 프로세스)에 관한 것이다.
여기서, 예컨대, 상용 동화상 콘텐츠 등을 물리 매체에 기록하여, 재생하는 경우, 그 물리 매체에 고유인 식별 정보를 콘텐츠 기록 시의 암호 처리에 이용하여 콘텐츠를 상기 물리 매체에 결합하는 방법이 취해진다.
콘텐츠 재생시에는, 상기 식별 정보에 기초하는 복호 처리 또는 검사 처리를 실행하여, 재생된 식별 정보와 콘텐츠 기록 시의 암호 처리에 이용된 식별 정보가 일치하지 않는 경우, 콘텐츠의 재생을 정지하는 방법이 취해진다. 여기서 물리 매체는, 예컨대, SD 카드와 같은 착탈 가능한 매체의 경우나, 휴대 전화 등에 내장되고 있는 임베디드(embedded) 메모리를 포함한다.
어느 경우에 있어서도, 상술한 방법의 목적은, 어떤 매체에 기록된 암호 처리 완료 콘텐츠를, 별도의 매체로 부정 복제된 경우, 부정 복제 콘텐츠의 재생을 정지시키는 것이다. 이러한 목적을 위한 정보로서, 매체마다 다른 상술한 식별 정보(매체 ID)를 이용하고 있다.
ID 결합 프로세스 (1)
ID 결합 프로세스(1)는, 도 36에 도시된 바와 같이 표시된다. 도 36에 도시된 바와 같이, 이 예(1)에서는, MAC(Message Authentication Code) 생성 처리를 실행하여, 이것을 부정 복제의 방지에 이용한다.
구체적으로는, 단계 BP1에서, 상술한 식별 정보로서 매체 ID를 이용하는 방법의 예에서, 콘텐츠 암호화에 이용되는 콘텐츠 키(Content Key)에 기초하여, 매체 ID 및 그 밖의 정보에 대하여, MAC 생성 처리를 실행한다.
후속해서, 콘텐츠를 매체에 기록하는 장치에 있어서는, MAC을 생성하여, 생성된 MAC을 매체에 기록해 둔다. 콘텐츠를 매체로부터 재생하는 장치에 있어서는, 기록되어 있는 MAC을 매체 ID 또는 콘텐츠 키에 기초하여 검사한다. 정당성이 확인된 경우에는 콘텐츠를 재생한다. 정당성이 확인되지 않는 경우에는 콘텐츠의 재생을 정지하는 등의 방법을 적용하는 것이 가능하다.
ID 결합 프로세스 (2)
ID 결합 프로세스 (2)는, 도 37에 도시된 바와 같이 표시된다. 도 37에 도시된 바와 같이, 이 예(1)에서는, 콘텐츠 암호화에 이용되는 콘텐츠 키를 생성하기 위한 정보로서, 매체 ID를 이용한다.
단계 BP1에서, 콘텐츠를 매체에 기록하는 장치에 있어서는, 매체 ID 및 콘텐츠 키 전구체(Precursor)에 일방향 처리(One-way function)가 행해진다.
매체에 기록하는 장치에 있어서는, 처리된 콘텐츠 키에 의해서 암호화된 콘텐츠를 기록해 둔다.
콘텐츠를 매체로부터 재생하는 장치에 있어서는, 기록되어 있는 콘텐츠 키 전구체와 매체 ID에 유사한 일방향 처리가 행해져서 그것에 의해 콘텐츠 키를 얻는다. 그러므로, 콘텐츠의 복호와 재생이 실행된다. 여기서, 매체 ID가 일치하지 않는 경우에는, 즉 기록되어 있는 데이터가 다른 매체에 부정 복제된 경우에는, 도출한 콘텐츠 키와 콘텐츠 암호화에 이용되고 있는 콘텐츠 키가 일치하지 않는다. 그러므로, 콘텐츠의 복호에 실패하여, 재생이 정지된다.
[제13 실시형태(메모리 및 기억/재생 호스트의 일례)]
다음에, 도 38을 참조하여, 제13 실시형태에 관해서 설명한다. 제13 실시형태는, 상술한 실시형태의 구성을 조합시킨 메모리 카드(inc. NAND chip)(10), 기록 호스트(Recoding Device)(20A) 및 재생 호스트(Playback Device)(20B)의 시스템에 있어서, 상술한 인증을 실행하고, 상기 매체 ID를 이용하여, 호스트 장치(20B)에서 콘텐츠를 재생하는 일례에 관한 것이다.
기록 호스트(Recoding Device)(20A)가 콘텐츠를 메모리 카드(inc. NAND chip)(10)에 기록하는 경우, 우선 메모리 카드(inc. NAND chip)(10)와 기록 호스트(Recoding Device)(20A)의 사이에서, 상기 실시형태에 있어서의 인증 처리를 실행한다. 여기서, 인증 처리가 성공적으로 실행된 후, 상기 실시형태에 있어서의 ID 검색 프로세스를 실행한다. 그 후, 상기 실시형태에 있어서의 ID 결합 프로세스 (1)에 의해 생성한 MAC를 메모리 카드(inc. NAND chip)(10)에 기록한다. 또한, ID 결합 프로세스 (1)에 있어서 이용한 콘텐츠 키에 의해 암호화한 콘텐츠(Encrypted Content)도 기록한다. 더욱이, 콘텐츠 키 자신도 안전한 형태로 기록한다. 이 상황에서, 안전한 형태는, 메모리 카드(inc. NAND chip)(10)와 기록 호스트(Recoding Device)(20A)의 사이에서 인증이 성공적으로 실행된 후에 액세스가 가능해지는 메모리 카드(inc. NAND chip)(10) 내에 기록하는 형태일 수도 있다. 또한, 이 상황에서 인증은 본원에 있어서 기재되어 있는 인증 방법일 수도 있고, 또는 메모리 카드(inc. NAND chip)(10)가 갖고 있는 별도의 인증 기능에 의해서 실현될 수도 있다. 또한, 안전한 형태의 별도의 예는, 메모리 카드(inc. NAND chip)(10) 또는 기록 호스트(Recoding Device)(20A)가 갖고 있는 키에 의해서 암호화한 형태일 수도 있다.
재생 호스트(Playback Device)(20B)가 콘텐츠를 메모리 카드(inc. NAND chip)(10)로부터 판독하여, 그 콘텐츠를 재생하는 경우, 우선 메모리 카드(inc. NAND chip)(10)와 재생 호스트(Playback Device)(20B)의 사이에서, 상기 실시형태에 있어서의 인증 처리를 실행한다. 여기서, 인증 처리가 성공적으로 실행된 후에, 상기 실시형태에 있어서의 ID 검색 프로세스를 실행한다. 그 후, 상기 실시형태에 있어서의 ID 결합 프로세스 (1)에 대응하는 처리에 의해, 메모리 카드(inc. NAND chip)(10)에 기록되어 있는 MAC를 검증한다. 그 후에, 콘텐츠 키를 메모리 카드(inc. NAND chip)(10)로부터 판독하여, 암호화한 콘텐츠(Encrypted Content)를 복호함으로써 콘텐츠를 재생한다.
[제14 실시형태(메모리 및 기억/재생 호스트의 다른 예)]
다음에, 도 39를 참조하여, 제14 실시형태에 관해서 설명한다. 제14 실시형태는, 상술한 실시형태의 구성을 조합시킨 메모리 카드(inc. NAND chip)(10), 기록 호스트(Recoding Device)(20A), 재생 호스트(Playback Device)(20B)의 시스템에 있어서, 상술한 인증을 실행하고, 상술한 매체 ID를 이용하여, 호스트 장치(20B)에서 콘텐츠를 재생하는 일례에 관한 것이다.
기록 호스트(Recoding Device)(20A)가 콘텐츠를 메모리 카드(inc. NAND chip)(10)에 기록하는 경우에, 우선 메모리카드(inc. NAND chip)(10)와 기록 호스트(Recoding Device)(20A)의 사이에서, 상기 실시형태에 있어서의 인증 처리를 실행한다. 여기서, 인증 처리가 성공적으로 실행된 후, 상기 실시형태에 있어서의 ID 검색 프로세스를 실행한다. 그 후, 상기 실시형태에 있어서의 ID 결합 프로세스 (1)에 의해 생성한 콘텐츠 키를 메모리 카드(inc. NAND chip)(10)에 기록한다. 또한, ID 결합 프로세스 (2)에 의해 생성한 콘텐츠 키에 의해 암호화한 콘텐츠(Encrypted Content)도 기록한다. 더욱이, 콘텐츠 키 전구체 자신도 또한 안전한 형태로 기록한다.
이 상황에서, 안전한 형태는, 메모리 카드(inc. NAND chip)(10)와 기록 호스트(Recoding Device)(20A)의 사이에서 인증이 성공적으로 실행된 후에 액세스가 가능해지는 메모리 카드(inc. NAND chip)(10) 내의 기록 영역에 기록하는 형태일 수도 있다. 또한, 이 상황에서, 인증은 본원에 있어서 기재되어 있는 인증 방법일 수도 있고, 또는 메모리 카드(inc. NAND chip)(10)가 갖고 있는 별도의 인증 기능에 의해서 실현될 수도 있다. 또한, 안전한 형태의 별도의 예는, 메모리 카드(inc. NAND chip)(10) 또는 기록 호스트(Recoding Device)(20A)가 갖고 있는 키에 의해서 암호화한 형태일 수도 있다.
재생 호스트(Playback Device)(20B)가 콘텐츠를 메모리 카드(inc. NAND chip)(10)로부터 판독하여, 그 콘텐츠를 재생하는 경우에, 우선 메모리 카드(inc. NAND chip)(10)와 재생 호스트(Playback Device)(20B)의 사이에서, 상기 실시형태에 있어서의 인증 처리를 실행한다. 여기서, 인증 처리가 성공적으로 실행된 후에, 상기 실시형태에 있어서의 ID 검색 프로세스를 행한다. 그 후, 상기 실시형태에 있어서의 ID 결합 프로세스 (2)에 대응하는 처리에 의해, 메모리 카드(inc. NAND chip)(10)에 기록되어 있는 콘텐츠 키 전구체로부터 콘텐츠 키를 생성한다. 그 후에, 암호화한 콘텐츠(Encrypted Content)를 복호함으로써 콘텐츠를 재생한다.
[제15 실시형태(메모리, 컨트롤러 및 호스트의 일례)]
다음에, 도 40을 참조하여, 제15 실시형태에 관해서 설명한다. 제15 실시형태는, 상술한 실시형태에 적용 가능한 상기 NAND 플래시 메모리(10), 컨트롤러(19), 및 호스트 장치(20)의 일례에 관한 것이다. 본 실시형태에서는, 메모리 카드의 일례로서 SD 카드(등록상표)를 예로 든다.
도 40에 도시되는 바와 같이, 본 실시형태에서는, 메모리 카드와 접속되는 호스트 장치의 기능 블록도 예시되어 있다. 각 기능 블록은, 하드웨어나 컴퓨터 소프트웨어 중 어느 하나, 또는 양자를 조합시킨 것에 의해 실현할 수 있다. 그러므로, 각각의 블록이, 그 기능들 중 어느 것에 의해 각 블록이 실현되는 것이 명확히 하기 위해, 대체로 이들의 기능의 관점에서 이하에 설명한다. 이러한 기능이, 하드웨어로서 실행될지, 또는 소프트웨어로서 실행될지는, 구체적인 실시 양태 또는 시스템 전체에 부과되는 설계 제약에 의존한다. 당업자는, 구체적인 실시 양태마다, 여러 가지 방법으로 이들의 기능을 실현할 수도 있지만, 모든 실현 방법이 본 발명의 범주에 포함된다.
호스트 장치(20)는, 애플리케이션 또는 운영 체계(operating system)와 같은 소프트웨어(211)를 구비하고 있다. 소프트웨어(211)는, 사용자가 메모리 카드 내로의 데이터의 기록, 또는 메모리 카드부터의 데이터의 판독을 지시한다. 소프트웨어(211)는, 데이터의 기록 및 판독을 파일 시스템(212)에 지시한다. 파일 시스템(212)은, 관리 대상인 기억 매체에 기록되어 있는 파일 데이터를 관리하기 위한 구조이다. 파일 시스템(212)은 기억 매체의 기억 영역 내에 관리 정보를 기록하고, 이 관리 정보를 이용하여 파일 데이터를 관리한다.
호스트 장치(20)는, SD 인터페이스(213)를 구비한다. SD 인터페이스(213)는, 호스트 장치(20)와 메모리 카드 사이에서 인터페이스 처리를 실행하는 데 필요한 하드웨어 및 소프트웨어로 이루어진다. 호스트 장치(20)는, SD 인터페이스(213)를 통해 메모리 카드와 통신을 한다. SD 인터페이스(213)는, 호스트 장치(20)와 메모리 카드 간에 통신하는 데 필요한 여러 가지 프로토콜을 규정하고, 후술하는 메모리 카드의 SD 인터페이스(31)와 서로 인식 가능한 여러 가지 커맨드의 세트를 구비하고 있다. 또한, SD 인터페이스(213)는, 메모리 카드의 SD 인터페이스(31)와 접속 가능한 하드웨어 구성(핀의 배치, 핀의 수 등)도 포함한다.
메모리 카드는, NAND 플래시 메모리(10) 및 메모리(10)를 제어하기 위한 컨트롤러(19)를 구비한다. 메모리 카드가 호스트 장치(20)에 접속되었을 때, 또는 메모리 카드가 오프 상태에 있는 호스트 장치(20)에 삽입된 상태로 호스트 장치(20)가 온되었을 때, 메모리 카드는 전원 공급을 받아 초기화 프로세스를 실행하고, 호스트 장치(20)로부터의 액세스에 대응하는 처리를 실행한다.
NAND 메모리(10)는, 데이터를 비휘발 상태로 기억하여, 복수의 메모리 셀로 이루어지는 "페이지(page)"라고 칭해지는 단위로 데이터의 기록 및 판독을 실행한다. 페이지에는, 각 페이지에 고유의 물리 어드레스가 할당되어 있다. 또한, 메모리(10)는, 복수의 페이지로 이루어지는 "블록"(소거 블록)이라고 칭해지는 단위로 데이터의 소거를 실행한다. 몇몇 경우에는, 물리 블록 단위로 물리 어드레스가 할당되어 있다.
컨트롤러(19)는, 메모리(10)에 의한 데이터의 기억 상태를 관리한다. 기억 상태의 관리는, 어떤 페이지의 물리 어드레스(또는 물리 블록)와 이 페이지에 기억되어 있는 데이터의 논리 어드레스 사이의 관계를 관리하는 것, 및 어떤 페이지를 나타내는 물리 어드레스(또는 물리 블록)가 소거 상태(아무런 데이터도 기록되어 있지 않거나, 또는 무효인 데이터를 유지하고 있는 상태)인지를 관리하는 것을 포함하고 있다.
컨트롤러(19)는, SD 인터페이스(31), MPU(micro processing unit)(32), ROM(read only memory)(33), RAM(random access memory)(34), 및 NAND 인터페이스(35)를 포함하고 있다.
SD 인터페이스(31)는, 호스트 장치(20)와 컨트롤러(19)의 사이의 인터페이스 처리를 실행하는 데 필요한 하드웨어 및 소프트웨어로 이루어진다. SD 인터페이스(213)와 같이, SD 인터페이스(31)는 양자 간의 통신을 가능하게 하는 프로토콜을 규정하고, 여러 가지 커맨드의 세트를 포함하며, 또한 하드웨어 구성(핀의 배치, 핀의 수 등)도 포함한다. 메모리 카드(컨트롤러(19))는, SD 인터페이스(31)를 통하여 호스트 장치(20)와 통신을 한다. SD 인터페이스(31)는, 레지스터(36)를 포함하고 있다.
MPU(32)는, 메모리 카드의 전체 동작을 제어한다. MPU(32)는, 예컨대, 메모리 카드가 전원 공급을 받았을 때에, ROM(33)내에 기억되어 있는 펌웨어(제어 프로그램)를 RAM(34)에 판독하여, 소정의 처리를 실행한다. MPU(32)는, 제어 프로그램에 따라서 여러 가지 테이블을 RAM(34)상에서 작성하거나, 호스트 장치(20)로부터 수신한 커맨드에 따라서 메모리(10)에 대하여 소정의 처리를 실행한다.
ROM(33)은 예컨대, MPU(32)에 의해 제어되는 제어 프로그램을 저장한다. RAM(34)은, MPU(32)의 작업 영역으로서 사용되어, 제어 프로그램이나 여러 가지 테이블을 일시적으로 기억한다. 이러한 테이블은, 파일 시스템(12)에 의해서 데이터에 할당된 논리 어드레스를, 데이터가 실제로 기억되어 있는 페이지의 물리 어드레스로 변환하는 변환 테이블(논리/물리 테이블)을 포함한다. NAND 인터페이스(35)는, 컨트롤러(19)와 메모리(10) 사이의 인터페이스 처리를 실행한다.
NAND 플래시 메모리(10) 내의 메모리 영역은, 기억되어 있는 데이터의 종류에 따라서, 예컨대, 시스템 데이터 영역, 비밀 데이터 영역, 보호 데이터 영역, 사용자 데이터 영역을 포함하고 있다. 시스템 데이터 영역은, 컨트롤러(19)의 동작에 필요한 데이터를 기억하기 위해서 컨트롤러(19)에 의해 메모리(10) 내에 확보되는 영역이다. 비밀 데이터 영역은, 암호화에 이용하는 키 정보 및 인증 시에 사용하는 비밀 데이터를 기억하고 있고, 호스트 장치(20)로부터 액세스 불가능하다. 보호 데이터 영역은, 중요한 데이터, 보안 데이터 등을 기억한다. 사용자 데이터 영역은, 호스트 장치(20)가 자유롭게 액세스 및 사용하는 것이 가능하고, 예컨대, AV 콘텐츠 파일 및 화상 데이터와 같은 사용자 데이터를 기억한다. 또, 컨트롤러(19)는, 사용자 데이터 영역의 일부를 확보하여, 컨트롤러(19) 자신의 동작에 필요한 제어 데이터(예컨대, 논리/물리 변환 테이블)를 기억한다.
[제16 실시형태]
다음에, 상술한 NAND 플래시 메모리(10)의 구체적인 구성예로서, 제16 실시형태를 설명한다.
<전체 구성예>
도 41은 상기 NAND 플래시 메모리(10)의 구체적인 전체 구성예를 도시한다.
도 41에 도시되는 바와 같이, 본 실시형태에 관한 NAND 플래시 메모리는, 메모리 셀 어레이(11), 난수 발생 회로(16), 제어 회로(19), 인증 회로(51), 비트선 제어 회로(52), 칼럼 디코더(53), 데이터 입/출력 버퍼(54), 데이터 입/출력 단자(55), 워드선 구동 회로(56), 제어 신호 입력 단자(58), 및 전원 발생 회로(59)를 구비한다.
메모리 셀 어레이(11)는, 복수의 블록(BLOCK 1∼BLOCK n)에 의해 구성된다. 복수의 블록(BLOCK 1∼BLOCK n)의 각각은, 워드선 및 비트선의 교차 위치에 배치되는 복수의 메모리 셀을 구비한다. 예컨대, BLOCK 1은, 상술한 ROM 영역(11-1)이다. 예컨대, BLOCK 2는, 상기 은닉 영역(11-2)이다. 그 밖의 블록은, 호스트 장치(20)로부터 액세스 가능한 사용자 영역(User area)(11-3)이다.
ROM 영역(11-1)은 예컨대, OTP(One Time Program) 블록이며, 한 번의 기록만 허용된다. 데이터 기록 후에는, 전기 퓨즈, 레이저 퓨즈 또는 ROM 퓨즈와 같은 수단을 이용하여 블록 디코더를 제어함으로써 소거 동작을 금지한다. 은닉 영역(11-2)은, 예컨대, 외부 어드레스를 이용한 디코드에 의해서는 선택할 수 없는 상태로 설정된다. 은닉 영역(11-2)은, NAND 플래시 메모리 내부의 제어 회로(19)에 의해서만 판독 가능한 영역이다.
인증 회로(51)는, 예컨대, 상술한 압축 연산 회로(13), 바이어스된 RNG(14), 출력 모듈(15), 난수 생성 회로(16), 순서 교환 회로(18), 및 비트별 가산 회로(C1)를 구비한다. 인증 회로(51)는 제어 회로(19)에 의해 제어된다. 예컨대, 난수 생성 회로(16)에 의해 생성된 난수는, 제어 회로(19)의 제어에 따라서, 비밀 키나 인증 처리에 있어서의 챌린지(challenge) 데이터의 생성에 이용되고, 또한 그 난수는 필요에 따라서, 데이터 입/출력 단자(55)를 통해 외부의 호스트 장치(20)에 송신된다.
비트선 제어 회로(52)는, 비트선을 통해 메모리 셀 어레이(11) 내의 메모리 셀의 데이터를 판독하여, 비트선을 통해 메모리 셀 어레이(11) 내의 메모리 셀의 상태를 검출한다. 또한, 비트선 제어 회로(52)는, 비트선을 통해 메모리 셀 어레이(11) 내의 메모리 셀에 기록 제어 전압을 인가함으로써 메모리 셀에 데이터를 기록한다.
비트선 제어 회로(52) 내에는, 도시하지 않는 페이지 버퍼와 같은 데이터 메모리 회로(12)가 제공되고, 이 데이터 메모리 회로는, 칼럼 디코더(53)에 의해서 선택된다. 데이터 메모리 회로에 판독된 메모리 셀의 데이터는, 데이터 입/출력 버퍼(54)를 통해 데이터 입/출력 단자(55)로부터 외부로 출력된다.
데이터 입/출력 단자(55)는, 예컨대, 외부의 호스트 장치에 접속된다. 데이터 입/출력 단자(55)는, 예컨대, 8 비트, 또는 16 비트의 버스폭을 갖고 있다. NAND 플래시 메모리는 토글 모드 인터페이스(toggle mode interface)와 같은 고속 인터페이스 규격을 지원할 수도 있다. 토글 모드 인터페이스에서는, 예컨대, 데이터 스트로브(strobe) 신호(DQS)의 수직 상승 및 하강 에지의 양자에 동기하여 데이터 입/출력 단자(55)를 통한 데이터 전송이 행하여진다.
호스트 장치(20)는, 예컨대, 마이크로 컴퓨터이며, 데이터 입/출력 단자(55)로부터 출력되는 데이터를 수신한다. 호스트 장치(20)는, NAND 플래시 메모리(10)의 동작을 제어하는 여러 가지 커맨드 CMD(기록 커맨드, 판독 커맨드, 소거 커맨드, 상태 판독 커맨드 등), 어드레스 ADD, 및 데이터 DT를 출력한다. 호스트 장치로부터 데이터 입/출력 단자(55)에 입력된 기록 데이터 DT는, 데이터 입/출력 버퍼(54)를 통해, 칼럼 디코더(53)에 의해서 선택된 상기 데이터 메모리 회로(도시하지 않음)에 공급된다. 한편, 커맨드 CMD 및 어드레스 ADD는, 제어 회로(19)에 공급된다.
워드선 구동 회로(56)는, 제어 회로(19)의 제어 하에, 메모리 셀 어레이(11) 내에서 워드선을 선택하여, 선택된 워드선에 데이터 판독, 기록 혹은 소거에 필요한 전압을 인가한다.
전압 발생 회로(59)는, 제어 회로(19)의 제어 하에, 도면에 도시되어 있는 접속된 상기 구성 회로의 동작에 필요한 전압을 공급한다. 예컨대, 전압 발생 회로(59)는, 호스트 장치로부터 공급되는 외부 전압을 승압하여, 데이터 판독, 기록 혹은 소거 시에 워드선에 인가되는 전압을 생성한다.
제어 회로(Controller)(19)는, NAND 플래시 메모리(10)의 전체의 동작을 제어하기 위해서, 접속되는 각각의 회로에 필요한 제어 신호 및 제어 전압을 부여한다. 제어 회로(19)는, 메모리 셀 어레이(11), 인증 회로(51), 비트선 제어 회로(52), 칼럼 디코더(53), 데이터 입/출력 버퍼(54), 워드선 구동 회로(56), 전압 발생 회로(59)에 접속된다. 접속된 상기 구성 회로는, 제어 회로(19)에 의해서 제어된다.
제어 회로(19)는, 제어 신호 입력 단자(58)에 접속되어, 호스트 장치로부터 제어 신호 입력 단자(58)를 통해 입력되는 WE(write enable: 기록 인에이블) 신호, RE(read enable: 판독 인에이블) 신호, ALE(address latch enable: 어드레스 래치 인에이블) 신호, 및 CLE(command latch enable: 커맨드 래치 인에이블) 신호와 같은 제어 신호의 조합에 의해서 제어된다.
여기서, 기능적으로 표현하면, 상기 워드선 구동 회로(56), 비트선 제어 회로(52), 칼럼 디코더(53), 및 제어 회로(19)는, 데이터 기록 회로, 데이터 판독 회로, 및 데이터 소거 회로를 구성한다. 호스트 장치는, NAND 플래시 메모리가 기록 동작, 판독 동작, 또는 소거 동작과 같은 내부 동작을 실행 중인지의 여부를, 도시하지 않은 RY/BY(ready/busy) 신호 출력 단자를 모니터링함으로써 검출한다. 제어 회로(19)는, RY/BY 신호 출력 단자를 통해 RY/BY 신호를 출력한다.
<블록(BLOCK)의 구성예>
다음에, 도 42를 참조하여, 메모리 셀 어레이를 구성하는 블록(BLOCK)의 구성예에 관해서 설명한다. 여기서는, 도 41에서의 BLOCK 1을 예를 들어 설명한다. 본 예에서, 이 블록 BLOCK 1 내의 메모리 셀은 일괄 방식으로 데이터 소거되기 때문에, 이 블록은 데이터 소거 단위이다.
블록 BLOCK 1은, 워드선 방향(WL 방향)으로 배치되는 복수의 메모리 셀 유닛(MU)을 포함한다. 메모리 셀 유닛(MU)은, WL 방향과 교차하는 비트선 방향(BL 방향)으로 배치되고, 전류 경로가 직렬 접속되는 8개의 메모리 셀(MC0∼MC7)로 이루어지는 NAND 스트링(메모리 셀 스트링); NAND 스트링의 전류 경로의 일단에 접속되는 소스측 선택 트랜지스터(S1); 및 NAND 스트링의 전류 경로의 타단에 접속되는 드레인측 선택 트랜지스터(S2)를 포함한다.
또한, 본 실시형태에서는, 메모리 셀 유닛(MU)은 8개의 메모리 셀(MC0∼MC7)을 포함한다. 그러나, 메모리 셀의 수는 8개에 한정되는 것이 아니라, 2개 이상 예컨대, 56개 또는 32개일 수도 있다.
소스측 선택 트랜지스터(S1)의 전류 경로의 타단은 소스선(SL)에 접속된다. 드레인측 선택 트랜지스터(S2)의 전류 경로의 타단은, 각 메모리 셀 유닛(MU)에 관련하여 메모리 셀 유닛(MU)의 상측에 제공되고, BL 방향으로 연장하는 비트선(BLm-1)에 접속된다.
워드선(WL0∼WL7)은, WL 방향으로 연장되어, WL 방향의 복수의 메모리 셀의 제어 전극에 공통으로 접속된다. 선택 게이트선(SGS)은, WL 방향으로 연장되어, WL 방향의 복수의 선택 트랜지스터(S1)에 공통으로 접속된다. 유사하게, 선택 게이트선(SGD)는, WL 방향으로 연장되어, WL 방향의 복수의 선택 트랜지스터(S2)에 공통으로 접속된다.
또한, 각각의 워드선(WL0∼WL7)과 관련하여 페이지(PAGE)가 존재한다. 예컨대, 도 42에서 파선으로 나타내는 바와 같이, 워드선(WL7)과 관련하여 페이지7(PAGE7)이 존재한다. 이 페이지(PAGE)의 단위로, 후술하는 데이터 판독 동작 및 데이터 기록 동작이 행하여지기 때문에, 페이지(PAGE)는 데이터 판독 단위이며, 데이터 기록 단위이다.
<단일 레벨 메모리 셀 (SLC:Single Level Cell)의 임계치 분포>
다음에, 도 43을 참조하여, 단일 레벨 메모리 셀 (SLC: Single Level Cell)의 임계치 분포에 관해서 설명한다.
단일 레벨 메모리 셀의 임계치 분포(Vth 분포)에서는, 도 43에 도시된 바와 같이, '1', '0'의 분포가 메모리 셀에 데이터를 기록한 후에 나타낸다. 본 예에서는, 소거 상태(Erase state)에 '1'을 할당하고, 기록 상태(Programmed state)에 '0'을 할당하고 있다.
또, 데이터 기록 동작 및 데이터 소거 동작의 시에는, 기록 전압 또는 소거전압의 인가 후에, 각 메모리 셀의 임계치 전압을 검사하여, 목표 레벨에 도달하지않은 셀에 대해서는 다시 한번 데이터 기록을 실행하거나, 또는 데이터 소거 동작을 계속적으로 제어하도록 검증(Verify) 동작을 실행한다. 그러므로, '1' 및 '0'의 분포에는, 상기 검증 동작이 완료되었는지의 여부를 판정하기 위한 검증 레벨(Verify level)이 제공된다.
여기서, 제어의 일례로서는, 제어 회로(Controller)(19)는, 데이터 기록 동작에 있어서, 제어 게이트에 인가되는 전압을 증가시키고, 전압 인가 시간을 증가시키며, 전압 인가 횟수를 증가시키는 것을 복합적으로 행함으로써 각 메모리 셀 의 임계치 전압을 목표 레벨로 설정한다. 또한, 데이터 소거 동작에 있어서도, 마찬가지로, 반도체 기판 내의 p 웰(Pwell)에 인가되는 전압을 증가시키고, 전압 인가 시간을 증가시키며, 전압 인가 횟수를 증가시키는 것을 복합적으로 행함으로써 각 메모리 셀의 임계치 전압을 목표 레벨로 설정한다. 이와 같은 방식으로 하여, 프로그램된 데이터는, 도 43에 도시되는 바와 같이, 소정의 '1' 및 '0'의 분포 폭을 갖는다.
데이터의 판독에 있어서는, '0' 분포와 '1' 분포 사이의 중간점에 판독 전압(Threshold of read level)을 설정한다. 그것에 의해, 각 메모리 셀이 어느 쪽의 데이터를 유지하고 있는지를 판별한다. 구체적으로는, 제어 게이트(CG)에 판독 전압을 인가했을 때에, 메모리 셀(MC)이 온 상태가 되면 '1'이라고 판별하고, 메모리 셀(MC)이 오프 상태인 채로 있으면 '0'이라고 판별한다.
또, 상기 검증 동작을 실행한 경우에, 상기 검증 동작을 행하지 않은 경우와 비교해서, 임계치 분포가 좁아지게 된다. 이것은, 메모리 셀들 간에 한 번의 기록 전압의 인가로 주입되는 전자의 량에 변동이 있어, 더 일찍 프로그래밍되는 메모리 셀과, 더 이후에 프로그래밍되는 메모리 셀이 존재하기 때문이다. 그러므로, 한 번의 기록 전압의 인가 시마다 각 메모리 셀의 임계치 전압을 검사한다. 검증 레벨에 도달한 메모리 셀에 대해서는, 이후의 전자 주입을 금지(억제)한다. 검증 레벨에 도달하지 않은 메모리 셀에 대해서는 다시 한번 기록 전압을 인가하여 전자 주입을 계속한다. 그 결과, 검증 동작을 실행하지 않는 경우와 비교하여, 임계치 분포는 좁아지게 된다.
<다중 레벨 메모리 셀 (MLC: Multi Level Cell)의 임계치 분포>
다음에, 도 44를 참조하여, 다중 레벨 메모리 셀(MLC: Multi Level Cell)의 임계치 분포에 관해서 설명한다.
다중 레벨 메모리 셀에서는, 상기 프로그램된 상태(Programmed state)에 있어서의 전자의 주입량을 미세하게 제어한다. 이에 따라서, 예컨대 1개의 메모리 셀에 2비트를 기억하는 경우에는 4개의 임계치 분포를 형성한다. 또한, 1개의 메모리 셀에 3비트를 기억하는 경우에는 8개의 임계치 분포를 형성한다.
다중 레벨 메모리 셀의 임계치 분포(Vth 분포) 중에서, 본 예에서는, 1개의 메모리 셀에 2비트의 데이터를 기록하는 예를 도시한다. 그러므로, 4개의 임계치 분포에 대하여, 임계치 전압이 낮은 쪽에서 순서대로, 도 44에 도시된 바와 같이, '11', '01', '00' 및 '10'을 할당한다. 또, 몇몇의 경우에는 편의상, 4개의 임계치 분포를 임계치 전압이 낮은 쪽에서 순서대로 'E' 레벨, 'A' 레벨, 'B' 레벨, 'C' 레벨이라고 칭해진다.
또한, 다중 레벨 메모리 셀의 데이터 기록의 경우에도, 상기 단일 레벨 메모리 셀의 데이터 기록과 마찬가지로, 목표로 하는 임계치 전압에 도달하도록 하는 방식으로, 적절하게 기록 동작을 제어한다. 또한, '11', '01', '00', '10' 분포의 각각에는, 마찬가지로 검증 레벨(Verify level)이 제공된다.
다중 레벨 메모리 셀에 있어서, 데이터 판독의 시에는, 각각의 분포 사이의 중간점에서, 판독 전압 TH1, TH2, TH3을 설정한다. 이에 따라서, 각 메모리 셀에 '11', '01', '00', '10'의 어느 쪽의 데이터를 기억하고 있는지를 판별한다.
여기서, 다수의 경우에, 비트가 TH2 이상인지의 여부에 따라서 식별 가능한 비트, 즉 도면에 있어서의 MSB 비트와, 비트가 TH1 이상이고 또한 TH3 이하인지의 여부에 따라서 식별 가능한 비트, 즉 도면에 있어서의 LSB 비트는, 각각 다른 페이지에 할당되고, 이들 페이지는 예컨대, "하위 페이지(Lower page)" 및 "상위 페이지(Upper page)"라고 칭해진다. 구체적으로는, TH1, TH2 및 TH3을 동시에 이용하여 하나의 페이지를 판독하는 것은 아니다. 하위 페이지(Lower page)를 판독하는 경우에는 TH2를 이용하고, 상위 페이지(Upper page)를 판독하는 경우에는 TH1 및 TH3을 이용한다.
본 발명의 특정 실시형태들을 설명했지만, 이들 실시형태는, 예로서만 제시한 것이고, 발명의 범위를 한정하도록 의도하지 않는다. 실제로, 본 명세서에서 설명된 신규의 실시형태는, 그 밖의 여러 가지 형태로 실시되는 것이 가능하고, 더욱이 발명의 요지를 벗어나지 않는 범위에서, 여러 가지 생략, 치환 및 변경을 할 수 있다. 이들 실시형태나 그 변형은, 발명의 범위나 요지에 포함됨과 동시에, 특허청구의 범위에 기재된 발명과 그 균등의 범위에 포함된다.

Claims (18)

  1. 키 천이 레코드(key transition record)로 구성된 데이터 구조를 갖는 키 정보, 행렬 형태의 비밀 정보 XY, 및 상기 비밀 정보 XY를 암호화하여 생성되는 비밀 정보 XYE를 기억하는 피인증자와, 상기 피인증자를 인증하는 인증자 사이의 인증 방법으로서, 상기 인증 방법은:
    상기 인증자가 상기 피인증자로부터 수신하는 상기 키 정보로부터 상기 인증자의 장치 인덱스에 대응하는 레코드를 선택하여, 상기 레코드를 장치 키에 의해서 복호함으로써, 키 천이를 추출하는 단계; 및
    상기 인증자가 상기 피인증자로부터 수신하는 비밀 정보 XYE에 대하여, 대응하는 키 천이를 이용하여 복호 처리를 실행하여, 상기 비밀 정보 XY를 공유하는 단계
    를 포함하는 인증 방법.
  2. 제1항에 있어서, 상기 피인증자가, 상기 인증자가 생성하는 난수 B를 수신하는 단계;
    상기 피인증자가, 난수 A 및 데이터 v를 생성하는 단계(v는 1의 발생 확률 η를 가짐(η<0.5));
    상기 피인증자가, 생성된 난수 A 및 수신한 난수 B 중 적어도 일부로 이루어지는 난수 D를 생성하는 단계; 및
    상기 피인증자가, 상기 난수 D 및 상기 비밀 정보 XY 중 적어도 일부에 대하여 압축 연산을 실행하여 데이터 C를 생성하는 단계
    를 더 포함하는 인증 방법.
  3. 제2항에 있어서, 상기 데이터 C 및 상기 데이터ν로부터 얻어지는 연산 결과 Z를 상기 인증자에게 송신하는 단계;
    상기 인증자가, 생성된 난수 A 및 수신된 난수 B 중 적어도 일부로 이루어지는 난수 D를 생성하는 단계;
    상기 인증자가, 상기 난수 D 및 상기 비밀 정보 XY 중 적어도 일부에 대하여 압축 연산을 실행하여 데이터 C를 생성하는 단계; 및
    상기 인증자가, 수신된 연산 결과 Z 및 생성된 데이터 C를 이용하여 판정 처리를 실행하는 단계
    를 더 포함하는 인증 방법.
  4. 키 천이 레코드로 구성된 데이터 구조를 갖는 키 정보, 행렬 형태의 비밀 정보 XY, 및 상기 비밀 정보 XY를 암호화하여 생성되는 비밀 정보 XYE를 기억하도록 구성된 메모리;
    난수 A를 생성하도록 구성된 생성 모듈;
    생성된 난수 A 및 수신된 난수 B 중 적어도 일부로 이루어지는 난수 D를 생성하도록 구성된 생성 모듈;
    상기 난수 D 및 상기 메모리로부터 로드되는 상기 비밀 정보 XY에 대하여 압축 연산을 실행하여 데이터 C를 생성하도록 구성된 계산 모듈;
    데이터 v를 생성하도록 구성된 생성 모듈(v는 1의 발생 확률 η를 가짐(η<0.5)); 및
    상기 데이터 v 및 상기 데이터 C로부터 결과 Z를 계산하도록 구성된 비트별 가산 모듈
    을 포함하는 피인증자.
  5. 제4항에 있어서, 상기 행렬 형태의 데이터 구조를 갖는 상기 비밀 정보 XY는 비밀 정보 XYmain 및 XYsub로 이루어지고,
    상기 행렬 형태의 데이터 구조를 갖는 상기 암호화된 비밀 정보 XYE는 XYmainE 및 XYsubE로 이루어지는(데이터 사이즈: XYsub < XYmain, XYsubE < XYmainE) 것인 피인증자.
  6. 제5항에 있어서, 상기 비밀 정보 XYmain은 복수의 상기 피인증자를 포함하는 그룹에서 동일하고,
    상기 비밀 정보 XYsub는 상기 피인증자 사이에서 상이한 것인 피인증자.
  7. 키 천이 레코드로 구성된 데이터 구조를 갖는 키 정보, 행렬 형태의 비밀 정보 XY, 및 상기 비밀 정보 XY를 암호화하여 생성되는 비밀 정보 XYE를 기억하는 피인증자를 인증하는 인증자로서, 상기 인증자는:
    상기 피인증자로부터 수신된 상기 키 정보로부터 상기 인증자의 장치 인덱스에 대응하는 레코드를 선택하도록 구성된 분석 및 선택 모듈;
    상기 레코드를 장치 키에 의해서 복호하여, 키 천이를 추출하도록 구성된 복호 모듈;
    상기 피인증자로부터 수신된 상기 비밀 정보 XYE에 대하여, 대응하는 상기 키 천이를 이용하여, 복호 처리를 실행하고, 상기 비밀 정보 XY를 공유하도록 구성된 필터 및 복호 모듈;
    난수 B를 생성하도록 구성된 생성 모듈;
    생성된 난수 B 및 상기 피인증자로부터 수신된 난수 A 중 적어도 일부로 이루어지는 난수 D를 생성하도록 구성된 생성 모듈;
    상기 난수 D 및 상기 비밀 정보 XY 중 적어도 일부에 대하여 압축 연산을 실행하여, 데이터 C를 생성하도록 구성된 계산 모듈;
    상기 피인증자로부터 수신된 계산 결과로부터 상기 레코드 내의 인덱스에 대응하는 계산 결과 Z를 선택하도록 구성된 검사 모듈; 및
    생성된 데이터 C 및 선택된 계산 결과 Z를 이용하여, 판정 처리를 실행하도록 구성된 판정 모듈
    을 포함하는 인증자.
  8. 제7항에 있어서, 상기 행렬 형태의 데이터 구조를 갖는 상기 비밀 정보 XY는 비밀 정보 XYmain 및 XYsub로 이루어지고,
    상기 행렬 형태의 데이터 구조를 갖는 상기 암호화된 비밀 정보 XYE는 XYmainE 및 XYsubE로 이루어지는(데이터 사이즈: XYsub < XYmain, XYsubE < XYmainE) 것인 인증자.
  9. 제8항에 있어서, 상기 비밀 정보 XYmain은 복수의 상기 피인증자를 포함하는 그룹에서 동일하고,
    상기 비밀 정보 XYsub는 상기 피인증자 사이에서 상이한 것인 인증자.
  10. 피인증자 ID 및 비밀 정보 XY를 기억하는 피인증자와, 인증자 ID 및 고유 비밀 정보(Unique XY)를 기억하는 인증자 사이의 인증 방법으로서, 상기 인증 방법은:
    상기 피인증자가, 요구되는 상기 피인증자 ID를 상기 인증자에게 송신하는 단계;
    상기 인증자가, 취득되었던 상기 피인증자 ID 및 상기 인증자에 의해 처리된 상기 고유 비밀 정보(Unique XY)에 대해 비선형 처리를 실행하여, 고유치(Unique XY for Memory and Device)를 획득하는 단계; 및
    상기 피인증자가, 송신되었던 상기 인증자 ID 및 상기 피인증자에 의해 처리된 상기 비밀 정보 XY에 대해 일방향 함수 처리를 실행하여, 상기 비밀 정보(Unique XY)를 공유하는 단계
    를 포함하는 인증 방법.
  11. 제10항에 있어서, 상기 피인증자가, 상기 피인증자에 의해 처리된 상기 피인증자 ID 및 공유되는 상기 비밀 정보 XY에 대해 비선형 처리를 실행하여, 고유치(Unique XY for Memory and Device)를 획득하는 단계를 더 포함하는 인증 방법.
  12. 제11항에 있어서, 상기 피인증자가, 상기 인증자가 생성하는 난수 B를 수신하는 단계;
    상기 피인증자가, 난수 A 및 데이터 v를 생성하는 단계(v는 1의 발생 확률 η를 가짐(η<0.5));
    상기 피인증자가, 생성된 난수 A 및 수신된 난수 B 중 적어도 일부로 이루어지는 난수 D를 생성하는 단계;
    상기 피인증자가, 상기 난수 D 및 상기 고유치(Unique XY for Memory and Device) 중 적어도 일부에 대하여 압축 연산을 실행하여 데이터 C를 생성하는 단계;
    상기 데이터 C 및 상기 데이터ν로부터 얻어지는 연산 결과 Z를 상기 인증자에게 송신하는 단계;
    상기 인증자가, 생성된 난수 A 및 수신된 난수 B 중 적어도 일부로 이루어지는 난수 D를 생성하는 단계;
    상기 인증자가, 상기 난수 D 및 상기 고유치(Unique XY for Memory and Device) 중 적어도 일부에 대하여 압축 연산을 실행하여 데이터 C를 생성하는 단계; 및
    상기 인증자가, 수신된 연산 결과 Z 및 생성된 데이터 C를 이용하여 판정 처리를 실행하는 단계
    를 더 포함하는 인증 방법.
  13. 피인증자 ID 및 비밀 정보 XY를 기억하도록 구성된 메모리;
    인증자로부터 전송되는 인증자 ID 및 피인증자에 의해 처리된 상기 비밀 정보 XY에 대해 일방향 함수 처리를 실행하여, 고유 비밀 정보 XY를 출력하도록 구성된 일방향 함수 처리 모듈; 및
    상기 피인증자 ID 및 고유 비밀 정보(Unique XY)에 대해 비선형 처리를 실행하여, 상기 인증자와 고유치(Unique XY for Memory and Device)를 공유하도록 구성된 비선형 처리 모듈
    을 포함하는 피인증자.
  14. 제13항에 있어서, 상기 일방향 함수 처리 모듈은:
    장치 키를 이용하여 입력에 대해 암호 해독 처리를 실행하도록 구성된 암호 박스; 및
    상기 입력과 상기 암호 박스의 출력 사이에서 배타적 논리합 처리를 실행하도록 구성된 배타적 논리합 회로
    를 구비하는 것인 피인증자.
  15. 제13항에 있어서, 상기 비선형 처리 모듈의 출력에 대해 미리 결정된 연산을 실행하도록 구성된 계산 회로를 더 포함하는 피인증자.
  16. 인증자 ID 및 고유 비밀 정보(Unique XY); 및
    피인증자로부터 취득되는 피인증자 ID 및 인증자에 의해 처리된 고유 비밀 정보(Unique XY)에 대해 비선형 처리를 실행하여, 상기 피인증자와 고유치(Unique XY for Memory and Device)를 공유하도록 구성된 비선형 처리 모듈
    을 포함하는 인증자.
  17. 제16항에 있어서, 상기 비선형 처리 모듈의 출력에 대해 미리 결정된 연산을 실행하도록 구성된 계산 회로를 더 포함하는 인증자.
  18. 제16항에 있어서, 상기 피인증자 ID에 대해 에러 정정 처리를 실행하고, 상기 비선형 처리 모듈에 출력을 출력하도록 구성된 에러 정정 모듈을 더 포함하는 인증자.
KR1020137022688A 2011-06-17 2012-02-17 인증자, 피인증자 및 인증 방법 KR20130129431A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2011135644A JP2013005293A (ja) 2011-06-17 2011-06-17 認証コンポーネント、被認証コンポーネントおよびその認証方法
JPJP-P-2011-135644 2011-06-17
PCT/JP2012/054500 WO2012172832A2 (en) 2011-06-17 2012-02-17 Authenticator, authenticatee and authentication method

Publications (1)

Publication Number Publication Date
KR20130129431A true KR20130129431A (ko) 2013-11-28

Family

ID=45976989

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137022688A KR20130129431A (ko) 2011-06-17 2012-02-17 인증자, 피인증자 및 인증 방법

Country Status (7)

Country Link
US (1) US9544138B2 (ko)
EP (1) EP2721767A2 (ko)
JP (1) JP2013005293A (ko)
KR (1) KR20130129431A (ko)
CN (1) CN103404077A (ko)
TW (1) TWI491239B (ko)
WO (1) WO2012172832A2 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012227901A (ja) * 2011-04-22 2012-11-15 Toshiba Corp 認証コンポーネント、被認証コンポーネントおよびその認証方法
US8661527B2 (en) 2011-08-31 2014-02-25 Kabushiki Kaisha Toshiba Authenticator, authenticatee and authentication method
US9124432B2 (en) 2012-05-25 2015-09-01 Kabushiki Kaisha Toshiba Host device and authentication method for host device
US10223688B2 (en) 2012-09-24 2019-03-05 Samsung Electronics Co., Ltd. Competing mobile payment offers
US20140279566A1 (en) * 2013-03-15 2014-09-18 Samsung Electronics Co., Ltd. Secure mobile payment using media binding
KR101489686B1 (ko) * 2013-08-13 2015-02-04 고려대학교 산학협력단 차량용 네트워크의 전자제어장치간 인증 방법
US20150244520A1 (en) * 2014-02-21 2015-08-27 Safe Frontier Llc One-time-pad data encryption with media server
CN104301104B (zh) * 2014-06-20 2019-05-10 齐亚斌 一种数字证书签名的方法和系统
US9578004B2 (en) * 2014-09-12 2017-02-21 Ca, Inc. Authentication of API-based endpoints
JP6743702B2 (ja) * 2014-10-23 2020-08-19 日本電気株式会社 Macタグリスト生成装置、macタグリスト検証装置、macタグリスト生成方法、macタグリスト検証方法およびプログラム
CN112287389A (zh) * 2015-03-03 2021-01-29 旺德海尔斯有限责任公司 机器可读标识符中加密数据的访问控制
TWI625733B (zh) * 2017-02-22 2018-06-01 旺宏電子股份有限公司 產生積體電路固有資訊的裝置及方法
US10291594B2 (en) 2017-08-31 2019-05-14 Fmr Llc Systems and methods for data encryption and decryption
CN107908574B (zh) * 2017-11-22 2021-09-10 深圳华中科技大学研究院 固态盘数据存储的安全保护方法
US11522693B2 (en) * 2018-02-06 2022-12-06 Sony Corporation Information processing device and information processing method
US11496314B2 (en) * 2019-12-18 2022-11-08 Intel Corporation Integrity protected command buffer execution

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450491A (en) * 1993-08-26 1995-09-12 At&T Corp. Authenticator card and system
US6704489B1 (en) * 1999-05-06 2004-03-09 Matsushita Electric Industrial Co., Ltd. Resource management system and digital video reproducing/recording apparatus
JP4011792B2 (ja) 1999-06-16 2007-11-21 株式会社東芝 記録方法、再生方法、記録装置、再生装置及び記録媒体
US6934389B2 (en) * 2001-03-02 2005-08-23 Ati International Srl Method and apparatus for providing bus-encrypted copy protection key to an unsecured bus
US7143443B2 (en) * 2001-10-01 2006-11-28 Ntt Docomo, Inc. Secure sharing of personal devices among different users
US7095856B2 (en) * 2002-03-29 2006-08-22 Motorola, Inc. Method and apparatus to maintain encryption synchronization in a multi-modulation TDM system
US20040086121A1 (en) * 2002-10-31 2004-05-06 Sensis Corporation Secure automatic dependant surveillance
US7908479B2 (en) * 2003-07-28 2011-03-15 Sony Corporation Information processing device and method, recording medium and program
CN100568366C (zh) * 2004-01-15 2009-12-09 松下电器产业株式会社 内容再现装置
WO2005121972A1 (en) * 2004-06-14 2005-12-22 Research In Motion Limited Method and system for securing data utilizing redundant secure key storage
JP2006201895A (ja) 2005-01-19 2006-08-03 Fujitsu Ltd 認証鍵および認証装置
US7620385B2 (en) * 2005-06-27 2009-11-17 Motorola, Inc. System and method for enhanced secret mode
FR2893165B1 (fr) * 2005-11-08 2008-01-25 Sagem Defense Securite Identification d'etiquette radiofrequence
US20080013721A1 (en) 2005-11-30 2008-01-17 Jing-Jang Hwang Asymmetric cryptography with discretionary private key
JP4994814B2 (ja) * 2006-12-05 2012-08-08 キヤノン株式会社 画像処理装置及びその制御方法
FR2916594A1 (fr) * 2007-05-23 2008-11-28 France Telecom Procede d'authentification d'une entite par une entite verificatrice
US8200985B2 (en) * 2007-09-20 2012-06-12 Broadcom Corporation Method and system for protecting data
EP2193626B1 (fr) 2007-09-26 2018-12-26 Orange Communication securisee entre une etiquette electronique et un lecteur
EP2249613B1 (en) * 2008-02-27 2017-10-25 Nippon Telegraph and Telephone Corporation Wireless communication method, base station, and wireless communication system
US8595504B2 (en) 2008-08-12 2013-11-26 Industrial Technology Research Institute Light weight authentication and secret retrieval
US8230219B2 (en) * 2008-08-12 2012-07-24 Texas Instruments Incorporated Reduced computation for bit-by-bit password verification in mutual authentication
US20100122082A1 (en) * 2008-10-08 2010-05-13 Leiwen Deng User identity validation system and method
US20100153731A1 (en) * 2008-12-17 2010-06-17 Information And Communications University Lightweight Authentication Method, System, and Key Exchange Protocol For Low-Cost Electronic Devices
US20100153719A1 (en) * 2008-12-17 2010-06-17 Information And Communications University Lightweight Authentication Method and System for Low-Cost Devices Without Pseudorandom Number Generator
US20100235626A1 (en) * 2009-03-10 2010-09-16 Kwon Eun Jung Apparatus and method for mutual authentication in downloadable conditional access system
CN101882197B (zh) * 2010-05-31 2012-07-04 北京航空航天大学 一种基于分级密钥的rfid询问-应答安全认证方法

Also Published As

Publication number Publication date
CN103404077A (zh) 2013-11-20
US20140289526A1 (en) 2014-09-25
WO2012172832A2 (en) 2012-12-20
TWI491239B (zh) 2015-07-01
TW201301838A (zh) 2013-01-01
US9544138B2 (en) 2017-01-10
WO2012172832A3 (en) 2013-05-23
JP2013005293A (ja) 2013-01-07
EP2721767A2 (en) 2014-04-23

Similar Documents

Publication Publication Date Title
TWI491239B (zh) 認證元件、被認證元件、及認證方法
KR101540875B1 (ko) 의사-난수 생성용 반도체 메모리 장치
US20140089675A1 (en) Authenticator, authenticatee and authentication method
KR101494992B1 (ko) 인증자, 피인증자 및 인증 방법
KR101494991B1 (ko) 인증자, 피인증자 및 인증 방법
KR101494990B1 (ko) 인증자, 피인증자 및 인증 방법

Legal Events

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