KR20170115532A - 개선된 멀웨어 보호를 위해 모바일 디바이스와의 페이크 사용자 상호작용들을 검출하기 위한 방법들 및 시스템들 - Google Patents
개선된 멀웨어 보호를 위해 모바일 디바이스와의 페이크 사용자 상호작용들을 검출하기 위한 방법들 및 시스템들 Download PDFInfo
- Publication number
- KR20170115532A KR20170115532A KR1020177021585A KR20177021585A KR20170115532A KR 20170115532 A KR20170115532 A KR 20170115532A KR 1020177021585 A KR1020177021585 A KR 1020177021585A KR 20177021585 A KR20177021585 A KR 20177021585A KR 20170115532 A KR20170115532 A KR 20170115532A
- Authority
- KR
- South Korea
- Prior art keywords
- user interaction
- interaction event
- computing device
- activity
- software application
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/316—User authentication by observing the pattern of computer usage, e.g. typical user behaviour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2133—Verifying human interaction, e.g., Captcha
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Social Psychology (AREA)
- Virology (AREA)
- User Interface Of Digital Computer (AREA)
- Telephone Function (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
컴퓨팅 디바이스 프로세서는 페이크 사용자 상호작용(UI) 이벤트들을 검출하고 그에 응답하는 방법들을 구현하기 위한 프로세서-실행가능 명령들로 구성될 수 있다. 프로세서는, 고레벨 운영 시스템에 의해 생성 또는 수신된 사용자 상호작용 이벤트 정보와 관련하여 하나 이상의 하드웨어 드라이버들에 의해 생성된 원시 데이터를 분석함으로써 사용자 상호작용 이벤트가 페이크 사용자 상호작용 이벤트인지 여부를 결정할 수 있다. 또한, 프로세서는, 검출된 사용자 상호작용 이벤트가 진정한 또는 페이크 사용자 상호작용 이벤트인지 여부에 기초하여 컴퓨팅 디바이스의 악성 또는 성능-악화 거동들을 식별, 방지, 정정 또는 그렇지 않으면 응답하기 위해 거동 분석 및 머신 학습 기술들을 사용하는 방법들을 구현하기 위한 프로세서 실행가능 명령들로 구성될 수 있다.
Description
[0001]
셀룰러 및 무선 통신 기술들은 과거 수년에 걸쳐 폭발적인 성장을 보여 왔다. 이제 무선 서비스 제공자들은 정보, 자원들 및 통신들에 대한 전례없는 레벨들의 액세스를 자신들의 사용자들에게 제공하는 다양한 특징들 및 서비스들을 제공한다. 이러한 향상들에 보조를 맞추기 위해, 개인 및 고객 전자 디바이스들(예를 들어, 셀룰러 폰들, 시계들, 헤드폰들, 원격 제어기들 등)이 전보다 더 강력하고 복잡해졌으며, 이제 통상적으로 강력한 프로세서들, 대용량 메모리들, 및 이들의 디바이스들 상에서 복잡하고 강력한 소프트웨어 애플리케이션들을 실행하는 것을 허용하는 다른 자원들을 포함한다.
[0002]
이러한 및 다른 개선들로 인해, 개인 및 고객 전자 디바이스들은 현대의 생활에서 보편적이 되고 있고, 이들의 사용자들에 의해 생성되거나 사용자들과 관련된 정보에 대한 전례없는 레벨들의 액세스를 갖는다. 또한, 사람들은 흔히 자신들의 디바이스들을 사용하여, 민감한 정보(예를 들어, 신용 카드 정보, 지인들 등)를 저장하고 그리고/또는 보안이 중요한 작업들을 달성한다. 예를 들어, 모바일 디바이스 사용자들은 흔히 자신들의 디바이스들을 사용하여, 상품을 구매하고, 민감한 통신들을 전송 및 수신하고, 청구서를 지불하고, 은행 계좌들을 관리하고, 다른 민감한 거래들을 수행한다. 이러한 경향들로 인해, 개인 및 고객 전자 디바이스들은 빠르게, 멀웨어 및 사이버 공격들에 대한 새로운 장이 되고 있다. 따라서, 자원-제한된 컴퓨팅 디바이스들, 예를 들어, 모바일 및 무선 디바이스들을 더 양호하게 보호하는 새롭고 개선된 보안 솔루션들이 고객들에게 유리할 것이다.
[0003]
다양한 실시예들은 컴퓨팅 디바이스 상에서 동작하는 소프트웨어 애플리케이션의 액티비티를 분석하는 방법을 포함하고, 이 방법은, 분석 결과들을 생성하기 위해, 컴퓨팅 디바이스의 사용자 입력 디바이스로부터 수신된 원시 데이터를 컴퓨팅 디바이스에서 수신된 사용자 상호작용 이벤트 정보와 비교하는 단계, 및 사용자 상호작용(UI) 이벤트가 컴퓨팅 디바이스의 사용자와 상관되는지 여부를 결정하기 위해, 생성된 분석 결과들을 사용하는 단계를 포함한다. 추가적인 실시예에서, 사용자 입력 디바이스로부터 수신된 원시 데이터는 디바이스 드라이버로부터 수신된 원시 데이터를 포함할 수 있고, 컴퓨팅 디바이스에서 수신된 사용자 상호작용 이벤트 정보는 컴퓨팅 디바이스의 고레벨 운영 시스템으로부터 수신된 상호작용 정보를 포함할 수 있다.
[0004]
추가적인 실시예에서, 방법은 사용자 상호작용 이벤트가 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 소프트웨어 애플리케이션의 액티비티를 비-양성으로 분류하는 단계를 포함할 수 있다. 추가적인 실시예에서, 방법은 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하는 단계, 사용자 상호작용 이벤트가 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 액티비티에 대응하는 사용자 상호작용 이벤트가 존재하는지 여부를 평가하는 판정 노드를 포함할 수 있는 분류기 모델에, 생성된 거동 벡터를 적용하는 단계, 및 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위해 분류기 모델에, 생성된 거동 벡터를 적용한 결과를 사용하는 단계를 포함할 수 있다.
[0005]
추가적인 실시예에서, 방법은 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하는 단계, 사용자 상호작용 이벤트가 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 액티비티에 대응하는 사용자 상호작용 이벤트가 존재하는지 여부를 테스트하는 판정 노드를 포함하지 않는 분류기 모델을 선택하는 단계, 추가적인 분석 결과들을 생성하기 위해, 선택된 분류기 모델에 생성된 거동 벡터를 적용하는 단계, 및 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위해, 생성된 추가적인 분석 결과들을 사용하는 단계를 포함할 수 있다.
[0006]
추가적인 실시예에서, 방법은 사용자 상호작용 이벤트가 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 견고한 분류기 모델들의 패밀리를 선택하는 단계, 및 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위해, 견고한 분류기 모델들의 선택된 패밀리에, 복수의 거동 벡터들을 적용하는 단계를 포함할 수 있다. 추가적인 실시예에서, 방법은 제 1 센서로부터 수신된 원시 데이터가 제 2 센서로부터 수신된 원시 데이터와 일치하는지 여부를 결정하기 위해, 컴퓨팅 디바이스의 제 1 센서로부터 수신된 원시 데이터를 컴퓨팅 디바이스의 제 2 센서로부터 수신된 원시 데이터와 비교하는 단계를 포함할 수 있고, 여기서, 제 1 센서로부터 수신된 원시 데이터가 제 2 센서로부터 수신된 원시 데이터와 일치한다고 결정하는 것에 대한 응답으로, 분석 결과들을 생성하기 위해 컴퓨팅 디바이스의 사용자 입력 디바이스로부터 수신된 원시 데이터를 컴퓨팅 디바이스에서 수신된 사용자 상호작용 이벤트 정보와 비교하는 단계가 수행된다.
[0007]
추가적인 실시예에서, 제 1 센서로부터 수신된 원시 데이터를 제 2 센서로부터 수신된 원시 데이터와 비교하는 단계는 거동 벡터들을 분류기 모델들에 적용한 결과들을 비교하는 단계를 포함할 수 있다. 추가적인 실시예에서, 사용자 입력 디바이스로부터 수신된 원시 데이터는 사용자 입력 센서로부터 수신된 원시 데이터를 포함할 수 있고, 컴퓨팅 디바이스에서 수신된 사용자 상호작용 이벤트 정보는 사용자 입력 센서에 대해 디바이스 드라이버로부터 수신된 데이터를 포함할 수 있고, 사용자 상호작용 이벤트가 컴퓨팅 디바이스의 사용자와 상관되는지 여부를 결정하기 위해 생성된 분석 결과들을 사용하는 단계는, 사용자 입력 센서로부터 수신된 원시 데이터가 사용자 입력 센서에 대해 디바이스 드라이버로부터 수신된 데이터와 상관되지 않는 것에 대한 응답으로, 사용자 상호작용 이벤트가 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 단계를 포함할 수 있다.
[0008]
추가적인 실시예에서, 사용자 입력 센서는 터치 스크린을 포함할 수 있고, 디바이스 드라이버는 터치 스크린 디바이스 드라이버를 포함할 수 있다. 추가적인 실시예에서, 방법은 사용자 상호작용 이벤트가 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 소프트웨어 애플리케이션의 액티비티를 비-양성으로 분류하는 단계를 포함할 수 있다. 추가적인 실시예에서, 방법은 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하는 단계, 사용자 상호작용 이벤트가 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 컴퓨팅 디바이스와의 사용자 상호작용들에 관한 조건들을 평가하는 판정 노드를 포함하지 않는 분류기 모델에, 생성된 거동 벡터를 적용하는 단계, 및 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위해 분류기 모델에, 생성된 거동 벡터를 적용한 결과를 사용하는 단계를 포함할 수 있다.
[0009]
추가적인 실시예들은 앞서 논의된 방법들에 대응하는 다양한 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성된 프로세서를 갖는 컴퓨팅 디바이스를 포함할 수 있다.
[0010]
추가적인 실시예들은 앞서 논의된 방법 동작들에 대응하는 기능들을 수행하기 위한 다양한 수단들을 갖는 컴퓨팅 디바이스를 포함할 수 있다.
[0011]
추가적인 실시예들은 프로세서로 하여금 앞서 논의된 방법 동작들에 대응하는 다양한 동작들을 수행하게 하도록 구성된 프로세서 실행가능 명령들이 저장된 비일시적 프로세서 판독가능 저장 매체를 포함할 수 있다.
[0012]
본원에 통합되고 본 명세서의 일부를 구성하는 첨부된 도면들은 본 발명의 예시적인 실시예들을 예시하고, 앞서 주어진 일반적인 설명 및 아래에서 주어지는 상세한 설명과 함께 본 발명의 특징들을 설명하도록 기능한다.
[0013] 도 1은 다양한 실시예들을 구현하기에 적합한 예시적인 시스템 온 칩(system on chip)의 구조적 도면이다.
[0014] 도 2는 다양한 실시예들에 따라 페이크(fake) 사용자 상호작용(UI) 이벤트들을 식별하고 그에 응답하도록 구성된 페이크 UI 이벤트 검출 모듈을 포함하는 컴퓨팅 디바이스 실시예에서 예시적인 로직 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
[0015] 도 3은 특정 모바일 디바이스 거동이 양성인지 또는 비-양성인지 여부를 결정하도록 구성된 컴퓨팅 디바이스 실시예에서 예시적인 로직 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
[0016] 도 4a 및 도 4b는 다양한 실시예들에 따라 페이크 UI 이벤트들을 검출하고 그에 응답하는 방법들을 예시하는 프로세스 흐름도들이다.
[0017] 도 4c는 실시예에 따른 손상된 사용자 입력 센서 디바이스 드라이버를 검출하고 그에 응답하는 방법을 예시하는 프로세스 흐름도이다.
[0018] 도 5는 실시예에 따라 디바이스 거동을 분류하기 위해 분류기 모델들의 패밀리를 사용하는 방법을 예시하는 프로세스 흐름도이다.
[0019] 도 6은 생성될 수 있고 분류기 모델들을 생성하기 위해 사용될 수 있는 예시적인 판정 노드들의 예시이다.
[0020] 도 7은 실시예에 따른 적응형 관측들을 수행하는 방법을 예시하는 프로세스 흐름도이다.
[0021] 도 8은 실시예에서 사용하기에 적합한 모바일 디바이스의 컴포넌트 블록도이다.
[0013] 도 1은 다양한 실시예들을 구현하기에 적합한 예시적인 시스템 온 칩(system on chip)의 구조적 도면이다.
[0014] 도 2는 다양한 실시예들에 따라 페이크(fake) 사용자 상호작용(UI) 이벤트들을 식별하고 그에 응답하도록 구성된 페이크 UI 이벤트 검출 모듈을 포함하는 컴퓨팅 디바이스 실시예에서 예시적인 로직 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
[0015] 도 3은 특정 모바일 디바이스 거동이 양성인지 또는 비-양성인지 여부를 결정하도록 구성된 컴퓨팅 디바이스 실시예에서 예시적인 로직 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
[0016] 도 4a 및 도 4b는 다양한 실시예들에 따라 페이크 UI 이벤트들을 검출하고 그에 응답하는 방법들을 예시하는 프로세스 흐름도들이다.
[0017] 도 4c는 실시예에 따른 손상된 사용자 입력 센서 디바이스 드라이버를 검출하고 그에 응답하는 방법을 예시하는 프로세스 흐름도이다.
[0018] 도 5는 실시예에 따라 디바이스 거동을 분류하기 위해 분류기 모델들의 패밀리를 사용하는 방법을 예시하는 프로세스 흐름도이다.
[0019] 도 6은 생성될 수 있고 분류기 모델들을 생성하기 위해 사용될 수 있는 예시적인 판정 노드들의 예시이다.
[0020] 도 7은 실시예에 따른 적응형 관측들을 수행하는 방법을 예시하는 프로세스 흐름도이다.
[0021] 도 8은 실시예에서 사용하기에 적합한 모바일 디바이스의 컴포넌트 블록도이다.
[0022]
다양한 실시예들은 첨부된 도면들을 참조하여 상세히 설명될 것이다. 가능한 경우에는 언제나, 동일한 참조 부호들은 도면들 전반에 걸쳐 동일하거나 유사한 부분들을 지칭하기 위해 사용될 것이다. 특정 예들 및 구현들에 대해 행해진 참조들은 예시의 목적들을 위한 것이고, 본 발명 또는 청구항들의 범위를 제한하는 것으로 의도되지 않는다.
[0023]
개요에서, 다양한 실시예들은 페이크 사용자 상호작용(UI) 이벤트들을 검출하고 그에 응답하기 위해 거동-기반 및 머신 학습 기술들을 사용하는 방법들 및 그 방법들을 구현하도록 구성된 컴퓨팅 디바이스들을 포함한다. 실시예에서, 컴퓨팅 디바이스는 고레벨 운영 시스템에 의해 생성 또는 수신된 UI 이벤트 정보와 함께 하나 이상의 하드웨어 드라이버들 또는 사용자 입력 디바이스들에 의해 생성된 원시 데이터를 분석하는 방법을 구현하고, 이러한 분석 결과들을 사용하여, UI 이벤트가 컴퓨팅 디바이스의 사용자와 상관되는지 여부를 결정하고 그리고/또는 검출된 UI 이벤트를 진정한 UI 이벤트로서 또는 페이크 UI 이벤트로서 분류하도록 구성될 수 있다. 컴퓨팅 디바이스는 또한 UI 이벤트가 진정한 UI 이벤트인지 또는 페이크 UI 이벤트인지 여부에 기초하여 비-양성 디바이스 거동들(예를 들어, 악성 또는 성능-악화 소프트웨어 애플리케이션들 등에 의해 초래되는 거동들)을 식별하고 그에 응답하도록 구성되는 포괄적인 거동-기반 보안 시스템을 포함할 수 있다.
[0024]
일반적으로, 각각의 소프트웨어 애플리케이션 프로그램은 컴퓨팅 디바이스 상에서 다수의 작업들 또는 액티비티들을 수행한다. 애플리케이션 작업들/액티비티들 중 일부는 직접적으로 또는 고유하게 디바이스와 어떤 형태의 사용자 상호작용을 수반하거나 요구한다. 예를 들어, 오디오를 기록하기 위해 마이크로폰을 활성화시키고 프리미엄 단문 메시지 서비스(SMS) 메시지들을 전송하는 카메라의 사용 모두는, 디바이스와 어떤 형태의 사용자 상호작용, 예를 들어, 사용자가 카메라에 대한 셔터-해제 버튼을 작동시키는 것, 마이크로폰을 활성화시키기 위해 기록 버튼을 누르는 것, 텍스트를 타이핑하고 SMS 메시지를 전송하기 위해 전송 버튼을 터치하는 것 등을 수반하는 작업들/액티비티들이다.
[0025]
디바이스와 대부분의 사용자 상호작용들은 컴퓨팅 디바이스로 하여금 하나 이상의 이벤트들(예를 들어, View::onTouchEvent, onKeyDown, onKeyUp, onTrackBallEvent 등)을 생성하게 할 것이다. 예를 들어, 컴퓨팅 디바이스의 전자 터치스크린 디스플레이를 터치하는 것은 디바이스 드라이버로 하여금 터치된 영역을 (예를 들어, 사각형 좌표 X 및 Y 등을 통해) 식별하게 하는 "터치 이벤트"를 생성하게 할 수 있다. 운영 시스템은 디바이스 드라이버로부터 UI 이벤트(예를 들어, "터치 이벤트")를 수신할 수 있고, 응답으로, UI 이벤트가 관련된 소프트웨어 애플리케이션들의 절차들을 수행할 수 있다.
[0026]
따라서, 일부 작업들/액티비티들은 직접적으로 또는 고유하게 어떤 형태의 사용자 상호작용을 수반 또는 요구하고, 대부분의 사용자 상호작용들은 어떤 형태의 UI 이벤트를 생성한다. 따라서, 대응하는 UI 이벤트 없이 애플리케이션 프로그램의 특정 작업들/액티비티들의 수행은, 그 애플리케이션 프로그램이 비-양성인 것 또는 그렇지 않으면 더 면밀한 정밀 조사, 모니터링 또는 분석을 받을만하다는 강한 표시자일 수 있다. 따라서, 일부 실시예들에서, 컴퓨팅 디바이스의 거동-기반 보안 시스템은, 직접적으로 또는 고유하게 사용자 상호작용을 수반 또는 요구하지만 UI 이벤트와 연관되지 않는 액티비티들을 의심스러운 것 또는 비-양성인 것으로 분류하도록 구성될 수 있다. 예를 들어, 실시예에서, 거동-기반 보안 시스템은 소프트웨어 애플리케이션 프로그램의 액티비티를 모니터링하고, 모니터링된 액티비티(예를 들어, 카메라의 사용 등)가 직접적으로 또는 고유하게 어떤 형태의 사용자 상호작용을 수반 또는 요구하는지 여부를 결정하고, 모니터링된 액티비티가 직접적으로 또는 고유하게 사용자 상호작용을 수반 또는 요구한다고 결정하는 것에 대한 응답으로, 모니터링된 액티비티에 대응하는 UI 이벤트(예를 들어, onTouchEvent 등)가 존재하는지 여부를 결정하고, 모니터링된 액티비티가 직접적으로 또는 고유하게 사용자 상호작용을 수반 또는 요구하고, 모니터링된 액티비티에 대응하는 어떠한 UI 이벤트들도 존재하지 않는다고 결정하는 것에 대한 응답으로, 애플리케이션 프로그램을 비-양성인 것으로(더 면밀한 정밀 조사, 더 상세한 분석 등을 요구하는 것으로) 분류하도록 구성될 수 있다.
[0027]
거동-기반 보안 시스템은 일반적으로 비-양성 거동들을 식별하고, 시간에 걸친 디바이스의 성능 및 전력 활용 레벨들에서의 악화를 방지하는데 효과적이다. 예를 들어, 액티비티 또는 소프트웨어 애플리케이션이 비-양성인지 여부의 표시자로서 UI 이벤트 정보를 사용함으로써, 거동-기반 보안 시스템은 컴퓨팅 디바이스가 자신의 프로세싱, 메모리 또는 배터리 자원들의 과도한 양을 소모함이 없이 비-양성 디바이스 거동들(예를 들어, 악성 소프트웨어 애플리케이션들 등)을 식별하고 그에 응답하도록 허용한다. 그 결과, 거동-기반 보안 시스템은 모바일 및 자원 제한된 컴퓨팅 디바이스들, 예를 들어, 제한된 자원들을 갖고 배터리 전력으로 실행되고 성능 및 보안이 중요한 스마트폰들에 포함되고 사용되기에 매우 적합하다.
[0028]
앞서 설명된 시스템은 일반적으로 효과적이지만, 악성 소프트웨어 애플리케이션은 페이크 UI 이벤트 정보를 생성하여 이를 디바이스의 운영 시스템에 전송함으로써 보안 시스템에 의한 검출을 우회하거나 회피할 수 있다. 예를 들어, 악성 소프트웨어 애플리케이션은 사용자의 인식 또는 동의 없이 컴퓨팅 디바이스의 카메라를 활성화시켜 이미지를 캡쳐할 수 있고, 그 다음, 디바이스의 운영 시스템에 페이크 onTouchEvent를 전송하여, 보안 시스템으로 하여금, 검출된 액티비티(카메라의 활성화)가 대응하는 UI 이벤트와 연관된다고 부정확하게 결정하게 할 수 있다. 이것은 보안 시스템으로 하여금 악성 애플리케이션 프로그램이 양성인 것으로 부정확하게 분류하게 한다.
[0029]
고레벨 운영 시스템에 의해 수신된 UI 이벤트 정보와 함께 하나 이상의 하드웨어/디바이스 드라이버들에 의해 생성된 원시 데이터를 분석하기 위해 거동-기반 및 머신 학습 기술들을 사용함으로써, 다양한 실시예들은 컴퓨팅 디바이스가, UI 이벤트가 페이크 UI 이벤트인지 여부를 결정하고, 디바이스 거동들을 분석하는 경우 이러한 정보를 사용하여, 악성 소프트웨어 애플리케이션들이 검출을 우회 또는 회피하기 위해 페이크 UI 이벤트 정보를 사용하는 것을 방지하도록 허용한다.
[0030]
다양한 실시예들은 디바이스가 비-양성 소프트웨어 애플리케이션들을 더 정확하고 효율적으로 식별, 방지, 정정하고 및/또는 그렇지 않으면 그에 대응하도록 허용함으로써 컴퓨팅 디바이스의 기능화를 개선한다. 다양한 실시예들은 또한, 컴퓨팅 디바이스(또는 이의 거동-기반 보안 시스템)가 UI 이벤트 정보를 사용하여 자신의 모니터링 및/또는 분석 동작들에 지능적으로 집중하여 디바이스의 응답성, 성능 및 전력 소모 특성들에 대한 이들의 영향을 감소시키도록 허용함으로써 컴퓨팅 디바이스의 기능화를 개선한다.
[0031]
컴퓨팅 디바이스들의 기능들, 기능성들 및/또는 기능화에 대한 추가적인 개선들은 아래에서 제공되는 실시예들의 상세한 설명들로부터 자명할 것이다.
[0032]
용어 "성능 악화"는 본 명세서에서, 컴퓨팅 디바이스의 광범위한 바람직하지 않은 동작들 및 특성들, 예를 들어, 더 긴 프로세싱 시간들, 더 느린 실시간 응답성, 더 짧은 배터리 수명, 비밀 데이터의 손실, 악성 경제 액티비티(예를 들어, 비인가된 프리미엄 SMS 메시지의 전송), 서비스 거부(DOS), 열악한 기록 또는 설계 소프트웨어 애플리케이션들, 악성 소프트웨어, 멀웨어, 바이러스들, 단편화된 메모리, 모바일 디바이스를 커맨더링(commandeering)하는 것 또는 스파이 또는 봇넷(botnet) 액티비티들을 위해 폰을 활용하는 것 등을 지칭하도록 사용된다. 또한, 이러한 원인들 중 임의의 것에 대한 성능을 악화시키는 거동들, 액티비티들 및 조건들은 본원에서 "양성이 아닌 것" 또는 "비-양성"인 것으로 지칭된다.
[0033]
용어 "모바일 컴퓨팅 디바이스" 및 "모바일 디바이스"는 본원에서, 셀룰러 전화들, 스마트폰들, 개인 또는 모바일 멀티미디어 플레이어들, 개인 휴대 정보 단말들(PDA’s), 랩탑 컴퓨터들, 태블릿 컴퓨터들, 스마트북들, 울트라북들, 팜탑 컴퓨터들, 무선 전자 메일 수신기들, 멀티미디어 인터넷 가능 셀룰러 전화들, 무선 게임 제어기들, 및 성능이 중요한 프로그래밍가능 프로세서, 메모리를 포함하고, 전력 보존 방법들이 유리하도록 배터리 전력 하에서 동작하는 유사한 개인 전자 디바이스들 중 임의의 것 또는 이들 전부를 지칭하도록 상호교환가능하게 사용된다. 다양한 실시예들은 특히 모바일 컴퓨팅 디바이스들, 예를 들어, 제한된 자원들을 갖고 배터리로 실행되는 스마트폰들에 유용하지만, 실시예들은 일반적으로 프로세서를 포함하고 애플리케이션 프로그램들을 실행하는 임의의 전자 디바이스에서 유용하다.
[0034]
일반적으로, 모바일 디바이스의 성능 및 전력 효율은 시간에 걸쳐 악화된다. 최근에, 안티-바이러스 회사들(예를 들어, McAfee, Symantec 등)은 이러한 악화를 느리게 하는 것을 목적으로 하는 모바일 안티-바이러스, 방화벽 및 암호화 제품들을 마케팅하기 시작하고 있다. 그러나, 이러한 솔루션들 중 많은 것은 모바일 디바이스 상에서 계산-집약적인 스캐닝 엔진의 주기적 실행에 의존하며, 이는 모바일 디바이스의 많은 프로세싱 및 배터리 자원들을 소모할 수 있고, 장시간 동안 모바일 디바이스를 느리게 하거나 사용하지 못하게 할 수 있고, 그리고/또는 그렇지 않으면 사용자 경험을 악화시킬 수 있다. 또한, 이러한 솔루션들은 통상적으로 공지된 바이러스들 및 멀웨어를 검출하는 것으로 제한되고, (예를 들어, 성능 악화가 바이러스들 또는 멀웨어에 의해 초래되지 않는 경우) 종종 결합하여 시간에 걸친 모바일 디바이스의 악화에 기여하는 다수의 복잡한 팩터들 및/또는 상호작용들을 다루지 않는다. 이러한 및 다른 원인들로, 기존의 안티-바이러스, 방화벽 및 암호화 제품들은, 시간에 걸친 모바일 디바이스의 악화에 기여할 수 있는 다수의 팩터들을 식별하는 것, 모바일 디바이스 악화를 방지하는 것, 또는 노쇠한 모바일 디바이스를 이의 원래의 상태로 효율적으로 복원하는 것을 위한 적절한 솔루션들을 제공하지 않는다.
[0035]
추가로, 현대의 모바일 디바이스들은 고도로 구성가능하고 복잡한 시스템들이다. 따라서, 특정 디바이스 거동이 양성인지 또는 비-양성(예를 들어, 악성 또는 성능-악화)인지 여부를 결정하기 위해 가장 중요한 특징들은 각각의 모바일 디바이스에서 상이할 수 있다. 또한, 열악하게 기록되거나 설계된 소프트웨어 애플리케이션들, 멀웨어, 바이러스들, 단편화된 메모리, 배경 프로세스들 등을 포함하는, 시간에 걸친 모바일 컴퓨팅 디바이스의 성능 및 전력 활용 레벨들에서의 악화에 기여할 수 있는 매우 다양한 팩터들이 존재한다. 이러한 팩터들의 수, 다양성 및 복잡성으로 인해, 현대의 모바일 컴퓨팅 디바이스들의 복잡하지만 자원-제한된 시스템들의 성능 및/또는 전력 활용 레벨들에서의 악화에 기여할 수 있는 팩터들 전부를 평가하는 것은 종종 실현가능하지 않다. 따라서, 사용자들, 운영 시스템들 및/또는 애플리케이션 프로그램들(예를 들어, 안티-바이러스 소프트웨어 등)이 문제점들의 원인들을 정확하고 효율적으로 식별하는 것은 곤란하다. 그 결과, 모바일 디바이스 사용자들은 현재, 시간에 걸친 모바일 디바이스의 성능 및 전력 활용 레벨들에서의 악화를 방지하기 위한 또는 노쇠한 모바일 디바이스를 이의 원래의 성능 및 전력 활용 레벨들로 복원하기 위한 해결책을 거의 갖지 않는다.
[0036]
기존의 솔루션들의 제한들을 극복하기 위해, 다양한 실시예들은, 비-양성 소프트웨어 애플리케이션들(예를 들어, 악성이고, 열악하게 기록되고, 디바이스와 호환불가능한 것 등의 애플리케이션들)을 신속하고 효율적으로 식별하고, 이러한 애플리케이션들이 시간에 걸쳐 컴퓨팅 디바이스의 성능, 전력 활용 레벨들, 네트워크 사용 레벨들, 보안 및/또는 프라이버시를 악화시키는 것을 방지하도록 구성된 거동 모니터링 및 분석 시스템을 구비한 컴퓨팅 디바이스들을 포함한다. 거동 모니터링 및 분석 시스템은 컴퓨팅 디바이스의 응답성, 성능, 또는 전력 소모 특성들에 대해 상당한, 부정적인 또는 사용자 인지가능한 영향을 미치지 않고, 식별된 문제점들을 식별, 방지 및 정정하도록 구성될 수 있다. 실시예에서, 거동 모니터링 및 분석 시스템은 거동-기반 보안 시스템일 수 있다.
[0037]
거동-기반 모니터링 및 분석 시스템은 관측기 프로세스, 데몬(daemon), 모듈 또는 서브-시스템(본원에서는 총괄적으로 "모듈"로 지칭됨), 거동 추출기 모듈 및 분석기 모듈을 포함할 수 있다. 관측기 모듈은 컴퓨팅 디바이스 시스템의 다양한 레벨들에서 다양한 애플리케이션 프로그래밍 인터페이스들(API들), 레지스터들, 카운터들 또는 다른 디바이스 컴포넌트들(본원에서는 총괄적으로 "계측화된 컴포넌트들")을 계측 또는 조정하고, 계측화된 컴포넌트들로부터 거동 정보를 수집하고, 수집된 거동 정보를 (예를 들어, 메모리 기록 동작, 함수 호출 등을 통해) 거동 추출기 모듈에 통신하도록 구성될 수 있다. 거동 추출기 모듈은 수집된 거동 정보를 사용하여, 디바이스의 하나 이상의 특정 스레드들, 프로세스들, 소프트웨어 애플리케이션들, 모듈들 또는 컴포넌트들과 연관된 관측된 이벤트들, 조건들, 작업들, 액티비티들 및/또는 거동들(본원에서는 총괄적으로 "거동들") 대부분 또는 전부를 각각 표현 또는 특성화하는 거동 벡터들을 생성할 수 있다. 거동 추출기 모듈은 생성된 거동 벡터들을 (예를 들어, 메모리 기록 동작, 함수 호출 등을 통해) 분석기 모듈에 통신할 수 있고, 분석기 모듈은 거동 벡터들을 분류기 모델들에 적용하여 분석 결과들을 생성할 수 있고, 분석 결과들을 사용하여 소프트웨어 애플리케이션 또는 디바이스 거동이 양성인지 또는 비-양성(예를 들어, 악성, 열악하게 기록된, 성능-악화 등)인지 여부를 결정할 수 있다. 그 다음, 디바이스 프로세서는 식별된 프로그램들(예를 들어, 비-양성인 것으로 결정된 거동들)을 정정, 치료, 치유, 분리 또는 그렇지 않으면 해결하기 위한 다양한 동작들을 수행할 수 있다.
[0038]
각각의 거동 벡터는 하나 이상의 "거동 특징들"을 포함 또는 캡슐화하는 정보 구조일 수 있다. 거동 특징은 컴퓨팅 디바이스에서 관측된 이벤트, 조건, 액티비티, 동작, 관계, 상호작용 또는 거동 중 일부 또는 전부를 표현하는 수 또는 심볼일 수 있다. 각각의 거동 특징은, 가능한 값들의 범위를 식별하게 하는 데이터 타입, 이러한 값들에 대해 수행될 수 있는 동작들, 값들의 의미들 및 다른 유사한 정보와 연관될 수 있다. 데이터 타입은, 대응하는 거동 특징(또는 특징 값)이 어떻게 측정, 분석, 가중 또는 사용되어야 하는지를 결정하기 위해 컴퓨팅 디바이스에 의해 사용될 수 있다.
[0039]
분류기 모델은, 디바이스의 거동의 특정 특징들, 팩터들, 데이터 포인트들, 엔트리들, API들, 상태들, 조건들, 거동들, 소프트웨어 애플리케이션들, 프로세스들, 동작들, 컴포넌트들 등(본원에서는 총괄적으로 "특징들") 또는 다른 실시예들을 신속하고 효율적으로 테스트 또는 평가하기 위해 디바이스 프로세서에 의해 사용될 수 있는 데이터, 엔트리들, 판정 노드들, 판정 기준 및/또는 정보 구조들을 포함하는 거동 모델일 수 있다. 분류기 모델은 또한 소프트웨어 애플리케이션들 사이 및/또는 모바일 디바이스에서 모니터링될 거동들 사이의 관계들의 성질을 결정하기 위해 디바이스 프로세서에 의해 사용될 수 있는 정보를 포함할 수 있다.
[0040]
각각의 분류기 모델은 풀(full) 분류기 모델 또는 린(lean) 분류기 모델로 카테고리화될 수 있다. 풀 분류기 모델은 수천개의 특징들 및 수십억개의 엔트리들을 포함할 수 있는 큰 트레이닝 데이터세트의 함수로서 생성되는 견고한 데이터 모델일 수 있다. 린 분류기 모델은, 특정 모바일 디바이스 거동이, 양성이 아닌지 여부를 결정하는 것과 가장 관련된 특징들/엔트리들에 대한 테스트들을 포함 또는 우선순위화하는 감소된 데이터세트로부터 생성되는 더 집중된 데이터 모델일 수 있다. 로컬 분류기 모델은 컴퓨팅 디바이스에서 생성되는 린 분류기 모델일 수 있다. 사용자 특정 분류기 모델은, 디바이스 거동이 특정 사용자에 의한 컴퓨팅 디바이스의 통상의 사용과 일치하는지 여부를 결정하는 것과 가장 관련되는 디바이스 특징들/엔트리들을 테스트 또는 평가하는 판정 노드들을 포함 또는 우선순위화하는 고도로 집중된 데이터 모델을 포함하는 로컬 분류기 모델일 수 있다.
[0041]
각각의 개인은 일반적으로 고유의 또는 별개의 방식으로 자신의 컴퓨팅 디바이스와 상호작용한다. 예를 들어, 모바일 디바이스 사용자들은 종종 별개의 작업 또는 통신 스타일을 갖고, 특정 소프트웨어 애플리케이션들 또는 특정 타입들의 소프트웨어 애플리케이션들을 사용하고, 자신들의 모바일 디바이스를 사용하여 특정 액티비티들을 수행하거나 특정 작업들을 달성하고, 액티비티들을 특정 순서로 수행하고, 특정 액티비티들을 특정 시간들에 수행하고, 특정 소프트웨어 애플리케이션들과 특정 방식들로 상호작용하는 것 등을 행한다. 사용자가 자신의 디바이스와 상호작용하는 별개의 방식은 시간에 걸쳐 학습될 수 있고, 소프트웨어 애플리케이션이 비-양성인지 여부를 결정하기 위해 사용될 수 있다. 예를 들어, 실시예에서, 컴퓨팅 디바이스는, 사용자가 시간에 걸쳐 자신의 디바이스와 상호작용하는 별개의 방식을 학습하고, 이러한 정보를 사용하여 액티비티, 작업 또는 거동이 대응하는 UI 이벤트와 연관되어야 하는지 여부를 결정하고, 대응하는 UI 이벤트의 존재를 설명하는 거동 벡터들 및/또는 분류기 모델들을 생성하고, 거동 벡터들을 분류기 모델들에 적용하여 분석 결과들을 생성하고, 분석 결과들을 사용하여 액티비티, 작업 또는 거동과 연관된 소프트웨어 애플리케이션이 비-양성(예를 들어, 악성 등)인지 여부를 결정하도록 구성될 수 있다.
[0042]
현대의 컴퓨팅 디바이스들은 이들의 사용자들에 의해 생성되는 또는 사용자들과 관련되는 정보에 대한 전례없는 레벨들의 액세스를 갖는다. 예를 들어, 모바일 컴퓨팅 디바이스들은 종종 사용자에 대한 상세한 개인 정보를 수집 또는 생성하는 센서들(예를 들어, 가속도계, 자이로스코프, 지리-공간적 포지셔닝 센서, 카메라, 심박수 모니터, 글루코미터(glucometer) 등)을 구비한다. 또한, 이제 모바일 컴퓨팅 디바이스들은, 웹 내비게이팅, 상품 구매, 사용자의 건강 모니터링, 가정 기기들을 제어하는 것, 게임을 플레이하는 것, 비디오들의 시청/기록, 새로운 도시들을 내비게이팅하는 것, 운동들을 추적하는 것, 금융 거래들을 수행하는 것 등을 위한 애플리케이션들을 포함하는 복잡한 소프트웨어 애플리케이션들을 실행하도록 허용하는 강력한 프로세서들을 포함한다. 이러한 소프트웨어 애플리케이션들은 종종 사용자에 대한 상세한 개인 정보를 수집 또는 생성한다. 이러한 소프트웨어 애플리케이션들 및 센서들에 의해 수집, 생성 또는 사용되는 정보는 컴퓨팅 디바이스 실시예에 의해 사용되어, 사용자의 액티비티들, 선호도들, 연령, 직업, 습관들, 분위기, 감정 상태들, 개성 등을 특성화하는 사용자-페르소나(persona) 정보를 생성할 수 있다. 컴퓨팅 디바이스 실시예는 액티비티, 작업 또는 거동이 대응하는 UI 이벤트와 연관되어야 하는지 여부를 포함하는, 시간에 걸친 디바이스의 통상적 동작 패턴들을 결정하기 위해 이러한 사용자-페르소나 정보를 수집 및 사용하도록 구성될 수 있다. 사용자-페르소나 정보는 또한, 소프트웨어 애플리케이션이 비-양성인지 여부를 결정할 때 사용하기에 적합한 거동 벡터들 및/또는 분류기 모델들(예를 들어, 사용자 특정 분류기 모델들 등)을 생성하기 위해 사용될 수 있다.
[0043]
특정 작업들/액티비티들은 직접적으로 또는 고유하게, 운영 시스템 또는 소프트웨어 애플리케이션(또는 프로세스, 스레드 등)이 그러한 작업들/액티비티들을 지원하거나 그와 호환가능한 실행 상태에 있는 것을 수반 또는 요구한다. 예를 들어, 카메라의 사용, 단문 메시지 서비스(SMS) 메시지들의 전송 및 가속도계 데이터의 수집 모두는 통상적으로 디바이스와 어떤 형태의 사용자 상호작용을 요구하는 작업들/액티비티들이다. 따라서, 이러한 액티비티들은 일반적으로 "전경" 실행 상태에서 또는 컴퓨팅 디바이스와의 사용자 상호작용을 지원하는 다른 실행 상태에서 수행되어야 한다. 이러한 또는 다른 유사한 작업들/액티비티들이 배경 실행 상태에서와 같이 디바이스와 높은 정도의 사용자 상호작용을 지원하지 않는 실행 상태에서 수행되는 경우, 이러한 동작 조건은, 그 액티비티와 연관된 디바이스 거동이 비-양성이거나 또는 그렇지 않으면 추가적인 또는 더 면밀한 정밀 조사, 모니터링 또는 분석을 받을만하다는 표시자일 수 있다. 따라서, 실시예에서, 컴퓨팅 디바이스는, 액티비티 또는 작업이 수행되는 특정 실행 상태를 사용하여 액티비티, 작업 또는 거동이 대응하는 UI 이벤트와 연관되어야 하는지 여부를 결정하고, 대응하는 UI 이벤트의 실행 상태 및/또는 존재를 설명하는 거동 벡터들 및/또는 분류기 모델들을 생성하고, 거동 벡터들을 분류기 모델들에 적용하여 분석 결과들을 생성하고, 분석 결과들을 사용하여 소프트웨어 애플리케이션이 비-양성인지 여부를 결정하도록 구성될 수 있다.
[0044]
실시예에서, 거동 모니터링 및 분석 시스템은, 소프트웨어 애플리케이션이 비-양성인지 여부를 결정하기 위해 사용되는 분석 결과들을 생성하는 경우, UI 이벤트의 존재를 (예를 들어, 분류기 모델에의 거동 벡터의 적용 등을 통해) 테스트/평가되는 팩터로서 사용할 수 있다.
[0045]
상기 예들에서, 컴퓨팅 디바이스는 대응하는 UI 이벤트의 프레즌스와 같이 디바이스와의 사용자 상호작용을 통해 생성된 정보를 사용하여, 소프트웨어 애플리케이션이 비-양성인지 여부를 결정한다. 이러한 정보는 통상적으로 (예를 들어, 사용자가 디바이스의 터치 스크린을 터치하는 경우 등에) 디바이스의 센서들 또는 하드웨어에 의해 생성된 데이터를 포함하고, 이는 (예를 들어, 정보를 로그에 저장하는 운영 시스템 등을 통해) 거동 모니터링 및 분석 시스템으로의 포워딩을 위해 운영 시스템에 전송된다. 거동 모니터링 및 분석 시스템이 이러한 정보를 사용하여 소프트웨어 애플리케이션이 비-양성인지 여부를 결정하기 때문에, 악성 소프트웨어 애플리케이션은 예를 들어, 운영 시스템으로 하여금 거동 모니터링 및 분석 시스템에 UI 이벤트의 프레즌스를 부정확하게 보고하게 하기 위해 페이크 UI 이벤트 정보를 생성하여 이를 운영 시스템에 전송함으로써 시스템에 의한 검출을 회피 또는 우회하려 시도할 수 있다.
[0046]
페이크 사용자 상호작용 정보(예를 들어, 페이크 UI 이벤트들)를 생성하는 소프트웨어 애플리케이션들이 거동 모니터링 및 분석 시스템(예를 들어, 거동-기반 보안 시스템)에 의한 검출을 회피 또는 우회하는 것을 방지하기 위해, 실시예에서, 컴퓨팅 디바이스는, 센서 및 하드웨어 드라이버들로부터의 원시 데이터 및 운영 시스템으로부터의 UI 이벤트 정보를 수신하고, 수신된 원시 데이터를 수신된 UI 이벤트 정보와 비교하여, UI 이벤트가 진정한 UI 이벤트인지 또는 페이크 UI 이벤트인지 여부를 결정하고, 페이크 UI 이벤트를 거동 모니터링 및 분석 시스템에 보고하도록 구성된 페이크 UI 이벤트 검출 모듈을 구비할 수 있다.
[0047]
실시예에서, 거동 모니터링 및 분석 시스템은 페이크 UI 이벤트와 연관된 소프트웨어 애플리케이션들을 비-양성인 것으로 분류하도록 구성될 수 있다.
[0048]
실시예에서, 거동 모니터링 및 분석 시스템은 페이크 UI 이벤트와 연관된 소프트웨어 애플리케이션들을 의심스러운 것으로 분류하고 이의 정밀 조사 또는 분석 레벨을 (예를 들어, 더 견고한 분류기 모델들을 사용하는 것, 소프트웨어 애플리케이션의 더 많은 액티비티들을 모니터링하는 것, 더 큰 거동 벡터들을 생성하는 것 등에 의해) 증가시키도록 구성될 수 있다.
[0049]
실시예에서, 거동 모니터링 및 분석 시스템은 예를 들어, 대응하는 UI 이벤트의 프레즌스 또는 존재에 관한 조건들을 테스트하지 않는 분류기 모델을 사용함으로써 페이크 UI 이벤트들인 것으로 결정되는 UI 이벤트들을 무시하도록 구성될 수 있다. 이는, 시스템이, 액티비티 또는 거동이 비-양성인지 여부를 결정하는데 가장 중요한 특징들 또는 팩터들인 자신의 모니터링 및/또는 분석 동작들을 집중하도록 허용한다.
[0050]
실시예에서, 컴퓨팅 디바이스의 디바이스 프로세서는 검출된 UI 이벤트가 페이크 UI 이벤트인지 여부를 결정하기 위해 상이한 디바이스 드라이버들 또는 하드웨어 컴포넌트들로부터 수신된 정보를 비교 및 상관시키도록 구성될 수 있다. 예를 들어, 사용자에 의해 컴퓨팅 디바이스의 터치 스크린 디스플레이를 터치하는 것은 디스플레이로 하여금, 디스플레이가 터치된 시간을 식별하는 타임스탬프의 형태로 원시 데이터를 생성하고 터치된 디스플레이 영역을 식별하는 정보를 조정하게 할 수 있다. 또한, 컴퓨팅 디바이스는 통상적으로 이의 디스플레이가 터치되는 경우 (사용자의 터치의 힘으로 인해) 이동하기 때문에, 컴퓨팅 디바이스의 자이로스코프 및 가속도계는, 터치 이벤트와 동일한 시간에 디바이스가 약간 이동하는 것을 표시하는 원시 데이터를 생성할 수 있다. 따라서, 디바이스 프로세서는, 터치 이벤트가 생성된 시간에 디바이스의 이동이 그 사용자 상호작용과 일치하는지 여부를 결정할 수 있다.
[0051]
(도 2 내지 도 7을 참조하여 설명된 실시예들을 포함하는) 다양한 실시예들은 단일 프로세서 및 멀티프로세서 시스템들 및 시스템-온-칩(SOC)을 포함하는 다수의 상이한 모바일 디바이스들에서 구현될 수 있다. 도 1은 다양한 실시예들을 구현하는 컴퓨팅 디바이스들에서 사용될 수 있는 예시적인 시스템-온-칩(SOC)(100) 아키텍처를 예시하는 구조적 도면이다. SOC(100)는 다수의 이종 프로세서들, 예를 들어, 디지털 신호 프로세서(DSP)(102), 모뎀 프로세서(104), 그래픽 프로세서(106) 및 애플리케이션 프로세서(108)를 포함할 수 있다. SOC(100)는 또한 이종 프로세서들(102, 104, 106, 108) 중 하나 이상에 접속된 하나 이상의 코프로세서들(110)(예를 들어, 벡터 코-프로세서)을 포함할 수 있다. 각각의 프로세서(102, 104, 106, 108, 110)는 하나 이상의 코어들을 포함할 수 있고, 각각의 프로세서/코어는 다른 프로세서들/코어들과 독립적인 동작들을 수행할 수 있다. 예를 들어, SOC(100)는 제 1 타입의 운영 시스템(예를 들어, FreeBSD, LINUX, OS X 등)을 실행하는 프로세서 및 제 2 타입의 운영 시스템(예를 들어, Microsoft Windows 10)을 실행하는 프로세서를 포함할 수 있다.
[0052]
SOC(100)는 또한 센서 데이터, 아날로그-디지털 변환들, 무선 데이터 송신들을 관리하기 위한 그리고 게임들 및 영화들에 대한 인코딩된 오디오 신호들을 프로세싱하는 것과 같은 다른 특수화된 동작들을 수행하기 위한 아날로그 회로 및 주문형 회로(114)를 포함할 수 있다. SOC(100)는 시스템 컴포넌트들/자원들(116), 예를 들어, 전압 조절기들, 오실레이터들, 위상-고정 루프들, 주변 브릿지들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 타이머들 및 컴퓨팅 디바이스 상에서 실행되는 프로세서들 및 클라이언트들을 지원하기 위해 사용되는 다른 유사한 컴포넌트들을 더 포함할 수 있다.
[0053]
시스템 컴포넌트들/자원들(116) 및 주문형 회로(114)는 카메라들, 전자 디스플레이들, 무선 통신 디바이스들, 외부 메모리 칩들 등과 같은 주변 디바이스들과 인터페이싱하기 위한 회로를 포함할 수 있다. 프로세서들(102, 104, 106, 108)은, 재구성가능한 로직 게이트들의 어레이를 포함하고 그리고/또는 버스 아키텍처(예를 들어, CoreConnect, AMBA 등)를 구현할 수 있는 상호접속/버스 모듈(124)을 통해 하나 이상의 메모리 엘리먼트들(112), 시스템 컴포넌트들/자원들(116) 및 주문형 회로(114)에 상호접속될 수 있다. 통신들은 어드밴스드 상호접속들, 예를 들어, 고성능 NoC들(networks-on chip)에 의해 제공될 수 있다.
[0054]
SOC(100)는 SOC 외부의 자원들, 예를 들어, 클럭(118) 및 전압 조절기(120)와 통신하기 위한 입력/출력 모듈(미도시)을 더 포함할 수 있다. SOC 외부의 자원들(예를 들어, 클럭(118), 전압 조절기(120))은 내부 SOC 프로세서들/코어들 중 둘 이상(예를 들어, DSP(102), 모뎀 프로세서(104), 그래픽 프로세서(106), 애플리케이션 프로세서(108) 등)에 의해 공유될 수 있다.
[0055]
SOC(100)는 또한, 스피커들, 사용자 인터페이스 엘리먼트들(예를 들어, 입력 버튼들, 터치 스크린 디스플레이 등), 마이크로폰 어레이들, 물리적 조건들(예를 들어, 위치, 방향, 모션, 배향, 진동 압력 등)을 모니터링하기 위한 센서들, 카메라들, 나침반들, GPS 수신기들, 통신 회로(예를 들어, Bluetooth®, WLAN, WiFi 등) 및 현대의 전자 디바이스들의 다른 널리 공지된 컴포넌트들(예를 들어, 가속도계 등)을 포함하는, 센서들로부터의 센서 데이터를 수집하기에 적합한 하드웨어 및/또는 소프트웨어 컴포넌트들을 포함할 수 있다.
[0056]
앞서 논의된 SOC(100)에 추가로, 다양한 실시예들은 단일 프로세서, 다수의 프로세서들, 멀티코어 프로세서들 또는 이들의 임의의 조합을 포함할 수 있는 광범위한 컴퓨팅 시스템들에서 구현될 수 있다.
[0057]
도 2는 다양한 실시예들에 따라 페이크 UI 이벤트들을 식별하도록 구성된 컴퓨팅 디바이스(200) 실시예에서 예시적인 로직 컴포넌트들 및 정보 흐름들을 예시한다. 도 2에 예시된 예에서, 컴퓨팅 디바이스(200)는 다양한 센서들 및 하드웨어 컴포넌트들(202), 디바이스 드라이버 모듈(204), 운영 시스템(206), 페이크 UI 이벤트 검출 모듈(212), 거동-기반 보안 모듈(214) 및 동작들의 로그(220)를 포함한다. 컴퓨팅 디바이스는 또한 소프트웨어 애플리케이션 프로그램(208) 및 악성 소프트웨어 애플리케이션 프로그램(210)을 포함하며, 둘 모두는 컴퓨팅 디바이스(200)의 프로세서들 또는 프로세싱 코어들 중 하나 이상을 통해 컴퓨팅 디바이스(200) 상에서 동작 또는 실행될 수 있다.
[0058]
소프트웨어 애플리케이션 프로그램들(208, 210)은 운영 시스템(206)의 서비스들을 발동시키기 위해 애플리케이션 프로그램 인터페이스(API)를 사용할 수 있다. 운영 시스템(206)은 디바이스 드라이버 모듈(204)을 통해 센서/하드웨어 컴포넌트들(202)과 통신할 수 있고, 디바이스 드라이버 모듈(204)은 센서/하드웨어 컴포넌트들(202)과 운영 시스템(206) 사이에서 소프트웨어 인터페이스를 제공하거나 소프트웨어 인터페이스로서 기능할 수 있다. 디바이스 드라이버 모듈(204)은 센서/하드웨어 컴포넌트들(202)에 의해 구현되는 동작 코드들(opcodes) 및 네이티브 커맨드들을 통해 센서/하드웨어 컴포넌트들(202)을 제어하거나 이들과 통신하도록 구성될 수 있다. 디바이스 드라이버 모듈(204)은 운영 시스템(206)에 의한 해석 및 사용에 적합한 정보를 생성하기 위해 센서/하드웨어 컴포넌트들(202)로부터 수신된 원시 데이터를 사용하도록 구성될 수 있다.
[0059]
센서/하드웨어 컴포넌트들(202)은 사용자 상호작용 이벤트들을 검출하는 것에 대한 응답으로 원시 데이터를 생성하여 이를 디바이스 드라이버 모듈(204)에 전송하도록 구성될 수 있고, 디바이스 드라이버 모듈(204)은 운영 시스템(206)에 의한 해석 및 사용에 적합한 UI 이벤트 정보를 생성하기 위해 센서/하드웨어 컴포넌트들(202)로부터 수신된 원시 데이터를 사용하도록 구성될 수 있다. 예를 들어, 센서/하드웨어 컴포넌트들(202)은 사용자가 터치스크린을 터치할 때마다 원시 데이터를 X 및 Y 위치 좌표의 형태로 디바이스 드라이버 모듈(204)에 전송하도록 구성된 전자 터치스크린 디스플레이(예를 들어, 용량성 감지 터치스크린 패널 등)를 포함할 수 있다. 디바이스 드라이버 모듈(204)은 이러한 원시 데이터(즉, 위치 좌표 X 및 Y)를 운영 시스템(206)에 의한 해석 및 사용에 적합한 UI 이벤트 정보(예를 들어, screenTouch(X,Y))로 변환하도록 구성될 수 있다. 운영 시스템(206)은 UI 이벤트 정보를 수신 및 사용하여, 소프트웨어 애플리케이션 프로그램(208)의 onTouch(X,Y) 함수가 발동되어야 한다고 결정할 수 있고, 소프트웨어 애플리케이션 프로그램(208)으로 하여금 onTouch(X,Y) 함수의 동작들을 수행하게 할 수 있다. 이러한 동작들은 카메라 셔터를 개방하는 것, 이미지를 캡쳐하는 것, 캡쳐된 이미지를 프로세싱하는 것 등을 포함할 수 있다.
[0060]
운영 시스템(206) 및 소프트웨어 애플리케이션 프로그램(208) 둘 모두는 자신들의 각각의 동작들, 액티비티들 및/또는 작업을 동작들의 로그(220)에 로깅할 수 있다. 예를 들어, 운영 시스템은 UI 이벤트의 검출(예를 들어, screenTouch(X,Y))을 동작들의 로그(220)에 로깅할 수 있고, 소프트웨어 애플리케이션 프로그램(208)은 동작들(예를 들어, 카메라 셔터를 개방하는 것, 이미지를 캡쳐하는 것, 정보를 메모리에 기록하는 것 등) 또는 이들의 연관된 API 호출들을 동작들의 로그(220)에 로깅할 수 있다.
[0061]
거동-기반 보안 모듈(214)은 소프트웨어 애플리케이션 프로그램(208)의 동작들, 액티비티들을 모니터링하고, 동작들의 로그(220)로부터 거동 정보를 수집하고, 수집된 거동 정보를 사용하여 거동 벡터 구조들을 생성하고, 생성된 거동 벡터 구조들을 분류기 모델들에 적용하여 분석 결과들을 생성하고, 분석 결과들을 사용하여, 소프트웨어 애플리케이션 프로그램(208)이 비-양성인지 여부를 결정하도록 구성될 수 있다. 이러한 동작들의 일부로서, 거동-기반 보안 모듈(214)은, 소프트웨어 애플리케이션 프로그램(208)의 거동 또는 액티비티가 직접적으로 또는 고유하게 디바이스와의 어떤 형태의 사용자 상호작용을 수반 또는 요구한다고 결정할 수 있고, 거동/액티비티가 직접적으로 또는 고유하게 사용자 상호작용을 수반 또는 요구한다고 결정하는 것에 대한 응답으로, 동작들의 로그(220)가 거동/액티비티에 대응하는 UI 이벤트를 포함하는지 여부를 결정할 수 있고, 소프트웨어 애플리케이션 프로그램(208)이 비-양성인지 여부를 결정하는 경우, 대응하는 UI 이벤트의 프레즌스 또는 존재를 평가하는 거동 벡터 및/또는 분류기 모델을 사용할 수 있다.
[0062]
도 2에 예시된 예에서, 악성 소프트웨어 애플리케이션 프로그램(210)은 페이크 UI 이벤트를 생성하여 이를 운영 시스템에 전송함으로써 거동-기반 보안 모듈(214)에 의한 검출을 회피 또는 우회하려 시도한다. 예를 들어, 악성 소프트웨어 애플리케이션 프로그램(210)은 사용자의 인식 동의 없이 카메라를 활성화시켜 이미지를 캡쳐할 수 있고, 운영 시스템으로 하여금 카메라의 활성화에 대응하는 UI 이벤트의 프레즌스를 부정확하게 로깅하게 할 수 있다. 이는, 모니터링된 액티비티에 대응하는 UI 이벤트가 존재하는 것으로 거동-기반 보안 모듈(214)이 부정확하게 결정하게 할 수 있다.
[0063]
페이크 UI 이벤트 검출 모듈(212)은 악성 소프트웨어 애플리케이션 프로그램(210)이 거동-기반 보안 모듈(214)에 의한 검출을 회피 또는 우회하는 것을 방지하도록 구성될 수 있다. 디바이스 드라이버 모듈(204)은 페이크 UI 이벤트 검출 모듈(212)에 원시 데이터를 전송하도록 구성된 드라이버 계측 모듈(216)을 포함할 수 있고, 운영 시스템(206)은 페이크 UI 이벤트 검출 모듈(212)에 UI 이벤트 정보를 전송하도록 구성된 운영 시스템 계측 모듈(218)을 포함할 수 있다. 페이크 UI 이벤트 검출 모듈(212)은 드라이버 계측 모듈(216)로부터의 원시 데이터 및 운영 시스템 계측 모듈(218)로부터의 UI 이벤트 정보를 수신하고, 수신된 원시 데이터를 수신된 UI 이벤트 정보와 비교하여, UI 이벤트가 진정한 UI 이벤트인지 또는 페이크 UI 이벤트인지 여부를 결정하고, 페이크 UI 이벤트를 거동-기반 보안 모듈(214)에 보고하도록 구성될 수 있다.
[0064]
페이크 UI 이벤트의 보고를 수신하는 것에 대한 응답으로, 거동-기반 보안 모듈(214)은 페이크 UI 이벤트와 연관된 소프트웨어 애플리케이션들을 비-양성인 것으로 분류하거나, 페이크 UI 이벤트와 연관된 소프트웨어 애플리케이션들을 의심스러운 것으로 분류하거나, UI 이벤트들의 프레즌스/존재에 관한 조건들을 테스트하는 판정 노드들을 배제하도록 분류기 모델들을 업데이트하거나, UI 이벤트들의 프레즌스/존재에 관한 조건들을 테스트하지 않는 분류기 모델들 및 거동 벡터들을 선택/사용할 수 있다.
[0065]
도 3은 비-양성 디바이스 거동들을 식별하고 그에 응답하기 위해 거동 분석 기술들을 사용하도록 구성된 거동-기반 보안 모듈(214)을 포함하는 컴퓨팅 디바이스 실시예에서 예시적인 로직 컴포넌트들 및 정보 흐름들을 예시한다. 도 3에 예시된 예에서, 컴퓨팅 디바이스는 거동 관측기 모듈(302), 거동 추출기 모듈(304), 거동 분석기 모듈(306) 및 액추에이터 모듈(308)을 포함하는 실행가능한 명령 모듈들로 구성된 거동 프로세서(즉, 모바일 디바이스 프로세서)를 포함하는 모바일 디바이스(300)이다. 모듈들(302-308) 각각은 소프트웨어, 하드웨어 또는 이들의 조합으로 구현되는 스레드, 프로세스, 데몬, 모듈, 서브-시스템, 또는 컴포넌트일 수 있다. 다양한 실시예들에서, 모듈들(302-308)은 운영 시스템의 부분들 내에서(예를 들어, 커넬 내에서, 커넬 공간에서, 사용자 공간에서 등), 별개의 프로그램들 또는 애플리케이션들 내에서, 특수화된 하드웨어 버퍼들 또는 프로세서들에서, 또는 이들의 임의의 조합으로 구현될 수 있다. 실시예에서, 모듈들(302-308) 중 하나 이상은 모바일 디바이스(300)의 하나 이상의 프로세서들 상에서 실행되는 소프트웨어 명령들로서 구현될 수 있다.
[0066]
거동 관측기 모듈(302)은 디바이스의 다양한 레벨들/모듈들에서 애플리케이션 프로그래밍 인터페이스들(API들), 카운터들, 하드웨어 모니터들 등을 계측하고, 일정 시간 기간에 걸쳐 다양한 레벨들/모듈들에서 액티비티들, 조건들, 동작들 및 이벤트들(예를 들어, 시스템 이벤트들, 상태 변경들 등)을 모니터링하도록 구성될 수 있다. 거동 관측기 모듈(302)은 모니터링된 액티비티들, 조건들, 동작들 또는 이벤트들에 관한 거동 정보를 수집하고, 수집된 정보를 메모리에(예를 들어, 로그 파일 등에) 저장할 수 있다.
[0067]
일부 실시예들에서, 거동 관측기 모듈(302)은 컴퓨팅 디바이스에서 동작하는 소프트웨어 애플리케이션들, 컴퓨팅 디바이스의 센서들로부터 및/또는 컴퓨팅 디바이스 또는 이의 소프트웨어 애플리케이션들과의 사용자 상호작용으로부터 사용자-기반 정보(예를 들어, 사용자-페르소나 정보 등)를 수집하도록 구성될 수 있다. 사용자-기반 정보는 디바이스 사용자의 액티비티들, 디바이스 사용 패턴들, 습관들, 분위기, 직업 및/또는 감정 상태들을 식별 또는 특성화하기에 적합한 임의의 정보를 포함할 수 있다. 예들로서, 사용자-기반 정보는 디바이스와의 사용자 상호작용을 식별하는 정보, 디바이스 상에서 수행되는 맞춤화의 수 및 타입들, 사용자에 의해 다운로드 또는 사용되는 소프트웨어 애플리케이션들의 타입들, 사용자가 스크린을 터치하거나 스크린과 상호작용하는 레이트, 디바이스의 그래픽 프로세싱 유닛(GPU) 사용 레벨, 사용자가 다른 사람들과 통신하기 위해 얼마자 자주 디바이스를 사용하는지, 사용자의 선호하는 통신 방법(예를 들어, 텍스트 대 음성), 사용자가 얼마나 빨리 통신하는지, 디바이스 메모리 크기 등을 포함할 수 있다. 디바이스 프로세서는 수집된 사용자-기반 정보를 사용하여, 사용자가 통상적으로 컴퓨팅 디바이스와 어떻게 상호작용하는지를 학습하고, 디바이스의 통상적인 동작 패턴들을 결정하고 그리고/또는 액티비티, 작업 또는 거동이 UI 이벤트와 연관되어야 하는지 여부를 결정할 수 있다. 예를 들어, 디바이스 프로세스는 사용자-기반 정보를 사용하여, 디바이스의 통상적인 동작 패턴들이, 특정 액티비티가 특정 UI 이벤트와 연관되는 것 및/또는 특정 액티비티의 수행이 이에 대응하는 UI 이벤트 없이 디바이스의 통상적인 운영 패턴들과 일치하지 않는 것을 표시하는지 여부를 결정할 수 있다.
[0068]
거동 관측기 모듈(302)은, 캘린더 애플리케이션들, 리마인더 애플리케이션들, 통신 애플리케이션들, 금융 애플리케이션들, 특정 작업들을 달성하기 위한 애플리케이션들(예를 들어, 워드 프로세싱, 세금 재편의 준비, 프리젠테이션 애플리케이션들, 어카운팅 애플리케이션들 등), 위치 기반 애플리케이션들(예를 들어, 맵핑 및 지오로케이션 애플리케이션들 등), 소셜 미디어 애플리케이션들, (예를 들어, 과거 검색들, 브라우징 이력, 방문된 웹사이트들의 타입들, 방문된 웹사이트들의 컨텐츠 등에 관한 정보를 획득하기 위한) 웹 브라우저들, 엔터테인먼트 애플리케이션들(예를 들어, 오디오 또는 멀티미디어 플레이어 애플리케이션), 사용자 계좌들에 액세스하기 위한 애플리케이션들(예를 들어, 뱅킹 애플리케이션들 등), 개인 트레이닝 및 개발 애플리케이션들 등을 포함하는 임의의 다양한 소프트웨어 애플리케이션들(또는 소프트웨어 애플리케이션 타입들)을 모니터링함으로써 사용자-페르소나 정보를 수집하도록 구성될 수 있다.
[0069]
거동 관측기 모듈(302)은 또한 심박수 모니터, 혈압 모니터, 온도계, 만보계, 혈당 측정기, 습도 센서, 음주 측정기, 갈바니 피부 반응 센서 또는 디바이스의 다른 센서로부터 데이터를 획득함으로써 사용자-페르소나 정보를 수집할 수 있다. 예를 들어, 거동 관측기 모듈(302)은, 디바이스의 지리-공간적 포지셔닝 및 내비게이션 시스템들을 모니터링하여, 사용자의 현재 위치(예를 들어, 사무실, 집, 식당, 체육관, 여행중 등), 사용자의 현재 이동들(예를 들어, 현재 여행중인 것, 운동중인 것, 멈춰있는 것 등), 이동들의 이력(예를 들어, 멀리 여행간 것, 결코 마을을 떠나지 않은 것 등), 사용자가 자신의 설정된 루틴을 따르고 있는지 여부(예를 들어, 정시에 직장에 도착한 것, 여전히 일하고 있는 것) 또는 자신의 루틴을 벗어난 것(예를 들어, 통상적인 것보다 늦게 도착한 것, 통상적인 것보다 일찍 떠난 것)을 결정함으로써, 사용자-페르소나 정보를 수집할 수 있다.
[0070]
일부 실시예들에서, 모바일 디바이스(300)의 디바이스 프로세서는 사용자-페르소나 정보 및/또는 디바이스와의 사용자 상호작용을 특성화하는 정보를 사용하여 거동 벡터들 및/또는 분류기 모델들을 생성하도록 구성될 수 있다. 예를 들어, 디바이스 프로세서는 사용자 상호작용 정보를 사용하여, 모니터링되는 디바이스 특성들, 거동 벡터들에 포함된 거동 정보, 분류기 모델들에 포함된(그리고 따라서 그에 의해 평가되는) 특정 디바이스 특징들 등을 동적으로 결정하도록 구성될 수 있다. 다른 예로, 디바이스 프로세서는 특정 타입들의 소프트웨어 애플리케이션들(예를 들어, 게임들 등)의 사용 또는 실행 동안 UI 이벤트들의 프레즌스를 식별하는데 집중된 조건들/특징들을 평가하는 분류기 모델을 생성하도록 구성될 수 있다.
[0071]
일부 실시예들에서, 디바이스 프로세서는 사용자 상호작용 정보가 수집된 거동 정보의 전부 또는 일부들을 분석하는 것과 관련되는지 여부를 결정하고, (관련된 경우) 사용자 상호작용에 관한 디바이스 특징을 평가하는 판정 노드를 포함하는 분류기 모델을 생성하고, 사용자 상호작용이 관련되는 수집된 거동 정보와 상관되는 거동 벡터를 생성하고, 생성된 거동 벡터를 생성된 분류기 모델에 적용하여, 디바이스 거동이 비-양성인지 여부를 결정하도록 구성될 수 있다.
[0072]
거동 관측기 모듈(302)은 또한, 애플리케이션 프레임워크 또는 런타임 라이브러리들에서 라이브러리 애플리케이션 프로그래밍 인터페이스(API) 호출들, 시스템 호출 API들, 파일-시스템 및 네트워킹 서브-시스템 동작들, (센서 디바이스들을 포함하는) 디바이스 상태 변경들 및 다른 유사한 이벤트들에 관한 정보를 수집함으로써 모바일 디바이스(300)의 액티비티들을 모니터링하도록 구성될 수 있다. 또한, 거동 관측기 모듈(302)은, 파일이름들을 검색하는 것, 파일 액세스들의 카테고리들(개인 정보 또는 정규의 데이터 파일들), 파일들(예를 들어, 타입 exe, zip 등)을 생성 또는 삭제하는 것, 파일 판독/기록/탐색 동작들, 파일 허용들을 변경하는 것 등을 포함할 수 있는 파일 시스템 액티비티를 모니터링할 수 있다.
[0073]
거동 관측기 모듈(302)은 또한, 접속들의 타입들, 프로토콜들, 포트 번호들, 디바이스가 접속된 서버/클라이언트, 접속들의 수, 통신들의 볼륨 또는 주파수 등을 포함할 수 있는 데이터 네트워크 액티비티를 모니터링함으로써 모바일 디바이스(300)의 액티비티들을 모니터링할 수 있다. 거동 관측기 모듈(302)은 전송되거나 수신되거나 인터셉트된 호출들 또는 메시지들(예를 들어, SMS 등)의 타입 및 수(예를 들어, 통화된 프리미엄 호출들의 수)를 모니터링하는 것을 포함할 수 있는 폰 네트워크 액티비티를 모니터링할 수 있다.
[0074]
거동 관측기 모듈(302)은 또한 포크(fork)들의 수, 메모리 액세스 동작들, 파일 오픈의 수 등을 모니터링하는 것을 포함할 수 있는 시스템 자원 사용을 모니터링함으로써, 모바일 디바이스(300)의 액티비티들을 모니터링할 수 있다. 거동 관측기 모듈(302)은, 디스플레이가 온인지 또는 오프인지 여부, 디바이스가 잠겼는지 또는 잠금해제되었는지 여부, 남은 배터리의 양, 카메라의 상태 등과 같은 다양한 팩터들을 모니터링하는 것을 포함할 수 있는 모바일 디바이스(300)의 상태를 모니터링할 수 있다. 거동 관측기 모듈(302)은 또한 예를 들어, 중요한 서비스들(브라우저, 계약서 제공자 등)에 대한 의도들, 인터-프로세스 통신들의 정도, 팝업 윈도우들 등을 모니터링함으로써, 인터-프로세스 통신들(IPC)을 모니터링할 수 있다.
[0075]
거동 관측기 모듈(302)은 또한 카메라들, 센서들, 전자 디스플레이들, WiFi 통신 컴포넌트들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 타이머들, 주변 디바이스들, 무선 통신 컴포넌트들, 외부 메모리 칩들, 전압 조절기들, 오실레이터들, 위상-고정 루프들, 주변 브릿지들, 및 모바일 디바이스(300) 상에서 실행되는 프로세서들 및 클라이언트들을 지원하기 위해 사용되는 다른 유사한 컴포넌트들을 포함할 수 있는 하나 이상의 하드웨어 컴포넌트들의 상태 및/또는 드라이버 통계들을 모니터링함으로써 모바일 디바이스(300)의 액티비티들을 모니터링할 수 있다.
[0076]
거동 관측기 모듈(302)은 또한 모바일 디바이스(300) 및/또는 컴퓨팅 디바이스 서브-시스템들의 상태 또는 스테이터스를 표시하는 하나 이상의 하드웨어 카운트들을 모니터링함으로써 모바일 디바이스(300)의 액티비티들을 모니터링할 수 있다. 하드웨어 카운터는 모바일 디바이스(300)에서 발생하는 하드웨어-관련 액티비티들 또는 이벤트들의 카운트 값 또는 상태를 저장하도록 구성되는 프로세서들/코어들의 특수 목적 레지스터를 포함할 수 있다.
[0077]
거동 관측기 모듈(302)은 또한, 소프트웨어 애플리케이션들의 작동들 또는 동작들, 애플리케이션 다운로드 서버(예를 들어, Apple® 앱 스토어 서버)로부터의 소프트웨어 다운로드들, 소프트웨어 애플리케이션들에 의해 사용되는 컴퓨팅 디바이스 정보, 호출 정보, 텍스트 메시징 정보(예를 들어, SendSMS, BlockSMS, ReadSMS 등), 미디어 메시징 정보(예를 들어, ReceiveMMS), 사용자 계정 정보, 위치 정보, 카메라 정보, 가속도계 정보, 브라우저 정보, 브라우저-기반 통신들의 컨텐츠, 음성-기반 통신들의 컨텐츠, 단거리 라디오 통신들(예를 들어, 블루투스, WiFi 등), 텍스트-기반 통신들의 컨텐츠, 기록된 오디오 파일들의 컨텐츠, 폰북 또는 접촉 정보, 접촉 리스트들 등을 모니터링함으로써 모바일 디바이스(300)의 액티비티들을 모니터링할 수 있다.
[0078]
거동 관측기 모듈(302)은 또한 음성메일(VoiceMailComm), 디바이스 식별자들(DeviceIDComm), 사용자 계정 정보(UserAccountComm), 캘린더 정보(CalendarComm), 위치 정보(LocationComm), 기록된 오디오 정보(RecordAudioComm), 가속도계 정보(AccelerometerComm) 등을 포함하는 통신들을 포함하는, 모바일 디바이스(300)의 송신들 또는 통신들을 모니터링함으로써 모바일 디바이스(300)의 액티비티들을 모니터링할 수 있다.
[0079]
거동 관측기 모듈(302)은 또한 나침반 정보, 컴퓨팅 디바이스 설정들, 배터리 수명, 자이로스코프 정보, 압력 센서들, 자석 센서들, 스크린 액티비티 등의 사용 및 업데이트들/변경들을 모니터링함으로써 모바일 디바이스(300)의 액티비티들을 모니터링할 수 있다. 거동 관측기 모듈(302)은 소프트웨어 애플리케이션으로 및 애플리케이션으로부터 통신되는 통지들(AppNotifications), 애플리케이션 업데이트들 등을 모니터링할 수 있다. 거동 관측기 모듈(302)은 제 2 소프트웨어 애플리케이션의 다운로딩 및/또는 설치를 요청하는 제 1 소프트웨어 애플리케이션에 관한 조건들 또는 이벤트들을 모니터링할 수 있다. 거동 관측기 모듈(302)은 패스워드의 입력 등과 같은 사용자 검증에 관한 조건들 또는 이벤트들을 모니터링할 수 있다.
[0080]
거동 관측기 모듈(302)은 또한 애플리케이션 레벨, 라디오 레벨 및 센서 레벨을 포함하는 모바일 디바이스(300)의 다수의 레벨들에서 조건들 또는 이벤트들을 모니터링함으로써 모바일 디바이스(300)의 액티비티들을 모니터링할 수 있다. 애플리케이션 레벨 관측들은 안면 인식 소프트웨어를 통해 사용자를 관측하는 것, 소셜 스트림들을 관측하는 것, 사용자에 의해 입력된 노트들을 관측하는 것, PassBook®, Google® Wallet, Paypal® 및 다른 유사한 애플리케이션들 또는 서비스들의 사용에 관한 이벤트들을 관측하는 것을 포함할 수 있다. 애플리케이션 레벨 관측들은 또한 가상 사설 네트워크들(VPN들)의 사용에 관한 이벤트들, 및 동기화, 음성 검색들, 음성 제어(예를 들어, 한 단어를 말함으로써 폰을 잠금/잠금해제하는 것), 언어 번역기들, 계산들에 대한 데이터의 분담, 비디오 스트리밍, 사용자 액티비티 없는 카메라 사용, 사용자 액티비티 없는 마이크로폰 사용 등에 관한 이벤트들을 관측하는 것을 포함할 수 있다.
[0081]
라디오 레벨 관측들은, 라디오 통신 링크들을 설정하는 것 또는 정보를 송신하는 것 전에 모바일 디바이스(300)와의 사용자 상호작용, 즉, 듀얼/다중 가입자 식별 모듈(SIM) 카드들, 인터넷 라디오, 모바일 폰 테더링, 계산들에 대한 데이터의 분담, 디바이스 상태 통신들, 게임 제어기 또는 홈 제어기로서의 사용, 차량 통신들, 컴퓨팅 디바이스 동기화 등 중 임의의 것 또는 그 초과의 프레즌스, 존재 또는 양을 결정하는 것을 포함할 수 있다. 라디오 레벨 관측들은 또한 포지셔닝, 피어-투-피어(p2p) 통신들, 동기화, 차량 대 차량 통신들 및/또는 머신-투-머신(m2m)을 위한 라디오들(WiFi, WiMax, 블루투스 등)의 사용을 모니터링하는 것을 포함할 수 있다. 라디오 레벨 관측들은 네트워크 트래픽 사용, 통계들 또는 프로파일들을 모니터링하는 것을 더 포함할 수 있다.
[0082]
센서 레벨 관측들은 자석 센서 또는 다른 센서를 모니터링하여, 모바일 디바이스(300)의 사용 및/또는 외부 환경을 결정하는 것을 포함할 수 있다. 예를 들어, 컴퓨팅 디바이스 프로세서는, 디바이스가 (예를 들어, 홀스터(holster) 내의 자석을 감지하도록 구성된 자석 센서를 통해) 홀스터에 있는지 또는 (예를 들어, 카메라 또는 광 센서에 의해 검출되는 광의 양을 통해) 사용자의 주머니에 있는지 여부를 결정하도록 구성될 수 있다. 모바일 디바이스(300)가 홀스터에 있는 것을 검출하는 것은, 예를 들어, 모바일 디바이스(300)가 홀스터에 있는 동안 발생하는 사용자에 의한 활성 사용에 관한 액티비티들 및 기능들(예를 들어, 사진들 또는 비디오들을 찍는 것, 메시지들을 전송하는 것, 음성 호출을 수행하는 것, 음향들을 기록하는 것 등)은 (예를 들어, 사용자에 대해 추적하거나 스파이하기 위해) 디바이스 상에서 실행되는 범죄 프로세스들의 표시들일 수 있기 때문에 의심스러운 거동들을 인식하는 것에 관련될 수 있다.
[0083]
사용 또는 외부 환경들에 관한 센서 레벨 관측들의 다른 예들은, 근거리 통신(NFC) 시그널링을 검출하는 것, 신용 카드 스캐너, 바코드 스캐너 또는 모바일 태그 판독기로부터 정보를 수집하는 것, 범용 직렬 버스(USB) 전력 충전 소스의 프레즌스를 검출하는 것, 키보드 또는 보조 디바이스가 모바일 디바이스(300)에 커플링된 것을 검출하는 것, 모바일 디바이스(300)가 (예를 들어, UBS 등을 통해) 다른 컴퓨팅 디바이스에 커플링된 것을 검출하는 것, LED, 플래쉬, 플래쉬라이트 또는 광원이 수정 또는 디스에이블되었다고 결정하는 것(예를 들어, 긴급상황 시그널링 애플리케이션 등을 악의적으로 디스에이블시키는 것), 스피커 또는 마이크로폰이 턴 온 또는 가동된 것을 검출하는 것, 충전 또는 전력 이벤트를 검출하는 것, 모바일 디바이스(300)가 게임 제어기로서 사용되고 있는 것을 검출하는 것 등을 포함할 수 있다. 센서 레벨 관측들은 또한 의료 또는 헬스케어 센서들로부터 또는 사용자의 신체를 스캐닝하는 것으로부터 정보를 수집하는 것, USB/오디오 잭에 플러그 인된 외부 센서로부터 정보를 수집하는 것, 촉각 또는 햅틱 센서로부터 (예를 들어, 바이브레이터 인터페이스 등을 통해) 정보를 수집하는 것, 모바일 디바이스(300)의 열 상태에 관한 정보를 수집하는 것 등을 포함할 수 있다.
[0084]
관리가능한 레벨에 대해 모니터링되는 팩터들을 수를 감소시키기 위해, 실시예에서, 거동 관측기 모듈(302)은 컴퓨팅 디바이스의 악화에 기여할 수 있는 모든 팩터들의 작은 서브세트인 거동들 또는 팩터들의 초기 세트를 모니터링/관측함으로써 대략적인 관측들을 수행하도록 구성될 수 있다. 실시예에서, 거동 관측기 모듈(302)은 서버 및/또는 클라우드 서비스 또는 네트워크의 컴포넌트로부터 거동들 및/또는 팩터들의 초기 세트를 수신할 수 있다. 실시예에서, 거동들/팩터들의 초기 세트는 머신 학습 분류기 모델들에서 특정될 수 있다.
[0085]
거동 관측기 모듈(302)은 수집된 거동 정보를 거동 추출기 모듈(304)에 (예를 들어, 메모리 기록 동작, 함수 호출 등을 통해) 통신할 수 있다. 거동 추출기 모듈(304)은 수집된 거동 정보를 수신 또는 리트리브하고, 이러한 정보를 사용하여 하나 이상의 거동 벡터들을 생성하도록 구성될 수 있다. 각각의 거동 벡터는 디바이스, 소프트웨어 애플리케이션 또는 프로세스의 거동을 값 또는 벡터 데이터-구조로 간략하게 설명할 수 있다. 벡터 데이터-구조는 일련의 수들을 포함할 수 있고, 수 각각은 모바일 디바이스의 카메라가 사용중인지 여부(예를 들어, 0 또는 1로서), 얼마나 많은 네트워크 트래픽이 모바일 디바이스에 의해 생성되는지 또는 그로부터 송신되는지(예를 들어, 20 KB/sec 등), 얼마나 많은 인터넷 메시지들이 통신되었는지(예를 들어, SMS 메시지들의 수 등), 및/또는 거동 관측기 모듈(302)에 의해 수집되는 임의의 다른 거동 정보와 같은 모바일 디바이스의 특징 또는 거동을 표시한다. 실시예에서, 거동 추출기 모듈(304)은 거동 벡터들을 생성하도록 구성되어, 거동 벡터들은, 모바일 디바이스 시스템(예를 들어, 거동 분석기 모듈(306))이 디바이스의 거동을 신속하게 인식, 식별 또는 분석하게 하는 식별자로서 기능할 수 있다.
[0086]
실시예에서, 거동 추출기 모듈(304)은 모니터링된 액티비티 또는 액티비티들에 관한 문의에 대한 답신을 생성하기 위해, 머신 학습 분류기의 특징/판정 노드에 입력될 수 있는 정보를 포함하도록 거동 벡터들을 생성하도록 구성될 수 있다.
[0087]
실시예에서, 거동 추출기 모듈(304)은 실행 정보를 포함하기 위해 거동 벡터들을 생성하도록 구성될 수 있다. 실행 정보는 거동(예를 들어, 배경 프로세스에 의해 3 초에 5번 사용된 카메라, 전경 프로세스에 의해 3 초에 3 번 사용된 카메라 등)의 일부로서 또는 독립적인 특징의 일부로서 거동 벡터에 포함될 수 있다. 실시예에서, 실행 상태 정보는 섀도우 특징 값 서브-벡터 또는 데이터 구조로서 거동 벡터에 포함될 수 있다. 실시예에서, 거동 벡터는 실행 상태가 관련된 특징들, 액티비티들, 작업들과 연관된 섀도우 특징 값 서브-벡터/데이터 구조를 저장할 수 있다.
[0088]
거동 추출기 모듈(304)은 생성된 거동 벡터들을 거동 분석기 모듈(306)에 (예를 들어, 메모리 기록 동작, 함수 호출 등을 통해) 통신할 수 있다. 거동 분석기 모듈(306)은, 디바이스 거동이 시간에 걸친 디바이스의 악화에 기여하고 있는(또는 기여할 가능성이 있는) 및/또는 그렇지 않으면 디바이스 상에 문제점들을 초래할 수 있는 비-양성 거동인지 여부를 결정하기 위해 분류기 모듈들에 거동 벡터들을 적용하도록 구성될 수 있다.
[0089]
각각의 분류기 모델은 컴퓨팅 디바이스의 거동의 특정 특징 또는 실시예를 평가하기 위해 컴퓨팅 디바이스 프로세서에 의해 사용될 수 있는 데이터 및/또는 정보 구조들(예를 들어, 특징 벡터들, 거동 벡터들, 컴포넌트 리스트들 등)을 포함하는 거동 모델일 수 있다. 각각의 분류기 모델은 또한 컴퓨팅 디바이스에서 다수의 특징들, 팩터들, 데이터 포인트들, 엔트리들, API들, 상태들, 조건들, 거동들, 애플리케이션들, 프로세스들, 동작들, 컴포넌트들 등(본원에서는 총괄적으로 "특징들")을 모니터링하기 위한 판정 기준을 포함할 수 있다. 분류기 모델들은 컴퓨팅 디바이스에 미리 설치되거나, 네트워크 서버로부터 다운로드 또는 수신되거나, 컴퓨팅 디바이스에서 생성되거나, 또는 이들의 임의의 조합일 수 있다. 분류기 모델들은 크라우드 소싱 솔루션들, 거동 모델링 기술들, 머신 학습 알고리즘들 등을 사용함으로써 생성될 수 있다.
[0090]
각각의 분류기 모델은 풀(full) 분류기 모델 또는 린(lean) 분류기 모델로 카테고리화될 수 있다. 풀 분류기 모델은 수천개의 특징들 및 수십억개의 엔트리들을 포함할 수 있는 큰 트레이닝 데이터세트의 함수로서 생성되는 견고한 데이터 모델일 수 있다. 린 분류기 모델은, 특정 액티비티가 진행중인 결정적 액티비티인지 여부 및/또는 특정 컴퓨팅 디바이스 거동이 양성이 아닌지 여부를 결정하는 것과 가장 관련된 특징들/엔트리들만을 포함/테스트하는 감소된 데이터세트로부터 생성되는 더 집중된 데이터 모델일 수 있다. 일례로, 디바이스 프로세서는 네트워크 서버로부터 풀 분류기 모델을 수신하고, 풀 분류기에 기초하여 모바일 디바이스에서 린 분류기 모델을 생성하고, 로컬로 생성된 린 분류기 모델을 사용하여 디바이스의 거동을 양성 또는 비-양성(즉, 악성, 성능 악화 등)인 것으로 분류하도록 구성될 수 있다.
[0091]
로컬로 생성된 린 분류기 모델은 컴퓨팅 디바이스에서 생성되는 린 분류기 모델이다. 즉, 모바일 디바이스들이 고도로 구성가능하고 복잡한 시스템들이기 때문에, 특정 디바이스 거동이 비-양성(예를 들어, 악성 또는 성능-악화)인지 여부를 결정하기 위해 가장 중요한 특징들은 각각의 디바이스에서 상이할 수 있다. 추가로, 특징들의 상이한 조합은, 각각의 디바이스가 특정 거동이 비-양성인지 여부를 신속하고 효율적으로 결정하기 위해 그 디바이스에서 모니터링 및/또는 분석을 요구할 수 있다. 그러나, 모니터링 및 분석을 요구하는 특징들의 정밀한 조합, 및 각각의 특징 또는 특징 조합의 상대적 우선순위 또는 중요성은 종종, 단지 거동이 모니터링 또는 분석되어야 하는 특정 디바이스로부터 획득된 정보를 사용하여 결정될 수 있다. 이러한 및 다른 원인들로, 다양한 실시예들은 모델들이 사용되는 모바일 디바이스에서 분류기 모델들을 생성할 수 있다. 이러한 로컬 분류기 모델들은, 디바이스 프로세서가, 특정 디바이스 상의 거동이 (예를 들어, 디바이스의 성능에서의 악화에 기여하는) 비-양성인지 여부를 결정하는데 가장 중요한 특정 특징들을 정확하게 식별하도록 허용한다. 로컬 분류기 모델들은 또한, 디바이스 프로세서가, 그 특정 디바이스에서의 거동을 분류하는 것에 대한 이들의 상대적 중요성에 따라 테스트 또는 평가되는 특징들을 우선순위화하도록 허용한다.
[0092]
디바이스-특정 분류기 모델은 특정 컴퓨팅 디바이스에서 액티비티 또는 거동을 분류하는 것과 가장 관련된 것으로 결정되는 컴퓨팅 디바이스-특정 특징들/엔트리들만을 포함/테스트하는 집중된 데이터 모델을 포함하는 분류기 모델이다.
[0093]
애플리케이션-특정 분류기 모델은 특정 소프트웨어 애플리케이션을 평가하는 것과 가장 관련된 특징들/엔트리들만을 포함/테스트하는 집중된 데이터 모델을 포함하는 분류기 모델이다.
[0094]
사용자-특정 분류기 모델은, 디바이스의 사용자를 식별하는 것, 사용자의 페르소나를 결정하는 것, 디바이스 거동이 식별된 사용자의 페르소나와 일치하는지 여부를 결정하는 것, 디바이스 거동이 이의 식별된 사용자들 중 하나에 의해 그 디바이스의 통상의 사용과 일치하는지 여부를 결정하는 것 또는 사용자의 액티비티가 비-양성 디바이스 거동을 표시하는지 여부를 결정하는 것과 가장 관련된 특징들/엔트리들에 대한 테스트들을 포함 또는 우선순위화하는 집중된 데이터 모델을 포함하는 로컬 분류기 모델일 수 있다.
[0095]
모바일 디바이스에서 로컬로 사용자-특정, 디바이스-특정 및/또는 애플리케이션-특정 분류기 모델들을 동적으로 생성함으로써, 다양한 실시예들은, 디바이스 프로세서가, 그 특정 모바일 디바이스 및/또는 그 디바이스에서 동작하는 특정 소프트웨어 애플리케이션의 동작들이 그 특정 디바이스의 공지된 사용자의 개성, 습관들 또는 통상의 사용 패턴들과 일치하는지 여부를 결정하기 위해 가장 중요한 적은 수의 특징들에 대해 자신의 모니터링 및 분석 동작들을 집중하도록 허용한다.
[0096]
실시예에서, 거동 분석기 모듈(306)은, 그 거동 분석 동작들의 결과들이 디바이스 거동을 양성 또는 비-양성인 것으로 분류하기에 충분한 정보를 제공하지 않는 경우 거동을 "의심스러운" 것으로 분류하도록 구성될 수 있다. 거동 분석기 모듈(306)은 디바이스 거동이 의심스러운 것으로 결정하는 것에 대한 응답으로 거동 관측기 모듈(302)에 통지하도록 구성될 수 있다. 응답으로, 거동 관측기 모듈(302)은, 이의 관측들의 입도(즉, 컴퓨팅 디바이스 특징들이 모니터링되는 세부사항의 레벨)을 조절하고 그리고/또는 거동 분석기 모듈(306)로부터 수신된 정보(예를 들어, 실시간 분석 동작들의 결과들)에 기초하여 모니터링되는 팩터들 또는 거동들을 변경하고, 새로운 또는 추가적인 거동 정보를 생성 또는 수집하고, 추가적인 분석/분류를 위해 새로운/추가적인 정보를 거동 분석기 모듈(306)에 전송할 수 있다. 거동 관측기 모듈(302)과 거동 분석기 모듈(306) 사이의 이러한 피드백 통신들은, 집합적 거동이 양성 또는 비-양성인 것으로 분류될 때까지, 의심스러운 또는 성능-악화 거동의 소스가 식별될 때까지, 프로세싱 또는 배터리 소모 임계치에 도달될 때까지, 또는 관측 입도에서의 추가적인 변경들, 조절들 또는 증가들로부터 의심스러운 또는 성능-악화 디바이스 거동의 소스가 식별될 수 없다고 디바이스 프로세서가 결정할 때까지, 모바일 디바이스(300)가 관측들의 입도를 재귀적으로 증가시키거나(즉, 더 미세한 또는 더 상세한 관측들을 행하거나) 관측되는 특징들/거동들의 변경하게 한다. 이러한 피드백 통신은 또한 모바일 디바이스(300)가 컴퓨팅 디바이스의 프로세싱, 메모리 또는 에너지 자원들의 과도한 양을 소모함이 없이 거동 벡터들 및 분류기 모델들을 조절 또는 수정하게 한다.
[0097]
실시예에서, 거동 분석기 모듈(306)은 다양한 콘텍스트들 및 조건들 하에서 모바일 디바이스의 통상적인 동작 거동들을 학습하고, 다양한 콘텍스트들/조건들 하에서 정규의 모바일 디바이스 거동들의 모델들을 (예를 들어, 분류기 모델들 등의 형태로) 생성하기 위해, 다양한 모바일 디바이스 서브-시스템들에 의해 및/또는 다양한 시간 기간들에 걸쳐 수집되는 정보를 수신 및 분석하도록 구성될 수 있다. 실시예에서, 거동 분석기 모듈(306)은 생성된 거동 모델들에 대해 수집된 거동 정보 또는 거동 벡터들을 상관시키고, 수신된 관측들이 학습된 정규의 동작 거동들과 충돌하는지(또는 매칭하지 않는지) 여부를 결정하기 위해 상관들에 기초하여 거동 분석 동작들을 수행하도록 구성될 수 있다.
[0098]
고레벨 예로서, 모바일 디바이스(300)는 카메라가 사용된 것, 모바일 디바이스(300)가 서버에 사진을 업로드하려 시도하고 있는 것, 디바이스가 홀스터에 있고 사용자의 벨트에 부착된 동안 모바일 디바이스 상의 애플리케이션이 사진을 찍은 것을 (예를 들어, 수집된 거동 정보를 통해) 검출할 수 있다. 모바일 디바이스(300)는 이러한 검출된 거동(예를 들어, 홀스터에 있는 동안 카메라의 사용)이 사용자에게 허용가능한 또는 통상적인 거동인지 여부를 결정할 수 있다. 이는 검출된 거동(예를 들어, 생성된 거동 벡터)을 모바일 디바이스(300) 또는 사용자의 과거의 거동들과 비교함으로써 달성될 수 있다. 홀스터에 있는 동안 사진들을 찍고 이들을 서버에 업로드하는 것은 (홀스터에 있는 콘텍스트에서 관측된 통상적인 거동들로부터 결정될 수 있는 바와 같이) 통상적이 아닌 거동이기 때문에, 이러한 상황에서, 컴퓨팅 디바이스는 이를, 사용자에 의한 컴퓨팅 디바이스의 통상적인 사용 패턴과 일치하지 않는 것으로 인식할 수 있고, 적절한 응답(예를 들어, 카메라를 셧 오프하는 것, 경보를 울리는 것 등)을 개시할 수 있다.
[0099]
다양한 실시예들에서, 모바일 디바이스(300)는 액티비티 또는 거동이 비-양성인지 여부를 결정하는 것과 가장 관련된 특징들, 팩터들 및 데이터 포인트들을 지능적으로 및 효율적으로 식별하기 위해 네트워크 서버와 함께 동작하도록 구성될 수 있다. 예를 들어, 디바이스 프로세서는 네트워크 서버로부터 풀 분류기 모델을 수신하고, 수신된 풀 분류기 모델을 사용하여, 디바이스의 사용자들 및/또는 디바이스 또는 디바이스의 소프트웨어 애플리케이션들의 특징들 및 기능성들에 특정된 린 분류기 모델들(즉, 데이터/거동 모델들)을 생성하도록 구성될 수 있다. 디바이스 프로세서는 풀 분류기 모델을 사용하여 다양한 레벨들의 복잡성(또는 "린니스(leanness)")의 린 분류기 모델들의 패밀리를 생성할 수 있다. 린 분류기 모델들의 린니스트(leanest) 패밀리(즉, 가장 적은 수의 테스트 조건들에 기초한 린 분류기 모델)은, 분류기 모델이 양성인 것으로 또는 양성이 아닌 것으로(및 그에 따라 모벨에 의해 의심스러운 것으로 카테고리화됨) 카테고리화할 수 없는 거동이 직면될 때까지 ―이 때 거동을 카테고리화하려는 시도에서 더 견고한(즉, 덜 린(lean)인) 린 분류기 모델이 적용될 수 있음― 통상적으로 적용될 수 있다.
생성된 린 분류기 모델들의 패밀리 내에서 훨씬 더 견고한 린 분류기 모델들의 적용은, 거동의 한정적 분류가 달성될 때까지 적용될 수 있다. 이러한 방식으로, 디바이스 프로세서는, 가장 완전하지만 자원-집약적인 린 분류기 모델들의 사용을, 거동을 한정적으로 분류하기 위해 견고한 분류기 모델이 필요한 그러한 상황들로 제한함으로써 효율성과 정확상 사이에 균형을 맞출 수 있다.
[0100]
다양한 실시예들에서, 디바이스 프로세서는 풀 분류기 모델에 포함된 유한 상태 머신 표시 또는 표현을 부스팅된 판정 스텀프들(stumps)로 변환함으로써 린 분류기 모델들을 생성하도록 구성될 수 있다. 디바이스 프로세서는 풀 분류기 모델에 포함된 부스팅된 판정 스텀프들의 서브세트를 포함하는 린 분류기 모델을 생성하기 위해, 사용자-페르소나 정보 또는 사용자-특정 디바이스 특징들에 기초하여 부스팅된 판정 스텀프들의 풀 세트를 프룬(prune) 또는 컬(cull)할 수 있다. 그 다음, 디바이스 프로세서는 린 분류기 모델을 사용하여, 디바이스 거동을 지능적으로 모니터링, 분석 및/또는 분류할 수 있다.
[0101]
부스팅된 판정 스텀프들은 정확히 하나의 노드(및 그에 따라 하나의 테스트 질문 또는 테스트 조건) 및 가중치 값을 갖고, 그에 따라 데이터/거동들의 2진 분류에서 사용하기에 매우 적합한 1 레벨 판정 트리(tree)들이다. 즉, 부스팅된 판정 스텀프에 거동 벡터를 적용하는 것은 2진 답(예를 들어, 예 또는 아니오)을 도출한다. 예를 들어, 부스팅된 판정 스텀프에 의해 테스트되는 질문/조건이 "단문 메시지 서비스(SMS) 송신들의 빈도가 분 당 x보다 작은가"이면, 부스팅된 판정 스텀프에 "3"의 값을 적용하는 것은 ("3 미만"의 SMS 송신들의 경우) "예"의 값 또는 ("3 이상"의 SMS 송신들의 경우) "아니오" 답을 도출할 것이다. 부스팅된 판정 스텀프들은 매우 간단하고 원시적이기 때문에(그에 따라 상당한 프로세싱 자원들을 요구하지 않기 때문에) 효율적이다. 부스팅된 판정 스텀프들은 또한 매우 병렬적이고, 따라서 병렬적으로/동시에 (예를 들어, 컴퓨팅 디바이스의 다수의 코어들 또는 프로세서들에 의해) 많은 스텀프들이 적용 또는 테스트될 수 있다.
[0102]
도 4a는 실시예에 따라 페이크 UI 이벤트들을 검출하고 그에 응답하는 방법(400)을 예시한다. 방법(400)은 모바일 또는 자원 제한된 컴퓨팅 디바이스의 디바이스 프로세서에 의해 수행될 수 있다. 블록(402)에서, 디바이스 프로세서는 컴퓨팅 디바이스의 하나 이상의 디바이스 드라이버들로부터 원시 데이터를 수신할 수 있다. 블록(404)에서, 디바이스 프로세서는 컴퓨팅 디바이스의 HLOS(high-level operating system)로부터 사용자 상호작용(UI) 정보를 수신할 수 있다. 블록(406)에서, 디바이스 프로세서는 디바이스 드라이버로부터 수신된 원시 데이터를 HLOS로부터 수신된 사용자 상호작용 이벤트 정보에 비교하여, 제 1 분석 결과를 생성할 수 있다.
[0103]
결정 블록(408)에서, 디바이스 프로세서는 생성된 제 1 분석 결과를 사용하여, 사용자 상호작용(UI) 이벤트가 사용자 상호작용과 상관되는지 여부를 결정할 수 있다. 이러한 결정은, 하나 이상의 디바이스 드라이버들로부터 수신된 원시 데이터가 HLOS에/에 의해 보고된 UI 이벤트에 매칭하는지 또는 그렇지 않으면 상관되는지 여부를 평가할 수 있다. 디바이스 드라이버 원시 데이터가 HLOS로부터의 UI 정보에 상관(또는 매칭)되지 않으면, 이는, 수신된 UI 이벤트가 페이크인 것을 표시할 수 있고, 컴퓨팅 디바이스는 검출된 UI 이벤트를 페이크 UI 이벤트로서 분류할 수 있다.
[0104]
UI 이벤트가 사용자 상호작용과 상관되고, 그에 따라 UI 이벤트가 페이크 UI 이벤트가 아니라고 결정하는 것(즉, 결정 블록(408) = "예")에 대한 응답으로, 디바이스 프로세서는 거동 벡터들을 분류기 모델들에 적용하여 블록(410)에서 제 2 분석 결과를 생성할 수 있다. 블록(412)에서, 디바이스 프로세서는 제 2 분석 결과들을 사용하여 디바이스 거동이 비-양성인지 여부를 결정할 수 있다. 블록들(410 및 412)의 동작들의 일부로서, 디바이스 프로세서는 도 3을 참조하여 앞서 논의된 동작들 중 임의의 것 또는 전부를 수행할 수 있다.
[0105]
UI 이벤트가 사용자 상호작용과 상관되지 않고, 그에 따라 UI 이벤트가 페이크 UI 이벤트라고 결정하는 것(즉, 결정 블록(408) = "아니오")에 대한 응답으로, 디바이스 프로세서는 블록(414)에서 페이크 UI 이벤트를 컴퓨팅 디바이스의 거동-기반 보안 시스템에 보고할 수 있다. 블록(414)에서, 디바이스 프로세서는 (예를 들어, 거동-기반 보안 시스템을 통해) 디바이스 거동을 비-양성인 것으로 분류할 수 있다. 따라서, 실시예에서, 거동-기반 보안 시스템은 페이크 UI 이벤트와 연관된 것으로 결정된 모든 소프트웨어 애플리케이션 프로그램들을 비-양성인 것으로 분류하도록 구성될 수 있다.
[0106]
도 4b는 다른 실시예에 따라 페이크 UI 이벤트들을 검출하고 그에 응답하는 다른 방법(420)을 예시한다. 방법(420)은 방법의 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성된 모바일 또는 자원 제한된 컴퓨팅 디바이스의 디바이스 프로세서에 의해 수행될 수 있다. 블록(422)에서, 디바이스 프로세서는 하나 이상의 디바이스 드라이버들로부터 수신된 원시 데이터를 HLOS로부터 수신된 UI 정보와 비교할 수 있다. 결정 블록(424)에서, 디바이스 프로세서는 비교 결과들을 사용하여, UI 이벤트가 사용자 상호작용과 상관되고, 그에 따라 페이크 UI 이벤트인지 아닌지 여부를 결정할 수 있다. UI 이벤트가 사용자 상호작용과 상관되고, 그에 따라 UI 이벤트가 페이크 UI 이벤트가 아니라고 결정하는 것(즉, 결정 블록(424) = "예")에 대한 응답으로, 디바이스 프로세서는 블록(426)에서 사용자 상호작용과 관련된 조건을 테스트하는 판정 노드를 포함하는 분류기 모델에 거동 벡터를 적용함으로써 분석 결과들을 생성할 수 있다. 블록(428)에서, 디바이스 프로세서는 분석 결과들을 사용하여 디바이스 거동(예를 들어, 소프트웨어 애플리케이션 등의 액티비티)이 비-양성인지 여부를 결정할 수 있다.
[0107]
UI 이벤트가 사용자 상호작용과 상관되지 않고, 그에 따라 UI 이벤트가 페이크 UI 이벤트라고 결정하는 것(즉, 결정 블록(424) = "아니오")에 대한 응답으로, 디바이스 프로세서는 블록(430)에서 페이크 UI 이벤트를 거동-기반 보안 시스템에 보고할 수 있다. 블록(432)에서, 디바이스 프로세서는 블록(426)에서 사용자 상호작용과 관련된 조건들을 테스트하는 임의의 판정 노드들을 포함하지 않는 분류기 모델에 거동 벡터를 적용함으로써 분석 결과들을 생성할 수 있다. 블록(428)에서, 분석의 사용은 디바이스 거동(예를 들어, 소프트웨어 애플리케이션 등의 액티비티)이 비-양성인지 여부를 결정하는 것을 도출한다.
[0108]
다양한 실시예들은 또한 손상된 사용자 입력 센서 디바이스 드라이버의 가능성을 인식하거나 적어도 식별하기 위해 이용될 수 있다. 이러한 능력들은, 멀웨어가 페이스 UI 이벤트를 포함했거나 이를 사용자 입력 디바이스 또는 센서에 대한 디바이스 드라이버에 삽입하고 있는 경우를 인식하는데 유용할 수 있다. 예를 들어, 터치 스크린에 대한 디바이스 드라이버가 손상되었다면, (예를 들어, 블록(402)에서) 디바이스 드라이버로부터 수신된 원시 데이터 자체가 페이크일 수 있고, 이러한 경우 HLOS로부터의 UI 정보를 비교하는 것은 이러한 공격 레벨을 검출하는데 충분하지 않을 수 있다.
[0109]
이러한 잠재성을 처리하기 위해, 도 4c는 다른 실시예에 따라 손상된 사용자 입력 센서 디바이스 드라이버를 검출하고 이에 응답하기 위한 다른 방법(450)을 예시한다. 방법(450)은 모바일 또는 자원 제한된 컴퓨팅 디바이스의 디바이스 프로세서에 의해 수행될 수 있고, 앞서 설명된 방법들(400 및 420) 중 어느 하나에 대한 추가로 또는 그에 대한 대안으로 수행될 수 있다. 블록(452)에서, 디바이스 프로세서는 하나 이상의 사용자 입력 센서들로부터 수신된 원시 데이터를 입력 센서 디바이스 드라이버들로부터 수신된 데이터와 비교할 수 있다. 예를 들어, 디바이스 프로세서는 터치 스크린에 의해 제공된 원시 출력 데이터를 수신할 수 있고, 그 데이터를 터치 스크린 디바이스 드라이버로부터 수신된 데이터와 비교할 수 있다.
[0110]
결정 블록(454)에서, 디바이스 프로세서는 비교 결과들을 사용하여, 사용자 입력 센서 데이터가 대응하는 디바이스 드라이버 데이터와 상관되는지 여부를 결정할 수 있다. 이러한 결정은 센서 데이터 및 디바이스 드라이버 데이터의 상이한 포맷을 고려할 수 있다. 예를 들어, 디바이스 프로세서는 원시 센서 데이터에 기초하여 수신되어야 하는 디바이스 드라이버 출력 데이터를 결정하기 위해 디바이스 드라이버와 유사한 방식으로 변환을 적용하거나 원시 센서 데이터를 분석할 수 있고, 그 다음, 수신된 디바이스 드라이버 데이터를 예상된 데이터와 비교하여 매칭이 존재하는지 여부를 결정할 수 있다. 예를 들어, 결정 블록(454)에서, 디바이스 프로세서는 터치 스크린에 의해 제공된 출력 데이터의 스트림에 탭(tap)할 수 있고, 터치 스크린 데이터 스트림을 프로세싱하여 터치 스크린 디바이스 드라이버로부터의 적절한 출력을 결정할 수 있고, 그 다음, 결정된 적절한 출력을 터치 스크린 디바이스 드라이버에 의해 생성된 원시 데이터와 비교할 수 있다.
[0111]
원시 UI 센서 데이터가 그 센서에 대한 디바이스 드라이버로부터 수신된 원시 데이터와 상관된다고 결정하는 것(즉, 결정 블록(454) = "예")에 대한 응답으로, 디바이스 프로세서는 앞서 설명된 바와 같이 블록(426)에서 사용자 상호작용과 관련된 조건을 테스트하는 판정 노드를 포함하는 분류기 모델에 거동 벡터를 적용함으로써 분석 결과들을 생성할 수 있다.
[0112]
원시 UI 센서 데이터가 그 센서에 대한 디바이스 드라이버로부터 수신된 원시 데이터와 상관된다고 결정하는 것(즉, 결정 블록(424) = "아니오")에 대한 응답으로, 디바이스 프로세서는 블록(456)에서 디바이스 드라이버가 잠재적으로 손상된 것을 거동-기반 보안 시스템에 보고할 수 있다. 일부 실시예들에서, 원시 센서 데이터와 디바이스 드라이버 데이터와의 상관의 부족은 멀웨어 또는 유사하게 허용불가능한 조건이 존재한다고 결정하기에 충분할 수 있고, 이 경우 거동-기반 보안 시스템에 대한 보고는 디바이스 거동(예를 들어, 소프트웨어 애플리케이션의 액티비티)을 비-양성인 것으로 분류하기에 충분할 수 있다. 그러나, 일부 실시예들에서, 데이터 미스매치가 센서에서의 문제점들, 센서와 디바이스 드라이버 사이의 접속에서의 잡음, 디바이스 드라이버가 결정 블록(454)에서 디바이스 프로세서에 의해 에뮬레이트된 것과 상이한 버전인 것 등에 기인할 수 있기 때문에, 디바이스 드라이버 데이터에 대한 원시 센서 데이터의 비교는, 디바이스 드라이버가 손상되었다고 한정적으로 결정하기에 충분하지 않을 수 있다. 따라서, 이러한 실시예들에서, 보안 시스템에 대한 보고는 오직, 디바이스 드라이버가 손상되었다는 잠재성이 존재한다는 것, 및 디바이스 거동을 양성 또는 비-양성인 것으로 분류하기 위해 (예를 들어, 블록들(432 및 428)에서) 거동-기반 보안 시스템에 의한 추가적인 분석이 필요할 수 있는 것일 수 있다.
[0113]
블록(432)에서, 디바이스 프로세서는 앞서 설명된 바와 같이 사용자 상호작용과 관련된 조건들을 테스트하는 임의의 판정 노드들을 포함하지 않는 분류기 모델에 거동 벡터를 적용함으로써 분석 결과들을 생성할 수 있다. 이러한 분석은 디바이스 드라이버 레벨에서 개시된 페이크 UI 이벤트에 의해 기만되는 것을 회피할 수 있을 뿐만 아니라 UI 센서와 센서의 디바이스 드라이버에서 또는 그 사이에서 오작동들을 초래할 수 있는 잘못된 긍정들을 회피할 수 있다.
[0114]
블록(428)에서, 디바이스 프로세서는 블록들(426 또는 432)로부터의 분석 결과들을 사용하여, 앞서 설명된 바와 같이 디바이스 거동(예를 들어, 소프트웨어 애플리케이션 등의 액티비티)이 비-양성인지 여부를 결정할 수 있다.
[0115]
도 5는 컴퓨팅 디바이스에서 디바이스 거동을 분류하기 위해 린 분류기 모델의 패밀리를 사용하는 실시예 방법(500)을 예시한다. 방법(500)은 방법의 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성된 모바일 또는 자원 제한된 컴퓨팅 디바이스의 디바이스 프로세서에 의해 수행될 수 있다.
[0116]
블록(502)에서, 디바이스 프로세서는 모바일 디바이스 시스템의 다양한 레벨들에서 계측되는 다양한 컴포넌트들로부터의 거동 정보를 수집하기 위해 관측들을 수행할 수 있다. 실시예에서, 이는 도 3을 참조하여 앞서 논의된 거동 관측기 모듈(302)을 통해 달성될 수 있다. 블록(504)에서, 디바이스 프로세서는 수집된 거동 정보 및/또는 모바일 디바이스 거동을 특성화하는 거동 벡터를 생성할 수 있다. 또한 블록(504)에서, 디바이스 프로세서는 네트워크 서버로부터 수신된 풀 분류기 모델을 사용하여 린 분류기 모델 또는 다양한 레벨들의 복잡성(또는 "린니스")의 린 분류기 모델들의 패밀리를 생성할 수 있다. 이를 달성하기 위해, 디바이스 프로세서는 감소된 수의 부스팅된 판정 스텀프들을 포함하고 그리고/또는 제한된 수의 테스트 조건들을 평가하는 린 분류기 모델들을 생성하기 위해 풀 분류기 모델에 포함된 부스팅된 판정 스텀프들의 패밀리를 컬할 수 있다. 실시예에서, 린 분류기 모델들 중 하나 이상은 사용자-특정 분류기 모델들일 수 있다.
[0117]
블록(506)에서, 디바이스 프로세서는 모바일 디바이스에 의해 아직 평가되지 않거나 적용되지 않은 린 분류기 모델들의 패밀리에서 린니스트 분류기(즉, 최소수의 상이한 모바일 디바이스 상태들, 특징들, 거동들 또는 조건들에 기초한 모델)를 선택할 수 있다. 실시예에서, 이는 분류기 모델들의 순서화된 리스트에서 제 1 분류기 모델을 선택하는 디바이스 프로세서에 의해 달성될 수 있다. 블록(508)에서, 디바이스 프로세서는 선택된 린 분류기 모델에서 수집된 거동 정보 또는 거동 벡터들을 각각의 부스팅된 판정 스텀프에 적용할 수 있다. 부스팅된 판정 스텀프들이 2진 판정들이고 린 분류기 모델이 동일한 테스트 조건에 기초한 많은 2진 판정들을 선택함으로써 생성되기 때문에, 린 분류기 모델에서 거동 벡터를 부스팅된 판정 스텀프들을 적용하는 프로세스는 병렬적 동작으로 수행될 수 있다. 대안적으로, 거동 벡터는 린 분류기 모델에 포함된 단지 제한된 수의 테스트 조건 파라미터들을 포함하기 위해 절단 또는 필터링되어, 모델을 적용할 때 계산 노력을 추가로 감소시킬 수 있다.
[0118]
블록(510)에서, 디바이스 프로세서는 린 분류기 모델에서 수집된 거동 정보를 각각의 부스팅된 판정 스텀프에 적용한 결과들의 가중된 평균을 컴퓨팅 또는 결정할 수 있다. 블록(512)에서, 디바이스 프로세서는 컴퓨팅된 가증된 평균을 임계값과 비교할 수 있다. 결정 블록(514)에서, 디바이스 프로세서는 이러한 비교의 결과들 및/또는 선택된 린 분류기 모델을 적용함으로써 생성된 결과들이 의심스러운지 여부를 결정할 수 있다. 예를 들어, 디바이스 프로세서는, 이러한 결과들이 거동을 높은 신뢰도로 의심스러운 것 또는 양성인 것으로 분류하기 위해 사용될 수 있는지 여부를 결정할 수 있고, 그렇지 않으면 거동을 의심스러운 것으로 취급할 수 있다.
[0119]
결과들이 의심스럽다고 디바이스 프로세서가 결정하면(예를 들어, 결정 블록(514) = "예"), 디바이스 프로세서는 높은 신뢰도로 거동이 악성 또는 양성으로 분류될 때까지 블록들(506-512)에서의 동작들을 반복하여, 더 많은 디바이스 상태들, 특징들, 거동들 또는 조건들을 평가하는 더 강력한(즉, 덜 린(lean)인) 분류기 모델을 선택 및 적용할 수 있다. 예를 들어, 높은 신뢰도로 거동이 악성 또는 양성인 것으로 식별될 수 있다고 결정함으로써, 결과들이 의심스럽지 않다고 디바이스 프로세서가 결정하면(예를 들어, 결정 블록(514) = "아니오"), 블록(516)에서 디바이스 프로세서는 블록(512)에서 생성된 비교의 결과를 사용하여, 모바일 디바이스의 거동을 양성 또는 잠재적으로 악성인 것으로 분류할 수 있다.
[0120]
대안적인 실시예 방법에서, 앞서 설명된 동작들은, 린 분류기 모델에 아직 존재하지 않는 부스팅된 판정 스텀프를 순차적으로 선택하고; 선택된 판정 스텀프와 동일한 모바일 디바이스 상태, 특징, 거동 또는 조건에 의존하는(그리고 그에 따라 하나의 결정 결과에 기초하여 적용될 수 있는) 모든 다른 부스팅된 판정 스텀프들을 식별하고; 동일한 모바일 디바이스 상태, 특징, 거동 또는 조건에 의존하는 선택된 및 모든 식별된 다른 부스팅된 판정 스텀프들을 린 분류기 모델에 포함시키고; 테스트 조건들의 결정된 수와 동일한 횟수 동안 프로세스를 반복함으로써 달성될 수 있다. 선택된 부스팅된 판정 스텀프와 동일한 테스트 조건에 의존하는 모든 부스팅된 판정 스텀프들이 각각의 시간에 린 분류기 모델에 추가되기 때문에, 이러한 프로세스가 수행될 횟수를 제한하는 것은 린 분류기 모델에 포함된 테스트 조건들의 수를 제한할 것이다.
[0121]
도 6은 다양한 양상들에 따라 사용하기에 적합한 판정 트리/분류기를 생성하기에 적합한 예시적인 방법(600)을 예시한다. 방법(600)은 방법의 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성된 모바일 또는 자원 제한된 컴퓨팅 디바이스의 디바이스 프로세서에 의해 수행될 수 있다. 블록(602)에서, 디바이스 프로세서는 판정 트리/분류기를 생성 및/또는 실행할 수 있고, 판정 트리/분류기의 실행으로부터 트레이닝 샘플을 수집하고, 트레이닝 샘플에 기초하여 새로운 분류기 모델(h1(x))을 생성할 수 있다. 트레이닝 샘플은 모바일 디바이스 거동들, 소프트웨어 애플리케이션들 또는 모바일 디바이스의 프로세스들의 이전의 관측들 또는 분석으로부터 수집된 정보를 포함할 수 있다. 트레이닝 샘플 및/또는 새로운 분류기 모델(h1(x))은 이전 분류기들에 포함된 질문 또는 테스트 조건들의 타입들에 기초하여 및/또는 이전 데이터/거동 모델들 또는 분류기들의 실행/적용으로부터 수집된 정확도 또는 성능 특성들에 기초하여 생성될 수 있다.
[0122]
블록(604)에서, 디바이스 프로세서는 생성된 판정 트리/분류기(h1(x))에 의해 오분류된 엔트리들의 가중치를 부스팅(또는 증가)시켜 제 2의 새로운 트리/분류기(h2(x))를 생성할 수 있다. 실시예에서, 트레이닝 샘플 및/또는 새로운 분류기 모델(h2(x))은 분류기의 이전 실행 또는 사용(h1(x))의 오류 레이트에 기초하여 생성될 수 있다. 실시예에서, 트레이닝 샘플 및/또는 새로운 분류기 모델(h2(x))은 분류기의 이전 실행 또는 사용에서 데이터 포인트들의 오류 레이트 또는 오분류에 기여한 것으로 결정된 속성들에 기초하여 생성될 수 있다.
[0123]
실시예에서, 오분류된 엔트리들은 이들의 상대적 정확성 또는 효율성에 기초하여 가중될 수 있다. 동작(606)에서, 프로세서는 생성된 제 2 트리/분류기(h2(x))에 의해 오분류된 엔트리들의 가중치를 부스팅(또는 증가)시켜 제 3의 새로운 트리/분류기(h3(x))를 생성할 수 있다. 동작(608)에서, 604-606의 동작들은 "t"개의 새로운 트리/분류기들(ht(x))을 생성하기 위해 반복될 수 있다.
[0124]
제 1 판정 트리/분류기(h1(x))에 의해 오분류된 엔트리들의 가중치를 부스팅 또는 증가시킴으로써, 제 2 트리/분류기(h2(x))는 제 1 판정 트리/분류기(h1(x))에 의해 오분류된 엔티티들을 더 정확하게 분류할 수 있지만, 제 1 판정 트리/분류기(h1(x))에 의해 정확하게 분류된 엔티티들 중 일부를 또한 오분류할 수 있다. 유사하게, 제 3 트리/분류기(h3(x))는 제 2 판정 트리/분류기(h2(x))에 의해 오분류된 엔티티들을 더 정확하게 분류할 수 있고, 제 2 판정 트리/분류기(h2(x))에 의해 정확하게 분류된 엔티티들 중 일부를 오분류할 수 있다. 즉, 트리/분류기들 h1(x)-ht(x)의 패밀리를 생성하는 것은 전반적으로 수렴하는 시스템을 도출하는 것이 아니라, 병렬적으로 실행될 수 있는 다수의 판정 트리들/분류기들을 도출할 수 있다.
[0125]
도 7은 실시예에 따라 동적 및 적응형 관측들을 수행하기 위한 예시적인 방법(700)을 예시한다. 방법(700)은 방법의 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성된 모바일 또는 자원 제한된 컴퓨팅 디바이스의 디바이스 프로세서에 의해 수행될 수 있다. 블록(702)에서, 디바이스 프로세서는 모바일 디바이스의 악화에 기여할 수 있는 많은 수의 팩터들, 거동들 및 액티비티들의 서브세트를 모니터링/관측함으로써 대략적인 관측들을 수행할 수 있다. 블록(703)에서, 디바이스 프로세서는 대략적인 관측들 및/또는 대략적인 관측들에 기초한 모바일 디바이스 거동을 특성화하는 거동 벡터를 생성할 수 있다. 블록(704)에서, 디바이스 프로세서는 모바일 디바이스의 악화에 잠재적으로 기여할 수 있는 대략적 관측들과 연관된 서브시스템들, 프로세스들 및/또는 애플리케이션들을 식별할 수 있다. 이것은 예를 들어, 다수의 소스들로부터 수신된 정보를 모바일 디바이스의 센서들로부터 수신된 콘텍스트 정보와 비교함으로써 달성될 수 있다. 블록(706)에서, 디바이스 프로세서는 대략적 관측들에 기초하여 거동 분석 동작들을 수행할 수 있다.
[0126]
결정 블록(708)에서, 디바이스 프로세서는 거동 분석의 결과들에 기초하여 의심스러운 거동들 또는 잠재적 문제점들이 식별되고 정정될 수 있는지 여부를 결정할 수 있다. 거동 분석의 결과들에 기초하여 의심스러운 동작들 또는 잠재적인 문제점들이 식별되고 정정될 수 있다고 디바이스 프로세서가 결정하는 경우(즉, 결정 블록(708) = "예"), 블록(718)에서, 프로세서는 추가적인 대략적 관측들을 수행하기 위해 거동을 정정하기 위한 프로세스를 개시할 수 있고 블록(702)으로 리턴할 수 있다.
[0127]
거동 분석의 결과들에 기초하여 의심스러운 거동들 또는 잠재적인 문제점들이 식별 및/또는 정정될 수 없다고 디바이스 프로세서가 결정하는 경우(즉, 결정 블록(708) = "아니오"), 결정 블록(709)에서, 디바이스 프로세서는 문제점의 가능성이 존재하는지 여부를 결정할 수 있다. 실시예에서, 디바이스 프로세서는, 모바일 디바이스가 잠재적인 문제점들에 직면하고 그리고/또는 의심스러운 거동들에 관여될 확률을 컴퓨팅하고, 컴퓨팅된 확률이 미리 결정된 임계치보다 큰지 여부를 결정함으로써 문제점의 가능성이 존재한다고 결정할 수 있다. 컴퓨팅된 확률이 미리 결정된 임계치보다 크지 않은 것 및/또는 의심스러운 거동들 또는 잠재적인 문제점들이 존재할 및/또는 검출가능할 가능성이 없는 것으로 디바이스 프로세서가 결정하는 경우(즉, 결정 블록(709) = "아니오"), 프로세서는 추가적인 대략적 관측들을 수행하기 위해 블록(702)으로 리턴할 수 있다.
[0128]
의심스러운 거동들 또는 잠재적인 문제점들이 존재할 및/또는 검출가능한 가능성이 존재한다고 디바이스 프로세서가 결정하는 경우(즉, 결정 블록(709) = "예"), 블록(710)에서, 디바이스 프로세서는 식별된 서브시스템들, 프로세스들 또는 애플리케이션들에 대해 더 심도깊은 로깅/관측들 또는 최종 로깅을 수행할 수 있다. 블록(712)에서, 디바이스 프로세서는 식별된 서브시스템들, 프로세스들 또는 애플리케이션들에 대해 더 심도깊은 및 더 상세한 관측들을 수행할 수 있다. 블록(714)에서, 디바이스 프로세서는 더 심도깊은 및 더 상세한 관측들에 기초하여 추가적인 및/또는 더 심도깊은 거동 분석을 수행할 수 있다. 결정 블록(708)에서, 디바이스 프로세서는 더 심도깊은 거동 분석의 결과들에 기초하여 의심스러운 거동들 또는 잠재적 문제점들이 식별되고 정정될 수 있는지 여부를 다시 결정할 수 있다. 더 심도깊은 거동 분석의 결과들에 기초하여 의심스러운 거동들 또는 잠재적인 문제점들이 식별 및 정정될 수 없는 것으로 디바이스 프로세서가 결정하는 경우(즉, 결정 블록(708) = "아니오"), 상세화 레벨이 문제점을 식별하기에 충분할만큼 미세할 때까지 또는 추가적으로 상세하게 문제점이 식별될 수 없거나 어떠한 문제점도 존재하지 않는 것으로 결정될 때까지 프로세서는 블록들(710-714)의 동작들을 반복할 수 있다.
[0129]
더 심도깊은 거동 분석의 결과들에 기초하여 의심스러운 동작들 또는 잠재적인 문제점들이 식별되고 정정될 수 있다고 디바이스 프로세서가 결정하는 경우(즉, 결정 블록(708) = "예"), 블록(718)에서, 디바이스 프로세서는 문제점/거동을 정정하기 위한 동작들을 수행할 수 있고, 프로세서는 추가적인 동작들을 수행하기 위해 블록(702)으로 리턴할 수 있다.
[0130]
실시예에서, 방법(700)의 블록들(702-718)의 일부로서, 디바이스 프로세서는 제한된 및 대략적 관측들로부터 의심스러운 거동들을 식별하기 위해, 관측할 거동들을 더 상세히 동적으로 결정하기 위해, 그리고 관측들에 요구되는 세부사항의 정밀한 레벨을 동적으로 결정하기 위해, 시스템의 거동들의 실시간 거동 분석을 수행할 수 있다. 이것은 디바이스 프로세서가 디바이스 상의 대량의 프로세서, 메모리 또는 배터리 자원들의 사용을 요구함이 없이 문제점들이 발생하는 것을 효율적으로 식별하고 방지하게 한다.
[0131]
다양한 실시예들은 소프트웨어 애플리케이션들의 선택 그룹의 집합적 거동을 모니터링 및 분석하기 위해 (허가, 정책 또는 규칙-기반 접근법들에 비해) 거동 분석 및/또는 머신 학습 기술들을 사용함으로써 기존의 솔루션들에 비해 개선된다. 현대의 컴퓨팅 디바이스들은 고도로 구성가능하고 복잡한 시스템들이고, 소프트웨어 애플리케이션들이 담합하고 있는지 여부를 결정하기 위해 가장 중요한 팩터들은 각각의 디바이스에서 상이할 수 있기 때문에, 거동 분석 또는 머신 학습 기술들의 사용은 중요하다. 추가로, 디바이스 특징들/팩터들의 상이한 조합들은, 소프트웨어 애플리케이션들이 담합하고 있는지 여부를 그 디바이스가 결정하기 위해 각각의 디바이스에서 분석을 요구할 수 있다. 그러나, 모니터링 및 분석을 요구하는 특징들/팩터들의 정밀한 조합은 종종 단지, 액티비티 또는 액티비티들이 수행되는 특정 컴퓨팅 디바이스로부터 획득된 정보를 사용하여 그리고 액티비티/액티비티들이 진행중인 시간에 결정될 수 있다. 이러한 및 다른 원인들로, 기존의 솔루션들은, 거동이 진행중인 동안, 상당한 양의 컴퓨팅 디바이스의 프로세싱, 메모리 또는 전력 자원들을 소모함이 없이, 실시간으로 컴퓨팅 디바이스에서 복수의 소프트웨어 애플리케이션들의 집합적 거동 또는 이들 사이의 관계들을 모니터링, 검출 및 특성화하기에 적절하지 않다.
[0132]
도 2 내지 도 7을 참조하여 앞서 논의된 실시예를 포함하는 다양한 실시예들은 프로세서 실행가능 명령으로 구성된 다양한 컴퓨팅 디바이스들 상에서 구현될 수 있고, 그 예는 스마트폰 형태로 도 8에 예시된다. 스마트폰(800)은 내부 메모리(804), 디스플레이(812) 및 스피커(814)에 커플링된 프로세서(802)를 포함할 수 있다. 추가적으로, 스마트폰(800)은 프로세서(802)에 커플링된 셀룰러 전화 트랜시버(808) 및/또는 무선 데이터 링크에 접속될 수 있는 전자기 방사를 전송 및 수신하기 위한 안테나를 포함할 수 있다. 스마트폰(800)은 통상적으로 사용자 입력들을 수신하기 위한 메뉴 선택 버튼들 또는 로커(rocker) 스위치들(820)을 또한 포함한다.
[0133]
통상적인 스마트폰(800)은 또한 음향을 생성하기 위해 스피커에 제공되는 아날로그 신호들을 생성하기 위해, 마이크로폰으로부터 수신된 음향을 무선 송신에 적합한 데이터 패킷들로 디지털화하고 수신된 음향 데이터 패킷들을 디코딩하는 음향 인코딩/디코딩(CODEC) 회로(806)를 포함한다. 또한, 프로세서(802), 무선 트랜시버(808) 및 CODEC(806) 중 하나 이상은 디지털 신호 프로세서(DSP) 회로(별개로 도시되지 않음)를 포함할 수 있다.
[0134]
프로세서(802)는 아래에서 설명되는 다양한 실시예들의 동작들을 포함하는 다양한 기능들 및 동작들을 수행하기 위해, 프로세서 실행가능 명령들(애플리케이션들)에 의해 구성될 수 있는 임의의 프로그래밍가능 마이크로프로세서, 마이크로컴퓨터 또는 다중 프로세서 칩 또는 칩들일 수 있다. 일부 모바일 디바이스들에서, 무선 통신 기능들에 전용되는 하나의 프로세서 및 다른 애플리케이션들을 실행하는데 전용되는 하나의 프로세서와 같은 다수의 프로세서들(802)이 제공될 수 있다. 통상적으로, 소프트웨어 애플리케이션들은 액세스되고 프로세서(802)에 로딩되기 전에 내부 메모리(804)에 저장될 수 있다. 프로세서(802)는 애플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수 있다. 다양한 실시예들에서, 프로세서(802)는 디바이스 프로세서, 프로세싱 코어, 또는 SOC(예를 들어, 도 1에 예시된 예시적인 SOC(100))일 수 있다. 실시예에서, 스마트폰(800)은 SOC를 포함할 수 있고, 프로세서(802)는 SOC에 포함된 프로세서들 중 하나(예를 들어, 도 1에 예시된 프로세서들(102, 104, 106, 108, 110) 중 하나)일 수 있다.
[0135]
다양한 실시예들은, 분석 결과들을 생성하기 위해 사용자 입력 디바이스로부터 수신된 원시 데이터를 사용자 상호작용 이벤트 정보와 비교하기 위한 수단, 및 사용자 상호작용(UI) 이벤트가 컴퓨팅 디바이스의 사용자와 상관되는지 여부를 결정하기 위해 생성된 분석 결과들을 사용하기 위한 수단을 포함하는 컴퓨팅 디바이스를 더 포함할 수 있다. 일부 실시예들에서, 분석 결과들을 생성하기 위해 사용자 입력 디바이스로부터 수신된 원시 데이터를 사용자 상호작용 이벤트 정보와 비교하기 위한 수단은 디바이스 드라이버로부터 수신된 원시 데이터를 고레벨 운영 시스템으로부터 수신된 상호작용 정보와 비교하기 위한 수단을 포함할 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스는 UI 이벤트가 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 소프트웨어 애플리케이션의 액티비티를 비-양성으로 분류하기 위한 수단을 더 포함할 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스는 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하기 위한 수단, UI 이벤트가 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 액티비티에 대응하는 UI 이벤트가 존재하는지 여부를 평가하는 판정 노드를 포함하는 분류기 모델에, 생성된 거동 벡터를 적용하기 위한 수단, 및 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위해 분류기 모델에, 생성된 거동 벡터를 적용한 결과를 사용하기 위한 수단을 더 포함할 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스는 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하기 위한 수단, UI 이벤트가 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 액티비티에 대응하는 UI 이벤트가 존재하는지 여부를 테스트하는 판정 노드를 포함하지 않는 분류기 모델을 선택하기 위한 수단, 추가적인 분석 결과들을 생성하기 위해, 선택된 분류기 모델에 생성된 거동 벡터를 적용하기 위한 수단, 및 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위해, 생성된 추가적인 분석 결과들을 사용하기 위한 수단을 더 포함할 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스는 UI 이벤트가 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 견고한 분류기 모델들의 패밀리를 선택하기 위한 수단, 및 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위해, 견고한 분류기 모델들의 선택된 패밀리에, 복수의 거동 벡터들을 적용하기 위한 수단을 더 포함할 수 있다.
[0136]
본 출원에서 사용된 바와 같이, 용어들 "컴포넌트", "모듈" 등은 특정 동작들 또는 기능들을 수행하도록 구성되는 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 결합, 소프트웨어, 또는 실행중인 소프트웨어와 같은(그러나 이에 제한되는 것은 아닌) 컴퓨터-관련 엔티티를 포함하도록 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 오브젝트, 실행가능한 것, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수도 있지만, 이에 제한되는 것은 아니다. 예시의 방식으로, 컴퓨팅 디바이스 상에서 실행되는 애플리케이션 및 컴퓨팅 디바이스 둘 모두가 컴포넌트로 지칭될 수 있다. 하나 또는 이상의 컴포넌트들은 프로세스 및/또는 실행 스레드 내에 상주할 수 있고, 컴포넌트는 하나의 프로세서 또는 코어 상에서 로컬화될 수 있고 그리고/또는 2개 이상의 프로세서들 또는 코어들 사이에서 분산될 수 있다. 또한, 이러한 컴포넌트들은 다양한 명령들 및/또는 데이터 구조들이 저장된 다양한 비일시적 컴퓨터 판독가능 매체들로부터 실행될 수 있다. 컴포넌트들은 로컬 및/또는 원격 프로세스들, 함수 또는 절차 호출들, 전자 신호들, 데이터 패킷들, 메모리 판독/기록들 및 다른 공지된 네트워크, 컴퓨터, 프로세서 및/또는 프로세스 관련 통신 방법들을 통해 통신할 수 있다.
[0137]
다양한 실시예들의 동작들을 수행하기 위해 프로그래밍가능한 프로세서 상에서의 실행을 위한 컴퓨터 프로그램 코드 또는 "프로그램 코드"는 고레벨 프로그래밍 언어, 예를 들어, C, C++, C#, Smalltalk, Java, JavaScript, 비주얼 베이직, 구조화된 문의 언어(예를 들어, Transact-SQL), Perl로 또는 다양한 다른 프로그래밍 언어들로 기록될 수 있다. 본 출원에서 사용되는 바와 같이 컴퓨터 판독가능 저장 매체 상에 저장된 프로그램 코드 또는 프로그램들은 프로세서에 의해 이해가능한 포맷을 갖는 머신 언어 코드(예를 들어, 오브젝트 코드)를 지칭할 수 있다.
[0138]
시스템 커넬들을 운영하는 많은 모바일 컴퓨팅 디바이스들은 사용자 공간(비-특권화된 코드가 실행되는 경우) 및 커넬 공간(특권화된 코드가 실행되는 경우)으로 체계화된다. 이러한 분리는, 커넬 공간의 일부인 코드는 GPL(general public license) 허가되어야 하는 한편 사용자-공간에서 실행되는 코드는 GPL 허가되지 않을 수 있는 다른 GPL 환경들 및 Android®에서 특히 중요하다. 여기서 논의되는 다양한 소프트웨어 컴포넌트들/모듈들은 달리 명시적으로 언급되지 않는 한 커넬 공간 또는 사용자 공간에서 구현될 수 있음을 이해해야 한다.
[0139]
전술한 방법 설명들 및 프로세스 흐름 도면들은 단지 예시적인 예들로서 제공되며, 다양한 실시예들의 동작들이 제시된 순서로 수행되어야 함을 요구 또는 의미하도록 의도되지 않는다. 당업자에 의해 인식될 바와 같이, 전술한 실시예들의 동작들의 순서는 임의의 순서로 수행될 수 있다. "그 후, "그 다음", "다음으로" 등과 같은 단어들은 동작들의 순서를 제한하는 것으로 의도되지 않으며; 이러한 단어들은 단지 방법들의 설명을 통해 독자를 안내하기 위해 사용된다. 추가로, 예를 들어, 단수형 표현을 사용하여 엘리먼트들을 단수로 청구하기 위한 임의의 참조는 엘리먼트를 단수로 제한하는 것으로 해석하지 않아야 한다.
[0140]
본원에 개시된 실시예들과 관련하여 설명되는 다양한 예시적인 로직 블록들, 모듈들, 회로들, 및 알고리즘 동작들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합으로서 구현될 수 있다. 하드웨어와 소프트웨어의 이러한 상호 호환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 일반적으로 이들의 기능적 관점에서 설명되었다. 이러한 기능이 하드웨어로 구현되는지, 또는 소프트웨어로 구현되는지 여부는 특정 애플리케이션 및 전체 시스템에 대해 부과된 설계 제한들에 의존한다. 당업자들은 설명된 기능을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 이러한 구현 결정들이 본 발명의 범주를 벗어나는 것으로 해석되어서는 안 된다.
[0141]
본 명세서에서 개시된 실시예들과 관련하여 설명되는 다양한 예시적인 로직들, 로직 블록들, 모듈들, 및 회로들을 구현하기 위해 사용되는 하드웨어는 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 또는 다른 프로그래머블 논리 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들 또는 본 명세서에 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 범용 프로세서는 멀티프로세서일 수도 있지만, 대안으로 프로세서는 임의의 종래 프로세서, 제어기, 마이크로제어기 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들어 DSP 및 멀티프로세서의 조합, 복수의 멀티프로세서들, DSP 코어와 결합된 하나 이상의 멀티프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다. 대안적으로, 일부 단계들 또는 방법들은 주어진 기능에 특정된 회로에 의해 수행될 수 있다.
[0142]
하나 이상의 예시적인 실시예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되면, 기능들은 하나 이상의 프로세서 실행가능 명령들 또는 코드로서 비일시적 컴퓨터 판독가능 저장 매체 또는 비일시적 프로세서 판독가능 저장 매체 상에 저장될 수 있다. 본원에 개시된 방법 또는 알고리즘의 동작들은 비일시적 컴퓨터 판독가능 저장 매체 또는 프로세서 판독가능 저장 매체 상에 저장된 프로세서 실행가능 소프트웨어 명령의 형태로 저장될 수 있는 프로세서 실행가능 소프트웨어 모듈로 구현될 수 있다. 비일시적 컴퓨터 판독가능 또는 프로세서 판독가능 저장 매체는 컴퓨터 또는 프로세서에 의해 액세스될 수 있는 임의의 저장 매체일 수 있다. 제한이 아닌 예로써, 이러한 비일시적 컴퓨터 판독가능 또는 프로세서 판독가능 매체는 RAM, ROM, EEPROM, FLASH 메모리, CD-ROM, 또는 다른 광학 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 요구되는 프로그램 코드를 저장하기 위해 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 본 명세서에서 사용된 것과 같은 디스크(disk 및 disc)는 콤팩트 디스크(CD: compact disc), 레이저 디스크(laser disc), 광 디스크(optical disc), 디지털 다기능 디스크(DVD: digital versatile disc), 플로피 디스크(floppy disk) 및 블루레이 디스크(disc)를 포함하며, 여기서 디스크(disk)들은 보통 데이터를 자기적으로 재생하는 한편, 디스크(disc)들은 데이터를 레이저들에 의해 광학적으로 재생한다. 상기의 것들의 결합들이 또한 비일시적 컴퓨터 판독가능 및 프로세서 판독가능 매체의 범위 내에 포함된다. 추가적으로, 알고리즘 또는 방법의 동작들은, 컴퓨터 프로그램 물건에 통합될 수 있는 비일시적 프로세서 판독가능 매체 및/또는 컴퓨터 판독가능 매체 상에 명령들 및/또는 코드들 중 하나 또는 이들의 임의의 조합 또는 이들의 세트로서 상주할 수 있다.
[0143]
개시된 실시예들의 선행 설명은 임의의 당업자가 본 발명을 사용하거나 실시할 수 있게 하도록 제공된다. 이러한 실시예들에 대한 다양한 변형들이 해당 기술분야에서 통상의 지식을 가진 자들에게 쉽게 명백할 것이며, 본 명세서에 정의된 일반 원리들은 본 발명의 사상 또는 범위를 벗어나지 않으면서 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 본원에 제시된 실시예들로 한정되는 것으로 의도되는 것이 아니라, 하기 청구항들 및 본원에 개시된 원리들 및 신규한 특징들에 부합하는 가장 넓은 범위에 따르는 것이다.
Claims (28)
- 컴퓨팅 디바이스 상에서 동작하는 소프트웨어 애플리케이션의 액티비티를 분석하는 방법으로서,
컴퓨팅 디바이스의 센서로부터 원시 데이터를 수집하는 단계;
사용자 상호작용 이벤트 정보를 수신하는 단계;
분석 결과들을 생성하기 위해, 수신된 사용자 상호작용 이벤트 정보와 함께 수집된 원시 데이터를 분석하는 단계;
사용자 상호작용 이벤트를 검출하는 단계;
생성된 분석 결과들에 기초하여, 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되는지 여부를 결정하는 단계;
상기 생성된 분석 결과들에 기초하여, 상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관된다고 결정하는 것에 대한 응답으로 상기 검출된 사용자 상호작용 이벤트를 진정한 사용자 상호작용 이벤트로서 분류하는 단계;
상기 생성된 분석 결과들에 기초하여, 상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로 상기 검출된 사용자 상호작용 이벤트를 페이크(fake) 사용자 상호작용 이벤트로서 분류하는 단계; 및
상기 검출된 사용자 상호작용 이벤트의 분류에 기초하여 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하는 단계를 포함하는, 소프트웨어 애플리케이션의 액티비티를 분석하는 방법. - 제 1 항에 있어서,
상기 사용자 상호작용 이벤트 정보를 수신하는 단계는 상기 컴퓨팅 디바이스의 고레벨 운영 시스템으로부터 상기 사용자 상호작용 이벤트 정보를 수신하는 단계를 포함하는, 소프트웨어 애플리케이션의 액티비티를 분석하는 방법. - 제 1 항에 있어서,
상기 검출된 사용자 상호작용 이벤트의 분류에 기초하여 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하는 단계는,
상기 검출된 사용자 상호작용 이벤트가 상기 페이크 사용자 상호작용 이벤트로서 분류된다고 결정하는 것에 대한 응답으로, 상기 소프트웨어 애플리케이션의 액티비티를 비-양성으로서 분류하는 단계를 포함하는, 소프트웨어 애플리케이션의 액티비티를 분석하는 방법. - 제 1 항에 있어서,
상기 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하는 단계;
상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 상기 액티비티에 대응하는 사용자 상호작용 이벤트가 존재하는지 여부를 평가하는 판정 노드를 포함하는 분류기 모델에 상기 거동 벡터를 적용하는 단계; 및
상기 분류기 모델에 상기 거동 벡터를 적용한 결과에 기초하여, 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하는 단계를 더 포함하는, 소프트웨어 애플리케이션의 액티비티를 분석하는 방법. - 제 1 항에 있어서,
상기 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하는 단계;
상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 상기 액티비티에 대응하는 사용자 상호작용 이벤트가 존재하는지 여부를 테스트하는 판정 노드를 포함하지 않는 분류기 모델을 선택하는 단계;
추가적인 분석 결과들을 생성하기 위해, 선택된 분류기 모델에 상기 거동 벡터를 적용하는 단계; 및
상기 추가적인 분석 결과들에 기초하여, 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하는 단계를 더 포함하는, 소프트웨어 애플리케이션의 액티비티를 분석하는 방법. - 제 1 항에 있어서,
상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 견고한 분류기 모델들의 패밀리를 선택하는 단계; 및
상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위해, 견고한 분류기 모델들의 선택된 패밀리의 하나 이상의 분류기 모델들에 복수의 거동 벡터들을 적용하는 단계를 더 포함하는, 소프트웨어 애플리케이션의 액티비티를 분석하는 방법. - 제 1 항에 있어서,
제 1 센서로부터 수신된 원시 데이터가 제 2 센서로부터 수신된 원시 데이터와 일치하는지 여부를 결정하기 위해, 상기 컴퓨팅 디바이스의 제 1 센서로부터 수신된 원시 데이터를 상기 컴퓨팅 디바이스의 제 2 센서로부터 수신된 원시 데이터와 비교하는 단계를 더 포함하고, 수집된 원시 데이터 및 수신된 사용자 상호작용 이벤트 정보에 기초하여 분석 결과들을 생성하는 동작은, 상기 제 1 센서로부터 수신된 원시 데이터가 상기 제 2 센서로부터 수신된 원시 데이터와 일치한다고 결정하는 것에 대한 응답으로 수행되는, 소프트웨어 애플리케이션의 액티비티를 분석하는 방법. - 제 7 항에 있어서,
상기 제 1 센서로부터 수신된 원시 데이터를 상기 제 2 센서로부터 수신된 원시 데이터와 비교하는 단계는 거동 벡터들을 분류기 모델들에 적용한 결과들을 비교하는 단계를 포함하는, 소프트웨어 애플리케이션의 액티비티를 분석하는 방법. - 제 1 항에 있어서,
상기 컴퓨팅 디바이스의 센서로부터 원시 데이터를 수집하는 단계는 사용자 입력 센서로부터 원시 데이터를 수집하는 단계를 포함하고;
상기 사용자 상호작용 이벤트 정보를 수신하는 단계는 상기 사용자 입력 센서에 대한 드라이버로부터 데이터를 수신하는 단계를 포함하는, 소프트웨어 애플리케이션의 액티비티를 분석하는 방법. - 제 1 항에 있어서,
상기 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하는 단계;
상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 상기 컴퓨팅 디바이스와의 사용자 상호작용들에 관한 조건들을 평가하는 판정 노드를 포함하지 않는 분류기 모델에, 상기 거동 벡터를 적용하는 단계; 및
상기 분류기 모델에 상기 거동 벡터를 적용한 결과에 기초하여, 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하는 단계를 더 포함하는, 소프트웨어 애플리케이션의 액티비티를 분석하는 방법. - 컴퓨팅 디바이스로서,
컴퓨팅 디바이스의 센서로부터 원시 데이터를 수집하기 위한 수단;
사용자 상호작용 이벤트 정보를 수신하기 위한 수단;
분석 결과들을 생성하기 위해, 수신된 사용자 상호작용 이벤트 정보와 함께 수집된 원시 데이터를 분석하기 위한 수단;
사용자 상호작용 이벤트를 검출하기 위한 수단;
생성된 분석 결과들에 기초하여, 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되는지 여부를 결정하기 위한 수단;
상기 생성된 분석 결과들에 기초하여, 상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관된다고 결정하는 것에 대한 응답으로 상기 검출된 사용자 상호작용 이벤트를 진정한 사용자 상호작용 이벤트로서 분류하기 위한 수단;
상기 생성된 분석 결과들에 기초하여, 상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로 상기 검출된 사용자 상호작용 이벤트를 페이크 사용자 상호작용 이벤트로서 분류하기 위한 수단; 및
상기 검출된 사용자 상호작용 이벤트의 분류에 기초하여 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위한 수단을 포함하는, 컴퓨팅 디바이스. - 제 11 항에 있어서,
상기 사용자 상호작용 이벤트 정보를 수신하기 위한 수단은 고레벨 운영 시스템으로부터 상기 사용자 상호작용 이벤트 정보를 수신하기 위한 수단을 포함하는, 컴퓨팅 디바이스. - 제 11 항에 있어서,
상기 검출된 사용자 상호작용 이벤트의 분류에 기초하여 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위한 수단은, 상기 검출된 사용자 상호작용 이벤트가 상기 페이크 사용자 상호작용 이벤트로서 분류된다고 결정하는 것에 대한 응답으로, 상기 소프트웨어 애플리케이션의 액티비티를 비-양성으로서 분류하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스. - 제 11 항에 있어서,
상기 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하기 위한 수단;
상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 상기 액티비티에 대응하는 사용자 상호작용 이벤트가 존재하는지 여부를 평가하는 판정 노드를 포함하는 분류기 모델에 상기 거동 벡터를 적용하기 위한 수단; 및
상기 분류기 모델에 상기 거동 벡터를 적용한 결과에 기초하여, 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스. - 제 11 항에 있어서,
상기 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하기 위한 수단;
상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 상기 액티비티에 대응하는 사용자 상호작용 이벤트가 존재하는지 여부를 테스트하는 판정 노드를 포함하지 않는 분류기 모델을 선택하기 위한 수단;
추가적인 분석 결과들을 생성하기 위해, 선택된 분류기 모델에 상기 거동 벡터를 적용하기 위한 수단; 및
상기 추가적인 분석 결과들에 기초하여, 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스. - 제 11 항에 있어서,
상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 견고한 분류기 모델들의 패밀리를 선택하기 위한 수단; 및
상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위해, 견고한 분류기 모델들의 선택된 패밀리의 하나 이상의 분류기 모델들에 복수의 거동 벡터들을 적용하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스. - 컴퓨팅 디바이스로서,
컴퓨팅 디바이스의 센서로부터 원시 데이터를 수집하고;
사용자 상호작용 이벤트 정보를 수신하고;
분석 결과들을 생성하기 위해, 수신된 사용자 상호작용 이벤트 정보와 함께 수집된 원시 데이터를 분석하고;
사용자 상호작용 이벤트를 검출하고;
생성된 분석 결과들에 기초하여, 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되는지 여부를 결정하고;
상기 생성된 분석 결과들에 기초하여, 상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관된다고 결정하는 것에 대한 응답으로 상기 검출된 사용자 상호작용 이벤트를 진정한 사용자 상호작용 이벤트로서 분류하고;
상기 생성된 분석 결과들에 기초하여, 상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로 상기 검출된 사용자 상호작용 이벤트를 페이크 사용자 상호작용 이벤트로서 분류하고;
상기 검출된 사용자 상호작용 이벤트의 분류에 기초하여 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위한
프로세서 실행가능한 명령들로 구성된 프로세서를 포함하는, 컴퓨팅 디바이스. - 제 17 항에 있어서,
상기 프로세서는, 고레벨 운영 시스템으로부터 상기 사용자 상호작용 이벤트 정보를 수신함으로써 상기 사용자 상호작용 이벤트 정보를 수신하기 위한 프로세서 실행가능한 명령들로 구성되는, 컴퓨팅 디바이스. - 제 17 항에 있어서,
상기 프로세서는, 상기 검출된 사용자 상호작용 이벤트가 상기 페이크 사용자 상호작용 이벤트로서 분류된다고 결정하는 것에 대한 응답으로, 상기 소프트웨어 애플리케이션의 액티비티를 비-양성으로서 분류함으로써, 상기 검출된 사용자 상호작용 이벤트의 분류에 기초하여 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위한 프로세서 실행가능한 명령들로 구성되는, 컴퓨팅 디바이스. - 제 17 항에 있어서,
상기 프로세서는,
상기 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하고;
상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 상기 액티비티에 대응하는 사용자 상호작용 이벤트가 존재하는지 여부를 평가하는 판정 노드를 포함하는 분류기 모델에 상기 거동 벡터를 적용하고;
상기 분류기 모델에 상기 거동 벡터를 적용한 결과에 기초하여, 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위한
프로세서 실행가능한 명령들로 구성되는, 컴퓨팅 디바이스. - 제 17 항에 있어서,
상기 프로세서는,
상기 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하는 것;
상기 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 상기 액티비티에 대응하는 사용자 상호작용 이벤트가 존재하는지 여부를 테스트하는 판정 노드를 포함하지 않는 분류기 모델을 선택하는 것;
추가적인 분석 결과들을 생성하기 위해, 선택된 분류기 모델에 상기 거동 벡터를 적용하는 것; 및
상기 추가적인 분석 결과들에 기초하여, 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하는 것
을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스. - 제 17 항에 있어서,
상기 프로세서는,
상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 견고한 분류기 모델들의 패밀리를 선택하는 것; 및
상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위해, 견고한 분류기 모델들의 선택된 패밀리의 하나 이상의 분류기 모델들에 복수의 거동 벡터들을 적용하는 것
을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스. - 프로세서 실행가능 명령들이 저장된 비일시적 컴퓨팅 판독가능 저장 매체로서,
상기 프로세서 실행가능 명령들은 컴퓨팅 디바이스의 프로세서로 하여금,
컴퓨팅 디바이스의 센서로부터 원시 데이터를 수집하는 것;
사용자 상호작용 이벤트 정보를 수신하는 것;
분석 결과들을 생성하기 위해, 수신된 사용자 상호작용 이벤트 정보와 함께 수집된 원시 데이터를 분석하는 것;
사용자 상호작용 이벤트를 검출하는 것;
생성된 분석 결과들에 기초하여, 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되는지 여부를 결정하는 것;
상기 생성된 분석 결과들에 기초하여, 상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관된다고 결정하는 것에 대한 응답으로 상기 검출된 사용자 상호작용 이벤트를 진정한 사용자 상호작용 이벤트로서 분류하는 것;
상기 생성된 분석 결과들에 기초하여, 상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로 상기 검출된 사용자 상호작용 이벤트를 페이크 사용자 상호작용 이벤트로서 분류하는 것; 및
상기 검출된 사용자 상호작용 이벤트의 분류에 기초하여 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하는 것
을 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적 컴퓨팅 판독가능 저장 매체. - 제 23 항에 있어서,
저장된 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 사용자 상호작용 이벤트 정보를 수신하는 것이 고레벨 운영 시스템으로부터 상기 사용자 상호작용 이벤트 정보를 수신하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적 컴퓨팅 판독가능 저장 매체. - 제 23 항에 있어서,
저장된 상기 프로세서 실행가능 명령들은 프로세서로 하여금, 상기 검출된 사용자 상호작용 이벤트의 분류에 기초하여 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하는 것이, 상기 검출된 사용자 상호작용 이벤트가 상기 페이크 사용자 상호작용 이벤트로서 분류된다고 결정하는 것에 대한 응답으로, 상기 소프트웨어 애플리케이션의 액티비티를 비-양성으로서 분류하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적 컴퓨팅 판독가능 저장 매체. - 제 23 항에 있어서,
저장된 상기 프로세서 실행가능 명령들은 프로세서로 하여금,
상기 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하는 것;
상기 검출된 사용자 상호작용이 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 상기 액티비티에 대응하는 사용자 상호작용 이벤트가 존재하는지 여부를 평가하는 판정 노드를 포함하는 분류기 모델에 상기 거동 벡터를 적용하는 것; 및
상기 분류기 모델에 상기 거동 벡터를 적용한 결과에 기초하여, 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하는 것
을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적 컴퓨팅 판독가능 저장 매체. - 제 23 항에 있어서,
저장된 상기 프로세서 실행가능 명령들은 프로세서로 하여금,
상기 소프트웨어 애플리케이션의 액티비티를 특성화하는 거동 벡터를 생성하는 것;
상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 상기 액티비티에 대응하는 사용자 상호작용 이벤트가 존재하는지 여부를 테스트하는 판정 노드를 포함하지 않는 분류기 모델을 선택하는 것;
추가적인 분석 결과들을 생성하기 위해, 선택된 분류기 모델에 상기 거동 벡터를 적용하는 것; 및
상기 추가적인 분석 결과들에 기초하여, 상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하는 것
을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적 컴퓨팅 판독가능 저장 매체. - 제 23 항에 있어서,
저장된 상기 프로세서 실행가능 명령들은 프로세서로 하여금,
상기 검출된 사용자 상호작용 이벤트가 상기 컴퓨팅 디바이스의 사용자와 상관되지 않는다고 결정하는 것에 대한 응답으로, 견고한 분류기 모델들의 패밀리를 선택하는 것; 및
상기 소프트웨어 애플리케이션의 액티비티가 비-양성인지 여부를 결정하기 위해, 견고한 분류기 모델들의 선택된 패밀리의 하나 이상의 분류기 모델들에 복수의 거동 벡터들을 적용하는 것
을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 비일시적 컴퓨팅 판독가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/616,046 US9875357B2 (en) | 2015-02-06 | 2015-02-06 | Methods and systems for detecting fake user interactions with a mobile device for improved malware protection |
US14/616,046 | 2015-02-06 | ||
PCT/US2016/012851 WO2016126379A1 (en) | 2015-02-06 | 2016-01-11 | Methods and systems for detecting fake user interactions with a mobile device for improved malware protection |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170115532A true KR20170115532A (ko) | 2017-10-17 |
KR102474048B1 KR102474048B1 (ko) | 2022-12-02 |
Family
ID=55272660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177021585A KR102474048B1 (ko) | 2015-02-06 | 2016-01-11 | 개선된 멀웨어 보호를 위해 모바일 디바이스와의 페이크 사용자 상호작용들을 검출하기 위한 방법들 및 시스템들 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9875357B2 (ko) |
EP (1) | EP3254216A1 (ko) |
JP (1) | JP6721596B2 (ko) |
KR (1) | KR102474048B1 (ko) |
CN (1) | CN107209818B (ko) |
WO (1) | WO2016126379A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200003455A (ko) * | 2018-07-02 | 2020-01-10 | 서울여자대학교 산학협력단 | 악성 앱 탐지 애플리케이션 진단 장치 및 방법 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9773110B2 (en) | 2014-09-26 | 2017-09-26 | Intel Corporation | Cluster anomaly detection using function interposition |
US9749353B1 (en) | 2015-03-16 | 2017-08-29 | Wells Fargo Bank, N.A. | Predictive modeling for anti-malware solutions |
US9794265B1 (en) | 2015-03-16 | 2017-10-17 | Wells Fargo Bank, N.A. | Authentication and authorization without the use of supplicants |
US10650621B1 (en) | 2016-09-13 | 2020-05-12 | Iocurrents, Inc. | Interfacing with a vehicular controller area network |
US10237409B1 (en) * | 2017-02-13 | 2019-03-19 | West Corporation | Multimode service communication configuration for performing transactions |
US20180262016A1 (en) * | 2017-03-10 | 2018-09-13 | International Business Machines Corporation | Optimizing Operability of Mobile Devices based on Learned Usage Models |
US10999296B2 (en) | 2017-05-15 | 2021-05-04 | Forcepoint, LLC | Generating adaptive trust profiles using information derived from similarly situated organizations |
US10129269B1 (en) | 2017-05-15 | 2018-11-13 | Forcepoint, LLC | Managing blockchain access to user profile information |
US11632382B2 (en) | 2017-05-15 | 2023-04-18 | Forcepoint Llc | Anomaly detection using endpoint counters |
US10447718B2 (en) | 2017-05-15 | 2019-10-15 | Forcepoint Llc | User profile definition and management |
US11949700B2 (en) | 2017-05-15 | 2024-04-02 | Forcepoint Llc | Using content stored in an entity behavior catalog in combination with an entity risk score |
US10318729B2 (en) | 2017-07-26 | 2019-06-11 | Forcepoint, LLC | Privacy protection during insider threat monitoring |
US10999324B2 (en) | 2017-08-01 | 2021-05-04 | Forcepoint, LLC | Direct-connect web endpoint |
EP3462766B1 (en) * | 2017-09-29 | 2020-11-04 | Nokia Solutions and Networks Oy | Determining a behaviour of a wireless device |
US11558401B1 (en) | 2018-03-30 | 2023-01-17 | Fireeye Security Holdings Us Llc | Multi-vector malware detection data sharing system for improved detection |
US11212312B2 (en) | 2018-08-09 | 2021-12-28 | Microsoft Technology Licensing, Llc | Systems and methods for polluting phishing campaign responses |
US10601868B2 (en) * | 2018-08-09 | 2020-03-24 | Microsoft Technology Licensing, Llc | Enhanced techniques for generating and deploying dynamic false user accounts |
CN108983758B (zh) * | 2018-08-23 | 2020-03-24 | 深圳市鹏巨术信息技术有限公司 | 一种汽车诊断设备的软件防护方法、装置及终端 |
CN112528325B (zh) * | 2018-09-12 | 2022-08-19 | 江苏满运软件科技有限公司 | 一种数据信息的安全处理方法及系统 |
US10885186B2 (en) | 2018-11-13 | 2021-01-05 | Forcepoint, LLC | System and method for operating a protected endpoint device |
US11017430B2 (en) * | 2018-11-16 | 2021-05-25 | International Business Machines Corporation | Delivering advertisements based on user sentiment and learned behavior |
CN110209061B (zh) * | 2019-05-28 | 2022-08-09 | 九阳股份有限公司 | 一种智能控制系统中的事件上报处理方法及中控装置 |
CN110309654A (zh) * | 2019-06-28 | 2019-10-08 | 四川长虹电器股份有限公司 | 图片上传的安全检测方法及装置 |
CN111340112B (zh) * | 2020-02-26 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 分类方法、装置、服务器 |
CN113837210A (zh) * | 2020-06-23 | 2021-12-24 | 腾讯科技(深圳)有限公司 | 小程序分类方法、装置、设备及计算机可读存储介质 |
US12111895B2 (en) | 2020-07-09 | 2024-10-08 | Veracity, Inc. | Group-based authentication technique |
US20220198013A1 (en) * | 2020-12-22 | 2022-06-23 | International Business Machines Corporation | Detecting suspicious activation of an application in a computer device |
US11838275B2 (en) | 2021-03-12 | 2023-12-05 | Forcepoint Llc | Web endpoint device having automatic switching between proxied and non-proxied communication modes |
CN113117338B (zh) * | 2021-05-08 | 2022-11-15 | 上海益世界信息技术集团有限公司广州分公司 | 一种游戏作弊用户识别方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090199296A1 (en) * | 2008-02-04 | 2009-08-06 | Samsung Electronics Co., Ltd. | Detecting unauthorized use of computing devices based on behavioral patterns |
US20130247187A1 (en) * | 2012-03-19 | 2013-09-19 | Qualcomm Incorporated | Computing device to detect malware |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007146437A2 (en) | 2006-06-14 | 2007-12-21 | Agent Science Technologies, Inc. | User authentication system |
CA2789243A1 (en) | 2009-03-13 | 2010-09-16 | Rutgers, The State University Of New Jersey | Systems and methods for the detection of malware |
JP2011154410A (ja) * | 2010-01-25 | 2011-08-11 | Sony Corp | 解析サーバ及びデータ解析方法 |
US8776227B1 (en) | 2010-10-21 | 2014-07-08 | Symantec Corporation | User interface based malware detection |
US8570320B2 (en) * | 2011-01-31 | 2013-10-29 | Microsoft Corporation | Using a three-dimensional environment model in gameplay |
US9558677B2 (en) | 2011-04-08 | 2017-01-31 | Wombat Security Technologies, Inc. | Mock attack cybersecurity training system and methods |
CN103797492B (zh) * | 2011-07-27 | 2016-09-21 | 希捷科技有限公司 | 用于安全存储劫持保护的方法和装置 |
US20130304677A1 (en) | 2012-05-14 | 2013-11-14 | Qualcomm Incorporated | Architecture for Client-Cloud Behavior Analyzer |
US8413236B1 (en) * | 2012-06-04 | 2013-04-02 | Robert Hansen | Clickjacking protection |
US20140150100A1 (en) | 2012-08-15 | 2014-05-29 | Qualcomm Incorporated | Adaptive Observation of Driver and Hardware Level Behavioral Features on a Mobile Device |
RU2530210C2 (ru) | 2012-12-25 | 2014-10-10 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ выявления вредоносных программ, препятствующих штатному взаимодействию пользователя с интерфейсом операционной системы |
US9686023B2 (en) * | 2013-01-02 | 2017-06-20 | Qualcomm Incorporated | Methods and systems of dynamically generating and using device-specific and device-state-specific classifier models for the efficient classification of mobile device behaviors |
US9378467B1 (en) * | 2015-01-14 | 2016-06-28 | Microsoft Technology Licensing, Llc | User interaction pattern extraction for device personalization |
-
2015
- 2015-02-06 US US14/616,046 patent/US9875357B2/en active Active
-
2016
- 2016-01-11 JP JP2017540116A patent/JP6721596B2/ja active Active
- 2016-01-11 KR KR1020177021585A patent/KR102474048B1/ko active IP Right Grant
- 2016-01-11 EP EP16702253.2A patent/EP3254216A1/en not_active Withdrawn
- 2016-01-11 WO PCT/US2016/012851 patent/WO2016126379A1/en active Application Filing
- 2016-01-11 CN CN201680006328.1A patent/CN107209818B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090199296A1 (en) * | 2008-02-04 | 2009-08-06 | Samsung Electronics Co., Ltd. | Detecting unauthorized use of computing devices based on behavioral patterns |
US20130247187A1 (en) * | 2012-03-19 | 2013-09-19 | Qualcomm Incorporated | Computing device to detect malware |
Non-Patent Citations (1)
Title |
---|
Liang Xie et al., "pBMDS: A Behavior-based Malware Detection System for Cellphone Devices", Proceedings of the Third ACM Conference on Wireless Network Security, pp. 37-48(2010.03.)* * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200003455A (ko) * | 2018-07-02 | 2020-01-10 | 서울여자대학교 산학협력단 | 악성 앱 탐지 애플리케이션 진단 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
JP2018510403A (ja) | 2018-04-12 |
US9875357B2 (en) | 2018-01-23 |
EP3254216A1 (en) | 2017-12-13 |
WO2016126379A1 (en) | 2016-08-11 |
CN107209818B (zh) | 2020-09-29 |
JP6721596B2 (ja) | 2020-07-15 |
US20160232352A1 (en) | 2016-08-11 |
KR102474048B1 (ko) | 2022-12-02 |
CN107209818A (zh) | 2017-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102474048B1 (ko) | 개선된 멀웨어 보호를 위해 모바일 디바이스와의 페이크 사용자 상호작용들을 검출하기 위한 방법들 및 시스템들 | |
US9703962B2 (en) | Methods and systems for behavioral analysis of mobile device behaviors based on user persona information | |
US9578049B2 (en) | Methods and systems for using causal analysis for boosted decision stumps to identify and respond to non-benign behaviors | |
JP6650439B2 (ja) | モバイルデバイス挙動のアグリゲートマルチアプリケーション挙動分析のための方法およびシステム | |
KR101840156B1 (ko) | 바이탈 애플리케이션들의 타겟화된 보호를 위해 애플리케이션-특정 모델들을 생성하는 방법들 및 시스템들 | |
US9910984B2 (en) | Methods and systems for on-device high-granularity classification of device behaviors using multi-label models | |
US10104107B2 (en) | Methods and systems for behavior-specific actuation for real-time whitelisting | |
JP6345271B2 (ja) | モバイルデバイスにおいて挙動分析動作を実行することによってアプリケーション状態を推論するための方法およびシステム | |
US20170024660A1 (en) | Methods and Systems for Using an Expectation-Maximization (EM) Machine Learning Framework for Behavior-Based Analysis of Device Behaviors | |
US9147072B2 (en) | Method and system for performing behavioral analysis operations in a mobile device based on application state | |
US20160379136A1 (en) | Methods and Systems for Automatic Extraction of Behavioral Features from Mobile Applications | |
US20180039779A1 (en) | Predictive Behavioral Analysis for Malware Detection | |
JP2018514848A (ja) | クラウド対クライアント挙動の差異を通じてマルウェアを特定するための方法およびシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |