KR20210048835A - 전자 장치 및 이의 제어 방법 - Google Patents

전자 장치 및 이의 제어 방법 Download PDF

Info

Publication number
KR20210048835A
KR20210048835A KR1020190133001A KR20190133001A KR20210048835A KR 20210048835 A KR20210048835 A KR 20210048835A KR 1020190133001 A KR1020190133001 A KR 1020190133001A KR 20190133001 A KR20190133001 A KR 20190133001A KR 20210048835 A KR20210048835 A KR 20210048835A
Authority
KR
South Korea
Prior art keywords
executable file
block
hash
value
hash value
Prior art date
Application number
KR1020190133001A
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 KR1020190133001A priority Critical patent/KR20210048835A/ko
Priority to PCT/KR2020/008938 priority patent/WO2021080123A1/ko
Publication of KR20210048835A publication Critical patent/KR20210048835A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

전자 장치 및 이의 제어 방법이 제공된다. 본 전자 장치의 제어 방법은, 프로그램을 실행하기 위한 실행 파일을 획득하는 단계; 상기 획득된 실행 파일을 블록 단위로 분할하는 단계; 상기 분할된 블록 각각에 대한 복수의 제1 해시 값을 획득하는 단계; 상기 블록에 대한 정보 및 상기 복수의 제1 해시 값을 상기 실행 파일에 추가하는 단계; 및 상기 복수의 제1 해시 값을 개인키를 통해 암호화 하여 서명 값을 획득하여 상기 서명 값을 상기 실행 파일에 추가하는 단계;를 포함한다.

Description

전자 장치 및 이의 제어 방법 { ELECTRONIC APPARATUS AND METHOD FOR CONTROLLING THEREOF }
본 개시는 전자 장치 및 이의 제어 방법에 관한 것으로, 더욱 상세하게는 프로그램을 실행하기 위한 실행 파일에서 실제 사용되는 블록에 대한 해시 값 만을 계산해, 실제 사용되는 블록에 대한 무결성을 검증하는 전자 장치 및 이의 제어 방법에 관한 것이다.
최근 컴퓨터 기술의 발전으로 현대인의 삶이 편하게 바뀌고 있다. 하지만, 컴퓨터 기술 발전의 이면에는 이를 악용하여 부당한 이득을 얻으려는 시도도 증가하고 있다.
예로, 프로그램을 실행하기 위한 실행 파일을 불법으로 위조되거나 변조하여 사용하는 행위가 증가되고 있다. 실행 파일이 불법으로 위조되거나 변조되는 경우, 실행 파일을 사용하는 사용자의 개인 정보가 노출되거나, 실행 파일에 대한 저작권이 침해되는 경우가 발생될 수 있다.
또한, 최근에는 프로그램을 실행하기 위한 실행 파일을 불법으로 사용하기 위한 다양한 해킹 기술이 등장하고 있다.
따라서, 실행 파일의 위조나 변조를 방지하기 위해, 종래에는 실행 파일에 실행 파일 전체에 대한 해시 값을 계산한 후, 해시 값을 암호화한 서명 값을 실행 파일에 추가하고, 프로그램을 실행하기 위한 사용자 명령이 입력되면, 프로그램 실행 파일 전체를 메모리에 할당하여 실행 파일 전체에 대한 해시 값을 계산하고, 실행 파일에 추가된 서명 값을 복호화하여 계산된 해시 값과 비교하여 실행 파일에 대한 변조 여부를 확인하는 무결성 검증을 수행하였다. 즉, 종래에는 실행 파일에 추가된 서명 값을 복호화하여 획득된 해시 값이 실행 파일 전체에 대해 계산된 해시 값과 동일한 경우, 해당 실행 파일에 대한 무결성이 검증된 것으로 판단하였다.
실행 파일의 경우 일정한 용량 단위로 실행 파일을 분할한 블록 단위로 관리되는데, 종래의 무결성 검증 방법의 경우 실제 프로그램의 실행에 필요하지 않은 실행 파일의 블록들도 함께 메모리에 할당되어 성능 저하가 발생되고, 무결성을 검증하기 위해 실행 파일 전체에 대한 해시 값을 계산해야 되어 연산량 증가로 인한 성능 저하의 문제점이 발생될 수 있었다.
본 개시는 상술한 문제점을 해결하기 위한 것으로, 본 개시의 목적은 실행 파일의 블록 단위 별로 무결성을 검증할 수 있는 전자 장치 및 이의 제어 방법을 제공함에 있다.
본 개시의 일 실시 예에 따른, 전자 장치의 제어 방법은, 프로그램을 실행하기 위한 실행 파일을 획득하는 단계; 상기 획득된 실행 파일을 블록 단위로 분할하는 단계; 상기 분할된 블록 각각에 대한 복수의 제1 해시 값을 획득하는 단계; 상기 블록에 대한 정보 및 상기 복수의 제1 해시 값을 상기 실행 파일에 추가하는 단계; 및 상기 복수의 제1 해시 값을 개인키를 통해 암호화 하여 서명 값을 획득하여 상기 서명 값을 상기 실행 파일에 추가하는 단계;를 포함한다.
그리고, 상술한 목적을 달성하기 위한 본 개시의 일 실시 예에 따른, 전자 장치는, 적어도 하나의 인스트럭션을 저장하는 메모리, 및 프로세서를 포함하고, 상기 프로세서는 상기 인스트럭션을 실행함으로써, 프로그램을 실행하기 위한 실행 파일을 획득하고, 상기 획득된 실행 파일을 블록 단위로 분할하고, 상기 분할된 블록 각각에 대한 복수의 제1 해시 값을 획득하고, 상기 블록에 대한 정보 및 상기 복수의 제1 해시 값을 상기 실행 파일에 추가하고, 상기 복수의 제1 해시 값을 개인키를 통해 암호화 하여 서명 값을 획득하여 상기 서명 값을 상기 실행 파일에 추가한다.
본 개시의 다양한 실시 예에 따르면, 실행 파일의 블록 단위 별로 무결성을 검증하여, 해시 값 계산에 필요한 연산량이 줄어들어, 실행 파일의 무결성 검증에 필요한 시간이 단축될 수 있다.
도 1은 본 개시의 일 실시 예에 따른, 전자 장치의 구성을 나타내는 블록도 이다.
도 2는 본 개시의 일 실시 예에 따른, 실행 파일의 블록 단위 별로 무결성 검증을 수행하기 위한, 실행 파일의 구성을 도시한 도면이다.
도 3은 본 개시의 일 실시 예에 따른, 실행 파일의 블록 단위 별 무결성을 검증하는 방법을 나타낸 도면이다.
도 4는 본 개시의 일 실시 예에 따른, 실행 파일의 용량이 임계 값 이하인 경우 실행 파일 전체에 대한 무결성을 검증하기 위한 실행 파일을 나타내는 도면이다.
도 5는 본 개시의 일 실시 예에 따른 블록 단위 별로 무결성을 검증하기 위한 실행 파일을 생성하기 위한 방법을 나타내는 흐름도 이다.
도 6은 본 개시의 일 실시 예에 따른 전자 장치의 블록 단위 별로 실행 파일의 무결성을 검증하는 방법을 나타내는 흐름도 이다.
도 7은 본 개시의 일 실시 예에 따른, 실행 파일의 용량에 따른 무결성 검증 방법을 나타내는 흐름도 이다.
도 8은 본 개시의 일 실시 예에 따른, 전자 장치의 구체적인 구성을 나타내는 블록도이다.
본 개시의 실시 예에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 개시의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 문서의 실시 예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 문서에서, "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 문서에서, "A 또는 B," "A 또는/및 B 중 적어도 하나," 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B," "A 및 B 중 적어도 하나," 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다. 본 문서에서 사용된 "제1," "제2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다.
어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제 3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 문서에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)," "~하는 능력을 가지는(having the capacity to)," "~하도록 설계된(designed to)," "~하도록 변경된(adapted to)," "~하도록 만들어진(made to)," 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 부프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
한편, 본 개시에서 사용된 용어 "부" 또는 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. "부" 또는 "모듈"은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 모듈은 ASIC(application-specific integrated circuit)으로 구성될 수 있다.
이하에서는 도면을 참조하여 본 발명에 대해 상세히 설명하기로 한다.
도 1은 본 개시의 일 실시 예에 따른, 전자 장치의 구성을 나타내는 블록도이다.
도 1을 참조하면, 전자 장치(100)는 메모리(110) 및 프로세서(120)를 포함할 수 있다.
구체적으로, 전자 장치(100)는 TV, PC, 랩탑 PC, 휴대폰, 태블릿 PC, PDA, MP3 플레이어, 키오스크, 전자 액자 등과 같이 다양한 유형의 장치로 구현될 수 있다. 휴대폰이나 태블릿 PC, PDA, MP3 플레이어, 랩탑 PC 등과 같이 휴대 가능한 유형의 장치로 구현되는 경우에는 모바일 디바이스로 명명할 수도 있으나, 본 명세서에서는 전자 장치로 통칭하여 설명한다.
메모리(110)는 어플리케이션과 같은 프로그램 및 파일 등과 같은 다양한 종류의 데이터가 설치 및 저장될 수 있다. 프로세서(120)는 메모리(110)에 저장된 데이터에 접근하여 이를 이용하거나, 또는 새로운 데이터를 메모리(110)에 저장할 수도 있다. 또한, 프로세서(120)는 메모리(110)에 설치된 프로그램을 실행할 수도 있다. 또한, 프로세서(120)는 외부로부터 수신한 어플리케이션을 메모리(110)에 설치할 수 있다.
구체적으로, 메모리(110)는 전자 장치(100)의 적어도 하나의 다른 구성요소에 관계된 명령(instruction) 또는 데이터를 저장할 수 있다. 특히, 메모리(110)는 비휘발성 메모리, 휘발성 메모리, 플래시메모리(flash-memory), 하드디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD) 등으로 구현될 수 있다. 메모리(110)는 프로세서(120)에 의해 액세스되며, 프로세서(120)에 의한 데이터의 독취/기록/수정/삭제/갱신 등이 수행될 수 있다. 본 개시에서 메모리라는 용어는 메모리(110), 프로세서(120) 내 롬(미도시), 램(미도시) 또는 전자 장치(100)에 장착되는 메모리 카드(미도시)(예를 들어, micro SD 카드, 메모리 스틱)를 포함할 수 있다. 본 개시에 따른 실행 파일에 대한 무결성 검증을 위해, 실행 파일을 분할한 블록 단위 별로 메모리(110)에 할당될 수 있다.
프로세서(120)는 메모리(110)와 전기적으로 연결되어 전자 장치(100)의 전반적인 동작 및 기능을 제어할 수 있다.
일 실시 예에 따라 프로세서(120)는 디지털 시그널 프로세서(digital signal processor(DSP), 마이크로 프로세서(microprocessor), TCON(Time controller)으로 구현될 수 있다. 다만, 이에 한정되는 것은 아니며, 중앙처리장치(central processing unit(CPU)), MCU(Micro Controller Unit), MPU(micro processing unit), 컨트롤러(controller), 어플리케이션 프로세서(application processor(AP)), 또는 커뮤니케이션 프로세서(communication processor(CP)), ARM 프로세서 중 하나 또는 그 이상을 포함하거나, 해당 용어로 정의될 수 있다. 또한, 프로세서(120)는 프로세싱 알고리즘이 내장된 SoC(System on Chip), LSI(large scale integration)로 구현될 수도 있고, FPGA(Field Programmable gate array) 형태로 구현될 수도 있다.
특히, 프로세서(120)는 메모리(110)에 저장된 적어도 하나의 명령어를 실행함으로써, 프로그램을 실행하기 위한 실행 파일(executable file)을 획득할 수 있다. 실행 파일(executable file)이란 단순히 데이터만 담고 있는 파일과 달리 코드화된 명령에 따라 지시된 작업을 수행할 수 있는 파일이다. 구체적으로, 실행 파일은 코드화된 명령에 따라 지시된 작업을 수행하도록 하는 컴퓨터 파일을 의미 하며, 지시된 작업 내용에 따라 리소스에 접근이 필요할 수 있다. 스크립트나 바이트코드와 같은 인터프리터, CPU 또는 가상 머신을 위한 명령을 포함하는 파일도 실행 파일에 포함될 수 있다. 예를 들어, 실행 파일은 MS-DOS나 Windows에서의 '.exe' 등의 확장자를 갖는 파일들일 수 있으며, 리눅스에서의 elf 파일, 안드로이드 앱 내에서의 '.dex' 등의 확장자를 갖는 파일 등이 대표적일 수 있으며, 이에 한정되지는 않는다.
본 개시의 일 실시 예에 따르면, 프로세서(120)는 외부 장치 또는 서버로부터 실행 파일을 획득할 수 있다. 다만, 이에 한정되지 않으며, 프로세서(120)는 사용자로부터 직접 실행 파일을 획득할 수 있다.
그리고, 프로세서(120)는 획득된 실행 파일을 블록 단위로 분할 할 수 있다. 프로그램을 실행하기 위한 실행 파일은 블록 단위로 분할되어 관리되는데, 구체적으로 블록 단위는 운영체제에서 실행 파일을 관리하는 단위를 의미한다. 예로, 실행 파일의 용량에 따라 일정 블록 단위로 분할 될 수 있다. 즉, 실행 파일의 용량이 큰 경우 분할되는 블록의 개수가 실행 파일의 용량이 작은 경우 분할되는 블록의 개수보다 상대적으로 많을 수 있다. 그리고, 본 개시의 일 실시 예에 따르면, 분할된 블록 각각의 용량은 서로 동일 할 수 있다.
즉, 프로그램을 실행하기 위한 실행 파일이 실행되는 경우, 실행 파일이 블록 단위로 분할 되어 관리되므로, 실행 파일 전체가 메모리에 할당되지 않고, 분할된 블록 중 실행 파일의 실행에 사용되는 블록만 메모리에 할당된다. 그리고, 프로그램이 실행되는 중 실행 파일의 블록 중 적어도 하나의 블록에 대응되는 사용자 명령이 입력되는 경우, 사용자의 명령에 대응되는 블록이 메모리에 할당될 수 있다. 적어도 하나의 블록에 대응되는 사용자 명령은 적어도 하나의 블록에 포함된 코드를 실행하기 위한 사용자 명령일 수 있다. 본 개시의 일 실시 예에 따르면, 실행 파일 및 실행 파일의 블록이 할당되는 메모리는 RAM(Random Access Memory)과 같은 휘발성 메모리 일 수 있다.
프로세서(120)는 실행파일이 블록 단위로 분할된 경우, 분할된 블록 각각에 대한 복수의 제1 해시 값을 획득할 수 있다. 구체적으로, 프로세서(120)는 기 설정된 알고리즘을 바탕으로 분할된 블록 각각에 대한 해시 값을 계산하고, 계산된 해시 값을 바탕으로 실행 파일의 블록에 대한 복수의 제1 해시 값을 획득할 수 있다. 기 설정된 알고리즘은 블록 또는 파일에 대한 해시 값을 계산하기 위한 방법에 대한 알고리즘으로, 해시 함수를 포함할 수 있다. 기 설정된 해시 알고리즘의 예로 MD5, SHA256 등이 있으며, 기 설정된 알고리즘은 사용자에 의해 설정되거나, 실행 파일의 제조사에 의해 설정될 수 있다.
프로세서(120)는 분할된 블록 각각에 대한 복수의 제1 해시 값을 획득하고, 블록에 대한 정보 및 복수의 제1 해시 값을 실행 파일에 추가할 수 있다. 블록에 대한 정보는 블록의 용량, 블록의 개수에 대한 정보 및 복수의 제1 해시 값을 획득한 알고리즘에 대한 정보를 포함할 수 있다. 본 개시의 일 실시 예에 따르면, 블록에 대한 정보에는 사용자의 실행 파일 접근 권한에 대한 접근 제어 정보를 더 포함 할 수 있다.
그리고, 프로세서(120)는 복수의 제1 해시 값을 개인키 (private key) 를 통해 암호화 하여 복수의 제1 해시 값에 대한 서명 값을 획득하여 서명 값을 실행 파일에 추가할 수 있다. 구체적으로, 실행 파일이 블록 단위로 분할 되고, 각각의 블록에 대한 해시 값이 계산된 후, 프로세서(120)는 계산된 해시 값을 개인키를 사용해 암호화 하여 각각의 블록에 대한 해시 값에 대한 서명 값을 획득할 수 있다. 그리고, 프로세서(120)는 획득된 서명 값을 실행 파일에 추가할 수 있다. 즉, 본 개시의 일 실시 예에 따르면, 프로세서(120)는 실행 파일에 복수의 제1 해시 값 및 블록에 대한 정보를 추가하고, 복수의 제1 해시 값에 대한 서명 값을 추가하여, 해당 실행 파일에 대해 블록 단위 별로 무결성 검증을 수행할 수 있다.
프로세서(120)는 복수의 제1 해시 값, 블록에 대한 정보 및 서명 값이 추가된 실행 파일을 실행 하기 위한 사용자 명령이 입력되면, 실행 파일에 추가된 서명 값을 공개키를 통해 복호화 하여 서명 값에 대한 복수의 제2 해시 값을 획득할 수 있다. 공개키는 복수의 제1 해시 값을 암호화한 개인키에 대응되는 공개키 일 수 있다. 그리고, 프로세서(120)는 실행 파일에 추가된 복수의 제1 해시 값에 대한 무결성을 검증하기 위해, 복수의 제1 해시 값과 복수의 제2 해시 값이 동일한지 여부를 식별할 수 있다.
복수의 제1 해시 값과 복수의 제2 해시 값이 동일한 것으로 식별되면, 프로세서(120)는 복수의 제1 해시 값에 대한 무결성이 검증된 것으로 판단하고, 실행 파일에 추가된 복수의 제1 해시 값 및 블록에 대한 정보를 메모리에 할당할 수 있다. 본 개시의 일 실시 예에 따르면, 프로세서(120)는 메모리에 할당된 복수의 제1 해시 값 및 블록에 대한 정보를 커널 메모리 상의 파일 정보에 연결할 수 있다. 즉, 프로세서(120)는 복수의 제1 해시 값 및 블록에 대한 정보를 운영체제의 관리정보가 저장된 커널 메모리 상의 파일 정보에 연결하여, 사용자의 실행 파일에 대한 명령에 대응되는 동작이 수행될 수 있다.
복수의 제1 해시 값과 복수의 제2 해시 값이 동일하지 않은 것으로 식별되면, 프로세서(120)는 복수의 제1 해시 값에 대한 무결성이 검증되지 않은 것으로 판단하고, 실행 파일의 실행을 취소할 수 있다.
그리고, 실행 파일에 추가된 제1 해시 값에 대한 무결성이 검증되어, 블록에 대한 정보 및 복수의 제1 해시 값이 메모리에 할당되고 실행 파일이 실행되는 도중, 실행 파일에 대한 복수의 블록 중 적어도 하나의 블록에 대응되는 사용자 명령이 입력되면, 프로세서(120)는 적어도 하나의 블록을 메모리에 할당할 수 있다. 그리고, 프로세서(120)는 메모리에 할당된 적어도 하나의 블록에 대한 해시 값을 계산하여, 계산된 해시 값을 적어도 하나의 블록에 대한 제3 해시 값으로 획득할 수 있다.
그리고, 프로세서(120)는 메모리에 할당된 적어도 하나의 블록에 대한 무결성을 검증하기 위해, 복수의 제1 해시 값 중 적어도 하나의 블록에 대응되는 해시 값을 제4 해시 값으로 식별하고, 제3 해시 값과 제4 해시 값이 동일한지 여부를 식별할 수 있다.
예로, 프로세서(120)는 실행 파일에 대한 복수의 블록 중 제2 블록에 대한 코드를 실행하기 위한 사용자 명령이 입력된 경우, 제2 블록을 메모리에 할당하고, 제2 블록에 대한 해시 값을 계산하여, 계산된 해시 값을 제2 블록에 대한 제3 해시 값으로 획득할 수 있다. 그리고, 프로세서(120)는 제1 해시 값 중 제2 블록에 대응되는 해시 값을 제4 해시 값으로 식별하고, 제3 해시 값과 제4 해시 값이 동일한지 여부를 식별하여, 제2 블록에 대한 무결성을 검증할 수 있다.
또 다른 실시 예로, 실행 파일에 대한 복수의 블록 중 제3 블록 및 제4 블록에 대한 코드를 실행하기 위한 사용자 명령이 입력된 경우, 제3 블록 및 제4 블록을 메모리에 할당하고, 제3 블록 및 제4 블록에 대한 해시 값을 계산하여, 계산된 해시 값을 제3 블록 및 제4 블록에 대한 제3 해시 값으로 획득할 수 있다. 그리고, 프로세서(120)는 제1 해시 값 중 제3 블록 및 제4 블록에 대응되는 해시 값을 제4 해시 값으로 식별하고, 제3 해시 값과 제4 해시 값이 동일한지 여부를 식별하여, 제3 블록 및 제4 블록에 대한 무결성을 검증할 수 있다.
제3 해시 값과 제4 해시 값이 동일한 것으로 식별되면, 프로세서(120)는 제3 해시 값에 대응되는 적어도 하나의 블록에 대한 무결성이 검증된 것으로 판단하고, 적어도 하나의 블록에 대응되는 명령을 수행할 수 있다. 제3 해시 값과 제4 해시 값이 동일하지 않은 것으로 식별되면, 프로세서(120)는 제3 해시 값에 대응되는 적어도 하나의 블록에 대한 무결성이 검증되지 않은 것으로 판단하고, 적어도 하나의 블록에 대응되는 명령을 수행하지 않을 수 있다.
본 개시의 일 실시 예에 따르면, 상술한 블록 단위 별로 무결성 검증을 수행하는 방법은 실행 파일의 용량이 임계 값을 초과하는 경우에 수행될 수 있다. 즉, 임계 값 이하인 실행 파일의 경우, 실행 파일 전체에 대한 해시 값을 계산하여도, 연산량이 많지 않으므로, 프로세서(120)는 실행 파일 전체에 대한 해시 값을 계산하고, 계산된 해시 값을 암호화하여 서명 값을 획득하여 획득된 서명 값을 실행 파일에 추가할 수 있다. 실행 파일의 용량에 대한 임계 값은 사용자에 의해 설정되거나, 실행 파일의 제조사에 의해 설정될 수 있다.
구체적으로, 프로세서(120)는 실행 파일의 용량을 식별하고, 실행 파일의 용량이 임계 값 이하인 경우 실행 파일을 블록 단위로 분할하지 않고 실행 파일 전체에 대한 해시 값을 계산하여 실행 파일 전체에 대한 제5 해시 값을 획득할 수 있다. 그리고, 프로세서(120)는 제5 해시 값을 개인키를 통해 암호화 하여 제5 해시 값에 대한 서명 값을 획득하여 서명 값을 실행 파일에 추가할 수 있다.
그리고, 프로세서(120)는 용량이 임계 값 이하인 실행 파일을 실행하기 위한 사용자 명령이 입력되면, 실행 파일 전체를 메모리에 할당하고, 실행 파일 전체에 대한 제6 해시 값을 획득할 수 있다. 그리고, 프로세서(120)는 실행 파일에 추가된 서명 값을 공개키를 통해 복호화 하여 제7 해시 값을 획득할 수 있다. 그리고, 프로세서(120)는 실행 파일에 대한 무결성을 검증하기 위해, 제6 해시 값과 제7 해시 값이 동일한지 식별할 수 있다. 제6 해시 값과 제7 해시 값이 동일한 경우 프로세서(120)는 실행 파일의 무결성이 검증된 것으로 판단하여, 실행 파일을 실행할 수 있다. 제6 해시 값과 제7 해시 값이 동일하지 않은 경우, 프로세서(120)는 실행 파일의 무결성이 검증되지 않은 것으로 판단하여, 실행 파일을 실행하지 않을 수 있다.
그리고, 프로세서(120)는 실행 파일의 용량이 임계 값을 초과하는 경우에는, 실행 파일을 블록 단위로 분할하고, 분할된 블록 각각에 대한 복수의 제1 해시 값을 획득할 수 있다. 그리고, 프로세서(120)는 복수의 제1 해시 값 및 블록에 대한 정보를 실행 파일에 추가하고, 복수의 제1 해시 값을 개인키를 통해 암호화 하여 서명 값을 획득하여 서명 값을 실행 파일에 추가할 수 있다.
즉, 상술한 바와 같이, 프로세서(120)는 실행 파일의 용량이 임계 값을 초과하는 경우에 실행 파일의 블록 단위 별로 무결성 검증을 수행할 수 있다. 즉, 무결성 검증에 연산량이 많이 드는 실행 파일에 대해서 블록 단위 별로 무결성 검증이 수행되어, 무결성 검증에 필요한 연산량이 감소 될 수 있다.
한편, 이상에서는 해시 값 및 개인키를 이용하여 서명 값을 생성하는 것으로 한정하여 설명하였으나, 이에 한정되지 않고, 데이터를 암호화하는 기술은 어떤 것이든 사용될 수 있다.
도 2는 본 개시의 일 실시 예에 따른, 실행 파일의 블록 단위 별로 무결성 검증을 수행하기 위한, 실행 파일의 구성을 도시한 도면이다.
도2 를 참조하면, 실행 파일(200)이 블록 단위(210-1, 210-2, 210-3, … 210-N)로 분할되어 있다. 본 개시의 일 실시 예에 따르면, 전자 장치는 실행 파일(200)의 용량에 따라 일정 블록 단위로 실행 파일(200)을 분할 할 수 있다. 분할된 블록 각각의 용량은 서로 동일 할 수 있다. 분할된 블록의 개수(Block Count)(예로, N 개), 및 블록 하나의 용량(Block Size)(예로, 4KB)과 같은 정보가 블록에 대한 정보(220)에 포함되어 실행 파일(200)에 추가될 수 있다. 구체적으로, 블록에 대한 정보(220)는 블록의 용량 및 블록의 개수에 대한 정보 및 해시 값을 획득한 알고리즘에 대한 정보를 포함할 수 있다. 또한, 사용자의 실행 파일(200) 접근 권한에 대한 접근 제어 정보 등을 포함하는 기타 정보가 블록에 대한 정보에 더 포함될 수 있다.
그리고, 전자 장치(100)는 분할된 블록 각각에 대한 해시 값을 계산하여, 복수의 제1 해시 값(230-1, 230-2, 230-3, …, 230-N)을 획득하고, 복수의 제1 해시 값(230-1, 230-2, 230-3, …, 230-N)을 실행 파일(200)에 추가할 수 있다. 복수의 제1 해시 값(230-1, 230-2, 230-3, …, 230-N)은 제1 블록(210-1)에 대한 해시 값(230-1), 제2 블록(210-2)에 대한 해시 값(230-2), 제3 블록(210-3)에 대한 해시 값(230-3), … , 제N 블록(210-N)에 대한 해시 값(230-N)을 포함할 수 있다.
그리고, 전자 장치(100)는 복수의 제1 해시 값을 개인키를 통해 암호화 하여 서명 값(240)을 획득하고, 획득한 서명 값(240)을 실행 파일(200)에 추가할 수 있다.
상술한 바와 같이, 본 개시에 따르면, 실행 파일에 복수의 제1 해시 값, 블록에 대한 정보 및 서명 값이 추가됨으로써, 전자 장치는 실행 파일에 대해 블록 단위 별로 무결성 검증을 수행할 수 있다.
도 3은 본 개시의 일 실시 예에 따른, 실행 파일의 블록 단위 별 무결성을 검증하는 방법을 나타낸 도면이다.
도 3을 참조하면, 실행 파일(300)을 실행하기 위한 사용자 명령이 입력되면, 전자 장치(100)는 실행 파일(300)에 추가된 서명 값(340)을 공개키를 통해 복호화 하여 복수의 제2 해시 값을 획득할 수 있다. 그리고, 전자 장치(100)는 복수의 제1 해시 값(330-1, 330-2, 330-3, …, 330-N)에 대한 무결성을 검증하기 위해, 복수의 제2 해시 값과 제1 해시 값이 동일한지 여부를 식별할 수 있다(단계 ①).
그리고, 전자 장치(100)는 복수의 제1 해시 값(330-1, 330-2, 330-3, …, 330-N) 및 복수의 제2 해시 값이 동일한 것으로 식별되는 경우, 실행 파일(300)에 추가된 블록에 대한 정보(320) 및 복수의 제1 해시 값(320, 330-1, 330-2, …, 330-N)을 메모리(400)에 할당할 수 있다(단계 ②). 전자 장치(100)는 복수의 제1 해시 값 및 복수의 제2 해시 값(320, 330-1, 330-2, …, 330-N)이 동일하지 않은 것으로 식별되는 경우, 실행 파일(300)에 대한 실행을 취소할 수 있다. 즉, 전자 장치(100)는 단계 ① 및 단계 ②를 통해 복수의 제1 해시 값에 대한 무결성을 검증 할 수 있다. 그리고, 전자 장치(100)는 제1 해시 값에 대한 무결성이 검증되는 경우, 실행 파일(300)을 실행 할 수 있다.
그리고, 전자 장치(100)는 실행 파일(300)의 블록(310-1 내지 310-N) 중 적어도 하나의 블록에 대응되는 사용자 명령이 입력되면, 적어도 하나의 블록을 메모리(400)에 할당할 수 있다(단계 ③). 적어도 하나의 블록에 대응되는 사용자 명령은 적어도 하나의 블록에 포함된 코드를 실행하기 위한 사용자 명령일 수 있다. 도 3을 참조하면, 제2 블록(310-2)에 대응되는 사용자 명령이 입력되어, 제2 블록(310-2)이 메모리(400)에 할당되었다. 제2 블록(310-2)에 대응되는 사용자 명령은 제2 블록(310-2)에 포함된 코드를 실행하기 위한 사용자 명령일 수 있다. 도 3 에서는 적어도 하나의 블록이 제2 블록(310-2) 하나인 것으로 도시되어 있지만, 이에 한정되지 않고, 복수의 블록에 대응되는 사용자 명령이 입력되어, 복수의 블록이 메모리(400)에 할당될 수 있다.
그리고, 전자 장치(100)는 메모리(400)에 할당된 적어도 하나의 블록에 대한 해시 값을 계산하여, 적어도 하나의 블록에 대한 제3 해시 값을 획득할 수 있다. 그리고, 전자 장치(100)는 적어도 하나의 블록에 대한 무결성을 검증하기 위해 복수의 제1 해시 값 중 적어도 하나의 블록에 대응되는 제4 해시 값과 제3 해시 값이 동일한지 여부를 식별할 수 있다(단계 ④). 도 3을 참조하면, 전자 장치(100)는 메모리(400)에 할당된 제2 블록(310-2)에 대한 해시 값을 계산하여, 제2 블록(310-2)에 대한 제3 해시 값을 획득하고, 복수의 제1 해시 값 중 제2 블록에 대응되는 제4 해시 값(330-2)과 제3 해시 값이 동일한지 여부를 식별하여 제2 블록에 대한 무결성 검증을 할 수 있다.
그리고, 전자 장치(100)는 제3 해시 값과 제4 해시 값이 동일한 것으로 식별되면, 적어도 하나의 블록에 대응되는 명령을 수행할 수 있다. 다만, 제3 해시 값과 제4 해시 값이 동일하지 않은 것으로 식별되면, 전자 장치(100)는 적어도 하나의 블록에 대응되는 명령을 수행하지 않을 수 있다.
상술한 바와 같이, 본 개시에 따르면, 전자 장치는 실행 파일에 대해 블록 단위 별로 무결성 검증을 수행할 수 있다. 또한, 전자 장치는 실행 파일 중 일부 블록에 대한 무결성이 검증되지 않은 경우, 실행 파일 전체의 실행을 취소시키는 것이 아닌 무결성이 검증되지 않은 블록에 대응되는 명령만을 수행하지 않을 수 있어, 실행 파일이 보다 효율적으로 구동될 수 있다.
도 4는 본 개시의 일 실시 예에 따른, 실행 파일의 용량이 임계 값 이하인 경우, 실행 파일 전체에 대한 무결성을 검증하기 위한 실행 파일을 나타내는 도면이다.
전자 장치(100)는 실행 파일(500)의 용량을 식별할 수 있다. 그리고, 전자 장치(100)는 실행 파일(500)의 용량이 임계 값 이하인 경우, 실행 파일(500)을 블록 단위로 분할 하지 않고 실행 파일 부분(510)에 대한 해시 값을 계산하여 제5 해시 값을 획득할 수 있다. 그리고, 전자 장치(100)는 제5 해시 값을 개인키를 통해 암호화 하여 제5 해시 값에 대한 서명 값(520)을 획득하여 서명 값(520)을 실행 파일(500)에 추가할 수 있다. 즉, 용량이 임계 값 이하인 실행 파일(500)의 경우, 실행 파일 부분(510)에 서명 값(520)이 추가된 실행 파일(500)을 통해 실행 파일(500) 전체에 대한 무결성 검증이 수행 될 수 있다.
그리고, 전자 장치(100)는 용량이 임계 값 이하인 실행 파일(500)을 실행하기 위한 사용자 명령이 입력되면, 실행 파일(500)을 메모리에 할당하고, 실행 파일 전체 부분(510)에 대한 해시 값을 계산하여, 제6 해시 값을 획득할 수 있다. 그리고, 전자 장치(100)는 실행 파일(500)에 추가된 서명 값(520)을 공개키를 통해 복호화 하여 제7 해시 값을 획득할 수 있다.
그리고, 전자 장치(100)는 실행 파일(500)에 대한 무결성을 검증하기 위해 제6 해시 값과 제7 해시 값이 동일한지 여부를 식별할 수 있다. 제6 해시 값과 제7 해시 값이 동일한 경우, 전자 장치(100)는 실행 파일(500) 전체의 무결성이 검증된 것으로 판단하고, 실행 파일(500)을 실행 할 수 있다. 6 해시 값과 제7 해시 값이 동일하지 않은 경우, 전자 장치(100)는 실행 파일(500) 전체의 무결성이 검증되지 않은 것으로 판단하고, 실행 파일(500)을 실행하지 않을 수 있다.
실행 파일의 용량이 임계 값을 초과하는 경우에는, 도 1에서 상술한 바와 같이 전자 장치(100)는 실행 파일을 블록 단위로 분할하고, 블록 단위 별로 해시 값 획득하여, 블록 단위 별로 무결성 검증을 수행할 수 있다.
도 5는 본 개시의 일 실시 예에 따른 블록 단위 별로 무결성을 검증하기 위한 실행 파일을 생성하기 위한 방법을 나타내는 흐름도 이다.
도 5를 참조하면, 우선, 전자 장치는 실행 파일을 획득할 수 있다(S510). 그 다음, 전자 장치는 실행 파일을 블록 단위 별로 분할 할 수 있다(S520). 구체적으로 블록 단위는 운영체제에서 실행 파일을 관리하는 단위를 의미한다. 본 개시의 일 실시 예에 따르면, 실행 파일의 용량에 따라 일정 블록 단위로 실행 파일이 분할 될 수 있다.
그리고, 전자 장치는 분할된 블록 각각에 대한 복수의 제1 해시 값을 획득할 수 있다(S530). 구체적으로, 전자 장치는 분할된 블록 각각에 대한 해시 값을 계산하여, 복수의 제1 해시 값을 획득할 수 있다. 전자 장치는 기 설정된 알고리즘을 바탕으로 분할된 블록 각각에 대한 해시 값을 계산하고, 계산된 해시 값을 바탕으로 실행 파일의 블록에 대한 복수의 제1 해시 값을 획득할 수 있다. 기 설정된 알고리즘은 블록 또는 파일에 대한 해시 값을 계산하기 위한 방법에 대한 알고리즘으로, 해시 함수를 포함할 수 있다.
그 다음, 전자 장치는 블록에 대한 정보 및 복수의 제1 해시 값을 실행 파일에 추가할 수 있다(S540). 블록에 대한 정보는 블록의 용량, 블록의 개수에 대한 정보 및 해시 값을 획득한 알고리즘에 대한 정보를 포함할 수 있다. 본 개시의 일 실시 예에 따르면, 블록에 대한 정보에는 사용자의 실행 파일 접근 권한에 대한 접근 제어 정보를 더 포함 할 수 있다.
그 다음, 전자 장치는 복수의 제1 해시 값을 개인키를 통해 암호화하여 서명 값을 획득하여 서명 값을 실행 파일에 추가할 수 있다(S550).
전자 장치는 상술한 과정을 통해 실행 파일에 블록에 대한 정보, 복수의 제1 해시 값 및 서명 값을 추가하여, 실행 파일에 대한 블록 단위 별로 무결성을 검증할 수 있다.
도 6은 본 개시의 일 실시 예에 따른 전자 장치의 블록 단위 별로 실행 파일의 무결성을 검증하는 방법을 나타내는 흐름도 이다.
도 6을 참조하면, 우선, 전자 장치는 실행 파일을 실행하기 위한 사용자 명령을 입력 받을 수 있다(S605). 그 다음, 실행 파일을 실행 하기 위한 사용자 명령이 입력되면, 전자 장치는 실행 파일에 추가된 서명 값을 공개 키를 통해 복호화 하여 복수의 제2 해시 값을 획득할 수 있다(S610). 공개키는 복수의 제1 해시 값을 암호화한 개인키에 대응되는 공개키 일 수 있다.
그 다음, 전자 장치는 실행 파일에 추가된 복수의 제1 해시 값 및 복수의 제2 해시 값이 동일한지 식별 할 수 있다(S620). 전자 장치는 복수의 제1 해시 값 및 복수의 제2 해시 값이 동일한 것으로 식별되면(S620-Y), 제1 해시 값의 무결성이 검증된 것으로 판단하고, 블록에 대한 정보 및 복수의 제1 해시 값을 메모리에 할당할 수 있다(S640).
그 다음, 전자 장치는 적어도 하나의 블록에 대한 명령이 입력되면(S635), 적어도 하나의 블록을 메모리에 할당할 수 있다(S640).
그리고, 전자 장치는 메모리에 할당된 적어도 하나의 블록에 대한 제3 해시 값을 획득하고(S650), 제1 해시 값 중 적어도 하나의 블록에 대응되는 제4 해시 값과 제3 해시 값이 동일한 지 여부를 식별할 수 있다(S660).
전자 장치는 제4 해시 값과 제3 해시 값이 동일한 것으로 식별되면(S660-Y), 메모리에 할당된 적어도 하나의 블록에 대한 무결성이 검증된 것으로 판단하고, 적어도 하나의 블록에 대응되는 명령을 수행할 수 있다(S670). 그리고, 전자 장치는 제4 해시 값과 제3 해시 값이 동일하지 않은 것으로 식별되면(S660-N), 메모리에 할당된 적어도 하나의 블록에 대한 무결성이 검증되지 않은 것으로 판단하고, 적어도 하나의 블록에 대한 명령을 수행하지 않을 수 있다(S680).
전자 장치는 복수의 제1 해시 값 및 복수의 제2 해시 값이 동일하지 않은 것으로 식별되면(S620-N), 제1 해시 값의 무결성이 검증되지 않은 것으로 판단하고, 실행 파일의 실행을 취소할 수 있다(S690).
전자 장치는 상술한 과정을 통해 실행 파일에 대한 블록 단위 별로 무결성을 검증할 수 있다.
도 7은 본 개시의 일 실시 예에 따른, 실행 파일의 용량에 따른 무결성 검증 방법을 나타내는 흐름도 이다.
도 7을 참조하면, 우선, 전자 장치는 실행 파일을 획득할 수 있다(S710). 그 다음, 전자 장치는 실행 파일의 용량이 임계 값 이하인지 여부를 식별할 수 있다(S720).
실행 파일의 용량이 임계 값 이하인 것으로 식별되면(S720-Y), 전자 장치는 실행 파일을 블록 단위로 분할 하지 않고, 실행 파일 전체에 대한 제5 해시 값을 획득할 수 있다(S730). 그 다음, 전자 장치는 제5 해시 값을 개인키를 통해 암호화 하여 서명 값을 획득하여 서명 값을 실행 파일에 추가 할 수 있다(S740).
실행 파일의 용량이 임계 값을 초과하는 것으로 식별되면(S720-N), 전자 장치는 실행 파일을 블록 단위로 분할 할 수 있다(S750). 임계 값은 사용자에 의해 설정되거나, 실행 파일의 제조사에 의해 설정될 수 있다.
그 다음, 전자 장치는 분할된 블록 각각에 대한 복수의 제1 해시 값을 획득하고(S760), 블록에 대한 정보 및 복수의 제1 해시 값을 실행 파일에 추가할 수 있다(S770). 그리고, 전자 장치는 복수의 제1 해시 값에 대한 정보를 개인키를 통해 암호화하여 서명 값을 획득하여 서명 값을 실행 파일에 추가할 수 있다(S780).
상술한 바와 같이, 전자 장치는 실행 파일의 용량이 임계 값을 초과하는 경우에 실행 파일의 블록 단위 별로 무결성 검증을 수행할 수 있다. 즉, 무결성 검증에 연산량이 많이 드는 실행 파일에 대해서 블록 단위 별로 무결성 검증이 수행되어, 무결성 검증에 필요한 연산량이 감소 될 수 있다.
도 8은 본 개시의 일 실시 예에 따른, 전자 장치의 구체적인 구성을 나타내는 블록도 이다.
도 8을 참조하면, 전자 장치(800)는 메모리(810), 프로세서(820), 디스플레이(830), 통신 인터페이스(840) 및 입력 인터페이스(850)을 포함할 수 있다. 메모리(810) 및 프로세서(820)는 도 1에 도시된 메모리 및 프로세서와 동일한 구성인 바, 중복된 내용은 생략 한다.
본 개시에 따른, 디스플레이(830)는 실행 파일을 실행하기 위한 사용자 명령이 입력되고, 실행 파일에 추가된 복수의 제1 해시 값에 대한 무결성이 검증되면, 실행 파일에 대한 실행 화면을 표시할 수 있다.
그리고, 실행 파일에 추가된 복수의 제1 해시 값에 대한 무결성이 검증되지 않은 경우, 디스플레이(830)는 실행 파일에 대한 무결성이 검증되지 않음을 나타내는 UI(User Interface)를 표시할 수 있다.
그리고, 디스플레이(830)는 실행 파일의 블록 중 적어도 하나의 블록에 대한 명령이 입력되고, 적어도 하나의 블록에 대한 무결성이 검증되면, 적어도 하나의 블록에 대한 명령이 수행된 화면을 표시할 수 있다. 다만, 적어도 하나의 블록에 대한 무결성이 검증되지 않은 경우, 디스플레이(830)는 적어도 하나의 블록에 대한 무결성이 검증되지 않음을 나타내는 UI를 표시할 수 있다.
통신 인터페이스(840)는 다양한 유형의 통신방식에 따라 다양한 유형의 외부 장치 또는 서버와 통신을 수행하는 구성이다. 통신 인터페이스(840)는 와이파이칩, 블루투스 칩, 무선 통신 칩, NFC 칩을 포함할 수 있다. 프로세서(820)는 통신 인터페이스(840)를 이용하여 각종 외부 장치 또는 서버와 통신을 수행할 수 있다.
특히, 와이파이 칩, 블루투스 칩은 각각 WiFi 방식, 블루투스 방식으로 통신을 수행한다. 와이파이 칩이나 블루투스 칩을 이용하는 경우에는 SSID 및 세션 키 등과 같은 각종 연결 정보를 먼저 송수신하여, 이를 이용하여 통신 연결한 후 각종 정보들을 송수신할 수 있다. 무선 통신 칩은 IEEE, 지그비, 3G(3rd Generation), 3GPP(3rd Generation Partnership Project), LTE(Long Term Evoloution) 등과 같은 다양한 통신 규격에 따라 통신을 수행하는 칩을 의미한다. NFC 칩은135kHz, 13.56MHz, 433MHz, 860~960MHz, 2.45GHz 등과 같은 다양한 RF-ID 주파수 대역들 중에서 13.56MHz 대역을 사용하는 NFC (Near Field Communication) 방식으로 동작하는 칩을 의미한다.
통신 인터페이스(840)는 외부 장치 또는 서버와 통신을 수행할 수 있으며, 외부 장치 또는 서버로부터 실행 파일을 획득할 수 있다.
그리고, 본 개시의 일시 예에 따르면, 전자 장치(800)에서 실행 파일에 실행 파일에 대한 복수의 제1 해시 값 및 서명 값이 추가되고, 복수의 제1 해시 값 및 서명 값이 추가된 실행 파일이 통신 인터페이스(840)를 통해 외부 장치에 전송되고, 외부 장치에서 실행 파일에 대해 블록 단위 별로 무결성이 검증될 수 있다. 또한, 본 개시의 일 실시 예에 따르면, 외부 장치에서 실행 파일에 실행 파일에 대한 복수의 제1 해시 값 및 서명 값이 추가되고, 복수의 제1 해시 값 및 서명 값이 추가된 실행 파일이 통신 인터페이스(840)를 통해 전자 장치(800)로 전송되고, 전자 장치(800)에서 실행 파일에 대해 블록 단위 별로 무결성이 검증될 수 있다.
입력 인터페이스(850)는 사용자의 실행 파일에 대한 명령을 입력 받을 수 있다. 구체적으로 사용자의 실행 파일에 대한 실행 명령이 입력 인터페이스(850)를 통해 입력되면, 프로세서(820)는 실행 파일에 추가된 복수의 제1 해시 값에 대한 무결성이 검증되는 경우, 복수의 제1 해시 값에 대한 정보를 메모리에 할당하고, 실행 파일을 실행 할 수 있다. 그리고, 사용자의 실행 파일에 대한 적어도 하나의 블록에 대한 명령이 입력 인터페이스(850)를 통해 입력되면, 프로세서(820)는 적어도 하나의 블록에 대한 무결성이 검증되는 경우, 적어도 하나의 블록에 대응되는 명령을 수행할 수 있다.
한편, 이상에서 설명된 다양한 실시 예들은 소프트웨어(software), 하드웨어(hardware) 또는 이들의 조합된 것을 이용하여 컴퓨터(computer) 또는 이와 유사한 장치로 읽을 수 있는 기록 매체 내에서 구현될 수 있다. 하드웨어적인 구현에 의하면, 본 개시에서 설명되는 실시 예들은 ASICs(Application Specific Integrated Circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서(processors), 제어기(controllers), 마이크로 컨트롤러(micro-controllers), 마이크로 프로세서(microprocessors), 기타 기능 수행을 위한 전기적인 유닛(unit) 중 적어도 하나를 이용하여 구현될 수 있다. 일부의 경우에 본 명세서에서 설명되는 실시 예들이 프로세서 자체로 구현될 수 있다. 소프트웨어적인 구현에 의하면, 본 명세서에서 설명되는 절차 및 기능과 같은 실시 예들은 별도의 소프트웨어 모듈들로 구현될 수 있다. 상기 소프트웨어 모듈들 각각은 본 명세서에서 설명되는 하나 이상의 기능 및 작동을 수행할 수 있다.
한편, 상술한 본 개시의 다양한 실시 예들에 따른 방법은 비일시적 판독 가능 매체(non-transitory readable medium) 에 저장될 수 있다. 이러한 비일시적 판독 가능 매체는 다양한 장치에 탑재되어 사용될 수 있다.
비일시적 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상술한 다양한 방법을 수행하기 위한 프로그램들은 CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등과 같은 비일시적 판독 가능 매체에 저장되어 제공될 수 있다.
일 실시 예에 따르면, 본 문서에 개시된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
또한, 이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시가 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.
100: 전자 장치
110: 메모리
120: 프로세서

Claims (20)

  1. 전자 장치의 제어 방법에 있어서,
    프로그램을 실행하기 위한 실행 파일을 획득하는 단계;
    상기 획득된 실행 파일을 블록 단위로 분할하는 단계;
    상기 분할된 블록 각각에 대한 복수의 제1 해시 값을 획득하는 단계;
    상기 블록에 대한 정보 및 상기 복수의 제1 해시 값을 상기 실행 파일에 추가하는 단계; 및
    상기 복수의 제1 해시 값을 개인키를 통해 암호화 하여 서명 값을 획득하여 상기 서명 값을 상기 실행 파일에 추가하는 단계;를 포함하는 제어 방법.
  2. 제1항에 있어서,
    상기 실행 파일을 실행하기 위한 사용자 명령이 입력되면, 상기 서명 값을 공개키를 통해 복호화 하여 복수의 제2 해시 값을 획득하는 단계;
    상기 복수의 제1 해시 값에 대한 무결성을 검증하기 위해, 상기 복수의 제2 해시 값 및 상기 복수의 제1 해시 값이 동일한지 식별하는 단계;
    상기 복수의 제1 해시 값 및 상기 복수의 제2 해시 값이 동일한 경우, 상기 상기 블록에 대한 정보 및 상기 복수의 제1 해시 값을 메모리에 할당하는 단계; 를 더 포함하는 것을 특징으로 하는 제어 방법.
  3. 제2항에 있어서,
    상기 복수의 제1 해시 값 및 상기 복수의 제2 해시 값이 동일하지 않은 경우, 상기 실행 파일의 실행을 취소하는 단계; 를 더 포함하는 것을 특징으로 하는 제어 방법.
  4. 제2항에 있어서,
    상기 블록 중 적어도 하나의 블록에 대응되는 명령이 입력되면, 상기 적어도 하나의 블록을 상기 메모리에 할당하고,
    상기 적어도 하나의 블록에 대한 제3 해시 값을 획득하는 단계;
    상기 적어도 하나의 블록에 대한 무결성을 검증하기 위해, 상기 복수의 제1 해시 값 중 적어도 하나의 블록에 대응되는 제4 해시 값과 상기 제3 해시 값이 동일한지 식별하는 단계; 및
    상기 제3 해시 값과 상기 제4 해시 값이 동일한 경우, 상기 적어도 하나의 블록에 대응되는 명령을 수행하는 단계; 를 더 포함하는 것을 특징으로 하는 제어 방법.
  5. 제4항에 있어서,
    상기 제3 해시 값과 상기 제4 해시 값이 동일하지 않은 경우, 상기 적어도 하나의 블록에 대응되는 명령을 수행하지 않는 단계; 를 더 포함하는 것을 특징으로 하는 제어 방법.
  6. 제1항에 있어서,
    상기 블록에 대한 정보는, 블록의 용량 및 블록의 개수에 대한 정보를 포함하고,
    상기 분할하는 단계는,
    상기 실행 파일의 용량에 따라 분할하는 단계인 것을 특징으로 하는 제어 방법.
  7. 제1항에 있어서,
    상기 블록에 대한 정보는, 상기 복수의 제1 해시 값을 획득한 알고리즘에 대한 정보를 포함하는 것 특징으로 하고,
    상기 복수의 제1 해시 값을 획득하는 단계는,
    상기 블록에 대한 정보에 포함된 알고리즘을 바탕으로 획득하는 단계인 것을 특징으로 하는 제어 방법.
  8. 제1항에 있어서,
    상기 실행 파일의 용량을 식별하는 단계;를 더 포함하고,
    상기 제어 방법은,
    상기 용량이 임계 값을 초과하는 경우, 상기 획득된 실행 파일을 블록 단위로 분할하는 단계; 및
    상기 분할된 블록 각각에 대한 복수의 제1 해시 값을 획득하여 상기 블록에 대한 정보 및 상기 복수의 제1 해시 값을 실행 파일에 추가하는 단계;를 포함하는 제어 방법.
  9. 제8항에 있어서,
    상기 용량이 임계 값 이하인 경우, 상기 실행 파일을 블록 단위로 분할하지 않고, 상기 실행 파일 전체에 대한 제5 해시 값을 획득하는 단계; 및
    상기 제5 해시 값을 개인키를 통해 암호화 하여 상기 제5 해시 값에 대한 서명 값을 획득하여 상기 서명 값을 상기 실행 파일에 추가하는 단계;를 더 포함하는 하는 제어 방법.
  10. 제9항에 있어서,
    상기 용량이 임계 값 이하인 실행 파일을 실행하기 위한 사용자 명령이 입력되면, 상기 실행 파일 전체를 메모리에 할당하고, 상기 실행 파일에 대한 제6 해시 값을 획득하는 단계;
    상기 실행 파일에 추가된 서명 값을 공개키를 통해 복호화 하여 제7 해시 값을 획득하는 단계;
    상기 실행 파일에 대한 무결성을 검증하기 위해 상기 제6 해시 값과 상기 제7 해시 값이 동일한지 식별하는 단계; 및
    상기 제6 해시 값과 상기 제7 해시 값이 동일한 경우 상기 실행 파일을 실행하고, 상기 제6 해시 값과 상기 제7 해시 값이 동일하지 않은 경우 상기 실행 파일을 실행하지 않는 단계; 를 더 포함하는 것을 특징으로 하는 제어 방법.
  11. 전자 장치에 있어서,
    적어도 하나의 인스트럭션을 저장하는 메모리, 및
    프로세서를 포함하고,
    상기 프로세서는 상기 인스트럭션을 실행함으로써,
    프로그램을 실행하기 위한 실행 파일을 획득하고,
    상기 획득된 실행 파일을 블록 단위로 분할하고,
    상기 분할된 블록 각각에 대한 복수의 제1 해시 값을 획득하고,
    상기 블록에 대한 정보 및 상기 복수의 제1 해시 값을 상기 실행 파일에 추가하고,
    상기 복수의 제1 해시 값을 개인키를 통해 암호화 하여 서명 값을 획득하여 상기 서명 값을 상기 실행 파일에 추가하는 전자 장치.
  12. 제11항에 있어서,
    상기 프로세서는,
    상기 실행 파일을 실행하기 위한 사용자 명령이 입력되면, 상기 서명 값을 공개키를 통해 복호화 하여 복수의 제2 해시 값을 획득하고,
    상기 복수의 제1 해시 값에 대한 무결성을 검증하기 위해, 상기 복수의 제2 해시 값 및 상기 복수의 제1 해시 값이 동일한지 식별하고,
    상기 복수의 제1 해시 값 및 상기 복수의 제2 해시 값이 동일한 경우, 상기 상기 블록에 대한 정보 및 상기 복수의 제1 해시 값을 메모리에 할당하는 전자 장치.
  13. 제12항에 있어서,
    상기 프로세서는,
    상기 복수의 제1 해시 값 및 상기 복수의 제2 해시 값이 동일하지 않은 경우, 상기 실행 파일의 실행을 취소하는 전자 장치.
  14. 제12항에 있어서,
    상기 프로세서는,
    상기 블록 중 적어도 하나의 블록에 대응되는 명령이 입력되면, 상기 적어도 하나의 블록을 상기 메모리에 할당하고,
    상기 적어도 하나의 블록에 대한 제3 해시 값을 획득하고,
    상기 적어도 하나의 블록에 대한 무결성을 검증하기 위해, 상기 복수의 제1 해시 값 중 적어도 하나의 블록에 대응되는 제4 해시 값과 상기 제3 해시 값이 동일한지 식별하고,
    상기 제3 해시 값과 상기 제4 해시 값이 동일한 경우, 상기 적어도 하나의 블록에 대응되는 명령을 수행하는 전자 장치.
  15. 제14항에 있어서,
    상기 프로세서는,
    상기 제3 해시 값과 상기 제4 해시 값이 동일하지 않은 경우, 상기 적어도 하나의 블록에 대응되는 명령을 수행하지 않는 전자 장치.
  16. 제11항에 있어서,
    상기 블록에 대한 정보는, 블록의 용량 및 블록의 개수에 대한 정보를 포함하고,
    상기 프로세서는,
    상기 실행 파일의 용량에 따라 분할하는 것을 특징으로 하는 전자 장치.
  17. 제11항에 있어서,
    상기 블록에 대한 정보는, 상기 복수의 제1 해시 값을 획득한 알고리즘에 대한 정보를 포함하는 것 특징으로 하고,
    상기 프로세서는,
    상기 블록에 대한 정보에 포함된 알고리즘을 바탕으로 상기 분할된 블록 각각에 대한 복수의 제1 해시 값을 획득하는 것을 특징으로 하는 전자 장치.
  18. 제11항에 있어서,
    상기 프로세서는,
    상기 실행 파일의 용량을 식별하고,
    상기 용량이 임계 값을 초과하는 경우, 상기 획득된 실행 파일을 블록 단위로 분할하고,
    상기 분할된 블록 각각에 대한 복수의 제1 해시 값을 획득하여 상기 블록에 대한 정보 및 상기 복수의 제1 해시 값을 실행 파일에 추가하는 것을 특징으로 하는 전자 장치.
  19. 제18항에 있어서,
    상기 프로세서는,
    상기 용량이 임계 값 이하인 경우, 상기 실행 파일을 블록 단위로 분할하지 않고, 상기 실행 파일 전체에 대한 제5 해시 값을 획득하고,
    상기 제5 해시 값을 개인키를 통해 암호화 하여 상기 제5 해시 값에 대한 서명 값을 획득하여 상기 서명 값을 상기 실행 파일에 추가하는 것을 특징으로 하는 전자 장치.
  20. 제19항에 있어서,
    상기 프로세서는,
    상기 용량이 임계 값 이하인 실행 파일을 실행하기 위한 사용자 명령이 입력되면, 상기 실행 파일 전체를 메모리에 할당하고, 상기 실행 파일에 대한 제6 해시 값을 획득하고,
    상기 실행 파일에 추가된 서명 값을 공개키를 통해 복호화 하여 제7 해시 값을 획득하고,
    상기 실행 파일에 대한 무결성을 검증하기 위해 상기 제6 해시 값과 상기 제7 해시 값이 동일한지 식별하고,
    상기 제6 해시 값과 상기 제7 해시 값이 동일한 경우 상기 실행 파일을 실행하고, 상기 제6 해시 값과 상기 제7 해시 값이 동일하지 않은 경우 상기 실행 파일을 실행하지 않는 것을 특징으로 하는 전자 장치.
KR1020190133001A 2019-10-24 2019-10-24 전자 장치 및 이의 제어 방법 KR20210048835A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190133001A KR20210048835A (ko) 2019-10-24 2019-10-24 전자 장치 및 이의 제어 방법
PCT/KR2020/008938 WO2021080123A1 (ko) 2019-10-24 2020-07-08 전자 장치 및 이의 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190133001A KR20210048835A (ko) 2019-10-24 2019-10-24 전자 장치 및 이의 제어 방법

Publications (1)

Publication Number Publication Date
KR20210048835A true KR20210048835A (ko) 2021-05-04

Family

ID=75620146

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190133001A KR20210048835A (ko) 2019-10-24 2019-10-24 전자 장치 및 이의 제어 방법

Country Status (2)

Country Link
KR (1) KR20210048835A (ko)
WO (1) WO2021080123A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113741973A (zh) * 2021-08-25 2021-12-03 杭州安恒信息技术股份有限公司 一种命令识别方法、系统、计算机及可读存储介质
CN117478175B (zh) * 2023-10-25 2024-04-30 中通服网盈科技有限公司 一种电力通信传输优化系统及运行方法
CN117951704B (zh) * 2024-03-27 2024-06-07 宁波和利时信息安全研究院有限公司 可执行文件的哈希计算方法、装置、电子设备和介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1194773A (en) * 1982-03-12 1985-10-08 John R. Dunn Bonding elastomers
KR20100072992A (ko) * 2008-12-22 2010-07-01 (주)씨엔에스 다수의 클라이언트를 위한 분산 네트워크 스토리지 장치 및그 방법
KR101988302B1 (ko) * 2012-10-11 2019-06-12 주식회사 케이티 해쉬 기반의 콘텐츠 파일의 식별자 생성 장치 및 방법, 및 해쉬 코드 생성 방법
KR101967855B1 (ko) * 2017-05-25 2019-04-11 김영후 2차원 바코드 블록 분할을 이용한 전자문서 보안 검증 방법 및 시스템
KR102401088B1 (ko) * 2017-08-02 2022-05-24 삼성전자주식회사 보안 장치, 이를 포함하는 전자 장치 및 전자 장치의 동작 방법

Also Published As

Publication number Publication date
WO2021080123A1 (ko) 2021-04-29

Similar Documents

Publication Publication Date Title
KR102546601B1 (ko) 정적 바이너리 계측을 사용하여 커널 제어-흐름 무결성을 보호하기 위한 방법 및 장치
US9658969B2 (en) System and method for general purpose encryption of data
US9223982B2 (en) Continuation of trust for platform boot firmware
EP3098712B1 (en) Credible kernel starting method and device
KR20210048835A (ko) 전자 장치 및 이의 제어 방법
TWI436280B (zh) 存取基本輸入輸出系統設定的認證方法
US8312296B2 (en) System and method for recovering from an interrupted encryption and decryption operation performed on a volume
KR102428461B1 (ko) 선택적 암호화 방법 및 그를 이용한 전자 장치
US20120047503A1 (en) Method for virtualizing a personal working environment and device for the same
KR101434860B1 (ko) 해시를 이용한 동적코드의 무결성 검증 방법
US9851985B2 (en) Platform configuration management using a basic input/output system (BIOS)
US20110225428A1 (en) System and Method for Encryption and Decryption of Data
US10339284B2 (en) Measurement method, electronic device, and measurement system
US11893144B2 (en) System and method for slice virtual disk encryption
US20130091394A1 (en) Data processing apparatus and validity verification method
US10929566B2 (en) Information processing device and information processing system
US20150227755A1 (en) Encryption and decryption methods of a mobile storage on a file-by-file basis
US20130191879A1 (en) Methods and systems for information assurance and supply chain security
TWI656453B (zh) 檢測系統及檢測方法
CN109583214B (zh) 一种安全控制方法
CN114077395A (zh) 对在待机模式期间在dram中发生不期望的内容改变的防护
US20170076088A1 (en) System and Method to Disable the Erasure of an Administrator Password in an Information Handling System
US11914717B2 (en) Information handling systems and related methods to cryptographically verify information handling system platform components and track events associated with the platform components
US20150363712A1 (en) Systems and methods for distinguishing information handling system provider-supported information handling resource via system license
TW201319862A (zh) 嵌入式元件與控制方法

Legal Events

Date Code Title Description
A201 Request for examination