KR102313584B1 - Updating cryptographic keys stored in non-volatile memory - Google Patents

Updating cryptographic keys stored in non-volatile memory Download PDF

Info

Publication number
KR102313584B1
KR102313584B1 KR1020190014578A KR20190014578A KR102313584B1 KR 102313584 B1 KR102313584 B1 KR 102313584B1 KR 1020190014578 A KR1020190014578 A KR 1020190014578A KR 20190014578 A KR20190014578 A KR 20190014578A KR 102313584 B1 KR102313584 B1 KR 102313584B1
Authority
KR
South Korea
Prior art keywords
bit
random
binary value
probability
updating sequence
Prior art date
Application number
KR1020190014578A
Other languages
Korean (ko)
Other versions
KR20200097381A (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 윈본드 일렉트로닉스 코포레이션
Priority to KR1020190014578A priority Critical patent/KR102313584B1/en
Publication of KR20200097381A publication Critical patent/KR20200097381A/en
Application granted granted Critical
Publication of KR102313584B1 publication Critical patent/KR102313584B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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/12Details relating to cryptographic hardware or logic circuitry

Abstract

비 프로그램된 셀들이 특정 이진 값을 갖는 비-휘발성 메모리에 저장하기 위한 N-비트 암호키의 새로운 인스턴스를 생성하는 방법이 제공된다. 방법은 랜덤 N-비트 업데이팅 시퀀스를 생성하는 단계 및 특정 이진 값을 갖지 않는 N-비트 암호키의 현재 인스턴스 내 어떠한 비트들도 무효화하지 않으면서, 랜덤 N-비트 업데이팅 시퀀스 내 대응하는 위치의 비트와 상이하고, 특정 이진 값을 갖는 N-비트 암호키의 현재 인스턴스 내 각 비트를 무효화함으로써, N-비트 암호키의 새로운 인스턴스를 생성하는 단계를 포함한다. 다른 실시예들도 설명된다.A method is provided for generating a new instance of an N-bit cryptographic key for storage in non-volatile memory in which non-programmed cells have a specific binary value. The method includes generating a random N-bit updating sequence and, without invalidating any bits in the current instance of the N-bit cryptographic key that do not have a specific binary value, of the corresponding position in the random N-bit updating sequence. generating a new instance of the N-bit encryption key by invalidating each bit in the current instance of the N-bit encryption key that is different from the bits and has a specific binary value. Other embodiments are also described.

Figure R1020190014578
Figure R1020190014578

Description

비-휘발성 메모리에 저장된 암호키 업데이트{UPDATING CRYPTOGRAPHIC KEYS STORED IN NON-VOLATILE MEMORY}Updating cryptographic keys stored in non-volatile memory {UPDATING CRYPTOGRAPHIC KEYS STORED IN NON-VOLATILE MEMORY}

본 발명은 사이버 보안(cybersecurity)에 관한 것으로, 특히 통신을 암호화하는 데 이용되는 암호키들에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to cybersecurity, and more particularly to encryption keys used to encrypt communications.

N-비트 암호키의 엔트로피 H(N,p) = H(N,1-p)는 키의 랜덤성을 정량화한다. 여기서, p는 키 내 비트들 중 임의의 하나가 0 또는 1일 확률이다. 높은 엔트로피의 키는 낮은 엔트로피의 키보다 보안이 높다. 랜덤성, 독립성 및 동등하게 분포된 (iid) 비트들을 갖는 키들에 대해, H(N,p) = NH(p) 비트들, 여기서 H(p) = -(plog2p + (1-p)log2(1-p))(For keys having bits that are random, independent, and identically distributed (iid), H(N,p) = NH(p) bits, where H(p) = -(plog2p + (1-p)log2(1-p))). 예를 들어, 언바이어스 iid 비트들에 대해(p = 0.5), H(p)는 H(N,p) = N이 되도록, 하나의 최고값을 얻는다.The entropy of an N-bit cryptographic key H(N,p) = H(N,1-p) quantifies the randomness of the key. Here, p is the probability that any one of the bits in the key is 0 or 1. A key with high entropy is more secure than a key with low entropy. For keys with randomness, independence and equally distributed (iid) bits, H(N,p) = NH(p) bits, where H(p) = -(plog 2 p + (1-p) log 2 (1-p))(For keys having bits that are random, independent, and identically distributed (iid), H(N,p) = NH(p) bits, where H(p) = -(plog 2 p + (1-p)log 2 (1-p))). For example, for unbiased iid bits (p = 0.5), H(p) gets one highest value such that H(N,p) = N.

비-활성화 메모리(NVM; non-volatile memory)는 복수의 단일-비트 메모리 셀들을 포함하고, 각각의 단일-비트 메모리 셀들은 프로그램된 상태 또는 비 프로그램된 상태일 수 있다. 통상적으로, 프로그램된 셀은 이진 값 0을 가지는 반면, 비 프로그램된 셀은 이진 값 1을 가진다. OTP NVM(one-time programmable NVM)에서, 프로그래밍 동작은 취소될 수 없으며, 즉, 프로그램된 셀은 후속적으로 디프로그램(deprogram)(또는, "삭제")될 수 없다.A non-volatile memory (NVM) includes a plurality of single-bit memory cells, and each of the single-bit memory cells may be in a programmed state or a non-programmed state. Typically, programmed cells have a binary value of 0, while unprogrammed cells have a binary value of 1. In an OTP one-time programmable NVM (NVM), a programming operation cannot be undone, ie, a programmed cell cannot be subsequently deprogrammed (or "erased").

본 발명의 일부 실시예들에 따라 비 프로그램된 셀들이 특정 이진 값을 갖는, 디바이스에 속하는 비-휘발성 메모리(NVM)에 저장하기 위한 N-비트 암호키의 새로운 인스턴스(new instance of the N-bit cryptographic key)를 생성하는 장치가 제공된다. 장치는 네트워크 인터페이스 및 프로세서를 포함한다. 프로세서는 랜덤 N-비트 업데이팅 시퀀스(random N-bit updating sequence)를 생성하도록 구성된다. 프로세서는 특정 이진 값(particular binary value)을 갖지 않는 N-비트 암호키의 현재 인스턴스(current instance of the N-bit cryptographic key) 내 어떤 비트들도 무효화(negate)하지 않으면서, 랜덤 N-비트 업데이팅 시퀀스 내 대응하는 위치의 비트(correspondingly-positioned bit)와 상이하고, 특정 이진 값을 갖는 N-비트 암호키의 현재 인스턴스 내 각 비트를 무효화함으로써, N-비트 암호키의 새로운 인스턴스를 성성하도록 더 구성된다. 프로세서는, N-비트 암호키의 새로운 인스턴스를 생성한 후, 네트워크 인터페이스를 이용하여, NVM 내 저장을 위해 디바이스로 N-비트 암호키의 새로운 인스턴스를 통신하도록 더 구성된다.A new instance of the N-bit encryption key for storage in a non-volatile memory (NVM) belonging to a device, in which unprogrammed cells have a specific binary value according to some embodiments of the present invention A device for generating a cryptographic key) is provided. The device includes a network interface and a processor. The processor is configured to generate a random N-bit updating sequence. The processor does not negate any bits in the current instance of the N-bit cryptographic key that do not have a particular binary value, but ups the random N-bits. Further to generate a new instance of the N-bit cryptographic key by invalidating each bit in the current instance of the N-bit cryptographic key that is different from the correspondingly-positioned bit in the dating sequence and has a specific binary value. is composed The processor is further configured to, after generating the new instance of the N-bit encryption key, communicate, using the network interface, the new instance of the N-bit encryption key to the device for storage in the NVM.

일부 실시예들에서, 특정 이진 값은 1이고, 프로세서는 N-비트 암호키 및 랜덤 N-비트 업데이팅 시퀀스 간 비트와이즈 AND 연산(bitwise AND operation)을 수행함으로써, 랜덤 N-비트 업데이팅 시퀀스 내 대응하는 위치의 비트와 상이하고, 특정 이진 값을 갖는 N-비트 암호키의 현재 인스턴스 내 각 비트를 무효화하도록 구성된다.In some embodiments, the specific binary value is 1, and the processor performs a bitwise AND operation between the N-bit cryptographic key and the random N-bit updating sequence, thereby and invalidate each bit in the current instance of the N-bit cryptographic key that is different from the bit in the corresponding position and has a specific binary value.

일부 실시예들에서, 특정 이진 값은 0이고, 프로세서는 In some embodiments, the particular binary value is 0, and the processor

N-비트 암호키의 현재 인스턴스 및 랜덤 N-비트 업데이팅 시퀀스 간 비트와이즈 OR 연산을 수행함으로써, 랜덤 N-비트 업데이팅 시퀀스 내 대응하는 위치의 비트와 상이하고, 특정 이진 값을 갖는 N-비트 암호키의 현재 인스턴스 내 각 비트를 무효화하도록 구성된다.By performing a bitwise OR operation between the current instance of the N-bit cryptographic key and the random N-bit updating sequence, an N-bit having a specific binary value and different from a bit at a corresponding position in the random N-bit updating sequence It is configured to invalidate each bit in the current instance of the encryption key.

일부 실시예들에서, 프로세서는 0.5보다 큰 특정 이진 값을 가질 확률로 랜덤 N-비트 업데이팅 시퀀스 내 각 비트를 생성하도록 구성된다.In some embodiments, the processor is configured to generate each bit in the random N-bit updating sequence with a probability of having a particular binary value greater than 0.5.

일부 실시예들에서,In some embodiments,

확률은 미리 결정된 정수 m 및 가변 정수 n에 대해 n/2m과 동일하고,The probability is equal to n/2 m for a predetermined integer m and a variable integer n,

프로세서는 the processor

E 비트들을 갖는 언바이어스 랜덤 시드(unbiased random seed)를 랜덤 N-비트 업데이팅 시퀀스의 비트들에 각각 대응하는 N개의 m-비트 시퀀스로 확장하고,extending an unbiased random seed with E bits into a sequence of N m-bits each corresponding to bits of a random N-bit updating sequence,

랜덤 N-비트 업데이팅 시퀀스 내 각 비트에 대해, 대응하는 m-비트 시퀀스의 값이 n보다 작은 것에 응답하여 특정 이진 값으로 비트를 설정함으로써,For each bit in the random N-bit updating sequence, by setting a bit to a specific binary value in response to the value of the corresponding m-bit sequence being less than n,

랜덤 N-비트 업데이팅 시퀀스를 생성하도록 구성된다.and generate a random N-bit updating sequence.

일부 실시예들에서, 프로세서는 N-비트 암호키의 새로운 인스턴스를 디바이스로 통신한 후에, 디바이스와의 통신을 암호화(encrypting) 및 복호화(decrypting)를 위한 N-비트 암호키의 새로운 인스턴스를 이용하도록 더 구성된다.In some embodiments, after the processor communicates a new instance of the N-bit encryption key to the device, the processor uses the new instance of the N-bit encryption key for encrypting and decrypting communication with the device. more composed.

일부 실시예들에서, 프로세서는 N-비트 암호키의 새로운 인스턴스를 디바이스로 통신하기에 앞서, N-비트 암호키의 현재 인스턴스를 이용하여 N-비트 암호키의 새로운 인스턴스를 암호화하도록 더 구성된다.In some embodiments, the processor is further configured to encrypt the new instance of the N-bit cryptographic key using the current instance of the N-bit cryptographic key prior to communicating the new instance of the N-bit cryptographic key to the device.

본 발명의 일부 실시예들에 따르면, 특정 이진 값을 갖는 셀들 중 비 프로그램된 것들, N-비트 암호키를 저장하도록 구성된 복수의 단일-비트 셀들(plurality of single-bit cells)을 포함하는 비-휘발성 메모리(NVM) 및 프로세서를 포함하는 장치가 더 제공된다. 프로세서는 랜덤 N-비트 업데이팅 시퀀스를 생성하도록 구성된다. 프로세서는 특정 이진 값을 갖지 않는 N-비트 암호키의 현재 인스턴스 내 어떤 비트들도 무효화하지 않으면서, 랜덤 N-비트 업데이팅 시퀀스 내 대응하는 위치의 비트와 상이하고, 특정 이진 값을 갖는 N-비트 암호키의 현재 인스턴스 내 각 비트를 무효화함으로써, N-비트 암호키의 새로운 인스턴스를 생성하도록 더 구성된다. 프로세서는 N-비트 암호키의 새로운 인스턴스를 생성한 후에, NVM 내 N-비트 암호키의 새로운 인스턴스로 N-비트 암호키의 현재 인스턴스를 대체하도록 구성된다.According to some embodiments of the present invention, non-programmed ones of cells having a specific binary value, non- comprising a plurality of single-bit cells configured to store an N-bit cryptographic key. An apparatus comprising a volatile memory (NVM) and a processor is further provided. The processor is configured to generate a random N-bit updating sequence. The processor does not invalidate any bits in the current instance of the N-bit cryptographic key that do not have a specific binary value, but is different from the bit in the corresponding position in the random N-bit updating sequence, and does not have a specific binary value. and invalidate each bit in the current instance of the bit encryption key, thereby creating a new instance of the N-bit encryption key. The processor is configured to, after generating a new instance of the N-bit cryptographic key, replace the current instance of the N-bit cryptographic key with the new instance of the N-bit cryptographic key in the NVM.

일부 실시예들에서,In some embodiments,

프로세서는 특정 이진 값을 가질 특정 확률로 랜덤 N-비트 업데이팅 시퀀스 내 각 비트를 생성하도록 구성되고,the processor is configured to generate each bit in the random N-bit updating sequence with a specific probability to have a specific binary value;

프로세서는 키의 현재 인스턴스에 대한 키의 새로운 인스턴스의 예상 엔트로피가 N보다 작은 미리 정의된 임계치 E보다 작지 않도록, 랜덤 N-비트 업데이팅 시퀀스를 생성하기에 앞서, 특정 확률을 계산하도록 더 구성된다.The processor is further configured to calculate, prior to generating the random N-bit updating sequence, a certain probability such that the expected entropy of a new instance of the key relative to the current instance of the key is not less than a predefined threshold E less than N.

일부 실시예들에서, 특정 확률은 0.5보다 크다.In some embodiments, the particular probability is greater than 0.5.

본 발명의 일부 실시예들에 따르면, 비 프로그램된 셀들이 특정 이진 값을 갖는 비-휘발성 메모리(NVM)에 저장하기 위한 N-비트 암호키의 새로운 인스턴스를 생성하는 방법이 더 제공된다. 방법은 랜덤 N-비트 업데이팅 시퀀스를 생성하는 단계 및 특정 이진 값을 갖지 않는 N-비트 암호키의 현재 인스턴스 내 어떤 비트들도 무효화하지 않으면서, 랜덤 N-비트 업데이팅 시퀀스 내 대응하는 위치의 비트와 상이하고, 특정 이진 값을 갖는 N-비트 암호키의 현재 인스턴스 내 각 비트를 무효화함으로써, N-비트 암호키의 새로운 인스턴스를 생성하는 단계를 포함한다.According to some embodiments of the present invention, there is further provided a method of generating a new instance of an N-bit cryptographic key for storage in a non-volatile memory (NVM) in which unprogrammed cells have a specific binary value. The method includes generating a random N-bit updating sequence and, without invalidating any bits in the current instance of the N-bit cryptographic key that do not have a specific binary value, of the corresponding position in the random N-bit updating sequence. generating a new instance of the N-bit encryption key by invalidating each bit in the current instance of the N-bit encryption key that is different from the bits and has a specific binary value.

일부 실시예들에서, 랜덤 N-비트 업데이팅 시퀀스를 생성하는 단계는 0.5보다 큰 특정 이진 값을 가질 확률로 랜덤 N-비트 업데이팅 시퀀스 내 각 비트를 생성하는 단계를 포함한다.In some embodiments, generating the random N-bit updating sequence includes generating each bit in the random N-bit updating sequence with a probability to have a particular binary value greater than 0.5.

일부 실시예들에서, 방법은 랜덤 N-비트 업데이팅 시퀀스를 생성하기에 앞서, 특정 이진 값을 갖는 N-비트 암호키의 현재 인스턴스 내 비트들의 넘버 N1을 식별하는 단계; q에 대해 -(qlog2q + (1-q)log2(1-q)) = E/N1를 푸는 단계 -E는 미리 정의된 엔트로피 임계치 -; 및 q로부터 확률을 도출(deriving)하는 단계를 더 포함한다.In some embodiments, the method includes, prior to generating the random N-bit updating sequence, identifying a number N1 of bits in the current instance of the N-bit cryptographic key having a particular binary value; Step of solving -(qlog 2 q + (1-q)log 2 (1-q)) = E/N1 for q -E is a predefined entropy threshold -; and deriving a probability from q.

일부 실시예들에서, q로부터 확률을 도출하는 단계는 확률을 q로 설정함으로써, q로부터 확률을 도출하는 단계를 포함한다.In some embodiments, deriving the probability from q comprises deriving the probability from q by setting the probability to q.

일부 실시예들에서, q로부터 확률을 도출하는 단계는 확률을 q보다 크지 않은 최고값 n/2m으로 설정함으로써, q로부터 확률을 도출하는 단계를 포함한다. 여기서, m은 미리 결정된 정수이고, n은 가변 정수이다.In some embodiments, deriving the probability from q comprises deriving the probability from q by setting the probability to a highest value n/2 m not greater than q. Here, m is a predetermined integer and n is a variable integer.

일부 실시예들에서, 방법은 랜덤 N-비트 업데이팅 시퀀스를 생성하기에 앞서,In some embodiments, prior to generating the random N-bit updating sequence, the method includes:

특정 이진 값을 갖는 N-비트 암호키의 현재 인스턴스 내 비트들의 넘버 N1을 식별하는 단계; 및identifying a number N1 of bits in a current instance of an N-bit cryptographic key having a particular binary value; and

-(qlog2q + (1-q)log2(1-q))가 E/N1보다 작지 않는 q의 다중 미리 정의된 값들 중 최대 값으로 확률을 설정하는 단계를 더 포함한다. 여기서, E는 미리 정의된 엔트로피 임계치이다.-(qlog 2 q + (1-q)log 2 (1-q)) setting the probability to a maximum value among multiple predefined values of q not less than E/N1. Here, E is a predefined entropy threshold.

본 발명의 일부 실시예들에 따르면, 비 프로그램된 셀들이 특정 이진 값을 갖는 비-휘발성 메모리(NVM) 내 N-비트 암호키의 다중 업데이트들을 가능하게 하는 방법이 더 제공된다. 방법은 업데이트들의 각 i번째 업데이트에 대해서, N-비트 암호키의 현재 인스턴스에 대해 N-비트 암호키의 새로운 인스턴스의 예상 엔트로피가 N보다 작은 미리 정의된 임계치 E보다 작지 않도록, 업데이트들에 대해 상이한 각각의 확률 {qi}(i = 1…U)를 계산하는 단계를 포함한다. 여기서, (i) N-비트 암호키의 새로운 인스턴스는 특정 이진 값을 갖지 않는 N-비트 암호키의 현재 인스턴스 내 어떤 비트들도 무효화하지 않으면서, N-비트 랜덤 업데이팅 시퀀스 내 대응하는 위치의 비트와 상이하고, 특정 이진 값을 갖는 N-비트 암호키의 현재 인스턴스 내 각 비트를 무효화함으로써, 생성되고, (ii) N-비트 랜덤 업데이팅 시퀀스 내 각 비트는 특정 이진 값을 갖는 확률 qi로 생성된다. 방법은 확률들을 계산한 후에 업데이트들을 수행하는 데 이용될 확률들을 제공하는 단계를 더 포함한다.According to some embodiments of the present invention, a method is further provided for enabling multiple updates of an N-bit cryptographic key in a non-volatile memory (NVM) where unprogrammed cells have a specific binary value. The method is different for updates, such that, for each i-th update of updates, the expected entropy of a new instance of the N-bit cryptographic key for the current instance of the N-bit cryptographic key is not less than a predefined threshold E less than N. calculating each probability {q i } (i = 1...U). Here, (i) the new instance of the N-bit cryptographic key does not invalidate any bits in the current instance of the N-bit cryptographic key that do not have a specific binary value, but at the corresponding position in the N-bit random updating sequence. generated by invalidating each bit in a current instance of an N-bit cryptographic key that is different from a bit and has a specific binary value, (ii) a probability q i that each bit in the N-bit random updating sequence has a specific binary value is created with The method further comprises providing probabilities to be used to perform updates after calculating the probabilities.

일부 실시예들에서, 확률들 각각은 0.5보다 크다.In some embodiments, each of the probabilities is greater than 0.5.

일부 실시예들에서, 확률들을 계산하는 단계는 업데이트들 중 각 i번째 업데이트에 대해, q에 대해

Figure 112019013036232-pat00001
을 푸는 단계(여기서, q0는 1) 및 q로부터 qi를 도출하는 단계를 포함한다.In some embodiments, calculating the probabilities comprises for each i-th update of the updates, for q
Figure 112019013036232-pat00001
Solving for (where q 0 is 1) and deriving q i from q.

일부 실시예들에서, q로부터 qi를 도출하는 단계는 qi를 q로 설정함으로써, q로부터 qi를 도출하는 단계를 포함한다.By setting the In some embodiments, deriving the q i q from the q i to q, and a step of deriving from q i q.

일부 실시예들에서, q로부터 qi를 도출하는 단계는 q보다 크지 않은 최고값 n/2m으로 qi를 설정함으로써, q로부터 qi를 도출하는 단계를 포함한다. 여기서, m은 미리 결정된 정수이고, n은 가변 정수이다.By setting the In some embodiments, deriving from q i q is the maximum value n / 2 m is not greater than q q i, and a step of deriving from q i q. Here, m is a predetermined integer and n is a variable integer.

일부 실시예들에서, 확률들을 계산하는 단계는 업데이트들의 각 i번째 업데이트에 대해, -(qlog2q + (1-q)log2(1-q))가

Figure 112019013036232-pat00002
보다 작지 않은 q의 다중 미리 정의된 값들 중 최대값으로 qi를 설정하는 단계를 포함한다. 여기서, q0은 1이다.In some embodiments, calculating the probabilities comprises, for each i-th update of updates, -(qlog 2 q + (1-q)log 2 (1-q))
Figure 112019013036232-pat00002
setting q i to the maximum of multiple predefined values of q not less than. Here, q0 is 1.

본 발명은 도면들과 함께 이하의 실시예들에 대한 상세한 설명으로부터 보다 충분히 이해될 것이다.BRIEF DESCRIPTION OF THE DRAWINGS The present invention will be more fully understood from the following detailed description of embodiments in conjunction with the drawings.

도 1은 본 발명의 일부 실시예들에 따른 암호키를 업데이팅하는 시스템의 개략도이다.
도 2는 본 발명의 일부 실시예들에 따른 암호키의 새로운 인스턴스의 생성의 개략도이다.
도 3은 본 발명의 일부 실시예들에 따른 랜덤 시퀀스를 생성하는 기법의 개략도이다.
도 4는 본 발명의 일부 실시예들에 따른 비트-생성 확률을 계산하는 기법의 개략도이다.
도 5는 본 발명의 일부 실시예들에 따른 암호키의 다중 업데이트들을 가능하게 하는 방법의 개략도이다.
1 is a schematic diagram of a system for updating an encryption key in accordance with some embodiments of the present invention.
2 is a schematic diagram of the creation of a new instance of a cryptographic key in accordance with some embodiments of the present invention.
3 is a schematic diagram of a technique for generating a random sequence in accordance with some embodiments of the present invention.
4 is a schematic diagram of a technique for calculating a bit-generation probability in accordance with some embodiments of the present invention.
5 is a schematic diagram of a method for enabling multiple updates of a cryptographic key in accordance with some embodiments of the present invention.

도입introduction

청구범위를 포함하는 본원의 컨텍스트에서, 암호키의 "업데이팅"은 (i) 키의 새로운 인스턴스의 계산, (ii) 메모리 내 키의 새로운 인스턴스와 함께 키의 현재 인스턴스의 대체, 또는 (iii) (i)과 (ii) 모두를 지칭할 수 있다.In the context of this application, including the claims, "updating" a cryptographic key means (i) computing a new instance of the key, (ii) replacing the current instance of the key with a new instance of the key in memory, or (iii) It can refer to both (i) and (ii).

본 명세서는 일반적으로, NVM에서, 프로그램된 셀들이 이진 값 0을 갖는 반면, 비 프로그램된 셀들이 이진 값 1을 갖는다고 가정한다. 그러나, 도 2를 참조하여 이하에서 명시적으로 언급되는 바와 같이, 여기서 기술된 기법들은 역방향 협정(reverse convention)을 이용하는 NVM들에서도 활용될 수 있다.This specification generally assumes that in NVM, programmed cells have a binary value of 0, whereas unprogrammed cells have a binary value of 1. However, as explicitly noted below with reference to FIG. 2 , the techniques described herein may also be utilized in NVMs using reverse convention.

개요summary

비-휘발성 메모리에서 암호키를 업데이팅하는 것은 어려울 수 있다. 예를 들어, 발명의 배경이 되는 기술에서 상술한 바와 같이, OTP NVM은 소거를 허용하지 않는다. 게다가, 소거를 허용하는 다른 타입들의 비-휘발성 메모리에 대해서도 업데이트 동작은 불안정할 수 있으며, 공격자는 키의 현재 값을 소거한 후 및 키의 새로운 값을 기록하기 전에 동작을 종료시킬 수 있으므로, 키를 알려진 비 프로그램된 상태로 "동결(freezing)"시킨다.Updating cryptographic keys in non-volatile memory can be difficult. For example, as described above in the background art, OTP NVM does not allow erasure. Moreover, the update operation can be unstable even for other types of non-volatile memory that allows erasure, and an attacker can terminate the operation after erasing the current value of the key and before writing the new value of the key, so the key "freezes" to a known unprogrammed state.

이러한 과제를 해결하기 위해, 본 발명의 실시예들은 임의의 (프로그램된) 0 비트들도 변경하지 않으면서, 키 내 (비 프로그램된) 1비트들만을 변경시킴으로써 키를 업데이트한다. 특히, 키의 현재 N-비트 인스턴스 Ki(이하, "Ki"로 나타낸다)가 주어지면, 비트들 Si의 N-비트 랜덤 시퀀스(N-bit updating sequence)(이하, "Si"로 나타낸다)가 생성되고, 그리고 키의 새로운 인스턴스 Ki+1(이하, "Ki+1"로 나타낸다)가 Ki 및 Si 간 비트와이즈 AND 연산 또는 임의의 등가 연산을 수행함으로써 계산된다. 키의 새로운 인스턴스가 현재 인스턴스에 대해 충분한 엔트로피를 갖음을 보장하기 위해(즉, Ki에 대한 지식이 있는 공격자가 Ki+1을 추측하는 데 충분한 어려움이 있음을 보장하기 위해), 키의 길이 N은 0 비트들 및 1 비트들이 모두 업데이트되어야 하는 경우보다 길어진다.To solve this problem, embodiments of the present invention update the key by changing only the (non-programmed) 1 bits in the key, without changing any (programmed) 0 bits. In particular, the current instance of the N- bit key K i (hereinafter, referred to as a "K i") is given to the ground, "S i" (hereinafter N- bit of bits S i-random sequence (N-bit sequence updating) ) is created, and a new instance K i+1 (hereinafter referred to as "K i+1 ") of the key is calculated by performing a bitwise AND operation or any equivalent operation between K i and S i. (To ensure that there is enough hard An attacker with knowledge of words, K i to assume the K i + 1), a new instance of the keys to ensure gateum enough entropy for the current instance, the length of the key N is longer than if both 0 bits and 1 bits have to be updated.

(다른 기술적인 규칙(alternate descriptive convention)를 이용하여, Ki 및 Ki+1은 동일한 키의 상이한 인스턴스들 또는 값들로서가 아니라, 상이한 키들로 지칭될 수 있음을 주목해야 한다. 그러므로, 예를 들어, Ki+1이 Ki를 대체하는 새로운 키라고 말할 수 있다.)(It should be noted that, using alternate descriptive convention, K i and K i+1 may be referred to as different keys, and not as different instances or values of the same key. For example, we can say that K i+1 is the new key that replaces K i ).

통상적으로, 가능한 많은 업데이트들을 허용하기 위해, Si는 1과 동일한 Si 내 각 비트에 대한 확률 qi(이하, "qi"로 나타낸다)가 0.5보다 큰 경우에 편향적으로 생성된다. (일부 케이스들에서, 키의 최종 업데이트를 위해, qi는 정확히 0.5일 수 있다.) 특히, 요구되는 엔트로피를 제공하는 최대 qi 값은 수치적으로 계산되고, 이러한 최대 값은 Si를 생성하는 데 이용된다.Typically, in order to allow a number of possible update, it S i is an (indicated below, "q i") probability q i for each bit within the same S i and 1 are generated by biased to greater than 0.5. (In some cases, for the last update of the key, q i can be exactly 0.5.) In particular, the maximum q i value giving the required entropy is calculated numerically, and this maximum value produces S i . used to do

