KR101416685B1 - 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치 - Google Patents

비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치 Download PDF

Info

Publication number
KR101416685B1
KR101416685B1 KR1020130005978A KR20130005978A KR101416685B1 KR 101416685 B1 KR101416685 B1 KR 101416685B1 KR 1020130005978 A KR1020130005978 A KR 1020130005978A KR 20130005978 A KR20130005978 A KR 20130005978A KR 101416685 B1 KR101416685 B1 KR 101416685B1
Authority
KR
South Korea
Prior art keywords
program code
data
pattern
information
memory
Prior art date
Application number
KR1020130005978A
Other languages
English (en)
Inventor
박대진
이광희
Original Assignee
어보브반도체 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어보브반도체 주식회사 filed Critical 어보브반도체 주식회사
Priority to KR1020130005978A priority Critical patent/KR101416685B1/ko
Priority to JP2015553646A priority patent/JP2016508629A/ja
Priority to CN201380070696.9A priority patent/CN104919468A/zh
Priority to PCT/KR2013/011504 priority patent/WO2014112720A1/ko
Application granted granted Critical
Publication of KR101416685B1 publication Critical patent/KR101416685B1/ko
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

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

비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치가 개시된다. 본 발명의 일 실시예에 따른 비휘발성 메모리의 바이너리 데이터 보호 방법은 프로그램 코드를 수신하는 단계; 상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출하는 단계; 상기 검출된 상기 바이너리 패턴에 기초하여 상기 바이너리 패턴에 해당하는 고유 패턴 정보를 생성하는 단계; 상기 생성된 상기 고유 패턴 정보를 이용하여 상기 프로그램 코드를 암호화하는 단계; 및 상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 단계를 포함하고, 상기 암호화하는 단계는 상기 메모리의 제조 고유 정보와 상기 메모리의 칩 고유 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화하거나 사용자 정보와 시간 또는 날짜 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화함으로써, 비휘발성 메모리마다 프로그램 코드를 적응적으로(adaptive) 암호화하여 저장하고, 이를 통해 비휘발성 메모리의 바이너리 데이터에 대한 보호 수준을 향상시킬 수 있다.

Description

비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치 {Method for protecting binary data in non-volatile memory and apparatus thereof}
본 발명은 비휘발성 메모리(non-volatile memory)의 바이너리 데이터 보호에 대한 것으로, 상세하게는 비휘발성 메모리에 저장될 프로그램 코드를 프로그램 코드의 바이너리 패턴, 비휘발성 메모리와 관련된 고유 정보, 나아가 사용자 정보 및 시간/날짜 정보 등을 이용하여 암호화함으로써, 비휘발성 메모리의 바이너리 데이터에 대한 보호 수준을 향상시킬 수 있는 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치에 관한 것이다.
플래시 메모리는 비휘발성이고, 이것은 플래시 메모리가 칩(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)에서 사용된다.
플래시 셀은 단지 1개의 게이트 대신 2개의 게이트를 갖는다는 것을 제외하고는 표준 MOSFET 트랜지스터와 유사하다. 하나의 게이트는 다른 MOS 트랜지스터들에서의 제어 게이트(control gate, CG)와 같은 것이고, 다른 하나의 게이트는 산화층에 의해 주위가 모두 절연된 부유 게이트(floating gate, FG)이다. FG는 그의 산화층에 의해 절연되기 때문에, 그 위에 놓이는 임의의 전자는 거기에 트랩되고(trapped) 그리하여 정보를 저장한다.
전자들이 FG 상에 트랩될 때, 그들은 CG로부터의 전기장을 수정(부분적으로 상쇄)하며, 이것은 셀의 임계 전압(Vt)을 수정한다. 그리하여, CG를 특정한 전압으로 만듦으로써 셀이 "판독"될 때, 셀의 Vt에 따라 그 셀의 소스와 드레인 접속들 사이에서 전류가 흐르거나 흐르지 않을 것이다. 이러한 전류의 존재 또는 부재는 감지되어 '1' 또는 '0'으로 변환될 수 있으며, 이리하여 저장된 데이터가 재생된다.
상술한 플래시 메모리와 같은 비휘발성 메모리는 제조회사 고유의 프로그램을 저장하여 특정한 제어를 목적으로 사용되며, 이러한 프로그램의 불법적인 유출을 막기 위해 암호를 사용하여 암호를 알지 못하면 정확한 프로그램을 사용할 수 없도록 하였다.
종래 비휘발성 메모리의 읽기 방지회로는 특정 프로그램을 갖는 암호부의 데이터와 비휘발성 메모리셀부의 데이터를 배타적노아(XNOR, exclusive NOR) 조합하여 비휘발성 메모리의 프로그램 내용을 다른 사람이 불법적으로 사용하는 것을 방지하였으나, 비휘발성 메모리셀의 프로그램되지 않은 셀의 수가 암호부의 셀수보다 많은 경우에는 메모리셀의 프로그램되지 않은 셀의 데이터와 암호부의 데이터를 배타적노아조합한 값은 암호부의 데이터와 같게 되어 다른 사람에게 암호부의 데이터가 쉽게 노출되어 비휘발성 메모리에 저장된 프로그램이 불법적으로 유출되는 문제점이 있었다.
따라서, 비휘발성 메모리에 저장된 프로그램의 불법적인 유출을 방지할 수 있는 구성의 필요성이 대두된다. 비휘발성 메모리에 저장된 프로그램의 불법적인 유출을 방지하기 위하여 개발된 선행기술로서 한국등록특허 제10-0258861호 "비휘발성 메모리의 읽기 방지 회로"이 제안되었다.
상기 선행기술은 암호 가중 비트(scramble weight bit)에 따라 인가되는 어드레스신호와 실제 메모리셀의 어드레스를 다르게 변형하여 비휘발성 메모리의 프로그램을 타인이 읽을 수 없도록 하는데 적당하도록 한 비휘발성 메모리의 읽기 방지회로에 관한 것으로, 암호를 노출시키는 것을 방지하여 프로그램의 불법적인 유출을 방지하기 위한 것이다.
즉, 선행기술은 암호의 노출을 방지하기 위한 것으로, 비휘발성 메모리에 동일한 프로그램이 암호화되어 저장되는 경우 암호화되어 저장되는 데이터가 모두 동일하기 때문에 암호화되는 패턴을 반복하여 분석하면 암호화 알고리즘과 암호를 유추할 가능성이 있으며, 따라서 동일한 프로그램을 암호화할 때 상이한 암호화 키를 이용하여 암호화함으로써 프로그램의 유출을 방지할 수 있는 구성의 필요성이 대두된다.
한국등록특허 제10-0258861호 (등록일 2000.03.15) 한국등록특허 제10-1005632호 (등록일 2010.12.27)
본 발명은 상기와 같은 종래 기술의 문제점을 해결하고자 도출된 것으로서, 비휘발성 메모리에 동일한 프로그램 코드를 저장할 때 프로그램 코드의 바이너리 패턴, 비휘발성 메모리와 관련된 고유 정보, 나아가 사용자 정보 및 시간/날짜 정보 등을 이용하여 암호화함으로써, 비휘발성 메모리의 바이너리 데이터에 대한 보호 수준을 향상시킬 수 있는 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치를 제공하는 것을 목적으로 한다.
또한, 본 발명은 비휘발성 메모리마다 프로그램 코드를 상이하게 암호화하여 저장함으로써, 복잡한 암호화 하드웨어를 사용하지 않고도 프로그램 코드를 메모리마다 적응적으로(adaptive) 암호화할 수 있는 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치를 제공하는 것을 목적으로 한다.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시 예에 따른 비휘발성 메모리의 바이너리 데이터 보호 방법은 프로그램 코드를 수신하는 단계; 상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출하는 단계; 상기 검출된 상기 바이너리 패턴에 기초하여 상기 바이너리 패턴에 해당하는 고유 패턴 정보를 생성하는 단계; 상기 생성된 상기 고유 패턴 정보를 이용하여 상기 프로그램 코드를 암호화하는 단계; 및 상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 단계를 포함한다.
상기 암호화하는 단계는 상기 메모리의 제조 고유 정보와 상기 메모리의 칩 고유 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화할 수도 있고, 사용자 정보와 시간 또는 날짜 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화할 수도 있다.
나아가, 본 발명에 따른 방법은 상기 메모리에 저장된 상기 암호화된 상기 프로그램 코드를 상기 고유 패턴 정보를 이용하여 해독하는 단계; 및 상기 해독된 상기 프로그램 코드를 읽는 단계를 더 포함할 수 있다.
더 나아가, 본 발명에 따른 방법은 상기 생성된 상기 고유 패턴 정보를 미리 결정된 저장 영역에 저장하는 단계를 더 포함하고, 상기 해독하는 단계는 상기 저장된 상기 고유 패턴 정보를 이용하여 상기 암호화된 상기 프로그램 코드를 해독할 수 있다.
더 나아가, 본 발명에 따른 방법은 상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 단계를 더 포함하고, 상기 검출하는 단계는 상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하며, 상기 생성하는 단계는 상기 검출된 상기 데이터 패턴에 기초하여 상기 복수의 영역들 각각에 대한 데이터의 고유 데이터 패턴 정보를 생성하고, 상기 암호화하는 단계는 상기 생성된 상기 고유 데이터 패턴 정보를 이용하여 상기 복수의 영역들 각각에 대한 데이터를 암호화할 수 있다.
더 나아가, 본 발명에 따른 방법은 상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 단계를 더 포함하고, 상기 검출하는 단계는 상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하고, 상기 검출된 상기 데이터 패턴을 이용하여 상기 바이너리 패턴을 검출할 수 있다.
본 발명의 일 실시 예에 따른 비휘발성 메모리의 바이너리 데이터 보호 장치는 프로그램 코드를 수신하는 수신부; 상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출하는 검출부; 상기 검출된 상기 바이너리 패턴에 기초하여 상기 바이너리 패턴에 해당하는 고유 패턴 정보를 생성하는 생성부; 상기 생성된 상기 고유 패턴 정보를 키 값으로 하여 상기 프로그램 코드를 암호화하는 암호화부; 및 상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 저장부를 포함한다.
본 발명에 따르면, 동일한 프로그램 코드를 비휘발성 메모리마다 저장할 때 프로그램 코드를 적응적으로(adaptive) 암호화하여 저장함으로써, 비휘발성 메모리의 바이너리 데이터에 대한 보호 수준을 향상시킬 수 있다.
구체적으로, 본 발명은 저장하고자 하는 프로그램 코드의 바이너리 패턴, 비휘발성 메모리와 관련된 고유 정보, 나아가 사용자 정보 및 시간/날짜 정보 등을 이용하여 프로그램 코드를 암호화하고, 이렇게 암호화된 프로그램 코드를 비휘발성 메모리에 저장하기 때문에 비휘발성 메모리의 바이너리 데이터에 대한 보호 수준을 향상시킬 수 있다.
나아가, 본 발명은 복잡한 암호화 하드웨어를 사용하지 않고도 비휘발성 메모리마다 상이하게 암호화된 프로그램 코드를 저장할 수 있기 때문에 비휘발성 메모리에 저장된 프로그램 코드에 대한 보호 수준을 향상시킬 수 있으며, 장치의 단가를 낮춰 경쟁력을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 비휘발성 메모리의 바이너리 데이터 보호 장치에 대한 구성을 나타낸 것이다.
도 2는 도 1에 도시된 검출부에 대한 일 실시예 구성을 나타낸 것이다.
도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리의 바이너리 데이터 보호 방법에 대한 동작 흐름도를 나타낸 것이다.
도 4는 도 3에 도시된 단계 S360에 대한 일 실시예 동작 흐름도를 나타낸 것이다.
도 5는 도 3에 도시된 단계 S360에 대한 다른 일 실시예 동작 흐름도를 나타낸 것이다.
도 6은 도 3에 도시된 단계 S330에 대한 일 실시예 동작 흐름도를 나타낸 것이다.
도 7은 도 3에 의해 저장된 프로그램 코드를 읽는 방법에 대한 일 실시예의 동작 흐름도를 나타낸 것이다.
도 8은 프로그램 코드의 바이너리 데이터로부터 고유 패턴 정보를 생성하는 과정에 대한 일 예를 나타낸 것이다.
도 9는 프로그램 코드의 바이너리 데이터를 암호화하는 과정에 대한 일 예를 나타낸 것이다.
상기 목적 외에 본 발명의 다른 목적 및 특징들은 첨부 도면을 참조한 실시 예에 대한 설명을 통하여 명백히 드러나게 될 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
이하에서는, 본 발명의 일 실시 예에 따른 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치를 첨부된 도 1 내지 도 9를 참조하여 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 비휘발성 메모리의 바이너리 데이터 보호 장치에 대한 구성을 나타낸 것이다.
도 1을 참조하면, 본 발명에 따른 장치는 수신부(110), 검출부(120), 생성부(130), 암호화부(140), 저장부(150), 비휘발성 메모리(160), 패턴 정보 저장부(170), 해독부(180) 및 읽기부(190)를 포함한다.
수신부(110)는 비휘발성 메모리(160)에 저장될 프로그램 코드를 외부로부터 수신한다.
이 때, 수신부(110)는 프로그램 코드를 프로그램 코드를 생성할 수 있는 기기 또는 프로그램, 나아가 프로그램 코드를 저장하고 있는 외부 저장 수단을 통해 수신할 수 있다.
검출부(120)는 수신부(110)로 수신된 프로그램 코드를 분석하여 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출한다.
이 때, 검출부(120)는 프로그램 코드의 비트 값 '1'의 패턴에 기초하여 바이너리 패턴을 검출할 수도 있고, 비트 값 '0'의 패턴에 기초하여 바이너리 패턴을 검출할 수도 있다.
예를 들어, 검출부는 도 8에 도시된 바와 같이, 64KB의 바이너리 데이터(E[7:0][0:65535])에 대한 k번째 8비트 바이너리 데이터(E[7:0][k])와 미리 결정된 패턴 검출 값을 결합하고, 이를 64KB에 대해 반복 수행하여 64KB의 바이너리 데이터에 대한 바이너리 패턴을 검출할 수 있다.
나아가, 검출부(120)는 프로그램 코드에 대한 바이너리 데이터 영역을 복수의 영역들로 분할한 후 분할된 데이터 영역 각각에 대한 데이터 패턴을 검출할 수도 있고, 더 나아가 검출된 복수의 데이터 영역 각각에 대한 데이터 패턴을 이용하여 바이너리 패턴을 검출할 수도 있다. 도 2에서 복수의 영역을 분할하여 복수의 데이터 패턴을 검출하는 것에 대해 설명한다.
도 2는 도 1에 도시된 검출부에 대한 일 실시예 구성을 나타낸 것이다.
도 2를 참조하면, 검출부(120)는 분할부(210) 및 영역 패턴 검출부(220)를 포함한다.
분할부(210)는 프로그램 코드의 데이터 영역 즉, 바이너리 데이터의 데이터 영역을 복수의 영역들로 분할한다.
이 때, 분할부(210)는 바이너리 데이터를 미리 결정된 개수의 데이터 영역으로 분할할 수도 있고, 프로그램 코드의 바이너리 데이터를 일정 영역 단위로 분할할 수도 있다.
영역 패턴 검출부(220)는 분할부(210)에 의해 분할된 복수의 데이터 영역 각각에 대한 데이터의 데이터 패턴을 검출한다.
즉, 영역 패턴 검출부(220)는 프로그램 코드의 복수의 데이터 영역에 대한 복수의 데이터 패턴을 검출한다.
이 때, 영역 패턴 검출부(220)는 이웃하는 데이터 영역에 대한 패턴을 고려하여 해당 데이터 영역에 대한 데이터 패턴을 검출할 수도 있다.
영역 패턴 검출부(220)는 도 8에 도시된 바와 같이, 미리 결정된 패턴 검출 값을 이용하여 복수의 데이터 영역 각각에 대한 데이터 패턴을 검출할 수도 있다.
다시 도 1을 참조하여, 생성부(130)는 검출부(120)에 의해 검출된 바이너리 패턴에 기초하여 바이너리 패턴에 해당하는 고유 패턴 정보를 생성한다.
이 때, 생성부(130)는 바이너리 패턴 정보에 대응하는 고유 패턴 정보가 미리 저장된 데이터 테이블을 이용하여 검출부(120)에 의해 검출된 바이너리 패턴에 해당하는 고유 패턴 정보를 생성할 수도 있고, 바이너리 패턴 정보를 변수로 하는 미리 결정된 함수 등을 이용하여 바이너리 패턴에 대응하는 고유 패턴 정보를 생성할 수도 있다.
예컨대, 생성부(130)는 SHA(Secure Hash Algorithm)-1을 이용하여 고유 패턴 정보를 생성할 수도 있고, 도 8에 도시된 바와 같이, 바이너리 데이터의 고유 패턴 정보를 입력으로 하는 CRC(Cyclic Redundancy Check)-16을 이용하여 바이너리 데이터의 패턴에 대응하는 16 비트의 고유 패턴 정보(fingerprint[15:0])를 생성할 수도 있다. 즉, 생성부에 의해 생성되는 고유 패턴 정보는 프로그램 코드의 바이너리 데이터에 따라 고유하게 생성되는 정보로서, 고유 패턴 정보를 생성하는 방식에 따라 8 비트, 16 비트, 32 비트 등의 정보를 가질 수 있으며, 도 8에 도시된 일 예와 같이, 고유 패턴 정보는 프로그램 코드의 해당 바이트 수(여기서는 64k = 65536 번)만큼 반복 수행하여 생성될 수 있다.
물론, 생성부(130)는 검출부(120)에 의해 복수의 데이터 영역에 대한 데이터 패턴이 검출된 경우에는 복수의 데이터 패턴 각각에 대응하는 복수의 고유 데이터 패턴 정보를 생성할 수도 있다.
이 때, 생성부(130)는 복수의 고유 데이터 패턴 정보를 이용하여 프로그램 코드의 고유 패턴 정보를 생성할 수도 있다.
패턴 정보 저장부(170)는 생성부(130)에 의해 생성된 고유 패턴 정보 또는 데이터 영역 각각에 대한 고유 데이터 패턴 정보를 저장한다.
이 때, 패턴 정보 저장부(170)에 저장된 정보는 해독부(180)에서 비휘발성 메모리(160)에 저장된 데이터 즉, 암호화된 프로그램 코드를 해독할 때 사용될 수 있다.
이런 패턴 정보 저장부(170)는 비휘발성 메모리(160)의 일부 영역에 고유 패턴 정보 또는 고유 데이터 패턴 정보를 저장할 수도 있고, 별도로 구비된 저장 수단에 고유 패턴 정보 또는 고유 데이터 패턴 정보를 저장할 수도 있다.
암호화부(140)는 생성부(130)에 의해 생성된 고유 패턴 정보를 이용하여 프로그램 코드의 바이너리 데이터를 암호화하는 구성으로, 암호화하는데 사용되는 알고리즘은 미리 결정된 암호화 알고리즘일 수도 있고, 복수의 알고리즘들 중 랜덤(random)하게 선택된 암호화 알고리즘일 수도 있다. 즉, 암호화부(140)는 고유 패턴 정보를 이용하여 암호화 키를 생성하고, 생성된 암호화 키를 이용하여 프로그램 코드를 암호화할 수 있다.
이 때, 암호화부(140)는 생성된 암호화 키의 각 비트 값과 프로그램 코드의 비트 값에 대한 배타적논리합(Exclusive-OR) 조합을 이용하여 프로그램 코드를 암호화할 수 있다.
암호화부(140)는 생성부(130)에 의해 복수의 고유 데이터 패턴 정보가 생성되는 경우에는 분할된 복수의 데이터 영역 각각에 대한 고유 데이터 패턴 정보를 이용하여 복수의 데이터 영역 각각을 암호화할 수도 있다.
나아가, 암호화부(140)는 고유 패턴 정보 뿐만 아니라 비휘발성 메모리의 제조 고유 정보와 비휘발성 메모리의 칩 고유 정보 중 적어도 하나를 더 고려하여 프로그램 코드를 암호화할 수도 있다.
예컨대, 도 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번 수행함으로써 원본 프로그램 코드의 바이너리 데이터를 암호화된 데이터로 변환할 수 있다.
도 9에 도시된 시드 생성부는 제조 고유 정보(Fab ID)와 칩 고유 정보(Chip ID)를 이용하여 한번에 16 비트의 시드 값(S[15:0])을 생성할 수도 있지만, 이에 한정하지 않으며 제조 고유 정보(Fab ID)를 이용하여 8 비트의 시드 값(S[7:0])을 생성하고 칩 고유 정보(Chip ID)를 이용하여 8 비트의 시드 값(S[15:8])을 각각 생성할 수도 있다.
도 9에서 알 수 있듯이, 본 발명에 따른 장치는 프로그램 코드가 동일하더라도 비휘발성 메모리의 제조 고유 정보와 칩 고유 정보 중 적어도 하나가 상이하기 때문에 비휘발성 메모리에 암호화되어 저장되는 프로그램 코드는 모두 상이하게 되고, 따라서 동일한 프로그램 코드에 대해서도 고유한 암호화 결과가 나타나게 된다. 결과적으로, 비휘발성 메모리에 저장된 암호화된 프로그램 코드를 반복적으로 분석하더라도 서로 다른 암호화 결과에 의하여 암호화되기 때문에 암호화 방식을 획득하기 힘들고 따라서 프로그램 코드가 유출되는 것을 방지할 수 있다.
나아가, 암호화부(140)는 고유 패턴 정보 뿐만 아니라 본 발명의 장치를 사용하는 사용자 정보와 시간 또는 날짜 정보 중 적어도 하나를 더 고려하여 프로그램 코드를 암호화할 수도 있다.
물론, 암호화부(140)는 비휘발성 메모리의 제조 고유 정보, 비휘발성 메모리의 칩 고유 정보, 사용자 정보와 시간 또는 날짜 정보를 모두 고려하여 프로그램 코드를 암호화할 수도 있다.
이 때, 암호화부(140)에서 프로그램 코드를 암호화할 때 사용되는 정보는 해독부(180)에서 프로그램 코드를 해독할 때 사용할 수 있도록 미리 결정된 저장 영역에 저장되어야 하는 것이 자명하다.
저장부(150)는 암호화부(140)에 의해 암호화된 프로그램 코드를 비휘발성 메모리(160)에 저장한다.
이 때, 저장부(150)는 복수의 데이터 영역 각각에 대한 데이터가 암호화된 경우에는 복수의 데이터 영역 각각에 대해 암호화된 데이터를 비휘발성 메모리(160)의 해당 영역에 저장할 수 있다.
해독부(180)는 비휘발성 메모리(160)에 저장된 프로그램 코드 즉, 암호화된 프로그램 코드를 해독하는 수단으로, 프로그램 코드를 저장할 때 사용된 정보 예를 들어, 프로그램 코드의 고유 패턴 정보, 비휘발성 메모리의 제조 고유 정보, 비휘발성 메모리의 칩 고유 정보, 사용자 정보와 시간 또는 날짜 정보 등을 이용하여 비휘발성 메모리(160)에 저장된 프로그램 코드를 해독한다.
이 때, 해독부(180)는 암호화부(140)에서 프로그램 코드를 암호화할 때 사용한, 암호화 알고리즘에 대응하는 해독 알고리즘과 패턴 정보 저장부(170)에 저장된 프로그램 코드의 고유 패턴 정보를 이용하여 비휘발성 메모리(160)에 저장된 프로그램 코드를 해독할 수 있다. 물론, 암호화부(140)에서 프로그램 코드를 암호화할 때 복수의 데이터 영역을 각각 암호화한 경우, 해독부(180)는 패턴 정보 저장부(170)에 저장된 복수의 고유 데이터 패턴 정보를 이용하여 프로그램 코드의 데이터 영역 각각에 대한 프로그램 코드의 데이터를 해독할 수 있다.
읽기부(190)는 해독부(180)에 의해 해독된 프로그램 코드를 읽는다.
이와 같이, 본 발명에 따른 장치는 프로그램 코드에 대한 바이너리 데이터의 고유 패턴 정보 나아가, 비휘발성 메모리의 제조 고유 정보, 비휘발성 메모리의 칩 고유 정보, 사용자 정보와 시간 또는 날짜 정보 등을 이용하여 프로그램 코드를 암호화하기 때문에 동일한 프로그램 코드가 비휘발성 메모리에 암호화되더라도 비휘발성 메모리마다 프로그램 코드가 상이하게 암호화되고, 따라서 복잡한 암호화 하드웨어를 사용하지 않고도 비휘발성 메모리의 바이너리 데이터에 대한 보호 수준을 향상시킬 수 있다.
도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리의 바이너리 데이터 보호 방법에 대한 동작 흐름도를 나타낸 것으로, 도 1에 도시된 장치에서의 동작 흐름도에 대한 것이다.
도 3을 참조하면, 본 발명에 따른 방법은 비휘발성 메모리에 저장될 프로그램 코드를 수신하고, 수신된 프로그램 코드를 분석하여 프로그램 코드에 포함된 바이너리 데이터의 바이너리 패턴을 검출한다(S310 내지 S330).
이 때, 단계 S320은 바이너리 데이터의 비트 값 '0'과 '1'을 이용하여 프로그램 코드를 분석할 수 있으며, 단계 S330은 프로그램 코드 분석을 통해 획득된 바이너리 데이터의 비트 값 예를 들어, 비트 값 '1' 또는 '0'을 이용하여 바이너리 패턴을 검출할 수 있다.
단계 S330에 의해 프로그램 코드에 대한 바이너리 패턴이 검출되면, 검출된 바이너리 패턴에 기초하여 바이너리 패턴에 해당하는 고유 패턴 정보를 생성한다(S340).
이 때, 고유 패턴 정보는 바이너리 패턴에 대응하는 m비트의 정보일 수 있으며, 이런 고유 패턴 정보는 미리 저장된 바이너리 패턴과 이에 대한 고유 패턴 정보들에 대한 데이터 테이블 또는 바이너리 패턴 정보를 변수로 하는 함수를 통해 생성되거나 획득될 수도 있고, 암호화 키를 생성하는 알고리즘을 통해 획득될 수도 있다.
단계 S340에 의해 생성된 고유 패턴 정보를 미리 결정된 저장 영역에 저장하고, 생성된 고유 패턴 정보를 이용하여 프로그램 코드를 암호화한다(S350, S360).
물론, 고유 패턴 정보를 이용하여 프로그램 코드를 암호화할 때, 고유 패턴 정보를 이용하여 암호화 키를 생성하고, 생성된 암호화 키를 이용하여 프로그램 코드를 암호화할 수 있다. 상황에 따라 고유 패턴 정보 자체가 암호화 키로 사용될 수도 있다.
고유 패턴 정보에 의해 암호화된 프로그램 코드는 비휘발성 메모리에 저장된다(S370).
상기 단계들 중 단계 S360의 프로그램 코드를 암호화하는데 있어서, 비휘발성 메모리마다 상이하게 암호화된 프로그램 코드를 생성하기 위하여 프로그램 코드의 고유 패턴 정보 뿐만 아니라 부가적인 정보를 이용하여 암호화할 수 있으며, 이에 대해 도 4와 도 5를 예로 들어 설명한다.
도 4는 도 3에 도시된 단계 S360에 대한 일 실시예 동작 흐름도를 나타낸 것이다.
도 4를 참조하면, 프로그램 코드를 암호화하는 단계(S360)는 프로그램 코드가 저장될 비휘발성 메모리의 제조 고유 정보와 칩 고유 정보를 확인한다(S410).
여기서, 비휘발성 메모리의 제조 고유 정보는 해당 비휘발성 메모리의 제조 번호로서, FAB(fabrication) ID가 될 수 있고, 비휘발성 메모리의 칩 고유 정보는 해당 비휘발성 메모리의 제품 번호(CHIP ID)가 될 수 있으며, 이런 제조 고유 정보와 칩 고유 정보는 미리 결정된 저장 영역에 저장되거나 외부에서 확인할 수 없도록 장치 내부에 암호화되어 저장될 수 있다.
단계 S410에 의해 비휘발성 메모리의 제조 고유 정보와 칩 고유 정보가 확인되면, 비휘발성 메모리의 제조 고유 정보, 칩 고유 정보 그리고 단계 S340에 의해 생성된 고유 패턴 정보를 이용하여 프로그램 코드를 암호화한다(S420).
마찬가지로, 단계 S420은 고유 패턴 정보, 제조 고유 정보, 칩 고유 정보를 이용하여 암호화 키를 생성하고, 생성된 암호화 키를 이용하여 프로그램 코드를 암호화할 수 있다.
도 5는 도 3에 도시된 단계 S360에 대한 다른 일 실시예 동작 흐름도를 나타낸 것이다.
도 5를 참조하면, 프로그램 코드를 암호화하는 단계(S360)는 해당 장치를 사용하거나 비휘발성 메모리에 저장된 프로그램 코드를 사용하는 사용자의 사용자 정보, 해당 장치에서의 시간 또는 날짜 정보를 확인한다(S510).
여기서, 사용자 정보는 미리 결정된 저장 영역에 저장되거나 외부에서 확인할 수 없도록 장치 내부에 암호화되어 저장될 수 있고, 시간 또는 날짜 정보는 본 발명의 장치 또는 본 발명의 장치가 탑재되는 기기로부터 획득될 수 있다.
단계 S510에 의해 사용자 정보, 시간 또는 날짜 정보가 확인되면, 사용자 정보, 시간 또는 날짜 정보 그리고 단계 S340에 의해 생성된 고유 패턴 정보를 이용하여 프로그램 코드를 암호화한다(S520).
마찬가지로, 단계 S520은 고유 패턴 정보, 사용자 정보, 시간 또는 날짜 정보를 이용하여 암호화 키를 생성하고, 생성된 암호화 키를 이용하여 프로그램 코드를 암호화할 수 있다.
도 6은 도 3에 도시된 단계 S330에 대한 일 실시예 동작 흐름도를 나타낸 것이다.
도 6을 참조하면, 바이너리 패턴을 검출하는 단계(S330)는 프로그램 코드의 바이너리 데이터에 대한 데이터 영역을 복수의 데이터 영역으로 분할한다(S610).
여기서, 단계 S610은 바이너리 데이터를 미리 결정된 개수의 데이터 영역으로 분할할 수도 있고, 프로그램 코드의 바이너리 데이터를 일정 영역 단위로 분할할 수도 있다.
단계 S610에 의해 복수의 데이터 영역으로 분할되면, 분할된 복수의 데이터 영역들 각각의 데이터에 대한 데이터 패턴을 검출한다(S620).
나아가, 본 발명에 따른 방법은 단계 S620에 의해 복수의 데이터 영역들 각각에 대한 데이터 패턴이 검출되면, 검출된 복수의 데이터 패턴들을 이용하여 프로그램 코드의 바이너리 패턴을 검출할 수 있다. 즉, 복수의 데이터 패턴들에 대한 조합 또는 복수의 데이터 패턴들에 대한 테이블을 이용하여 바이너리 패턴을 검출할 수 있다.
또한, 단계 S620에 의해 검출된 복수의 데이터 패턴들을 직접 이용하여 도 3에서의 프로그램 코드를 암호화할 수도 있다. 즉, 단계 S620에 의해 복수의 데이터 패턴들이 검출되면, 검출된 복수의 데이터 패턴들 각각에 기초하여 분할된 복수의 데이터 영역들 각각에 대한 데이터의 고유 데이터 패턴 정보를 생성하고, 생성된 복수의 고유 데이터 패턴 정보를 이용하여 프로그램 코드에 대한 복수의 영역들 각각의 데이터를 암호화한다.
도 7은 도 3에 의해 저장된 프로그램 코드를 읽는 방법에 대한 일 실시예의 동작 흐름도를 나타낸 것이다.
도 7을 참조하면, 비휘발성 메모리에 저장된 프로그램 코드를 읽기 위하여, 미리 결정된 저장 영역에 저장된 프로그램 코드의 고유 패턴 정보를 확인하고, 확인된 고유 패턴 정보를 이용하여 비휘발성 메모리에 저장된 암호화된 프로그램 코드를 해독한다(S710, S720).
물론, 프로그램 코드가 고유 패턴 정보 뿐만 아니라 비휘발성 메모리의 제조 고유 정보, 칩 고유 정보, 사용자 정보, 시간 또는 날짜 정보 중 적어도 하나 이상을 이용하여 암호화된 경우, 단계 S720에서 암호화된 프로그램 코드를 해독할 때, 프로그램 코드를 암호화하는데 사용된 고유 패턴 정보 그리고 비휘발성 메모리의 제조 고유 정보, 칩 고유 정보, 사용자 정보, 시간 또는 날짜 정보 중 적어도 하나 이상을 이용하여 암호화된 프로그램 코드를 해독한다.
비휘발성 메모리에 저장된 프로그램 코드가 해독되면, 해독된 프로그램 코드를 읽는다(S730).
본 발명의 일 실시 예에 따른 비휘발성 메모리의 바이너리 데이터 보호 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.

Claims (15)

  1. 프로그램 코드를 수신하는 단계;
    상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출하는 단계;
    상기 검출된 상기 바이너리 패턴에 기초하여 상기 바이너리 패턴에 해당하는 고유 패턴 정보를 생성하는 단계;
    상기 생성된 상기 고유 패턴 정보를 이용하여 상기 프로그램 코드를 암호화하는 단계; 및
    상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 단계
    를 포함하는 비휘발성 메모리의 바이너리 데이터 보호 방법.
  2. 제1항에 있어서,
    상기 암호화하는 단계는
    상기 메모리의 제조 고유 정보와 상기 메모리의 칩 고유 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 방법.
  3. 제1항에 있어서,
    상기 암호화하는 단계는
    사용자 정보와 시간 또는 날짜 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 방법.
  4. 제1항에 있어서,
    상기 메모리에 저장된 상기 암호화된 상기 프로그램 코드를 상기 고유 패턴 정보를 이용하여 해독하는 단계; 및
    상기 해독된 상기 프로그램 코드를 읽는 단계
    를 더 포함하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 방법.
  5. 제4항에 있어서,
    상기 생성된 상기 고유 패턴 정보를 미리 결정된 저장 영역에 저장하는 단계
    를 더 포함하고,
    상기 해독하는 단계는
    상기 저장된 상기 고유 패턴 정보를 이용하여 상기 암호화된 상기 프로그램 코드를 해독하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 방법.
  6. 프로그램 코드를 수신하는 단계;
    상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 단계;
    상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하는 단계;
    상기 검출된 상기 데이터 패턴에 기초하여 상기 복수의 영역들 각각에 대한 데이터의 고유 데이터 패턴 정보를 생성하는 단계;
    상기 생성된 상기 고유 데이터 패턴 정보를 이용하여 상기 복수의 영역들 각각에 대한 데이터를 암호화하는 단계; 및
    상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 단계
    를 포함하는 비휘발성 메모리의 바이너리 데이터 보호 방법.
  7. 제1항에 있어서,
    상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 단계
    를 더 포함하고,
    상기 검출하는 단계는
    상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하고, 상기 검출된 상기 데이터 패턴을 이용하여 상기 바이너리 패턴을 검출하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 방법.
  8. 제1항 내지 제7항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
  9. 프로그램 코드를 수신하는 수신부;
    상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드를 구성하는 바이너리 데이터의 바이너리 패턴을 검출하는 검출부;
    상기 검출된 상기 바이너리 패턴에 기초하여 상기 바이너리 패턴에 해당하는 고유 패턴 정보를 생성하는 생성부;
    상기 생성된 상기 고유 패턴 정보를 키 값으로 하여 상기 프로그램 코드를 암호화하는 암호화부; 및
    상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 저장부
    를 포함하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 장치.
  10. 제9항에 있어서,
    상기 암호화부는
    상기 메모리의 제조 고유 정보와 상기 메모리의 칩 고유 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 장치.
  11. 제9항에 있어서,
    상기 암호화부는
    사용자 정보와 날짜 또는 시간 정보 중 적어도 하나를 더 고려하여 상기 프로그램 코드를 암호화하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 장치.
  12. 제9항에 있어서,
    상기 메모리에 저장된 상기 암호화된 상기 프로그램 코드를 상기 고유 패턴 정보를 이용하여 해독하는 해독부; 및
    상기 해독된 상기 프로그램 코드를 읽는 읽기부
    를 더 포함하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 장치.
  13. 제12항에 있어서,
    상기 생성된 상기 고유 패턴 정보를 미리 결정된 저장 영역에 저장하는 패턴 정보 저장부
    를 더 포함하고,
    상기 해독부는
    상기 패턴 정보 저장부에 저장된 상기 고유 패턴 정보를 이용하여 상기 암호화된 상기 프로그램 코드를 해독하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 장치.
  14. 프로그램 코드를 수신하는 수신부;
    상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 분할부;
    상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하는 검출부;
    상기 검출된 상기 데이터 패턴에 기초하여 상기 복수의 영역들 각각에 대한 데이터의 고유 데이터 패턴 정보를 생성하는 생성부;
    상기 생성된 상기 고유 데이터 패턴 정보를 이용하여 상기 복수의 영역들 각각에 대한 데이터를 암호화하는 암호화부; 및
    상기 암호화된 상기 프로그램 코드를 메모리에 저장하는 저장부
    를 포함하는 비휘발성 메모리의 바이너리 데이터 보호 장치.
  15. 제9항에 있어서,
    상기 수신된 상기 프로그램 코드의 데이터 영역을 복수의 영역들로 분할하는 분할부
    를 더 포함하고,
    상기 검출부는
    상기 분할된 상기 복수의 영역들 각각에 대한 데이터의 데이터 패턴을 검출하고, 상기 검출된 상기 데이터 패턴을 이용하여 상기 바이너리 패턴을 검출하는 것을 특징으로 하는 비휘발성 메모리의 바이너리 데이터 보호 장치.
KR1020130005978A 2013-01-18 2013-01-18 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치 KR101416685B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020130005978A KR101416685B1 (ko) 2013-01-18 2013-01-18 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치
JP2015553646A JP2016508629A (ja) 2013-01-18 2013-12-12 不揮発性メモリのバイナリデータの保護方法及びその装置
CN201380070696.9A CN104919468A (zh) 2013-01-18 2013-12-12 非挥发性记忆体的二进制数据保护方法及其装置
PCT/KR2013/011504 WO2014112720A1 (ko) 2013-01-18 2013-12-12 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치
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 (1)

Application Number Priority Date Filing Date Title
KR1020130005978A KR101416685B1 (ko) 2013-01-18 2013-01-18 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치

Publications (1)

Publication Number Publication Date
KR101416685B1 true KR101416685B1 (ko) 2014-07-09

Family

ID=51209786

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130005978A KR101416685B1 (ko) 2013-01-18 2013-01-18 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치

Country Status (5)

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

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102488636B1 (ko) 2017-11-23 2023-01-17 삼성전자주식회사 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치
CN110942129B (zh) * 2019-12-16 2023-06-02 矩网科技有限公司 一种五角星加密码的生成方法
KR20220021186A (ko) 2020-08-13 2022-02-22 에스케이하이닉스 주식회사 데이터 처리 시스템 내 데이터를 공유하는 장치 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050115151A (ko) * 2004-06-03 2005-12-07 삼성전자주식회사 보안 데이터를 저장할 수 있는 메모리 카드 및 메모리카드의 동작 방법
JP4625737B2 (ja) 2005-08-25 2011-02-02 シャープ株式会社 コンテンツ記録再生装置
KR101156102B1 (ko) 2011-05-11 2012-06-20 이승진 보안기능이 구비된 메모리 카드 리더기 및 이를 이용한 데이터 암호화 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0869419A (ja) * 1994-08-30 1996-03-12 Shimadzu Corp デジタルデータの記録装置および記録媒体
US5673319A (en) * 1995-02-06 1997-09-30 International Business Machines Corporation Block cipher mode of operation for secure, length-preserving encryption
JP2000112751A (ja) * 1998-10-07 2000-04-21 Nippon Columbia Co Ltd ソフトウエア流通システムに用いる装置
JP4350962B2 (ja) * 2002-03-13 2009-10-28 パナソニック株式会社 セキュアデバイス
JP2004023351A (ja) * 2002-06-14 2004-01-22 Oki Electric Ind Co Ltd マイクロコンピュータのプログラム保護方法
JP2004126639A (ja) * 2002-09-30 2004-04-22 Toshiba Corp データ管理システム、データ管理方法及びプログラム
JP2004265194A (ja) * 2003-03-03 2004-09-24 Matsushita Electric Ind Co Ltd 情報処理装置、および情報処理方法
JP2004325677A (ja) * 2003-04-23 2004-11-18 Sony Corp 暗号処理装置および暗号処理方法、並びにコンピュータ・プログラム
JP5131187B2 (ja) * 2006-03-14 2013-01-30 日本電気株式会社 情報処理システム、情報処理方法および情報処理プログラム
JP4912174B2 (ja) * 2007-02-07 2012-04-11 株式会社日立製作所 ストレージシステム及び記憶管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050115151A (ko) * 2004-06-03 2005-12-07 삼성전자주식회사 보안 데이터를 저장할 수 있는 메모리 카드 및 메모리카드의 동작 방법
JP4625737B2 (ja) 2005-08-25 2011-02-02 シャープ株式会社 コンテンツ記録再生装置
KR101156102B1 (ko) 2011-05-11 2012-06-20 이승진 보안기능이 구비된 메모리 카드 리더기 및 이를 이용한 데이터 암호화 방법

Also Published As

Publication number Publication date
CN104919468A (zh) 2015-09-16
JP2016508629A (ja) 2016-03-22
WO2014112720A1 (ko) 2014-07-24
US20150324613A1 (en) 2015-11-12

Similar Documents

Publication Publication Date Title
US10361850B2 (en) Authenticator, authenticatee and authentication method
JP6617924B2 (ja) 耐タンパ性を有する不揮発性メモリ装置および集積回路カード、不揮発性メモリ装置の認証方法、個体識別情報生成方法
EP2174255B1 (en) Method and device for providing digital security
US10097348B2 (en) Device bound encrypted data
JP6587188B2 (ja) 乱数処理装置、集積回路カード、および乱数処理方法
CN106599735B (zh) 数据保护装置、方法以及存储控制器
US9892783B2 (en) Non-volatile memory device including memory cells having variable resistance values
US9104610B2 (en) Method, system and medium for analog encryption in a flash memory
JP5100884B1 (ja) メモリ装置
KR101546204B1 (ko) 호스트 디바이스, 반도체 메모리 디바이스, 및 인증 방법
EP3454236B1 (en) Authenticator, authenticatee and authentication method
JP5112555B1 (ja) メモリカード、ストレージメディア、及びコントローラ
JP5204291B1 (ja) ホスト装置、装置、システム
Jia et al. Extracting robust keys from NAND flash physical unclonable functions
KR101416685B1 (ko) 비휘발성 메모리의 바이너리 데이터 보호 방법 및 그 장치
CN108958650B (zh) 电子系统及其操作方法
JP4991971B1 (ja) 被認証装置及びその認証方法
JP5204290B1 (ja) ホスト装置、システム、及び装置
US11244078B2 (en) Side channel attack protection
JP2005292902A (ja) 半導体集積回路

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170627

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180702

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190701

Year of fee payment: 6