KR20160145574A - 모바일 컴퓨팅에서의 보안을 강제하는 시스템 및 방법 - Google Patents

모바일 컴퓨팅에서의 보안을 강제하는 시스템 및 방법 Download PDF

Info

Publication number
KR20160145574A
KR20160145574A KR1020167028417A KR20167028417A KR20160145574A KR 20160145574 A KR20160145574 A KR 20160145574A KR 1020167028417 A KR1020167028417 A KR 1020167028417A KR 20167028417 A KR20167028417 A KR 20167028417A KR 20160145574 A KR20160145574 A KR 20160145574A
Authority
KR
South Korea
Prior art keywords
inter
process communication
policy
application
data
Prior art date
Application number
KR1020167028417A
Other languages
English (en)
Inventor
크리스토퍼 줄스 화이트
브라이언 도허티
데이비드 알렉산더 햄릭
그레이슨 게이츠 샤르페
로버트 어스틴 한린
크지슈토프 카밀 치엔키에비치
크리스토퍼 마이클 톰슨
토마스 찰스 3세 클랜시
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
Priority claimed from US14/210,382 external-priority patent/US9773107B2/en
Application filed by 옵티오 랩스 인코포레이티드 filed Critical 옵티오 랩스 인코포레이티드
Publication of KR20160145574A publication Critical patent/KR20160145574A/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/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
    • 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/606Protecting data by securing the transmission between two devices or processes
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Landscapes

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

Abstract

본 출원에 설명된 방법들 및 시스템들은 오브젝트 방화벽들, IPC 메커니즘들, 및/또는 정책 엔진을 사용하여 프로세서의 신뢰 구역에서 하나 이상의 소프트웨어 기능들을 구성함으로써 디바이스 상에서 보안을 강화하는 것에 관한 것이다. 프로세스-간 통신 메커니즘 및 프로세스-간 통신 버스는 신뢰 구역 내의 프로세스-간 통신 애플리케이션들과 신뢰 구역 외부에 있는 프로세스-간 통신 애플리케이션들 사이에서 안전한 프로세스-간 통신을 가능하게 한다. 프로세스-간 통신을 적응시키고, 필터링하고, 차단하고, 리다이렉트시키거나, 또는 그 외 수정하는 것은 프로세스-간 통신 메커니즘에 의해 가능하게 된다. 수정들은 신뢰 구역 내의 정책 엔진에 의해 제어될 수 있다.

Description

모바일 컴퓨팅에서 보안을 강제하기 위한 시스템들 및 방법들 {SYSTEMS AND METHODS FOR ENFORCING SECURITY IN MOBILE COMPUTING}
(관련 출원들에 대한 상호-참조)
본 출원은 2013년 1월 7일에 출원된, “모바일 컴퓨팅에서 보안을 강제하기 위한 시스템들 및 방법들(Systems and Methods for Enforcing Security in Mobile Computing)”제목의, 미국 정규 출원 일련 번호 제13/735,885호의 일부 계속 출원이며 그것에 대한 우선권 및 그것의 이익을 주장하는, 2014년 3월 13일에 출원된, “모바일 컴퓨팅에서 보안을 강제하기 위한 시스템들 및 방법들(Systems and Methods for Enforcing Security in Mobile Computing)”제목의, 미국 정규 출원 일련 번호 제14/210,382호에 대한 우선권을 주장한다. 본 출원에 설명된 방법들 및 시스템들의 양상들의 일부는 2013년 3월 13일에 출원된, “디바이스 사용 콘텍스트에 기초한 모바일 디바이스에 데이터를 동기화시키기 위한 시스템들 및 방법들(Systems And Methods To Synchronize Data To A Mobile Device Based On A Device Usage Context)”제목의, 미국 가 출원 번호 제61/780,408호; 2013년 3월 14일에 출원된, “단거리 근접 신호들을 안전하게 하기 위한 시스템들 및 방법들(Systems And Methods To Secure Short-Range Proximity Signals)”제목의, 제61/781,252호; 2013년 3월 14일에 출원된, “컴퓨팅 디바이스들을 안전하게 하며 위치 탐색을 위한 시스템들 및 방법들(Systems And Methods For Securing And Locating Computing Devices)”제목의 제61/785,109호; 2013년 3월 13일에 출원된, “인증 토큰 상에 저장된 크리덴셜들을 사용한 디바이스의 부트 프로세스를 안전하게 하기 위한 시스템들 및 방법들(Systems And Methods For Securing The Boot Process Of A Device Using Credentials Stored On An Authentication Token)”제목의, 제61/779,931호; 및 2013년 3월 15일에 출원된, “모바일 컴퓨팅에서 보안을 강제하기 위한 시스템들 및 방법들(Systems And Methods For Enforcing Security In Mobile Computing)”제목의, 제61/790,728호에서 설명되었으며, 그것들의 각각은 그 전체가 본 출원에 참조로서 통합된다.
기술분야
본 발명은 모바일 디바이스 보안에 관한 것이다.
현재 디바이스들, 특히 모바일 디바이스들의 소프트웨어 및 데이터 관련 보안은 가상 머신들, 프로세스 간 통신, 패키지 관리기들, 모바일 디바이스 관리 시스템들, 터치 스크린 소프트웨어 구성요소들, 공유 메모리, 관계 데이터베이스, 디바이스 구성 서명 검사, 전문화된 디버깅 인터페이스(예로서, 안드로이드 디버그 브리지 등), 신뢰된 데몬 프로세스들 등을 포함한 다양한 피처들에 의존한다. 예에서, 안드로이드 모바일 디바이스들은 애플리케이션이 사용자의 연락처 리스트와 같은, 특정한 시스템 리소스로의 액세스를 얻어야 하는지를 결정하기 위해 프로세스-간 통신에 대한 검사들을 사용한다. 특정 네이티브 라이브러리(native library)가 로딩되어야 하는지 여부를 결정하는 것과 같은, 가상 머신 보안 검사들이 또한 이용된다.
모바일 디바이스가 갖는 핵심 도전 과제는 보안을 제공하기 위해 의존되는 실제 소프트웨어(예로서, 가상 머신, 디바이스 I/O, 프로세스-간 통신, 전문화된 디버깅 인터페이스들, 및 다른 구성요소들)의 무결성을 보장하는 것이 어렵다는 것이다. 예컨대 데이터 출처(data provenance)를 강제하고, 멀웨어에 대해 보호하며 프로세스-간 통신 메커니즘들을 통한 보안 정책들을 강제함으로써, 보안을 제공하는 시스템들에 대한 요구가 존재한다.
실시예들에서, 보안 프로세스-간 통신의 방법들 및 시스템들은 디바이스의 신뢰 코드 구역 내에서 프로세스-간 통신 메커니즘(inter-process communications mechanism)을 동작시키는 것을 포함한다. 프로세스-간 통신 버스는 신뢰 코드 구역의 바깥쪽으로부터 디바이스의 신뢰 코드 구역으로 확장되며, 프로세스-간 통신은 디바이스 상에서의 서비스들 및 신뢰 코드 구역 내에 있지 않은 사용자-공간 애플리케이션들 사이에서의 버스 상에서 수행된다. 프로세스-간 통신은 프로세스-간 통신 메커니즘에 의해 적응된다. 몇몇 실시예들에서, 디바이스 상에서의 서비스들은 신뢰 코드 구역 내에 위치된다.
실시예들에서, 프로세스-간 통신은 정책 엔진에 의해 결정된 정책에 따라 프로세스-간 통신 메커니즘에 의해 필터링되고, 차단되거나, 또는 그 외 수정된다. 정책 엔진은 또한 신뢰 코드 구역 내에 위치될 수 있다. 몇몇 실시예들에서, 서비스는 터치스크린을 위한 사용자 입력 서비스와 같은, 사용자 입력 서비스이다. 프로세스-간 통신은 금융 정보를 포함한, 다양한 유형들의 데이터를 포함할 수 있다. 실시예들에서, 신뢰 코드 구역 내에 있지 않은 사용자-공간 애플리케이션과의 프로세스-간 통신을 위한 요청들은 신뢰 코드 구역 내에 위치된 사용자-공간 애플리케이션의 신뢰된 동등한 버전으로 리다이렉트(redirect)된다. 프로세스-간 통신 메커니즘은 이러한 리다이렉트를 수행할 수 있다.
실시예들에서, 디바이스에서 하나 이상의 오브젝트 방화벽들에 의해 제어되는 둘 이상의 오브젝트들 사이에 하나 이상의 프로세스-간 제어 경로들을 가진 리소스로의 액세스를 필터링하는 방법 및 시스템들은 정책에 기초하여 애플리케이션으로부터 리소스로의 액세스를 제어하기 위해 프로세서를 사용할 수 있다. 정책에 기초하여 애플리케이션으로부터 리소스로의 액세스를 제어하는 것은 정책을 제공하는 것 및 리소스로의 액세스를 제공하는 오브젝트로의 프로세스-간 제어 경로를 통한 액세스를 필터링하는 것을 포함할 수 있다.
실시예들에서, 방법들 및 시스템들은 현재 날짜 및 시간, 디바이스의 현재 위치, 디바이스의 현재 사용자의 아이덴티티(identity), 디바이스 상에서 현재 실행하는 각각의 애플리케이션의 아이덴티티, 및 현재 사용 중인 각각의 리소스의 아이덴티티 중 하나 이상에 기초하여 디바이스-기반 콘텍스트(context)를 생성하기 위해 컴퓨터 프로세서를 사용하는 단계를 추가로 포함할 수 있다.
실시예들에서, 정책에 기초하여 애플리케이션과 연관된 오브젝트로부터의 디바이스 리소스로의 액세스를 제어하는 것은 리소스로의 액세스를 제어하기 위해 콘텍스트-인식 정책 엔진을 제공하는 것을 포함할 수 있다. 실시예들에서, 콘텍스트-인식 정책은 하나 이상의 정책들을 전달하기 위해 정책 서버와 통신하는 것이 가능해질 수 있다.
실시예들에서, 오브젝트로의 프로세스-간 통신을 통제하는 정책은 콘텍스트-관련 정책일 수 있다.
실시예들에서, 리소스는 네트워크 연결, 셀룰러 연결, 키보드, 터치 인터페이스, 운영 시스템, 애플리케이션, 애플리케이션 프로그래밍 인터페이스의 부분, 소프트웨어 드라이버, 데이터베이스, 포트, 무선 통신 인터페이스, 및 메모리에서의 보안 영역 중 하나일 수 있다.
실시예들에서, 오브젝트 방화벽은 리소스 액세스 시도들을 기록할 수 있다.
실시예들에서, 오브젝트 방화벽은 중앙 집중형 오브젝트 레지스트리에 저장될 수 있다.
실시예들에서, 리소스로의 액세스를 제공하는 오브젝트들은 중앙 집중형 레지스트리에 저장된다.
실시예들에서, 정책들은 제 1 포맷으로 저장될 수 있는 그래픽 사용자 인터페이스를 사용하여 저작되고, 디바이스로의 송신을 위해 제 2 포맷으로 변환될 수 있으며, 하나 이상의 오브젝트 방화벽들을 구성하는 방법을 결정하기 위해 수신 디바이스에 의해 파싱될 수 있다.
실시예들에서, 컴퓨터 프로세서는 디바이스 보안 시스템과 연관된 단일 프로세스에서 오브젝트 방화벽들을 제어 및 구성하기 위해 사용될 수 있다.
실시예들에서, 모바일 네트워크에서 분배 정책들을 강제하는 방법들 및 시스템들은 디바이스를 통해 통신할 수 있는 적어도 두 개의 시스템들 사이에서의 통신을 통제하는 하나 이상의 규칙들을 강제(enforce)하기 위해 디바이스 상에 프로세스-간 통신 방화벽을 제공하도록 적응된 적어도 하나의 프로세서를 포함할 수 있으며, 상기 적어도 하나의 프로세서는, 프로세스-간 통신 방화벽과 연관된 정책 엔진을 통해, 디바이스를 통해 통신하는 시스템들 중 적어도 하나의 콘텍스트의 표시자를 생성하도록 적응되며, 상기 적어도 하나의 프로세서는 정책 및 상기 시스템들 중 적어도 하나의 콘텍스트에 기초하여 적어도 두 개의 시스템들 사이에서의 통신이 프로세스-간 통신 방화벽에 의해 허용되는지를 결정하도록 적응된다.
실시예들에서, 적어도 하나의 프로세서는 디바이스 상에서 복수의 프로세스-간 통신 방화벽들을 제공하도록 적응될 수 있다. 실시예들에서, 상기 방화벽들은 디바이스를 통해 통신할 수 있는 적어도 두 개의 시스템들 사이에서의 통신을 통제하는 하나 이상의 규칙들을 강제하기 위해 제공될 수 있다.
실시예들에서, 상기 적어도 하나의 프로세서는 정책 엔진을 생성하도록 적응될 수 있으며 상기 정책 엔진은 하나 이상의 정책들을 전달하기 위해 정책 서버와 통신하는 것이 가능하게 된다.
실시예들에서, 정책은 블랙 리스트, 화이트 리스트, 서명 정책, 명명 정책, 체크섬 분석 정책, 라이브러리 분석 정책, 및 애플리케이션, 프로세스, 사용자, 및 사용자들의 그룹 중 하나 이상에 대한 허가 중 하나 이상으로 구성될 수 있다.
실시예들에서, 프로세스-간 통신 방화벽은 오브젝트-지향 방화벽일 수 있다. 실시예들에서, 오브젝트-지향 방화벽은 디바이스 상에서 실행하는 애플리케이션과 연관될 수 있다.
실시예들에서, 적어도 두 개의 시스템들 사이에서의 통신이 프로세스-간 통신 방화벽에 의해 허용되는지를 결정하도록 적응된 적어도 하나의 프로세서는 통신의 콘텐트에 기초하여, 적어도 두 개의 시스템들 사이에서의 통신이 프로세스-간 통신 방화벽에 의해 허용되는지를 결정하도록 적응될 수 있다.
실시예들에서, 멀웨어로부터 모바일 디바이스를 안전하게 하는 방법들 및 시스템들은 제 1 애플리케이션에서 프로세스-간 제어 데이터 버스로 원격 프로시저 호출을 전달하기 위해 컴퓨터 프로세서를 사용하는 것, 상기 프로세스-간 제어 데이터 버스에 의해 정책 엔진으로부터, 원격 프로시저 호출에 대한 정책 확인을 요청하는 것, 상기 정책 엔진에 의해 원격 프로시저 호출의 콘텍스트 및 저장된 정책에 기초하여 원격 프로시저 호출을 승인할지를 결정하는 것, 상기 결정을 정책 엔진으로부터 프로세스-간 제어 데이터 버스로 다시 전달하는 것, 및 상기 결정에 응답하여 상기 프로세스-간 제어 데이터 버스에 의해 원격 프로시저 호출을 허용하는 것 및 차단하는 것 중 적어도 하나를 포함할 수 있다.
실시예들에서, 원격 프로시저 호출을 전달하는 것은 제 1 애플리케이션과 연관된 제 1 오브젝트로부터 프로세스-간 제어 데이터 버스로 제 2 애플리케이션과 연관된 제 2 오브젝트에 대한 원격 프로시저 호출을 전달하는 것을 포함할 수 있다.
실시예들에서, 정책 엔진은 하나 이상의 정책들을 전달하기 위해 정책 서버와 통신하는 것이 가능하게 될 수 있다.
실시예들에서, 멀웨어로부터 모바일 디바이스를 안전하게 하는 방법들 및 시스템들은 새로운 오브젝트들이 생성됨에 따라 새로운 오브젝트 방화벽들을 설치하기 위한 프로세스-간 제어기를 제공하는 것을 포함할 수 있다.
실시예들에서, 멀웨어로부터 모바일 디바이스를 안전하게 하는 방법들 및 시스템들은 상기 결정에 응답하여 상기 프로세스-간 제어 데이터 버스에 의해 상기 원격 프로시저 호출을 허용하는 것 및 차단하는 것 중 적어도 하나를 포함할 수 있으며, 상기 결정에 응답하여 상기 프로세스 간 제어 데이터 버스에 의해 원격 프로시저 호출을 허용하는 것 및 차단하는 것 중 적어도 하나는 수정 없이 상기 원격 프로시저 호출을 허용하는 것, 상기 원격 프로시저 호출의 수정된 콘텐트들을 갖고 원격 프로시저 호출을 허용하는 것, 상기 원격 프로시저 호출에 응답하여 리소스로부터 전송된 데이터의 수정된 리턴 값을 갖고 상기 원격 프로시저를 허용하는 것, 상기 원격 프로시저 호출을 차단하는 것, 상기 원격 프로시저 호출을 로깅하는 것, 상기 원격 프로시저 호출을 무시하는 것, 하나 이상의 방화벽 규칙들을 수정하는 것, 하나 이상의 방화벽 정책들을 부가하는 것, 및 하나 이상의 방화벽 정책들을 제거하는 것 중 적어도 하나를 추가로 포함할 수 있다.
실시예들에서, 멀웨어로부터 모바일 디바이스를 안전하게 하는 방법들 및 시스템들은 콘텍스트-인식 정책 엔진을 포함할 수 있다. 실시예들에서, 콘텍스트-인식 정책 엔진은 시스템-특정 콘텍스트를 생성하는 것이 추가로 가능해질 수 있으며, 상기 시스템-특정 콘텍스트는 현재 날짜, 현재 시간, 모바일 디바이스의 위치, 디바이스 사용자의 아이덴티티, 및 모바일 디바이스 상에서 현재 실행하는 애플리케이션들 중 하나 이상을 포함한다.
본 발명의 이들 및 다른 시스템들, 방법들, 오브젝트들, 특징들, 및 이점들은 바람직한 실시예에 대한 다음의 상세한 설명 및 도면들로부터 이 기술분야의 숙련자들에게 명백할 것이다. 본 출원에 언급된 모든 문서들은 본 출원에 전체적으로 참조로서 통합된다.
반드시 축척에 맞게 그려지는 것은 아닌, 도면들에서, 유사한 숫자들은 여러 개의 도면들에 걸쳐 실질적으로 유사한 구성요소들을 설명할 수 있다. 상이한 글자 접미사들을 가진 유사한 숫자들은 상당히 유사한 구성요소들의 상이한 인스턴스(instance)들을 나타낼 수 있다. 도면들은, 일반적으로, 제한으로서가 아닌 예로서 본 문서에서 논의된 특정한 실시예들의 상세한 설명을 예시한다.
도 1은 디바이스를 안전하게 하기 위한 방법들 및 시스템들을 도시한다.
도 2는 정책 엔진을 가진 시스템을 도시한다.
도 3은 애플리케이션들 사이에서 데이터 전송이 허용될 수 있는지를 결정하기 위한 방법을 도시한다.
도 4는 시스템 호출이 발생해야 하는지를 결정하기 위한 방법을 도시한다.
도 5는 복수의 오브젝트 방화벽들을 가진 시스템을 도시한다.
도 6은 가상 머신 및 정책 엔진을 포함한 모바일 컴퓨팅 시스템을 도시한다.
도 7은 네이티브 라이브러리(native library) 사용을 제어하기 위해 가상 머신과 통신하는 정책 엔진을 도시한다.
도 8은 다양한 모바일 디바이스 소프트웨어 피처(feature)들을 위한 신뢰 구역의 사용을 도시한다.
도 9는 모바일 디바이스 IPC 버스를 신뢰 구역으로 가상으로 확장하는 것을 도시한다.
도 10은 관점-지향 프로그래밍을 통한 모바일 보안을 위한 방법들 및 시스템들을 도시한다.
도 11은 디바이스와 연관된 동적 동기화를 위한 시스템을 도시한다.
도 12는 고객 위치 및 식별을 제공하기 위한 시스템을 도시한다.
본 발명의 상세한 실시예들이 본 출원에 개시되지만, 개시된 실시예들은 다양한 형태들로 구체화될 수 있는 본 발명의 단지 예가 된다는 것이 이해될 것이다. 그러므로, 본 출원에 개시된 특정 구조적 및 기능적 상세들은 제한적인 것으로서가 아닌, 단지 사실상 임의의 적절하게 상세한 구조에서 본 발명을 다양하게 이용하기 위해 이 기술분야의 숙련자를 교시하기 위한 대표적인 기초로서 해석될 것이다. 뿐만 아니라, 본 출원에 사용된 용어들 및 구절들은 제한적이도록 의도되지 않으며, 오히려 본 발명의 이해하기 쉬운 설명을 제공하도록 의도된다.
스마트폰들, 태블릿들 및 다른 웹-연결 디바이스들과 같은, 모바일 디바이스들은 비즈니스 툴들로서의 사용을 위해 및 개인적인 사용을 위해 급증하고 있다. 이러한 모바일 디바이스들은 데이터를 수집하고, 저장하고, 프로세싱하며 전달하기 위한 플랫폼을 제공할 수 있다. 많은 경우들에서, 이러한 데이터는 개인 연락처들, 금융 정보, 및 비즈니스 자료들과 같은, 개인적이고 및/또는 기밀일 수 있다.
모바일 디바이스들의 급증에 대한 결과로, 모바일 보안이 모바일 컴퓨팅의 분야에서의 증가하고 있는 관심 영역이다. 모바일 보안은 다양한 방식들로 구현될 수 있다. 본 출원에 개시된 바와 같이, 모바일 보안을 제공하는 여러 개의 방식들은 모바일 디바이스들에 의해 저장되며 전달된 데이터를 보호하는 것 및 다른 리소스들을 액세스하기 위해 디바이스들 상에서의 소프트웨어의 능력을 제어하는 것을 포함할 수 있다.
실시예들에서, 디바이스를 안전하게 하는 방법들은 정책에 기초하여 액세스를 제어함으로써 디바이스 또는 시스템 리소스로의 액세스를 필터링하는 단계를 포함할 수 있으며, 정책은 오브젝트들 사이에서 프로세스-간 통신을 통제하는 정책에 기초하여, 메시지들이 시스템 리소스들을 제어하는 오브젝트들 사이에서 전달될 수 있는 프로세스-간 제어 경로들을 필터링하고 및/또는 제어하기 위해 방화벽에 의해 적용될 수 있다. 몇몇 실시예들에서, 디바이스는 아이폰, 모토로라 Droid Razr Maxx, HTC One X, 삼성 Focus 2, 삼성 Gusto 2, 또는 몇몇 다른 셀룰러 전화와 같은, 셀룰러 전화일 수 있다. 다른 실시예들에서, 디바이스는, 아이패드, 에이수스 Eee Pad Transformer Prime, 소니 Tablet S, 삼성 Galaxy Tab 10.1, 또는 몇몇 다른 태블릿과 같은, 태블릿일 수 있다. 디바이스 리소스는 네트워크 연결, 셀룰러 연결, 키보드, 터치 인터페이스, 운영 시스템, 애플리케이션, 또는 몇몇 다른 리소스일 수 있다. 시스템 리소스는 소프트웨어 드라이버, 데이터베이스, 애플리케이션 프로그래밍 인터페이스의 방법, 포트, 무선 통신 인터페이스, 메모리에서의 보안 영역 또는 몇몇 다른 리소스일 수 있다. 프로세스-간 통신은 안드로이드 바인더, 유닉스 도메인 소켓, 또는 공유 메모리와 같은, 임의의 프로세스-간 통신 메커니즘에 의해 제공될 수 있다. 애플리케이션들에 대한 안드로이드의 허가 시스템과 같은, 종래 기술은 오브젝트 방화벽들을 제공하지 않으며 시스템 리소스로의 액세스를 제공하는 수신 오브젝트가 수신된 프로세스-간 통신 상에서 그것 자신의 정책들을 강제하는 것을 요구한다.
정책은 리소스를 액세스하기 위한 요청이 하나 이상의 기준들에 기초하여 필터링되고 및/또는 수정되어야 함을 서술할 수 있다. 몇몇 실시예들에서, 정책은 요청이 리소스를 액세스하기 위한 요청의 소스에 기초하여 필터링되어야 함을 서술할 수 있다. 예를 들면, 정책은 리소스를 액세스하기 위한 요청들이 요청을 하는 애플리케이션의 명칭 또는 유형에 기초하여 필터링되어야 함을 서술할 수 있다. 실시예들에서, 정책은 요청이 리소스에 기초하여 필터링되어야 함을 서술할 수 있다. 예를 들면, 정책은 셀룰러 연결을 사용하기 위한 임의의 요청들이 필터링되어야 함을 서술할 수 있다. 다른 실시예들에서, 정책은 요청이 액세스의 요청된 결과 또는 그것에 포함된 데이터에 기초하여 필터링되어야 함을 서술할 수 있다. 예를 들면, 정책은 데이터를 www.google.com으로 전송하기 위해 네트워크 연결을 액세스하기 위한 요청이 필터링되어야 함을 서술할 수 있다.
오브젝트들 사이의 프로세스-간 제어(IPC) 경로는 하나 이상의 오브젝트-지향 방화벽들에 의해 제어될 수 있다. 몇몇 실시예들에서, 애플리케이션과 연관된 오브젝트당 하나의 오브젝트 방화벽이 있을 수 있다. 오브젝트 방화벽들은, 예를 들면, 하나의 오브젝트에서 시스템 리소스로의 액세스를 제공하는 수신 오브젝트로의 프로세스-간 통신을 제어함으로써 정책을 구현할 수 있다. 실시예들에서, 애플리케이션으로부터 리소스로의 액세스를 제어하는 것은 정책에 기초할 수 있으며 리소스로의 액세스를 제공하는 하나 이상의 오브젝트들로의 액세스를 필터링하는 것을 포함할 수 있고, 상기 액세스는 프로세스-간 제어 경로를 통한다. 뿐만 아니라, 실시예들에서, 상기 필터링은 리소스로의 액세스를 제공하는 상기 하나 이상의 오브젝트들로의 프로세스-간 통신을 통제하는 정책에 기초할 수 있다. 오브젝트 방화벽들은 정책 엔진으로부터 정책을 획득할 수 있다. 정책은, 예를 들면, 정책 엔진에 의해 특정한 오브젝트 방화벽에 대한 하나 이상의 특정 설정들로 변환될 수 있다. 새로운 오브젝트들이 생성됨에 따라, IPC 제어기는 필요한대로 새로운 오브젝트 방화벽들을 설치할 수 있다. 오브젝트 방화벽은 제한 없이, 오브젝트 방화벽이 리소스의 요청을 차단할 수 있고, 오브젝트 방화벽이 리소스의 요청을 허용할 수 있고, 오브젝트 방화벽이 요청의 콘텐트들을 수정할 수 있고, 오브젝트 방화벽이 리소스로부터 전송된 데이터의 리턴 값을 수정할 수 있고, 오브젝트 방화벽이 요청된 리소스를 변경할 수 있고, 오브젝트 방화벽이 요청을 로깅할 수 있고, 오브젝트 방화벽이 요청을 무시할 수 있고, 오브젝트 방화벽이 하나 이상의 방화벽 규칙들을 변경할 수 있으며, 및/또는 오브젝트 방화벽이 오브젝트 방화벽 규칙들을 부가하거나 또는 제거할 수 있는 하나 이상의 방식들로 리소스의 요청에 응답할 수 있다. 실시예들에서, 오브젝트 방화벽은 리소스 액세스 시도들을 기록할 수 있다. 오브젝트 방화벽들은 중앙 집중형 레지스트리(centralized registry)에 저장될 수 있다. 유사하게, 디바이스 및 시스템 리소스들로의 액세스를 제공하는 오브젝트들은 또한 중앙 집중형 레지스트리에 저장될 수 있다.
보안 목적들을 위해, 단일 프로세스는 디바이스 보안 시스템과 연관될 수 있다. 몇몇 실시예들에서, 이러한 프로세스는 오브젝트 방화벽들을 제어 및 구성하는 것이 가능해질 수 있다.
실시예들에서, 보안 컴퓨팅 디바이스는 컴퓨팅 디바이스 상에서 실행하는 애플리케이션 및 컴퓨팅 디바이스 상에서 계산하는 또 다른 애플리케이션 사이에서 데이터의 출처에 관한 정책들을 강제하기 위해 디바이스-기반 콘텍스트-인식 정책 엔진을 포함할 수 있다. 몇몇 실시예들에서, 컴퓨팅 디바이스는 랩탑, 셀룰러 전화 또는 태블릿과 같은, 휴대용 컴퓨팅 디바이스일 수 있다. 몇몇 실시예들에서, 애플리케이션들 중 하나는 앵그리 버드, 스매쉬 캅스, 워즈 위드 프렌즈 또는 몇몇 다른 게임과 같은 게임일 수 있다. 몇몇 실시예들에서, 애플리케이션들 중 하나는 전화 애플리케이션, 스카이프, 웹 브라우저, 음악 플레이어 또는 몇몇 다른 유틸리티와 같은, 유틸리티일 수 있다. 몇몇 실시예들에서, 애플리케이션들 중 하나는 트위터, ESPN ScoreCenter, 구글 번역 또는 몇몇 다른 툴과 같은, 툴일 수 있다. 실시예에서, 제 2 애플리케이션은 운영 시스템일 수 있다.
실시예들에서, 저작 툴은 사용자에 의해 하나 이상의 정책들을 저작하기 위해 제공될 수 있다. 저작 툴은 브라우저-기반 인터페이스를 가질 수 있다. 저작 툴은 GUI를 가질 수 있다. 저작 툴은 디바이스 상에 설치될 수 있으며 디바이스 상에서 오브젝트 방화벽들을 제어 및/또는 생성하기 위해 사용될 수 있다. 실시예들에서, 저작 툴은 원격 시스템 상에 설치될 수 있다. 저작된 정책들은 하나의 포맷으로 저장되고(예로서, 데이터베이스에 저장된 오브젝트들 및 방법들의 세트), 디바이스로의 송신을 위해 제 2 포맷(예로서, XML)으로 변환되며, 하나 이상의 오브젝트 방화벽들을 구성하는 방법을 결정하기 위해 수신 디바이스에 의해 파싱될 수 있다.
정책 엔진은 시스템-특정 콘텍스트를 생성할 수 있으며, 이것은 현재 날짜 및 시간, 컴퓨팅 디바이스 위치, 디바이스 사용자의 아이덴티티, 어떤 애플리케이션들이 컴퓨팅 디바이스 상에서 실행하고 있는지, 어떤 애플리케이션들이 어떤 디바이스 리소스들을 소비하고 있는지, 및 시스템이 존재하는 콘텍스트에 관련된 다른 데이터 중 하나 이상을 포함할 수 있다. 몇몇 실시예들에서, 정책 엔진은 정책 서버에 연결될 수 있으며, 이것은 하나 이상의 정책들을 정책 엔진으로 푸시할 수 있다.
실시예들에서, 정책 엔진은 리소스로의 액세스를 제어할 수 있다. 예를 들면, 애플리케이션들 사이에서의 데이터 출처에 관련된 정책들을 강제하는 것은 정책 엔진에 의해, 제 1 애플리케이션에서 제 2 애플리케이션으로의 호출을 평가하는 것을 포함할 수 있다. 정책 엔진은 하나 이상의 정책들, 및 시스템 콘텍스트, 애플리케이션 콘텍스트 및 호출의 콘텍스트 중 하나 이상에 기초하여 호출을 평가할 수 있다. 정책들은, 예를 들면, 시스템 정책들, 애플리케이션 정책들, 및 다른 정책들을 포함할 수 있다. 정책 엔진은, 제한 없이, 데이터의 소스가 신뢰된 소스인지, 허용된 소스인지 등, 및/또는 데이터의 특징이 제 2 애플리케이션으로 중계되거나 또는 그것에 의해 사용되도록 허용된 유형인지를 포함하여, 호출을 평가하기 위해 하나 이상의 정책들을 사용할 수 있다. 몇몇 실시예들에서, 정책 엔진은 또한, 호출의 평가에 기초하여, 호출에 의해 전송될 임의의 데이터가 허가되는지를 결정할 수 있다.
예를 들면, 보안 연락처 리스트를 전송하기 위해 하나의 애플리케이션에서 웹 브라우저로의 호출은 모바일 전화 상에서의 정책 엔진에 의해 평가될 수 있다. 정책 엔진은 연락처 리스트로부터의 임의의 데이터의 송신을 금지하는 정책을 포함할 수 있다. 호출을 평가할 때, 정책 엔진은 호출을 거절할 것이며 제 1 애플리케이션으로 실패를 보고할 수 있다.
실시예들에서, 컴퓨팅 디바이스를 안전하게 하는 방법들은 컴퓨팅 디바이스 상에서 실행하는 제 1 애플리케이션 및 컴퓨팅 디바이스 상에서 실행하는 제 2 애플리케이션 사이에서 데이터 출처에 관한 정책을 강제하기 위한 디바이스-기반 콘텍스트-인식 정책 엔진을 제공하는 단계; 상기 디바이스-기반 콘텍스트-인식 정책 엔진에 의해, 제 1 애플리케이션에서 제 2 애플리케이션으로 데이터 전송을 검토하는 단계; 및 정책에 기초하여 디바이스-기반 콘텍스트-인식 정책 엔진에 의해 데이터 전송이 허용되는지를 결정하는 단계를 포함할 수 있다. 몇몇 실시예들에서, 컴퓨팅 디바이스는 랩탑, 셀룰러 전화 또는 태블릿과 같은, 휴대용 컴퓨팅 디바이스일 수 있다. 몇몇 실시예들에서, 애플리케이션들 중 하나는 앵그리 버드, 스매쉬 캅스, 워즈 위드 프렌즈 또는 몇몇 다른 게임과 같은 게임일 수 있다. 몇몇 실시예들에서, 애플리케이션들 중 하나는 전화 애플리케이션, 스카이프, 웹 브라우저, 음악 플레이어 또는 몇몇 다른 유틸리티와 같은, 유틸리티일 수 있다. 몇몇 실시예들에서, 애플리케이션들 중 하나는 트위터, ESPN ScoreCenter, 구글 번역 또는 몇몇 다른 툴과 같은, 툴일 수 있다. 실시예에서, 제 2 애플리케이션은 운영 시스템일 수 있다.
디바이스-기반 콘텍스트-인식 정책 엔진은 디바이스의 콘텍스트 및 상태를 식별하는 것이 가능해질 수 있으며 시스템-특정 콘텍스트를 생성할 수 있다. 시스템-특정 콘텍스트는 현재 날짜 및 시간, 컴퓨팅 디바이스 위치, 디바이스 사용자의 아이덴티티, 디바이스 상에서 현재 실행하고 있는 애플리케이션들 및 다른 콘텍스트-관련 데이터 중 하나 이상을 포함할 수 있다. 몇몇 실시예들에서, 정책 엔진은 정책 서버에 연결될 수 있으며, 이것은 하나 이상의 정책들을 정책 엔진으로 푸시할 수 있다.
애플리케이션들 사이에서 데이터 출처 정책들을 강제하는 것(enforcing)은 정책 엔진에 의해, 제 1 애플리케이션에서 제 2 애플리케이션으로의 호출을 평가하는 것을 포함할 수 있다. 정책 엔진은 하나 이상의 정책들, 및 시스템 콘텍스트, 애플리케이션 콘텍스트 및 호출의 콘텍스트 중 하나 이상에 기초하여 호출을 평가할 수 있다. 정책들은, 예를 들면, 시스템 정책들, 애플리케이션 정책들, 및 다른 정책들을 포함할 수 있다. 정책 엔진은 호출을 평가하기 위해 하나 이상의 정책들을 사용할 수 있다. 몇몇 실시예들에서, 정책 엔진은, 또한, 호출의 평가에 기초하여, 호출에 의해 전송될 임의의 데이터가 허가되는지를 결정할 수 있다.
디바이스-기반 콘텍스트-인식 정책 엔진에 의해, 데이터 전송을 검토하는 것은 수신된 원격 프로시저 호출에 특정적인 콘텍스트를 생성하는 것을 포함할 수 있다. 몇몇 실시예들에서, 콘텍스트는 제 1 애플리케이션의 아이덴티티를 포함할 수 있다.
데이터 전송이 허용되는지를 결정하는 것은 하나 이상의 이용 가능한 정책에 따라 데이터 전달 요청을 평가하는 것을 포함할 수 있다. 결정은 정책에 대한 콘텍스트의 비교에 기초할 수 있다. 이러한 정책들은, 예를 들면, 시스템 정책, 애플리케이션 정책, 시스템 콘텍스트-관련 정책, 애플리케이션 콘텍스트-관련 정책, 요청된 데이터 전송의 콘텐트에 관한 정책, 또는 몇몇 다른 정책을 포함할 수 있다.
실시예들에서, 모바일 네트워크들에서 분배 정책들을 강제하는 방법들은 두 개의 시스템들 및/또는 서브시스템들 사이에서의 통신을 통제하는 규칙들을 강제하기 위해 디바이스 상에 프로세스-간 통신 방화벽을 제공하는 단계’ 프로세스-간 통신 방화벽과 연관된 정책 엔진에 의해, 시스템 콘텍스트를 생성하는 단계; 및 프로세스-간 통신 방화벽에 의해, 통신이 허용되는지를 결정하는 단계를 포함할 수 있다. 몇몇 실시예들에서, 프로세스-간 통신 방화벽에 의해 통신이 허용되는지에 대한 결정은 정책, 시스템 콘텍스트, 및/또는 통신의 콘텐트 중 하나 이상에 기초할 수 있다.
몇몇 실시예들에서, 분배 정책들은 블랙/화이트 리스트, 서명 및/또는 명명 정책, 체크섬/라이브러리 분석 정책, 애플리케이션, 프로세스, 사용자, 사용자들의 그룹 중 하나 이상에 대한 허가, 및 다른 정책들과 같은 하나 이상의 정책들을 포함할 수 있다. 몇몇 실시예들에서, 정책은 모바일 네트워크에 연결된 정책 서버 상에 저장될 수 있다. 정책은 또한 디바이스 상에서의 정책 엔진에 저장될 수 있다. 블랙 리스트는 하나 이상의 금지된 동작들을 식별할 수 있다. 예를 들면, 애플리케이션 블랙 리스트는 디바이스 상에서 실행하는 것이 금지된 애플리케이션들에 대한 애플리케이션 ID들의 리스트를 포함할 수 있다. 화이트 리스트는 하나 이상의 허용된 동작들을 식별할 수 있다. 예를 들면, 애플리케이션 화이트 리스트는 디바이스 상에서 실행하도록 허용되는 애플리케이션들에 대한 애플리케이션 id들의 리스트를 포함할 수 있다.
프로세스-간 통신 방화벽은 애플리케이션에서 하나 이상의 오브젝트들에 관련된 오브젝트-지향 방화벽일 수 있다. 몇몇 실시예들에서, 프로세스-간 통신 방화벽은 프로세스-간 통신 방화벽에 관련된 오브젝트 및 제 2 오브젝트 사이에서의 통신을 제어하기 위해 IPC 제어기와 통신할 수 있다. 제 2 오브젝트는 제 2 애플리케이션에 관련될 수 있다.
제 2 실시예들에서, 정책 엔진에 의해 시스템 콘텍스트를 생성하는 것은 현재 날짜 및 시간, 디바이스 위치, 디바이스 사용자의 아이덴티티 또는 몇몇 다른 콘텍스트를 포함할 수 있다.
실시예들에서, 보안 컴퓨팅 시스템은 프로세스-간 통신(IPC)을 사용하여 프로세스들을 필터링함으로써 시스템의 프로세스들을 안전하게 하도록 적응된 운영 시스템을 포함할 수 있다. 컴퓨팅 시스템은 셀룰러 전화, MP3 플레이어, 태블릿 및 랩탑과 같은 모바일 디바이스일 수 있다. 몇몇 실시예들에서, 디바이스는 아이폰, 모토로라 Droid Razr Maxx, HTC One X, 삼성 Focus 2, 삼성 Gusto 2, 또는 몇몇 다른 셀룰러 전화와 같은, 셀룰러 전화일 수 있다. 다른 실시예들에서, 디바이스는, 아이패드, 에이수스 Eee Pad Transformer Prime, 소니 Tablet S, 삼성 Galaxy Tab 10.1, 또는 몇몇 다른 태블릿과 같은, 태블릿일 수 있다. 운영 시스템들의 예들은, 이에 제한되지 않지만, 안드로이드, 블랙베리 OS, iOS, 심비안 OS, 윈도우 폰 및 크롬 OS를 포함한다.
IPC를 사용한 프로세스들의 필터링이 구현될 수 있는 방식은 특정한 운영 시스템에 의존할 수 있다. 몇몇 실시예들에서, 운영 시스템은 예를 들면, iOS에서 프로세스-간 통신 대신에 유니버셜 리소스 식별자(URI)를 사용할 수 있다.
실시예들에서, 보안 컴퓨팅 시스템은 프로세스-간 통신(IPC)을 사용하여 프로세스들을 명령하고 제어함으로써 컴퓨팅 시스템의 프로세스들을 안전하게 하도록 적응된 운영 시스템을 포함할 수 있다. 컴퓨팅 시스템은 셀룰러 전화, MP3 플레이어, 태블릿 및 랩탑과 같은 모바일 디바이스일 수 있다. 운영 시스템들의 예들은, 이에 제한되지 않지만, 안드로이드, 블랙베리 OS, iOS, 심비안 OS, 윈도우 폰 및 크롬 OS를 포함한다. IPC를 사용한 프로세스들의 필터링이 구현될 수 있는 방식은 특정한 운영 시스템에 의존할 수 있다. 몇몇 실시예들에서, 운영 시스템은 예를 들면, iOS에서 프로세스-간 통신 대신에 URI를 사용할 수 있다.
IPC를 사용하여, 명령 및 제어 프로세스들은 컴퓨팅 시스템의 기능들을 안전하게 제어하기 위해 사용될 수 있다. 예를 들면, IPC는 웹 브라우징, 전화 호출들, 텍스트 메시징 및 다른 컴퓨팅 시스템 기능들을 명령 및 제어하기 위해 사용될 수 있다. 다른 실시예들에서, IPC를 사용하여, 명령 및 제어 프로세스가 프로세스-간 통신을 필터링하기 위해 사용될 수 있다. 예를 들면, 프로세스-간 통신은 특정한 클래스의 애플리케이션들이 사설 데이터를 전송하는 것을 방지하기 위해 규칙 또는 정책에 따라 필터링될 수 있다. 또 다른 예에서, 프로세스-간 통신은 특정한 클래스의 애플리케이션들이 정의된 네트워크의 밖에서 임의의 컴퓨터들에 연결하는 것을 방지하기 위해 규칙 또는 정책에 따라 필터링될 수 있다.
실시예들에서, 모바일 통신 디바이스에서 멀웨어에 대해 보호하기 위한 방법들은 제 1 애플리케이션에서 데이터 버스로 원격 프로시저 호출을 전달하는 단계; 데이터 버스에서 정책 엔진으로 원격 프로시저 호출에 대한 정책 확인을 요청하는 단계; 원격 프로시저 호출의 콘텍스트 및 저장된 정책에 기초하여, 정책 엔진에 의해 원격 프로시저 호출을 승인할지를 결정하는 단계; 결정을 정책 엔진에서 다시 데이터 버스로 전달하는 단계; 및 결정에 기초하여, 데이터 버스에 의한 원격 프로시저 호출을 허용하거나 또는 차단하는 단계를 포함할 수 있다. 데이터 버스는 프로세스-간 통신 버스일 수 있다. 실시예들은 파일 레벨에서 서명들을 전달하는 것을 포함할 수 있다. 본 개시의 실시예들은 프로시저 호출을 전달하는 것이 파일 레벨에서보다는 프로세스들 사이에서 프로세스 서명을 전달하는 것을 포함할 수 있다는 것일 수 있다.
실시예들에서, 네이티브 코드의 로딩, 링킹, 및 실행에 대한 분배 정책들을 강제하기 위해 정책 엔진을 사용하기 위한 방법들은 모바일 디바이스 상에서 가상 머신의 안에서 구동하는 애플리케이션을 제공하는 단계; 모바일 디바이스 상에서 구동하는 정책 엔진을 제공하는 단계; 및 정책 엔진으로부터의 입력에 응답하여 및 정책 인자에 기초하여, 가상 머신에서의 네이티브 라이브러리들에서 코드를 로딩하고, 링킹하며 실행하기 위한 규칙들을 적응시키는 단계를 포함할 수 있다.
몇몇 실시예들에서, 애플리케이션은 가상 머신 안에서 구동할 수 있다. 가상 머신들의 예들은, 이에 제한되지 않지만, 자바 버추얼 머신들, 펄 가상 머신들, 오라클 가상 머신, 패러렐즈 버추얼 머신, 썬 Xvm 및 VMware 버추얼 머신을 포함한다.
몇몇 실시예들에서, 보안 정책들이 기존의 API들에 적용되도록 허용하기 위한 방법들은 관점-지향 프로그래밍을 통할 수 있으며 API들의 내부 로직을 수정하지 않고 기존의 API들에 적용될 수 있다. 기존의 API는 관점-지향 프로그래밍 방법들 및 기술들을 사용하여 보안의 하나 이상의 계층들을 갖고 래핑될 수 있다.
실시예들에서, 모바일 디바이스를 안전하게 하기 위한 방법들은 모바일 디바이스 상에서 복수의 프로세스들에 관점-지향 보안을 적용하기 위해 요구된 정책 또는 다른 데이터를 분배하기 위해 프로세스-간 통신을 사용하는 단계를 포함할 수 있다. 보안-관련 데이터는 프로세스-간 통신 메커니즘, 예를 들면, IPC 제어기, 안드로이드 바인더, 또는 유닉스 도메인 소켓을 통해, 하나 이상의 타겟 프로세스들로 분배될 수 있다. 일단 이러한 보안-관련 데이터가 분배되면, 관점-지향 보안 기술들은 타겟 프로세스들에서 방법들, 기능들, 및 서비스들의 호출들에 관련된 보안을 인터셉트하며 관리하기 위해 적용될 수 있다.
몇몇 실시예들에서, 디바이스를 안전하게 하기 위한 방법들은 정책들이 어떻게 디바이스에 적용되는지 및 결과적으로 관점-지향 보안 기술들이 어떻게 하나 이상의 프로세스들에 걸쳐 적용되는지를 변경하기 위해 콘텍스트 정보를 사용하는 단계를 포함할 수 있다. 이러한 콘텍스트 정보는 지리, 가속도계, 카메라, 마이크로폰, 무선 네트워크, 애플리케이션 사용, 사용자 상호 작용, 실행 프로세스, 디스크 상태, 근처의 무선 신호들/네트워크들, 외부 디바이스들과의 페어링 상태, 방문된 웹사이트들, 디바이스 네트워크 트래픽, 배터리 레벨, 디바이스 상에 존재하는 데이터의 유형들, 또는 다른 디바이스 하드웨어 또는 소프트웨어 검출 가능한 콘텍스트 정보를 포함할 수 있다. 디바이스 콘텍스트는 지리적 위치와 같은, 실-세계, 디바이스 상에 존재하는 데이터, 현재 실행 중인 애플리케이션들, 또는 네트워크 또는 디스크로/로부터의 데이터의 입력/출력과 같은, 가상, 또는 둘의 임의의 조합들일 수 있다. 예를 들면, 보안 정책은 특정 무선 네트워크로의 연결, 하나 이상의 애플리케이션들의 런칭, 또는 특정 데이터세트들의 다운로딩에 의해 트리거될 수 있다.
몇몇 실시예들에서, 디바이스를 안전하게 하기 위한 방법들은 디바이스 상에서 기능하는 어떤 프로세스들이 몇몇 형태의 관점-지향 보안에 의해 커버되는지를 추적하는 단계 및/또는 관점-지향 보안 프로그래밍에 대한 후보들인 프로세스들을 결정하는 단계를 포함할 수 있다. 이러한 추적은 중앙 집중형, 분산형, 또는 둘의 하이브리드 조합일 수 있다.
실시예들에서, 디바이스를 안전하게 하는 방법들은 디바이스 상에 저장될 수 있는 관점-관련 데이터를 저장하는 단계를 포함할 수 있다. 몇몇 실시예들에서, 데이터는 디바이스가 다시 턴 온될 때 프로세스들로 재분배될 수 있다. 비-휘발성 저장 시스템은 요구된 정책 및/또는 관점-지향 프로그래밍 정보를 캡처할 수 있다. 디바이스가 파워 온될 때, 분산형 또는 중앙 집중형 메커니즘은 보안 정책들을 강제하기 위해 프로세스들로의 정책 및/또는 관점-지향 프로그래밍 데이터의 입력/출력을 위해 사용될 수 있다.
실시예들에서, 디바이스를 안전하게 하기 위한 방법들은 디바이스를 원하는 상태로 이끌기 위해 관점-지향 프로그래밍과 결합될 수 있는 비 관점-지향 프로그래밍 로직을 조합하는 단계를 포함할 수 있다. 몇몇 실시예들에서, 디바이스를 안전하게 하는 것은 특정 디바이스 기능들을 안전하게 하는 것을 포함할 수 있다. 예를 들면, 비 관점-지향 프로그래밍 로직은 관점-지향 프로그래밍 기술이 어떤 애플리케이션들이 무선 네트워크 액세스를 턴 온 또는 오프하는지를 제한하기 위해 사용되기 전에 무선 네트워크 액세스를 턴 오프할 수 있다. 또 다른 예에서, 비 관점-지향 프로그래밍 로직은 관점-지향 프로그래밍 기술이 멀웨어의 재런칭을 방지하기 위해 사용되기 전에 멀웨어 애플리케이션을 자동으로 중단시킬 수 있다.
실시예들에서, 디바이스를 안전하게 하기 위한 방법들은 또 다른 애플리케이션 또는 서비스를 위한 일반 구역에서의 애플리케이션으로부터 IPC 버스를 통한 요청이 요청된 애플리케이션 또는 서비스의 신뢰 버전으로 자동으로 리다이렉트될 수 있도록 IPC 메커니즘들을 적응시키는 단계를 포함할 수 있다.
실시예들에서, 디바이스 상에서의 콘텍스트를 검증하며, 상기 검증에 응답하여, 보안 데이터로의 액세스를 제공하는 콘텍스트 검출 엔진을 서버 상에 제공함으로써 디바이스 상에서의 도용 가능하지 않은 콘텍스트를 인증하기 위한 방법들. 실시예들에서, 서버는 네트워크로의 게이트웨이 서버일 수 있다.
실시예들에서, 정책을 구성하기 위한 방법들은 임의의 일관성 없는 규칙들을 일치시킴으로써 정책 엔진을 위한 단일의, 일관성 있는 정책을 제공하기 위해 하나 이상의 소스들로부터의 복수의 정책들을 조합하는 단계를 포함할 수 있다. 정책은 보안 정책일 수 있다. 복수의 정책들은 예를 들면, 전화 정책, IT 관리자 정책, 셀전화 캐리어 정책, 기업 정책, 부서 정책 또는 몇몇 다른 정책으로 구성될 수 있다. 정책들의 소스들은, 예를 들면, 셀전화 캐리어, 정부, 디바이스 제공자, 디바이스 지원 제공자, 디바이스 사용자, 디바이스를 사용자 또는 몇몇 다른 정책 제공자에게 제공하는 기업을 포함할 수 있다. 일관성 없는 규칙들을 일치시키는 것은 둘 이상의 규칙들을 비교하는 것 및 가장 제한적인 규칙을 선택하는 것을 포함할 수 있다. 일관성 없는 규칙들을 일치시키는 것은, 몇몇 실시예들에서, 둘 이상의 규칙들을 비교하는 것 및 가장 덜 제한적인 규칙을 선택하는 것을 포함할 수 있다. 일관성 없는 규칙들을 일치시키는 것은, 몇몇 실시예들에서, 둘 이상의 규칙들을 비교하는 것 및 몇몇 다른 세트의 규칙들에 기초하여, 예를 들면, 일관성 없는 규칙들을 어떤 리소스(들)에 적용할지에 기초하여 규칙들 중 하나를 선택하는 것을 포함할 수 있다.
디바이스를 안전하게 하기 위한 방법들 및 시스템들의 실시예들이 도 1에 묘사된다. 도 1에 묘사된 방법들 및 시스템들은 모바일 디바이스 시스템(102)을 포함할 수 있다. 시스템(102)은 아이폰, 모토로라 Droid Razr Maxx, HTC One X, 삼성 Focus 2, 삼성 Gusto 2, 또는 몇몇 다른 셀룰러 전화와 같은, 셀룰러 전화일 수 있다. 다른 실시예들에서, 시스템(102)은 아이패드, 에이수스 Eee Pad Transformer Prime, 소니 Tablet S, 삼성 Galaxy Tab 10.1, 또는 몇몇 다른 태블릿과 같은, 태블릿일 수 있다. 시스템(102)은 하나 이상의 애플리케이션들(110), 하나 이상의 가상 머신들(112), 하나 이상의 네이티브 라이브러리들(114), 운영 시스템(116), 정책 엔진(118), 하나 이상의 오브젝트 방화벽들(144), 및 하나 이상의 IPC 제어기들(138)과 같은, 시스템(102) 상에서 실행하는 소프트웨어를 포함할 수 있다. 제 1 요소가 제 2 요소와 통신하는 것으로 설명되는 실시예들에서, 이러한 통신은 직접적일 수 있거나 또는 본 출원에서 설명된 바와 같이 개재 요소들을 포함할 수 있다. 단지 예로서, 정책 엔진(118)은 IPC 버스(132)와 직접, 또는 예를 들면, 특권 코드 서비스(140) 및/또는 IPC 제어기(138B)를 통해서를 포함하여, IPC 버스(132)와 간접적으로 통신할 수 있다.
하나 이상의 애플리케이션들(110)은 시스템(102) 상에서 로컬에서 실행할 수 있다. 몇몇 실시예들에서, 애플리케이션(110)은 앵그리 버드, 스매쉬 캅스, 워즈 위드 프렌즈 또는 몇몇 다른 게임과 같은 게임일 수 있다. 몇몇 실시예들에서, 애플리케이션은 전화 애플리케이션, 스카이프, 웹 브라우저, 음악 플레이어 또는 몇몇 다른 유틸리티와 같은, 유틸리티일 수 있다. 몇몇 실시예들에서, 애플리케이션은 트위터, ESPN ScoreCenter, 구글 번역 또는 몇몇 다른 툴과 같은, 툴일 수 있다. 애플리케이션(110)은 합법적인 시장, 예를 들면, iTunes로부터 시스템으로 다운로딩될 수 있다. 그러나, 몇몇 경우들에서, 애플리케이션(110)은 멀웨어 시스템(108)으로부터 획득될 수 있다. 몇몇 다른 경우들에서, 애플리케이션(110)은 합법적인 시장을 통해 멀웨어 시스템(108)으로부터 이용 가능해질 수 있다. 실시예들에서, 애플리케이션은 특권 코드(예로서, 단지 일단 허가가 특권 코드 서비스(140)에 의해 승인된다면 액세스될 수 있는 코드), 신뢰 코드 구역(146)에서의 코드, 또는 오브젝트 방화벽(144)에 의해 보호된 코드 중 하나 이상을 실행하려고 시도할 수 있다.
실시예들에서, 하나 이상의 애플리케이션들(110)은 하나 이상의 가상 머신들(112)에서 실행할 수 있다. 가상 머신들의 예들은, 이에 제한되지 않지만, 자바 버추얼 머신들, 펄 가상 머신들, 오라클 가상 머신, 패러렐즈 버추얼 머신, 썬 Xvm 및 VMware 버추얼 머신을 포함한다. 네이티브 라이브러리들(114)에서 코드를 로딩하고, 링킹하며, 실행하기 위해, 애플리케이션(110)은 라이브러리 요청을 각각의 가상 머신(112)에 전송할 수 있다. 가상 머신(112)은 요청이 허용되는지를 결정하기 위해 정책 엔진(118)과 통신할 수 있다. 몇몇 실시예들에서, 가상 머신(112)은 또한 요청이 허용되는지를 결정하기 위해 로컬 정책을 사용할 수 있다. 요청이 허용된다면, 가상 머신(112)은 네이티브 라이브러리(114)로의 애플리케이션(110) 액세스를 가능하게 할 수 있으며, 이것은 운영 시스템(116)과 상호 작용하는 것을 가능하게 한다. 가상 머신들(112)은 네이티브 라이브러리(114)로와 같은, 라이브러리 액세스 허용을, 애플리케이션들(110)로 시그널링할 수 있다.
네이티브 라이브러리(114)는 애플리케이션(110) 및 운영 시스템(116) 사이에서의 상호 작용을 가능하게 할 수 있다. 시스템(102)의 운영 시스템(116)은 시스템(102)을 관리하는 소프트웨어이다. 운영 시스템들의 예들은, 이에 제한되지 않지만, 안드로이드, 블랙베리 OS, iOS, 심비안 OS, 윈도우 폰 및 크롬 OS를 포함한다.
정책 엔진(118)은, 예를 들면, 애플리케이션(110)에 의한 코드의 로딩, 링킹, 및 실행에 대한, 및 원격 프로시저 호출들에 대한 정책들을 강제할 수 있다. 정책 엔진(118)은 또한 시스템-특정 콘텍스트를 생성할 수 있으며, 이것은 현재 날짜 및 시간, 디바이스 위치, 및 디바이스 사용자의 아이덴티티를 포함할 수 있다. 몇몇 실시예들에서, 정책 엔진(118)은 가상 머신(112)의 안에서 구동하는 애플리케이션(110)에 의해 네이티브 코드의 로딩(loading), 링킹(linking), 및 실행(execution)에 대한 분배 정책을 강제할 수 있다. 실시예들에서, 정책 엔진(118)은 제 2 프로세스에 존재할 수 있으며, 하나 이상의 네이티브 라이브러리들(114)에서 코드를 로딩하고, 링킹하며, 실행하기 위한 하나 이상의 규칙들을 동적으로 전송하며 적응시킬 수 있다. 제 1 프로세스와 동일한 시스템(102) 상에 상주하는 제 2 프로세스에서의 정책 엔진을 갖는 것은, 가상 머신(112) 프로세스들로 정책들을 전송하기 위해 보다 높은 속도 통신을 제공할 수 있어서, 정책들(130)이 다수의 정책 인자들에 기초하여 동적으로 변경되도록 허용한다. 정책 엔진(118)이 상주할 수 있는, 제 2 프로세스는 정책 엔진(118)을 공격으로부터 고립시켜서, 그것이 제 1 프로세스로부터 액세스 가능하지 않을 수 있는 외부 서비스들을 액세스하도록 허용하며, 정책 엔진(118)이 제 1 프로세스의 실행 전 및 후 양쪽 모두에서 메모리에 상주하도록 허용할 수 있다.
원격 프로시저 호출의 콘텍스트에서, 정책 엔진(118)은 거래(transaction)를 승인하거나 또는 부인할 수 있으며 이 결과를 다시 데이터 버스로 전달할 수 있다. 이러한 원격 프로시저 호출이 시스템 서비스를 수반한다면, 데이터 버스는 요청을 운영 시스템(116)으로 전달할 수 있다. 운영 시스템(116)은 원격 프로시저 호출을 실행하며 결과를 데이터 버스를 통해 소스 애플리케이션(110)으로 리턴할 수 있다. 대신에 이러한 원격 프로시저 호출이 또 다른 애플리케이션(110)과의 상호 작용을 수반한다면, 데이터 버스는 호출을 목적지 애플리케이션(110)으로 전달할 수 있다. 상기 원격 프로시저 호출의 결과는 그 후 데이터 버스를 통해 소스 애플리케이션(110)으로 리턴될 수 있다.
시스템(102)은 통신 설비(150)를 경유하여, 클라우드 또는 다른 네트워킹(104)을 통해 정책 서버(106)로 연결될 수 있다. 통신 설비(150)는 네트워크 인터페이스 제어기, 무선 네트워크 인터페이스 제어기, Wi-Fi 어댑터 등일 수 있다. 정책 서버(106)는 정책 저장소를 관리할 수 있다. 정책 서버(106)는 정책 엔진(118)으로부터의 요청 시 정책들을 제공할 수 있다. 정책 서버(106)는 블랙/화이트 리스트들(120), 서명 및/또는 명명(122), 체크섬/라이브러리 분석들(124), 애플리케이션들에 대한 허가들, 프로세스들, 사용자들, 그룹들, 및 다른 정책 검사들(128)과 같은 정책 관점들을 결정하기 위해 정책 저장소 액세스를 수행함으로써 이러한 정책들을 제공할 수 있다. 정책 서버(106)는 정책 저장소 응답들을 수신하며 정책 요청 응답을 정책 엔진(118)에 제공할 수 있다. 대안적으로, 정책 엔진(118)은 정책 엔진(118)에게 알려져 있거나 또는 그것에 의해 액세스 가능한 정책 정보에 기초하여 네이티브 라이브러리들(114)의 애플리케이션(110) 액세스에 관한 가상 머신들(112) 조회들을 제공할 수 있다.
다양한 실시예들에서, 시스템(102)의 다양한 요소들은 통신 설비(150)와 직접 또는 간접적으로 통신할 수 있다. 상기 문장을 제한하기 위해서가 아닌 단지 예로서, 애플리케이션(110) 및/또는 운영 시스템(116)은 통신 설비(150)와 직접 통신할 수 있다.
애플리케이션(110)은 프로세스-간 통신이 가능한 하나 이상의 오브젝트들을 포함할 수 있다. 종래 기술에서, 이들 오브젝트들은 IPC 버스(132)에 직접 연결되었다. 여기에서, 오브젝트들은 오브젝트 방화벽들(144) 및/또는 IPC 제어기들(138A 및/또는 B)을 사용하여 중재될 수 있다. 여기에서, 각각의 오브젝트는 IPC 제어기(138A 및/또는 B)에 연결할 수 있는 독립적인 오브젝트 방화벽(144)을 가질 수 있다. IPC 제어기(138A 및/또는 B)는 IPC 버스(132)에 연결할 수 있다. 정책 엔진(118)은 하나 이상의 정책들(130)을 구현하기 위해 오브젝트 방화벽(144) 및 IPC 제어기들(138A 및 B)과 통신할 수 있다. 몇몇 실시예들에서, 정책 엔진(118)은 고-레벨 방화벽 규칙을 하나 이상의 오브젝트 방화벽들(144)에 대한 특정 설정으로 변환할 수 있다. 새로운 프로세스-간 통신 가능 오브젝트들이 생성됨에 따라, 각각의 프로세스에서의 IPC 제어기(138A 및/또는 B)는 필요에 따라 부가적인 오브젝트 방화벽들(144)을 설치할 수 있다.
실시예들에서, IPC 제어기(138A)는 새로운 프로세스-간 통신 가능 오브젝트들이 생성되며 파괴됨에 따라 오브젝트 방화벽들(144)의 설치 및 제거를 관리할 수 있다. 이러한 제어기는 각각의 오브젝트 생성에 대한 또 다른 프로세스에서 IPC 제어기(138B)와의 부가적인 프로세스-간 통신을 수행하는 오버헤드를 제거할 수 있으며 성능을 개선할 수 있다(예로서, 오브젝트 방화벽들의 인스턴스들 및 각각의 오브젝트와 연관된 IPC 제어기들을 동적으로 관리함으로써; 단일 전역적 제어기 및/또는 모든 애플리케이션들 및 오브젝트들에 대한 방화벽과 통신하는 것에 대조적으로, 단일 애플리케이션과 연관된 오브젝트들 중에서 프로세스-간 통신을 가능하게 함으로써; 등). IPC 제어기(138A 및/또는 B)는 하나의 프로세스-간 통신 가능 오브젝트로부터 제 2 프로세스-간 통신 가능 오브젝트의 오브젝트 방화벽(144)으로 IPC 호출을 전송할 수 있다. 제 2 프로세스-간 통신 가능 오브젝트의 오브젝트 방화벽(144)은, 오브젝트 방화벽 규칙들로서 구현된 정책(130)에 기초하여, 호출을 허가할지를 결정할 수 있다.
IPC 버스(132)는 데이터 버스일 수 있다. 몇몇 실시예들에서, IPC 버스(132)는 프로세스-간 통신을 가능하게 할 수 있다. 실시예들에서, IPC 버스(132)는 원격 프로시저 호출 서비스, 프로토콜 핸들러 시스템 호출 테이블, 또는 임의의 다른 기능 또는 오브젝트 브로커로서 인스턴스화된 공유 데이터 버스를 통해 프로세스-간 통신을 수행할 수 있다. 예를 들면, IPC 버스(132)는 일 애플리케이션(110)에서의 오브젝트와 연관된 IPC 제어기(138A)에서 제 2 애플리케이션에서의 오브젝트와 연관된 또 다른 오브젝트 방화벽(144)으로 원격 프로시저 호출로서 프로세스-간 통신을 가능하게 할 수 있다.
실시예들에서, 신뢰 코드 구역(146)은 프로세서의 구역으로서 시스템(102) 상에 존재할 수 있으며 시스템(102)의 전문화된 디버깅 인터페이스들 및/또는 원격 검사 툴들(예로서, 안드로이드TM ADB) 중 하나 이상이 신뢰 코드 구역(146)에 위치될 수 있다. 프로세서의 신뢰 구역은 그것 내에서 실행하는 코드가 조작되지 않았음을 신뢰의 암호 체인을 통해 보장할 수 있다. 일단 요소가 실행을 위해 신뢰 프로세서 구역 내에 위치된다면, 그것 상에서 수행된 동작들로부터의 출력은 조작이 없고, 정확하며, 신뢰되는 것으로 고려될 수 있다. 신뢰 구역 기능을 제공하는 상용 소프트웨어의 예는 ARM Limited에 의한 TrustZone™이다.
전체 전문화된 디버깅 인터페이스 및/또는 툴들을 신뢰 코드 구역(146)으로 위치시킴으로써, 원격 컴퓨터는 시스템(102)의 무결성을 감사(audit)하기 위해 또는 원격으로 제공된 명령들이 시스템(102) 상에서의 정확한 및 신뢰된 디버깅 소프트웨어에 의해 핸들링된다는 신뢰를 갖고 시스템(102)의 실행 또는 구성을 안전하게 제어하기 위해 사용될 수 있다. 대안적으로, 이들 전문화된 디버깅 요소들의 부분들은 신뢰 코드 구역(146)(예로서, 파일 시스템 구성요소들 및 USB I/O 구성요소들)으로 위치될 수 있다.
실시예들에서, 시스템(102)의 프로세스-간 통신 메커니즘은 신뢰 코드 구역(146)으로 위치될 수 있다. 이러한 프로세스-간 통신 메커니즘은 시스템(102) 상에서 사용자-공간 애플리케이션들(예로서, 운영 시스템에 있지 않은) 및 서비스들(예로서, 사용자-공간에서 구동하는 시스템 서비스들을 포함한) 사이에서의 통신을 통제하도록 의도된다. 프로세스-간 통신 메커니즘은, 예를 들면, 오브젝트 방화벽(144), IPC 제어기(138A 및/또는 B), 또는 몇몇 다른 프로세스-간 통신 메커니즘일 수 있다. 일단 프로세스-간 통신 메커니즘이 신뢰 프로세서 구역으로 위치된다면, 사용자-공간 애플리케이션들 및 디바이스 상에서의 서비스들 사이에서의 통신의 제어는 신뢰 구역에서 실행하는 소프트웨어가 조작이 없을 것이기 때문에 보호되는 것으로 고려될 수 있다. 게다가, 신뢰 구역에 의해 안전하게 되는 프로세스-간 통신 메커니즘은 사용자-공간 애플리케이션들 및 서비스들 사이에서의 통신을 인터셉트하고, 검사하고, 차단하고, 필터링하거나, 또는 그 외 적응시킴으로써 디바이스 상에서의 보조 보안 제어 포인트로서 사용될 수 있다. 프로세스-간 통신 메커니즘이 신뢰 프로세서 구역 내에 있기 때문에, 그것은 애플리케이션/서비스-간 통신에 대한 제어의 보안 포인트로 고려될 수 있다.
시스템 제어기(134)는 애플리케이션(110)으로부터의 요청에 응답하여 시스템 호출(136)을 실행할 수 있다. 실시예들에서, 시스템 제어기(134)는 애플리케이션(110)으로부터의 요청에 응답하여, IPC 제어기(138A 및/또는 B)에 요청을 전송하도록 적응될 수 있다. IPC 제어기(138A 및/또는 B)를 통해 시스템 제어기(134) 및 IPC 서브시스템 사이에 보안 정책 검증 경로를 수립함으로써, 시스템 제어기(134)는 호출자 애플리케이션과 완전히 다른 경로를 통해 보안 허가들을 직접 검증할 수 있다(예로서, 정책 엔진(118)으로의 질의에 기초하여). 그러므로 질의 및 그것의 결과는 호출자 애플리케이션 또는 임의의 다른 애플리케이션 유형 코드에 의해 영향을 받거나 또는 조작될 수 없다. IPC 프로세스 자체의 보안은 보안 허가 질의의 독립성을 추가로 보장할 수 있다. 실시예들에서, 서브시스템은 오브젝트 방화벽, IPC 제어기, 및 IPC 버스를 포함할 수 있다. 실시예들에서 IPC 서브시스템은 오브젝트 방화벽, IPC 제어기, IPC 버스, 및 정책 엔진을 포함할 수 있다.
실시예들에서, 특권 코드 서비스(140)를 실행하고자 하는 애플리케이션(110)은 시스템 제어기(134)와 인터페이스함으로써 이러한 특권 코드 서비스(140) 실행 시도를 하려고 시도할 수 있다. 코드의 실행을 간단히 허용하기보다는, 시스템 제어기(134)는 IPC 버스(132)를 통해 특권 코드 서비스 실행(140)을 위한 액세스 제어를 통제하는 시스템 서비스에 대한 시스템 서비스 IPC 제어기(138B)로 요청할 수 있는 요청을 IPC 제어기(138A)로 전송할 수 있다. 이러한 서비스는 발신 애플리케이션이 요청된 특권 코드를 실행하도록 허가되는지를 결정하는 것을 용이하게 하기 위해 특권 코드 정책 엔진(118)의 액세스 결정 요청을 할 수 있다. 이러한 결정은 제한 없이 호출 애플리케이션의 아이덴티티, 디바이스 사용자의 아이덴티티, 시각, 디바이스의 물리적 위치, 현재 디바이스 구성 등을 포함하기 위해, 다양한 인자들에 기초하여 이루어질 수 있다. 시스템 호출 정책 결정의 결과의 표시는 그 후 IPC 버스(132)에 의해 시스템 제어기(134)에 연결된 것으로서 IPC 제어기들(138A 및 138B)을 통해 리턴될 수 있으며, 이것은 그런다음 결정을 강제할 수 있으며 특권 코드 서비스(140)의 실행을 허용하거나 또는 허용하지 않을 수 있다. 정책 결정에 관계없이, 실행 시도, 결정을 할 때 사용된 조건들, 및 결과 동작에 관한 정보가 사용자 및 디바이스 관리자에 의한 사용을 위해 로깅될 수 있다.
멀웨어 시스템(108)은 시스템(102)에 대한 보안을 손상시키려고 시도할 수 있다. 멀웨어 시스템(108)은 클라우드 또는 다른 네트워킹(104)을 통해 시스템(102)에 연결할 수 있다. 멀웨어 시스템(108)은 악성 소프트웨어를 시스템(102)으로 전달할 수 있다. 악성 소프트웨어는 컴퓨터 바이러스, 웜, 트로이 목마, 스파이웨어, 애드웨어, 루트킷, 또는 몇몇 다른 악성 프로그램 또는 스크립트일 수 있다. 악성 소프트웨어는 이메일, 웹페이지, 애플리케이션(110), 텍스트 메시지, SIM 카드를 통해, 또는 몇몇 다른 방식으로 시스템(102)에 전달될 수 있다.
네트워킹(104)은 클라우드-기반 네트워킹을 통해 통신할 수 있다. 실시예에서, 네트워킹(104)은 이에 제한되지 않지만, 인터넷, 인트라넷, 개인 영역 네트워크, VPN, 근거리 네트워크, 광역 네트워크, 대도시 영역 네트워크, 또는 몇몇 다른 네트워크와 같은, 네트워크를 경유하여 클라우드-기반 네트워킹을 통해 통신할 수 있다.
계속해서 도 1을 참조하여, 실시예들에서, 탈옥(jail-broken) 모바일 디바이스에 대한 특권 코드 실행에 대한 보안 및 액세스 제어 정책들을 강제하기 위한 방법들은 특권 코드를 실행하기 위해, 애플리케이션(110)에 의해 호출하는 단계; 특권 코드 정책 엔진(118)에 의해, 애플리케이션(110)이 특권 코드를 실행할 수 있는지를 결정하는 단계; 및 특권 코드 정책 엔진(118)에 의한 결정을 강제하는 단계를 포함할 수 있다. 모바일 디바이스는 예를 들면, 셀룰러 전화, MP3 플레이어, 태블릿 및 랩탑일 수 있다. 운영 시스템들(116)의 예들은, 이에 제한되지 않지만, 안드로이드, 블랙베리 OS, iOS, 심비안 OS, 윈도우 폰 및 크롬 OS를 포함한다. IPC를 사용한 프로세스들의 필터링이 구현될 수 있는 방식은 특정한 운영 시스템(116)에 의존할 수 있다. 몇몇 실시예들에서, 운영 시스템(116)은 예를 들면, iOS에서 프로세스-간 통신 대신에 URI를 사용할 수 있다.
다양한 실시예들에서 설명된 바와 같이 탈옥 모바일 디바이스는 디바이스 상에서의 운영 시스템(116)이 디바이스의 사용자가 chroot-형 제약들의 밖에서 파일들을 액세스할 수 있도록 벗어나지거나 또는 바이패스되는 디바이스일 수 있다. 예를 들면, 사용자는 애플의 앱 스토어에 대한 제 3 자 애플리케이션 시장 대안인, 시디아(Cydia)를 설치하기 위해 아이폰을 탈옥할 수 있으며, 이것은 사용자가 그 외 탈옥되지 않은 아이폰 상에서 행할 수 없을 것이다.
특권 코드는 단지 허가가 특권 코드 서비스(140)에 의해 승인된다면 액세스될 수 있는 코드일 수 있다. 예를 들면, 특권 코드는 커널 코드일 수 있다. 특권은, 예를 들면, 감독자 또는 관리자 모드에서 코드를 액세스하며 실행하는 것일 수 있다.
몇몇 실시예들에서, 애플리케이션(110)은 앵그리 버드, 스매쉬 캅스, 워즈 위드 프렌즈 또는 몇몇 다른 게임과 같은 게임일 수 있다. 애플리케이션(110)은 전화 애플리케이션, 스카이프, 웹 브라우저, 음악 플레이어 또는 몇몇 다른 유틸리티와 같은, 유틸리티일 수 있다. 몇몇 실시예들에서, 애플리케이션(110)은 트위터, ESPN ScoreCenter, 구글 번역 또는 몇몇 다른 툴과 같은, 툴일 수 있다.
몇몇 실시예들에서, 정책 엔진(118)은 애플리케이션(110)에 의해, 특권 코드를 실행하기 위한 요청이 실행될 수 있는지를 결정한다. 결정은 호출을 한 애플리케이션(110)의 유형, 호출을 한 애플리케이션(110)의 명칭, 호출을 한 애플리케이션(110)의 위치, 시스템 콘텍스트, 디바이스 위치, 현재 날짜, 현재 시간, 디바이스 사용자의 아이덴티티, 특권 코드의 유형, 호출의 콘텐트 또는 몇몇 다른 기준들 중 하나 이상에 기초할 수 있다.
정책 엔진(118)의 결정을 강제하는 것은 정책(130)에 대해 결정을 비교하는 것을 포함할 수 있다. 정책 엔진(118)은 하나 이상의 정책들(130)에 기초하여 결정을 강제할 수 있다. 정책들(130)은 예를 들면, 시스템 정책들, 애플리케이션 정책들, 및 다른 정책들을 포함할 수 있다. 정책 엔진(118)은 호출을 평가하기 위해 하나 이상의 정책들(130)을 사용할 수 있다. 몇몇 실시예들에서, 정책 엔진(118)은 또한, 호출의 평가에 기초하여, 호출에 의해 전송될 임의의 데이터가 허가되는지를 결정할 수 있다.
실시예들에서, 모바일 디바이스들 상에서의 특권 코드 실행에 대한 보안 및 액세스 제어 정책들을 강제하기 위한 방법들은, 특권 코드를 실행하기 위해, 애플리케이션(110)에 의해 시스템 제어기(134)로 호출하는 단계; 특권 코드를 액세스하기 위한 허가를 위해, 시스템 제어기(134)에 의해 프로세스-간 통신 제어기(138A)로 요청하는 단계; 시스템 제어기(134)에 의해, 애플리케이션(110)이 특권 코드를 액세스하도록 허용되는지에 대한 결정을 특권 코드 정책 엔진(118)으로 요청하는 단계; 특권 코드 정책 엔진(118)에 의해, 애플리케이션(110)이 특권 코드를 실행할 수 있는지를 결정하는 단계; 및 시스템 제어기(134)에 의해, 특권 코드 정책 엔진(118)에 의한 결정을 강제하는 단계를 포함할 수 있다. 모바일 디바이스는 예를 들면, 셀룰러 전화, MP3 플레이어, 태블릿 및 랩탑일 수 있다. 운영 시스템들(116)의 예들은, 이에 제한되지 않지만, 안드로이드, 블랙베리 OS, iOS, 심비안 OS, 윈도우 폰 및 크롬 OS를 포함한다. IPC를 사용한 프로세스들의 필터링이 구현될 수 있는 방식은 특정한 운영 시스템(116)에 의존할 수 있다. 몇몇 실시예들에서, 운영 시스템(116)은 예를 들면, iOS에서 프로세스-간 통신 대신에 URI를 사용할 수 있다.
다양한 실시예들에서 설명된 바와 같이 탈옥 모바일 디바이스는 디바이스 상에서의 운영 시스템(116)이 디바이스의 사용자가 chroot-형 제약들의 밖에서 파일들을 액세스할 수 있도록 벗어나지거나 또는 바이패스되는 디바이스일 수 있다. 예를 들면, 사용자는 애플의 앱 스토어에 대한 제 3 자 애플리케이션 시장 대안인, 시디아(Cydia)를 설치하기 위해 아이폰을 탈옥할 수 있다.
특권 코드는 단지 허가가 특권 코드 서비스(140)에 의해 승인된다면 액세스될 수 있는 코드일 수 있다. 예를 들면, 특권 코드는 커널 코드일 수 있다. 특권은, 예를 들면, 감독자 또는 관리자 모드에서 코드를 액세스하며 실행하는 것일 수 있다.
몇몇 실시예들에서, 애플리케이션(110)은 앵그리 버드, 스매쉬 캅스, 워즈 위드 프렌즈 또는 몇몇 다른 게임과 같은 게임일 수 있다. 애플리케이션(110)은 전화 애플리케이션, 스카이프, 웹 브라우저, 음악 플레이어 또는 몇몇 다른 유틸리티와 같은, 유틸리티일 수 있다. 몇몇 실시예들에서, 애플리케이션(110)은 트위터, ESPN ScoreCenter, 구글 번역 또는 몇몇 다른 툴과 같은, 툴일 수 있다.
시스템 제어기(134)는, 애플리케이션(110)으로부터의 특권 코드를 실행하기 위한 호출에 응답하여, 특권 코드를 액세스하기 위한 허가를 요청할 수 있다. 종래 기술에서, 시스템 제어기(134)는 애플리케이션(110)으로부터의 호출에 응답하여 특권 코드를 실행할 것이다. 그러나, 여기에서, 시스템 제어기(134)는 프로세스-간 통신 제어기(138A)로부터 이러한 특권 코드를 액세스하기 위해 허가를 요청할 수 있다. 프로세스-간 통신 제어기(138A)는, 시스템 제어기(134)로부터의 요청에 응답하여, 요청을 정책 엔진(118)으로 전달할 수 있다. 몇몇 실시예들에서, 프로세스-간 통신 제어기(138A)는, 시스템 제어기(134)로부터의 요청에 응답하여, 오브젝트 방화벽(144)을 통해 요청을 정책 엔진(118)으로 전달할 수 있다.
몇몇 실시예들에서, 정책 엔진(118)은 애플리케이션(110)에 의해, 특권 코드를 실행하기 위한 요청이 실행될 수 있는지를 결정한다. 몇몇 실시예들에서, 정책 엔진(118)은 특권 코드 정책 엔진일 수 있다. 결정은 호출을 한 애플리케이션(110)의 유형, 호출을 한 애플리케이션(110)의 명칭, 호출을 한 애플리케이션(110)의 위치, 시스템 콘텍스트, 디바이스 위치, 현재 날짜, 현재 시간, 디바이스 사용자의 아이덴티티, 특권 코드의 유형, 호출의 콘텐트 또는 몇몇 다른 기준들 중 하나 이상에 기초할 수 있다.
정책 엔진(118)의 결정을 강제하는 것은 정책(130)에 대해 결정을 비교하는 것을 포함할 수 있다. 정책 엔진(118)은 하나 이상의 정책들(130)에 기초하여 결정을 강제할 수 있다. 정책들(130)은 예를 들면, 시스템 정책들, 애플리케이션 정책들, 및 다른 정책들을 포함할 수 있다. 정책 엔진(118)은 호출을 평가하기 위해 하나 이상의 정책들(130)을 사용할 수 있다. 몇몇 실시예들에서, 정책 엔진(118)은 또한, 호출의 평가에 기초하여, 호출에 의해 전송될 임의의 데이터가 허가되는지를 결정할 수 있다.
본 발명의 이점들 중 하나는, 제한 없이, 호출 애플리케이션(110)이 액세스 제어에 대한 이들 결정들을 할 책임이 있는 보안 정책 기반시설을 알 필요가 없다는 사실을 포함할 수 있다. 특히, 애플리케이션(110)이 동작하는 실행 환경은 애플리케이션 개발자에게 투명한 방식으로 이들 피처들을 지원하기 위해 계장화될 수 있다. 이것은 탈옥 툴들을 사용하여 동작하는 기존의 앱들과의 끊김 없는 역 호환성을 허용할 수 있으며 이러한 기반시설을 레버리징하는 새로운 애플리케이션들(110)에 대한 미래 애플리케이션 프로그래머 인터페이스들의 개발에 대한 요구가 없다.
모바일 디바이스 보안을 개선하기 위해 신뢰 프로세서 구역을 사용하는 하나의 메커니즘은 Android™ ADB와 같은, 디바이스의 전문화된 디버깅 인터페이스들 및/또는 원격 감사 툴들을 신뢰 구역으로 위치시키는 것일 수 있다. 이들 디버깅 인터페이스들 및 툴들은 모바일 디바이스의 프로세스들, 파일 시스템들, 애플리케이션들, 및 다른 구성요소들 중 하나 이상을 감사하고, 구성하거나, 또는 제어하기 위해 USB, 무선, 또는 다른 유선 통신을 통해 메커니즘들을 제공할 수 있다. 전체 전문화된 디버깅 인터페이스 및/또는 툴들을 신뢰구역으로 위치시킴으로써, 원격 컴퓨터가 디바이스의 무결성을 감사하거나 또는 원격으로 제공된 명령들이 디바이스 상에서의 정확한 및 신뢰된 디버깅 소프트웨어에 의해 핸들링된다는 신뢰를 갖고 그것의 실행 또는 구성을 안전하게 제어하기 위해 사용될 수 있다. 대안적으로, 이들 전문화된 디버깅 요소들의 부분들은 신뢰 구역(예로서, 파일 시스템 구성요소들 및 USB I/O 구성요소들)으로 위치될 수 있다.
모바일 디바이스 보안을 개선하기 위해 신뢰 프로세서 구역을 사용하기 위한 또 다른 메커니즘은 디바이스의 프로세스-간 통신 메커니즘을 신뢰 구역으로 위치시키는 것일 수 있다. 이러한 프로세스-간 통신 메커니즘은 모바일 디바이스 상에서 사용자-공간 애플리케이션들(예로서, 운영 시스템에 있지 않은) 및 서비스들(예로서, 사용자-공간에서 구동하는 시스템 서비스들을 포함한) 사이에서의 통신을 통제하도록 의도된다. 일단 프로세스-간 통신 메커니즘이 신뢰 프로세서 구역으로 위치된다면, 사용자-공간 애플리케이션들 및 디바이스 상에서의 서비스들 사이에서의 통신의 제어는, 신뢰 구역에서 실행하는 소프트웨어가 조작이 없을 것이기 때문에(예로서, 신뢰 구역에서 실행하는 소프트웨어는 모든 다른 구역들에서의 소프트웨어에 독립적으로 실행할 수 있기 때문에) 보호되는 것으로 고려될 수 있다. 게다가, 신뢰 구역에 의해 안전하게 되는 프로세스-간 통신 메커니즘은 사용자-공간 애플리케이션들 및 서비스들 사이에서의 통신을 인터셉트하고, 검사하고, 차단하고, 필터링하거나, 또는 그 외 적응시킴으로써 디바이스 상에서의 보조 보안 제어 포인트로서 사용될 수 있다. 프로세스-간 통신 메커니즘이 신뢰 프로세서 구역 내에 있기 때문에, 그것은 애플리케이션/서비스-간 통신에 대한 제어의 보안 포인트로 고려될 수 있다.
데몬 사용자-공간 프로세스들과 같은, 강화된 허가들을 가진 보안 프로세스들은 디바이스 상에서 다른 프로세스들의 실행을 유발하며 제어하기 위해 사용될 수 있다. 예를 들면, Android™ 상에서, Zygote는 애플리케이션들에 대한 프로세스들의 허가들을 런칭하며 적응시킬 책임이 있다. 실시예들에서, 이들 보안 데몬들은 그것들이 다른 프로세스들을 악의적으로 런칭하고, 구성하거나 또는 제어하기 위해 조작될 수 없음을 보장하기 위해 신뢰 프로세서 구역의 안쪽에서 이동될 수 있다. 뿐만 아니라, 보안 데몬이 보안 프로세스-간 통신 메커니즘과 함께 신뢰 프로세서 구역 내에서 이동될 때, 다른 사용자-공간 프로세스들이 이러한 데몬 프로세스와 안전하게 상호 작용할 수 있다.
사용자-공간 애플리케이션 허가들, 코드, 및 구성은 통상적으로 모바일 디바이스 상에서 패키지 관리기에 의해 관리될 수 있다. 패키지 관리기는 애플리케이션 아티팩트들, 구성, 및 허가들에 관한 질의들을 설치하고, 구성하고, 설치 해제하며, 그것에 응답한다. 모바일 디바이스 상에서의 패키지 관리기가 손상된다면, 공격자는 애플리케이션 허가들, 구성 설정들, 코드 위치들, 또는 다른 중대한 파라미터들을 거짓으로 보고하기 위해 패키지 관리기를 사용할 수 있다. 실시예들에서, 이것은 패키지 관리기로 하여금 패키지 관리기 및 그것의 기능들의 모두(예로서, 패키지 설치, 구성, 설치 해제, 애플리케이션 정보 질의 등)가 조작되지 않음을 보장하기 위해 신뢰 프로세서 구역의 안쪽에서 이동되도록 허용할 수 있다. 패키지 관리기(예로서, 안드로이드 패키지 관리기 서비스 등)를 신뢰 프로세서 구역으로 이동시킴으로써, 이들 중대한 애플리케이션 패키징 서비스들이 보호될 수 있다.
Dalvik Virtual Machine™과 같은, 가상 머신들은 모바일 디바이스들 상에서 코드를 실행하기 위해 사용된다. 가상 머신들이 주요 애플리케이션 코드의 실행을 제어하므로, 그것들이 조작되었다면, 애플리케이션으로 하여금 임의 코드를 구동하도록 허용하는 심각한 보안 허점들이 열리게 될 수 있다. 전체 가상 머신을 신뢰 프로세서 구역으로 이동시킴으로써, 디바이스는 가상 머신 실행이 손상되지 않음을 보장할 수 있다. 마찬가지로, 지시 디스패칭, 가상 디스패치 테이블들(virtual dispatch tables), 소켓 및 I/O 코드, 파일 시스템 상호 작용 코드, 클래스 바이트코드 캐시들, 심볼 테이블들, 또는 클래스 로딩 메커니즘들과 같은, Dalvik Virtual Machine™의 코어 부분들이 신뢰 구역으로 이동될지라도, 그것은 이들 중대한 구성요소들이 손상되지 않음을 보장할 수 있다.
모바일 디바이스 상에서의 많은 구성 기능들은 XML을 판독하고, 관계 데이터베이스(예로서, SQLite)를 질의하거나, 또는 다른 구성 파일들을 로딩하며 그 후 시스템 실행 파라미터들을 변경하는 것을 통해 동작한다. 예를 들면, XML 또는 자바 바이트코드 파일들(예로서, Android Manifest.dex/class/java/xml)은 애플리케이션 사용자 ID들 대 리눅스 사용자 ID들 및 허가 그룹들의 매핑들을 저장하기 위해 사용될 수 있다. 이들 구성 데이터 소스들의 I/O, 판독, 및 해석을 신뢰 프로세서 구역으로 이동시킴으로써, 모바일 디바이스는 이들 정보 소스들이 출처 및 무결성에 대해 암호학적으로 적절하게 검사되고, 적절히 판독되며 해석되며, 그것들의 기능을 부정확하게 수행하기 위해 변경되지 않는다는 것을 보장할 수 있다. 관계 데이터베이스 구성요소들, 구성 로딩 루틴들(예로서, Android LayoutInflater, Manifest reader 등)은 이들 코어 기능들을 보호하기 위해 필요에 따라 신뢰 구역으로 이동될 수 있다.
기업들은 모바일 디바이스들의 사용/보안을 통제하는 정책들을 제어하기 위해 모바일 디바이스 관리 시스템들을 사용한다. 모바일 디바이스 관리 시스템이 손상된다면, 공격자는 민감한 데이터를 훔치거나 또는 다른 비도덕적인 동작들을 수행하기 위해 이들 모바일 디바이스 관리 시스템들을 사용할 수 있다. 모바일 디바이스 관리 시스템의 하나 이상의 부분들을 신뢰 프로세서 구역의 안쪽으로 이동시킴으로써, 그것은 그것들이 손상되지 않음을 보장할 수 있다. 일단 신뢰 프로세서 구역의 안쪽에 있다면, 이들 모바일 디바이스 관리 기능들은 안전하며 공격자들에 의해 이용 가능하지 않은 것으로 고려될 수 있다.
디바이스 상에서의 사용자 입력은 하드웨어로부터 터치 이벤트들을 수신하고; 이들 이벤트들을 움직임, 키 누름들, 또는 다른 사용자 입력으로 변환하고; 공유 메모리 또는 프로세스-간 통신을 통해 이벤트들을 타겟 프로세스로 디스패치하며; 이벤트들을 애플리케이션 소프트웨어 구성요소들로 전달하기 위해 터치 스크린 소프트웨어 구성요소를 레버리징할 수 있다. 이들 터치 스크린 소프트웨어 구성요소들이 조작된다면, 그것들은 핀 번호들, 뱅킹 정보, 및 다른 보안 크리덴셜들을 빼돌리기 위해 공격 벡터로서 사용될 수 있다. 본 출원에서 설명된 신뢰 구역 방법들 및 시스템들은 소프트웨어 터치 스크린 이벤트 디스패칭, 공유 메모리 판독/기록, 프로세스-간 통신 디스패치, 및 애플리케이션-내 디스패치 코드 중 하나 이상의 부분들을 신뢰 프로세서 구역으로 이동시킴으로써 모바일 디바이스들에 대한 이러한 위협에 대응할 수 있다. 게다가, 신뢰 프로세서 구역으로 이동된 부분들은 신뢰 프로세서 구역으로의, 가상 온-스크린 키보드 및/또는 그것의 구성 데이터를 제어하기 위한 코드와 같은, 소프트웨어 입력 방법을 포함할 수 있다.
지오-로컬라이제이션, 근접성 검출, 위치 추정, 또는 근접성 인증 구성요소가 디바이스의 위치를 결정하거나 또는 확인하기 위해 사용될 수 있다. 그러나, 이들 메커니즘들은 공격될 수 있으며 및/또는 디바이스에 대한 애플리케이션들을 만들기 위해 도용된 결과는 디바이스의 실제 위치와 상이한 위치를 검출한다. 이것은 정확한 지역화(예로서, 자동차 내비게이션)에 의존하는 위치-기반 정책들 또는 공격 시스템들을 피하기 위해 사용될 수 있다. 이러한 가능한 이용 벡터를 막기 위해, 이들 시스템들 중 하나 이상이 조작을 방지하기 위해 신뢰 프로세서 구역으로 이동될 수 있다.
모바일 디바이스 소프트웨어 및 데이터 보안을 강화하기 위한 신뢰 구역의 사용의 예들이 본 출원에서 설명되었지만, 고려되며 그러므로 본 출원에 포함되는 이들 예들 외에 신뢰 구역의 다른 유익한 사용들이 있을 수 있다. 또한, ARM Limited에 의한 TrustZone이 예시적인 신뢰 구역 설비로서 사용되지만, 암호 또는 다른 조작-방지 수단을 통한 소프트웨어 및/또는 데이터의 강력한 보호를 가진 신뢰 구역을 제공하는 임의의 설비가 본 출원에서 설명된 방법들, 시스템들, 및 애플리케이션들과 함께 사용될 수 있다.
이제 도 9를 참조하여, 모바일 디바이스 IPC 버스(132)를 가상으로 확대하는 것은 이러한 IPC 버스(132)를, 또한 “신뢰 구역(trusted zone)”으로서 불리울 수 있는, 프로세서 신뢰 코드 구역(146)으로 확대하는 것을 포함할 수 있다. 이러한 가상 확대에 의해, IPC 버스(132)를 통해 액세스 가능한 애플리케이션들(110A-B)(애플리케이션들(110)과 대체로 유사한) 및 서비스들은 신뢰 구역(146)에서 실행될 수 있으며, 그에 의해 신뢰 애플리케이션들(908A-B)일 수 있다. 그 결과, 일반 프로세서 구역(902)에서 애플리케이션들(110A-B)은 끊김 없는 방식으로 강력한 IPC 메커니즘들을 통해 신뢰 애플리케이션들(908A-B)과 통신할 수 있다. 예를 들면, 하나의 애플리케이션(110A)은 일반 프로세서 구역(902)에서의 IPC 버스(132)에 의해 신뢰 IPC 버스(910)로, 하드웨어 버스(904)를 통해 신뢰 구역(146)에서 실행하는 애플리케이션(908A)의 제 2, 신뢰 인스턴스로 데이터를 전달할 수 있다. 또한, IPC 메커니즘들은 IPC 버스(132)를 통해 일반 구역 애플리케이션(110A)에 의한 앱들 또는 서비스들에 대한 요청들이 요청된 앱(예로서, 908A) 또는 서비스의 신뢰 버전들로 자동으로 리다이렉트될 수 있도록 적응될 수 있다.
이제 도 6을 참조하여, 실시예들에서, 복수의 애플리케이션들(110)은 복수의 가상 머신들(112)의 안쪽에서 상호 작용적으로 실행할 수 있다. 네이티브 라이브러리들(114)에서 코드를 로딩하고, 링킹하며, 실행하기 위해, 애플리케이션들(110)은 라이브러리 요청들(602)을 그것들 각각의 가상 머신들(112)로 전송할 수 있다. 가상 머신들(112)은 요청(602)이 허용되어야 하는지를 결정하기 위해 정책 엔진(118)과 통신할 수 있다(604, 608). 가상 머신(112)은 또한 요청(602)이 허용되는지를 결정하기 위해 로컬 정책을 사용할 수 있다. 요청(602)이 허용된다면, 가상 머신(112)은 운영 시스템(116)과 상호 작용하는 것(614, 618)을 용이하게 하는 네이티브 라이브러리들(114)로의 애플리케이션(110) 액세스(610, 612)를 용이하게 할 수 있다. 가상 머신들(112)은 라이브러리 액세스 허용(620)을 애플리케이션(110)으로 시그널링할 수 있다.
정책 엔진(118)은 정책 저장소(628)를 관리할 수 있는 정책 서버(106)와 정책 요청들(622, 624)을 선택적으로 교환할 수 있다. 정책 서버(106)는 블랙/화이트 리스트들(120), 서명 및/또는 명명(122), 체크섬/라이브러리 분석들(124), 애플리케이션들에 대한 허가들, 프로세스들, 사용자들, 그룹들(126), 및 다른 정책 검사들(128)과 같은 정책 관점들을 결정하기 위해 정책 저장소 액세스(630)를 수행함으로써 정책 엔진(118)으로부터 정책 요청들(622)을 제공할 수 있다. 정책 서버(106)는 정책 저장소 응답들(632)을 수신하며 그 자체는 정책 요청 응답(624)을 정책 엔진(118)으로 제공할 수 있다. 대안적으로, 정책 엔진(118)은 정책 엔진(118)에게 알려져 있거나 또는 그것에 의해 액세스 가능한 정책 정보에 기초하여 네이티브 라이브러리들(114)의 애플리케이션(110) 액세스에 관한 가상 머신들(112) 조회들을 제공할 수 있다.
이제 도 7을 참조하여, 실시예에서, 가상 머신들(112)은 IPC, 유닉스 도메인 소켓들, 또는 공유 메모리와 같은, 로컬 교차-프로세스 통신 메커니즘들(702)을 사용하여 정책 엔진(118)과 통신할 수 있다. 교차-프로세스 통신 메커니즘들(702)은 승인을 위해 애플리케이션들(110)로부터 정책 엔진(118)으로 가상 머신(112)에 의해 수신된 네이티브 라이브러리 요청들(602)에 대한 정보를 전송하기 위해, 또는 로컬 승인 결정들을 하도록 정책 또는 규칙 데이터를 수신하기 위해 사용될 수 있다. 실시예들에서, 교차-프로세스 통신 메커니즘들(702)은 애플리케이션들(110)에서 정책 엔진(118)으로 네이티브 라이브러리 요청(602)을 전송하기 위해 사용될 수 있다.
이제 도 2를 참조하여, 복수의 애플리케이션들(110)은 공통 데이터 버스(202)를 통해 서로 및 시스템 서비스들과 상호 작용할 수 있다. 서브시스템들 사이에서 통신하기 위해, 소스 애플리케이션은 원격 프로시저 호출(204)을 실행할 수 있으며 이러한 요청은 그 후 데이터 버스(202)로 전달될 수 있다. 데이터 버스는 그 후 상기 호출(218)을 정책 엔진(118)으로 전달함으로써 원격 프로시저 호출에 대한 정책 확인을 요청할 수 있다. 원격 프로시저 호출 및 그것의 저장된 정책의 콘텍스트를 사용하여, 정책 엔진(118)은 거래를 승인하거나 또는 부인하며 이 결과(214)를 다시 데이터 버스(202)로 전달할 수 있다. 이러한 원격 프로시저 호출이 시스템 서비스를 수반한다면, 데이터 버스는 요청(208)을 운영 시스템(116)으로 전달할 수 있다. 운영 시스템(116)은 원격 프로시저 호출을 실행하며 결과(210)를 데이터 버스(202)를 통해 소스 애플리케이션(110)으로 리턴할 수 있다. 대신에 이러한 원격 프로시저 호출이 또 다른 애플리케이션과의 상호 작용을 수반한다면, 데이터 버스는 호출(212)을 목적지 애플리케이션(110)으로 전달할 수 있다. 상기 원격 프로시저 호출의 결과는 데이터 버스(202)를 통해 소스 애플리케이션(110)으로 리턴될 수 있다.
보다 상세히, 계속해서 도 2를 참조하여, 데이터 버스(202)는 소스 애플리케이션(110)의 아이덴티티를 포함하기 위해, 수신된 원격 프로시저 호출에 특정적인 콘텍스트를 생성할 책임이 있을 수 있다. 정책 엔진(118)은 현재 날짜 및 시간, 디바이스 위치, 및 디바이스 사용자의 아이덴티티를 포함하기 위해 시스템-특정 콘텍스트를 생성할 책임이 있을 수 있다. 정책 엔진(118)은 그 후 이용 가능한 시스템 정책들, 애플리케이션 정책들, 시스템 콘텍스트, 애플리케이션 콘텍스트, 및 원격 프로시저 호출 자체의 콘텐트에 따라 원격 프로시저 호출(remote procedure call)을 평가할 수 있다. 정책 평가의 결과에 기초하여, 정책 엔진(118)은 그 후 응답을 데이터 버스(202)를 통해 소스 애플리케이션(110)으로 리턴할 수 있다.
보다 상세히, 계속해서 도 2에서의 본 발명을 참조하여, 시스템은 선택적 정책 서버(106)를 통해 지원될 수 있다. 이 서버는 원격으로 위치되며 디바이스의 네트워크 연결을 통해 액세스될 수 있다. 정책 관리자들은 시스템 및 애플리케이션 정책들을 정책 서버(106)로 입력할 수 있다. 정책 서버는 그 후 이들 정책들을 그것들이 관리하는 디바이스들의 정책 엔진들(118)로 푸시(push)(220)할 수 있다. 정책 엔진(118)은 또한 감사 및 회계의 목적들을 위해 정책 통계들 및 위반들을 정책 서버(106)로 보고할 수 있다(222).
실시예들에서, 애플리케이션들(110)은 스마트폰 상에 모듈식으로 설치되며 원격 프로시저 호출 서비스, 프로토콜 핸들러, 시스템 호출 테이블, 또는 임의의 다른 기능 또는 오브젝트 브로커로서 인스턴스화될 수 있는프로세스-간 통신을 공유 데이터 버스(202)를 통해 수행할 수 있다. 정책 엔진(118)은 그에 의해 프로세스-간 통신 요청들이 이용 가능한 정책들에 대해 평가될 수 있는 이러한 브로커 서비스로의 확대들로서 인스턴스화될 수 있다. 이들 요청들은 정책 평가의 결과에 기초하여 승인되거나 또는 거절될 수 있다.
이제 도 3으로 가면, 시스템 동작이 시작할 수 있다(302). 사용자, 애플리케이션, 또는 서비스는 애플리케이션들 사이에서의 데이터 전송이 발생해야 함을 결정할 수 있으며 데이터 소스는 상기 데이터를 획득하며 준비할 수 있다(304). 데이터 전송 서비스는 데이터의 민감도 또는 데이터의 기원과 같은, 데이터 전송(308)과 연관된 관련 콘텍스트를 획득하거나 또는 생성할 수 있다. 데이터 및 그것의 콘텍스트는 그 후 전송이 허가되는지 여부를 결정하기 위해 복수의 정책들(310)에 따라 평가될 수 있다(312). 허가되지 않는다면, 데이터 전송 서비스는 전송을 개시한 사용자, 애플리케이션, 또는 서비스로 실패를 보고할 수 있다(314). 허가된다면, 데이터 콘텍스트는 전송의 결과인 임의의 관련 콘텍스트 변화들을 포함하기 위해 업데이트될 수 있다(318). 데이터는 그 후 목적지(320)로 전송될 수 있으며 전송을 개시한 사용자, 애플리케이션, 또는 서비스로 성공이 보고될 수 있다(322).
데이터 전송 허가는 전송(320) 후 적절한 데이터 콘텍스트가 획득되고(308) 유지됨을 보장함으로써 획득될 수 있다. 전송이 허가되는지(312)를 평가하기 위해 사용된 정책들은 허가 결정들을 하기 위해 데이터, 데이터의 콘텍스트, 및 전체 시스템의 콘텍스트를 사용할 수 있다. 이러한 프로세스의 실시예들은 민감한 데이터가 상기 데이터를 수신하도록 허가되지 않은 애플리케이션으로 전송되지 않으며, 및/또는 데이터가 단지 서로 사이에서 정보를 전송 및 수신하도록 허가되는 애플리케이션들 및/또는 개개인들 사이에서만 전송됨을 보장할 수 있다.
이 프로세스의 특정 인스턴스화가 도 2에 도시될 수 있다. 애플리케이션(110)은 또 다른 애플리케이션 또는 서비스로부터 정보를 요청할 수 있다. 이러한 데이터는 데이터 버스(202)에 의해 수신될 수 있으며, 이것은 그것이 정책 평가를 겪을 수 있는 정책 엔진(118)으로 그것을 전송할 수 있다(218). 결정은 정책 엔진(118)에 의해 이루어질 수 있으며 데이터 버스(202)로 리턴될 수 있다(214). 전송이 허가되지 않았다면, 데이터 버스는 실패를 요청 애플리케이션(110)으로 보고할 수 있다(212). 전송이 허가된다면, 데이터 버스는 데이터 콘텍스트를 업데이트하며 데이터 및 콘텍스트를 목적지 애플리케이션으로 전송할 수 있다(212). 성공이 보고될 수 있다.
실시예들의 이점들은, 제한 없이, 모든 원격 프로시저 호출들, 프로세스-간 통신, 및 모바일 디바이스들 상에서 발생하는 시스템 호출들에 대한 엄격하고, 상세한 보안 정책들을 강제하기 위한 능력을 포함한다. 시스템-와이드 정책 엔진을 구현함으로써, 디바이스 관리자들은 애플리케이션들이 다른 잠재적으로 악성 애플리케이션들에 대해 스스로를 보다 쉽게 보호할 수 있도록 허용하는 정책들을 배치할 수 있다. 데이터 출처에 적용될 때, 모바일 디바이스 내의 모든 데이터의 움직임은 데이터의 소스, 목적지, 및 민감도와 같은 파라미터들에 기초하여 허가될 수 있다. 이것은 공통 정책 세트 없이 개개의 트랜잭션들을 개별적으로 승인/부인하기 위해 애플리케이션들에 의존한 종래 기술에 비해 상당한 이점들을 제공한다.
이제 도 5를 참조하여, 애플리케이션들(110A 및/또는 B)은 프로세스-간 통신이 가능한 오브젝트들(502A-D)의 모음을 포함할 수 있다. 이들 오브젝트들은 IPC 버스(132)로 직접 연결할 수 있지만, 실시예들에서, 그것들은 방화벽들(504A, B, C, 및/또는 D) 및/또는 제어기들(138A 및/또는 B)을 사용하여 중재될 수 있다. 구체적으로, 각각의 오브젝트(예로서, 502A)는 그것을 IPC 버스(132)에 연결하는 IPC 제어기(138A)에 연결할 수 있는 독립적인 IPC 방화벽(504A)을 가질 수 있다. 정책 엔진(118)은 디바이스 정책들을 구현하기 위해 제어기들 및 방화벽들과 통신할 수 있다. 실시예들에서, 묘사된 요소들 외에 부가적인 오브젝트들 및/또는 방화벽들이 있을 수 있다.
정책 엔진(118)은 복수의 IPC 오브젝트 방화벽들(504A-D)의 특정 설정들로 고-레벨 방화벽 규칙들을 변환할 수 있다. 실시예들에서, 새로운 IPC-가능 오브젝트들(502A, B, C, 및/또는 D)이 생성됨에 따라, 각각의 프로세스에서의 로컬 IPC 제어기(138A 및/또는 B)가 필요에 따라 IPC-가능 오브젝트들(502A-D)로 하나 이상의 IPC 오브젝트 방화벽들(504A-D)을 설치할 수 있다.
애플리케이션(110A)은 오브젝트(예로서, 502A)로부터 제 2 애플리케이션(110B)에서의 제 2 오브젝트(예로서, 502D)로 프로세스-간 통신 호출을 개시할 수 있다. 선택적으로, 제 1 애플리케이션 상에서의 IPC 오브젝트 방화벽(504A)은 아웃바운드 IPC 호출이 현재 IPC 방화벽 규칙들에 기초하여 허용되는지를 결정할 수 있다. 프로세스-간 통신 호출은 IPC 버스(132)를 통해 제 2 애플리케이션(110B) IPC 제어기(138B)로 전송될 수 있다. IPC 제어기(138B)는 제 2 오브젝트의 IPC 방화벽(504D)으로 IPC 호출을 전송할 수 있다. 제 2 오브젝트의 IPC 방화벽(504D)은 IPC 방화벽 규칙들, 호출의 타겟 오브젝트(502D), 호출을 제공받은 데이터, 타겟 오브젝트(502D)의 현재 상태, 및 타겟 애플리케이션(110B)의 현재 상태에 기초하여 액세스 결정을 할 수 있다.
타겟 애플리케이션(110B)의 타겟 오브젝트(502D)의 IPC 방화벽(504D)에 의한 IPC 호출의 프로세싱은 다음 중 임의의 것을 수반할 수 있다. 타겟 오브젝트 IPC 방화벽(504D)은 타겟 오브젝트(502D)로의 IPC 호출을 차단할 수 있다. 타겟 오브젝트 IPC 방화벽(504D)은 타겟 오브젝트(502D)로의 호출을 갖고 전송된 데이터의 콘텐트들을 수정할 수 있다. 타겟 오브젝트 IPC 방화벽(504D)은 프로세스-간 통신 호출에 응답하여 타겟 오브젝트(502D)로부터 개시 오브젝트(502A)로 전송된 데이터의 리턴 값을 수정할 수 있다. 타겟 오브젝트 IPC 방화벽(504D)은 IPC 호출의 타겟 오브젝트(502D)를 변경할 수 있다. 타겟 오브젝트 IPC 방화벽(504D)은 호출을 로깅할 수 있다. 타겟 오브젝트 IPC 방화벽(504D)은 하나 이상의 IPC 방화벽 규칙들을 변경하거나 또는 IPC 방화벽 규칙들을 부가/제거할 수 있다.
IPC 호출이 개시 오브젝트(502A)로 리턴할 때, 개시 오브젝트의 IPC 방화벽(504A)은 IPC 방화벽 규칙들, 호출의 타겟 오브젝트, 호출을 제공받은 데이터, 호출의 리턴 값에 제공된 데이터, 개시 오브젝트(502A)의 현재 상태, 및 개시 애플리케이션(110A)의 현재 상태 중 하나 이상에 기초하여, IPC 호출을 어떻게 프로세싱할지를 결정할 수 있다. 프로세싱은 다음 중 임의의 하나 이상을 포함할 수 있다: 개시 오브젝트(502A)는 진행하기보다는 예외를 던질 수 있다; 개시 오브젝트 방화벽(504A)은 IPC 호출의 리턴 값을 수정할 수 있다; 개시 오브젝트 방화벽(504A)은 개시 오브젝트(502A) 또는 다른 오브젝트(예로서, 502B)로 부가적인 IPC 호출들을 전송할 수 있다; 개시 오브젝트 방화벽(504A)은 하나 이상의 IPC 방화벽 규칙들을 수정하거나 또는 IPC 방화벽 규칙들을 부가/제거할 수 있다.
본 실시예들의 이점은, 제한 없이, 모바일 디바이스들 상에서 발생하는 모든 IPC들에 대한, 엄격하고, 상세한 보안 정책들을 강제하기 위한 능력을 포함할 수 있다. 시스템-와이드 정책 엔진을 구현함으로써, 디바이스 관리자들은 애플리케이션들이 다른 잠재적으로 악성 애플리케이션들에 대해 스스로를 보다 쉽게 보호하도록 허용하는 정책들을 배치할 수 있다. IPC 방화벽으로서 구현될 때, 본 발명은 넓은 범위의 시스템 정책들을 강제할 수 있는 효율적인, 확장 가능한 방식으로 정책 강제를 달성할 수 있다.
실시예들에서, 이제 도 4를 참조하여, 멀웨어 위협들을 처리하기 위한 시스템 동작의 실시예가 시작된다(402). 애플리케이션은 시스템 호출이 발생해야 함을 결정할 수 있으며 애플리케이션은 시스템 호출을 한다(404). 호출 핸들러는 애플리케이션의 소스, 공개자, 또는 의도된 목적과 같은, 애플리케이션과 연관된 관련 콘텍스트를 획득하거나 또는 생성할 수 있다(408). 시스템 호출 및 그것의 콘텍스트는 그 후 시스템 호출이 알려진 악성 서명의 부분인지 여부를 결정하기 위해 복수의 정책들(410)에 따라 평가될 수 있다(412). 알려진 악성 서명의 부분이거나 또는 허가되지 않았다면, 호출 핸들러는 애플리케이션에 실패를, 디바이스 관리자(414)에 멀웨어의 존재를 보고할 수 있으며, 애플리케이션을 디스에이블(disable)시킬 수 있다(418). 허가되었거나, 또는 알려진 멀웨어 서명의 부분이 아니면, 애플리케이션 콘텍스트는 시스템 호출의 결과인 임의의 관련 콘텍스트 변화들을 포함하기 위해 업데이트될 수 있다(420). 시스템 호출이 그 후 실행될 수 있으며(422) 성공이 애플리케이션으로 보고될 수 있다(424).
시스템 호출 허가는 전송 후 적절한 애플리케이션 콘텍스트가 획득되며(408) 업데이트됨을(420) 보장함으로써 획득될 수 있다. 시스템 호출이 허가되는지(410)를 평가하기 위해 사용된 정책들은 허가 결정들을 하기 위해 호출, 애플리케이션의 콘텍스트, 및 전체 시스템의 콘텍스트를 사용할 수 있다. 다양한 실시예들이 디바이스 관리자들로 하여금 알려진 시스템 호출 패턴들 및 애플리케이션 콘텍스트에 기초하여 멀웨어를 식별하며 디스에이블시킬 수 있는 디바이스들로 정책들을 푸시하도록 허용할 수 있다.
이 프로세스의 특정 인스턴스화가 도 2에 도시될 수 있다. 애플리케이션(110)은 시스템 호출의 실행을 요청할 수 있다. 이러한 호출은 데이터 버스(202)에 의해 수신될 수 있으며, 이것은 정책 평가를 겪을 수 있는 정책 엔진(118)으로 그것을 전송할 수 있다(218). 결정은 정책 엔진(118)에 의해 이루어질 수 있으며 데이터 버스(202)로 리턴될 수 있다(214). 시스템 호출이 허가되지 않는다면, 데이터 버스(202)는 실패를 요청 애플리케이션(110)으로 보고할 수 있다(212). 시스템 호출이 허가된다면, 데이터 버스(202)는 애플리케이션 콘텍스트를 업데이트하고, 시스템 호출을 실행하며(212), 애플리케이션 콘텍스트를 업데이트할 수 있다. 성공이 보고될 수 있다.
본 실시예들의 이점은, 제한 없이, 모든 원격 프로시저 호출들, 프로세스-간 통신, 및 모바일 디바이스들 상에서 발생하는 시스템 호출들에 대한 엄격하고, 상세한 보안 정책들을 강제하기 위한 능력을 포함할 수 있다. 시스템-와이드 정책 엔진을 구현함으로써, 디바이스 관리자들은 애플리케이션들이 다른 잠재적으로 악성 애플리케이션들에 대해 스스로를 보다 쉽게 보호할 수 있도록 허용하는 정책들을 배치할 수 있다. 멀웨어 검출 및 방지에 적용될 때, 알려진 시스템 호출 패턴들이 실행 이전에 인식되고, 인터셉트되며, 정지될 수 있다. 문제가 있는 애플리케이션들은 그 후 디스에이블될 수 있으며 디바이스 관리자들은 악성 활동을 통지받는다. 이것은 공통 정책 세트 없이 개개의 시스템 호출들을 개별적으로 승인/부인하기 위해 애플리케이션들에 의존한 종래 기술에 비해 상당한 이점들을 제공한다. 부가적으로, 그것은 디바이스 관리자들이 이용 가능해지도록 벤더-공급 패치를 기다릴 필요 없이 새로운 위협들에 대해 보호하는 디바이스 정책들을 구현하도록 허용한다.
본 출원에 논의된 추가 양상은 모바일 디바이스 상에서의 복수의 프로세스들에 관점-지향 보안을 적용하기 위해 요구된 정책 또는 다른 데이터를 분배하기 위한 프로세스-간 통신의 사용이다.
기존의 모바일 보안 솔루션들이 가진 도전은 그것들이 보안 정책들을 강제하기 위해 애플리케이션 프로그래밍 인터페이스들, 시스템 라이브러리들, 또는 운영 시스템에 수정들을 요구한다는 것이다. 예를 들면, 무선 네트워크들로의 액세스 또는 데이터의 절단/붙여넣기를 제한하기 위해, 이들 피처들에 관련된 API들은 보안 정책들이 그것들의 거동을 변경하도록 허용하기 위해 수정되어야 한다. 빠르게 발전하고 있는 모바일 시스템들에 대해, 보안 피처들을 지원하며 그것들을 유지하기 위해 플랫폼의 API들을 수정하는 것은 상당한 노력을 요구한다.
실시예들은 보안 정책들이 관점-지향 프로그래밍을 통해 기존의 API들에 적용되며 API들의 내부 로직을 수정하지 않고 기존의 API들에 적용되도록 허용함으로써 모바일 디바이스 보안 이슈들을 다룰 수 있다. 대신에, 기존의 API는 본 출원에서 설명된 관점-지향 프로그래밍 방법들 및 기술들을 사용하여 보안의 하나 이상의 계층들을 갖고 래핑될 수 있다. 관점-지향 프로그래밍은 비-모바일 동작 환경들에서 단일 프로세스에 보안 정책들을 적용하기 위해 사용되어 왔지만, 그러나, 모바일 디바이스들은 동작시키기 위해 다중-프로세스 아키텍처 및 프로세스-간 통신을 사용한다. 그러므로, 보안 정책들의 단일-프로세스 애플리케이션은 모바일 디바이스 동작 보안 요건들을 만족시키지 않을 수 있다. 프로세스-간 통신은 모바일 디바이스 상에서의 복수의 프로세스들에 관점-지향 보안을 적용하기 위해 요구된 하나 이상의 정책들 또는 다른 데이터를 분배하기 위해 사용될 수 있다. 일단 보안-관련 데이터가 안드로이드 바인더 또는 유닉스 도메인 소켓과 같은, 프로세스-간 통신 메커니즘을 통해 타겟 프로세스들로 분배된다면, 관점-지향 보안 기술들은 이들 타겟 프로세스들에서 방법들, 기능들, 및 서비스들의 호출들에 관련된 보안을 인터셉트하며 관리하기 위해 적용될 수 있다.
관점-지향 프로그래밍은 모바일 플랫폼들 상에서의 다수의 형태들로 나타낼 수 있다. 관점-지향 프로그래밍 접근법은 오브젝트-지향 방법 실행 전, 후, 그 대신에, 또는 그것에 관하여 이것들의 임의의 조합으로 코드의 특정 세그먼트를 호출하기 위한 오브젝트 클래스에 대한 수정일 수 있다. 관점-지향 프로그래밍 접근법은: 자바 다이나믹 프록시; 방법, 서비스, 시스템, 또는 다른 기능 호출에 적용된 인터셉터; 그것들의 디폴트 거동을 변경하기 위해 가상 머신의 클래스들의 로딩의 수정; 자바 JAR 또는 안드로이드 DEX 파일들과 같은, 이진 코드 패치; 특정 기능들 또는 방법들에 대한 코드 실행을 변경하기 위해 방법 디스패치 테이블에 대한 수정; 및 다른 적절한 접근법들을 포함할 수 있다.
다양한 실시예들에서, 정책들이 어떻게 디바이스에 적용되는지 및 결과적으로 관점-지향 보안 기술들이 어떻게 하나 이상의 프로세스들에 걸쳐 적용되는지를 변경하기 위해 콘텍스트 정보를 사용하기 위한 능력이 제공될 수 있다. 이러한 콘텍스트 정보는 지리, 가속도계, 카메라, 마이크로폰, 무선 네트워크, 애플리케이션 사용, 사용자 상호 작용, 실행 프로세스, 디스크 상태, 근처의 무선 신호들/네트워크들, 외부 디바이스들과의 페어링 상태, 방문된 웹사이트들, 디바이스 네트워크 트래픽, 배터리 레벨, 디바이스 상에 존재하는 데이터의 유형들, 또는 다른 디바이스 하드웨어 또는 소프트웨어 검출 가능한 콘텍스트 정보를 포함할 수 있다. 디바이스 콘텍스트는 지리적 위치와 같은, 실-세계, 디바이스 상에 존재하는 데이터, 현재 실행 중인 애플리케이션들, 또는 네트워크 또는 디스크로/로부터의 데이터의 입력/출력과 같은, 가상, 또는 둘의 임의의 조합들일 수 있다. 예를 들면, 보안 정책은 특정 무선 네트워크로의 연결, 하나 이상의 애플리케이션들의 런칭, 또는 특정 데이터세트들의 다운로딩에 의해 트리거될 수 있다.
모바일 디바이스들을 위한 관점-지향 보안은 디바이스 상에서 기능하는 어떤 프로세스들이 몇몇 형태의 관점-지향 보안에 의해 커버되는지를 추적하는 것 및/또는 보안 정책을 강제하기 위해서와 같은, 적용되는 관점-지향 보안 프로그래밍을 위한 후보들인 프로세스들을 결정하는 것을 포함할 수 있다. 이러한 추적은 중앙 집중형, 분산형, 또는 둘의 하이브리드 조합일 수 있다.
이러한 추적을 위한 메커니즘은 원하는 기능들 또는 디바이스 능력들의 세트에 보안 정책들을 적용하기 위해 프로세스들로 정책 및/또는 관점-지향 프로그래밍 데이터를 분배하는 방법을 결정할 수 있다. 이러한 메커니즘은 운영 시스템에 또는 사용자 공간에서의 운영 시스템의 밖에 상주할 수 있다.
디바이스들이 정지되며 재시작될 수 있으므로, 정책 및/또는 관점-관련 데이터는 디바이스가 다시 턴 온될 때 그것이 프로세스들로 재분배될 수 있도록 디바이스 상에 저장될 수 있다. 비-휘발성 저장 시스템은 요구된 정책 및/또는 관점-지향 프로그래밍 정보를 캡처할 수 있다. 디바이스가 파워 온될 때, 분산형 또는 중앙 집중형 메커니즘은 보안 정책들을 강제하기 위해 프로세스들로의 정책 및/또는 관점-지향 프로그래밍 데이터의 입력/출력을 위해 사용될 수 있다.
보안 정책들은 애플리케이션, 운영 시스템, 미들웨어, 또는 다른 코드의 실행에 대한 제약들을 포함할 수 있다. 보안 정책은 사용자가 어떻게 시스템과 상호 작용할 수 있는지, 그들이 어떤 동작들을 수행할 수 있는지, 그들이 어떤 데이터를 액세스할 수 있는지, 그들이 어떻게 데이터를 사용할 수 있는지 등에 대한 제약들을 포함할 수 있다. 보안 정책은 또한 입력/출력 또는 물리적 하드웨어에 관련된 다른 동작들을 통제할 수 있다.
부가적으로, 비 관점-지향 프로그래밍 로직은 특정 디바이스 기능들 또는 능력들을 안전하게 하기 전에 디바이스를 원하는 상태로 이끌기 위해 관점-지향 프로그래밍과 결합될 수 있다. 예를 들면, 비 관점-지향 프로그래밍 로직은 어떤 앱들이 무선 네트워크 액세스를 턴 온/오프할 수 있는지를 제한하기 위해 관점-지향 프로그래밍 기술이 사용되기 전에 무선 네트워크 액세스를 턴 오프할 수 있다. 또 다른 예에서, 비 관점-지향 프로그래밍 로직은 관점-지향 프로그래밍 기술이 멀웨어의 재런칭을 방지하기 위해 사용되기 전에 멀웨어 애플리케이션을 자동으로 중단시킬 수 있다.
이제 도 10을 참조하여, 기존의 API들(1002)은 API 주위에서 실행 환경 인자들에 영향을 줌으로써 관점 지향 프로그래밍을 통해 안전하게 될 수 있다. 이 예에서, 정책 엔진(118)은 본 출원에서 설명된 바와 같이 디바이스, 환경, 사용자, 프로세스들, 네트워크 등에 대한 콘텍스트 정보(1008)를 수신할 수 있다. 정책 엔진(118)은 또한 정책 관리 설비(1012)로부터 IPC(1010)를 경유하여 관점-지향 프로그래밍을 통해 하나 이상의 보안 정책들을 적용하기 위한 정책 데이터 및 관련 데이터를 수신할 수 있다. 정책 관리 설비(1012)는 어떤 프로세스들 및/또는 API들(1002)이 관점-지향 보안에 의해 커버되는지 및 커버리지(1014)를 위한 후보들인지를 추가로 추적할 수 있다. 정책 설비는 디바이스의 중단 및 재시작을 용이하게 하기 위해 데이터 저장소(1018)(예로서, 디바이스 상에서의 데이터 저장소)에 정책 및/또는 관점-관련 데이터를 저장 및 액세스할 수 있다.
관점 지향 프로그래밍을 통해 모바일 디바이스 보안 정책을 강제하는 AspectJ(자바) 예에서, 모바일 운영 시스템에서의 보안 설정(Secure Setting) 필드들은 비-시장 애플리케이션들이 설치되도록 허용하는 것을 야기할 필드를 설정하는 것을 가능하게 할 수 있는 복수의 시스템 기능들에 의해 액세스될 수 있다. 비-시장 애플리케이션은 디바이스 상에서의 운영 시스템을 위한 공식 마켓이 아닌 수단에 의해 획득된 애플리케이션(예로서, 제 3 자로부터 획득되지만, 그러나 공식 안드로이드 마켓을 통하지 않은 안드로이드 애플리케이션)이다. 비-시장 애플리케이션들이 종종 서명되지 않으며 그러므로 보안 위험들을 제공할 가능성이 더 높은(예로서, 멀웨어의 형태일 수 있는) 정도로, 비-시장 애플리케이션이 설치되도록 허용될 수 있는 조건들을 제한하는 보안 정책이 수립될 수 있다. 이러한 시스템 기능들은 시스템 애플리케이션 전체에 걸쳐 나타날 수 있지만 모두가 단어(“업데이트”)(예로서, updateSecureSettingsInfo)로 시작하는 명칭들을 포함할 수 있으며 SettingsField 오브젝트 및 값 인수들을 취할 수 있다. 그러므로, “updateSecureSettingsInfo”의 다양한 발생들은 관점 지향 프로그래밍을 통해 보안 정책을 이용하기에 적합한 교차-절단 관심사일 수 있다. 보안 정책은 비-시장 앱들의 설치를 허용할 변화들을 방지하기 위해 구체적으로 SettingsField InstallNonMarketApps를 타겟팅할 수 있다. 조인 포인트는 보안 설정 업데이트 방법을 위해 및“업데이트”, “정보” 및 “SettingsField”과 같은 명칭 요소들을 통합하는 SettingsField 오브젝트를 위해 정의될 수 있다. 이들 조인 포인트들에 기초하여, AspectJ 포인트컷들은 “업데이트”로 시작하며 “정보”로 끝나는 방법의 임의의 사용 또는 “SettingsField” 오브젝트의 임의의 사용이 보안 정책을 준수하기 위해 제어될 수 있음을 보장할 보안 정책을 강제하기 위해 준비될 수 있다. 포인트컷들은 보안 정책을 다루기 위해 코드와 함께 관점 방법 유형에 포함될 수 있다. 이 예에서, 수반되는 코드는 “InstallNonMarketApps” 액세스를 검출하며 비-시장 앱들의 설치를 허용하지 않는 적절한 값으로의 설정을 복원하기 위해 이러한 액세스 후 기능을 수행할 수 있다. 이것은 보안 정책 강제 코드(security policy enforcing code)를 호출하기 위해 “후” 유형 권고를 사용하여 AspectJ에서 행해질 수 있다.
실시예들에서, 모바일 컴퓨팅에서 보안을 강제하기 위한 방법들 및 시스템들은 디바이스 사용 콘텍스트에 기초하여 모바일 디바이스에 데이터를 동기화시키는 것을 포함할 수 있다.
현대의 모바일 디바이스들은 종종 서버와 같은, 원격 시스템과 동기화되는 데이터를 저장한다. 원격 시스템에 비교하여 그것의 유한한 리소스들 때문에, 보통 원격 시스템 상에 저장된 데이터의 부분 이미지만이 모바일 디바이스 상에 복제된다. 이것은 종종 두 개의 시스템들 사이에서 증가 업데이트들을 전달함으로써 성취된다. 예를 들면, 사용자의 이메일 박스, 전송된 폴더 및 다른 저장된 폴더들은 모두 원격 이메일 서버 상에 저장될 수 있으며, 인박스에서의 단지 가장 최근의 25개 이메일들만이 사용자의 모바일 디바이스 상에 저장될 수 있다. 모바일 디바이스 상에 존재하는 이메일들은 사용자가 디바이스로부터 부가적인 이메일들을 드래프트함에 따라 또는 메일 서버에서 수신된 새로운 이메일들이 모바일 디바이스로 푸싱됨에 따라 업데이트될 수 있다. 모바일 디바이스에서 이루어진 변화들은 사용자가, 예를 들면, 메일 서버를 통해 이메일을 전송함에 따라 메일 서버에 기록될 수 있다.
이하에서 설명된 실시예들은 보다 높은 우선권 데이터의 동기화를 지능적으로 조직하며 우선순위화함으로써 모바일 디바이스 상에서의 데이터를 동기화하기 위한 현재 기술과 연관된 보안, 대역폭 및 에너지 효율 관심사들을 다룰 수 있다. 데이터가 서버 및 모바일 디바이스와 같은, 두 개의 컴퓨팅 시스템들 사이에서 동기화되는 시스템에서, 그것이 컴퓨팅 시스템들 중 하나에 대해 사용할 때 상기 데이터만을 동기화하는데 더 안전하며 더 효율적일 수 있다(양쪽 모두 대역폭 및 에너지 사용에 대하여). 예를 들면, 중앙 서버로부터 모바일 디바이스로 데이터를 동기화할 때, 모바일 디바이스는 모바일 디바이스가 한가롭게 있을 때가 아닌, 단지 사용자가 데이터를 능동적으로 사용할 때 또는 데이터가 즉시 사용 가능할 때 데이터를 요구한다.
이들 보안 및 효율 관심사들은 상이한 동기화 우선순위들을 가진 데이터의 다수의 클래스들을 정의함으로써, 디바이스의 콘텍스트(예로서, 디바이스가 유휴 상태인지, 사용자가 디바이스를 잠금 해제하려고 시도하는지, 사용자가 이메일 클라이언트를 시작하는지 등)를 정의하고 모니터링하며 기존의 클래스들 및 시스템 콘텍스트에 기초하여 데이터의 하나 이상의 클래스들을 동기화함으로써 처리될 수 있다.
본 개시의 방법들 및 시스템들은 기존의 애플리케이션들을 유용하거나 또는 이에 제한되지 않지만, 채팅, 공유, 소셜 네트워킹, 연락처 관리, 메시징, 이메일, 웹 브라우징 등의 강화된 피처들과 같은 통신 애플리케이션들; 게임들 및 엔터테인먼트 콘텐트 애플리케이션들(비디오 게임들, 음악, 비디오 콘텐트, 온라인 콘텐트 등); 명령 및 제어 애플리케이션들 및 피처들(운영 시스템 제어, 전화 제어, 제한된/보안된 데이터 액세스 제어 등); 디바이스 이미징 및 디바이스 와이핑과 같은 기업 IT 관리 애플리케이션들; 내비게이션, 운전자 지원 및 보안 시스템들과 같은 자동차 애플리케이션들; 및 안티-바이러스, 펌웨어 무결성, 운영 시스템 무결성, 부트 로더 무결성, 방화벽들, 침입 탐지 시스템들, 및 침입 방지 시스템들 등과 같은 개선된 보안 툴들을 포함한, 새로운 것들을 가능하게 할 수 있다.
도 11를 참조하여, 모바일 디바이스와 같은 시스템(102)은 서버(1102) 상에서의 데이터(158, 160, 130)와 시스템(102) 상에서의 데이터(158, 160, 130)를 동기화하기 위해 통신 설비(150)를 통해 네트워크(104)를 경유하여 서버(1102)로 통신할 수 있는 동기화 설비(164)를 포함할 수 있다. 몇몇 실시예들에서, 데이터는 고 우선순위 데이터(158) 및 저 우선순위 데이터(160)와 같은, 복수의 클래스들로 분리될 수 있다. 동기화 설비(164)는 시스템(102) 상에서의 하나 이상의 리소스들로부터의 상태 변화와 같은, 입력에 기초하여 데이터의 하나 이상의 클래스들의 데이터 동기화를 개시할 수 있다. 예를 들면, 동기화 설비(164)는 시스템(102)이 파워 온됨을 표시하는 전력 관리 설비(162)로부터의 입력에 기초하여 고 우선순위 데이터(158)의 데이터 동기화를 개시할 수 있다. 또 다른 예에서, 동기화 설비(164)는 시스템(102)의 사용자가 저 우선순위 데이터(160)를 이용하는 애플리케이션(110)을 시작하였음을 표시하는 디바이스 사용자 인터페이스(UI)(154)로부터의 입력에 기초하여 저 우선순위 데이터(160)의 데이터 동기화를 개시할 수 있다. 계속해서 또 다른 예에서, 동기화 설비(164)는 정책 데이터(예로서, 정책 엔진(124)에 의한 사용을 위한 하나 이상의 정책들(130))의 데이터 동기화를 개시할 수 있다.
실시예들에서, 적응적 동기화는 서버(104) 상에서의 데이터와 데이터(158, 160, 및 130B)의 복수의 클래스들을 동기화할 때를 결정하기 위해 시스템(102) 상에서의 동기화 설비(164)를 적응시키는 것을 포함할 수 있다.
데이터가 서버(1102) 및 시스템(102)과 같은, 두 개의 컴퓨팅 시스템들 사이에서 동기화되는 시스템에서, 그것이 컴퓨팅 시스템들 중 하나에 대해 사용할 때 단지 상기 데이터만을 동기화시키는 것이 유리할 수 있다. 예를 들면, 중앙 서버로부터 모바일 디바이스로 데이터를 동기화할 때, 모바일 디바이스는 모바일 디바이스가 한가롭게 있을 때가 아닌, 단지 사용자가 데이터를 능동적으로 사용할 때 또는 데이터가 즉시 사용 가능할 때 데이터를 요구한다.
일 실시예에서, 시스템(102)과의 사용자 상호 작용은 동기화 이벤트를 개시할 수 있다. 시스템(102)과의 사용자 상호 작용은, 예를 들면, 디바이스 UI(154)로의 입력일 수 있다. 디바이스 UI(154)로의 입력은 시스템(102)을 잠그는 것, 시스템(102)을 잠금 해제하는 것, 애플리케이션(110)을 시작하는 것, 애플리케이션(110)을 정지시키는 것, 애플리케이션(110)을 사용하는 것, 시스템(102)을 부팅하는 것, 시스템(102)을 중단시키는 것, 정보를 원격 컴퓨터로 전송하는 것, 원격 컴퓨터로부터의 정보를 요청하는 것, 또는 몇몇 다른 입력 등 중 하나 이상일 수 있다.
다른 실시예들에서, 동기화 이벤트는 시스템(102) 또는 시스템(102) 상에서 실행하는 소프트웨어에 의해 개시될 수 있다. 예를 들면, 전력 관리 설비(162)는 시스템(102)의 배터리가 특정한 충전에 도달할 때 동기화 이벤트를 개시할 수 있다.
일 예에서, 사용자는 스크린을 잠그기 위해 디바이스 UI(154)로 입력을 제공할 수 있으며, 상기 입력에 기초하여, 동기화 설비(164)는 시스템의 상태(즉, 사용자가 시간 기간 동안 시스템(102)을 사용하려고 의도하지 않는)를 결정할 수 있으며, 상기 상태에 기초하여, 시스템(102) 상에서의 데이터를 동기화하기 시작할 수 있다.
그것은 시스템(102)으로 하여금, 시스템(102) 디스플레이가 턴 오프될 때와 같은, 저-전력 상태들에서 전체 전력 소비 이득들을 실현하도록 허용할 수 있기 때문에 현재 사용 상태에 기초하여 데이터 동기화 프로세스를 조정하며, 시스템(102)이 이미 사용 중일 때, 네트워크 동작들과 같은, 보다 많은 전력-집중 태스크들을 수행하는 것이 유리할 수 있다.
몇몇 인스턴스들에서, 컴퓨팅 시스템들 사이에서 동기화될 데이터의 다수의 클래스들을 정의하는 것이 필요할 수 있다. 한 클래스는 저 우선순위 데이터(160)일 수 있다. 몇몇 실시예들에서, 저 우선순위 데이터(160)는 디바이스가 활성일 때만 동기화될 수 있다. 저 우선순위 데이터의 클래스에 있을 수 있는 데이터의 유형들은, 예를 들면, 개인 이메일들, 트위트들, 연락처 정보, 음악 파일들, 및 이미지 파일들을 포함할 수 있다.
데이터의 또 다른 클래스는 고 우선순위 데이터(158)일 수 있다. 몇몇 실시예들에서, 고 우선순위 데이터(158)는 디바이스의 현재 사용 상태에 관계없이 동기화될 수 있다. 몇몇 실시예들에서, 중간 우선순위 데이터, 중-저 우선순위 데이터, 최고 우선순위 데이터, 및 다른 클래스들의 데이터와 같은, 부가적인 클래스들의 데이터가 있을 수 있다. 고 우선순위 데이터의 클래스에 있을 수 있는 데이터의 유형들은, 예를 들면, 기밀 비즈니스 이메일들, 텍스트 메시지들, 음성메일 통지들, 디바이스 상에서 데이터를 와이핑하기 위한 지시들, 및 분류된 데이터를 포함할 수 있다.
실시예들에서, 동기화되는 데이터는, 시스템(102)의 관점들 또는 피처들을 제어하기 위해 정책 데이터를 사용할 수 있는, 정책 엔진(118)에 대한, 정책(130)과 같은, 정책 데이터일 수 있다.
정책 엔진(118)은 현재 날짜 및 시간, 디바이스 위치, 디바이스 사용자의 아이덴티티, 및 다른 콘텍스트-관련 데이터 중 하나 이상을 포함할 수 있는, 디바이스-특정 콘텍스트를 생성할 수 있다. 몇몇 실시예들에서, 정책 엔진(118)은 정책 데이터로서 하나 이상의 정책들(130)을 정책 엔진(118)으로 푸시할 수 있는, 정책 서버(106)와 같은, 서버(1102)에 연결될 수 있다.
정책 엔진(118)은 시스템(102) 상에서의 하나 이상의 보안 정책들을 강제하기 위해 사용될 수 있다. 몇몇 실시예들에서, 정책 데이터는 시스템(102)이 기능을 디스에이블시키게 하는 정책 엔진(118)에 대한 정책(130)을 포함할 수 있다. 예를 들면, 정책(130)은 정책 엔진(124)이, 시스템(102)이 연구실처럼, 카메라들(152)의 사용을 금지하는 건물에 위치됨을 결정할 때 카메라(152)를 디스에이블시키기 위한 규칙을 포함할 수 있다. 다른 실시예들에서, 정책 데이터는 시스템(102)이 시스템(102) 상에 저장된 콘텐트를 삭제하는 것과 같은 동작들을 수행하게 하기 위해 정책 엔진(118)에 대한 정책(130)을 포함할 수 있다. 예를 들면, 정책(130)은 시스템 사용자가 허가된 사용자가 아닐 때 또는 시스템(102)을 손실한 허가된 사용자로부터의 지시에 응답하여 시스템(102) 상에서의 모든 메모리를 와이핑하기 위한 규칙을 포함할 수 있다. 실시예들에서, 카메라(152)를 디스에이블시키는 정책(130)은, 예를 들면, 카메라(152)가 상관없이 저-전력 상태에서 사용될 수 없기 때문에, 시스템(102)이 고-전력 상태에 있을 때에만 동기화되도록 요구할 수 있다. 그러나, 훔친 또는 손상된 시스템(102)의 경우에, 시스템(102)이 상호 작용될 때보다는 바로 시스템(102) 상에 저장된 임의의 민감한 데이터를 삭제하는 것이 필요할 것이다.
또 다른 실시예에서, 데이터 동기화 전략은 수신 컴퓨팅 시스템의 콘텍스트에 의존할 수 있다. 예를 들면, 동기화 설비(164)는 애플리케이션(110)이 시작되거나 또는 정지될 때와 같은, 이벤트들이 시스템(102) 상에서 발생할 때 데이터 동기화를 개시할 수 있다. 정책 동기화 예에서, 컴퓨팅 시스템들 사이에서의 정책들(130)의 동기화는 신뢰되지 않은 애플리케이션(110)이 시스템(102) 상에 런칭될 때 트리거될 수 있다. 실시예들에서, 데이터는 시스템의 전력 사용 상태에 기초하여 및/또는 다른 고려사항들에 기초하여 시스템(102) 및 서버(1102) 사이에서 동기화될 수 있다. 실시예들에서, 동기화는 별개로 또는 함께 본 출원에서 설명된 다양한 고려사항들에 기초할 수 있다.
동기화는 동기화 조건들을 조정함으로써 더 또는 덜 복잡하게 될 수 있다. 예를 들면, 동기화 설비(164)는 단지 시스템(102)이 활성이며 네트워크(104)의 네트워크 연결이 유휴 상태인 동안에만 네트워크(104)를 사용할 수 있다. 또 다른 예에서, 동기화 설비(164)는 단지 시스템(102)이 활성이며 특정한 지오-로케이션에 있는 동안에만 네트워크(104)를 사용할 수 있다. 계속해서 또 다른 예에서, 동기화 설비(164)는 단지 시스템(102)이 활성이며 사용자가 동기화를 허용한 동안에만 네트워크(104)를 사용할 수 있다.
실시예들에서, 모바일 컴퓨팅에서 보안을 강제하기 위한 방법들 및 시스템들은 위치 및 비즈니스 식별 정보를 안전하게 제공하기 위해 모바일 디바이스 및 또 다른 디바이스 사이에서의 단거리 통신을 안전하게 하는 것을 포함할 수 있다. 이러한 통신을 안전하게 하는 것은 고객 식별 정보 외에 고객 위치 정보를 제공할 수 있다. 몇몇 실시예들에서 또한 디바이스 상에서의 애플리케이션의 실행을 안전하게 트리거하기 위해 프로세스-간 통신(IPC) 메커니즘을 통해 전송된 특정한 이벤트들을 사용할 수 있다.
도 12를 참조하여, 시스템(102)은 네트워크(104)를 경유하여 통신 설비(150)를 통해 송신들을 전송 및 수신하도록 적응될 수 있는 위치-인식 설비(1210)를 포함할 수 있다. 이러한 송신들은 하나 이상의 단거리 근접 라디오들(1218A-C)로부터의 단거리 근접 정보를 포함할 수 있다. 이러한 송신들은 또한 비즈니스 서버(1216)로 및 그로부터 정보를 포함할 수 있다. 위치-인식 설비(1210)는 IPC 설비(1212)를 통해 하나 이상의 애플리케이션들에 정보를 제공할 수 있다. 실시예들에서, IPC 설비(1212)는 IPC 버스(132)일 수 있다. 몇몇 실시예들에서, 애플리케이션 프로세스(1214A)는 위치-인식 설비(1210)에 의해 제공된 정보에 기초하여, 비즈니스 위치 변화를 표시한 이벤트를 IPC 설비(1212)를 통해 제 2 애플리케이션 프로세스(1214B)로 송신할 수 있다. 제 2 애플리케이션 프로세스(1214B)는 애플리케이션으로부터의 로직을 실행하기 위해 동적으로 런칭될 수 있다.
비즈니스 서버(1216)는 비즈니스 시스템(1204)의 부분일 수 있으며, 이것은 시스템(102)의 위치를 결정하기 위해 및/또는 디바이스(102)의 위치에 기초하여 시스템(102)에 정보를 제공하기 위해 데이터를 시스템(102)으로 송신할 수 있다.
보안 단거리 근접 신호를 제공하는 것은, 디바이스(102)가 위치-인식 설비(1210) 및 통신 설비(150)를 포함하는, 시스템(102)을 제공하는 것; 및 시스템(102)의 위치에 기초하여 정보를 시스템(102)에 제공하기 위해 비즈니스 시스템(1204)을 제공하는 것을 포함할 수 있으며, 비즈니스 시스템(1204)은 시스템(102)의 위치를 식별하기 위한 하나 이상의 단거리 근접 라디오들(1218A-C), 및 정보를 제공하기 위한 비즈니스 서버(1216)를 포함할 수 있다. 실시예들에서, 단거리 근접 라디오(1218A)는 고유 신호를 방출하는 것을 가능하게 할 수 있으며, 이것은 디바이스의 위치를 식별하기 위해 위치-인식 설비(1210)에 의해 사용될 수 있다.
시스템(102)은 모바일 전화, 태블릿, 개인용 디지털 보조기, 시계, 랩탑, 또는 몇몇 다른 디바이스일 수 있다. 시스템(102)은 실행하는 하나 이상의 애플리케이션들을 가질 수 있다. 몇몇 실시예들에서, 애플리케이션들은 하나 이상의 프로세스들(1214A-B)에서 실행할 수 있다. 프로세스들(1214A-B)은 하나 이상의 프로세스들(1214A-B) 사이에서, 및 하나 이상의 프로세스들(1214A-B) 및 위치-인식 설비(1210) 사이에서 통신을 용이하게 하기 위해 프로세스-간 통신 설비(1212)에 연결될 수 있다. 몇몇 실시예들에서, 프로세스-간 통신 설비(1212)는 두 개의 서브시스템들 사이에서의 통신을 통제하는 규칙들을 강제하기 위한 프로세스-간 통신 방화벽(144)일 수 있다.
본 개시의 양상은 비즈니스 위치로부터의 입장 또는 출장을 표시할 수 있는, Wi-Fi, 셀룰러, 블루투스, 또는 블루투스 로우 에너지(Bluetooth LE) 네트워크 이벤트들의 사용이 프로세스-간 통신 설비(1212)를 통해 이러한 이벤트들을 전송하는 것이 프로세스(1214A 및/또는 B)에서 구동하는 애플리케이션 내에 포함된 로직의 실행을 자동으로 트리거할 수 있게 할 것이라는 것이다. 비즈니스 위치 변화를 나타내는 이러한 네트워킹 이벤트들은 제 1 프로세스(1214A)에서 생성되고, 프로세스-간 통신 설비(1212)를 통해 송신되며, 그 후 비즈니스 보조 애플리케이션으로부터의 로직을 실행하기 위해 동적으로 런칭되는 제 2 프로세스(1214B)로 전달될 수 있다. 본 개시의 이러한 양상은 비즈니스 보조 애플리케이션의 코드가 메모리로 동적으로 로딩되며, 비즈니스 위치가 들어가지거나 또는 빠져나오게 됨을 표시할 수 있는, 특정 Wi-Fi SSID를 가진 시스템(102)이 범위로 들어가는 것과 같은, 네트워킹 이벤트 시 실행되도록 허용한다. 일단 이 애플리케이션 코드가 메모리로 로딩되면, 애플리케이션은 다음 중 하나 이상을 행함으로써 시스템(102)의 사용자와 상호 작용할 수 있다. 1.) 비즈니스에서의 사용자의 위치 및 그들의 구매 이력에 기초하여 개인화된 디스카운트들을 강구하며 제공하기 위해 비즈니스 로직을 사용하는 것, 2.) 상점을 나타내는 고객으로부터의 도움을 요청하기 위한 메커니즘을 제공하는 것, 3.) 하나 이상의 개인화된 광고들을 제공하는 것, 및 4.) 특정 제품에 대한 도움 및/또는 지시들을 제공하는 것.
위치-인식 설비(1210)는 네트워크(104)를 경유하여 통신 설비(150)를 통해 송신들을 전송 및 수신하도록 적응될 수 있다. 위치 인식 설비(1210)는 GPS 위치를 사용할 수 있다. 위치 인식 설비(1210)는 디바이스들의 위치들 또는 네트워크에 연결된 IP 어드레스들에 대한 데이터와 같은, 저장된 위치 데이터의 데이터베이스를 액세스할 수 있다. 위치-인식 설비(1210)는 복수의 단거리 근접 라디오들(1218A-C), 무선 인터넷 신호들, 블루투스 센서들로부터와 같은 신호들을 사용한 삼각측량, 삼변측량 또는 다변측량을 사용하는 것과 같은, 하이브리드 위치 결정 시스템; 및/또는 시스템(102) 위치를 식별하기 위한 몇몇 다른 위치 결정 시스템을 사용할 수 있다.
통신 설비(150) 및 네트워크(104) 사이에서의 송신들은 이에 제한되지 않지만, 셀룰러, 블루투스, 블루투스 LE, 근거리장 통신, RFID, Wi-Fi, 및 초음파 사운드와 같은, 하나 이상의 단거리 근접 신호들을 이용할 수 있다. 송신들은 하나 이상의 단거리 근접 라디오들(1218A-C)로부터의 단거리 근접 정보를 포함할 수 있다. 이러한 송신들은 또한 비즈니스 서버(1216)로 및/또는 그로부터 시스템(102)의 위치와 연관된 정보를 포함할 수 있다. 예를 들면, 정보는 고객 로열티 정보, 상점 정보, 상점 내비게이션 정보, 구매 정보, 쿠폰, 바코드 스캐닝 정보, 제품 정보, 쇼핑 정보, 브라우징 정보(제품들에 대한 것과 같은), 쇼핑 카트 정보, 및/또는 다른 비즈니스-보조 정보를 포함할 수 있다.
비즈니스 서버(1216)는 비즈니스 시스템(1204)의 부분일 수 있다. 몇몇 실시예들에서, 비즈니스 서버(1216)는 위치 계산기(1220), 비즈니스 운영 시스템(1222), 광고 운영 시스템(1224) 및 하나 이상의 다른 운영 시스템들(1226)을 포함할 수 있다. 위치 계산기(1220)는, 고객 시스템(102)과 연관된 데이터에 응답하여, 하나 이상의 단거리 근접 라디오들(1218A-C)을 통해 수신되며 고객 시스템(102)의 위치를 식별할 수 있다. 광고 운영 시스템(1224)은 위치 계산기(1220)에 의해 식별된 위치에 기초하여 고객 시스템(102)으로 전달될 광고들을 식별할 수 있다. 비즈니스 운영 시스템(1222)은 위치 계산기(1220)에 의해 식별된 고객 시스템(102)의 위치에 응답하여 비즈니스 트랜잭션을 프로세싱할 수 있다. 예를 들면, 위치 계산기(1220)는 고객 디바이스가 판매 중인 몇몇 쿠키들을 위한 양쪽 끝 진열대 앞에 서 있음을 식별할 수 있다. 동일한 예에서, 위치 계산기(1220)에 의한 식별에 응답하여, 광고 운영 시스템(1224)은 고객 시스템(102)으로 쿠키들에 대한 쿠폰을 전달할 수 있다. 동일한 예를 계속하면, 위치 계산기(1220)에 의한 동일한 식별에 응답하여, 비즈니스 운영 시스템(1222)은, 동일한 위치에 서 있는 사람들에 대한 쿠키 판매들의 레이트에 기초하여, 상점이 쿠키들 중 더 많은 것에 대한 주문을 제출해야 함을 기획할 수 있다. 또 다른 예에서, 위치 계산기(1220)에 의한 식별에 응답하여, 비즈니스 운영 시스템(1222)은 고객 인구에 기초하여 날짜/시간 특정 제안들/리마인더들을 생성할 수 있다. 다른 운영 시스템들(1226)은, 이에 제한되지 않지만, 인보이스 인쇄, 보안, CRM, 또는 다른 시스템들과 같은, 임의의 다른 시스템들일 수 있다.
현재 개시의 양상은 단거리 근접 신호가 시스템(102)이 하나 이상의 메시지들을 통해 그것의 위치를 나타내기 위해 수집하며 사용할 수 있는 시간-종속적 암호, 아이덴티티, 및/또는 세션 데이터를 비즈니스 서버(1216)로 송신할 수 있다. 시스템(102)은 위치를 표시하기 위해 단거리 근접 신호를 통해 수신된 데이터를 비즈니스 서버(1216)로 직접 송신하거나, 또는 시스템(102)이 비즈니스 서버(1216)로 전송할 수 있는 파생 데이터를 생성하기 위해 데이터를 사용할 수 있다. 이러한 파생 데이터는 암호 해시, 서명, 또는 다른 데이터일 수 있다.
디바이스를 안전하게 하기 위한 방법들 및 시스템들은 데이터의 출처에 관한 정책들을 강제하기 위해 디바이스-기반 콘텍스트-인식 정책 엔진을 사용하여 디바이스 리소스로의 액세스를 필터링하는 것을 포함할 수 있다. 이러한 방법들 및 시스템들은 멀웨어 위협들을 처리하기 위한 방법들 및 시스템들과 연관될 수 있다. 앞서 말한 것은 두 개의 시스템들 사이에서의 통신을 통제하는 규칙들을 강제하기 위해 디바이스 상에 프로세스-간 통신 방화벽을 제공함으로써 모바일 네트워크들에서 분배 정책들을 강제하기 위한 방법들 및 시스템들과 추가로 연관될 수 있다. 예를 들면, 데이터 및/또는 애플리케이션들의 출처가 디바이스 상에서 설치/실행/저장 이전에 증명되어야 하는 디바이스가 제공될 수 있다. 몇몇 데이터 및/또는 애플리케이션의 출처가 증명될 수 없다면, IPC 방화벽은 데이터 및/또는 애플리케이션의 설치/실행/저장을 방지할 수 있다. 부가적으로, IPC 방화벽은 시스템을 통해 확산시키기 위해 데이터 및/또는 애플리케이션이 사용하는 경로를 기록할 수 있다. 이러한 경로 정보는 이러한 출처를 제공하기 위해 또는 멀웨어 감염과 같이, 데이터가 훼손되거나 또는 시스템의 결과가 손상됨을 결정하기 위해 디바이스 또는 또 다른 시스템에 의해 사용될 수 있다.
두 개의 시스템들 사이에서의 통신을 통제하는 규칙들을 강제하기 위해 디바이스 상에서 프로세스-간 통신 방화벽을 제공함으로써 모바일 네트워크들에서 분배 정책들을 강제하기 위한 방법들 및 시스템들은 다른 방법들 및 시스템들과 연관될 수 있다. 예를 들면, 이러한 방법들 및 시스템들은 관점-지향 프로그래밍을 통해 디바이스를 안전하게 하기 위한 방법들 및 시스템들과 연관될 수 있다. 예를 들면, IPC 방화벽들은 호출된 방법들 및 IPC 방화벽들을 통과한 페이로드들을 추적함으로써와 같이, 현재 시스템의 관점을 결정하기 위해 사용될 수 있다. 부가적으로, 새로운 IPC 방화벽 규칙들에 대한 수정들 또는 그것의 구성들은 검출된 새로운 시스템 관점에 기초하여 시스템의 거동을 변경하기 위해 발생할 수 있다.
부가적으로, 방법들 및 시스템들의 보다 복잡한 조합들이 유용할 수 있다. 예를 들면 및 상기 설명된 바와 같이, 디바이스를 안전하게 하기 위한 방법들 및 시스템들은 데이터의 출처에 관한 정책들을 강제하기 위해 디바이스-기반 콘텍스트-인식 정책 엔진을 사용하여 디바이스 리소스로의 액세스를 필터링하는 것을 포함할 수 있으며, 멀웨어 위협들을 처리하기 위한 방법들 및 시스템들과 연관되며 두 개의 시스템들 사이에서의 통신을 통제하는 규칙들을 강제하기 위해 디바이스 상에 프로세스-간 통신 방화벽을 제공함으로써 모바일 네트워크들에서 분배 정책들을 강제하기 위한 방법들 및 시스템들과 추가로 연관될 수 있다. 앞서 말한 것은 네이티브 코드의 로딩, 링킹, 및 실행에 대한 분배 정책들을 강제하기 위한 방법들 및 시스템들과 및 관점-지향 프로그래밍을 통해 디바이스를 안전하게 하기 위한 방법들 및 시스템들과 추가로 연관될 수 있다. 예로서, 콘텐트 및/또는 IPC 메커니즘들의 사용을 모니터링하는 솔루션은 현재 관점에 기초하여 디바이스가 손상되었는지(예로서, 멀웨어에 감염되었는지)를 결정할 수 있다. 이러한 솔루션은 멀웨어 감염을 나타낼 수 있는, 데이터 송신의 기원 및 경로를 결정하기 위해 데이터 출처를 검사함으로써 디바이스를 모니터링할 수 있다. 이러한 대표적인 솔루션은 또한 현재 관점을 변경하고, 디바이스로부터 데이터를 와이핑하거나, 또는 데이터 탈출 또는 부가적인 멀웨어 감염을 위한 다른 예방책을 취하기 위해 멀웨어 표시 거동의 검출을 사용할 수 있다. 이러한 새로운 양상은 잠재적으로 멀웨어를 포함하는 것으로 결정된 애플리케이션들을 제거하기 위해 보안 정책의 강제와 같은, 검출된 위협을 개선하기 위한 자동화된 단계들을 포함할 수 있다. 부가적으로, 새로운 양상은 네이티브 코드의 실행 또는 다른 IPC 방화벽 규칙들의 인스턴스화를 방지하는 것과 같은, 부가적인 감염을 방지하기 위한 단계들을 포함할 수 있다.
유사한 조합은 두 개의 시스템들 사이에서의 통신을 통제하는 규칙들을 강제하기 위해 디바이스 상에 프로세스-간 통신 방화벽을 제공함으로써 모바일 네트워크들에서 분배 정책들을 강제하기 위한 방법들 및 시스템들과, 데이터의 출처에 관한 정책들을 강제하기 위해 디바이스-기반 콘텍스트-인식 정책 엔진을 사용하여 디바이스로의 액세스를 필터링하는 것을 포함할 수 있는 디바이스를 고정시키기 위한 방법들 및 시스템들을 연관시킬 수 있다. 이러한 조합은 네이티브 코드의 로딩, 링킹, 및 실행에 대한 분배 정책들을 강제하기 위한 방법들 및 시스템들, 모바일 디바이스 보안을 개선하기 위해 신뢰 프로세서 구역을 사용하기 위한 방법들 및 시스템들, 및 관점-지향 프로그래밍을 통해 디바이스를 안전하게 하기 위한 방법들 및 시스템들과 추가로 연관될 수 있다. 예를 들면, 디바이스 상에서의 모든 신뢰된 소프트웨어 및 애플리케이션들은 디바이스의 신뢰 플랫폼 모듈(TPM)에 저장된 크리덴셜들을 갖고 서명될 수 있다. 소프트웨어가 TPM에서 비롯된 크리덴셜들(credential)을 갖고 검증될 수 없는 경우에, 관점은 예방책이 시행될 수 있도록 변경될 수 있다. 이러한 예방책은 네이티브 코드 링킹, 로딩 및/또는 실행을 방지하는 것을 포함할 수 있다. 이 예에서, IPC 방화벽은 트래픽을 기록할 수 있으며, 이것은 크리덴셜들을 사용하여 서명되며 TPM 내에 저장될 수 있다. TPM으로의 액세스는 임의의 데이터가 TPM에 저장되거나 또는 그로부터 검색되기 위해 전달될 수 있으므로, IPC 방화벽을 통해 중재될 수 있다. 이러한 중재는 승인될 액세스의 레벨을 결정할 때 시스템의 현재 관점을 고려할 수 있다.
디바이스를 안전하게 하기 위한 방법들 및 시스템들은 데이터의 출처에 관한 정책들을 강제하기 위해 디바이스-기반 콘텍스트-인식 정책 엔진을 사용하여 디바이스 리소스로의 액세스를 필터링하는 것을 포함할 수 있다. 이러한 방법들 및 시스템들은 탈옥된 모바일 디바이스 상에서의 특권 코드 실행에 대한 보안 및 액세스 제어 정책들을 강제하기 위한 방법들 및 시스템들과, 관점-지향 프로그래밍을 통해 디바이스를 안전하게 하기 위한 방법들 및 시스템들과, 복수의 디바이스들 사이에서의 단거리 통신을 안전하게 하기 위한 방법들 및 시스템들과 함께 연관될 수 있다. 예로서, 솔루션은 근처의 근접성-기반 비콘들의 송신들로부터 수신된 암호 식별 토큰들에 기초하여 사용자의 특권 레벨을 설정하는 것을 포함할 수 있다. 이러한 토큰들 또는 다른 데이터는 단지 단거리 근접 신호에 물리적으로 근접할 때 수신될 수 있다. 백엔드 서버 상에 로컬에 또는 원격에 저장된, 데이터는 단지 단거리 송신을 통해 수신된 암호 식별 토큰을 사용한 인증을 통해 액세스 가능할 수 있다. 암호 식별 토큰은 적절한 사용자에 데이터 출처를 명확하게 연계시키는 서명을 생성하기 위해 사용될 수 있다. 시스템의 관점은 또한 단거리 근접 신호 생성기에 의해 생성되고 송신된 암호 식별 토큰들의 검출된 존재 및 검증에 기초하여 변경될 수 있거나, 또는 성공적인 인증이 완료된다면 원격 백엔드 서버로부터 수신된 데이터에 기초하여 변경될 수 있다.
탈옥된 모바일 디바이스 상에서의 특권 코드 실행에 대한 보안 및 액세스 제어 정책들을 강제하기 위한 방법들 및 시스템들, 관점-지향 프로그래밍을 통해 디바이스를 안전하게 하기 위한 방법들 및 시스템들, 및 복수의 디바이스들 사이에서의 단거리 통신을 안전하게 하기 위한 방법들 및 시스템들이 다른 방법들 및 시스템들과 연관되며 그것과 조합될 수 있다. 예를 들면, 모바일 컴퓨팅에서 보안을 강제하기 위한 방법들 및 시스템들과 연관될 수 있는 이러한 방법들 및 시스템들은 디바이스 사용 콘텍스트에 기초하여 모바일 디바이스에 데이터를 동기화시키는 것을 포함할 수 있다. 예를 들면, 데이터 동기화는 디바이스가 단거리 신호 방출기에 인접하여 있을 때 발생할 수 있다. 이 예에서, 모바일 디바이스로 송신된 크리덴셜들은 원격 백엔드 서버를 갖고 인증하기 위해 사용될 수 있다. 일단 이러한 인증이 완료되면, 모바일 디바이스의 관점은 보안 및 특권 데이터가 모바일 디바이스 및 서버 사이에서 동기화될 수 있도록 변경될 수 있다. 이 프로세스는 또한 원격 백엔드 서버로부터 수신된 데이터를 복호화하기 위해 TPM에 저장된 크리덴셜들을 이용할 수 있다. 이러한 복호화를 완료하기 위해 요구된 크리덴셜들은 원격 백엔드 서버를 갖고 인증하기 위해 단거리 신호 방출기로부터 수신된 것들과 상이할 수 있으며 단지 특권 액세스가 현재 관점에 대해 승인되었다면 액세스 가능할 수 있다.
단지 본 발명의 몇 개의 실시예들만이 도시되고 설명되었지만, 많은 변화들 및 수정들이 다음의 청구항들에서 설명된 바와 같이 본 발명의 사상 및 범위로부터 벗어나지 않고 그것에 대해 이루어질 수 있다는 것이 이 기술분야의 숙련자들에게 명백할 것이다. 외국 및 국내 양쪽모두의, 모든 특허 출원들 및 특허들 및 여기에서 참조된 모든 다른 공보들은 여기에서 전체적으로 법에 의해 허용된 최대 정도로 통합된다.
본 출원에서 설명된 방법들 및 시스템들은 프로세서 상에서의 컴퓨터 소프트웨어, 프로그램 코드들, 및/또는 지시들을 실행하는 머신을 통해 부분적으로 또는 전체적으로 배치될 수 있다. 본 발명은 머신 상에서의 방법으로서, 머신의 부분으로서 또는 그것에 관하여 시스템 또는 장치로서, 또는 머신들 중 하나 이상에서 실행하는 컴퓨터 판독 가능한 매체에 구체화된 컴퓨터 프로그램 제품으로서 구현될 수 있다. 실시예들에서, 프로세서는 서버, 클라우드 서버, 클라이언트, 네트워크 기반 시설, 모바일 컴퓨팅 플랫폼, 정지 컴퓨팅 플랫폼, 또는 다른 컴퓨팅 플랫폼의 부분일 수 있다. 프로세서는 프로그램 지시들, 코드들, 이진 지시들 등을 실행하는 것이 가능한 임의의 종류의 계산적 또는 프로세싱 디바이스일 수 있다. 프로세서는 그것 상에 저장된 프로그램 코드 또는 프로그램 지시들의 실행을 직접적으로 또는 간접적으로 가능하게 할 수 있는 신호 프로세서, 디지털 프로세서, 내장된 프로세서, 마이크로프로세서 또는 코-프로세서(연산 코-프로세서, 그래픽 코-프로세서, 통신 코-프로세서 등)와 같은 임의의 변형 등이거나 또는 이를 포함할 수 있다. 또한, 프로세서는 다수의 프로그램들, 스레드들, 및 코드들의 실행을 가능하게 할 수 있다. 스레드들은 프로세서의 성능을 강화하기 위해 및 애플리케이션의 동시 동작들을 가능하게 하기 위해 동시에 실행될 수 있다. 구현에 의해, 본 출원에서 설명된 방법들, 프로그램 코드들, 프로그램 지시들 등은 하나 이상의 스레드에서 구현될 수 있다. 스레드는 그것들과 연관된 우선순위들을 할당받을 수 있는 다른 스레드들을 야기할 수 있으며; 프로세서는 프로그램 코드에 제공된 지시들에 기초한 우선순위 또는 임의의 다른 순서에 기초하여 이들 스레드들을 실행할 수 있다. 프로세서, 또는 이를 이용한 임의의 머신은 여기에서 및 다른 곳에서 설명된 바와 같이 방법들, 코드들, 지시들 및 프로그램들을 저장하는 메모리를 포함할 수 있다. 프로세서는 여기에서 및 다른 곳에서 설명된 바와 같이 방법들, 코드들, 및 지시들을 저장할 수 있는 저장 매체를 인터페이스를 통해 액세스할 수 있다. 컴퓨팅 또는 프로세싱 디바이스에 의해 실행되는 것이 가능한 방법들, 프로그램들, 코드들, 프로그램 지시들 또는 다른 유형의 지시들을 저장하기 위한 프로세서와 연관된 저장 매체는 이에 제한되지 않지만 CD-ROM, DVD, 메모리, 하드 디스크, 플래시 드라이브, RAM, ROM, 캐시 등 중 하나 이상을 포함할 수 있다.
프로세서는 다중 프로세서의 속도 및 성능을 강화할 수 있는 하나 이상의 코어들을 포함할 수 있다. 실시예들에서, 프로세스는 둘 이상의 독립 코어들(다이로 불리우는)을 조합하는 듀얼 코어 프로세서, 쿼드 코어 프로세서들, 다른 칩-레벨 다중프로세서 등일 수 있다.
본 출원에서 설명된 방법들 및 시스템들은 서버, 클라이언트, 방화벽, 게이트웨어, 허브, 라우터, 또는 다른 이러한 컴퓨터 및/또는 네트워킹 하드웨어 상에서 컴퓨터 소프트웨어를 실행하는 머신을 통해 부분적으로 또는 전체적으로 배치될 수 있다. 소프트웨어 프로그램은 파일 서버, 프린트 서버, 도메인 서버, 인터넷 서버, 인트라넷 서버, 클라우드 서버, 및 2차 서버, 호스트 서버, 분배 서버 등과 같은 다른 변형들을 포함할 수 있는 서버와 연관될 수 있다. 서버는 유선 또는 무선 매체 등을 통해 다른 서버들, 클라이언트들, 머신들, 및 디바이스들을 액세스하는 것이 가능한 메모리들, 프로세서들, 컴퓨터 판독 가능한 미디어, 저장 미디어, 포트들(물리 및 가상), 통신 디바이스들, 및 인터페이스들 중 하나 이상을 포함할 수 있다. 여기에서 및 다른 곳에서 설명된 바와 같이 방법들, 프로그램들, 또는 코드들은 서버에 의해 실행될 수 있다. 또한, 본 출원에서 설명된 바와 같이 방법들의 실행을 위해 요구된 다른 디바이스들은 서버와 연관된 기반 시설의 부분으로서 고려될 수 있다.
서버는 제한 없이, 클라이언트들, 다른 서버들, 프린터들, 데이터베이스 서버들, 프린트 서버들, 파일 서버들, 통신 서버들, 분배 서버들, 소셜 네트워크들 등을 포함한 다른 디바이스들에 인터페이스를 제공할 수 있다. 부가적으로, 이러한 결합 및/또는 연결은 네트워크에 걸쳐 프로그램의 원격 실행을 가능하게 할 수 있다. 이들 디바이스들 중 일부 또는 모두의 네트워킹은 본 개시의 범위로부터 벗어나지 않고 하나 이상의 위치에서 프로그램 또는 방법의 병렬 프로세싱을 가능하게 할 수 있다. 또한, 인터페이스를 통해 서버에 부착된 디바이스들 중 임의의 것은 방법들, 프로그램들, 코드 및/또는 지시들을 저장하는 것이 가능한 적어도 하나의 저장 매체를 포함할 수 있다. 중앙 저장소는 상이한 디바이스들 상에서 실행될 프로그램 지시들을 제공할 수 있다. 이 구현에서, 원격 저장소는 프로그램 코드, 지시들, 및 프로그램들을 위한 저장 매체로서 동작할 수 있다.
소프트웨어 프로그램은 파일 클라이언트, 프린트 클라이언트, 도메인 클라이언트, 인터넷 클라이언트, 인트라넷 클라이언트 및 2차 클라이언트, 호스트 클라이언트, 분배 클라이언트 등과 같은 다른 변형들을 포함할 수 있는 클라이언트와 연관될 수 있다. 클라이언트는 유선 또는 무선 매체 등을 통해 다른 클라이언트들, 서버들, 머신들, 및 디바이스들을 액세스하는 것이 가능한 메모리들, 프로세서들, 컴퓨터 판독 가능한 미디어, 저장 미디어, 포트들(물리 및 가상), 통신 디바이스들, 및 인터페이스들 중 하나 이상을 포함할 수 있다. 여기에서 및 다른 곳에서 설명된 바와 같이 방법들, 프로그램들, 또는 코드들은 클라이언트에 의해 실행될 수 있다. 또한, 본 출원에서 설명된 바와 같이 방법들의 실행을 위해 요구된 다른 디바이스들은 클라이언트와 연관된 기반 시설의 부분으로서 고려될 수 있다.
클라이언트는 제한 없이, 서버들, 다른 클라이언트들, 프린터들, 데이터베이스 서버들, 인쇄 서버들, 파일 서버들, 통신 서버들, 분배 서버들 등을 포함한 다른 디바이스들에 인터페이스를 제공할 수 있다. 부가적으로, 이러한 결합 및/또는 연결은 네트워크에 걸쳐 프로그램의 원격 실행을 가능하게 할 수 있다. 이들 디바이스들 중 일부 또는 모두의 네트워킹은 본 개시의 범위로부터 벗어나지 않고 하나 이상의 위치에서 프로그램 또는 방법의 병렬 프로세싱을 가능하게 할 수 있다. 또한, 인터페이스를 통해 클라이언트에 부착된 디바이스들 중 임의의 것은 방법들, 프로그램들, 애플리케이션들, 코드 및/또는 지시들을 저장하는 것이 가능한 적어도 하나의 저장 매체를 포함할 수 있다. 중앙 저장소는 상이한 디바이스들 상에서 실행될 프로그램 지시들을 제공할 수 있다. 이 구현에서, 원격 저장소는 프로그램 코드, 지시들, 및 프로그램들을 위한 저장 매체로서 동작할 수 있다.
본 출원에서 설명된 방법들 및 시스템들은 네트워크 기반 시설들을 통해 부분적으로 또는 전체적으로 배치될 수 있다. 네트워크 기반 시설은 이 기술분야에 알려진 바와 같이 컴퓨팅 디바이스들, 서버들, 라우터들, 허브들, 방화벽들, 클라이언트들, 개인용 컴퓨터들, 통신 디바이스들, 라우팅 디바이스들 및 다른 능동형 및 수동형 디바이스들, 모듈들 및/또는 구성요소들과 같은 요소들을 포함할 수 있다. 네트워크 기반 시설과 연관된 컴퓨팅 및/또는 비-컴퓨팅 디바이스(들)는 다른 구성요소들을 제외하고, 플래시 메모리, 버퍼, 스택, RAM, ROM 등과 같은 저장 매체를 포함할 수 있다. 여기에서 및 다른 곳에서 설명된 프로세스들, 방법들, 프로그램 코드들, 지시들은 네트워크 기반 시설 요소들 중 하나 이상에 의해 실행될 수 있다. 본 출원에서 설명된 방법들 및 시스템들은 서비스로서의 소프트웨어(SaaS), 서비스로서의 플랫폼(PaaS), 및/또는 서비스로서의 기반시설(IaaS)의 피처들을 수반하는 것들을 포함한, 임의의 종류의 사설, 커뮤니티, 또는 하이브리드 클라우드 컴퓨팅 네트워크 또는 클라우드 컴퓨팅 환경과 함께 사용하기 위해 적응될 수 있다.
여기에서 및 다른 곳에서 설명된 방법들, 프로그램 코드들, 및 지시들은 다수의 셀들을 가진 셀룰러 네트워크 상에서 구현될 수 있다. 셀룰러 네트워크는 주파수 분할 다중 액세스(FDMA) 네트워크 또는 코드 분할 다중 액세스(CDMA) 네트워크일 수 있다. 셀룰러 네트워크는 모바일 디바이스들, 셀 사이트들, 기지국들, 리피터들, 안테나들, 타워들 등을 포함할 수 있다. 셀 네트워크는 GSM, GPRS, 3G, EVDO, 메쉬, 또는 다른 네트워크 유형들일 수 있다.
여기에서 및 다른 곳에서 설명된 방법들, 프로그램 코드들, 및 지시들은 모바일 디바이스들 상에서 또는 그것을 통해 구현될 수 있다. 모바일 디바이스들은 내비게이션 디바이스들, 셀 전화들, 모바일 전화들, 모바일 개인용 디지털 보조기들, 랩탑들, 팜탑들, 넷북들, 페이저들, 전자 서적 판독기들, 음악 플레이어들 등을 포함할 수 있다. 이들 디바이스들은 다른 구성요소들을 제외하고, 플래시 메모리, 버퍼, RAM, ROM 및 하나 이상의 컴퓨팅 디바이스들과 같은 저장 매체를 포함할 수 있다. 모바일 디바이스들과 연관된 컴퓨팅 디바이스들은 그것 상에 저장된 프로그램 코드들, 방법들, 및 지시들을 실행하는 것이 가능해질 수 있다. 대안적으로, 모바일 디바이스들은 다른 디바이스들과 협력하여 지시들을 실행하도록 구성될 수 있다. 모바일 디바이스들은 서버들과 인터페이싱되며 프로그램 코드들을 실행하도록 구성된 기지국들과 통신할 수 있다. 모바일 디바이스들은 피어-투-피어 네트워크, 메쉬 네트워크, 또는 다른 통신 네트워크 상에서 통신할 수 있다. 프로그램 코드는 서버와 연관된 저장 매체 상에 저장되며 서버 내에 내장된 컴퓨팅 디바이스에 의해 실행될 수 있다. 기지국은 컴퓨팅 디바이스 및 저장 매체를 포함할 수 있다. 저장 디바이스는 기지국들과 연관된 컴퓨팅 디바이스들에 의해 실행된 프로그램 코드들 및 지시들을 저장할 수 있다.
컴퓨터 소프트웨어, 프로그램 코드들, 및/또는 지시들은 다음을 포함할 수 있는 머신 판독 가능한 미디어 상에 저장되고 및/또는 액세스될 수 있다: 몇몇 시간 간격 동안 컴퓨팅을 위해 사용된 디지털 데이터를 보유하는 컴퓨터 구성요소들, 디바이스들 및 기록 미디어; 랜덤 액세스 메모리(RAM)로서 알려진 반도체 저장 장치; 통상적으로, 광학 디스크들과 같은 보다 많은 영구 저장 장치, 하드 디스크들, 테이프들, 드럼들, 카드들 및 다른 유형들과 같은 자기 저장 장치의 형태들을 위한 대용량 저장 장치; 프로세서 레지스터들, 캐시 메모리, 휘발성 메모리, 비-휘발성 메모리; CD, DVD와 같은 광학 저장 장치; 플래시 메모리(예로서, USB 스틱들 또는 키들), 플로피 디스크들, 자기 테이프, 페이퍼 테이프, 펀치 카드들, 독립형 RAM 디스크들, 집 드라이브들, 착탈 가능한 대용량 저장 장치, 오프-라인 등과 같은 착탈 가능한 미디어; 동적 메모리, 정적 메모리, 판독/기록 저장 장치, 변경 가능 저장 장치, 판독 전용, 랜덤 액세스, 순차적 액세스, 위치 어드레싱 가능한, 파일 어드레싱 가능한, 콘텐트 어드레싱 가능한, 네트워크 부착 저장 장치, 저장 영역 네트워크, 바 코드들, 자기 잉크 등과 같은 다른 컴퓨터 메모리.
본 출원에서 설명된 방법들 및 시스템들은 하나의 상태에서 또 다른 것으로 물리적 및/또는 또는 무형의 아이템들을 변형시킬 수 있다. 본 출원에서 설명된 방법들 및 시스템들은 하나의 상태에서 또 다른 것으로 물리적 및/또는 무형의 아이템들을 나타내는 데이터를 또한 변형시킬 수 있다.
도면들 전체에 걸쳐 흐름도들 및 블록도들에서를 포함하여, 본 출원에서 설명되고 묘사된 요소들은 요소들 사이에서의 논리적 경계들을 내포한다. 그러나, 소프트웨어 또는 하드웨어 엔지니어링 실시들에 따르면, 묘사된 실시예들 및 그것의 기능들은 모놀리식 소프트웨어 구조로서, 독립형 소프트웨어 모듈들로서, 또는 외부 루틴들, 코드, 서비스들 등을 이용하는 모듈들, 또는 이것들의 임의의 조합으로서 그것 상에 저장된 프로그램 지시들을 실행하는 것이 가능한 프로세서를 가진 컴퓨터 실행 가능한 미디어를 통해 머신들 상에서 구현될 수 있으며, 모든 이러한 구현들은 본 개시의 범위 내에 있을 수 있다. 이러한 머신들의 예들은, 이에 제한되지 않지만, 개인용 디지털 보조기들, 랩탑들, 개인용 컴퓨터들, 모바일 전화들, 다른 핸드헬드 컴퓨팅 디바이스들, 의료 장비, 유선 또는 무선 통신 디바이스들, 트랜듀서들, 칩들, 계산기들, 위성들, 태블릿 PC들, 전자 서적들, 도구들, 전자 디바이스들, 인공 지능을 가진 디바이스들, 컴퓨팅 디바이스들, 네트워킹 장비, 서버들, 라우터들 등을 포함할 수 있다. 더욱이, 흐름도 및 블록도들에 묘사된 요소들 또는 임의의 다른 논리 구성요소는 프로그램 지시들을 실행하는 것이 가능한 머신 상에서 구현될 수 있다. 따라서, 앞서 말한 도면들 및 설명들은 개시된 시스템들의 기능 양상들을 제시하지만, 이들 기능적 관점들을 구현하기 위한 소프트웨어의 어떤 특정한 배열도 명확하게 서술되거나 또는 그 외 콘텍스트로부터 명확하지 않다면 이들 설명들로부터 추론되지 않아야 한다. 유사하게, 상기 식별되고 설명된 다양한 단계들은 변경될 수 있으며, 단계들의 순서는 본 출원에 개시된 기술들의 특정한 애플리케이션들에 적응될 수 있다는 것이 이해될 것이다. 모든 이러한 변형들 및 수정들은 본 개시의 범위 내에 있도록 의도된다. 이와 같이, 다양한 단계들에 대한 순서의 묘사 및/또는 설명은 특정한 애플리케이션들에 의해 요구거나, 또는 명확하게 서술되거나 또는 그 외 콘텍스트로부터 명확하지 않다면, 이들 단계들에 대한 실행의 특정한 순서를 요구하는 것으로 이해되어서는 안된다.
상기 설명된 방법들 및/또는 프로세스들, 및 그것과 연관된 단계들은 하드웨어, 소프트웨어, 또는 특정한 애플리케이션에 적합한 하드웨어 및 소프트웨어의 임의의 조합으로 실현될 수 있다. 하드웨어는 범용 컴퓨터 및/또는 전용 컴퓨팅 디바이스 또는 특정 컴퓨팅 디바이스 또는 특정 컴퓨팅 디바이스의 특정한 관점 또는 구성요소를 포함할 수 있다. 프로세스들은 내부 및/또는 외부 메모리와 함께, 하나 이상의 마이크로프로세서들, 마이크로제어기들, 내장된 마이크로제어기들, 프로그램 가능한 디지털 신호 프로세서들 또는 다른 프로그램 가능한 디바이스에서 실현될 수 있다. 프로세스들은 또한, 또는 대신에, 애플리케이션 특정 집적 회로, 프로그램 가능한 게이트 어레이, 프로그램 가능한 어레이 로직, 또는 전자 신호들을 프로세싱하도록 구성될 수 있는 임의의 다른 디바이스 또는 디바이스들의 조합에서 구체화될 수 있다. 프로세스들 중 하나 이상은 머신-판독 가능한 매체 상에서 실행되는 것이 가능한 컴퓨터 실행 가능한 코드로서 실현될 수 있다는 것이 추가로 이해될 것이다.
컴퓨터 실행 가능한 코드는 상기 디바이스들, 뿐만 아니라 프로세서들의 이종 조합들, 프로세서 아키텍처들, 또는 상이한 하드웨어 및 소프트웨어의 조합들, 또는 프로그램 지시들을 실행할 수 있는 임의의 다른 머신, 중 하나 상에서 구동하기 위해 저장되고, 컴파일링되거나 또는 해석될 수 있는 C와 같은 구조적 프로그래밍 언어, C++과 같은 오브젝트 지향 프로그래밍 언어, 또는 임의의 다른 고-레벨 또는 저-레벨 프로그래밍 언어(어셈블리 언어들, 하드웨어 기술 언어들, 및 데이터베이스 프로그래밍 언어들 및 기술들을 포함한)를 사용하여 생성될 수 있다.
따라서, 일 양상에서, 상기에서 설명된 방법들 및 그것의 조합들은 하나 이상의 컴퓨팅 디바이스들 상에서 실행할 때, 그것의 단계들을 수행하는 컴퓨터 실행 가능한 코드에서 구체화될 수 있다. 또 다른 양상에서, 방법들은 그것의 단계들을 수행하는 시스템들에서 구체화될 수 있으며, 다수의 방식들로 디바이스들에 걸쳐 분배될 수 있거나, 또는 기능의 모두는 전용, 독립형 디바이스 또는 다른 하드웨어로 통합될 수 있다. 또 다른 양상에서, 상기 설명된 프로세스들과 연관된 단계들을 수행하기 위한 수단은 상기 설명된 하드웨어 및/또는 소프트웨어 중 임의의 것을 포함할 수 있다. 모든 이러한 치환들 및 조합들은 본 개시의 범위 내에 있도록 의도된다.
본 개시는 상세히 도시되고 설명된 바람직한 실시예들과 관련되어 개시되었지만, 그것에 대한 다양한 수정들 및 개선들이 이 기술분야의 숙련자들에게 쉽게 명백해질 것이다. 따라서, 본 개시의 사상 및 범위는 앞서 말한 예에 의해 제한되지 않으며, 법에 의해 허용 가능한 가장 넓은 의미로 이해될 것이다.
본 개시를 설명한 콘텍스트에서(특히 다음의 청구항들의 콘텍스트에서) 용어들(“a” 및 “an” 및 “the”) 및 유사한 지시 대상들의 사용은 달리 본 출원에서 표시되거나 또는 콘텍스트에 의해 명확하게 반박되지 않는다면 단수형 및 복수형 양쪽 모두를 커버하는 것으로 해석될 것이다. 용어들(“포함하는”, “갖는”, “포함시키는”, 및 “함유한”)은 달리 주지되지 않는다면, 제약을 두지 않은 용어들(즉, “이에 제한되지 않지만, ~를 포함시키는”)로서 해석될 것이다. 본 출원에서의 값들의 범위들에 대한 설명은 본 출원에서 달리 표시되지 않는다면, 단지 범위 내에 있는 각각의 별개의 값을 개별적으로 나타내는 약칭 방법으로서 작용하도록 의도되며, 각각의 별개의 값은 그것이 본 출원에서 개별적으로 제시된 것처럼 명세서로 통합된다. 본 출원에서 설명된 모든 방법들은 본 출원에서 달리 표시되지 않는다면 또는 콘텍스트에 의해 명확하게 반박되지 않는다면 임의의 적절한 순서로 수행될 수 있다. 임의의 및 모든 예들, 또는 본 출원에서 제공된 대표적인 언어(예로서, “~와 같은(such as)”)의 사용은 단지 본 개시를 보다 양호하게 예시하도록 의도되며 달리 주장되지 않는다면 본 개시의 범위에 대한 제한을 두지 않는다. 명세서에서의 어떤 언어도 본 개시의 실시에 근본적인 것으로 임의의 비-청구된 요소를 표시하는 것으로 해석되지 않아야 한다.
앞서 기록된 설명은 이 기술분야의 숙련자가 그것의 최상의 모드인 것으로 현재 고려되는 것을 만들며 사용할 수 있게 하지만, 이 기술분야의 숙련자들은 본 출원에서의 특정 실시예, 방법, 및 예들의 변형들, 조합들, 및 등가물들의 존재를 이해하며 인식할 것이다. 본 개시는 그러므로 상기 설명된 실시예, 방법, 및 예들에 의해 제한되지 않아야 하며, 본 개시의 범위 및 사상 내의 모든 실시예들 및 방법들에 의해 제한되어야 한다.
본 출원에 언급된 모든 문서들은 참조로서 본 출원에 통합된다.

Claims (20)

  1. 디바이스에서 프로세스-간 통신을 안전하게 하는 방법에 있어서,
    상기 디바이스의 신뢰 코드 구역(trusted code zone) 내에서 프로세스-간 통신 메커니즘(inter-process communications mechanism)을 동작시키는 단계;
    상기 디바이스의 신뢰 코드 구역 밖으로부터 상기 신뢰 코드 구역내로 프로세스-간 통신 버스를 확장시키는 단계;
    상기 디바이스 상에서의 서비스들 및 상기 디바이스의 상기 신뢰 코드 구역 내에 있지 않은 사용자-공간 애플리케이션들(user-space applications) 사이의 상기 프로세스-간 통신 버스 상에서 프로세스-간 통신을 수행하는 단계; 및
    상기 디바이스의 상기 신뢰 코드 구역 내의 상기 프로세스-간 통신 메커니즘을 사용하여 상기 디바이스 상에서의 서비스들 및 사용자-공간 애플리케이션들 사이에서 상기 프로세스-간 통신을 적응시키는 단계(adapting)를 포함하는, 디바이스에서 프로세스-간 통신을 안전하게 하는 방법.
  2. 청구항 1에 있어서, 상기 프로세스-간 통신 메커니즘을 사용하여 적응된 상기 프로세스-간 통신은 정책 엔진에 의해 결정된 정책에 따라 필터링되는, 디바이스에서 프로세스-간 통신을 안전하게 하는 방법.
  3. 청구항 1에 있어서, 상기 프로세스-간 통신은 정책 엔진에 의해 결정된 정책에 따라 상기 프로세스-간 통신 메커니즘을 사용하여 차단되는, 디바이스에서 프로세스-간 통신을 안전하게 하는 방법.
  4. 청구항 2에 있어서, 상기 정책 엔진은 상기 디바이스의 상기 신뢰 코드 구역 내에 있는, 디바이스에서 프로세스-간 통신을 안전하게 하는 방법.
  5. 청구항 1에 있어서, 상기 디바이스 상에서의 서비스는 사용자 입력 서비스인, 디바이스에서 프로세스-간 통신을 안전하게 하는 방법.
  6. 청구항 1에 있어서, 상기 프로세스-간 통신은 금융 정보를 포함하는, 디바이스에서 프로세스-간 통신을 안전하게 하는 방법.
  7. 청구항 1에 있어서, 상기 신뢰 코드 구역 내에 있지 않은 상기 사용자-공간 애플리케이션과의 프로세스-간 통신을 위한 요청들을 상기 신뢰 코드 구역 내의 상기 사용자-공간 애플리케이션의 신뢰 버전으로 리다이렉트시키는 단계(redirecting)를 더 포함하는, 디바이스에서 프로세스-간 통신을 안전하게 하는 방법.
  8. 안전한 프로세스-간 통신을 가진 디바이스에 있어서,
    상기 디바이스의 신뢰 코드 구역(trusted code zone);
    상기 신뢰 코드 구역 내의 프로세스-간 통신 메커니즘;
    상기 신뢰 코드 구역 밖으로부터 상기 신뢰 코드 구역내로 확장되는 프로세스-간 통신 버스로서, 상기 프로세스-간 통신 버스는 상기 신뢰 코드 구역 내에 위치된 프로세스-간 통신을 지원하는 오브젝트들 및 상기 신뢰 코드 구역 내에 위치되지 않은 프로세스-간 통신을 지원하는 오브젝트들 사이의 프로세스-간 통신(inter-process communication)을 허용하는, 상기 프로세스-간 통신 버스;
    상기 디바이스의 상기 신뢰 코드 구역 내에 위치된 상기 디바이스 상에서의 서비스들; 및
    상기 신뢰 코드 구역 내에 위치되지 않은 상기 디바이스 상에서의 사용자-공간 애플리케이션들(user-space applications)을 포함하며,
    상기 디바이스 상에서의 서비스들 및 상기 디바이스 상에서의 상기 사용자-공간 애플리케이션들 사이의 프로세스-간 통신은 상기 프로세스-간 통신 메커니즘에 의해 적응되는, 안전한 프로세스-간 통신을 가진 디바이스.
  9. 청구항 8에 있어서, 상기 프로세스-간 통신 메커니즘을 사용하여 적응된 상기 프로세스-간 통신은 정책 엔진에 의해 결정된 정책에 따라 필터링되는, 안전한 프로세스-간 통신을 가진 디바이스.
  10. 청구항 8에 있어서, 상기 프로세스-간 통신 메커니즘을 사용하여 적응된 상기 프로세스-간 통신은 정책 엔진에 의해 결정된 정책에 따라 차단되는, 안전한 프로세스-간 통신을 가진 디바이스.
  11. 청구항 10에 있어서, 상기 정책 엔진은 상기 디바이스의 상기 신뢰 코드 구역 내에 있는, 안전한 프로세스-간 통신을 가진 디바이스.
  12. 청구항 8에 있어서, 상기 디바이스 상에서의 서비스는 사용자 입력 서비스인, 안전한 프로세스-간 통신을 가진 디바이스.
  13. 청구항 12에 있어서, 상기 사용자 입력 서비스는 상기 디바이스의 터치-스크린을 위한 터치-스크린 입력 서비스인, 안전한 프로세스-간 통신을 가진 디바이스.
  14. 청구항 8에 있어서, 상기 프로세스-간 통신 메커니즘은 상기 신뢰 코드 구역 내에 있지 않은 상기 사용자-공간 애플리케이션과의 프로세스-간 통신을 위한 요청들을 상기 신뢰 코드 구역 내의 상기 사용자-공간 애플리케이션의 신뢰 버전으로 리다이렉트시키도록 구성되는, 안전한 프로세스-간 통신을 가진 디바이스.
  15. 비-일시적 컴퓨터 판독 가능한 매체에 있어서,
    하나 이상의 프로세서들에 의해 실행 가능한 지시들로서, 상기 하나 이상의 프로세서들로 하여금:
    디바이스의 신뢰 구역 내에서 프로세스-간 통신 메커니즘을 동작시키고;
    상기 디바이스의 신뢰 코드 구역 밖으로부터 상기 신뢰 코드 구역으로 프로세스-간 통신 버스를 확장시키고;
    상기 디바이스 상에서의 서비스들과 상기 디바이스의 상기 신뢰 코드 구역 내에 있지 않은 사용자-공간 애플리케이션들 사이의 상기 프로세스-간 통신 버스 상에서 프로세스-간 통신을 수행시키며; 및
    상기 디바이스의 상기 신뢰 코드 구역 내에서 상기 프로세스-간 통신 메커니즘을 사용하여 상기 디바이스 상에서의 서비스들 및 사용자-공간 애플리케이션들 사이서 상기 프로세스-간 통신을 적응시키는, 상기 지시들을 포함하는, 비-일시적 컴퓨터 판독 가능한 매체.
  16. 청구항 15에 있어서, 정책 엔진은 상기 디바이스의 상기 신뢰 코드 구역 내에 위치되는, 비-일시적 컴퓨터 판독 가능한 매체.
  17. 청구항 16에 있어서, 상기 정책 엔진은 상기 프로세스-간 통신의 적응(adaptation)을 제어하는, 비-일시적 컴퓨터 판독 가능한 매체.
  18. 청구항 15에 있어서, 상기 디바이스 상에서의 서비스는 사용자 입력 서비스인, 비-일시적 컴퓨터 판독 가능한 매체.
  19. 청구항 18에 있어서, 상기 사용자 입력 서비스는 터치-스크린 사용자 입력 서비스인, 비-일시적 컴퓨터 판독 가능한 매체.
  20. 청구항 15에 있어서, 상기 지시들은 추가로 상기 하나 이상의 프로세서들로 하여금 상기 신뢰 코드 구역 내에 있지 않은 상기 사용자-공간 애플리케이션과의 프로세스-간 통신을 위한 요청들을 상기 신뢰 코드 구역 내의 상기 사용자-공간 애플리케이션의 신뢰 버전으로 리다이렉트(redirect)하게끔 실행 가능한, 비-일시적 컴퓨터 판독 가능한 매체.
KR1020167028417A 2014-03-13 2015-03-13 모바일 컴퓨팅에서의 보안을 강제하는 시스템 및 방법 KR20160145574A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/210,382 2014-03-13
US14/210,382 US9773107B2 (en) 2013-01-07 2014-03-13 Systems and methods for enforcing security in mobile computing
PCT/US2015/020492 WO2015138931A1 (en) 2014-03-13 2015-03-13 Systems and methods for enforcing security in mobile computing

Publications (1)

Publication Number Publication Date
KR20160145574A true KR20160145574A (ko) 2016-12-20

Family

ID=54072474

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167028417A KR20160145574A (ko) 2014-03-13 2015-03-13 모바일 컴퓨팅에서의 보안을 강제하는 시스템 및 방법

Country Status (2)

Country Link
KR (1) KR20160145574A (ko)
WO (1) WO2015138931A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2549091B (en) * 2016-03-31 2018-08-29 Thales Holdings Uk Plc A relay node, a method of configuring a relay node, a computer network, and a method of operation of a computer network
US9733992B1 (en) * 2016-05-27 2017-08-15 Huawei Technologies Co., Ltd. Inter-process communication between containers
US11062030B2 (en) * 2018-03-09 2021-07-13 Huawei Technologies Co., Ltd. Systems and methods for managing access control between processes in a computing device
US11645400B2 (en) * 2019-10-04 2023-05-09 Vmware, Inc. Secured interprocess communication

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7584502B2 (en) * 2004-05-03 2009-09-01 Microsoft Corporation Policy engine and methods and systems for protecting data
US9787681B2 (en) * 2012-01-06 2017-10-10 Optio Labs, Inc. Systems and methods for enforcing access control policies on privileged accesses for mobile devices

Also Published As

Publication number Publication date
WO2015138931A1 (en) 2015-09-17

Similar Documents

Publication Publication Date Title
US9773107B2 (en) Systems and methods for enforcing security in mobile computing
US9609020B2 (en) Systems and methods to enforce security policies on the loading, linking, and execution of native code by mobile applications running inside of virtual machines
US9787681B2 (en) Systems and methods for enforcing access control policies on privileged accesses for mobile devices
US20130312058A1 (en) Systems and methods for enhancing mobile security via aspect oriented programming
US20140157355A1 (en) Systems and methods for enhancing mobile device security with a processor trusted zone
US9712530B2 (en) Systems and methods for enforcing security in mobile computing
US11038876B2 (en) Managing access to services based on fingerprint matching
US11301569B2 (en) Quarantine of software based on analysis of updated device data
US10986122B2 (en) Identifying and remediating phishing security weaknesses
US9323929B2 (en) Pre-identifying probable malicious rootkit behavior using behavioral contracts
JP2021511561A (ja) 資産管理方法および装置ならびに電子デバイス
US20110161452A1 (en) Collaborative malware detection and prevention on mobile devices
WO2013158789A1 (en) Detection and prevention of installation of malicious mobile applications
WO2015013410A2 (en) Systems and methods for enhancing mobile security via aspect oriented programming
Kandukuru et al. Android malicious application detection using permission vector and network traffic analysis
KR20160145574A (ko) 모바일 컴퓨팅에서의 보안을 강제하는 시스템 및 방법
US10963569B2 (en) Early boot driver for start-up detection of malicious code
Muttik Securing mobile devices: Present and future
Lima et al. An Introduction to Mobile Device Security