KR102692669B1 - 메모리의 특성을 이용한 키 생성 방법 및 장치 - Google Patents
메모리의 특성을 이용한 키 생성 방법 및 장치 Download PDFInfo
- Publication number
- KR102692669B1 KR102692669B1 KR1020160124008A KR20160124008A KR102692669B1 KR 102692669 B1 KR102692669 B1 KR 102692669B1 KR 1020160124008 A KR1020160124008 A KR 1020160124008A KR 20160124008 A KR20160124008 A KR 20160124008A KR 102692669 B1 KR102692669 B1 KR 102692669B1
- Authority
- KR
- South Korea
- Prior art keywords
- key
- ecc
- cell
- memory
- generating
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000012937 correction Methods 0.000 claims abstract description 15
- 238000009826 distribution Methods 0.000 description 21
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000001186 cumulative effect Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
단말의 고유 특성을 나타내는 키를 생성하는 방법 및 장치가 제공된다. 특히 단말의 고유 특성은 메모리의 고유 특성일 수 있다. 기록된 원본 데이터를 독출하여 생성된 리드 데이터에 대한 오류 정정 부호 및 원본 데이터 대한 오류 정정 부호를 비교하고, 오류 정정 부호들 간의 차이에 기반하여 메모리에 대한 키가 생성될 수 있다.
Description
아래의 실시예들은 키를 생성하기 위한 방법 및 장치에 관한 것으로, 보다 상세하게는 장치의 고유 특성을 나타내는 키를 생성하기 위한 방법 및 장치에 관한 것이다.
각각의 장치 또는 하드웨어(Hardware)에는 고유 식별자(IDentifier; ID)가 부여될 수 있다. 임의로 장치에 고유 ID가 부여되는 경우, 고유 ID가 복제되거나 변경될 가능성이 있다. 예를 들어, 휴대폰의 USIM(Universal Subscriber Identity Module)에는 가입자 식별 정보가 포함될 수 있는데, 가입자 식별 정보는 복제가 가능하여, 정당한 사용자가 아닌 사용자에 의해 가입자 식별 정보가 이용될 수 있다. 다른 예로, 매체 접근 제어 주소(Media Access Control Address)는 각 장치에 대한 고유 주소로 설정되나, 소프트웨어를 통해 변경될 수 있다.
일 측면에 따르면, 키 생성 방법은, 원본 데이터에 대한 제1 오류 정정 부호(Error Correcting Code; ECC)를 획득하는 단계, 상기 원본 데이터가 기록된 메모리의 셀 어레이(cell array)로부터 리드(read) 데이터를 획득하는 단계, 상기 리드 데이터에 대한 제2 ECC를 생성하는 단계, 상기 제1 ECC 및 상기 제2 ECC가 동일하지 않은 경우, 상기 메모리의 셀 어레이 중 오류가 발생한 셀의 위치를 획득하는 단계, 및 상기 오류가 발생한 셀의 위치에 기반하여 상기 메모리에 대한 키(key)를 생성하는 단계를 포함한다.
상기 원본 데이터는 임의적으로(randomly) 생성된 데이터일 수 있다.
상기 메모리는, 낸드 플래시(NAND Flash) 메모리일 수 있다.
상기 제1 ECC를 획득하는 단계는, 조정된 쓰기 전압을 이용하여 상기 셀 어레이의 미리 설정된 영역에 싱글 레벨 셀(Single Level Cell; SLC) 방식으로 기록된 상기 제1 ECC를 독출하는 단계일 수 있다.
상기 리드 데이터를 획득하는 단계는, 상기 셀 어레이의 미리 설정된 영역에 다중 레벨 셀(Multi Level Cell; MLC) 방식으로 기록된 상기 원본 데이터를 독출하여 상기 리드 데이터를 획득하는 단계일 수 있다.
상기 오류는 하드 오류(Hard error) 및 소프트 오류(soft error) 중 적어도 하나일 수 있다.
상기 오류가 발생한 셀의 위치를 획득하는 단계는, 상기 셀의 위치를 2차원의 좌표로 표시하는 단계를 포함할 수 있다.
상기 2차원의 좌표는 상기 셀 어레이의 페이지 번호에 대한 차원 및 상기 페이지 번호의 비트 번호 또는 바이트 번호에 대한 정보를 나타내는 차원을 포함할 수 있다.
상기 오류가 발생한 셀의 위치를 획득하는 단계는, 상기 셀 어레이의 블록 단위로 상기 오류가 발생한 셀의 위치를 획득하는 단계일 수 있다.
상기 키를 생성하는 단계는, 상기 리드 데이터를 획득하는 단계, 상기 제2 ECC를 생성하는 단계 및 상기 오류가 발생한 셀의 위치를 획득하는 단계가 복수 회 수행됨으로써 생성된, 복수의 셀의 위치들 중 미리 설정된 조건을 만족하는 셀의 위치에 대해서만 상기 키를 생성하는 단계를 포함할 수 있다.
상기 키를 생성하는 단계는, 상기 셀의 위치가 2차원의 좌표로 획득되는 경우, 상기 셀의 2차원 좌표들을 1차원의 값으로 변환하여 상기 키를 생성하는 단계를 포함할 수 있다.
다른 일 측면에 따르면, 키 생성 장치는, 원본 데이터 및 상기 원본 데이터에 대한 제1 오류 정정 부호(Error Correcting Code; ECC)가 기록된 셀 어레이(cell array), 및 상기 셀 어레이로부터 상기 원본 데이터를 독출하여 리드(read) 데이터를 획득하고, 상기 리드 데이터에 대한 제2 ECC를 생성하는 메모리 컨트롤러를 포함하는 메모리, 및 상기 제1 ECC 및 상기 제2 ECC가 동일하지 않은 경우, 상기 셀 어레이 중 오류가 발생한 셀의 위치를 획득하고, 상기 오류가 발생한 셀의 위치에 기반하여 상기 메모리에 대한 키(key)를 생성하는 프로세서를 포함한다.
또 다른 일 측면에 따르면, 단말 인증 방법은, 메모리로부터 메모리의 특정 영역에 기록된 데이터를 독출하여 리드(read) 데이터를 획득하는 단계, 상기 리드 데이터에 대한 오류 정정 부호(Error Correcting Code: ECC)에 기반하여 제1 키를 생성하는 단계, 상기 제1 키 및 미리 저장된 제2 키를 비교하는 단계, 및 상기 제1 키 및 상기 제2 키가 동일한 메모리부터 생성된 것으로 판단된 경우, 상기 단말을 인증하는 단계를 포함한다.
상기 제1 키를 생성하는 단계는, 프로세서의 보안 영역에서 수행될 수 있다.
상기 제2 키는 상기 프로세서의 보안 영역에 저장될 수 있다.
상기 단말 인증 방법은 상기 ECC를 생성하는 단계를 더 포함하고, 상기 ECC를 생성하는 단계는, 상기 데이터를 복수 회 독출하여 복수의 리드 데이터 세트들을 생성하는 단계, 및 상기 복수의 리드 데이터 세트들에 기반하여 상기 ECC를 생성하는 단계를 포함할 수 있다.
상기 복수의 리드 데이터 세트들에 기반하여 상기 ECC를 생성하는 단계는, 상기 복수의 리드 데이터 세트들을 이용하여 리드 데이터를 결정하는 단계, 및 상기 결정된 리드 데이터에 대한 ECC를 생성하는 단계를 포함할 수 있다.
상기 메모리는, 낸드 플래시(NAND Flash) 메모리일 수 있다.
도 1은 일 예에 따른 단말 인증 방법을 도시한다.
도 2는 일 실시예에 따른 키 생성 장치의 구성도이다.
도 3은 일 예에 따른 원본 데이터 및 제1 오류 정정 부호를 기록하는 방법의 흐름도이다.
도 4는 일 예에 따른 임계 전압 분포를 조정하는 방법을 도시한다.
도 5는 일 실시예에 따른 키 생성 방법의 흐름도이다.
도 6은 일 예에 따른 오류가 발생한 셀을 포함하는 셀 어레이를 도시한다.
도 7은 일 예에 따른 오류가 발생한 셀의 위치가 표시된 2차원의 좌표를 도시한다.
도 8은 일 예에 따른 키를 생성하는 방법을 도시한다.
도 9는 일 실시예에 따른 단말 인증 방법의 흐름도이다.
도 10은 일 예에 따른 보안 영역을 이용하여 단말을 인증하는 방법을 도시한다.
도 11은 일 예에 따른 리드 데이터에 대한 오류 정정 부호를 생성하는 방법의 흐름도이다.
도 12는 일 예에 따른 복수의 리드 데이터 세트들에 기반하여 오류 정정 부호를 생성하는 방법의 흐름도이다.
도 13은 일 예에 따른 단말을 부팅하는 방법의 흐름도이다.
도 14는 일 예에 따른 암호화된 파일을 복호화하는 방법의 흐름도이다.
도 2는 일 실시예에 따른 키 생성 장치의 구성도이다.
도 3은 일 예에 따른 원본 데이터 및 제1 오류 정정 부호를 기록하는 방법의 흐름도이다.
도 4는 일 예에 따른 임계 전압 분포를 조정하는 방법을 도시한다.
도 5는 일 실시예에 따른 키 생성 방법의 흐름도이다.
도 6은 일 예에 따른 오류가 발생한 셀을 포함하는 셀 어레이를 도시한다.
도 7은 일 예에 따른 오류가 발생한 셀의 위치가 표시된 2차원의 좌표를 도시한다.
도 8은 일 예에 따른 키를 생성하는 방법을 도시한다.
도 9는 일 실시예에 따른 단말 인증 방법의 흐름도이다.
도 10은 일 예에 따른 보안 영역을 이용하여 단말을 인증하는 방법을 도시한다.
도 11은 일 예에 따른 리드 데이터에 대한 오류 정정 부호를 생성하는 방법의 흐름도이다.
도 12는 일 예에 따른 복수의 리드 데이터 세트들에 기반하여 오류 정정 부호를 생성하는 방법의 흐름도이다.
도 13은 일 예에 따른 단말을 부팅하는 방법의 흐름도이다.
도 14는 일 예에 따른 암호화된 파일을 복호화하는 방법의 흐름도이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
아래 설명하는 실시예들에는 다양한 변경이 가해질 수 있다. 아래 설명하는 실시예들은 실시 형태에 대해 한정하려는 것이 아니며, 이들에 대한 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 실시예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 일 예에 따른 단말 인증 방법을 도시한다.
사용자를 인증하는 방법, 더욱 구체적으로 사용자의 단말을 인증하는 방법으로, 단말의 고유 특성을 검증하는 방법이 이용될 수 있다. 단말의 고유 특성은 인증하려는 단말만이 가진 물리적 특성일 수 있다. 예를 들어, 고유 특성은 단말에 포함된 메모리에 대한 물리적 특성일 수 있다. 메모리는 데이터를 저장하는 셀들을 포함할 수 있는데, 포함된 셀들 중 오류가 발생하는 셀의 분포는 메모리의 고유 특성이 될 수 있다.
예를 들어, 인증을 받으려는 단말(100)은 프로세서(110) 및 메모리(120)를 포함할 수 있다. 프로세서(110)는 인증 요청을 메모리(120)로 전송할 수 있다. 인증 요청을 수신한 메모리(120)는 메모리(120)의 고유 특성을 반영한 정보를 프로세서(110)로 전송할 수 있다. 예를 들어, 고유 특성을 반영한 정보는 오류 정정 부호(Error Correcting Code; ECC)일 수 있다. 프로세서(110)는 메모리(120)의 정보를 이용하여 단말(100)이 오리지날(original) 단말인지, 복제된 단말인지를 판단할 수 있고, 단말(100)이 오리지날 단말인 경우, 단말(100)을 인증할 수 있다. 이 경우 전송되는 데이터에 암호화를 적용시켜 선로 해킹이 불가능하도록 할 수 있다.
도 2는 일 실시예에 따른 키 생성 장치의 구성도이다.
메모리로부터 생성된 ECC에 기반하여 단말을 인증하기 위한 키(key)가 생성될 수 있고, 이렇게 생성된 키에 기반하여 단말이 인증될 수 있다.
키 생성 장치(200)는 통신부(210), 프로세서(220) 및 메모리(230)를 포함할 수 있다.
통신부(210)는 외부의 장치와 데이터 또는 정보를 교환할 수 있다.
프로세서(220)는 하드웨어 프로세서일 수 있다. 프로세서(220)는 통신부(210)가 수신한 데이터 및 메모리(230)에 저장된 데이터를 처리한다.
메모리(230)는 메모리 컨트롤러(232) 및 셀 어레이(cell array)(234)를 포함할 수 있다. 메모리 컨트롤러(232)는 셀 어레이(234)를 제어하여 셀 어레이(234)에 데이터를 기록할 수 있다. 셀 어레이(234)는 복수의 셀들을 포함하고, 각각의 셀에는 데이터가 기록될 수 있다.
메모리(230)는 플래시 메모리(Flash Memory)일 수 있다. 예를 들어, 플래시 메모리는 낸드 플래시 메모리(NAND Flash Memory)일 수 있다.
통신부(210), 프로세서(220) 및 메모리(230)에 대해, 아래에서 도 3 내지 도 14를 참조하여 상세히 설명된다.
<원본 데이터 및 ECC 기록 방법>
도 3은 일 예에 따른 원본 데이터 및 제1 오류 정정 부호를 기록하는 방법의 흐름도이다.
단말을 인증하기 위한 키를 생성하기 전에, 키를 생성하기 위해 요구되는 원본 데이터 및 원본 데이터에 대한 ECC가 미리 생성될 수 있다. 예를 들어, 아래의 단계들(310 및 340)은 키 생성 장치(200) 또는 메모리(230)가 제조되는 과정에서 수행될 수 있다. 또한 단계들(310 및 340)은 프로세서(230)에 의해 수행되거나, 메모리(230)를 제조하는 장치에 의해 수행될 수 있다.
단계(310)에서, 원본 데이터가 결정될 수 있다. 예를 들어, 원본 데이터가 임의적(randomly)으로 생성될 수 있다. 다른 예로, 원본 데이터는 한번 기록되고 나서, 시스템 초기화 같은 특수한 상황이 발생하지 않는 한, 기록된 데이터가 변경되지 않는 펌웨어(firm ware) 또는 운영 체제(operation system)에 관한 데이터 일 수 있다. 또 다른 예로, 원본 데이터는 함수에 기반하여 생성될 수 있다. 원본 데이터가 함수에 기반하여 생성되는 경우, 원본 데이터는 매개 변수(parametric)일 수 있고, 매개 변수의 파라미터는 저장될 수 있다.
단계(320)에서, 원본 데이터에 대한 ECC가 생성될 수 있다. 원본 데이터에 대한 ECC는 제1 ECC로 명명될 수 있다.
단계(330)에서, 데이터를 기록하는 임계 기준 전압 또는 전압 분포의 폭을 조정할 수 있다. 예를 들어, 데이터를 트리플 레벨 셀(Triple Level Cell; TLC) 방식으로 기록할 수 있는 셀에 싱글 레벨 셀(Single Level Cell; SLC) 방식으로 원본 데이터를 기록하는 경우, 데이터의 쓰기 오류를 유도하기 위해, 의도적으로 데이터 기록 전압이 조정될 수 있다. 기록 전압이 조정됨에 따라, 전압 분포의 평균 값이 변화되고, 쓰기 오류 분포의 범위가 조정될 수 있다. 데이터 기록 전압을 조정하는 방법이 아래의 도 4를 이용하여 설명된다.
일 측면에 따르면, 제1 ECC를 기록하기 위한 기록 전압은 조정되지 않을 수 있다.
단계(340)에서, 원본 데이터 및 제1 ECC가 메모리(230)에 기록될 수 있다. 예를 들어, 원본 데이터 및 제1 ECC는 셀 어레이(234)의 미리 설정된 각각의 영역에 기록될 수 있다. 다른 예로, 원본 데이터 및 제1 ECC는 프로세서(230)의 미리 설정된 각각의 영역에 기록될 수 있다. 셀 어레이(234) 또는 프로세서(230)의 미리 설정된 영역은 사용자가 접근할 수 없는 영역일 수 있다.
일 측면에 따르면, 원본 데이터 및 제1 ECC가 미리 기록되어 있는 데이터인 경우 상기의 단계(340)는 수행되지 않을 수 있다.
일 측면에 따르면, 원본 데이터 및 제1 ECC는 SLC 방식, 멀티 레벨 셀(Multi Level Cell; MLC) 방식 또는 TLC 방식 중 하나의 방식으로 기록될 수 있다. 원본 데이터가 기록되는 방식과 제1 ECC가 기록되는 방식은 서로 다를 수 있다. 예를 들어, 원본 데이터는 조정된 기록 전압을 이용하여 MLC 방식으로 기록되고, 제1 ECC는 SLC 방식으로 기록될 수 있다. 제1 ECC가 독출될 때, 독출 오류가 발생하지 않도록 기록될 수 있다.
도 4는 일 예에 따른 임계 전압 분포를 조정하는 방법을 도시한다.
셀에 저장된 전압의 크기에 따라 데이터가 독출될 수 있다. 예를 들어, SLC 방식에서 임계 기준 전압(vref)을 기준으로, 기록된 데이터가 나타내는 비트(0 또는 1)가 결정될 수 있다.
데이터를 TLC 방식으로 기록할 수 있는 셀에 SLC 방식으로 제1 ECC가 기록된 경우에는, 데이터를 저장하기 위해 이용되는 전압 분포의 피크들 간의 거리가 멀기 때문에, 임계 기준 전압(vref) 주위에서 데이터가 독출될 가능성이 낮다. 데이터를 독출할 때 독출 오류가 발생하지 않는 경우, 메모리(230)의 고유 특성이 나타나지 않을 수 있다.
예를 들어, 제1 전압 분포(410)는 조정되기 전의 기록 전압 분포를 나타낸다. 제1 전압 분포(410)은 기록 전압 분포가 임계 기준 전압(vref) 주위에서 형성되지 않을 수 있다.
제2 전압 분포(420)는 조정된 기록 전압 분포일 수 있다. 예를 들어, 제2 전압 분포(420)는 제1 전압 분포(410)의 전압 분포 피크를 임계 기준 전압(vref) 쪽으로 조정한 전압 분포일 수 있다. 다른 예로, 제2 전압(420) 분포는 제1 전압 분포(410)의 폭을 조정한 전압 분포일 수 있다. 기록 전압 분포가 조정됨으로써 임계 기준 전압(vref) 주위에서 데이터가 독출될 가능성이 높아질 수 있다.
도 5는 일 실시예에 따른 키 생성 방법의 흐름도이다.
키 생성 방법은 아래의 단계들(510 내지 560)을 포함할 수 있다. 단계(510)는 단계(340)가 수행된 이후에 수행될 수 있다.
단계(510)에서, 프로세서(220)는 제1 ECC를 획득할 수 있다. 예를 들어, 셀 어레이의 미리 정해진 영역에 기록된 제1 ECC가 획득될 수 있다. 다른 예로, 프로세서(220)의 미리 정해진 영역에 기록된 제1 ECC가 획득될 수 있다. 프로세서(220)는 조정된 쓰기 전압을 이용하여 셀 어레이의 미리 설정된 영역에 싱글 레벨 셀 방식으로 기록된 제1 ECC를 독출할 수 있다.
단계(520)에서, 메모리 컨트롤러(232)는 리드 데이터를 획득할 수 있다. 예를 들어, 메모리 컨트롤러(232)는 원본 데이터가 기록된 셀 어레이(234)로부터 리드 데이터를 획득할 수 있다.
단계(530)에서, 획득된 리드 데이터에 대한 제2 ECC가 생성될 수 있다.
일 측면에 따르면, 메모리 컨트롤러(232)는 획득된 리드 데이터에 대한 제2 ECC를 생성할 수 있다. 생성된 제2 ECC는 프로세서(220)로 전송될 수 있다. 예를 들어, 셀 어레이의 블록 단위로 리드 데이터에 대해 제2 ECC가 생성될 수 있다.
다른 일 측면에 따르면, 메모리 컨트롤러(232)는 획득된 리드 데이터를 프로세서(220)로 전송하고, 프로세서(220)는 리드 데이터에 대한 제2 ECC를 생성할 수 있다. 즉, 데이터 처리 능력이 있는 처리 장치는 리드 데이터에 대한 제2 ECC를 생성할 수 있다.
단계(540)에서, 프로세서(220)는 생성된 제2 ECC가 제1 ECC와 동일한 것으로 간주될 수 있는지 여부를 판단할 수 있다. 제2 ECC는 독출 오류에 의해, 기록된 데이터를 그대로 반영하지 못할 수 있다. 독출 오류를 고려하여, 미리 설정된 범위 내에서 제1 ECC 및 제2 ECC가 동일한 것으로 간주될 수 있다. 예를 들어, Hamming distance 또는 Euclidean distance를 이용하여 제1 ECC 및 제2 ECC 간의 거리를 계산하고, 계산된 거리가 임계값 이하인 경우, 제1 ECC 및 제2 ECC는 동일한 것으로 간주될 수 있다. 이하에서 A 및 B가 "동일"하다는 표현은 A 및 B 간의 차이가 미리 설정된 임계값의 범위 내 인 것을 의미한다.
원본 데이터와 리드 데이터가 동일한 경우에는 제1 ECC 및 제2 ECC가 동일하나, 원본 데이터와 리드 데이터가 동일하지 않은 경우에는 제1 ECC 및 제2 ECC가 동일하지 않을 수 있다.
원본 데이터와 리드 데이터가 동일하지 않은 이유는, 1) 원본 데이터가 기록될 때, 기록되는 위치의 셀이 배드 셀(Bad Cell)인 원인 및 2) 데이터를 전압으로 기록할 때 발생하는 오류에 의한 원인일 수 있다. 배드 셀에 의한 오류는 하드 오류(hard error)이고, 기록할 때 발생하는 오류는 소프트 오류(soft error)일 수 있다.
제1 ECC 및 제2 ECC가 동일한 경우, 메모리(230)의 고유 특성이 나타나지 않으므로, 키 생성이 불가능할 수 있다. 배드 셀은 메모리(230)를 제조할 때, 예상할 수 없이 나타나는 것이므로, 메모리(230)의 고유 특성이 될 수 있다. 소프트 오류는 메모리(230)의 태생적인(natively) 고유 특성은 아니지만, 데이터가 기록될 때 발생한 오류는 재 기록되지 않는 한 유지되는 오류이므로 메모리(230)의 준 고유 특성이 될 수 있다.
단계(550)에서, 프로세서(220)는 제1 ECC 및 제2 ECC에 기반하여 오류가 발생한 셀의 위치를 획득할 수 있다. 제1 ECC가 정확한 데이터이므로, 제1 ECC 및 제2 ECC의 차이에 기반하여 오류가 발생한 셀의 위치가 획득될 수 있다. 프로세서(220)는 셀 어레이의 블록 단위로 오류가 발생한 셀의 위치를 획득할 수 있다.
예를 들어, 오류가 발생한 셀의 위치가 2차원의 좌표로 표시될 수 있다. 2차원의 좌표로 표시된 셀의 위치에 대해, 아래의 도 7을 참조하여 상세히 설명된다.
단계(560)에서, 프로세서(220)는 오류가 발생한 셀의 위치에 기반하여 메모리(230)에 대한 키를 생성할 수 있다. 예를 들어, 셀의 위치가 2차원의 좌표로 획득되는 경우, 셀의 2차원 좌표들을 1차원의 값으로 변환하여 키를 생성할 수 있다. 2차원의 데이터를 1차원으로 차원 감축(dimension reduction)하기 위해 LSH(Locality Sensitive Hashing)가 사용되는 경우 오류가 발생한 것으로 검출된 셀의 위치가 실제의 오류 셀의 위치와 정확하지 않은 경우에도, 오차를 보정할 수 있다. 오차는 독출 장애(Read Disturbance) 등의 원인으로 발생할 수 있다. 생성된 키는 해시 값(Hash Value)일 수 있다. 다른 예로, 2차원의 좌표가 메모리(230)에 대한 키일 수 있다. 오류가 발생한 셀의 위치가 표시된 2차원의 좌표는 키 패턴으로 명명될 수 있다.
도 6은 일 예에 따른 오류가 발생한 셀을 포함하는 셀 어레이를 도시한다.
도시된 셀 어레이는 메모리(230)에 포함된 복수의 셀 어레이 중 일부일 수 있다. 예를 들어, 도시된 셀 어레이는 하나의 블록(block)일 수 있다.
프로세서(220)는 제1 ECC 및 제2 ECC의 차이에 기반하여 오류가 발생한 셀의 위치를 획득할 수 있다. 예를 들어, 셀들(601 내지 605)은 배드 셀일 수 있고 셀(610)은 기록 장애(Write Disturbance)에 의해 오류가 발생한 셀일 수 있다. 배드 셀 및 기록 장애에 의해 오류가 유도될 수 있다.
도 7은 일 예에 따른 오류가 발생한 셀의 위치가 표시된 2차원의 좌표를 도시한다.
2차원의 좌표는 셀 어레이의 페이지 번호에 대한 차원 및 페이지 번호의 비트 번호 또는 바이트 번호에 대한 정보를 나타내는 차원을 포함할 수 있다. 예를 들어, 2차원 좌표의 x 축은 페이지 번호이고, y 축은 비트 번호 또는 바이트 번호일 수 있다.
도시된 2차원 좌표(700) 내에 표시된 포인트들(701 내지 705)은 도 6에서 전술된 배드 셀들(601 및 605)에 대응하고, 포인트(810)는 기록 장애에 의해 오류가 발생한 셀(610)에 대응할 수 있다.
도 8은 일 예에 따른 키를 생성하는 방법을 도시한다.
일 측면에 따르면, 전술된 리드 데이터를 획득하는 단계(520), 제2 ECC를 생성하는 단계(530) 및 오류가 발생한 셀의 위치를 획득하는 단계(550)가 복수회 수행될 수 있다. 단계들(520 내지 550)이 복수회 수행됨으로써 복수의 리드 데이터 세트들이 생성될 수 있다. 예를 들어, 50개의 리드 데이터 세트들이 생성될 수 있다.
누적 2차원 좌표(810)는 복수의 데이터 세트들을 이용하여 획득된 셀의 위치를 나타낸다. 누적 2차원 좌표(810)의 획득된 셀의 위치의 수를 누적하여 나타낸다. 누적된 횟수가 많을수록 포인트가 크게 표시될 수 있다.
복수의 데이터 세트들에 기반하여 오류가 발생한 셀의 위치가 최종적으로 결정될 수 있다. 미리 설정된 조건을 만족하는 셀의 위치가 최종적으로 결정될 수 있다. 예를 들어, 누적 횟수가 미리 설정된 횟수 이상인 셀의 위치가 최종적으로 선택될 수 있다.
일 측면에 따르면, 오류가 발생한 셀의 위치는 메모리의 특성을 나타낼 수 있으므로, 시각적인 목적(visualization purpose)을 위해 오류가 발생한 셀의 위치가 시각적으로 출력될 수 있다. 예를 들어, 오류가 발생한 셀은 정상적인 셀에 비해 과장되어 표현될 수 있다.
복수의 데이터 세트들을 생성함으로써 데이터를 독출할 때 임의적으로 발생할 수 있는 독출 장애에 의한 오류를 감소시킬 수 있다.
<단말 인증 방법>
아래의 도 9 내지 도 12를 참조하여, 메모리에 대한 ECC를 이용하여 생성된 키에 기반하여 단말을 인증하는 방법이 설명된다.
단말(200)의 인증 방법은 단말 스스로 인증을 수행하기 위해 이용될 수 있다. 예를 들어, 단말(200)을 이용하여 인터넷 금융 서비스를 이용하는 경우에 이용될 수 있다. 프로세서(220)는 단말(200)의 등록 과정에서 메모리(230)에 대한 키를 생성하고, 생성된 키를 보안 영역에 기록할 수 있다. 예를 들어, 보안 영역은 트러스트 존(Trust Zone)일 수 있다. 등록 후, 단말(200)의 인증을 위해 메모리(230)의 키가 생성될 수 있으며, 생성된 키와 보안 영역에 기록된 키가 동일한지 여부가 판단될 수 있다. 생성된 키와 보안 영역에 기록된 키가 동일한 경우, 단말(200)은 무결한 것으로 판단될 수 있다.
도 9는 일 실시예에 따른 단말 인증 방법의 흐름도이다.
단계(910)가 수행되기 전, 프로세서(220)는 단말 인증 요구를 수신할 수 있다. 예를 들어, 단말 인증 요구는 외부의 장치로부터 수신될 수 있다. 다른 예로, 단말 인증 요구는 단말의 부팅시에 요구될 수 있다.
단계(910)에서, 프로세서(220)는 메모리(230)에게 메모리(230)에 기록된 데이터에 대한 ECC를 요청할 수 있다. 기록된 데이터는 전술된 원본 데이터이고, ECC는 원본 데이터를 독출하여 생성된 리드 데이터에 대한 ECC일 수 있다. 리드 데이터에 대한 ECC는 전술된 제2 ECC일 수 있다. 원본 데이터는 메모리(230)의 특정 영역에 기록되어 있을 수 있다.
단계(920)에서, 메모리 컨트롤러(232)는 셀 어레이(234)에 기록된 원본 데이터를 독출하여 리드 데이터를 획득할 수 있다. 메모리 컨트롤러(232)는 리드 데이터에 대한 ECC를 생성할 수 있다. 실시예에 따라, 메모리 컨트롤러(232)가 리드 데이터를 프로세서(220)로 전송하고, 프로세서(220)가 리드 데이터에 대한 ECC를 생성할 수 있다.
단계(930)에서, 메모리 컨트롤러(232)는 생성된 ECC를 프로세서(220)로 전송할 수 있다. 실시예에 따라, 단계(920)에서 메모리 콘트롤러(232)가 리드 데이터를 프로세서(220)로 전송한 경우, 단계(930)는 수행되지 않을 수 있다.
단계(940)에서, 프로세서(220)는 ECC에 기반하여 제1 키를 생성할 수 있다. 예를 들어, 프로세서(220)의 보안 영역에서 제1 키가 생성될 수 있다.
일 측면에 따르면, 프로세서(220)는 원본 데이터에 대한 제1 ECC를 획득하고, 획득된 제1 ECC 및 메모리 컨트롤러(232)로부터 수신된 ECC를 비교하여, 제1 ECC 및 수신된 ECC 간의 차이에 기반하여 제1 키를 생성할 수 있다. 제1 ECC를 이용하여 제1 키를 생성하는 방법은 전술된 단계들(550 및 560)에 대한 설명이 유사하게 적용될 수 있으므로, 이하에서 생략한다.
다른 일 측면에 따르면, 프로세서(220)는 수신한 ECC를 이용하여 제1 키를 생성할 수 있다. 예를 들어, 생성된 ECC가 제1 키일 수 있다.
단계(950)에서, 프로세서(220)는 생성된 제1 키가 제2 키와 동일한 것으로 간주될 수 있는지 여부를 판단할 수 있다. 즉, 프로세서(220)는 제1 키 및 제2 키가 동일한 메모리부터 생성된 것인지 여부를 판단할 수 있다.
제2 키는 프로세서(220)가 미리 획득한 키일 수 있다. 제2 키는 제1 키의 무결성(integrity)을 검증하는 키로 이용될 수 있다. 제2 키는 단말(200)의 제조 시에 생성되어, 메모리(230)의 미리 설정된 영역 또는 프로세서(220)의 보안 영역에 미리 기록될 수 있다. 제2 키는 메모리(230)의 고유 특성을 반영한 데이터일 수 있다. 예를 들어, 제2 키는 도 2 내지 도 8을 참조하여 설명된 메모리(230)의 고유 특성에 기반하여 생성된 키일 수 있다. 제1 키와 제2 키가 동일한 것으로 판단된 경우 제1 키가 아닌 제2 키를 이용하여 해시 값을 생성할 수 있다.
일 측면에 다르면, 1차원의 값으로 변환된 제1 키 및 제2 키가 동일한지 여부가 판단될 수 있다. 다른 일 측면에 따르면, 제1 키의 키 패턴 및 제2 키의 키 패턴이 동일한지 여부가 판단될 수 있다.
제1 키 및 제2 키 간의 유사도를 비교하여 유사한 정도가 미리 설정된 임계값의 범위 내인 경우. 제1 키 및 제2 키는 동일한 것으로 판단될 수 있다. 제1 키 및 제2 키가 키 패턴인 경우, 유사도는 원점과 오류로 표시된 셀의 좌표 간의 각도 및 거리를 이용하여 계산될 수 있다.
단계(960)에서, 프로세서(220)는 제1 키 및 제2 키가 동일한 경우, 단말(200)을 인증할 수 있다.
도 10은 일 예에 따른 보안 영역을 이용하여 단말을 인증하는 방법을 도시한다.
프로세서(220)는 보안 영역(1010)을 포함할 수 있다. 예를 들어, 보안 영역(1010)은 암 트러스트 존(ARM Trust Zone)일 수 있다. 프로세서(220)는 일반 영역 및 보안 영역을 포함할 수 있다. 일반 프로그램은 일반 영역에서 수행될 수 있고, 보안이 요구되는 프로그램은 보안 영역에서 수행될 수 있다.
프로세서(220)는 보안 영역(1010)을 통해 메모리(230)에게 ECC를 요청할 수 있다. 메모리(230)는 ECC를 보안 영역(1010)으로 전송할 수 있다. 프로세서(220)는 보안 영역(1010) 내에서 수신한 ECC에 기반하여 제1 키를 생성하고, 제1 키 및 제2 키가 동일한지 여부를 판단할 수 있다.
도 11은 일 예에 따른 리드 데이터에 대한 오류 정정 부호를 생성하는 방법의 흐름도이다.
전술된 단계(920)는 아래의 단계들(1110 및 1120)을 포함할 수 있다.
단계(1110)에서, 메모리 컨트롤러(232)는 기록된 원본 데이터를 복수 회 독출하여 복수의 리드 데이터 세트들을 생성할 수 있다.
단계(1120)에서, 메모리 컨트롤러(232)는 복수의 리드 데이터 세트들에 기반하여 ECC를 생성할 수 있다. 복수의 리드 데이터 세트들에 기반하여 ECC를 생성하는 방법에 대해, 아래에서 도 12를 참조하여 상세히 설명된다.
도 12는 일 예에 따른 복수의 리드 데이터 세트들에 기반하여 오류 정정 부호를 생성하는 방법의 흐름도이다.
전술된 단계(1120)는 아래의 단계들(1210 및 1220)을 포함할 수 있다.
단계(1210)에서, 메모리 컨트롤러(232)는 복수의 리드 데이터 세트들을 이용하여 최종의 리드 데이터를 결정할 수 있다. 미리 정해진 횟수 이상 검출된 비트가 최종의 리드 데이터에 포함될 수 있다. 예를 들어, 최종의 리드 데이터 세트의 각각의 자리에는 복수의 리드 데이터 세트들에서 가장 많이 검출된 비트가 결정될 수 있다. 예를 들어, 리드 데이터의 5번째 자리에 비트 0이 2번 검출되고, 비트 1이 48번 검출된 경우, 최종의 리드 데이트의 5번째 자리에는 비트 1이 결정될 수 있다. 복수의 리드 데이터 세트들을 생성함으로써, 독출 장애에 따라 발생할 수 있는 오류를 감소시킬 수 있다.
단계(1220)에서, 메모리 컨트롤러(232)는 최종의 리드 데이터 세트에 대한 ECC를 생성할 수 있다.
<단말 부팅 방법>
도 13은 일 예에 따른 단말을 부팅하는 방법의 흐름도이다.
단계(1310)에서, 프로세서(220)는 첫 번째 부트 요소를 로드할 수 있다. 첫 번째 부트 요소는 롬(ROM)에 기록되어 있으므로, 첫 번째 부트 요소는 무결할 수 있다.
예를 들어, 첫 번째 부트 요소에 대한 부팅이 완료된 경우, 단계(1320)는 수행되지 않고, 단계(1330)가 수행될 수 있다. 다른 예로, 첫 번째 부트 요소에 대한 부팅이 완료된 경우, 단계(1420)에서 프로세서(220)는 다음 부트 요소의 검사가 성공한 것으로 간주할 수 있다.
단계(1330)에서, 프로세서(220)는 첫 번째 부트 요소에 대한 부트가 종료되는 경우, 물리적 복제 방지 기능(Physically Unclonable Function; PUF) 키를 메모리(230)를 이용하여 생성할 수 있다. 예를 들어, 프로세서(220)는 첫 번째 부트 요소가 반영된 메모리(230)의 셀 어레이(234)의 미리 정해진 영역에 대해 PUF 키를 생성할 수 있다. 예를 들어, PUF 키는 기록된 데이터에 대한 ECC에 기반하여 생성될 수 있다. 기록된 데이터는 첫 번째 부트 요소에 기반하여 기록될 수 있다.
일 측면에 따르면, PUF 키는 ECC 일 수 있다. 다른 일 측면에 따르면, PUF 키는 도 9를 참조하여 설명된 제1 키에 대응할 수 있다.
단계(1340)에서, 프로세서(220)는 다음 부트 요소가 존재하는지 여부를 판단할 수 있다.
단계(1350)에서, 프로세서(220)는 다음 부트 요소를 검사할 수 있다.
일 측면에 따르면, 원본의 다음 부트 요소에 대한 제1 고유 특징이 미리 추출되고, 제1 고유 특징이 PUF 키를 이용하여 미리 암호화될 수 있다. 단계(1340)에서 프로세서(220)는 이전 단계에서 생성된 PUF 키를 이용하여 암호화된 제1 고유 특징을 복호화할 수 있다. 프로세서(220)는 처리할 다음 부트 요소에 대한 제2 고유 특징을 추출하고, 제2 고유 특징이 제1 고유 특징과 동일한지 여부를 검사할 수 있다.
일 측면에 따르면, 다음 부트 요소는 셀 어레이(234) 중 데이터가 변경될 수 있는 영역에 기록될 수 있다. 외부에 의해 부트 요소가 변경된 경우에는 추출되는 제2 고유 특징이 제1 고유 특징과 상이할 수 있다. 제2 고유 특징이 제1 고유 특징과 상이한 경우, 부트 요소는 부정(dishonesty)한 것으로 간주될 수 있다.
프로세서(220)는 제2 고유 특징이 제1 고유 특징과 동일한 경우 다음 부트 요소를 이용하여 다음 부트를 수행할 수 있다.
단계(1320)에서, 프로세서(220)는 다음 부트가 실패하였는지 여부를 판단할 수 있다. 다음 부트가 실패한 경우, 단계(1360)가 수행될 수 있다.
다음 부트가 성공한 경우, 단계들(1330 내지 1350)이 반복적으로 수행될 수 있고, 다음 부트 요소가 존재하지 않는 경우 부팅이 완료될 수 있다.
<파일 복호화 방법>
도 14는 일 예에 따른 암호화된 파일을 복호화하는 방법의 흐름도이다.
단계(1410)에서, 프로세서(220)는 암호화된 파일을 수신할 수 있다. 예를 들어, 프로세서(220)의 보안 영역에 암호화된 파일이 수신될 수 있다.
단계(1420)에서, 프로세서(220)는 메모리(230)의 특정 영역에 대한 정보를 메모리(230)로 전송할 수 있다. 특정 영역에 대한 정보는 셀 어레이(234)의 좌표일 수 있다.
단계(1430)에서, 프로세서(220)는 상기의 특정 영역에 대한 PUF 키를 획득할 수 있다. 상기의 PUF 키는 메모리 컨트롤러(232)에 의해 생성될 수 있다. 예를 들어, 메모리(230)의 특정 영역들에 대한 각각의 PUF 키가 테이블로 저장되어 있을 수 있다. 특정 영역 및 PUF 키가 매칭되어 테이블의 형태로 저장될 수 있다. 테이블은 프로세서(220)의 보안 영역에 미리 저장될 수 있다.
예를 들어, 메모리 컨트롤러(232)는 상기의 특정 영역에 기록된 데이터에 대한 ECC를 생성할 수 있다. 메모리 컨트롤러(232)는 ECC를 해시 함수를 이용하여 해시화할 수 있다. 메모리 컨트롤러(232)는 해시화된 ECC에 기반하여 PUF 키를 생성하고, 생성된 PUF 키를 프로세서(220)로 전송할 수 있다.
단계(1440)에서, 프로세서(220)는 수신한 PUF 키에 기반하여 암호화된 파일을 복호화할 수 있다. 예를 들어, 수신한 PUF 키와 상기의 특정 영역에 대해 미리 저장된 PUF 키가 동일한지 여부를 판단하고, 수신한 PUF 키와 미리 저장된 PUF 키가 동일한 경우, 미리 저장된 PUF 키를 이용하여 암호화된 파일을 복호화할 수 있다. 예를 들어, 수신한 PUF 키 및 미리 저장된 PUF 키 간의 유사도를 비교하여 유사한 정도가 미리 설정된 임계값의 범위 내인 경우. 수신한 PUF 키와 미리 저장된 PUF 키는 동일한 것으로 판단될 수 있다. 파일이 복호화된 경우, 수신한 PUF 키는 보안 영역에서 삭제될 수 있다.
상기의 단계들(1410 내지 1440)과 유사하게, 파일을 암호화하는 방법도 설명될 수 있다. 프로세서(220)는 메모리(230)의 특정 영역에 대한 정보를 메모리(230)로 전송할 수 있다. 메모리(230)는 특정 영역에 대한 정보에 기반하여 PUF 키를 생성할 수 있다. 프로세서(220)는 미리 저장된 PUF 키에 기반하여 파일을 암호화할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
200: 단말
210: 통신부
220: 프로세서
230: 메모리
232: 메모리 컨트롤러
234: 셀 어레이
210: 통신부
220: 프로세서
230: 메모리
232: 메모리 컨트롤러
234: 셀 어레이
Claims (20)
- 원본 데이터에 대한 제1 오류 정정 부호(Error Correcting Code; ECC)를 획득하는 단계;
상기 원본 데이터가 기록된 메모리의 셀 어레이(cell array)로부터 리드(read) 데이터를 획득하는 단계;
상기 리드 데이터에 대한 제2 ECC를 생성하는 단계;
상기 제1 ECC 및 상기 제2 ECC가 동일하지 않은 경우, 상기 메모리의 셀 어레이 중 오류가 발생한 셀의 위치를 획득하는 단계; 및
상기 오류가 발생한 셀의 위치에 기반하여 상기 메모리에 대한 키(key)를 생성하는 단계
를 포함하는,
키 생성 방법. - 제1항에 있어서,
상기 원본 데이터는 임의적으로(randomly) 생성된 데이터인,
키 생성 방법. - 제1항에 있어서,
상기 메모리는,
낸드 플래시(NAND Flash) 메모리인,
키 생성 방법. - 제1항에 있어서,
상기 제1 ECC를 획득하는 단계는,
조정된 쓰기 전압을 이용하여 상기 셀 어레이의 미리 설정된 영역에 싱글 레벨 셀(Single Level Cell; SLC) 방식으로 기록된 상기 제1 ECC를 독출하는 단계인,
키 생성 방법. - 제1항에 있어서,
상기 리드 데이터를 획득하는 단계는,
상기 셀 어레이의 미리 설정된 영역에 다중 레벨 셀(Multi Level Cell; MLC) 방식으로 기록된 상기 원본 데이터를 독출하여 상기 리드 데이터를 획득하는 단계인,
키 생성 방법. - 제1 항에 있어서,
상기 오류는 하드 오류(Hard error) 및 소프트 오류(soft error) 중 적어도 하나인,
키 생성 방법. - 제1항에 있어서,
상기 오류가 발생한 셀의 위치를 획득하는 단계는,
상기 셀의 위치를 2차원의 좌표로 표시하는 단계
를 포함하는,
키 생성 방법. - 제7항에 있어서,
상기 2차원의 좌표는 상기 셀 어레이의 페이지 번호에 대한 차원 및 상기 페이지 번호의 비트 번호 또는 바이트 번호에 대한 정보를 나타내는 차원을 포함하는,
키 생성 방법. - 제1항에 있어서,
상기 오류가 발생한 셀의 위치를 획득하는 단계는,
상기 셀 어레이의 블록 단위로 상기 오류가 발생한 셀의 위치를 획득하는 단계인,
키 생성 방법. - 제1항에 있어서,
상기 키를 생성하는 단계는,
상기 리드 데이터를 획득하는 단계, 상기 제2 ECC를 생성하는 단계 및 상기 오류가 발생한 셀의 위치를 획득하는 단계가 복수 회 수행됨으로써 생성된, 복수의 셀의 위치들 중 미리 설정된 조건을 만족하는 셀의 위치에 대해서만 상기 키를 생성하는 단계
를 포함하는,
키 생성 방법. - 제1항에 있어서,
상기 키를 생성하는 단계는,
상기 셀의 위치가 2차원의 좌표로 획득되는 경우, 상기 셀의 2차원 좌표들을 1차원의 값으로 변환하여 상기 키를 생성하는 단계
를 포함하는,
키 생성 방법. - 제1항 내지 제11항 중 어느 한 항의 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
- 원본 데이터 및 상기 원본 데이터에 대한 제1 오류 정정 부호(Error Correcting Code; ECC)가 기록된 셀 어레이(cell array), 및 상기 셀 어레이로부터 상기 원본 데이터를 독출하여 리드(read) 데이터를 획득하고, 상기 리드 데이터에 대한 제2 ECC를 생성하는 메모리 컨트롤러를 포함하는 메모리; 및
상기 제1 ECC 및 상기 제2 ECC가 동일하지 않은 경우, 상기 셀 어레이 중 오류가 발생한 셀의 위치를 획득하고, 상기 오류가 발생한 셀의 위치에 기반하여 상기 메모리에 대한 키(key)를 생성하는 프로세서
를 포함하는,
키 생성 장치. - 단말 인증 방법에 있어서,
메모리로부터 메모리의 특정 영역에 기록된 데이터를 독출하여 리드(read) 데이터를 획득하는 단계;
상기 리드 데이터에 대한 오류 정정 부호(Error Correcting Code: ECC)에 기반하여 제1 키를 생성하는 단계;
상기 제1 키 및 미리 저장된 제2 키를 비교하는 단계; 및
상기 제1 키 및 상기 제2 키가 동일한 메모리부터 생성된 것으로 판단된 경우, 상기 단말을 인증하는 단계
를 포함하는,
단말 인증 방법. - 제14항에 있어서,
상기 제1 키를 생성하는 단계는,
프로세서의 보안 영역에서 수행되는,
단말 인증 방법. - 제15항에 있어서,
상기 제2 키는 상기 프로세서의 보안 영역에 저장된,
단말 인증 방법. - 제14항에 있어서,
상기 ECC를 생성하는 단계
를 더 포함하고,
상기 ECC를 생성하는 단계는,
상기 데이터를 복수 회 독출하여 복수의 리드 데이터 세트들을 생성하는 단계; 및
상기 복수의 리드 데이터 세트들에 기반하여 상기 ECC를 생성하는 단계
를 포함하는,
단말 인증 방법. - 제17항에 있어서,
상기 복수의 리드 데이터 세트들에 기반하여 상기 ECC를 생성하는 단계는,
상기 복수의 리드 데이터 세트들을 이용하여 리드 데이터를 결정하는 단계; 및
상기 결정된 리드 데이터에 대한 ECC를 생성하는 단계
를 포함하는,
단말 인증 방법. - 제14항에 있어서,
상기 메모리는,
낸드 플래시(NAND Flash) 메모리인,
단말 인증 방법. - 제14항 내지 제19항 중 어느 한 항의 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/428,677 US10572651B2 (en) | 2016-02-16 | 2017-02-09 | Key generating method and apparatus using characteristic of memory |
US16/747,839 US10915621B2 (en) | 2016-02-16 | 2020-01-21 | Key generating method and apparatus using characteristic of memory |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20160017671 | 2016-02-16 | ||
KR1020160017671 | 2016-02-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170096564A KR20170096564A (ko) | 2017-08-24 |
KR102692669B1 true KR102692669B1 (ko) | 2024-08-07 |
Family
ID=59758287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160124008A KR102692669B1 (ko) | 2016-02-16 | 2016-09-27 | 메모리의 특성을 이용한 키 생성 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102692669B1 (ko) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080158948A1 (en) | 2006-12-31 | 2008-07-03 | Sandisk Il Ltd. | Avoiding errors in a flash memory by using substitution transformations |
KR100857760B1 (ko) | 2007-05-15 | 2008-09-10 | 삼성전자주식회사 | 플래시 메모리를 이용한 암호키 저장 장치 및 그것의 보안방법 |
KR100955157B1 (ko) | 2008-12-24 | 2010-04-28 | 서울대학교산학협력단 | 메모리 장치 및 메모리 장치의 관리 방법 |
US20150121474A1 (en) | 2013-10-31 | 2015-04-30 | Samsung Electronics Co., Ltd. | Processor security authentication area |
US20160018998A1 (en) | 2014-07-17 | 2016-01-21 | Sandisk Enterprise Ip Llc | Methods and Systems for Scalable Reliability Management of Non-Volatile Memory Modules |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130044694A (ko) * | 2011-10-24 | 2013-05-03 | 삼성전자주식회사 | 메모리 시스템 및 그 데이터 기록 재생 방법 |
-
2016
- 2016-09-27 KR KR1020160124008A patent/KR102692669B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080158948A1 (en) | 2006-12-31 | 2008-07-03 | Sandisk Il Ltd. | Avoiding errors in a flash memory by using substitution transformations |
KR100857760B1 (ko) | 2007-05-15 | 2008-09-10 | 삼성전자주식회사 | 플래시 메모리를 이용한 암호키 저장 장치 및 그것의 보안방법 |
KR100955157B1 (ko) | 2008-12-24 | 2010-04-28 | 서울대학교산학협력단 | 메모리 장치 및 메모리 장치의 관리 방법 |
US20150121474A1 (en) | 2013-10-31 | 2015-04-30 | Samsung Electronics Co., Ltd. | Processor security authentication area |
US20160018998A1 (en) | 2014-07-17 | 2016-01-21 | Sandisk Enterprise Ip Llc | Methods and Systems for Scalable Reliability Management of Non-Volatile Memory Modules |
Also Published As
Publication number | Publication date |
---|---|
KR20170096564A (ko) | 2017-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101960036B1 (ko) | 비휘발성 저장 장치의 인증 방법 및 장치 | |
EP2538608B1 (en) | Semiconductor device and method of writing data to semiconductor device | |
KR20210131438A (ko) | 비밀 키를 이용한 아이덴티티 검증 | |
US11803366B2 (en) | Firmware updating system and method | |
US9136010B2 (en) | Method for generating physical identifier in storage device and machine-readable storage medium | |
US11755406B2 (en) | Error identification in executed code | |
TWI443517B (zh) | 記憶體儲存裝置及其記憶體控制器與密碼驗證方法 | |
US11271720B2 (en) | Validating data stored in memory using cryptographic hashes | |
CN116420145A (zh) | 基于多个组件的启动时间绑定的端点验证 | |
EP2568655B1 (en) | Method for authenticating a storage device, machine-readable storage medium, and host device | |
US10069825B2 (en) | Electronic device identification | |
US11669643B2 (en) | Block chain based validation of memory commands | |
US9318221B2 (en) | Memory device with secure test mode | |
KR102692669B1 (ko) | 메모리의 특성을 이용한 키 생성 방법 및 장치 | |
CN113826071A (zh) | 空中更新确认 | |
TWI748419B (zh) | 用於記憶體錯誤修正之系統及方法 | |
CN118094521A (zh) | 一种数据保护方法及安全芯片 | |
CN118694516A (zh) | 装置在不具有用于生成相应私钥的秘密的情况下校验公钥 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right |