KR20120066018A - 디바이스 검사 - Google Patents
디바이스 검사 Download PDFInfo
- Publication number
- KR20120066018A KR20120066018A KR1020127006902A KR20127006902A KR20120066018A KR 20120066018 A KR20120066018 A KR 20120066018A KR 1020127006902 A KR1020127006902 A KR 1020127006902A KR 20127006902 A KR20127006902 A KR 20127006902A KR 20120066018 A KR20120066018 A KR 20120066018A
- Authority
- KR
- South Korea
- Prior art keywords
- verifier
- memory
- processor
- physical memory
- result
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
-
- 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
-
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- 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
-
- 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/121—Wireless intrusion detection systems [WIDS]; Wireless intrusion prevention systems [WIPS]
- H04W12/122—Counter-measures against attacks; Protection against rogue devices
-
- 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/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2101—Auditing as a secondary aspect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2123—Dummy operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
물리적 메모리를 포함하는 디바이스의 검사가 개시된다. 하드웨어 구성에 대응하는 하나 이상의 하드웨어 파라미터들이 수신된다. 초기화 정보도 수신된다. 물리적 메모리가 선택적으로 판독되고, 적어도 하나의 결과가 결정된다. 그 결과는 검증기에게 제공된다.
Description
본 출원은, 참조로써 그 전체가 각각 본 명세서에 통합되는, 2009년 8월 17일자로 출원되고 발명의 명칭이 멀웨어 검출(DETECTION OF MALWARE)인 미국 가특허출원 제61/234,604호, 2009년 11월 2일자로 출원되고 발명의 명칭이 디바이스 검사(AUDITING A DEVICE)인 미국 가특허출원 제61/257,043호, 및 2009년 12월 14일자로 출원되고 발명의 명칭이 디바이스 검사(AUDITING A DEVICE)인 미국 가특허출원 제61/286,369호를 우선권 주장한다.
비허가된 프로그램의 존재를 검출하기 위한 기존의 기술들은 통상적으로 자원 집약적이다. 예를 들면, 이들은 끊임없는 (예를 들면, 블랙리스트들의) 갱신들, 문제점들에 대한 주기적이거나 지속적인 스캔들을 요구한다. 이러한 상황은, 이러한 기술에 의해 보호받고 있는 디바이스가 제한된 메모리 또는 배터리에 의해 전력을 공급받는 것과 같은 제한된 자원들을 갖는 경우에 악화된다. 일례로서, 제한된 자원을 갖는 디바이스는 모든 알려진 비허가된 프로그램들을 검출하기 위한 규정들을 저장하지 못할 수 있다. 다른 예로서, 비허가된 프로그램들을 스캐닝하는 것은 통상적으로 전력 집약적인 활동이고 배터리로 전력 공급되는 디바이스의 배터리를 급속하게 고갈시킬 수 있다. 몇몇 환경들에서, 중앙 기관(central authority)이 비허가된 프로그램들의 발견을 촉진하는 데 사용될 수 있다. 이러한 방식의 단점은, 보호받고 있는 디바이스가 디바이스 활동들의 상세한 로그들을 컴파일하는 것을 통상적으로 요구한다는 것이다. 이러한 로그들을 생성하는 것은 자원 집약적이고(예를 들면, 대용량의 디스크 스토리지; 로그 데이터를 어셈블링하기 위한 처리 전력; 및 로그 데이터를 중앙 기관으로 전송하기 위한 대역폭을 요구함), 프라이버시 문제들을 또한 나타낼 수도 있다.
또한, 비허가된 프로그램들의 존재를 검출하기 위한 기존의 기술들은 일반적으로 이러한 프로그램들에 의한 공격에 취약하여 부정확한 보고를 야기한다. 예를 들면, 루트킷(rootkit)은 운영 체제로의 어플리케이션들에 의한 요구들을 "엿들을" 수 있고, 이러한 요구들과 그 응답들을 변형시킬 수 있다. 어플리케이션이 어떠한 프로세스들이 실행되고 있는지에 대한 정보를 요구한다면, 악성 루트킷 어플리케이션은 운영 체제에 의해 반환되는 리포트로부터 자기 자신에 대한 정보를 삭제함으로써 검출을 피할 수 있다.
또한, 비허가된 프로그램들의 설치나 실행에 대해 스크리닝하기 위한 기존의 기술들은 그 구조 및 기능에 대한 정보의 결여로 인해 즉시 검출될 수 없는 멀웨어(malware)의 새로운 인스턴스들에 취약한 것으로 알려져 있다. 따라서, 디바이스에 이용가능한 자원들에 상관없이, 비허가된 프로그램이 충분히 복잡하고/하거나 이전에 직면되지 않았다면, 검출을 피할 수 있고 비검출된 위해를 야기할 수 있다. 비허가된 프로그램이 사용자에 의해 의도적으로 설치되어 검출을 우회한다면(예를 들면, 소프트웨어 파이어러시(piracy)를 용이하게 하기 위해), 통상적인 기술들은 비허가된 프로그램을 찾을 수 없거나, 임의의 다른 비허가된 활동들을 찾을 수 없다.
본 발명의 목적은 디바이스를 검사하는 방법 및 그를 위한 시스템을 제공하는 것이다.
본 발명의 다양한 실시예들은 후술하는 상세한 설명과 첨부 도면에 개시된다.
본 발명은, 프로세스; 장치; 시스템; 작업의 구성; 컴퓨터 판독가능 저장 매체에 구현된 컴퓨터 프로그램 제품; 및/또는 프로세서를 포함하여 다양한 방식으로 구현될 수 있으며, 이러한 프로세서는 저장된 명령 및/또는 프로세서에 연결된 메모리에 의해 제공되는 명령을 실행하도록 구성된다. 본 명세서에서, 이러한 구현들, 또는 본 발명이 취할 수 있는 임의의 다른 유형이 기술들로서 칭해질 수 있다. 일반적으로, 개시된 프로세스의 단계의 순서는 본 발명의 범위 내에서 변경될 수 있다. 달리 언급하지 않으면, 작업을 수행하도록 구성되는 것으로 기술된 프로세서 또는 메모리와 같은 구성 요소는 소정의 시간에 작업을 수행하도록 일시적으로 구성되는 범용 구성 요소 또는 그 작업을 수행하도록 제조된 특수 목적 구성 요소로서 구현될 수 있다. 본 명세서에서 사용되는 '프로세서'라는 용어는 컴퓨터 프로그램 명령들과 같은 데이터를 처리하도록 구성된 하나 이상의 디바이스들, 회로들, 및/또는 처리 코어들을 칭한다.
본 발명은 디바이스를 검사하는 방법 및 그를 위한 시스템을 제공한다.
도 1은 디바이스 검사가 제공되는 환경의 실시예를 도시하는 도면.
도 2는 디바이스의 실시예를 도시하는 도면.
도 3은 디바이스 검사를 수행하기 위한 프로세스의 실시예를 도시하는 도면.
도 4는 디바이스 검사를 수행하기 위한 프로세스의 실시예를 도시하는 도면.
도 5a는 도 3에 도시된 프로세스의 실행 전의 메모리의 양태를 도시하는 도면.
도 5b는 도 3에 도시된 프로세스가 실행되는 동안의 메모리의 양태를 도시하는 도면.
도 6은 디바이스 검사를 수행하기 위한 프로세스의 실시예를 도시하는 도면.
도 7은 디바이스 검사와 함께 이용하기 위한 의사 코드(pseudo code)의 예를 도시하는 도면.
도 8은 디바이스 검사를 수행하기 위한 프로세스의 예를 도시하는 도면.
도 9는 디바이스 검사가 제공되는 환경의 실시예를 도시하는 도면.
도 10은 디바이스부의 실시예를 도시하는 도면.
도 11은 디바이스 검사를 수행하기 위한 프로세스의 실시예를 도시하는 도면.
도 12는 스텝에 따라 판독되는 메모리부를 도시하는 도면.
도 13은 선택적으로 메모리를 판독하기 위한 프로세스의 구현의 실시예를 도시하는 도면.
도 14는 디바이스 검사의 일부를 타이밍하기 위한 프로세스의 구현의 실시예를 도시하는 도면.
도 2는 디바이스의 실시예를 도시하는 도면.
도 3은 디바이스 검사를 수행하기 위한 프로세스의 실시예를 도시하는 도면.
도 4는 디바이스 검사를 수행하기 위한 프로세스의 실시예를 도시하는 도면.
도 5a는 도 3에 도시된 프로세스의 실행 전의 메모리의 양태를 도시하는 도면.
도 5b는 도 3에 도시된 프로세스가 실행되는 동안의 메모리의 양태를 도시하는 도면.
도 6은 디바이스 검사를 수행하기 위한 프로세스의 실시예를 도시하는 도면.
도 7은 디바이스 검사와 함께 이용하기 위한 의사 코드(pseudo code)의 예를 도시하는 도면.
도 8은 디바이스 검사를 수행하기 위한 프로세스의 예를 도시하는 도면.
도 9는 디바이스 검사가 제공되는 환경의 실시예를 도시하는 도면.
도 10은 디바이스부의 실시예를 도시하는 도면.
도 11은 디바이스 검사를 수행하기 위한 프로세스의 실시예를 도시하는 도면.
도 12는 스텝에 따라 판독되는 메모리부를 도시하는 도면.
도 13은 선택적으로 메모리를 판독하기 위한 프로세스의 구현의 실시예를 도시하는 도면.
도 14는 디바이스 검사의 일부를 타이밍하기 위한 프로세스의 구현의 실시예를 도시하는 도면.
본 발명의 하나 이상의 실시예들의 상세한 설명은 본 발명의 원리를 예시하는 첨부 도면들에 따라 제공될 것이다. 본 발명은 이러한 실시예와 함께 설명되지만, 본 발명이 임의의 실시예에 한정되는 것은 아니다. 본 발명의 범위는 청구항에 의해서만 제한되며, 본 발명은 다양한 택일적인 것, 변형 및 동등물을 포함한다. 다양하고 구체적인 상세 사항이 본 발명의 완전한 이해를 제공하기 위해 이하의 설명에서 개진된다. 이러한 상세 사항은 예시의 목적으로 제공되는 것이며, 본 발명은 이러한 구체적인 상세 사항의 일부 또는 전부가 없어도 청구항에 따라 실시될 수 있다. 명료화를 위해, 본 발명과 연관된 기술 분야에 알려진 기술 자료는, 본 발명이 불필요하게 모호하게 되지 않도록 상세하게 설명되지 않는다.
도 1은 디바이스 검사가 제공되는 환경의 실시예를 도시한다. 도시된 예에서, 디바이스(102)는 휴대 전화(cellular telephone)이다. 디바이스(102)는 검증기(106)와 (예를 들면, 네트워크(104)를 통해) 통신한다. 도 1에서, 디바이스(102)는 3G 네트워크를 통해 검증기(106)와 통신한다. 검증기(106)는 디바이스(102)에 대한 전화통신 서비스의 제공자와 같이 캐리어의 제어 하에 있다. 검증기(106)는 디바이스(102)에 대응하는 엔트리와 디바이스(102)에 포함된 RAM의 양을 포함하는 하드웨어 구성 정보의 데이터베이스를 포함한다.
이하 더욱 상세하게 설명할 바와 같이, 디바이스에 존재하는 임의의 말소 프로그램들(예를 들면, 멀웨어)이 검출되고/되거나 삭제될 수 있도록, 디바이스(102)가 검사될 수 있다. 몇몇 실시예들에서, 이는 디바이스(102)에 포함된 물리적 메모리에 대한 변형들의 시퀀스의 작업을 통해 수행된다. 메모리 변형들의 수행과 연관된 결과들은 검증기(106)에 의해 검증된다. 일단 디바이스(102) 이러한 말소 프로그램의 영향을 받지 않는 것으로 결정되면, 또한 이하 더욱 상세하게 설명되는 추가적인 스캔들이 수행될 수 있다. 예를 들면, 멀웨어(예를 들면, 사용자의 인식 및/또는 동의 없이 설치된 소프트웨어)를 검출하는 것 외에, 본 명세서에서 설명된 기술들은 캐리어 또는 하드웨어 제조자에 의해 설치된 디지털 권한 관리를 우회하기 위한 것과 같이, 사용자에 의해 취해진 "탈옥(jailbreaking)" 액션(예를 들면, 특권 강화들)을 검출할 수 있다.
다양한 디바이스들이 본 명세서에 설명된 기술들과 함께 사용될 수 있다. 예를 들면, 몇몇 실시예들에서 디바이스(102)는 비디오 게임 콘솔이다. 비디오 게임 콘솔은 인터넷(104)을 통해 게임 콘솔의 제조자의 제어 하에서 검증기와 통신하도록 구성된다. 디바이스(102)의 소유자가 디바이스(102)에 (예를 들면, 변형 칩(modification chip)을 이용하여) 비허가된 변경을 가한다면, 검증기(106)는 그에 따른 변형을 검출할 수 있을 것이다.
본 명세서에 설명된 기술들과 함께 사용될 수 있는 디바이스의 다른 예들은 데스크탑 컴퓨터들, 노트북 컴퓨터들, 넷북들, 개인용 휴대 단말(personal digital assistants), 비디오 플레이백 디바이스들(예를 들면, 텔레비젼들, DVD 플레이어들, 휴대용 비디오 플레이어들), 라우터들, 액세스 포인트들, 셋탑 박스들, 의료 디바이스들, 및 프로세스와 메모리를 포함하는 실질적으로 임의의 다른 디바이스를 포함한다.
다양한 실시예들에서, 검증기(106)는 별도의 엔티티에 의하는 것 대신 디바이스(102)의 사용자에 의해 제어된다. 예를 들면, 디바이스(102)의 사용자가 소유하는 데스크탑 컴퓨터는 디바이스(102)에 검증 서비스를 제공하도록 구성될 수 있다. 이 시나리오에서, 디바이스(102)는 로컬 네트워크를 통해 검증기와 통신하도록 구성될 수 있다. 또한, 디바이스는 검증기(106)와 직접(예를 들면, 전용 케이블을 통해) 통신하도록 구성될 수 있고, 네트워크(104)는 적용될 수 있는 것처럼 생략된다.
몇몇 실시예들에서, 검증기는 디바이스(102)와 일체화되거나 그렇지 않으면 이에 직접 연결된다. 예를 들면, 셀룰러 폰에 삽입된 가입자 식별 모듈(SIM) 카드는 셀룰러 폰에 검증기(106)의 기능을 제공하도록 구성될 수 있다. 다른 예에서, 검증기(106)의 기능은 셀룰러 폰을 충전하는 데 사용되는 파워 코드(power cord)에 통합될 수 있다. 이러한 실시예들에서, 외부 검증기가 생략될 수 있거나, 일체화된/연결된 검증기에 의해 제공된 검증 서비스들에 부가하여 사용될 수 있다. 일례로서, 디바이스(102)가 통합된 WiFi 기능들을 갖는 개인용 비디오 플레이어라고 상정한다. 디바이스를 충전하는 데 사용되는 파워 코드는 충전될 때마다 디바이스에 검증 서비스들을 제공하도록 구성될 수 있다. 또한, WiFi 라디오가 활성이면, 디바이스는 디바이스의 제조자에 의해 제공되는 검증기와 주기적으로 통신하도록 구성될 수 있다. 다른 예로서, 검증기(106)는 사용자에 의해 랩탑(102)에 주기적으로 삽입되는 USB 디바이스에 포함될 수 있다. 또한, 랩탑(102)의 사용자가 온라인 은행과의 금융 거래 행위를 시도할 때마다, 은행도 사용자의 계좌로의 액세스를 허가하기 전에 랩탑(102)에 검증 서비스들을 제공할 수 있다. 또 다른 예로서, 네트워크 오퍼레이터 또는 서비스 공급자는, 그 또는 그녀가 네트워크 상에 허가를 받기 전에 또는 서비스로의 액세스를 허가받기 전에, 사용자에게 그 또는 그녀의 머신이 검사되도록 요구할 수 있다. 또한, 예를 들면, 그 또는 그녀가 잠재적으로 위험한 상황에 노출되었다고 인식한 후에, 사용자가 검사를 개시할 수 있다. 사용자가 검사를 개시할 수 있는 하나의 방법은 디바이스 상의 메뉴 옵션을 선택하는 것이다. 다른 예시적인 방법은 사용자가 (예를 들면, 웹 양식을 통해 온라인 요청을 제출함으로써) 검증기(106)로부터의 검사를 요구하는 것이다.
도 2는 디바이스의 실시예를 도시한다. 도시된 예에서, 디바이스(102)는 프로세서(202), 제 1 메모리(204), 제 2 메모리(206) 및 통신 인터페이스(208)를 포함한다. 일례로서, 디바이스(102)는 528Mhz ARM 프로세서(202), 128MB의 RAM(204), 사용자가 1GB 마이크로 SD 카드를 삽입한 마이크로 SD 카드(206) 및 3G 모뎀(208)을 포함한다. 또한, 메모리(204)는 본 명세서에서 "고속" 메모리라 칭해진다. 또한, 메모리(206)는 본 명세서에서 "저속" 메모리라 칭해진다. 그러나, 메모리(204, 206)는 다른 속도일 필요는 없다. GPS 수신기(도시 생략)와 같이, 다른 구성 요소들이 디바이스(102)에 포함될 수도 있다. 또한, 제 2 메모리(206)와 같은 소자들이 적용될 수 있는 것처럼 생략될 수 있다. 액티브 프로그램들을 포함할 수 있는 RAM을 고속으로 칭할 수 있고, 데이터만을 저장할 수 있는 RAM을 저속으로 고려할 수 있다.
본 명세서에 설명된 검사 기술들을 이용해서, 고속 메모리에서의 액티브 프로세스들의 부재가 검증될 수 있다. 그리고, 검증이 완료된 후에, 모든 메모리(예를 들면, 고속 및 저속 모두)가 고속 및 저속 메모리 또는 그 일부의 컨텐츠를 식별, 분류, 보고 및 잠재적으로 변형하기 위해 스캐닝될 수 있다. 고속과 저속 메모리 사이의 구별은 다양한 방식들로 이루어질 수 있다. 예를 들면, RAM, 플래시 메모리 및 하드 드라이브를 갖는 디바이스에 대해, RAM만을 고속 메모리로서 다루고 플래시 메모리 및 하드 드라이브를 저속 메모리로서 다룰 수 있다. 또한, RAM 및 플래시 메모리들 모두를 고속 메모리로서 다루고 하드 드라이브를 저속 메모리로서 다룰 수 있다. 또한, 소정의 디바이스에 물리적으로 위치된 모든 메모리를 고속으로 고려할 수 있고, 디바이스에 의해 액세스가능한(또는 잠재적으로 액세스가능한) 모든 외부 메모리를 저속으로 고려할 수 있다. 외부 구성 요소들과 통신하는 턴어라운드 시간은 외부 메모리의 실제 로컬 액세스 속도와 유형에 상관없이 이러한 외부 액세스를 더 느리게 할 것이다. 어떠한 유형의 메모리가 고속과 저속으로 다루어지는지에 따라, 그에 따른 파라미터들의 선택이 행해질 것이다.
이하, 더욱 상세하게 설명할 바와 같이, 디바이스(102)에 대한 비허가된 변형의 존재는 디바이스(102)가 메모리(204)에 대한 일련의 변형들을 실행시키게 구성하고 그 결과를 조사함으로써 검출될 수 있다. 예를 들면, 변형들을 수행하는 데 걸리는 시간이 미리 결정된 시간 길이의 허용치를 초과하거나, 변형과 연관되어 결정된 결과가 예측 결과와 일치하지 않는다면, 애매한 프로그램(evasive program)의 존재가 표시될 수 있다. 다양한 실시예들에서, 메모리 변형들은, 메모리(204)와 같은 고속 메모리 상에서만 실행되는 대신, 디바이스 상의 모든 메모리(예를 들면, 메모리(204) 및 메모리(206))에 걸쳐 수행된다.
도 3은 디바이스 검사를 수행하기 위한 프로세스의 실시예를 도시한다. 다양한 실시예들에서, 도 3에 도시된 프로세스는 디바이스(102)에 의해 수행된다. 도 3에 도시된 프로세스는 다양한 방식들로 개시될 수 있다. 예를 들면, 프로세스는 사용자가 디바이스를 충전할 때마다(예를 들면, 전원을 검출했을 때 디바이스가 프로세스를 개시하도록 구성함으로써) 개시될 수 있다. 또한, 프로세스는 특정량의 시간의 경과 등에 응답하여(예를 들면, 비도덕적인 개인에 의해 새로운 취약점이 배포되었다는 통지를 캐리어가 수신하는 것에 응답하여), 사용자가 위험에 있다는 우려에 응답하여, 특히 크거나 통상적이지 않은 처리의 발생에 응답하여 개시될 수 있다. 도 3에 도시된 프로세스의 개시를 트리거링할 수 있는 이벤트들의 추가적인 예들은, 지불하거나 그렇지 않으면 금융 거래를 하는 디바이스(102)의 사용자에 의한 시도, 인증 시도(예를 들면, 디바이스의 사용자가 은행 계좌에 액세스하려는 시도), 및 수행되고 있는 액세스 요청(예를 들면, 디바이스에 영화의 다운로드에 대한 요청)를 포함한다.
하드웨어 구성에 대응하는 하나 이상의 하드웨어 파라미터들이 수신되었을 때, 프로세스가 302에서 개시된다. 예시적인 하드웨어 파라미터들은 고속 메모리(204)의 용량 및 속도를 포함한다. 예를 들면, 도 2에 나타낸 디바이스의 경우에, 하드웨어 파라미터들은 "용량=128M" 및 "속도=300Mhz"를 포함할 것이다. 사용될 수 있는 추가적인 파라미터는 코어들의 갯수, 버스의 종류 등을 포함한다.
하드웨어 파라미터들은 다양한 방식들로 수신될 수 있다. 일례로서, 셀룰러 폰의 SIM은 설치된 메모리의 용량 및 속도를 검출하도록 구성될 수 있다. 다른 예로서, 소유자의 케이블이 디바이스(102)를 전원(또는 컴퓨터 또는 다른 디바이스)에 접속하는 데 사용된다면, 특정 용량과 속도의 메모리를 갖는 디바이스와 연계하여서만 작업하는 케이블 때문에 파라미터들이 알려질 수 있다(따라서 "수신"된다). 또 다른 예로서, 디바이스의 시리얼 번호가 디바이스에 설치된 고속 메모리(204)의 용량 및 속도를 나타낼 수 있다. 다양한 실시예들에서, 사용자(또는 그 대표자)는 웹 양식 또는 구성 파일로 메모리 파라미터들을 입력하도록 요청된다. 또한, 디바이스의 적당한 메모리 구성에 대해 가정이 만들어질 수 있고 벤치마킹(benchmarking) 프로그램이, 그 가정이 옳은 것인지에 대해 확인을 하기 위해 실행될 수 있다.
304에서, 물리적 메모리에 변형들의 시퀀스가 수행된다. 이러한 변형들이 수행될 수 있는 방식들의 예들에 대해 이하에서 더욱 상세하게 설명된다. 몇몇 실시예들에서, 수행되는 변형의 시퀀스는 검증기에 의해 결정된다. 변형의 셋(set)은 다양한 방식들로 디바이스에 제공될 수 있다. 예를 들면, 시퀀스는 시드값(seed value)에 기초해서 디바이스 상에 구성될 수 있다. 시퀀스는 제조시에, 공급자 또는 캐리어로의 전달시에, 또는 구매시에 디바이스 상에 프리-로드(pre-load)될 수 있다. 또한, 사용자의 선택에 의해, 또는 구매 후의 임의의 시간에 서비스 공급자에 의해(예를 들면, 오버-더-업데이트(over-the-update) 또는 펌웨어 업데이트와 같이), 또는 검사를 수행할 필요가 있을 때 로딩될 수 있다. 파라미터화는 소정의 알려진 사양들에 대해, 제조자 또는 공급자 또는 캐리어에 의해 수행될 수 있다. 또한, 사용자 또는 서비스 공급자에 의해 예를 들면 시리얼 번호의 조사를 통해 수행될 수 있다. 파라미터들은 모델 또는 디바이스명과 연관될 수 있다. 디바이스가 구성 요소들의 교체 또는 추가에 의해 재구성된다면, 이러한 새로운 구성 요소들은 새로운 또는 추가된 파라미터화에 대한 정보를 담을 수 있다. 또한, 구성 요소들은 단지 파라미터 대신 전체 명령들의 세트를 담을 수 있다. 대안으로, 구성 요소들의 시리얼 번호들, 이름들 또는 종류들이 파라미터들 내의 필요한 변경을 나타낼 수 있다. 클라이언트 디바이스가 알고리즘 또는 새로운 구성 요소의 설치시에 안전한 것으로 믿어진다면, 클라이언트 머신은, (통상적으로 시스템이 부팅될 때 수행되는 것과 같이) 어떠한 구성 요소들이 설치되었는지 질의할 수 있고, 그에 따라 파라미터들을 설정할 수 있다.
다양한 실시예들에서, 디바이스 제조자는 프리로드 비활성 검사 소프트웨어를 무료로 제공하고, 검사 서비스들(및/또는 상세하게 후술할 추가적인 스캐닝 서비스들)을 활성화시키기 위해 추후에 지불을 요청한다. 검사 소프트웨어는 그 후에 최종 사용자들 또는 서비스 공급자들에 의한 요청에 따라 캐리어들에 의해 활성화될 수 있다. 캐리어는 활성화에 대한 지불을 모으고, 선택적으로 지불의 일부를 핸드셋 제조자들, 검사 소프트웨어의 공급자들, 추가적인 스캐닝 소프트웨어(예를 들면, 안티바이러스 검출 서비스들)의 공급자들, 및 거래에 관련된 임의의 다른 당사자들에게 전달한다.
306에서, 304에서 수행된 프로세스의 일부의 하나 이상의 결과들이 검증기에게 보고된다. 몇몇 실시예들에서, 결과들은 프록시(906)에게 제공되며, 여기에서 결과들을 타임스탬프(timestamp)하고 이를 검증기에 제공한다. 도 5와 함께 설명할 바와 같이, 몇몇 실시예들에서, 메모리에 대한 변형들의 다양한 반복들 및 검증기와의 통신들이 이루어지고, 도 3 및 4에 나타낸 프로세스들이 그에 따라 적응된다.
도 4는 디바이스 검사를 수행하기 위한 프로세스의 실시예를 도시한다. 다양한 실시예들에서, 도 4에 도시된 프로세스는 검증기(106)에 의해 수행된다. 상술한 바와 같이, 몇몇 실시예들에서, 도 4에 나타낸 프로세스는 (캐리어에 의해 제어되는 검증기 상에서와 같이) 디바이스(102)로부터 분리된 엔티티에 의해 수행된다. 다른 실시예에서, 프로세스는 디바이스(102)에 위치된 검증기에 의해, 아니면 디바이스(102)에 물리적으로 연결된 검증기에 의해 수행된다.
프로세스는, 결과들이 수신되었을 때 402에서 개시된다. 예를 들면, 디바이스(102)가 306에서 결과를 보고할 때, 그 결과들이 402에서 검증기에 의해 수신된다.
404에서, 404에서 수신된 결과가 물리적인 변형들의 예측된 시퀀스가 이루어졌는지를 나타내는지 여부에 대해 결정이 이루어진다. (허가된 변형들이 이루어지지 않았다는 것을 가정하여) 검증기(106)는 메모리 변형들의 시퀀스의 실행이 디바이스(106) 상에서 취해야 할 시간량과 같은 정보로 구성된다. 몇몇 실시예들에서, 또한 검증기(106)는 디바이스(102)에 의해 수행된 연산의 결과들 및 시드값들과 같은 추가적인 정보를 저장하도록 구성된다.
물리적 메모리 변형들의 예측된 시퀀스가 이루어진 것으로 결정되면(예를 들면, 디바이스(106)가 메모리 변형들의 시퀀스를 수행함), 비허가된 변형들이 디바이스에 행해지지 않은 것으로 결론내려진다(406). 그리고, 디바이스(102) 상에서 이전에 활성일 수 있는 임의의 회피 프로세스는 무효화되었다. 물리적 메모리 변형들의 예측된 시퀀스가 행해지지 않았다고 결정되면(예를 들면, 시퀀스를 수행하는 시간량이 오프(off)이거나 연산된 결과가 부정확하기 때문에), 비허가된 변형이 디바이스에 행해진 것으로 결론내려진다(406)(예를 들면, 회피 프로세스가 디바이스 상에 존재하고 검출을 회피하기 위해 시도하고 있음). 다양한 실시예들에서, 에러 보정 코드들은 네트워크 노이즈로 인한 에러들을 회피하기 위해 사용된다. 메시지-인증 코드들 및 다른 인증 기술들은 컨텐츠와의 액티브 탬퍼링을 회피하기 위해 사용될 수 있다. 암호화 기술들은 컨텐츠를 어렵게(obfuscate) 하기 위해 사용될 수 있고, 전송되고 있는 평문(plaintext) 메시지들을 도청자들이 결정하는 것을 불가능하게 할 수 있다.
도 5a는 도 3에 도시된 프로세스의 실행 전에 메모리의 양태를 도시된다. 도시된 예에서, 커널(kernel; 502), 허가된 프로그램(504), 비허가된 프로그램(예를 들면, 멀웨어 에이전트)(508), 및 검사기 프로그램(506)이 RAM에 로딩된다. 통상적으로, 디바이스 상에 상주하기 위해, 회피 프로그램은 2개 중 하나를 행할 필요가 있다. RAM(또는, 스왑(swap) 공간)에 액티브로 남거나, 디바이스의 적법 프로그램, 데이터, 또는 구성을 변형하여 멀웨어 에이전트가 스캔이 수행된 후의 제어를 얻을 수 있게 해야 한다. 이하, 상세하게 설명하는 바와 같이, 본 명세서에 설명된 기술들을 사용해서, 검출을 회피하는 것을 채용하는 기술들에 관계없이, 멀웨어 에이전트의 존재가 검출될 수 있다. 또한, 본 명세서에 설명된 기술들을 사용해서, 검사기(506)가 멀웨어 에이전트(504) 후에 로딩된 경우에도 멀웨어 에이전트의 존재가 검출될 수 있다.
도 5b는 도 3에 도시된 프로세스가 발생하고 있는 동안의 메모리의 양태를 도시한다. 이하, 상세하게 설명될 바와 같이, 검사기(506)는 검사기(506)에 의해 사용되는 공간을 제외하고 메모리 RAM(및 임의의 스왑 공간)을 클리어하도록 구성된다. 다양한 실시예들에서, 다른 서비스들의 미니멀리스틱(minimalistic) 세트도 RAM을 점유하도록 허가된다. 예를 들면, 디바이스(102)가 3G 통신들을 지원한다면, 검사기(506)가 3G 모뎀을 사용하여 검증기(106)와 통신할 수 있도록, 3G 드라이버/모듈에 의해 점유된 RAM의 영역은 클리어되지 않는다. 다른 예로서, 몇몇 실시예들에서, 마이크로커널이 RAM의 일부를 점유하도록 허가되어, 검사기(506)는 RAM의 나머지를 클리어한다.
도 6은 디바이스를 검사하기 위한 프로세스의 실시예를 도시한다. 디바이스(102)와 같은 디바이스 상에서 실행되는 검사기 프로세스가 검사기에 의해 사용을 요구받지 않은 메모리(204)의 모든 부분들(및 임의의 스왑 공간)을 클리어할 때, 프로세스는 602에서 개시된다. 몇몇 실시예들에서, 이는 커널, 다양한 드라이버들, 및 모든 다른 프로세스들의 언로딩을 포함한다. 다양한 실시예들에서, 요구되지 않은 메모리 공간은 (예를 들면, 제로로) 클리어되는 대신 시퀀스에 의해 중복기입된다(overwritten). 하나의 예시적인 시퀀스는 XOR 연산을 사용하는 것과 같이, 원래의 메모리 컨텐츠와 결합되는 의사랜덤 시퀀스이다. 이는, 요구되지 않은 메모리 공간이, 이전에 사용된 의사랜덤 시퀀스와 상보하거나 동등한 의사랜덤 시퀀스와의 반복된 결합에 의해 추후에 재구성될 수 있게 한다. 또한, 요구되지 않은 메모리 공간은 이를 클리어하는 방식으로 컨텐츠로 중복기입될 수 있지만, 이는 디바이스의 통상적인 말소 연산에 대응하지 않는다. 예를 들면, 01010101의 시퀀스 또는 임의의 다른 적절한 시퀀스를 요구되지 않은 메모리에 기입함으로써 요구되지 않은 메모리를 클리어할 수 있다.
몇몇 실시예들에서, 검사기 코드는 로더 및 가변 알고리즘 세그먼트의 2개 구성 요소들을 포함한다. 로더의 작업은 논(non)-RAM 스토리지(예를 들면, 메모리(204) 외의 어떤 것)로부터 알고리즘 세그먼트들을 로딩하고, 제어를 로딩된 알고리즘 세그먼트에 넘겨주는 것이다. 알고리즘 세그먼트가 완료된 후에, 제어를 다시 로더에 돌려준다.
604에서, 메모리(204)의 컨텐츠는 검증기(106)에게 보고된다. 몇몇 실시예들에서 전체 컨텐츠가 보고된다. 다른 실시예들에서는, 최종 검사 이후의 변경들의 설명만이 전달된다.
606에서, 디바이스는 검증기로부터 암호 시드를 수신한다. 시드는 의사랜덤 스트링으로 확장되고, 스트링은 RAM에 기입된다. 프로세스(600)의 부분(606)에 따라 RAM에 스트링을 기입하기 위한 예시적인 기술이 이하 제공된다.
608에서, 디바이스는 검증기로부터 암호 키를 수신한다.
610에서, 디바이스는 수신된 키를 사용해서 디바이스의 RAM의 전체 컨텐츠의 키잉된 해시(keyed hash)를 컴퓨팅한다.
612에서, 디바이스는 결과값을 검증기에게 보고한다. 검증기(106)는 예를 들면, 도 4에 도시된 프로세스에 따라 그 결과를 평가한다.
다양한 실시예들에서, 디바이스(102)는 검증기(106)에 의해 설정된 시간 간격에서 606 및 610에서의 연산들(computations)로부터 상태 정보를 보고한다. 이러한 간격들의 사용은, 디바이스(102)에 의해 수행된 연산들이 메모리(204) 내(예를 들면, 메모리(206)의 일부가 아님)에서 수행되고 있다는 확신을 제공한다.
디바이스(102)는 필요에 따라 시드 및 각각의 키의, 검증기(106)로부터의 업데이트들을 얻는다. 업데이트들의 사용은, 디바이스(102)가 외부 고속 자원으로 연산을 아웃소싱하고 있지 않다는 확신을 제공한다. 예를 들면, 연산을 아웃소싱하기 위하여, 회피 프로그램은 시드 및 키 업데이트들을 외부 디바이스로 전달해야만 할 것이며, 이는 측정가능한 지연을 도입할 것이다.
검증기(106)는, 최종 함수값 및 부분적인 결과들 모두가 올바르고, 수용가능한 시간 범위 내에서 디바이스(102)에 의해 검증기에게 보고되는 것을 검증한다. 검사기가 그 작업을 수행하는 데 걸리는 시간을 평가하기 위한 예시적인 기술이 이하에 제공된다. 상술한 바와 같이, 몇몇 실시예들에서 검증기(106)는 디바이스(102)의 외부에 있고, 디바이스의 소유자 외의 다른 당사자에 의해 조작된다. 몇몇 실시예들에서, 검증기(106)는 디바이스(102)의 사용자의 제어 하에 있다.
도 6에 도시된 프로세스가 완료된 후에, 검사기(506)는 완전히 또는 부분적으로 디바이스의 컨텐츠를 복구할 수 있고, 이전의 액티브 프로세스들 또는 메모리 컨텐츠의 추가적인 스캔들을 수행하는 프로세스에 제어를 반환할 수 있다. 고속 메모리의 컨텐츠는, 정기 연산의 실행 이전에 저속 메모리에 스와핑 아웃되거나, 원래 컨텐츠가 스트링과 결합되었다면 복구될 수 있으며, 후자는 수행될 유사한 결합을 허용하여 이전의 상태를 회복한다. 또한, "스타팅(starting)" 상태를 로딩함으로써 디바이스를 재시작할 수 있다. 또한, 메모리의 컨텐츠를 스캔하고, 리뷰하고, 보고하고, 변형하는 프로세스, 또는 (더욱 상세하게 후술할 바와 같이) 이러한 연산들의 임의의 서브세트에 제어를 우선 넘겨줄 수 있다. 보고는 검증기(106) 또는 메모리 컨텐츠의 처리의 관리를 담당하는 자와 같은 제 3자에게 제출될 수 있다. 후자의 경우에, 검증기(106)는, 액티브 악성 프로세스가 존재하지 않는다는 것을 확인하는 역할을 담당하고, 제 2 검증기는 디바이스의 메모리의 처리를 담당하여, 멀웨어 검출, 디지털 권한 관리, 또는 어떠한 디바이스 메모리 컨텐츠가 바람직한지를 식별하는 다른 정책에 연관될 수 있는 특정 정책으로 컴파일되는지 여부를 결정한다.
예시적인 적대 전략
회피 프로그램이 검출되는 것을 회피하기 위해, 예를 들면, 도 6에 나타낸 프로세스의 604 부분 동안에서, 고유의 프로세스(504)로서 또는 검사기(506)의 커럽티드 버전(corrupted version)의 일부로서, RAM에서 활성 상태여야 한다. 이하는 멀웨어 에이전트(504)와 같은 회피 프로그램이 활성으로 남기를 시도할 수 있는 6개의 예시적인 방법들이다.
전략 1: 저장 아웃소싱
검사기(106)가 (예를 들면, 602에서) 적절한 공간을 클리어하지 못하게 하고 논-RAM 스토리지 또는 외부 스토리지에 의존하게 함으로써 멀웨어 에이전트는 RAM에서 활성 상태로 있을 수 있고 검출되지 않도록 시도할 수 있어, 606에서 생성된 의사랜덤 스트링의 대응하는 일부를 저장한다. 그러면, 610에서의 연산이 변형되어 멀웨어 에이전트가 상주하는 공간 대신 아웃소싱된 스토리지를 사용한다.
전략 2: 결여 데이터 연산
의사랜덤 스트링의 일부들의 스토리지를 아웃소싱하는 대신, 멀웨어 에이전트는 스트링(예를 들면, 압축된 버전, 또는 일부가 결여된 버전)의 변형된 양태를 저장할 수 있고, 610에서 키잉된 해시의 연산 동안 필요에 따라 스트링의 적절한 일부들을 재구성할 수 있다. 의사랜덤 스트링이 생성되는 시드를 멀웨어 에이전트가 가지므로, 이것-또는 의사랜덤 생성기의 추후의 상태-을 이용하여 데이터의 요구되는 부분들을 재생성할 수 있다.
전략 3: 연산 아웃소싱
멀웨어 에이전트는 관련 데이터를 외부 디바이스로 전달할 수 있다(WiFi 접속과 같은 필요한 통신 기반구조가 여전히 기능함을 가정). 외부 디바이스는 디바이스(102)로부터 데이터를 수신하고, 검증기(106)로의 보고에 필요한 값들을 연산하여, 이러한 값들을 디바이스(102) 상의 멀웨어 에이전트에 준다.
전략 4: 검출 코드 변형
멀웨어 에이전트는 검사기(506)의 코드를 변형된 코드로 교체하기를 시도할 수 있다. 이러한 교체 코드는 타협 메모리 컨텐츠의 보고를 억제하도록 설계될 수 있거나, 검사가 완료된 후에 로딩될 멀웨어 코드에 대한 후크(hook)를 포함할 수 있다. 멀웨어 에이전트는, 검사 코드의 일부들을 스와핑 아웃하거나 압축하고, 이것이 필요될 때 이를 다시 로딩하거나 언패킹(unpacking)함으로써 더 많은 공간을 점유하지 않고도 검사기(506)에 대한 이러한 변경들을 통합하기를 시도할 수 있다.
고속 메모리 충진
이 섹션은 도 6에 도시된 프로세스의 부분(606)과 함께 사용될 수 있는 예시적인 기술을 설명한다.
도 7은 디바이스를 검사하는 것과 함께 사용하기 위한 의사 코드의 예를 도시한다. 도시된 예에서, 서브루틴 get _ permutation은 0 내지 number _ blocks -1의 범위에서, number _ blocks 아이템들의 랜덤 치환을 나타내는 벡터를 리턴하며, 여기에서, number _ blocks는 RAM이 포함하는 플래시 블록과 동등한 사이즈의 부분들의 수에서 검사기에 의해 필요한 수를 뺀 수이다. 서브루틴 next _ string _ chunk는 의사 랜덤하게 생성된 비트들의 청크(chunk)를 리턴하고: chunk라는 용어는 메모리 버스 상에 전송될 수 있는 데이터량을 칭하는 데 사용된다. 일례로서, Android G1 폰에 대해, 청크는 32비트이다.
get _ permutation 및 next _ string _ chunk 모두는 입력으로서 가장 최근에 제공된 시드를 사용한다. 의사-랜덤 스트링은 segment i <- hash ( segment i -1 ) 로서, 즉 랜덤 액세스를 사용하여 연산될 수 없는 방식으로 연산될 수 있다. 일례는, 해시 함수들의 비준동형(non-homomorphic) 특성들에서, 해시 함수의 반복된 어플리케이션에 기초한 함수이다. 다양한 해시 함수들이 사용될 수 있다. 일례는 512-비트 모드의 MD6이다.
상수 rounds는 의사-랜덤 청크가 셀의 컨텐츠로 XOR되는 횟수이며, 함수 modify_memory를 사용한다. rounds의 선택은, 적대자가 두번째 적대 전략(결손 데이터 연산)을 행하기 위해 수행해야 하는 작업량을 제어하며, 큰 값들에 대해 알고리즘의 정직한 실행에 대한 비용의 증가를 또한 야기한다. 도시된 예에서, rounds=2이며, 각 셀의 값은 2개의 다른 셀에 의존하게 될 것이므로, rounds=1인 경우에 비해 적대자에 대한 현저하게 더 큰 비용을 초래한다. 이는 적대자의 메모리 관리 전략들을 혼동시킬 수 있다. 도시된 예에서, chunks _ per _ block은 플래시 블록에 포함된 청크들의 수이며, 예시적인 G1 폰에 대해 32768(= 128kB/32비트)과 같고, number _ blocks=1024(=128MB/128kB)이다.
함수 modify _ memory ( pos , string )은 컨텐츠의 위치 pos와 값 string을 XOR하며, 여기에서, pos=0은 동작될 RAM의 첫번째 청크를 나타내고, pos = number _ blocks ×chunks_per_block-1은 마지막 청크이다.
도 7과 함께 설명된 메모리 액세스 구조는, RAM(204) 대신 플래시(예를 들어, 메모리(206))의 사용이 강제된다면, 랜덤하게 정렬된 블록들의 개별 페이지들로의 액세스를 야기한다. 이는 압도적인 확률로 플래시가 클리어되게 할 것이며, 의사-랜덤 액세스 순서는 이러한 단점을 회피하기 위해 적대자가 메모리 액세스들을 스케줄링하는 것을 방지한다. 알고리즘의 정직한 실행에 대안적으로 이용가능한 RAM-바운드(bound)에 비해 플래시-바운드 연산의 비용은 더욱 현저하게 시간 소모적이다.
몇몇 실시예들에서, 하나의 해시 함수 어플리케이션은 next _ string _ chunk의 몇몇 인보케이션들(invocations)을 생성하기 위해 사용된다. 이는 검사 프로세스와 연관된 연산의 부담을 경감시키며, 이는 작업을 수행하기 위한 시간의 관점에서 메모리 액세스의 기여를 강조한다.
몇몇 실시예들에서, 해시 함수에 대한 입력은 이전의 출력들의 일정한 수이며; 이는 의사 랜덤 생성기의 소정의 일부의 상태를 제구성하기를 원하는 멀웨어 에이전트에 대한 저장을 복잡하게 하며, 그에 따라 전략 2(결손 데이터 연산)를 사용하려는 임의의 시도를 추가적으로 좌절시키는 데 유용하다.
타이밍 수행
이 섹션은 검사 작업의 실행을 타이밍하는 데 사용될 수 있는 예시적인 기술을 설명한다. 예를 들면, 몇몇 실시예들에서, 도 6에 대응하는 텍스트와 함께 설명된 바와 같은 기술이 검증기(106)에 의해 채용된다.
검증기(106)는 도 6에 도시된 프로세스의 부분들(606, 610)의 실행을 타이밍하도록 구성되어, 예를 들면, 저장을 아웃소싱하려는 시도들을 식별하고; 결손 데이터를 연산하고; 연산을 아웃소싱한다.
몇몇 실시예들에서, 검증기(106)는 빈번한 간격들(예를 들면, 검증기(106)에 의해 설정됨)에서 디바이스(102)로부터 상태 정보를 얻도록 구성된다. 상태 정보의 일례는 최근에 업데이트된 메모리 청크의 메모리 컨텐츠이며, 이는 디바이스(102)가 연산의 이러한 스테이지에 도달한 것을 보증한다. 검증기(106)는 규칙적인 간격들로 디바이스(102)로 업데이트 요청들을 전송한다. 몇몇 실시예들에서, 업데이트 요청은 서브루틴 next _ string _ chunk의 출력을 연산하는 데 사용되는 의사-랜덤 생성기의 상태의 업데이트들에 대응한다. 서브루틴 next _ string _ chunk의 출력이 이미 생성된 의사-랜덤 스트링으로부터 사용되지 않은 부분을 선택함으로써 생성된다면, 스트링은 동시에 클리어될 수 있고, 그에 따라 새로운 시드가 즉시 상태에 영향을 미치게 한다.
적대 전략 3(즉, 연산 아웃소싱)을 채용하는 회피 프로그램은, 외부 디바이스가 디바이스(102)에 의해 검증기(106)에게 보고될 결과적인 다음 값을 연산한 후에, 연산을 수행하는 외부 디바이스에 의사-랜덤 스트링의 업데이트를 전송해야 하며, 이를 회피 프로그램에 전송해야 한다. 이는 라운드-트립 지연을 야기한다. 라운드-트립(round-trip) 지연이 타이밍 체크포인트들 사이의 시간을 초과하면, 치팅(cheating)이 검출될 것이다. 여기에서, 다른 상태 정보와 함께 시드들과 키들이 클라이언트 디바이스와 검증기 사이에서 안전하게 통신된다는 가정이 이루어진다. 다양한 암호 기술들이 이를 달성하기 위해 사용될 수 있다.
다양한 실시예들에서, 체크 포인트들 사이의 디바이스 특정 시간은, 혼잡이 없는 환경을 비관적으로 가정하여, 디바이스(102)에 포함된 통신 설비(예를 들면, WiFi)를 사용한 연산을 아웃소싱할 시간이 충분하지 않도록 선택된다.
modify _ memory의 실행 시간은 상술한 파라미터 선택과, next _ string _ chunk를 연산하는 데 사용되는 해시 함수의 종류에 의해 결정된다. 예를 들면, MD6 해시 함수는, 224 내지 512 비트에 이르기까지의 상이한 출력 사이즈들로 구성될 수 있다. 상술한 바와 같이, 몇몇 실시예들에서, 512-비트 버전이 사용된다. modify _ memory의 인보케이션에 대한 시간은 위에서 결정된 체크포인트들 사이의 시간보다 현저히 적다.
다양한 회피 프로그램들을 검출하는 예들
이하의 섹션은, 상술한 다양한 전략들을 채용하는 회피 프로그램들이 본 명세서에서 설명된 기술들을 사용하여 어떻게 검출될 수 있는지에 대한 예들을 제공한다.
적대 전략 1에 대한 방어- 저장 아웃소싱
빈 SD 카드가 디바이스(102)에 삽입되었다고 가정한다. 대응하는 기입 속도는 5MB/s에 달할 수 있다. 본 예에서는, 상술한 바와 같이 modify_memory에 의해 처리된 블록의 사이즈가 128kB가 되게 선택된다. 데이터를 SD 카드에 기입하는 시간은 25m이다. 비교에서, 디바이스(102) 상의 RAM은 100MB/s의 기입 속도를 갖는 것으로 한다. 대응하는 기입 시간은 1.25ms이다. 추가적인 지연은 쉽게 검출될 수 있다. SD 카드로의 멀티플 액세스들이 2개의 체크포인트들 사이에서 이루어지면, 추가적인 지연은 한층 더욱 용이하게 검출될 것이다.
적대 전략 2에 대한 방어 - 결손 데이터 연산
상술한 바와 같이, 의사-랜덤 스트링은, 랜덤 액세스를 사용하여 연산될 수 없는 방식으로 연산될 수 있다. 특정 출력값을 연산하기 위해, 대응하는 입력은 저장된 데이터로부터 연산될 필요가 있다. rounds>1이므로, RAM에 저장된 데이터는 이러한 필요한 상태가 아니라, 2개 이상의 라운드들의 상태들의 조합이다. 상태가 그 코드 공간의 일부, 및 이로부터 연산된 필요한 상태로서, 멀웨어 에이전트에 의해 (RAM에) 명확하게 저장될 필요가 있다. 이는 멀웨어 에이전트가, 도 6에 도시된 프로세스의 부분(610)의 실행 동안, "적법한" 연산을 수행하는 데 필요한 연산에 추가하여, rounds × number _ blocks × chunks _ per _ block 해시 연산들보다, 적어도(그리고, 실제로 훨씬 많이) 연산하게 강제한다. 선택된 파라미터 선택들에 있어서, 이는 1억 해시 연산들보다 많다. 해시 함수 인보케이션을 연산하기 위한 적절한 시간 10μs에 대해, 이는 대략 1000s이며, 이는 예측되고 그에 따라 검출될 수 있는 것보다 대략 3배의 크기이다.
전략 2에 대한 방어에 대응한 샘플 증거가 여기에 제공될 것이다. 회피 프로그램이 메모리(204)에 상주하고, 그 자체 및 그 변수들에 대해 약간의 c 32-비트 청크들의 적어도 일부들을 점유한다고 가정한다. 가능하지 않지만 멀웨어가 검출되지 않기 위해 수행하여야 하는 업무량에 대한 부담을 낮추는, 이러한 공간 모두가 변수들을 저장하는 데 유효하게 사용될 수 있다고 하는 비관적인 가정이 이루어질 수 있다. 실제로, 모든 c 청크들이 저장을 위해 사용될 수는 없으며, 일부는 그 코드를 저장하는 데 사용되므로, 그 노력은 더 크다.
함수를 연산하는 데 필요한 값들을 포함하지 않는 RAM 청크들에 가해진 c의 각각의 하나에 대해, 멀웨어 에이전트는 예측된 컨텐츠를 연산해야만 한다. 이 예에서는, RAM-충진이 수행되기 전에, 원래의 컨텐츠는 제로였다고 가정된다. 그렇지 않다면, 멀웨어 에이전트의 노력은 더 클 것이며, 이러한 가정이 멀웨어 에이전트의 노력에 보다 낮은 한도를 확립하게 한다. RAM-충진 알고리즘에 의해 수행된 이러한 셀에 예측된 업데이트를 연산하기 위해서, 문제가 있는 메모리 청크 상의 모든 rounds 패스들에 대한 값들을 멀웨어 에이전트가 연산할 필요가 있다. 메모리로 XOR된 값들은 의사-랜덤 시퀀스로부터 나온다. 그리고, c 청크들의 저장의 일부에서 멀웨어 에이전트에 의해 저장된 값으로부터 next _ string _ chunk 값을 연산함으로써 결손되는 셀 내의 체인의 상태를 재구성하는 것만이 가능하다. 변수들이 RAM에만 저장되거나, 멀웨어 에이전트가 전략 1(저장 아웃소싱)에서도 성공할 필요가 있다고 가정된다.
상술한 바와 같이, 의사-랜덤 생성기는 랜덤-액세스 방식을 사용해서 연산될 수 없다. 소정의 청크 사이즈가 32 비트이고 상태 사이즈(=MD6 출력 사이즈)가 512 비트일 때, L=16 청크가 상태를 저장하는 데 필요한 경우가 있다. (멀웨어 에이전트가 이 상태를 저장한 곳에 있을 필요가 없는) 이러한 상태와 연관된 RAM의 위치로부터 해시 함수 인보케이션의 시퀀스를 멀웨어 에이전트가 재구성해야한다.
메모리의 기입 동안 셀들에 대한 랜덤 치환에서 (그 순서는 멀웨어 에이전트에 의해 예측될 수 없음), 저장된 상태에 대응하는 스트링 위치에 대한 런(run)의 예측 길이는 적어도 rounds ×n/(c/L)이며, 여기에서 n= number _ blocks ×chunks_per_block는 RAM이 포함하는 청크의 수에 대응하고, rounds ×n은 의사-랜덤 스트링의 길이이며, c/L은 멀웨어 에이전트에 의해 저장된 의사-랜덤 상태의 수이다. 따라서 "불량(bad)" 셀에 대한 각각의 히트(hit)에 대해서, 멀웨어 에이전트는 next_string_chunk의 예측된 rounds ×n×L/c 인보케이션을 수행해야 하며, 이는 rounds×n×/c에 대응한다. 멀웨어 에이전트가 예측된 상태들 중 하나를 연산하기를 시도할 때 발생하는 "불량" 셀들로의 히트들(hits)을 카운트하지 않고, 이러한 c 히트들이 존재한다. 따라서, 멀웨어 에이전트는 저장된 컨텐츠로부터 c 불량 블록들의 컨텐츠를 연산하기 위하여 적어도 rounds ×n 해시 동작들을 수행하여야 한다. (예시적인 구현에 따라) 이를 수행하기 위한 대략의 시간은, 결손 데이터를 연산하기 위한 임의의 시도가 검출될 것이라는 것을 나타내는 적법 클라이언트의 시간보다 느린, 적어도 100,000 - 1,000,000 사이이다.
체인의 연산이 연산의 다른 패스에 대한 값을 저장하는 데 사용된 셀로의 액세스를 유발하면, 이는 다른 히트가 발생되게 한다. 이는 각 메모리 액세스에 대해 대략의 확률 (c-c/ rounds )/c×c/ number _ blocks =(c-c/number_blocks)/number_blocks c/number_blocks 로 발생할 것이며, 따라서, 상술한 바와 같이 소정의 첫번째 불량 셀 히트에 대해 대략의 확률 1-(1-c/number_blocks) 을 갖는다. 이러한 양이 대략적인 근사는 이다. rounds=2에 대해, 이는 98% 이상의 확률이다. 이러한 추가적인 비용은 c값들의 증가와 함께 증가할 것이다. 따라서, 적대자는 c를 작게 하기 위해 최선을 다할 것이다.
아래에서는, 적대자가 c=L=16 셀만을 사용하여, 16 모두가 하나의 값을 저장하는 것으로 가정한다. 이러한 구성으로, "저장 셀" 내의 값으로부터 "프로그램셀"에 대응하는 값을 연산할 수 없게 하는 방향으로 체인이 유도하는 상황들에서, (외부 메모리를 사용하지 않는다면) 적대자는 그 값을 연산할 수 없을 것이다. rounds=2에 대해서, 이러한 실패는 75%의 확률로 발생한다. 나머지 25%의 경우들에, 적대자는 단지 느려질 것이다(언제나 그 값을 연산하는 것에 성공하기 위해서, 적대자는 각각 512 비트의 길이인 round=2 값들을 적어도 저장할 필요가 있다).
적대 전력 3에 대한 방어 - 연산 아웃소싱
몇몇 실시예들에서, 디바이스 상의 통신 장비를 사용해서 연산을 아웃소싱할 시간이 없도록 체크포인트들 사이의 시간이 선택된다. 체크포인트들 사이의 시간은, 이를 즉시 검출가능하게 하는 방식으로 검증기(106)에 의해 선택될 수 있다. 적대자에 의해 제공되는 그 값에 대한 2개의 체크 포인트들 사이에서 라운트트립이 완료되어야 하므로, 연산의 아웃소싱과 관련된 전략은 실패할 것이다. 이는 클라이언트 디바이스와 검증 당사자 사이의 통신 속도에 독립적이다.
적대 전략 4에 대한 방어 - 검출 코드 변형
비허가된 프로그램(508)이 일부 단계들에서의 실행을 붕괴시키면(예를 들면, 도 6과 함께 설명된 바와 같음), 자진해서 적법 코드를 로딩하고 그 자체를 제거한다. 이러한 적대자는 프로세스의 일부들(602, 604)를 잠재적으로 붕괴시킬 수 있지만, 일부(606)는 붕괴시킬 수 없을 것이다. 구체적으로, 활성을 유지하기 위해서, 프로세스의 일부(602)를 붕괴시킬 필요가 있다(스왑 공간 및 RAM의 클리어링). 이는, 그 후에 604에서 상태의 오보고를 유발할 수 있다. 하지만, 메모리 컨텐츠의 키잉된 해시가 연산될 때(610), 이는 검출될 것이다. 이는 사용된 해시 함수의 가정된 충돌-없음과, 608까지 키가 디바이스에 개시되지 않는다는 사실 모두에 기인한다. 일부(608)는 606 동안 활성되지 않고 붕괴될 수 없으며, 이는 차례로 상술한 바와 같이 검출을 유발할 것이다. 그리고, 회피 프로그램은 도 6에 도시된 프로세스의 일부(606)를 실행하지 않고 612에서 보고되는 옳은 값들을 연산할 수 없을 것이다.
이들 각각이 검출될 것이므로, 4개의 적대 전략들의 조합들도 실패할 것이며, 이들 조합들이 기본적인 디바이스-특정 제한들을 변경하지 않는다.
추가적인 처리
도 8은 디바이스 검사를 수행하기 위한 프로세스의 예를 나타낸다. 다양한 실시예들에서, 상술한 검사 프로세스들은 2개(또는 그 이상)의 페이즈(phase) 프로세스 중 하나의 페이즈를 형성한다(802). 상술한 기술들이 디바이스(102)와 같은 디바이스에 대하여 채용되었다면, 디바이스의 RAM에서 활성인 회피 소프트웨어가 없다고 하는 가정이 이루어질 수 있다. 그리고, 임의의 추가적인 처리가 디바이스 상에서 수행될 수 있다(804). 수행될 수 있는 추가적인 처리의 예들에 대해 후술한다.
예: 멀웨어
802의 처리가 수행된 후에, 804에서, 디바이스(102)는 메모리(206)에 저장될 수 있는, 알려진 불량 소프트웨어를 식별하기 위해 전통적인 안티바이러스 소프트웨어를 수행한다. 804에서, 디바이스(102)는 검증기(106) 또는 다른 디바이스에게 메모리(206)의 전체 컨텐츠 또는 메모리의 일부를 보고하도록 구성될 수도 있다.
예: 탈옥(Jailbreaking)
802의 처리가 수행된 후에, 804에서, 디바이스(102)는, 그 운영 체제 로더(loader)가 특정 해시를 갖는지를 여부를 결정하고, 및/또는 그렇지 않으면, 운영 체제 로더가 바람직한 상태로부터 많이 변경되었는지 여부를 결정한다.
예: 폰 언락킹
802의 처리가 수행된 후에, 804에서, 디바이스(102)는, 그 운영 체제 로더(loader)가 변경되었는지 여부를 결정하고, 또한 서비스 공급자와 연관된 임의의 정보가 변경되었는지 여부를 결정한다.
예: 소프트웨어 파이어러시(Software Piracy)
802의 처리가 수행된 후에, 804에서, 디바이스(102)는, 메모리(206)에 포함된 임의의 소프트웨어가 예측된 구성으로부터 변형되었는지 여부를 결정하고, 소프트웨어에 대해 임의의 연관된 시리얼 번호들을 확인하고, 및/또는 그렇지 않으면, 포함된 소프트웨어가 비허가된/무면허의 방식으로 사용되고 있는지 여부를 결정한다. 몇몇 실시예들에서, 디바이스(102)는 메모리(206)의 컨텐츠 또는 그 일부를 검증기(106)에게 보고한다.
예: 미디어 파이러시(Media Piracy)
미디어 파일들(예를 들면, 뮤직, 비디오 또는 화상 파일들)이 배포 동안 워터마크를 사용해서 맞춤 제작되고, 이러한 워터마크는 예를 들면, MAC 또는 디지털 서명을 사용해서 암호화되어 인증되는 것으로 가정한다. 804에서, 디바이스(102) 상에 존재하는 파일들이 적법한 워터마크들을 갖는지와, 이들이 유효한 인증들을 포함하는지 여부가 결정될 수 있다. 결정은 디바이스(102)에서 로컬로 행해지거나 중앙부에서(예를 들면, 검증기(106) 상에서) 이루어질 수 있다.
다양한 실시예들에서, (디바이스(102)에 설치된 뮤직 플레이어와 같은) 어플리케이션들은 용법 및 (활성의 로그를 형성하는) 다른 데이터를 기록하고, 이 정보를 적합한 미디어(예를 들면, 노래 파일)와 연관시킨다. 로그들은 804에서 검증기(106)에 의해 판독될 수 있다.
예: 관리(custody)의 체인들/사용 로그들
어플리케이션(또는 데이터 파일)이 거래들을 기록하는 데 사용되는 연관 로그를 갖는 것으로 가정한다. 일례는 저장된-값 정보를 포함하여, 금융 거래의 발생을 기록하는 로그 파일이다. 로그 파일에 행해진 변경의 적법성은 아래와 같이 검증될 수 있다. 첫번째로, 802의 처리가 수행된다. 그 후에, 804에서, 어플리케이션(또는 데이터 파일)이 변경되었는지, 그리고 그에 따라 로그 파일이 진짜인지 여부에 대해 (예를 들어, 프로그램 이미지들의 해시들을 비교함으로써) 결정이 행해질 수 있다.
본 예에서 804에서 수행된 처리에 대한 하나의 방식은 다음과 같다. 우선, 메모리(206)가 스캐닝되고, 어플리케이션들의 리스트와 어플리케이션들과 연관된 데이터 파일들이 생성된다. 다음으로, 어플리케이션들에 대한 설명자들의 리스트와 데이터 파일들이 결정된다. 디스크립터의 일례는 파일의 이름 및 종류, 그리고 일치되는 스트링 시퀀스(들)를 기술하는 식별자와 함께 파일의 해시이다. 다음으로, 첫번째 리스트에서 이미 보고되지 않은 어플리케이션들 또는 데이터의 임의의 설명들의 두번째 리스트가 만들어진다. 여기에서 생성된 설명은 어플리케이션에 대한 코드의 전부 또는 일부들, 또는 어떠한 종류의 입력 파일들을 처리하였는지와 생성한 출력 파일들에 대한 설명을 포함할 수 있다. 두번째 리스트는 서버(106)와 같은 외부 당사자에게 전송되며, 여기에서 검증된다. 또한, 두번째 리스트는 정책 검증 서버로부터 얻어진 임의의 정책을 사용하여 로컬로 처리될 수 있다.
검증의 결과는 어플리케이션들 및 데이터에 대한 허가에 영향을 미치는 데 사용될 수 있으며, (인터넷, 3G 네트워크들, 조직 네트워크들 등과 같이) 네트워크 자원들로의 액세스를 허가받는지의 여부를 포함하여 외부 서버들이 디바이스와 상호작용하는 방식을 제어하는 데 사용될 수 있다. 다른 예로서, 디바이스 상에서 실행되도록 허가된 소프트웨어는 제한될 수 있고, 사용자에게 준수(compliance) 결여를 통지할 수 있고 파일들을 제거 또는 회복하기를 시도할 수 있거나, 그렇지 않으면 파일들을 변형시키는 등의 동작을 할 수 있다.
예: 시청 규제 필터들(Parental Control Filters) 및 다른 모니터링 특성들
802의 처리가 수행된 후에, 다양한 실시예들에서, 디바이스와 관련하여 다양한 이벤트들을 로그(및 또는 차단)하도록 구성될 수 있는 추가적인 멀웨어가 설치된다. 예들은 이하를 포함한다:
(a) (예를 들면, "섹스팅(sexting)"을 방지하기 위하여) 어떠한 사진들이 디바이스 상에 생성되어 후에 외부로 전송되었는지에 대한 결정.
(b) 시간당 20마일보다 높은 속도로 이동하면서 (예를 들면, 비디오 클립을 텍스팅하거나 시청하기 위하여) 디바이스가 사용되었는지 여부를 (예를 들면, 디바이스 활동 및 GPS 변화들에 기초하여) 결정.
(c) (디폴트 프로그램에 추가하여 두번째의 인스턴트 메시징 프로그램과 같은) 선택적인 어플리케이션들이 설치되어, 이러한 선택적인 어플리케이션에 대한 로그 파일을 생성하였는지 여부를 (예를 들면, 설치 활동에 기초하여) 결정.
(d) 액세스된 다른 HTML 문서들에 수동적으로 네비게이팅된 URLs와 참조된 URLs를 포함하여 어느 URLs를 사용자가 방문하였는지를 (예를 들면, 브라우저 이력 정보에 기초하여) 결정. 이러한 로깅의 하나의 장점은, 개인이 피싱(phishing)에 대한 희생에 빠지기 쉬운지 여부; 멀웨어를 포함하여 원하지 않는 컨텐트를 배포한 것으로 알려진 웹사이트를 방문했는지 여부; 및 디바이스가 클릭-사기(click-fraud)에 연루되기 쉬운지 여부를 식별하는 것이다. 이러한 남용은 예를 들면, JavaScript, 캐스캐이딩 스타일의 시트들, 및/또는 다른 관련된 스크립팅 언어들의 사용으로 디바이스 자체의 감염 없이 달성할 수 있다.
예: 추가적인 어플리케이션들
상술한 예들에 추가하여, 본 명세서에 설명된 기술들의 보다 많은 이용들이 가능하다. 예를 들면, 디바이스 검사는 계측 용법, 보험의 목적들, 세율, 세금, 요금 등의 목적들을 위해 차량 블랙 박스들에 사용될 수 있다 - 모두 멀웨어 및 의도적인 탬퍼링(tampering)을 식별함.
디바이스 검사 기술은 다른 어플리케이션들에서의 구성 요소에 포함될 수 있어, 이러한 어플리케이션들이 일시적으로 자기 자신을 유보시켜 스캔을 수행하고, 알려진 클린 상태에서 후에 다시 제어를 받는다.
또 다른 예로서, 이 기술들은 의료 디바이스들에 사용될 수 있어, 누가 데이터 및 장비에 액세스하였는지를 아는 것이 소중한 특수한 경우들의 용법을 검사하기 위해, 이들이 감염되지 않았는지, 올바로 구성되고 관리되는지 여부를 결정한다. 문제가 있는 디바이스들은, 미리 로딩된 어플리케이션이 방해할 수 없는 방식으로 언제나 사용 정보를 로그할 수 있으며; 검사 프로세스는 메모리 인쇄 스캔을 포함하여 미리 로드된 어플리케이션들이 여전히 양호한 상태에 있다는 것과, 충돌 어플리케이션들 또는 구성들이 존재하지 않는다는 것을 단언한다.
마지막으로, 이 기술들은 치료할 필요가 없는 상황들 또는 주요 목표가 없는 상황에서의 멀웨어의 검출에 사용될 수 있다. 이러한 하나의 상황은 온라인 게임들에서, 게임들을 치팅(cheating)하는 모듈들의 부재를 검출하는 것이다.
프라이버시의 보호
몇몇 실시예들에서, 모든 상태의 설명들(예를 들면, 메모리(204)의 컨텐츠)이 검증기(106)로 전달된다. 그러나, 개인 키들 및 실행불능 개인 데이터와 같은 몇몇 데이터는 디바이스(102)로 전달되지 않아야 하는 것이 바람직하다. 이하의 섹션에서는, 이러한 데이터의 프라이버시를 보호하는 기술들에 대해 설명한다.
첫번째 랜덤수를 x라 칭하고, 이는 가능한 값들, 1 .. maxx의 일부 공간으로부터 선택된다고 가정한다. 의도된 검사 프로세스에 입력을 제공하는 것과 별개로 x가 멀웨어를 인코딩하는 것이 가능하다. 적법 프로그램은 입력 데이터 x와 (g1, n1)이라 칭하는 일부 시스템 파라미터들로부터 일방향 함수값 y를 연산한다. 이를 행하는 하나의 예시적인 방식은 y=g1 x modulo n1을 연산하는 것이며, 여기에서 g1은 Gn1의 큰 서브그룹을 생성한다.
이후, 프로그램이 값 y와 (g2, n2)이라 칭하는 일부 시스템 파라미터들로부터 두번째 일방향 함수값 z를 연산하게 한다. 이를 행하는 하나의 예시적인 방식은 z=g2 y modulo n2를 연산하는 것이며, 여기에서 g2는 Gn2의 큰 서브그룹을 생성한다.
다음으로, 클라이언트 머신은 (예를 들면, 제로 지식 증명(zero knowledge proof)을 사용해서) 이도록 하는 값 x가 존재하는 것으로 증명된다고 가정되며, 여기에서 (z, g1, g2, n1, n2)는 검증기에게 알려지지만, (z, x)는 알려지지 않는다. 그 후에, 디바이스("증명자(prover)")는 값 x를 삭제하지만 (y,z) 및 파라미터들(g1, g2, n1, n2)은 저장한다.
추후 시간에, 디바이스는 비밀이지만 저장하고 있고, 값 z에 대응하는 값 y를 증명해야 한다(여기에서, z는 디바이스(102) 상에 저장될 수 있지만, 검증기(106)에 의해서도 저장될 수 있다). 사용될 수 있는 하나의 예시적인 증명은 제로 지식 증명이다.
두번째 증명이 결론내려지고 검증기(106)가 이를 수용하면, 검증기는 알려지지 않은, 클라이언트가 저장하고 있는 값 z가 값의 데이터의 상당량을 멀웨어 에이전트에 숨기는 데 사용될 수 없는 포맷이라는 것을 인식한다.
여기에서, z는, m이라 칭해지는 몇몇 다른 데이터를 암호화하는 데 사용될 수 있으며, 그 암호문은 c로 칭해진다. 따라서, 암호 알고리즘 E에 대해 c=E2(m)이다. 몇몇 암호해독 알고리즘 D에 대해 대칭 암호화 m=D2(c)를 가정한다. 디바이스 컨텐츠는 검증될 수 있지만, m은 c를 수신하는 당사자에게 알려지지 않은 채로 있다. 이 당사자는 z를 모를 것이며, z가 멀웨어 데이터의 상당량을 숨길 수 없는, 일부 수용가능한 형태라는 것만을 알 것이다. 본 명세서에서 설명된 검사 프로세스는 검증자 당사자가 클라이언트 디바이스의 RAM에 적법한 프로그램들만이 존재한다는 것을 보증받을 수 있게 하므로, 비밀값 z를 사용하여 프로그램들이 소정의 c에서 m에 액세스할 수 있다는 것이 알려질 수 있다. 그러나, 검증기는 알 수 없다.
프로그램에 액세스하는 것이 적법이라는 것이 알려지므로, m이 승인된 방식으로 액세스만 될 것이라는 것도 공지된다. 예를 들면, m이 데이터이고 코드가 아니면, 프로그램에 액세스하는 것이 데이터를 실행하려고 시도하지 않는 경우이다.
의사 랜덤 스트링 생성기를 사용
도 9는 디바이스 검사가 제공되는 환경의 실시예를 도시한다. 도시된 예에서, 디바이스(902)는 도 2에 도시된 구성 요소들 외에, 외부 검증기(904)에 대해 프록시(906)로서의 역할을 하도록 구성된 SIM을 포함한다. 이하 더욱 상세하게 설명할 바와 같이, 디바이스(102)의 명령 캐시에 저장된 모놀리스 커널(monolith kernel)(그 전체가 꼭 맞음)은, 활성화될 때 (예외로 선택되는 임의의 프로세스를 제외하고) 모든 다른 프로세스들을 스와핑 아웃하며, 검사 프로세스를 수행한다. 모놀리스 커널은 데이터 캐시(및 레지스터들)에 위치된 연관된 작업 공간을 갖는다. 캐시는 통상적으로 RAM을 사용하여 구현되며, 여기에서 그 일부로서 간주된다. 여기에서 사용되는 "프리 RAM(free RAM)"은 정규 커널을 포함하여 모든 어플리케이션들이 스와핑 아웃된 후에 비워져야 할 RAM의 일부이다. 몇몇 실시예들에서, "프리 RAM"은 승인된 루틴들과 데이터의 세트에 의해 점유되지 않는 RAM의 세그먼트로서 규정된다. 예를 들면, 정규 커널은 승인된 루틴들일 수 있고, 공통적이고 화이트리스팅된(whitelisted) 어플리케이션일 수 있다. 또한, 승인된 데이터는 외부 검증기에 의해 공지된 데이터에 대응할 수 있고, 화이트리스팅되는 한(즉, 안전한 것으로 믿을 수 있는 한), 임의의 포맷일 수 있다. 이러한 경우들에서, 승인된 프로그램들은 2차 스토리지로 스와핑 아웃될 필요가 없지만(이하 더욱 상세하게 설명함), 그 대신 검사의 메모리 판독 부분 동안에 상주할 수 있다(예를 들면, 1108).
몇몇 실시예들에서, 모놀리스 커널은 프로그램 F ε 에 대응하며, 알려진 실행 환경 ε에 대해 파라미터화된다. 상술한 바와 같이, 실행 환경은 디바이스의 하드웨어 구성에 대응한다. 실행의 개시로부터의 시간 ti (F ε ,x) 내의 각각에서 입력 x에 Fε를 실행하여 출력들 F εi (F ε ,x)의 시퀀스를 생성하고 종료 상태 s(Fε,x)를 생성한다. 본 예에서, x∈X이며, 여기에서 X는 모든 적법 입력들의 세트이다.
디바이스로부터의 레이턴시 변화를 감소시키는 데 프록시(906)가 사용되며, SIM 대신, 또는 그에 추가하여 테더드 셀룰러 폰(tethered cellular phone), 셀 폰 타워(cell phone tower) 등으로서 다양한 실시예들에서 구현된다. 몇몇 실시예들에서, 외부 검증기(904)는 초기 연산을 수행하고(아래에서 보다 상세하게 설명됨), 디바이스(902)를 매개로 사용하여 정보의 일부를 프록시(906)로 (예를 들면 보안 채널을 통해) 통신한다. 프록시(906)는 모놀리스 커널에 의해서 수행되는 연산들을 타이밍하고, 이 타이밍 수치를 외부 검증기(904)에 다시 보고한다. 몇몇 실시예들에서, 테더드 셀 폰들 또는 컴퓨터들, 기지국들 또는 추가적인 외부 검증기들과 같은 외부 디바이스들이 프록시(906) 대신, 또는 그에 추가하여 사용된다. 변형이 억제되는 것으로 생각되는 소프트웨어 프록시들을 사용하거나, 또는 특수 목적 하드웨어 프록시들을 사용하는 것 또한 가능하다.
도 10은 디바이스의 일부의 일 실시예를 도시한다. 전술한 바와 같이, "프리" RAM은 모든 애플리케이션 및 표준 커널이 스와핑 아웃된 후에 비어져 있어야 하는 RAM의 일부인 것으로 규정된다. 버스의 폭은 워드이다. 메모리의 사이즈 또한 워드들로 기술가능하다. 예를 들면, 도 10에 도시된 바와 같은 512 바이트 메모리 페이지는 표준 핸드셋에 128 워드들을 가지며, 워드는 32 비트이다. 본 명세서에서 사용된 "청크"는 캐시 라인의 길이이다. 도시된 예에서, 캐시 라인은 8 워드에 상응하며, 그 각각은 32 비트이며, 따라서 청크는 256 비트이다.
도 11은 디바이스 검사를 수행하는 프로세스의 일 실시예이다. 다양한 실시예들에서, 도 11에 도시된 프로세스가 디바이스(902)에 의해 수행된다. 이 프로세스는 특정 시간량 내에 연산들이 완료할 것이 기대되도록 구성된다. 평가된 프리 RAM 양의 임의의 변화 및 2차 스토리지(1004)에 대한 액세스를 위한 임의의 시도는 연산들이 완료하는 데에 걸리는 관찰가능한 시간량의 연장을 초래한다. 유사하게, 임의의 화이트리스트 프로그램들 또는 관련 데이터의 컨텐츠의 변경은 지연 또는 부정확한 응답들의 연산을 초래할 것이다.
도 11에 도시된 프로세스는 도 3에 도시된 프로세스와 함께 기술된 방식들과 같은 다양한 방식들로 개시될 수 있다. 추가적인 예들로서, 감시 프로세스는 셧다운 또는 부트 라우트에 포함될 수 있다. 애플리케이션이 감시 프로세스를 개시하는 것도 가능하다. 이러한 애플리케이션은 실행중지될 것이며, 처리가 수행되어 완료되면, 제어가 애플리케이션에 다시 인계될 것이다. 몇몇 실시예들에서, 애플리케이션은 중앙 기관(central authority)에 얼마나 최근에 마지막 스캔이 수행되었는지에 관한 정보를 질의한다. SIM 카드는 언제 스캔이 수행되었는지에 관한 정보를 저장할 수 있다. SIM 카드가 계속해서 시간을 계측할 수 있도록 하는 기능을 가지는 경우에는, 실제 시간을 답으로서 줄 수 있을 것이다. 그렇지 않은 경우, 관찰된 트랜잭션의 수에 기초한 시간 추정치를 줄 수 있는데, 그중 많은 부분이 주기적인 것으로 알려질 것이다. 이러한 정보는 마지막 스캔 이후의 지속시간을 평가하는 데에 이용될 수 있다.
프로세스는 모놀리스 커널(1006)(및 보유하는 것이 수용가능하다고 간주되는 임의의 프로세스들)을 제외한 메모리(1002)의 컨텐츠가 2차 스토리지(1004)에 스와핑되는 때에 1102에서 시작한다. 몇몇 실시예들에서, 프로세스의 부분(1102)은 정규의 커널, 또는 그 일부들을 스와핑 아웃하는 것을 포함한다. 직렬 통신을 위한 디바이스 드라이버들과 같은 중요한 특징들이 모놀리스 커널(1106)에서 재실행된다. 다양한 실시예들에서, 컨텐츠는 축어적으로 스와핑 아웃되거나, 또는 컨텐츠의 간결한 기술로 스와핑 아웃되거나 프록시, 외부 검증기 또는 기타 신뢰되는 디바이스에 저장되거나, 활성 코드에 사용될 수 없는 상태로 RAM에 저장된다. (예를 들면, 인스트럭션들을 인스트럭션용이 아닌 데이터 전용인 캐시의 일부에 저장하는 것이 가능하다.) 몇몇 실시예들에서, "프리" 공간이 존재하지 않으며, 도 11에 도시된 프로세스의 부분(1102)이 생략된다.
1104에서, 하드웨어 구성에 대응하는 하나 이상의 하드웨어 파라미터들이 수신된다. 프로세스의 이러한 부분은 도 3에 도시된 프로세스의 부분 302와 유사하다. 또한 1104에서, 의사랜덤 스트링을 생성하는 데에 사용될 수 있는 시드와 같은 초기화 정보가 수신된다. 초기화 정보의 다른 예는, 아래에서 상세하게 설명될 바와 같이, 스텝 값 및 키 값을 포함한다.
1106에서, 프리 RAM은 중복기록된다. 몇몇 실시예들에서, 시드를 사용하여 생성된 의사랜덤 스트링의 출력은 프리 RAM을 중복기록하는 데에 사용된다. 프리 RAM을 중복기록하는 한가지 기술은 특정 속성을 가지는 n2 비트 의사랜덤 스트링을 생성하는 것으로, 출력 비트들 중 임의의 하나의 연산은 비트들의 전체 블록의 연산 길이의 적어도 반을 차지하거나, 512 비트 모드에서 적어도 MD6의 512 애플리케이션을 차지할 것이다. 이 기술은 3개의 상태들을 사용하며, 출력 스트링들이 전체 프리 RAM을 채울 때까지 (상이한 aux 값으로) 반복한다.
1. 생성: 출력 사이즈 "n" 비트들을 가지는 해시 함수 h(예를 들면, MD6)를 사용하여, 값 x i =h( seed , i, aux ) (0≤i≤n-1)과, 몇몇 aux 값을 생성한다. 이것은 n2 의사랜덤 비트들을 생성한다.
2. 셔플링: (0≤j≤n-1)를 연산하며, BIT j 는 입력의 j번째 최상위 비트를 반환하는 함수이다. 이것은 모든 n 해시 함수 애플리케이션의 연산들을 요구하는 방식으로 비트를 셔플링하여 값들 중 임의의 것을 재구성한다.
3. 블랜딩: 0≤j≤n-1에 대하여 z j =h( y j )를 연산한다. 이것은 출력의 각각의 비트가 모든 n 입력 비트들의 함수이며, 그 각각은 연산을 위해 하나의 해시 함수 평가를 요구하는 것을 보증한다.
다양한 실시예들에서, 추가적인 셔플링 및 블랜딩이 수행되어 최종 스트링의 임의의 부분을 연산하는 비용을 더 증가시킨다. 추가적으로, 프리 RAM을 중복기록하는 다른 기술들이 도 11에 도시된 프로세스의 부분 1106과 함께 기술된 예시적인 기법 대신에 사용될 수 있다.
1108에서, 메모리(1002)(또는 그 일부)는 "스텝" 값에 의해서 결정되는 방식으로 판독된다. 결과들은 누적되며, 키를 사용하여 연산이 키잉된다. 다양한 실시예들에서, 부분(1108)의 처리는 메모리 액세스 스케쥴러 및 어큐뮬레이터에 의해서 수행되는데, 이들 각각이 이제 보다 상세하게 기술될 것이다.
메모리 액세스 스케쥴러
"sRAM"이 전체로서 청크로 측정된 RAM(1002)의 사이즈라고 하자. 외부 검증기(904)는 page<step<sRAM-page의 범위에서 랜덤 값 스텝을 선택할 것이며, 여기서 "step"은 홀수값이다. 여기서, "page"는 청크들로 측정된 2차 스토리지 내의 하나의 메모리 페이지의 사이즈를 나타낸다. 몇몇 페이지 사이즈들이 존재하는 경우(예를 들면, 2차 스토리지를 구성하는 몇몇 성분들이 존재하는 경우), 다양한 실시예들에서 가장 큰 페이지 크기들이 사용된다.
1108의 처리를 수행하는 것은 메모리가 액세스되는 루프를 포함하며, 그 결과들이 결합되어 키잉된 메모리 체크섬(checksum)을 형성한다. 루프의 각각의 반복에 대해, 액세스 로케이션이 스텝 값, 모듈로 sRAM에 의해 증가된다. "step" 및 sRAM은 비교적 중요하기 때문에, 모든 RAM 메모리 로케이션들은 정확하게 한번 액세스될 것이다. 또한, 액세스 순서는 "step" 값이 공개될 때까지 적대자에게 알려지지 않을 것이다. "step"에 따라 판독되는 메모리(1002)의 설명은 도 12에 제공된다.
도 9에 도시된 예에서, 디바이스(902)는 싱글, 싱글 코어 CPU를 포함한다. 멀티 코어 프로세서들 및/또는 멀티플 프로세서들을 포함하는 랩톱 컴퓨터들과 같은 시스템에서, 1108의 처리는 본질적으로 직렬인(따라서 다수의 프로세서들의 사용을 막는) 방식, 또는 다수의 프로세서들을 이용하는 방식으로 구성될 수 있다. 후자의 일 예로서, 몇몇 연산들이 오프셋을 가지고서 시작되어 각각의 스레드(thread)가 메모리의 상이한 부분에 대응되어, 충돌이 없을 수 있다.
어큐뮬레이터
메모리 컨텐츠는 이전 레지스터 컨텐츠(본 명세서에서는 "state"라고 함)와 새로이 판독된 메모리 컨텐츠(data)를 하나씩 결합하는 단순한 비선형 함수를 이용해서 레지스터 내에 누적될 수 있다. 누적 함수들의 예들은 해시 함수들(예를 들면, MD6); 비선형 시프트-백 레지스터; 및 보다 단순한 함수들을 포함한다.
보다 단순한 함수의 일 예는 state← ROR(state+data)이다. 후자 함수는 함수 ROR(...(ROR(state0+data1)+data2)...+datan)에 상응하는데, 여기서 "+"는 통상의 가산을 말하며, "ROR"은 레지스터의 컨텐츠를 오른쪽으로 1비트 회전시킨다. 이 경우, 함수 자체는 비선형이 아닐 수 있지만, 그럼에도 불구하고 선험적으로 알려지지 않은 스텝 사이즈 및 엄격한 타이밍 요건들과 결합되는 경우에는 요구되는 처리 요건들을 충족시키기에 충분하다.
전술한 바와 같이, 다양한 실시예들에서, 누적 처리가 키잉된다. 이것을 수행하는 한가지 방안은 일정한 간격들로 "state" 값을 (외부 검증기 또는 프록시로부터 획득된) 새로운 "key" 값으로 오프셋하는 것이다. 오프셋은 현재 state값에 새로운 key 값을 가산하여 수행될 수 있다.
또한, 1108과 함께 설명한 프로세스가 판독 메모리에 기초하지만, 몇몇 실시예들에서는 추가적인 플래시 기반 슬로우다운들을 야기하도록 기록 동작이 포함된다. 일 예로서, "1"의 시퀀스가 기록되어 전체 블록이 소거되도록 하고, 플래시에 데이터가 저장된다. 어느 곳에 기록해야 할지에 대한 스케쥴링을 단순화하기 위해(그리고 모놀리스 커널로), 새로운 키 값이 획득됨과 동시에 로케이션이 프록시로부터 획득될 수 있다.
메모리 액세스들의 다양한 기타 시퀀스들이 1108에서 수행될 수도 있다. 예를 들면, 1 스텝 대신 2 스텝 값을 사용하는 것이 가능한데, 이들 스텝 값은 둘 다 짝수 일 수 있으나, 이들은 대부분 모든 공간이 커버되도록 한다. 로케이션들의 시퀀스를 선택하는 함수를 결정하는 숫자 또는 파라미터들의 집합을 사용하는 것도 가능하다. 이것을 최대 길이 시퀀스로 간주하는 것이 가능한데, 출력들은 로케이션들이며, 최대 길이 시퀀스는 메모리 위치들에 대응하는 소정의 범위 내의 모든 값들을 포함한다. 특정 영역들에 액세스하는 것을 피하기 위하여(예를 들면, 모놀리스 커널), 이러한 값들을 오프셋하는 것이 가능한데, 이것이 바람직하다. 최대 길이 시퀀스의 경우, 외부 검증기 또는 프록시에 의해 제공되는 키는 초기 상태, 또는 LFSR의 다양한 셀들과 관련된 가중치들일 수 있다.
1110에서, 외부 검증기(904)에 키잉된 연산이 제공된다. 외부 검증기가 그 결과들을 승인하는 경우, 디바이스(902)는 안전한 상태인 것으로 간주된다.
1112에서, 디바이스(902)는 안전한 상태에서 실행되어야 할 임의의 함수들을 실행한다. 그 예들로 SSL 접속의 설정, 투표, 패스워드의 입력, 악의적인/원치않는 프로그램들에 대한 2차 스토리지의 스캐닝 등을 포함한다. 다양한 실시예들에서, 안정 상태 함수의 코드가 2차 스토리지에 존재하는 경우(즉, 모놀리스 커널의 일부가 아님), 함수의 다이제스트가 모놀리스 커널 내에 (또는 프록시 상에) 저장된 값과 비교된다. 이 함수는 값들이 매칭되는 경우에만 활성화된다. 다양한 실시예들에서, 프록시가 메시지 다이제스트 연산을 수행할 수 있는 경우, 모놀리스 커널은 동일한 것을 행할 코드를 포함할 필요가 없다.
1114에서, 2차 스토리지(1004)의 컨텐츠를 로딩함으로써(1102에서 스와핑 아웃) RAM(1002)의 상태가 복원된다.
도 11에 도시된 프로세스의 잠재적인 부하의 많은 부분은 RAM으로부터 2차 스토리지로의 애플리케이션들 및 데이터의 스와핑 아웃 및 스와핑 백(swapping back)을 포함한다. 예를 들어, 시간을 절약하기 위해 이것을 피하는 것이 가능하다. 이것은 애플리케이션을 중단함(killing)으로써 수행된다. 외부 검증기 또는 다른 자원이 어떤 애플리케이션들이 실행 중인지, 그리고 잠재적으로 그 상태 또는 그 일부들 또한 아는 경우, 검사 프로세스가 실행된 후에 선택된 애플리케이션들을 다시 시작하는 것을 이쪽이 돕는 것이 가능하다. 2차 스토리지 또는 SIM 카드 또는 다른 온보드 유닛이 이러한 정보의 일부를 유지하는 것이 가능하다. 애플리케이션들 및 데이터를 그들의 전체 스트링들에 의해서가 아니라, 보다 짧은 식별자들에 의해서 식별하여 공간 및 시간을 줄이는 것이 가능하다. 검출 알고리즘이 실행된 후에 동일한 상태를 주로 재생성하는 유사한 알고리즘을 가지는 것이 가능하다. 예를 들면, 이것은 브라우저를 다시 시작할 수 있을 것이지만, 브라우저 컨텐츠를 복원하는 데에는 실패한다.
또한, 실행 중인 애플리케이션들이 RAM의 일부만을 차지한다면 이들을 스와핑 아웃할 필요가 없다. 예를 들면, 이들이 RAM의 하위의 반만을 차지한다고 가정하자. 비어있는 RAM 내의 각각의 셀(숫자 i)에 대해, 그 셀의 컨텐츠를 (위치 2i)까지 더 높은 위치로 카피한다. 이것은 마지막(더 큰 숫자가 매겨진 위치)으로부터 시작하여 바람직하게 수행된다. 이것은 애플리케이션들을 효과적으로 분할하며, 이들을 짝수 위치들에만 존재하게 한다. 이제, 의사랜덤 값들은 홀수 위치들에 기록된 선택(bet)만을 필요로 하며, 홀수 셀들의 비선형 누적을 수행하기만 하면 된다. 임의의 기능적인 멀웨어(malware)가 활성 상태로 남는 것은 가능하지 않다는 것이 주의된다. 그러나 인스트럭션들이 "jump to next open space"이고 다음 인스트럭션이 존재하는 경우에만 멀웨어가 존재할 수 있다. 의사랜덤 자료에 의해 중복하여 기록되지 않은 모든 공간은 건너뛸 것이므로(연속되는 공간에 더 이상의 공간이 존재하지 않음), 멀웨어가 아무것도 획득할 수 없음을 알 수 있다. 슬라이스들 간의 거리를 더 크게 하는 것은, 특히 적대자에 의해 공간이 예측가능하지 않은 경우에 가능하다. 이 거리는, 예를 들면 상이한 거리들이 상이한 길이인 시퀀스 생성기에 의해서 예측될 수 있다. RAM 내의 데이터 및 프로그램들의 확산은 이들을 랜덤 스트링들과 오프셋하는 것과 결합될 수 있다. 마이크로커널(멀웨어 검출을 담당하는 프로그램)은, 실행을 허용하는 상태로 남을 필요가 있기 때문에 이러한 방식으로 확산되지 않을 것이다.
도 11과 함께, 선험적으로 알려지지 않은 스텝 사이즈를 이용하여 RAM이 판독될 수 있는 방법에 대해 설명하였다. 1 이상의, 선험적으로 알려지지 않을 수 있는 스텝 사이즈를 이용하여 (프리) RAM에 기록하는 것도 가능하다. 이것의 하나의 효과는 정보를 2차 스토리지에 저장하고자 하는 공격자가 2차 스토리지에 기록하게 한다는 것이다. 이러한 지연들은, 2차 스토리지가 플래시를 사용하는 경우에는 판독 지연들보다 크다. 범위에 대응하는 정수가 기록되는 간단한 스텝 증가 모듈로 - 모놀리스 커널이 높은 주소들에 존재하지 않는 경우에는 이에 더하여 오프셋을 사용하는 것이 가능하다. 어드레싱 가능한 RAM 공간에 대응하는 모듈로를 사용하는 것에 대응하여 산술을 위한 특정한 모듈을 사용하지 않고, 기록될 셀이 기록되어서는 안되는 범위에 존재하는지 여부를 식별하는 것이 또한 가능하다.
도 13은 메모리를 선택적으로 판독하는 프로세스의 구현의 실시예를 도시한다. 몇몇 실시예들에서, 도 13은 도 11에 도시된 프로세스의 일부 1108의 일부를 실행하는 데에 사용된다.
몇몇 실시예들에서, 데이터 캐시의 전반적인 사용이 이루어진다. 구체적으로, 데이터는 사이즈가 전형적으로 8에서 512 바이트까지의 범위인 캐시 라인의 폭으로 청크들(chunks)로 처리된다. 아래에서, 파라미터 "α"는 캐시 라인의 폭을 워드로 나타낸다. 파라미터 "period"는 타이밍 주기들의 길이에 대응한다. 이것은, 디바이스(902)로부터 잠재적인 외부 헬퍼(potential external helper)로의 낙관적인 라운드트립 레이턴시(optimistic roundtrip latency)보다 짧은 시간에 대응하는 것으로 설정된다. 보고된 값들과, 이들이 보고된 타이밍은 프록시(906)에 의해 기록된다.
다양한 회피 프로그램들의 검출 예들
아래 섹션은 전술한 다양한 전략들을 이용하는 회피 프로그램들이 어떻게 본 명세서에 기술된 기술들을 사용하여 검출될 수 있는지에 대한 예들을 제공한다. 검출을 회피하는 데에 성공하기 위해, 적대자는 예상 시간 t i (F ε ,x)+δ 내에 올바른 응답들 F εi (x)를 제공하여야 한다. 적대자에 의해서 이것이 시도될 수 있는 다양한 방식들이 존재하는데, 그 각각에 대해서 이제 설명할 것이다.
적대자 전략에 대한 방어 1 - 외부 지원
"key" 및 "step" 값은 보안 채널을 통해 프록시와 통신한다. "state"의 값은 외부 루프의 반복 때마다 보고된다. 이러한 값의 연산은 "key" 값에 의존한다. 따라서, (key 값의 전송으로부터 연산 결과의 수신까지의) 라운드트립 레이턴시가 시간 임계값 t i (F ε ,x)+δ을 초과하는 경우에는 외부 디바이스가 응답들의 생성을 돕는 것은 가능하지 않은데, 여기서 t i (F ε ,x)는 F ε 이 응답을 생성하기 위한 시간이다.
적대자 전략에 대한 방어 1 - 2차 스토리지의 이용
적대자가 데이터의 변형된 몇몇 "k"개의 워드를 RAM 내에 가지고, 이 영역의 "intended" 컨텐츠의 이미지가 2차 스토리지에 유지된다고 가정하자. F ε 이 변형된 셀들 중 하나에 액세스하려고 시도했었다면, F'가 2차 스토리지 내의 이미지를 대신 액세스한다.
이것은 3가지 방식들로 수행될 수 있는데, 즉, (a) 전체 RAM이 2차 스토리지에 이미징될 수 있어, 각각의 액세스가 거기에서 이루어지고, (b) F ε 의 각각의 메모리 액세스가 소정 범위에 대한 어드레스의 비교로 대체되고, 선택 액세스 시도들은 단지 2차 스토리지로 리라우팅되고; (c) 선택된 범위들로 액세스들을 자동으로 리라우팅하는 데에 TLB(Translation Lookaside Buffer)가 사용된다.
첫 번째 경우에, 각각의 메모리 액세스는 RAM 대신 2차 스토리지에 액세스하는 것과 관련된 지연을 겪을 것이다. 두 번째 경우에, 리라우팅된 액세스들만이 이러한 지연을 겪지만, 각각의 메모리 액세스에 대해서, 비교가 이루어져야만 한다. 세 번째 경우에, 리라우팅된 액세스들에 대해서만 지연이 부과된다. 그러나, TLB의 다소 거친 정밀도(granularity)에 기인하여, 액세스가 리라우팅될 수 있는 셀들의 최소의 수가 존재한다.
적대자 전략에 대한 방어 3 - RAM의 이용
프리 RAM을 채우는 데에 이용되는 의사랜덤 스트링의 구성에 기인하여, 임의의 하나의 셀의 연산은 적어도 512개의 해시 함수 평가들의 연산을 요구할 것인데, (몇몇 실시예들에서) 각각의 셀 내의 값은 입력이 512개의 제 1 레벨 해시 함수 평가들의 함수인 제 2 층 해시 함수 출력의 일부이기 때문이다.
각각의 해시 함수 연산에 대한 설정 비용이 존재하고, 이것이 적어도 1156 클록 사이클들인 것으로 가정한다. 동시에, MD6-512에 대한 해시 연산-일단 설정이 완료되면-이 바이트 당 155 사이클, 또는 64 비트 입력에 대하여 9920 사이클을 최한다. 이들 둘은 모두 최적화된 코드 및 전형적인 32 비트 프로세서에 대해서 가정한다. 따라서, 이러한 설정에서의 해시 함수 평가에 대한 전체 비용은 11076 사이클이다. RAM 내의 단지 하나의 셀의 컨텐츠의 연산은 적어도 (512+1)*11076 사이클을 취할 것이다.
타이밍을 위한 프록시들의 사용
전술한 바와 같이, 몇몇 실시예들에서, 새로운 시드들을 배포하고, 타이밍 체크포인트들로부터의 값들의 도달 시간을 타이밍하는 데에 외부 검증기가 사용된다. 검사된 디바이스와 외부 검증기 간의 통신의 예시적인 모델로는, (a) 물리적인 접속; 및 (b) 외부 검증기 및 SIM 카드 간의 VPN이 있다. 데이터 다운은 암호화되고, 데이터 업은 인증되고/인증되거나 양방향 인증이 발생한다.
디바이스와 검증기 간에 물리적 접속이 이용되지 않는 경우, 레이턴시의 변화들은 연산의 타이밍에 혼란을 가져올 수 있다. 따라서, 몇몇 실시예들에서는 (보다 적은 레이턴시 변화를 가지는) 프록시가 타이밍을 지원하는 데에 사용된다. 프록시로서 사용될 수 있는 하나의 예시적인 하드웨어는 SIM 카드이다.
프록시는 연산의 시작과 관련된 변화를 감소시키는 데에 사용될 수 있다. 이것은 전체 연산 태스크 및 서브태스크들 모두에 적용된다. 이들 모두는 연산에 필요한 키 또는 시드를 전송하고, 키 또는 시드가 수신될 때까지는 연산이 개시되지 않도록 보증함으로써 초기화될 수 있다.
SIM 카드는 암호화된 시드를 수신하고, 이들을 해독하고, 디바이스(902)에 값들을 제공한다. 이러한 불필요한 시간은 디바이스 상에서 관찰되는 다른 이벤트들에 대해 상대적으로 이루어질 수 있다. 트리플릿(로케이션, 데이터, 시드)을 고려하고, 검증기가 이러한 트리플릿들을 생성하고, 이들을 암호화 및 인증된 방식으로 SIM 카드에 전송하는 것으로 고려한다. 여기서, 로케이션은 프로그램 내에서의 연산 스텝(또는 스테이지)을 기술하고, 데이터는 이러한 로케이션과 관련된 몇몇 동일한 상태를 기술한다. 연산은 외부 검증기에 의해서 예상될 수 있거나, 작은 수의 매우 가능성이 있는 연산 경로들이 예상될 수 있다는 것을 가정한다.
이것은 외부 검증기가 이들 트리플릿들을 연산할 수 있도록 하여, 어떠한 데이터(또는 상태)가 소정의 로케이션(또는 스테이지)에서 디바이스 상에서 관찰가능한지 예측할 수 있다. 트리플의 제 3 요소인 시드는, 로케이션 및 데이터에 관련된 소정의 상태의 도달할 경우 디바이스에 분배될 값을 나타낸다.
SIM 카드는 디바이스에 의해 연산되거나 예측될 수 없거나, 다른 곳으로부터 수신될 수 없다면, "value" 로케이션을 디바이스에 전송할 것이다. 연산이 value 로케이션과 관련된 스테이지에 도달한 경우(이것은 루프 반복 값일 수 있음), 디바이스 상의 소프트웨어는 몇몇 미리 결정된 타입- 또는 그 부분-의 가장 최근에 연산된 값을 SIM 카드로 전송한다. 이것은 가장 최근에 연산된 값, 소정의 레지스터의 컨텐츠, 또는 임의의 기타 적절한 값일 수 있다. SIM 카드는 이 값을 로케이션과 관련된 데이터 값과 비교하고, 그들이 동일하거나 동등한 경우, 시드 값으로 응답한다. 디바이스는 현재 시드 값을 시드에 대한 이러한 새로운 값으로 교체한다. 이것은 소정의 연산 스테이지에 도달했음을 보증하는 몇몇 값을 연산한 때에 디바이스가 시드를 교체할 수 있도록 한다. 새로운 시드는 그 전에는 공개된 것이 없어서 보안상 이점을 가진다. 이와 달리, 이러한 보고된 값이 올바른지 여부와는 독립적으로, 새로운 결과가 보고되자마자 새로운 시드들이 공개될 수 있으며; 임의의 보고된 값이 언제 수신되었는지와 함께 기록되어, 검증기가 추후에 올바르지 않은 결과들이 수신되었는지, 또는 현저한 지연들이 있었는지를 결정하는 것을 가능하게 한다. 프록시에 의해 전송된 보고들은 대역폭을 절약하기 위해 가능하다면 압축 또는 다이제스트(digest)될 수 있다.
매치(match)가 이루어지면 연산이 트리플(로케이션, 데이터, 시드)과 관련된 소정의 체크포인트에 도달하고, 관련된 시드 값이 분배된다.
몇몇 실시예들에서, SIM 카드는 트리플들과 같은 긴 벡터를 가지며, 라인에서 첫 번째 것 또는 입력에 매칭되는 임의의 하나(외부 검증기 유닛에 의해서 예측할 수 없는 브랜치들이 존재하는 경우) 중 하나를 선택한다. 예상가능한 로케이션이 사용되는 경우에는 로케이션 값을 생략하는 것이 가능하다. SIM 카드는 트리플의 긴 리스트를 핸드셋 또는 다른 당사자들에 의해 인터셉트되게 하지 않고서 획득할 수 있는데, 이것은 외부 검증기(또는 관련 프록시)와 SIM 카드간의 포인트 투 포인트 암호화의 사용에 의해 가능하게 된다.
값 데이터 대신에 검증기 개시 이벤트를 사용하는 것도 가능하다. 따라서, 그러한 이벤트가 SIM 카드에 의해 관찰되면, 관련 시드 값이 릴리즈되고, 디바이스 연산이 이 값으로 개시된다. 이것은 클록킹을 개시하기 위해 사용될 수 있다. 이것은, 예컨대 컴퓨터를 개시하기 위해 외부 검증기에 의해 핸드셋에 전달될 수도 있는 소정의 데이터를 제공해야 하는 디바이스에 의해서 실시될 수도 있다.
몇몇 시드 값이 비어있을 수도 있는데, 이 경우에는 어떠한 시드 값도 디바이스에 전달되지 않는다. 이것은 핸드셋이 통신의 어떠한 지점에 도달하였는지를 체크하는 데에 사용될 수 있다.
SIM 카드는 클록킹될 필요는 없으며(따라서, 시간을 알 필요가 없다.), 적대적인 환경에서 동작할 수 있다(신속한 방식으로 시드 값들을 획득할 목적으로 핸드셋 상의 악성 코드에 의한 전역 검색을 배제할 정도로 값 "데이터"가 충분히 긴 경우).
연산의 끝은, 전술한 바와 같이 체크포인트를 가짐으로써 식별될 수 있으며, 그 후에 SIM 카드는 연산 시간을 외부 검증기에 보고하거나, 또는 외부 검증기가 연산의 시작과 끝 사이의 시간의 추정치를 연산할 수 있도록 하는 정보를 보고한다. 전자의 경우, 로컬 타임 값들의 집합이 체크포인트에 도달한 것에 대하여 SIM 카드에 의해 기록될 수 있다. 이것은 쌍(로케이션, 시간)의 리스트로서 기록될 수 있는데, 시간 값은 외부 검증기의 시간 개념과 동기화될 필요는 없는 로컬 시간일 수 있다. 이와 달리, 보고된 값들과 관련 시간의 쌍이 기록될 수 있다. SIM 카드는 이러한 리스트를 인증하고, 인증이 올바른 것을 검증할 외부 검증기에 전송할 수 있으며, 그 후에 얼마나 긴 다양한 연산 태스크들이 소요되는지에 대해 결정을 할 수 있다. 이것은 디바이스의 보안 상태를 추론하는 데에 사용될 수 있다. 이와 다리, SIM 카드는 이러한 보안 결정을 하고, 결정의 인증된 결과를 외부 검증기에 전송할 수 있다.
시간을 판별할 기능이 없더라도, SIM 카드는 이벤트들을 정렬할 수 있다. 검증기(또는 멀웨어가 아닌, 검증기와 함께 작업하는 임의의 엔티티)로부터 패킷들을 수신하는 경우, 어떤 디바이스 보고된 이벤트가 가장 최근에 발생하였는지를 결정할 것이다. 이것은 수신되고 올바르다고 검증된 "데이터" 값에 대응한다. 따라서, 데이터 값들은 디바이스에 의해 생성되거나(외부 검증기에 의해 설정되거나 알려진 주어진 몇몇 연산 태스크), 외부 검증기로부터의 통신의 결과일 수 있다.
의도적으로 SIM 카드에 지연된 보고를 처리하기 위해, 일단 이벤트 패킷이 수신되면 SIM 카드에 의해 외부 검증기에 즉각적인 인지를 요구하는 것이 가능하다. 이들 메시지들은 인증되고/인증되거나, 멀웨어 에이전트에 의해 예측될 수 없는 포맷을 가진다. 예시적인 방식은, 상기 값 "data"가 외부 검증기로부터의 이벤트에 대응하도록 하고, 디바이스가 관련된 값 "seed"가 일단 SIM 카드로부터 수신되면 이것을 외부 검증기에 보고하도록 함으로써 이것을 구성하는 것이다. 그 후에, 외부 검증기는 선행하는 패킷이 전송된 후에 이 인지의 도달 시간을 타이밍할 수 있다. 이와 달리, 디바이스는 "data"에 대응하는 값들을 외부 검증기에 직접 보고하도록 허용될 수도 있다. 이것은 모든 체크포인트들의 일부, 또는 추가적인 체크포인트에 대해 행해질 수 있다.
이벤트 E가 발생한 후에, 그러나 어떤 다른 이벤트가 발생하기 전에, (그리고, SIM 카드에 의해 올바르게 검증된 경우) 스트링 S에 의해 식별된 패킷이 SIM 카드에 의해 수신되었다고 가정하자. 그러면, 쌍 (S,E)는 로그 L에 추가된다. 이와 달리, 스트링들 S 및 E의 식별부들이 로그에 추가된다. 로그는 통신의 마지막에 검증기에 통신된다. 이와 달리, 오더링 정보가 외부 검증기에 통신된다.
몇몇 실시예들에서, 트리플릿들(로케이션, 데이터, 리포트)이 벡터에 추가되는데, "리포트"는 검증기에 전송되는 보고를 나타내는 값이다. 이것은 정규 시드 값을 이용하여 수행될 수 있는데, 릴리즈된 최종 시드 값은 타이밍을 중지시키기 위해 디바이스가 검증기에 통신하는 값이다. 타이밍은 디바이스가 몇몇 추가적인 키잉된 태스크를 수행하고, 시드들과 교환하여 값들을 보고하도록 함으로써 정지될 수 있는데, 이 경우, 스트링 S를 가지는 다음 패킷의 도달은 타이밍이 정지된 때에 식별할 것이다(의도된 연산이 끝난 후에, 외관상 연산된 사이클 수로부터 외삽됨).
일단 타이밍이 종료하면, SIM 카드는 로그를 암호화하고(그리고, 잠재적으로 인증함), 검증기로의 전송을 위해 이것을 디바이스로 보낸다. 검증기는 이것이 올바르게 인증되었는지를 결정하고, 암호해독하고, 그 후에 로그로부터 통신의 부분적인 단계의 완성 시간과, S와 같은 값을 포함하는 패킷들의 전송 시간들에 대한 소정의 정보에 대해 결정한다. 이들이 핸드셋에 가장 가까운 기지국에 의해 언제 전송되었는지를 알 수도 있으며, 또는 네트워크 프록시에 의해, 또는 패킷 자체의 제작자에 의해 이들이 처리된 때를 알 수도 있다.
몇몇 실시예들에서, 값 S는 신뢰된 비컨에 의해서 생성되며, 외부 검증기에 의해 디바이스 상에서 연산을 개시할 때까지는 잠재적으로 알려지지 않는다.
S를 포함하는 패킷들과 같은 몇몇 타입들의 패킷들은 이들이 네트워크를 통해 전송되기 전에는 암호화될 필요가 없다. 몇몇 실시예들에서, 이들은 인증된다. 그러나, 패킷이 올바른 인증을 가지는지 여부에 대한 SIM 카드에 의한 검증은 사전 로그 엔트리가 컴파일되기 전에 행해질 필요가 없다. 인증 검증이 이미 컴파일링된 로그 엔트리에 대해 실패하는 경우, 이 로그 엔트리는 소거될 수 있다.
SIM 카드들은 반이중(half-duplex)인데, 즉 데이터를 동시에 수신 및 송신할 수 없다. SIM 카드들은 슬레이브들로서 동작하는데, 즉, 요청된 후에, 단지 데이터를 부착된 디바이스(우리의 핸드셋)에 전달할 것이다(이들이 파워 업된 경우와 같은 몇몇 특수한 예외가 있음). 그러나, 몇몇 스마트 카드들은 질의되는 리액션으로서 뿐만 아니라, 그들의 관련 핸드셋들로부터 질의들(queries) 간에 독립적으로 동작할 수 있다.
SIM 카드가 멀티 스레딩을 지원하는 경우, 하나의 쓰레드가 단순한 카운트(타이밍이 개시하는 경우에 개시됨)를 수행하도록 할 수 있으며, 이 카운트를, 이 값을 올바른 데이터 값이 수신될 때마다 기록하는 다른 스레드에 제공하도록 할 수 있다. 카운터는 데이터 값, 관련 로케이션, 또는 어떤 데이터 값이 카운터에 관련되었는지를 나타내는 인덱스와 함께 저장될 수 있다. 하나의 데이터 값이 한 번 이상 수용될 수 없는 것이 보증되고, 수신될 값들의 결정적인 순서가 존재하는 경우와 같은 몇몇 경우들에, 데이터 값들이나 기타 다른 상태 정보가 아닌 카운터 값들을 기록할 수 있다.
전형적인 Java Card들과 같은 몇몇 SIM 카드들은 SIM 카드 인터페이싱 디바이스(CAD)로부터 메시지가 수신된 후의 연산만을 지원한다. 전형적으로, 연산은 SIM 카드로부터의 응답이 생성되고 CAD로 전송된 때에 종료한다.
SIM 카드가, 메시지들이 핸드셋으로부터 수신되기 전, 및 응답들이 송신된 후에도 각각의 클록 사이클(또는 다른 결정적인 주기)에 대해 카운터를 증가시킬 수 있다면, 멀티 스레딩에 대한 지원없이 올바른 카운트를 유지하는 것이 가능하다.
SIM 카드 내에서 시간에 기반한 상태를 유지하는 것이 가능하며; SIM 카드가 이벤트(이들이 발생하는 시간을 포함함)를 인증하고, 그러한 인증된 이벤트들의 리스트들을 외부로 전송하는 것도 가능하다.
도 14는 디바이스 감시의 타이밍 부분을 위한 프로세스의 실행에 대한 실시예를 도시한다. 도시된 예에서, 변형된 Java Card가 프록시로서 사용된다. 이러한 변형은 요청에 응답한 후에 프로세스가 실행중인 상태를 유지할 수 있도록 한다. 프록시는 외부 검증기로부터의 입력 및 출력 값들의 벡터를 수신하며, 실행의 완료 시에 외부 검증기에 전송되는 벡터 지속시간을 생성한다. (프록시와 외부 검증기 간의 모든 통신은 인증되고 암호화되는 것으로 간주된다.) 도시된 예에서, "∞" 값은 클라이언트에 대한 멀웨어 에이전트의 속임수 시도를 나타내는 에러 메시지에 대응한다. 수신시에, 외부 검증기는 벡터 지속기산 내의 값들이 모두 성공적인 완료를 암시하는 엄격한 경계 내에 놓이는지 여부를 결정할 것이며, 그것이 유효한 경우에는 클라이언트가 안전한 상태에 있다고 결론지을 것이다.
타이밍에 프록시들을 이용하는 추가적인 방식
프록시로서 SIM 또는 유사한 하드웨어를 사용하는 것에 추가하여, 프록시로서 보안 상태에 있는 것으로 생각되는 다른 디바이스를 사용하는 것도 가능하다. 먼저 하나의 디바이스(가령 전화)가 보안된 것으로 검증하고, 그 후에 그 디바이스를 사용하여 로컬 타이밍 및 제 2 디바이스의 보안을 검증하는 프로세스인 기타 검증 태스크들을 수행하는 것에 의해 보안을 부트스트랩하는 것도 가능하다.
디바이스들은 상이한 타입들일 수 있다. 예를 들면, SIM 카드, 로컬 셀폰 타워, 또는 로컬 컴퓨터를 이용하여, 외부 검증기의 요청 시에 핸드셋의 보안 검증을 도울 수도 있다. 이러한 외부 검증기가 전술한 (데이터, 시드)의 쌍과 같이 검증에 이용된 데이터의 일부들을 준비하는 것도 가능하다. 제 3 자가 이러한 사전 연산을 수행하는 것 또한 가능하다. 다양한 실시예들에서, 시드는 프록시에 의해 생성된다. 한 예는 프록시와 디바이스가 모두 가속도계 또는 광발전 센서와 같은 센서를 포함하는 것이다. 양 디바이스 및 프록시는 동일한 현상을 관찰하고(예를 들면, 같이 보유되고 같이 움직임으로써), 동일한 방식으로 시드를 연산한다. 이 경우, 디바이스는 관찰된 시드를 사용하고, 프록시는 (독립적으로 경험된)시드를 외부 검증기에 전송한다.
제 1 디바이스가 보안 상태에 있는 것으로 결정되자마자, 이것은 타이밍하거나, 또는 차량의 인포테인먼트 시스템, 다른 핸드셋, 넷북, 랩톱 또는 데스크톱, 또는 다른 디바이스와 같은 제 2 디바이스의 보안 평가를 돕는 데에 사용될 수 있다. 이러한 보안 평가는 동일한 타입이거나(예를 들어, 연산 태스크들을 수행할 시간에 기초함), 제 1의 것에 부트스트랩된 대안적인 보안 평가 방법일 수 있다. 유사하게, 제 1 보안 평가는 상이한 타입일 수 있는데, 후자의 보안 평가는 제 1 보안 평가에 부트스트랩될 수 있으며, 우리의 타이밍 기반 방식을 사용할 수 있을 것이다.
몇몇 실시예들에서, 먼저 공지된 "안전한" 디바이스는 나중에 다른 디바이스들에 의해 소비될 시드 값들의 세트들의 집합을 생성하는 데에 사용된다. 그러한 세트들이 인증되도록 하는 것이 가능하다(예를 들면, PKI를 사용해서, 또는 값들의 피어 기반 인증에 의함). 또한, 외부 검증기가 온라인 프록시의 지원을 가지는 경우에는 오프 라인 방식으로 동작하는 것도 가능하다. 예를 들면, 외부 검증기는 암호화되고 인증된 데이터를 검사 프로세스보다 훨씬 먼저 전송할 수 있으며, 몇몇의 그러한 트랜스크립트들이 동시에 전송될 수 있다. 이들은 보유될 수 있는 프록시에 보내어지거나, 검사된 디바이스, 또는 필요할 때까지 보유될 프록시로 보내질 수 있다. 메모리 인쇄의 결과로서 프록시에 의해 생성되는 트랜스크립트들은 요청될 경우, 또는 통신 채널의 이용가능성이 있는 경우에 디바이스에 의해서 버퍼링되고, 나중에 외부 검증기로 전송될 수도 있다. 몇몇 실시예들에서, 모든 기록들은 인증되고, 가능하게는 암호화되기 전에 타임 스탬프들 및 일련 번호들로 마크업된다.
이것을 작은 노드들의 네트워크 내에서 실행하는 것이 가능한데, 노드 중 몇몇은 선험적으로 신뢰되거나, 보안된 것으로 평가되며; 그 후에 이들 노드들은 다른 노드들의 보안 평가를 돕는 데에 사용된다. 이것은 잠재적으로는 재귀적인 방식이며, 순환적일 수 있는데, 즉, 다른 디바이스들의 보안을 평가하는 데에 사용된 이전에 신뢰된 디바이스가 나중에 이들 디바이스들의 몇몇 또는 보안된 것으로 평가된 디바이스들에 의해서 다른 방식들로 검증될 수도 있다. 외부 검증기는 환경에 포함될 수도 있으며, 연쇄적인 검증 이벤트들의 개시를 도울 수도 있고, 언제, 누구에 의해서, 어떤 노드들이 검증되어야 하는지에 대한 스케쥴을 도울 수도 있다.
압축 액세스 테이블들의 사용
몇몇 실시예들에서, 메모리 액세스의 위치가, 컨텐츠가 프리 RAM의 모든 셀들의 순열에 대응하는 벡터 "로케이션"의 콘텐츠에 의해서 결정된다. 이러한 벡터는 거기에 보유된 경우 모든 프리 RAM을 점유할 수 있다. 몇몇 실시예들에서, 2차 스토리지(가령, 플래시)에 저장되고, 일부는 필요에 따라 스와핑된다. 의사랜덤 액세스 순서를 유지하지만, 메인 루프 동안 연산 노력을 최소화하는 다른 방식이 이제 기술될 것이다.
양자 모두 벡터들이며, 각각 부분적인 메모리 액세스 위치들의 순열을 포함하는 locationH 및 locationL의 2개의 벡터를 고려하자. 여기서, 실제 메모리 액세스 위치는 2개의 부분적인 위치들의 조합, 예를 들면 하나의 locationH 요소의 비트가 locationL의 비트에 연결된 것이다. 여기서, locationH 요소는 보다 높은 차수의 비트를 포함하고, locationL 요소는 보다 낮은 차수의 비트를 포함하는 것으로 가정된다. 이들 요소들은 동일하거나 상이한 사이즈일 수 있지만, 조합되면, 하나의 메모리 로케이션을 어드레싱하는 사이즈일 것이다. 각각 범위 내의 모든 가능한 요소들을 포함하는 경우, 모든 조합들의 집합이 모든 메모리 어드레스들의 집합에 대응할 것이다. (이로부터, 조합된 결과를 임계치와 비교하고, 이 임계치 내에 모두 놓이는 경우에는 그 결과를 트래싱으로써 프리 RAM에 존재하지 않는 것을 제거할 수 있다.) 이러한 표현은 어드레싱된 공간의 사이즈의 제곱근만을 저장한다. 3개의 구성요소들을 사용하는 것이 가능한데, 이 경우 이들은 어드레싱된 공간의 제 3의 근(root)을 취한다. 많은 수의 구성요소들을 사용하는 것이 가능하다. 조합 함수의 일 예는 연쇄(concatenation)이다.
몇몇 실시예들에서, 벡터의 요소들의 액세스의 순서는 모든 조합들이 큰 확률(overwhelming likelihood)로 사용되는 것을 보장하는 기하학적 패턴을 따른다. 하나의 벡터 내의 하나의 동일한 아이템에 대한 다수의 액세스들을 가지지 않는 것이 유익할 수 있는데, 이것은 메모리 액세스시의 증가된 패턴들을 가정하면 적대자에게 비예측성의 정도를 감소시키기 때문이다. 액세스가 모두 이루어지는 것을 보장하는 것과 동시에 무시할 만한 확률로 메모리에 대한 액세스의 전체 횟수를 제한하는 것이 유리하지만, 한번 이상 하나의 조합을 커버하는 것이 가능하다.
위치 x에서 locationH 벡터에 액세스하고, 위치 y에서 locationL 벡터에 액세스하고, 대각선을 따라 x-y 위치들을 액세스하는 것이 가능하다. 여기서, 제 1 시퀀스는 위치 (x,y)=(0,0)에서 개시될 수 있으며, 그 후에 x 및 y는 모두 동시에 루프의 반복시마다 1만큼 증가된다. 하나의 좌표가 벡터의 사이즈보다 커지는 경우, 좌표는 다시 0으로 설정된다. 그런 다음, 위치가 다시 (0,0)이 되면, 위치 (x,y)=(1,0)에서 개시하도록 변형될 수 있으며, 그 후에 (1,0)이 될 때까지 증가 시퀀스가 반복되고, 그때 (2,0)으로 변경된다. 이것은 메모리 액세스의 로케이션이 아니라, 어디에 메모리 액세스를 하여야 할지를 기술하는 벡터들 내의 위치이다.
그렇지 않으면, 로케이션 요소들의 벡터를 가짐으로써 어떤 셀들을 액세스할지에 대한 기술을 압축하는 것도 가능하며, 각각의 그러한 로케이션은 어드레스의 일부만을 기술하며, 어드레스의 남은 비트들은 다른 방식으로 연산되거나, 연산시에 프로그램 상태로부터 추론된다. 또한, 이들 2개의 방식들은 조합될 수 있으며, 적어도 부분적으로 미리 생성된 액세스 로케이션들의 다른 관련 기술들과도 조합될 수 있다.
타이밍에 대한 추가적인 정보
다양한 연산들에서, 연산의 타이밍, 부분적인 연산은 다음과 같다. (A) 일단 검사기에게 외부 검증기 또는 그 프록시로부터 모든 필요한 값들이 제공되면 타이머가 개시된다. 이들 값들은 통상적으로 시드값을 포함한다. (B) 검사기가 정확한 "상태" 값을 외부 검증기 또는 그의 프록시에 제출하는 때에 타이머가 정지된다(그리고 개시된 이래의 시간이 기록됨).
오래된 시간 간격이 종료하였을 때에는 새로운 시간 간격을 즉시 개시하는 것이 가능하다(상기의 단계 A에 의해서 개시가 표시되고, 단계 B에 의해 종료가 표시됨). 이들 간격들 간의 "리세스(recesses)"를 실시하는 것도 가능한데; 이들 리세스동안, 연산은 타이밍되지 않을 수도 있으며, 알고리즘은 외부 당사자들과의 통신, 2차 스토리지에의 판독 또는 기록, 또는 기타 기능과 같은 일상적인 유지를 수행할 수도 있다. 리세스는 알고리즘이 다음 타이밍 간격이 개시될 것을 요청하는 때에 종료할 수 있는데(예를 들면, 단계 A); 그 한가지 방식은 외부 검증기 또는 그 프록시에 다음 간격을 개시하라는 신호를 보냄으로써 행해지거나, 외부 검증기 또는 그 프록시가 새로운 간격을 개시할 것을 선택함으로써 행해질 수 있다.
표준 타이밍 간격들로서 리세스들을 실시하는 것도 가능한데, 그 길이는 검사된 디바이스의 보안 상태의 최종 결정에 중요하지 않다.
의사랜덤 액세스
몇몇 실시예들에서, 검사 프로세스의 일부로서 수행되는 선택적인 판독이 액세스된 위치들의 판독들 및 기록들의 시퀀스를 가지는 의사랜덤 순서의 액세스를 통해서 수행된다. 의사랜덤 액세스를 사용하는 다른 실시예가 이제 기술될 것이다. 먼저, 메모리 충진에 대한 예에 대한 설명이 주어질 것이다. 그 후에, 주기적인 타이밍의 일 예의 설명이 주어질 것이다.
고속 메모리 충진
아래의 메모리 인쇄 함수는 프리 RAM을 충진하는 데에 사용될 수 있다. 이것은 다른 타입들의 메모리가 액세스 시간 면에서 RAM에 필적하는 경우에는 다른 타입들의 메모리를 충진하는 데에도 이용될 수 있다. 의사랜덤 시퀀스는 의사 랜덤 순서로 프리 RAM내에서 XOR되며, 나중에 RAM의 컨텐츠의 키잉된 해시가 연산된다. RAM이 블록들 및 페이지들을 사용하지 않음에도 불구하고, 플래시에 대응하는 "가상" 블록들 및 페이지들로 분할될 수 있다. 플래시의 연속적인 청크들은 페이지 또는 블록으로 액세스되지 않는다. 이것은 플래시에서의 액세스를 느리게 하지만, RAM에서는 여전히 빠르다.
의사랜덤 스트링을 포함하는 프리 RAM을 충진하기 위해서는, 2개의 주요 단계들이 있다. 먼저, 셋업 함수가 실행된다. 이것은 의사랜덤 값들을 생성하기 위해 검증기로부터 획득된 시드를 사용하여 메모리 인쇄 함수에 의해서 이루어질 메모리 액세스들의 랜덤 순서를 결정한다. 이 테이블은 플래시에 저장되고, 셋업 함수에 의해서 사용되는 프로그램 공간은 셋업이 완료된 후에 클리어된다. 두번째로, 메모리 인쇄 함수가 사용되어 모든 프리 RAM을 충진한다. 그 실행이 개시부터 종료까지 더 짧은 간격들로 타이밍된다.
네트워크 지연 핸들링
감염에 의해 야기된 지연들은 내부 배선; USB와 같은 표준 네트워크 포트; 유선 인터페이스; WiFi 네트워크; LAN; 인터넷; 패킷 스위칭된 네트워크; 통신 네트워크; 또는 이들의 조합에 의해 클라이언트 디바이스에 접속된 디바이스로부터 측정될 수 있다. 이러한 통신 미디어의 일부는, 통계적 방법들을 사용한 측정으로부터 구별될 수 있는 지연들 및 편차를 도입할 수 있다.
검증은, 케이블, LAN, WAN, 블루투스, Wifi, 인터넷, 다른 네트워크, 또는 네트워크들의 조합을 사용해서 검사된 디바이스에 접속된 디바이스에 이해 이루어진다. 검증은, 수신된 결과와 연산된 결과를 비교함으로써 이루어지며, 적절한 시간 한도 내에 이것(그리고, 이것 전의 시퀀스)이 수신되었는지를 검증한다. 이러한 통신 미디어 모두는 레이턴시들을 발생시킬 수 있고, 일부는 패킷들을 드로핑할 수 있다.
(통상적인 네트워크 편차에 있어서) 1 및 5 사이에 더하여, "양호"이벤트가 10단위 시간을 취하는 순간을 가정한다.
그리고, 네트워크 편차에 있어서 1 내지 5에 더하여 "불량" 이벤트가 15 단위의 시간을 취하는 것을 가정한다.
이러한 시간들에서 일부 결과들의 수신을 고려한다:
시퀀스 a: 0, 12, 25, (결손 패킷), 50 - 최종 일부 결과가 결손 패킷을 "보증"하므로, 결손 패킷에도 불구하고 이러한 시퀀스는 아마도 양호할 것이다.
시퀀스 b: 0, 11, 30, 35, 50 - 4번째 패킷이 "너무 일찍" 수신되었으므로, 2번째와 3번째 패킷 사이의 긴 지연에도 불구하고, 이러한 시퀀스는 아마도 양호할 것이다.
시퀀스 c: 0, 11, 30, 45, 57 - 이러한 시퀀스는 2번째 패킷 이후의 긴 지연으로 인해 아마도 불량일 것이며, 지연을 설명하는 이벤트가 없다.
설명의 명료성을 위해 상술한 실시예가 다소 상세하게 설명되었지만, 본 발명은 제공된 상세 사항에 한정되지 않는다. 본 발명을 구현하는 다수의 대안적인 방법들이 있다. 개시된 실시예들은 예시적인 한정적인 것이 아니다.
102: 디바이스
104: 네트워크
106: 검증기
104: 네트워크
106: 검증기
Claims (40)
- 물리적 메모리; 및
프로세서로서,
하드웨어 구성에 대응하는 하나 이상의 하드웨어 파라미터들을 수신하고 초기화 정보를 수신하고;
상기 물리적 메모리를 선택적으로 판독하여 적어도 하나의 결과를 결정하고;
상기 결과를 검증기(verifier)에 제공하도록 구성되는, 상기 프로세서를 포함하는, 시스템. - 제 1 항에 있어서,
상기 초기화 정보는 시드(seed) 값을 포함하는, 시스템. - 제 1 항에 있어서,
상기 초기화 정보는 스텝 값을 포함하는, 시스템. - 제 1 항에 있어서,
상기 초기화 정보는 프록시(proxy)로부터 수신되는, 시스템. - 제 1 항에 있어서,
상기 초기화 정보는 외부 검증기로부터 수신되는, 시스템. - 제 1 항에 있어서,
상기 초기화 정보는 현상(phenomenon)의 표현인, 시스템. - 제 6 항에 있어서,
상기 초기화 정보는 상기 시스템에 포함된 가속도계(accelerometer)로부터 수신되는, 시스템. - 제 6 항에 있어서,
상기 프로세스는 현상을 측정함으로써 상기 초기화 정보를 적어도 일부 수신하도록 구성되는, 시스템. - 제 1 항에 있어서,
상기 프로세서는 함수에 따라 중복 기입되는 상기 물리적 메모리의 부분을 결정하도록 추가적으로 구성되는, 시스템. - 제 1 항에 있어서,
상기 프로세서는 함수에 따라 상기 물리적 메모리의 부분에 기입하도록 추가적으로 구성되는, 시스템. - 제 1 항에 있어서,
상기 프로세서는 스텝 카운터(step counter)의 적어도 일부에 기초하여 상기 물리적 메모리를 선택적으로 판독하도록 구성되는, 시스템. - 제 11 항에 있어서,
상기 스텝 카운터는 상기 물리적 메모리의 사이즈의 측정에 대해 상대적으로 주요한, 시스템. - 제 11 항에 있어서,
복수의 프로세서를 추가로 포함하고,
상기 스텝 카운터는 프로세서들의 수만큼 곱하여져서 상기 물리적 메모리의 사이즈의 측정에 대해 상대적으로 주요한, 시스템 - 제 1 항에 있어서,
상기 프로세서는 식별 함수가 아니고 상기 물리적 메모리의 일부를 입력으로서 취하는 함수를 사용해서 상기 결과를 적어도 일부 결정하도록 구성되는, 시스템. - 제 1 항에 있어서,
상기 프로세서는 어큐뮬레이터(accumulator)를 사용해서 상기 결과를 적어도 일부 결정하도록 구성되는, 시스템. - 제 15 항에 있어서,
상기 어큐뮬레이터는 비선형 함수를 포함하는, 시스템. - 제 15 항에 있어서,
상기 어큐뮬레이터는 XOR 및 로테이트(rotate)를 사용하는, 시스템. - 제 1 항에 있어서,
상기 프로세서는 정보를 프록시에 제공함으로써 상기 검증기에 상기 결과를 적어도 일부 제공하도록 구성되는, 시스템. - 하드웨어 구성에 대응하는 하나 이상의 하드웨어 파라미터들을 수신하고 초기화 정보를 수신하는 단계;
물리적 메모리를 선택적으로 판독하여 적어도 하나의 결과를 결정하는 단계; 및
상기 결과를 검증기에 제공하는 단계를 포함하는, 방법. - 컴퓨터 판독가능 저장 매체에 구현된 컴퓨터 프로그램 제품에 있어서,
하드웨어 구성에 대응하는 하나 이상의 하드웨어 파라미터들을 수신하고 초기화 정보를 수신하는 단계;
물리적 메모리를 선택적으로 판독하여 적어도 하나의 결과를 결정하는 단계; 및
상기 결과를 검증기에게 제공하는 단계에 대한 컴퓨터 명령을 포함하는, 컴퓨터 프로그램 제품. - 물리적 메모리; 및
프로세서로서,
하드웨어 구성에 대응하는 하나 이상의 하드웨어 파라미터들을 수신하고;
상기 물리적 메모리에 대한 변형들(modifications)의 시퀀스를 수행하고;
결과들을 검증기에 제공하도록 구성되는, 상기 프로세서를 포함하는, 시스템. - 제 21 항에 있어서,
상기 검증기는 적어도 부분적으로 수신된 결과들에 기초하여, 구조적 메모리 변경들의 예측된 시퀀스가 상기 프로세서에 의해 이루어졌는지 여부를 결정하도록 구성되는, 시스템. - 제 22 항에 있어서,
상기 결정은 적어도 부분적으로 변형들의 시퀀스의 수행과 연관된 타이밍 정보에 기초하는, 시스템. - 제 22 항에 있어서,
상기 결정은 적어도 부분적으로 상기 디바이스로부터 수신된 결과의 정확함(correctness)에 기초하는, 시스템. - 제 21 항에 있어서,
상기 검증기는 디바이스에서 상기 프로세서와 함께 배치되는, 시스템. - 제 25 항에 있어서,
상기 검증기는 가입자 아이덴티티 모듈에 포함되는, 시스템. - 제 21 항에 있어서,
상기 검증기는 네트워크 접속을 통해 상기 프로세서와 통신하는, 시스템. - 제 21 항에 있어서,
상기 프로세서는 또한 상기 검증기로부터 시드를 얻도록 구성되는, 시스템. - 제 21 항에 있어서,
상기 변형들의 시퀀스는 적어도 부분적으로 상기 검증기로부터 취득된 입력에 의존하는, 시스템. - 제 21 항에 있어서,
상기 하나 이상의 하드웨어 파라미터들은 메모리량인, 시스템. - 제 21 항에 있어서,
상기 하나 이상의 하드웨어 파라미터들은 메모리 속도인, 시스템. - 제 21 항에 있어서,
상기 프로세스는 회피 소프트웨어가 상기 물리적 메모리에서 활동하고 있지 않다고 결정되면, 스캔을 수행하도록 구성되는, 시스템. - 제 32 항에 있어서,
상기 스캔은 비허가(unlicensed) 소프트웨어에 대한 스캔을 포함하는, 시스템. - 제 21 항에 있어서,
상기 메모리는 비밀 데이터를 포함하고, 결과들을 상기 검증기에게 제공하는 것은 상기 비밀 데이터를 손상시키지 않는, 시스템. - 제 21 항에 있어서,
상기 프로세서는 모바일 폰에 포함되는, 시스템. - 하드웨어 구성에 대응하는 하나 이상의 하드웨어 파라미터들을 수신하는 단계;
물리적 메모리에 대한 변형들의 시퀀스를 수행하는 단계; 및
결과를 검증기에게 제공하는 단계를 포함하는, 방법. - 제 36 항에 있어서,
상기 검증기는 물리적 메모리 변형들의 예측된 시퀀스가 이루어졌는지 여부를 적어도 부분적으로 수신된 결과에 기초하여 결정하도록 구성되는, 방법. - 컴퓨터 판독가능 저장 매체에 구현된 컴퓨터 프로그램 제품에 있어서,
하드웨어 구성에 대응하는 하나 이상의 하드웨어 파라미터들을 수신하고;
물리적 메모리에 대한 변형들의 시퀀스를 수행하고;
결과를 검증기에게 제공하기 위한 컴퓨터 명령들을 포함하는, 컴퓨터 프로그램 제품. - 프로세서로서,
디바이스에 의한, 상기 디바이스에 포함된 메모리에 대한 변형들의 시퀀스의 수행과 연관된 하나 이상의 결과들을 상기 디바이스로부터 수신하고;
상기 하나 이상의 결과들이 상기 디바이스에 포함된 상기 메모리에 회피 소프트웨어가 없다는 것을 결정하고;
상기 결정이 이루어진 후에 상기 디바이스의 스캔을 개시하도록 구성되는, 상기 프로세서, 및
상기 프로세서에 연결되고, 상기 프로세서에 명령들을 제공하도록 구성되는, 메모리를 포함하는, 시스템. - 프로세서로서,
디바이스가 결과를 결정하라는 요구를 개시하고;
상기 디바이스로부터 결과를 수신하고;
상기 디바이스의 보안 상태를, 적어도 부분적으로 상기 결과와 상기 디바이스가 상기 결과를 제공하는 데 걸리는 시간의 길이에 기초하여 결정하도록 구성되는, 상기 프로세서, 및
상기 프로세서에 연결되고, 상기 프로세서에 명령들을 제공하도록 구성되는, 메모리를 포함하는, 시스템.
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US23460409P | 2009-08-17 | 2009-08-17 | |
US61/234,604 | 2009-08-17 | ||
US12/580,891 | 2009-10-16 | ||
US12/580,891 US8375442B2 (en) | 2009-08-17 | 2009-10-16 | Auditing a device |
US25704309P | 2009-11-02 | 2009-11-02 | |
US61/257,043 | 2009-11-02 | ||
US28636909P | 2009-12-14 | 2009-12-14 | |
US61/286,369 | 2009-12-14 | ||
US12/714,547 US8544089B2 (en) | 2009-08-17 | 2010-03-01 | Auditing a device |
US12/714,547 | 2010-03-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120066018A true KR20120066018A (ko) | 2012-06-21 |
KR101547165B1 KR101547165B1 (ko) | 2015-08-25 |
Family
ID=43589382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127006902A KR101547165B1 (ko) | 2009-08-17 | 2010-08-11 | 디바이스 검사를 위한 장치, 방법 및 저장매체 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8544089B2 (ko) |
EP (1) | EP2467793B1 (ko) |
JP (1) | JP5646631B2 (ko) |
KR (1) | KR101547165B1 (ko) |
CN (3) | CN102549576B (ko) |
WO (1) | WO2011022040A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210155340A (ko) * | 2020-06-15 | 2021-12-22 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 손상된 저장 디바이스 펌웨어의 검출 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352795B2 (en) * | 2009-02-11 | 2013-01-08 | Honeywell International Inc. | High integrity processor monitor |
US8949989B2 (en) | 2009-08-17 | 2015-02-03 | Qualcomm Incorporated | Auditing a device |
US8544089B2 (en) | 2009-08-17 | 2013-09-24 | Fatskunk, Inc. | Auditing a device |
US20110141967A1 (en) * | 2009-12-14 | 2011-06-16 | Lane Sean L | Methods and apparatus related to substantially real-time data transmission and analysis for sensors |
US9459983B2 (en) * | 2010-12-31 | 2016-10-04 | Open Invention Network, Llc | Method and apparatus of establishing customized network monitoring criteria |
KR101352132B1 (ko) * | 2011-03-24 | 2014-01-14 | 삼성전자서비스 주식회사 | 스마트폰의 소프트웨어 조작판별시스템 |
US8661549B2 (en) * | 2012-03-02 | 2014-02-25 | Apple Inc. | Method and apparatus for obfuscating program source codes |
US20140165197A1 (en) * | 2012-12-06 | 2014-06-12 | Empire Technology Development, Llc | Malware attack prevention using block code permutation |
US10163370B2 (en) * | 2013-07-18 | 2018-12-25 | Nippon Telegraph And Telephone Corporation | Decoding apparatus, decoding capability providing apparatus, method thereof and program |
US9705678B1 (en) * | 2014-04-17 | 2017-07-11 | Symantec Corporation | Fast CAN message authentication for vehicular systems |
US9330030B2 (en) * | 2014-06-24 | 2016-05-03 | Google Inc. | Bridge decoder for a vehicle infotainment system |
JP2016053956A (ja) * | 2014-09-02 | 2016-04-14 | エスケー インフォセック カンパニー リミテッドSK INFOSEC Co.,Ltd. | ウェブ基盤の悪性コード探知システムおよび方法 |
CN105471580B (zh) * | 2014-09-11 | 2021-12-24 | 苏州海博智能系统有限公司 | 一种复核签名方法和设备 |
KR102403063B1 (ko) * | 2014-12-05 | 2022-05-30 | 삼성전자주식회사 | 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법 |
US10542118B2 (en) * | 2015-09-24 | 2020-01-21 | Intel Corporation | Facilitating dynamic filtering and local and/or remote processing of data based on privacy policies and/or user preferences |
US20170116584A1 (en) * | 2015-10-21 | 2017-04-27 | Mastercard International Incorporated | Systems and Methods for Identifying Payment Accounts to Segments |
US20170116604A1 (en) | 2015-10-21 | 2017-04-27 | Mastercard International Incorporated | Systems and Methods for Identifying Payment Accounts to Segments |
EP3179395A1 (en) * | 2015-12-10 | 2017-06-14 | Thomson Licensing | Device and method for executing protected ios software modules |
US10180829B2 (en) * | 2015-12-15 | 2019-01-15 | Nxp Usa, Inc. | System and method for modulo addressing vectorization with invariant code motion |
SG11201804327TA (en) * | 2015-12-19 | 2018-07-30 | Bitdefender Ipr Man Ltd | Dual memory introspection for securing multiple network endpoints |
US10367645B2 (en) * | 2016-10-26 | 2019-07-30 | International Business Machines Corporation | Proof-of-work for smart contracts on a blockchain |
RU2673711C1 (ru) * | 2017-06-16 | 2018-11-29 | Акционерное общество "Лаборатория Касперского" | Способ обнаружения аномальных событий на основании набора сверток безопасных событий |
US10733298B2 (en) * | 2017-07-31 | 2020-08-04 | Dell Products, L.P. | System management audit log snapshot |
CN110928537B (zh) * | 2018-09-19 | 2023-08-11 | 百度在线网络技术(北京)有限公司 | 模型评测方法、装置、设备及计算机可读介质 |
EP3664358A1 (en) * | 2018-12-03 | 2020-06-10 | Nagravision S.A. | Methods and devices for remote integrity verification |
CN109743289B (zh) * | 2018-12-10 | 2021-05-14 | 北京链化未来科技有限公司 | 一种基于神经网络的数据验证方法、装置及电子设备 |
CA3128973A1 (en) | 2019-03-04 | 2020-09-10 | Bhaskar Bhattacharyya | Data compression and communication using machine learning |
US11880457B2 (en) * | 2019-09-27 | 2024-01-23 | Micron Technology, Inc. | Device intrusion detection via variable code comparison |
US12099997B1 (en) | 2020-01-31 | 2024-09-24 | Steven Mark Hoffberg | Tokenized fungible liabilities |
US11266911B1 (en) | 2020-09-21 | 2022-03-08 | Nintendo Co., Ltd. | Systems and method for identifying modified program data |
KR102354858B1 (ko) | 2021-03-03 | 2022-02-08 | 쿠팡 주식회사 | 아이템 판매 정보 처리를 위한 전자 장치 및 그 방법 |
US20230297681A1 (en) * | 2022-03-16 | 2023-09-21 | Bank Of America Corporation | System and Method for Automatic Identification of Unauthorized Updates to Internet of Things Devices |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AUPQ131399A0 (en) * | 1999-06-30 | 1999-07-22 | Silverbrook Research Pty Ltd | A method and apparatus (NPAGE02) |
DE3913263A1 (de) * | 1989-04-22 | 1990-10-25 | Teves Gmbh Alfred | Unterdruck-bremskraftverstaerker fuer kraftfahrzeuge |
US5892900A (en) * | 1996-08-30 | 1999-04-06 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
KR100204542B1 (ko) * | 1995-11-09 | 1999-06-15 | 윤종용 | 멀티 서브워드라인 드라이버를 갖는 반도체 메모리장치 |
US6335927B1 (en) * | 1996-11-18 | 2002-01-01 | Mci Communications Corporation | System and method for providing requested quality of service in a hybrid network |
JP3411186B2 (ja) * | 1997-06-06 | 2003-05-26 | シャープ株式会社 | 不揮発性半導体記憶装置 |
US6901518B1 (en) * | 1999-04-08 | 2005-05-31 | Sun Microsystems, Inc. | Method and system for establishing trust in downloaded proxy code |
US7315826B1 (en) * | 1999-05-27 | 2008-01-01 | Accenture, Llp | Comparatively analyzing vendors of components required for a web-based architecture |
US6769066B1 (en) * | 1999-10-25 | 2004-07-27 | Visa International Service Association | Method and apparatus for training a neural network model for use in computer network intrusion detection |
US7185145B2 (en) * | 2001-06-04 | 2007-02-27 | Renesas Technology Corp. | Memory card |
US8352582B2 (en) * | 2001-06-28 | 2013-01-08 | Koninklijke Philips Electronics N.V. | Temporal proximity to verify physical proximity |
US9392002B2 (en) * | 2002-01-31 | 2016-07-12 | Nokia Technologies Oy | System and method of providing virus protection at a gateway |
JP2004104539A (ja) * | 2002-09-11 | 2004-04-02 | Renesas Technology Corp | メモリカード |
CA2508141C (en) * | 2002-12-02 | 2009-11-03 | Silverbrook Research Pty Ltd | Dead nozzle compensation |
US7597250B2 (en) * | 2003-11-17 | 2009-10-06 | Dpd Patent Trust Ltd. | RFID reader with multiple interfaces |
DE102004028032B4 (de) * | 2004-06-09 | 2008-04-17 | Perkinelmer Optoelectronics Gmbh & Co.Kg | Sensorelement |
US7454233B2 (en) | 2004-09-23 | 2008-11-18 | Gemalto Inc | Communications of UICC in mobile devices using internet protocols |
US8887287B2 (en) * | 2004-10-27 | 2014-11-11 | Alcatel Lucent | Method and apparatus for software integrity protection using timed executable agents |
US7793851B2 (en) * | 2005-05-09 | 2010-09-14 | Dynamics Inc. | Dynamic credit card with magnetic stripe and embedded encoder and methods for using the same to provide a copy-proof credit card |
US7770785B2 (en) * | 2005-06-13 | 2010-08-10 | Qualcomm Incorporated | Apparatus and methods for detection and management of unauthorized executable instructions on a wireless device |
US20080229415A1 (en) * | 2005-07-01 | 2008-09-18 | Harsh Kapoor | Systems and methods for processing data flows |
IL181041A0 (en) * | 2007-01-29 | 2007-07-04 | Deutsche Telekom Ag | Improved method and system for detecting malicious behavioral patterns in a computer, using machine learning |
EP1855223A1 (en) * | 2006-05-12 | 2007-11-14 | Telefonaktiebolaget LM Ericsson (publ) | Extending the DRM realm to external devices |
EP1865656A1 (en) * | 2006-06-08 | 2007-12-12 | BRITISH TELECOMMUNICATIONS public limited company | Provision of secure communications connection using third party authentication |
DE102006027200A1 (de) * | 2006-06-12 | 2007-12-27 | Giesecke & Devrient Gmbh | Datenträger und Verfahren zur kontaktlosen Kommunikation zwischen dem Datenträger und einem Lesegerät |
US20080005797A1 (en) | 2006-06-30 | 2008-01-03 | Microsoft Corporation | Identifying malware in a boot environment |
US20080030456A1 (en) * | 2006-07-19 | 2008-02-07 | Sony Ericsson Mobile Communications Ab | Apparatus and Methods for Providing Motion Responsive Output Modifications in an Electronic Device |
US20120129452A1 (en) * | 2006-09-24 | 2012-05-24 | Rfcyber Corp. | Method and apparatus for provisioning applications in mobile devices |
US8118218B2 (en) * | 2006-09-24 | 2012-02-21 | Rich House Global Technology Ltd. | Method and apparatus for providing electronic purse |
WO2008048665A2 (en) * | 2006-10-18 | 2008-04-24 | University Of Virginia Patent Foundation | Method, system, and computer program product for malware detection analysis, and response |
US8978125B2 (en) * | 2006-10-19 | 2015-03-10 | Oracle International Corporation | Identity controlled data center |
DE102006057093B4 (de) * | 2006-12-04 | 2008-10-02 | Infineon Technologies Ag | Vorrichtung zur Auswahl einer virtuellen Kartenanwendung |
DE602006008166D1 (de) * | 2006-12-21 | 2009-09-10 | Ericsson Telefon Ab L M | Verschleierung von Computerprogrammcodes |
FR2915337B1 (fr) * | 2007-04-19 | 2009-06-05 | Bouygues Telecom Sa | Procede et systeme de securisation d'acces interne de telephone mobile, telephone mobile et terminal correspondants. |
KR101107850B1 (ko) * | 2007-07-24 | 2012-01-31 | 엔엑스피 비 브이 | 전송 방법, 전송 시스템, 신뢰받는 서비스 관리자, 컴퓨터 판독가능 매체 및 모바일 폰 |
CN101377756B (zh) * | 2007-08-30 | 2011-04-27 | 联想(北京)有限公司 | 一种评估计算机系统老化的方法 |
EP2191377A1 (en) * | 2007-09-03 | 2010-06-02 | Nxp B.V. | Mobile communication device and method for swapping mifare applications |
US7967215B2 (en) * | 2008-04-18 | 2011-06-28 | Vivotech Inc. | Systems, methods, and computer program products for supporting multiple contactless applications using different security keys |
CN100585609C (zh) * | 2008-04-30 | 2010-01-27 | 北京飞天诚信科技有限公司 | 一种确保操作环境安全的系统和方法 |
US7917820B1 (en) * | 2008-05-20 | 2011-03-29 | Xilinx, Inc. | Testing an embedded core |
US8364123B2 (en) * | 2009-02-25 | 2013-01-29 | Apple Inc. | Managing notification messages |
GB2461870B (en) * | 2008-07-14 | 2012-02-29 | F Secure Oyj | Malware detection |
US8578483B2 (en) * | 2008-07-31 | 2013-11-05 | Carnegie Mellon University | Systems and methods for preventing unauthorized modification of an operating system |
US8243541B2 (en) * | 2008-12-19 | 2012-08-14 | Oracle America, Inc. | Methods and apparatuses for improving reduced power operations in embedded memory arrays |
CA2789243A1 (en) * | 2009-03-13 | 2010-09-16 | Rutgers, The State University Of New Jersey | Systems and methods for the detection of malware |
US8607340B2 (en) * | 2009-07-21 | 2013-12-10 | Sophos Limited | Host intrusion prevention system using software and user behavior analysis |
US8375442B2 (en) | 2009-08-17 | 2013-02-12 | Fatskunk, Inc. | Auditing a device |
US8370935B1 (en) * | 2009-08-17 | 2013-02-05 | Fatskunk, Inc. | Auditing a device |
US8949989B2 (en) | 2009-08-17 | 2015-02-03 | Qualcomm Incorporated | Auditing a device |
US8544089B2 (en) | 2009-08-17 | 2013-09-24 | Fatskunk, Inc. | Auditing a device |
US8468602B2 (en) * | 2010-03-08 | 2013-06-18 | Raytheon Company | System and method for host-level malware detection |
US20130007848A1 (en) * | 2011-07-01 | 2013-01-03 | Airtight Networks, Inc. | Monitoring of smart mobile devices in the wireless access networks |
US9032520B2 (en) * | 2012-02-22 | 2015-05-12 | iScanOnline, Inc. | Remote security self-assessment framework |
WO2013190545A1 (en) * | 2012-06-17 | 2013-12-27 | Skycure Ltd | Access control system for a mobile device |
US8910263B1 (en) * | 2013-09-17 | 2014-12-09 | Iboss, Inc. | Mobile device management profile distribution |
-
2010
- 2010-03-01 US US12/714,547 patent/US8544089B2/en active Active
- 2010-08-11 EP EP10810267.4A patent/EP2467793B1/en not_active Not-in-force
- 2010-08-11 WO PCT/US2010/002214 patent/WO2011022040A1/en active Application Filing
- 2010-08-11 KR KR1020127006902A patent/KR101547165B1/ko not_active IP Right Cessation
- 2010-08-11 CN CN201080046637.4A patent/CN102549576B/zh not_active Expired - Fee Related
- 2010-08-11 CN CN201610205761.XA patent/CN105787372A/zh active Pending
- 2010-08-11 CN CN201610205762.4A patent/CN105868631A/zh active Pending
- 2010-08-11 JP JP2012525523A patent/JP5646631B2/ja not_active Expired - Fee Related
-
2013
- 2013-08-14 US US13/967,105 patent/US9202051B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210155340A (ko) * | 2020-06-15 | 2021-12-22 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 손상된 저장 디바이스 펌웨어의 검출 |
US11663328B2 (en) | 2020-06-15 | 2023-05-30 | Western Digital Technologies, Inc. | Detection of compromised storage device firmware |
Also Published As
Publication number | Publication date |
---|---|
US20140101765A1 (en) | 2014-04-10 |
WO2011022040A1 (en) | 2011-02-24 |
EP2467793A1 (en) | 2012-06-27 |
CN105787372A (zh) | 2016-07-20 |
US20110041178A1 (en) | 2011-02-17 |
CN102549576B (zh) | 2016-05-04 |
EP2467793A4 (en) | 2013-10-23 |
CN102549576A (zh) | 2012-07-04 |
JP2013502639A (ja) | 2013-01-24 |
US9202051B2 (en) | 2015-12-01 |
EP2467793B1 (en) | 2016-10-26 |
CN105868631A (zh) | 2016-08-17 |
JP5646631B2 (ja) | 2014-12-24 |
KR101547165B1 (ko) | 2015-08-25 |
US8544089B2 (en) | 2013-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101547165B1 (ko) | 디바이스 검사를 위한 장치, 방법 및 저장매체 | |
US8949989B2 (en) | Auditing a device | |
US8370935B1 (en) | Auditing a device | |
US9411955B2 (en) | Server-side malware detection and classification | |
US7953980B2 (en) | Signed manifest for run-time verification of software program identity and integrity | |
US8364973B2 (en) | Dynamic generation of integrity manifest for run-time verification of software program | |
US9690498B2 (en) | Protected mode for securing computing devices | |
US9177153B1 (en) | Verifying integrity and guaranteeing execution of code on untrusted computer platform | |
US8285999B1 (en) | System and method for authenticating remote execution | |
US8375442B2 (en) | Auditing a device | |
Jakobsson et al. | Practical and secure software-based attestation | |
Chen et al. | Secure and efficient software-based attestation for industrial control devices with arm processors | |
Carpent et al. | Temporal consistency of integrity-ensuring computations and applications to embedded systems security | |
Jakobsson et al. | Retroactive detection of malware with applications to mobile platforms | |
Garay et al. | Software integrity protection using timed executable agents | |
Neto et al. | Isc-flat: On the conflict between control flow attestation and real-time operations | |
US11886581B1 (en) | Rapid verification of executing processes | |
Jakobsson et al. | Assured detection of malware with applications to mobile platforms | |
Ahmed et al. | SAPEM: Secure Attestation of Program Execution and Program Memory for IoT Applications. | |
Jakobsson et al. | Mobile malware: Why the traditional AV paradigm is doomed, and how to use physics to detect undesirable routines | |
Debes | Convincing Without Revealing: Strategies for Facilitating Remote Attestation under Weakened Trust Assumptions using Privacy-Enhancing Technologies | |
WO2024083346A1 (en) | Data processing apparatus and method for runtime attestation | |
IZZO | Global protection for transient attacks | |
Dickens III | Capitalizing on Security, Performance, and Energy Tradeoffs in Full Drive Encryption Schemes for Fun and Profit | |
Arthur et al. | Mitigating security risks in systems that support pervasive services and computing: Access-driven verification, validation and testing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
A107 | Divisional application of patent | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
N231 | Notification of change of applicant | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |