KR20160058375A - 단말 내장형 보안 요소와의 안전한 통신 - Google Patents

단말 내장형 보안 요소와의 안전한 통신 Download PDF

Info

Publication number
KR20160058375A
KR20160058375A KR1020140159241A KR20140159241A KR20160058375A KR 20160058375 A KR20160058375 A KR 20160058375A KR 1020140159241 A KR1020140159241 A KR 1020140159241A KR 20140159241 A KR20140159241 A KR 20140159241A KR 20160058375 A KR20160058375 A KR 20160058375A
Authority
KR
South Korea
Prior art keywords
key
module
security element
processor
ese
Prior art date
Application number
KR1020140159241A
Other languages
English (en)
Inventor
권은영
김범한
김종수
조대행
박진환
장동호
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020140159241A priority Critical patent/KR20160058375A/ko
Publication of KR20160058375A publication Critical patent/KR20160058375A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/80Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Telephone Function (AREA)

Abstract

본 발명의 다양한 실시 예에 따른 전자 장치는 일반 모듈과 보안 모듈로 구분되어 동작하는 프로세서, 메모리, 암호화 키를 저장할 수 있고 상기 메모리와 구별되는 내장형 보안 요소(embedded Secure Element) 및 상기 보안 모듈과 상기 내장형 보안 요소를 직접 연결하는 보안 채널을 포함할 수 있다. 이 외에도 명세서를 통해 파악되는 다양한 실시 예가 가능하다.

Description

단말 내장형 보안 요소와의 안전한 통신{A Protected Communication with an Embedded Secure Element}
본 문서의 다양한 실시 예는 단말 내장형 보안 요소(embedded Secure Element)와의 안전한 통신에 관한 것이다.
스마트 폰이나 태블릿과 같은 전자 장치는 단말 내장형 보안 요소(embedded secure element)을 장착할 수 있다. 상기 보안 요소는 개인 정보 등의 보안 필요성이 높은 정보를 저장하기 위한 칩으로, 무선 단말을 이용한 결제 등에 이용될 수 있다.
전자 장치 내에서 데이터를 보호하기 위한 보안 요소(secure element)는 탈부착 가능한 형태 또는 내장형으로 구비될 수 있다. 외부의 악의적(malicious) 공격을 방지하기 위하여 보안 요소는 신뢰할 수 있는 외부 서버의 허용된(authorized) 제어 명령에 따라 관리될 수 있다.
전자 장치에 내장된 보안 모듈의 경우 외부의 서버의 제어 명령에 의해서만 관리되는 경우, 전자 장치 내 다른 회로와의 효과적인 상호 동작에 제약을 받을 수 있다.
본 문서의 다양한 실시 예들은 전자 장치 내부의 프로세서와 내장형 보안 요소 사이에 직접적인 로컬 경로인 보안 채널을 형성하여 프로세서의 보안 영역을 통해 직접 보안 요소를 제어할 수 있는 전자 장치를 제공할 수 있다.
본 발명의 다양한 실시 예에 따른 전자 장치는 일반 모듈과 보안 모듈로 구분되어 동작하는 프로세서, 메모리, 암호화 키를 저장할 수 있고 상기 메모리와 구별되는 내장형 보안 요소(embedded secure element; 이하 eSE) 및 상기 보안 모듈과 상기 SE를 직접 연결하는 보안 채널을 포함할 수 있다.
본 발명의 다양한 실시 예에 따른 전자 장치는 eSE을 외부 네트워크와 연결되는 경로 또는 내부 경로를 통해서 직접 제어할 수 있다.
본 발명의 다양한 실시 예에 따른 전자 장치는 프로세서를 일반 영역과 보안 영역으로 구분하고, 상기 보안 영역과 eSE 사이에 공유되는 암호화 키를 기반으로 보안성 높은 데이터를 송수신할 수 있다.
본 발명의 다양한 실시 예에 따른 전자 장치는 프로세서의 보안 영역과 eSE 사이에 공유되는 암호화 키를 기반으로 프로비저닝 절차, 리셋 절차, 주요 데이터 저장 및 활용 절차 등을 수행할 수 있다.
도 1은 다양한 실시 예에 따른 전자 장치의 구성도 이다.
도 2는 다양한 실시 예에 따른 일반 네트워크 경로와 로컬 경로를 포함하는 전자 장치의 구성도 이다.
도 3은 다양한 실시 예에 따른 eSE의 프로비저닝(provisioning) 방법을 설명하는 신호 흐름도이다.
도 4은 다양한 실시 예에 따른 eSE의 키 생성 과정에 관한 순서도이다.
도 5는 다양한 실시 예에 따른 eSE의 키 리셋 과정을 설명하는 신호 흐름도이다.
도 6은 다양한 실시 예에 따른 eSE의 키 리셋 과정을 설명하는 순서도이다.
도 7은 다양한 실시 예에 따른 eSE의 상태 변화를 나타내는 구성도이다.
도 8은 다양한 실시 예에 따른 프로비저닝 이후, 보안 채널을 통한 데이터 전송에 관한 신호 흐름도이다.
도 9은 다양한 실시 예에 따른 네트워크 환경 내의 전자 장치를 나타낸다.
도 10은 다양한 실시 예에 따른 전자 장치의 블록도를 나타낸다.
도 11은 다양한 실시 예에 따른 프로그램 모듈의 블록도를 나타낸다.
이하, 본 발명의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 실시 예의 다양한 변경(modification), 균등물(equivalent), 및/또는 대체물(alternative)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 문서에서, "가진다", "가질 수 있다", "포함한다", 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 문서에서, "A 또는 B", "A 또는/및 B 중 적어도 하나", 또는 "A 또는/및 B 중 하나 또는 그 이상" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B", "A 및 B 중 적어도 하나", 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
다양한 실시 예에서 사용된 "제1", "제2", "첫째", 또는 "둘째" 등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 해당 구성요소들을 한정하지 않는다. 상기 표현들은 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 수 있다. 예를 들면, 제1 사용자 기기와 제2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 바꾸어 명명될 수 있다.
어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 문서에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)", "~하는 능력을 가지는(having the capacity to)", "~하도록 설계된(designed to)", "~하도록 변경된(adapted to)", "~하도록 만들어진(made to)", 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성(또는 설정)된"은 하드웨어적으로 "특별히 설계된(specifically designed to)"것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성(또는 설정)된 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 다른 실시 예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 일반적으로 사용되는 사전에 정의된 용어들은 관련 기술의 문맥 상 가지는 의미와 동일 또는 유사한 의미를 가지는 것으로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 발명의 실시 예들을 배제하도록 해석될 수 없다.
이하, 첨부 도면을 참조하여, 다양한 실시 예에 따른 전자 장치가 설명된다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치 (예: 인공지능 전자 장치)를 지칭할 수 있다.
본 문서에 개시된 보안 요소(secure element)은 안전한 데이터 저장 및 보호된 명령 실행 환경을 보장해주는 회로일 수 있다. 상기 보안 모듈은 탈착가능한 스마트 칩, 시큐어 디지털(SD) 카드 내에 존재할 수 있거나 또는 전자 장치의 고정 칩 내에 내장 될 수 있는 보안 요소(secure element; 이하 'SE'라 한다)일 수 있다. 다양한 실시 예에서, 상기 보안 요소는 가입자 식별 모듈(SIM) 카드에 탑재되거나, 금융 관련 스마트카드에 탑재된 회로일 수 있다. 상기 SE는 암호화 프로세서(cryptographic processor) 또는 난수 발생기(random number generator) 등의 서브 회로를 포함할 수 있다. 상기 SE는, 예를 들어, JavaCard Open Platform (JCOP) 운영 체제 등의 스마트 카드 운영 체제를 기반으로 동작할 수 있다. 상기 SE는 전자 장치의 고정 칩 내의 내장형 보안 요소(embedded secure element; 이하 'eSE'라 한다)일 수 있다. 본 문서에 개시된 SE 또는 eSE는 보안 모듈의 예시이며, 이에 제한되는 것은 아니다.
eSE을 외부의 Server(예: TSM(Trusted Service Manager))를 통해 제어할 수 있다. TSM은 전자 장치가 조립되기 전에 eSE 제조업체에 키를 제공하여 삽입되도록 할 수 있고, eSE는 전자 장치에 장착될 수 있다. TSM은 eSE에 저장된 키와 대응하는 키를 가질 수 있다. 대칭키 방식(Symmetric key)일 경우, eSE의 키와 TSM의 키는 동일할 수 있고, 비대칭키 방식(Asymmetric Key)일 경우, eSE와 TSM은 각각 Public Key와 Private Key를 보유할 수 있다.
TSM에서 eSE로 제어 명령을 송신하는 경우, TSM은 eSE에 대응되는 Key를 이용하여 암호화하여 데이터를 전송할 수 있다. eSE는 암호화된 제어 명령을 보유한 Key를 이용하여 복호화할 수 있고, 성공적으로 복호화된 경우 제어 명령을 수행할 수 있다.
eSE에는 외부 Public Network (예: Internet)과의 통신 기능이 없기 때문에 외부 Public Network와의 통신이 가능한 전자 장치 내부의 프로세서를 통하여 데이터를 수신할 수 있다. TSM은 전자 장치 내부의 통신 모듈 및 어플리케이션을 통해 eSE에 데이터를 전송 할 수 있다.
도 1은 다양한 실시 예에 따른 전자 장치의 구성도 이다.
도 1을 참조하면, 전자 장치 101은 프로세서 110 및 eSE 120을 포함할 수 있다. 전자 장치 101은 프로세서 110 및 eSE 120을 연결하기 위한 보안 채널 150을 더 포함할 수 있다. 프로세서 110은 보안 채널 150을 통해 디바이스 내부에서 eSE 120에 접근할 수 있는 로컬 경로를 형성할 수 있다. 프로세서 110은 eSE 120에 접근하는 경우, 일반 모듈 130이 아닌 보안 모듈 140을 통한 경로를 통해 데이터를 암호화할 수 있고, 보안성을 높일 수 있다.
프로세서 110은 일반 모듈(rich execution environment) 130 및 보안 모듈(trusted execution environment) 140을 포함할 수 있다.
일반 모듈 130은 보안 업무과 관련성이 적은 통상적인 연산 작업을 수행할 수 있다. 일반 모듈 130은 중앙처리장치(CPU), AP(application processor), 또는 CP(communication processor) 중 하나 또는 그 이상을 포함할 수 있다. 일반 모듈 130은, 예를 들면, 전자 장치 101의 적어도 하나의 다른 구성요소들(예: 메모리, 통신 인터페이스 등)의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다. 일반 모듈 130은 어플리케이션 레이어 131, 프레임워크 레이어 132 및 커널 133을 포함할 수 있다.
어플리케이션 레이어 131은 전자 장치(예: 전자 장치 101)에 관련된 자원을 제어하는 운영 체제(operating system, OS) 및/또는 운영 체제 상에서 구동되는 다양한 어플리케이션을 포함할 수 있다.
프레임워크 레이어 132는 어플리케이션 레이어 131로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 프레임워크 레이어 132는 상기 적어도 하나에 부여된 우선 순위에 따라 상기 하나 이상의 작업 요청들을 처리함으로써, 상기 하나 이상의 작업 요청들에 대한 스케쥴링 또는 로드 밸런싱 등을 수행할 수 있다. 다양한 실시 예에서, 프레임워크 레이어 132는 보안 모듈의 구동에 필요한 라이브러리를 포함할 수 있다.
커널 133은, 예를 들면, 다른 프로그램들(예: 프레임워크 레이어 132 또는 어플리케이션 레이어 131)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스, 프로세서 또는 메모리 등)을 제어 또는 관리할 수 있다. 다양한 실시 예에서, 커널 133은 보안 모듈 140을 구동하기 위한 드라이버를 포함할 수 있다.
보안 모듈 140은 프로세서 120 내부에서 일반 모듈 130과 분리된 보안 환경(TEE, trusted execution environment)일 수 있다. 보안 모듈 140은 일반 모듈 130이 eSE 120과 연결되기 위한 디바이스 내부의 로컬 경로를 형성할 수 있다. 일반 모듈 130의 데이터 중 암호화 과정 등의 보안 과정이 필요한 데이터는 보안 모듈 140을 거쳐 암호화 될 수 있고, eSE 120에 전송될 수 있다. 다양한 실시 예에서, 보안 모듈 140은 eSE 120과 공유된 키(secret key)를 가질 수 있고, 상기 키를 이용하여 eSE 120과 직접적으로 암호화된 데이터를 송수신할 수 있다. 보안 모듈 140은 어플리케이션 레이어 141, 프레임워크 레이어 142 및 커널 143을 포함할 수 있다.
어플리케이션 레이어 141은 통상적인 데이터와 달리 상대적으로 높은 수준의 보안 수준을 요구하는 어플리케이션을 포함할 수 있다. 예를 들어, 어플리케이션 레이어 141은 오프라인 결제 앱, 사용자 인증 앱(예: 지문 인식, 홍채 인식 등 생체 인식 앱) 등을 포함할 수 있다.
프레임워크 레이어 142는 어플리케이션 레이어 131로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 프레임워크 레이어 142는 eSE 120에 전송하는 데이터를 암호화하는 기능을 수행할 수 있다. 프레임워크 레이어 142는 보안 프로토콜(SP, secure protocol) 모듈 145 및 APDU(application protocol data unit) 통신 엔진 146을 포함할 수 있다. APDU 통신 엔진 146은 ISO 7816-4에서 규정한 메시지 규격에 따라 통신을 수행할 수 있다.
보안 프로토콜 모듈 145는 어플리케이션 레이어 131로부터 수신된 하나 이상의 작업 요청들을 eSE 120과 공유된 키를 통해 암호화 하는 모듈일 수 있다. 상기 키는 프로비저닝(provisioning) 과정 등을 통해 공유될 수 있다. 다양한 실시 예에서, 어플리케이션 레이어 141에서 제공되는 일부 데이터는 보안 프로토콜 모듈 145를 통해 암호화 될 수 있고, 다른 일부는 보안 프로토콜 모듈 145를 통과하지 않고, 별도의 암호화 과정 없이 APDU 통신 엔진 146으로 제공될 수 있다. 보안 프로토콜 모듈 145를 통해 암호화 되는 데이터는 보안 필요성 정도에 따라 결정될 수 있다.
APDU 통신 엔진 146은 eSE 120에서 인식할 수 있는 포맷(format)으로 데이터를 변환하는 모듈일 수 있다.
커널 143은 예를 들면, 다른 프로그램들(예: 프레임워크 레이어 142 또는 어플리케이션 레이어 141)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스, 프로세서 또는 메모리 등)을 제어 또는 관리할 수 있다. 다양한 실시 예에서, 커널 143은 eSE 드라이버 147을 포함할 수 있다. eSE 드라이버 147은 eSE 120에 연결하기 위한 인터페이스를 수행할 수 있다.
보안 채널 150은 프로세서 110 내의 보안 모듈 140과 eSE 120 사이의 데이터를 전송할 수 있다. 보안 채널 150은 프로세서 110이 외부 네트워크(예: 무선 인터넷)에 영향을 받지 않고, eSE 120를 직접 제어할 수 있는 로컬 경로를 형성할 수 있다. 프로세서 110은 보안 채널 150을 통해 별도의 NFC 모듈 등을 거치지 않고, 직접 제어 신호를 송수신할 수 있고, 제어 신호에 대응하는 결과를 eSE 120으로부터 수신할 수 있다. 다양한 실시 예에서, 보안 채널 150은 물리적인 도선으로 구현될 수 있다. 상기 보안 채널 150은 (serial peripheral interface), RS232, I2C(Inter-Integrated Circuit) 등으로 구현될 수 있다.
도 2는 다양한 실시 예에 따른 일반 네트워크 경로와 로컬 경로를 포함하는 전자 장치의 구성도 이다.
도 2를 참조하면, 전자 장치 201은 프로세서 210 및 eSE 220을 포함할 수 있다. 전자 장치 201은 프로세서 210 및 eSE 220을 연결하기 위한 보안 채널 250을 더 포함할 수 있다. 전자 장치 201은 eSE 220에 접근하기 위한 경로로서, 도 1의 전자 장치 101의 로컬 경로(보안 모듈 240 및 보안 채널 250을 포함하는 경로)와 NFC 통신 모듈 265를 통한 일반 네트워크 경로를 포함할 수 있다.
프로세서 210은 일반 모듈 230 및 보안 모듈 240을 포함할 수 있다. 일반 모듈 230은 일반 네트워크 경로의 일부를 형성할 수 있다. 일반 네트워크 경로는 TSM 서버 202에서 네트워크 모듈 261, 일반 모듈 230(어플리케이션 262, APDU 통신 엔진 263, NFC 드라이버 264), NFC 모듈 265 및 연결 채널 260을 통해 신호가 전송되는 경로일 수 있다. 상기 연결 채널 260은 보안 채널 250과 구분되는 별개의 채널로 형성될 수 있다.
예를 들어, TSM 서버 202는 전자 장치 202가 조립되는 단계에서, eSE 제조업체에 키를 제공하여 eSE 220에 상기 키가 삽입되도록 할 수 있다. TSM 서버 202는 eSE 220에 저장된 키와 대응하는 키를 가질 수 있다. 대칭키 방식(Symmetric key)일 경우, eSE의 키와 TSM의 키는 동일할 수 있고, 비대칭키 방식(Asymmetric Key)일 경우, eSE와 TSM은 각각 Public Key와 Private Key를 보유할 수 있다.
TSM 서버 202에서 eSE 220으로 제어 명령을 송신하는 경우, TSM 서버 202는 eSE 220에 대응되는 Key를 이용하여 암호화하여 데이터를 전송할 수 있다. eSE 220은 암호화된 제어 명령을 보유한 Key를 이용하여 복호화 할 수 있고, 성공적으로 복호화된 경우 제어 명령을 수행 할 수 있다.
도 3은 다양한 실시 예에 따른 eSE의 프로비저닝(provisioning) 방법을 설명하는 신호 흐름도이다. 프로비저닝 과정은 프로세서 110과 eSE 120 사이에 키를 공유하는 과정일 수 있다.
도 3을 참조하면, 동작 310에서, 프로세서 301은 프로비저닝 이벤트를 수신할 수 있다. 프로비저닝 이벤트는 프로비저닝 과정을 시작하기 위한 시작 신호일 수 있다. 다양한 실시 예에서, 상기 프로비저닝 이벤트는 외부 장치로부터 프로비저닝 요청을 수신하는 이벤트일 수 있다. 상기 프로비저닝 요청은 키 생성 관리 장치의 AT command, 또는 eSE 302의 관리 권한을 가지는 외부 서버의 OTA(over the air) 메시지일 수 있다.
다양한 실시 예에 따르면, 상기 프로비저닝 이벤트는 전자 장치 101 내부에서 발생하는 지정된 이벤트일 수 있다. 예를 들어, 상기 프로비저닝 이벤트는 상기 전자 장치 101의 부팅(booting)시 eSE 302가 키를 저장하지 않은 경우, 상기 전자 장치 101의 부팅(booting)시 프로비저닝을 수행한 이력 정보를 나타내는 플래그를 체크(flag check)한 이력이 없는 경우, 또는 eSE 302의 사용 요청을 받아 연결 요청을 하였을 때, 키가 저장되지 않은 경우 중 적어도 하나일 수 있다.
프로세서 301은 eSE 302가 사전에 키를 가지고 있는 경우, 프로비저닝 절차를 종료하고, 키를 가지고 있지 않은 경우, 동작 320 내지 380의 프로비저닝 절차를 계속할 수 있다.
동작 320에서, 프로세서 301은 상기 프로비저닝 이벤트에 따라 키 교환 요청을 eSE 302에 송신할 수 있다. 다양한 실시 예에서, 상기 키 교환 요청은 알고리즘 식별자, 프로세스 식별자, 지정된 보안 알고리즘에 따른 공개키 등을 포함할 수 있다.
동작 330에서, eSE 302는 지정된 조건(예: 저장된 키가 있는지 여부 또는 eSE의 상태 정보 등)를 확인하여 제1 키를 생성하고 저장할 수 있다. 예를 들어, eSE 302는 미리 설정된 키가 없고, eSE 302이 차단(blocked) 상태 또는 중단(terminated) 상태가 아닌 경우, 제1 키를 생성하고 저장할 수 있다. 에러 코드를 프로세서 301에 송신할 수 있다. 상기 조건에 관한 정보는 도 4를 통해 제공될 수 있다. 다양한 실시 예에서, eSE 120은 프로세서 식별자, eSE 식별자 등을 기반으로 KDF(key derivation function)를 계산하여 키를 생성하고 저장할 수 있다.
동작 340에서, eSE 302는 프로세서 301에 키 교환 응답을 송신할 수 있다. 상기 키 교환 응답은 키의 생성 및 저장이 성공이면 성공 코드를 포함할 수 있고, 키의 생성 및 저장이 실패이면, 에러 코드를 포함할 수 있다. 다양한 실시 예에서, eSE 302는 프로세서 301과의 키 교환을 위해 생성된 키(예: 공개키)와 MAC 데이터를 응답으로 송신할 수 있다. eSE 302는 데이터 무결성 검증을 위해 eSE 302의 개인 키로 서명을 하여 상기 응답을 송신할 수 있다.
동작 350에서, 프로세서 301은 상기 키 교환 응답에 대응하여 동작할 수 있다. 프로세서 301은 성공 코드를 수신한 경우, 프로세스 식별자, eSE 식별자 등을 인자로 KDF를 계산하여 제2 키를 생성 후 저장할 수 있다. 반면, 프로세서 301은 에러 코드를 수신한 경우, 키의 생성 및 저장이 실패한 이유(예: 키가 이미 존재, eSE 302의 상태가 차단 상태 등)를 확인할 수 있다. 프로세서 301은 각각의 에러 코드에 대응하는 동작(예: 대기, 재시행, 리셋, 또는 사용자가 알 수 있도록 소리 또는 디스플레이 중 적어도 하나 이상의 방법을 이용한 알림 등을 수행할 수 있다. 다양한 실시 예에서, 프로세서 301은 eSE 302로부터 전송받은 MAC 데이터를 프로세서 301에 의해 직접 생성된 MAC 데이터와 비교하여, 각각의 구성에서 생성된 키의 유효성을 확인할 수 있다. 이와 유사한(또는 대응되는) 동작이 동작 370에서 eSE 302에 의해 수행될 수 있다. 다양한 실시 예에서, eSE 302의 개인 키로 서명된 응답을 수신한 경우, 프로세서 301은 eSE 302의 개인 키에 대응되는 공개 키로 서명을 검증할 수 있다.
동작 360에서, 프로세서 301은 키 생성 및 저장이 완료 된 후, MAC 데이터를 이용하여, 키 확인 요청을 eSE 302에 송신할 수 있다. 다양한 실시 예에서, 데이터 무결성 검증을 위해 프로세서 301의 개인 키로 서명을 하여 키 확인 요청을 eSE 302에 송신할 수 있다.
동작 370에서, eSE 120은 전송 받은 MAC 데이터를 직접 생성한 MAC 데이터와 비교하여, 각각에서 생성된 키의 유효성을 확인할 수 있다. 이 경우에도, 전술한 방식과 유사하게 프로세서 301의 개인 키에 대응되는 공개 키로 서명을 검증할 수 있다.
동작 380에서, eSE 120은 상기 비교 결과에 따라 키 확인 응답을 송신할 수 있다.
도 4은 다양한 실시 예에 따른 eSE의 키 생성 과정에 관한 순서도이다.
도 4를 참조하면, 동작 410에서, eSE 302는 프로세서 301로부터 키 교환 요청을 수신할 수 있다. 상기 키 교환 요청은 알고리즘 식별자, 프로세스 식별자, 지정된 보안 알고리즘에 따른 공개키 등을 포함할 수 있다.
동작 420에서, eSE 302는 eSE의 차단(blocked) 상태 또는 중단(terminated) 상태인지 여부를 확인할 수 있다. 상기 차단 상태는 eSE 302의 리셋 과정이 지정된 횟수(예: 5회)이상 실패한 상태일 수 있다. 상기 중단 상태는 eSE 302가 critical attack(예: 물리적 손상 등)에 의해 동작이 중단된 상태일 수 있다.
동작 430에서, eSE 302는 차단 상태 또는 중단 상태가 아닌 경우, 이전에 저장된 키가 있는지 여부를 확인할 수 있다.
동작 440에서, eSE 302는 차단 상태 또는 중단 상태이거나 기존의 키가 있는 경우, 키 교환 응답에 에러 코드로 회신할 수 있다. 다양한 실시 예에서, 상기 동작 420과 430은 동시에 진행되거나 순서가 바뀔 수 있다.
동작 450에서, eSE 302는 별도의 저장된 키가 없는 경우, 키를 생성 후 저장할 수 있다. eSE 302는 프로세서 식별자, eSE 식별자 등을 기반으로 KDF(key derivation function)를 계산하여 키를 생성하고 저장할 수 있다.
동작 460에서, eSE 302는 키 교환 응답으로 프로세스 301에 성공 코드로 회신할 수 있다.
도 5는 다양한 실시 예에 따른 eSE의 키 리셋 과정을 설명하는 신호 흐름도이다. 다양한 실시 예에서, 프로세서 501과 eSE 502는 보안 채널 150을 통해 리셋 관련 요청 및 대응에 관한 신호를 송수신 할 수 있다.
도 5를 참조하면, 동작 510에서, 프로세서 501은 외부 장치(예 보안 안전 장치, 서비스 서버 등) 502로부터 리셋 요청을 수신할 수 있다. 상기 리셋 요청은 외부 장치의 AT command, 또는 eSE 302의 관리 권한을 가지는 외부 서버의 OTA(over the air) 메시지일 수 있다.
동작 520에서, 프로세서 501은 리셋 권한 확인을 위한 랜덤 넘버의 생성을 eSE 503에 요청할 수 있다. 다양한 실시 예에서, 프로세서 501은 APDU의 스펙에 맞춘 데이터 양식으로 랜덤 넘버의 생성을 요청할 수 있다. 예를 들면, 프로세서 501은 데이터 필드를 채우지 않고, 헤더의 파라미터만을 이용하여 데이터를 생성하고 전송할 수 있다.
동작 530에서, eSE 503은 랜덤 넘버 생성 요청에 따른 상기 랜덤 넘버를 생성하고 저장할 수 있다. eSE 503은 외부 장치 502와 미리 공유된 공개 키를 이용하여 생성한 랜덤 넘버를 암호화할 수 있다.
동작 540에서, eSE 503은 암호화된 랜덤 넘버를 프로세서 501에 회신할 수 있다. 상기 랜덤 넘버는 보안 채널 150을 통해 송신될 수 있다.
동작 550에서, 프로세서 501은 암호화된 랜덤 넘버를 외부 장치 502에 송신할 수 있다.
동작 560에서, 외부 장치 502는 공개 키에 대응하는 프라이빗 키를 이용하여 암호화된 랜덤 넘버를 복호화 할 수 있다. 다양한 실시 예에서, 프로세서 501에 리셋 요청을 하는 외부 장치와 상기 랜덤 넘버를 복호화하는 외부 장치는 서로 다를 수 있다. 예를 들어, 제1 외부 장치는 프로세서 501에 리셋 요청을 할 수 있다. 이후, 제1 외부 장치는 프로세서 501로부터 암호화된 랜덤 넘버를 수신한 경우, 프라이빗 키를 가지는 제2 전자 장치에 상기 랜덤 넘버의 복호화를 요청하고 이에 대한 응답을 수신할 수 있다.
동작 570에서, 외부 장치 502는 프로세서 501에 복호화된 랜덤 넘버를 송신할 수 있다.
동작 580에서, 프로세서 501은 복호화된 랜덤 넘버를 기반으로 eSE 120에 리셋을 요청할 수 있다.
동작 590에서, eSE 503은 수신한 복호화된 랜덤 넘버를 저장된 랜덤 넘버와 비교하여 지정된 조건에 따라 키 삭제 여부를 결정할 수 있다. 예를 들어, eSE 503은 수신한 복호화된 랜덤 넘버를 저장된 랜덤 넘버가 일치하는 경우, 키를 삭제하고, 설치된 applet에 리셋 이벤트를 전송할 수 있다. 상기 지정된 조건에 관한 정보는 도 6을 통해 제공될 수 있다.
동작 595에서, eSE 503은 프로세서 키 삭제 여부에 관한 응답을 제공할 수 있다.
동작 598에서, 프로세서 501은 키 삭제 여부에 관한 결과를 확인하고, 대응하는 조치 취할 수 있다. 예를 들어, 프로세서 501은 성공한 경우, 저장된 키를 삭제할 수 있다.
도 6은 다양한 실시 예에 따른 eSE의 키 리셋 과정을 설명하는 순서도이다.
도 6을 참조하면, 동작 610에서, eSE 503은 프로세스 501으로부터 리셋 요청을 수신할 수 있다. 프로세서 501은 외부 장치 501을 통해 복호화된 랜덤 넘버를 eSE 503에 송신할 수 있다.
동작 620에서, eSE 503은 저장된 랜덤 넘버와 복호화되어 제공된 랜덤 넘버가 동일한지 여부를 확인할 수 있다.
동작 630에서, 랜덤 넘버가 동일한 경우, eSE 503은 키를 리셋하고, eSE 503의 상태를 리셋 상태로 변경할 수 있다.
동작 640에서, eSE 503은 랜덤 넘버가 일치하지 않는 경우, 실패 횟수의 카운트를 1 증가시킬 수 있다.
동작 650에서, eSE 503은 실패 횟수가 정해진 값(예: 5회) 이상인지 여부를 확인할 수 있다.
동작 660에서, eSE 503은 실패 횟수가 정해진 값(예: 5회) 미만인 경우, 현재의 키를 유지하고, 키가 변경되지 않았음을 프로세서 501에 알릴 수 있다.
동작 670에서, eSE 503은 실패 횟수가 정해진 값(예: 5회) 이상인 경우, eSE 120의 상태를 차단 상태로 변경할 수 있다.
도 7은 다양한 실시 예에 따른 eSE의 상태 변화를 나타내는 구성도이다.
도 7을 참조하면, eSE 120은 선택 가능 상태 710, 개별화 상태 720, 리셋 상태 730, 차단 상태 740 또는 중단 상태 750 중 어느 하나의 상태일 수 있다.
선택 가능 상태 710은 eSE 120의 키 생성을 대기하는 초기 상태일 수 있다. 개별화 상태 720은 프로비저닝 절차가 진행되어 eSE 120에 키가 생성되고 프로세서 110의 보안 모듈 140과 키가 공유된 상태일 수 있다. 리셋 상태 730은 리셋 절차가 진행되어 eSE 120에 키가 삭제된 상태일 수 있다.
상기 차단 상태 740은 eSE 120의 리셋 과정이 지정된 횟수(예: 5회)이상 실패한 상태일 수 있다. 상기 중단 상태 750은 eSE 120이 critical attack(예: 물리적 손상)에 의해 동작이 중단된 상태일 수 있다.
eSE 120은 프로비저닝 절차 또는 리셋 절차 등을 통해 상태가 변경될 수 있고, 변경된 상태에 따라 동작할 수 있다. 예를 들어, eSE 120이 차단 상태 또는 중단 상태인 경우, 프로비저닝 절차가 차단되고, eSE 120 내부 데이터에 대한 접근이 제한될 수 있다.
도 8은 다양한 실시 예에 따른 프로비저닝 이후, 보안 채널을 통한 데이터 전송에 관한 신호 흐름도이다. 프로세서 801은 세션을 시작하여 결제 또는 사용자 인식 정보와 같은 주요 정보를 eSE 802와 송수신 할 수 있다.
도 8을 참조하면, 동작 810에서, 프로세서 801은 eSE 802가 프로비저닝 된 상태인지 여부를 확인할 수 있다. 상기 프로세서 801과 eSE 802가 프로비저닝된 경우에는 공유된 키를 기반으로 데이터를 암호화 하여 송수신할 수 있다.
동작 820에서, 프로세서 801는 eSE 802에 데이터 전송을 시작하기 위한 세션 형성을 시도 할 수 있다. 다양한 실시 예에서, 프로세서 801은 앱 식별자, eSE의 applet의 식별자 또는 프로세서 801에서 생성한 제1 세션 랜덤 넘버 등을 기반으로 세션 형성을 시도할 수 있다.
동작 830에서, eSE 802는 상기 세션 형성 시도에 대해 응답 신호를 송신할 수 있다. eSE 802는 제2 세션 랜덤 넘버를 생성하여 상기 세션 생성 요청의 MAC 데이터와 함께 응답할 수 있다.
동작 840에서, 프로세서 802는 세션 시작 요청을 송신할 수 있다. 프로세서 802는 제1 세션 시작 벡터를 생성하고, 상기 벡터와 상기 세션 시도 응답의 MAC 데이터를 포함하는 세션 시작 요청을 송신할 수 있다.
동작 850에서, eSE 802는 프로세서 801의 세션 시작 요청에 대한 응답 신호를 송신할 수 있다. eSE 802는 제2 세션 시작 벡터를 생성하고 이에 대한 MAC 데이터로 응답 신호를 송신할 수 있다.
동작 860에서, 프로세서 802는 상기 세션을 통해 보안 통신(secure communication)을 수행할 수 있다. 다양한 실시 예에서, 프로세서 802는 높은 보안 수준이 요구되는 정보(이하, 보안 정보)를 eSE 802에 별도 저장하여 암호화된 형태로 정보를 송수신하도록 설정될 수 있다. 프로세서 802는 상기 세션을 통해 보안 정보의 저장을 요청할 수 있다. 상기 보안 정보는 결제 토큰, 지문 정보 등의 생체 인식 정보 또는 암호화 키에 대한 정보를 포함할 수 있다.
다양한 실시 예에 따르면, 프로세서 801은 보안 정보를 삭제할 수 있다. 보안 정보의 삭제는 eSE에 보안 정보가 저장이 완료 되었음을 판단한 이후 진행할 수 있다. 프로세서 801은 보안 정보를 삭제하고 상기 보안 정보를 eSE 802에만 저장하여 보안성을 높일 수 있다.
동작 870에서, 프로세서 801은 세션 종료 요청을 송신할 수 있다.
다양한 실시 예에 따르면, 프로세서 802는 저장된 정보가 필요한 경우, 마찬가지로, 상기 정보의 저장 위치를 확인하고, 세션을 시작하여 저장된 정보 요청하여 수신할 수 있다. 프로세서 802는 상기 정보를 수신한 이후에는 상기 세션을 종료할 수 있다. 프로세서 802는 상기 보안 정보의 사용이 완료되면 이를 즉시 삭제하여 보안성을 강화할 수 있다.
다양한 실시 예에 따르면, 전자 장치는 일반 모듈과 보안 모듈로 구분되어 동작하는 프로세서, 메모리, 암호화 키를 저장할 수 있고 상기 메모리와 구별되는 내장형 보안요소(embedded Secure Element; eSE) 및 상기 보안 모듈과 상기 SE를 직접 연결하는 채널을 포함할 수 있다.
다양한 실시 예에 따르면, 상기 보안 모듈은 상기 암호화 키를 관리하는 보안 프로토콜 모듈 및 APDU(application protocol data unit) 통신 엔진을 포함할 수 있다. 상기 보안 프로토콜 모듈은 상기 암호화 키에 기초하여 데이터를 암호화하고, 상기 암호화 키는 상기 내장형 보안 요소에 저장되는 키에 대응되도록 설정될 수 있다.
다양한 실시 예에 따르면, 상기 전자 장치는 NFC(Near Field Communication) 통신 모듈을 더 포함하고, 상기 NFC 통신 모듈은 상기 일반 모듈 및 상기 내장형 보안 요소와 연결 채널을 통해 연결되고, 상기 연결 채널은 상기 보안 채널과 구별되도록 설정될 수 있다.
다양한 실시 예에 따르면, 상기 보안 모듈은 프로비저닝(provisioning) 이벤트가 발생하면, 상기 내장형 보안 요소로 키 교환 요청(key exchange request) 신호를 보낼 수 있다. 상기 내장형 보안 요소는 상기 내장형 보안 요소에 저장된 키가 있거나, 상기 내장형 보안 요소가 차단(blocked) 상태 또는 중단(terminated) 상태인 경우 상기 보안 모듈로 대응하는 에러 코드를 전송할 수 있다. 상기 내장형 보안 요소는 상기 내장형 보안 요소에 저장된 키가 없는 경우, 제1 키를 생성 및 저장하고 상기 보안 모듈로 성공 코드를 전송하도록 설정될 수 있다.
다양한 실시 예에 따르면, 상기 보안 모듈은 상기 제1 키에 대한 정보에 기초하여 제2 키를 생성 및 저장하고, 상기 제2 키에 대한 확인 요청을 상기 내장형 보안 요소로 전송하도록 설정될 수 있다. 상기 내장형 보안 요소는 상기 제2 키에 대한 정보를 상기 제1 키에 대한 정보와 비교하여, 상기 제2 키와 상기 제1 키가 서로 대응되는지 여부를 판단하고, 그 판단 결과를 상기 보안 모듈로 전송하도록 설정될 수 있다.
다양한 실시 예에 따르면, 상기 프로비저닝 이벤트는 외부 장치로부터 프로비저닝 요청을 수신한 이벤트이고, 상기 일반 모듈은 상기 보안 모듈로 상기 프로비저닝 이벤트의 발생을 전달하도록 설정될 수 있다. 상기 프로비저닝 이벤트는 상기 전자 장치의 내부에서 발생하는 부팅(booting), 플래그 체크(flag check), 또는 내장형 보안 요소의 사용 요청 중 적어도 하나일 수 있다.
다양한 실시 예에 따르면, 상기 보안 모듈은 외부 장치로부터 상기 내장형 보안 요소의 리셋 요청을 수신한 경우, 상기 내장형 보안 요소로 랜덤 넘버 생성 요청 신호를 보낼 수 있다. 상기 내장형 보안 요소는 상기 외부 장치와 미리 공유된 공개 키를 이용하여 생성한 랜덤 넘버를 암호화하여 상기 보안 모듈에 송신할 수 있다. 상기 보안 모듈은 상기 일반 모듈을 통해 상기 암호화된 랜덤 넘버를 상기 외부 장치에 송신하고, 복호화된 랜덤 넘버를 수신하면 상기 내장형 보안 요소에 송신할 수 있다.
다양한 실시 예에 따르면, 상기 내장형 보안 요소는 수신한 복호화된 랜덤 넘버를 저장된 랜덤 넘버가 동일한 경우, 키를 삭제하고 리셋 상태로 진입할 수 있다. 상기 내장형 보안 요소는 수신한 복호화된 랜덤 넘버를 저장된 랜덤 넘버가 동일하지 않은 경우, 리셋 절차의 실패 횟수가 지정된 값 이상이면, 차단 상태로 진입할 수 있다.
다양한 실시 예에 따르면, 상기 보안 모듈은 상기 내장형 보안 요소와 키를 공유하는 경우, 상기 키를 기반으로 세션을 시작하여 지정된 정보를 상기 내장형 보안 요소에 저장하도록 설정할 수 있다.
다양한 실시 예에 따르면, 프로세서 및 내장형 보안 요소(embedded Secure Element)을 포함하는 전자 장치에서 수행되는 통신 방법은 상기 프로세서가 프로비저닝 이벤트를 수신하는 동작, 상기 프로세서가 상기 프로비저닝 이벤트에 따라 키 교환 요청을 상기 내장형 보안 요소에 송신하는 동작, 상기 내장형 보안 요소가 지정된 조건을 확인하여 제1 키를 생성하고 저장하는 동작, 상기 프로세서가 상기 제1 키가 생성된 경우, 상기 제1 키에 대응하는 제2 키를 생성하고 저장하는 동작을 포함할 수 있다.
상기 통신 방법은 상기 프로세서가 상기 제2 키에 대한 확인 요청을 상기 내장형 보안 요소로 전송하는 동작, 상기 내장형 보안 요소가 상기 제2 키에 대한 정보를 상기 제1 키에 대한 정보와 비교하여, 그 판단 결과를 상기 보안 모듈로 전송하는 동작을 더 포함할 수 있다.
도 9는 다양한 실시 예에 따른 네트워크 환경 내의 전자 장치를 나타낸다.
도 9를 참조하여, 다양한 실시 예에서의 네트워크 환경 900 내의 전자 장치 901이 기재된다. 전자 장치 901은 버스 910, 프로세서 920, 메모리 930, 입출력 인터페이스 950, 디스플레이 960, 및 통신 인터페이스 970을 포함할 수 있다. 어떤 실시 예에서는, 전자 장치 901은, 구성요소들 중 적어도 하나를 생략하거나 다른 구성 요소를 추가적으로 구비할 수 있다.
버스 910은, 예를 들면, 구성요소들 910-170을 서로 연결하고, 구성요소들 간의 통신(예: 제어 메시지 및/또는 데이터)을 전달하는 회로를 포함할 수 있다.
프로세서 920은, 중앙처리장치(CPU), AP(application processor), 또는 CP(communication processor) 중 하나 또는 그 이상을 포함할 수 있다. 프로세서 920은, 예를 들면, 전자 장치 901의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
메모리 930은, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리 930은, 예를 들면, 전자 장치 901의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 한 실시 예에 따르면, 메모리 930은 소프트웨어 및/또는 프로그램 940을 저장할 수 있다. 프로그램 940은, 예를 들면, 커널 941, 미들웨어 943, API(application programming interface) 945, 및/또는 어플리케이션 프로그램(또는 "어플리케이션") 947 등을 포함할 수 있다. 커널 941, 미들웨어 943, 또는 API 945의 적어도 일부는, 운영 시스템(operating system, OS)이라고 불릴 수 있다.
커널 941은, 예를 들면, 다른 프로그램들(예: 미들웨어 943, API 945, 또는 어플리케이션 프로그램 947)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스 910, 프로세서 920, 또는 메모리 930 등)을 제어 또는 관리할 수 있다. 또한, 커널 941은 미들웨어 943, API 945, 또는 어플리케이션 프로그램 947에서 전자 장치 901의 개별 구성요소에 접근함으로써, 시스템 리소스들을 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다.
미들웨어 943은, 예를 들면, API 945 또는 어플리케이션 프로그램 947이 커널 941과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다.
또한, 미들웨어 943은 어플리케이션 프로그램 947로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 예를 들면, 미들웨어 943은 어플리케이션 프로그램 947 중 적어도 하나에 전자 장치 901의 시스템 리소스(예: 버스 910, 프로세서 920, 또는 메모리 930 등)를 사용할 수 있는 우선 순위를 부여할 수 있다. 예컨대, 미들웨어 943은 상기 적어도 하나에 부여된 우선 순위에 따라 상기 하나 이상의 작업 요청들을 처리함으로써, 상기 하나 이상의 작업 요청들에 대한 스케줄링 또는 로드 밸런싱 등을 수행할 수 있다.
API 945는, 예를 들면, 어플리케이션 947이 상기 커널 941 또는 미들웨어 943에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어, 창 제어, 화상 처리, 또는 문자 제어 등을 위한 적어도 하나의 인터페이스 또는 함수(예: 명령어)를 포함할 수 있다.
입출력 인터페이스 950은, 예를 들면, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 전자 장치 901의 다른 구성요소(들)에 전달할 수 있는 인터페이스의 역할을 할 수 있다. 또한, 입출력 인터페이스 950은 전자 장치 901의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다.
디스플레이 960은, 예를 들면, 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 또는 마이크로 전자기계 시스템(microelectromechanical systems, MEMS) 디스플레이, 또는 전자 종이(electronic paper) 디스플레이를 포함할 수 있다. 디스플레이 960은, 예를 들면, 사용자에게 각종 컨텐츠(예: 텍스트, 이미지, 비디오, 아이콘, 또는 심볼 등)을 표시할 수 있다. 디스플레이 960은, 터치 스크린을 포함할 수 있으며, 예를 들면, 전자 펜 또는 사용자의 신체의 일부를 이용한 터치, 제스처, 근접, 또는 호버링(hovering) 입력을 수신할 수 있다.
통신 인터페이스 970은, 예를 들면, 전자 장치 901과 외부 장치(예: 제1 외부 전자 장치 902, 제2 외부 전자 장치 904, 또는 서버 906) 간의 통신을 설정할 수 있다. 예를 들면, 통신 인터페이스 970은 무선 통신 또는 유선 통신을 통해서 네트워크 962에 연결되어 상기 외부 장치 (예: 제2 외부 전자 장치 904 또는 서버 906)와 통신할 수 있다.
무선 통신은, 예를 들면 셀룰러 통신 프로토콜로서, 예를 들면 LTE, LTE-A, CDMA, WCDMA, UMTS, WiBro, 또는 GSM 등 중 적어도 하나를 사용할 수 있다. 또한 무선 통신은, 예를 들면, 근거리 통신 964를 포함할 수 있다. 근거리 통신 964는, 예를 들면, Wi-Fi, Bluetooth, NFC(near field communication), 또는 GPS(global positioning system) 등 중 적어도 하나를 포함할 수 있다. 유선 통신은, 예를 들면, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard 1032), 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 네트워크 962는 통신 네트워크(telecommunications network), 예를 들면, 컴퓨터 네트워크(computer network)(예: LAN 또는 WAN), 인터넷, 또는 전화 망(telephone network) 중 적어도 하나를 포함할 수 있다.
제1 및 제2 외부 전자 장치 902, 904 각각은 전자 장치 901과 동일한 또는 다른 종류의 장치일 수 있다. 한 실시 예에 따르면, 서버 906은 하나 또는 그 이상의 서버들의 그룹을 포함할 수 있다. 다양한 실시 예에 따르면, 전자 장치 901에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 전자 장치(예: 전자 장치 902, 904, 또는 서버 906)에서 실행될 수 있다. 한 실시 예에 따르면, 전자 장치 901이 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치 901은 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 다른 장치(예: 전자 장치 902, 904, 또는 서버 906)에게 요청할 수 있다. 다른 전자 장치(예: 전자 장치 902, 904, 또는 서버 906)는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치 901로 전달할 수 있다. 전자 장치 901은 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
도 10는 다양한 실시 예에 따른 전자 장치 1001의 블록도 1000을 나타낸다.
도 10를 참조하면, 전자 장치 1001은, 예를 들면, 도 9에 도시된 전자 장치 901의 전체 또는 일부를 포함할 수 있다. 전자 장치 1001은 하나 이상의 프로세서(예: 어플리케이션 프로세서(AP)) 1010, 통신 모듈 1020, 가입자 식별 모듈 1024, 메모리 1030, 센서 모듈 1040, 입력 장치 1050, 디스플레이 1060, 인터페이스 1070, 오디오 모듈 1080, 카메라 모듈 1091, 전력 관리 모듈 1095, 배터리 1096, 인디케이터 1097, 및 모터 1098을 포함할 수 있다.
프로세서 1010은, 예를 들면, 운영 체제 또는 응용 프로그램을 구동하여 프로세서 1010에 연결된 다수의 하드웨어 또는 소프트웨어 구성요소들을 제어할 수 있고, 각종 데이터 처리 및 연산을 수행할 수 있다. 프로세서 1010은, 예를 들면, SoC(system on chip)로 구현될 수 있다. 한 실시 예에 따르면, 프로세서 1010은 GPU(graphic processing unit) 및/또는 이미지 신호 프로세서(image signal processor)를 더 포함할 수 있다. 프로세서 1010은 도 10에 도시된 구성요소들 중 적어도 일부(예: 셀룰러 모듈 1021)를 포함할 수도 있다. 프로세서 1010은 다른 구성요소들(예: 비휘발성 메모리) 중 적어도 하나로부터 수신된 명령 또는 데이터를 휘발성 메모리에 로드(load)하여 처리하고, 다양한 데이터를 비휘발성 메모리에 저장(store)할 수 있다.
통신 모듈 1020은, 도 9의 상기 통신 인터페이스 970과 동일 또는 유사한 구성을 가질 수 있다. 통신 모듈 1020은, 예를 들면, 셀룰러 모듈 1021, Wi-Fi 모듈 1023, 블루투스 모듈 1025, GPS 모듈 1027, NFC 모듈 1028 및 RF(radio frequency) 모듈 1029를 포함할 수 있다.
셀룰러 모듈 1021은, 예를 들면, 통신망을 통해서 음성 통화, 영상 통화, 문자 서비스, 또는 인터넷 서비스 등을 제공할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈 1021은 가입자 식별 모듈(예: SIM 카드) 1024을 이용하여 통신 네트워크 내에서 전자 장치 1001의 구별 및 인증을 수행할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈 1021은 프로세서 1010이 제공할 수 있는 기능 중 적어도 일부 기능을 수행할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈 1021은 커뮤니케이션 프로세서(CP)를 포함할 수 있다.
Wi-Fi 모듈 1023, 블루투스 모듈 1025, GPS 모듈 1027 또는 NFC 모듈 1028 각각은, 예를 들면, 해당하는 모듈을 통해서 송수신되는 데이터를 처리하기 위한 프로세서를 포함할 수 있다. 어떤 실시 예에 따르면, 셀룰러 모듈 1021, Wi-Fi 모듈 1023, 블루투스 모듈 1025, GPS 모듈 1027 또는 NFC 모듈 1028 중 적어도 일부(예: 두 개 이상)는 하나의 IC(integrated chip) 또는 IC 패키지 내에 포함될 수 있다.
RF 모듈 1029는, 예를 들면, 통신 신호(예: RF 신호)를 송수신할 수 있다. RF 모듈 1029는, 예를 들면, 트랜시버(transceiver), PAM(power amp module), 주파수 필터(frequency filter), LNA(low noise amplifier), 또는 안테나 등을 포함할 수 있다. 다른 실시 예에 따르면, 셀룰러 모듈 1021, Wi-Fi 모듈 1023, 블루투스 모듈 1025, GPS 모듈 1027 또는 NFC 모듈 1028 중 적어도 하나는 별개의 RF 모듈을 통하여 RF 신호를 송수신할 수 있다.
가입자 식별 모듈 1024는, 예를 들면, 가입자 식별 모듈을 포함하는 카드 및/또는 내장 SIM(embedded SIM)을 포함할 수 있으며, 고유한 식별 정보(예: ICCID (integrated circuit card identifier)) 또는 가입자 정보(예: IMSI (international mobile subscriber identity))를 포함할 수 있다.
메모리 1030(예: 메모리 930)는, 예를 들면, 내장 메모리 1032 또는 외장 메모리 1034를 포함할 수 있다. 내장 메모리 1032는, 예를 들면, 휘발성 메모리(예: DRAM(dynamic RAM), SRAM(static RAM), 또는 SDRAM(synchronous dynamic RAM) 등), 비-휘발성(non-volatile) 메모리 (예: 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) 또는 노아플래시(NOR flash) 등), 하드 드라이브, 또는 SSD(solid state drive) 중 적어도 하나를 포함할 수 있다.
외장 메모리 1034는 플래시 드라이브(flash drive), 예를 들면, CF(compact flash), SD(secure digital), Micro-SD, Mini-SD, xD(extreme digital), MMC(MultiMediaCard), 또는 메모리 스틱(memory stick) 등을 더 포함할 수 있다. 외장 메모리 1034는 다양한 인터페이스를 통하여 전자 장치 1001과 기능적으로 및/또는 물리적으로 연결될 수 있다.
센서 모듈 1040은, 예를 들면, 물리량을 계측하거나 전자 장치 1001의 작동 상태를 감지하여, 계측 또는 감지된 정보를 전기 신호로 변환할 수 있다. 센서 모듈 1040은, 예를 들면, 제스처 센서 1040A, 자이로 센서 1040B, 기압 센서 1040C, 마그네틱 센서 1040D, 가속도 센서 1040E, 그립 센서 1040F, 근접 센서 1040G, 컬러 센서 1040H(예: RGB 센서), 생체 센서 1040I, 온/습도 센서 1040J, 조도 센서 1040K, 또는 UV(ultra violet) 센서 1040M 중의 적어도 하나를 포함할 수 있다. 추가적으로 또는 대체적으로, 센서 모듈 1040은, 예를 들면, 후각 센서(E-nose sensor), EMG(electromyography) 센서, EEG(electroencephalogram) 센서, ECG(electrocardiogram) 센서, IR(infrared) 센서, 홍채 센서 및/또는 지문 센서를 포함할 수 있다. 센서 모듈 1040은 그 안에 속한 적어도 하나 이상의 센서들을 제어하기 위한 제어 회로를 더 포함할 수 있다. 어떤 실시 예에서는, 전자 장치 1001은 프로세서 1010의 일부로서 또는 별도로, 센서 모듈 1040을 제어하도록 구성된 프로세서를 더 포함하여, 프로세서 1010이 슬립(sleep) 상태에 있는 동안, 센서 모듈 1040을 제어할 수 있다.
입력 장치 1050은, 예를 들면, 터치 패널(touch panel) 1052, (디지털) 펜 센서(pen sensor) 1054, 키(key) 1056, 또는 초음파(ultrasonic) 입력 장치 1058을 포함할 수 있다. 터치 패널 1052는, 예를 들면, 정전식, 감압식, 적외선 방식, 또는 초음파 방식 중 적어도 하나의 방식을 사용할 수 있다. 또한, 터치 패널 1052는 제어 회로를 더 포함할 수도 있다. 터치 패널 1052는 택타일 레이어(tactile layer)를 더 포함하여, 사용자에게 촉각 반응을 제공할 수 있다.
(디지털) 펜 센서 1054는, 예를 들면, 터치 패널의 일부이거나, 별도의 인식용 시트(sheet)를 포함할 수 있다. 키 1056은, 예를 들면, 물리적인 버튼, 광학식 키, 또는 키패드를 포함할 수 있다. 초음파 입력 장치 1058은 마이크(예: 마이크 1088)를 통해, 입력 도구에서 발생된 초음파를 감지하여, 상기 감지된 초음파에 대응하는 데이터를 확인할 수 있다.
디스플레이 1060(예: 디스플레이 960)은 패널 1062, 홀로그램 장치 1064, 또는 프로젝터 1066을 포함할 수 있다. 패널 1062는, 도 9의 디스플레이 960과 동일 또는 유사한 구성을 포함할 수 있다. 패널 1062는, 예를 들면, 유연하게(flexible), 투명하게(transparent), 또는 착용할 수 있게(wearable) 구현될 수 있다. 패널 1062는 터치 패널 1052와 하나의 모듈로 구성될 수도 있다. 홀로그램 장치 1064는 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 프로젝터 1066은 스크린에 빛을 투사하여 영상을 표시할 수 있다. 스크린은, 예를 들면, 전자 장치 1001의 내부 또는 외부에 위치할 수 있다. 한 실시 예에 따르면, 디스플레이 1060은 상기 패널 1062, 상기 홀로그램 장치 1064, 또는 프로젝터 1066를 제어하기 위한 제어 회로를 더 포함할 수 있다.
인터페이스 1070은, 예를 들면, HDMI 1072, USB 1074, 광 인터페이스(optical interface) 1076, 또는 D-sub(D-subminiature) 1078을 포함할 수 있다. 인터페이스 1070은, 예를 들면, 도 9에 도시된 통신 인터페이스 970에 포함될 수 있다. 추가적으로 또는 대체적으로, 인터페이스 1070은, 예를 들면, MHL(mobile high-definition link) 인터페이스, SD 카드/MMC 인터페이스, 또는 IrDA(infrared data association) 규격 인터페이스를 포함할 수 있다.
오디오 모듈 1080은, 예를 들면, 소리(sound)와 전기 신호를 쌍방향으로 변환시킬 수 있다. 오디오 모듈 1080의 적어도 일부 구성요소는, 예를 들면, 도 9에 도시된 입출력 인터페이스 950에 포함될 수 있다. 오디오 모듈 1080은, 예를 들면, 스피커 1082, 리시버 1084, 이어폰 1086, 또는 마이크 1088 등을 통해 입력 또는 출력되는 소리 정보를 처리할 수 있다.
카메라 모듈 1091은, 예를 들면, 정지 영상 및 동영상을 촬영할 수 있는 장치로서, 한 실시 예에 따르면, 하나 이상의 이미지 센서(예: 전면 센서 또는 후면 센서), 렌즈, ISP(image signal processor), 또는 플래시(flash)(예: LED 또는 제논 램프(xenon lamp))를 포함할 수 있다.
전력 관리 모듈 1095는, 예를 들면, 전자 장치 1001의 전력을 관리할 수 있다. 한 실시 예에 따르면, 전력 관리 모듈 1095는 PMIC(power management integrated circuit), 충전 IC(charger integrated circuit), 또는 배터리 또는 연료 게이지(battery or fuel gauge)를 포함할 수 있다. PMIC는, 유선 및/또는 무선 충전 방식을 가질 수 있다. 무선 충전 방식은, 예를 들면, 자기공명 방식, 자기유도 방식 또는 전자기파 방식 등을 포함하며, 무선 충전을 위한 부가적인 회로, 예를 들면, 코일 루프, 공진 회로, 또는 정류기 등을 더 포함할 수 있다. 배터리 게이지는, 예를 들면, 배터리 1096의 잔량, 충전 중 전압, 전류, 또는 온도를 측정할 수 있다. 배터리 1096은, 예를 들면, 충전식 전지(rechargeable battery) 및/또는 태양 전지(solar battery)를 포함할 수 있다.
인디케이터 1097은 전자 장치 1001 혹은 그 일부(예: 프로세서 1010)의 특정 상태, 예를 들면, 부팅 상태, 메시지 상태 또는 충전 상태 등을 표시할 수 있다. 모터 1098은 전기적 신호를 기계적 진동으로 변환할 수 있고, 진동(vibration), 또는 햅틱(haptic) 효과 등을 발생시킬 수 있다. 도시되지는 않았으나, 전자 장치 1001은 모바일 TV 지원을 위한 처리 장치(예: GPU)를 포함할 수 있다. 모바일 TV 지원을 위한 처리 장치는, 예를 들면, DMB(digital multimedia broadcasting), DVB(digital video broadcasting), 또는 미디어플로(MediaFloTM) 등의 규격에 따른 미디어 데이터를 처리할 수 있다.
본 문서에서 기술된 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성 요소의 명칭은 전자 장치의 종류에 따라서 달라질 수 있다. 다양한 실시 예에서, 전자 장치는 본 문서에서 기술된 구성요소 중 적어도 하나를 포함하여 구성될 수 있으며, 일부 구성요소가 생략되거나 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 또한, 다양한 실시 예에 따른 전자 장치의 구성 요소들 중 일부가 결합되어 하나의 개체(entity)로 구성됨으로써, 결합되기 이전의 해당 구성 요소들의 기능을 동일하게 수행할 수 있다.
도 11은 다양한 실시 예에 따른 프로그램 모듈 1110의 블록도 1100을 나타낸다
도 11을 참조하면, 한 실시 예에 따르면, 프로그램 모듈 1110(예: 프로그램 940)은 전자 장치(예: 전자 장치 901)에 관련된 자원을 제어하는 운영 체제(operating system, OS) 및/또는 운영 체제 상에서 구동되는 다양한 어플리케이션(예: 어플리케이션 프로그램 947)을 포함할 수 있다. 운영 체제는, 예를 들면, 안드로이드(android), iOS, 윈도우즈(windows), 심비안(symbian), 타이젠(tizen), 또는 바다(bada) 등이 될 수 있다.
프로그램 모듈 1110은 커널 1120, 미들웨어 1130, API 1160, 및/또는 어플리케이션 1170을 포함할 수 있다. 프로그램 모듈 1110의 적어도 일부는 전자 장치 상에 프리로드(preload) 되거나, 외부 전자 장치(예: 전자 장치 902, 904, 서버 906 등)로부터 다운로드 가능하다.
커널 1120(예: 커널 941)은, 예를 들면, 시스템 리소스 매니저 1121 또는 디바이스 드라이버 1123를 포함할 수 있다. 시스템 리소스 매니저 1121은 시스템 리소스의 제어, 할당, 또는 회수 등을 수행할 수 있다. 한 실시 예에 따르면, 시스템 리소스 매니저 1121은 프로세스 관리부, 메모리 관리부, 또는 파일 시스템 관리부 등을 포함할 수 있다. 디바이스 드라이버 1123은, 예를 들면, 디스플레이 드라이버, 카메라 드라이버, 블루투스 드라이버, 공유 메모리 드라이버, USB 드라이버, 키패드 드라이버, Wi-Fi 드라이버, 오디오 드라이버, 또는 IPC(inter-process communication) 드라이버를 포함할 수 있다.
미들웨어 1130은, 예를 들면, 어플리케이션 1170이 공통적으로 필요로 하는 기능을 제공하거나, 어플리케이션 1170이 전자 장치 내부의 제한된 시스템 자원을 효율적으로 사용할 수 있도록 API 1160을 통해 다양한 기능들을 어플리케이션 1170으로 제공할 수 있다. 한 실시 예에 따르면, 미들웨어 1130(예: 미들웨어 943)은 런타임 라이브러리 1135, 어플리케이션 매니저(application manager) 1141, 윈도우 매니저(window manager) 1142, 멀티미디어 매니저(multimedia manager) 1143, 리소스 매니저(resource manager) 1144, 파워 매니저(power manager) 1145, 데이터베이스 매니저(database manager) 1146, 패키지 매니저(package manager) 1147, 연결 매니저(connectivity manager) 1148, 통지 매니저(notification manager) 1149, 위치 매니저(location manager) 1150, 그래픽 매니저(graphic manager) 1151, 또는 보안 매니저(security manager) 1152 중 적어도 하나를 포함할 수 있다.
런타임 라이브러리 1135는, 예를 들면, 어플리케이션 1170이 실행되는 동안에 프로그래밍 언어를 통해 새로운 기능을 추가하기 위해 컴파일러가 사용하는 라이브러리 모듈을 포함할 수 있다. 런타임 라이브러리 1135는 입출력 관리, 메모리 관리, 또는 산술 함수에 대한 기능 등을 수행할 수 있다.
어플리케이션 매니저 1141은, 예를 들면, 어플리케이션 1170 중 적어도 하나의 어플리케이션의 생명 주기(life cycle)를 관리할 수 있다. 윈도우 매니저 1142는 화면에서 사용하는 GUI 자원을 관리할 수 있다. 멀티미디어 매니저 1143은 다양한 미디어 파일들의 재생에 필요한 포맷을 파악하고, 해당 포맷에 맞는 코덱(codec)을 이용하여 미디어 파일의 인코딩(encoding) 또는 디코딩(decoding)을 수행할 수 있다. 리소스 매니저 1144는 어플리케이션 1170 중 적어도 어느 하나의 어플리케이션의 소스 코드, 메모리 또는 저장 공간 등의 자원을 관리할 수 있다.
파워 매니저 1145는, 예를 들면, 바이오스(BIOS: basic input/output system) 등과 함께 동작하여 배터리 또는 전원을 관리하고, 전자 장치의 동작에 필요한 전력 정보 등을 제공할 수 있다. 데이터베이스 매니저 1146은 어플리케이션 1170 중 적어도 하나의 어플리케이션에서 사용할 데이터베이스를 생성, 검색, 또는 변경할 수 있다. 패키지 매니저 1147은 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 업데이트를 관리할 수 있다.
연결 매니저 1148은, 예를 들면, Wi-Fi 또는 블루투스 등의 무선 연결을 관리할 수 있다. 통지 매니저 1149는 도착 메시지, 약속, 근접성 알림 등의 사건(event)을 사용자에게 방해되지 않는 방식으로 표시 또는 통지할 수 있다. 위치 매니저 1150은 전자 장치의 위치 정보를 관리할 수 있다. 그래픽 매니저 1151은 사용자에게 제공될 그래픽 효과 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다. 보안 매니저 1152는 시스템 보안 또는 사용자 인증 등에 필요한 제반 보안 기능을 제공할 수 있다. 한 실시 예에 따르면, 전자 장치(예: 전자 장치 901)가 전화 기능을 포함한 경우, 미들웨어 1130은 전자 장치의 음성 또는 영상 통화 기능을 관리하기 위한 통화 매니저(telephony manager)를 더 포함할 수 있다.
미들웨어 1130은 전술한 구성요소들의 다양한 기능의 조합을 형성하는 미들웨어 모듈을 포함할 수 있다. 미들웨어 1130은 차별화된 기능을 제공하기 위해 운영 체제의 종류 별로 특화된 모듈을 제공할 수 있다. 또한, 미들웨어 1130은 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다.
API 1160(예: API 945)은, 예를 들면, API 프로그래밍 함수들의 집합으로, 운영 체제에 따라 다른 구성으로 제공될 수 있다. 예를 들면, 안드로이드 또는 iOS의 경우, 플랫폼 별로 하나의 API 셋을 제공할 수 있으며, 타이젠(tizen)의 경우, 플랫폼 별로 두 개 이상의 API 셋을 제공할 수 있다.
어플리케이션 1170(예: 어플리케이션 프로그램 947)은, 예를 들면, 홈 1171, 다이얼러 1172, SMS/MMS 1173, IM(instant message) 1174, 브라우저 1175, 카메라 1176, 알람 1177, 컨택트 1178, 음성 다이얼 1179, 이메일 1180, 달력 1181, 미디어 플레이어 1182, 앨범 1183, 또는 시계 1184, 건강 관리(health care)(예: 운동량 또는 혈당 등을 측정), 또는 환경 정보 제공(예: 기압, 습도, 또는 온도 정보 등을 제공) 등의 기능을 제공할 수 있는 하나 이상의 어플리케이션을 포함할 수 있다.
한 실시 예에 따르면, 어플리케이션 1170은 전자 장치(예: 전자 장치 901)와 외부 전자 장치(예: 전자 장치 902, 904) 사이의 정보 교환을 지원하는 어플리케이션(이하, 설명의 편의상, "정보 교환 어플리케이션")을 포함할 수 있다. 정보 교환 어플리케이션은, 예를 들면, 외부 전자 장치에 특정 정보를 전달하기 위한 알림 전달(notification relay) 어플리케이션, 또는 외부 전자 장치를 관리하기 위한 장치 관리(device management) 어플리케이션을 포함할 수 있다.
예를 들면, 알림 전달 어플리케이션은 전자 장치의 다른 어플리케이션(예: SMS/MMS 어플리케이션, 이메일 어플리케이션, 건강 관리 어플리케이션, 또는 환경 정보 어플리케이션 등)에서 발생된 알림 정보를 외부 전자 장치(예: 전자 장치 902, 904)로 전달하는 기능을 포함할 수 있다. 또한, 상기 알림 전달 어플리케이션은, 예를 들면, 외부 전자 장치로부터 알림 정보를 수신하여 사용자에게 제공할 수 있다.
장치 관리 어플리케이션은, 예를 들면, 전자 장치와 통신하는 외부 전자 장치(예: 전자 장치 902, 904)의 적어도 하나의 기능(예: 외부 전자 장치 자체(또는 일부 구성 부품)의 턴-온/턴-오프 또는 디스플레이의 밝기(또는 해상도) 조절), 외부 전자 장치에서 동작하는 어플리케이션 또는 외부 전자 장치에서 제공되는 서비스(예: 통화 서비스 또는 메시지 서비스)를 관리(예: 설치, 삭제, 또는 업데이트)할 수 있다.
한 실시 예에 따르면, 어플리케이션 1170은 외부 전자 장치(예: 전자 장치 902, 904)의 속성에 따라 지정된 어플리케이션(예: 모바일 의료 기기의 건강 관리 어플리케이션)을 포함할 수 있다. 한 실시 예에 따르면, 어플리케이션 1170은 외부 전자 장치(예: 서버 906 또는 전자 장치 902, 904)로부터 수신된 어플리케이션을 포함할 수 있다. 한 실시 예에 따르면, 어플리케이션 1170은 프리로드 어플리케이션(preloaded application) 또는 서버로부터 다운로드 가능한 제3자 어플리케이션(third party application)을 포함할 수 있다. 도시된 실시 예에 따른 프로그램 모듈 1110의 구성요소들의 명칭은 운영 체제의 종류에 따라서 달라질 수 있다.
다양한 실시 예에 따르면, 프로그램 모듈 1110의 적어도 일부는 소프트웨어, 펌웨어, 하드웨어, 또는 이들 중 적어도 둘 이상의 조합으로 구현될 수 있다. 프로그램 모듈 1110의 적어도 일부는, 예를 들면, 프로세서(예: 프로세서 1010)에 의해 구현(implement)(예: 실행)될 수 있다. 프로그램 모듈 1110의 적어도 일부는 하나 이상의 기능을 수행하기 위한, 예를 들면, 모듈, 프로그램, 루틴, 명령어 세트(sets of instructions) 또는 프로세스 등을 포함할 수 있다.
상기 전자 장치의 전술한 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성 요소의 명칭은 전자 장치의 종류에 따라서 달라질 수 있다. 다양한 실시 예에서, 전자 장치는 전술한 구성요소 중 적어도 하나를 포함하여 구성될 수 있으며, 일부 구성요소가 생략되거나 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 또한, 다양한 실시 예에 따른 전자 장치의 구성 요소들 중 일부가 결합되어 하나의 개체(entity)로 구성됨으로써, 결합되기 이전의 해당 구성 요소들의 기능을 동일하게 수행할 수 있다.
본 문서에서 사용된 용어 "모듈"은, 예를 들면, 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합을 포함하는 단위(unit)를 의미할 수 있다. "모듈"은, 예를 들면, 유닛(unit), 로직(logic), 논리 블록(logical block), 부품(component), 또는 회로(circuit) 등의 용어와 바꾸어 사용(interchangeably use)될 수 있다. "모듈"은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. "모듈"은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다. "모듈"은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들면, "모듈"은, 알려졌거나 앞으로 개발될, 어떤 동작들을 수행하는 ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays) 또는 프로그램 가능 논리 장치(programmable-logic device) 중 적어도 하나를 포함할 수 있다.
다양한 실시 예에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는, 예컨대, 프로그램 모듈의 형태로 컴퓨터로 읽을 수 있는 저장매체(computer-readable storage media)에 저장된 명령어로 구현될 수 있다. 상기 명령어는, 프로세서(예: 프로세서 210)에 의해 실행될 경우, 상기 하나 이상의 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 상기 메모리 230이 될 수 있다.
예를 들어, 컴퓨터 판독 가능한 명령어를 포함하는 기록 매체는 내장형 보안 요소를 포함하는 전자 장치의 프로세서에 의해 수행될 때, 상기 프로세서가 프로비저닝 이벤트를 수신하는 동작, 상기 프로세서가 상기 프로비저닝 이벤트에 따라 키 교환 요청을 상기 내장형 보안 요소에 송신하는 동작, 상기 내장형 보안 요소가 지정된 조건을 확인하여 제1 키를 생성하고 저장하는 동작, 및 상기 프로세서가 상기 제1 키가 생성된 경우, 상기 제1 키에 대응하는 제2 키를 생성하고 저장하는 동작을 수행하도록 하는 명령어를 포함할 수 있다. 이 외에도, 상기 기록 매체는 전술한 프로세서 또는 전자 장치에 의해 수행될 수 있는 다양한 방법을 구현하는 명령어를 더 포함하고 있을 수 있다.
상기 컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(magnetic media)(예: 자기테이프), 광기록 매체(optical media)(예: CD-ROM, DVD, 자기-광 매체(magneto-optical media)(예: 플롭티컬 디스크(floptical disk)), 하드웨어 장치(예: ROM, RAM, 또는 플래시 메모리 등) 등을 포함할 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시 예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
다양한 실시 예에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 다양한 실시 예에 따른 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
그리고 본 문서에 개시된 실시 예는 개시된, 기술 내용의 설명 및 이해를 위해 제시된 것이며, 본 발명의 범위를 한정하는 것은 아니다. 따라서, 본 발명의 범위는, 본 발명의 기술적 사상에 근거한 모든 변경 또는 다양한 다른 실시 예를 포함하는 것으로 해석되어야 한다.

Claims (20)

  1. 일반 모듈과 보안 모듈로 구분되어 동작하는 프로세서;
    메모리;
    암호화 키를 저장할 수 있고 상기 메모리와 구별되는 내장형 보안요소(embedded Secure Element; eSE); 및
    상기 보안 모듈과 상기 SE를 직접 연결하는 채널;을 포함하는 전자 장치.
  2. 제1항에 있어서, 상기 보안 모듈은
    상기 암호화 키를 관리하는 보안 프로토콜 모듈; 및
    APDU(application protocol data unit) 통신 엔진을 포함하는 전자 장치.
  3. 제2항에 있어서, 상기 보안 프로토콜 모듈은
    상기 암호화 키에 기초하여 데이터를 암호화하고, 상기 암호화 키는 상기 내장형 보안 요소에 저장되는 키에 대응되도록 설정되는, 전자 장치.
  4. 제1항에 있어서,
    NFC(Near Field Communication) 통신 모듈을 더 포함하고,
    상기 NFC 통신 모듈은 상기 일반 모듈 및 상기 내장형 보안 요소와 연결 채널을 통해 연결되고, 상기 연결 채널은 상기 보안 채널과 구별되도록 설정되는, 전자 장치.
  5. 제1항에 있어서, 상기 보안 모듈은
    프로비저닝(provisioning) 이벤트가 발생하면, 상기 내장형 보안 요소로 키 교환 요청(key exchange request) 신호를 보내는, 전자 장치.
  6. 제5항에 있어서, 상기 내장형 보안 요소는
    상기 내장형 보안 요소에 저장된 키가 있거나, 상기 내장형 보안 요소가 차단(blocked) 상태 또는 중단(terminated) 상태인 경우 상기 보안 모듈로 대응하는 에러 코드를 전송하도록 설정되는, 전자 장치.
  7. 제5항에 있어서,
    상기 내장형 보안 요소는 상기 내장형 보안 요소에 저장된 키가 없는 경우, 제1 키를 생성 및 저장하고 상기 보안 모듈로 성공 코드를 전송하도록 설정되는, 전자 장치.
  8. 제7항에 있어서, 상기 보안 모듈은
    상기 제1 키에 대한 정보에 기초하여 제2 키를 생성 및 저장하고, 상기 제2 키에 대한 확인 요청을 상기 내장형 보안 요소로 전송하도록 설정되는, 전자 장치.
  9. 제8항에 있어서, 상기 내장형 보안 요소는
    상기 제2 키에 대한 정보를 상기 제1 키에 대한 정보와 비교하여, 상기 제2 키와 상기 제1 키가 서로 대응되는지 여부를 판단하고, 그 판단 결과를 상기 보안 모듈로 전송하도록 설정되는, 전자 장치.
  10. 제5항에 있어서, 상기 프로비저닝 이벤트는
    외부 장치로부터 프로비저닝 요청을 수신한 이벤트이고
    상기 일반 모듈은 상기 보안 모듈로 상기 프로비저닝 이벤트의 발생을 전달하도록 설정되는, 전자 장치.
  11. 제5항에 있어서, 상기 프로비저닝 이벤트는
    상기 전자 장치의 내부에서 발생하는 부팅(booting), 플래그 체크(flag check), 또는 내장형 보안 요소의 사용 요청 중 적어도 하나인 전자 장치.
  12. 제1항에 있어서, 상기 보안 모듈은
    외부 장치로부터 상기 내장형 보안 요소의 리셋 요청을 수신한 경우, 상기 내장형 보안 요소로 랜덤 넘버 생성 요청 신호를 보내는, 전자 장치.
  13. 제12항에 있어서, 상기 내장형 보안 요소는
    상기 외부 장치와 미리 공유된 공개 키를 이용하여 생성한 랜덤 넘버를 암호화하여 상기 보안 모듈에 송신하는, 전자 장치.
  14. 제13항에 있어서, 상기 보안 모듈은
    상기 일반 모듈을 통해 상기 암호화된 랜덤 넘버를 상기 외부 장치에 송신하고,
    복호화된 랜덤 넘버를 수신하면 상기 내장형 보안 요소에 송신하는, 전자 장치.
  15. 제14항에 있어서, 상기 내장형 보안 요소는
    수신한 복호화된 랜덤 넘버를 저장된 랜덤 넘버가 동일한 경우, 키를 삭제하고 리셋 상태로 진입하는, 전자 장치.
  16. 제14항에 있어서, 상기 내장형 보안 요소는
    수신한 복호화된 랜덤 넘버를 저장된 랜덤 넘버가 동일하지 않은 경우, 리셋 절차의 실패 횟수가 지정된 값 이상이면, 차단 상태로 진입하는, 전자 장치.
  17. 제1항에 있어서, 상기 보안 모듈은
    상기 내장형 보안 요소와 키를 공유하는 경우, 상기 키를 기반으로 세션을 시작하여 지정된 정보를 상기 내장형 보안 요소에 저장하도록 설정되는, 전자 장치.
  18. 프로세서 및 내장형 보안 요소(embedded Secure Element)을 포함하는 전자 장치에서 수행되는 통신 방법에 있어서,
    상기 프로세서가 프로비저닝 이벤트를 수신하는 동작;
    상기 프로세서가 상기 프로비저닝 이벤트에 따라 키 교환 요청을 상기 내장형 보안 요소에 송신하는 동작;
    상기 내장형 보안 요소가 지정된 조건을 확인하여 제1 키를 생성하고 저장하는 동작;
    상기 프로세서가 상기 제1 키가 생성된 경우, 상기 제1 키에 대응하는 제2 키를 생성하고 저장하는 동작;을 포함하는 통신 방법.
  19. 제18항에 있어서,
    상기 프로세서가 상기 제2 키에 대한 확인 요청을 상기 내장형 보안 요소로 전송하는 동작;
    상기 내장형 보안 요소가 상기 제2 키에 대한 정보를 상기 제1 키에 대한 정보와 비교하여, 그 판단 결과를 상기 보안 모듈로 전송하는 동작;을 더 포함하는 통신 방법.
  20. 컴퓨터 판독 가능한 명령어를 포함하는 기록 매체에 있어서, 상기 명령어는 내장형 보안 요소를 포함하는 전자 장치의 프로세서에 의해 수행될 때,
    상기 프로세서가 프로비저닝 이벤트를 수신하는 동작;
    상기 프로세서가 상기 프로비저닝 이벤트에 따라 키 교환 요청을 상기 내장형 보안 요소에 송신하는 동작;
    상기 내장형 보안 요소가 지정된 조건을 확인하여 제1 키를 생성하고 저장하는 동작; 및
    상기 프로세서가 상기 제1 키가 생성된 경우, 상기 제1 키에 대응하는 제2 키를 생성하고 저장하는 동작;을 수행하도록 하는, 기록 매체.



KR1020140159241A 2014-11-14 2014-11-14 단말 내장형 보안 요소와의 안전한 통신 KR20160058375A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140159241A KR20160058375A (ko) 2014-11-14 2014-11-14 단말 내장형 보안 요소와의 안전한 통신

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140159241A KR20160058375A (ko) 2014-11-14 2014-11-14 단말 내장형 보안 요소와의 안전한 통신

Publications (1)

Publication Number Publication Date
KR20160058375A true KR20160058375A (ko) 2016-05-25

Family

ID=56114306

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140159241A KR20160058375A (ko) 2014-11-14 2014-11-14 단말 내장형 보안 요소와의 안전한 통신

Country Status (1)

Country Link
KR (1) KR20160058375A (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018097662A1 (en) * 2016-11-28 2018-05-31 Samsung Electronics Co., Ltd. Method and apparatus for managing program of electronic device
CN113779587A (zh) * 2020-06-10 2021-12-10 质子世界国际公司 电子电路的安全启动
US11418494B2 (en) 2017-09-20 2022-08-16 Samsung Electronics Co., Ltd. Electronic device for supporting backup and reinstallation of mobile card
US11533172B2 (en) 2020-01-08 2022-12-20 Samsung Electronics Co., Ltd. Apparatus and method for securely managing keys
CN116305093A (zh) * 2021-11-19 2023-06-23 荣耀终端有限公司 小应用程序的操作方法和电子设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018097662A1 (en) * 2016-11-28 2018-05-31 Samsung Electronics Co., Ltd. Method and apparatus for managing program of electronic device
US10735427B2 (en) 2016-11-28 2020-08-04 Samsung Electronics Co., Ltd. Method and apparatus for managing program of electronic device
US11418494B2 (en) 2017-09-20 2022-08-16 Samsung Electronics Co., Ltd. Electronic device for supporting backup and reinstallation of mobile card
US11533172B2 (en) 2020-01-08 2022-12-20 Samsung Electronics Co., Ltd. Apparatus and method for securely managing keys
CN113779587A (zh) * 2020-06-10 2021-12-10 质子世界国际公司 电子电路的安全启动
CN116305093A (zh) * 2021-11-19 2023-06-23 荣耀终端有限公司 小应用程序的操作方法和电子设备

Similar Documents

Publication Publication Date Title
KR102604046B1 (ko) 전자 기기의 프로그램 관리 방법 및 장치
US10728222B2 (en) System and method for providing vehicle information based on personal authentication and vehicle authentication
US10044510B2 (en) Storing and using data with secure circuitry
US10979901B2 (en) Electronic device and method for processing data in electronic device
US10469462B2 (en) Apparatus and method for managing virtual subscriber indentity module
KR102294118B1 (ko) 보안 연결 장치 및 방법
CN108702295B (zh) 基于生物数据进行认证的电子设备及其操作方法
KR102347827B1 (ko) 보안 메시지 전송 장치 및 그 처리 방법
KR20160101635A (ko) 보안 회로를 통한 데이터의 저장 및 이용
US20170201378A1 (en) Electronic device and method for authenticating identification information thereof
KR20170002969A (ko) 인증을 수행하기 위한 방법 및 전자 장치
US11157603B2 (en) Electronic device and method for performing authentication
KR20160058375A (ko) 단말 내장형 보안 요소와의 안전한 통신
KR20190019470A (ko) 전자 문서에 서명을 포함시키기 위한 전자 장치 및 그 전자 장치의 제어 방법
KR20160033510A (ko) 권한 설정 토큰을 이용하는 전자 장치
KR20170017590A (ko) 전자 장치들 사이의 연결을 수행하기 위한 방법 및 전자 장치
KR20170115235A (ko) 생체 정보 인증 방법
US20170078269A1 (en) Method for managing application and electronic device supporting the same
KR20170059082A (ko) 파일 조작 처리 방법 및 이를 지원하는 전자 장치
KR102349714B1 (ko) 전자 기기의 프로그램 관리 방법 및 장치
KR20160063793A (ko) 전자 장치 및 전자 장치에서의 정보 송신 및 수신 방법
US20150220720A1 (en) Electronic device and method for controlling access to given area thereof
KR102222696B1 (ko) 메시지 전송 방법 및 장치
KR20170087831A (ko) Sim 카드 및 sd 카드 제어 방법 및 이를 지원하는 전자 장치
KR102348401B1 (ko) Did 서명 및 검증을 이용한 임계 서명 시스템과 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid