KR102101614B1 - 보안 기능을 수행하는 애플리케이션의 작동 방법과 상응하는 애플리케이션 - Google Patents

보안 기능을 수행하는 애플리케이션의 작동 방법과 상응하는 애플리케이션 Download PDF

Info

Publication number
KR102101614B1
KR102101614B1 KR1020190007975A KR20190007975A KR102101614B1 KR 102101614 B1 KR102101614 B1 KR 102101614B1 KR 1020190007975 A KR1020190007975 A KR 1020190007975A KR 20190007975 A KR20190007975 A KR 20190007975A KR 102101614 B1 KR102101614 B1 KR 102101614B1
Authority
KR
South Korea
Prior art keywords
application
terminal
value
app
forged
Prior art date
Application number
KR1020190007975A
Other languages
English (en)
Other versions
KR20190009825A (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 KR1020190007975A priority Critical patent/KR102101614B1/ko
Publication of KR20190009825A publication Critical patent/KR20190009825A/ko
Application granted granted Critical
Publication of KR102101614B1 publication Critical patent/KR102101614B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Telephone Function (AREA)
  • Stored Programmes (AREA)

Abstract

애플리케이션의 작동 방법에 개시된다. 상기 방법은 제1단말기에서 실행되는 제1애플리케이션의 보안 모듈이 상기 보안 모듈의 위변조 여부를 판단하고, 상기 보안 모듈이 위변조되지 않았을 때 상기 제1애플리케이션의 메인 모듈의 위변조 여부를 판단하여 상기 제1애플리케이션의 위변조 여부를 판단하는 단계와, 판단의 결과 상기 제1애플리케이션이 위변조되지 않았을 때, 상기 보안 모듈의 위변조 여부를 판단하는 상기 제1애플리케이션의 상기 보안 모듈이 상기 제1단말기에서 실행되는 제1OS의 위변조 여부를 판단하는 단계를 포함한다.

Description

보안 기능을 수행하는 애플리케이션의 작동 방법과 상응하는 애플리케이션 {METHOD FOR OPERATING APPLICATION PERFORMING SECURITY FUNCTION AND CORRESPONDING APPLICATION}
본 발명의 개념에 따른 실시 예는 애플리케이션(application)의 작동 방법에 관한 것으로, 특히 단말기에서 실행되는 운영 체제(operating system(OS))의 위변조 여부와, 상기 단말기에서 실행되는 애플리케이션의 위변조 여부를 판단하는 애플리케이션의 작동 방법과 이에 상응하는 애플리케이션에 관한 것이다.
최근 이동 통신 단말기가 널리 보급되면서, 상기 이동 통신 단말기에서 구동되는 응용 프로그램, 즉 애플리케이션이 널리 사용되고 있다. 이러한 애플리케이션은 개방형 플랫폼과 다양한 네트워크 접속 환경에서 동작하므로 상대적으로 위변조에 취약하다.
애플리케이션의 활용이 증가하면서 애플리케이션을 불법으로 위조하거나 변조하여 사용하는 행위도 증가하고 있다. 상기 애플리케이션이 불법으로 위변조되었을 때, 휴대용 기기 사용자의 개인 정보가 무방비로 노출될 수 있다.
또한, 애플리케이션을 불법으로 사용하기 위해, 스마트폰이나 태블릿 PC 등을 루팅 (rooting)하거나 탈옥 (jailbreak)하는 등 다양한 해킹 기술이 등장하고 있다.
등록특허공보 제10-1297936호 (2013. 08. 19.)
본 발명이 해결하고자 하는 과제는 단말기에서 실행되는 애플리케이션을 이용하여 상기 단말기에서 실행되는 OS의 위변조 여부, 상기 애플리케이션의 위변조 여부 및 상기 단말기와 통신하는 다른 단말기에 설치된 애플리케이션의 위변조 여부를 판단하는 방법과 이에 상응하는 애플리케이션을 제공하는 것에 있다.
본 발명의 실시 예에 따른 애플리케이션의 작동 방법은 제1단말기에서 실행되는 제1애플리케이션의 보안 모듈이 상기 보안 모듈 자신의 위변조 여부를 스스로 판단하고, 상기 보안 모듈이 위변조되지 않았을 때 상기 제1애플리케이션의 메인 모듈의 위변조 여부를 판단하여 상기 제1애플리케이션의 위변조 여부를 판단하는 단계와, 판단의 결과 상기 제1애플리케이션이 위변조되지 않았을 때, 상기 보안 모듈 자신의 위변조 여부를 스스로 판단하는 상기 제1애플리케이션의 상기 보안 모듈이 상기 제1단말기에서 실행되는 제1OS의 위변조 여부를 판단하는 단계를 포함한다.
본 발명의 실시 예에 따른 애플리케이션의 작동 방법은 제1단말기에서 실행되는 제1애플리케이션이 상기 제1애플리케이션의 현재 상태를 지시하는 현재 제1APP 값을 생성하는 단계와, 상기 제1애플리케이션이 상기 기준 제1APP 값을 서버로부터 수신하는 단계와, 상기 제1애플리케이션이 상기 현재 제1APP 값과 수신한 상기 기준 제1APP 값을 비교하는 단계와, 상기 비교의 결과에 따라, 상기 현재 제1APP 값과 상기 기준 제1APP 값이 동일할 때, 상기 제1애플리케이션이 상기 제1애플리케이션을 위변조되지 않은 것으로 판단하는 단계와, 판단의 결과, 상기 제1애플리케이션이 위변조되지 않았을 때, 상기 제1애플리케이션이 상기 제1OS의 현재 상태를 지시하는 현재 OS 값을 생성하는 단계와, 상기 제1애플리케이션이 상기 기준 OS 값을 상기 서버로부터 수신하는 단계 및 상기 제1애플리케이션이 상기 현재 OS 값과 수신한 상기 기준 OS 값을 비교하는 단계를 포함한다.
본 발명의 실시 예에 따른 애플리케이션의 작동 방법은 제1단말기에서 실행되는 제1애플리케이션의 보안 모듈이 상기 보안 모듈 자신의 위변조 여부를 스스로 판단하고, 상기 보안 모듈이 위변조되지 않았을 때 상기 제1애플리케이션의 메인 모듈의 위변조 여부를 판단하여 상기 제1애플리케이션의 위변조 여부를 판단하는 단계와, 상기 보안 모듈이 위변조되지 않고 상기 메인 모듈이 위변조되지 않음에 따라 상기 제1애플리케이션이 위변조되지 않았을 때, 상기 제1애플리케이션의 상기 보안 모듈이 상기 제1단말기에서 실행되는 제1OS의 위변조 여부를 판단하는 단계와, 상기 보안 모듈이 위변조되지 않고 상기 메인 모듈이 위변조되지 않고 상기 제1OS가 위변조되지 않았을 때, 상기 제1애플리케이션의 상기 보안 모듈이, 상기 제1단말기와 통신하는 제2단말기에서 실행되는 제2애플리케이션의 위변조 여부를 판단하여, 상기 제2단말기를 검증하는 단계를 포함한다.
본 발명의 실시 예에 따른 애플리케이션의 작동 방법은 제1단말기에서 실행되는 제1애플리케이션이 상기 제1애플리케이션의 현재 상태를 지시하는 현재 제1APP 값을 생성하는 단계와, 상기 제1애플리케이션이 상기 기준 제1APP 값을 서버로부터 수신하는 단계와, 상기 제1애플리케이션이 상기 현재 제1APP 값과 수신한 상기 기준 제1APP 값을 비교하는 단계와, 상기 비교의 결과에 따라, 상기 현재 제1APP 값과 상기 기준 제1APP 값이 동일할 때, 상기 제1애플리케이션이 상기 제1애플리케이션을 위변조되지 않은 것으로 판단하는 단계와, 상기 제1애플리케이션의 위변조 여부 판단의 결과 상기 제1애플리케이션이 위변조되지 않았을 때, 상기 제1애플리케이션이 상기 제1OS의 현재 상태를 지시하는 현재 OS 값을 생성하는 단계와, 상기 제1애플리케이션이 상기 기준 OS 값을 상기 서버로부터 수신하는 단계와, 상기 제1애플리케이션이 상기 현재 OS 값과 수신한 상기 기준 OS 값을 비교하는 단계 및 상기 제1OS의 위변조 여부 판단의 결과 상기 제1OS가 위변조 되지 않았을 때, 상기 제1애플리케이션이, 상기 제1단말기와 통신하는 제2단말기에서 실행되는 제2애플리케이션의 위변조 여부를 판단하여, 상기 제2단말기를 검증하는 단계를 포함한다.
본 발명의 실시 예에 따른 애플리케이션의 작동 방법은 제1단말기에서 실행되는 제1애플리케이션의 보안 모듈이 상기 보안 모듈의 위변조 여부를 판단하고, 상기 보안 모듈이 위변조되지 않았을 때 상기 제1애플리케이션의 메인 모듈의 위변조 여부를 판단하여 상기 제1애플리케이션의 위변조 여부를 판단하는 단계와, 상기 제1애플리케이션의 위변조 여부 판단의 결과, 상기 제1애플리케이션이 위변조되지 않았을 때, 상기 제1애플리케이션의 상기 보안 모듈이 상기 제1단말기에서 실행되는 제1OS의 위변조 여부를 판단하는 단계와, 상기 제1OS의 위변조 여부 판단의 결과, 상기 제1OS가 위변조 되지 않았을 때, 상기 제1애플리케이션의 상기 보안 모듈이, 상기 제1단말기와 통신하는 제2단말기에서 실행되는 제2애플리케이션의 위변조 여부를 판단하여, 상기 제2단말기를 검증하는 단계와, 상기 제2단말기의 검증 결과 상기 제2단말기가 검증되었을 때, 상기 제1애플리케이션이, 상기 제2단말기와 통신하기 위해 메시지 키를 상기 제2단말기와 공유하는 단계와, 상기 제1애플리케이션이 제1평문을 생성하고, 상기 공유된 메시지 키를 이용하여 상기 제1평문을 암호화하여 제1암호문을 생성하고, 생성된 상기 제1암호문을 상기 제2단말기로 전송하는 단계와, 상기 제2단말기가 제2평문을 생성하고 상기 공유된 메시지 키로 제2평문을 암호화하여 제2암호문을 생성하면, 상기 제1애플리케이션이 상기 제2단말기로부터 상기 제2암호문을 수신하는 단계 및 상기 제1애플리케이션이 상기 공유된 메시지 키를 이용하여 상기 제2암호문을 복호화하여 상기 제2평문을 복원하는 단계를 포함한다.
본 발명의 개념에 따른 실시 예에 따른 애플리케이션의 작동 방법은 컴퓨터로 판독가능한 기록 매체에 저장된 프로그램으로 구현될 수 있다.
본 발명의 개념에 따른 실시 예에 따른 애플리케이션의 작동 방법은 컴퓨터로 판독가능한 기록 매체에 저장될 수 있다.
본 발명의 개념에 따른 실시 예에 따른 컴퓨터 시스템은 프로세서 및 상기 프로세서와 연동된 메모리를 포함하고, 상기 메모리는 본 발명의 개념에 따른 실시 예에 따른 애플리케이션의 작동 방법을 수행하기 위한 프로그램을 저장한다.
본 발명의 개념에 따른 실시 예에 따른 애플리케이션은, 상기 애플리케이션이 설치된 단말기의 운영 체제의 위변조 여부를 판단할 수 있을 뿐 아니라, 상기 애플리케이션 자체의 위변조 여부를 스스로 판단할 수 있다.
본 발명의 개념에 따른 실시 예에 따른 애플리케이션은, 상기 애플리케이션이 설치된 단말기와 통신하는 단말기를 검증할 수 있다.
본 발명의 개념에 따른 실시 예에 따른 애플리케이션은 서버에 저장되어 있는 운영 체제 또는 애플리케이션을 구성하는 파일(또는 코드)에 대한 정보를 이용하여 단말기의 운영 체제의 위변조 여부와 상기 애플리케이션 자체의 위변조 여부를 판단할 수 있다.
본 발명의 개념에 따른 실시 예에 따른 애플리케이션은, 단말기에 저장된 운영 체제 또는 애플리케이션을 구성하는 파일(또는 코드)에 대한 정보를 이용하므로 서버와 통신을 하지 않고서도 상기 애플리케이션이 설치된 단말기의 운영 체제의 위변조 여부와 상기 애플리케이션 자체의 위변조 여부를 판단할 수 있다.
본 발명의 개념에 따른 실시 예에 따른 애플리케이션이 설치된 단말기는 다른 단말기와 통신하기 전에 상기 다른 단말기를 검증하여 상기 다른 단말기와 안전하게 통신을 수행할 수 있을 뿐만 아니라, 상기 통신을 수행하는 동안 수신한 데이터들을 암호화하여 상기 단말기 또는 상기 애플리케이션에 저장할 수 있다.
도 1은 본 발명의 실시 예들에 따른 복수의 단말기들을 포함하는 네트워크를 개념적으로 나타낸다.
도 2는 본 발명의 개념에 따른 애플리케이션을 포함하는 단말기의 개략적인 구성을 나타낸다.
도 3은 본 발명의 개념에 따른 실시 예에 따라 애플리케이션이 OS의 위변조 여부와 상기 애플리케이션의 위변조 여부를 판단하는 방법을 설명하기 위한 플로우 차트를 나타낸다.
도 4는 본 발명의 개념에 따른 실시 예에 따라 애플리케이션이 상기 애플리케이션의 위변조 여부를 판단하는 방법을 상세히 설명하기 위한 플로우 차트를 나타낸다.
도 5는 본 발명의 개념에 따른 실시 예에 따라 애플리케이션이 상기 애플리케이션의 위변조 여부를 판단하는 방법을 상세히 설명하기 위한 플로우 차트를 나타낸다.
도 6은 본 발명의 개념에 따른 실시 예에 따라 애플리케이션이 상기 애플리케이션이 설치된 단말기와 통신하는 다른 단말기를 이용하여 상기 애플리케이션의 위변조 여부를 판단하는 방법을 상세히 설명하기 위한 플로우 차트를 나타낸다.
도 7과 도 8은 본 발명의 개념에 따른 실시 예에 따른 애플리케이션이 OS의 위변조 여부를 판단하는 방법을 상세히 설명하기 위한 플로우 차트를 나타낸다.
도 9는 본 발명의 개념에 따른 실시 예에 따라 제1애플리케이션이 제2단말기를 검증하고, 검증된 제2단말기와 통신하는 방법을 설명하기 위한 플로우 차트를 나타낸다.
도 10은 본 발명의 개념에 따른 실시 예에 따라 제1애플리케이션이 제2단말기를 검증하는 방법을 상세히 설명하기 위한 플로우 차트를 나타낸다.
도 11은 본 발명의 개념에 따른 실시 예에 따라, 제1애플리케이션이 제2단말기와 통신하는 방법을 설명하기 위한 데이터 처리도이다.
도 12는 본 발명의 개념에 따른 실시 예에 따라, 제1애플리케이션이 제2단말기와 통신하는 방법을 설명하기 위한 데이터 처리도이다.
도 13은 본 발명의 실시 예에 따른 애플리케이션이 상기 애플리케이션이 설치된 단말기와 통신하는 다른 단말기의 통신 패턴을 분석하는 방법을 설명하기 위한 플로우차트이다.
본 발명의 개념에 따른 애플리케이션(애플리케이션 소프트웨어의 준말, 또는 운영 체제를 제외한 소프트웨어 또는 프로그램)의 동작 방법은 컴퓨터로 읽을 수 있는 프로그램 코드(code)로 작성되어 컴퓨터가 읽을 수 있는 기록 매체에 저장될 수 있다. 상기 기록 매체는 앱 스토어(app store®)의 데이터베이스 또는 메모리(예컨대, 불휘발성 메모리 장치, USB 드라이브, 또는 메모리 카드 등)와 같은 저장 매체를 의미할 수 있다.
본 명세서에서, 운영체제 또는 애플리케이션의 위변조는, 상기 운영체제 또는 상기 애플리케이션의 프로그램 코드를 임의로 조작하는 등의 행위로 상기 운영체제 또는 상기 애플리케이션을 임의로 위조, 변조, 및/또는 변경하는 모든 행위를 의미한다. 실시 예에 따라, 운영체제의 위변조는 안드로이드 OS의 루팅 또는 iOS (애플사의 모바일 운영 체제)의 탈옥을 의미할 수 있고, 애플리케이션의 위변조는 애플리케이션의 소스 코드를 위조, 변조, 및/또는 변경하는 것을 의미할 수 있으나 이에 한정되는 것은 아니다.
본 명세서에서, 애플리케이션(또는 스마트 폰 애플리케이션, 앱, 모바일 애플리케이션, 또는 웹 애플리케이션)이 어떤 기능(또는 작동)을 수행한다고 함은, 상기 애플리케이션이 상기 기능(또는 작동)을 수행하는 것을 의미할 수도 있고 또는 상기 애플리케이션이 설치된(또는 실행되는) 장치(예컨대, 단말기 또는 전자 장치)가 상기 애플리케이션을 이용하여 상기 기능(또는 작동)을 수행하는 것을 의미할 수 있다. 즉, 상기 애플리케이션이 수행하는 상기 기능은, 상기 애플리케이션이 설치된(또는 실행되는) 장치가 수행하는 기능으로 이해될 수 있다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예들에 따른 복수의 단말기들을 포함하는 네트워크를 개념적으로 나타낸다. 도 1에 도시된 네트워크(또는 네트워크 시스템; 10-1)은 복수의 단말기들(100-1, 100-2, …, 100-n (n은 2 이상의 자연수))를 포함할 수 있다. 도 1을 참조하면, 각 단말기(100-1, 100-2, …, 100-n)는 소프트웨어 프로그램을 저장, 실행, 제어 또는 변경 등을 할 수 있는 전자 장치를 의미할 수 있다. 실시 예에 따라, 각 단말기(100-1, 100-2, …, 100-n)는 본 명세서에서 설명될 애플리케이션을 실행하고, 모바일 환경에서 작동할 수 있는 전자 장치를 의미할 수 있다.
각 단말기(100-1, 100-2, …, 100-n)는 각 애플리케이션(110-1, 110-2, …, 110-n)과 각 OS(120-1, 120-2, …, 120-n)을 포함(또는 실행)할 수 있다. 실시 예에 따라 각 애플리케이션(110-1, 110-2, …, 110-n)은 서로 동일한 애플리케이션 (또는 서로 동일한 기능을 수행하는 애플리케이션)일 수 있으나 이에 한정되는 것은 아니다. 예컨대, 각 단말기(100-1, 100-2, …, 100-n)는 각 애플리케이션(110-1, 110-2, …, 110-n)과 각 OS(120-1, 120-2, …, 120-n)을 저장하는 메모리 장치와, 이들을 실행하는 프로세서(또는 애플리케이션 프로세서), 및 다른 단말기와 통신을 위한 송수신기를 포함할 수 있다.
예컨대, 각 단말기(100-1, 100-2, …, 100-n)는 랩탑(laptop) 컴퓨터, 스마트폰, 태블릿 (tablet) PC, PDA(personal digital assistant), 디지털 카메라, 웨어러블 (wearable) 장치, IoT(internet of things) 장치, 또는 IoE(internet of everything) 장치로 구현될 수 있으나 이에 한정되는 것은 아니다.
각 단말기(100-1, 100-2, …, 100-n)는 서로 통신을 수행할 수 있다. 실시 예에 따라, 각 단말기(100-1, 100-2, …, 100-n)는 무선 통신망을 이용하여 서로 데이터 등을 주고받을 수 있다.
예컨대, 각 단말기(100-1, 100-2, …, 100-n)는 상기 무선 통신망을 이용하여 서로 채팅을 수행할 수 있고, 파일(file) 등을 공유할 수 있다. 상기 무선 통신망은 Wi-Fi(wireless fidelity)와 같은 무선 근거리 통신망(wireless local area network(WLAN)), 블루투스(bluetooth), 무선 USB(wireless universal serial bus), 지그비(Zigbee), NFC(near field communication), RFID(radio-frequency identification), 또는 3G 통신망, 4G 통신망, LTETM, LTE-A 와 같은 이동 통신망 (mobile cellular network)등으로 구현될 수 있으나, 이에 한정되는 것은 아니다.
실시 예에 따라, 각 단말기(100-1, 100-2, …, 100-n)는 서로 동일한 종류의 장치로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 도 1에 도시된 각 단말기(100-1, 100-2, …, 100-n)는 이하에서 설명될, 도 2의 단말기(100)를 의미할 수 있다.
서버(200)는 특정 시스템에서 각종 자원(예컨대, 파일, 통신 회선 등)을 제공하는 장치 또는 소프트웨어를 의미할 수 있다. 서버(200)는 서버(200)에 연결된 장치들로 상기 자원을 제공할 수 있고, 서버(200)에 연결된 장치들끼리는 서로 통신할 수 있다.
서버(200)는 각 애플리케이션(110-1, 110-2, …, 110-n)의 작동에 필요한 파일 (또는 코드)를 각 단말기(100-1, 100-2, …, 100-n)로 제공할 수 있다. 즉, 각 애플리케이션(110-1, 110-2, …, 110-n)은 각 애플리케이션(110-1, 110-2, …, 110-n)의 작동에 필요한 파일(또는 코드)를 서버(200)로부터 수신할 수 있다. 실시 예들에 따라, 도 1에 도시된 바와 같이 각 단말기(100-1, 100-2, …, 100-n)는 서로 직접 (예컨대, 서버(200)를 거치지 않고) 통신하거나 서버(200)를 이용하여 서로 통신할 수 있다.
본 명세서에서 제1애플리케이션이 신호 또는 데이터를 제2애플리케이션과 주고받는다 함은 상기 제1애플리케이션이 설치된 제1단말기가 상기 제2애플리케이션이 설치된 제2단말기와 신호 또는 데이터를 주고받는 것을 의미할 수 있다.
도 2는 본 발명의 개념에 따른 애플리케이션을 포함하는 단말기의 개략적인 구성을 나타낸다. 도 2를 참조하면, 단말기(100)는 도 1의 제1단말기(100-1)를 의미할 수 있다. 단말기(100-1~100-n; 집합적(collectively) 또는 총괄적으로 100)는 애플리케이션(110-1~110-n; 집합적으로 또는 총괄적으로 110)과 OS(120-1~120-n; 집합적으로 또는 총괄적으로 120)을 포함한다. 예컨대, 단말기(100)는 애플리케이션(110)과 OS(120)를 저장하는 적어도 하나의 메모리 장치와, 애플리케이션(110)과 OS(120) 중에서 적어도 하나를 실행하는 프로세서를 포함할 수 있다.
애플리케이션(110)은 보안 모듈(112)과 메인 모듈(114)을 포함할 수 있다. 실시 예에 따라, 애플리케이션(110)은 라이브러리(library) 형태로 구현된 보안 모듈(112)과 메인 모듈(114)를 포함하는 패키지(package) 애플리케이션일 수 있다. 예컨대, 본 명세서에서 설명되는 보안 모듈(112)과 메인 모듈(114)이 수행하는 기능들은 애플리케이션(110)이 수행하는 기능들로 이해될 수 있다
애플리케이션(110)은 보안 모듈(112)을 이용하여 애플리케이션(110)의 (또는 애플리케이션(110)이 사용하는) 파일(또는 코드)를 위변조로부터 보호할 수 있다.
본 명세서에서 모듈(module)은 특정한 기능을 수행하는 소프트웨어의 기능적 또는 구조적 결합을 의미할 수 있다. 예컨대, 상기 모듈은 프로세서에 의해 실행될 수 있다.
애플리케이션(110)은 특정 작업을 수행하기 위한 일련의 명령어들의 집합, 컴퓨터 소프트웨어, 또는 프로그램을 의미할 수 있다. 실시 예들에 따라, 애플리케이션(100)은 채팅 애플리케이션(chatting application or chat application), 뱅킹(또는 모바일 뱅킹) 애플리케이션, 모바일 결제(mobile payment) 애플리케이션, 피어-투-피어 결제(peer-to-peer payment) 애플리케이션, 증권 거래(stock trading) 애플리케이션, 모바일 메신저(mobile messenger) 애플리케이션, 소셜 네트워크 (social network) 애플리케이션, 미디어(media) 애플리케이션, 게임 (game) 애플리케이션, 트레이딩(trading) 애플리케이션 등과 같이 다양한 서비스를 사용자에게 제공할 수 있는 애플리케이션을 의미할 수 있으나 이에 한정되는 것은 아니다.
애플리케이션(110)은 서버(200)로부터 다운로드 되고 단말기(100)에 설치되어 사용되는 네이티브(native) 애플리케이션 또는 별도의 다운로드 절차 없이 단말기(100)에 설치된 브라우저(browser)를 통해 사용하는 웹(web) 애플리케이션을 의미할 수 있으나, 이에 한정되는 것이 아니고, 상기 네이티브 애플리케이션과 상기 웹 애플리케이션이 결합된 하이브리드(hybrid) 애플리케이션을 의미할 수도 있다.보안 모듈(112)은 특정 프로그램 또는 소프트웨어의 위변조(위조 및/또는 변조) 여부를 판단(또는 감시)하는 기능을 수행할 수 있다. 실시 예들에 따라, 보안 모듈(112)은 보안 모듈(112) 자신의 위변조 여부, 메인 모듈(114)의 위변조 여부, OS(120)의 위변조 여부, 및 다른 단말기에 설치된 애플리케이션의 위변조 여부 중에서 적어도 하나를 판단할 수 있다.
보안 모듈(112)은 단말기(100)의 위변조 여부를 순차적으로 판단할 수 있다. 예컨대, 보안 모듈(112)은 먼저 보안 모듈(112) 자신의 위변조 여부를 판단하고, 판단의 결과에 따라 보안 모듈(112)이 위변조되지 않았을 때에 메인 모듈(114)의 위변조 여부를 판단할 수 있고, 이와 같은 방식으로 OS(120)의 위변조 여부를 판단하고 상기 다른 단말기에 설치된 애플리케이션의 위변조 여부를 판단할 수 있다.
즉, 단말기(100)에서 실행되는 애플리케이션(110)은 애플리케이션(110) (예컨대, 보안 모듈(112)과 메인 모듈(114))의 위변조 여부와 OS(120)의 위변조 여부를 스스로 판단할 수 있을 뿐만 아니라, 단말기(100)와 통신하는 다른 단말기에 설치된 애플리케이션(또는 OS)의 위변조 여부를 판단할 수 있다.보안 모듈(112)은 단말기(100) 또는 단말기(100)와 통신하는 다른 단말기에 설치된 애플리케이션의 위변조 여부를 판단하고, API(application programming interface)를 통해 상기 판단의 결과를 지시하는 신호를 메인 모듈(114)로 전송할 수 있다.
보안 모듈(112)은 상기 위변조 여부들 판단에 따른 결과에 대응하는 로그(log)를 생성할 수 있다.
보안 모듈(112)은 애플리케이션(110)이 실행될 때 애플리케이션(110)과 동시에 실행되고, 애플리케이션(110)이 종료할 때 애플리케이션(110)과 동시에 종료될 수 있으나 이에 한정되는 것은 아니다. 여기서 동시는 약간의 시간 차이를 포함한다.
메인 모듈(114)은 애플리케이션(110)의 주 기능을 수행하는 모듈을 의미할 수 있다. 실시 예들에 따라, 메인 모듈(114)은 애플리케이션(110) 중에서 보안 모듈 (112)을 제외한 부분을 의미할 수 있다. 예컨대, 애플리케이션(110)이 금융(결제 또는 핀 테크(Fin Tech)) 애플리케이션일 때, 보안 모듈(112)은 위변조 여부를 판단하는 모듈을 의미하고, 메인 모듈(114)은 금융(결제 또는 핀 테크) 서비스를 제공하는 모듈을 의미할 수 있다.
메인 모듈(114)은 보안 모듈(112)의 위변조 여부 판단에 따라 작동할 수 있다. 실시 예에 따라, 메인 모듈(114)은, 보안 모듈(112)에 의해 애플리케이션(110), OS (120), 및 단말기(100)와 통신하는 다른 단말기에 설치된 애플리케이션 중에서 적어도 하나가 위변조되었다고 판단되었을 때, 애플리케이션(110)의 실행을 중지할 수 있다. 또한, 메인 모듈(114)은 보안 모듈(112)이 위변조 염려가 없다고 판단했을 때, 애플리케이션(110)의 실행을 유지하고 메인 모듈(114)의 기능을 수행할 수 있다.
예컨대, 보안 모듈(112)에 의해 생성된 위변조 판단 결과가 메인 모듈(114)로 전송되면, 메인 모듈(114)은 상기 판단 결과에 기초하여 작동을 중지할 수 있다.
비록, 도 2에서는 보안 모듈(112)과 메인 모듈(114)이 분리된 형태로 도시되어 있으나, 보안 모듈(112)과 메인 모듈(114)은 일체화된 하나의 모듈로 구현될 수 있다.
도 3은 본 발명의 개념에 따른 실시 예에 따라 애플리케이션이 OS의 위변조 여부와 상기 애플리케이션의 위변조 여부를 판단하는 방법을 설명하기 위한 플로우 차트를 나타낸다. 도 1 내지 4을 참조하면, 제1애플리케이션(110-1)은 제1OS(120-1)의 위변조 여부를 판단할 수 있을 뿐만 아니라 제1애플리케이션(110-1)의 위변조 여부를 판단할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)에 포함된 제1보안 모듈은 제1OS (120-1)의 위변조 여부를 판단할 수 있고, 제1애플리케이션(110-1)의 위변조 여부를 판단할 수 있다.
상기 제1보안 모듈과 제1메인 모듈을 포함하는 제1애플리케이션(110-1)은 제1단말기(100-1)에서 실행될 수 있다(S100).
제1애플리케이션(110-1)은 제1애플리케이션(110-1)의 위변조 여부를 스스로 판단할 수 있다(S200).
상기 판단(S200)의 결과에 따라, 제1애플리케이션(110-1)이 위변조된 것으로 판단되었을 때(S200의 YES), 제1애플리케이션(110-1)은 제1애플리케이션(110-1)의 실행을 종료할 수 있다(S300).
실시 예에 따라, 제1애플리케이션(110-1)은, 제1애플리케이션(110-1)이 위변조된 것으로 판단되었을 때, 제1애플리케이션(110-1)의 위변조를 지시하는 메시지를 출력하고, 제1애플리케이션(110-1)의 실행을 자동으로 종료할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은, 제1애플리케이션(110-1)이 위변조된 것으로 판단되었더라도, 제1단말기(100-1)의 사용자가 제1애플리케이션 (110-1)의 실행의 종료를 원하지 않는 경우, 제1OS(120-1)의 위변조 여부를 판단하는 단계(S400)로 진입할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은, 제1애플리케이션(110-1)이 위변조된 것으로 판단되었을 때, 자동으로 서버(200)에 접속하여 변조가 되지 않은 제1애플리케이션을 서버(200)로부터 다운 받고, 상기 변조가 되지 않은 제1애플리케이션을 재설치 할 수 있다. 예컨대, 제1애플리케이션(110-1)은 상기 재설치 전에 상기 재설치 여부를 묻는 알림을 제1단말기(100-1)의 디스플레이를 통해 제1단말기(100-1)의 사용자에게 제공할 수 있다. 제1애플리케이션(110-1)의 재설치가 완료되었을 때, 제1애플리케이션은 자동으로(예컨대, 상기 사용자의 특별한 지시 없이) 제1애플리케이션(110-1)의 위변조 여부를 다시 판단할 수 있다.
상기 판단(S200)의 결과에 따라, 제1애플리케이션(110-1)이 위변조되지 않은 것으로 판단되었을 때(S200의 NO), 제1애플리케이션(110-1)은 제1OS(120-1)의 위변조 여부를 판단하는 단계(S400)로 자동으로 진입할 수 있다.
제1애플리케이션(110-1)은 주기적으로(periodically) 또는 실시간으로(on-the-fly), 제1애플리케이션(110-1)의 위변조 여부를 스스로 판단할 수 있다.
제1애플리케이션(110-1)은 제1단말기(100-1)에 설치된(또는 단말기(100)에서 실행되는) 제1OS(120-1)의 위변조 여부를 판단할 수 있다(S400).
상기 판단(S200)의 결과에 따라, 제1OS(120-1)가 제1애플리케이션(110-1)에 의해 위변조된 것으로 판단되었을 때(S400의 YES), 제1애플리케이션(110-1)은 제1애플리케이션(110-1)의 실행을 자동으로 종료할 수 있다(S500).
실시 예에 따라, 제1애플리케이션(110-1)은, 제1OS(120-1)가 위변조된 것으로 판단되었을 때, 제1OS(120-1)가 위변조되었음을 지시하는 메시지를 제1단말기(100-1)의 디스플레이로 출력하고, 제1애플리케이션(110-1)의 실행을 자동으로 종료할 수 있다.
실시 예에 따라, 제1OS(120-1)가 위변조된 것으로 판단되었더라도, 제1단말기(100-1)의 사용자가 제1애플리케이션(110-1)의 실행의 종료를 원하지 않는 경우, 제1애플리케이션(110-1)은 제1애플리케이션(110-1)의 실행을 유지할 수 있다(S600).
상기 판단(S400)의 결과에 따라, 제1애플리케이션(110-1)에 의해 제1OS(120-1)가 위변조되지 않은 것으로 판단되었을 때(S400의 YES), 제1애플리케이션(110-1)은 제1애플리케이션 110-1)의 위변조 여부를 판단하는 단계(S200)로 자동으로 진입할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)에 의해 제1OS(120-1)가 위변조되지 않은 것으로 판단되었을 때(S400의 YES), 제1애플리케이션(110-1)은 제1OS(120-1)가 위변조 되지 않았음을 지시하는 제1OS 검증 신호(OS1_VF)를 생성할 수 있다.
상기 판단(S200)의 결과에 따라, 제1애플리케이션(110-1)에 의해 제1OS(120-1)가 위변조된 것으로 판단되었을 때(S400의 YES), 제1애플리케이션(110-1)은 제1애플리케이션(110-1)의 실행을 종료할 수 있다(S500).
비록 도 3에는 제1애플리케이션(110-1)이 제1애플리케이션(110-1)의 위변조 여부를 판단한 후 제1OS(120-1)의 위변조 여부를 판단하는 것으로 도시되어 있으나 이는 예시적인 것일 뿐이며, 실시 예들에 따라 제1애플리케이션(110-1)은 제1애플리케이션(110-1)의 위변조 여부의 판단보다 제1OS(120-1)의 위변조 여부를 먼저 판단할 수 있고, 제1OS(120-1)의 위변조 여부와 제1애플리케이션(110-1)의 위변조 여부를 병렬적으로 또는 독립적으로 판단할 수 있다.
도 4는 본 발명의 개념에 따른 실시 예에 따라 애플리케이션이 상기 애플리케이션의 위변조 여부를 자가 판단하는 방법을 상세히 설명하기 위한 플로우 차트를 나타낸다.
도 1 내지 도 4를 참조하면, 제1애플리케이션(110-1)은 제1애플리케이션(110-1)의 상태를 지시하는 제1APP 값(APP1_VAL)을 생성할 수 있다(S210). 실시 예에 따라, 제1애플리케이션(110-1)은 제1애플리케이션(110-1)이 실행될 때 마다 제1APP 값(APP1_VAL)을 생성할 수 있으나, 이에 한정되는 것은 아니다.
제1APP 값(APP1_VAL)은 제1애플리케이션(110-1)를 구성하는 파일(또는 코드)의 전부 또는 일부에 기초하여 생성된 값을 의미할 수 있다. 실시 예에 따라, 제1APP 값(APP1_VAL)은 제1애플리케이션(110-1)를 구성하는 파일(또는 코드) 중, 제1애플리케이션(110-1)의 정상적인(예컨대, 위변조되지 않은) 작동 환경에서는 변화하지 않는 부분(예컨대, 제1애플리케이션(110-1)의 소스(source) 코드)에 기초하여 생성된 값을 의미할 수 있다.
실시 예에 따라, 제1APP 값(APP1_VAL)은 제1애플리케이션(110-1)를 구성하는 파일(또는 프로그램 코드) 중 제1애플리케이션(110-1)이 실행되는 제1단말기(100-1) 또는 제1OS(120-1)의 유형(type)에 따라 바뀌지 않는 부분에 기초하여 생성될 수 있다. 예컨대, 제1애플리케이션(110-1)이 바뀌지 않는다면 제1APP 값(APP1_VAL)은 제1OS(120-1)의 종류(예컨대, 안드로이드 OS인지 iOS인지 여부)에 상관 없이 동일한 값을 가질 수 있다. 비정상적인 사용 환경(예컨대, 제1애플리케이션(110-1)의 위변조 및/또는 제1OS(120-1)의 위변조)에 따라, 제1애플리케이션(110-1)를 구성하는 파일의 전부 또는 일부에 변화가 발생하면, 생성되는 제1APP 값(APP1_VAL)은 달라질 수 있다.
제1애플리케이션(110-1)은 제1애플리케이션(110-1)이 실행될 때마다 생성된 제1APP 값(APP1_VAL)을 제1애플리케이션(110-1) 또는 제1단말기(100-1)의 메모리 장치에 저장할 수 있다. 실시 예에 따라, 제1애플리케이션(110-1)은 제1APP 값(APP1_VAL)을 암호화하여 저장할 수 있다. 예컨대, 제1APP 값(APP1_VAL)은 제1애플리케이션 (110-1)의 파일(또는 코드)의 해시(hash) 함수 값일 수 있다.
제1애플리케이션(110-1)은 현재 제1APP 값(CUR_APP1_VAL)과, 제1애플리케이션(110-1)의 이전 상태를 지시하는 이전 제1APP 값(PRV_APP1_VAL)을 비교하고, 이들(CUR_APP1_VAL과 PRV_APP1_VAL)의 동일 여부를 판단할 수 있다(S212).
현재 제1APP 값(CUR_APP1_VAL)은 현재 제1애플리케이션(110-1)에 의해 생성된 제1APP 값(APP1_VAL)을 의미할 수 있다.
이전 제1APP 값(PRV_APP1_VAL)은 현재 제1APP 값(CUR_APP1_VAL)의 생성 이전에 제1애플리케이션(110-1)에 의해 생성된 제1APP 값(APP1_VAL)을 의미할 수 있다. 실시 예에 따라, 이전 제1APP 값(PRV_APP1_VAL)은 현재 제1APP 값 (CUR_APP1_VAL)의 생성 바로 직전에 제1애플리케이션(110-1)에 의해 생성된 제1APP 값 (APP1_VAL)을 의미할 수 있으나, 이에 한정되는 것은 아니다. 실시 예에 따라, 이전 제1APP 값(PRV_APP1_VAL)은 복수일 수 있다.
예컨대, 제1APP 값(APP1_VAL)이 2회 생성(제1생성 후 제2생성)된다고 가정하면, 상기 제2생성에서 생성된 제1APP 값은 현재 제1APP 값 (CUR_APP1_VAL)이 될 수 있고, 상기 제1생성에서 생성된 제1APP 값은 이전 제1APP 값(PRV_APP1_VAL)이 될 수 있다.
이전 제1APP 값(PRV_APP1_VAL)은 제1단말기(100-1)에 저장되어 있을 수 있고, 제1애플리케이션(110-1)에 의해 리드될 수 있다.
제1애플리케이션(110-1)은 생성된 제1APP 값(APP1_VAL)을 주기적으로 서버(200)에 업로드 할 수 있다.현재 제1APP 값(CUR_APP1_VAL)과 이전 제1APP 값 (PRV_APP1_VAL) 각각은 이들(CUR_APP1_VAL과 PRV_APP1_VAL) 각각이 생성된 시점에 관한 정보를 포함할 수 있다. 예컨대, 현재 제1APP 값(CUR_APP1_VAL)은 현재 제1APP 값(CUR_APP1_VAL)이 생성되었을 때의 제1애플리케이션(110-1)의 버전을 식별할 수 있는 정보를 더 포함할 수 있고, 이전 제1APP 값 (PRV_APP1_VAL)은 이전 제1APP 값(PRV_APP1_VAL)이 생성되었을 때의 제1애플리케이션(110-1)의 버전을 식별할 수 있는 정보를 더 포함할 수 있다.
제1애플리케이션(110-1)이 위변조되지 않았다면 현재 제1APP 값 (CUR_APP1_VAL)과 이전 제1APP 값(PRV_APP1_VAL)이 동일할 것이다. 반대로, 제1애플리케이션(110-1)이 위변조되었다면 제1애플리케이션(110-1)을 구성하는 파일 중 적어도 일부에는 변화가 있을 것이므로, 현재 제1APP 값 (CUR_APP1_VAL)과 이전 제1APP 값(PRV_APP1_VAL)은 동일하지 않을 것이다.
그러므로 상기 판단(S212)의 결과에 따라, 현재 제1APP 값(CUR_APP1_VAL)과 이전 제1APP 값(PRV_APP1_VAL)이 동일할 때(S212의 YES), 제1애플리케이션 (110-1)은 제1애플리케이션(110-1)이 위변조되지 않았다고 판단할 수 있다(S214).
제1애플리케이션(110-1)은 현재 제1APP 값(CUR_APP1_VAL)과 이전 제1APP 값(PRV_APP1_VAL)이 동일할 때, 이전 제1APP 값(PRV_APP1_VAL)을 현재 제1APP 값(CUR_APP1_VAL)으로 갱신 할 수 있다. 즉, 제1애플리케이션(110-1)은 다음 번 판단에서, 현재 판단에서 사용된 현재 제1APP 값(CUR_APP1_VAL)을 이전 제1APP 값(PRV_APP1_VAL)으로 사용할 수 있다.
상기 판단(S212)의 결과에 따라, 현재 제1APP 값(CUR_APP1_VAL)과 이전 제1APP 값(PRV_APP1_VAL)이 동일하지 않을 때(S212의 NO), 제1애플리케이션 (110-1)은 제1애플리케이션(110-1)이 위변조된 것으로 판단할 수 있다(S216).
따라서, 본 발명의 개념에 따른 실시 예에 따른 애플리케이션은 상기 애플리케이션에 의해 생성된 APP 값을 이용하므로, 서버에 의존하지 않더라도 상기 애플리케이션의 위변조 여부를 자동으로 판단할 수 있다.
도 5는 본 발명의 개념에 따른 실시 예에 따라 애플리케이션이 상기 애플리케이션의 위변조 여부를 판단하는 방법을 상세히 설명하기 위한 플로우 차트를 나타낸다.
도 1 내지 도 3 및 도 5을 참조하면, 본 발명의 개념에 따른 실시 예에 따른 애플리케이션은 서버를 이용하여 상기 애플리케이션의 위변조 여부를 자동으로 판단할 수 있다.
제1애플리케이션(110-1)은 서버(200)로부터 기준 제1APP 값 (REF_APP1_VAL)을 수신할 수 있다(S222).
기준 제1APP 값 (REF_APP1_VAL)은 제1APP 값 (APP1_VAL)을 생성하는 방식과 동일한 방식으로 생성된 값일 수 있다.
기준 제1APP 값(REF_APP1_VAL)은 암호화 되어 있을 수 있다. 실시 예에 따라, 기준 제1APP 값(REF_APP1_VAL)은 전자 서명(digital signature)되어 서버(200)에 저장되어 있을 수 있다.
제1애플리케이션(110-1)은 별도의 인증 서버로부터 기준 제1APP 값(REF_APP1_VAL)을 수신할 수 있다. 실시 예에 따라, 제1애플리케이션(110-1)은, 설정된 보안 레벨(security level)에 따라, 서버(200)로부터 기준 제1APP 값 (REF_APP1_VAL)을 수신할 것인지 또는 상기 인증 서버로부터 기준 제1APP 값 (REF_APP1_VAL)을 수신할 것인지를 결정할 수 있다. 상기 보안 레벨은 제1애플리케이션(110-1)에 의해 변경될 수 있다.
제1애플리케이션(110-1)은 기준 제1APP 값(REF_APP1_VAL)과 제1애플리케이션(110-1)에 의해 생성된 제1APP 값(APP1_VAL)을 비교하고, 상기 비교의 결과에 따라 기준 제1APP 값(REF_APP1_VAL)과 제1APP 값(APP1_VAL)이 동일한지를 판단할 수 있다(S222).
실시 예에 따라, 제1애플리케이션(110-1)은 서버(200)로부터 제1애플리케이션(110-1)의 버전(version)에 해당하는 기준 제1APP 값(REF_APP1_VAL)을 수신하고, 기준 제1APP 값(REF_APP1_VAL)과 제1APP 값(APP1_VAL)을 비교할 수 있다. 예컨대, 제1애플리케이션(110-1)의 버전이 1.0일 때, 제1애플리케이션(110-1)은 서버(200)에서 버전 1.0에 해당하는 기준 제1APP 값(REF_APP1_VAL)을 수신할 수 있다. 상기 판단(S222)의 결과에 따라, 기준 제1APP 값(REF_APP1_VAL)과 제1APP 값(APP1_VAL)이 동일할 때(S222의 YES), 제1애플리케이션(110-1)은 제1애플리케이션(110-1)이 위변조되지 않았다고 판단할 수 있다(S224).
상기 판단(S212)의 결과에 따라, 기준 제1APP 값(REF_APP1_VAL)과 제1APP 값(APP1_VAL)이 동일하지 않을 때(S222의 NO), 제1애플리케이션(110-1)은 제1애플리케이션(110-1)이 위변조된 것으로 판단할 수 있다(S226).
본 발명의 개념에 따른 실시 예에 따른 애플리케이션은 서버로부터 수신한 파일(또는 프로그램 코드)에 대한 검증을 수행하므로, 상기 애플리케이션의 설치 이후에 상기 애플리케이션이 위변조 되더라도, 상기 위변조 여부를 판단할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은 제1애플리케이션(110-1)의 제1파일 (또는 제1코드)의 위변조를 서버를 이용하지 않고 판단하고, 제1애플리케이션(110-1)의 제2파일(또는 제2코드)의 위변조를 서버를 이용하여 판단할 수 있으나, 이에 한정되는 것은 아니다.
제1파일(또는 제1프로그램 코드)는 제1애플리케이션(110-1)을 구성하는 파일 (또는 프로그램 코드) 중에서 제1애플리케이션(110-1)의 작동에 따라 변화하지 않는 파일(또는 프로그램 코드)을 의미하고, 제2파일(또는 제2프로그램 코드)는 제1애플리케이션(110-1)을 구성하는 파일 (또는 프로그램 코드) 중에서 제1애플리케이션(110-1)의 작동에 따라 변화하는 파일 (또는 프로그램 코드)를 의미한다고 가정한다.
도 6는 본 발명의 개념에 따른 실시 예에 따라 애플리케이션이 상기 애플리케이션이 설치된 단말기와 통신하는 다른 단말기를 이용하여 상기 애플리케이션의 위변조 여부를 판단하는 방법을 상세히 설명하기 위한 플로우 차트를 나타낸다.
실시 예에 따라, 도 1 내지 4 및 도 6를 참조하면, 제1애플리케이션(110-1)은 제1단말기(100-1)와 통신하는 제2단말기(100-2)를 이용하여 제1애플리케이션(110-1)의 위변조 여부를 판단할 수 있다.
제1애플리케이션(110-1)은 제1애플리케이션의 제1APP 버전 정보(APP1_VI)와 제1APP 값(APP1_VAL), 그리고 제2애플리케이션의 제2APP 버전 정보(APP2_VI)와 제2APP 값(APP2_VAL)을 이용하여 제1애플리케이션(110-1)의 위변조 여부를 판단할 수 있다.
제1APP 버전 정보(APP1_VI)와 제2APP 버전 정보(APP2_VI)는 제1애플리케이션 (110-1)과 제2애플리케이션(110-2) 각각을 식별하기 위한 정보를 의미할 수 있다. 실시 예에 따라, 제1APP 버전 정보(APP1_VI)는 제1애플리케이션(110-1)의 파일의 전부 또는 일부를 식별하기 위한 정보를 의미할 수 있다. 예컨대, 제1APP 버전 정보(APP1_VI)는 제1애플리케이션(110-1)의 현재 버전에 관련된 정보를 의미할 수 있으나 이에 한정되는 것은 아니다. 버전 정보가 동일한 두 애플리케이션 각각의 구성 파일은 동일할 수 있다.
제2APP 버전 정보(APP2_VI)의 구성 및 기능은 제1APP 버전 정보(APP1_VI)의 구성 및 기능과 동일 또는 유사할 수 있다. 즉, 제2APP 버전 정보(APP2_VI)는 제1APP버전 정보(APP1_VI)와 마찬가지로 이해될 수 있다. 제1APP 값(APP1_VAL)의 구성과 기능은 도 1 내지 도 4를 참조하여 설명된 제1APP 값(APP1_VAL)의 구성과 기능과 동일 또는 유사하며, 제2APP 값(APP2_VAL)은 제1APP 값 (APP1_VAL)과 마찬가지로 이해될 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)과 제2애플리케이션(110-2) 모두 위변조되지 않았다면, 제1APP 버전 정보(APP1_VI)와 제2APP 버전 정보(APP2_VI)가 동일할 때 제1APP 값(APP1_VAL)과 제2APP 값(APP2_VAL)은 동일할 수 있다.
제1애플리케이션(110-1)은 제1단말기(100-1)와 통신하는 제2단말기(100-2)로부터, 제2단말기(100-2)에서 실행되는 제2애플리케이션(110-2)의 제2APP 버전 정보(APP2_VI)와 제2애플리케이션(110-2)에 관련된 제2 APP 값(APP2_VAL)을 수신할 수 있다(S230).
실시 예에 따라, 제2애플리케이션(110-2)은 제1애플리케이션(110-1)과 동일한 애플리케이션일 수 있으나, 이에 한정되는 것은 아니다. 이하에서는 편의상 제1애플리케이션(110-1)과 제2애플리케이션(110-2)이 동일한 애플리케이션임을 가정하고 설명하도록 한다.
제2애플리케이션(110-2)은 본 명세서에서 설명되는 제1애플리케이션의 작동들과 동일한 작동들을 수행할 수 있다. 즉, 제2애플리케이션(110-2)은 제2애플리케이션(110-2)의 위변조 여부와 제2단말기(100-2)에 설치된 제2OS(120-2)의 위변조 여부를 판단할 수 있다.
제1애플리케이션(110-1)은 제1애플리케이션(110-1)의 제1APP 버전 정보 (APP1_VI)와 제2APP 버전 정보(APP2_VI)를 비교할 수 있다(S232).
상기 비교(S232)의 결과에 따라, 제1APP 버전 정보(APP1_VI)와 제2APP 버전 정보(APP2_VI)가 동일할 때(S2220의 YES), 제1애플리케이션(110-1)은 제1APP 값(APP1_VAL)과 제2 APP 값(APP2_VAL)을 비교할 수 있다(S234).
실시 예에 따라, 제1애플리케이션(110-1)은 수신한 제2APP 버전 정보 (APP2_VI)와 제2 APP 값(APP2_VAL)을 저장할 수 있다.
상기 비교(S224)의 결과에 따라 제1APP 버전 정보(APP1_VI)와 제2APP 버전 정보 (APP2_VI)가 동일하고, 제1APP 값(APP1_VAL)과 제2 APP 값(APP2_VAL)이 동일할 때, 제1애플리케이션(110)은 제1애플리케이션(110-1)이 위변조되지 않았다고 판단할 수 있다(S236).
제1애플리케이션(110)은, 상기 비교(S234)의 결과에 따라 제1APP 값(APP1_VAL)과 제2 APP 값(APP2_VAL)이 동일하지 않을 때(S234의 NO), 제1애플리케이션(110-1)은 제1애플리케이션(110-1)이 위변조되었다고 판단할 수 있다(S238).
본 발명의 개념에 따른 실시 예에 따른 애플리케이션은, 서버에 의존하지 않고서도 상기 애플리케이션이 설치된 단말기와 통신하는 또 다른 단말기를 이용하여 상기 애플리케이션의 위변조 여부를 상호 판단할 수 있다.
상기 비교(S232)의 결과에 따라, 제1APP 버전 정보(APP1_VI)와 제2APP 버전 정보(APP2_VI)가 동일하지 않을 때(S232의 NO), 제1애플리케이션(110-1)은 제1애플리케이션(110-1)의 위변조 여부를 제1애플리케이션(110-1)을 이용하여 판단할 수 있다.
제1애플리케이션(110-1)을 이용하여 제1애플리케이션(110-1)의 위변조 여부를 판단하는 방법은 도 4 및 도 5를 참조하여 이미 설명하였으므로, 설명은 생략하도록 한다.
실시 예에 따라, 각 애플리케이션(110-1과 110-2)을 구성하는 파일 중, 각 애플리케이션(110-과 110-2)의 버전 정보(VI1과 VI2)가 변하더라도 변하지 않는 파일이 존재할 때, 상기 변하지 않는 파일을 이용하여 제1APP 값(APP1_VAL)과 제2 APP 값(APP2_VAL)을 생성하는 경우, 제1애플리케이션(110-1)은 제1APP 버전 정보(APP1_VI)와 제2APP 버전 정보(APP2_VI)를 비교하지 않고, 바로 제1APP 값(APP1_VAL)과 제2 APP 값(APP2_VAL)을 비교할 수도 있다.
본 명세서에서 상기 비교(S2220)의 결과에 따라, 제1APP 버전 정보(APP1_VI)와 제2APP 버전 정보(APP2_VI)가 동일하지 않을 때, 제1애플리케이션(110-1)이 제1애플리케이션(110-1)을 이용하여 제1애플리케이션(110-1)의 위변조 여부를 판단할 수 있다고 설명하였으나, 본 발명의 개념에 따른 실시 예는 위 순서에 한정되는 것이 아니다.
도 7과 도 8는 본 발명의 개념에 따른 실시 예에 따라 애플리케이션이 OS의 위변조 여부를 판단하는 방법을 상세히 설명하기 위한 플로우 차트를 나타낸다.
실시 예에 따라, 도 1 내지 4 및 도 7을 참조하면, 제1애플리케이션(110-1)은 제1OS(120-1)의 위변조 여부를 판단하기 위해, 제1OS(120-1)로 루트 권한 실행 명령(RAI)을 전송할 수 있다(S410).
루트(root) 계정은 일반적인 운영 체제에서 모든 권한 혹은 가장 높은 권한을 가지는 계정(예컨대, 관리자(administrator) 또는 슈퍼-유저(super-user(su)))을 뜻할 수 있다. 상기 루트 계정은 상기 운영 체제의 전반적인 작동을 모두 제어할 수 있다. 이하 본 명세서에서, 루트 권한이라고 함은 상기 루트 계정의 권한을 의미한다.
루트 권한 실행 명령(RAI)은 루트 권한이 필요한 실행 명령을 의미할 수 있다. 실시 예에 따라, 루트 권한 실행 명령(RAI)은 루트 권한이 필요한 명령어의 실행의 명령을 의미할 수 있다. 실시 예에 따라 루트 권한 실행 명령(RAI)은 특정 사용자의 권한 변경, 시스템 폴더의 생성/변경/삭제 등의 명령을 뜻할 수 있다. 예컨대, 루트 권한 실행 명령(RAI)은 운영 체제의 시스템에 있는 API 함수 실행을 지시하는 명령을 의미할 수 있으나 이에 한정되는 것은 아니다.
제1OS(120-1)가 루트 권한 실행 명령(RAI)을 수신하면, 제1OS(120-1)은 현재 로그인(log-in)된 계정이 루트 권한을 가지고 있을 때, 루트 권한 실행 명령(RAI)에 따라 작동 (예컨대, 루트 권한 실행 명령(RAI)에 해당하는 작동을 수행)할 수 있다. 실시 예에 따라, 제1OS(120-1)는 루트 권한 실행 명령(RAI)의 수행(예컨대, 루트 권한 실행 명령(RAI)에 해당하는 동작의 수행)을 지시하는 제1응답(RESP1)을 생성할 수 있다.
제1OS(120-1)는 상기 현재 계정이 상기 루트 권한을 가지고 있지 않을 때 루트 권한 실행 명령(RAI)을 거부할 수 있다. 실시 예에 따라, 제1OS(120-1)는 루트 권한 실행 명령(RAI)의 거부를 지시하는 제2응답(RESP2)을 생성할 수 있다.
실시 예에 따라, 제1OS(120-1)는 상기 현재 계정이 상기 루트 권한을 가지고 있는지를 판단하기 위해 제1단말기(100-1)의 사용자에게 루트 계정에 관련된 정보를 입력하는 것을 요구할 수 있다.
제1애플리케이션(110-1)은 루트 권한 실행 명령(RAI)이 수행되었는지를 판단할 수 있다(S212). 실시 예에 따라, 제1애플리케이션(110-1)은 제1OS(120-1)로부터 출력된 메시지를 이용하여 루트 권한 실행 명령(RAI)이 실행되었는지를 판단할 수 있다. 예컨대, 제1애플리케이션(110-1)은 제1응답(RESP1)과 제2응답(RESP2)을 이용하여 루트 권한 실행 명령(RAI)이 수행되었는지를 판단할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은 시스템 폴더를 관찰하고, 상기 관찰의 결과 상기 시스템 폴더 내의 파일이 생성/변경/삭제되었는지를 판단하고, 상기 판단의 결과에 따라 루트 권한 실행 명령(RAI)이 수행되었는지를 판단할 수 있다.
상기 판단(S412)의 결과에 따라, 루트 권한 실행 명령(RAI) 이 거부되었을 때(S412의 NO), 제1애플리케이션(110-1)은 제1OS(120-1)가 위변조되지 않은 것으로 판단할 수 있다(S414). 실시 예에 따라, 제1애플리케이션(110-1)은 제2응답(RESP2)를 수신했을 때, 제1애플리케이션(110-1)은 제1OS(120-1)가 위변조되지 않은 것으로 판단할 수 있다.
제1애플리케이션(110-1)은 루트 권한 실행 명령(RAI)의 실행이 거부되었을 때, 제1OS(120-1)가 위변조되지 않은 것으로 판단하고, 제1애플리케이션(110-1)을 종료할 수 있다.
상기 판단(S412)의 결과에 따라, 루트 권한 실행 명령(RAI)이 수행되었을 때(S412의 YES), 제1애플리케이션(110-1)은 제1OS(120-1)가 위변조된 것으로 판단할 수 있다(S416). 실시 예에 따라, 제1애플리케이션(110-1)은 제1응답(RESP1)를 수신했을 때, 제1애플리케이션(110-1)은 제1OS(120-1)가 위변조된 것으로 판단할 수 있다.
제1애플리케이션(110-1)은 루트 권한 실행 명령(RAI)이 실행되었을 때, 제1OS(120-1)가 위변조된 것으로 판단하고, 제1애플리케이션(110-1)의 실행을 종료할 수 있다. 예컨대, 제1OS(120-1)가 위변조된 것으로 판단되었을 때, 제1애플리케이션(110-1)은 제1OS(120-1)가 위변조되었음을 지시하는 메시지를 출력하고, 제1애플리케이션(110-1)의 실행을 자동으로 종료할 수 있다.
본 발명의 개념에 따른 실시 예에 따른 애플리케이션은 루트 권한 실행 명령(RAI)를 이용하여 OS의 위변조 여부를 판단하므로 상기 OS를 구성하는 파일에 관련된 정보가 없더라도, 빠르게 상기 OS의 위변조 여부를 판단할 수 있다.
또한, 본 발명의 개념에 따른 실시 예에 따른 애플리케이션은 서버에 의존하지 않고 상기 OS의 위변조 여부를 판단할 수 있다.
실시 예에 따라, 도 1 내지 도 4 및 도 8을 참조하면, 제1OS(120-1)의 상태를 지시하는 OS 값(OS_VAL)을 생성할 수 있다(S420). 실시 예에 따라, 제1애플리케이션(110-1)은 제1애플리케이션(110-1)이 실행될 때마다 OS 값(OS_VAL)을 생성할 수 있으나 이에 한정되는 것은 아니다.
OS 값(OS_VAL)은 제1OS(120-1)를 구성하는 파일(또는 프로그램 코드)의 전부 또는 일부에 기초하여 생성된 값을 의미할 수 있다. 실시 예에 따라, OS 값(OS_VAL)은 제1OS(120-1)를 구성하는 파일(또는 코드) 중, 정상적인(예컨대, 위변조되지 않은) 작동 환경에서는 변화하지 않는 부분(예컨대, 제1OS(120-1)의 소스 코드)에 기초하여 생성된 값을 의미할 수 있다. 비정상적인 사용 환경(예컨대, 제1OS(120-1)의 위변조)에 따라, 제1OS(120-1)를 구성하는 파일의 전부 또는 일부에 변화가 발생하면, 생성되는 OS 값(OS_VAL)은 달라질 수 있다.
제1애플리케이션(110-1)은 제1애플리케이션(110-1)이 실행될 때마다 생성한 OS 값(OS_VAL)들을 제1애플리케이션(110-1) 또는 제1단말기(100-1)의 메모리 장치에 저장할 수 있다. 실시 예에 따라, 제1애플리케이션(110-1)은 OS 값(OS_VAL)을 암호화하여 저장할 수 있다. 예컨대, OS 값(OS_VAL)은 제1OS(120-1)의 파일(또는 프로그램 코드)의 해시(hash) 함수 값일 수 있다
제1애플리케이션(110-1)은 현재 OS 값(CUR_OS_VAL)과 제1OS(120-1)의 이전 상태를 지시하는 이전 OS 값(PRV_OS_VAL)을 비교하고, 이들(CUR_VAL_OS과 PRV_OS_VAL)의 동일 여부를 판단할 수 있다(S422).
현재 OS 값(CUR_OS_VAL)은 현재 제1애플리케이션(110-1)에 의해 생성된 OS 값(OS_VAL)을 의미할 수 있다.
이전 OS 값(PRV_OS_VAL)은 현재 OS 값(CUR_OS_VAL)의 생성 이전에 제1애플리케이션(110-1)에 의해 생성된 OS 값(OS_VAL)을 의미할 수 있다. 이전 OS 값(PRV_OS_VAL)은 현재 OS 값(CUR_OS_VAL)의 생성 바로 직전에 생성된 OS 값(CUR_OS_VAL)을 의미할 수 있으나, 이에 한정되는 것은 아니다. 실시 예에 따라, 이전 OS 값(PRV_OS_VAL)은 복수일 수 있다.
예컨대, 제1애플리케이션(110-1)이 OS 값(OS_VAL)을 총 2회 생성(제1생성 후 제2생성)한다고 하면, 상기 제2생성에서 생성된 제OS 값은 현재 OS 값(CUR_OS_VAL)이 되고, 상기 제1생성에서 생성된 제OS 값은 이전 OS 값(PRV_OS_VAL)이 될 수 있다.
이전 OS 값(PRV_OS_VAL)은 제1단말기(100-1)에 저장되어 있을 수 있고, 제1애플리케이션(110-1)에 의해 리드될 수 있다.
제1애플리케이션(110-1)은 이전 OS 값(PRV_OS_VAL)을 주기적으로 갱신할 수 있다. 실시 예에 따라, 제1애플리케이션(110-1)은 서버(200)를 이용하여 이전 OS 값(PRV_OS_VAL)을 갱신할 수 있다. 이에 따라, 저장된 이전 OS 값(PRV_OS_VAL)의 신뢰도가 향상되는 효과가 있다.
실시 예에 따라, 현재 OS 값(CUR_OS_VAL)과 이전 OS 값(PRV_OS_VAL)은 현재 OS 값(CUR_OS_VAL)과 이전 OS 값(PRV_OS_VAL) 각각이 생성된 시점에 관한 정보를 포함할 수 있다. 예컨대, 현재 OS 값(CUR_OS_VAL)은 현재 OS 값(CUR_OS_VAL)이 생성되었을 때의 제1OS(120-1)의 버전을 식별할 수 있는 정보를 더 포함할 수 있고, 이전 OS 값(PRV_OS_VAL)은 이전 OS 값(PRV_OS_VAL)이 생성되었을 때의 제1OS(120-1)의 버전을 식별할 수 있는 정보를 더 포함할 수 있다.
제1OS(120-1)가 위변조되지 않았다면 현재 OS 값(CUR_OS_VAL)과 이전 OS 값(PRV_OS_VAL)이 동일할 것이다. 반대로, 제1OS(120-1)가 위변조되었다면 제1OS(120-1)을 구성하는 파일 중 적어도 일부에는 변화가 있을 것이므로, 현재 OS 값(CUR_OS_VAL)과 이전 OS 값(PRV_OS_VAL)은 동일하지 않을 수 있다.
그러므로 상기 판단(S422)의 결과에 따라, 현재 OS 값(CUR_OS_VAL)과 이전 OS 값(PRV_OS_VAL)이 동일할 때(S422의 YES), 제1애플리케이션(110-1)은 제1OS(120-1)가 위변조되지 않았다고 판단할 수 있다(S424).
제1애플리케이션(110-1)은 현재 OS 값(CUR_OS_VAL)과 이전 OS 값(PRV_OS_VAL)이 동일할 때, 제1OS(120-1)가 위변조되지 않은 것으로 판단하고, 제1애플리케이션(110-1)의 실행을 유지할 수 있다.
제1애플리케이션(110-1)은 현재 OS 값(CUR_OS_VAL)과 이전 OS 값(PRV_OS_VAL)이 동일할 때, 이전 OS 값(PRV_OS_VAL)을 현재 OS 값(CUR_OS_VAL)으로 갱신 수 있다. 즉, 제1애플리케이션(110-1)은 다음 번 판단에서, 현재 판단에서 사용된 현재 OS 값(CUR_OS_VAL)을 이전 OS 값(PRV_OS_VAL)으로 사용할 수 있다. 상기 판단(S422)의 결과에 따라, 현재 OS 값(CUR_OS_VAL)과 이전 OS 값(PRV_OS_VAL)이 동일하지 않을 때(S422의 NO), 제1애플리케이션(110-1)은 제1OS(120-1)가 위변조된 것으로 판단할 수 있다(S226).
실시 예에 따라, 제1애플리케이션(110-1)은 현재 OS 값(CUR_OS_VAL)과 이전 OS 값(PRV_OS_VAL)이 동일하지 않을 때, 제1OS(120-1)가 위변조된 것으로 판단하고, 제1애플리케이션(110-1)의 실행을 종료할 수 있다. 예컨대, 제1OS(120-1)가 위변조된 것으로 판단되었을 때, 제1애플리케이션(110-1)은 제1OS(120-1)가 위변조되었음을 지시하는 메시지를 출력하고, 제1애플리케이션(110-1)의 실행을 자동으로 종료할 수 있다.
따라서, 본 발명의 개념에 따른 실시 예에 따른 애플리케이션은, 상기 애플리케이션에 의해 생성된 OS 값을 이용하므로 서버에 의존하지 않고 상기 애플리케이션이 설치된 단말기의 OS의 위변조 여부를 자동으로 판단할 수 있다. 본 발명의 개념에 따른 실시 예에 따른 애플리케이션은 서버를 이용해서도 상기 애플리케이션이 설치된 단말기의 OS의 위변조 여부를 자동으로 판단할 수 있다.
즉, 제1애플리케이션(110-1)은 제1애플리케이션(110-1)에 의해 생성된 OS 값(OS_VAL)을 서버(200)에 저장된 기준 OS 값과 비교할 수 있다.
상기 기준 OS 값은 OS 값(OS_VAL)과 실질적으로 동일한 방식으로 생성된 제1OS(120-1)에 관련된 값일 수 있다. 상기 기준 OS 값은 암호화 되어 있을 수 있다. 실시 예에 따라, 상기 기준 OS 값은 전자 서명되어 서버(200)에 저장되어 있을 수 있다.
제1애플리케이션(110-1)은 별도의 인증 서버로부터 상기 기준 OS 값을 수신할 수 있다. 실시 예에 따라, 제1애플리케이션(110-1)은, 설정된 보안 레벨에 따라, 서버(200)로부터 상기 기준 OS 값을 수신할 것인지 또는 상기 인증 서버로부터 상기 기준 OS 값을 수신할 것인지를 결정할 수 있다. 상기 보안 레벨은 제1애플리케이션(110-1)에 의해 변경될 수 있다.
상기 기준 OS 값이 저장된 별도의 인증 서버와 기준 제1APP 값(REF_APP1_VAL)이 저장된 별도의 인증 서버는 동일할 수도 있으나, 이에 한정되는 것은 아니다.
상기 기준 OS 값에 대한 보안 레벨과 기준 제1APP 값(REF_APP1_VAL)에 대한 보안 레벨은 연동되어 설정될 수 있으나, 이에 한정되는 것은 아니며 상기 보안 레벨들은 독립적으로 설정될 수도 있다.
제1애플리케이션(110-1)은 수신한 상기 기준 OS 값과 OS 값(OS_VAL)을 비교하고, 상기 비교의 결과에 따라 상기 기준 OS 값과 OS 값(OS_VAL)이 동일할 때 제1OS(120-1)가 위변조 되지 않았다고 판단할 수 있다.
상기 비교의 결과에 따라 상기 기준 OS 값과 OS 값(OS_VAL)이 동일하지 않을 때 제1OS(120-1)가 위변조 되었다고 판단할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은 서버(200)로부터 제1OS(120-1)의 버전에 해당하는 기준 OS 값을 수신하고, 상기 기준 OS 값과 OS 값(OS_VAL)을 비교할 수 있다. 예컨대, 제1OS(120-1)의 버전이 1.0일 때, 제1애플리케이션(110-1)은 서버(200)에서 버전 1.0에 해당하는 기준 OS 값을 수신할 수 있다.
도 9는 본 발명의 개념에 따른 실시 예에 따라 제1애플리케이션이 제2단말기를 검증(verify) 하고, 검증된 제2단말기와 통신하는 방법을 설명하기 위한 플로우 차트를 나타낸다.
도 1 내지 4 및 도 9를 참조하면, 제1애플리케이션(110-1)은 제1단말기(100-1)와 통신하는 제2단말기(100-2)를 검증할 수 있다(S700).
제1애플리케이션(110-1)은 제1단말기(100-1)의 통신범위 내에 위치한 제2단말기(100-2)를 인식하고, 제2단말기(100-2)를 검증할 수 있다. 실시 예에 따라, 제1애플리케이션(110-1)은 제2단말기(100-2)에 설치된 애플리케이션 및/또는 OS의 위변조 여부를 판단하고, 상기 판단의 결과에 기초하여 2단말기(100-2)를 검증할 수 있다.
제1단말기(100-1)는 제2단말기(100-2)로부터 제2단말기(100-2)의 제2단말 정보를 수신하고, 상기 제2단말 정보를 이용하여 제2단말기(100-2)를 인식할 수 있다. 예컨대, 상기 제2단말 정보는 UUID(universally unique identifier)일 수 있으나 이에 한정되는 것은 아니며, 제2단말기(100-2)를 인식하기 위한 정보면 족하다.
제1애플리케이션(110-1)은 제1단말기(100-1)의 사용자가 제2단말기(100-2)와의 통신을 시도할 때, 제2단말기(100-2)와의 본격적인 통신을 수행하기 전에 제2단말기(100-2)를 검증할 수 있다. 이 경우, 상기 본격적인 통신은 제1애플리케이션(110-1)의 메인 모듈에 의해 수행되는 기능(예컨대, 메시지 전송, 전자화폐의 전송, 주식 거래, 전자 계약의 체결 또는 전자 결제 등)을 의미할 수 있다.
상기 검증(S700)의 결과에 따라, 제2단말기(100-2)의 검증이 실패(fail)했을 때 (S700의 NO), 제1애플리케이션(110-1)은 제1애플리케이션(110-1)의 실행을 종료할 수 있다(S900). 실시 예에 따라, 제2단말기(100-2)의 검증이 실패했을 때 (S700의 NO), 제1애플리케이션(110-1)은 제2단말기(100-2)의 검증 실패를 지시하는 메시지를 제1단말기(100-1)의 디스플레이로 출력하고, 제1애플리케이션(110-1)의 실행을 자동으로 종료할 수 있다.
제2단말기(100-2)의 검증이 실패했을 때 (S700의 NO), 제1애플리케이션(110-1)은 제1단말기(100-1)와 제2단말기(100-2)간의 통신을 차단할 수 있다. 실시 예에 따라, 제1애플리케이션(110-1)은 제1단말기(100-1)와 제2단말기(100-2)간의 통신을 차단하고, 제2단말기(100-2)의 제2단말 정보를 제1단말기(100-1)의 메모리 또는 제1애플리케이션(110-1)에 저장할 수 있다.
제2단말기(100-2)의 검증이 실패했을 때 (S700의 NO), 제1애플리케이션(110-1)은제2단말기(100-2)로 추가 인증 요청을 보낼 것인지 여부를 묻는 알림을 제1단말기(100-1)의 디스플레이를 통해 제1단말기(100-1)의 사용자에게 제공할 수 있다.
상기 결정(S700)의 결과에 따라, 제2단말기(100-2)가 검증되었을 때 (S700의 YES), 제1애플리케이션(110-1)은 제2단말기(100-2)와 본격적인 통신을 수행할 수 있다(S800).
따라서, 본 발명의 개념에 따른 실시 예에 따른 애플리케이션은, 서버에 의존하지 않고서도 상기 애플리케이션이 설치된 단말기가 다른 단말기와 본격적인 통신을 수행하기 전에 상기 다른 단말기를 검증하므로, 안전한 통신을 수행할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은, 제2단말기(100-2)가 검증되고 제1단말기(100-1)와 제2단말기(100-2)가 통신을 하고 있는 도중에도, 주기적으로 또는 실시간으로 제2단말기를 검증할 수 있다.
도 10은 본 발명의 개념에 따른 실시 예에 따라 제1애플리케이션이 제2단말기를 검증하는 방법을 상세히 설명하기 위한 플로우 차트를 나타낸다.
도 1 내지 4, 도 9 및 도 10을 참조하면, 제1애플리케이션(110-1)은 제2OS(120-1)가 위변조 되지 않았음을 지시하는 제2OS 검증 신호(OS2_VF)를 제2단말기(100-2)로 요청할 수 있다(S710).
실시 예에 따라, 제1애플리케이션(110-1)은 제2OS 검증 신호(OS2_VF)의 요청 시점부터 기준 시간이 경과한 경우, 제2단말기(100-2)의 검증이 실패한 것으로 판단할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은 제2OS 검증 신호(OS2_VF)가 수신되지 않은 경우, 제2OS(120-2)의 위변조 여부가 의심된다는 메시지를 제1단말기(100-1)의 디스플레이를 통해 출력할 수 있다. 예컨대, 제1애플리케이션(110-1)은 상기 제2OS(120-2)의 위변조 여부가 의심된다는 메시지와 함께 제2단말기(100-2)의 검증을 계속할지 여부를 묻는 알림을 상기 디스플레이로 출력할 수 있다.
제1애플리케이션(110-1)은 제1단말기(100-1)와 통신하는 제2단말기(100-2)로부터, 제2단말기(100-2)에서 실행되는 제2애플리케이션(110-2)의 제2APP 버전 정보(APP2_VI)와 제2애플리케이션(110-2)에 관련된 제2 APP 값(APP2_VAL)을 수신할 수 있다(S710).
제1애플리케이션(110-1)은 제1애플리케이션(110-1)의 제1APP 버전 정보(APP1_VI)와 제2APP 버전 정보(APP2_VI)를 비교할 수 있다(S720).
상기 비교(S420)의 결과에 따라, 제1APP 버전 정보(APP1_VI)와 제2APP 버전 정보(APP2_VI)가 동일할 때(S420의 YES), 제1애플리케이션(110-1)은 제1APP 값(APP1_VAL)과 제2 APP 값(APP2_VAL)를 비교할 수 있다(S730).
상기 비교(S730)의 결과에 따라 제1APP 값(APP1_VAL)과 제2 APP 값(APP2_VAL)이 동일할 때(S730의 YES), 제1애플리케이션(110-1)은 제2애플리케이션(110-2)이 위변조되지 않았다고 판단할 수 있고, 따라서 제2단말기(100-2)를 검증할 수 있다.(S740).
실시 예에 따라, 도 8를 참조하여 설명한 것처럼, 제1애플리케이션(110-1)은 제2애플리케이션(110-2)이 위변조 되지 않았다고 판단함과 동시에, 제1애플리케이션(110-1)도 위변조 되지 않은 것으로 판단할 수 있다.
제1애플리케이션(110)은, 상기 비교(S730)의 결과에 따라 제1APP 값(APP1_VAL)과 제2 APP 값(APP2_VAL)이 동일하지 않을 때(S730의 NO), 제1애플리케이션(110-1)은 제2애플리케이션(110-1)이 위변조 되었다고 판단할 수 있다(S750). 실시 예에 따라 제1APP 값(APP1_VAL)과 제2 APP 값(APP2_VAL)이 동일하지 않을 때(S730의 NO), 제1애플리케이션(110-1)은 제2애플리케이션(110-2)의 위변조 여부를 지시하는 알림을 제2단말기(100-2)로 전송할 수 있다.
상기 비교(S720)의 결과에 따라, 제1APP 버전 정보(APP1_VI)와 제2APP 버전 정보(APP2_VI)가 동일하지 않을 때(S720의 NO), 제1애플리케이션(110-1)은 제2APP 버전 정보(APP2_VI)에 해당하는 기준 제2APP 값(REF_APP2_VAL)과 제2APP 값(APP_VAL1)을 비교할 수 있다(S760).
실시 예에 따라, 기준 제2APP 값(REF_APP2_VAL)은 제2APP 값(APP2_VAL)을 생성하는 방식과 동일한 방식으로 생성된 값일 수 있다. 실시 예에 따라, 제1APP 버전 정보(APP1_VI)와 제2APP 버전 정보(APP2_VI)가 동일하지 않을 때(S720의 NO), 제1애플리케이션(110-1)은 제1단말기(110-1)에 저장된 기준 제2APP 값(REF_APP2_VAL)을 검색하고, 기준 제2 APP 값(REF_APP_VAL2)과 제2APP 값(APP_VAL2)을 비교할 수 있다. 예컨대, 제1단말기(110-1)에 저장된 기준 제2APP 값(REF_APP2_VAL)은 제2단말기(100-2)와의 이전 통신 과정에서 저장된 값일 수 있으나 이에 한정되는 것은 아니다.
실시 예에 따라, 제1APP 버전 정보(APP1_VI)와 제2APP 버전 정보(APP2_VI)가 동일하지 않을 때(S720의 NO), 제1애플리케이션(110-1)은 서버(200)로부터 제2APP 버전 정보(APP2_VI)에 해당하는 기준 제2APP 값(REF_APP2_VAL)을 수신할 수 있다.
예컨대, 제1애플리케이션(110-1)은 서버(200)로 제2APP 버전 정보(APP2_VI)를 전송하고, 서버(200)로부터 제2APP 버전 정보(APP2_VI)에 해당하는 기준 제2APP 값(REF_APP2_VAL)을 수신하거나 또는 제1애플리케이션(110-1)은 제2APP 버전 정보(APP2_VI)를 이용하여, 제2APP 버전 정보(APP2_VI)에 해당하는 기준 제2APP 값(REF_APP2_VAL)을 검색하고, 검색된 기준 제2APP 값(REF_APP2_VAL)을 서버(200)로부터 수신할 수 있다.
제1애플리케이션(110-1)은 기준 제2APP 값(REF_APP2_VAL)과 제2APP 값(APP_VAL2)을 비교할 수 있다(S770).
상기 비교(S770)의 결과에 따라, 기준 제2APP 값(REF_APP2_VAL)과 제2 APP 값(APP2_VAL)이 동일할 때(S770의 YES), 제2애플리케이션(110-2)이 위변조되지 않았다고 판단할 수 있고 제2단말기(100-2)를 검증할 수 있다(S780).
제1애플리케이션(110-1)은 제2단말기(100-2)를 검증할 때 제2단말기(100-2)로 검증 코드를 전송할 수 있다. 실시예에 따라, 제1애플리케이션(110-1)은 상기 검증 코드를 암호화하여 전송할 수 있고, 제2단말기(100-2)로부터 수신한 상기 검증 코드를 복호화하여 검증할 수 있다. 제1애플리케이션(110)은, 상기 비교(S770)의 결과에 따라 기준 제2APP 값(REF_APP2_VAL)과 제2 APP 값(APP2_VAL)이 동일하지 않을 때(S770의 NO), 제1애플리케이션(110-1)은 제2애플리케이션(110-1)이 위변조되었다고 판단할 수 있고, 제2단말기(100-2)를 검증하지 않을 수 있다(S790).
도 11은 본 발명의 개념에 따른 실시 예에 따라, 제1애플리케이션이 제2단말기와 통신을 수행하는 방법을 설명하기 위한 데이터 처리도이다. 도 9와 도 11을 참조하면, 제1애플리케이션(110-1)은 검증된 제2단말기(100-2)와 통신을 수행할 수 있다.
제1애플리케이션(110-1)은 제2단말기(100-2)와 암호화된 채널(channel)을 통해 통신할 수 있다. 실시 예에 따라, 제1단말기(100-1)과 제2단말기(100-2)는 공개 키 알고리즘(public key algorithm) 및/또는 대칭 키 알고리즘(symmetric key algorithm)을 이용하여 서로 통신할 수 있다.
예컨대, 제1애플리케이션(110-1)은 AES(advanced encryption standard), DES(data encryption standard), RC4, Twofish Serpent, Blowfish, CAST, 3DES, IDEA, SEED 또는 ARIA 등의 대칭 키 알고리즘, 및/또는 디피-헬만(Diffie-Hellman) 키 교환, DSS(digital signature standard), RSA(Ron Rivest-Adi Shamir-Leonard Adleman), Elgamal 또는 ECC 등의 공개 키 알고리즘을 이용하여 제2단말기(100-2)와 통신할 수 있으나, 상기 나열된 알고리즘에 한정되는 것은 아니다.
제1애플리케이션(110-1)은 제1평문(PLAIN1)을 생성할 수 있다(S810). 실시 예에 따라, 제1애플리케이션(110-1)은 제2단말기(100-2)와 통신하는 동안 제1평문(PLAIN1)을 생성할 수 있으나 이에 한정되는 것은 아니며, 제1애플리케이션(110-1)은 제2단말기(100-2)와 통신하기 전에 미리 제1평문(PLAIN1)을 생성할 수 있다.
제1애플리케이션(110-1)은 미리 생성된 제1평문(PLAIN1)을 암호화하여 제1단말기(100-1) 및/또는 제1애플리케이션(110-1)에 저장할 수 있다.
제1평문(PLAIN1)은 전송 가능한 어떠한 데이터 혹은 자원을 의미할 수 있다. 예컨대, 제1평문(PLAIN1)은 채팅에 사용되는 메시지, 전자 화폐, 암호 화폐, 미디어 파일, 전자 쿠폰, 인증서, 암호 키, 프로그램 코드, 알고리즘 또는 암호화 되지 않은 데이터 파일(file)을 의미할 수 있으나, 이에 한정되는 것은 아니며 제1평문(PLAIN1)은 모든 유형의 데이터를 의미할 수 있다. 즉, 제1단말기(100-1)의 사용자는 제1애플리케이션(110-1)를 이용하여 모든 유형의 데이터를 전송할 수 있다.
상기 전자 화폐는 전자적 방법으로 저장되고 화폐적 가치를 가지는 데이터를 의미할 수 있으나 이에 한정되는 것은 아니며, 특정 정책에 따라 사용자들 간의 거래에 사용될 수 있는 모든 유형의 데이터를 의미할 수 있다.상기 암호 화폐는 암호(cryptography)를 거래(transaction)를 안전하게 진행할 수 있도록 매개하는 화폐를 의미할 수 있으며, 상기 암호 화폐는 암호를 이용하여 생성될 수 있다. 예컨대, 상기 암호 화폐는 비트 코인(BitCoin) 또는 이더리움(Ethereum)을 의미할 수 있으나, 이에 한정되는 것이 아니다.
상기 알고리즘은 특정 작업을 수행하기 위한 여러 동작들의 모임을 의미할 수 있다. 상기 알고리즘은 프로그램 코드의 형태로 표현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 제1애플리케이션(110-1)이 제2단말기(100-2)로 상기 알고리즘을 전송한 경우, 상기 알고리즘을 수신한 제2단말기(100-2)는 상기 알고리즘에 나타난 특정 작업을 수행할 수 있다.
제1애플리케이션(110-1)은 생성된 제1평문(PLAIN1)을 암호화하여 제1암호문(CYPHER1)을 생성할 수 있다(S820). 제1암호문(CYPHER1)은 다양한 암호화 방식에 의해 생성될 수 있다.
제1애플리케이션(110-1)은 제1암호문(CYPHER1)을 제2단말기(100-2)로 전송할 수 있다(S830).
제1애플리케이션(110-1)은 제2단말기(100-2)로부터 제2암호문(CYPHER2)를 수신할 수 있다(S840). 제2단말기(100-2)는 제2평문(PLAIN2)를 생성하고 생성된 제2평문(PLAIN2)를 암호화하여 제2암호문(CYPHER2)을 생성할 수 있다.
제1애플리케이션(110-1)은 제2단말기(100-2)로부터 수신한 제2암호문(CYPHER2)를 복호화하여 제2평문(PLAIN2)을 복원(또는 생성)할 수 있다(S850).
제1애플리케이션(110-1)은 암호화된 제2암호문(CYPHER2)를 복호화하여 제2평문(PLAIN2)을 복원(또는 생성)하고, 복원된 제2평문(PLAIN2)을 단말기(100-1) 및/또는 서버(200)에 저장할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은 복원(또는 생성)된 제2평문(PLAIN2)을 다시 암호화하고, 암호화된 복원(또는 생성)된 제2평문(PLAIN2)을 제1단말기(100-1) 및/또는 서버(200)에 저장할 수 있다. 예컨대, 제1애플리케이션(110-1)은 제1평문(PLAIN1)을 암호화 하는 방식과 다른 방식으로 복원(또는 생성)된 제2평문(PLAIN2)을 다시 암호화할 수 있으나, 이에 한정되는 것은 아니다.
실시 예에 따라, 제1애플리케이션(110-1)은 상기 복원(또는 생성)된 제2평문(PLAIN2)을 제1단말기(100-1)의 디스플레이를 통해 일정 시간 출력한 후, 상기 복원(또는 생성)된 제2평문(PLAIN2)을 다시 암호화하여 제1단말기(100-1) 또는 제1애플리케이션(110-1)에 저장할 수 있다.
예컨대, 제2평문(PLAIN2)이 제2단말기(100-2)로부터 지불된(paid) 전자 화폐일 때, 제2평문(PLAIN2)은, 앞서 설명한 것처럼, 암호화된 채널을 통해 암호화되어 제2암호문(CYPHER2)로서 제1단말기(100-1)로 전송되고, 제1애플리케이션(110-1)은 제2암호문(CYPHER2)을 복호화 할 수 있다.
이 때, 제1애플리케이션(110-1)은 제2암호문(CYPHER2)을 복호화하여 복원(또는 생성된) 제2평문(PLAIN2)을 해석하고, 해석의 결과에 따라 제2단말기(100-2)에 의해 지불된 금액을 제1단말기(100-1)의 디스플레이를 통해 일정 시간 출력한 후, 제2평문(PLAIN2)을 다시 암호화하여 제1단말기(100-1) 또는 제1애플리케이션(110-1)에 저장할 수 있다.
따라서, 본 발명의 개념에 따른 실시 예에 따른 애플리케이션이 설치된 단말기는 서버에 의존하지 않고 다른 단말기와 암호화된 채널을 통해 통신을 수행할 수 있을 뿐 아니라, 상기 통신을 수행하는 동안 수신한 데이터들을 암호화하여 상기 단말기 또는 상기 애플리케이션에 저장할 수 있다.
도 12는 본 발명의 개념에 따른 실시 예에 따라, 제1애플리케이션이 제2단말기와 통신하는 방법을 설명하기 위한 데이터 처리도이다. 도 12를 참조하면, 제1애플리케이션(110-1)은 제2단말기(100-2)와 통신하기 위해 메시지 키(SK)를 생성하고, 메시지 키(SK)를 제2단말기(100-2)와 공유할 수 있다.
메시지 키(SK)는 제1단말기(100-1)가 생성하는 제1평문(PLAIN1)과 제2단말기(100-2)가 생성하는 제2평문(PLAIN2) 각각을 암호화 할 수 있는 키를 의미할 수 있다.
제1단말기(100-1)와 제2단말기(100-2)는 메시지 키(SK)를 이용하여 메시지 또는 파일을 암호화 하고, 상기 암호화된 메시지 또는 파일을 서로 공유할 수 있다. 실시 예에 따라, 메시지 키(SK)는 대칭 키(symmetric key)일 수 있다.
메시지 키(SK)는 제1애플리케이션(110-1)이 설치될 때 생성되거나, 제1애플리케이션(110-1)이 제2단말기(100-2)와 통신을 시도할 때 마다 생성될 수 있다. 예컨대, 제1애플리케이션(110-1)은 미리 설정된 시간 간격에 따라 메시지 키(SK)를 생성할 수 있다.
제1애플리케이션(110-1)은 메시지 키(SK)를 생성할 수 있다(S910). 제1애플리케이션(110-1)은 메시지 키(SK)를 암호화하고, 상기 암호화된 메시지 키를 제2단말기(100-2)로 전송할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은 제2단말기(100-2)의 제2공개 키(PBK2)를 이용하여 메시지 키(SK)를 암호화(S920)하고, 암호화된 메시지 키(PBK2_SK)를 제2단말기(100-2)로 전송(S930)할 수 있다.
제2공개 키(PBK2)는 공개 키 알고리즘(public key algorithm)에서의 공개 키(public key)를 의미할 수 있다.
제2 공개 키(PBK2)는 제2애플리케이션(110-2) 또는 서버(200)에 의해 생성될 수 있다. 실시 예에 따라, 서버(200)에 의해 생성된 제2공개 키(PBK2)는 제2단말기(100-2)로 할당될 수 있다.
제1애플리케이션(110-1)은 제2공개 키(PBK2)를 제2단말기(100-2)로부터 직접 수신할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은 서버(200)로부터 제2단말기(100-2)의 제2공개 키(PBK2)를 수신할 수 있다. 예컨대, 제2단말기(100-2)로부터 수신한 제2단말기(100-2)의 상기 제2단말 정보를 서버(200)로 전송하고, 상기 서버(200)로부터 상기 제2단말 정보에 해당하는 제2공개 키(PBK2)를 수신할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은 서버(200) 또는 제2단말기(100-2)로부터 제2공개 키(PBK2)를 수신할 때, 제2공개 키(PBK2)를 저장하고 저장된 제2공개 키(PBK2)를 이용할 수 있다.
제2공개 키(PBK2)에 기초하여 암호화된 메시지 키(PBK2_SK)를 수신한 제2단말기(100-2)는 제2단말기(100-2)의 제2비밀 키(PVK2)를 이용하여, 암호화된 메시지 키(PBK2_SK)를 복호화하여 메시지 키(SK)를 복원(또는 생성)할 수 있다(S940).
제2비밀 키(PVK2)는 공개 키 알고리즘에서의 비밀 키(private key)를 의미할 수 있다. 제2비밀 키(PVK2)는 제2공개 키(PBK2)와 대응되는 비밀 키를 의미한다. 실시 예에 따라, 제2비밀 키(PVK2)는 암호화되어 저장될 수 있다. 예컨대, 제2애플리케이션(110-2)는 제2비밀 키(PVK2)는 제2단말기(100-2)의 사용자가 설정한 암호(예컨대, PIN 번호)에 따라 암호화될 수 있다.
S910 내지 S940의 단계 후에, 제2단말기(100-2)는 메시지 키(SK)를 수신하므로, 제1애플리케이션(110-1)은 메시지 키(SK)를 이용하여 제2단말기(100-2)와 통신을 수행할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은 제2단말기(100-2)로 메시지 키(SK)의 수신 여부를 확인하는 신호를 전송할 수 있다. 예컨대, 제1애플리케이션(110-1)은 제2단말기(100-2)로 제1단말기(100-1)의 공개 키로 암호화된 메시지 키를 전송할 것을 요청할 수 있다. 제1애플리케이션(110-1)은 제2단말기(100-2)가 전송한 상기 제1단말기(100-1)의 공개 키로 암호화된 메시지 키와 제1애플리케이션(110-1)이 생성한 상기 제1단말기(100-1)의 공개 키로 암호화된 메시지 키를 비교하고, 비교 결과에 따라 메시지 키(SK)의 공유가 제대로 수행되었는지를 판단할 수 있다.
이상에서는 제1애플리케이션(110-1)이 메시지 키(SK)를 생성하고, 생성된 메시지 키(SK)를 제2단말기(100-2)의 제2공개 키(PBK2)를 이용하여 암호화하여 제2단말기(100-2)로 전송하는 방법을 설명하였으나, 실시 예에 따라 제1단말기(100-1)와 제2단말기(100-2)는 역할은 서로 바뀔 수 있다.
예컨대, 제2애플리케이션(110-2)이 제1단말기(100-1)의 제1공개 키를 이용하여 메시지 키(SK)를 암호화하여 제1단말기(100-1)로 전송하고, 제1애플리케이션(110-1)이 제1단말기(100-1)의 상기 제1공개 키에 대응하는 상기 제1비밀 키를 이용하여 상기 제1공개 키로 암호화된 메시지 키를 복호화하여 메시지 키를 생성할 수 있다.
따라서, 본 발명의 개념에 따른 실시 예에 따른 애플리케이션이 설치된 단말기는 서버에 의존하지 않고 다른 단말기와 암호화된 채널을 통해 통신을 수행할 수 있다.
도 11과 도 12에는 제1단말기(100-1)와 제2단말기(100-2)가 직접 데이터(예컨대, 메시지 키(SK) 또는 평문들(PLAIN1과 PLAIN2)를 주고받는 것이 도시되어 있으나, 본 발명의 개념에 따른 실시 예는 이에 한정되는 것이 아니다. 실시 예에 따라, 제1단말기(100-1)는 암호화된 제1암호문(CYPHER1)를 제2단말기(100-2)로 직접 전송하지 않고, 서버(200)로 전송할 수 있다. 그 후, 제2단말기(100-2)는 서버(200)로부터 암호화된 제1암호문(CYPHER1)를 수신하고, 상기 암호화된 제1암호문(CYPHER1)를 메시지 키(SK)를 이용하여 복호화할 수 있다.
도 13는 본 발명의 실시 예에 따른 애플리케이션이 상기 애플리케이션이 설치된 단말기와 통신하는 다른 단말기의 통신 패턴을 분석하는 방법을 설명하기 위한 플로우차트이다. 도 12를 참조하면, 제1애플리케이션(110-1)은 제1단말기(100-1)와 통신을 수행하는 제2단말기(100-2) 의 통신 패턴을 수집할 수 있다.
본 명세서에서 통신 패턴이라 함은 단말기들 간에 수행되는 통신들의 특정한 형태나 규칙을 의미할 수 있다.
제1애플리케이션(110-1)은 제1단말기(100-1)와 제2단말기(100-2)의 통신에 관련된 데이터들로부터 제2단말기(100-2)의 통신 패턴(CPT)을 수집(또는 생성)할 수 있다(S1010). 실시 예에 따라, 제1애플리케이션(110-1)은 제1단말기(100-1)와 제2단말기(100-2)가 통신을 수행할 때 마다, 통신 패턴(CPT)을 수집(또는 생성)할 수 있다. 예컨대, 제1단말기(100-1)와 제2단말기(100-2)가 두 번 통신을 수행했을 때, 제1애플리케이션(110-1)은 상기 두 번의 통신에 대한 통신 패턴(CPT)을 각각 생성할 수도 있고, 상기 두 번의 통신에 대한 하나의 통신 패턴(CPT)을 생성할 수도 있다.
제1애플리케이션(110-1)은 제1단말기(100-1)와 제2단말기(100-2)사이의 통신이 종료된 후 통신 패턴(CPT)을 생성(또는 수집)할 수 있으나 이에 한정되는 것은 아니며, 상기 통신이 수행되는 동안 지속적으로 통신 패턴(CPT)을 생성(또는 수집)하고 통신 패턴(CPT)을 갱신할 수 있다.
통신 패턴(CPT)은 여러 유형(type)의 패턴들을 포함할 수 있다.
실시 예에 따라, 통신 패턴(CPT)은 제1단말기(100-1)와 제2단말기(100-2)사이의 통신 시간대에 관한 패턴, 제1단말기(100-1)와 제2단말기(100-2)사이의 통신 시간에 관한 패턴, 제1단말기(100-1)와 제2단말기(100-2)의 통신 내용에 관한 패턴 및 제1단말기(100-1)와 제2단말기(100-2)사이의 통신 빈도에 관한 패턴 중 적어도 어느 하나를 포함할 수 있으나, 이에 한정되는 것은 아니다.
상기 통신 시간대에 관한 패턴은 제1단말기(100-1)와 제2단말기(100-2)가 통신을 시작한 시점(예컨대, 아침 6시)과 상기 통신을 종료한 시점(예컨대, 오후 12시)을 포함할 수 있다.
상기 통신 시간에 관한 패턴은 제1단말기(100-1)와 제2단말기(100-2)가 통신을 수행한 총 시간(예컨대, 10분)을 의미할 수 있다.
상기 통신 내용에 관한 패턴은 제1단말기(100-1)와 제2단말기(100-2)가 주고 받은 메시지의 내용(예컨대, “100,000 원 송금 바람”) 또는 파일의 종류 (예컨대, 워드 파일)을 의미할 수 있으나, 이에 한정되는 것은 아니다.
상기 통신 빈도에 관한 패턴은 기준 기간 동안 제1단말기(100-1)와 제2단말기(100-2)사이에 통신이 이루어진 횟수(예컨대, 5회 / 주)를 의미할 수 있다.제1애플리케이션(110-1)은 생성(또는 수집)된 제2단말기(100-2)의 통신 패턴(CPT)를 이용하여 제2단말기의 기준 통신 패턴(RCPT)를 생성할 수 있다(S1020). 실시 예에 따라, 기준 통신 패턴(RCPT)는 단말기들 별로 생성될 수 있다.실시 예에 따라, 제1애플리케이션(110-1)은 통신 패턴(CPT)을 분석하고, 분석 결과에 따라 기준 통신 패턴(RCPT)를 생성(또는 추출)할 수 있다.
예컨대, 제1애플리케이션(110-1)은 통신 패턴(CPT)을 통계적 기법(manner) (예컨대, 행동 분석(behavior analysis) 기법 또는 머신 러닝(machine learning) 기법)을 이용하여 분석하고, 분석 결과에 따라 기준 통신 패턴(RCPT)를 생성(또는 추출)할 수 있다.
실시 예에 따라, 기준 통신 패턴(RCPT)은 하나의 유형의 통신 패턴(CPT)에 대한 분석 결과에 따라 생성될 수 있고, 설정된 기간 동안 생성(또는 수집)된 통신 패턴(CPT)에 대한 분석 결과에 따라 생성될 수 있다.
제1애플리케이션(110-1)은 제2단말기(100-2)의 통신 패턴(CPT)과 기준 통신 패턴 (RCPT)을 비교하고, 비교 결과에 따라 제2단말기(100-2)의 통신 패턴(CPT)이, 정상인지 여부를 판단할 수 있다(S1030).
실시 예에 따라, 제1애플리케이션(110-1)은 제2단말기(100-2)의 통신 패턴(CPT)와 기준 통신 패턴 (RCPT)을 비교하고, 비교 결과에 따라 제2단말기(100-2)의 통신 패턴이 기준 통신 패턴(RCPT)으로부터 기준 범위에 있을 때, 제2단말기(100-2)의 통신 패턴(CPT)이 정상이라고 판단할 수 있다.
예컨대, 제2단말기(100-2)의 통신 패턴(CPT) 중 통신 시간대에 관한 패턴이 기준 통신 패턴(RCPT)의 통신 시간대와 다른 경우(또는 벗어난 경우), 제1애플리케이션(110-1)은 제2단말기(100-2)의 통신 패턴이 정상이 아니라고 판단할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은 제2단말기(100-2)의 통신 패턴(CPT)이 기준 통신 패턴 (RCPT)으로부터 기준 범위를 벗어난 빈도 수를 카운트하고, 카운트 값이 기준 카운트 값보다 작을 때 제2단말기(100-2)의 통신 패턴(CPT)이 정상인지 여부를 판단할 수 있다.
예컨대, 제2단말기(100-2)의 통신 시간대에 관한 기준 통신 패턴(RCPT)이 오후 3시 이고, 상기 기준 범위가 1시간이고, 상기 기준 카운트 값이 3이라고 가정하자. 제1단말기(100-1)와 제2단말기(100-2)가 오후 5시에 통신을 수행하고, 오후 6시에 통신을 수행하였다면 상기 카운트 값은 2 이고, 따라서 제2단말기(100-2)의 통신 패턴(CPT)은 정상인 것으로 판단된다.
본 명세서에서는 제2단말기(100-2)의 통신 패턴(CPT)이 정상인지 여부가 하나의 유형에 대해서 판단되는 것으로 설명되어 있으나, 이에 한정되는 것은 아니며 복수의 유형에 대해서도 판단될 수 있다. 이 때, 유형 별로 가중치(weight)가 부가될 수도 있다.
제1애플리케이션(110-1)은 상기 판단(S1030)의 결과에 따라, 제2단말기(100-2)의 통신 패턴이 정상일 때(S1030의 YES), 제2단말기(100-2)와의 통신을 유지할 수 있다(S1040). 실시 예에 따라, 제1애플리케이션은, 제2단말기(100-2)의 통신 패턴이 정상일 때(S1030의 YES), 다시 제2단말기(100-2)의 통신 패턴이 정상에서 벗어났는지 여부를 판단하는 단계(S1030)로 자동으로 진입할 수 있다. 즉, 제1애플리케이션(110-1)은 주기적으로(periodically) 또는 실시간으로(on-the-fly), 제2단말기(100-2)의 통신 패턴이 정상인지 여부를 판단할 수 있다.
제1애플리케이션(110-1)은 상기 판단(S1030)의 결과에 따라, 제2단말기(100-2)의 통신 패턴이 정상이 아닐 때(S1030의 NO), 제2단말기(100-2)와의 통신을 종료할 수 있다(S1050). 실시 예에 따라, 제1애플리케이션(110-1)은, 제2단말기(100-2)의 통신 패턴이 정상이 아닐 때(S1030의 NO), 제2단말기(100-2)의 통신 패턴이 비정상임을 지시하는 메시지를 출력하고, 제1애플리케이션(110-1)의 실행을 자동으로 종료할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은, 제2단말기(100-2)의 통신 패턴이 정상이 아닐 때(S1030의 NO), 제2단말기(100-2)로 추가 인증을 요청할지를 묻는 알림을 제1단말기(100-1)의 사용자에게 제공할 수 있다. 상기 추가 인증은 이메일(e-mail), SMS(short message service), ARS(automatic response service), 제2애플리케이션(110-2)를 통한 푸시 알람(push alarm) 또는 제1단말기(100-1)와 제2단말기(100-2) 사이의 통신 채널을 통한 인증 등으로 구현될 수 있으나 이에 한정되는 것은 아니다.
제1애플리케이션(110-1)은 상기 추가 인증 요청을 제2단말기(100-2)로 보낸 후, 상기 추가 인증이 성공적으로 수행된 경우, 제2단말기(100-2)와의 통신을 유지할 수 있다. 제1애플리케이션(110-1)은 상기 추가 인증 요청을 제2단말기(100-2)로 보낸 후, 상기 추가 인증이 실패한 경우, 제2단말기(100-2)와의 통신을 종료할 수 있다.
실시 예에 따라, 제1애플리케이션(110-1)은 제1단말기(100-1)가 제2단말기(100-2)와 통신을 수행하고 있는 중에도, 주기적 또는 실시간으로, 제1애플리케이션(110-1)의 위변조 여부를 판단할 수 있고, 제1OS(120-1)의 위변조 여부를 판단할 수 있다(도 3 내지 7을 참조하여 설명됨).
본 명세서에서는 편의상 제1단말기는 제2단말기와 통신하는 것을 가정하고 설명하였으나, 실시 예에 따라 상기 제1단말기는 상기 제2단말기뿐만 아니라, 상기 제1단말기가 통신할 수 있는 다른 단말기와도 동시에 또는 순차적으로 통신할 수 있으며, 본 발명의 개념에 따른 실시 예가 단말기의 수에 한정되는 것은 아니다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10-1, 10-2: 네트워크
100-1~100-n: 단말기
110-1~110-n: 애플리케이션
112: 보안 모듈
114: 메인 모듈
120-1~120-n: 운영 체제(OS)

Claims (17)

  1. 제1단말기에서 실행되는 제1애플리케이션에 포함된 보안 모듈이 상기 보안 모듈 자신의 위변조 여부를 스스로 판단하고, 상기 보안 모듈이 위변조되지 않았을 때 상기 제1애플리케이션에 포함된 메인 모듈의 위변조 여부를 판단하여 상기 제1애플리케이션의 위변조 여부를 판단하는 단계; 및
    상기 보안 모듈이 위변조되지 않고 상기 메인 모듈이 위변조되지 않음에 따라 상기 제1애플리케이션이 위변조되지 않았을 때, 상기 보안 모듈 자신의 위변조 여부를 스스로 판단하는 상기 제1애플리케이션에 포함된 상기 보안 모듈이 상기 제1단말기에서 실행되는 제1OS의 위변조 여부를 판단하는 단계를 포함하고,
    상기 제1애플리케이션이 위변조되었을 때 상기 제1애플리케이션이 상기 제1애플리케이션의 실행을 종료하는 애플리케이션의 작동 방법.
  2. 제1항에 있어서, 상기 제1애플리케이션의 위변조 여부를 판단하는 단계는,
    상기 제1애플리케이션이 상기 제1애플리케이션의 현재 상태를 지시하는 현재 제1APP 값을 생성하는 단계;
    상기 제1애플리케이션이 상기 현재 제1APP 값과 기준 제1APP 값을 비교하는 단계; 및
    상기 비교의 결과에 따라, 상기 현재 제1APP 값과 상기 기준 제1APP 값이 동일할 때, 상기 제1애플리케이션이 상기 제1애플리케이션을 위변조되지 않은 것으로 판단하는 단계를 포함하는 애플리케이션의 작동 방법.
  3. 제2항에 있어서, 상기 제1애플리케이션이 상기 현재 제1APP 값과 기준 제1APP 값을 비교하는 단계는,
    상기 제1애플리케이션이 상기 기준 제1APP 값을 서버로부터 수신하고, 상기 제1애플리케이션이 상기 현재 제1APP 값과 수신한 상기 기준 제1APP 값을 비교하는 단계를 포함하는 애플리케이션의 작동 방법.
  4. 제2항에 있어서,
    상기 기준 제1APP 값은 상기 현재 제1APP 값이 생성된 시점 이전에 생성되어 상기 제1애플리케이션의 이전 상태를 지시하는 이전 제1APP 값인 애플리케이션의 작동 방법.
  5. 제1항에 있어서, 상기 제1애플리케이션의 위변조 여부를 판단하는 단계는,
    상기 제1애플리케이션이 상기 제1단말기와 통신하는 제2단말기로부터 상기 제2단말기에서 실행되는 제2애플리케이션의 제2APP 버전 정보와 상기 제2애플리케이션의 상태를 지시하는 제2APP 값을 수신하는 단계;
    상기 제1애플리케이션이 상기 제1애플리케이션의 제1APP 버전 정보와 상기 제2APP 버전 정보를 비교하는 단계;
    상기 제1APP 버전 정보와 상기 제2APP 버전 정보가 동일할 때, 상기 제1애플리케이션이 상기 제1애플리케이션의 상태를 지시하는 제1APP 값과 상기 제2APP 값을 비교하는 단계; 및
    상기 제1APP 값과 상기 제2APP 값이 동일할 때, 상기 제1애플리케이션이 상기 제1애플리케이션을 위변조되지 않은 것으로 판단하는 단계를 포함하는 애플리케이션의 작동 방법.
  6. 제1항에 있어서, 상기 제1OS의 위변조 여부를 판단하는 단계는,
    상기 제1애플리케이션이, 상기 제1OS로 루트 권한 실행 명령을 전송하는 단계;
    상기 제1애플리케이션이 상기 루트 권한 실행의 거부를 지시하는 제1응답을 수신했을 때, 상기 제1OS를 위변조되지 않은 것으로 판단하는 단계를 포함하는 애플리케이션의 작동 방법.
  7. 제1항에 있어서, 상기 제1OS의 위변조를 판단하는 단계는,
    상기 제1애플리케이션이 상기 제1OS의 현재 상태를 지시하는 현재 OS 값을 생성하는 단계;
    상기 제1애플리케이션이 상기 현재 OS 값과, 기준 OS 값을 비교하는 단계; 및
    상기 비교의 결과에 따라, 상기 현재 OS 값과 상기 기준 OS 값이 동일할 때, 상기 제1애플리케이션이 상기 제1OS를 위변조되지 않은 것으로 판단하는 단계를 포함하는 애플리케이션의 작동 방법.
  8. 제7항에 있어서, 상기 제1애플리케이션이 상기 현재 OS 값과 기준 OS 값을 비교하는 단계는,
    상기 제1애플리케이션이 상기 기준 OS 값을 서버로부터 수신하고, 상기 제1애플리케이션이 상기 현재 OS 값과 수신한 상기 기준 OS 값을 비교하는 단계를 포함하는 애플리케이션의 작동 방법.
  9. 제7항에 있어서,
    상기 기준 OS 값은 상기 현재 OS 값이 생성된 시점 이전에 생성되어 상기 제1OS의 이전 상태를 지시하는 이전 OS 값인 애플리케이션의 작동 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 기재된 상기 애플리케이션의 작동 방법을 수행하기 위하여 매체에 저장된 프로그램.
  11. 프로세서; 및
    상기 프로세서와 연동된 메모리를 포함하고,
    상기 메모리는 제1항 내지 제9항 중 어느 한 항에 기재된 상기 애플리케이션의 작동 방법을 수행하기 위한 프로그램을 저장하는 컴퓨터 시스템.
  12. 제1단말기에서 실행되는 제1애플리케이션에 포함된 보안 모듈이 상기 보안 모듈 자신의 위변조 여부를 스스로 판단하고, 상기 보안 모듈이 위변조되지 않았을 때 상기 제1애플리케이션에 포함된 메인 모듈의 위변조 여부를 판단하여 상기 제1애플리케이션의 위변조 여부를 판단하는 단계;
    상기 보안 모듈이 위변조되지 않고 상기 메인 모듈이 위변조되지 않음에 따라 상기 제1애플리케이션이 위변조되지 않았을 때, 상기 제1애플리케이션의 상기 보안 모듈이 상기 제1단말기에서 실행되는 제1OS의 위변조 여부를 판단하는 단계; 및
    상기 보안 모듈이 위변조되지 않고 상기 메인 모듈이 위변조되지 않고 상기 제1OS가 위변조되지 않았을 때, 상기 제1애플리케이션의 상기 보안 모듈이, 상기 제1단말기와 통신하는 제2단말기에서 실행되는 제2애플리케이션의 위변조 여부를 판단하여, 상기 제2단말기를 검증하는 단계를 포함하고,
    상기 제1애플리케이션이 위변조되었을 때 상기 제1애플리케이션이 상기 제1애플리케이션의 실행을 종료하는 애플리케이션의 작동 방법.
  13. 제12항에 있어서, 상기 제2단말기를 검증하는 단계는,
    상기 제1애플리케이션이 상기 제2단말기로부터 상기 제2애플리케이션의 제2APP 버전 정보와 상기 제2애플리케이션의 상태를 지시하는 제2APP 값을 수신하는 단계;
    상기 제1애플리케이션이 상기 제1애플리케이션의 제1APP 버전 정보와 상기 제2APP 버전 정보를 비교하는 단계;
    상기 제1APP 버전 정보와 상기 제2APP 버전 정보가 동일할 때, 상기 제1애플리케이션이 상기 제1애플리케이션의 상태를 지시하는 제1APP 값과 상기 제2APP 값을 비교하는 단계; 및
    상기 제1APP 값과 상기 제2APP 값이 동일할 때, 상기 제1애플리케이션이, 상기 제2애플리케이션을 위변조되지 않은 것으로 판단하고, 상기 제2단말기를 검증하는 단계를 포함하는 애플리케이션의 작동 방법.
  14. 제13항에 있어서, 상기 제2단말기를 검증하는 단계는,
    상기 제1APP 버전 정보와 상기 제2APP 버전 정보가 동일하지 않을 때, 상기 제1애플리케이션이 상기 제1단말기에 저장된 상기 제2APP 버전 정보에 해당하는 기준 제2APP 값을 검색하고, 검색된 상기 기준 제2APP 값과 상기 제2APP 값을 비교하는 단계; 및
    상기 기준 제2APP 값과 상기 제2APP 값이 동일할 때, 상기 제1애플리케이션이 상기 제2애플리케이션을 위변조되지 않은 것으로 판단하고, 상기 제2단말기를 검증하는 단계를 포함하는 애플리케이션의 작동 방법.
  15. 제13항에 있어서, 상기 제2단말기를 검증하는 단계는,
    상기 제1APP 버전 정보와 상기 제2APP 버전 정보가 동일하지 않을 때, 상기 제1애플리케이션이 상기 제2APP 버전 정보를 서버로 전송하는 단계;
    상기 제1애플리케이션이 상기 제2APP 버전 정보에 해당하는 기준 제2APP 값을 상기 서버로부터 수신하는 단계; 및
    상기 기준 제2APP 값과 상기 제2APP 값이 동일할 때, 상기 제1애플리케이션이 상기 제2애플리케이션을 위변조되지 않은 것으로 판단하는 단계를 더 포함하는 애플리케이션의 작동 방법.
  16. 삭제
  17. 삭제
KR1020190007975A 2019-01-22 2019-01-22 보안 기능을 수행하는 애플리케이션의 작동 방법과 상응하는 애플리케이션 KR102101614B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190007975A KR102101614B1 (ko) 2019-01-22 2019-01-22 보안 기능을 수행하는 애플리케이션의 작동 방법과 상응하는 애플리케이션

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190007975A KR102101614B1 (ko) 2019-01-22 2019-01-22 보안 기능을 수행하는 애플리케이션의 작동 방법과 상응하는 애플리케이션

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020160149064A Division KR101951201B1 (ko) 2016-11-09 2016-11-09 보안 기능을 수행하는 애플리케이션의 작동 방법과 상응하는 애플리케이션

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020200041896A Division KR102180691B1 (ko) 2020-04-07 2020-04-07 보안 기능을 수행하는 기록 매체에 저장된 애플리케이션과 전자 장치

Publications (2)

Publication Number Publication Date
KR20190009825A KR20190009825A (ko) 2019-01-29
KR102101614B1 true KR102101614B1 (ko) 2020-04-17

Family

ID=65323278

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190007975A KR102101614B1 (ko) 2019-01-22 2019-01-22 보안 기능을 수행하는 애플리케이션의 작동 방법과 상응하는 애플리케이션

Country Status (1)

Country Link
KR (1) KR102101614B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101575021B1 (ko) * 2015-08-20 2015-12-08 국방과학연구소 무결성 검증을 수행하는 이동 단말기 및 그 제어방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782420B2 (en) * 2011-07-22 2014-07-15 Netflix, Inc System and method for obfuscation initiation values of a cryptography protocol
KR101297936B1 (ko) 2012-06-08 2013-08-19 가톨릭대학교 산학협력단 단말기 간의 보안 통신 방법 및 그 장치
KR101591503B1 (ko) * 2014-02-19 2016-02-03 주식회사 테르텐 자기 방어 보안 모듈을 포함하는 패키지 애플리케이션의 동작 방법, 및 컴퓨터로 읽을 수 있는 기록 매체

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101575021B1 (ko) * 2015-08-20 2015-12-08 국방과학연구소 무결성 검증을 수행하는 이동 단말기 및 그 제어방법

Also Published As

Publication number Publication date
KR20190009825A (ko) 2019-01-29

Similar Documents

Publication Publication Date Title
US11877213B2 (en) Methods and systems for asset obfuscation
CN111738859B (zh) 区块链一体机及区块链网络
JP6524347B2 (ja) 情報共有システム
CN110417750B (zh) 基于区块链技术的文件读取和存储的方法、终端设备和存储介质
CN107111500B (zh) 应用库的无线储备
KR102205654B1 (ko) 분산 환경에서의 신원 인증 방법
JP5100286B2 (ja) 暗号モジュール選定装置およびプログラム
CN111541553B (zh) 区块链一体机的可信启动方法及装置
CN112491812B (zh) 区块链一体机的哈希更新方法及装置
US9559737B2 (en) Telecommunications chip card
CN114553439A (zh) 基于身份信息的加密密钥管理
CN113676328A (zh) 用于交换密钥信息的设计
KR102180691B1 (ko) 보안 기능을 수행하는 기록 매체에 저장된 애플리케이션과 전자 장치
US20230244797A1 (en) Data processing method and apparatus, electronic device, and medium
KR102572834B1 (ko) 서명 가능 컨트랙트를 이용하여 블록체인에서 생성된 데이터를 인증하는 방법 및 시스템
KR101951201B1 (ko) 보안 기능을 수행하는 애플리케이션의 작동 방법과 상응하는 애플리케이션
KR102101614B1 (ko) 보안 기능을 수행하는 애플리케이션의 작동 방법과 상응하는 애플리케이션
JP2022523068A (ja) 安全な電子データ転送のためのシステムと方法
TWI655550B (zh) 資料轉發系統
KR20180024389A (ko) 키 관리 장치 및 방법
JP6939313B2 (ja) 分散認証システム
CN113536388B (zh) 一种基于区块链的数据共享方法及系统
EP3657751A1 (en) Private key cloud storage
US20240064004A1 (en) Parallel secret salt generation and authentication for encrypted communication
US20230421396A1 (en) Systems and methods for performing two-tiered multi-party computation signing procedures to perform blockchain operations

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
A107 Divisional application of patent