KR20180006380A - 실시간 화이트리스팅을 위한 거동-특정의 엑츄에이션을 위한 방법들 및 시스템들 - Google Patents
실시간 화이트리스팅을 위한 거동-특정의 엑츄에이션을 위한 방법들 및 시스템들 Download PDFInfo
- Publication number
- KR20180006380A KR20180006380A KR1020177032262A KR20177032262A KR20180006380A KR 20180006380 A KR20180006380 A KR 20180006380A KR 1020177032262 A KR1020177032262 A KR 1020177032262A KR 20177032262 A KR20177032262 A KR 20177032262A KR 20180006380 A KR20180006380 A KR 20180006380A
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- monitored activity
- behavior
- software application
- computing device
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1425—Traffic logging, e.g. anomaly detection
-
- 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/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/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G06N99/005—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/12—Detection or prevention of fraud
- H04W12/128—Anti-malware arrangements, e.g. protection against SMS fraud or mobile malware
-
- 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/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
다양한 실시형태들은 컴퓨팅 디바이스에서의 디바이스 거동들을 평가하여 특정의 거동들의 화이트리스팅을 가능하게 하는 방법들을 포함한다. 다양한 실시형태들은 컴퓨팅 디바이스 상에서 동작하는 소프트웨어 애플리케이션의 활동들을 모니터링하는 것, 및 소프트웨어 애플리케이션의 제 1 모니터링된 활동을 특징화하는 거동 벡터 정보 구조를 발생시키는 것을 포함할 수도 있다. 거동 벡터 정보 구조는 분석 결과들을 발생시키기 위해 머신 학습 분류자 모델에 적용될 수도 있다. 분석 결과들은 소프트웨어 애플리케이션의 제 1 모니터링된 활동을 호의적인 것, 의심스러운 것, 및 비-호의적인 것 중 하나로서 분류하기 위해 사용될 수도 있다. 소프트웨어 애플리케이션의 제 1 모니터링된 활동을 의심스러운 것 또는 비-호의적인 것으로서 분류하는 것에 응답하여 사용자가 소프트웨어 애플리케이션을 화이트리스트할지 여부를 선택하도록 요청하는 프롬프트가 사용자에게 디스플레이될 수도 있다. 제 1 모니터링된 활동은 사용자 입력을 수신하는 것에 응답하여 디바이스 거동들의 화이트리스트에 추가될 수도 있다.
Description
관련 출원들
본 출원은 "Methods and Systems for Behavior-Specific Actuation for Real-Time Whitelisting" 란 발명의 명칭으로 2015년 5월 11일에 출원된 미국 가특허 출원번호 제 62/159,433호에 대해 우선권의 이익을 주장하며, 이의 전체 내용들이 본원에 참고로 포함된다.
셀룰러 및 무선 통신 기술들은 지난 수년 간 폭발적인 성장을 보여왔다. 이러한 성장은 더 나은 통신들 및 하드웨어, 더 큰 네트워크들, 및 더 신뢰성있는 프로토콜들에 의해 자극받아 왔다. 결과적으로, 무선 서비스 제공자들은 지금 그들의 고객들에게 전례 없는 정보, 리소스들, 및 통신들에의 액세스의 레벨들을 제공할 수 있다. 이들 향상들에 보조를 맞추기 위해, 소비자 전자 디바이스들 (예컨대, 셀룰러폰들, 시계들, 헤드폰들, 원격 컨트롤들, 등) 은 어느 때보다 더 강력하고 복잡해졌으며, 지금은 그들의 디바이스들 상에서 복잡하고 강력한 소프트웨어 애플리케이션들을 실행하는 것을 가능하게 하는 강력한 프로세서들, 큰 메모리들, 및 다른 리소스들을 일반적으로 포함하고 있다. 이들 디바이스들은 또한 그들의 사용자들로 하여금 애플리케이션 다운로드 서비스들 (예컨대, 애플® 앱 스토어, 윈도우즈® 스토어, 구글® 플레이, 등) 또는 인터넷으로부터 다양한 소프트웨어 애플리케이션들을 다운로드하여 실행가능하게 한다.
이들 및 다른 향상들로 인해, 점점 더 많은 수의 모바일 및 무선 디바이스 사용자들이 지금은 그들의 디바이스들을 이용하여 민감한 정보 (예컨대, 신용 카드 정보, 연락처들, 등) 를 저장하거나 및/또는 보안이 중요한 태스크들을 수행한다. 예를 들어, 모바일 디바이스 사용자들은 상품들을 구매하고, 민감한 통신들을 전송하고 수신하고, 비용을 지불하고, 은행 계정들을 관리하고, 그리고 다른 민감한 트랜잭션들을 행하기 위해 빈번하게 그들의 디바이스들을 이용한다. 이들 경향들로 인해, 모바일 디바이스들은 악성 소프트웨어 및 사이버-공격들에 대한 다음 최전선이 빠르게 되고 있다. 따라서, 모바일 및 무선 디바이스들과 같은, 리소스-속박된 컴퓨팅 디바이스들에서 악성 소프트웨어 및 다른 비-호의적인 디바이스 거동들을 더 잘 식별하여 반응하는 새롭고 향상된 보안 솔루션들이 소비자들에게 유익할 것이다.
다양한 실시형태들은 컴퓨팅 디바이스에서의 디바이스 거동들을 평가하여 특정의 거동들의 화이트리스팅을 가능하게 하는 방법들을 포함한다. 다양한 실시형태들은 컴퓨팅 디바이스 상에서 동작하는 소프트웨어 애플리케이션의 활동들을 모니터링하는 것, 및 소프트웨어 애플리케이션의 제 1 모니터링된 활동을 특징화하는 거동 벡터 정보 구조를 발생시키는 것을 포함할 수도 있다. 거동 벡터 정보 구조는 분석 결과들을 발생시키기 위해 머신 학습 분류자 모델에 적용될 수도 있다. 분석 결과들은 소프트웨어 애플리케이션의 제 1 모니터링된 활동을 호의적인 것 (benign), 의심스러운 것, 및 비-호의적인 것 중 하나로서 분류하기 위해 사용될 수도 있다. 분류는 소프트웨어 애플리케이션의 제 1 모니터링된 활동을 의심스러운 것 또는 비-호의적인 것으로서 분류하는 것에 응답하여, 소프트웨어 애플리케이션을, 화이트리스트할지 여부를 사용자가 선택하도록 요청하는 프롬프트와 함께, 디스플레이될 수도 있다. 프롬프트를 디스플레이하는 것에 응답하여 사용자 입력이 수신될 수도 있으며, 사용자 입력을 수신하는 것에 응답하여 제 1 모니터링된 활동이 화이트리스트에 추가될 수도 있다. 일부 실시형태들에서, 사용자 입력을 수신하는 것에 응답하여 제 1 모니터링된 활동을 화이트리스트에 추가하는 것은 소프트웨어 애플리케이션과 연관하여, 제 1 모니터링된 활동을 화이트리스트 데이터베이스에 저장하는 것을 포함할 수도 있다.
일부 실시형태들에서, 본 방법은 멀티-라벨 분류 또는 메타-분류 기법들을 이용하여 제 1 모니터링된 활동을 하나 이상의 하위-카테고리들로 분류하는 단계를 더 포함할 수도 있다. 일부 구현예들에서, 본 방법은 화이트리스트에 추가된 활동을 모니터링하는 것을 중지하는 단계를 더 포함할 수도 있다.
일부 실시형태들에서, 본 방법은, 계속해서, 소프트웨어 애플리케이션의 활동들을 모니터링하고, 모니터링된 활동들에 적어도 부분적으로 기초하여 제 2 거동 벡터 정보 구조를 발생시키는 단계를 더 포함할 수도 있다. 제 2 거동 벡터 정보 구조는 추가적인 분석 결과들을 발생시키기 위해 제 2 머신 학습 분류자 모델에 적용될 수도 있다. 추가적인 분석 결과들은, 제 2 모니터링된 활동을 호의적인 것, 의심스러운 것 및 비-호의적인 것 중 하나로서 분류하고 제 2 모니터링된 활동이 제 1 모니터링된 활동과 동일한 하위-카테고리에 하위-분류되는지 여부를 결정하기 위해, 사용될 수도 있다. 제 2 모니터링된 활동이 제 1 모니터링된 활동과 동일한 하위-카테고리에 하위-분류되지 않는다고 결정하는 것에 응답하여 소프트웨어 애플리케이션을 화이트리스트할지 여부를 선택하도록 사용자에게 요청하는 추가적인 프롬프트가 디스플레이될 수도 있다. 일부 실시형태들에서, 본 방법은 추가적인 프롬프트를 디스플레이하는 것에 응답하여 추가적인 사용자 입력을 수신하는 단계를 더 포함할 수도 있다. 일부 실시형태들에서, 추가적인 사용자 입력을 수신하는 것에 응답하여, 본 방법은 화이트리스트로부터 제 1 모니터링된 활동을 제거하고 소프트웨어 애플리케이션을 종료시키거나 및/또는 제 2 모니터링된 활동을 화이트리스트에 추가하는 단계를 포함할 수도 있다.
일부 실시형태들은 제 1 모니터링된 활동의 상대적인 중요도를 결정하는 단계를 더 포함할 수도 있으며, 상대적인 중요도는 거동 벡터 정보 구조에 의해 특징화된다. 일부 실시형태들에서, 제 1 모니터링된 활동의 상대적인 중요도를 식별하는 정보가 소프트웨어 애플리케이션을 화이트리스트할지 여부를 선택하도록 사용자에게 요청하는 프롬프트에 포함될 수도 있다. 일부 실시형태들은 소프트웨어 애플리케이션의 활동들 및 결정된 제 1 모니터링된 활동의 상대적인 중요도를 모니터링하고 분석하는데 사용되는 프로세싱, 메모리, 및/또는 에너지 리소스들 사이를 균형잡는 단계를 더 포함할 수도 있다. 일부 실시형태들에서, 균형잡는 단계는 결정된 제 1 모니터링된 활동의 상대적인 중요도에 적어도 부분적으로 기초하여 엑츄에이션 동작들을 선택하는 단계를 포함할 수도 있다. 일부 실시형태들에서, 엑츄에이션 동작들을 선택하는 단계는 거동의 하위-분류들에 적어도 부분적으로 기초하여 강건한 (robust) 또는 경량의 (lightweight) 분석 동작들을 수행할지 여부를 결정하는 단계를 포함할 수도 있다.
추가 실시형태들은 위에서 설명된 방법들의 동작들을 수행하는 프로세서-실행가능한 명령들로 구성된 메모리, 디스플레이, 및 프로세서를 가지는 컴퓨팅 디바이스를 포함한다. 추가 실시형태들은 컴퓨팅 디바이스로 하여금, 위에서 설명된 방법들의 동작들을 수행시키도록 구성된 프로세서-실행가능한 명령들이 안에 저장된 비일시성 프로세서-판독가능 매체를 포함한다. 추가 실시형태들은 또한 위에서 설명된 방법들의 기능들을 수행하는 수단을 가지는 컴퓨팅 디바이스를 포함한다.
본원에 포함되어 본 명세서의 부분을 구성하는, 첨부 도면들은, 청구범위의 예시적인 실시형태들을 예시하며, 위에서 주어진 일반적인 설명 및 아래에 주어지는 상세한 설명과 함께, 청구범위의 특징들을 설명하는 것을 돕는다.
도 1 은 본 개시물의 다양한 실시형태들에 따른, 멀티-라벨 분류 또는 메타-분류 기법들을 이용하여 호의적인, 의심스러운, 및 비-호의적인 거동들을 카테고리들, 하위-카테고리들, 그룹들, 또는 하위-그룹들로 분류하도록 구성된 컴퓨팅 디바이스에 포함될 수도 있는 예시적인 시스템 온 칩의 컴포넌트들을 예시하는 블록도이다.
도 2a 는 본 개시물의 다양한 실시형태들에 따른 거동들을 분류하고 하위-분류하도록 구성된 모바일 디바이스에서의 예시적인 논리적 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
도 2b 는 본 개시물의 일 실시형태에 따른, 다양한 거동들을 선택적으로 화이트리스트하는 방법을 예시하는 프로세스 흐름도이다.
도 3a 는 본 개시물의 일 실시형태에 따른, 전체 분류자 모델에 포함된 특징들 및 데이터 지점들의 서브세트를 포함하는 린 (lean) 분류자 모델을 발생시키는 방법을 예시하는 프로세스 흐름도이다.
도 3b 는 본 개시물의 다른 실시형태에 따른, 컴퓨팅 디바이스에서 린 분류자 모델을 로컬로 발생시키는 다른 방법을 예시하는 프로세스 흐름도이다.
도 3c 는 본 개시물의 일 실시형태에 따른, 로컬로 발생된 린 분류자 모델을 이용하여 컴퓨팅 디바이스의 거동을 분류하는 방법을 예시하는 프로세스 흐름도이다.
도 3d 는 컴퓨팅 디바이스에서 린 분류자 모델을 발생시키고 이용하는 또 다른 방법을 예시하는 프로세스 흐름도이다.
도 4a 는 보다 집중된 및 린 분류자 모델들을 발생시킬 때에 컴퓨팅 디바이스에 의한 사용에 적합한 부스트된 결정 스텀프들을 포함하는 전체 분류자 모델을 발생시키는 방법을 예시하는 프로세스 흐름도이다.
도 4b 는 본 개시물의 다양한 실시형태들에 따른, 부스트된 결정 스텀프 분류자를 발생시키기에 적합한 예시적인 방법을 예시하는 프로세스 흐름도이다.
도 5 는 본 개시물의 일 실시형태에 따른, 거동들을 분류하고 하위-분류하는 방법을 예시하는 프로세스 흐름도이다.
도 6 은 본 개시물의 일 실시형태에 따른, 적응적 관측들을 수행하는 방법을 예시하는 프로세스 흐름도이다.
도 7 은 본 개시물의 일 실시형태에서의 사용에 적합한 모바일 디바이스의 컴포넌트 블록도이다.
도 1 은 본 개시물의 다양한 실시형태들에 따른, 멀티-라벨 분류 또는 메타-분류 기법들을 이용하여 호의적인, 의심스러운, 및 비-호의적인 거동들을 카테고리들, 하위-카테고리들, 그룹들, 또는 하위-그룹들로 분류하도록 구성된 컴퓨팅 디바이스에 포함될 수도 있는 예시적인 시스템 온 칩의 컴포넌트들을 예시하는 블록도이다.
도 2a 는 본 개시물의 다양한 실시형태들에 따른 거동들을 분류하고 하위-분류하도록 구성된 모바일 디바이스에서의 예시적인 논리적 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
도 2b 는 본 개시물의 일 실시형태에 따른, 다양한 거동들을 선택적으로 화이트리스트하는 방법을 예시하는 프로세스 흐름도이다.
도 3a 는 본 개시물의 일 실시형태에 따른, 전체 분류자 모델에 포함된 특징들 및 데이터 지점들의 서브세트를 포함하는 린 (lean) 분류자 모델을 발생시키는 방법을 예시하는 프로세스 흐름도이다.
도 3b 는 본 개시물의 다른 실시형태에 따른, 컴퓨팅 디바이스에서 린 분류자 모델을 로컬로 발생시키는 다른 방법을 예시하는 프로세스 흐름도이다.
도 3c 는 본 개시물의 일 실시형태에 따른, 로컬로 발생된 린 분류자 모델을 이용하여 컴퓨팅 디바이스의 거동을 분류하는 방법을 예시하는 프로세스 흐름도이다.
도 3d 는 컴퓨팅 디바이스에서 린 분류자 모델을 발생시키고 이용하는 또 다른 방법을 예시하는 프로세스 흐름도이다.
도 4a 는 보다 집중된 및 린 분류자 모델들을 발생시킬 때에 컴퓨팅 디바이스에 의한 사용에 적합한 부스트된 결정 스텀프들을 포함하는 전체 분류자 모델을 발생시키는 방법을 예시하는 프로세스 흐름도이다.
도 4b 는 본 개시물의 다양한 실시형태들에 따른, 부스트된 결정 스텀프 분류자를 발생시키기에 적합한 예시적인 방법을 예시하는 프로세스 흐름도이다.
도 5 는 본 개시물의 일 실시형태에 따른, 거동들을 분류하고 하위-분류하는 방법을 예시하는 프로세스 흐름도이다.
도 6 은 본 개시물의 일 실시형태에 따른, 적응적 관측들을 수행하는 방법을 예시하는 프로세스 흐름도이다.
도 7 은 본 개시물의 일 실시형태에서의 사용에 적합한 모바일 디바이스의 컴포넌트 블록도이다.
다양한 실시형태들이 첨부 도면들을 참조하여 자세히 설명된다. 가능한 경우에는 언제나, 동일한 또는 유사한 부재들을 지칭하기 위해서 동일한 참조 번호들이 도면들 전반에 걸쳐서 사용된다. 특정의 예들 및 구현예들에 대한 참조들은 예시적인 목적들을 위한 것이며, 청구항들의 범위를 한정하려고 의도되지 않는다.
개관에서, 본 개시물의 다양한 실시형태들은 시간 경과에 따라 컴퓨팅 디바이스의 성능, 전력 이용 레벨들, 네트워크 사용 레벨들, 보안 및/또는 프라이버시를 종종 열화시키는 조건들 및 거동들을 효율적으로 식별하고, 분류하고, 모델링하고, 방지하고, 및/또는 정정하는 방법들을 구현하도록 구성된 방법들, 및 컴퓨팅 디바이스들을 포함한다. 컴퓨팅 디바이스에는 거동-기반 및 머신 학습 기법들을 이용하여 디바이스 거동들을 다양한 카테고리들에, 예를 들어, 호의적인 것, 의심스러운 것, 또는 비-호의적인 것으로서 효율적으로 분류하도록 구성된 거동 모니터링 및 분석 시스템이 탑재된다. 컴퓨팅 디바이스는 멀티-라벨 분류 또는 메타-분류 기법들을 이용하여 거동들의 넓은 카테고리들 (즉, 호의적인 것, 의심스러운 것 또는 비-호의적인 것) 을 추가적인 카테고리들, 하위-카테고리들, 그룹들 또는 하위-그룹들로 추가로 분류하도록 (예컨대, 하위-분류하거나, 카테고리화하거나, 라벨링하거나, 등등을 하도록) 더 구성될 수도 있다. 컴퓨팅 디바이스는 그 거동의 하위-분류들에 적어도 부분적으로 기초하여 (예컨대, 거동과 연관되는 카테고리들, 그룹들 또는 라벨들에 적어도 부분적으로 기초하여) 특정의 거동의 상대적인 중요도 (예컨대, 소프트웨어 애플리케이션 또는 거동이 디바이스의 적합한 기능작용, 등에 대해 미치는 위험 또는 위협의 심각도) 를 결정하고, 거동이 의심스러운 것 (예컨대, 그것이 애드웨어이다, 등) 으로 결정된 이유들 및/또는 그의 상대적인 중요도를 식별하는 프롬프트를 디스플레이하고, 그리고 사용자에게 검출된 거동과 연관되는 애플리케이션을 화이트리스트할지 여부를 선택하도록 요청할 수도 있다.
넓은 카테고리들을 하위-분류하는 것은, 컴퓨팅 디바이스로 하여금 사용자에게 특정의 거동에 관한 더 유용한 또는 의미 있는 정보를 제시가능하게 하여, 디바이스가 그 거동을 분석하고 반응하는 방법을 사용자로 하여금 더욱 제어가능하게 한다. 예를 들어, 애드웨어 프로그램이 사용자가 플레이하길 즐기는 게임에 포함되면, 애드웨어 프로그램이 검출될 때 게임을 자동적으로 종료시키는 대신, 시스템은 애드웨어에 관한 정보를 사용자에게 제시하여, 사용자로 하여금 게임을 플레이하는 이점들이 그의 부정적인 특성들 (예컨대, 다수의 광고들의 디스플레이, 등) 보다 중요한지 여부를 결정가능하게 할 수도 있다. 사용자가 게임을 계속하기로 결정하면, 시스템은 사용자가 그 동안 애드웨어를 제시하는 거동을 화이트리스트하도록 할 수도 있다.
본원에서 사용될 때, 용어 "화이트리스트하는 것" 은 의심스러운 또는 비-호의적인 거동으로 평가되는 소프트웨어 애플리케이션에 의해 나타나는 거동이 애플리케이션이 디바이스 상에서 계속 동작할 수 있도록 "화이트 리스트" 또는 "화이트리스트 데이터베이스" 에 추가되는 프로세스를 지칭한다.
"화이트리스트들" 을 이용하는 종래의 솔루션들은 일반적으로 전체 소프트웨어 애플리케이션을 화이트 리스트에 추가한다 (즉, 전체 애플리케이션을 화이트리스트한다). 일단 화이트리스트되면, 디바이스는 소프트웨어 애플리케이션들의 추가적인 모니터링 또는 분석을 중지할 것이며, 프롬프트들을 디스플레이하는 것을 중지하거나 또는 아니면 사용자에게 화이트리스트된 소프트웨어 애플리케이션들과 연관된 의심스러운 또는 비-호의적인 활동들을 통지할 것이다. 전체 애플리케이션을 화이트리스트하는 것은 악성 소프트웨어 및 다른 비-호의적인 소프트웨어 애플리케이션들이 거동-기반의 보안 시스템에 의한 검출을 (의도적으로 또는 부주의로) 우회가능하게 할 수도 있다. 예를 들어, 악성 소프트웨어 애플리케이션은 거동-기반의 시스템이 낮은 위험 또는 비-호의적인 거동으로서 분류할, 또는 사용자가 허용할 가능성이 있는 (예컨대, 광고들을 디스플레이하거나, 국제 모바일 장비 식별 (IMEI) 번호를 원격 서버로 전송하거나, 등등을 행하는) 동작들을 먼저 수행할 수도 있다. 악성 소프트웨어는 사용자가 금융 정보를 뱅킹 (banking) 애플리케이션으로부터 서버로 전송하는 것 또는 사용자의 인식 또는 동의 없이 디바이스의 연락처 리스트에 액세스하는 것과 같은, 더 심각한, 중대한 또는 악의적인 동작들을 수행하기 전에 애플리케이션을 화이트리스트시키기를 대기할 수도 있다. 애플리케이션이 화이트리스트되었기 때문에, 사용자는 비-호의적인 거동들에 관한 추가적인 통지들을 수신하지 않을 것이다.
본 개시물에 따르면, 컴퓨팅 디바이스는 소프트웨어 애플리케이션의 개개의 거동들을 화이트리스트하도록 구성될 수도 있다. 일부 실시형태들에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스 상에서 동작하는 소프트웨어 애플리케이션의 활동들을 모니터링하여 거동 정보를 수집하도록 구성될 수도 있다. 컴퓨팅 디바이스는 수집된 거동 정보를 이용하여 소프트웨어 애플리케이션의 거동을 특징화하는 거동 벡터 정보 구조를 발생시킬 수도 있다. 컴퓨팅 디바이스는 거동 벡터 정보 구조를 머신 학습 분류자 모델에 적용하여 분석 결과들을 발생시킬 수도 있다. 컴퓨팅 디바이스는 분석 결과들을 이용하여, 거동 벡터 정보 구조 (또는, 거동 벡터 정보 구조에 의해 특징화되는 활동들/거동) 를 호의적인 것, 의심스러운 것 또는 비-호의적인 것과 같은 카테고리들로 분류할 수도 있다. 컴퓨팅 디바이스는 또한 분석 결과들을 이용하여, 거동 벡터 정보 구조를 하나 이상의 카테고리들 (예컨대, 게임, 애드웨어, IMEI 번호들을 서버들로 전송하는 애플리케이션들, 등) 로 하위-분류할 수도 있다. 컴퓨팅 디바이스는 거동의 분류 및 하위-분류들을 디스플레이하는 프롬프트 (따라서, 거동이 의심스러운 것 또는 비-호의적인 것으로 결정된 이유들) 를 디스플레이/렌더링하고, 거동 또는 소프트웨어 애플리케이션을 화이트리스트할지 여부 (즉, 그 애플리케이션을 이용하는 이점들이 그의 부정적인 특성들보다 중요한지 여부) 를 선택하도록 사용자에게 요청할 수도 있다. 거동이 화이트리스트되어야 한다는 것을 표시하는 사용자 입력을 수신하는 것에 응답하여, 컴퓨팅 디바이스는 (예컨대, 소프트웨어 애플리케이션과 연관하여 거동 벡터 정보 구조 및 분석/분류 결과들을 화이트리스트 데이터베이스에 저장함으로써) 거동을 화이트 리스트에 추가할 수도 있다. 거동이 화이트리스트된 상태에서, 컴퓨팅 디바이스는 프롬프트들을 디스플레이하는 것을 중지하거나 또는 아니면 사용자에게 그 거동의 다른 발생들을 통지할 수도 있다. 일부 구현예들에서, 컴퓨팅 디바이스는 또한 그 소프트웨어 애플리케이션의 다른 의심스러운 또는 비-호의적인 거동들 및/또는 화이트리스트된 거동과 동일한 하위-카테고리들에 분류되는 다른 거동들을 디스플레이하는 것을 중지할 수도 있다. 애플리케이션의 거동 또는 모니터링된 활동을 화이트리스트함으로써, 거동 분석 시스템은 소프트웨어 애플리케이션에 대해 동일한 거동 또는 활동을 더 이상 모니터링하거나 또는 분석할 필요가 없을 것이다. 이것은 특히 화이트리스트된 거동이 로케이션 트래킹과 같은, 일반적인 경우, 시스템에 의한 오버헤드 프로세싱을 저하시키도록 잠재적으로 초래할 수 있다.
추후에 비-호의적인 거동을 나타내는 화이트리스트된 애플리케이션들에 대해 모니터링하기 위해, 컴퓨팅 디바이스는 계속해서, 소프트웨어 애플리케이션의 활동들 또는 거동들을 모니터링하여 분석하고, 다른 또는 상이한 거동들을 의심스러운 것 또는 비-호의적인 것으로서 분류하고, 그리고 이 거동이 화이트리스트에 포함되지 않는다 (예컨대, 이 제 2 거동이 이 애플리케이션에 대한 화이트리스트에 포함된 임의의 거동과 동일한 하위-카테고리들로 하위-분류되지 않는다, 등) 고 결정할 수도 있다. 이러한 결정에 응답하여, 컴퓨팅 디바이스는 이전에 화이트리스트된 애플리케이션이 의심스러운 또는 비-호의적인 추가적인 또는 상이한 거동들에 관여하고 있다는 것을 사용자에게 표시하는 제 2 프롬프트를 디스플레이할 수도 있다. 프롬프트에 응답하여 사용자 입력을 수신하는 것에 응답하여, 컴퓨팅 디바이스는 수신된 사용자 입력을 이용하여, 새로 검출된 거동을 화이트리스트할지 또는 소프트웨어 애플리케이션을 종료시킬지 (또는 아니면, 그에 반응할지) 여부를 결정할 수도 있다.
(전체 소프트웨어 애플리케이션들과는 대조적으로) 개개의 거동들을 화이트리스트함으로써, 화이트리스트된 소프트웨어 애플리케이션의 바람직하지 않은 거동들의 검출의 의도적인 또는 의도하지 않은 우회가 방지될 수 있다. 컴퓨팅 디바이스들의 기능들 (functions), 기능성들 (functionalities), 및/또는 기능작용 (functioning) 에 대한 추가적인 향상들은 아래에서 제공되는 실시형태들의 상세한 설명들로부터 명백할 것이다.
단어 "예시적인" 은 "일 예, 사례, 또는 예시로서 기능하는 것" 을 의미하도록 본원에서 사용된다. 본원에서 "예시적인" 으로서 설명하는 임의의 구현예는 반드시 다른 구현예들보다 바람직하거나 또는 유리한 것으로 해석되어서는 안 된다.
용어들 "모바일 컴퓨팅 디바이스" 및 "모바일 디바이스" 는 셀룰러 전화기들, 스마트폰들, 개인 또는 모바일 멀티-미디어 플레이어들, 개인 휴대 정보단말기들 (PDA들), 랩탑 컴퓨터들, 태블릿 컴퓨터들, 스마트북들, 울트라북들, 팜탑 컴퓨터들, 무선 전자 메일 수신기들, 멀티미디어 인터넷 이용가능한 셀룰러 전화기들, 무선 게이밍 제어기들, 및 메모리와 성능이 중요한 프로그래밍가능 프로세서를 포함하고 전력 보존 방법들이 도움이 될 수 있는 배터리 전력 하에서 동작하는 유사한 개인 전자 디바이스들 중 임의의 하나 또는 모두를 지칭하기 위해, 본원에서 상호교환가능하게 사용된다. 다양한 실시형태들이 제한된 리소스들을 갖고 배터리 상에서 동작하는, 스마트폰들과 같은, 모바일 컴퓨팅 디바이스들에 특히 유용하지만, 실시형태들은 일반적으로 프로세서를 포함하고 애플리케이션 프로그램들을 실행하는 임의의 전자 디바이스에 유용하다.
용어 "성능 열화" 는 본 출원에서, 더 긴 프로세싱 시간들, 더 느린 실시간 반응성, 더 낮은 배터리 수명, 개인 데이터의 손실, 악의적인 경제 활동 (예컨대, 미인가된 프리미엄 단문 메시지 서비스 (SMS) 메시지를 전송하는 것), 서비스 거부 (DoS), 잘못 기록되거나 또는 설계된 소프트웨어 애플리케이션들, 악성 소프트웨어, 악성 소프트웨어, 바이러스들, 단편화된 메모리, 컴퓨팅 디바이스를 탈취하거나 또는 스파이 또는 봇넷 (botnet) 활동들을 위해 디바이스를 이용하는 것에 관련된 동작들, 등과 같은, 컴퓨팅 디바이스의 매우 다양한 바람직하지 않은 동작들 및 특성들을 지칭하기 위해 사용된다. 또한, 이들 이유들 중 임의의 이유로 성능을 열화시키는 거동들, 활동들, 및 조건들은 본원에서 "호의적이 아닌 것" 또는 "비-호의적인 것" 으로 지칭된다.
다수의 현대의 컴퓨팅 디바이스들은 제한된 프로세싱, 메모리, 및 에너지 리소스들을 가지는 리소스 속박된 시스템들이다. 예를 들어, 모바일 디바이스는 시간 경과에 따른 성능 및 전력 이용 레벨들에서의 그의 열화에 기여할 수 있는 다수의 특징들 또는 인자들을 포함하는 복잡하고 리소스-속박된 컴퓨팅 디바이스이다. 이 성능 열화에 기여할 수도 있는 인자들의 예들은 형편없이 설계된 소프트웨어 애플리케이션들, 악성 소프트웨어, 바이러스들, 단편화된 (fragmented) 메모리, 및 백그라운드 프로세스들을 포함한다. 이들 인자들의 개수, 변종, 및 복잡도로 인해, 복잡하지만 여전히 리소스-속박된 시스템들의 성능 및/또는 전력 이용 레벨들을 열화시킬 수도 있는 다양한 컴포넌트들, 거동들, 프로세스들, 동작들, 조건들, 상태들, 또는 특징들 (또는, 이들의 조합들) 의 모두를 평가하는 것은 종종 실현불가능하다. 이와 같이, 사용자들, 운영 시스템들, 또는 애플리케이션 프로그램들 (예컨대, 안티-바이러스 소프트웨어, 등) 이 이러한 문제들의 소스들을 정확하게 및 효율적으로 식별하기가 어렵다. 그 결과, 모바일 및 다른 리소스-속박된 컴퓨팅 디바이스들의 사용자들은 현재 시간 경과에 따른 그들 디바이스들의 성능 및 전력 이용 레벨들에서의 열화를 방지하거나, 또는 노후한 디바이스를 그의 원래 성능 및 전력 이용 레벨들로 복원하기 위한 몇 개의 해결책을 가지고 있다.
종래의 솔루션들의 한계들을 극복하기 위해, 컴퓨팅 디바이스들에는 비-호의적인 거동들 및 소프트웨어 애플리케이션들 (예컨대, 악의적이거나, 잘못 기록되거나, 디바이스와 호환불가능하거나, 등등인 애플리케이션들) 을 식별하고, 이러한 거동들/애플리케이션들이 시간 경과에 따라 디바이스의 성능, 전력 이용 레벨들, 네트워크 사용 레벨들, 보안, 및/또는 프라이버시를 열화시키는 것을 방지하도록 구성된 거동 모니터링 및 분석 시스템 (예컨대, 거동-기반의 보안 시스템) 이 탑재될 수도 있다. 거동-기반 및 머신 학습 기법들을 이용함으로써, 거동 모니터링 및 분석 시스템은 컴퓨팅 디바이스의 반응성, 성능, 또는 소비 전력 특성들에 상당한, 부정적인, 또는 사용자 감지가능한 영향을 미침이 없이, 식별된 문제들을 식별하거나, 방지하거나, 정정하거나, 및/또는 아니면 그에 반응할 수도 있다. 이와 같이, 시스템은 제한된 리소스들을 가지며 배터리 전력으로 동작되며 그리고 성능 및 보안이 중요한, 스마트폰들과 같은, 모바일 및 리소스 속박된-컴퓨팅 디바이스들에의 포함 및 사용에 상당히 적합하다.
다양한 실시형태들에서, 거동 모니터링 및 분석 시스템은 관측기 프로세스, 데몬, 모듈, 또는 서브-시스템 (본원에서, 일괄하여 "모듈" 로서 지칭됨), 거동 추출기 모듈, 분석기 모듈, 및 엑츄에이터 모듈을 포함할 수도 있다. 관측기 모듈은 컴퓨팅 디바이스 시스템의 다양한 레벨들에서 다양한 애플리케이션 프로그래밍 인터페이스들 (API들), 레지스터들, 카운터들, 또는 다른 디바이스 컴포넌트들 (본원에서 일괄하여 "계측형 컴포넌트들 (instrumented components)") 을 구현하거나 또는 조직화하고, 계측형 컴포넌트들로부터 거동 정보를 수집하고, 그리고 (예컨대, 메모리 기록 동작, 함수 호출, 등을 통해서) 수집된 거동 정보를 거동 추출기 모듈로 통신하도록 구성될 수도 있다.
거동 추출기 모듈은 수집된 거동 정보를 이용하여, 컴퓨팅 디바이스의 특정의 소프트웨어 애플리케이션, 모듈, 컴포넌트, 태스크, 또는 프로세스와 연관되는 하나 이상의 관측된 거동들을 각각 나타내거나 또는 특징화하는 거동 벡터들을 발생시킬 수도 있다. 각각의 거동 벡터는 하나 이상의 "거동 특징들" 을 캡슐화할 수도 있다. 각각의 거동 특징은 관측된 거동의 모두 또는 부분을 나타내는 추상적인 숫자 또는 심볼을 포함할 수도 있다. 게다가, 각각의 거동 특징은 가능한 값들, 그들 값들 상에서 수행될 수도 있는 동작들, 값들의 의미들, 등의 범위를 식별하는 데이터 유형과 연관될 수도 있다. 컴퓨팅 디바이스는 데이터 유형을 이용하여, 어떻게 특징 (또는, 특징 값) 이 측정되고, 분석되고, 가중되고, 사용되어야 하는지, 등을 결정할 수도 있다.
거동 추출기 모듈은 (예컨대, 메모리 기록 동작, 함수 호출, 등을 통해서) 거동 벡터들을 분석기 모듈로 통신할 수도 있으며, 그 분석기 모듈은 거동 벡터들을 분류자 모델들에 적용하여, 소프트웨어 애플리케이션 또는 디바이스 거동이 호의적인지 또는 비-호의적인지 여부를 결정하는데 사용될 수도 있는 분석 결과들을 발생시킬 수도 있다. 분류자 모델은 디바이스의 거동의 특정의 인자, 특징, 또는 실시형태를 평가하는데 컴퓨팅 디바이스 프로세서에 의해 사용될 수도 있는 데이터 및/또는 정보 구조들 (예컨대, 결정 노드들, 특징 벡터들, 컴포넌트 리스트들, 등) 을 포함하는 거동 모델일 수도 있다. 분류자 모델은 또한 컴퓨팅 디바이스에서의 다수의 특징들, 인자들, 데이터 지점들, 엔트리들, API들, 상태들, 조건들, 거동들, 소프트웨어 애플리케이션들, 프로세스들, 동작들, 컴포넌트들, 등 (본원에서 일괄하여 "특징들") 을 모니터링하거나 분석하는 결정 기준들을 포함할 수도 있다.
전체 분류자 모델은 수천 개의 특징들 및 수십억 개의 엔트리들을 포함할 수도 있는, 큰 트레이닝 (training) 데이터세트의 함수로서 발생되는 강건한 데이터 모델일 수도 있다. 린 분류자 모델은 특정의 모바일 디바이스 거동이 호의적이지 않은지 여부를 결정하는데 가장 관련된 특징들/엔트리들에 관한 테스트들을 포함하거나 또는 우선순위화하는 감소된 데이터세트로부터 발생되는 보다 집중된 (more focused) 데이터 모델일 수도 있다. 로컬로 발생된 린 분류자 모델은 컴퓨팅 디바이스에서 발생되는 린 분류자 모델이다. 축소형 특징 모델 (RFM; reduced feature model) 은 그 디바이스의 거동이 호의적인지 또는 비-호의적인지 여부를 결정하는데 가장 중요한 특징들을 평가하는 결정 노드들을 포함시키기 위해 더 강건한 분류자 모델에 적어도 부분적으로 기초하여 발생되는 린 분류자 모델일 수도 있다.
분석기 모듈은 고도의 신뢰도로 (예컨대, 분석 결과들, 등에 적어도 부분적으로 기초하여) 거동 또는 소프트웨어 애플리케이션이 비-호의적이라고 결정할 때 엑츄에이터 모듈에게 통지할 수도 있다. 이에 응답하여, 엑츄에이터 모듈은 식별된 문제(들) 을 치유하거나, 치료하거나, 분리하거나 또는 아니면 수리하는 다양한 동작들을 수행할 수도 있다. 예를 들어, 엑츄에이터 모듈은 악성 소프트웨어인 것으로 결정되는 소프트웨어 애플리케이션을 격리시키고, 악의적인 프로세스를 종료시키고, 비-호의적인 것으로 결정된 애플리케이션을 삭제할지 또는 화이트리스트할지 (또는, 그 애플리케이션의 거동을 화이트리스트할지) 여부를 사용자가 결정하도록 요청하는 프롬프트를 디스플레이하고, 사용자에게 소프트웨어 애플리케이션이 시간 경과에 따라 디바이스의 성능 열화에 기여하고 있다는 것을 통지하는, 등등을 행하도록 구성될 수도 있다.
모든 잠재적인 비-호의적인 거동을 모니터링하고, 분석하고, 그리고 아니면 그에 반응하는 것은 상당한 양의 디바이스의 제한된 프로세싱, 메모리, 또는 에너지 리소스들을 소비할 수도 있다. 예를 들어, 시간에 따른 컴퓨팅 디바이스의 열화의 이유 또는 원인을 적절히 식별하기 위해 모니터링 또는 분석을 필요로 하는 수천 개의 특징들/인자들 및 수십억 개의 데이터 지점들이 존재할 수도 있다. 스마트폰들과 같은 리소스-속박된 컴퓨팅 디바이스들에서는, 모든 이들 특징들, 인자들 및 데이터 지점들을 평가하는 것은 종종 실현불가능하다.
거동이 호의적인지, 의심스러운지, 또는 비-호의적인지 여부를 결정할 때 평가를 필요로 하는 특징들, 인자들 및 데이터 지점들의 수를 감소시키기 위해, 거동 모니터링 및 분석 시스템은 점진적, 동적, 및 적응적 동작들을 수행할 수도 있다. 예를 들어, 시스템은 가변 레벨들의 복잡도 (또는, "린니스 (leanness)") 의 분류자 모델들을 이용하여, 스테이지들에서 디바이스 거동들을 계속해서 평가하도록 구성될 수도 있다. 이것은 디바이스로 하여금, 위조 동작들을 수행하는 것을 포기시키고, 시스템에 의해 발생되거나 또는 사용되는 거동 벡터들의 개수를 감소시키도록 한다.
예를 들어, 일부 실시형태들에서, 시스템은 초기 분류자 및 모델을 포함하는 분류자 모델들 및 하나 이상의 후속 분류자 모델들의 패밀리를 발생시키거나 또는 이용하도록 구성될 수도 있다. 초기 분류자 모델은 모바일 디바이스 거동을 분류할 때 분석을 달리 필요로 하는 모든 특징들, 인자들, 및 데이터 지점들의 목표된 서브세트를 평가하는 것에 집중하는 린 분류자 모델 (또는, 감소된 특징들 모델) 일 수도 있다. 다른 말로 하면, 초기 분류자 모델은 시스템으로 하여금 디바이스 거동이 호의적인지 또는 비-호의적인지 여부를 고도의 신뢰도로 결정가능하게 할 높은 확률을 갖도록 결정된 인자들/특징들의 초기 세트를 평가하기 위한 결정 노드들을 포함할 수도 있다. 각각의 후속 분류자 모델은 그의 선행하는 분류자 모델보다, 더 많은 개수의 결정 노드들을 포함하거나 및/또는 특징들, 인자들, 및 데이터 지점들의 더 큰 서브세트를 평가하는 더욱 강건한 분류자일 수도 있다
시스템은 거동 벡터들을 초기 분류자 모델에 적용하여 초기 분석 결과들을 발생시키고, 고도의 신뢰도로 거동이 호의적인지 또는 비-호의적인지 여부를 초기 분석 결과들이 표시하는지 여부를 결정하고, 고도의 신뢰도로 거동이 호의적인 것 또는 비-호의적인 것으로서 분류되지 않을 수 있다고 결정하는 것에 응답하여 거동을 의심스러운 것으로서 분류하고, (예컨대, 거동이 의심스럽다고 결정하는 것에 응답하여) 동일한 또는 상이한 거동 벡터들을 계속해서 더 큰 또는 더 강건한 분류자 모델들에 적용하여 새로운 또는 제 1 모니터링된 활동 추가적인 분석 결과들을 발생시키고, 그리고 고도의 신뢰도로 거동이 호의적인지 또는 비-호의적인지 여부를 새로운/추가적인 분석 결과들이 표시하는지 여부를 결정할 수도 있다. 시스템은 거동이 호의적이거나 또는 비-호의적이라고 분석 결과들이 고도의 신뢰도로 표시할 때까지, 패밀리에서의 분류자 모델들의 모두가 사용될 때까지, 프로세싱 또는 배터리 소비 임계치에 도달될 때까지, 또는 더 큰 또는 더 강건한 분류자 모델들의 사용으로부터 또는 수집된 거동 정보의 추가 분석으로부터 의심스러운 또는 성능-열화시키는 거동의 원인이 식별될 수 없다고 시스템이 결정할 때까지, 이들 동작들을 연속적으로 또는 반복적으로 수행할 수도 있다.
게다가, 시스템은 조악한 관측들 (coarse observations) 을 수행/수집하고, 조악한 관측들을 분석한 결과에 적어도 부분적으로 기초하여 추가적인 또는 좀더 상세한 관측들을 수행/수집할지 여부를 결정하도록 구성될 수도 있다. 시스템은 시간에 따른 모바일 디바이스의 열화에 기여할 수 있는 모든 인자들의 작은 서브세트로부터 거동 정보를 수집함으로써 조악한 관측들을 수행하고, 이 수집된 거동 정보를 이용하여 거동 벡터들을 발생시키고, 발생된 거동 벡터들을 분류자 모델들에 적용하여 분석 결과들을 발생시키고, 그리고 고도의 신뢰도로 거동이 호의적인지 또는 비-호의적인지 여부를 분석 결과들이 표시하는지 여부를 결정할 수도 있다. 시스템은 고도의 신뢰도로 거동이 호의적인 것 또는 비-호의적인 것으로서 분류될 수 없다고 결정하는 것에 응답하여 거동을 의심스러운 것으로서 분류할 수도 있다. 게다가, 시스템은 그의 관측들의 그래뉼래러티 (즉, 디바이스 거동들이 관측되는 세부 사항의 레벨) 를 조정하거나 및/또는 새로운 또는 추가적인 거동 정보를 수집하기 위해 관측되는 인자들을 변경하고, 새로운 또는 추가적인 거동 정보에 적어도 부분적으로 기초하여 새로운 거동 벡터들을 발생시키고, 새로운 거동 벡터들을 동일한 또는 상이한 분류자 모델들에 적용하여 추가적인 분석 결과들을 발생시키고, 그리고 고도의 신뢰도로 거동이 호의적인지 또는 비-호의적인지 여부를 새로운/추가적인 분석 결과들이 표시하는지 여부를 결정할 수도 있다. 시스템은 고도의 신뢰도로 거동이 호의적이거나 또는 비-호의적이라고 분석 결과들이 표시할 때까지, 프로세싱 또는 배터리 소비 임계치에 도달될 때까지, 또는 관측 그래뉼래러티에서의 추가적인 증가들로부터 의심스러운 또는 성능-열화시키는 거동의 원인이 식별될 수 없다고 시스템이 결정할 때까지, 이들 동작들을 반복적으로 또는 연속적으로 수행할 수도 있다.
일반적으로, 위에서 설명한 시스템은 상당량의 디바이스의 제한된 리소스들을 소비함이 없이, 거동이 호의적인지, 의심스러운지, 또는 비-호의적인지 여부를 결정할 수도 있다. 게다가, 호의적인, 의심스러운, 및 비-호의적인 거동 분류들의 각각에 대해 다수의 상이한 카테고리들, 하위-카테고리들, 또는 유형들이 존재한다. 예를 들어, "비-호의적인 거동" 으로서 분류되는 거동은 악성 소프트웨어로서 카테고리화되고, 애드웨어, 키 로거, 랜섬웨어, 스파이웨어, 모바일 원격 액세스 Trojan (mRAT), 봇넷, 피싱 앱, Trojan, SMS 프로드웨어 (fraudware), 등으로서 하위-카테고리화될 수도 있다. 이들 상이한 악성 소프트웨어 하위-카테고리들/유형들의 각각은 사용자 또는 컴퓨팅 디바이스에게 위험 또는 위협의 상이한 레벨, 정도, 또는 유형을 부여한다. 다른 말로 하면, 검출된 또는 잠재적인 비-호의적인 거동이 컴퓨팅 디바이스에 부여하는 위험/위협의 심각도는 그의 악성 소프트웨어 유형 (예컨대, 애드웨어, Trojan, 등) 에 의존한다.
일부 구현예들에서, 컴퓨팅 디바이스는 멀티-라벨 분류 또는 메타-분류 기법들을 이용하여, 분류된 거동 (예컨대, 호의적인 것, 의심스러운 것, 또는 비-호의적인 것) 과 연관되는 카테고리들, 하위카테고리들, 또는 유형들 (예컨대, 게임, 뉴스 앱, 악성 소프트웨어) 을 식별하거나 또는 결정하도록 구성될 수도 있다. 예를 들어, 컴퓨팅 디바이스는 멀티-라벨 분류 또는 메타-분류 기법들을 이용하여, 의심스러운 또는 비-호의적인 거동과 연관되는 악성 소프트웨어 유형들 (따라서, 위험들) 을 식별하거나 또는 결정하고, 의심스러운 또는 비-호의적인 거동과 연관되는 악성 소프트웨어 유형들에 적어도 부분적으로 기초하여 그의 분석 동작들 (예컨대, 분석기 모듈, 등에 의해 수행되는 동작들) 을 커스터마이즈하고, 그리고, 의심스러운 또는 비-호의적인 거동과 연관되는 악성 소프트웨어 유형들에 적어도 부분적으로 기초하여 상이한 엑츄에이션 동작들을 수행하도록 구성될 수도 있다.
다수의 상이한 악성 소프트웨어 유형들이 존재하며, 검출된 또는 잠재적인 비-호의적인 거동이 컴퓨팅 디바이스에 부여하는 위험/위협의 심각도는 그의 악성 소프트웨어 유형에 의존할 수도 있다. 예를 들어, 애드웨어는 디바이스 상에서 광고들을 자동적으로 렌더링하여 그의 저작자의 수익을 발생시키는 악성 소프트웨어의 유형이다. 애드웨어 애플리케이션은 디바이스의 사용을 몰래 모니터링하고, 사용자가 방문하는 인터넷 사이트들에 관한 정보를 수집하고, 그리고 방문한 인터넷 사이트들에 특화된 상품들 또는 서비스들의 유형들에 관련된 광고들을 디스플레이할 수도 있다. 애드웨어 애플리케이션들이 일반적으로 높은 기밀 또는 개인 정보 (예컨대, 사진들, 연락처 리스트들, 등) 를 수집하거나 또는 공유하지 않기 때문에, 이들은 일반적으로 디바이스에 대한 보안 위험보다는 사용자에게 더 큰 성가심이 있다. 이와 같이, 컴퓨팅 디바이스는 의심스러운 또는 잠재적으로 비-호의적인 거동이 애드웨어로서 하위-분류될 때 제한된 또는 경량의 분석 및/또는 엑츄에이션 동작들을 수행하도록 (즉, 그의 리소스들을 보존하도록) 구성될 수도 있다.
키 로거들 (key loggers) 은 사용자의 인식 또는 동의 없이 사용자 입력들을 모니터링하고 로그하는 악성 소프트웨어의 유형이다. 예를 들어, 키 로거는 키스트로크들을 조용히 관측하여, 패스워드들, 개인 통신들, 등을 캡쳐할 수도 있다. 키 로거는 일반적으로 사용자/디바이스에게 애드웨어보다 더 많은 보안 위험이 있지만, 다수의 다른 유형들의 악성 소프트웨어 (예컨대, 스파이웨어, 봇넷, 등) 보다는 더 적은 보안 위험이 있다.
랜섬웨어는 (예컨대, 디바이스를 잠그거나, 그의 파일들 모두를 암호화하거나, 등등을 행함으로써) 컴퓨팅 디바이스에의 액세스를 제한하고 제한 사항이 제거되기 (예컨대, 디바이스가 잠금해제되거나, 파일들이 해독되거나, 등등을 행하기) 전에 생성자에게 배상금 (ransome) 을 지불하도록 요구하는 악성 소프트웨어의 유형이다. 랜섬웨어 애플리케이션은 상당한 금융 위협을 사용자에게 일으킬 수도 있으며, 일반적으로 애드웨어 및 키 로거들보다 더 많은 보안 위험이 있다.
스파이웨어 및 mRAT들은 디바이스 또는 사용자들에 관한 정보를 그들의 인식 또는 동의 없이 수집하여 전송하는 악성 소프트웨어의 유형들이다. 예를 들어, 스파이웨어 애플리케이션은 (디바이스의 센서들로부터 정보를 수집함으로써) 사용자의 로케이션 및 액션들을 모니터링하여, 이 값들을 외부 서버로 전송할 수도 있다. 이와 같이, 이들 악성 소프트웨어 유형들은 사용자의 프라이버시에 상당한 위협을 가할 수도 있으며, 일반적으로 애드웨어, 키 로거들, 및 랜섬웨어보다 디바이스에 더 많은 보안 위험이 있다.
봇넷은 일반적으로 다른 디바이스들 상의 다른 유사한 프로그램들과 통신하여 인터넷 중계 채팅 (IRC) 채널의 제어를 유지하는 것, 스팸 이메일 메시지들을 전송하는 것, 대규모 또는 분산 서비스-거부 (DDoS) 공격들에 참가하는 것, 등과 같은, 하나 이상의 태스크들을 수행하는 인터넷-접속된 애플리케이션 프로그램들의 컬렉션이다. 봇넷은 상당한 양의 컴퓨팅 디바이스의 가용 리소스들을 소비하고, 디바이스에게 상당한 위협을 가할 수도 있다. 봇넷은 디바이스에게 심한 위협을 가할 수도 있으며, 일반적으로 사용자/디바이스에게 애드웨어, 키 로거들, 랜섬웨어, 스파이웨어, 및 mRAT들보다 더 높은 보안 위험이 있다.
피싱은 일반적으로 다른 애플리케이션/웹사이트를 스푸핑 (spoofing) 하거나 또는 신뢰할 수 있는 엔터티인 것으로 가장함으로써, 민감한 정보 (예컨대, 사용자 이름들, 패스워드들, 신용 카드 세부 사항들, 등) 를 획득하기 위해 사용자를 속일려고 시도하는 악성 소프트웨어의 사이버-공격 기법 및 유형이다. 예를 들어, 피싱 앱은 합법적인 사이트/애플리케이션과 거의 동일한 가짜 웹사이트 또는 애플리케이션으로 개인 정보를 기입하도록 사용자를 속일려고 시도할 수도 있거나, 또는 악성 소프트웨어로 감염된 웹사이트들로의 링크들을 포함할 수도 있다. 피싱 앱들은 특히, 사용자가 아이, 고령자이거나, 또는 이러한 사이버-공격 기법들에 친숙하지 않으면, 디바이스에 적당한 내지 상당한 위험을 일으킬 수도 있다.
Trojan 은 실행될 때, 일반적으로 데이터의 손실 또는 절도를 초래하는 Trojan 의 성질에 의해 결정되는 액션들을 실행하는 악성 코드를 포함하는 악성 소프트웨어의 비-자가-복제 유형이다. 일반적으로, Trojan 은 합법적인 애플리케이션인 것처럼 가장하지만, 숨겨진 악의적인 기능성을 가지고 있다. 예를 들어, Trojan들은 다른 엔터티들/디바이스들과 접촉하여 그들에게 침범된 컴퓨팅 디바이스에의 미인가된 액세스를 제공하는 백도어로서 종종 기능한다. Trojan 은 또한 상당한 양의 컴퓨팅 디바이스의 가용 프로세싱, 메모리, 및 배터리 리소스들을 소비할 수도 있다. 모든 이들 이유들로 인해, Trojan들은 디바이스에게 심한 위협을 가할 수도 있으며 대부분의 다른 유형들의 악성 소프트웨어보다 더 높은 보안 위험이 있다.
SMS 프로드웨어 (Fraudware) 는 사용자의 인식 또는 동의 없이 프리미엄 SMS 메시지들을 전송할려고 시도하는 악성 소프트웨어의 유형이다. SMS 프로드웨어는 사용자에게 상당한 금융 위협을 가할 수도 있으며, 일반적으로 애드웨어보다 더 많은 보안 위험이 있다.
일부 실시형태들에서, 컴퓨팅 디바이스는 거동 또는 소프트웨어 애플리케이션의 분류 및 하위-분류들 (예컨대, 악성 소프트웨어, 애드웨어, 등) 또는 결정된 상대적인 중요도에 적어도 부분적으로 기초하여, 디바이스에 의해 수행되는 분석 및/또는 엑츄에이션 동작들을 지능적으로 결정하거나 또는 선택하도록 구성될 수도 있다. 다양한 실시형태들에서, 컴퓨팅 디바이스는 멀티-분류 분류자 모델 및/또는 메타-분류자 모델을 이용함으로써 하위-분류들을 결정하도록 구성될 수도 있다. 일 실시형태에서, 멀티-분류 분류자 모델은 메타-분류자 모델을 포함할 수도 있다.
멀티-분류 분류자 모델은 다수의 분류 라벨들을 지원하는 분류자 모델일 수도 있다. 예를 들어, 멀티-분류 분류자 모델은 하나 이상의 라벨들과 각각 연관되는 결정 스텀프들 (예컨대, 부스트된 결정 스텀프들, 등) 을 포함할 수도 있다. 결정 스텀프들은 정확히 하나의 노드 (따라서, 하나의 테스트 질문 또는 테스트 조건) 및 가중 값을 가지는 하나의 레벨 결정 트리들이며, 따라서 데이터/거동들의 2진 분류에서의 사용에 아주 적합하다. 즉, 거동 벡터를 부스트된 결정 스텀프에 적용하는 것은 2진 응답 (예컨대, 예 또는 아니오) 를 초래한다. 예를 들어, 부스트된 결정 스텀프에 의해 테스트된 조건이 "SMS 송신들의 빈도가 분당 x 미만인가" 이면, "3" 의 값을 부스트된 결정 스텀프에 적용하는 것은 ("3 미만" SMS 송신들에 대해) "예" 응답 또는 ("3 또는 더 이상" SMS 송신들에 대해) "아니오" 응답을 초래할 것이다.
거동이 호의적인지 또는 비-호의적인지 여부를 결정하기 위해 조건을 평가하여 (예컨대, 분석 결과들의 부분으로서) 응답 및 가중 값을 출력하는 것에 추가하여, 멀티-분류 분류자 모델에서의 각각의 결정 스텀프는 그의 연관된 라벨들의 각각에 대해 추가적인 값 (예컨대, 확률 값, 등) 을 출력할 수도 있다. 예를 들어, 거동 벡터를 분류 라벨들 "애드웨어", "스파이웨어", "키-로거", "SMSFraud", 및 "랜섬웨어" 를 포함하는 멀티-분류 분류자 모델에 적용하는 것은 디바이스가 다음 출력을 발생시키도록 할 수도 있다:
[0.1, 0.9, 0.9, 0.2, 0.2].
일 실시형태 시스템을 구현하는 컴퓨팅 디바이스는 이 출력 (즉, 라벨 분석 결과 [0.1, 0.9, 0.9, 0.2, 0.2]) 을 이용하여, 평가된 거동이 10% 신뢰도로 애드웨어로서, 90% 신뢰도로 스파이웨어로서, 90% 신뢰도로 키-로거로서, 20% 신뢰도로 SMSFraud 로서, 그리고 20% 신뢰도로 랜섬웨어로서 하위-분류될 수 있다고 결정할 수도 있다. 그 결과, 디바이스는 거동이 고도의 신뢰도 (즉, 90% 신뢰도) 로 스파이웨어 및 키-로거로서 하위-분류될 수 있다고 결정할 수도 있다. 이에 응답하여, 컴퓨팅 디바이스는 (예컨대, 거동에 라벨들을 추가하거나 또는 연관시키는, 등등을 행함으로써) 거동을 스파이웨어 및 키-로거 카테고리들로 하위-분류하고, 이들 카테고리들의 각각과 연관되는 위험, 위협, 또는 보안 레벨을 결정하고, 그리고 카테고리들 또는 그들의 연관된 위험, 위협 또는 보안 레벨에 적어도 부분적으로 기초하여 수행되어야 하는 분석 및/또는 엑츄에이션 동작들을 결정/선택할 수도 있다.
컴퓨팅 디바이스는 디바이스 거동이 호의적인 것, 의심스러운 것 또는 비-호의적인 것인지 여부의 그의 분류 판정들/결정들에 더해서, 그리고 이들에 독립적으로, 이러한 하위-분류 판정들/결정들을 행하도록 구성될 수도 있다. 예를 들어, 컴퓨팅 디바이스는 거동 벡터를 멀티-분류 분류자 모델에 적용하여 분류 분석 결과들 및 라벨 분석 결과들을 발생시키고, 분류 분석 결과들에 적어도 부분적으로 기초하여 거동을 의심스러운 것으로서 분류하고, 라벨 분석 결과들에 적어도 부분적으로 기초하여 거동을 스파이웨어 및 키-로거 카테고리들로 하위-분류하고, (예컨대, 더 강건한 분류자 모델들, 등을 이용함으로써) 그의 정밀조사의 레벨을 증가시켜 더 종합적인 분석 결과들을 발생시키고, 그리고 그 더 종합적인 분석 결과들을 이용하여 거동이 호의적인지 또는 비-호의적인지 여부를 결정할 수도 있다. 거동이 비-호의적인 것으로서 분류되면, 컴퓨팅 디바이스는 하위-분류들 (예컨대, 스파이웨어, 키-로거, 등) 에 적어도 부분적으로 기초하여 적합한 엑츄에이션 동작들 (예컨대, 사용자에게 프롬프트하거나, 애플리케이션을 화이트리스트하거나, 프로세스를 종료시키거나, 등) 을 선택하거나 또는 결정할 수도 있다.
일 실시형태에서, 컴퓨팅 디바이스는 메타-분류자 모델을 이용함으로써 하위-분류들을 결정하도록 구성될 수도 있다. 메타-분류자 모델은 거동에 대한 하위-분류들을 결정하기에 적합한 조건들 또는 특징들을 테스트하거나 또는 평가하기 위한 결정 노드들을 포함하는 분류자 모델일 수도 있다. 컴퓨팅 디바이스는 거동 벡터 및 분석 결과들 또는 분류 출력을 메타-분류자 모델에 적용하여, 거동을 하나 이상의 카테고리들로 하위-분류하는데 사용될 수도 있는 정보를 발생시킬 수도 있다. 예를 들어, 메타-분류자 모델은 로케이션 특징을 평가하는 결정 노드를 포함할 수도 있으며, 그의 결과가 스파이웨어 값에 가산될 수도 있다. 이와 유사하게, 메타-분류자 모델은 가속도계 지시 눈금값들 (accelerometer readings) 을 기록하고 통신하는 것에 관련된 조건들을 평가할 수도 있으며, 그의 결과들은 키-로거 값 및 스파이웨어 값 양쪽에 가산될 수도 있다. 메타-분류자 모델은 또한 거동이 미지 유형의 악성 소프트웨어 (즉, 기존 또는 공지된 카테고리들 중 어느 카테고리에도 속하지 않는 악성 소프트웨어) 인지 여부를 결정하는 조건들을 평가할 수도 있다.
일부 실시형태들에서, 컴퓨팅 디바이스는 거동 하위-분류들을 이용하여 거동과 연관되는 위험, 위협, 또는 의심 레벨을 결정하고, 그리고 결정된 위험, 위협, 또는 의심 레벨에 적어도 부분적으로 기초하여 분류자 모델을 선택하거나 또는 수정하도록 구성될 수도 있다. 예를 들어, 컴퓨팅 디바이스는 거동 벡터를 분류자 모델 (예컨대, 분류자 모델들의 패밀리에서의 초기 분류자 모델) 에 적용하여 분석 결과들을 발생시키고, 분석 결과들을 이용하여 디바이스에 존재하는 분류자 모델에서의 조건들 또는 특징들을 결정하고 거동을 하위-분류하고, 하위-분류에 적어도 부분적으로 기초하여 거동과 연관되는 위험, 위협, 또는 의심 레벨을 결정하고, 그리고 결정된 위험, 위협, 또는 의심 레벨에 적어도 부분적으로 기초하여 분류자 모델들의 패밀리에서 후속 분류자 모델을 선택할 수도 있다. 예를 들어, 거동이 랜섬웨어 또는 스파이웨어로서 하위-분류되면, 컴퓨팅 디바이스는 전체 분류자 모델, 전체 특징 RFM, 또는 더 강건한 분류자 모델을 선택하기 위해 분류자 모델들의 패밀리에서 중간 RFM들 또는 분류자 모델들을 바이패스할 수도 있다. 대안적으로, 거동이 랜섬웨어 또는 스파이웨어로서 하위-분류되면, 컴퓨팅 디바이스는 거동이 랜섬웨어 또는 스파이웨어인지 여부를 결정할 높은 확률을 가지도록 결정되는 조건들을 평가하는 결정 노드들을 포함하는 후속 분류자 모델을 선택할 수도 있다.
컴퓨팅 디바이스는 결정된 위험, 위협, 또는 의심 레벨에 적어도 부분적으로 기초하여 다른 분석 동작들을 변경하도록 구성될 수도 있다. 예를 들어, 컴퓨팅 디바이스는 메모리 내 큐업된 (queued up) 이벤트들을 분석하거나 및/또는 메모리 사용 및 메모리의 콘텐츠와 같은 분류자 모델에 의해 평가되지 않는 특징들에 대해 애플리케이션을 더 가깝게 모니터링하기 전에 애플리케이션을 중지하도록 구성될 수도 있다.
컴퓨팅 디바이스는 결정된 위험, 위협, 또는 의심 레벨에 적어도 부분적으로 기초하여 엑츄에이션 동작들을 선택하여 수행하도록 구성될 수도 있다. 예를 들어, 애드웨어가 성가시지만 즉각적인 위험을 주지 않기 때문에, 소프트웨어 애플리케이션이 애드웨어라고 결정한 후, 컴퓨팅 디바이스는 애플리케이션으로 하여금 계속해서 디바이스 상에서 실행/동작하게 하고, 앱을 제거하기 위한 바로가기로 사용자에게 프롬프트하게 할 수 있다. 컴퓨팅 디바이스는 랜섬 메시지 (가짜 메시지 예: "FBI 가 당신의 폰을 잠갔으며, 이 폰의 모든 활동이 기록되었습니다…") 를 디스플레이함이 없이 랜섬웨어를 즉시 제거할 수도 있다. 즉, 소프트웨어 애플리케이션이 랜섬웨어라고 결정한 후, 컴퓨팅 디바이스는 애플리케이션 및 그의 메시지를 종료시키고, 메시지가 가짜이거나 또는 악의적이며 전혀 걱정할 필요가 없다는 것을 사용자에게 통지하고, 그리고 애플리케이션이 삭제되어야 한다고 사용자에게 권고할 수도 있다. 이와 유사하게, 컴퓨팅 디바이스는 mRAT들과 같은 스파이웨어를 사용자에게 즉시 통지하도록 구성될 수 있다.
다양한 실시형태들이 시스템-온-칩 (SOC) 을 포함한, 다수의 단일 프로세서 및 멀티프로세서 컴퓨터 시스템들 상에서 구현될 수도 있다. 도 1 은 본 개시물의 다양한 실시형태들을 구현하는 컴퓨팅 디바이스들에서 사용될 수도 있는 예시적인 시스템-온-칩 (SOC) (100) 아키텍처를 예시한다. SOC (100) 는 디지털 신호 프로세서 (DSP) (103), 모뎀 프로세서 (104), 그래픽스 프로세서 (106), 및 애플리케이션들 프로세서 (108) 와 같은, 다수의 이종 프로세서들을 포함할 수도 있다. SOC (100) 는 또한 이종 프로세서들 (103, 104, 106, 108) 중 하나 이상에 (직접 또는 간접적으로) 커플링된 하나 이상의 코프로세서들 (110) (예컨대, 벡터 코-프로세서) 을 포함할 수도 있다. 각각의 프로세서 (103, 104, 106, 108, 110) 는 하나 이상의 코어들을 포함할 수도 있으며, 각각의 프로세서/코어는 다른 프로세서들/코어들과 독립적으로 동작들을 수행할 수도 있다. 예를 들어, SOC (100) 는 제 1 유형의 운영 시스템 (예컨대, FreeBSD, LINUX, OS X, 등) 을 실행하는 프로세서 및 제 2 유형의 운영 시스템 (예컨대, 마이크로소프트 윈도우즈 8) 을 실행하는 프로세서를 포함할 수도 있다.
SOC (100) 는 또한 센서 데이터, 아날로그-대-디지털 변환들, 무선 데이터 송신들을 관리하고 다른 특수 동작들을 수행하는, 예컨대, 웹 브라우저에서의 렌더링을 위해 인코딩된 오디오 및 비디오 신호들을 프로세싱하는 아날로그 및 커스텀 회로부 (114) 를 포함할 수도 있다. SOC (100) 는 전압 조정기들, 발진기들, 위상-동기 루프들, 주변장치 브릿지들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 타이머들, 및 프로세서들, 컴퓨팅 디바이스 상에서 실행하는 소프트웨어 클라이언트들 (예컨대, 웹 브라우저) 및 프로세서들을 지원하기 위해 사용되는 다른 유사한 컴포넌트들과 같은, 시스템 컴포넌트들 및 리소스들 (116) 을 더 포함할 수도 있다.
시스템 컴포넌트들 및 리소스들 (116) 및/또는 아날로그 및 커스텀 회로부 (114) 는 카메라들, 전자 디스플레이들, 무선 통신 디바이스들, 외부 메모리 칩들, 등과 같은, 주변장치 디바이스들과 인터페이스하는 회로부를 포함할 수도 있다. 프로세서들 (103, 104, 106, 108) 은 재구성가능한 로직 게이트들의 어레이를 포함하거나 및/또는 버스 아키텍처 (예컨대, CoreConnect, AMBA, 등) 을 구현할 수도 있는 상호접속/버스 모듈 (124) 을 통해서, 하나 이상의 메모리 엘리먼트들 (112), 시스템 컴포넌트들 및 리소스들 (116), 및 아날로그 및 커스텀 회로부 (114) 에 상호접속될 수도 있다. 통신들은 고성능 네트워크들-온 칩 (NoCs) 과 같은 상호접속들에 의해 제공될 수도 있다.
SOC (100) 는 클록 (118) 및 전압 조정기 (120) 와 같은, SOC 외부에 있는 리소스들과의 통신을 위한 입력/출력 모듈 (미예시) 을 더 포함할 수 있다. SOC 외부의 리소스들 (예컨대, 클록 (118), 전압 조정기 (120)) 은 내부 SOC 프로세서들/코어들 (예컨대, DSP (103), 모뎀 프로세서 (104), 그래픽스 프로세서 (106), 애플리케이션들 프로세서 (108), 등) 중 2개 이상에 의해 공유될 수도 있다.
일 실시형태에서, SOC (100) 는 스마트폰과 같은, 모바일 디바이스 (102) 에 포함될 수도 있다. 모바일 디바이스 (102) 는 전화기 네트워크, 인터넷, 및/또는 네트워크 서버와의 통신을 위한 통신 링크들을 포함할 수도 있다. 모바일 디바이스 (102) 와 네트워크 서버 사이의 통신은 전화기 네트워크, 인터넷, 사설 네트워크, 또는 이들의 임의의 조합을 통해서 달성될 수도 있다.
다양한 실시형태들에서, SOC (100) 는 모바일 디바이스에서 거동, 상태, 분류, 모델링, 성공률, 및/또는 통계적 정보를 수집하고, 분석을 위해서 수집된 정보를 (예컨대, 전화기 네트워크를 통해서) 네트워크 서버로 전송하도록 구성될 수도 있다. 네트워크 서버는 모바일 디바이스로부터 수신된 정보를 이용하여, 성능-열화시키는 모바일 디바이스 거동들을 식별하거나 및/또는 분류할 때 SOC (100) 에 의한 사용에 적합한 분류자들 또는 데이터/거동 모델들을 발생시키거나, 업데이트하거나, 또는 개선할 수도 있다. 네트워크 서버는 데이터/거동 모델들을 SOC (100) 로 전송할 수도 있으며, SOC 는 데이터/거동 모델들을 수신 및 이용하여, 의심스러운 또는 성능-열화시키는 모바일 디바이스 거동들, 소프트웨어 애플리케이션들, 프로세스들, 등을 식별할 수도 있다.
SOC (100) 는 또한 스피커들, 사용자 인터페이스 엘리먼트들 (예컨대, 입력 버튼들, 터치 스크린 디스플레이, 등), 마이크로폰 어레이들, 물리적인 조건들 (예컨대, 로케이션, 방향, 모션, 방위, 진동, 압력, 등) 을 모니터링하기 위한 센서들, 카메라들, 컴파스들, 위성 위치확인 시스템 (GPS) 수신기들, 통신 회로부 (예컨대, 블루투스®, WLAN, WiFi, 등), 및 현대의 전자 디바이스들의 다른 널리 공지된 컴포넌트들 (예컨대, 가속도계, 등) 을 포함한, 센서들로부터 센서 데이터를 수집하는데 적합한 하드웨어 및/또는 소프트웨어 컴포넌트들을 포함할 수도 있다.
위에서 설명된 모바일 디바이스 (102) 및 SOC (100) 에 더해서, 다양한 실시형태들이 단일 프로세서, 다수의 프로세서들, 멀티코어 프로세서들, 또는 이들의 임의의 조합을 포함할 수도 있는, 매우 다양한 컴퓨팅 시스템들에서 구현될 수도 있다.
도 2a 는 거동 분석 기법들을 이용하여 비-호의적인 디바이스 거동들을 식별하여 반응하도록 구성된 거동-기반의 보안 시스템 (200) 을 포함하는 일 실시형태 컴퓨팅 디바이스 (102) 에서 예시적인 논리적 컴포넌트들 및 정보 흐름들을 예시한다. 도 2a 에 예시된 예에서, 컴퓨팅 디바이스는 거동 관측기 모듈 (202), 거동 추출기 모듈 (204), 거동 분석기 모듈 (208), 엑츄에이터 모듈 (210), 및 거동 화이트 리스트 (212) 를 포함하는 실행가능한 명령 모듈들로 구성된 디바이스 프로세서 (즉, 모바일 디바이스 프로세서) 를 포함하는 모바일 컴퓨팅 디바이스 (102) 이다. 모듈들 (202-210) 의 각각은 소프트웨어, 하드웨어, 또는 이들의 조합으로 구현되는 쓰레드, 프로세스, 데몬, 모듈, 서브-시스템, 또는 컴포넌트일 수도 있다. 다양한 실시형태들에서, 모듈들 (202-210) 은 운영 시스템의 부분들 내에 (예컨대, 커널 내, 커널 공간에, 사용자 공간에, 등등에), 별개의 프로그램들 또는 애플리케이션들 내에, 특수화된 하드웨어 버퍼들 또는 프로세서들로, 또는 이들의 임의의 조합으로 구현될 수도 있다. 일 실시형태에서, 모듈들 (202-210) 중 하나 이상은 모바일 컴퓨팅 디바이스 (102) 의 하나 이상의 프로세서들 상에서 실행하는 소프트웨어 명령들로서 구현될 수도 있다.
거동 관측기 모듈 (202) 은 애플리케이션 프로그래밍 인터페이스들 (API들), 카운터들, 하드웨어 모니터들, 등을 디바이스의 다양한 레벨들/모듈들에서 구현하고, 다양한 레벨들/모듈들에서 어떤 시간 기간에 걸쳐서 활동들, 조건들, 동작들, 및 이벤트들 (예컨대, 시스템 이벤트들, 상태 변화들, 등) 을 모니터링하도록 구성될 수도 있다. 예를 들어, 거동 관측기 모듈 (202) 은 모바일 컴퓨팅 디바이스 (102) 의 다양한 소프트웨어 및 하드웨어 컴포넌트들을 모니터링하고, 모바일 컴퓨팅 디바이스 (102) 의 활동들과 연관되는 모니터링된 및 측정가능한 컴포넌트들의 상호작용들, 통신들, 트랜잭션들, 이벤트들, 또는 동작들에 관한 거동 정보를 수집하도록 구성될 수도 있다. 이러한 활동들은 하드웨어 컴포넌트의 소프트웨어 애플리케이션의 사용, 동작 또는 태스크의 수행, 모바일 컴퓨팅 디바이스 (102) 의 프로세싱 코어에서의 소프트웨어 애플리케이션의 실행, 프로세스의 실행, 태스크 또는 동작의 수행, 디바이스 거동, 등을 포함한다.
추가적인 예로서, 거동 관측기 모듈 (202) 은 소프트웨어 애플리케이션들에 의한 디바이스 메모리의 할당 또는 사용을 모니터링함으로써 모바일 컴퓨팅 디바이스 (102) 의 활동들을 모니터링하도록 구성될 수도 있다. 일 실시형태에서, 이것은 컴퓨팅 디바이스의 메모리 관리 시스템 (예컨대, 가상 메모리 관리기, 메모리 관리 유닛, 등) 의 동작들을 모니터링함으로써 달성될 수도 있다. 이러한 시스템들은 일반적으로 하나의 프로세스에 의해 사용되는 메모리가 다른 프로세스에 의해 이미 사용중인 메모리와 간섭하지 않도록 보장하기 위해서 다양한 애플리케이션 프로그램들에 의한 시스템 메모리의 할당 및 사용을 관리하는 것을 담당한다. 따라서, 메모리 관리 시스템의 동작들을 모니터링함으로써, 디바이스 프로세서는 2개의 애플리케이션들이 협력하여 동작하고 있는지 여부, 예컨대, 2개의 프로세스들이 동일한 메모리 공간을 할당받았는지, 정보를 동일한 메모리 어드레스 또는 로케이션에 기록하고 판독하고 있는지, 또는 다른 의심스러운 메모리-관련된 동작들을 수행하고 있는지 여부를 결정할 때에 사용하기에 적당한 거동 정보를 수집할 수도 있다.
거동 관측기 모듈 (202) 은 모니터링된 활동들, 조건들, 동작들, 또는 이벤트들에 관한 거동 정보를 수집하고, 수집된 정보를 메모리에 (예컨대, 로그 파일, 등에) 저장할 수도 있다. 거동 관측기 모듈 (202) 은 그후, 수집된 거동 정보를 (예컨대, 메모리 기록 동작, 함수 호출, 등을 통해서) 거동 추출기 모듈 (204) 로 통신할 수도 있다.
일 실시형태에서, 거동 관측기 모듈 (202) 은 디바이스 메모리의 할당 또는 사용을 하드웨어 레벨에서 및/또는 하드웨어 이벤트들 (예컨대, 메모리 판독 및 기록 동작들, 등) 에 적어도 부분적으로 기초하여 모니터링함으로써 모바일 컴퓨팅 디바이스 (102) 의 활동들을 모니터링하도록 구성될 수도 있다. 추가 실시형태들에서, 거동 관측기 모듈 (202) 은 모니터링 기능들의 더 빠른, 거의 실시간 실행을 위해 하드웨어 모듈로 구현될 수도 있다. 예를 들어, 거동 관측기 모듈 (202) 은 프로그래밍가능 로직 엘리먼트들이 컴퓨팅 디바이스 메모리의 할당 또는 사용을 하드웨어 레벨에서 및/또는 하드웨어 이벤트들 (예컨대, 메모리 판독 및 기록 동작들, 등) 에 적어도 부분적으로 기초하여 모니터링하도록 구성된 프로그래밍가능 로직 회로 (PLC) 를 포함하는 하드웨어 모듈로 구현되며, 그렇지 않으면 다양한 실시형태들을 구현할 수도 있다. 이러한 하드웨어 모듈은 하드웨어 이벤트 모니터링의 결과들을 거동 추출기 모듈 (204) 을 구현하는 디바이스 프로세서로 출력할 수도 있다. PLC 는 어떤 하드웨어를 모니터링하고 널리 공지된 PLC 프로그래밍 방법들을 이용하여 본원에서 설명하는 다양한 실시형태들의 어떤 동작들을 구현하도록 구성될 수도 있다. 하드웨어 모듈에서 실시형태 방법들의 일부 동작을 구현하는 다른 회로들이 또한 사용될 수도 있다.
이와 유사하게, 모듈들 (202-210) 의 각각은 예컨대, 실시형태 방법들의 일부 동작을 수행하기 위해 PLC 프로그래밍 방법들을 이용하여 구성된 PLC 엘리먼트(들) 와 함께 SoC 에 하나 또는 PLC 엘리먼트들을 포함시킴으로써, 하드웨어 모듈들로 구현될 수도 있다.
거동 추출기 모듈 (204) 은 수집된 거동 정보를 수신하거나 또는 취출하고, 이 정보를 이용하여 하나 이상의 거동 벡터들을 발생시키도록 구성될 수도 있다. 다양한 실시형태들에서, 거동 추출기 모듈 (204) 은 소프트웨어 애플리케이션들의 관측된 거동들, 관계들, 또는 상호작용들의 간명한 정의를 포함하도록 거동 벡터들을 발생시키도록 구성될 수도 있다. 예를 들어, 각각의 거동 벡터는 소프트웨어 애플리케이션들의 수집된 거동을 값 또는 벡터 데이터-구조로 간결하게 기술할 수도 있다. 벡터 데이터-구조는 컴퓨팅 디바이스의 카메라가 사용중인지 여부 (예컨대, 제로 또는 1 로서), 얼마나 많은 네트워크 트래픽이 컴퓨팅 디바이스로부터 송신되거나 그에 의해 발생되었는지 (예컨대, 20 KB/sec, 등), 얼마나 많은 인터넷 메시지들이 통신되었는지 (예컨대, SMS 메시지들의 개수, 등), 및/또는 임의의 거동 관측기 모듈 (202) 에 의해 수집된 다른 거동 정보와 같은, 디바이스의 특징, 활동 또는 거동을 각각 의미하는 일련의 숫자들을 포함할 수도 있다. 일 실시형태에서, 거동 추출기 모듈 (204) 은 거동 벡터들이 컴퓨팅 디바이스 시스템 (예컨대, 거동 분석기 모듈 (208)) 으로 하여금 애플리케이션들 사이의 관계들을 빠르게 인식하거나, 식별하거나, 또는 분석가능하게 하는 식별자로서 기능하도록 거동벡터들을 발생시키도록 구성될 수도 있다.
거동 분석기 모듈 (208) 은 거동 벡터들을 분류자 모듈들에 적용하여 2개 이상의 소프트웨어 애플리케이션들 사이의 관계의 성질을 식별하도록 구성될 수도 있다. 거동 분석기 모듈 (208) 은 또한 거동 벡터들을 분류자 모듈들에 적용하여, 수집된 디바이스 거동 (즉, 디바이스 상에서 동작하는 2개 이상의 소프트웨어 애플리케이션들의 수집된 활동들) 이 시간 경과에 따른 디바이스의 열화에 기여하고 있는 (또는, 기여할 가능성이 있는) 및/또는 아니면 디바이스 상에서 문제들을 일으킬 수도 있는 비-호의적인 거동인지 여부를 결정하도록 구성될 수도 있다.
거동 분석기 모듈 (208) 은 엑츄에이터 모듈 (210) 에게 활동 또는 거동이 호의적이 아니라고 통지할 수도 있다. 이에 응답하여, 엑츄에이터 모듈 (210) 은 식별된 문제들을 치유하거나, 치료하거나, 분리하거나, 또는 아니면 수리하는 다양한 액션들 또는 동작들을 수행할 수도 있다. 예를 들어, 엑츄에이터 모듈 (210) 은 (예컨대, 분석기 모듈에 의해) 거동 벡터를 분류자 모델에 적용한 결과가 소프트웨어 애플리케이션의 수집된 거동이 호의적이 아니라고 표시할 때 소프트웨어 애플리케이션들 중 하나 이상을 중지시키거나 또는 종료시키도록 구성될 수도 있다.
다양한 실시형태들에서, 거동 관측기 모듈 (202) 은 애플리케이션 프레임워크 또는 런-타임 라이브러리들에서의 라이브러리 애플리케이션 프로그래밍 인터페이스 (API) 콜들, 시스템 콜 API들, 파일-시스템 및 네트워킹 서브-시스템 동작들, (센서 디바이스들을 포함한) 디바이스 상태 변화들, 및 다른 유사한 이벤트들에 관련한 정보를 수집함으로써, 모바일 컴퓨팅 디바이스 (102) 의 활동들을 모니터링하도록 구성될 수도 있다. 또한, 거동 관측기 모듈 (202) 은 파일 이름들, 파일 액세스들 (개인 정보 또는 정상 데이터 파일들) 의 카테고리들, 생성하는 또는 삭제하는 파일들 (예컨대, 유형 exe, zip, 등), 파일 판독/기록/추적 동작들, 변경하는 파일 허가들, 등에 대한 탐색을 포함할 수도 있는, 파일 시스템 활동을 모니터링할 수도 있다.
거동 관측기 모듈 (202) 은 또한 디바이스가 접속되는 접속들, 프로토콜들, 포트 번호들, 서버/클라이언트의 유형들, 접속들의 수, 통신들의 양 또는 빈도, 등을 포함할 수도 있는, 데이터 네트워크 활동을 모니터링함으로써, 모바일 컴퓨팅 디바이스 (102) 의 활동들을 모니터링할 수도 있다. 거동 관측기 모듈 (202) 은 전송되거나, 수신되거나, 또는 인터셉터된 콜들 또는 메시지들 (예컨대, SMS, 등) 의 유형 및 개수 (예컨대, 발해지는 프리미엄 콜들 (premium calls) 의 수) 를 모니터링하는 것을 포함할 수도 있는, 전화 네트워크 활동을 모니터링할 수도 있다.
거동 관측기 모듈 (202) 은 또한 분기들 (forks) 의 개수, 메모리 액세스 동작들, 열린 파일들의 개수, 등을 모니터링하는 것을 포함할 수도 있는, 시스템 리소스 사용을 모니터링함으로써, 모바일 컴퓨팅 디바이스 (102) 의 활동들을 모니터링할 수도 있다. 거동 관측기 모듈 (202) 은 디스플레이가 온 또는 오프인지 여부, 디바이스가 잠겨져 있는지 또는 잠겨지지 않은지 여부, 남은 배터리의 양, 카메라의 상태, 등과 같은 다양한 인자들을 모니터링하는 것을 포함할 수도 있는, 모바일 컴퓨팅 디바이스 (102) 의 상태를 모니터링할 수도 있다. 거동 관측기 모듈 (202) 은 또한 예를 들어, 모니터링하는 중요 서비스들에 대한 의도들 (브라우저, 계약 제공자 (contracts provider), 등), 프로세스간 통신들의 정도, 팝-업 윈도우들, 등을 모니터링함으로써, 프로세스간 통신들 (IPC) 을 모니터링할 수도 있다.
거동 관측기 모듈 (202) 은 또한 카메라들, 센서들, 전자 디스플레이들, WiFi 통신 컴포넌트들, 데이터 제어기들, 메모리 제어기들, 시스템 제어기들, 액세스 포트들, 타이머들, 주변장치 디바이스들, 무선 통신 컴포넌트들, 외부 메모리 칩들, 전압 조정기들, 발진기들, 위상-동기 루프들, 주변장치 브릿지들, 및 프로세서들 및 스마트 디바이스 상에서 실행하는 클라이언트들을 지원하는데 사용되는 다른 유사한 컴포넌트들을 포함할 수도 있는, 하나 이상의 하드웨어 컴포넌트들의 드라이버 통계치들 및/또는 스테이터스를 모니터링함으로써, 모바일 컴퓨팅 디바이스 (102) 의 활동들을 모니터링할 수도 있다.
거동 관측기 모듈 (202) 은 또한 모바일 컴퓨팅 디바이스 (102) 및/또는 컴퓨팅 디바이스 서브-시스템들의 상태 또는 스테이터스를 표시하는 하나 이상의 하드웨어 카운터들을 모니터링함으로써, 모바일 컴퓨팅 디바이스 (102) 의 활동들을 모니터링할 수도 있다. 하드웨어 카운터는 모바일 컴퓨팅 디바이스 (102) 에서 일어나는 하드웨어-관련된 활동들 또는 이벤트들의 카운트 값 또는 상태를 저장하도록 구성되는 프로세서들/코어들의 특수-목적 레지스터를 포함할 수도 있다.
거동 관측기 유닛 (202) 은 또한 소프트웨어 애플리케이션들의 액션들 또는 동작들, 애플리케이션 다운로드 서버 (예컨대, 애플® 앱 스토어 서버) 로부터의 소프트웨어 다운로드들, 소프트웨어 애플리케이션들에 의해 사용되는 컴퓨팅 디바이스 정보, 콜 정보, 텍스트 메시징 정보 (예컨대, SendSMS, BlockSMS, ReadSMS, 등), 미디어 메시징 정보 (예컨대, ReceiveMMS), 사용자 계정 정보, 로케이션 정보, 카메라 정보, 가속도계 정보, 브라우저 정보, 브라우저-기반의 통신들의 콘텐츠, 보이스-기반의 통신들의 콘텐츠, 단거리 무선 통신들 (예컨대, 블루투스®, WiFi, 등), 텍스트-기반의 통신들의 콘텐츠, 리코딩된 오디오 파일들의 콘텐츠, 전화번호부 또는 연락처, 연락처 리스트들, 등을 모니터링함으로써, 모바일 컴퓨팅 디바이스 (102) 의 활동들을 모니터링할 수도 있다.
거동 관측기 모듈 (202) 은 또한 음성메일 (VoiceMailComm), 디바이스 식별자들 (DeviceIDComm), 사용자 계정 정보 (UserAccountComm), 캘린더 정보 (CalendarComm), 로케이션 정보 (LocationComm), 리코딩된 오디오 정보 (RecordAudioComm), 가속도계 정보 (AccelerometerComm), 등을 포함하는 통신들을 포함하는, 모바일 컴퓨팅 디바이스 (102) 의 송신들 또는 통신들을 모니터링함으로써, 모바일 컴퓨팅 디바이스 (102) 의 활동들을 모니터링할 수도 있다.
거동 관측기 모듈 (202) 은 또한 컴파스 정보, 컴퓨팅 디바이스 설정들, 배터리 수명, 자이로스코프 정보, 압력 센서들, 마그넷 센서들, 스크린 활동, 등의 사용 및 업데이트들/변화들을 모니터링함으로써, 모바일 컴퓨팅 디바이스 (102) 의 활동들을 모니터링할 수도 있다. 거동 관측기 모듈 (202) 은 소프트웨어 애플리케이션으로 송신된 및 그로부터 수신된 통지들 (AppNotifications), 애플리케이션 업데이트들, 등을 모니터링할 수도 있다. 거동 관측기 모듈 (202) 은 제 2 소프트웨어 애플리케이션의 다운로딩 및/또는 설치를 요청하는 제 1 소프트웨어 애플리케이션에 관련한 조건들 또는 이벤트들을 모니터링할 수도 있다. 거동 관측기 모듈 (202) 은 패스워드의 엔트리, 등과 같은, 사용자 검증에 관련한 조건들 또는 이벤트들을 모니터링할 수도 있다.
거동 관측기 모듈 (202) 은 또한 애플리케이션 레벨, 무선 레벨, 및 센서 레벨을 포함한, 모바일 컴퓨팅 디바이스 (102) 의 다수의 레벨들에서, 조건들 또는 이벤트들을 모니터링함으로써, 모바일 컴퓨팅 디바이스 (102) 의 활동들을 모니터링할 수도 있다. 애플리케이션 레벨 관측들은 사용자를 안면 인식 소프트웨어를 통해서 관측하거나, 소셜 스트림들을 관측하거나, 사용자에 의해 기입된 노트들 (notes) 을 관측하거나, 패스북®, 구글® 월렛, 페이팔®, 및 다른 유사한 애플리케이션들 또는 서비스들의 사용에 관련한 이벤트들을 관측하는 것을 포함할 수도 있다. 애플리케이션 레벨 관측들은 또한 가상 사설 네트워크들 (VPN들) 의 사용에 관련한 이벤트들, 및 동기화, 보이스 탐색들, 보이스 제어 (예컨대, 하나의 단어를 말하여 폰을 잠그거나 해제하는 것), 언어 번역기들, 계산들을 위한 데이터의 오프로딩, 비디오 스트리밍, 사용자 활동 없는 카메라 사용, 사용자 활동 없는 마이크로폰 사용, 등에 관련한 이벤트들을 관측하는 것을 포함할 수도 있다.
무선 레벨 관측들은 무선 통신 링크들을 확립하거나 또는 정보를 송신하기 전 모바일 컴퓨팅 디바이스 (102) 와의 사용자 상호작용, 이중/다수의 가입자 식별 모듈 (SIM) 카드들, 인터넷 라디오, 모바일 폰 테더링, 계산들을 위한 데이터 오프로딩, 디바이스 상태 통신들, 게임 제어기 또는 홈 제어기로서의 사용, 운송체 통신들, 컴퓨팅 디바이스 동기화, 등 중 임의의 또는 더 많은 존재함, 실존 또는 양을 결정하는 것을 포함할 수도 있다. 무선 레벨 관측들은 또한 측위, 피어-투-피어 (p2p) 통신들, 동기화, 운송체 대 운송체 통신들, 및/또는 머신-대-머신 (m2m) 을 위한 무선들 (WiFi, WiMax, 블루투스, 등) 의 사용을 모니터링하는 것을 포함할 수도 있다. 무선 레벨 관측들은 네트워크 트래픽 사용, 통계치들, 또는 프로파일들을 모니터링하는 것을 더 포함할 수도 있다.
센서 레벨 관측들은 모바일 컴퓨팅 디바이스 (102) 의 사용 및/또는 외부 환경을 결정하기 위해 마그넷 센서 또는 다른 센서를 모니터링하는 것을 포함할 수도 있다. 예를 들어, 컴퓨팅 디바이스 프로세서는 (예컨대, 홀스터 (holster) 내 마그넷을 검출하도록 구성된 마그넷 센서를 통해서) 디바이스가 홀스터에 있는지 또는 (예컨대, 카메라 또는 광 센서에 의해 검출된 광의 양을 통해서) 사용자의 포켓에 있는지 여부를 결정하도록 구성될 수도 있다. 모바일 컴퓨팅 디바이스 (102) 가 홀스터 내에 있는 것으로 검출하는 것은, 예를 들어, 모바일 컴퓨팅 디바이스 (102) 가 홀스터되는 동안 일어나는 사용자에 의한 능동 사용에 관련된 활동들 및 기능들 (예컨대, 사진들 또는 비디오들을 찍는 것, 메시지들을 전송하는 것, 보이스 콜을 시도하는 것, 사운드들을 리코딩하는 것, 등) 이 디바이스 상에서 실행하는 비도덕적 (nefarious) 프로세스들 (예컨대, 사용자를 추적하거나 또는 감시하는 것) 의 표시들일 수 있기 때문에, 수상한 거동들을 인식하는 것에 관련될 수도 있다.
사용 또는 외부 환경들에 관련된 센서 레벨 관측들의 다른 예들은, 근접 장 통신 (NFC) 시그널링을 검출하는 것, 신용 카드 스캐너, 바코드 스캐너, 또는 모바일 태그 리더로부터 정보를 수집하는 것, 범용 시리얼 버스 (USB) 충전 소스의 존재를 검출하는 것, 키보드 또는 보조 디바이스가 모바일 컴퓨팅 디바이스 (102) 에 커플링되어 있다는 것을 검출하는 것, 모바일 컴퓨팅 디바이스 (102) 가 다른 컴퓨팅 디바이스에 (예컨대, USB, 등을 통해서) 커플링되어 있다는 것을 검출하는 것, LED, 플래시, 플래시라이트, 또는 광원이 수정되거나 또는 사용불능되어 있는지 여부를 결정하는 것 (예컨대, 비상 시그널링 앱을 악의적으로 사용불능시키는 것, 등), 스피커 또는 마이크로폰이 턴온되거나 또는 급전되어 있다고 검출하는 것, 충전 또는 급전 이벤트를 검출하는 것, 모바일 컴퓨팅 디바이스 (102) 가 게임 제어기로서 사용되고 있다고 검출하는 것, 등을 포함할 수도 있다. 센서 레벨 관측들은 또한 의료 또는 건강관리 센서들로부터 또는 사용자의 신체를 스캐닝하는 것으로부터 정보를 수집하는 것, USB/오디오 잭에 플러그인된 외부 센서로부터 정보를 수집하는 것, 촉각 또는 햅틱 센서로부터 (예컨대, 진동기 인터페이스, 등을 통해서) 정보를 수집하는 것, 모바일 컴퓨팅 디바이스 (102) 의 열적 상태에 관한 정보를 수집하는 것, 등을 포함할 수도 있다.
모니터링되는 인자들의 개수를 관리가능한 레벨까지 감소시키기 위해, 일 실시형태에서, 거동 관측기 모듈 (202) 은 컴퓨팅 디바이스의 열화에 기여할 수 있는 모든 인자들의 작은 서브세트인 거동들 또는 인자들의 초기 세트를 모니터링/관측함으로써, 조악한 관측들을 수행하도록 구성될 수도 있다. 일 실시형태에서, 거동 관측기 모듈 (202) 은 서버 및/또는 클라우드 서비스 또는 네트워크에서의 컴포넌트로부터 거동들 및/또는 인자들의 초기 세트를 수신할 수도 있다. 일 실시형태에서, 거동들/인자들의 초기 세트는 머신 학습 분류자 모델에 규정될 수도 있다.
각각의 분류자 모델은 컴퓨팅 디바이스의 거동의 특정의 특징 또는 실시형태를 평가하는데 컴퓨팅 디바이스 프로세서에 의해 사용될 수도 있는 데이터 및/또는 정보 구조들 (예컨대, 특징 벡터들, 거동 벡터들, 컴포넌트 리스트들, 등) 을 포함하는 거동 모델일 수도 있다. 각각의 분류자 모델은 또한 컴퓨팅 디바이스에서의 다수의 특징들, 인자들, 데이터 지점들, 엔트리들, API들, 상태들, 조건들, 거동들, 애플리케이션들, 프로세스들, 동작들, 컴포넌트들, 등 (본원에서 일괄하여 "특징들") 을 모니터링하는 결정 기준들을 포함할 수도 있다. 분류자 모델들은 컴퓨팅 디바이스 상에 사전에 설치되거나, 네트워크 서버로부터 다운로드되거나 또는 수신되거나, 컴퓨팅 디바이스에서 발생되거나, 또는 이들의 임의의 조합일 수도 있다. 분류자 모델들은 크라우드 소싱 솔루션들, 거동 모델링 기법들, 머신 학습 알고리즘들, 등을 이용하여 발생될 수도 있다.
각각의 분류자 모델은 전체 분류자 모델 또는 린 분류자 모델로서 카테고리화될 수도 있다. 전체 분류자 모델은 수천 개의 특징들 및 수십억 개의 엔트리들을 포함할 수도 있는, 큰 트레이닝 데이터세트의 함수로서 발생되는 강건한 데이터 모델일 수도 있다. 린 분류자 모델은 특정의 활동이 진행중인 중요한 활동인지 여부 및/또는 특정의 컴퓨팅 디바이스 거동이 호의적이 아닌지 여부를 결정하는데 가장 관련된 특징들/엔트리들만을 단지 포함하거나, 평가하거나, 또는 테스트하는 감소된 데이터세트로부터 발생되는 보다 집중된 데이터 모델일 수도 있다. 일 예로서, 디바이스 프로세서는 네트워크 서버로부터 전체 분류자 모델을 수신하고, 전체 분류자에 적어도 부분적으로 기초하여 컴퓨팅 디바이스에서 린 분류자 모델을 발생시키고, 그리고 로컬로 발생된 린 분류자 모델을 이용하여 디바이스의 거동을 호의적인 것 또는 비-호의적인 것 (예컨대, 악의적인 것, 성능 열화시키는 것, 등) 인 것으로서 분류하도록 구성될 수도 있다.
로컬로 발생된 린 분류자 모델은 컴퓨팅 디바이스에서 발생되는 린 분류자 모델이다. 컴퓨팅 디바이스들 (예컨대, 모바일 디바이스들, 등) 이 구성가능하며 복잡할 수도 있기 때문에, 특정의 디바이스 거동이 비-호의적인지 (예컨대, 악의적인지 또는 성능-열화시키는지) 여부를 결정하는데 가장 중요한 특징들은 각각의 디바이스에 대해 상이할 수도 있다. 또, 각각의 디바이스가 특징들의 상이한 조합을 이용할 수도 있기 때문에, 각각의 디바이스는 특정의 거동을, 예컨대, 비-호의적인 것, 호의적인 것, 또는 의심스러운 것으로서 빠르고 효율적으로 분류하기 위해 그 자신의 모니터링 및/또는 분석을 필요로 할 수도 있다. 게다가, 모니터링 및 분석을 필요로 하는 특징들의 정확한 조합, 및 각각의 특징 또는 특징 조합의 상대적인 우선순위 또는 중요도는, 종종 거동이 모니터링되거나 또는 분석될 특정의 디바이스로부터 획득된 정보를 이용하여 단지 결정될 수 있다. 이들 및 다른 이유들로, 일 실시형태에서, 분류자 모델들은 모델들이 사용되는 컴퓨팅 디바이스에서 발생될 수도 있다. 이들 로컬 분류자 모델들은 디바이스 프로세서로 하여금, 그 특정의 디바이스 상에서의 거동이 비-호의적인지 (예컨대, 그 디바이스의 성능에서의 열화에 기여하는지) 여부를 결정할 때에 가장 중요한 특정의 특징들을 정확하게 식별가능하게 한다. 로컬 분류자 모델들은 또한 디바이스 프로세서로 하여금, 그 특정의 디바이스에서의 거동을 분류하는데 있어 그들의 상대적인 중요도에 따라서 테스트되거나 또는 평가되는 특징들을 우선순위화가능하게 한다.
디바이스-특정의 분류자 모델은 특정의 컴퓨팅 디바이스에서의 활동 또는 거동을 분류하는데 가장 관련되는 것으로 결정된 컴퓨팅 디바이스-특정의 특징들/엔트리들만을 오직 포함하거나, 평가하거나, 또는 테스트하는 집중된 데이터 모델을 포함하는 분류자 모델이다. 애플리케이션-특정의 분류자 모델은 특정의 소프트웨어 애플리케이션을 평가하는데 가장 관련된 특징들/엔트리들만을 오직 포함하거나, 평가하거나, 또는 테스트하는 집중된 데이터 모델을 포함하는 분류자 모델이다. 애플리케이션-특정의 분류자 모델들을 컴퓨팅 디바이스에서 로컬로 동적으로 발생시킴으로써, 디바이스 프로세서는 특정의 소프트웨어 애플리케이션의 동작들이 그 디바이스의 바람직하지 않은 또는 성능 열화시키는 거동에 기여하고 있는지 여부를 결정하는데 가장 중요한 소수의 특징들에 대한 그의 모니터링 및 분석 동작들에 집중할 수도 있다.
멀티-애플리케이션 분류자 모델은 2개 이상의 특정의 소프트웨어 애플리케이션들의 수집된 거동 (또는, 소프트웨어 애플리케이션들의 특정의 유형들) 이 비-호의적인지 여부를 결정하는데 가장 관련된 특징들/엔트리들에 관한 테스트들을 포함하거나 또는 우선순위화하는 집중된 데이터 모델을 포함하는 로컬 분류자 모델일 수도 있다. 멀티-애플리케이션 분류자 모델은 특징들의 집합된 세트를 테스트/평가하는 집합된 특징 세트 및/또는 결정 노드들을 포함할 수도 있다. 디바이스 프로세서는 컴퓨팅 디바이스 상에서 동작하는 2개 이상의 소프트웨어 애플리케이션들 사이의 관계들, 상호작용들, 및/또는 통신들을 식별하는데 가장 관련된 디바이스 특징들을 식별하고, 식별된 디바이스 특징들 중 하나를 평가하는 테스트 조건들을 식별하고, 식별된 테스트 조건들의 우선순위, 중요도, 또는 성공률들을 결정하고, 식별된 테스트 조건들을 그들의 중요도 또는 성공률들에 따라서 우선순위화하거나 또는 순서정렬하고, 그리고 식별된 테스트 조건들이 그들의 결정된 우선순위들, 중요도, 또는 성공률들에 따라서 순서정렬되게 그 식별된 테스트 조건들을 포함하도록 분류자 모델을 발생시킴으로써, 멀티-애플리케이션 분류자 모델을 발생시키도록 구성될 수도 있다. 디바이스 프로세서는 또한 2개 이상의 애플리케이션-특정의 분류자 모델들을 결합함으로써 멀티-애플리케이션 분류자 모델을 발생시키도록 구성될 수도 있다.
다양한 실시형태들에서, 디바이스 프로세서는 2개 이상의 애플리케이션들이 공모하거나 또는 협력하여 동작하고 있거나 또는 애플리케이션들이 그룹으로서 함께 분석되어야 한다고 결정하는 것에 응답하여 멀티-애플리케이션 분류자 모델을 발생시키도록 구성될 수도 있다. 디바이스 프로세서는 애플리케이션들의 각각의 식별된 그룹 또는 클래스에 대해 멀티-애플리케이션 분류자 모델을 발생시키도록 구성될 수도 있다. 그러나, 모든 그룹을 분석하는 것은 상당한 양의 디바이스의 제한된 리소스들을 소비할 수도 있다. 따라서, 일 실시형태에서, 디바이스 프로세서는 애플리케이션이 공모 거동에 참여할 확률을 (예컨대, 다른 애플리케이션들, 등과의 그의 상호작용들에 적어도 부분적으로 기초하여) 결정하고, 그리고 공모 거동의 높은 확률이 있는 소프트웨어 애플리케이션들을 포함하는 그룹들에 대해서만 오직 분류자 모델들을 지능적으로 발생시키도록 구성될 수도 있다.
거동 분석기 모듈 (208) 은 거동 추출기 모듈 (204) 에 의해 발생된 거동 벡터들을 분류자 모델에 적용하여 모니터링된 활동 (또는, 거동) 이 호의적인지 또는 비-호의적인지 여부를 결정하도록 구성될 수도 있다. 일 실시형태에서, 거동 분석기 모듈 (208) 은 그의 거동 분석 동작들의 결과들이 거동을 호의적인 것 또는 비-호의적인 것으로서 분류하기에 충분한 정보를 제공하지 않을 때 거동을 "의심스러운" 것으로서 분류할 수도 있다.
거동 분석기 모듈 (208) 은 공모하는 소프트웨어 애플리케이션들을 식별하는 것, 어떤 애플리케이션들이 그룹으로서 평가되어야 한다고 결정하는 것에 응답하여, 및/또는 모니터링된 활동 또는 거동이 의심스럽다고 결정하는 것에 응답하여, 거동 관측기 모듈 (202) 에게 통지하도록 구성될 수도 있다. 이에 응답하여, 거동 관측기 모듈 (202) 은 그의 관측들의 그래뉼래러티 (즉, 컴퓨팅 디바이스 특징들이 모니터링되는 세부 사항의 레벨) 를 조정하거나 및/또는 거동 분석기 모듈 (208) 로부터 수신된 정보 (예컨대, 실시간 분석 동작들의 결과들) 에 적어도 부분적으로 기초하여 모니터링되는 애플리케이션들/인자들/거동들을 변경하고, 새로운 또는 추가적인 거동 정보를 발생시키거나 또는 수집하고, 그리고 추가적인 분석/분류를 위해 새로운/추가 정보를 거동 분석기 모듈 (208) 로 전송할 수도 있다.
거동 관측기 모듈 (202) 과 거동 분석기 모듈 (208) 사이의 이러한 피드백 통신들은 모바일 컴퓨팅 디바이스 (102) 로 하여금, 관측들의 그래뉼래러티를 회귀적으로 증가시킬 수 있게 하거나 (즉, 더 정밀한 또는 좀더 상세한 관측들을 행할 수 있게 하거나), 또는 수집된 거동이 호의적인 것 또는 비-호의적인 것으로서 분류될 때까지, 의심스러운 또는 성능-열화시키는 거동의 원인이 식별될 때까지, 프로세싱 또는 배터리 소비 임계치에 도달될 때까지, 또는 관측 그래뉼래러티에서의 추가적인 변화들, 조정들, 또는 증가들로부터 의심스러운 또는 성능-열화시키는 디바이스 거동의 원인이 식별될 수 없다고 디바이스 프로세서가 결정할 때까지, 관측되는 특징들/거동들을 변경가능하게 한다. 이러한 피드백 통신은 또한 모바일 컴퓨팅 디바이스 (102) 로 하여금, 과도한 양의 컴퓨팅 디바이스의 프로세싱, 메모리, 또는 에너지 리소스들을 소비함이 없이, 거동 벡터들 및 분류자 모델들을 조정하거나 또는 수정가능하게 한다.
거동 관측기 모듈 (202) 및 거동 분석기 모듈 (208) 은, 제한된 그리고 대략적인 관측들로부터 수상한 거동을 식별하고, 더욱더 자세하게 관측할 거동들을 동적으로 결정하고, 그리고 관측들에 요구되는 세부 사항의 레벨을 동적으로 결정하기 위해, 개별적으로 또는 일괄하여, 컴퓨팅 시스템의 거동들의 실시간 거동 분석을 제공할 수도 있다. 이것은 모바일 컴퓨팅 디바이스 (102) 로 하여금, 디바이스 상에서 대량의 프로세서, 메모리, 또는 배터리 리소스들을 필요로 함이 없이 문제들을 효율적으로 식별하고 방지가능하게 한다.
다양한 실시형태들에서, 모바일 컴퓨팅 디바이스 (102) 의 디바이스 프로세서는 근접 모니터링을 필요로 하는 임계 데이터 리소스를 식별하고, 임계 데이터 리소스에 액세스할 때 소프트웨어 애플리케이션들에 의해 이루어지는 API 콜들을 (예컨대, 거동 관측기 모듈 (202) 을 통해서) 모니터링하고, API 콜들의 패턴을 2개 이상의 소프트웨어 애플리케이션들에 의한 비-호의적인 거동을 표시하는 것으로서 식별하고, API 콜들의 식별된 패턴 및 리소스 사용에 적어도 부분적으로 기초하여 거동 벡터를 발생시키고, 거동 벡터를 이용하여 (예컨대, 거동 분석기 모듈 (208) 을 통해서) 거동 분석 동작들을 수행하고, 그리고 소프트웨어 애플리케이션 중 하나 이상이 비-호의적인지 여부를 거동 분석 동작들에 적어도 부분적으로 기초하여 결정하도록 구성될 수도 있다.
일 실시형태에서, 디바이스 프로세서는 컴퓨팅 디바이스 상에서 동작하는 소프트웨어 애플리케이션들에 의해 가장 빈번하게 사용되는 API들을 식별하고, 식별된 핫 (hot) API들의 사용에 관한 정보를 디바이스의 메모리의 API 로그에 저장하고, 그리고 API 로그에 저장된 정보에 적어도 부분적으로 기초하여 거동 분석 동작들을 수행하여 비-호의적인 거동을 식별하도록 구성될 수도 있다.
다양한 실시형태들에서, 모바일 컴퓨팅 디바이스 (102) 는 활동 또는 거동이 비-호의적인지 여부를 결정하는데 가장 관련되는 특징들, 인자들, 및 데이터 지점들을 지능적으로 그리고 효율적으로 식별하기 위해 네트워크 서버와 함께 동작하도록 구성될 수도 있다. 예를 들어, 디바이스 프로세서는 네트워크 서버로부터 전체 분류자 모델을 수신하고, 수신된 전체 분류자 모델을 이용하여 컴퓨팅 디바이스 또는 디바이스 상에서 동작하는 소프트웨어 애플리케이션들의 특징들 및 기능들에 특정적인 린 분류자 모델들 (즉, 데이터/거동 모델들) 을 발생시키도록 구성될 수도 있다. 디바이스 프로세서는 전체 분류자 모델을 이용하여 가변 레벨들의 복잡도 (또는, "린니스") 의 린 분류자 모델들의 패밀리를 발생시킨다. 린 분류자 모델들의 리니스트 (leanest) 패밀리 (즉, 가장 적은 개수의 테스트 조건들에 적어도 부분적으로 기초한 린 분류자 모델) 는 모델이 호의적인 것 또는 호의적이지 않은 것으로서 카테고리화될 수 없는 (따라서, 모델이 의심스러운 것으로서 분류되는) 거동이 조우될 때까지 정해진 순서로 적용될 수도 있으며, 이 경우, 더 강건한 (즉, 덜 린한 (less lean)) 린 분류자 모델이 거동을 카테고리화하려고 시도할 때에 적용될 수도 있다. 발생된 린 분류자 모델들의 패밀리 내 더욱더 강건한 린 분류자 모델들의 적용은 거동의 결정적인 분류가 달성될 때까지 적용될 수도 있다. 이와 같이, 디바이스 프로세서는 가장 완전하지만, 리소스-집약적인 린 분류자 모델들의 사용을 거동을 명확하게 분류하는데 강건한 분류자 모델이 요구되는 그들 상황들에 제한함으로써, 효율과 정확도 사이에서 균형을 맞출 수 있다.
다양한 실시형태들에서, 디바이스 프로세서는 전체 분류자 모델에 포함된 유한 상태 머신 표현/수식을 부스트된 결정 스텀프들로 변환함으로써 린 분류자 모델들을 발생시키도록 구성될 수도 있다. 디바이스 프로세서는 디바이스-특정의 특징들, 조건들, 또는 구성들에 적어도 부분적으로 기초하여, 부스트된 결정 스텀프들의 전체 세트를 프루닝 (pruning) 하거나 또는 컬링 (culling) 하여, 전체 분류자 모델에 포함된 부스트된 결정 스텀프들의 서브세트를 포함하는 분류자 모델을 발생시킬 수도 있다. 디바이스 프로세서는 그후 린 분류자 모델을 이용하여, 컴퓨팅 디바이스 거동을 지능적으로 모니터링하고, 분석하고 및/또는 분류할 수도 있다.
부스트된 결정 스텀프들은 정확히 하나의 노드 (따라서, 하나의 테스트 질문 또는 테스트 조건) 및 가중 값을 가지는 하나의 레벨 결정 트리들이며, 따라서 데이터/거동들의 2진 분류에서의 사용에 아주 적합하다. 즉, 거동 벡터를 부스트된 결정 스텀프에 적용하는 것은 2진 응답 (예컨대, 예 또는 아니오) 를 초래한다. 예를 들어, 부스트된 결정 스텀프에 의해 테스트된 질문/조건이 "단문 메시지 서비스 (SMS) 송신들의 빈도가 분당 x 미만인가" 이면, "3" 의 값을 부스트된 결정 스텀프에 적용하는 것은 ("3 미만" SMS 송신들에 대해) "예" 응답 또는 ("3 또는 더 이상" SMS 송신들에 대해) "아니오" 응답을 초래할 것이다.
부스트된 결정 스텀프들은 병렬화가능하며, 이는 다수의 스텀프들이 (예컨대, 컴퓨팅 디바이스에서의 다수의 코어들 또는 프로세서들에 의해) 병렬로/동시에 적용되거나 또는 테스트되므로, 효율을 증가시킬 수 있다는 것을 의미한다.
일 실시형태에서, 디바이스 프로세서는 전체 분류자 모델에 포함된 분류자 기준들의 서브세트 및 컴퓨팅 디바이스 구성, 기능성, 및 접속된/포함된 하드웨어에 관련된 특징들에 대응하는 단지 그들 분류자 기준들만을 포함하는 린 분류자 모델을 발생시키도록 구성될 수도 있다. 디바이스 프로세서는 이 린 분류자 모델(들) 을 이용하여, 디바이스에 존재하거나 또는 관련된 단지 그들 특징들 및 기능들만을 모니터링할 수도 있다. 디바이스 프로세서는 그후 컴퓨팅 디바이스의 현재의 상태 및 구성에 적어도 부분적으로 기초하여 다양한 특징들 및 대응하는 분류자 기준들을 포함하거나 또는 제거하도록 린 분류자 모델(들) 을 주기적으로 수정하거나 또는 재발생시킬 수도 있다.
일 예로서, 디바이스 프로세서는 거동 모델들 (예컨대, 분류자들) 의 전체 특징 세트와 연관되는 결정 스텀프들을 포함하는 큰 부스트된-결정-스텀프들 분류자 모델을 수신하고, 그리고 컴퓨팅 디바이스의 현재의 구성, 기능성, 동작 상태 및/또는 접속된/포함된 하드웨어에 관련되는 큰 분류자 모델(들) 로부터 단지 특징들만을 선택하고 선택된 특징들에 대응하는 부스트된 결정 스텀프들의 서브세트를 린 분류자 모델에 포함시킴으로써 큰 분류자 모델들로부터 하나 이상의 린 분류자 모델들을 도출하도록 구성될 수도 있다. 이 실시형태에서, 컴퓨팅 디바이스에 관련된 특징들에 대응하는 분류자 기준들은 선택된 특징들 중 적어도 하나를 테스트하는 큰 분류자 모델에 포함된 부스트된 결정 스텀프들일 수도 있다. 디바이스 프로세서는 그후 린 분류자 모델이 애플리케이션-특정의 또는 디바이스-특정의 특징 부스트된 결정 스텀프들을 계속해서 포함하도록 하기 위해서, 컴퓨팅 디바이스의 현재의 상태 및 구성에 적어도 부분적으로 기초하여 다양한 특징들을 포함하거나 또는 제거하도록 부스트된 결정 스텀프들 린 분류자 모델(들) 을 주기적으로 수정하거나 또는 재발생시킬 수도 있다.
게다가, 디바이스 프로세서는 또한 특정의 소프트웨어 애플리케이션들 (구글® 월렛 및 eTrade®) 에, 및/또는 특정 유형의 소프트웨어 애플리케이션 (예컨대, 게임들, 네비게이션, 금융, 뉴스, 생산성, 등) 에 관련된 조건들 또는 특징들을 식별하는 애플리케이션-특정의 분류자 모델들을 동적으로 발생시킬 수도 있다. 이들 분류자 모델들은 전체 분류자 모델에 포함되는 결정 노드들의 (또는, 수신된 전체 분류자 모델로부터 발생된 더 린한 (leaner) 분류자 모델에 포함되는 결정 노드들의) 감소된 및 보다 집중된 서브세트를 포함하도록 발생될 수도 있다. 이들 분류자 모델들은 멀티-애플리케이션 분류자 모델들을 발생시키기 위해 결합될 수도 있다.
다양한 실시형태들에서, 디바이스 프로세서는 시스템에서의 각각의 소프트웨어 애플리케이션에 대해 및/또는 시스템에서의 소프트웨어 애플리케이션의 각각의 유형에 대해 애플리케이션-기반의 분류자 모델들을 발생시키도록 구성될 수도 있다. 디바이스 프로세서는 또한 악용될 위험이 크거나 또는 악용되기 쉬운 소프트웨어 애플리케이션들 및/또는 애플리케이션 유형들 (예컨대, 금융 애플리케이션들, 판매 시점 (point-of-sale) 애플리케이션들, 생체측정 센서 애플리케이션들, 등) 을 동적으로 식별하고, 그리고 악용될 위험이 크거나 또는 악용되기 쉬운 것으로 식별되는 단지 소프트웨어 애플리케이션들 및/또는 애플리케이션 유형들에 대해서만 애플리케이션-기반의 분류자 모델들을 발생시키도록 구성될 수도 있다. 다양한 실시형태들에서, 디바이스 프로세서는 애플리케이션-기반의 분류자 모델들을 동적으로, 반응적으로, 능동적으로, 및/또는 새로운 애플리케이션이 설치되거나 또는 업데이트될 때마다 발생시키도록 구성될 수도 있다.
각각의 소프트웨어 애플리케이션은 일반적으로 컴퓨팅 디바이스 상에서 다수의 태스크들 또는 활동들을 수행한다. 어떤 태스크들/활동들이 컴퓨팅 디바이스에서 수행되는 특정의 실행 상태는 거동 또는 활동이 추가적인 또는 더 정밀한 정밀조사, 모니터링 및/또는 분석을 받을 만한지 여부의 강한 표시자일 수도 있다. 이와 같이, 다양한 실시형태들에서, 디바이스 프로세서는 어떤 태스크들/활동들이 그의 거동 모니터링 및 분석 동작들에 집중하도록 수행되는 실제 실행 상태들을 식별하는 정보를 이용하고, 그리고 활동이 중요한 활동인지 여부 및/또는 활동이 비-호의적인지 여부를 더 잘 결정하도록 구성될 수도 있다.
다양한 실시형태들에서, 디바이스 프로세서는 소프트웨어 애플리케이션에 의해 수행되는 활동들/태스크들을 그들 활동들/태스크들이 수행된 실행 상태들과 연관시키도록 구성될 수도 있다. 예를 들어, 디바이스 프로세서는 실행 상태가 관련되는 소프트웨어의 특징들, 활동들, 또는 동작들 (예컨대, 로케이션 액세스, SMS 판독 동작들, 센서 액세스, 등) 을 리스트하는 하위-벡터 또는 데이터-구조로, 계측형 컴포넌트들을 모니터링하는 것으로부터 수집된 거동 정보를 포함하는 거동 벡터를 발생시키도록 구성될 수도 있다. 일 실시형태에서, 이 하위-벡터/데이터-구조는 각각의 특징/활동/동작이 관측된 실행 상태를 식별하는 쉐도우 특징 값 하위-벡터/데이터-구조와 연관하여 저장될 수도 있다. 일 예로서, 디바이스 프로세서는 소프트웨어 애플리케이션이 백그라운드 상태에서 동작하고 있었을 때 로케이션 정보에 액세스한 횟수 또는 레이트를 그 값이 식별하는 "로케이션_백그라운드" 데이터 필드를 포함하는 거동 벡터를 발생시킬 수도 있다. 이것은 디바이스 프로세서로 하여금 이 실행 상태 정보를 컴퓨팅 디바이스의 다른 관측된/모니터링된 활동들과 독립적으로 및/또는 병렬로 분석가능하게 한다. 이와 같이 거동 벡터를 발생시키는 것은 또한 시스템으로 하여금 시간 경과에 따라 정보 (예컨대, 주파수 또는 레이트) 를 취합가능하게 한다.
다양한 실시형태들에서, 디바이스 프로세서는 모니터링된 활동에 관한 쿼리에 대한 응답을 발생시키기 위해 머신 학습 분류자 내 결정 노드에 입력될 수도 있는 정보를 포함하도록 거동 벡터들을 발생시키도록 구성될 수도 있다.
다양한 실시형태들에서, 디바이스 프로세서는 실행 정보를 포함하도록 거동 벡터들을 발생시키도록 구성될 수도 있다. 실행 정보는 거동 (예컨대, 백그라운드 프로세스에 의해 3초에 5번 사용되는 카메라, 포어그라운드 (foreground) 프로세스에 의해 3초에 3번 사용되는 카메라, 등) 의 부분 또는 독립적인 특징의 부분으로서 거동 벡터에 포함될 수도 있다. 일 실시형태에서, 실행 상태 정보는 쉐도우 특징 값 하위-벡터 또는 데이터 구조로서 거동 벡터에 포함될 수도 있다. 일 실시형태에서, 거동 벡터는 실행 상태가 관련되는 특징들, 활동들, 태스크들과 연관하여 쉐도우 특징 값 하위-벡터/데이터 구조를 저장할 수도 있다.
도 2b 는 머신 학습 기법들을 이용하여 컴퓨팅 디바이스의 성능, 전력 이용 레벨들, 네트워크 사용 레벨들, 보안 및/또는 프라이버시를 열화시킬 수도 있는 조건들 및 거동들을 효율적으로 식별하고, 분류하고, 모델링하고, 방지하고, 및/또는 정정하도록 구성된 거동-기반의 시스템에 의해 디바이스 거동들을 화이트리스트하는 방법 250 을 예시한다. 방법 250 은 모바일 디바이스와 같은, 리소스 속박된 컴퓨팅 디바이스에서의 프로세서 또는 프로세싱 코어에 의해 수행될 수도 있다.
블록 252 에서, 프로세싱 코어는 컴퓨팅 디바이스 상에서 동작하는 소프트웨어 애플리케이션의 활동들을 (예컨대, 도 2a 를 참조하여 위에서 설명된 거동 관측기 모듈 (202) 을 통해서) 모니터링할 수도 있다. 블록 254 에서, 프로세싱 코어는 모니터링된 활동들의 모두 또는 부분을 특징화하는 거동 벡터 정보 구조를 (예컨대, 거동 추출기 모듈 (204) 을 통해서) 발생시킬 수도 있다.
블록 256 에서, 프로세싱 코어는 거동 벡터 정보 구조를 머신 학습 분류자 모델에 적용하여 (예컨대, 거동 분석기 모듈 (208) 을 통해서) 분석 결과들을 발생시킬 수도 있다. 블록 258 에서, 프로세싱 코어는 분석 결과들을 이용하여, 거동 벡터 (따라서, 거동 벡터 정보 구조에 의해 특징화되는 활동들/거동들) 를 분류/하위-분류할 수도 있다. 예를 들어, 프로세싱 코어는 거동 벡터 정보 구조를 호의적인 것, 의심스러운 것 또는 비-호의적인 것으로서 분류하고, 게임, 애드웨어, 등인 것으로 하위-분류할 수도 있다. 일부 실시형태들에서, 프로세싱 코어는 또한 하위-분류들에 적어도 부분적으로 기초하여 거동 벡터 정보 구조에 의해 특징화되는 활동들/거동들의 우선순위 또는 상대적인 중요도 (예컨대, 소프트웨어 애플리케이션 또는 거동이 디바이스의 적합한 기능작용에 가하는 위험 또는 위협의 심각도, 등) 를 결정할 수도 있다. 본 개시물의 다양한 실시형태들에서, 컴퓨팅 디바이스는 각각의 활동 또는 거동과 연관되는 우선순위 또는 중요도 값에 적어도 부분적으로 기초하여 활동들/거동들의 우선순위 또는 상대적인 중요도를 결정하도록 구성될 수도 있다. 우선순위/중요도 값은 미리 결정된 값, 정적 값이거나, 또는 (예컨대, 사전 실행들, 거동 모델들의 이전 적용들, 등으로부터 수집된) 이력적 정보, 새로운 머신 학습, 컨텍스트 모델링, 등에 적어도 부분적으로 기초하여 동적으로 결정될 수도 있다.
결정 블록 260 에서, 프로세싱 코어는 거동 벡터 정보 구조가 호의적인 것으로서 분류되었는지 여부 (또는, 거동 벡터 정보 구조에 의해 특징화되는 활동들/거동들이 호의적인지 여부) 를 결정할 수도 있다. 거동 벡터 정보 구조에 의해 특징화되는 모니터링된 활동들이 호의적인 것으로서 분류되었다고 결정하는 것에 응답하여 (즉, 결정 블록 260 = "예"), 프로세싱 코어는 블록 252 에서 동일한 또는 상이한 소프트웨어 애플리케이션의 활동들을 모니터링하거나 및/또는 본원에서 설명되는 거동-기반의 동작들 중 임의의 것 또는 모두를 수행하는 것을 속행할 수도 있다.
거동 벡터 정보 구조에 의해 특징화되는 모니터링된 활동들이 호의적인 것으로서 분류되지 않았다고 결정하는 것에 응답하여 (즉, 결정 블록 260 = "아니오"), 프로세싱 코어는 결정 블록 262 에서 거동 벡터 정보 구조에 의해 특징화되는 모니터링된 활동들 또는 거동이 화이트리스트 (예컨대, 도 2a 를 참조하여 위에서 설명된 거동 화이트 리스트 (212)) 에 포함되는지 여부를 결정할 수도 있다.
활동들/거동이 화이트리스트에 포함된다고 결정하는 것에 응답하여 (즉, 결정 블록 262 = "예"), 프로세싱 코어는 거동 벡터 정보 구조에 의해 특징화되는 거동을 무시하고, 계속해서, 블록 252 에서 동일한 또는 상이한 소프트웨어 애플리케이션의 활동들을 모니터링하고 및/또는 본원에서 설명되는 거동-기반의 동작들 중 임의의 것 또는 모두를 수행할 수도 있다. 즉, 거동이 호의적이지 않다고 결정하는 것에 응답하여 프롬프트를 사용자에게 디스플레이하는 것 또는 엑츄에이션 동작들을 수행하는 것 대신, 프로세싱 코어는 화이트리스트에의 그의 포함으로 인해 거동 벡터 정보 구조에 의해 특징화되는 의심스러운 또는 잠재적으로 비-호의적인 거동을 무시한다. 따라서, 애플리케이션에 대한 거동 또는 모니터링된 활동을 화이트리스트함으로써, 시스템은 이 애플리케이션에 대한 이 거동 또는 모니터링된 활동을 더 이상 모니터링하지 않으며, 그에 따라서 거동 모니터링과 연관되는 시스템에 의해 프로세싱하는 것을 감소시킬 수도 있다. 이것은 로케이션 트래킹과 같은 매우 일반적인 거동이 되는 경우에 특히 그렇다.
활동들/거동이 화이트리스트에 포함되지 않는다고 결정하는 것에 응답하여 (즉, 결정 블록 262 = "아니오"), 프로세싱 코어는 블록 264 에서 소프트웨어 애플리케이션이 디바이스 상에서 계속해서 동작하도록 허용되는지 여부를 결정/선택하도록 사용자에게 요청하는 프롬프트를 발생시켜 디스플레이할 수도 있다. 프롬프트는 또한 거동이 의심스러운 것 (예컨대, 애드웨어, 등인 것) 으로 결정된 이유들을 식별할 수도 있다.
블록 266 에서, 프로세싱 코어는 소프트웨어 애플리케이션이 디바이스 상에서 계속해서 동작하도록 허용되는지 (예컨대, 사용자에 대한 그 이점들이 그의 부정적인 특성들보다 중요하다는, 등) 를 표시하는 사용자 입력을 수신하고, 수신된 사용자 입력을 이용하여, 모니터링된 활동을 화이트리스트에 추가할지 여부 및/또는 엑츄에이션 동작들을 수행할지 여부를 결정할 수도 있다. 블록 268 에서, 프로세싱 코어는 예컨대, 소프트웨어 애플리케이션이 디바이스 상에서 계속해서 동작하도록 허용된다고 사용자 입력이 표시할 때 거동 벡터 정보 구조에 의해 특징화되는 활동들/거동을 삽입함으로써, 또는 소프트웨어 애플리케이션이 디바이스 상에서 계속해서 동작하지 않아야 한다고 사용자 입력이 표시할 때 소프트웨어 애플리케이션 및/또는 소프트웨어 애플리케이션과 연관되는 거동들 모두를 제거함으로써, 화이트리스트를 업데이트할 수도 있다. 또한, 블록 268 에서, 프로세싱 코어는 예컨대, 소프트웨어 애플리케이션이 디바이스 상에서 계속해서 동작하지 않아야 한다고 사용자 입력이 표시할 때, 하나 이상의 엑츄에이션 동작들을 수행할 (예컨대, 소프트웨어 애플리케이션을 종료시키는 등을 행할) 수도 있다.
도 3a 는 컴퓨팅 디바이스에서 린 또는 집중된 분류자/거동 모델을 발생시키는 방법 300 을 예시한다. 방법 300 은 모바일 디바이스와 같은, 리소스 속박된 컴퓨팅 디바이스에서 프로세서 또는 프로세싱 코어에 의해 수행될 수도 있다. 방법 300 의 블록 302 에서, 프로세싱 코어는 유한 상태 머신, 부스트된 결정 스텀프들의 리스트 또는 다른 유사한 정보 구조이거나 또는 포함하는 전체 분류자 모델을 선택하거나 또는 수신할 수도 있다. 일 실시형태에서, 전체 분류자 모델은 복수의 부스트된 결정 스텀프들을 표현하기에 적합한 정보를 포함하거나 및/또는 컴퓨팅 디바이스에 의한 복수의 부스트된 결정 스텀프들로의 변환에 적합한 정보를 포함하는 유한 상태 머신을 포함한다. 일 실시형태에서, 유한 상태 머신은 부스트된 결정 스텀프들의 순서화된 또는 우선순위화된 리스트일 수도 있다 (또는, 포함할 수도 있다). 부스트된 결정 스텀프들의 각각은 테스트 조건 및 가중 값을 포함할 수도 있다.
위에서 설명된 바와 같이, 부스트된 결정 스텀프들은 정확히 하나의 노드 (따라서, 하나의 테스트 질문 또는 테스트 조건) 및 가중 값을 가지는 하나의 레벨 결정 트리들이며, 따라서 데이터/거동들의 2진 분류에서의 사용에 아주 적합하다. 이것은, 특징 벡터 또는 거동 벡터를 부스트된 결정 스텀프에 적용하는 것이 2진 응답들 (예컨대, 예 또는 아니오) 를 초래한다는 것을 의미한다. 예를 들어, 부스트된 결정 스텀프에 의해 테스트된 질문/조건이 "SMS 송신들의 빈도가 분당 x 미만인가" 이면, "3" 의 값을 부스트된 결정 스텀프에 적용하는 것은 ("3 미만" SMS 송신들에 대해) "예" 응답 또는 ("3 또는 더 이상" SMS 송신들에 대해) "아니오" 응답을 초래할 것이다.
도 3a 로 되돌아가서, 방법 300 의 블록 304 에서, 프로세싱 코어는 컴퓨팅 디바이스의 과도한 양의 프로세싱, 메모리, 또는 에너지 리소스들을 소비함이 없이 컴퓨팅 디바이스 거동을 호의적인 것 또는 비-호의적인 것으로서 정확하게 분류하기 위해 평가되어야 하는 고유한 테스트 조건들의 수를 결정할 수도 있다. 이것은 컴퓨팅 디바이스에서 이용가능한 프로세싱, 메모리, 및/또는 에너지 리소스들의 양, 즉, 조건을 테스트하는데 요구되는 컴퓨팅 디바이스의 프로세싱, 메모리, 또는 에너지 리소스들의 양을 결정하는 것, 조건을 테스트함으로써 컴퓨팅 디바이스에서 분석되거나 또는 평가되는 거동 또는 조건과 연관되는 우선순위 및/또는 복잡도를 결정하는 것, 및 컴퓨팅 디바이스의 가용 프로세싱, 메모리, 또는 에너지 리소스들의 소비, 조건을 테스트하는 것으로부터 얻어지는 거동 분류의 정확도, 및 조건에 의해 테스트되는 거동의 중요도 또는 우선순위 사이에서 균형잡도록 고유한 테스트 조건들의 수를 선택/결정하는 것을 포함할 수도 있다.
블록 306 에서, 프로세싱 코어는 부스트된 결정 스텀프들의 리스트를 시작으로부터 횡단하여 선택된 테스트 조건들의 리스트를 고유한 테스트 조건들의 결정된 개수로 팝퓰레이트할 수도 있다. 일 실시형태에서, 프로세싱 코어는 또한 선택된 테스트 조건들의 각각에 대해 절대적인 또는 상대적인 우선순위 값을 결정하고, 절대적인 또는 상대적인 우선순위들 값을 선택된 테스트 조건들의 리스트에서의 그들의 대응하는 테스트 조건들과 연관하여 저장할 수도 있다.
블록 308 에서, 프로세싱 코어는 선택된 테스트 조건들 중 하나를 테스트하는 전체 분류자 모델에 포함된 모든 부스트된 결정 스텀프들을 포함하는 린 분류자 모델을 발생시킬 수도 있다. 일 실시형태에서, 프로세싱 코어는 부스트된 결정 스텀프들을 중요도 또는 우선순위 값의 순서로 포함하거나 또는 표현하도록 린 분류자 모델을 발생시킬 수도 있다.
옵션적인 블록 310 에서, 고유한 테스트 조건들의 개수는 블록 306 에서 더 큰 개수의 테스트 조건들에 대해 부스트된 결정 스텀프들의 리스트를 횡단하는 동작과 블록 308 에서 다른 린 분류자 모델을 발생시키는 동작을 반복함으로써 다른 더 강건한 (즉, 덜 린한) 린 분류자 모델을 발생시키기 위해 증가될 수도 있다. 이들 동작들은 린 분류자 모델들의 패밀리를 발생시키기 위해 반복될 수도 있다.
도 3b 는 컴퓨팅 디바이스에서 데이터 모델들을 발생시키는 다른 실시형태 방법 311 을 예시한다. 방법 311 은 컴퓨팅 디바이스에서의 프로세싱 코어에 의해 수행될 수도 있다. 방법 311 의 블록 312 에서, 프로세싱 코어는 유한 상태 머신을 포함하는 전체 분류자 모델을 수신할 수도 있다. 유한 상태 머신은 복수의 부스트된 결정 스텀프들로의 변환에 적합한 정보를 포함하는 정보 구조일 수도 있다. 블록 314 에서, 프로세싱 코어는 전체 분류자 모델에 포함된 유한 상태 머신을 테스트 조건 및 가중 값을 포함하는 부스트된 결정 스텀프들로 변환할 수도 있다.
일 실시형태에서, 프로세싱 코어는 또한 블록 312 에서 유한 상태 머신으로부터 발생되는 부스트된 결정 스텀프들의 각각에 대해 우선순위 값들을 계산하거나 또는 결정할 수도 있다. 프로세싱 코어는 부스트된 결정 스텀프들의 우선순위들을 컴퓨팅 디바이스의 프로세싱, 메모리, 또는 에너지 리소스들의 소비, 거동 분류의 정확도, 등 사이의 트레이드오프들을 균형잡는 방법으로 결정할 수도 있다. 예를 들어, 빨리 프로세싱되고 더 에너지 효율적인 (예컨대, 물리 리소스에 전력을 공급할 필요가 없는) 부스트된 결정 스텀프들은 주어진 더 높은 우선순위를 부여받을 수도 있으며, 따라서 (블록 312 에서) 덜 효율적인 부스트된 결정 스텀프들보다 린 분류자 모델에서 구현될 가능성이 높을 수도 있다. 프로세싱 코어는 또한 부스트된 결정 스텀프들의 우선순위들을, 그들의 연관된 가중 값들, 거동을 정확하게 분류하기 위한 테스트 조건들의 상대적인 또는 예측된 중요도, 등에 적어도 부분적으로 기초하여, 결정할 수도 있다.
또한, 블록 312 에서, 프로세싱 코어는 유한 상태 머신으로부터 발생된 부스트된 결정 스텀프들을 그들의 우선순위들에 따라서 및/또는 그들의 중요도의 순서로 포함하고, 참조하고, 식별하고, 및/또는 편성하는 제 1 리스트 (또는, 다른 정보 구조) 를 발생시킬 수도 있다. 예를 들어, 프로세싱 코어는 제 1 아이템으로서 최고 우선순위를 가지는 스텀프, 뒤이어서 제 2 최고 우선순위 값을 가지는 스텀프, 및 기타등등을 포함하는 순서화된 리스트가 되도록 제 1 리스트를 발생시킬 수도 있다. 우선순위들을 이용하여 리스트를 순서정렬함으로써, 프로세싱 코어는 소프트웨어 애플리케이션의 활동들을 모니터링하여 분석하는데 사용되는 컴퓨팅 디바이스의 프로세싱, 메모리, 또는 에너지 리소스들의 양들과, 결정된 제 1 모니터링된 활동의 상대적인 중요도 사이의 트레이드오프들을 균형잡을 수도 있다. 이러한 중요도의 순서는 또한 클라우드 코퍼스 (corpus) 로부터 수집된 정보 뿐만 아니라, 컬링 알고리즘이 실행되고 있는 디바이스에 특정한 정보를 고려할 수도 있다.
블록 316 에서, 프로세싱 코어는 린 분류자 모델을 적용할 때 평가되어야 하는 고유한 테스트 조건들 (즉, 부스트된 결정 스텀프들에서 테스트될 수도 있는 컴퓨팅 디바이스 상태들, 특징들, 거동들, 또는 조건들) 의 개수를 계산하거나 또는 결정할 수도 있다. 이 고유한 테스트 조건들의 개수를 계산하거나 또는 결정하는 것은 모델을 적용하는데 요구되는 컴퓨팅 디바이스의 프로세싱, 메모리, 또는 에너지 리소스들의 소비와, 린 분류자 모델에 의해 달성되어야 하는 거동 분류의 정확도 사이에서 균형 또는 트레이드오프를 맞추는 것을 포함할 수도 있다. 이러한 결정은 컴퓨팅 디바이스에서 이용가능한 프로세싱, 메모리, 및/또는 에너지 리소스들의 양을 결정하는 것, 분석되어야 하는 거동과 연관되는 우선순위 및/또는 복잡도를 결정하는 것, 및 거동의 우선순위 및/또는 복잡도로 가용 리소스들을 균형잡는 것을 포함할 수도 있다.
블록 318 에서, 프로세싱 코어는 부스트된 결정 스텀프들의 제 1 리스트를 순차적으로 횡단하여 각각의 횡단된 부스트된 결정 스텀프와 연관되는 테스트 조건 값들을 제 2 리스트에 삽입함으로써, 제 2 리스트를 발생시킬 수도 있다. 프로세싱 코어는 계속해서, 제 1 리스트를 횡단하여, 제 2 리스트의 길이가 고유한 테스트 조건들의 결정된 개수와 동일할 때까지 또는 제 2 리스트가 고유한 테스트 조건들의 모든 결정된 개수를 포함할 때까지 값들을 제 2 리스트에 삽입할 수도 있다.
블록 320 에서, 프로세싱 코어는 제 1 리스트에 포함된 부스트된 결정 스텀프들에 적어도 부분적으로 기초하여 린 분류자 모델을 발생시킬 수도 있다. 일 실시형태에서, 프로세싱 코어는 제 2 리스트 (즉, 블록 318 에서 발생된 테스트 조건들의 리스트) 에 포함된 테스트 조건들 중 하나를 테스트하는 단지 부스트된 결정 스텀프들만을 포함하도록 린 분류자 모델을 발생시킬 수도 있다. 또, 각각의 스텀프에 의해 테스트되는 특징을 모니터링하는데 사용되는 컴퓨팅 디바이스의 프로세싱, 메모리, 또는 에너지 리소스들의 양과 같은 인자들에 적어도 부분적으로 기초하여 할당된 우선순위들을 이용한 부스트된 결정 스텀프들의 순서화된 리스트를 이용함으로써, 발생된 린 분류자 모델은 소프트웨어 애플리케이션의 활동들을 모니터링하여 분석하는데 사용되는 컴퓨팅 디바이스의 프로세싱, 메모리, 또는 에너지 리소스들의 양들과, 결정된 제 1 모니터링된 활동의 상대적인 중요도 사이의 트레이드오프들을 균형잡을 수도 있다.
옵션적인 블록 322 에서, 고유한 테스트 조건들의 개수는 블록 318 에서 더 큰 개수의 테스트 조건들에 대해 부스트된 결정 스텀프들의 리스트를 횡단하는 동작과 블록 320 에서 다른 린 분류자 모델을 발생시키는 동작을 반복함으로써 다른 더 강건한 (즉, 덜 린한) 린 분류자 모델을 발생시키기 위해 증가될 수도 있다. 이들 동작들은 린 분류자 모델들의 패밀리를 발생시키기 위해 반복될 수도 있다.
도 3c 는 린 분류자 모델을 이용하여 컴퓨팅 디바이스의 거동을 분류하는 일 실시형태 방법 324 을 예시한다. 방법 324 은 컴퓨팅 디바이스에서의 프로세싱 코어에 의해 수행될 수도 있다.
방법 324 의 블록 326 에서, 프로세싱 코어는 관측들을 수행하여, 컴퓨팅 디바이스 시스템의 다양한 레벨들에서 구현되는 다양한 컴포넌트들로부터 거동 정보를 수집할 수도 있다. 일 실시형태에서, 이것은 도 2a 를 참조하여 위에서 설명된 거동 관측기 모듈 (202) 을 통해서 달성될 수도 있다. 블록 328 에서, 프로세싱 코어는 관측들을 특징화하는 거동 벡터, 수집된 거동 정보, 및/또는 컴퓨팅 디바이스 거동을 발생시킬 수도 있다. 또한, 블록 328 에서, 프로세싱 코어는 전체 분류자 모델을 이용하여, 가변 레벨들의 복잡도 (또는, "린니스") 의 린 분류자 모델 또는 린 분류자 모델들의 패밀리를 발생시킬 수도 있다. 이를 달성하기 위해, 프로세싱 코어는 전체 분류자 모델에 포함된 부스트된 결정 스텀프들의 패밀리를 컬링하여, 감소된 개수의 부스트된 결정 스텀프들을 포함하거나 및/또는 제한된 개수의 테스트 조건들을 평가하는 린 분류자 모델들을 발생시킬 수도 있다.
블록 329 에서, 프로세싱 코어는 컴퓨팅 디바이스에 의해 아직 평가되거나 또는 적용되지 않은 린 분류자 모델들의 패밀리 (즉, 가장 적은 개수의 상이한 컴퓨팅 디바이스 상태들, 특징들, 거동들, 또는 조건들에 적어도 부분적으로 기초한 모델) 에서 리니스트 분류자를 선택할 수도 있다. 일 실시형태에서, 이것은 분류자 모델들의 순서화된 리스트에서 제 1 분류자 모델을 선택하는 프로세싱 코어에 의해 달성될 수도 있다.
블록 330 에서, 프로세싱 코어는 수집된 거동 정보 또는 거동 벡터들을 선택된 린 분류자 모델에서의 각각의 부스트된 결정 스텀프에 적용할 수도 있다. 부스트된 결정 스텀프들이 2진 결정들이고 린 분류자 모델이 동일한 테스트 조건에 적어도 부분적으로 기초하는 다수의 2진 결정들을 선택함으로써 발생되기 때문에, 린 분류자 모델에서 거동 벡터를 부스트된 결정 스텀프들에 적용하는 프로세스는 병렬 동작으로 수행될 수도 있다. 대안적으로, 블록 330 에서 적용된 거동 벡터는 린 분류자 모델에 포함된 제한된 개수의 테스트 조건 파라미터들만을 단지 포함하도록 트렁케이트되거나 또는 필터링될 수도 있으며, 이에 의해 모델을 적용할 때에 계산 노고를 추가로 감소시킬 수도 있다.
블록 332 에서, 프로세싱 코어는 수집된 거동 정보를 린 분류자 모델에서의 각각의 부스트된 결정 스텀프에 적용한 결과들의 가중 평균을 계산하거나 또는 결정할 수도 있다. 블록 334 에서, 프로세싱 코어는 계산된 가중 평균을 임계값과 비교할 수도 있다. 결정 블록 335 에서, 프로세싱 코어는 이 비교의 결과들 및/또는 선택된 린 분류자 모델을 적용함으로써 발생된 결과들이 의심스러운지 여부를 결정할 수도 있다. 예를 들어, 프로세싱 코어는 고도의 신뢰도로 이들 결과들이 거동을 호의적인 것 또는 비-호의적인 것으로서 분류하는데 사용될 수 있는지 여부를 결정하고, 만약 사용될 수 없으면 거동을 의심스러운 것으로 취급할 수도 있다.
프로세싱 코어가 결과들이 의심스럽다고 결정하면 (예컨대, 결정 블록 335 = "예"), 프로세싱 코어는 고도의 신뢰도로 거동이 호의적인 것 또는 비-호의적인 것으로서 분류될 때까지 더 많은 디바이스 상태들, 특징들, 거동들, 또는 조건들을 평가하는 더 강한 (즉, 덜 린 (lean) 한) 분류자 모델을 선택하여 적용하기 위해, 블록들 329-334 에서의 동작들을 반복할 수도 있다. 프로세싱 코어가 결과들이 예컨대, 고도의 신뢰도로 거동이 호의적인 것 또는 비-호의적인 것으로서 분류될 수 있다고 결정함으로써 의심스럽지 않다고 결정하면 (예컨대, 결정 블록 335 = "아니오"), 블록 336 에서, 프로세싱 코어는 블록 334 에서 발생된 비교의 결과를 이용하여, 컴퓨팅 디바이스의 거동을 호의적인 것 또는 잠재적으로 비-호의적인으로서 분류할 수도 있다.
도 3d 에 예시된 대안적인 실시형태 방법 340 에서, 블록들 318 및 320 을 참조하여 위에서 설명된 동작들은 린 분류자 모델에 아직 있지 않은 부스트된 결정 스텀프를 순차적으로 선택하고; 선택된 결정 스텀프와 동일한 컴퓨팅 디바이스 상태, 특징, 거동, 또는 조건에 의존하는 (따라서, 하나의 결정 결과에 기초하여 적용될 수 있는) 모든 다른 부스트된 결정 스텀프들을 식별하고; 선택된 부스트된 결정 스텀프 및 동일한 컴퓨팅 디바이스 상태, 특징, 거동, 또는 조건에 의존하는 모든 식별된 다른 부스트된 결정 스텀프들을 린 분류자 모델에 포함시키고; 그리고 테스트 조건들의 결정된 개수와 동일한 횟수 동안 프로세스를 반복함으로써, 달성될 수도 있다. 선택된 부스트된 결정 스텀프와 동일한 테스트 조건에 의존하는 모든 부스트된 결정 스텀프들이 린 분류자 모델에 매번 추가되기 때문에, 이 프로세스가 수행되는 횟수를 제한하는 것은 린 분류자 모델에 포함되는 테스트 조건들의 개수를 제한할 것이다.
도 3d 를 참조하면, 블록 342 에서, 프로세싱 코어는 린 분류자 모델에서 평가되어야 하는 고유한 테스트 조건들 (즉, 부스트된 결정 스텀프들에서 테스트될 수도 있는 컴퓨팅 디바이스 상태들, 특징들, 거동들, 또는 조건들) 의 개수 (N) 를 계산하거나 또는 결정할 수도 있다. 이 고유한 테스트 조건들의 개수를 계산하거나 또는 결정하는 것은 모델을 적용하는데 요구되는 컴퓨팅 디바이스의 프로세싱, 메모리, 또는 에너지 리소스들의 소비와, 린 분류자 모델에 의해 달성되어야 하는 거동 분류의 정확도 사이의 균형 또는 트레이드오프를 맞추는 것을 포함할 수도 있다. 이러한 결정은 컴퓨팅 디바이스에서 이용가능한 프로세싱, 메모리, 및/또는 에너지 리소스들의 양을 결정하는 것, 분석되어야 하는 거동과 연관되는 우선순위 및/또는 복잡도를 결정하는 것, 및 거동의 우선순위 및/또는 복잡도로 가용 리소스들을 균형잡는 것을 포함할 수도 있다.
블록 344 에서, 프로세싱 코어는 루프 카운트 변수의 값을 제로 (0) 와 같게 설정하거나, 또는 아니면 결정된 개수 N 번 수행될 루프를 개시할 수도 있다. 블록 346 에서, 프로세싱 코어는 부스트된 결정 스텀프들의 전체 세트에 포함되거나 또는 이로부터 발생되고 그리고 린 분류자 모델 리스트에 포함되지 않는 부스트된 결정 스텀프를 선택할 수도 있다. 루프를 처음 실행할 때 린 분류자 모델 리스트에 어떤 부스트된 결정 스텀프들도 존재하지 않으며, 따라서 제 1 부스트된 결정 스텀프가 선택될 것이다. 본원에서 언급한 바와 같이, 전체 분류자 모델은 전체 세트에서의 제 1 부스트된 결정 스텀프가 호의적인 또는 비-호의적인 거동을 인식할 최고 확률을 갖도록 구성될 수도 있다. 블록 348 에서, 프로세싱 코어는 선택된 결정 스텀프와 연관되는 테스트 조건을 결정할 수도 있다. 블록 350 에서, 프로세싱 코어는 선택된 결정 스텀프의 테스트 조건과 동일한 테스트 조건에 의존하거나, 포함하거나, 또는 테스트하는 전체 분류자 모델에 포함된, 또는 그로부터 발생된 결정 스텀프들 모두를 식별할 수도 있다. 블록 352 에서, 프로세싱 코어는 선택된 부스트된 결정 스텀프 및 동일한 테스트 조건에 의존하거나, 포함하거나 또는 테스트하는 식별된 부스트된 결정 스텀프들 모두를 린 분류자 모델 리스트에 추가할 수도 있다.
블록 354 에서, 프로세싱 코어는 루프 카운트 변수의 값을 증분시킬 수도 있다. 결정 블록 356 에서, 프로세싱 코어는 루프 카운트 변수의 값이 블록 342 에서 결정된 고유한 테스트 조건들의 개수 N 보다 크거나 또는 동일한지 여부를 결정할 수도 있다. 프로세싱 코어가 루프 카운트 변수의 값이 고유한 테스트 조건들의 개수보다 크거나 또는 동일하지 않다고 결정할 때 (즉, 결정 블록 356 = "아니오"), 프로세싱 코어는 블록들 346-354 에서의 동작들을 반복할 수도 있다. 프로세싱 코어가 루프 카운트 변수의 값이 고유한 테스트 조건들의 개수보다 크거나 또는 동일하다고 결정할 때 (즉, 결정 블록 356 = "예"), 블록 358 에서, 프로세싱 코어는 린 분류자 모델 리스트에서의 모든 부스트된 결정 스텀프들을 포함하도록 린 분류자 모델을 발생시킬 수도 있다.
이 방법 340 은 린 분류자 모델에서의 고유한 테스트 조건들의 개수 N 을 변경함으로써 다양한 강건성 또는 린니스의 린 분류자 모델들의 패밀리를 발생시키기 위해 여러 번 이용될 수도 있다. 예를 들어, 옵션적인 블록 360 에서, 컴퓨팅 디바이스 프로세서는 더 많은 테스트 조건들을 포함하는 다른 린 분류자 모델을 발생시키기 위해 블록 342 에서 결정된 고유한 테스트 조건들의 개수 N 을 증가시킬 수도 있다. 옵션적인 결정 블록 362 에서, 프로세서는 증가 개수 N 이 테스트 조건들의 최대 개수 (max N) 를 초과하는지 여부를 결정할 수도 있다. 테스트 조건들의 최대 개수는 분류하기 어려운 거동들을 평가하는데 요구되는 최대 성능 패널티 또는 리소스 투자에 적어도 부분적으로 기초하여, (예컨대, 개발자, 서비스 제공자, 사용자에 의해 또는 알고리즘을 통해서) 결정될 수도 있다. 증가된 개수 N 이 최대 개수 max N 미만이면 (즉, 결정 블록 362 = "아니오"), 다른 린 분류자 모델을 발생시키기 위해 위에서 설명된 블록들 344 내지 360 의 동작들이 반복될 수도 있다. 일단 고유한 테스트 조건들의 최대 개수가 린 분류자 모델에 포함되어 있으면 (즉, 결정 블록 362 = "예"), 린 분류자 모델들을 발생시키는 프로세스는 종료할 수도 있다.
도 3a, 도 3b 및 도 3d 는 부스트된 결정 스텀프들의 전체 세트를 횡단하는 전체 프로세스를 반복함으로써 린 분류자 모델들의 패밀리를 발생시키는 것을 설명하지만, 발생된 린 분류자 모델 (즉, 블록들 308, 320 및 358 중 임의의 블록에서 발생된 모델) 에서 시작하여, 발생된 린 분류자 모델에 아직 포함되지 않은 테스트 조건에 의존하여 그 모델 부스트된 결정 스텀프들에 추가하는 추가된 개수의 테스트 조건들에 대해 부스트된 결정 스텀프들의 전체 세트를 횡단함으로써, 유사한 결과가 달성될 수도 있다.
또한, 도 3a, 도 3b 및 도 3d 는 리니스트한 것으로부터 가장 강건한 것까지 린 분류자 모델들의 패밀리를 발생시키는 것을 설명하지만, 린 분류자 모델들은 또한 테스트 조건들의 최대 개수 (예컨대, N=max N) 에서 시작하여 그 개수를 매회마다 단순히 감소시킴으로써 가장 강건한 것으로부터 리니스트한 것까지 발생될 수도 있다.
도 4a 는 전체 분류자 모델을 발생시키는 일 실시형태 방법 400 을 예시한다. 방법 400 은 모바일 디바이스와 같은, 리소스 속박된 컴퓨팅 디바이스에서의 프로세서 또는 프로세싱 코어에 의해 수행될 수도 있다.
블록 402 에서, 프로세싱 코어는 다수의 디바이스 상태들, 구성들 및 거동 뿐만 아니라, 악의적인 거동이 검출되었는지 여부에 관한 정보를 포함한, (예컨대, 다수의 컴퓨팅 디바이스들로부터의) 거동 데이터의 코퍼스를 수신하거나 또는 수집할 수도 있다. 블록 404 에서, 프로세싱 코어는 거동 데이터의 코퍼스로부터 디바이스 상태들, 구성들 및 거동 내에서 테스트될 수 있는 특정의 2진 질문들/테스트 조건들을 식별할 수도 있다. 디바이스 상태들, 구성들 및 거동들 모두를 특징화하기 위해, 다수의 이러한 2진 질문들/테스트 조건들이 일반적으로 식별될 것이다. 그 후, 블록 406 에서, 각각의 식별된 2진 질문에 대해, 프로세싱 코어는 테스트 데이터베이스를 테스트하여, 악의적인 거동이 2진 질문에 대한 응답들 중 하나 또는 다른 하나에 대응한 횟수의 비율 또는 퍼센티지를 결정할 수도 있다. 블록 408 에서, 프로세싱 코어는 비-호의적인 거동에의 최고 대응을 가지는 2진 질문을 대응 퍼센티지에 적어도 부분적으로 기초하여 결정된 가중 값을 가지는 제 1 결정 스텀프로서 선택할 수도 있다. 블록 410 에서, 프로세싱 코어는 도 4b 를 참조하여 아래에서 설명되는 바와 같이, 부정확하게 분류된 샘플들/테스트 조건들의 가중치를 부스트할 수도 있다.
프로세싱 코어는 그후 이 경우 악의적인 거동에 대해 최고 대응을 가지는 질문을 식별하기 위해 제 1 질문의 응답이 악의적인 거동과 연관되지 않은 값 (예컨대, "아니오") 이라고 가정하여 2진 질문을 스캐닝하는 프로세스를 반복할 수도 있다. 그후, 그 질문은 모델에서의 제 2 의 2진 질문으로서 설정되며, 그 가중 값은 그의 대응 퍼센티지에 적어도 부분적으로 기초하여 결정된다. 프로세싱 코어는 그후 이 경우 악의적인 거동에 대한 최고의 대응을 가지는 다음 질문/테스트 조건을 식별하기 위해 -- 제 1 및 질문들/테스트 조건들의 응답들이 악의적인 거동과 연관되지 않은 값들 (예컨대, "아니오") 이라고 가정하여 -- 2진 질문을 스캐닝하는 프로세스를 반복할 수도 있다. 그후 그 질문/테스트 조건은 모델에서의 제 3 의 2진 질문/테스트 조건이며, 그 가중 값은 그의 대응 퍼센티지에 적어도 부분적으로 결정된다. 이 프로세스는 완전한 세트를 형성하기 위해 식별된 2진 질문들/테스트 조건들의 모두를 통해서 계속된다.
2진 질문들/테스트 조건들을 발생시키는 프로세스에서, 프로세싱 코어는 통신들의 빈도, 또는 이전 시간 간격 이내 통신들의 횟수와 같은 범위를 가지는 데이터를 평가하고, 그리고 거동들을 분류하는 것을 돕는 방법으로 범위를 포괄하는 일련의 2진 질문들/테스트 조건들을 공식화할 수도 있다. 따라서, 하나의 2진 질문/테스트 조건은 디바이스가 (낮은 상관을 가질 수도 있는) 이전 5분 내에 0개 초과의 데이터 송신들을 전송하였는지 여부일 수도 있으며, 제 2 의 2진 질문/테스트 조건은 (중간 상관을 가질 수도 있는) 디바이스가 이전 5분 내에 10 개 초과의 데이터 송신들을 전송하였는지 여부일 수도 있으며, 제 3 의 질문/테스트 조건은 디바이스가 (높은 상관을 가질 수도 있는) 이전 5분 내에 100 개 초과의 데이터 송신들을 전송하였는지 여부일 수도 있다.
질문들/테스트 조건들의 최종 세트의 일부 컬링은 악의적인 거동에 대한 결정된 가중치 또는 상관이 임계값 미만인 (예컨대, 통계적으로 의미있는 것 미만인) 그들 질문들/테스트 조건들을 제거하기 위해 프로세싱 코어에 의해 이루어질 수도 있다. 예를 들어, 악의적인 거동에 대한 상관이 대략 50/50 이면, 현재의 거동이 호의적인지 또는 비-호의적인지 여부의 질문에 응답하지도 응답하는 것을 돕지도 않기 때문에 그 결정 스텀프를 이용할 때에 별다른 이점이 없을 수도 있다.
도 4b 는 다양한 실시형태들에 따라 사용하기에 적합한 부스트된 결정 트리/분류자를 발생시키는데 적합한 예시적인 부스팅 방법 420 을 예시한다. 동작 422 에서, 프로세서 또는 프로세싱 코어는 결정 트리/분류자를 발생시키거나 및/또는 실행하고, 결정 트리/분류자의 실행으로부터 트레이닝 샘플을 수집하고, 그리고 트레이닝 샘플에 적어도 부분적으로 기초하여 새로운 분류자 모델 (h1(x)) 을 발생시킬 수도 있다. 트레이닝 샘플은 디바이스 거동들, 소프트웨어 애플리케이션들, 또는 그 디바이스에서의 프로세스들의 이전 관측들 또는 분석으로부터 수집된 정보를 포함할 수도 있다. 트레이닝 샘플 및/또는 새로운 분류자 모델 (h1(x)) 은 이전 분류자들에 포함된 질문 또는 테스트 조건들의 유형들에 적어도 부분적으로 기초하여 및/또는 거동 분석기 모듈 (204) 의 이전 데이터/거동 모델들 또는 분류자 모델들의 실행/애플리케이션으로부터 수집된 정확도 또는 성능 특성들에 적어도 부분적으로 기초하여, 발생될 수도 있다. 동작 424 에서, 프로세서 또는 프로세싱 코어는 제 2 새로운 트리/분류자 (h2(x)) 를 발생시키기 위해 발생된 결정 트리/분류자 (h1(x)) 에 의해 오분류된 엔트리들의 가중치를 부스트할 (또는, 증가시킬) 수도 있다. 일 실시형태에서, 트레이닝 샘플 및/또는 새로운 분류자 모델 (h2(x)) 은 분류자의 이전 실행 또는 사용 (h1(x)) 의 에러/오류 레이트에 적어도 부분적으로 기초하여 발생될 수도 있다. 일 실시형태에서, 트레이닝 샘플 및/또는 새로운 분류자 모델 (h2(x)) 은 분류자의 이전 실행 또는 사용에서 데이터 지점들의 오류 레이트 또는 오분류에 기여된 것을 가지는 것으로 결정된 속성들에 적어도 부분적으로 기초하여 발생될 수도 있다.
일 실시형태에서, 오분류된 엔트리들은 그들의 상대적으로 정확도 또는 유효성에 적어도 부분적으로 기초하여 가중될 수도 있다. 동작 426 에서, 프로세서 또는 프로세싱 코어는 제 3 새로운 트리/분류자 (h3(x)) 를 발생시키기 위해 발생된 제 2 트리/분류자 (h2(x)) 에 의해 오분류된 엔트리들의 가중치를 부스트할 (또는, 증가시킬) 수도 있다. 동작 428 에서, 424-426 의 동작들은 "t" 개수의 새로운 트리/분류자들 (ht(x)) 를 발생시키기 위해 반복될 수도 있다.
제 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) 를 발생시키는 것은 전체적으로 수렴하는 시스템을 초래하지 않지만, 병렬로 실행될 수도 있는 다수의 결정 트리들/분류자들을 초래할 수도 있다.
도 5 는 일 실시형태에 따른, 거동을 분류하고 하위-분류하는 방법 500 을 예시한다. 방법 500 은 모바일 또는 리소스 속박된 컴퓨팅 디바이스에서의 프로세서 또는 프로세싱 코어에 의해 수행될 수도 있다. 블록 502 에서, 프로세싱 코어는 거동-기반 및 머신 학습 기법들을 이용하여, 디바이스 거동들을 호의적인 것, 의심스러운 것 또는 비-호의적인 것으로서 분류할 수도 있다. 블록 504 에서, 프로세싱 코어는 멀티-라벨 분류 또는 메타-분류 기법들을 이용하여, 호의적인, 의심스러운, 및 비-호의적인 거동들을 카테고리들, 하위-카테고리들, 그룹들, 또는 하위-그룹들로 추가로 분류할 (예컨대, 하위-분류, 카테고리화, 라벨링, 등등을 할) 수도 있다.
옵션적인 블록 506 에서, 프로세싱 코어는 소프트웨어 애플리케이션 또는 거동이 디바이스의 적합한 기능작용에 가하는 위험 또는 위협의 심각도와 같은, 거동의 상대적인 중요도를, 그 거동의 하위-분류들에 적어도 부분적으로 기초하여 (예컨대, 거동과 연관되는 카테고리들, 그룹들, 또는 라벨들에 적어도 부분적으로 기초하여) 결정할 수도 있다.
블록 508 에서, 프로세싱 코어는 거동의 하위-분류들 또는 결정된 상대적인 중요도에 적어도 부분적으로 기초하여 분석 또는 엑츄에이션 동작들을 결정하거나, 선택하거나 및/또는 수행할 (예컨대, 거동과 연관되는 카테고리들, 그룹들, 또는 라벨들에 적어도 부분적으로 기초하여 강건한 또는 경량의 분석 동작들을 수행할지 여부를 결정할) 수도 있다.
도 6 은 일 실시형태에 따른, 동적 및 적응적 관측들을 수행하는 예시적인 방법 600 을 예시한다. 블록 602 에서, 디바이스 프로세서는 모바일 디바이스의 열화에 기여할 수 있는 다수의 인자들/거동들의 서브세트를 모니터링/관측함으로써 조악한 관측들을 수행할 수도 있다. 블록 603 에서, 디바이스 프로세서는 그 조악한 관측들에 적어도 부분적으로 기초하여, 조악한 관측들 및/또는 모바일 디바이스 거동을 특징화하는 거동 벡터를 발생시킬 수도 있다.
블록 604 에서, 디바이스 프로세서는 모바일 디바이스의 열화에 잠재적으로 기여할 수도 있는 조악한 관측들과 연관되는 서브시스템들, 프로세스들, 및/또는 애플리케이션들을 식별할 수도 있다. 이것은 예를 들어, 다수의 소스들로부터 수신된 정보를 모바일 디바이스의 센서들로부터 수신된 맥락 정보 (contextual information) 와 비교함으로써 달성될 수도 있다. 블록 606 에서, 디바이스 프로세서는 조악한 관측들에 적어도 부분적으로 기초하여, 거동 분석 동작들을 수행할 수도 있다. 일 실시형태에서, 블록 603 및 블록 604 의 부분으로서, 디바이스 프로세서는 도 2 내지 도 10 을 참조하여 위에서 설명된 동작들 중 하나 이상을 수행할 수도 있다.
결정 블록 608 에서, 디바이스 프로세서는 의심스러운 거동들 또는 잠재적인 문제들이 거동 분석의 결과들에 적어도 부분적으로 기초하여 식별되고 정정될 수 있는지 여부를 결정할 수도 있다. 의심스러운 거동들 또는 잠재적인 문제들이 식별되어 거동 분석의 결과들에 적어도 부분적으로 기초하여 정정될 수 있다고 디바이스 프로세서가 결정할 때 (즉, 결정 블록 608 = "예"), 프로세서는 블록 618 에서 거동을 정정하고 블록 602 에서 추가적인 조악한 관측들을 수행하는 프로세스를 개시할 수도 있다.
의심스러운 거동들 또는 잠재적인 문제들이 식별되거나 및/또는 거동 분석의 결과들에 적어도 부분적으로 기초하여 정정될 수 없다고 디바이스 프로세서가 결정할 때 (즉, 결정 블록 608 = "아니오"), 디바이스 프로세서는 결정 블록 609 에서 문제의 우도가 있는지 여부를 결정할 수도 있다. 일 실시형태에서, 디바이스 프로세서는 모바일 디바이스가 잠재적인 문제들에 부닥치거나 및/또는 의심스러운 거동들에 참여할 확률을 계산하고 계산된 확률이 미리 결정된 임계치보다 큰지 여부를 결정함으로써, 문제의 우도가 있다고 결정할 수도 있다.
계산된 확률이 미리 결정된 임계치보다 크지 않거나, 및/또는 의심스러운 거동들 또는 잠재적인 문제들이 존재하거나 및/또는 검출가능할 우도가 없다고 디바이스 프로세서가 결정할 때 (즉, 결정 블록 609 = "아니오"), 프로세서는 블록 612 에서 추가적인 조악한 관측들을 수행할 수도 있다.
의심스러운 거동들 또는 잠재적인 문제들이 존재하거나 및/또는 검출가능할 우도가 있다고 디바이스 프로세서가 결정할 때 (즉, 결정 블록 609 = "예"), 디바이스 프로세서는 블록 610 에서 식별된 서브시스템들, 프로세스들 또는 애플리케이션들 상에서 더 깊은 로깅/관측들 또는 최종 로깅을 수행할 수도 있다. 블록 612 에서, 디바이스 프로세서는 식별된 서브시스템들, 프로세스들 또는 애플리케이션들 상에서 더 깊은 및 좀더 상세한 관측들을 수행할 수도 있다. 블록 614 에서, 디바이스 프로세서는 더 깊은 및 좀더 상세한 관측들에 적어도 부분적으로 기초하여 추가적인 및/또는 더 깊은 거동 분석을 수행할 수도 있다. 결정 블록 608 에서, 디바이스 프로세서는 또다시 의심스러운 거동들 또는 잠재적인 문제들이 더 깊은 거동 분석의 결과들에 적어도 부분적으로 기초하여 식별되고 정정될 수 있는지 여부를 결정할 수도 있다.
의심스러운 거동들 또는 잠재적인 문제들이 식별되어 더 깊은 거동 분석의 결과들에 적어도 부분적으로 기초하여 정정될 수 없다고 디바이스 프로세서가 결정할 때 (즉, 결정 블록 608 = "아니오"), 프로세서는 블록들 610-614 에서, 세부 사항의 레벨이 문제를 식별하기에 충분히 정밀할 때까지, 또는 문제가 추가적인 세부사항으로 식별될 수 없거나 또는 어떤 문제도 존재하지 않는다고 결정될 때까지, 동작들을 반복할 수도 있다.
의심스러운 거동들 또는 잠재적인 문제들이 식별되어 더 깊은 거동 분석의 결과들에 적어도 부분적으로 기초하여 정정될 수 있다고 디바이스 프로세서가 결정할 때 (즉, 결정 블록 608 = "예"), 디바이스 프로세서는 블록 618 에서 문제/거동을 정정하는 동작들을 수행할 수도 있으며, 프로세서는 블록 602 에서 추가적인 동작들을 수행할 수도 있다.
일 실시형태에서, 방법 600 의 블록들 602-618 의 부분으로서, 디바이스 프로세서는 시스템의 거동들의 실시간 거동 분석을 수행하여 제한된 및 조악한 관측들로부터 의심스러운 거동들을 식별하고, 더욱더 자세하게 관측할 거동들을 동적으로 결정하고, 그리고 관측들에 요구되는 정확한 세부 사항의 레벨을 동적으로 결정할 수도 있다. 이것은 디바이스 프로세서로 하여금, 디바이스 상에서의 대량의 프로세서, 메모리, 또는 배터리 리소스들의 사용을 필요로 함이 없이, 효율적으로 문제들을 식별하고 문제들이 발생하는 것을 방지할 수 있도록 한다.
다양한 실시형태들은 다양한 통신 디바이스들 상에서 구현될 수도 있으며, 이의 일 예가 도 7 에 스마트폰의 형태로 예시되어 있다. 스마트폰 (700) 은 내부 메모리 (704), 디스플레이 (712), 및 스피커 (714) 에 커플링된 프로세서 (702) 를 포함할 수도 있다. 게다가, 스마트폰 (700) 은 무선 데이터 링크에 접속될 수도 있는, 전자기 방사선을 전송하고 수신하는 하나 이상의 안테나 및/또는 프로세서 (702) 에 커플링된 셀룰러 전화기 트랜시버 (708) 를 포함할 수도 있다. 스마트폰들 (700) 은 일반적으로 또한 사용자 입력들을 수신하기 위한 메뉴 선택 버튼들 또는 로커 스위치들 (720) 을 포함할 수도 있다.
일반적인 스마트폰 (700) 은 또한 마이크로폰으로부터 수신된 사운드를 무선 송신에 적합한 데이터 패킷들로 디지털화하고 수신된 사운드 데이터 패킷들을 디코딩하여 사운드를 발생시키기 위해 스피커에 제공되는 아날로그 신호들을 발생시키는 사운드 인코딩/디코딩 (코덱) 회로 (706) 를 포함한다. 또한, 프로세서 (702), 무선 트랜시버 (708) 및 코덱 (706) 중 하나 이상은 디지털 신호 프로세서 (DSP) 회로 (별도로 미도시) 를 포함할 수도 있다.
프로세서들 (702) 은 아래에서 설명되는 다양한 실시형태들의 기능들을 포함한, 다양한 기능들을 수행하는 소프트웨어 명령들 (애플리케이션들) 로 구성될 수 있는, 임의의 프로그래밍가능 마이크로프로세서, 마이크로컴퓨터 또는 다중 프로세서 칩 또는 칩들일 수도 있다. 일부 모바일 디바이스들에서, 다수의 프로세서들 (702) 이 하나의 프로세서가 무선 통신 기능들을 담당하고 하나의 프로세서가 다른 애플리케이션들을 실행하는 것을 담당하는 것과 같이, 제공될 수도 있다. 일반적으로, 소프트웨어 애플리케이션들은 액세스되어 프로세서 (702) 에 로드되기 전에 내부 메모리 (704) 에 저장될 수도 있다. 프로세서 (702) 는 애플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수도 있다.
다수의 상이한 셀룰러 및 모바일 통신 서비스들 및 표준들이 미래에 이용가능하거나 또는 고려되며, 이들 모두는 다양한 실시형태들을 구현하고 이로부터 이점을 취할 수도 있다. 이러한 서비스들 및 표준들은 예컨대, 3GPP (third generation partnership project), 롱텀 에볼류션 (LTE) 시스템들, 3세대 무선 모바일 통신 기술 (3G), 4세대 무선 모바일 통신 기술 (4G), GSM (global system for mobile communications), UMTS (universal mobile telecommunications system), 3GSM, 일반 패킷 무선 서비스 (GPRS), 코드분할 다중접속 (CDMA) 시스템들 (예컨대, cdmaOne, CDMA1020TM), EDGE (Enhanced Data rates for GSM Evolution), 진보된 모바일 폰 시스템 (AMPS), 디지털 AMPS (IS-136/TDMA), EV-DO (Evolution-Data Optimized), DECT (digital enhanced cordless telecommunications), WiMAX (Worldwide Interoperability for Microwave Access), 무선 로컬 영역 네트워크 (WLAN), Wi-Fi 보호 액세스 I & II (WPA, WPA2), 및 통합 디지털 확장 네트워크 (iden) 를 포함한다. 이들 기술들의 각각은 예를 들어, 보이스, 데이터, 시그널링, 및/또는 콘텐츠 메시지들의 송신 및 수신을 포함한다. 개개의 원격 통신 표준 또는 기술에 관련된 전문용어 및/또는 기술적인 세부 사항들에 대한 임의의 참조들은 단지 예시적인 목적들을 위한 것이며, 청구항 용어로 특별히 언급하지 않는 한, 특정의 통신 시스템 또는 기술에 청구의 범위를 한정하려고 의도되지 않는 것으로 이해되어야 한다.
용어 "성능 열화" 는 본 출원에서, 더 긴 프로세싱 시간들, 더 느린 실시간 반응성, 더 낮은 배터리 수명, 개인 데이터의 손실, 악의적인 경제 활동 (예컨대, 미인가된 프리미엄 SMS 메시지를 전송하는 것), 서비스 거부 (DoS), 스파이 또는 봇넷 활동들을 위해 컴퓨팅 디바이스를 조작하거나 또는 폰을 이용하는 것에 관련된 동작들, 등과 같은, 매우 다양한 바람직하지 않은 컴퓨팅 디바이스 동작들 및 특성들을 지칭하기 위해 사용된다.
다양한 실시형태들의 동작들을 실행하기 위해 프로그래밍가능 프로세서 상에서의 실행을 위한 컴퓨터 프로그램 코드 또는 "프로그램 코드" 는 C, C++, C#, 스몰토크 (Smalltalk), 자바, 자바스크립트, 비주얼 베이직, 구조화 쿼리 언어 (예컨대, 트랜잭트-SQL), 펄 (Perl) 과 같은, 고급 프로그래밍 언어로 또는 다양한 다른 프로그래밍 언어들로 기록될 수도 있다. 본 출원에서 사용되는 바와 같은 컴퓨터 판독가능 저장 매체 상에 저장되는 프로그램 코드 또는 프로그램들은 포맷이 프로세서에 의해 이해가능한 (오브젝트 코드와 같은) 기계어 코드를 지칭할 수도 있다.
다수의 모바일 컴퓨팅 디바이스들 운영 시스템 커널들은 사용자 공간 (여기서, 비-특권 코드 런들) 및 커널 공간 (여기서, 특권 코드 런들) 으로 편성된다. 이 분리는 안드로이드®, 및 커널 공간의 일부인 코드는 GPL 허가되어야 하지만 사용자-공간에서 실행하는 코드는 GPL 허가되지 않을 수도 있는 다른 일반 공공 라이센스 (GPL) 환경들에 특히 중요하다. 본원에서 설명되는 다양한 소프트웨어 컴포넌트들/모듈들은 달리 명확하게 언급되지 않는 한, 커널 공간 또는 사용자 공간에서 구현될 수도 있는 것으로 이해되어야 한다.
상기 방법 설명들 및 프로세스 흐름도들은 단지 예시적인 예들로서 제공되며 다양한 실시형태들의 동작들이 제시된 순서로 수행되어야 한다는 것을 요구하거나 또는 암시하려고 의도된 것이 아니다. 당업자가 주지하고 있는 바와 같이 전술한 실시형태들에서 동작들의 순서는 임의의 순서로 수행될 수도 있다. "그후", "따라서", "다음" 등과 같은 단어들은 동작들의 순서를 제한하려고 의도되지 않으며; 이들 단어들은 방법들의 설명을 통해서 독자를 안내하기 위해서 단지 사용된다. 또, 단수형으로, 예를 들어, 한정사 "한", "하나" 또는 "그" 를 이용한, 청구항 엘리먼트들에 대한 임의의 언급은, 그 엘리먼트를 단수에 한정하는 것으로 해석되어서는 안된다.
본원에서 사용될 때, 용어들 "컴포넌트", "모듈", "시스템", 및 기타 등등은 특정의 동작들 또는 기능들을 수행하도록 구성된, 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중 소프트웨어와 같은, 그러나 이에 한정되지 않는, 컴퓨터-관련 엔터티를 포함하도록 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행하는 프로세스, 프로세서, 오브젝트, 실행가능한 것, 실행의 쓰레드, 프로그램, 및/또는 컴퓨터일 수도 있지만 이에 한정되지 않는다. 실 예로서, 컴퓨팅 디바이스 상에서 실행하는 애플리케이션 및 컴퓨팅 디바이스 양쪽이 컴포넌트로서 지칭될 수도 있다. 하나 이상의 컴포넌트들이 프로세스 및/또는 실행 쓰레드 내에 상주할 수 있으며, 컴포넌트는 하나의 프로세서 또는 코어 상에 로컬라이즈되거나 및/또는 2개 이상의 프로세서들 또는 코어들 사이에 분산될 수도 있다. 게다가, 이들 컴포넌트들은 다양한 명령들 및/또는 데이터 구조들을 안에 저장하고 있는 다양한 비일시성 컴퓨터 판독가능 매체들로부터 실행할 수도 있다. 컴포넌트들은 로컬 및/또는 원격 프로세스들, 함수 또는 프로시저 호출들, 전자 신호들, 데이터 패킷들, 메모리 판독/기록들, 및 다른 알려진 네트워크, 컴퓨터, 프로세서, 및/또는 프로세스 관련된 통신 방법론들에 의해 통신할 수도 있다.
본원에서 개시한 실시형태들과 관련하여 설명한 다양한 예시적인 로직 블록들, 모듈들, 회로들, 및 알고리즘 동작들은 전자적 하드웨어, 컴퓨터 소프트웨어, 또는 양쪽의 조합들로서 구현될 수도 있다. 이러한 하드웨어와 소프트웨어의 상호 교환가능성을 명확히 예시하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 동작들 일반적으로 그들의 기능성의 관점에서 위에서 설명되었다. 이런 기능성이 하드웨어 또는 소프트웨어로 구현되는지 여부는 특정의 애플리케이션 및 전체 시스템에 부과되는 설계 제한 사항들에 의존한다. 숙련자들은 각각의 특정의 애플리케이션 마다 설명한 기능성을 여러 방법으로 구현할 수도 있으며, 그러나 이러한 구현 결정들은 청구항들의 범위로부터 일탈을 초래하는 것으로 해석되어서는 안된다.
본원에서 개시한 실시형태들과 관련하여 설명한 다양한 예시적인 로직들, 로직 블록들, 모듈들, 및 회로들을 구현하기 위해 사용되는 하드웨어는 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적회로 (ASIC), 필드 프로그래밍가능 게이트 어레이 (FPGA) 또는 다른 프로그래밍가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에서 설명한 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현되거나 또는 수행될 수도 있다. 범용 프로세서는 멀티프로세서일 수도 있으며, 그러나 대안적으로는, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합 (예컨대, DSP 와 멀티프로세서의 조합, 복수의 멀티프로세서들, DSP 코어와 결합된 하나 이상의 멀티프로세서들, 또는 임의의 다른 이러한 구성) 으로서 구현될 수도 있다. 대안적으로, 일부 동작들 또는 방법들은 주어진 기능에 특유한 회로부에 의해 수행될 수도 있다.
하나 이상의 예시적인 실시형태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 이 기능들은 비일시성 컴퓨터-판독가능 저장 매체 또는 비일시성 프로세서-판독가능 저장 매체에 하나 이상의 프로세서-실행가능한 명령들 또는 코드로서 저장될 수도 있다. 본원에서 개시한 방법 또는 알고리즘의 동작들은 비일시성 컴퓨터-판독가능 또는 프로세서-판독가능 저장 매체 상에 상주할 수도 있는 프로세서-실행가능한 소프트웨어 모듈에 내장될 수도 있다. 비일시성 컴퓨터-판독가능 또는 프로세서-판독가능 저장 매체들은 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 저장 매체들일 수도 있다. 비제한적인 예로서, 이런 비일시성 컴퓨터-판독가능 또는 프로세서-판독가능 매체들은 RAM, ROM, EEPROM, 플래시 메모리, CD-ROM 또는 다른 광디스크 스토리지, 자기디스크 스토리지 또는 다른 자기 저장 디바이스들, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수도 있고 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 디스크 (disk) 및 디스크 (disc) 는, 본원에서 사용할 때, 컴팩트 디스크 (CD), 레이저 디스크, 광 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크, 및 블루-레이 디스크를 포함하며, 디스크들 (disks) 은 데이터를 자기적으로 보통 재생하지만, 디스크들 (discs) 은 레이저로 데이터를 광학적으로 재생한다. 앞에서 언급한 것들의 조합들이 또한 비일시성 컴퓨터-판독가능 및 프로세서-판독가능 매체들의 범위 내에 포함된다. 게다가, 방법 또는 알고리즘의 동작들은 컴퓨터 프로그램 제품에 포함될 수도 있는 비일시성 프로세서-판독가능 매체 및/또는 컴퓨터-판독가능 매체 상에, 코드들 및/또는 명령들 중 하나 또는 임의의 조합 또는 세트로 상주할 수도 있다.
개시된 실시형태들의 상기 설명은 임의의 당업자가 청구항들을 실시하고 이용할 수 있도록 제공된다. 이들 실시형태들에 대한 다양한 변경들은 당업자들에게 명백할 것이며, 본원에서 정의한 일반적인 원리들은 청구항들의 범위로부터 일탈함이 없이 다른 실시형태들에도 적용될 수도 있다. 따라서, 본 개시물은 본원에서 나타낸 실시형태들에 한정시키려는 것이 아니라, 다음 청구범위에 부합하는 최광의의 범위 및 본원에서 개시된 원리들 및 신규한 특징들을 부여받게 하려는 것이다.
Claims (30)
- 컴퓨팅 디바이스에서 디바이스 거동들을 평가하는 방법으로서,
상기 컴퓨팅 디바이스 상에서 동작하는 소프트웨어 애플리케이션의 활동들을 모니터링하는 단계;
상기 소프트웨어 애플리케이션의 제 1 모니터링된 활동을 특징화하는 거동 벡터 정보 구조를 발생시키는 단계;
상기 거동 벡터 정보 구조를 머신 학습 분류자 모델에 적용하여 분석 결과들을 발생시키는 단계;
상기 분석 결과들을 이용하여 상기 제 1 모니터링된 활동을 호의적인 것, 의심스러운 것, 및 비-호의적인 것 중 하나로서 분류하는 단계;
상기 소프트웨어 애플리케이션의 상기 제 1 모니터링된 활동을 의심스러운 것 또는 비-호의적인 것으로서 분류하는 것에 응답하여 상기 소프트웨어 애플리케이션을 화이트리스트할지 여부를 사용자가 선택하도록 요청하는 프롬프트를 디스플레이하는 단계;
상기 프롬프트를 디스플레이하는 것에 응답하여 사용자 입력을 수신하는 단계; 및
상기 사용자 입력을 수신하는 것에 응답하여 상기 제 1 모니터링된 활동을 화이트리스트에 추가하는 단계를 포함하는, 컴퓨팅 디바이스에서 디바이스 거동들을 평가하는 방법. - 제 1 항에 있어서,
상기 사용자 입력을 수신하는 것에 응답하여 상기 제 1 모니터링된 활동을 상기 화이트리스트에 추가하는 단계는,
상기 소프트웨어 애플리케이션과 연관하여 화이트리스트 데이터베이스에 상기 제 1 모니터링된 활동을 저장하는 단계를 포함하는, 컴퓨팅 디바이스에서 디바이스 거동들을 평가하는 방법. - 제 1 항에 있어서,
멀티-라벨 분류 또는 메타-분류 기법들을 이용하여 상기 제 1 모니터링된 활동을 하나 이상의 하위-카테고리들로 추가로 분류하는 단계를 더 포함하며,
상기 소프트웨어 애플리케이션을 화이트리스트할지 여부를 상기 사용자가 선택하도록 요청하는 상기 프롬프트를 디스플레이하는 단계는,
상기 제 1 모니터링된 활동과 연관되는 상기 하나 이상의 하위-카테고리들을 포함하도록 상기 프롬프트를 디스플레이하는 단계를 포함하는, 컴퓨팅 디바이스에서 디바이스 거동들을 평가하는 방법. - 제 1 항에 있어서,
상기 제 1 모니터링된 활동을 상기 화이트리스트에 포함시키는 것에 응답하여 상기 제 1 모니터링된 활동을 모니터링하는 것을 중지하는 단계를 더 포함하는, 컴퓨팅 디바이스에서 디바이스 거동들을 평가하는 방법. - 제 3 항에 있어서,
계속해서, 상기 소프트웨어 애플리케이션의 활동들을 모니터링하고, 제 2 거동 벡터 정보 구조를 발생시키고, 상기 제 2 거동 벡터 정보 구조를 제 2 머신 학습 분류자 모델에 적용하여 추가적인 분석 결과를 발생시키고, 그리고 상기 추가적인 분석 결과를 이용하여 제 2 모니터링된 활동을 하위-카테고리로 분류하는 단계;
상기 제 2 모니터링된 활동이 상기 제 1 모니터링된 활동과 동일한 하위-카테고리로 분류되는지 여부를 결정하는 단계; 및
상기 제 2 모니터링된 활동이 상기 제 1 모니터링된 활동과 동일한 하위-카테고리로 하위-분류되지 않는다고 결정하는 것에 응답하여 상기 소프트웨어 애플리케이션을 화이트리스트할지 여부를 상기 사용자가 선택하도록 요청하는 추가적인 프롬프트를 디스플레이하는 단계를 더 포함하는, 컴퓨팅 디바이스에서 디바이스 거동들을 평가하는 방법. - 제 5 항에 있어서,
상기 추가적인 프롬프트를 디스플레이하는 것에 응답하여 추가적인 사용자 입력을 수신하는 단계; 및
상기 추가적인 사용자 입력을 수신하는 것에 응답하여 상기 화이트리스트로부터 상기 제 1 모니터링된 활동을 제거하고 상기 소프트웨어 애플리케이션을 종료시키는 단계를 더 포함하는, 컴퓨팅 디바이스에서 디바이스 거동들을 평가하는 방법. - 제 5 항에 있어서,
상기 추가적인 프롬프트를 디스플레이하는 것에 응답하여 추가적인 사용자 입력을 수신하는 단계; 및
상기 추가적인 사용자 입력을 수신하는 것에 응답하여 상기 제 2 모니터링된 활동을 상기 화이트리스트에 추가하는 단계를 더 포함하는, 컴퓨팅 디바이스에서 디바이스 거동들을 평가하는 방법. - 제 1 항에 있어서,
상기 거동 벡터 정보 구조에 의해 특징화되는 상기 제 1 모니터링된 활동의 상대적인 중요도를 결정하는 단계를 더 포함하며,
상기 소프트웨어 애플리케이션을 화이트리스트할지 여부를 상기 사용자가 선택하도록 요청하는 상기 프롬프트를 디스플레이하는 단계는,
상기 제 1 모니터링된 활동의 상기 상대적인 중요도를 식별하는 정보를 포함하도록 상기 프롬프트를 디스플레이하는 단계를 포함하는, 컴퓨팅 디바이스에서 디바이스 거동들을 평가하는 방법. - 제 8 항에 있어서,
상기 소프트웨어 애플리케이션의 활동들 및 상기 제 1 모니터링된 활동의 결정된 상대적인 중요도를 모니터링하여 분석하는데 사용되는 상기 컴퓨팅 디바이스의 프로세싱, 메모리, 또는 에너지 리소스들의 양들 사이의 트레이드오프들을 균형잡는 단계를 더 포함하는, 컴퓨팅 디바이스에서 디바이스 거동들을 평가하는 방법. - 제 9 항에 있어서,
상기 균형잡는 단계는, 상기 제 1 모니터링된 활동의 결정된 상대적인 중요도에 적어도 부분적으로 기초하여 엑츄에이션 동작들을 선택하는 단계를 포함하는, 컴퓨팅 디바이스에서 디바이스 거동들을 평가하는 방법. - 제 10 항에 있어서,
상기 엑츄에이션 동작들을 선택하는 단계는, 그 거동의 하위-분류들에 적어도 부분적으로 기초하여 강건한 분석 동작들 또는 경량의 분석 동작들을 수행할지 여부를 결정하는 단계를 포함하는, 컴퓨팅 디바이스에서 디바이스 거동들을 평가하는 방법. - 컴퓨팅 디바이스로서,
메모리;
디스플레이; 및
상기 메모리 및 상기 디스플레이에 커플링된 프로세서를 포함하며,
상기 프로세서는,
상기 컴퓨팅 디바이스 상에서 동작하는 소프트웨어 애플리케이션의 활동들을 모니터링하는 것;
상기 소프트웨어 애플리케이션의 제 1 모니터링된 활동을 특징화하는 거동 벡터 정보 구조를 발생시키는 것;
상기 거동 벡터 정보 구조를 머신 학습 분류자 모델에 적용하여 분석 결과들을 발생시키는 것;
상기 분석 결과들을 이용하여 상기 소프트웨어 애플리케이션의 상기 제 1 모니터링된 활동을 호의적인 것, 의심스러운 것, 및 비-호의적인 것 중 하나로서 분류하는 것;
상기 소프트웨어 애플리케이션의 상기 제 1 모니터링된 활동을 의심스러운 것 또는 비-호의적인 것으로서 분류하는 것에 응답하여 상기 소프트웨어 애플리케이션을 화이트리스트할지 여부를 사용자가 선택하도록 요청하는 프롬프트를 디스플레이하는 것;
상기 프롬프트를 디스플레이하는 것에 응답하여 사용자 입력을 수신하는 것; 및
상기 사용자 입력을 수신하는 것에 응답하여 상기 제 1 모니터링된 활동을 화이트리스트에 추가하는 것
을 포함하는 동작들을 수행하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스. - 제 12 항에 있어서,
상기 프로세서는, 상기 사용자 입력을 수신하는 것에 응답하여 상기 제 1 모니터링된 활동을 상기 화이트리스트에 추가하는 것이 상기 소프트웨어 애플리케이션과 연관하여 화이트리스트 데이터베이스에 상기 제 1 모니터링된 활동을 저장하는 것을 포함하도록 하는 동작들을 수행하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스. - 제 12 항에 있어서,
상기 프로세서는, 멀티-라벨 분류 또는 메타-분류 기법들을 이용하여 상기 제 1 모니터링된 활동을 하나 이상의 하위-카테고리들로 추가로 분류하는 것을 더 포함하는 동작들을 수행하는 프로세서-실행가능한 명령들로 구성되며,
상기 프로세서는, 상기 소프트웨어 애플리케이션을 화이트리스트할지 여부를 상기 사용자가 선택하도록 요청하는 상기 프롬프트를 디스플레이하는 것이 상기 제 1 모니터링된 활동과 연관되는 상기 하나 이상의 하위-카테고리들을 포함하도록 상기 프롬프트를 디스플레이하는 것을 포함하도록 하는 동작들을 수행하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스. - 제 12 항에 있어서,
상기 프로세서는, 상기 화이트리스트에 추가된 활동을 더 이상 모니터링하지 않음으로써 상기 컴퓨팅 디바이스에 의한 오버헤드 프로세싱을 감소시키는 것을 더 포함하는 동작들을 수행하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스. - 제 14 항에 있어서,
상기 프로세서는,
계속해서, 상기 소프트웨어 애플리케이션의 활동들을 모니터링하고, 제 2 거동 벡터 정보 구조를 발생시키고, 상기 제 2 거동 벡터 정보 구조를 제 2 머신 학습 분류자 모델에 적용하여 추가적인 분석 결과들을 발생시키고, 그리고 상기 추가적인 분석 결과들을 이용하여 제 2 모니터링된 활동을 하위-카테고리로 분류하는 것;
상기 제 2 모니터링된 활동이 상기 제 1 모니터링된 활동과 동일한 하위-카테고리로 하위-분류되는지 여부를 결정하는 것; 및
상기 제 2 모니터링된 활동이 상기 제 1 모니터링된 활동과 동일한 하위-카테고리로 하위-분류되지 않는다고 결정하는 것에 응답하여 상기 소프트웨어 애플리케이션을 화이트리스트할지 여부를 상기 사용자가 선택하도록 요청하는 추가적인 프롬프트를 디스플레이하는 것
을 더 포함하는 동작들을 수행하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스. - 제 16 항에 있어서,
상기 프로세서는,
상기 추가적인 프롬프트를 디스플레이하는 것에 응답하여 추가적인 사용자 입력을 수신하는 것; 및
상기 추가적인 사용자 입력을 수신하는 것에 응답하여 상기 화이트리스트로부터 상기 제 1 모니터링된 활동을 제거하고 상기 소프트웨어 애플리케이션을 종료시키는 것
을 더 포함하는 동작들을 수행하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스. - 제 16 항에 있어서,
상기 프로세서는,
상기 추가적인 프롬프트를 디스플레이하는 것에 응답하여 추가적인 사용자 입력을 수신하는 것; 및
상기 추가적인 사용자 입력을 수신하는 것에 응답하여 상기 제 2 모니터링된 활동을 상기 화이트리스트에 추가하는 것
을 더 포함하는 동작들을 수행하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스. - 제 12 항에 있어서,
상기 프로세서는, 상기 거동 벡터 정보 구조에 의해 특징화되는 상기 제 1 모니터링된 활동의 상대적인 중요도를 결정하는 것을 더 포함하는 동작들을 수행하는 프로세서-실행가능한 명령들로 구성되며,
상기 소프트웨어 애플리케이션을 화이트리스트할지 여부를 상기 사용자가 선택하도록 요청하는 상기 프롬프트를 디스플레이하는 것은, 상기 제 1 모니터링된 활동의 상기 상대적인 중요도를 식별하는 정보를 포함하도록 상기 프롬프트를 디스플레이하는 것을 포함하는, 컴퓨팅 디바이스. - 제 19 항에 있어서,
상기 프로세서는 상기 소프트웨어 애플리케이션의 활동들 및 상기 제 1 모니터링된 활동의 결정된 상대적인 중요도를 모니터링하여 분석하는데 사용되는 상기 컴퓨팅 디바이스의 프로세싱, 메모리, 또는 에너지 리소스들의 양들 사이의 트레이드오프들을 균형잡는 것을 더 포함하는 동작들을 수행하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스. - 제 20 항에 있어서,
상기 프로세서는, 상기 소프트웨어 애플리케이션의 활동들 및 상기 제 1 모니터링된 활동의 결정된 상대적인 중요도를 모니터링하여 분석하는데 사용되는 상기 컴퓨팅 디바이스의 프로세싱, 메모리, 또는 에너지 리소스들의 양들 사이의 트레이드오프들을 균형잡는 것이 상기 제 1 모니터링된 활동의 결정된 상대적인 중요도에 적어도 부분적으로 기초하여 엑츄에이션 동작들을 선택하는 것을 포함하도록 하는 동작들을 수행하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 프로세서는, 상기 제 1 모니터링된 활동의 결정된 상대적인 중요도에 적어도 부분적으로 기초하여 엑츄에이션 동작들을 선택하는 것이 그 거동의 하위-분류들에 적어도 부분적으로 기초하여 강건한 또는 경량의 분석 동작들을 수행할지 여부를 결정하는 것을 포함하도록 하는 동작들을 수행하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스. - 프로세서-실행가능한 명령들이 저장된 비일시성 프로세서-판독가능 저장 매체로서,
상기 프로세서-실행가능한 명령들은, 컴퓨팅 디바이스의 프로세서로 하여금,
상기 컴퓨팅 디바이스 상에서 동작하는 소프트웨어 애플리케이션의 활동들을 모니터링하는 것;
상기 소프트웨어 애플리케이션의 제 1 모니터링된 활동을 특징화하는 거동 벡터 정보 구조를 발생시키는 것;
상기 거동 벡터 정보 구조를 머신 학습 분류자 모델에 적용하여 분석 결과들을 발생시키는 것;
상기 분석 결과들을 이용하여 상기 소프트웨어 애플리케이션의 상기 제 1 모니터링된 활동을 호의적인 것, 의심스러운 것, 및 비-호의적인 것 중 하나로서 분류하는 것;
상기 소프트웨어 애플리케이션의 상기 제 1 모니터링된 활동을 의심스러운 것 또는 비-호의적인 것으로서 분류하는 것에 응답하여 상기 소프트웨어 애플리케이션을 화이트리스트할지 여부를 사용자가 선택하도록 요청하는 프롬프트를 디스플레이하는 것;
상기 프롬프트를 디스플레이하는 것에 응답하여 사용자 입력을 수신하는 것; 및
상기 사용자 입력을 수신하는 것에 응답하여 상기 제 1 모니터링된 활동을 화이트리스트에 추가하는 것
을 포함하는 동작들을 수행하게 하도록 구성되는, 비일시성 프로세서-판독가능 저장 매체. - 제 23 항에 있어서,
상기 저장된 프로세서-실행가능한 명령들은, 상기 컴퓨팅 디바이스의 상기 프로세서로 하여금,
상기 사용자 입력을 수신하는 것에 응답하여 상기 제 1 모니터링된 활동을 상기 화이트리스트에 추가하는 것이 상기 소프트웨어 애플리케이션과 연관하여 화이트리스트 데이터베이스에 상기 제 1 모니터링된 활동을 저장하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시성 프로세서-판독가능 저장 매체. - 제 23 항에 있어서,
상기 저장된 프로세서-실행가능한 명령들은, 상기 컴퓨팅 디바이스의 상기 프로세서로 하여금,
멀티-라벨 분류 또는 메타-분류 기법들을 이용하여 상기 제 1 모니터링된 활동을 하나 이상의 하위-카테고리들로 추가로 분류하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되며,
상기 저장된 프로세서-실행가능한 명령들은, 상기 컴퓨팅 디바이스의 상기 프로세서로 하여금,
상기 소프트웨어 애플리케이션을 화이트리스트할지 여부를 상기 사용자가 선택하도록 요청하는 상기 프롬프트를 디스플레이하는 것이 상기 제 1 모니터링된 활동과 연관되는 상기 하나 이상의 하위-카테고리들을 포함하도록 상기 프롬프트를 디스플레이하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시성 프로세서-판독가능 저장 매체. - 제 23 항에 있어서,
상기 저장된 프로세서-실행가능한 명령들은, 상기 컴퓨팅 디바이스의 상기 프로세서로 하여금,
상기 화이트리스트에 추가된 활동을 더 이상 모니터링하지 않음으로써 상기 컴퓨팅 디바이스에 의한 오버헤드 프로세싱을 감소시키는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비일시성 프로세서-판독가능 저장 매체. - 제 25 항에 있어서,
상기 저장된 프로세서-실행가능한 명령들은, 상기 컴퓨팅 디바이스의 상기 프로세서로 하여금,
계속해서, 상기 소프트웨어 애플리케이션의 활동들을 모니터링하고, 제 2 거동 벡터 정보 구조를 발생시키고, 상기 제 2 거동 벡터 정보 구조를 제 2 머신 학습 분류자 모델에 적용하여 추가적인 분석 결과들을 발생시키고, 및 상기 추가적인 분석 결과들을 이용하여 제 2 모니터링된 활동을 하위-카테고리로 분류하는 것;
상기 제 2 모니터링된 활동이 상기 제 1 모니터링된 활동과 동일한 하위-카테고리로 하위-분류되는지 여부를 결정하는 것; 및
상기 제 2 모니터링된 활동이 상기 제 1 모니터링된 활동과 동일한 하위-카테고리로 하위-분류되지 않는다고 결정하는 것에 응답하여 상기 소프트웨어 애플리케이션을 화이트리스트할지 여부를 상기 사용자가 선택하도록 요청하는 추가적인 프롬프트를 디스플레이하는 것
을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비일시성 프로세서-판독가능 저장 매체. - 제 27 항에 있어서,
상기 저장된 프로세서-실행가능한 명령들은, 상기 컴퓨팅 디바이스의 상기 프로세서로 하여금,
상기 추가적인 프롬프트를 디스플레이하는 것에 응답하여 추가적인 사용자 입력을 수신하는 것; 및
상기 추가적인 사용자 입력을 수신하는 것에 응답하여 상기 화이트리스트로부터 상기 제 1 모니터링된 활동을 제거하고 상기 소프트웨어 애플리케이션을 종료시키는 것
을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비일시성 프로세서-판독가능 저장 매체. - 제 27 항에 있어서,
상기 저장된 프로세서-실행가능한 명령들은, 상기 컴퓨팅 디바이스의 상기 프로세서로 하여금,
상기 추가적인 프롬프트를 디스플레이하는 것에 응답하여 추가적인 사용자 입력을 수신하는 것; 및
상기 추가적인 사용자 입력을 수신하는 것에 응답하여 상기 제 2 모니터링된 활동을 상기 화이트리스트에 추가하는 것
을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비일시성 프로세서-판독가능 저장 매체. - 컴퓨팅 디바이스로서,
상기 컴퓨팅 디바이스 상에서 동작하는 소프트웨어 애플리케이션의 활동들을 모니터링하는 수단;
상기 소프트웨어 애플리케이션의 제 1 모니터링된 활동을 특징화하는 거동 벡터 정보 구조를 발생시키는 수단;
상기 거동 벡터 정보 구조를 머신 학습 분류자 모델에 적용하여 분석 결과들을 발생시키는 수단;
상기 분석 결과들을 이용하여 상기 소프트웨어 애플리케이션의 상기 제 1 모니터링된 활동을 호의적인 것, 의심스러운 것, 및 비-호의적인 것 중 하나로서 분류하는 수단;
상기 소프트웨어 애플리케이션의 상기 제 1 모니터링된 활동을 의심스러운 것 또는 비-호의적인 것으로서 분류하는 것에 응답하여 상기 소프트웨어 애플리케이션을 화이트리스트할지 여부를 사용자가 선택하도록 요청하는 프롬프트를 디스플레이하는 수단;
상기 프롬프트를 디스플레이하는 것에 응답하여 사용자 입력을 수신하는 수단; 및
상기 사용자 입력을 수신하는 것에 응답하여 상기 제 1 모니터링된 활동을 화이트리스트에 추가하는 수단을 포함하는, 컴퓨팅 디바이스.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562159433P | 2015-05-11 | 2015-05-11 | |
US62/159,433 | 2015-05-11 | ||
US14/849,849 US10104107B2 (en) | 2015-05-11 | 2015-09-10 | Methods and systems for behavior-specific actuation for real-time whitelisting |
US14/849,849 | 2015-09-10 | ||
PCT/US2016/027462 WO2016182668A1 (en) | 2015-05-11 | 2016-04-14 | Methods and systems for behavior-specific actuation for real-time whitelisting |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180006380A true KR20180006380A (ko) | 2018-01-17 |
Family
ID=55809239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177032262A KR20180006380A (ko) | 2015-05-11 | 2016-04-14 | 실시간 화이트리스팅을 위한 거동-특정의 엑츄에이션을 위한 방법들 및 시스템들 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10104107B2 (ko) |
EP (1) | EP3295360A1 (ko) |
JP (1) | JP2018522321A (ko) |
KR (1) | KR20180006380A (ko) |
CN (1) | CN107580699A (ko) |
WO (1) | WO2016182668A1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190121483A (ko) * | 2018-04-18 | 2019-10-28 | 롯데정보통신 주식회사 | 화이트리스트 기반 악성코드 차단 장치 및 방법 |
KR102156502B1 (ko) * | 2019-09-30 | 2020-09-15 | 주식회사 체크멀 | 화이트 리스트 기반 백신의 프로그램 관리 방법 |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10264025B2 (en) | 2016-06-24 | 2019-04-16 | Varmour Networks, Inc. | Security policy generation for virtualization, bare-metal server, and cloud computing environments |
US10565520B2 (en) * | 2015-03-12 | 2020-02-18 | Accenture Global Solutions Limited | Feature extraction for machine learning |
US10193929B2 (en) | 2015-03-13 | 2019-01-29 | Varmour Networks, Inc. | Methods and systems for improving analytics in distributed networks |
US9380027B1 (en) | 2015-03-30 | 2016-06-28 | Varmour Networks, Inc. | Conditional declarative policies |
US10453059B2 (en) | 2015-09-30 | 2019-10-22 | Bank Of America Corporation | Non-intrusive geo-location determination associated with transaction authorization |
US20170091757A1 (en) * | 2015-09-30 | 2017-03-30 | Bank Of America Corporation | Tokenization provisioning and allocating system |
US10607215B2 (en) | 2015-09-30 | 2020-03-31 | Bank Of America Corporation | Account tokenization for virtual currency resources |
US10114944B1 (en) * | 2015-11-12 | 2018-10-30 | Symantec Corporation | Systems and methods for classifying permissions on mobile devices |
US10191758B2 (en) | 2015-12-09 | 2019-01-29 | Varmour Networks, Inc. | Directing data traffic between intra-server virtual machines |
JP6759572B2 (ja) | 2015-12-15 | 2020-09-23 | 横河電機株式会社 | 統合生産システム |
JP6693114B2 (ja) * | 2015-12-15 | 2020-05-13 | 横河電機株式会社 | 制御装置及び統合生産システム |
US20230316284A1 (en) * | 2016-03-25 | 2023-10-05 | State Farm Mutual Automobile Insurance Company | Reducing false positives using customer data and machine learning |
EP3455776B1 (en) * | 2016-05-10 | 2021-11-10 | Firstpoint Mobile Guard Ltd. | System for securing communication and information of mobile devices through a controlled cellular communication network |
TWI599905B (zh) * | 2016-05-23 | 2017-09-21 | 緯創資通股份有限公司 | 惡意碼的防護方法、系統及監控裝置 |
EP3469777B1 (en) * | 2016-06-08 | 2022-08-03 | Cylance Inc. | Deployment of machine learning models for discernment of threats |
US10755334B2 (en) | 2016-06-30 | 2020-08-25 | Varmour Networks, Inc. | Systems and methods for continually scoring and segmenting open opportunities using client data and product predictors |
US10715533B2 (en) * | 2016-07-26 | 2020-07-14 | Microsoft Technology Licensing, Llc. | Remediation for ransomware attacks on cloud drive folders |
JP6382892B2 (ja) * | 2016-07-27 | 2018-08-29 | 三菱日立パワーシステムズ株式会社 | 運転情報分析装置 |
US20180075233A1 (en) * | 2016-09-13 | 2018-03-15 | Veracode, Inc. | Systems and methods for agent-based detection of hacking attempts |
CN106897619B (zh) * | 2016-12-14 | 2019-04-23 | 中国移动通信集团设计院有限公司 | 移动终端恶意软件感知方法及装置 |
US11200314B2 (en) * | 2016-12-15 | 2021-12-14 | Hewlett-Packard Development Company, L.P. | Ransomware attack monitoring |
US10360380B2 (en) | 2017-01-19 | 2019-07-23 | Cylance Inc. | Advanced malware classification |
US10628585B2 (en) | 2017-01-23 | 2020-04-21 | Microsoft Technology Licensing, Llc | Ransomware resilient databases |
EP3545658B1 (en) * | 2017-01-23 | 2021-03-31 | Mitsubishi Electric Corporation | Evaluation and generation of a whitelist |
US10902119B1 (en) * | 2017-03-30 | 2021-01-26 | Fireeye, Inc. | Data extraction system for malware analysis |
US20180314979A1 (en) * | 2017-04-28 | 2018-11-01 | GM Global Technology Operations LLC | Systems and methods for processing radio data system feeds |
US10999297B2 (en) | 2017-05-15 | 2021-05-04 | Forcepoint, LLC | Using expected behavior of an entity when prepopulating an adaptive trust profile |
US10917423B2 (en) | 2017-05-15 | 2021-02-09 | Forcepoint, LLC | Intelligently differentiating between different types of states and attributes when using an adaptive trust profile |
US10129269B1 (en) | 2017-05-15 | 2018-11-13 | Forcepoint, LLC | Managing blockchain access to user profile information |
US10915643B2 (en) | 2017-05-15 | 2021-02-09 | Forcepoint, LLC | Adaptive trust profile endpoint architecture |
US10623431B2 (en) | 2017-05-15 | 2020-04-14 | Forcepoint Llc | Discerning psychological state from correlated user behavior and contextual information |
US9882918B1 (en) * | 2017-05-15 | 2018-01-30 | Forcepoint, LLC | User behavior profile in a blockchain |
US10447718B2 (en) | 2017-05-15 | 2019-10-15 | Forcepoint Llc | User profile definition and management |
US10999296B2 (en) | 2017-05-15 | 2021-05-04 | Forcepoint, LLC | Generating adaptive trust profiles using information derived from similarly situated organizations |
US10862927B2 (en) | 2017-05-15 | 2020-12-08 | Forcepoint, LLC | Dividing events into sessions during adaptive trust profile operations |
CN107454055B (zh) * | 2017-05-17 | 2020-08-28 | 中云网安科技(北京)有限公司 | 一种通过安全学习保护网站的方法、装置和系统 |
RU2659737C1 (ru) * | 2017-08-10 | 2018-07-03 | Акционерное общество "Лаборатория Касперского" | Система и способ управления вычислительными ресурсами для обнаружения вредоносных файлов |
US11062021B2 (en) * | 2017-08-29 | 2021-07-13 | NortonLifeLock Inc. | Systems and methods for preventing malicious applications from exploiting application services |
US11003775B2 (en) * | 2017-09-11 | 2021-05-11 | Carbon Black, Inc. | Methods for behavioral detection and prevention of cyberattacks, and related apparatus and techniques |
KR102339239B1 (ko) * | 2017-10-13 | 2021-12-14 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 클라우드-디바이스 협업적 실시간 사용자 사용 및 성능 비정상 검출을 위한 시스템 및 방법 |
EP3474175B1 (en) * | 2017-10-18 | 2020-10-14 | AO Kaspersky Lab | System and method of managing computing resources for detection of malicious files based on machine learning model |
US10878090B2 (en) * | 2017-10-18 | 2020-12-29 | AO Kaspersky Lab | System and method of detecting malicious files using a trained machine learning model |
CN111819559A (zh) * | 2017-11-17 | 2020-10-23 | 爱维士软件有限责任公司 | 以量化步长使用机器学习模型用于恶意软件检测 |
US20190156024A1 (en) * | 2017-11-20 | 2019-05-23 | Somansa Co., Ltd. | Method and apparatus for automatically classifying malignant code on basis of malignant behavior information |
CN110120963B (zh) * | 2018-02-06 | 2022-08-12 | 斑马智行网络(香港)有限公司 | 一种数据处理方法、装置、设备和机器可读介质 |
US10628587B2 (en) * | 2018-02-14 | 2020-04-21 | Cisco Technology, Inc. | Identifying and halting unknown ransomware |
US11558401B1 (en) * | 2018-03-30 | 2023-01-17 | Fireeye Security Holdings Us Llc | Multi-vector malware detection data sharing system for improved detection |
US11223649B2 (en) | 2018-05-06 | 2022-01-11 | Nec Corporation | User-added-value-based ransomware detection and prevention |
US11001452B2 (en) * | 2018-08-15 | 2021-05-11 | P & P Optica Inc. | Conveyor apparatus for imaging food products |
US11641406B2 (en) * | 2018-10-17 | 2023-05-02 | Servicenow, Inc. | Identifying applications with machine learning |
US11023576B2 (en) * | 2018-11-28 | 2021-06-01 | International Business Machines Corporation | Detecting malicious activity on a computer system |
US10803458B1 (en) * | 2018-12-20 | 2020-10-13 | Worldpay, Llc | Methods and systems for detecting suspicious or non-suspicious activities involving a mobile device use |
EP3674948B1 (en) * | 2018-12-28 | 2024-06-12 | AO Kaspersky Lab | System and method for classification of objects of a computer system |
RU2724710C1 (ru) | 2018-12-28 | 2020-06-25 | Акционерное общество "Лаборатория Касперского" | Система и способ классификации объектов вычислительной системы |
CN109726601A (zh) * | 2018-12-29 | 2019-05-07 | 360企业安全技术(珠海)有限公司 | 违规行为的识别方法及装置、存储介质、计算机设备 |
US20200274939A1 (en) * | 2019-02-26 | 2020-08-27 | Microsoft Technology Licensing, Llc | Optimized telemetry-generated application-execution policies based on interaction data |
JP7156098B2 (ja) * | 2019-03-06 | 2022-10-19 | コニカミノルタ株式会社 | 情報処理装置、機能実行可否判断方法および機能実行可否判断プログラム |
CN109918122B (zh) * | 2019-03-06 | 2022-04-22 | Oppo广东移动通信有限公司 | 白名单维护方法、装置及终端设备 |
WO2020206620A1 (en) * | 2019-04-09 | 2020-10-15 | Orange | Methods and apparatus to discriminate authentic wireless internet-of-things devices |
US11681831B2 (en) * | 2019-04-10 | 2023-06-20 | International Business Machines Corporation | Threat detection using hardware physical properties and operating system metrics with AI data mining |
US10853496B2 (en) | 2019-04-26 | 2020-12-01 | Forcepoint, LLC | Adaptive trust profile behavioral fingerprint |
US11551137B1 (en) * | 2019-04-30 | 2023-01-10 | Ca, Inc. | Machine learning adversarial campaign mitigation on a computing device |
US11290494B2 (en) | 2019-05-31 | 2022-03-29 | Varmour Networks, Inc. | Reliability prediction for cloud security policies |
US11290493B2 (en) | 2019-05-31 | 2022-03-29 | Varmour Networks, Inc. | Template-driven intent-based security |
US11556646B2 (en) * | 2019-05-31 | 2023-01-17 | International Business Machines Corporation | Identifying and responding to a side-channel security threat |
US11711374B2 (en) | 2019-05-31 | 2023-07-25 | Varmour Networks, Inc. | Systems and methods for understanding identity and organizational access to applications within an enterprise environment |
US11310284B2 (en) | 2019-05-31 | 2022-04-19 | Varmour Networks, Inc. | Validation of cloud security policies |
US11863580B2 (en) | 2019-05-31 | 2024-01-02 | Varmour Networks, Inc. | Modeling application dependencies to identify operational risk |
US11575563B2 (en) | 2019-05-31 | 2023-02-07 | Varmour Networks, Inc. | Cloud security management |
EP3772007A1 (en) | 2019-07-30 | 2021-02-03 | Continental Teves AG & Co. OHG | Physical execution monitor |
US11461673B2 (en) * | 2019-10-07 | 2022-10-04 | Servicenow, Inc. | Shared machine learning model for application discovery |
CN110889112B (zh) * | 2019-10-23 | 2022-03-04 | 中国航天系统科学与工程研究院 | 一种基于白名单机制的软件运行统一控制系统及方法 |
US11582822B2 (en) * | 2019-10-24 | 2023-02-14 | Mediatek Inc. | Apparatuses and methods for coordinating operations associated with multiple subscriber identities |
CN112287346A (zh) * | 2020-11-16 | 2021-01-29 | 山西三友和智慧信息技术股份有限公司 | 一种基于irp分析的加密勒索软件实时监测系统及方法 |
US11876817B2 (en) | 2020-12-23 | 2024-01-16 | Varmour Networks, Inc. | Modeling queue-based message-oriented middleware relationships in a security system |
US11818152B2 (en) | 2020-12-23 | 2023-11-14 | Varmour Networks, Inc. | Modeling topic-based message-oriented middleware within a security system |
US20220237286A1 (en) * | 2021-01-28 | 2022-07-28 | Malwarebytes Inc. | Kernel based exploitation detection and prevention using grammatically structured rules |
US11777978B2 (en) | 2021-01-29 | 2023-10-03 | Varmour Networks, Inc. | Methods and systems for accurately assessing application access risk |
US20230012801A1 (en) * | 2021-06-30 | 2023-01-19 | The Florida State University Research Foundation, Inc. | Content Hiding Software Identification and/or Extraction System and Method |
US11734316B2 (en) | 2021-07-08 | 2023-08-22 | Varmour Networks, Inc. | Relationship-based search in a computing environment |
CN113486344B (zh) * | 2021-07-14 | 2023-09-05 | 北京奇艺世纪科技有限公司 | 一种接口防刷方法、装置、服务端及存储介质 |
CN113569242A (zh) * | 2021-07-28 | 2021-10-29 | 中国南方电网有限责任公司 | 违规软件识别方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8719924B1 (en) | 2005-03-04 | 2014-05-06 | AVG Technologies N.V. | Method and apparatus for detecting harmful software |
US8141132B2 (en) * | 2006-08-15 | 2012-03-20 | Symantec Corporation | Determining an invalid request |
US8448218B2 (en) * | 2008-01-17 | 2013-05-21 | Josep Bori | Method and apparatus for a cryptographically assisted computer system designed to deter viruses and malware via enforced accountability |
US20110041179A1 (en) * | 2009-08-11 | 2011-02-17 | F-Secure Oyj | Malware detection |
US8161552B1 (en) | 2009-09-23 | 2012-04-17 | Trend Micro, Inc. | White list creation in behavior monitoring system |
US20110078029A1 (en) * | 2009-09-25 | 2011-03-31 | National Electronics Warranty, Llc | Systems and methods for hosting, updating, and sending a webpage |
CN101924761B (zh) | 2010-08-18 | 2013-11-06 | 北京奇虎科技有限公司 | 一种依据白名单进行恶意程序检测的方法 |
CN103607381B (zh) | 2010-08-18 | 2017-02-15 | 北京奇虎科技有限公司 | 白名单生成及恶意程序检测方法、客户端和服务器 |
US8656465B1 (en) * | 2011-05-09 | 2014-02-18 | Google Inc. | Userspace permissions service |
US9832211B2 (en) * | 2012-03-19 | 2017-11-28 | Qualcomm, Incorporated | Computing device to detect malware |
US9324034B2 (en) * | 2012-05-14 | 2016-04-26 | Qualcomm Incorporated | On-device real-time behavior analyzer |
US9202047B2 (en) * | 2012-05-14 | 2015-12-01 | Qualcomm Incorporated | System, apparatus, and method for adaptive observation of mobile device behavior |
US20130333039A1 (en) * | 2012-06-07 | 2013-12-12 | Mcafee, Inc. | Evaluating Whether to Block or Allow Installation of a Software Application |
US9319897B2 (en) * | 2012-08-15 | 2016-04-19 | Qualcomm Incorporated | Secure behavior analysis over trusted execution environment |
US9747440B2 (en) * | 2012-08-15 | 2017-08-29 | Qualcomm Incorporated | On-line behavioral analysis engine in mobile device with multiple analyzer model providers |
US8913838B2 (en) * | 2013-02-28 | 2014-12-16 | Alcatel Lucent | Visual information processing allocation between a mobile device and a network |
US9306962B1 (en) * | 2013-07-25 | 2016-04-05 | Niddel Corp | Systems and methods for classifying malicious network events |
US20150113644A1 (en) * | 2013-10-21 | 2015-04-23 | Trusteer, Ltd. | Exploit Detection/Prevention |
CN104484599B (zh) | 2014-12-16 | 2017-12-12 | 北京奇虎科技有限公司 | 一种基于应用程序的行为处理方法和装置 |
US9785776B2 (en) * | 2015-04-27 | 2017-10-10 | Iboss, Inc. | High risk program identification based on program behavior |
-
2015
- 2015-09-10 US US14/849,849 patent/US10104107B2/en not_active Expired - Fee Related
-
2016
- 2016-04-14 JP JP2017558543A patent/JP2018522321A/ja active Pending
- 2016-04-14 CN CN201680027046.XA patent/CN107580699A/zh active Pending
- 2016-04-14 EP EP16718819.2A patent/EP3295360A1/en not_active Withdrawn
- 2016-04-14 KR KR1020177032262A patent/KR20180006380A/ko unknown
- 2016-04-14 WO PCT/US2016/027462 patent/WO2016182668A1/en active Search and Examination
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190121483A (ko) * | 2018-04-18 | 2019-10-28 | 롯데정보통신 주식회사 | 화이트리스트 기반 악성코드 차단 장치 및 방법 |
KR102156502B1 (ko) * | 2019-09-30 | 2020-09-15 | 주식회사 체크멀 | 화이트 리스트 기반 백신의 프로그램 관리 방법 |
Also Published As
Publication number | Publication date |
---|---|
CN107580699A (zh) | 2018-01-12 |
US10104107B2 (en) | 2018-10-16 |
US20160337390A1 (en) | 2016-11-17 |
EP3295360A1 (en) | 2018-03-21 |
WO2016182668A1 (en) | 2016-11-17 |
JP2018522321A (ja) | 2018-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
KR102474048B1 (ko) | 개선된 멀웨어 보호를 위해 모바일 디바이스와의 페이크 사용자 상호작용들을 검출하기 위한 방법들 및 시스템들 | |
JP6174827B1 (ja) | サイドチャネル攻撃を妨害するための方法およびシステム | |
KR101840156B1 (ko) | 바이탈 애플리케이션들의 타겟화된 보호를 위해 애플리케이션-특정 모델들을 생성하는 방법들 및 시스템들 | |
US9787695B2 (en) | Methods and systems for identifying malware through differences in cloud vs. client behavior | |
US9578049B2 (en) | Methods and systems for using causal analysis for boosted decision stumps to identify and respond to non-benign behaviors | |
US9357397B2 (en) | Methods and systems for detecting malware and attacks that target behavioral security mechanisms of a mobile device | |
US20160379136A1 (en) | Methods and Systems for Automatic Extraction of Behavioral Features from Mobile Applications | |
US20170024660A1 (en) | Methods and Systems for Using an Expectation-Maximization (EM) Machine Learning Framework for Behavior-Based Analysis of Device Behaviors | |
US20180039779A1 (en) | Predictive Behavioral Analysis for Malware Detection | |
WO2016130249A1 (en) | Determining model protection level on-device based on malware detection in similar devices | |
WO2016060738A1 (en) | Methods and systems for using behavioral analysis towards efficient continuous authentication |