일부 실시예들에서, 각 qi 값은 현재 키 Ki를 고려하여, i번째 업데이트 직전에 계산된다. 도입에 의해, Ki가 주어진 경우, Ki+1의 엔트로피는 N1i*H(qi)와 동일하며, N1i는 Ki 내 1 비트들의 개수이고, H(qi) = -(qilog2qi + (1-qi)log2(1-qi))이다. 이 엔트로피가 특정 임계치 E(이하, "E"로 나타낸다)보다 크거나 같기 위해서는, H(qi)는 E/N1i보다 크거나 같아야 한다. 그러므로, i번째 업데이트 전에, 양(quantity) E/N1i가 계산될 수 있다. 이어서, E/N1i가 1(H(q)의 최대 가능한 값)보다 작거나 같으면, 수학식 H(q) = E/N1i가 q에 대해 수치적으로 풀릴 수 있다. (이 솔루션이 계산되는 정확도는 이용된 수치 계산법(numerical method)과 그 계산법이 구현되는 방식에 의해 결정될 수 있음을 주목해야 한다. 이 수학식에 대한 해 qi* 또는 qi*보다 작은 가장 가까운 적합한 값은 qi의 값으로 이용될 수 있다.In some embodiments, each q i value is computed just before the i-th update, taking into account the current key K i . If by the introduction, K i is given, the entropy of the K i + 1 is N1 i * H (q i) with the same and, N1 i has K i is the number of my one bit, H (q i) = - (q i log 2 q i + (1-q i )log 2 (1-q i )). For this entropy to be greater than or equal to a certain threshold E (hereinafter referred to as "E"), H(q i ) must be greater than or equal to E/N1 i . Therefore, before the i-th update, the quantity E/N1 i can be calculated. Then, if E/N1i is less than or equal to 1 (the maximum possible value of H(q)), then the equation H(q) = E/N1 i can be solved numerically for q. (It should be noted that the solution accuracy to be calculated is determined by the manner in which the numerical calculation (numerical method) and the calculation method used to be implemented. The solution to the equation q i * or the q i * Small nearest than A suitable value can be used as the value of q i .

다른 실시예들에서, 키의 U 업데이트들을 수행하는 데 이용하기 위한 qi 값들 {q1, q2, ... qU}의 세트는 임의의 업데이트들을 수행하기 전에 미리 계산된다. 이 계산을 위해, N1i,

Figure 112019013036232-pat00003
(여기서, q0는 1),의 기대값은 Ki가 주어진 Ki+1의 엔트로피를 추정하는 데 이용되므로, 요구되는 엔트로피 E를 획득하기 위해 H(qi)은
Figure 112019013036232-pat00004
보다 크거나 같아야 한다. (이 양은
Figure 112019013036232-pat00005
(여기서,
Figure 112019013036232-pat00006
= E/N)로 보다 간결하게 작성될 수 있다.) qi 값들은
Figure 112019013036232-pat00007
이 1보다 큰 것으로 (i=U+1) 확인될 때까지 q1으로 시작하여 반복적으로 풀릴 수 있다. In other embodiments, the set of q i values {q 1 , q 2 , ... q U } for use in performing U updates of the key is precomputed prior to performing any updates. For this calculation, N1 i ,
Figure 112019013036232-pat00003
(where q 0 is 1), the expected value of K i is used to estimate the entropy of K i+1 given K i , so to obtain the required entropy E H(q i ) is
Figure 112019013036232-pat00004
must be greater than or equal to (This amount
Figure 112019013036232-pat00005
(here,
Figure 112019013036232-pat00006
= E/N) can be written more concisely.) q i values are
Figure 112019013036232-pat00007
It can be solved iteratively, starting with q 1 , until it is found to be greater than 1 (i=U+1).

통상적으로, Si 생성을 가능하게 하기 위해, qi는 미리 결정된 정수 m 및 가변 정수 n에 대한 n/2m의 형태이다. Si을 생성하기 위해, E 비트들을 포함하는 언바이어스 랜덤 시드 Xi(이하, "Xi"로 나타낸다)가 생성되거나 또는 획득된다. 그 후, Xi는 - 예를 들어, 해시 함수(hash function)을 이용하여 - Si의 N 비트들에 각각 대응하는 N개의 m-비트 시퀀스들로 확장된다. 이어서, 각 m-비트 시퀀스의 값은 n과 비교된다. 만약 값이 n보다 작으면 Si 내 대응하는 비트는 1로 설정되고, 그렇지 않으면 비트는 0으로 설정된다.Typically, to enable S i generation, q i is of the form n/2 m for a predetermined integer m and a variable integer n. To generate S i , an unbiased random seed X i (hereinafter referred to as “X i ”) comprising E bits is generated or obtained. Then, X i is expanded - for example using a hash function - into N m-bit sequences, each corresponding to the N bits of S i . The value of each m-bit sequence is then compared to n. If the bit value is less than n corresponding in S i is set to 1, otherwise the bit is set to zero.

시스템 설명System Description

먼저, 본 발명의 일부 실시예들에 따른 암호키를 업데이트하기 위한 시스템(20)의 개략도인 도 1을 참조한다. 도 1에 도시된 특정 실시예에서, N-비트 암호키 "K"는 인터넷(24)를 통해 ISP(Internet service provider) 및 IoT(Internet of Things) 장치(22) 간 통신을 암호화하는 데 이용된다.First, reference is made to FIG. 1, which is a schematic diagram of a system 20 for updating a cryptographic key in accordance with some embodiments of the present invention. 1 , the N-bit encryption key “K” is used to encrypt communication between an Internet service provider (ISP) and an Internet of Things (IoT) device 22 over the Internet 24 . .

일반적으로, 장치(22)가 동일한 ISP와 함께 유지되고, 키의 보안이 손상되지 않는다면, 키를 업데이트할 필요가 없다. 그러나, 장치(22)가 다른 ISP로 스위치하거나, 또는 키의 보안이 손상되는 경우, 키를 업데이트할 필요가 있을 수 있다.In general, if the device 22 is maintained with the same ISP and the security of the key is not compromised, there is no need to update the key. However, if the device 22 switches to a different ISP, or if the security of the key is compromised, it may be necessary to update the key.

예를 들어, 도 1은 장치(22)가 제1 ISP(26a)에 의해 서비스되었지만, 이후로는 제2 ISP(26b)에 의해 서비스되는 시나리오를 도시한다. 이 시나리오에서, 제2 ISP(26b)는 제1 ISP(26a)로부터 키 Ki의 현재 인스턴스를 요청한다. 이 요청에 응답하여, 제1 ISP(26a)는 제2 ISP(26b)로 인터넷(24)를 통해 Ki를 통신한다. 제1 ISP(26a)는 제2 ISP(26b)로 i의 값을 추가로 통신할 수 있다. 즉, 제1 ISP(26a)는 기 수행된 암호키에 대한 업데이트들의 개수를 특정할 수 있다. 이어서, 제2 ISP(26b)는 키의 새로운 인스턴스 Ki+1을 생성하고, 그 후, 예를 들어 장치(22)가 속하는 WiFi 네트워크를 서비스하는 라우터(28)를 통해, 장치(22)로 인터넷(24)을 통해 Ki+1을 통신한다. (통상적으로, 제2 ISP(26b)는 장치(22)로 Ki+1을 통신하기 전에, 예를 들어 Ki을 이용하여, Ki+1을 암호화한다.) 이어서, 장치(22) 및 제2 ISP(26b)는 통신을 암호화 및 복호화를 위해 Ki+1을 이용하여, 서로 통신을 시작할 수 있다.For example, FIG. 1 depicts a scenario in which device 22 is serviced by a first ISP 26a, but is subsequently serviced by a second ISP 26b. In this scenario, the second ISP 26b requests the current instance of the key K i from the first ISP 26a. In response to this request, the first ISP 26a communicates K i over the Internet 24 to the second ISP 26b. The first ISP 26a may further communicate the value of i to the second ISP 26b. That is, the first ISP 26a may specify the number of updates to the previously performed encryption key. The second ISP 26b then creates a new instance K i+1 of the key, and then to the device 22 , for example via the router 28 serving the WiFi network to which the device 22 belongs. It communicates K i+1 over the Internet 24 . (Typically, the 2 ISP (26b) by using a, for example, K i before communicating the K i + 1 to the device 22, and encrypts the K i + 1.) Subsequently, the device 22 and the The second ISPs 26b may start communication with each other by using K i+1 for encryption and decryption of communication.

제2 ISP(26b)는 프로세서 및 예를 들어 네트워크 인터페이스 컨트롤러(network interface controller; NIC)를 포함한 네트워크 인터페이스(43)를 포함한다. 프로세서(30)는 네트워크 인터페이스(32)를 통해 (다른 장치들과 마찬가지로) 제1 ISP(26a) 및 장치(22)와의 통신을 교환하도록 구성된다. 프로세서(30)은 장치(22)와의 통신을 암호화하는 데 이용되는 암호키를 업데이트하도록 더 구성된다. 예를 들어, 상술한 바와 같이, 프로세서(30)는 장치(22)와의 통신을 개시할 때 키를 업데이트할 수 있다. 선택적으로 또는 추가적으로, 프로세서(30)는 프로세서(30) (또는 외부 사이버 보안 시스템)에 응답하여 키가 공격자에 의해 도난 당했다는 것을 식별하는 키를 업데이트할 수 있다.The second ISP 26b includes a processor and a network interface 43 including, for example, a network interface controller (NIC). The processor 30 is configured to exchange communications with the device 22 and the first ISP 26a (as well as other devices) via the network interface 32 . The processor 30 is further configured to update the encryption key used to encrypt communications with the device 22 . For example, as described above, the processor 30 may update the key when initiating communication with the device 22 . Optionally or additionally, the processor 30 may be responsive to the processor 30 (or an external cybersecurity system) to update the key identifying that the key has been stolen by an attacker.

유사하게, 장치(22)는 프로세서(34) 및 통신 인터페이스(36)를 포함한다. 프로세서(34)는 통신 인터페이스(36)를 통해 (다른 장치들과 마찬가지로) 제2 ISP(26b)와의 통신을 교환하도록 구성된다. 예를 들어, 통신 인터페이스(36)는 프로세서(34)가 라우터(28)를 통해 통신을 교환하는 데 이용할 수 있는 WiFi 카드를 포함할 수 있다.Similarly, device 22 includes a processor 34 and a communication interface 36 . The processor 34 is configured to exchange communication with the second ISP 26b (as well as other devices) via the communication interface 36 . For example, communication interface 36 may include a WiFi card that processor 34 may use to exchange communications via router 28 .

장치(22)는 프로세서(34)가 암호키를 저장하는 메모리(38)를 더 포함한다. 따라서, 예를 들어, 메모리(38)는 초기에 Ki를 유지할 수 있다. 제2 ISP(26b)로부터 Ki+1을 수신한 후, 프로세서(34)는 Ki를 Ki+1로 덮어쓸 수 있다.Device 22 further includes memory 38 in which processor 34 stores cryptographic keys. Thus, for example, memory 38 may initially hold K i . After receiving K i+1 from the second ISP 26b , the processor 34 may overwrite K i with K i+1 .

통상적으로, 메모리(38)는 비-휘발성이다. 예를 들어, 메모리(38)는 OTP NVM, 플래시 메모리 또는 EEPROM(electrically erasable programmable read-only memory)일 수 있다. 그러나, 유리하게도, 도 2를 참조하여 이하에서 더 설명되는 바와 같이, 암호키를 업데이트하는 것은 메모리(38) 내 임의의 메모리 셀들을 디프로그래밍하는 것을 필요로 하지 않는다.Typically, memory 38 is non-volatile. For example, the memory 38 may be an OTP NVM, flash memory, or electrically erasable programmable read-only memory (EEPROM). Advantageously, however, updating the cryptographic key does not require deprogramming any memory cells in memory 38, as further described below with reference to FIG. 2 .

일부 실시예들에서, 도 5를 참조하여 후술되는 바와 같이, 제2 ISP(26b)는 서버(40)에 의해 제공되는 데이터 시트에 포함된 파라미터(구체적으로, 비트-생성 확률 qi)를 이용하여 Ki+1을 생성한다. 예를 들어, 네트워크 인터페이스(44)를 이용하여, 서버(40)는 웹사이트에 데이터 시트를 공개할 수 있다. Ki+1을 생성하기 직전에, 제2 ISP(26b)는 웹사이트로부터 데이터 시트를 검색하고, Ki+1을 생성하는 데 필요한 파라미터를 데이터 시트에서 룩업(look up)할 수 있다. 또는, Ki+1의 생성 이전 임의의 시간에서, 서버(40)는 제2 ISP(26b)로 데이터 시트(예를 들어, 인터넷(24)을 통해)를 통신할 수 있고, 그 후 제2 ISP(26b)는 휘발성 또는 비-휘발성 메모리(도면 미도시)에 데이터 시트를 저장할 수 있다. 이어서, Ki+1을 생성하기 직전에, 제2 ISP(26b)는 메모리로부터 데이터 시트를 검색하고, 그 후 관련 파라미터를 룩업할 수 있다.In some embodiments, as described below with reference to FIG. 5 , the second ISP 26b uses a parameter (specifically, the bit-generation probability q i ) included in the data sheet provided by the server 40 . to generate K i + 1 . For example, using the network interface 44 , the server 40 may publish a data sheet on a website. Immediately before generating K i+1 , the second ISP 26b may retrieve the data sheet from the website and look up in the data sheet the parameters needed to generate K i+1 . Alternatively, at any time prior to the generation of K i+1 , the server 40 may communicate the data sheet (eg, via the Internet 24 ) to the second ISP 26b , after which the second ISP 26b may store data sheets in volatile or non-volatile memory (not shown). Then, just before generating K i+1 , the second ISP 26b may retrieve the data sheet from memory and then look up the relevant parameters.

다른 실시예들에서, 장치(22)의 프로세서(34)는 Ki+1을 생성하고, 그 후 제2 ISP(26b)로 Ki+1를 통신한다. 이러한 실시예들에서, 프로세서(34)는 서버(40)로부터 전술한 데이터 시트를 수신할 수 있다. 또 다른 실시예에서, 서버(40) 또는 임의의 다른 적합한 서드파티(third party)는 Ki+1을 생성하고, 그 후 Ki+1을 장치(22) 및 제2 ISP(26b) 모두에 통신할 수 있다.In other embodiments, the processor 34 of the device 22 will generate a K i + 1, and thereafter communicating the K i + 1 to the ISP 2 (26b). In such embodiments, the processor 34 may receive the data sheet described above from the server 40 . In another embodiment, server 40 or any other suitable third party generates K i+1 and then sends K i+1 to both device 22 and second ISP 26b . can communicate.

서버(40)는 프로세서(42) 및 예를 들어 NIC를 포함하는 네트워크 인터페이스(44)를 포함한다. 프로세서(42)는 네트워크 인터페이스(44)를 통해 제2 ISP(26b) (및/또는 장치(22))와의 통신을 교환하도록 구성된다.The server 40 includes a processor 42 and a network interface 44 including, for example, a NIC. The processor 42 is configured to exchange communication with the second ISP 26b (and/or the device 22 ) via the network interface 44 .

시스템(20)의 컴포넌트들 및 구성은 단지 예로서 제공된다는 것이 강조된다. 일반적으로, 여기서 기술된 다양한 기술들 각각은 임의의 적합한 시스템에 속하는 임의의 적합한 프로세서에 의해 실행될 수 있다. 예를 들어, 여기서 설명된 기술들은 모바일 폰에 속하는 eSIM(embedded subscriber identification module) 또는 eSE(embedded secure element)에 저장된 암호키를 업데이트하는 데 이용될 수 있다. 예를 들어, 모바일 폰에 대한 서비스 제공자는 Ki+1을 생성하고, Ki+1을 모바일 폰에 통신하고, 그 후 모바일 폰은 Ki+1을 폰에 속한 비-휘발성 메모리에 저장할 수 있다.It is emphasized that the components and configuration of system 20 are provided by way of example only. In general, each of the various techniques described herein may be executed by any suitable processor belonging to any suitable system. For example, the techniques described herein may be used to update a cryptographic key stored in an embedded subscriber identification module (eSIM) or embedded secure element (eSE) belonging to a mobile phone. For example, the service provider for the mobile phone generates a K i + 1, and communicates the K i + 1 to the mobile phone, then the mobile phone is non-belonging to the phone the K i + 1 - can be stored in volatile memory, have.

일반적으로, 여기서 설명된 프로세서들 각각은 단일 프로세서로서 또는 협동 네트워크형 또는 클러스터형 프로세스들 세트로서 임베디드될 수 있다. 일부 실시예들에서, 여기서 설명된 프로세서들 중 적어도 하나의 기능은 예를 들어 하나 이상의 ASICs(Application-Specific Integrated Circuits) 또는 FPGAs(Field-Programmable Gate Arrays)을 이용하여 하드웨어로만 구현된다. 다른 실시예들에서, 여기서 설명된 프로세스들 각각의 기능은 적어도 부분적으로 소프트웨어로 구현된다. 예를 들어, 일부 실시예들에서, 여기서 설명된 프로세서들 각각은 적어도 CPU(central processing unit) 및 RAM(random access memory)을 포함하는 프로그램된 디지털 컴퓨팅 장치로서 임베디드된다. 소프트웨어 프로그램 및/또는 데이터를 포함하는 프로그램 코드는 CPU에 의한 실행 및 처리를 위해 RAM에 로드된다. 프로그램 코드 및/또는 데이터는 예를 들어 네트워크를 통해 전자 형태로 프로세서에 다운로드될 수 있다. 선택적으로 또는 추가적으로, 프로그램 코드 및/또는 데이터는 자기, 광학 또는 전자 메모리와 같은 비-일시적 유형의 매체(non-transitory tangible media)에 제공되거나, 및/또는 저장될 수 있다. 이러한 프로그램 코드 및/또는 데이터는 프로세서에 제공될 때 여기서 설명된 태스크(task)를 수행하도록 구성된 머신(machine) 또는 특수-목적 컴퓨터(special-purpose computer)를 생성한다.In general, each of the processors described herein may be embedded as a single processor or as a set of cooperating networked or clustered processes. In some embodiments, the functionality of at least one of the processors described herein is implemented solely in hardware, for example using one or more Application-Specific Integrated Circuits (ASICs) or Field-Programmable Gate Arrays (FPGAs). In other embodiments, the functionality of each of the processes described herein is implemented, at least in part, in software. For example, in some embodiments, each of the processors described herein is embedded as a programmed digital computing device that includes at least a central processing unit (CPU) and random access memory (RAM). Program code, including software programs and/or data, is loaded into RAM for execution and processing by the CPU. The program code and/or data may be downloaded to the processor in electronic form, for example via a network. Alternatively or additionally, program code and/or data may be provided and/or stored in non-transitory tangible media, such as magnetic, optical or electronic memory. Such program code and/or data, when provided to a processor, creates a machine or special-purpose computer configured to perform the tasks described herein.

키의 새로운 인스턴스 생성create a new instance of the key

이제 본 발명의 일부 실시예들에 따른, 암호키의 새로운 인스턴스의 생성의 개략도인 도 2를 참조한다.Reference is now made to FIG. 2 , which is a schematic diagram of the creation of a new instance of a cryptographic key, in accordance with some embodiments of the present invention.

도 2는 도 1에 도시된 시나리오에 관한 것으로, 프로세서(30)(또는, 전술한 바와 같이, 임의의 다른 프로세서)가 키의 현재 인스턴스 Ki가 주어지면, N-비트 암호키의 새로운 인스턴스 Ki+1를 생성한다. 도 1을 참조하여 개요에서 설명한 바와 같이, NVM에서 Ki+1로 Ki를 대체하는 것이 임의의 메모리 셀들을 디프로그래밍할 필요가 없도록 Ki+1이 생성된다. 그럼에도 불구하고, 도 4를 참조하여 아래에서 상세하게 설명되는 바와 같이, Ki에 대한 Ki+1의 예상 엔트로피는 미리 정의된 임계치 엔트로피 E보다 작지 않다. (암호키 내 비트들의 개수 N보다 작은 임계치 E는 예를 들어 시스템(20)의 보안 설계자(security architect)에 의해 정의될 수 있다.)FIG. 2 relates to the scenario shown in FIG. 1 , in which processor 30 (or any other processor, as described above) , given a current instance K i of a key, creates a new instance K of an N-bit cryptographic key. create i+1 The K i + 1 is generated as also described in outline with reference to Figure 1, to replace the K i to K i + 1 in the NVM to eliminate the need to de-programming of any memory cell. Nevertheless, with reference to Figure 4 as will be described in detail below, the expected entropy of the K i + 1 for the K i is not less than a predefined threshold, entropy E. (The threshold E less than the number N of bits in the encryption key may be defined by, for example, a security architect of the system 20 .)

특히, Ki+1을 생성하기 위해, 프로세서는 먼저 랜덤 N-비트 업데이팅 시퀀스 Si를 생성한다. 다음으로, 프로세서는 이진 값 1을 가지지 않는 Ki 내 임의의 비트들을 무효화하지 않으면서, Si 내 대응하는 위치의 비트와 상이하고, 이진 값 1을 갖는 Ki 내 각 비트를 무효화함으로써, Ki+1을 생성한다. 도 2는 각각 상향 화살표들로 표시된 2개의 네거티브 비트들(negated bits)을 나타낸다.In particular, to generate K i+1 , the processor first generates a random N-bit updating sequence S i . Next, the processor by invalidating a K i within each bit having a bit different from, the binary value 1 at the location without invalidate any bit in K i does not have a binary value of 1, S i within the corresponding, K create i+1 2 shows two negative bits, each indicated by upward arrows.

통상적으로, 도 2에 도시된 바와 같이, 프로세서는 Ki 및 Si 간 비트와이즈 AND 연산을 수행함으로써 Ki+1을 생성한다. 그러므로, Ki 내 일부 1 비트들은 Ki+1 내 0 비트들로 대체되지만, Ki 내 0 비트들은 1 비트들로 대체되지 않고, 이로써 키는 어떤 셀들도 디프로그램할 필요 없이 NVM에서 업데이트될 수 있다.Typically, as shown in FIG. 2 , the processor generates K i+1 by performing a bitwise AND operation between K i and S i . Thus, K i within some one bits, but replaced with K i + 1 in bit 0, K i within 0 bits are not replaced by one bit, so that keys are updated in NVM without having to also de-program certain cells can

프로세서는 1인 확률 qi로 Si 내 각 비트를 생성하고, qi는 통상적으로 0.5보다 크다. (개요에서 언급한 것처럼, 일부 경우에서, qi는 키의 최종 업데이트에 대해 정확히 0.5일 수 있다.) 일부 실시예들에서, qi는 서버(40)에 의해, 도 1을 참조하여 전술한 바와 같이, 제공된 데이터 시트에 특정된다. 이러한 데이터 시트는 예를 들어 E의 하나 이상의 값들, N의 하나 이상의 값들 및 i의 다양한 값들에 대한 qi를 특정하는 룩업 테이블을 포함할 수 있다. 다른 실시예들에서, 프로세서는 qi를 계산한다. qi의 계산에 관한 더 상세한 내용들은 도 4를 참조하여 아래에서 설명된다.The processor generating a respective bit i within S 1 was the probability q and i, q i is typically greater than 0.5. (As mentioned in the overview, in some cases, q i may be exactly 0.5 for the last update of the key.) In some embodiments, q i is determined by server 40 , as described above with reference to FIG. 1 . As specified in the data sheet provided. Such a data sheet may include, for example, a lookup table specifying q i for one or more values of E, one or more values of N, and various values of i. In other embodiments, the processor computes q i . Further details regarding the calculation of q i are described below with reference to FIG. 4 .

비 프로그램된 메모리 셀들이 이진 값 0을 갖는 역 NVM 규칙(reverse NVM convention)에 대해서, 프로세서는 0인 확률 qi로 Si 내 각 비트를 생성한다. 그 후, 프로세서는 예를 들어 Ki 및 Si 간 비트와이즈 OR 연산을 수행함으로써, Si 내 대응하는 위치의 비트와 상이한 Ki 내 각 0 비트를 무효화한다.For the unprogrammed memory cells have a binary value inverse NVM rules having 0 (NVM reverse convention), the processor generates each bit in S i to zero probability q i. After that, the processor, for example by performing a bit-wise OR operation between K i and S i, K i invalidates the bit which is different in each of the 0 bit position S i in response.

랜덤 시퀀스 생성Random Sequence Generation

이제 본 발명의 일부 실시예들에 따른, 랜덤 시퀀스 Si를 생성하는 기술의 개략도인 도 3을 참조한다. 이 기술은 qi가 미리 결정된 정수 m 및 가변 정수 n에 대해 n/2m과 동일하다고 가정한다. (예를 들어, m은 10일 수 있으므로, qi = n/1024)Reference is now made to FIG. 3 , which is a schematic diagram of a technique for generating a random sequence S i , in accordance with some embodiments of the present invention. This technique assumes that q i is equal to n/2 m for a predetermined integer m and a variable integer n. (e.g. m can be 10, so q i = n/1024)

Si를 생성하기 위해, 프로세서는 먼저 외부 소스로부터 E 비트들을 갖는 언바이어스 랜덤 시드 Xi를 생성하거나 획득한다. (Xi 내 각 비트가 1인 0.5의 확률을 가지므로, Xi는 언바이어스된다.) 프로세서는 qi = n/2m을 더 룩업하거나 계산한다. 이어서, 프로세서는 Si의 비트들에 각각 대응하는 N개의 m-비트 시퀀스들 {Zij} (여기서, j = 1…N)로 Xi를 확장한다. 예를 들어, 프로세서는 N개의 상이한 각각의 카운터들 c와 함께 Xi에 해시 함수 f(X, c)를 적용함으로써, 예를 들어, Si의 제1 비트에 대응하는 제1 m-비트 시퀀스 Zi1가 f(Xi, 1)과 동일하고, Si의 제2 비트에 대응하는 제2 m-비트 시퀀스 Zi2가 f(Xi, 2)과 동일하다. 적합한 해시 함수들의 예시들은 SHA-2, SHA-256, SHA-512, 및 SHA-3과 같은 SHA(secure hash algorithm) 함수들을 포함한다.To generate S i , the processor first generates or obtains an unbiased random seed X i with E bits from an external source. (X i, so that each bit of a probability of 1 in 0.5, X i is biased language.) The processor further look-up the q i = n / 2 m or calculated. Then, the processor expands X i with N m-bit sequences {Zij} (where j = 1...N), each corresponding to bits of S i . For example, the processor applies a hash function f(X, c) to X i with N different respective counters c, eg, a first m-bit sequence corresponding to the first bit of S i . Z i1 is equal to f(X i , 1 ), and a second m-bit sequence Z i2 corresponding to the second bit of S i is equal to f(X i , 2). Examples of suitable hash functions include secure hash algorithm (SHA) functions such as SHA-2, SHA-256, SHA-512, and SHA-3.

다음으로, Si 내 각 비트에 대해, 프로세서는 대응하는 m-비트 시퀀스의 값이 n보다 작다는 것에 응답하여 비트를 1로 설정한다. 예를 들어, 만약 Zi1이 n보다 작으면, Si 내 제1 비트가 1로 설정되고, 그렇지 않으면, 비트가 0으로 설정된다.Next, for each bit within the S i, the processor sets a bit to 1 in response to the value of the bit sequence corresponding m- smaller than n. For example, if Z i1 is less than n, the first bit in S i is set to 1, otherwise the bit is set to 0.

도 3에 도시된 특정 기술에도 불구하고, Si는 Si 내 각 비트가 1인 확률 qi를 갖는다면 (qi가 n/2m 형태가 아닐지라도) 임의의 다른 적합한 기술을 이용하여 생성될 수 있다는 것을 주목해야 한다. Despite the particular technique illustrated in FIG. 3, S i is generated using the respective bits within the S i 1 probability q i, if having any other suitable technique (q i is n / 2 if not an m shape) It should be noted that it can be

단일 업데이트를 위한 비트-생성 확률 계산Calculate bit-generation probability for single update

이제 본 발명의 일부 실시예들에 따라 비트-생성 확률 qi를 계산하기 위한 기술의 개략도인 도 4를 참조한다.Reference is now made to FIG. 4 , which is a schematic diagram of a technique for calculating a bit-generation probability q i in accordance with some embodiments of the present invention.

일부 실시예들에서, Ki+1을 생성하는 프로세서는 Si를 생성하기 전에 qi를 계산한다. 통상적으로, 이러한 실시예들에서, 프로세서는 먼저 Ki 내 1 비트들의 개수 N1i를 식별한다. 다음으로, 도 4에 도시된 바와 같이, 프로세서는 q에 대해 H(q) = -(qlog2q + (1-q)log2(1-q)) = E/N1i를 풀고, 이 솔루션은 노테이션 qi *로 도 4에 표시된다. (대부분의 케이스에서, 수학식에 대해 2개의 솔루션이 있으며, 프로세서는 2개의 솔루션들 중에서 더 큰 솔루션을 선택한다.) 그 후, 프로세서는 qi *로부터 qi를 도출한다. 예를 들어, 프로세서는 qi를 qi *로 설정하거나 qi *보다 작거나 같은 최고값 n/2m으로 설정할 수 있다. (다시 말해, 프로세서는 n/2m이 qi *보다 작거나 같은 최고 정수 n를 찾는다.)In some embodiments, the processor generating K i+1 computes q i before generating S i . Typically, in such embodiments, the processor first identifies the number N1 i of 1 bits in K i . Next, as shown in Figure 4, the processor solves for q H(q) = -(qlog 2 q + (1-q)log 2 (1-q)) = E/N1 i , and this solution is indicated in FIG. 4 with the notation q i * . (In most cases, there are two solutions for the equation, the processor selects the larger of the two solutions from the solution.) After that, the processor derives from q i q i *. For example, the processor may set q i to q i * or to the highest value n/2 m less than or equal to q i * . (In other words, the processor finds the highest integer n where n/2 m is less than or equal to q i *.)

개요에서 상술한 바와 같이, Ki가 주어지면 Ki+1의 엔트로피는 N1i*H(qi)와 동일하다. 그러므로, qi를 qi * 또는 qi *보다 작은 가장 가까운 적합한 값으로 설정함으로써, 프로세서는 적어도 E의 엔트로피를 제공하는 qi의 가장 큰 적합한 값을 효과적으로 선택한다.As described above in summary, given the K i entropy of K i + 1 is equal to the N1 i * H (q i) . Therefore, by setting q i to the nearest suitable value less than q i * or q i * , the processor effectively chooses the largest suitable value of q i giving at least an entropy of E .

qi *를 푸는 대신에, 프로세서는 q의 다중 값들을 정의하고, 그 후 qi를 H(q)가 E/N1i보다 작지 않은 이러한 값들 중 최대값으로 설정한다. 예를 들어, 프로세서는 값들의 어레이 [2m-1/2m, (2m-1+1)/2m, … (2m-1)/2m]를 생성하고, 그 후 qi를 H(q)가 E/N1i보다 작지 않은 이러한 값들의 최대값으로 설정한다.Instead of solving for q i * , the processor defines multiple values of q and then sets q i to the maximum of these values for which H(q) is not less than E/N1 i . For example, the processor may generate an array of values [2 m-1 /2 m , (2 m-1 +1)/2 m , . . . (2 m −1)/2 m ], and then set q i to the maximum of these values for which H(q) is not less than E/N1 i .

E/N1i가 1보다 큰 경우, 프로세서는 요구되는 엔트로피 E가 획득될 수 없기 때문에 Ki+1를 생성하지 않는다. 이 경우, 프로세서는 예를 들어 장치(22) 내 메모리(38)가 대체되거나 소거될 필요가 있음을 나타내는 적절한 에러 메시지를 생성할 수 있다.If E/N1 i is greater than 1, the processor does not generate K i+1 because the required entropy E cannot be obtained. In this case, the processor may generate an appropriate error message indicating that, for example, the memory 38 in the device 22 needs to be replaced or erased.

다중 업데이트들에 대한 비트-생성 확률들 미리 계산Precompute bit-generation probabilities for multiple updates

일부 실시예들에서, Ki+1를 생성하는 프로세서는 qi를 계산하기 위해 N1i를 이용하지 않는다. 오히려, 프로세서는 각 업데이트에서, N1i의 예상 값 N1i *에 기초하여 키의 다중 업데이트들에 대한 qi 값들의 시퀀스를 미리 계산한다. 또는, 서버(30)(도 1)는 N 및 E 값들의 하나 이상의 쌍들에 대한 qi 값들의 각각의 시퀀스들을 특정하는 데이터 시트를 생성할 수 있다. 이어서, 도 1을 참조하여 전술한 바와 같이, 서버(40)는 도 2 및 도 3을 참조하여 전술한 방식으로 암호키를 업데이트하기 원하는 (제2 ISP(26b)와 같이) 임의의 파티(any party)로 데이터 시트를 제공할 수 있다.In some embodiments, the processor generating K i+1 does not use N1 i to compute q i . Rather, the processor computes the sequence of q i values for multiple updates of keys on the basis of each update, N1 i * i estimated value of N1 in advance. Alternatively, server 30 ( FIG. 1 ) may generate a data sheet specifying respective sequences of q i values for one or more pairs of N and E values. Then, as described above with reference to Fig. 1, the server 40 (such as the second ISP 26b) that wants to update the encryption key in the manner described above with reference to Figs. party) can provide a data sheet.

이와 관련하여, 이제 본 발명의 일부 실시예들에 따라 암호키의 다중 업데이트들을 가능하게 하는 방법(46)에 대한 플로우 다이어그램인 도 5를 참조한다. 특히, 방법(46)에서, 하나 이상의 상이한 (N,E) 쌍들(즉, (i) 암호키 내 비트들의 개수 N 및 (ii) 엔트로피 임계치 E로 구성되는 값들의 하나 이상의 상이한 쌍들)에 대한 {qi} 시퀀스들을 특정하는 데이터 시트는 생성되고, 제공된다. 방법(46)은 전술한 바와 같이 통상적으로 서버(40)의 프로세서(42)에 의해 수행된다. 또는, 방법(46)의 단계들의 서브세트(예컨대, 단일 (N,E) 쌍에 대한 {qi}의 계산)는 키를 업데이트시키는 제2 ISP(26b)의 프로세서(30)와 같은 프로세서에 의해 수행될 수 있다.In this regard, reference is now made to FIG. 5, which is a flow diagram of a method 46 for enabling multiple updates of a cryptographic key in accordance with some embodiments of the present invention. In particular, in method 46, { A data sheet specifying the q i } sequences is generated and provided. Method 46 is typically performed by processor 42 of server 40 as described above. Alternatively, a subset of the steps of method 46 (eg, computation of {q i } for a single (N,E) pair) is performed on a processor such as processor 30 of second ISP 26b that updates the key. can be performed by

방법(46)은 프로세서(42)가 비트-생성 확률들의 시퀀스가 계산될 다음 미리 정의된 (N,E) 쌍을 선택하는 선택 단계(47)로 시작한다. (각 (N,E) 쌍은 예를 들어 보안 전문가에 의해 프로세서(42)로 제공될 수 있다.) 다음으로, 프로세서는 키의 U 업데이트들에 대해, 상이한 각각의 확률들 {qi} (여기서, i = 1…U)을 계산한다. 각 qi 값이 계산되어, 키의 새로운 인스턴스가 도 2 및 도 3을 참조하여 전술한 바와 같이 생성되면, 키 (Ki)의 현재 인스턴스에 대한 키 (Ki+1)의 새로운 인스턴스의 예상 인트로피는 E보다 작지 않다. 다시 말해, qi는 도 4를 참조하여 전술한 바와 같이 일반적으로 계산되고, Ki (H(q)*N1i *)에 대한 Ki+1의 예상 엔트로피는 (미리 알 수 없는) 실제 엔트로피 대신 이용된다.The method 46 begins with a selection step 47 in which the processor 42 selects the next predefined (N,E) pair for which the sequence of bit-generation probabilities is to be computed. (Each (N,E) pair may, for example, be provided to the processor 42 by the security expert.) Next, the processor, for U updates of the key, gives different respective probabilities {q i } ( Here, i = 1…U) is calculated. Key prediction of the new instance of the (K i + 1) for the current instance of the computed each q i value, when a new instance of a key, see Fig. 2 and 3 to generate, as described above, the key (K i) The intropy is not less than E. That is, q i is generally calculated as described above with reference to FIG 4, K i expected entropy of K i + 1 for the (H (q) * N1 i *) is the actual entropy (unknown in advance) is used instead.

보다 구체적으로, 선택 단계(47)에 이어서, 프로세서는 초기화 단계(48)에서 q0을 1로 설정하고 인덱스 i를 1로 초기화한다. 이어서, 프로세서는 키의 새로운 인스턴스의 예상 엔트로피가 E보다 작아질 때까지 qi를 반복적으로 계산하고, 인덱스를 증가시킨다. qi를 계산하기 위해, 프로세서는 먼저 계산 단계(50)에서

Figure 112019013036232-pat00008
를 계산한다. 다음으로, 제1 검사 단계(52)에서, 프로세서는 E/N1i *이 1보다 작거나 같은지 여부를 체크한다. 만약 그렇다면, 프로세서는 설정 단계(54)에서 qi를 H(q)가 E/N1i *보다 작지 않은 q의 최대 적합한 값으로 설정한다. 예를 들어, 도 4를 참조하여 전술한 바와 같이, 프로세서는 qi를 (H(qi *) = E/N1i *인) qi * 또는 qi *보다 낮은 가장 가까운 적합한 값으로 설정할 수 있다. 이어서, 증가 단계(56)에서, 프로세서는 인덱스 i를 증가시킨다.More specifically, following the selection step 47 , the processor sets q 0 to 1 and initializes the index i to 1 in an initialization step 48 . Then, the processor iteratively computes q i until the expected entropy of a new instance of the key is less than E and increments the index. To compute q i , the processor first in a computation step 50
Figure 112019013036232-pat00008
to calculate Next, in a first check step 52 , the processor checks whether E/N1 i * is less than or equal to one. If so, the processor sets q i to the maximum suitable value of q where H(q) is not less than E/N1 i * in a setting step 54 . For example, as described above with reference to Figure 4, the processor can set q i to the nearest suitable value lower than q i * or q i * (where H(q i * ) = E/N1 i * ). have. Then, in an increment step 56, the processor increments the index i.

제1 검사 단계(52)에서, E/N1i *가 1보다 큰 것으로 확인되면, 프로세서는 현재 인덱스 i에 대해 qi를 계산하지 않는다. 오히려, 현재까지 계산된 시퀀스 {q1, q2, … qU} (여기서, (현재 인덱스보다 작은) U가 키에 허용되는 업데이트의 최대 개수인)는 데이터-시트-업데이팅 단계(58)에서 데이터 시트에 (N,E)로 추가된다.In the first check step 52 , if E/N1 i * is found to be greater than 1, the processor does not calculate q i for the current index i. Rather, the sequence calculated to date {q 1 , q 2 , ... q U } (where U (less than the current index) is the maximum number of updates allowed for the key) is appended to the datasheet as (N,E) in the data-sheet-updating step 58 .

데이터-시트-업데이팅 단계(58)에 이어서, 프로세서는 제2 검사 단계(60)에서 (N,E) 쌍들이 더 남아 있는지 여부를 체크한다. 만약 그렇다면, 프로세서는 선택 단계(47)로 리턴하고, 선택된 (N,E) 쌍에 대해 {qi}를 계산하고, 그 후 데이터 시트를 업데이트한다. 그렇지 않으면, 프로세서는 제공 단계(62)에서 암호키를 업데이트하는 데 이용하기 위해 완성된 데이터 시트(completed data sheet)를 제공한다. 예를 들어, 도 1을 참조하여 전술한 바와 같이, 프로세서는 웹사이트에 데이터 시트를 업로드하거나, 다른 장치로 데이터 시트를 통신할 수 있다.Following the data-sheet-updating step 58 , the processor checks whether there are more (N,E) pairs remaining in a second check step 60 . If so, the processor returns to selection step 47 , computes {q i } for the selected (N,E) pair, and then updates the data sheet. Otherwise, the processor provides a completed data sheet for use in updating the encryption key in the provision step 62 . For example, as described above with reference to FIG. 1 , the processor may upload the data sheet to a website or communicate the data sheet to another device.

도 2를 참조하여 전술한 바와 같이, 각 qi 값은 통상적으로 0.5보다 크다. (비록, 일부 케이스들에서는, qU는 정확히 0.5일 수 있다.) 도 4에 나타난 H(q)의 그래프를 관찰함으로써 알 수 있듯이, E/N1i *이 i에 따라 증가하면, i가 증가함에 따라 qi *(및 따라서, qi)의 값들은 감소한다. 예를 들어, E=80 및 N=256에 대해, 방법(46)은 11개의 qi * 값들의 감소하는 시퀀스(0.943, 0.938, 0.933, 0.926, 0.918, 0.907, 0.893, 0.872, 0.841, 0.785 및 0.623)를 리턴한다. (상기 의미는 요구되는 엔트로피가 80 비트들을 초과하지 않는다면 256-비트 키가 여기에 설명된 기술을 이용하여 11번 업데이트될 수 있다는 것이다.)As discussed above with reference to FIG. 2 , each q i value is typically greater than 0.5. (Although, in some cases, q U can be exactly 0.5.) As can be seen by observing the graph of H(q) shown in Fig. 4, if E/N1 i * increases with i, i increases. The values of q i * (and thus q i ) decrease as For example, for E=80 and N=256, method 46 calculates a decreasing sequence of 11 q i * values (0.943, 0.938, 0.933, 0.926, 0.918, 0.907, 0.893, 0.872, 0.841, 0.785 and 0.623) is returned. (The implication is that a 256-bit key can be updated 11 times using the technique described here, provided the required entropy does not exceed 80 bits.)

데이터 시트가 주어지면, 제2 ISP(26b)의 프로세서(30)와 같이, 키의 새로운 인스턴스를 생성하는 프로세서는 N, E 및 i로 주어진 적절한 qi 값을 룩업한다. (도 1을 참조하여 전술한 바와 같이, 제1 ISP(26a)는 제2 ISP(26b)로 i를 특정할 수 있다.) 이어서, 도 2 및 도 3에서 전술한 바와 같이, 프로세서는 qi를 이용하여 업데이팅 시퀀스 Si를 생성하고, 그 후 Si를 이용하여 Ki로부터 Ki+1을 생성한다.Given the data sheet, the processor generating a new instance of the key, such as processor 30 of the second ISP 26b, looks up the appropriate q i value given by N, E and i. (As described above with reference to FIG. 1 , the first ISP 26a may specify i as the second ISP 26b.) Then, as described above with reference to FIGS. 2 and 3 , the processor generates q i using the generated updating the sequence S i, and then using the S i to generate a K i + 1 from the K i.

Claims (15)

비 프로그램된 셀들이 특정 이진 값을 갖는, 디바이스에 속하는 비-휘발성 메모리(NVM; non-volatile memory)에 저장하기 위한 N-비트 암호키의 새로운 인스턴스를 생성하는 장치에 있어서,
네트워크 인터페이스; 및
프로세서
를 포함하고,
상기 프로세서는
랜덤 N-비트 업데이팅 시퀀스를 생성하고,
상기 특정 이진 값을 갖지 않는 상기 N-비트 암호키의 현재 인스턴스 내 어떤 비트들도 무효화하지 않으면서, 상기 랜덤 N-비트 업데이팅 시퀀스 내 대응하는 위치의 비트와 상이하고 상기 특정 이진 값을 갖는 상기 N-비트 암호키의 상기 현재 인스턴스 내 각 비트를 무효화함으로써, 상기 N-비트 암호키의 상기 새로운 인스턴스를 생성하고,
상기 N-비트 암호키의 상기 새로운 인스턴스를 생성한 후, 상기 네트워크 인터페이스를 이용하여, 상기 비-휘발성 메모리(NVM) 내 저장을 위해 상기 디바이스로 상기 N-비트 암호키의 새로운 인스턴스를 통신하고,
상기 프로세서는
0.5보다 큰 상기 특정 이진 값을 가질 확률로 상기 랜덤 N-비트 업데이팅 시퀀스 내 각 비트를 생성하도록 구성되고,
상기 확률은 미리 결정된 정수 m 및 가변 정수 n에 대해 n/2m과 동일하고,
상기 프로세서는
E 비트들을 갖는 언바이어스 랜덤 시드를 상기 랜덤 N-비트 업데이팅 시퀀스의 비트들에 각각 대응하는 N개의 m-비트 시퀀스들로 확장하고, 상기 랜덤 N-비트 업데이팅 시퀀스 내 각 비트에 대해, 상기 대응하는 m-비트 시퀀스의 값이 n보다 작은 것에 응답하여 상기 특정 이진 값으로 상기 비트를 설정함으로써, 상기 랜덤 N-비트 업데이팅 시퀀스를 생성하도록 구성되는,
장치.
An apparatus for generating a new instance of an N-bit cryptographic key for storage in a non-volatile memory (NVM) belonging to a device, wherein non-programmed cells have a specific binary value, the device comprising:
network interface; and
processor
including,
the processor
generate a random N-bit updating sequence,
the bit different from the corresponding position in the random N-bit updating sequence and having the specific binary value, without invalidating any bits in the current instance of the N-bit cryptographic key that do not have the specific binary value. generating the new instance of the N-bit encryption key by invalidating each bit in the current instance of the N-bit encryption key;
after generating the new instance of the N-bit encryption key, communicate, using the network interface, the new instance of the N-bit encryption key to the device for storage in the non-volatile memory (NVM);
the processor
generate each bit in the random N-bit updating sequence with a probability of having the specified binary value greater than 0.5;
the probability is equal to n/2 m for a predetermined integer m and a variable integer n,
the processor
Extend an unbiased random seed with E bits into N m-bit sequences respectively corresponding to bits of the random N-bit updating sequence, for each bit in the random N-bit updating sequence, generate the random N-bit updating sequence by setting the bit to the particular binary value in response to a value of a corresponding m-bit sequence being less than n;
Device.
제1항에 있어서,
상기 프로세서는
상기 N-비트 암호키의 상기 현재 인스턴스 및 상기 랜덤 N-비트 업데이팅 시퀀스 간 비트와이즈 AND 연산을 수행함으로써, 상기 랜덤 N-비트 업데이팅 시퀀스 내 상기 대응하는 위치의 비트와 상이하고, 상기 특정 이진 값을 갖는 상기 N-비트 암호키의 상기 현재 인스턴스 내 각 비트를 무효화하도록 구성되는,
장치.
According to claim 1,
the processor
by performing a bitwise AND operation between the current instance of the N-bit cryptographic key and the random N-bit updating sequence, which is different from the bit at the corresponding position in the random N-bit updating sequence, and the specific binary configured to invalidate each bit in the current instance of the N-bit cryptographic key having a value,
Device.
삭제delete 삭제delete N-비트 암호키를 저장하도록 구성된, 복수의 단일-비트 셀들을 포함하는 비-휘발성 메모리(NVM) -상기 셀들의 비 프로그램된 하나는 특정 이진 값을 가짐-; 및
프로세서
를 포함하고,
상기 프로세서는
랜덤 N-비트 업데이팅 시퀀스를 생성하고,
상기 특정 이진 값을 갖지 않는 상기 N-비트 암호키의 현재 인스턴스 내 어떤 비트들도 무효화하지 않으면서, 상기 랜덤 N-비트 업데이팅 시퀀스 내 대응하는 위치의 비트와 상이하고 상기 특정 이진 값을 갖는 상기 N-비트 암호키의 상기 현재 인스턴스 내 각 비트를 무효화함으로써, 상기 N-비트 암호키의 새로운 인스턴스를 생성하며,
상기 N-비트 암호키의 상기 새로운 인스턴스를 생성한 후, 상기 NVM 내 상기 N-비트 암호키의 상기 새로운 인스턴스로 상기 N-비트 암호키의 상기 현재 인스턴스를 대체하고,
상기 프로세서는
0.5보다 큰 상기 특정 이진 값을 가질 확률로 상기 랜덤 N-비트 업데이팅 시퀀스 내 각 비트를 생성하도록 구성되고,
상기 확률은 미리 결정된 정수 m 및 가변 정수 n에 대해 n/2m과 동일하고,
상기 프로세서는
E 비트들을 갖는 언바이어스 랜덤 시드를 상기 랜덤 N-비트 업데이팅 시퀀스의 비트들에 각각 대응하는 N개의 m-비트 시퀀스들로 확장하고, 상기 랜덤 N-비트 업데이팅 시퀀스 내 각 비트에 대해, 상기 대응하는 m-비트 시퀀스의 값이 n보다 작은 것에 응답하여 상기 특정 이진 값으로 상기 비트를 설정함으로써, 상기 랜덤 N-비트 업데이팅 시퀀스를 생성하도록 구성되는,
장치.
a non-volatile memory (NVM) comprising a plurality of single-bit cells, configured to store an N-bit cryptographic key, wherein a non-programmed one of the cells has a specific binary value; and
processor
including,
the processor
generate a random N-bit updating sequence,
the bit different from the corresponding position in the random N-bit updating sequence and having the specific binary value, without invalidating any bits in the current instance of the N-bit cryptographic key that do not have the specific binary value. generating a new instance of the N-bit cryptographic key by invalidating each bit in the current instance of the N-bit cryptographic key;
after generating the new instance of the N-bit encryption key, replacing the current instance of the N-bit encryption key with the new instance of the N-bit encryption key in the NVM;
the processor
generate each bit in the random N-bit updating sequence with a probability of having the specified binary value greater than 0.5;
the probability is equal to n/2 m for a predetermined integer m and a variable integer n,
the processor
Extend an unbiased random seed with E bits into N m-bit sequences each corresponding to bits of the random N-bit updating sequence, for each bit in the random N-bit updating sequence, generate the random N-bit updating sequence by setting the bit to the particular binary value in response to a value of a corresponding m-bit sequence being less than n;
Device.
제5항에 있어서,
상기 프로세서는
상기 특정 이진 값을 가질 특정 확률로 상기 랜덤 N-비트 업데이팅 시퀀스 내 각 비트를 생성하도록 구성되고,
상기 프로세서는
상기 N-비트 암호키의 상기 현재 인스턴스에 대한 상기 N-비트 암호키의 상기 새로운 인스턴스의 예상 엔트로피가 N보다 작은 미리 결정된 임계치 E보다 작지 않도록, 상기 랜덤 N-비트 업데이팅 시퀀스를 생성하기에 앞서, 상기 특정 확률을 계산하도록 더 구성되는,
장치.
6. The method of claim 5,
the processor
and generate each bit in the random N-bit updating sequence with a specific probability to have the specific binary value;
the processor
prior to generating the random N-bit updating sequence such that the expected entropy of the new instance of the N-bit encryption key relative to the current instance of the N-bit encryption key is not less than a predetermined threshold E less than N , further configured to calculate the specific probability,
Device.
제6항에 있어서,
상기 특정 확률은 0.5보다 큰,
장치.
7. The method of claim 6,
wherein the specific probability is greater than 0.5;
Device.
비 프로그램된 셀들이 특정 이진 값을 갖는, 비-휘발성 메모리(NVM)에 저장하기 위한 N-비트 암호키의 새로운 인스턴스를 생성하는 방법에 있어서,
랜덤 N-비트 업데이팅 시퀀스를 생성하는 단계; 및
상기 특정 이진 값을 갖지 않는 상기 N-비트 암호키의 현재 인스턴스 내 어떤 비트들도 무효화하지 않으면서, 상기 랜덤 N-비트 업데이팅 시퀀스 내 대응하는 위치의 비트와 상이하고 상기 특정 이진 값을 갖는 상기 N-비트 암호키의 상기 현재 인스턴스 내 각 비트를 무효화함으로써, 상기 N-비트 암호키의 상기 새로운 인스턴스를 생성하는 단계
를 포함하고,
상기 랜덤 N-비트 업데이팅 시퀀스를 생성하는 단계는
0.5보다 큰 상기 특정 이진 값을 가질 확률로 상기 랜덤 N-비트 업데이팅 시퀀스 내 각 비트를 생성하는 단계
를 포함하고,
상기 확률은
미리 결정된 정수 m 및 가변 정수 n에 대해 n/2m과 동일하며,
상기 랜덤 N-비트 업데이팅 시퀀스를 생성하는 단계는
E 비트들을 갖는 언바이어스 랜덤 시드를 상기 랜덤 N-비트 업데이팅 시퀀스의 비트들에 각각 대응하는 N개의 M-비트 시퀀스들로 확장하는 단계; 및
상기 랜덤 N-비트 업데이팅 시퀀스 내 각 비트에 대해, 상기 대응하는 m-비트 시퀀스의 값이 n보다 작은 것에 응답하여 상기 특정 이진 값으로 상기 비트를 설정하는 단계
를 포함하는, 방법.
A method for generating a new instance of an N-bit cryptographic key for storage in a non-volatile memory (NVM), wherein unprogrammed cells have a specific binary value, the method comprising:
generating a random N-bit updating sequence; and
the bit different from the corresponding position in the random N-bit updating sequence and having the specific binary value, without invalidating any bits in the current instance of the N-bit cryptographic key that do not have the specific binary value. generating the new instance of the N-bit encryption key by invalidating each bit in the current instance of the N-bit encryption key.
including,
The step of generating the random N-bit updating sequence comprises:
generating each bit in the random N-bit updating sequence with a probability of having the specified binary value greater than 0.5;
including,
the probability is
equal to n/2 m for a predetermined integer m and a variable integer n,
The step of generating the random N-bit updating sequence comprises:
extending an unbiased random seed with E bits into N M-bit sequences each corresponding to bits of the random N-bit updating sequence; and
for each bit in the random N-bit updating sequence, setting the bit to the specific binary value in response to the value of the corresponding m-bit sequence being less than n;
A method comprising
제8항에 있어서,
상기 무효화 단계는
상기 N-비트 암호키의 상기 현재 인스턴스 및 상기 랜덤 N-비트 업데이팅 시퀀스 간 비트와이즈 AND 연산을 수행하는 단계
를 포함하는,
방법.
9. The method of claim 8,
The invalidation step is
performing a bitwise AND operation between the current instance of the N-bit encryption key and the random N-bit updating sequence;
containing,
Way.
삭제delete 제8항에 있어서,
상기 랜덤 N-비트 업데이팅 시퀀스를 생성하기에 앞서,
상기 특정 이진 값을 갖는 상기 N-비트 암호키의 상기 현재 인스턴스 내 비트들의 넘버 N1을 식별하는 단계
q에 대해 -(qlog2q + (1-q)log2(1-q)) = E/N1를 푸는 단계 - E는 미리 정의된 엔트로피 임계치 -; 및
q로부터 상기 확률을 도출하는 단계
를 더 포함하는, 방법.
9. The method of claim 8,
Prior to generating the random N-bit updating sequence,
identifying the number N1 of bits in the current instance of the N-bit cryptographic key having the particular binary value;
Solving -(qlog 2 q + (1-q)log 2 (1-q)) = E/N1 for q - E is the predefined entropy threshold -; and
deriving the probability from q
A method further comprising:
제11항에 있어서,
q로부터 상기 확률을 도출하는 단계는
상기 확률을 q로 설정함으로써, q로부터 상기 확률을 도출하는 단계
를 포함하는,
방법.
12. The method of claim 11,
The step of deriving the probability from q is
deriving the probability from q by setting the probability to q;
containing,
Way.
제11항에 있어서,
q로부터 상기 확률을 도출하는 단계는
상기 확률을 q보다 크지 않은 최고값 n/2m으로 설정함으로써, q로부터 상기 확률을 도출하는 단계 -m은 미리 결정된 정수이고, n은 가변 정수임 -
를 포함하는,
방법.
12. The method of claim 11,
The step of deriving the probability from q is
deriving the probability from q by setting the probability to the highest value n/2 m not greater than q, where m is a predetermined integer and n is a variable integer;
containing,
Way.
삭제delete 비 프로그램된 셀들이 특정 이진 값을 갖는, 비-휘발성 메모리(NVM) 내 N-비트 암호키의 다중 업데이트들을 가능하게 하는 방법에 있어서,
상기 업데이트들 중 각 i번째 업데이트에 대해, 상기 N-비트 암호키의 현재 인스턴스에 대한 상기 N-비트 암호키의 새로운 인스턴스의 예상 엔트로피가 N보다 작은 미리 정의된 임계치 E보다 작지 않도록, 상기 업데이트들에 대해 상이한 각각의 확률 {qi}(i = 1…U)를 계산하는 단계; 및
상기 확률들을 계산한 후, 상기 업데이트들을 수행하는 데 이용될 상기 확률들을 제공하는 단계
를 포함하고,
상기 N-비트 암호키의 상기 새로운 인스턴스는
상기 특정 이진 값을 갖지 않는 상기 N-비트 암호키의 상기 현재 인스턴스 내 어떤 비트들도 무효화하지 않으면서, N-비트 랜덤 업데이팅 시퀀스 내 대응하는 위치의 비트와 상이하고 상기 특정 이진 값을 갖는 상기 N-비트 암호키의 상기 현재 인스턴스 내 각 비트를 무효화함으로써, 생성되고,
상기 N-비트 랜덤 업데이팅 시퀀스 내 각 비트는
상기 특정 이진 값을 갖는 확률 qi로 생성되는
방법.
A method for enabling multiple updates of an N-bit cryptographic key in a non-volatile memory (NVM), wherein non-programmed cells have a specific binary value, the method comprising:
such that for each i-th of the updates, the expected entropy of a new instance of the N-bit cryptographic key relative to the current instance of the N-bit cryptographic key is not less than a predefined threshold E less than N; calculating each different probability {q i } (i = 1...U) for and
after calculating the probabilities, providing the probabilities to be used in performing the updates;
including,
The new instance of the N-bit encryption key is
The specific binary value and different from the bit in the corresponding position in the N-bit random updating sequence, without invalidating any bits in the current instance of the N-bit cryptographic key that do not have the specific binary value. generated by invalidating each bit in the current instance of an N-bit cryptographic key,
Each bit in the N-bit random updating sequence is
which is generated with the probability q i with the particular binary value
Way.
KR1020190014578A 2019-02-07 2019-02-07 Updating cryptographic keys stored in non-volatile memory KR102313584B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190014578A KR102313584B1 (en) 2019-02-07 2019-02-07 Updating cryptographic keys stored in non-volatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190014578A KR102313584B1 (en) 2019-02-07 2019-02-07 Updating cryptographic keys stored in non-volatile memory

Publications (2)

Publication Number Publication Date
KR20200097381A KR20200097381A (en) 2020-08-19
KR102313584B1 true KR102313584B1 (en) 2021-10-18

Family

ID=72291594

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190014578A KR102313584B1 (en) 2019-02-07 2019-02-07 Updating cryptographic keys stored in non-volatile memory

Country Status (1)

Country Link
KR (1) KR102313584B1 (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5355554B2 (en) * 2007-05-22 2013-11-27 イルデト・コーポレート・ビー・ヴイ Updating encryption key data
KR101650130B1 (en) * 2010-05-14 2016-08-24 삼성전자주식회사 Storage device comprising a non-volatile memory device and copy-back method thereof
KR102011043B1 (en) * 2017-06-13 2019-08-14 한국과학기술연구원 Method for digital signature based on quantum key distribution and system performing the same

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Binary entropy function, WIKIPEDIA(2018.10.09.) 1부.*
Xuanxuan Wang, et al "Secret key generation using entropy-constrained-like quantization scheme." 2016 23rd International Conference on Telecommunications (ICT). IEEE(2016.)

Also Published As

Publication number Publication date
KR20200097381A (en) 2020-08-19

Similar Documents

Publication Publication Date Title
CN104978167B (en) Randomizer and method for generating random number
US9122888B2 (en) System and method to create resilient site master-key for automated access
US10353638B2 (en) Security method and apparatus to prevent replay of external memory data to integrated circuits having only one-time programmable non-volatile memory
US10754970B2 (en) Data masking
US20030138105A1 (en) Storing keys in a cryptology device
EP3242437A1 (en) Light-weight key update mechanism with blacklisting based on secret sharing algorithm in wireless sensor networks
US20160006570A1 (en) Generating a key derived from a cryptographic key using a physically unclonable function
CN105007157B (en) Generating and managing multiple base keys based on device-generated keys
US8584216B1 (en) Systems and methods for efficiently deploying updates within a cryptographic-key management system
WO2019212772A1 (en) Key generation and secure storage in a noisy environment
US10735190B1 (en) Persistent TPM-based identifier and key pair
US9830479B2 (en) Key storage and revocation in a secure memory system
CN105760781A (en) Storage method, restoration method and operation method of ordered and derivable large-data files
US11818249B2 (en) Nodes and methods of operating the same
US10951403B2 (en) Updating cryptographic keys stored in non-volatile memory
KR102313584B1 (en) Updating cryptographic keys stored in non-volatile memory
CN111666558B (en) Key rotation method, device, computer equipment and storage medium
EP3681100B1 (en) Updating cryptographic keys stored in non-volatile memory
JP6874042B2 (en) Updating the encryption key stored in non-volatile memory
US11917059B2 (en) Batch transfer of control of memory devices over computer networks
US11489669B1 (en) Methods, systems and computer program products for rotating cryptographic keys for encrypted files
US11783070B2 (en) Managing sensitive information using a trusted platform module
CN117478437B (en) Data sharing method, device, equipment and storage medium
US20230370446A1 (en) Track Activities of components in Endpoints having Secure Memory Devices via Identity Validation
US20240080206A1 (en) Automatic Root Key and Certificate Update During Firmware Update Procedure

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant