KR20230027561A - 전자 장치 및 전자 장치의 메모리 제로화 방법 - Google Patents

전자 장치 및 전자 장치의 메모리 제로화 방법 Download PDF

Info

Publication number
KR20230027561A
KR20230027561A KR1020210109500A KR20210109500A KR20230027561A KR 20230027561 A KR20230027561 A KR 20230027561A KR 1020210109500 A KR1020210109500 A KR 1020210109500A KR 20210109500 A KR20210109500 A KR 20210109500A KR 20230027561 A KR20230027561 A KR 20230027561A
Authority
KR
South Korea
Prior art keywords
area
zeroed
information
zeroing
memory
Prior art date
Application number
KR1020210109500A
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 KR1020210109500A priority Critical patent/KR20230027561A/ko
Priority to PCT/KR2022/009296 priority patent/WO2023022362A1/ko
Publication of KR20230027561A publication Critical patent/KR20230027561A/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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

일 실시예에 따른 사용자 단말은 복수의 프로세스들 중 어느 하나의 앱 프로세스에게 할당된 메모리 영역 중 제로화 할 영역에 대응하는 제로화 정보를 저장할 수 있다. 사용자 단말은 앱 프로세스가 할당된 메모리 영역에 대한 사용을 완료하기 전에 사용자 단말이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링할 수 있다. 사용자 단말은 램 덤프 확보가 가능한 모드로 진입하는 경우, 제로화 정보에 기초하여 제로화 할 영역에 대한 제로화를 수행할 수 있다.

Description

전자 장치 및 전자 장치의 메모리 제로화 방법{ELECTRONIC APPARATUS AND METHOD OF ZEROIZATION IN MEMORY OF ELECTRONIC APPARATUS}
아래의 개시는 전자 장치 및 전자 장치의 메모리 제로화 방법에 관한 것이다.
전자 장치의 동작 중 장애가 발생하면 장애의 원인을 파악하고 디버깅(debugging)을 수행하기 위해 메모리에 저장된 정보들이 사용될 수 있다. 장애 원인을 파악하거나 디버깅을 위해 메모리에 저장된 데이터를 그대로 추출하는 램 덤프(ram dump) 기법이 사용될 수 있다. 이 경우, 메모리에 저장된 데이터들은 일반적인 정보 뿐만 아니라 높은 수준의 보안이 요구되는 정보(예: 비밀번호, 개인 정보 등) 또한 포함할 수 있다.
공격자가 램 덤프(ram dump)를 통해 메모리에 남아있는 주요 데이터를 획득할 수 있는 기간, 다시 말해 공격에 취약한 기간(vulnerable period)을 최소화하여 주요 데이터의 노출 가능성을 줄임으로써 보안성을 향상시킬 수 있다.
주요 데이터가 저장된 메모리 영역의 주소 정보에 대한 암호화를 통해 주요 데이터에 공격자의 공격을 방지할 수 있다.
일 실시예에 따른 사용자 단말(101, 800)은 컴퓨터로 실행 가능한 명령어들(computer-executable instructions)이 저장된 메모리(130, 810), 및 복수의 프로세스들(411, 412, 413)(processes)의 구동을 위해 상기 메모리(130, 810)에 액세스(access)하여 상기 명령어들을 실행하는 프로세서(120, 830)를 포함하고, 상기 명령어들은, 상기 복수의 프로세스들(411, 412, 413) 중 어느 하나의 앱 프로세스에게 할당된 메모리(130, 810) 영역 중 제로화 할 영역(315, 355)에 대응하는 제로화 정보(433, 434, 435)를 저장하고, 상기 앱 프로세스가 상기 할당된 메모리(130, 810) 영역에 대한 사용을 완료하기 전에 상기 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하며, 상기 램 덤프 확보가 가능한 모드로 진입한 경우, 상기 제로화 정보(433, 434, 435)에 기초하여 상기 제로화 할 영역(315, 355)을 제로화 하도록 구성될 수 있다.
일 실시예에 따른 사용자 단말(101, 800)에서 구동되는 복수의 프로세스들(411, 412, 413)의 메모리(130, 810) 제로화 방법은 상기 복수의 프로세스들(411, 412, 413) 중 어느 하나의 앱 프로세스에게 할당된 메모리(130, 810) 영역 중 제로화 할 영역(315, 355)에 대응하는 제로화 정보(433, 434, 435)를 저장하는 동작 210, 상기 앱 프로세스가 상기 할당된 메모리(130, 810) 영역에 대한 사용을 완료하기 전에 상기 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하는 동작 220, 및 상기 램 덤프 확보가 가능한 모드로 진입하는 경우, 상기 제로화 정보(433, 434, 435)에 기초하여 상기 제로화 할 영역(315, 355)에 대한 제로화를 수행하는 동작 230을 포함할 수 있다.
일 실시예에 따른 사용자 단말(101, 800)에서 구동되는 복수의 프로세스들(411, 412, 413)의 메모리(130, 810) 제로화 방법은 상기 복수의 프로세스들(411, 412, 413) 중 어느 하나의 앱 프로세스로부터 메모리(130, 810) 할당의 요청을 수신함에 따라, 상기 앱 프로세스에게 가용 메모리(130, 810) 영역을 할당하는 동작 510, 520, 상기 앱 프로세스에게 할당된 메모리(130, 810) 영역 중 상기 앱 프로세스가 제로화 할 영역(315, 355)을 지정함에 응답하여, 상기 제로화 할 영역(315, 355)과 관련된 정보를 암호화하는 동작 5360, 상기 제로화 할 영역(315, 355)에 대응하는 제로화 정보(433, 434, 435)를 저장하는 동작 540, 상기 앱 프로세스가 상기 할당된 메모리(130, 810) 영역에 대한 사용을 완료하기 전에 상기 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하는 동작 550, 및 상기 램 덤프 확보가 가능한 모드로 진입하는 경우, 상기 제로화 정보(433, 434, 435)에 기초하여 상기 암호화된 정보를 복호화 함으로써 상기 제로화 할 영역(315, 355)에 대한 제로화를 수행하는 동작 560을 포함할 수 있다.
일 실시예에 따른 전자 장치는 메모리 영역 중 주요 데이터가 저장되는 제로화 할 영역에 대응하는 제로화 정보를 저장하고, 램 덤프 확보가 가능한 모드로 진입하는 것이 감지되면 미리 제로화 정보에 의해 제로화 할 영역에 대한 제로화를 수행함으로써 공격자의 공격에 취약한 기간의 발생을 차단할 수 있다.
일 실시예에 따른 전자 장치는 앱 프로세스에게 할당된 메모리 영역 중 제로화 할 영역과 관련된 정보(예: 제로화 할 영역의 시작 주소 및 크기 정보)를 암호화하여 제로화 할 영역의 위치 노출을 차단할 수 있다.
일 실시예에 따른 전자 장치는 제로화 정보의 저장 또는 읽기에 실패하거나, 제로화 할 영역과 관련된 정보에 대한 암호화에 실패하거나, 또는 암호화된 정보에 대한 복호화에 실패한 경우에는 제로화 할 영역뿐만 아니라 해당 앱 프로세스에게 할당된 메모리 영역 전체 및/또는 해당 앱 프로세스의 스택(stack) 또는 힙(heap)을 제로화 함으로써 공격자가 의도적으로 암호화 또는 복호화를 방해하더라도 주요 데이터를 안전하게 보관할 수 있다.
도 1은 다양한 실시예들에 따른 네트워크 환경 내의 전자 장치의 블록도이다.
도 2는 일 실시예에 따른 메모리 제로화 방법을 나타낸 흐름도이다.
도 3은 일 실시예에 따른 제로화 할 영역의 일 예시를 도시한 도면이다.
도 4는 다른 실시예에 따른 메모리 제로화 방법을 나타낸 흐름도이다.
도 5는 일 실시예에 따른 복수의 프로세스들 각각에 대응하는 제로화 정보의 다양한 구성 예시들을 도시한 도면.
도 6은 일 실시예에 따른 사용자 단말에서 구동되는 앱 프로세스와 운영 체제(OS) 간의 동작을 도시한 도면.
도 7은 다른 실시예에 따른 메모리 제로화 방법을 나타낸 흐름도이다.
도 8은 일 실시예에 따른 사용자 단말의 블록도이다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은, 다양한 실시예들에 따른, 네트워크 환경(100) 내의 전자 장치(101)의 블록도이다. 도 1을 참조하면, 네트워크 환경(100)에서 전자 장치(101)는 제 1 네트워크(198)(예: 근거리 무선 통신 네트워크)를 통하여 전자 장치(102)와 통신하거나, 또는 제 2 네트워크(199)(예: 원거리 무선 통신 네트워크)를 통하여 전자 장치(104) 또는 서버(108) 중 적어도 하나와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 프로세서(120), 메모리(130), 입력 모듈(150), 음향 출력 모듈(155), 디스플레이 모듈(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 연결 단자(178), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 연결 단자(178))가 생략되거나, 하나 이상의 다른 구성요소가 추가될 수 있다. 어떤 실시예에서는, 이 구성요소들 중 일부들(예: 센서 모듈(176), 카메라 모듈(180), 또는 안테나 모듈(197))은 하나의 구성요소(예: 디스플레이 모듈(160))로 통합될 수 있다.
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)를 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일실시예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 저장하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다. 일 실시예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서) 또는 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치, 신경망 처리 장치(NPU: neural processing unit), 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 예를 들어, 전자 장치(101)가 메인 프로세서(121) 및 보조 프로세서(123)를 포함하는 경우, 보조 프로세서(123)는 메인 프로세서(121)보다 저전력을 사용하거나, 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.
보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 디스플레이 모듈(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일실시예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다. 일실시예에 따르면, 보조 프로세서(123)(예: 신경망 처리 장치)는 인공지능 모델의 처리에 특화된 하드웨어 구조를 포함할 수 있다. 인공지능 모델은 기계 학습을 통해 생성될 수 있다. 이러한 학습은, 예를 들어, 인공지능 모델이 수행되는 전자 장치(101) 자체에서 수행될 수 있고, 별도의 서버(예: 서버(108))를 통해 수행될 수도 있다. 학습 알고리즘은, 예를 들어, 지도형 학습(supervised learning), 비지도형 학습(unsupervised learning), 준지도형 학습(semi-supervised learning) 또는 강화 학습(reinforcement learning)을 포함할 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은, 복수의 인공 신경망 레이어들을 포함할 수 있다. 인공 신경망은 심층 신경망(DNN: deep neural network), CNN(convolutional neural network), RNN(recurrent neural network), RBM(restricted boltzmann machine), DBN(deep belief network), BRDNN(bidirectional recurrent deep neural network), 심층 Q-네트워크(deep Q-networks) 또는 상기 중 둘 이상의 조합 중 하나일 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은 하드웨어 구조 이외에, 추가적으로 또는 대체적으로, 소프트웨어 구조를 포함할 수 있다.
메모리(130)는, 전자 장치(101)의 적어도 하나의 구성요소(예: 프로세서(120) 또는 센서 모듈(176))에 의해 사용되는 다양한 데이터를 저장할 수 있다. 데이터는, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 포함할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비휘발성 메모리(134)를 포함할 수 있다.
프로그램(140)은 메모리(130)에 소프트웨어로서 저장될 수 있으며, 예를 들면, 운영 체제(142), 미들 웨어(144) 또는 어플리케이션(146)을 포함할 수 있다.
입력 모듈(150)은, 전자 장치(101)의 구성요소(예: 프로세서(120))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신할 수 있다. 입력 모듈(150)은, 예를 들면, 마이크, 마우스, 키보드, 키(예: 버튼), 또는 디지털 펜(예: 스타일러스 펜)을 포함할 수 있다.
음향 출력 모듈(155)은 음향 신호를 전자 장치(101)의 외부로 출력할 수 있다. 음향 출력 모듈(155)은, 예를 들면, 스피커 또는 리시버를 포함할 수 있다. 스피커는 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용될 수 있다. 리시버는 착신 전화를 수신하기 위해 사용될 수 있다. 일실시예에 따르면, 리시버는 스피커와 별개로, 또는 그 일부로서 구현될 수 있다.
디스플레이 모듈(160)은 전자 장치(101)의 외부(예: 사용자)로 정보를 시각적으로 제공할 수 있다. 디스플레이 모듈(160)은, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일실시예에 따르면, 디스플레이 모듈(160)은 터치를 감지하도록 설정된 터치 센서, 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 압력 센서를 포함할 수 있다.
오디오 모듈(170)은 소리를 전기 신호로 변환시키거나, 반대로 전기 신호를 소리로 변환시킬 수 있다. 일실시예에 따르면, 오디오 모듈(170)은, 입력 모듈(150)을 통해 소리를 획득하거나, 음향 출력 모듈(155), 또는 전자 장치(101)와 직접 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102))(예: 스피커 또는 헤드폰)를 통해 소리를 출력할 수 있다.
센서 모듈(176)은 전자 장치(101)의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태(예: 사용자 상태)를 감지하고, 감지된 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 일실시예에 따르면, 센서 모듈(176)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 지문 센서를 포함할 수 있다.
인터페이스(177)는 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 직접 또는 무선으로 연결되기 위해 사용될 수 있는 하나 이상의 지정된 프로토콜들을 지원할 수 있다. 일실시예에 따르면, 인터페이스(177)는, 예를 들면, HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(178)는, 그를 통해서 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일실시예에 따르면, 연결 단자(178)는, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 일실시예에 따르면, 햅틱 모듈(179)은, 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일실시예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈들, 이미지 센서들, 이미지 시그널 프로세서들, 또는 플래시들을 포함할 수 있다.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리할 수 있다. 일실시예에 따르면, 전력 관리 모듈(188)은, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구현될 수 있다.
배터리(189)는 전자 장치(101)의 적어도 하나의 구성요소에 전력을 공급할 수 있다. 일실시예에 따르면, 배터리(189)는, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108)) 간의 직접(예: 유선) 통신 채널 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(120)(예: 어플리케이션 프로세서)와 독립적으로 운영되고, 직접(예: 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일실시예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함할 수 있다. 이들 통신 모듈 중 해당하는 통신 모듈은 제1 네트워크(198)(예: 블루투스, WiFi(wireless fidelity) direct 또는 IrDA(infrared data association)와 같은 근거리 통신 네트워크) 또는 제2 네트워크(199)(예: 레거시 셀룰러 네트워크, 5G 네트워크, 차세대 통신 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부의 전자 장치(104)와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성요소(예: 단일 칩)로 통합되거나, 또는 서로 별도의 복수의 구성요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 또는 인증할 수 있다.
무선 통신 모듈(192)은 4G 네트워크 이후의 5G 네트워크 및 차세대 통신 기술, 예를 들어, NR 접속 기술(new radio access technology)을 지원할 수 있다. NR 접속 기술은 고용량 데이터의 고속 전송(eMBB(enhanced mobile broadband)), 단말 전력 최소화와 다수 단말의 접속(mMTC(massive machine type communications)), 또는 고신뢰도와 저지연(URLLC(ultra-reliable and low-latency communications))을 지원할 수 있다. 무선 통신 모듈(192)은, 예를 들어, 높은 데이터 전송률 달성을 위해, 고주파 대역(예: mmWave 대역)을 지원할 수 있다. 무선 통신 모듈(192)은 고주파 대역에서의 성능 확보를 위한 다양한 기술들, 예를 들어, 빔포밍(beamforming), 거대 배열 다중 입출력(massive MIMO(multiple-input and multiple-output)), 전차원 다중입출력(FD-MIMO: full dimensional MIMO), 어레이 안테나(array antenna), 아날로그 빔형성(analog beam-forming), 또는 대규모 안테나(large scale antenna)와 같은 기술들을 지원할 수 있다. 무선 통신 모듈(192)은 전자 장치(101), 외부 전자 장치(예: 전자 장치(104)) 또는 네트워크 시스템(예: 제2 네트워크(199))에 규정되는 다양한 요구사항을 지원할 수 있다. 일실시예에 따르면, 무선 통신 모듈(192)은 eMBB 실현을 위한 Peak data rate(예: 20Gbps 이상), mMTC 실현을 위한 손실 Coverage(예: 164dB 이하), 또는 URLLC 실현을 위한 U-plane latency(예: 다운링크(DL) 및 업링크(UL) 각각 0.5ms 이하, 또는 라운드 트립 1ms 이하)를 지원할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부의 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일실시예에 따르면, 안테나 모듈(197)은 서브스트레이트(예: PCB) 위에 형성된 도전체 또는 도전성 패턴으로 이루어진 방사체를 포함하는 안테나를 포함할 수 있다. 일실시예에 따르면, 안테나 모듈(197)은 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다. 이런 경우, 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 상기 복수의 안테나들로부터 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부의 전자 장치 간에 송신되거나 수신될 수 있다. 어떤 실시예에 따르면, 방사체 이외에 다른 부품(예: RFIC(radio frequency integrated circuit))이 추가로 안테나 모듈(197)의 일부로 형성될 수 있다.
다양한 실시예에 따르면, 안테나 모듈(197)은 mmWave 안테나 모듈을 형성할 수 있다. 일실시예에 따르면, mmWave 안테나 모듈은 인쇄 회로 기판, 상기 인쇄 회로 기판의 제1 면(예: 아래 면)에 또는 그에 인접하여 배치되고 지정된 고주파 대역(예: mmWave 대역)을 지원할 수 있는 RFIC, 및 상기 인쇄 회로 기판의 제2 면(예: 윗 면 또는 측 면)에 또는 그에 인접하여 배치되고 상기 지정된 고주파 대역의 신호를 송신 또는 수신할 수 있는 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input and output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))을 통해 서로 연결되고 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.
일실시예에 따르면, 명령 또는 데이터는 제2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104)간에 송신 또는 수신될 수 있다. 외부의 전자 장치(102, 또는 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다.
일실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 외부의 전자 장치들(102, 104, 또는 108) 중 하나 이상의 외부의 전자 장치들에서 실행될 수 있다. 예를 들면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부의 전자 장치들에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부의 전자 장치들은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 모바일 에지 컴퓨팅(MEC: mobile edge computing), 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다. 전자 장치(101)는, 예를 들어, 분산 컴퓨팅 또는 모바일 에지 컴퓨팅을 이용하여 초저지연 서비스를 제공할 수 있다. 다른 실시예에 있어서, 외부의 전자 장치(104)는 IoT(internet of things) 기기를 포함할 수 있다. 서버(108)는 기계 학습 및/또는 신경망을 이용한 지능형 서버일 수 있다. 일실시예에 따르면, 외부의 전자 장치(104) 또는 서버(108)는 제2 네트워크(199) 내에 포함될 수 있다. 전자 장치(101)는 5G 통신 기술 및 IoT 관련 기술을 기반으로 지능형 서비스(예: 스마트 홈, 스마트 시티, 스마트 카, 또는 헬스 케어)에 적용될 수 있다.
도 2는 일 실시예에 따른 메모리 제로화 방법을 나타낸 흐름도이다. 이하 실시예에서 각 동작들은 순차적으로 수행될 수도 있으나, 반드시 순차적으로 수행되는 것은 아니다. 예를 들어, 각 동작들의 순서가 변경될 수도 있으며, 적어도 두 동작들이 병렬적으로 수행될 수도 있다.
도 2를 참조하면, 일 실시예에 따른 사용자 단말(예: 도 1의 전자 장치(101), 도 8의 사용자 단말(800))는 동작 210 내지 동작 230을 통해 제로화를 수행할 수 있다. 이하, 사용자 단말(101, 800)에 의해 수행되는 것으로 기재된 동작들은 별도의 기재가 없더라도 사용자 단말(101, 800)의 운영 체제(142)에 의해 수행되는 것으로 이해될 수 있다. 여기서, '운영 체제(operating system; os)'(142)는 예를 들어, 후술하는 커널(kernel)(예: 도 4의 커널(430), 도 7의 커널(703)) 이외에도 보안 운영체제(secure kernel)(예: 도 4의 보안 운영체제(450)), 부트 로더(boot roader)(예: 도 7의 부트 로더(705))와 같이 사용자 단말(101, 800)의 운영을 위해 구동되는 다양한 소프트웨어 프로그램들을 모두 포괄하는 의미로 이해될 수 있다. 이하, 보안 운영체제(450) 또는 부트 로더(705)와 같이 커널(430, 703) 이외에 다른 수행 주체에 의해 수행되는 동작들은 해당 수행 주체를 명시적으로 기재하기로 한다.
동작 210에서, 사용자 단말(101, 800)은 복수의 프로세스들(예: 도 4의 프로세스들(411, 412, 413)) 중 어느 하나의 앱 프로세스에게 할당된 메모리 영역 중 제로화 할 영역(예: 315, 355)에 대응하는 제로화 정보를 저장할 수 있다. 본 명세서에서 '제로화(zeroization)'는 메모리의 일정 영역에 저장된 정보를 지운다(erase)는 의미로서, 일정 영역에 저장되었던 정보를 특정 값(예를 들어, '0') 또는 랜덤 패턴에 의해 대체함으로써 원래 저장되어 있던 정보를 공격자가 파악하지 못하도록 할 수 있다.
또한, '제로화 할 영역'은 앱 프로세스에게 할당된 메모리 영역 중 공격자의 공격 시에 주요 데이터의 삭제를 위해 제로화가 수행되어야 하는 제로화 대상 영역에 해당할 수 있다. 제로화 할 영역(315, 355)은 해당 앱 프로세스에게 할당된 메모리 영역 중 일부 영역에 해당할 수 있다. 제로화 할 영역(315, 355)은 하나일 수도 있고, 다수 개 일 수도 있다. 제로화 할 영역(315, 355)은 앱 프로세스가 응용 프로그램 인터페이스(API)에게 자신(앱 프로세스)에게 할당된 메모리 영역 중 자신(앱 프로세스)이 지정한 제로화 할 영역(315)의 시작 주소(예: 'FFOOF')와 제로화 할 영역(315)의 길이(length)(예: 10)를 전달함으로써 설정될 수 있다. 제로화 할 영역(315)의 시작 주소 및 제로화 할 영역(315)의 길이는 제로화 할 영역(315)과 관련된 정보로서, 동작 210에 앞서 암호화될 수 있다. 제로화 할 영역(315)의 일 예시는 아래의 도 3을 참조하여 보다 구체적으로 설명한다.
제로화 정보는 예를 들어, 앱 프로세스에게 할당된 메모리 영역에 제로화 할 영역(315,355)이 1개 이상 존재하는지 여부를 나타내는 제1 정보, 앱 프로세스의 스택(stack) 또는 힙(heap) 전체를 제로화 할 지 여부를 나타내는 제2 정보, 및 제로화 할 영역(315, 355)의 리스트를 나타내는 제3 정보 중 적어도 하나를 포함할 수 있다. 제1 정보는 제로화 정보에 반드시 포함되며, 제1 정보의 값에 따라 제2 정보 혹은 제3 정보가 선택적으로 포함될 수 있다.
제1 정보는 앱 프로세스에 할당된 메모리 영역에 제로화 할 영역(315, 355)이 1개 이상 존재하는 것을 나타낼 수 있다. 예를 들어, 제1 정보를 나타내는 변수는 'needToZeroize'일 수 있다. 제1 정보를 나타내는 변수('need To Zeronize')가 'true'로 설정된 경우, 앱 프로세스에게 할당된 메모리 영역에 제로화 할 영역(315,355)이 1개 이상 존재한다는 것을 나타낼 수 있다. 제1 정보를 나타내는 변수('need To Zeronize')가 'false'로 설정된 경우, 예를 들어, 도 3의 제2 영역(330)과 같이 앱 프로세스에게 할당된 메모리 영역에 제로화 할 영역(315)이 없다는 것을 나타낼 수 있다.
제2 정보는 앱 프로세스의 스택(stack) 또는 힙(heap) 전체를 제로화 할 지 여부를 나타낼 수 있다. 예를 들어, 제2 정보를 나타내는 변수는 'ZeroizAll'일 수 있다. 제2 정보를 나타내는 변수('ZeroizAll')가 'true'로 설정된 경우, 사용자 단말(101, 800)은 앱 프로세스의 스택(stack) 또는 힙(heap) 전체를 제로화 할 수 있다. 제2 정보를 나타내는 변수('ZeroizAll')가 'true'로 설정된 경우는 사용자 단말(101, 800)의 커널(430, 703)이 제로화 할 영역(315, 355)에 대한 리스트를 확보할 수 없는 상황에 해당할 수 있다. 여기서, '제로화 할 영역에 대한 리스트를 확보할 수 없는 상황'은 예를 들어, 보안 운영체제(405)을 위한 프로세서(120, 830)의 보안 영역이 오동작하여 부트 로더(705)가 암호화된 정보에 대한 복호화에 실패한 경우, 공격자가 제로화 할 영역(315, 355)과 관련된 정보에 대한 암호화를 방해하여 커널(430, 703)이 제로화 할 영역(315, 355)과 관련된 정보에 대한 암호화에 실패한 경우, 및 커널(430, 703)이 제로화 정보의 저장 또는 제로화 정보의 읽기(read)에 실패한 경우를 포함할 수 있으며, 반드시 이에 한정되지는 않는다. 프로세서(120, 830)의 보안 영역은 예를 들어, 트러스트 존(Trust Zone)일 수 있으며, 반드시 이에 한정되지는 않는다.
사용자 단말(101, 800)은 제로화 정보(예: 제2 정보)에 기초하여 제로화 할 영역(315, 355)과 관련된 정보에 대한 암호화에 실패했는지 여부를 결정할 수 있다. 제로화 할 영역(315, 355)과 관련된 정보에 대한 암호화에 실패하여 제2 정보를 나타내는 변수('ZeroizAll')가 'true'로 설정된 경우, 사용자 단말(101, 800)은 해당 앱 프로세스에게 할당된 메모리 영역 전체 또는 해당 앱 프로세스의 스택(stack) 또는 힙(heap)을 제로화 함으로써 공격자가 암호화 또는 복호화를 방해하더라도 주요 데이터의 노출을 차단할 수 있다.
제3 정보는 제로화 할 영역(315, 355)의 리스트를 나타낼 수 있다. 예를 들어, 제3 정보를 나타내는 변수는 'area list to be zeroized'일 수 있다. 제3 정보를 나타내는 변수('area list to be zeroized')는 제로화 할 영역(315, 355)과 관련된 정보를 포함하는 리스트에 해당할 수 있다. 이때, 제로화 할 영역(315, 355)과 관련된 정보는 암호화되어 리스트에 저장될 수 있다. 예를 들어, 제로화 할 영역(315, 355)이 2개(제1 영역 및 제2 영역)인 경우, 해당 리스트는 제1 영역과 제2 영역 각각의 시작 주소와 길이를 포함할 수 있다. 제1 영역과 제2 영역 각각의 시작 주소와 길이는 암호화되어 해당 리스트에 저장될 수 있다.
사용자 단말(101, 800)은 앱 프로세스 별로 제로화 정보를 저장할 수 있다. 사용자 단말(101, 800)은 예를 들어, 앱 프로세스 A의 제로화 정보의 저장에 실패한 경우, 또는 앱 프로세스 A의 제로화 정보의 읽기(read)에 실패한 경우, 앱 프로세스 A에게 할당된 메모리 영역 전체를 제로화 할 수도 있고, 또는 앱 프로세스 A의 스택(stack) 또는 힙(heap)을 제로화 할 수도 있다. 앱 프로세스 별로 저장되는 제로화 정보의 일 예시는 아래의 4를 참조하여 보다 구체적으로 설명한다.
사용자 단말(101, 800)은 이후 앱 프로세스의 동작이 종료됨에 따라 앱 프로세스의 제로화 정보를 삭제할 수 있다.
동작 220에서, 사용자 단말(101, 800)은 앱 프로세스가 자신(앱 프로세스)에게 할당된 메모리 영역에 대한 사용을 완료하기 전에 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링할 수 있다. 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는지 여부는 예를 들어, 미리 정해진 키 조합의 입력, 시스템의 와치독(watchdog)에 의한 업로드 모드로의 진입, 또는 및 커널 패닉이 발생하는지 여부에 의해 파악될 수 있다. 여기서, 미리 정해진 키 조합은 예를 들어, 'abd', 'ddms' 또는 'frida'와 같은 특정 문자열 또는 특정 키 조합을 포함할 수 있으며, 반드시 이에 한정되지는 않는다.
여기서, '램 덤프 확보가 가능한 모드'는 예를 들어, 개발자, 서비스 센터의 기술자, 또는 공격자가 메모리(예: DRAM)에 남아있는 주요 데이터(비밀번호, 개인 정보 등)를 획득할 수 있도록 사용자 단말(101, 800)을 강제적으로 재부팅시켜 램 덤프를 업로드시키는 업로드 모드(upload mode) 뿐만 아니라 사용자 단말(101, 800)이 램 덤프 확보를 위한 준비 상태에 있거나, 램 덤프 확보가 가능한 상태에 있는 경우를 모두 포괄하는 의미로 해석될 수 있다. '램 덤프 확보를 위한 준비 상태'는 미리 정해진 키 조합이 입력되거나, 커널 패닉이 발생함을 인식하고, 해당 사유를 메모리(예: 도 1의 메모리(130), 도 8의 메모리(810))에 기록해 두고 사용자 단말(101, 800)에 대한 부팅(booting)을 수행하는 상태에 해당할 수 있다. 또한, '램 덤프 확보가 가능한 상태'는 부트 로더(705)가 커널이 설정한 메모리 영역에 기록한 사유를 읽어 해당 사유에 따라 램 덤프 모드로 진입하는 상태에 해당할 수 있다.
동작 230에서, 사용자 단말(101, 800)은 동작 220의 모니터링 결과, 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는 경우, 동작 210에서 저장한 제로화 정보에 기초하여 제로화 할 영역(315, 355)에 대한 제로화를 수행할 수 있다.
예를 들어, 사용자 단말(101, 800)에서 사용자에 의해 'abd', 'ddms' 또는 'frida'와 같은 특정 문자열 또는 특정 키 조합이 입력되거나 또는 커널 내에서 발생한 오류로 인한 커널 패닉(kernel panic)이 발생하여 커널 내 panic() 함수가 호출될 수 있다. 여기서, panic() 함수는 커널 패닉이 발생하는 경우 뿐만 아니라 업로드 모드와 같이 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하기 위한 사전 처리 작업을 수행하는 함수에 해당할 수 있다.
커널(430,703)은 미리 정해진 특정 메모리 영역에 램 덤프 모드로 진입한다는 표시와 함께 램 덤프 모드로 진입하는 사유(예: 특정 키 조합, 또는 커널 패닉)를 기록한 후 램 덤프를 위한 부팅(booting)을 수행할 수 있다. 부팅이 수행되면, 커널(430,703) 또는 부트 로더(705)는 커널(430,703)이 설정한 메모리 영역에서 해당 사유를 읽어서 램 덤프 확보가 가능한 모드로 진입함을 인식할 수 있다.
예를 들어, 제로화 정보에 기초하여 제로화 할 영역(315, 355)의 시작 주소 및 크기 정보가 암호화된 경우, 커널(430,703) 또는 부트 로더(705)는 암호화된 정보를 복호화하고, 복호화된 정보에 따라 제로화 할 영역(315, 355)에 대한 제로화를 수행할 수 있다. 사용자 단말(101, 800)은 전술한 과정을 통해 램 덤프 확보가 가능한 모드(예: 커널 패닉 모드 또는 업로드 모드)로의 진입에 앞서 제로화 할 영역(315, 355)에 대한 제로화를 수행하여 제로화 할 영역(315, 355)에 저장된 주요 데이터의 누출을 차단할 수 있다.
실시예에 따라서, 암호화된 정보(예: 제로화 할 영역(315, 355)의 시작 주소 및 크기 정보)에 대한 복호화에 실패한 경우, 커널(430,703) 또는 부트 로더(705)는 제로화 할 영역(315, 355)을 제로화하는 대신에 앱 프로세스에게 할당된 메모리 영역 전체를 제로화하거나, 앱 프로세스의 스택 또는 힙을 제로화하여 주요 데이터의 누출을 차단할 수 있다. 전술한 과정은 커널(430,703) 또는 부트 로더(705) 이외에 다른 수행 주체에 의해 수행될 수도 있으며, 반드시 이에 한정되지는 않는다.
도 3은 일 실시예에 따른 제로화 할 영역의 일 예시를 도시한 도면이다. 도 3을 참조하면, 일 실시예에 따른 메모리(300)의 가용 영역(305) 중 일부에 저장된 제로화 할 영역들(315,355)이 도시된다.
메모리(300)는 휘발성 메모리로서, 예를 들어, DRAM(Dynamic Random Access Memory)일 수 있다. 메모리(300)의 가용 영역(305) 중 제1 영역(310)은 프로세스 A(예: 도 4의 프로세스 A(411))에게 할당되고, 제2 영역(330)은 앱 프로세스 B(예: 도 4의 프로세스 B(412))에게 할당되며, 제3 영역(350)은 앱 프로세스 C(예: 도 4의 프로세스 C(413))에게 할당될 수 있다.
이때, 프로세스 A(411)는 응용 프로그램 인터페이스(API)를 호출하여 자신에게 할당된 메모리 영역(예: 제1 영역(310)) 중 주요 데이터가 저장되는 제로화 할 영역(315)을 지정할 수 있다. 프로세스 A(411)는 제로화 할 영역(315)의 시작 주소(예: 'FFOOF')와 길이(예: '10')를 포함하는 제로화 할 영역(315)과 관련된 정보를 응용 프로그램 인터페이스(API)의 입력값으로 전달할 수 있다.
커널(430, 703)은 프로세스 A(411)에 의해 응용 프로그램 인터페이스(API)이 호출되면, 응용 프로그램 인터페이스(API)를 통해 전달된 해당 제로화 할 영역(315)과 관련된 정보(예: 제로화 할 영역(315)의 시작 주소('FFOOF') 및 길이('10'))를 암호화하고, 암호화된 정보(제로화 할 영역(315)의 시작 주소('FFOOF') 및 길이('10'))에 따라 프로세스 A(411)의 제로화 정보를 업데이트할 수 있다.
실시예들에 따라서, 프로세스들은 프로세스 C(413)와 같이 자신에게 할당된 제3 영역(350) 전체를 초기화할 영역(355)으로 지정할 수도 있고, 또는 프로세스 B(412)와 같이 자신에게 할당된 제2 영역(330)에 대해 초기화할 영역을 지정하지 않을 수도 있다.
도 4는 일 실시예에 따른 복수의 프로세스들 각각에 대응하는 제로화 정보의 다양한 구성 예시들을 도시한 도면이다. 도 4를 참조하면, 사용자 단말(101, 800)에서 앱(App)(410)를 위한 복수의 프로세스들(411, 412, 413)이 구동되는 경우에 각 프로세스 별 제로화 정보의 구성이 도시된다.
사용자 단말(101, 800)의 커널(kernel)(430) 및 보안 운영체제(secure kernel)(450)은 각 프로세스(411, 412. 413) 별 제로화 정보(433, 434, 435)의 구성에 따라 제로화 할 영역(315)을 관리할 수 있다. 여기서, 보안 운영체제(secure kernel)(450)은 프로세서(120, 830)의 보안 영역을 운영하기 위한 별도의 운영 체제로서 커널(430)과 구분될 수 있다. 보안 운영체제(450)는 프로세서(120, 830)의 보안 영역(예: 트러스트 존(trust zone; tz))을 통해 보안과 관련된 기능을 수행하고, 보안 관련 응답을 전달할 수 있다. 프로세서(120, 830)의 보안 영역은 사용자 단말(101, 800) 내에서 프로세서(120, 830)가 하드웨어적으로 제공하는 영역에 해당할 수 있다. 프로세서(120, 830)의 보안 영역은 커널(430)과 분리되어 있으며, 예를 들어, 암호화 및/또는 복호화와 같은 보안 관련 동작을 수행하는 데에 이용되는 영역에 해당할 수 있다.
전술한 것과 같이, 제로화 정보(433, 434, 435)는 예를 들어, 해당 앱 프로세스에게 할당된 메모리 영역에 제로화 할 영역(예: 도 3의 제로화 할 영역들(315, 355))이 1개 이상 존재하는지 여부를 나타내는 제1 정보, 프로세스의 힙(heap) 또는 스택(stack) 전체를 제로화 할 지 여부를 나타내는 제2 정보(, 및 제로화 할 영역(315)의 리스트를 나타내는 제3 정보 중 적어도 하나를 포함할 수 있다.
예를 들어, 앱 프로세스 A(411)가 자신에게 할당된 메모리 영역 중 제로화 할 영역(315)에 대한 제로화(memory zeroization; MZ)를 설정하기 위해 API를 호출(CALL)할 수 있다. 이 경우, 앱 프로세스 A(411)가 설정한 제로화 할 영역(315)이 1개 이상 존재하므로 커널(430)은 앱 프로세스 A(411)에 대응하는 제로화 정보(433) 중 제1 정보를 'true'로 설정할 수 있다. 이때, 앱 프로세스 A(411)의 힙 또는 스택 전체를 제로화 할 필요가 없으므로 제2 정보를 'false'로 설정할 수 있다. 또한, 커널(430)은 제로화 정보(433) 중 제로화 할 영역(315)의 리스트에 대한 제3 정보, 다시 말해 제로화 할 영역(315)과 관련된 정보를 암호화하여 저장할 수 있다. 이때, 제로화 할 영역(315)과 관련된 정보에 대한 암호화는 예를 들어, 보안 영역에서 동작하는 어플리케이션인 TA(Trust Application)에 의해 수행될 수 있다. TA는 일반 앱 프로세스가 수행하기에 보안적으로 민감한 연산을 보안 영역에서 수행하도록 할 수 있다.
사용자 단말(101, 800)이 예를 들어, 업로드 모드와 같이 램 덤프 확보가 가능한 모드로 진입하는 경우, 앱 프로세스 A(411)의 제로화 정보(433)의 제3 정보에 저장된 제로화 할 영역(315)이 제로화될 수 있다.
예를 들어, 프로세스 B(412)는 제로화 할 영역을 설정하기 위해 응용 프로그램 인터페이스(API)를 호출하지 않았으므로, 커널(430)은 프로세스 B(412)에 대응하는 제로화 영역(434) 중 제1 정보('need To Zeronize')는 'false'로 설정할 수 있다. 또한, 프로세스 B(412)에 대해 프로세스 B(412)에 할당된 힙 또는 스택 전체를 제로화 할 필요가 없으므로 제로화 영역(434) 중 제2 정보를 나타내는 변수('ZeroizAll')는 'false'로 설정할 수 있다.
또한, 프로세스 C(413)가 자신에게 할당된 메모리 영역 중 제로화 할 영역(예: 도 3의 제3 영역(355))에 대한 제로화(MZ)를 설정하기 위해 API를 호출(CALL)했으나, 보안 운영체제(450)로부터 프로세서의 보안 영역에서 동작을 수행할 수 없다는 신호를 수신할 수 있다. "프로세서의 보안 영역에서 동작을 수행할 수 없다는 신호는 예를 들어, 프로세서(120, 830)의 보안 영역의 오동작, 또는 공격에 의해 제로화 할 영역(355)과 관련된 정보에 대한 암호화에 실패한 경우에 발생할 수 있으며, 반드시 이에 한정되지는 않는다.
이 경우, 프로세스 C(413)가 설정한 제로화 할 영역(355)이 1개 이상 존재하므로 커널(430)은 프로세스 C(413)에 대응하는 제로화 정보(435) 중 제1 정보를 'true'로 설정할 수 있다. 이때, 제로화 할 영역(355)과 관련된 정보에 대한 암호화에 실패하였으므로, 커널(430)은 프로세스 C(413)의 힙 또는 스택 전체를 제로화하기 위해 제2 정보를 'true'로 설정할 수 있다. 이때, 제로화 할 영역(355)과 관련된 정보에 대한 암호화에 실패하였으므로 제로화 정보(435) 중 제로화 할 영역의 리스트에 대한 정보, 즉 제3 정보의 값은 저장되지 않을 수 있다.
도 5는 다른 실시예에 따른 메모리 제로화 방법을 나타낸 흐름도이다. 이하 실시예에서 각 동작들은 순차적으로 수행될 수도 있으나, 반드시 순차적으로 수행되는 것은 아니다. 예를 들어, 각 동작들의 순서가 변경될 수도 있으며, 적어도 두 동작들이 병렬적으로 수행될 수도 있다.
도 5를 참조하면, 일 실시예에 따른 사용자 단말(101, 800)은 동작 510 내지 동작 560을 통해 제로화를 수행할 수 있다.
동작 510에서, 사용자 단말(101, 800)은 복수의 프로세스들(411, 412, 413) 중 어느 하나의 앱 프로세스로부터 메모리 할당 요청을 수신할 수 있다.
동작 520에서, 사용자 단말(101, 800)은 동작 510에서 메모리 할당을 요청한 앱 프로세스에게 가용 메모리 영역을 할당할 수 있다.
동작 530에서, 사용자 단말(101, 800)은 동작 520에서 앱 프로세스에게 할당된 메모리 영역 중 앱 프로세스가 제로화 할 영역(315)을 지정함에 응답하여, 제로화 할 영역(315)과 관련된 정보를 암호화할 수 있다. 일 실시예에서 제로화 할 영역(315)과 관련된 정보를 암호화하는 이유는 다음과 같다. 특정 시점에 제로화를 수행하기 위해서 하나 이상의 제로화 할 영역을 미리 지정하고, 하나 이상의 제로화 할 영역과 관련된 정보(예: 하나 이상의 제로화 할 영역의 주소)를 메모리에 보관(저장)할 수 있다. 이 경우, 하나 이상의 제로화 할 영역의 주소를 저장하는 것은 또 다른 보안 문제를 야기할 수 있다. 예를 들어, 하나 이상의 제로화 할 영역에 대한 정보가 저장된 메모리 영역을 읽어낼 수 있다면, 공격자는 0으로 제로화를 해야 할 만큼 중요한 데이터들이 어디에 저장되어 있는지 그 위치를 손쉽게 모두 알아낼 수 있다. 따라서, 일 실시예에서는 0으로 제로화 할 영역이 어디인지 공격자가 알 수 없도록, 하나 이상의 제로화 할 영역에 대한 정보를 개별적으로 암호화하여 안전하게 보관할 수 있다.
동작 540에서, 사용자 단말(101, 800)은 동작 530에서 암호화된 정보(예: 제로화 할 영역(315)의 시작 주소 및 크기 정보)에 대응하는 제로화 정보를 저장할 수 있다.
동작 550에서, 사용자 단말(101, 800)은 앱 프로세스가 할당된 메모리 영역에 대한 사용을 완료하기 전에 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링할 수 있다.
동작 560에서, 사용자 단말(101, 800)은 동작 550의 모니터링 결과, 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는 경우, 동작 540에서 저장한 제로화 정보에 기초하여 동작 530에서 암호화된 정보를 복호화 함으로써 제로화 할 영역(315)에 대한 제로화를 수행할 수 있다.
예를 들어, 사용자 단말(101, 800)의 커널이 제로화 정보의 저장에 실패한 경우, 제로화 정보의 읽기(read)에 실패한 경우, 제로화 할 영역(315)과 관련된 정보에 대한 암호화에 실패한 경우, 또는 부트 로더(705)가 암호화된 정보에 대한 복호화에 실패한 경우, 사용자 단말(101, 800)은 해당 앱 프로세스에게 할당된 메모리 영역 전체를 제로화하거나, 또는 해당 앱 프로세스의 스택 또는 힙을 제로화 할 수 있다.
도 6은 일 실시예에 따른 사용자 단말(101, 800)에서 구동되는 앱 프로세스와 운영 체제(OS) 간의 동작을 도시한 도면이다. 이하 실시예에서 각 동작들은 순차적으로 수행될 수도 있으나, 반드시 순차적으로 수행되는 것은 아니다. 예를 들어, 각 동작들의 순서가 변경될 수도 있으며, 적어도 두 동작들이 병렬적으로 수행될 수도 있다.
도 6을 참조하면, 공격자의 공격(630)이 발생한 경우, 사용자 단말(101, 800)의 운영 체제(OS)(예: 도 1의 운영 체제(142))가 동작 605 내지 동작 635을 통해 프로세스 A(예: 도 4의 앱 프로세스(411))가 설정한 제로화 할 영역(315)을 제로화하는 과정이 도시된다.
동작 605에서, 프로세스 A(411)는 민감 데이터(예: 키(key), 패스워드(PW), 기타 개인 정보)를 저장할 메모리(예: 힙(heap), 또는 스택(stack))의 할당을 운영 체제(OS)(142)에게 요청할 수 있다. 앱 프로세스 A(411)는 예를 들어, malloc() 함수를 호출하여 운영 체제(OS)(142)에게 힙(heap)의 할당을 요청할 수 있다.
동작 610에서, 운영 체제(OS)(142)는 가용한 메모리 영역(예: DRAM)을 제로화한 후 프로세스 A(411)에게 할당할 수 있다. 운영 체제(OS)(142)는 예를 들어, 가용한 메모리 영역을 프로세스 A(411)에게 할당하기 전에 제로화 할 수도 있고, 또는 사용을 종료한 다른 프로세스로부터 해당 메모리 영역을 반납 받을 때 제로화하여 프로세스 A(411)에게 할당할 수도 있다. 운영 체제(OS)(142)가 프로세스 A(411)에게 메모리 영역을 할당하기 전에 수행되는 제로화는 어떠한 방식으로 수행되더라도 문제되지 않는다.
동작 615에서, 프로세스 A(411)는 운영 체제(OS)(142)로부터 할당받은 메모리 영역(예: 힙(heap))을 제로화 할 영역(315)으로 지정할 것을 요청할 수 있다. 프로세스 A(411)는 응용 프로그램 인터페이스(API)를 호출하여 제로화 할 영역(315)을 지정할 것을 요청할 수 있다. 프로세스 A(411)는 예를 들어, 제로화 할 영역(315)의 시작 주소와 크기(길이)를 응용 프로그램 인터페이스(API)의 입력값으로 전달할 수 있다.
프로세스 A(411)에 의해 응용 프로그램 인터페이스(API)가 호출되면, 동작 620에서, 운영 체제(OS)(142)는 응용 프로그램 인터페이스(API)로부터 전달받은 제로화 할 영역(315)의 시작 주소와 크기(길이)에 해당하는 영역을 제로화 할 영역(315)을 설정하고, 해당 제로화 할 영역(315)을 암호화할 수 있다. 이때, 운영 체제(OS)(142)는 프로세스 A(411)에 대응하는 제로화 정보(433)를 아래와 같이 갱신할 수 있다.
- 제1 정보('needToZeroize') = true,
- 제2 정보('zeroizeAll') = false,
- 제3 정보('area list to be zeroized')에 암호화된 제로화 할 영역(315)과 관련된 정보를 추가함.
프로세스 A(411)에 대응하는 제로화 정보(433)는 프로세스 A(411)가 종료될 때 운영 체제(OS)(142)에 의해 모두 삭제될 수 있다.
동작 625에서, 프로세스 A(411)는 운영 체제(OS)(142)로부터 할당받은 메모리 영역에 민감한 데이터(예: 키, 암호, 패스워드, 기타 개인 정보)를 저장하여 사용할 수 있다.
예를 들어, 동작 625 이후에 동작 630에서 공격자(attacker)의 램 덤프 시도가 발생할 수 있다. 공격자의 램 덤프 시도에 따라 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는 것으로 모니터링되면, 동작 635에서 운영 체제(OS)(142)는 동작 620에서 저장한 각 프로세스의 제로화 정보로부터 제로화 할 영역(315)(들)을 확보하고 해당 영역(들)을 모두 제로화 할 수 있다.
동작 635에서 각 프로세스의 제로화 정보 중 제2 정보('zeroizeAll')가 'true'로 설정되어 있거나, 또는 암호화된 제로화 할 영역(315)과 관련된 정보의 복호화에 실패한 경우, 운영 체제(OS)(142)는 해당 프로세스의 스택과 힙 전체를 제로화 할 수 있다. 이는 공격자가 의도적인 DoS 공격에 의해 프로세서(120, 830)의 보안 영역에 대한 서비스 거부를 일으키는 방식으로 제로화 할 영역(315)과 관련된 정보에 대한 복호화를 방해할 경우에도 주요 데이터가 제로화될 수 있도록 하기 위한 조치에 해당할 수 있다. 운영 체제(OS)(142)는 예를 들어, 커널 내에 panic() 함수에 의해 해당 프로세스의 스택과 힙 전체에 대한 제로화를 수행할 수 있다.
예를 들어, 동작 630에서 공격자의 램 덤프 시도가 발생하지 않고, 동작 625에서 사용하던 메모리 영역에 대한 사용이 완료될 수 있다. 이 경우, 동작 640에서 프로세스 A(411)는 운영 체제(OS)(142)에게 해당 메모리 영역을 반납할 수 있다. 프로세스 A(411)는 예를 들어, memset() 함수를 호출하여 해당 메모리 영역(힙(heap))을 직접 제로화한 후, free() 함수를 호출하여 운영 체제(OS)(142)에게 힙(heap)을 반납할 수 있다.
동작 645에서, 운영 체제(OS)(142)는 프로세스 A(411)로부터 반납 받은 메모리 영역을 가용한 메모리 영역으로 표시할 수 있다. 운영 체제(OS)(142)는 예를 들어, 가용 리스트(available list)에서 프로세스 A(411)로부터 반납 받은 메모리 영역에 대응하는 데이터를 '00000000'로 제로화 할 수 있다. 운영 체제(OS)(142)는 프로세스 A(411)로부터 메모리 영역을 반납받은 때에 해당 영역을 제로화 할 수도 있고, 또는 다른 프로세스(예: 프로세스 B(412))에게 할당할 때에 제로화 할 수도 있다.
동작 650에서, 프로세스 B(412)가 운영 체제(OS)(142)에게 메모리 할당을 요청할 수 있다.
동작 655에서, 운영 체제(OS)(142)는 동작 650의 메모리 할당 요청에 응답하여, 가용한 메모리 영역을 프로세스 B(412) 에게 할당할 수 있다. 프로세스 A(411)가 반납한 메모리 영역도 가용한 메모리 영역 중 하나이므로, 운영 체제(OS)(142)는 프로세스 A(411)가 반납한 메모리 영역을 프로세스 B(412) 에게 할당하게 될 수도 있다.
일 실시예에 따르면, 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입할 경우, 운영 체제가 미리 지정한 영역들(예: 제로화 할 영역(315))을 모두 특정 값(예를 들어, '0') 또는 임의의 패턴으로 제로화하므로 공격자가 램 덤프를 통해 메모리(예: DRAM)에 남아있는 주요 데이터(예: 비밀 번호, 개인 정보)를 획득할 수 있는 기간, 다시 말해 공격에 취약한 기간(vulnerable period)이 존재하지 않아 주요 데이터의 노출 가능성을 줄일 수 있다.
도 7은 다른 실시예에 따른 메모리 제로화 방법을 나타낸 흐름도이다. 이하 실시예에서 각 동작들은 순차적으로 수행될 수도 있으나, 반드시 순차적으로 수행되는 것은 아니다. 예를 들어, 각 동작들의 순서가 변경될 수도 있으며, 적어도 두 동작들이 병렬적으로 수행될 수도 있다.
도 7을 참조하면, 일 실시예에 따른 사용자 단말(101, 800)의 앱 프로세스(701), 커널(703) 및 부트 로더(705)는 동작 710 내지 동작 790을 통해 제로화를 수행할 수 있다.
동작 710에서, 앱 프로세스(701)는 커널(703)에게 메모리 할당을 요청할 수 있다.
동작 720에서, 커널(703)은 메모리 할당을 요청한 앱 프로세스(701)에게 가용한 메모리 영역을 할당할 수 있다.
동작 730에서, 앱 프로세스(701)는 커널(703)로부터 할당된 메모리 영역 중 제로화 할 영역(315)을 지정할 수 있다. 앱 프로세스(701)가 응용 프로그램 인터페이스(API)를 호출하여 제로화 할 영역(315)을 지정하면, 커널(703)은 응용 프로그램 인터페이스(API)를 통해 앱 프로세스(701)가 지정한 제로화 할 영역(315)과 관련된 정보를 전달받을 수 있다.
동작 740에서, 커널(703)은 앱 프로세스(701)의 지정에 따른 메모리 영역을 제로화하 영역으로 설정하고, 동작 750에서 제로화 할 영역(315)과 관련된 정보(예: 제로화 할 영역(315)의 시작 주소 및 크기 정보)를 암호화할 수 있다.
동작 760에서, 커널(703)은 동작 750에서 암호화된 정보(예: 제로화 할 영역(315)의 시작 주소 및 크기 정보)에 대응하는 제로화 정보를 저장할 수 있다. 커널(703)은 제로화 정보를 부트 로더(705)에게 전달할 수도 있다.
동작 770에서, 커널(703)은 앱 프로세스(701)가 동작 720을 통해 할당된 메모리 영역에 대한 사용을 완료하기 전에 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링할 수 있다. 커널(703)은 램 덤프 확보가 가능한 모드(예: 업로드 모드(upload mode))로 진입할 이유를 셋팅하고 사용자 단말(101, 800)을 재부팅(reboot)시킬 수 있다. 사용자 단말(101, 800)이 재부팅되는 경우, 부트 로더(705)는 램 덤프 확보가 가능한 모드로 진입할 이유를 확인하여 정상 부팅을 수행할 지 또는 업로드 모드로 진입할지 여부를 판단할 수 있다. 예를 들어, 업로드 모드로 진입할 이유가 없다면, 부트 로더(705)는 정상 부팅을 수행할 수 있다. 이와 달리, 업로드 모드로 진입하게 되는 경우, 부트 로더(705는 해당 시점에서 제로화 할 영역에 대한 제로화를 수행할 수 있다.
동작 770의 모니터링 결과, 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하지 않는 경우, 커널(703)은 램 덤프 확보가 가능한 모드로의 진입을 계속 모니터링할 수도 있고, 또는 모니터링 동작을 종료할 수도 있다.
동작 770의 모니터링 결과, 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는 경우, 동작 780에서 부트 로더(705)는 동작 760에서 저장된 제로화 정보에 기초하여 동작 750에서 암호화된 정보를 복호화할 수 있다.
동작 790에서, 부트 로더(705)는 복호화된 정보(예: 제로화 할 영역(315)의 시작 주소 및 크기 정보)에 따라 제로화 할 영역(315)에 대한 제로화를 수행할 수 있다.
도 8은 일 실시예에 따른 사용자 단말의 블록도이다. 도 8을 참조하면, 일 실시예에 따른 사용자 단말(800)은 메모리(810) 및 프로세서(830)를 포함할 수 있다. 메모리(810) 및 프로세서(830)는 통신 버스(805)를 통해 서로 연결될 수 있다.
메모리(810)는 컴퓨터로 실행 가능한 명령어들(computer-executable instructions)을 저장할 수 있다. 이 밖에도, 메모리(810)는 상술한 프로세서(830)의 처리 과정에서 생성되는 다양한 정보들을 저장할 수 있다. 이 밖에도, 메모리(810)는 각종 데이터와 프로그램 등을 저장할 수 있다. 메모리(810)는 휘발성 메모리 또는 비휘발성 메모리를 포함할 수 있다. 메모리(810)는 하드 디스크 등과 같은 대용량 저장 매체를 구비하여 각종 데이터를 저장할 수 있다.
프로세서(830)는 복수의 프로세스들의 구동을 위해 메모리(810)에 액세스(access)하여 저장된 명령어들을 실행할 수 있다. 이때, 명령어들은 복수의 프로세스들 중 어느 하나의 앱 프로세스에게 할당된 메모리 영역 중 제로화 할 영역에 대응하는 제로화 정보를 저장하도록 구성될 수 있다. 또한, 명령어들은 앱 프로세스가 할당된 메모리 영역에 대한 사용을 완료하기 전에 사용자 단말이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하도록 구성될 수 있다. 또한, 명령어들은 램 덤프 확보가 가능한 모드로 진입한 경우, 제로화 정보에 기초하여 제로화 할 영역을 제로화 하도록 구성될 수 있다.
또한, 프로세서(830)는 도 1 내지 도 7을 통해 전술한 적어도 하나의 방법 또는 적어도 하나의 방법에 대응되는 알고리즘을 수행할 수 있다. 프로세서(830)는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 사용자 단말일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다. 프로세서(830)는 예를 들어, CPU(Central Processing Unit), GPU(Graphics Processing Unit), 또는 NPU(Neural network Processing Unit)으로 구성될 수 있다. 예를 들어, 하드웨어로 구현된 사용자 단말(800)는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
프로세서(830)는 프로그램을 실행하고, 사용자 단말(800)를 제어할 수 있다. 프로세서(830)에 의하여 실행되는 프로그램 코드는 메모리(810)에 저장될 수 있다.
일 실시예에 따르면, 사용자 단말(101, 800)은 컴퓨터로 실행 가능한 명령어들(computer-executable instructions)이 저장된 메모리(130, 810), 및 복수의 프로세스들(411, 412, 413)(processes)의 구동을 위해 상기 메모리(130, 810)에 액세스(access)하여 상기 명령어들을 실행하는 프로세서(120, 830)를 포함하고, 상기 명령어들은, 상기 복수의 프로세스들(411, 412, 413) 중 어느 하나의 앱 프로세스에게 할당된 메모리(130, 810) 영역 중 제로화 할 영역(315, 355)에 대응하는 제로화 정보(433, 434, 435)를 저장하고, 상기 앱 프로세스가 상기 할당된 메모리(130, 810) 영역에 대한 사용을 완료하기 전에 상기 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하며, 상기 램 덤프 확보가 가능한 모드로 진입한 경우, 상기 제로화 정보(433, 434, 435)에 기초하여 상기 제로화 할 영역(315, 355)을 제로화 하도록 구성될 수 있다.
일 실시예에 따르면, 상기 제로화 정보(433, 434, 435)는 상기 할당된 메모리(130, 810) 영역에 상기 제로화 할 영역(315, 355)이 1개 이상 존재하는지 여부를 나타내는 제1 정보, 상기 앱 프로세스의 스택(stack) 또는 힙(heap) 전체를 제로화 할 지 여부를 나타내는 제2 정보, 및 상기 제로화 할 영역(315, 355)의 리스트를 나타내는 제3 정보 중 적어도 하나를 포함할 수 있다.
일 실시예에 따르면, 상기 제로화 할 영역(315, 355)은 상기 앱 프로세스가 응용 프로그램 인터페이스(API)에게 상기 제로화 할 영역(315, 355)의 시작 주소와 상기 제로화 할 영역(315, 355)의 크기를 전달함으로써 설정될 수 있다.
일 실시예에 따르면, 상기 명령어들은, 미리 정해진 키 조합의 입력 및 커널 패닉 중 적어도 하나의 발생 여부에 의해 상기 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하도록 구성될 수 있다.
일 실시예에 따르면, 상기 명령어들은 상기 할당된 메모리(130, 810) 영역 중 상기 제로화 할 영역(315, 355)과 관련된 정보를 암호화하도록 더 구성될 수 있다.
일 실시예에 따르면, 상기 제로화 할 영역(315, 355)과 관련된 정보는 상기 할당된 메모리(130, 810) 영역 중 상기 제로화 할 영역(315, 355)의 시작 주소 및 상기 제로화 할 영역(315, 355)의 크기를 포함할 수 있다.
일 실시예에 따르면, 상기 명령어들은 상기 제로화 정보(433, 434, 435)에 기초하여, 상기 제로화 할 영역(315, 355)과 관련된 정보에 대한 암호화에 실패했는지 여부를 결정하고, 상기 암호화에 실패한 것으로 결정된 경우, 상기 할당된 메모리(130, 810) 영역 전체를 제로화하거나, 또는 상기 앱 프로세스의 스택 또는 힙을 제로화하도록 더 구성될 수 있다.
일 실시예에 따르면, 상기 명령어들은 상기 제로화 정보(433, 434, 435)에 기초하여, 상기 암호화된 정보를 복호화하고, 상기 복호화된 정보에 따라 상기 제로화 할 영역(315, 355)에 대한 상기 제로화를 수행하도록 구성될 수 있다.
일 실시예에 따르면, 상기 명령어들은 상기 암호화된 정보에 대한 상기 복호화에 실패한 경우, 상기 할당된 메모리(130, 810) 영역 전체를 제로화하는 동작, 및 상기 앱 프로세스의 스택(stack) 또는 힙(heap)을 제로화하는 동작 중 적어도 하나를 더 수행하도록 구성될 수 있다.
일 실시예에 따르면, 상기 명령어들은 상기 앱 프로세스로부터 상기 제로화 할 영역(315, 355)에 대한 지정을 수신하도록 더 구성될 수 있다.
일 실시예에 따르면, 상기 명령어들은 상기 제로화 정보(433, 434, 435)의 저장에 실패한 경우, 또는 상기 제로화 정보(433, 434, 435)의 읽기(read)에 실패한 경우, 상기 할당된 메모리(130, 810) 영역 전체를 제로화하는 동작, 및 상기 앱 프로세스의 스택(stack) 또는 힙(heap)을 제로화하는 동작 중 적어도 하나를 더 수행하도록 구성될 수 있다.
일 실시예에 따르면, 상기 명령어들은 상기 앱 프로세스의 동작이 종료됨에 따라 상기 앱 프로세스의 제로화 정보(433, 434, 435)를 삭제하도록 구성될 수 있다.
일 실시예에 따르면, 사용자 단말(101, 800)에서 구동되는 복수의 프로세스들(411, 412, 413)의 메모리(130, 810) 제로화 방법은 상기 복수의 프로세스들(411, 412, 413) 중 어느 하나의 앱 프로세스에게 할당된 메모리(130, 810) 영역 중 제로화 할 영역(315, 355)에 대응하는 제로화 정보(433, 434, 435)를 저장하는 동작 210, 상기 앱 프로세스가 상기 할당된 메모리(130, 810) 영역에 대한 사용을 완료하기 전에 상기 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하는 동작 220, 및 상기 램 덤프 확보가 가능한 모드로 진입하는 경우, 상기 제로화 정보(433, 434, 435)에 기초하여 상기 제로화 할 영역(315, 355)에 대한 제로화를 수행하는 동작 230을 포함할 수 있다.
일 실시예에 따르면, 상기 모니터링하는 동작은 미리 정해진 키 조합의 입력 및 커널 패닉 중 적어도 하나의 발생 여부에 의해 상기 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하는 동작을 포함할 수 있다.
일 실시예에 따르면, 상기 메모리(130, 810) 제로화 방법은 상기 할당된 메모리(130, 810) 영역 중 상기 제로화 할 영역(315, 355)과 관련된 정보를 암호화하는 동작을 더 포함할 수 있다.
일 실시예에 따르면, 상기 제로화 할 영역(315, 355)과 관련된 정보는 상기 할당된 메모리(130, 810) 영역 중 상기 제로화 할 영역(315, 355)의 시작 주소 및 상기 제로화 할 영역(315, 355)의 크기를 포함할 수 있다.
일 실시예에 따르면, 사용자 단말(101, 800)에서 구동되는 복수의 프로세스들(411, 412, 413)의 메모리(130, 810) 제로화 방법은 상기 복수의 프로세스들(411, 412, 413) 중 어느 하나의 앱 프로세스로부터 메모리(130, 810) 할당의 요청을 수신함에 따라, 상기 앱 프로세스에게 가용 메모리(130, 810) 영역을 할당하는 동작 510, 520, 상기 앱 프로세스에게 할당된 메모리(130, 810) 영역 중 상기 앱 프로세스가 제로화 할 영역(315, 355)을 지정함에 응답하여, 상기 제로화 할 영역(315, 355)과 관련된 정보를 암호화하는 동작 5360, 상기 제로화 할 영역(315, 355)에 대응하는 제로화 정보(433, 434, 435)를 저장하는 동작 540, 상기 앱 프로세스가 상기 할당된 메모리(130, 810) 영역에 대한 사용을 완료하기 전에 상기 사용자 단말(101, 800)이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하는 동작 550, 및 상기 램 덤프 확보가 가능한 모드로 진입하는 경우, 상기 제로화 정보(433, 434, 435)에 기초하여 상기 암호화된 정보를 복호화 함으로써 상기 제로화 할 영역(315, 355)에 대한 제로화를 수행하는 동작 560을 포함할 수 있다.
일 실시예에 따르면, 상기 제로화 정보(433, 434, 435)는 상기 할당된 메모리(130, 810) 영역에 상기 제로화 할 영역(315, 355)이 1개 이상 존재하는지 여부를 나타내는 제1 정보, 상기 앱 프로세스의 스택(stack) 또는 힙(heap) 전체를 제로화 할 지 여부를 나타내는 제2 정보, 및 상기 제로화 할 영역(315, 355)의 리스트를 나타내는 제3 정보 중 적어도 하나를 포함할 수 있다.
일 실시예에 따르면, 상기 메모리(130, 810) 제로화 방법은 상기 제로화 정보(433, 434, 435)의 저장에 실패한 경우, 상기 제로화 정보(433, 434, 435)의 읽기(read)에 실패한 경우, 상기 제로화 할 영역(315, 355)과 관련된 정보에 대한 암호화에 실패한 경우, 및 상기 암호화된 정보에 대한 복호화에 실패한 경우 중 적어도 하나의 경우에, 상기 할당된 메모리(130, 810) 영역 전체를 제로화하는 동작, 및 상기 앱 프로세스의 스택(stack) 또는 힙(heap)을 제로화하는 동작 중 적어도 하나를 더 포함할 수 있다.

Claims (20)

  1. 사용자 단말에 있어서,
    컴퓨터로 실행 가능한 명령어들(computer-executable instructions)이 저장된 메모리; 및
    복수의 프로세스들(processes)의 구동을 위해 상기 메모리에 액세스(access)하여 상기 명령어들을 실행하는 프로세서
    를 포함하고,
    상기 명령어들은,
    상기 복수의 프로세스들 중 어느 하나의 앱 프로세스에게 할당된 메모리 영역 중 제로화 할 영역에 대응하는 제로화 정보를 저장하고,
    상기 앱 프로세스가 상기 할당된 메모리 영역에 대한 사용을 완료하기 전에 상기 사용자 단말이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하며,
    상기 램 덤프 확보가 가능한 모드로 진입한 경우, 상기 제로화 정보에 기초하여 상기 제로화 할 영역을 제로화 하도록 구성되는,
    사용자 단말.
  2. 제1항에 있어서,
    상기 제로화 정보는
    상기 할당된 메모리 영역에 상기 제로화 할 영역이 1개 이상 존재하는지 여부를 나타내는 제1 정보;
    상기 앱 프로세스의 스택(stack) 또는 힙(heap) 전체를 제로화 할 지 여부를 나타내는 제2 정보; 및
    상기 제로화 할 영역의 리스트를 나타내는 제3 정보
    중 적어도 하나를 포함하는, 사용자 단말.
  3. 제1항에 있어서,
    상기 제로화 할 영역은
    상기 앱 프로세스가 응용 프로그램 인터페이스(API)에게 상기 제로화 할 영역의 시작 주소와 상기 제로화 할 영역의 크기를 전달함으로써 설정되는, 사용자 단말.
  4. 제1항에 있어서,
    상기 명령어들은,
    미리 정해진 키 조합의 입력 및 커널 패닉 중 적어도 하나의 발생 여부에 의해 상기 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하도록 구성되는, 사용자 단말.
  5. 제1항에 있어서,
    상기 명령어들은
    상기 할당된 메모리 영역 중 상기 제로화 할 영역과 관련된 정보를 암호화하도록 더 구성되는, 사용자 단말.
  6. 제5항에 있어서,
    상기 제로화 할 영역과 관련된 정보는
    상기 할당된 메모리 영역 중 상기 제로화 할 영역의 시작 주소 및 상기 제로화 할 영역의 크기를 포함하는, 사용자 단말.
  7. 제5항에 있어서,
    상기 명령어들은
    상기 제로화 정보에 기초하여, 상기 제로화 할 영역과 관련된 정보에 대한 암호화에 실패했는지 여부를 결정하고,
    상기 암호화에 실패한 것으로 결정된 경우, 상기 할당된 메모리 영역 전체를 제로화하거나, 또는 상기 앱 프로세스의 스택 또는 힙을 제로화하도록 더 구성되는, 사용자 단말.
  8. 제5항에 있어서,
    상기 명령어들은
    상기 제로화 정보에 기초하여, 상기 암호화된 정보를 복호화하고,
    상기 복호화된 정보에 따라 상기 제로화 할 영역에 대한 상기 제로화를 수행하도록 구성되는, 사용자 단말.
  9. 제8항에 있어서,
    상기 명령어들은
    상기 암호화된 정보에 대한 상기 복호화에 실패한 경우,
    상기 할당된 메모리 영역 전체를 제로화하는 동작; 및
    상기 앱 프로세스의 스택(stack) 또는 힙(heap)을 제로화하는 동작
    중 적어도 하나를 더 수행하도록 구성되는, 사용자 단말.
  10. 제1항에 있어서,
    상기 명령어들은
    상기 앱 프로세스로부터 상기 제로화 할 영역에 대한 지정을 수신하도록 더 구성되는, 사용자 단말.
  11. 제1항에 있어서,
    상기 명령어들은
    상기 제로화 정보의 저장에 실패한 경우, 또는 상기 제로화 정보의 읽기(read)에 실패한 경우,
    상기 할당된 메모리 영역 전체를 제로화하는 동작; 및
    상기 앱 프로세스의 스택(stack) 또는 힙(heap)을 제로화하는 동작
    중 적어도 하나를 더 수행하도록 구성되는, 사용자 단말.
  12. 제1항에 있어서,
    상기 명령어들은
    상기 앱 프로세스의 동작이 종료됨에 따라 상기 앱 프로세스의 제로화 정보를 삭제하도록 구성되는, 사용자 단말.
  13. 사용자 단말에서 구동되는 복수의 프로세스들(processes)의 메모리 제로화 방법에 있어서,
    상기 복수의 프로세스들 중 어느 하나의 앱 프로세스에게 할당된 메모리 영역 중 제로화 할 영역에 대응하는 제로화 정보를 저장하는 동작;
    상기 앱 프로세스가 상기 할당된 메모리 영역에 대한 사용을 완료하기 전에 상기 사용자 단말이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하는 동작; 및
    상기 램 덤프 확보가 가능한 모드로 진입하는 경우, 상기 제로화 정보에 기초하여 상기 제로화 할 영역에 대한 제로화를 수행하는 동작
    을 포함하는, 메모리 제로화 방법.
  14. 제13항에 있어서,
    상기 모니터링하는 동작은
    미리 정해진 키 조합의 입력 및 커널 패닉(kernel panic) 중 적어도 하나의 발생 여부에 의해 상기 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하는 동작
    을 포함하는, 메모리 제로화 방법.
  15. 제13항에 있어서,
    상기 할당된 메모리 영역 중 상기 제로화 할 영역과 관련된 정보를 암호화하는 동작
    을 더 포함하는, 메모리 제로화 방법.
  16. 제15항에 있어서,
    상기 제로화 할 영역과 관련된 정보는
    상기 할당된 메모리 영역 중 상기 제로화 할 영역의 시작 주소 및 상기 제로화 할 영역의 크기를 포함하는, 메모리 제로화 방법.
  17. 사용자 단말에서 구동되는 복수의 프로세스들의 메모리 제로화 방법에 있어서,
    상기 복수의 프로세스들 중 어느 하나의 앱 프로세스로부터 메모리 할당의 요청을 수신함에 따라, 상기 앱 프로세스에게 가용 메모리 영역을 할당하는 동작;
    상기 앱 프로세스에게 할당된 메모리 영역 중 상기 앱 프로세스가 제로화 할 영역을 지정함에 응답하여, 상기 제로화 할 영역과 관련된 정보를 암호화하는 동작;
    상기 제로화 할 영역에 대응하는 제로화 정보를 저장하는 동작;
    상기 앱 프로세스가 상기 할당된 메모리 영역에 대한 사용을 완료하기 전에 상기 사용자 단말이 램 덤프 확보가 가능한 모드로 진입하는지 여부를 모니터링하는 동작; 및
    상기 램 덤프 확보가 가능한 모드로 진입하는 경우, 상기 제로화 정보에 기초하여 상기 암호화된 정보를 복호화 함으로써 상기 제로화 할 영역에 대한 제로화를 수행하는 동작
    을 포함하는, 메모리 제로화 방법.
  18. 제17항에 있어서,
    상기 제로화 정보는
    상기 할당된 메모리 영역에 상기 제로화 할 영역이 1개 이상 존재하는지 여부를 나타내는 제1 정보;
    상기 앱 프로세스의 스택(stack) 또는 힙(heap) 전체를 제로화 할 지 여부를 나타내는 제2 정보; 및
    상기 제로화 할 영역의 리스트를 나타내는 제3 정보
    중 적어도 하나를 포함하는, 메모리 제로화 방법.
  19. 제17항에 있어서,
    상기 제로화 정보의 저장에 실패한 경우, 상기 제로화 정보의 읽기(read)에 실패한 경우, 상기 제로화 할 영역과 관련된 정보에 대한 암호화에 실패한 경우, 및 상기 암호화된 정보에 대한 복호화에 실패한 경우 중 적어도 하나의 경우에,
    상기 할당된 메모리 영역 전체를 제로화하는 동작; 및
    상기 앱 프로세스의 스택(stack) 또는 힙(heap)을 제로화하는 동작
    중 적어도 하나를 더 포함하는, 메모리 제로화 방법.
  20. 하드웨어와 결합되어 제13항 내지 제19항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 읽기 가능한 기록매체에 저장된 컴퓨터 프로그램.
KR1020210109500A 2021-08-19 2021-08-19 전자 장치 및 전자 장치의 메모리 제로화 방법 KR20230027561A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210109500A KR20230027561A (ko) 2021-08-19 2021-08-19 전자 장치 및 전자 장치의 메모리 제로화 방법
PCT/KR2022/009296 WO2023022362A1 (ko) 2021-08-19 2022-06-29 전자 장치 및 전자 장치의 메모리 제로화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210109500A KR20230027561A (ko) 2021-08-19 2021-08-19 전자 장치 및 전자 장치의 메모리 제로화 방법

Publications (1)

Publication Number Publication Date
KR20230027561A true KR20230027561A (ko) 2023-02-28

Family

ID=85240680

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210109500A KR20230027561A (ko) 2021-08-19 2021-08-19 전자 장치 및 전자 장치의 메모리 제로화 방법

Country Status (2)

Country Link
KR (1) KR20230027561A (ko)
WO (1) WO2023022362A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080012724A (ko) * 2006-08-03 2008-02-12 엘지전자 주식회사 기록매체, 데이터 기록방법 및 기록장치와 데이터 재생방법및 재생장치
US8510523B2 (en) * 2011-09-12 2013-08-13 Microsoft Corporation Memory dump with expanded data and user privacy protection
US9207942B2 (en) * 2013-03-15 2015-12-08 Intel Corporation Systems, apparatuses,and methods for zeroing of bits in a data element
US10140477B2 (en) * 2013-12-09 2018-11-27 Thales E-Security, Inc. Obfuscating in memory encryption keys
JP7279415B2 (ja) * 2019-02-28 2023-05-23 株式会社リコー 情報処理装置、情報処理方法、及びプログラム

Also Published As

Publication number Publication date
WO2023022362A1 (ko) 2023-02-23

Similar Documents

Publication Publication Date Title
KR20210017083A (ko) 퓨즈된 키에 기반하여 증명 인증서를 생성하는 전자 장치 및 방법
EP3709205B1 (en) Electronic device including secure integrated circuit
US20230198759A1 (en) Electronic device and memory protection method using same
US20220103350A1 (en) Electronic device for selecting key to be used for encryption on basis of amount of information of data to be encrypted, and operation method of electronic device
US20220292204A1 (en) Method of controlling clipboard and electronic device for performing the same
KR20230027561A (ko) 전자 장치 및 전자 장치의 메모리 제로화 방법
KR20220094847A (ko) 보안 데이터 처리 방법 및 이를 지원하는 전자 장치
KR20210026233A (ko) 디바이스 리소스에 대한 접근을 제어하기 위한 전자 장치 및 그의 동작 방법
US20230070759A1 (en) Electronic device for protecting user's biometric information
KR20220017319A (ko) 메모리 보호 방법 및 전자 장치
WO2024075929A1 (ko) 신뢰 실행 환경을 제공하기 위한 전자 장치
US20240134742A1 (en) Memory management method for security and electronic device therefor
US20240178990A1 (en) Electronic device for storing secure data and method for operating the same
US20230029025A1 (en) Electronic device and method of backing up secure element
US20230359530A1 (en) Electronic device for supporting data backup, and operation method thereof
KR20240047263A (ko) 신뢰 실행 환경을 제공하기 위한 전자 장치
US20230024628A1 (en) Electronic device and operating method
KR20230068230A (ko) 전자 장치의 초기화 상황에서 데이터 보존 방법 및 그 전자 장치
KR20230015155A (ko) 보안 요소의 백업을 수행하는 전자 장치 및 백업 방법
KR20240032591A (ko) 암호화된 데이터를 비휘발성 메모리 내에 저장하기 위한 전자 장치 및 그 방법
KR20230036286A (ko) 사용자의 생체 정보를 보호하기 위한 전자 장치
KR20230121299A (ko) 전자 장치 및 그 동작 방법
KR20220128725A (ko) 클립보드 제어 방법 및 그 방법을 수행하는 전자 장치
KR20230015784A (ko) 전자 장치 및 그의 동작 방법
KR20240044287A (ko) 전자 장치 및 이를 이용한 데이터 보호 방법