KR102310766B1 - 어플리케이션의 무결성 검사방법 - Google Patents

어플리케이션의 무결성 검사방법 Download PDF

Info

Publication number
KR102310766B1
KR102310766B1 KR1020190163884A KR20190163884A KR102310766B1 KR 102310766 B1 KR102310766 B1 KR 102310766B1 KR 1020190163884 A KR1020190163884 A KR 1020190163884A KR 20190163884 A KR20190163884 A KR 20190163884A KR 102310766 B1 KR102310766 B1 KR 102310766B1
Authority
KR
South Korea
Prior art keywords
application
code value
integrity
binary code
function
Prior art date
Application number
KR1020190163884A
Other languages
English (en)
Other versions
KR20210073255A (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 KR1020190163884A priority Critical patent/KR102310766B1/ko
Publication of KR20210073255A publication Critical patent/KR20210073255A/ko
Application granted granted Critical
Publication of KR102310766B1 publication Critical patent/KR102310766B1/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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

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

Abstract

본 발명은 어플리케이션의 함수 단위로 무결성을 검증함으로써 초기에 부팅 시간을 단축시킬 수 있을 뿐만 아니라, 개별 어플리케이션이 호출되는 시점에 실시간으로 함수 단위로 무결성을 검증함으로써 어플리케이션 실행중에 내외부의 환경요인으로 함수가 변경되었는지 여부를 실시간으로 탐지할 수 있는 어플리케이션의 무결성 검사방법에 관한 것이다.
이를 위하여, 본 발명은 전원 인가단계와, 단말기의 소프트웨어 초기화를 실행하는 소프트웨어 초기화 실행단계와, 부트-로더 실행단계와, 어플리케이션 실행단계를 포함하며, 상기 어플리케이션 실행단계는 상기 소프트웨어에 포함되는 복수의 어플리케이션 중 실행하고자 하는 하나의 어플리케이션을 선택하는 어플리케이션 선택단계와, 선택된 어플리케이션의 함수의 무결성을 검증하는 무결성 검증단계와, 무결성 검증이 완료된 어플리케이션의 함수를 실행하는 함수 실행단계를 포함하는 것을 특징으로 하는 어플리케이션의 무결성 검사방법을 제공한다.

Description

어플리케이션의 무결성 검사방법{Application Integrity Checking Method}
본 발명은 어플리케이션의 무결성 검사방법에 관한 것으로, 보다 상세하게는 어플리케이션의 함수 단위로 무결성을 검증함으로써 초기에 부팅 시간을 단축시킬 수 있을 뿐만 아니라, 개별 어플리케이션이 호출되는 시점에 실시간으로 함수 단위로 무결성을 검증함으로써 어플리케이션 실행중에 내외부의 환경요인으로 함수가 변경되었는지 여부를 실시간으로 탐지할 수 있는 어플리케이션의 무결성 검사방법에 관한 것이다.
최근, 데스크 탑, 디지털 TV와 같은 고정 단말기뿐만 아니라, 스마트폰, 태블릿 PC와 같은 모바일 단말기(이동 단말기)들은 활용의 확장성 및 휴대성 때문에 많은 사용자들에게 사용된다. 이러한 단말기들은 사용자의 선택에 따라 다양한 어플리케이션을 설치할 수 있다.
이러한 단말기들은 설치된 어플리케이션을 기반으로 데이터의 이동, 편집, 복사, 삭제 등과 같은 다양한 데이터 처리 동작을 수행할 수 있다. 그러나 상술된 단말기의 데이터 처리에 대한 자유도는 해커들에게 다양한 공격 기회를 제공할 수 있다.
일 예로, 안드로이드(Android)와 같은 오픈 소스를 기반으로 운용되는 모바일 단말기의 경우, 상술된 문제점이 더욱 심각하게 발생할 수 있다.
구체적으로, 종래의 모바일 플랫폼은 어플리케이션 각각의 신뢰성 여부를 구분할 수 없으며, 모든 어플리케이션을 동일한 대상으로 취급한다. 특히, 안드로이드와 같은 오픈 소스 기반의 운영 체제는 구조적으로 플랫폼의 임의 변경이 가능하다. 이로 인하여, 사용자 단말기에 포함된 보안 장치 및 보안 수단들이 임의로 변경될 수 있다.
일 예로서, 안드로이드를 기반으로 하는 사용자 단말기에서, 모든 어플리케이션들은 달빅 가상 머신(Dalvik Virtual Machine)에 의해 실행된다. 그러나 종래의 무결성 검증 프로그램은 가상 머신을 하나의 실행 파일로써 간주하고, 가상 머신에 의해 시스템 내부적으로 수행되는 시스템 자원의 상태에 대한 검증을 수행하지 않는다.
또한, 중요 시스템 컴포넌트의 일부가 훼손된 모바일 단말기는 거래정보 유출에 따른 금융사고 및 개인정보 불법 취득에 따른 사회적 위협의 주된 도구로 활용될 수 있다. 따라서 사용자 또는 사업자 입장에서는 모바일 단말에 대해 신뢰적으로 검증할 수단이 필요하다.
따라서, 상술한 문제점을 해결하기 위하여, 부팅시 무결성 검증을 수행하였다.
그러나 종래에는 초기 부팅시점에 모든 어플리케이션에 대한 전체 바이너리의 무결성을 검증한 후 어플리케이션을 실행하며, 이는 바이너리의 크기가 커질수록, 검증 시간이 길어지는 문제를 야기한다.
뿐만 아니라, 초기 부팅시점에 바이너리를 한 번만 검사하는 방식으로 수행됨에 따라 어플리케이션 실행중에 내외부의 환경요인으로 함수가 변경되었는지 여부를 실시간으로 탐지할 수 없는 문제점이 있다.
대한민국 공개특허공보 제10-2016-0112757호(발명의 명칭: 사용자 장치 및 그것에 대한 무결성 검증 방법, 공개일: 2016. 09. 28)
본 발명에서 해결하고자 하는 과제는 어플리케이션의 함수 단위로 무결성을 검증함으로써 초기에 부팅 시간을 단축시킬 수 있을 뿐만 아니라, 개별 어플리케이션이 호출되는 시점에 실시간으로 함수 단위로 무결성을 검증함으로써 어플리케이션 실행중에 내외부의 환경요인으로 함수가 변경되었는지 여부를 실시간으로 탐지할 수 있는 어플리케이션의 무결성 검사방법을 제공하는 것이다.
상술한 과제를 해결하기 위하여, 본 발명은 전원 인가단계와, 단말기의 소프트웨어 초기화를 실행하는 소프트웨어 초기화 실행단계와, 부트-로더 실행단계와, 어플리케이션 실행단계를 포함하며, 상기 어플리케이션 실행단계는 상기 소프트웨어에 포함되는 복수의 어플리케이션 중 실행하고자 하는 하나의 어플리케이션을 선택하는 어플리케이션 선택단계와, 선택된 어플리케이션의 함수의 무결성을 검증하는 무결성 검증단계와, 무결성 검증이 완료된 어플리케이션의 함수를 실행하는 함수 실행단계를 포함하는 것을 특징으로 하는 어플리케이션의 무결성 검사방법을 제공한다.
여기서, 상기 무결성 검증단계는 선택된 어플리케이션의 함수의 무결성을 검증하기 위한 바이너리 코드값의 저장 유무를 확인하는 코드값 저장유무 확인단계를 포함할 수 있다.
또한, 상기 무결성 검증단계는 상기 코드값 저장유무 확인단계의 수행 이후, 상기 바이너리 코드값이 저장되어 있지 않은 경우, 상기 함수의 시작 주소 및 코드 사이즈를 포함하는 함수 정보를 구하는 제1 함수 정보 획득단계와, 상기 함수 정보를 이용하여 바이너리 코드값을 계산하는 제1 코드값 계산단계와, 상기 코드값 계산단계에서 계산된 상기 바이너리 코드값을 저장하는 코드값 저장단계를 더 포함할 수 있다.
또한, 상기 무결성 검증단계는 상기 코드값 유무단계의 수행 이후, 상기 바이너리 코드값이 저장되어 있는 경우, 상기 함수의 시작 주소 및 코드 사이즈를 포함하는 함수 정보를 구하는 제2 함수 정보 획득단계와, 상기 함수 정보를 이용하여 바이너리 코드값을 계산하는 제2 코드값 계산단계와, 저장된 상기 바이너리 코드값과 상기 제2 코드값 계산단계에서 계산된 바이너리 코드값을 비교하는 코드값 비교단계를 더 포함할 수 있다.
또한, 상기 코드값 비교단계에서, 저장된 상기 바이너리 코드값과 상기 제2 코드값 계산단계에서 계산된 바이너리 코드값이 동일한 경우 어플리케이션을 실행하고, 동일하지 않은 경우 어플리케이션을 실행하지 않을 수 있다.
본 발명에 따른 어플리케이션의 무결성 검사방법은 다음과 같은 효과를 가진다.
첫째, 어플리케이션의 함수 단위로 무결성을 검증함으로써 초기에 부팅 시간을 단축시킬 수 있는 이점이 있다.
둘째, 개별 어플리케이션이 호출되는 시점에 실시간으로 함수 단위로 무결성을 검증함으로써 어플리케이션 실행중에 내외부의 환경요인으로 함수가 변경되었는지 여부를 실시간으로 탐지할 수 있는 이점이 있다.
도 1은 본 발명에 따른 어플리케이션의 무결성 검사방법의 단계를 도시한 도면이다.
도 2는 본 발명에 따른 어플리케이션의 무결성 검사방법의 무결성 검사단계의 상세 흐름도를 도시한 도면이다.
이하, 상술한 해결하고자 하는 과제가 구체적으로 실현될 수 있는 본 발명의 바람직한 실시예들이 첨부된 도면을 참조하여 설명된다. 본 실시예들을 설명함에 있어서, 동일 구성에 대해서는 동일 명칭 및 동일 부호가 사용되며, 이에 따른 부가적인 설명은 하기에서 생략된다.
본 명세서에서 설명되는 단말기에는 휴대폰, 스마트 폰(smart phone), 노트북 컴퓨터(laptop computer), 디지털방송용 단말기, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 네비게이션, 디지털 TV, 데스크탑 컴퓨터 등이 포함된 이동 단말기 또는 고정 단말기가 될 수 있다.
한편, 본 명세서에서 사용되는 용어인 "무결성(integrity)"은 데이터 또는 어플리케이션의 정확성과 일관성을 유지하고, 데이터 또는 어플리케이션에 결손과 부정합이 없음을 보증하는 것을 의미한다.
도 1 및 도 2를 참조하여, 본 발명에 따른 어플리케이션의 무결성 검사방법을 설명하면 다음과 같다.
먼저, 도 1을 참조하여 본 발명에 따른 어플리케이션의 무결성 검사방법의 전체 단계를 설명하면 다음과 같다.
도 1에 도시된 바와 같이, 본 발명에 따른 어플리케이션의 무결성 검사방법은 전원 인가단계(S100), 소프트웨어 초기화 실행단계(S200), 부트-로더 실행단계(S300) 및 어플리케이션 실행단계(S400)를 포함한다.
상기 전원 인가단계(S100)에서는 단말기에 전원이 인가되어 단말기가 구동할 수 있는 상태로 만든다.
상기 소프트웨어 초기화 실행단계(S200)에서는 상기 단말기의 소프트웨어 초기화를 실행한다.
이후, 상기 부트-로드 실행단계에서는 부트-로더를 실행하고, 예시적으로, 부트-로더는 운영 체제가 구동되기 이전에 미리 실행되어 커널이 정상적으로 구동되기 위해 요구되는 작업을 수행하는 프로그램을 가리킨다.
상기 어플리케이션 실행단계(S400)에서는 단말기에 포함된 어플리케이션을 실행하며, 구체적으로 상기 어플리케이션 실행단계(S400)는 어플리케이션 선택단계(S410), 무결성 검증단계(S420) 및 함수 실행단계(S430)를 포함한다.
상기 어플리케이션 선택단계(S410)에서는 상기 소프트웨어에 설치된 복수의 어플리케이션 중 실행하고자 하는 하나의 어플리케이션을 선택한다.
이후, 상기 무결성 검증단계(S420)에서는 선택된 어플리케이션의 함수의 무결성을 검증하며, 상기 무결성 검증단계(S420)에 대한 상세 설명은 후술하도록 한다.
마지막으로, 상기 함수 실행단계(S430)에서는 선택된 어플리케이션의 무결성 검증이 완료되면, 함수를 실행한다.
여기서, 상기 무결성 검증단계(S420)는 코드값 저장유무 확인단계(S421)를 포함하며, 상기 무결성 검증단계(S420)가 수행되는 단계를 도 2를 참조하여 설명하면 다음과 같다.
상술한 바와 같이, 상기 코드값 저장유무 확인단계(S421)에서는 선택된 어플리케이션의 함수의 무결성을 검증하기 위한 바이너리 코드값의 저장 유무를 확인한다.
이때, 상기 코드값 저장 유무 여부에 따라, 진행되는 단계는 상이하다.
먼저, 상기 코드값 저장유무 확인단계(S421)의 수행 이후, 상기 바이너리 코드값이 저장되어 있지 않은 경우를 설명하면 다음과 같다.
상기 바이너리 코드값이 저장되어 있지 않은 경우의 상기 무결성 검증단계(S420)는 제1 함수 정보 획득단계(S422a), 제1 코드값 계산단계(S423a) 및 코드값 저장단계(S424a)를 더 포함한다.
상기 제1 함수 정보 획득단계(S422a)에서는 상기 함수의 시작 주소 및 코드 사이즈를 포함하는 함수 정보를 구한다. 즉, 상기 어플리케이션이 실행하기 전에 컴파일 이후에 생성되는 함수와 디버깅 파일의 함수데이터를 이용하여 함수의 시작 주소 및 코드 사이즈를 포함하는 함수 정보를 구한다.
이후, 상기 제1 코드값 계산단계(S423a)에서는 상기 함수 정보를 기반으로 무결성에 필요한 선택된 어플리케이션의 바이너리 코드값을 계산한다.
상기 코드값 저장단계(S424a)에서는 상기 제1 코드값 계산단계(S423a)에서 계산된 상기 바이너리 코드값을 저장한다.
다음으로, 상기 코드값 저장유무 확인단계(S421)의 수행 이후, 상기 바이너리 코드값이 저장되어 있는 경우를 설명하면 다음과 같다.
상기 바이너리 코드값이 저장되어 있는 경우의 상기 무결성 검증단계(S420)는 제2 함수 정보 획득단계(S422b), 제2 코드값 계산단계(S423b), 저장 코드값 로딩단계(S424b) 및 코드값 비교단계(S425b)를 더 포함한다.
상기 제2 함수 정보 획득단계(S422b)와, 상기 제2 코드값 계산단계(S423b)는 각각 상술한 상기 제1 함수 정보 획득단계(S422a)와 상기 제1 코드값 계산단계(S423a)와 대응되므로, 이에 대한 설명은 생략한다.
상기 저장 코드값 로딩단계(S424b)에서는 저장된 코드값을 로딩하며, 여기서, 저장된 코드값은 상기 코드값 저장단계(S424a)에서 저장된 코드값일 수 있다.
상기 코드값 비교단계(S425b)에서는 상기 저장 코드값 로딩단계(S424b)에서 로딩된 저장된 상기 바이너리 코드값과 상기 제2 코드값 계산단계(S423b)에서 계산된 바이너리 코드값을 비교한다.
이때, 상기 코드값 비교단계(S425b)에서, 저장된 상기 바이너리 코드값과 상기 제2 코드값 계산단계(S423b)에서 계산된 바이너리 코드값이 동일한 경우 어플리케이션을 실행하고, 동일하지 않은 경우 어플리케이션을 실행하지 않는다.
상술한 과정을 수행함으로써 어플리케이션의 함수 단위로 무결성을 검증함으로써 초기에 부팅 시간을 단축시킬 수 있을 뿐만 아니라, 개별 어플리케이션이 호출되는 시점에 실시간으로 함수 단위로 무결성을 검증함으로써 어플리케이션 실행중에 내외부의 환경요인으로 함수가 변경되었는지 여부를 실시간으로 탐지할 수 있게 된다.
이상 설명한 바와 같이, 본 발명은 상술한 특정한 바람직한 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형의 실시가 가능하고 이러한 변형은 본 발명의 범위에 속한다.

Claims (5)

  1. 전원 인가단계;
    단말기의 소프트웨어 초기화를 실행하는 소프트웨어 초기화 실행단계;
    부트-로더 실행단계;
    상기 소프트웨어에 포함되는 복수의 어플리케이션 중 하나의 어플리케이션이 호출되는 단계;
    상기 호출된 어플리케이션의 함수의 무결성을 검증하기 위한 바이너리 코드값의 저장 유무를 확인하는 코드값 저장유무 확인단계;
    상기 바이너리 코드값이 저장되어 있지 않은 경우, 상기 함수의 시작 주소 및 코드 사이즈를 포함하는 제1 함수 정보를 구하고, 상기 제1 함수 정보를 이용하여 제1 바이너리 코드값을 계산하고, 상기 계산된 제1 바이너리 코드값을 저장하는 단계;
    상기 바이너리 코드값이 저장되어 있는 경우, 함수의 시작 주소 및 코드 사이즈를 포함하는 제2 함수 정보를 구하고, 상기 제2 함수 정보를 이용하여 제2 바이너리 코드값을 계산하는 단계;
    상기 저장된 제1 바이너리 코드값과 상기 제2 바이너리 코드값을 비교하여 상기 호출된 어플리케이션의 무결성을 검증하는 무결성 검증단계; 및
    상기 저장된 제1 바이너리 코드값과 상기 제2 바이너리 코드값이 동일하면 상기 어플리케이션을 실행하는 단계;를 포함하는 어플리케이션의 무결성 검사방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 제1 바이너리 코드값과 상기 제2 바이너리 코드값이 동일하지 않은 경우 어플리케이션을 실행하지 않는 단계;를 포함하는 어플리케이션의 무결성 검사방법.
KR1020190163884A 2019-12-10 2019-12-10 어플리케이션의 무결성 검사방법 KR102310766B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190163884A KR102310766B1 (ko) 2019-12-10 2019-12-10 어플리케이션의 무결성 검사방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190163884A KR102310766B1 (ko) 2019-12-10 2019-12-10 어플리케이션의 무결성 검사방법

Publications (2)

Publication Number Publication Date
KR20210073255A KR20210073255A (ko) 2021-06-18
KR102310766B1 true KR102310766B1 (ko) 2021-10-12

Family

ID=76623478

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190163884A KR102310766B1 (ko) 2019-12-10 2019-12-10 어플리케이션의 무결성 검사방법

Country Status (1)

Country Link
KR (1) KR102310766B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101434860B1 (ko) * 2013-08-16 2014-09-02 (주)잉카엔트웍스 해시를 이용한 동적코드의 무결성 검증 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102324336B1 (ko) 2015-03-20 2021-11-11 한국전자통신연구원 사용자 장치 및 그것에 대한 무결성 검증 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101434860B1 (ko) * 2013-08-16 2014-09-02 (주)잉카엔트웍스 해시를 이용한 동적코드의 무결성 검증 방법

Also Published As

Publication number Publication date
KR20210073255A (ko) 2021-06-18

Similar Documents

Publication Publication Date Title
US10019256B2 (en) Systems and methods for incremental software development
US9910743B2 (en) Method, system and device for validating repair files and repairing corrupt software
CN107992307B (zh) 一种函数编译方法及装置
CN107451474B (zh) 用于终端的软件漏洞修复方法和装置
WO2016078130A1 (zh) 一种防逆向apk文件的动态加载方法
US20170242664A1 (en) Method, apparatus, system, and non-transitory computer readable medium for extending at least one function of a package file
US20180129812A1 (en) Apparatus for quantifying security of open-source software package, and apparatus and method for optimizing open-source software package
US11238151B2 (en) Method and apparatus for patching binary having vulnerability
CN109388946B (zh) 恶意进程检测方法、装置、电子设备及存储介质
CN109271789B (zh) 恶意进程检测方法、装置、电子设备及存储介质
WO2016119548A1 (zh) 防软件反编译的方法、防反编译软件启动的方法和装置
CN106648749B (zh) 一种可执行程序动态调用方法及系统
US20170075789A1 (en) Method and apparatus for generating, capturing, storing, and loading debug information for failed tests scripts
US8984487B2 (en) Resource tracker
US8707050B1 (en) Integrity self-check of secure code within a VM environment using native VM code
Peng et al. {GLeeFuzz}: Fuzzing {WebGL} Through Error Message Guided Mutation
US20150347745A1 (en) Method for extracting executable code of application using memory dump
US20160239364A1 (en) Method of verifying integrity of program using hash
CN110597496B (zh) 应用程序的字节码文件获取方法及装置
KR102310766B1 (ko) 어플리케이션의 무결성 검사방법
CN107209815B (zh) 用于使用返回导向编程的代码混淆的方法
US9075679B1 (en) Creating a prerequisite checklist corresponding to a software application
CN111949301B (zh) 应用程序热更新方法、装置和计算机可读存储介质
CN114253599A (zh) 版本部署方法、版本部署装置、电子设备和存储介质
CN111859403A (zh) 依赖关系漏洞的确定方法、装置、电子设备及存储介质

Legal Events

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