KR102403138B1 - 보안 입력 메커니즘 기반 관리자 모드를 위한 방법 - Google Patents
보안 입력 메커니즘 기반 관리자 모드를 위한 방법 Download PDFInfo
- Publication number
- KR102403138B1 KR102403138B1 KR1020177007334A KR20177007334A KR102403138B1 KR 102403138 B1 KR102403138 B1 KR 102403138B1 KR 1020177007334 A KR1020177007334 A KR 1020177007334A KR 20177007334 A KR20177007334 A KR 20177007334A KR 102403138 B1 KR102403138 B1 KR 102403138B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- input
- mode
- secure
- host processor
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- 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/60—Protecting data
-
- 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/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/74—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/83—Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
컴퓨팅 시스템에 결합된 입력 디바이스로부터 데이터를 안전하게 수신하기 위한 시스템 및 방법이 개시된다. 시스템은 입력 디바이스로부터 데이터를 수신하도록 구성된 인터페이스, 코프로세서, 및 호스트 컴퓨터를 포함하고, 호스트 컴퓨터는 입력 핸들러 및 호스트 프로세서를 포함한다. 호스트 프로세서는 코드를 정상 모드에서 및 관리자 모드에서 실행시키도록 구성된다. 호스트 프로세서는 호스트 컴퓨터가 보안 입력 모드에 있을 때 데이터가 인터페이스로부터 이용가능한 것에 기초하여 정상 모드로부터 보안 모드로 스위치한다. 입력 핸들러는 인터페이스로부터 데이터를 수신하고 보안 모드에서 동작하는 동안 데이터를 수신한 것에 응답하여 수신된 데이터를 코프로세서로 발송한다.
Description
본 발명은 컴퓨팅 시스템들의 분야에 관한 것으로 보다 상세하게는 키보드를 통한 보안 입력(secureinput)의 구현예에 관한 것이다.
컴퓨팅 시스템들 예컨대, 퍼스널 컴퓨터들 (PC), 랩탑 컴퓨터들, 및 모바일 디바이스들 (예를 들어, 스마트폰들 및 태블릿들)은 여러 가지 일상 태스크들을 위하여 폭넓게 사용된다. 많은 태스크들은 유저의 신원을 확인하기 위해 태스크를 수행하는 패스워드 또는 다른 형태의 보안 코드 워드(codeword)를 입력하는 유저에 의존한다. "신원 도둑들(Identitythieves)" (즉, 흔히 악의적인 의도를 가지고 다른 사람이 유저인 체 하려고 시도하는)은 인터넷 또는 다른 통신 채널을 통하여 신원 도둑에 대한 정보를 발송하고 유저의 키보드로부터 키 스토크(keystoke)들을 로그할 수 있는 유저의 컴퓨터 상에 소프트웨어 프로그램을 인스톨함으로써 유저의 패스워드를 획득하려고 시도할 수 있다. 유저 입력을 로그하기 위한 이들 소프트웨어 프로그램들은 또한 "키로거(keylogger)들"라고 불리울 수 있고 악의적인 소프트웨어 (또한 본 출원에서 "말웨어(malware)"로서 언급된)의 형태이다. 신원 도둑들이 키로거를 유저의 컴퓨터상에 배치할 수 있는 한가지 방법은 유저가 인스톨할 수 있는 다른 무해한 것으로 보이는 소프트웨어 애플리케이션에 말웨어를 숨기는 것이다.
일단 키로거가 컴퓨터상에 인스톨된 후, 모든 키스트로크(keystroke)는 신원 도둑에 발송되고 캡쳐될 수 있다. 컴퓨터 상에 인스톨된 바이러스 방지(anti-virus) 소프트웨어는 키로거를 발견하고 그것을 제거하는 것이 가능할 수 있다. 그러나, 키로거를 발견하기 위해서, 바이러스 방지 소프트웨어는 그것을 인식할 수 있어어야 한다. 따라서, 바이러스 방지 프로그램들은 얼마간의 시간의 양동안 사용되었던 알려진 키로거들 발견을 더 잘 할 수 있다. 신원 도둑들에 의해 릴리즈되지 않았던 키로거는 유저가 그것을 발견하기 전에 적어도 일부 시간 기간동안 바이러스 방지 소프트웨어에 면역성이 있을 수 있고 바이러스 방지 프로그래머들은 그들의 바이러스 방지 프로그램들에 감지 정보를 추가할 수 있다. 이 시간 기간 동안 키로거가 검출불가능할 수 있을 때, 알아차리지 못하게 인스톨된 키로거를 갖는 임의의 유저는 그들의 정보, 특별히, 그들의 패스워드들을, 도용당하기 쉽고, 그들의 민감한 정보를 위험에 바뜨리기 쉬울 수 있다.
이런 키 로깅(logging) 시도를 방해하기 위해 다양한 기술들이 개발되어 왔다. 한가지 이런 방법은 보안 키보드를 사용하는 것이다. 보안 키보드는 통상 사용될 수 있는 디폴트(default) 키보드를 대체하기 위한 하드웨어 부분이다. 보안 키보드는 키보드로부터 컴퓨터로 발송되는 데이터를 암호화할 수 있고 데이터가 해당 키로거가 데이터를 판독할 수 이쓴 지점을 통과한 후에만 데이터를 복호화할 수 있다. 이런 시스템에서, 키로거는 로그된 데이터를 수신하는 신원 도둑이 사용할 수 없는 일관성 없는 횡설수설로 보일수 있는 것을 수신할 수 있다. 보안 키보드들은, 그러나, 비용이 많이 들 수 있고 소정의 유저에 바람직한 특징들을 가지고 이용할 수 없다.
키 로그 소프트웨어가 불안전한 키보드로부터 발송된 데이터를 액세스하는 것을 방지할 수 있는 방법이 원해진다. 키보드로부터 컴퓨팅 시스템내 호스트 프로세서로 데이터를 안전하게 전송하기 위한 시스템들 및 방법들이 본 출원에 제공된다.
컴퓨팅 시스템의 다양한 실시예들이 개시된다. 대체로, 시스템 및 방법들이 고려되고 상기 시스템은 입력 디바이스로부터 데이터를 수신하고 데이터가 수신된 때 신호를 어써트하도록 구성된 인터페이스를 포함할 수 있다. 상기 시스템은 코프로세서, 및 호스트 컴퓨터를 또한 포함할 수 있고, 상기 호스트 컴퓨터는 호스트 프로세서 및 입력 핸들러를 포함한다. 상기 입력 핸들러는 상기 인터페이스로부터 제 1 데이터를 수신하고 상기 호스트 프로세서가 정상 동작 모드에서 동작하는 동안 상기 인터페이스로부터의 제 1 신호에 응답하여 상기 수신된 제 1 데이터를 하나 이상의 메모리 위치들에 저장하도록 구성될 수 있다. 상기 호스트 컴퓨터는 유저 요청에 응답하여 보안 입력 모드(secure input mode)를 활성화시킬 수 있다. 상기 상기 호스트 프로세서는 상기 인터페이스로부터의 제 2 신호의 어써트에 응답하여 상기 정상 동작 모드로부터 관리자 동작 모드(privileged operating mode)로 진입할 수 있다. 상기 상기 호스트 프로세서가 상기 관리자 동작 모드로 진입한 것에 응답하여 상기 입력 핸들러는 그런 다음 상기 인터페이스로부터 제 2 데이터를 수신할 수 있다. 상기 입력 핸들러는 상기 수신된 제 2 데이터에 대응하는 코드 워드를 생성할 수 있고 상기 수신된 제 2 데이터 및 상기 코드 워드를 상기 코프로세서로 발송할 수 있다. 상기 코프로세서는 상기 수신된 제 2 데이터가 상기 코드 워드에 대응하는 것을 확인할 수 있다.
일 실시예에서, 상기 코프로세서는 세션 키 워드를 생성하고 상기 세션 키 워드를 상기 입력 핸들러와 공유하도록 구성될 수 있다. 다른 실시예에서, 상기 호스트 프로세서는 인터럽트(interrupt)의 어써트에 응답하여 상기 관리자 동작 모드로 진입하도록 더 구성되고, 상기 인터럽트의 어써트는 상기 인터페이스로부터 상기 제 2 신호에 응답일 수 있다. 추가 실시예에서, 상기 인터럽트는 상기 호스트 프로세서의 다른 인터럽트들 보다 더 높은 우선순위를 가질 수 있다.
소정의 실시예에서, 상기 입력 디바이스로부터 수신된 데이터 및 상기 코드 워드를 상기 코프로세서로 발송하기 위해, 상기 입력 핸들러는 상기 세션 키 워드를 이용하여 상기 수신된 데이터를 암호화하도록 더 구성될 수 있다. 다른 실시예에서, 상기 입력 핸들러는 상기 수신된 제 2 데이터가 상기 코드 워드에 대응한다고 상기 코프로세서가 확인한 결정에 응답하여 상기 확인된 데이터를 하나 이상의 메모리 위치들에 저장하도록 구성될 수 있다. 상기 입력 핸들러는 상기 수신된 제 2 데이터를 미리선택된 값으로 또한 대체할 수 있다. 추가 실시예에서, 상기 호스트 프로세서는 상기입력 핸들러가 상기 확인된 데이터를 저장한 것에 응답하여 상기 정상 동작 모드로 리턴하도록 더 구성될 수 있다.
도 1은 컴퓨팅 시스템의 다양한 실시예들의 예시이다.
도 2는 컴퓨팅 시스템의 실시예를 예시하는 블럭 다이어그램이다.
도 3 은 범용 직렬 버스 (USB) 입력 디바이스로 보안 통신을 지원하는 컴퓨팅 시스템의 실시예를 나타내는 블럭 다이어그램이다.
도 4는 퍼스널 시스템/2 (PS/2) 입력 디바이스로 보안 통신을 지원하는 컴퓨팅 시스템의 실시예를 나타내는 블럭 다이어그램이다.
도 5는 블루투스® 입력 디바이스로 보안 통신을 지원하는 컴퓨팅 시스템의 실시예를 나타내는 블럭 다이어그램이다.
도 6 은 입력 디바이스로부터의 데이터를 안전하게 하기 위한 방법의 실시예를 예시하는 흐름도이다.
도 7 은 입력 디바이스로 보안 통신을 지원하는 컴퓨팅 시스템의 실시예를 예시하는 블럭 다이어그램이다.
도 8 은 입력 디바이스로부터의 데이터를 안전하게 하기 위한 방법의 다른 실시예를 예시하는 흐름도이다.
도 9 은 보안 인증(authorization)을 지원하는 컴퓨팅 시스템의 실시예를 예시하는 블럭 다이어그램이다.
도 10 은 입력 디바이스를 이용하여 인증을 생성하기 위한 방법의 실시예를 예시하는 흐름도이다.
도 2는 컴퓨팅 시스템의 실시예를 예시하는 블럭 다이어그램이다.
도 3 은 범용 직렬 버스 (USB) 입력 디바이스로 보안 통신을 지원하는 컴퓨팅 시스템의 실시예를 나타내는 블럭 다이어그램이다.
도 4는 퍼스널 시스템/2 (PS/2) 입력 디바이스로 보안 통신을 지원하는 컴퓨팅 시스템의 실시예를 나타내는 블럭 다이어그램이다.
도 5는 블루투스® 입력 디바이스로 보안 통신을 지원하는 컴퓨팅 시스템의 실시예를 나타내는 블럭 다이어그램이다.
도 6 은 입력 디바이스로부터의 데이터를 안전하게 하기 위한 방법의 실시예를 예시하는 흐름도이다.
도 7 은 입력 디바이스로 보안 통신을 지원하는 컴퓨팅 시스템의 실시예를 예시하는 블럭 다이어그램이다.
도 8 은 입력 디바이스로부터의 데이터를 안전하게 하기 위한 방법의 다른 실시예를 예시하는 흐름도이다.
도 9 은 보안 인증(authorization)을 지원하는 컴퓨팅 시스템의 실시예를 예시하는 블럭 다이어그램이다.
도 10 은 입력 디바이스를 이용하여 인증을 생성하기 위한 방법의 실시예를 예시하는 흐름도이다.
본 개시의 다양한 수정예들 및 대안적 형태들이 가능할 수 있으나, 그것의 구체적 실시예들은 도면들에서 예로서 도시되었고 본 출원에 상세하게 설명될 것이다. 그러나, 도면들 및 거기에 대한 상세한 설명은 예시된 특정 형태에 대한 개시에 제한하는 것으로 의도되지 않지만, 그러나 그와는 반대로, 의도는 첨부된 청구항들에 의해 정의된 본 발명의 취지 및 범위내에 해당하는 모든 수정예들, 등가물들 및 대안들을 커버하는 것이다는 것이 이해되어야 한다. 본 출원에 사용된 제목들은 단지 구조적 목적을 위한 것이며 설명의 범위를 제한하기 위해 사용되도록 의도되지 않는다. 본 출원 전체에 걸쳐 사용된, 단어 "일 수 있다(may)"는 의무적 의미(즉, 해야 한다는 의미하는)보다는 허용적 의미(즉, 하기 위한 가능성을 가짐을 의미하는)로 사용된다. 유사하게, 단어들 "포함하다(include)", "포함하는(including)" 및 "포함하다(include)"는 포함하는 것을 의미하지만, 이에 제한되지 않는다.
다양한 유닛들, 회로들, 또는 다른 컴포넌트들은 태스크(task) 또는 태스크들을 수행 "하도록 구성된(configuredto)"으로 설명될 수 있다. 이런 상황들에서, "하도록 구성된다"는 일반적으로 동작 동안 태스크 또는 태스크들을 수행하는 "회로부를 갖는(having circuitry that)"을 의미하는 구조의 광범위한 열거이다. 이와 같이, 유닛/회로/컴포넌트는 심지어 유닛/회로/컴포넌트가 현재 온(on)이 아닐때라도 태스크를 수행하도록 구성될 수 있다. 일반적으로, "하도록 구성된"에 대응하는 구조를 형성하는 회로부는 하드웨어 회로들을 포함할 수 있다. 유사하게, 다양한 유닛들/회로들/컴포넌트들은 설명에 편의를 위하여 태스크 또는 태스크들을 수행하는 것으로 설명될 수 있다. 이런 설명들은 어구 "하도록 구성된"을 포함하는 것으로 해석되어야 한다. 하나 이상의 태스크들을 수행하도록 구성된 유닛/회로/컴포넌트를 인용하는 것은 명백하게 35U.S.C. § (112), 해당 유닛/회로/컴포넌트에 대한 문단 6 해석을 호출하지 않는 것으로 의도된다. 보다 일반적으로, 임의의 엘리먼트에 대한 인용은 명백하게 언어 "에 대한 수단들" 또는 "단계"가 구체적으로 나열되지 않으면 해당 엘리먼트에 대한 35U.S.C. § (112), 문단 6 해석을 호출하지 않는 것으로 의도된다.
실시예들의
상세한 설명
컴퓨터 시스템은 키보드 또는 인간 인터페이스 디바이스 (HID : Human Interface Device)의 다른 형태상에 입력된 민감한 정보를 감지 및 정보를 오용하려고 의도하는 개인들, 즉, "해커들" 또는 "신원 도둑들"에게 이 정보를 포워드하려고 할 수 있는 악의적인 키-로깅(key-logging) 소프트웨어 (통상 "키로거(keylogger)"으로 지칭된다)에 영향을 받기 쉬울 수 있다. 키로거는 컴퓨터 시스템내에 알아차리지 못하게 인스톨될 수 있고 또한 컴퓨터 시스템에 인스톨된 바이러스 방지 소프트웨어에 의해 검출불가능할 수 있다. 시스템에 인스톨된 키로거로부터 HID상에 데이터 입력을 보호할 수 있는 시스템들 및 방법들이 제공된다.
컴퓨팅 시스템들의 몇몇 실시예들이 도 1에 예시된다. 시스템 (101)은 데스크탑 컴퓨터를 나타낼 수 있고, 시스템 (102)은 랩탑 컴퓨터를 나타낼 수 있고, 시스템 (103)은 무선 키보드를 갖는 태블릿 또는 스마트폰를 나타낼 수 있다. 임의의 이들 컴퓨팅 시스템들은 키로거에 영향을 받기 쉬울 수 있다.
시스템 (101)은 하나 또는 HID들, 예컨대 키보드, 마우스, 마이크로폰, 카메라, 등을 포함할 수 있다. 임의의 이런 디바이스는 민감한 거래들을 수행 또는 개시하기 위한 데이터를 이용하고 유저로부터 입력을 수신하는 것이 가능할 수 있다. 민감한 거래들은 패스워드들을 입력하는 단계, 유저가 공개되는 것을 원치 않을 퍼스널 또는 단체 데이터, 및 유사한 것을 액세스하기 위해 사용될 수 있는 제스처(gesture)를 수행하는 단계를 포함할 수 있다.
시스템들 (102) 및 시스템 (103)은 시스템 (101)에 유사한 HID들을 포함할 수 있고 따라서 이들 HID들의 하나 이상을 통하여 키로거 공격들에 영향을 받기 쉬울 수 있다. 예시되지 않은 다른 디바이스들, 예컨대 스마트 텔레비전들 또는 비디오 게임 콘솔들은 또한 키로거들 또는 유사한 유형들의 말웨어에 취약할 수 있다. 임의의 소프트웨어가 인스톨될 수 있고, HID을 통하여 입력된 민감한 데이터를 취급하고 및 제 3 자에 의해 볼 수 있는 통신 채널을 갖는 컴퓨팅 시스템이 신원 도둑(identity thief)의 타겟일 수 있다.
도 1에 예시된 컴퓨터 시스템들은 단지 예제인 것에 유의한다. HID들를 갖는 다른 유형들의 컴퓨터 시스템들이 가능하고 고려된다.
도 2로 가서, 컴퓨터 시스템의 블럭 다이어그램이 예시된다. 시스템 (200)은 호스트 컴퓨터 (220)를 포함하고, 호스트 컴퓨터는 메모리 (202)에 결합된 호스트 프로세서 (201)를 포함한다. 호스트 컴퓨터 (220)는 범용 직렬 버스 (USB) (204)를 통하여 입력 디바이스 (203)에 결합된다. 호스트 프로세서 (201)는 입력 핸들러 (205) 및 운영 체제(OS) (206)로부터 코드를 실행할 수 있다. 호스트 프로세서 (201)는 시스템 (200)의 유저가 모르는 사이에 키로거 (207)로부터의 코드를 또한 실행시킬 수 있다.
호스트 컴퓨터 (220)은 호스트 프로세서 (201) 및 메모리 (202)로 구성된 시스템 (200)내에 컴퓨팅 블럭일 수 있다. 일부 실시예들에서, 호스트 컴퓨터는 시스템 (200)내에 마더보드로서 구현될 수 있다. 예를 들어, 호스트 프로세서 (201) 및 메모리 (202) 둘 모두의 기능들이 단일 다이(die)상에 포함된 시스템-온-칩 (SoC : System-on-a-Chip)에 대응하는 호스트 컴퓨터 (220) 또는 호스트 프로세서 (201) 및 메모리 (202)가 단일 패키지내에 포함된 별개의 다이들로서 구현되는 시스템-인-패키지 (SiP : System-in-a-Package)에 대응하는 호스트 컴퓨터 (220)와 같은 다른 실시예들이 고려된다. 호스트 컴퓨터는 입력 핸들러 (205), 운영 체제 (206) 및 키로거 (207)와 같은 소프트웨어 애플리케이션들을 위한 코드 명령들을 저장 및 실행하는 것이 가능할 수 있다.
호스트 프로세서 (201)는 일부 실시예들에서, 애플리케이션 소프트웨어와 관련된 명령들의 실행에 응답하여 컴퓨터의 동작들을 수행하는 범용 프로세서로서 구현될 수 있다. 다른 실시예들에서, 호스트 프로세서 (201)는 마이크로프로세서 또는 마이크로컨트롤러와 같은 중앙 프로세싱 유닛 (CPU)일 수 있고 있다 다수의 CPU 코어들을 포함할 수 있다. 다양한 실시예들에서, 호스트 프로세서 (201)는 임의의 적절한 명령 세트 아키텍처 (ISA), 예컨대, 예를 들어, x86, ARMTM, MIPS, 또는 PowerPCTMISAs을 구현할 수 있다.
호스트 프로세서 (201)는 정상 모드(normalmode) 및 보안 모드 (또한 본 출원에서 "관리자 모드(privileged mode)"로서 언급되는)를 포함하는 다수의 모드들의 동작을 포함할 수 있다. OS (206)에 대한 코드 명령들의 일부 또는 전부는 단지 정상 동작 모드에서만 실행될 수 있고, 반면에 입력 핸들러 (205)에 대한 코드 명령들은 정상 모드 및 보안 모드 둘 모두에서 실행될 수 있다. 운영 체제들 예컨대 OS (206)는 다른 애플리케이션들의 동작을 관리할 수 있기 때문에, OS (206)를 통하여 시동된 다른 애플리케이션들은 또한 정상 모드에서만의 동작으로 분류될 수 있다. 다양한 실시예들에서, 보안 동작 모드는 파워-업 부트 시퀀스 또는 특정 유형의 보안 인터럽트(interrupt)를 통하여 진입될 수 있다. 보안 인터럽트는 호스트 프로세서 (201)내에 가장 높은 우선순위 인터럽트일 수 있다. 가장 높은 우선순위 인터럽트로서, 보안 모드에서 실행하는 코드는 OS (206) 또는 키로거 (207)에 대한 코드와 같은 호스트 컴퓨터 (220)에서 가동하는 다른 애플리케이션에 의해 중단되지 않을 수 있다. 보안 모드(securemode)는 일부 실시예들에서, x86 아키텍처에서 사용되는 시스템 관리 모드 (SMM) 또는 ARM 아키텍처에서 사용되는 Trust Zone Secure Mode에 대응할 수 있다. OS (206)의 동작을 정상 모드로 제한함으로써, OS (206)가 활성될 때까지 키로거 (207) 는 시동되지 않을 수 있기 때문에 키로거 (207)의 코드 명령들은 보안 모드에서 실행하는 것이 방지될 수 있다. 보안 모드는 예를 들어, 제한된 메모리 액세스 범위 또는 단지 보안 모드에서만 액세스 가능한 주변기기들과 같은 추가의 하드웨어 제한들을 가질 수 있다.
메모리 (202)는 하나 이상의 메모리의 유형들을 포함할 수 있다. 예를 들어, 다양한 실시예들에서, 메모리 (202)는 동적 랜덤 액세스 메모리 (DRAM), 정적 랜덤 액세스 메모리 (SRAM), 판독 전용 메모리 (ROM), NAND 플래시 메모리, NOR 플래시 메모리, 강유전체 랜덤 액세스 메모리 (FeRAM), 또는 임의의 다른 적절한 데이터 스토리지 매체를 포함할 수 있다. 메모리 (202)는 호스트 프로세서 (201)가 코드 명령들을 실행시킬 수 있는 하나 이상의 캐시 메모리들을 포함할 수 있다.
입력 디바이스 (203)는 유저가 데이터를 입력하는 키보드 또는 다른 유형의 HID일 수 있다. 다른 예들의 적절한 HID는 마우스, 트랙패드(trackpad) (또한 "터치패드"으로 지칭된다), 마이크로폰, 조이스틱, 웹캠, 또는 트랙볼을 포함할 수 있다. 일부 실시예들에서, 입력 디바이스는 하나 초과의 HID의 조합일 수 있다. 입력 디바이스 (203)는 USB 포트를 통하여 USB (204)에 부착된 수신기를 갖는 별개의 무선 디바이스 또는 USB 포트에 연결된 코드를 통하여 USB (204)에 부착된 별개의 물리적 디바이스를 일 수 있다. 다른 실시예들에서, 입력 디바이스 (203)는 내부의 USB 채널을 통하여 USB (204)에 부착된 동일한 물리적 디바이스 (예를 들어, 랩탑의 키보드)의 일부일 수 있다. 입력 디바이스 (203)는 마우스의 움직임 또는 키보드상에 키 누름과 같은 유저로부터의 입력에 응답하여 지원되는 USB 프로토콜을 이용하여 디지털 값들을 출력할 수 있다. 이들 예들에서, 키 누름은 USB (204)로 발송될 ASCII(American Standard Code for Infermation Interchange) 값과 같은 대응하는 값으로 귀결될 수 있다. 마우스의 경우에서, 다양한 버튼 누름들에 대응하는 값들 뿐만 아니라 수평의 및 수직의 방향들에서 변화들에 대응하는 값들은 디바이스에 의해 산출될 수 있고 USB (204)에 발송된다.
USB (204)는 입력 디바이스 (203)으로부터 호스트 프로세서 (201)로의 인터페이스일 수 있다. USB (204)는 임의의 적절한 표준의 USB 프로토콜, 예컨대 USB1.1, USB2.0, 또는 USB3.0를 구현할 수 있다. USB (204)는 전용 USB 호스트 제어기일 수 있다. 다른 실시예들에서, 일부 모바일 디바이스들에 의해 사용되는 USBOTG(On-The-Go) 프로토콜에 의해 허용되는 것과 같이 USB 디바이스 또는 호스트로서 구성 가능할 수 있다. USB (204)는 호스트 프로세서 (201)와 동일한 칩 (또한 본 출원에서 "다이(die)"로서 언급된) 기능 블럭으로서 통합될 수 있거나 또는 호스트 프로세서 (201)와 동일한 회로기판상에 별개의 패키지내 별개의 다이일 수 있다. 다른 실시예들에서, USB (204)는 호스트 (201)로부터 별개의 회로 기판상에 있을 수 있고 호스트 프로세서 (201)에 전기적으로 결합될 수 있다.
USB (204)는 입력 활동에 대한 입력 디바이스 (203)를 모니터링하기 위해 구현된 USB 프로토콜을 사용할 수 있다. 활동에 응답하여, USB (204)는 입력 디바이스 (203)에 의해 발송된 임의의 값들을 수신할 수 있고 그리고 입력이 수신되었고 호스트 프로세서 (201)로 포워딩될 준비가 된 것을 호스트 프로세서 (201)에 알린다. 호스트 프로세서 (201)내에서, USB (204)로부터 신호는 그것이 어써트되었는지 여부를 결정하기위해 폴링(poll)될 수 있거나 또는 인터럽트에 연결될 수 있어서, 신호 상태에서의 변화가 호스트 프로세서 (201)에 내부 인터럽트를 발생시킨다.
입력 핸들러 (205)에 코드 또는 프로그램 명령들는 메모리 (202)에 있을 수 있다. 일부 실시예들에서, 메모리 (202)가 비 휘발성 메모리 예컨대, 예를 들어, 플래시 메모리 또는 ROM을 포함한다면 코드 명령들 입력 핸들러 (205)는 메모리 (202) 에 영구적으로 있을 수 있다. 대안적인 실시예들에서, 입력 핸들러 (205)에 대한 코드 명령들 은 장기간의 스토리지를 위해 별개의 메모리에 있을 수 있고 시스템 부트 프로세스 동안에 메모리 (202)로 복사될 수 있다. 입력 핸들러 (205)는 디바이스 드라이버에 대응할 수 있고 (즉, 시스템 (200)내 하드웨어와 직접 인터페이스하기 위한 프로그램 명령들) 그리고 입력 디바이스 (203)상에 활동을 위해 USB (204)를 모니터링할 수 있다. 일부 실시예들에서, 모니터링은 USB (204)로부터 하나 이상의 신호들을 폴링함으로써 될 수 있거나 또는 다른 실시예들에서, 모니터링은 USB (204)로부터의 하나 이상의 신호들상에 인터럽트를 인에이블하는것을 포함할 수 있다. USB (204)로부터의 입력 감지시, 입력 핸들러 (205)는 USB (204)로부터 데이터 값들을 수신할 수 있고 입력 디바이스 (203)로부터 유저 입력을 저장하기 위해 리저브드된(reserved) 메모리 (202)내 위치들에 대응할 수 있는 입력 버퍼에 이들 값들을 저장할 수 있다. 다른 실시예들에서, USB (204)는 직접 메모리 액세스 모듈 (미도시)의 사용을 통하여 메모리 (202)내 입력 버퍼로 데이터 값들을 저장할 수 있다. 입력 핸들러 (205)는 그런 다음 OS (206) 또는 호스트 프로세서 (201)내 활성인 다른 애플리케이션에 입력 디바이스 (203)로부터 데이터가 수신되었고 입력 버퍼로부터 액세스될 수 있다는 것을 알릴 수 있다.
OS (206)는 메모리 (202)로부터 호스트 프로세서 (201)에 의해 실행되는 코드 또는 프로그램 명령들을 포함할 수 있다. OS (206)는 활성 애플리케이션들 과 시스템 (200)의 하드웨어 사이에 인터페이스를 제공할 수 있다. OS (206)는 유저가 다양한 프로그램들을 활성화 (또는 "시동(launch)")하도록 시스템 (200)상에 인터페이스를 또한 제공할 수 있다. 일부 실시예들에서, 활성 애플리케이션들은 하드웨어 드라이버에 대한 액세스를 가질 수 있지만 (시스템 (200)내 하드웨어 특정 부분을 동작시키기 위한 코드 명령들), 반면에 다른 실시예들에서, 애플리케이션들은 OS (206)를 통하여 하드웨어를 액세스하는 것으로 제한될 수 있다.
키로거 (207)는 유저에 의해 의도되지않고서 메모리 (202)에 놓여진 코드 명령들로 구성될 수 있다. 키로거 (207)는 정당한 기능을 수행하는 것으로 광고되고 따라서 유저에 의해 의도적으로 인스톨될 수 있는 애플리케이션에 의해 메모리 (202)에 배치된 악의적인 소프트웨어의 형태일 수 있다. 다른 유용한 애플리케이션에 말웨어를 숨긴 프로그램은 또한 로서 트로이 목마(Trojanhorse)로서 알려져 있다. 만약 바이러스 방지 소프트웨어가 호스트 프로세서 (201)상에서 활성이면, 키로거 (207)가 바이러스 방지 소프트웨어의 제공자들에 의해 미리 발견되지 않았거나 또는 키로거 (207)가 키 로깅 말웨어와 관련될 수 있는 의심스러운 활동을 통지하는 바이러스 방지 소프트웨어에 대하여 충분히 오래 시스템 (200)내에서 활성되지 않았는지 여부를 키로거 (207)는 검출하지 못할 수 있다.
키로거 (207)는 입력이 수신된 때를 감지하기 위해 OS (206) 또는 입력 핸들러 (205)를 모니터링할 수 있고 입력 핸들러 (205)가 OS (206)에 새로운 입력이 수신된것을 알린 때 입력 버퍼 판독을 시도할 수 있다. 키로거 (207)는 입력 버퍼를 판독할 수 있고 일시적 또는 장기간의 스토리지를 위해 판독 데이터를 다른 위치에 저장할 수 있다. 일부 실시예들에서, 키로거 (207)는 인터넷 연결 또는 다른 통신 채널을 통하여 미리 결정된 위치로 주기적으로 저장된 데이터를 발송할 수 있다. 다른 실시예들에서, 키로거 (207)는 세트의 데이터의 양이 수집된 후에 판독 데이터를 발송할 수 있다. 데이터 수신기, 잠재적인 신원 도둑은 시스템 (200)의 사용동안에 유저가 입력할 수 있었던 민감한 정보, 예컨대 유저이름들 및 패스워드들을 결정하기 위해 데이터를 사용할 수 있다.
입력 핸들러 (205), OS (206) 및 키로거 (207)는 호스트 프로세서 (201)에 의해 실행될 코드 명령들 (즉, 프로그램, 애플리케이션, 또는 드라이버)의 수집을 구성할 수 있다는 것에 유의한다. 이와 같이, 본 개시에서, 입력 핸들러 (205), OS (206) 또는 키로거 (207)가 태스크를 수행하는 것으로 설명될 때, 것이 이해되어야 한다 호스트 프로세서 (201)는 대응하는 코드 명령들의 실행에 의해 야기되는 상기 태스크를 수행하고 있는 것이 이해되어야 한다.
도 2 에 도시된 시스템은 예증 용도를 위한 단지 예제이고, 이와 같이, 예증하는 개념들에 대한 특징들만이 본 출원에 개시된다. 다른 실시예들은 예를 들어, 디스플레이들, 오디오 주변기기들 및 통신 주변기기들과 같은 컴퓨팅 시스템들과 관련된 다른 기능 블럭들을 포함할 수 있다.
이제 도 3로 가서, 컴퓨팅 시스템의 다른 실시예가 예시된다. 시스템 (300)는 도 2에 시스템 (200)에 유사한 많은 컴포넌트들, 예컨대 USB (304)를 통하여 입력 디바이스 (303)에 결합된 호스트 프로세서 (301) 및 메모리 (302)를 포함하는 호스트 컴퓨터 (320)를 포함한다. 시스템 (300)은 호스트 컴퓨터 (320)에 결합된 보안 모듈 (309)을 또한 포함할 수 있다. 메모리 (302)는 입력 핸들러 (305), OS (306), 및 키로거 (307)로부터의 코드를 포함할 수 있다. 메모리 (302)는 신뢰받는(trusted) 애플리케이션 (308) 및 보안 모듈 드라이버 (310)를 또한 포함할 수 있다. 호스트 컴퓨터 (320), 호스트 프로세서 (301), 메모리 (302), 입력 디바이스 (303), 및 USB (304), 뿐만 아니라 OS (306) 및 키로거 (307)에 대응하는 코드 명령들은 상기의 도 2 에 시스템 (200) 에 관하여 설명된 것 처럼 행동할 수 있다.
보안 모듈 (309)은 입력 핸들러 (305)를 통하여 호스트 프로세서 (301)로 발송된 유저 입력의 인증을 지원할 수 있다. 보안 모듈 (309)은 프로세서, 메모리, 인터럽트들 및 시스템 (300)의 다른 파트들과 통신을 위한 입력/출력 포트들을 포함하는 마이크로컨트롤러로 구성될 수 있다. 보안 모듈 (309)이 호스트 프로세서 (301)와 동일한 다이 상에, 호스트 프로세서 (301)와 동일한 패키지내 또는 호스트 프로세서 (301)와 상이한 패키지내 상이한 다이 상에 구현될 수 있는 다양한 실시예들이 고려된다. 보안 모듈 (309)은 해싱 및/또는 암호화/복호화 기능들을 포함할 수 있다.
입력 핸들러 (205)에 대하여 설명된 기능들에 추가하여, 입력 핸들러 (305)는 보안 모듈 (309)에 유사하게 해싱 및/또는 암호화/복호화를 위한 기능들을 또한 포함할 수 있다. 일부 실시예들에서, 입력 핸들러 (305)는 두개의 셋트들의 코드 명령들을 포함할 수 있다: 해싱 및/또는 암호화/복호화를 위한 추가 특징드을 포함하는 입력 핸들러 (205) 및 보안 입력 핸들러에 대하여 설명된 기능들에 대응할 수 있는 표준 입력 핸들러. 여기에서, 입력 핸들러 (305)는 결합된 기능들을 위한 코드 명령들의 양쪽 세트들을 지칭한다. 입력 핸들러 (305)는 데이터를 인증하기 위해 보안 모듈 (309)을 사용할 수 있다. 예를 들어, 입력 핸들러 (305)는 보안 모듈 (309)와 세션 키 워드를 공유할 수 있다. 세션 키 워드는 입력 핸들러가 시스템 (300)내에 먼저 인스톨된 시간에 공유될 수 있거나 또는 다른 실시예들에서는 키 공유 프로토콜 예컨대 디피-헬만 키 교환을 이용하여 시스템 부트 시간에 결정될 수 있다. 세션 키가 공유된 후에 동일한 지점에서, 입력 핸들러 (305)는 USB (304)로부터 데이터를 수신할 수 있고 입력 버퍼에 수신된 데이터를 저장할 수 있다. 도 2에 관련하여, 입력 핸들러 (205)는 이 지점에서, OS (206)에 데이터가 수신되었다는 것을 알린다. 그에 반해서, 입력 핸들러 (305)는 이제 세션 키 워드를 이용하여 데이터의 해시(hash)를 계산할 수 있고 그런다음 보안 모듈 (309)로 데이터의 해시와 함께 데이터를 발송할 수 있다. 보안 모듈 (309)은 데이터 및 데이터의 해시를 수신할 수있고, 공유된 세션 키 워드를 이용하여 데이터의 해시를 계산할 수 있고 산출된 해시 값을 입력 핸들러로부터 수신된 해시 값에 비교한다.
본 출원에서 언급된 데이터를 해시하는 것, 또는 데이터 해싱은 가변적 데이터의 양이 해시 값으로 지칭된 고정된 길이 결과를 생성하기 위해 함수에 의해 프로세스되는 절차를 지칭한다는 것에 유의한다. 해시 기능은 결정론적이어야 하고, 즉, 동일한 크기로 제공된 동일한 데이터는 항상 동일한 해시 값을 생성하여야 한다. 데이터의 하나 이상의 값들의 또는 데이터의 크기에서 변화는 상이한 해시 값을 생성하여야 한다. 해시 기능은 키 워드, 또는 "해시 키"를 사용할 수 있고 상이한 키로 해시된 동일한 데이터는 상이한 해시 값을 생성하나, 해시 값은 입력 데이터의 잠재적인 조합들보다 더 작은 고유의 값을 가질 수 있기 때문에, 데이터 입력의 상이한 조합들은 동일한 해시 값으로 귀결될 수 있다. 예를 들어, 16 비트 해시 값은 65536 고유의 값들을 가질 것이지만, 반면에 4 바이트의 데이터는 40억개 이상의 고유의 조합들을 가질 수 있다. 따라서, 해시 값 길이는 가능한 한 해시 함수를 너무 복잡하거나 또는 시간 소모적으로 만들지 않게 하면서 잠재적인 복제 결과들을 최소화하도록 선택될 수 있다.
예로 돌아가서, 만약 두개의 해시 값들이 일치하면, 그러면 데이터는 입력 디바이스 (303)로부터 온 것으로 검증될 수 있고 및 보안 모듈 (309)은 그런다음 메모리 (302)내 신뢰받는 애플리케이션 (308)으로 데이터를 포워딩할 수 있다. 신뢰받는 애플리케이션은 소프트웨어 인스톨 시간에 보안 모듈 (309)로 등록되었던 값을 포함하는 유저에 의해 인스톨된 소프트웨어 애플리케이션일 수 있다. 등록을 위해 사용되는 값은 소프트웨어의 신뢰받는 제공자에 대응하는 고유의 값일 수 있거나 또는 시스템 (300)내 신뢰받는 소프트웨어 애플리케이션들을 식별하기 위해 유저에 의해 생성된 코드 워드일 수 있다. 데이터를 신뢰받는 애플리케이션과 공유하기 위해서, 보안 모듈 (309)은 보안 입력 버퍼내 데이터를 저장할 수 있고, 그것의 위치는 신뢰받는 애플리케이션들과 단지 공유될 수 있다. 일단 입력 디바이스로부터 검증된 데이터가 신뢰받는 애플리케이션 (308)과 공유되어지면, 입력 핸들러는 OS (306)에 데이터가 수신되었다는 것을 알리지 않고 입력 디바이스로부터의(303) 다음 유저 입력에 대하여 USB (304)를 모니터링하기 위해 리턴될 수 있다. 데이터가 신뢰받는 애플리케이션 (308)으로 직접 패스되었기 때문에 시그널링(signaling)은 필요로 하지 않을 수 있다. 입력 핸들러 (305)로부터 OS (306)로의 신호를 감시하지 않고서, 키로거 (307)는 데이터가 입력 디바이스 (303)로부터 수신되었는지의 표시를 가지지 않을 수 있고 데이터는 따라서 데이터가 키로거 (307)에 의해 로그 되지않고 신뢰받는 애플리케이션 (308)으로 전송된다.
메모리 (302)는 보안 모듈 드라이버 (310)에 대한 코드 명령들를 또한 포함할 수 있다. 보안 모듈 드라이버 (310)는 신뢰받는 애플리케이션들과 데이터 공유를 위한 보안 입력 버퍼 뿐만 아니라 보안 모듈 (309)의 적절한 동작을 위해 요구되는 다른 명령들을 포함할 수 있다. 보안 모듈 드라이버에 의해 수행될 수 있는 다른 태스크들은 호스트 프로세서 (301)와 보안 모듈 (309) 간의 인터페이스 하는 것을 포함한다.
앞에서 설명된 예에서, 만약 키로거 (307)는 심지어 입력 핸들러 (305)로부터 OS (306)로 신호를 관측하지 않고서 입력 버퍼를 모니터링하는 명령들을 포함하였다면, 또는 만역 키로거가 입력 핸들러 (305)로부터 기인한 활동을 관측하는 것이 가능하였다면, 그러면 키로거 (307)는 여전히 입력 버퍼로부터 데이터를 판독 및 신원 도둑으로의 전송을 위해 데이터를 로그할 수 있다. 이런 시나리오를 피하기 위해, 입력 핸들러 (305)는 입력 핸들러 (305)가 보안 데이터 거래를 준비하기 위해 USB (304)로부터 임의의 데이터를 수신하기 전에 보안 모듈 (309)에 알릴 수 있다. 보안 모듈 (309)은 데이터가 USB (304)로부터 입력 핸들러 (305)로 송신되려고 하는 것을 보안 모듈 드라이버 (310)를 통하여 호스트 프로세서 (301)에 표시할 수 있다. 호스트 프로세서 (301)는 USB (304) 활동을 모니터링하기 위해 사용되는 인터럽트 라인상에 보안 모드 옵션을 인에이블 할 수 있다. USB (305)가 데이터가 발송 준비가 된 것을 표시하기 위해 호스트 프로세서 (301)에 신호를 어써트할 때, 호스트 프로세서 (301)는 정상 동작 모드로부터 OS (306) 및 OS (306)로부터 시동된 애플리케이션들이 코드를 실행시키는 않을 수 있는 보안 동작 모드로 스위치될 수 있다. 이 보안 모드에서, 입력 핸들러 (305)을 포함할 수 있는 일부 하드웨어 드라이버들만 명령들을 실행하는 것이 가능할 수 있다. 일부 실시예들에서, 보안 모듈 드라이버 (310)는 보안 모드에서 운영하는 것이 또한 가능할 수 있다. OS (306)내에서 시동(launch)될 수 있는 키로거 (307)는 명령들을 실행하는 것이 가능하지 않을 수 있고 따라서 보안 모드가 인에이블되는 동안 입력 버퍼를 판독하는 것은 불가능하다. 입력 핸들러 (305)는 이제 USB (304)로부터 데이터를 수신할 수 있고, 해시 값을생성하고 그것이 신뢰받는 애플리케이션 (308)과 공유될 수 있는 보안 입력 버퍼에 검증되고 저장될 해시 값 및 데이터를 보안 모듈 (309)로 발송할 수 있다. 일단 데이터가 보안 입력 버퍼에 저장된 후에, 호스트 프로세서는 신뢰받는 애플리케이션이 이제 보안 입력 버퍼로부터 데이터를 검색할 수 있는 정상 동작 모드로 다시 스위치할 수 있다.
소프트웨어 프로그램들, 애플리케이션들, 및 드라이버들 예컨대 입력 핸들러 (305), OS (306), 키로거 (307), 신뢰받는 애플리케이션 (308), 및 보안 모듈 드라이버 (310)은 호스트 프로세서 (301)에 의해 실행될 코드 명령들의 집합으로 각각 구성할 수 있다는 것에 다시 유의한다. 이와 같이, 임의의 상기 블럭이 태스크 또는 동작을 수행하는 것으로 설명된 코드 명령들로 이루어질 때 본 출원에서, 호스트 프로세서 (301)는 상기 블럭에 대응하는 코드 명령들의 실행에 응답하여 상기 태스크 또는 동작을 수행할 수 있다는 것이 이해되어야 한다.
도 3의 시스템은 입력 디바이스로부터 데이터를 안전하게 수신하기 위한 방법을 지원하는 컴퓨팅 시스템의 단지 예제이다. 다른 실시예들은 예를 들어, 파워 서플라이들 또는 착탈 가능한 스토리지 예컨대 DVD-ROM 드라이브와 같은 컴퓨팅 시스템들과 관련된 다른 기능 블럭들을 포함할 수 있다.
이제 도 4로 가서, 입력 디바이스로부터 데이터를 안전하게 수신하기 위한 방법을 지원하는 컴퓨팅 시스템의 다른 예가 도시된다. 시스템 (400)는 도 3에 시스템 (300)의 특징들에 유사한 많은 특징들을 포함하고 따라서, 도 3에서의 상기의 설명들은 다른식으로 명시된 바가 없으면 도 4 에 대응하는 블럭에 적용될 수 있다.
PS/2 (404)는 도3에서 USB (304) 와 유사한 태스크들을 수행할 수 있다. 그러나, PS/2 (404)는 입력 디바이스들 (403)에 상이한 프로토콜을 제공할 수 있다. PS/2 (404)는 퍼스널 시스템/2 인터페이스 (PS/2)를 사용할 수 있고, 다양한 USB 프로토콜들과 상이한 데이터 송신 프로토콜및 상이한 하드웨어 커넥터를 사용할 수 있다. 따라서, 입력 디바이스 (403)는 PS/2 표준들과 호환 가능한 프로토콜을 이용하여 데이터를 PS/2 (404)로 발송할 수 있다. USB (304)와 달리, PS/2 (404)는 심지어 DMA를 통하여 메모리 (402)에 데이터를 기록하는 것이 가능하지 않을 수 있다. 이런 경우에, 입력 핸들러 (405)는 PS/2 (404)로부터 데이터를 판독할 수 있고 메모리 (402)내 입력 버퍼내에 데이터를 저장할 수 있다. 임의의 하드웨어 또는 프로토콜 차이들에도 불구하고, 입력 핸들러 (405)는 입력 핸들러 (305)와 관련하여 상기에서 설명된 것 처럼 행동할 수 있고 PS/2 호환 가능한 입력 디바이스는 동등한 USB 호환 가능한 입력 디바이스 만큼 안전할 수 있다.
USB 연결성과 PS/2 연결성사이의 한가지 차이는 PS/2 연결성은 입력 디바이스들 단지, 특별히, 키보드들 및 마이스 또는 예를 들어, 트랙볼들과 같은 다른 포인팅 디바이스들에 대하여 의되도고 반면에 USB 연결성은 다수의 스토리지 플래시 드라이브들, 카메라들, 전화기들, 태블릿들, 장난감들, 뿐만 아니라앞에서 언급된 입력 디바이스들를 포함하여 끊임없이 성장하는 범위의 디바이스들을 지원하는 다는 것이다. 따라서, PS/2 (404)상에서 활동은 입력 디바이스 (403)에 제한되지 않을 수 있기 때문에 PS/2 (404)는 도 3에 관련하여 설명된 보안 입력 절차를 구현하기 위한 더 간단한 메커니즘을 제공할 수 있다. 그에 반해서, USB (304)상에서 활동은 입력 디바이스 (303)에 제한되지 않을 수 있고 및 USB (304)를 통한 비-입력 디바이스들에 관련된 활동은 시스템 (300)의 보안 요건들에 대한 인지를 가지고 관리될 필요가 없을 수 있다. 추가적으로, PS/2 (404)는 소정의 포트, 즉, 점-대-점 프로토콜에 대한 단일 디바이스에 제한되지 않을 수 있다. 반면에, USB (304)는 소정의 포트상에 다수의 유형들의 다수의 디바이스들에 확장가능할 수 있다.
도 4의 시스템은 입력 디바이스로부터 데이터를 안전하게 수신하기 위한 방법을 지원하는 컴퓨팅 시스템의 단지 예제이다. 도 4의 시스템은 시연 목적을 위해 간략화된다. 다른 실시예들은 컴퓨팅 시스템들과 관련된 다른 기능 블럭들을 포함할 수 있다.
계속 진행하여, 입력 디바이스로부터 데이터를 안전하게 수신하기 위한 방법을 지원하는 컴퓨팅 시스템의 다른 예가 도5에 도시된다. 시스템 (500)는 도 3에 시스템 (300)의 특징들에 유사한 많은 특징들을 또한 포함하고 도 3에서의 상기의 설명들은 다른식으로 명시된 바가 없으면 도 5 에 대응하는 블럭에 적용될 수 있다.
블루투스 (BT) 송신기 (503)는 무선 입력 디바이스의 일부, 예컨대, 예를 들어, 무선 키보드 및/또는 마우스로서 포함될 수 있다. 일부 실시예들에서, BT 송신기는 도 2에 입력 디바이스 (203)에 관련하여 설명된 입력 디바이스들의 다른 유형들에 또한 포함될 수 있다. BT 송신기 (503)는 블루투스 무선 표준 또는 블루투스 저 에너지 (BTLE) 표준과 호환 가능할 수 있다. 다른 실시예들에서, BT 송신기는 하나 이상의 IEEE(Institute of Electrical and Electronics Engineers) 802.11 (Wi-Fi) 표준들과 호환가능할 수 있거나 또는 전용 무선 프로토콜을 지원할 수 있다.
BT 송신기 (503)는 BT수신기 (504)를 통하여 호스트 프로세서 (501)로 데이터를 발송할 수 있다. BT 수신기 (504)는 BT 송신기 (503)와 동일한 통신 표준을 지원할 수 있고 BT 송신기 (503)에 의해 사용되는 프로토콜에 추가하여 추가의 무선 프로토콜들을 지원할 수 있다. BT 수신기 (504)는 도3에서 USB (304) 와 유사한 태스크들을 수행할 수 있다. 임의의 하드웨어 또는 프로토콜 차이들에도 불구하고, 입력 핸들러 (505)는 입력 핸들러 (305)와 관련하여 상기에서 설명된 것 처럼 행동할 수 있고 BT 수신기 (504)는 BT 송신기 (503)에 결합된 입력 디바이스로부터 데이터를 안전하게 하는 것에 간련된 동등한 기능들을 제공할 수 있다. BT 수신기 (504)는 따라서, BT 수신기 (504)로부터 입력 핸들러 (505)로 전송될 데이터를 표시하기 위해 인터럽트 신호에 결합될 수 있는 호스트 프로세서 (501)에 신호를 어써트(assert)할 수 있다. 일단 데이터가 입력 핸들러 (505)에 의해 수신된 후에, 데이터를 검증하고 안전하게 하기 위한 절차는 도 3에 설명된 절차에 유사할 수 있다.
도 5에 도시된 시스템은 무선 입력 디바이스로부터 데이터를 안전하게 수신하기 위한 방법을 지원하는 컴퓨팅 시스템의 단지 예제이다. 도 5의 시스템은 시연 목적을 위해 간략화된다. 다른 실시예들은 컴퓨팅 시스템들과 관련된 다른 기능 블럭들을 포함할 수 있다.
이제 도 6로 가서, 입력 디바이스로부터 컴퓨팅 시스템에 애플리케이션으로 데이터를 송신하기 위한 방법에 대한 플로우 차트가 예시된다. 도 6의 방법은 예를 들어, 도 3에 시스템 (300)과 같은 시스템에 적용될 수 있다. 도 3 및 도 6에 대하여 총괄하여 인용하여, 방법은 블럭(601)에서 시작할 수 있다.
입력 디바이스, 예컨대 도 3에 입력 디바이스 (303)는 안전한 입력 모드를 개시할 수 있다(블럭 (602)). 다양한 다른 실시예들에서, 애플리케이션, 예컨대 신뢰받는 애플리케이션 (308)은 안전한 입력 모드를 개시할 수 있거나, 또는 예를 들어, 웹 브라우저와 같이 OS (306)내에서 운영하는 애플리케이션은 원격 서버로부터 로딩된 웹 페이지로부터 안전한 입력 모드로 진입하기 위한 요청을 수신할 수 있다. 안전한 입력 모드의 일부로서, 보안 프로세서, 예컨대 보안 모듈 (309), 또는 입력 핸들러, 예컨대 입력 핸들러 (305)은 보안 모드 인터럽트를 USB 회로, 예컨대 USB (304)로부터의 신호에 결합하도록 호스트 프로세서 (301)에 명령할 수 있다. 다른 실시예들에서, 호스트 프로세서 (301)외에 로직 회로들이 USB (304)로부터 보안 모드 인터럽트로 신호를 결합할 수 있다. 데이터가 언제 입력 디바이스(303)로부터 USB (304)에 의해 수신되었든 USB (304)로부터 신호는 어써트될 수 있다.
안전한 입력 모드는 시스템 (300)이 부트될 때 한번에 개시될 수 있거나 또는 시스템 (300)의 유저에 의해 인에이블되고 디스에이블될 수 있다. 만약 안전한 입력 모드가 시스템 부트상에서 인에이블되면, 그러면 입력 디바이스(303)로부터의 모든 입력은 보안 방법들을 이용하여 발송될 수 있다. 일부 경우들에서, 이것은 잉여 프로세싱 시간이 데이터가 신뢰받는 목적지에 도달하는지를 확인하고 데이터를 안전하게 하는데 소비되기 때문에 시스템의 낮은 성능으로 이어질 수 있다. 유저가 안전한 입력 모드 인에이블 및 디스에이블하는 옵션을 포함함으로써, 민감한 것으로 간주되지 않는 데이터가 입력될 때 시스템 성능은 개선될 수 있다. 민감한 데이터가 입력될 것이 요구될 때, 예컨대, 예를 들어, 웹사이트 상에 유저 이름 및 패스워드를 입력할 때, 유저는 안전한 입력 모드를 개시할 수 있다. 안전한 입력 모드는 입력 디바이스로부터 발송된 미리 결정된 값의 사용을 통하여 개시될 수 있다. 예를 들어, 키보드를 이용하여, 유저는 특정 키스트로크 예컨대, 예를 들어, <Ctrl> + <Alt> + <S>를 타이핑할 수 있다. 대안적으로, 마우스를 이용하여 마우스로 빠른 왼쪽-오른쪽-왼쪽 모션과 같은 특정 제스처를 만들면서 마우스상의 어떤 버튼을 클릭하는 것을 유저에게 요구할 수 있다. 입력으로서 마이크로폰을 이용하여 예를 들어, "명령어, 엔터, 안전, 모드," 또는 다른 조합의 워드들 또는 번호들과 같은 워드들의 특정 스트링을 말하는 것을 유저에게 요구할 수 있다. 사용될 값은 안전한 입력 모드과 관련된 소프트웨어에 의해 미리 결정될 수 있거나 또는 값은 유저에 의해 프로그램 가능할 수 있다.
일단 안전한 입력 모드가 개시된 후, 세션 키가 입력 핸들러 (305) 및 보안 모듈 (309)에 의한 사용을 위해 생성될 수 있다 (블럭 (603)). 다른 실시예들에서, 세션 키는 시스템 부트 시간에 생성될 수 있고 시스템이 파워 다운, 유저가 로그 오프, 시스템이 일부 시간 기간동안 유휴상태(idle)를 유지, 또는 다른 적절한 이벤트가 일어날 때 까지 모든 안전한 입력 모드 세션들에 대하여 재사용될 수 있다. 세션 키는 입력 핸들러 (305) 및 보안 모듈 (309)에 대하여 코드 명령들이 인스톨되는 시간에 결정된 값에 기반될 수 있다. 다른 실시예들에서, 키 교환 프로토콜, 예컨대 디피-헬만 키 교환이 세션 키를 생성하기 위해 사용될 수 있다. 키 교환 프로토콜로, 세션 키는 여러 가지 방법들에 의해 입력 핸들러 (305)과 보안 모듈 (309) 사이에서 공유될 수 있다. 입력 핸들러 (305) 및 보안 모듈 (309)은 입력 핸들러 (305)가 인스톨될 때 한번에 생성된 동일한 시작 값 (또한 통상 "시드값(seed value)"으로 지칭된다)을 각각 가질 수 있다. 다른 실시예들에서, 보안 모듈 (309) 또는 입력 핸들러 (305)는 시드 값을 생성할 수 있고 그것을 다른 블럭으로 발송할 수 있다. 일단 입력 핸들러 (305) 및 보안 모듈 (309)가 동일한 시드 값을 공유한 후, 각각의 블럭은 개인 키(private key)을 이용하여 시드 값을 암호화할 수 있다. 입력 핸들러 (305) 및 보안 모듈 (309)는 다른 블럭에 알려지지 않을 수 있는 그들 자신의 개인 키를 각각 가질 수 있다. 입력 핸들러 (305) 및 보안 모듈 (309)은 그런다음 그들의 개별 암호화된 시드 값을 다른 블럭에 발송할 수 있고 각각의 블럭은 그런다음 다른 블럭에 의해 암호화되었던 수신된 시드 값을 암호화할 수 있다. 결과적으로, 입력 핸들러 (305) 및 보안 모듈 (309)은 둘 모두 블럭들에 의해 공통의 암호화된 시드 값을 공유할 수 있고 세션 키로서 사용될 수 있다. 세션 키를 공유하는 다양한 다른 방법들이 알려져 있고 개시된 실시예 대신에 사용될 수 있다.
USB (304)는 입력 디바이스 (303)로부터 데이터를 수신할 수 있다 (블럭 (604)). 데이터 수신시, USB (304)는 데이터가 입력 핸들러 (305)에 발송될 준비가 된 것을 표시하기 위해 호스트 프로세서 (301)에 신호를 어써트할 수 있다. 어써트된 신호는 인에이블된 보안 모드 옵션으로 호스트 프로세서 (301)상에 인터럽트(interrupt)에 결합될 수 있다.
USB (304)에 의한 신호의 어써트에 응답하여, 인터럽트(interrupt)가 호스트 프로세서 (301)에 생성될 수 있다 (블럭 (605)). 인터럽트는 정상 동작 모드로부터 보안 동작 모드로, 예컨대, 예를 들어, x86 아키텍처로 프로세서상에 SMM 모드 또는 ARM 아키텍처로 프로세서상에 신뢰존 보안 모드(Trust Zone secure mode), 또는 호스트 프로세서 (301)상에서 이용 가능한 임의의, 다른 적절한 관리자 모드(privileged mode)로 스위치하도록 호스트 프로세서 (301)를 트리거할 수 있다. 호스트 프로세서의 보안 동작 모드로의 스위치는 운영 체제, 예컨대 OS (306)와 관련된 명령들이 OS (306)내에 시동된 임의의 애플리케이션들을 위한 명령들과 함께 실행되는 것을 방지할 수 있다. 입력 핸들러 (305) 및 보안 모듈 (309)을 위한 소프트웨어 드라이버, 예컨대, 예를 들어, 보안 모듈 드라이버 (310)는 보안 동작 모드에서 명령들을 실행시키는 것이 허용될 수 있다. 일단 보안 동작 모드에 진입된 후에, 데이터는 USB (304)로부터 입력 핸들러 (305)로 전송될 수 있다.
입력 핸들러 (305)는 블럭 (603)에서의 세션 키에 의존하여 전송 데이터의 해시를 생성할 수 있고 그리고 보안 모듈 (309)로 결과 해시 값 및 데이터를 발송할 수 있다 (블럭 (606)). 임의의 적절한 해싱 알고리즘(hashingalgorithm)이 예컨대, 예를 들어, MD5, SHA-2, 또는 SHA-3가 사용될 수 있다. 세션 키는 해싱 알고리즘을 위한 키로서 사용될 수 있다. 데이터는 암호화된 또는 암호화되지 않은 보안 모듈 (309)로 발송될 수 있다. 만약 암호화된 데이터가 발송되면, 데이터 해시는 옵션일 수 있는데, 성공한 데이터의 복호가 데이터가 입력 디바이스 (303)로부터 발원되었다는(originated) 것의 적절한 증거일 수 있기 때문이다. 세션 키는 데이터 뿐만 아니라 해싱 데이터를 암호화 및 복호화하기 위해 사용될 수 있다.
그런 다음 결정이 데이터의 유효성에 의존하여 이루어질 수 있다 (블럭 (607)). 보안 모듈 (309)은 해시 값 및 데이터를 수신할 수 있고 그런다음 블럭 (603)으로부터 수신된 데이터 및 세션 키를 이용하여 제 2 해시 값을 생성할 수 있다. 그런 다음 보안 모듈 (309)은 제 2 해시 값을 입력 핸들러 (305)로부터 수신된 해시 값에 비교할 수 있다. 만약 두개의 값들이 동일하면, 그러면 데이터는 입력 디바이스 (303)로부터 발원된 것으로 확인되고 따라서 유효한 것으로 간주될 수 있다. 만약 두개의 해시 값들이 상이하면, 그러면 데이터는 입력 디바이스 (303)로부터 발원되지 않을 수 있고 신뢰할 수 없다고 간주될 수 있다. 일부 실시예들에서, 데이터 해시 값과 함께 암호화된 데이터로서 수신될 수 있다. 이런 실시예에서, 보안 모듈 (309)은 제 2 해시 값을 생성하기 전에 세션 키를 이용하여 데이터를 복호화할 수 있다. 다른 실시예들에서, 단지 암호화된 데이터가 대응하는 해시 값 없이 수신될 수 있다. 이런 경우에, 복호화된 데이터는 어떤 값들내에 해당하는 것이 예상될 수 있고, 만약에 임의의 복호화된 값이 예상되는 값들 외측에 있다면, 데이터는 신뢰할 수 없는 것으로 간주될 수 있다. 추가 실시예들에서, 복호화된 데이터는 데이터의 복호화가 성공되었는지, 그런 경우에, 데이터는 유효한 것으로 간주될 수 있는지를 결정하기 위해서 사용될 수 있는 패러티 비트 또는 하나 이상의 에러 정정 코드 (ECC) 비트들을 포함할 수 있다. 만약 데이터가 유효한 것으로 결정되면, 그러면 방법은 진행될 블럭 (609)로 이동할 수 있다. 그렇지 않으면, 방법은 데이터가 태그되는 블럭 (608)으로 이동할 수 있다.
만약 해시 값들이 불일치되거나 또는 데이터의 복호화가 실패되면 데이터는 신뢰받지 않는 것으로 태그될 수 있다 (블럭 (608)). 일부 실시예들에서, 신뢰받지 않는 데이터는 신뢰받지 않는 데이터의 소스를 결정하려는 시도로 바이러스 방지 애플리케이션에 의해 사용되고 저장될 수 있다. 이것은 예를 들어, 키로거 (307)와 같은 말웨어가 시스템 (300)에 인스톨되었는지를 결정하는데 도움이 될 수 있다. 신뢰받지 않는 데이터는 신뢰받지 않는 데이터가 의도하지 않게 실행되면 악의적인 용도를 가질 수 있는 코드 명령들을 포함하는 경우에 코드 실행을 제한하는 "검역(qarantine)" 위치에 저장될 수 있다. 저장을 위한 검역된 메모리 대신에 또는 그것에 추가하여, 신뢰받지 않는 데이터는 저장 전에 암호화될 수 있다. 호스트 프로세서 (301)는 암호화된 명령들을 실행하는 것이 불가능할 수 있는데, 신뢰받지 않는 데이터의 암호화는 의도되지 않은 실행으로부터 유사하게 안전하게 한다. 보안 모듈 (309)은 바이러스 방지 프로그램에 알릴 수 있거나 또는 신뢰받지 않는 데이터가 수신된 것을 OS (306)의 방식으로 유저에게 알릴 수 있다.
다른 실시예들에서, 보안 모듈 (309)은 신뢰받지 않는 데이터를 저장하지 않을 수 있다. 대신에, 보안 모듈 (309)은 잠재적으로 악의적인 의도를 갖는 코드 명령들이 실행되는 것을 방지하는 것을 돕기 위해 신뢰받지 않는 데이터를 삭제할 수 있다. 일단 데이터가 저장되거나 또는 삭제되면, 보안 모듈 (309)은 호스트 프로세서 (301)에 보안 동작 모드를 빠져나갈 것을 알릴 수 있다. 다양한 실시예들에서, 호스트 프로세서 (301)로의 신호는 보안 모듈 드라이버 (310)로부터 또는 입력 핸들러 (305)로부터 올 수 있다. 방법은 안전한 입력 모드를 빠져나가기 위해 블럭 (610)으로 이동할 수 있다.
만약 데이터가 블럭 (607)에서 유효한 것으로 간주되면, 그러면 유효한 데이터는 신뢰받는 애플리케이션, 예컨대 신뢰받는 애플리케이션 (308)으로 발송될 수 있다 (블럭 (609)). 유효한 데이터를 신뢰받는 애플리케이션 (308)으로 전송하기 위해서, 데이터는 신뢰받는 애플리케이션들만이 액세스하는 보안 입력 버퍼에 저장될 수 있다. 다른 실시예들에서, 유효한 데이터는 미리 결정된 키 워드 (세션 키와 상이한)를 이용하여 암호화될 수 있고 임의의 애플리케이션이 액세스를 가질 수 있는 표준 입력 버퍼에 저장될 수 있다. 이런 경우에, 신뢰받는 애플리케이션들만이 데이터를 복호화하기 위한 미리 결정된 키 워드를 가질 수 있다. 신뢰받는 애플리케이션은 보안 모듈 (309) 및/또는 보안 모듈 드라이버 (310)로 등록되었던 애플리케이션을 지칭할 수 있다. 등록 프로세스는 애플리케이션과 보안 입력 버퍼의 위치를 공유하는 것 또는 애플리케이션과 미리 결정된 키 워드를 공유하는 것을 포함할 수 있다. 일단 데이터가 신뢰받는 애플리케이션 (308)에 대하여 저장되면, 보안 모듈 (309)은 호스트 프로세서 (301)에 보안 동작 모드를 빠져나갈 것을 알릴 수 있다. 다양한 실시예들에서, 호스트 프로세서 (301)로의 신호는 보안 모듈 드라이버 (310)로부터 또는 입력 핸들러 (305)로부터 올 수 있다.
데이터가 신뢰받지 않는 것으로 태그되거나 또는 신뢰받는 애플리케이션으로 발송된 후에, 안전한 입력 모드는 빠져나가게 될 수 있다(블럭 (610)). 안전한 입력 모드는 호스트 프로세서 (301)가 인터럽트 프로세싱을 완료하게 할 수 있는 유사한 명령 또는 인터럽트로부터의 리턴에 의해 지정될 수 있는 것과 같이 블럭(605)에서 생성된 인터럽트의 프로세싱의 완료 때문에 종료될 수 있다. 호스트 프로세서 (301)는 이 시점에서 정상 동작 모드로 리턴할 수 있다. 일부 실시예들에서, USB (304)로부터의 신호는 또한 보안 모드 인터럽트로 분리될 수 있다. 안전한 입력 모드는 안전한 입력 모드로 진입하기 위해 사용되는 동일한 값을 입력한 유저 때문에 또는 신뢰받는 애플리케이션 (708)로부터의 요청 때문에 종료되는 다른 실시예들가 고려된다. 이런 실시예에서, 입력 핸들러 (305) 또는 보안 모듈 (309)은 호스트 프로세서 (301)에 보안 동작 모드를 빠져나가고 및/또는 USB (304)에 결합된 인터럽트에 대한 보안 모드 옵션을 디스에이블할 것을 명령할 수 있다. 일단 안전한 입력이 종료되고 호스트 프로세서 (301)가 정상 동작 모드로 스위치되면, 방법은 블럭(611)에서 종료될 수 있다.
보안 모듈 (309)은 본 출원에 실시예들에서 하드웨어 모듈로서 제공되었다는 것을 유의한다. 그러나, 일부 실시예들에서 보안 모듈 (309)은 소프트웨어 모듈로 구현될 수 있다. 이런 실시예들에서, 보안 모듈 (309)은 보안 모드 단지, SMM 또는 신뢰존 모드들과 같은 보안 모드에서 동작할 수 있다. 다른 실시예들에서, 보안 모듈 (309)은 베이스라인(baseline) 보안 모드 보다 더 엄격한 액세스 제한들을 가질 수 있는 보안 모드의 서브-모드일 수 있는 모드에서 동작할 수 있다. 예를 들어, 모드들 예컨대 SMM 및 신뢰존은 베이스라인 모드에 대응할 수 있고 상위 레벨의보안 모드는 보안 모듈 (309)의 동작을 인에이블하기 위해 이들 모드들을 통하여 진입될 수 있다. 만약 보안 모듈 (309)이 소프트웨어 모듈로서 구현되면, 그런다음, 일부 실시예들에서, 보안 모듈 드라이버 (310)은 별개의 엔티티보다는 오히려 동일한 소프트웨어 의 일부일 수 있다.
다시, 소프트웨어 프로그램들, 애플리케이션들, 및 드라이버들 예컨대 입력 핸들러 (305), OS (306), 키로거 (307), 신뢰받는 애플리케이션 (308), 및 보안 모듈 드라이버 (310)은 호스트 프로세서 (301)에 의해 실행될 일련의 코드 명령들로 구성할 수 있다는 것에 유의한다. 이와 같이, 임의의 상기 블럭이 태스크 또는 동작을 수행하는 것으로 설명된 코드 명령들로 이루어질 때 본 출원에서, 호스트 프로세서 (301)는 상기 블럭에 대응하는 코드 명령들의 실행에 응답하여 상기 태스크 또는 동작을 수행할 수 있다는 것이 이해되어야 한다.
도 6의 플로우 차트로 도시된 방법은 단지 예인 것에 또한 유의하여야 한다. 다른 실시예들에서, 상이한 수의 동작들이 사용될 수 있고 하나 이상의 동작들이 병렬로 또는 대안 순서로 수행될 수 있다.
이제 도 7로 가서, 입력 디바이스로부터 데이터를 안전하게 수신하기 위한 방법을 지원하는 컴퓨팅 시스템의 다른 예가 도시된다. 시스템 (700)는 도 3에 시스템 (300)의 특징들에 유사한 많은 특징들을 포함하고 따라서, 도 3에서의 상기의 설명들은 다른식으로 명시된 바가 없으면 도 7에 대응하는 블럭에 적용될 수 있다.
도 7의 실시예에서, 도 6의 방법에 따라 보안 인터럽트가 생성되고 호스트 컴퓨터 (720)가 보안 동작 모드로 스위치된 후에, 도 3에 관련하여 설명된 것에 유사하게 입력 핸들러 (705)는 USB (704)로부터 데이터를 수신할 수 있고 보안 모듈 (709)로 데이터를 발송하기 전에 입력 버퍼에 데이터를 저장할 수 있다. 입력 핸들러 (705)는 수신된 데이터의 해시를 생성할 수 있고 데이터의 복사본을 보안 모듈 (709)로 발송할 수 있다. 보안 모듈 (709)은 도 6의 방법에 설명된 대로 입력 디바이스(703)로부터 발원된 데이터인지를 확인할 수 있고 그렇게 함으로써 데이터가 유효한 것을 결정한다. 보안 모듈 (709)은 등록된 애플리케이션들 이런 신뢰받는 애플리케이션 (708)만이 액세스할 수 있는 보안 입력 버퍼를 이용하여 신뢰받는 애플리케이션 (708)에 유효한 데이터를 발송할 수 있다.
보안 모듈 (709)은 또한 입력 버퍼내 유효한 데이터를 대체하기 위해서 입력 핸들러 (705)로 다시 데이터를 발송할 수 있고, 데이터는 그러나, 특정 ASCII 글자에 대응할 수 있는 미리 결정된 값의 반복으로 이루어진 유효한 데이터와 동일한 사이즈이다. 예를 들어, 만약 유효한 데이터가 입력된 패스워드를 나타내는 ASCII 글자들의 스트링들 예컨대 "패스워드123"로 구성되면, 보안 모듈 (309)은 ASCII 글자들의 스트링 예컨대, 예를 들어, "###########"을 다시 발송할 수 있고 패스워드의 각 글자는 "#" 글자로 대체된다. 유효한 데이터를 미리 결정된 값으로 대체하는 이 프로세스는 데이터를 "개정한 것(redacting)"으로 지칭될 수 있다. 일단 유효한 데이터가 보안 입력 버퍼에 저장되고 개정된 데이터가 입력 버퍼에 저장된 후에, 보안 모듈 (309)은 정상 동작 모드로 다시 스위치할 것을 호스트 프로세서 (701)에 알릴 수 있다. 만약 키로거 (707)가 입력 버퍼를 판독하려고 시도하면, 단지 개정된 데이터가 예를 들어, "##########"가 판독될 수 있다.
입력 핸들러 (705), OS (706), 키로거 (707), 신뢰받는 애플리케이션 (708), 및 보안 모듈 드라이버 (710)은 호스트 프로세서 (701)에 의해 실행될 일련의 코드 명령들로 구성할 수 있다는 것에 유의한다. 임의의 상기 블럭이 태스크 또는 동작을 수행하는 것으로 설명된 코드 명령들로 이루어질 때 본 출원에서, 호스트 프로세서 (301)는 상기 블럭에 대응하는 코드 명령들의 실행에 응답하여 상기 태스크 또는 동작을 수행하는 것으로 해석되어야 한다 .
도 7의 시스템은 입력 디바이스로부터 데이터를 안전하게 수신하기 위한 방법을 지원하는 컴퓨팅 시스템의 단순한 예제이다. 도 7의 시스템은 시연 목적을 위해 간략화된다. 다른 실시예들은 컴퓨팅 시스템들과 관련된 다른 기능 블럭들을 포함할 수 있다.
이제 도 8로 가서, 컴퓨팅 시스템내 데이터를 개정하기 위한 방법의 실시예를 도시하는 플로우 차트가 예시된다. 도 8의 방법은 예를 들어, 도 7에 시스템 (700)과 같은 시스템에 적용될 수 있다. 도 7 및 도 8에 대하여 총괄하여 인용하여, 방법은 블럭(801)에서 시작할 수 있다.
보안 모듈, 예컨대 보안 모듈 (709)는 수신된 데이터가 유효한 것을 확인할 수 있다 (블럭 (802)). 프로세서, 예컨대 호스트 프로세서 (701)가 보안 동작 모드에서 있는 동안, 입력 핸들러 예컨대 입력 핸들러 (705)는 데이터를 수신할 수 있고 데이터를 입력 버퍼에 저장할 수 있다. 보안 모듈 (709)은 입력 핸들러 (705)로부터 데이터를 수신할 수 있다. 보안 모듈 (709)은 앞에서 개시된 임의의 방법들을 이용하여, 예컨대 수신된 해시 값을 보안 모듈 (709)에 의해 생성된 해시 값과 비교함으로써 데이터가 유효한 것을 확인할 수 있다.
보안 모듈 (709)은 보안 모듈 드라이버 예컨대 보안 모듈 드라이버 (710)로 유효한 데이터를 발송할 수 있다(블럭 (803)). 보안 모듈 (709)은 보안 모듈 드라이버 (710)에 의해 판독되도록 보안 입력 버퍼에 유효한 데이터를 저장할 수 있다. 일부 실시예들에서, 저장된 유효한 데이터는 보안 모듈 (709) 및 보안 모듈 드라이버 (710)에 의해 알려진 키 워드를 이용하여 암호화될 수 있다. 다른 실시예들에서, 유효한 데이터는 암호화되지 않을 수 있다.
보안 모듈 (709)은 유효한 데이터에 유사한 사이즈의 개정된(redacted) 데이터를 또한 생성할 수 있다 (블럭 (804)). 개정된 데이터는 유효한 데이터에 포함된 것과 같은 수의 데이터 값들을 포함할 수 있다. 그러나, 유효한 데이터의 값들은 미리 결정된 값으로 대체될 수 있다. 예를 들어, 유효한 데이터는 패스워드 예컨대 "마이패스워드(mypassword)"에 대응할 수 있고 개정된 데이터는 "*********" 또는 임의의 다른 적절한 글자의 반복일 수 있다. 다른 실시예들에서, 입력 핸들러 (705)는 보안 모듈 (709)로부터 개정된 데이터를 수신하기 보다는 오히려 직접 유효한 데이터를 개정할 수 있다. 개정된 데이터는 입력 버퍼에 유효한 데이터를 대체할 수 있다. 유효한 데이터 및 개정된 데이터 둘 모두가 저장된 후에, 호스트 프로세서 (701)는 정상 동작 모드로 스위치할 수 있다.
보안 모듈 드라이버 (710)는 신뢰받는 애플리케이션, 예컨대 신뢰받는 애플리케이션 (708)으로 유효한 데이터를 발송할 수 있다(블럭 (805)). 일단 호스트 프로세서 (701)가 정상 동작 모드로 리턴되면, 보안 모듈 드라이버 (710)은 신뢰받는 애플리케이션 (708)에 데이터가 판독될 준비가 된 것을 알릴 수 있다. 신뢰받는 애플리케이션은 보안 입력 버퍼로부터 유효한 데이터를 판독할 수 있고, 만약 그것이 암호화되면, 데이터를 복호화한다. 달리, 신뢰받는 애플리케이션 (708)은 요구될 때 유효한 데이터를 사용할 수 있다. 방법은 블럭 (807)에서 종료할 수 있다.
입력 핸들러 (705)는 운영 체제, 예컨대 OS (706)에서 데이터가 수신되었고 판독될 준비가 된 것을 알릴 수 있다 (블럭 (806)). OS (706)는 입력 핸들러 (705)로부터의 입력을 대기하고 있는 애플리케이션들에 데이터가 입력 버퍼로부터 판독될 준비가 된 것을 경고할 수 있다. 비록 신뢰받는 애플리케이션 (708)은 입력 핸들러 (705)로 발송될 데이터에 대한 유발된(instigated) 요구를 가질 수 있지만, 다른 애플리케이션들이 데이터가 입력 버퍼에 입력된 때를 알기 위해 입력 핸들러 (705) 및/또는 OS (706)를 모니터링 할 수 있다. 예를 들어, 말웨어, 예컨대 키로거 (707)는 데이터가 입력 버퍼에 있다는 신호를 대기할 수 있거나 또는 버퍼 컨텐츠들을 로그하기 위해 버퍼를 주기적으로 판독할 수 있다. 단지 개정된 데이터만이 버퍼에 있을 수 있기 때문에, 단지 의미없는 데이터만이 수집될 수 있다. 방법은 블럭 (807)에서 종료할 수 있다.
도 8에 예시된 플로우 차트에 도시된 데이터 개정 방법은 단지 예제이고, 일부 동작들이 순차적으로 수행되는 것으로 도시되지만, 그러나 다른것들은 병렬로 수행된다는 것에 유의한다. 다른 실시예들에서, 동작들의 상이한 순서들 및 동작의 상이한 수들이 가능하고 고려된다.
이제 도 9로 가서, 입력 디바이스로부터 전자 서명(signature)을 수신하기 위한 방법을 지원하는 컴퓨팅 시스템의 다른 예가 도시된다. 시스템 (900)는 도 3에 시스템 (300)의 특징들에 유사한 많은 특징들을 포함하고 따라서, 도 3에서의 상기의 설명들은 다른식으로 명시된 바가 없으면 도 9에 대응하는 블럭에 적용될 수 있다.
입력 디바이스를 통하여 데이터를 안전하게 입력하기 위한 컴퓨팅 시스템들 및 방법들이 길게 개시되었다. 유사한 컴퓨팅 시스템이 전자 서명을 생성하기 위해 이용될 수 있다. 전자 서명은 컴퓨터 시스템, 예컨대 시스템 (900)의 유저가, 액션을 인가하기 위해 입력 디바이스 (903)를 통하여 값을 입력하는 프로세스를 지칭할 수 있다. 이 경우에서, 입력 디바이스 (903)상에 입력된 데이터는 중요한 것이 아닐 수 있다. 대신에, 유저가 데이터를 입력할 책임이 있는 지를 확인하는 것은 더 중요할 수 있다. 예를 들어, 유저는 웹사이트로부터 다운로드할 파일을 선택할 수 있다. 웹사이트의 제공자들은 실제 유저가 파일을 요청하고 있고 요청은 유저가 모르는 사이에 동작하는 말웨어로부터 발원하지 않은 것을 확인하기를 원할 수 있다. 웹사이트는 파일을 다운로드 하기 전에 전자 서명이 입력될 것을 요구할 수 있다.
신뢰받는 애플리케이션 (908), 예를 들어, 호스트 컴퓨터 (920)상에서 운용하는 웹 브라우저는, 유저로부터 전자 서명을 요청할 것을 웹 사이트에 의해 요청될 수 있다. 디스플레이 (950)를 통하여, 신뢰받는 애플리케이션은 유저에게 전자 서명이 요구되는 것을 통지할 수 있다. 전자 서명을 입력하기 위해 입력 디바이스 (903)가 사용될 수 있다. 서명을 위한 데이터는 유저가 반복될 것을 요청한 디스플레이 (950)상에 도시된 랜덤 워드일 수 있다. 이하에 상술될 프로세스를 이용하여, 보안 모듈 (909)은 데이터를 확인할 수 있고 확인된 데이터를 신뢰받는 애플리케이션 (908)에 제공할 수 있다. 신뢰받는 애플리케이션 (908)은 그런 다음 유효한 전자 서명이 입력된 것을 확인하기 위해 웹사이트에 응답할 수 있다. 그런 다음 웹사이트는 파일을 다운로드하는 것을 시작할 수 있다.
입력 핸들러 (905), OS (906), 키로거 (907), 신뢰받는 애플리케이션 (908), 및 보안 모듈 드라이버 (910)은 호스트 프로세서 (901)에 의해 실행될 일련의 코드 명령들로 구성할 수 있다는 것에 유의한다. 임의의 상기 블럭이 태스크 또는 동작을 수행하는 것으로 설명된 코드 명령들로 이루어질 때 본 출원에서, 호스트 프로세서 (901)는 상기 블럭에 대응하는 코드 명령들의 실행에 응답하여 상기 태스크 또는 동작을 수행하는 것으로 해석되어야 한다.
도 9의 시스템은 입력 디바이스로부터 전자 서명을 수신하기 위한 방법을 지원하는 컴퓨팅 시스템의 단순한 예제이다. 다른 실시예들에서, 하나 이상의 추가의 기능 블럭들이 컴퓨팅 시스템내에 포함될 수 있다.
도 10로 가서, 컴퓨팅 시스템에 전자 서명을 생성하기 위한 방법을 위한 플로우 차트가 예시된다. 방법은 도 9의 시스템 (900)에 적용될 수 있다. 도 9 및 도 10에 대하여 총괄하여 인용하여, 방법은 블럭(1001)에서 시작할 수 있다.
신뢰받는 애플리케이션, 예컨대, 예를 들어, 신뢰받는 애플리케이션 (908)은 시스템 (900)의 유저로부터 전자 서명을 요청할 수 있다 (블럭 (1002)). 다른 실시예들에서, 다른 애플리케이션, 예컨대 웹 브라우저는 원격 서버로부터 로딩된 웹 페이지를 통하여 원격 서버로부터 전자 서명에 대한 요청을 수신할 수 있다. 신뢰받는 애플리케이션 (908)은 디스플레이 (950)를 통하여 전자 서명에 대한 요구를 유저에게 경고할 수 있다. 경고는 유저가 반복할 것을 요구한 값을 포함할 수 있거나 또는 예를 들어 패스워드와 같이 유저에게 알릴 특정 값을 요청할 수 있다.
요청된 값을 입력하기 전에, 유저는 입력 디바이스 (903)상에 미리 결정된 값을 입력함으로써 안전한 입력 모드를 활성화시킬 수 있다 (블럭 (1003)). 다른 실시예들에서, 신뢰받는 애플리케이션 (908)은 안전한 입력 모드를 입력하기 위해 호스트 컴퓨터(920)로 요청을 발송할 수 있다. 유저는 그런 다음 USB (904)를 통하여 호스트 프로세서 (901)로 발송될 수 있는 입력 디바이스 (903)상에 요청된 값을 입력할 수 있다. USB (904)는 값이 호스트 프로세서 (901)로 발송될 준비가 된 것을 호스트 프로세서 (901)에 알릴 수 있다. USB (904)로부터의 신호에 응답하여, 호스트 프로세서 (901)는 안전한 입력 모드가 인에이블되고 있기 때문에 보안 동작 모드에 진입할 수 있다. 보안 동작 모드는 호스트 프로세서 (901)가 OS (906)와 관련된 임의의 명령, 뿐만 아니라 OS (906), 예컨대, 예를 들어, 신뢰받는 애플리케이션 (908), 및 키로거 (907)를 통하여 시동된 애플리케이션들을 실행하는 것을 제한할 수 있다. 디바이스 드라이버들, 예컨대, 입력 핸들러 (905) 및 보안 모듈 드라이버 (910)에 관련된 명령들은 계속 실행될 수 있다. 따라서, 입력 핸들러 (905)는 요청된 값을 USB (904)로부터 수신할 수 있고, 값을 입력 버퍼에 저장할 수 있고 그런다음 세션 키 워드 및 요청된 데이터에 의존하여 해시 값을 생성할 수 있다. 요청된 데이터 및 해시 값은 보안 모듈 (909)로 발송될 수 있다. 일부 실시예들에서, 데이터는 암호화될 수 있다.
그런 다음 방법은 요청된 데이터의 유효성에 의존한다 (블럭 (1004)). 보안 모듈 (909)은 입력 핸들러 (905)로부터 요청된 데이터 및 해시 값을 수신할 수 있다. 보안 모듈 (909)은 입력 핸들러 (905)에 의해 사용되는 동일한 세션 키 워드를 이용하여 제 2 해시 값을 생성할 수 있다. 만약 데이터가 암호화되면, 보안 모듈 (909)은 제 2 해시 값을 생성하기 전에 데이터를 복호화할 수 있다. 만약 두개의 해시 값들이 일치하면, 그러면 전자 서명은 유효한 것으로 간주될 수 있고 방법은 블럭 (1006)에서 계속될 수 있다. 달리, 만약 두개의 해시 값들이 일치하지 않으면, 그러면 서명은 유효하지 않은 것으로 간주될 수 있다.
서명은 만약 그것이 유효하지 않으면 신뢰받지 않는 것으로 태그(tag)될 수 있다(블럭 (1005)). 서명을 태그하는 것은 입력 버퍼내 데이터를 다른 값으로 대체하는 단계를 포함할 수 있다. 대체 값은 보안 입력 버퍼에 또한 저장될 수 있다. 입력 버퍼에 및 보안 입력 버퍼에 값들은 동일하거나 또는 동일하지 않을 수 있다. 일단 새로운 값들이 저장된 후에, 호스트 프로세서 (901)는 보안 동작 모드를 빠져나갈 것을 통지 받을 수 있다. 안전한 입력 모드가 또한 빠져나가게 된다. 보안 모듈 드라이버 (910)는 신뢰받는 애플리케이션 (908)에 데이터가 보안 입력 버퍼로부터 판독될 준비가 된 것을 알릴 수 있다. 신뢰받는 애플리케이션 (908)은 보안 입력 버퍼로부터 값을 판독할 수 있고 예상되는 값에 비교하고 불일치를 감지할 수 있다. 다른 실시예들에서, 신뢰받는 애플리케이션 (908)은 차례로 불일치를 감지할 수 있는 다른 애플리케이션로 데이터를 포워드할 수 있다. 방법은 블럭 (1007)에서 종료할 수 있다.
만약 데이터가 블럭에서 (1004), 유효한 것으로 간주되면 요청된 데이터는 신뢰받는 애플리케이션 (908)으로 발송될 수 있다 (블럭 (1006)). 요청된 데이터는 보안 입력 버퍼에 저장될 수 있다. 다양한 실시예들에서, 보안 입력 버퍼내 데이터는 암호화될 수 있고 입력 버퍼내 데이터는 개정되거나 또는 개정되지 않을 수 있다. 일단 요청된 데이터가 저장된 후에, 호스트 프로세서 (901)는 보안 동작 모드를 빠져나갈 것을 통지 받을 수 있다. 안전한 입력 모드가 또한 빠져나가게 된다. 보안 모듈 드라이버 (910)는 신뢰받는 애플리케이션 (908)에 데이터가 보안 입력 버퍼로부터 판독될 준비가 된 것을 알릴 수 있다. 신뢰받는 애플리케이션 (908)은 보안 입력 버퍼로부터 값을 판독할 수 있고 예상되는 값에 비교하고 성공한 전자 서명을 표시하는 일치를 감지할 수 있다. 다른 실시예들에서, 신뢰받는 애플리케이션 (908)은 차례로 성공한 전자 서명을 감지할 수 있는 다른 애플리케이션로 데이터를 포워드할 수 있다. 방법은 블럭 (1007)에서 종료할 수 있다.
도 10에 도시된 방법은 전자 서명을 확인하는 프로세스를 입증하도록 의도된 단지 예제이다. 다른 실시예들에서, 상이한 동작들 및 동작들의 상이한 순서들이 채용될 수 있다.
비록 특정 실시예들이 상기에서 설명되었지만, 심지어 단지 단일 실시예가 특정 특징에 대하여 설명된 경우 이들 실시예들은 본 발명의 범위를 제한하는 것으로 의도되지 않는다. 본 개시에 제공된 특징들의 예제들은 다른식으로 언급되지 않는 한 제한적이기 보다는 오히려 예시적인 것으로 의도된다. 상기의 설명은 이 개시의 장점을 갖는 관련 기술 분야에서 통상의 기술자에 분명한 이런 대안들, 수정예들, 및 등가물들를 커버하는 것으로 의도된다.
본 발명의 범위는 그것이 본 출원에 다루어진 임의의 문제 또는 모든 문제들을 완화시키는지 여부에 관계없이 본 출원에 개시된 임의의 특징 또는 특징들의 조합 (명백하게 또는 함축적으로), 또는 그것의 임의의 일반화를 포함한다. 따라서, 본 출원 (또는 우선권을 주장하는 출원)의 소추동안에 임의의 이런 조합의 특징들에 대한 새로운 청구항들이 형성될 수 있다. 특별히, 첨부된 청구항들을 참고로하여, 종속항들로부터의 특징들은 독립항들의 특징들과 결합될 수 있고 개별 독립항들로부터의 특징들은 임의의 적절한 방식으로 결합될 수 있고 단지 첨부된 청구항들에 열거된 특정 조합들로 결합되지 않는다.
Claims (20)
- 컴퓨팅 시스템에서 보안 입력을 위한 방법에 있어서,
사용자로부터의 요청에 응답하여 보안 입력 모드(secure input mode)를 호스트 컴퓨터가 활성화 시키는 단계;
상기 보안 입력 모드가 활성인 동안 데이터가 입력 디바이스로부터 이용 가능한 것에 응답하여, 상기 호스트 프로세서를 관리자 동작 모드(privileged operating mode) 로 진입하게 하는 단계;
상기 호스트 프로세서의 상기 관리자 동작 모드 동안에 상기 입력 디바이스로부터 상기 데이터를 입력 핸들러(input handler)가 수신하는 단계;
상기 수신된 데이터에 대응하는 코드 워드를 상기 입력 핸들러가 생성하는 단계;
상기 수신된 데이터 및 상기 코드 워드를 보안 모듈로 상기 입력 핸들러가 발송하는 단계; 및
상기 수신된 데이터가 상기 코드 워드에 대응하는지를 상기 보안 모듈이 확인하는 단계를 포함하는, 컴퓨팅 시스템에서 보안 입력을 위한 방법. - 청구항 1에 있어서, 상기 요청에 응답하여 상기 보안 입력 모드를 상기 호스트가 활성화시키는 단계는 유저에 의해 상기 입력 디바이스를 통하여 미리 결정된 값을 수신하는 단계를 포함하는, 컴퓨팅 시스템에서 보안 입력을 위한 방법.
- 청구항 1에 있어서, 상기 요청에 응답하여 상기 보안 입력 모드를 상기 호스트가 활성화시키는 단계는 원격 서버로부터 수신된 미리 결정된 값을 수신하는 단계를 포함하는, 컴퓨팅 시스템에서 보안 입력을 위한 방법.
- 청구항 1에 있어서, 상기 호스트 프로세서를 상기 관리자 동작 모드로 진입하게 하는 단계는 인터럽트(interrupt)의 어써트(assertion)에 응답하여 상기 호스트 프로세서를 상기 관리자 동작 모드로 진입하게 하는 단계를 포함하고, 상기 인터럽트의 어써트는 상기 데이터가 상기 입력 디바이스로부터 이용 가능한 것에 응답하는, 컴퓨팅 시스템에서 보안 입력을 위한 방법.
- 청구항 1에 있어서, 상기 수신된 데이터 및 상기 코드 워드를 상기 보안 모듈에 발송하는 단계는 상기 수신된 데이터 및 상기 코드 워드를 상기 보안 모듈로 발송하기 전에 상기 입력 디바이스로부터 상기 수신된 데이터를 상기 입력 핸들러가 암호화하는 단계를 포함하는, 컴퓨팅 시스템에서 보안 입력을 위한 방법.
- 청구항 1에 있어서, 상기 보안 모듈은 소프트웨어 모듈인, 컴퓨팅 시스템에서 보안 입력을 위한 방법.
- 청구항 1에 있어서,
상기 수신된 데이터가 상기 코드 워드에 대응한다는 결정에 응답하여 상기 확인된 데이터를 하나 이상의 다른 메모리 위치들에 상기 보안 모듈이 저장하는 단계;및
상기 보안 모듈이 상기 확인된 데이터를 하나 이상의 다른 메모리 위치들에 저장한 것에 응답하여 상기 수신된 데이터를 미리 결정된 값으로 상기 입력 핸들러가 대체하는 단계;
상기 보안 모듈이 상기 확인된 데이터를 저장한 것에 응답하여 상기 호스트 프로세서가 정상 동작 모드로 리턴하는 단계(returning)를 더 포함하는, 컴퓨팅 시스템에서 보안 입력을 위한 방법. - 컴퓨팅 시스템에서 보안 입력을 위한 시스템에 있어서,
상기 시스템은:
입력 디바이스로부터 데이터를 수신하고 데이터가 상기 입력 디바이스로부터 수신된 때 신호를 어써트하도록 구성된 인터페이스; 및
호스트 컴퓨터를 포함하되, 상기 호스트 컴퓨터는
호스트 프로세서;
제 1 입력 핸들러로서:
상기 호스트 프로세서의 정상 동작 모드동안에, 상기 인터페이스로부터의 제 1 신호의 어써트에 응답하여 상기 인터페이스로부터 제 1 데이터를 수신하고; 및
상기 수신된 제 1 데이터를 하나 이상의 메모리 위치들에 저장하도록 구성된, 상기 제 1 입력 핸들러; 및
제 2 입력 핸들러를 포함하고; 및
상기 호스트 컴퓨터는 요청에 응답하여 보안 입력 모드를 활성화시키도록 구성되고;
상기 호스트 컴퓨터의 상기 보안 입력 모드동안에, 상기 호스트 프로세서는 상기 인터페이스로부터의 제 2 신호의 어써트에 응답하여 상기 정상 동작 모드로부터 관리자 동작 모드로 진입하도록 구성되고;
상기 제 2 입력 핸들러는 :
상기 호스트 프로세서가 상기 관리자 동작 모드로 진입한 것에 응답하여 상기 입력 디바이스로부터 제 2 데이터를 수신하고;
상기 수신된 제 2 데이터에 대응하는 코드 워드를 생성하고; 및
상기 수신된 제 2 데이터 및 상기 코드 워드를 상기 보안 모듈로 발송하고; 및
상기 호스트 프로세서는 상기 관리자 동작 모드에서 동작하는 동안 상기 수신된 제 2 데이터가 상기 코드 워드에 대응하는지를 확인하도록 더 구성되는, 컴퓨팅 시스템에서 보안 입력을 위한 시스템. - 청구항 8에 있어서, 상기 보안 모듈은:
상기 요청에 응답하여 세션 키 워드를 생성하고; 및
상기 세션 키 워드를 상기 제 2 입력 핸들러와 공유하도록 더 구성되는, 컴퓨팅 시스템에서 보안 입력을 위한 시스템. - 청구항 8에 있어서, 상기 정상 동작 모드로부터 상기 관리자 동작 모드로 진입하기 위해, 상기 호스트 프로세서는 인터럽트(interrupt)의 어써트에 응답하여 상기 관리자 동작 모드로 진입하도록 더 구성되고, 상기 인터럽트의 어써트는 상기 인터페이스로부터 상기 제 2 신호에 응답하는, 컴퓨팅 시스템에서 보안 입력을 위한 시스템.
- 청구항 8에 있어서, 상기 관리자 동작 모드로 진입하기 위해, 상기 호스트 프로세서는 전용 하드웨어를 활성화시키도록 구성되는, 컴퓨팅 시스템에서 보안 입력을 위한 시스템.
- 청구항 11에 있어서, 상기 전용 하드웨어는 상기 호스트 프로세서로부터 별개의 칩 상에 있는, 컴퓨팅 시스템에서 보안 입력을 위한 시스템.
- 청구항 8에 있어서, 상기 제 2 입력 핸들러는 추가로:
상기 수신된 제 2 데이터가 상기 코드 워드에 대응한다고 상기 보안 모듈이 확인한 결정에 응답하여 상기 확인된 데이터를 하나 이상의 다른 메모리 위치들에 저장하고;및
상기 수신된 제 2 데이터를 미리 선택된 값으로 대체하도록 더 구성되고; 및
상기 호스트 프로세서는 상기 제 2 입력 핸들러가 상기 확인된 데이터를 저장한 것에 응답하여 상기 정상 동작 모드로 리턴하도록 더 구성되는, 컴퓨팅 시스템에서 보안 입력을 위한 시스템. - 청구항 9에 있어서, 상기 수신된 제 2 데이터 및 상기 코드 워드를 코프로세서로 발송하기 위해, 상기 제 2 입력 핸들러는 상기 세션 키 워드를 이용하여 상기 수신된 제 2 데이터를 암호화하도록 더 구성되는, 컴퓨팅 시스템에서 보안 입력을 위한 시스템.
- 컴퓨팅 시스템에서 보안 입력을 위한 방법에 있어서,
전자 서명에 대한 요청을 수신한 것에 응답하여 보안 입력 모드를 호스트 컴퓨터가 활성화시키는 단계;
상기 전자 서명에 대한 상기 요청에 응답하여 세션 키 워드를 상기 호스트 컴퓨터의 입력 핸들러가 생성하는 단계;
상기 전자 서명이 입력 디바이스로부터 이용 가능하다는 것에 응답하여, 상기 호스트 컴퓨터의 호스트 프로세서를 정상 동작 모드로부터 관리자 동작 모드로 진입하게 하는 단계;
상기 호스트 프로세서의 상기 관리자 동작 모드 동안에 상기 입력 디바이스로부터 상기 전자 서명을 상기 입력 핸들러가 수신하는 단계;
상기 수신된 전자 서명 및 상기 세션 키 워드에 대응하는 코드 워드를 상기 입력 핸들러가 생성하는 단계;
상기 코드 워드를 보안 모듈로 상기 입력 핸들러가 발송하는 단계; 및
상기 코드 워드가 상기 수신된 전자 서명 및 상기 세션 키 워드에 대응하는 것을 상기 보안 모듈이 확인하는 단계를 포함하는, 컴퓨팅 시스템에서 보안 입력을 위한 방법. - 청구항 15에 있어서, 상기 전자 서명에 대한 상기 요청은 상기 입력 디바이스를 통하여 수신된 미리 결정된 값인, 컴퓨팅 시스템에서 보안 입력을 위한 방법.
- 청구항 15에 있어서, 상기 전자 서명에 대한 상기 요청은 상기 호스트 컴퓨터 상에서 운용하는 애플리케이션을 통하여 수신되는, 컴퓨팅 시스템에서 보안 입력을 위한 방법.
- 청구항 15에 있어서, 상기 보안 모듈가 상기 코드 워드가 상기 수신된 전자 서명 및 상기 세션 키 워드에 대응한다는 것을 확인한 것에 응답하여 상기 확인된 데이터를 미리 결정된 값으로 상기 입력 핸들러가 대체하는 단계를 더 포함하는, 컴퓨팅 시스템에서 보안 입력을 위한 방법.
- 청구항 17에 있어서, 상기 호스트 컴퓨터상에서 운용하는 상기 애플리케이션으로부터 확인 응답(acknowledgement)를 수신한 것에 응답하여 상기 보안 입력 모드를 상기 호스트 컴퓨터가 비활성화시키는 단계를 더 포함하는, 컴퓨팅 시스템에서 보안 입력을 위한 방법.
- 청구항 15에 있어서, 상기 호스트 프로세서에서, 상기 정상 동작 모드로 리턴하는 단계는 상기 보안 모듈이 상기 코드 워드가 상기 수신된 전자 서명 및 상기 세션 키 워드에 대응한 것을 확인한 것에 응답하여 상기 호스트 프로세서에서, 상기 정상 동작 모드로 스위칭하는 단계를 포함하는, 컴퓨팅 시스템에서 보안 입력을 위한 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/492,786 | 2014-09-22 | ||
US14/492,786 US9471799B2 (en) | 2014-09-22 | 2014-09-22 | Method for privileged mode based secure input mechanism |
PCT/US2015/051346 WO2016048955A1 (en) | 2014-09-22 | 2015-09-22 | Method for privileged mode based secure input mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170057279A KR20170057279A (ko) | 2017-05-24 |
KR102403138B1 true KR102403138B1 (ko) | 2022-05-27 |
Family
ID=55526014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177007334A KR102403138B1 (ko) | 2014-09-22 | 2015-09-22 | 보안 입력 메커니즘 기반 관리자 모드를 위한 방법 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9471799B2 (ko) |
EP (1) | EP3198516B1 (ko) |
JP (1) | JP6611797B2 (ko) |
KR (1) | KR102403138B1 (ko) |
CN (1) | CN106687985B (ko) |
WO (1) | WO2016048955A1 (ko) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10049233B2 (en) * | 2014-10-09 | 2018-08-14 | Canon Denshi Kabushiki Kaisha | Information processing apparatus, security management method and information processing system that switches from one monitoring unit to another in accordance with operating mode |
JP2016139322A (ja) * | 2015-01-28 | 2016-08-04 | 株式会社リコー | 画像処理装置及びそれを備えた電子黒板 |
US10289846B2 (en) * | 2015-04-17 | 2019-05-14 | Easy Solutions Enterprises Corp. | Systems and methods for detecting and addressing remote access malware |
WO2016172944A1 (zh) * | 2015-04-30 | 2016-11-03 | 华为技术有限公司 | 终端的界面显示方法和终端 |
US10311236B2 (en) | 2016-11-22 | 2019-06-04 | Advanced Micro Devices, Inc. | Secure system memory training |
US10372625B2 (en) | 2016-12-27 | 2019-08-06 | Intel Corporation | Secure memory |
US10699013B2 (en) * | 2017-03-20 | 2020-06-30 | Honeywell International Inc. | Systems and methods for USB/firewire port monitoring, filtering, and security |
US10699033B2 (en) | 2017-06-28 | 2020-06-30 | Advanced Micro Devices, Inc. | Secure enablement of platform features without user intervention |
EP3506143B1 (en) * | 2017-12-27 | 2024-02-14 | Siemens Aktiengesellschaft | Interface for a hardware security module |
US11429753B2 (en) * | 2018-09-27 | 2022-08-30 | Citrix Systems, Inc. | Encryption of keyboard data to avoid being read by endpoint-hosted keylogger applications |
US10895597B2 (en) | 2018-11-21 | 2021-01-19 | Advanced Micro Devices, Inc. | Secure coprocessor assisted hardware debugging |
CN110414225B (zh) * | 2019-07-24 | 2023-05-26 | 广东魅视科技股份有限公司 | 一种防hid键盘攻击的系统及方法 |
WO2021076118A1 (en) * | 2019-10-16 | 2021-04-22 | Hewlett-Packard Development Company, L.P. | Generating keys |
US11055017B1 (en) | 2020-01-27 | 2021-07-06 | International Business Machines Corporation | Throttling a point-in-time snapshot copy operation within a data consistency application |
IL280028B1 (en) * | 2021-01-07 | 2023-07-01 | Sec Labs Ltd High | Method and device for locking secure mediation between console peripherals and host computers |
KR102347940B1 (ko) | 2021-06-10 | 2022-01-06 | 제이티드론협동조합 | 드론용 운반체 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060195907A1 (en) | 2004-12-23 | 2006-08-31 | Infineon Technologies Ag | Data processing device |
US20090119221A1 (en) | 2007-11-05 | 2009-05-07 | Timothy Martin Weston | System and Method for Cryptographically Authenticated Display Prompt Control for Multifunctional Payment Terminals |
JP2011227939A (ja) | 2002-06-07 | 2011-11-10 | Intel Corp | システム管理割り込みを再命令し、仮想マシンコンテナを生成することによる、信頼性のないシステム管理コードに対する保護方法 |
US20130007466A1 (en) | 2011-07-01 | 2013-01-03 | Sarangdhar Nitin V | Protecting keystrokes received from a keyboard in a platform containing embedded controllers |
US20140181529A1 (en) | 2012-12-21 | 2014-06-26 | Advanced Biometric Controls, Llc | Verification of password using a keyboard with a secure password entry mode |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4333090A (en) | 1980-05-05 | 1982-06-01 | Hirsch Steven B | Secure keyboard input terminal |
US4479112A (en) | 1980-05-05 | 1984-10-23 | Secure Keyboards Limited | Secure input system |
US5748888A (en) * | 1996-05-29 | 1998-05-05 | Compaq Computer Corporation | Method and apparatus for providing secure and private keyboard communications in computer systems |
US6581162B1 (en) * | 1996-12-31 | 2003-06-17 | Compaq Information Technologies Group, L.P. | Method for securely creating, storing and using encryption keys in a computer system |
KR100378586B1 (ko) | 2001-08-29 | 2003-04-03 | 테커스 (주) | 엑티브엑스 기반의 키보드 해킹 방지 방법 및 장치 |
US20030159053A1 (en) | 2002-02-19 | 2003-08-21 | Charles Fauble | Secure reconfigurable input device with transaction card reader |
US7835521B1 (en) | 2005-12-02 | 2010-11-16 | Google Inc. | Secure keyboard |
KR100909891B1 (ko) | 2007-10-02 | 2009-07-31 | 소프트캠프(주) | 커널영역의 키보드 보안을 위한 입력정보 암호화 처리방법 |
US8726013B2 (en) | 2008-08-22 | 2014-05-13 | Chi-Pei Wang | Anti-keylogger computer network system |
US20120272059A1 (en) | 2011-04-20 | 2012-10-25 | Varun Shetty | System and method for secure exchange of information in a computer system |
US9037869B2 (en) * | 2011-11-02 | 2015-05-19 | Intel Corporation | Delivering data from a secure execution environment to a display controller |
US20130145475A1 (en) * | 2011-12-02 | 2013-06-06 | Samsung Electronics Co., Ltd. | Method and apparatus for securing touch input |
KR101873530B1 (ko) * | 2012-04-10 | 2018-07-02 | 삼성전자주식회사 | 모바일 기기, 모바일 기기의 입력 처리 방법, 및 모바일 기기를 이용한 전자 결제 방법 |
-
2014
- 2014-09-22 US US14/492,786 patent/US9471799B2/en active Active
-
2015
- 2015-09-22 KR KR1020177007334A patent/KR102403138B1/ko active IP Right Grant
- 2015-09-22 EP EP15844648.4A patent/EP3198516B1/en active Active
- 2015-09-22 WO PCT/US2015/051346 patent/WO2016048955A1/en active Application Filing
- 2015-09-22 JP JP2017515761A patent/JP6611797B2/ja active Active
- 2015-09-22 CN CN201580051135.3A patent/CN106687985B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011227939A (ja) | 2002-06-07 | 2011-11-10 | Intel Corp | システム管理割り込みを再命令し、仮想マシンコンテナを生成することによる、信頼性のないシステム管理コードに対する保護方法 |
US20060195907A1 (en) | 2004-12-23 | 2006-08-31 | Infineon Technologies Ag | Data processing device |
US20090119221A1 (en) | 2007-11-05 | 2009-05-07 | Timothy Martin Weston | System and Method for Cryptographically Authenticated Display Prompt Control for Multifunctional Payment Terminals |
US20130007466A1 (en) | 2011-07-01 | 2013-01-03 | Sarangdhar Nitin V | Protecting keystrokes received from a keyboard in a platform containing embedded controllers |
US20140181529A1 (en) | 2012-12-21 | 2014-06-26 | Advanced Biometric Controls, Llc | Verification of password using a keyboard with a secure password entry mode |
Also Published As
Publication number | Publication date |
---|---|
EP3198516B1 (en) | 2019-12-04 |
WO2016048955A1 (en) | 2016-03-31 |
US9471799B2 (en) | 2016-10-18 |
KR20170057279A (ko) | 2017-05-24 |
EP3198516A1 (en) | 2017-08-02 |
JP2017534963A (ja) | 2017-11-24 |
CN106687985B (zh) | 2018-09-21 |
JP6611797B2 (ja) | 2019-11-27 |
CN106687985A (zh) | 2017-05-17 |
US20160085976A1 (en) | 2016-03-24 |
EP3198516A4 (en) | 2018-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102403138B1 (ko) | 보안 입력 메커니즘 기반 관리자 모드를 위한 방법 | |
US9235719B2 (en) | Apparatus, system, and method for providing memory access control | |
EP2893450B1 (en) | Mitigating unauthorized access to data traffic | |
US9183390B2 (en) | Systems and methods for providing anti-malware protection on storage devices | |
US8954747B2 (en) | Protecting keystrokes received from a keyboard in a platform containing embedded controllers | |
WO2011146857A2 (en) | Method and apparatus for secure scan of data storage device from remote server | |
CN105740718B (zh) | 电子系统、电子装置及电子装置的存取认证方法 | |
US20180004946A1 (en) | Regulating control transfers for execute-only code execution | |
US9537738B2 (en) | Reporting platform information using a secure agent | |
Schiffman et al. | The smm rootkit revisited: Fun with usb | |
US9792438B2 (en) | Protecting user input against focus change | |
EP3044721B1 (en) | Automatic pairing of io devices with hardware secure elements | |
US8973145B2 (en) | Antivirus computing system | |
US20050044408A1 (en) | Low pin count docking architecture for a trusted platform | |
RU2533303C2 (ru) | Антивирусная вычислительная система | |
BR112018010716B1 (pt) | Método de comutação de interface de usuário, terminal, mídia não transitória legível por computador, e produto de programa de computador |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |