KR101829114B1 - 모바일 디바이스에 대한 거동 특징들의 적응적 관찰 - Google Patents

모바일 디바이스에 대한 거동 특징들의 적응적 관찰 Download PDF

Info

Publication number
KR101829114B1
KR101829114B1 KR1020157022331A KR20157022331A KR101829114B1 KR 101829114 B1 KR101829114 B1 KR 101829114B1 KR 1020157022331 A KR1020157022331 A KR 1020157022331A KR 20157022331 A KR20157022331 A KR 20157022331A KR 101829114 B1 KR101829114 B1 KR 101829114B1
Authority
KR
South Korea
Prior art keywords
information
computing device
processor
status
behavior
Prior art date
Application number
KR1020157022331A
Other languages
English (en)
Other versions
KR20150110653A (ko
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
Priority claimed from US13/923,547 external-priority patent/US9495537B2/en
Priority claimed from US14/161,853 external-priority patent/US20140150100A1/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20150110653A publication Critical patent/KR20150110653A/ko
Application granted granted Critical
Publication of KR101829114B1 publication Critical patent/KR101829114B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W24/00Supervisory, monitoring or testing arrangements
    • H04W24/04Arrangements for maintaining operational condition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/043Distributed expert systems; Blackboards
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/12Detection or prevention of fraud
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/12Detection or prevention of fraud
    • H04W12/128Anti-malware arrangements, e.g. protection against SMS fraud or mobile malware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/60Context-dependent security
    • H04W12/63Location-dependent; Proximity-dependent

Abstract

비정상의 또는 성능 저하하는 모바일 디바이스 거동들을 지능적으로, 동적으로, 및/또는 적응적으로 검출하기 위한 방법들, 디바이스들 및 시스템들은 관찰될 컴퓨팅 디바이스 거동들, 관찰될 거동들의 수, 및 모바일 디바이스 거동들이 관찰될 상세 레벨 또는 세분도를 결정한다. 다양한 양태들은 과도한 양의 프로세싱, 메모리, 또는 에너지 자원들을 필요로 하는 일 없이 비정상의 또는 성능 저하하는 모바일 디바이스 거동들을 효율적으로 식별한다.

Description

모바일 디바이스에 대한 거동 특징들의 적응적 관찰{ADAPTIVE OBSERVATION OF BEHAVIORAL FEATURES ON A MOBILE DEVICE}
관련 출원들
본 출원은 2014년 1월 23일자로 출원된 발명의 명칭이 "Adaptive Observation of Driver and Hardware Level Behavioral Features on a Mobile Device"인 미국 특허 출원 제14/161,853호를 우선권 주장하는데, 이 미국 특허 출원은 2013년 6월 21일자로 출원된 발명의 명칭이 "Adaptive Observation of Behavioral Features on a Mobile Device"인 미국 특허 출원 제13/923,547호의 일부 계속이며, 후자의 미국 특허 출원은 2013년 1월 25일자로 출원된 발명의 명칭이 "Adaptive Observation of Behavioral Features on a Mobile Device"인 미국 특허 가출원 제61/756,963호를 우선권 주장하며, 이것들 전부의 전체 내용은 이로써 모든 면에서 참조에 의해 통합된다.
본 출원은 2013년 9월 26일자로 출원된 발명의 명칭이 "Adaptive Observation of Driver and Hardware Level Behavioral Features on a Mobile Device"인 미국 특허 가출원 제61/882,833호를 또한 우선권 주장하며, 그 전체 내용은 이로써 모든 면에서 참조에 의해 통합된다.
셀룰러 및 무선 통신 기술들은 지난 몇 년간 폭발적인 성장을 보였다. 이 성장은 양호한 통신들, 하드웨어, 더 큰 네트워크들, 및 더욱 신뢰성 있는 프로토콜들에 의해 가열되었다. 무선 서비스 제공자들은 이제 그들의 고객들에게 특징들 및 서비스들의 줄곧 확장하는 어레이를 제공하고, 사용자들에게 정보, 자원들, 및 통신들에 대한 전례 없는 액세스 레벨들을 제공할 수 있다. 이들 서비스 향상들과 보조를 맞추기 위해, 모바일 전자 디바이스들 (예컨대, 셀룰러 폰들, 테블릿들, 랩톱들 등) 은 그 어느 때보다 더 강력하고 복잡해지고 있다. 이 복잡성은 모바일 디바이스의 장기 및 지속적인 성능 및 전력 이용 레벨들에 부정적으로 영향을 미칠 수 있는 악성 (malicious) 소프트웨어, 소프트웨어 충돌들, 하드웨어 결함들, 및 다른 유사한 에러들 또는 현상들에 대한 새로운 기회들을 창출하였다. 그러므로, 모바일 디바이스의 장기 및 지속적인 성능 및 전력 이용 레벨들에 부정적으로 영향을 미칠 수도 있는 모바일 디바이스 거동들 및/또는 조건들을 식별 및 정정하는 것은 소비자들에게 유익하다.
다양한 양태들은 시간 경과에 따라 모바일 디바이스의 성능 및/또는 전력 이용 레벨들을 종종 저하시키는 모바일 디바이스 거동들 및/또는 조건들을 효율적으로 식별, 예방, 및/또는 정정하기 위하여 모바일 디바이스들의 거동 특징들의 적응적 관찰들을 위한 방법들, 디바이스들 및 시스템들을 포함한다. 일 양태는 정상 동작 패턴들과 불일치하는 모바일 디바이스 거동들을 인식하기 위해 시구간에 걸쳐 모바일 디바이스 거동들을 관찰하는 방법을 포함한다. 이 양태의 방법은, 그룹 모바일 디바이스 동작들, 모바일 디바이스 이벤트들, 데이터 네트워크 활동, 시스템 자원 사용, 모바일 디바이스 상태, 프로세스 간 통신(inter-process communication)들, 드라이버 통계, 하드웨어 컴포넌트 스테이터스, 하드웨어 카운터들, 소프트웨어 애플리케이션들의 액션들 또는 동작들; 소프트웨어 다운로드들, 디바이스 또는 컴포넌트 설정들에 대한 변경들, 애플리케이션 레벨에서의 조건들 및 이벤트들, 라디오 레벨에서의 조건들 및 이벤트들, 및 센서 레벨에서의 조건들 및 이벤트들, 및 관찰들의 제한된 세트로부터 비정상의 (suspicious) 모바일 디바이스 거동을 식별하기 위해 모바일 디바이스 거동들을 적응적으로 관찰하는 것으로부터 하나 이상의 모바일 디바이스 거동들을 관찰을 위해 동적으로 선택하는 동작을 포함할 수도 있다.
일 양태의 방법에서, 모바일 디바이스 동작들은, 애플리케이션 프레임워크 또는 실행시간 라이브러리에서의 라이브러리 애플리케이션 프로그래밍 인터페이스 (application programming interface, API) 호출들, 시스템 호출 API들, 파일 시스템 및 네트워킹 서브시스템 동작들, 파일 시스템 활동, 파일명들에 대한 검색들, 파일 액세스들의 카테고리들, 파일 생성, 파일 삭제, 파일 읽기/쓰기/탐색 동작들, 및 파일 권한 (permission) 변경 중 하나 이상을 포함할 수도 있다.
일 양태의 방법에서, 모바일 디바이스 이벤트들은 디바이스 상태 변경들 및 센서 디바이스 상태 변경들 중 하나 이상을 포함할 수도 있다. 일 양태에서, 데이터 네트워크 활동은, 접속 유형들, 프로토콜들, 포트 번호들, 디바이스가 접속된 서버/클라이언트, 접속 수, 통신들의 볼륨 또는 빈도 (frequency), 폰 네트워크 활동, 전송된 호출들/메시지들의 유형 및 수, 수신된 호출들/메시지들의 유형 및 수, 인터셉트된 호출들/메시지들의 유형 및 수, 호출 정보, 텍스트 메시징 정보, 미디어 메시징, 사용자 계정 정보, 송신물들, 음성메일, 및 디바이스 식별자들 중 하나 이상을 포함할 수도 있다.
일 양태에서, 모바일 디바이스 시스템 자원 사용은 포크들의 수를 모니터링하는 것, 메모리 액세스 동작들을 모니터링하는 것, 및 열린 파일 수를 모니터링하는 것 중 하나 이상을 포함할 수도 있다. 일 양태의 방법에서, 모바일 디바이스 상태는 모바일 디바이스 상태는, 디스플레이 온/오프 상태, 잠금/잠금해제 상태, 배터리 충전 상태, 카메라 상태, 및 마이크로폰 상태 중 하나 이상을 포함할 수도 있다.
일 양태에서, 프로세스 간 통신들은, 중요한 서비스들에 대한 의도들을 모니터링하는 것, 프로세스 간 통신들의 정도를 모니터링하는 것, 및 팝업 윈도우들을 모니터링하는 것 중 하나 이상을 포함할 수도 있다. 일 양태에서, 드라이버 통계는, 카메라들, 센서들, 전자 디스플레이들, WiFi 통신 컴포넌트들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 주변 디바이스들, 무선 통신 컴포넌트들, 및 외부 메모리 칩들 중 하나 이상에 대한 드라이버들로부터의 통계를 포함할 수도 있다.
일 양태에서, 모바일 디바이스 하드웨어 컴포넌트 스테이터스는, 카메라들, 센서들, 전자 디스플레이들, WiFi 통신 컴포넌트들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 타이머들, 주변 디바이스들, 무선 통신 컴포넌트들, 외부 메모리 칩들, 전압 조정기들, 발진기들, 위상 동기 루프들, 주변기기 브릿지들, 및 모바일 컴퓨팅 디바이스 상에서 실행되는 프로세서들 및 클라이언트들을 지원하는데 사용되는 유사한 다른 컴포넌트들 중 하나 이상을 포함할 수도 있다.
일 양태에서, 모바일 디바이스 하드웨어 카운터들은, 모바일 컴퓨팅 디바이스 및/또는 모바일 디바이스 서브시스템들의 상태 또는 스테이터스를 나타내는 하드웨어 카운터들, 및 하드웨어 관련 활동들 또는 이벤트들의 카운트 또는 상태를 저장하도록 구성된 프로세서들/코어들의 특수목적 레지스터들 중 하나 이상을 포함할 수도 있다.
일 양태에서, 소프트웨어 애플리케이션들의 액션들 또는 동작들은, 로케이션 정보, 카메라 정보, 가속도계 정보, 브라우저 정보, 브라우저 기반 통신들의 콘텐츠, 음성 기반 통신들의 콘텐츠, 단거리 라디오 통신들, 텍스트 기반 통신들의 콘텐츠, 레코딩된 오디오 파일들의 콘텐츠, 전화번호부 또는 연락처 정보, 연락처 목록들, 캘린더 정보, 로케이션 정보, 레코딩된 오디오 정보, 가속도계 정보, 소프트웨어 애플리케이션으로 및 그로부터 통신된 통지들, 사용자 검증들, 및 사용자 패스워드 중 하나 이상을 포함한, 소프트웨어 애플리케이션들에 의해 사용된 정보의 모니터링을 포함할 수도 있다.
일 양태에서, 소프트웨어 다운로드들은, 애플리케이션 다운로드 서버와, 제 2 소프트웨어 애플리케이션의 다운로딩 및/또는 설치를 요청하는 제 1 소프트웨어 애플리케이션으로부터의 소프트웨어 다운로드들 중 하나 이상을 포함할 수도 있다.
일 양태에서, 디바이스 또는 컴포넌트 설정들에 대한 변경들은, 나침반 정보, 모바일 디바이스 설정들, 배터리 수명, 자이로스코프 정보, 압력 센서들, 및 스크린 활동 중 하나 이상에 대한 변경들을 포함할 수도 있다.
일 양태에서, 애플리케이션 레벨에서의 조건들 및 이벤트들은, 얼굴 인식 소프트웨어를 통해 사용자를 관찰하는 것, 소셜 스트림들을 관찰하는 것, 사용자에 의해 입력된 노트들을 관찰하는 것, 전자 지불 서비스 (이를테면 PassBook, 구글 Wallet, 및 Paypal) 의 사용에 관계된 이벤트를 관찰하는 것, 가상 사설 네트워크들, 동기화, 음성 검색들, 음성 제어, 언어 번역기들, 컴퓨테이션들을 위한 데이터의 오프로딩, 비디오 스트리밍의 사용, 사용자 활동 없는 카메라 사용, 및 사용자 활동 없는 마이크로폰 사용에 관련한 이벤트들을 관찰하는 것 중 하나 이상을 포함할 수도 있다.
일 양태에서, 라디오 레벨에서의 조건들 및 이벤트들은, 라디오 통신 링크들의 확립 또는 정보의 송신 전의 모바일 디바이스와의 사용자 상호작용, 다수의 가입자 식별 모듈 카드들, 인터넷 라디오, 모바일 폰 테더링, 컴퓨테이션들을 위한 데이터의 오프로딩, 디바이스 상태 통신들, 게임 컨트롤러 또는 홈 제어기로서의 사용, 차량 통신들, 모바일 디바이스 동기화, 포지셔닝, 피어 투 피어 (p2p) 통신들, 동기화, 차량 대 차량 통신들, 및/또는 머신 대 머신 (m2m) 을 위한 라디오들 (WiFi, Bluetooth, 블루투스 등) 의 사용의 모니터링, 및 네트워크 트래픽 사용, 통계, 또는 프로파일들의 모니터링 중 임의의 것 또는 모두의 존부 (presence), 존재 (existence) 또는 양을 결정하는 것을 포함할 수도 있다.
일 양태에서, 센서 레벨에서의 조건들 및 이벤트들은, 마그넷 센서들을 모니터링하는 것, 근접장 통신들을 검출하는 것, 신용 카드 스캐너, 바코드 스캐너, 또는 모바일 태그 판독기로부터 정보를 수집하는 것, USB 전력 충전 소스의 존부를 검출하는 것, 키보드 또는 보조 디바이스가 모바일 디바이스에 커플링되었음을 검출하는 것, 모바일 디바이스가 컴퓨팅 디바이스에 (예컨대, USB 등을 통해) 커플링되었음을 검출하는 것, LED, 플래시, 손전등, 또는 광원이 수정되었는지 또는 가능하지 않게 되었는지를 결정하는 것, 스피커 또는 마이크로폰이 턴 온 또는 전력 공급되었는지를 결정하는 것, 충전 또는 파워 이벤트를 검출하는 것, 모바일 디바이스가 게임 컨트롤러로서 사용되고 있음을 검출하는 것, 의료용/보건 센서들로부터의 또는 사용자의 신체를 스캐닝하는 것으로부터의 정보를 수집하는 것, 유니버셜 직렬 버스 (USB) 포트 및 오디오 잭 중 하나에 꽂아진 외부 센서로부터 정보를 수집하는 것, 촉각 또는 햅틱 센서로부터 정보를 수집하는 것, 및 모바일 디바이스의 열적 상태에 관한 정보를 수집하는 것 중 하나 이상을 포함할 수도 있다.
일 양태에서, 하나 이상의 모바일 디바이스 거동들을 관찰을 위해 동적으로 선택하는 것은, 시구간에 걸쳐 모바일 디바이스 거동들을 관찰하는 것, 및 불일치 동작들에 연관된 거동들의 제한된 세트를 관찰될 모바일 디바이스 거동들로서 식별하는 것을 포함할 수도 있다.
일 양태에서, 불일치 동작들에 연관된 거동들의 제한된 세트를 관찰될 모바일 디바이스 거동들로서 식별하는 것은, 적응 필터에 의한 필터링 후에 하이 레벨 애플리케이션, 시스템 커널 및 드라이버 API 중 하나 이상으로부터 거동 입력들을 수신하는 것, 모바일 디바이스의 동작들에 관한 콘텍스트 정보를 수신하는 것, 수신된 거동 입력들 및 수신된 콘텍스트 입력의 공간적 상관들을 수행하는 것; 및 거동 벡터를 생성하는 것을 포함할 수도 있다.
일 양태에서, 거동 벡터를 생성하는 것은, 관찰된 모바일 디바이스 거동들을 간결하게 기술하는 벡터 데이터 구조를 생성하는 것을 포함할 수도 있다. 일 양태에서, 거동 벡터를 생성하는 것은 모바일 디바이스의 다양한 레벨들/모듈들에서 API들로부터 수집된 정보를 포함할 수도 있는 벡터를 생성하는 것을 포함할 수도 있다. 일 양태에서, 거동 벡터를 생성하는 것은, 라이브러리 API 호출들, 시스템 호출들, 파일 시스템 및 네트워크 서브시스템 동작들, 센서 디바이스 상태 변경들, 파일 시스템 활동, 네트워크 활동, 전화기 활동, 메모리 액세스 동작들, 모바일 디바이스의 상태, 전자 디스플레이의 파워 온/오프 상태, 모바일 디바이스의 잠금/잠금해제 상태, 남은 배터리 전력량, 프로세스 간 통신들, 드라이버 통계, 및 하드웨어 카운터들 중 하나 이상에 관계된 정보를 포함할 수도 있는 벡터를 생성하는 것을 포함할 수도 있다.
일 양태에서, 거동 벡터를 생성하는 것은, 모바일 디바이스의 특징 또는 거동을 각각이 의미하는 일련의 숫자들을 포함할 수도 있는 벡터 데이터 구조를 생성하는 것을 포함할 수도 있다. 일 양태에서, 일련의 숫자들 중 적어도 하나는, 모바일 디바이스의 카메라가 사용중인지의 여부, 모바일 디바이스에 의해 생성되었던 네트워크 트래픽이 얼마나 많은지, 및 모바일 디바이스로부터 전송되었던 인터넷 메시지들이 몇이나 되는지 중 하나 이상을 식별한다.
일 양태에서, 거동 벡터를 생성하는 것은, 호출 정보, 텍스트 메시징 정보, 미디어 메시징 정보, 사용자 계정 정보, 로케이션 정보, 카메라 정보, 가속도계 정보, 및 브라우저 정보 중 하나 이상을 포함할 수도 있는 벡터를 생성하는 것을 포함할 수도 있다. 일 양태에서, 거동 벡터를 생성하는 것은, 모바일 디바이스의 애플리케이션 레벨에서 수집된 정보를 포함할 수도 있는 벡터를 생성하는 것을 포함할 수도 있다. 일 양태에서, 거동 벡터를 생성하는 것은, 모바일 디바이스의 라디오 레벨에서 수집된 정보를 포함할 수도 있는 벡터를 생성하는 것을 포함할 수도 있다. 일 양태에서, 거동 벡터를 생성하는 것은, 모바일 디바이스의 센서 레벨에서 수집된 정보를 포함할 수도 있는 벡터를 생성하는 것을 포함할 수도 있다.
일 양태에서, 불일치 동작들에 연관된 거동들의 제한된 세트를 관찰될 모바일 디바이스 거동들로서 식별하는 것은, 수신된 거동 입력들 및 수신된 콘텍스트 입력의 시간적 상관들을 수행하는 것을 더 포함할 수 있으며, 거동 벡터를 생성하는 것은, 공간적 및 시간적 상관들의 결과에 기초하여 거동 벡터를 생성하는 것을 포함할 수도 있다.
추가의 양태가 프로세서 코어들의 각각이 위에서 설명된 방법들의 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 2 이상의 프로세서 코어들을 구비한 멀티-코어 프로세서를 갖는 모바일 컴퓨팅 디바이스를 포함한다. 추가의 양태가 위에서 설명된 방법들의 기능들과 동작들을 수행하기 위한 수단을 갖는 모바일 디바이스를 포함한다. 추가의 양태는 프로세서로 하여금 위에서 설명된 방법들의 동작들을 수행하게 하도록 구성된 프로세서 실행가능 명령들을 저장한 비일시적 프로세서 판독가능 저장 매체를 포함한다.
첨부 도면들은 본원에 통합되고 이 출원서를 구성하는 부분으로서, 본 발명의 예시적인 양태들을 도시하고, 위에서 주어진 전반적인 설명 및 아래에 주어지는 상세한 설명과 함께 본 발명의 특징들을 설명하는데 기여한다.
도 1은 다양한 양태들을 구현하기에 적합한 일 예의 시스템 온 칩의 아키텍처 도면이다.
도 2는 다양한 양태들에 따라 동적 및 적응적 관찰들을 수행하도록 구성된 컴퓨팅 시스템에서 예의 논리적 컴포넌트들 및 정보 흐름들을 도시하는 블록도이다.
도 3은 일 양태에 따라 동적 및 적응적 관찰들을 수행하도록 구성된 관찰자 모듈에서 예의 논리적 컴포넌트들 및 정보 흐름들을 도시하는 블록도이다.
도 4는 일 양태에 따라 관찰자 모듈들을 구현하는 컴퓨팅 시스템에서 논리적 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
도 5a는 다양한 양태들에 따라 관찰자 모듈들 및 관찰자 데몬들을 구현하는 컴퓨팅 시스템에서 논리적 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
도 5b는 다양한 양태들에 따라 관찰자 모듈들 및 관찰자 데몬들을 구현하는 컴퓨팅 시스템에서 논리적 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
도 6a는 다양한 양태들에 따라 관찰자 모듈들 및 관찰자 데몬들을 구현하는 컴퓨팅 시스템에서 논리적 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
도 6b는 다양한 양태들에 따라 관찰자 모듈들 및 관찰자 데몬들을 구현하는 컴퓨팅 시스템에서 논리적 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
도 7a는 다양한 양태들에 따라 관찰자 모듈들 및 관찰자 데몬들을 구현하는 컴퓨팅 시스템에서 논리적 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
도 7b는 다양한 양태들에 따라 관찰자 모듈들 및 관찰자 데몬들을 구현하는 컴퓨팅 시스템에서 논리적 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
도 8a는 다양한 양태들에 따라 관찰자 모듈들 및 관찰자 데몬들을 구현하는 컴퓨팅 시스템에서 논리적 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
도 8b는 다양한 양태들에 따라 관찰자 모듈들 및 관찰자 데몬들을 구현하는 컴퓨팅 시스템에서 논리적 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
도 9a는 모바일 디바이스들에 대한 적응적 관찰들을 수행하기 위한 일 양태의 방법을 도시하는 프로세스 흐름도이다.
도 9b는 모바일 디바이스들에 대한 적응적 관찰들을 수행하기 위한 다른 양태의 방법을 도시하는 프로세스 흐름도이다.
도 10은 모바일 디바이스들에 대한 적응적 관찰들을 수행하기 위한 다른 양태의 방법을 도시하는 프로세스 흐름도이다.
도 11a 내지 도 11c는 모바일 디바이스들에 대한 적응적 관찰들을 수행하기 위한 추가 양태의 방법들을 도시하는 프로세스 흐름도들이다.
도 12는 다양한 양태들과 함께 사용하기에 적합한 모바일 디바이스의 컴포넌트 블록도이다.
도 13은 다양한 양태들과 함께 사용하기에 적합한 일 예의 모바일 디바이스의 예시도이다.
도 14는 다양한 양태들과 함께 사용하기에 적합한 일 예의 서버 컴퓨터의 예시도이다.
다양한 양태들이 첨부 도면들을 참조하여 상세히 설명될 것이다. 가능한 곳이라면 어디서든, 동일한 참조 번호들이 도면들 전체를 통해서 동일하거나 유사한 부분들을 참조하는데 사용될 것이다. 특정한 예들 및 구현예들에 대한 언급들은 예시의 목적을 위한 것이고, 발명 또는 청구항들의 범위를 제한하려는 의도는 아니다.
단어 "예시적"은 본원에서는 "예, 사례, 또는 예시로서 역할을 한다"는 의미로 사용된다. "예시적인" 것으로서 본원에서 설명되는 어떤 구현예라도 다른 구현예들보다 바람직하거나 유익하다고 생각할 필요는 없다.
"모바일 컴퓨팅 디바이스"와 "모바일 디바이스"라는 용어들은, 셀룰러 전화기들, 스마트폰들, 개인 또는 모바일 멀티미디어 플레이어들, 개인 정보 단말기들 (PDA들), 랩톱 컴퓨터들, 태블릿 컴퓨터들, 스마트북들, 울트라북들, 팜탑 컴퓨터들, 무선 전자 메일 수신기들, 멀티미디어 인터넷 가능 셀룰러 전화기들, 무선 게이밍 제어기들, 그리고 메모리, 성능이 중요한 프로그램가능 프로세서를 구비하고 전력 절약 방법들이 도움이 되도록 배터리 전력 하에서 동작하는 유사한 개인용 전자 디바이스들 중 임의의 하나 또는 전부를 지칭하기 위해 본원에서 교환적으로 사용된다. 다양한 양태들은 제한된 자원들을 갖고 배터리로 작동하는 스마트폰들과 같은 모바일 컴퓨팅 디바이스들에 대해 특히 유용하지만, 그 양태들은 프로세서를 구비하고 애플리케이션 프로그램들을 실행하는 임의의 전자 디바이스에서 대체로 유용하다.
다양한 양태들의 동작들을 수행하는 프로그램가능 프로세서 상의 실행을 위한 "프로그램 코드" 또는 컴퓨터 프로그램 코드는 C, C++, C#, Smalltalk, Java, JavaScript, Visual Basic, Structured Query 언어 (예컨대, Transact-SQL), Perl과 같은 고급 프로그래밍 언어, 또는 다양한 다른 프로그래밍 언어들로 작성될 수도 있다. 본원에서 사용되는 바와 같은 컴퓨터 판독가능 저장 매체 상에 저장된 프로그램 코드 또는 프로그램들은 프로세서에 의해 포맷이 이해가능한 기계 언어 코드 (이를테면 오브젝트 코드) 를 지칭한다.
"성능 저하"라는 용어는 매우 다양한 바람직하지 않은 모바일 디바이스 동작들 및 특성들, 이를테면 더 긴 프로세싱 시간들, 더 낮은 배터리 수명, 개인 데이터의 소실, 악의적 경제 활동 (예컨대, 무단 (unauthorized) 프리미엄 SMS 메시지의 송신), 모바일 디바이스의 징발에 관련한 동작들, 또는 스파이 또는 봇네트 활동들을 위한 폰의 이용 등을 지칭하기 위해 본원에서 사용된다.
"시스템 온 칩 (system on chip)" (SOC) 이란 용어는 단일 기판 상에 통합된 다수의 자원들 및/또는 프로세서들을 포함하는 단일 집적회로 (IC) 칩을 지칭하기 위해 본원에서 사용된다. 단일 SOC가 디지털, 아날로그, 혼합된 신호, 및 라디오-주파수 기능들을 위한 회로를 포함할 수도 있다. 단일 SOC가 또한 임의의 수의 범용 및/또는 특화된 프로세서들 (디지털 신호 프로세서들, 모뎀 프로세서들, 비디오 프로세서들 등), 메모리 블록들 (예컨대, ROM, RAM, 플래시 등), 및 자원들 (예컨대, 타이머들, 전압 조정기들, 발진기들 등) 을 포함할 수도 있다. SOC들은 통합된 자원들 및 프로세서들을 제어하기 위한, 뿐만 아니라 주변 디바이스들을 제어하기 위한 소프트웨어를 또한 포함할 수도 있다.
"멀티코어 프로세서"라는 용어는 프로그램 명령들을 읽고 실행하도록 구성된 2 이상의 독립 프로세싱 코어들 (예컨대, CPU 코어들) 을 포함하는 단일 집적회로 (IC) 칩 또는 칩 패키지를 지칭하기 위해 본원에서 사용된다. SOC가 다수의 멀티코어 프로세서들을 포함할 수도 있고, SOC에서의 각각의 프로세서가 코어라고 지칭될 수도 있다. "멀티프로세서"라는 용어는 프로그램 명령들을 읽고 실행하도록 구성된 2 이상의 프로세싱 유닛들을 포함하는 시스템 또는 디바이스를 지칭하기 위해 본원에서 사용된다.
일반적으로, 모바일 디바이스의 성능 및 전력 효율은 시간 경과에 따라 저하한다. 최근에, 안티-바이러스 회사들 (예컨대, 맥아피 (McAfee), 시만텍 (Symantec) 등) 은 이 저하를 느려지게 하는 것을 목표로 하는 모바일 안티-바이러스, 방화벽, 및 암호화 제품들을 내놓기 시작했다. 그러나, 다수의 이들 솔루션들은, 모바일 디바이스의 프로세싱 및 배터리 자원들의 대다수를 소비하며, 연장된 시구간들 동안 모바일 디바이스를 느려지게 하거나 또는 쓸모 없게 만들고, 및/또는 그렇지 않으면 사용자 경험을 저하시킬 수도 있는 계산 집약적 (computationally-intensive) 스캐닝 엔진의 모바일 디바이스 상의 주기적 실행에 의존한다. 덧붙여서, 이들 솔루션들은 알려진 바이러스들 및 악성코드을 검출하는 것으로 통상 제한되고, 다수의 복잡한 요인들 및/또는 시간 경과에 따른 모바일 디바이스의 저하에 기여하기 위해 종종 결합되는 상호작용들을 (예컨대, 성능 저하가 바이러스들 또는 악성코드로 인한 것이 아닐 경우) 해결하지 못한다. 이들 및 다른 이유들로, 현존하는 안티-바이러스, 방화벽, 및 암호화 제품들은, 시간 경과에 따른 모바일 디바이스의 저하에 기여할 수도 있는 수많은 요인들을 식별하기 위한, 모바일 디바이스 저하를 방지하기 위한, 또는 노화 모바일 디바이스를 그것의 원래의 상태로 효율적으로 복원하기 위한 적절한 해결책들을 제공하지 못한다.
컴퓨팅 디바이스 상에서 실행하는 프로세스들 또는 애플리케이션 프로그램들의 거동을 모델링하는 다양한 다른 솔루션들이 존재하고, 이러한 거동 모델들은 컴퓨팅 디바이스들 상의 악성 및 양성 (benign) 프로세스/프로그램들 간을 구별하는데 사용될 수도 있다. 그러나, 이들 현존하는 모델링 솔루션들은 모바일 디바이스들 상의 사용에 적합하지 않은데, 이러한 솔루션들은 상당한 량의 프로세싱, 메모리, 및 에너지 자원들을 소비하는 계산 집약적 프로세스들의 실행을 일반적으로 필요로 하고 그런 자원들의 전부는 모바일 디바이스들 상에서 부족할 수도 있기 때문이다. 덧붙여서, 이들 솔루션들은 개개의 애플리케이션 프로그램들 또는 프로세스들의 거동을 평가하는 것으로 일반적으로 제한되고, 성능-저하 모바일 디바이스 거동들의 정확한 또는 완전한 모델을 제공하지 못한다. 이들 및 다른 이유들로, 현존하는 모델링 솔루션들은, 시간 경과에 따른 모바일 디바이스의 저하에 기여할 수도 있는 수많은 요인들을 식별하는데, 모바일 디바이스 저하를 방지하는데, 또는 노화 모바일 디바이스를 그것의 원래의 상태로 효율적으로 복원하는데 적절하지 않다.
형편없이 설계된 소프트웨어 애플리케이션들, 악성코드, 바이러스들, 단편화된 메모리, 백그라운드 프로세스들 등을 포함한, 시간 경과에 따른 모바일 디바이스의 성능 및 전력 이용 레벨들에서의 저하에 기여할 수도 있는 다양한 요인들이 있다. 그러나, 현대의 모바일 디바이스들의 복잡도로 인해, 사용자들, 운영 체제들, 및/또는 애플리케이션 프로그램들 (예컨대, 안티-바이러스 소프트웨어 등) 이 이러한 문제들의 근원들을 정확하고 효율적으로 식별하고 및/또는 식별된 문제들에 대해 적절한 구제책들을 제공하는 것은 점점 더 어렵다. 그 결과, 모바일 디바이스 사용자들은 시간 경과에 따른 모바일 디바이스의 성능 및 전력 이용 레벨들에서의 저하를 방지하기 위한, 또는 노화 모바일 디바이스를 그것의 원래의 성능 및 전력 이용 레벨들로 복원하기 위한 구제책들이 현재 거의 없다.
다양한 양태들은 시간 경과에 따라 모바일 디바이스의 성능 및/또는 전력 이용 레벨들을 종종 저하시키는 조건들 및/또는 모바일 디바이스 거동들을 효율적으로 식별, 방지, 및/또는 정정하는 디바이스들, 시스템들, 및 방법들을 제공한다.
위에서 언급했듯이, 모바일 디바이스들은 비교적 제한된 프로세싱, 메모리, 및 에너지 자원들을 갖는 자원 제약된 시스템들이다. 위에서 또한 언급된 바와 같이, 현대의 모바일 디바이스들은 복잡한 시스템들이고, 시간 경과에 따라 모바일 디바이스의 저하에 기여할 수도 있는 큰 수 (즉, 수천) 의 요인들이 있다. 이들 제약조건들로 인해, 현대의 모바일 디바이스들의 복잡한데도 자원-제약된 시스템들의 성능 및/또는 전력 이용 레벨들을 저하시킬 수도 있는 모든 다양한 프로세스들, 거동들, 또는 요인들 (또는 그것들의 결합물들) 을 모니터링/관찰하는 것이 종종 실현가능하지 않다.
현존하는 솔루션들의 위에서 언급된 제한들을 극복하기 위해, 다양한 양태들은 관찰되는 것들인 모바일 디바이스 거동들, 관찰될 것들인 거동들의 수, 및 모바일 디바이스 거동들이 관찰될 상세 레벨 (즉, 세분도) 을 지능적으로, 동적으로, 및/또는 적응적으로 결정한다. 다양한 양태들은 과도한 양의 프로세싱, 메모리, 또는 에너지 자원들을 소비하는 일 없이 비정상의 또는 성능 저하하는 모바일 디바이스 거동들을 효율적으로 식별한다. 다양한 양태들은 비정상의 또는 성능 저하하는 모바일 디바이스 거동들을 정정할 수도 있다. 다양한 양태들은 식별된 비정상의 또는 성능 저하하는 모바일 디바이스 거동들이 시간 경과에 따라 모바일 디바이스의 성능 및 전력 이용 레벨들을 저하시키는 것을 방지할 수도 있다. 다양한 양태들은 노화 모바일 디바이스를 그것의 원래의 성능 및 전력 이용 레벨들로 복원시킬 수도 있다.
일 양태에서, 모바일 디바이스 프로세서는, 라이브러리 애플리케이션 프로그래밍 인터페이스 (API) 호출들, 시스템 호출 API들, 파일 시스템 동작들, 네트워킹 서브시스템 동작들, 수많은 센서들에 대한 드라이버 API 호출들, 상태 변경들, 및 하이 레벨에서의 다른 유사한 이벤트들/동작들 중 임의의 것 또는 모두를 관찰하도록, 그리고 시간 경과에 따라 모바일 디바이스의 저하에 기여할 수도 있는 프로그램들/프로세스들 (예컨대, 능동적으로 악의적인, 엉망으로 작성된 프로그램들 등) 을 식별하기 위해 이들 하이 레벨 관찰들에 기초하여 실시간 거동 분석 동작들을 수행하도록 구성될 수도 있다. 모바일 디바이스 프로세서는 충분한 정보가 비정상의 또는 성능 저하하는 모바일 디바이스 거동의 원인을 식별 및/또는 정정하는데 이용될 수 있기까지 모바일 디바이스 거동들이 관찰될 상세 레벨 (즉, 세분도) 을 지능적으로 증가시키도록 구성될 수도 있다.
일 양태에서, 모바일 디바이스 프로세서는 온라인 실시간 분석 동작들의 결과들 및/또는 시스템 자원들의 가용성에 기초하여 (예컨대, 관찰할 새로운 거동들을 선택하며, 더 적은 거동들을 관찰하는 등을 함으로써) 관찰되는 거동들의 세트를 동적으로 변경하도록 구성될 수도 있다.
다양한 양태들에서, 모바일 디바이스 프로세서는 실시간 분석 동작들의 결과들에 기초하여 그리고/또는 시스템 자원들의 가용성에 기초하여 관찰 세분도 (즉, 모바일 디바이스 거동들이 관찰되는 상세 레벨) 를 동적으로 조절하도록 구성될 수도 있다. 예를 들어, 다양한 양태들에서, 모바일 디바이스 프로세서는, 비정상의 또는 성능 저하하는 모바일 디바이스 거동의 소스가 식별되기까지, 프로세싱 임계값이 도달되기까지, 또는 비정상의 또는 성능 저하하는 모바일 디바이스 거동의 소스가 관찰 세분도에서의 추가의 증가들로부터 식별될 수 없다는 것을 모바일 디바이스 프로세서가 결정하기까지, 하나 이상의 관찰들의 세분도를 재귀적으로 증가시키도록 (즉, 더 미세한 또는 더 상세한 관찰들을 하도록) 구성될 수도 있다.
일 양태에서, 모바일 디바이스 프로세서는 시스템 자원들의 가용성에 기초하여 관찰 세분도를 동적으로 조절하도록 구성될 수도 있다. 예를 들어, 모바일 디바이스 프로세서는 모바일 디바이스 자원들이 이용가능하거나 또는 충분히 이용되지 않는다는 또는 상기 모바일 디바이스가 전원 공급부에 현재 접속되어 있다는 결정에 응답하여 관찰 세분도를 증가시키도록 구성될 수도 있다. 다른 예로서, 모바일 디바이스 프로세서는 컴퓨팅 디바이스가 과도한 부하 또는 낮은 배터리 하에 있다는 결정에 응답하여 관찰 세분도를 감소시키도록 구성될 수도 있다.
일 양태에서, 모바일 디바이스의 관찰자 프로세스, 데몬, 모듈, 또는 서브시스템 (본원에서 "모듈"이라고 총칭됨) 이 다양한 애플리케이션 프로그래밍 인터페이스들 (API들) 을 모바일 디바이스 시스템의 다양한 레벨들에서 계장 (instrument) 또는 조정하고, 계장된 API들로부터 거동 정보를 수집할 수도 있다. 일 양태에서, 모바일 디바이스는 분석기 모듈을 또한 구비할 수도 있고, 분석기 모듈은 하나 이상의 분류기들을 또한 구비할 수도 있다. 관찰자 모듈은 수집된 거동 정보를 (예컨대, 메모리 쓰기 동작, 기능 호출 등을 통해) 모바일 디바이스의 분류기 모듈 및/또는 분석기 모듈로 (예컨대, 메모리 쓰기 동작 등을 통해) 통신할 수도 있는데, 그 분류기 모듈 및/또는 분석기 모듈은, 수집된 거동 정보를 분석 및/또는 분류하며, 거동 벡터들을 생성하며, 다양한 다른 모바일 디바이스 서브시스템들로부터 수집된 정보 및 거동 벡터에 기초하여 공간적 및/또는 시간적 상관들을 생성하고, 및/또는 특정 모바일 디바이스 거동, 소프트웨어 애플리케이션, 또는 프로세스가 양성인지, 비정상인지, 또는 악성/성능 저하인지를 결정할 수도 있다. 다양한 양태들에서, 생성된 거동 벡터들 및 공간적/시간적 상관들은, 모바일 디바이스의 성능 또는 배터리 소비 레벨들에 부정적으로 영향을 미칠 높을 가능성을 갖는 것으로 결정되는 거동들을 식별하고 그 거동들에 응답하기 위해 모바일 디바이스의 다양한 모듈들에 의해 (예컨대, 작동 모듈 등에 의해) 사용될 수도 있다.
모바일 디바이스의 분석기 모듈은, 모바일 디바이스 거동이 양성인지, 비정상인지, 또는 악성/성능 저하인지를 결정하기 위해 관찰자 모듈에 의해 수집된 거동 정보에 데이터, 알고리즘들, 및/또는 거동 모델들을 적용하는 것을 포함할 수도 있는 실시간 분석 동작들을 수행하도록 구성될 수도 있다. 일 양태에서, 분석기 모듈은, 디바이스 거동이 양성 또는 악성 중 어느 하나라고 분류하거나 또는 확정적으로 결정하기 위한 충분한 정보를 분류기가 갖지 못할 경우, 모바일 디바이스 거동이 비정상이라고 결정하도록 구성될 수도 있다. 일 양태에서, 분석기 모듈은 디바이스 거동이 비정상이라고 결정할 경우, 자신의 실시간 분석 동작들의 결과들을 관찰자 모듈로 통신하도록 구성될 수도 있다. 관찰자 모듈은, 자신의 관찰들의 세분도 (즉, 모바일 디바이스 거동들이 관찰되는 상세 레벨) 를 조정하고 및/또는 분석기 모듈로부터 수신된 정보 (예컨대, 실시간 분석 동작들의 결과들) 에 기초하여 관찰되는 거동들을 변경하며, 새로운 또는 부가적인 거동 정보를 생성 또는 수집하고, 새로운/부가적인 정보를 추가의 분석/분류를 위해 분류기 모듈로 전송할 수도 있다.
관찰자 및 분석기 모듈들 (예컨대, 자신의 실시간 분석 동작들의 결과들을 관찰자 모듈로 전송하는 분석기 모듈, 및 업데이트된 거동 정보를 분석기 모듈로 전송하는 관찰자 모듈) 간의 이러한 피드백 통신들은, 비정상의 또는 성능 저하하는 모바일 디바이스 거동의 소스가 식별되기까지, 프로세싱 또는 배터리 소비 임계값이 도달되기까지, 또는 비정상의 또는 성능 저하하는 모바일 디바이스 거동의 소스가 관찰 세분도에서의 추가의 증가들로부터 식별될 수 없다고 모바일 디바이스 프로세서가 결정하기까지, 모바일 디바이스 프로세서가 관찰들의 세분도를 재귀적으로 증가시키는 (즉, 더 미세한 또는 더 상세한 관찰들을 하게 하는) 것 또는 관찰되는 특징들/거동들을 변경하는 것을 가능하게 할 수도 있다. 이러한 피드백 통신들은, 모바일 디바이스 프로세서가 모바일 디바이스의 프로세싱, 메모리, 또는 에너지 자원들의 과도한 양을 소비하는 일 없이 모바일 디바이스에서 데이터/거동 모델들을 국소적으로 조정 또는 수정하는 것을 또한 가능하게 한다.
다양한 양태들에서, 관찰자 모듈 및/또는 분석기 모듈은 관찰된 거동들의 간결한 정의를 포함하는 거동 벡터들을 생성할 수도 있다. 다시 말하면, 거동 벡터가 모바일 디바이스, 소프트웨어 애플리케이션, 또는 프로세스의 관찰된 거동을 값 또는 벡터 데이터-구조로 (예컨대, 숫자의 문자열 형태 등으로) 간결하게 기술할 수도 있다. 거동 벡터가 모바일 디바이스 시스템이 모바일 디바이스 거동들을 빠르게 인식, 식별, 및/또는 분석하는 것을 가능하게 하는 식별자로서 또한 기능을 할 수도 있다. 일 양태에서, 관찰자 모듈 및/또는 분석기 모듈은 모바일 디바이스의 특징 또는 거동을 각각 나타내는 일련의 숫자들을 포함하는 거동 벡터를 생성할 수도 있다. 예를 들어, 거동 벡터에 포함된 숫자들은 모바일 디바이스의 카메라가 사용중인지의 여부를 (예컨대, 0 또는 1로서), 모바일 디바이스로부터 송신된 또는 그 모바일 디바이스에 의해 생성된 네트워크 트래픽이 얼마 (예컨대, 20 KB/sec 등) 인지를, 통신된 인터넷 메시지들이 몇 개 (예컨대, SMS 메시지들의 수 등) 인지를 등을 나타낼 수도 있다.
다양한 양태들은 단일 프로세서와 멀티프로세서 시스템들, 및 시스템-온-칩 (SOC) 을 포함하는 다수의 상이한 모바일 디바이스들에서 구현될 수도 있다. 도 1은 다양한 양태들을 구현하는 컴퓨팅 디바이스들에서 사용될 수도 있는 일 예의 시스템-온-칩 (SOC; 100) 아키텍처를 도시하는 아키텍처 도면이다. SOC (100) 는 다수의 이종 프로세서들, 이를테면 디지털 신호 프로세서 (DSP; 101), 모뎀 프로세서 (104), 그래픽 프로세서 (106), 및 애플리케이션 프로세서 (108) 를 구비할 수도 있다. SOC (100) 는 이종 프로세서들 (102, 104, 106, 108) 중 하나 이상에 접속된 하나 이상의 코프로세서들 (110) (예컨대, 벡터 코-프로세서) 을 또한 구비할 수도 있다. 각각의 프로세서 (102, 104, 106, 108, 110) 는 하나 이상의 코어들을 구비할 수도 있고, 각각의 프로세서/코어는 다른 프로세서들/코어들과는 독립적인 동작들을 수행할 수도 있다. 예를 들어, SOC (100) 는 제 1 유형의 운영 체제 (예컨대, FreeBSD, LINIX, OS X 등) 를 실행하는 프로세서와 제 2 유형의 운영 체제 (예컨대, 마이크로소프트 윈도우즈 8) 를 실행하는 프로세서를 구비할 수도 있다.
SOC (100) 는 센서 데이터, 아날로그-디지털 변환들, 무선 데이터 송신들을 관리하기 위한, 그리고 게임들 및 영화들에 대한 인코딩된 오디오 신호들을 프로세싱하는 것과 같은 다른 특수 동작들을 수행하기 위한 아날로그 회로 및 커스텀 회로 (114) 를 또한 구비할 수도 있다. 그 SOC (100) 는 시스템 컴포넌트들 및 자원들 (116), 이를테면 전압 조정기들, 발진기들, 위상 동기 루프들, 주변 브리지들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 타이머들과, 컴퓨팅 디바이스 상에서 실행하고 있는 클라이언트들 및 프로세서들을 지원하는데 사용되는 다른 유사한 컴포넌트들을 더 구비할 수도 있다.
시스템 컴포넌트들 (116) 과 커스텀 회로 (114) 는 주변 디바이스들, 이를테면 카메라들, 전자 디스플레이들, 무선 통신 디바이스들, 외부 메모리 칩들 등과 인터페이싱하는 회로를 구비할 수도 있다. 프로세서들 (102, 104, 106, 108) 은 하나 이상의 메모리 엘리먼트들 (112), 시스템 컴포넌트들 및 자원들 (116), 그리고 커스텀 회로 (114) 에 상호접속/버스 모듈 (124) 을 통해 상호접속될 수도 있는데, 그 상호접속/버스 모듈은 재구성가능 로직 게이트들의 어레이를 구비하고 및/또는 버스 아키텍처 (예컨대, CoreConnect, AMBA 등) 를 구현할 수도 있다. 통신들이 고급 상호접속들, 이를테면 고 성능 NoC들 (networks-on chip) 에 의해 제공될 수도 있다.
SOC (100) 는 SOC 외부의 자원들, 이를테면 클록 (118) 및 전압 조정기 (120) 와 통신하기 위한 입력/출력 모듈 (예시되지 않음) 을 더 구비할 수도 있다. SOC 외부의 자원들 (예컨대, 클록 (118), 전압 조정기 (120)) 은 내부 SOC 프로세서들/코어들 (예컨대, DSP (102), 모뎀 프로세서 (104), 그래픽 프로세서 (106), 애플리케이션 프로세서 (108) 등) 중 2 이상에 의해 공유될 수도 있다.
SOC (100) 는 스피커들, 사용자 인터페이스 엘리먼트들 (예컨대, 입력 버튼들, 터치 스크린 디스플레이 등), 마이크로폰 어레이들, 물리적 조건들 (예컨대, 로케이션, 방향, 모션, 배향, 진동, 압력 등) 을 모니터링하는 센서들, 카메라들, 나침반들, GPS 수신기들, 통신 회로 (예컨대, Bluetooth®, WLAN, WiFi 등), 및 현대의 전자 디바이스들의 다른 잘 알려진 컴포넌트들 (예컨대, 가속도계 등) 을 포함한, 센서들로부터의 센서 데이터를 수집하기에 적합한 하드웨어 및/또는 소프트웨어 컴포넌트들을 또한 포함할 수도 있다.
위에서 논의된 SOC (100) 외에도, 다양한 양태들은, 단일 프로세서, 다수의 프로세서들, 다중코어 프로세서들, 또는 그것들 중 임의의 조합을 포함할 수도 있는 매우 다양한 컴퓨팅 시스템들에서 구현될 수도 있다.
도 2는 다양한 양태들에 따라 동적 및 적응적 관찰들을 수행하도록 구성된 컴퓨팅 시스템 (200) 에서 예의 논리적 컴포넌트들 및 정보 흐름들을 도시한다. 도 2에 도시된 예에서, 컴퓨팅 시스템 (200) 은 거친 관찰자 모듈 (202), 분석기 모듈 (204), 외부 콘텍스트 정보 모듈 (206), 및 작동 모듈 (208) 을 구비한다.
모듈들 (202 내지 208) 의 각각은 소프트웨어, 하드웨어, 또는 그것들의 임의의 조합으로 구현될 수도 있다. 다양한 양태들에서, 모듈들 (202 내지 208) 은 운영 체제의 부분들 내에 (예컨대, 커널 내에, 커널 공간에서, 사용자 공간에서 등으로), 별개의 프로그램들 또는 애플리케이션들 내에, 전문화된 하드웨어 버퍼들 또는 프로세서들, 또는 그것들의 임의의 조합으로 구현될 수도 있다. 일 양태에서, 모듈들 (202 내지 208) 중 하나 이상은 모바일 디바이스 (102) 의 하나 이상의 프로세서들 상에서 실행하는 소프트웨어 명령들로서 구현될 수도 있다.
거동 관찰자 모듈 (202) 은 모바일 디바이스의 다양한 레벨들/모듈들에서 API들을 조정 또는 계장하고 계장된 API들을 통해 다양한 레벨들/모듈들에서 모바일 디바이스 동작들 및 이벤트들 (예컨대, 시스템 이벤트들, 상태 변경들 등) 을 모니터링/관찰하도록, 관찰된 동작들/이벤트들에 관계된 정보를 수집하도록, 수집된 정보를 지능적으로 필터링하도록, 필터링된 정보에 기초하여 하나 이상의 관찰들을 생성하도록, 생성된 관찰들을 메모리에 (예컨대, 로그 파일, 캐시 메모리 등에) 저장하도록 및/또는 생성된 관찰들을 (예컨대, 메모리 쓰기들, 기능 호출들 등을 통해) 거동 분석기 모듈 (204) 로 전송하도록 구성될 수도 있다.
거동 관찰자 모듈 (202) 은 애플리케이션 프레임워크 또는 실행시간 라이브러리들에서의.라이브러리 애플리케이션 프로그래밍 인터페이스 (API) 호출들, 시스템 호출 API들, 파일 시스템 및 네트워킹 서브시스템 동작들, 디바이스 (센서 디바이스들을 포함함) 상태 변경들, 및 다른 유사한 이벤트들에 관계된 정보를 수집함으로써 모바일 디바이스 동작들 및 이벤트들 모니터링/관찰할 수도 있다. 거동 관찰자 모듈 (202) 은 파일명들에 대한 검색, 파일 액세스들의 카테고리들 (개인 정보 또는 일반 데이터 파일들), 파일들 (예컨대, 유형 exe, zip 등) 을 생성 또는 삭제하는 것, 파일 읽기/쓰기/탐색 동작들, 파일 사용권한을 변경하는 것 등을 포함할 수도 있는 파일 시스템 활동을 또한 모니터링할 수도 있다.
거동 관찰자 모듈 (202) 은 접속 유형들, 프로토콜들, 포트 번호들, 디바이스가 접속된 서버/클라이언트, 접속 수, 통신들의 볼륨 또는 빈도 등을 포함할 수도 있는 데이터 네트워크 활동을 또한 모니터링/관찰할 수도 있다. 거동 관찰자 모듈 (202) 은 전송된, 수신된, 또는 인터셉트된 호출들 또는 메시지들 (예컨대, SMS 등) 의 유형 및 수 (예컨대, 행해진 프리미엄 호출들의 수) 를 포함할 수도 있는 전화 네트워크 활동을 모니터링할 수도 있다.
거동 관찰자 모듈 (202) 은 포커들의 수, 메모리 액세스 동작들, 열린 파일들의 수 등을 모니니터링하는 것을 포함할 수도 있는 시스템 자원 사용을 또한 모니터링/관찰할 수도 있다. 거동 관찰자 모듈 (202) 은 다양한 요인들, 이를테면 디스플레이가 온인지 또는 오프인지, 디바이스가 잠겨있는지 또는 잠금해제되어 있는지, 남은 배터리 양, 카메라의 상태 등을 모니터링하는 것을 포함할 수도 있는 모바일 디바이스의 상태를 모니터링할 수도 있다. 거동 관찰자 모듈 (202) 은, 예를 들어, 중요한 서비스들 (브라우저, 계약 제공자 등) 에 대한 의도들, 프로세스 간 통신들의 정도, 팝업 윈도우들 등을 모니터링함으로써 프로세스 간 통신들 (IPC) 을 또한 모니터링할 수도 있다.
거동 관찰자 모듈 (202) 은, 카메라들, 센서들, 전자 디스플레이들, WiFi 통신 컴포넌트들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 타이머들, 주변 디바이스들, 무선 통신 컴포넌트들, 외부 메모리 칩들, 전압 조정기들, 발진기들, 위상 동기 루프들, 주변기기 브릿지들, 그리고 모바일 컴퓨팅 디바이스 상에서 실행되는 프로세서들 및 클라이언트들을 지원하는데 사용되는 유사한 다른 컴포넌트들을 포함할 수도 있는 하나 이상의 하드웨어 컴포넌트들의 스테이터스 및/또는 드라이버 통계를 또한 모니터링/관찰할 수도 있다.
거동 관찰자 모듈 (202) 은 모바일 컴퓨팅 디바이스 및/또는 모바일 디바이스 서브시스템들의 상태 또는 스테이터스를 나타내는 하나 이상의 하드웨어 카운터들을 또한 모니터링/관찰할 수도 있다. 하드웨어 카운터는, 모바일 컴퓨팅 디바이스에서 발생하는 하드웨어 관련 활동들 또는 이벤트들의 카운트 또는 상태를 저장하도록 구성되는, 프로세서들/코어들의 특수목적 레지스터를 포함할 수도 있다.
거동 관찰자 모듈 (202) 은, 소프트웨어 애플리케이션들의 액션들 또는 동작들, 애플리케이션 다운로드 서버 (예컨대, Apple® App Store 서버) 로부터의 소프트웨어 다운로드들, 소프트웨어 애플리케이션들에 의해 사용된 모바일 디바이스 정보, 호출 정보, 텍스트 메시징 정보 (예컨대, SendSMS, BlockSMS, ReadSMS 등), 미디어 메시징 정보 (예컨대, ReceiveMMS), 사용자 계정 정보, 로케이션 정보, 카메라 정보, 가속도계 정보, 브라우저 정보, 브라우저 기반 통신들의 콘텐츠, 음성 기반 통신들의 콘텐츠, 단거리 라디오 통신들 (예컨대, 블루투스, WiFi 등), 텍스트 기반 통신들의 콘텐츠, 레코딩된 오디오 파일들의 콘텐츠, 전화번호부 또는 연락처 정보, 연락처 목록들 등을 또한 모니터링/관찰할 수도 있다.
거동 관찰자 모듈 (202) 은, 음성메일 (VoiceMailComm), 디바이스 식별자들 (DeviceIDComm), 사용자 계정 정보 (UserAccountComm), 캘린더 정보 (CalendarComm), 로케이션 정보 (LocationComm), 레코딩된 오디오 정보 (RecordAudioComm), 가속도계 정보 (AccelerometerComm) 등을 포함하는 통신물들을 포함한, 모바일 디바이스의 송신물들 또는 통신물들을 모니터링/관찰할 수도 있다.
거동 관찰자 모듈 (202) 은 나침반 정보에 대한 업데이트들/변경들의 사용, 모바일 디바이스 설정들, 배터리 수명, 자이로스코프 정보, 압력 센서들, 마그넷 센서들, 스크린 활동 등을 모니터링/관찰할 수도 있다. 거동 관찰자 모듈 (202) 은 소프트웨어 애플리케이션으로 및 그로부터 통신된 통지들 (AppNotifications), 애플리케이션 업데이트들 등을 모니터링/관찰할 수도 있다. 거동 관찰자 모듈 (202) 은 제 2 소프트웨어 애플리케이션의 다운로딩 및/또는 설치를 요청하는 제 1 소프트웨어 애플리케이션에 관계된 조건들 또는 이벤트들을 모니터링/관찰할 수도 있다. 거동 관찰자 모듈 (202) 은 사용자 검증, 이를테면 패스워드의 입력 등에 관계된 조건들 또는 이벤트들을 모니터링/관찰할 수도 있다.
모바일 디바이스 프로세서는, 애플리케이션 레벨, 라디오 레벨, 및 센서 레벨을 포함한 모바일 디바이스의 다수의 레벨들에서 컨디션 또는 이벤트들을 관찰하도록 구성될 수도 있다. 애플리케이션 레벨 관찰들은 얼굴 인식 소프트웨어를 통해 사용자를 관찰하는 것, 소셜 스트림들을 관찰하는 것, 사용자에 의해 입력된 노트들을 관찰하는 것, PassBook/구글 Wallet/Paypal 등과 같은 전자 지불 서비스의 사용에 관계된 이벤트들을 관찰하는 것을 포함할 수도 있다. 애플리케이션 레벨 관찰들은, 가상 사설 네트워크들 (VPN들) 의 사용에 관련한 이벤트들과, 동기화, 음성 검색, 음성 제어 (예컨대, 하나의 단어를 말함으로써 폰을 잠금/잠금해제), 언어 번역기들, 컴퓨테이션들을 위한 데이터의 오프로딩, 비디오 스트리밍, 사용자 활동 없는 카메라 사용,사용자 활동 없는 마이크로폰 사용 등에 관계된 이벤트들을 관찰하는 것을 또한 포함할 수도 있다.
라디오 레벨 관찰들은, 라디오 통신 링크들의 확립 또는 정보의 송신 전의 모바일 디바이스와의 사용자 상호작용, 이중 또는 다수의 가입자 식별 모듈들 (SIM) 또는 SIM 카드들, 인터넷 라디오, 모바일 폰 테더링, 컴퓨테이션들을 위한 데이터의 오프로딩, 디바이스 상태 통신들, 게임 컨트롤러 또는 홈 제어기로서의 사용, 차량 통신들, 모바일 디바이스 동기화 등 중 임의의 것 또는 그 이상의 존부, 존재 또는 양을 결정하는 것을 포함할 수도 있다. 라디오 레벨 관찰들은 포지셔닝, 피어 투 피어 (p2p) 통신들, 동기화, 차량 대 차량 통신들, 및/또는 머신 대 머신 (m2m) 통신들을 위한 라디오들 (WiFi, 와이맥스, 블루투스 등) 의 사용을 모니터링하는 것을 또한 포함할 수도 있다. 라디오 레벨 관찰들은 네트워크 트래픽 사용, 통계, 또는 프로파일들을 더 포함할 수도 있다.
센서 레벨 관찰들은 모바일 디바이스의 사용랑 및/또는 외부 환경을 결정하기 위해 마그넷 센서 또는 다른 센서를 모니터링하는 것을 포함할 수도 있다. 예를 들어, 모바일 디바이스 프로세서는 폰이 홀스터 내에 있는지를 (예컨대, 홀스터 내의 자석을 감지하도록 구성된 마그넷 센서를 통해) 또는 사용자의 주머니에 있는지를 (예컨대, 카메라 또는 광 센서에 의해 검출된 광의 양을 통해) 결정하도록 구성될 수도 있다. 모바일 디바이스가 홀스터 내에 있음을 검출하는 것은 비정상의 거동들을 인식하는 것에 관계가 있을 수도 있는데, 예를 들어, 모바일 디바이스가 홀스터된 동안 발생하는 사용자에 의한 액티브 사용에 관련된 활동들 및 기능들 (예컨대, 사진들 또는 비디오들의 촬영, 메시지들의 전송, 음성 호출 수행, 사운드들의 레코딩 등) 이 (예컨대, 사용자를 추적하거나 또는 염탐하기 위해) 디바이스 상에서 실행하는 불법 (nefarious) 프로세스들의 징후들일 수 있기 때문이다. 사용 또는 외부 환경들에 관련된 센서 레벨 관찰들의 다른 예들은, 근접장 통신들 (NFC) 을 검출하는 것, 신용 카드 스캐너, 바코드 스캐너, 또는 모바일 태그 판독기로부터의 정보를 수집하는 것, USB 전력 충전 소스의 존부를 검출하는 것, 키보드 또는 보조 디바이스가 모바일 디바이스에 커플링되었음을 검출하는 것, 모바일 디바이스가 컴퓨팅 디바이스에 (예컨대, USB 등을 통해) 커플링되었음을 검출하는 것, 발광 다이오드 (LED), 플래시, 손전등, 또는 광원이 수정 또는 가능하지 않게 되었는지를 검출하는 것 (예컨대, 비상 시그널링 앱 등을 악의적으로 가능하지 않게 하는 것), 스피커 또는 마이크로폰이 턴 온 또는 전력 공급되었음을 검출하는 것, 충전 또는 파워 이벤트를 검출하는 것, 모바일 디바이스가 게임 컨트롤러로서 사용되고 있음을 검출하는 것 등을 포함한다. 센서 레벨 관찰들, 의료 또는 보건 센서들로부터 또는 사용자의 신체를 스캐닝하는 것으로부터 정보를 수집하는 것, USB/오디오 잭에 꽂아진 외부 센서로부터의 정보를 수집하는 것, 촉각 또는 햅틱 센서로부터 (예컨대, 진동기 인터페이스 등을 통해) 정보를 수집하는 것, 모바일 디바이스의 열적 상태에 관계된 정보를 수집하는 것 등을 또한 포함할 수도 있다.
모니터링되는 요인들의 수를 관리가능 레벨로 줄이기 위해, 일 양태에서, 거동 관찰자 모듈 (202) 은, 모바일 디바이스의 저하에 기여할 수 있는 모든 요인들의 작은 서브세트인 거동들 또는 요인들의 초기 세트를 모니터링/관찰함으로써 거친 관찰들을 수행할 수도 있다. 일 양태에서, 거동 관찰자 모듈 (202) 은 클라우드 서비스 제공자 네트워크 (118) 에서 네트워크 서버 (116) 및/또는 컴포넌트로부터 거동들 및/또는 요인들의 초기 세트를 수신할 수도 있다. 일 양태에서, 거동들/요인들의 초기 세트는 네트워크 서버 (116) 또는 클라우드 서비스 제공자 네트워크 (118) 로부터 수신된 데이터/거동 모델들에서 특정될 수도 있다.
분석기 모듈 (204) 은, 시간 경과에 따른 디바이스의 저하에 기여하고 있거나 (또는 기여할 가능성이 있거나), 또는 디바이스 상의 문제들을 초래할 수도 있는 거동들, 프로세스들, 또는 프로그램들을 식별하기 위해 정보 (즉, 거친 관찰들) 의 제한된 세트를 이용하는 지능을 구비할 수도 있다. 예를 들어, 분석기 모듈 (204) 은, 다양한 모듈들 (예컨대, 관찰자 모듈 (202), 외부 콘텍스트 정보 모듈 (206) 등) 로부터 수집된 정보를 (예컨대, 관찰들의 형태로) 분석하도록, 모바일 디바이스의 정상 동작 거동들을 학습하도록, 모바일 디바이스의 거동들의 거동 모델들을 생성하도록, 그리고 비정상의 모바일 디바이스 거동들을 식별하기 위해 생성된 모델들과 관찰자 모듈 (202) 로부터 수신된 정보/관찰들을 비교하도록 구성될 수도 있다.
위에서 언급했듯이, 관찰자 모듈 (202) 은 모바일 디바이스 동작들 및 이벤트들을 모니터링/관찰할 수도 있다. 다양한 양태들에서, 모바일 디바이스 동작들 및 이벤트들을 관찰하는 것은, 애플리케이션 프레임워크 또는 실행시간 라이브러리들에서의 라이브러리 API 호출들, 시스템 호출 API들, 파일 시스템 및 네트워킹 서브시스템 동작들, 디바이스 (센서 디바이스들을 포함함) 상태 변경들, 및 다른 유사한 이벤트들 중 임의의 것 또는 모두에 관계된 정보를 수집하는 것을 포함할 수도 있다. 일 양태에서, 관찰자 모듈 (202) 은 파일명들에 대한 검색, 파일 액세스들의 카테고리들 (개인 정보 또는 일반 데이터 파일들), 파일들 (예컨대, 유형 exe, zip 등) 을 생성 또는 삭제하는 것, 파일 읽기/쓰기/탐색 동작들, 파일 사용권한을 변경하는 것 등을 포함할 수도 있는 파일 시스템 활동을 모니터링할 수도 있다. 일 양태에서, 관찰자 모듈 (202) 은 접속 유형들, 프로토콜들, 포트 번호들, 디바이스가 접속된 서버/클라이언트, 접속 수, 통신들의 볼륨 또는 빈도 등을 포함할 수도 있는 데이터 네트워크 활동을 또한 모니터링할 수도 있다. 일 양태에서, 관찰자 모듈 (202) 은 전송된, 수신된, 또는 인터셉트된 호출들 또는 메시지들 (예컨대, SMS 등) 의 유형 및 수 (예컨대, 행해진 프리미엄 호출들의 수) 를 포함할 수도 있는 전화 네트워크 활동을 모니터링할 수도 있다. 일 양태에서, 관찰자 모듈 (202) 은 포크들의 수, 메모리 사용들, 열린 파일 수 등을 모니터링하는 것을 포함할 수도 있는 사용되는 시스템 자원들을 모니터링할 수도 있다. 일 양태에서, 관찰자 모듈 (202) 은 다양한 요인들, 이를테면 디스플레이가 온인지 또는 오프인지, 디바이스가 잠겨있는지 또는 잠금해제되어 있는지, 남은 배터리 양, 카메라의 상태 등을 모니터링하는 것을 포함할 수도 있는 디바이스 상태를 모니터링할 수도 있다. 일 양태에서, 관찰자 모듈 (202) 은, 예를 들어, 중요한 서비스들 (브라우저, 계약 제공자 등) 에 대한 의도들, 프로세스 간 통신들의 정도, 팝업 윈도우들 등을 모니터링함으로써 프로세스 간 통신들 (IPC) 을 또한 모니터링할 수도 있다.
모니터링되는 요인들의 수를 관리가능 레벨로 줄이기 위해, 관찰자 모듈 (202) 은 모바일 디바이스의 저하에 기여할 수 있는 요인들의 작은 서브 세트를 모니터링/관찰함으로써 거친 관찰들을 수행하고, 거친 관찰들을 분석기 모듈 (204) 로 전송할 수도 있다. 일 실시형태에서, 거동들의 초기 세트 및/또는 요인들의 서브 세트는 모바일 디바이스들 상의 양성 및 문제 있는 애플리케이션들의 분석에 의해 선택될 수도 있다.
분석기 모듈 (204) 은 관찰자 모듈 (202) 로부터의 거친 관찰들을 수신하고, 모바일 디바이스의 저하에 잠재적으로 기여할 수도 있는, 수신된 거친 관찰들에 연관된 서브시스템들, 프로세스들, 및/또는 애플리케이션들을 식별할 수도 있다. 이는, 예를 들어, 수신된 정보와 외부 콘텍스트 정보 모듈 (206) 로부터 수신된 상황적 정보를 비교하는 분석기 모듈 (204) 에 의해 달성될 수도 있다.
분석기 모듈 (204) 은 식별된 서브시스템들, 프로세스들 또는 애플리케이션들에 대한 더 깊은 로깅/관찰들 또는 최종 로깅을 수행 또는 가능하게 할 것을 관찰자 모듈 (202) 에게 지시할 수도 있다. 관찰자 모듈 (202) 은 식별된 서브시스템들, 프로세스들 또는 애플리케이션들에 대한 더 깊은 관찰들을 수행할 수도 있다. 관찰자 모듈 (202) 은 더 깊은 관찰들의 결과들을 분석기 모듈 (204) 에 추가의 (및 더 깊은) 분석을 위해 전송할 수도 있다. 이들 동작들은 문제의 소스가 식별되기까지 또는 식별된 서브시스템들, 프로세스들 또는 애플리케이션들이 문제들 또는 저하를 초래할 가능성이 없다고 결정되기까지 반복될 수도 있다. 분석기 모듈 (204) 은 그 다음에 분석의 결과들을 작동 모듈 (208) 로 전송할 수도 있는데, 작동 모듈은 그 결과들을 수신하고 식별된 문제를 치유, 치료, 분리, 또는 그렇지 않으면 해결하는 동작들을 수행할 수도 있다.
일 양태에서, 관찰자 모듈 (202) 과 분석기 모듈 (204) 은, 제한된 및 거친 관찰들로부터 비정상의 거동을 식별하기 위해, 더 상세히 관찰할 거동들을 동적으로 결정하기 위해, 그리고 관찰들에 대해 요청된 상세 레벨을 동적으로 결정하기 위해, 컴퓨팅 시스템의 거동들의 실시간 거동 분석을 개별적으로 또는 집단적으로 중 어느 하나로 제공할 수도 있다. 이런 방식으로, 관찰자 모듈 (202) 은, 컴퓨팅 시스템 (200) 이, 모바일 디바이스들 상에서 문제들이 발생하는 것을 그 디바이스 상의 대량의 프로세서, 메모리, 또는 배터리 자원들을 필요로 하는 일 없이 효율적으로 식별하고 방지하는 것을 가능하게 한다.
일 양태에서, 관찰자 모듈 (202) 은 양성 애플리케이션들에 대한 성능 영향을 줄이기 위해 공간 효율적 및 쿼리 (query) 서비스 시간 효율적 방식으로 관찰들을 저장할 수도 있다. 관찰자 모듈 (202) 은 멀티레벨 로깅 (예컨대, 미세 입도 및 거친 입도의 로깅) 을 가능하게 하는 다양한 관찰자 모드들을 시스템에 제공할 수도 있다. 관찰자 모듈 (202) 은 상이한 관찰자 모드들 간을 자동으로 및 동적으로 스위칭하는 능력을 제공할 수도 있다. 관찰자 모듈 (202) 은 시스템 자원들을 고갈시킬 수도 있는 프로세스/애플리케이션을 모니터링 및 제한할 수도 있다. 관찰자 모듈 (202) 은 통신들 (예컨대, 비보안 대 보안 권역 (world)) 의 오버헤드를 관리할 수도 있어서, 오버헤드는 최소가 되고 흐름 제어는 효율적으로 관리/수행된다.
일 양태에서, 분석기 모듈 (204) 은 다양한 콘텍스트들 및 조건들 하에서 모바일 디바이스의 정상 동작 거동들을 학습하기 위해, 그리고 다양한 콘텍스트들/조건들 하에서 정상 모바일 디바이스 거동들의 모델들을 생성하기 위해, 다양한 모바일 디바이스 서브시스템들에 의해 및/또는 다양한 시구간들에 걸쳐 수집된 정보를 수신 및 분석하도록 구성될 수도 있다. 일 양태에서, 분석기 모듈 (204) 은 생성된 거동 모델들에 대해 수신된 관찰들을 상관시키고, 수신된 관찰들이 학습된 정상 동작 거동들과 충돌하는지 (또는 매칭되지 않는지) 의 여부를 결정하기 위해 그 상관들에 기초하여 거동 분석 동작들을 수행하도록 구성될 수도 있다.
다양한 양태들에서, 모바일 디바이스는, 클라우드 서비스 네트워크 서버로부터 수신된 정보에 기초하여 데이터/거동 모델들을 생성할 수도 있는 네트워크 서버와 통신하도록 구성될 수도 있다. 네트워크 서버는 생성된 데이터/거동 모델들을 비정상의 또는 성능 저하하는 모바일 디바이스 거동들, 소프트웨어 애플리케이션들, 프로세스들 등을 식별하기 위해 희박 (lean) 데이터/거동 모델들을 수신 및 구현, 적용, 또는 사용할 수도 있는 모바일 디바이스로 전송할 수도 있다. 모바일 디바이스는 그 다음에 식별된 성능 저하하는 모바일 디바이스 거동들을 정정하거나 또는 식별된 성능 저하하는 모바일 디바이스 거동들이 모바일 디바이스의 성능 및 전력 이용 레벨들을 저하시키는 것을 방지할 수도 있다.
다양한 양태들에서, 네트워크 서버는 다수의 모바일 디바이스들에 의해 제공된 거동 분석들의 결과들 및/또는 거동 정보에 대해 기계 학습 및/또는 콘텍스트 모델링 기법들을 수행, 실행, 및/또는 적용함으로써 데이터/거동 모델들을 생성 또는 업데이트하도록 구성될 수도 있다. 따라서, 네트워크 서버는 다수의 모바일 디바이스들로부터 다수의 보고들을 수신하고, 이러한 크라우드소싱된 (crowd-sourced) 정보를 분석, 통합 (consolidation) 또는 그렇지 않으면 사용가능 정보, 특히 다수의 모바일 디바이스들에 의해 사용 및/또는 액세스될 수 있는 데이터 세트 또는 거동 모델로 바꿀 수도 있다. 네트워크 서버는 새로운 거동/분석 보고들이 모바일 디바이스들로부터 수신됨에 따라 현존하는 데이터/거동 모델들을 지속적으로 재평가하고, 이력 정보 (예컨대, 거동 모델들 등의 이전의 실행, 이전의 적용들로부터 수집됨), 새로운 정보, 기계 학습, 콘텍스트 모델링, 및 이용가능한 정보, 모바일 디바이스 상태들, 환경적 상황, 네트워크 조건들, 모바일 디바이스 성능, 배터리 소비 레벨들 등에서의 검출된 변경들에 기초하여 새로운 또는 업데이트된 데이터/거동 모델들을 생성할 수도 있다.
도 3은 일 양태에 따라 동적 및 적응적 관찰들을 수행하도록 구성된 컴퓨팅 시스템의 관찰자 모듈 (202) 에서의 예의 논리적 컴포넌트들 및 정보 흐름들을 도시한다. 관찰자 모듈 (202) 은 적응 필터 모듈 (302), 스로틀 모듈 (304), 관찰자 모드 모듈 (306), 하이 레벨 거동 검출 모듈 (308), 거동 벡터 발생기 (310), 및 보안 버퍼 (312) 를 구비할 수도 있다. 하이 레벨 거동 검출 모듈 (308) 은 공간적 상관 모듈 (314) 과 시간적 상관 모듈 (316) 을 구비할 수도 있다.
관찰자 모드 모듈 (306) 은 분석기 유닛 (예컨대, 도 2를 참조하여 위에서 설명된 분석기 모듈 (204)) 및/또는 애플리케이션 API를 포함할 수도 있는 다양한 소스들로부터 제어 정보를 수신할 수도 있다. 관찰자 모드 모듈 (306) 은 다양한 관찰자 모드들에 관계된 제어 정보를 적응 필터 모듈 (302) 과 하이 레벨 거동 검출 모듈 (308) 로 전송할 수도 있다.
적응 필터 모듈 (302) 은 다수의 소스들로부터 데이터/정보를 수신하고, 수신된 정보를 지능적으로 필터링하여 수신된 정보로부터 선택된 정보의 더 작은 서브 세트를 생성할 수도 있다. 이 필터는 분석기 모듈, 또는 API를 통해 통신하는 하이 레벨 프로세스로부터 수신된 정보 또는 제어에 기초하여 적응될 수도 있다. 필터링된 정보는 스로틀 모듈 (304) 로 전송될 수도 있는데, 스로틀 모듈은 하이 레벨 거동 검출 모듈 (308) 에 요청들 또는 정보가 과부하 또는 폭주되지 않는 것을 보장하기 위해 필터로부터 흐르는 정보의 양을 제어하는 것을 담당할 수도 있다.
하이 레벨 거동 검출 모듈 (308) 은 스로틀 모듈 (304) 로부터의 데이터/정보, 관찰자 모드 모듈 (306) 로부터의 제어 정보, 및 모바일 디바이스의 다른 컴포넌트들로부터의 콘텍스트 정보를 수신할 수도 있다. 하이 레벨 거동 검출 모듈 (308) 은 디바이스가 준최적 레벨들에서 수행하게 할 수도 있는 하이 레벨 거동들을 검출 또는 식별하기 위해 수신된 정보를 사용하여 공간적 및 시간적 상관들을 수행할 수도 있다. 공간적 및 시간적 상관들의 결과들은 거동 벡터 발생기 (310) 로 전송될 수도 있는데, 거동 벡터 발생기는 상관 정보를 수신하고 특정 프로세스, 애플리케이션, 또는 서브시스템의 거동들을 기술하는 거동 벡터를 생성할 수도 있다. 일 양태에서, 거동 벡터 발생기 (310) 는 특정 프로세스, 애플리케이션, 또는 서브시스템의 각각의 하이 레벨 거동이 거동 벡터의 엘리먼트가 되도록 거동 벡터를 생성할 수도 있다. 일 양태에서, 생성된 거동 벡터는 보안 버퍼 (312) 에 저장될 수도 있다. 하이 레벨 거동 검출의 예들은 특정 이벤트의 존재, 다른 이벤트의 양 또는 빈도, 다수의 이벤트들 간의 관계, 이벤트들이 발생하는 순서, 특정한 이벤트들의 발생 간의 시간 차이들 등의 검출을 포함할 수도 있다.
다양한 양태들에서, 관찰자 모듈 (202) 은 적응적 관찰들을 수행하고 관찰 세분도를 제어할 수도 있다. 다시 말하면, 관찰자 모듈 (202) 은 관찰될 관련 거동들을 동적으로 식별하고, 식별된 거동들이 관찰될 상세 레벨을 동적으로 결정할 수도 있다. 이런 방식으로, 관찰자 모듈 (202) 은 시스템이 모바일 디바이스의 거동들을 다양한 레벨들 (예컨대, 다수의 거친 및 미세한 레벨들) 에서 모니터링하는 것을 가능하게 한다. 관찰자 모듈 (202) 은 시스템이 관찰되는 것에 적응하는 것을 가능하게 할 수도 있다. 관찰자 모듈 (202) 은 시스템이 광범위한 진실성의 소스들로부터 획득될 수도 있는 정보의 포커스된 서브 세트에 기초하여 관찰되고 있는 요인들/거동들을 동적으로 변경하는 것을 가능하게 할 수도 있다.
위에서 논의된 바와 같이, 관찰자 모듈 (202) 은 다양한 소스들로부터 수신된 정보에 기초하여 관찰 세분도를 제어하고 적응적 관찰 기법들을 수행할 수도 있다. 예를 들어, 하이 레벨 거동 검출 모듈 (308) 은 스로틀 모듈 (304), 관찰자 모드 모듈 (306) 로부터의 정보, 및 모바일 디바이스의 다른 컴포넌트들 (예컨대, 센서들) 로부터 수신된 콘텍스트 정보를 수신할 수도 있다. 일 예로서, 시간적 상관들을 수행하는 하이 레벨 거동 검출 모듈 (308) 은 카메라가 사용되었음과 모바일 디바이스가 화상을 서버에 업로드하려고 시도하고 있음을 검출할 것이다. 하이 레벨 거동 검출 모듈 (308) 은 모바일 디바이스가 케이스에 넣어졌고 사용자의 벨트에 매달린 동안 모바일 디바이스 상의 애플리케이션이 화상을 촬영하는지의 여부를 결정하기 위해 공간적 상관들을 또한 수행할 수도 있다. 하이 레벨 거동 검출 모듈 (308) 은 이 검출된 하이 레벨 거동 (예컨대, 케이스에 넣어진 동안의 카메라의 사용) 이 허용가능한 또는 일반적인 거동인지를 결정할 수도 있는데, 이는 현재 거동과 모바일 디바이스의 과거 거동들을 비교하고 및/또는 복수의 디바이스들로부터 수집된 정보 (예컨대, 크라우드-소싱 서버로부터 수신된 정보) 에 액세스함으로써 달성될 수도 있다. 케이스에 있는 동안 화상들을 촬영하는 것과 그것들을 서버에 업로드하는 것이 이례적인 거동이므로 (케이스에 있다는 맥락에서 관찰된 정상 거동들로부터 결정될 수도 있으므로), 이 상황에서 하이 레벨 거동 검출 모듈 (308) 은 이를 잠재적으로 위협적인 거동으로서 인식하고 적절한 응답 (예컨대, 카메라를 끄고, 알람을 울리는 등) 을 개시하게 할 수도 있다.
일 양태에서, 관찰자 모듈 (202) 은 다수의 부분들로 구현될 수도 있다.
도 4는 일 양태에 따라 관찰자 모듈을 구현하는 일 예의 컴퓨팅 시스템 (400) 에서의 논리적 컴포넌트들 및 정보 흐름들을 도시한다. 도시된 컴퓨팅 시스템 (400) 은 애플리케이션 프레임워크 (402), 런 타임 라이브러리 (404), 사용자 로그 API (406), 및 로거 라이브러리 (408) 를 사용자 공간에 포함한다. 컴퓨팅 시스템 (400) 은 커널 코어 (410), 커널 드라이버들 (412), 커널 로그 API (414), 관찰자 로거 (424), 필터 규칙 모듈 (416), 스로틀링 규칙 모듈 (418), 링 버퍼 (422), 및 관찰자 데몬 (420) 을 커널 공간에 포함할 수도 있다. 일 양태에서, 링 버퍼 (422) 는 고정된 사이즈로 되고 그리고/또는 원형 버퍼일 수도 있다. 일 양태에서, 사용자 로그 API (406) 와 커널 로그 API (414) 의 조합은 관찰자 로거 (424) 를 구성할 수도 있다. 일 양태에서, 관찰자 데몬 (420) 과 관찰자 로거 (424) 의 조합은 관찰자 모듈 (202) 을 구성할 수도 있다.
애플리케이션 프레임워크 (402) 와 런 타임 라이브러리 (404) 는 기존의 모바일 디바이스의 소프트웨어 코드/컴포넌트들일 수도 있고, 그것들의 각각은 활동들을 모니터링하고 정보를 사용자 공간에서의 사용자 로그 API (406) 로 전송하는 로직으로 계장될 수도 있다. 사용자 로그 API (406) 는 사용자 공간 애플리케이션들이 커널 로그 API (414) 를 통해 커널과 통신하는 것을 가능하게 하는 API를 제공할 수도 있다.
일 양태에서, 관찰자 로거 (414) 는 특정 이벤트, 액션, 또는 API (예컨대, API들의 리스트에서 특히 중요한 것으로 식별된 API) 가 호출될 때마다 자동으로 호출될 수도 있고, 대응하는 정보는 링 버퍼 (422) 에 저장될 수도 있다. 링 버퍼 (422) 에 저장된 정보는, 예를 들어, 호출자를 식별하기 위한 정보, 호출되고 있는 정확한 함수를 식별하기 위한 정보, 함수 호출에게 전달된 파라미터들, 및 다른 유사한 정보를 포함할 수도 있다. 일 양태에서, 이 정보는 링 버퍼 (422) 에 원시 (raw) 포맷으로 저장될 수도 있다. 대안으로, 링 버퍼 (422) 는 로그가 프로세싱된 후에 정보를 저장하는데 사용될 수도 있다.
관찰자 로거 (424) 는 필터 및 스로틀링 규칙들 (416, 418) 의 세트에 의해 제어될 수도 있다. 필터 규칙들 (416) 은 특정 API가 로깅되는 것인지의 여부를 특정할 수도 있다. 스로틀링 규칙들 (418) 은 시스템이 과부하를 방지하기 위해 특정 API의 로깅/모니터링을 종료하는 조건들을 특정할 수도 있다.
필터 및 스로틀링 규칙들 (416, 418) 은 관찰자 데몬 (420) 에 의해 생성, 업데이트, 및/또는 유지될 수도 있다. 예를 들어, 10 분 동안 모바일 디바이스를 관찰한 후, 특정 API가 더 이상 관심 없다 (예컨대, 그것이 시스템에 유용한 정보를 제공하지 않는다) 는 것을 관찰자 데몬 (428) 이 결정하면, 관찰자 데몬 (420) 은 당해 특정 API에 관련한 이벤트들이 더 이상 모니터링/로깅되지 않도록 필터 규칙들 (416) 을 업데이트할 수도 있다.
도 5a는 다른 양태에 따라 관찰자 모듈 (202) 을 구현하는 일 예의 컴퓨팅 시스템 (500) 에서의 논리적 컴포넌트들 및 정보 흐름들을 도시한다. 도 5a에 도시된 컴퓨팅 시스템 (500) 은, 필터 규칙들 (416) 이 디바이스 상의 사용자 공간 및/또는 커널 공간에서 사용자 로그 API (406) 에 대해 강제된다는 것을 제외하면, 도 4를 참조하여 위에서 설명된 모든 컴포넌트들을 포함한다. 따라서, 각각의 호출이 관찰자 로거 (424) 로 가고 관찰자 로거 (424) 가 (도 4를 참조하여 설명된 바와 같이) 그 호출이 로깅되어야 하는지의 여부를 결정하는 대신, 필터 규칙들 (416) 은 호출 자체가 필터 규칙들 (416) 에 기초하여 로거에 도달하지 않도록 계장들 (예컨대, 사용자 로그 API 등) 내에 구현될 수도 있다. 도 5a에 도시된 구성을 구현하는 것은 모바일 디바이스 효율을 추가로 개선할 수도 있는데, 기능 호출들이 커널 내부의 로거에 대해 만들어질 필요가 없기 때문이다.
도 5b는 또 다른 양태에 따라 관찰자 모듈을 구현하는 컴퓨팅 시스템 (550) 에서의 논리적 컴포넌트들 및 정보 흐름들을 도시한다. 도 5b에 예시된 컴퓨팅 시스템 (550) 은, 관찰자 데몬 (420) 이 사용자 공간에 있다는 것을 제외하면, 도 5a를 참조하여 위에서 설명된 모든 컴포넌트들을 포함한다. 일 양태에서, 관찰자 데몬 (420), 필터 규칙들 (416), 스로틀링 규칙들 (418), 및 관찰자 로거 (424) 는 동일한 컴포넌트의 부분일 수도 있다. 도 5b에 예시된 구성을 구현하는 것은 모바일 디바이스 효율을 추가로 개선할 수도 있는데, 관찰자 데몬 (420) 이 커널 공간으로의 함수 호출들 없이 필터 규칙들을 업데이트할 수도 있다.
임의의 주어진 시간에, 여러 애플리케이션들과 여러 커널 스레드들에서는 링 버퍼에 정보를 저장/기록하는 것이 시도될 수도 있는데, 이는 확장성을 방해하는 경합 문제들을 초래할 수도 있다. 일 양태에서, 시스템의 확장성은, 도 6a 및 도 6b에 예시된 바와 같이, 다수의 링 버퍼들의 포함을 통해 개선될 수도 있다. 도 6a에 예시된 컴퓨팅 시스템 (600) 은 도 5a를 참조하여 위에서 설명된 모든 컴포넌트들을 포함하지만 다수의 링 버퍼들 (430) 을 포함한다. 컴퓨팅 시스템 (600) 은 시스템에 의해 모니터링되고 있는 각각의 애플리케이션, 스로틀, 및 커널 스레드에 대한 링 버퍼를 포함할 수도 있다. 예를 들어, 컴퓨팅 시스템 (600) 은, 시스템에 의해 모니터링되고 있는 커널 스레드에 대한 링 버퍼와, 시스템에 의해 모니터링되고 있는 각각의 애플리케이션 및/또는 스로틀에 대한 하나 이상의 링 버퍼들을 포함할 수도 있다. 대안으로, 컴퓨팅 시스템 (600) 은 시스템에 의해 모니터링되고 있는 애플리케이션들의 그룹들, 스로틀들의 그룹들, 및/또는 커널 스레드들의 그룹들에 대한 링 버퍼를 포함할 수도 있다. 다수의 링 버퍼들의 포함은 컴퓨팅 시스템 (600) 이 경합 문제들이 일어나는 것을 피하는 것을 가능하게 하고 병목을 감소시킨다.
도 6b에 예시된 컴퓨팅 시스템 (650) 은, 관찰자 데몬 (420) 이 사용자 공간에 있다는 것을 제외하면, 도 6a를 참조하여 위에서 설명된 모든 컴포넌트들을 포함한다. 도 6b에 예시된 구성을 구현하는 것은 모바일 디바이스 효율을 추가로 개선할 수도 있는데, 관찰자 데몬 (420) 이 커널 공간으로의 함수 호출들 없이 필터 규칙들을 업데이트할 수도 있다.
도 7a는 일 양태의 관찰자 데몬 (420) 을 구현하는 컴퓨팅 시스템 (700) 에서 논리적 컴포넌트들 및 정보 흐름들을 예시한다. 컴퓨팅 시스템 (700) 은 분석기 컴포넌트 (예컨대, 도 2에 예시된 분석기 모듈 (204)), 필터 규칙들 (416) 컴포넌트, 스로틀링 규칙들 (418) 컴포넌트, 다수의 링 버퍼들 (430), 데이터베이스 (702), 보안 버퍼 (704), 및 관찰자 데몬 (420) 을 포함할 수도 있다. 관찰자 데몬 (420) 은 링 버퍼 API (706), 시스템 헬스 모니터 (708), 거동 검출기 (712), 데이터베이스 엔진 (714), 규칙 관리자 (710), 보안 버퍼 관리자 (716), 쿼리 프로세서 (720), 쿼리 API (718), 데이터베이스 API (722) 를 포함할 수도 있다. 로거 (도시되지 않음) 가 링 버퍼들 (430) 에 정보를 저장할 수도 있다. 관찰자 데몬 (420) 은 링 버퍼들 (430) 로부터의 정보를 링 버퍼 API (706) 를 통해 추출할 수도 있다. 거동 검출기 (712) 는 링 버퍼 API (706) 로부터 정보를 수신하고, 수신된 데이터에 대한 상관 및 포맷팅 동작들을 수행하여 거동 벡터를 생성할 수도 있다.
생성된 거동 벡터는 데이터베이스 (702) 에 저장하기 위해 데이터베이스 엔진 (714) 으로 전송될 수도 있다. 데이터베이스 엔진 (714) 은 데이터베이스 구현예 (예컨대, 구현되는 데이터 구조의 종류, 데이터 구조에 포함된 정보의 유형들 등) 의 특수성들의 모두를 관리할 수도 있다.
규칙 관리자 (710) 는 상이한 컴포넌트들 (예컨대, 시스템 헬스 모니터, 거동 검출 유닛, 분석기 등) 로부터의 입력들을 수신하고, 수신된 입력들에 기초하여 필터 및 스로틀 규칙들 (416, 418) 을 업데이트하도록 구성될 수도 있다. 예를 들어, 규칙 관리자 (710) 는 거동 검출기 (712) 를 로그 통계를 수신하고 로그 통계에 기초하여 필터 및 스로틀 규칙들 (416, 418) 을 업데이트할 수도 있다.
시스템 헬스 모니터 (708) 는 시스템 자원들을 모니터링하고 규칙 관리자 (710) 에게 시스템 헬스를 알려주도록 구성될 수도 있다. 예를 들어, 시스템 헬스 모니터 (708) 는 배터리에 저장된 남아있는 에너지의 양, 이용가능한 메모리가 얼마인지, 상세한 관찰을 수행하는데 충분한 자원들이 있는지의 여부 등에 관해 규칙 관리자 (710) 에게 알려줄 수도 있다. 규칙 관리자 (710) 는 시스템 헬스 모니터 (708) 로부터 수신된 정보를 사용하여 규칙들을 업데이트할 수도 있다. 예를 들어, 디바이스 배터리 상태가 특정한 임계값 미만임을 시스템 헬스 모니터 (708) 가 나타내면, 규칙 관리자 (710) 는 소비 전력을 줄이기 위하여 시스템이 더 많은 거친 관찰들을 수행하도록 필터 규칙들 (416) 을 업데이트할 수도 있다.
쿼리 프로세서 (720) 는 쿼리 API (718) 로부터 데이터베이스 특정 API (722) 로와 같은 다양한 API들 간의 변환들을 수행하도록 구성될 수도 있다.
보안 버퍼 (704) 는 (예컨대, 비신뢰 지역에서의) 커널 공간 컴포넌트들이 (예컨대, 신뢰 지역에서의) 사용자 공간 컴포넌트들과 통신하는 것을 가능하게 할 수도 있다.
보안 버퍼 관리자 (716) 는 보안 버퍼 (704) 를 통해 발생하는 통신들을 제어하도록 구성될 수도 있다.
데이터베이스 엔진 (714) 은, 흐름 제어 동작들을 수행하고 정보를 보안 버퍼 (704) 에 저장할 수도 있는 보안 버퍼 관리자 (716) 에게 데이터베이스 응답들을 저장하도록 구성될 수도 있다.
관찰자 데몬 (420) 에 의해 생성된 정보는 분석기 (204) 에 의해 이용될 수도 있는데, 그 분석기는 커널 공간, 사용자 공간, 또는 시스템-온-칩 (SOC) 의 신뢰성 있는 컴퓨팅 기반으로 구현될 수도 있다.
도 7b는 다른 양태의 관찰자 데몬 (420) 을 구현하는 컴퓨팅 시스템 (750) 에서 논리적 컴포넌트들 및 정보 흐름들을 예시한다. 컴퓨팅 시스템 (750) 은 분석기 (204) 컴포넌트, 필터 규칙들 (416) 컴포넌트, 스로틀링 규칙들 (418) 컴포넌트, 다수의 링 버퍼들 (430), 보안 버퍼 (704), 보안 버퍼 관리자 (716), 및 관찰자 데몬 (420) 을 포함할 수도 있다. 관찰자 데몬 (420) 은 링 버퍼 API (706), 시스템 헬스 모니터 (708), 거동 검출기 (712), 데이터베이스 엔진 (714), 및 규칙 관리자 (710) 를 포함할 수도 있다. 로거 (도시되지 않음) 가 링 버퍼들 (430) 에 정보를 저장할 수도 있다. 컴퓨팅 시스템 (750) 은, 보안 버퍼 관리자 (716) 가 커널 공간에 있다는 것을 제외하면, 도 7a에 도시된 컴퓨팅 시스템 (700) 과 동일한 동작들을 수행할 수도 있고, 사용자 공간에서 분석기 (204) 로 전송되는 데이터를 제어할 수도 있다.
도 8a는 다른 양태의 관찰자 데몬을 구현하는 컴퓨팅 시스템 (800) 에서 논리적 컴포넌트들 및 정보 흐름들을 예시한다. 도 8a에 예시된 컴퓨팅 시스템 (800) 은 쿼리 프로세서를 제외한 도 7a를 참조하여 위에서 설명된 컴포넌트들의 모두를 포함하는데, 이 양태에서의 데이터베이스가 보안 버퍼의 부분으로서 포함되기 때문이다. 이 구성에서, 분석기가 쿼리를 발행할 때마다, 쿼리는 데이터베이스 엔진으로부터 직접 올 수도 있다. 마찬가지로, 쿼리에 대한 응답들은 보안 버퍼로부터 분석기로 직접 전송될 수도 있다.
도 8b는 또 다른 양태의 관찰자 데몬을 구현하는 컴퓨팅 시스템 (800) 에서 논리적 컴포넌트들 및 정보 흐름들을 예시한다. 도 8b에 예시된 예에서, 관찰자 데몬은 거동 검출기 (712) 와 데이터베이스 엔진 (714) 을 사용자 공간에, 그리고 보안 버퍼 관리자 (716), 규칙 관리자 (710), 및 시스템 헬스 모니터 (708) 를 커널 공간에 포함한다.
다양한 양태들이 시스템 거동을 특징화하기 위하여 webkit, SDK, NDK, 커널, 드라이버들, 및 하드웨어를 망라하는 모바일 디바이스들 상의 교차 계층 관찰들을 제공한다. 거동 관찰들은 실시간으로 이루어질 수도 있다.
다양한 양태들의 중요한 특징이, 관찰자 모듈은 적응적 관찰 기법들을 수행하고 관찰 세분도를 제어할 수도 있다는 것이다. 위에서 논의된 바와 같이, 모바일 디바이스의 저하에 기여할 수 있는 큰 수 (즉, 수천) 의 요인들이 있고, 디바이스의 성능의 저하에 기여할 수도 있는 상이한 요인들의 모두를 모니터링/관찰하는 것은 실현가능하지 않을 수도 있다. 이를 극복하기 위해, 다양한 양태들은 관찰될 관련 거동들을 동적으로 식별하고, 식별된 거동들이 관찰될이 상세 레벨을 동적으로 결정한다.
도 9a는 비정상의 모바일 디바이스 거동들을 식별하기 위하여 관찰에 대한 모바일 디바이스 거동들을 동적으로 선택하는 일 양태의 방법 (900) 을 예시한다. 블록 902에서, 모바일 디바이스 프로세서는 관찰될 모바일 디바이스 거동들 및/또는 상태들을 관찰을 위해 선택할 수도 있다. 디바이스 거동들 및/또는 상태들의 이 선택은 넓은 범위의 거동들, 액션들 및 상태들의 서브세트의 선택을 포함할 수도 있다. 따라서, 블록 902에서의 선택은, 모바일 디바이스 동작들, 모바일 디바이스 이벤트들, 데이터 네트워크 활동, 시스템 자원 사용, 모바일 디바이스 상태, 프로세스 간 통신들, 드라이버 통계, 하드웨어 컴포넌트 스테이터스, 하드웨어 카운터들, 소프트웨어 애플리케이션들의 액션들 또는 동작들, 소프트웨어 다운로드들, 디바이스 또는 컴포넌트 설정들에 대한 변경들, 애플리케이션 레벨에서의 조건들 및 이벤트들, 라디오 레벨에서의 조건들 및 이벤트들, 그리고 센서 레벨에서의 조건들 및 이벤트들 중 하나 이상일 수도 있다. 블록 904에서, 모바일 디바이스는 비정상의 모바일 디바이스 거동들을 식별하기 위하여 선택된 디바이스 거동들 및/또는 상태들의 관찰을 시작하고 관찰들을 프로세싱할 수도 있다. 디바이스 거동들 및/또는 상태들의 선택된 서브 세트만이 관찰되므로, 이는 프로세서가 관찰들의 제한된 세트에 기초하여 비정상의 거동들을 검출하는 것을 가능하게 할 수도 있다.
블록 902에서 선택 및 블록 904에서 관찰될 수도 있는 모바일 디바이스 동작들의 예들은, 예를 들어, 애플리케이션 프레임워크 또는 실행시간 라이브러리에서의 라이브러리 API 호출들, 시스템 호출 API들, 파일 시스템 및 네트워킹 서브시스템 동작들, 파일 시스템 활동, 파일명들의 검색, 파일 액세스들의 카테고리들, 파일 생성, 파일 삭제, 파일 읽기/쓰기/탐색 동작들, 및 파일 권한 변경 중 하나 이상을 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 모바일 디바이스 이벤트들의 예들은, 예를 들어, 디바이스 상태 변경들 및/또는 센서 디바이스 상태 변경들을 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 모바일 디바이스 데이터 네트워크 활동들의 예들은, 예를 들어, 접속 유형들, 프로토콜들, 포트 번호들, 디바이스가 접속된 서버/클라이언트, 접속 수, 통신들의 볼륨 또는 빈도, 폰 네트워크 활동, 전송된 호출들/메시지들의 유형 및 수, 수신된 호출들/메시지들의 유형 및 수, 인터셉트된 호출들/메시지들의 유형 및 수, 호 정보, 텍스트 메시징 정보, 미디어 메시징, 사용자 계정 정보, 송신물들, 음성메일, 및 디바이스 식별자들 (예컨대, DeviceIDComm) 중 하나 이상을 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 모바일 디바이스 시스템 자원 사용의 예들은, 예를 들어, 포크들의 수, 메모리 액세스 동작들, 및/또는 열린 파일 수를 모니터링하는 것을 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 모바일 디바이스 상태들의 예들은, 예를 들어, 디스플레이 온/오프 상태, 잠금/잠금해제 상태, 배터리 충전 상태, 카메라 상태, 및 마이크로폰 상태를 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 모바일 디바이스 프로세스 간 통신들의 예들은, 예를 들어, 중요한 서비스들 (브라우저, 계약 제공자 등) 에 대한 의도들을 모니터링하는 것, 프로세스 간 통신들의 정도를 모니터링하는 것, 및 팝업 윈도우들을 모니터링하는 것을 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 모바일 디바이스 드라이버 통계의 예들은, 예를 들어, 카메라들, 센서들, 전자 디스플레이들, WiFi 통신 컴포넌트들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 주변 디바이스들, 무선 통신 컴포넌트들, 및 외부 메모리 칩들 중 하나 이상에 대한 드라이버들로부터의 통계를 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 모바일 디바이스 드라이버 하드웨어 컴포넌트 스테이터스의 예들은, 예를 들어, 카메라들, 센서들, 전자 디스플레이들, WiFi 통신 컴포넌트들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 타이머들, 주변 디바이스들, 무선 통신 컴포넌트들, 외부 메모리 칩들, 전압 조정기들, 발진기들, 위상 동기 루프들, 주변기기 브릿지들, 및 상기 모바일 컴퓨팅 디바이스 상에서 실행되는 프로세서들 및 클라이언트들을 지원하는데 사용되는 유사한 다른 컴포넌트들을 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 모바일 디바이스 하드웨어 카운터들의 예들은, 예를 들어, 모바일 컴퓨팅 디바이스 및/또는 모바일 디바이스 서브시스템들의 상태 또는 스테이터스를 나타내는 하드웨어 카운터들, 및 하드웨어 관련 활동들 또는 이벤트들의 카운트 또는 상태를 저장하도록 구성되는 프로세서들/코어들의 특수목적 레지스터들을 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 모바일 디바이스 드라이버 통계의 예들은, 예를 들어, 카메라들, 센서들, 전자 디스플레이들, WiFi 통신 컴포넌트들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 주변 디바이스들, 무선 통신 컴포넌트들, 및 외부 메모리 칩들 중 하나 이상에 대한 드라이버들로부터의 통계를 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 소프트웨어 애플리케이션들의 모바일 디바이스 액션들 또는 동작들의 예들은, 예를 들어, 로케이션 정보, 카메라 정보, 가속도계 정보, 브라우저 정보, 브라우저 기반 통신들의 콘텐츠, 음성 기반 통신들의 콘텐츠, 단거리 라디오 통신들, 텍스트 기반 통신들의 콘텐츠, 레코딩된 오디오 파일들의 콘텐츠, 전화번호부 또는 연락처 정보, 연락처 목록들, 캘린더 정보, 로케이션 정보 (LocationComm), 레코딩된 오디오 정보, 가속도계 정보, 소프트웨어 애플리케이션으로 및 그로부터 통신된 통지들, 사용자 검증들, 및 사용자 패스워드 중 하나 이상을 포함한 소프트웨어 애플리케이션들에 의해 사용된 정보의 모니터링을 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 모바일 디바이스 소프트웨어 다운로드들의 예들은, 예를 들어, 애플리케이션 다운로드 서버로부터의 소프트웨어 다운로드들과, 제 2 소프트웨어 애플리케이션의 다운로딩 및/또는 설치를 요청하는 제 1 소프트웨어 애플리케이션을 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 디바이스 또는 컴포넌트 설정들에 대한 변경들의 예들은, 예를 들어, 나침반 정보, 모바일 디바이스 설정들, 배터리 수명, 자이로스코프 정보, 압력 센서들, 및 스크린 활동 중 하나 이상에 대한 변경들을 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 애플리케이션 레벨에서의 모바일 디바이스 조건들 및 이벤트들의 예들은, 예를 들어, 얼굴 인식 소프트웨어를 통해 사용자를 관찰하는 것, 소셜 스트림들을 관찰하는 것, 사용자에 의해 입력된 노트들을 관찰하는 것, PassBook/구글 Wallet/Paypal과 같은 전자 지불 서비스의 사용에 관계된 이벤트을 관찰하는 것, VPN들의 사용, 동기화, 음성 검색들, 음성 제어, 언어 번역기들, 컴퓨테이션들을 위한 데이터의 오프로딩, 비디오 스트리밍, 사용자 활동 없는 카메라 사용, 및 사용자 활동 없는 마이크로폰 사용에 관련한 이벤트들을 관찰하는 것을 포함한다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 모바일 디바이스 라디오 레벨에서의 조건들 및 이벤트들의 예들은, 라디오 통신 링크들의 확립 또는 정보의 송신 전의 모바일 디바이스와의 사용자 상호작용, 이중 또는 다중 SIM들 또는 SIM 카드들, 인터넷 라디오, 모바일 폰 테더링, 컴퓨테이션들을 위한 데이터의 오프로딩, 디바이스 상태 통신들, 게임 컨트롤러 또는 홈 제어기로서의 사용, 차량 통신들, 모바일 디바이스 동기화, 포지셔닝, 피어 투 피어 (p2p) 통신들, 동기화, 차량 대 차량 통신들, 및/또는 머신 대 머신 (m2m) 을 위한 라디오들 (WiFi, WiMax, 블루투스 등) 의 사용의 모니터링, 및 네트워크 트래픽 사용, 통계, 또는 프로파일들의 모니터링 중 임의의 것 또는 모두의 존부, 존재 또는 양을 결정하는 것을 포함할 수도 있다.
블록 902에서 선택되고 블록 904에서 관찰될 수도 있는 센서 레벨에서의 이벤트들에서의 모바일 디바이스 조건들 및 이벤트들의 예들은, 예를 들어, 마그넷 센서들을 모니터링하는 것, 근접장 통신들을 검출하는 것, 신용 카드 스캐너, 바코드 스캐너, 또는 모바일 태그 판독기로부터 정보를 수집하는 것, USB 전력 충전 소스의 존부를 검출하는 것, 키보드 또는 보조 디바이스가 모바일 디바이스에 커플링되었음을 검출하는 것, 모바일 디바이스가 컴퓨팅 디바이스에 (예컨대, USB 등을 통해) 커플링되었음을 검출하는 것, 발광 다이오드, 플래시, 손전등, 또는 광원이 수정되었는지 또는 가능하지 않게 되었는지 (예컨대, 비상 시그널링 앱 등을 악의적으로 가능하지 않게 하였는지) 를 결정하는 것, 스피커 또는 마이크로폰이 턴 온 또는 전력 공급되었는지를 결정하는 것, 충전 또는 파워 이벤트를 검출하는 것, 모바일 디바이스가 게임 컨트롤러로서 사용되고 있음을 검출하는 것, 의료용/보건 센서들로부터의 또는 사용자의 신체를 스캐닝하는 것으로부터의 정보를 수집하는 것, USB/오디오 잭에 꽂아진 외부 센서로부터 정보를 수집하는 것, 촉각 또는 햅틱 센서로부터 (예컨대, 진동기 인터페이스 등을 통해) 정보를 수집하는 것, 및 모바일 디바이스의 열적 상태에 관한 정보를 수집하는 것을 포함한다.
도 9b는 일 양태에 따라 동적 및 적응적 관찰들을 수행하기 위한 다른 예의 방법 (910) 을 도시한다. 블록 912에서, 모바일 디바이스 프로세서는 모바일 디바이스의 저하에 기여할 수 있는 다수의 요인들/거동들의 서브세트를 모니터링/관찰함으로써 거친 관찰들을 수행할 수도 있다. 블록 913에서, 모바일 디바이스 프로세서는 거친 관찰들에 기초하여 거친 관찰들 및/또는 모바일 디바이스 거동을 특징화하는 거동 벡터를 생성할 수도 있다. 블록 914에서, 모바일 디바이스 프로세서는 모바일 디바이스의 저하에 잠재적으로 기여할 수도 있는 거친 관찰들에 연관된 서브시스템들, 프로세스들, 및/또는 애플리케이션들을 식별할 수도 있다. 이는, 예를 들어, 다수의 소스들로부터 수신된 정보와 모바일 디바이스의 센서들로부터 수신된 상황적 정보를 비교함으로써 달성될 수도 있다. 블록 916에서, 모바일 디바이스 프로세서는 거친 관찰들에 기초하여 거동 분석 동작들을 수행할 수도 있다. 결정 블록 918에서, 모바일 디바이스 프로세서는 비정상의 거동들 또는 잠재적 문제들이 거동 분석의 결과들에 기초하여 식별 및 정정될 수 있는지의 여부를 결정할 수도 있다. 비정상의 거동들 또는 잠재적 문제들이 거동 분석의 결과에 기초하여 식별 및 정정될 수 있다고 모바일 디바이스 프로세서가 결정하는 경우 (즉, 결정 블록 918 = "예"), 블록 928에서, 프로세서는 거동을 정정하는 프로세스를 시작하고, 부가적인 거친 관찰들을 수행하기 위해 블록 912로 복귀할 수도 있다.
비정상의 거동들 또는 잠재적 문제들이 거동 분석의 결과들에 기초하여 식별 및/또는 정정될 수 없다고 모바일 디바이스 프로세서가 결정하는 경우 (즉, 결정 블록 918 = "아니오"), 결정 블록 919에서 모바일 디바이스 프로세서는 문제의 우도가 있는지의 여부를 결정할 수도 있다. 일 실시형태에서, 모바일 디바이스 프로세서는, 잠재적 문제들에 마주할 및/또는 비정상의 거동들에 관여할 모바일 디바이스의 확률을 컴퓨팅하고 컴퓨팅된 확률이 미리 결정된 임계값보다 더 큰지의 여부를 결정함으로써 문제의 우도가 있다고 결정할 수도 있다. 컴퓨팅된 확률이 미리 결정된 임계값보다 크지 않고 및/또는 비정상의 거동들 또는 잠재적 문제들이 존재하고 및/또는 검출가능할 우도가 없다고 모바일 디바이스 프로세서가 결정하는 경우 (즉, 결정 블록 919 = "아니오"), 프로세서는 부가적인 거친 관찰들을 수행하기 위해 블록 912로 복귀할 수도 있다.
비정상의 거동들 또는 잠재적 문제들이 존재할 및/또는 검출가능할 우도가 있다고 모바일 디바이스 프로세서가 결정하는 경우 (즉, 결정 블록 919 = "예"), 블록 920에서, 모바일 디바이스 프로세서는 식별된 서브시스템들, 프로세스들 또는 애플리케이션들에 대해 더 깊은 로깅/관찰들 또는 최종 로깅을 수행할 수도 있다. 블록 922에서, 모바일 디바이스 프로세서는 식별된 서브시스템들, 프로세스들 또는 애플리케이션들에 대한 더 깊고 더 상세한 관찰들을 수행할 수도 있다. 블록 924에서, 모바일 디바이스 프로세서는 더 깊은 및 더 상세한 관찰들에 기초하여 추가의 및/또는 더 깊은 거동 분석을 수행할 수도 있다. 결정 블록 918에서, 모바일 디바이스 프로세서는 비정상의 거동들 또는 잠재적 문제들이 더 깊은 거동 분석의 결과들에 기초하여 식별 및 정정될 수 있는지의 여부를 다시 결정할 수도 있다. 비정상의 거동들 또는 잠재적 문제들이 더 깊은 거동 분석의 결과들에 기초하여 식별 및 정정될 수 없다고 모바일 디바이스 프로세서가 결정하는 경우 (즉, 결정 블록 918 = "아니오"), 프로세서는 상세 레벨이 문제를 식별하기에 충분히 미세하기까지 또는 문제가 부가적인 상세로 식별될 수 없거나 또는 문제가 존재하지 않기까지 블록 920 내지 블록 924의 동작들을 반복할 수도 있다.
비정상의 거동들 또는 잠재적 문제들이 더 깊은 거동 분석의 결과들에 기초하여 식별 및 정정될 수 있다고 모바일 디바이스 프로세서가 결정하는 경우 (즉, 결정 블록 918 = "예"), 블록 928에서, 모바일 디바이스 프로세서는 문제/거동을 정정하는 동작들을 수행할 수도 있고, 그 프로세서는 부가적인 동작들을 수행하기 위해 블록 912로 복귀할 수도 있다.
일 양태에서, 방법 910의 블록 912 내지 블록 928의 부분으로서, 모바일 디바이스 프로세서는 제한된 및 거친 관찰들로부터 비정상의 거동을 식별하기 위해, 더 상세히 관찰할 거동들을 동적으로 결정하기 위해, 그리고 관찰들을 위해 필요한 정밀한 상세 레벨을 동적으로 결정하기 위해 시스템의 거동들의 실시간 거동 분석을 수행할 수도 있다. 이는 모바일 디바이스 프로세서가 그 디바이스 상의 큰 양의 프로세서, 메모리, 또는 배터리 자원들의 사용을 필요로 하는 일 없이, 효율적으로 문제들을 식별하고 그 문제들이 발생하는 것을 방지하는 것을 가능하게 한다.
도 10은 일 양태에 따라 모바일 디바이스 프로세서에 대해 동적 및 적응적 관찰들을 수행하기 위한 일 예의 관찰자 방법 (1000) 을 도시한다. 관찰자 방법 (1000) 은 모바일 디바이스의 커널 공간, 사용자 공간, 또는 그것들의 조합에서 관찰자 모듈의 부분으로서 구현될 수도 있다. 블록 1002에서, 프로세서 상에서 동작하는 관찰자 모듈은 다양한 소스들로부터 데이터, 제어, 및/또는 콘텍스트 정보를 수신할 수도 있는데, 다양한 소스들은 분석기 유닛 (예컨대, 도 2에서 설명된 분석기 모듈 (204)), 애플리케이션 API들, 드라이버 API들, 커널 스레드들, 사용자 스레드들, 프로세스들, 프로그램들, 모바일 디바이스 센서들 등을 포함할 수도 있다. 블록 1004에서, 프로세서 상에서 동작하는 관찰자 모듈은 수신된 정보의 더 작은 서브세트를 생성하기 위해 수신된 정보를 적응적으로 및 지능적으로 필터링할 수도 있다. 블록 1006에서, 프로세서 상에서 동작하는 관찰자 모듈은 폭주 또는 과부하를 제어/방지하기 위해 필터링된 정보를 스로틀 제어할 수도 있다. 블록 1008에서, 프로세서 상에서 동작하는 관찰자 모듈은 디바이스가 준최적 레벨들에서 수행하게 할 수도 있는 하이 레벨 거동들을 검출/식별하기 위해 공간적 및 시간적 상관들을 수행할 수도 있다. 블록 1010에서, 프로세서 상에서 동작하는 관찰자 모듈은 특정 프로세스, 애플리케이션, 또는 서브시스템의 거동들을 기술하는 거동 벡터를 생성할 수도 있다. 블록 1012에서, 프로세서 상에서 동작하는 관찰자 모듈은 생성된 거동 벡터를 보안 버퍼에 저장할 수도 있다.
도 11a는 다른 양태에 따라 모바일 디바이스 프로세서에 의한 동적 및 적응적 관찰들을 수행하는 다른 예의 방법 (1100) 을 도시한다. 블록 1102에서, 모바일 디바이스 프로세서는 모바일 디바이스 상에서 관찰될 관련 거동들을 동적으로 식별할 수도 있다. 블록 1104에서, 모바일 디바이스 프로세서는 식별된 거동들이 관찰될 상세 레벨을 동적으로 결정할 수도 있다. 옵션 블록 1106에서, 모바일 디바이스 프로세서는 관찰되고 있는 것에 동적으로 적응할 수도 있다. 옵션 블록 1108에서, 모바일 디바이스 프로세서는 관찰될 파라미터들, 요인들, 거동들, 프로세스들, 애플리케이션들, 및/또는 서브시스템들을 동적으로 변경 또는 업데이트할 수도 있다. 블록들 (1102 내지 1108) 의 동작들은 모바일 디바이스 성능 (예컨대, 배터리 소비 전력, 프로세싱 속도, 네트워크 통신 속도 등) 을 개선하기 위해 지속적으로 또는 필요한 대로 반복될 수도 있다.
도 11b는 도 11a를 참조하여 위에서 설명된 블록 (1102) 의 동작들의 부분으로서 수행될 수도 있는 일 양태의 방법 (1110) 을 도시한다. 관련 거동들을 동적으로 식별하기 위하여, 모바일 디바이스 프로세서는 블록 1112에서 시구간에 걸쳐 모바일 디바이스 거동들 중 임의의 것을 관찰할 수도 있다. 이 관찰은 한 세트의 시구간 동안일 수도 있거나 또는 연속 학습 프로세스에서와 같이 누적될 수도 있다. 따라서, 더 길게 모바일 디바이스가 동작할수록, 더 많은 거동 관찰들이 수집될 수도 있다. 블록 1114에서, 프로세서는 성능 제한 조건을 나타내는 것일 수도 있는 모바일 디바이스의 불일치 거동들을 식별할 수도 있다. 이는 본원에서 설명되는 방법들 중 임의의 것을 수행하는 것을 포함할 수도 있다. 불일치 거동들은 비정상이거나 또는 잠재적으로 성능 저하하는 모바일 디바이스 거동들일 수도 있다.
블록 1116에서, 모바일 디바이스 프로세서는 관찰된 모바일 디바이스 거동들 간의 연관들을 상관 또는 식별하고, 상관들 또는 패턴들을 식별하기 위하여 불일치 거동들을 식별할 수도 있다. 예를 들어, 프로세서는 불일치 거동들이 식별되는 동안 또는 직전에만 발생하는 그들 관찰된 모바일 디바이스 거동들을 식별할 수도 있다. 다른 예로서, 프로세서는 불일치 거동들이 식별되는 동안 또는 직전에 (반드시 항상 그렇지는 않지만) 빈번하게 발생하는 그들 관찰된 모바일 디바이스 거동들을 식별할 수도 있다. 추가 예로서, 프로세서는 불일치 거동들이 식별되는 경우에만 또는 함께 빈번하게 발생하는 관찰되는 거동들의 세트를 식별할 수도 있다. 블록 1118에서, 프로세서는 프로세서가 불일치 거동들과 연관된 또는 상관된 것으로서 식별했던 거동들의 서브세트 중에서 관찰을 위해 모바일 디바이스 거동들을 선택할 수도 있다. 따라서, 관찰을 위한 모바일 디바이스 거동들의 선택은 동적일 수도 있고, 더 많은 모바일 디바이스 거동들이 관찰되고 더 많은 불일치 거동들이 식별될 때 선택 프로세스는 시간 경과에 따라 개선될 수도 있다. 이런 방식으로, 모바일 디바이스가 더 길게 동작할수록, 불일치 또는 바람직하지 않은 거동들과 가장 밀접하게 상관 또는 연관될 그들 거의 없는 거동들을 프로세서가 더 양호하게 식별할 수도 있다. 다시 말하면, 모바일 디바이스 프로세서가 이들 모바일 디바이스 거동들을 관찰하는 것이 더 길수록, 비정상의 또는 잠재적으로 성능 저하하는 모바일 디바이스 거동들의 그 프로세서에 의한 분류들이 더 정확해진다.
도 11c는 도 11b를 참조하여 위에서 설명된 블록 (1116) 의 동작들의 부분으로서 수행될 수도 있는 일 양태의 방법 (1120) 을 도시한다. 관찰된 모바일 디바이스 거동들 및 불일치 거동들 간의 상관들을 식별하는 프로세스의 부분으로서, 프로세서는 블록 1122에서 하이 레벨 애플리케이션, 시스템 커널, 및 드라이버 API 중 하나 이상으로부터 거동 입력들을 수신할 수도 있다. 일 실시형태에서, 이들 입력들은 옵션 블록 1121에서 비정상의 또는 불일치 거동들에 연관되지 않은 것으로 프로세서가 결정할 수 있는 입력들을 걸러내는 적응 필터에 의해 먼저 필터링될 수도 있다.
블록 1124에서, 프로세서는 위에서 설명된 바와 같이 모바일 디바이스의 진행중인 동작들에 관한 콘텍스트 정보를 수신할 수도 있다. 블록 1126에서, 프로세서는 위에서 설명된 바와 같이 수신된 거동 입력들 및 수신된 콘텍스트 정보의 상관들 (예컨대, 공간적 상관들 등) 을 수행할 수도 있다. 옵션으로, 프로세서는 또한 옵션 블록 1128에서, 관련되는 그들 관찰된 거동들을 식별하기 위하여 수신된 거동 입력들의 부가적인 상관들 (예컨대, 시간적 상관들) 을 수행하고 콘텍스트 정보를 수신할 수도 있다. 예를 들어, 프로세서는 불일치 거동들과 시간적으로 관련되는 (예컨대, 시간적으로 가깝게 선행하거나 또는 동시의) 거동들을 식별하기 위해 시간적 상관들을 수행할 수도 있다. 이 정보를 이용하여, 프로세서는 위에서 설명된 바와 같이 블록 1130에서 관찰된 모바일 디바이스 거동들을 간결하게 기술하는 거동 벡터를 생성할 수도 있다. 이러한 거동 벡터는 다양한 운영 소프트웨어 레벨들에서의 API들로부터 그리고 모바일 디바이스의 다양한 소프트웨어/하드웨어 모듈들로부터 수집된 정보를 포함할 수도 있다.
블록 1130에서 생성된 거동 벡터가, 예를 들어, 라이브러리 API 호출들, 시스템 호출들, 파일 시스템 및 네트워크 서브시스템 동작들, 센서 디바이스 상태 변경들, 파일 시스템 활동, 네트워크 활동, 전화기 활동, 메모리 액세스 동작들, 모바일 디바이스의 상태, 전자 디스플레이의 파워 온/오프 상태, 모바일 디바이스의 잠금/잠금해제 상태, 남은 배터리 전력량, 프로세스 간 통신들 (IPC), 드라이버 통계, 및 하드웨어 카운터들 중 하나 이상에 관련된 정보를 포함할 수도 있다.
블록 1130에서 생성된 거동 벡터는, 모바일 디바이스의 특징 또는 거동을 각각이 의미하는 일련의 숫자들을 포함하는 벡터 데이터 구조를 가질 수도 있다. 이러한 숫자들은 모바일 디바이스의 카메라가 사용중인지의 여부를 나타내기 위한 것과 같은 이진수 플래그들 (즉, 1 또는 0 중 어느 하나의 값을 갖는 단일 비트), 모바일 디바이스에 의해 생성되었던 네트워크 트래픽의 양 또는 시구간 내에 모바일 디바이스에 의해 전송되었던 인터넷 메시지들의 수와 같은 카운터 값들을 포함할 수도 있다.
블록 1130에서 생성된 거동 벡터가 호출 정보, 텍스트 메시징 정보, 미디어 메시징 정보, 사용자 계정 정보, 로케이션 정보, 카메라 정보, 가속도계 정보, 및 브라우저 정보 중 하나 이상을 또한 포함할 수도 있다. 위에서 논의된 바와 같이, 거동 벡터를 생성하는데 사용된 정보는 모바일 디바이스의 애플리케이션 레벨, 모바일 디바이스의 라디오 레벨, 및 모바일 디바이스의 센서 레벨 (예컨대, 카메라 또는 마이크로폰) 에서 수집된 정보를 포함할 수도 있다.
이러한 모바일 디바이스 (102) 의 예시적, 비-제한적 양태의 예의 컴포넌트들 및 모듈들이 도 12에 도시되어 있다. 모바일 컴퓨팅 디바이스 (120) 가 전자적 컴포넌트들의 회로 보드 (1202) 를 구비할 수도 있으며, 그것들의 일부 또는 전부는 메모리 (1204) 에 커플링된 제어 프로세서 (1201) 를 구비하는 온 칩 시스템에 통합될 수도 있다. 제어 프로세서 (1201) 는, 또한 서로 커플링될 수 있는 디지털 신호 프로세서 (1206) 및/또는 아날로그 신호 프로세서 (1208) 에 추가로 커플링될 수도 있다. 일부 실시형태들에서, 제어 프로세서 (1201) 와 디지털 신호 프로세서 (1206) 는 동일한 컴포넌트일 수도 있거나 또는 동일한 프로세서 칩에 통합될 수도 있다. 디스플레이 제어기 (1210) 와 터치스크린 제어기 (1212) 가 제어 프로세서 (1201) 에 그리고 모바일 컴퓨팅 디바이스 (102) 내의 또는 그것에 접속된 디스플레이/터치스크린 (1214) 에 커플링될 수도 있다.
제어 프로세서 (1201) 는 착탈식 메모리 (1216) (예컨대, 모바일 컴퓨팅 디바이스들의 경우의 SD 메모리 또는 SIM 카드) 에 및/또는 외부 메모리 (1218), 이를테면 디스크 드라이브, CD 드라이브, 및 DVD 드라이브 중 하나 이상에 또한 커플링될 수도 있다. 제어 프로세서 (1201) 는 USB 포트 (1222) 에 커플링되는 유니버셜 직렬 버스 (USB) 제어기 (1220) 에 또한 커플링될 수도 있다. 다양한 양태들에서, 전원 공급부 (1221) 가 다양한 전자적 컴포넌트들에 전력 (예컨대, DC 전력) 을 제공하기 위해 USB 제어기 (1220) 를 통해 또는 상이한 전기 커넥션들을 통해 회로 보드 (1202) 에 커플링될 수도 있다.
제어 프로세서 (1201) 는 비디오 인코더 (1224), 예컨대, PAL (phase alternating line) 인코더, SECAM (sequential couleur a memoire) 인코더, 또는 NTSC (national television system(s) committee) 인코더에 또한 커플링될 수도 있다. 게다가, 비디오 인코더 (1224) 는 비디오 인코더 (1224) 및 디스플레이/터치스크린 (1214) 에 커플링될 수도 있는 비디오 증폭기 (1226) 에 커플링될 수도 있다. 또한, 비디오 포트 (1228) 가 모바일 컴퓨팅 디바이스 (102) 를 외부 모니터, 텔레비전 또는 다른 디스플레이 (미도시) 에 접속시키는 것을 가능하게 하기 위해 비디오 증폭기 (1226) 에 커플링될 수도 있다.
제어 프로세서 (1201) 는 무선 주파수 (RF) 트랜시버 (1230) 에, 이를테면 아날로그 신호 프로세서 (1208) 를 통해 커플링될 수도 있다. RF 트랜시버 (1230) 는 RF 신호들을 송신 및 수신하기 위한 RF 안테나 (1218) 에 커플링될 수도 있다. RF 트랜시버 (1230) 는, 예를 들어, 셀룰러 전화기 (예컨대, G-3, UMTS, CDMA 등), WiFi, WiMax, 및 블루투스를 포함한 하나 이상의 상이한 무선 통신 프로토콜들의 통신 신호들을 송신 및 수신하도록 구성될 수도 있다.
제어 프로세서 (1201) 는 네트워크 커넥터 (1231) 및/또는 RF 트랜시버 (1230) 에 커플링될 수도 있고 외부 네트워크 (예컨대, 근거리 네트워크들, 인터넷, 인트라넷, WiFi 네트워크들, 블루투스 네트워크들, 개인 영역 네트워크 (PAN) 등) 를 통한 통신들을 가능하게 하도록 구성될 수도 있는 네트워크 카드 (1232) 에 추가로 커플링될 수도 있다. 네트워크 카드 (1232) 는 별도의 칩 또는 카드의 형태일 수도 있거나, 또는 완전한 솔루션 통신 칩으로서의 제어 프로세서 (1201) 또는 RF 트랜시버 (1230) (또는 양쪽 모두) 의 부분으로서 구현될 수도 있다.
다수의 아날로그 디바이스들, 이를테면 키패드 (1234) 가 제어 프로세서 (1201) 에 아날로그 신호 프로세서 (1208) 를 통해 커플링될 수도 있다. 다른 구현예들에서, 직접 접속 (미도시) 을 통해, 네트워크 접속을 통해 (예컨대, 네트워크 카드를 통해), 또는 USB 포트 (1222) 를 통해 제어 프로세서 (1201) 와 인터페이스가 될 수도 있도록 키패드 또는 키보드가 자신 소유의 프로세서를 포함할 수도 있다.
일부 구현예들에서, 디지털 카메라 (1236) 가 제어 프로세서 (1201) 에 커플링될 수도 있다. 예시적인 양태에서, 디지털 카메라 (1236) 는 전하 결합 디바이스 (CCD) 카메라 또는 상보성 금속산화물 반도체 (CMOS) 카메라일 수도 있다. 디지털 카메라 (1236) 는 컴퓨팅 디바이스 (102) 속에 내장될 수도 있거나 또는 그 디바이스에 외부 케이블에 의해 커플링될 수도 있다.
일부 구현예들에서, 오디오 CODEC (1238) (예컨대, 스테레오 CODEC) 이 아날로그 신호 프로세서 (1208) 에 커플링될 수도 있고 사운드 신호들을 오디오 증폭기 (1242) 를 통해 하나 이상의 스피커들 (1240) 에 전송하도록 구성될 수도 있다. 오디오 CODEC (1238) 은 마이크로폰 (1246) 에 (예컨대, 마이크로폰 잭을 통해) 커플링될 수도 있는 마이크로폰 증폭기 (1244) 에 또한 커플링될 수도 있다. 헤드폰 잭 (1248) 이 오디오를 헤드폰들로 출력하기 위해 오디오 CODEC (1238) 에 또한 커플링될 수도 있다.
일부 구현예들에서, 모바일 컴퓨팅 디바이스 (102) 는 브로드캐스트 무선 통신 신호들을 수신하기 위한 안테나 (1252) 에 커플링될 수도 있는 별도의 RF 수신기 회로 (1250) 를 구비할 수도 있다. 수신기 회로 (1250) 는 브로드캐스트 텔레비전 신호들 (예컨대, EBMS 브로드캐스트들) 을 수신하고 수신된 신호들을 프로세싱을 위해 DSP (1206) 에 제공하도록 구성될 수도 있다. 일부 구현예들에서, 수신기 회로 (1250) 는 FM 라디오 신호들을 수신하도록 구성될 수도 있는데, 이 경우 수신된 신호들은 프로세싱을 위해 오디오 CODEC (1238) 에 전달될 수도 있다.
일 양태에서, 위에서 설명된 방법 동작들 중 하나 이상을 달성하기 위한 프로세서 실행가능 명령들은 내부 메모리 (1204), 착탈식 메모리 (1216) 및/또는 비휘발성 메모리 (1218) 에 (예컨대, 네트워크를 통해 액세스가능한 하드 드라이브, CD 드라이브, 또는 다른 스토리지 상에서처럼) 저장될 수도 있다. 이러한 프로세서 실행가능 명령들은 본원에서 설명된 방법들을 수행하기 위하여 제어 프로세서 (1201) 에 의해 실행될 수도 있다.
다양한 양태들은 다양한 모바일 컴퓨팅 디바이스들에 구현될 수도 있으며, 그런 디바이스들의 일 예가 스마트폰의 형태로 도 13에 도시되어 있다. 스마트폰 (1300) 이, 내부 메모리 (1302), 디스플레이 (1303), 및 스피커에 커플링된 프로세서 (1301) 를 구비할 수도 있다. 덧붙여, 스마트폰 (1300) 은 프로세서 (1301) 에 커플링된 무선 데이터 링크 및/또는 셀룰러 전화기 트랜시버 (1305) 에 접속될 수도 있는, 전자기 복사를 송신하고 수신하기 위한 안테나 (1304) 를 구비할 수도 있다. 스마트폰 (1300) 은 통상 사용자 입력들을 수신하기 위한 메뉴 선택 버튼들 또는 로커 스위치들 (1306) 을 또한 구비할 수도 있다.
전형적인 스마트폰 (1300) 이 마이크로폰으로부터 수신된 사운드를 무선 송신에 적합한 데이터 패킷들로 디지털화하고 수신된 사운드 데이터 패킷들을 디코딩하여 사운드를 생성하는 스피커에 제공되는 아날로그 신호들을 생성하는 사운드 인코딩/디코딩 (CODEC) 회로 (1312) 를 또한 구비한다. 또한, 프로세서 (1301), 무선 트랜시버 (1305) 및 CODEC (1312) 중 하나 이상은 디지털 신호 프로세서 (DSP) 회로 (별도로 도시되지 않음) 를 포함할 수도 있다.
이 양태의 방법들의 부분들은, 이 양태의 방법들을 실행하는 동안 모바일 디바이스 프로세서에 의해 액세스될 수도 있는 서버에서 정상 동작 거동들의 데이터베이스들을 유지하는 것과 같은 프로세싱의 일부가 발생하는 클라이언트-서버 아키텍처에서 달성될 수도 있다. 이러한 양태들은 다양한 상업적으로 입수가능한 서버 디바이스들 중 임의의 것, 이를테면 도 14에 예시된 서버 (1400) 상에 구현될 수도 있다. 이러한 서버 (1400) 는 휘발성 메모리 (1402) 및 대용량 비휘발성 메모리, 이를테면 디스크 드라이브 (1403) 에 커플링된 프로세서 (1401) 를 보통 구비한다. 서버 (1400) 는 프로세서 (1401) 에 커플링된 플로피 디스크 드라이브, 콤팩트 디스크 (CD) 또는 DVD 디스크 드라이브 (1411) 를 또한 구비할 수도 있다. 서버 (1400) 는 다른 브로드캐스트 시스템 컴퓨터들 및 서버들에 커플링된 로컬 영역 네트워크와 같은 네트워크 (1405) 와의 데이터 접속들을 확립하기 위해 프로세서 (1401) 에 커플링된 네트워크 액세스 포트들 (1404) 을 또한 구비할 수도 있다.
프로세서들 (1301, 1401) 은 아래에서 설명되는 다양한 양태들의 기능들을 포함한 다양한 기능들을 수행하기 위한 소프트웨어 명령들 (애플리케이션들) 에 의해 구성될 수 있는 임의의 프로그램가능 마이크로프로세서, 마이크로컴퓨터 또는 다중 프로세서 칩 또는 칩들일 수도 있다. 일부 모바일 디바이스들에서, 이를테면 하나의 프로세서가 무선 통신 기능들에 전용이고 하나의 프로세서가 다른 애플리케이션들에 전용인 다수의 프로세서들 (1301) 이 제공될 수도 있다. 통상, 소프트웨어 애플리케이션들은 그것들이 액세스되어 프로세서 (1301, 1401) 속으로 로딩되기 전에 내부 메모리 (1302, 1402, 1403) 에 저장될 수도 있다. 프로세서 (1301, 1401) 는 애플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 구비할 수도 있다.
다수의 모바일 컴퓨팅 디바이스들의 운영 체제 커널들이 사용자 공간 (권한 없는 코드가 실행되는 곳) 과 커널 공간 (권한 코드 (privileged code) 가 실행되는 곳) 으로 편성된다. 이 분리는 커널 공간의 부분인 코드가 GPL 사용허가되어야만 하는 반면 사용자 공간에서 실행하는 코드는 GPL 사용허가 되지 않을 수도 있는 Android® 및 다른 일반 공중 라이센스 (general public license, GPL) 환경들에서 특히 중요하다. 본원에서 논의된 다양한 소프트웨어 컴포넌트들/모듈들은, 달리 명시적으로 언급되지 않는 한, 커널 공간 또는 사용자 공간 중 어느 하나로 구현될 수도 있다는 것이 이해되어야 한다.
앞서의 방법 설명들 및 프로세스 흐름도들은 구체적인 예들로서만 제공되고 다양한 양태들의 단계들이 제시된 순서로 반드시 수행되어야 함을 요구하거나 의미하도록 의도된 것은 아니다. 이 기술분야의 숙련된 자에 의해 이해될 바와 같이 앞서의 양태들에서의 순서의 단계들은 어떤 순서로도 수행될 수도 있다. 단어들 이를테면 "그 후", "그 다음", "다음에" 등은 단계들의 순서를 제한하려는 의도는 아니고; 이들 단어들은 단지 방법들의 기재를 통하여 독자에게 설명하는데 사용된다. 게다가, 단수형으로, 예를 들어, 관사 "a", "an" 또는 "the"의 사용에 해당하는 것으로 여겨질 수 있는 청구항 엘리먼트들에 대한 어떠한 언급이라도, 그 엘리먼트를 단수형으로 제한하는 것으로 해석되지는 않는다.
본원에서 개시된 양태들에 관련하여 설명되는 각종 구체적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자적 하드웨어, 컴퓨터 소프트웨어, 또는 이것 둘의 조합들로 구현될 수도 있다. 하드웨어 및 소프트웨어의 이러한 교환가능성을 명백하게 예증하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 일반적으로 그것들의 기능성의 관점에서 설명되어 있다. 이러한 기능성이 하드웨어 또는 소프트웨어 중 어느 것으로 구현되는지는 전체 시스템에 부과되는 특정 애플리케이션 및 설계 제약들에 달려있다. 당업자들은 설명된 기능을 각각의 특정한 애플리케이션에 대하여 다양한 방식들로 구현할 수도 있지만, 이러한 구현 결정은 본 발명의 범위를 벗어나게 하는 것으로 해석되지 않아야 한다.
본원에 개시된 양태들에 관련하여 설명된 다양한 예시적인 로직들, 논리 블록들, 모듈들, 및 회로들을 구현하는데 사용되는 하드웨어는 본원에서 설명된 기능들을 수행하도록 설계된 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적회로 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA) 또는 다른 프로그램가능 로직 디바이스, 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 컴포넌트들, 또는 그것들의 임의의 조합으로 구현되거나 또는 수행될 수도 있다. 범용 프로세서가 멀티프로세서일 수도 있지만, 대안적으로는, 이 프로세서는 임의의 기존 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서가, 컴퓨팅 디바이스들의 조합, 예컨대, DSP 및 멀티프로세서의 조합, 복수의 멀티프로세서들의 조합, DSP 코어와 협력하는 하나 이상의 멀티프로세서들의 조합, 또는 임의의 다른 이러한 구성으로 또한 구현될 수도 있다. 다르게는, 일부 단계들 또는 방법들이 주어진 기능에 특정된 회로에 의해 수행될 수도 있다.
하나 이상의 예시적인 양태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그것들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현된다면, 기능들은 하나 이상의 명령들 또는 코드로서 비일시적 컴퓨터 판독가능 매체 또는 비일시적 프로세서 판독가능 매체 상에 저장될 수도 있다. 본원에서 개시된 방법 또는 알고리즘의 단계들은, 비일시적 컴퓨터 판독가능 저장 매체 또는 프로세서 판독가능 저장 매체 상에 존재할 수도 있는 프로세서 실행가능 소프트웨어 모듈로 실시될 수도 있다. 비일시적 컴퓨터 판독가능 또는 프로세서 판독가능 저장 매체들은 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 저장 매체들일 수도 있다. 비제한적인 예로, 이러한 비일시적 컴퓨터 판독가능 또는 프로세서 판독가능 매체들은 RAM, ROM, EEPROM, FLASH 메모리, CD-ROM 또는 다른 광 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기적 저장 디바이스들, 또는 소망의 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수도 있는 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 디스크 (disk 및 disc) 는 본원에서 사용되는 바와 같이, 콤팩트 디스크 (compact disc, CD), 레이저 디스크, 광 디스크, 디지털 다용도 디스크 (DVD), 플로피 디스크 (floppy disk) 및 블루레이 디스크를 포함하는데, disk들은 보통 데이터를 자기적으로 재생하지만, disc들은 레이저들로써 광적으로 데이터를 재생한다. 상기한 것들의 조합들은 또한 비일시적 컴퓨터 판독가능 및 프로세서 판독가능 매체들의 범위 내에 포함된다. 덧붙여, 방법 또는 알고리즘의 동작들은 코드들 및/또는 명령들의 하나 또는 임의의 조합 또는 세트로서 컴퓨터 프로그램 제품에 통합될 수도 있는 비일시적 프로세서 판독가능 매체 및/또는 컴퓨터 판독가능 매체 상에 존재할 수 있다.
개시된 양태들의 전술한 설명은 이 기술분야의 숙련된 임의의 사람이 본 발명을 제작하고 사용할 수 있게끔 제공된다. 이들 양태들에 대한 다양한 변형예들은 이 기술분야의 숙련된 자들에게 쉽사리 명확하게 될 것이고, 여기에 정의된 일반 원리들은 본 발명의 사상 또는 범위로부터 벗어남 없이 다른 양태들에 적용될 수도 있다. 따라서, 본 발명은 본 명세서에서 보인 양태들로 한정할 의도는 아니며 다음의 청구항들 및 여기에 개시된 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위를 부여하는 것을 의도한다.

Claims (140)

  1. 컴퓨팅 디바이스의 정상 동작 패턴들과 불일치하는 컴퓨팅 디바이스 거동들을 인식하기 위해 시구간에 걸쳐 상기 컴퓨팅 디바이스의 프로세서를 통해 상기 컴퓨팅 디바이스 거동들을 관찰하는 방법으로서,
    관찰에 대한 하나 이상의 컴퓨팅 디바이스 거동들을, 상기 프로세서를 통해, 동적으로 선택하는 단계;
    거동 정보를 수집하기 위해 동적으로 선택된 상기 컴퓨팅 디바이스 거동들을, 상기 프로세서를 통해, 적응적으로 관찰하는 단계;
    수집된 상기 거동 정보를 간결하게 기술하는 벡터 데이터 구조를 복수의 숫자들을 통해 생성하는 단계; 및
    비정상의 (suspicious) 디바이스 거동을 식별하기 위해 상기 벡터 데이터 구조를, 상기 프로세서에 의해, 사용하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  2. 제 1 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 단계는: 파일 시스템 동작들, 파일 시스템 활동, 파일명들에 대한 검색들, 파일 동작들, 및 파일 권한들의 변경들을 모니터링하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  3. 제 1 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 단계는:
    디바이스 상태 변경들; 및
    센서 상태 변경들을 모니터링하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  4. 제 1 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 단계는:
    포크들의 수;
    메모리 액세스 동작들의 수; 및
    열린 파일들의 수를 모니터링하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  5. 제 1 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 단계는:
    디스플레이 온/오프 상태;
    잠금/잠금해제 상태;
    배터리 충전 상태;
    카메라 상태; 및
    마이크로폰 상태 중 하나 이상을 모니터링하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  6. 제 1 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 단계는:
    중요한 서비스들과 관련된 프로세스 간 통신들;
    프로세스 간 통신들의 정도; 및
    팝업 윈도우들과 관련된 프로세스 간 통신들 중 하나 이상을 모니터링하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  7. 제 1 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 단계는:
    카메라들에 대한 드라이버로부터의 통계 정보;
    센서들에 대한 드라이버로부터의 통계 정보;
    전자 디스플레이들에 대한 드라이버로부터의 통계 정보;
    데이터 제어기들에 대한 드라이버로부터의 통계 정보;
    메모리 제어기들에 대한 드라이버로부터의 통계 정보;
    시스템 제어기들에 대한 드라이버로부터의 통계 정보;
    액세스 포트들에 대한 드라이버로부터의 통계 정보;
    주변 디바이스들에 대한 드라이버로부터의 통계 정보; 및
    외부 메모리 칩들에 대한 드라이버로부터의 통계 정보 중 하나 이상을 수집하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  8. 제 1 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 단계는:
    카메라들에 대한 하드웨어 컴포넌트의 스테이터스;
    센서들에 대한 하드웨어 컴포넌트의 스테이터스;
    전자 디스플레이들에 대한 하드웨어 컴포넌트의 스테이터스;
    데이터 제어기들에 대한 하드웨어 컴포넌트의 스테이터스;
    메모리 제어기들에 대한 하드웨어 컴포넌트의 스테이터스;
    시스템 제어기들에 대한 하드웨어 컴포넌트의 스테이터스;
    액세스 포트들에 대한 하드웨어 컴포넌트의 스테이터스;
    타이머들에 대한 하드웨어 컴포넌트의 스테이터스;
    주변 디바이스들에 대한 하드웨어 컴포넌트의 스테이터스;
    외부 메모리 칩들에 대한 하드웨어 컴포넌트의 스테이터스;
    전압 조정기들에 대한 하드웨어 컴포넌트의 스테이터스;
    발진기들에 대한 하드웨어 컴포넌트의 스테이터스;
    위상 동기 루프들에 대한 하드웨어 컴포넌트의 스테이터스; 및
    주변기기 브릿지들에 대한 하드웨어 컴포넌트의 스테이터스 중 하나 이상을 모니터링하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  9. 제 1 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 단계는:
    상기 컴퓨팅 디바이스의 상태를 나타내는 하드웨어 카운터; 및
    하드웨어 관련 이벤트들의 카운트를 저장하는 상기 프로세서의 특수목적 레지스터 중 하나 이상을 모니터링하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  10. 제 1 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 단계는:
    로케이션 정보, 카메라 정보, 가속도계 정보, 브라우저 정보, 폰북 또는 연락처 정보, 레코딩된 오디오 정보 및 캘린더 정보 중 하나 이상을 수집하는 단계; 및
    브라우저 기반 통신들의 콘텐츠, 음성 기반 통신들의 콘텐츠, 단거리 라디오 통신들, 텍스트 기반 통신들의 콘텐츠, 레코딩된 오디오 파일들의 콘텐츠, 소프트웨어 애플리케이션으로 및 소프트웨어 애플리케이션으로부터 통신된 통지들, 사용자 검증들, 및 사용자 패스워드 중 하나 이상을 모니터링하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  11. 제 1 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 단계는:
    상기 컴퓨팅 디바이스 상에서 동작하는 제 1 소프트웨어 애플리케이션이 상기 컴퓨팅 디바이스에서 제 2 소프트웨어 애플리케이션을 다운로딩 및 설치할 것을 요청했는지 여부를 나타내는 정보를 수집하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  12. 제 1 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 단계는:
    나침반 설정들에 대한 변경들;
    디바이스 설정들에 대한 변경들;
    배터리 수명 설정들에 대한 변경들;
    자이로스코프 설정들에 대한 변경들;
    압력 센서 설정들에 대한 변경들; 및
    스크린 설정들에 대한 변경들 중 하나 이상을 모니터링하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  13. 제 1 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 단계는:
    얼굴 인식 소프트웨어;
    소셜 스트림들;
    사용자에 의해 입력된 노트들;
    전자 지불 서비스의 사용;
    동기화와 관련된 이벤트들;
    음성 검색들;
    음성 제어;
    언어 번역기들;
    컴퓨테이션들을 위한 데이터의 오프로딩;
    비디오 스트리밍;
    사용자 활동없는 카메라 사용; 및
    사용자 활동없는 마이크로폰 사용 중 하나 이상을 모니터링하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  14. 제 1 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 단계는:
    마그넷 센서들을 모니터링하는 것;
    근접장 통신들을 검출하는 것;
    신용 카드 스캐너, 바코드 스캐너, 또는 모바일 태그 판독기로부터 정보를 수집하는 것;
    키보드 또는 보조 디바이스가 상기 컴퓨팅 디바이스에 커플링되었음을 검출하는 것;
    발광 다이오드, 플래시, 손전등, 또는 광원이 수정되었는지 또는 가능하지 않게 되었는지를 결정하는 것;
    스피커 또는 마이크로폰이 턴 온 또는 전력 공급되었는지를 결정하는 것;
    충전 또는 파워 이벤트를 검출하는 것;
    상기 컴퓨팅 디바이스가 게임 컨트롤러로서 사용되고 있음을 검출하는 것;
    의료용 센서들로부터 또는 사용자의 신체를 스캐닝하는 것으로부터 정보를 수집하는 것;
    오디오 잭에 꽂아진 외부 센서로부터 정보를 수집하는 것;
    촉각 또는 햅틱 센서로부터 정보를 수집하는 것; 및
    상기 컴퓨팅 디바이스의 열적 상태에 관계된 정보를 수집하는 것 중 하나를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  15. 제 1 항에 있어서,
    상기 수집된 거동 정보를 적응 필터를 통해 필터링하는 단계;
    상기 적응 필터에 의한 필터링 후에 하이 레벨 애플리케이션, 시스템 커널 및 드라이버 애플리케이션 프로그래밍 인터페이스 (API) 중 하나 이상으로부터 거동 입력들을 수신하는 단계;
    상기 컴퓨팅 디바이스의 동작들에 관한 콘텍스트 정보를 수신하는 단계; 및
    수신된 상기 거동 입력들 및 수신된 상기 콘텍스트 정보의 공간적 상관들을 수행하는 단계를 더 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  16. 제 15 항에 있어서,
    상기 벡터 데이터 구조를 생성하는 단계는:
    라이브러리 API 호출들;
    시스템 호출들;
    파일 시스템 동작들;
    센서 디바이스 상태 변경들;
    파일 시스템 활동;
    전화기 활동;
    메모리 액세스 동작들;
    상기 컴퓨팅 디바이스의 상태;
    상기 컴퓨팅 디바이스의 전자 디스플레이의 파워 온/오프 상태;
    상기 컴퓨팅 디바이스의 잠금/잠금해제 상태;
    남은 배터리 전력량;
    프로세스 간 통신들 (inter-process communications, IPC);
    드라이버 통계들; 및
    하드웨어 카운터들 중 하나 이상에 관계된 정보를 포함하는 벡터를 생성하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  17. 제 15 항에 있어서,
    상기 벡터 데이터 구조를 생성하는 단계는:
    일련의 숫자들의 각각이 상기 컴퓨팅 디바이스의 특징을 의미하는, 상기 일련의 숫자들을 포함하는 벡터 데이터 구조를 생성하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  18. 제 17 항에 있어서,
    상기 일련의 숫자들 중 적어도 하나는:
    상기 컴퓨팅 디바이스의 카메라가 사용중인지의 여부; 및
    상기 컴퓨팅 디바이스로부터 전송되었던 인터넷 메시지들이 몇이나 되는지 중 하나 이상을 식별하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  19. 제 15 항에 있어서,
    상기 벡터 데이터 구조를 생성하는 단계는:
    호출 정보;
    텍스트 메시징 정보;
    미디어 메시징 정보;
    사용자 계정 정보;
    로케이션 정보;
    카메라 정보;
    가속도계 정보; 및
    브라우저 정보 중 적어도 하나를 포함하는 벡터를 생성하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  20. 제 15 항에 있어서,
    상기 벡터 데이터 구조를 생성하는 단계는, 상기 컴퓨팅 디바이스의 라디오 레벨에서 수집된 정보를 포함하는 벡터를 생성하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  21. 제 15 항에 있어서,
    상기 벡터 데이터 구조를 생성하는 단계는, 상기 컴퓨팅 디바이스의 센서 레벨에서 수집된 정보를 포함하는 벡터를 생성하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  22. 제 15 항에 있어서,
    상기 수신된 거동 입력들 및 상기 수신된 콘텍스트 정보의 시간적 상관들을 수행하는 단계를 더 포함하며,
    상기 벡터 데이터 구조를 생성하는 단계는, 상기 공간적 상관들 및 상기 시간적 상관들의 결과에 기초하여 거동 벡터를 생성하는 단계를 포함하는, 컴퓨팅 디바이스 거동들을 관찰하는 방법.
  23. 2 이상의 프로세서 코어들을 구비한 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스로서,
    상기 프로세서 코어들 중 하나 이상은,
    관찰에 대한 하나 이상의 컴퓨팅 디바이스 거동들을 동적으로 선택하는 것;
    거동 정보를 수집하기 위해 동적으로 선택된 상기 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것;
    수집된 상기 거동 정보를 간결하게 기술하는 벡터 데이터 구조를 복수의 숫자들을 통해 생성하는 것; 및
    비정상의 디바이스 거동을 식별하기 위해 상기 벡터 데이터 구조를 사용하는 것을 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  24. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이 파일 시스템 동작들, 파일 시스템 활동, 파일명들에 대한 검색들, 파일 동작들, 및 파일 권한들의 변경들을 모니터링하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  25. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이 디바이스 상태 변경들 및 센서 디바이스들 상태 변경들을 모니터링하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  26. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    포크들의 수;
    메모리 액세스 동작들의 수; 및
    열린 파일들의 수를 모니터링하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  27. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    디스플레이 온/오프 상태;
    잠금/잠금해제 상태;
    배터리 충전 상태;
    카메라 상태; 및
    마이크로폰 상태 중 하나 이상을 모니터링하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  28. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    중요한 서비스들과 관련된 프로세스 간 통신들;
    프로세스 간 통신들의 정도; 및
    팝업 윈도우들과 관련된 프로세스 간 통신들 중 하나 이상을 모니터링하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  29. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    카메라들에 대한 드라이버로부터의 통계 정보;
    센서들에 대한 드라이버로부터의 통계 정보;
    전자 디스플레이들에 대한 드라이버로부터의 통계 정보;
    데이터 제어기들에 대한 드라이버로부터의 통계 정보;
    메모리 제어기들에 대한 드라이버로부터의 통계 정보;
    시스템 제어기들에 대한 드라이버로부터의 통계 정보;
    액세스 포트들에 대한 드라이버로부터의 통계 정보;
    주변 디바이스들에 대한 드라이버로부터의 통계 정보; 및
    외부 메모리 칩들에 대한 드라이버로부터의 통계 정보 중 하나 이상을 수집하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  30. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    카메라들에 대한 하드웨어 컴포넌트의 스테이터스;
    센서들에 대한 하드웨어 컴포넌트의 스테이터스;
    전자 디스플레이들에 대한 하드웨어 컴포넌트의 스테이터스;
    데이터 제어기들에 대한 하드웨어 컴포넌트의 스테이터스;
    메모리 제어기들에 대한 하드웨어 컴포넌트의 스테이터스;
    시스템 제어기들에 대한 하드웨어 컴포넌트의 스테이터스;
    액세스 포트들에 대한 하드웨어 컴포넌트의 스테이터스;
    타이머들에 대한 하드웨어 컴포넌트의 스테이터스;
    주변 디바이스들에 대한 하드웨어 컴포넌트의 스테이터스;
    외부 메모리 칩들에 대한 하드웨어 컴포넌트의 스테이터스;
    전압 조정기들에 대한 하드웨어 컴포넌트의 스테이터스;
    발진기들에 대한 하드웨어 컴포넌트의 스테이터스;
    위상 동기 루프들에 대한 하드웨어 컴포넌트의 스테이터스; 및
    주변기기 브릿지들에 대한 하드웨어 컴포넌트의 스테이터스 중 하나 이상을 모니터링하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  31. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    상기 컴퓨팅 디바이스의 상태를 나타내는 하드웨어 카운터; 및
    하드웨어 관련 이벤트들의 카운트를 저장하는 상기 프로세서의 특수목적 레지스터 중 하나 이상을 모니터링하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  32. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    로케이션 정보, 카메라 정보, 가속도계 정보, 브라우저 정보, 폰북 또는 연락처 정보, 레코딩된 오디오 정보 및 캘린더 정보 중 하나 이상을 수집하는 것; 및
    브라우저 기반 통신들의 콘텐츠, 음성 기반 통신들의 콘텐츠, 단거리 라디오 통신들, 텍스트 기반 통신들의 콘텐츠, 레코딩된 오디오 파일들의 콘텐츠, 소프트웨어 애플리케이션으로 및 소프트웨어 애플리케이션으로부터 통신된 통지들, 사용자 검증들, 및 사용자 패스워드 중 하나 이상을 모니터링하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  33. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    상기 컴퓨팅 디바이스 상에서 동작하는 제 1 소프트웨어 애플리케이션이 제 2 소프트웨어 애플리케이션을 다운로딩 및 설치할 것을 요청했는지 여부를 나타내는 정보를 수집하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  34. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    나침반 설정들에 대한 변경들;
    디바이스 설정들에 대한 변경들;
    배터리 수명 설정들에 대한 변경들;
    자이로스코프 설정들에 대한 변경들;
    압력 센서 설정들에 대한 변경들; 및
    스크린 설정들에 대한 변경들 중 하나 이상을 모니터링하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  35. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    얼굴 인식 소프트웨어;
    소셜 스트림들;
    사용자에 의해 입력된 노트들;
    전자 지불 서비스의 사용;
    동기화와 관련된 이벤트들;
    음성 검색들;
    음성 제어;
    언어 번역기들;
    컴퓨테이션들을 위한 데이터의 오프로딩;
    비디오 스트리밍;
    사용자 활동없는 카메라 사용; 및
    사용자 활동없는 마이크로폰 사용 중 하나 이상을 모니터링하는 것을 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  36. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    마그넷 센서들을 모니터링하는 것;
    근접장 통신들을 검출하는 것;
    신용 카드 스캐너, 바코드 스캐너, 또는 모바일 태그 판독기로부터 정보를 수집하는 것;
    키보드 또는 보조 디바이스가 상기 컴퓨팅 디바이스에 커플링되었음을 검출하는 것;
    발광 다이오드, 플래시, 손전등, 또는 광원이 수정되었는지 또는 가능하지 않게 되었는지를 결정하는 것;
    스피커 또는 마이크로폰이 턴 온 또는 전력 공급되었는지를 결정하는 것;
    충전 또는 파워 이벤트를 검출하는 것;
    상기 컴퓨팅 디바이스가 게임 컨트롤러로서 사용되고 있음을 검출하는 것;
    의료용/보건 센서들로부터 또는 사용자의 신체를 스캐닝하는 것으로부터 정보를 수집하는 것;
    USB 포트 및 오디오 잭 중 하나에 꽂아진 외부 센서로부터 정보를 수집하는 것;
    촉각 또는 햅틱 센서로부터 정보를 수집하는 것; 및
    상기 컴퓨팅 디바이스의 열적 상태에 관계된 정보를 수집하는 것 중 하나를 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  37. 제 23 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은,
    상기 수집된 거동 정보를 적응 필터를 통해 필터링하는 것;
    상기 적응 필터에 의한 필터링 후에 하이 레벨 애플리케이션, 시스템 커널 및 드라이버 애플리케이션 프로그래밍 인터페이스 (API) 중 하나 이상으로부터 거동 입력들을 수신하는 것;
    상기 컴퓨팅 디바이스의 동작들에 관한 콘텍스트 정보를 수신하는 것; 및
    수신된 상기 거동 입력들 및 수신된 상기 콘텍스트 정보의 공간적 상관들을 수행하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  38. 제 37 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 벡터 데이터 구조를 생성하는 것이:
    라이브러리 API 호출들;
    시스템 호출들;
    파일 시스템 동작들;
    센서 디바이스 상태 변경들;
    파일 시스템 활동;
    전화기 활동;
    메모리 액세스 동작들;
    상기 컴퓨팅 디바이스의 상태;
    상기 컴퓨팅 디바이스의 전자 디스플레이의 파워 온/오프 상태;
    상기 컴퓨팅 디바이스의 잠금/잠금해제 상태;
    남은 배터리 전력량;
    프로세스 간 통신들 (IPC);
    드라이버 통계들; 및
    하드웨어 카운터들 중 하나 이상에 관계된 정보를 포함하는 벡터를 생성하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  39. 제 37 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 벡터 데이터 구조를 생성하는 것이:
    일련의 숫자들의 각각이 상기 컴퓨팅 디바이스의 특징을 의미하는, 상기 일련의 숫자들을 포함하는 벡터 데이터 구조를 생성하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  40. 제 39 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 일련의 숫자들 중 적어도 하나가:
    상기 컴퓨팅 디바이스의 카메라가 사용중인지의 여부; 및
    상기 컴퓨팅 디바이스로부터 전송되었던 인터넷 메시지들이 몇이나 되는지 중 하나 이상을 식별하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  41. 제 37 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 벡터 데이터 구조를 생성하는 것이:
    호출 정보;
    텍스트 메시징 정보;
    미디어 메시징 정보;
    사용자 계정 정보;
    로케이션 정보;
    카메라 정보;
    가속도계 정보; 및
    브라우저 정보 중 적어도 하나를 포함하는 벡터를 생성하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  42. 제 37 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 벡터 데이터 구조를 생성하는 것이 상기 컴퓨팅 디바이스의 라디오 레벨에서 수집된 정보를 포함하는 벡터를 생성하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  43. 제 37 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은, 상기 벡터 데이터 구조를 생성하는 것이 상기 컴퓨팅 디바이스의 센서 레벨에서 수집된 정보를 포함하는 벡터를 생성하는 것을 포함하도록 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  44. 제 37 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은,
    상기 수신된 거동 입력들 및 상기 수신된 콘텍스트 정보의 시간적 상관들을 수행하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되고,
    상기 벡터 데이터 구조를 생성하는 것은, 상기 공간적 상관들 및 상기 시간적 상관들의 결과에 기초하여 거동 벡터를 생성하는 것을 포함하는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  45. 컴퓨팅 디바이스로서,
    관찰에 대한 하나 이상의 컴퓨팅 디바이스 거동들을 동적으로 선택하는 수단;
    거동 정보를 수집하기 위해 동적으로 선택된 상기 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단;
    수집된 상기 거동 정보를 간결하게 기술하는 벡터 데이터 구조를 복수의 숫자들을 통해 생성하는 수단; 및
    비정상의 디바이스 거동을 식별하기 위해 상기 벡터 데이터 구조를 사용하는 수단을 포함하는, 컴퓨팅 디바이스.
  46. 제 45 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단은:
    파일 시스템 동작들, 파일 시스템 활동, 파일명들에 대한 검색들, 파일 동작들, 및 파일 권한들의 변경들을 모니터링하는 수단을 포함하는, 컴퓨팅 디바이스.
  47. 제 45 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단은:
    디바이스 상태 변경들; 및
    센서 상태 변경들을 모니터링하는 수단을 포함하는, 컴퓨팅 디바이스.
  48. 제 45 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단은:
    포크들의 수;
    메모리 액세스 동작들의 수; 및
    열린 파일들의 수를 모니터링하는 수단을 포함하는, 컴퓨팅 디바이스.
  49. 제 45 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단은:
    디스플레이 온/오프 상태;
    잠금/잠금해제 상태;
    배터리 충전 상태;
    카메라 상태; 및
    마이크로폰 상태 중 하나 이상을 모니터링하는 수단을 포함하는, 컴퓨팅 디바이스.
  50. 제 45 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단은:
    중요한 서비스들과 관련된 프로세스 간 통신들;
    프로세스 간 통신들의 정도; 및
    팝업 윈도우들과 관련된 프로세스 간 통신들 중 하나 이상을 모니터링하는 수단을 포함하는, 컴퓨팅 디바이스.
  51. 제 45 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단은:
    카메라들에 대한 드라이버로부터의 통계 정보;
    센서들에 대한 드라이버로부터의 통계 정보;
    전자 디스플레이들에 대한 드라이버로부터의 통계 정보;
    데이터 제어기들에 대한 드라이버로부터의 통계 정보;
    메모리 제어기들에 대한 드라이버로부터의 통계 정보;
    시스템 제어기들에 대한 드라이버로부터의 통계 정보;
    액세스 포트들에 대한 드라이버로부터의 통계 정보;
    주변 디바이스들에 대한 드라이버로부터의 통계 정보; 및
    외부 메모리 칩들에 대한 드라이버로부터의 통계 정보 중 하나 이상을 수집하는 수단을 포함하는, 컴퓨팅 디바이스.
  52. 제 45 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단은:
    카메라들, 센서들, 전자 디스플레이들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 타이머들, 주변 디바이스들, 외부 메모리 칩들, 전압 조정기들, 발진기들, 위상 동기 루프들, 주변기기 브릿지들, 및 상기 컴퓨팅 디바이스 상에서 실행되는 프로세서들 및 클라이언트들을 지원하는데 사용되는 유사한 다른 컴포넌트들을 모니터링하는 수단을 포함하는, 컴퓨팅 디바이스.
  53. 제 45 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단은:
    카메라들에 대한 하드웨어 컴포넌트의 스테이터스;
    센서들에 대한 하드웨어 컴포넌트의 스테이터스;
    전자 디스플레이들에 대한 하드웨어 컴포넌트의 스테이터스;
    데이터 제어기들에 대한 하드웨어 컴포넌트의 스테이터스;
    메모리 제어기들에 대한 하드웨어 컴포넌트의 스테이터스;
    시스템 제어기들에 대한 하드웨어 컴포넌트의 스테이터스;
    액세스 포트들에 대한 하드웨어 컴포넌트의 스테이터스;
    타이머들에 대한 하드웨어 컴포넌트의 스테이터스;
    주변 디바이스들에 대한 하드웨어 컴포넌트의 스테이터스;
    외부 메모리 칩들에 대한 하드웨어 컴포넌트의 스테이터스;
    전압 조정기들에 대한 하드웨어 컴포넌트의 스테이터스;
    발진기들에 대한 하드웨어 컴포넌트의 스테이터스;
    위상 동기 루프들에 대한 하드웨어 컴포넌트의 스테이터스; 및
    주변기기 브릿지들에 대한 하드웨어 컴포넌트의 스테이터스 중 하나 이상을 모니터링하는 수단을 포함하는, 컴퓨팅 디바이스.
  54. 제 45 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단은:
    로케이션 정보, 카메라 정보, 가속도계 정보, 브라우저 정보, 폰북 또는 연락처 정보, 레코딩된 오디오 정보 및 캘린더 정보 중 하나 이상을 수집하는 수단; 및
    브라우저 기반 통신들의 콘텐츠, 음성 기반 통신들의 콘텐츠, 단거리 라디오 통신들, 텍스트 기반 통신들의 콘텐츠, 레코딩된 오디오 파일들의 콘텐츠, 소프트웨어 애플리케이션으로 및 소프트웨어 애플리케이션으로부터 통신된 통지들, 사용자 검증들, 및 사용자 패스워드 중 하나 이상을 모니터링하는 수단을 포함하는, 컴퓨팅 디바이스.
  55. 제 45 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단은:
    상기 컴퓨팅 디바이스 상에서 동작하는 제 1 소프트웨어 애플리케이션이 제 2 소프트웨어 애플리케이션을 다운로딩 및 설치할 것을 요청했는지 여부를 나타내는 정보를 수집하는 수단을 포함하는, 컴퓨팅 디바이스.
  56. 제 45 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단은:
    나침반 설정들에 대한 변경들;
    디바이스 설정들에 대한 변경들;
    배터리 수명 설정들에 대한 변경들;
    자이로스코프 설정들에 대한 변경들;
    압력 센서 설정들에 대한 변경들; 및
    스크린 설정들에 대한 변경들 중 하나 이상을 모니터링하는 수단을 포함하는, 컴퓨팅 디바이스.
  57. 제 45 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단은:
    얼굴 인식 소프트웨어;
    소셜 스트림들;
    사용자에 의해 입력된 노트들;
    전자 지불 서비스의 사용;
    동기화와 관련된 이벤트들;
    음성 검색들;
    음성 제어;
    언어 번역기들;
    컴퓨테이션들을 위한 데이터의 오프로딩;
    비디오 스트리밍;
    사용자 활동없는 카메라 사용; 및
    사용자 활동없는 마이크로폰 사용 중 하나 이상을 모니터링하는 수단을 포함하는, 컴퓨팅 디바이스.
  58. 제 45 항에 있어서,
    상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 수단은:
    마그넷 센서들을 모니터링하는 수단;
    근접장 통신들을 검출하는 수단;
    신용 카드 스캐너, 바코드 스캐너, 또는 모바일 태그 판독기로부터 정보를 수집하는 수단;
    키보드 또는 보조 디바이스가 상기 컴퓨팅 디바이스에 커플링되었음을 검출하는 수단;
    발광 다이오드, 플래시, 손전등, 또는 광원이 수정되었는지 또는 가능하지 않게 되었는지를 결정하는 수단;
    스피커 또는 마이크로폰이 턴 온 또는 전력 공급되었는지를 결정하는 수단;
    충전 또는 파워 이벤트를 검출하는 수단;
    상기 컴퓨팅 디바이스가 게임 컨트롤러로서 사용되고 있음을 검출하는 수단;
    의료용/보건 센서들로부터 또는 사용자의 신체를 스캐닝하는 것으로부터 정보를 수집하는 수단;
    USB 포트 및 오디오 잭 중 하나에 꽂아진 외부 센서로부터 정보를 수집하는 수단;
    촉각 또는 햅틱 센서로부터 정보를 수집하는 수단; 및
    상기 컴퓨팅 디바이스의 열적 상태에 관계된 정보를 수집하는 수단 중 하나 이상을 포함하는, 컴퓨팅 디바이스.
  59. 제 45 항에 있어서,
    상기 수집된 거동 정보를 적응 필터를 통해 필터링하는 수단;
    상기 적응 필터에 의한 필터링 후에 하이 레벨 애플리케이션, 시스템 커널 및 드라이버 애플리케이션 프로그래밍 인터페이스 (API) 중 하나 이상으로부터 거동 입력들을 수신하는 수단;
    상기 컴퓨팅 디바이스의 동작들에 관한 콘텍스트 정보를 수신하는 수단; 및
    수신된 상기 거동 입력들 및 수신된 상기 콘텍스트 정보의 공간적 상관들을 수행하는 수단을 더 포함하는, 컴퓨팅 디바이스.
  60. 제 59 항에 있어서,
    상기 벡터 데이터 구조를 생성하는 수단은:
    라이브러리 API 호출들;
    시스템 호출들;
    파일 시스템 동작들;
    센서 디바이스 상태 변경들;
    파일 시스템 활동;
    전화기 활동;
    메모리 액세스 동작들;
    상기 컴퓨팅 디바이스의 상태;
    상기 컴퓨팅 디바이스의 전자 디스플레이의 파워 온/오프 상태;
    상기 컴퓨팅 디바이스의 잠금/잠금해제 상태;
    남은 배터리 전력량;
    프로세스 간 통신들 (IPC);
    드라이버 통계들; 및
    하드웨어 카운터들 중 하나 이상에 관계된 정보를 포함하는 벡터를 생성하는 수단을 포함하는, 컴퓨팅 디바이스.
  61. 제 59 항에 있어서,
    상기 벡터 데이터 구조를 생성하는 수단은:
    일련의 숫자들의 각각이 상기 컴퓨팅 디바이스의 특징을 의미하는, 상기 일련의 숫자들을 포함하는 벡터 데이터 구조를 생성하는 수단을 포함하는, 컴퓨팅 디바이스.
  62. 제 61 항에 있어서,
    상기 일련의 숫자들 중 적어도 하나는:
    상기 컴퓨팅 디바이스의 카메라가 사용중인지의 여부; 및
    상기 컴퓨팅 디바이스로부터 전송되었던 인터넷 메시지들이 몇이나 되는지 중 하나 이상을 식별하는, 컴퓨팅 디바이스.
  63. 제 59 항에 있어서,
    상기 벡터 데이터 구조를 생성하는 수단은:
    호출 정보;
    텍스트 메시징 정보;
    미디어 메시징 정보;
    사용자 계정 정보;
    로케이션 정보;
    카메라 정보;
    가속도계 정보; 및
    브라우저 정보 중 적어도 하나를 포함하는 벡터를 생성하는 수단을 포함하는, 컴퓨팅 디바이스.
  64. 제 59 항에 있어서,
    상기 벡터 데이터 구조를 생성하는 수단은, 상기 컴퓨팅 디바이스의 라디오 레벨에서 수집된 정보를 포함하는 벡터를 생성하는 수단을 포함하는, 컴퓨팅 디바이스.
  65. 제 59 항에 있어서,
    상기 벡터 데이터 구조를 생성하는 수단은, 상기 컴퓨팅 디바이스의 센서 레벨에서 수집된 정보를 포함하는 벡터를 생성하는 수단을 포함하는, 컴퓨팅 디바이스.
  66. 제 59 항에 있어서,
    상기 수신된 거동 입력들 및 상기 수신된 콘텍스트 정보의 시간적 상관들을 수행하는 수단을 더 포함하고,
    상기 벡터 데이터 구조를 생성하는 수단은, 상기 공간적 상관들 및 상기 시간적 상관들의 결과에 기초하여 거동 벡터를 생성하는 수단을 포함하는, 컴퓨팅 디바이스.
  67. 프로세서 실행가능 명령들이 저장되어 있는 비일시적 프로세서 판독가능 저장 매체로서,
    상기 프로세서 실행가능 명령들은 프로세서로 하여금,
    관찰에 대한 하나 이상의 컴퓨팅 디바이스 거동들을 동적으로 선택하는 것;
    거동 정보를 수집하기 위해 동적으로 선택된 상기 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것;
    수집된 상기 거동 정보를 간결하게 기술하는 벡터 데이터 구조를 복수의 숫자들을 통해 생성하는 것; 및
    비정상의 디바이스 거동을 식별하기 위해 상기 벡터 데이터 구조를 사용하는 것을 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  68. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이 파일 시스템 동작들, 파일 시스템 활동, 파일명들에 대한 검색들, 파일 동작들, 및 파일 권한들의 변경들을 모니터링하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  69. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    디바이스 상태 변경들; 및
    센서 상태 변경들을 모니터링하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  70. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    포크들의 수;
    메모리 액세스 동작들의 수; 및
    열린 파일들의 수를 모니터링하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  71. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    디스플레이 온/오프 상태;
    잠금/잠금해제 상태;
    배터리 충전 상태;
    카메라 상태; 및
    마이크로폰 상태 중 하나 이상을 모니터링하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  72. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    중요한 서비스들과 관련된 프로세스 간 통신들;
    프로세스 간 통신들의 정도; 및
    팝업 윈도우들과 관련된 프로세스 간 통신들 중 하나 이상을 모니터링하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  73. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    카메라들에 대한 드라이버로부터의 통계 정보;
    센서들에 대한 드라이버로부터의 통계 정보;
    전자 디스플레이들에 대한 드라이버로부터의 통계 정보;
    데이터 제어기들에 대한 드라이버로부터의 통계 정보;
    메모리 제어기들에 대한 드라이버로부터의 통계 정보;
    시스템 제어기들에 대한 드라이버로부터의 통계 정보;
    액세스 포트들에 대한 드라이버로부터의 통계 정보;
    주변 디바이스들에 대한 드라이버로부터의 통계 정보; 및
    외부 메모리 칩들에 대한 드라이버로부터의 통계 정보 중 하나 이상을 수집하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  74. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    카메라들에 대한 하드웨어 컴포넌트의 스테이터스;
    센서들에 대한 하드웨어 컴포넌트의 스테이터스;
    전자 디스플레이들에 대한 하드웨어 컴포넌트의 스테이터스;
    데이터 제어기들에 대한 하드웨어 컴포넌트의 스테이터스;
    메모리 제어기들에 대한 하드웨어 컴포넌트의 스테이터스;
    시스템 제어기들에 대한 하드웨어 컴포넌트의 스테이터스;
    액세스 포트들에 대한 하드웨어 컴포넌트의 스테이터스;
    타이머들에 대한 하드웨어 컴포넌트의 스테이터스;
    주변 디바이스들에 대한 하드웨어 컴포넌트의 스테이터스;
    외부 메모리 칩들에 대한 하드웨어 컴포넌트의 스테이터스;
    전압 조정기들에 대한 하드웨어 컴포넌트의 스테이터스;
    발진기들에 대한 하드웨어 컴포넌트의 스테이터스;
    위상 동기 루프들에 대한 하드웨어 컴포넌트의 스테이터스; 및
    주변기기 브릿지들에 대한 하드웨어 컴포넌트의 스테이터스 중 하나 이상을 모니터링하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  75. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    상기 컴퓨팅 디바이스의 상태를 나타내는 하드웨어 카운터; 및
    하드웨어 관련 이벤트들의 카운트를 저장하는 상기 프로세서의 특수목적 레지스터 중 하나 이상을 모니터링하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  76. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    로케이션 정보, 카메라 정보, 가속도계 정보, 브라우저 정보, 폰북 또는 연락처 정보, 레코딩된 오디오 정보 및 캘린더 정보 중 하나 이상을 수집하는 것; 및
    브라우저 기반 통신들의 콘텐츠, 음성 기반 통신들의 콘텐츠, 단거리 라디오 통신들, 텍스트 기반 통신들의 콘텐츠, 레코딩된 오디오 파일들의 콘텐츠, 소프트웨어 애플리케이션으로 및 소프트웨어 애플리케이션으로부터 통신된 통지들, 사용자 검증들, 및 사용자 패스워드 중 하나 이상을 모니터링하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  77. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    상기 컴퓨팅 디바이스 상에서 동작하는 제 1 소프트웨어 애플리케이션이 제 2 소프트웨어 애플리케이션을 다운로딩 및 설치할 것을 요청했는지 여부를 나타내는 정보를 수집하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  78. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    나침반 설정들에 대한 변경들;
    디바이스 설정들에 대한 변경들;
    배터리 수명 설정들에 대한 변경들;
    자이로스코프 설정들에 대한 변경들;
    압력 센서 설정들에 대한 변경들; 및
    스크린 설정들에 대한 변경들 중 하나 이상을 모니터링하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  79. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    얼굴 인식 소프트웨어;
    소셜 스트림들;
    사용자에 의해 입력된 노트들;
    전자 지불 서비스의 사용;
    동기화와 관련된 이벤트들;
    음성 검색들;
    음성 제어;
    언어 번역기들;
    컴퓨테이션들을 위한 데이터의 오프로딩;
    비디오 스트리밍;
    사용자 활동없는 카메라 사용; 및
    사용자 활동없는 마이크로폰 사용 중 하나 이상을 모니터링하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  80. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 거동 정보를 수집하기 위해 상기 동적으로 선택된 컴퓨팅 디바이스 거동들을 적응적으로 관찰하는 것이:
    마그넷 센서들을 모니터링하는 것;
    근접장 통신들을 검출하는 것;
    신용 카드 스캐너, 바코드 스캐너, 또는 모바일 태그 판독기로부터 정보를 수집하는 것;
    키보드 또는 보조 디바이스가 상기 컴퓨팅 디바이스에 커플링되었음을 검출하는 것;
    발광 다이오드, 플래시, 손전등, 또는 광원이 수정되었는지 또는 가능하지 않게 되었는지를 결정하는 것;
    스피커 또는 마이크로폰이 턴 온 또는 전력 공급되었는지를 결정하는 것;
    충전 또는 파워 이벤트를 검출하는 것;
    상기 컴퓨팅 디바이스가 게임 컨트롤러로서 사용되고 있음을 검출하는 것;
    의료용 센서들로부터의 또는 사용자의 신체를 스캐닝하는 것으로부터의 정보를 수집하는 것;
    오디오 잭에 꽂아진 외부 센서로부터 정보를 수집하는 것;
    촉각 또는 햅틱 센서로부터 정보를 수집하는 것; 및
    상기 컴퓨팅 디바이스의 열적 상태에 관계된 정보를 수집하는 것 중 하나를 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  81. 제 67 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금:
    상기 수집된 거동 정보를 적응 필터를 통해 필터링하는 것;
    상기 적응 필터에 의한 필터링 후에 하이 레벨 애플리케이션, 시스템 커널 및 드라이버 애플리케이션 프로그래밍 인터페이스 (API) 중 하나 이상으로부터 거동 입력들을 수신하는 것;
    상기 컴퓨팅 디바이스의 동작들에 관한 콘텍스트 정보를 수신하는 것; 및
    수신된 상기 거동 입력들 및 수신된 상기 콘텍스트 정보의 공간적 상관들을 수행하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  82. 제 81 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 벡터 데이터 구조를 생성하는 것이:
    라이브러리 API 호출들;
    시스템 호출들;
    파일 시스템 동작들;
    센서 디바이스 상태 변경들;
    파일 시스템 활동;
    전화기 활동;
    메모리 액세스 동작들;
    상기 컴퓨팅 디바이스의 상태;
    상기 컴퓨팅 디바이스의 전자 디스플레이의 파워 온/오프 상태;
    상기 컴퓨팅 디바이스의 잠금/잠금해제 상태;
    남은 배터리 전력량;
    프로세스 간 통신들 (IPC);
    드라이버 통계들; 및
    하드웨어 카운터들 중 하나 이상에 관계된 정보를 포함하는 벡터를 생성하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  83. 제 81 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 벡터 데이터 구조를 생성하는 것이:
    일련의 숫자들의 각각이 상기 컴퓨팅 디바이스의 특징을 의미하는, 상기 일련의 숫자들을 포함하는 벡터 데이터 구조를 생성하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  84. 제 83 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 일련의 숫자들 중 적어도 하나가:
    상기 컴퓨팅 디바이스의 카메라가 사용중인지의 여부; 및
    상기 컴퓨팅 디바이스로부터 전송되었던 인터넷 메시지들이 몇이나 되는지 중 하나 이상을 식별하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  85. 제 81 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 벡터 데이터 구조를 생성하는 것이:
    호출 정보;
    텍스트 메시징 정보;
    미디어 메시징 정보;
    사용자 계정 정보;
    로케이션 정보;
    카메라 정보;
    가속도계 정보; 및
    브라우저 정보 중 적어도 하나를 포함하는 벡터를 생성하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  86. 제 81 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 벡터 데이터 구조를 생성하는 것이 상기 컴퓨팅 디바이스의 라디오 레벨에서 수집된 정보를 포함하는 벡터를 생성하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  87. 제 81 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 벡터 데이터 구조를 생성하는 것이 상기 컴퓨팅 디바이스의 센서 레벨에서 수집된 정보를 포함하는 벡터를 생성하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  88. 제 81 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금:
    상기 수신된 거동 입력들 및 상기 수신된 콘텍스트 정보의 시간적 상관들을 수행하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되고, 상기 벡터 데이터 구조를 생성하는 것은, 상기 공간적 상관들 및 상기 시간적 상관들의 결과에 기초하여 거동 벡터를 생성하는 것을 포함하는, 비일시적 프로세서 판독가능 저장 매체.
  89. 모바일 디바이스 상의 성능을 개선하는 방법으로서,
    거친 관찰들을 생성하기 위해 하나 이상의 모바일 디바이스 거동들의 실시간 거동 분석을 모바일 디바이스 프로세서 상에서 수행하는 단계;
    상기 거친 관찰들로부터 비정상의 거동을 식별하는 단계;
    더욱 상세히 추가의 관찰을 필요로 하는 상기 모바일 디바이스 거동들을 동적으로 결정하는 단계;
    상기 추가의 관찰을 필요로 하는 상세 레벨을 동적으로 결정하는 단계;
    상기 추가의 관찰을 위해 필요한 결정된 상기 상세 레벨에 기초하여 더 미세한 관찰들을 수행하는 단계;
    상기 더 미세한 관찰들을 간결하게 기술하는 벡터 데이터 구조를 복수의 숫자들을 통해 생성하는 단계; 및
    상기 더 미세한 관찰들로부터 비정상의 거동을 식별하기 위해 상기 벡터 데이터 구조를 사용하는 단계를 포함하는, 모바일 디바이스 상의 성능을 개선하는 방법.
  90. 제 89 항에 있어서,
    식별된 상기 비정상의 거동을 정정하기 위해 모바일 디바이스들 동작들을 수행하는 단계를 더 포함하는, 모바일 디바이스 상의 성능을 개선하는 방법.
  91. 2 이상의 프로세서 코어들을 구비한 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스로서,
    상기 프로세서 코어들 중 하나 이상은,
    거친 관찰들을 생성하기 위해 하나 이상의 모바일 디바이스 거동들의 실시간 거동 분석을 모바일 디바이스 프로세서 상에서 수행하는 것;
    상기 거친 관찰들로부터 비정상의 거동을 식별하는 것;
    더욱 상세히 추가의 관찰을 필요로 하는 상기 모바일 디바이스 거동들을 동적으로 결정하는 것;
    상기 추가의 관찰을 필요로 하는 상세 레벨을 동적으로 결정하는 것;
    상기 추가의 관찰을 위해 필요한 결정된 상기 상세 레벨에 기초하여 더 미세한 관찰들을 수행하는 것;
    상기 더 미세한 관찰들을 간결하게 기술하는 벡터 데이터 구조를 복수의 숫자들을 통해 생성하는 것; 및
    상기 더 미세한 관찰들로부터 비정상의 거동을 식별하기 위해 상기 벡터 데이터 구조를 사용하는 것을 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  92. 제 91 항에 있어서,
    상기 프로세서 코어들 중 하나 이상은,
    식별된 상기 비정상의 거동을 정정하기 위해 모바일 디바이스들 동작들을 수행하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 멀티-코어 프로세서를 포함하는 컴퓨팅 디바이스.
  93. 컴퓨팅 디바이스로서,
    거친 관찰들을 생성하기 위해 하나 이상의 모바일 디바이스 거동들의 실시간 거동 분석을 모바일 디바이스 프로세서 상에서 수행하는 수단;
    상기 거친 관찰들로부터 비정상의 거동을 식별하는 수단;
    더욱 상세히 추가의 관찰을 필요로 하는 상기 모바일 디바이스 거동들을 동적으로 결정하는 수단;
    상기 추가의 관찰을 필요로 하는 상세 레벨을 동적으로 결정하는 수단;
    상기 추가의 관찰을 위해 필요한 결정된 상기 상세 레벨에 기초하여 더 미세한 관찰들을 수행하는 수단;
    상기 더 미세한 관찰들을 간결하게 기술하는 벡터 데이터 구조를 복수의 숫자들을 통해 생성하는 수단; 및
    상기 더 미세한 관찰들로부터 비정상의 거동을 식별하기 위해 상기 벡터 데이터 구조를 사용하는 수단을 포함하는, 컴퓨팅 디바이스.
  94. 제 93 항에 있어서,
    식별된 상기 비정상의 거동을 정정하기 위해 모바일 디바이스들 동작들을 수행하는 수단을 더 포함하는, 컴퓨팅 디바이스.
  95. 프로세서 실행가능 명령들이 저장되어 있는 비일시적 프로세서 판독가능 저장 매체로서,
    상기 프로세서 실행가능 명령들은 프로세서로 하여금,
    거친 관찰들을 생성하기 위해 하나 이상의 모바일 디바이스 거동들의 실시간 거동 분석을 모바일 디바이스 프로세서 상에서 수행하는 것;
    상기 거친 관찰들로부터 비정상의 거동을 식별하는 것;
    더욱 상세히 추가의 관찰을 필요로 하는 상기 모바일 디바이스 거동들을 동적으로 결정하는 것;
    상기 추가의 관찰을 필요로 하는 상세 레벨을 동적으로 결정하는 것;
    상기 추가의 관찰을 위해 필요한 결정된 상기 상세 레벨에 기초하여 더 미세한 관찰들을 수행하는 것;
    상기 더 미세한 관찰들을 간결하게 기술하는 벡터 데이터 구조를 복수의 숫자들을 통해 생성하는 것; 및
    상기 더 미세한 관찰들로부터 비정상의 거동을 식별하기 위해 상기 벡터 데이터 구조를 사용하는 것을 포함하는 동작들을 수행하게 하는, 비일시적 프로세서 판독가능 저장 매체.
  96. 제 95 항에 있어서,
    저장되어 있는 상기 프로세서 실행가능 명령들은 프로세서로 하여금:
    식별된 상기 비정상의 거동을 정정하기 위해 모바일 디바이스들 동작들을 수행하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적 프로세서 판독가능 저장 매체.
  97. 삭제
  98. 삭제
  99. 삭제
  100. 삭제
  101. 삭제
  102. 삭제
  103. 삭제
  104. 삭제
  105. 삭제
  106. 삭제
  107. 삭제
  108. 삭제
  109. 삭제
  110. 삭제
  111. 삭제
  112. 삭제
  113. 삭제
  114. 삭제
  115. 삭제
  116. 삭제
  117. 삭제
  118. 삭제
  119. 삭제
  120. 삭제
  121. 삭제
  122. 삭제
  123. 삭제
  124. 삭제
  125. 삭제
  126. 삭제
  127. 삭제
  128. 삭제
  129. 삭제
  130. 삭제
  131. 삭제
  132. 삭제
  133. 삭제
  134. 삭제
  135. 삭제
  136. 삭제
  137. 삭제
  138. 삭제
  139. 삭제
  140. 삭제
KR1020157022331A 2013-01-25 2014-01-24 모바일 디바이스에 대한 거동 특징들의 적응적 관찰 KR101829114B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201361756963P 2013-01-25 2013-01-25
US61/756,963 2013-01-25
US13/923,547 US9495537B2 (en) 2012-08-15 2013-06-21 Adaptive observation of behavioral features on a mobile device
US13/923,547 2013-06-21
US201361882833P 2013-09-26 2013-09-26
US61/882,833 2013-09-26
US14/161,853 US20140150100A1 (en) 2012-08-15 2014-01-23 Adaptive Observation of Driver and Hardware Level Behavioral Features on a Mobile Device
US14/161,853 2014-01-23
PCT/US2014/012990 WO2014116977A2 (en) 2013-01-25 2014-01-24 Adaptive observation of behavioral features on a mobile device

Publications (2)

Publication Number Publication Date
KR20150110653A KR20150110653A (ko) 2015-10-02
KR101829114B1 true KR101829114B1 (ko) 2018-03-29

Family

ID=51228196

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157022331A KR101829114B1 (ko) 2013-01-25 2014-01-24 모바일 디바이스에 대한 거동 특징들의 적응적 관찰

Country Status (6)

Country Link
EP (1) EP2949144B1 (ko)
JP (1) JP6198850B2 (ko)
KR (1) KR101829114B1 (ko)
CN (2) CN104956715B (ko)
TW (1) TWI556098B (ko)
WO (1) WO2014116977A2 (ko)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10356649B2 (en) * 2014-09-26 2019-07-16 Intel Corporation Multisensory change detection for internet of things domain
GB2532471B (en) * 2014-11-20 2017-03-01 Ibm System and method for monitoring use of a sensor of a computing device
KR101681730B1 (ko) * 2015-06-18 2016-12-07 학교법인 한동대학교 폐 스마트 단말을 이용하는 영상 모니터링 서비스 제공 방법 및 시스템
US10069697B2 (en) * 2016-01-29 2018-09-04 Microsoft Technology Licensing, Llc Routing actions to user devices based on a user graph
GB2550854B (en) 2016-05-25 2019-06-26 Ge Aviat Systems Ltd Aircraft time synchronization system
US10613611B2 (en) * 2016-06-15 2020-04-07 Intel Corporation Current control for a multicore processor
CN107889133B (zh) 2016-09-30 2021-06-08 华为技术有限公司 无线链路检测和处理方法及装置
EP3306963B1 (en) * 2016-10-05 2020-02-26 ABB Schweiz AG Device network status information
US11095733B2 (en) 2017-05-10 2021-08-17 Embee Mobile, Inc. System and method for the capture of mobile behavior, usage, or content exposure based on changes in UI layout
GB2578386B (en) 2017-06-27 2021-12-01 Cirrus Logic Int Semiconductor Ltd Detection of replay attack
GB2563953A (en) * 2017-06-28 2019-01-02 Cirrus Logic Int Semiconductor Ltd Detection of replay attack
GB201713697D0 (en) 2017-06-28 2017-10-11 Cirrus Logic Int Semiconductor Ltd Magnetic detection of replay attack
GB201801527D0 (en) 2017-07-07 2018-03-14 Cirrus Logic Int Semiconductor Ltd Method, apparatus and systems for biometric processes
GB201801528D0 (en) 2017-07-07 2018-03-14 Cirrus Logic Int Semiconductor Ltd Method, apparatus and systems for biometric processes
GB201801530D0 (en) 2017-07-07 2018-03-14 Cirrus Logic Int Semiconductor Ltd Methods, apparatus and systems for authentication
GB201801532D0 (en) 2017-07-07 2018-03-14 Cirrus Logic Int Semiconductor Ltd Methods, apparatus and systems for audio playback
GB201801526D0 (en) 2017-07-07 2018-03-14 Cirrus Logic Int Semiconductor Ltd Methods, apparatus and systems for authentication
US11563753B2 (en) * 2017-09-25 2023-01-24 Rohde & Schwarz Gmbh & Co. Kg Security surveillance system and security surveillance method
GB201804843D0 (en) 2017-11-14 2018-05-09 Cirrus Logic Int Semiconductor Ltd Detection of replay attack
GB201803570D0 (en) 2017-10-13 2018-04-18 Cirrus Logic Int Semiconductor Ltd Detection of replay attack
GB201801664D0 (en) 2017-10-13 2018-03-21 Cirrus Logic Int Semiconductor Ltd Detection of liveness
GB2567503A (en) 2017-10-13 2019-04-17 Cirrus Logic Int Semiconductor Ltd Analysing speech signals
GB201801874D0 (en) 2017-10-13 2018-03-21 Cirrus Logic Int Semiconductor Ltd Improving robustness of speech processing system against ultrasound and dolphin attacks
GB201801661D0 (en) 2017-10-13 2018-03-21 Cirrus Logic International Uk Ltd Detection of liveness
GB201801663D0 (en) 2017-10-13 2018-03-21 Cirrus Logic Int Semiconductor Ltd Detection of liveness
GB201801659D0 (en) 2017-11-14 2018-03-21 Cirrus Logic Int Semiconductor Ltd Detection of loudspeaker playback
WO2019104228A1 (en) * 2017-11-21 2019-05-31 Google Llc Low-power ambient computing system with machine learning
KR102408348B1 (ko) * 2017-12-21 2022-06-14 삼성전자주식회사 단말 장치 및 단말 장치의 제어 방법
JP6939588B2 (ja) 2018-01-18 2021-09-22 富士通株式会社 判定方法、認証装置及び判定プログラム
US11475899B2 (en) 2018-01-23 2022-10-18 Cirrus Logic, Inc. Speaker identification
US11264037B2 (en) 2018-01-23 2022-03-01 Cirrus Logic, Inc. Speaker identification
US11735189B2 (en) 2018-01-23 2023-08-22 Cirrus Logic, Inc. Speaker identification
JP6795529B2 (ja) * 2018-02-15 2020-12-02 Kddi株式会社 通信分析方法およびシステム
CN108495272A (zh) * 2018-03-19 2018-09-04 上海哔哩哔哩科技有限公司 基于html5浏览器的机器人识别方法、系统及存储介质
US10603593B2 (en) * 2018-03-21 2020-03-31 Valve Corporation Automatically reducing use of cheat software in an online game environment
US11185207B2 (en) * 2018-07-24 2021-11-30 Qualcomm Incorporated Managing cleaning robot behavior
US10692490B2 (en) 2018-07-31 2020-06-23 Cirrus Logic, Inc. Detection of replay attack
US10915614B2 (en) 2018-08-31 2021-02-09 Cirrus Logic, Inc. Biometric authentication
US11037574B2 (en) 2018-09-05 2021-06-15 Cirrus Logic, Inc. Speaker recognition and speaker change detection
US11924290B2 (en) * 2018-10-26 2024-03-05 Dell Products, Lp Aggregated stochastic method for predictive system response
TWI743624B (zh) * 2019-12-16 2021-10-21 陳筱涵 注意力集中輔助系統
KR20210088162A (ko) * 2020-01-06 2021-07-14 삼성전자주식회사 전자 장치 및 이의 제어 방법
US11546458B2 (en) * 2020-06-10 2023-01-03 Micron Technology, Inc. Organizing applications for mobile devices
CN112463266A (zh) * 2020-12-11 2021-03-09 微医云(杭州)控股有限公司 执行策略生成方法、装置、电子设备以及存储介质
US20240061774A1 (en) * 2021-01-25 2024-02-22 Hewlett-Packard Development Company, L.P. Overlay size determinations
CN113114862B (zh) * 2021-03-29 2022-12-02 中国联合网络通信集团有限公司 语音信箱的故障处理方法和服务器
CN113608987A (zh) * 2021-08-10 2021-11-05 瑞庭网络技术(上海)有限公司 采集信息与回溯构建用户行为的方法、设备及存储介质
CN113840038B (zh) * 2021-09-29 2023-06-20 深圳市广和通无线通信软件有限公司 一种语音数据传输方法、装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090217078A1 (en) 2005-03-18 2009-08-27 Qualcomm Incorporated Apparatus and methods for managing malfunctions on a wireless device

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1774780A1 (en) * 2004-07-20 2007-04-18 QUALCOMM Incorporated Method and apparatus for motion vector processing
US8381297B2 (en) * 2005-12-13 2013-02-19 Yoggie Security Systems Ltd. System and method for providing network security to mobile devices
WO2009061523A1 (en) * 2007-03-05 2009-05-14 Yoggie Security Systems Ltd. System and method for providing data and device security between external and host devices
JP4618263B2 (ja) * 2007-03-23 2011-01-26 株式会社豊田中央研究所 ソフトウェア挙動監視装置及びソフトウェア挙動監視システム
US8266698B1 (en) * 2009-03-09 2012-09-11 Symantec Corporation Using machine infection characteristics for behavior-based detection of malware
US9074897B2 (en) * 2009-06-15 2015-07-07 Qualcomm Incorporated Real-time data with post-processing
US20110161452A1 (en) * 2009-12-24 2011-06-30 Rajesh Poornachandran Collaborative malware detection and prevention on mobile devices
US8707427B2 (en) * 2010-04-06 2014-04-22 Triumfant, Inc. Automated malware detection and remediation
CN102811343B (zh) * 2011-06-03 2015-04-29 南京理工大学 一种基于行为识别的智能视频监控系统
US9202047B2 (en) * 2012-05-14 2015-12-01 Qualcomm Incorporated System, apparatus, and method for adaptive observation of mobile device behavior
US9298494B2 (en) * 2012-05-14 2016-03-29 Qualcomm Incorporated Collaborative learning for efficient behavioral analysis in networked mobile device
US20130304677A1 (en) * 2012-05-14 2013-11-14 Qualcomm Incorporated Architecture for Client-Cloud Behavior Analyzer

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090217078A1 (en) 2005-03-18 2009-08-27 Qualcomm Incorporated Apparatus and methods for managing malfunctions on a wireless device

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Asaf Shabtai et al. ""Andromaly": a behavioral malware detection framework for android devices"
L.Chekina et al. "Detection of deviations in mobile applications network behavior"

Also Published As

Publication number Publication date
CN104956715B (zh) 2021-10-19
CN113935025A (zh) 2022-01-14
JP2016518633A (ja) 2016-06-23
CN104956715A (zh) 2015-09-30
KR20150110653A (ko) 2015-10-02
WO2014116977A3 (en) 2014-10-16
EP2949144A2 (en) 2015-12-02
TW201441811A (zh) 2014-11-01
EP2949144B1 (en) 2020-09-16
TWI556098B (zh) 2016-11-01
WO2014116977A2 (en) 2014-07-31
JP6198850B2 (ja) 2017-09-20

Similar Documents

Publication Publication Date Title
KR101829114B1 (ko) 모바일 디바이스에 대한 거동 특징들의 적응적 관찰
US9495537B2 (en) Adaptive observation of behavioral features on a mobile device
US9607146B2 (en) Data flow based behavioral analysis on mobile devices
US9330257B2 (en) Adaptive observation of behavioral features on a mobile device
US9448859B2 (en) Exploiting hot application programming interfaces (APIs) and action patterns for efficient storage of API logs on mobile devices for behavioral analysis
EP3191960B1 (en) Methods and systems for aggregated multi-application behavioral analysis of mobile device behaviors
US9910984B2 (en) Methods and systems for on-device high-granularity classification of device behaviors using multi-label models
KR101840156B1 (ko) 바이탈 애플리케이션들의 타겟화된 보호를 위해 애플리케이션-특정 모델들을 생성하는 방법들 및 시스템들
KR101789962B1 (ko) 이동 디바이스에서 거동 분석 동작들을 수행함으로써 애플리케이션 상태들을 추론하기 위한 방법 및 시스템
US9690635B2 (en) Communicating behavior information in a mobile computing device
KR101810346B1 (ko) 구성 경로들에 기초한 가능성 있는 악성 거동 사전 식별 방법, 디바이스 및 기록매체
JP6110482B2 (ja) モバイルマルチプロセッサプラットフォームにおける挙動特徴の監視
US9147072B2 (en) Method and system for performing behavioral analysis operations in a mobile device based on application state
US20140150100A1 (en) Adaptive Observation of Driver and Hardware Level Behavioral Features on a Mobile Device
US20170024660A1 (en) Methods and Systems for Using an Expectation-Maximization (EM) Machine Learning Framework for Behavior-Based Analysis of Device Behaviors
EP3142048A1 (en) Architecture for client-cloud behavior analyzer
WO2015112760A1 (en) Adaptive observation of determined behavioral features on a mobile device

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant