KR102180529B1 - Application access control method and electronic device implementing the same - Google Patents

Application access control method and electronic device implementing the same Download PDF

Info

Publication number
KR102180529B1
KR102180529B1 KR1020140023825A KR20140023825A KR102180529B1 KR 102180529 B1 KR102180529 B1 KR 102180529B1 KR 1020140023825 A KR1020140023825 A KR 1020140023825A KR 20140023825 A KR20140023825 A KR 20140023825A KR 102180529 B1 KR102180529 B1 KR 102180529B1
Authority
KR
South Korea
Prior art keywords
application
hash value
area
delete delete
memory
Prior art date
Application number
KR1020140023825A
Other languages
Korean (ko)
Other versions
KR20140112399A (en
Inventor
코르키스코 티무르
이경희
포메툰 세르게이
벨로우소브 세르기이
수토브스키이 바실
바실스키이 비타리이
안드로소브 안드레이
도브간 카테리나
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US14/205,842 priority Critical patent/US9407642B2/en
Publication of KR20140112399A publication Critical patent/KR20140112399A/en
Priority to US15/200,909 priority patent/US10078599B2/en
Application granted granted Critical
Publication of KR102180529B1 publication Critical patent/KR102180529B1/en

Links

Images

Abstract

어플리케이션의 접근을 제어하는 방법 및 이를 구현하는 전자 장치가 개시되어 있는바, 다양한 실시예에 따르면, 전자 장치를 동작하는 방법은 휘발성 메모리를 포함하는 전자 장치의 프로세서에 의하여, 상기 휘발성 메모리를 제 1 영역 및 제 2 영역으로 설정하는 동작으로서, 상기 제 2 영역은 상기 제 1 영역보다 보안이 더 강화된 동작, 상기 프로세서에 의하여, 상기 제 2영역 내에 하드웨어 또는 펌웨어로부터 인출된 제 1 정보를 임시적으로 저장하는 동작, 상기 프로세서에 의하여, 상기 제 2 영역 내에 제 2 정보를 임시적으로 저장하는 동작, 상기 프로세서에 의하여, 상기 제 1 영역 내에 임시적으로 저장된 어플리케이션 프로그램의 상기 제 2 정보에 대한 접근 요청을 인식하는 동작, 및 상기 프로세서에 의하여, 상기 제 2 영역 내에서 상기 어플리케이션 프로그램의 적어도 일부를 이용하여 인증하는 동작을 포함할 수 있다. 다른 실시예들이 가능하다. A method of controlling access to an application and an electronic device implementing the same are disclosed. According to various embodiments, a method of operating an electronic device includes a first method of controlling the volatile memory by a processor of an electronic device including a volatile memory. An operation of setting a region and a second region, wherein the second region is an operation with more enhanced security than the first region. The processor temporarily stores first information fetched from hardware or firmware in the second region. Storing, by the processor, temporarily storing second information in the second area, by the processor, to recognize a request for access to the second information of an application program temporarily stored in the first area And authenticating, by the processor, using at least a part of the application program in the second area. Other embodiments are possible.

Description

어플리케이션 접근 제어 방법 및 이를 구현하는 전자 장치{APPLICATION ACCESS CONTROL METHOD AND ELECTRONIC DEVICE IMPLEMENTING THE SAME}Application access control method and electronic device implementing it {APPLICATION ACCESS CONTROL METHOD AND ELECTRONIC DEVICE IMPLEMENTING THE SAME}

본 개시는 컴퓨팅 자원(computing asset)에 대한 어플리케이션의 접근을 제어하는 방법 및 이를 구현하는 전자 장치에 관한 것이다.The present disclosure relates to a method of controlling an application's access to a computing asset and an electronic device implementing the same.

스마트 폰, 태블릿 PC 등과 같은 전자장치는 메모리, 프로세서 및 운영체제(OS: Operating System)를 탑재하고 이에 따라 다양한 어플리케이션을 실행할 수 있다. 전자 장치는 온라인 상거래 및 금융 거래를 실행할 수 있다. 온라인 상거래나 금융 거래 등과 같은 기능들의 실행에 있어서, 공통적인 관심사는 보안이다. 이러한 보안을 위해 전자 장치는 예를 들면, 컴퓨팅 자원(computing asset)에 대한 어플리케이션의 접근을 제어할 수 있다.Electronic devices such as a smart phone and a tablet PC are equipped with a memory, a processor, and an operating system (OS) and can execute various applications accordingly. The electronic device can perform online commerce and financial transactions. In the execution of functions such as online commerce or financial transactions, a common concern is security. For this security, the electronic device may control an application's access to, for example, a computing asset.

종래 기술에 따르면, 접근 제어 방법은 공개 키 구조(public key infrastructure)에 기반한 접근 제어 방법, 비밀번호(password) 기반 접근 제어 방법, 로컬(local) 접근 제어 방법 등이 있을 수 있다. According to the prior art, the access control method may include an access control method based on a public key infrastructure, a password based access control method, and a local access control method.

공개 키 기반 구조에 기반한 접근 제어 방법이 적용된 시스템은 그 설치 및 유지 보수가 복잡하다. 또한, 인증서(certificate)의 유효 기간이 만료된 경우 새로운 인증서가 발급되어야 한다. 또한 인증서의 분실 및 훼손의 위험성이 있어 그 무결성이 보장되기 어렵다. 또한 공인 인증서의 경우 발급되는데 비용이 소요될 수 있다. A system to which an access control method based on a public key infrastructure is applied is complicated to install and maintain. In addition, when the validity period of the certificate has expired, a new certificate must be issued. In addition, there is a risk of loss or damage of the certificate, making it difficult to guarantee its integrity. Also, in the case of an accredited certificate, it may cost money to issue.

비밀번호 기반 접근 제어 방법은 비밀번호의 해킹 또는 분실에 상당한 위험이 존재하며, 실제로 포털 및 온라인 서비스 업체에서 보안에 문제가 생기는 사건이 발생하고 있다.In the password-based access control method, there is a significant risk of hacking or loss of passwords, and there are actually incidents that cause security problems in portals and online service companies.

로컬(local) 접근 제어 방법이 적용된 전자 장치는 사용자에게 비밀번호를 요청하지 않을 수도 있다. 그러나, 해당 전자장치의 로컬 저장소(local storage)에 저장된 데이터가 위조되거나 해킹될 수 있다. 따라서 보안이 필요한 데이터는 안전한 저장소가 필요하다.The electronic device to which the local access control method is applied may not request a password from the user. However, data stored in a local storage of the electronic device may be forged or hacked. Therefore, data requiring security needs a secure storage.

본 개시는 컴퓨팅 자원에 대한 어플리케이션의 접근을 제어하여 컴퓨팅 자원을 안전하게 보호할 수 있도록 하는 방법 및 이를 구현하는 전자장치를 제공 할 수 있다.The present disclosure can provide a method for safely protecting a computing resource by controlling an application's access to a computing resource, and an electronic device implementing the same.

본 개시의 일 실시예에 따른 전자 장치를 동작하는 방법은, 휘발성 메모리를 포함하는 전자 장치의 프로세서에 의하여, 상기 휘발성 메모리를 제 1 영역 및 제 2 영역으로 설정하는 동작으로서, 상기 제 2 영역은 상기 제 1 영역보다 보안이 더 강화된 동작, 상기 프로세서에 의하여, 상기 제 2영역 내에 하드웨어 또는 펌웨어로부터 인출된 제 1 정보를 임시적으로 저장하는 동작, 상기 프로세서에 의하여, 상기 제 2 영역 내에 제 2 정보를 임시적으로 저장하는 동작, 상기 프로세서에 의하여, 상기 제 1 영역 내에 임시적으로 저장된 어플리케이션 프로그램의 상기 제 2 정보에 대한 접근 요청을 인식하는 동작, 및A method of operating an electronic device according to an embodiment of the present disclosure is an operation of setting the volatile memory as a first region and a second region by a processor of an electronic device including a volatile memory, wherein the second region is An operation with enhanced security than the first region, an operation of temporarily storing first information fetched from hardware or firmware in the second region by the processor, and a second operation in the second region by the processor An operation of temporarily storing information, an operation of recognizing, by the processor, an access request to the second information of an application program temporarily stored in the first area, and

상기 프로세서에 의하여, 상기 제 2 영역 내에서 상기 어플리케이션 프로그램의 적어도 일부를 이용하여 인증하는 동작을 포함 할 수 있다.The processor may include an operation of authenticating by using at least a part of the application program in the second area.

본 개시의 일 실시예에 따른 전자 장치를 동작하는 방법에 있어서, 휘발성 메모리를 포함하는 전자 장치의 프로세서에 의하여, 상기 휘발성 메모리를 제 1 영역 및 제 2 영역으로 설정하는 동작으로서, 상기 제 2 영역은 상기 제 1 영역보다 보안이 더 강화된 동작, 상기 프로세서에 의하여, 상기 제 2영역 내에 하드웨어 또는 펌웨어로부터 인출된 제 1 정보를 임시적으로 저장하는 동작, 상기 프로세서에 의하여, 상기 제 1 영역 내에 임시적으로 저장된 어플리케이션프로그램의 적어도 일부를 이용하여 상기 어플리케이션프로그램을 대표하는 데이터를 상기 제 2 영역 내에서 획득하는 동작, 상기 제 1 정보를 이용하여 상기 제 2 영역에서 상기 어플리케이션 프로그램을 대표하는 데이터를 암호화하는 동작, 상기 암호화된 상기 어플리케이션 프로그램을 대표하는 데이터를 상기 전자장치의 비휘발성 저장 장치에 저장하는 동작을 포함 할 수 있다.In a method of operating an electronic device according to an embodiment of the present disclosure, an operation of setting the volatile memory as a first region and a second region by a processor of an electronic device including a volatile memory, wherein the second region Is an operation with more enhanced security than the first region, an operation of temporarily storing first information fetched from hardware or firmware in the second region by the processor, and temporarily in the first region by the processor Acquiring data representing the application program in the second area using at least a portion of the stored application program, encrypting data representing the application program in the second area using the first information An operation, and storing the encrypted data representing the application program in a nonvolatile storage device of the electronic device.

본 개시의 일 실시예에 따른 전자 장치에 있어서, 휘발성 메모리, 비휘발성 저장 장치, 하드웨어 저장 장치, 프로세서를 포함하며, 상기 프로세서는, 상기 휘발성 메모리를 제 1 영역 및 제 2 영역으로 설정하고, 상기 제 2 영역 내에 상기 하드웨어 저장 장치로부터 인출된 제 1 정보를 임시적으로 저장하며. 상기 제 2 영역 내에 제 2 정보를 임시적으로 저장하고, 상기 제 1 영역 내에 임시적으로 저장된 어플리케이션 프로그램의 상기 제 2 정보에 대한 접근 요청을 인식하여, 상기 제 2 영역 내에서 상기 어플리케이션 프로그램의 적어도 일부를 이용하여 인증하는 것을 소프트웨어 적으로 수행하도록 구성될 수 있다. An electronic device according to an embodiment of the present disclosure includes a volatile memory, a nonvolatile storage device, a hardware storage device, and a processor, wherein the processor sets the volatile memory as a first region and a second region, and Temporarily storing first information fetched from the hardware storage device in a second area. Temporarily stores second information in the second area, recognizes a request for access to the second information of an application program temporarily stored in the first area, and stores at least a part of the application program in the second area It may be configured to perform authentication using software.

본 개시의 다양한 실시예들에 따른 접근 제어 방법 및 전자장치는 컴퓨팅 자원에 대한 어플리케이션의 접근을 제어하여 컴퓨팅 자원을 안전하게 보호할 수 있다.An access control method and an electronic device according to various embodiments of the present disclosure may safely protect a computing resource by controlling an application's access to a computing resource.

도 1은 본 개시의 일 실시예에 따른 전자장치에 대한 블록도를 도시한다.
도 2는 본 개시의 일 실시예에 따른 하드웨어 200의 블록도를 도시한다.
도 3은 본 개시의 일 실시예에 따른 프로그래밍 모듈 300의 블록도를 도시한다.
도 4는 본 개시의 일 실시예에 따른 제품들의 배치를 도시한다.
도 5는 본 개시의 일 실시예에 따른 하드웨어 500의 블록도를 도시한다.
도 6은 본 개시의 일 실시예에 따른 프로그래밍 모듈 600의 블록도이다.
도 7은 본 개시의 일 실시예에 따른 프로그래밍 모듈 700의 블록도이다.
도 8은 해시 값 계산 과정의 일례를 설명하기 위한 도면이다.
도 9는 본 개시의 일 실시예에 따른 접근 제어 테이블들을 도시한다.
도 10은 본 개시의 일 실시예에 따른 어플리케이션 등록 방법을 설명하기 위한 흐름도이다.
도 11은 본 개시의 다른 실시예에 따른 어플리케이션 등록 방법을 설명하기 위한 흐름도이다.
도 12는 본 개시의 일 실시예에 따른 어플리케이션 인증 방법을 설명하기 위한 흐름도이다.
도 13은 본 개시의 다른 실시예에 따른 어플리케이션 인증 방법을 설명하기 위한 흐름도이다.
도 14는 본 개시의 일 실시예에 따른 어플리케이션 등록 및 인증 방법을 설명하기 위한 도면이다.
1 is a block diagram of an electronic device according to an embodiment of the present disclosure.
2 is a block diagram of hardware 200 according to an embodiment of the present disclosure.
3 is a block diagram of a programming module 300 according to an embodiment of the present disclosure.
4 shows an arrangement of products according to an embodiment of the present disclosure.
5 illustrates a block diagram of hardware 500 according to an embodiment of the present disclosure.
6 is a block diagram of a programming module 600 according to an embodiment of the present disclosure.
7 is a block diagram of a programming module 700 according to an embodiment of the present disclosure.
8 is a diagram for describing an example of a hash value calculation process.
9 illustrates access control tables according to an embodiment of the present disclosure.
10 is a flowchart illustrating an application registration method according to an embodiment of the present disclosure.
11 is a flowchart illustrating an application registration method according to another embodiment of the present disclosure.
12 is a flowchart illustrating an application authentication method according to an embodiment of the present disclosure.
13 is a flowchart illustrating an application authentication method according to another embodiment of the present disclosure.
14 is a diagram for describing an application registration and authentication method according to an embodiment of the present disclosure.

이하, 첨부된 도면들을 참조하여 다양한 실시예들을 상세히 설명한다. 이때, 첨부된 도면들에서 동일한 구성 요소는 가능한 동일한 부호로 나타내고 있음에 유의해야 한다. 또한 본 개시의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략할 것이다. 하기의 설명에서는 본 개시의 다양한 실시 예들에 따른 동작을 이해하는데 필요한 부분만이 설명되며, 그 이외 부분의 설명은 본 개시의 요지를 흩트리지 않도록 생략될 것이라는 것을 유의하여야 한다.Hereinafter, various embodiments will be described in detail with reference to the accompanying drawings. In this case, it should be noted that the same components in the accompanying drawings are indicated by the same reference numerals as possible. In addition, detailed descriptions of known functions and configurations that may obscure the subject matter of the present disclosure will be omitted. In the following description, it should be noted that only parts necessary to understand the operation according to various embodiments of the present disclosure will be described, and descriptions of other parts will be omitted so as not to obscure the gist of the present disclosure.

본 개시에 따른 전자장치는, 통신 기능이 포함된 장치일 수 있다. 예를 들면, 스마트 폰(smartphone), 태블릿 PC(tablet personal computer), 이동전화기(mobile phone), 화상전화기, 전자북 리더기(e-book reader), 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 전자 팔찌, 전자 목걸이, 전자 앱세서리(appcessory), 카메라(camera), 웨어러블 장치(wearable device), 전자 시계(electronic clock), 손목 시계(wrist watch), 가전 제품(home appliance)(예: 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기 등), 인공 지능 로봇, TV, DVD(digital video disk) 플레이어, 오디오, 각종 의료기기(예: MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 초음파기 등), 네비게이션(navigation) 장치, GPS 수신기(global positioning system receiver), EDR(event data recorder), FDR(flight data recorder), 셋톱 박스(set-top box), TV 박스(예를 들면, 삼성 HomeSyncTM, 어플TVTM, 또는 구글 TVTM), 전자 사전, 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(electronic equipment for ship, 예를 들면, 선박용 항법 장치, 자이로콤파스 등), 항공 전자기기(avionics), 보안 기기, 전자 의복, 전자 키, 캠코더(camcorder), 게임 콘솔(game consoles), HMD(head-mounted display), 평판표시장치(flat panel display device), 전자 액자, 전자 앨범, 통신 기능을 포함한 가구(furniture) 또는 건물/구조물의 일부, 전자 보드(electronic board), 전자 사인 입력장치(electronic signature receiving device) 또는 프로젝터(projector) 등의 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 본 개시에 따른 전자장치는 전술한 기기들에 한정되지 않음은 당업자에게 자명하다.The electronic device according to the present disclosure may be a device including a communication function. For example, a smart phone (smartphone), a tablet PC (tablet personal computer), a mobile phone (mobile phone), a videophone, an e-book reader (e-book reader), a desktop PC (desktop personal computer), a laptop PC (laptop PC) personal computer), netbook computer, personal digital assistant (PDA), portable multimedia player (PMP), MP3 player, mobile medical device, electronic bracelet, electronic necklace, electronic appcessory, camera, Wearable devices, electronic clocks, wrist watches, home appliances (e.g. refrigerators, air conditioners, vacuum cleaners, ovens, microwaves, washing machines, air purifiers, etc.), artificial intelligence Robots, TVs, DVD (digital video disk) players, audio, various medical devices (e.g. MRA (magnetic resonance angiography), MRI (magnetic resonance imaging), CT (computed tomography), camera, ultrasound, etc.), navigation Device, global positioning system receiver, event data recorder (EDR), flight data recorder (FDR), set-top box, TV box (e.g., Samsung HomeSyncTM, App TVTM, or Google TVTM) ), electronic dictionaries, automobile infotainment devices, electronic equipment for ships (e.g., navigation devices for ships, gyro compasses, etc.), avionics, security devices, electronic clothing, electronic keys, Camcorder, crab Game consoles, head-mounted displays (HMDs), flat panel display devices, electronic frames, electronic albums, furniture or parts of buildings/structures including communication functions, electronic boards It may be a combination of one or more of various devices such as a board, an electronic signature receiving device, or a projector. It is obvious to those skilled in the art that the electronic device according to the present disclosure is not limited to the above-described devices.

본 개시에 따른 전자장치는 어떠한 기능(function)이나 동작(operation) 등이 어느 환경(environment)에서 실행(execute) 또는 계산(compute)되느냐에 따라, 여러 환경들로 구분될 수 있다. 예를 들면, 전자장치는 신뢰 환경(trusted environment)과 비신뢰 환경(non-trusted environment)을 포함할 수 있다. 신뢰 환경은 신뢰 영역(trusted world, trusted region or trusted area)으로 바꾸어 지칭될 수 있다. 비신뢰 환경도 비신뢰 영역(non-trusted world, non-trusted region or non-trusted area)으로 바꾸어 지칭될 수 있다.The electronic device according to the present disclosure may be classified into various environments according to which functions, operations, etc. are executed or computed in which environment. For example, the electronic device may include a trusted environment and a non-trusted environment. The trusted environment may be referred to as a trusted world, trusted region, or trusted area. The untrusted environment may also be referred to as a non-trusted world, non-trusted region or non-trusted area.

비신뢰 환경은 일반적인 운영체제(operating system; OS), 드라이버들, 미들웨어, 어플리케이션들을 포함할 수 있다. 이러한 시스템의 예는 안드로이드일 수 있다. 안드로이드는 리눅스 커널, 장치 드라이버들, 안드로이드 미들웨어 및 어플리케이션들을 포함할 수 있다. The untrusted environment may include a general operating system (OS), drivers, middleware, and applications. An example of such a system could be Android. Android may include a Linux kernel, device drivers, Android middleware, and applications.

신뢰 환경은 보안 요소들(security critical components)을 포함할 수 있다. 보안 요소들은 실행 중인(on run time) 비신뢰 환경의 구성 요소(예: 어플리케이션)에 의해 접근될 수 있다. 이러한 접근에 의해 특정 보안 관련 동작들(specific security related operations)이 실행될 수 있다. 일반적으로 신뢰 환경은 보안 OS, 보안 드라이버들, 보안 미들웨어 및 트러스티드 어플리케이션(TA: trusted application)들을 포함할 수 있다. 또한 신뢰 환경은 특별한 모듈을 포함할 수 있다. 이러한 특별한 모듈(예, 모니터)은 신뢰 환경과 비신뢰 환경 간의 통신을 중개 또는 제어할 수 있다. 비신뢰 환경은 신뢰 환경에 직접 접근할 수 없고, 모니터를 통해서만 신뢰 환경에 접근할 수 있도록 설정될 수 있다. 이를 위해, 모니터는 예컨대, ARM(Advance RISC Machine)사의 트러스트존(TrustZone) 기술이 적용될 수 있다.The trusted environment may include security critical components. Security elements can be accessed by components (eg, applications) in an untrusted environment on run time. Specific security related operations can be executed by this approach. In general, the trusted environment may include a security OS, security drivers, security middleware, and trusted applications (TA). Also, the trust environment may contain special modules. These special modules (eg, monitors) can mediate or control communication between a trusted environment and an untrusted environment. The untrusted environment cannot directly access the trusted environment, and can be configured to allow access to the trusted environment only through a monitor. To this end, the monitor may employ, for example, the TrustZone technology of Advance RISC Machine (ARM).

도 1은 본 개시의 일 실시예에 따른 전자장치에 100 대한 블록도를 도시한다.1 is a block diagram of 100 of an electronic device according to an embodiment of the present disclosure.

도 1을 참조하면, 전자장치 100은 버스 110, 프로세서 120, 메모리 130, 사용자 입력 모듈 140, 디스플레이 모듈 150, 또는 통신 모듈 160을 포함할 수 있다.Referring to FIG. 1, the electronic device 100 may include a bus 110, a processor 120, a memory 130, a user input module 140, a display module 150, or a communication module 160.

버스 110은, 전술한 구성요소들을 서로 연결하고, 전술한 구성요소들 간의 통신(예: 제어 메시지)을 전달하는 회로일 수 있다.The bus 110 may be a circuit that connects the above-described components to each other and transmits communication (eg, a control message) between the above-described components.

프로세서 120은, 예를 들면, 버스 110을 통해 전술한 다른 구성요소들(예: 메모리 130, 사용자 입력 모듈 140, 디스플레이 모듈 150, 통신 모듈 160 등)로부터 명령을 수신하여, 수신된 명령을 해독하고, 해독된 명령에 따른 연산이나 데이터 처리를 실행할 수 있다.The processor 120, for example, receives a command from the above-described other components (eg, memory 130, user input module 140, display module 150, communication module 160, etc.) through the bus 110, decrypts the received command, and , Operations or data processing according to the decoded instruction can be executed.

메모리 130은, 프로세서 120 또는 다른 구성요소들(예: 사용자 입력 모듈 140, 디스플레이 모듈 150, 통신 모듈 160 등)로부터 수신되거나 프로세서 120 또는 다른 구성요소들에 의해 생성된 명령 또는 데이터를 저장할 수 있다. 메모리 130은, 예를 들면, 커널 131, 미들웨어 132, 어플리케이션 프로그래밍 인터페이스(API: application programming interface) 133 또는 어플리케이션 134 등의 프로그래밍 모듈들을 포함할 수 있다. 전술한 각각의 프로그래밍 모듈들은 소프트웨어, 펌웨어, 하드웨어 또는 이들 중 적어도 둘 이상의 조합으로 구성될 수 있다.The memory 130 may store instructions or data received from the processor 120 or other components (eg, user input module 140, display module 150, communication module 160, etc.) or generated by the processor 120 or other components. The memory 130 may include programming modules such as a kernel 131, a middleware 132, an application programming interface (API) 133 or an application 134, for example. Each of the above-described programming modules may be composed of software, firmware, hardware, or a combination of at least two or more of them.

커널 131은 나머지 다른 프로그래밍 모듈들, 예를 들면, 미들웨어 132, API 133 또는 어플리케이션 134에 구현된 동작 또는 기능을 실행하는데 사용되는 시스템 자원들(예: 버스 110, 프로세서 120 또는 메모리 130 등)을 제어 또는 관리할 수 있다. 또한 커널 131은 미들웨어 132, API 133 또는 어플리케이션 134에서 전자장치 100의 개별 구성요소에 접근하여 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다.Kernel 131 controls other programming modules, for example, middleware 132, API 133, or system resources (eg, bus 110, processor 120, memory 130, etc.) used to execute operations or functions implemented in application 134. Or you can manage. In addition, the kernel 131 may provide an interface through which the middleware 132, the API 133, or the application 134 can access and control or manage individual components of the electronic device 100.

미들웨어 132는 API 133 또는 어플리케이션 134가 커널 131과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다. 또한, 미들웨어 132는 (다수의) 어플리케이션들 134로부터 수신된 작업 요청들과 관련하여, 예를 들면, (다수의) 어플리케이션들 134들 중 적어도 하나의 어플리케이션에 전자장치 100의 시스템 자원(예: 버스 110, 프로세서 120 또는 메모리 130 등)를 사용할 수 있는 우선순위를 배정하는 등의 방법을 이용하여 작업 요청에 대한 로드 밸런싱을 수행할 수 있다.The middleware 132 may play an intermediary role so that the API 133 or the application 134 communicates with the kernel 131 to exchange data. In addition, the middleware 132 relates to the work requests received from the (multiple) applications 134, for example, the system resource (eg, bus) of the electronic device 100 to at least one application among the (multiple) applications 134 110, processor 120, memory 130, etc.) may be used to perform load balancing for work requests.

API 133은 어플리케이션 134가 커널 131 또는 미들웨어 132에서 제공하는 기능을 제어할 수 있는 인터페이스로, 예를 들면, 파일 제어, 창 제어, 화상 처리 또는 문자 제어 등을 위한 적어도 하나의 인터페이스 또는 함수를 포함할 수 있다.API 133 is an interface through which the application 134 can control functions provided by the kernel 131 or the middleware 132, and may include at least one interface or function for, for example, file control, window control, image processing, or character control. I can.

사용자 입력 모듈 140은, 예를 들면, 사용자로부터 명령 또는 데이터를 입력 받아 버스 110을 통해 프로세서 120 또는 메모리 130에 전달할 수 있다. 디스플레이 모듈 150은 사용자에게 화상, 영상 또는 데이터 등을 표시할 수 있다.The user input module 140 may receive a command or data from a user and transmit it to the processor 120 or the memory 130 through the bus 110. The display module 150 may display an image, an image, or data to a user.

통신 모듈 160은 다른 전자장치 102와 전자장치 100간의 통신을 연결할 수 있다. 통신 모듈 160은 소정의 근거리 통신 프로토콜(예: Wifi(wireless fidelity), BT(Bluetooth), NFC(near field communication) 또는 소정의 네트워크 통신(예: Internet, LAN(local area network), WAN(wire area network), telecommunication network, cellular network, satellite network 또는 POTS(plain old telephone service) 등) 162를 지원할 수 있다. 전자장치들 102, 104 각각은 전자장치 100과 동일한(예: 같은 타입의) 장치이거나 또는 다른(예: 다른 타입의) 장치일 수 있다.The communication module 160 may connect communication between the other electronic device 102 and the electronic device 100. The communication module 160 includes a predetermined short-range communication protocol (e.g., Wifi (wireless fidelity), BT (Bluetooth), NFC (near field communication)) or a predetermined network communication (e.g. Internet, LAN (local area network), WAN (wire area network)). network), a telecommunication network, a cellular network, a satellite network, or a plain old telephone service (POTS), etc.) 162. Each of the electronic devices 102 and 104 is the same (eg, the same type) as the electronic device 100, or It may be a different (eg different type) device.

도 2는 본 개시의 다양한 실시예들에 따른 하드웨어 200의 블록도를 도시한다.2 is a block diagram of hardware 200 according to various embodiments of the present disclosure.

하드웨어 200은, 예를 들면, 도 1에 도시된 전자 장치 100일 수 있다. 도 2를 참조하면, 하드웨어 200은 하나 이상의 프로세서 210, SIM(subscriber identification module) 카드 214, 메모리 220, 통신 모듈 230, 센서 모듈 240, 사용자 입력 모듈 250, 디스플레이 모듈 260, 인터페이스 270, 오디오 코덱 280, 카메라 모듈 291, 전력관리 모듈 295, 배터리 296, 인디케이터 297 또는 모터 298을 포함할 수 있다.The hardware 200 may be, for example, the electronic device 100 illustrated in FIG. 1. Referring to FIG. 2, the hardware 200 includes one or more processors 210, a subscriber identification module (SIM) card 214, a memory 220, a communication module 230, a sensor module 240, a user input module 250, a display module 260, an interface 270, an audio codec 280, and A camera module 291, a power management module 295, a battery 296, an indicator 297, or a motor 298 may be included.

프로세서 210(예: 프로세서 120)은 하나 이상의 어플리케이션 프로세서(AP: application processor) 211 또는 하나 이상의 커뮤니케이션 프로세서(CP: communication processor) 213을 포함할 수 있다. 프로세서 210은, 예를 들면, 도 1에 도시된 프로세서 120일 수 있다. 도 2에서는 AP 211 및 CP 213이 프로세서 210 내에 포함된 것으로 도시되었으나, AP 211과 CP 213은 서로 다른 IC 패키지들 내에 각각 포함될 수 있다. 어떤 실시예에 따르면 AP 211 및 CP 213은 하나의 IC 패키지 내에 포함될 수 있다.The processor 210 (eg, processor 120) may include one or more application processors (AP) 211 or one or more communication processors (CP) 213. The processor 210 may be, for example, the processor 120 shown in FIG. 1. In FIG. 2, the AP 211 and CP 213 are shown to be included in the processor 210, but the AP 211 and CP 213 may be included in different IC packages, respectively. According to some embodiments, the AP 211 and CP 213 may be included in one IC package.

AP 211은 운영체제 또는 응용 프로그램을 구동하여 AP 211에 연결된 다수의 하드웨어 또는 소프트웨어 구성요소들을 제어하고, 멀티미디어 데이터를 포함한 각종 데이터 처리 및 연산을 수행할 수 있다. AP 211은, 예를 들면, SoC(system on chip)로 구현될 수 있다. 어떤 실시예에 따르면, 프로세서 210은 GPU(graphic processing unit, 미도시)를 더 포함할 수 있다.The AP 211 may drive an operating system or an application program to control a plurality of hardware or software components connected to the AP 211, and perform various data processing and operations including multimedia data. The AP 211 may be implemented with, for example, a system on chip (SoC). According to some embodiments, the processor 210 may further include a Graphic Processing Unit (GPU) (not shown).

CP 213은 하드웨어 200을 포함하는 전자장치(예: 전자장치 100)와 네트워크로 연결된 다른 전자장치들 간의 통신에서 데이터 링크를 관리하고 통신 프로토콜을 변환하는 기능을 수행할 수 있다. CP 213은, 예를 들면, SoC로 구현될 수 있다. 어떤 실시예에 따르면, CP 213은 멀티미디어 제어 기능의 적어도 일부를 수행할 수 있다. CP 213은, 예를 들면, 가입자 식별 모듈(예: SIM 카드 214)을 이용하여 통신 네트워크 내에서 단말의 구별 및 인증을 수행할 수 있다. 또한, CP 213은 사용자에게 음성 통화, 영상 통화, 문자 메시지 또는 패킷 데이터(packet data) 등의 서비스들을 제공할 수 있다.The CP 213 may perform a function of managing a data link and converting a communication protocol in communication between an electronic device including the hardware 200 (eg, electronic device 100) and other electronic devices connected through a network. CP 213 may be implemented as an SoC, for example. According to some embodiments, the CP 213 may perform at least part of a multimedia control function. CP 213, for example, by using a subscriber identification module (for example, SIM card 214) can perform the identification and authentication of the terminal in the communication network. In addition, the CP 213 may provide services such as a voice call, a video call, a text message, or packet data to a user.

또한, CP 213은 통신 모듈 230의 데이터 송수신을 제어할 수 있다. 도 2에서는, CP 213, 전력관리 모듈 295 또는 메모리 220 등의 구성요소들이 AP 211과 별개의 구성요소로 도시되어 있으나, 어떤 실시예에 따르면, AP 211이 전술한 구성요소들의 적어도 일부(예: CP 213)를 포함하도록 구현될 수 있다.In addition, the CP 213 may control data transmission/reception of the communication module 230. In FIG. 2, components such as a CP 213, a power management module 295, or a memory 220 are shown as separate components from the AP 211, but according to some embodiments, at least some of the aforementioned components (eg: CP 213) may be implemented.

어떤 실시예에 따르면, AP 211 또는 CP 213은 각각에 연결된 비휘발성 메모리 또는 다른 구성요소 중 적어도 하나로부터 수신한 명령 또는 데이터를 휘발성 메모리에 로드(load)하여 처리할 수 있다. 또한, AP 211 또는 CP 213은 다른 구성요소 중 적어도 하나로부터 수신하거나 다른 구성요소 중 적어도 하나에 의해 생성된 데이터를 비휘발성 메모리에 저장(store)할 수 있다.According to some embodiments, the AP 211 or CP 213 may load and process commands or data received from at least one of a nonvolatile memory or other components connected to each of the volatile memory. Further, the AP 211 or CP 213 may store data received from at least one of the other components or generated by at least one of the other components in a nonvolatile memory.

SIM 카드214은 가입자 식별 모듈을 구현한 카드일 수 있으며, 전자장치의 특정 위치에 형성된 슬롯에 삽입될 수 있다. SIM 카드 214은 고유한 식별 정보(예: ICCID(integrated circuit card identifier)) 또는 가입자 정보(예: IMSI(international mobile subscriber identity))를 포함할 수 있다.The SIM card 214 may be a card implementing a subscriber identification module, and may be inserted into a slot formed at a specific location of an electronic device. The SIM card 214 may include unique identification information (eg, integrated circuit card identifier (ICCID)) or subscriber information (eg, international mobile subscriber identity (IMSI)).

메모리 220은 내장 메모리 222 또는 외장 메모리 224를 포함할 수 있다. 메모리 220은, 예를 들면, 도 1에 도시된 메모리 130일 수 있다. 내장 메모리 222는, 예를 들면, 휘발성 메모리(예를 들면, DRAM(dynamic RAM), SRAM(static RAM), SDRAM(synchronous dynamic RAM) 등) 또는 비휘발성 메모리(non-volatile Memory, 예를 들면, OTPROM(one time programmable ROM), PROM(programmable ROM), EPROM(erasable and programmable ROM), EEPROM(electrically erasable and programmable ROM), mask ROM, flash ROM, NAND flash memory, NOR flash memory 등) 중 적어도 하나를 포함할 수 있다. 한 실시예에 따르면, 내장 메모리 222는 Solid State Drive(SSD)의 형태를 취할 수도 있다. 외장 메모리 224는 flash drive, 예를 들면, CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital) 또는 MemoryStick 등을 더 포함할 수 있다.The memory 220 may include an internal memory 222 or an external memory 224. The memory 220 may be, for example, the memory 130 shown in FIG. 1. The built-in memory 222 may be, for example, a volatile memory (e.g., dynamic RAM (DRAM), static RAM (SRAM), synchronous dynamic RAM (SDRAM), etc.)) or a non-volatile memory, for example, At least one of OTPROM (one time programmable ROM), PROM (programmable ROM), EPROM (erasable and programmable ROM), EEPROM (electrically erasable and programmable ROM), mask ROM, flash ROM, NAND flash memory, NOR flash memory, etc.) Can include. According to an embodiment, the internal memory 222 may take the form of a solid state drive (SSD). External memory 224 is a flash drive, for example, CF (compact flash), SD (secure digital), Micro-SD (micro secure digital), Mini-SD (mini secure digital), xD (extreme digital) or MemoryStick, etc. It may contain more.

통신 모듈 230은 무선 통신 모듈 231 또는 RF 모듈 234를 포함할 수 있다. 통신 모듈 230은, 예를 들면, 도 1에 도시된 통신 모듈 160일 수 있다. 무선 통신 모듈 231은, 예를 들면, WiFi 모듈 233, BT(bluetooth) 모듈 235, GPS 수신 모듈 237 또는 NFC(near field communication) 모듈239를 포함할 수 있다. 예를 들면, 무선 통신 모듈 231은 무선 주파수를 이용하여 무선 통신 기능을 제공할 수 있다. 추가적으로 또는 대체적으로, 무선 통신 모듈 231은 하드웨어 200을 네트워크(예: Internet, LAN(local area network), WAN(wire area network), telecommunication network, cellular network, satellite network 또는 POTS(plain old telephone service) 등)와 연결시키기 위한 네트워크 인터페이스(예: LAN card) 또는 모뎀 등을 포함할 수 있다. NFC 모듈 233은 NFC 안테나와 연결을 위한 접속 단자를 포함할 수 있다.The communication module 230 may include a wireless communication module 231 or an RF module 234. The communication module 230 may be, for example, the communication module 160 shown in FIG. 1. The wireless communication module 231 may include, for example, a WiFi module 233, a BT (bluetooth) module 235, a GPS receiving module 237, or a near field communication (NFC) module 239. For example, the wireless communication module 231 may provide a wireless communication function using a radio frequency. Additionally or alternatively, the wireless communication module 231 connects the hardware 200 to a network (eg, Internet, local area network (LAN), wire area network (WAN), telecommunication network, cellular network, satellite network, or plain old telephone service (POTS)). ) And may include a network interface (eg, LAN card) or modem. The NFC module 233 may include a connection terminal for connection with an NFC antenna.

RF 모듈 234는 데이터의 송수신, 예를 들면, RF 신호 또는 호출된 전자신호의 송수신을 담당할 수 있다. RF 모듈 234는, 도시되지는 않았으나, 예를 들면, 트랜시버(transceiver), PAM(power amp module), 주파수 필터(frequency filter) 또는 LNA(low noise amplifier) 등을 포함할 수 있다. 또한, RF 모듈234는 무선통신에서 자유공간상의 전자파를 송수신하기 위한 부품, 예를 들면, 도체 또는 도선 등을 더 포함할 수 있다.The RF module 234 may transmit and receive data, for example, transmit and receive an RF signal or a called electronic signal. Although not shown, the RF module 234 may include, for example, a transceiver, a power amp module (PAM), a frequency filter, or a low noise amplifier (LNA). In addition, the RF module 234 may further include a component for transmitting and receiving electromagnetic waves in free space in wireless communication, for example, a conductor or a conducting wire.

센서 모듈 240은, 예를 들면, 제스처 센서 240A, 자이로 센서 240B, 기압 센서 240C, 마그네틱 센서 240D, 가속도 센서 240E, 그립 센서 240F, 근접 센서 240G, RGB(red, green, blue) 센서 240H, 생체 센서 240I, 온/습도 센서 240J, 조도 센서 240K 또는 UV(ultra violet) 센서 240M 중의 적어도 하나를 포함할 수 있다. 센서 모듈 240은 물리량을 계측하거나 전자장치의 작동 상태를 감지하여, 계측 또는 감지된 정보를 전기 신호로 변환할 수 있다. 추가적으로/대체적으로, 센서 모듈 240은, 예를 들면, 후각 센서(E-nose sensor, 미도시), EMG 센서(electromyography sensor, 미도시), EEG 센서(electroencephalogram sensor, 미도시), ECG 센서(electrocardiogram sensor, 미도시) 또는 지문 센서 등을 포함할 수 있다. 센서 모듈 240은 그 안에 속한 적어도 하나 이상의 센서들을 제어하기 위한 제어회로를 더 포함할 수 있다.The sensor module 240 is, for example, a gesture sensor 240A, a gyro sensor 240B, an atmospheric pressure sensor 240C, a magnetic sensor 240D, an acceleration sensor 240E, a grip sensor 240F, a proximity sensor 240G, an RGB (red, green, blue) sensor 240H, a biometric sensor. It may include at least one of 240I, a temperature/humidity sensor 240J, an illuminance sensor 240K, or an ultra violet (UV) sensor 240M. The sensor module 240 may measure a physical quantity or detect an operation state of an electronic device, and convert the measured or detected information into an electric signal. Additionally/alternatively, the sensor module 240 includes, for example, an olfactory sensor (E-nose sensor, not shown), an EMG sensor (electromyography sensor, not shown), an EEG sensor (electroencephalogram sensor, not shown), and an ECG sensor (electrocardiogram). sensor, not shown) or a fingerprint sensor. The sensor module 240 may further include a control circuit for controlling at least one or more sensors included therein.

사용자 입력 모듈 250은 터치 패널(touch panel) 252, (디지털) 펜 센서(pen sensor) 254, 키(key) 256 또는 초음파 입력 장치 258을 포함할 수 있다. 사용자 입력 모듈 250은, 예를 들면, 도 1에 도시된 사용자 입력 모듈 140일수 있다. 터치 패널 252는, 예를 들면, 정전식, 감압식, 적외선 방식 또는 초음파 방식 중 적어도 하나의 방식으로 터치 입력을 인식할 수 있다. 또한, 터치 패널 252는 컨트롤러(미도시)를 더 포함할 수도 있다. 정전식의 경우, 직접 터치뿐만 아니라 간접 터치의 인식도 가능하다. "직접 터치 방식"은 전도성 물체(예를 들어, 손가락 또는 스타일러스펜)가 터치스크린에 직접 접촉하는 (contact) 방식을 의미할 수 있다. 어떤 실시예에 따르면, "간접 터치 방식"은, 비전도성 물체에 둘러싸인 전도성 물체(예, 장갑을 낀 상태의 손가락)가 터치스크린에 인접하거나, 비전도성 물체(예를 들어, 손가락을 낀 상태의 장갑)가 터치스크린에 접촉하는 방식을 의미할 수 있다. 어떤 실시예에 따르면, "간접 터치 방식"은 터치스크린의 위에 비전도성 물체(예를 들어, 터치스크린을 보호하기 위한 커버(cover))가 접촉한 상태에서 손가락이 비전도성 물체를 터치하는 방식을 의미할 수도 있다. 어떤 실시예에 따르면, "간접 터치 방식"은 손가락이 터치스크린에 접촉하지 않으면서, 미리 설정된 거리 이내로 터치스크린에 인접함에 의하여 이벤트를 발생시키는 방식, 보통 "호버링(hovering)," 이라고 불리는 방식을 의미할 수도 있다. 터치 패널 252는 택타일레이어(tactile layer)를 더 포함할 수도 있다. 이 경우, 터치 패널 252는 사용자에게 촉각 반응을 제공할 수 있다. 터치 패널 252는 디스플레이 모듈 260의 화면(즉, 터치스크린)에 설치될 수 있다. 예컨대, 터치패널 252는 터치스크린에 위치하는 애드 온 타입(add-on type) 또는 디스플레이 모듈 260 내에 삽입되는 온 셀 타입(on-cell type) 또는 인 셀 타입(in-cell type)으로 구현될 수 있다.The user input module 250 may include a touch panel 252, a (digital) pen sensor 254, a key 256, or an ultrasonic input device 258. The user input module 250 may be, for example, the user input module 140 shown in FIG. 1. The touch panel 252 may recognize a touch input in at least one of, for example, a capacitive type, a pressure sensitive type, an infrared type, or an ultrasonic type. In addition, the touch panel 252 may further include a controller (not shown). In the case of capacitive type, not only direct touch but also indirect touch can be recognized. The "direct touch method" may mean a method in which a conductive object (eg, a finger or a stylus pen) directly contacts the touch screen. According to some embodiments, the "indirect touch method" means that a conductive object (eg, a gloved finger) surrounded by a non-conductive object is adjacent to the touch screen or a non-conductive object (eg, a finger is worn). Glove) may refer to a method of contacting the touch screen. According to some embodiments, the "indirect touch method" refers to a method in which a finger touches a non-conductive object while a non-conductive object (eg, a cover for protecting the touch screen) is in contact with the touch screen. It could mean. According to some embodiments, the "indirect touch method" refers to a method of generating an event by adjoining the touch screen within a preset distance without a finger contacting the touch screen, commonly referred to as "hovering". It could mean. The touch panel 252 may further include a tactile layer. In this case, the touch panel 252 may provide a tactile reaction to the user. The touch panel 252 may be installed on a screen (ie, a touch screen) of the display module 260. For example, the touch panel 252 may be implemented as an add-on type positioned on the touch screen or an on-cell type or an in-cell type inserted into the display module 260. have.

(디지털) 펜 센서 254는, 예를 들면, 사용자의 터치 입력을 받는 것과 동일 또는 유사한 방법 또는 별도의 인식용 시트(sheet)를 이용하여 구현될 수 있다. 키 256로서, 예를 들면, 키패드 또는 터치 키가 이용될 수 있다. 초음파 입력 장치 258은 초음파 신호를 발생하는 펜을 통해, 단말에서 마이크(예: 마이크 288)로 음파를 감지하여 데이터를 확인할 수 있는 장치로서, 무선 인식이 가능하다. 어떤 실시예에 따르면, 하드웨어 200은 통신 모듈 230을 이용하여 이와 연결된 외부 장치(예: 네트워크, 컴퓨터 또는 서버)로부터 사용자 입력을 수신할 수도 있다.The (digital) pen sensor 254 may be implemented using, for example, the same or similar method as receiving a user's touch input or a separate sheet for recognition. As the key 256, a keypad or a touch key may be used, for example. The ultrasonic input device 258 is a device that can check data by detecting sound waves with a microphone (eg, a microphone 288) in a terminal through a pen that generates an ultrasonic signal, and is capable of wireless recognition. According to some embodiments, the hardware 200 may receive a user input from an external device (eg, a network, a computer, or a server) connected thereto by using the communication module 230.

디스플레이 모듈 260은 패널 262 또는 홀로그램 264를 포함할 수 있다. 디스플레이 모듈 260은, 예를 들면, 도 1에 도시된 디스플레이 모듈 150일 수 있다. 패널 262는, 예를 들면, LCD(liquid-crystal display) 또는 AM-OLED(active-matrix organic light-emitting diode) 등일 수 있다. 패널262는, 예를 들면, 유연하게(flexible), 투명하게(transparent) 또는 착용할 수 있게(wearable) 구현될 수 있다. 패널 262는 터치 패널 252와 하나의 모듈로 구성될 수도 있다. 홀로그램 264는 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 한 실시예에 따르면, 디스플레이 모듈 260은 패널 262 또는 홀로그램 264를 제어하기 위한 제어회로를 더 포함할 수 있다.The display module 260 may include a panel 262 or a hologram 264. The display module 260 may be, for example, the display module 150 shown in FIG. 1. The panel 262 may be, for example, a liquid-crystal display (LCD) or an active-matrix organic light-emitting diode (AM-OLED). The panel 262 may be implemented, for example, to be flexible, transparent or wearable. The panel 262 may be configured with the touch panel 252 as a single module. The hologram 264 can show a three-dimensional image in the air using interference of light. According to an embodiment, the display module 260 may further include a control circuit for controlling the panel 262 or the hologram 264.

인터페이스 270은, 예를 들면, HDMI(high-definition multimedia interface) 272, USB(universal serial bus) 274, 프로젝터 276 또는 D-sub(D-subminiature) 278을 포함할 수 있다. 추가적으로 또는 대체적으로, 인터페이스 270은, 예를 들면, SD(secure Digital)/MMC(multi-media card)(미도시) 또는 IrDA(infrared data association, 미도시)를 포함할 수 있다.The interface 270 may include, for example, a high-definition multimedia interface (HDMI) 272, a universal serial bus (USB) 274, a projector 276, or a D-subminiature (D-sub) 278. Additionally or alternatively, the interface 270 may include, for example, a secure digital (SD)/multi-media card (MMC) (not shown) or an infrared data association (IrDA) (not shown).

오디오 코덱 280은 음성과 전기신호를 쌍방향으로 변환시킬 수 있다. 오디오 코덱 280은, 예를 들면, 스피커 282, 리시버 284, 이어폰 286 또는 마이크 288 등을 통해 입력 또는 출력되는 음성 정보를 변환시킬 수 있다.The audio codec 280 can convert voice and electric signals bidirectionally. The audio codec 280 may convert voice information input or output through, for example, a speaker 282, a receiver 284, an earphone 286, or a microphone 288.

카메라 모듈 291은 화상 및 동영상을 촬영할 수 있는 장치로서, 한 실시예에 따르면, 하나 이상의 이미지 센서(예: 전면 렌즈 또는 후면 렌즈), ISP(image signal processor, 미도시) 또는 플래쉬 LED(flash LED, 미도시)를 포함할 수 있다.The camera module 291 is a device capable of capturing images and moving pictures, and according to an embodiment, one or more image sensors (eg, a front lens or a rear lens), an image signal processor (ISP), or a flash LED (flash LED), (Not shown) may be included.

전력관리 모듈 295는 하드웨어 200의 전력을 관리할 수 있다. 도시하지는 않았으나, 전력관리 모듈 295는, 예를 들면, PMIC(power management integrated circuit), 충전 IC(charger integrated circuit) 또는 배터리 게이지(battery fuel gauge)를 포함할 수 있다.The power management module 295 can manage power of the hardware 200. Although not shown, the power management module 295 may include, for example, a power management integrated circuit (PMIC), a charger integrated circuit (IC), or a battery fuel gauge.

PMIC는, 예를 들면, 집적회로 또는 SoC 반도체 내에 탑재될 수 있다. 충전 방식은 유선과 무선으로 구분될 수 있다. 충전 IC는 배터리를 충전시킬 수 있으며, 충전기로부터의 과전압 또는 과전류 유입을 방지할 수 있다. 한 실시예에 따르면, 충전 IC는 유선 충전 방식 또는 무선 충전 방식 중 적어도 하나를 위한 충전 IC를 포함할 수 있다. 무선 충전 방식으로는, 예를 들면, 자기공명 방식, 자기유도 방식 또는 전자기파 방식 등이 있으며, 무선 충전을 위한 부가적인 회로, 예를 들면, 코일 루프, 공진 회로, 정류기 등의 회로가 추가될 수 있다.The PMIC can be mounted in an integrated circuit or SoC semiconductor, for example. Charging methods can be divided into wired and wireless. The charger IC can charge the battery and prevent overvoltage or overcurrent from flowing from the charger. According to an embodiment, the charger IC may include a charger IC for at least one of a wired charging method or a wireless charging method. The wireless charging method includes, for example, a magnetic resonance method, a magnetic induction method, or an electromagnetic wave method, and additional circuits for wireless charging, such as a coil loop, a resonance circuit, and a rectifier, may be added. have.

배터리 게이지는, 예를 들면, 배터리 296의 잔량, 충전 중 전압, 전류 또는 온도를 측정할 수 있다. 배터리 296은 전기를 생성하여 전원을 공급할 수 있고, 예를 들면, 충전식 전지(rechargeable battery)일 수 있다.The battery gauge may measure, for example, the remaining amount of the battery 296, voltage, current, or temperature during charging. The battery 296 may generate electricity to supply power, and may be, for example, a rechargeable battery.

인디케이터 297은 하드웨어 200 혹은 그 일부(예: AP 211)의 특정 상태, 예를 들면, 부팅 상태, 메시지 상태 또는 충전 상태 등을 표시할 수 있다. 모터 298은 전기적 신호를 기계적 진동으로 변환할 수 있다. MCU 299는, 센서 모듈 240을 제어할 수 있다.The indicator 297 may display a specific state of the hardware 200 or a portion thereof (eg, the AP 211), for example, a boot state, a message state, or a charging state. Motor 298 may convert electrical signals into mechanical vibrations. The MCU 299 can control the sensor module 240.

도시되지는 않았으나, 하드웨어 200은 모바일 TV 지원을 위한 처리 장치(예: GPU)를 포함할 수 있다. 모바일 TV지원을 위한 처리 장치는, 예를 들면, DMB(digital multimedia broadcasting), DVB(digital video broadcasting) 또는 미디어 플로우(media flow) 등의 규격에 따른 미디어 데이터를 처리할 수 있다. 본 개시에 따른 하드웨어의 전술한 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성 요소의 명칭은 전자장치의 종류에 따라서 달라질 수 있다. 본 개시에 따른 하드웨어는 전술한 구성요소 중 적어도 하나를 포함하여 구성될 수 있으며, 일부 구성요소가 생략되거나 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 또한, 본 개시에 따른 하드웨어의 구성 요소들 중 일부가 결합되어 하나의 개체(entity)로 구성됨으로써, 결합되기 이전의 해당 구성 요소들의 기능을 동일하게 수행할 수 있다.Although not shown, the hardware 200 may include a processing device (eg, a GPU) for supporting mobile TV. A processing device for supporting mobile TV may process media data according to standards such as digital multimedia broadcasting (DMB), digital video broadcasting (DVB), or media flow. Each of the aforementioned components of the hardware according to the present disclosure may be composed of one or more components, and the name of the corresponding component may vary depending on the type of electronic device. The hardware according to the present disclosure may be configured to include at least one of the above-described components, and some components may be omitted or additional other components may be further included. In addition, some of the components of the hardware according to the present disclosure are combined to form a single entity, so that functions of the corresponding components before the combination can be performed in the same manner.

본 개시에 사용된 용어 "모듈"은, 예를 들어, 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합을 포함하는 단위(unit)를 의미할 수 있다. "모듈"은 예를 들어, 유닛(unit), 로직(logic), 논리 블록(logical block), 부품(component) 또는 회로(circuit) 등의 용어와 바꾸어 사용(interchangeably use)될 수 있다. "모듈"은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. "모듈"은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다. "모듈"은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들면, 본 개시에 따른 "모듈"은, 알려졌거나 앞으로 개발될, 어떤 동작들을 수행하는 ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays) 또는 프로그램 가능 논리 장치(programmable-logic device) 중 적어도 하나를 포함할 수 있다.The term "module" used in the present disclosure may mean, for example, a unit including one of hardware, software, or firmware, or a combination of two or more. “Module” may be used interchangeably with terms such as unit, logic, logical block, component, or circuit. The "module" may be a minimum unit or a part of an integrally configured component. The "module" may be a minimum unit or a part of one or more functions. The "module" can be implemented mechanically or electronically. For example, the "module" according to the present disclosure is known or will be developed in the future, application-specific integrated circuit (ASIC) chips, field-programmable gate arrays (FPGAs) or programmable logic devices that perform certain operations. logic device).

도 3은 본 개시의 다양한 실시예들에 따른 프로그래밍 모듈 300의 블록도를 도시한다.3 is a block diagram of a programming module 300 according to various embodiments of the present disclosure.

도 3을 참조하면, 프로그래밍 모듈 300은 도 1에 도시된 전자장치 100(예: 메모리 130)에 포함(예: 저장)될 수 있다. 프로그래밍 모듈 300의 적어도 일부는 소프트웨어, 펌웨어, 하드웨어 또는 이들 중 적어도 둘 이상의 조합으로 구성될 수 있다. 프로그래밍 모듈 300은 하드웨어(예: 하드웨어 200)에 구현되어 전자장치(예: 전자장치 100)에 관련된 자원을 제어하는 운영체제(OS: operation system) 또는 운영체제 상에서 구동되는 다양한 어플리케이션(예: 어플리케이션 370)을 포함할 수 있다. 예를 들면, 운영체제는 안드로이드(Android), iOS, 윈도우즈(Windows), 심비안(Symbian), 타이젠(Tizen) 또는 바다(Bada) 등이 될 수 있다. 도 3을 참조하면, 프로그래밍 모듈 300은 커널 310, 미들웨어 330, API(application programming interface) 360 또는 어플리케이션 370을 포함할 수 있다.Referring to FIG. 3, the programming module 300 may be included (eg, stored) in the electronic device 100 (eg, memory 130) illustrated in FIG. 1. At least a portion of the programming module 300 may be composed of software, firmware, hardware, or a combination of at least two or more of them. The programming module 300 is implemented in hardware (eg, hardware 200) to provide an operating system (OS) that controls resources related to an electronic device (eg, electronic device 100) or various applications (eg, application 370) running on the operating system. Can include. For example, the operating system may be Android, iOS, Windows, Symbian, Tizen, or Bada. Referring to FIG. 3, the programming module 300 may include a kernel 310, a middleware 330, an application programming interface (API) 360, or an application 370.

커널 310(예: 커널 131)은 시스템 리소스 매니저 311 또는 디바이스 드라이버 312를 포함할 수 있다. 시스템 리소스 매니저 311은, 예를 들면, 프로세스관리부 313, 메모리관리부 315 또는 파일시스템관리부 317 등을 포함할 수 있다. 시스템 리소스 매니저 311은 시스템 자원의 제어, 할당 또는 회수 등을 수행할 수 있다. 디바이스 드라이버 312는, 예를 들면, 디스플레이 드라이버 314, 카메라 드라이버 316, 블루투스 드라이버 318, 공유 메모리 드라이버 320, USB 드라이버 322, 키패드 드라이버 324, WiFi 드라이버 326 또는 오디오 드라이버 328을 포함할 수 있다. 또한, 한 실시예에 따르면, 디바이스 드라이버 312는 IPC (inter-process communication, 미도시) 드라이버를 포함할 수 있다.The kernel 310 (eg, the kernel 131) may include a system resource manager 311 or a device driver 312. The system resource manager 311 may include, for example, a process management unit 313, a memory management unit 315, a file system management unit 317, or the like. The system resource manager 311 may control, allocate, or recover system resources. The device driver 312 may include, for example, a display driver 314, a camera driver 316, a Bluetooth driver 318, a shared memory driver 320, a USB driver 322, a keypad driver 324, a WiFi driver 326, or an audio driver 328. In addition, according to an embodiment, the device driver 312 may include an IPC (inter-process communication, not shown) driver.

미들웨어 330은 어플리케이션 370이 공통적으로 필요로 하는 기능을 제공하기 위해 미리 구현해 놓은 복수의 모듈들을 포함할 수 있다. 또한, 미들웨어 330은 어플리케이션 370이 전자장치 내부의 제한된 시스템 자원을 효율적으로 사용할 수 있도록 API 360를 통해 기능을 제공할 수 있다. 예를 들면, 도 3에 도시된 바와 같이, 미들웨어 330(예: 미들웨어 132)은 런타임 라이브러리 335, 어플리케이션 매니저(application manager) 341, 윈도우 매니저(window manager) 342, 멀티미디어 매니저(multimedia manager) 343, 리소스 매니저(resource manager) 344, 파워 매니저(power manager) 345, 데이터베이스 매니저(database manager) 346, 패키지 매니저 347, 연결 매니저(connectivity manager) 348, 통지 매니저(notification manager) 349, 위치 매니저(location manager) 350, 그래픽 매니저(graphic manager) 351 또는 보안 매니저(security manager) 352 중 적어도 하나를 포함할 수 있다.The middleware 330 may include a plurality of modules implemented in advance to provide functions commonly required by the application 370. In addition, the middleware 330 may provide a function through API 360 so that the application 370 can efficiently use limited system resources inside the electronic device. For example, as shown in FIG. 3, the middleware 330 (eg, middleware 132) is a runtime library 335, an application manager 341, a window manager 342, a multimedia manager 343, and a resource. Resource manager 344, power manager 345, database manager 346, package manager 347, connectivity manager 348, notification manager 349, location manager 350 , At least one of a graphic manager 351 and a security manager 352 may be included.

런타임 라이브러리 335는, 예를 들면, 어플리케이션 370이 실행되는 동안에 프로그래밍 언어를 통해 새로운 기능을 추가하기 위해 컴파일러가 사용하는 라이브러리 모듈을 포함할 수 있다. 한 실시예에 따르면, 런타임 라이브러리 335는 입출력, 메모리 관리 또는 산술 함수에 대한 기능 등을 수행할 수 있다.The runtime library 335 may include, for example, a library module used by a compiler to add a new function through a programming language while the application 370 is being executed. According to an embodiment, the runtime library 335 may perform input/output, memory management, or functions for arithmetic functions.

어플리케이션 매니저 341은, 예를 들면, 어플리케이션 370 중 적어도 하나의 어플리케이션의 생명주기(life cycle)를 관리할 수 있다. 윈도우 매니저 342는 화면에서 사용하는 GUI 자원을 관리할 수 있다. 멀티미디어 매니저 343은 다양한 미디어 파일들의 재생에 필요한 포맷을 파악하고, 해당 포맷에 맞는 코덱(codec)을 이용하여 미디어 파일의 인코딩(encoding) 또는 디코딩(decoding)을 수행할 수 있다. 리소스 매니저 344는 어플리케이션 370 중 적어도 어느 하나의 어플리케이션의 소스 코드, 메모리 또는 저장 공간 등의 자원을 관리할 수 있다.The application manager 341 may manage, for example, a life cycle of at least one application among the applications 370. The window manager 342 may manage GUI resources used on the screen. The multimedia manager 343 may grasp a format required for reproduction of various media files, and may perform encoding or decoding of a media file using a codec suitable for the corresponding format. The resource manager 344 may manage resources such as source code, memory, or storage space of at least one of the applications 370.

파워 매니저 345는 바이오스(BIOS: basic input/output system) 등과 함께 동작하여 배터리(battery) 또는 전원을 관리하고, 동작에 필요한 전력 정보 등을 제공할 수 있다. 데이터베이스 매니저 346은 어플리케이션 370 중 적어도 하나의 어플리케이션에서 사용할 데이터베이스를 생성, 검색 또는 변경할 수 있도록 관리할 수 있다. 패키지 매니저 347은 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 업데이트를 관리할 수 있다.The power manager 345 may operate together with a basic input/output system (BIOS) to manage a battery or power supply, and provide power information necessary for operation. The database manager 346 may manage to create, search, or change a database to be used by at least one of the applications 370. The package manager 347 may manage installation or update of an application distributed in the form of a package file.

연결 매니저 348은, 예를 들면, WiFi 또는 블루투스 등의 무선 연결을 관리할 수 있다. 통지 매니저 349는 도착 메시지, 약속, 근접성 알림 등의 사건(event)을 사용자에게 방해되지 않는 방식으로 표시 또는 통지할 수 있다. 위치 매니저 350은 전자장치의 위치 정보를 관리할 수 있다. 그래픽 매니저 351은 사용자에게 제공될 그래픽 효과 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다. 보안 매니저 352는 시스템 보안 또는 사용자 인증 등에 필요한 제반 보안 기능을 제공할 수 있다. 한 실시예에 따르면, 전자장치(예: 전자장치 100)가 전화 기능을 구비한 경우에는, 미들웨어 330은 전자장치의 음성 또는 영상 통화 기능을 관리하기 위한 통화 매니저(telephony manager, 미도시)를 더 포함할 수 있다.The connection manager 348 may manage a wireless connection such as WiFi or Bluetooth. The notification manager 349 may display or notify an event such as an arrival message, an appointment, and a proximity notification in a manner that does not interfere with the user. The location manager 350 may manage location information of an electronic device. The graphic manager 351 may manage a graphic effect to be provided to a user or a user interface related thereto. The security manager 352 may provide all security functions necessary for system security or user authentication. According to an embodiment, when the electronic device (eg, the electronic device 100) has a phone function, the middleware 330 further includes a telephony manager (not shown) for managing the voice or video call function of the electronic device. Can include.

미들웨어 330은 전술한 내부 구성요소 모듈들의 다양한 기능 조합을 통해 새로운 미들웨어 모듈을 생성하여 사용할 수 있다. 미들웨어 330은 차별화된 기능을 제공하기 위해 운영체제의 종류별로 특화된 모듈을 제공할 수 있다. 또한, 미들웨어 330은 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다. 따라서, 본 개시의 실시예에 기재된 구성요소를 일부 생략하거나 다른 구성요소를 더 구비하거나 또는 유사한 기능을 수행하는 다른 명칭을 갖는 구성요소로 대체할 수 있다.The middleware 330 may create and use a new middleware module through a combination of various functions of the aforementioned internal component modules. The middleware 330 may provide a module specialized for each type of operating system in order to provide differentiated functions. In addition, the middleware 330 may dynamically delete some of the existing components or add new components. Accordingly, some of the components described in the embodiments of the present disclosure may be omitted, other components may be further provided, or components having different names performing similar functions may be substituted.

API 360(예: API 133)은 API 프로그래밍 함수들의 집합으로, 운영체제에 따라 다른 구성으로 제공될 수 있다. 예를 들면, 안드로이드 또는 iOS의 경우, 예를 들면, 플랫폼별로 하나의 API 셋을 제공할 수 있으며, 타이젠(Tizen)의 경우, 예를 들면, 두 개 이상의 API 셋을 제공할 수 있다.API 360 (eg, API 133) is a set of API programming functions and may be provided in different configurations depending on the operating system. For example, in the case of Android or iOS, for example, one API set may be provided for each platform, and in the case of Tizen, for example, two or more API sets may be provided.

어플리케이션 370(예: 어플리케이션 134)은, 예를 들면, 프리로드 어플리케이션(preloaded Application) 또는 제 삼자 어플리케이션(third party application)을 포함할 수 있다.The application 370 (eg, the application 134) may include, for example, a preloaded application or a third party application.

프로그래밍 모듈 300의 적어도 일부는 컴퓨터로 읽을 수 있는 저장매체(computer-readable storage media)에 저장된 명령어로 구현될 수 있다. 명령어는, 하나 이상의 프로세서(예: 프로세서 210)에 의해 실행될 경우, 하나 이상의 프로세서가 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 메모리 260이 될 수 있다. 프로그래밍 모듈 300의 적어도 일부는, 예를 들면, 프로세서 210에 의해 구현(implement)(예: 실행)될 수 있다. 프로그래밍 모듈 300의 적어도 일부는 하나 이상의 기능을 수행하기 위한, 예를 들면, 모듈, 프로그램, 루틴, 명령어 세트 (sets of instructions) 및/또는 프로세스 등을 포함할 수 있다.At least a part of the programming module 300 may be implemented as a command stored in a computer-readable storage medium. When an instruction is executed by one or more processors (eg, processor 210), one or more processors may perform a function corresponding to the instruction. The computer-readable storage medium may be, for example, the memory 260. At least a part of the programming module 300 may be implemented (eg, executed) by, for example, the processor 210. At least a portion of the programming module 300 may include, for example, a module, a program, a routine, a set of instructions, and/or a process for performing one or more functions.

본 개시에 따른 프로그래밍 모듈(예: 프로그래밍 모듈 300)의 구성요소들의 명칭은 운영체제의 종류에 따라서 달라질 수 있다. 본 개시에 따른 프로그래밍 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 본 개시에 따른 프로그래밍 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 처리될 수 있으며, 또한 일부 동작이 생략되거나, 다른 동작이 추가될 수 있다.Names of components of a programming module (eg, programming module 300) according to the present disclosure may vary depending on the type of operating system. The programming module according to the present disclosure may further include at least one or more of the above-described components, some of which are omitted, or additional other components. Operations performed by the programming module or other components according to the present disclosure may be processed in a sequential, parallel, repetitive or heuristic method, and some operations may be omitted or other operations may be added.

도 4는 본 개시 일 실시예에 따른 구성의 배치를 도시한다.4 shows an arrangement of a configuration according to an embodiment of the present disclosure.

도 4를 참조하면, 어떤 사적인 어플리케이션들 410은 신뢰 환경의 하드웨어 420(예: trusted storage)에 있는 시스템 자원 또는 어플리케이션 자원에 대한 접근을 신뢰 환경에게 요청할 수 있다. 여기서 어플리케이션 자원은 예를 들면, 키(예: 보안키), 민감한(sensitive) 데이터, 어떤 곳에 대한 접근 등을 의미할 수 있다. 시스템 자원은 메모리, 프로세서, 버스 등을 의미할 수 있다. 신뢰 플랫폼 430 상의 해시 기반 어플리케이션 접근 제어 440은 각 어플리케이션의 기밀성을 유지하면서 그들의 자원에 대한 어플리케이션들의 독립된 접근을 관리 가능하게 한다. 높은(하드웨어 수준의) 보안 수준을 달성하면서도 사용자 상호작용(비밀번호 입력)은 요청되지 않는다.Referring to FIG. 4, certain private applications 410 may request access to system resources or application resources in hardware 420 (eg, trusted storage) of the trusted environment from the trusted environment. Here, the application resource may mean, for example, a key (eg, a security key), sensitive data, or access to a certain place. System resources may refer to memory, processor, bus, and the like. The hash-based application access control 440 on the trusted platform 430 enables the management of independent access of applications to their resources while maintaining the confidentiality of each application. While achieving a high (hardware level) level of security, no user interaction (password input) is required.

도 5는 본 개시의 일 실시예에 따른 하드웨어 500의 블록도를 도시한다.5 illustrates a block diagram of hardware 500 according to an embodiment of the present disclosure.

하드웨어 500은, 예를 들면, 도 1에 도시된 전자 장치 100일 수 있다. 도 5를 참조하면, 하드웨어 500은 제 1 메모리 510, 제 2 메모리 520, 제 3 메모리 530 및 프로세서 540을 포함할 수 있다. The hardware 500 may be, for example, the electronic device 100 illustrated in FIG. 1. Referring to FIG. 5, the hardware 500 may include a first memory 510, a second memory 520, a third memory 530, and a processor 540.

제 1 메모리 510은 프로세서 540에 의하여, 논리적으로 또는 물리적으로 비신뢰 환경 511(제 1 영역)과 신뢰 환경 512(제 2 영역)로 설정될 수 있다. 또한 제 1 메모리 510은 휘발성 메모리(예: DRAM)일 수 있다.The first memory 510 may be logically or physically set by the processor 540 into an untrusted environment 511 (a first region) and a trusted environment 512 (a second region). Also, the first memory 510 may be a volatile memory (eg, DRAM).

제 2 메모리 520은 접근 제어 모듈 521, 접근 제어 테이블 522 및 어플리케이션들 523_1~523_N을 포함할 수 있다. 제 2 메모리 520은 비휘발성 메모리(예: 플래시(flash) 메모리)일 수 있다. The second memory 520 may include an access control module 521, an access control table 522, and applications 523_1 to 523_N. The second memory 520 may be a nonvolatile memory (eg, flash memory).

제 3 메모리 530은 비밀 키(예: 비밀 키 531)를 포함할 수 있다. 제 3 메모리 520은 비휘발성 메모리(예: 롬(ROM))일 수 있다. 도 5에서는 제 3 메모리 530이 프로세서 500과 별개의 구성요소로 도시되어 있으나, 어떤 실시예에 따르면, 제 3 메모리 530은 프로세서 500의 내부에 전체 또는 일부가 포함될 수 있다.The third memory 530 may include a secret key (eg, secret key 531). The third memory 520 may be a nonvolatile memory (eg, ROM). In FIG. 5, the third memory 530 is shown as a separate component from the processor 500, but according to some embodiments, the third memory 530 may be entirely or partially included in the processor 500.

프로세서 510은 도 2에 도시된 어플리케이션 프로세서 211일 수 있다. 프로세서 510에 배터리의 전원이 공급되면, 부팅 프로그램이 제 2 메모리 520(또는 제 3 메모리 530)에서 제 1 메모리 510으로 로딩된다. 프로세서 540은 제 1 메모리 510으로 로딩된 부팅 프로그램에 액세스하여 그 명령을 해독하고, 해독 결과에 따른 기능(예: 환경 분류, 운영체제 로딩 작업)을 실행할 수 있다. 프로세서 540은 제 1 메모리 510의 전체 또는 일부를 비신뢰 환경 511과 신뢰 환경 512로 분류하고, 운영체제를 제 2 메모리 520(또는 제 3 메모리 530)에서 제 1 메모리 510의 신뢰 환경 512로 로딩할 수 있다. 프로세서 540은 제 1 메모리 510으로 로딩된 운영체제에 액세스하여 그 기능(예: 접근 제어 모듈 및 그 테이블 로딩 작업)을 실행할 수 있다. 프로세서 540은 접근 제어 모듈 521 및 비밀 키 530을 신뢰 환경 512으로 로딩할 수 있다. 어떠한 실시예에 따르면, 비밀 키 531은 신뢰 환경 512으로 로딩되지 않을 수도 있다. 또한, 프로세서 540은 접근 제어 테이블 522(예: 접근 제어 테이블 612)을 비신뢰 환경 511으로 로딩하고, 어플리케이션들 523_1~523_N 중에서 적어도 하나를 비신뢰 환경 511으로 로딩할 수 있다. 어떠한 실시예에 따르면, 접근 제어 테이블 522(예: 도 7에 도시된 접근 제어 테이블 722)는 신뢰 환경 512으로 로딩될 수도 있다. 프로세서 540은 접근 제어 모듈 521에 액세스하여 그 기능을 실행할 수 있다.The processor 510 may be an application processor 211 shown in FIG. 2. When power from the battery is supplied to the processor 510, the booting program is loaded from the second memory 520 (or the third memory 530) to the first memory 510. The processor 540 may access the boot program loaded into the first memory 510, decrypt the command, and execute functions (eg, environment classification, operating system loading operation) according to the decryption result. The processor 540 classifies all or part of the first memory 510 into an untrusted environment 511 and a trusted environment 512, and loads the operating system from the second memory 520 (or third memory 530) into the trusted environment 512 of the first memory 510. have. The processor 540 may access the operating system loaded into the first memory 510 and execute its functions (eg, an access control module and a table loading operation). The processor 540 may load the access control module 521 and the secret key 530 into the trusted environment 512. According to some embodiments, the secret key 531 may not be loaded into the trusted environment 512. In addition, the processor 540 may load the access control table 522 (eg, the access control table 612) into the untrusted environment 511, and at least one of the applications 523_1 to 523_N may be loaded into the untrusted environment 511. According to some embodiments, the access control table 522 (eg, the access control table 722 shown in FIG. 7) may be loaded into the trusted environment 512. The processor 540 may access the access control module 521 and execute its function.

다른 실시예에 따르면, 전자 장치는 휘발성 메모리(제 1 메모리 510), 비휘발성 저장 장치(예: 제 2 메모리 520), 하드웨어 저장 장치(예: 제 3 메모리 530), 프로세서를 포함하며, 상기 프로세서는, 상기 휘발성 메모리를 제 1 영역(예: 비신뢰 환경 511) 및 제 2 영역(예: 신뢰 환경 512)으로 설정하고, 상기 제 2 영역 내에 상기 하드웨어 저장 장치로부터 인출된 제 1 정보(예: 비밀 키)를 임시적으로 저장하며. 상기 제 2 영역 내에 제 2 정보(예: 추가적인 파일(additional files), 정적 컨텐츠(static content), 어플리케이션 코드(code), UI 스트링(user interface strings), 애니메이션 명령(animation instructions), 어플리케이션 데이터, 연락처(contact), 이미지, 비밀번호, 텍스트, 동영상, 컨텐츠 중 적어도 하나)를 임시적으로 저장하고, 상기 제 1 영역 내에 임시적으로 저장된 어플리케이션 프로그램의 상기 제 2 정보에 대한 접근 요청을 인식하여, 상기 제 2 영역 내에서 상기 어플리케이션 프로그램의 적어도 일부를 이용하여 인증하는 것을 소프트웨어 적으로 수행하도록 구성될 수 있다. 상기 프로세서는, 상기 인증을 위해 상기 어플리케이션 프로그램의 적어도 일부의 데이터를 고정된 길이의 데이터로 매핑하도록 구성될 수 있다. 상기 프로세서는, 상기 어플리케이션 프로그램의 적어도 일부를 이용하여 생성된 제 1 해시(Hash)값 및 이미 계산된 제 2 해시(Hash)값을 비교하여 인증하도록 구성될 수 있다. 상기 프로세서는, 상기 제 1 정보를 이용하여 상기 제 2 해시 값을 획득하도록 구성될 수 있다. 상기 프로세서는, 상기 어플리케이션의 코드 및/또는 정적(static) 데이터를 이용하여 상기 제 1 해시 값을 생성하도록 구성될 수 있다. 상기 프로세서는, 상기 비휘발성 저장 장치에서 상기 제 2 해시 값을 포함하는 데이터를 상기 제 2 영역으로 임시적으로 인출하도록 구성될 수 있다. 상기 프로세서는, 상기 어플리케이션의 식별 정보를 이용하여 상기 인증을 수행하도록 구성될 수 있다. 상기 프로세서는, 함께 저장된 상기 어플리케이션의 적어도 일부를 암호화한 데이터 및 상기 데이터의 해시값을 암호화한 인증 태그를 이용하여 상기 인증을 수행하도록 구성될 수 있다 상기 프로세서는, 상기 인증에 기반하여 상기 어플리케이션 프로그램의 상기 제 2 정보에 대한 접근을 허용하도록 구성될 수 있다. 상기 프로세서는, 상기 휘발성 메모리를 제 1 영역 및 제 2 영역으로 설정하고, 상기 제 2영역 내에 상기 하드웨어 저장 장치로부터 인출된 제 1 정보를 임시적으로 저장하고, 상기 제 1 영역 내에 임시적으로 저장된 어플리케이션 프로그램의 적어도 일부를 이용하여 상기 어플리케이션 프로그램을 대표하는 데이터를 상기 제 2 영역 내에서 획득하고, 상기 제 1 정보를 이용하여 상기 제 2 영역에서 상기 어플리케이션 프로그램을 대표하는 데이터를 암호화하고, 상기 암호화된 어플리케이션 프로그램을 대표하는 데이터를 상기 비휘발성 저장 장치에 저장하도록 구성될 수 있다. 상기 프로세서는, 상기 어플리케이션 프로그램의 적어도 일부를 이용하여 획득한 데이터 및 이미 계산된 제 2 해시(Hash) 값을 비교하도록 구성될 수 있다. 상기 프로세서는, 상기 어플리케이션 프로그램의 식별 정보를 암호화하여 저장하도록 구성될 수 있다. 상기 프로세서는, 상기 제 2 영역에서 상기 어플리케이션 프로그램의 적어도 일부를 암호화한 데이터 및 상기 데이터의 해시값을 암호화한 인증 태그를 함께 저장하도록 구성될 수 있다. According to another embodiment, the electronic device includes a volatile memory (first memory 510), a nonvolatile storage device (eg, second memory 520), a hardware storage device (eg, third memory 530), and a processor, and the processor Is, the volatile memory is set to a first area (eg, untrusted environment 511) and a second area (eg, trusted environment 512), and in the second area, first information fetched from the hardware storage device (eg: Temporarily store the secret key). Second information (e.g., additional files, static content, application code, UI strings), animation instructions, application data, contact information in the second area (contact), image, password, text, video, content) is temporarily stored, and by recognizing an access request for the second information of the application program temporarily stored in the first area, the second area It may be configured to perform authentication using at least a part of the application program in software. The processor may be configured to map at least some data of the application program to data of a fixed length for the authentication. The processor may be configured to compare and authenticate a first hash value generated using at least a part of the application program and a second hash value that has already been calculated. The processor may be configured to obtain the second hash value by using the first information. The processor may be configured to generate the first hash value by using the application code and/or static data. The processor may be configured to temporarily retrieve data including the second hash value from the nonvolatile storage device to the second area. The processor may be configured to perform the authentication using the identification information of the application. The processor may be configured to perform the authentication using data that encrypts at least a portion of the application stored together and an authentication tag that encrypts the hash value of the data. The processor includes the application program based on the authentication. May be configured to allow access to the second information. The processor sets the volatile memory to a first area and a second area, temporarily stores first information fetched from the hardware storage device in the second area, and temporarily stores an application program in the first area Acquire data representing the application program in the second area by using at least a part of, encrypt data representing the application program in the second area by using the first information, and the encrypted application It may be configured to store data representing a program in the nonvolatile storage device. The processor may be configured to compare data acquired by using at least a part of the application program and a second hash value that has already been calculated. The processor may be configured to encrypt and store identification information of the application program. The processor may be configured to store together data obtained by encrypting at least a portion of the application program in the second area and an authentication tag obtained by encrypting a hash value of the data.

도 6은 본 개시의 일 실시예에 따른 프로그래밍 모듈 600의 블록도이다.6 is a block diagram of a programming module 600 according to an embodiment of the present disclosure.

도 6를 참조하면, 프로그래밍 모듈 600은 도 1에 도시된 전자장치 100 (예: 메모리 130)에 포함(예: 저장)될 수 있다. 프로그래밍 모듈 600의 적어도 일부는 소프트웨어, 펌웨어, 하드웨어 또는 이들 중 적어도 둘 이상의 조합으로 구성될 수 있다. Referring to FIG. 6, the programming module 600 may be included (eg, stored) in the electronic device 100 (eg, memory 130) illustrated in FIG. 1. At least a portion of the programming module 600 may be composed of software, firmware, hardware, or a combination of at least two or more of them.

프로그래밍 모듈 600은 비신뢰 환경 610 및 신뢰 환경 620을 포함할 수 있다. 비신뢰 환경 610은 어플리케이션들 611_1~N과 접근 제어 테이블 612를 포함할 수 있다. 신뢰 환경 620은 접근 제어 모듈 621을 포함할 수 있다. 접근 제어 모듈 621의 모든 기능들은 신뢰 환경 620에서 실행될 수 있다. 접근 제어 모듈 621은 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합일 수 있다.The programming module 600 may include an untrusted environment 610 and a trusted environment 620. The untrusted environment 610 may include applications 611_1 to N and an access control table 612. The trusted environment 620 may include an access control module 621. All functions of the access control module 621 can be executed in the trusted environment 620. The access control module 621 may be one of hardware, software, or firmware, or a combination of two or more.

어플리케이션들 611_1~N은 예를 들면, 도 3에 도시된 어플리케이션 370의 구성 요소일 수 있다. 어플리케이션들 611_1~N은 각각, 자원에 대한 접근을, 접근 제어 모듈 621에 요청할 수 있다. 어플리케이션들 611_1~N은 각각, 어플리케이션 코드, 정적(static) 데이터 및 동적(dynamic) 데이터를 포함할 수 있다. 어플리케이션이 예를 들어, 주소록 어플리케이션(컨텍트 378)인 경우, 정적 데이터는 배경 이미지, 연락처들이 될 수 있고, 동적 데이터는 각각의 연락처에 넘버링된 숫자가 될 수 있다. 접근 제어 테이블 612는 어플리케이션들 611_1~N에 각각 대응되는 레코드들을 포함할 수 있다. 이러한 레코드들은 암호화될 수 있다.The applications 611_1 to N may be components of the application 370 shown in FIG. 3, for example. Each of the applications 611_1 to N may request access to a resource from the access control module 621. Each of the applications 611_1 to N may include application code, static data, and dynamic data. When the application is, for example, an address book application (contact 378), static data may be a background image and contacts, and dynamic data may be a number numbered for each contact. The access control table 612 may include records corresponding to applications 611_1 to N, respectively. These records can be encrypted.

어플리케이션(예: 어플리케이션 611_1)이 등록을 요청하면, 접근 제어 모듈 621은 어플리케이션의 해시 값(hash value) 및 식별 정보(ID: identification information)를 계산할 수 있다. 접근 제어 모듈 621은 계산된 해시 값 및 식별 정보에 대응되는 레코드가 접근 제어 테이블 612에 존재하는지 여부를 검사할 수 있다. 검사 결과 없다면, 접근 제어 모듈 621은 계산된 해시 값 및 식별 정보를 새로운 레코드로써 접근 제어 테이블 612에 넣을 수 있다. 이는 해당 어플리케이션에 대한 성공적인 등록을 의미한다. 추가적으로, 접근 제어 모듈 621은 어플리케이션 토큰(application token)을 생성하여 해당 어플리케이션에 제공할 수도 있다. 어플리케이션의 해시 값 및 ID가 이미 접근 제어 테이블 612에 있다면, 해당 어플리케이션은 이미 등록된 것이므로, 접근 제어 모듈 621은 등록의 요청을 거부할 수 있다. 추가적으로, 접근 제어 모듈 621은 사용자에게 등록 거부 메시지를 출력하는 동작을 수행할 수도 있다. 여기서 출력은 디스플레이 모듈을 시각적인 피드백, 스피커를 이용한 청각적인 피드백 및 모터를 이용한 촉각적인 피드백 중 적어도 하나를 포함할 수 있다.When an application (eg, application 611_1) requests registration, the access control module 621 may calculate a hash value and identification information (ID) of the application. The access control module 621 may check whether a record corresponding to the calculated hash value and identification information exists in the access control table 612. If there is no test result, the access control module 621 may put the calculated hash value and identification information into the access control table 612 as a new record. This means successful registration for the application. Additionally, the access control module 621 may generate an application token and provide it to a corresponding application. If the hash value and ID of the application are already in the access control table 612, since the application is already registered, the access control module 621 may reject the request for registration. Additionally, the access control module 621 may perform an operation of outputting a registration rejection message to the user. Here, the output may include at least one of visual feedback of the display module, auditory feedback using a speaker, and tactile feedback using a motor.

어플리케이션(예: 어플리케이션 611_1)은 어떤 자원들(키, 데이터, 어떤 곳 또는 다른 자원에 대한 접근)에 대한 접근을 접근 제어 모듈 621에게 요청할 수 있다. 이러한 요청에 반응하여, 접근 제어 모듈 621은 어플리케이션의 해시 값 및 ID를 계산할 수 있다. 접근 제어 모듈 621은 해시를 여러 방식으로 계산할 수 있다. 예를 들면, 접근 제어 모듈 621은 운영체제(예: 신뢰 환경 620의 운영체제 또는 비신뢰 환경 610의 운영체제)로부터 어플리케이션의 이진 경로(binary path)의 일부 또는 전체를 얻어서, 얻은 이진(binary)에 대한 해시 값을 계산할 수 있다. 또는, 접근 제어 모듈 621은 메모리(예: 신뢰 환경 620에 의해 관리되는 보안 저장소 또는 비신뢰 환경 610에 의해 관리되는 일반 저장소)에 있는 어플리케이션의 코드의 일부 또는 전체에 대한 해시를 계산할 수도 있다. The application (eg, application 611_1) may request access to certain resources (key, data, access to some place or other resource) from the access control module 621. In response to this request, the access control module 621 may calculate a hash value and ID of the application. The access control module 621 can calculate the hash in several ways. For example, the access control module 621 obtains part or all of the binary path of the application from the operating system (eg, the operating system of the trusted environment 620 or the operating system of the untrusted environment 610), and hashing the obtained binary. Value can be calculated. Alternatively, the access control module 621 may calculate a hash for a part or all of the code of the application in memory (eg, a secure storage managed by the trusted environment 620 or a general storage managed by the untrusted environment 610).

접근 제어 모듈 621은 운영체제로부터 어플리케이션의 이진 경로의 일부 또는 전체를 얻어서, 얻은 이진을 이용하여 ID를 계산할 수 있다. 추가적으로 또는 대안적으로, 접근 제어 모듈 621은 메모리에 저장된 어플리케이션의 이름을 이용하여 ID를 계산할 수도 있다. 또는, 접근 제어 모듈 621은 메모리에 저장된 어플리케이션의 다양한 정보(예: 어플리케이션 이름, 운영체제 이름, 버전 정보 등)를 이용하여 ID를 생성할 수도 있다. 또는, 접근 제어 모듈 621은 메모리에 저장된 어플리케이션의 다양한 정보 중에서 적어도 하나를 어플리케이션 ID로 설정할 수도 있다.The access control module 621 may obtain part or all of the binary path of the application from the operating system and calculate an ID using the obtained binary. Additionally or alternatively, the access control module 621 may calculate the ID by using the name of the application stored in the memory. Alternatively, the access control module 621 may generate an ID using various information (eg, application name, operating system name, version information, etc.) of an application stored in the memory. Alternatively, the access control module 621 may set at least one of various information of an application stored in the memory as an application ID.

접근 제어 모듈 621은, "계산된 해시 값과 ID"에 대응되는 레코드가 접근 제어 테이블 612 에 있으면, 어플리케이션의 인증이 성공된 것이므로 접근을 허용할 수 있다. 이에 따라 어플리케이션은 자원에 접근하여 작업(예: 데이터 읽기, 데이터 쓰기, 데이터 변경, 하드웨어의 사용, 다른 어플리케이션에 대한 접근 등)을 수행할 수 있다. The access control module 621 may allow access because if the record corresponding to the "calculated hash value and ID" is in the access control table 612, authentication of the application has been successful. Accordingly, the application can access resources and perform tasks (eg, reading data, writing data, changing data, using hardware, accessing other applications, etc.).

대응되는 레코드가 접근 제어 테이블 612에 없다면, 접근 제어 모듈 621은, 어플리케이션의 인증이 실패된 것이므로, 접근을 금지할 수 있다. 추가적으로, 인증이 실패된 경우 접근 제어 모듈 621은 사용자에게 경고 메시지를 출력하는 동작을 수행할 수 있다. 여기서 출력은 디스플레이 모듈을 시각적인 피드백, 스피커를 이용한 청각적인 피드백 및 모터를 이용한 촉각적인 피드백 중 적어도 하나를 포함할 수 있다. If the corresponding record is not in the access control table 612, the access control module 621 may prohibit access because authentication of the application has failed. Additionally, when authentication fails, the access control module 621 may perform an operation of outputting a warning message to the user. Here, the output may include at least one of visual feedback of the display module, auditory feedback using a speaker, and tactile feedback using a motor.

어떤 실시예에 따르면, 인증이 실패된 경우, 접근 제어 모듈 621은 "어플리케이션 업그레이드" 이벤트를 생성 및 기록(log)할 수 있다. 어플리케이션 업그레이드는 사용자의 승인을 요청할 수 있다. 어플리케이션 업그레이드가 사용자에 의해 승인된 경우, 접근 제어 모듈 621은 해당 어플리케이션을 업그레이드하고, 업그레이드된 어플리케이션의 ID 및 해시 값을 계산하고, "계산된 ID 및 해시 값"으로 접근 제어 테이블 612의 해당 레코드를 갱신할 있다. 이후, 업그레이드된 어플리케이션이 접근을 요청하면, 접근 제어 모듈 621은 접근을 허용할 수 있다. According to an embodiment, when authentication fails, the access control module 621 may generate and log an "application upgrade" event. Application upgrade can request user approval. When the application upgrade is approved by the user, the access control module 621 upgrades the application, calculates the ID and hash value of the upgraded application, and stores the corresponding record in the access control table 612 as "calculated ID and hash value". I can update. Thereafter, when the upgraded application requests access, the access control module 621 may allow access.

접근 제어 테이블 612은 비신뢰 환경 610에 저장될 수 있다. 이런 경우, 접근 제어 테이블 612의 각 레코드들은 인증된 암호화(Authenticated Encryption) 방식에 의해 암호화될 수 있다. 암호화 방식은"AES(Advanced Encryption Standard)-GCM(Galois Counter Mode; 예컨대, 도 8에 도시된 프로세스)"가 사용될 수도 있고, 또는 다른 수단이 사용될 수도 있다. 테이블의 레코드의 암호화는 신뢰 환경 620에서 실행될 수 있다. 예를 들면, 접근 제어 모듈 621은 레코드를 암호화하고 이를 접근 제어 테이블 612에 등록할 수 있다. 암호화된 레코드의 해독도 신뢰 환경 620에서 실행될 수 있다. 예를 들면, 접근 제어 모듈 621은 접근 제어 테이블 612을 비신뢰 환경 610으로부터 읽어 와, 해독 키(예: 비밀 신뢰 환경 키(secret trusted environment key))를 이용하여, 읽어 온 접근 제어 테이블의 레코드들을 해독할 수 있다. 접근 제어 모듈 621은 해독된 레코드들을 각각, 어플리케이션의 해시 값 및 ID와 비교하여, 해시 값 및 ID에 대응되는 레코드가 상기 접근 제어 테이블에 존재하는지 여부를 판단할 수 있다.The access control table 612 may be stored in the untrusted environment 610. In this case, each record of the access control table 612 may be encrypted by an authenticated encryption method. As the encryption method, "AES (Advanced Encryption Standard)-GCM (Galois Counter Mode; for example, the process shown in FIG. 8)" may be used, or other means may be used. Encryption of records in a table may be performed in a trusted environment 620. For example, the access control module 621 may encrypt a record and register it in the access control table 612. The decryption of encrypted records can also be performed in the trusted environment 620. For example, the access control module 621 reads the access control table 612 from the untrusted environment 610, and uses a decryption key (eg, a secret trusted environment key) to read the records of the access control table. Can be deciphered. The access control module 621 may compare the decrypted records with a hash value and ID of an application, respectively, and determine whether a record corresponding to the hash value and the ID exists in the access control table.

신뢰 환경 620에서 동작하는 "인증된 암호화 과정"은 접근 제어 테이블 612의 기밀성(confidentiality)을 보장할 수 있다. 또한 "인증된 암호화 과정"은 접근 제어 테이블 612에서 무결성 위반(integrity violation)의 검출을 보장할 수 있다. 이러한 보장은 접근 제어 테이블 612에서 어떤 레코드를 변조하는 것이 (계산적으로) 불가능하고, 접근 제어 테이블 612의 어떠한 비인가 변경도 접근 제어 모듈 621에 의해 검출될 수 있다는 것을 의미한다. 접근 제어 테이블 612에서 무결성 위반의 검출을 보장하는 것은 결국 올바른 접근 제어 결정의 보장을 의미한다.The "authenticated encryption process" operating in the trusted environment 620 may guarantee confidentiality of the access control table 612. Also, the "authenticated encryption process" can guarantee the detection of an integrity violation in the access control table 612. This guarantee means that it is impossible (computationally) to tamper with any record in the access control table 612, and that any unauthorized change of the access control table 612 can be detected by the access control module 621. Guaranteeing the detection of an integrity violation in the access control table 612 means guaranteeing correct access control decisions.

어떤 실시예에 따르면, 접근 제어 모듈 621에게 "자원에 대한 접근을 요청하는 어플리케이션"은 신뢰 환경 620에서 동작하는 어플리케이션일 수도 있다.According to some embodiments, the "application requesting access to resources" to the access control module 621 may be an application operating in the trusted environment 620.

어떤 실시예에 따르면, 접근의 승인이 필요한 자원은 신뢰 환경 620에 포함된 자원일 수 있다. 이러한 자원은 시스템 자원(예: 메모리, 프로세서, 버스 등) 및 어플리케이션 자원(예: 키, 데이터, 다른 어플리케이션 등) 중 적어도 하나를 포함할 수 있다.According to some embodiments, a resource requiring access approval may be a resource included in the trusted environment 620. These resources may include at least one of system resources (eg, memory, processor, bus, etc.) and application resources (eg, keys, data, other applications, etc.).

도 7은 본 개시의 일 실시예에 따른 프로그래밍 모듈 700의 블록도이다.7 is a block diagram of a programming module 700 according to an embodiment of the present disclosure.

도 7을 참조하면, 프로그래밍 모듈 700은 도 1에 도시된 전자장치 100 (예: 메모리 130)에 포함(예: 저장)될 수 있다. 프로그래밍 모듈 700은 비신뢰 환경 710 및 신뢰 환경 720을 포함할 수 있다. 비신뢰 환경 710은 어플리케이션들 711_1~N을 포함할 수 있다. 신뢰 환경 720은 접근 제어 모듈 721 과 접근 제어 테이블 722를 포함할 수 있다. 이와 같이 접근 제어 테이블 722이 안전한 신뢰 환경 720에 포함될 경우, 접근 제어 테이블 722의 각각의 레코드들은 암호화되지 않을 수도 있다.Referring to FIG. 7, the programming module 700 may be included (eg, stored) in the electronic device 100 (eg, memory 130) illustrated in FIG. 1. The programming module 700 may include an untrusted environment 710 and a trusted environment 720. The unreliable environment 710 may include applications 711_1 to N. The trusted environment 720 may include an access control module 721 and an access control table 722. In this way, when the access control table 722 is included in the secure trusted environment 720, each record of the access control table 722 may not be encrypted.

도 8은 해시 값 계산 과정의 일례를 설명하기 위한 도면이다.8 is a diagram for describing an example of a hash value calculation process.

도 8을 참조하면, 접근 제어 모듈(예: 접근 제어 모듈 621)은 어플리케이션 810의 전부 또는 일부(예: 코드 및 정적 데이터)를 읽어 올 수 있다. 접근 제어 모듈은 지정된 해시 함수 820을 이용하여, 읽어 온 어플리케이션 810의 전체 또는 일부의 해시 값 830을 계산할 수 있다. 예를 들어, 읽어 온 어플리케이션 810의 전부 또는 일부의 크기가 1GB이고, 해시 함수 820이 SHA(Secure Hash Algorithm)-256라고 한다면, 해시 값 830의 크기는 256bit가 된다.Referring to FIG. 8, the access control module (eg, access control module 621) may read all or part of the application 810 (eg, code and static data). The access control module may calculate a hash value 830 of all or part of the read application 810 by using the designated hash function 820. For example, if the size of all or part of the read application 810 is 1 GB, and the hash function 820 is SHA (Secure Hash Algorithm)-256, the size of the hash value 830 is 256 bits.

도 9는 본 개시의 일 실시예에 따른 접근 제어 테이블들을 도시한다.9 illustrates access control tables according to an embodiment of the present disclosure.

도 9 (a) 참조하면, 접근 제어 테이블 910에서 레코드들 910_1~910_N은 각각, 암호화된 "어플리케이션의 ID(App_ID)"와 암호화된 "어플리케이션의 해시 값(App_Hash)"을 포함할 수 있다. 어플리케이션 ID는 해당 어플리케이션의 전체 이진 경로 및 이름 중 적어도 하나로부터 구성될 수 있다. 물론 다른 방식으로도 구성될 수 있다. 각 레코드의 무결성은 "인증된 암호화 과정"에 의해 보장되고, 테이블 전체의 무결성 또한 보장될 수 있다.Referring to FIG. 9A, records 910_1 to 910_N in the access control table 910 may each include an encrypted "application ID (App_ID)" and an encrypted "application hash value (App_Hash)". The application ID may be configured from at least one of the full binary path and name of the application. Of course, it can be configured in other ways. The integrity of each record is guaranteed by the "authenticated encryption process", and the integrity of the entire table can also be guaranteed.

어떤 실시예에 따르면, 레코드에서 해시 값은 어떤 수단(예: 접근 제어 모듈 621, MAC 등)에 의해 신뢰 환경(예: 신뢰환경 620 또는 720)에 포함될 수 있다. 레코드에서 다른 값(예: 어플리케이션 ID)은 비신뢰 환경(예: 비신뢰 환경 610 또는 710)에 포함될 수 있다. 접근 제어 테이블 910은 비신뢰 환경(예: 비신뢰 환경 610)에 포함될 수 있다. 대안적으로, 접근 제어 테이블 910은 신뢰 환경(예: 신뢰 환경 722)에 포함될 수도 있다.According to some embodiments, the hash value in the record may be included in a trusted environment (eg, trusted environment 620 or 720) by some means (eg, access control module 621, MAC, etc.). Other values (eg, application ID) in the record may be included in an untrusted environment (eg, untrusted environment 610 or 710). The access control table 910 may be included in an untrusted environment (eg, an untrusted environment 610). Alternatively, the access control table 910 may be included in a trusted environment (eg, a trusted environment 722).

도 9 (b)를 참조하면, 접근 제어 테이블 920에서 레코드들 920_1~920_N은 각각, 암호화된 "어플리케이션의 해시 값(App_Hash)"과, 암호화된 "어플리케이션과 관련된 자원(App_Asset)"과, 해당 어플리케이션의 변조 여부를 검증하기 위한 인증 정보(Authk)를 포함할 수 있다. 인증 정보(Authk)는 해당 어플리케이션 또는 그와 관련된 정보를 이용하여 생성된 것일 수 있다. 접근 제어 테이블 920은 비신뢰 환경(예: 비신뢰 환경 610)에 포함될 수 있다. 대안적으로, 접근 제어 테이블 920은 신뢰 환경(예: 신뢰 환경 722)에 포함될 수도 있다.9(b), records 920_1 to 920_N in the access control table 920 are, respectively, an encrypted "application hash value (App_Hash)", an encrypted "application-related resource (App_Asset)", and a corresponding application It may include authentication information (Auth k ) for verifying whether or not to tamper with. The authentication information (Auth k ) may be generated using a corresponding application or information related thereto. The access control table 920 may be included in an untrusted environment (eg, an untrusted environment 610). Alternatively, the access control table 920 may be included in a trusted environment (eg, a trusted environment 722).

도 9 (c)를 참조하면, 접근 제어 테이블 930에서 레코드들 930_1~930_N은 각각, 암호화된 인증 정보(App_Auth_Info)와, 암호화된 "어플리케이션 ID(App_ID)"와, 암호화된 "어플리케이션의 데이터(Data)"와, 인증 태그(Auth_TagK)를 포함할 수 있다. 접근 제어 테이블 930은 비신뢰 환경(예: 비신뢰 환경 610)에 포함될 수 있다. 대안적으로, 접근 제어 테이블 930은 신뢰 환경(예: 신뢰 환경 722)에 포함될 수도 있다.9(c), records 930_1 to 930_N in the access control table 930 are, respectively, encrypted authentication information (App_Auth_Info), encrypted “application ID (App_ID)”, and encrypted “application data (Data )" and an authentication tag (Auth_Tag K ). The access control table 930 may be included in an untrusted environment (eg, an untrusted environment 610). Alternatively, the access control table 930 may be included in a trusted environment (eg, a trusted environment 722).

도 10은 본 개시의 일 실시예에 따른 어플리케이션 등록 방법을 설명하기 위한 흐름도이다.10 is a flowchart illustrating an application registration method according to an embodiment of the present disclosure.

도 10을 참조하면, 동작 1010에서 전자장치(예: 전자 장치 100)의 프로세서 120은 어플리케이션의 등록 요청을 인식할 수 있다. 등록 요청에 반응하여 동작 1020에서 프로세서 120은 어플리케이션의 해시와 ID를 계산(calculate)할 수 있다. 동작 1030에서 프로세서 120은 계산된 값들(예: App1_ID, App1_hash)에 대응되는 레코드가 접근 제어 테이블에 존재하는지 여부를 판단할 수 있다. 대응되는 레코드가 접근 제어 테이블에 존재하지 않으면, 동작 1040에서 프로세서 120은 계산된 값들을 접근 제어 테이블에 등록할 수 있다. 대응되는 레코드가 접근 제어 테이블에 존재하면, 동작 1050에서 프로세서 120은 등록의 요청을 거부할 수 있다.Referring to FIG. 10, in operation 1010, the processor 120 of the electronic device (eg, the electronic device 100) may recognize a request for registration of an application. In response to the registration request, in operation 1020, the processor 120 may calculate a hash and an ID of the application. In operation 1030, the processor 120 may determine whether a record corresponding to the calculated values (eg, App1_ID, App1_hash) exists in the access control table. If the corresponding record does not exist in the access control table, in operation 1040, the processor 120 may register the calculated values in the access control table. If the corresponding record exists in the access control table, in operation 1050, the processor 120 may reject the request for registration.

도 11는 본 개시의 다른 실시예에 따른 어플리케이션 등록 방법을 설명하기 위한 흐름도이다.11 is a flowchart illustrating a method of registering an application according to another embodiment of the present disclosure.

도 11를 참조하면, 동작 1110에서 전자장치(예: 전자 장치 100)의 프로세서 110은 어플리케이션의 등록 요청을 인식할 수 있다. 등록 요청에 반응하여 동작 1120에서 프로세서 120은 어플리케이션의 해시와 ID를 계산(calculate)할 수 있다. 동작 1130에서 프로세서 120은 접근 제어 테이블의 각 레코드들을 복호화할 수 있다. 동작 1140에서 프로세서 120은 계산된 값들(예: App1_ID, App1_hash)에 대응되는 레코드가 접근 제어 테이블에 존재하는지 여부를 판단할 수 있다. 대응되는 레코드가 접근 제어 테이블에 존재하지 않으면, 동작 1150에서 프로세서 120은 계산된 값들을 암호화할 수 있다. 동작 1160에서 프로세서 120은 암호화된 값들을 해당 어플리케이션에 대한 레코드로써 접근 제어 테이블에 등록할 수 있다. 대응되는 레코드가 접근 제어 테이블에 존재하면, 동작 1170에서 프로세서 120은 등록의 요청을 거부할 수 있다.Referring to FIG. 11, in operation 1110, a processor 110 of an electronic device (eg, electronic device 100) may recognize a request for registration of an application. In response to the registration request, in operation 1120, the processor 120 may calculate a hash and an ID of the application. In operation 1130, the processor 120 may decode each record of the access control table. In operation 1140, the processor 120 may determine whether a record corresponding to the calculated values (eg, App1_ID, App1_hash) exists in the access control table. If the corresponding record does not exist in the access control table, in operation 1150, the processor 120 may encrypt the calculated values. In operation 1160, the processor 120 may register encrypted values in the access control table as a record for a corresponding application. If the corresponding record exists in the access control table, in operation 1170, the processor 120 may reject the request for registration.

도 12은 본 개시의 일 실시예에 따른 어플리케이션 인증 방법을 설명하기 위한 흐름도이다.12 is a flowchart illustrating an application authentication method according to an embodiment of the present disclosure.

도 12을 참조하면, 동작 1210에서 프로세서 120은 자원에 대한 어플리케이션의 접근 요청을 인식할 수 있다. 접근 요청에 반응하여 동작 1220에서 프로세서 120은 어플리케이션의 해시와 ID를 계산(calculate)할 수 있다. 동작 1230에서 프로세서 120은 계산된 값들(예: App1_ID, App1_hash)에 대응되는 레코드가 접근 제어 테이블에 존재하는지 여부를 판단할 수 있다. 대응되는 레코드가 접근 제어 테이블에 존재하면, 동작 1240에서 프로세서 120은 접근을 허용할 수 있다. 대응되는 레코드가 접근 제어 테이블에 존재하지 않으면, 동작 1250에서 프로세서 120은 보안 경고할 수 있다.Referring to FIG. 12, in operation 1210, the processor 120 may recognize an application access request for a resource. In response to the access request, in operation 1220, the processor 120 may calculate the hash and ID of the application. In operation 1230, the processor 120 may determine whether a record corresponding to the calculated values (eg, App1_ID, App1_hash) exists in the access control table. If the corresponding record exists in the access control table, in operation 1240, the processor 120 may allow access. If the corresponding record does not exist in the access control table, in operation 1250, the processor 120 may warn of security.

도 13는 본 개시의 다른 실시예에 따른 어플리케이션 인증 방법을 설명하기 위한 흐름도이다.13 is a flowchart illustrating an application authentication method according to another embodiment of the present disclosure.

도 13를 참조하면, 동작 1310에서 프로세서 120은 자원에 대한 어플리케이션의 접근 요청을 인식할 수 있다. 접근 요청에 반응하여 동작 1320에서 프로세서 120은 어플리케이션의 해시와 ID를 계산(calculate)할 수 있다. 동작 1330에서 프로세서 120은 접근 제어 테이블의 각 레코드들을 복호화할 수 있다. 동작 1340에서 프로세서 120은 계산된 값들(예: App1_ID, App1_hash)에 대응되는 레코드가 접근 제어 테이블에 존재하는지 여부를 판단할 수 있다. 대응되는 레코드가 접근 제어 테이블에 존재하면, 동작 1350에서 프로세서 120은 접근을 허용할 수 있다. 대응되는 레코드가 접근 제어 테이블에 존재하지 않으면, 동작 1360에서 프로세서 120은 보안 경고할 수 있다.Referring to FIG. 13, in operation 1310, the processor 120 may recognize an application access request for a resource. In response to the access request, in operation 1320, the processor 120 may calculate a hash and an ID of the application. In operation 1330, the processor 120 may decode each record of the access control table. In operation 1340, the processor 120 may determine whether a record corresponding to the calculated values (eg, App1_ID, App1_hash) exists in the access control table. If the corresponding record exists in the access control table, in operation 1350, the processor 120 may allow access. If the corresponding record does not exist in the access control table, in operation 1360, the processor 120 may warn of security.

도 14은 본 개시의 일 실시예에 따른 어플리케이션 등록 및 인증 방법을 설명하기 위한 도면이다.14 is a diagram for describing an application registration and authentication method according to an embodiment of the present disclosure.

도 14을 참조하면, 접근 제어 모듈(예: 접근 제어 모듈 521)은 어플리케이션 1410의 전부 또는 일부 예컨대, 데이터 1411을 읽어 올 수 있다. 접근 제어 모듈은 데이터 1411을 비밀 키 1412를 이용하여 암호화(1413)할 수 있다. 접근 제어 모듈은 암호화된 데이터 1414를 어플리케이션 1410의 레코드로써 메모리 1415에 저장할 수 있다.Referring to FIG. 14, the access control module (eg, the access control module 521) may read all or part of the application 1410, eg, data 1411. The access control module may encrypt 1413 the data 1411 using the secret key 1412. The access control module may store the encrypted data 1414 as a record of the application 1410 in the memory 1415.

접근 제어 모듈은 지정된 해시 함수 1416을 이용하여 데이터 1411의 해시 값을 구하고, 비밀 키 1412를 이용하여 해시 값을 암호화(1417)할 수 있다. 접근 제어 모듈은 암호화된 해시 값(인증 태그 1418)을 어플리케이션 1410의 레코드로써 메모리 1415에 저장할 수 있다.The access control module may obtain a hash value of data 1411 by using the designated hash function 1416 and encrypt the hash value by using the secret key 1412 (1417). The access control module may store the encrypted hash value (authentication tag 1418) as a record of the application 1410 in the memory 1415.

접근 제어 모듈은 인증 태그 1418을 이용하여, 어플리케이션의 변조 여부를 확인할 수 있다. 구체적으로, 접근 제어 모듈은 암호화된 데이터 1414를 메모리 1415에서 읽어 와, 비밀 키 1412를 이용하여 복호화(1419)할 수 있다. 또한 접근 제어 모듈은 인증 태그 1418을 메모리 1415에서 읽어 와, 비밀 키 1412를 이용하여 복호화(1420)할 수 있다. 암호화 및 복호화 방식에는 주지된 바와 같이, 대칭키 방식과 비대칭키 방식이 있다. 만약 데이터 1411및 해시 값이 비대칭키 방식으로 암호화되었다면, 암호화된 데이터 1414및 인증 태그 1418은 비밀 키 1412가 아닌, 특정 복호화 키로 복호화될 수도 있다.The access control module may check whether the application is tampered with by using the authentication tag 1418. Specifically, the access control module may read the encrypted data 1414 from the memory 1415 and decrypt (1419) using the secret key 1412. In addition, the access control module may read the authentication tag 1418 from the memory 1415 and decrypt 1420 using the secret key 1412. As is well known, encryption and decryption methods include a symmetric key method and an asymmetric key method. If the data 1411 and the hash value are encrypted using an asymmetric key method, the encrypted data 1414 and the authentication tag 1418 may be decrypted with a specific decryption key instead of the secret key 1412.

접근 제어 모듈은 상기 해시 함수 1416을 이용하여, 복호화된 데이터 1421의 해시 값을 계산할 수 있다. 접근 제어 모듈은 계산된 해시 값과 복호화된 인증 태그 1418을 비교하여 동일 여부를 판단(1422)할 수 있다. 만약 동일하다면 접근 제어 모듈은 복호화된 데이터 1421가 정상적인 것으로 인식할 수 있다. 만약 동일하지 않다면 접근 제어 모듈은 복호화된 데이터 1421가 변조된 것으로 인식할 수 있다.The access control module may calculate a hash value of the decrypted data 1421 using the hash function 1416. The access control module may compare the calculated hash value with the decrypted authentication tag 1418 to determine whether they are the same (1422). If they are the same, the access control module may recognize that the decoded data 1421 is normal. If they are not the same, the access control module may recognize that the decoded data 1421 has been modulated.

다른 실시예에 따르면, 전자 장치를 통해 인증하는 방법은 휘발성 메모리를 포함하는 전자 장치의 프로세서에 의하여, 상기 휘발성 메모리를 제 1 영역(예: 비신뢰 환경) 및 제 2 영역(예 : 신뢰 환경)으로 설정하는 동작으로서, 상기 제 2 영역(예: 신뢰 환경)은 상기 제 1 영역보다 보안이 더 강화된 동작, 상기 프로세서에 의하여, 상기 제 2영역 내에 하드웨어 또는 펌웨어로부터 인출된 제 1 정보(예: 비밀 키)를 임시적으로 저장하는 동작, 상기 프로세서에 의하여, 상기 제 2 영역 내에 제 2 정보(예: 추가적인 파일(additional files), 정적 컨텐츠(static content), 어플리케이션 코드(code), UI 스트링(user interface strings), 애니메이션 명령(animation instructions), 어플리케이션 데이터, 연락처(contact), 이미지, 비밀번호, 텍스트, 동영상, 컨텐츠 중 적어도 하나)를 임시적으로 저장하는 동작, 상기 프로세서에 의하여, 상기 제 1 영역 내에 임시적으로 저장된 어플리케이션 프로그램의 상기 제 2 정보에 대한 접근 요청을 인식하는 동작, 및 상기 프로세서에 의하여, 상기 제 2 영역 내에서 상기 어플리케이션 프로그램의 적어도 일부를 이용하여 인증하는 동작을 포함할 수 있다. 상기 인증하는 동작은, 상기 어플리케이션 프로그램의 적어도 일부의 데이터를 고정된 길이의 데이터로 매핑하는 동작을 포함할 수 있다. 상기 인증하는 동작은 상기 어플리케이션 프로그램의 적어도 일부를 이용하여 생성된 제 1 해시(Hash)값 및 이미 계산된 제 2 해시(Hash)값을 비교하여 인증하는 동작을 포함할 수 있다. 상기 인증하는 동작은 상기 제 1 정보를 이용하여 상기 제 2 해시 값을 획득하는 동작을 포함할 수 있다. 상기 어플리케이션 프로그램의 상기 제 1 해시 값을 생성하는 동작은, 상기 어플리케이션프로그램의 코드 및/또는 정적(static) 데이터를 이용하여 생성하는 동작을 포함할 수 있다. 상기 인증하는 동작은 비휘발성 저장 장치에서 상기 제 2 해시 값을 포함하는 데이터를 상기 제 2 영역으로 임시적으로 인출하는 동작을 포함할 수 있다. 상기 인증하는 동작은 상기 어플리케이션의 식별 정보를 이용하는 동작을 포함할 수 있다. 상기 인증하는 동작은 상기 어플리케이션 프로그램의 적어도 일부를 암호화한 데이터 및 상기 데이터의 해시값을 암호화한 인증 태그를 이용하는 동작을 포함할 수 있다. 상기 인증하는 동작에 기반하여, 상기 어플리케이션 프로그램의 상기 제 2 정보에 대한 접근을 허용하는 동작을 포함할 수 있다. According to another embodiment, a method of authenticating through an electronic device includes a first area (eg, an untrusted environment) and a second area (eg, a trusted environment) of the volatile memory by a processor of an electronic device including a volatile memory. The second area (eg, a trusted environment) is an operation that has more security than the first area, and the first information (eg, the second area) fetched from hardware or firmware in the second area by the processor : Temporarily storing a secret key), by the processor, second information (e.g., additional files, static content), application code (code), UI string ( user interface strings), animation instructions, application data, contacts, images, passwords, text, video, and content) temporarily stored in the first area by the processor Recognizing a request for access to the second information of the temporarily stored application program, and authenticating by the processor using at least a part of the application program in the second area. The authenticating operation may include mapping at least some data of the application program to data of a fixed length. The authenticating operation may include an operation of comparing and authenticating a first hash value generated using at least a part of the application program and a second hash value that has already been calculated. The authenticating operation may include obtaining the second hash value by using the first information. The operation of generating the first hash value of the application program may include an operation of generating using the code and/or static data of the application program. The authenticating operation may include an operation of temporarily fetching data including the second hash value from a nonvolatile storage device to the second area. The authentication operation may include an operation of using identification information of the application. The authenticating operation may include using data obtained by encrypting at least a portion of the application program and an authentication tag obtained by encrypting a hash value of the data. Based on the authentication operation, an operation of allowing access to the second information of the application program may be included.

다른 실시예에 따르면, 전자 장치를 통해 등록하는 방법은 휘발성 메모리를 포함하는 전자 장치의 프로세서에 의하여, 상기 휘발성 메모리를 제 1 영역(예: 비신뢰 환경) 및 제 2 영역(예: 신뢰 환경)으로 설정하는 동작으로서, 상기 제 2 영역은 상기 제 1 영역보다 보안이 더 강화된 동작, 상기 프로세서에 의하여, 상기 제 2영역 내에 하드웨어 또는 펌웨어로부터 인출된 제 1 정보(예: 비밀 키)를 임시적으로 저장하는 동작, 상기 프로세서에 의하여, 상기 제 1 영역 내에 임시적으로 저장된 어플리케이션 프로그램의 적어도 일부를 이용하여 상기 어플리케이션 프로그램을 대표하는 데이터를 상기 제 2 영역 내에서 획득하는 동작, 상기 제 1 정보를 이용하여 상기 제 2 영역에서 상기 어플리케이션 프로그램을 대표하는 데이터를 암호화하는 동작; 상기 암호화된 어플리케이션 프로그램을 대표하는 데이터를 상기 전자장치의 비휘발성 저장 장치에 저장하는 동작을 포함할 수 있다. 상기 어플리케이션 프로그램을 대표하는 데이터를 획득하는 동작은, 상기 어플리케이션 프로그램의 적어도 일부의 데이터를 고정된 길이의 데이터로 매핑하는 동작을 포함할 수 있다. 그리고 상기 어플리케이션 프로그램의 적어도 일부를 이용하여 획득한 상기 어플리케이션 프로그램을 대표하는 데이터 및 이미 계산된 제 2 해시(Hash) 값을 비교하는 동작을 더 포함할 수 있다. 상기 비교하는 동작은 상기 제 1 정보를 이용하여 상기 제 2 해시 값을 획득하는 동작을 포함할 수 있다. 상기 비교하는 동작은 상기 비휘발성 저장 장치에서 상기 제 2 해시 값을 포함하는 데이터를 상기 제 2 영역으로 임시적으로 인출하는 동작을 포함할 수 있다. 상기 어플리케이션 프로그램을 대표하는 데이터를 획득하는 동작은 상기 어플리케이션 프로그램의 코드 및/또는 정적(static) 데이터를 이용하여 상기 어플리케이션 프로그램을 대표하는 데이터를 생성하는 동작을 포함할 수 있다. 상기 저장하는 동작은 상기 어플리케이션 프로그램의 식별 정보를 암호화하여 저장하는 동작을 포함할 수 있다. 상기 저장하는 동작은 상기 제 2 영역에서 상기 어플리케이션 프로그램의 적어도 일부를 암호화한 데이터 및 상기 데이터의 해시값을 암호화한 인증 태그를 함께 저장하는 동작을 포함할 수 있다. According to another embodiment, in a method of registering through an electronic device, by a processor of an electronic device including a volatile memory, the volatile memory is assigned to a first area (eg, an unreliable environment) and a second area (eg, a trusted environment). The second area is an operation with more enhanced security than the first area, and the processor temporarily stores first information (eg, a secret key) fetched from hardware or firmware in the second area. Storing, by the processor, acquiring data representing the application program in the second area using at least a part of the application program temporarily stored in the first area, using the first information Thereby encrypting data representing the application program in the second area; The operation of storing data representing the encrypted application program in a nonvolatile storage device of the electronic device may be included. The operation of obtaining data representing the application program may include mapping at least some data of the application program to data of a fixed length. In addition, the operation of comparing data representing the application program acquired by using at least a part of the application program and an already calculated second hash value may be further included. The comparing operation may include obtaining the second hash value by using the first information. The comparing operation may include an operation of temporarily fetching data including the second hash value from the nonvolatile storage device to the second area. The operation of obtaining data representing the application program may include an operation of generating data representing the application program by using the code and/or static data of the application program. The storing operation may include an operation of encrypting and storing identification information of the application program. The storing operation may include storing data obtained by encrypting at least a portion of the application program and an authentication tag obtained by encrypting a hash value of the data in the second area.

상술한 바와 같은 본 개시에 따른 방법은 다양한 컴퓨터를 통하여 수행될 수 있는 프로그램 명령으로 구현되어 컴퓨터로 판독 가능한 기록 매체에 기록될 수 있다. 여기서 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 포함할 수 있다. 또한 프로그램 명령은 본 개시를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수 있다. 또한 기록매체에는 하드디스크, 플로피디스크 및 자기 테이프와 같은 자기매체(Magnetic Media)와, CD-ROM, DVD와 같은 광기록 매체(Optical Media)와, 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media)와, 롬(ROM)과, 램(RAM)과, 플래시 메모리 등과 같은 하드웨어가 포함될 수 있다. 또한 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라, 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드가 포함될 수 있다.The method according to the present disclosure as described above may be implemented as program instructions that can be executed through various computers and recorded in a computer-readable recording medium. Here, the recording medium may include program commands, data files, and data structures. In addition, the program instructions may be specially designed and configured for the present disclosure, or may be known and usable to those skilled in computer software. In addition, the recording medium includes magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic-optical disks such as floptical disks. Hardware such as Magneto-Optical Media, ROM, RAM, and flash memory may be included. In addition, the program instructions may include not only machine language codes generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like.

그리고 본 명세서와 도면에 개시된 실시 예들은 본 개시의 내용을 쉽게 설명하고, 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 개시의 범위를 한정하고자 하는 것은 아니다. 따라서 본 개시의 범위는 여기에 개시된 실시 예들 이외에도 본 개시의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 개시의 범위에 포함되는 것으로 해석되어야 한다.In addition, the embodiments disclosed in the present specification and the drawings are merely provided with specific examples for easy explanation and understanding of the contents of the present disclosure, and are not intended to limit the scope of the present disclosure. Therefore, the scope of the present disclosure should be construed that all changes or modified forms derived based on the technical idea of the present disclosure in addition to the embodiments disclosed herein are included in the scope of the present disclosure.

100, 102, 104 : 전자장치 110 : 버스
120 : 프로세서 130 : 메모리
131, 310 : 커널 132, 330 : 미들웨어
133, 360 : 어플리케이션 프로그래밍 인터페이스(API)
134, 370 : 어플리케이션 140 : 사용자 입력 모듈
150 : 디스플레이 모듈 160 : 통신 모듈
162 : 네트워크 164 : 서버
200 : 하드웨어 210 : 프로세서
211 : 어플리케이션 프로세서(AP)
213 : 커뮤니케이션 프로세서(CP)
214 : SIM 카드 220 : 메모리
222 : 내장메모리 224 : 외장메모리
230 : 통신 모듈 231 : 무선 통신 모듈
233 : Wi-Fi 234 : RF 모듈
235 : BT 237 : GPS
239 : NFC 240 : 센서 모듈
240A : 제스쳐 센서 240B : 자이로 센서
240C : 기압 센서 240D : 마그네틱 센서
240E : 가속도 센서 240F : 그립 센서
240G : 근접 센서 240H : RGB 센서
240I : 생체 센서 240J : 온/습도 센서
240K : 조도 센서 240M : UV 센서
250 : 사용자 모듈 252 : 터치 패널
254 : 펜 센서 256 : 키
258 : 울트라 소닉 260 : 디스플레이 모듈
262 : 패널 264 : 홀로그램
270 : 인터페이스 272 : HDMI
274 : USB 276 : 프로젝터
278 : D-SUB 280 : 오디오 코덱
282 : 스피커 284 : 리시버
286 : 이어폰 288 : 마이크
291 : 카메라 모듈 295 : 전력 관리 모듈
296 : 배터리 297 : 인디케이터
298 : 모터 300 : 프로그래밍 모듈
311 : 시스템 리소스 매니저 312 : 디바이스 드라이버
335 : 런타임 라이브러리 341 : 어플리케이션 매니저
342 : 윈도우 매니저 343 : 멀티미디어 매니저
344 : 리소스 매니저 345 : 파워 매니저
346 : 데이터베이스 매니저 347 : 패키지 매니저
348 : 연결 매니저 349 : 통지 매니저
350 : 위치 매니저 351 : 그래픽 매니저
352 : 보안 매니저 371 : 홈
372 : 다이얼러 373 : SMS/MMS
374 : IM 375 : 브라우저
376 : 카메라 377 : 알람
378 : 컨택트 379 : 음성다이얼
380 : 이메일 381 : 달력
382 : 미디어 플레이어 383 : 앨범
384 : 시계
100, 102, 104: electronic device 110: bus
120: processor 130: memory
131, 310: kernel 132, 330: middleware
133, 360: Application programming interface (API)
134, 370: application 140: user input module
150: display module 160: communication module
162: network 164: server
200: hardware 210: processor
211: application processor (AP)
213: Communication Processor (CP)
214: SIM card 220: memory
222: internal memory 224: external memory
230: communication module 231: wireless communication module
233: Wi-Fi 234: RF module
235: BT 237: GPS
239: NFC 240: sensor module
240A: gesture sensor 240B: gyro sensor
240C: barometric pressure sensor 240D: magnetic sensor
240E: acceleration sensor 240F: grip sensor
240G: proximity sensor 240H: RGB sensor
240I: biometric sensor 240J: temperature/humidity sensor
240K: illuminance sensor 240M: UV sensor
250: user module 252: touch panel
254: pen sensor 256: key
258: ultra sonic 260: display module
262: panel 264: hologram
270: interface 272: HDMI
274: USB 276: projector
278: D-SUB 280: Audio codec
282: speaker 284: receiver
286: earphone 288: microphone
291: camera module 295: power management module
296: battery 297: indicator
298: motor 300: programming module
311: System Resource Manager 312: Device Driver
335: runtime library 341: application manager
342: window manager 343: multimedia manager
344: resource manager 345: power manager
346: database manager 347: package manager
348: connection manager 349: notification manager
350: location manager 351: graphic manager
352: Security Manager 371: Home
372: Dialer 373: SMS/MMS
374: IM 375: Browser
376: camera 377: alarm
378: contact 379: voice dial
380: Email 381: Calendar
382: Media Player 383: Album
384: clock

Claims (53)

전자 장치에서 접근을 제어하는 방법에 있어서,
상기 전자장치의 프로세서가, 메모리의 제 1 영역에 포함된 어플리케이션으로부터 자원에 대한 접근 요청을 인식하는 동작;
상기 접근 요청에 반응하여, 상기 프로세서가 상기 메모리의 제 2 영역에 포함된 접근 제어 모듈을 실행하여 상기 어플리케이션의 해시 값을 계산하는 동작;
상기 프로세서가, 상기 접근 제어 모듈을 실행하여 상기 해시 값 및 상기 어플리케이션의 식별정보에 대응되는 레코드가 메모리에 존재하는지 여부를 판단하는 동작; 및
상기 프로세서가, 상기 대응되는 레코드가 상기 메모리에 존재할 경우 상기 자원에 대한 접근을 허용하는 동작을 포함하고,
상기 판단하는 동작은,
암호화되어 상기 제 1 영역에 저장된 레코드를 상기 제 2 영역에 포함된 지정된 키로 해독하는 동작; 및
상기 해독된 레코드가 상기 해시 값 및 상기 식별정보에 대응되는지 여부를 판단하는 동작을 포함하고,
상기 제 2 영역은 상기 프로세서에 의해 접근의 인증이 필요한 영역인, 방법.
In the method of controlling access in an electronic device,
Recognizing, by a processor of the electronic device, an access request for a resource from an application included in a first area of the memory;
In response to the access request, calculating, by the processor, a hash value of the application by executing an access control module included in the second area of the memory;
Determining, by the processor, whether a record corresponding to the hash value and the identification information of the application exists in a memory by executing the access control module; And
And allowing, by the processor, access to the resource when the corresponding record exists in the memory,
The determining operation is,
Decrypting the encrypted record stored in the first area with a designated key included in the second area; And
Determining whether the decrypted record corresponds to the hash value and the identification information,
The second area is an area requiring authentication of access by the processor.
삭제delete 제 1 항에 있어서,
상기 메모리는 휘발성 메모리인 방법.
The method of claim 1,
The method of the memory is a volatile memory.
제 1 항에 있어서,
상기 자원에 대한 접근을 허용하는 동작은,
암호화되어 상기 제 2 영역에 저장된 자원을 상기 제 2 영역에 포함된, 지정된 키로 해독하는 동작; 및
상기 자원을 상기 어플리케이션으로 전달하는 동작을 포함하고,
상기 제 2 영역은 상기 프로세서에 의해 접근의 인증이 필요한 영역인, 방법.
The method of claim 1,
The operation of allowing access to the resource,
Decrypting the encrypted resources stored in the second area with a designated key included in the second area; And
Including the operation of transferring the resource to the application,
The second area is an area requiring authentication of access by the processor.
제 1 항에 있어서,
상기 자원을 암호화하는 동작;
상기 자원의 제 1 해시 값을 계산하여, 지정된 키로 암호화하는 동작; 및
상기 암호화된 자원과 상기 암호화된 제 1 해시 값을 저장하는 동작을 더 포함하고,
상기 자원에 대한 접근을 허용하는 동작은,
상기 암호화된 자원을 상기 키로 복호화하여 제 2 해시 값을 계산하는 동작과,
상기 암호화된 제 1 해시 값을 상기 키로 복호화하는 동작과,
상기 제 2 해시 값이 상기 제 1 해시 값과 동일한 경우 상기 자원에 대한 접근을 허용하는 동작을 포함하고,
상기 키는 상기 프로세서에 의해 접근의 인증이 필요한 메모리의 영역에 저장되는, 방법.
The method of claim 1,
Encrypting the resource;
Calculating a first hash value of the resource and encrypting it with a designated key; And
Further comprising the operation of storing the encrypted resource and the encrypted first hash value,
The operation of allowing access to the resource,
Calculating a second hash value by decrypting the encrypted resource with the key,
Decrypting the encrypted first hash value with the key,
When the second hash value is the same as the first hash value, including allowing access to the resource,
The key is stored in an area of memory that requires authentication of access by the processor.
제 1 항에 있어서,
상기 해시 값을 계산하는 동작은,
상기 어플리케이션의 이진 경로, 상기 어플리케이션의 코드 및 상기 어플리케이션의 정적 데이터 중 적어도 하나의 해시 값을 계산하는 동작을 포함하는 방법.
The method of claim 1,
The operation of calculating the hash value,
And calculating at least one hash value of the binary path of the application, the code of the application, and static data of the application.
제 1 항에 있어서,
상기 식별 정보는,
상기 어플리케이션의 이진 경로 및 상기 어플리케이션과 관련하여 저장된 정보 중에서 적어도 하나로부터 구성된, 방법.
The method of claim 1,
The identification information,
A method comprising at least one of the binary path of the application and information stored in connection with the application.
제 1 항에 있어서,
상기 대응되는 레코드가 상기 메모리에 존재하지 않는 경우 경고 메시지를 출력하는 동작을 더 포함하는 방법.
The method of claim 1,
And outputting a warning message when the corresponding record does not exist in the memory.
제 1 항에 있어서,
상기 프로세서가, 제 2어플리케이션으로부터 등록 요청을 인식하는 동작;
상기 등록 요청에 반응하여, 상기 제 2 어플리케이션의 제 2 해시 값을 계산하는 동작;
상기 제 2 해시 값 및 상기 제 2 어플리케이션의 식별 정보에 대응되는 레코드가 상기 메모리에 존재하는지 여부를 판단하는 동작; 및
상기 제 2 해시 값 및 상기 제 2 어플리케이션의 식별 정보에 대응되는 레코드가 상기 메모리에 존재하지 않는 경우 상기 제 2 해시 값 및 상기 제 2 어플리케이션의 식별 정보를 저장하는 동작을 더 포함하는 방법.
The method of claim 1,
Recognizing, by the processor, a registration request from a second application;
Calculating a second hash value of the second application in response to the registration request;
Determining whether a record corresponding to the second hash value and the identification information of the second application exists in the memory; And
The method further comprising storing the second hash value and the identification information of the second application when a record corresponding to the second hash value and the identification information of the second application does not exist in the memory.
제 1 영역과 제 2 영역으로 구분되는 제 1 메모리;
어플리케이션의 해시 값 및 식별 정보를 포함하는 접근 제어 테이블 및 자원에 대한 상기 어플리케이션의 접근 제어를 위한 레코드를 저장하는 제 2 메모리;
상기 접근 제어 모듈을 상기 제 1 영역으로 로드하고 상기 레코드를 상기 제 1 영역으로 로드하는 프로세서를 포함하고,
상기 제 1 영역으로 로드된 접근 제어 모듈은, 상기 프로세서에 의하여,
상기 어플리케이션으로부터 자원에 대한 접근 요청에 반응하여, 상기 어플리케이션의 해시 값을 계산하는 동작과, 상기 해시 값 및 상기 어플리케이션의 식별정보에 대응되는 레코드가 상기 제 1 메모리에 존재하는지 여부를 판단하는 동작; 및 상기 대응되는 레코드가 상기 제 1 메모리에 존재할 경우 상기 자원에 대한 접근을 허용하는 동작을 수행하도록 설정되고,
상기 프로세서가 상기 판단을 하는 동작은,
암호화되어 상기 제 1 영역에 저장된 레코드를 상기 제 2 영역에 포함된 지정된 키로 해독하는 동작; 및
상기 해독된 레코드가 상기 해시 값 및 상기 식별정보에 대응되는지 여부를 판단하는 동작을 포함하고,
상기 제 2 영역은 접근의 인증이 필요한 영역인, 전자 장치.
A first memory divided into a first area and a second area;
A second memory for storing an access control table including an application hash value and identification information, and a record for controlling access of the application to resources;
And a processor for loading the access control module into the first area and loading the record into the first area,
The access control module loaded into the first area, by the processor,
In response to a request for access to a resource from the application, calculating a hash value of the application and determining whether a record corresponding to the hash value and identification information of the application exists in the first memory; And when the corresponding record exists in the first memory, it is set to perform an operation of allowing access to the resource,
The operation of the processor to make the determination,
Decrypting the encrypted record stored in the first area with a designated key included in the second area; And
Determining whether the decrypted record corresponds to the hash value and the identification information,
The second area is an area in which access authentication is required.
삭제delete 제 10 항에 있어서,
상기 제 1 메모리는 휘발성 메모리인, 전자 장치.
The method of claim 10,
The electronic device, wherein the first memory is a volatile memory.
제 10 항에 있어서,
상기 자원에 대한 접근을 허용하는 동작은,
암호화되어 상기 제 1 영역에 저장된 자원을 상기 제 2 영역에 포함된, 지정된 키로 해독하는 동작; 및
상기 자원을 상기 어플리케이션으로 전달하는 동작을 포함하고,
상기 제 2 영역은 접근의 인증이 필요한 영역인, 전자 장치.
The method of claim 10,
The operation of allowing access to the resource,
Decrypting the encrypted resource stored in the first area with a designated key included in the second area; And
Including the operation of transferring the resource to the application,
The second area is an area in which access authentication is required.
제 10 항에 있어서,
상기 프로세서는,
상기 제 1 메모리를 제 1 영역 및 제 2 영역으로 분류하고,
제 3 메모리에 저장된, 복호화를 위한 키를 상기 제 2 영역으로 로드하는,
전자 장치.
The method of claim 10,
The processor,
Classify the first memory into a first area and a second area,
Loading a key for decryption stored in a third memory into the second area,
Electronic device.
제 10 항에 있어서,
상기 접근 제어 모듈은,
상기 자원을 암호화하는 동작;
상기 자원의 제 1 해시 값을 계산하여, 지정된 키로 암호화하는 동작; 및
상기 암호화된 자원과 상기 암호화된 제 1 해시 값을 저장하는 동작을 수행하도록 더 설정되고,
상기 자원에 대한 접근을 허용하는 동작은,
상기 암호화된 자원을 상기 키로 복호화하여 제 2 해시 값을 계산하는 동작과,
상기 암호화된 제 1 해시 값을 상기 키로 복호화하는 동작과,
상기 제 2 해시 값이 상기 제 1 해시 값과 동일한 경우 상기 자원에 대한 접근을 허용하는 동작을 포함하고,
상기 키는 상기 제 1 메모리의 영역들 중 접근의 인증이 필요한 영역에 저장되는, 전자 장치.
The method of claim 10,
The access control module,
Encrypting the resource;
Calculating a first hash value of the resource and encrypting it with a designated key; And
It is further configured to perform an operation of storing the encrypted resource and the encrypted first hash value,
The operation of allowing access to the resource,
Calculating a second hash value by decrypting the encrypted resource with the key,
Decrypting the encrypted first hash value with the key,
When the second hash value is the same as the first hash value, including allowing access to the resource,
The electronic device, wherein the key is stored in an area in which access authentication is required among areas of the first memory.
제 10 항에 있어서,
상기 해시 값을 계산하는 동작은,
상기 어플리케이션의 이진 경로, 상기 어플리케이션의 코드 및 상기 어플리케이션의 정적 데이터 중 적어도 하나의 해시 값을 계산하는 동작을 포함하는 전자 장치.
The method of claim 10,
The operation of calculating the hash value,
And calculating at least one hash value of the binary path of the application, the code of the application, and static data of the application.
제 10 항에 있어서,
상기 식별 정보는,
상기 어플리케이션의 이진 경로 및 상기 어플리케이션과 관련하여 저장된 정보 중에서 적어도 하나로부터 구성된, 전자 장치.
The method of claim 10,
The identification information,
The electronic device configured from at least one of a binary path of the application and information stored in connection with the application.
제 10 항에 있어서,
상기 접근 제어 모듈은,
상기 대응되는 레코드가 상기 제 1 메모리에 존재하지 않는 경우 경고 메시지를 출력하는 동작을 더 수행하도록 설정된, 전자 장치.
The method of claim 10,
The access control module,
The electronic device configured to further perform an operation of outputting a warning message when the corresponding record does not exist in the first memory.
제 10 항에 있어서,
상기 접근 제어 모듈은,
제 2어플리케이션으로부터 등록 요청을 인식하는 동작;
상기 등록 요청에 반응하여, 상기 제 2 어플리케이션의 제 2 해시 값을 계산하는 동작;
상기 제 2 해시 값 및 상기 제 2 어플리케이션의 식별 정보에 대응되는 레코드가 상기 제 1 메모리에 존재하는지 여부를 판단하는 동작; 및
상기 제 2 해시 값 및 상기 제 2 어플리케이션의 식별 정보에 대응되는 레코드가 상기 제 1 메모리에 존재하지 않는 경우 상기 제 2 해시 값 및 상기 제 2 어플리케이션의 식별 정보를 저장하는 동작을 더 수행하도록 설정된, 전자 장치.
The method of claim 10,
The access control module,
Recognizing a registration request from the second application;
Calculating a second hash value of the second application in response to the registration request;
Determining whether a record corresponding to the second hash value and the identification information of the second application exists in the first memory; And
If a record corresponding to the second hash value and the identification information of the second application does not exist in the first memory, the second hash value and the identification information of the second application are further configured to be stored, Electronic device.
삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020140023825A 2013-03-13 2014-02-28 Application access control method and electronic device implementing the same KR102180529B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/205,842 US9407642B2 (en) 2013-03-13 2014-03-12 Application access control method and electronic apparatus implementing the same
US15/200,909 US10078599B2 (en) 2013-03-13 2016-07-01 Application access control method and electronic apparatus implementing the same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201361779220P 2013-03-13 2013-03-13
US61/779,220 2013-03-13

Publications (2)

Publication Number Publication Date
KR20140112399A KR20140112399A (en) 2014-09-23
KR102180529B1 true KR102180529B1 (en) 2020-11-19

Family

ID=51779968

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140023825A KR102180529B1 (en) 2013-03-13 2014-02-28 Application access control method and electronic device implementing the same

Country Status (1)

Country Link
KR (1) KR102180529B1 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102297383B1 (en) * 2014-09-25 2021-09-03 삼성전자주식회사 Processing Secure Data
US10320786B2 (en) 2015-09-14 2019-06-11 Samsung Electronics Co., Ltd. Electronic apparatus and method for controlling the same
KR102509594B1 (en) 2016-06-28 2023-03-14 삼성전자주식회사 Method for detecting the tampering of application code and electronic device supporting the same
KR20180073041A (en) * 2016-12-22 2018-07-02 삼성전자주식회사 Electronic device, method for controlling thereof and computer-readable recording medium
KR102458719B1 (en) 2018-07-26 2022-10-25 삼성전자주식회사 Electronic apparatus for supporting user input and controlling method thereof
KR20230015784A (en) * 2021-07-23 2023-01-31 삼성전자주식회사 Electronic device and operating method thereof

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100126478A (en) * 2008-03-04 2010-12-01 애플 인크. System and method of authorizing execution of software code based on accessible entitlements
KR101206735B1 (en) * 2010-11-29 2012-11-30 인포섹(주) Apparatus for protecting information associated with security of mobile terminal and method thereof

Also Published As

Publication number Publication date
KR20140112399A (en) 2014-09-23

Similar Documents

Publication Publication Date Title
US10078599B2 (en) Application access control method and electronic apparatus implementing the same
KR102216877B1 (en) Authentication method and apparatus based on biometric information in a electronic device
KR102204247B1 (en) Apparatus and Method for processing biometric information in a electronic device
US9652610B1 (en) Hierarchical data security measures for a mobile device
US10237269B2 (en) Method of providing information security and electronic device thereof
KR102180529B1 (en) Application access control method and electronic device implementing the same
US9582656B2 (en) Systems for validating hardware devices
US10242167B2 (en) Method for user authentication and electronic device implementing the same
US9891969B2 (en) Method and apparatus for device state based encryption key
KR20150128202A (en) Content sharing method and apparatus
KR20150022276A (en) Apparatas and method for extravting a encrypted message of image file in an electronic device
US20140258734A1 (en) Data security method and electronic device implementing the same
KR20170084934A (en) Electronic apparatus and method for authentication of identification information thereof
US10664578B2 (en) Security information inputting/outputting method and electronic device adapted to the method
KR20180046149A (en) Electronic apparatus and method for performing authentication
KR102071530B1 (en) Apparatas and method for proposing a response manual of occurring denial in an electronic device
KR102137686B1 (en) Method for controlling an content integrity and an electronic device
KR20140114263A (en) Application authentication method and electronic device implementing the same
US20150121474A1 (en) Processor security authentication area
KR102348217B1 (en) Method and apparatus for controlling the security screen in electronic device
KR20150091569A (en) Electronic device and mehthod for controlling access to a specific area thereof
KR20210026233A (en) Electronic device for controlling access for device resource and operating method thereof
KR20140110637A (en) Data security method and electronic device implementing the same
US11809550B2 (en) Electronic device and control method therefor
KR102018960B1 (en) Software code obfuscation using doubly packed structures

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant