KR20160101635A - 보안 회로를 통한 데이터의 저장 및 이용 - Google Patents
보안 회로를 통한 데이터의 저장 및 이용 Download PDFInfo
- Publication number
- KR20160101635A KR20160101635A KR1020150114957A KR20150114957A KR20160101635A KR 20160101635 A KR20160101635 A KR 20160101635A KR 1020150114957 A KR1020150114957 A KR 1020150114957A KR 20150114957 A KR20150114957 A KR 20150114957A KR 20160101635 A KR20160101635 A KR 20160101635A
- Authority
- KR
- South Korea
- Prior art keywords
- security
- key
- processor
- ese
- environment
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/32—User authentication using biometric data, e.g. fingerprints, iris scans or voiceprints
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Automation & Control Theory (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
본 발명의 다양한 실시 예에 따른 전자 장치는 프로세서, 상기 프로세서와 기능적으로 연결된 메모리 및 상기 프로세서 및 상기 메모리와 구분되고, 상기 프로세서와 물리적 채널을 통하여 연결된 보안 회로(secured circuitry)를 포함하고, 상기 프로세서는 데이터의 적어도 일부를 상기 물리적 채널을 통하여 상기 보안 회로에 전송하고, 상기 보안 회로는 상기 적어도 일부를 저장할 수 있다. 이 외에도 명세서를 통해 파악되는 다양한 실시 예가 가능하다.
Description
본 문서의 다양한 실시 예는 전자 장치의 보안 회로를 이용한 데이터의 저장 및 저장된 데이터의 활용에 관한 것이다.
스마트 폰이나 태블릿과 같은 전자 장치는 보안 회로(예: 내장형 보안 요소(embedded secure element; eSE))를 장착할 수 있다. 상기 보안 회로는 개인 정보 등의 보안 필요성이 높은 정보를 저장하기 위한 칩으로, 무선 단말을 이용한 결제 등에 이용될 수 있다.
전자 장치 내에서 데이터를 보호하기 위한 보안 회로는 탈부착 가능한 형태 또는 내장형으로 구비될 수 있다. 외부의 악의적(malicious) 공격을 방지하기 위하여 보안 요소는 신뢰할 수 있는 외부 서버의 허용된(authorized) 제어 명령에 따라 관리될 수 있다.
전자 장치에 내장된 보안 회로가 외부 서버의 제어 명령에 의해서만 관리되는 경우, 전자 장치 내 다른 회로와의 효과적인 상호 동작에 제약을 받을 수 있다.
본 문서의 다양한 실시 예들은 전자 장치 내부의 프로세서와 보안 회로 사이의 물리적 채널을 통해 데이터를 저장하고, 저장된 데이터를 활용하는 방법 및 이를 지원하는 전자 장치를 제공할 수 있다.
본 발명의 다양한 실시 예에 따른 전자 장치는 프로세서, 상기 프로세서와 기능적으로 연결된 메모리 및 상기 프로세서 및 상기 메모리와 구분되고, 상기 프로세서와 물리적 채널을 통하여 연결된 보안 회로(secured circuitry)를 포함하고, 상기 프로세서는 데이터의 적어도 일부를 상기 물리적 채널을 통하여 상기 보안 회로에 전송하고, 상기 보안 회로는 상기 적어도 일부를 저장할 수 있다.
본 발명의 다양한 실시 예에 따른 전자 장치는 프로세서의 보안 환경과 보안 회로(예: eSE) 사이에 공유되는 키를 기반으로 상대적으로 높은 보안 수준을 요구하는 데이터를 송수신할 수 있다.
본 발명의 다양한 실시 예에 따른 전자 장치는 접근 시 인증이 요구되는 데이터(예: 지문 정보)를 보안 키를 통해 암호화하고, 보안 키를 보안 회로(예: eSE)에 별도로 저장하여 중요 정보에 대한 보안성을 강화할 수 있다.
도 1a 및 도 1b는 다양한 실시 예에 따른 전자 장치의 구성도 이다.
도 2a는 다양한 실시 예에 따른 데이터를 eSE에 저장하는 동작을 나타내는 흐름도이다.
도 2b는 다양한 실시 예에 따른 데이터를 보안 환경 또는 eSE에 저장하는 동작을 나타내는 흐름도이다.
도 3은 다양한 실시 예에 따른 보안 환경을 통해 지문 센서가 연결된 전자 장치의 구성도이다.
도 4는 다양한 실시 예에 따른 지문 등록 과정을 나타내는 신호 흐름도이다.
도 5a는 다양한 실시 예에 따른 저장된 생체 정보를 이용한 인증 과정을 나타내는 신호 흐름도이다.
도 5b는 다양한 실시 예에 따른 저장된 지문 정보를 이용한 인증 과정을 나타내는 신호 흐름도이다.
도 6은 다양한 실시 예에 따른 일반 환경을 통해 지문 센서가 연결된 전자 장치의 구성도이다.
도 7은 다양한 실시 예에 따른 일반 환경을 통한 지문 등록 과정을 나타내는 신호 흐름도이다.
도 8은 다양한 실시 예에 따른 eSE를 사용 할 수 없는 경우 지문 등록 과정을 나타내는 신호 흐름도이다.
도 9는 다양한 실시 예에 따른 eSE의 사용 상태 변화에 따른 지문 정보 저장을 나타내는 신호 흐름도이다.
도 10은 다양한 실시 예에 따른 지문 센서와 eSE사이에 센싱 채널이 형성된 전자 장치의 구성도이다.
도 11은 다양한 실시 예에 따른 eSE와 지문 센서를 직접 연결을 통한 지문 등록 과정을 나타내는 신호 흐름도이다.
도 12는 다양한 실시 예에 따른 전자 장치 및 결제 서버를 통한 결제 방식을 설명하는 블록도이다.
도 13은 다양한 실시 예에 따른 전자 장치의 구성도 이다.
도 14는 다양한 실시 예에 따른 일반 네트워크 경로와 로컬 경로를 포함하는 전자 장치의 구성도 이다.
도 15a는 다양한 실시 예에 따른 eSE의 프로비저닝(provisioning) 방법을 설명하는 신호 흐름도이다.
도 150b는 다양한 실시 예에 따른 프로비저닝 과정 이전에 수행되는 인증 과정을 설명하는 흐름도이다.
도 16은 다양한 실시 예에 따른 eSE의 키 생성 과정에 관한 순서도이다.
도 17는 다양한 실시 예에 따른 eSE의 키 리셋 과정을 설명하는 신호 흐름도이다.
도 18은 다양한 실시 예에 따른 eSE의 키 리셋 과정을 설명하는 순서도이다.
도 19은 다양한 실시 예에 따른 eSE의 상태 변화를 나타내는 구성도이다.
도 20은 다양한 실시 예에 따른 프로비저닝 이후, 물리적 채널을 통한 데이터 전송에 관한 신호 흐름도이다.
도 21은 다양한 실시 예에 따른 네트워크 환경 내의 전자 장치이다.
도 22는 다양한 실시 예에 따른 전자 장치의 블록도이다.
도 23는 다양한 실시 예에 따른 프로그램 모듈의 블록도이다.
도 2a는 다양한 실시 예에 따른 데이터를 eSE에 저장하는 동작을 나타내는 흐름도이다.
도 2b는 다양한 실시 예에 따른 데이터를 보안 환경 또는 eSE에 저장하는 동작을 나타내는 흐름도이다.
도 3은 다양한 실시 예에 따른 보안 환경을 통해 지문 센서가 연결된 전자 장치의 구성도이다.
도 4는 다양한 실시 예에 따른 지문 등록 과정을 나타내는 신호 흐름도이다.
도 5a는 다양한 실시 예에 따른 저장된 생체 정보를 이용한 인증 과정을 나타내는 신호 흐름도이다.
도 5b는 다양한 실시 예에 따른 저장된 지문 정보를 이용한 인증 과정을 나타내는 신호 흐름도이다.
도 6은 다양한 실시 예에 따른 일반 환경을 통해 지문 센서가 연결된 전자 장치의 구성도이다.
도 7은 다양한 실시 예에 따른 일반 환경을 통한 지문 등록 과정을 나타내는 신호 흐름도이다.
도 8은 다양한 실시 예에 따른 eSE를 사용 할 수 없는 경우 지문 등록 과정을 나타내는 신호 흐름도이다.
도 9는 다양한 실시 예에 따른 eSE의 사용 상태 변화에 따른 지문 정보 저장을 나타내는 신호 흐름도이다.
도 10은 다양한 실시 예에 따른 지문 센서와 eSE사이에 센싱 채널이 형성된 전자 장치의 구성도이다.
도 11은 다양한 실시 예에 따른 eSE와 지문 센서를 직접 연결을 통한 지문 등록 과정을 나타내는 신호 흐름도이다.
도 12는 다양한 실시 예에 따른 전자 장치 및 결제 서버를 통한 결제 방식을 설명하는 블록도이다.
도 13은 다양한 실시 예에 따른 전자 장치의 구성도 이다.
도 14는 다양한 실시 예에 따른 일반 네트워크 경로와 로컬 경로를 포함하는 전자 장치의 구성도 이다.
도 15a는 다양한 실시 예에 따른 eSE의 프로비저닝(provisioning) 방법을 설명하는 신호 흐름도이다.
도 150b는 다양한 실시 예에 따른 프로비저닝 과정 이전에 수행되는 인증 과정을 설명하는 흐름도이다.
도 16은 다양한 실시 예에 따른 eSE의 키 생성 과정에 관한 순서도이다.
도 17는 다양한 실시 예에 따른 eSE의 키 리셋 과정을 설명하는 신호 흐름도이다.
도 18은 다양한 실시 예에 따른 eSE의 키 리셋 과정을 설명하는 순서도이다.
도 19은 다양한 실시 예에 따른 eSE의 상태 변화를 나타내는 구성도이다.
도 20은 다양한 실시 예에 따른 프로비저닝 이후, 물리적 채널을 통한 데이터 전송에 관한 신호 흐름도이다.
도 21은 다양한 실시 예에 따른 네트워크 환경 내의 전자 장치이다.
도 22는 다양한 실시 예에 따른 전자 장치의 블록도이다.
도 23는 다양한 실시 예에 따른 프로그램 모듈의 블록도이다.
이하, 본 문서의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 문서의 실시예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 문서에서, "가진다", "가질 수 있다", "포함한다", 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 문서에서, "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)를 의미할 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 다른 실시예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 문서에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 본 문서에 사용된 용어들 중 일반적인 사전에 정의된 용어들은, 관련 기술의 문맥상 가지는 의미와 동일 또는 유사한 의미로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 문서의 실시 예들을 배제하도록 해석될 수 없다.
본 문서의 다양한 실시 예들에 따른 전자 장치는, 예를 들면, 스마트폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 영상 전화기, 전자책 리더기(e-book reader), 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), 워크스테이션(workstation), 서버, PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라(camera), 또는 웨어러블 장치(wearable device) 중 적어도 하나를 포함할 수 있다. 다양한 실시 예에 따르면, 웨어러블 장치는 액세서리형(예: 시계, 반지, 팔찌, 발찌, 목걸이, 안경, 콘택트 렌즈, 또는 머리 착용형 장치(head-mounted-device(HMD)), 직물 또는 의류 일체형(예: 전자 의복), 신체 부착형(예: 스킨 패드(skin pad) 또는 문신), 또는 생체 이식형(예: implantable circuit) 중 적어도 하나를 포함할 수 있다.
어떤 실시 예들에서, 전자 장치는 가전 제품(home appliance)일 수 있다. 가전 제품은, 예를 들면, 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스(set-top box), 홈 오토매이션 컨트롤 패널(home automation control panel), 보안 컨트롤 패널(security control panel), TV 박스(예: 삼성 HomeSyncTM, 애플TVTM, 또는 구글 TVTM), 게임 콘솔(예: XboxTM, PlayStationTM), 전자 사전, 전자 키, 캠코더(camcorder), 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
다른 실시 예에서, 전자 장치는, 각종 의료기기(예: 각종 휴대용 의료측정기기(혈당 측정기, 심박 측정기, 혈압 측정기, 또는 체온 측정기 등), MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 또는 초음파기 등), 네비게이션(navigation) 장치, 위성 항법 시스템(GNSS(global navigation satellite system)), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치, 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛(head unit), 산업용 또는 가정용 로봇, 금융 기관의 ATM(automatic teller's machine), 상점의 POS(point of sales), 또는 사물 인터넷 장치(internet of things)(예: 전구, 각종 센서, 전기 또는 가스 미터기, 스프링클러 장치, 화재경보기, 온도조절기(thermostat), 가로등, 토스터(toaster), 운동기구, 온수탱크, 히터, 보일러 등) 중 적어도 하나를 포함할 수 있다.
어떤 실시 예에 따르면, 전자 장치는 가구(furniture) 또는 건물/구조물의 일부, 전자 보드(electronic board), 전자 사인 수신 장치(electronic signature receiving device), 프로젝터(projector), 또는 각종 계측 기기(예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 다양한 실시 예에서, 전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 어떤 실시 예에 따른 전자 장치는 플렉서블 전자 장치일 수 있다. 또한, 본 문서의 실시 예에 따른 전자 장치는 전술한 기기들에 한정되지 않으며, 기술 발전에 따른 새로운 전자 장치를 포함할 수 있다.
이하, 첨부 도면을 참조하여, 다양한 실시 예에 따른 전자 장치가 설명된다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공지능 전자 장치)를 지칭할 수 있다.
본 문서에 개시된 보안 회로(secure circuitry)는 안전한 데이터 저장 및 보호된 명령 실행 환경을 보장해주는 회로일 수 있다. 상기 보안 회로는 탈착 가능한 스마트 칩, 시큐어 디지털(SD) 카드 내에 존재하거나 또는 전자 장치의 고정 칩 내에 내장 될 수 있다. 다양한 실시 예에서, 상기 보안 회로는 가입자 식별 모듈(SIM) 카드에 탑재되거나, 금융 관련 스마트카드에 탑재된 회로일 수 있다. 상기 보안 회로는 암호화 프로세서(cryptographic processor) 또는 난수 발생기(random number generator) 등의 서브 회로를 포함할 수 있다. 상기 보안 회로는, 예를 들어, JavaCard Open Platform (JCOP) 운영 체제 등의 스마트 카드 운영 체제를 기반으로 동작할 수 있다. 상기 보안 회로는 전자 장치의 고정 칩 내의 내장형 보안 요소(embedded secure element; 이하 'eSE'라 한다)일 수 있다. 본 문서에 개시된 eSE는 보안 회로의 예시이며, 이에 제한되는 것은 아니다.
도 1a는 다양한 실시 예에 따른 전자 장치의 구성도 이다.
도 1a를 참조하면, 전자 장치 101은 프로세서 110, 메모리 115 및 eSE 120을 포함할 수 있다. 프로세서 110은 물리적 채널 125을 통해 eSE 120에 연결될 수 있다.
프로세서 110는 중앙처리장치(CPU), AP(application processor), 또는 CP(communication processor) 중 하나 또는 그 이상을 포함할 수 있다. 프로세서 110는, 예를 들면, 전자 장치 101의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
다양한 실시 예에 따르면, 프로세서 110는 일반적 연산을 수행하기 위한 영역 및 보안과 관련된 데이터(예: 생체 인식 정보, 결제 정보 등)의 처리와 관련된 연산을 수행하기 위한 영역을 포함할 수 있다. 상기 프로세서 110의 구성에 관한 정보는 도 1b를 통해 제공될 수 있다.
메모리 115는 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리 115는 프로세서 110에서 처리하는 명령 또는 데이터를 저장할 수 있다. 다양한 실시 예에서, 메모리 115는 eSE 120과 서로 다른 데이터를 저장할 수 있다. 예를 들어, 메모리 115는 암호화된 지문 정보를 저장하고, 상기 eSE 120는 지문 정보를 암호화한 보안 키를 저장할 수 있다.
eSE 120는 안전한 데이터 저장 및 보호된 명령 실행 환경을 보장해주는 회로일 수 있다. eSE 120는 프로세서 110 및 메모리 115와 별개로 구현되어, 고정 칩 내에 내장될 수 있다. eSE 120는 상대적으로 물리적 공격 또는 해킹 공격에 강한 보안성이 보장될 수 있다. eSE 120는 접근 시 인증이 요구되는 데이터(예: 보안 키 등)를 저장할 수 있다.
물리적 채널 125은 프로세서 110와 eSE 120 사이의 데이터를 전송할 수 있다. 물리적 채널 125은 프로세서 110가 외부 네트워크(예: 무선 인터넷)에 영향을 받지 않고, eSE 120를 직접 제어할 수 있는 로컬 경로를 형성할 수 있다. 프로세서 110는 물리적 채널 125을 통해 별도의 NFC 모듈 등을 거치지 않고, 직접 제어 신호를 송수신할 수 있다. 또한, 프로세서 110는 상기 제어 신호에 대응하는 결과를 eSE 120로부터 수신할 수 있다. 다양한 실시 예에서, 상기 물리적 채널 125은 SPI(serial peripheral interface), RS232, I2C(inter-integrated circuit) 등으로 구현될 수 있다. 예를 들어, 물리적 채널 125이 SPI로 구현되는 경우, 물리적 채널 125는 프로세서 110와 eSE 120를 직접적으로 연결하는 4개의 선으로 이루어진 직렬 버스의 형태로 구현될 수 있다. 다른 예를 들어, 물리적 채널 125이 I2C로 구현되는 경우, 물리적 채널 125은 하나의 데이터 선으로 구현될 수 있다.
도 1b는 다양한 실시 예에 따른 전자 장치의 구성도 이다.
도 1b를 참조하면, 전자 장치 101은 프로세서 110, 메모리 115 및 eSE 120를 포함할 수 있다.
프로세서 110는 일반 환경(REE, rich execution environment) 130 및 보안 환경(TEE, trusted execution environment) 140을 포함할 수 있다. 프로세서 110는 상대적으로 높은 보안 수준을 요구하는 데이터를 보안 환경 140을 통해 처리할 수 있다. 일반 환경 130 및 보안 환경 140은 물리적으로 분리된 형태, 소프트웨어 적으로 분리된 형태, 또는 물리적인 분리와 소프트웨어적인 분리를 모두 이용한 형태로 구현될 수 있다. 보안 환경 140은 물리적 채널 125을 통해 eSE 120에 연결될 수 있다.
프로세서 110는 일반 환경 130이 아닌 보안 환경 140 및 물리적 채널 125을 통해 eSE 120에 접근할 수 있다. 프로세서 110는 상대적으로 높은 보안 수준을 요구하는 정보를 보안 환경 140 및 물리적 채널 125을 통해 eSE 120에 저장할 수 있다.
일반 환경 130은 보안 업무과 관련성이 낮은 통상적인 연산 작업을 수행할 수 있다. 일반 환경 130은 중앙처리장치(CPU), AP(application processor), 또는 CP(communication processor) 중 하나 또는 그 이상을 포함할 수 있다. 일반 환경 130은, 예를 들면, 전자 장치 101의 적어도 하나의 다른 구성요소들(예: 메모리, 통신 인터페이스 등)의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다. 일반 환경 130은 어플리케이션 레이어 131, 프레임워크 레이어 132 및 커널 133을 포함할 수 있다.
어플리케이션 레이어 131는 전자 장치(예: 전자 장치 101)에 관련된 자원을 제어하는 운영 체제(operating system, OS) 및/또는 운영 체제 상에서 구동되는 다양한 어플리케이션을 포함할 수 있다.
프레임워크 레이어 132는 어플리케이션 레이어 131로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 프레임워크 레이어 132는 상기 우선 순위에 따라 상기 하나 이상의 작업 요청들을 처리함으로써, 상기 하나 이상의 작업 요청들에 대한 스케쥴링 또는 로드 밸런싱 등을 수행할 수 있다. 다양한 실시 예에서, 프레임워크 레이어 132는 보안 환경 140의 구동에 필요한 라이브러리를 포함할 수 있다.
커널 133은, 예를 들면, 다른 프로그램들(예: 프레임워크 레이어 132 또는 어플리케이션 레이어 131)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스, 프로세서 또는 메모리 등)을 제어 또는 관리할 수 있다. 다양한 실시 예에서, 커널 133은 보안 환경 140을 구동하기 위한 드라이버를 포함할 수 있다.
보안 환경 140은 프로세서 110 내부에서 보안과 관련된 데이터(예: 생체 인식 정보, 결제 정보 등)의 처리와 관련된 연산을 수행하기 위한 영역(TEE, trusted execution environment)일 수 있다. 다양한 실시 예에서, 보안 환경 140은 eSE 120와 공유된 키(secret key)를 가질 수 있고, 상기 키를 이용하여 eSE 120와 직접적으로 암호화된 데이터를 송수신할 수 있다. 보안 환경 140은 보안 어플리케이션 레이어 141, 보안 프레임워크 레이어 142 및 보안 커널 143을 포함할 수 있다.
보안 어플리케이션 레이어 141는 통상적인 데이터와 달리 상대적으로 높은 보안 수준을 요구하는 어플리케이션을 포함할 수 있다. 예를 들어, 보안 어플리케이션 레이어 141는 결제 앱(온라인 또는 오프라인), 사용자 인증 앱(예: 지문 인식, 홍채 인식 등 생체 인식 앱) 등을 포함할 수 있다.
보안 프레임워크 레이어 142는 보안 어플리케이션 레이어 141로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 보안 프레임워크 레이어 142는 eSE 120에 전송하는 데이터를 암호화하는 기능을 수행할 수 있다. 보안 프레임워크 레이어 142는 보안 프로토콜(SP, secure protocol) 모듈 145 및 APDU(application protocol data unit) 통신 엔진 146을 포함할 수 있다. APDU 통신 엔진 146은 ISO 7816-4에서 규정한 메시지 규격에 따라 통신을 수행할 수 있다.
보안 프로토콜 모듈 145은 어플리케이션 레이어 131로부터 수신된 하나 이상의 작업 요청들을 eSE 120와 공유된 키 145a를 통해 암호화 하는 모듈일 수 있다. 상기 키 145a는 프로비저닝(provisioning) 과정 등을 통해 공유될 수 있다.
다양한 실시 예에 따르면, 프로비저닝(provisioning) 과정은 프로세서 110와 eSE 120 사이에 세션 형성을 위한 키를 공유하는 과정일 수 있다. 프로비저닝(provisioning) 과정은 프로세서 110의 키 교환 요청과 eSE 120의 키 교환 응답을 통해 진행될 수 있다.
프로세서 110는 보안 환경 140을 통해 키 교환 요청을 eSE 120에 송신할 수 있다. 상기 키 교환 요청은 알고리즘 식별자, 프로세스 식별자, 지정된 보안 알고리즘에 따른 공개키 등을 포함할 수 있다.
eSE 120는 지정된 조건(예: 저장된 키가 있는지 여부 또는 eSE 120의 상태 정보 등)를 확인하여 제1 키를 생성하고 저장할 수 있다. 예를 들어, eSE 120는 프로세서 식별자, eSE 식별자 등을 기반으로 KDF(key derivation function)를 계산하여 키를 생성하고 저장할 수 있다.
eSE 120는 프로세서 110에 키 교환 응답을 송신할 수 있다. 상기 키 교환 응답은 키의 생성 및 저장이 성공이면 성공 코드를 포함할 수 있고, 키의 생성 및 저장이 실패이면, 에러 코드를 포함할 수 있다. 다양한 실시 예에서, eSE 120는 프로세서 110과의 키 교환을 위해 생성된 키(예: 공개 키)와 MAC 데이터를 응답으로 송신할 수 있다.
프로세서 110는 성공 코드를 수신한 경우, 프로세스 식별자, eSE 식별자 등을 인자로 KDF를 계산하여 제2 키를 생성 후 저장할 수 있다.
다양한 실시 예에서, 보안 어플리케이션 레이어 141는 일부 데이터를 보안 프로토콜 모듈 145을 통해 암호화할 수 있고, 다른 일부 데이터를 보안 프로토콜 모듈 145을 통과하지 않고, 별도의 암호화 과정 없이 APDU 통신 엔진 146으로 제공할 수 있다. 보안 프로토콜 모듈 145을 통해 암호화 되는 데이터는 보안 필요성 정도에 따라 결정될 수 있다.
APDU 통신 엔진 146은 eSE 120에서 인식할 수 있는 포맷(format)으로 데이터를 변환하는 모듈일 수 있다.
다양한 실시 예에 따르면, 보안 프레임워크 레이어 142는 상대적으로 높은 보안 수준을 요구하는 데이터(예: 지문 정보 등 생체 인식 정보, 결제 관련 정보)를 별도 관리하기 위한 프레임워크를 포함할 수 있다. 예를 들어, 보안 프레임워크 레이어 142는 지문 센서를 통해 인식된 지문 정보를 변환하고, 암호화 또는 복호화를 수행하는 별도의 프레임 워크를 포함할 수 있다. 상기 지문 정보를 처리하고, 이용하는 방법에 관한 정보는 도 3 내지 도 11을 통해 제공될 수 있다.
보안 커널 143은 예를 들면, 다른 프로그램들(예: 보안 프레임워크 레이어 142 또는 보안 어플리케이션 레이어 141)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스, 프로세서 또는 메모리 등)을 제어 또는 관리할 수 있다. 다양한 실시 예에서, 보안 커널 143은 eSE 드라이버(미도시)를 포함할 수 있다. 상기 eSE 드라이버는 보안 환경 140과 eSE 120 사이의 데이터 전송을 위한 인터페이스를 수행할 수 있다.
다양한 실시 예에 따르면, eSE 120는 보안 환경 140과 공유된 키 120a를 저장할 수 있다. 키 120a는 보안 프로토콜 모듈 145에 저장된 키 145a에 대응할 수 있다. eSE 120는 프로비저닝 과정을 거쳐서 보안 환경 140과 키를 공유할 수 있다. eSE 120는 키 120a를 이용하여 보안 환경 140과 세션을 형성하고, 상기 세션을 통해 eSE 120에 저장이 요청된 중요 데이터(이하, 보안 데이터) 121를 송수신할 수 있다.
eSE 120는 보안 데이터 121를 저장할 수 있다. 보안 데이터 121는 상대적으로 높은 보안 수준을 가지는 데이터 자체 또는 상기 데이터와 연관된 다른 정보(예: 상기 데이터를 암호화 한 보안 키)일 수 있다. 전자 장치 101은 보안 데이터 121를 보안 환경 140 내부 또는 상기 보안 환경 140에 의해 관리되는 메모리에 저장하지 않고, eSE 120 내부에 저장하여 외부의 물리 공격 또는 해킹 공격으로부터 중요 정보를 보호할 수 있다. eSE 120는 키 120a를 이용하여 보안 환경 140과 세션을 형성하고, 상기 세션을 통해 보안 데이터 121를 송수신할 수 있다.
다양한 실시 예에 따르면, 프로세서 110는 상대적으로 높은 보안 수준이 요구되는 정보는 eSE 120에 저장하고, 일반 환경 130 또는 보안 환경 140에는 저장하지 않을 수 있다. 또한, 프로세서 110는 다양한 보안 수준의 데이터들을 지정된 기준에 따라 eSE 120, 보안 환경 140 또는 일반 환경 130 중 어느 영역에 저장할지를 결정할 수 있다. 예를 들어, 프로세서 110는 지문 이미지와 연관된 지문 정보는 보안 환경 140에 저장하고, 상기 지문 정보를 암호화한 보안 키(예: 랜덤 키)는 eSE 120에 저장할 수 있다.
도 2a는 다양한 실시 예에 따른 데이터를 eSE에 저장하는 동작을 나타내는 흐름도이다.
도 2a를 참조하면, 동작 201에서, 프로세서 110는 접근 시 인증이 요구되는 데이터를 획득할 수 있다. 상기 데이터는 상대적으로 높은 보안 수준을 요구하는 데이터(예: 지문 정보 등 생체 인식 정보, 결제 관련 정보)일 수 있다. 상기 데이터는 사용자에 의해 지정되거나, 어플리케이션의 설정에 의해 자동으로 지정될 수 있다.
동작 202에서, 프로세서 110는 상기 데이터의 적어도 일부를 상기 물리적 채널 125을 통해 eSE 120에 저장할 수 있다. 프로세서 110는 보안 환경 140 및 물리적 채널 125를 통해 직접 eSE 120를 제어할 수 있다. 프로세서 110는 상기 데이터의 전부 또는 상기 데이터와 연관된 일부 데이터(예: 암호화 키 등)를 eSE 120에 저장할 수 있다. 프로세서 110는 중요 정보(예: 보안 키 등)를 eSE 120에 저장하여 외부의 물리적 공격 또는 해킹 공격으로부터 중요 정보를 보호할 수 있다.
도 2b는 다양한 실시 예에 따른 데이터를 보안 환경 또는 eSE에 저장하는 동작을 나타내는 흐름도이다.
도 2b를 참조하면, 동작 210에서, 보안 환경 140은 일반 환경 130으로부터 지정된 데이터(예: 지문 정보 등 생체 인식 정보, 결제 관련 정보)의 저장 요청을 수신할 수 있다. 예를 들어, 상기 요청은 어플리케이션의 인터페이스를 통해 사용자로부터 발생하거나, 지정된 어플리케이션(예: 결제 어플리케이션)이 실행되는 경우 자동으로 발생하도록 설정될 수 있다.
동작 220에서, 보안 환경 140은 상기 데이터를 eSE 120에 저장하도록 하는 요청이 있는지를 확인할 수 있다. 보안 환경 140은 상기 요청에 포함된 정보를 기반으로 상기 데이터를 저장할 영역을 결정할 수 있다. 예를 들어, 보안 환경 140은 보안 수준을 나타내는 정보가 지정된 값 이상인 경우, 상기 데이터를 eSE 120에 저장하고, 상기 지정된 값 미만인 경우, 보안 환경 140에서 관리하는 메모리 115에 저장하도록 설정될 수 있다. 다양한 실시 예에 따르면, 보안 환경 140은 상기 데이터의 종류를 기반으로 저장 위치를 결정할 수 있다. 예를 들어, 보안 환경 140은 각각의 데이터에 포함된 보안 레벨을 확인할 수 있다. 보안 환경 140은 상기 보안 레벨이 상대적으로 낮은 데이터(예: 지문 데이터의 특징점, 홍채 인식 데이터 등)은 일반 환경 130 또는 보안 환경 140에서 접근 가능한 메모리 115에 저장하고, 상기 보안 레벨이 상대적으로 높은 데이터(예: 지문 데이터의 융선, 지문 데이터를 암호화한 키, 홍채 데이터를 암호화한 키 등)는 eSE 120에 저장할 수 있다.
동작 230에서, 상기 데이터를 eSE 120에 저장하도록 하는 요청이 있는 경우, 보안 환경 140은 사용 가능한 eSE 120가 있는지를 확인할 수 있다.
동작 240에서, 보안 환경 140은 상기 데이터를 eSE 120에 저장하도록 하는 요청이 없는 경우, 상기 데이터를 보안 환경 140에 저장할 수 있다. 또한, 보안 환경 140은 eSE 120가 없는 경우 또는 eSE 120가 사용불가 상태인 경우(예: 프로비저닝 과정을 통해 공유된 키가 없는 경우, eSE 120의 리셋이 필요한 경우 등), 상기 데이터를 보안 환경 140에 저장할 수 있다.
예를 들어, 외부 서버(예: TSM(Trusted Service Manager))의 리셋 요청이 있는 경우, 메모리 영역 또는 eSE 120의 손상으로 공유된 키가 손실 또는 삭제된 경우, 보안 환경 140은 eSE 120의 리셋 절차를 진행할 수 있다. 이 경우, 보안 환경 140은 eSE 120에 상기 데이터를 저장할 수 없고, 상기 데이터를 보안 환경 140에 임시 저장할 수 있다. 보안 환경 140은 리셋 절차 완료 후, 프로비져닝 과정을 통해 키가 공유된 경우, 상기 데이터를 eSE 120으로 이동하여 저장할 수 있다.
동작 250에서, 보안 환경 140은 사용 가능한 eSE 120가 있으면, 상기 데이터를 eSE 120에 저장할 수 있다. 보안 환경 140은 프로비저닝 절차를 통해 eSE 120와 공유된 키 145a를 가질 수 있다. 보안 환경 140은 키 145a를 이용하여 eSE 120와 세션을 형성하고, 상기 세션을 통해 상기 데이터를 송수신할 수 있다.
이하에서는 상기 데이터가 지문 관련 데이터인 경우를 중심으로 설명하지만, 이에 한정되는 것은 아니다. 상기 데이터는 결제 정보(예: 카드 번호, 비밀 번호), 사용자 인식 정보(예: 지문인식, 홍채인식 등 생체 인식 정보, 건강 정보) 또는 사용자가 보호하자 하는 정보(예: 비밀 문서, 다이어리, 사진, 영상 등 프라이버시 정보) 등 다양한 종류의 데이터에 적용될 수 있다.
도 3은 다양한 실시 예에 따른 보안 환경을 통해 지문 센서가 연결된 전자 장치의 구성도이다.
도 3을 참조하면, 전자 장치 301는 프로세서 310, eSE 320 및 지문 센서 360를 포함할 수 있다. 프로세서 310은 일반 환경 330 및 보안 환경 340을 포함할 수 있다.
보안 환경 340은 물리적 채널 325을 통해 eSE 320와 연결될 수 있다. 또한, 보안 환경 340은 채널 361을 통해 지문 센서 360와 연결될 수 있다. 보안 환경 340은 보안 어플리케이션 레이어 341, 보안 프레임워크 레이어 342 및 보안 커널 343을 포함할 수 있다.
보안 어플리케이션 레이어 341는 상대적으로 높은 보안 수준의 정보를 처리하는 어플리케이션을 구동할 수 있다. 예를 들어, 어플리케이션 레이어 341는 생체 인식(예: 지문 인식, 홍채 인식 등) 관련 앱 또는 온라인/오프라인 결제와 관련된 앱 등을 구동할 수 있다. 다양한 실시 예에서, 보안 어플리케이션 레이어 341는 지문 센서 360에서 인식된 지문 정보를 이용하는 지문 어플리케이션 341a을 구동할 수 있다. 지문 어플리케이션 341a은 사용자 인증을 요구하는 결제 앱, 다이어리 앱 또는 바이오 정보 앱 등일 수 있다.
보안 프레임워크 레이어 342는 보안 어플리케이션 레이어 341로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 보안 프레임워크 레이어 342는 보안 프로토콜(SP, secure protocol) 모듈 345, APDU(application protocol data unit) 통신 엔진 346 및 지문 프레임워크 347를 포함할 수 있다.
지문 프레임 워크 347는 지문 센서 360에서 인식한 지문 정보를 저장하고 처리할 수 있다. 다양한 실시 예에서, 지문 프레임 워크 347는 지문 센서 360로부터 수신한 지문 정보(예: 지문 이미지 360a)를 기반으로 지문 템플릿을 생성할 수 있다. 상기 지문 템플릿은 지문 센서를 통해 취득된 지문 이미지 정보를 부호화한 정보일 수 있다. 지문 템플릿은 지문 이미지 자체가 아닌, 지문 이미지에 포함된 특징을 부호화하여 변환한 데이터일 수 있다.
또한, 지문 프레임 워크 347는 생성된 지문 템플릿을 지정된 보안 키 321(예: 랜덤 키)을 이용하여 암호화 할 수 있다. 이후, 상기 보안 키 321는 eSE 320에 저장될 수 있고, 보안 환경 140에서는 삭제될 수 있다. 다양한 실시 예에서, 암호화된 지문 템플릿 347a은 보안 환경 140에서 관리되고, 보안 키는 eSE 320에 별도 저장되어, 지문 정보의 보안성이 강화될 수 있다.
다양한 실시 예에 따르면, 지문 프레임 워크 347는 지문 등록 요청이 있는 경우, 랜덤 키를 생성하여 지문 템플릿을 암호화 할 수 있다. 또한, 지문 프레임 워크 347는 보안 환경 340 또는 eSE 320에 미리 저장된 보안 키가 있는 경우, 저장된 보안 키를 이용하여 지문 템플릿을 암호화 할 수 있다.
지문 정보를 암호화하여 eSE 320에 저장하는 동작에 관한 정보는 도4를 통해 제공될 수 있고, eSE 320에 저장된 정보를 이용하여 인증 절차를 수행하는 동작에 관한 도 5를 통해 제공될 수 있다.
지문 센서 360는 사용자의 지문을 인식할 수 있다. 지문 센서 360는 사용자의 지문을 디지털 이미지화할 수 있다. 지문 센서 360는 보안 환경 340과 지문 관련 정보를 송수신 할 수 있는 채널 361을 통해 연결될 수 있다.
지문 센서 360는 센싱한 지문 이미지 360a를 채널 361을 통해 보안 환경 340에 제공할 수 있다. 보안 환경 340에 제공된 지문 이미지는 사용자 인증 또는 결제 과정 등에 이용될 수 있다. 지문 센서 360는 초기 등록을 위해 지문을 인식하거나, 지문 등록 이후 사용자 인증 과정을 위해 지문을 인식할 수 있다. 지문 센서 360는 지문 어플리케이션 341a(예: 다이어리 앱 또는 결제 앱 등)을 통해 제어되어 동작할 수 있다.
다양한 실시 예에 따르면, 지문 센서 360는 보안 환경 340에 연결되는 채널 361과 별개의 채널 362을 통해 일반 환경 330에 연결될 수 있다. 채널 362는 상기 채널 361을 통해 지문 이미지 360a를 제공할 수 없는 경우(예: 채널 오류, 데이터 트래픽 증가 등) 예비적으로 이용될 수 있다. 채널 361을 통해 전송된 지문 이미지 360a은 일반 환경 330을 통해 보안 환경 340에 제공될 수 있다.
도 4는 다양한 실시 예에 따른 지문 등록 과정을 나타내는 신호 흐름도이다.
도 4를 참조하면, 동작 410에서, 보안 환경 340은 지문 등록 요청을 수신할 수 있다. 예를 들어, 지문 등록 요청은 지문 어플리케이션 341a에서 사용자가 지문 등록 옵션을 선택하는 경우, 등록된 지문 정보를 리셋하는 경우에 발생할 수 있다.
동작 420에서, 보안 환경 340은 지문 센서 360로부터 지문 이미지 360a를 전송 받을 수 있다. 지문 이미지 360a는 보안 환경 340과 지문 센서 360 사이의 채널 361을 통해 제공될 수 있다. 다양한 실시 예에서, 상기 채널 361의 사용이 어려운 경우(예: 채널 오류, 데이터 트래픽 증가 등), 일반 환경 330과 지문 센서 360를 연결하는 채널 362을 통해 지문 이미지 360a가 전송될 수 있다. 이 경우, 일반 환경 330은 지문 이미지 360a을 보안 환경 340에 제공할 수 있다.
동작 430에서, 보안 환경 340은 수신한 지문 이미지 360a를 기반으로 지문 템플릿을 생성할 수 있다. 상기 지문 템플릿은 지문 센서를 통해 취득된 지문 이미지 정보를 부호화한 정보일 수 있다.
동작 440에서, 보안 환경 340은 생성된 지문 템플릿을 지정된 보안 키 321(예: 랜덤 키)를 이용하여 암호화 할 수 있다. 다양한 실시 예에서, 보안 환경 340은 미리 저장된 보안 키가 있는 경우, 저장된 보안 키를 이용하여 지문 템플릿을 암호화 할 수 있다.
동작 450에서, 보안 환경 340은 사용 가능한 eSE 320가 있는지를 확인할 수 있다. eSE 320가 없는 경우 또는 eSE 320가 사용불가 상태인 경우(예: 프로비저닝 과정을 통해 공유된 키가 없는 경우, 리셋이 필요한 경우 등), 보안 환경 340은 지문 정보를 저장할 영역을 결정할 수 있다. 예를 들어, 보안 환경 340은 보안 키 321를 보안 환경 340에, 암호화된 지문 템플릿347a를 일반 환경 330에 저장하도록 결정할 수 있다. 다른 예를 들어, 보안 환경 340은 암호화된 지문 템플릿347a 및 보안 키 321 모두를 보안 환경 340에 저장하도록 결정할 수 있다.
사용 가능한 eSE 320가 있는 경우, 보안 환경 340은 세션을 열어 보안 키 321을 eSE 320에 저장할 수 있다(동작 460 내지 490).
동작 460 및 465에서, 보안 환경 340은 eSE 320에 세션 시도 요청을 송신하고, eSE 320은 세션 시도 요청에 대응하는 세션 시도 응답을 송신할 수 있다.
동작 470에서, 보안 환경 340은 세션 시작 요청을 송신할 수 있다. 보안 환경 340은 제1 세션 시작 벡터를 생성하고, 세션 시도 응답의 MAC 데이터를 포함하는 세션 시작 요청을 송신할 수 있다.
동작 475에서, eSE 320은 세션 시작 요청에 대응하는 세션 시작 응답을 송신할 수 있다. eSE 320은 제2 세션 시작 벡터를 생성하고, 이에 대한 MAC(message authentication code) 데이터를 포함하는 세션 시작 응답을 송신할 수 있다.
동작 480에서, 보안 환경 340은 지문 템플릿을 암호화한 보안 키(예: 랜덤 키)를 eSE 320에 저장하도록 요청할 수 있다.
동작 485에서, 보안 환경 340은 eSE 320에 보안 키 321의 저장이 확인된 경우, 보안 환경 340에 저장된 보안 키를 삭제할 수 있다. 보안 환경 340은 상기 보안 키 321를 보안 수준이 상대적으로 높은 eSE 320에만 저장하도록 하여 지문 정보의 보안성을 강화할 수 있다.
동작 490에서, 보안 환경 340은 세션 종료 요청을 송신할 수 있다. 보안 환경 340은 저장된 정보를 활용하기 위해서는 별도의 세션을 시작하고, 저장된 정보를 eSE 320에 요청할 수 있다.
도 5a는 다양한 실시 예에 따른 저장된 생체 정보를 이용한 인증 과정을 나타내는 신호 흐름도이다.
동작 501에서, 프로세서 310는 상기 프로세서 310와 기능적으로 연결된 생체 정보 감지 모듈(예: 지문 센서 360)로부터 제1 생체 정보(예: 지문 이미지 360a)를 수신할 수 있다. 상기 생체 정보 감지 모듈은 사용자 인식 정보(예: 지문 인식, 홍채 인식 등)를 수집할 수 있고, 인식된 정보를 프로세서 310에 제공할 수 있다.
동작 502에서, 프로세서 310는 상기 제1 생체 정보에 대응하는 데이터를 물리적 채널 325을 통해 연결된 eSE 320로부터 획득할 수 있다. 예를 들어, 상기 데이터는 제1 생체 정보와 동일 또는 유사한 정보를 암호화한 보안 키일 수 있다. 프로세서 310는 보안 환경 340을 통해 eSE 320와 세션을 형성하고, 상기 데이터를 요청할 수 있다.
동작 503에서, 프로세서 310는 상기 데이터의 적어도 일부에 기반하여, 제2 생체 정보를 생성할 수 있다. 예를 들어, 상기 데이터가 생체 정보를 암호화한 보안 키인 경우, 프로세서 310는 상기 보안 키를 이용하여 미리 저장된 생체 정보를 복호화할 수 있다.
동작 504에서, 프로세서 310는 상기 제1 생체 정보와 상기 제2 생체 정보를 비교한 결과에 기반하여 인증을 수행할 수 있다. 프로세서 310는 제1 생체 정보와 제2 생체 정보가 동일한 경우, 제1 생체 정보가 유효한 것으로 판단하고, 관련 어플리케이션을 통해 결과를 제공할 수 있다. 반면, 프로세서 310는 제1 생체 정보와 제2 생체 정보가 서로 다른 경우, 제1 생체 정보를 통한 인증 과정을 취소하거나 인증 오류 메시지를 출력할 수 있다. 이하에서는, 생체 정보가 지문 정보인 경우에 대해 검토하지만, 이에 한정되는 것은 아니다.
도 5b는 다양한 실시 예에 따른 저장된 지문 정보를 이용한 인증 과정을 나타내는 신호 흐름도이다.
도 5b를 참조하면, 동작 510에서, 보안 환경 340은 지문 인증 요청을 수신할 수 있다. 예를 들어, 지문 인증 요청은 지문 어플리케이션 341a에서 사용자가 지문 인증 옵션을 선택하는 경우 또는 지정된 어플리케이션(예: 결제 어플리케이션)이 실행되는 경우 자동으로 발생하도록 설정될 수 있다.
동작 520에서, 보안 환경 340은 지문 센서 360로부터 지문 이미지를 전송 받을 수 있다. 상기 지문 이미지(이하, 제1 지문)는 저장된 지문 이미지(이하, 제2 지문)와 비교를 통해 정당한 사용자인지를 확인하는데 사용될 수 있다.
동작 530에서, 보안 환경 340은 제1 지문의 지문 이미지를 기반으로 지문 템플릿을 생성할 수 있다.
동작 540에서, 보안 환경 340은 암호화 하여 저장된 제2 지문에 대한 지문 템플릿을 복호화 하기 위한 보안 키의 저장위치를 확인할 수 있다. 보안 환경 340은 보안 키 321가 eSE 320에 저장된 경우, 세션을 열어 보안 키 321을 요청할 수 있다.
동작 550 내지 565의 세션 시도 및 시작 과정은 도 4에서의 동작 460 내지 475의 세션 시도 및 시작 과정과 동일할 수 있다.
동작 570 및 동작 575에서, 보안 환경 340은 세션이 시작되면, eSE 320에 보안 키 321을 요청할 수 할 수 있고, eSE 320은 상기 요청에 대응하여 저장된 보안 키 321을 전송할 수 있다.
동작 580에서, 보안 환경 340은 수신한 보안 키를 이용하여 제2 지문에 대한 지문 템플릿을 복호화 할 수 있다.
동작 585에서, 보안 환경 340은 지문 센서 360를 통해 인식된 제1 지문과 복호화된 제2 지문을 비교하여, 제1 지문이 등록된 제2 지문과 동일한지를 결정할 수 있다.
동작 590에서, 보안 환경 340은 지문 비교 과정이 종료 되면 세션 종료 요청을 송신할 수 있다.
도 6은 다양한 실시 예에 따른 일반 환경을 통해 지문 센서가 연결된 전자 장치의 구성도이다.
도 6을 참조하면, 전자 장치 601는 프로세서 610, 메모리 615, eSE 620 및 지문 센서 660를 포함할 수 있다. 프로세서 610은 일반 환경 630 및 보안 환경 640을 포함할 수 있다. 보안 환경 640은 물리적 채널 625을 통해 eSE 620와 연결될 수 있다.
전자 장치 601는 도 3과 달리, 지문 센서 660가 채널 661을 통해 일반 환경 630에 우선적으로 연결될 수 있다. 지문 센서 660가 보안 환경 640에 연결되는 채널 662은 예비적으로 이용될 수 있다.
지문 센서 660가 채널 661을 통해 일반 환경 630에 연결되는 경우, 지문 이미지 660a에 관한 정보는 일반 환경 630을 통해 보안 환경 640에 제공될 수 있다. 이 경우, 보안 환경 640이 외부와 직접적으로 연결될 가능성을 낮출 수 있고, 보안 환경 640의 보안성이 강화될 수 있다. 또한, 일반 환경 630에서 동작하는 어플리케이션들에서 지문 센서 660를 통해 인식된 정보를 용이하게 이용할 수 있는 장점이 있다.
일반 환경 630을 통해 지문을 등록 하는 과정에 관한 정보는 도 7을 통해 제공될 수 있다.
도 7은 다양한 실시 예에 따른 일반 환경을 통한 지문 등록 과정을 나타내는 신호 흐름도이다.
도 7을 참조하면, 동작 710에서, 일반 환경 630은 지문 등록 요청을 수신할 수 있다. 예를 들어, 지문 등록 요청은 지문 관련 어플리케이션(예 결제 앱, 다이어리 앱 등 지문 정보를 활용할 수 있는 어플리케이션)에서 사용자가 지문 등록 옵션을 선택하는 경우, 등록된 지문 정보를 리셋하는 경우에 발생할 수 있다.
동작 720에서, 일반 환경 630은 지문 센서 660로부터 지문 이미지 660a를 전송 받을 수 있다. 지문 이미지 660a는 일반 환경 630과 지문 센서 660 사이의 채널 661을 통해 제공될 수 있다. 다양한 실시 예에서, 상기 채널 661의 사용이 어려운 경우(예: 채널 오류, 데이터 트래픽 증가 등), 보안 환경 640과 지문 센서 660를 연결하는 채널 662을 통해 지문 이미지 660a가 전송될 수 있다.
동작 730에서, 일반 환경 630은 보안 환경 640에 지문 이미지 660a를 전송하고, 상기 지문 이미지 660a를 기반으로 지문 템플릿을 생성할 것을 요청할 수 있다.
동작 740 내지 동작 799의 과정은 도 4에서의 동작 430 내지 동작 동작 490의 과정과 동일할 수 있다.
다양한 실시 예에 따르면, 동작 710 내지 동작 799를 통해 저장된 보안 키 621은 도 5b에서의 과정과 유사한 방식으로 이용될 수 있다. 이 경우, 일반 환경 630은 지문 인증 요청을 수신하는 경우, 지문 센서 660로부터 지문 이미지(제1 지문)를 전송 받을 수 있다. 일반 환경 630은 전송 받은 지문 이미지를 보안 환경 640에 제공하고 제1 지문에 대한 지문 템플릿을 생성하도록 요청할 수 있다. 보안 환경 640은 제1 지문과 저장된 제2 지문(eSE 620에 저장된 보안 키 621를 통해 복호화)을 비교하여 지문 인증 과정을 진행할 수 있다.
도 8은 다양한 실시 예에 따른 eSE를 사용 할 수 없는 경우 지문 등록 과정을 나타내는 신호 흐름도이다.
동작 810 내지 동작 850의 동작은 도 7에서의 동작 710 내지 동작 750의 동작과 동일할 수 있다.
동작 860에서, 보안 환경 640은 사용 가능한 eSE 620가 있는지를 확인할 수 있다. eSE 620가 없는 경우 또는 eSE 620가 사용불가 상태인 경우(예: 프로비저닝 과정을 통해 공유된 키가 없는 경우, 리셋이 필요한 경우 등), 보안 환경 640은 지문 정보를 일반 환경 630 또는 보안 환경 640에 나누어 저장할 수 있다.
동작 870 및 875에서, 보안 환경 640은 보안 키 621를 보안 환경 340에 저장하고, 보안 키 621을 제외한 암호화된 템플릿에 관한 정보를 일반 환경 630에 전송할 수 있다.
동작 880에서, 일반 환경 630은 수신한 암호화된 지문 템플릿을 저장할 수 있다.
상기와 같은 방법은 지문 정보를 일반 환경 630 또는 보안 환경 640에 나누어 저장하여 보안 수준을 높일 수 있으나, 보안 키 621을 eSE 620에 저장하는 경우보다는 보안 수준이 낮을 수 있다. 보안 환경 640은 eSE 620의 사용 가능 여부를 주기적으로 확인하여, eSE 620가 사용 가능 상태로 변경된 경우, 지문 정보의 저장 위치를 변경할 수 있다. eSE 620의 상태 변화에 따른 지문 정보의 저장에 관한 정보는 도 9를 통해 제공될 수 있다.
도 8은 예시적인 것으로, 이에 한정되는 것은 아니다. 설정 방식에 따라 보안 키 621 및 암호화된 지문 템플릿 647a이 저장되는 영역은 변경될 수 있다. 예를 들어, 보안 키 621 및 암호화된 지문 템플릿 647a 모두는 보안 환경 640에 저장될 수 있다.
도 9는 다양한 실시 예에 따른 eSE의 사용 상태 변화에 따른 지문 정보 저장을 나타내는 신호 흐름도이다.
도 9를 참조하면, 동작 910에서, 보안 환경 640은 eSE 620가 사용 불가 상태에서 사용 가능 상태로 변경되었는지를 확인할 수 있다. 예를 들어, 보안 환경 640은 eSE 620의 프로비저닝 과정이 완료되어 세션을 시작하기 위한 키를 공유한 상태로 변경된 경우, eSE 620가 사용 가능 상태로 변경되었음을 확인할 수 있다.
동작 920에서. 보안 환경 640은 일반 환경 630에 eSE 620가 사용 가능 상태로 변경되었음을 알릴 수 있다.
동작 930에서. 일반 환경 630은 eSE 620를 사용하고자 요청하는 기능을 확인할 수 있다. 예를 들어, 일반 환경 630은 지문 앱, 결제 앱, 다이어리 앱 등에서 eSE 620에 정보를 저장하도록 요청한 것을 확인할 수 있다.
동작 940에서, 일반 환경 630은 eSE 620을 통해 저장하고자 하는 저장 데이터를 보안 환경 640에 전송할 수 있다.
동작 950에서, 보안 환경 640은 저장 데이터를 보안 키를 통해 암호화 할 수 있다. 예를 들어, 보안 환경 640은 일반 환경 630으로부터 지문 이미지를 전송 받아 지문 템플릿을 생성하고, 생성된 지문 템플릿을 랜덤 키를 이용하여 암호화할 수 있다.
동작 960 내지 동작 990에서, 보안 환경 640은 저장 데이터를 암호화한 보안 키를 eSE 620에 저장하고, 보안 환경 640 내에서는 보안 키를 삭제하여 보안성을 강화할 수 있다. 동작 960 내지 동작 990은 도 4에서의 동작 460 내지 동작 490과 동일할 수 있다.
도 10은 다양한 실시 예에 따른 지문 센서와 eSE사이에 센싱 채널이 형성된 전자 장치의 구성도이다.
도 10을 참조하면, 전자 장치 1001은 프로세서 1010, 메모리 1015 eSE 1020 및 지문 센서 1060를 포함할 수 있다. 프로세서 1010은 일반 환경 1030 및 보안 환경 1040을 포함할 수 있다. 보안 환경 1040은 물리적 채널 1025을 통해 eSE 1020과 연결될 수 있다.
전자 장치 1001은 도 3 또는 도 6과 달리, 지문 센서 1060이 센싱 채널 1061을 통해 eSE 1020에 연결될 수 있다. 지문 센서 1060이 보안 환경 1040에 연결되는 채널 1062 또는 보안 환경 1030에 연결되는 채널 1063은 예비적으로 이용될 수 있다.
지문 센서 1060이 센싱 채널 1061을 통해 eSE 1020에 연결되는 경우, 지문 이미지 1060a에 관한 정보는 일반 환경 1030 또는 보안 환경 1040을 거치지 않고, eSE 1020에 직접 제공될 수 있다. 이 경우, 지문 센서 1060를 통해 인식된 정보가 프로세서 1010을 거치지 않고, eSE 1020 내부에서 모두 처리되어 지문 정보에 대한 보안성이 강화될 수 있다.
eSE 1020는 보안 환경 1020으로부터의 지문 등록 요청 또는 지문 인증 요청에 대응하여 지문 센서 1060으로부터 지문 이미지 1060a를 전송 받을 수 있다. eSE 1020는 지문 이미지 1060a로부터 지문 템플릿을 생성 및 암호화 하고, 암호화된 지문 템플릿 1021 및 보안 키 1022를 저장할 수 있다. eSE 1020을 통한 지문 템플릿 생성 및 암호화에 관한 정보는 도 11을 통해 제공될 수 있다.
다양한 실시 예에 따르면, 전자 장치는 프로세서, 상기 프로세서와 기능적으로 연결된 메모리 및 상기 프로세서 및 상기 메모리와 구분되고, 상기 프로세서와 물리적 채널을 통하여 연결된 보안 회로(secured circuitry)를 포함하고, 상기 프로세서는 데이터의 적어도 일부를 상기 물리적 채널을 통하여 상기 보안 회로에 전송하고, 상기 보안 회로는 상기 적어도 일부를 저장할 수 있다. 상기 데이터는 상기 전자 장치와 대응하는 생체 정보, 결제 정보, 건강 정보, 또는 프라이버시 정보 중 적어도 일부를 포함할 수 있다.
다양한 실시 예에 따르면, 상기 프로세서는 상기 데이터를 암호화하고, 암호화된 데이터 또는 암호화에 사용된 보안 키를 상기 보안 회로에 저장하도록 설정될 수 있다. 상기 프로세서는 상기 보안 키가 상기 보안 회로에 저장된 경우, 상기 프로세서에 저장된 상기 보안 키를 삭제할 수 있다. 상기 물리적 채널은 SPI(serial port interface)를 포함할 수 있다.
다양한 실시 예에 따르면, 상기 프로세서는 일반 환경 및 보안 환경으로 구분되어 동작하고, 상기 보안 환경은 상기 물리적 채널을 통하여 상기 보안 회로에 상기 적어도 일부를 저장하거나 상기 보안 회로로부터 저장된 데이터를 불러오도록 설정될 수 있다. 상기 보안 환경은 상기 보안 회로와 공유된 키를 기반으로 세션을 형성하고, 상기 세션을 통해 상기 보안 회로에 상기 적어도 일부를 저장하거나 저장된 데이터를 불러올 수 있다. 상기 보안 환경은 상기 보안 회로와 공유된 키가 없는 경우, 상기 데이터를 상기 보안 환경에 저장하고, 상기 보안 회로와 프로비저닝(provisioning) 과정을 통해 키를 공유할 수 있다.
다양한 실시 예에 따르면, 전자 장치는 사용자의 생체 정보를 수집하는 생체 감지 모듈을 더 포함하고, 상기 프로세서는 상기 생체 정보를 이용하여 상기 적어도 일부를 생성하도록 설정될 수 있다. 상기 생체 감지 모듈은 상기 일반 환경, 상기 보안 환경 또는 상기 보안 회로 중 적어도 하나와 연결되는 채널을 가질 수 있다.
다양한 실시 예에 따르면, 상기 보안 환경은 상기 생체 감지 모듈을 통해 인식된 생체 정보를 보안 키를 이용하여 암호화 할 수 있다. 상기 보안 환경은 상기 암호화된 생체 정보를 상기 일반 환경 또는 상기 보안 환경 중 적어도 하나에 저장할 수 있다. 상기 보안 환경은 상기 보안 키를 상기 보안 환경 또는 상기 보안 회로 중 하나에 저장할 수 있다. 상기 보안 환경은 상기 보안 키가 상기 보안 회로에 저장된 경우, 상기 보안 환경에 저장된 상기 보안 키를 삭제할 수 있다.
다양한 실시 예에 따르면, 상기 보안 환경은 상기 보안 회로의 사용 가능 여부를 확인하고, 지정된 조건에 따라 상기 생체 정보 또는 상기 생체 정보를 암호화한 보안 키를 저장할 위치를 결정할 수 있다. 상기 보안 환경은 상기 보안 회로를 사용할 수 없는 경우, 암호화된 생체 정보를 상기 일반 환경에 송신하고, 상기 보안 키를 상기 보안 환경에 저장할 수 있다.
다양한 실시 예에 따르면, 상기 일반 환경은 상기 보안 환경에 생체 정보 인증을 요청하고, 상기 생체 감지 모듈을 통해 인식된 제 1 생체 정보를 송신할 수 있다. 상기 보안 환경은 생체 정보 인증 요청을 수신하는 경우, 상기 보안 회로와 공유된 키를 기반으로 세션을 형성하고, 상기 세션을 통해 상기 보안 회로에 저장된 상기 보안 키를 요청하여 미리 저장된 암호화된 제2 생체 정보를 복호화 할 수 있다.
다양한 실시 예에 따르면, 상기 보안 회로는 상기 생체 감지 모듈과 상기 물리적 채널과 구별되는 센싱 채널을 통해 연결되고, 상기 센싱 채널을 통해 상기 생체 정보를 수신하고, 상기 생체 정보를 보안 키를 이용하여 암호화 할 수 있다. 상기 보안 회로는 상기 보안 환경의 요청에 따라, 상기 생체 감지 모듈을 통해 인식된 제1 생체 정보와 상기 보안 키를 통해 복호화된 제 2 생체 정보의 비교 결과를 상기 보안 환경에 송신할 수 있다.
다양한 실시 예에 따르면, 전자 장치는 메모리와 프로세서를 포함하고, 상기 프로세서는 접근 시 인증이 요구되는 데이터를 획득하고, 상기 데이터의 적어도 일부를 프로세서와 물리적 채널을 통해 연결된 내장형 보안 요소(embedded secure element, eSE)에 저장하도록 제어하고, 상기 메모리는 상기 프로세서 운용과 관련한 적어도 하나의 명령어를 저장할 수 있다. 상기 프로세서는 상기 내장형 보안 요소의 사용 가능 여부를 확인하고, 상기 내장형 보안 요소의 사용이 가능한 경우, 상기 적어도 일부를 상기 내장형 보안 요소에 저장할 수 있다.
다양한 실시 예에 따르면, 상기 프로세서는 상기 프로세서의 보안 환경과 상기 내장형 보안 요소 사이에 공유된 키를 기반으로 세션을 형성하고 상기 세션을 통해 상기 적어도 일부를 상기 내장형 보안 요소에 전송할 수 있다. 상기 프로세서는 상기 적어도 일부가 상기 내장형 보안 요소에 저장되었는지를 확인하면, 상기 보안 환경에서 상기 적어도 일부를 삭제할 수 있다.
다양한 실시 예에 따르면, 전자 장치는 메모리와 프로세서를 포함하고, 상기 프로세서는 상기 프로세서와 기능적으로 연결된 생체 정보 감지 모듈로부터 제1 생체 정보를 수신하고, 상기 제1 생체 정보에 대응하는 제2 생체 정보를 생성하기 위한 데이터를 상기 프로세서와 물리적 채널을 통해 연결된 내장형 보안 요소로부터 획득할 수 있다. 상기 프로세서는 상기 데이터의 적어도 일부에 기반하여, 상기 제2 생체 정보를 생성하고, 상기 제1 생체 정보와 상기 제2 생체 정보를 비교한 결과에 기반하여 인증을 수행할 수 있다. 상기 메모리는 상기 프로세서 운용과 관련한 적어도 하나의 명령어를 저장할 수 있다.
도 11은 다양한 실시 예에 따른 eSE와 지문 센서의 직접 연결을 통한 지문 등록 과정을 나타내는 신호 흐름도이다.
도 11을 참조하면, 동작 1110에서, 일반 환경 1030은 보안 환경 1040에 지문 템플릿의 생성을 요청할 수 있다.
동작 1120에서, 보안 환경 1040은 상기 요청에 따라 지문 정보를 처리할 장소를 판단할 수 있다. 지문 센서 1060이 도 10에서와 같이, eSE 1020, 일반 환경 1030 또는 보안 환경 1040과 각각 연결되는 경우(채널 1061 내지 1063), 보안 환경 1040은 지정된 조건(예: 데이터의 보안 수준, eSE 1020의 인터페이스 지원 여부, eSE 1020의 저장 공간 등)에 따라 지문 데이터를 처리할 장소를 결정할 수 있다. 이하에서는 eSE 1020을 통해 지문 데이터가 모두 처리되는 경우를 중심으로 설명한다.
동작 1130 내지 동작 1145에서, 보안 환경 1040은 세션을 시작하여 eSE 1020에 데이터 전송을 준비할 수 있다. 동작 1130 내지 동작 1145은 도 4에서의 동작 460 내지 동작 475과 동일할 수 있다.
동작 1150에서, 보안 환경 1040은 eSE 1020에 지문 템플릿 생성을 요청할 수 있다.
동작 1160에서, eSE 1020는 지문 센서 1060에 지문 센싱을 요청할 수 있다. eSE 1020는 센싱 채널 1061를 통해 지문 센서 1060를 직접적으로 제어할 수 있다.
동작 1165에서, 지문 센서 1060는 지문을 센싱하여 지문 이미지 1060a를 수집할 수 있다.
동작 1170에서, 지문 센서 1060는 수집한 지문 이미지 1060a를 센싱 채널 1061를 통해 eSE 1020에 직접 제공할 수 있다.
동작 1180에서, eSE 1020는 지문 이미지 1060a를 기반으로 지문 템플릿을 생성하고, 보안 키 1022(예: 랜덤 키)를 이용하여 암호화 할 수 있다. 이 경우, 보안 키 1022는 eSE 1020에서 생성되고 프로세서 1010으로 전송되지 않아 보안성이 강화될 수 있다.
동작 1190 및 동작 1195에서, eSE 1020는 지문 템플릿이 생성 완료된 경우, 보안 환경 1040에 회신할 수 있고, 보안 환경 1040은 일반 환경 1030에 회신할 수 있다.
상기와 같은 과정은 지문 센서 1060를 통해 인식된 정보가 프로세서 1010를 거치지 않고, eSE 1020 내부에서 모두 처리되어 지문 정보에 대한 보안성이 강화될 수 있다.
다양한 실시 예에서, eSE 1020에 저장된 지문 템플릿을 이용하여 인증과정을 수행하는 경우, eSE 1020는 센싱 채널 1061를 통해 지문 센서 660으로부터 직접 지문 이미지(제1 지문)를 수신할 수 있다. 예를 들어, eSE 1020는 보안 환경 1040을 통해 지문 인증 요청을 받으면, 지문 센서 1060으로부터 제1 지문에 대한 지문 이미지를 수신하고, 저장된 제2 지문과 비교를 수행할 수 있다. eSE 1020는 상기 비교 후, 지문의 일치 여부에 관한 결과를 보안 환경 1040에 제공할 수 있다.
도 12는 다양한 실시 예에 따른 전자 장치 및 결제 서버를 통한 결제 방식을 설명하는 블록도이다.
도 12를 참조하면, 결제 서버 1201는 네트워크를 통해 전자 장치 1202와 결제 관련 정보를 송수신할 수 있다. 결제 서버 1201는 결제 앱 1235과 결제 관련 정보를 교환하고, 카드 정보를 저장 또는 관리할 수 있다. 결제 서버 1201는 사용자의 계정을 관리하고, 결제 정보를 관리할 수 있다.
다양한 실시 예에 따르면, 결제 서버 1201(상기 결제 서버 1201는 하나의 서버 또는 복수의 서버들을 결합한 네트워크일 수 있음)는 토큰을 발급하고 관리하는 토큰 관리 모듈 1201a을 포함할 수 있다. 상기 토큰은 실제 카드 정보(예: 카드 번호, 카드 사용자 등)를 대신하여 결제에 사용되는 정보일 수 있다. 예를 들어, 상기 토큰은 카드 고유 번호(Primary Account Number: PAN)을 대체하는 암호화된 숫자일 수 있다. 결제 서버 1201는 토큰을 이용하여, 신용카드 고유번호 또는 사용자 정보를 네트워크 상으로 송수신하지 않고 신용카드 결제를 진행할 수 있다. 상기 토큰은 특정 가맹점, 특정 채널 또는 특정 장치에서 임시로 사용될 수 있다.
토큰 관리 모듈 1201a(상기 토큰 관리 모듈 1201a은 하나의 서버 내의 모듈 또는 복수의 서버들 중 토큰 관련 기능을 수행하는 서버일 수 있음)은 결제 사용자의 카드 등록 요청에 따라 토큰을 발급하고 관리할 수 있다. 다양한 실시 예에서, 상기 발급된 토큰은 전자 장치 1202의 eSE 1220에 저장될 수 있다.
전자 장치 1202는 결제 서버 1201와 네트워크 통신을 통해 결제를 진행할 수 있다. 전자 장치 1202는 일반 환경 1230에 포함된 결제 앱 1235, 결제 프레임워크 1236 및 eSE 1220에 설치된 결제 모듈(Trusted App)(예: banking applet 등) 1237을 통해 결제 서버 1201와 결제를 수행할 수 있다.
결제 앱 1235은 어플리케이션 레이어 1231에서 실행될 수 있다. 결제 앱 1235는 사용자에게 결제 관련 UI를 제공할 수 있고, 사용자의 결제 관련 요청에 따라 결제 서버 1201와 데이터를 송수신할 수 있다. 예를 들어, 결제 앱 1235은 사용자의 계정 생성 요청, 로그인 요청 등이 있는 경우, 결제 프레임워크 1236에 결제 서버 1201와 통신을 위한 API를 호출하여 상기 요청을 수행할 수 있다.
결제 앱 1235은 계정 관리(예: 계정 생성, 삭제 등), 결제 카드 관리(예: 결제 카드 등록, 삭제, 갱신 등)의 작업을 수행하기 위한 UI 제공할 수 있고, 사용자의 결제 관련 요청을 수신할 수 있다. 다양한 실시 예에서, 결제 앱 1235은 결제 서버 1201와 주고 받는 사용자 고유의 식별자(예: 사용자 ID, 단말 ID), 카드 정보, 멤버십 정보 등을 관리할 수 있다.
결제 프레임워크 1236는 프레임워크 레이어 1232에 포함될 수 있다. 결제 프레임워크 1236는 결제 앱 1235이 결제 서버 1201와 같이 동작하도록 하기 위한 API 및 결제 동작 수행에 필요한 API를 포함할 수 있다. 결제 프레임워크 1236는 결제 앱 1235이 호출한 API를 수행하고, 결제 앱 1235과 eSE 1220에 저장된 결제 모듈 1237 사이를 중계할 수 있다. 또한, 사용자가 카드 등록 요청 시, 결제 서버 1201에 토큰 발급을 요청하고, 상기 결제 서버 1201로부터 발급 받은 토큰을 eSE 1220에 있는 결제 모듈 1237에 저장할 수 있다. 다양한 실시 예에서, 보안 환경 1240은 eSE 1220의 사용 가능 여부를 확인하고, eSE 1220이 사용 가능 상태인 경우, 상기 토큰을 eSE 1220에 저장할 수 있다. 반면, 보안 환경 1240은 eSE 1220이 사용 가능하지 않은 경우, 보안 환경 1240에서 관리하는 메모리에 저장할 수 있다.
결제 모듈(예: banking applet 등) 1237은 은행, 카드사(예: Visa, Master 등) 등에서 설치하는 어플리케이션일 수 있다. 사용자가 결제 앱 1235를 통해 상기 결제 모듈 1237의 설치를 승인하면, 결제 서버 1201은 결제 모듈 1237의 설치를 진행할 수 있다.
예를 들어, 결제 프레임워크 1236는 사용자의 카드 등록 요청을 결제 앱 1235으로부터 받아, OCR을 통해 신용 카드의 카드 번호와 유효 기간 정보 등을 획득할 수 있다. 결제 프레임워크 1236는 결제 서버 1201에 결제 모듈 1237을 설치하기 위한 카드 등록을 요청할 수 있다. 결제 서버 1201는 결제 앱 1235 또는 결제 프레임워크 1234에 저장된 연결 정보를 통하여 은행/카드사의 설치 서버에 연결될 수 있다. 결제 서버 1201는 설치 파일을 전자 장치 1202에 전달하여 결제 모듈 1237을 eSE 1220에 설치하도록 할 수 있다.
다양한 실시 예에 따르면, 결제 모듈 1237은 상기 결제 서버 1201와 데이터 전송에 사용되는 어플리케이션일 수 있다. 상기 결제 모듈 1237은 신용카드, 직불 카드, 멤버십 카드 등의 정보를 포함할 수 있다. 결제 모듈 1237은 카드 정보와 관련된 정보를 저장할 수 있다. 예를 들어, 상기 카드 정보(예: 카드 고유 번호(Primary Account Number: PAN))에 대응하는 토큰, 토큰 참조 ID, PAN의 일부분, PAN의 Product ID, 토큰 요청 ID, 토큰 확인 레벨, 토큰 확인 데이터, 토큰 유효기간, 암호화 키, 토큰 서비스 제공자에서 제공한 값(예: One Time Password) 중 적어도 하나일 수 있다. 상기 토큰은 결제 서버 1201(예: 토큰 서비스 제공자 서버)에 의해서 제어될 수 있다. 다양한 실시 예에서, 결제 모듈 1237은 상기 카드 관련 정보 자체를 저장하거나, 상기 카드 관련 정보를 암호화한 키를 저장할 수 있다.
다양한 실시 예에 따르면, 전자 장치에서 수행되는 데이터 저장 방법은 접근 시 인증이 요구되는 데이터를 획득하는 동작 및 상기 데이터의 적어도 일부를 프로세서와 물리적 채널을 통해 연결된 내장형 보안 요소(embedded secure element, eSE)에 저장하는 동작을 포함할 수 있다.
상기 내장형 보안 요소에 저장하는 동작은 상기 내장형 보안 요소의 사용 가능 여부를 확인하는 동작 및 상기 내장형 보안 요소의 사용이 가능한 경우, 상기 적어도 일부를 상기 내장형 보안 요소에 저장하는 동작을 포함할 수 있다.
상기 내장형 보안 요소에 저장하는 동작은 상기 프로세서의 보안 환경과 상기 내장형 보안 요소 사이에 공유된 키를 기반으로 세션을 형성하는 동작 및 상기 세션을 통해 상기 적어도 일부를 전송하는 동작을 포함할 수 있다.
상기 내장형 보안 요소에 저장하는 동작은 상기 적어도 일부가 상기 내장형 보안 요소에 저장되었는지를 확인하는 동작 및 상기 보안 환경에서 상기 적어도 일부를 삭제하는 동작을 더 포함할 수 있다.
전자 장치에서 수행되는 인증 방법은, 프로세서에서, 상기 프로세서와 기능적으로 연결된 생체 정보 감지 모듈로부터 제1 생체 정보를 수신하는 동작, 상기 제1 생체 정보에 대응하는 데이터를 상기 프로세서와 물리적 채널을 통해 연결된 내장형 보안 요소로부터 획득하는 동작, 상기 데이터의 적어도 일부에 기반하여, 제2 생체 정보를 생성하는 동작 및 상기 제1 생체 정보와 상기 제2 생체 정보를 비교한 결과에 기반하여 인증을 수행하는 동작을 포함할 수 있다.
도 13은 다양한 실시 예에 따른 전자 장치의 구성도 이다.
도 13을 참조하면, 전자 장치 1301은 프로세서 1310 및 eSE 1320을 포함할 수 있다. 전자 장치 1301은 프로세서 1310 및 eSE 1320을 연결하기 위한 물리적 채널 1350을 더 포함할 수 있다. 프로세서 1310은 물리적 채널 1350을 통해 디바이스 내부에서 eSE 1320에 접근할 수 있는 로컬 경로를 형성할 수 있다. 프로세서 1310은 eSE 1320에 접근하는 경우, 일반 환경 1330이 아닌 보안 환경 1340을 통한 경로를 통해 데이터를 암호화할 수 있고, 보안성을 높일 수 있다.
프로세서 1310은 일반 환경(rich execution environment) 1330 및 보안 환경(trusted execution environment) 1340을 포함할 수 있다.
일반 환경 1330은 보안 업무과 관련성이 적은 통상적인 연산 작업을 수행할 수 있다. 일반 환경 1330은 중앙처리장치(CPU), AP(application processor), 또는 CP(communication processor) 중 하나 또는 그 이상을 포함할 수 있다. 일반 환경 1330은, 예를 들면, 전자 장치 1301의 적어도 하나의 다른 구성요소들(예: 메모리, 통신 인터페이스 등)의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다. 일반 환경 1330은 어플리케이션 레이어 1331, 프레임워크 레이어 1332 및 커널 1333을 포함할 수 있다.
어플리케이션 레이어 1331은 전자 장치(예: 전자 장치 1301)에 관련된 자원을 제어하는 운영 체제(operating system, OS) 및/또는 운영 체제 상에서 구동되는 다양한 어플리케이션을 포함할 수 있다.
프레임워크 레이어 1332는 어플리케이션 레이어 1331로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 프레임워크 레이어 1332는 상기 적어도 하나에 부여된 우선 순위에 따라 상기 하나 이상의 작업 요청들을 처리함으로써, 상기 하나 이상의 작업 요청들에 대한 스케쥴링 또는 로드 밸런싱 등을 수행할 수 있다. 다양한 실시 예에서, 프레임워크 레이어 1332는 보안 환경의 구동에 필요한 라이브러리를 포함할 수 있다.
커널 1333은, 예를 들면, 다른 프로그램들(예: 프레임워크 레이어 1332 또는 어플리케이션 레이어 1331)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스, 프로세서 또는 메모리 등)을 제어 또는 관리할 수 있다. 다양한 실시 예에서, 커널 1333은 보안 환경 1340을 구동하기 위한 드라이버를 포함할 수 있다.
보안 환경 1340은 프로세서 1320 내부에서 일반 환경 1330과 분리된 보안 환경(TEE, trusted execution environment)일 수 있다. 보안 환경 1340은 일반 환경 1330이 eSE 1320과 연결되기 위한 디바이스 내부의 로컬 경로를 형성할 수 있다. 일반 환경 1330의 데이터 중 암호화 과정 등의 보안 과정이 필요한 데이터는 보안 환경 1340을 거쳐 암호화 될 수 있고, eSE 1320에 전송될 수 있다. 다양한 실시 예에서, 보안 환경 1340은 eSE 1320과 공유된 키(secret key)를 가질 수 있고, 상기 키를 이용하여 eSE 1320과 직접적으로 암호화된 데이터를 송수신할 수 있다. 보안 환경 1340은 어플리케이션 레이어 1341, 프레임워크 레이어 1342 및 커널 1343을 포함할 수 있다.
어플리케이션 레이어 1341은 통상적인 데이터와 달리 상대적으로 높은 수준의 보안 수준을 요구하는 어플리케이션을 포함할 수 있다. 예를 들어, 어플리케이션 레이어 1341은 오프라인 결제 앱, 사용자 인증 앱(예: 지문 인식, 홍채 인식 등 생체 인식 앱) 등을 포함할 수 있다.
프레임워크 레이어 1342는 어플리케이션 레이어 1331로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 프레임워크 레이어 1342는 eSE 1320에 전송하는 데이터를 암호화하는 기능을 수행할 수 있다. 프레임워크 레이어 1342는 보안 프로토콜(SP, secure protocol) 모듈 1345 및 APDU(application protocol data unit) 통신 엔진 1346을 포함할 수 있다. APDU 통신 엔진 1346은 ISO 19816-4에서 규정한 메시지 규격에 따라 통신을 수행할 수 있다.
보안 프로토콜 모듈 1345는 어플리케이션 레이어 1331로부터 수신된 하나 이상의 작업 요청들을 eSE 1320과 공유된 키를 통해 암호화 하는 모듈일 수 있다. 상기 키는 프로비저닝(provisioning) 과정 등을 통해 공유될 수 있다. 다양한 실시 예에서, 어플리케이션 레이어 1341에서 제공되는 일부 데이터는 보안 프로토콜 모듈 1345를 통해 암호화 될 수 있고, 다른 일부는 보안 프로토콜 모듈 1345를 통과하지 않고, 별도의 암호화 과정 없이 APDU 통신 엔진 1346으로 제공될 수 있다. 보안 프로토콜 모듈 1345를 통해 암호화 되는 데이터는 보안 필요성 정도에 따라 결정될 수 있다.
APDU 통신 엔진 1346은 eSE 1320에서 인식할 수 있는 포맷(format)으로 데이터를 변환하는 모듈일 수 있다.
커널 1343은 예를 들면, 다른 프로그램들(예: 프레임워크 레이어 1342 또는 어플리케이션 레이어 1341)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스, 프로세서 또는 메모리 등)을 제어 또는 관리할 수 있다. 다양한 실시 예에서, 커널 1343은 eSE 드라이버 1347을 포함할 수 있다. eSE 드라이버 1347은 eSE 1320에 연결하기 위한 인터페이스를 수행할 수 있다.
물리적 채널 1350은 프로세서 1310 내의 보안 환경 1340과 eSE 1320 사이의 데이터를 전송할 수 있다. 물리적 채널 1350은 프로세서 1310이 외부 네트워크(예: 무선 인터넷)에 영향을 받지 않고, eSE 1320를 직접 제어할 수 있는 로컬 경로를 형성할 수 있다. 프로세서 1310은 물리적 채널 1350을 통해 별도의 NFC 모듈 등을 거치지 않고, 직접 제어 신호를 송수신할 수 있고, 제어 신호에 대응하는 결과를 eSE 1320으로부터 수신할 수 있다. 다양한 실시 예에서, 물리적 채널 1350은 물리적인 도선으로 구현될 수 있다. 상기 물리적 채널 1350은 (serial peripheral interface), RS232, I2C(Inter-Integrated Circuit) 등으로 구현될 수 있다.
도 14는 다양한 실시 예에 따른 일반 네트워크 경로와 로컬 경로를 포함하는 전자 장치의 구성도 이다.
도 14를 참조하면, 전자 장치 1401은 프로세서 1410 및 eSE 1420을 포함할 수 있다. 전자 장치 1401은 프로세서 1410 및 eSE 1420을 연결하기 위한 물리적 채널 1450을 더 포함할 수 있다. 전자 장치 1401은 eSE 1420에 접근하기 위한 경로로서, 도 13의 전자 장치 1301의 로컬 경로(보안 환경 1440 및 물리적 채널 1450을 포함하는 경로)와 NFC 통신 모듈 1465를 통한 일반 네트워크 경로를 포함할 수 있다.
프로세서 1410은 일반 환경 1430 및 보안 환경 1440을 포함할 수 있다. 일반 환경 1430은 일반 네트워크 경로 1460을 형성할 수 있다. 일반 네트워크 경로 1460은 TSM 서버 1402에서 네트워크 모듈 1461, 일반 환경 1430(어플리케이션 1462, APDU 통신 엔진 1463, NFC 드라이버 1464) 및 NFC 모듈 1465를 통해 신호가 전송되는 경로일 수 있다.
예를 들어, TSM 서버 1402는 전자 장치 1402가 조립되는 단계에서, eSE 제조업체에 키를 제공하여 eSE 1420에 상기 키가 삽입되도록 할 수 있다. TSM 서버 1402는 eSE 1420에 저장된 키와 대응하는 키를 가질 수 있다. 대칭키 방식(Symmetric key)일 경우, eSE의 키와 TSM의 키는 동일할 수 있고, 비대칭키 방식(Asymmetric Key)일 경우, eSE와 TSM은 각각 Public Key와 Private Key를 보유할 수 있다.
TSM 서버 1402에서 eSE 1420으로 제어 명령을 송신하는 경우, TSM 서버 1402는 eSE 1420에 대응되는 Key를 이용하여 암호화하여 데이터를 전송할 수 있다. eSE 1420은 암호화된 제어 명령을 보유한 Key를 이용하여 복호화 할 수 있고, 성공적으로 복호화된 경우 제어 명령을 수행 할 수 있다.
도 15a는 다양한 실시 예에 따른 eSE의 프로비저닝(provisioning) 방법을 설명하는 신호 흐름도이다. 프로비저닝 과정은 프로세서 1310과 eSE 1320 사이에 키를 공유하는 과정일 수 있다.
도 15a를 참조하면, 동작 1510에서, 프로세서 1501은 프로비저닝 이벤트를 수신할 수 있다. 프로비저닝 이벤트는 프로비저닝 과정을 시작하기 위한 시작 신호일 수 있다. 다양한 실시 예에서, 상기 프로비저닝 이벤트는 외부 장치로부터 프로비저닝 요청을 수신하는 이벤트일 수 있다. 상기 프로비저닝 요청은 키 생성 관리 장치의 AT command, 또는 eSE 1502의 관리 권한을 가지는 외부 서버의 OTA(over the air) 메시지일 수 있다.
다양한 실시 예에 따르면, 상기 프로비저닝 이벤트는 전자 장치 1301 내부에서 발생하는 지정된 이벤트일 수 있다. 예를 들어, 상기 프로비저닝 이벤트는 상기 전자 장치 1301의 부팅(booting)시 eSE 1502가 키를 저장하지 않은 경우, 상기 전자 장치 1301의 부팅(booting)시 프로비저닝을 수행한 이력 정보를 나타내는 플래그를 체크(flag check)한 이력이 없는 경우, 또는 eSE 1502의 사용 요청을 받아 연결 요청을 하였을 때, 키가 저장되지 않은 경우 중 적어도 하나일 수 있다.
프로세서 1501은 eSE 1502가 사전에 키를 가지고 있는 경우, 프로비저닝 절차를 종료하고, 키를 가지고 있지 않은 경우, 동작 1520 내지 1580의 프로비저닝 절차를 계속할 수 있다.
동작 1520에서, 프로세서 1501은 상기 프로비저닝 이벤트에 따라 키 교환 요청을 eSE 1502에 송신할 수 있다. 다양한 실시 예에서, 상기 키 교환 요청은 알고리즘 식별자, 프로세스 식별자, 지정된 보안 알고리즘에 따른 공개키 등을 포함할 수 있다.
동작 1530에서, eSE 1502는 지정된 조건(예: 저장된 키가 있는지 여부 또는 eSE의 상태 정보 등)를 확인하여 제1 키를 생성하고 저장할 수 있다. 예를 들어, eSE 1502는 미리 설정된 키가 없고, eSE 1502이 차단(blocked) 상태 또는 중단(terminated) 상태가 아닌 경우, 제1 키를 생성하고 저장할 수 있다. 에러 코드를 프로세서 1501에 송신할 수 있다. 상기 조건에 관한 정보는 도 16를 통해 제공될 수 있다. 다양한 실시 예에서, eSE 1320은 프로세서 식별자, eSE 식별자 등을 기반으로 KDF(key derivation function)를 계산하여 키를 생성하고 저장할 수 있다.
동작 1540에서, eSE 1502는 프로세서 1501에 키 교환 응답을 송신할 수 있다. 상기 키 교환 응답은 키의 생성 및 저장이 성공이면 성공 코드를 포함할 수 있고, 키의 생성 및 저장이 실패이면, 에러 코드를 포함할 수 있다. 다양한 실시 예에서, eSE 1502는 프로세서 1501과의 키 교환을 위해 생성된 키(예: 공개키)와 MAC 데이터를 응답으로 송신할 수 있다. eSE 1502는 데이터 무결성 검증을 위해 eSE 1502의 개인 키로 서명을 하여 상기 응답을 송신할 수 있다.
동작 1550에서, 프로세서 1501은 상기 키 교환 응답에 대응하여 동작할 수 있다. 프로세서 1501은 성공 코드를 수신한 경우, 프로세스 식별자, eSE 식별자 등을 인자로 KDF를 계산하여 제2 키를 생성 후 저장할 수 있다. 반면, 프로세서 1501은 에러 코드를 수신한 경우, 키의 생성 및 저장이 실패한 이유(예: 키가 이미 존재, eSE 1502의 상태가 차단 상태 등)를 확인할 수 있다. 프로세서 1501은 각각의 에러 코드에 대응하는 동작(예: 대기, 재시행, 리셋, 또는 사용자가 알 수 있도록 소리 또는 디스플레이 중 적어도 하나 이상의 방법을 이용한 알림 등을 수행할 수 있다. 다양한 실시 예에서, 프로세서 1501은 eSE 1502로부터 전송받은 MAC 데이터를 프로세서 1501에 의해 직접 생성된 MAC 데이터와 비교하여, 각각의 구성에서 생성된 키의 유효성을 확인할 수 있다. 이와 유사한(또는 대응되는) 동작이 동작 1570에서 eSE 1502에 의해 수행될 수 있다. 다양한 실시 예에서, eSE 1502의 개인 키로 서명된 응답을 수신한 경우, 프로세서 1501은 eSE 1502의 개인 키에 대응되는 공개 키로 서명을 검증할 수 있다.
동작 1560에서, 프로세서 1501은 키 생성 및 저장이 완료 된 후, MAC 데이터를 이용하여, 키 확인 요청을 eSE 1502에 송신할 수 있다. 다양한 실시 예에서, 데이터 무결성 검증을 위해 프로세서 1501의 개인 키로 서명을 하여 키 확인 요청을 eSE 1502에 송신할 수 있다.
동작 1570에서, eSE 1320은 전송 받은 MAC 데이터를 직접 생성한 MAC 데이터와 비교하여, 각각에서 생성된 키의 유효성을 확인할 수 있다. 이 경우에도, 전술한 방식과 유사하게 프로세서 1501의 개인 키에 대응되는 공개 키로 서명을 검증할 수 있다.
동작 1580에서, eSE 1320은 상기 비교 결과에 따라 키 확인 응답을 송신할 수 있다.
도 15b는 다양한 실시 예에 따른 프로비저닝 과정 이전에 수행되는 인증 과정을 설명하는 흐름도이다.
도 15b를 참조하면, 프로세서 1501(예: 보안 환경)과 eSE 1502는 프로비저닝 과정을 진행하기 이전에 상대 장치가 신뢰할 수 있는 대상인지를 확인하기 위한 상호 인증 과정을 수행할 수 있다. 프로세서 1501과 eSE 1502는 상호 인증을 위해 인증서 교환과 서명 확인을 수행할 수 있다.
다양한 실시 예에 따르면, 프로세서 1501은 제1 인증서를 저장할 수 있다. 상기 제1 인증서는 프로세서 1501를 포함하는 전자 장치를 특정하는 인증서(예: DRK(device root key) 인증서)일 수 있다. eSE 1502는 제2 인증서를 저장할 수 있다. 상기 제2 인증서는 eSE 1502를 특정하는 인증서(예: SSP(Secure Session Protocol)서비스 인증서)일 수 있다.
다양한 실시 예에 따르면, eSE 1502는 상기 제1 인증서를 검증(verification)할 수 있는 제3 인증서를 저장할 수 있다. 상기 제3 인증서는 전자 장치 제조사의 루트 인증서일 수 있다. 프로세서 1501은 상기 제2 인증서를 검증(verification)할 수 있는 제4 인증서를 저장할 수 있다. 상기 제4 인증서는 eSE 제조사의 루트 인증서일 수 있다.
다양한 실시 예에 따르면, 프로세서 1501를 포함하는 전자 장치를 제조하는 시점에, 프로세서 1501은 상기 제1 인증서, 제3 인증서 및 제4 인증서를 저장할 수 있다. 또한, eSE 1502를 제조하는 하는 시점(전자 장치에 장착되기 이전)에, eSE 1502는 상기 제2 인증서, 제3 인증서 및 제4 인증서를 저장할 수 있다.
동작 1581에서, 프로세서 1501은 프로비저닝 이벤트를 수신할 수 있다. 프로비저닝 이벤트는 프로비저닝 과정을 시작하기 위한 시작 신호로서, 외부 장치로부터 수신되거나, 프로세서 1501을 포함하는 전자 장치의 내부에서 발생할 수 있다.
동작 1582에서, 프로세서 1501은 저장된 제1 인증서를 이용하여, 채널 인증서(예, SSP(Secure Session Protocol)서비스 인증서)를 생성할 수 있다. 다양한 실시 예에 따르면, 프로세서 1501을 포함하는 전자 장치의 제조 시점에 상기 채널 인증서가 미리 저장될 수도 있다.
다양한 실시 예에서 상기 채널 인증서는, 장치 인증서인 제1 인증서에 대응되는 개인키로 서명(signed)되어 생성될 수 있다. 다양한 실시 예에서, 상기 채널 인증서는 다양한 방식의 서명 방법(예, RSA서명방식, ECC서명방식)으로 서명될 수 있다. 채널 인증서는 지정된 eSE 1502와 보안 채널을 형성하기 위한 인증서일 수 있다. 프로세서 1501은 채널 인증서와 채널 인증서에 대응하는 개인키를 생성할 수 있다.
동작 1583에서, 프로세서 1501은 제1 인증서 및 채널 인증서를 eSE 1502에 전송할 수 있다.
동작 1584에서, eSE 1502는 미리 저장된 제3 인증서를 이용하여, 수신한 제1 인증서를 검증할 수 있다. 상기 제3 인증서는 전자 장치 제조사의 루트 인증서일 수 있다. 다양한 실시 예에서, 상기 제3 인증서는 eSE 1502를 제조하는 하는 시점(전자 장치에 장착되기 이전)에 미리 저장될 수 있다.
다양한 실시 예에서, eSE 1502는 제3 인증서에 포함된 공개키를 이용하여, 제1 인증서의 서명(signature)을 확인(unsign)하여 제1 인증서를 검증할 수 있다.
동작 1585에서, eSE 1502는 검증된 제1 인증서를 이용하여 채널 인증서를 검증할 수 있다. 다양한 실시 예에서, eSE 1502는 제1 인증서에 포함된 공개키를 이용하여, 채널 인증서의 서명을 확인(unsign)하여 채널 인증서를 검증할 수 있다.
동작 1586에서, eSE 1502는 상기 제1 인증서 및 채널 인증서가 유효한 경우, 확인 신호를 프로세서 1501에 전송할 수 있다.
동작 1587에서, 프로세서 1501은 제2 인증서를 요청하는 신호를 eSE 1502에 송신할 수 있다.
동작 1588에서, eSE 1502는 프로세서 1501에 제2 인증서(예, SSP(Secure Session Protocol)서비스 인증서)를 송신할 수 있다.
동작 1589에서, 프로세서 1501은 미리 저장된 제4 인증서를 이용하여 eSE 1502로부터 수신한 제2 인증서를 검증할 수 있다. 상기 제4 인증서는 eSE 제조사의 루트 인증서일 수 있다. 다양한 실시 예에서, 상기 제4 인증서는 프로세서 1501를 포함하는 전자 장치를 제조하는 시점에 미리 메모리에 저장될 수 있다.
다양한 실시 예에서, 프로세서 1501은 제4 인증서에 포함된 공개키를 이용하여, 제2 인증서의 서명을 확인(unsign)하여 제2 인증서를 검증할 수 있다.
동작 1590에서, 프로세서 1501 및 eSE 1502는 채널 인증서 및 보안 채널 인증서를 이용하여 프로비저닝 과정을 수행할 수 있다. 프로세서 1501 및 eSE 1502는 각각의 인증서에 대응하는 개인키로 키 교환 요청, 키 교환 응답, 키 확인 요청, 키 확인 응답 등의 메시지를 서명하여, 메시지의 무결성을 확인할 수 있다.
다양한 실시 예에서, 프로세서 1501 및 eSE 1502는 세션 통신 과정 또는 리셋 과정, Reset 과정에서 각각 랜덤하게 생성한 공개키와 서로 주고 받은 인증서에 대응하는 개인키를 이용해서 메시지를 서명하여, 무결성을 확인하고, 제1 키 및 제2 키를 생성/저장 할 수 있다.
도 16은 다양한 실시 예에 따른 eSE의 키 생성 과정에 관한 순서도이다.
도 16를 참조하면, 동작 1610에서, eSE 1502는 프로세서 1501로부터 키 교환 요청을 수신할 수 있다. 상기 키 교환 요청은 알고리즘 식별자, 프로세스 식별자, 지정된 보안 알고리즘에 따른 공개키 등을 포함할 수 있다.
동작 1620에서, eSE 1502는 eSE의 차단(blocked) 상태 또는 중단(terminated) 상태인지 여부를 확인할 수 있다. 상기 차단 상태는 eSE 1502의 리셋 과정이 지정된 횟수(예: 5회)이상 실패한 상태일 수 있다. 상기 중단 상태는 eSE 1502가 critical attack(예: 물리적 손상 등)에 의해 동작이 중단된 상태일 수 있다.
동작 1630에서, eSE 1502는 차단 상태 또는 중단 상태가 아닌 경우, 이전에 저장된 키가 있는지 여부를 확인할 수 있다.
동작 1640에서, eSE 1502는 차단 상태 또는 중단 상태이거나 기존의 키가 있는 경우, 키 교환 응답에 에러 코드로 회신할 수 있다. 다양한 실시 예에서, 상기 동작 1620과 1630은 동시에 진행되거나 순서가 바뀔 수 있다.
동작 1650에서, eSE 1502는 별도의 저장된 키가 없는 경우, 키를 생성 후 저장할 수 있다. eSE 1502는 프로세서 식별자, eSE 식별자 등을 기반으로 KDF(key derivation function)를 계산하여 키를 생성하고 저장할 수 있다.
동작 1660에서, eSE 1502는 키 교환 응답으로 프로세스 1501에 성공 코드로 회신할 수 있다.
도 17는 다양한 실시 예에 따른 eSE의 키 리셋 과정을 설명하는 신호 흐름도이다. 다양한 실시 예에서, 프로세서 1701과 eSE 1702는 물리적 채널 1350을 통해 리셋 관련 요청 및 대응에 관한 신호를 송수신 할 수 있다.
도 17를 참조하면, 동작 1710에서, 프로세서 1701은 외부 장치(예 보안 안전 장치, 서비스 서버 등) 1702로부터 리셋 요청을 수신할 수 있다. 상기 리셋 요청은 외부 장치의 AT command, 또는 eSE 1502의 관리 권한을 가지는 외부 서버의 OTA(over the air) 메시지일 수 있다.
동작 1720에서, 프로세서 1701은 리셋 권한 확인을 위한 랜덤 넘버의 생성을 eSE 1703에 요청할 수 있다. 다양한 실시 예에서, 프로세서 1701은 APDU의 스펙에 맞춘 데이터 양식으로 랜덤 넘버의 생성을 요청할 수 있다. 예를 들면, 프로세서 1701은 데이터 필드를 채우지 않고, 헤더의 파라미터만을 이용하여 데이터를 생성하고 전송할 수 있다.
동작 1730에서, eSE 1703은 랜덤 넘버 생성 요청에 따른 상기 랜덤 넘버를 생성하고 저장할 수 있다. eSE 1703은 외부 장치 1702와 미리 공유된 공개 키를 이용하여 생성한 랜덤 넘버를 암호화할 수 있다.
동작 1740에서, eSE 1703은 암호화된 랜덤 넘버를 프로세서 1701에 회신할 수 있다. 상기 랜덤 넘버는 물리적 채널 1350을 통해 송신될 수 있다.
동작 1750에서, 프로세서 1701은 암호화된 랜덤 넘버를 외부 장치 1702에 송신할 수 있다.
동작 1760에서, 외부 장치 1702는 공개 키에 대응하는 프라이빗 키를 이용하여 암호화된 랜덤 넘버를 복호화 할 수 있다. 다양한 실시 예에서, 프로세서 1701에 리셋 요청을 하는 외부 장치와 상기 랜덤 넘버를 복호화하는 외부 장치는 서로 다를 수 있다. 예를 들어, 제1 외부 장치는 프로세서 1701에 리셋 요청을 할 수 있다. 이후, 제1 외부 장치는 프로세서 1701로부터 암호화된 랜덤 넘버를 수신한 경우, 프라이빗 키를 가지는 제2 전자 장치에 상기 랜덤 넘버의 복호화를 요청하고 이에 대한 응답을 수신할 수 있다.
동작 1770에서, 외부 장치 1702는 프로세서 1701에 복호화된 랜덤 넘버를 송신할 수 있다.
동작 1780에서, 프로세서 1701은 복호화된 랜덤 넘버를 기반으로 eSE 1320에 리셋을 요청할 수 있다.
동작 1790에서, eSE 1703은 수신한 복호화된 랜덤 넘버를 저장된 랜덤 넘버와 비교하여 지정된 조건에 따라 키 삭제 여부를 결정할 수 있다. 예를 들어, eSE 1703은 수신한 복호화된 랜덤 넘버를 저장된 랜덤 넘버가 일치하는 경우, 키를 삭제하고, 설치된 applet에 리셋 이벤트를 전송할 수 있다. 상기 지정된 조건에 관한 정보는 도 18을 통해 제공될 수 있다.
동작 1795에서, eSE 1703은 프로세서 키 삭제 여부에 관한 응답을 제공할 수 있다.
동작 1798에서, 프로세서 1701은 키 삭제 여부에 관한 결과를 확인하고, 대응하는 조치 취할 수 있다. 예를 들어, 프로세서 1701은 성공한 경우, 저장된 키를 삭제할 수 있다.
도 18은 다양한 실시 예에 따른 eSE의 키 리셋 과정을 설명하는 순서도이다.
도 18을 참조하면, 동작 1810에서, eSE 1703은 프로세스 1701으로부터 리셋 요청을 수신할 수 있다. 프로세서 1701은 외부 장치 1701을 통해 복호화된 랜덤 넘버를 eSE 1703에 송신할 수 있다.
동작 1820에서, eSE 1703은 저장된 랜덤 넘버와 복호화되어 제공된 랜덤 넘버가 동일한지 여부를 확인할 수 있다.
동작 1830에서, 랜덤 넘버가 동일한 경우, eSE 1703은 키를 리셋하고, eSE 1703의 상태를 리셋 상태로 변경할 수 있다.
동작 1840에서, eSE 1703은 랜덤 넘버가 일치하지 않는 경우, 실패 횟수의 카운트를 13 증가시킬 수 있다.
동작 1850에서, eSE 1703은 실패 횟수가 정해진 값(예: 5회) 이상인지 여부를 확인할 수 있다.
동작 1860에서, eSE 1703은 실패 횟수가 정해진 값(예: 5회) 미만인 경우, 현재의 키를 유지하고, 키가 변경되지 않았음을 프로세서 1701에 알릴 수 있다.
동작 1870에서, eSE 1703은 실패 횟수가 정해진 값(예: 5회) 이상인 경우, eSE 1320의 상태를 차단 상태로 변경할 수 있다.
도 19은 다양한 실시 예에 따른 eSE의 상태 변화를 나타내는 구성도이다.
도 19을 참조하면, eSE 1320은 선택 가능 상태 1910, 개별화 상태 1920, 리셋 상태 1930, 차단 상태 1940 또는 중단 상태 1950 중 어느 하나의 상태일 수 있다.
선택 가능 상태 1910은 eSE 1320의 키 생성을 대기하는 초기 상태일 수 있다. 개별화 상태 1920은 프로비저닝 절차가 진행되어 eSE 1320에 키가 생성되고 프로세서 1310의 보안 환경 1340과 키가 공유된 상태일 수 있다. 리셋 상태 1930은 리셋 절차가 진행되어 eSE 1320에 키가 삭제된 상태일 수 있다.
상기 차단 상태 1940은 eSE 1320의 리셋 과정이 지정된 횟수(예: 5회)이상 실패한 상태일 수 있다. 상기 중단 상태 1950은 eSE 1320이 critical attack(예: 물리적 손상)에 의해 동작이 중단된 상태일 수 있다.
eSE 1320은 프로비저닝 절차 또는 리셋 절차 등을 통해 상태가 변경될 수 있고, 변경된 상태에 따라 동작할 수 있다. 예를 들어, eSE 1320이 차단 상태 또는 중단 상태인 경우, 프로비저닝 절차가 차단되고, eSE 1320 내부 데이터에 대한 접근이 제한될 수 있다.
도 20은 다양한 실시 예에 따른 프로비저닝 이후, 물리적 채널을 통한 데이터 전송에 관한 신호 흐름도이다. 프로세서 2001은 세션을 시작하여 결제 또는 사용자 인식 정보와 같은 주요 정보를 eSE 2002와 송수신 할 수 있다.
도 20을 참조하면, 동작 2010에서, 프로세서 2001은 eSE 2002가 프로비저닝 된 상태인지 여부를 확인할 수 있다. 상기 프로세서 2001과 eSE 2002가 프로비저닝된 경우에는 공유된 키를 기반으로 데이터를 암호화 하여 송수신할 수 있다.
동작 2020에서, 프로세서 2001는 eSE 2002에 데이터 전송을 시작하기 위한 세션 형성을 시도 할 수 있다. 다양한 실시 예에서, 프로세서 2001은 앱 식별자, eSE의 applet의 식별자 또는 프로세서 2001에서 생성한 제1 세션 랜덤 넘버 등을 기반으로 세션 형성을 시도할 수 있다.
동작 2030에서, eSE 2002는 상기 세션 형성 시도에 대해 응답 신호를 송신할 수 있다. eSE 2002는 제2 세션 랜덤 넘버를 생성하여 상기 세션 생성 요청의 MAC 데이터와 함께 응답할 수 있다.
동작 2040에서, 프로세서 2002는 세션 시작 요청을 송신할 수 있다. 프로세서 2002는 제1 세션 시작 벡터를 생성하고, 상기 벡터와 상기 세션 시도 응답의 MAC 데이터를 포함하는 세션 시작 요청을 송신할 수 있다.
동작 2050에서, eSE 2002는 프로세서 2001의 세션 시작 요청에 대한 응답 신호를 송신할 수 있다. eSE 2002는 제2 세션 시작 벡터를 생성하고 이에 대한 MAC 데이터로 응답 신호를 송신할 수 있다.
동작 2060에서, 프로세서 2002는 상기 세션을 통해 보안 통신(secure communication)을 수행할 수 있다. 다양한 실시 예에서, 프로세서 2002는 높은 보안 수준이 요구되는 정보(이하, 보안 정보)를 eSE 2002에 별도 저장하여 암호화된 형태로 정보를 송수신하도록 설정될 수 있다. 프로세서 2002는 상기 세션을 통해 보안 정보의 저장을 요청할 수 있다. 상기 보안 정보는 결제 토큰, 지문 정보 등의 생체 인식 정보 또는 암호화 키에 대한 정보를 포함할 수 있다.
다양한 실시 예에 따르면, 프로세서 2001은 보안 정보를 삭제할 수 있다. 보안 정보의 삭제는 eSE에 보안 정보가 저장이 완료 되었을 판단 후 진행 할 수 있다. 프로세서 2001은 보안 정보를 삭제하고 상기 보안 정보를 eSE 2002에만 저장하여 보안성을 높일 수 있다.
동작 2070에서, 프로세서 2001은 세션 종료 요청을 송신할 수 있다.
다양한 실시 예에 따르면, 프로세서 2002는 저장된 정보가 필요한 경우, 마찬가지로, 상기 정보의 저장 위치를 확인하고, 세션을 시작하여 저장된 정보 요청하여 수신할 수 있다. 프로세서 2002는 상기 정보를 수신한 이후에는 상기 세션을 종료할 수 있다. 프로세서 2002는 상기 보안 정보의 사용이 완료되면 이를 즉시 삭제하여 보안성을 강화할 수 있다.
다양한 실시 예에 따르면, 전자 장치는 일반 환경과 보안 환경으로 구분되어 동작하는 프로세서, 메모리, 암호화 키를 저장할 수 있고 상기 메모리와 구별되는 내장형 보안요소(embedded Secure Element; eSE) 및 상기 보안 환경과 상기 내장형 보안 요소를 직접 연결하는 채널을 포함할 수 있다.
다양한 실시 예에 따르면, 상기 보안 환경은 상기 암호화 키를 관리하는 보안 프로토콜 모듈 및 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 키에 대한 정보와 비교하여, 그 판단 결과를 상기 보안 환경으로 전송하는 동작을 더 포함할 수 있다.
도 21은 다양한 실시 예에 따른 네트워크 환경 내의 전자 장치이다.
도 21을 참조하여, 다양한 실시 예에서의, 네트워크 환경 2100 내의 전자 장치 2101가 기재된다. 전자 장치 2101는 버스 2110, 프로세서 2120, 메모리 2130, 입출력 인터페이스 2150, 디스플레이 2160, 및 통신 인터페이스 2170를 포함할 수 있다. 어떤 실시 예에서는, 전자 장치 2101는, 구성요소들 중 적어도 하나를 생략하거나 다른 구성요소를 추가적으로 구비할 수 있다.
버스 2110는, 예를 들면, 구성요소들 2110-2170을 서로 연결하고, 구성요소들 간의 통신(예: 제어 메시지 및/또는 데이터)을 전달하는 회로를 포함할 수 있다.
프로세서 2120는, 중앙처리장치(central processing unit(CPU)), 어플리케이션 프로세서(application processor(AP)), 또는 커뮤니케이션 프로세서(communication processor(CP)) 중 하나 또는 그 이상을 포함할 수 있다. 프로세서 2120는, 예를 들면, 전자 장치 2101의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
메모리 2130는, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리 2130는, 예를 들면, 전자 장치 2101의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 한 실시 예에 따르면, 메모리 2130는 소프트웨어 및/또는 프로그램 2140을 저장할 수 있다. 프로그램 2140은, 예를 들면, 커널 2141, 미들웨어 2143, 어플리케이션 프로그래밍 인터페이스(application programming interface(API)) 2145, 및/또는 어플리케이션 프로그램(또는 "어플리케이션") 2147 등을 포함할 수 있다. 커널 2141, 미들웨어 2143, 또는 API 2145의 적어도 일부는, 운영 시스템(operating system(OS))으로 지칭될 수 있다.
커널 2141은, 예를 들면, 다른 프로그램들(예: 미들웨어 2143, API 2145, 또는 어플리케이션 프로그램 2147)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스 2110, 프로세서 2120, 또는 메모리 2130 등)을 제어 또는 관리할 수 있다. 또한, 커널 2141은 미들웨어 2143, API 2145, 또는 어플리케이션 프로그램 2147에서 전자 장치 2101의 개별 구성요소에 접근함으로써, 시스템 리소스들을 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다.
미들웨어 2143는, 예를 들면, API 2145 또는 어플리케이션 프로그램 2147이 커널 2141과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다.
또한, 미들웨어 2143는 어플리케이션 프로그램 2147으로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 예를 들면, 미들웨어 2143는 어플리케이션 프로그램 2147 중 적어도 하나에 전자 장치 2101의 시스템 리소스(예: 버스 2110, 프로세서 2120, 또는 메모리 2130 등)를 사용할 수 있는 우선 순위를 부여할 수 있다. 예컨대, 미들웨어 2143는 상기 적어도 하나에 부여된 우선 순위에 따라 상기 하나 이상의 작업 요청들을 처리함으로써, 상기 하나 이상의 작업 요청들에 대한 스케쥴링 또는 로드 밸런싱 등을 수행할 수 있다.
API 2145는, 예를 들면, 어플리케이션 2147이 커널 2141 또는 미들웨어 2143에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어, 창 제어, 영상 처리, 또는 문자 제어 등을 위한 적어도 하나의 인터페이스 또는 함수(예: 명령어)를 포함할 수 있다.
입출력 인터페이스 2150는, 예를 들면, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 전자 장치 2101의 다른 구성요소(들)에 전달할 수 있는 인터페이스의 역할을 할 수 있다. 또한, 입출력 인터페이스 2150는 전자 장치 2101의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다.
디스플레이 2160는, 예를 들면, 액정 디스플레이(liquid crystal display(LCD)), 발광 다이오드(light-emitting diode(LED)) 디스플레이, 유기 발광 다이오드(organic light-emitting diode(OLED)) 디스플레이, 또는 마이크로 전자기계 시스템(microelectromechanical systems(MEMS)) 디스플레이, 또는 전자종이(electronic paper) 디스플레이를 포함할 수 있다. 디스플레이 2160는, 예를 들면, 사용자에게 각종 콘텐츠(예: 텍스트, 이미지, 비디오, 아이콘, 또는 심볼 등)을 표시할 수 있다. 디스플레이 2160는, 터치 스크린을 포함할 수 있으며, 예를 들면, 전자 펜 또는 사용자의 신체의 일부를 이용한 터치, 제스쳐, 근접, 또는 호버링 입력을 수신할 수 있다.
통신 인터페이스 2170는, 예를 들면, 전자 장치 2101와 외부 장치(예: 제 1 외부 전자 장치 2102, 제 2 외부 전자 장치 2104, 또는 서버 2106) 간의 통신을 설정할 수 있다. 예를 들면, 통신 인터페이스 2170는 무선 통신 또는 유선 통신을 통해서 네트워크 2162에 연결되어 외부 장치(예: 제 2 외부 전자 장치 2104 또는 서버 2106)와 통신할 수 있다.
무선 통신은, 예를 들면, 셀룰러 통신 프로토콜로서, 예를 들면, LTE(long-term evolution), LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband), 또는 GSM(Global System for Mobile Communications) 등 중 적어도 하나를 사용할 수 있다. 또한, 무선 통신은, 예를 들면, 근거리 통신 2164을 포함할 수 있다. 근거리 통신 2164은, 예를 들면, WiFi(wireless fidelity), 블루투스(Bluetooth), NFC(near field communication), 또는 GNSS(global navigation satellite system) 등 중 적어도 하나를 포함할 수 있다. GNSS는 사용 지역 또는 대역폭 등에 따라, 예를 들면, GPS(Global Positioning System), Glonass(Global Navigation Satellite System), Beidou Navigation Satellite System(이하 "Beidou") 또는 Galileo, the European global satellite-based navigation system 중 적어도 하나를 포함할 수 있다. 이하, 본 문서에서는, "GPS"는 "GNSS"와 혼용되어 사용(interchangeably used)될 수 있다. 유선 통신은, 예를 들면, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard232, 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 네트워크 2162는 통신 네트워크(telecommunications network), 예를 들면, 컴퓨터 네트워크(computer network)(예: LAN 또는 WAN), 인터넷, 또는 전화 망(telephone network) 중 적어도 하나를 포함할 수 있다.
제 1 및 제 2 외부 전자 장치 2102, 2104 각각은 전자 장치 2101와 동일한 또는 다른 종류의 장치일 수 있다. 한 실시 예에 따르면, 서버 2106는 하나 또는 그 이상의 서버들의 그룹을 포함할 수 있다. 다양한 실시 예에 따르면, 전자 장치 2101에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 전자 장치(예: 전자 장치 2102,2104, 또는 서버 2106에서 실행될 수 있다. 한 실시 예에 따르면, 전자 장치 2101가 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치 2101는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 다른 장치(예: 전자 장치 2102, 2104, 또는 서버 2106)에게 요청할 수 있다. 다른 전자 장치(예: 전자 장치 2102, 2104, 또는 서버 2106)는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치 2101로 전달할 수 있다. 전자 장치 2101는 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
도 22는 다양한 실시 예에 따른 전자 장치 2201의 블록도이다. 전자 장치 2201는, 예를 들면, 도 21에 도시된 전자 장치 2101의 전체 또는 일부를 포함할 수 있다. 전자 장치 2201는 하나 이상의 프로세서(예: AP(application processor)) 2210, 통신 모듈 2220, (가입자 식별 모듈 2224, 메모리 2230, 센서 모듈 2240, 입력 장치 2250, 디스플레이 2260, 인터페이스 2270, 오디오 모듈 2280, 카메라 모듈 2291, 전력 관리 모듈 2295, 배터리 2296, 인디케이터 2297, 및 모터 2298 를 포함할 수 있다.
프로세서 2210는, 예를 들면, 운영 체제 또는 응용 프로그램을 구동하여 프로세서 2210에 연결된 다수의 하드웨어 또는 소프트웨어 구성요소들을 제어할 수 있고, 각종 데이터 처리 및 연산을 수행할 수 있다. 프로세서 2210는, 예를 들면, SoC(system on chip) 로 구현될 수 있다. 한 실시 예에 따르면, 프로세서 2210는 GPU(graphic processing unit) 및/또는 이미지 신호 프로세서(image signal processor)를 더 포함할 수 있다. 프로세서 2210는 도 22에 도시된 구성요소들 중 적어도 일부(예: 셀룰러 모듈 2221)를 포함할 수도 있다. 프로세서 2210 는 다른 구성요소들(예: 비휘발성 메모리) 중 적어도 하나로부터 수신된 명령 또는 데이터를 휘발성 메모리에 로드(load)하여 처리하고, 다양한 데이터를 비휘발성 메모리에 저장(store)할 수 있다.
통신 모듈 2220은, 도 21의 통신 인터페이스 2170와 동일 또는 유사한 구성을 가질 수 있다. 통신 모듈 2220은, 예를 들면, 셀룰러 모듈 2221, WiFi 모듈 2223, 블루투스 모듈 2225, GNSS 모듈 2227(예: GPS 모듈, Glonass 모듈, Beidou 모듈, 또는 Galileo 모듈), NFC 모듈 2228 및 RF(radio frequency) 모듈 2229를 포함할 수 있다.
셀룰러 모듈 2221은, 예를 들면, 통신망을 통해서 음성 통화, 영상 통화, 문자 서비스, 또는 인터넷 서비스 등을 제공할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈 2221은 가입자 식별 모듈(예: SIM 카드) 2224을 이용하여 통신 네트워크 내에서 전자 장치 2201의 구별 및 인증을 수행할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈 2221은 프로세서 2210가 제공할 수 있는 기능 중 적어도 일부 기능을 수행할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈 2221은 커뮤니케이션 프로세서(CP: communication processor)를 포함할 수 있다.
WiFi 모듈 2223, 블루투스 모듈 2225, GNSS 모듈 2227 또는 NFC 모듈 2228 각각은, 예를 들면, 해당하는 모듈을 통해서 송수신되는 데이터를 처리하기 위한 프로세서를 포함할 수 있다. 어떤 실시 예에 따르면, 셀룰러 모듈 2221, WiFi 모듈 2223, 블루투스 모듈 2225, GNSS 모듈 2227 또는 NFC 모듈 2228 중 적어도 일부(예: 두 개 이상)는 하나의 integrated chip(IC) 또는 IC 패키지 내에 포함될 수 있다.
RF 모듈 2229은, 예를 들면, 통신 신호(예: RF 신호)를 송수신할 수 있다. RF 모듈 2229은, 예를 들면, 트랜시버(transceiver), PAM(power amp module), 주파수 필터(frequency filter), LNA(low noise amplifier), 또는 안테나 등을 포함할 수 있다. 다른 실시 예에 따르면, 셀룰러 모듈 2221, WiFi 모듈 2223, 블루투스 모듈 2225, GNSS 모듈 2227 또는 NFC 모듈 2228 중 적어도 하나는 별개의 RF 모듈을 통하여 RF 신호를 송수신할 수 있다.
가입자 식별 모듈 2224은, 예를 들면, 가입자 식별 모듈을 포함하는 카드 및/또는 내장 SIM(embedded SIM)을 포함할 수 있으며, 고유한 식별 정보(예: ICCID(integrated circuit card identifier)) 또는 가입자 정보(예: IMSI(international mobile subscriber identity))를 포함할 수 있다.
메모리 2230(예: 메모리 2130)는, 예를 들면, 내장 메모리 2232 또는 외장 메모리 2234를 포함할 수 있다. 내장 메모리 2232는, 예를 들면, 휘발성 메모리(예: 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 또는 NOR flash 등), 하드 드라이브, 또는 솔리드 스테이트 드라이브(solid state drive(SSD)) 중 적어도 하나를 포함할 수 있다.
외장 메모리 2234는 플래시 드라이브(flash drive), 예를 들면, CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital), MMC(multi-media card) 또는 메모리 스틱(memory stick) 등을 더 포함할 수 있다. 외장 메모리 2234는 다양한 인터페이스를 통하여 전자 장치 2201와 기능적으로 및/또는 물리적으로 연결될 수 있다.
센서 모듈 2240은, 예를 들면, 물리량을 계측하거나 전자 장치 2201의 작동 상태를 감지하여, 계측 또는 감지된 정보를 전기 신호로 변환할 수 있다. 센서 모듈 2240은, 예를 들면, 제스처 센서 2240A, 자이로 센서 2240B, 기압 센서 2240C, 마그네틱 센서 2240D, 가속도 센서 2240E, 그립 센서 2240F, 근접 센서 2240G, 컬러(color) 센서 2240H(예: RGB(red, green, blue) 센서), 생체 센서 2240I, 온/습도 센서 2240J, 조도 센서 2240K, 또는 UV(ultra violet) 센서 2240M 중의 적어도 하나를 포함할 수 있다. 추가적으로 또는 대체적으로(additionally or alternatively), 센서 모듈 2240은, 예를 들면, 후각 센서(E-nose sensor), EMG 센서(electromyography sensor), EEG 센서(electroencephalogram sensor), ECG 센서(electrocardiogram sensor), IR(infrared) 센서, 홍채 센서 및/또는 지문 센서를 포함할 수 있다. 센서 모듈 2240은 그 안에 속한 적어도 하나 이상의 센서들을 제어하기 위한 제어 회로를 더 포함할 수 있다. 어떤 실시 예에서는, 전자 장치 2201는 프로세서 2210의 일부로서 또는 별도로, 센서 모듈 2240을 제어하도록 구성된 프로세서를 더 포함하여, 프로세서 2210가 슬립(sleep) 상태에 있는 동안, 센서 모듈 2240을 제어할 수 있다.
입력 장치 2250는, 예를 들면, 터치 패널(touch panel) 2252, (디지털) 펜 센서(pen sensor) 2254, 키(key) 2256, 또는 초음파(ultrasonic) 입력 장치 2258를 포함할 수 있다. 터치 패널 2252은, 예를 들면, 정전식, 감압식, 적외선 방식, 또는 초음파 방식 중 적어도 하나의 방식을 사용할 수 있다. 또한, 터치 패널 2252은 제어 회로를 더 포함할 수도 있다. 터치 패널 2252은 택타일 레이어(tactile layer)를 더 포함하여, 사용자에게 촉각 반응을 제공할 수 있다.
(디지털) 펜 센서 2254는, 예를 들면, 터치 패널의 일부이거나, 별도의 인식용 쉬트(sheet)를 포함할 수 있다. 키 2256는, 예를 들면, 물리적인 버튼, 광학식 키, 또는 키패드를 포함할 수 있다. 초음파 입력 장치 2258는 마이크(예: 마이크 2288)를 통해, 입력 도구에서 발생된 초음파를 감지하여, 상기 감지된 초음파에 대응하는 데이터를 확인할 수 있다.
디스플레이 2260(예: 디스플레이 2160)는 패널 2262, 홀로그램 장치 2264, 또는 프로젝터 2266를 포함할 수 있다. 패널 2262은, 도 21의 디스플레이 2160와 동일 또는 유사한 구성을 포함할 수 있다. 패널 2262은, 예를 들면, 유연하게(flexible), 투명하게(transparent), 또는 착용할 수 있게(wearable) 구현될 수 있다. 패널 2262은 터치 패널 2252과 하나의 모듈로 구성될 수도 있다. 홀로그램 장치 2264는 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 프로젝터 2266는 스크린에 빛을 투사하여 영상을 표시할 수 있다. 스크린은, 예를 들면, 전자 장치 2201의 내부 또는 외부에 위치할 수 있다. 한 실시 예에 따르면, 디스플레이 2260는 패널 2262, 홀로그램 장치 2264, 또는 프로젝터 2266를 제어하기 위한 제어 회로를 더 포함할 수 있다.
인터페이스 2270는, 예를 들면, HDMI(high-definition multimedia interface) 2272, USB(universal serial bus) 2274, 광 인터페이스(optical interface) 2276, 또는 D-sub(D-subminiature) 2278를 포함할 수 있다. 인터페이스 2270는, 예를 들면, 도 21에 도시된 통신 인터페이스 2170에 포함될 수 있다. 추가적으로 또는 대체적으로(additionally and alternatively), 인터페이스 2270는, 예를 들면, MHL(mobile high-definition link) 인터페이스, SD(secure digital) 카드/MMC(multi-media card) 인터페이스, 또는 IrDA(infrared data association) 규격 인터페이스를 포함할 수 있다.
오디오 모듈 2280은, 예를 들면, 소리(sound)와 전기 신호를 쌍방향으로 변환시킬 수 있다. 오디오 모듈 2280의 적어도 일부 구성요소는, 예를 들면, 도 21 에 도시된 입출력 인터페이스 2145에 포함될 수 있다. 오디오 모듈 2280은, 예를 들면, 스피커 2282, 리시버 2284, 이어폰 2286, 또는 마이크 2288 등을 통해 입력 또는 출력되는 소리 정보를 처리할 수 있다.
카메라 모듈 2291은, 예를 들면, 정지 영상 및 동영상을 촬영할 수 있는 장치로서, 한 실시 예에 따르면, 하나 이상의 이미지 센서(예: 전면 센서 또는 후면 센서), 렌즈, ISP(image signal processor), 또는 플래시(flash)(예: LED 또는 xenon lamp 등)를 포함할 수 있다.
전력 관리 모듈 2295은, 예를 들면, 전자 장치 2201의 전력을 관리할 수 있다. 한 실시 예에 따르면, 전력 관리 모듈 2295은 PMIC(power management integrated circuit), 충전 IC(charger integrated circuit), 또는 배터리 또는 연료 게이지(battery or fuel gauge)를 포함할 수 있다. PMIC는, 유선 및/또는 무선 충전 방식을 가질 수 있다. 무선 충전 방식은, 예를 들면, 자기공명 방식, 자기유도 방식 또는 전자기파 방식 등을 포함하며, 무선 충전을 위한 부가적인 회로, 예를 들면, 코일 루프, 공진 회로, 또는 정류기 등을 더 포함할 수 있다. 배터리 게이지는, 예를 들면, 배터리 2296의 잔량, 충전 중 전압, 전류, 또는 온도를 측정할 수 있다. 배터리 2296는, 예를 들면, 충전식 전지(rechargeable battery) 및/또는 태양 전지(solar battery)를 포함할 수 있다.
인디케이터 2297는 전자 장치 2201 또는 그 일부(예: 프로세서 2210)의 특정 상태, 예를 들면, 부팅 상태, 메시지 상태 또는 충전 상태 등을 표시할 수 있다. 모터 2298는 전기적 신호를 기계적 진동으로 변환할 수 있고, 진동(vibration), 또는 햅틱(haptic) 효과 등을 발생시킬 수 있다. 도시되지는 않았으나, 전자 장치 2201는 모바일 TV 지원을 위한 처리 장치(예: GPU)를 포함할 수 있다. 모바일 TV 지원을 위한 처리 장치는, 예를 들면, DMB(digital multimedia broadcasting), DVB(digital video broadcasting), 또는 미디어플로(mediaFloTM) 등의 규격에 따른 미디어 데이터를 처리할 수 있다.
본 문서에서 기술된 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성요소의 명칭은 전자 장치의 종류에 따라서 달라질 수 있다. 다양한 실시 예에서, 전자 장치는 본 문서에서 기술된 구성요소 중 적어도 하나를 포함하여 구성될 수 있으며, 일부 구성요소가 생략되거나 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 또한, 다양한 실시 예에 따른 전자 장치의 구성요소들 중 일부가 결합되어 하나의 개체(entity)로 구성됨으로써, 결합되기 이전의 해당 구성요소들의 기능을 동일하게 수행할 수 있다.
도 23은 다양한 실시 예에 따른 프로그램 모듈의 블록도이다. 한 실시 예에 따르면, 프로그램 모듈 2310(예: 프로그램 2140)은 전자 장치(예: 전자 장치 2101)에 관련된 자원을 제어하는 운영 체제(operating system(OS)) 및/또는 운영 체제 상에서 구동되는 다양한 어플리케이션(예: 어플리케이션 프로그램 2147)을 포함할 수 있다. 운영 체제는, 예를 들면, 안드로이드(android), iOS, 윈도우즈(windows), 심비안(symbian), 타이젠(tizen), 또는 바다(bada) 등이 될 수 있다.
프로그램 모듈 2310은 커널 2320, 미들웨어 2330, 어플리케이션 프로그래밍 인터페이스(application programming interface (API)) 2360, 및/또는 어플리케이션 2370을 포함할 수 있다. 프로그램 모듈 2310의 적어도 일부는 전자 장치 상에 프리로드(preload) 되거나, 외부 전자 장치(예: 전자 장치 2102, 2104, 서버 2106 등)로부터 다운로드(download) 가능하다.
커널 2320(예: 커널 2141)은, 예를 들면, 시스템 리소스 매니저 2321 및/또는 디바이스 드라이버 2323를 포함할 수 있다. 시스템 리소스 매니저 2321는 시스템 리소스의 제어, 할당, 또는 회수 등을 수행할 수 있다. 한 실시 예에 따르면, 시스템 리소스 매니저 2321는 프로세스 관리부, 메모리 관리부, 또는 파일 시스템 관리부 등을 포함할 수 있다. 디바이스 드라이버 2323는, 예를 들면, 디스플레이 드라이버, 카메라 드라이버, 블루투스 드라이버, 공유 메모리 드라이버, USB 드라이버, 키패드 드라이버, WiFi 드라이버, 오디오 드라이버, 또는 IPC(inter-process communication) 드라이버를 포함할 수 있다.
미들웨어 2330는, 예를 들면, 어플리케이션 2370이 공통적으로 필요로 하는 기능을 제공하거나, 어플리케이션 2370이 전자 장치 내부의 제한된 시스템 자원을 효율적으로 사용할 수 있도록 API 2360를 통해 다양한 기능들을 어플리케이션 2370으로 제공할 수 있다. 한 실시 예에 따르면, 미들웨어 2330(예: 미들웨어 2143)는 런타임 라이브러리 2335, 어플리케이션 매니저(application manager) 2341, 윈도우 매니저(window manager) 2342, 멀티미디어 매니저(multimedia manager) 2343, 리소스 매니저(resource manager) 2344, 파워 매니저(power manager) 2345, 데이터베이스 매니저(database manager) 2346, 패키지 매니저(package manager) 2347, 연결 매니저(connectivity manager) 2348, 통지 매니저(notification manager) 2349, 위치 매니저(location manager) 2350, 그래픽 매니저(graphic manager) 2351, 또는 보안 매니저(security manager) 2352 중 적어도 하나를 포함할 수 있다.
런타임 라이브러리 2335는, 예를 들면, 어플리케이션 2370이 실행되는 동안에 프로그래밍 언어를 통해 새로운 기능을 추가하기 위해 컴파일러가 사용하는 라이브러리 모듈을 포함할 수 있다. 런타임 라이브러리 2335는 입출력 관리, 메모리 관리, 또는 산술 함수에 대한 기능 등을 수행할 수 있다.
어플리케이션 매니저 2341는, 예를 들면, 어플리케이션 2370 중 적어도 하나의 어플리케이션의 생명 주기(life cycle)를 관리할 수 있다. 윈도우 매니저 2342는 화면에서 사용하는 GUI 자원을 관리할 수 있다. 멀티미디어 매니저 2343는 다양한 미디어 파일들의 재생에 필요한 포맷을 파악하고, 해당 포맷에 맞는 코덱(codec)을 이용하여 미디어 파일의 인코딩(encoding) 또는 디코딩(decoding)을 수행할 수 있다. 리소스 매니저 2344는 어플리케이션 2370 중 적어도 어느 하나의 어플리케이션의 소스 코드, 메모리 또는 저장 공간 등의 자원을 관리할 수 있다.
파워 매니저 2345는, 예를 들면, 바이오스(BIOS: basic input/output system) 등과 함께 동작하여 배터리(battery) 또는 전원을 관리하고, 전자 장치의 동작에 필요한 전력 정보 등을 제공할 수 있다. 데이터베이스 매니저 2346는 어플리케이션 2370 중 적어도 하나의 어플리케이션에서 사용할 데이터베이스를 생성, 검색, 또는 변경할 수 있다. 패키지 매니저 2347는 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 업데이트를 관리할 수 있다.
연결 매니저 2348는, 예를 들면, WiFi 또는 블루투스 등의 무선 연결을 관리할 수 있다. 통지 매니저 2349는 도착 메시지, 약속, 근접성 알림 등의 사건(event)을 사용자에게 방해되지 않는 방식으로 표시 또는 통지할 수 있다. 위치 매니저 2350는 전자 장치의 위치 정보를 관리할 수 있다. 그래픽 매니저 2351는 사용자에게 제공될 그래픽 효과 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다. 보안 매니저 2352는 시스템 보안 또는 사용자 인증 등에 필요한 제반 보안 기능을 제공할 수 있다. 한 실시 예에 따르면, 전자 장치(예: 전자 장치 2101)가 전화 기능을 포함한 경우, 미들웨어 2330는 전자 장치의 음성 또는 영상 통화 기능을 관리하기 위한 통화 매니저(telephony manager)를 더 포함할 수 있다.
미들웨어 2330는 전술한 구성요소들의 다양한 기능의 조합을 형성하는 미들웨어 모듈을 포함할 수 있다. 미들웨어 2330는 차별화된 기능을 제공하기 위해 운영 체제의 종류 별로 특화된 모듈을 제공할 수 있다. 또한, 미들웨어 2330는 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다.
API 2360(예: API 2145)는, 예를 들면, API 프로그래밍 함수들의 집합으로, 운영 체제에 따라 다른 구성으로 제공될 수 있다. 예를 들면, 안드로이드 또는 iOS의 경우, 플랫폼 별로 하나의 API 셋을 제공할 수 있으며, 타이젠(tizen)의 경우, 플랫폼 별로 두 개 이상의 API 셋을 제공할 수 있다.
어플리케이션 2370(예: 어플리케이션 프로그램 2147)은, 예를 들면, 홈 2371, 다이얼러 2372, SMS/MMS 2373, IM(instant message) 2374, 브라우저 2375, 카메라 2376, 알람 2377, 컨택트 2378, 음성 다이얼 2379, 이메일 2380, 달력 2381, 미디어 플레이어 2382, 앨범 2383, 또는 시계 2384, 건강 관리(health care)(예: 운동량 또는 혈당 등을 측정), 또는 환경 정보 제공(예: 기압, 습도, 또는 온도 정보 등을 제공) 등의 기능을 수행할 수 있는 하나 이상의 어플리케이션을 포함할 수 있다.
한 실시 예에 따르면, 어플리케이션 2370은 전자 장치(예: 전자 장치 2101)와 외부 전자 장치(예: 전자 장치 2102, 2104) 사이의 정보 교환을 지원하는 어플리케이션(이하, 설명의 편의 상, "정보 교환 어플리케이션")을 포함할 수 있다. 정보 교환 어플리케이션은, 예를 들면, 외부 전자 장치에 특정 정보를 전달하기 위한 알림 전달(notification relay) 어플리케이션, 또는 외부 전자 장치를 관리하기 위한 장치 관리(device management) 어플리케이션을 포함할 수 있다.
예를 들면, 알림 전달 어플리케이션은 전자 장치의 다른 어플리케이션(예: SMS/MMS 어플리케이션, 이메일 어플리케이션, 건강 관리 어플리케이션, 또는 환경 정보 어플리케이션 등)에서 발생된 알림 정보를 외부 전자 장치(예: 전자 장치 2102, 2104)로 전달하는 기능을 포함할 수 있다. 또한, 알림 전달 어플리케이션은, 예를 들면, 외부 전자 장치로부터 알림 정보를 수신하여 사용자에게 제공할 수 있다.
장치 관리 어플리케이션은, 예를 들면, 전자 장치와 통신하는 외부 전자 장치(예: 전자 장치 2102, 2104)의 적어도 하나의 기능(예: 외부 전자 장치 자체(또는, 일부 구성 부품)의 턴-온/턴-오프 또는 디스플레이의 밝기(또는, 해상도) 조절), 외부 전자 장치에서 동작하는 어플리케이션 또는 외부 전자 장치에서 제공되는 서비스(예: 통화 서비스 또는 메시지 서비스 등)를 관리(예: 설치, 삭제, 또는 업데이트)할 수 있다.
한 실시 예에 따르면, 어플리케이션 2370은 외부 전자 장치(예: 전자 장치 2102, 2104)의 속성(에 따라 지정된 어플리케이션(예: 모바일 의료 기기의 건강 관리 어플리케이션 등)을 포함할 수 있다. 한 실시 예에 따르면, 어플리케이션 2370은 외부 전자 장치(예: 서버 2106 또는 전자 장치 2102, 2104)로부터 수신된 어플리케이션을 포함할 수 있다. 한 실시 예에 따르면, 어플리케이션 2370은 프리로드 어플리케이션(preloaded application) 또는 서버로부터 다운로드 가능한 제3자 어플리케이션(third party application)을 포함할 수 있다. 도시된 실시 예에 따른 프로그램 모듈 2310의 구성요소들의 명칭은 운영 체제의 종류에 따라서 달라질 수 있다.
다양한 실시 예에 따르면, 프로그램 모듈 2310의 적어도 일부는 소프트웨어, 펌웨어, 하드웨어, 또는 이들 중 적어도 둘 이상의 조합으로 구현될 수 있다. 프로그램 모듈 2310의 적어도 일부는, 예를 들면, 프로세서(예: 프로세서 210)에 의해 구현(implement)(예: 실행)될 수 있다. 프로그램 모듈 2310의 적어도 일부는 하나 이상의 기능을 수행하기 위한, 예를 들면, 모듈, 프로그램, 루틴, 명령어 세트(sets of instructions) 또는 프로세스 등을 포함할 수 있다.
본 문서에서 사용된 용어 "모듈"은, 예를 들면, 하드웨어, 소프트웨어 또는 펌웨어(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)에 저장된 명령어로 구현될 수 있다. 상기 명령어가 프로세서(예: 프로세서 2120)에 의해 실행될 경우, 상기 하나 이상의 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 메모리 2130가 될 수 있다.
컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(magnetic media)(예: 자기테이프), 광기록 매체(optical media)(예: CD-ROM(compact disc read only memory), DVD(digital versatile disc), 자기-광 매체(magneto-optical media)(예: 플롭티컬 디스크(floptical disk)), 하드웨어 장치(예: ROM(read only memory), RAM(random access memory), 또는 플래시 메모리 등) 등을 포함할 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시 예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
다양한 실시 예에 따르면, 컴퓨터로 판독 가능한 기록 매체는 접근 시 인증이 요구되는 데이터를 획득하는 동작 및 상기 데이터의 적어도 일부를 프로세서와 물리적 채널을 통해 연결된 내장형 보안 요소(embedded secure element, eSE)에 저장하는 동작을 실행시키기 위한 프로그램을 저장할 수 있다.
다양한 실시 예에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 다양한 실시 예에 따른 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다. 그리고 본 문서에 개시된 실시 예는 개시된, 기술 내용의 설명 및 이해를 위해 제시된 것이며, 본 문서에서 기재된 기술의 범위를 한정하는 것은 아니다. 따라서, 본 문서의 범위는, 본 문서의 기술적 사상에 근거한 모든 변경 또는 다양한 다른 실시 예를 포함하는 것으로 해석되어야 한다.
Claims (48)
- 프로세서;
상기 프로세서와 기능적으로 연결된 메모리; 및
상기 프로세서 및 상기 메모리와 구분되고, 상기 프로세서와 물리적 채널을 통하여 연결된 보안 회로(secured circuitry);를 포함하고,
상기 프로세서는 데이터의 적어도 일부를 상기 물리적 채널을 통하여 상기 보안 회로에 전송하고,
상기 보안 회로는 상기 적어도 일부를 저장하는 전자 장치. - 제1항에 있어서, 상기 데이터는
상기 전자 장치와 대응하는 생체 정보, 결제 정보, 건강 정보, 또는 프라이버시 정보 중 적어도 일부를 포함하는 전자 장치. - 제1항에 있어서, 상기 프로세서는
상기 데이터를 암호화하고, 암호화된 데이터 또는 암호화에 사용된 보안 키를 상기 보안 회로에 저장하도록 설정된 전자 장치. - 제3항에 있어서, 상기 프로세서는
상기 보안 키가 상기 보안 회로에 저장된 경우, 상기 프로세서에 저장된 상기 보안 키를 삭제하는 전자 장치. - 제1항에 있어서, 상기 물리적 채널은
SPI(serial port interface)를 포함하는 전자 장치. - 제1항에 있어서, 상기 프로세서는
일반 환경 및 보안 환경으로 구분되어 동작하고,
상기 보안 환경은 상기 물리적 채널을 통하여 상기 보안 회로에 상기 적어도 일부를 저장하거나 상기 보안 회로로부터 저장된 데이터를 불러오도록 설정된 전자 장치. - 제6항에 있어서, 상기 보안 환경은
상기 보안 회로와 공유된 키를 기반으로 세션을 형성하고,
상기 세션을 통해 상기 보안 회로에 상기 적어도 일부를 저장하거나 저장된 데이터를 불러오는 전자 장치. - 제6항에 있어서, 상기 보안 환경은
상기 보안 회로와 공유된 키가 없는 경우, 상기 데이터를 상기 보안 환경에 저장하고, 상기 보안 회로와 프로비저닝(provisioning) 과정을 통해 키를 공유하는 전자 장치. - 제6항에 있어서,
사용자의 생체 정보를 수집하는 생체 감지 모듈을 더 포함하고,
상기 프로세서는 상기 생체 정보를 이용하여 상기 적어도 일부를 생성하도록 설정된 전자 장치. - 제9항에 있어서, 상기 생체 감지 모듈은
상기 일반 환경, 상기 보안 환경 또는 상기 보안 회로 중 적어도 하나와 연결되는 채널을 가지는 전자 장치. - 제9항에 있어서, 상기 보안 환경은
상기 생체 감지 모듈을 통해 인식된 생체 정보를 보안 키를 이용하여 암호화 하는 전자 장치. - 제11항에 있어서, 상기 보안 환경은
상기 암호화된 생체 정보를 상기 일반 환경 또는 상기 보안 환경 중 적어도 하나에 저장하는 전자 장치. - 제11항에 있어서, 상기 보안 환경은
상기 보안 키를 상기 보안 환경 또는 상기 보안 회로 중 하나에 저장하는 전자 장치. - 제13항에 있어서, 상기 보안 환경은
상기 보안 키가 상기 보안 회로에 저장된 경우, 상기 보안 환경에 저장된 상기 보안 키를 삭제하는 전자 장치. - 제9항에 있어서, 상기 보안 환경은
상기 보안 회로의 사용 가능 여부를 확인하고, 지정된 조건에 따라 상기 생체 정보 또는 상기 생체 정보를 암호화한 보안 키를 저장할 위치를 결정하는 전자 장치. - 제15항에 있어서, 상기 보안 환경은
상기 보안 회로를 사용할 수 없는 경우, 암호화된 생체 정보를 상기 일반 환경에 송신하고, 상기 보안 키를 상기 보안 환경에 저장하는 전자 장치. - 제9항에 있어서, 상기 일반 환경은
상기 보안 환경에 생체 정보 인증을 요청하고, 상기 생체 감지 모듈을 통해 인식된 제 1 생체 정보를 송신하는 전자 장치. - 제17항에 있어서, 상기 보안 환경은
생체 정보 인증 요청을 수신하는 경우, 상기 보안 회로와 공유된 키를 기반으로 세션을 형성하고,
상기 세션을 통해 상기 보안 회로에 저장된 상기 보안 키를 요청하여 미리 저장된 암호화된 제2 생체 정보를 복호화 하는 전자 장치. - 제9항에 있어서, 상기 보안 회로는
상기 생체 감지 모듈과 상기 물리적 채널과 구별되는 센싱 채널을 통해 연결되고,
상기 보안 회로는 상기 센싱 채널을 통해 상기 생체 정보를 수신하고,
상기 보안 회로는 상기 생체 정보를 보안 키를 이용하여 암호화 하는 전자 장치. - 제19항에 있어서, 상기 보안 회로는
상기 보안 환경의 요청에 따라, 상기 생체 감지 모듈을 통해 인식된 제1 생체 정보와 상기 보안 키를 통해 복호화된 제 2 생체 정보의 비교 결과를 상기 보안 환경에 송신하는 전자 장치. - 전자 장치에서 수행되는 데이터 저장 방법에 있어서,
접근 시 인증이 요구되는 데이터를 획득하는 동작; 및
상기 데이터의 적어도 일부를 프로세서와 물리적 채널을 통해 연결된 내장형 보안 요소(embedded secure element, eSE)에 저장하는 동작;을 포함하는 데이터 저장 방법. - 제21항에 있어서, 상기 내장형 보안 요소에 저장하는 동작은
상기 내장형 보안 요소의 사용 가능 여부를 확인하는 동작; 및
상기 내장형 보안 요소의 사용이 가능한 경우, 상기 적어도 일부를 상기 내장형 보안 요소에 저장하는 동작;을 포함하는 데이터 저장 방법. - 제21항에서, 상기 내장형 보안 요소에 저장하는 동작은
상기 프로세서의 보안 환경과 상기 내장형 보안 요소 사이에 공유된 키를 기반으로 세션을 형성하는 동작; 및
상기 세션을 통해 상기 적어도 일부를 전송하는 동작;을 포함하는 데이터 저장 방법. - 제21항에서, 상기 내장형 보안 요소에 저장하는 동작은
상기 적어도 일부가 상기 내장형 보안 요소에 저장되었는지를 확인하는 동작; 및
상기 보안 환경에서 상기 적어도 일부를 삭제하는 동작;을 더 포함하는 데이터 저장 방법. - 프로세서에서, 상기 프로세서와 기능적으로 연결된 생체 정보 감지 모듈로부터 제1 생체 정보를 수신하는 동작;
상기 제1 생체 정보에 대응하는 제2 생체 정보를 생성하기 위한 데이터를 상기 프로세서와 물리적 채널을 통해 연결된 내장형 보안 요소로부터 획득하는 동작;
상기 데이터의 적어도 일부에 기반하여, 상기 제2 생체 정보를 생성하는 동작; 및
상기 제1 생체 정보와 상기 제2 생체 정보를 비교한 결과에 기반하여 인증을 수행하는 동작;을 포함하는 인증 방법. - 접근 시 인증이 요구되는 데이터를 획득하는 동작; 및
상기 데이터의 적어도 일부를 프로세서와 물리적 채널을 통해 연결된 내장형 보안 요소(embedded secure element, eSE)에 저장하는 동작;을 실행시키기 위한 프로그램을 저장한 컴퓨터로 판독 가능한 기록 매체. - 제6항에 있어서, 상기 물리적 채널은
상기 보안 환경과 상기 보안 회로를 직접 연결하는 것을 특징으로 하는 전자 장치. - 제6항에 있어서, 상기 보안 환경은
상기 암호화 키를 관리하는 보안 프로토콜 모듈; 및
APDU(application protocol data unit) 통신 엔진을 포함하는 전자 장치. - 제28항에 있어서, 상기 보안 프로토콜 모듈은
상기 암호화 키에 기초하여 데이터를 암호화하고, 상기 암호화 키는 상기 보안 회로에 저장되는 키에 대응되도록 설정되는, 전자 장치. - 제6항에 있어서,
NFC(Near Field Communication) 통신 모듈을 더 포함하고,
상기 NFC 통신 모듈은 상기 일반 환경 및 상기 보안 회로와 연결 채널을 통해 연결되고, 상기 연결 채널은 상기 물리적 채널과 구별되도록 설정되는, 전자 장치. - 제6항에 있어서, 상기 보안 환경은
프로비저닝(provisioning) 이벤트가 발생하면, 상기 보안 회로로 키 교환 요청(key exchange request) 신호를 보내는, 전자 장치. - 제31항에 있어서, 상기 보안 회로는
상기 보안 회로에 저장된 키가 있거나, 상기 보안 회로가 차단(blocked) 상태 또는 중단(terminated) 상태인 경우 상기 보안 환경으로 대응하는 에러 코드를 전송하도록 설정되는, 전자 장치. - 제31항에 있어서,
상기 보안 회로는 상기 보안 회로에 저장된 키가 없는 경우, 제1 키를 생성 및 저장하고 상기 보안 환경으로 성공 코드를 전송하도록 설정되는, 전자 장치. - 제33항에 있어서, 상기 보안 환경은
상기 제1 키에 대한 정보에 기초하여 제2 키를 생성 및 저장하고, 상기 제2 키에 대한 확인 요청을 상기 보안 회로로 전송하도록 설정되는, 전자 장치. - 제34항에 있어서, 상기 보안 회로는
상기 제2 키에 대한 정보를 상기 제1 키에 대한 정보와 비교하여, 상기 제2 키와 상기 제1 키가 서로 대응되는지 여부를 판단하고, 그 판단 결과를 상기 보안 환경으로 전송하도록 설정되는, 전자 장치. - 제31항에 있어서, 상기 프로비저닝 이벤트는
외부 장치로부터 프로비저닝 요청을 수신한 이벤트이고
상기 일반 환경은 상기 보안 환경으로 상기 프로비저닝 이벤트의 발생을 전달하도록 설정되는, 전자 장치. - 제31항에 있어서, 상기 프로비저닝 이벤트는
상기 전자 장치의 내부에서 발생하는 부팅(booting), 플래그 체크(flag check), 또는 보안 회로의 사용 요청 중 적어도 하나인 전자 장치. - 제6항에 있어서, 상기 보안 환경은
외부 장치로부터 상기 보안 회로의 리셋 요청을 수신한 경우, 상기 보안 회로로 랜덤 넘버 생성 요청 신호를 보내는, 전자 장치. - 제38항에 있어서, 상기 보안 회로는
상기 외부 장치와 미리 공유된 공개 키를 이용하여 생성한 랜덤 넘버를 암호화하여 상기 보안 환경에 송신하는, 전자 장치. - 제39항에 있어서, 상기 보안 환경은
상기 일반 환경을 통해 상기 암호화된 랜덤 넘버를 상기 외부 장치에 송신하고,
복호화된 랜덤 넘버를 수신하면 상기 보안 회로에 송신하는, 전자 장치. - 제40항에 있어서, 상기 보안 회로는
수신한 복호화된 랜덤 넘버가 저장된 랜덤 넘버가 동일한 경우, 키를 삭제하고 리셋 상태로 진입하는, 전자 장치. - 제40항에 있어서, 상기 보안 회로는
수신한 복호화된 랜덤 넘버를 저장된 랜덤 넘버가 동일하지 않은 경우, 리셋 절차의 실패 횟수가 지정된 값 이상이면, 차단 상태로 진입하는, 전자 장치. - 제6항에 있어서, 상기 보안 환경은
상기 보안 회로와 키를 공유하는 경우, 상기 키를 기반으로 세션을 시작하여 지정된 정보를 상기 보안 회로에 저장하도록 설정되는, 전자 장치. - 제21항에 있어서, 상기 접근 시 인증이 요구되는 데이터를 획득하는 동작은
상기 프로세서가 프로비저닝 이벤트를 수신하는 동작;
상기 프로세서가 상기 프로비저닝 이벤트에 따라 키 교환 요청을 상기 내장형 보안 요소에 송신하는 동작;
상기 내장형 보안 요소가 지정된 조건을 확인하여 제1 키를 생성하고 저장하는 동작; 및
상기 프로세서가 상기 제1 키가 생성된 경우, 상기 제1 키에 대응하는 제2 키를 생성하고 저장하는 동작;을 포함하는 데이터 저장 방법. - 제44항에 있어서,
상기 프로세서가 상기 제2 키에 대한 확인 요청을 상기 내장형 보안 요소로 전송하는 동작; 및
상기 내장형 보안 요소가 상기 제2 키에 대한 정보를 상기 제1 키에 대한 정보와 비교하여, 그 판단 결과를 상기 보안 환경으로 전송하는 동작;을 더 포함하는 데이터 저장 방법. - 제6항에 있어서, 상기 보안 환경은
프로비저닝(provisioning) 이벤트가 발생하면, 상기 보안 회로에 제1 인증서를 전송하여 상기 보안 환경의 유효성을 검증 받고,
상기 보안 회로로부터 제2 인증서를 요청하여, 상기 제2 인증서를 기반으로 상기 보안 회로의 유효성을 검증하는, 전자 장치. - 제46항에 있어서, 상기 보안 환경은
제1 인증서 및 채널 인증서를 상기 보안 회로에 전송하고,
상기 보안 회로는 미리 저장된 전자 장치에 관한 인증서를 기반으로 상기 제1 인증서 및 상기 채널 인증서를 검증하도록 설정된, 전자 장치. - 제46항에 있어서, 상기 보안 환경은
상기 보안 회로에 제2 인증서를 요청하고,
상기 요청에 반응하여, 상기 보안 회로로부터 상기 제2 인증서를 수신하면, 미리 저장된 보안 회로에 관한 인증서를 기반으로 상기 제2 인증서를 검증하도록 설정된, 전자 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/046,097 US10044510B2 (en) | 2015-02-17 | 2016-02-17 | Storing and using data with secure circuitry |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150024536 | 2015-02-17 | ||
KR20150024536 | 2015-02-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160101635A true KR20160101635A (ko) | 2016-08-25 |
Family
ID=56884765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150114957A KR20160101635A (ko) | 2015-02-17 | 2015-08-13 | 보안 회로를 통한 데이터의 저장 및 이용 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20160101635A (ko) |
Cited By (12)
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 |
KR20190032928A (ko) * | 2017-09-20 | 2019-03-28 | 삼성전자주식회사 | 모바일 카드의 백업 및 재설치를 지원하는 전자 장치 |
KR20190098437A (ko) * | 2018-02-14 | 2019-08-22 | 현대자동차주식회사 | 차량 및 그 제어방법 |
WO2020184987A1 (en) * | 2019-03-12 | 2020-09-17 | Samsung Electronics Co., Ltd. | Electronic device including secure integrated circuit |
CN112287360A (zh) * | 2019-07-24 | 2021-01-29 | 三星电子株式会社 | 电子装置以及该电子装置的操作方法 |
CN112653719A (zh) * | 2019-10-12 | 2021-04-13 | 深圳市奇虎智能科技有限公司 | 汽车信息安全存储方法、装置、电子设备和存储介质 |
CN113614731A (zh) * | 2019-03-21 | 2021-11-05 | 创新先进技术有限公司 | 使用软生物特征的认证验证 |
WO2023003150A1 (ko) * | 2021-07-22 | 2023-01-26 | 삼성전자주식회사 | 보안 요소의 백업을 수행하는 전자 장치 및 백업 방법 |
US11621855B2 (en) | 2019-10-07 | 2023-04-04 | Samsung Electronics Co., Ltd. | Electronic device and method for managing blockchain address using the same |
WO2023106594A1 (ko) * | 2021-12-08 | 2023-06-15 | 삼성전자 주식회사 | 복수 개의 실행 환경을 포함하는 전자 장치 및 그의 동작 방법 |
WO2023136531A1 (ko) * | 2022-01-14 | 2023-07-20 | 삼성전자 주식회사 | 보안 장치를 운영하기 위한 전자 장치 및 그의 동작 방법 |
US12026064B2 (en) | 2021-07-22 | 2024-07-02 | Samsung Electronics Co., Ltd. | Electronic device and method of backing up secure element |
-
2015
- 2015-08-13 KR KR1020150114957A patent/KR20160101635A/ko unknown
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180060300A (ko) * | 2016-11-28 | 2018-06-07 | 삼성전자주식회사 | 전자 기기의 프로그램 관리 방법 및 장치 |
US10735427B2 (en) | 2016-11-28 | 2020-08-04 | Samsung Electronics Co., Ltd. | Method and apparatus for managing program of electronic device |
WO2018097662A1 (en) * | 2016-11-28 | 2018-05-31 | 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 |
KR20190032928A (ko) * | 2017-09-20 | 2019-03-28 | 삼성전자주식회사 | 모바일 카드의 백업 및 재설치를 지원하는 전자 장치 |
KR20190098437A (ko) * | 2018-02-14 | 2019-08-22 | 현대자동차주식회사 | 차량 및 그 제어방법 |
US11461475B2 (en) | 2019-03-12 | 2022-10-04 | Samsung Electronics Co., Ltd. | Electronic device including secure integrated circuit |
KR20200109111A (ko) * | 2019-03-12 | 2020-09-22 | 삼성전자주식회사 | 보안 집적 회로를 포함하는 전자 장치 |
WO2020184987A1 (en) * | 2019-03-12 | 2020-09-17 | Samsung Electronics Co., Ltd. | Electronic device including secure integrated circuit |
CN113614731A (zh) * | 2019-03-21 | 2021-11-05 | 创新先进技术有限公司 | 使用软生物特征的认证验证 |
CN112287360A (zh) * | 2019-07-24 | 2021-01-29 | 三星电子株式会社 | 电子装置以及该电子装置的操作方法 |
US11366929B2 (en) | 2019-07-24 | 2022-06-21 | Samsung Electronics Co., Ltd. | Electronic device and method for protecting personal information using secure switch |
CN112287360B (zh) * | 2019-07-24 | 2024-05-24 | 三星电子株式会社 | 电子装置以及该电子装置的操作方法 |
US11621855B2 (en) | 2019-10-07 | 2023-04-04 | Samsung Electronics Co., Ltd. | Electronic device and method for managing blockchain address using the same |
CN112653719A (zh) * | 2019-10-12 | 2021-04-13 | 深圳市奇虎智能科技有限公司 | 汽车信息安全存储方法、装置、电子设备和存储介质 |
WO2023003150A1 (ko) * | 2021-07-22 | 2023-01-26 | 삼성전자주식회사 | 보안 요소의 백업을 수행하는 전자 장치 및 백업 방법 |
US12026064B2 (en) | 2021-07-22 | 2024-07-02 | Samsung Electronics Co., Ltd. | Electronic device and method of backing up secure element |
WO2023106594A1 (ko) * | 2021-12-08 | 2023-06-15 | 삼성전자 주식회사 | 복수 개의 실행 환경을 포함하는 전자 장치 및 그의 동작 방법 |
WO2023136531A1 (ko) * | 2022-01-14 | 2023-07-20 | 삼성전자 주식회사 | 보안 장치를 운영하기 위한 전자 장치 및 그의 동작 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102604046B1 (ko) | 전자 기기의 프로그램 관리 방법 및 장치 | |
US10044510B2 (en) | Storing and using data with secure circuitry | |
US10803452B2 (en) | Method and apparatus for performing payment | |
US11017399B2 (en) | Method and electronic device for paymnet using biometric authentication | |
KR102577054B1 (ko) | 전자 결제 기능을 제공하는 전자 장치 및 그의 동작 방법 | |
US10728222B2 (en) | System and method for providing vehicle information based on personal authentication and vehicle authentication | |
KR102530888B1 (ko) | 결제 거래를 수행하는 방법 및 장치 | |
KR20160101635A (ko) | 보안 회로를 통한 데이터의 저장 및 이용 | |
CN107408251B (zh) | 提供电子支付功能的电子设备及其操作方法 | |
US10554656B2 (en) | Authentication processing method and electronic device supporting the same | |
US20170083882A1 (en) | Secure payment method and electronic device adapted thereto | |
US20170103382A1 (en) | Method of providing payment service and electronic device for implementing same | |
KR101775667B1 (ko) | 결제 시스템, 전자 장치 및 전자 장치의 결제 방법 | |
KR101775668B1 (ko) | 전자 장치, 인증 대행 서버 및 결제 시스템 | |
KR20160040872A (ko) | 전자 장치의 인증 방법 및 장치 | |
KR20170030408A (ko) | 결제를 위한 방법 및 장치 | |
KR20170008645A (ko) | 전자 장치, 인증 대행 서버 및 결제 시스템 | |
EP3193296A1 (en) | Payment processing method and electronic device supporting the same | |
KR20170115235A (ko) | 생체 정보 인증 방법 | |
KR20160033510A (ko) | 권한 설정 토큰을 이용하는 전자 장치 | |
KR20170032715A (ko) | 어플리케이션 관리 방법 및 이를 지원하는 전자 장치 | |
KR102349714B1 (ko) | 전자 기기의 프로그램 관리 방법 및 장치 | |
KR20160058375A (ko) | 단말 내장형 보안 요소와의 안전한 통신 | |
KR20170000737A (ko) | 결제 방법 및 이를 수행하는 전자 장치 |