WO2014112720A1 - Method for protecting binary data in non-volatile memory and apparatus therefor - Google Patents

Method for protecting binary data in non-volatile memory and apparatus therefor Download PDF

Info

Publication number
WO2014112720A1
WO2014112720A1 PCT/KR2013/011504 KR2013011504W WO2014112720A1 WO 2014112720 A1 WO2014112720 A1 WO 2014112720A1 KR 2013011504 W KR2013011504 W KR 2013011504W WO 2014112720 A1 WO2014112720 A1 WO 2014112720A1
Authority
WO
WIPO (PCT)
Prior art keywords
program code
data
pattern
information
binary
Prior art date
Application number
PCT/KR2013/011504
Other languages
French (fr)
Korean (ko)
Inventor
박대진
이광희
Original Assignee
어보브반도체 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어보브반도체 주식회사 filed Critical 어보브반도체 주식회사
Priority to CN201380070696.9A priority Critical patent/CN104919468A/en
Priority to JP2015553646A priority patent/JP2016508629A/en
Publication of WO2014112720A1 publication Critical patent/WO2014112720A1/en
Priority to US14/802,620 priority patent/US20150324613A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the present invention relates to the protection of binary data in non-volatile memory.
  • program code to be stored in non-volatile memory includes a binary pattern of program code, unique information related to non-volatile memory, and further user information and
  • the present invention relates to a method and apparatus for protecting binary data of a nonvolatile memory capable of improving the level of protection for binary data of the nonvolatile memory by encrypting using time / date information or the like.
  • Flash memory is nonvolatile, which means that flash memory stores information on a semiconductor in a manner that does not require power to maintain the information on the chip. Flash memory stores information in an array of transistors called "cells", each of which stores one or more bits of information. Memory cells are based on Floating-Gate Avalanche-Injection Metal Oxide Semiconductor (FAMOS) transistors, which are essentially complementary metals (CMOSs) with additional conductors suspended between the gate and source / drain terminals. Oxide Semiconductor) FET (Field Effect Transistor). Current flash memory devices consist of two basic array architectures. Names indicating the type of NOR flash and NAND flash logic are used in the storage cell array.
  • FMOS Floating-Gate Avalanche-Injection Metal Oxide Semiconductor
  • Flash cells are similar to standard MOSFET transistors except that they have two gates instead of just one gate.
  • One gate is the same as a control gate (CG) in other MOS transistors, and the other is a floating gate (FG) insulated all around by an oxide layer. Since the FG is insulated by its oxide layer, any electrons placed on it are trapped there and thus store information.
  • CG control gate
  • FG floating gate
  • Non-volatile memory such as the above-described flash memory stores a program unique to the manufacturer and is used for specific control purposes, and in order to prevent illegal leakage of such a program, a password cannot be used without knowing the password. .
  • the conventional non-volatile memory read protection circuit combines the data of the encryption unit having a specific program and the data of the non-volatile memory cell unit with exclusive NOR (XNOR, exclusive NOR) to prevent another person from illegally using the program contents of the nonvolatile memory.
  • exclusive NOR exclusive NOR
  • the data obtained by combining the data of the unprogrammed cell of the memory cell with the data of the cipher part is the same as the data of the cipher part.
  • negative data is easily exposed so that programs stored in nonvolatile memory are illegally leaked.
  • Korean Patent No. 10-0258861 has proposed a read protection circuit of a nonvolatile memory.
  • the prior art is a read-protection circuit of a nonvolatile memory, which is adapted to change the address signal applied according to a scramble weight bit and the address of an actual memory cell so that others cannot read the program of the nonvolatile memory.
  • the present invention relates to preventing the disclosure of a password to prevent illegal leakage of a program.
  • the prior art is to prevent the exposure of the password, and if the same program is encrypted and stored in the nonvolatile memory, since the data stored in the encrypted are all the same, repeated analysis of the encrypted pattern to infer the encryption algorithm and password Therefore, there is a need for a configuration that can prevent the leakage of a program by encrypting using a different encryption key when encrypting the same program.
  • the present invention is derived to solve the problems of the prior art as described above, when storing the same program code in a nonvolatile memory, the binary pattern of the program code, the unique information associated with the nonvolatile memory, and further user information and time / date information, etc. It is an object of the present invention to provide a method and apparatus for protecting binary data of a nonvolatile memory, which can improve the level of protection for binary data of the nonvolatile memory by encrypting the data using the encryption method.
  • the present invention also provides a method for protecting binary data of a nonvolatile memory capable of adaptively encrypting program codes for each memory without using complicated encryption hardware by encrypting and storing program codes differently for each nonvolatile memory. It is an object to provide the device.
  • a binary data protection method of a nonvolatile memory comprises the steps of receiving a program code; Analyzing the received program code to detect a binary pattern of binary data constituting the program code; Generating unique pattern information corresponding to the binary pattern based on the detected binary pattern; Encrypting the program code by using the generated unique pattern information; And storing the encrypted program code in a memory.
  • the encrypting may further encrypt the program code by considering at least one of manufacturing unique information of the memory and chip unique information of the memory, and further considering the user information and at least one of time or date information. You can also encrypt the code.
  • the method according to the present invention comprises the steps of decrypting the encrypted program code stored in the memory using the unique pattern information; And reading the decrypted program code.
  • the method according to the present invention further comprises storing the generated unique pattern information in a predetermined storage area, wherein the decrypting comprises the encrypted program code using the stored unique pattern information. Can be deciphered.
  • the method according to the invention further comprises the step of dividing the received data area of the program code into a plurality of areas, wherein the detecting step is performed by the data of each of the divided plurality of areas. Detecting a data pattern, and generating the data pattern generates unique data pattern information of data for each of the plurality of areas based on the detected data pattern, and encrypting the generated data pattern Data for each of the plurality of areas may be encrypted using the information.
  • the method according to the invention further comprises the step of dividing the received data area of the program code into a plurality of areas, wherein the detecting step is performed by the data of each of the divided plurality of areas.
  • the data pattern may be detected, and the binary pattern may be detected using the detected data pattern.
  • An apparatus for protecting binary data of a nonvolatile memory may include a receiver configured to receive a program code; A detector configured to analyze the received program code to detect a binary pattern of binary data constituting the program code; A generation unit configured to generate unique pattern information corresponding to the binary pattern based on the detected binary pattern; An encryption unit for encrypting the program code using the generated unique pattern information as a key value; And a storage unit for storing the encrypted program code in a memory.
  • the program code when the same program code is stored for each nonvolatile memory, the program code is adaptively encrypted and stored, thereby improving the level of protection for binary data of the nonvolatile memory.
  • the present invention encrypts the program code by using the binary pattern of the program code to be stored, the unique information related to the non-volatile memory, and further user information and time / date information, and the encrypted program code to the non-volatile memory In addition, it can improve the level of protection for binary data in nonvolatile memory.
  • FIG. 2 illustrates a configuration of an embodiment of the detector illustrated in FIG. 1.
  • FIG. 4 is a flowchart illustrating an embodiment of operation S360 shown in FIG. 3.
  • FIG. 5 is a flowchart illustrating another exemplary operation for step S360 illustrated in FIG. 3.
  • FIG. 6 shows an operation flowchart of an embodiment of step S330 shown in FIG. 3.
  • FIG. 7 shows an operational flowchart of an embodiment of a method of reading the program code stored by FIG. 3.
  • FIG. 8 illustrates an example of a process of generating unique pattern information from binary data of a program code.
  • FIG. 9 illustrates an example of a process of encrypting binary data of a program code.
  • the encrypting may further encrypt the program code by considering at least one of manufacturing unique information of the memory and chip unique information of the memory, and further considering the user information and at least one of time or date information. You can also encrypt the code.
  • the method according to the present invention comprises the steps of decrypting the encrypted program code stored in the memory using the unique pattern information; And reading the decrypted program code.
  • the method according to the present invention further comprises storing the generated unique pattern information in a predetermined storage area, wherein the decrypting comprises the encrypted program code using the stored unique pattern information. Can be deciphered.
  • the method according to the invention further comprises the step of dividing the received data area of the program code into a plurality of areas, wherein the detecting step is performed by the data of each of the divided plurality of areas. Detecting a data pattern, and generating the data pattern generates unique data pattern information of data for each of the plurality of areas based on the detected data pattern, and encrypting the generated data pattern Data for each of the plurality of areas may be encrypted using the information.
  • the method according to the invention further comprises the step of dividing the received data area of the program code into a plurality of areas, wherein the detecting step is performed by the data of each of the divided plurality of areas.
  • the data pattern may be detected, and the binary pattern may be detected using the detected data pattern.
  • An apparatus for protecting binary data of a nonvolatile memory may include a receiver configured to receive a program code; A detector configured to analyze the received program code to detect a binary pattern of binary data constituting the program code; A generation unit configured to generate unique pattern information corresponding to the binary pattern based on the detected binary pattern; An encryption unit for encrypting the program code using the generated unique pattern information as a key value; And a storage unit for storing the encrypted program code in a memory.
  • FIG. 1 illustrates a configuration of an apparatus for protecting binary data of a nonvolatile memory according to an embodiment of the present invention.
  • the receiver 110 receives a program code to be stored in the nonvolatile memory 160 from the outside.
  • the receiving unit 110 may receive the program code through an apparatus or a program capable of generating the program code, and also through an external storage means storing the program code.
  • the detector 120 analyzes the program code received by the receiver 110 to detect a binary pattern of binary data constituting the program code.
  • the detector 120 may detect the binary pattern based on the pattern of the bit value '1' of the program code, or may detect the binary pattern based on the pattern of the bit value '0'.
  • the detector 120 may divide the binary data area for the program code into a plurality of areas, and then detect a data pattern for each of the divided data areas, and further, the data for each of the detected plurality of data areas.
  • the binary pattern may be detected using the pattern. In FIG. 2, a plurality of areas are divided to detect a plurality of data patterns.
  • FIG. 2 illustrates a configuration of an embodiment of the detector illustrated in FIG. 1.
  • the detector 120 includes a divider 210 and an area pattern detector 220.
  • the divider 210 divides a data area of a program code, that is, a data area of binary data into a plurality of areas.
  • the dividing unit 210 may divide the binary data into a predetermined number of data areas, or may divide the binary data of the program code into units of a predetermined area.
  • the area pattern detection unit 220 detects a plurality of data patterns for a plurality of data areas of the program code.
  • the area pattern detector 220 may detect the data pattern of the data area in consideration of the pattern of the neighboring data area.
  • the region pattern detector 220 may detect data patterns for each of the plurality of data regions using a predetermined pattern detection value.
  • the generation unit 130 generates unique pattern information corresponding to the binary pattern based on the binary pattern detected by the detection unit 120.
  • the generation unit 130 may generate the unique pattern information corresponding to the binary pattern detected by the detection unit 120 using a data table in which the unique pattern information corresponding to the binary pattern information is stored in advance.
  • the unique pattern information corresponding to the binary pattern may be generated using a predetermined function using information as a variable.
  • the generation unit 130 may generate unique pattern information using Secure Hash Algorithm (SHA-1), and as shown in FIG. 8, CRC (Cyclic Redundancy) for inputting unique pattern information of binary data.
  • Check) -16 may be used to generate 16-bit unique pattern information (fingerprint [15: 0]) corresponding to the pattern of binary data. That is, the unique pattern information generated by the generation unit is information uniquely generated according to the binary data of the program code, and may have information such as 8 bits, 16 bits, 32 bits, etc. according to the method of generating the unique pattern information.
  • the generation unit 130 may generate unique pattern information of the program code by using the plurality of unique data pattern information.
  • the pattern information storage unit 170 stores the unique pattern information generated by the generation unit 130 or the unique data pattern information for each data area.
  • the information stored in the pattern information storage unit 170 may be used when the decryption unit 180 decrypts the data stored in the nonvolatile memory 160, that is, the encrypted program code.
  • the pattern information storage unit 170 may store the unique pattern information or the unique data pattern information in a portion of the nonvolatile memory 160 or may store the unique pattern information or the unique data pattern information in a storage unit provided separately. .
  • Encryption unit 140 is a configuration for encrypting the binary data of the program code using the unique pattern information generated by the generation unit 130, the algorithm used for encryption may be a predetermined encryption algorithm, a plurality of algorithms May be a randomly selected encryption algorithm. That is, the encryption unit 140 may generate an encryption key using the unique pattern information, and encrypt the program code using the generated encryption key.
  • the encryption unit 140 may encrypt the program code by using an exclusive logical OR combination of each bit value of the generated encryption key and the bit value of the program code.
  • the encryption unit 140 may encrypt each of the plurality of data areas using the unique data pattern information of each of the plurality of divided data areas. .
  • the encryption unit 140 may encrypt the program code by further considering at least one of manufacturing unique information of the nonvolatile memory and chip specific information of the nonvolatile memory as well as the unique pattern information.
  • the encryption unit 140 receives a seed unique value (Fab ID) of the nonvolatile memory and chip unique information (Chip ID) of the nonvolatile memory from the seed generator. [15: 0]) and outputs the value (K [7: 0]) for the exclusive logical sum (XOR) combination between each bit of the generated seed value, and the first 8 bits of the binary data of the original program code.
  • Fab ID seed unique value
  • Chip ID chip unique information
  • the seed generator illustrated in FIG. 9 may generate seed values S [15: 0] of 16 bits at a time using manufacturing unique information (Fab ID) and chip unique information (Chip ID), but is not limited thereto.
  • An 8-bit seed value (S [7: 0]) is generated using the manufacturing unique information (Fab ID)
  • an 8-bit seed value (S [15: 8]) is generated using the chip unique information (Chip ID). You can also create each.
  • the apparatus even if the program code is the same, since at least one of the manufacturing-specific information and the chip-specific information of the nonvolatile memory is different, the program code encrypted and stored in the nonvolatile memory are all different As a result, a unique encryption result appears for the same program code. As a result, even if the encrypted program code stored in the nonvolatile memory is analyzed repeatedly, it is difficult to obtain an encryption method because it is encrypted by different encryption results, and thus the program code can be prevented from leaking.
  • the encryption unit 140 may encrypt the program code by considering not only the unique pattern information but also at least one of user information and time or date information using the apparatus of the present invention.
  • the encryption unit 140 may encrypt the program code in consideration of both manufacturing specific information of the nonvolatile memory, chip specific information of the nonvolatile memory, user information, and time or date information.
  • the information used when encrypting the program code in the encryption unit 140 should be stored in a predetermined storage area so that the decryption unit 180 can use it when decrypting the program code.
  • the storage unit 150 stores the program code encrypted by the encryption unit 140 in the nonvolatile memory 160.
  • the storage unit 150 may store the encrypted data for each of the plurality of data areas in the corresponding area of the nonvolatile memory 160.
  • the decryption unit 180 is a means for decrypting the program code stored in the nonvolatile memory 160, that is, the encrypted program code.
  • Information used when storing the program code for example, unique pattern information of the program code, and nonvolatile memory
  • the program code stored in the nonvolatile memory 160 is decoded by using the manufacturing peculiar information, the chip peculiar information of the nonvolatile memory, the user information and the time or date information.
  • the decryption unit 180 uses the decryption algorithm corresponding to the encryption algorithm and the inherent pattern information of the program code stored in the pattern information storage unit 170 used when encrypting the program code in the encryption unit 140.
  • the program code stored in the volatile memory 160 may be decrypted.
  • the encryption unit 140 encrypts a plurality of data areas, respectively, when encrypting the program code
  • the decryption unit 180 uses the plurality of unique data pattern information stored in the pattern information storage unit 170.
  • the data of the program code for each of the data areas can be decoded.
  • the reading unit 190 reads the program code decrypted by the decryption unit 180.
  • the apparatus according to the present invention uses program pattern information using the unique pattern information of the binary data for the program code, the manufacturing unique information of the nonvolatile memory, the chip unique information of the nonvolatile memory, the user information and the time or date information, and the like. Since the same program code is encrypted in the nonvolatile memory, the program code is encrypted differently for each nonvolatile memory. Thus, the level of protection for binary data in the nonvolatile memory can be improved without using complicated encryption hardware.
  • FIG. 3 is a flowchart illustrating a method of protecting binary data of a nonvolatile memory according to an embodiment of the present invention, and is a flowchart of the operation of the apparatus illustrated in FIG. 1.
  • the method according to the present invention receives a program code to be stored in a nonvolatile memory, and analyzes the received program code to detect binary patterns of binary data included in the program code (S310 to S330).
  • step S320 may analyze the program code using the bit values '0' and '1' of the binary data
  • step S330 may be a bit value of the binary data obtained through program code analysis, for example, a bit value.
  • the binary pattern can be detected using '1' or '0'.
  • step S330 When the binary pattern for the program code is detected in step S330, unique pattern information corresponding to the binary pattern is generated based on the detected binary pattern (S340).
  • the unique pattern information may be m bits of information corresponding to the binary pattern, and the unique pattern information may include a function that uses a data table or binary pattern information for the prestored binary pattern and the unique pattern information as variables. It may be generated or obtained through, or may be obtained through an algorithm for generating an encryption key.
  • the unique pattern information generated in step S340 is stored in a predetermined storage area, and the program code is encrypted using the generated unique pattern information (S350 and S360).
  • an encryption key may be generated using the unique pattern information, and the program code may be encrypted using the generated encryption key.
  • the unique pattern information itself may be used as the encryption key.
  • the program code encrypted by the unique pattern information is stored in the nonvolatile memory (S370).
  • the program code may be encrypted using additional information as well as unique pattern information of the program code. 4 and 5 will be described as an example.
  • FIG. 4 is a flowchart illustrating an embodiment of operation S360 shown in FIG. 3.
  • the manufacturing unique information and the chip unique information of the nonvolatile memory in which the program code is to be stored are confirmed (S410).
  • the manufacturing unique information of the nonvolatile memory may be a manufacturing number of the corresponding nonvolatile memory, which may be a FAB (fabrication) ID
  • the chip unique information of the nonvolatile memory may be a product number (CHIP ID) of the corresponding nonvolatile memory.
  • Such manufacturing specific information and chip specific information may be stored in a predetermined storage area or may be encrypted and stored inside the device so that it cannot be externally verified.
  • step S410 If the manufacturing unique information and the chip specific information of the nonvolatile memory are confirmed in step S410, the program code is encrypted using the manufacturing unique information of the nonvolatile memory, the chip specific information, and the unique pattern information generated in step S340 (S420). ).
  • step S420 may generate an encryption key using unique pattern information, manufacturing unique information, and chip unique information, and encrypt the program code using the generated encryption key.
  • FIG. 5 is a flowchart illustrating another exemplary operation for step S360 illustrated in FIG. 3.
  • the user information of the user who uses the corresponding device or the program code stored in the nonvolatile memory, and the time or date information of the corresponding device are checked (S510). .
  • the user information may be stored in a predetermined storage area or may be encrypted and stored inside the device so that it cannot be checked externally, and time or date information may be obtained from a device of the present invention or a device on which the device of the present invention is mounted. .
  • step S510 If the user information, time or date information is confirmed in step S510, the program code is encrypted using the user information, time or date information, and the unique pattern information generated in step S340 (S520).
  • step S520 may generate an encryption key using unique pattern information, user information, time or date information, and encrypt the program code using the generated encryption key.
  • FIG. 6 shows an operation flowchart of an embodiment of step S330 shown in FIG. 3.
  • the data area for binary data of the program code is divided into a plurality of data areas (S610).
  • the binary data may be divided into a predetermined number of data areas, or the binary data of the program code may be divided into predetermined area units.
  • the binary pattern of the program code may be detected using the detected plurality of data patterns. That is, the binary pattern may be detected by using a combination of the plurality of data patterns or a table of the plurality of data patterns.
  • the program code of FIG. 3 may be encrypted by directly using the plurality of data patterns detected by step S620. That is, when a plurality of data patterns are detected in step S620, unique data pattern information of data for each of the plurality of divided data regions is generated based on each of the detected plurality of data patterns, and the generated plurality of unique Data of each of the plurality of areas for the program code is encrypted using the data pattern information.
  • FIG. 7 shows an operational flowchart of an embodiment of a method of reading the program code stored by FIG. 3.
  • the unique pattern information of the program code stored in the predetermined storage area is checked, and the encrypted program code stored in the nonvolatile memory using the identified unique pattern information. Decode the (S710, S720).
  • the encrypted program code may be decrypted in step S720.
  • the program code is decrypted using at least one or more of the unique pattern information used to encrypt the program code and manufacturing unique information of the nonvolatile memory, chip unique information, user information, time or date information.
  • the binary data protection method of the nonvolatile memory may be implemented in the form of program instructions that may be executed by various computer means and may be recorded in a computer readable medium.
  • the computer readable medium may include program instructions, data files, data structures, etc. alone or in combination.
  • Program instructions recorded on the media may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks.
  • Magneto-optical media and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like.
  • program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like.
  • the hardware device described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.
  • a method of protecting binary data in a nonvolatile memory includes: receiving a program code; Analyzing the received program code to detect a binary pattern of binary data constituting the program code; Generating unique pattern information corresponding to the binary pattern based on the detected binary pattern; Encrypting the program code by using the generated unique pattern information; And storing the encrypted program code in a memory, wherein the encrypting comprises encrypting the program code in consideration of at least one of manufacturing unique information of the memory and chip specific information of the memory.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Read Only Memory (AREA)

Abstract

Disclosed are a method for protecting binary data in a non-volatile memory and an apparatus therefor. The method for protecting binary data in a non-volatile memory, according to one embodiment of the present invention, comprises: a step of receiving a program code; a step of detecting a binary pattern of binary data constituting the program code by analyzing the received program code; a step of generating unique pattern information corresponding to the binary pattern on the basis of the detected binary pattern; a step of encrypting the program code using the generated unique pattern information; and a step of storing the encrypted program code in a memory. The step of encrypting encrypts the program code by further considering the production-specific information of the memory and/or chip-specific information of the memory, or encrypts the program by further considering at least one of user information or time or date information, so that the program code can be adaptively encrypted and stored in each non-volatile memory, thereby improving the level of protection for the binary data in the non-volatile memory.

Description

비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치Binary data protection method of nonvolatile memory and device therefor
본 발명은 비휘발성 메모리(non-volatile memory)의 바이너리 데이터 보호에 대한 것으로, 상세하게는 비휘발성 메모리에 저장될 프로그램 코드를 프로그램 코드의 바이너리 패턴, 비휘발성 메모리와 관련된 고유 정보, 나아가 사용자 정보 및 시간/날짜 정보 등을 이용하여 암호화함으로써, 비휘발성 메모리의 바이너리 데이터에 대한 보호 수준을 향상시킬 수 있는 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치에 관한 것이다.The present invention relates to the protection of binary data in non-volatile memory. Specifically, program code to be stored in non-volatile memory includes a binary pattern of program code, unique information related to non-volatile memory, and further user information and The present invention relates to a method and apparatus for protecting binary data of a nonvolatile memory capable of improving the level of protection for binary data of the nonvolatile memory by encrypting using time / date information or the like.
플래시 메모리는 비휘발성이고, 이것은 플래시 메모리가 칩(chip)의 정보를 유지하는 데 전력을 필요로 하지 않는 방식으로 반도체 상에 정보를 저장한다는 것을 의미한다. 플래시 메모리는 각각이 1비트 이상의 정보를 저장하는, "셀(cell)들"이라고 불리는 트랜지스터들의 어레이(array)에 정보를 저장한다. 메모리 셀들은 FAMOS(Floating-Gate Avalanche-Injection Metal Oxide Semiconductor) 트랜지스터에 기초하고 FAMOS 트랜지스터는 본질적으로 게이트와 소스/드레인 단자들 사이에 부유하는(suspended) 부가적인 전도체(conductor)를 갖는 CMOS(Complementary Metal Oxide Semiconductor) FET(Field Effect Transistor)이다. 현재의 플래시 메모리 장치들은 두 개의 기본적인 어레이 아키텍처로 이루어진다. NOR 플래시 및 NAND 플래시 로직(logic)의 유형을 가리키는 이름들이 저장 셀 어레이(storage cell array)에서 사용된다.Flash memory is nonvolatile, which means that flash memory stores information on a semiconductor in a manner that does not require power to maintain the information on the chip. Flash memory stores information in an array of transistors called "cells", each of which stores one or more bits of information. Memory cells are based on Floating-Gate Avalanche-Injection Metal Oxide Semiconductor (FAMOS) transistors, which are essentially complementary metals (CMOSs) with additional conductors suspended between the gate and source / drain terminals. Oxide Semiconductor) FET (Field Effect Transistor). Current flash memory devices consist of two basic array architectures. Names indicating the type of NOR flash and NAND flash logic are used in the storage cell array.
플래시 셀은 단지 1개의 게이트 대신 2개의 게이트를 갖는다는 것을 제외하고는 표준 MOSFET 트랜지스터와 유사하다. 하나의 게이트는 다른 MOS 트랜지스터들에서의 제어 게이트(control gate, CG)와 같은 것이고, 다른 하나의 게이트는 산화층에 의해 주위가 모두 절연된 부유 게이트(floating gate, FG)이다. FG는 그의 산화층에 의해 절연되기 때문에, 그 위에 놓이는 임의의 전자는 거기에 트랩되고(trapped) 그리하여 정보를 저장한다.Flash cells are similar to standard MOSFET transistors except that they have two gates instead of just one gate. One gate is the same as a control gate (CG) in other MOS transistors, and the other is a floating gate (FG) insulated all around by an oxide layer. Since the FG is insulated by its oxide layer, any electrons placed on it are trapped there and thus store information.
전자들이 FG 상에 트랩될 때, 그들은 CG로부터의 전기장을 수정(부분적으로 상쇄)하며, 이것은 셀의 임계 전압(Vt)을 수정한다. 그리하여, CG를 특정한 전압으로 만듦으로써 셀이 "판독"될 때, 셀의 Vt에 따라 그 셀의 소스와 드레인 접속들 사이에서 전류가 흐르거나 흐르지 않을 것이다. 이러한 전류의 존재 또는 부재는 감지되어 '1' 또는 '0'으로 변환될 수 있으며, 이리하여 저장된 데이터가 재생된다.When electrons are trapped on the FG, they modify (partially cancel) the electric field from CG, which modifies the threshold voltage (Vt) of the cell. Thus, when a cell is " read " by making CG a specific voltage, current will or will not flow between the cell's source and drain connections depending on the cell's Vt. The presence or absence of such a current can be sensed and converted to '1' or '0', whereby the stored data is reproduced.
상술한 플래시 메모리와 같은 비휘발성 메모리는 제조회사 고유의 프로그램을 저장하여 특정한 제어를 목적으로 사용되며, 이러한 프로그램의 불법적인 유출을 막기 위해 암호를 사용하여 암호를 알지 못하면 정확한 프로그램을 사용할 수 없도록 하였다.Non-volatile memory, such as the above-described flash memory stores a program unique to the manufacturer and is used for specific control purposes, and in order to prevent illegal leakage of such a program, a password cannot be used without knowing the password. .
종래 비휘발성 메모리의 읽기 방지회로는 특정 프로그램을 갖는 암호부의 데이터와 비휘발성 메모리셀부의 데이터를 배타적노아(XNOR, exclusive NOR) 조합하여 비휘발성 메모리의 프로그램 내용을 다른 사람이 불법적으로 사용하는 것을 방지하였으나, 비휘발성 메모리셀의 프로그램되지 않은 셀의 수가 암호부의 셀수보다 많은 경우에는 메모리셀의 프로그램되지 않은 셀의 데이터와 암호부의 데이터를 배타적노아조합한 값은 암호부의 데이터와 같게 되어 다른 사람에게 암호부의 데이터가 쉽게 노출되어 비휘발성 메모리에 저장된 프로그램이 불법적으로 유출되는 문제점이 있었다.The conventional non-volatile memory read protection circuit combines the data of the encryption unit having a specific program and the data of the non-volatile memory cell unit with exclusive NOR (XNOR, exclusive NOR) to prevent another person from illegally using the program contents of the nonvolatile memory. However, if the number of unprogrammed cells of the nonvolatile memory cell is larger than the number of cells in the cipher cell, the data obtained by combining the data of the unprogrammed cell of the memory cell with the data of the cipher part is the same as the data of the cipher part. There is a problem that negative data is easily exposed so that programs stored in nonvolatile memory are illegally leaked.
따라서, 비휘발성 메모리에 저장된 프로그램의 불법적인 유출을 방지할 수 있는 구성의 필요성이 대두된다. 비휘발성 메모리에 저장된 프로그램의 불법적인 유출을 방지하기 위하여 개발된 선행기술로서 한국등록특허 제10-0258861호 "비휘발성 메모리의 읽기 방지 회로"이 제안되었다. Therefore, there is a need for a configuration that can prevent illegal leakage of a program stored in a nonvolatile memory. As a prior art developed to prevent illegal leakage of a program stored in a nonvolatile memory, Korean Patent No. 10-0258861 has proposed a read protection circuit of a nonvolatile memory.
상기 선행기술은 암호 가중 비트(scramble weight bit)에 따라 인가되는 어드레스신호와 실제 메모리셀의 어드레스를 다르게 변형하여 비휘발성 메모리의 프로그램을 타인이 읽을 수 없도록 하는데 적당하도록 한 비휘발성 메모리의 읽기 방지회로에 관한 것으로, 암호를 노출시키는 것을 방지하여 프로그램의 불법적인 유출을 방지하기 위한 것이다.The prior art is a read-protection circuit of a nonvolatile memory, which is adapted to change the address signal applied according to a scramble weight bit and the address of an actual memory cell so that others cannot read the program of the nonvolatile memory. The present invention relates to preventing the disclosure of a password to prevent illegal leakage of a program.
즉, 선행기술은 암호의 노출을 방지하기 위한 것으로, 비휘발성 메모리에 동일한 프로그램이 암호화되어 저장되는 경우 암호화되어 저장되는 데이터가 모두 동일하기 때문에 암호화되는 패턴을 반복하여 분석하면 암호화 알고리즘과 암호를 유추할 가능성이 있으며, 따라서 동일한 프로그램을 암호화할 때 상이한 암호화 키를 이용하여 암호화함으로써 프로그램의 유출을 방지할 수 있는 구성의 필요성이 대두된다.That is, the prior art is to prevent the exposure of the password, and if the same program is encrypted and stored in the nonvolatile memory, since the data stored in the encrypted are all the same, repeated analysis of the encrypted pattern to infer the encryption algorithm and password Therefore, there is a need for a configuration that can prevent the leakage of a program by encrypting using a different encryption key when encrypting the same program.
본 발명은 상기와 같은 종래 기술의 문제점을 해결하고자 도출된 것으로서, 비휘발성 메모리에 동일한 프로그램 코드를 저장할 때 프로그램 코드의 바이너리 패턴, 비휘발성 메모리와 관련된 고유 정보, 나아가 사용자 정보 및 시간/날짜 정보 등을 이용하여 암호화함으로써, 비휘발성 메모리의 바이너리 데이터에 대한 보호 수준을 향상시킬 수 있는 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치를 제공하는 것을 목적으로 한다.The present invention is derived to solve the problems of the prior art as described above, when storing the same program code in a nonvolatile memory, the binary pattern of the program code, the unique information associated with the nonvolatile memory, and further user information and time / date information, etc. It is an object of the present invention to provide a method and apparatus for protecting binary data of a nonvolatile memory, which can improve the level of protection for binary data of the nonvolatile memory by encrypting the data using the encryption method.
또한, 본 발명은 비휘발성 메모리마다 프로그램 코드를 상이하게 암호화하여 저장함으로써, 복잡한 암호화 하드웨어를 사용하지 않고도 프로그램 코드를 메모리마다 적응적으로(adaptive) 암호화할 수 있는 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치를 제공하는 것을 목적으로 한다.The present invention also provides a method for protecting binary data of a nonvolatile memory capable of adaptively encrypting program codes for each memory without using complicated encryption hardware by encrypting and storing program codes differently for each nonvolatile memory. It is an object to provide the device.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시 예에 따른 비휘발성 메모리의 바이너리 데이터 보호 방법은 프로그램 코드를 수신하는 단계; 상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출하는 단계; 상기 검출된 상기 바이너리 패턴에 기초하여 상기 바이너리 패턴에 해당하는 고유 패턴 정보를 생성하는 단계; 상기 생성된 상기 고유 패턴 정보를 이용하여 상기 프로그램 코드를 암호화하는 단계; 및 상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 단계를 포함한다.In order to achieve the above object, a binary data protection method of a nonvolatile memory according to an embodiment of the present invention comprises the steps of receiving a program code; Analyzing the received program code to detect a binary pattern of binary data constituting the program code; Generating unique pattern information corresponding to the binary pattern based on the detected binary pattern; Encrypting the program code by using the generated unique pattern information; And storing the encrypted program code in a memory.
상기 암호화하는 단계는 상기 메모리의 제조 고유 정보와 상기 메모리의 칩 고유 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화할 수도 있고, 사용자 정보와 시간 또는 날짜 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화할 수도 있다.The encrypting may further encrypt the program code by considering at least one of manufacturing unique information of the memory and chip unique information of the memory, and further considering the user information and at least one of time or date information. You can also encrypt the code.
나아가, 본 발명에 따른 방법은 상기 메모리에 저장된 상기 암호화된 상기 프로그램 코드를 상기 고유 패턴 정보를 이용하여 해독하는 단계; 및 상기 해독된 상기 프로그램 코드를 읽는 단계를 더 포함할 수 있다.Furthermore, the method according to the present invention comprises the steps of decrypting the encrypted program code stored in the memory using the unique pattern information; And reading the decrypted program code.
더 나아가, 본 발명에 따른 방법은 상기 생성된 상기 고유 패턴 정보를 미리 결정된 저장 영역에 저장하는 단계를 더 포함하고, 상기 해독하는 단계는 상기 저장된 상기 고유 패턴 정보를 이용하여 상기 암호화된 상기 프로그램 코드를 해독할 수 있다.Furthermore, the method according to the present invention further comprises storing the generated unique pattern information in a predetermined storage area, wherein the decrypting comprises the encrypted program code using the stored unique pattern information. Can be deciphered.
더 나아가, 본 발명에 따른 방법은 상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 단계를 더 포함하고, 상기 검출하는 단계는 상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하며, 상기 생성하는 단계는 상기 검출된 상기 데이터 패턴에 기초하여 상기 복수의 영역들 각각에 대한 데이터의 고유 데이터 패턴 정보를 생성하고, 상기 암호화하는 단계는 상기 생성된 상기 고유 데이터 패턴 정보를 이용하여 상기 복수의 영역들 각각에 대한 데이터를 암호화할 수 있다.Furthermore, the method according to the invention further comprises the step of dividing the received data area of the program code into a plurality of areas, wherein the detecting step is performed by the data of each of the divided plurality of areas. Detecting a data pattern, and generating the data pattern generates unique data pattern information of data for each of the plurality of areas based on the detected data pattern, and encrypting the generated data pattern Data for each of the plurality of areas may be encrypted using the information.
더 나아가, 본 발명에 따른 방법은 상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 단계를 더 포함하고, 상기 검출하는 단계는 상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하고, 상기 검출된 상기 데이터 패턴을 이용하여 상기 바이너리 패턴을 검출할 수 있다.Furthermore, the method according to the invention further comprises the step of dividing the received data area of the program code into a plurality of areas, wherein the detecting step is performed by the data of each of the divided plurality of areas. The data pattern may be detected, and the binary pattern may be detected using the detected data pattern.
본 발명의 일 실시 예에 따른 비휘발성 메모리의 바이너리 데이터 보호 장치는 프로그램 코드를 수신하는 수신부; 상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출하는 검출부; 상기 검출된 상기 바이너리 패턴에 기초하여 상기 바이너리 패턴에 해당하는 고유 패턴 정보를 생성하는 생성부; 상기 생성된 상기 고유 패턴 정보를 키 값으로 하여 상기 프로그램 코드를 암호화하는 암호화부; 및 상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 저장부를 포함한다.An apparatus for protecting binary data of a nonvolatile memory according to an exemplary embodiment of the present invention may include a receiver configured to receive a program code; A detector configured to analyze the received program code to detect a binary pattern of binary data constituting the program code; A generation unit configured to generate unique pattern information corresponding to the binary pattern based on the detected binary pattern; An encryption unit for encrypting the program code using the generated unique pattern information as a key value; And a storage unit for storing the encrypted program code in a memory.
본 발명에 따르면, 동일한 프로그램 코드를 비휘발성 메모리마다 저장할 때 프로그램 코드를 적응적으로(adaptive) 암호화하여 저장함으로써, 비휘발성 메모리의 바이너리 데이터에 대한 보호 수준을 향상시킬 수 있다.According to the present invention, when the same program code is stored for each nonvolatile memory, the program code is adaptively encrypted and stored, thereby improving the level of protection for binary data of the nonvolatile memory.
구체적으로, 본 발명은 저장하고자 하는 프로그램 코드의 바이너리 패턴, 비휘발성 메모리와 관련된 고유 정보, 나아가 사용자 정보 및 시간/날짜 정보 등을 이용하여 프로그램 코드를 암호화하고, 이렇게 암호화된 프로그램 코드를 비휘발성 메모리에 저장하기 때문에 비휘발성 메모리의 바이너리 데이터에 대한 보호 수준을 향상시킬 수 있다.Specifically, the present invention encrypts the program code by using the binary pattern of the program code to be stored, the unique information related to the non-volatile memory, and further user information and time / date information, and the encrypted program code to the non-volatile memory In addition, it can improve the level of protection for binary data in nonvolatile memory.
나아가, 본 발명은 복잡한 암호화 하드웨어를 사용하지 않고도 비휘발성 메모리마다 상이하게 암호화된 프로그램 코드를 저장할 수 있기 때문에 비휘발성 메모리에 저장된 프로그램 코드에 대한 보호 수준을 향상시킬 수 있으며, 장치의 단가를 낮춰 경쟁력을 향상시킬 수 있다.Furthermore, since the present invention can store differently encrypted program codes for each nonvolatile memory without using complicated encryption hardware, it is possible to improve the level of protection for the program codes stored in the nonvolatile memory and to lower the cost of the device. Can improve.
도 1은 본 발명의 일 실시예에 따른 비휘발성 메모리의 바이너리 데이터 보호 장치에 대한 구성을 나타낸 것이다.1 illustrates a configuration of an apparatus for protecting binary data of a nonvolatile memory according to an embodiment of the present invention.
도 2는 도 1에 도시된 검출부에 대한 일 실시예 구성을 나타낸 것이다.FIG. 2 illustrates a configuration of an embodiment of the detector illustrated in FIG. 1.
도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리의 바이너리 데이터 보호 방법에 대한 동작 흐름도를 나타낸 것이다.3 is a flowchart illustrating a method of protecting binary data in a nonvolatile memory according to an embodiment of the present invention.
도 4는 도 3에 도시된 단계 S360에 대한 일 실시예 동작 흐름도를 나타낸 것이다.4 is a flowchart illustrating an embodiment of operation S360 shown in FIG. 3.
도 5는 도 3에 도시된 단계 S360에 대한 다른 일 실시예 동작 흐름도를 나타낸 것이다.FIG. 5 is a flowchart illustrating another exemplary operation for step S360 illustrated in FIG. 3.
도 6은 도 3에 도시된 단계 S330에 대한 일 실시예 동작 흐름도를 나타낸 것이다.FIG. 6 shows an operation flowchart of an embodiment of step S330 shown in FIG. 3.
도 7은 도 3에 의해 저장된 프로그램 코드를 읽는 방법에 대한 일 실시예의 동작 흐름도를 나타낸 것이다.FIG. 7 shows an operational flowchart of an embodiment of a method of reading the program code stored by FIG. 3.
도 8은 프로그램 코드의 바이너리 데이터로부터 고유 패턴 정보를 생성하는 과정에 대한 일 예를 나타낸 것이다.8 illustrates an example of a process of generating unique pattern information from binary data of a program code.
도 9는 프로그램 코드의 바이너리 데이터를 암호화하는 과정에 대한 일 예를 나타낸 것이다.9 illustrates an example of a process of encrypting binary data of a program code.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시 예에 따른 비휘발성 메모리의 바이너리 데이터 보호 방법은 프로그램 코드를 수신하는 단계; 상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출하는 단계; 상기 검출된 상기 바이너리 패턴에 기초하여 상기 바이너리 패턴에 해당하는 고유 패턴 정보를 생성하는 단계; 상기 생성된 상기 고유 패턴 정보를 이용하여 상기 프로그램 코드를 암호화하는 단계; 및 상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 단계를 포함한다.In order to achieve the above object, a binary data protection method of a nonvolatile memory according to an embodiment of the present invention comprises the steps of receiving a program code; Analyzing the received program code to detect a binary pattern of binary data constituting the program code; Generating unique pattern information corresponding to the binary pattern based on the detected binary pattern; Encrypting the program code by using the generated unique pattern information; And storing the encrypted program code in a memory.
상기 암호화하는 단계는 상기 메모리의 제조 고유 정보와 상기 메모리의 칩 고유 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화할 수도 있고, 사용자 정보와 시간 또는 날짜 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화할 수도 있다.The encrypting may further encrypt the program code by considering at least one of manufacturing unique information of the memory and chip unique information of the memory, and further considering the user information and at least one of time or date information. You can also encrypt the code.
나아가, 본 발명에 따른 방법은 상기 메모리에 저장된 상기 암호화된 상기 프로그램 코드를 상기 고유 패턴 정보를 이용하여 해독하는 단계; 및 상기 해독된 상기 프로그램 코드를 읽는 단계를 더 포함할 수 있다.Furthermore, the method according to the present invention comprises the steps of decrypting the encrypted program code stored in the memory using the unique pattern information; And reading the decrypted program code.
더 나아가, 본 발명에 따른 방법은 상기 생성된 상기 고유 패턴 정보를 미리 결정된 저장 영역에 저장하는 단계를 더 포함하고, 상기 해독하는 단계는 상기 저장된 상기 고유 패턴 정보를 이용하여 상기 암호화된 상기 프로그램 코드를 해독할 수 있다.Furthermore, the method according to the present invention further comprises storing the generated unique pattern information in a predetermined storage area, wherein the decrypting comprises the encrypted program code using the stored unique pattern information. Can be deciphered.
더 나아가, 본 발명에 따른 방법은 상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 단계를 더 포함하고, 상기 검출하는 단계는 상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하며, 상기 생성하는 단계는 상기 검출된 상기 데이터 패턴에 기초하여 상기 복수의 영역들 각각에 대한 데이터의 고유 데이터 패턴 정보를 생성하고, 상기 암호화하는 단계는 상기 생성된 상기 고유 데이터 패턴 정보를 이용하여 상기 복수의 영역들 각각에 대한 데이터를 암호화할 수 있다.Furthermore, the method according to the invention further comprises the step of dividing the received data area of the program code into a plurality of areas, wherein the detecting step is performed by the data of each of the divided plurality of areas. Detecting a data pattern, and generating the data pattern generates unique data pattern information of data for each of the plurality of areas based on the detected data pattern, and encrypting the generated data pattern Data for each of the plurality of areas may be encrypted using the information.
더 나아가, 본 발명에 따른 방법은 상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 단계를 더 포함하고, 상기 검출하는 단계는 상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하고, 상기 검출된 상기 데이터 패턴을 이용하여 상기 바이너리 패턴을 검출할 수 있다.Furthermore, the method according to the invention further comprises the step of dividing the received data area of the program code into a plurality of areas, wherein the detecting step is performed by the data of each of the divided plurality of areas. The data pattern may be detected, and the binary pattern may be detected using the detected data pattern.
본 발명의 일 실시 예에 따른 비휘발성 메모리의 바이너리 데이터 보호 장치는 프로그램 코드를 수신하는 수신부; 상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출하는 검출부; 상기 검출된 상기 바이너리 패턴에 기초하여 상기 바이너리 패턴에 해당하는 고유 패턴 정보를 생성하는 생성부; 상기 생성된 상기 고유 패턴 정보를 키 값으로 하여 상기 프로그램 코드를 암호화하는 암호화부; 및 상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 저장부를 포함한다.An apparatus for protecting binary data of a nonvolatile memory according to an exemplary embodiment of the present invention may include a receiver configured to receive a program code; A detector configured to analyze the received program code to detect a binary pattern of binary data constituting the program code; A generation unit configured to generate unique pattern information corresponding to the binary pattern based on the detected binary pattern; An encryption unit for encrypting the program code using the generated unique pattern information as a key value; And a storage unit for storing the encrypted program code in a memory.
상기 목적 외에 본 발명의 다른 목적 및 특징들은 첨부 도면을 참조한 실시 예에 대한 설명을 통하여 명백히 드러나게 될 것이다.Other objects and features of the present invention in addition to the above object will be apparent from the description of the embodiments with reference to the accompanying drawings.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular example embodiments only and is not intended to be limiting of the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this application, the term "comprises" and the like is intended to indicate that there is a feature, number, step, operation, component, part, or combination thereof described in the specification, but one or more other features, numbers, steps It is to be understood that the present invention does not exclude in advance the possibility of the presence or the addition of operations, components, components, or a combination thereof.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art. Terms such as those defined in the commonly used dictionaries should be construed as having meanings consistent with the meanings in the context of the related art, and shall not be construed in ideal or excessively formal meanings unless expressly defined in this application. Do not.
본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.Preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. In describing the present invention, when it is determined that the detailed description of the related well-known configuration or function may obscure the gist of the present invention, the detailed description thereof will be omitted.
그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.However, the present invention is not limited or limited by the embodiments. Like reference numerals in the drawings denote like elements.
이하에서는, 본 발명의 일 실시 예에 따른 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치를 첨부된 도 1 내지 도 9를 참조하여 상세히 설명한다.Hereinafter, a method and apparatus for protecting binary data of a nonvolatile memory according to an embodiment of the present invention will be described in detail with reference to FIGS. 1 to 9.
도 1은 본 발명의 일 실시예에 따른 비휘발성 메모리의 바이너리 데이터 보호 장치에 대한 구성을 나타낸 것이다.1 illustrates a configuration of an apparatus for protecting binary data of a nonvolatile memory according to an embodiment of the present invention.
도 1을 참조하면, 본 발명에 따른 장치는 수신부(110), 검출부(120), 생성부(130), 암호화부(140), 저장부(150), 비휘발성 메모리(160), 패턴 정보 저장부(170), 해독부(180) 및 읽기부(190)를 포함한다.Referring to FIG. 1, a device according to the present invention includes a receiver 110, a detector 120, a generator 130, an encryption unit 140, a storage unit 150, a nonvolatile memory 160, and pattern information storage. The unit 170, the decryption unit 180, and the reading unit 190 are included.
수신부(110)는 비휘발성 메모리(160)에 저장될 프로그램 코드를 외부로부터 수신한다.The receiver 110 receives a program code to be stored in the nonvolatile memory 160 from the outside.
이 때, 수신부(110)는 프로그램 코드를 프로그램 코드를 생성할 수 있는 기기 또는 프로그램, 나아가 프로그램 코드를 저장하고 있는 외부 저장 수단을 통해 수신할 수 있다.In this case, the receiving unit 110 may receive the program code through an apparatus or a program capable of generating the program code, and also through an external storage means storing the program code.
검출부(120)는 수신부(110)로 수신된 프로그램 코드를 분석하여 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출한다.The detector 120 analyzes the program code received by the receiver 110 to detect a binary pattern of binary data constituting the program code.
이 때, 검출부(120)는 프로그램 코드의 비트 값 '1'의 패턴에 기초하여 바이너리 패턴을 검출할 수도 있고, 비트 값 '0'의 패턴에 기초하여 바이너리 패턴을 검출할 수도 있다.At this time, the detector 120 may detect the binary pattern based on the pattern of the bit value '1' of the program code, or may detect the binary pattern based on the pattern of the bit value '0'.
예를 들어, 검출부는 도 8에 도시된 바와 같이, 64KB의 바이너리 데이터(E[7:0][0:65535])에 대한 k번째 8비트 바이너리 데이터(E[7:0][k])와 미리 결정된 패턴 검출 값을 결합하고, 이를 64KB에 대해 반복 수행하여 64KB의 바이너리 데이터에 대한 바이너리 패턴을 검출할 수 있다.For example, as illustrated in FIG. 8, the detection unit k-th 8-bit binary data E [7: 0] [k] for 64 KB of binary data E [7: 0] [0: 65535]. And a predetermined pattern detection value may be combined and repeated for 64 KB to detect a binary pattern for 64 KB of binary data.
나아가, 검출부(120)는 프로그램 코드에 대한 바이너리 데이터 영역을 복수의 영역들로 분할한 후 분할된 데이터 영역 각각에 대한 데이터 패턴을 검출할 수도 있고, 더 나아가 검출된 복수의 데이터 영역 각각에 대한 데이터 패턴을 이용하여 바이너리 패턴을 검출할 수도 있다. 도 2에서 복수의 영역을 분할하여 복수의 데이터 패턴을 검출하는 것에 대해 설명한다.In addition, the detector 120 may divide the binary data area for the program code into a plurality of areas, and then detect a data pattern for each of the divided data areas, and further, the data for each of the detected plurality of data areas. The binary pattern may be detected using the pattern. In FIG. 2, a plurality of areas are divided to detect a plurality of data patterns.
도 2는 도 1에 도시된 검출부에 대한 일 실시예 구성을 나타낸 것이다.FIG. 2 illustrates a configuration of an embodiment of the detector illustrated in FIG. 1.
도 2를 참조하면, 검출부(120)는 분할부(210) 및 영역 패턴 검출부(220)를 포함한다.Referring to FIG. 2, the detector 120 includes a divider 210 and an area pattern detector 220.
분할부(210)는 프로그램 코드의 데이터 영역 즉, 바이너리 데이터의 데이터 영역을 복수의 영역들로 분할한다.The divider 210 divides a data area of a program code, that is, a data area of binary data into a plurality of areas.
이 때, 분할부(210)는 바이너리 데이터를 미리 결정된 개수의 데이터 영역으로 분할할 수도 있고, 프로그램 코드의 바이너리 데이터를 일정 영역 단위로 분할할 수도 있다.In this case, the dividing unit 210 may divide the binary data into a predetermined number of data areas, or may divide the binary data of the program code into units of a predetermined area.
영역 패턴 검출부(220)는 분할부(210)에 의해 분할된 복수의 데이터 영역 각각에 대한 데이터의 데이터 패턴을 검출한다.The area pattern detector 220 detects a data pattern of data for each of the plurality of data areas divided by the divider 210.
즉, 영역 패턴 검출부(220)는 프로그램 코드의 복수의 데이터 영역에 대한 복수의 데이터 패턴을 검출한다.That is, the area pattern detection unit 220 detects a plurality of data patterns for a plurality of data areas of the program code.
이 때, 영역 패턴 검출부(220)는 이웃하는 데이터 영역에 대한 패턴을 고려하여 해당 데이터 영역에 대한 데이터 패턴을 검출할 수도 있다.In this case, the area pattern detector 220 may detect the data pattern of the data area in consideration of the pattern of the neighboring data area.
영역 패턴 검출부(220)는 도 8에 도시된 바와 같이, 미리 결정된 패턴 검출 값을 이용하여 복수의 데이터 영역 각각에 대한 데이터 패턴을 검출할 수도 있다.As illustrated in FIG. 8, the region pattern detector 220 may detect data patterns for each of the plurality of data regions using a predetermined pattern detection value.
다시 도 1을 참조하여, 생성부(130)는 검출부(120)에 의해 검출된 바이너리 패턴에 기초하여 바이너리 패턴에 해당하는 고유 패턴 정보를 생성한다.Referring back to FIG. 1, the generation unit 130 generates unique pattern information corresponding to the binary pattern based on the binary pattern detected by the detection unit 120.
이 때, 생성부(130)는 바이너리 패턴 정보에 대응하는 고유 패턴 정보가 미리 저장된 데이터 테이블을 이용하여 검출부(120)에 의해 검출된 바이너리 패턴에 해당하는 고유 패턴 정보를 생성할 수도 있고, 바이너리 패턴 정보를 변수로 하는 미리 결정된 함수 등을 이용하여 바이너리 패턴에 대응하는 고유 패턴 정보를 생성할 수도 있다. In this case, the generation unit 130 may generate the unique pattern information corresponding to the binary pattern detected by the detection unit 120 using a data table in which the unique pattern information corresponding to the binary pattern information is stored in advance. The unique pattern information corresponding to the binary pattern may be generated using a predetermined function using information as a variable.
예컨대, 생성부(130)는 SHA(Secure Hash Algorithm)-1을 이용하여 고유 패턴 정보를 생성할 수도 있고, 도 8에 도시된 바와 같이, 바이너리 데이터의 고유 패턴 정보를 입력으로 하는 CRC(Cyclic Redundancy Check)-16을 이용하여 바이너리 데이터의 패턴에 대응하는 16 비트의 고유 패턴 정보(fingerprint[15:0])를 생성할 수도 있다. 즉, 생성부에 의해 생성되는 고유 패턴 정보는 프로그램 코드의 바이너리 데이터에 따라 고유하게 생성되는 정보로서, 고유 패턴 정보를 생성하는 방식에 따라 8 비트, 16 비트, 32 비트 등의 정보를 가질 수 있으며, 도 8에 도시된 일 예와 같이, 고유 패턴 정보는 프로그램 코드의 해당 바이트 수(여기서는 64k = 65536 번)만큼 반복 수행하여 생성될 수 있다.For example, the generation unit 130 may generate unique pattern information using Secure Hash Algorithm (SHA-1), and as shown in FIG. 8, CRC (Cyclic Redundancy) for inputting unique pattern information of binary data. Check) -16 may be used to generate 16-bit unique pattern information (fingerprint [15: 0]) corresponding to the pattern of binary data. That is, the unique pattern information generated by the generation unit is information uniquely generated according to the binary data of the program code, and may have information such as 8 bits, 16 bits, 32 bits, etc. according to the method of generating the unique pattern information. As shown in the example of FIG. 8, the unique pattern information may be generated by repeatedly performing the corresponding byte number (here, 64k = 65536 times) of the program code.
물론, 생성부(130)는 검출부(120)에 의해 복수의 데이터 영역에 대한 데이터 패턴이 검출된 경우에는 복수의 데이터 패턴 각각에 대응하는 복수의 고유 데이터 패턴 정보를 생성할 수도 있다.Of course, when the data pattern for the plurality of data areas is detected by the detector 120, the generation unit 130 may generate a plurality of pieces of unique data pattern information corresponding to each of the plurality of data patterns.
이 때, 생성부(130)는 복수의 고유 데이터 패턴 정보를 이용하여 프로그램 코드의 고유 패턴 정보를 생성할 수도 있다.In this case, the generation unit 130 may generate unique pattern information of the program code by using the plurality of unique data pattern information.
패턴 정보 저장부(170)는 생성부(130)에 의해 생성된 고유 패턴 정보 또는 데이터 영역 각각에 대한 고유 데이터 패턴 정보를 저장한다.The pattern information storage unit 170 stores the unique pattern information generated by the generation unit 130 or the unique data pattern information for each data area.
이 때, 패턴 정보 저장부(170)에 저장된 정보는 해독부(180)에서 비휘발성 메모리(160)에 저장된 데이터 즉, 암호화된 프로그램 코드를 해독할 때 사용될 수 있다.In this case, the information stored in the pattern information storage unit 170 may be used when the decryption unit 180 decrypts the data stored in the nonvolatile memory 160, that is, the encrypted program code.
이런 패턴 정보 저장부(170)는 비휘발성 메모리(160)의 일부 영역에 고유 패턴 정보 또는 고유 데이터 패턴 정보를 저장할 수도 있고, 별도로 구비된 저장 수단에 고유 패턴 정보 또는 고유 데이터 패턴 정보를 저장할 수도 있다.The pattern information storage unit 170 may store the unique pattern information or the unique data pattern information in a portion of the nonvolatile memory 160 or may store the unique pattern information or the unique data pattern information in a storage unit provided separately. .
암호화부(140)는 생성부(130)에 의해 생성된 고유 패턴 정보를 이용하여 프로그램 코드의 바이너리 데이터를 암호화하는 구성으로, 암호화하는데 사용되는 알고리즘은 미리 결정된 암호화 알고리즘일 수도 있고, 복수의 알고리즘들 중 랜덤(random)하게 선택된 암호화 알고리즘일 수도 있다. 즉, 암호화부(140)는 고유 패턴 정보를 이용하여 암호화 키를 생성하고, 생성된 암호화 키를 이용하여 프로그램 코드를 암호화할 수 있다. Encryption unit 140 is a configuration for encrypting the binary data of the program code using the unique pattern information generated by the generation unit 130, the algorithm used for encryption may be a predetermined encryption algorithm, a plurality of algorithms May be a randomly selected encryption algorithm. That is, the encryption unit 140 may generate an encryption key using the unique pattern information, and encrypt the program code using the generated encryption key.
이 때, 암호화부(140)는 생성된 암호화 키의 각 비트 값과 프로그램 코드의 비트 값에 대한 배타적논리합(Exclusive-OR) 조합을 이용하여 프로그램 코드를 암호화할 수 있다.At this time, the encryption unit 140 may encrypt the program code by using an exclusive logical OR combination of each bit value of the generated encryption key and the bit value of the program code.
암호화부(140)는 생성부(130)에 의해 복수의 고유 데이터 패턴 정보가 생성되는 경우에는 분할된 복수의 데이터 영역 각각에 대한 고유 데이터 패턴 정보를 이용하여 복수의 데이터 영역 각각을 암호화할 수도 있다.When the generation unit 130 generates a plurality of pieces of unique data pattern information, the encryption unit 140 may encrypt each of the plurality of data areas using the unique data pattern information of each of the plurality of divided data areas. .
나아가, 암호화부(140)는 고유 패턴 정보 뿐만 아니라 비휘발성 메모리의 제조 고유 정보와 비휘발성 메모리의 칩 고유 정보 중 적어도 하나를 더 고려하여 프로그램 코드를 암호화할 수도 있다.Further, the encryption unit 140 may encrypt the program code by further considering at least one of manufacturing unique information of the nonvolatile memory and chip specific information of the nonvolatile memory as well as the unique pattern information.
예컨대, 도 9에 도시된 바와 같이, 암호화부(140)는 시드 생성부에서 비휘발성 메모리의 제조 고유 정보(Fab ID)와 비휘발성 메모리의 칩 고유 정보(Chip ID)를 입력받아 시드 값(S[15:0])을 생성하고 생성된 시드 값의 각 비트 간의 배타적논리합(XOR) 조합에 대한 값(K[7:0])을 출력하고, 원본 프로그램 코드의 바이너리 데이터 중 첫번째 8 비트의 데이터(E[7:0][1])와 제1 출력 값(K[7:0])의 각 비트 간의 배타적논리합 조합을 수행하며, 배타적논리합 조합의 수행에 따른 출력 값과 고유 패턴 정보(A[15:0])의 각 비트 간 배타적논리합 조합에 의해 출력된 값(M[7:0])을 다시 배타적논리합 조합을 수행함으로써, 해당 원본 데이터(E[7:0][1])를 암호화된 데이터(I[7:0])로 변환하여 출력한다. 이와 같은 과정이 원본 프로그램 코드의 모든 데이터에 대해 반복 수행되어 원본 프로그램 코드의 바이너리 데이터를 암호화된 데이터로 변경할 수 있다. 예를 들어, 프로그램 코드의 바이너리 데이터가 64KB라고 가정하면, 도 9에 도시된 처리 과정을 65536번 수행함으로써 원본 프로그램 코드의 바이너리 데이터를 암호화된 데이터로 변환할 수 있다.For example, as illustrated in FIG. 9, the encryption unit 140 receives a seed unique value (Fab ID) of the nonvolatile memory and chip unique information (Chip ID) of the nonvolatile memory from the seed generator. [15: 0]) and outputs the value (K [7: 0]) for the exclusive logical sum (XOR) combination between each bit of the generated seed value, and the first 8 bits of the binary data of the original program code. Performs an exclusive logical sum combination between (E [7: 0] [1]) and each bit of the first output value K [7: 0], and output value and unique pattern information (A) according to the execution of the exclusive logical sum combination By performing the exclusive logical sum combination again on the value M [7: 0] output by the exclusive logical sum combination between each bit of [15: 0]), the corresponding original data E [7: 0] [1] is obtained. The data is converted into encrypted data I [7: 0] and output. This process is repeated for all data of the original program code, so that the binary data of the original program code can be changed to encrypted data. For example, assuming that the binary data of the program code is 64 KB, the binary data of the original program code may be converted into encrypted data by performing the processing shown in FIG. 9 65536 times.
도 9에 도시된 시드 생성부는 제조 고유 정보(Fab ID)와 칩 고유 정보(Chip ID)를 이용하여 한번에 16 비트의 시드 값(S[15:0])을 생성할 수도 있지만, 이에 한정하지 않으며 제조 고유 정보(Fab ID)를 이용하여 8 비트의 시드 값(S[7:0])을 생성하고 칩 고유 정보(Chip ID)를 이용하여 8 비트의 시드 값(S[15:8])을 각각 생성할 수도 있다.The seed generator illustrated in FIG. 9 may generate seed values S [15: 0] of 16 bits at a time using manufacturing unique information (Fab ID) and chip unique information (Chip ID), but is not limited thereto. An 8-bit seed value (S [7: 0]) is generated using the manufacturing unique information (Fab ID), and an 8-bit seed value (S [15: 8]) is generated using the chip unique information (Chip ID). You can also create each.
도 9에서 알 수 있듯이, 본 발명에 따른 장치는 프로그램 코드가 동일하더라도 비휘발성 메모리의 제조 고유 정보와 칩 고유 정보 중 적어도 하나가 상이하기 때문에 비휘발성 메모리에 암호화되어 저장되는 프로그램 코드는 모두 상이하게 되고, 따라서 동일한 프로그램 코드에 대해서도 고유한 암호화 결과가 나타나게 된다. 결과적으로, 비휘발성 메모리에 저장된 암호화된 프로그램 코드를 반복적으로 분석하더라도 서로 다른 암호화 결과에 의하여 암호화되기 때문에 암호화 방식을 획득하기 힘들고 따라서 프로그램 코드가 유출되는 것을 방지할 수 있다. As can be seen in Figure 9, the apparatus according to the present invention, even if the program code is the same, since at least one of the manufacturing-specific information and the chip-specific information of the nonvolatile memory is different, the program code encrypted and stored in the nonvolatile memory are all different As a result, a unique encryption result appears for the same program code. As a result, even if the encrypted program code stored in the nonvolatile memory is analyzed repeatedly, it is difficult to obtain an encryption method because it is encrypted by different encryption results, and thus the program code can be prevented from leaking.
나아가, 암호화부(140)는 고유 패턴 정보 뿐만 아니라 본 발명의 장치를 사용하는 사용자 정보와 시간 또는 날짜 정보 중 적어도 하나를 더 고려하여 프로그램 코드를 암호화할 수도 있다.Furthermore, the encryption unit 140 may encrypt the program code by considering not only the unique pattern information but also at least one of user information and time or date information using the apparatus of the present invention.
물론, 암호화부(140)는 비휘발성 메모리의 제조 고유 정보, 비휘발성 메모리의 칩 고유 정보, 사용자 정보와 시간 또는 날짜 정보를 모두 고려하여 프로그램 코드를 암호화할 수도 있다.Of course, the encryption unit 140 may encrypt the program code in consideration of both manufacturing specific information of the nonvolatile memory, chip specific information of the nonvolatile memory, user information, and time or date information.
이 때, 암호화부(140)에서 프로그램 코드를 암호화할 때 사용되는 정보는 해독부(180)에서 프로그램 코드를 해독할 때 사용할 수 있도록 미리 결정된 저장 영역에 저장되어야 하는 것이 자명하다.At this time, it is apparent that the information used when encrypting the program code in the encryption unit 140 should be stored in a predetermined storage area so that the decryption unit 180 can use it when decrypting the program code.
저장부(150)는 암호화부(140)에 의해 암호화된 프로그램 코드를 비휘발성 메모리(160)에 저장한다.The storage unit 150 stores the program code encrypted by the encryption unit 140 in the nonvolatile memory 160.
이 때, 저장부(150)는 복수의 데이터 영역 각각에 대한 데이터가 암호화된 경우에는 복수의 데이터 영역 각각에 대해 암호화된 데이터를 비휘발성 메모리(160)의 해당 영역에 저장할 수 있다.In this case, when the data for each of the plurality of data areas is encrypted, the storage unit 150 may store the encrypted data for each of the plurality of data areas in the corresponding area of the nonvolatile memory 160.
해독부(180)는 비휘발성 메모리(160)에 저장된 프로그램 코드 즉, 암호화된 프로그램 코드를 해독하는 수단으로, 프로그램 코드를 저장할 때 사용된 정보 예를 들어, 프로그램 코드의 고유 패턴 정보, 비휘발성 메모리의 제조 고유 정보, 비휘발성 메모리의 칩 고유 정보, 사용자 정보와 시간 또는 날짜 정보 등을 이용하여 비휘발성 메모리(160)에 저장된 프로그램 코드를 해독한다.The decryption unit 180 is a means for decrypting the program code stored in the nonvolatile memory 160, that is, the encrypted program code. Information used when storing the program code, for example, unique pattern information of the program code, and nonvolatile memory The program code stored in the nonvolatile memory 160 is decoded by using the manufacturing peculiar information, the chip peculiar information of the nonvolatile memory, the user information and the time or date information.
이 때, 해독부(180)는 암호화부(140)에서 프로그램 코드를 암호화할 때 사용한, 암호화 알고리즘에 대응하는 해독 알고리즘과 패턴 정보 저장부(170)에 저장된 프로그램 코드의 고유 패턴 정보를 이용하여 비휘발성 메모리(160)에 저장된 프로그램 코드를 해독할 수 있다. 물론, 암호화부(140)에서 프로그램 코드를 암호화할 때 복수의 데이터 영역을 각각 암호화한 경우, 해독부(180)는 패턴 정보 저장부(170)에 저장된 복수의 고유 데이터 패턴 정보를 이용하여 프로그램 코드의 데이터 영역 각각에 대한 프로그램 코드의 데이터를 해독할 수 있다.At this time, the decryption unit 180 uses the decryption algorithm corresponding to the encryption algorithm and the inherent pattern information of the program code stored in the pattern information storage unit 170 used when encrypting the program code in the encryption unit 140. The program code stored in the volatile memory 160 may be decrypted. Of course, when the encryption unit 140 encrypts a plurality of data areas, respectively, when encrypting the program code, the decryption unit 180 uses the plurality of unique data pattern information stored in the pattern information storage unit 170. The data of the program code for each of the data areas can be decoded.
읽기부(190)는 해독부(180)에 의해 해독된 프로그램 코드를 읽는다.The reading unit 190 reads the program code decrypted by the decryption unit 180.
이와 같이, 본 발명에 따른 장치는 프로그램 코드에 대한 바이너리 데이터의 고유 패턴 정보 나아가, 비휘발성 메모리의 제조 고유 정보, 비휘발성 메모리의 칩 고유 정보, 사용자 정보와 시간 또는 날짜 정보 등을 이용하여 프로그램 코드를 암호화하기 때문에 동일한 프로그램 코드가 비휘발성 메모리에 암호화되더라도 비휘발성 메모리마다 프로그램 코드가 상이하게 암호화되고, 따라서 복잡한 암호화 하드웨어를 사용하지 않고도 비휘발성 메모리의 바이너리 데이터에 대한 보호 수준을 향상시킬 수 있다.As described above, the apparatus according to the present invention uses program pattern information using the unique pattern information of the binary data for the program code, the manufacturing unique information of the nonvolatile memory, the chip unique information of the nonvolatile memory, the user information and the time or date information, and the like. Since the same program code is encrypted in the nonvolatile memory, the program code is encrypted differently for each nonvolatile memory. Thus, the level of protection for binary data in the nonvolatile memory can be improved without using complicated encryption hardware.
도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리의 바이너리 데이터 보호 방법에 대한 동작 흐름도를 나타낸 것으로, 도 1에 도시된 장치에서의 동작 흐름도에 대한 것이다.FIG. 3 is a flowchart illustrating a method of protecting binary data of a nonvolatile memory according to an embodiment of the present invention, and is a flowchart of the operation of the apparatus illustrated in FIG. 1.
도 3을 참조하면, 본 발명에 따른 방법은 비휘발성 메모리에 저장될 프로그램 코드를 수신하고, 수신된 프로그램 코드를 분석하여 프로그램 코드에 포함된 바이너리 데이터의 바이너리 패턴을 검출한다(S310 내지 S330).Referring to FIG. 3, the method according to the present invention receives a program code to be stored in a nonvolatile memory, and analyzes the received program code to detect binary patterns of binary data included in the program code (S310 to S330).
이 때, 단계 S320은 바이너리 데이터의 비트 값 '0'과 '1'을 이용하여 프로그램 코드를 분석할 수 있으며, 단계 S330은 프로그램 코드 분석을 통해 획득된 바이너리 데이터의 비트 값 예를 들어, 비트 값 '1' 또는 '0'을 이용하여 바이너리 패턴을 검출할 수 있다.In this case, step S320 may analyze the program code using the bit values '0' and '1' of the binary data, and step S330 may be a bit value of the binary data obtained through program code analysis, for example, a bit value. The binary pattern can be detected using '1' or '0'.
단계 S330에 의해 프로그램 코드에 대한 바이너리 패턴이 검출되면, 검출된 바이너리 패턴에 기초하여 바이너리 패턴에 해당하는 고유 패턴 정보를 생성한다(S340).When the binary pattern for the program code is detected in step S330, unique pattern information corresponding to the binary pattern is generated based on the detected binary pattern (S340).
이 때, 고유 패턴 정보는 바이너리 패턴에 대응하는 m비트의 정보일 수 있으며, 이런 고유 패턴 정보는 미리 저장된 바이너리 패턴과 이에 대한 고유 패턴 정보들에 대한 데이터 테이블 또는 바이너리 패턴 정보를 변수로 하는 함수를 통해 생성되거나 획득될 수도 있고, 암호화 키를 생성하는 알고리즘을 통해 획득될 수도 있다.In this case, the unique pattern information may be m bits of information corresponding to the binary pattern, and the unique pattern information may include a function that uses a data table or binary pattern information for the prestored binary pattern and the unique pattern information as variables. It may be generated or obtained through, or may be obtained through an algorithm for generating an encryption key.
단계 S340에 의해 생성된 고유 패턴 정보를 미리 결정된 저장 영역에 저장하고, 생성된 고유 패턴 정보를 이용하여 프로그램 코드를 암호화한다(S350, S360).The unique pattern information generated in step S340 is stored in a predetermined storage area, and the program code is encrypted using the generated unique pattern information (S350 and S360).
물론, 고유 패턴 정보를 이용하여 프로그램 코드를 암호화할 때, 고유 패턴 정보를 이용하여 암호화 키를 생성하고, 생성된 암호화 키를 이용하여 프로그램 코드를 암호화할 수 있다. 상황에 따라 고유 패턴 정보 자체가 암호화 키로 사용될 수도 있다.Of course, when the program code is encrypted using the unique pattern information, an encryption key may be generated using the unique pattern information, and the program code may be encrypted using the generated encryption key. Depending on the situation, the unique pattern information itself may be used as the encryption key.
고유 패턴 정보에 의해 암호화된 프로그램 코드는 비휘발성 메모리에 저장된다(S370).The program code encrypted by the unique pattern information is stored in the nonvolatile memory (S370).
상기 단계들 중 단계 S360의 프로그램 코드를 암호화하는데 있어서, 비휘발성 메모리마다 상이하게 암호화된 프로그램 코드를 생성하기 위하여 프로그램 코드의 고유 패턴 정보 뿐만 아니라 부가적인 정보를 이용하여 암호화할 수 있으며, 이에 대해 도 4와 도 5를 예로 들어 설명한다.In encrypting the program code of step S360 of the above steps, in order to generate a differently encrypted program code for each nonvolatile memory, the program code may be encrypted using additional information as well as unique pattern information of the program code. 4 and 5 will be described as an example.
도 4는 도 3에 도시된 단계 S360에 대한 일 실시예 동작 흐름도를 나타낸 것이다.4 is a flowchart illustrating an embodiment of operation S360 shown in FIG. 3.
도 4를 참조하면, 프로그램 코드를 암호화하는 단계(S360)는 프로그램 코드가 저장될 비휘발성 메모리의 제조 고유 정보와 칩 고유 정보를 확인한다(S410).Referring to FIG. 4, in the step of encrypting the program code (S360), the manufacturing unique information and the chip unique information of the nonvolatile memory in which the program code is to be stored are confirmed (S410).
여기서, 비휘발성 메모리의 제조 고유 정보는 해당 비휘발성 메모리의 제조 번호로서, FAB(fabrication) ID가 될 수 있고, 비휘발성 메모리의 칩 고유 정보는 해당 비휘발성 메모리의 제품 번호(CHIP ID)가 될 수 있으며, 이런 제조 고유 정보와 칩 고유 정보는 미리 결정된 저장 영역에 저장되거나 외부에서 확인할 수 없도록 장치 내부에 암호화되어 저장될 수 있다.Here, the manufacturing unique information of the nonvolatile memory may be a manufacturing number of the corresponding nonvolatile memory, which may be a FAB (fabrication) ID, and the chip unique information of the nonvolatile memory may be a product number (CHIP ID) of the corresponding nonvolatile memory. Such manufacturing specific information and chip specific information may be stored in a predetermined storage area or may be encrypted and stored inside the device so that it cannot be externally verified.
단계 S410에 의해 비휘발성 메모리의 제조 고유 정보와 칩 고유 정보가 확인되면, 비휘발성 메모리의 제조 고유 정보, 칩 고유 정보 그리고 단계 S340에 의해 생성된 고유 패턴 정보를 이용하여 프로그램 코드를 암호화한다(S420).If the manufacturing unique information and the chip specific information of the nonvolatile memory are confirmed in step S410, the program code is encrypted using the manufacturing unique information of the nonvolatile memory, the chip specific information, and the unique pattern information generated in step S340 (S420). ).
마찬가지로, 단계 S420은 고유 패턴 정보, 제조 고유 정보, 칩 고유 정보를 이용하여 암호화 키를 생성하고, 생성된 암호화 키를 이용하여 프로그램 코드를 암호화할 수 있다.Similarly, step S420 may generate an encryption key using unique pattern information, manufacturing unique information, and chip unique information, and encrypt the program code using the generated encryption key.
도 5는 도 3에 도시된 단계 S360에 대한 다른 일 실시예 동작 흐름도를 나타낸 것이다.FIG. 5 is a flowchart illustrating another exemplary operation for step S360 illustrated in FIG. 3.
도 5를 참조하면, 프로그램 코드를 암호화하는 단계(S360)는 해당 장치를 사용하거나 비휘발성 메모리에 저장된 프로그램 코드를 사용하는 사용자의 사용자 정보, 해당 장치에서의 시간 또는 날짜 정보를 확인한다(S510).Referring to FIG. 5, in the step of encrypting the program code (S360), the user information of the user who uses the corresponding device or the program code stored in the nonvolatile memory, and the time or date information of the corresponding device are checked (S510). .
여기서, 사용자 정보는 미리 결정된 저장 영역에 저장되거나 외부에서 확인할 수 없도록 장치 내부에 암호화되어 저장될 수 있고, 시간 또는 날짜 정보는 본 발명의 장치 또는 본 발명의 장치가 탑재되는 기기로부터 획득될 수 있다.In this case, the user information may be stored in a predetermined storage area or may be encrypted and stored inside the device so that it cannot be checked externally, and time or date information may be obtained from a device of the present invention or a device on which the device of the present invention is mounted. .
단계 S510에 의해 사용자 정보, 시간 또는 날짜 정보가 확인되면, 사용자 정보, 시간 또는 날짜 정보 그리고 단계 S340에 의해 생성된 고유 패턴 정보를 이용하여 프로그램 코드를 암호화한다(S520).If the user information, time or date information is confirmed in step S510, the program code is encrypted using the user information, time or date information, and the unique pattern information generated in step S340 (S520).
마찬가지로, 단계 S520은 고유 패턴 정보, 사용자 정보, 시간 또는 날짜 정보를 이용하여 암호화 키를 생성하고, 생성된 암호화 키를 이용하여 프로그램 코드를 암호화할 수 있다.Similarly, step S520 may generate an encryption key using unique pattern information, user information, time or date information, and encrypt the program code using the generated encryption key.
도 6은 도 3에 도시된 단계 S330에 대한 일 실시예 동작 흐름도를 나타낸 것이다.FIG. 6 shows an operation flowchart of an embodiment of step S330 shown in FIG. 3.
도 6을 참조하면, 바이너리 패턴을 검출하는 단계(S330)는 프로그램 코드의 바이너리 데이터에 대한 데이터 영역을 복수의 데이터 영역으로 분할한다(S610).Referring to FIG. 6, in the detecting of the binary pattern (S330), the data area for binary data of the program code is divided into a plurality of data areas (S610).
여기서, 단계 S610은 바이너리 데이터를 미리 결정된 개수의 데이터 영역으로 분할할 수도 있고, 프로그램 코드의 바이너리 데이터를 일정 영역 단위로 분할할 수도 있다.Here, in step S610, the binary data may be divided into a predetermined number of data areas, or the binary data of the program code may be divided into predetermined area units.
단계 S610에 의해 복수의 데이터 영역으로 분할되면, 분할된 복수의 데이터 영역들 각각의 데이터에 대한 데이터 패턴을 검출한다(S620).When the data patterns are divided into a plurality of data regions in operation S610, a data pattern of data of each of the plurality of divided data regions is detected (S620).
나아가, 본 발명에 따른 방법은 단계 S620에 의해 복수의 데이터 영역들 각각에 대한 데이터 패턴이 검출되면, 검출된 복수의 데이터 패턴들을 이용하여 프로그램 코드의 바이너리 패턴을 검출할 수 있다. 즉, 복수의 데이터 패턴들에 대한 조합 또는 복수의 데이터 패턴들에 대한 테이블을 이용하여 바이너리 패턴을 검출할 수 있다.Furthermore, in the method according to the present invention, when a data pattern for each of the plurality of data areas is detected in step S620, the binary pattern of the program code may be detected using the detected plurality of data patterns. That is, the binary pattern may be detected by using a combination of the plurality of data patterns or a table of the plurality of data patterns.
또한, 단계 S620에 의해 검출된 복수의 데이터 패턴들을 직접 이용하여 도 3에서의 프로그램 코드를 암호화할 수도 있다. 즉, 단계 S620에 의해 복수의 데이터 패턴들이 검출되면, 검출된 복수의 데이터 패턴들 각각에 기초하여 분할된 복수의 데이터 영역들 각각에 대한 데이터의 고유 데이터 패턴 정보를 생성하고, 생성된 복수의 고유 데이터 패턴 정보를 이용하여 프로그램 코드에 대한 복수의 영역들 각각의 데이터를 암호화한다.In addition, the program code of FIG. 3 may be encrypted by directly using the plurality of data patterns detected by step S620. That is, when a plurality of data patterns are detected in step S620, unique data pattern information of data for each of the plurality of divided data regions is generated based on each of the detected plurality of data patterns, and the generated plurality of unique Data of each of the plurality of areas for the program code is encrypted using the data pattern information.
도 7은 도 3에 의해 저장된 프로그램 코드를 읽는 방법에 대한 일 실시예의 동작 흐름도를 나타낸 것이다. FIG. 7 shows an operational flowchart of an embodiment of a method of reading the program code stored by FIG. 3.
도 7을 참조하면, 비휘발성 메모리에 저장된 프로그램 코드를 읽기 위하여, 미리 결정된 저장 영역에 저장된 프로그램 코드의 고유 패턴 정보를 확인하고, 확인된 고유 패턴 정보를 이용하여 비휘발성 메모리에 저장된 암호화된 프로그램 코드를 해독한다(S710, S720).Referring to FIG. 7, in order to read the program code stored in the nonvolatile memory, the unique pattern information of the program code stored in the predetermined storage area is checked, and the encrypted program code stored in the nonvolatile memory using the identified unique pattern information. Decode the (S710, S720).
물론, 프로그램 코드가 고유 패턴 정보 뿐만 아니라 비휘발성 메모리의 제조 고유 정보, 칩 고유 정보, 사용자 정보, 시간 또는 날짜 정보 중 적어도 하나 이상을 이용하여 암호화된 경우, 단계 S720에서 암호화된 프로그램 코드를 해독할 때, 프로그램 코드를 암호화하는데 사용된 고유 패턴 정보 그리고 비휘발성 메모리의 제조 고유 정보, 칩 고유 정보, 사용자 정보, 시간 또는 날짜 정보 중 적어도 하나 이상을 이용하여 암호화된 프로그램 코드를 해독한다.Of course, if the program code is encrypted using not only the unique pattern information but also at least one or more of manufacturing unique information, chip unique information, user information, time or date information of the nonvolatile memory, the encrypted program code may be decrypted in step S720. When the program code is decrypted using at least one or more of the unique pattern information used to encrypt the program code and manufacturing unique information of the nonvolatile memory, chip unique information, user information, time or date information.
비휘발성 메모리에 저장된 프로그램 코드가 해독되면, 해독된 프로그램 코드를 읽는다(S730).When the program code stored in the nonvolatile memory is decrypted, the decrypted program code is read (S730).
본 발명의 일 실시 예에 따른 비휘발성 메모리의 바이너리 데이터 보호 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The binary data protection method of the nonvolatile memory according to an embodiment of the present invention may be implemented in the form of program instructions that may be executed by various computer means and may be recorded in a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. Program instructions recorded on the media may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks. Magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like. The hardware device described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. In the present invention as described above has been described by the specific embodiments, such as specific components and limited embodiments and drawings, but this is provided to help a more general understanding of the present invention, the present invention is not limited to the above embodiments. For those skilled in the art, various modifications and variations are possible from these descriptions.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.Therefore, the spirit of the present invention should not be limited to the described embodiments, and all of the equivalents and equivalents of the claims, as well as the following claims, will fall within the scope of the present invention. .
비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치가 개시된다. 본 발명의 일 실시예에 따른 비휘발성 메모리의 바이너리 데이터 보호 방법은 프로그램 코드를 수신하는 단계; 상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출하는 단계; 상기 검출된 상기 바이너리 패턴에 기초하여 상기 바이너리 패턴에 해당하는 고유 패턴 정보를 생성하는 단계; 상기 생성된 상기 고유 패턴 정보를 이용하여 상기 프로그램 코드를 암호화하는 단계; 및 상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 단계를 포함하고, 상기 암호화하는 단계는 상기 메모리의 제조 고유 정보와 상기 메모리의 칩 고유 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화하거나 사용자 정보와 시간 또는 날짜 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화함으로써, 비휘발성 메모리마다 프로그램 코드를 적응적으로(adaptive) 암호화하여 저장하고, 이를 통해 비휘발성 메모리의 바이너리 데이터에 대한 보호 수준을 향상시킬 수 있다.Disclosed are a method and apparatus for protecting binary data of a nonvolatile memory. A method of protecting binary data in a nonvolatile memory according to an embodiment of the present invention includes: receiving a program code; Analyzing the received program code to detect a binary pattern of binary data constituting the program code; Generating unique pattern information corresponding to the binary pattern based on the detected binary pattern; Encrypting the program code by using the generated unique pattern information; And storing the encrypted program code in a memory, wherein the encrypting comprises encrypting the program code in consideration of at least one of manufacturing unique information of the memory and chip specific information of the memory. And encrypting the program code in consideration of at least one of time and date information, thereby adaptively encrypting and storing the program code for each nonvolatile memory, thereby improving the protection level of the binary data of the nonvolatile memory. Can be improved.

