KR20130094241A - 하드웨어 센서 출력의 분석을 포함하는 공격 차단을 위한 샘플링 레이트 변경 - Google Patents

하드웨어 센서 출력의 분석을 포함하는 공격 차단을 위한 샘플링 레이트 변경 Download PDF

Info

Publication number
KR20130094241A
KR20130094241A KR1020130014558A KR20130014558A KR20130094241A KR 20130094241 A KR20130094241 A KR 20130094241A KR 1020130014558 A KR1020130014558 A KR 1020130014558A KR 20130014558 A KR20130014558 A KR 20130014558A KR 20130094241 A KR20130094241 A KR 20130094241A
Authority
KR
South Korea
Prior art keywords
sensor
hardware
operating system
event
driver
Prior art date
Application number
KR1020130014558A
Other languages
English (en)
Other versions
KR101451000B1 (ko
Inventor
글렌 다니엘 워스터
Original Assignee
리서치 인 모션 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 리서치 인 모션 리미티드 filed Critical 리서치 인 모션 리미티드
Publication of KR20130094241A publication Critical patent/KR20130094241A/ko
Application granted granted Critical
Publication of KR101451000B1 publication Critical patent/KR101451000B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/83Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/031Protect user input by software means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

하드웨어 센서(60, 62, 64, 66) 및 하드웨어 사용자 입력 컴포넌트(22, 32, 42, 102, 202, 302, 306)는 휴대용 전자 장치(10, 100, 200, 300) 내에 통합된다. 하드웨어 센서는 그 환경 내의 장치의 배향 또는 움직임 또는 배향과 움직임 둘 다를 나타내는 하드웨어 센서 출력을 생성하도록 동작가능하다. 하드웨어 사용자 입력 컴포넌트는 터치를 통한 사용자 입력을 수락하도록 동작가능한 다수의 엘리먼트(24, 34, 44, 104, 204, 304)를 갖는다. 사용자 입력 드라이버(26, 36, 46) 및 장치의 오퍼레이팅 시스템(18)은 함께 엘리먼트와 관련된 터치 이벤트를 검출하도록 동작가능하다. 소프트웨어 애플리케이션(20)은 프로세스로서 장치의 프로세서(14)에 의해 실행가능하다. 센서 드라이버(61, 63, 65, 67) 또는 오퍼레이팅 시스템 또는 센서 드라이버와 오퍼레이팅 시스템 둘 다는 만약에 있다면 어떤 하드웨어 센서 출력이 프로세스에 의해 수신가능한지를 제어하도록 구성된다. 이 제어는 하드웨어 센서 출력의 분석에 기초하여 하드웨어 사용자 입력 컴포넌트의 다수의 엘리먼트를 통해 어떤 입력이 이루어지는지를 추론하도록 설계된 공격을 방지할 수 있다.

Description

하드웨어 센서 출력의 분석을 포함하는 공격 차단을 위한 샘플링 레이트 변경{ALTERING SAMPLING RATE TO THWART ATTACKS THAT INVOLVE ANALYZING HARDWARE SENSOR OUTPUT}
본 발명은 휴대용 전자 장치에 관한 것이다.
휴대용 전자 장치는, 그 환경 내의 장치의 배향을 지시하거나 그 환경 내의 장치의 움직임을 지시하거나 그 환경 내의 장치의 배향 및 움직임을 지시하는 하드웨어 센서 출력을 생성하도록 동작하는 하나 이상의 하드웨어 센서를 포함할 수 있다. 전통적으로, 이들 하드웨어 센서로부터의 출력으로의 액세스는 제한되지 않았다.
하드웨어 센서 출력의 분석을 포함하는 공격을 차단할 수 있는 휴대용 전자 장치가 필요하다.
하드웨어 센서 및 하드웨어 사용자 입력 컴포넌트는 휴대용 전자 장치 내에 통합된다. 하드웨어 센서는 그 환경 내의 장치의 배향 또는 움직임 또는 배향 및 움직임을 지시하는 하드웨어 센서 출력을 생성하도록 동작가능하다. 하드웨어 사용자 입력 컴포넌트는 터치를 통한 사용자 입력을 수락하도록 동작가능한 다수의 엘리먼트를 갖는다. 사용자 입력 드라이버 및 장치의 오퍼레이팅 시스템은 함께 엘리먼트와 관련된 터치 이벤트를 검출하도록 동작가능하다. 장치의 메모리에 저장된 소프트웨어 애플리케이션은 프로세스로서 장치의 프로세서에 의해 실행가능하다. 센서 드라이버 또는 오퍼레이팅 시스템 또는 센서 드라이버 및 오퍼레이팅 시스템은 만약에 있다면 어떤 하드웨어 센서 출력이 프로세스에 의해 수신가능한지를 제어하도록 구성된다. 이 제어는 하드웨어 센서 출력의 분석에 기초하여 하드웨어 사용자 입력 컴포넌트의 다수의 엘리먼트를 통해 어떤 입력이 이루어지는지를 추론하도록 설계된 공격을 방지할 수 있다.
본 발명에 따른 휴대용 전자 장치는 하드웨어 센서 출력의 분석에 기초하여 하드웨어 사용자 입력 컴포넌트의 다수의 엘리먼트를 통해 어떤 입력이 이루어지는지를 추론하도록 설계된 공격을 방지할 수 있다
실시예는 첨부된 도면을 참조하여 예로서 설명하지만 이에 제한되지 않는다. 동일한 참조 번호는 유사 또는 동일한 엘리먼트를 지시한다.
도 1은 예시적인 휴대용 전자 장치 및 장치 내에 통합된 다수의 키를 갖는 예시적인 물리적 촉각 키보드를 나타내는 도면.
도 2는 예시적인 휴대용 전자 장치 및 장치 내에 통합된 예시적인 터치 스크린을 나타내는 도면.
도 3은 예시적인 휴대용 전자 장치, 장치 내에 통합된 다수의 키를 갖는 물리적 촉각 키보드 및 장치 내에 통합된 예시적인 터치 스크린을 나타내는 도면.
도 4a, 도 4b, 도 4c, 도 4d, 도 4e 및 도 4f는 타임라인을 따라 예시적인 휴대용 전자 장치의 예시적인 스크린샷의 타이밍, 예시적인 검출 터치 이벤트 및 그 각각의 터치 이벤트 윈도우의 타이밍 및 실제 하드웨어 센서 출력의 예시적인 샘플의 타이밍을 나타내는 도면.
도 5는 휴대용 전자 장치 내의 자이로스코프에 의해 생성된 예시적인 실제 자이로스코프 데이터 및 예시적인 페이크(fake) 자이로스코프 데이터를 나타내는 도면.
도 6은 휴대용 전자 장치 내의 자이로스코프에 의해 생성된 예시적인 실제 자이로스코프 데이터 및 예시적인 페이크 자이로스코프 데이터를 나타내는 도면.
도 7a는 휴대용 전자 장치 내의 가속계에 의해 생성된 예시적인 실제 가속계 데이터를 나타내고, 도 7b는 일부가 예시적인 실제 가속계 데이터이고 일부가 예시적인 페이크 가속계 데이터인 예시적인 가속계 데이터를 나타내는 도면.
도 8은 예시적인 휴대용 전자 장치의 간략화된 기능 블록도.
도 9는 예시적인 휴대용 전자 장치 및 3개의 좌표 시스템을 나타내는 도면.
첨부 A는 임의의 하드웨어 센서 출력이 동기 통신을 이용하여 수신가능하면 센서 드라이버가 무엇을 어떻게 제어할 수 있는지에 대한 의사 코드 예를 제공한다.
첨부 B는 임의의 하드웨어 센서 출력이 비동기 통신을 이용하여 수신가능하면 센서 드라이버가 무엇을 어떻게 제어할 수 있는지에 대한 의사 코드 예를 제공한다.
설명의 간략화 및 명료화를 위하여 도면에 도시된 엘리먼트들은 반드시 일정한 비율로 그려지지 않는다. 예를 들어, 엘리먼트 중의 일부의 치수는 명료화를 위하여 다른 엘리먼트에 비하여 과장될 수 있다.
휴대용 전자 장치는 터치를 통한 사용자 입력을 수락할 수 있도록 동작가능한 다수의 엘리먼트를 갖는 하드웨어 사용자 입력 컴포넌트를 가질 수 있다. 장치의 메모리는 하드웨어 사용자 입력 컴포넌트와 인터페이싱하기 위하여 장치의 오퍼레이팅 시스템에 의해 사용되는 사용자 입력 드라이버를 저장한다. 사용자 입력 드라이버 및 오퍼레이팅 시스템은 함께 엘리먼트의 터치 이벤트를 검출하도록 동작가능하다.
예를 들어, 하드웨어 사용자 입력 컴포넌트는 다수의 키를 갖는 물리적 촉각 키보드일 수 있고, 사용자 입력 드라이버는 키보드용 소프트웨어 드라이버일 수 있다. 소프트웨어 드라이버 및 오퍼레이팅 시스템은 함께 키 누름 또는 키 해제 등의 터치 키보드 이벤트를 검출하도록 동작가능하다. 도 1은 예시적인 휴대용 전자 장치(100)를 나타낸다. 다수의 키(104)를 갖는 물리적 촉각 키보드(102)는 휴대용 전자 장치(100)에 통합된다. 도 1에 도시되지 않지만, 키보드(102)용 소프트웨어 드라이버가 휴대용 전자 장치(100)의 메모리에 저장된다.
다른 예에서, 하드웨어 사용자 입력 컴포넌트는 다수의 터치 센서를 갖는 터치 스크린일 수 있고, 사용자 입력 드라이버는 터치 센서용 소프트웨어 드라이버일 수 있다. 터치 스크린은 손가락이나 손 또는 스타일러스 또는 다른 툴에 의해 터치될 수 있다. 소프트웨어 드라이버 및 오퍼레이팅 시스템은 함께 터치 스크린 누름 또는 터치 스크린 해제 또는 터치 스크린 글라이드(glide) 또는 드래그(drag) 등의 터치 센서의 터치 이벤트를 검출하도록 동작가능하다. 이 예에서, 장치의 메모리는 터치 스크린 상에 이미지를 디스플레이하는 디스플레이 드라이버를 저장한다. 다수의 키를 갖는 가상 키보드의 이미지가 터치 스크린 상에 디스플레이되는 이벤트에서, 터치 이벤트는 가상 키보드 내의 키에 대한 키 누름 또는 키 해제 또는 (키를 통해 이동하면서 손가락 또는 스타일러스 또는 다른 지시기의 방향을 변경하는) 키 스와이프(swipe) 등의 터치 키보드 이벤트를 포함할 수 있다. 도 2는 예시적인 휴대용 전자 장치(200)를 나타낸다. 터치 스크린(202)은 휴대용 전자 장치(200) 내에 통합된다. 도 2에 도시된 예에서, 다수의 키를 갖는 가상 키보드의 이미지(204)가 터치 스크린(202) 상에 디스플레이된다. 도 2에 도시되지 않지만, 터치 스크린(202)용 소프트웨어 드라이버가 휴대용 전자 장치(200)의 메모리에 저장된다.
또 다른 예에서, 장치는 다수의 키를 갖는 물리적 촉각 키보드 및 다수의 터치 센서를 갖는 터치 스크린을 가질 수 있다. 이 예에서, 장치의 메모리는 키보드용 소프트웨어 드라이버, 터치 센서용 소프트웨어 드라이버 및 터치 스크린 상에 이미지를 디스플레이하기 위한 디스플레이 드라이버를 저장한다. 키보드용 소프트웨어 드라이버 및 오퍼레이팅 시스템은 함께 키 누름 또는 키 해제 등의 터치 키보드 이벤트를 검출하도록 동작가능하다. 다수의 키를 갖는 가상 키보드의 이미지가 터치 스크린 상에 디스플레이되는 이벤트에서, 터치 이벤트는 가상 키보드 내의 키에 대한 키 누름 또는 키 해제 또는 키 스와이프 등의 터치 키보드 이벤트를 포함할 수 있다. 도 3은 예시적인 휴대용 전자 장치(300)를 나타낸다. 다수의 키(304)를 갖는 물리적 촉각 키보드(302)는 휴대용 전자 장치(300) 내에 통합되고, 터치 스크린(306)은 휴대용 전자 장치(300) 내에 통합된다. 도 3에 도시된 예에서, 다수의 키를 갖는 가상 키보드의 이미지(308)는 터치 스크린(306) 상에 디스플레이된다. 도 3에는 도시되지 않지만, 키보드(302)용 소프트웨어 드라이버 및 터치 스크린(306)용 소프트웨어 드라이버가 휴대용 전자 장치(300)의 메모리에 저장된다.
키보드 상의 타이핑 또는 터치 스크린 상의 터치는 장치의 이동 및/또는 장치의 배향 변화를 일으킨다. 장치의 이동의 크기 및 방향은 밀리미터 미만에서 수센티미터의 범위 내에 있을 수 있고 1차원, 2차원 또는 3차원일 수 있다. 장치의 이동 또는 장치 배향 변화는 예를 들어 장치의 사이즈, 하드웨어 사용자 입력 컴포넌트의 사이즈, 터치가 어떤 시퀀스로 이루어지는지, 사용자가 왼손잡이인지 오른손잡이인지, 및 장치가 얼마나 안정화되었는지 등을 포함하는 몇개의 인자에 의존한다. 이 이동 또는 배향 변경은 그 환경 내의 장치의 안정화에 따라 더 많이 표명될 수 있다. 예를 들어, 하나의 무릎 상에 균형 잡힌 휴대용 전자 장치는 테이블 윗면 등의 평탄면 상에 놓인 휴대용 전자 장치보다 덜 안정화될 수 있다. 임의의 예에서, 사용자의 한손 또는 양손에 유지된 휴대용 전자 장치는 사용자가 타이핑하거나 터치 스크린을 터치함에 따라 약간의 이동을 경험할 것이다.
휴대용 전자 장치는, 그 환경 내의 장치의 배향을 지시하거나 그 환경 내의 장치의 움직임을 지시하거나 그 환경 내의 장치의 배향 및 움직임을 지시하는 하드웨어 센서 출력을 생성하도록 동작가능한 하나 이상의 하드웨어 센서를 포함할 수 있다. 이러한 하드웨어 센서에 대한 예의 불완전(non-exhaustive) 리스트는 가속계, 자력계 및 자이로스코프를 포함한다. 이러한 하드웨어 센서용 센서 드라이버는 하드웨어 센서와 인터페이스하기 위하여 장치의 오퍼레이팅 시스템에 의해 사용되는 장치의 메모리에 저장된다. 장치가 대략 90도 회전하는 것으로 검출되면, 오퍼레이팅 시스템은 디스플레이 배향을 가로 배치로부터 세로 배치 또는 그 반대로 스위칭시킬 수 있다. 또 다른 예에서, 디스플레이측이 아래로 가도록 장치를 배치하는 것이 검출되면, 디스플레이가 흐려지거나(dimming) 장치가 록(lock)될 수 있다.
장치의 이동 및/또는 장치의 배향 변화를 지시하는 하드웨어 센서 출력은 키보드 상에서 어떤 키가 활성화되는지를 추정하거나 터치 스크린 상에서 어디가 터치되었는지를 추정하기 위하여 분석될 수 있다. 이 분석은 감지 정보를 드러낼 수 있다. 예를 들어, 이 분석은 키보드에서 타이핑된 비밀 패스워드를 드러낼 수 있다. 또 다른 예에서, 이 분석은 터치된 터치 스크린 상의 특정 위치를 드러내고, 따라서, 비밀 패스워드로서 동작할 수 있다. 또 다른 예에서, 이 분석은 터치된 터치 스크린 상의 위치의 특정 시퀀스를 드러내고, 따라서, 비밀 패스워드로서 동작할 수 있다.
실제로, 장치의 메모리에 저장된 소프트웨어 애플리케이션(맬웨어(malware))는 악의적 공격을 수행하도록 설계되거나 변경될 수 있다. 소프트웨어 애플리케이션은 맬웨어 프로세스로서 프로세서에 의해 실행되고, 공격은 맬웨어 프로세스가 장치의 이동 및/또는 장치의 배향 변화를 지시하는 하드웨어 센서 출력을 수신하는 것을 포함한다. 공격은 또한 수신된 출력의 분석을 포함한다. 프로세스는 장치 내의 분석을 수행하거나 외부 서버에 의한 분석을 위해 외부 서버로의 장치의 통신 인터페이스를 통해 수신된 출력을 전달하거나 또 다른 분석을 위해 외부 서버로의 장치의 통신 인터페이스를 통해 수신된 출력을 전달할 수 있다.
하드웨어 센서 출력을 수신하는 모든 프로세스가 모두 악의적인 것은 아니다. 프로세스가 하드웨어 센서 출력을 수신하는 정당한 이유가 있다. 예를 들어, 계보기(pedometer) 소프트웨어 애플리케이션은 장치를 착용하거나 소지한 사용자가 얼마나 멀리 걸었는지를 산출하기 위하여 가속계 출력을 수신한다. 또 다른 예에서, 게임 애플리케이션은 더 나은 사용자 제어를 제공하고 디스플레이된 이미지를 조절하여 소정의 외관 투시(visual perspective)를 반영하기 위하여 가속계 출력 및/또는 자이로스코프 출력을 수신한다.
장치의 메모리에 저장된 소프트웨어 애플리케이션이 프로세스로서 프로세서에 의해 실행되는 동안, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리도록 동작가능한 기간이 존재할 수 있고, 프로세스는 때때로 이 기간 동안 "전경에서(in the foreground)" 또는 "초점을 맞추어(in focus)" 실행하는 것으로 지칭된다. 장치가 키보드, 물리적 촉각 키보드 또는 터치 스크린 상에 디스플레이되는 키보드 이미지를 포함하는 예에서, 검출된 터치 키보드 이벤트는 "전경에서" 또는 "초점을 맞추어" 실행하는 동안 프로세스로 전달된다. 장치가 터치 스크린을 포함하는 예에서, "전경에서(in the foreground)" 또는 "초점을 맞추어(in focus)" 실행하는 동안 검출된 터체 이벤트는 프로세스로 전달된다. 소프트웨어 애플리케이션이 프로세스로서 프로세서에 의해 실행되는 동안, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 기간이 존재할 수 있고, 프로세스는 때때로 이 기간 동안 "배경에서(in the background)" 또는 "초점을 벗어나(out of focus)" 실행하는 것으로 지칭된다. 일반적으로, 임의의 주어진 시간에, 단 하나의 프로세스가 "전경에서" 또는 "초점을 맞추어" 실행되고, 다른 모든 프로세스는 "배경에서" 또는 "초점을 벗어나" 실행된다.
도 4a, 도 4b, 도 4c, 도 4d, 도 4e 및 도 4f는 거의 서로 동일하다. 이들은 제1 프로세스 및 제2 프로세스로의 하드웨어 센서 출력의 샘플 타이밍을 나타내는 더 낮은 2개의 시퀀스에서만 다르다. 통합하여 "도 4"로 지칭되는 도 4a, 도 4b, 도 4c, 도 4d, 도 4e 및 도 4f는 타임라인(400)을 따라 휴대용 전자 장치, 예를 들어, 휴대용 전자 장치(100) 또는 휴대용 전자 장치(200) 또는 휴대용 전자 장치(300)의 디스플레이의 예시적인 스크린샷의 타이밍을 나타낸다. 장치의 메모리에 저장된 제1 소프트웨어 애플리케이션은 제1 프로세스로서 장치의 프로세서에 의해 실행되고 있고, 장치의 메모리에 저장된 제2 소프트웨어 애플리케이션은 제2 프로세스로서 장치의 프로세서에 의해 실행되고 있다. 기간 [T1, T2]로 기재된 시간(T1)으로부터 시간(T2)에서 및 기간 [T3, T4]로 기재된 시간(T3)으로부터 시간(T4)에서, 장치의 오퍼레이팅 시스템은 임의의 검출된 터치 이벤트를 제1 프로세스에 알리고 임의의 검출된 터치 이벤트를 제2 프로세스에 알리지 않도록 동작가능하다. 기간 [T2, T3]로 기재된 시간(T2)으로부터 시간(T3)에서, 장치의 오퍼레이팅 시스템은 임의의 검출된 터치 이벤트를 제2 프로세스에 알리고 임의의 검출된 터치 이벤트를 제1 프로세스에 알리지 않도록 동작가능하다.
기간 [T1, T2] 동안 캡쳐된 예시적인 스크린샷(402)은 전경에서 제1 프로세스와 연관된 이미지(404) 및 제2 프로세스와 연관되고 부분적으로 배경에서 보기 어려운 이미지(406)를 나타낸다. 장치의 오퍼레이팅 시스템은 기간 [T1, T2] 동안 검출된 터치 이벤트, 예를 들어, 터치 이벤트(408)를 제1 프로세스에 알리고, 기간 [T1, T2] 동안 검출된 터치 이벤트를 제2 프로세스에 알리지 않는다. 도 4에 도시된 예에서, 검출된 터치 이벤트(408)는 총괄하여 텍스트 "Yum"에 대응하고, 제1 프로세스는 예시적인 채팅 소프트웨어 애플리케이션의 장치 프로세스에 의한 실행에 기인하고, 이미지(404)는 참가자(A)에 의한 채팅 입력의 일부로서의 텍스트 "Yum"을 디스플레이한다.
기간 [T2, T3] 동안 캡쳐된 예시적인 스크린샷(412)은 제1 프로세스와 연관되고 배경에서 부분적으로 보기 어려운 이미지(414) 및 전경에서 제2 프로세스와 연관된 이미지(416)를 나타낸다. 장치의 오퍼레이팅 시스템은 기간 [T2, T3] 동안 검출된 터치 이벤트, 예를 들어, 터치 이벤트(418)를 제2 프로세스에 알리고, 기간 [T2, T3] 동안 검출된 터치 이벤트를 제1 프로세스에 알리지 않는다. 도 4에 도시된 예에서, 검출된 터치 이벤트(418)는 총괄하여 텍스트 "Q7%"에 대응하고, 제2 프로세스는 예시적인 온라인 뱅킹 애플리케이션의 장치 프로세스에 의한 실행에 기인하고, 이미지(416)는 패스워드 입력 필드 내에 텍스트 "***"를 디스플레이하여 텍스트 입력"Q7%"가 제2 프로세스에 의해 수신되었다는 것을 지시한다.
기간 [T3, T4] 동안 캡쳐된 예시적인 스크린샷(422)은 전경에서 제1 프로세스와 연관된 이미지(424) 및 제2 프로세스와 연관되고 부분적으로 배경에서 보기 어려운 이미지(426)를 나타낸다. 장치의 오퍼레이팅 시스템은 기간 [T3, T4] 동안 검출된 터치 이벤트, 예를 들어, 터치 이벤트(428)를 제1 프로세스에 알리고, 기간 [T3, T4] 동안 검출된 터치 이벤트를 제2 프로세스에 알리지 않는다. 도 4에 도시된 예에서, 검출된 터치 이벤트(428)는 총괄하여 텍스트 "How"에 대응하고, 이미지(424)는 참가자(A)에 의한 채팅 입력의 일부로서의 텍스트 "How"을 디스플레이한다.
장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리도록 동작가능한 기간에서, 프로세스는 어떤 키가 키보드 상에서 활성화되었는지 및/또는 터치 스크린 상의 어디에서 터치가 이루어졌는지를 이러한 통지로부터 완전한 정확도로 직접 추정할 수 있다. 이들 기간 동안 샘플링된 하드웨어 센서 출력의 임의의 분석은 터치 이벤트에 관한 추가적인 정보를 산출하지 않을 것이다. 결과적으로, 하드웨어 센서 출력을 수신하는 프로스세에 관한 임의의 문제는 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리도록 동작하지 않는 기간 동안 샘플링된 하드웨어 센서 출력에 관한 것이다. 도 4에 도시된 간략화된 예를 참조하여, 하드웨어 센서 출력의 예시적인 샘플의 시퀀스(440)가 도시된다. 하드웨어 센서 출력을 수신하는 제1 프로세스에 관한 문제는 기간 [T2, T3] 동안 샘플링된 하드웨어 센서 출력의 샘플(460)에 관한 것이고, 하드웨어 센서 출력을 수신하는 제2 프로세스에 관한 문제는 기간 [T1, T2] 동안 샘플링된 하드웨어 센서 출력의 샘플(450) 및 기간 [T3, T4] 동안 샘플링된 하드웨어 센서 출력의 샘플(470)로 관한 것일 수 있다.
공격 차단을 위한 수신 방지 어프로치
공격 차단을 위한 하나의 어프로치는 하드웨어 센서 출력의 수신을 방지하는 것이다. 하드웨어 센서 출력이 프로세스에 의해 수신될 수 없으면, 하드웨어 센서 출력은 프로세스에 의해 분석될 수 없고(또는 분석을 위해 프로세스에 의해 원격 서버로 전송되지 않고), 따라서, 프로세스(또는 원격 서버)는 어떤 키가 키보드 상에서 활성화되었는지 및/또는 터치 스크린 상의 어디에서 터치가 이루어졌는지를 추론할 수 없다.
임의의 프로세스에 대하여, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 기간이 존재한다. 공격을 차단하기 위한 "수신 방지" 어프로치를 구현하기 위하여, 센서 드라이버 및/또는 장치의 오퍼레이팅 시스템은 이들 기간에 샘플링된 임의의 하드웨어 센서 출력이 프로세스에 의해 수신가능하지 않도록 구성될 수 있다. 도 4a에 도시된 간략화된 예를 참조한다. 센서 드라이버 및/또는 장치의 오퍼레이팅의 구성 때문에, 하드웨어 센서 출력의 샘플의 시퀀스(4-1-1)는 제1 프로세스에 의해 수신가능하다. 시퀀스(4-1-1)는 (샘플(460)이 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 제1 프로세스에 알리지 않도록 구성되는 기간 [T2, T3] 동안 샘플링되기 때문에) 샘플(460)이 생략된다는 점에서 시퀀스(440)와 다르다. 따라서, 제1 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 텍스트가 타이핑되는 동안 샘플링된 하드웨어 센서 출력을 수신할 수 없고 제1 프로세스에 의해 수신되지 않기 때문에, 제1 프로세스는 기간 [T2, T3] 동안 텍스트 "Q7%"가 타이핑되었는다는 것을 추론할 수 없다. 센서 드라이버 및/또는 장치의 오퍼레이팅 시스템의 구성 때문에, 하드웨어 센서 출력의 샘플의 시퀀스(4-1-2)는 제2 프로세스에 의해 수신가능하다. 시퀀스(4-1-2)는 (샘플(450)이 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 제2 프로세스에 알리지 않도록 동작가능한 기간 [T1, T2] 동안 샘플링되기 때문에) 샘플(450)이 생략되고 (샘플(470)이 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 제2 프로세스에 알리지 않도록 동작가능한 기간 [T3, T4] 동안 샘플링되기 때문에) 샘플(470)이 생략된다는 점에서 시퀀스(440)와 다르다. 따라서, 제2 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 테스트 "Yum!"가 타이핑되는 동안 샘플링된 하드웨어 센서 출력 및 텍스트 "How"가 타이핑되는 동안 샘플링된 하드웨어 센서 출력이 제2 프로세스에 의해 수신가능하지 않고 수신되지 않기 때문에, 제2 프로세스는 텍스트 "Yum!"가 기간 [T1, T2] 동안 타이핑되었다는 것을 추론할 수 없고 텍스트 "How"가 [T3, T4] 동안 타이핑되었다는 것을 추론할 수 없다.
공격을 차단하기 위한 페이크 ( fake ) 하드웨어 센서 출력 어프로치
공격을 차단하는 또 다른 어프로치는 실제 하드웨어 센서 출력을 추론할 수 없고 터치 이벤트를 구별할 수 없는 페이크 하드웨어 센서 출력을 제공하는 것이다.
상술한 바와 같이, 임의의 프로세스에 대하여, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 기간이 존재한다. 공격을 차단하기 위한 "페이크 하드웨어 센서 출력" 어프로치를 구현하기 위하여, 센서 드라이버 및/또는 장치의 오퍼레이팅 시스템은 이들 기간에 샘플링된 실제의 하드웨어 센서 출력 대신에, 페이크 하드웨어 센서 출력이 프로세스에 의해 수신가능하도록 구성될 수 있다. 이 "페이크 하드웨어 센서 출력" 어프로치는 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 기간 동안 샘플링된 하드웨어 센서 출력이 프로세스에 의해 수신가능하지 않는다는 점에서 "수신 방지" 어프로치와 유사하다.
도 4b에 도시된 간략화된 예를 참조한다. 센서 드라이버 및/또는 장치의 오퍼레이팅의 구성 때문에, 하드웨어 센서 출력의 샘플의 시퀀스(4-2-1)는 제1 프로세스에 의해 수신가능하다. 시퀀스(4-2-1)는 (샘플(460)이 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 제1 프로세스에 알리지 않도록 동작가능한 기간 [T2, T3] 동안 샘플링되기 때문에) 시퀀스(4-2-1)가 샘플(461) 대신에 페이크 하드웨어 센서 출력의 샘플(461)을 포함한다는 점에서 시퀀스(440)와 다르다. 따라서, 제1 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 텍스트가 타이핑되는 동안 샘플링된 하드웨어 센서 출력을 수신할 수 없고 제1 프로세스에 의해 수신되지 않기 때문에, 제1 프로세스는 기간 [T2, T3] 동안 텍스트 "Q7%"가 타이핑되었는다는 것을 추론할 수 없다.
센서 드라이버 및/또는 장치의 오퍼레이팅 시스템의 구성 때문에, 하드웨어 센서 출력의 샘플의 시퀀스(4-2-2)는 제2 프로세스에 의해 수신가능하다. 시퀀스(4-2-2)는, 시퀀스(4-2-2)가 i) (샘플(450)이 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 제2 프로세스에 알리지 않도록 동작가능한 기간 [T1, T2] 동안 샘플링되기 때문에) 샘플(450) 대신에 페이크 하드웨어 센서 출력의 샘플(451)을 포함하고 ii) (샘플(470)이 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 제2 프로세스에 알리지 않도록 동작가능한 기간 [T3, T4] 동안 샘플링되기 때문에) 샘플(470) 대신에 페이크 하드웨어 센서 출력의 샘플(471)을 포함한다는 점에서 시퀀스(440)와 다르다. 따라서, 제2 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 테스트 "Yum!"가 타이핑되는 동안 샘플링된 하드웨어 센서 출력 및 텍스트 "How"가 타이핑되는 동안 샘플링된 하드웨어 센서 출력이 제2 프로세스에 의해 수신가능하지 않고 수신되지 않기 때문에, 제2 프로세스는 텍스트 "Yum!"가 기간 [T1, T2] 동안 타이핑되었다는 것을 추론할 수 없고 텍스트 "How"가 [T3, T4] 동안 타이핑되었다는 것을 추론할 수 없다.
공격을 차단하기 위한 충분히 낮은 샘플링 레이트 어프로치
공격을 차단하기 위한 또 다른 어프로치는 하드웨어 센서 출력의 제공된 샘플로부터 터치 이벤트가 구별될 수 없도록 충분히 낮은 "충분히 낮은 샘플링 레이트"보다 낮은 샘플링 레이트에서 프로세스로 하드웨어 센서 출력을 제공하는 것이다. 예시적인 충분히 낮은 샘플링 레이트는 대략 1 Hz 내지 2 hz의 범위, 대략 초당 1 샘플로부터 대략 초당 2 샘플의 샘플링 레이트 내에 있다.
상술한 바와 같이, 임의의 프로세스에 대하여, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 기간이 존재한다. 공격을 차단하기 위한 "충분히 낮은 샘플링 레이트" 어프로치를 구현하기 위하여, 센서 드라이버 및/또는 장치의 오퍼레이팅 시스템은 충분히 낮은 샘플링 레이트보다 낮은 샘플링 레이트에서 이 기간에 샘플링된 임의의 하드웨어 센서 출력이 프로세스에 의해 수신가능하도록 구성될 수 있다.
도 4c에 도시된 간략화된 예를 참조한다. 센서 드라이버 및/또는 장치의 오퍼레이팅의 구성 때문에, 하드웨어 센서 출력의 샘플의 시퀀스(4-3-1)는 제1 프로세스에 의해 수신가능하다. 시퀀스(4-3-1)는 (샘플(460)이 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 제1 프로세스에 알리지 않도록 동작가능한 기간 [T2, T3] 동안 샘플링되기 때문에) 충분히 낮은 샘플링 레이트보다 낮은 샘플링 레이트에서 샘플(460)이 시퀀스(4-3-1)에 포함된다는 점에서 시퀀스(440)와 다르다. 따라서, 제1 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 텍스트 "Q7%"가 제1 프로세스에 의해 수신가능한(수신되는) 몇 개의 샘플(460)로부터 구별될 수 없기 때문에, 제1 프로세스는 기간 [T2, T3] 동안 텍스트 "Q7%"가 타이핑되었는다는 것을 추론할 수 없다.
센서 드라이버 및/또는 장치의 오퍼레이팅 시스템의 구성 때문에, 하드웨어 센서 출력의 샘플의 시퀀스(4-3-2)는 제2 프로세스에 의해 수신가능하다. 시퀀스(4-3-2)는, (샘플(450)이 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 제2 프로세스에 알리지 않도록 동작가능한 기간 [T1, T2] 동안 샘플링되기 때문에) 충분히 낮은 샘플링 레이트보다 낮은 샘플링 레이트에서 샘플(450)이 시퀀스(4-3-2)에 포함되고 (샘플(470)은 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 제2 프로세스에 알리지 않도록 동작가능한 기간 [T3, T4] 동안 샘플링되기 때문에) 충분히 낮은 샘플링 레이트에서만 샘플(470)이 시퀀스(4-3-2)에 포함된다는 점에서 시퀀스(440)와 다르다. 따라서, 제2 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 텍스트 "Yum!"가 제2 프로세스에 의해 수신가능한(수신된) 몇 개의 샘플(450)으로부터 구별될 수 없기 때문에, 제2 프로세스는 텍스트 "Yum!"가 기간 [T1, T2] 동안 타이핑되었다는 것을 추론할 수 없고, 텍스트 "How"가 제2 프로세스에 의해 수신가능한(수신된) 몇 개의 샘플(460)으로부터 구별될 수 없기 때문에, 텍스트 "How"가 [T3, T4] 동안 타이핑되었다는 것을 추론할 수 없다.
가상 키보드용으로 디스플레이되는 키보드
장치가 물리적 촉각 키보드를 갖지 않고 가상 키보드의 이미지가 장치의 터치 스크린 상에 디스플레이 가능하고, 문제가 특히 가상 키보드를 통한 입력을 나타내는 검출된 터치 이벤트에 대한 것이면, 임의의 타입의 검출된 터치 이벤트 보다는 가상 키보드의 이미지가 디스플레이되는지 아닌지의 문제가 관련된다. 가상 키보드의 이미지가 터치 스크린 상에 디스플레이되지 않는 동안 검출된 임의의 터치 이벤트는 가상 키보드를 통한 입력을 나타내지 않는다. 결과적으로, 하드웨어 센서 출력을 수신하는 프로세스에 관한 임의의 문제는 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리리 않도록 동작가능한 기간 동안 가상 키보드의 이미지가 디스플레이되는 동안 샘플링된 하드웨어 센서 출력에 관한 것일 수 있다.
수신 방지 어프로치의 키보드 디스플레이 변형
상술한 바와 같이, 임의의 프로세스에 대하여, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 알리지 않도록 동작가능한 기간이 존재한다. 공격을 차단하기 위한 "수신 방지" 어프로치의 다른 구현예에서, 센서 드라이버 및/또는 장치의 오퍼레이팅 시스템은 가상 키보드의 이미지가 이들 기간 동안 디스플레이되는 동안 샘플링된 임의의 하드웨어 센서 출력이 프로세스에 의해 수신가능하지 않도록 구성될 수 있다. 따라서, 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 터치 스크린 상에서의 터치가 가상 키보드로의 입력을 나타내는 동안 프로세스에 의해 수신된 임의의 하드웨어 센서 출력이 샘플링되지 않기 때문에, 프로세스는 가상 키보드 상에서 어떤 키가 활성화되었는지 추론할 수 없다.
페이크 하드웨어 센서 출력 어프로치의 키보드 디스플레이 변형
상술한 바와 같이, 임의의 프로세스에 대하여, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 알리지 않도록 동작가능한 기간이 존재한다. 공격을 차단하기 위한 "페이크 하드웨어 센서 출력" 어프로치의 다른 구현예에서, 센서 드라이버 및/또는 장치의 오퍼레이팅 시스템은 가상 키보드의 이미지가 이들 기간 동안 디스플레이되는 동안 샘플링된 임의의 하드웨어 센서 출력이 프로세스에 의해 수신가능하지 않고 프로세스가 대신 페이크 하드웨어 센서 출력을 수신하도록 구성될 수 있다. 따라서, 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 터치 스크린 상에서의 터치가 가상 키보드로의 입력을 나타내는 동안 프로세스에 의해 수신된 임의의 하드웨어 센서 출력이 샘플링되지 않기 때문에, 프로세스는 가상 키보드 상에서 어떤 키가 활성화되었는지 추론할 수 없다.
충분히 낮은 샘플링 레이트 어프로치의 키보드 디스플레이 변형
상술한 바와 같이, 임의의 프로세스에 대하여, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 알리지 않도록 동작가능한 기간이 존재한다. 공격을 차단하기 위한 "충분히 낮은 샘플링 레이트" 어프로치의 다른 구현예에서, 센서 드라이버 및/또는 장치의 오퍼레이팅 시스템은 가상 키보드의 이미지가 이들 기간 동안 디스플레이되는 동안 샘플링된 임의의 하드웨어 센서 출력이 충분히 낮은 샘플링 레이트보다 낮은 샘플링 레이트에서 프로세스에 의해 수신가능하지 않도록 구성될 수 있다. 따라서, 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 가상 키보드로의 입력이 프로세스에 의해 수신된 하드웨어 센서 출력의 몇 개의 샘플과 구별될 수 없기 때문에, 프로세스는 가상 키보드 상에서 어떤 키가 활성화되었는지 추론할 수 없다.
터치 이벤트 윈도우
물리적 촉각 키보드에 대하여, 키 누름의 검출에 수반되는 하드웨어 지연 및 소프트웨어 지연이 존재한다. 예측되는 바와 같이, 하드웨어의 차는 상이한 하드웨어 지연을 유발하고, 소프트웨어의 차는 상이한 소프트웨어 지연을 유발한다. 키 누름이 발생했다는 것을 소프트웨어가 검출하기 전에 키를 누름에 따라 장치의 이동 및/또는 배향 변화가 존재한다. 따라서, 물리적 촉각 키보드의 예에 대하여, 키 누름이 검출되기 전 대략 20 밀리초 내지 75 밀리초의 범위 내, 예를 들어, 50밀리초 등의, 키 누름이 검출되기 직전에 시작하도록 터치 이벤트 윈도우를 정의할 수 있다. 키 누름을 더 빨리 검출하는 하드웨어/소프트웨어 조합에 대하여, 터치 이벤트 윈도우는 키 누름이 검출되는 시간에 더 가까이에서 시작하도록 정의될 수 있다. 키 누름을 더 느리게 검출하는 하드웨어/소프트웨어 조합에 대하여, 터치 이벤트 윈도우는 키 누름이 검출되는 시간으로부터 훨씬 이전에 시작하도록 정의될 수 있다.
물리적 촉각 키보드에 대하여, 키 해제의 검출에 수반되는 하드웨어 지연 및 소프트웨어 지연이 존재한다. 예측되는 바와 같이, 하드웨어의 차는 상이한 하드웨어 지연을 유발하고, 소프트웨어의 차는 상이한 소프트웨어 지연을 유발한다. 또한, 장치의 이동 및/또는 장치의 배향 변화가 키 누름 및 키 해제의 상이한 시퀀스에 대하여 상이할 것이다. 예를 들어, QWERTY 키보드 레이아웃에서, "a" 다음에 "e"를 타이핑하는 것은 "p" 다음에 "h"를 타이핑하는 것으로부터 유발되는 것과 다른 장치의 이동 또는 장치의 배향 변화를 유발할 수 있다. 따라서, 물리적 촉각 키보드의 예에 대하여, 터치 이벤트 윈도우는 키 해제가 검출된 후 언젠가, 예를 들어, 키 해제가 검출된후 대략 200 밀리초에 종료되도록 정의될 수 있다. 키 해제를 더 빨리 검출하고 키 누름 및 해제의 상이한 시퀀스가 장치의 이동 및/또는 배향 변화에 대하여 덜 독특한 하드웨어/소프트웨어 조합에 대하여, 터치 이벤트 윈도우는 키 해제가 검출되는 시간에 더 가까이에서 종료하도록 정의될 수 있다. 키 해제를 더 느리게 검출하고 키 누름 및 해제의 상이한 시퀀스가 장치의 이동 및/또는 배향 변화에 대하여 더 독특한 하드웨어/소프트웨어 조합에 대하여, 터치 이벤트 윈도우는 키 해제가 검출되는 시간보다 훨씬 이전에 종료하도록 정의될 수 있다.
터치 스크린에 대한 터치 이벤트 윈도우를 정의하는 것은 부분적으로 다양한 타입의 터치 이벤트(터치 스크린 누름, 터치 스크린 해제, 터치 스크린 글라이드 또는 드래그, 키 스와이프) 때문에 물리적 촉각 키보드에 대한 것보다 어렵다. 터치 스크린에 대하여, 터치 이벤트 윈도우의 기간 및 타이밍은 터치 스크린이 터치 이벤트를 얼마나 빨리 등록하는지에 의존할 수 있다. 임의의 예로서, 터치 이벤트 윈도우는 터치 스크린 이벤트가 검출되기전 대략 75 밀리초에 시작하고 터치 스크린 이벤트가 검출된 후 대략 200 밀리초에 시작하도록 정의될 수 있다.
터치 이벤트 윈도우는 임의의 터치 이벤트 및 터치를 통한 사용자 입력을 수락하도록 동작가능한 다수의 엘리먼트를 갖는 임의의 하드웨어 사용자 입력 컴포넌트에 대하여 정의된다. 도 4d, 4e 및 4f에 도시된 간략화된 예에서, 터치 이벤트(408, 418 및 428) 및 그 각각의 터치 이벤트 윈도우(409, 419 및 429)가 도시된다. 일부의 터치 이벤트는 터치 이벤트 윈도우와 중첩하여 단일 연장 터치 이벤트 윈도우를 유발한다.
수신 방지 어프로치의 터치 이벤트 윈도우 변형
상술한 바와 같이, 임의의 프로세스에 대하여, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 기간이 존재한다. 공격을 차단하기 위한 "수신 방지" 어프로치의 다른 구현예에서, 센서 드라이버 및/또는 장치의 오퍼레이팅 시스템은 이들 기간 동안 발생한 터치 이벤트 윈도우시 샘플링된 임의의 하드웨어 센서 출력이 프로세스에 의해 수신가능하지 않도록 구성될 수 있다.
도 4d에 도시된 간략화된 예를 참조한다. 센서 드라이버 및/또는 장치의 오퍼레이팅 시스템의 구성 때문에, 하드웨어 센서 출력의 샘플의 시퀀스(4-4-1)는 제1 프로세스에 의해 수신가능하다. 시퀀스(4-4-1)는 (터치 이벤트 윈도우(419)가 기간 [T2, T3] 동안 발생하기 때문에, 터치 이벤트 윈도우(419)시 샘플링된 샘플(460)이 생략된다는 점에서 시퀀스(440)와 상이하다. 따라서, 제1 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 텍스트가 타이핑되는 동안 샘플링된 하드웨어 센서 츨력이 제1 프로세스에 의해 수신가능하지 않고 수신되지 않기 때문에 제1 프로세스는 기간 [T2, T3] 동안 텍스트 "Q7%"가 타이핑되었는것을 추론할 수 없다.
센서 드라이버 및/또는 장치의 오퍼레이팅 시스템의 구성 때문에, 하드웨어 센서 출력의 샘플의 시퀀스(4-4-2)는 제2 프로세스에 의해 수신가능하다. 시퀀스(4-4-2)는 (터치 이벤트 윈도우(409)가 기간 [T1, T2] 동안 발생하기 때문에) 터치 이벤트 윈도우(409) 동안 샘플링된 샘플(450)이 생략되고 (터치 이벤트 윈도우(429)가 기간 [T3, T4] 동안 발생하기 때문에) 터치 이벤트 윈도우(429) 동안 샘플링된 샘플(450)이 생략된다는 점에서 시퀀스(440)와 다르다. 따라서, 제2 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 텍스트 "Yum!"가 타이핑되는 동안 샘플링된 하드웨어 센서 출력 및 텍스트 "How"가 타이핑되는 동안 샘플링된 하드웨어 센서 출력이 제2 프로세스에 의해 수신가능하지 않고 수신되지 않기 때문에, 제2 프로세스는 텍스트 "Yum!"가 기간 [T1, T2] 동안 타이핑되었다는 것을 추론할 수 없고 텍스트 "How"가 [T3, T4] 동안 타이핑되었다는 것을 추론할 수 없다.
페이크 하드웨어 센서 출력 어프로치의 터치 이벤트 윈도우 변형
상술한 바와 같이, 임의의 프로세스에 대하여, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 기간이 존재한다. 공격을 차단하기 위한 "페이크 하드웨어 센서 출력" 어프로치를 구현하기 위하여, 센서 드라이버 및/또는 장치의 오퍼레이팅 시스템은 이들 기간에 발생하는 터치 이벤트 윈도우 동안 샘플링된 임의의 하드웨어 센서 출력이 프로세스에 의해 수신가능하지 않도록 구성될 수 있다.
대안으로, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 기간에 발생하는 터치 이벤트 윈도우 동안 샘플링된 실제의 하드웨어 센서 출력 대신에, 페이크 하드웨어 센서 출력이 프로세스에 제공될 수 있다.
도 4e에 도시된 간략화된 예를 참조한다. 센서 드라이버 및/또는 장치의 오퍼레이팅의 구성 때문에, 하드웨어 센서 출력의 샘플의 시퀀스(4-5-1)는 제1 프로세스에 의해 수신가능하다. 시퀀스(4-5-1)는 (터치 이벤트 윈도우(419)가 기간 [T2, T3] 동안 발생하기 때문에) 시퀀스(4-5-1)가 터치 이벤트 윈도우(419) 동안 샘플링된 샘플(460) 대신에 페이크 하드웨어 센서 출력의 샘플(462) 및 페이크 센서 출력의 샘플(463)을 포함한다는 점에서 시퀀스(440)와 다르다. 따라서, 제1 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 텍스트가 타이핑되는 동안 샘플링된 하드웨어 센서 출력을 제1 프로세스에 의해 수신가능하지 않고 수신되지 않기 때문에, 제1 프로세스는 기간 [T2, T3] 동안 텍스트 "Q7%"가 타이핑되었는다는 것을 추론할 수 없다.
센서 드라이버 및/또는 장치의 오퍼레이팅 시스템의 구성 때문에, 하드웨어 센서 출력의 샘플의 시퀀스(4-5-2)는 제2 프로세스에 의해 수신가능하다. 시퀀스(4-5-2)는, 시퀀스(4-5-2)가 (터치 이벤트 윈도우(409)가 기간 [T1, T2] 동안 발생하기 때문에) 터치 이벤트 윈도우(409) 동안 샘플링된 샘플(450) 대신에 페이크 하드웨어 센서 출력의 샘플(452) 및 페이크 하드웨어 센서 출력의 샘플(453)을 포함하고 시퀀스(4-5-2)가 (터치 이벤트 윈도우(429)가 기간 [T3, T4] 동안 발생하기 때문에) 터치 이벤트 윈도우(429) 동안 샘플링된 샘플(470) 대신에 페이크 하드웨어 센서 출력의 샘플(472)을 포함한다는 점에서 시퀀스(440)와 다르다.
충분히 낮은 샘플링 레이트 어프로치의 터치 이벤트 윈도우 변형
상술한 바와 같이, 임의의 프로세스에 대하여, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 기간이 존재한다. 공격을 차단하기 위한 "충분히 낮은 샘플링 레이트" 어프로치의 다른 구현예에서, 센서 드라이버 및/또는 장치의 오퍼레이팅 시스템은 충분히 낮은 샘플링 레이트보다 낮은 샘플링 레이트에서 이 기간에 발생하는 터치 이벤트 윈도우 동안 샘플링된 하드웨어 센서 출력이 프로세스에 의해 수신가능하도록 구성될 수 있다.
도 4f에 도시된 간략화된 예를 참조한다. 센서 드라이버 및/또는 장치의 오퍼레이팅의 구성 때문에, 하드웨어 센서 출력의 샘플의 시퀀스(4-6-1)는 제1 프로세스에 의해 수신가능하다. 시퀀스(4-6-1)는 (터치 이벤트 윈도우(419)가 기간 [T2, T3] 동안 발생하기 때문에) 충분히 낮은 샘플링 레이트보다 낮은 샘플링 레이트에서 터치 이벤트 윈도우(419) 동안 샘플링된 샘플(460)이 시퀀스(4-6-1)에 포함된다는 점에서 시퀀스(440)와 다르다. 따라서, 제1 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 텍스트 "Q7%"가 제1 프로세스에 의해 수신가능한(및 심지어 수신되는) 몇 개의 샘플(460)로부터 구별될 수 없기 때문에, 제1 프로세스는 기간 [T2, T3] 동안 텍스트 "Q7%"가 타이핑되었는다는 것을 추론할 수 없다.
센서 드라이버 및/또는 장치의 오퍼레이팅 시스템의 구성 때문에, 하드웨어 센서 출력의 샘플의 시퀀스(4-6-2)는 제2 프로세스에 의해 수신가능하다. 시퀀스(4-6-2)는, (터치 이벤트 윈도우(409)가 기간 [T1, T2] 동안 발생하기 때문에) 충분히 낮은 샘플링 레이트보다 낮은 샘플링 레이트에서 터치 이벤트 윈도우(409) 동안 샘플링된 샘플(450)이 시퀀스(4-6-2)에 포함되고 (터치 이벤트 윈도우(429)가 기간 [T3, T4] 동안 발생하기 때문에) 충분히 낮은 샘플링 레이트보다 낮은 샘플링 주파수에서 터치 이벤트 윈도우(429) 동안 샘플링된 샘플(470)이 시퀀스(4-6-2)에 포함된다는 점에서 시퀀스(440)와 다르다. 따라서, 제2 프로세스가 하드웨어 센서 출력의 샘플을 요청하더라도, 테스트 "Yum!"가 제2 프로세스에 의해 수신가능한(및 심지어 수신된) 몇 개의 샘플(450)으로부터 구별될 수 없기 때문에, 제2 프로세스는 텍스트 "Yum!"가 기간 [T1, T2] 동안 타이핑되었다는 것을 추론할 수 없고, 테스트 "How"가 제2 프로세스에 의해 수신가능한(및 심지어 수신된) 몇 개의 샘플(460)으로부터 구별될 수 없기 때문에, 텍스트 "How"가 [T3, T4] 동안 타이핑되었다는 것을 추론할 수 없다.
어프로치의 안정성 비교
시퀀스(4-1-1 및 4-4-1)에서, 제1 프로세스에 의해 수신가능한 샘플에 갭이 있고, 이는 제1 프로세스가 하드웨어 센서 출력의 샘플의 끊임없는 공급을 수신할 것으로 예측하면 제1 프로세스의 분열 또는 불안정성을 초래할 수 있다. 마찬가지로, 시퀀스(4-1-2 및 4-4-2)에서, 제2 프로세스에 의해 수신가능한 샘플에 갭이 있고, 이는 제2 프로세스가 하드웨어 센서 출력의 샘플의 끊임없는 공급을 수신할 것으로 예측하면 제1 프로세스의 분열 또는 불안정성을 초래할 수 있다.
시퀀스(4-3-1 및 4-5-1)에서처럼, 충분히 낮은 샘플링 레이트보다 낮은 샘플링 주파수에서의 샘플의 수신은, 제1 프로세스가 하드웨어 센서 출력의 샘플의 끊임없는 공급을 수신할 것으로 예측하면, 제1 프로세스의 분열 또는 불안정성을 초래할 수 있다. 시퀀스(4-3-2 및 4-5-2)에서처럼, 충분히 낮은 샘플링 레이트보다 낮은 샘플링 주파수에서의 샘플의 수신은, 제2 프로세스가 하드웨어 센서 출력의 샘플의 끊임없는 공급을 수신할 것으로 예측하면, 제2 프로세스의 분열 또는 불안정성을 초래할 수 있다.
반대로, 시퀀스(4-2-1 및 4-6-1)에서 제1 프로세스에 의해 수신가능한 샘플에 갭이 없고 시퀀스(4-2-2 및 4-6-2)에서 제2 프로세스에 의해 수신가능한 샘플에 갭이 없다.
임의의 프로세스에 대하여, "충분히 낮은 샘플링 레이트" 어프로치는 분열 또는 불안정성을 피하기 위하여 충분한 레이트에서 샘플을 제공할 수 있다. 또한, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리도록 동작가능할 때 하드웨어 센서 출력이 수신가능한 샘플링 레이트보다 낮지만 충분히 낮은 샘플링 레이트보다는 높은, 낮은 샘플링 레이트가 충분히 낮은 샘플링 레이트를 대체할 수 있다. 예를 들어, 대략 1Hz 내지 대략 2Hz보다 낮은 샘플링 레이트에서 프로세스에 하드웨어 센서 출력을 제공하는 대신, 대략 5Hz 내지 대략 10Hz의 샘플링 주파수에서 하드웨어 센서 출력이 제공될 수 있다. 이것은 공격에 대하여 덜 보호하지만 "충분히 낮은 샘플링 레이트" 어프로치보다 더 안정성을 가질 수 있다. 다른 프로세스에 대하여, 공격을 차단하기 위한 "페이크 하드웨어 센서 출력" 어프로치는 더 안정한 동작을 유발할 수 있다.
휴대용 전자 장치에서 구현되면, 공격을 차단하기 위한 상술한 어프로치 중의 임의의 것은 장치의 메모리에 저장된 소프트웨어 애플리케이션의 장치의 프로세서에 의한 실행으로부터 유발되는 모든 프로세스에 적용된다. 그러나, 상술한 어프로치 중의 임의의 것의 애플리케이션으로부터 하나 이상의 프로세스를 면제하기 위하여, 휴대용 전자 장치는 면제된 하나 이상의 프로세스 (또는 그 각각의 소프트웨어 애플리케이션)의 리스트를 유지할 수 있고, 센서 드라이버 및/또는 장치의 오퍼레이팅 시스템은 리스트에서 식별되는 프로세스에 차단 어프로치의 임의의 것을 적용하지 않도록 구성될 수 있다. 즉, 면제 프로세스는, 장치의 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리거나 알리지 않도록 동작가능한지에 관계 없이, 면제 프로세스가 실행되는 모든 시간에 요청된 샘플링 레이트가 충분히 낮은 샘플링 레이트보다 높아도, 실제 하드웨어 센서 출력의 샘플을 수신하도록 허용하는 프로세스이다. 면제로서의 소프트웨어 애플리케이션 또는 그 프로세스의 지정은 휴대용 전자 장치 상의 소프트웨어 애플리케이션의 인스톨시 또는 그 후에 달성될 수 있다. 면제로서의 소프트웨어 애플리케이션 또는 그 프로세스의 지정은 임의의 적절한 방식으로 달성될 수 있다. 정밀한 구현은 본 문서의 범위를 벗어난다. 그러나, 일부의 예는 특정한 소프트웨어 애플리케이션이 면제라는 것을 장치의 제조자가 명령하거나, 특정 소프트웨어 애플리케이션이 면제라는 장치의 사용자로부터의 지시를 수신하거나 특정한 생성자로부터의 소프트웨어 애플리케이션이 면제라고 결정하는 것을 포함한다.
프로세스에 의해 수신가능한 하드웨어 센서 출력의 제어
일반적으로, 하드웨어 센서 출력은 동기 통신 또는 비동기 통신을 통해 프로세스에 의해 수신가능하다. 폴링(polling)으로서 알려진 동기 통신은 프로세스가 센서 드라이버로의 접속을 개방하고, 특정 주파수(샘플링 레이트)에서 센서 드라이버를 불러 새로운 샘플을 요청하는 것을 포함한다. 타임아웃은 샘플링 레이트의 역수로서 정의된다. 센서 드라이버는 새로운 샘플을 갖는 각각의 요청에 응답하거나 새로운 샘플이 이용가능하지 않다는 지시에 응답할 수 있다. 대안으로, 센서 드라이버는 샘플링 레이트에 의해 특정된 타임아웃이 도달될 때에만 현재 센서 데이터로 요청에 응답할 수 있고, 즉, 오퍼레이팅 시스템은 타임아웃이 도달할 때까지 프로세스의 실행을 중단한 훙, 현재의 센서 데이터를 제공한다. 이벤트 구동(event-driven) 통신으로서 알려진 비동기 통신은 프로세스가 현재 센서 판독에 대하여 샘플링 레이트에 의해 특정된 특정 간격에서 알릴 것을 요청하는 것을 포함한다. 예를 들어, 프로세스를 알리는 데 인터럽트 또는 신호가 사용될 수 있다. 상이한 프로세스는 상이한 샘플링 레이트에서 하드웨어 센서 출력을 요청할 수 있다. 모든 경우, 이는, 장치의 오퍼레이팅 시스템과 함께, 샘플을 요청하는 프로세스에 하드웨어 센서 출력을 제공하는 센서 드라이버이다. 이처럼, 이는 만약에 있다면 어떤 하드웨어 센서 출력이 프로세스에 의해 수신가능한지를 제어하도록 구성될 수 있는 센서 드라이버 및/또는 장치의 오퍼레이팅 시스템이다.
만약 있다면, 어떤 하드웨어 센서 출력이 프로세스에 의해 수신가능한지를 센서 드라이버가 어떻게 제어할지의 의사 코드 예가 동시 통신에 대한 첨부 A 및 비동기 통신에 대한 첨부 B에 제공된다.
터치 이벤트 윈도우 변형을 위한 버퍼링
상술한 바와 같이, 터치 이벤트가 검출되기 직전에 터치 이벤트 윈도우가 시작된다. 따라서, 상술한 어프로치의 터치 이벤트 윈도우 변형을 구현하기 위하여, 센서 드라이버 및/또는 장치의 오프레이팅 시스템은 프로세스에 의해 하드웨어 센서 출력이 수신되기 전의 기간 동안 하드웨어 센서 출력을 버퍼링하도록 구성될 수 있다. 기간은 터치 이벤트 윈도우가 시작될 때와 터치 이벤트가 검출될 때 사이의 기간과 동일하다. 예를 들어, 현재 센서 샘플이 큐의 끝에 배치되고 타임아웃마다 큐의 헤드에 있는 센서 샘플이 제거되어 프로세스로 반환하면, 센서 샘플은 고정된 사이즈의 FIFO(first-in-first-out) 큐에 저장될 수 있다.
페이크 하드웨어 센서 출력 방법
페이크 하드웨어 센서 출력은 실제 하드웨어 센서 출력이 로우 패스 필터를 통과하도록 함으로써 실제 하드웨어 센서 출력으로부터 제조될 수 있고, 따라서, 터치 이벤트가 구별될 수 있는 임의의 정보를 하드웨어 센서 출력으로부터 제거한다. 예를 들어, 다수의 샘플을 평균함으로써, 로우 패스 필터와 유사한 것이 달성된다. 모든 샘플에 대하여, 프로세스로 반환된 값은 실제로 지난 N개의 샘플의 평균이다. N의 값은 문턱값이 얼마나 낮은지를 특정하는데 사용된다. 예를 들어, 대략 1Hz 내지 2Hz의 문턱값이 사용될 수 있다.
대안으로, 페이크 하드웨어 센서 출력은 i) 랜덤 데이터, ii) 상수 및 고정 파형 등의 미리 제작된 데이터 및 iii) 터치 이벤트가 검출되지 않을 때 샘플링된 실제 하드웨어 센서 출력 중의 어느 하나 또는 임의의 조합으로 이루어질 수 있다.
도 5는 휴대용 전자 장치 내의 자이로스코프에 의해 생성된 예시적인 실제 자이로스코프 데이터 및 예시적인 페이크 자이로스코프 데이터를 나타낸다. 키의 시퀀스가 가상선에 의해 지시된 각각의 키 누름의 타이밍으로 휴대용 전자 장치의 키보드 상에서 타이핑된다. 실제 자이로스코프 데이터의 X 컴포넌트, Y 컴포넌트 및 Z 컴포넌트 파형은 제1 키 누름의 타이밍 전에 도시된다. 제1 키 누름의 타이밍 직전에, 실제 자이로스코프 데이터는 X 컴포넌트, Y 컴포넌트 및 Z 컴포넌트에 대한 제작된 상수 값으로 대체된다. 제작된 상수 값은 가장 최근의 실제 자이로스코프 값과 동일하고 모든 타이핑된 시퀀스에 대하여 유지된다. 도 5에 도시된 데이터의 분석은 어떤 키가 눌렸는지를 산출하지 않는다.
도 6은 휴대용 전자 장치 내의 자이로스코프에 의해 생성된 예시적인 실제 자이로스코프 데이터 및 예시적인 페이크 자이로스코프 데이터를 나타낸다. 키의 시퀀스는 가상선에 의해 지시된 각각의 키 누름의 타이밍으로 휴대용 전자 장치의 키보드 상에서 타이핑된다. 삽도(inset)는 제2 키 누름의 타이밍 주변의 확대된 세부 사항을 나타낸다. 실제 자이로스코프 데이터의 Y 컴포넌트 파형은 제1 키 누름의 타이밍 전에 도시된다. 각 키 누름의 타이밍 직전에, 실제 자이로스코프 데이터는 Y 컴포넌트에 대한 제작된 상수 값으로 대체된다. 제작된 상수 값은 가장 최근의 실제 자이로스코프 값과 동일하고, i) 그 키 누름에 대한 터치 이벤트 윈도우의 끝 또는 ii) 업데이트된 가장 최근의 상수 값이 Y 컴포넌트에 사용되는 다음 키 누름의 직전 중 더 빠른 것까지 유지된다. 따라서, 제작된 상수 값은 제1 키 누름 직전으로부터 제1 키 누름후의 언젠가까지 도시되고, 그 후, 실제 자이로스코프 데이터가 뒤따르고, 제2 키 누름 직전에 가장 최근의 실제 자이로스코프 값과 동일한 새롭게 제작된 상수 값이 뒤따른다. 페이크 자이로스코프 데이터를 제작하는 이 기술은 또한 자이로스코프 데이터의 X 컴포넌트 및 Z 컴포넌트 파형에 적용될 수 있고, 명료화를 위하여 Y 컴포넌트만이 도 6에 도시된다. 도 6에 도시된 데이터의 분석은 어떤 키가 눌려졌는지를 산출하지 않는다.
도 7a는 휴대용 전자 장치 내의 가속계에 의해 생성된 예시적인 실제 가속계 데이터를 나타낸다. 키의 시퀀스는 가상선에 의해 지시된 각각의 키 누름의 타이밍으로 휴대용 전자 장치의 키보드 상에서 타이핑된다. 삽도는 예시적인 실제 가속계 데이터의 Z 컴포넌트의 일부의 확대된 세부사항을 나타낸다. 키 누름의 타이밍 주변의 예시적인 실제 가속계 데이터의 Z 컴포넌트에 스파이크가 있다. 도 7b는 일부가 가속계에 의해 생성된 실제 가속계 데이터이고 일부가 페이크 가속계 데이터인 예시적인 가속계 데이터를 나타낸다. 키의 시퀀스는 가상선에 의해 지시된 각 키 누름의 타이밍으로 키보드 상에서 타이핑된다. 각 키 누름 전의 대략 75 밀리초로부터 키 누름 후의 대략 200 밀리초까지 도시된 예시적인 가속계 데이터는 페이크 가속계 데이터이다. 삽도는 Z 컴포넌트의 일부의 확대된 세부사항을 나타낸다. 실제 가속계 데이터를 제작된 페이크 가속계 데이터로 대체하기 때문에, 키 누름의 타이밍 주변의 예시적인 실제 가속계 데이터의 Z 컴포넌트에서의 스파이크가 제거된다. 도 7b에 도시된 데이터의 분석은 어떤 키가 눌려졌는지를 산출하지 않는다.
이 예에서, 페이크 가속계 데이터는 다음에 의해 제작된다.
1) 키 누름 전 175 밀리초부터 키 누름 전 75밀리초까지 Z 컴포넌트 가속계 데이터의 최소값 및 최대값(Zmin 및 Zmax)을 측정하고,
2) 키 누름 전 175 밀리초로부터 키 누름 전 75 밀리초까지 포인트를 통한 선의 슬로프(Zslope)를 산출하고,
3) 제작 포인트 식 Z i = Z 0 + i * Z slope + (Z max - Z min ) sin(i/60)(여기서, Z0는 제작된 데이터의 시작 직전의 실제 데이터 포인트이다)을 이용하여 페이크 가속계 데이터(Zi) - i는 마지막 제작되지 않은(즉, 실제) 데이터 포인트 후 밀리초 단위의 타임 오프셋을 나타냄 - 를 산출한다.
i/60의 선택은 임의적이다. 사인 함수 대신에 다른 함수가 제작 포인트 식에 사용될 수 있다.
이 방법을 이용하여 자이로스코프 데이터를 제작히기 위하여, 제작 포인트 식은 다음의 제작 포인트 식Z i = Z 0 * cos(i/175) +0.25 (Z max - Z min ) sin(i/20)으로 대체되었고, 이는 좀 더 그럴듯한 페이크 자이로스코프 데이터를 산출한다. 코사인 함수 내의 분수에 대한 분모로서의 값(175)은 제작된 데이터가 사용되는 시간에 가까운 값을 나타낸다. 사인 요소가 식에 포함되어 더 많은 가변성을 제공한다.
기능 블록도
도 8은 휴대용 전자 장치(10), 예를 들어, 휴대용 전자 장치(100, 200 또는 300)의 간략화된 기능 블록도이다. 명료화를 위하여, 휴대용 전자 장치(10)의 일부의 컴포넌트 및 특징부는 도 8에 도시되지 않고 명시적으로 설명하지 않는다. 휴대용 전자 장치(10)에 포함된 기능은 집적 회로, 이산 컴포넌트, 인쇄 회로 기판(PCB), 어셈블리 및 서브어셈블리 등 휴대용 전자 장치(10)의 물리적 컴포넌트 중에서 임의의 원하는 방식으로 구현되고 분배될 수 있다.
휴대용 전자 장치(10)는 파워 팩(12), 예를 들어, 제거가능하거나 제거 불가능한 배터리 팩에 의해 전원이 켜진다. 휴대용 전자 장치(10)는 적어도 하나의 프로세서(14) 및 메모리(16)를 포함한다. 메모리(16)는 프로세서(14)에 의해 실행될 오퍼레이팅 시스템을 저장한다. 메모리(16)는 프로세스로서 프로세서(14)에 의해 실행될 하나 이상의 소프트웨어 애플리케이션(20)을 저장한다. 오퍼레이팅 시스템(18)은 휴대용 전자 장치(10)의 동작을 관리한다. 예를 들어, 오퍼레이팅 시스템(18)은 소프트웨어 드라이버 및 다른 수단에 의해 휴대용 전자 장치(10)의 하드웨어 컴포넌트를 동작시킬 수 있다. 다른 예에서, 오퍼레이팅 시스템(18)은 프로세서(14)에 의해 소프트웨어의 실행을 스케줄링할 수 있다.
적어도 하나의 하드웨어 사용자 입력 컴포넌트(22)는 휴대용 전자 장치(10)에 통합된다. 하드웨어 사용자 입력 컴포넌트(22)는 터치를 통한 사용자 입력을 수락하도록 동작가능한 다수의 엘리먼트(24)를 갖는다. 메모리(16)는 하드웨어 사용자 입력 컴포넌트(22)와 인터페이스하기 위하여 이오퍼레이팅 시스템(18)에 의해 사용되는 사용자 입력 드라이버(26)를 저장한다. 사용자 입력 드라이버(26) 및 오퍼레이팅 시스템(18)은 함께 엘리먼트(24)의 터치 이벤트를 검출하도록 동작가능하다. 오퍼레이팅 시스템(18)은 임의의 검출된 터치 이벤트의 "전경에서" 또는 "초점을 맞추어" 실행하는 것을 프로세스에 알리도록 동작가능하다. 이 통지는 하드웨어 센서 출력에 대하여 상술한 바와 같이 폴링 등의 동기 통신을 통해 또는 인터럽트 등의 비동기 통신을 통해 발생할 수 있다. 오퍼레이팅 시스템(18)은 임의의 검출된 터치 이벤트의 "배경에서" 또는 "초점을 벗어나" 실행하는 것을 프로세스에 알리지 않도록 동작가능하다.
물리적 촉각 키보드는 하드웨어 사용자 입력 컴포넌트의 일 예이다. 터치 스크린은 하드웨어 사용자 입력 컴포넌트의 다른 예이다. 적어도 하나의 하드웨어 사용자 입력 컴포넌트(22), 물리적 촉각 키보드(32) 및 터치 스크린(42)을 포함하는 것으로 도시된 휴대용 전자 장치(10)는 이 구성이 필수적인 것으로 의도되지 않는다. 오히려, 휴대용 전자 장치(10)는 단일 촉각 키보드(32)(휴대용 전자 장치(100)의 경우처럼) 또는 터치 스크린(42)(휴대용 전자 장치(200)의 경우처럼) 또는 임의의 다른 적절한 하드웨어 사용자 입력 컴포넌트일 수 있는 단일 하드웨어 사용자 입력 컴포넌트(22)만을 가질 수 있다. 마찬가지로, 휴대용 전자 장치(10)는 2개의 하드웨어 사용자 입력 컴포넌트(22), 예를 들어, 물리적 촉각 키보드(32) 및 터치 스크린(42)(휴대용 전자 장치(300)의 경우처럼)만을 가질 수 있다.
물리적 촉각 키보드(32)는 다수의 키(34)를 갖고, 메모리(16)는 물리적 촉각 키보드(32)에 대한 키보드 드라이버(36)를 저장할 수 있다. 키보드 드라이버(36) 및 오퍼레이팅 시스템(18)은 함께 키 누름 또는 키 해제 등의 터치 키보드 이벤트를 검출하도록 동작가능하다. 키보드 드라이버(36)는 키보드 버퍼(38)에 결합되어 물리적 촉각 키보드(32)로부터 키보드 드라이버(36)에 의해 캡쳐된 출력을 저장한다.
터치 스크린(42)은 다수의 터치 센서(44)를 갖고, 메모리(16)는 터치 센서(44)에 대한 터치 센서 드라이버(46)를 저장할 수 있다. 터치 스크린(42)은 손가락 또는 손 또는 스타일러스 또는 다른 툴에 의해 터치될 수 있다. 터치 센서 드라이버(46) 및 오퍼레이팅 시스템(18)은 함께 터치 스크린 누름 또는 터치 스크린 해제 또는 터치 스크린 글라이드 또는 드래그 또는 키 스와이프 등의 터치 센서의 터치 이벤트를 검출하도록 동작가능하다. 터치 센서 드라이버(46)는 터치 센서 버퍼(48)에 결합되어 터치 센서(44)로부터 터치 센서 드라이버(46)에 의해 캡쳐된 출력을 저장한다. 오퍼레이팅 시스템(18)은 터치 센서 드라이버(46)에 의해 캡쳐된 출력을 샘플링하고 버퍼링하도록 동작가능하다. 샘플링은 활성화가 터치 센서 드라이버(46)에 의해 검출되었을때에만 수행되거나 오퍼레이팅 시스템(18)은 규칙적으로 출력을 샘플링 및 버퍼링하고 버퍼링된 출력 변화를 알림으로써 터치 이벤트를 검출할 수 있다.
터치 스크린(42)은 디스플레이(54)를 포함하고, 메모리(16)는 디스플레이(54) 상에 이미지를 디스플레이하는 디스플레이 드라이버(56)를 저장할 수 있다. 디스플레이 드라이버(56)는 디스플레이(54) 상에 디스플레이될 이미지를 저장하는 디스플레이 버퍼(58)에 결합된다. 디스플레이(54)에 대한 예의 불완전 리스트는 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이 및 유기 LED(OLED) 디스플레이를 포함한다.
메모리(16), 하드웨어 사용자 입력 컴포넌트(들)(22), 물리적 촉각 키보드(32) 및 터치 스크린(42)를 프로세서(14)에 결합하는 것은 단일 버스(11)로서 도 8에 도시된다.
휴대용 전자 장치(10)는 하나 이상의 하드웨어 센서(60)를 포함하고, 메모리(16)는 하드웨어 센서(60)와 인터페이스하기 위하여 오퍼레이팅 시스템(18)에 의해 사용되는 하나 이상의 센서 드라이버(61)를 저장할 수 있다. 하드웨어 센서(60)는 그 환경 내에서 휴대용 전자 장치(10)의 배향을 지시하거나 그 환경 내에서 휴대용 전자 장치(10)의 움직임을 지시하거나 그 환경 내에서 휴대용 전자 장치(10)의 배향 및 움직임을 지시하는 하드웨어 센서 출력을 생성하도록 동작가능하다.
예를 들어, 하드웨어 센서(60)는 가속계(62)를 포함할 수 있고, 센서 드라이버(61)는 가속계(62)와 인터페이스하기 위하여 오퍼레이팅 시스템(18)에 의해 사용되는 드라이버(63)를 포함할 수 있다.
다른 예에서, 하드웨어 센서(60)는 자이로스코프(64)를 포함할 수 있고, 센서 드라이버(61)는 자이로스코프(64)와 인터페이스하기 위하여 오퍼레이팅 시스템(18)에 의해 사용되는 드라이버(65)를 포함할 수 있다.
다른 예에서, 하드웨어 센서(60)는 자력계(66)를 포함할 수 있고, 센서 드라이버(61)는 자력계(66)와 인터페이스하기 위하여 오퍼레이팅 시스템(18)에 의해 사용되는 드라이버(67)를 포함할 수 있다.
도 9는 예시적인 휴대용 전자 장치(10) 및 3개의 좌표계를 나타낸다. 장치 좌표계(70)는 각각 "X", "Y" 및 "Z"로 표시되고 서로 수직인 3개의 축(72, 74 및 76)을 포함한다. 장치 좌표계(70)는 휴대용 전자 장치에 대하여 고정 배향을 갖는다. 즉, 휴대용 전자 장치(10)가 이동하여 그 배향이 변함에 따라 장치 좌표계(70)가 이동하여 그 배향을 변경한다. 중력 좌표계(80)는 각각 "G1", "G2" 및 "G3"로 표시되고 서로 수직인 3개의 축(82, 84 및 86)을 포함한다. 중력 좌표계(80)는 지구 중력에 대하여 고정된 배향을 갖는다. 즉, 중력 좌표계(80)는 항상 지구의 중력 방향을 지시한다. 자계 좌표계(90)는 "M1", "M2" 및 "M3"로 표시되고 서로 수직인 3개의 축(92, 94 및 96)을 갖는다. 자계 좌표계(90)는 지구 자계를 향하여 또는 휴대용 전자 장치(10)의 가까이에서 더 강한 다른 자계를 향하여 고정 배향을 갖는다.
하드웨어 센서(60)는 장치 좌표계(70)에 대하여 고정된 배향을 가지고 휴대용 전자 장치(10)에 장착된다.
하드웨어 센서(60)는 중력 좌표계(80) 또는 자계 좌표계(90)에 대하여 "절대" 배향 및/또는 움직임을 제공할 수 있다. 예를 들어, 자력계(66)는 자계 좌표계(90)에 대하여 장치 좌표계(70)의 배향에 대한 정보를 제공할 수 있다. 다른 예에서, 가속계(62)는 중력 좌표계(80)에 대하여 장치 좌표계(70)의 배향에 대한 정보를 제공할 수 있다.
하드웨어 센서(60)는 중력 좌표계(80) 또는 자계 좌표계(90)에 대한 절대 기준없이 장치 좌표계(70)에 상대적인 움직임 및/또는 배향 변화에 대한 정보를 제공할 수 있다. 예를 들어, 가속계(62)는 장치 좌표계(70)의 축(X, Y 및 Z)을 따라 휴대용 전자 장치(10)의 움직임에 대한 정보를 제공할 수 있고, 자이로스코프(64)는 장치 좌표계(70)의 축(X, Y 및 Z)을 따라 휴대용 전자 장치(10)의 배향에 대한 정보를 제공할 수 있다.
변형
본 문서는 터치를 통해 사용자 입력을 수락하도록 동작가능한 다수의 엘리먼트를 갖는 하드웨어 사용자 입력 컴포넌트 및 터치에 의해 영향을 받는 하드웨어 센서(예를 들어, 가속계 또는 자이로스코프 또는 자력계)를 갖는 장치에 대하여 설명하였다. 그러나, 터치 스크린을 갖고 다수의 키를 갖는 가상 키보드의 이미지가 터치 스크린 상에 디스플레이될 수 있는 장치에 대하여, 장치 내에 통합된 눈 추적 센서는, 사용자의 눈 이동을 추적하고 가상 키보드의 이미지가 디스플레이될 때 눈 추적 센서의 출력으로부터 키보드 입력을 결정하는데 사용될 수 있다. 상술한 바와 같이, 장치의 오퍼레이팅 시스템은 "전경에서" 또는 "초점을 맞추어" 프로세스가 실행되는 동안 임의의 검출된 키보드 입력을 프로세스에 알리도록 동작가능하고 "배경에서" 또는 "초점을 벗어나" 프로세스가 실행되는 동안 임의의 검출된 키보드 입력을 프로세스에 알리지 않도록 동작가능하다.
그 환경 내에서 장치의 움직임 및/또는 배향 변화를 지시하는 하드웨어 센서 출력에 대하여 상술한 어프로치 및 변형은 변경되어 눈 추적 센서의 출력에 적용될 수 있다. 예를 들어, 공격 차단을 위한 "수신 방지" 어프로치는 눈 추적 센서의 드라이버 및/또는 오프레이팅 시스템을 포함하고, 오퍼레이팅 시스템이 임의의 검출된 키보드 출력을 프로세스에 알리지 않도록 동작가능한 기간 동안 눈 추적 센서 출력이 프로세스에 의해 수신가능하지 않도록 구성된다.
본 발명은 구조적 특징 및/또는 방법론에 특정한 언어로 설명하였지만, 첨부된 청구범위에 기재된 본 발명은 상술한 특정 특징 또는 동작에 반드시 한정되는 것은 아니다. 오히려, 상술한 특정 특징 또는 동작은 청구범위를 구현하는 예시적인 형태로 개시된다.
첨부 A
동기 통신을 위한 의사 코드 예
이하의 의사 코드 예는 센서 드라이버 내의 기능으로 설계된다. 의사 코드 예는 wait_for_hardware_sensor_sample()이 1000/hardware_sensor_rate 밀리초를 기다린 후에 새로운 센서 샘플을 반환할 것이라는 가정에 기초한다. 옵션에 대한 특정한 설정을 나타내는 텍스트 라인이 앞에 붙은 다수의 상이한 옵션이 제시된다. 애플리케이션은 이용가능할 때 센서 샘플로 복귀하는 get_sensor_sample을 호출한다.
의사 코드 예에서, 면제되는 프로세스는 특전 애플리케이션이라 한다. 의사 코드 예는 변경되어 키보드가 디스플레이될 때에만 어프로치가 구현되도록 한다. 이 변형을 수행하기 위하여 애플리케이션이 특전이 있는지를 체크한 후에(즉, "if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )", 및 "break;" 라인 쌍 후에) 다음의 라인을 부가한다.
if( is_keyboard_displayed() == false )
/* The keyboard is not displayed, and therefore we can deliver a sensor event */
break;
예 1 - 배경에 있는 것으로 제한된 페이크 하드웨어 센서 출력 없음 (즉, 오퍼레이팅 시스템이 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 동안 하드웨어 센서 출력의 수신 방지).
function get_sensor_sample() {
do {
sensor_event = wait_for_hardware_sensor_sample();
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true )
/* Foreground applications are not limited */
break;
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )
/* Privileged applications are not limited */
break;
if( time_delta < 1000/max_unprivileged_rate )
/* Not enough time has elapsed for the sample rate allowed
* by unprivileged background applications. */
continue;
} while( true );
application.last_sample_time = current_time();
return sensor_event;
}
예 2 - 배경에 있는 것으로 제한된 예비 실제 하드웨어 센서 출력과 혼합된 페이크 하드웨어 센서 출력 (즉, 오퍼레이팅 시스템이 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 동안).
function get_sensor_sample() {
do {
sensor_event = wait_for_hardware_sensor_sample();
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true )
/* Foreground applications are not limited */
break;
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )
/* Privileged applications are not limited */
break;
time_delta = current_time() - application.last_real_sample_time;
if( time_delta < 1000/max_unprivileged_rate ) {
/* Not enough time has elapsed for the sample rate allowed
* by unprivileged background applications. */
application.last_sample_time = current_time();
return generate_fake_sample(sensor_event);
}
} while( true );
application.last_sample_time = current_time();
application.last_real_sample_time = current_time();
return sensor_event;
}
예 3 - 마지막 터치 스크린 또는 키보드 이벤트의 시간에 의해 제한된 페이크 하드웨어 센서 출력 없음 (즉, 터치 이벤트 윈도우를 통한 타이밍).
sensor_event_predelay = 75; /* This is configurable */
sensor_event_postdelay = 200; /* This is configurable */
function get_sensor_sample() {
do {
sensor_event = wait_for_hardware_sensor_sample();
/* Delay ALL sensor events by putting them in a FIFO queue. This
* has the effect of making sure that each sensor event is delayed
* by sensor_event_predelay milliseconds before it delivered to
* any process */
queue_depth = sensor_event_predelay*hardware_sensor_rate / 1000;
if( sensor_queue.length < queue_depth ) {
sensor_queue.queue( sensor_event );
continue;
} else {
sensor_queue.queue( sensor_event );
sensor_event = sensor_queue.dequeue();
}
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true )
/* Foreground applications are not limited */
break;
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )
/* Privileged applications are not limited */
break;
if( current_time() - last_touchscreen_event() < sensor_event_predelay + sensor_event_postdelay )
/* The current sensor sample arrived close enough to a touchscreen event */
continue;
if( current_time() - last_keyboard_event() < sensor_event_predelay + sensor_event_postdelay )
/* The current sensor sample arrived close enough to a keyboard event */
continue;
} while( true );
application.last_sample_time = current_time();
return sensor_event;
}
예 4 - 마지막 터치 스크린 이벤트의 시간에 의해 제한된 페이크 하드웨어 센서 출력 (즉, 터치 이벤트 윈도우를 통한 타이밍).
sensor_event_predelay = 75; /* This is configurable */
sensor_event_postdelay = 200; /* This is configurable */
function get_sensor_sample() {
do {
sensor_event = wait_for_hardware_sensor_sample();
/* Delay ALL sensor events by putting them in a FIFO queue. This
* has the effect of making sure that each sensor event is delayed
* by sensor_event_predelay milliseconds before it delivered to
* any process */
queue_depth = sensor_event_predelay*hardware_sensor_rate / 1000;
if( sensor_queue.length < queue_depth ) {
sensor_queue.queue( sensor_event );
continue;
} else {
sensor_queue.queue( sensor_event );
sensor_event = sensor_queue.dequeue();
}
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true )
/* Foreground applications are not limited */
break;
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )
/* Privileged applications are not limited */
break;
if( current_time() - last_touchscreen_event() < sensor_event_predelay + sensor_event_postdelay ) {
/* The current sensor sample arrived close enough to a touchscreen event */
application.last_sample_time = current_time();
return generate_fake_sample(sensor_event);
}
if( current_time() - last_keyboard_event() < sensor_event_predelay + sensor_event_postdelay ) {
/* The current sensor sample arrived close enough to a keyboard event */
application.last_sample_time = current_time();
return generate_fake_sample(sensor_event);
}
} while( true );
application.last_sample_time = current_time();
return sensor_event;
}
예 5 - 마지막 터치 스크린 이벤트의 시간에 의해 제한된 페이크 하드웨어 센서 출력 없음 (즉, 터치 이벤트 윈도우를 통한 타이밍), 단지 임의의 프로세스로 센서 지연(즉, 제어 샘플링 레이트).
sensor_event_predelay = 75; /* This is configurable */
sensor_event_postdelay = 200; /* This is configurable */
function get_sensor_sample( ) {
do {
sensor_event = wait_for_hardware_sensor_sample();
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true ) {
/* Foreground applications are not limited */
sensor_queue.delete_all();
break;
}
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) ) {
/* Privileged applications are not limited */
sensor_queue.delete_all();
break;
}
/* Delay the sensor event by putting it in a FIFO queue. This
* has the effect of making sure that each sensor event is delayed
* by sensor_event_predelay milliseconds before it delivered to
* any process */
queue_depth = sensor_event_predelay*hardware_sensor_rate / 1000;
if( sensor_queue.length < queue_depth ) {
sensor_queue.queue( sensor_event );
continue;
} else {
sensor_queue.queue( sensor_event );
sensor_event = sensor_queue.dequeue();
}
if( current_time() - last_touchscreen_event() < sensor_event_predelay + sensor_event_postdelay )
/* The current sensor sample arrived close enough to a touchscreen event */
continue;
if( current_time() - last_keyboard_event() < sensor_event_predelay + sensor_event_postdelay )
/* The current sensor sample arrived close enough to a keyboard event */
continue;
} while( true );
application.last_sample_time = current_time();
return sensor_event;
}
예 6 - 마지막 터치 스크린 이벤트의 시간에 의해 제한된 페이크 하드웨어 센서 출력 (즉, 터치 이벤트 윈도우를 통한 타이밍), 단지 임의의 프로세스로 센서 지연(즉, 제어 샘플링 레이트).
sensor_event_predelay = 75; /* This is configurable */
sensor_event_postdelay = 200; /* This is configurable */
function get_sensor_sample( ) {
do {
sensor_event = wait_for_hardware_sensor_sample();
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true ) {
/* Foreground applications are not limited */
sensor_queue.delete_all();
break;
}
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) ) {
/* Privileged applications are not limited */
sensor_queue.delete_all();
break;
}
/* Delay the sensor event by putting it in a FIFO queue. This
* has the effect of making sure that each sensor event is delayed
* by sensor_event_predelay milliseconds before it delivered to
* any process */
queue_depth = sensor_event_predelay*hardware_sensor_rate / 1000;
if( sensor_queue.length < queue_depth ) {
sensor_queue.queue( sensor_event );
continue;
} else {
sensor_queue.queue( sensor_event );
sensor_event = sensor_queue.dequeue();
}
if( current_time() - last_touchscreen_event() < sensor_event_predelay + sensor_event_postdelay ) {
/* The current sensor sample arrived close enough to a touchscreen event */
application.last_sample_time = current_time();
return generate_fake_sample(sensor_event);
}
if( current_time() - last_keyboard_event() < sensor_event_predelay + sensor_event_postdelay ) {
/* The current sensor sample arrived close enough to a keyboard event */
application.last_sample_time = current_time();
return generate_fake_sample(sensor_event);
}
} while( true );
application.last_sample_time = current_time();
return sensor_event;
}
첨부 B
비동기 통신을 위한 의사 코드 예
이하의 의사 코드 예는 센서 드라이버 내의 기능으로 설계된다. 의사 코드 예는 센서 이벤트가 고정된 타임 라인 상에서 초당 hardware_sensor_rate 이벤트의 레이트에서 도달한다는 가정에 기초한다(즉, 새로운 하드웨어 센서는 매 1/hardware_sensor_rate 초의 스케줄로 도달할 것이다). 옵션에 대한 특정한 설정을 나타내는 텍스트 라인이 앞에 붙은 다수의 상이한 옵션이 제시된다. 모든 시간이 밀리초이다.
의사 코드 예에서, 면제되는 프로세스는 특전 애플리케이션이라 한다. 의사 코드 예는 변경되어 키보드가 디스플레이될 때에만 어프로치가 구현되도록 한다. 이 변형을 수행하기 위하여 애플리케이션이 특전이 있는지를 체크한 후에(즉, "if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )", 및 "break;" 라인 쌍 후에) 다음의 라인을 부가한다.
if( is_keyboard_displayed() == false )
/* The keyboard is not displayed, and therefore we can deliver a sensor event */
break;
예 1 - 배경에 있는 것으로 제한된 페이크 하드웨어 센서 출력 없음 (즉, 오퍼레이팅 시스템이 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 동안 하드웨어 센서 출력의 수신 방지).
function receive_sensor_sample( sensor_event ) {
for( i = 0; i < num_application_listeners(); i++ ) {
application = get_application_listener(i);
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1000/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true )
/* Foreground applications are not limited */
goto deliver_sample;
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )
/* Privileged applications are not limited */
goto deliver_sample;
if( time_delta < 1000/max_unprivileged_rate )
/* Not enough time has elapsed for the sample rate allowed
* by unprivileged background applications. */
continue;
deliver_sample:
application.alert( sensor_event );
application.last_sample_time = current_time();
}
예 2 - 배경에 있는 것으로 제한된 예비 실제 하드웨어 센서 출력과 혼합된 페이크 하드웨어 센서 출력 (즉, 오퍼레이팅 시스템이 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 동안).
function receive_sensor_sample( sensor_event ) {
for( i = 0; i < num_application_listeners(); i++ ) {
application = get_application_listener(i);
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1000/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true )
/* Foreground applications are not limited */
goto deliver_sample;
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )
/* Privileged applications are not limited */
goto deliver_sample;
time_delta = current_time() - application.last_real_sample_time;
if( time_delta < 1000/max_unprivileged_rate ) {
/* Not enough time has elapsed for the sample rate allowed
* by unprivileged background applications. */
application.alert( generate_fake_sample(sensor_event) )
application.last_sample_time = current_time();
continue;
}
deliver_sample:
application.alert( sensor_event );
application.last_sample_time = current_time();
application.last_real_sample_time = current_time();
}
}
예 3 - 마지막 터치 스크린 또는 키보드 이벤트의 시간에 의해 제한된 페이크 하드웨어 센서 출력 없음 (즉, 터치 이벤트 윈도우를 통한 타이밍).
sensor_event_predelay = 75; /* This is configurable */
sensor_event_postdelay = 200; /* This is configurable */
function receive_sensor_sample( sensor_event ) {
/* Delay ALL sensor events by putting them in a FIFO queue. This
* has the effect of making sure that each sensor event is delayed
* by sensor_event_predelay milliseconds before it delivered to
* any process */
queue_depth = sensor_event_predelay*hardware_sensor_rate / 1000;
if( sensor_queue.length < queue_depth ) {
sensor_queue.queue( sensor_event );
return;
} else {
sensor_queue.queue( sensor_event );
sensor_event = sensor_queue.dequeue();
}
for( i = 0; i < num_application_listeners(); i++ ) {
application = get_application_listener(i);
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1000/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true )
/* Foreground applications are not limited */
goto deliver_sample;
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )
/* Privileged applications are not limited */
goto deliver_sample;
if( current_time() - last_touchscreen_event() < sensor_event_predelay + sensor_event_postdelay )
/* The current sensor sample arrived close enough to a touchscreen event */
continue;
if( current_time() - last_keyboard_event() < sensor_event_predelay + sensor_event_postdelay )
/* The current sensor sample arrived close enough to a keyboard event */
continue;
deliver_sample:
application.alert( sensor_event );
application.last_sample_time = current_time();
}
}
예 4 - 마지막 터치 스크린 이벤트의 시간에 의해 제한된 페이크 하드웨어 센서 출력 (즉, 터치 이벤트 윈도우를 통한 타이밍).
sensor_event_predelay = 75; /* This is configurable */
sensor_event_postdelay = 200; /* This is configurable */
function receive_sensor_sample( sensor_event ) {
/* Delay ALL sensor events by putting them in a FIFO queue. This
* has the effect of making sure that each sensor event is delayed
* by sensor_event_predelay milliseconds before it delivered to
* any process */
queue_depth = sensor_event_predelay*hardware_sensor_rate / 1000;
if( sensor_queue.length < queue_depth ) {
sensor_queue.queue( sensor_event );
return;
} else {
sensor_queue.queue( sensor_event );
sensor_event = sensor_queue.dequeue();
}
for( i = 0; i < num_application_listeners(); i++ ) {
application = get_application_listener(i);
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1000/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true )
/* Foreground applications are not limited */
goto deliver_sample;
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )
/* Privileged applications are not limited */
goto deliver_sample;
if( current_time() - last_touchscreen_event() < sensor_event_predelay +sensor_event_postdelay ) {
/* The current sensor sample arrived close enough to a touchscreen event */
application.alert( generate_fake_sample(sensor_event) )
continue;
}
if( current_time() - last_keyboard_event() < sensor_event_predelay +sensor_event_postdelay ) {
/* The current sensor sample arrived close enough to a keyboard event */
application.alert( generate_fake_sample(sensor_event) )
continue;
}
deliver_sample:
application.alert( sensor_event );
application.last_sample_time = current_time();
}
}
예 5 - 마지막 터치 스크린 이벤트의 시간에 의해 제한된 페이크 하드웨어 센서 출력 없음 (즉, 터치 이벤트 윈도우를 통한 타이밍), 단지 임의의 프로세스로 센서 지연(즉, 제어 샘플링 레이트).
sensor_event_predelay = 75; /* This is configurable */
sensor_event_postdelay = 200; /* This is configurable */
function receive_sensor_sample( sensor_event ) {
for( i = 0; i < num_application_listeners(); i++ ) {
application = get_application_listener(i);
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1000/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true )
/* Foreground applications are not limited */
goto deliver_sample;
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )
/* Privileged applications are not limited */
goto deliver_sample;
continue;
deliver_sample:
application.alert( sensor_event );
application.last_sample_time = current_time();
}

