KR102516190B1 - 보안 키를 생성하는 반도체 장치, 보안 키 생성 방법, 및 보안 키 등록 방법 - Google Patents

보안 키를 생성하는 반도체 장치, 보안 키 생성 방법, 및 보안 키 등록 방법 Download PDF

Info

Publication number
KR102516190B1
KR102516190B1 KR1020180057964A KR20180057964A KR102516190B1 KR 102516190 B1 KR102516190 B1 KR 102516190B1 KR 1020180057964 A KR1020180057964 A KR 1020180057964A KR 20180057964 A KR20180057964 A KR 20180057964A KR 102516190 B1 KR102516190 B1 KR 102516190B1
Authority
KR
South Korea
Prior art keywords
bits
unit
bit
mask
data
Prior art date
Application number
KR1020180057964A
Other languages
English (en)
Other versions
KR20190041898A (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 삼성전자주식회사
Priority to DE102018123103.2A priority Critical patent/DE102018123103A1/de
Priority to US16/140,019 priority patent/US10476681B2/en
Priority to CN201811184280.0A priority patent/CN109670346B/zh
Publication of KR20190041898A publication Critical patent/KR20190041898A/ko
Application granted granted Critical
Publication of KR102516190B1 publication Critical patent/KR102516190B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • H04L9/3278Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response using physically unclonable functions [PUF]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Storage Device Security (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명의 실시 예에 따른 반도체 장치는, 제 1 비트들을 출력하는 PUF셀들로 구성되는 PUF 셀 어레이, 제 1 비트들이 유효한지 여부를 나타내는 마킹 비트들, 제 1 비트들 중 유효한 제 2 비트들의 패리티에 따라 제 2 비트들이 마스킹된 제 1 마스크 비트들, 및 제 2 비트들에 대한 헬퍼 비트들이 마스킹된 제 2 마스크 비트들을 저장하는 불휘발성 메모리, 상기 마킹 비트들을 이용하여 제 1 비트들로부터 제 2 비트들을 추출하는 추출부, 제 2 비트들을 수신하면서 제 1 마스크 비트들을 이용하여 제 2 비트들을 언마스킹하는 언마스킹부, 상기 언마스킹부에 의해 언마스킹된 제 3 비트들을 수신하면서 상기 제 3 비트들을 제 4 비트들로 압축하는 비트 디코딩부, 및 제 4 비트들 및 상기 제 2 마스크 비트들을 디코딩하여 보안 키를 생성하는 블록 디코딩부를 포함하되, 추출부, 언마스킹부, 비트 디코딩부, 및 블록 디코딩부는 직렬로 연결되고 동시에 동작할 수 있다.

Description

보안 키를 생성하는 반도체 장치, 보안 키 생성 방법, 및 보안 키 등록 방법{SEMICONDUCTOR DEVICE GENERATING SECURITY KEY, METHOD OF GENERATING SECURITY KEY, AND METHOD OF ENROLLING SECURITY KEY}
본 발명은 보안 키를 생성하는 반도체 장치, 보안 키 생성 방법, 및 보안 키 등록 방법에 관한 것이다.
통신 기술 및 모바일 장치와 관련된 기술에 있어서, 보안 및 암호화와 관련된 기술이 중요해지고 있다. 소프트웨어 방식에 의해 생성되는 키(key)는 해킹을 통해 유출될 수 있으므로, 최근 하드웨어 방식에 기반하는 보안 방식이 발전하고 있다. 특히, 물리적 복제 방지 기능(physically unclonable function; PUF)을 갖는 반도체 장치가 발전하고 있다.
반도체 장치는 공정 변화(process variation)에 기초하여 랜덤하게 고유한 키를 생성할 수 있다. 반도체 장치는 공정 변화를 이용하기 때문에 키의 복제를 방지할 수 있다. 그러나 반도체 장치는 공정 변화로 인해 에러가 포함된 데이터를 출력할 수 있다. 반도체 장치의 출력의 BER(bit error rate)을 줄이기 위해 에러 정정 연산이 사용될 수 있다. 최근 보안 및 암호화가 중요해짐에 따라, 반도체 장치의 출력의 크기가 커지고, 에러 정정 연산에 소요되는 시간이 증가하고 있다. 따라서, 반도체 장치의 면적 및 동작 시간을 줄이는 것이 필요하다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 보안 키를 생성하는 반도체 장치, 보안 키 생성 방법, 및 보안 키 등록 방법을 제공할 수 있다.
본 발명의 실시 예에 따른 반도체 장치는, 제 1 비트들을 출력하는 PUF 셀들로 구성되는 PUF 셀 어레이, 상기 제 1 비트들이 유효한지 여부를 나타내는 마킹 비트들, 상기 제 1 비트들 중 유효한 제 2 비트들의 패리티에 따라 상기 제 2 비트들이 마스킹된 제 1 마스크 비트들, 및 상기 제 2 비트들에 대한 헬퍼 비트들이 마스킹된 제 2 마스크 비트들을 저장하는 불휘발성 메모리, 상기 마킹 비트들을 이용하여 상기 제 1 비트들로부터 상기 제 2 비트들을 추출하는 추출부, 상기 제 2 비트들을 수신하면서 상기 제 1 마스크 비트들을 이용하여 상기 제 2 비트들을 언마스킹하는 언마스킹부, 상기 언마스킹부에 의해 언마스킹된 제 3 비트들을 수신하면서 상기 제 3 비트들을 제 4 비트들로 압축하는 비트 디코딩부, 및 상기 제 4 비트들 및 상기 제 2 마스크 비트들을 디코딩하여 보안 키를 생성하는 블록 디코딩부를 포함할 수 있고, 상기 추출부, 상기 언마스킹부, 상기 비트 디코딩부, 및 상기 블록 디코딩부는 직렬로 연결되고 동시에 동작할 수 있다.
본 발명의 다른 실시 예에 따른, 직렬로 연결된 PUF 셀 어레이, 추출부, 언마스킹부, 비트 디코딩부, 및 블록 디코딩부를 포함하는 반도체 장치의 보안 키 생성 방법은, 상기 추출부에 의해, 상기 PUF 셀 어레이로부터 제 1 비트들을 수신하고 불휘발성 메모리로부터 상기 제 1 비트들이 유효한지 여부를 나타내는 마킹 비트들을 수신하면서, 상기 제 1 비트들 중 유효한 제 2 비트들을 추출하는 단계, 상기 언마스킹부에 의해, 상기 추출부로부터 상기 제 2 비트들을 수신하고 상기 불휘발성 메모리로부터 제 1 마스크 비트들을 수신하면서, 상기 제 1 마스크 비트들을 이용하여 상기 제 2 비트들을 언마스킹하는 단계, 상기 비트 디코딩부에 의해, 상기 언마스킹부로부터 언마스킹된 제 3 비트들을 수신하면서, 상기 제 3 비트들을 제 4 비트들로 압축하는 단계, 그리고 상기 블록 디코딩부에 의해, 상기 비트 디코딩부로부터 상기 제 4 비트들을 수신하고 상기 불휘발성 메모리로부터 제 2 마스크 비트들을 수신하면서, 상기 제 4 비트들 및 상기 제 2 마스크 비트들을 디코딩하여 보안 키를 생성하는 단계를 포함할 수 있다.
본 발명의 또 다른 실시 예에 따른, 직렬로 연결된 PUF 셀 어레이, 추출부, 비트 인코딩부, 및 블록 인코딩부를 포함하는 반도체 장치의 보안 키 등록 방법은, 상기 추출부에 의해, 상기 PUF 셀 어레이로부터 제 1 비트들을 수신하면서, 상기 제 1 비트들 중 유효한 제 2 비트들을 나타내는 마킹 비트들을 불휘발성 메모리로 전송하는 단계, 상기 비트 인코딩부에 의해, 상기 추출부로부터 상기 제 2 비트들을 수신하면서, 상기 제 2 비트들의 패리티에 따라 상기 제 2 비트들을 인코딩하여 제 1 마스크 비트들을 생성하고 그리고 상기 제 1 마스크 비트들을 상기 불휘발성 메모리로 전송하는 단계, 그리고 상기 블록 인코딩부에 의해, 상기 비트 인코딩부로부터 상기 제 2 비트들이 압축된 제 3 비트들을 수신하면서, 상기 제 3 비트들을 인코딩하여 헬퍼 비트들을 생성하고, 상기 제 3 비트들을 이용하여 상기 헬퍼 비트들을 마스킹하여 제 2 마스크 비트들을 생성하고, 그리고 상기 제 2 마스크 비트들을 상기 불휘발성 메모리로 전송하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 반도체 장치에 의하면, PUF 데이터는 파이프라인 동작을 이용하여 처리될 수 있다. 따라서, PUF 셀들의 개수, PUF 데이터의 크기, 또는 보안 키의 크기가 증가하여도 PUF 데이터로부터 키를 생성하는 과정에서 발생하는 데이터를 저장하는 버퍼의 사이즈는 일정하게 유지될 수 있다. 또한, PUF 데이터를 처리하여 키를 생성하는 시간이 감소할 수 있다.
도 1은 본 발명의 실시 예에 따른 반도체 장치를 예시적으로 보여주는 블록도이다.
도 2는 도 1의 키 등록부를 좀 더 상세하게 보여주는 블록도이다.
도 3은 도 2의 비트 인코딩부를 좀 더 상세하게 보여주는 블록도이다.
도 4는 도 2의 블록 인코딩부를 좀 더 상세하게 보여주는 블록도이다.
도 5는 도 1의 키 생성부를 좀 더 상세하게 보여주는 블록도이다.
도 6 및 도 7은 도 5의 언마스킹부 및 비트 디코딩부를 좀 더 상세하게 보여주는 블록도이다.
도 8은 도 5의 블록 디코딩부를 좀 더 상세하게 보여주는 블록도이다.
도 9는 도 1의 키 생성부에서 데이터가 직렬로 처리되는 과정을 예시적으로 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따른 키 등록 과정을 예시적으로 보여주는 순서도이다.
도 11은 본 발명의 실시 예에 따른 키 생성 과정을 예시적으로 보여주는 순서도이다.
도 12는 본 발명의 실시 예에 따른 반도체 장치가 적용된 전자 시스템을 예시적으로 보여주는 블록도이다.
도 13은 도 12의 스마트 카드가 적용된 전자 장치를 예시적으로 보여주는 블록도이다.
도 14는 본 발명의 실시 예에 따른 반도체 장치가 적용된 컴퓨팅 장치를 예시적으로 보여주는 블록도이다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 반도체 장치를 예시적으로 보여주는 블록도이다. 반도체 장치(100)는 PUF(physically unclonable function) 셀 어레이(110), 키 등록부(120), 키 생성부(130), 및 불휘발성 메모리(non-volatile memory; 이하 NVM, 140)를 포함할 수 있다.
PUF 셀 어레이(110)는 PUF 셀들을 포함할 수 있다. PUF 셀 어레이(110)는 공정 변화(process variation)에 따라 고유한 전자 지문(signature)을 생성할 수 있다. 공정 변화로 인해, 다수의 반도체 장치들의 PUF 셀 어레이들로부터 출력된 데이터는 서로 다를 수 있다. 즉, 반도체 장치들 각각은 PUF 셀 어레이(110)를 이용하여 고유한 보안 키(key)를 생성할 수 있다.
예를 들어, PUF 셀 어레이(110)는 트랜지스터 문턱전압에 기초하는 PUF 셀, 중개기(arbiter)에 기초하는 PUF 셀(예를 들어, 피드-포워드(feed-forward) PUF 셀, 중개기 PUF 셀들을 병렬로 배치한 XOR PUF 셀, 라이트웨이트(lightweight) PUF 셀, 등), 링 오실레이터(ring oscillator) 기반 PUF 셀, 메모리 기반 PUF 셀(예를 들어, SRAM(static random access memory) PUF 셀, 래치(latch) PUF 셀, 플래시 메모리 PUF 셀, 메미스터(memistor) PUF 셀), 레이저 빔 또는 열 변화에 따른 재구성 가능한(reconfigurable) PUF 셀 등 중 적어도 하나를 포함할 수 있다.
PUF 셀 어레이(110)에서 출력되는 PUF 데이터는 공정 변화로 인해 BER(bit error rate)이 높을 수 있다. 다만, PUF 데이터를 암호화 및 복호화의 키 또는 인증 코드와 같은 키로서 사용하기 위해서는 키의 무결성(integrity)이 보장되어야 한다. 반도체 장치(100)는 PUF 데이터의 BER을 개선하기 위한 회로, 모듈, 유닛(unit) 등을 포함할 수 있다.
키 등록부(120)는 PUF 데이터의 BER을 개선하기 위한 데이터를 생성할 수 있다. 키 등록부(120)는 키 등록 과정을 통해 PUF 데이터의 에러를 정정하는데 사용되는 데이터를 NVM(140)에 저장할 수 있다.
키 등록부(120)는 PUF 셀 어레이(110)로부터 PUF 데이터를 수신하고 마킹(marking) 데이터를 생성할 수 있다. 마킹 데이터는 PUF 셀 어레이(110)의 모든 PUF 셀들 중 유효 PUF 셀들로부터 출력된 유효 비트들을 나타내는 마킹 비트들을 포함할 수 있다. PUF 셀 어레이(110)의 유효 PUF 셀들은 양산 단계의 다양한 테스트 과정을 통해 선별될 수 있다. 선별된 유효 PUF 셀들은 키 등록 및 키 생성에서 사용될 수 있으나, 선별되지 않은 PUF 셀들은 키 등록 및 키 생성에서 사용되지 않을 수 있다. 키 등록부(120)는 마킹 데이터를 NVM(140)으로 전송할 수 있다.
실시 예에 있어서, 마킹 데이터의 마킹 비트들의 수는 PUF 데이터를 구성하는 PUF 비트들의 수와 동일할 수 있다. 마킹 데이터는 PUF 셀 어레이(110)의 PUF 셀들이 각각 유효한지 여부를 나타내는 마킹 비트들을 이용하여 유효 맵(valid map)을 구성할 수 있다. 예를 들어, 마킹 비트의 논리 값이 1이면 PUF 비트는 유효하고, 마킹 비트의 논리 값이 0이면 PUF 비트는 유효하지 않을 수 있다. 물론, 마킹 비트의 논리 값이 0이면 PUF 비트는 유효하고, 마킹 비트의 논리 값이 1이면 PUF 비트는 유효하지 않을 수도 있다. 즉, NVM(140)에는 PUF 셀 어레이(110)의 모든 PUF 셀들의 개수와 동일한 사이즈를 갖는 마킹 비트들로 구성되는 유효 맵이 저장될 수 있다.
키 등록부(120)는 PUF 데이터의 에러를 정정하기 위한 데이터를 생성할 수 있다. 키 등록부(120)는 유효 PUF 셀들의 PUF 데이터를 인코딩(encoding)할 수 있다. 키 등록부(120)는 인코딩 결과를 NVM(140)으로 전송할 수 있다. 인코딩 결과는 PUF 데이터를 기초로 하여 생성될 수 있다. 만약 인코딩 결과가 그대로 NVM(140)에 저장되면, 공격자는 NVM(140)에 저장된 인코딩 결과를 이용하여 PUF 데이터를 유추하거나 예측할 수 있다. 따라서, 인코딩 결과는 마스킹(masking)되고, 마스킹된 인코딩 결과가 NVM(140)으로 전송될 수 있다.
도 1을 참조하면, 마스킹된 인코딩 결과는 제 1 마스크 데이터 및 제 2 마스크 데이터를 포함할 수 있다. 예를 들어, 제 1 마스크 데이터는 PUF 데이터의 비트 에러를 정정하기 위해 사용되는 헬퍼 데이터(helper data)가 마스킹된 데이터이고, 제 2 마스크 데이터는 PUF 데이터의 블록(block) 에러를 정정하기 위해 사용되는 헬퍼 데이터가 마스킹된 데이터이다. PUF 데이터의 에러는 비트 단위로 정정되거나 블록 단위로 정정될 수 있다. 비트 단위의 에러 정정을 통해 한 비트의 에러가 정정될 수 있고, 블록 단위의 에러 정정을 통해 블록에 포함된 복수의 비트들의 에러가 정정될 수 있다. 블록에 포함되는 복수의 비트들의 사이즈 또는 길이는 에러 정정 코드에 따라 결정될 수 있다.
실시 예에 있어서, 키 등록부(120)는 마킹 데이터 및 마스킹된 인코딩 결과를 NVM(140)에 저장하기 위해 사용될 수 있다. 키 등록부(120)에 의한 키 등록은 양산 과정(또는 테스트 과정)에서 한번만 수행될 수 있다. 즉, NVM(140)에 마킹 데이터, 제 1 마스크 데이터, 및 제 2 마스크 데이터가 저장되기 위해 키 등록부(120)가 양산 과정에서 사용될 수 있다.
키 생성부(130)는 키 등록을 통해 NVM(140)에 저장된 마킹 데이터, 제 1 마스크 데이터, 제 2 마스크 데이터를 읽을 수 있다. 키 생성부(130)는 마킹 데이터, 제 1 마스크 데이터, 제 2 마스크 데이터를 이용하여 PUF 데이터를 디코딩(decoding)하고, PUF 데이터에 포함될 수 있는 에러를 정정할 수 있고, 그리고 보안 키를 생성할 수 있다. 공정 변화로 인해, 키 생성 과정에서의 PUF 데이터와 키 등록 과정에서의 PUF 데이터는 서로 다를 수 있다. 그럼에도 불구하고, 키 생성부(130)는 비트 에러 정정 및 블록 에러 정정을 통해 키를 복구할 수 있다.
보안 키의 길이는, 예를 들어, 보안, 암호화 알고리즘 등과 같은, 반도체 장치(100)가 사용되는 다양한 어플리케이션들(applications) 등에 따라 결정될 수 있고, PUF 셀 어레이(110)는 보안 키의 길이보다 더 큰 사이즈를 갖는 PUF 데이터를 출력할 수 있다. 본 발명의 실시 예에 따르면, 키 등록부(120) 및 키 생성부(130)는 키 등록 및 키 생성에 필요한 모든 PUF 비트들이 PUF 셀 어레이(110)로부터 출력된 이후에 PUF 비트들을 처리하지 않는다. 키 등록부(120) 및 키 생성부(130)는 PUF 셀 어레이(110)로부터 PUF 비트들을 수신하면서 수신된 PUF 비트들을 처리할 수 있다.
NVM(140)은 마킹 데이터, 제 1 마스크 데이터, 및 제 2 마스크 데이터를 저장할 수 있다. 도 1을 참조하면, NVM(140)은 반도체 장치(100)에 포함되거나 반도체 장치(100)의 내부에 구현된 것으로 도시되었으나, 본 발명의 범위는 이에 제한되지 않는다. 예를 들어, NVM(140)은 반도체 장치(100)의 외부에 위치한 저장 장치일 수도 있다.
실시 예에 있어서, NVM(140)은 NAND 플래시 메모리(NAND flash memory), NOR 플래시 메모리(NOR flash memory), RRAM(resistive random access memory), FRAM(ferroelectric random access memory), PRAM(phase change random access memory), TRAM(thyristor random access memory), MRAM(magnetic random access memory), 및 OTP(one time programmable) 메모리 중 적어도 하나를 포함할 수 있다.
도 2는 도 1의 키 등록부를 좀 더 상세하게 보여주는 블록도이다. 도 2는 도 1을 참조하여 설명될 것이다. 도 2에서, 도 1의 키 생성부(130)의 도시는 생략되었다.
PUF 셀 어레이(110)는 제 1 비트들로 구성된 제 1 데이터를 키 등록부(120)로 전송할 수 있다. 예를 들어, PUF 셀 어레이(110)는 4096 등과 같은 2의 배수의 PUF 셀들을 포함할 수 있다. 본 발명의 실시 예에 따르면, PUF 셀 어레이(110)는 모든 PUF 셀들에서 출력되는 제 1 비트들을 키 등록부(120)로 한꺼번에 전송하지 않는다. 대신에, PUF 셀 어레이(110)는 서브 PUF 셀 어레이를 구성하는 PUF 셀들만큼의 제 1 비트들을 키 등록부(120)로 순차적으로 전송할 수 있다. 여기서, 서브 PUF 셀 어레이는 PUF 셀 어레이(110) 내 PUF 셀들 일부의 집합일 수 있다. 예를 들어, PUF 셀 어레이(110)는 16개, 32개 등과 같은 서브 PUF 셀 어레이에 대응하는 단위로 제 1 비트들을 키 등록부(120)로 순차적으로 전송하여 모든 제 1 비트들을 키 등록부(120)로 전송할 수 있다.
키 등록부(120)는 추출부(121), 비트 인코딩부(122), 및 블록 인코딩부(123)를 포함할 수 있다. 도 2를 참조하면, 추출부(121), 비트 인코딩부(122), 및 블록 인코딩부(123)는 파이프라인(pipeline) 동작이 가능하도록 직렬로 연결될 수 있다. 키 등록부(120)는 PUF 셀 어레이(110)로부터 제 1 데이터를 구성하는 모든 제 1 비트들을 수신할 때까지 기다리지 않는다. 키 등록부(120)는 PUF 셀 어레이(110)로부터 서브 PUF 셀 어레이의 PUF 셀들만큼의 제 1 비트들을 수신하면서, 수신된 제 1 비트들을 처리할 수 있다.
추출부(121)는 PUF 셀 어레이(110)로부터 제 1 데이터를 구성하는 제 1 비트들을 수신할 수 있다. 추출부(121)는 제 1 비트들을 수신하면서 제 1 비트들 중 유효한 제 2 비트들을 나타내는 마킹 비트들을 생성할 수 있다. 추출부(121)는 마킹 비트들을 NVM(140)으로 전송할 수 있다. 추출부(121)는 수신된 제 1 비트들 중 유효한 제 1 비트들인 제 2 비트들로 구성되는 제 2 데이터를 비트 인코딩부(122)로 전송할 수 있다.
비트 인코딩부(122)는 추출부(121)로부터 제 2 데이터를 구성하는 제 2 비트들을 수신하면서 비트 인코딩 단위를 기준으로 제 2 비트들을 인코딩할 수 있다. 예를 들어, 비트 인코딩부(122)는 비트 인코딩 단위 크기의 제 2 비트들의 패리티(parity)에 따라 제 2 비트들을 인코딩하여 제 1 마스크 비트들을 생성할 수 있다. 제 1 마스크 비트들은 제 1 마스크 데이터를 구성할 수 있고, 제 1 마스크 데이터는 키 생성 과정에서 발생할 수 있는 제 2 비트들의 에러를 비트 단위로 정정하는데 사용될 수 있다. 비트 인코딩부(122)는 제 1 마스크 비트들을 NVM(140)으로 전송할 수 있다.
또한, 비트 인코딩부(122)는 제 2 비트들을 압축한 제 3 비트들을 블록 인코딩부(123)로 전송할 수 있다. 제 3 비트들 각각은 비트 인코딩 단위에 대응하는 제 2 비트들을 압축한 비트에 대응할 수 있다. 제 3 비트들은 제 3 데이터를 구성할 수 있다.
블록 인코딩부(123)는 비트 인코딩부(122)로부터 제 3 데이터를 구성하는 제 3 비트들을 수신하면서 블록 인코딩 단위를 기준으로 제 3 비트들을 인코딩할 수 있다. 예를 들어, 블록 인코딩부(123)는 블록 인코딩 단위 크기의 제 3 비트들을 에러 정정 코드(ECC)로 인코딩하여 제 2 마스크 비트들을 생성할 수 있다. 제 2 마스크 비트들은 제 2 마스크 데이터를 구성할 수 있고, 제 2 마스크 데이터는 키 생성 과정에서 발생할 수 있는 제 2 비트들의 에러를 블록 단위로 정정하는데 사용될 수 있다. 블록 인코딩부(123)는 제 2 마스크 비트들을 NVM(140)으로 전송할 수 있다.
실시 예에 있어서, 에러 정정 코드는 LDPC(low density parity check) 코드, BCH(Bose, Chaudhuri, Hocquenghem) 코드, 터보 코드(turbo code), 리드-솔로몬 코드(Reed-Solomon code), 콘볼루션 코드(convolution code), RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)들 중 적어도 하나일 수 있다.
전술한대로, PUF 셀 어레이(110), 추출부(121), 비트 인코딩부(122), 및 블록 인코딩부(123)는 직렬로 연결될 수 있다. 추출부(121)는 PUF 셀 어레이(110)로부터 출력된 제 1 비트들 중 유효한 제 2 비트들을 비트 인코딩부(122)로 전송할 수 있다. 비트 인코딩부(122)는 비트 인코딩 단위 크기의 제 2 비트들을 모으고 인코딩할 수 있다. 비트 인코딩부(122)는 제 3 비트들을 블록 인코딩부(123)로 전송할 수 있다. 블록 인코딩부(123)는 블록 인코딩 단위만큼의 제 3 비트들을 모으고 인코딩할 수 있다.
실시 예에 있어서, 추출부(121), 비트 인코딩부(122), 및 블록 인코딩부(123)는 클럭(clock)을 기초로 하여 동작할 수 있다. 제 2 비트들 및 제 3 비트들은 클럭에 동기되어 전송될 수 있다. 예를 들어, 추출부(121) 및 비트 인코딩부(122)는 클럭에 기초하여 제 2 비트들의 전송 및 수신에 대한 알림 신호들(Ack)을 서로 교환할 수 있다. 비트 인코딩부(122) 및 블록 인코딩부(123)는 클럭에 기초하여 제 3 비트들의 전송 및 수신에 대한 알림 신호들(Ack)을 서로 교환할 수 있다.
비트 인코딩 단위는 비트 에러 정정 코드 또는 비트 에러 정정 연산에 따라 결정될 수 있고 비트 에러 정정 코드의 인코딩 단위로 지칭될 수도 있다. 예를 들어, 비트 에러 정정 코드는 다수결 연산(majority voting operation)과 관련된 반복 코드(repetition code)일 수 있다. 유사하게, 블록 인코딩 단위는 블록 에러 정정 코드 또는 블록 에러 정정 연산에 따라 결정될 수 있고, 블록 에러 정정 코드의 인코딩 단위로 지칭될 수도 있다. 예를 들어, 블록 에러 정정 코드는 BCH 코드일 수 있다.
추출부(121), 비트 인코딩부(122), 및 블록 인코딩부(123) 방향으로 비트들이 순차로 전송되고, 추출부(121), 비트 인코딩부(122), 및 블록 인코딩부(123) 각각은 비트를 수신하면서 수신된 비트를 처리할 수 있다. 즉, 키 등록부(120)의 추출부(121), 비트 인코딩부(122), 및 블록 인코딩부(123)는 동시에 동작할 수 있다. PUF 셀 어레이(110)가 제 1 비트들을 출력하는 동안 추출부(121)는 PUF 셀 어레이(110)에서 먼저 출력된 제 1 비트들을 처리할 수 있다. 추출부(121)가 제 2 비트들을 출력하는 동안 비트 인코딩부(122)는 추출부(121)에서 먼저 출력된 제 2 비트들을 처리할 수 있다. 비트 인코딩부(122)가 제 3 비트들을 출력하는 동안 블록 인코딩부(123)는 비트 인코딩부(122)에서 먼저 출력된 제 3 비트들을 처리할 수 있다. 따라서, PUF 셀 어레이(110)로부터 PUF 데이터(즉, 제 1 비트들로 구성된 제 1 데이터)가 출력되면서, NVM(140)에 저장할 마킹 데이터, 제 1 마스크 데이터, 및 제 2 마스크 데이터가 생성되므로, 키 등록에 소요되는 시간이 감소할 수 있다.
도 3은 도 2의 비트 인코딩부를 좀 더 상세하게 보여주는 블록도이다. 도 3은 도 2를 참조하여 설명될 것이다. 비트 인코딩부(122)는 제 1 및 제 2 버퍼들(122_1, 122_2) 및 패리티 체커(122_3)를 포함할 수 있다.
제 1 버퍼(122_1)는 추출부(121)로부터 제 2 데이터의 제 2 비트들을 수신하고 저장할 수 있다. 제 1 버퍼(122_1)에 저장된 제 2 비트들은 추출부(121)에 의해 업데이트될 수 있다. 제 1 버퍼(122_1)에 저장되는 제 2 비트들의 수는 비트 인코딩 단위에 따라 결정될 수 있다. 예를 들어, 비트 인코딩부(122)가 반복 코드에 따라 제 2 비트들을 인코딩하는 경우, 제 1 버퍼(122_1)에 저장되는 비트들의 수는 적어도 3 이상의 홀수일 수 있다. 도 3에서, 예시적으로, 제 1 버퍼(122_1)에 3개 비트들이 저장되는 것으로 도시되었으나 본 발명의 범위는 이에 제한되지 않는다. 본 발명의 실시 예에 따르면, 제 1 버퍼(122_1)는 제 2 데이터를 구성하는 모든 제 2 비트들을 저장하는 대신에 비트 인코딩 단위만큼의 제 2 비트들을 저장할 수 있다.
제 2 버퍼(122_2)는 비트 인코딩부(122)의 비트 연산의 결과인 제 1 마스크 데이터의 제 1 마스크 비트들을 저장할 수 있다. 제 2 버퍼(122_2)에 저장되는 비트들의 수도 비트 인코딩 단위에 따라 결정될 수 있고, 제 1 버퍼(122_1)에 저장되는 비트들의 수와 동일할 수 있다. 제 2 버퍼(122_2)는 제 1 마스크 데이터를 구성하는 모든 제 1 마스크 비트들을 저장하는 대신에 비트 인코딩 단위만큼의 제 1 마스크 비트들을 저장할 수 있다.
패리티 체커(122_3)는 제 1 버퍼(122_1)에 저장된 제 2 비트들의 패리티, 즉 ‘1’ 비트의 개수를 체크할 수 있다. 예를 들어, 패리티 체커(122_3)는 ‘1’ 비트의 개수가 짝수이면 '0' 키 비트(key bit)를 출력하고 ‘1’ 비트의 개수가 홀수이면 ‘1’ 키 비트를 출력할 수 있다. 여기서, 키 비트는 제 3 비트일 수 있고, 제 1 버퍼(122_1)에 저장된 제 2 비트들이 압축되어 생성될 수 있다.
비트 인코딩부(122)는 제 1 버퍼(122_1)에 저장된 제 2 비트들에 대해 비트 연산(bitwise operation)을 수행하고 제 1 마스크 비트들을 생성할 수 있다. 도 3에서, 예시적으로, 제 1 버퍼(122_1)에 '101' 제 2 비트들이 저장된 것으로 도시되었다. 예를 들어, 비트 인코딩부(122)는 '101' 및 '000'에 대해 XOR(exclusive OR) 연산을 수행하고 제 1 마스크 비트들을 생성할 수 있다. 비트 인코딩부(122)는 XOR 연산 이외에 XNOR 등과 같은 다양한 비트 연산을 수행할 수도 있다. 여기서, '000' 비트들 또는 '111' 비트들은 패리티 체커(122_3)의 체킹(checking) 결과에 기초한 값일 수 있다.
표 1은 제 1 버퍼(122_1)에 저장된 제 2 비트들의 값들에 따른 비트 인코딩부(122)의 연산 결과를 예시적으로 보여준다.
Data 2 Number of ‘1’ Bit Key Bit Bitwise Operation Mask Data 1
000 Even 0 000 00
001 Odd 1 110 10
010 Odd 1 101 01
011 Even 0 011 11
100 Odd 1 011 11
101 Even 0 101 01
110 Even 0 110 10
111 odd 1 000 00
표 1을 참조하면, ‘1’ 비트의 개수가 짝수면 비트 인코딩부(122)의 비트 연산 결과는 제 1 버퍼(122_1)에 저장된 값과 동일할 수 있다. ‘1’ 비트의 개수가 홀수면 비트 인코딩부(122)의 비트 연산 결과는 제 1 버퍼(122_1)에 저장된 값의 반전일 수 있다. 도 3 및 표 1에서 비트 인코딩부(122)는 짝수 패리티에 기초하여 인코딩을 수행하는 것으로 설명되었으나, 비트 인코딩부(122)는 홀수 패리티에 기초하여 인코딩을 수행할 수도 있다.
비트 연산 결과는 비트 인코딩부(122)에 의해 제 2 비트들에 기초하여 생성된 값이다. 비트 연산 결과가 그대로 NVM(140)에 저장되면, 공격자는 NVM(140)에 저장된 비트 연산 결과를 이용하여 PUF 데이터를 유추하거나 예측할 수 있다. 이를 방지하기 위해, 비트 연산 결과는 마스킹될 수 있다.
표 1에서, 서로 반전 관계에 있는 제 2 비트들의 두 값들은 동일한 비트 연산 결과를 갖는다. 제 2 비트들이 '000' 또는 '111'인 경우, 비트 연산 결과들은 '000'으로 서로 동일하다. 제 2 비트들이 '001' 또는 '110'인 경우, 비트 연산 결과는 '110'으로 서로 동일하다. 제 2 비트들이 '010' 또는 '101'인 경우, 비트 연산 결과는 '101'로 서로 동일하다. 제 2 비트들이 '011' 또는 '100'인 경우, 비트 연산 결과는 '011'로 서로 동일하다. 따라서, 비트 연산 결과 중 한 비트가 삭제되어도, 삭제된 비트는 비트 인코딩부(122)가 기초하는 짝수 패리티 및 홀수 패리티 중 하나에 따라 복원될 수 있다.
즉, 비트 연산 결과 중 한 비트가 삭제됨으로써 비트 연산 결과는 마스킹될 수 있다. 비트 연산 결과의 비트들 중 임의의 비트가 삭제될 수 있다. 표 1을 참조하면, 예를 들어, 제 1 마스크 비트들은 비트 연산 결과 중 MSB(most significant bit)가 삭제됨으로써 생성될 수 있다. 표 1과 달리, 예를 들어, 비트 연산 결과 중 LSB(least significant bit)가 삭제되거나 중간 비트가 삭제될 수도 있다. 비트 인코딩부(122)는 제 2 버퍼(122_2)에 저장된 비트들 중 임의의 한 비트를 제외한 나머지 비트들(즉, 제 1 마스크 비트들)을 NVM(140)으로 전송할 수 있다.
실시 예에 있어서, 도 3에서 도시된 제 1 및 제 2 버퍼들(122_1, 122_2) 이외에도 비트 인코딩부(122)는 제 1 버퍼(122_1)에 저장된 제 2 비트들을 인코딩하거나, 제 2 비트들을 패리티를 체크하거나, 또는 제 2 비트들에 대해 비트 연산을 수행함으로써 발생하는 중간값, 최종값 등을 저장하기 위한 버퍼를 더 포함할 수 있다. 또한, 예시적으로 제 1 및 제 2 버퍼들(122_1, 122_2)이 각각 하나씩 도 3에서 도시되었으나 본 발명의 범위는 이에 제한되지 않는다.
도 4는 도 2의 블록 인코딩부를 좀 더 상세하게 보여주는 블록도이다. 도 4는 도 2를 참조하여 설명될 것이다. 블록 인코딩부(123)는 제 3 버퍼 (123_1), 블록 인코더(123_2), 및 제 4 버퍼(123_3)를 포함할 수 있다.
제 3 버퍼(123_1)는 비트 인코딩부(122)로부터 제 3 데이터의 제 3 비트들(키 비트들)을 수신하고 저장할 수 있다. 제 3 버퍼(123_1)에 저장된 제 3 비트들은 비트 인코딩부(122)에 의해 업데이트될 수 있다. 제 3 버퍼(123_1)는 블록 인코딩 단위에 따른 제 3 비트들을 저장할 수 있다. 제 3 버퍼(123_1)는 제 3 데이터를 구성하는 모든 제 3 비트들을 저장하는 대신에 블록 인코딩 단위만큼의 제 3 비트들을 저장할 수 있다.
블록 인코더(123_2)는 블록 에러 정정 코드(예를 들면, BCH 코드)에 따라 제 3 비트들을 인코딩하고 헬퍼 비트들을 생성할 수 있다. 헬퍼 비트들은 헬퍼 데이터를 구성할 수 있고, 헬퍼 데이터는 전술한 제 2 데이터(PUF 데이터 중 유효 데이터)의 에러를 정정하기 위해 사용될 수 있다. 헬퍼 데이터는 제 2 데이터에 기초하여 생성된 값이다. 헬퍼 데이터가 그대로 NVM(140)에 저장되면, 공격자는 NVM(140)에 저장된 헬퍼 데이터를 이용하여 PUF 데이터를 유추하거나 예측할 수 있다. 이를 방지하기 위해, 헬퍼 데이터도 전술한 제 1 마스크 데이터와 유사하게 마스킹될 수 있다.
제 3 버퍼(123_1)는 헬퍼 비트들을 마스킹하기 위해 비트 인코딩부(122)로부터 제 3 비트들을 더 수신하고 더 저장할 수 있다. 즉, 도 4를 참조하면, 제 3 버퍼(123_1)는 블록 에러 정정 연산의 인코딩 단위만큼의 제 3 비트들에 더해 마스킹을 위한 제 3 비트들을 더 저장할 수 있다. 블록 인코딩부(123)는 헬퍼 비트들 및 마스킹을 위한 제 3 비트들에 대해 비트 연산(예를 들면, XOR 연산)을 수행하고 제 2 마스크 비트들을 생성할 수 있다. 제 2 마스크 비트들은 제 2 마스크 데이터를 구성할 수 있다.
제 4 버퍼(123_3)는 블록 인코딩부(123)의 비트 연산의 결과인 제 2 마스크 데이터의 제 2 마스크 비트들을 저장할 수 있다. 제 4 버퍼(123_3)는 제 2 마스크 데이터를 구성하는 모든 제 2 마스크 비트들을 저장하는 대신에 블록 인코딩에 의해 생성된 헬퍼 비트들(즉, 블록 에러 정정 연산의 단위만큼의 헬퍼 비트들)을 마스킹하기 위한 제 2 마스크 비트들을 저장할 수 있다. 제 4 버퍼(123_3)에서 NVM(140)으로 제 2 마스크 데이터의 모든 제 2 마스크 비트들의 전송이 완료되면, 키 등록 과정은 종료된다.
실시 예에 있어서, 도 4에서 도시된 제 3 및 제 4 버퍼들(123_1, 123_3) 이외에도 블록 인코딩부(123)는 제 3 버퍼(123_1)에 저장된 제 3 비트들을 인코딩하거나 또는 제 3 비트들에 대해 비트 연산을 수행함으로써 발생하는 중간값, 최종값 등을 저장하기 위한 버퍼를 더 포함할 수 있다. 또한, 예시적으로 제 3 및 제 4 버퍼들(123_1, 123_3)이 각각 하나씩 도 4에서 도시되었으나, 본 발명의 범위는 이에 제한되지 않는다.
도 5는 도 1의 키 생성부를 좀 더 상세하게 보여주는 블록도이다. 도 5의 설명에 앞서, 도 2에 도시된 제 1 내지 제 3 데이터는 키 등록 과정에 따른 데이터이고, 도 5에 도시된 제 1 내지 제 4 데이터는 키 생성 과정에 따른 데이터이므로, 양자는 서로 다르다. PUF 셀 어레이(110)는 키 등록부(120)로 제 1 데이터를 전송하는 것과 유사하게, 키 생성부(130)로도 제 1 데이터를 전송할 수 있다. 키 생성부(130)는 반도체 장치(100)가 사용되는 어플리케이션의 요청(혹은 유저의 요청, 인증 요청 등)에 따라 PUF 셀 어레이(110)로부터 제 1 데이터를 수신하고 그리고 키 등록부(120)가 NVM(140)에 저장한 마킹 데이터, 제 1 마스크 데이터, 및 제 2 마스크 데이터를 이용하여 보안 키를 복구할 수 있다.
키 생성부(130)는 추출부(121), 언마스킹부(132), 비트 디코딩부(133), 및 블록 디코딩부(134)를 포함할 수 있다. PUF 셀 어레이(110), 추출부(121), 언마스킹부(132), 비트 디코딩부(133), 및 블록 디코딩부(134)는 파이프라인 동작이 가능하도록 직렬로 연결될 수 있다. 키 생성부(130)도 키 등록부(120)와 유사하게, PUF 셀 어레이(110)로부터 제 1 데이터를 구성하는 모든 제 1 비트들을 수신할 때까지 기다리지 않는다. 키 생성부(130)는 PUF 셀 어레이(110)로부터 서브 PUF 셀 어레이에 대응하는 제 1 비트들을 수신하면서, 수신된 제 1 비트들을 처리할 수 있다.
추출부(121)는 도 1의 키 등록부(120)에 포함된 추출부(121)와 동일할 수 있다. 추출부(121)는 키 생성 과정에서 PUF 셀 어레이(110)로부터 제 1 데이터를 수신할 수 있다. 전술한대로, PUF 셀 어레이(110)의 특성상 키 등록 과정에서 생성된 제 1 데이터와 키 생성 과정에서 생성된 제 1 데이터는 서로 같을 수도 있고 서로 다를 수도 있다.
추출부(121)는 PUF 셀 어레이(110)로부터 제 1 데이터를 구성하는 제 1 비트들을 수신할 수 있고 그리고 NVM(140)으로부터 마킹 데이터를 구성하는 마킹 비트들을 수신할 수 있다. 즉, 추출부(121)는 키 등록 과정에서 마킹 데이터를 NVM(140)으로 전송하고, 키 생성 과정에서 NVM(140)으로부터 마킹 데이터를 수신할 수 있다.
추출부(121)는 마킹 비트들을 이용하여 제 1 비트들 중 유효한 제 2 비트들을 추출할 수 있다. 전술한대로, 마킹 비트들은 제 1 비트들이 유효한지 여부를 나타내는 유효 맵을 구성할 수 있다. 따라서, 추출부(121)는 마킹 비트의 논리 값('0' 또는 '1')에 따라 수신된 제 1 비트를 제 2 비트로서 출력할지 여부를 판별할 수 있다. 추출부(121)는 제 1 비트들 중 유효한 비트들만을 추출할 수 있다. 추출부(121)는 제 2 데이터를 구성하는 제 2 비트들을 언마스킹부(132)로 전송할 수 있다.
언마스킹부(132)는 추출부(121)로부터 제 2 데이터를 구성하는 제 2 비트들을 수신하고 NVM(140)으로부터 제 1 마스크 데이터를 구성하는 제 1 마스크 비트들을 수신할 수 있다. 언마스킹부(132)는 제 2 데이터를 구성하는 제 2 비트들을 수신하면서 제 1 마스크 데이터를 구성하는 제 1 마스크 비트들을 이용하여 제 2 비트들을 언마스킹(unmasking)하고 언마스킹된 제 3 비트들을 생성할 수 있다. 여기서, 제 3 비트들은 제 3 데이터를 구성할 수 있고, 언마스킹을 통해 제 2 데이터가 비트 에러 정정을 위한 제 3 데이터로 변환될 수 있다. 언마스킹부(132)는 제 3 데이터를 구성하는 제 3 비트들을 비트 디코딩부(133)로 전송할 수 있다.
비트 디코딩부(133)는 언마스킹부(132)로부터 제 3 데이터를 구성하는 제 3 비트들을 수신하면서 비트 에러 정정 연산을 위해 제 3 비트들을 디코딩할 수 있다. 예를 들어, 비트 디코딩부(133)는 제 3 비트들에 대해 다수결 연산(majority voting operation)을 수행할 수 있고, 제 2 비트들의 비트 에러를 정정할 수 있다. 비트 디코딩부(133)는 제 3 비트들을 제 4 비트들(키 비트들)로 압축할 수 있고, 제 4 비트들을 블록 디코딩부(134)로 전송할 수 있다. 제 4 비트들은 제 4 데이터를 구성할 수 있다.
블록 디코딩부(134)는 비트 디코딩부(133)로부터 제 4 데이터를 구성하는 제 4 비트들을 수신하면서 제 4 비트들을 디코딩할 수 있다. 블록 디코딩부(134)의 디코딩 단위는 블록이고, 블록 디코딩부(134)는 제 4 비트들을 모아서 블록들을 생성할 수 있다. 블록 디코딩부(134)는 NVM(140)으로부터 제 2 마스크 데이터를 구성하는 제 2 마스크 비트들을 수신할 수 있고, 제 2 마스크 비트들을 전술한 헬퍼 비트들(즉, 도 4의 헬퍼 데이터의 헬퍼 비트들)로 언마스킹할 수 있다. 블록 디코딩부(134)는 에러 정정 코드에 따라 제 2 비트들의 에러를 정정할 수 있다. 즉, 블록 디코딩부(134)는 제 4 비트들 및 제 2 마스크 비트들을 디코딩하여 에러를 정정하고 최종 키(Final Key, 혹은 보안 키)를 생성할 수 있다.
도 6 및 도 7은 도 5의 언마스킹부 및 비트 디코딩부를 좀 더 상세하게 보여주는 블록도이다. 도 6 및 도 7은 도 5를 참조하여 설명될 것이다. 언마스킹부(132)는 제 5 및 제 6 버퍼들(132_1, 132_2)을 포함할 수 있다.
제 5 버퍼(132_1)는 추출부(121)로부터 제 2 데이터의 제 2 비트들을 수신하고 저장할 수 있다. 제 5 버퍼(132_1)에 저장된 제 2 비트들은 추출부(121)에 의해 업데이트될 수 있다. 제 5 버퍼(132_1)에 저장되는 비트들의 수는 비트 디코딩 단위(예를 들어, 비트 에러 정정 연산의 단위일 수 있고 비트 인코딩 단위와 동일할 수 있음)에 따라 결정될 수 있다. 예를 들어, 비트 디코딩부(133)가 반복 코드에 따라 제 3 비트들을 디코드하는 경우, 제 5 버퍼(132_1)에 저장되는 비트들의 수는 적어도 3 이상의 홀수일 수 있다.
실시 예에 있어서, 도 6 및 도 7에서, 제 5 버퍼(132_1)에 3개 비트들이 저장되는 것으로 도시되었으나 본 발명의 범위는 이에 제한되지 않는다. 제 5 버퍼(132_1)는 제 2 데이터를 구성하는 모든 제 2 비트들을 저장하는 대신에 비트 디코딩부(133)의 비트 디코딩 단위만큼의 제 2 비트들을 저장할 수 있다.
다른 실시 예에 있어서, 도시된 바와 달리, 제 5 버퍼(132_1)는 비트 디코딩 단위만큼의 제 2 비트들을 저장하지 않을 수 있다. 제 5 버퍼(132_1)는 적어도 하나의 제 2 비트를 저장할 수도 있다. 이 경우, 제 5 버퍼(132_1)에 저장된 제 2 비트는 비트 연산을 위해 제공되고, 이후 제 5 버퍼(132_1)에 새로운 제 2 비트가 저장될 수 있다.
제 6 버퍼(132_2)는 NVM(140)으로부터 제 1 마스크 데이터를 구성하는 제 1 마스크 비트들을 수신하고 저장할 수 있다. 제 6 버퍼(132_2)에 저장되는 제 1 마스크 비트들의 수는 비트 디코딩 단위에 따라 결정될 수 있고, 제 5 버퍼(132_1)에 저장되는 비트들의 수와 동일할 수 있다. 제 6 버퍼(132_2)는 제 1 마스크 데이터를 구성하는 모든 제 1 마스크 비트들을 저장하는 대신에 비트 디코딩 단위만큼의 제 1 마스크 비트들을 저장할 수 있다.
다른 실시 예에 있어서, 도시된 바와 달리, 제 6 버퍼(132_2)는 비트 디코딩 단위만큼의 제 1 마스크 비트들을 저장하지 않을 수 있다. 제 6 버퍼(132_2)는 적어도 하나의 제 1 마스크 비트를 저장할 수도 있다. 이 경우, 제 6 버퍼(132_2)에 저장된 제 1 마스크 비트는 비트 연산을 위해 제공되고, 이후 제 6 버퍼(132_2)에 새로운 제 1 마스크 비트가 저장될 수 있다.
언마스킹부(132)는 NVM(140)으로부터 제 1 마스크 데이터를 구성하는 제 1 마스크 비트들을 수신하고, 비트 인코딩부(122)가 기초하는 짝수 패리티 및 홀수 패리티 중 하나에 따라 인코딩 과정에서 삭제된 어느 한 비트를 복원할 수 있다. 예를 들어, 비트 인코딩부(122)가 짝수 패리티에 기초하여 동작하고, NVM(140)이 '01' 제 1 마스크 비트들을 전송하였다고 가정한다. 도 6에서 도시된 것과 같이, 언마스킹부(132)는 짝수 패리티에 따라 삭제된 ‘1’ 비트를 복원할 수 있고, 제 6 버퍼(132_2)에는 '101'이 저장될 수 있다. 상술한 예시와 달리, 비트 인코딩부(122)가 홀수 패리티에 기초하여 동작하면, 언마스킹부(132)는 홀수 패리티에 따라 삭제된 비트를 복원할 수 있다.
언마스킹부(132)는 제 5 버퍼(132_1)에 저장된 제 2 비트들 및 제 6 버퍼(132_2)에 저장된 제 1 마스크 비트들에 대해 비트 연산을 수행하고 제 3 비트들을 생성할 수 있다. 언마스킹부(132)의 비트 연산을 통해 제 2 비트들은 제 3 비트들로 언마스킹될 수 있다. 여기서, 비트 연산은 XOR, XNOR 연산 등일 수 있다.
비트 디코딩부(133)는 제 7 버퍼(133_1)를 포함할 수 있다. 제 7 버퍼(133_1)는 언마스킹부(132)로부터 제 3 데이터의 언마스킹된 제 3 비트들을 수신하고 저장할 수 있다. 제 7 버퍼(133_1)에 저장되는 제 3 비트들의 수는 비트 디코딩 단위에 따라 결정될 수 있고, 제 5 및 제 6 버퍼들(132_1, 132_2) 각각에 저장되는 비트들의 수와 동일할 수 있다. 제 7 버퍼(133_1)는 제 3 데이터를 구성하는 모든 제 3 비트들을 저장하는 대신에 비트 디코딩 단위만큼의 제 3 비트들을 저장할 수 있다. 예를 들어, 제 7 버퍼(133_1)는 다수결 연산의 단위만큼의 제 3 비트들을 저장할 수 있다.
비트 디코딩부(133)는 제 7 버퍼(133_1)에 저장된 제 3 비트들에 대해 다수결 연산을 수행할 수 있다. 예를 들어, 비트 디코딩부(133)는 제 7 버퍼(133_1)에 저장된 제 3 비트들을 하나의 키 비트(제 4 비트)로 압축할 수 있다.
표 2는 제 5 버퍼(132_1)에 저장된 제 2 비트들의 값들에 따른 언마스킹부(132) 및 비트 디코딩부(133)의 연산 결과들을 예시적으로 보여준다.
Data 2 Mask Data 1 Recovered Mask Data 1 Bitwise Operation Key Bit
000 00 000 000 0
001 10 110 111 1
010 01 101 111 1
011 11 011 000 0
100 11 011 111 1
101 01 101 000 0
110 10 110 000 0
111 00 000 111 1
표 2의 제 1 마스크 비트들은 NVM(140)에서 전송될 수 있고 표 1의 제 1 마스크 비트들과 동일하다. 표 2의 복원된 제 1 마스크 비트들은 제 6 버퍼(132_2)에 저장될 수 있다. 표 2의 복원된 제 1 마스크 비트들은 언마스킹부(132)는 짝수 패리티에 기초하여 생성될 수 있다. 제 2 비트들에 에러가 없으면, 표 2와 같이, 비트 연산 결과의 비트들은 '0' 또는 '1'로 서로 동일할 수 있다. 즉, 언마스킹부(132)의 비트 연산 결과의 비트들이 서로 동일하도록, 키 등록 과정에서, 비트 인코딩부(122)는 제 1 마스크 비트들을 생성할 수 있다. 이하, 제 2 비트들의 에러가 정정되는 예시가 구체적으로 설명될 것이다.도 6은 PUF 셀 어레이(110)의 출력에 에러가 없는 경우에 관한 것이다. 키 등록 과정 및 키 생성 과정에서, PUF 셀 어레이(110)는 동일한 제 2 비트들을 출력할 수 있다. 도 3의 제 1 버퍼(122_1)에 저장된 '101'과 동일하게, 도 6의 제 5 버퍼(132_1)에도 '101'이 저장될 수 있다.
도 7은 PUF 셀 어레이(110)의 출력에 에러가 있는 경우에 관한 것이다. 키 등록 과정 및 키 생성 과정에서, PUF 셀 어레이(110)는 상이한 제 2 비트들을 출력할 수 있다. 도 3의 제 1 버퍼(122_1)에 저장된 '101'과 다르게, 제 2 비트들 중 한 비트가 뒤집히고(flip) 도 7의 제 5 버퍼(132_1)에 '001'이 저장될 수 있다.
제 2 비트들과 달리 제 1 마스크 비트들은 NVM(140)으로부터 전송될 수 있다. 따라서, 제 1 마스크 비트들을 저장하는 도 6의 제 6 버퍼(132_2) 및 도 7의 제 6 버퍼(132_2) 모두에는 '101'이 동일하게 저장될 수 있다.
도 6을 참조하면, 언마스킹부(132)는 '101' 및 '101'에 대해 XOR 연산을 수행하고 '000' 제 3 비트들을 생성할 수 있다. 비트 디코딩부(133)는 '000' 제 3 비트들의 '0' 비트의 수 및 '1' 비트의 수를 확인할 수 있다. 도 6의 제 7 버퍼(133_1)에는 '0' 비트들만 있으므로 비트 디코딩부(133)는 '0' 키 비트를 출력할 수 있다.
도 7을 참조하면, 언마스킹부(132)는 '001' 및 '101'에 대해 XOR 연산을 수행하고 '100' 제 3 비트들을 생성할 수 있다. 비트 디코딩부(133)는 '100' 제 3 비트들의 '0' 비트의 수 및 '1' 비트의 수를 확인할 수 있다. 도 7의 제 7 버퍼(133_1)에는 한 개의 '1' 비트들 그리고 두 개의 '0' 비트들이 있으므로 비트 디코딩부(133)는 '0' 키 비트를 출력할 수 있다. 즉, 제 2 비트들의 에러가 다수결 연산에 의해 정정될 수 있다. 또한, 도 7에서 제 5 버퍼(132_1)에 저장된 제 2 비트들 중 MSB에 에러가 있는 것으로 도시되었으나, MSB 이외의 다른 비트들에서 에러가 발생되어도, 에러는 다수결 연산에 의해 정정될 수 있다.
실시 예에 있어서, 언마스킹부(132)는 도 6 및 도 7에서 도시된 제 5 및 제 6 버퍼들(132_1, 132_2) 이외에도 제 5 버퍼(132_1)에 저장된 제 2 비트들을 언마스킹하거나, 삭제된 제 1 마스크 비트를 복원하거나, 또는 제 2 비트들 및 제 1 마스크 비트들에 대해 비트 연산을 수행함으로써 발생하는 중간값, 최종값 등을 저장하기 위한 버퍼를 더 포함할 수 있다. 또한, 예시적으로 제 5 및 제 6 버퍼들(132_1, 132_2)이 각각 하나씩 도 6 및 도 7에서 도시되었으나, 본 발명의 범위는 이에 제한되지 않는다.
비트 디코딩부(133)는 도 6 및 도 7에서 도시된 제 7 버퍼(133_1) 이외에도 비트 에러를 정정함으로써 발생하는 중간값, 최종값 등을 저장하기 위한 버퍼를 더 포함할 수 있다. 또한, 제 7 버퍼(133_1)가 하나로 도 6 및 도 7에서 도시되었으나, 본 발명의 범위는 이에 제한되지 않는다.
도 8은 도 5의 블록 디코딩부를 좀 더 상세하게 보여주는 블록도이다. 도 8은 도 5 내지 도 7을 참조하여 설명될 것이다. 블록 디코딩부(134)는 제 8 및 제 9 버퍼들(134_1, 134_2) 그리고 블록 디코더(134_3)를 포함할 수 있다.
제 8 버퍼(134_1)는 비트 디코딩부(133)로부터 제 4 데이터의 제 4 비트들(키 비트들)을 수신하고 저장할 수 있다. 제 8 버퍼(134_1)에 저장된 제 4 비트들은 비트 디코딩부(133)에 의해 업데이트될 수 있다. 제 8 버퍼(134_1)는 블록 디코딩 단위(즉, 블록 에러 정정 연산의 단위일 수 있고 블록 인코딩 단위와 동일할 수 있음)에 따른 비트들을 저장할 수 있다. 제 8 버퍼(134_1)는 제 4 데이터를 구성하는 모든 제 4 비트들을 저장하는 대신에 블록 디코딩 단위만큼의 제 4 비트들을 저장할 수 있다. 또한, 제 8 버퍼(134_1)는 블록 디코딩 단위만큼의 제 4 비트들에 더해, 제 2 마스크 데이터를 구성하는 제 2 마스크 비트들을 언마스킹하기 위해 비트 디코딩부(133)로부터 제 4 비트들을 더 수신하고 더 저장할 수 있다.
제 9 버퍼(134_2)는 NVM(140)으로부터 제 2 마스크 비트들을 수신하고 저장할 수 있다. 제 9 버퍼(134_2)는 제 2 마스크 데이터를 구성하는 모든 제 2 마스크 비트들을 저장하는 대신에 블록 에러 정정 연산에 필요한 헬퍼 데이터를 언마스킹하기 위한 제 2 마스크 비트들을 저장할 수 있다.
블록 디코딩부(134)는 제 8 버퍼(134_1)에 저장된 제 4 비트들을 이용하여 제 9 버퍼(134_2)에 저장된 제 2 마스크 비트들을 언마스킹할 수 있다. 블록 디코딩부(134)는 제 8 버퍼(134_1)에 저장된 제 4 비트들 및 제 9 버퍼(134_2)에 저장된 제 2 마스크 비트들에 대해 비트 연산(예를 들어, XOR 연산 등)을 수행하고 헬퍼 데이터를 구성하는 헬퍼 비트들을 생성할 수 있다.
블록 디코더(134_3)는 에러 정정 코드에 따라 제 4 비트들로 구성되는 블록 데이터 및 헬퍼 비트들로 구성되는 헬퍼 데이터를 디코드하고 에러를 정정할 수 있다. 블록 디코더(134_3)는 비트 에러가 정정된 데이터의 모든 비트들을 한꺼번에 디코드하지 않고, 모든 제 4 비트들을 여러 블록들로 나누고, 블록 단위로 에러 정정 연산을 수행할 수 있다. 헬퍼 데이터의 모든 헬퍼 비트들도 나눠질 수 있다. 도 8을 참조하면, 블록 디코더(134_3)는 제 8 버퍼(134_1)로부터 제공된 블록 단위의 제 4 비트들 및 비트 연산 결과인 헬퍼 비트들을 디코드하고 블록 내 에러를 정정할 수 있다.
실시 예에 있어서, 도 8에서 도시된 제 8 및 제 9 버퍼들(134_1, 134_2) 이외에도 블록 디코딩부(134)는 제 8 버퍼(134_1)에 저장된 제 4 비트들을 디코드하거나 또는 제 4 비트들 및 제 2 마스크 비트들에 대해 비트 연산을 수행함으로써 발생하는 중간값, 최종값 등을 저장하기 위한 버퍼를 더 포함할 수 있다. 또한, 예시적으로 제 8 및 제 9 버퍼들(134_1, 134_2)이 각각 하나씩 도 8에서 도시되었으나 본 발명의 범위는 이에 제한되지 않는다.
실시 예에 있어서, 제 1 내지 제 9 버퍼들(122_1, 122_2, 123_1, 123_2, 132_1, 132_2, 133_1, 134_1, 134_2) 각각은 래치(latch), 레지스터(register), SRAM 등 중 적어도 어느 하나를 이용하여 구현될 수 있다. 또한, 제 1 내지 제 9 버퍼들(122_1, 122_2, 123_1, 123_2, 132_1, 132_2, 133_1, 134_1, 134_2) 각각은 전술한 클럭 및 알림 신호(ACK)에 기초하여 비트들을 수신하거나 전송할 수 있다. 예를 들어, 제 1 내지 제 9 버퍼들(122_1, 122_2, 123_1, 123_2, 132_1, 132_2, 133_1, 134_1, 134_2) 각각은 수신되는 비트들을 순차적으로 저장하는 쉬프트(shift) 레지스터를 이용하여 구현될 수 있다.
도 9는 도 1의 키 생성부에서 데이터가 처리되는 과정을 예시적으로 보여주는 도면이다. 도 9는 도 5 내지 도 8을 참조하여 설명될 것이다.
추출부(121), 언마스킹부(132), 비트 디코딩부(133), 및 블록 디코딩부(134)는 직렬로 연결될 수 있다. 도 9를 참조하면, 추출부(121)는 제 2 비트들을 언마스킹부(132)로 전송할 수 있다. 언마스킹부(132)는 언마스킹된 제 3 비트들을 비트 디코딩부(133)로 전송할 수 있다. 비트 디코딩부(133)는 비트 디코딩 단위만큼의 제 3 비트들을 모으고 디코딩할 수 있다. 비트 디코딩 단위는 비트 에러 정정 코드(예를 들면, 반복 코드)의 디코딩 단위로 지칭될 수 있다. 비트 디코딩부(133)는 제 4 비트들을 블록 디코딩부(134)로 전송할 수 있다. 제 4 비트는 적어도 3개의 제 3 비트들이 압축되어 생성될 수 있다. 블록 디코딩부(134)는 블록 디코딩 단위만큼의 제 4 비트들을 모으고 디코딩할 수 있다. 블록 디코딩 단위는 블록 에러 정정 코드(예를 들면, BCH 코드)의 디코딩 단위로 지칭될 수 있다.
실시 예에 있어서, 추출부(121), 언마스킹부(132), 비트 디코딩부(133), 및 블록 디코딩부(134)는 클럭을 기초로 하여 동작할 수 있다. 제 2 비트들, 제 3 비트들, 및 제 4 비트들은 클럭에 동기되어 전송될 수 있다. 예를 들어, 추출부(121) 및 언마스킹부(132)는 클럭에 기초하여 제 2 비트들의 전송 및 수신에 대한 알림 신호들을 서로 교환할 수 있다. 언마스킹부(132) 및 비트 디코딩부(133)는 클럭에 기초하여 제 3 비트들의 전송 및 수신에 대한 알림 신호들을 서로 교환할 수 있다. 비트 디코딩부(133) 및 블록 디코딩부(134)는 클럭에 기초하여 제 4 비트들의 전송 및 수신에 대한 알림 신호들을 서로 교환할 수 있다.
도 9를 참조하면, 추출부(121), 언마스킹부(132), 비트 디코딩부(133), 및 블록 디코딩부(134) 방향으로 비트들이 순차로 전송되고, 추출부(121), 언마스킹부(132), 비트 디코딩부(133), 및 블록 디코딩부(134) 각각은 비트를 수신하면서 수신된 비트를 처리할 수 있다. 즉, 추출부(121), 언마스킹부(132), 비트 디코딩부(133), 및 블록 디코딩부(134)는 동시에 동작할 수 있다. PUF 셀 어레이(110)가 제 1 비트들을 출력하는 동안 추출부(121)는 PUF 셀 어레이(110)에서 먼저 출력된 제 1 비트들을 처리할 수 있다. 추출부(121)가 제 2 비트들을 출력하는 동안 언마스킹부(132)는 추출부(121)에서 먼저 출력된 제 2 비트들을 처리할 수 있다. 언마스킹부(132)가 제 3 비트들을 출력하는 동안 비트 디코딩부(133)는 언마스킹부(132)에서 먼저 출력된 제 3 비트들을 처리할 수 있다. 비트 디코딩부(133)가 제 4 비트들을 출력하는 동안 블록 디코딩부(134)는 비트 디코딩부(133)에서 먼저 출력된 제 4 비트들을 처리할 수 있다. 따라서, 키 생성에 소요되는 시간이 감소할 수 있다.
도 10은 본 발명의 실시 예에 따른 키 등록 과정을 예시적으로 보여주는 순서도이다. 도 10은 도 2를 참조하여 설명될 것이다.
S110 단계에서, PUF 셀 어레이(110)는 PUF 데이터(제 1 데이터)를 생성할 수 있다. PUF 데이터의 PUF 비트들은 한꺼번에 출력되지 않는다. 예를 들어, PUF 비트들은 서브 PUF 셀 어레이의 사이즈에 대응하는 16 비트 단위 또는 32 비트 단위로 반복적으로 출력될 수 있다.
S121 단계에서, 추출부(121)는 PUF 데이터 중 유효 데이터를 나타내는 마킹 데이터를 생성할 수 있다. 추출부(121)는 마킹 데이터를 NVM(140)으로 전송할 수 있다. 좀 더 구체적으로, 추출부(121)는 PUF 셀 어레이(110)로부터 제 1 데이터를 구성하는 제 1 비트들을 수신하면서, 제 1 비트들 중 유효한 제 2 비트들을 나타내는 마킹 비트들을 NVM(140)으로 전송할 수 있다. S121 단계에서, NVM(140)은 추출부(121)에서 출력되는 마킹 데이터를 저장할 수 있다. S122 단계에서, 추출부(121)는 유효 데이터(제 2 데이터)를 비트 인코딩부(122)로 전송할 수 있다. 실시 예에 있어서, S121 및 S122 단계들은 S110 단계의 PUF 데이터가 전송되면서 수행될 수 있다.
S131 단계에서, 비트 인코딩부(122)는 유효 데이터의 패리티를 확인할 수 있다. 비트 인코딩부(122)는 유효 데이터의 패리티에 따라 유효 데이터의 비트 연산에 사용되는 값을 생성할 수 있다. S132 단계에서, 비트 인코딩부(122)는 유효 데이터의 패리티에 따라 제 1 마스크 데이터를 생성하고 NVM(140)으로 전송할 수 있다. 좀 더 구체적으로, 비트 인코딩부(122)는 추출부(121)로부터 제 2 비트들을 수신하면서, 제 2 비트들의 패리티에 따라 제 2 비트들을 인코딩하여 제 1 마스크 비트들을 생성하고 제 1 마스크 비트들을 NVM(140)으로 전송할 수 있다. S132 단계에서, NVM(140)은 비트 인코딩부(122)에서 출력되는 제 1 마스크 데이터를 저장할 수 있다.
S133 단계에서, 비트 인코딩부(122)는 유효 데이터의 패리티(즉, 제 2 비트들의 패리티)에 따라 유효 데이터의 압축 데이터(제 3 데이터)를 생성할 수 있다. 비트 인코딩부(122)는 압축 데이터를 블록 인코딩부(123)로 전송할 수 있다. 실시 예에 있어서, S131, S132, 및 S133 단계들은 S110 단계의 PUF 데이터가 전송되면서 그리고 S121 및 S122 단계들의 유효 데이터가 전송되면서 수행될 수 있다.
S141 단계에서, 블록 인코딩부(123)는 압축 데이터를 인코딩하고 헬퍼 데이터를 생성할 수 있다. 블록 인코딩부(123)는 헬퍼 데이터를 제 2 마스크 데이터로 마스크할 수 있다. 좀 더 구체적으로, 블록 인코딩부(123)는 비트 인코딩부(122)로부터 제 2 비트들이 압축된 제 3 비트들을 수신하면서 제 3 비트들을 인코딩하여 헬퍼 비트들을 생성하고 제 3 비트들을 이용하여 헬퍼 비트들을 마스킹할 수 있다.
S142 단계에서, 블록 인코딩부(123)는 제 2 마스크 데이터를 NVM(140)으로 전송할 수 있다. S142 단계에서, NVM(140)은 블록 인코딩부(123)에서 출력되는 제 2 마스크 데이터를 저장할 수 있다. 실시 예에 있어서, S141 및 S142 단계들은 S110 단계의 PUF 데이터가 전송되면서, S121 및 S122 단계들의 유효 데이터가 전송되면서, 그리고 S131 내지 S131 단계들의 제 1 마스크 데이터가 전송되면서 수행될 수 있다.
도 11은 본 발명의 실시 예에 따른 키 생성 과정을 예시적으로 보여주는 순서도이다. 도 11은 도 5를 참조하여 설명될 것이다.
S210 단계에서, PUF 셀 어레이(110)는 PUF 데이터(제 1 데이터)를 생성할 수 있다. S210 단계는 S110 단계와 유사할 수 있다. S210 단계에서 생성된 PUF 데이터는 S110 단계에서 생성된 PUF 데이터와 동일할 수도 있고 상이할 수도 있다.
S220 단계에서, NVM(140)은 S121 단계에서 저장된 마킹 데이터를 추출부(121)로 전송할 수 있다. S220 단계에서, 추출부(121)는 NVM(140)으로부터 마킹 데이터를 수신할 수 있다. 추출부(121)는 마킹 데이터를 이용하여 PUF 데이터 중 유효 데이터(제 2 데이터)를 추출할 수 있다. 추출부(121)는 유효 데이터를 언마스킹부(132)로 전송할 수 있다. 좀 더 구체적으로, 추출부(121)는 PUF 셀 어레이(11)로부터 제 1 데이터를 구성하는 제 1 비트들을 수신하고 NVM(140)으로부터 마킹 데이터를 구성하는 마킹 비트들을 수신하면서, 제 1 비트들 중 유요한 제 2 비트들을 추출할 수 있다. 실시 예에 있어서, S220 단계는 S110 단계의 PUF 데이터가 전송되면서 수행될 수 있다.
S230 단계에서, NVM(140)은 S132 단계에서 저장된 제 1 마스크 데이터를 언마스킹부(132)로 전송할 수 있다. 언마스킹부(132)는 NVM(140)으로부터 제 1 마스크 데이터를 수신할 수 있다. 언마스킹부(132)는 제 1 마스크 데이터를 이용하여 유효 데이터를 언마스킹할 수 있다. 언마스킹부(132)는 언마스킹된 데이터(제 3 데이터)를 비트 디코딩부(133)로 전송할 수 있다. 좀 더 구체적으로, 언마스킹부(132)는 추출부(121)로부터 제 2 비트들을 수신하고 NVM(140)으로부터 제 1 마스크 데이터를 구성하는 제 1 마스크 비트들을 수신하면서, 제 1 마스크 비트들을 이용하여 제 2 비트들을 언마스킹할 수 있다. 실시 예에 있어서, S230 단계는 S210 단계의 PUF 데이터가 전송되면서 그리고 S220 단계의 유효 데이터가 전송되면서 수행될 수 있다.
S240 단계에서, 비트 디코딩부(133)는 언마스킹된 데이터에 대해 비트 에러 정정 연산을 수행할 수 있다. 즉, 유효 데이터에 대해 비트 에러 정정 연산이 수행된다. 예를 들어, 비트 에러 정정 연산은 다수결 연산일 수 있다. 비트 디코딩부(133)는 다수결 연산의 수행 결과인 키 비트들(제 4 데이터)을 블록 디코딩부(134)로 전송할 수 있다. 좀 더 구체적으로, 비트 디코딩부(133)는 언마스킹부(132)로부터 제 3 데이터를 구성하는 제 3 비트들을 수신하면서, 제 3 비트들을 제 4 비트들로 압축할 수 있다. 실시 예에 있어서, S240 단계는 S210 단계의 PUF 데이터가 전송되면서, S220 단계의 유효 데이터가 전송되면서, 그리고 S230 단계의 언마스킹된 데이터가 전송되면서 수행될 수 있다.
S251 단계에서, NVM(140)은 S142 단계에서 저장된 제 2 마스크 데이터를 블록 디코딩부(134)로 전송할 수 있다. 블록 디코딩부(134)는 NVM(140)으로부터 제 2 마스크 데이터를 수신할 수 있다. 블록 디코딩부(134)는 키 비트들을 이용하여 제 2 마스크 데이터를 언마스킹할 수 있고 헬퍼 데이터를 생성할 수 있다. S252 단계에서, 블록 디코딩부(134)는 헬퍼 데이터를 이용하여 블록 디코딩 단위의 키 비트들을 디코드하고 블록 디코딩 단위로 에러를 정정할 수 있다. S253 단계에서, 블록 디코딩부(134)는 최종 키(혹은 보안 키)를 생성할 수 있다. 좀 더 구체적으로, 블록 디코딩부(134)는 비트 디코딩부(133)로부터 제 4 비트들을 수신하고 NVM(140)으로부터 제 2 마스크 비트들을 수신하면서, 제 4 비트들 및 제 2 마스크 비트들을 디코딩하여 키를 생성할 수 있다. 실시 예에 있어서, S251 내지 S253 단계들은 S210 단계의 PUF 데이터가 전송되면서, S220 단계의 유효 데이터가 전송되면서, S230 단계의 언마스킹된 데이터가 전송되면서, 그리고 S240 단계의 키 비트들이 전송되면서 수행될 수 있다.
본 발명의 실시 예에 따른 반도체 장치에 의하면, S210 내지 S253 단계들이 동시에 수행될 수 있다. 따라서, PUF 셀들의 개수, PUF 데이터의 크기, 또는 보안 키의 크기가 증가하여도 전술한 버퍼들(122_1, 122_2, 122_3, 123_1, 123_2, 132_1, 132_2, 133_1, 134_1, 134_2)의 사이즈는 일정하게 유지될 수 있다. 또한, PUF 데이터를 처리하여 키를 생성하는 시간이 감소할 수 있다.
도 12는 본 발명의 실시 예에 따른 반도체 장치가 적용된 전자 시스템을 예시적으로 보여주는 블록도이다. 전자 시스템(1000)는 스마트 카드(1100) 및 호스트(1200)를 포함할 수 있다.
스마트 카드(1100)는 하나 이상의 집적 회로를 포함하는 카드이다. 스마트 카드(11000는 IC 카드 또는 칩 카드로 지칭될 수 있다. 스마트 카드(1100)는 보안을 위해 본 발명의 실시 예에 따른 PUF 장치(1110)를 포함할 수 있다. PUF 장치(1110)는 도 1 내지 도 11에서 전술한 반도체 장치(100)일 수 있다. 스마트 카드(1100)는 PUF 장치(1110)에서 출력된 보안 키를 이용하여 호스트(1200)와 인증 절차를 수행할 수 있다. 도시되진 않았으나, 스마트 카드(1100)는 데이터를 저장하는 메모리, 데이터를 처리하는 프로세서 등을 더 포함할 수 있다.
실시 예에 있어서, PUF 장치(1110)는 반도체 패키지들을 이용하여 패키징(packaging)될 수 있다. 집적 회로는 PoP(Package on Package), BGAs(Ball Grid Arrays), CSPs(Chip Scale Packages), PLCC(Plastic Leaded Chip Carrier), PDIP(Plastic Dual In-line Package), Die in Waffle Pack, Die in Wafer Form, COB(Chip On Board), CERDIP(Ceramic Dual In-line Package), MQFP(Metric Quad Flat Pack), TQFP(Thin Quad Flat Pack), SOIC(Small Outline Integrated Circuit), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline Package), SIP(System In Package), MCP(Multi Chip Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-Level Processed Stack Package) 등의 패키지를 이용하여 스마트 카드(1100)에 실장될 수 있다.
호스트(1200)는 PUF 장치(1110)에서 출력된 보안 키에 기초하여 스마트 카드(1100)와 인증 절차를 수행할 수 있다. 인증 후, 호스트(1200)는 스마트 카드(1100)에 데이터를 저장하거나 스마트 카드(1100)로부터 데이터를 읽을 수 있다. 호스트(1200)는 하나 이상의 프로세서들을 포함하는 컴퓨팅 장치, 어플리케이션 프로세서(application processor; AP)를 포함하는 휴대용 전자 장치, 또는 서버일 수 있다.
도 13은 도 12의 스마트 카드가 적용된 전자 장치를 예시적으로 보여주는 블록도이다. 전자 장치(2000)는 MIPI(Mobile Industry Processor Interface) 연합(Alliance)에 의해 제안된 인터페이스들을 이용하거나 지원할 수 있는 데이터 처리 장치일 수 있다. 전자 장치(2000)는 휴대용 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Media Player), 스마트폰, 또는 웨어러블(Wearable) 장치일 수 있다.
전자 장치(2000)는 어플리케이션 프로세서(2100), 디스플레이(2200), 및 이미지 센서(2300)를 포함할 수 있다. 어플리케이션 프로세서(2100)는 DigRF 마스터(2110), DSI(Display Serial Interface) 호스트(2120), CSI(Camera Serial Interface) 호스트(2130), 및 물리 계층(2140)을 포함할 수 있다.
DSI 호스트(2120)는 DSI에 따라 디스플레이(2200)의 DSI 장치(2210)와 통신할 수 있다. 예를 들어, DSI 호스트(2120)에는 광 시리얼라이저(SER)가 구현될 수 있고, DSI 장치(2210)에는 광 디시리얼라이저(DES)가 구현될 수 있다.
CSI 호스트(2130)는 CSI에 따라 이미지 센서(2300)의 CSI 장치(2310)와 통신할 수 있다. 예를 들어, CSI 호스트(2130)에는 광 디시리얼라이저(DES)가 구현될 수 있고, CSI 장치(2310)에는 광 시리얼라이저(SER)가 구현될 수 있다.
전자 장치(2000)는 어플리케이션 프로세서(2100)와 통신하는 RF(Radio Frequency) 칩(2400)을 더 포함할 수 있다. RF 칩(2400)은 물리 계층(2410), DigRF 슬레이브(2420), 및 안테나(2430)를 포함할 수 있다. 예로서, RF 칩(2400)의 물리 계층(2410)과 어플리케이션 프로세서(2100)의 물리 계층(2140)은 MIPI 연합에 의해 제안된 DigRF 인터페이스에 의해 서로 데이터를 교환할 수 있다.
전자 장치(2000)는 카드 스토리지(2500)를 더 포함할 수 있다. 카드 스토리지(2500)는 도 12의 스마트 카드(1100)일 수 있다. 인증 후, 보안이 유지된 상태에서, 스마트 카드(1100)는 어플리케이션 프로세서(2100)와 데이터를 교환할 수 있다.
전자 장치(2000)는 WiMax(2610), WLAN(Wireless Local Area Network; 2620), UWB(Ultra Wideband; 2630) 등을 통해 외부 시스템과 통신할 수 있다. 전자 장치(2000)는 위치 정보를 처리하기 위한 GPS(Global Positioning System) 장치(2640)를 더 포함할 수 있다. 전자 장치(2000)는 주변 장치들과의 연결을 관리하기 위한 브릿지(Bridge) 칩(2650)을 더 포함할 수 있다.
도 14는 본 발명의 실시 예에 따른 반도체 장치가 적용된 컴퓨팅 장치를 예시적으로 보여주는 블록도이다. 컴퓨팅 장치(3000)는 프로세서(3100), 워킹 메모리(3200), PUF 장치(3300), 암호화 프로세서(3400), NVM 인터페이스(3500), NVM(3600), 및 유저 인터페이스(3700)를 포함할 수 있다.
프로세서(3100)는 컴퓨팅 장치(3000)의 전반적인 동작을 제어할 수 있다. 프로세서(3100)는 중앙 처리 유닛으로서 다양한 종류의 연산들을 수행할 수 있다. 예를 들어, 프로세서(3100)는 적어도 하나 이상의 프로세서 코어들을 포함할 수 있다.
워킹 메모리(3200)는 프로세서(3100)와 데이터를 교환할 수 있다. 워킹 메모리(3200)는 컴퓨팅 장치(3000)의 동작에 이용되는 데이터를 임시로 저장할 수 있다. 예를 들어, 워킹 메모리(3200)는 DRAM(dynamic random access memory), SRAM 등과 같은 고속의 메모리를 포함할 수 있다.
PUF 장치(3300)는 도 1 내지 도 11에서 전술한 반도체 장치(100)일 수 있다. PUF 장치(3300)는 보안에 필요한 키를 생성할 수 있다. PUF 장치(3300)는 하드웨어, 소프트웨어, 또는 펌웨어로 구현될 수 있다. 암호화 프로세서(3400)는 PUF 장치(3300)에서 출력된 키를 이용하여 암호화 및 복호화 연산을 수행할 수 있다.
NVM 인터페이스(3500)는 프로세서(3100), PUF 장치(3300), 또는 암호화 프로세서(3400)의 제어에 따라 NVM(3600)과 데이터를 교환할 수 있다. NVM(3600)은 전원 공급과 관계없이 보존이 필요한 데이터를 저장할 수 있다. 실시 예에 있어서, NVM(3600)에는 도 1에서 전술한 마킹 데이터, 제 1 마스크 데이터, 및 제 2 마스크 데이터가 저장될 수 있고, PUF 장치(3300)는 내부에 NVM을 포함하지 않을 수도 있다.
유저 인터페이스(3700)는 프로세서(3100)의 제어에 따라 사용자와 컴퓨팅 장치(3000) 사이의 통신을 중계할 수 있다. 실시 예로서, 유저 인터페이스(3700)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서 등의 입력 인터페이스를 포함할 수 있다. 나아가, 유저 인터페이스(3700)는 LCD(Liquid Crystal Display) 장치, LED(Light Emitting Diode) 표시 장치, OLED(Organic LED) 표시 장치, AMOLED(Active Matrix OLED) 표시 장치, 스피커, 모터 등의 출력 인터페이스를 포함할 수 있다.
버스(3800)는 컴퓨팅 장치(3000)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 컴퓨팅 장치(3000)의 구성 요소들은 버스 포맷에 따라 서로 데이터를 주고 받을 수 있다. 실시 예로서, 버스 포맷은 USB(universal serial bus), SCSI(small computer system interface), PCIe(peripheral component interconnect express), ATA(advanced technology attachment), PATA(parallel ATA), SATA(serial ATA), SAS(serial attached SCSI), IDE(integrated drive electronics) 등을 포함할 수 있다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.
100: 반도체 장치;
110: PUF 셀 어레이;
120: 키 등록부;
130: 키 생성부;
140: NVM;

