KR20240017315A - 비휘발성 메모리의 보안 프로그래밍을 위한 메모리장치 및 방법 - Google Patents

비휘발성 메모리의 보안 프로그래밍을 위한 메모리장치 및 방법 Download PDF

Info

Publication number
KR20240017315A
KR20240017315A KR1020230084760A KR20230084760A KR20240017315A KR 20240017315 A KR20240017315 A KR 20240017315A KR 1020230084760 A KR1020230084760 A KR 1020230084760A KR 20230084760 A KR20230084760 A KR 20230084760A KR 20240017315 A KR20240017315 A KR 20240017315A
Authority
KR
South Korea
Prior art keywords
bits
nvm
programming
random
program
Prior art date
Application number
KR1020230084760A
Other languages
English (en)
Inventor
우리 칼루즈니
Original Assignee
윈본드 일렉트로닉스 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윈본드 일렉트로닉스 코포레이션 filed Critical 윈본드 일렉트로닉스 코포레이션
Publication of KR20240017315A publication Critical patent/KR20240017315A/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/75Protecting 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 inhibiting the analysis of circuitry or operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/22Safety or protection circuits preventing unauthorised or accidental access to memory cells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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/77Protecting 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 in smart cards
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Algebra (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)
  • Read Only Memory (AREA)

Abstract

메모리 장치는 비휘발성 메모리(non-volatile memory; NVM) 및 보안 프로그래밍 회로(secure-programming circuit; SPC)를 포함한다. SPC는 NVM의 특정한 위치에 특정한 데이터 워드를 프로그래밍하는 프로그램-NVM 인스트럭션을 수신하고, 및 프로그램-NVM 인스트럭션을 수신한 것에 응답하여, NVM에서 특정한 데이터 워드의 비트들을 랜덤 순서로 프로그래밍하도록 구성된다.

Description

비휘발성 메모리의 보안 프로그래밍을 위한 메모리 장치 및 방법{MEMORY DEVICE AND METHOD FOR SECURE PROGRAMMING OF NON-VOLATILE MEMORY}
본 개시(disclosure)는 비휘발성 메모리에 관한 것으로, 특히 플래시 메모리 장치의 보안 프로그래밍을 위한 방법 및 시스템에 관한 것이다.
플래시 메모리(Flash memory)들, 특히 임베디드 플래시 메모리(embedded flash memory)들은 기밀 데이터(confidential data)를 저장할 수 있으므로 도청(eavesdropping)(''해킹(hacking)')으로부터 보호해야 한다.
미국 등록특허 제11,188,237호는 보안을 강화하고 플래시 메모리 장치의 해킹을 방지하기 위한 여러 실시예들을 설명한다. 실시예들은 악의적인 행위자(malicious actor)들이 플래시 메모리 칩(flash memory chip)을 해킹하여 칩 내에 저장된 데이터를 획득하는 것을 방지한다. 실시예들은 결함 검출 회로(fault detection circuit)들, 어드레스 스크램블링(address scrambling), 더미 어레이(dummy array)들, 패스워드 보호, 개선된 제조 기술들 및 기타 메커니즘들의 사용을 포함한다.
본 개시에서 설명되는 본 개시의 실시예는 비휘발성 메모리(non-volatile memory; NVM) 및 보안 프로그래밍 회로(secure-programming circuit; SPC)를 포함하는 메모리 장치를 제공한다. SPC는 NVM의 특정한 위치(given location)에 특정한 데이터 워드(given data word)를 프로그래밍하는 프로그램-NVM 인스트럭션(program-NVM instruction)을 수신하고, 및 프로그램-NVM 인스트럭션을 수신한 것에 응답하여, NVM에서 특정한 데이터 워드의 비트(bit)들을 랜덤 순서(random order)로 프로그래밍하도록 구성된다.
일부 실시예들에서, 특정한 데이터 워드는, 2의 N 제곱(two to the power of N)의 비트들로 구성되고, SPC는, 2의 N 제곱 값들의 랜덤 순열(random permutation)을 생성하고, 랜덤 순열을 따르는 순서로 특정한 데이터 워드의 비트들을 프로그래밍하도록 구성된다. 실시예에서, SPC는, 가역 이진 행렬(invertible binary matrix)에 카운트(count)의 각 비트들을 포함하는 벡터(vector)를 곱하여 곱(product)을 생성하고 곱에 랜덤 비트들의 벡터를 더(add)하는 것에 의해 랜덤 순열을 생성하도록 구성된다. 예시적인 실시예에서, 가역 행렬(또는 가역 이진 행렬)은, 주대각선(main diagonal), 제1 삼각(first triangle) 및 제2 삼각(second triangle)을 포함하는 삼각 이진 행렬(triangular binary matrix)이고, 주대각선은, "1" 값들을 포함하고, 제1 삼각은, "0" 값들을 포함하고, 제2 삼각은, 랜덤 비트들을 포함한다.
본 개시의 실시예는 비휘발성 메모리(NVM)의 보안 프로그래밍(secure programming)을 위한 방법을 제공한다. 방법은, NVM의 특정한 위치에 특정한 데이터 워드를 프로그래밍하는 프로그램-NVM 인스트럭션을 수신하는 단계를 포함하고, 프로그램-NVM 인스트럭션을 수신한 것에 응답하여, NVM에서 특정한 데이터 워드의 비트들을 랜덤 순서로 프로그래밍된다.
도 1은 본 개시의 실시예에 따른 보안 임베디드 플래시 집적 회로를 개략적으로 도시한 블록도이다.
도 2는 본 개시의 실시예에 따른 보안 플래시 프로그래밍을 위한 방법을 개략적으로 예시하는 흐름도이다.
도 3은 본 개시의 실시예에 따른 순열 맵을 생성하기 위한 방법을 개략적으로 예시한 흐름도이다.
해커들은 때때로 예를 들어 전력 소모(power consumption) 또는 복사된 전자기 에너지(radiated electromagnetic energy)를 모니터링하는 사이드 채널 공격(side channel attack)을 통해 NVM(또는 그 일부)의 콘텐츠를 획득하기 위해 시도한다.
특히, 판독/기록 회로(read/write circuit)와 NVM 저장소(NVM storage) 간의 데이터 교환은 집적 회로의 외부 핀(external pin)들에서 직접 볼 수 없기 때문에, 플래시 메모리와 플래시 메모리를 판독하고 기록 위한 판독/기록 회로를 모두 포함하는 집적 회로들(예: 임베디드 플래시를 포함하는 프로세서)은 일반적으로 직접적인 방법들로 해킹하기 어렵다.
일부 플래시 장치들은 프로그래밍될 데이터 워드의 비트들이 NVM 저장소 어레이에 직렬로(serially) 기록되는 비트 직렬 프로그래밍 기술(bit-serial programming technique)을 사용한다. 소거(erasure) 후, 플래시 셀(flash cell)들은 일반적으로 특정한 로직 값(logic value)(예: 로직 1)에 있으므로 로직 1 값의 프로그래밍은 전력을 소모하지 않는 반면 로직 0의 프로그래밍은 상당한 양의 에너지를 소모한다. 현재 전력 공급 장치(power supply)를 모니터링하는 것에 의해, 해커는 로직 0 또는 로직 1이 프로그래밍된 시기를 검출할 수 있다. 비트가 특정한 순서(예: LSB로부터 MSB로 또는 그 반대로)로 기록되는 경우, 해커가 프로그래밍된 워드를 쉽게 재구성할 수 있다.
본 개시에 개시된 본 개시의 실시예들은 사이드 채널 공격들로부터 NVM을 보호하는 회로들 및 방법들을 제공한다. 실시예에서, IC는 랜덤 비트 순서로 플래시 어레이의 워드를 프로그래밍하도록 구성된 보안 프로그래밍 회로(SPC)를 포함하고; 따라서 사이드 공격은 프로그래밍 워드 비트들의 필요 없는 랜덤 셔플(useless random shuffle)을 재구성한다.
일부 실시예들에서, SPC는 프로그래밍될 워드를 저장하도록 구성된 프로그래밍 워드 레지스터(programming word register); 프로그래밍된 비트들을 카운트하도록 구성된 카운터(counter), 카운트의 랜덤 순열들을 생성하도록 구성된 스크램블러(scrambler); 카운트의 랜덤 순열들에 따라 프로그래밍 워드 레지스터의 비트를 선택하도록 구성된 멀티플렉서(multiplexer); 및 멀티플렉서에 의해 선택된 값들로 플래시 어레이의 비트들을 프로그래밍하도록 구성된 직렬 프로그래밍 회로(serial programming circuit)를 포함한다.
일부 실시예들에서, 스크램블러는 랜덤 비트들의 가역(예를 들어, 삼각) 행렬에 카운트의 이진 표현(binary representation)을 곱하고 랜덤 비트들의 벡터를 곱에 더하는 것에 의해 카운트의 랜덤 순열들을 생성한다.
도 1은 본 개시의 실시예에 따른 사이드 채널 공격(100)을 받는 보안 임베디드 플래시 집적 회로(integrated chip; IC)(102)를 개략적으로 도시하는 블록도이다.
IC(102)는 프로세서(104) 및 플래시 메모리 어레이(106)(일부 실시예들에서, 다른 타입들의 비휘발성 메모리가 사용될 수 있음)를 포함한다. 실시예에서, 플래시 메모리 어레이(106)는 복수의 뱅크(bank)들을 포함하고; 각 뱅크는 복수의 워드들을 포함하고, 각 워드는 복수의 개별 비휘발성 셀들을 포함한다. 일부 실시예들에서 각각의 셀은 1 비트를 저장한다.
프로세서(104)가 뱅크를 소하는 경우에, 뱅크의 모든 셀들은 알려진 로직 값으로 설정된다. 일반적으로 소거 값은 로직 1로 임의로 표시된다; 따라서 소거된 뱅크의 플래시 셀에 로직 1을 프로그래밍하기 위한 행위가 필요하지 않는다.
플래시 메모리 어레이(106)의 소거된 뱅크에 워드(예를 들어, 32비트)를 프로그래밍하기 위해, 프로세서(104)는 보안 프로그래밍 회로(SPC)(108)에 프로그래밍 인스트럭션을 전송한다. 프로그래밍 인스트럭션은 SPC가 프로그래밍 어드레스 레지스터(programming address register)(110)에 저장하는 어드레스 필드(address field) 및 SPC가 프로그래밍 데이터 레지스터(112)에 저장하는 데이터 필드를 포함할 수 있다. 멀티플렉서(114)는 프로그래밍 데이터 레지스터의 비트들을 순차적으로 선택하고 선택된 비트들을 프로그래밍 어드레스 레지스터(110)에 의해 지시(point)된 플래시 메모리 어레이 워드에서 한 번에 한 비트씩 프로그래밍하도록 구성된 비트 프로그래머 회로(bit programmer circuit)(116)로 전달한다. 위에서 설명한 것처럼 프로그래밍은 로직 0에 있는 데이터 레지스터 비트들을 프로그래밍하는 것에만 수행된다.
해커(118)는 비트 프로그래머 회로(116)가 플래시 메모리 어레이(106)에 프로그래밍하는 데이터를 판독하려고 시도한다. 해커는 사이드 채널 공격을 사용하고 오실로스코프(oscilloscope)(122)에 입력되는 전류 프로브(current probe)(120)를 사용하여 IC(102)가 소모하는 전력 공급 장치 전류(power supply current)(Idd)를 관찰한다. 언급한 바와 같이, IC(102)의 전류 소모(current consumption)는 로직 1이 프로그래밍되는 경우보다 프로그래밍 회로가 로직 0을 프로그래밍하는 경우에 훨씬 더 높다. 따라서, 오실로스코프 화면(oscilloscope screen)에 디스플레이된 파형(124)을 관찰하는 것에 의해, 해커는 로직 0이 언제 프로그래밍되었는지 알 수 있다.
그러나, 도 1에 도시된 예시적인 실시예에 따르면, 프로그래밍된 비트들의 순서는 랜덤하고, 해커는 기록된 데이터 워드를 재구성할 수 없을 것이다. 예를 들어, IC(102)가 플래시 메모리 어레이(106)에 보안 키(security key)를 프로그래밍하는 경우, 해커가 판독하는 키는 비트 스크램블링된다.
프로그래밍 데이터 레지스터(112)의 비트가 프로그래밍된 순서를 랜덤화하기 위해, SPC(108)는 프로그래밍된 비트를 카운트하도록 구성된 카운터(126); 및 일대일 랜덤 매핑(one-to-one random mapping)을 사용하여 카운터의 출력을 랜덤하게 스크램블링하는 스크램블러(130)를 포함한다. 멀티플렉서(114)는 스크램블러(130)의 출력에 연결(couple)되고 따라서 프로그래밍될 프로그래밍 데이터 레지스터(112)의 비트들을 랜덤으로 선택할 것이다. 예를 들어, 8비트 프로그래밍 데이터 레지스터를 가정하면, 스크램블러(130)는 시퀀스 2, 7, 0, 1, 5, 3, 4, 6을 출력할 수 있으며, 이는 프로그래밍 회로가 플래시 메모리에 워드를 프로그래밍하는 순서가 될 것이다. 스크램블러(130)의 출력은 또한 프로그래밍 회로(116)의 비트 어드레스 입력(bit-address input)이다.
본 개시 및 청구범위의 맥락에서, 용어 ''랜덤'(예를 들어 ''랜덤 순서'', ''랜덤 비트들'', ''랜덤 시퀀스'', ''랜덤 순열'' 등에서 사용됨)는 다양한 문법적 형태들로, 진짜 랜덤 및 유사 랜덤 값(pseudo-random value)들 또는 이벤트들을 모두 지칭한다.
채널 공격 시나리오(100)의 구성, 및 SPC(108)를 포함하는 SPC(102)의 구성은 도 1에 도시되고 본 개시에서 전술된 바와 같이 개념적 명확성(conceptual clarity)을 위해 인용된 예들이다. 구성들이 대안적인 실시예들에서 사용될 수 있다. 예를 들어, 실시예에서, 해커가 사용하는 사이드 채널은 Vdd 핀(Vdd pin)(미도시)으로의 복귀 전류(return current)일 수 있다; 다른 실시예에서 해커는 인쇄 회로(printed circuit)의 저항(resistive) 또는 유도 경로(inductive path)에 걸친 전압 강하(voltage drop)를 측정할 수 있다. 일부 실시예들에서, 해커는 IC(102)로부터 방출(emit)된 전자기 복사(electromagnetic radiation)를 측정하고, 또 다른 실시예들에서 해커는 마이크로폰 적외선 검출기(infra-red detector) 등과 같은 다른 수단을 사용할 수 있다.
실시예에서, 카운터(126), 스크램블러(130), 프로그래밍 데이터 레지스터(112) 및 멀티플렉서(128)는 필요하지 않다. 대신에, 프로세서(104)는 프로그래밍 회로(116)에 스크램블링된 순서로 비트들을 전송한다.
일부 실시예들에서, 플래시 메모리 어레이는 셀당 2개 이상의 비트들을 저장한다. 예를 들어, 실시예에서 플래시 메모리 셀은 프로그래밍되지 않은 상태, 약하게 프로그래밍된 상태, 중간 정도로(mediumly) 프로그래밍된 상태 및 강하게 프로그래밍된 상태일 수 있다. 4개의 상태들은 일반적으로 각각 00, 01, 10 및 11의 값을 갖는 2개의 저장된 비트를 나타낸다. (약함, 중간 또는 강함은 플래시 셀의 플로팅 게이트(floating gate)에 트랩된 전하의 측정과 관련된다.) 해커는 Vdd 공급 장치의 전류를 관찰하는 것에 의해 00, 01, 10 또는 11이 플래시 메모리 셀에 프로그래밍되었는지 알 수 있다; 그러나, 실시예에서, 비트 쌍들의 순서는 스크램블링되고 해커는 스크램블링된 비트 쌍들의 집합(collection)을 획득할 것이다.
도 2는 본 개시의 실시예에 따른 보안 플래시 프로그래밍을 위한 방법을 개략적으로 예시하는 흐름도(200)이다. 흐름도는 SPC(108)에 의해 실행된다(도 1 참조).
흐름도는 프로그래밍 워드 수신 동작(202)에서 시작하고, SPC는 플래시 메모리 어레이(106)(도 1 참조)에 프로그래밍될 어드레스 워드 및 데이터 워드를 포함하는 (예를 들어, 도 1의 프로세서(104)로부터) 프로그래밍 인스트럭션을 수신한다. 데이터 워드는 예를 들어 암호 키(cypher key)와 같이 시크릿(secret)일 수 있다.
다음으로, 랜덤 순열 동작(204)에서 IC는 프로그래밍 워드의 모든 비트들의 순열 맵을 생성한다. 이러한 순열 맵은 랜덤 일대일 매핑을 사용하여 프로그래밍 워드의 각 비트 포지션(bit position)를 고유한 포지션(unique position)에 매핑한다.
이어서 SPC는 직렬 프로그래밍 동작(serial-programming operation)(206)에서 순열된 순서(permutated order)에 따라 프로그래밍 인스트럭션에 의해 표시된 어드레스에서 플래시 메모리 어레이의 프로그래밍 데이터 워드의 비트들을 직렬로 프로그래밍한다. 예를 들어, 프로그래밍 데이터 워드의 비트들 0, 1, 2, 3이 2, 1, 0, 3에 매핑되는 경우, SPC는 먼저 프로그래밍 데이터 워드의 비트 2를 프로그래밍한 다음 비트 1, 비트 0 및 비트 3을 프로그래밍한다. 동작(206)이 수행된 후, 흐름도가 종료된다.
따라서, 도 2에 도시된 예시적인 흐름도에 따르면, SPC는 프로그램 인스트럭션에 의해 표시된 어드레스에서 랜덤 비트 순서로 플래시 메모리 어레이의 프로그래밍 데이터 워드의 비트들을 프로그래밍하여 사이드 채널 공격들을 어렵게 한다.
도 2에 도시되고 전술된 흐름도가 예로서 인용된다. 다른 적절한 흐름도들이 대안적인 실시예들에서 사용될 수 있다. 예를 들어, 일부 실시예들에서, SPC(108)는 프로그램 인스트럭션을 수신하기 전에 순열 맵을 준비한다. 실시예에서, SPC는 프로그래밍 데이터 워드의 비트를 프로그래밍하는 동안 아직 프로그래밍되지 않은 비트들로부터 프로그래밍될 다음 랜덤 비트를 결정한다.
순열 방법(permutation method)
실시예들에서, 순열 맵을 생성하기 위한 복수의 방법이 사용될 수 있다.
도 3은 본 개시의 실시예에 따라 순열 맵을 생성하기 위한 방법을 개략적으로 도시하는 흐름도(300)이다. 흐름도는 스크램블러(130)(도 1 참조)에 의해 실행된다.
흐름도는 랜덤 벡터 생성 동작(302)에서 시작하고, 스크램블러는 rnd0 내지 rndN-1(N=8의의 경우 아래에 도시됨)로 지정되는 N개의 랜덤 비트들의 벡터 V를 생성한다:
다음으로, 행렬 m 생성 동작(304)에서, SPC는 가역 NxN 행렬(invertible NxN matrix)을 생성하고, 본 예에서, NxN 삼각 행렬 M은 주대각선에서 "1" 값들을 가지고, 2개의 삼각(주대각선 위의 삼각 또는 주대각선 아래의 삼각) 중 하나는 랜덤 비트들(Ri)을 가지고, 다른 삼각에서 "0" 값들을 갖는다. 예를 들어, 아래와 같이(N=8의 경우), 상위 우측 삼각에 랜덤 수들 rndi와 하위 좌측 삼각에 ''0''이 있는 상위 우측 대각선 행렬이 사용될 수 있다.
SPC는 이제 카운트 제거 동작(clear-count operation)(306)에 들어가고 카운트 레지스터를 제거하여 제1 비트(0부터 시작)가 이제 프로그래밍될 것임을 표시한다.
다음으로, SPC는 Vc 생성 동작(308)에 들어가고, 카운트의 비트들을 포함하는 벡터 Vc를 생성한다(N=8의 경우 아래에 도시됨):
그 다음, 순열 벡터 생성 동작(310)에서, SPC는 다음에 따라 순열 벡터 Vp를 생성한다:
덧셈은 이진 배타적 논리합이고 곱셈은 이진 AND 함수이다. 동작(310)은 N=8의 경우 아래에 도시되어 있다:
그런 다음, SPC는 체크-카운트-완료 동작(check-count-done operation)(312)에서 마지막 비트 포지션(카운트=2N-l에 대응)의 순열이 치환(permute)되었는지 확인하고, 그렇다면 흐름도를 종료한다. 동작(312)에서 카운트가 완료되지 않은 경우, SPC는 카운트 증분 동작(increment count operation)(314)에 들어가고, 카운트를 증분시킨 다음, 다음 카운트 값을 치환하기 위해 동작(308)에 다시 들어간다.
흐름도(300)의 구성은 도 3에 도시되어 있고 본 개시에서 위에서 설명된 것은 예로서 인용된다. 다른 구성들이 대안적인 실시예들에서 사용될 수 있다. 예를 들어, 대안적인 실시예들에서, 반드시 삼각일 필요는 없는 다른 적합한 타입들의 가역 행렬들이 사용될 수 있다. 또 다른 예로서, 일부 실시예들에서, Sattolo 알고리즘이 사용된다(예를 들어, "Overview of Sattolo's Algorithm" by M. Wilson, Algorithms Seminar 2002-2004, F. Chyzak (ed.), INRIA, (2005), 105108페이지). (단, Sattolo 알고리즘은 순차적이지 않으며, 사용한다면 순열 비트들을 하나씩 출력할 수 있도록 적절한 회로를 추가해야 한다.)
SPC(108)를 포함하는 IC(102)의 구성들 및 도 1 내지 도 3에 도시되고 본 개시에서 전술된 흐름도들(200 및 300)의 방법들은 개념적 명확성을 위해 순전히 도시된 구성들 및 흐름도들의 예이다. 임의의 다른 적절한 구성들 및 흐름도들이 대안적인 실시예들에서 사용될 수 있다.
SPC(108)를 포함하는 IC(102)의 상이한 서브-유닛들은 하나 이상의 하나 이상의 주문형 집적회로(Application-Specific Integrated Circuits; ASIC) 또는 필드 프로그래밍 가능 게이트 어레이(Field-Programmable Gate Arrays; FPGA)와 같은 적절한 하드웨어를 사용하거나, 소프트웨어를 사용하거나, 하드웨어를 사용하거나, 하드웨어와 소프트웨어 요소들의 조합을 사용하여 구현될 수 있다.
프로세서(104) 및/또는 SPC(108)(도 1 참조)는 하나 이상의 범용 프로세서들을 포함할 수 있으며, 이들은 본 개시에서 설명된 기능들을 수행하도록 소프트웨어로 프로그래밍된다. 소프트웨어는 예를 들어 네트워크를 통해 또는 호스트로부터 전자 형식으로 프로세서에 다운로드될 수 있거나 대안적으로 또는 추가로 자기, 광학 또는 전자 메모리와 같은 비일시적 유형 매체에 제공 및/또는 저장될 수 있다.
본 개시에서 설명된 실시예들은 주로 보안 NVM 프로그래밍을 다루지만, 본 개시에서 설명된 방법들 및 시스템들은 다른 응용 분야들에서도 사용될 수 있다.
따라서, 전술된 실시예는 예로서 인용되었으며, 본 발명은 위에서 특별히 도시되고 설명된 것에 제한되지 않는다는 것이 이해될 것이다. 오히려, 본 발명의 범위는 전술된 다양한 특징들의 조합들 및 서브 조합들뿐만 아니라 후속 설명을 읽을 때 당업자에게 발생하고 종래 기술에 개시되지 않은 변형들 및 수정들을 포함한다. 본 특허 출원에 참조로 포함된 문서들은 본 개시에서 명시적으로 또는 암시적으로 만들어진 정의들과 충돌하는 방식으로 이러한 통합된 문서들에 정의된 용어들의 범위를 제외하고는 출원의 필수적인 부분으로 간주되어야 하고, 본 개시의 정의들만이 고려되어야 한다.

Claims (8)

  1. 메모리 장치에 있어서,
    비휘발성 메모리; 및
    보안 프로그래밍 회로
    를 포함하고,
    상기 보안 프로그래밍 회로는,
    상기 NVM의 특정한 위치에 특정한 데이터 워드를 프로그래밍하는 프로그램-NVM 인스트럭션을 수신하고; 및
    상기 프로그램-NVM 인스트럭션을 수신한 것에 응답하여, 상기 NVM에서 특정한 데이터 워드의 비트들을 랜덤 순서로 프로그래밍하도록 구성되는,
    메모리 장치.
  2. 제1항에 있어서,
    상기 특정한 데이터 워드는,
    2의 N 제곱의 비트들로 구성되고,
    상기 SPC는,
    2의 N 제곱 값들의 랜덤 순열을 생성하고, 상기 랜덤 순열을 따르는 순서로 상기 특정한 데이터 워드의 상기 비트들을 프로그래밍하도록 구성되는,
    메모리 장치.
  3. 제2항에 있어서,
    상기 SPC는,
    가역 이진 행렬에 카운트의 각 비트들을 포함하는 벡터를 곱하여 곱을 생성하고; 및
    상기 곱에 랜덤 비트들의 벡터를 더하는 것에 의해 상기 랜덤 순열을 생성하도록 구성되는,
    메모리 장치.
  4. 제3항에 있어서,
    상기 가역 이진 행렬은,
    주대각선, 제1 삼각 및 제2 삼각을 포함하는 삼각 이진 행렬이고,
    상기 주대각선은, "1" 값들을 포함하고,
    상기 제1 삼각은, "0" 값들을 포함하고,
    상기 제2 삼각은, 랜덤 비트들을 포함하는,
    메모리 장치.
  5. 비휘발성 메모리(NVM)의 보안 프로그래밍을 위한 방법에 있어서,
    상기 방법은,
    상기 NVM의 특정한 위치에 특정한 데이터 워드를 프로그래밍하는 프로그램-NVM 인스트럭션을 수신하는 단계; 및
    상기 프로그램-NVM 인스트럭션을 수신한 것에 응답하여, 상기 NVM에서 특정한 데이터 워드의 비트들을 랜덤 순서로 프로그래밍하는 단계
    를 포함하는 방법.
  6. 제5항에 있어서,
    상기 특정한 데이터 워드는,
    2의 N 제곱의 비트들로 구성되고,
    상기 데이터 워드를 프로그래밍하는 단계는,
    2의 N 제곱 값들의 랜덤 순열을 생성하는 단계 및 상기 랜덤 순열을 따르는 순서로 상기 특정한 데이터 워드의 상기 비트들을 프로그래밍하는 단계
    를 포함하는 방법.
  7. 제6항에 있어서,
    상기 랜덤 순열을 생성하는 단계는,
    가역 이진 행렬에 카운트의 각 비트들을 포함하는 벡터를 곱하여 곱을 생성하는 단계; 및
    상기 곱에 랜덤 비트들의 벡터를 더하는 단계
    를 포함하는 방법.
  8. 제7항에 있어서,
    상기 가역 이진 행렬은,
    주대각선, 제1 삼각 및 제2 삼각을 포함하는 삼각 이진 행렬이고,
    상기 주대각선은, "1" 값들을 포함하고,
    상기 제1 삼각은, "0" 값들을 포함하고,
    상기 제2 삼각은, 랜덤 비트들을 포함하는,
    방법.
KR1020230084760A 2022-07-31 2023-06-30 비휘발성 메모리의 보안 프로그래밍을 위한 메모리장치 및 방법 KR20240017315A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/877,953 2022-07-31
US17/877,953 US20240037285A1 (en) 2022-07-31 2022-07-31 Flash Programming Randomization

Publications (1)

Publication Number Publication Date
KR20240017315A true KR20240017315A (ko) 2024-02-07

Family

ID=86861995

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230084760A KR20240017315A (ko) 2022-07-31 2023-06-30 비휘발성 메모리의 보안 프로그래밍을 위한 메모리장치 및 방법

Country Status (6)

Country Link
US (1) US20240037285A1 (ko)
EP (1) EP4318294A1 (ko)
JP (1) JP2024019749A (ko)
KR (1) KR20240017315A (ko)
CN (1) CN117494120A (ko)
TW (1) TWI834551B (ko)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070277028A1 (en) * 2006-05-26 2007-11-29 Jamey Cates Method and system for recovery from reprogramming failures in nonvolatile memory
KR100854972B1 (ko) * 2007-02-13 2008-08-28 삼성전자주식회사 메모리 시스템 및 그것의 데이터 읽기 방법
US10534554B2 (en) * 2017-10-13 2020-01-14 Silicon Storage Technology, Inc. Anti-hacking mechanisms for flash memory device
US11017128B2 (en) * 2018-05-22 2021-05-25 Seagate Technology Llc Data security using bit transposition during memory accesses
US11244078B2 (en) * 2018-12-07 2022-02-08 Nxp Usa, Inc. Side channel attack protection
US11568297B2 (en) * 2020-03-05 2023-01-31 International Business Machines Corporation Efficient synthesis of a random uniformly distributed Clifford unitary

Also Published As

Publication number Publication date
TWI834551B (zh) 2024-03-01
JP2024019749A (ja) 2024-02-13
US20240037285A1 (en) 2024-02-01
EP4318294A1 (en) 2024-02-07
TW202407564A (zh) 2024-02-16
CN117494120A (zh) 2024-02-02

Similar Documents

Publication Publication Date Title
TWI537950B (zh) 非揮發記憶體裝置以及用於非揮發記憶體裝置的方法
Ray et al. True random number generation using read noise of flash memory cells
US9483664B2 (en) Address dependent data encryption
US10078462B2 (en) Methods and systems for providing hardware security functions using flash memories
EP2728509B1 (en) Semiconductor Device and Encryption Key Writing Method
Zhang et al. Persistent fault attack in practice
CN103403670A (zh) 用于伪随机数生成的半导体存储器件
Anagnostopoulos et al. Low-temperature data remanence attacks against intrinsic SRAM PUFs
CN100390700C (zh) 使用磁设置数据的防篡改封装和方法
US10740476B2 (en) Tamper-proof storage using signatures based on threshold voltage distributions
US8990578B2 (en) Password authentication circuit and method
Jia et al. Extracting robust keys from NAND flash physical unclonable functions
US9875085B2 (en) Memory system and method of generating a seed value
US11528135B2 (en) Integrated circuit (IC) signatures with random number generator and one-time programmable device
US11962693B2 (en) Integrated circuit (IC) signatures with random number generator and one-time programmable device
Hasan et al. Data recovery from {“Scrubbed”}{NAND} flash storage: Need for analog sanitization
Kannan et al. Secure memristor-based main memory
TWI834551B (zh) 記憶體裝置以及用於非揮發性記憶體的安全程式化的方法
Sakib et al. Flash memory based physical unclonable function
US20200372186A1 (en) Secured memory
Skorobogatov Compromising device security via NVM controller vulnerability
CN103605933A (zh) 基于标准单元技术的关键信息存储方法及存储装置
Khan et al. Assuring security and reliability of emerging non-volatile memories
Grandamme et al. Switching Off your Device Does Not Protect Against Fault Attacks
Poudel Using nor Flash Memory in Microcontrollers for Generating True Random Numbers