/* Delay the sensor event by putting it in a FIFO queue. This
* has the effect of making sure that each sensor event is delayed
* by sensor_event_predelay milliseconds before it delivered to
* any process */
queue_depth = sensor_event_predelay*hardware_sensor_rate / 1000;
if( sensor_queue.length < queue_depth ) {
sensor_queue.queue( sensor_event );
return;
} else {
sensor_queue.queue( sensor_event );
sensor_event = sensor_queue.dequeue();
}
for( i = 0; i < num_application_listeners(); i++ ) {
application = get_application_listener(i);
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1000/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true )
/* Foreground applications are not limited - their event
* was delivered in the previous for loop */
continue;
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )
/* Privileged applications are not limited - their event
* was delivered in the previous for loop */
continue;
if( current_time() - last_touchscreen_event() < sensor_event_predelay + sensor_event_postdelay )
/* The current sensor sample arrived close enough to a touchscreen event */
continue;
if( current_time() - last_keyboard_event() < sensor_event_predelay + sensor_event_postdelay )
/* The current sensor sample arrived close enough to a keyboard event */
continue;
application.alert( sensor_event );
application.last_sample_time = current_time();
}
}
예 6 - 마지막 터치 스크린 이벤트의 시간에 의해 제한된 페이크 하드웨어 센서 출력 (즉, 터치 이벤트 윈도우를 통한 타이밍), 단지 임의의 프로세스로 센서 지연(즉, 제어 샘플링 레이트).
sensor_event_predelay = 75; /* This is configurable */
sensor_event_postdelay = 200; /* This is configurable */
function receive_sensor_sample( sensor_event ) {
for( i = 0; i < num_application_listeners(); i++ ) {
application = get_application_listener(i);
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1000/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true )
/* Foreground applications are not limited */
goto deliver_sample;
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )
/* Privileged applications are not limited */
goto deliver_sample;
continue;
deliver_sample:
application.alert( sensor_event );
application.last_sample_time = current_time();
}

/* Delay the sensor event by putting it in a FIFO queue. This
* has the effect of making sure that each sensor event is delayed
* by sensor_event_predelay milliseconds before it delivered to
* any process */
queue_depth = sensor_event_predelay*hardware_sensor_rate / 1000;
if( sensor_queue.length < queue_depth ) {
sensor_queue.queue( sensor_event );
return;
} else {
sensor_queue.queue( sensor_event );
sensor_event = sensor_queue.dequeue();
}
for( i = 0; i < num_application_listeners(); i++ ) {
application = get_application_listener(i);
/* The time_delta is the number of milliseconds since the last sample
was delivered to the application. */
time_delta = current_time() - application.last_sample_time;
if( time_delta < 1000/application.sample_rate )
/* Not enough time has elapsed for the sample rate requested
* by the application. */
continue;
if( application.is_foreground() == true )
/* Foreground applications are not limited - their event
* was delivered in the previous for loop */
continue;
if( application.is_privileged( BACKGROUND_SENSOR_DATA ) )
/* Privileged applications are not limited - their event
* was delivered in the previous for loop */
continue;
if( current_time() - last_touchscreen_event() < sensor_event_predelay + sensor_event_postdelay ) {
/* The current sensor sample arrived close enough to a touchscreen event */
application.alert( generate_fake_sample(sensor_event) )
continue;
}
if( current_time() - last_keyboard_event() < sensor_event_predelay + sensor_event_postdelay ) {
/* The current sensor sample arrived close enough to a keyboard event */
application.alert( generate_fake_sample(sensor_event) )
continue;
}
application.alert( sensor_event );
application.last_sample_time = current_time();
}
}
10: 휴대용 전자 장치
14: 프로세서
16: 메모리
18: 오퍼레이팅 시스템
20: 소프트웨어 애플리케이션
22: 하드웨어 사용자 입력 컴포넌트(들)
24: 엘리먼트
26: 사용자 입력 드라이버
32: 물리적 촉각 키보드
34: 키

Claims (14)

  1. 휴대용 전자 장치(10, 100, 200, 300)에 있어서,
    프로세서(14);
    상기 휴대용 전자 장치 내에 통합된 하드웨어 센서(60, 62, 64, 66) - 상기 하드웨어 센서는 그 환경 내에서 상기 휴대용 전자 장치의 배향 또는 움직임 또는 배향과 움직임 둘 다를 나타내는 하드웨어 센서 출력을 생성하도록 동작 가능함 -;
    상기 휴대용 전자 장치 내에 통합된 하드웨어 사용자 입력 컴포넌트(22, 32, 42, 102, 202, 302, 306) - 상기 하드웨어 사용자 입력 컴포넌트는 터치를 통한 사용자 입력을 수락하도록 동작가능한 다수의 엘리먼트(24, 34, 44, 104, 204, 304)를 가짐 -; 및
    상기 프로세서에 결합된 메모리(16)를 포함하고,
    상기 메모리는,
    오퍼레이팅 시스템(18);
    상기 하드웨어 센서와 인터페이스하기 위하여 상기 오퍼레이팅 시스템에 의해 사용되는 센서 드라이버(61, 63, 65, 67);
    상기 하드웨어 사용자 입력 컴포넌트와 인터페이스하기 위하여 상기 오퍼레이팅 시스템에 의해 사용되는 사용자 입력 드라이버(26, 36, 46) - 상기 사용자 입력 드라이버 및 오퍼레이팅 시스템은 함께 상기 엘리먼트가 관련된 터치 이벤트를 검출하도록 동작가능함 -; 및
    소프트웨어 애플리케이션(20)
    을 저장하고,
    상기 소프트웨어 애플리케이션이 프로세스로서 상기 프로세서에 의해 실행되는 동안, 높은 샘플링 레이트에서 상기 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리도록 동작가능한 기간 동안 샘플링된 임의의 하드웨어 센서 출력이 프로세스에 의해 수신가능하고 낮은 샘플링 레이트에서 상기 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 기간 동안 샘플링된 임의의 하드웨어 센서 출력이 프로세스에 의해 수신가능하도록 상기 센서 드라이버 또는 상기 오퍼레이팅 시스템 또는 상기 센서 드라이버와 오퍼레이팅 시스템 둘 다가 구성되는 것인 휴대용 전자 장치.
  2. 휴대용 전자 장치(10, 100, 200, 300)에 있어서,
    프로세서(14);
    상기 휴대용 전자 장치 내에 통합된 하드웨어 센서(60, 62, 64, 66) - 상기 하드웨어 센서는 그 환경 내에서 상기 휴대용 전자 장치의 배향 또는 움직임 또는 배향과 움직임 둘 다를 나타내는 하드웨어 센서 출력을 생성하도록 동작 가능함 -;
    상기 휴대용 전자 장치 내에 통합된 하드웨어 사용자 입력 컴포넌트(22, 32, 42, 102, 202, 302, 306) - 상기 하드웨어 사용자 입력 컴포넌트는 터치를 통한 사용자 입력을 수락하도록 동작가능한 다수의 엘리먼트(24, 34, 44, 104, 204, 304)를 가짐 -; 및
    상기 프로세서에 결합된 메모리(16)를 포함하고,
    상기 메모리는,
    오퍼레이팅 시스템(18);
    상기 하드웨어 센서와 인터페이스하기 위하여 상기 오퍼레이팅 시스템에 의해 사용되는 센서 드라이버(61, 63, 65, 67);
    상기 하드웨어 사용자 입력 컴포넌트와 인터페이스하기 위하여 상기 오퍼레이팅 시스템에 의해 사용되는 사용자 입력 드라이버(26, 36, 46) - 상기 사용자 입력 드라이버 및 오퍼레이팅 시스템은 함께 상기 엘리먼트가 관련된 터치 이벤트를 검출하도록 동작가능함 -; 및
    소프트웨어 애플리케이션(20)
    을 저장하고,
    상기 소프트웨어 애플리케이션이 프로세스로서 상기 프로세서에 의해 실행되는 동안, 낮은 샘플링 레이트에서 상기 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 기간 동안 발생한 터치 이벤트 윈도우 동안 샘플링된 임의의 하드웨어 센서 출력이 프로세스에 의해 수신가능하고 높은 샘플링 레이트에서 상기 소프트웨어 애플리케이션의 실행 동안 모든 다른 시간에 샘플링된 임의의 하드웨어 센서 출력이 프로세스에 의해 수신가능하도록 상기 센서 드라이버 또는 상기 오퍼레이팅 시스템 또는 상기 센서 드라이버와 오퍼레이팅 시스템 둘 다가 구성되고, 터치 이벤트 윈도우는 터치 이벤트의 검출 전에 시작하고 상기 터치 이벤트의 검출 후의 언젠가 종료하는 것인 휴대용 전자 장치.
  3. 제1항 또는 제2항에 있어서, 상기 하드웨어 입력 컴포넌트는 물리적 촉각 키보드(32, 102, 302)이고, 상기 엘리먼트는 상기 키보드의 키(34, 104, 304)이고, 상기 터치 이벤트는 키 누름 또는 키 해제 또는 키 누름과 키 해제 둘 다를 포함하는 것인 휴대용 전자 장치.
  4. 제1항 또는 제2항에 있어서, 상기 하드웨어 사용자 입력 컴포넌트는 터치 스크린(42, 202, 306)이고, 상기 엘리먼트는 터치 센서(44)이고, 상기 터치 이벤트는 누름 또는 해제 또는 누름과 해제 둘 다를 포함하고, 상기 메모리는 상기 터치 스크린 상에 이미지를 디스플레이하기 위한 디스플레이 드라이버(56)를 더 저장하는 것인 휴대용 전자 장치.
  5. 제4항에 있어서, 상기 터치 스크린 상에 가상 키보드의 이미지(308)가 디스플레이가능하고, 상기 터치 이벤트는 가상 키보드 내의 키 누름 또는 키 해제 또는 키 누름과 키 해제 둘 다 또는 키의 키 스와이프(swipe)를 포함하는 것인 휴대용 전자 장치.
  6. 제1항 또는 제2항에 있어서, 상기 하드웨어 센서는 가속계(62)를 포함하는 것인 휴대용 전자 장치.
  7. 제1항 또는 제2항에 있어서, 상기 하드웨어 센서는 자이로스코프(64)를 포함하는 것인 휴대용 전자 장치.
  8. 제1항 또는 제2항에 있어서, 상기 하드웨어 센서는 자력계(66)를 포함하는 것인 휴대용 전자 장치.
  9. 제1항에 있어서, 그 환경 내에서 상기 휴대용 전자 장치의 배향 또는 움직임 또는 배향과 움직임 둘 다를 나타내는 추가의 하드웨어 센서 출력을 생성하도록 동작가능한 추가의 하드웨어 센서(60, 62, 64, 66)를 더 포함하고, 상기 메모리는 상기 추가의 하드웨어 센서와 인터페이싱하기 위하여 상기 오퍼레이팅 시스템에 의해 사용되는 추가의 센서 드라이버(61, 63, 65, 67)를 더 저장하고, 상기 소프트웨어 애플리케이션이 프로세스로서 프로세서에 의해 실행되는 동안 높은 샘플링 레이트에서 상기 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리도록 동작가능한 기간 동안 샘플링된 임의의 추가의 센서 출력이 프로세스에 의해 수신가능하고 낮은 샘플링 레이트에서 상기 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 기간 동안 샘플링된 임의의 추가의 센서 출력이 프로세스에 의해 수신가능하도록 상기 추가의 센서 드라이버 또는 상기 오퍼레이팅 시스템 또는 상기 추가의 센서 드라이버와 오퍼레이팅 시스템 둘 다가 구성되는 것인 휴대용 전자 장치.
  10. 제2항에 있어서, 그 환경 내에서 상기 휴대용 전자 장치의 배향 또는 움직임 또는 배향과 움직임 둘 다를 나타내는 추가의 하드웨어 센서 출력을 생성하도록 동작가능한 추가의 하드웨어 센서(60, 62, 64, 66)를 더 포함하고, 상기 메모리는 상기 추가의 하드웨어 센서와 인터페이싱하기 위하여 상기 오퍼레이팅 시스템에 의해 사용되는 추가의 센서 드라이버(61, 63, 65, 67)를 더 저장하고, 상기 소프트웨어 애플리케이션이 프로세스로서 프로세서에 의해 실행되는 동안 낮은 샘플링 레이트에서 상기 오퍼레이팅 시스템이 임의의 검출된 터치 이벤트를 프로세스에 알리지 않도록 동작가능한 기간 동안 발생한 터치 이벤트 윈도우 동안 샘플링된 임의의 추가의 센서 출력이 프로세스에 의해 수신가능하고 높은 샘플링 레이트에서 상기 소프트웨어 애플리케이션의 실행 동안 모든 다른 시간에 샘플링된 임의의 추가의 센서 출력이 프로세스에 의해 수신가능하도록 상기 추가의 센서 드라이버 또는 상기 오퍼레이팅 시스템 또는 상기 추가의 센서 드라이버와 오퍼레이팅 시스템 둘 다가 구성되는 것인 휴대용 전자 장치.
  11. 제9항 또는 제10항에 있어서, 상기 추가의 하드웨어 센서는 가속계(62)를 포함하는 것인 휴대용 전자 장치.
  12. 제9항 또는 제10항에 있어서, 상기 추가의 하드웨어 센서는 자이로스코프(64)를 포함하는 것인 휴대용 전자 장치.
  13. 제9항 또는 제10항에 있어서, 상기 추가의 하드웨어 센서는 자력계(66)를 포함하는 것인 휴대용 전자 장치.
  14. 제1항 또는 제2항에 있어서, 상기 메모리는 다른 소프트웨어 애플리케이션(20)을 저장하도록 배치되고, 상기 오퍼레이팅 시스템은 상기 다른 소프트웨어 애플리케이션이 상기 센서 출력의 샘플의 수신의 허용을 등록하도록 동작가능하고, 상기 다른 소프트웨어 애플리케이션이 다른 프로세스로서 상기 프로세서에 의해 실행되는 동안 상기 센서 출력이 언제 샘플링되는지와 관계없이 높은 샘플링 레이트에서 상기 하드웨어 센서로부터 샘플링된 임의의 센서 출력이 다른 프로세스에 의해 수신가능하도록 상기 드라이버 또는 상기 오퍼레이팅 시스템 또는 상기 드라이버와 오퍼레이팅 시스템 둘 다가 구성되는 것인 휴대용 전자 장치.
KR1020130014558A 2012-02-15 2013-02-08 하드웨어 센서 출력의 분석을 포함하는 공격 차단을 위한 샘플링 레이트 변경 KR101451000B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP12155670.8 2012-02-15
EP12155670.8A EP2629221B1 (en) 2012-02-15 2012-02-15 Altering sampling rate to thwart attacks that involve analyzing hardware sensor output

Publications (2)

Publication Number Publication Date
KR20130094241A true KR20130094241A (ko) 2013-08-23
KR101451000B1 KR101451000B1 (ko) 2014-10-15

Family

ID=45655886

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130014558A KR101451000B1 (ko) 2012-02-15 2013-02-08 하드웨어 센서 출력의 분석을 포함하는 공격 차단을 위한 샘플링 레이트 변경

Country Status (4)

Country Link
EP (1) EP2629221B1 (ko)
KR (1) KR101451000B1 (ko)
CN (2) CN105760757B (ko)
CA (1) CA2804608C (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102013003205A1 (de) 2013-02-26 2014-08-28 Giesecke & Devrient Gmbh Verfahren zur sicheren Zugangscode-Eingabe
EP2945053B1 (en) 2014-05-16 2021-10-20 EM Microelectronic-Marin SA Operating a FIFO memory
US9842209B2 (en) * 2015-05-08 2017-12-12 Mcafee, Llc Hardened event counters for anomaly detection
EP3767245B1 (en) * 2018-04-24 2022-10-19 Mitsubishi Electric Corporation Attack detection device, attack detection method, and attack detection program
CN108763925A (zh) * 2018-05-16 2018-11-06 首都师范大学 一种基于融合间隔和历史测量的传感器攻击检测方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060044206A (ko) * 2004-11-11 2006-05-16 주식회사 팬택 자동 잠금 기능을 수행하는 휴대용 단말기 및 그 방법
US8462109B2 (en) * 2007-01-05 2013-06-11 Invensense, Inc. Controlling and accessing content using motion processing on mobile devices
KR100795750B1 (ko) 2007-04-04 2008-01-21 삼성전자주식회사 휴대단말기에서 잠금모드 해제 방법 및 장치
KR100967570B1 (ko) * 2007-12-28 2010-07-05 주식회사 휴턴 사용자의 암호패턴을 인식하여 시간 관리를 실행하는컴퓨터전원관리장치
US20090225026A1 (en) * 2008-03-06 2009-09-10 Yaron Sheba Electronic device for selecting an application based on sensed orientation and methods for use therewith
US8174503B2 (en) * 2008-05-17 2012-05-08 David H. Cain Touch-based authentication of a mobile device through user generated pattern creation
KR101600792B1 (ko) * 2008-12-29 2016-03-09 엘지전자 주식회사 해킹 방지기능을 구비하는 휴대 단말기 및 그 동작방법
CN101984640B (zh) * 2010-10-28 2014-11-05 浙江大学 基于凌动处理器的Android手机平台的能耗测量方法

Also Published As

Publication number Publication date
CN103258161A (zh) 2013-08-21
CN103258161B (zh) 2016-02-17
CN105760757B (zh) 2018-12-28
CN105760757A (zh) 2016-07-13
CA2804608A1 (en) 2013-08-15
CA2804608C (en) 2017-01-17
EP2629221B1 (en) 2017-04-05
KR101451000B1 (ko) 2014-10-15
EP2629221A1 (en) 2013-08-21

Similar Documents

Publication Publication Date Title
US9958964B2 (en) Altering sampling rate to thwart attacks that involve analyzing hardware sensor output
KR101451000B1 (ko) 하드웨어 센서 출력의 분석을 포함하는 공격 차단을 위한 샘플링 레이트 변경
CN103713766B (zh) 用于检测和处理对触摸屏的无意触摸的方法和系统
US9934066B2 (en) Priority-based managing and suspension of window processes in a browser application
US20160373631A1 (en) Multifunction physical button
KR102085267B1 (ko) 변환가능한 컴퓨팅 디바이스의 동작 상태를 변경하기 위한 가속도계 입력의 사용
KR20130097594A (ko) 단말기에서 콘텐츠 이동 방법 및 장치
US8631490B2 (en) Altering sampling rate to thwart attacks that involve analyzing hardware sensor output
KR101586115B1 (ko) 하드웨어 센서 출력의 분석을 포함하는 공격 차단
US10346031B2 (en) View activation via hit testing in an asynchronous windowing system
TWM471654U (zh) 可攜式電子裝置
US8698822B1 (en) Managing visual updates
CN112347465B (zh) 安装包权限的提供方法、装置、设备及存储介质
Yatani et al. Information transfer techniques for mobile devices by" toss" and" swing" actions
Kousa Design, implementation and evaluation of a low-cost, high accuracy feedback latency measurement system
WO2019066317A1 (ko) 전자 장치 및 그의 제어 방법
JP2015011630A (ja) 画像処理装置、及び画像処理方法
JP2015215752A (ja) 情報処理装置、情報処理システム、共有制御方法及びプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170927

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180927

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190925

Year of fee payment: 6