Claims (15)

  1. 프로그램 코드를 수신하는 단계;Receiving a program code;
    상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출하는 단계;Analyzing the received program code to detect a binary pattern of binary data constituting the program code;
    상기 검출된 상기 바이너리 패턴에 기초하여 상기 바이너리 패턴에 해당하는 고유 패턴 정보를 생성하는 단계;Generating unique pattern information corresponding to the binary pattern based on the detected binary pattern;
    상기 생성된 상기 고유 패턴 정보를 이용하여 상기 프로그램 코드를 암호화하는 단계; 및Encrypting the program code by using the generated unique pattern information; And
    상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 단계Storing the encrypted program code in a memory
    를 포함하는 비휘발성 메모리의 바이너리 데이터 보호 방법.Binary data protection method of a non-volatile memory comprising a.
  2. 제1항에 있어서,The method of claim 1,
    상기 암호화하는 단계는The encrypting step
    상기 메모리의 제조 고유 정보와 상기 메모리의 칩 고유 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 방법.And encrypting the program code by further considering at least one of manufacturing peculiar information of the memory and chip peculiar information of the memory.
  3. 제1항에 있어서,The method of claim 1,
    상기 암호화하는 단계는The encrypting step
    사용자 정보와 시간 또는 날짜 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 방법.And encrypting the program code by further considering user information and at least one of time or date information.
  4. 제1항에 있어서,The method of claim 1,
    상기 메모리에 저장된 상기 암호화된 상기 프로그램 코드를 상기 고유 패턴 정보를 이용하여 해독하는 단계; 및Decrypting the encrypted program code stored in the memory using the unique pattern information; And
    상기 해독된 상기 프로그램 코드를 읽는 단계Reading the decrypted program code
    를 더 포함하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 방법.The binary data protection method of the non-volatile memory, characterized in that it further comprises.
  5. 제4항에 있어서,The method of claim 4, wherein
    상기 생성된 상기 고유 패턴 정보를 미리 결정된 저장 영역에 저장하는 단계Storing the generated unique pattern information in a predetermined storage area
    를 더 포함하고, More,
    상기 해독하는 단계는The deciphering step
    상기 저장된 상기 고유 패턴 정보를 이용하여 상기 암호화된 상기 프로그램 코드를 해독하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 방법.And decrypting the encrypted program code using the stored unique pattern information.
  6. 제1항에 있어서,The method of claim 1,
    상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 단계Dividing a data area of the received program code into a plurality of areas
    를 더 포함하고,More,
    상기 검출하는 단계는The detecting step
    상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하며,Detecting a data pattern of data for each of the divided plurality of regions,
    상기 생성하는 단계는The generating step
    상기 검출된 상기 데이터 패턴에 기초하여 상기 복수의 영역들 각각에 대한 데이터의 고유 데이터 패턴 정보를 생성하고,Generating unique data pattern information of data for each of the plurality of areas based on the detected data pattern,
    상기 암호화하는 단계는The encrypting step
    상기 생성된 상기 고유 데이터 패턴 정보를 이용하여 상기 복수의 영역들 각각에 대한 데이터를 암호화하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 방법.And encrypting data for each of the plurality of regions by using the generated unique data pattern information.
  7. 제1항에 있어서,The method of claim 1,
    상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 단계Dividing a data area of the received program code into a plurality of areas
    를 더 포함하고,More,
    상기 검출하는 단계는The detecting step
    상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하고, 상기 검출된 상기 데이터 패턴을 이용하여 상기 바이너리 패턴을 검출하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 방법.And detecting a data pattern of data of each of the divided plurality of regions, and detecting the binary pattern by using the detected data pattern.
  8. 제1항 내지 제7항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.A computer-readable recording medium in which a program for executing the method of any one of claims 1 to 7 is recorded.
  9. 프로그램 코드를 수신하는 수신부;A receiving unit for receiving a program code;
    상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출하는 검출부;A detector configured to analyze the received program code to detect a binary pattern of binary data constituting the program code;
    상기 검출된 상기 바이너리 패턴에 기초하여 상기 바이너리 패턴에 해당하는 고유 패턴 정보를 생성하는 생성부;A generation unit configured to generate unique pattern information corresponding to the binary pattern based on the detected binary pattern;
    상기 생성된 상기 고유 패턴 정보를 키 값으로 하여 상기 프로그램 코드를 암호화하는 암호화부; 및An encryption unit for encrypting the program code using the generated unique pattern information as a key value; And
    상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 저장부A storage unit for storing the encrypted program code in a memory
    를 포함하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 장치.Binary data protection device of a nonvolatile memory, comprising a.
  10. 제9항에 있어서,The method of claim 9,
    상기 암호화부는The encryption unit
    상기 메모리의 제조 고유 정보와 상기 메모리의 칩 고유 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 장치.And encrypting the program code by further considering at least one of manufacturing peculiar information of the memory and chip peculiar information of the memory.
  11. 제9항에 있어서,The method of claim 9,
    상기 암호화부는The encryption unit
    사용자 정보와 날짜 또는 시간 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 장치.And encrypting the program code by further considering user information and at least one of date or time information.
  12. 제9항에 있어서,The method of claim 9,
    상기 메모리에 저장된 상기 암호화된 상기 프로그램 코드를 상기 고유 패턴 정보를 이용하여 해독하는 해독부; 및A decryption unit for decrypting the encrypted program code stored in the memory using the unique pattern information; And
    상기 해독된 상기 프로그램 코드를 읽는 읽기부A reading unit that reads the decrypted program code
    를 더 포함하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 장치.Binary data protection device of a nonvolatile memory, characterized in that it further comprises.
  13. 제12항에 있어서,The method of claim 12,
    상기 생성된 상기 고유 패턴 정보를 미리 결정된 저장 영역에 저장하는 패턴 정보 저장부A pattern information storage unit for storing the generated unique pattern information in a predetermined storage area
    를 더 포함하고, More,
    상기 해독부는The decryption unit
    상기 패턴 정보 저장부에 저장된 상기 고유 패턴 정보를 이용하여 상기 암호화된 상기 프로그램 코드를 해독하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 장치.And decrypting the encrypted program code by using the unique pattern information stored in the pattern information storage unit.
  14. 제9항에 있어서,The method of claim 9,
    상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 분할부A divider divides the data area of the received program code into a plurality of areas.
    를 더 포함하고,More,
    상기 검출부는The detection unit
    상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하며,Detecting a data pattern of data for each of the divided plurality of regions,
    상기 생성부는The generation unit
    상기 검출된 상기 데이터 패턴에 기초하여 상기 복수의 영역들 각각에 대한 데이터의 고유 데이터 패턴 정보를 생성하고,Generating unique data pattern information of data for each of the plurality of areas based on the detected data pattern,
    상기 암호화부는The encryption unit
    상기 생성된 상기 고유 데이터 패턴 정보를 이용하여 상기 복수의 영역들 각각에 대한 데이터를 암호화하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 장치.And encrypting data for each of the plurality of areas by using the generated unique data pattern information.
  15. 제9항에 있어서,The method of claim 9,
    상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 분할부A divider divides the data area of the received program code into a plurality of areas.
    를 더 포함하고,More,
    상기 검출부는The detection unit
    상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하고, 상기 검출된 상기 데이터 패턴을 이용하여 상기 바이너리 패턴을 검출하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 장치.And detecting a data pattern of data of each of the divided plurality of regions, and detecting the binary pattern using the detected data pattern.
PCT/KR2013/011504 2013-01-18 2013-12-12 Method for protecting binary data in non-volatile memory and apparatus therefor WO2014112720A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201380070696.9A CN104919468A (en) 2013-01-18 2013-12-12 Method for protecting binary data in non-volatile memory and apparatus therefor
JP2015553646A JP2016508629A (en) 2013-01-18 2013-12-12 Method and apparatus for protecting binary data in nonvolatile memory
US14/802,620 US20150324613A1 (en) 2013-01-18 2015-07-17 Method and apparatus for protecting binary data in non-volatile memory

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020130005978A KR101416685B1 (en) 2013-01-18 2013-01-18 Method for protecting binary data in non-volatile memory and apparatus thereof
KR10-2013-0005978 2013-01-18

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/802,620 Continuation US20150324613A1 (en) 2013-01-18 2015-07-17 Method and apparatus for protecting binary data in non-volatile memory

Publications (1)

Publication Number Publication Date
WO2014112720A1 true WO2014112720A1 (en) 2014-07-24

Family

ID=51209786

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2013/011504 WO2014112720A1 (en) 2013-01-18 2013-12-12 Method for protecting binary data in non-volatile memory and apparatus therefor

Country Status (5)

Country Link
US (1) US20150324613A1 (en)
JP (1) JP2016508629A (en)
KR (1) KR101416685B1 (en)
CN (1) CN104919468A (en)
WO (1) WO2014112720A1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102488636B1 (en) 2017-11-23 2023-01-17 삼성전자주식회사 Encryption device encrypting data and timestamp, system on chip including the same, and electronic device
CN110942129B (en) * 2019-12-16 2023-06-02 矩网科技有限公司 Generating method of five-pointed star encryption code
KR20220021186A (en) 2020-08-13 2022-02-22 에스케이하이닉스 주식회사 Apparatus and method for sharing data in a data processing system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050115151A (en) * 2004-06-03 2005-12-07 삼성전자주식회사 Memory card capable of storing security data and operating method of memory card
JP4625737B2 (en) * 2005-08-25 2011-02-02 シャープ株式会社 Content recording / playback device
KR101156102B1 (en) * 2011-05-11 2012-06-20 이승진 Memory card reader apparatus having security features and the method thereof

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0869419A (en) * 1994-08-30 1996-03-12 Shimadzu Corp Recording device and recording medium for digital data
US5673319A (en) * 1995-02-06 1997-09-30 International Business Machines Corporation Block cipher mode of operation for secure, length-preserving encryption
JP2000112751A (en) * 1998-10-07 2000-04-21 Nippon Columbia Co Ltd Device used for software distribution system
JP4350962B2 (en) * 2002-03-13 2009-10-28 パナソニック株式会社 Secure device
JP2004023351A (en) * 2002-06-14 2004-01-22 Oki Electric Ind Co Ltd Method for securing program of microcomputer
JP2004126639A (en) * 2002-09-30 2004-04-22 Toshiba Corp Data management system, method and program
JP2004265194A (en) * 2003-03-03 2004-09-24 Matsushita Electric Ind Co Ltd Information processing apparatus and information processing method
JP2004325677A (en) * 2003-04-23 2004-11-18 Sony Corp Encryption processing device, encryption processing method, and computer program
US8121284B2 (en) * 2006-03-14 2012-02-21 Nec Corporation Information processing system, information processing method, and information processing program
JP4912174B2 (en) * 2007-02-07 2012-04-11 株式会社日立製作所 Storage system and storage management method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050115151A (en) * 2004-06-03 2005-12-07 삼성전자주식회사 Memory card capable of storing security data and operating method of memory card
JP4625737B2 (en) * 2005-08-25 2011-02-02 シャープ株式会社 Content recording / playback device
KR101156102B1 (en) * 2011-05-11 2012-06-20 이승진 Memory card reader apparatus having security features and the method thereof

Also Published As

Publication number Publication date
US20150324613A1 (en) 2015-11-12
KR101416685B1 (en) 2014-07-09
CN104919468A (en) 2015-09-16
JP2016508629A (en) 2016-03-22

Similar Documents

Publication Publication Date Title
KR102608961B1 (en) Method for device-dependent encryption and apparatus performing the same
CN104025500B (en) Use the secure key storage of physically unclonable function
US5034980A (en) Microprocessor for providing copy protection
KR102201062B1 (en) System for generating a cryptographic key from a memory used as a physically unclonable function
JP3975677B2 (en) Information processing device
US8000467B2 (en) Data parallelized encryption and integrity checking method and device
US8285988B2 (en) Method and system for command authentication to achieve a secure interface
WO2018151390A1 (en) Internet of things device
US11308241B2 (en) Security data generation based upon software unreadable registers
EP2920734A1 (en) Method of and apparatus for processing software using hash function to secure software, and computer-readable medium storing executable instructions for performing the method
JP2012516094A (en) Cryptographic circuit protected especially from information leakage observation attack by its cryptographic conversion
WO2014112720A1 (en) Method for protecting binary data in non-volatile memory and apparatus therefor
JP2005157930A (en) Confidential information processing system and lsi
KR20060045061A (en) Security information packaging system, lsi, and security information packaging method
WO2015053441A1 (en) Apparatus and method for generating identification key
WO2015034146A1 (en) Device and method for generating identification key
CN110659506A (en) Replay protection of memory based on key refresh
JP2008033512A (en) Security chip and platform
CN114444140A (en) Non-duplicable function application in memory
KR101924047B1 (en) Encryption method and apparatus using the same, decryption method and appratus using the same
US11244078B2 (en) Side channel attack protection
WO2019184741A1 (en) Application program information storing method and apparatus, and application program information processing method and apparatus
WO2015053440A1 (en) Apparatus and method for generating identification key
EP3832945A1 (en) System and method for protecting memory encryption against template attacks
US9069988B2 (en) Detecting key corruption

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13871599

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015553646

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13871599

Country of ref document: EP

Kind code of ref document: A1