KR102608961B1 - 장치 의존적 암호화 방법과 이를 수행하는 장치 - Google Patents

장치 의존적 암호화 방법과 이를 수행하는 장치 Download PDF

Info

Publication number
KR102608961B1
KR102608961B1 KR1020160094807A KR20160094807A KR102608961B1 KR 102608961 B1 KR102608961 B1 KR 102608961B1 KR 1020160094807 A KR1020160094807 A KR 1020160094807A KR 20160094807 A KR20160094807 A KR 20160094807A KR 102608961 B1 KR102608961 B1 KR 102608961B1
Authority
KR
South Korea
Prior art keywords
processor
cells
key
interest
hash
Prior art date
Application number
KR1020160094807A
Other languages
English (en)
Other versions
KR20170112888A (ko
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 KR20170112888A publication Critical patent/KR20170112888A/ko
Application granted granted Critical
Publication of KR102608961B1 publication Critical patent/KR102608961B1/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/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/0852Quantum cryptography
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • 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
    • 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/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3268Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Electromagnetism (AREA)
  • Storage Device Security (AREA)

Abstract

암호화되지 않은 디지털 콘텐트를 암호화하는 방법이 개시된다. 상기 방법은, 메모리 어레이의 관심 셀들의 물리적 특성과 관련된 아날로그 값을 측정하는 단계, 응답 키를 생성하기 위해 측정된 아날로그 값을 디지털화하는 단계, 적어도 상기 응답 키에 기초하여, 암호 키를 생성하는 단계, 상기 암호 키에 기초하여, 암호화된 디지털 콘텐트를 생성하기 위해 상기 암호화되지 않은 디지털 콘텐트를 암호화하는 단계 및 상기 암호화된 디지털 콘텐트를 저장하는 단계를 포함할 수 있다.

Description

장치 의존적 암호화 방법과 이를 수행하는 장치{METHOD FOR DEVICE-DEPENDENT ENCRYPTION AND APPARATUS PERFORMING THE SAME}
본 발명의 개념에 따른 실시 예는 암호화 방법에 관한 것으로, 특히 저장 장치에 저장된 콘텐트(content)의 보안성을 증가시키는 암호화 방법 및 상기 암호화를 수행하는 장치에 관한 것이다.
전기 통신(electronic communication)은 전자 장치들 사이의 데이터의 전송을 상대적으로 편리하게 하는(예컨대, 전자 장치들 사이의 유선 또는 무선 연결을 통하여) 이점이 있다. 하지만, 이러한 매끄러운(seamless) 데이터의 전송을 원하지 않는 경우도 있다.
예컨대, 특정 데이터의 물리적 소유주 또는 저작권자, 또는 이러한 데이터 내에서 수집(capture)된 대상(subject)은 상기 데이터가 인증된 전자 장치 내에 남아 있기를 바랄 수 있고, 상기 데이터가 다른 전자 장치들로 자유롭게 전송 가능하지 않기를 바랄 수 있다. 디지털 카메라 및/또는 모바일 장치를 통해 촬영된 사적인(private) 디지털 이미지들이 하나의 이러한 예시가 될 수 있다.
디지털 이미지의 본질적인 성질이, 상기 디지털 이미지를 관습적으로 자유롭게 전송 가능하게 하는 것이지만, 이러한 디지털 이미지들의 소유주 또는 이러한 디지털 이미지에서 수집된 대상은, 상기 이미지가 상기 디지털 카메라 및/또는 모바일 장치에 남아있기를 바랄 수 있다.
종래의 보호 기법은 디지털 데이터를 보호하는 것에 활용될 수 있다. 종래 보호 기법의 예시들은 전자 장치와 함께 사용자를 인증(authenticate)하고 디지털 데이터를 암호화하는, 디지털 식별자(digital identifier)로서의 키(key)를 사용하는 것을 포함할 수 있다.
그러나 상기 사용자가 인증될 때 혹은 상기 디지털 데이터가 복호화될 때, 상기 사용자는 상기 디지털 데이터를 자유롭게 전송할 수 있다. 나아가, 이러한 키들은 메모리에 저장되기 때문에, 이 디지털 식별자는 상기 키를 상기 메모리로부터 읽는(예컨대, 광학적 방법들 또는 그 밖에 유사한 것들로) 해커에 의해 우회될 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 저장 장치에 저장된 콘텐트의 보안성을 증가시킬 수 있는 암호화 방법, 복호화 방법 및 상기 암호화와 상기 복호화를 수행하는 보안 저장 장치를 제공하는 것에 있다.
본 발명의 실시 예에 따른 암호화 되지 않은 디지털 콘텐트를 암호화하는 방법은 메모리 어레이의 관심 셀들(interested cells)의 물리적 특성(physical property)과 관련된 아날로그 값을 측정하는 단계와, 응답 키(response key)를 생성하기 위해 측정된 아날로그 값을 디지털화하는 단계와, 적어도 상기 응답 키에 기초하여 암호 키(encryption key)를 생성하는 단계와, 상기 암호 키에 기초하여 암호화된 디지털 콘텐트를 생성하기 위해 상기 암호화되지 않은 디지털 콘텐트를 암호화하는 단계와, 상기 암호화된 디지털 콘텐트를 저장하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 암호화된 디지털 콘텐트를 복호화하는 방법은 상기 암호화된 디지털 콘텐트와 헬퍼(helper) 데이터를 메모리 어레이로부터 읽어오는 단계와, 상기 메모리 어레이의 관심 셀들의 물리적 특성과 관련된 아날로그 값을 측정하는 단계와, 응답 키의 추정치를 생성하기 위해 상기 측정된 아날로그 값을 디지털화하는 단계와, 응답 키를 재생성하기 위해 상기 응답 키와 연관된 상기 헬퍼 데이터를 이용하여 상기 응답 키의 추정치를 정정하는 단계와, 적어도 상기 응답 키에 기초하여 복호화 키를 생성하는 단계와, 암호화되지 않은 디지털 콘텐트를 생성하기 위해, 상기 복호화 키에 기초하여, 상기 암호화된 디지털 콘텐트를 복호화하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 보안 저장 장치는 메모리 어레이 및 프로세서를 포함하고, 상기 프로세서는 메모리 어레이의 관심 셀들의 물리적 특성과 관련된 아날로그 값을 측정하고, 응답 키를 생성하기 위해 측정된 아날로그 값을 디지털화하고, 적어도 상기 응답 키에 기초하여 암호 키를 생성하고, 상기 암호 키에 기초하여 암호화된 디지털 콘텐트를 생성하기 위해 상기 암호화되지 않은 디지털 콘텐트를 암호화하고, 상기 암호화된 디지털 콘텐트를 저장할 수 있다.
본 발명의 실시 예에 따른 보안 저장 장치는 상기 보안 저장 장치에 대한 어떠한 특별한 하드웨어적 변화 없이도, 상기 보안 저장 장치의 사용자가 상기 암호화된 콘텐트를 다른 장치 위에서 복호화하는 것을 어렵게 만듦으로써, 상기 보안 저장 장치에 저장된 콘텐트의 보안성을 증가시킬 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 보안 저장 장치의 개략적인 블록 도를 나타낸다.
도 2는 본 발명의 실시 예에 따른 보안 저장 장치의 프로세서의 기능 도를 나타낸다.
도 3은 본 발명의 실시 예에 따라, 적용된 게이트 소스 전압에 대한 트랜지스터의 전류 응답을 나타낸다.
도 4는 본 발명의 실시 예에 따라, 물리적 복제 방지 기능(physical unclonable function, F-PUF)에 기초한 암호 키를 사용하여 데이터를 암호화하는 방법을 나타낸다.
도 5는 본 발명의 실시 예에 따라, F-PUF 응답 키와 관련된 헬퍼 데이터를 생성하는 방법을 나타낸다.
도 6은 본 발명의 실시 예에 따라, 새지 않는 헬퍼 데이터를 생성하는 예시를 나타낸다.
도 7은 본 발명의 실시 예에 따라, 적어도 F-PUF 응답 키로부터 생성된 암호 키를 사용하여 데이터를 복호화하는 방법을 나타낸다.
도 8은 본 발명의 실시 예에 따라, 암호 키를 생성하기 위해 디지털 데이터를 F-PUF에 대한 시도(challenge)로서 활용하는 예시를 나타낸다.
도 9는 본 발명의 실시 예에 따라, 헬퍼 데이터를 활용하지 않고 F-PUF로부터 암호 키를 생성하고 재생성(reproduce)하는 예시를 나타낸다.
도 10은 본 발명의 실시 예에 따라, 잡음을 제거하기 위해 헬퍼 데이터를 활용하여 F-PUF로부터 암호 키를 생성하고 재생성하는 예시를 나타낸다.
도 11은 본 발명의 실시 예에 따른 보안 저자 장치를 포함하는 사용자 단말기(equipment)를 나타낸다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 보안 저장 장치를 나타낸다. 도 1을 참조하면, 보안 저장 장치(100)는 프로세서(200), 저장 장치(300) 및 펄스 생성기(400)를 포함할 수 있으나 이에 한정되는 것은 아니다. 실시 예에 따라, 프로세서(200)와 저장 장치(300)는 서로 연결되고 떨어진(separate) 장치들에 포함될 수 있다.
실시 예에 따라, 프로세서(200)는 산술 로직 장치(arithmetic logic unit( ALU)), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터 (microcomputer), FPGA(field programmable gate array), 프로그램 가능한 로직 장치(programmable logic unit), 마이크로프로세서(microprocessor) 또는 응답할 수 있고 정의된 방법에 따라 지시들(instructions)을 실행할 수 있는 다른 장치일 수 있다.
저장 장치(300)는 비-일시적인 컴퓨터로 판독 가능한 매체(non-transitory computer-readable medium)일 수 있다. 실시 예에 따라, 저장 장치(300)는 NAND 플래시 어레이일 수 있지만 이에 한정되는 것은 아니다. 예컨대, 저장 장치(300)는 RAM(random access memory), ROM(read only memory), 디스크 드라이브(disc drive), 플로피(floppy) 드라이브, 디스크, 테이프(tape), DVD(digital versatile disc), 콤팩트(compact) 디스크 및 CD-ROM 드라이브와 같은 영구적인 대용량 기억 장치(mass storage device)들 일 수 있다.
저장 장치(300)는 메모리 셀들, 행 복호기(row decoder), 및 열 복호기 (column decoder)를 포함할 수 있다.
아래에서 설명되는 것처럼, 상기 메모리 셀들 중 특정한 몇몇은 물리적 복제 방지 기능(physical unclonable function(PUF))을 생성하기 위하여 보류되는 저장 장치(300)의 보류 구역(reserved section; 315)일 수 있지만 이에 한정되는 것은 아니다. 예컨대, 저장 장치(300)가 NAND 플래시 어레이가 아닐 때, 보류 구역(315)은 분리된 개별(discrete) NAND 플래시 어레이 저장 장치일 수 있다.
본 명세서에서 보류 구역(315)은 보류 구역의 워드 라인(word line(WL)), 보류된 워드 라인(reserved word line) 및/또는 워드 라인을 의미할 수 있다.
나아가, 아래에서 도 4를 통해 자세히 설명되는 것처럼, 저장 장치(300)의 다른 구역은 암호화되지 않은 콘텐트(330)를 일시적으로 저장할 수 있고, 제1해시 (Hash1; 345)의 다이제스트(digest), 헬퍼 데이터(360), 및 암호화된 콘텐트(375)를 영구적으로 저장할 수 있다.
저장 장치(300)는 컴퓨터로 판독 가능한 코드를 포함할 수 있다. 상기 컴퓨터로 판독 가능한 코드는, 프로세서(200)에 의해 실행될 때, 프로세서(200)를 도 4, 도 5 및 도 7중 적어도 하나에 도시된 연산들(operations)을 수행하는 특수 목적 컴퓨터(special purpose computer)로 설정(configure)할 수 있다.
예컨대, 저장 장치(300)가 프로세서(200)에 의해 실행될 때, 프로세서(200)가 암호 키와 해당하는 헬퍼 데이터를 생성하고, 상기 암호 키를 이용하여 디지털 파일을 암호화하고, 상기 헬퍼 데이터를 사용하여 상기 생성된 암호 키를 재생성함으로써 상기 디지털 파일을 복호화하도록 설정하는 컴퓨터로 판독 가능한 코드를 포함할 수 있다.
펄스 생성기(400)는 ISPP(incremental step pulse programming) 장치일 수 있다. 상기 ISPP 장치는, 저장 장치(300)의 워드 라인에 점진적으로 증가하는 프로그램 전압을 적용함으로써, 저장 장치(300)의 부분적이거나 중지된(aborted) 프로그래밍을 수행할 수 있다. 상기 프로그램 전압은 상기 프로그램 전압이 상기 목적 메모리 셀을 적절하게 프로그램할 수 있을 만큼 충분한 수준에 도달할 때까지 일련의 단계별 증가를 통해 점진적으로 증가할 수 있다.
일련의 단계별 증가 대신에, 또 다른 실시 예에 따르면 상기 프로그램 전압의 점진적인 증가 대신에 단지 하나의 펄스 또는 두 개의 펄스들이 충분한 프로그램 전압에 도달하기 위해 적용될 수 있다.
도 2는 본 발명의 실시 예에 따른 보안 저장 장치의 프로세서의 기능 도를 나타낸다. 도 2를 참조하면, 프로세서(200)는 상기 프로세서(200)를 하나 또는 그 이상의 암호화 장치(200A)와 복호화 장치(200B)로 설정하는 코드를 실행할 수 있다.
예컨대, 프로세서(200)는 프로세서(200)가 아래에서 도 4, 도 5 및 도 7을 참조하여 설명될 하나 또는 그 이상의 제1해시 생성기(210), F-PUF 장치(220), 제2해시 생성기(230), 키 생성기(240), 및 블록 암호기(250)의 기능을 수행하도록 프로세서(200)를 설정하는 코드를 실행할 수 있으나 이에 한정되는 것은 아니다. 예컨대, F-PUF 장치(220)는 자체의 개별 프로세서 및/또는 컨트롤러를 가지는 분리된 장치일 수 있다.
F-PUF 장치(220)는, 예컨대, 점진적으로 증가하는 프로그램 전압을 보류 구역(315)의 워드 라인에 적용함으로써, NAND 플래시 어레이 저장 장치(300)의 보류 구역(315)의 부분적이거나 중지된 프로그래밍을 수행할 수 있다.
상기 프로그램 전압은 상기 프로그램 전압이 상기 목적 메모리 셀을 적절하게 프로그램할 수 있을 만큼 충분한 수준에 도달할 때까지 일련의 단계별 증가를 통해 점진적으로 증가할 수 있다. 일련의 단계별 증가 대신에, 또 다른 실시 예에 따르면 상기 프로그램 전압의 점진적인 증가 대신에 단지 하나의 펄스 또는 두 개의 펄스들이 충분한 프로그램 전압에 도달하기 위해 적용될 수 있다.
아래에서 자세히 설명되는 것처럼, 공정상의 변동으로 인해, 보류 구역(315) 내의 다른 셀들은 그들 각각의 상태를 변화시키고 주어진 전압 문턱에 도달하기 위해 서로 다른 수의 증가 단계 펄스(incremental step pulse)들을 요구할 수 있다.
보안 저장 장치(100)는, 셀 각각의 상태를 변화시키기 위한 상기 서로 다른 수의 증가 단계 펄스들의 분포에 기초하여, 유일한(unique) 지문(fingerprint), 예컨대, 서명(signature)을 생성하기 위해, 보류 구역(315)과 연관된 상기 워드 라인 내의 셀들을 부분적으로 프로그래밍함으로써, 상기 공정상의 변수들을 이용할 수 있다. 상기 유일한 지문은 디지털 문서를 암호화하고 복호화하는 데 사용될 수 있다. 서로 다른 칩들 및/또는 동일한 칩의 다른 장소에서 생성된 지문들이 서로 상당히 다를 때, 지문은 유일하다고 여겨질 수 있다.
실시 예에 따라, 프로세서(200)는 프로그래밍 연산, 읽기 연산 및 지우기 연산을 수행하고 저장 장치(300)의 전반적인 작동들을 제어하기 위해 필요한, 다양한 전압들을 생성할 수 있다. 예컨대, 프로세서(200)는 저장 장치(300)와 연관된 상기 행 복호기 및 상기 열 복호기의 각각의 작동들을 제어하기 위한 제어 신호들을 생성할 수 있다. 실시 예에 따라, F-PUF 장치(220)가 개별 장치일 때, F-PUF 장치(220)와 연관된 컨트롤러는 앞서 언급한 기능들을 수행할 수 있다.
상기 행 복호기는 프로세서(200)로부터 출력된 행 제어 신호들(예컨대, 행 어드레스 신호들)을 복호화할 수 있고, 상기 복호화의 결과에 따라 복수의 행 선택 신호들을 출력할 수 있다. 상기 열 복호기는 프로세서(200)로부터 출력된 열 제어 신호들(예컨대, 열 어드레스 신호들)을 복호화할 수 있고, 상기 복호화의 결과에 따라 복수의 열 선택 신호들을 출력할 수 있다.
저장 장치(300)는 데이터가 저장된 다양한 영역을 가지는 NAND 플래시 어레이일 수 있고, 상기 저장된 데이터는 상기 NAND 플래시 어레이와 연관된 트랜지스터에 전압을 적용함으로써 쓰인 데이터일 수 있다. 저장 장치(300)는 워드 라인들과 비트 라인들 각각이 서로 교차하는 지점들 위에 형성된 플로팅 게이트 트랜지스터(floating gate transistor)들을 포함하는 메모리 셀들을 포함할 수 있다.
실시 예에 따라, 상기 NAND 플래시 어레이는 3차원 수직구조(3D vertical) NAND(예컨대, VNAND) 일 수 있다. 여기서 3차원 수직구조 NAND란, 적어도 하나의 메모리 셀이 다른 메모리 셀 위에 위치하도록 스트링(string)들이 수직으로 향하는 NAND 플래시 메모리를 뜻할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 포획막(charge trap layer)를 포함할 수 있다.
도 3은 본 발명의 실시 예에 따라, 플로팅 게이트 트랜지스터의 게이트-소스 전압에 따른 전류 응답을 나타낸다.
도 3을 참조하면, 플로팅 게이트 트랜지스터(310)는 소스(312)와 드레인(314) 사이에 위치한 두 개의 게이트(316 및 318)들을 가지는 트랜지스터이다. 두 개의 게이트(316 및 318)들은 플로팅 게이트(316) 위(top)에 쌓인 컨트롤 게이트(318)를 포함하고, 플로팅 게이트(316)는, 컨트롤 게이트(318)와 전도성 채널 사이에 배치된 산화물(oxide)에 의해 둘러싸인 절연 전도체(insulation conductor)로 인해 전기적으로 절연되어 있다.
프로세서(200)는 플로팅 게이트 위에 음전하를 선택적으로 포획함으로써, 데이터를 상기 셀들 내에 저장할 수 있다. 포획된 음전하는, 상기 트랜지스터가 켜졌을 때(on) 상기 채널을 통해 흐르는 전류를 감소시킨다. 그 후에, 데이터를 읽을 때, 프로세서(200)는 이러한 전류의 차이를 감지하고, 상기 차이를 적절한 이진 값(binary value)로 변환한다.
n-타입 트랜지스터에서, 전도성 채널은 상기 소스 단과 상기 드레인 단에 저절로 존재하지 않을 수 있다. 나아가, p-타입 트랜지스터에서, 상기 전도성 채널은 저절로, 전자들이 쉽게 흐를 수 있을 만큼 충분하게 넓지 않을 수 있다. 그러므로 게이트-소스 전압(VGS)이 상기 소스와 상기 드레인 사이의 상기 전도성 채널을 생성하기 위해 필요할 수 있다. 상기 플로팅 게이트 트랜지스터의 문턱 전압(VT)은 전하들이 상기 플로팅 게이트 트랜지스터의 소스 단과 상기 드레인 단 사이를 흐르게 하는 충분한 전도성 채널을 형성하기 위해 필요한 최소한의 게이트-소스 전압의 차이이다.
저장 장치(300) 내의 상기 플로팅 게이트 트랜지스터는 상기 제조 공정상의 제어 불가능한 요소들 때문에 약간 작은 편차들을 가질 수 있다. 예컨대, 도핑 농도의 편차, 상기 플로팅 게이트 산화물의 두께 및 상기 컨트롤 게이트의 커플링 비율은 각 트랜지스터의 문턱 전압의 편차를 야기할 수 있다.
이러한 편차들은 문턱 전압에 있어 약간의 차이들을 야기할 수 있다. 그 결과, "0" 상태를 확실히(reliably) 나타내기 위해 셀의 플로팅 게이트 내에 저장된 전하들의 양은 셀마다 다르다.
실시 예에 따라, "시도"는 저장 장치(300)의 워드 라인(315) 내의 셀들의 번호/위치에 대한 그 다음의 ISPP-like 절차를 통한 초기 소거(initial erase)를 포함하는 저장 장치(300)의 설정 절차를 의미할 수 있다. 실시 예에 따라, "응답"은 상기 문턱(상기 ISPP-like 절차 내의 펄스들의 번호에 의해 나타내어지는)을 의미할 수 있다.
즉, "시도"는 저장 장치(300)의 워드 라인(315) 내의 셀들의 번호/위치에 대한 단일 펄스의 그 다음의 응용(application)을 통한, NAND 플래시의 초기 소거를 포함하는 설정 절차를 의미할 수 있고, "응답"은 주어진 셀의 상태(상기 단일 펄스에 응답하여 프로그램되거나, 혹은, 프로그램되지 않은 상태로 남아있는)를 의미할 수 있다. 상기 트랜지스터의 문턱 전압들의 예측할 수 없는(그러나 반복 가능한) 차이들은 유일한 시도 응답 특성을 가지는 PUF를 생성하는데 사용되는 물리적 자극으로서 활용될 수 있다.
플래시 메모리는 3개의 주된 연산들: 읽기 연산, 삭제 연산 및 프로그램(쓰기) 연산을 제공한다. 이들 연산들은 데이터 구성단위(unit)들로 수행된다. 페이지(page)는 데이터가 읽히거나 쓰이는 데 있어서 가장 작은 단위이고 보통 2KB에서 8KB이다. 반면에, 블록(block)은 데이터가 삭제될 수 있는 가장 작은 단위이고, 보통 몇몇 페이지들로 구성되어 있다(예컨대, 32 내지 128페이지). 나아가, 아래에서 자세히 설명되는 것처럼, F-PUF 플래시 패키지(100)는 상기 NAND 플래시 어레이의 하나 또는 그 이상의 워드 라인들을 부분적으로 프로그램할 수 있고, 그 후에, 이들 워드 라인들의 셀들을 프로그램하는데 사용되었던 펄스들의 수(즉, "프로그래밍 시간")에 기초하여 지문을 형성할 수 있다.
그러나, PUF 응답의 아날로그적 본질 때문에, 상기 PUF 응답들은 잡음이 많다. 따라서, 상기 PUF 응답들을 암호 키로서 직접 사용하는 것은 어려울 수 있다.
상기 잡음 문제를 해결하기 위해 다시 도 1과 도 2를 참조하면, 암호화 단계 동안, 보안 저장 장치(100)는 F-PUF 응답 키를 생성할 뿐만 아니라, PUF 응답에 기초하여 해당하는 헬퍼 데이터(360)도 생성한다. 복호화 단계 동안, 보안 저장 장치(100)는 그 다음의 PUF 응답으로부터 상기 F-PUF 응답 키를 생성하기 위해, 상기 헬퍼 데이터(360)를 활용할 수 있다.
아래에서 자세히 설명되는 것과 마찬가지로, 실시 예에 따라, 이 헬퍼 데이터는 상기 F-PUF 응답 키에 대한 적어도 약간의 정보를 드러낼 수 있는, ‘새는(leaky)’ 헬퍼 데이터일 수 있다. 실시 예에 따라, 상기 헬퍼 데이터는, 미국 특허 출원 14/699,354(발명의 명칭: Non-leaky helper data: extracting unique cryptographic key from noisy F-PUF fingerprint, 상기 출원의 모든 내용은 참조문헌으로서 포함됨)에서 설명되는 것처럼, 상기 F-PUF 응답 키에 대한 정보를 거의 드러내지 않는 "새지 않는(non-leaky)" 헬퍼 데이터일 수 있다.
도 4는 본 발명의 실시 예에 따라, 물리적 복제 방지 기능(physical unclonable function(F-PUF))에 기초한 암호 키를 사용하여 데이터를 암호화하는 방법을 나타낸다.
도 1, 도 2 및 도 4를 참조하면, 단계 S400에서, 암호화 장치(200A)로 프로그램된 프로세서(200)는 암호화되지 않은 콘텐트(330)를 제공받을 수 있다. 예컨대, 프로세서(200)는 디지털 이미지를 수집함으로써, 상기 암호화되지 않은 콘텐트(330)를 생성할 수 있다. 실시 예에 따라, 프로세서(200)는 저장 장치(300)로부터 미리 생성된 암호화되지 않은 콘텐트(330)을 회수할 수 있다.
단계 S410에서, 프로세서(200)는 제1해시(Hash1, 345)를 생성할 수 있다. 예컨대, 프로세서(200)는 제1해시 생성기(210)의 기능을 할 수 있고, 바라던(혹은, 대신에, 미리 정해진) 수의, 암호화되지 않은 콘텐트(300)의 비트들을 이용하여 제1해시(Hash1, 345)를 생성할 수 있다. 실시 예에 따라, 프로세서(200)는 암호화되지 않은 콘텐트(330)의 처음 128비트들을 제1해시(Hash1, 345)로서 이용할 수 있다.
단계 S420에서, 프로세서(200)는 저장 장치(300)의 보류된 워드 라인(315)을 부분적으로 프로그래밍하고, 제1해시(Hash1, 345)에 기초하여 읽어져야 할 보류 워드 라인(315)의 셀을 선택함으로써 F-PUF 응답 키 및 해당하는 헬퍼 데이터(360)를 생성할 수 있다. 상기 F-PUF 응답 키의 생성과 상기 해당하는 헬퍼 데이터(360)의 생성에 대한 세부 사항은 도 5를 참조하여 아래에서 설명된다.
단계 S430에서 프로세서(200)는, 적어도 상기 F-PUF 응답 키 또는 상기 장치의 디지털 지문에 의해 유일하게 결정된 다른 키에 기초하여 암호 키를 생성하는, 키 생성기(240)의 기능을 수행할 수 있다. 예컨대 실시 예에서, 프로세서(200)는 상기 F-PUF 응답 키를 상기 암호 키로 활용할 수 있다.
실시 예에 따라, 프로세서(200)는 상기 암호 키를 생성하기 위해, 상기 F-PUF 응답 키 및 암호(password)(대신에, 개인 식별 번호(personal identification number, PIN) 또는 상기 사용자와 관련된 어떠한 생체 정보(biometric data))를 활용할 수 있다.
예컨대, 프로세서(200)는 사용자 본인과 관련된 암호 또는 PIN을 표시(indicate)하는 상기 사용자로부터 입력을 수신할 수 있다. 프로세서(200)는 제2해시 생성기(230)의 기능을 수행할 수 있고, 상기 사용자로부터 제공받은 암호 또는 PIN에 기초하여 제2해시(Hash2)를 생성할 수 있다. 예컨대, 프로세서(200)는 주어진 비트의 수와 동일하게 대응(map)시키기 위해 상기 암호(또는, 상기 PIN 또는 생체 정보)에 해시 함수를 수행할 수 있다. 실시 예에 따라, 프로세서(200)는 상기 암호, PIN 또는 사용자의 생체 정보를 128, 256, 512 또는 다른 수의 비트들로 대응시킴으로써, 제2해시(Hash2)를 생성할 수 있다.
실시 예에 따라, 프로세서(200)는 XOR 함수를 상기 F-PUF 응답 키 및 제2해시(Hash2)에 대해 수행함으로써 상기 암호 키를 생성할 수 있으나, 본 발명의 실시 예가 이에 한정되는 것은 아니다. 예컨대, 다른 실시 예에서, 프로세서(200)는 상기 위에서 설명된 입력들(예컨대, 상기 장치 특유 지문, PIN, 암호, 및/또는 생체 정보)에 의해 유일하게 결정된 상기 암호 키를 생성하기 위해 상기 F-PUF 응답 키 및 제2해시(Hash2)에 대해 다른 함수들을 수행할 수 있다.
실시 예에 따라, 상기 암호 키는 대칭 키 암호(암호화와 복호화에 동일한 키가 사용되는 암호)의 대칭 키(symmetric key)일 수 있으나, 본 발명의 실시 예가 이에 한정되는 것은 아니다. 실시 예에 따라, 상기 암호 키는 128비트, 256비트, 512 비트 또는 다른 길이의 암호 키 중 하나일 수 있다.
단계 S440에서, 프로세서(200)는 상기 암호 키를 사용하여 암호화되지 않은 콘텐트(330)에 블록 암호를 수행함으로써, 암호화된 콘텐트(375)를 생성할 수 있다.
예컨대, 실시 예에서, 프로세서(200)는 ISO/IEC(International Organization of Standards/International Electrotechnical Commission) 180333-3 표준에 따라 정의된 암호 키를 이용하여, 암호화되지 않은 콘텐트(330)에 대하여 AES(advanced encryption standard) 암호화를 수행할 수 있다.
AES는 문서 또는 다른 디지털 콘텐트의 보안을 보장하기 위해 평문(plain text)을 암호문으로 암호화하고 상기 암호문을 평문으로 복호화하는, 대칭 암호화/복호화 표준이다.
프로세서(200)는 상기 F-PUF 응답 키와 함께 다른 입력들(예컨대, PIN, 암호 및/또는 생체 정보)에 기초하여 생성된 상기 암호 키를 이용하여, 상기 AES 알고리즘을 수행함으로써, 상기 암호화되지 않은 콘텐트(330)를 128비트 데이터 블록들로 암호화할 수 있다. 예컨대, 이를 달성하기 위해, 프로세서(200)는 평문의 각 블록이 암호화되기 전에, 이전 암호문 블록과 XOR되는 CBC(cipher block chaining) 방식과 같은 다른 연산 방식을 사용할 수 있다.
단계 S450에서, 프로세서(200)는 제1해시(Hash1, 345), 헬퍼 데이터(360) 및 암호화된 콘텐트(375)를 저장 장치(300)에 저장할 수 있으나, 본 발명의 실시 예가 이에 한정되는 것은 아니다. 예컨대, 프로세서(200)는 암호화된 콘텐트(375)를 생성하기 이전에, 제1해시(Hash1, 345)와 헬퍼 데이터(360)를 저장 장치(300)에 저장할 수 있다.
단계 S460에서, 프로세서(200)는 상기 암호화되지 않은 콘텐트(330)를 저장 장치(300)로부터 삭제할 수 있다. 실시 예에 따라, 프로세서(200)는 암호화되지 않은 콘텐트(330)를 여러 번 겹쳐 씀(overwrite)으로써, 암호화되지 않은 콘텐트(330)가 저장 장치(300)로부터 제거되었는지를 확실히 할 수 있다. 실시 예에 따라, 프로세서(200)는 암호화되지 않은 콘텐트(330)를 보관하는 저장 장치(300)의 영역에 대해 Trim 명령을 수행할 수 있다.
보안 장치(100)가 저장 장치(300)의 분명한(distinct) F-PUF 응답에 적어도 부분적으로 기초하여 상기 암호 키를 생성하기 때문에, 보안 저장 장치(100)에 의해 생성된 암호화된 콘텐트(375)는 보안 저장 장치(100)에 구속될 수 있다.
도 5는 본 발명의 실시 예에 따라, F-PUF 응답 키 및 관련된 헬퍼 데이터를 생성하는 방법을 나타낸다.
도 5를 참조하면, 단계 S421에서 프로세서(200)는 NAND 저장 장치(300)의 보류된 워드 라인(315)을 삭제할 수 있다. 단계 S422에서, 프로세서(200)는 보류된 워드 라인(315)의 셀들을 프로그램하기 위해 활용되는 짧은(short) 전압 펄스들의 수를 결정할 수 있고, 프로세서(200)는 펄스 생성기(400)가 보류된 워드 라인(315)으로 상기 결정된 수의 짧은 전압 펄스들을 공급하도록 지시할 수 있다.
프로세서(200)는 NAND 플래시 어레이(300)의 보류된 워드 라인(315)의 셀들 중, 충분한 양의 셀들을 플립(flip)시키는 짧은 전압 펄스들의 수를 결정할 수 있다.
상기 충분한 양의 셀들은 상기 물리적인 F-PUF 응답 키를 생성하기에 충분한 데이터를 생성할 수 있는 충분한 양의 셀들을 뜻할 수 있다. 예컨대, 프로세서(200)는 실험적인 데이터에 기초하여, 생성해야 할 펄스들의 수로 미리 프로그램되어 있을 수 있다. 각 펄스 후에, 프로세서(200)는 보류된 워드 라인(315)의 선택된 셀들의 상태를 감지하기 위해 부분적인 읽기 또는 전체 읽기를 수행할 수 있다.
프로세서(200)는 보류된 워드 라인(315)의 셀들 중, 최소한 90%의 셀들이 프로그램되도록 하는 짧은 (전압) 펄스들의 수를 결정할 수 있다. 실시 예에 따라, 프로세서(200)는 보류된 워드 라인(315)의 셀들 중, 다수의 셀들이 프로그램 되도록 하는 짧은 (전압) 펄스들의 수를 결정할 수 있다.
실시 예에 따라, 프로세서(200)는 짧은 ISPP-like 펄스를 탐지하는 대신에, 단지 보류된 워드 라인(315)을 단일 펄스로 프로그램하고, 읽기 연산을 수행하고, 상기 단일 펄스에 의해 데이터로서 프로그램되었던 셀들의 분포를 활용할 수 있다.
단계 S423에서, 프로세서(200)는 제1해시(Hash1, 345)에 기초하여 보류된 워드 라인(315)의 셀들 중 관심 셀(interested cell)들을 결정할 수 있다. 예컨대, 제1해시(Hash1, 345)는 다음과 같은 방법으로 상기 관심 셀들을 정의할 수 있다: 하나의 워드 라인은 약 216개의 다른 셀들을 포함하고 있기 때문에, 상기 해시의 각 16비트들은 상기 주어진 셀 번호를 유일하게 결정할 수 있다. 그러므로 예컨대, 암호화되지 않은 콘텐트로 256개의 셀을 정의하기 위해서, 프로세서(200)는 상기 해시 출력의 256*16비트들을 활용할 수 있다.
단계 S424에서, 프로세서(200)는 보류된 워드 라인(315) 내의 상기 관심 셀들 중, 선택된 문턱을 통과한 관심 셀들을 결정하기 위해서, 상기 관심 셀들로부터 데이터를 읽을 수 있다.
실시 예에 따라, 과도한 플래시 웨어링(flash wearing)을 방지하기 위해, 프로세서(200)는 각 펄스가 보류된 워드 라인(315)로 전송된 후 "부분 읽기 연산"을 수행할 수 있다. 상기 부분 읽기 연산은, 상기 프로세서(200)가 관심 셀들 중 하나의 셀에 저장된 전압의 실제 값을 읽지 않고, 상기 셀이 문턱보다 위에 있는지 혹은 아래에 있는지를 판단하는 연산을 의미할 수 있다.
실시 예에 따라, 프로세서(200)는 각 펄스가 전송된 후 "전체 읽기 연산"을 수행할 수 있다. 상기 전체 읽기 연산은 복수의 부분 읽기 연산들을 포함하는 연산을 의미할 수 있다. 예컨대, 프로세서(200)는 보류된 워드 라인(315)을 부분적으로 프로그램하기 위해 아래의 [알고리즘 1]을 수행할 수 있다.
[알고리즘 1]
펄스들의 수(Np), 초기 전압(V0), ISPP_step, 블록의 번호(BlockNum), 워드 라인의 번호(WL) 및 사전에 정의된 전압 문턱(Vt)를 선택;
Ncells = 하나의 워드 라인에 포함된 셀들의 수;
Threshold[Ncells]; //
PartialReadResult[Ncells]; //
Erase_block(BlockNum);
for CellNum=1 to Ncells do {
Threshold[CellNum]=-1;
}
For pulse_count = 1 to Np do {
ISPP_program(BlockNum,WL,V0 + pulse_count*ISPP_step);
Partial_read(BlockNum,WL,Vt);
for CellNum=1 to N_cells do {
If Threshold[CellNum]=-1 and PartialReadResult[CellNum]=1
then Threshold[CellNum]=pulse_count
// 그 결과, 워드 라인 내의 각 셀의 펄스들의 문턱 개수는
// Threshold[CellNum]에 축적된다.
}
}
도 5에는 도시되어 있지 않지만, 프로세서(200)는 상기 읽기 연산에 기초해서, 바라던 수만큼의 관심 셀들이 프로그램되었는지를 판단할 수 있다. 예컨대, 프로세서(200)는 상기 F-PUF를 생성하기 위해 수집된 데이터가 충분히 존재하는지를 판단할 수 있다. 프로세서(200)가 충분한 데이터가 수집되지 않았다고 판단한 경우, 프로세서(200)는 바라던 수만큼의 셀들이 특정 전압 문턱에서 상태를 바꿀 때까지, 증가된 수의 전압 펄스들을 이용하여 단계 S421에서 단계 S424를 반복적으로 수행할 수 있다.
단계 S425에서, 프로세서(200)는 보류된 워드 라인(315) 내의 관심 셀들의 셀을 프로그램하기 위해 필요한, 중간 임계 펄스 수(median critical number of pulses, 예컨대, 프로그래밍 시간)를 결정할 수 있다.
단계 S426에서, 프로세서(200)는 상기 F-PUF 응답 키를 생성하기 위해, 상기 결정된 (주어진 셀들의) 임계 펄스 수를 디지털화할 수 있다.
예컨대, 프로세서(200)는 중간 수의 펄스들 후에, 해당하는 셀들이 상기 셀들의 상태들을 바꾸었는지 여부에 기초하여, 중간 "0" 값 또는 "1" 값을 상기 키의 비트들에 할당할 수 있다.
예컨대, 프로세서(200)는, 상기 중간 수의 펄스들 후에 자신들의 상태들을 바꾸는 데 실패한 관심 셀들(제1해시(Hash1, 345)에 기초하여 선택된)이, 상기 F-PUF 응답 키의 해당하는 비트에 "0" 값을 할당받았는지를 판단할 수 있고, 상기 중간 수의 펄스들 이내에 자신들의 상태들을 바꾼 관심 셀들이, 상기 F-PUF 응답 키의 해당하는 비트에 "1" 값을 할당받았는지를 판단할 수 있으나, 본 발명의 실시 예가 이에 한정되는 것이 아니다.
예컨대, 프로세서(200)는, 느리고(slow) 상기 중간 수의 펄스들 이내에 자신의 상태를 바꾸는데 실패 관심 셀들이, 상기 F-PUF 응답 키의 해당하는 비트에 "1" 값을 할당받았는지를 판단할 수 있고, 빠르고(fast) 상기 중간 수의 펄스들 이내에 자신들의 상태들을 바꾼 관심 셀들이, 상기 F-PUF 응답 키의 해당하는 비트에 "0" 값을 할당 받았는지를 판단할 수 있다.
나아가, 단계 S422에서, 프로세서(200)가 오직 단일 펄스만 이용했다면, 단계 S426에서는, 프로세서(200)는 중간 값과의 비교 없이, 상기 데이터를 디지털화할 수 있다. 예컨대, 프로세서(200)는 관심 셀들 중, 상기 단일 펄스에 응답하여 자신들의 상태들을 바꾸는 데 실패한 관심 셀들에 대해서는 "0" 값의 F-PUF 응답 키를 할당할 수 있고, 상기 단일 펄스에 응답하여 자신들의 상태들을 바꾼 관심 셀들에 대해서는 "0" 값의 F-PUF 응답 키를 할당할 수 있다.
단계 S427에서, 프로세서(200)는 생성된 F-PUF 응답 키와 관련된 헬퍼 데이터(360)를 생성할 수 있다.
아래에서 도 7을 참조하여 설명되는 것처럼, 프로세서(200)는 그 다음의 복호화 단계 동안 헬퍼 데이터(360)를 활용할 수 있고, 상기 그 다음의 복호화 단계에는, 프로세서(200)로 하여금 부분적으로 프로그램된 관심 셀들 중 특정 셀들을 부정확하게 해석하게 하고 따라서 부정확한 디지털 값을 상기 셀들로 할당하게 하는 잡음이 상기 관심 셀들의 전압 수준의 아날로그 읽기 동안 존재한다. 그러나, 프로세서(200)는, 헬퍼 데이터(360)의 사용에 따라, 관심 셀들 중 몇몇으로 할당된 상기 디지털 값이 부정확한지를 판단할 수 있다.
실시 예에 따라, 헬퍼 데이터(360)는 새는 헬퍼 데이터일 수 있으나 본 발명의 실시 예가 이에 한정 되는 것은 아니다.
실시 예에 따라, 새지 않는 헬퍼 데이터(360)를 생성하기 위해서, 프로세서(200)는 펄스 문턱 값들의 히스토그램(histogram)을 몇몇 영역으로 분할함으로써, 그러나 상기 각각의 영역은 서로 동일한 수의 보류된 워드 라인(315)의 관심 셀들을 포함한다, 상기 문턱 값을 서로 다른 부분 집합(subset)들로 나눌 수 있다. 상기 부분 집합들은, 서로 다른 디지털 값과 관련된 부분 집합들 중 적어도 두 개의 부분 집합이 서로 동일한 헬퍼 데이터(360)를 할당 받도록 설계될 수 있다.
그러므로 헬퍼 데이터(360)는, 보안 저장 장치(100)로 물리적인 접근을 하지 않은 채, 헬퍼 데이터(360)로부터 상기 F-PUF 응답 키를 도출(derive)하려고 시도하는 해커에게 유용한 정보를 주지 않을 수 있는, 새지 않는 헬퍼 데이터일 수 있다.
실시 예에 따라, 헬퍼 데이터(360)는 "새는" 헬퍼 데이터일 수 있고, 프로세서(200)는 오류 정정 부호(error correction code)에 의해 상기 새는 헬퍼 데이터를 생성할 수 있다. 실시 예에 따라, 프로세서(200)는 상기 (새는) 헬퍼 데이터를 생성하기 위해 BCH(Bose-Chaudhuri-Hocquenghem) 오류 정정 부호를 사용할 수 있다.
단계 S427에서, 프로세서(200)는 생성된 헬퍼 데이터(360)를 저장할 수 있다. 예컨대, 프로세서(200)는 헬퍼 데이터(360)를 저장 장치(300)의 데이터 레지스터에 저장할 수 있으나, 본 발명의 실시 예가 이에 한정되는 것은 아니다.
도 6은 본 발명의 실시 예에 따라, 새지 않는 헬퍼 데이터를 생성하는 예시를 나타낸다.
도 6을 참조하면, 프로세서(200)는 PUF 문턱 값들의 히스토그램을 사분위수(quantile)로 분리된 짝수 개의 부분집합으로 나눌 수 있다. 예컨대, 도 6에 도시된 것처럼, 프로세서(200)는 보류된 워드 라인(315)의 관심 셀들의 프로그래밍 시간의 분포를 정규화(normalize)할 수 있고, PUF 임계 펄스 수의 정규 분포를 "0", "0+", "1" 및 "1+"의 4개의 부분 집합들로 나눌 수 있고, 상기 4개의 부분 집합들은 상기 부분 집합들 사이에 3개의 사분위 수 "Q1", "M(임계 펄스 수의 중간 값(프로그래밍 시간))", "Q3"를 가진다. 예컨대, 도 6에 도시된 것처럼, 상기 분포가 정규화된 경우, 상기 중간 값은 "100"일 수 있으나, 본 발명의 실시 예가 이에 한정되는 것은 아니다.
프로세서(200)는, 제1해시(Hash1, 345)에 기초하여 선택된 관심 셀에 관련된 상기 프로그래밍 시간(예컨대, 임계 펄스 수)에 기초하여, 상기 셀에 대해 상기 부분 집합들(예컨대, 도 4의 "0", "0+", "1" 및 "1+")중 하나를 할당할 수 있다.
아래에서 도 7을 참조하여 설명되는 것처럼, 그 다음의 복호화 단계 동안, 임계 펄스 수 및 상기 관심 셀들의 전압 수준의 아날로그 읽기 동안 존재하는 잡음은, 프로세서(200)로 하여금 프로그램된 관심 셀들 중 특정 셀들을 부정확하게 해석하게 하고, 상기 히스토그램의 중간 값(M)과 반대쪽에 놓이게 하므로 프로세서(200)가 부정확한 디지털 값을 상기 셀들로 할당하게 할 수 있다. 그러나 헬퍼 데이터(360)의 사용으로 인해, 프로세서(200)는 보류된 워드 라인(315)의 관심 셀들 중 몇몇 셀들에 할당된 디지털 값이 부정확한지를 판단할 수 있다.
나아가, 헬퍼 데이터(360)가 새지 않을 때, 즉, 동일한 수의 관심 셀들이 상기 부분집합들 중 각각으로 할당되는 반면에, 동일한 헬퍼 데이터(360)를 할당받는 4개의 부분 집합들 중 적어도 2개의 부분 집합들이 서로 다른 디지털 값으로 연관될 때, 상기 헬퍼 데이터는 보안 저장 장치(100)로 물리적인 접근을 하지 않은 채 헬퍼 데이터(360)로부터 상기 F-PUF 응답 키를 도출(derive)하려고 시도하는 해커에게 유용한 정보를 주지 않을 수 있는, 새지 않는 헬퍼 데이터일 수 있다.
도 7은 본 발명의 실시 예에 따라, 적어도 F-PUF 응답 키로부터 생성된 암호 키를 사용하여 데이터를 복호화하는 방법을 나타낸다.
도 1, 도 2 및 도 7을 참조하면, 단계 S700에서, 복호화 장치(200B)로 프로그램된 프로세서(200)는 암호화된 콘텐트(375), 암호화되지 않은 콘텐트(330)로부터 생성된 제1해시(Hash1, 345) 및 헬퍼 데이터(360)를, 예컨대 저장 장치(300)로부터 읽을 수 있다.
단계 S710에서, 프로세서(200)는 제1해시(Hash1, 345)에 기초하여 선택된, 워드 라인(315)의 관심 셀들과 관련된 F-PUF 응답 키의 추정치를 재생성할 수 있다. 예컨대, 단계 S710에서, 프로세서(200)는 상기 F-PUF 응답 키의 추정치를 재생성하기 위해 단계 S421 내지 단계 S425를 수행할 수 있다. 편의상 단계 S421 내지 단계 S425에 대한 설명은 생략하도록 한다.
예컨대, 상기 복호화 단계 동안 프로세서(200)는 제1해시(Hash1, 345)를 사용함으로써 생성된 상기 F-PUF 응답 키를 생성하기 위해 활용된 F-PUF와 동일한 F-PUF를 생성하기 위해, 동일한 관심 셀들을 상기 암호화 단계에서 프로그램된 것처럼, 동일한 ISPP-like 펄스로 프로그램할 수 있다. 하지만, 단계 S424에서, 보류된 워드 라인(315)의 관심 셀들의 문턱 값이 상기 플래시 메모리 내의 셀들의 웨어링으로 인해 시간에 따라 감소할 수 있기 때문에, 상기 중간 값으로서 상기 암호화 단계에서 결정된 중간 값과 같은 값을 사용하는 것 대신에 상기 중간 값은 다시 결정될 수 있다.
상기 복호화 단계 동안, 단계 S710에서 다시 측정된(예컨대, 상기 복호화 단계 동안 단계 S424를 다시 수행) 임계 펄스 수 및 전압의 아날로그 측정(값)에 포함된 잡음은 프로세서(200)로 하여금 단계 S710 동안 상기 측정을 부정확하게 다시 디지털화하도록(예컨대, 상기 복호화 단계 동안 단계 S426을 다시 수행) 할 수 있다.
단계 S720에서, 프로세서(200)는 헬퍼 데이터(360)의 도움으로, 단계 S710에서 생성된 상기 디지털 값들을 정정하고, 상기 F-PUF 응답 키의 정제된(refined) 추정치를 생성할 수 있다. F-PUF 응답 키의 상기 정제된 추정치는 단계 S710에서 얻은 대략적인(rough) 추정치와 비교할 때, 상기 대략적인 추정치에 포함된 오류들보다 더 적은 수의 오류들을 포함할 수 있다.
예컨대, 위에서 설명된 것처럼, 상기 암호화 단계 동안 프로세서(200)는 관심 셀들의 문턱 값에 해당하는 펄스들의 측정된 개수를 해당하는 디지털 키 비트들로 변환할 수 있고, 이때 프로세서(200)는, 상기 펄스들의 수가 중간 값(도 6의 "100") 초과인지 혹은 상기 중간 값 미만인지에 기초하여 디지털 값들을 키 비트들로 할당함으로써, 상기 측정된 개수를 해당하는 디지털 키 비트들로 변환할 수 있다.
그 후에, 프로세서(200)는 상기 키 비트들 각각과 관련된 헬퍼 데이터(360)를 결정할 수 있다. 예컨대, 위에서 도 6을 참조하여 설명한 것처럼, 프로세서(200)는 상기 F-PUF 문턱 값들의 히스토그램을 몇몇 부분 집합으로 나눌 수 있고, 상기 부분 집합들 각각은 근사적으로 동일한 수의 문턱 값들을 포함할 수 있다. 프로세서(200)는 상기 히스토그램에 기초하여, 어떤 부분 집합이 상기 키 비트와 연관되는지를 판단할 수 있다.
예컨대, 프로세서(200)가 비트의 문턱 값이 제1사분위수(도 6에서 "95.95") 보다 작거나 같다고 판단한 경우, 프로세서(200)는 음의("-") 헬퍼 비트를 상기 F-PUF 응답 키의 비트에 할당할 수 있다.
프로세서(200)가 상기 문턱 값이 제1사분위수 보다 크지만 중간 값(도 6에서 "100")보다 같거나 작다고 판단한 경우, 프로세서(200)는 양의("+") 헬퍼 비트를 상기 F-PUF 응답 키의 비트에 할당할 수 있다. 프로세서(200)가, 상기 문턱 값이 상기 중간 값보다 크지만 제3사분위수(도 6에서 "104.05")보다 같거나 작다고 판단한 경우, 프로세서(200)는 음의("-") 헬퍼 비트를 상기 F-PUF 응답 키의 비트에 할당할 수 있다. 프로세서(200)가 상기 문턱 값이 상기 제3사분위수 보다 크다고 판단한 경우, 프로세서(200)는 양의("+") 헬퍼 비트를 상기 F-PUF 응답 키의 비트에 할당할 수 있다.
그 후에, 상기 헬퍼 데이터를 적절한 형태로 저장하기 위해, 상기 양의 헬퍼 데이터와 음의 헬퍼 데이터 각각은, 디지털 값 "0"과 디지털 값 "1" 모두에 할당되고, 따라서, 상기 양의 헬퍼 데이터와 음의 헬퍼 데이터 각각은 "새지 않는" 헬퍼 데이터를 만들어 낸다.
상기 복호화 단계 동안, 프로세서(200)는 문턱 측정값(threshold reading)이 상기 중간 값과 근접 한지 판단할 수 있다. 즉, 프로세서(200)는 상기 문턱 측정값이, M-R 부터 M+R 까지의 구간 사이에 있는지를 판단할 수 있다(예컨대, R은 상기 제1사분위수(Q1)과 상기 중간 값(M) 사이의 거리의 절반이다).
프로세서(200)가 상기 문턱 측정값이 상기 중간 값에 가깝다(즉, 상기 M-R 부터 M+R 까지의 구간 사이)고 판단한 경우, 프로세서(200)는 상기 값이 "0+" 또는 "1"라고 판단할 수 있다. 그러므로 프로세서(200)는 상기 올바른 값을 판단하기 위해, 헬퍼 데이터(360)를 활용할 수 있다.
예컨대, 헬퍼 데이터(360)가 음("-")일 때, 프로세서(200)는 상기 측정값이 "1"이었다고 판단할 수 있고, 따라서 상기 F-PUF 응답 키의 비트는 "1"이라고 판단할 수 있다. 이와 마찬가지로, 헬퍼 데이터(360)가 양("+")의 경우, 프로세서(200)는 상기 F-PUF 응답 키의 비트가 "0"이라고 판단할 수 있다. PUF 응답 키의 비트는 "1" 이라고 판단할 수 있다.
프로세서(200)가 상기 문턱 측정값이 상기 중간 값에 근접하지 않다(즉, 상기 M-R 부터 M+R 까지의 구간 밖)고 판단한 경우, 프로세서(200)는 임계 펄스(전압) 수의 측정값이 신뢰할 수 있다고 판단할 수 있고, 따라서, 프로세서(200)는 상기 헬퍼 비트를 무시할 수 있다. 예컨대, 프로세서(200)는 상기 문턱 전압의 측정값과 상기 중간 값(M)을 비교할 수 있다. 이때, 상기 측정값이 M보다 작을 경우 프로세서(200)는 상기 F-PUF 응답 키의 비트가 "0"이라고 판단할 수 있고, 상기 측정값이 상기 문턱 값보다 크거나 같을 경우, 프로세서(200)는 상기 F-PUF 응답 키의 비트가 "1"이라고 판단할 수 있다.
예컨대, 프로세서(200)는 상기 문턱 전압의 측정값과 상기 중간 값(M)을 비교할 수 있다. 이때, 상기 측정값이 M보다 작을 경우 프로세서(200)는 상기 F-PUF 응답 키의 비트가 "0"이라고 판단할 수 있고, 상기 측정값이 상기 문턱 값보다 크거나 같을 경우, 프로세서(200)는 상기 F-PUF 응답 키의 비트가 "1"이라고 판단할 수 있다.
단계 S730에서, 프로세서(200)는 상기 F-PUF 응답 키의 정제된 재생산 물에 기초하여, 상기 암호 키를 다시 생성할 수 있다.
예컨대, 프로세서(200)는 상기 암호 키를 재생성하기 위해서, 단 S430을 다시 행할 수 있다. 위에서 도 4를 참조하여 설명한 것처럼, 실시 예에 따라, 프로세서(200)는 상기 암호 키를 생성하기 위해, 상기 F-PUF 응답 키만을 활용할 수 있다. 실시 예에 따라, 프로세서(200)는 보안 저장 장치(100)의 사용자에게 상기 데이터를 암호화하기 위해 사용되는 상기 암호(또는 상기 PIN)를 다시 입력할 것을 요청할 수 있고, 상기 F-PUF 응답 키 및 상기 암호(또는 상기 PIN)의 제2해시(Hash2) 모두에 기초하여 상기 암호 키를 생성할 수 있다. 설명의 편의상, 단계 S430에 대한 설명은 생략하도록 한다.
단계 S740에서, 프로세서(200)는 상기 암호화되지 않은 콘텐트(330)을 재생성하기 위해, 상기 암호 키를 이용하여 상기 암호화된 콘텐트(375)에 대해 블록 암호를 수행함으로써, 상기 암호화된 콘텐트(375)를 복호화 할 수 있다.
예컨대, 프로세서(200)는 상기 암호 키를 이용하여, AES 암호화된 콘텐트(375)에 대해 AES 복호화를 수행할 수 있다.
그러므로 상기 암호화 기법이 보안 저장 장치(100)와 관련된 저장 장치(300)의 유일한 서명(signature)에 적어도 부분적으로 기초하기 때문에, 보안 저장 장치(100)는 보안 저장 장치(100)에 포함된 플래시 메모리에 대한 어떠한 특별한 하드웨어적 변화 없이도, 보안 저장 장치(100)의 사용자가 상기 암호화된 콘텐트(375)를 다른 장치 위에서 복호화하는 것을 어렵게 만듦으로써, 보안 저장 장치(100)에 저장된 콘텐트의 보안성을 증가시킬 수 있다.
도 8은 본 발명의 실시 예에 따라, 암호 키를 생성하기 위해 디지털 데이터를 F-PUF에 대한 시도(challenge)로서 활용하는 예시를 나타낸다.
도 8을 참조하면, 상기 암호화 단계 및 복호화 단계 동안, 암호화되지 않은 콘텐트(330)는 F-PUF 장치(220)에 대한 시도로서 사용될 수 있다. 즉, 암호화되지 않은 콘텐트(330)의 제1해시(Hash1, 345)는, 부분적으로 프로그램하기 위해 저장 장치(300)의 워드 라인(315)로부터 관심 셀들을 선택하기 위해 사용될 수 있다.
예컨대, 도 8에 도시된 것처럼, 프로세서(200)는 워드 라인(315)으로부터 셀 번호들 "22160", "6216", 27162" 및 "34829"을 관심 셀들로서 선택하기 위해 제1해시(Hash1, 345)를 사용할 수 있다.
그 후에, 단계 S421 내지 S427에서, 프로세서(200)는 앞에서 언급한 부분적으로 프로그램된 관심 셀들을 읽을 수 있고, 상기 F-PUF 응답 키가 값 "0", "0", "1" 및 "0"을 각각 가지는지를 판단할 수 있다.
나아가, 프로세서(200)는 제1관심 셀에 해당하는 헬퍼 데이터(360)가 음("-")의 값을 가지는지 판단할 수 있고, 제2관심 셀에 해당하는 헬퍼 데이터(360)가 음("-")의 값을 가지는지 판단할 수 있고, 제3관심 셀에 해당하는 헬퍼 데이터(360)가 양("+")의 값을 가지는지 판단할 수 있고, 제4관심 셀에 해당하는 헬퍼 데이터(360)가 음("-")의 값을 가지는지 판단할 수 있다.
단계 S430 및 S730에서, 프로세서(200)는 상기 F-PUF 응답 키에 적어도 기초하여, 상기 암호 키를 생성할 수 있다.
실시 예에 따라, 프로세서(200)는 보안 저장 장치(100)의 사용자로부터 제공받은 암호(또는 PIN)로부터 제2해시(Hash2)를 생성할 수 있고, 상기 암호 키를 생성하기 위해 상기 F-PUF 응답 키 및 상기 암호를 사용할 수 있다.
실시 예에 따라, 프로세서(200)는 보안 저장 장치(100)의 사용자로부터 제공받은 암호(또는 PIN)로부터 제2해시(Hash2)를 생성할 수 있고, 상기 암호 키를 생성하기 위해 상기 F-PUF 응답 키 및 상기 암호를 사용할 수 있다. 예컨대, 프로세서(200)는 제2해시(Hash2)가 값 "1001"을 가지는지를 판단할 수 있고, 상기 F-PUF 응답 키와 제2해시(Hash2)에 대해 XOR을 수행함으로써, 값 "1011"을 가지는 암호 키를 생성할 수 있다.
실시 예에 따라, 제1해시(Hash1, 345)는 다음과 같은 방법으로 상기 관심 셀들을 정의할 수 있다: 하나의 워드 라인은 약 216개의 다른 셀들을 포함하고 있기 때문에, 상기 해시의 각 16비트들은 상기 주어진 셀 번호를 유일하게 결정할 수 있다. 그러므로 예컨대, 상기 암호화되지 않은 콘텐트로 256개의 셀들을 정의하기 위해서, 상기 해시 출력은 256*16비트가 되어야 한다.
그러므로 실시 예에 따라, 프로세서(200)는 제1해시(Hash1)로부터 256*16비트들을 생성하기 위해 SHA 3(secure hash algorithm 3) 알고리즘을 사용할 수 있다.
그러므로 보안 저장 장치(100)는 저장 장치(300)의 셀들의 F-PUF 응답에 기초하는 암호 키를 생성할 수 있다. 또한, 보안 저장 장치(100)는 복호화 단계 동안, 상기 F-PUF 키를 재생성하는데 사용되며, 따라서 상기 암호 키를 재생성하는데 사용되는 헬퍼 데이터를 생성할 수 있다.
도 9는 본 발명의 실시 예에 따라, 새지 않는 헬퍼 데이터의 활용 없이, F-PUF로부터 암호 키를 생성하고 재생성하는 예시를 나타낸다.
도 1, 2, 4 및 9를 참조하면, 프로세서(200)는 상기 암호화 단계 동안, 저장 장치(300)의 관심 셀에 대하여 복수의 낮은 전압 펄스를 적용하고, 프로그래밍 시간(임계 펄스 수)을 디지털화 함으로써 상기 관심 셀들을 프로그래밍하고, 상기 관심 셀들을 프로그래밍함으로써 F-PUF 응답 키를 생성할 수 있다. 예컨대, 프로세서(200)는 상기 F-PUF 응답 키가 "01010110 10010000 00011000 01001000 01101010 00011010 10001000 00001101"인지를 판단할 수 있다.
그 후에, 상기 복호화 단계 동안, 프로세서(200)는 다시 상기 관심 셀과 동일한 관심 셀에 대하여 복수의 낮은 전압 펄스를 적용하고, 그 다음의 프로그래밍 시간을 디지털화함으로써, 상기 F-PUF 응답 키를 다시 생성하는 것을 시도할 수 있다. 하지만, 원래의 F-PUF 응답 키와 다시 생성된 F-PUF 응답 키를 생성하기 위해 사용되는 PUF들은 전압의 아날로그적 측정들로 인한 잡음을 가지고 있을 수 있다.
예컨대, 다시 생성된 키는 "01010111 11010000 00011100 00001000 01101110 00001010 10001000 00001101"일 수 있다. 그러므로 도 9에 도시된 재생성된 F-PUF 응답 키의 값들 중 밑줄이 그어진 값들에 나타나 있는 것처럼, 원래 생성된 F-PUF 응답 키와 재생성된 F-PUF의 응답 키 사이에 불일치들이 존재할 수 있다. 상기 불일치들은 암호화된 콘텐트(375)를 적절하게 복호화하는 것을 불가능하게 할 수 있다.
도 10은 본 발명의 실시 예에 따라, 잡음을 제거하기 위해 헬퍼 데이터를 활용하여 F-PUF로부터 암호 키를 생성하고 재생성하는 예시를 나타낸다.
도 1, 2, 6, 7 및 10을 참조하면, 상기 암호화 단계 동안, 프로세서(200)는 상기 F-PUF 응답 키를 생성할 뿐만 아니라 상기 F-PUF 응답 키와 관련된 헬퍼 데이터(360)도 생성할 수 있다. 예컨대, 프로세서(200)는 동일한 수의 셀들을 포함하는 몇 개의 영역으로 분리된, 워드 라인 내의 셀들의 프로그램 시간(임계 펄스 수)들의 분포를 양자화할 수 있고, 각각의 주어진 셀의 프로그래밍 시간을 상기 영역들 중 하나의 영역으로 대응시킬 수 있다.
예컨대, 도 6에 도시된 것처럼, 제1해시(Hash1, 345)에 기초하여 선택된 관심 셀들 중, 매우 느리고 제1부분 집합("Q1" 선 아래의 집합, 0-)에 포함되는 프로그래밍 시간을 가지는 관심 셀들에 대해서, 프로세서(200)는 음("-")의 값을 상기 관심 셀들과 관련된 헬퍼 데이터(360)에 할당할 수 있다. 프로그래밍 시간의 중간 값보다 작지만 제2부분 집합(제1사분위수 Q1과 M 사이의 집합, 0+)에 포함되는 프로그래밍 속도를 가지는 관심 셀들 각각에 대하여, 프로세서(200)는 양("+")의 값을 상기 관심 셀들과 관련된 헬퍼 데이터(360)에 할당할 수 있다.
프로그래밍 시간의 중간 값보다 크지만 제2부분 집합(M과 제3사분위수 Q3 사이의 집합, 1-)에 포함되는 프로그래밍 시간을 가지는 관심 셀들 각각에 대하여, 프로세서(200)는 양("-")의 값을 상기 관심 셀들과 관련된 헬퍼 데이터(360)에 할당할 수 있다. 프로그래밍 시간의 중간 값 보다 크지만 제2부분 집합(M과 제3사분위수 Q3 사이의 집합, 1-)에 포함되는 프로그래밍 시간을 가지는 관심 셀들 각각에 대하여, 프로세서(200)는 양("-")의 값을 상기 관심 셀들과 관련된 헬퍼 데이터(360비교적 크고 제4부분 집합(제3사분위수 Q3보다 큰 집합, 1+)에 포함되는 프로그래밍 시간을 가지는 관심 셀들 각각에 대하여, 프로세서(200)는 양("+")의 값을 상기 관심 셀들과 관련된 헬퍼 데이터(360)에 할당할 수 있다.)에 할당할 수 있다.
그 후에, 상기 복호화 단계 동안, 프로세서(200)는 다시, 상기 플래시 메모리 어레이의 관심 셀에 대하여 복수의 낮은 전압 펄스를 적용하고, 그 다음의 프로그래밍 시간을 디지털화함으로써, 상기 F-PUF 응답 키를 다시 생성하는 것을 시도할 수 있다. 하지만, 원래의 F-PUF 응답 키와 다시 생성된 F-PUF 응답 키를 생성하기 위해 사용되는 PUF들은 전압의 아날로그적 측정들로 인한 잡음이 있을 수 있다. 그러나 하나 또는 그 이상의 실시 예에 따라, 프로세서(200)는 상기 재생성된 F-PUF 응답 키와 상기 처음에 생성된 F-PUF 응답 키를 일치시키기 위해, 상기 암호화 단계 동안 생성된 헬퍼 데이터(360)을 활용할 수 있다.
예컨대, 도 10에 도시된 것처럼, 프로세서(200)는 상기 암호화 단계 동안 8번째 비트에 대한 문턱 값이 중간 값(M)보다 약간 작은지를 판단할 수 있고, 그러므로, 프로세서(200)는 상기 8번째 비트에 대해 0을 할당할 수 있다.
위에서 도 9를 참조해서 설명한 것처럼, 상기 복호화 단계에서는, 문턱 값의 측정(reading)에서의 잡음 때문에 프로세서(200)는 상기 키의 8번째 비트가 "1"인지를 판단할 수 있다(상기 잡음은 중간 값(M)보다 약간 작은 문턱 값을 상기 중간 값(M) 보다 약간 크게 측정되게 하기 때문이다).
하지만, 헬퍼 데이터(360)는 상기 암호화 단계에서 양("+")으로 판단된 것들과 연관되어 있기 때문에, 문턱 값은 오직 상기 제2부분 집합(0+) 또는 상기 제4부분 집합(1+)에 속할 수 있다. 하지만, 상기 8번째 비트의 문턱 값이 상기 중간 값(M)에 가깝기 때문에, 프로세서(200)는 상기 문턱 값이 상기 제2부분 집합(0+)에 속한다고 판단할 수 있고, 따라서, 프로세서(200)는 양("+")의 헬퍼 데이터(360)와 함께, 상기 F-PUF 응답 키의 8 번째 비트가 "0"임을 판단할 수 있다.
그러므로 헬퍼 데이터(360)를 사용함으로써, 프로세서(200)는 상기 F-PUF 응답 키의 재생성된 추정치에 존재하는 상당한 수의 오류들을 정정할 수 있다.
도 11은 본 발명의 실시 예에 따른 보안 저자 장치를 포함하는 사용자 단말기(equipment)를 나타낸다.
도 11에 도시된 것처럼, 사용자 단말기(1100)는 하나 또는 그 이상의 보안 저장 장치(1110), CPU(1120), 디스플레이(1130), 수신기(1140), 송신기(1150), 카메라(1160) 및 데이터 버스(1170)를 포함할 수 있고, 상기 보안 저장 장치(1110), CPU(1120), 디스플레이(1130), 수신기(1140), 송신기(1150), 카메라(1160) 및 데이터 버스(1170)는 서로 간의 통신을 처리할 수 있다.
보안 저장 장치(1110)는 암호화 단계 동안 적어도 F-PUF 키를 사용하여 콘텐트를 암호화하고, 복호화 단계 동안 헬퍼 데이터를 사용하여 상기 F-PUF 키를 재생성함으로써, 사용자 단말기(1100)에 구속된 암호화된 콘텐트(375)를 생성할 수 있다. 그러므로 보안 저장 장치(1100)는 보안 저장 장치(1100)에 포함된 플래시 메모리에 대한 어떠한 특별한 하드웨어적 변화 없이도, 배포가 제한된 암호화된 콘텐트(375)를 생성할 수 있다.
디스플레이(1130)는 CPU(1120)의 제어에 따라, 사용자에게 정보를 표시할 수 있다.
수신기(1140)와 송신기(1150) 각각은 CPU(1120)의 제어에 따라, 신호들을 주고받을 수 있다. 수신기(1140)와 송신기(1150) 각각은 다른 네트워크 구성요소들에 대한 하나 또는 그 이상의 접속을 통하여, 데이터 신호, 제어 신호 및 신호 세기/품질 정보를 포함하는 무선 신호들을 송신하고 수신하는 하드웨어와 소프트웨어를 포함할 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 보안 저장 장치
200: 프로세서
210: 제1해시 생성기
220: F-PUF 장치
230: 제2해시 생성기
240: 키 생성기
250: 블록 암호기
300: 저장 장치
315: 보류 구역
330: 콘텐트
345: 제1해시
360: 헬퍼 데이터
375: 암호화된 콘텐트
400: 펄스 생성기

Claims (10)

  1. 암호화되지 않은 디지털 콘텐트를 암호화하는 방법에 있어서,
    상기 암호화되지 않은 디지털 콘텐트에 기초하여 제1해시를 계산하는 단계;
    상기 제1해시에 기초하여, 메모리 어레이로부터 관심 셀들을 선택하는 단계;
    상기 관심 셀들의 물리적 특성과 관련된 아날로그 값을 측정하는 단계;
    응답 키를 생성하기 위해 측정된 아날로그 값을 디지털화하는 단계;
    적어도 상기 응답 키에 기초하여, 암호 키를 생성하는 단계;
    상기 암호 키에 기초하여, 암호화된 디지털 콘텐트를 생성하기 위해 상기 암호화되지 않은 디지털 콘텐트를 암호화 하는 단계; 및
    상기 암호화된 디지털 콘텐트를 저장하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 아날로그 값을 측정하는 단계는,
    상기 메모리 어레이의 상기 관심 셀들 각각에 대하여 복수의 전압 펄스들을 적용하는 단계; 및
    상기 적용된 복수의 전압 펄스들 중 각 전압 펄스에 해당하는 각 관심 셀을 턴온(turn on)하는 전압 펄스를 판단하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 메모리 어레이는, NAND 플래시 메모리 어레이이고,
    상기 물리적 특성은, 상기 메모리 어레이의 상기 관심 셀들 각각의 임계 펄스 수(critical number of pulses)인 방법.
  4. 제1항에 있어서,
    상기 응답 키에 대응하는 헬퍼 데이터를 생성하기 위해 상기 측정된 아날로그 값을 양자화하는 단계; 및
    상기 헬퍼 데이터를 저장하는 단계를 포함하는 방법.
  5. 제1항에 있어서, 상기 암호 키를 생성하는 단계는,
    사용자로부터 암호(password) 및 PIN(personal identification number) 중 하나를 수신하는 단계;
    상기 암호 및 상기 PIN 중 상기 하나에 기초하여 제2해시를 계산하는 단계;
    결과를 생성하기 위해 상기 제1해시 및 상기 제2해시 사이 로직 연산을 수행하는 단계;
    상기 결과에 기초하여 상기 관심 셀들을 판단하는 단계; 및
    상기 관심 셀들의 응답에 기초하여 상기 암호 키를 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 암호화된 디지털 콘텐트를 복호화하는 방법에 있어서,
    상기 암호화된 디지털 콘텐트와 헬퍼 데이터를 메모리 어레이로부터 읽어오고, 암호화되지 않은 디지털 콘텐트에 기초하여 생성된 제1해시를 상기 메모리 어레이로부터 읽어오는 단계;
    상기 제1해시에 기초하여 상기 메모리 어레이로부터 관심 셀들을 선택하는 단계;
    상기 메모리 어레이의 관심 셀들의 물리적 특성과 관련된 아날로그 값을 측정하는 단계;
    응답 키의 추정치를 생성하기 위해, 상기 측정된 아날로그 값을 디지털화하는 단계;
    응답 키를 재생성하기 위해, 상기 응답 키와 연관된 상기 헬퍼 데이터를 이용하여 상기 응답 키의 추정치를 정정하는 단계;
    적어도 상기 응답 키에 기초하여 복호화 키를 생성하는 단계; 및
    암호화되지 않은 디지털 콘텐트를 생성하기 위해, 상기 복호화 키에 기초하여, 상기 암호화된 디지털 콘텐트를 복호화 하는 단계를 포함하는 방법.
  7. 제6항에 있어서, 상기 응답 키의 추정치를 정정하는 단계는,
    상기 헬퍼 데이터에 기초하여, 상기 응답 키의 추정치의 비트들의 값들이 부정확한 부분 집합과 연관되는지 판단하는 단계; 및
    상기 판단하는 단계에서 상기 비트들의 값들이 상기 부정확한 부분 집합과 연관된 것으로 판단된 경우, 상기 응답 키를 재생성하기 위해 상기 응답 키의 추정치의 상기 비트들의 값을 반전하는 단계를 포함하는 방법.
  8. 제6항에 있어서,
    상기 헬퍼 데이터를 생성하기 위해 상기 측정된 아날로그 값을 양자화하는 단계; 및
    상기 헬퍼 데이터를 저장하는 단계를 포함하는 방법.
  9. 메모리 어레이; 및
    프로세서를 포함하고,
    상기 프로세서는,
    암호화되지 않은 디지털 콘텐트에 기초하여 제1해시를 계산하고,
    상기 제1해시에 기초하여 상기 메모리 어레이로부터 관심 셀들을 선택하고,
    상기 관심 셀들의 물리적 특성과 관련된 아날로그 값을 측정하고,
    응답 키를 생성하기 위해 측정된 아날로그 값을 디지털화하고,
    적어도 상기 응답 키에 기초하여, 암호 키를 생성하고,
    상기 암호 키에 기초하여, 암호화된 디지털 콘텐트를 생성하기 위해 암호화되지 않은 디지털 콘텐트를 암호화 하고, 그리고
    상기 암호화된 디지털 콘텐트를 저장하는 보안 저장 장치.
  10. 제9항에 있어서,
    상기 메모리 어레이의 상기 관심 셀들 각각에 대하여 복수의 전압 펄스들을 적용하는 펄스 생성기를 포함하고,
    상기 프로세서는 상기 적용된 복수의 전압 펄스들 중 각 전압 펄스에 해당하는 각 관심 셀을 턴 온 하는 전압 펄스를 판단함으로써, 상기 아날로그 값을 측정하는 보안 저장 장치.
KR1020160094807A 2016-03-24 2016-07-26 장치 의존적 암호화 방법과 이를 수행하는 장치 KR102608961B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/080,070 2016-03-24
US15/080,070 US10097348B2 (en) 2016-03-24 2016-03-24 Device bound encrypted data

Publications (2)

Publication Number Publication Date
KR20170112888A KR20170112888A (ko) 2017-10-12
KR102608961B1 true KR102608961B1 (ko) 2023-12-01

Family

ID=59898900

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160094807A KR102608961B1 (ko) 2016-03-24 2016-07-26 장치 의존적 암호화 방법과 이를 수행하는 장치

Country Status (2)

Country Link
US (1) US10097348B2 (ko)
KR (1) KR102608961B1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10911229B2 (en) 2016-08-04 2021-02-02 Macronix International Co., Ltd. Unchangeable physical unclonable function in non-volatile memory
US10680809B2 (en) 2016-08-04 2020-06-09 Macronix International Co., Ltd. Physical unclonable function for security key
US11258599B2 (en) 2016-08-04 2022-02-22 Macronix International Co., Ltd. Stable physically unclonable function
US10855477B2 (en) 2016-08-04 2020-12-01 Macronix International Co., Ltd. Non-volatile memory with physical unclonable function and random number generator
US10404478B2 (en) * 2016-08-04 2019-09-03 Macronix International Co., Ltd. Physical unclonable function using divided threshold distributions in non-volatile memory
US10050796B2 (en) * 2016-11-09 2018-08-14 Arizona Board Of Regents On Behalf Of Northern Arizona University Encoding ternary data for PUF environments
US11533300B2 (en) * 2017-03-30 2022-12-20 Arizona Board Of Regents On Behalf Of Northern Arizona University Encryption schemes with addressable elements
US11294639B2 (en) * 2017-08-03 2022-04-05 Arizona Board of Regents on Behalf of Nothern Arizona University Native ternary random numbers generation
US10534554B2 (en) * 2017-10-13 2020-01-14 Silicon Storage Technology, Inc. Anti-hacking mechanisms for flash memory device
EP3483772A1 (en) * 2017-11-14 2019-05-15 Nagravision S.A. Integrated circuit personalisation with data encrypted with the output of a physically unclonable function
US10748591B2 (en) * 2019-01-13 2020-08-18 Ememory Technology Inc. Random code generator
EP3876120A4 (en) * 2019-02-01 2022-08-10 ICTK Holdings Co., Ltd. AUTHENTICATION INFORMATION PROCESSING METHOD AND APPARATUS AND USER TERMINAL COMPRISING AUTHENTICATION INFORMATION PROCESSING METHOD APPARATUS
DE102019214379B4 (de) 2019-09-20 2023-03-09 Hans-Joachim Bentz Vorrichtung und Verfahren zur Verschlüsselung
US11380379B2 (en) 2020-11-02 2022-07-05 Macronix International Co., Ltd. PUF applications in memories
EP4352643A1 (en) * 2021-06-07 2024-04-17 Telefonaktiebolaget LM Ericsson (publ) Storage device authenticating host credential and utilizing physically unclonable function (puf) for data encryption/decryption
WO2022259013A1 (en) * 2021-06-07 2022-12-15 Telefonaktiebolaget Lm Ericsson (Publ) Storage device being authenticated to host by utilizing physically unclonable function (puf) for data encryption/decryption

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090282259A1 (en) * 2006-04-11 2009-11-12 Koninklijke Philips Electronics N.V. Noisy low-power puf authentication without database
US20140162464A1 (en) * 2012-12-12 2014-06-12 International Business Machines Corporation Authentication using graphene based devices as physical unclonable functions
US20140325237A1 (en) * 2011-12-06 2014-10-30 Intrinsic Id B.V. Physically unclonable function (puf) with improved error correction

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6498851B1 (en) * 1998-11-25 2002-12-24 Sandisk Corporation Data encryption and signal scrambling using programmable data conversion arrays
US20020003885A1 (en) * 1999-12-08 2002-01-10 Digital Cinema Systems Corporation Enhanced encryption of digital communication system
US7240208B1 (en) * 2003-04-23 2007-07-03 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Encrypting digital camera with automatic encryption key deletion
US20070101122A1 (en) * 2005-09-23 2007-05-03 Yile Guo Method and apparatus for securely generating application session keys
US8290150B2 (en) 2007-05-11 2012-10-16 Validity Sensors, Inc. Method and system for electronically securing an electronic device using physically unclonable functions
WO2008152547A1 (en) 2007-06-12 2008-12-18 Nxp B.V. Secure storage
EP2524334B1 (en) 2010-01-12 2020-07-08 Stc.Unm System and methods for generating unclonable security keys in integrated circuits
KR101727130B1 (ko) 2010-01-20 2017-04-14 인트린직 아이디 비브이 암호화 키를 획득하기 위한 디바이스 및 방법
US20110191129A1 (en) * 2010-02-04 2011-08-04 Netzer Moriya Random Number Generator Generating Random Numbers According to an Arbitrary Probability Density Function
US8516269B1 (en) 2010-07-28 2013-08-20 Sandia Corporation Hardware device to physical structure binding and authentication
US8667265B1 (en) 2010-07-28 2014-03-04 Sandia Corporation Hardware device binding and mutual authentication
AU2011100168B4 (en) 2011-02-09 2011-06-30 Device Authority Ltd Device-bound certificate authentication
WO2012122994A1 (en) 2011-03-11 2012-09-20 Kreft Heinz Off-line transfer of electronic tokens between peer-devices
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US20140068270A1 (en) 2011-05-20 2014-03-06 Gurudatt Shenoy Systems And Methods For Device Based Secure Access Control Using Encryption
US20130141137A1 (en) 2011-06-01 2013-06-06 ISC8 Inc. Stacked Physically Uncloneable Function Sense and Respond Module
US8700916B2 (en) 2011-12-02 2014-04-15 Cisco Technology, Inc. Utilizing physically unclonable functions to derive device specific keying material for protection of information
FR2988196B1 (fr) * 2012-03-19 2014-03-28 Morpho Procede d'authentification d'un individu porteur d'un objet d'identification
US8750502B2 (en) * 2012-03-22 2014-06-10 Purdue Research Foundation System on chip and method for cryptography using a physically unclonable function
US10079678B2 (en) 2012-07-24 2018-09-18 Intel Corporation Providing access to encrypted data
US9350533B2 (en) * 2012-09-04 2016-05-24 Nokia Technologies Oy Method and apparatus for delivering encrypted content to web browsers based on entropy of the content
US9742563B2 (en) 2012-09-28 2017-08-22 Intel Corporation Secure provisioning of secret keys during integrated circuit manufacturing
JP6267207B2 (ja) * 2012-10-04 2018-01-24 イントリンシツク・イー・デー・ベー・ベー 物理的クローン不能関数として使用されるメモリから暗号化キーを生成するためのシステム
US9367701B2 (en) * 2013-03-08 2016-06-14 Robert Bosch Gmbh Systems and methods for maintaining integrity and secrecy in untrusted computing platforms
JP2015065495A (ja) * 2013-09-24 2015-04-09 ルネサスエレクトロニクス株式会社 暗号鍵供給方法、半導体集積回路および暗号鍵管理装置
WO2015105687A1 (en) * 2014-01-08 2015-07-16 Stc.Unm Systems and methods for generating physically unclonable functions from non-volatile memory cells
US9436845B2 (en) * 2014-03-25 2016-09-06 Globalfoundries Inc. Physically unclonable fuse using a NOR type memory array
US9628868B2 (en) * 2014-07-16 2017-04-18 Crestron Electronics, Inc. Transmission of digital audio signals using an internet protocol
US9875378B2 (en) * 2015-06-12 2018-01-23 QUALCOMOM Incorporated Physically unclonable function assisted memory encryption device techniques
US9985791B2 (en) * 2015-08-13 2018-05-29 Arizona Board Of Regents Acting For And On Behalf Of Northern Arizona University Physically unclonable function generating systems and related methods

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090282259A1 (en) * 2006-04-11 2009-11-12 Koninklijke Philips Electronics N.V. Noisy low-power puf authentication without database
US20140325237A1 (en) * 2011-12-06 2014-10-30 Intrinsic Id B.V. Physically unclonable function (puf) with improved error correction
US20140162464A1 (en) * 2012-12-12 2014-06-12 International Business Machines Corporation Authentication using graphene based devices as physical unclonable functions

Also Published As

Publication number Publication date
US10097348B2 (en) 2018-10-09
KR20170112888A (ko) 2017-10-12
US20170279606A1 (en) 2017-09-28

Similar Documents

Publication Publication Date Title
KR102608961B1 (ko) 장치 의존적 암호화 방법과 이를 수행하는 장치
US10361850B2 (en) Authenticator, authenticatee and authentication method
US9722774B2 (en) Non-leaky helper data: extracting unique cryptographic key from noisy F-PUF fingerprint
CN106599735B (zh) 数据保护装置、方法以及存储控制器
EP2174255B1 (en) Method and device for providing digital security
US10110380B2 (en) Secure dynamic on chip key programming
KR101536086B1 (ko) 인증장치, 피인증장치, 및 인증 방법
US9646178B2 (en) Secure data storage based on physically unclonable functions
US11308241B2 (en) Security data generation based upon software unreadable registers
CN111488630B (zh) 可配置安全存储区域的存储装置及其操作方法
CN111131130B (zh) 密钥管理方法及系统
Jia et al. Extracting robust keys from NAND flash physical unclonable functions
CN108958650B (zh) 电子系统及其操作方法
KR20140026316A (ko) 인증 정보 처리 장치 및 방법
CN106919858B (zh) 芯片、所述芯片的数据保护装置及方法
US9218505B1 (en) Programmable integrated circuit with DPA-resistant decryption
CN110659506A (zh) 基于密钥刷新对存储器进行重放保护
KR20220085811A (ko) 일회용 패스워드 생성
KR101416685B1 (ko) 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치
CN110210259B (zh) 一种固态硬盘的数据保护方法及其系统
CN105516763B (zh) 证书授权卡识别信息的加解密方法、装置及数字节目系统
JP2007087455A (ja) 半導体記憶装置
JP3728098B2 (ja) 半導体装置、論理書き換え防止方法、論理書き換え方法、符号処理方法、及び記憶媒体
CN108234120A (zh) 一种电能卡加密方法
CN213876726U (zh) 一种基于用户人脸识别的多安全等级存储访问装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant