KR20240017315A - 비휘발성 메모리의 보안 프로그래밍을 위한 메모리장치 및 방법 - Google Patents
비휘발성 메모리의 보안 프로그래밍을 위한 메모리장치 및 방법 Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 26
- 238000000034 method Methods 0.000 title claims description 19
- 230000004044 response Effects 0.000 claims abstract description 5
- 239000011159 matrix material Substances 0.000 claims description 15
- 230000002441 reversible effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 8
- 238000003491 array Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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/79—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/75—Protecting 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/22—Safety or protection circuits preventing unauthorised or accidental access to memory cells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/54—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/77—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, 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
본 개시(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은 본 개시의 실시예에 따른 순열 맵을 생성하기 위한 방법을 개략적으로 예시한 흐름도이다.
도 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)
- 메모리 장치에 있어서,
비휘발성 메모리; 및
보안 프로그래밍 회로
를 포함하고,
상기 보안 프로그래밍 회로는,
상기 NVM의 특정한 위치에 특정한 데이터 워드를 프로그래밍하는 프로그램-NVM 인스트럭션을 수신하고; 및
상기 프로그램-NVM 인스트럭션을 수신한 것에 응답하여, 상기 NVM에서 특정한 데이터 워드의 비트들을 랜덤 순서로 프로그래밍하도록 구성되는,
메모리 장치. - 제1항에 있어서,
상기 특정한 데이터 워드는,
2의 N 제곱의 비트들로 구성되고,
상기 SPC는,
2의 N 제곱 값들의 랜덤 순열을 생성하고, 상기 랜덤 순열을 따르는 순서로 상기 특정한 데이터 워드의 상기 비트들을 프로그래밍하도록 구성되는,
메모리 장치. - 제2항에 있어서,
상기 SPC는,
가역 이진 행렬에 카운트의 각 비트들을 포함하는 벡터를 곱하여 곱을 생성하고; 및
상기 곱에 랜덤 비트들의 벡터를 더하는 것에 의해 상기 랜덤 순열을 생성하도록 구성되는,
메모리 장치. - 제3항에 있어서,
상기 가역 이진 행렬은,
주대각선, 제1 삼각 및 제2 삼각을 포함하는 삼각 이진 행렬이고,
상기 주대각선은, "1" 값들을 포함하고,
상기 제1 삼각은, "0" 값들을 포함하고,
상기 제2 삼각은, 랜덤 비트들을 포함하는,
메모리 장치. - 비휘발성 메모리(NVM)의 보안 프로그래밍을 위한 방법에 있어서,
상기 방법은,
상기 NVM의 특정한 위치에 특정한 데이터 워드를 프로그래밍하는 프로그램-NVM 인스트럭션을 수신하는 단계; 및
상기 프로그램-NVM 인스트럭션을 수신한 것에 응답하여, 상기 NVM에서 특정한 데이터 워드의 비트들을 랜덤 순서로 프로그래밍하는 단계
를 포함하는 방법. - 제5항에 있어서,
상기 특정한 데이터 워드는,
2의 N 제곱의 비트들로 구성되고,
상기 데이터 워드를 프로그래밍하는 단계는,
2의 N 제곱 값들의 랜덤 순열을 생성하는 단계 및 상기 랜덤 순열을 따르는 순서로 상기 특정한 데이터 워드의 상기 비트들을 프로그래밍하는 단계
를 포함하는 방법. - 제6항에 있어서,
상기 랜덤 순열을 생성하는 단계는,
가역 이진 행렬에 카운트의 각 비트들을 포함하는 벡터를 곱하여 곱을 생성하는 단계; 및
상기 곱에 랜덤 비트들의 벡터를 더하는 단계
를 포함하는 방법. - 제7항에 있어서,
상기 가역 이진 행렬은,
주대각선, 제1 삼각 및 제2 삼각을 포함하는 삼각 이진 행렬이고,
상기 주대각선은, "1" 값들을 포함하고,
상기 제1 삼각은, "0" 값들을 포함하고,
상기 제2 삼각은, 랜덤 비트들을 포함하는,
방법.
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)
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 |
-
2022
- 2022-07-31 US US17/877,953 patent/US20240037285A1/en active Pending
-
2023
- 2023-05-05 TW TW112116783A patent/TWI834551B/zh active
- 2023-05-12 CN CN202310536504.4A patent/CN117494120A/zh active Pending
- 2023-06-16 EP EP23179743.2A patent/EP4318294A1/en active Pending
- 2023-06-30 KR KR1020230084760A patent/KR20240017315A/ko unknown
- 2023-07-12 JP JP2023114122A patent/JP2024019749A/ja active Pending
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 |