KR20230015956A - 애플리케이션 특정 네트워크 데이터 필터링 - Google Patents

애플리케이션 특정 네트워크 데이터 필터링 Download PDF

Info

Publication number
KR20230015956A
KR20230015956A KR1020227044773A KR20227044773A KR20230015956A KR 20230015956 A KR20230015956 A KR 20230015956A KR 1020227044773 A KR1020227044773 A KR 1020227044773A KR 20227044773 A KR20227044773 A KR 20227044773A KR 20230015956 A KR20230015956 A KR 20230015956A
Authority
KR
South Korea
Prior art keywords
application
sandbox
data
message
memory
Prior art date
Application number
KR1020227044773A
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 애플 인크.
Publication of KR20230015956A publication Critical patent/KR20230015956A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0245Filtering by information in the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/212Monitoring or handling of messages using filtering or selective blocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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
    • G06F21/79Protecting 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 in semiconductor storage media, e.g. directly-addressable memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Abstract

본 개시는 애플리케이션 특정 네트워크 데이터 필터링을 위한 시스템들 및 방법들을 제공한다. 애플리케이션 특정 네트워크 데이터 필터링은 네트워크 데이터가 지향된 애플리케이션에 네트워크 데이터를 제공하기 전에 샌드박스된 프로세스에 의해 수행될 수 있다. 네트워크 데이터에 포함되는 임의의 악성 또는 다른 잠재적으로 유해한 데이터는 애플리케이션 특정 네트워크 데이터 필터에 의해 제거될 수 있거나, 또는 샌드박스 내의 애플리케이션 특정 네트워크 데이터 필터링 동작들을 손상시켜 악성 또는 유해한 데이터가 전자 디바이스의 애플리케이션 또는 다른 부분들에 영향을 미치는 것을 방지할 수 있다. 하나 이상의 구현예들에서, 애플리케이션 특정 네트워크 데이터 필터링 프로세스와 같은 제1 프로세스는 전자 디바이스의 메모리 관리자와 별개인 애플리케이션과 같은 제2 프로세스로부터 제1 프로세스에 대한 메모리의 할당을 요청할 수 있다.

Description

애플리케이션 특정 네트워크 데이터 필터링
관련 출원의 상호 참조
본 출원은, 발명의 명칭이 "Application Specific Network Data Filtering"이고 2020년 6월 21일자로 출원된 미국 가특허 출원 제63/042,002호에 대한 우선권의 이점을 주장하며, 그 개시내용은 이로써 그 전체가 본 명세서에 포함된다.
기술분야
본 설명은 일반적으로 네트워크 데이터를 수신 및 프로세싱하는 것에 관한 것으로, 보다 상세하게는 애플리케이션 특정 네트워크 데이터 필터링에 관한 것이다.
텍스트 메시지들과 같은 메시지들은, 사용자에게 메시지들을 디스플레이하기 위해, 디바이스에서 메시징 애플리케이션에 의해 종종 수신 및 프로세싱된다.
본 기술의 특정 특징들은 첨부된 청구항들에 제시된다. 그렇지만, 설명을 위해, 본 기술의 여러 실시예들이 다음 도면들에서 제시된다.
도 1은 하나 이상의 구현예들에 따른, 전자 메시징을 위한 예시적인 네트워크 환경을 예시한다.
도 2는 하나 이상의 구현예들에 따른, 애플리케이션을 갖는 예시적인 전자 디바이스의 개략도를 예시한다.
도 3은 하나 이상의 구현예들에 따른, 애플리케이션 특정 네트워크 데이터 필터링을 구현하는 예시적인 전자 디바이스의 개략도를 예시한다.
도 4는 하나 이상의 구현예들에 따른, 애플리케이션 특정 네트워크 데이터 필터링을 위한 예시적인 프로세스를 예시한다.
도 5는 하나 이상의 구현예들에 따른, 연쇄적 애플리케이션 특정 네트워크 데이터 필터링을 위한 예시적인 프로세스를 예시한다.
도 6은 하나 이상의 구현예들에 따른, 애플리케이션 특정 네트워크 데이터 필터링을 위한 예시적인 프로세스의 흐름도를 예시한다.
도 7은 하나 이상의 구현예들에 따른, 다른 프로세스에 의해 사용하기 위한 하나의 프로세스의 메모리의 할당을 구현하는 예시적인 전자 디바이스의 개략도를 예시한다.
도 8은 하나 이상의 구현예들에 따른, 다른 프로세스에 할당된 메모리를 제1 프로세스에 의해 사용하도록 구현하는 예시적인 전자 디바이스의 개략도를 예시한다.
도 9는 하나 이상의 구현예들에 따른, 다른 프로세스에 의해 할당된 메모리를 사용하여 데이터를 프로세싱하기 위해 하나의 프로세스에 의해 수행될 수 있는 예시적인 동작들의 흐름도를 예시한다.
도 10은 하나 이상의 구현예들에 따른, 다른 프로세스에 의한 데이터의 프로세싱을 위해 하나의 프로세스에 의한 메모리의 할당을 위해 수행될 수 있는 예시적인 동작들의 흐름도를 예시한다.
도 11은 하나 이상의 구현예들에 따른, 본 기술의 양태들이 구현될 수 있는 예시적인 전자 시스템을 예시한다.
아래에 제시되는 상세한 설명은 본 기술의 다양한 구성들에 대한 설명으로 의도되며 본 기술이 실시될 수 있는 유일한 구성들을 나타내는 것으로 의도되지 않는다. 첨부된 도면들은 본 명세서에 포함되고, 상세한 설명의 일부를 구성한다. 상세한 설명은 본 기술의 완전한 이해를 제공하는 목적을 위한 특정 세부사항들을 포함한다. 그러나, 본 기술은 본 명세서에 기재된 특정 세부사항들로 제한되지 않으며, 하나 이상의 다른 구현예들을 사용하여 실시될 수 있다. 하나 이상의 구현예들에서, 본 기술의 개념들을 모호하게 하는 것을 피하기 위해, 구조들 및 컴포넌트들은 블록도 형태로 도시된다.
개인용 컴퓨터들(예컨대, 데스크톱 컴퓨터들 및 랩톱 컴퓨터들), 휴대용 전자 디바이스들(예컨대, 태블릿 컴퓨터들 및 스마트폰들) 및 웨어러블 디바이스들(예컨대, 스마트워치들 등)과 같은 전자 디바이스들은 종종 네트워크를 통해 다른 디바이스 또는 서버로부터 애플리케이션 특정 네트워크 데이터를 수신 및 프로세싱하는 애플리케이션들을 포함한다. 예를 들어, 디바이스는 전자 메시지들(예컨대, 텍스트, 이미지들, 비디오 콘텐츠, 오디오 콘텐츠 및/또는 다른 객체들을 포함함)을 수신 및 프로세싱하고, 메시징 애플리케이션의 사용자 인터페이스에서 메시지 콘텐츠를 디스플레이하기 위해 메시지들을 프로세싱하는 메시징 애플리케이션을 포함할 수 있다. 메시지들은, 전자 디바이스에서, 다른 사용자의 다른 전자 디바이스로부터 직접, 서버로부터 또는 다른 네트워크 디바이스로부터 수신될 수 있다. 다른 예에서, 브라우저 애플리케이션은 하이퍼텍스트 전송 프로토콜(http) 요청에 대한 http 응답과 같은 네트워크 데이터를 수신할 수 있고, 브라우저 애플리케이션의 사용자 인터페이스에서 웹 콘텐츠를 디스플레이하고/하거나 http 응답에 따라 다른 자원들을 얻기 위해 http 응답을 프로세싱할 수 있다.
네트워크 데이터는 종종 인코딩된 데이터 스트림으로서 수신되며, 이는 애플리케이션에 의한 추가 프로세싱을 위해(예컨대, 메시지의 디스플레이 또는 웹 페이지의 렌더링을 위해) 유용한 데이터(예컨대, 텍스트 필드들, 이미지들, 비디오, 그래픽들 및/또는 다른 메시지 콘텐츠와 같은 다양한 객체 유형들의 객체들)로 파싱, 디코딩 및/또는 언팩킹되도록 대응하는 애플리케이션에 제공된다.
네트워크 시스템들 및 서버들, 및/또는 수신 디바이스에서 보안 소프트웨어는 알려진 악성 콘텐츠에 대해 착신 메시지 또는 다른 네트워크 데이터를 스캔할 수 있다. 이들 시스템들 및/또는 보안 소프트웨어는 알려진 악성 콘텐츠가 디바이스에 도달하거나 디바이스에서 액세스되는 것을 방지하도록 의도된다. 그러나, 애플리케이션 - 네트워크 데이터가 의도된 애플리케이션 -이 데이터를 파싱, 디코딩 및/또는 언팩킹할 때까지는, 이러한 시스템들 및/또는 보안 소프트웨어를 네트워크 데이터에 적용하는 것은 때때로 어렵거나 불가능하다. 따라서 네트워크 데이터를 파싱, 디코딩 및/또는 언팩킹하기 위한 애플리케이션 특정 프로세스들은 심지어 보안 소프트웨어를 통과한 후에도 애플리케이션 및/또는 디바이스의 다른 부분들에 충돌을 일으킬 수 있는 악성 또는 의도하지 않은 손상에 취약할 수 있다. 또한, 이러한 시스템들 및/또는 보안 소프트웨어는 전형적으로 아직 알려져 있지 않은 악성 또는 다른 잠재적으로 문제가 있는 콘텐츠를 정지시킬 수 없다.
본 기술의 구현예들에 따르면, 애플리케이션 특정 네트워크 데이터 필터링이 제공되며, 이는 디바이스에서 수신 및 프로세싱되는 객체들 및/또는 다른 메시지 콘텐츠가 있을 것이며, 이것이 네트워크 데이터의 프로세싱을 위한 애플리케이션 특정 프로세스들의 충돌들/침해(compromise)들/손상을 야기할 것이고, 그렇지 않으면 이전 보안 소프트웨어에서 검출되지 않을 수 있다고 가정한다. 이러한 침해된 프로세스들이 디바이스의 애플리케이션 또는 다른 부분들을 침해하지 않도록 보장하기 위해, 네트워크 데이터를 파싱, 디코딩, 및/또는 언팩킹하기 위한 애플리케이션 특정 프로세스들은 애플리케이션과 별개인 샌드박스(sandbox) 내에서 수행된다. 샌드박스 내의 애플리케이션 특정 동작들에 이어서, 샌드박스 내의 네트워크 데이터로부터 생성된 객체들은 샌드박스 및 애플리케이션과 별개인 스키마 검증(schema validation)을 거친다. 스키마 검증을 통과한 검증된 객체들은 애플리케이션의 사용자 인터페이스에서 추가 프로세싱 및/또는 디스플레이를 위해 애플리케이션에 제공될 수 있다.
샌드박스 허가들에 대한 엄격한 제한들 및 후속 스키마 검증들로 인해, 샌드박스의 애플리케이션 특정 동작들 중 일부 또는 전부가 침해 또는 손상되더라도, 이러한 침해/손상이 애플리케이션 또는 디바이스에 대한 다른 문제들을 야기하는 것이 방지된다. 이러한 방식으로 샌드박스의 프로세스들 중 일부 또는 전부가 애플리케이션 특정 동작들에 의해 손상되도록 허용하는 것은 본 명세서에 개시된 샌드박스 및 스키마 검증이 착신 네트워크 데이터에서 공지된 문제 및 미지의 문제들을 확인할 수 있게 한다.
하나 이상의 구현예들에 따르면, 메시지를 프로세싱하도록 구성된 애플리케이션과 별개인 샌드박스 내에서, (i) 메시지에 수신된 객체에 대한 객체 유형을 결정하는 단계, 및 (ii) 결정된 객체 유형에 기초하여 객체를 생성하고, 이어서 샌드박스의 외부 및 애플리케이션의 외부에서, 결정된 유형에 기초하여 객체의 스키마 검증을 수행하는 단계를 포함하는 방법이 제공된다.
네트워크 데이터가 메시징 애플리케이션에 제공될 메시지를 포함하는 다양한 예들이 본 명세서에 기술된다. 그러나, 본 기술은 네트워크를 통해 수신되거나, 특정 애플리케이션과 함께 사용하기 위한 다른 디바이스로부터 수신된 임의의 데이터에 적용될 수 있음을 이해해야 한다. 네트워크 데이터의 다른 예들은 푸시 통지들, http 요청 응답들, 다운로드된 문서들 등을 포함할 수 있다.
도 1은 하나 이상의 구현예들에 따른, 다양한 디바이스들을 포함하는 예시적인 네트워크 환경(100)을 예시한다. 그러나, 도시된 컴포넌트들 모두가 모든 구현예들에서 사용될 수 있는 것은 아니며, 하나 이상의 구현예들은 도면에 도시된 것들 이외의 추가적인 또는 그들과 상이한 컴포넌트들을 포함할 수 있다. 컴포넌트들의 배열 및 유형의 변형들이 본 명세서에 기재된 바와 같은 청구범위의 사상 또는 범주로부터 벗어남이 없이 이루어질 수 있다. 추가적인 컴포넌트들, 상이한 컴포넌트들, 또는 더 적은 컴포넌트들이 제공될 수 있다.
네트워크 환경(100)은 전자 디바이스들(102, 104), 네트워크(106), 및 네트워크(106)에 통신가능하게 결합된 하나 이상의 서버들(120)을 포함한다. 예를 들어, 네트워크(106)는 인터넷과 같은 공용 네트워크의 부분들을 포함할 수 있다. 네트워크(106)는 대응하는 전자 디바이스를 더 넓은 인터넷에 결합하는, 전자 디바이스들(102, 104) 각각에 로컬인 Wi-Fi 라우터들 및/또는 이더넷 연결들과 같은 근거리 통신망(LAN) 컴포넌트들을 포함할 수 있다. 전자 디바이스들(102 및/또는 104)을 인터넷에 연결하는 LAN은 하나 이상의 상이한 네트워크 디바이스들/네트워크 매체들을 포함할 수 있고/있거나 이더넷, 광학, Wi-Fi, 블루투스, 지그비, 파워라인 오버 이더넷(Powerline over Ethernet), 동축, Z-Wave, 일반적으로 전자 디바이스를 인터넷에 통신가능하게 결합할 수 있는 모든 무선 및/또는 유선 네트워크 기술과 같은 하나 이상의 상이한 무선 및/또는 유선 네트워크 기술을 활용할 수 있다. 네트워크(106)의 부분들은 여러 지리적 "셀들"의 각각의 고정 위치들에서 하나 이상의 베이스 송수신기들을 포함하는 셀룰러 통신 네트워크를 포함하며, 베이스 송수신기들은 전자 디바이스들(102, 104)과 같은 엔드(end) 디바이스들과 무선으로 통신하고, 음성 호출들 및 텍스트 메시지들, 모바일 데이터, 및 공중 전화를 위한 다양한 스위칭 네트워크들과의 유선 및/또는 위성 통신들을 통해 통신한다.
전자 디바이스들(102, 104)은 텍스트 메시지들, 다중 매체 메시지들과 같은 메시지들을 서로 전송 및/또는 수신하고/하거나, 다른 전자 디바이스들과 직접 그리고/또는 네트워크(106)를 통해 메시지들을 전송 및/또는 수신할 수 있다. 전자 디바이스(102 및/또는 104)는 또한 서버들(120)과 같은 하나 이상의 서버들로부터 또는 이를 통해 메시지들 및/또는 다른 네트워크 데이터를 수신할 수 있다. 네트워크(106)를 통해 수신된 네트워크 데이터가 디바이스의 부분들에 충돌하거나 또는 달리 손상시키거나 침해하는 것을 방지하기 위해, 전자 디바이스들(102, 104)은 본 명세서에 기술된 바와 같은 네트워크 데이터의 애플리케이션 특정 필터링을 구현할 수 있다.
전자 디바이스들(102, 104) 중 하나 이상은, 예를 들어, 랩톱 컴퓨터, 스마트폰, 스마트 스피커, 주변 디바이스(예컨대, 디지털 카메라, 헤드폰들), 디지털 미디어 플레이어, 태블릿 디바이스와 같은 휴대용 컴퓨팅 디바이스, 스마트워치 또는 밴드와 같은 웨어러블 디바이스, 또는 예를 들어, Wi-Fi 통신 회로부, 셀룰러 통신 회로부, 블루투스 통신 회로부, 지그비 통신 회로부, 근거리 통신(NFC) 통신 회로부, 및/또는 다른 유선 또는 무선 통신 회로부와 같은 하나 이상의 유선 또는 무선 인터페이스들을 포함하고/하거나 그에 통신가능하게 결합되고 전자 메시지들을 전송 및 수신하기 위한 소프트웨어 및/또는 하드웨어가 제공된 임의의 다른 디바이스일 수 있다.
예로서, 도 1에서, 전자 디바이스들(102, 104)의 각각은 스마트폰으로 도시되어 있다. 하나 이상의 구현예들에서, 전자 디바이스들(102, 104) 중 하나 이상은 스마트 텔레비전, 랩톱 또는 모바일 디바이스, 예컨대 스마트 폰 또는 스마트 워치일 수 있다. 하나 이상의 구현예들에서, 전자 디바이스들(102, 104) 중 하나 이상은 그의 대응하는 디스플레이 디바이스에 통합될 수 있다. 전자 디바이스들(102, 104) 중 하나 이상은 도 7과 관련하여 이하에서 논의되는 전자 시스템일 수 있고/있거나 전자 시스템의 전부 또는 일부를 포함할 수 있다.
전자 디바이스들(102, 104)은 프로세서, 메모리, 통신 인터페이스, 및/또는 다른 전자 컴포넌트들을 포함할 수 있다. 프로세서는 데이터를 프로세싱하고/하거나 디바이스의 동작들을 제어할 수 있게 하는 적합한 로직, 회로부, 및/또는 코드를 포함할 수 있다. 이와 관련하여, 프로세서는 디바이스의 다양한 다른 컴포넌트들에 제어 신호들을 제공하는 것이 가능하게 될 수 있다. 프로세서는 또한 디바이스의 다양한 부분들 사이의 데이터의 전송들을 제어할 수 있다. 추가적으로, 프로세서는 운영 체제의 구현을 가능하게 하거나, 그렇지 않으면 디바이스의 동작들을 관리하기 위해 코드를 실행할 수 있다. 메모리는 수신된 데이터, 생성된 데이터, 코드, 및/또는 구성 정보와 같은 다양한 유형들의 정보의 저장을 가능하게 하는 적합한 로직, 회로부, 및/또는 코드를 포함할 수 있다. 메모리는 예를 들어 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 플래시, 및/또는 자기 저장소를 포함할 수 있다. 하나 이상의 구현예들에서, 프로세서, 메모리, 통신 인터페이스, 및/또는 이들의 하나 이상의 부분들 중 하나 이상은 소프트웨어(예컨대, 서브루틴들 및 코드)로 구현될 수 있고, 하드웨어(예컨대, ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), PLD(Programmable Logic Device), 제어기, 상태 기계(state machine), 게이트 로직(gated logic), 개별 하드웨어 컴포넌트들, 또는 임의의 다른 적합한 디바이스들) 및/또는 둘 모두의 조합으로 구현될 수 있다.
서버들(120) 중 하나 이상은 도 7과 관련하여 이하에서 논의되는 전자 시스템일 수 있고/있거나 전자 시스템의 전부 또는 일부를 포함할 수 있다. 서버들(120)의 각각은 하나 이상의 서버들, 예컨대 서버들의 클라우드(130)를 포함할 수 있다. 설명의 목적을 위해, 2개의 서버들이 전자 디바이스들(102, 104)에 그리고/또는 그들 사이에 네트워크 데이터를 제공하기 위한 다양한 동작들과 관련하여 도시되고 논의된다. 그러나, 본 명세서에서 논의되는 이들 및 다른 동작들은 하나 이상의 서버들에 의해 수행될 수 있고, 각각의 상이한 동작은 동일하거나 상이한 서버들에 의해 수행될 수 있다.
설명의 목적을 위해, 네트워크 환경(100)은 도 1에서 전자 디바이스들(102, 104) 및 서버들(120)을 포함하는 것으로서 예시되어 있지만; 네트워크 환경(100)은 임의의 수의 전자 디바이스들 및 임의의 수의 서버들을 포함할 수 있다.
도 2는 애플리케이션을 갖는 전자 디바이스의 다양한 양태들을 예시한다. 도 2의 예에서, 전자 디바이스(102)는 애플리케이션(200)을 포함한다(예컨대, 디바이스의 메모리에 저장되고 디바이스의 하나 이상의 프로세서들에 의해 실행가능함). 도시된 바와 같이, 애플리케이션(200)은 (예컨대, 네트워크(106)를 통해 및/또는 전자 디바이스(102)와 같은 다른 전자 디바이스로부터) 네트워크 데이터를 수신할 수 있다. 예를 들어, 네트워크 데이터는 전자 디바이스(102)로부터의 메시지, 또는 서버(120)와 같은 서버로부터의 서버 데이터(예컨대, 웹 페이지에 대한 푸시 통지 또는 웹 콘텐츠)를 포함할 수 있다. 네트워크 데이터는 전자 디바이스(104)에서 특정 애플리케이션(200)에 의해 프로세싱될 애플리케이션 특정 네트워크 데이터일 수 있다. 예를 들어, 애플리케이션(200)은 메시지들을 프로세싱하기 위한 메시징 애플리케이션, 웹 페이지 데이터를 프로세싱하기 위한 웹 브라우저 애플리케이션, 다운로드된 워드 프로세서 문서들을 프로세싱하기 위한 워드 프로세서 애플리케이션, 제3자 애플리케이션과 연관된 제3자 서버로부터의 네트워크 데이터(예컨대, 푸시 통지들)를 프로세싱하기 위한 제3자 애플리케이션, 또는 대응하는 애플리케이션에 특정한 네트워크 데이터를 수신 및/또는 프로세싱하도록 구성된 임의의 다른 애플리케이션일 수 있다.
네트워크 데이터를 프로세싱하기 위해, 애플리케이션은 전자 디바이스에서 다양한 하드웨어 및/또는 논리 자원들에 액세스할 수 있다. 예를 들어, 애플리케이션(200)은 시스템 자원들(202)(예컨대, CPU, GPU, 또는 디바이스의 메모리와 같은 하드웨어 자원들, 및/또는 메모리 내의 데이터에 액세스하고/하거나 디바이스의 다른 컴포넌트들에 액세스하기 위한 시스템 자원들과 같은 논리 자원들)에 대한 액세스를 가질 수 있다. 도시된 바와 같이, 네트워크 데이터가 의도되는 애플리케이션들(200)은 또한, 수신된 네트워크 데이터에 기초하여 애플리케이션(200)에 의해 활성화 및/또는 동작될 수 있는 다른 애플리케이션들(208) 및/또는 확장 애플리케이션들(210)에 대한 액세스를 가질 수 있다.
그러나, 애플리케이션(200)에 (예들로서) 시스템 자원들(202), 다른 애플리케이션들(208) 및 확장 애플리케이션들(210)에 대한 액세스를 제공하는 것은 시스템 자원들(202), 다른 애플리케이션들(208) 및/또는 확장 애플리케이션들(210)을 네트워크 데이터에 포함된 손상된 그리고/또는 악성 데이터에 노출시킬 수 있다. 이러한 유형의 손상된 그리고/또는 악성 데이터가 네트워크 데이터를 프로세싱하는 애플리케이션 동작들에 이르고/이르거나 이들을 침해하도록 허용된다면, 애플리케이션(200), 시스템 자원들(202), 다른 애플리케이션들(208), 및/또는 확장 애플리케이션들(210)의 충돌 및/또는 다른 침해된 거동을 야기할 수 있다.
본 기술의 하나 이상의 구현예들에 따르면, 전자 디바이스(104)에는, 도 3에 예시된 바와 같이, 손상된 그리고/또는 악성 네트워크 데이터가 애플리케이션(200) 및/또는 애플리케이션이 액세스하는 다른 시스템 컴포넌트들 및/또는 자원들에 이르고/이르거나 이들을 침해하는 것을 방지하기 위해 애플리케이션 특정 네트워크 데이터 필터링이 제공될 수 있다.
도 3의 예에 도시된 바와 같이, 전자 디바이스(104)는 애플리케이션(200)에 대해 의도된 네트워크 데이터를 수신하는 샌드박스(300)를 포함할 수 있다. 샌드박스(300)는 애플리케이션(200)에 의한 사용을 위해 네트워크 데이터를 언팩킹하기 위해 코드(예컨대, 파서들(parsers), 디코더들, 트랜스코더들 등)가 실행될 수 있는 제한된 환경일 수 있다. 도시된 바와 같이, 샌드박스(300)는, 애플리케이션(200)으로부터 별개일 수 있고, 예컨대 운영 체제에 의해, 애플리케이션(200)에 의해 액세스가능한 다른 애플리케이션(208), 확장 애플리케이션(210) 및/또는 시스템 자원들(202)에 액세스하는 것이 방지될 수 있다. 하나 이상의 구현예들에서, 샌드박스(300)는 컴퓨트 전용(compute-only) 샌드박스일 수 있으며, 예를 들어, 샌드박스는 컴퓨트 자원들에만 액세스를 갖거나, 또는 특정한 컴퓨트 자원들, 예컨대 GPU가 아닌 CPU에 대한 액세스만 가질 수 있다. 예를 들어, 컴퓨트 전용 샌드박스는 메시지가 제공된 데이터가 아닌, 디바이스의 메모리에 저장된 데이터에 액세스하는(예컨대, 판독 또는 수정하는) 것이 방지될 수 있다. 컴퓨트 전용 샌드박스에는 디바이스에서 기존 데이터를 판독하거나 수정하지 않으면서 메시지를 파싱, 디코딩, 트랜스코딩, 및/또는 언팩킹하기 위해 계산을 수행하는 데 사용하기 위한 제한된 양의 메모리가 제공될 수 있다. 컴퓨트 전용 샌드박스는 센서들, 카메라들, 스피커들, 마이크들 등과 같은 디바이스의 동작가능한 컴포넌트들에 액세스하거나, 제어하거나, 또는 달리 상호작용하는 것이 방지될 수 있다. 컴퓨트 전용 샌드박스는 다른 디바이스들, 시스템들 또는 서버들로 데이터를 전송 또는 수신하는 것이 방지될 수 있다. 예를 들어, 샌드박스 내의 프로세스가 디바이스로부터 데이터를 수정하거나 삭제하고 디바이스에서 설치하기 위해 다른 디바이스로부터 다른 악성 콘텐츠를 획득하거나, 또는 디바이스에 저장된 디바이스/사용자 정보를 다른 디바이스에 전송하려고 시도하는 악성 코드에 의해 침해된 경우, 이러한 동작들은 샌드박스의 컴퓨트 전용 배열로 인해 방지될 것이다. 샌드박스 내에서 실행되는 코드는 애플리케이션(200)에 특정된 코드를 포함할 수 있다.
예를 들어, 전자 디바이스(104)는 객체 유형을 갖는 객체와 연관된 정보를 포함하는 메시지를 수신할 수 있다. 이 예에서, 애플리케이션(200)은 객체를 포함하는 메시지 콘텐츠를 사용자 인터페이스에 제공하기 위해 메시지를 프로세싱하도록 구성될 수 있다. 이 예에서, 네트워크 데이터(예컨대, 메시지)가 수신될 때, 메시지는 샌드박스(300)에 제공될 수 있고, 전자 디바이스(104)는 애플리케이션과 별개인 샌드박스(300)에서 메시지에 대해 애플리케이션에 대한 애플리케이션 특정 동작들을 수행할 수 있다. 이 예에서, 애플리케이션 특정 동작들은 객체 유형을 결정하는 것, 및 결정된 객체 유형에 기초하여, 메시지 내의 객체와 연관된 정보로부터 객체를 생성하려고 시도하는 것을 포함할 수 있다.
예를 들어, 객체 유형은 색상, 이미지, 어레이, 텍스트, 타이핑 표시자, 글꼴 등에 대응할 수 있다. 샌드박스(300) 내에서, 전자 디바이스(104)는 객체 유형을 결정하기 위해(예컨대, 그리고 메시지 내의 객체와 연관된 정보의 위치를 결정하기 위해) 메시지를 파싱할 수 있고, 이어서, 결정된 객체 유형에 기초하여 객체와 연관된 정보로부터 객체를 생성하려고 시도할 수 있다. 예를 들어, 객체 유형이 이미지인 경우, 전자 디바이스(104)는, 샌드박스(300) 내에서, (예컨대, 메시지로부터 이미지에 대응하는 이미지 데이터를 추출하고, 추출된 이미지 데이터를 디코딩, 트랜스코딩 및/또는 언팩킹하여 스키마 검증(302)에 의해 예상되는 포맷으로 데이터 구조를 형성함으로써) 메시지 내에 포함된 이미지 데이터로부터 이미지 객체를 생성하려고 시도할 수 있다. 예를 들어, 샌드박스(300) 내에서, 원래 메시지의 포맷의 데이터(예컨대, 이진 데이터)의 문자열은 하나 이상의 파서들에 의해 이미지에 대한 이미지 데이터에 대응하도록 결정될 수 있다. 샌드박스(300) 내에서, 이미지 데이터인 것으로 결정된 메시지 데이터는 수치 값들의(예컨대, 직렬화된) 어레이 및 스키마 검증(302)에 의한 프로세싱을 위한 헤더 또는 다른 래퍼(wrapper)를 포함하는 데이터 구조와 같은 이미지 객체를 형성하도록 프로세싱될 수 있다. 스키마 검증(302)에서, 샌드박스에서 생성된 이미지 객체가 이미지 객체로서(예컨대, 예상된 바와 같이 수치 값들의 어레이를 포함하는 데이터 구조로서) 검증되는 경우, 이미지 객체는 애플리케이션(200)으로 전달될 수 있다. 이어서, 애플리케이션(200)은 디스플레이를 위해 이미지 객체에 대응하는 이미지를 생성하기 위해, 이미지 객체를 (예컨대, 샌드박스(300) 내에서 프로세스들에 이용가능하지 않은 추가 자원들, 예컨대, GPU 또는 확장 애플리케이션을 사용하여) 추가로 프로세싱할 수 있다. 예를 들어, 애플리케이션(200)은 디바이스 디스플레이의 특성들 및/또는 애플리케이션의 사용자 인터페이스의 속성들에 기초하여, 이미지 객체에 의해 표현되는 바와 같은 이미지의 색 공간을 상이한 색 공간으로 조정하기 위해 이미지 객체를 프로세싱할 수 있다. 다른 예로서, 애플리케이션(200)은 애플리케이션의 사용자 인터페이스에서 메시지 스트림 내의 디스플레이를 위한 이미지 객체를 추가로 프로세싱할 수 있다. 다른 예로서, 애플리케이션(200)은 메시지에 수신된 추가 정보에 따라 이미지를 추가 콘텐츠와 조합할 수 있다.
일부 시나리오들에서, 샌드박스(300)에서 프로세스들은 메시지 데이터에 의해 손상되거나 침해될 수 있다. 예를 들어, 메시지에는 의도하지 않거나 악의적인 의도로 인해 샌드박스 내에서 파싱 동작 또는 디코딩 동작이 충돌하도록 야기하는 일련의 문자열이 포함될 수 있다. 이러한 유형의 충돌은 객체가 생성되는 것을 방지할 수 있거나, 객체가 객체 유형에 대한 스키마 및/또는 애플리케이션에 대한 스키마에 부합하지 않는 방식으로 생성되게 할 수 있다. 하나 이상의 구현예들에서, 애플리케이션에 대한 스키마는 애플리케이션이 수신할 것으로 예상하는 각각의 상이한 객체 유형을 식별할 수 있고, 객체 유형을 검증하기 위한 하나 이상의 매개변수들(예컨대, 임의의 문자열 객체들의 최대 길이는 X이어야 하고, 임의의 이미지 객체들의 최대 크기는 5MB이어야 하는 등)을 포함할 수 있다. 충돌이 객체의 생성을 방지하는 시나리오들에서, 객체는 애플리케이션(200)에 도달하는 것이 방지될 수 있다. 충돌이 객체 유형에 대한 스키마에 부합하지 않는 방식으로 객체의 생성을 야기하는 시나리오들에서, 샌드박스(300) 및 애플리케이션(200)과 별개인 스키마 검증(302)은 객체 유형에 대한 스키마에 부합하지 않는 객체를 결정할 수 있고 객체가 애플리케이션(200)으로 전달되는 것을 방지할 수 있다. 하나 이상의 구현예들에서, 스키마 검증(302)은 샌드박스(300) 및 애플리케이션(200)과 별개인 제2 샌드박스(예컨대, 제2 컴퓨트 전용 샌드박스)에서 수행될 수 있다. 예를 들어, 스키마 검증(302)은 검증 스키마를 사용하여 수행되는 스키마 기반 검증일 수 있다.
일부 동작 시나리오들에서, 샌드박스(300) 내에서 수행되는 애플리케이션 특정 동작들은 전체 샌드박스(300)의 충돌을 야기할 수 있거나, 또는 악성 코드가 샌드박스(300)를 완전히 제어할 수 있게 한다. 그러나, 샌드박스(300)는 애플리케이션(200)과 별개의 제어된 환경이기 때문에, 충돌된 및/또는 손상된 애플리케이션 특정 프로세스들(예컨대, 충돌, 전체 제어 상실, 또는 전체 샌드박스의 전체 장애)은 디바이스의 임의의 다른 동작들에 영향을 미치지 않는다. 하나 이상의 구현예들에서, 전자 디바이스는, 애플리케이션 특정 동작들이 전체 샌드박스의 충돌을 야기하고 그에 의해 메시지가 애플리케이션(200)으로 전달되는 것을 방해한 경우, 메시지의 전송 디바이스에 실패 메시지를 전송할 수 있다.
또한, 샌드박스(300)에서의 동작들의 전체 장애 실패가 아니라면, 샌드박스(300)는 여전히 스키마 검증(302)을 위해 메시지로부터 객체들 중 하나, 일부 또는 전부를 출력할 수 있음을 이해해야 한다. 다양한 시나리오들에서, 객체들은 스키마 검증(302)에 의해 검증되거나 검증되지 않을 수 있다.
객체가 샌드박스(300) 내에서 생성되고 스키마 검증(302)에 제공될 때, 스키마 검증(302)을 수행하는 것은 객체 유형(예컨대, 샌드박스 내에서 결정되고/되거나 스키마 검증(302)의 일부로서 재결정됨)에 기초하여, 그리고 객체 유형에 대응하는 스키마에 기초하여 객체를 검증하는 것을 포함할 수 있다. 하나 이상의 구현예들에서, 스키마 검증(302)은 프로퍼티 리스트(property lis)(예컨대, plist) 유형들, 예컨대 사전 유형, 어레이 유형, 스트링 유형, 숫자 유형, 널(null) 유형, 및 데이터 유형에 대해 수행된다. 하나 이상의 구현예들에서, 데이터 유형의 스키마 검증은, 샌드박스(300) 내에서, 검증을 위해 데이터 유형 객체들을 사전 유형 객체들로 분해함으로써 회피될 수 있다. 예를 들어, 샌드박스(300) 내에서 수행되는 동작들은 이미지들을 이미지 포맷으로 트랜스코딩하고, 이미지에 대한 헤더 정보를 사전들로 추출하는 것을 포함할 수 있다. 원시 샘플들은 데이터로서 통과될 수 있고, 이미지 파일은 (예컨대, 애플리케이션(200) 내부에) 재생성될 수 있다. 다른 예에서, "스트링"의 객체 유형을 갖는 객체는 N개의 문자들의 대응하는 최대 길이를 가질 수 있다. 스키마 검증(302)은 객체의 길이가 N개의 문자들의 최대 길이보다 작다는 것을 검증할 수 있다.
도 3은 단일 애플리케이션(200) 및 단일의 대응하는 샌드박스(300)를 예시하지만, 하나 이상의 구현예들에서, 전자 디바이스(104)는 네트워크 데이터를 수신하는 다수의 애플리케이션들(200), 및 그 애플리케이션에 대한 애플리케이션 특정 동작들이 수행될 수 있는 다수의 대응하는 샌드박스들(300)을 가질 수 있다. 예를 들어, 메시징 애플리케이션을 위한 제1 샌드박스(300)는 메시지 데이터를 프로세싱하기 위한 메시지 프로세싱 동작들을 포함할 수 있고, 웹 브라우저 애플리케이션을 위한 제2 샌드박스(300)는 웹 데이터 프로세싱 동작들(예컨대, http 데이터를 파싱하기 위한 동작들)을 포함할 수 있다. 예를 들어, 메시지 데이터는 웹 브라우저에 대한 http 응답 또는 제3자 애플리케이션에 대한 제3자 서버로부터의 푸시 통지와 상이하게 파싱되고 언팩킹될 수 있다.
하나 이상의 구현예들에서, 스키마 검증들(302)은 객체 특정일 수 있고(예컨대, 이미지를 검증하기 위한 스키마 검증, 및 문자열을 검증하기 위한 상이한 스키마 검증을 포함함), 다수의 상이한 애플리케이션/샌드박스 쌍들에 사용될 수 있다. 다른 구현예들에서, 스키마 검증들의 세트의 애플리케이션 특정 세트가 각각의 애플리케이션에 대해 제공될 수 있다.
도 3에 나타낸 바와 같이, 일부 동작 시나리오들에서, 전자 디바이스(104)에서 수신되는 네트워크 데이터는 암호화된 메시지와 같은 암호화된 네트워크 데이터일 수 있다. 도시된 바와 같이, 전자 디바이스(104)는 비암호화된 메시지 데이터를 획득하기 위해 암호화된 메시지에 대한 복호화 동작들(306)을 수행할 수 있다. 다양한 구현예들에서, 복호화 동작들(306)은 (예컨대, 애플리케이션 또는 디바이스의 다른 부분들에 영향을 미치는 손상된 그리고/또는 침해된 복호화 동작들을 추가로 방지하기 위해) 비암호화된 메시지를 샌드박스(300)에 제공하기 전에 애플리케이션(200)에 의해 수행될 수 있거나, 또는 복호화 동작들(306)은 샌드박스(300) 및 애플리케이션(200)과 별개인 추가 샌드박스(예컨대, 추가 컴퓨트 전용 샌드박스)에서 수행될 수 있다. 예를 들어, 복호화 동작들(306)을 위한 추가 샌드박스에는 애플리케이션(200)에 특정한 네트워크 데이터에 대한 복호화 키들(예컨대, 메시징 애플리케이션을 위한 메시지들에 대한 복호화 키들)에 대한 액세스가 제공될 수 있다.
도 4는 애플리케이션 특정 네트워크 데이터 필터링을 위한 예시적인 프로세스의 다양한 추가 양태들을 예시한다. 도 4에 도시된 바와 같이, 샌드박스(300) 내에서, 전자 디바이스(104)와 같은 전자 디바이스는 디바이스에서 수신된 네트워크 데이터에 대해 파싱, 디코딩, 및/또는 언팩킹 동작들(400)을 수행할 수 있다. 이러한 파싱, 디코딩, 및/또는 언팩킹 동작들(400)은 특정 애플리케이션(200)에 대한 애플리케이션 특정 데이터를 파싱, 디코딩, 트랜스코딩, 및/또는 언팩킹하기 위한 애플리케이션 특정 동작들일 수 있다. 일부 예들에서, 데이터를 파싱하는 것은 (예컨대, 획득된 데이터로부터 데이터 구조를 구성하기 위해) 문자열 또는 이진 문자열로부터 데이터를 획득하는 것을 포함할 수 있다. 일부 예들에서, 데이터를 디코딩하는 것은, (예컨대, 다른 디바이스에서 또는 서버에서) 인코딩 스킴을 사용하여 인코딩되지 않은 데이터로부터 이전에 인코딩되었던 인코딩된 데이터를 디코딩하여 인코딩되지 않은 데이터를 획득하는 것을 포함할 수 있다. 일부 예들에서, 데이터를 트랜스코딩하는 것은 제1 인코딩 방식을 사용하여 이전에 인코딩되었던 데이터를 (예컨대, 제1 인코딩 방식으로 인코딩되었던 인코딩된 데이터의 중간 디코딩된 버전을 저장하지 않고) 상이한 제2 인코딩 방식을 사용하여 인코딩되는 인코딩된 데이터로 직접 변환하는 것을 포함할 수 있다. 일부 예들에서, 데이터를 언팩킹하는 것은 복합 데이터 구조로 이전에 패키징되었던 다수의 데이터 요소들을 복합 데이터 구조로부터 추출하는 것을 포함할 수 있다. 예를 들어, 샌드박스(300)는 그 애플리케이션에 대해 의도된 메시지들 및/또는 네트워크 콘텐츠가 애플리케이션에 의한 추가 프로세싱을 위해 파싱, 디코딩 및/또는 언팩킹되는 것이 필요한 각각의 애플리케이션에 대해 제공될 수 있다.
도 4는 또한, 네트워크 데이터가 어떻게 애플리케이션 특정 네트워크 데이터 필터링 프로세스의 일부로서 하나 이상의 직렬화 동작들을 통과할 수 있는지를 예시한다. 도 4의 예에서, 네트워크 데이터는 네트워크 데이터를 샌드박스(300)에 제공하기 전에 직렬화 인코더(402)(예컨대, XPC 인코더)를 통과한다. 직렬화 인코더(402)는 메시지 인코딩 포맷에서 수신되는 네트워크 데이터를, 샌드박스(300) 내의 애플리케이션 특정 프로세스들에 의해 파싱, 디코딩 및/또는 언팩킹하기 위한 직렬화되고 신뢰되지 않은 패키징된 네트워크 데이터로 인코딩할 수 있다. 샌드박스(300) 내에서, 직렬화된 데이터는, 선택적으로, 파싱, 디코딩, 및 언팩킹 동작들(400)에 의한 프로세싱을 위해 직렬화 디코더(404)에 의해 디코딩될 수 있다.
샌드박스(300) 내의 애플리케이션 특정 파싱, 디코딩, 및 언팩킹 동작들(400)에 이어서, 네트워크 데이터로부터의 결과적인 언팩킹된 객체들은, 샌드박스(300) 내에서, 추가의 직렬화 인코더(406)에 의해 직렬화된 객체들로 인코딩될 수 있다. 이어서, 직렬화된 언팩킹된 객체들은, 선택적으로, 스키마 검증(302)을 수행하기 위한 디코딩/트랜스코딩을 위해 다른 직렬화 디코더(408)로 제공될 수 있다.
일부 예들에서, (예컨대, 직렬화 인코더(406)로부터 직렬화 디코더(408) 또는 스키마 검증(302)으로) 샌드박스(300)로부터 출력되는 직렬화 인코딩된 데이터는 (예컨대, 직렬화 인코더(402)로부터) 샌드박스(300)에 입력되는 직렬화된 인코딩된 데이터와 상이하다. 이는 부분적으로, 네트워크 데이터로부터 생성될 객체들에 대한 객체 유형들이 샌드박스(300) 내의 파싱, 디코딩, 및 언팩킹 동작들(400) 전에 알려져 있지 않을 수 있기 때문이다.
하나의 예시적인 예로서, 파싱, 디코딩, 및 언팩킹 동작들(400)은 네트워크 데이터에서 다양한 입력 표현들(예컨대, 텍스트에 대한 색상에 대한 표현, 휴대용 문서 포맷에 대한 색상에 대한 표현, 또는 투명 이미지에 대한 배경 색상에 대한 표현)에 표현된 색상을 파싱 및/또는 언팩킹하기 위한 동작들을 포함할 수 있다. 파싱, 디코딩, 및 언팩킹 동작들(400)은 이러한 다수의 표현들 중 임의의 것에서 표현되는 색상을 파싱 및/또는 디코딩하기 위한 동작들을 포함할 수 있다. 대조적으로, 일단 샌드박스(300)에서 색상이 파싱, 디코딩, 및 언팩킹 동작들(400)에 의해 파싱되고 언팩킹되면, 직렬화 인코더(406)는 임의의 표현에서 수신된 색상을 색상의 단일(예컨대, 표준(canonical)) 표현으로 (예컨대, 4개의 컴포넌트들의 어레이로서) 인코딩할 수 있다. 샌드박스(300) 내의 다양한 데이터 유형들의 다양한 표현들에 대한 다양한 파싱/언팩킹 동작들과 연관된 파싱, 디코딩, 및 언팩킹 동작들(400)을 포함하는 것은 다양한 데이터 유형들의 다양한 표현들에 대한 다양한 파싱/언팩킹 동작들과 연관된 임의의 예상되거나 또는 예상치 못한 취약점들이 애플리케이션(200) 자체 또는 애플리케이션(200)이 액세스하는 논리적 및/또는 하드웨어 자원들에 대한 취약점이 되는 것을 방지할 수 있다.
도 4에 도시된 애플리케이션 특정 네트워크 데이터 필터링 프로세스는 그들의 원래 포맷(예컨대, 키잉된 아카이버(keyed archiver)들, 프로퍼티 리스트들(plist), 프로토콜버퍼(protobuf)들, 이미지/데이터 디코더들 등)으로부터 기본 직렬화된(예컨대, XPC) 객체들로 컴포넌트들을 디코딩 및/또는 트랜스코딩할 수 있고, (예컨대, 프로세싱에서 로직 버그(logic bug)들을 완화시키기 위해) 결과적인 직렬화된 객체들에 대해 엄격한 스키마를 강제할 수 있다. 직렬화된 객체들이 다시 구조 표현으로 변환됨에 따라, 필드들의 유형들이 정확하다는 것, 그리고 그들의 검증 불변성이 성공적으로 평가되는 것을 보장하기 위해 스키마가 검증될 수 있다.
도 4에 도시된 애플리케이션 특정 네트워크 데이터 필터링 프로세스는 트랜스코딩 및/또는 파싱 오류들 모두 샌드박스(300) 내에서 발생하도록 보장하는 데 도움이 될 수 있고, 스키마 검증(302)이 디코딩된 매개변수들 및 매개변수들의 조합들의 엄격한 검증을 제공하도록 보장하는 데 도움이 될 수 있고, 스키마 확장들의 검증 없이 제로 클릭 공격(zero click attack) 표면으로의 추가를 방지할 수 있다.
하나 이상의 구현예들에서, 다수의 샌드박스들(300)이 단일 애플리케이션(200)(예컨대, 메시지의 상이한 부분들에 대한 개별 샌드박스들)을 위해 제공될 수 있다. 예를 들어, 도 5는 이미지들 및/또는 비디오 첨부들과 같은 네트워크 데이터를 안전하게 다운로드하고 트랜스코딩하기 위해 일련의 애플리케이션 특정 네트워크 필터링 프로세스들이 함께 연쇄적으로 이어질 수 있는 예를 예시한다.
도 5에 도시된 바와 같이, 메시징을 위한 IDS 클라이언트(501)는, 애플리케이션에 대한 착신 네트워크 데이터를 관리하기 위한 에이전트와 같은 에이전트(500)에 메시지 데이터 블롭(blob)과 같은 네트워크 데이터를 제공할 수 있다. 도 5의 예에서, 에이전트(500)는 제1 필터 프로세스(502)에 메시지 데이터 블롭을 제공한다. 예를 들어, 제1 필터 프로세스(502)는 메시징 애플리케이션을 위한 애플리케이션 특정 네트워크 데이터 필터링 프로세스일 수 있다(예컨대, 도 3 및/또는 도 4와 관련하여 전술한 바와 같은 샌드박스(300), 스키마 검증(302), 및/또는 다른 프로세스들의 제1 구현예를 포함함).
도시된 바와 같이, 제1 필터 프로세스(502)는 메시지 데이터 블롭을 직렬화하고 검증할 수 있으며, 검증된 프로퍼티 리스트(예컨대, plist)를 에이전트(500)로 반환할 수 있다. 에이전트(500)는 메시지 데이터 블롭으로부터 획득한 매체 자산에 대한 프로퍼티 리스트 및 통합 자원 식별자(Uniform Resource Locator, URL)를 전송 에이전트(504)에 제공할 수 있다. 전송 에이전트(504)는 URL로부터 매체 자산을 다운로드하고 디스크 상의 파일로서 저장할 수 있다. 전송 에이전트(504)는 디스크 상의 다운로드되고 저장된 매체 자산에 대한 경로를 에이전트(500)에 제공할 수 있다.
에이전트(500)는 디스크 상의 매체 파일에 대한 경로를 제2 필터 프로세스(506)에 제공할 수 있다. 예를 들어, 제2 필터 프로세스(506)는 또한 메시징 애플리케이션의 이미지들을 프로세싱하기 위한 애플리케이션 특정 네트워크 데이터 필터링 프로세스일 수 있다(예컨대, 도 3 및/또는 도 4와 관련하여 전술한 바와 같은 샌드박스(300), 스키마 검증(302), 및/또는 다른 프로세스들의 제2 구현예를 포함함). 도시된 바와 같이, 제2 필터 프로세스(506)는 (예컨대, 하나 이상의 이미지 관련 애플리케이션 프로그래밍 인터페이스(API)들 및/또는 다른 프로세스들을 사용하여) 매체 파일을 미리 결정된 포맷(예컨대, ASTC(Adaptive Scalable Texture Compression) 포맷과 같은 압축 포맷)으로 트랜스코딩하기 위한 동작들을 수행하는 것을 포함할 수 있다. 제2 필터 프로세스(506)는 (예컨대, 메모리 내의) 트랜스코딩된 매체를 전송 에이전트(504)에 제공할 수 있다. 전송 에이전트(504)는 트랜스코딩 매체를 디스크에 기록할 수 있고, (예컨대, 메시징 애플리케이션의 사용자 인터페이스를 사용하여 이미지를 디스플레이하기 위한) 동작들을 계속하기 위해 트랜스코딩 매체에 대한 트랜스코딩 매체 파일 경로를 에이전트(500)에 제공할 수 있다.
각각이 샌드박스(300) 및 스키마 검증(302)을 포함하는 도 5의 연쇄적 필터 프로세스들(502 및 506)을 사용하여, 메시지 및 메시지와 연관된 이미지 및/또는 비디오 첨부들은 본 명세서에 기술된 바와 같은 다수의 애플리케이션 특정 네트워크 데이터 필터링 프로세스들을 사용하여 프로세스되고 검증될 수 있다. 하나 이상의 구현예들에서, 스키마 검증(302)은 애플리케이션 특정일 수 있으며, 이 경우 연쇄적 필터 프로세스들(502 및 506) 각각에 대해 동일한 스키마 검증(302)이 사용될 수 있다.
도 6은 하나 이상의 구현예들에 따른, 애플리케이션 특정 네트워크 데이터 필터링을 위한 예시적인 프로세스(600)의 흐름도를 예시한다. 설명의 목적을 위해, 프로세스(600)는 본 명세서에서 도 1의 전자 디바이스들(102, 104) 및 서버들(120 및 140)을 참조하여 주로 기술된다. 그러나, 프로세스(600)는 도 1의 전자 디바이스들(102, 104) 및 서버들(120 및 140)로 제한되지 않으며, 프로세스(600)의 하나 이상의 블록들(또는 동작들)은 하나 이상의 다른 컴포넌트들 및/또는 기타 적합한 디바이스들에 의해 수행될 수 있다. 또한 설명의 목적을 위해, 프로세스(600)의 블록들은 본 명세서에서 직렬로 또는 선형적으로 발생하는 것으로 기술된다. 그러나, 프로세스(600)의 다수의 블록들은 병렬로 발생할 수 있다. 또한, 프로세스(600)의 블록들은 도시된 순서로 수행될 필요가 없고/없거나, 프로세스(600)의 하나 이상의 블록들은 수행될 필요가 없고/없거나 다른 동작들에 의해 대체될 수 있다.
블록(602)에서, 애플리케이션(예컨대, 본 명세서에 기술된 바와 같은 애플리케이션(200))을 갖는 디바이스에서, 객체 유형을 갖는 객체와 연관된 정보를 포함하는 메시지가 수신될 수 있다. 애플리케이션은 객체를 포함하는 메시지 콘텐츠를 사용자 인터페이스에 제공하기 위해 메시지를 프로세싱하도록 구성될 수 있다. 예를 들어, 애플리케이션은 메시징 애플리케이션 또는 메시지들을 수신하고 프로세싱할 수 있는 다른 애플리케이션, 다양한 객체 유형들의 메시지 객체들, 및/또는 다른 메시지 콘텐츠일 수 있다. 예를 들어, 메시징 애플리케이션은 사용자에게 메시지들을 디스플레이하고, 발신 메시지들을 작성하기 위한 메시지 입력을 수신하기 위한 사용자 인터페이스를 포함할 수 있다. 객체 유형들의 예들은 색상들, 이미지들, 비디오, 텍스트, 타이핑 표시자들, 글꼴들 등을 포함할 수 있다.
블록(604)에서, 애플리케이션에 대한 애플리케이션 특정 동작들이 애플리케이션과 별개인 샌드박스(예컨대, 본 명세서에 기술된 샌드박스(300))에서, 메시지에 대해 수행될 수 있다. 애플리케이션 특정 동작들은 객체 유형을 결정하는 것을 포함할 수 있다. 애플리케이션 특정 동작들은 또한, 결정된 객체 유형에 기초하여, 메시지 내의 객체와 연관된 정보로부터 객체를 생성하려고 시도하는 것을 포함할 수 있다. 일부 예들에서, 샌드박스는 애플리케이션 특정 동작들이 애플리케이션 특정 동작들 및 샌드박스 자체 중 하나 이상을 손상시키는 것을 허용하고, 애플리케이션 특정 동작들 또는 샌드박스 자체의 임의의 손상이 애플리케이션 또는 디바이스의 다른 부분들을 손상시키는 것을 방지하도록 배열된다. 일부 예들에서, 객체 유형을 결정하는 것은 객체 유형을 획득하기 위해 메시지를 파싱하는 것을 포함한다. 일부 예들에서, 객체를 생성하는 것은 파싱에 기초하여 메시지를 언팩킹하는 것을 포함한다.
다양한 예들에서, 메시지는 하나 또는 다수의 유형들의 객체들을 포함할 수 있다. 샌드박스에 발생하는 메시지 페이로드는 객체 유형을 식별하는 메타데이터를 포함하지 않을 수 있다. 이러한 예들에서, 메시지 페이로드는 그에 대한 정보가 메시지에 포함된 객체(들)의 유형(들)을 찾기 위해 샌드박스 내에서 프로세싱(예컨대, 애플리케이션 특정 프로세스들에 의해 파싱, 디코딩 및/또는 언팩킹)된다. 이러한 예들에서, 객체(들)의 유형(들)은 객체(들)의 추가 프로세싱 및/또는 디스플레이를 위해 샌드박스로부터 애플리케이션에 제공될 수 있다.
하나 이상의 구현예들에서, 블록(604)과 관련하여 본 명세서에 기술된 동작들은 (예컨대, 샌드박스 내에서 프로세싱하기 위한 임의의 데이터의 수신 전에 그리고/또는 그와 독립적으로) 샌드박스에 대해 사전 할당된 메모리 내에서 수행될 수 있다. 하나 이상의 다른 동작들에서, 블록(604)과 관련하여 본 명세서에 기술된 동작들은 (예컨대, 도 7, 도 8 및/또는 도 9와 관련하여 이하에서 더 상세히 기술되는 바와 같이) 샌드박스(300)에 대해, 애플리케이션에 의해 할당된 추가 메모리에서 수행될 수 있다.
블록(606)에서, 샌드박스에서 객체를 생성하려는 시도의 완료에 따라, 객체 유형에 기초하여 샌드박스의 외부 및 애플리케이션의 외부에서 객체의 스키마 검증(예컨대, 본 명세서에 기술된 바와 같은 스키마 검증(302))이 수행될 수 있다. 하나 이상의 구현예들에서, 스키마 검증은 샌드박스 및 애플리케이션과 별개인 제2 샌드박스 내부에서 발생한다. 일부 예들에서, 스키마 검증은 블록(604)의 애플리케이션 특정 동작들 중 적어도 일부의 완료에 응답하여 수행된다. 예를 들어, 모든 애플리케이션 특정 동작들이 실패하는 경우 그리고/또는 샌드박스 자체가 손상되거나 충돌되는 경우, 메시지/객체는 샌드박스를 통해 스키마 검증으로 전달되지 않을 수 있다. 샌드박스에서의 객체를 생성하기 위한 불완전한 시도에 따라, 객체와 연관된 데이터가 스키마 검증으로 또는 애플리케이션으로 제공되는 것이 방지될 수 있다. 일부 예들에서, 불완전한 시도는 객체를 생성하기 위한 애플리케이션 특정 프로세스들 중 하나 이상의 실패일 수 있다. 단일 객체 유형의 단일 객체가 스키마 검증(302)을 사용하여 생성되고 검증되는 예들이 기술되었지만, 하나 이상의 구현예들에서, 다수의 상이한 유형들의 다수의 객체들이 샌드박스(300) 내에서 생성되고 이어서 스키마 검증(302)을 사용하여 검증될 수 있음을 이해해야 한다.
일부 예들에서, (예컨대, 샌드박스 내에서 객체를 생성하려는 불완전한 시도로 인해) 객체가 샌드박스를 통과하지 않을 때에도 메시지의 다른 부분이 애플리케이션에 제공될 수 있다. 예를 들어, 샌드박스 내에서, 다른 객체가 메시지로부터 생성될 수 있고, 다른 객체에 대한 다른 객체 유형에 기초하여, 샌드박스 외부 및 애플리케이션 외부에서 다른 객체에 대해 다른 스키마 검증이 수행될 수 있다. 다른 객체의 성공적인 스키마 검증에 따라 다른 객체에 대응하는 검증된 객체가 애플리케이션에 제공될 수 있다.
일부 시나리오들에서, 전체 샌드박스가 손상되어 애플리케이션 특정 동작들이 샌드박스로부터 임의의 출력을 생성하지 못할 수 있다. 샌드박스에서의 애플리케이션 특정 동작들의 전체 장애에 따라, 애플리케이션으로의 메시지의 전달이 방지될 수 있다. 애플리케이션으로의 메시지의 전달이 방지되는 상황에서, 장애 통지가 메시징 서버 또는 메시지의 전송자의 디바이스와 같은 원격 디바이스로 전송될 수 있다.
샌드박스에서 생성된 객체의 성공적인 스키마 검증에 따라, 대응하는 검증된 객체가 애플리케이션에 제공될 수 있다. 하나 이상의 구현예들에서, 성공적인 스키마 검증은 객체가 객체 유형에 대한 스키마에 부합함을 나타낸다. 하나 이상의 구현예들에서, 객체의 스키마 검증에 기초하여, 객체가 객체 유형에 대한 예상된 스키마에 부합하지 않음이 결정될 수 있다. 객체가 객체 유형에 대한 스키마에 부합하지 않는다는 결정에 응답하여, 객체가 애플리케이션에 제공되는 것이 방지될 수 있다.
하나 이상의 구현예들에서, 메시지는 암호화된 메시지일 수 있다. 메시지가 암호화된 메시지인 시나리오들에서, 암호화된 메시지는 샌드박스에서 메시지에 대한 애플리케이션 특정 동작들을 수행하기 전에 복호화되어, 객체와 연관된 정보를 포함하는 비암호화된 메시지 데이터를 획득할 수 있다. 암호화된 메시지는 애플리케이션에 의해 복호화되고 이어서 샌드박스에 제공될 수 있거나, 샌드박스 및 애플리케이션과 별개인 추가 샌드박스에서 복호화될 수 있다. 일부 예들에서, 추가 샌드박스는 (예컨대, 메시지를 복호화하기 위해) 메시지에 대한 복호화 키들에 대한 액세스를 갖는다.
예를 들어, 도 2 내지 도 6과 관련하여 본 명세서에 기술된 예들에서, 네트워크 데이터를 파싱, 디코딩 및/또는 언팩킹하기 위한 애플리케이션 특정 프로세스들의 다양한 특징들이 네트워크 데이터를 프로세싱하기 위한 애플리케이션과 별개인 샌드박스 내에서 수행되는 것으로 기술된다. 하나 이상의 구현예들에서, 샌드박스는 네트워크 데이터를 저장 및/또는 프로세싱하기 위해 이용가능한 제한되고/되거나 고정된 양의 메모리를 가질 수 있다. 하나 이상의 동작 시나리오들에서, 네트워크 데이터는 애플리케이션 특정 프로세스들에 이용가능한 메모리 내에(예컨대, 샌드박스(300)에 할당된 메모리 내에) 저장 및/또는 프로세싱하기에는 너무 큰 크기를 가질 수 있다.
본 개시의 양태들에 따르면, 애플리케이션 특정 프로세스들은 샌드박스에서 프로세싱될 네트워크 데이터가 샌드박스에 이용가능한 메모리 내에 저장 및/또는 프로세싱하기에는 너무 큰 크기를 갖는다고 결정(또는 통지)할 수 있고, 추가 메모리의 할당을 요청할 수 있다. 그러나, 예를 들어, 샌드박스에서의 애플리케이션 특정 프로세스들은 메모리 관리자와 같은 시스템 자원들에 대한 액세스를 갖지 않을 수 있기 때문에, 애플리케이션 특정 프로세스들은 시스템 프로세스들로부터 메모리를 요청할 수 없을 수 있고/없을 수 있거나 추가 메모리를 할당받는 것이 방지될 수 있다.
본 개시의 양태들에 따르면, 애플리케이션 특정 프로세스들은 그에 대한 네트워크 데이터가 수신되었던 애플리케이션 또는 다른 프로세스로부터 추가 메모리의 할당을 요청할 수 있다. 예를 들어, 도 7은 샌드박스(300)가 샌드박스(300)에서의 프로세스들에 의한 사용을 위해 배타적으로 할당된 메모리 영역(703)을 포함하는 동작 시나리오를 예시한다. 다양한 구현예들에서, 샌드박스(300)에 대한 메모리 영역(703)은 (예컨대, 도 7의 예에서와 같이) 전자 디바이스(104)의 시스템 메모리(702)로부터 물리적으로 별개의 메모리 영역 및/또는 논리적으로 별개의 메모리 영역일 수 있거나, 또는 (예컨대, 네트워크 데이터의 수신 이전에) 샌드박스(300)를 위해 특정적으로 그리고 배타적으로 할당된 시스템 메모리(702)의 영역일 수 있다.
하나 이상의 동작 시나리오에서, 전자 디바이스(104)에서 수신된 네트워크 데이터는 샌드박스(300)를 위한 메모리 영역(703)에서 프로세싱 및/또는 저장하기에는 너무 클 수 있다. 예를 들어, 메모리 영역(703)은 제1 프로세싱의 출력을 저장하기에는 그리고/또는 제1 프로세싱의 중간 프로세싱 데이터를 저장하기에는 불충분한 고정 크기를 가질 수 있다.
하나 이상의 구현예들에서, 애플리케이션(200)은 애플리케이션에 의해 프로세싱될 데이터(예컨대, 네트워크 데이터)와 연관된 파일 유형, 크기, 및/또는 다른 객체 정보를 결정하기 위해 샌드박스(300) 내의 애플리케이션 특정 프로세스들에 초기 호출을 행할 수 있다. 예를 들어, 샌드박스(300) 내에서, 전자 디바이스(104)는 메시지를 파싱하여 메시지 데이터로부터 생성될 객체의 객체 유형을 결정하고 메시지 내의 객체와 연관된 정보의 위치를 결정할 수 있다. 예를 들어, 객체 유형이 이미지인 경우, 전자 디바이스(104)는, 샌드박스(300) 내에서, 이미지 유형을 결정하고 이미지의 크기를 획득하려고 시도할 수 있다. 샌드박스(300)를 갖는 메시지로부터 획득된 이미지 유형, 이미지 크기, 및/또는 다른 메타데이터는 (예컨대, 스키마 검증(302)에 의한 이미지 유형 및/또는 이미지 크기의 성공적인 검증 이후) 애플리케이션(200)에 제공될 수 있다. 하나 이상의 구현예들에서, 샌드박스(300)로부터 애플리케이션(200)에 제공되는 크기 정보는 메모리 요청을 구성하거나, 또는 그 형태로 제공될 수 있다. 하나 이상의 구현예들에서, 메모리 요청은 또한 이미지 크기가 샌드박스(300)에 이용가능한 메모리 영역(703)의 크기보다 크다는 애플리케이션(200)에 대한 표시, 또는 이미지를 프로세싱하기 위해 샌드박스(300)에 의해 필요한 추가 메모리의 양에 대한 표시를 포함할 수 있다. 다른 구현예들에서, 애플리케이션(200)은 (예컨대, 이미지 크기가 크기 임계치보다 더 크다고, 예컨대 메모리 영역(703)의 크기보다 더 크다고 결정함으로써) 이미지 크기에 기초하여 추가 메모리가 할당되어야 함을 결정할 수 있다.
도 7의 예에 도시된 바와 같이, (예컨대, 샌드박스(300) 및/또는 애플리케이션(200) 내의 애플리케이션 특정 프로세스들에 의해) 메모리 영역(703)이 메모리 영역(703)을 사용하여 애플리케이션 특정 프로세스들을 수행하기에 불충분한 크기이고/이거나 이미지 크기가 애플리케이션(200)에 제공되었다고 결정되면, 애플리케이션(200)은 (예컨대, 크기 정보 및/또는 샌드박스(300)로부터 메모리 요청을 수신하는 것에 응답하여) 전자 디바이스(104)의 메모리 관리자(700)에 할당 요청을 제공할 수 있다. 예를 들어, 애플리케이션(200)은 애플리케이션에 의한 사용을 위해 할당된 메모리 영역(704)(예컨대, 메모리(702) 내의 어드레스 공간)을 가질 수 있다. 할당 요청은 애플리케이션과 샌드박스(300)와의 통신을 위해 포트 및/또는 파이프를 등록하라는 요청을 포함할 수 있다. 메모리 관리자(700)는 (예컨대, 애플리케이션으로부터의 할당 요청에 응답하여) 통신을 위한 식별자(예컨대, 파일 디스크립터(descriptor)와 같은 디스크립터)를 생성할 수 있다. 애플리케이션(200)은 식별자를 메모리 영역(700)에 매핑하거나 링크할 수 있다.
애플리케이션(200)은 (예컨대, 메시지로부터 이미지에 대응하는 이미지 데이터를 추출하고, 애플리케이션(200) 및/또는 스키마 검증(302)에 의해 예상되는 포맷으로 데이터 구조를 형성하기 위해 추출된 이미지 데이터를 디코딩, 트랜스코딩 및/또는 언팩킹하기 위해) 제1 프로세싱을 수행하기 위해 샌드박스(300)에 (예컨대, 제2) 호출을 할 수 있다. 샌드박스(300)에 대한 제2 호출은 메모리 영역(704)에 대한 영역 식별자로서 식별자를 포함할 수 있다. 이러한 방식으로, 샌드박스(300) 내의 프로세스들이 (예컨대, 애플리케이션(200)에 의한 요청에 응답하여 메모리 관리자에 의해 허가된 바와 같이) 영역 식별자에 출력을 기록할 때, 샌드박스(300)로부터의 출력이 애플리케이션(200)에 할당된 메모리 영역(704)에 기록된다. 하나 이상의 구현예들에서, 영역 식별자는 메모리 영역(704)에 대응하는 통합 자원 식별자(uniform resource identifier 또는 uniform resource locator)를 포함할 수 있다. 하나 이상의 구현예들에서, 메모리 영역(704)이 애플리케이션(200)에 할당되기 때문에, 메모리 관리자(700)는 샌드박스(300) 내의 애플리케이션 특정 프로세스들이 메모리 영역(704)을 활용하더라도 메모리 영역(704)을 애플리케이션(200)(예컨대, 샌드박스(300)이 아님)에 어카운팅(account)한다.
도 8에 도시된 바와 같이, 애플리케이션(200)으로부터 제공된 영역 식별자를 사용하여, 샌드박스(300) 내의 애플리케이션 특정 프로세스(들)는 제1 프로세싱된 데이터를 메모리 영역(704)에 제공(예컨대, 기록)할 수 있다. 도시된 바와 같이, 메모리 영역(704)에 저장된 제1 프로세싱된 데이터는 스키마 검증(302)에 의해 액세스될 수 있고/있거나 추가 프로세싱(예컨대, 도 2 내지 도 6의 임의의 또는 전부와 관련하여 본 명세서에 기술된 바와 같은 프로세싱)을 위해 애플리케이션(200)에 의해 재호출 및/또는 달리 액세스될 수 있다. 도 8에 도시된 바와 같이, 애플리케이션(200)은 추가로, 제1 프로세싱된 데이터를 프로세싱하고 제2 프로세싱된 데이터를 생성할 수 있다. 제2 프로세싱된 데이터는 동일한 메모리 영역(704)에 저장될 수 있거나, 메모리 관리자에 의해 애플리케이션을 위해 할당된 추가 메모리에 저장될 수 있다.
도 7 및 도 8의 예는 애플리케이션이 샌드박스된 프로세스에 의한 사용을 위해 메모리를 할당하는 맥락에서 기술된다. 그러나, 디바이스의 제1 프로세스(예컨대, 샌드박스된 프로세스)가 디바이스의 메모리 관리자와 별개인 제2 프로세스(예컨대, 애플리케이션)로부터 메모리 할당을 수신하는, 도 7 및 도 8과 관련하여 기술된 동작들은 (예컨대, 제1 프로세스가 충분한 메모리를 갖지 않고 제2 프로세스에 메모리 어카운팅이 적용될 임의의 시나리오에서) 다른 제1 및 제2 프로세스에도 적용될 수 있다는 것이 이해된다.
도 9는 하나 이상의 구현예들에 따른, 디바이스에서 다른 프로세스의 메모리를 사용하는, 디바이스에서 하나의 프로세스에 의한 데이터의 프로세싱을 위한 예시적인 프로세스(900)의 흐름도를 예시한다. 설명의 목적을 위해, 프로세스(900)는 본 명세서에서 도 1의 전자 디바이스(104)를 참조하여 주로 기술된다. 그러나, 프로세스(900)는 도 1의 전자 디바이스(104)로 제한되지 않으며, 프로세스(900)의 하나 이상의 블록들(또는 동작들)은 하나 이상의 다른 컴포넌트들 및/또는 기타 적합한 디바이스들에 의해 수행될 수 있다. 또한 설명의 목적을 위해, 프로세스(900)의 블록들은 본 명세서에서 직렬로 또는 선형적으로 발생하는 것으로 기술된다. 그러나, 프로세스(900)의 다수의 블록들은 병렬로 발생할 수 있다. 또한, 프로세스(900)의 블록들은 도시된 순서로 수행될 필요가 없고/없거나, 프로세스(900)의 하나 이상의 블록들은 수행될 필요가 없고/없거나 다른 동작들에 의해 대체될 수 있다.
블록(902)에서, 컴퓨팅 디바이스(예컨대, 전자 디바이스(104))는 제1 프로세스(예컨대, 샌드박스된 프로세스 또는 샌드박스(300)에서의 애플리케이션 특정 프로세스와 같은 다른 프로세스), 제2 프로세스(예컨대, 애플리케이션 또는 다른 프로세스), 및 메모리 관리자(예컨대, 메모리 관리자(700))를 포함하며, 제1 프로세스는 제2 프로세스에 의해 프로세싱될 데이터를 식별할 수 있다. 제1 프로세스는 데이터를 수신함으로써, 제2 프로세스로부터 데이터가 이용가능하다는 것을 나타내는 호출을 수신함으로써, 또는 다른 프로세스(예컨대, 시스템 프로세스)로부터 (예들로서) 데이터가 이용가능하다는 메시지 또는 다른 이벤트를 수신함으로써, 프로세싱될 데이터를 식별할 수 있다. 프로세싱될 데이터는 이미지 데이터와 같은 네트워크를 통해 수신된 네트워크 데이터를 포함할 수 있고/있거나, JSON(JavaScript Object Notation) 데이터, 프로퍼티 리스트(plist) 데이터, 다른 유형들의 데이터, 및/또는 유형없는 데이터와 같은, 디바이스에 의해 수신되거나 디바이스에 저장된 다른 유형의 데이터일 수 있다. 하나 이상의 구현예들에서, 제1 프로세스는 도 5의 필터 프로세스(502) 및 필터 프로세스(506) 중 하나 또는 둘 모두를 포함할 수 있다. 하나 이상의 구현예들에서, 제1 프로세스에 의해, 제2 프로세스에 의해 프로세싱될 데이터를 식별하는 것은, 데이터에 대응하는 크기 정보에 대한 초기 요청을 제2 프로세스로부터 제1 프로세스에 수신하는 것을 포함할 수 있다.
하나 이상의 구현예들에서, 컴퓨팅 디바이스에서 제1 프로세스에 의해, 제2 프로세스에 의해 프로세싱될 데이터를 식별하기 전에, 컴퓨팅 디바이스는 (예컨대, 제2 프로세스에 대응하는 메시징 애플리케이션과 같은 메시징 애플리케이션을 통해 수신된 메시지에서) 데이터를 수신할 수 있다. 제1 프로세스 및 제2 프로세스는 각각 메모리 관리자와 별개일 수 있다. 예를 들어, 제1 프로세스는 컴퓨트 전용 샌드박스된 프로세스(예컨대, 샌드박스(300))일 수 있다. 제2 프로세스(예컨대, 애플리케이션(200))는 컴퓨트 전용 샌드박스된 프로세스에 의해 액세스할 수 없는 시스템 자원(예컨대, 메모리 관리자(700) 및/또는 다른 시스템 소프트웨어 및/또는 하드웨어 자원들과 같은 시스템 자원들(202)의 임의의 것 또는 전부)에 대한 액세스를 가질 수 있다.
블록(904)에서, 상기 제1 프로세스는 메모리의 할당에 대한 요청을 제2 프로세스로 전송할 수 있다. 예를 들어, 제1 프로세스는 도 7과 관련하여 본 명세서에 기술된 바와 같이 메모리 요청을 제2 프로세스로 전송할 수 있다. 하나 이상의 구현예들에서, 제1 프로세스는 제1 프로세스에 대한 다른 메모리 영역(예컨대, 메모리 영역(703))이 데이터의 프로세싱에 불충분하다는 (예컨대, 제1 프로세스에 의한) 결정에 응답하여 메모리 요청을 전송할 수 있다. 하나 이상의 구현예들에서, 메모리 요청을 전송하는 것은 크기 또는 데이터와 연관된 메모리 요건들을 나타내는 다른 크기 정보에 대한 제1 프로세스로부터의 초기 요청에 응답하여, 데이터의 크기 또는 데이터와 관련된 메모리 요건들을 나타내는 다른 크기 정보를 제2 프로세스에 제공하는 것을 포함할 수 있다.
블록(906)에서, 제1 프로세스는, 제2 프로세스로부터, 메모리 영역(예컨대, 메모리 영역(704))에 대응하는 식별자(예컨대, 영역 식별자)를 수신할 수 있다. 예를 들어, 제2 프로세스는 메모리 관리자에 할당 요청을 제공하고, 메모리 관리자로부터 식별자(예컨대, 파일 포트에 대한 파일 디스크립터와 같은 디스크립터)를 수신하고, 식별자를 메모리 영역에 링크시키고, 제1 프로세스에 영역 식별자를 제공할 수 있다. 메모리 영역이 제2 프로세스를 위해 할당되기 때문에, 메모리 관리자는 메모리 영역을 (예컨대, 제1 프로세스가 아닌) 제2 프로세스로 어카운팅할 수 있다.
하나 이상의 구현예들에서, 식별자는 메모리 관리자(예컨대, 메모리 관리자(700))에 의해 생성되는 디스크립터일 수 있다. 예를 들어, 디스크립터는 제2 프로세스로부터의 요청(예컨대, 할당 요청)에 기초하여 메모리 관리자에 의해 생성될 수 있으며, 요청은 제1 프로세스에 대한 디스크립터에 대한 액세스를 제공하기 위한 요청을 포함한다. 하나 이상의 구현예들에서, 제1 프로세스에 제공된 영역 식별자는 메모리 영역에 대한 포트 식별자 및/또는 통합 자원 식별자를 포함할 수 있다.
블록(908)에서, 제1 프로세스는 데이터의 제1 프로세싱을 수행할 수 있다. 하나 이상의 구현예들에서, 블록(906)에서 제2 프로세스로부터 제1 프로세스에 제공된 영역 식별자는 데이터의 제1 프로세싱을 수행하기 위해 제2 프로세스로부터 제1 프로세스로의 호출에 제공될 수 있다. 예를 들어, 제1 프로세스에 의한 데이터의 제1 프로세싱은, (예컨대, 할당된 메모리 영역으로부터) 데이터의 일부분을 반복적으로 판독하고, (예컨대, 할당된 메모리 영역에서) 데이터의 일부분을 프로세싱하고, 데이터의 프로세싱된 부분(예컨대, 도 8과 관련하여 본 명세서에 기술된 바와 같은 제1 프로세싱된 데이터)을 식별자를 사용하여 메모리 영역에 기록하는 것을 포함할 수 있다. 예를 들어, 제1 프로세스는 할당된 메모리 영역에서 제1 프로세싱을 수행할 수 있다.
하나 이상의 구현예들에서, 제1 프로세스를 이용한 데이터의 제1 프로세싱은 (예컨대, 도 3, 도 4, 도 5 및/또는 도 6과 관련하여 본 명세서에 기술된 바와 같이) 데이터를 디코딩 또는 트랜스코딩하는 것을 포함할 수 있다. 예를 들어, 제1 프로세스는 데이터를 데이터가 수신된 포맷으로부터 제2 프로세스와 연관된 데이터 포맷으로 트랜스코딩함으로써 데이터를 트랜스코딩하는 것을 포함할 수 있다. 예를 들어, 제2 프로세스는 제1 프로세싱을 위한 제1 프로세스로의 호출에서 데이터 포맷을 특정할 수 있다.
하나 이상의 구현예들에서, 데이터를 트랜스코딩하는 것은 데이터의 일부분을 제거하는 것을 포함한다. 예를 들어, 데이터는 이미지 데이터(예컨대, jpeg 데이터 또는 임의의 다른 이미지 포맷의 이미지 데이터)를 포함할 수 있고, 데이터의 일부분을 제거하는 것은 이미지 데이터의 각각의 픽셀에 대한 데이터로부터 미사용 비트를 제거하는 것을 포함할 수 있다. 예를 들어, jpeg 파일의 각각의 픽셀은 4개의 비트를 포함할 수 있고, 이들 중 3개는 이미지 정보를 포함하고, 하나는 사용되지 않는다. 하나 이상의 동작 시나리오들에서, 악성 데이터는 jpeg 데이터의 다양한 픽셀들의 미사용 비트로 인코딩될 수 있다. (예컨대, 하나 이상의 구현예들에서 샌드박스(300) 내에서) 제1 프로세스에 의해 미사용 비트를 제거하는 것은 미사용 비트의 악성 또는 다른 유해 콘텐츠가 제2 프로세스 및/또는 컴퓨팅 디바이스에서의 다른 프로세스들에 영향을 미치는 것을 방지할 수 있다. 예를 들어, 제1 프로세스가 샌드박스된 프로세스인 구현예들에서, 제거된 악성 데이터는 무해하게 제거될 수 있거나, 또는 제1 프로세스가 실패하게 할 수 있으며, 어느 방식이든 악성 데이터가 컴퓨팅 디바이스의 다른 부분들 또는 프로세스들에 영향을 미치는 것을 방지한다(예컨대, 도 3 내지 도 6과 관련하여 본 명세서에 기술된 바와 같음).
제1 프로세스가 트랜스코딩 프로세스를 포함하는 하나 이상의 구현예들에서, 제1 프로세스는 또한 트랜스코딩을 수행하기 전에 (예컨대, 데이터에 대한 유형 데이터 또는 다른 메타데이터를 스키마 검증(302)에 제공함으로써) 데이터가 유효하다는 초기 검증을 수행하는 것을 포함할 수 있다. 하나 이상의 구현예들에서, 데이터는 이미지 데이터를 포함하고, 제2 프로세스는 이미지 분석 프로세스에 대응한다. 하나 이상의 구현예들에서, 제2 프로세스(예컨대, 이미지 분석 프로세스)는 이미지 분석 프로세스(예컨대, 객체 인식 프로세스, 필터링 프로세스, 얼굴 인식 프로세스 등)와 같은 기계 학습 프로세스일 수 있거나 이를 포함할 수 있다.
블록(910)에서, 제1 프로세스는 식별자를 사용하여 제1 프로세싱의 출력(예컨대, 제1 프로세싱된 데이터)을 메모리 영역에 기록할 수 있다. 예를 들어, 제1 프로세싱의 출력은 데이터의 디코딩된 버전 또는 트랜스코딩된 버전을 포함할 수 있다. 하나 이상의 구현예들에서, 제1 프로세싱의 출력은, 메모리 영역에 출력을 기록하기 전에 그리고/또는 제2 프로세스에 의한 출력의 액세스 전에 스키마 검증(예컨대, 스키마 검증(302))을 통해 프로세싱될 수 있다.
하나 이상의 구현예들에서, 제2 프로세스에 의한 할당된 메모리 영역에서의 제1 프로세싱의 출력의 제2 프로세싱은 데이터의 각각의 프로세싱된 부분이 제1 프로세스로부터 메모리 영역에 수신될 때 이를 프로세싱하는 것을 포함할 수 있다. 다른 동작 시나리오들에서, 제2 프로세싱은 데이터의 모든 프로세싱된 부분들이 제1 프로세스로부터 메모리 영역에 수신된 후에 수행될 수 있다. 하나 이상의 구현예들에서, 제2 프로세스는 프로세싱된 데이터를 메모리 영역으로부터 재호출하고, 프로세싱된 데이터의 제2 프로세싱을 수행한다.
도 10은 하나 이상의 구현예들에 따른, 디바이스에서의 다른 프로세스에 의해, 디바이스에서 하나의 프로세스의 메모리에서의 데이터의 프로세싱을 용이하게 하기 위한 예시적인 프로세스(1000)의 흐름도를 예시한다. 설명의 목적을 위해, 프로세스(1000)는 본 명세서에서 도 1의 전자 디바이스(104)를 참조하여 주로 기술된다. 그러나, 프로세스(1000)는 도 1의 전자 디바이스(104)로 제한되지 않으며, 프로세스(1000)의 하나 이상의 블록들(또는 동작들)은 하나 이상의 다른 컴포넌트들 및/또는 기타 적합한 디바이스들에 의해 수행될 수 있다. 또한 설명의 목적을 위해, 프로세스(1000)의 블록들은 본 명세서에서 직렬로 또는 선형적으로 발생하는 것으로 기술된다. 그러나, 프로세스(1000)의 다수의 블록들은 병렬로 발생할 수 있다. 또한, 프로세스(1000)의 블록들은 도시된 순서로 수행될 필요가 없고/없거나, 프로세스(1000)의 하나 이상의 블록들은 수행될 필요가 없고/없거나 다른 동작들에 의해 대체될 수 있다.
블록(1002)에서, 제1 프로세스(예컨대, 애플리케이션(200) 또는 클라이언트 프로세스와 같은 다른 프로세스)는 제2 프로세스(예컨대, 샌드박스(300)에서의 애플리케이션 특정 프로세스와 같은, 샌드박스된 프로세스 또는 다른 프로세스)에 의해 프로세싱될 데이터를 식별하며, 제1 프로세스 및 제2 프로세스는 각각 컴퓨팅 디바이스(예컨대, 전자 디바이스(104))의 메모리 관리자(예컨대, 메모리 관리자(700))와 별개이다. 명확성을 위해, 일부 예들에서, 도 10의 설명에서 용어 "제1 프로세스" 및 "제2 프로세스"는 도 9의 설명에서 각자의 "제2 프로세스"및 "제1 프로세스"의 양태들에 대응할 수 있음이 이해된다.
블록(1004)에서, 제1 프로세스는 프로세싱될 데이터의 메모리 요건들에 관한 정보에 대한 요청을 제2 프로세스로 전송할 수 있다. 예를 들어, 하나 이상의 구현예들에서, 제1 프로세스는 프로세싱될 데이터의 크기에 대해 제2 프로세스에 초기 요청을 하는 클라이언트 프로세스일 수 있다.
블록(1006)에서, 제1 프로세스는, 제2 프로세스로부터, 프로세싱될 데이터의 메모리 요건들에 관한 정보를 수신할 수 있다. 예를 들어, 제2 프로세스는 데이터의 크기를 결정하고 데이터의 크기를 제1 프로세스로 전송할 수 있다.
블록(1008)에서, 제1 프로세스는 제2 프로세스로부터 수신된 응답에 요약된 요건들을 충족하는 메모리(예컨대, 데이터를 저장 및/또는 프로세싱하기에 충분한 크기를 갖는 메모리)(예컨대, 메모리(704))를 할당할 수 있다. 예를 들어, 제1 프로세스는 메모리 관리자에 할당 요청을 제공하고, 메모리 관리자로부터 식별자(예컨대, 파일 포트에 대한 파일 디스크립터와 같은 디스크립터)를 수신하고, 식별자를 메모리 영역에 링크시키고, 제2 프로세스에 영역 식별자를 제공할 수 있다(예컨대, 도 7 내지 도 9와 관련하여 전술한 바와 같음). 메모리 영역이 제1 프로세스를 위해 할당되기 때문에, 메모리 관리자는 메모리 영역을 (예컨대, 제2 프로세스가 아닌) 제1 프로세스로 어카운팅할 수 있다.
블록(1010)에서, 제1 프로세스는 메모리 영역에 대응하는 식별자(예컨대, 영역 식별자)를 제2 프로세스로 전송할 수 있다.
블록(1012)에서, 제2 프로세스는 데이터의 제1 프로세싱을 수행할 수 있다. 예를 들어, 하나 이상의 구현예들에서, 상기 제2 프로세스를 이용한 데이터의 제1 프로세싱은 (예컨대, 도 3, 도 4, 도 5, 도 6 및/또는 도 9과 관련하여 본 명세서에 기술된 바와 같이) 데이터를 디코딩 또는 트랜스코딩하는 것을 포함할 수 있다. 예를 들어, 데이터의 제1 프로세싱은 데이터를 데이터가 수신된 포맷으로부터 제2 프로세스와 연관된 데이터 포맷으로 트랜스코딩함으로써 데이터를 트랜스코딩하는 것을 포함할 수 있다. 예를 들어, 제1 프로세스는 제1 프로세싱을 위한 제2 프로세스로의 호출에서 데이터 포맷을 특정할 수 있다.
블록(1014)에서, 제2 프로세스는 식별자를 사용하여 제1 프로세싱의 출력을 메모리 영역에 기록할 수 있다. 예를 들어, 제1 프로세싱의 출력은 데이터의 디코딩된 버전 또는 트랜스코딩된 버전을 포함할 수 있다. 하나 이상의 구현예들에서, 제2 프로세싱의 출력은, 제2 프로세스에 의해 메모리 영역에 출력을 기록하기 전에, 그리고/또는 제1 프로세스에 의한 출력의 액세스 전에 스키마 검증(예컨대, 스키마 검증(302))을 통해 프로세싱될 수 있다.
블록(1016)에서, 제1 프로세스는 이전에 전송된 메모리 영역 식별자를 사용하여 프로세싱된 데이터를 재호출할 수 있다. 이어서, 제1 프로세스는 재호출된 프로세싱된 데이터의 제2 프로세싱을 수행할 수 있다.
도 11은 본 기술의 하나 이상의 구현예들이 구현될 수 있는 전자 시스템(1100)을 예시한다. 전자 시스템(1100)은 도 1에 도시된 전자 디바이스들(102, 104) 및/또는 서버들(120) 중 하나 이상일 수 있고/있거나 그 일부일 수 있다. 전자 시스템(1100)은 다양한 유형들의 컴퓨터 판독가능 매체들 및 다양한 다른 유형들의 컴퓨터 판독가능 매체들을 위한 인터페이스들을 포함할 수 있다. 전자 시스템(1100)은 버스(1108), 하나 이상의 프로세싱 유닛(들)(1112), 시스템 메모리(1104)(및/또는 버퍼), ROM(1110), 영구 저장 디바이스(1102), 입력 디바이스 인터페이스(1114), 출력 디바이스 인터페이스(1106), 및 하나 이상의 네트워크 인터페이스들(1116), 또는 이들의 서브세트들 및 변형들을 포함한다.
버스(1108)는 전자 시스템(1100)의 다수의 내부 디바이스들을 통신가능하게 연결하는 모든 시스템, 주변기기, 및 칩셋 버스들을 총괄하여 표현한다. 하나 이상의 구현예들에서, 버스(1108)는 하나 이상의 프로세싱 유닛(들)(1112)을 ROM(1110), 시스템 메모리(1104), 및 영구 저장 디바이스(1102)와 통신가능하게 연결시킨다. 이들 다양한 메모리 유닛들로부터, 하나 이상의 프로세싱 유닛(들)(1112)은 본 개시내용의 프로세스들을 실행하기 위해 실행할 명령어들 및 프로세싱할 데이터를 회수한다. 하나 이상의 프로세싱 유닛(들)(1112)은 상이한 구현예들에서 단일 프로세서 또는 멀티-코어 프로세서일 수 있다.
ROM(1110)은 하나 이상의 프로세싱 유닛(들)(1112) 및 전자 시스템(1100)의 다른 모듈들에 의해 필요한 정적 데이터 및 명령어들을 저장한다. 다른 한편으로, 영구 저장 디바이스(1102)는 판독-및-기록 메모리 디바이스일 수 있다. 영구 저장 디바이스(1102)는 전자 시스템(1100)이 오프일 때도 명령어들 및 데이터를 저장하는 비휘발성 메모리 유닛일 수 있다. 하나 이상의 구현예들에서, 영구 저장 디바이스(1102)로서 (자기 또는 광 디스크 및 그의 대응하는 디스크 드라이브와 같은) 대용량 저장 디바이스가 사용될 수 있다.
하나 이상의 구현예들에서, 영구 저장 디바이스(1102)로서 (플로피 디스크, 플래시 드라이브, 및 그의 대응하는 디스크 드라이브와 같은) 착탈식 저장 디바이스가 사용될 수 있다. 영구 저장 디바이스(1102)와 같이, 시스템 메모리(1104)는 판독- 및-기록 메모리 디바이스일 수 있다. 그러나, 영구 저장 디바이스(1102)와 달리, 시스템 메모리(1104)는 랜덤 액세스 메모리와 같은 휘발성 판독-및-기록 메모리일 수 있다. 시스템 메모리(1104)는 하나 이상의 프로세싱 유닛(들)(1112)이 런타임 시에 필요로 할 수 있는 명령어들 및 데이터 중 임의의 것을 저장할 수 있다. 하나 이상의 구현예들에서, 본 개시내용의 프로세스들은 시스템 메모리(1104), 영구 저장 디바이스(1102), 및/또는 ROM(1110)에 저장된다. 이들 다양한 메모리 유닛들로부터, 하나 이상의 프로세싱 유닛(들)(1112)은 하나 이상의 구현예들의 프로세스들을 실행하기 위해 실행할 명령어들 및 프로세싱할 데이터를 검색한다.
버스(1108)는 또한, 입력 및 출력 디바이스 인터페이스들(1114, 1106)에 연결된다. 입력 디바이스 인터페이스(1114)는 사용자가 전자 시스템(1100)으로 정보를 통신하게 하고 그에 대한 명령들을 선택할 수 있게 한다. 입력 디바이스 인터페이스(1114)와 함께 사용될 수 있는 입력 디바이스들은, 예를 들어, 영숫자 키보드들 및 포인팅 디바이스들("커서 제어 디바이스들"로도 지칭됨)을 포함할 수 있다. 출력 디바이스 인터페이스(1106)는 예를 들어, 전자 시스템(1100)에 의해 생성된 이미지들의 디스플레이를 가능하게 할 수 있다. 출력 디바이스 인터페이스(1106)와 함께 사용될 수 있는 출력 디바이스들은, 예를 들어 프린터들 및 디스플레이 디바이스들, 예컨대 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 가요성 디스플레이, 평판 디스플레이, 솔리드 스테이트 디스플레이, 프로젝터, 또는 정보를 출력하기 위한 임의의 다른 디바이스를 포함할 수 있다. 하나 이상의 구현예들은 터치스크린과 같은, 입력 및 출력 디바이스들 둘 모두로서 기능하는 디바이스들을 포함할 수 있다. 이들 구현예들에서, 사용자에게 제공되는 피드백은 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백과 같은 임의의 형태의 감각 피드백일 수 있고; 사용자로부터의 입력은 음향, 음성, 또는 촉각적 입력을 포함하는 임의의 형태로 수신될 수 있다.
최종적으로, 도 11에 도시된 바와 같이, 버스(1108)는 또한 전자 시스템(1100)을 하나 이상의 네트워크 인터페이스(들)(1116)를 통해, 하나 이상의 네트워크들 및/또는 도 1에 도시된 서버들(120)과 같은 하나 이상의 네트워크 노드들에 결합시킨다. 이러한 방식으로, 전자 시스템(1100)은 컴퓨터들의 네트워크(예컨대, LAN, 광역 네트워크("WAN"), 또는 인트라넷), 또는 네트워크들의 네트워크, 예컨대 인터넷의 일부일 수 있다. 전자 시스템(1100)의 임의의 또는 모든 컴포넌트들은 본 개시내용과 함께 사용될 수 있다.
본 개시의 양태들에 따르면, 애플리케이션을 갖는 디바이스에서, 객체 유형을 갖는 객체와 연관된 정보를 포함하는 메시지를 수신하는 단계를 포함하는 방법이 제공된다. 애플리케이션은 객체를 포함하는 메시지 콘텐츠를 사용자 인터페이스에 제공하기 위해 메시지를 프로세싱하도록 구성된다. 방법은 또한 애플리케이션과 별개인 샌드박스에서, 메시지에 대해, 애플리케이션에 대한 애플리케이션 특정 동작들을 수행하는 단계를 더 포함한다. 애플리케이션 특정 동작들은 객체 유형을 결정하는 것, 및 결정된 객체 유형에 기초하여, 메시지 내의 객체와 연관된 정보로부터 객체를 생성하려고 시도하는 것을 포함한다. 방법은 또한 샌드박스에서 객체를 생성하려는 시도가 완료됨에 따라, 샌드박스의 외부 및 애플리케이션의 외부에서 객체 유형에 기초하여 객체의 스키마 검증을 수행하는 단계를 포함한다.
본 개시의 양태들에 따르면, 명령어들을 저장하는 비일시적 기계 판독가능 매체가 제공되며, 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금 애플리케이션을 갖는 디바이스에서, 객체 유형을 갖는 객체와 연관된 정보를 포함하는 메시지를 수신하는 것을 포함하는 동작들을 수행하게 한다. 애플리케이션은 객체를 포함하는 메시지 콘텐츠를 사용자 인터페이스에 제공하기 위해 메시지를 프로세싱하도록 구성된다. 동작들은 또한 애플리케이션과 별개인 샌드박스에서, 메시지에 대해, 애플리케이션에 대한 애플리케이션 특정 동작들을 수행하는 것을 포함한다. 애플리케이션 특정 동작들은 객체 유형을 결정하는 것, 및 결정된 객체 유형에 기초하여, 메시지 내의 객체와 연관된 정보로부터 객체를 생성하려고 시도하는 것을 포함한다. 동작들은 또한, 샌드박스에서 객체를 생성하려는 시도의 완료에 따라(예컨대, 객체가 성공적으로 생성되는 경우), 샌드박스의 외부 및 애플리케이션의 외부에서 객체 유형에 기초하여 객체의 스키마 검증을 수행하는 것을 포함한다.
본 개시의 양태들에 따르면, 애플리케이션을 저장하는 메모리, 및 하나 이상의 프로세서들을 포함하는 전자 디바이스가 제공되며, 하나 이상의 프로세서들은 객체 유형을 갖는 객체와 연관된 정보를 포함하는 메시지를 수신하도록 구성된다. 애플리케이션은 객체를 포함하는 메시지 콘텐츠를 사용자 인터페이스에 제공하기 위해 메시지를 프로세싱하도록 구성된다. 하나 이상의 프로세서들은, 애플리케이션과 별개인 샌드박스에서, 메시지에 대해, 애플리케이션에 대한 애플리케이션 특정 동작들을 수행하도록 더 구성된다. 애플리케이션 특정 동작들은 객체 유형을 결정하는 것, 및 결정된 객체 유형에 기초하여, 메시지 내의 객체와 연관된 정보로부터 객체를 생성하려고 시도하는 것을 포함한다. 하나 이상의 프로세서들은, 샌드박스 내에 객체를 생성하려는 시도가 완료됨에 따라, 샌드박스 외부 및 애플리케이션의 외부에서 객체 유형에 기초하여 객체의 스키마 검증을 수행하도록 더 구성된다.
본 개시의 양태들에 따르면, 방법으로서, 제1 프로세스, 제2 프로세스, 및 메모리 관리자를 포함하는 컴퓨팅 디바이스에서, 제1 프로세스에 의해, 제2 프로세스에 의해 프로세싱될 데이터를 식별하는 단계 - 제1 프로세스 및 제2 프로세스는 각각 메모리 관리자와 별개임 -; 메모리의 할당에 대한 요청을 제1 프로세스로부터 제2 프로세스로 전송하는 단계; 메모리 영역에 대응하는 식별자를 제1 프로세스에 의해 제2 프로세스로부터 수신하는 단계; 제1 프로세스에 의해, 데이터의 제1 프로세싱을 수행하는 단계; 및 식별자를 사용하여 제1 프로세싱의 출력을 메모리 영역에 기록하는 단계를 포함하는 방법이 제공된다.
본 개시내용의 양태들에 따르면, 전자 디바이스가 제공되며, 전자 디바이스는, 제1 프로세스; 제2 프로세스; 메모리 관리자 - 제1 프로세스 및 제2 프로세스는 각각 메모리 관리자와 별개임 -; 및 하나 이상의 프로세서들을 포함하며, 하나 이상의 프로세서들은, 제1 프로세스에 의해, 제2 프로세스에 의해 프로세싱될 데이터를 식별하고; 메모리의 할당에 대한 요청을 제1 프로세스로부터 제2 프로세스로 전송하고; 메모리 영역에 대응하는 식별자를 제1 프로세스에 의해 제2 프로세스로부터 수신하고; 제1 프로세스에 의해, 데이터의 제1 프로세싱을 수행하고; 식별자를 사용하여 제1 프로세싱의 출력을 메모리 영역에 기록하도록 구성된다.
본 개시의 양태들에 따르면, 명령어들을 저장하는 비일시적 기계 판독가능 매체가 제공되며, 명령어들은, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 제1 프로세스, 제2 프로세스 및 메모리 관리자를 포함하는 컴퓨팅 디바이스에서, 제1 프로세스에 의해, 제2 프로세스에 의해 프로세싱될 데이터를 식별하는 동작 - 제1 프로세스 및 제2 프로세스는 각각 메모리 관리자와 별개임 -; 메모리의 할당에 대한 요청을 제1 프로세스로부터 제2 프로세스로 전송하는 동작; 메모리 영역에 대응하는 식별자를 제1 프로세스에 의해 제2 프로세스로부터 수신하는 동작; 제1 프로세스에 의해, 데이터의 제1 프로세싱을 수행하는 동작; 및 상기 식별자를 사용하여 상기 제1 프로세싱의 출력을 상기 메모리 영역에 기록하는 동작을 포함하는 동작들을 수행하게 한다.
본 개시내용의 범주 내의 구현예들은 하나 이상의 명령어들을 인코딩하는 유형의(tangible) 컴퓨터-판독가능 저장 매체(또는 하나 이상의 유형들의 다수의 유형의 컴퓨터-판독가능 저장 매체들)를 사용하여 부분적으로 또는 전체적으로 실현될 수 있다. 유형의 컴퓨터-판독가능 저장 매체는 또한 사실상 비-일시적일 수 있다.
컴퓨터-판독가능 저장 매체는 명령어들을 실행할 수 있는 임의의 프로세싱 전자기기 및/또는 프로세싱 회로부를 포함하는 범용 또는 특수 목적 컴퓨팅 디바이스에 의해 판독, 기록, 또는 달리 액세스될 수 있는 임의의 저장 매체일 수 있다. 예를 들어, 제한 없이, 컴퓨터 판독가능 매체는 RAM, DRAM, SRAM, T-RAM, Z-RAM, 및 TTRAM과 같은 임의의 휘발성 반도체 메모리를 포함할 수 있다. 컴퓨터-판독가능 매체는 또한 ROM, PROM, EPROM, EEPROM, NVRAM, 플래시, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, 레이스트랙(racetrack) 메모리, FJG, 및 밀리피드(Millipede) 메모리와 같은 임의의 비휘발성 반도체 메모리를 포함할 수 있다.
또한, 컴퓨터 판독가능 저장 매체는 임의의 비-반도체 메모리, 예컨대 광 디스크 저장장치, 자기 디스크 저장장치, 자기 테이프, 다른 자기 저장 디바이스들, 또는 하나 이상의 명령어들을 저장할 수 있는 임의의 다른 매체를 포함할 수 있다. 하나 이상의 구현예들에서, 유형의 컴퓨터 판독가능 저장 매체는 컴퓨팅 디바이스에 직접 결합될 수 있는 반면, 다른 구현예들에서는, 유형의 컴퓨터 판독가능 저장 매체는 컴퓨팅 디바이스에, 예를 들어 하나 이상의 유선 연결들, 하나 이상의 무선 연결들, 또는 이들의 임의의 조합을 통해, 간접적으로 결합될 수 있다.
명령어들은 직접 실행가능할 수 있거나 또는 실행가능 명령어들을 개발하는 데 사용될 수 있다. 예를 들어, 명령어들은 실행가능 또는 비-실행가능 기계 코드로서, 또는 실행가능 또는 비-실행가능 기계 코드를 생성하도록 컴파일링될 수 있는 고레벨 언어에서의 명령어들로서 실현될 수 있다. 추가로, 명령어들은 또한 데이터로서 실현될 수 있거나 데이터를 포함할 수 있다. 컴퓨터 실행가능 명령어들은 또한 루틴들, 서브루틴들, 프로그램들, 데이터 구조들, 객체들, 모듈들, 애플리케이션들, 애플릿들, 함수들 등을 포함하는 임의의 포맷으로 조직화될 수 있다. 당업자에 의해 인식되는 바와 같이, 명령어들의 수, 구조, 시퀀스, 및 조직화를 포함하지만 이에 제한되지 않는 세부사항들은 기초가 되는 로직, 함수, 프로세싱, 및 출력을 변경하지 않으면서 현저하게 변경될 수 있다.
위의 논의는 소프트웨어를 실행시키는 마이크로프로세서 또는 멀티-코어 프로세서들을 주로 언급하지만, 하나 이상의 구현예들은 ASIC들 또는 FPGA들과 같은 하나 이상의 집적 회로들에 의해 수행된다. 하나 이상의 구현예들에서, 그러한 집적 회로들은 회로 자체 상에 저장된 명령어들을 실행시킨다.
당업자는 본 명세서에 기술된 다양한 예시적인 블록들, 모듈들, 요소들, 컴포넌트들, 방법들, 및 알고리즘들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 둘 모두의 조합들로서 구현될 수 있다는 것을 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 호환성을 예시하기 위해, 다양한 예시적인 블록들, 모듈들, 요소들, 컴포넌트들, 방법들, 및 알고리즘들이 일반적으로 그들의 기능성에 관하여 위에서 기술되었다. 그러한 기능성이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 전체 시스템에 부과되는 특정 애플리케이션 및 설계 제약들에 의존한다. 당업자는 설명된 기능성을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있다. 다양한 컴포넌트들 및 블록들이 모두 본 기술의 범주로부터 벗어남이 없이 상이하게 배열될 수 있다(예컨대, 상이한 순서로 배열되거나 상이한 방식으로 분할됨).
개시된 프로세스들에서 블록들의 임의의 특정한 순서 또는 계층이 예시적인 접근법들의 예시임이 이해된다. 설계 선호도들에 기초하여, 프로세스들에서 블록들의 특정한 순서 또는 계층이 재배열될 수 있거나, 또는 모든 예시된 블록들이 수행될 수 있는 것이 이해된다. 블록들 중 임의의 것들이 동시에 수행될 수 있다. 하나 이상의 구현예들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 더욱이, 전술한 구현예들에서의 다양한 시스템 컴포넌트들의 분리는 모든 구현예들에서 그러한 분리를 요구하는 것으로 이해되지 않아야 하며, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품 내에 함께 통합되거나 다수의 소프트웨어 제품 내에 패키징될 수 있다는 것을 이해해야 한다.
본 명세서 및 본 출원의 임의의 청구항들에서 사용된 바와 같이, 용어들 "기지국", "수신기", "컴퓨터", "서버", "프로세서", 및 "메모리" 모두는 전자 또는 다른 기술적인 디바이스들을 지칭한다. 이러한 용어들은 사람들 또는 사람들의 그룹들을 배제한다. 본 명세서의 목적들을 위해, 용어들 "디스플레이" 또는 "디스플레이하는"은 전자 디바이스 상에서 디스플레이하는 것을 의미한다.
본 명세서에서 사용되는 바와 같이, 항목들 중 임의의 것을 구분하기 위해 용어 "및" 또는 "또는"을 갖는 일련의 항목들 뒤에 오는 어구 "중 적어도 하나"는 리스트의 각각의 멤버(즉, 각각의 항목)보다는 리스트를 전체적으로 수식한다. 어구 "중 적어도 하나"는 열거된 각각의 아이템 중 적어도 하나의 선택을 요구하지 않고; 오히려, 이 어구는 항목들 중 임의의 것 중 적어도 하나, 및/또는 항목들의 임의의 조합 중 적어도 하나, 및/또는 항목들 각각 중 적어도 하나를 포함하는 의미를 허용한다. 예시의 방식으로, 어구 "A, B 및 C 중 적어도 하나" 또는 어구 "A, B 또는 C 중 적어도 하나" 각각은 오직 A, 오직 B 또는 오직 C; A, B, 및 C의 임의의 조합; 및/또는 A, B, 및 C 각각 중 적어도 하나를 지칭한다.
서술 문구들 "~ 하도록 구성되는", "~ 하도록 동작가능한", 및 "~ 하도록 프로그래밍된"은 대상의 임의의 특정한 유형의 또는 비유형의 변형을 암시하지 않고, 오히려 상호교환가능하게 사용되도록 의도된다. 하나 이상의 구현예들에서, 동작 또는 컴포넌트는 모니터링 및 제어하도록 구성된 프로세서는 또한 동작을 모니터링 및 제어하도록 프로그래밍되는 프로세서, 또는 동작을 모니터링 및 제어하도록 동작가능한 프로세서를 의미할 수 있다. 마찬가지로, 코드를 실행하도록 구성된 프로세서는 코드를 실행하도록 프로그래밍되거나 코드를 실행하도록 동작가능한 프로세서로서 해석될 수 있다.
일 양태, 양태, 다른 양태, 일부 양태들, 하나 이상의 양태들, 일 구현예, 구현예, 다른 구현예, 일부 구현예들, 하나 이상의 구현예들, 일 실시예, 실시예, 다른 실시예, 일부 구현예들, 하나 이상의 구현예들, 일 구성, 구성, 다른 구성, 일부 구성들, 하나 이상의 구성들, 본 기술, 개시내용, 본 개시내용, 이들의 다른 변형들 등과 같은 어구들은 편의를 위한 것이며, 이러한 어구(들)와 관련된 개시내용이 본 기술에 필수적인 것이라거나 그러한 개시내용이 본 기술의 모든 구성들에 적용되는 것을 의미하지는 않는다. 그러한 어구(들)에 관련된 개시는 모든 구성들 또는 하나 이상의 구성들에 적용될 수 있다. 그러한 어구(들)에 관련된 개시는 하나 이상의 예들을 제공할 수 있다. 일 양태 또는 일부 양태들과 같은 어구는 하나 이상의 양태들을 지칭할 수 있고 그 반대도 마찬가지이며, 이는 다른 전술한 어구들에 유사하게 적용된다.
본 명세서에서 단어 "예시적인"은 "일 예, 예시, 또는 예증의 역할을 하는 것"을 의미하기 위해 사용된다. 본 명세서에서 "예시적인" 또는 "일 예"로서 설명된 임의의 실시예는 반드시 다른 구현예들에 비해 바람직하거나 유리한 것으로 해석되어야 하는 것은 아니다. 더욱이, 용어 "포함한다", "갖는다" 등이 상세한 설명 또는 청구항에 사용되는 범위까지, 그러한 용어는, 청구항에서 "포함하다"가 전이 어구로서 이용되는 경우 해석되는 바와 같이, 용어 "포함하다"와 유사한 방식으로 포괄적으로 의도된다.
본 기술 분야의 통상의 기술자에게 알려져 있거나 추후에 알려지게 될 본 개시내용 전반에 걸쳐 설명된 다양한 양태들의 요소들에 대한 모든 구조적 및 기능적 등가물들은 참조에 의해 본 명세서에 명시적으로 포함되며 청구항들에 의해 포괄되는 것으로 의도된다. 더욱이, 본 명세서에 개시된 어떠한 것도 그러한 개시가 청구항들에 명시적으로 언급되었는지 여부에 관계없이 일반 대중에 공개된 것으로 의도되지 않는다. 어떠한 청구항 구성요소도, 그 구성요소가 "수단"이라는 문구를 사용하여 명시적으로 인용되지 않는 한, 또는 방법 청구항의 경우 구성요소가 "단계"라는 문구를 사용하여 인용되지 않는 한, 35 U.S.C.§112(f)의 규정 하에서 해석되어서는 안된다.
이전의 설명은 당업자가 본 명세서에 기술된 다양한 양태들을 실시할 수 있게 하기 위해 제공된다. 이러한 양태들에 대한 다양한 변형들은 당업자들에게 용이하게 명백할 것이며, 본 명세서에 정의된 일반적인 원리들은 다른 양태들에 적용될 수 있다. 따라서, 청구항은 본 명세서에 도시된 양태들로 제한되는 것으로 의도되는 것이 아니라, 언어 청구항에 부합하는 전체 범주로 허용되어야 하며, 여기서 단수의 구성요소에 대한 언급은 구체적으로 그와 같이 언급되지 않는 한 "오직 하나만"을 의미하도록 의도되는 것이 아니고, 오히려 "하나 이상"을 의미하는 것으로 의도된다. 달리 구체적으로 언급되지 않는 한, "일부"라는 용어는 하나 이상을 지칭한다. 남성 대명사(예컨대, 그의)는 여성 및 중성(예를 들어, 그녀의 및 그것의)을 포함하고, 그 반대의 경우도 마찬가지이다. 표제들 및 부제목들은, 존재한다면, 오직 편의를 위해서만 사용되며 본 개시내용을 제한하지 않는다.

Claims (41)

  1. 방법으로서,
    애플리케이션을 갖는 디바이스에서, 객체 유형을 갖는 객체와 연관된 정보를 포함하는 메시지를 수신하는 단계 - 상기 애플리케이션은 상기 객체를 포함하는 메시지 콘텐츠를 사용자 인터페이스에 제공하기 위해 상기 메시지를 프로세싱하도록 구성됨 -;
    상기 애플리케이션과 별개인 샌드박스(sandbox)에서, 상기 메시지에 대해, 상기 애플리케이션에 대한 애플리케이션 특정 동작들을 수행하는 단계 - 상기 애플리케이션 특정 동작들은,
    상기 객체 유형을 결정하는 동작, 및
    상기 결정된 객체 유형에 기초하여, 상기 메시지 내의 상기 객체와 연관된 상기 정보로부터 상기 객체를 생성하려고 시도하는 동작을 포함함 -; 및
    상기 샌드박스에서 상기 객체를 생성하려는 상기 시도가 완료됨에 따라, 상기 샌드박스의 외부 그리고 상기 애플리케이션의 외부에서 상기 객체 유형에 기초하여 상기 객체의 스키마 검증(schema validation)을 수행하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 스키마 검증을 수행하는 단계는 상기 샌드박스 및 상기 애플리케이션과 별개인 추가 샌드박스에서 상기 스키마 검증을 수행하는 단계를 포함하는, 방법.
  3. 제1항에 있어서, 상기 샌드박스에서 생성된 상기 객체의 성공적인 스키마 검증에 따라, 대응하는 검증된 객체를 상기 애플리케이션에 제공하는 단계를 더 포함하며, 상기 성공적인 스키마 검증은 상기 객체가 상기 객체 유형에 대한 스키마에 부합함을 나타내는, 방법.
  4. 제1항에 있어서, 상기 샌드박스에서 상기 객체를 생성하기 위한 불완전한 시도에 따라,
    상기 객체와 연관된 데이터가 상기 스키마 검증에 제공되거나 또는 상기 애플리케이션에 제공되는 것을 방지하는 단계를 더 포함하는, 방법.
  5. 제4항에 있어서,
    상기 샌드박스 내에서, 상기 메시지로부터 다른 객체를 생성하는 단계;
    상기 다른 객체에 대한 다른 객체 유형에 기초하여, 상기 샌드박스의 외부 및 상기 애플리케이션의 외부에서 상기 다른 객체에 대한 다른 스키마 검증을 수행하는 단계; 및
    상기 다른 객체의 성공적인 스키마 검증에 따라 상기 다른 객체에 대응하는 검증된 객체를 상기 애플리케이션에 제공하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서, 상기 샌드박스에서의 상기 애플리케이션 특정 동작들의 전체 장애에 따라,
    상기 애플리케이션으로의 상기 메시지의 전달을 방지하는 단계; 및
    원격 디바이스로 장애 통지를 전송하는 단계를 더 포함하는, 방법.
  7. 제1항에 있어서,
    상기 객체의 상기 스키마 검증에 기초하여, 상기 객체가 상기 객체 유형에 대한 예상된 스키마에 부합하지 않음을 결정하는 단계; 및
    상기 객체가 상기 객체 유형에 대한 스키마에 부합하지 않는다는 상기 결정에 응답하여 상기 객체가 상기 애플리케이션에 제공되는 것을 방지하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서, 상기 샌드박스는 컴퓨트 전용(compute-only) 샌드박스를 포함하는 방법.
  9. 제1항에 있어서, 상기 메시지는 암호화된 메시지이고, 상기 방법은,
    상기 샌드박스 및 상기 애플리케이션과 별개인 추가 샌드박스에서 상기 메시지를 복호화하여, 상기 객체와 연관된 상기 정보를 포함하는 비암호화된 메시지 데이터를 획득하는 단계를 더 포함하는, 방법.
  10. 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 명령어들을 저장하는 비일시적 기계 판독가능 매체로서, 상기 동작들은,
    애플리케이션을 갖는 디바이스에서, 객체 유형을 갖는 객체와 연관된 정보를 포함하는 메시지를 수신하는 동작 - 상기 애플리케이션은 상기 객체를 포함하는 메시지 콘텐츠를 사용자 인터페이스에 제공하기 위해 상기 메시지를 프로세싱하도록 구성됨 -;
    상기 애플리케이션과 별개인 샌드박스에서, 상기 메시지에 대해, 상기 애플리케이션에 대한 애플리케이션 특정 동작들을 수행하는 동작 - 상기 애플리케이션 특정 동작들은,
    상기 객체 유형을 결정하는 동작, 및
    상기 결정된 객체 유형에 기초하여, 상기 메시지 내의 상기 객체와 연관된 상기 정보로부터 상기 객체를 생성하려고 시도하는 동작을 포함함 -; 및
    상기 샌드박스에서 상기 객체를 생성하려는 상기 시도가 완료됨에 따라, 상기 샌드박스의 외부 그리고 상기 애플리케이션의 외부에서 상기 객체 유형에 기초하여 상기 객체의 스키마 검증을 수행하는 동작을 포함하는, 비일시적 기계 판독가능 매체.
  11. 제10항에 있어서, 상기 스키마 검증을 수행하는 동작은 상기 샌드박스 및 상기 애플리케이션과 별개인 추가 샌드박스에서 상기 스키마 검증을 수행하는 동작을 포함하는, 비일시적 기계 판독가능 매체.
  12. 제10항에 있어서, 상기 동작들은 상기 샌드박스에서 생성된 상기 객체의 성공적인 스키마 검증에 따라, 대응하는 검증된 객체를 상기 애플리케이션에 제공하는 동작을 더 포함하며, 상기 성공적인 스키마 검증은 상기 객체가 상기 객체 유형에 대한 스키마에 부합함을 나타내는, 비일시적 기계 판독가능 매체.
  13. 제10항에 있어서, 상기 동작들은 상기 샌드박스에서 상기 객체를 생성하기 위한 불완전한 시도에 따라,
    상기 객체와 연관된 데이터가 상기 스키마 검증에 제공되거나 또는 상기 애플리케이션에 제공되는 것을 방지하는 동작을 더 포함하는, 비일시적 기계 판독가능 매체.
  14. 제13항에 있어서, 상기 동작들은,
    상기 샌드박스 내에서, 상기 메시지로부터 다른 객체를 생성하는 동작;
    상기 다른 객체에 대한 다른 객체 유형에 기초하여, 상기 샌드박스의 외부 및 상기 애플리케이션의 외부에서 상기 다른 객체에 대한 다른 스키마 검증을 수행하는 동작; 및
    상기 다른 객체의 성공적인 스키마 검증에 따라 상기 다른 객체에 대응하는 검증된 객체를 상기 애플리케이션에 제공하는 동작을 더 포함하는, 비일시적 기계 판독가능 매체.
  15. 제10항에 있어서, 상기 동작들은,
    상기 객체의 상기 스키마 검증에 기초하여, 상기 객체가 상기 객체 유형에 대한 예상된 스키마에 부합하지 않음을 결정하는 동작; 및
    상기 객체가 상기 객체 유형에 대한 스키마에 부합하지 않는다는 상기 결정에 응답하여 상기 객체가 상기 애플리케이션에 제공되는 것을 방지하는 동작을 더 포함하는, 비일시적 기계 판독가능 매체.
  16. 전자 디바이스로서,
    애플리케이션을 저장하는 메모리; 및
    하나 이상의 프로세서들을 포함하며, 상기 하나 이상의 프로세서들은,
    객체 유형을 갖는 객체와 연관된 정보를 포함하는 메시지를 수신하고 - 상기 애플리케이션은 상기 객체를 포함하는 메시지 콘텐츠를 사용자 인터페이스에 제공하기 위해 상기 메시지를 프로세싱하도록 구성됨 -;
    상기 애플리케이션과 별개인 샌드박스에서, 상기 메시지에 대해, 상기 애플리케이션에 대한 애플리케이션 특정 동작들을 수행하고 - 상기 애플리케이션 특정 동작들은,
    상기 객체 유형을 결정하는 동작, 및
    상기 결정된 객체 유형에 기초하여, 상기 메시지 내의 상기 객체와 연관된 상기 정보로부터 상기 객체를 생성하려고 시도하는 동작을 포함함 -;
    상기 샌드박스에서 상기 객체를 생성하려는 상기 시도가 완료됨에 따라, 상기 샌드박스의 외부 그리고 상기 애플리케이션의 외부에서 상기 객체 유형에 기초하여 상기 객체의 스키마 검증을 수행하도록 구성되는, 전자 디바이스.
  17. 제16항에 있어서, 상기 하나 이상의 프로세서들은, 상기 샌드박스에서의 상기 애플리케이션 특정 동작들의 전체 장애에 따라,
    상기 애플리케이션으로의 상기 메시지의 전달을 방지하고;
    원격 디바이스로 장애 통지를 전송하도록 더 구성되는, 전자 디바이스.
  18. 제16항에 있어서, 상기 하나 이상의 프로세서들은,
    상기 객체의 상기 스키마 검증에 기초하여, 상기 객체가 상기 객체 유형에 대한 예상된 스키마에 부합하지 않음을 결정하고;
    상기 객체가 상기 객체 유형에 대한 스키마에 부합하지 않는다는 상기 결정에 응답하여 상기 객체가 상기 애플리케이션에 제공되는 것을 방지하도록 더 구성되는, 전자 디바이스.
  19. 제16항에 있어서, 상기 샌드박스는 컴퓨트 전용 샌드박스를 포함하는, 전자 디바이스.
  20. 제16항에 있어서, 상기 메시지는 암호화된 메시지이고, 상기 하나 이상의 프로세서들은,
    상기 샌드박스 및 상기 애플리케이션과 별개인 추가 샌드박스에서 상기 메시지를 복호화하여, 상기 객체와 연관된 상기 정보를 포함하는 비암호화된 메시지 데이터를 획득하도록 더 구성되는, 전자 디바이스.
  21. 방법으로서,
    제1 프로세스, 제2 프로세스, 및 메모리 관리자를 포함하는 컴퓨팅 디바이스에서,
    상기 제1 프로세스에 의해, 상기 제2 프로세스에 의해 프로세싱될 데이터를 식별하는 단계 - 상기 제1 프로세스 및 상기 제2 프로세스는 각각 상기 메모리 관리자와 별개임 -;
    메모리의 할당에 대한 요청을 상기 제1 프로세스로부터 상기 제2 프로세스로 전송하는 단계;
    메모리 영역에 대응하는 식별자를 상기 제1 프로세스에 의해 상기 제2 프로세스로부터 수신하는 단계;
    상기 제1 프로세스에 의해, 상기 데이터의 제1 프로세싱을 수행하는 단계; 및
    상기 식별자를 사용하여 상기 제1 프로세싱의 출력을 상기 메모리 영역에 기록하는 단계를 포함하는, 방법.
  22. 제21항에 있어서, 상기 제1 프로세스는 컴퓨트 전용 샌드박스된 프로세스이고, 상기 제2 프로세스는 상기 샌드박스 컴퓨트 전용 프로세스에 의해 액세스될 수 없는 시스템 자원에 대한 액세스를 갖는, 방법.
  23. 제21항에 있어서, 상기 식별자는 상기 메모리 관리자에 의해 생성되는 디스크립터(descriptor)인, 방법.
  24. 제23항에 있어서, 상기 디스크립터는 상기 제2 프로세스로부터의 요청에 기초하여 상기 메모리 관리자에 의해 생성되고, 상기 요청은 상기 제1 프로세스에 대한 상기 디스크립터에 대한 액세스를 제공하기 위한 요청을 포함하는, 방법.
  25. 제23항에 있어서, 상기 메모리 관리자는 상기 메모리 영역을 상기 제2 프로세스에 어카운팅(account)하는, 방법.
  26. 제21항에 있어서, 상기 제1 프로세스에 의한 상기 데이터의 상기 제1 프로세싱은, 반복적으로 상기 데이터의 일부분을 판독하고, 상기 데이터의 상기 일부분을 프로세싱하고, 상기 식별자를 사용하여 상기 데이터의 상기 프로세싱된 부분을 상기 메모리 영역에 기록하는 것을 포함하는, 방법.
  27. 제26항에 있어서, 상기 제2 프로세스에 의한 상기 할당된 메모리 영역에서의 상기 제1 프로세싱의 상기 출력의 상기 제2 프로세싱은 상기 데이터의 각각의 프로세싱된 부분이 상기 제1 프로세스로부터 상기 메모리 영역에 수신될 때 이를 프로세싱하는 것을 포함하는, 방법.
  28. 제21항에 있어서, 상기 제1 프로세스를 이용한 상기 데이터의 상기 제1 프로세싱은, 상기 데이터를 디코딩 또는 트랜스코딩하는 것을 포함하는, 방법.
  29. 제21항에 있어서, 상기 컴퓨팅 디바이스에서 상기 제1 프로세스에 의해 상기 제2 프로세스에 의해 프로세싱될 데이터를 식별하는 단계 전에, 상기 컴퓨팅 디바이스에서, 메시징 애플리케이션을 통해 수신된 메시지에서 상기 데이터를 수신하는 단계를 더 포함하는, 방법.
  30. 전자 디바이스로서,
    제1 프로세스;
    제2 프로세스;
    메모리 관리자 - 상기 제1 프로세스 및 상기 제2 프로세스는 각각 상기 메모리 관리자와 별개임 -; 및
    하나 이상의 프로세서들을 포함하며, 상기 하나 이상의 프로세서들은,
    상기 제1 프로세스에 의해, 상기 제2 프로세스에 의해 프로세싱될 데이터를 식별하고;
    메모리의 할당에 대한 요청을 상기 제1 프로세스로부터 상기 제2 프로세스로 전송하고;
    메모리 영역에 대응하는 식별자를 상기 제1 프로세스에 의해 상기 제2 프로세스로부터 수신하고;
    상기 제1 프로세스에 의해, 상기 데이터의 제1 프로세싱을 수행하고;
    상기 식별자를 사용하여 상기 제1 프로세싱의 출력을 상기 메모리 영역에 기록하도록 구성되는, 전자 디바이스.
  31. 제30항에 있어서, 상기 제1 프로세스는 컴퓨트 전용 샌드박스된 프로세스이고, 상기 전자 디바이스는, 상기 샌드박스 컴퓨트 전용 프로세스에 의해 액세스될 수 없고 상기 제2 프로세스에 액세스가능한 시스템 자원을 더 포함하는, 전자 디바이스.
  32. 제30항에 있어서, 상기 식별자는 상기 메모리 관리자에 의해 생성되는 디스크립터인, 전자 디바이스.
  33. 제32항에 있어서, 상기 디스크립터는 상기 제2 프로세스로부터의 요청에 기초하여 상기 메모리 관리자에 의해 생성되고, 상기 요청은 상기 제1 프로세스에 대한 상기 디스크립터에 대한 액세스를 제공하기 위한 요청을 포함하는, 전자 디바이스.
  34. 제33항에 있어서, 상기 메모리 관리자는 상기 메모리 영역을 상기 제2 프로세스에 어카운팅하는, 전자 디바이스.
  35. 제30항에 있어서, 상기 제1 프로세스에 의한 상기 데이터의 상기 제1 프로세싱은, 반복적으로 상기 데이터의 일부분을 판독하고, 상기 데이터의 상기 일부분을 프로세싱하고, 상기 식별자를 사용하여 상기 데이터의 상기 프로세싱된 부분을 상기 메모리 영역에 기록하는 것을 포함하는, 전자 디바이스.
  36. 제35항에 있어서, 상기 제2 프로세스에 의한 상기 할당된 메모리 영역에서의 상기 제1 프로세싱의 상기 출력의 상기 제2 프로세싱은 상기 데이터의 각각의 프로세싱된 부분이 상기 제1 프로세스로부터 상기 메모리 영역에 수신될 때 이를 프로세싱하는 것을 포함하는, 전자 디바이스.
  37. 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하는 명령어들을 저장하는 비일시적 기계 판독가능 매체로서, 상기 동작들은,
    제1 프로세스, 제2 프로세스, 및 메모리 관리자를 포함하는 컴퓨팅 디바이스에서,
    상기 제1 프로세스에 의해, 상기 제2 프로세스에 의해 프로세싱될 데이터를 식별하는 동작 - 상기 제1 프로세스 및 상기 제2 프로세스는 각각 상기 메모리 관리자와 별개임 -;
    메모리의 할당에 대한 요청을 상기 제1 프로세스로부터 상기 제2 프로세스로 전송하는 동작;
    메모리 영역에 대응하는 식별자를 상기 제1 프로세스에 의해 상기 제2 프로세스로부터 수신하는 동작;
    상기 제1 프로세스에 의해, 상기 데이터의 제1 프로세싱을 수행하는 동작; 및
    상기 식별자를 사용하여 상기 제1 프로세싱의 출력을 상기 메모리 영역에 기록하는 동작을 포함하는, 비일시적 기계 판독가능 매체.
  38. 제37항에 있어서, 상기 제1 프로세스를 이용한 상기 데이터의 상기 제1 프로세싱은, 상기 데이터를 디코딩 또는 트랜스코딩하는 것을 포함하는, 비일시적 기계 판독가능 매체.
  39. 제37항에 있어서, 상기 동작들은, 상기 컴퓨팅 디바이스에서 상기 제1 프로세스에 의해 상기 제2 프로세스에 의해 프로세싱될 데이터를 식별하는 동작 전에, 상기 컴퓨팅 디바이스에서, 메시징 애플리케이션을 통해 수신된 메시지에서 상기 데이터를 수신하는 동작을 더 포함하는, 비일시적 기계 판독가능 매체.
  40. 제37항에 있어서, 상기 제1 프로세스는 컴퓨트 전용 샌드박스된 프로세스이고, 상기 컴퓨팅 디바이스는, 상기 샌드박스 컴퓨트 전용 프로세스에 의해 액세스될 수 없고 상기 제2 프로세스에 액세스가능한 시스템 자원을 더 포함하는, 비일시적 기계 판독가능 매체.
  41. 제37항에 있어서,
    상기 제1 프로세스에 의해 상기 제2 프로세스에 의해 프로세싱될 상기 데이터를 식별하는 동작은, 상기 데이터에 대응하는 크기 정보에 대한 초기 요청을 상기 제2 프로세스로부터 상기 제1 프로세스에 수신하는 동작을 포함하고,
    상기 메모리의 할당에 대한 상기 요청을 상기 제1 프로세스로부터 상기 제2 프로세스로 전송하는 동작은, 상기 초기 요청에 응답하여 상기 데이터에 대응하는 상기 크기 정보를 상기 제1 프로세스로부터 상기 제2 프로세스로 전송하는 동작을 포함하는, 비일시적 기계 판독가능 매체.
KR1020227044773A 2020-06-21 2021-06-21 애플리케이션 특정 네트워크 데이터 필터링 KR20230015956A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063042002P 2020-06-21 2020-06-21
US63/042,002 2020-06-21
PCT/US2021/038259 WO2021262600A1 (en) 2020-06-21 2021-06-21 Application specific network data filtering

Publications (1)

Publication Number Publication Date
KR20230015956A true KR20230015956A (ko) 2023-01-31

Family

ID=76972005

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227044773A KR20230015956A (ko) 2020-06-21 2021-06-21 애플리케이션 특정 네트워크 데이터 필터링

Country Status (5)

Country Link
US (1) US20210400019A1 (ko)
EP (1) EP4143710A1 (ko)
KR (1) KR20230015956A (ko)
CN (1) CN115943378A (ko)
WO (1) WO2021262600A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11863573B2 (en) 2020-03-06 2024-01-02 ThreatConnect, Inc. Custom triggers for a network security event for cybersecurity threat intelligence
US20220414206A1 (en) * 2021-06-25 2022-12-29 ThreatConnect, Inc. Browser extension for cybersecurity threat intelligence and response
CN116599772B (zh) * 2023-07-14 2024-04-09 腾讯科技(深圳)有限公司 一种数据处理方法及相关设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601579B2 (en) * 2011-06-03 2013-12-03 Apple Inc. System and method for preserving references in sandboxes
US20150104003A1 (en) * 2013-10-10 2015-04-16 Elwha Llc Methods, systems, and devices for handling image data from captured images
US9811658B2 (en) * 2014-07-28 2017-11-07 Iboss, Inc. Selectively capturing video in a virtual environment based on application behavior
US9916443B1 (en) * 2015-07-21 2018-03-13 Palo Alto Networks, Inc. Detecting an attempt to exploit a memory allocation vulnerability
US10581874B1 (en) * 2015-12-31 2020-03-03 Fireeye, Inc. Malware detection system with contextual analysis
JP6738013B2 (ja) * 2016-06-23 2020-08-12 富士通株式会社 攻撃内容分析プログラム、攻撃内容分析方法及び攻撃内容分析装置

Also Published As

Publication number Publication date
US20210400019A1 (en) 2021-12-23
EP4143710A1 (en) 2023-03-08
WO2021262600A1 (en) 2021-12-30
CN115943378A (zh) 2023-04-07

Similar Documents

Publication Publication Date Title
US20210400019A1 (en) Application specific network data filtering
US9948676B2 (en) System and method for securing documents prior to transmission
US9247316B2 (en) Protected media decoding using a secure operating system
US9632851B1 (en) Secure inter-process communications for mobile devices
US8862892B2 (en) System and method for detecting a security compromise on a device
US20160162688A1 (en) Secure app update server and secure application programming interface ("api") server
US20220058245A1 (en) Dynamic data watermarking for leakage source detection
US11190356B2 (en) Secure policy ingestion into trusted execution environments
US10999262B1 (en) High assurance tactical cross-domain hub
CN108734026B (zh) 数据防泄漏方法、系统、终端及介质
US9507922B1 (en) System, method, and computer program for conditionally implementing protected content
US20220214898A1 (en) Systems and methods for traffic optimization via system on chip of intermediary device
US10839135B1 (en) Detection of access to text-based transmissions
KR101057743B1 (ko) 외부 사용자 문서배포 보안 시스템
US9813390B2 (en) Systems and methods for controlling email access
CN109857488B (zh) 应用程序的调用控制方法、装置、终端及可读存储介质
US11297099B2 (en) Redisplay computing with integrated data filtering
US10516764B1 (en) Efficient modification of compressed data
Mohamed Steganography for better data integrity and privacy
Chen et al. Designing and implementing embedded security terminal under the TrustZone Technology of Trusted Computing
WO2019130541A1 (ja) 情報処理装置、情報処理方法、プログラム及び記録媒体
CN113971292A (zh) 授权方法及相关装置
TR2023006911T2 (tr) Şi̇freli̇ dosya kontrolü
CN117896153A (zh) 数据处理方法、装置、设备、介质和程序产品
CN116155616A (zh) 接入认证方法、装置、设备、存储介质和程序产品

Legal Events

Date Code Title Description
A201 Request for examination