Claims (20)

  1. 제 1 비트들을 출력하는 PUF(physically unclonable function) 셀들로 구성되는 PUF 셀 어레이;
    상기 제 1 비트들이 유효한지 여부를 나타내는 마킹 비트들(marking bits), 상기 제 1 비트들 중 유효한 제 2 비트들의 패리티에 따라 상기 제 2 비트들이 마스킹(masking)된 제 1 마스크 비트들, 및 상기 제 2 비트들에 대한 헬퍼 비트들이 마스킹된 제 2 마스크 비트들을 저장하는 불휘발성 메모리;
    상기 마킹 비트들을 이용하여 상기 제 1 비트들로부터 상기 제 2 비트들을 추출하는 추출부;
    상기 제 2 비트들을 수신하면서 상기 제 1 마스크 비트들을 이용하여 상기 제 2 비트들을 언마스킹(unmasking)하는 언마스킹부;
    상기 언마스킹부에 의해 언마스킹된 제 3 비트들을 수신하면서 상기 제 3 비트들을 제 4 비트들로 압축하는 비트 디코딩부; 및
    상기 제 4 비트들 및 상기 제 2 마스크 비트들을 디코딩(decoding)하여 보안 키를 생성하는 블록 디코딩부를 포함하되,
    상기 추출부, 상기 언마스킹부, 상기 비트 디코딩부, 및 상기 블록 디코딩부는 직렬로 연결되고 동시에 동작하는 반도체 장치.
  2. 제 1 항에 있어서,
    상기 언마스킹부는 상기 제 2 비트들 및 상기 제 1 마스크 비트들에 대한 비트 연산을 수행하는 반도체 장치.
  3. 제 2 항에 있어서,
    상기 언마스킹부는:
    상기 제 2 비트들 중 적어도 하나의 비트를 저장하는 제 1 버퍼; 및
    상기 제 1 마스크 비트들 중 적어도 하나의 비트를 저장하는 제 2 버퍼를 포함하고, 그리고
    상기 언마스킹부는 상기 제 1 및 제 2 버퍼들에 저장된 비트들에 대해 상기 비트 연산을 수행하는 반도체 장치.
  4. 제 2 항에 있어서,
    상기 비트 연산은 XOR(exclusive OR) 연산인 반도체 장치.
  5. 제 1 항에 있어서,
    상기 비트 디코딩부는 상기 제 3 비트들에 대해 다수결 연산을 수행하여 상기 제 2 비트들의 에러를 정정하고 그리고 상기 블록 디코딩부는 블록 에러 정정 코드에 따라 상기 제 4 비트들 및 상기 제 2 마스크 비트들을 디코딩하여 상기 제 2 비트들의 상기 에러를 정정하는 반도체 장치.
  6. 제 5 항에 있어서,
    상기 비트 디코딩부는 상기 제 3 비트들 중 상기 다수결 연산의 디코딩 단위만큼의 비트들을 저장하는 제 3 버퍼를 포함하고 그리고 상기 제 3 버퍼에 저장된 상기 비트들에 대해 상기 다수결 연산을 수행하는 반도체 장치.
  7. 제 5 항에 있어서,
    상기 블록 디코딩부는 상기 제 4 비트들 중 상기 블록 에러 정정 코드의 디코딩 단위만큼의 비트들을 저장하는 제 4 버퍼를 더 포함하고 그리고 상기 제 4 버퍼에 저장된 상기 비트들을 디코드하는 반도체 장치.
  8. 제 7 항에 있어서,
    상기 블록 디코딩부는 상기 제 4 비트들 중 상기 제 2 마스크 비트들에 대응하는 비트들과 상기 제 2 마스크 비트들에 대한 비트 연산을 수행하여 상기 헬퍼 비트들을 생성하고 그리고 상기 헬퍼 비트들을 이용하여 상기 제 2 비트들의 상기 에러를 정정하는 반도체 장치.
  9. 제 5 항에 있어서,
    상기 블록 에러 정정 코드는 BCH 코드인 반도체 장치.
  10. 제 1 항에 있어서,
    상기 제 2 비트들 및 상기 제 3 비트들은 클럭(clock)에 동기되어 전송되는 반도체 장치.
  11. 직렬로 연결된 PUF(physically unclonable function) 셀 어레이, 추출부, 언마스킹부, 비트 디코딩부, 및 블록 디코딩부를 포함하는 반도체 장치의 보안 키 생성 방법에 있어서:
    상기 추출부에 의해, 상기 PUF 셀 어레이로부터 제 1 비트들을 수신하고 불휘발성 메모리로부터 상기 제 1 비트들이 유효한지 여부를 나타내는 마킹 비트들을 수신하면서, 상기 제 1 비트들 중 유효한 제 2 비트들을 추출하는 단계;
    상기 언마스킹부에 의해, 상기 추출부로부터 상기 제 2 비트들을 수신하고 상기 불휘발성 메모리로부터 제 1 마스크 비트들을 수신하면서, 상기 제 1 마스크 비트들을 이용하여 상기 제 2 비트들을 언마스킹(unmasking)하는 단계;
    상기 비트 디코딩부에 의해, 상기 언마스킹부로부터 언마스킹된 제 3 비트들을 수신하면서, 상기 제 3 비트들을 제 4 비트들로 압축하는 단계; 그리고
    상기 블록 디코딩부에 의해, 상기 비트 디코딩부로부터 상기 제 4 비트들을 수신하고 상기 불휘발성 메모리로부터 제 2 마스크 비트들을 수신하면서, 상기 제 4 비트들 및 상기 제 2 마스크 비트들을 디코딩하여 보안 키를 생성하는 단계를 포함하는 보안 키 생성 방법.
  12. 제 11 항에 있어서,
    상기 제 2 비트들을 추출하는 단계는:
    상기 마킹 비트들의 논리 값들에 따라 상기 제 1 비트들이 유효한지 여부를 판별하는 단계를 포함하는 보안 키 생성 방법.
  13. 제 11 항에 있어서,
    상기 제 2 비트들을 언마스킹하는 단계는:
    상기 제 2 비트들 및 상기 제 1 마스크 비트들에 대한 비트 연산을 수행하는 단계를 포함하는 보안 키 생성 방법.
  14. 제 11 항에 있어서,
    상기 제 3 비트들을 상기 제 4 비트들로 압축하는 단계는:
    상기 제 3 비트들에 대해 다수결 연산을 수행하는 단계를 포함하는 보안 키 생성 방법.
  15. 제 11 항에 있어서,
    상기 보안 키를 생성하는 단계는:
    상기 제 4 비트들 중 상기 제 2 마스크 비트들에 대응하는 비트들과 상기 제 2 마스크 비트들에 대한 비트 연산을 수행하여 헬퍼 비트들을 생성하는 단계; 및
    블록 에러 정정 코드에 따라 상기 헬퍼 비트들을 이용하여 상기 제 4 비트들을 디코딩하는 단계를 포함하는 보안 키 생성 방법.
  16. 직렬로 연결된 PUF(physically unclonable function) 셀 어레이, 추출부, 비트 인코딩부, 및 블록 인코딩부를 포함하는 반도체 장치의 보안 키 등록 방법에 있어서:
    상기 추출부에 의해, 상기 PUF 셀 어레이로부터 제 1 비트들을 수신하면서, 상기 제 1 비트들 중 유효한 제 2 비트들을 나타내는 마킹 비트들을 불휘발성 메모리로 전송하는 단계;
    상기 비트 인코딩부에 의해, 상기 추출부로부터 상기 제 2 비트들을 수신하면서, 상기 제 2 비트들의 패리티(parity)에 따라 상기 제 2 비트들을 인코딩(encoding)하여 제 1 마스크 비트들을 생성하고 그리고 상기 제 1 마스크 비트들을 상기 불휘발성 메모리로 전송하는 단계; 그리고
    상기 블록 인코딩부에 의해, 상기 비트 인코딩부로부터 상기 제 2 비트들이 압축된 제 3 비트들을 수신하면서, 상기 제 3 비트들을 인코딩하여 헬퍼 비트들을 생성하고, 상기 제 3 비트들을 이용하여 상기 헬퍼 비트들을 마스킹(masking)하여 제 2 마스크 비트들을 생성하고, 그리고 상기 제 2 마스크 비트들을 상기 불휘발성 메모리로 전송하는 단계를 포함하는 보안 키 등록 방법.
  17. 제 16 항에 있어서,
    상기 제 1 마스크 비트들을 상기 불휘발성 메모리로 전송하는 단계는:
    상기 제 2 비트들의 상기 패리티에 따라 상기 제 2 비트들에 대한 비트 연산을 수행하는 단계를 포함하는 보안 키 등록 방법.
  18. 제 17 항에 있어서,
    상기 제 1 마스크 비트들을 상기 불휘발성 메모리로 전송하는 단계는:
    상기 제 2 비트들의 상기 패리티에 따라 상기 제 2 비트들을 상기 제 3 비트들로 압축하는 단계를 더 포함하는 보안 키 등록 방법.
  19. 제 16 항에 있어서,
    상기 제 2 마스크 비트들을 상기 불휘발성 메모리로 전송하는 단계는:
    블록 에러 정정 코드에 따라 상기 제 3 비트들을 인코딩하여 헬퍼 비트들을 생성하는 단계를 포함하는 보안 키 등록 방법.
  20. 제 19 항에 있어서,
    상기 제 2 마스크 비트들을 상기 불휘발성 메모리로 전송하는 단계는:
    상기 헬퍼 비트들과 상기 제 3 비트들에 대한 비트 연산을 수행하여 상기 헬퍼 비트들을 마스킹하는 단계를 더 포함하는 보안 키 등록 방법.
KR1020180057964A 2017-10-13 2018-05-21 보안 키를 생성하는 반도체 장치, 보안 키 생성 방법, 및 보안 키 등록 방법 KR102516190B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102018123103.2A DE102018123103A1 (de) 2017-10-13 2018-09-20 Halbleitervorrichtung, die Sicherheitsschlüssel erzeugt, Verfahren zum Erzeugen eines Sicherheitsschlüssels und Verfahren zum Registrieren des Sicherheitsschlüssels
US16/140,019 US10476681B2 (en) 2017-10-13 2018-09-24 Semiconductor device generating security key, method of generating security key, and method of enrolling security key
CN201811184280.0A CN109670346B (zh) 2017-10-13 2018-10-11 半导体装置、产生和登记安全密钥的方法、以及电子系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020170133540 2017-10-13
KR20170133540 2017-10-13

Publications (2)

Publication Number Publication Date
KR20190041898A KR20190041898A (ko) 2019-04-23
KR102516190B1 true KR102516190B1 (ko) 2023-03-31

Family

ID=66285473

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180057964A KR102516190B1 (ko) 2017-10-13 2018-05-21 보안 키를 생성하는 반도체 장치, 보안 키 생성 방법, 및 보안 키 등록 방법

Country Status (1)

Country Link
KR (1) KR102516190B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240289218A1 (en) * 2023-02-24 2024-08-29 Micron Technology, Inc. Touchup for memory device using embedded encoder/decoder

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102201642B1 (ko) * 2014-11-28 2021-01-13 삼성전자주식회사 Puf 회로 및 그것의 키 등록 방법
US9722774B2 (en) * 2015-04-29 2017-08-01 Samsung Electronics Co., Ltd. Non-leaky helper data: extracting unique cryptographic key from noisy F-PUF fingerprint
CN108780489B (zh) * 2015-11-03 2022-09-30 Ictk控股有限公司 识别密钥生成装置及方法

Also Published As

Publication number Publication date
KR20190041898A (ko) 2019-04-23

Similar Documents

Publication Publication Date Title
US10476681B2 (en) Semiconductor device generating security key, method of generating security key, and method of enrolling security key
US10802910B2 (en) System for identifying and correcting data errors
US10505728B2 (en) Physically unclonable function circuits and methods of performing key enrollment in physically unclonable function circuits
US10579490B2 (en) Fast geo recovery method for elastic cloud storage
CN106470102B (zh) 密码装置、具有密码装置的存储装置、其加密和解密方法
US11516026B2 (en) Security device generating key based on physically unclonable function and method of operating the same
US20150134970A1 (en) Method and apparatus for near field communication
US20120005488A1 (en) Encryption processor of memory card and method for writing and reading data using the same
CN107507648B (zh) 操作解码器以及操作包括该解码器的数据存储装置的方法
US11550659B2 (en) Controller and memory system
KR20060132514A (ko) 데이터의 무결성을 보호하는 장치 및 방법과 컴퓨터 판독가능한 기록 매체
US10860419B2 (en) Minimal aliasing bit-error correction code
US20140344643A1 (en) Hybrid memory protection method and apparatus
US11818248B2 (en) Encoder and decoder using physically unclonable functions
CN116383103A (zh) 使用耦合缓存线元数据的代数和确定性存储器认证和校正
KR102516190B1 (ko) 보안 키를 생성하는 반도체 장치, 보안 키 생성 방법, 및 보안 키 등록 방법
CN110679090B (zh) 减少延迟错误校正解码
US11689376B2 (en) Security device for generating masking data based on physically unclonable function and operating method thereof
US20200204363A1 (en) Quantum-resistant cryptoprocessing
US20160380651A1 (en) Multiple ecc checking mechanism with multi-bit hard and soft error correction capability
JP2024513159A (ja) チップ全体の安全な通信
JP2006060465A (ja) スポッティバイト誤り訂正・検出方法及び装置
JP2013201482A (ja) チェンサーチ回路、復号器、記憶装置およびチェンサーチ方法

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