WO2018052166A1 - Device and method for verifying application - Google Patents

Device and method for verifying application Download PDF

Info

Publication number
WO2018052166A1
WO2018052166A1 PCT/KR2016/013760 KR2016013760W WO2018052166A1 WO 2018052166 A1 WO2018052166 A1 WO 2018052166A1 KR 2016013760 W KR2016013760 W KR 2016013760W WO 2018052166 A1 WO2018052166 A1 WO 2018052166A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
hash
application
memory
loaded
Prior art date
Application number
PCT/KR2016/013760
Other languages
French (fr)
Korean (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 US16/332,652 priority Critical patent/US11281778B2/en
Publication of WO2018052166A1 publication Critical patent/WO2018052166A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Definitions

  • the user can install the application on the device and execute the application.
  • An application is created by a service provider that produces and provides content.
  • An application executed by the user may be hacked. Therefore, it is necessary to verify that the application has been hacked.
  • the device may directly verify whether the application has been hacked or may verify whether the application has been hacked through the security server.
  • An apparatus and method for verifying an application are provided.
  • the present invention also provides a computer-readable recording medium having recorded thereon a program for executing the method on a computer.
  • a method of verifying an application may include: storing an application code; Loading some of the application code into a memory; And verifying the application by using the code loaded in the memory.
  • FIG. 1 is a diagram illustrating a system for providing content according to an exemplary embodiment.
  • FIG. 2 is a diagram illustrating a system for providing content according to an exemplary embodiment.
  • FIG. 3 is a diagram illustrating a system for providing content according to an exemplary embodiment.
  • FIG. 4 is a diagram for describing a form in which application code is used.
  • FIG. 5 is a diagram for describing a method of verifying an application by using a code loaded in a physical memory, according to an exemplary embodiment.
  • FIG. 6 is a diagram for describing a method of generating an entire hash, according to an exemplary embodiment.
  • FIG. 7 is a diagram for describing a method of generating an entire hash, according to an exemplary embodiment.
  • FIG. 8 is a diagram for describing a method of generating an entire hash, according to an exemplary embodiment.
  • FIG. 9 is a diagram for describing a method of generating an entire hash, according to an exemplary embodiment.
  • FIG. 10 is a block diagram illustrating a device according to an exemplary embodiment.
  • 11 is a flowchart illustrating a method of verifying an application according to an embodiment.
  • a device may include a disk storing an application code; Memory; And a processor, wherein the processor loads a part of the application code into the memory and verifies the application using the code loaded in the memory.
  • first and second may be used to describe various components, but the components should not be limited by these terms. These terms are used to distinguish one component from another.
  • Some embodiments of the present disclosure may be represented by functional block configurations and various processing steps. Some or all of these functional blocks may be implemented in various numbers of hardware and / or software configurations that perform particular functions.
  • the functional blocks of the present disclosure may be implemented by one or more microprocessors or by circuit configurations for a given function.
  • the functional blocks of the present disclosure may be implemented in various programming or scripting languages.
  • the functional blocks may be implemented in algorithms running on one or more processors.
  • the present disclosure may employ the prior art for electronic configuration, signal processing, and / or data processing. Terms such as “mechanism”, “element”, “means” and “configuration” may be used widely and are not limited to mechanical and physical configurations.
  • connecting lines or connecting members between the components shown in the drawings are merely illustrative of functional connections and / or physical or circuit connections. In an actual device, the connections between components may be represented by various functional connections, physical connections, or circuit connections that are replaceable or added.
  • FIG. 1 is a diagram illustrating a system for providing content according to an exemplary embodiment.
  • the device 10 verifies an application
  • the content providing server 30 receives a verification result from the security server 20.
  • the content providing server 30 may provide the content to the device 10 according to the verification result.
  • Verifying an application refers to determining whether the application has been forged or tampered with. In other words, verifying the application indicates whether the application produced by the content providing server 30 and the application executed in the device 10 are the same.
  • the device 10 executes an application.
  • the user may select content using an application.
  • the device 10 requests the content providing server 30 for the content selected by the user.
  • the content providing server 30 does not provide the content until the verification result of the application is received.
  • the content providing server 30 may provide only a part of the content until the verification result of the application is received.
  • the device 10 verifies the application.
  • the device 10 may verify the application by using the application code loaded in the memory.
  • the application code is stored in the disk (or storage)
  • the application code is not forged or modulated
  • the application code loaded in the memory may be forged or modulated.
  • the device 10 may verify whether the application is forged or modulated by comparing the application code loaded in the memory with the original code.
  • the original code can be stored on disk or in a safe area. How the device 10 verifies an application is described in detail below.
  • the device 10 transmits the result of verifying the application to the security server 20.
  • the device 10 may transmit a sign.
  • the sign is information shared only by the device 10 and the security server 20.
  • the sign may be a secret key shared only by the device 10 and the security server 20.
  • the security server 20 may verify the signature and trust the verification result received from the device 10. In other words, if the signature is forged or tampered, the security server 20 does not trust the verification result of the application received from the device 10.
  • the device 10 is an electronic device capable of installing and executing an application such as a TV, a mobile device (mobile phone, tablet, etc.), a wearable device (smart watch, etc.) and a PC.
  • the application may be a program designed to perform a specific function.
  • the application may be a program for receiving content from the content providing server 30 and playing the content.
  • the security server 20 transmits an authentication result to the content providing server 30.
  • the authentication result includes the verification result of the application and the verification result of the signature. If both the verification result of the application and the verification result of the sign are normal, the security server 20 authenticates the integrity of the application. If any of the verification result of the application and the verification result of the signature are not normal, the security server 20 determines that the application is forged or forged.
  • the content providing server 30 provides the content to the device 10 according to the authentication result received from the security server 20.
  • the content providing server 30 provides the content to the device 10 only when the application is not forged or tampered with.
  • FIG. 2 is a diagram illustrating a system for providing content according to an exemplary embodiment.
  • the security server 20 verifies an application
  • the content providing server 30 may provide content to the device 10 according to the verification result.
  • the device 10 executes an application.
  • the user may select content using an application.
  • the device 10 requests the content providing server 30 for the content selected by the user.
  • the device 10 generates verification data.
  • Verification data is generated using application code loaded into memory.
  • the verification data can be application code loaded into memory.
  • the device 10 may generate a hash using application code loaded in the memory, and the generated hash may be used as verification data.
  • the device 10 may generate a hash using some of the application code loaded in the memory.
  • the device 10 may generate a hash by using the application code loaded in the memory and the application code stored in the disk.
  • the device 10 transmits the verification data to the security server 20.
  • the device 10 generates a hash and transmits the generated hash to the security server 20 as verification data.
  • the device 10 may transmit the application code loaded in the memory to the security server 20 as verification data.
  • the device 10 may combine the application code loaded in the memory and the code stored in the disk to transmit the hash of the entire code to the security server 20 as verification data.
  • the security server 20 verifies the application using the verification data.
  • the security server 20 stores the code of the application or the code when the application is loaded into the memory.
  • the code stored by the security server 20 is a code that has not been forged or tampered with.
  • the security server 20 may determine whether the verification data is forged or tampered with the stored code. For example, the security server 20 may generate a hash of the code stored in the security server 20, and compare the hash generated by the security server 20 with the hash received from the device 10.
  • the security server 20 verifies the signature.
  • the security server 20 verifies the signature received from the device 10 to verify the authenticity of the verification data received from the device 10.
  • the security server 20 transmits the authentication result to the content providing server 30.
  • the security server 20 transmits the authentication result to the content providing server 30 according to the verification result of the application and the verification result of the sign.
  • the content providing server 30 provides the content to the device 10 according to the authentication result received from the security server 20.
  • the content providing server 30 provides the content to the device 10 only when the application is not forged or tampered with.
  • 3 is a diagram illustrating a system for providing content according to an exemplary embodiment.
  • the content providing server 30 may verify an application, and the content providing server 30 may provide content to the device 10 according to the verification result.
  • the device 10 executes an application.
  • the user may select content using an application.
  • the device 10 requests the content providing server 30 for the content selected by the user.
  • the device 10 generates verification data using the application code loaded in the memory.
  • the device 10 transmits the verification data to the security server 20.
  • the device 10 sends the signature to the security server 20 together with the verification data.
  • the security server 20 verifies the signature.
  • the security server 20 does not verify the verification data, but verifies only the signature.
  • the security server 20 transmits the verification result of the sign and the verification data to the content providing server 30.
  • the content providing server 30 verifies the application executed in the device 10 using the verification data.
  • the content providing server 30 may verify the application only when the verification result of the sign is normal. If the verification result of the signature is not normal, the content providing server 30 does not trust the integrity of the verification data, and the content providing server 30 does not provide the content to the device 10.
  • the content providing server 30 compares the verification data with the application code stored in the content providing server 30 to verify the application executed in the device 10.
  • FIG. 4 is a diagram for describing a form in which application code is used.
  • the device 10 may download the application code, and the downloaded application code is stored in the disk 100.
  • the application code may be loaded into the virtual memory 200.
  • the virtual memory 200 is allocated to a processor executing an application.
  • Some of the application code is loaded into the physical memory 300. Since the space of the physical memory 300 is limited, the entire application code is not loaded into the physical memory 300, and only the application code being used is loaded into the physical memory 300.
  • the application code may be forged or modulated when stored in the disk 100, and the code loaded in the physical memory 300 may be forged or modulated.
  • the device 10 may verify the code stored in the disk 100 and the code loaded in the physical memory 300.
  • FIG. 5 is a diagram for describing a method of verifying an application by using a code loaded in a physical memory, according to an exemplary embodiment.
  • the application code may include first to fifth codes.
  • the first through fifth codes each represent a part of the application code.
  • the first code, the third code, and the fifth code may be loaded into the physical memory 300.
  • the location of the physical memory 300 loaded with each code may be tracked using a Loadable Kernel Module (LKM).
  • LLM Loadable Kernel Module
  • the first code, the third code, and the fifth code may be forged or modulated when loaded into the physical memory 300.
  • the first code loaded in the physical memory 300 may be a modulated code.
  • the device 10 may verify the application using the first code, the third code, and the fifth code. For example, the device 10 verifies whether the first code is forged or modulated. In addition, the device 10 may verify whether the first code, the third code, and the fifth code are forged or modulated. The first code, the third code and the fifth code may be used as verification data and may be transmitted to the security server 20.
  • the device 10 may generate the entire hash 610 using a hash of code stored in the disk 100 and a hash of code loaded in the physical memory 300.
  • the entire application code includes the first to fifth codes.
  • the first code, the third code, and the fifth code are loaded in the physical memory 300, and the entire application code is stored in the disk 100.
  • the device 10 generates a first hash for the first code from the physical memory 300, generates a third hash for the third code, and generates a fifth hash for the fifth code.
  • the device 10 reads the second code from the disk 100 to generate a second hash for the second code.
  • the device 10 reads the fourth code from the disk 100 to generate a fourth hash for the fourth code.
  • the device 10 combines (or connects) the first through fifth hashes in order to generate the entire hash 610.
  • the entire hash 610 may be used as verification data.
  • the entire hash 610 may be verified by the device 10 or transmitted to the security server 20.
  • the device 10 may verify the original hash 610 by generating the original hash from the application code stored in the safe area and comparing the original hash with the entire hash 610.
  • the original hash may be generated in the same way as the full hash 610.
  • the device 10 may generate the entire hash 720 by using the code stored in the disk 100 and the code loaded in the physical memory 300.
  • the entire application code includes the first to fifth codes.
  • the first code, the third code, and the fifth code are loaded in the physical memory 300, and the entire application code is stored in the disk 100.
  • the device 10 reads the first code, the third code, and the fifth code from the physical memory 300, and reads the second code and the fourth code from the disk 100.
  • the device combines the read first through fifth codes to generate a full code 710 and generates a full hash 720 for the full code 710.
  • the entire hash 720 may be verified by the device 10 or transmitted to the security server 20.
  • the device 10 may verify the original hash 720 by generating the original hash from the application code stored in the safe area, comparing the original hash with the entire hash 720.
  • the original hash may be generated in the same way as the full hash 720.
  • the device 10 may generate the entire hash 810 using only the code loaded in the physical memory 300.
  • the device 10 may store the first hash for the first code, the third hash for the third code, and the fifth code. Generate a fifth hash for.
  • the device 10 combines the first hash, the third hash, and the fifth hash to generate an overall hash 810.
  • the entire hash 810 may be used as verification data.
  • FIG. 9 is a diagram for describing a method of generating an entire hash, according to an exemplary embodiment.
  • the device 10 may generate the entire hash 910 using only the code loaded in the physical memory 300.
  • the device 10 When the first code, the third code, and the fifth code are loaded in the physical memory 300, the device 10 generates a code combining the first code, the third code, and the fifth code, and generates the code. Generate a full hash 910 for the. In FIG. 8, the hashes generated after generating the hash for each code are combined. In FIG. 9, the entire hash 910 for the code combining the respective codes (the entire code combining the first code, the third code, and the fifth code) is shown. )
  • the device 1000 includes a processor 1010, a disk 1020, and a memory 1030.
  • the processor 1010 controls the disk 1020 and the memory 1030.
  • the processor 1010 may store or read data on the disk 1020.
  • the processor 1010 may load data stored in the disk 1020 into the memory 1030.
  • the data may be a program, application code, or the like.
  • the processor 1010 loads the data into the memory 1030 to use the data stored in the disk 1020.
  • the processor 1010 may load only necessary data from the data stored in the disk 1020 into the memory 1030.
  • the processor 1010 may verify data stored in the disk 1020.
  • the processor 1010 may compare the data stored in the safe area with the data stored in the disk 1020.
  • the device 1000 may use a partial area or a separate space of the disk 1020 as a safe area.
  • the processor 1010 may verify data loaded in the memory 1030.
  • the processor 1010 may verify only data loaded in the memory 1030 or only a part of data loaded in the memory 1030.
  • the processor 1010 may verify the combined data by combining the data loaded in the memory 1030 and the data stored in the disk 1020.
  • the processor 1010 may generate a hash of the data and verify the data using the hash.
  • the processor 1010 may compare the data loaded in the memory 1030 with the data stored in the safe area.
  • the device 1000 may transmit data loaded in the memory 1030 to an external server.
  • the external server may verify the received data by comparing the data received from the device 1000 with the original data.
  • the disk 1020 stores data.
  • the specific area of the disk 1020 may be a safe area.
  • the disk 1020 may be a nonvolatile memory.
  • the memory 1030 may store data to be executed.
  • the processor 1010 may load data stored in the disk 1020 into the memory 1030.
  • the memory 1030 may be a volatile memory.
  • 11 is a flowchart illustrating a method of verifying an application according to an embodiment.
  • the processor 1010 stores the application code on the disk 1020.
  • the processor 1010 may store the application code in the disk 1020 and the safe area.
  • Application code may be received from an external server.
  • the safe area may be set in a partial area of the disk 1020 or a specific area inside the device 1000.
  • the processor 1010 loads some of the application code into the memory 1030.
  • the processor 1010 loads only necessary codes among the application codes into the memory 1030.
  • the processor 1010 verifies the application using the code loaded in the memory 1030.
  • the processor 1010 may compare the code stored in the disk 1020 with the code loaded in the memory 1030.
  • the processor 1010 may generate various types of hashes. For example, the processor 1010 reads code not loaded into the memory 1030 from the disk 1020, and generates a hash (hash A) of the read code and the code loaded into the memory 1030. Processor 1010 generates hash B corresponding to hash A. The processor 1010 generates a hash (hash B) of the application code stored in the disk 1020. The method for generating hash A is illustrated in FIGS. 6 and 7. The entire hash 610 or the entire hash 720 may be hash A.
  • the processor 1010 generates a hash (hash C) using only code loaded in the memory 1030.
  • the processor 1010 generates a hash (hash D) using only codes corresponding to codes loaded in the memory 1030 among application codes stored in the disk 1020.
  • the method for generating the hash C is shown in FIGS. 8 and 9.
  • the entire hash 810 or the entire hash 910 may be hash C.
  • the processor 1010 generates a hash (hash E) using only some codes (first codes) among codes loaded in the memory 1030.
  • the processor 1010 generates a hash (hash F) using only the code corresponding to the first code among the application codes stored in the disk 1020.
  • the device may verify an application code by verifying a code loaded in a memory.
  • the device may transmit the code loaded in the memory to the security server, and the security server may verify the code loaded in the memory.
  • the above-described embodiments can be written as a program that can be executed in a computer, and can be implemented in a general-purpose digital computer which operates the program using a computer-readable medium.
  • the structure of the data used in the above-described embodiment can be recorded on the computer-readable medium through various means.
  • the above-described embodiments may be implemented in the form of a recording medium including instructions executable by a computer, such as a program module executed by a computer.
  • methods implemented with a software module or algorithm may be stored on a computer readable recording medium as code or program instructions that the computer can read and execute.
  • Computer readable media can be any recording media that can be accessed by a computer, and can include volatile and nonvolatile media, removable and non-removable media.
  • computer readable media may include storage media such as magnetic storage media (eg, ROM, floppy disk, hard disk, etc.) and optical reading media (eg, CD-ROM, DVD, etc.) This is not restrictive.
  • the computer readable medium may include computer storage media and communication media.
  • a plurality of computer-readable recording media may be distributed in networked computer systems, and data (eg, program instructions and codes) stored in the distributed recording media may be executed by at least one computer. have.
  • ... unit refers to a unit for processing at least one function or operation, which may be implemented in hardware or software, or a combination of hardware and software.
  • the "unit” and “module” may be implemented by a program stored in a storage medium that can be addressed and executed by a processor.
  • module means components such as software components, object-oriented software components, class components, and task components, and processes, functions, properties, and pro- grams. It can be implemented by procedures, subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays and variables.

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)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

The method for verifying an application according to one embodiment comprises the steps of: storing an application code; loading a portion of the application code in a memory; and verifying the application using the code loaded in the memory.

Description

어플리케이션을 검증하는 디바이스 및 방법Devices and Methods for Validating Applications
어플리케이션을 검증하는 장치 및 방법에 관한 것이다.An apparatus and method for verifying an application are described.
사용자는 디바이스에 어플리케이션을 설치하고, 어플리케이션을 실행할 수 있다. 어플리케이션은 컨텐츠를 제작 및 제공하는 서비스 제공자에 의해 생성된다. 사용자가 실행하는 어플리케이션은 해킹될 수 있다. 따라서, 어플리케이션이 해킹 되었는지를 검증(verify)하는 것이 필요하다.The user can install the application on the device and execute the application. An application is created by a service provider that produces and provides content. An application executed by the user may be hacked. Therefore, it is necessary to verify that the application has been hacked.
디바이스는 직접 어플리케이션의 해킹 여부를 검증할 수도 있으며, 보안 서버를 통해 어플리케이션의 해킹 여부를 검증할 수도 있다. The device may directly verify whether the application has been hacked or may verify whether the application has been hacked through the security server.
어플리케이션을 검증하는 장치 및 방법을 제공하는데 있다.An apparatus and method for verifying an application are provided.
또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.The present invention also provides a computer-readable recording medium having recorded thereon a program for executing the method on a computer.
일 실시 예에 따른 어플리케이션을 검증하는 방법은, 어플리케이션 코드를 저장하는 단계; 상기 어플리케이션 코드 중 일부를 메모리에 로딩하는 단계; 및 상기 메모리에 로딩된 코드를 이용하여 상기 어플리케이션을 검증하는 단계;를 포함한다.According to an embodiment, a method of verifying an application may include: storing an application code; Loading some of the application code into a memory; And verifying the application by using the code loaded in the memory.
도 1은 일 실시 예에 따른 컨텐츠를 제공하는 시스템을 설명하기 위한 도면이다.1 is a diagram illustrating a system for providing content according to an exemplary embodiment.
도 2는 일 실시 예에 따른 컨텐츠를 제공하는 시스템을 설명하기 위한 도면이다.2 is a diagram illustrating a system for providing content according to an exemplary embodiment.
도 3은 일 실시 예에 따른 컨텐츠를 제공하는 시스템을 설명하기 위한 도면이다. 3 is a diagram illustrating a system for providing content according to an exemplary embodiment.
도 4는 어플리케이션 코드가 이용되는 형태를 설명하기 위한 도면이다. 4 is a diagram for describing a form in which application code is used.
도 5는 일 실시 예에 따라 물리 메모리에 로딩된 코드를 이용하여 어플리케이션을 검증하는 방법을 설명하기 위한 도면이다.5 is a diagram for describing a method of verifying an application by using a code loaded in a physical memory, according to an exemplary embodiment.
도 6은 일 실시 예에 따라 전체 해쉬를 생성하는 방법을 설명하기 위한 도면이다. 6 is a diagram for describing a method of generating an entire hash, according to an exemplary embodiment.
도 7은 일 실시 예에 따라 전체 해쉬를 생성하는 방법을 설명하기 위한 도면이다.7 is a diagram for describing a method of generating an entire hash, according to an exemplary embodiment.
도 8은 일 실시 예에 따라 전체 해쉬를 생성하는 방법을 설명하기 위한 도면이다. 8 is a diagram for describing a method of generating an entire hash, according to an exemplary embodiment.
도 9는 일 실시 예에 따라 전체 해쉬를 생성하는 방법을 설명하기 위한 도면이다.9 is a diagram for describing a method of generating an entire hash, according to an exemplary embodiment.
도 10은 일 실시 예에 따른 디바이스를 설명하기 위한 블록도이다.10 is a block diagram illustrating a device according to an exemplary embodiment.
도 11은 일 실시 예에 다른 어플리케이션을 검증하는 방법을 설명하기 위한 순서도이다. 11 is a flowchart illustrating a method of verifying an application according to an embodiment.
일 실시 예에 따른 디바이스는, 어플리케이션 코드를 저장하는 디스크; 메모리; 및 프로세서를 포함하고, 상기 프로세서는 상기 어플리케이션 코드 중 일부를 상기 메모리에 로딩하고, 상기 메모리에 로딩된 코드를 이용하여 상기 어플리케이션을 검증하는 단계;를 포함한다.According to an embodiment, a device may include a disk storing an application code; Memory; And a processor, wherein the processor loads a part of the application code into the memory and verifies the application using the code loaded in the memory.
아래에서는 첨부한 도면을 참조하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 개시의 실시예를 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 또한, 도면에서 본 개시를 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다. Hereinafter, exemplary embodiments of the present disclosure will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present disclosure. As those skilled in the art would realize, the described embodiments may be modified in various different ways, all without departing from the spirit or scope of the present invention. In addition, in order to clearly describe the present disclosure in the drawings, irrelevant parts are omitted, and like reference numerals designate like parts throughout the specification.
본 개시에서 사용되는 용어는, 본 개시에서 언급되는 기능을 고려하여 현재 사용되는 일반적인 용어로 기재되었으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 다양한 다른 용어를 의미할 수 있다. 따라서 본 개시에서 사용되는 용어는 용어의 명칭만으로 해석되어서는 안되며, 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 해석되어야 한다.The terms used in the present disclosure are described as general terms currently used in consideration of the functions mentioned in the present disclosure, but they may mean various other terms according to the intention or precedent of a person skilled in the art, the emergence of new technologies, and the like. Can be. Therefore, the terms used in the present disclosure should not be interpreted only by the names of the terms, but should be interpreted based on the meanings of the terms and the contents throughout the present disclosure.
또한, 제1, 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 이 용어들에 의해 한정되어서는 안 된다. 이 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용된다. Also, terms such as first and second may be used to describe various components, but the components should not be limited by these terms. These terms are used to distinguish one component from another.
또한, 본 개시에서 사용된 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것이며, 본 개시를 한정하려는 의도로 사용되는 것이 아니다. 단수의 표현은 문맥상 명백하게 단수를 뜻하지 않는 한, 복수의 의미를 포함한다. 또한, 명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다. Also, the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the present disclosure. Expression in the singular includes the plural unless the context clearly indicates the singular. In addition, throughout the specification, when a part is "connected" to another part, it is not only "directly connected", but also "electrically connected" between other elements in between. Include. In addition, when a part is said to "include" a certain component, this means that it may further include other components, without excluding other components unless otherwise stated.
본 명세서(특히, 특허 청구 범위에서)에서 사용된 “상기” 및 이와 유사한 지시어는 단수 및 복수 모두를 지시하는 것일 수 있다. 또한, 본 개시에 따른 방법을 설명하는 단계들의 순서를 명백하게 지정하는 기재가 없다면, 기재된 단계들은 적당한 순서로 행해질 수 있다. 기재된 단계들의 기재 순서에 따라 본 개시가 한정되는 것은 아니다.As used in this specification (in particular, in the claims), “the” and the like may be used to indicate both the singular and the plural. In addition, if there is no description explicitly specifying the order of steps describing the method according to the present disclosure, the described steps may be performed in a suitable order. The present disclosure is not limited to the order of description of the described steps.
본 명세서에서 다양한 곳에 등장하는 "일부 실시예에서" 또는 "일 실시예에서" 등의 어구는 반드시 모두 동일한 실시예를 가리키는 것은 아니다.The phrases “in some embodiments” or “in one embodiment” appearing in various places in the specification are not necessarily all referring to the same embodiment.
본 개시의 일부 실시예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들의 일부 또는 전부는, 특정 기능들을 실행하는 다양한 개수의 하드웨어 및/또는 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 개시의 기능 블록들은 하나 이상의 마이크로프로세서들에 의해 구현되거나, 소정의 기능을 위한 회로 구성들에 의해 구현될 수 있다. 또한, 예를 들어, 본 개시의 기능 블록들은 다양한 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능 블록들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 개시는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단” 및 “구성”등과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다.Some embodiments of the present disclosure may be represented by functional block configurations and various processing steps. Some or all of these functional blocks may be implemented in various numbers of hardware and / or software configurations that perform particular functions. For example, the functional blocks of the present disclosure may be implemented by one or more microprocessors or by circuit configurations for a given function. In addition, for example, the functional blocks of the present disclosure may be implemented in various programming or scripting languages. The functional blocks may be implemented in algorithms running on one or more processors. In addition, the present disclosure may employ the prior art for electronic configuration, signal processing, and / or data processing. Terms such as "mechanism", "element", "means" and "configuration" may be used widely and are not limited to mechanical and physical configurations.
또한, 도면에 도시된 구성 요소들 간의 연결 선 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것일 뿐이다. 실제 장치에서는 대체 가능하거나 추가된 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들에 의해 구성 요소들 간의 연결이 나타내어질 수 있다. In addition, the connecting lines or connecting members between the components shown in the drawings are merely illustrative of functional connections and / or physical or circuit connections. In an actual device, the connections between components may be represented by various functional connections, physical connections, or circuit connections that are replaceable or added.
이하 첨부된 도면을 참고하여 본 개시를 상세히 설명하기로 한다.Hereinafter, the present disclosure will be described in detail with reference to the accompanying drawings.
도 1은 일 실시 예에 따른 컨텐츠를 제공하는 시스템을 설명하기 위한 도면이다. 도 1은 디바이스(10)가 어플리케이션을 검증(verify)하고, 컨텐츠 제공 서버(30)는 보안 서버(20)로부터 검증 결과를 수신한다. 컨텐츠 제공 서버(30)는 검증 결과에 따라 컨텐츠를 디바이스(10)에 제공할 수 있다. 어플리케이션을 검증한다는 것은 어플리케이션이 위조 또는 변조 되었는지를 판단하는 것을 나타낸다. 다시 말해서, 어플리케이션을 검증한다는 것은 컨텐츠 제공 서버(30)가 제작한 어플리케이션과 디바이스(10)에서 실행되는 어플리케이션이 동일한지를 판단하는 것을 나타낸다.1 is a diagram illustrating a system for providing content according to an exemplary embodiment. 1, the device 10 verifies an application, and the content providing server 30 receives a verification result from the security server 20. The content providing server 30 may provide the content to the device 10 according to the verification result. Verifying an application refers to determining whether the application has been forged or tampered with. In other words, verifying the application indicates whether the application produced by the content providing server 30 and the application executed in the device 10 are the same.
디바이스(10)는 어플리케이션을 실행한다. 사용자는 어플리케이션을 이용하여 컨텐츠를 선택할 수 있다. 디바이스(10)는 사용자에 의해 선택된 컨텐츠를 컨텐츠 제공 서버(30)에 요청한다. 컨텐츠 제공 서버(30)는 어플리케이션의 검증 결과를 수신하기 전까지 컨텐츠를 제공하지 않는다. 또는, 컨텐츠 제공 서버(30)는 어플리케이션의 검증 결과를 수신하기 전까지 컨텐츠의 일부만을 제공할 수 있다.The device 10 executes an application. The user may select content using an application. The device 10 requests the content providing server 30 for the content selected by the user. The content providing server 30 does not provide the content until the verification result of the application is received. Alternatively, the content providing server 30 may provide only a part of the content until the verification result of the application is received.
디바이스(10)는 어플리케이션을 검증한다. 디바이스(10)는 메모리에 로딩된 어플리케이션 코드(application code)를 이용하여, 어플리케이션을 검증할 수 있다. 어플리케이션 코드가 디스크(또는 스토리지)에 저장되어 있을 때 어플리케이션 코드가 위조 또는 변조되지 않고, 메모리에 로딩된 어플리케이션 코드가 위조 또는 변조될 수 있다. 따라서, 디바이스(10)는 메모리에 로딩된 어플리케이션 코드를 원본 코드(original code)와 비교하여 어플리케이션의 위조 또는 변조 여부를 검증할 수 있다. 원본 코드는 디스크 또는 안전 영역에 저장될 수 있다. 디바이스(10)가 어플리케이션을 검증하는 방법은 하기에서 자세히 설명한다.The device 10 verifies the application. The device 10 may verify the application by using the application code loaded in the memory. When the application code is stored in the disk (or storage), the application code is not forged or modulated, the application code loaded in the memory may be forged or modulated. Accordingly, the device 10 may verify whether the application is forged or modulated by comparing the application code loaded in the memory with the original code. The original code can be stored on disk or in a safe area. How the device 10 verifies an application is described in detail below.
디바이스(10)는 어플리케이션을 검증한 결과를 보안 서버(20)로 전송한다. 디바이스(10)는 검증 결과를 보안 서버(20)로 전송할 때, 사인(sign)을 전송할 수 있다. 사인은 디바이스(10)와 보안 서버(20)만이 공유하는 정보이다. 사인은 디바이스(10)와 보안 서버(20)만이 공유하는 비밀키일 수 있다. 보안 서버(20)는 사인을 검증하여, 디바이스(10)로부터 수신된 검증 결과를 신뢰할 수 있다. 다시 말해서, 사인이 위조, 변조되면, 보안 서버(20)는 디바이스(10)로부터 수신된 어플리케이션의 검증 결과를 신뢰하지 않는다.The device 10 transmits the result of verifying the application to the security server 20. When the device 10 transmits the verification result to the security server 20, the device 10 may transmit a sign. The sign is information shared only by the device 10 and the security server 20. The sign may be a secret key shared only by the device 10 and the security server 20. The security server 20 may verify the signature and trust the verification result received from the device 10. In other words, if the signature is forged or tampered, the security server 20 does not trust the verification result of the application received from the device 10.
디바이스(10)는 TV, 모바일 디바이스(휴대폰, 태블릿 등), 웨어러블 디바이스(스마트 워치 등), PC와 같이 어플리케이션을 설치 및 실행할 수 있는 전자기기이다. 어플리케이션은 특정 기능을 수행하기 위해 제작된 프로그램일 수 있다. 예를 들어, 어플리케이션은 컨텐츠 제공 서버(30)로부터 컨텐츠를 제공받고, 컨텐츠를 재생하기 위한 프로그램일 수 있다.The device 10 is an electronic device capable of installing and executing an application such as a TV, a mobile device (mobile phone, tablet, etc.), a wearable device (smart watch, etc.) and a PC. The application may be a program designed to perform a specific function. For example, the application may be a program for receiving content from the content providing server 30 and playing the content.
보안 서버(20)는 인증(attestation) 결과를 컨텐츠 제공 서버(30)로 전송한다. 인증 결과는 어플리케이션의 검증 결과 및 사인의 검증 결과를 포함한다. 어플리케이션의 검증 결과 및 사인의 검증 결과가 모두 정상인 경우, 보안 서버(20)는 어플리케이션의 무결성(integrity)을 인증한다. 어플리케이션의 검증 결과 및 사인의 검증 결과 중 어느 하나라도 정상이 아닌 경우, 보안 서버(20)는 어플리케이션이 위조 또는 변조 되었다고 판단한다.The security server 20 transmits an authentication result to the content providing server 30. The authentication result includes the verification result of the application and the verification result of the signature. If both the verification result of the application and the verification result of the sign are normal, the security server 20 authenticates the integrity of the application. If any of the verification result of the application and the verification result of the signature are not normal, the security server 20 determines that the application is forged or forged.
컨텐츠 제공 서버(30)는 보안 서버(20)로부터 수신된 인증 결과에 따라 디바이스(10)로 컨텐츠를 제공한다. 컨텐츠 제공 서버(30)는 어플리케이션이 위조 또는 변조 되지 않은 경우에만 컨텐츠를 디바이스(10)에 제공한다.The content providing server 30 provides the content to the device 10 according to the authentication result received from the security server 20. The content providing server 30 provides the content to the device 10 only when the application is not forged or tampered with.
도 2는 일 실시 예에 따른 컨텐츠를 제공하는 시스템을 설명하기 위한 도면이다. 도 2는 보안 서버(20)가 어플리케이션을 검증하고, 컨텐츠 제공 서버(30)는 검증 결과에 따라 컨텐츠를 디바이스(10)에 제공할 수 있다.2 is a diagram illustrating a system for providing content according to an exemplary embodiment. 2, the security server 20 verifies an application, and the content providing server 30 may provide content to the device 10 according to the verification result.
디바이스(10)는 어플리케이션을 실행한다. 사용자는 어플리케이션을 이용하여 컨텐츠를 선택할 수 있다. 디바이스(10)는 사용자에 의해 선택된 컨텐츠를 컨텐츠 제공 서버(30)에 요청한다. The device 10 executes an application. The user may select content using an application. The device 10 requests the content providing server 30 for the content selected by the user.
디바이스(10)는 검증 데이터를 생성한다. 검증 데이터는 메모리에 로딩된 어플리케이션 코드를 이용하여 생성된다. 예를 들어, 검증 데이터는 메모리에 로딩된 어플리케이션 코드일 수 있다. 또한, 디바이스(10)는 메모리에 로딩된 어플리케이션 코드를 이용하여 해쉬(hash)를 생성할 수 있고, 생성된 해쉬는 검증 데이터로 사용될 수 있다. 또한, 디바이스(10)는 메모리에 로딩된 어플리케이션 코드 중 일부를 이용하여 해쉬를 생성할 수 있다. 또한, 디바이스(10)는 메모리에 로딩된 어플리케이션 코드 및 디스크에 저장된 어플리케이션 코드를 이용하여 해쉬를 생성할 수 있다. The device 10 generates verification data. Verification data is generated using application code loaded into memory. For example, the verification data can be application code loaded into memory. In addition, the device 10 may generate a hash using application code loaded in the memory, and the generated hash may be used as verification data. In addition, the device 10 may generate a hash using some of the application code loaded in the memory. In addition, the device 10 may generate a hash by using the application code loaded in the memory and the application code stored in the disk.
디바이스(10)는 검증 데이터를 보안 서버(20)로 전송한다. 예를 들어, 디바이스(10)는 해쉬를 생성하여, 생성된 해쉬를 검증 데이터로서 보안 서버(20)로 전송한다. 또한, 디바이스(10)는 메모리에 로딩된 어플리케이션 코드를 검증 데이터로서 보안 서버(20)로 전송할 수도 있다. 또한, 디바이스(10)는 메모리에 로딩된 어플리케이션 코드 및 디스크에 저장된 코드를 결합하여 전체 코드의 해쉬를 검증 데이터로서 보안 서버(20)로 전송할 수도 있다.The device 10 transmits the verification data to the security server 20. For example, the device 10 generates a hash and transmits the generated hash to the security server 20 as verification data. In addition, the device 10 may transmit the application code loaded in the memory to the security server 20 as verification data. In addition, the device 10 may combine the application code loaded in the memory and the code stored in the disk to transmit the hash of the entire code to the security server 20 as verification data.
보안 서버(20)는 검증 데이터를 이용하여 어플리케이션을 검증한다. 보안 서버(20)는 어플리케이션의 코드 또는 어플리케이션이 메모리에 로딩되었을 때 코드를 저장하고 있다. 보안 서버(20)가 저장하는 코드는 위조 또는 변조되지 않은 코드이다. 보안 서버(20)는 저장된 코드를 이용하여 검증 데이터가 위조 또는 변조 되었는지를 판단할 수 있다. 예를 들어, 보안 서버(20)는 보안 서버(20)에 저장된 코드의 해쉬를 생성하고, 보안 서버(20)가 생성한 해쉬와 디바이스(10)로부터 수신된 해쉬가 동일한지 비교할 수 있다.The security server 20 verifies the application using the verification data. The security server 20 stores the code of the application or the code when the application is loaded into the memory. The code stored by the security server 20 is a code that has not been forged or tampered with. The security server 20 may determine whether the verification data is forged or tampered with the stored code. For example, the security server 20 may generate a hash of the code stored in the security server 20, and compare the hash generated by the security server 20 with the hash received from the device 10.
보안 서버(20)는 사인을 검증한다. 보안 서버(20)는 디바이스(10)로부터 수신된 검증 데이터의 신뢰성을 확인하기 위해 디바이스(10)로부터 수신된 사인을 검증한다. The security server 20 verifies the signature. The security server 20 verifies the signature received from the device 10 to verify the authenticity of the verification data received from the device 10.
보안 서버(20)는 인증 결과를 컨텐츠 제공 서버(30)로 전송한다. 보안 서버(20)는 어플리케이션의 검증 결과 및 사인의 검증 결과에 따라 인증 결과를 컨텐츠 제공 서버(30)로 전송한다.The security server 20 transmits the authentication result to the content providing server 30. The security server 20 transmits the authentication result to the content providing server 30 according to the verification result of the application and the verification result of the sign.
컨텐츠 제공 서버(30)는 보안 서버(20)로부터 수신된 인증 결과에 따라 디바이스(10)로 컨텐츠를 제공한다. 컨텐츠 제공 서버(30)는 어플리케이션이 위조 또는 변조 되지 않은 경우에만 컨텐츠를 디바이스(10)에 제공한다.The content providing server 30 provides the content to the device 10 according to the authentication result received from the security server 20. The content providing server 30 provides the content to the device 10 only when the application is not forged or tampered with.
도 3은 일 실시 예에 따른 컨텐츠를 제공하는 시스템을 설명하기 위한 도면이다. 도 3은 컨텐츠 제공 서버(30)가 어플리케이션을 검증하고, 컨텐츠 제공 서버(30)는 검증 결과에 따라 컨텐츠를 디바이스(10)에 제공할 수 있다.3 is a diagram illustrating a system for providing content according to an exemplary embodiment. 3, the content providing server 30 may verify an application, and the content providing server 30 may provide content to the device 10 according to the verification result.
디바이스(10)는 어플리케이션을 실행한다. 사용자는 어플리케이션을 이용하여 컨텐츠를 선택할 수 있다. 디바이스(10)는 사용자에 의해 선택된 컨텐츠를 컨텐츠 제공 서버(30)에 요청한다.The device 10 executes an application. The user may select content using an application. The device 10 requests the content providing server 30 for the content selected by the user.
디바이스(10)는 메모리에 로딩된 어플리케이션 코드를 이용하여 검증 데이터를 생성한다. 디바이스(10)는 검증 데이터를 보안 서버(20)로 전송한다. 디바이스(10)는 검증 데이터와 함께 사인을 보안 서버(20)로 전송한다.The device 10 generates verification data using the application code loaded in the memory. The device 10 transmits the verification data to the security server 20. The device 10 sends the signature to the security server 20 together with the verification data.
보안 서버(20)는 사인을 검증한다. 보안 서버(20)는 검증 데이터를 검증하지 않고, 사인만을 검증한다.The security server 20 verifies the signature. The security server 20 does not verify the verification data, but verifies only the signature.
보안 서버(20)는 사인의 검증 결과 및 검증 데이터를 컨텐츠 제공 서버(30)로 전송한다.The security server 20 transmits the verification result of the sign and the verification data to the content providing server 30.
컨텐츠 제공 서버(30)는 검증 데이터를 이용하여 디바이스(10)에서 실행된 어플리케이션을 검증한다. 컨텐츠 제공 서버(30)는 사인의 검증 결과가 정상인 경우에만, 어플리케이션을 검증할 수 있다. 사인의 검증 결과가 정상이 아니면, 컨텐츠 제공 서버(30)는 검증 데이터의 무결성을 신뢰하지 않고, 컨텐츠 제공 서버(30)는 디바이스(10)에 컨텐츠를 제공하지 않는다. 컨텐츠 제공 서버(30)는 검증 데이터와 컨텐츠 제공 서버(30)에 저장된 어플리케이션 코드를 비교하여 디바이스(10)에서 실행된 어플리케이션을 검증한다.The content providing server 30 verifies the application executed in the device 10 using the verification data. The content providing server 30 may verify the application only when the verification result of the sign is normal. If the verification result of the signature is not normal, the content providing server 30 does not trust the integrity of the verification data, and the content providing server 30 does not provide the content to the device 10. The content providing server 30 compares the verification data with the application code stored in the content providing server 30 to verify the application executed in the device 10.
도 4는 어플리케이션 코드가 이용되는 형태를 설명하기 위한 도면이다. 4 is a diagram for describing a form in which application code is used.
디바이스(10)는 어플리케이션 코드를 다운로드 받을 수 있고, 다운로드된 어플리케이션 코드는 디스크(100)에 저장된다.The device 10 may download the application code, and the downloaded application code is stored in the disk 100.
어플리케이션 코드는 가상 메모리(200)에 로딩될 수 있다. 가상 메모리(200)는 어플리케이션을 실행하는 프로세서에 할당된다.The application code may be loaded into the virtual memory 200. The virtual memory 200 is allocated to a processor executing an application.
어플리케이션 코드 중 일부가 물리 메모리(300)에 로딩된다. 물리 메모리(300)의 공간이 제한되기 때문에, 전체 어플리케이션 코드가 물리 메모리(300)에 로딩되지 않고, 사용 중인 어플리케이션 코드만이 물리 메모리(300)에 로딩된다.Some of the application code is loaded into the physical memory 300. Since the space of the physical memory 300 is limited, the entire application code is not loaded into the physical memory 300, and only the application code being used is loaded into the physical memory 300.
어플리케이션 코드는 디스크(100)에 저장되어 있을 때 위조 또는 변조 될 수 있고, 물리 메모리(300)에 로딩된 코드가 위조 또는 변조 될 수 있다. 디바이스(10)는 디스크(100)에 저장된 코드 및 물리 메모리(300)에 로딩된 코드를 검증할 수 있다.The application code may be forged or modulated when stored in the disk 100, and the code loaded in the physical memory 300 may be forged or modulated. The device 10 may verify the code stored in the disk 100 and the code loaded in the physical memory 300.
도 5는 일 실시 예에 따라 물리 메모리에 로딩된 코드를 이용하여 어플리케이션을 검증하는 방법을 설명하기 위한 도면이다.5 is a diagram for describing a method of verifying an application by using a code loaded in a physical memory, according to an exemplary embodiment.
예를 들어, 어플리케이션 코드는 제1 내지 제5 코드를 포함할 수 있다. 제1 내지 제5 코드는 각각 어플리케이션 코드의 일부를 나타낸다. For example, the application code may include first to fifth codes. The first through fifth codes each represent a part of the application code.
제1 코드, 제3 코드 및 제5 코드는 물리 메모리(300)에 로딩될 수 있다. 각 코드가 로딩된 물리 메모리(300)의 위치는 LKM(Loadable Kernel module)을 이용하여 추적할 수 있다.The first code, the third code, and the fifth code may be loaded into the physical memory 300. The location of the physical memory 300 loaded with each code may be tracked using a Loadable Kernel Module (LKM).
제1 코드, 제3 코드 및 제5 코드가 물리 메모리(300)에 로딩될 때 위조 또는 변조 될 수 있다. 예를 들어, 물리 메모리(300)에 로딩된 제1 코드는 변조된 코드일 수 있다.The first code, the third code, and the fifth code may be forged or modulated when loaded into the physical memory 300. For example, the first code loaded in the physical memory 300 may be a modulated code.
디바이스(10)는 제1 코드, 제3 코드 및 제5 코드를 이용하여 어플리케이션을 검증할 수 있다. 예를 들어, 디바이스(10)는 제1 코드의 위조 또는 변조 여부를 검증한다. 또한, 디바이스(10)는 제1 코드, 제3 코드 및 제5 코드의 위조 또는 변조 여부를 검증할 수도 있다. 제1 코드, 제3 코드 및 제5 코드는 검증 데이터로 사용될 수 있고, 보안 서버(20)로 전송될 수 있다.The device 10 may verify the application using the first code, the third code, and the fifth code. For example, the device 10 verifies whether the first code is forged or modulated. In addition, the device 10 may verify whether the first code, the third code, and the fifth code are forged or modulated. The first code, the third code and the fifth code may be used as verification data and may be transmitted to the security server 20.
도 6은 일 실시 예에 따라 전체 해쉬를 생성하는 방법을 설명하기 위한 도면이다. 도 6을 참조하면, 디바이스(10)는 디스크(100)에 저장된 코드의 해쉬 및 물리 메모리(300)에 로딩된 코드의 해쉬를 이용하여 전체 해쉬(610)를 생성할 수 있다. 6 is a diagram for describing a method of generating an entire hash, according to an exemplary embodiment. Referring to FIG. 6, the device 10 may generate the entire hash 610 using a hash of code stored in the disk 100 and a hash of code loaded in the physical memory 300.
예를 들어, 전체 어플리케이션 코드는 제1 내지 제5 코드들을 포함한다. 물리 메모리(300)에 제1 코드, 제3 코드 및 제5 코드가 로딩되어 있고, 디스크(100)에 전체 어플리케이션 코드가 저장되어 있다. For example, the entire application code includes the first to fifth codes. The first code, the third code, and the fifth code are loaded in the physical memory 300, and the entire application code is stored in the disk 100.
디바이스(10)는 물리 메모리(300)로부터 제1 코드에 대한 제1 해쉬를 생성하고, 제3 코드에 대한 제3 해쉬를 생성하고, 제5 코드에 대한 제5 해쉬를 생성한다. 디바이스(10)는 디스크(100)로부터 제2 코드를 독출하여 제2 코드에 대한 제2 해쉬를 생성한다. 디바이스(10)는 디스크(100)로부터 제4 코드를 독출하여 제4 코드에 대한 제4 해쉬를 생성한다. 디바이스(10)는 제1 내지 제5 해쉬들을 순서대로 결합(또는 연결)하여 전체 해쉬(610)를 생성한다. The device 10 generates a first hash for the first code from the physical memory 300, generates a third hash for the third code, and generates a fifth hash for the fifth code. The device 10 reads the second code from the disk 100 to generate a second hash for the second code. The device 10 reads the fourth code from the disk 100 to generate a fourth hash for the fourth code. The device 10 combines (or connects) the first through fifth hashes in order to generate the entire hash 610.
전체 해쉬(610)는 검증 데이터로 이용될 수 있다. 전체 해쉬(610)는 디바이스(10)에 의해 검증되거나, 보안 서버(20)로 전송될 수 있다. 디바이스(10)는 안전 영역에 저장된 어플리케이션 코드로부터 원본 해쉬를 생성하고, 원본 해쉬와 전체 해쉬(610)를 비교하여, 전체 해쉬(610)를 검증할 수 있다. 원본 해쉬는 전체 해쉬(610)와 동일한 방식으로 생성될 수 있다.The entire hash 610 may be used as verification data. The entire hash 610 may be verified by the device 10 or transmitted to the security server 20. The device 10 may verify the original hash 610 by generating the original hash from the application code stored in the safe area and comparing the original hash with the entire hash 610. The original hash may be generated in the same way as the full hash 610.
도 7은 일 실시 예에 따라 전체 해쉬를 생성하는 방법을 설명하기 위한 도면이다. 도 7을 참조하면, 디바이스(10)는 디스크(100)에 저장된 코드 및 물리 메모리(300)에 로딩된 코드를 이용하여 전체 해쉬(720)를 생성할 수 있다.7 is a diagram for describing a method of generating an entire hash, according to an exemplary embodiment. Referring to FIG. 7, the device 10 may generate the entire hash 720 by using the code stored in the disk 100 and the code loaded in the physical memory 300.
예를 들어, 전체 어플리케이션 코드는 제1 내지 제5 코드들을 포함한다. 물리 메모리(300)에 제1 코드, 제3 코드 및 제5 코드가 로딩되어 있고, 디스크(100)에 전체 어플리케이션 코드가 저장되어 있다. For example, the entire application code includes the first to fifth codes. The first code, the third code, and the fifth code are loaded in the physical memory 300, and the entire application code is stored in the disk 100.
디바이스(10)는 물리 메모리(300)로부터 제1 코드, 제3 코드, 제5 코드를 독출하고, 디스크(100)로부터 제2 코드 및 제4 코드를 독출한다. 디바이스는 독출된 제1 내지 제5 코드를 결합하여 전체 코드(710)을 생성하고, 전체 코드(710)에 대한 전체 해쉬(720)을 생성한다. The device 10 reads the first code, the third code, and the fifth code from the physical memory 300, and reads the second code and the fourth code from the disk 100. The device combines the read first through fifth codes to generate a full code 710 and generates a full hash 720 for the full code 710.
전체 해쉬(720)는 디바이스(10)에 의해 검증되거나, 보안 서버(20)로 전송될 수 있다. 디바이스(10)는 안전 영역에 저장된 어플리케이션 코드로부터 원본 해쉬를 생성하고, 원본 해쉬와 전체 해쉬(720)를 비교하여, 전체 해쉬(720)를 검증할 수 있다. 원본 해쉬는 전체 해쉬(720)와 동일한 방식으로 생성될 수 있다.The entire hash 720 may be verified by the device 10 or transmitted to the security server 20. The device 10 may verify the original hash 720 by generating the original hash from the application code stored in the safe area, comparing the original hash with the entire hash 720. The original hash may be generated in the same way as the full hash 720.
도 8은 일 실시 예에 따라 전체 해쉬를 생성하는 방법을 설명하기 위한 도면이다. 도 8을 참조하면, 디바이스(10)는 물리 메모리(300)에 로딩된 코드만을 이용하여 전체 해쉬(810)를 생성할 수 있다.8 is a diagram for describing a method of generating an entire hash, according to an exemplary embodiment. Referring to FIG. 8, the device 10 may generate the entire hash 810 using only the code loaded in the physical memory 300.
물리 메모리(300)에 제1 코드, 제3 코드 및 제5 코드가 로딩되어 있을 때, 디바이스(10)는 제1 코드에 대한 제1 해쉬, 제3 코드에 대한 제3 해쉬 및 제5 코드에 대한 제5 해쉬를 생성한다. When the first code, the third code, and the fifth code are loaded in the physical memory 300, the device 10 may store the first hash for the first code, the third hash for the third code, and the fifth code. Generate a fifth hash for.
디바이스(10)는 제1 해쉬, 제3 해쉬 및 제5 해쉬를 결합하여 전체 해쉬(810)을 생성한다. 전체 해쉬(810)은 검증 데이터로 이용될 수 있다.The device 10 combines the first hash, the third hash, and the fifth hash to generate an overall hash 810. The entire hash 810 may be used as verification data.
도 9는 일 실시 예에 따라 전체 해쉬를 생성하는 방법을 설명하기 위한 도면이다. 도 9을 참조하면, 디바이스(10)는 물리 메모리(300)에 로딩된 코드만을 이용하여 전체 해쉬(910)를 생성할 수 있다.9 is a diagram for describing a method of generating an entire hash, according to an exemplary embodiment. Referring to FIG. 9, the device 10 may generate the entire hash 910 using only the code loaded in the physical memory 300.
물리 메모리(300)에 제1 코드, 제3 코드 및 제5 코드가 로딩되어 있을 때, 디바이스(10)는 제1 코드, 제3 코드 및 제5 코드를 결합한 코드를 생성하고, 생성된 코드에 대한 전체 해쉬(910)을 생성한다. 도 8에서는 각 코드에 대한 해쉬를 생성한 후에 생성된 해쉬들을 결합하였으나, 도 9에서는 각 코드들을 결합한 코드(제1 코드, 제3 코드 및 제5 코드를 결합한 전체 코드)에 대한 전체 해쉬(910)을 생성한다.When the first code, the third code, and the fifth code are loaded in the physical memory 300, the device 10 generates a code combining the first code, the third code, and the fifth code, and generates the code. Generate a full hash 910 for the. In FIG. 8, the hashes generated after generating the hash for each code are combined. In FIG. 9, the entire hash 910 for the code combining the respective codes (the entire code combining the first code, the third code, and the fifth code) is shown. )
도 10은 일 실시 예에 따른 디바이스를 설명하기 위한 블록도이다. 도 10을 참조하면, 디바이스(1000)는 프로세서(1010), 디스크(1020) 및 메모리(1030)를 포함한다.10 is a block diagram illustrating a device according to an exemplary embodiment. Referring to FIG. 10, the device 1000 includes a processor 1010, a disk 1020, and a memory 1030.
프로세서(1010)는 디스크(1020) 및 메모리(1030)를 제어한다. 프로세서(1010)는 디스크(1020)에 데이터를 저장하거나 독출할 수 있다. 프로세서(1010)는 디스크(1020)에 저장된 데이터를 메모리(1030)에 로딩할 수 있다. 예를 들어, 데이터는 프로그램, 어플리케이션 코드 등일 수 있다.The processor 1010 controls the disk 1020 and the memory 1030. The processor 1010 may store or read data on the disk 1020. The processor 1010 may load data stored in the disk 1020 into the memory 1030. For example, the data may be a program, application code, or the like.
프로세서(1010)가 디스크(1020)에 저장된 데이터를 이용하기 위해 데이터를 메모리(1030)에 로딩한다. 프로세서(1010)는 디스크(1020)에 저장된 데이터 중에서 필요한 데이터만을 메모리(1030)에 로딩할 수 있다.The processor 1010 loads the data into the memory 1030 to use the data stored in the disk 1020. The processor 1010 may load only necessary data from the data stored in the disk 1020 into the memory 1030.
프로세서(1010)는 디스크(1020)에 저장된 데이터를 검증할 수 있다. 프로세서(1010)는 안전 영역에 저장된 데이터와 디스크(1020)에 저장된 데이터를 비교할 수 있다. 디바이스(1000)는 디스크(1020)의 일부 영역 또는 별도의 공간을 안전 영역으로 사용할 수 있다.The processor 1010 may verify data stored in the disk 1020. The processor 1010 may compare the data stored in the safe area with the data stored in the disk 1020. The device 1000 may use a partial area or a separate space of the disk 1020 as a safe area.
프로세서(1010)는 메모리(1030)에 로딩된 데이터를 검증할 수 있다. 프로세서(1010)는 메모리(1030)에 로딩된 데이터만을 검증하거나, 메모리(1030)에 로딩된 데이터의 일부만을 검증할 수 있다. 프로세서(1010)는 메모리(1030)에 로딩된 데이터 및 디스크(1020)에 저장된 데이터를 결합하여 결합된 데이터를 검증할 수 있다. 프로세서(1010)는 데이터의 해쉬를 생성하여, 해쉬를 이용하여 데이터를 검증할 수 있다.The processor 1010 may verify data loaded in the memory 1030. The processor 1010 may verify only data loaded in the memory 1030 or only a part of data loaded in the memory 1030. The processor 1010 may verify the combined data by combining the data loaded in the memory 1030 and the data stored in the disk 1020. The processor 1010 may generate a hash of the data and verify the data using the hash.
프로세서(1010)는 메모리(1030)에 로딩된 데이터와 안전 영역에 저장된 데이터를 비교할 수 있다. 또는, 디바이스(1000)는 메모리(1030)에 로딩된 데이터를 외부의 서버로 전송할 수 있다. 외부의 서버는 디바이스(1000)로부터 수신된 데이터를 원본 데이터와 비교하여 수신된 데이터를 검증할 수 있다. The processor 1010 may compare the data loaded in the memory 1030 with the data stored in the safe area. Alternatively, the device 1000 may transmit data loaded in the memory 1030 to an external server. The external server may verify the received data by comparing the data received from the device 1000 with the original data.
디스크(1020)는 데이터를 저장한다. 디스크(1020)의 특정 영역은 안전 영역일 수 있다. 디스크(1020)는 비휘발성 메모리일 수 있다.The disk 1020 stores data. The specific area of the disk 1020 may be a safe area. The disk 1020 may be a nonvolatile memory.
메모리(1030)는 실행되는 데이터를 저장할 수 있다. 프로세서(1010)는 디스크(1020)에 저장된 데이터를 메모리(1030)에 로딩할 수 있다. 메모리(1030)는 휘발성 메모리일 수 있다.The memory 1030 may store data to be executed. The processor 1010 may load data stored in the disk 1020 into the memory 1030. The memory 1030 may be a volatile memory.
도 11은 일 실시 예에 다른 어플리케이션을 검증하는 방법을 설명하기 위한 순서도이다. 11 is a flowchart illustrating a method of verifying an application according to an embodiment.
단계 1110에서, 프로세서(1010)는 어플리케이션 코드를 디스크(1020)에 저장한다. 프로세서(1010)는 어플리케이션 코드를 디스크(1020) 및 안전 영역에 저장할 수 있다. 어플리케이션 코드는 외부 서버로부터 수신될 수 있다. 안전 영역은 디스크(1020)의 일부 영역 또는 디바이스(1000)의 내부의 특정 영역에 설정될 수 있다.In operation 1110, the processor 1010 stores the application code on the disk 1020. The processor 1010 may store the application code in the disk 1020 and the safe area. Application code may be received from an external server. The safe area may be set in a partial area of the disk 1020 or a specific area inside the device 1000.
단계 1120에서, 프로세서(1010)는 어플리케이션 코드 중 일부를 메모리(1030)에 로딩한다. 프로세서(1010)는 어플리케이션 코드 중 필요한 코드만을 메모리(1030)에 로딩한다.In operation 1120, the processor 1010 loads some of the application code into the memory 1030. The processor 1010 loads only necessary codes among the application codes into the memory 1030.
단계 1130에서, 프로세서(1010)는 메모리(1030)에 로딩된 코드를 이용하여 어플리케이션을 검증한다. 프로세서(1010)는 디스크(1020)에 저장된 코드와 메모리(1030)에 로딩된 코드를 비교할 수 있다.In operation 1130, the processor 1010 verifies the application using the code loaded in the memory 1030. The processor 1010 may compare the code stored in the disk 1020 with the code loaded in the memory 1030.
프로세서(1010)는 다양한 형태의 해쉬를 생성할 수 있다. 예를 들어, 프로세서(1010)는 메모리(1030)에 로딩되지 않은 코드를 디스크(1020)로부터 독출하고, 독출된 코드 및 메모리(1030)에 로딩된 코드의 해쉬(해쉬A)를 생성한다. 프로세서(1010)는 해쉬A에 대응하는 해쉬B를 생성한다. 프로세서(1010)는 디스크(1020)에 저장된 어플리케이션 코드의 해쉬(해쉬B)를 생성한다. 해쉬A를 생성하는 방법은 도 6 및 도 7에 도시되어 있다. 전체 해쉬(610) 또는 전체 해쉬(720)은 해쉬A일 수 있다.The processor 1010 may generate various types of hashes. For example, the processor 1010 reads code not loaded into the memory 1030 from the disk 1020, and generates a hash (hash A) of the read code and the code loaded into the memory 1030. Processor 1010 generates hash B corresponding to hash A. The processor 1010 generates a hash (hash B) of the application code stored in the disk 1020. The method for generating hash A is illustrated in FIGS. 6 and 7. The entire hash 610 or the entire hash 720 may be hash A.
또한, 프로세서(1010)는 메모리(1030)에 로딩된 코드만으로 해쉬(해쉬C)를 생성한다. 프로세서(1010)는 디스크(1020)에 저장된 어플리케이션 코드 중에서 메모리(1030)에 로딩된 코드에 대응하는 코드만으로 해쉬(해쉬D)를 생성한다. 해쉬C를 생성하는 방법은 도 8 및 도 9에 도시되어 있다. 전체 해쉬(810) 또는 전체 해쉬(910)은 해쉬C일 수 있다.In addition, the processor 1010 generates a hash (hash C) using only code loaded in the memory 1030. The processor 1010 generates a hash (hash D) using only codes corresponding to codes loaded in the memory 1030 among application codes stored in the disk 1020. The method for generating the hash C is shown in FIGS. 8 and 9. The entire hash 810 or the entire hash 910 may be hash C.
또한, 프로세서(1010)는 메모리(1030)에 로딩된 코드 중 일부 코드(제1 코드)만으로 해쉬(해쉬E)를 생성한다. 프로세서(1010)는 디스크(1020)에 저장된 어플리케이션 코드 중에서 제1 코드에 대응하는 코드만으로 해쉬(해쉬F)를 생성한다.In addition, the processor 1010 generates a hash (hash E) using only some codes (first codes) among codes loaded in the memory 1030. The processor 1010 generates a hash (hash F) using only the code corresponding to the first code among the application codes stored in the disk 1020.
일 실시 예에 따른 디바이스는 메모리에 로딩된 코드를 검증하여, 어플리케이션 코드를 검증할 수 있다.According to an embodiment, the device may verify an application code by verifying a code loaded in a memory.
일 실시 예에 따른 디바이스는 메모리에 로딩된 코드를 보안 서버로 전송하고, 보안 서버는 메모리에 로딩된 코드를 검증할 수 있다.According to an embodiment, the device may transmit the code loaded in the memory to the security server, and the security server may verify the code loaded in the memory.
한편, 상술한 실시예는, 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터에 의해 판독 가능한 매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 실시예에서 사용된 데이터의 구조는 컴퓨터 판독 가능 매체에 여러 수단을 통하여 기록될 수 있다. 또한, 상술한 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로 구현될 수 있다. 예를 들어, 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 컴퓨터가 읽고 실행할 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체에 저장될 수 있다.Meanwhile, the above-described embodiments can be written as a program that can be executed in a computer, and can be implemented in a general-purpose digital computer which operates the program using a computer-readable medium. In addition, the structure of the data used in the above-described embodiment can be recorded on the computer-readable medium through various means. In addition, the above-described embodiments may be implemented in the form of a recording medium including instructions executable by a computer, such as a program module executed by a computer. For example, methods implemented with a software module or algorithm may be stored on a computer readable recording medium as code or program instructions that the computer can read and execute.
컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 기록 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 포함할 수 있다. 예를 들어, 컴퓨터 판독 가능 매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예를 들면, 시디롬, DVD 등)와 같은 저장 매체를 포함할 수 있으나, 이에 제한되지 않는다. 또한, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다.Computer readable media can be any recording media that can be accessed by a computer, and can include volatile and nonvolatile media, removable and non-removable media. For example, computer readable media may include storage media such as magnetic storage media (eg, ROM, floppy disk, hard disk, etc.) and optical reading media (eg, CD-ROM, DVD, etc.) This is not restrictive. In addition, the computer readable medium may include computer storage media and communication media.
또한, 컴퓨터가 읽을 수 있는 복수의 기록 매체가 네트워크로 연결된 컴퓨터 시스템들에 분산되어 있을 수 있으며, 분산된 기록 매체들에 저장된 데이터(예: 프로그램 명령어 및 코드)가 적어도 하나의 컴퓨터에 의해 실행될 수 있다.In addition, a plurality of computer-readable recording media may be distributed in networked computer systems, and data (eg, program instructions and codes) stored in the distributed recording media may be executed by at least one computer. have.
본 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.The terms "... unit", "module", and the like described herein refer to a unit for processing at least one function or operation, which may be implemented in hardware or software, or a combination of hardware and software.
"부", "모듈"은 어드레싱될 수 있는 저장 매체에 저장되며 프로세서에 의해 실행될 수 있는 프로그램에 의해 구현될 수도 있다.The "unit" and "module" may be implemented by a program stored in a storage medium that can be addressed and executed by a processor.
예를 들어, “부”, "모듈" 은 소프트웨어 구성 요소들, 객체 지향 소프트웨어 구성 요소들, 클래스 구성 요소들 및 태스크 구성 요소들과 같은 구성 요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들에 의해 구현될 수 있다.For example, "part", "module" means components such as software components, object-oriented software components, class components, and task components, and processes, functions, properties, and pro- grams. It can be implemented by procedures, subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays and variables.

Claims (15)

  1. 어플리케이션을 검증하는 방법에 있어서,In the method of verifying the application,
    어플리케이션 코드를 저장하는 단계;Storing the application code;
    상기 어플리케이션 코드 중 일부를 메모리에 로딩하는 단계; 및Loading some of the application code into a memory; And
    상기 메모리에 로딩된 코드를 이용하여 상기 어플리케이션을 검증하는 단계;를 포함하는 어플리케이션 검증 방법.Verifying the application using the code loaded in the memory.
  2. 제1항에 있어서, 상기 검증하는 단계는,The method of claim 1, wherein the verifying step comprises:
    상기 어플리케이션 코드 중에서 상기 메모리에 로딩되지 않은 코드를 독출하는 단계;Reading code not loaded in the memory among the application code;
    상기 메모리에 로딩된 코드 및 상기 독출된 코드의 해쉬A를 생성하는 단계;Generating a hash A of the code loaded into the memory and the read code;
    상기 어플리케이션 코드의 해쉬B를 생성하는 단계; 및Generating a hash B of the application code; And
    상기 해쉬B와 상기 해쉬A를 비교하여 상기 어플리케이션을 검증하는 단계;를 포함하는 어플리케이션 검증 방법.Comparing the hash B with the hash A to verify the application.
  3. 제1항에 있어서, 상기 검증하는 단계는,The method of claim 1, wherein the verifying step comprises:
    상기 메모리에 로딩된 코드의 해쉬C를 생성하는 단계;Generating a hash C of code loaded into the memory;
    상기 어플리케이션 코드 중에서 상기 메모리에 로딩된 코드와 대응하는 코드의 해쉬D를 생성하는 단계; 및Generating a hash D of code corresponding to code loaded in the memory among the application codes; And
    상기 해쉬C와 상기 해쉬D를 비교하여 상기 어플리케이션을 검증하는 단계;를 포함하는, 어플리케이션 검증 방법.Comparing the hash C with the hash D to verify the application.
  4. 제1항에 있어서, 상기 검증하는 단계는,The method of claim 1, wherein the verifying step comprises:
    상기 메모리에 로딩된 코드 중에서 제1 코드의 해쉬E를 생성하는 단계;Generating a hash E of a first code among the codes loaded into the memory;
    상기 어플리케이션 코드 중에서 상기 제1 코드와 대응하는 코드의 해쉬F를 생성하는 단계; 및Generating a hash F of a code corresponding to the first code among the application codes; And
    상기 해쉬E 및 상기 해쉬F를 비교하여 상기 어플리케이션을 검증하는 단계를 포함하는 것을 특징으로 하는, 어플리케이션 검증 방법.And comparing the hash E and the hash F to verify the application.
  5. 제1항에 있어서, 상기 검증하는 단계는,The method of claim 1, wherein the verifying step comprises:
    상기 메모리에 로딩된 코드와 상기 어플리케이션 코드 중에서 상기 메모리에 로딩된 코드에 대응하는 코드가 동일한지 비교하여, 상기 어플리케이션을 검증하는 단계;를 포함하는, 어플리케이션 검증 방법.And comparing the code loaded in the memory with a code corresponding to the code loaded in the memory among the application codes to verify the application.
  6. 제1항에 있어서,The method of claim 1,
    상기 메모리에 로딩된 코드의 해쉬C를 생성하는 단계; 및Generating a hash C of code loaded into the memory; And
    상기 해쉬C를 보안 서버로 전송하는 단계;를 더 포함하는 어플리케이션 검증 방법.And transmitting the hash C to a security server.
  7. 제6항에 있어서, 상기 해쉬C를 보안 서버로 전송하는 단계는, The method of claim 6, wherein transmitting the hash C to a security server comprises:
    상기 해쉬C와 함께 사인(sign)을 함께 상기 보안 서버로 전송하고,Send a sign with the hash C to the secure server,
    상기 사인은 상기 메모리를 포함하는 디바이스와 상기 보안 서버가 사용하는 비밀키인 것을 특징으로 하는, 어플리케이션 검증 방법.The signature is an application verification method, characterized in that the device containing the memory and the secret key used by the security server.
  8. 어플리케이션을 검증하는 디바이스에 있어서,In the device for verifying the application,
    어플리케이션 코드를 저장하는 디스크;A disk for storing application code;
    메모리; 및Memory; And
    프로세서를 포함하고,Includes a processor,
    상기 프로세서는 상기 어플리케이션 코드 중 일부를 상기 메모리에 로딩하고,The processor loads some of the application code into the memory,
    상기 메모리에 로딩된 코드를 이용하여 상기 어플리케이션을 검증하는 단계;를 포함하는 디바이스.Verifying the application using code loaded into the memory.
  9. 제8항에 있어서, 상기 프로세서는,The method of claim 8, wherein the processor,
    상기 어플리케이션 코드 중에서 상기 메모리에 로딩되지 않은 코드를 독출하고,Read code not loaded in the memory among the application codes;
    상기 메모리에 로딩된 코드 및 상기 독출된 코드의 해쉬A를 생성하고,Generate a hash A of the code loaded into the memory and the read code,
    상기 어플리케이션 코드의 해쉬B를 생성하고,Generate a hash B of the application code,
    상기 해쉬B와 상기 해쉬A를 비교하여 상기 어플리케이션을 검증하는 것을 특징으로 하는, 디바이스.And compare the hash B with the hash A to verify the application.
  10. 제8항에 있어서, 상기 프로세서는,The method of claim 8, wherein the processor,
    상기 메모리에 로딩된 코드의 해쉬C를 생성하고,Generate a hash C of the code loaded into the memory,
    상기 어플리케이션 코드 중에서 상기 메모리에 로딩된 코드와 대응하는 코드의 해쉬D를 생성하고,Generate a hash D of the code corresponding to the code loaded in the memory of the application code,
    상기 해쉬C와 상기 해쉬D를 비교하여 상기 어플리케이션을 검증하는 것을 특징으로 하는, 디바이스.And comparing the hash C with the hash D to verify the application.
  11. 제8항에 있어서, 상기 프로세서는,The method of claim 8, wherein the processor,
    상기 메모리에 로딩된 코드 중에서 제1 코드의 해쉬E를 생성하고,Generate a hash E of the first code among the codes loaded into the memory,
    상기 어플리케이션 코드 중에서 상기 제1 코드와 대응하는 코드의 해쉬F를 생성하고,Generating a hash F of a code corresponding to the first code among the application codes,
    상기 해쉬E 및 상기 해쉬F를 비교하여 상기 어플리케이션을 검증하는 것을 특징으로 하는, 디바이스.And compare the hash E and the hash F to verify the application.
  12. 제8항에 있어서, 상기 프로세서는,The method of claim 8, wherein the processor,
    상기 메모리에 로딩된 코드와 상기 어플리케이션 코드 중에서 상기 메모리에 로딩된 코드에 대응하는 코드가 동일한지 비교하여, 상기 어플리케이션을 검증하는 것을 특징으로 하는, 디바이스.And comparing the code corresponding to the code loaded in the memory with the code loaded in the memory and the application code to verify the application.
  13. 제8항에 있어서, 상기 프로세서는,The method of claim 8, wherein the processor,
    상기 메모리에 로딩된 코드의 해쉬C를 생성하고,Generate a hash C of the code loaded into the memory,
    상기 해쉬C를 보안 서버로 전송하는 것을 특징으로 하는, 디바이스.And send the hash C to a secure server.
  14. 제13항에 있어서, 상기 프로세서는,The processor of claim 13, wherein the processor comprises:
    상기 해쉬C와 함께 사인(sign)을 함께 상기 보안 서버로 전송하고,Send a sign with the hash C to the secure server,
    상기 사인은 상기 메모리를 포함하는 디바이스와 상기 보안 서버가 사용하는 비밀키인 것을 특징으로 하는, 디바이스.And the sign is a device containing the memory and a secret key used by the security server.
  15. 제1항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비일시적인(non-transitory) 기록매체.A computer readable non-transitory recording medium having recorded thereon a program for executing the method of claim 1 on a computer.
PCT/KR2016/013760 2016-09-13 2016-11-28 Device and method for verifying application WO2018052166A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/332,652 US11281778B2 (en) 2016-09-13 2016-11-28 Device and method for verifying application

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020160118214A KR102538096B1 (en) 2016-09-13 2016-09-13 Device and method of verify application
KR10-2016-0118214 2016-09-13

Publications (1)

Publication Number Publication Date
WO2018052166A1 true WO2018052166A1 (en) 2018-03-22

Family

ID=61619607

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2016/013760 WO2018052166A1 (en) 2016-09-13 2016-11-28 Device and method for verifying application

Country Status (3)

Country Link
US (1) US11281778B2 (en)
KR (1) KR102538096B1 (en)
WO (1) WO2018052166A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102036618B1 (en) * 2019-01-31 2019-10-28 주식회사그린존시큐리티 Integrity vertfication chain for verifying integrity of device and method for verifying integrity of device using the same

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010054143A1 (en) * 1999-12-07 2001-12-20 Kizna.Com, Inc. Security assurance method for computer and medium recording program thereof
US20050010767A1 (en) * 2003-06-19 2005-01-13 International Business Machines Corporation System and method for authenticating software using hidden intermediate keys
US20100191974A1 (en) * 2009-01-28 2010-07-29 Microsoft Corporation Software application verification
KR20110125698A (en) * 2010-05-14 2011-11-22 에스케이플래닛 주식회사 Security providing method and device for executing of mobile web application
KR20150039444A (en) * 2013-10-02 2015-04-10 주식회사 엔젠소프트 System and method for application counterfeit prevention

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381741B1 (en) * 1998-05-18 2002-04-30 Liberate Technologies Secure data downloading, recovery and upgrading
US6907522B2 (en) * 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
US7103779B2 (en) * 2003-09-18 2006-09-05 Apple Computer, Inc. Method and apparatus for incremental code signing
US7644287B2 (en) * 2004-07-29 2010-01-05 Microsoft Corporation Portion-level in-memory module authentication
US7577848B2 (en) * 2005-01-18 2009-08-18 Microsoft Corporation Systems and methods for validating executable file integrity using partial image hashes
US7953980B2 (en) * 2005-06-30 2011-05-31 Intel Corporation Signed manifest for run-time verification of software program identity and integrity
US9092629B2 (en) * 2007-04-16 2015-07-28 The Directv Group, Inc. Method and apparatus for authenticating a code image upon starting a device
US8683213B2 (en) * 2007-10-26 2014-03-25 Qualcomm Incorporated Progressive boot for a wireless device
EP2232397B1 (en) * 2008-01-20 2011-10-05 NDS Limited Secure data utilization
US8510569B2 (en) 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
US8776245B2 (en) 2009-12-23 2014-07-08 Intel Corporation Executing trusted applications with reduced trusted computing base
US8453237B2 (en) * 2010-06-03 2013-05-28 International Business Machines Corporation Verification of a segmented program on a parallel processing computing system
US20120331303A1 (en) * 2011-06-23 2012-12-27 Andersson Jonathan E Method and system for preventing execution of malware
US8627097B2 (en) * 2012-03-27 2014-01-07 Igt System and method enabling parallel processing of hash functions using authentication checkpoint hashes
US20140188949A1 (en) * 2013-01-03 2014-07-03 Dell Products L.P. Methods and systems for supply chain assurance of information handling system code
JP6244759B2 (en) * 2013-09-10 2017-12-13 株式会社ソシオネクスト Secure boot method, semiconductor device, and secure boot program
KR101482700B1 (en) * 2013-09-27 2015-01-14 (주)잉카엔트웍스 Method For Verifying Integrity of Program Using Hash
FR3019347B1 (en) * 2014-03-25 2017-07-21 Oberthur Technologies SECURING THE LOADING OF DATA IN A NON-VOLATILE MEMORY OF A SECURE ELEMENT
US10387652B2 (en) * 2015-04-17 2019-08-20 Hewlett Packard Enterprise Development Lp Firmware map data
GB201508035D0 (en) * 2015-05-12 2015-06-24 Critical Blue Ltd Crowd sourced fingerprinting
US10771478B2 (en) * 2016-02-18 2020-09-08 Comcast Cable Communications, Llc Security monitoring at operating system kernel level
US20180007037A1 (en) * 2016-07-01 2018-01-04 Kenneth Wade Reese Transaction-specific shared secret in one-time password device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010054143A1 (en) * 1999-12-07 2001-12-20 Kizna.Com, Inc. Security assurance method for computer and medium recording program thereof
US20050010767A1 (en) * 2003-06-19 2005-01-13 International Business Machines Corporation System and method for authenticating software using hidden intermediate keys
US20100191974A1 (en) * 2009-01-28 2010-07-29 Microsoft Corporation Software application verification
KR20110125698A (en) * 2010-05-14 2011-11-22 에스케이플래닛 주식회사 Security providing method and device for executing of mobile web application
KR20150039444A (en) * 2013-10-02 2015-04-10 주식회사 엔젠소프트 System and method for application counterfeit prevention

Also Published As

Publication number Publication date
US20210216635A1 (en) 2021-07-15
KR20180029737A (en) 2018-03-21
US11281778B2 (en) 2022-03-22
KR102538096B1 (en) 2023-05-31

Similar Documents

Publication Publication Date Title
WO2014027859A1 (en) Device and method for processing transaction request in processing environment of trust zone
WO2017026739A1 (en) System and method for obfuscating application code
WO2010087678A2 (en) System and method for clipboard security
WO2017111383A1 (en) Biometric data-based authentication device, control server linked to same, and biometric data-based login method for same
WO2021256669A1 (en) Access security management method and system
WO2018160039A1 (en) Automatic authentication processing method and system using dividing function
WO2013137616A1 (en) Method and apparatus for evaluating required permissions for application
WO2014088262A1 (en) Apparatus and method for detecting fraudulent/altered applications
WO2016064041A1 (en) User terminal using hash value to detect whether application program has been tampered and method for tamper detection using the user terminal
US11258771B2 (en) Systems and methods for sending user data from a trusted party to a third party using a distributed registry
WO2017057880A1 (en) Apparatus and method for protection of critical embedded system components via hardware-isolated secure element-based monitor
WO2018169150A1 (en) Locked screen-based user authentication system and method
WO2018004245A1 (en) Method for verifying forgery and falsification of executable file in image forming apparatus and image forming apparatus using same
WO2021060745A1 (en) Electronic device for updating firmware by using security integrated circuit and operation method thereof
WO2013073829A1 (en) Method, host apparatus and machine-readable storage medium for authenticating a storage apparatus
WO2020159053A1 (en) Integrity verification chain for verifying integrity of device, and method for verifying integrity of device by using same
WO2020045826A1 (en) Electronic device for processing digital key, and operation method therefor
WO2011065768A2 (en) Method for protecting application and method for executing application using the same
WO2016064040A1 (en) User terminal using signature information to detect whether application program has been tampered and method for tamper detection using the user terminal
WO2018052166A1 (en) Device and method for verifying application
WO2015046775A1 (en) Method of verifying integrity of program using hash
WO2015099287A1 (en) Method for authenticating user by using one-time password, and device therefor
WO2018199366A1 (en) Method and system for detecting whether obfuscation has been applied to dex file and evaluating security
WO2020060101A1 (en) Electronic device for providing service by using secure element, and operating method thereof
WO2021225329A1 (en) Method and system for detecting forgery of mobile application by using user identifier and signature collection

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16916320

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16916320

Country of ref document: EP

Kind code of ref document: A1