KR101745821B1 - 시큐어 부팅 방법 및 시스템 - Google Patents

시큐어 부팅 방법 및 시스템 Download PDF

Info

Publication number
KR101745821B1
KR101745821B1 KR1020160034575A KR20160034575A KR101745821B1 KR 101745821 B1 KR101745821 B1 KR 101745821B1 KR 1020160034575 A KR1020160034575 A KR 1020160034575A KR 20160034575 A KR20160034575 A KR 20160034575A KR 101745821 B1 KR101745821 B1 KR 101745821B1
Authority
KR
South Korea
Prior art keywords
program
code
file format
executable file
computer
Prior art date
Application number
KR1020160034575A
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 KR1020160034575A priority Critical patent/KR101745821B1/ko
Application granted granted Critical
Publication of KR101745821B1 publication Critical patent/KR101745821B1/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Abstract

시큐어 부팅(secure booting) 방법 및 시스템이 개시된다. 컴퓨터로 구현된 시큐어 부팅 시스템이 수행하는 시큐어 부팅 방법에서는, 제2 프로그램의 제어에 따라 제1 프로그램의 실행 파일 포맷을 비실행 파일 포맷으로 변경하여 관리하고, 제1 프로그램의 구동 시 제2 프로그램의 제어에 따라 제1 프로그램을 메모리에 로딩하며, 제1 프로그램의 비실행 파일 포맷을 실행 파일 포맷으로 복원하여 시큐어 부팅을 처리할 수 있다.

Description

시큐어 부팅 방법 및 시스템{METHOD AND SYSTEM FOR SECURE BOOTING}
아래의 설명은 해킹 방지를 위한 시큐어 부트 로더(secure boot loader) 기술에 관한 것이다.
ELF(Executable and Linking Format) 포맷이나 PE(Portable Executable) 포맷 등과 같은 실행 파일 포맷은 컴퓨터의 운영체제에서 구동되는 프로그램의 오브젝트 파일(object file) 형식을 나타낸다. 예를 들어, 한국공개특허 제10-2003-0052767호는 실행 파일의 압축 및 복원 방법에 관한 것으로, 실행 파일 포맷 중 ELF 포맷에 대한 구성 예시를 개시하고 있다.
도 1 및 도 2는 종래기술에 있어서, 정상적인 실행 파일 포맷의 예를 도시한 도면들이다. 도 1의 실행 파일 포맷(110)은 ELF 포맷의 오브젝트 파일이 포함하는 바이너리 코드를 헥사덤프(hexdump)한 결과물의 일부를 나타내고 있으며, 도 2의 실행 파일 포맷(210)은 상기 오브젝트 파일의 바이너리 코드를 헥사덤프한 결과물의 다른 부분을 나타내고 있다.
도 3은 종래기술에 있어서, 바이너리 코드를 디스어셈블(disassemble)한 예를 도시한 도면이다. 도 3의 결과물(310)은 도 2의 실행 파일 포맷(210)에 대응하는 바이너리 코드를 리버스 엔지니어링 툴(reverse engineering tool)을 이용하여 디스어셈블함에 따라 바이너리 코드가 해석이 용이한 코드로 변환된 모습을 나타내고 있다.
이처럼, 기존 실행 파일 포맷의 오브젝트 파일들은 이용자들이 디스어셈블을 위한 툴들을 이용하여 코드를 용이하게 분석할 수 있기 때문에 파일들을 변조시키거나 교체시켜서 프로그램을 악의적인 의도로 제어할 수 있다는 문제점이 있다.
운영체제(Operating System, OS)나 펌웨어(firmware), 애플리케이션과 같은 프로그램의 무결성을 보장하기 위해 무결성의 보장이 필요한 파일의 코드를 운영체제에 따른 실행 파일 포맷이 아닌, 자체 실행 파일 포맷인 비실행 파일 포맷의 코드로 변환하여 관리할 수 있고, 해당 프로그램의 실행 시에 메모리에 로딩된 비실행 파일 포맷의 코드를 실행 파일 포맷의 코드로 복원함으로써 파일에 대한 변조나 교체를 막을 수 있는 시큐어 부팅(secure booting) 방법 및 시스템을 제공한다.
컴퓨터로 구현된 시큐어 부팅(secure booting) 시스템이 수행하는 시큐어 부팅 방법에 있어서, 상기 컴퓨터로 입력되는 제1 프로그램의 파일에 대한 실행 파일 포맷을 제2 프로그램의 제어에 따라 비실행 파일 포맷으로 변환하여 상기 제1 프로그램의 코드를 변환하는 단계; 상기 비실행 파일 포맷으로 변환된 파일을 상기 컴퓨터의 스토리지에 저장하는 단계; 상기 제1 프로그램의 구동 시, 상기 제2 프로그램의 제어에 따라 상기 비실행 파일 포맷으로 변환된 파일에서 상기 제1 프로그램의 변환된 코드를 상기 컴퓨터의 메모리에 로딩하는 단계; 및 상기 메모리에 로딩된 상기 제1 프로그램의 변환된 코드를, 상기 제2 프로그램의 제어에 따라 상기 실행 파일 포맷에 따른 원래의 코드로 복원하는 단계를 포함하고, 상기 비실행 파일 포맷은, 상기 제1 프로그램의 코드를 상기 컴퓨터에 대한 언노운 코드(unknown code)로 변환한 포맷을 포함하는 것을 특징으로 하는 시큐어 부팅 방법을 제공한다.
일측에 따르면, 상기 입력된 제1 프로그램의 파일 및 상기 실행 파일 포맷에 따른 원래의 코드는 상기 컴퓨터의 스토리지에 저장되지 않는 것을 특징으로 할 수 있다.
다른 측면에 따르면, 상기 제2 프로그램은 상기 컴퓨터의 부트 롬(boot ROM(Read Only Memory))에 기반하여 무결성이 인증된 프로그램을 포함하고, 상기 제1 프로그램의 코드의 변환을 위한 기능, 상기 변환된 코드의 로딩을 위한 기능 및 상기 변환된 코드의 복원을 위한 기능을 적어도 포함하도록 구현되는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 부트 롬은 부트 로더(boot loader)의 해시값 또는 서명(signature)에 기반하여 상기 부트 로더의 무결성을 인증하고, 상기 부트 로더는 로딩하고자 하는 프로그램의 해시값 또는 서명에 기반하여 상기 로딩하고자 하는 프로그램의 무결성을 인증하며, 상기 제2 프로그램은 상기 부트 롬에 의해 무결성이 인증된 부트 로더 또는 상기 부트 로더에 의해 무결성이 인증된 프로그램을 포함하는 것을 특징으로 할 수 있다.
또 다른 측면에 따르면, 상기 제1 프로그램의 코드를 변환하는 단계는, 상기 제2 프로그램이 포함하는 기설정된 인코딩 스킴 또는 기설정된 암호화 스킴에 따라 상기 제1 프로그램의 코드를 변환하여 상기 실행 파일 포맷을 상기 비실행 파일 포맷으로 변환하고, 상기 복원하는 단계는, 상기 인코딩 스킴에 대응하는 디코딩 스킴 또는 상기 암호화 스킴에 대응하는 복호화 스킴에 따라 상기 제1 프로그램의 변환된 코드를 복원하여 상기 비실행 파일 포맷을 상기 실행 파일 포맷으로 변환하는 것을 특징으로 할 수 있다.
컴퓨터로 구현된 시큐어 부팅(secure booting) 시스템에 있어서, 스토리지; 상기 컴퓨터에서 판독 가능한 명령을 저장하는 메모리; 및 상기 명령을 실행하도록 구현되는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 상기 컴퓨터로 입력되는 제1 프로그램의 파일에 대한 실행 파일 포맷을 제2 프로그램의 제어에 따라 비실행 파일 포맷으로 변환하여 상기 제1 프로그램의 코드를 변환하는 포맷 변환 제어부; 상기 비실행 파일 포맷으로 변환된 파일을 상기 컴퓨터의 스토리지에 저장하는 파일 관리 제어부; 상기 제1 프로그램의 구동 시, 상기 제2 프로그램의 제어에 따라 상기 비실행 파일 포맷으로 변환된 파일에서 상기 제1 프로그램의 변환된 코드를 상기 컴퓨터의 메모리에 로딩하는 로딩 제어부; 및 상기 메모리에 로딩된 상기 제1 프로그램의 변환된 코드를, 상기 제2 프로그램의 제어에 따라 상기 실행 파일 포맷에 따른 원래의 코드로 복원하는 포맷 복원 제어부를 포함하고, 상기 비실행 파일 포맷은, 상기 제1 프로그램의 코드를 상기 컴퓨터에 대한 언노운 코드(unknown code)로 변환한 포맷을 포함하는 것을 특징으로 하는 시큐어 부팅 시스템을 제공한다.
컴퓨터로 구현된 시큐어 부팅(secure booting) 시스템이 수행하는 시큐어 부팅 방법에 있어서, 프로그램의 구동 시, 비실행 파일 포맷의 상기 프로그램이 상기 컴퓨터의 메모리에 로딩된 상태에서, 상기 프로그램으로부터 제어권을 전달받는 단계; 상기 메모리에 로딩된 상기 프로그램을 실행 파일 포맷에 따른 원래의 코드로 복원하는 단계; 및 상기 프로그램이 실행되도록 상기 복원된 프로그램으로 상기 제어권을 넘겨주는 단계를 포함하고, 상기 비실행 파일 포맷은, 상기 프로그램의 코드를 상기 컴퓨터에 대한 언노운 코드(unknown code)로 변환한 포맷을 포함하는 것을 특징으로 하는 시큐어 부팅 방법을 제공한다.
운영체제(Operating System, OS)나 펌웨어(firmware), 애플리케이션과 같은 프로그램의 무결성을 보장하기 위해 무결성의 보장이 필요한 파일의 코드를 운영체제에 따른 실행 파일 포맷이 아닌, 자체 실행 파일 포맷인 비실행 파일 포맷의 코드로 변환하여 관리할 수 있고, 해당 프로그램의 실행 시에 메모리에 로딩된 비실행 파일 포맷의 코드를 실행 파일 포맷의 코드로 복원함으로써 파일에 대한 변조나 교체를 막을 수 있다.
도 1 및 도 2는 종래기술에 있어서, 정상적인 실행 파일 포맷의 예를 도시한 도면들이다.
도 3은 종래기술에 있어서, 바이너리 코드를 디스어셈블한 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 있어서 컴퓨터의 내부 구성의 일례를 설명하기 위한 블록도이다.
도 5는 본 발명의 일실시예에 따른 컴퓨터 시스템(400)의 프로세서(410)가 포함할 수 있는 구성요소의 예를 도시한 블록도이다.
도 6은 본 발명의 일실시예에 따른 컴퓨터 시스템(400)이 수행할 수 있는 시큐어 부팅 방법의 예를 도시한 순서도이다.
도 7 및 도 8은 본 발명의 일실시예에 있어서, 비실행 파일 포맷으로 변경된 코드의 예를 도시한 도면들이다.
도 9는 본 발명의 일실시예에 있어서, 비실행 파일 포맷에 따른 바이너리 코드를 디스어셈블한 예를 도시한 도면이다.
도 10은 본 발명의 일실시예에 있어서, 연쇄적인 무결성의 인증에 대한 예를 도시한 도면이다.
도 11은 본 발명의 일실시예에 따른 컴퓨터 시스템(400)의 프로세서(410)가 포함할 수 있는 구성요소의 다른 예를 도시한 블록도이다.
도 12은 본 발명의 일실시예에 따른 컴퓨터 시스템(400)이 수행할 수 있는 시큐어 부팅 방법의 다른 예를 도시한 순서도이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 4는 본 발명의 일실시예에 있어서 컴퓨터 시스템의 내부 구성의 일례를 설명하기 위한 블록도이다. 도 4는 본 발명의 실시예들에 따른 시큐어 부팅 시스템이 구현될 수 있는 컴퓨터 시스템(400)의 예를 도시한 것이다. 컴퓨터 시스템(400)은 운영체제(Operating System, OS)가 설치되고, 운영체제에 기반하여 동작할 수 있는 기기로서 일례로, 서버 컴퓨팅 디바이스, 서버 컴퓨터, 일련의 서버 컴퓨터들, 서버 팜, 클라우드 컴퓨터, 컨텐츠 플랫폼, 이동 컴퓨팅 장치, 스마트폰(smart phone), 휴대폰, 네비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC, IoT(Internet of Things) 기기, AP(Access Point), 셋톱 박스, 미디어 플레이어 등이 될 수 있다.
도 4에 도시한 바와 같이, 컴퓨터 시스템(400)은 시큐어 부팅 방법을 실행하기 위한 구성요소로서 프로세서(410), 메모리(420), 영구 저장 장치(430), 버스(440), 입출력 인터페이스(450) 및 네트워크 인터페이스(460)를 포함할 수 있다.
프로세서(410)는 명령어들의 임의의 시퀀스를 처리할 수 있는 임의의 장치를 포함하거나 그의 일부일 수 있다. 프로세서(410)는 예를 들어 컴퓨터 프로세서, 이동 장치 또는 다른 전자 장치 내의 프로세서 및/또는 디지털 프로세서를 포함할 수 있다. 프로세서(410)는 버스(440)를 통해 메모리(420)에 접속될 수 있다.
메모리(420)는 컴퓨터 시스템(400)에 의해 사용되거나 그에 의해 출력되는 정보를 저장하기 위한 휘발성 메모리, 영구, 가상 또는 기타 메모리를 포함할 수 있다. 메모리(420)는 예를 들어 랜덤 액세스 메모리(RAM: random access memory) 및/또는 동적 RAM(DRAM: dynamic RAM)을 포함할 수 있다. 메모리(420)는 컴퓨터 시스템(400)의 상태 정보와 같은 임의의 정보를 저장하는 데 사용될 수 있다. 메모리(420)는 예를 들어 본 발명의 실시예들에 따른 시큐어 부팅 방법을 위한 명령어들을 포함하는 컴퓨터 시스템(400)의 명령어들을 저장하는 데에도 사용될 수 있다. 컴퓨터 시스템(400)은 필요에 따라 또는 적절한 경우에 하나 이상의 프로세서(410)를 포함할 수 있다. 이러한 메모리(420)에는 운영체제와 적어도 하나의 프로그램 코드(일례로, 펌웨어(firmware)나 다양한 애플리케이션을 위한 프로그램 코드)가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 드라이브 메커니즘(drive mechanism)을 이용하여 메모리(420)와는 별도의 컴퓨터에서 판독 가능한 기록 매체로부터 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록 매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록 매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록 매체가 아닌 네트워크 인터페이스(460)을 통해 메모리(420)에 로딩될 수도 있다. 예를 들어, 적어도 하나의 프로그램은 개발자들 또는 애플리케이션의 설치 파일을 배포하는 파일 배포 시스템이 네트워크를 통해 제공하는 파일들에 의해 설치되는 프로그램(일례로 상술한 애플리케이션)에 기반하여 메모리(420)에 로딩될 수 있다.
버스(440)는 컴퓨터 시스템(400)의 다양한 컴포넌트들 사이의 상호작용을 가능하게 하는 통신 기반 구조를 포함할 수 있다. 버스(440)는 예를 들어 컴퓨터 시스템(400)의 컴포넌트들 사이에, 예를 들어 프로세서(410)와 메모리(420) 사이에 데이터를 운반할 수 있다. 버스(440)는 컴퓨터 시스템(400)의 컴포넌트들 간의 무선 및/또는 유선 통신 매체를 포함할 수 있으며, 병렬, 직렬 또는 다른 토폴로지 배열들을 포함할 수 있다.
영구 저장 장치(430)는 (예를 들어, 메모리(420)에 비해) 소정의 연장된 기간 동안 데이터를 저장하기 위해 컴퓨터 시스템(400)에 의해 사용되는 바와 같은 메모리 또는 다른 영구 저장 장치와 같은 컴포넌트들을 포함할 수 있다. 예를 들어, 영구 저장 장치(430)는 컴퓨터 시스템(400) 내의 프로세서(410)에 의해 사용되는 바와 같은 비휘발성 메인 메모리(일례로, ROM(read only memory)), 플래시 메모리, 하드 디스크, 광 디스크 또는 다른 컴퓨터 판독 가능 매체를 포함할 수 있다.
입출력 인터페이스(450)는 키보드, 마우스, 음성 명령 입력, 디스플레이 또는 다른 입력 또는 출력 장치에 대한 인터페이스들을 포함할 수 있다. 구성 명령들 및/또는 태깅을 위한 음원 컨텐츠의 음원 데이터와 텍스트 정보가 입출력 인터페이스(450)를 통해 수신될 수 있다.
네트워크 인터페이스(460)는 근거리 네트워크 또는 인터넷과 같은 네트워크들에 대한 하나 이상의 인터페이스를 포함할 수 있다. 네트워크 인터페이스(460)는 유선 또는 무선 접속들에 대한 인터페이스들을 포함할 수 있다. 구성 명령들 및/또는 태깅을 위한 음원 컨텐츠의 음원 데이터와 텍스트 정보는 네트워크 인터페이스(460)를 통해 수신될 수 있다.
또한, 다른 실시예들에서 컴퓨터 시스템(400)은 도 4의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 컴퓨터 시스템(400)은 상술한 입출력 인터페이스(450)와 연결되는 입출력 장치들 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다. 보다 구체적인 예로, 컴퓨터 시스템(400)이 스마트폰과 같은 모바일 기기의 형태로 구현되는 경우, 일반적으로 스마트폰이 포함하고 있는 가속도 센서나 자이로 센서, 카메라, 각종 물리적인 버튼, 터치패널을 이용한 버튼, 입출력 포트, 진동을 위한 진동기 등의 다양한 구성요소들이 컴퓨터 시스템(400)에 더 포함되도록 구현될 수 있다.
도 5는 본 발명의 일실시예에 따른 컴퓨터 시스템(400)의 프로세서(410)가 포함할 수 있는 구성요소의 예를 도시한 블록도이고, 도 6은 본 발명의 일실시예에 따른 컴퓨터 시스템(400)이 수행할 수 있는 시큐어 부팅 방법의 예를 도시한 순서도이다.
도 5에 도시된 바와 같이, 프로세서(410)는 포맷 변환 제어부(510), 파일 관리 제어부(520), 로딩 제어부(530), 및 포맷 복원 제어부(540)를 포함할 수 있다. 이러한 프로세서(410)의 구성요소들은 적어도 하나의 프로그램 코드에 의해 제공되는 제어 명령에 따라 프로세서(410)에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 예를 들어, 프로세서(410)가 프로그램의 코드를 변환하도록 컴퓨터 시스템(400)을 제어하기 위해 동작하는 프로세서(410)의 기능적 표현으로서 포맷 변환 제어부(510)가 사용될 수 있다.
이때, 프로세서(410) 및 프로세서(410)의 구성요소들은 도 6의 시큐어 부팅 방법이 포함하는 단계들(S610 내지 S650)을 수행할 수 있다. 예를 들어, 프로세서(410) 및 프로세서(410)의 구성요소들은 메모리(420)가 포함하는 운영체제의 코드와 상술한 적어도 하나의 프로그램 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다. 여기서 적어도 하나의 프로그램 코드는 상기 시큐어 부팅 방법을 처리하기 위해 구현된 프로그램의 코드에 대응될 수 있다.
시큐어 부팅 방법은 도시된 순서대로 발생하지 않을 수 있으며, 단계들 중 일부가 생략되거나 추가의 과정이 더 포함될 수 있다.
단계(S610)에서 프로세서(410)는 저장된 프로그램 코드를 메모리(420)에 로딩할 수 있다. 예를 들어, 부트 롬(boot ROM(Read Only Memory))은 도 4를 통해 설명한 영구 저장 장치(430)에 포함될 수 있으며, 프로세서(410)는 버스(440)를 통해 영구 저장 장치(430)에 포함된 부트 롬의 프로그램 코드를 메모리(420)에 로딩하도록 컴퓨터 시스템(400)을 제어할 수 있다. 이때, 프로세서(410)는 부트 롬에 기반하여 연쇄적으로 다른 프로그램들의 무결성을 인증할 수 있다. 이러한 연쇄적인 무결성의 인증에 대해서는 이후 더욱 자세히 설명한다.
단계(S620)에서 포맷 변환 제어부(510)는 컴퓨터 시스템(400)으로 입력되는 제1 프로그램의 파일에 대한 실행 파일 포맷을 제2 프로그램의 제어에 따라 비실행 파일 포맷으로 변환하여 제1 프로그램의 코드를 변환할 수 있다. 여기서, 제2 프로그램은 부트 롬에 기반하여 직/간접적으로 무결성이 인증된 프로그램일 수 있다. 제2 프로그램은 제2 프로그램이 로딩하는 제1 프로그램의 코드의 형식을 운영체제의 실행 파일 포맷에서 기설정된 비실행 파일 포맷으로 변환하기 위한 기능을 포함할 수 있고, 포맷 변환 제어부(510)는 제2 프로그램의 제어에 따라 제1 프로그램의 파일에 대한 실행 파일 포맷을 비실행 파일 포맷으로 변환할 수 있다. 여기서, 비실행 파일 포맷은 운영체제의 실행 파일 포맷이 아닌 자체 실행 파일 포맷으로서, 제1 프로그램의 코드를 컴퓨터 시스템(400)에 대한 언노운 코드(unknown code)로 변환한 포맷을 포함할 수 있다. 여기서, 언노운 코드는 컴퓨터 시스템(400)에서 인식할 수 없어 실행될 수 없는 코드를 포함할 수 있다. 컴퓨터 시스템(400)으로 입력되는 제1 프로그램은 앞서 설명한 봐와 같이 별도의 컴퓨터에서 판독 가능한 기록 매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등을 통해 컴퓨터 시스템(400)에 입력될 수도 있고, 도 4를 통해 설명한 네트워크 인터페이스(460)를 통해 수신되는 형태로 컴퓨터 시스템(400)에 입력될 수도 있다.
제1 프로그램의 코드를 변환하는 예로서, 포맷 변환 제어부(510)는 제2 프로그램이 포함하는 기설정된 인코딩 스킴 또는 기설정된 암호화 스킴에 따라 제1 프로그램의 코드를 변환하여 실행 파일 포맷을 비실행 파일 포맷으로 변환할 수 있다. 코드에 대한 인코딩 또는 암호화를 통해 실행 파일 포맷을 변경하는 것은 하나의 실시예일뿐, 제1 프로그램의 코드가 컴퓨터 시스템(400)에서 실행될 수 없도록 실행 파일 포맷을 변환하기 위한 모든 방법들 중 하나가 활용될 수 있다. 예를 들어, 제1 프로그램의 파일 자체를 암호화하여 실행 파일 포맷을 비실행 파일 포맷으로 변환할 수도 있다.
단계(S630)에서 파일 관리 제어부(520)는 비실행 파일 포맷으로 변환된 파일을 컴퓨터 시스템(400)의 스토리지에 저장 및 관리할 수 있다. 예를 들어, 파일 관리 제어부(520)는 비실행 파일 포맷으로 변환된 파일을 버스(440)를 통해 도 4를 통해 설명한 영구 저장 장치(430)에 저장하도록 컴퓨터 시스템(400)을 제어할 수 있다. 여기서 스토리지는 도 4를 통해 설명한 영구 저장 장치(430)에 포함될 수 있다. 이때, 입력된 제1 프로그램의 파일과 실행 파일 포맷에 따른 해당 파일의 원래의 코드는 컴퓨터 시스템(400)의 스토리지에 저장되지 않을 수 있다. 따라서, 컴퓨터 시스템(400)의 이용자는 제1 프로그램의 실행 파일이나 코드를 분석하거나 변조 또는 교체할 수 없으며, 비실행 파일 포맷으로 변환된 파일은 컴퓨터 시스템(400)에서 실행되지 않기 때문에 제1 프로그램에 대한 공격을 무력화시킬 수 있다.
단계(S640)에서 로딩 제어부(530)는 제1 프로그램의 구동 시, 제2 프로그램의 제어에 따라 비실행 파일 포맷으로 변환된 파일에서 제1 프로그램의 변환된 코드를 컴퓨터 시스템(400)의 메모리(420)에 로딩할 수 있다. 예를 들어, 로딩 제어부(530)는 스토리지에 저장된 비실행 파일 포맷의 파일에서 제1 프로그램의 변환된 코드를 버스(440)를 통해 메모리(420)로 로딩하도록 컴퓨터 시스템(400)을 제어할 수 있다. 이때, 제1 프로그램의 변환된 코드는 비실행 파일 포맷에 따르기 때문에 컴퓨터 시스템(400)에서 실행될 수 없다.
단계(S650)에서 포맷 복원 제어부(540)는 메모리(420)에 로딩된 제1 프로그램의 변환된 코드를, 제2 프로그램의 제어에 따라 실행 파일 포맷에 따른 원래의 코드로 복원할 수 있다. 예를 들어, 포맷 복원 제어부(540)는 제2 프로그램이 포함하는 인코딩 스킴에 대응하는 디코드 스킴, 또는 제2 프로그램이 포함하는 암호화 스킴에 대응하는 복호화 스킴에 따라 제1 프로그램의 변환된 코드 또는 제1 프로그램의 변환된 파일을 복원하여 비실행 파일 포맷을 실행 파일 포맷으로 변환할 수 있다.
이 경우, 복원된 실행 파일 포맷의 코드는 운영체제의 제어에 따라 프로세서(410)에 의해 실행될 수 있다. 이처럼 파일 포맷의 변환 과정이 제1 프로그램의 구동 시에 메모리(420) 상에서 이루어지기 때문에 원래 파일의 내용을 획득하는 것이 어려워지며, 제1 프로그램의 파일에 대한 변조나 교체가 어려워진다. 따라서 제1 프로그램의 파일에 대한 해킹을 방지할 수 있다.
도 7 및 도 8은 본 발명의 일실시예에 있어서, 비실행 파일 포맷으로 변경된 코드의 예를 도시한 도면들이다. 도 7은 도 1의 실행 파일 포맷에 따른 코드를 인코딩하여 비실행 파일 포맷(710)으로 변환한 예를 나타내고 있다. 또한, 도 8은 도 2의 실행 파일 포맷에 따른 코드를 인코딩하여 비실행 파일 포맷(810)으로 변환한 예를 나타내고 있다.
도 9는 본 발명의 일실시예에 있어서, 비실행 파일 포맷에 따른 바이너리 코드를 디스어셈블한 예를 도시한 도면이다. 도 9의 결과물(910)은 도 8의 비실행 파일 포맷의 바이너리 코드를 리버스 엔지니어링 툴(reverse engineering tool)을 이용하여 디스어셈블한 것으로, 해석할 수 없는 코드로 디스어셈들된 예를 나타내고 있다. 다시 말해, 도 3을 통해 설명한 바와 같이 도 2의 실행 파일 포맷에 따른 바이너리 코드가 리버스 엔지니어링 툴을 이용하여 디스어셈블함에 따라 바이너리 코드가 해석이 용이한 코드로 변환된 반면, 본 발명의 실시예들에 따르면, 비실행 파일 포맷에 따른 바이너리 코드는 디스어셈블을 통해 코드를 분석하기 어려움을 알 수 있다.
도 10은 본 발명의 일실시예에 있어서, 연쇄적인 무결성의 인증에 대한 예를 도시한 도면이다. 도 4 및 도 5를 통해 설명한 바와 같이, 컴퓨터 시스템(400)은 도 10에 도시된 부트 롬(1010)의 프로그램 코드를 메모리(420)로 로딩할 수 있다. 여기서 부트 롬(1010)은 도 4의 영구 저장 장치(430)에 포함될 수 있다. 이때, 프로세서(410)는 메모리(420)에 로딩된 부트 롬(1010)의 프로그램 코드에 기반하여 부트 로더(boot loader, 1020)와 같이 다른 프로그램을 메모리(420)로 로딩할 수 있다. 이때, 프로세서(410)는 부트 롬(1010)에 기 저장된 해시값이나 서명(signature)에 기반하여 부트 로더(1020)의 무결성을 인증할 수 있다. 부트 로더(1020)의 무결성이 인증된 후, 프로세서(410)는 무결성이 인증된 부트 로더(1020)의 제어에 따라 펌웨어(firmware, 1030)나 애플리케이션(1040)을 위한 프로그램 코드를 메모리(420)에 로딩할 수 있고, 부트 로더(1020)에 기 저장된 해시값이나 서명에 기반하여 로딩된 펌웨어(1030)나 애플리케이션(1040)의 무결성을 인증할 수 있다. 마찬가지로, 프로세서(410)는 무결성이 인증된 펌웨어(1030)나 애플리케이션(1040)의 제어에 따라 다른 프로그램(미도시, 일례로 다른 애플리케이션)을 메모리(420)에 로딩하고, 다른 프로그램에 대한 무결성을 인증할 수 있다.
이 경우, 도 4 및 도 5를 통해 설명한 제2 프로그램은 부트 롬(1010)에 기반하여 무결성이 인증된 프로그램일 수 있다. 예를 들어, 제2 프로그램은 부트 롬(1010)에 의해 직접 무결성이 인증된 부트 로더(1020)이거나, 부트 로더(1020)에 의해 연쇄적으로 무결성이 인증된 펌웨어(1030) 또는 애플리케이션(1040)일 수 있다. 이 경우, 제1 프로그램은 부트 로더(1020)에 의해 무결성이 인증되는 펌웨어(1030)나 애플리케이션(1040)이거나 또는 펌웨어(1030) 또는 애플리케이션(1040)에 의해 무결성이 인증되는 다른 프로그램일 수 있다.
제2 프로그램은 제1 프로그램의 코드의 변환을 위한 기능, 제1 프로그램의 변환된 코드를 메모리(420)로 로딩하기 위한 기능 및 제1 프로그램의 변환된 코드의 복원을 위한 기능을 적어도 포함하도록 구현될 수 있다.
도 11은 본 발명의 일실시예에 따른 컴퓨터 시스템(400)의 프로세서(410)가 포함할 수 있는 구성요소의 다른 예를 도시한 블록도이고, 도 12은 본 발명의 일실시예에 따른 컴퓨터 시스템(400)이 수행할 수 있는 시큐어 부팅 방법의 다른 예를 도시한 순서도이다. 도 11에 도시된 바와 같이, 프로세서(410)는 제어권 관리부(1110) 및 코드 변환부(1120)를 포함할 수 있다. 이러한 제어권 관리부(1110) 및 코드 변환부(1120) 역시 프로세서(410)에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다.
단계(1210)에서 제어권 관리부(1110)는 제1 프로그램의 구동 시, 비실행 파일 포맷의 제1 프로그램이 컴퓨터 시스템(400)의 메모리(420)에 로딩된 상태에서, 컴퓨터 시스템(400)으로 구현된 시큐어 부팅 시스템으로부터 제어권을 전달받을 수 있다. 이때, 비실행 파일 포맷은, 실행 파일 포맷의 제1 프로그램의 코드를 컴퓨터 시스템(400)에 대한 언노운 코드(unknown code)로 변환한 포맷을 포함할 수 있다. 언노운 코드는 컴퓨터 시스템(400)에서 인식할 수 없어 실행될 수 없는 코드를 포함할 수 있다. 앞선 실시예들에서 설명한 실행될 수 없는 코드 역시 언노운 코드에 포함될 수 있다. 또한, 제어권은 특정 프로그램의 실행에 대한 권한으로, 제어권을 가진 특정 프로그램이 컴퓨터 시스템(400)에서 실행될 수 있다. 예를 들어, 제어권 관리부(1110)는 제1 프로그램이 구동됨에 따라 갖고 있는 제어권을 제2 프로그램이 넘겨받을 수 있도록 제어할 수 있다.
단계(1210)에서 코드 변환부(1120)는 메모리(420)에 로딩된 제1 프로그램을 실행 파일 포맷에 따른 원래의 코드로 복원할 수 있다. 예를 들어, 비실행 파일 포맷의 제1 프로그램의 코드를 실행 파일 포맷에 따른 원래의 코드로 복원하는 기능을 포함할 수 있다. 코드 변환부(1120)는 이러한 기능을 이용하여 제1 프로그램의 코드를 복원할 수 있다.
단계(1230)에서 제어권 관리부(1110)는 제1 프로그램이 실행되도록 상기 복원된 제1 프로그램으로 상기 제어권을 넘겨줄 수 있다. 예를 들어, 단계(1210)에서 넘겨받은 제어권을 상기 복원된 제1 프로그램으로 제공하는 기능을 포함할 수 있다. 제어권 관리부(1110)는 이러한 기능을 이용하여 제어권을 제1 프로그램으로 넘겨줄 수 있다. 따라서 제어권을 넘겨받은 제1 프로그램이 실행될 수 있다.
이러한 제1 프로그램은 앞서 설명한 바와 같이, 부트 롬(boot ROM(Read Only Memory)), 펌웨어(firmware) 및 애플리케이션 중 적어도 하나일 수 있다. 또한, 비실행 파일 포맷으로 변환되어 있는 다른 프로그램(일례로, 제3 프로그램)의 코드를 복원하기 위한 기능을 포함할 수 있다.
필요에 따라 선택적으로 컴퓨터 시스템(400)으로 입력되는 프로그램의 파일에 대한 실행 파일 포맷을 비실행 파일 포맷으로 변환하기 위한 기능 및 비실행 파일 포맷으로 변환된 파일을 컴퓨터 시스템(400)의 스토리지에 저장하는 기능이 구현될 수 있다. 이 경우, 프로세서(410)는 상술한 기능을 이용하여 프로그램의 파일에 대한 실행 파일 포맷을 비실행 파일 포맷으로 변환하여 저장함으로써, 파일에 대한 변조나 교체를 막을 수 있다.
컴퓨터 시스템(400)은 바람직하게는 IoT 기기나 AP를 구현하기 위한 장치일 수 있으며, IoT 기기나 AP의 운영체제, 펌웨어 또는 애플리케이션의 무결성을 보장하기 위해 상술한 본 발명의 실시예들에 따른 시큐어 부팅 방법을 수행하도록 구현될 수 있다.
이처럼 본 발명의 실시예들에 따르면, 운영체제(Operating System, OS)나 펌웨어(firmware), 애플리케이션과 같은 프로그램의 무결성을 보장하기 위해 무결성의 보장이 필요한 파일의 코드를 운영체제에 따른 실행 파일 포맷이 아닌, 자체 실행 파일 포맷인 비실행 파일 포맷의 코드로 변환하여 관리할 수 있고, 해당 프로그램의 실행 시에 메모리에 로딩된 비실행 파일 포맷의 코드를 실행 파일 포맷의 코드로 복원함으로써 파일에 대한 변조나 교체를 막을 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (14)

  1. 컴퓨터로 구현된 시큐어 부팅(secure booting) 시스템에 있어서,
    스토리지;
    상기 컴퓨터에서 판독 가능한 명령을 저장하는 메모리; 및
    상기 명령을 실행하도록 구현되는 적어도 하나의 프로세서
    를 포함하고,
    상기 적어도 하나의 프로세서는,
    상기 컴퓨터로 입력되는 제1 프로그램의 파일에 대한 실행 파일 포맷을 제2 프로그램의 제어에 따라 비실행 파일 포맷으로 변환하여 상기 제1 프로그램의 코드를 변환하는 포맷 변환 제어부;
    상기 비실행 파일 포맷으로 변환된 파일을 상기 컴퓨터의 스토리지에 저장하는 파일 관리 제어부;
    상기 제1 프로그램의 구동 시, 상기 제2 프로그램의 제어에 따라 상기 비실행 파일 포맷으로 변환된 파일에서 상기 제1 프로그램의 변환된 코드를 상기 컴퓨터의 메모리에 로딩하는 로딩 제어부; 및
    상기 메모리에 로딩된 상기 제1 프로그램의 변환된 코드를, 상기 제2 프로그램의 제어에 따라 상기 실행 파일 포맷에 따른 원래의 코드로 복원하는 포맷 복원 제어부
    를 포함하고,
    상기 비실행 파일 포맷은, 상기 제1 프로그램의 코드를 상기 컴퓨터에 대한 언노운 코드(unknown code)로 변환한 포맷을 포함하고,
    부트 롬(boot ROM(Read Only Memory))을 더 포함하고,
    상기 제2 프로그램은 상기 부트 롬에 기반하여 무결성이 인증된 프로그램으로서, 상기 제1 프로그램의 코드의 변환을 위한 기능, 상기 변환된 코드의 로딩을 위한 기능 및 상기 변환된 코드의 복원을 위한 기능을 적어도 포함하도록 구현되는 것을 특징으로 하는 시큐어 부팅 시스템.
  2. 제1항에 있어서,
    상기 입력된 제1 프로그램의 파일 및 상기 실행 파일 포맷에 따른 원래의 코드는 상기 컴퓨터의 스토리지에 저장되지 않는 것을 특징으로 하는 시큐어 부팅 시스템.
  3. 삭제
  4. 제1항에 있어서,
    상기 부트 롬은 부트 로더(boot loader)의 해시값 또는 서명(signature)에 기반하여 상기 부트 로더의 무결성을 인증하고,
    상기 부트 로더는 로딩하고자 하는 프로그램의 해시값 또는 서명에 기반하여 상기 로딩하고자 하는 프로그램의 무결성을 인증하며,
    상기 제2 프로그램은 상기 부트 롬에 의해 무결성이 인증된 부트 로더 또는 상기 부트 로더에 의해 무결성이 인증된 프로그램을 포함하는 것을 특징으로 하는 시큐어 부팅 시스템.
  5. 제1항에 있어서,
    상기 포맷 변환 제어부는,
    상기 제2 프로그램이 포함하는 기설정된 인코딩 스킴 또는 기설정된 암호화 스킴에 따라 상기 제1 프로그램의 코드를 변환하여 상기 실행 파일 포맷을 상기 비실행 파일 포맷으로 변환하고,
    상기 포맷 복원 제어부는,
    상기 인코딩 스킴에 대응하는 디코딩 스킴 또는 상기 암호화 스킴에 대응하는 복호화 스킴에 따라 상기 제1 프로그램의 변환된 코드를 복원하여 상기 비실행 파일 포맷을 상기 실행 파일 포맷으로 변환하는 것을 특징으로 하는 시큐어 부팅 시스템.
  6. 컴퓨터로 구현된 시큐어 부팅(secure booting) 시스템이 수행하는 시큐어 부팅 방법에 있어서,
    상기 컴퓨터로 입력되는 제1 프로그램의 파일에 대한 실행 파일 포맷을 제2 프로그램의 제어에 따라 비실행 파일 포맷으로 변환하여 상기 제1 프로그램의 코드를 변환하는 단계;
    상기 비실행 파일 포맷으로 변환된 파일을 상기 컴퓨터의 스토리지에 저장하는 단계;
    상기 제1 프로그램의 구동 시, 상기 제2 프로그램의 제어에 따라 상기 비실행 파일 포맷으로 변환된 파일에서 상기 제1 프로그램의 변환된 코드를 상기 컴퓨터의 메모리에 로딩하는 단계; 및
    상기 메모리에 로딩된 상기 제1 프로그램의 변환된 코드를, 상기 제2 프로그램의 제어에 따라 상기 실행 파일 포맷에 따른 원래의 코드로 복원하는 단계
    를 포함하고,
    상기 비실행 파일 포맷은, 상기 제1 프로그램의 코드를 상기 컴퓨터에 대한 언노운 코드(unknown code)로 변환한 포맷을 포함하고,
    상기 제2 프로그램은 상기 컴퓨터의 부트 롬(boot ROM(Read Only Memory))에 기반하여 무결성이 인증된 프로그램을 포함하고, 상기 제1 프로그램의 코드의 변환을 위한 기능, 상기 변환된 코드의 로딩을 위한 기능 및 상기 변환된 코드의 복원을 위한 기능을 적어도 포함하도록 구현되는 것을 특징으로 하는 시큐어 부팅 방법.
  7. 제6항에 있어서,
    상기 입력된 제1 프로그램의 파일 및 상기 실행 파일 포맷에 따른 원래의 코드는 상기 컴퓨터의 스토리지에 저장되지 않는 것을 특징으로 하는 시큐어 부팅 방법.
  8. 삭제
  9. 제6항에 있어서,
    상기 부트 롬은 부트 로더(boot loader)의 해시값 또는 서명(signature)에 기반하여 상기 부트 로더의 무결성을 인증하고,
    상기 부트 로더는 로딩하고자 하는 프로그램의 해시값 또는 서명에 기반하여 상기 로딩하고자 하는 프로그램의 무결성을 인증하며,
    상기 제2 프로그램은 상기 부트 롬에 의해 무결성이 인증된 부트 로더 또는 상기 부트 로더에 의해 무결성이 인증된 프로그램을 포함하는 것을 특징으로 하는 시큐어 부팅 방법.
  10. 제6항에 있어서,
    상기 제1 프로그램의 코드를 변환하는 단계는,
    상기 제2 프로그램이 포함하는 기설정된 인코딩 스킴 또는 기설정된 암호화 스킴에 따라 상기 제1 프로그램의 코드를 변환하여 상기 실행 파일 포맷을 상기 비실행 파일 포맷으로 변환하고,
    상기 복원하는 단계는,
    상기 인코딩 스킴에 대응하는 디코딩 스킴 또는 상기 암호화 스킴에 대응하는 복호화 스킴에 따라 상기 제1 프로그램의 변환된 코드를 복원하여 상기 비실행 파일 포맷을 상기 실행 파일 포맷으로 변환하는 것을 특징으로 하는 시큐어 부팅 방법.
  11. 컴퓨터로 구현된 시큐어 부팅(secure booting) 시스템이 수행하는 시큐어 부팅 방법에 있어서,
    제1 프로그램의 구동 시, 비실행 파일 포맷의 상기 제1 프로그램이 상기 컴퓨터의 메모리에 로딩된 상태에서, 제2 프로그램의 제어에 따라 상기 시큐어 부팅 시스템으로부터 제어권을 전달받는 단계;
    상기 제2 프로그램의 제어에 따라 상기 메모리에 로딩된 상기 제1 프로그램을 실행 파일 포맷에 따른 원래의 코드로 복원하는 단계; 및
    상기 제2 프로그램의 제어에 따라 상기 제1 프로그램이 실행되도록 상기 원래의 코드로 복원된 제1 프로그램으로 상기 제어권을 넘겨주는 단계
    를 포함하고,
    상기 비실행 파일 포맷은, 상기 제1 프로그램의 코드를 상기 컴퓨터에 대한 언노운 코드(unknown code)로 변환한 포맷을 포함하고,
    상기 제2 프로그램은 상기 컴퓨터의 부트 롬(boot ROM(Read Only Memory))에 기반하여 무결성이 인증된 프로그램을 포함하고, 상기 제1 프로그램의 코드의 변환을 위한 기능, 상기 변환된 코드의 로딩을 위한 기능 및 상기 변환된 코드의 복원을 위한 기능을 적어도 포함하도록 구현되는 것을 특징으로 하는 시큐어 부팅 방법.
  12. 제11항에 있어서,
    상기 제2 프로그램은 펌웨어(firmware) 및 애플리케이션 중 적어도 하나인 것을 특징으로 하는 시큐어 부팅 방법.
  13. 제11항에 있어서,
    상기 제2 프로그램의 제어에 따라 상기 컴퓨터로 입력되는 상기 제1 프로그램의 파일에 대한 실행 파일 포맷을 비실행 파일 포맷으로 변환하여 상기 프로그램의 코드를 변환하는 단계; 및
    상기 제2 프로그램의 제어에 따라 상기 비실행 파일 포맷으로 변환된 상기 제1 프로그램의 파일을 상기 컴퓨터의 스토리지에 저장하는 단계
    를 더 포함하는 것을 특징으로 하는 시큐어 부팅 방법.
  14. 제6항, 제7항 또는 제9항 내지 제13항 중 어느 한 항의 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR1020160034575A 2016-03-23 2016-03-23 시큐어 부팅 방법 및 시스템 KR101745821B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160034575A KR101745821B1 (ko) 2016-03-23 2016-03-23 시큐어 부팅 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160034575A KR101745821B1 (ko) 2016-03-23 2016-03-23 시큐어 부팅 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR101745821B1 true KR101745821B1 (ko) 2017-06-09

Family

ID=59220063

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160034575A KR101745821B1 (ko) 2016-03-23 2016-03-23 시큐어 부팅 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101745821B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11902434B2 (en) 2021-05-17 2024-02-13 Samsung Electronics Co., Ltd. Crum chip and smart card

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014170255A (ja) * 2011-06-29 2014-09-18 Panasonic Corp セキュアブート方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014170255A (ja) * 2011-06-29 2014-09-18 Panasonic Corp セキュアブート方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11902434B2 (en) 2021-05-17 2024-02-13 Samsung Electronics Co., Ltd. Crum chip and smart card

Similar Documents

Publication Publication Date Title
JP6815385B2 (ja) アプリケーションのコード難読化のためのシステムおよび方法
EP2962193B1 (en) Compiler based obfuscation
US8799662B2 (en) Method and apparatus for validating the integrity of installer files prior to installation
JP6936016B2 (ja) パッケージファイルに対する機能拡張方法およびシステム
JP2018527664A (ja) アプリケーションのコードを保護するためのシステムおよび方法
CN113934426A (zh) 软件包处理方法、装置、系统、设备及介质
US10379886B2 (en) Method and system for enhancing loading speed of intermediate language file
US10466997B2 (en) Apparatus and method for modifying application
KR101745821B1 (ko) 시큐어 부팅 방법 및 시스템
KR101823226B1 (ko) 코드 보호 방법 및 시스템
US20200074049A1 (en) Preventing software application tampering
JP6930862B2 (ja) クライアント改ざん判断システムおよび方法
CN113515747B (zh) 设备升级方法、装置、设备及存储介质
CN115422554A (zh) 请求处理方法、编译方法和可信计算系统
CN114691157A (zh) 基于云的fpga管理控制系统、方法及电子设备
EP3523745B1 (en) Electronic device, method for controlling thereof and computer-readable recording medium
JP7015120B2 (ja) アプリケーションパッケージを提供する方法およびシステム、アプリケーションを実行する方法およびシステム
US20200356662A1 (en) Information processing apparatus and information processing method, and computer program
KR102538096B1 (ko) 어플리케이션을 검증하는 디바이스 및 방법
KR101771348B1 (ko) 패키지 파일에 대한 패킹 방법 및 시스템
US9697018B2 (en) Synthesizing inputs to preserve functionality
US11632251B1 (en) Commit signing service
JP2019021310A (ja) 実行可能な圧縮ファイルを保護するためのファイル保護方法およびシステム
KR102190359B1 (ko) 무결성 검증 방법 및 장치
JP6818568B2 (ja) 通信装置、通信仕様差分抽出方法及び通信仕様差分抽出プログラム

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant