KR101390077B1 - 보안 메모리 도메인에 이미지를 직접 렌더링하고 대응하는 사용자 입력을 상관시키는 방법 및 시스템 - Google Patents

보안 메모리 도메인에 이미지를 직접 렌더링하고 대응하는 사용자 입력을 상관시키는 방법 및 시스템 Download PDF

Info

Publication number
KR101390077B1
KR101390077B1 KR1020120121514A KR20120121514A KR101390077B1 KR 101390077 B1 KR101390077 B1 KR 101390077B1 KR 1020120121514 A KR1020120121514 A KR 1020120121514A KR 20120121514 A KR20120121514 A KR 20120121514A KR 101390077 B1 KR101390077 B1 KR 101390077B1
Authority
KR
South Korea
Prior art keywords
image
protected memory
video frame
user
memory domain
Prior art date
Application number
KR1020120121514A
Other languages
English (en)
Other versions
KR20120135165A (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 KR20120135165A publication Critical patent/KR20120135165A/ko
Application granted granted Critical
Publication of KR101390077B1 publication Critical patent/KR101390077B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/36User authentication by graphic or iconic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring

Abstract

애플리케이션 및 비디오 프레임 버퍼를 보호된 메모리 도메인에 할당하여, 보호된 메모리 도메인으로부터의 키보드의 이미지를 비디오 프레임 버퍼의 랜덤 위치에 렌더링하고 포인팅 디바이스로부터의 사용자 입력을 렌더링된 키보드 이미지와 상관시키는 방법 및 시스템이 개시된다. 키보드 이미지는 사용자 입력에 후속하여 랜덤하게 재배치될 수 있다. 키보드 이미지는 보안 사용자 이미지 위에 렌더링될 수 있다. 확인 이미지는 보호된 메모리 도메인으로부터 비디오 프레임 버퍼의 랜덤 위치로 렌더링될 수 있고, 확인 이미지와 상관되지 않는 사용자 입력에 응답하여 랜덤하게 재배치될 수 있다. 랜덤하게 배치된 이미지와 상관되지 않은 사용자 입력들은 카운트될 수 있고, 상관되지 않은 사용자 입력의 수가 임계치를 넘는 경우 하나 이상의 프로세스들은 중단될 수 있다.

Description

보안 메모리 도메인에 이미지를 직접 렌더링하고 대응하는 사용자 입력을 상관시키는 방법 및 시스템{METHODS AND SYSTEMS TO DIRECTLY RENDER AN IMAGE AND CORRELATE CORRESPONDING USER INPUT IN A SECURE MEMORY DOMAIN}
본 발명은 전자적 트랜잭션을 보호(protect)하는 분야에 대한 것이다.
전자적 지불 트랜잭션(electronic payment transaction) 정보와 같은 기밀 사용자 정보가 기계적 키보드 또는 포인팅 디바이스를 통해서 컴퓨터 시스템에 입력될 때, 이 정보는 스파이웨어와 같은 악성 소프트웨어(malware)에 취약할 수 있는데, 이런 악성 소프트웨어는 키 스트로크들 또는 입력 좌표들이 컴퓨터 시스템으로 또는 컴퓨터 시스템 내에 전송됨에 따라 이들을 레코딩할 수 있다.
기밀 사용자 정보의 수신과 연관된 애플리케이션 프로그램이 또한 스파이웨어와 같은 악성 소프트웨어에 취약할 수 있다.
보안 메모리 도메인에 이미지를 직접 렌더링하고 대응하는 사용자 입력을 상관시키는 방법 및 시스템을 제공한다.
애플리케이션 및 비디오 프레임 버퍼를 보호된 메모리 도메인에 할당하여, 보호된 메모리 도메인으로부터의 키보드의 이미지를 비디오 프레임 버퍼의 랜덤 위치에 렌더링하고 포인팅 디바이스로부터의 사용자 입력을 렌더링된 키보드 이미지와 상관시키는 방법 및 시스템이 개시된다. 키보드 이미지는 사용자 입력에 후속하여 랜덤하게 재배치될 수 있다. 키보드 이미지는 보안 사용자 이미지 위에 렌더링될 수 있다. 확인 이미지는 보호된 메모리 도메인으로부터 비디오 프레임 버퍼의 랜덤 위치로 렌더링될 수 있고, 확인 이미지와 상관되지 않는 사용자 입력에 응답하여 랜덤하게 재배치될 수 있다. 랜덤하게 배치된 이미지와 상관되지 않은 사용자 입력들은 카운트될 수 있고, 상관되지 않은 사용자 입력의 수가 임계치를 넘는 경우 하나 이상의 프로세스들은 중단될 수 있다.
보안 메모리 도메인에 이미지를 직접 렌더링하고 대응하는 사용자 입력을 상관시키는 방법 및 시스템을 제공할 수 있다.
도 1은 보호된 메모리 도메인에서 데이터 엔트리 이미지를 렌더링하고 렌더링된 이미지와 사용자 입력을 상관시키는 예시적 방법의 처리 흐름도.
도 2는 네트워크 접속을 통해 지불 트랜잭션을 수행하도록 도 1의 방법을 인보크하는 예시적 방법의 처리 흐름도.
도 3은 이미지를 디스플레이의 랜덤 위치에 렌더링하고 이 이미지를 사용자 입력에 뒤이어 디스플레이의 다른 랜덤 위치에 리-렌더링하는 예시적 방법의 처리 흐름도.
도 4는 보안 메모리 도메인에서, 사용자 이미지 위에 입력 디스플레이 이미지를 렌더링하는 예시적 방법의 처리 흐름도.
도 5는 확인 이미지를 디스플레이의 랜덤 위치에 렌더링하는 예시적 방법의 처리 흐름도.
도 6은 렌더링된 이미지와 상관되지 않는 사용자 입력의 수가 임계치를 초과할 때 트랜잭션을 중단시키는 예시적 방법의 처리 흐름도.
도 7은 보호된 메모리 도메인에서 데이터 엔트리 이미지를 렌더링하고 렌더링된 이미지와 사용자 입력을 상관시키는 또 다른 예시적 방법의 처리 흐름도.
도 8은 예시적 컴퓨터 환경의 그래픽 도해.
도 9는 도 8의 예시적 컴퓨터 환경에 대응하는 예시적 로직 및 데이터의 블록도.
도면들에서, 도면 부호의 가장 좌측의 숫자(들)는 이 도면 부호가 처음 나타나는 도면을 식별하는 것이다.
도 1은 보호된 메모리 도메인(protected memory domain)에서 데이터 엔트리 이미지(data entry image)를 렌더링하고 렌더링된 이미지와 사용자 입력을 상관시키는 예시적 방법(100)의 처리 흐름도이다.
단계 102에서, 액세스 보호된 메모리 도메인이 컴퓨터 시스템 내에서 구성된다. 보호된 메모리 도메인에 대한 액세스는, 보호된 메모리 도메인 내에서의 데이터 및 명령어들을 보호된 메모리 도메인 외부의 프로세스들이 액세스할 수 없는 것을 실질적으로 보장하기 위한 하나 또는 그 이상의 규칙에 따라서 제한된다. 보호된 메모리 도메인은 시스템 메모리, 그래픽 메모리 및 이것들의 조합 중의 하나 또는 그 이상의 부분들을 포함할 수 있다. 보호된 메모리 도메인은 가상 머신(virtual machine) 관리 기술을 포함하여 소프트웨어, 하드웨어 및 이들의 결합의 제어 하에서 구성되고 구현(enforce)될 수 있다.
단계 104에서, 애플리케이션은 보호된 메모리 도메인에서 개시된다. 애플리케이션은 컴퓨터 시스템의 프로세서로 하여금, 보호된 메모리 도메인에서, 키보드 이미지와 같은 데이터 엔트리 이미지를 렌더링하고, 후속하는 사용자 입력을 그 이미지와 상관시키도록 야기하는 명령어들을 포함할 수 있다.
애플리케이션은 개시 전에 소프트웨어, 하드웨어 및 이들의 조합을 이용하여 인증(authenticate)될 수 있고, 코드 서명 해싱 기술(code signature hashing techniques)을 포함하는 하나 또는 그 이상의 해싱 기술에 따라서 인증될 수 있는데, 이 해싱 기술은 신뢰 실행 기술(a trusted execution technology)을 포함할 수 있다.
애플리케이션은 보안 메모리 도메인(secure memory domain) 내로 로딩될 수 있고, 보안 메모리 도메인 내에서 인증될 수 있다. 대안적으로 또는 추가적으로, 애플리케이션 또는 이것의 부분은 신뢰 실행 기술 모듈과 연관된 액세스 보호된 펌웨어와 같은, 또 다른 보안 메모리 도메인 내로 로드될 수 있다.
애플리케이션이 론칭(launch)되는 대응하는 오퍼레이팅 시스템이 루트키트(rootkit), 바이러스, 웜(worm), 또는 스파이웨어와 같은 것으로 위태롭게 되더라도(is compromised), 보호된 메모리 도메인과 애플리케이션의 인증은, 독자적으로 또는 서로 결합하여, 애플리케이션을, 애플리케이션과 연관된 코드, 제어 흐름, 및 데이터 구조들을 포함하여, 스파이웨어를 포함하는 악성 코드(malicious code)로부터 보호할 수 있다.
단계 102에서 보호된 메모리 도메인의 구성, 및/또는 단계 104에서의 애플리케이션의 로딩, 인증 및 개시는 메모리 내 컴포넌트들을 악성 코드에 의한 스누핑(snooping) 및 변경으로부터 보호하는 하이퍼바이저 기반 보안 바이저(a hypervisor-based security visor)의 제어 하에서 수행될 수 있다.
하이퍼바이저 기반 보안 바이저는 코드 및/또는 데이터를 식별하고, 인증을 위해 코드 및/또는 데이터와 연관된 하나 또는 그 이상의 피쳐(feature)를 측정(measure)하고, 인증된 코드 및/또는 데이터를 보호하도록 구성될 수 있다.
하이퍼바이저 기반 보안 바이저는 오퍼레이팅 시스템에 대한 변경 없이 동작하도록 구성될 수 있다.
하이퍼바이저 기반 보안 바이저는 오퍼레이팅 시스템의 경계 밖의, 따라서 동작 환경에서의 잠재적인 악성 소프트웨어의 경계 밖의 보호된 공간에서 실행되는 무결성 측정 모듈(integrity measurement module; IMM)을 포함할 수 있다. IMM 보호된 공간은 VMM(virtual machine manager) 상에서 실행되는 보호된 가상 머신(virtual machine; VM) 및/또는 보호된 하드웨어를 포함할 수 있다. IMM은 SHA-1 해시와 같은 코드 섹션들의 해시를 포함하는 서명 파일에 대하여 애플리케이션의 코드의 아이덴티티와 무결성을 검증하고, 코드 섹션들 및 대응하는 재배치 테이블(relocation table) 내로의 엔트리 포인트들을 검증하도록 구성될 수 있다.
하이퍼바이저 기반 보안 바이저는 메모리 액세스 보호를 구현하는 메모리 보호 모듈(memory protection module; MPM)을 포함할 수 있고, IMM이 성공적으로 애플리케이션을 식별하고 측정한 후에 IMM이 MPM에 신호를 보내어 메모리 액세스 보호를 구현하도록 구성될 수 있다.
MPM은 하나 또는 그 이상의 보호된 페이지 테이블들(protected page tables; PPTs)을 생성하고, 애플리케이션의 보호된 코드 및 대응하는 데이터 페이지들을 PPT들로 매핑하고, 액티브 페이지 테이블들(active page tables; APTs)로부터의 대응하는 매핑을 끊도록(sever) 구성될 수 있다. VMM과 같은 메모리 관리자는 보호된 메모리의 가상 어드레스 범위 및 보호된 페이지들의 대응하는 물리적 어드레스들의 리스트를 관리하도록 구성될 수 있다. 페이지 결함 시에, VMM은 목적지 페이지의 가상 어드레스와 보호된 페이지 어드레스들의 리스트를 비교하고, 매칭이 발견될 때 가상 머신 제어 구조(virtual machine control structure; VMCS) 내의 페이지 테이블 베이스 레지스터(page table base register; PTBR)를 PPT 베이스 어드레스의 어드레스로 전환하도록 구성될 수 있다. 리턴시에, VMM은 PPT 어드레스로부터 APT 베이스로 PTBR을 전환하도록 구성될 수 있다. VMM은 VMM이 APT들에 페이지를 부가하고자 시도할 때마다 물리적 페이지 어드레스들의 리스트를 검사할 수 있다. VMM이 보호된 페이지를 발견할 때, VMM은 보호된 페이지를 APT에 부가하는 것을 거절할 수 있고 에러 표시를 발생시킬 수 있다. 메모리 보호들이 구성되면, 애플리케이션과 연관된 초기화 벡터가 보호된 애플리케이션 도메인 내에서 실행하기 위한 제1 코드 섹션일 수 있다.
하이퍼바이저 기반 보안 바이저는 Intel Corporation이 개발한 VISN(VT Integrity Services for Networking) 시스템을 포함할 수 있다.
단계 106에서, 비디오 프레임 버퍼가 보호된 메모리 도메인에 할당된다.
애플리케이션은 그래픽 어댑터에 대응하는 비디오 프레임 버퍼를 보호된 메모리 도메인으로 풀링(pull)하고, 비디오 프레임 버퍼에 직접 렌더링되도록 구성될 수 있다. 하나 또는 그 이상의 비디오 프레임 백(back) 버퍼들 및/또는 다른 면들(surfaces)이 또한 보호된 메모리 도메인에 할당될 수 있다. 보호된 메모리 도메인 내에 있는 동안, 임의의 백 버퍼들 및 다른 면들을 포함하는 비디오 프레임 버퍼는 보호된 메모리 도메인 외부의 오퍼레이팅 시스템 및 다른 프로세스들에 의해 개시되는 기록 및/또는 판독 프로세스들로부터 실질적으로 보호될 수 있다. 그에 대응하여, 임의의 백 버퍼들 및 다른 면들을 포함하는 비디오 프레임 버퍼는 악성 소프트웨어의 특권 레벨에 관계없이 컴퓨터 시스템상에서 실행되는 악성 소프트웨어에 대해 실질적으로 안전할 수 있다.
애플리케이션은 프라이머리(primary) 또는 비디오 프레임 프런트 버퍼 및 하나 또는 그 이상의 비디오 프레임 백 버퍼들에 대응하는 메모리 어드레스를 식별 E또는 결정하고, 오퍼레이팅 시스템(OS)과 연관된 APT들로부터 대응하는 페이지들을 제거하고, 그 페이지들을 애플리케이션의 보호된 부분들 및 다른 보호된 코드 및 데이터 페이지들과 함께 PPT들에 위치시키도록 구성될 수 있다. 결과적으로, 스크린 스크래핑(screen scraping) 애플리케이션들/악성 소프트웨어는 보호된 페이지들로부터 판독하고 보호된 페이지들에 기록하는 것이 방지될 수 있다.
애플리케이션은 마이크로소프트 윈도우즈의 DirectX 및 OpenGL과 리눅스 OS의 OpenGL에 의해 제공되는 것과 같은 직접 그래픽 렌더링을 수행하도록 구성될 수 있다. 대응하는 라이브러리들이 비디오 프레임 버퍼에 대응하는 어드레스를 찾고 OS 하에서 실행되는 애플리케이션들과 관련하여 존재할 수 있는 판독 및 기록 제한들을 제거하기 위해 액세스될 수 있다.
단계 102에서 보호된 메모리 도메인에서의 애플리케이션의 개시는 적어도 코드, 및 비디오 프레임 버퍼에 기록하고 및/또는 비디오 프레임 버퍼로부터 판독하는 것을 담당하는 그 코드에 대한 데이터 섹션들을 보호하는 것을 포함할 수 있다.
단계 106에서 비디오 프레임 버퍼를 보호된 메모리 도메인에 할당하는 것은 비디오 프레임 버퍼에 대한 포인터의 위치 또는 그 포인터에 대응하는 APT 변환(translation)을 식별하는 것을 포함할 수 있다.
비디오 프레임 버퍼에 대한 포인터를 위치시키는(locating) 것은 오퍼레이팅 시스템과 연관된 API(application programming interface)를 사용하여 포인터의 가상 어드레스를 결정하는 것을 포함할 수 있다. 대응하는 물리적 어드레스는 오퍼레이팅 시스템 또는 VMM에 의해 유지되는 페이지 테이블로부터 식별될 수 있다.
비디오 프레임 버퍼에 대한 포인터를 위치시키는 것은 포인터의 물리적 어드레스를 얻고, 물리적 어드레스 및 대응하는 가상 어드레스를 찾기 위해 페이지 테이블과 같은 대응하는 프로세스 어드레스 공간을 워크 스루(walk through)하는 것을 포함할 수 있다. 포인터의 물리적 어드레스는 어드레스 0XA000과 같은 알려진 물리적 어드레스에 매핑될 수 있다. 이것은 각 단계를 위한 하이퍼콜(hypercall)을 포함할 수 있다.
가상 어드레스 및 대응하는 물리적 어드레스는 하나 또는 그 이상의 PPT들에 풀링될 수 있다. PPT들로의 비디오 프레임 버퍼의 풀링은 대응하는 메모리 페이지들을 APT들에 존재하지 않는 것으로 마킹(marking)하고, 메모리 페이지들을 PPT들에의 판독/기록으로서 마킹하는 것을 포함할 수 있다.
단계 108에서, 사용자 입력 디바이스의 이미지는 비디오 프레임 버퍼에 렌더링된다. 이미지는 키보드의 이미지를 포함할 수 있고, 이 이미지는 숫자 키보드, 영자 키보드 및 영숫자 키보드의 이미지 중 하나 또는 그 이상을 포함할 수 있다.
사용자 입력 디바이스의 이미지는, 단계 102에서 애플리케이션의 로딩의 부분으로서, 보호된 메모리 도메인에 로딩되고 인증될 수 있다.
그래픽 어댑터는 그래픽 어댑터 내의 메모리, 이산 그래픽 어댑터인 경우 비디오 RAM(VRAM), 공유 시스템 메모리(시스템 RAM) 중 하나 또는 그 이상으로부터 렌더링하도록 구성될 수 있고, 임베디드(embedded) 그래픽 어댑터인 경우, AGP(advance graphics aperture)를 활용하여 범용 프로세서 또는 그들의 조합과 시스템 RAM을 공유하도록 구성될 수 있다.
그래픽 카드는 로컬 VRAM을 일반적으로 사용하도록 구성될 수 있고, 로컬 VRAM이 시스템 상에서 실행되는 프로세스들에 대해 불충분한 경우 시스템 RAM을 사용하도록 구성될 수 있다. 그래픽 카드는 하나 또는 그 이상의 프라이머리 비디오 프레임 버퍼들로부터 렌더링될 수 있다. 비디오 프레임 백 버퍼들의 콘텐츠는 프라이머리 버퍼로 블릿(blit)될 수 있거나 또는 애플리케이션은 백 버퍼들의 체인을 선언(declare)하고 백 버퍼들을 프라이머리 버퍼에 체인으로 플립할 수 있다.
보안 입력 및 출력을 위해, 링(ring)-3 애플리케이션은 키보드를 렌더링할 때 텍스처(texture)를 포함할 수 있는 다수의 면들을 선언할 수 있다.
그래픽 카드 및/또는 대응하는 디스플레이는 보안 보호들(security protections)을 포함할 수 있다.
단계 110에서, 사용자 입력은 입력 디스플레이 이미지의 렌더링에 후속하여 보호된 메모리 도메인에서 수신된다. 사용자 입력은 포인팅 디바이스, 마우스 디바이스 같은 커서 디바이스, 터치 패드 및 터치 스크린 디스플레이 중 하나 또는 그 이상에 의해 생성될 수 있는 위치 표시를 포함할 수 있다.
단계 112에서, 사용자 입력은 입력 디스플레이 이미지의 피쳐와 상관된다. 이 상관(correlating)은 키보드의 사용자 선택 키를 식별하기 위해 사용자 입력의 좌표들을 렌더링되는 키보드 이미지의 키(key)와 상관시키는 것을 포함할 수 있다.
단계 114에서, 사용자 입력에 상관시키는 이미지 피쳐의 표시는 보호된 메모리 도메인에 저장된다. 이미지가 키보드 이미지를 포함하는 경우, 저장하는 것은 사용자 선택 키의 표시를 저장하는 것을 포함할 수 있다.
단계 116에서, 사용자 입력의 저장된 표시는 보호된 메모리 도메인으로부터 출력될 수 있고, 비디오 프레임 버퍼는 보호된 메모리로부터 릴리스(release)될 수 있다.
방법(100)은 전자 지불 정보와 같은 기밀 사용자-입력을 수신하도록 인보크(invoke)될 수 있다. 도 2는 방법(100)을 인보크하여 네트워크 접속을 통해 지불 트랜잭션을 수행하는 예시적 방법(200)의 처리 흐름도이다.
단계 202에서, 사용자 컴퓨터 시스템과, 사용자 컴퓨터 시스템에 대해 원격지에 있을 수 있는 다른 컴퓨터 시스템 사이에 네트워크를 통해 통신 세션이 실행된다. 통신 세션은, 예를 들면, 인터넷을 통해 머천트(merchant) 웹 사이트 또는 금융 카드 프로세서 웹 사이트를 활용하여 사용자 컴퓨터 시스템상에서 실행되는 웹 브라우저를 통해 실행될 수 있다.
단계 204에서, 사용자 정보에 대한 프롬프트(prompt)는 원격 컴퓨터 시스템으로부터 수신되고 사용자 컴퓨터 시스템에서 검출된다.
단계 204에서 프롬프트의 검출은 신용 카드 정보, 직불 카드 정보 또는 다른 지불 인증 정보와 같은 전자 지불 정보에 대한 프롬프트를 검출하는 것을 포함할 수 있다.
단계 204에서 프롬프트의 검출은 산업-표준 HTML(hypertext mark-up language) 신용 카드 형태와 같은 하나 또는 그 이상의 표준화된 지불 프롬프트들을 검출하는 것을 포함할 수 있다.
단계 204에서 프롬프트의 검출은 신용 카드 번호 필드들, 데이터 필드들, 및 화폐 디노미네이션(monetary denomination) 필드들과 같은 신용 카드 지불 트랜잭션들에 공통인 데이터 엔트리 필드들에 대해 입력되는 웹 페이지들을 검색하는 것을 포함한다.
프롬프트는 사용자 컴퓨터 시스템 상에서 실행되는 웹 브라우저 같은 애플리케이션에 의해 검출될 수 있다. 프롬프트를 검출하기 위한 컴퓨터 판독가능 명령어들은 브라우저 애플리케이션으로 작동하기 위해 브라우저 플러그-인으로서 구현될 수 있고, 머천트 웹 사이트 또는 금융 카드 프로세서 웹 사이트에 거의 수정을 하지 않거나 전혀 수정하지 않고 비교적 심리스하게(seamlessly) 구현될 수 있다.
프롬프트의 검출은 사용자 컴퓨터 시스템상에서 작동되는 브라우저와 머천트 웹 사이트 또는 금융 카드 프로세서 웹 사이트 간의 SSL(secure sockets layer) 채널 또는 TLS(transport layer security) 채널을 인터셉트하는(intercepting) 것을 포함할 수 있다.
프롬프트는 사용자 컴퓨터 시스템상에서 실행되는 VMM에 의해 검출될 수 있다.
단계 206에서, 사용자 정보를 위한 검출된 프롬프트에 응답하여 애플리케이션이 인보크된다. 단계 206에서의 애플리케이션의 인보크는 방법(100) 또는 그 일부를 수행하는 것을 포함할 수 있고, 보호된 메모리 도메인에서 사용자로부터 신용 카드 정보 및 지불 인증을 획득하는 것을 포함할 수 있다.
단계 208에서, 프롬프트는 보호된 메모리 도메인으로부터의 사용자 입력 데이터로 파퓰레이팅되고(populated), 요청자에게 리턴된다.
도 1을 참조하면, 단계 108에서의 렌더링은 입력 디스플레이 이미지를 상대적(relatively) 랜덤 또는 의사 랜덤 위치로 렌더링하는 것을 포함할 수 있고, 사용자 입력에 후속하여 그 이미지를 다른 랜덤 위치로 리-렌더링하는 것을 포함할 수 있다. 랜덤 포지셔닝(random positioning)은 진정한 랜덤 포지셔닝, 의사-랜덤 포지셔닝 및 복수의 사전 설정된 위치들 중 하나로의 포지셔닝 중 하나 또는 그 이상을 포함할 수 있다. 랜덤 포지셔닝은 사용자 입력을 렌더링된 이미지와 상관시키기 위해 스파이웨어 또는 다른 악성 코드의 능력을 줄이는데 도움이 될 수 있다.
도 3은 사용자 입력에 후속하여 이미지를 랜덤 위치로 렌더링하고 그 이미지를 다른 랜덤 위치로 리-렌더링하는 예시적인 방법(300)의 처리 흐름도이다. 본 방법(300)은 도 1에서의 단계 102 내지 106보다 우선될 수 있다.
단계 302에서, 비디오 프레임 버퍼의 랜덤 위치로 키보드 이미지가 렌더링된다. 키보드 이미지는 비디오 프레임 버퍼의 사이즈보다 작은 사이즈를 가져서, 비디오 프레임 버퍼 내의 복수의 랜덤 위치들로의 렌더링을 가능하게 한다.
단계 304에서, 도 1에서의 단계 110에 관하여 전술한 바와 같이 사용자 입력이 수신된다.
단계 306에서, 사용자 입력의 좌표들은 렌더링된 키보드 이미지와 상관되고, 사용자 선택 키들의 대응하는 표시들은 도 1에서의 단계 112 및 114에 관하여 전술한 바와 같이 보호된 메모리에 저장된다.
단계 308에서, 사용자가 추가 입력을 제공하고자 할 때, 키보드 이미지는 단계 310에서 비디오 프레임 버퍼 내의 다른 랜덤 위치로 리-렌더링된다. 단계 304에서의 사용자 입력의 수신 및 단계 306에서의 상관과 저장은 사용자 데이터 입력이 완료될 때까지 반복될 수 있다. 키보드 이미지는 각각의 사용자 입력에 후속하여 다른 랜덤 위치로 리-렌더링될 수 있다. 예컨대, 사용자가 멀티-디지트 시퀀스(multi-digit sequence)를 입력하고자 하는 경우, 키보드 이미지는 각각의 디지트 엔트리에 후속하여 다른 랜덤 위치로 리-렌더링될 수 있다.
키보드 이미지는 사용자 데이터 엔트리 완료 키의 이미지를 포함하여, 데이터 엔트리가 완료되는 것을 사용자가 표시하게 할 수 있다.
사용자 데이터 입력이 단계 308에서 완료될 때, 사용자 선택 키들의 저장된 표시들은 보호된 메모리 도메인으로부터 출력될 수 있고, 비디오 프레임 버퍼는 단계 312에서 보호된 메모리 도메인으로부터 릴리스될 수 있다.
도 1을 다시 참조하면, 단계 108에서의 입력 디스플레이 이미지의 렌더링은 사용자 이미지 위에 입력 디스플레이 이미지를 렌더링하는 것을 포함할 수 있다. 사용자 이미지는 보안 수단으로서 사용자에 의해 선택되어 미리 애플리케이션과 연관될 수 있다. 도 4는 사용자 이미지 위에 입력 디스플레이 이미지를 렌더링하는 예시적인 방법(400)의 처리 흐름도이다.
단계 402에서, 도 1에서의 단계 102에 관하여 전술한 바와 같이 보호된 메모리 도메인이 구성된다.
단계 404에서, 도 1에서의 단계 104에 관하여 전술한 바와 같이 보호된 메모리 도메인에서 애플리케이션이 개시된다.
단계 406에서, 사용자 이미지 또는 비트맵이 보호된 메모리 도메인으로 로딩된다. 사용자 이미지는 하드 드라이브와 같은 저장 장치로부터 암호화된 사용자 이미지로서 검색될 수 있다. 암호화된 사용자 이미지는 보호된 메모리 도메인에 로딩되고 암호해독될 수 있다.
암호해독은 단계 404에서 개시된 애플리케이션의 제어하에 수행될 수 있고, 암호해독 키는 애플리케이션의 정적 데이터 섹션들 및/또는 코드의 인증 또는 확인(validation) 시 보안 바이저 모듈에 의해 애플리케이션에 제공될 수 있다.
단계 408에서, 비디오 프레임 프런트 버퍼와, 제1 및 제2 비디오 프레임 백 버퍼들이 보호된 메모리 도메인에 할당된다.
단계 410에서, 도 3에서의 단계 302에 관하여 전술한 바와 같이 제1 비디오 프레임 백 버퍼의 랜덤 위치로 키보드 이미지가 렌더링된다.
단계 412에서, 사용자 이미지는 제1 비디오 프레임 백 버퍼에서 키보드 이미지의 랜덤 위치에 대응하는 위치에서 제2 비디오 프레임 백 버퍼로 렌더링된다. 사용자 이미지는 키보드 이미지의 사이즈보다 크고 비디오 프레임 프런트 버퍼의 사이즈보다 작은 사이즈를 가질 수 있다.
단계 414에서, 제1 및 제2 비디오 프레임 백 버퍼들은 비디오 프레임 프런트 버퍼에 병합된다(merged). 이 병합은 사용자 이미지의 일부를 키보드 이미지와 중첩하는(overlaying) 것을 포함할 수 있다. 이 병합은 BitBlt(bit block transfer) 또는 Blit(block image transfer)로서 수행될 수 있는데, 여기서 복수의 비트 맵들이 래스터링(rastering) 동작을 이용하여 결합된다.
단계 416에서, 도 1에서의 단계 110에 관하여 전술한 바와 같이 사용자 입력이 수신된다.
단계 418에서, 사용자 입력의 좌표들은 도 1에서의 단계 112 및 114에 관하여 전술한 바와 같이 렌더링된 키보드 이미지와 상관되고 보호된 메모리에 저장된다.
단계 420에서, 사용자가 추가 입력을 제공하고자 할 때, 키보드 이미지 및 사용자 이미지는 단계 422에서 대응하는 제1 및 제2 비디오 프레임 백 버퍼들 내의 다른 랜덤 위치로 리-렌더링된다.
단계 414에서의 병합, 단계 416에서의 사용자 입력의 수신, 및 단계 418에서의 상관과 저장은 사용자 데이터 입력이 완료될 때까지 반복될 수 있다. 키보드 이미지 및 사용자 이미지는 각각의 사용자 입력에 후속하여 다른 랜덤 위치로 리-렌더링될 수 있다.
사용자 데이터 입력이 단계 420에서 완료될 때, 사용자 선택 키들의 저장된 표시들은 보호된 메모리 도메인으로부터 출력될 수 있고, 비디오 프레임 버퍼는 단계 424에서 보호된 메모리 도메인으로부터 릴리스될 수 있다.
사용자 데이터 입력이 완료될 때, 확인 이미지(acknowledgement image)가 랜덤 위치로 렌더링되어 사용자가 대응하는 트랜잭션을 완료하게 할 수 있다.
도 5는 확인 이미지를 비디오 프레임 버퍼의 랜덤 위치로 렌더링하는 예시적인 방법(500)의 처리 흐름도이다. 본 방법(500)은, 도 1에서의 단계 114, 도 3에서의 단계 308 및 도 4에서의 단계 420 이후와 같이, 사용자 데이터 입력의 완료에 후속하여 구현될 수 있다.
단계 502에서, 확인 이미지가 보호된 메모리 도메인에서 비디오 프레임 버퍼로 렌더링된다. 확인 이미지는 도 4에 관하여 전술한 바와 같이 사용자 이미지 위에 렌더링될 수 있다.
단계 504에서, 도 1에서의 단계 110에 관하여 전술한 바와 같이 사용자 입력이 수신된다.
단계 506에서, 사용자 입력의 좌표들은 렌더링된 확인 이미지와 상관된다.
단계 506에서, 사용자 입력의 좌표들이 확인 이미지에 상관되는 경우, 사용자 선택 키들의 표시들과 같은 대응하는 사용자 입력 데이터는 보호된 메모리 도메인으로부터 출력될 수 있고, 비디오 프레임 버퍼는 단계 510에서 보호된 메모리 도메인으로부터 릴리스될 수 있다.
단계 506에서, 사용자 입력의 좌표들이 확인 이미지와 상관되지 않는 경우, 하나 이상의 액션이 발생할 수도 있다. 예를 들어, 확인 이미지가 취소 트랜잭션 이미지와 편집 데이터 이미지 중 하나 이상을 포함하여, 사용자가 트랜잭션을 취소하거나 트랜잭션을 편집하는 것을 택하도록 허용할 수도 있다.
전술한 하나 이상의 방법은 렌더링된 이미지에 상관되지 않는 사용자 입력을 카운트하는(counting) 단계 및 상관되지 않은(non-correlated) 입력의 수가 임계치를 초과할 때 트랜잭션을 중단하는 단계를 포함할 수도 있다. 이는 도처에서 클릭하는 공격(click-everywhere attacks)을 방해하는데 도움이 될 수도 있다.
도 6은 상관되지 않은 사용자 입력들을 검출하는 예시적인 방법(600)에 대한 처리 흐름도이다. 방법(600)은 여기 개시된 하나 이상의 다른 방법들과 관련하여 구현될 수도 있다.
단계 602에서, 이미지는 비디오 프레임 버퍼의 랜덤 위치에 렌더링된다. 이미지는 입력 디스플레이 이미지, 확인 이미지, 및 사용자 이미지 중 하나 이상을 포함할 수도 있다.
단계 604에서, 사용자 입력이 수신된다.
단계 606에서, 사용자 입력이 렌더링된 이미지와 상관되는지 여부에 대한 판정이 실시된다.
단계 606에서, 사용자 입력이 렌더링된 이미지와 상관되는 경우, 처리는 단계 608로 진행하고, 여기서, 사용자 입력은 상관(correlation)에 따라 처리된다. 이는 도 1의 단계 112에서의 상관, 도 3의 단계 306에서의 상관, 도 4의 단계 418에서의 상관, 및 도 5의 단계 506에서의 상관 중 하나 이상을 포함할 수도 있다.
사용자 입력이 렌더링된 이미지와 상관되지 않는 경우, 처리는 단계 610으로 진행하고, 여기서 에러 카운트(error count)가 증가된다.
단계 612에서, 에러 카운트가 임계치 아래일 때, 단계 614에서 이미지는 다른 랜덤 위치로 리-렌더링될 수도 있고, 처리는 단계 604로 돌아가 또 다른 사용자 입력을 수신할 수도 있다.
단계 612에서, 에러 카운트가 임계치 위일 때, 단계 616에서 하나 이상의 프로세스가 정지되거나 종결된다. 이는, 대응하는 네트워크 접속을 종결하는 단계, 비디오 프레임 버퍼의 콘텐츠 및/또는 이전에 입력된 사용자 데이터를 삭제하는 단계, 관리자에게 경보(alert) 또는 보고(report)를 보내는 단계, 및 애플리케이션을 종결하는 단계 중 하나 이상을 포함할 수도 있다.
도 7은 데이터 엔트리 이미지를 렌더링하고 보호된 메모리 도메인 내의 이미지에 대응하는 사용자 입력 선택을 수신하는 예시적인 방법(700)의 처리 흐름도이다. 방법(700)의 하나 이상의 특징들은 본원에서 하나 이상의 다른 방법들에 대하여 개시된 하나 이상의 특징들과 조합하여 구현될 수도 있다.
단계 702에서, 암호화되거나 그렇지 않으면 보호된 사용자 이미지가 보안 메모리 도메인에 로딩되어 암호해독된다. 보안 메모리 도메인은 하나 이상의 보호된 페이지 테이블들을 사용하여 구성될 수도 있다. 사용자 이미지는 사이트 키(site key)와 유사할 수도 있다.
단계 704에서, 키보드 이미지는 보안 디스플레이 스크린상에서 사용자 이미지의 맨 위에 랜덤 위치로 렌더링된다. 키보드 이미지는 사용자 이미지의 맨 위에서 블릿(blit)될 수 있다. 키보드 이미지와 하부의(underlying) 사용자 이미지의 조합을 여기에서는 보안 입력 스크린이라 부른다.
단계 706에서, 사용자가 키보드 이미지 위를 클릭할 때, 대응하는 키스트로크(keystroke)가 보안 디스플레이 스크린 상의 출력 영역에 기록되고 디스플레이되며, 보안 입력 이미지는 다른 위치에 랜덤하게 재배치된다. 이에 의해 공격자로부터의 추측 공격(guessing attacks)에 대비해 보호할 수도 있다.
사용자는 보안 입력 스크린을 통해 신용 카드/은행 카드 번호를 입력할 수도 있다. 대안적으로, 또는 부가적으로, 사용자는 신용 카드 번호와 같은 보안 정보 값에 액세스하기 위해 PIN(personal identification number)를 입력할 수도 있다. 비밀 값(secret value)은, 암호화된 사용자 이미지에 대해 전술한 바와 같이, 액세스 키로 보안될 수도 있다. 액세스 키는 인증된 애플리케이션에 보여질, 보안 바이저 비밀 플랫폼 키(security visor secret platform key)로서 보안될 수도 있다. 애플리케이션은 비밀 값을 언로크(unlock)하기 위해 PIN을 사용하도록 구성될 수도 있다. 이는 사용자에 의해 입력될 데이터량을 줄일 수도 있고 트랜잭션의 보안성을 증가시킬 수도 있다.
단계 708에서, 사용자 데이터 입력의 완료시, 보안 디스플레이 스크린에 확인 이미지가 렌더링되어 사용자가 트랜잭션 파라미터들을 확인할 것을 촉구한다. 전술한 바와 같이, 확인 이미지는 사용자 이미지 위에 렌더링될 수도 있다. 확인 이미지와 하부의 사용자 이미지의 조합은 여기에서 보안 확인 스크린(secure acknowledgment screen)으로 불린다.
보안 확인 스크린은, 사용자가 크리덴셜(credential) 및 트랜잭션 정보의 입력을 완료하였을 때 렌더링되는, 보호된 메모리 도메인에서의 또 다른 면으로서 보여질 수도 있다. 보안 확인 스크린은, 머천트 또는 카드 프로세서 사이트에 보내 질 머천트 네임(merchant name), 트랜잭션의 금전적 가치(monetary value), 날짜, 및 크리덴셜과 같은, 트랜잭션 정보를 포함할 수도 있다. 보안 확인 스크린은 정보를 디스플레이할 하나 이상의 라인들을 포함할 수도 있다.
단계 710에서, 사용자가 확인 이미지 위를 클릭하면, 이전에 입력된 키스트로크들 또는 그 외의 대응하는 사용자 정보가 보안 메모리 도메인으로부터 출력될 수도 있다. 키스트로크들 또는 그 외의 사용자 정보는 머천트 네트워크 사이트 또는 신용 카드 프로세서 네트워크 사이트로 출력될 수도 있다.
키스트로크들 또는 그 외의 사용자 정보는 출력 전에 암호화 및 서명될 수도 있다. 트랜잭션 정보는 머천트 또는 카드 프로세서의 공개 키로 암호화될 수도 있고, 사용자의 개인 키로 서명될 수도 있다. 트랜잭션의 금전적 가치, 사용자에 의해 입력된 신용 카드 번호, 트랜잭션 카운트, 및 머천트 정보 중 하나 이상에 해싱 함수(hashing function)가 적용되어 보안 트랜잭션 값을 생성할 수도 있다. 보안 트랜잭션 값은 머천트 또는 카드 프로세서에 보내질 수도 있다.
머천트 또는 카드 프로세싱 네트워크 사이트는, 증명서(certificate)에 의한 것과 같이, 사용자 컴퓨터에서 인증될 수도 있다. 이는 피싱 공격(phishing attacks)을 방해하는데 도움이 될 수도 있다.
확인 이미지는 랜덤하게 배치될 수도 있고, 확인 이미지에 상관되지 않은 사용자 클릭에 후속하여 랜덤하게 재배치될 수도 있다. 이는, 공격자가 이전 클릭들의 분석으로부터 확인 이미지의 위치를 판정하는 것을 막을 수도 있다. 상관되지 않은 사용자 클릭의 수가 임계 수를 초과할 때 트랜잭션은 중단될 수도 있다. 이는 무차별적인(brute force), 도처에서 클릭하는 공격을 방해하는데 도움이 될 수도 있다.
여기 개시된 하나 이상의 특징들은 개별 및 집적 회로 로직, ASIC(application specific integrated circuit) 로직, 및 마이크로컨트롤러를 포함하는, 하드웨어, 소프트웨어, 펌웨어 및 그들의 조합으로 구현될 수도 있고, 도메인-특정 집적 회로 패키지의 일부 또는 집적 회로 패키지들의 조합으로서 구현될 수도 있다. 여기서 사용된 소프트웨어라는 용어는, 컴퓨터 시스템으로 하여금, 여기 개시된 하나 이상의 특징들 및/또는 특징들의 조합들을 수행하게 하는 컴퓨터 프로그램 로직이 저장된 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품을 칭한다.
도 8은, 컴퓨터 프로그램 로직을 실행하기 위해, 여기서 프로세서(802) 및 그래픽 프로세서 GPU(804)로 예시된, 하나 이상의 컴퓨터 명령어 프로세싱 유닛을 포함하는 예시적인 컴퓨터 환경(800)에 대한 그래픽 도면이다. 프로세서(802)는 하나 이상의 범용 프로세서들 및/또는 프로세서 코어들을 포함할 수도 있다.
컴퓨터 시스템(800)은 메모리(806)를 포함하며, 메모리(806)는 AGP 어퍼쳐 메모리(advanced graphics processing aperture memory; 810)를 포함할 수도 있는, 비디오 메모리 또는 VRAM(812) 및 물리적 시스템 메모리 또는 RAM(random access memory)(808) 중 하나 이상을 포함할 수 있다. AGP 어퍼쳐 메모리(810)는 VRAM(812)에 추가하여 GPU(804)에 의해 사용될 수도 있다.
메모리(806)는, 프로세서(802) 및 GPU(804) 중 하나 이상이 응답으로서 하나 이상의 기능들을 수행하게 하는, 컴퓨터 프로그램 제품 로직 또는 명령어들이 저장된 컴퓨터 판독가능 매체를 포함할 수 있다.
메모리(806) 또는 그 일부의 물리적 어드레스들은 하나 이상의 동작 환경(814) 및 애플리케이션들에 대해 가상화될 수 있다(virtualized). 가상-물리 메모리 어드레스들(vitual-to-physical addresses) 간의 메모리 매핑들은 하나 이상의 액티브 페이지 테이블들(Active Page Tables: APTs)(818) 내에 유지될 수 있다.
하나 이상의 액세스 보호된 메모리 도메인들(access-protected memory domains)은 메모리(806) 내에 구성되고, 대응하는 메모리 어드레스 매핑들은 하나 이상의 보호된 페이지 테이블들(Protected Page Tables: PPT)(820) 내에 유지될 수 있다.
APT들(818) 및 PPT들(820)은 액세스 제어 관리자(824)의 제어 하에서 보안 바이저 환경(security visor environment)(822) 내에서 구성 및 구현될 수 있다.
도 9는, 도 8의 메모리(806)에 대응하는 예시적인 로직 및 데이터의 블록도이다.
도 9에서, 메모리(806)는 PPT들(820)로 구성될 수 있는 보호된 메모리 도메인(902)을 포함한다.
보호된 메모리 도메인(902)은, 도 1의 단계 104에 대해서 전술한 바와 같이, 인증될 수 있는 애플리케이션 로직(904)을 포함한다.
애플리케이션 로직(904)은, 도 1의 단계 106에 대하여 전술한 바와 같이, 프로세서(802)가 비디오 프레임 버퍼에 대응하는 위치 또는 어드레스 매핑, 또는 비디오 프레임 버퍼에 대한 포인터를 식별하게 하고, 비디오 프레임 버퍼를 액세스-보호(access-protect)하게 하는 비디오 프레임 버퍼 식별 및 보호 로직(906)을 포함할 수 있다. 도 9의 예에서, 비디오 프레임 버퍼(908)는 보호된 메모리 도메인(902) 내에 도시되어 있다. 비디오 프레임 버퍼(908)는 하나 이상의 백 버퍼들(910 내지 912)과, 프라이머리(primary) 또는 프런트 버퍼(914)를 포함할 수 있다.
애플리케이션 로직(904)은, 도 4의 단계 406에 대하여 전술한 바와 같이, 프로세서(802)가 암호화된 사용자 이미지를 보호된 메모리 도메인(902) 내에서 검색하게 하고, 사용자 이미지를 암호해독하게 하는 사용자 이미지 암호해독 로직(916)을 포함할 수 있다. 도 9의 예에서, 암호해독된 사용자 이미지(918)는 보호된 메모리 도메인(902) 내에 도시되어 있다.
애플리케이션 로직(904)은, 도 3에 대하여 전술한 바와 같이, 프로세서(802)가 입력 디스플레이 이미지(922)를 비디오 프레임 버퍼(908)의 랜덤 위치에 렌더링하게 하는 랜덤 렌더 로직(random render logic)(920)을 포함한다. 랜덤 렌더 로직(920)은, 도 4에 대하여 전술한 바와 같이, 프로세서(802)가 입력 디스플레이 이미지(922) 및 암호해독된 사용자 이미지(918)를 백 버퍼들(910 및 912) 내의 랜덤 위치에 각각 렌더링하게 하고, 이 이미지들을 백 버퍼들(910 및 912)로부터 프런트 버퍼(914)에 병합(merge) 또는 블릿(blit)하게 하는 로직을 포함할 수 있다.
랜덤 렌더 로직(920)은, 도 5의 단계 502에 대하여 전술한 바와 같이, 프로세서(802)가 확인 이미지(924)를 비디오 프레임 버퍼(908)의 랜덤 위치에 렌더링하게 하는 로직을 포함할 수 있다. 랜덤 렌더 로직(920)은, 도 4 및 5에 대하여 전술한 바와 같이, 프로세서(802)가 확인 이미지(924) 및 암호해독된 사용자 이미지(918)를 백 버퍼들(910 및 912) 내의 랜덤 위치에 각각 렌더링하게 하고, 이 이미지들을 백 버퍼들(910 및 912)로부터 프런트 버퍼(914)로 병합 또는 블릿하게 하는 로직을 포함할 수 있다.
애플리케이션 로직(904)은, 도 1의 단계 112 및 114에 대하여 각각 전술한 바와 같이, 프로세서(802)가 사용자 입력을 렌더링된 이미지들과 상관시키게 하고, 대응하는 사용자 입력을 보호된 메모리 도메인(902) 내에 사용자 입력 데이터(928)로서 저장하게 하는 상관 로직(926)을 포함할 수 있다.
애플리케이션 로직(904)은, 도 6에 대하여 전술한 바와 같이, 프로세서(802)가 렌더링된 이미지와 상관되지 않은 사용자 입력을 카운팅하게 하고, 상관되지 않은 사용자 입력의 수가 임계치를 초과할 때에 애플리케이션 로직(904)의 하나 이상의 부분들을 중단하게 하는 중단 로직(abort logic)(930)을 포함할 수 있다.
애플리케이션 로직(904)은 도 7에 대하여 전술한 바와 같이, 프로세서(802)가 신용 카드 정보와 같은 암호화된 사용자 값을 보호된 메모리 도메인(902) 내에서 검색하고, 이 사용자 값을 암호해독하게 하는 로직을 포함할 수 있다. 도 9의 예에서, 암호해독된 사용자 값(932)은 보호된 메모리 도메인(902) 내에 도시되어 있다.
메모리(806)는 프로세서(802)가 네트워크를 통해 하나 이상의 원격 컴퓨터 시스템들과 인터페이싱하게 하는 브라우저 로직(934)을 포함할 수 있다. 브라우저 로직(934)은, 도 2의 단계 204에 대하여 전술한 바와 같이, 프로세서(802)가 전자 지불 정보를 위한 프롬프트(prompt)와 같은, 원격 컴퓨터 시스템으로부터의 프롬프트를 검출하게 하는 프롬프트 검출 로직(936)을 포함할 수 있다. 브라우저 로직(934)은, 도 2의 단계 206에 대하여 전술한 바와 같이, 프로세서(802)가 보호된 메모리 도메인(902) 내의 애플리케이션 로직(904)을 개시하게 하고, 사용자 입력 데이터(928)로 프롬프트를 파퓰레이팅(populating)하게 하는 애플리케이션 개시 로직(938)을 포함할 수 있다. 프롬프트 검출 로직(936) 및 애플리케이션 개시 로직(938), 또는 그 일부들 중 하나 이상은, VMM 내에서 구현될 수 있다.
본 명세서에 개시된 방법들 및 시스템들은, 생물측정학적 스캐너들(biometric scanners)(이에 한정되는 것은 아님)을 포함하는 컴퓨터 시스템으로 정보를 전달하도록 구성 가능한 다른 장치들과 관련하여 구현될 수 있다.
본 명세서에 개시된 방법들 및 시스템들은, 기능들, 특징들, 및 그 관계들을 나타내는 기능 구축 블록의 도움으로 개시되어 있다. 이 기능 구축 블록들의 경계(boundary)들 중 적어도 일부는 설명의 편의를 위해 본 명세서에서 임의로 정의되었다. 특정 기능들 및 그 관계들이 적절하게 수행되는 한, 대안적인 경계들이 정의될 수 있다.
이 기술분야의 통상의 기술자는, 이 기능 구축 블록들이 개별 컴포넌트들, 애플리케이션 특정 집적 회로들, 적절한 소프트웨어를 실행하는 프로세서들, 및 그 조합들에 의해 구현될 수 있다는 것을 이해할 것이다.
다양한 실시예들이, 본 명세서에 개시되었지만, 이들은 단지 예로서만 제공되는 것일 뿐, 한정되는 것은 아님이 이해되어야 한다. 형태 및 상세의 다양한 변경들이 본 명세서에 개시된 방법들 및 시스템들의 사상 및 범위를 벗어남이 없이 이루어질 수 있음이 관련 기술분야의 통상의 기술자에게는 명백할 것이다. 따라서, 특허청구범위의 폭 및 범위는 본 명세서에 개시된 예시적 실시예들 중 어느 것에 의해서도 한정되어서는 안 된다.
802: 프로세서
806: 메모리
808: RAM
812: VRAM
824: 액세스 제어 관리자

Claims (26)

  1. 액세스 보호된(access-protected) 메모리 도메인 내로부터의 키보드 이미지(keyboard image)를 렌더링하고, 사용자 선택(user-selected) 키(key)들의 표시(indication)들을 수신하여 상기 액세스 보호된 메모리 도메인 내에 저장하는 방법으로서,
    통신 네트워크를 통하여 원격 컴퓨터 시스템과 인터페이싱하는(interfacing) 단계;
    상기 원격 컴퓨터 시스템으로부터 사용자 정보에 대한 프롬프트(prompt)를 검출하는 단계;
    상기 프롬프트에 응답하여 액세스 보호된 메모리 도메인(access-protected memory domain) 내에서 애플리케이션 프로그램의 하나 이상의 프로세스를 개시하는(initiating) 단계;
    비디오 프레임 버퍼를 상기 액세스 보호된 메모리 도메인에 할당하는 단계;
    상기 액세스 보호된 메모리 도메인 내에 사용자 이미지를 로딩하여 암호해독하는(decrypting) 단계;
    상기 비디오 프레임 버퍼 내의 랜덤 위치(random position)로 상기 암호해독된 사용자 이미지의 적어도 일부 위에 키보드 이미지를 렌더링하는 단계;
    사용자 입력의 좌표들을 상기 렌더링된 키보드 이미지의 키와 상관시키는(corrlating) 단계;
    상기 키의 표시를 상기 액세스 보호된 메모리 도메인에 저장하는 단계;
    상기 사용자 입력이 상기 키보드 이미지와 상관되지 않을 때 에러 카운트(error count)를 증가시키는 단계;
    상기 에러 카운트가 임계치를 초과할 때 상기 애플리케이션 프로그램의 하나 이상의 프로세스를 중단시키는 단계;
    상기 사용자 입력이 상기 키보드 이미지와 상관되지 않고 상기 에러 카운트가 상기 임계치 미만일 때, 상기 비디오 프레임 버퍼 내의 다른 랜덤 위치로 상기 사용자 이미지의 적어도 일부 위에 상기 키보드 이미지를 리-렌더링하는 단계;
    사용자 데이터 입력이 완료되지 않은 경우, 상기 비디오 프레임 버퍼 내의 다른 랜덤 위치로 상기 암호해독된 사용자 이미지의 적어도 일부 위에 상기 키보드 이미지를 리-렌더링(re-rendering)하고 다른 사용자 입력의 좌표들을 상기 리-렌더링된 키보드 이미지의 키와 상관시키고 그 키의 표시를 상기 액세스 보호된 메모리 도메인에 저장하는 단계; 및
    사용자 데이터 입력이 완료된 경우, 상기 액세스 보호된 메모리 도메인으로부터 상기 키들의 표시들을 출력하는 단계
    를 포함하고,
    상기 출력하는 단계는, 상기 키들의 표시들로 상기 프롬프트를 파퓰레이팅하는(populating) 단계와, 상기 파퓰레이팅된 프롬프트를 상기 통신 네트워크를 통하여 상기 원격 컴퓨터 시스템으로 리턴(return)하는 단계를 포함하고,
    상기 할당하는 단계, 상기 렌더링하는 단계, 상기 상관시키는 단계, 상기 저장하는 단계, 상기 리-렌더링하고 상관시키고 저장하는 단계, 및 상기 출력하는 단계는, 상기 액세스 보호된 메모리 도메인 내의 상기 애플리케이션 프로그램의 하나 이상의 프로세스의 제어하에서 수행되는 방법.
  2. 제1항에 있어서,
    상기 비디오 프레임 버퍼, 상기 키보드 이미지, 및 상기 애플리케이션 프로그램 및 대응하는 데이터와 연관된 물리적 어드레스들과 가상 어드레스들 간의 변환(translation)들을 하나 이상의 보호된 페이지 테이블에 유지하는 단계;
    상기 액세스 보호된 메모리 도메인의 외부에서 실행되는 프로세스들에 의한 상기 보호된 페이지 테이블들에 대한 액세스를 방지(precluding)하는 단계; 및
    상기 비디오 프레임 버퍼에 대한 포인터와 연관된 물리적 어드레스 및 가상 어드레스 간의 변환을, 액티브 페이지 테이블 내에서 이용가능하지 않은 것으로서 식별하는 단계
    를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 애플리케이션 프로그램의 하나 이상의 프로세스를 개시하는 단계는, 신뢰 실행 모듈(trusted execution module)의 제어하에서 상기 보호된 메모리 도메인 내에 상기 애플리케이션 프로그램의 하나 이상의 프로세스를 로딩하고, 인증하고, 개시하는 단계를 포함하는 방법.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 제1항에 있어서,
    사용자 데이터 입력이 완료될 때, 상기 비디오 프레임 버퍼 내의 랜덤 위치로 상기 사용자 이미지의 적어도 일부 위에 확인 이미지(acknowledgement image)를 렌더링하는 단계;
    후속하는 사용자 입력의 좌표들을 상기 렌더링된 확인 이미지와 상관시키는 단계;
    상기 후속하는 사용자 입력의 좌표들과 상기 확인 이미지 간의 상관에 응답하여 상기 키들의 표시를 출력하는 단계;
    상기 후속하는 사용자 입력이 상기 확인 이미지와 상관되지 않을 때 상기 에러 카운트를 증가시키는 단계;
    상기 후속하는 사용자 입력이 상기 확인 이미지와 상관되지 않으며 상기 에러 카운트가 상기 임계치 미만일 때, 상기 비디오 프레임 버퍼 내의 다른 랜덤 위치로 상기 사용자 이미지의 적어도 일부 위에 상기 확인 이미지를 리-렌더링하는 단계; 및
    상기 에러 카운트가 임계치를 초과하는 경우 상기 애플리케이션 프로그램의 하나 이상의 프로세스를 중단시키는 단계
    를 더 포함하는 방법.
  8. 제1항에 있어서,
    상기 비디오 프레임 버퍼를 상기 액세스 보호된 메모리 도메인에 할당하는 단계는, 상기 비디오 프레임 버퍼의 일부를 상기 액세스 보호된 메모리 도메인에 할당하는 단계와, 상기 비디오 프레임 버퍼의 나머지 부분이, 상기 액세스 보호된 메모리 도메인 외부의 하나 이상의 프로세스에 의해 액세스되는 것을 허용하는 단계를 포함하며,
    상기 렌더링하는 단계 및 상기 리-렌더링하는 단계는, 상기 액세스 보호된 메모리 도메인에 할당되는 상기 비디오 프레임 버퍼의 일부에 대해 수행되는 방법.
  9. 액세스 보호된 메모리 도메인 내로부터의 키보드 이미지를 렌더링하고, 사용자 선택된 키들의 표시들을 수신하고, 상기 액세스 보호된 메모리 도메인 내에 저장하는 컴퓨터 시스템으로서,
    액세스 보호된 메모리 도메인을 구성(configure)하고,
    통신 네트워크를 통하여 원격 컴퓨터 시스템과 인터페이싱하고,
    상기 원격 컴퓨터 시스템으로부터 사용자 정보에 대한 프롬프트를 검출하고,
    상기 액세스 보호된 메모리 도메인 내에 애플리케이션 프로그램의 하나 이상의 프로세스를 로드하고,
    상기 액세스 보호된 메모리 도메인 내에 로드된 상기 애플리케이션 프로그램의 하나 이상의 프로세스를 개시하고,
    비디오 프레임 버퍼를 상기 액세스 보호된 메모리 도메인에 할당하고,
    상기 액세스 보호된 메모리 도메인 내에 사용자 이미지를 로딩하여 암호해독하고,
    상기 액세스 보호된 메모리 도메인으로부터의 키보드 이미지를 상기 비디오 프레임 버퍼 내의 랜덤 위치로 상기 암호해독된 사용자 이미지의 적어도 일부 위에 렌더링하고,
    사용자 입력들의 좌표들을 상기 키보드 이미지의 키들과 상관시키고,
    상기 액세스 보호된 메모리 도메인 내에 대응하는 키들의 표시들을 저장하고,
    렌더링된 이미지와 상관되지 않는 사용자 입력들을 카운트하고, 상관되지 않은 사용자 입력들의 수가 임계치를 초과하는 경우 애플리케이션 프로그램 또는 애플리케이션 프로그램의 하나 이상의 프로세스를 중단하고,
    상기 사용자 입력이 상기 키보드 이미지와 상관되지 않고 에러 카운트가 상기 임계치 미만일 때, 상기 비디오 프레임 버퍼 내의 다른 랜덤 위치로 상기 사용자 이미지의 적어도 일부 위에 상기 키보드 이미지를 리-렌더링하고,
    사용자 데이터 입력이 완료되지 않은 경우, 사용자 입력에 응답하여 상기 비디오 프레임 버퍼의 다른 랜덤 위치로 상기 암호해독된 사용자 이미지의 적어도 일부 위에 상기 액세스 보호된 메모리 도메인으로부터의 상기 키보드 이미지를 리-렌더링(re-render)하고,
    사용자 데이터 입력이 완료된 경우, 상기 액세스 보호된 메모리 도메인으로부터 상기 키들의 표시들을 출력하고 - 상기 출력은, 상기 키들의 표시들로 상기 프롬프트를 파퓰레이팅하는 것과, 상기 파퓰레이팅된 프롬프트를 상기 통신 네트워크를 통하여 상기 원격 컴퓨터 시스템으로 리턴하는 것을 포함함 -
    상기 액세스 보호된 메모리 도메인 내에 로드되고 개시된 상기 애플리케이션 프로그램의 하나 이상의 프로세스의 제어 하에, 상기 비디오 프레임 버퍼를 할당하고, 상기 키보드 이미지를 렌더링 및 리-렌더링하고, 상기 좌표들을 상관시키고, 상기 표시들을 저장하고, 상기 표시들을 출력하도록 구성되는 컴퓨터 시스템.
  10. 삭제
  11. 제9항에 있어서,
    사용자 데이터의 입력에 응답하여, 상기 암호해독된 사용자 이미지 위에 상기 비디오 프레임 버퍼의 랜덤 위치로 상기 액세스 보호된 메모리 도메인으로부터의 확인(acknowledgement) 이미지를 렌더링하도록 더 구성되는 컴퓨터 시스템.
  12. 삭제
  13. 삭제
  14. 제9항에 있어서, 상기 컴퓨터 시스템은 브라우저 및 상기 브라우저 내로부터의 상기 프롬프트를 검출하는 브라우저 플러그-인을 포함하는 컴퓨터 시스템.
  15. 제14항에 있어서, 상기 브라우저 플러그-인은 상기 원격 컴퓨터 시스템의 대응 웹 사이트를 변경하지 않고 상기 프롬프트를 검출하도록 구성되는 컴퓨터 시스템.
  16. 제14항에 있어서, 상기 브라우저 플러그-인은, 상기 컴퓨터 시스템과 상기 원격 컴퓨터 시스템 간의 보안 소켓 계층(secure sockets layer) 채널 및 트랜스포트 계층 보안(transport layer security) 채널 중 하나 이상을 인터셉트(intercept)하도록 구성되는 컴퓨터 시스템.
  17. 제9항에 있어서,
    상기 비디오 프레임 버퍼, 상기 키보드 이미지, 및 애플리케이션 프로그램 및 대응하는 데이터와 연관된 물리적 어드레스들과 가상 어드레스들 간의 변환들을 하나 이상의 보호된 페이지 테이블 내에 유지하고,
    상기 액세스 보호된 메모리 도메인의 외부에서 실행되는 프로세스들에 의한 상기 보호된 페이지 테이블들에 대한 액세스를 방지하고,
    상기 비디오 프레임 버퍼에 대한 포인터와 연관된 물리적 어드레스와 가상 어드레스 간의 변환을, 액티브 페이지 테이블에서 이용가능하지 않은 것으로서 식별하도록 더 구성되는 컴퓨터 시스템.
  18. 제9항에 있어서,
    프로세서;
    그래픽 프로세서; 및
    상기 프로세서에 결합되고, 상기 그래픽 프로세서에 대해 액세스가능한 메모리
    를 포함하고,
    상기 액세스 보호된 메모리 도메인은 상기 그래픽 프로세서에 대해 액세스가능한 상기 메모리 내에 구성되고, 상기 비디오 프레임 버퍼는 상기 그래픽 프로세서에 대해 액세스가능한 컴퓨터 시스템.
  19. 제18항에 있어서,
    상기 액세스 보호된 메모리 도메인 내에 로드되는 애플리케이션 프로그램의 하나 이상의 프로세스를 인증하도록 구성되는 컴퓨터 시스템.
  20. 통신 네트워크를 통하여 제1 컴퓨터 시스템과 제2 컴퓨터 시스템 사이를 인터페이싱하는 단계;
    상기 제1 컴퓨터 시스템에서, 상기 제2 컴퓨터 시스템으로부터의 사용자 정보에 대한 프롬프트를 검출하는 단계;
    검출된 상기 프롬프트에 응답하여, 프로세서에 의해 상기 프로세서를 포함하는 상기 제1 컴퓨터 시스템의 액세스 보호된 메모리 도메인 내에서 애플리케이션 프로그램을 실행하는 단계;
    상기 애플리케이션 프로그램에 의해, 상기 제1 컴퓨터 시스템의 비디오 프레임 버퍼를 상기 액세스 보호된 메모리 도메인에 할당하는 단계;
    상기 애플리케이션 프로그램에 의해, 상기 액세스 보호된 메모리 도메인 내에 사용자 이미지를 로딩하여 암호해독하는 단계;
    상기 비디오 프레임 버퍼 내의 랜덤 위치로 상기 암호해독된 사용자 이미지의 적어도 일부 위에 키보드 이미지를 렌더링하는 단계;
    상기 애플리케이션 프로그램에 의해서, 사용자 입력의 좌표들을 상기 렌더링된 키보드 이미지의 키와 상관시키는 단계;
    상기 애플리케이션 프로그램에 의해서, 상기 키의 표시를 상기 액세스 보호된 메모리 도메인에 저장하는 단계;
    상기 사용자 입력이 상기 렌더링된 키보드 이미지와 상관되지 않을 때 에러 카운트를 증가시키는 단계;
    에러 카운트가 임계치를 초과할 때 상기 애플리케이션 프로그램의 하나 이상의 프로세스를 중단시키는 단계;
    상기 사용자 입력이 상기 렌더링된 키보드 이미지와 상관되지 않고 상기 에러 카운트가 상기 임계치 미만일 때, 상기 비디오 프레임 버퍼 내의 다른 랜덤 위치로 상기 암호해독된 사용자 이미지 위에 상기 키보드 이미지를 리-렌더링하는 단계;
    사용자 데이터 입력이 완료되지 않은 경우, 상기 비디오 프레임 버퍼 내의 다른 랜덤 위치로 상기 암호 해독된 사용자 이미지의 적어도 일부 위에 상기 키보드 이미지를 리-렌더링하고 다른 사용자 입력의 좌표들을 상기 리-렌더링된 키보드 이미지의 키와 상관시키고 그 키의 표시를 상기 액세스 보호된 메모리 도메인에 저장하는 단계; 및
    사용자 데이터 입력이 완료된 경우, 상기 애플리케이션 프로그램에 의해서, 상기 액세스 보호된 메모리 도메인으로부터 키들의 표시들을 출력하는 단계
    를 포함하고,
    상기 출력하는 단계는, 상기 키들의 표시들로 상기 프롬프트를 파퓰레이팅하는 단계와, 상기 파퓰레이팅된 프롬프트를 상기 통신 네트워크를 통하여 상기 제2 컴퓨터 시스템으로 리턴하는 단계를 포함하는 방법.
  21. 제20항에 있어서,
    상기 비디오 프레임 버퍼, 상기 키보드 이미지, 및 상기 애플리케이션 프로그램 및 대응하는 데이터와 연관된 물리적 어드레스들과 가상 어드레스들 간의 변환(translation)들을 하나 이상의 보호된 페이지 테이블에 유지하는 단계;
    상기 애플리케이션 프로그램에 대해 상기 보호된 페이지 테이블들에 대한 액세스를 제한하는 단계; 및
    상기 비디오 프레임 버퍼에 대한 포인터와 연관된 물리적 어드레스 및 가상 어드레스 간의 변환을, 액티브 페이지 테이블 내에서 이용가능하지 않은 것으로서 식별하는 단계
    를 더 포함하는 방법.
  22. 제20항에 있어서,
    신뢰 실행 모듈의 제어하에서 상기 액세스 보호된 메모리 도메인 내에 상기 애플리케이션 프로그램의 하나 이상의 프로세스를 로딩하고 인증하는 단계를 더 포함하는 방법.
  23. 삭제
  24. 삭제
  25. 제20항에 있어서,
    상기 애플리케이션 프로그램과 상기 프로세서의 제어 하에,
    사용자 데이터 입력이 완료될 때, 상기 비디오 프레임 버퍼 내의 랜덤 위치로 상기 암호해독된 사용자 이미지의 적어도 일부 위에 확인 이미지를 렌더링하는 단계;
    후속하는 사용자 입력의 좌표들과 상기 확인 이미지가 상관되는 경우 상기 키들의 표시를 출력하는 단계;
    상기 후속하는 사용자 입력이 상기 확인 이미지와 상관되지 않을 때 에러 카운트를 증가시키는 단계;
    상기 후속하는 사용자 입력이 상기 확인 이미지와 상관되지 않으며 상기 에러 카운트가 임계치 미만일 때, 상기 비디오 프레임 버퍼 내의 다른 랜덤 위치로 상기 암호해독된 사용자 이미지의 적어도 일부 위에 상기 확인 이미지를 리-렌더링하는 단계; 및
    상기 에러 카운트가 임계치를 초과하는 경우 상기 애플리케이션 프로그램의 하나 이상의 프로세스를 중단시키는 단계
    를 더 포함하는 방법.
  26. 제20항에 있어서,
    상기 비디오 프레임 버퍼를 상기 액세스 보호된 메모리 도메인에 할당하는 단계는, 상기 비디오 프레임 버퍼의 일부를 상기 액세스 보호된 메모리 도메인에 할당하는 단계와, 상기 비디오 프레임 버퍼의 나머지 부분이, 상기 액세스 보호된 메모리 도메인 외부의 하나 이상의 프로세스에 의해 액세스되는 것을 허용하는 단계를 포함하며,
    상기 렌더링하는 단계 및 상기 리-렌더링하는 단계는, 상기 액세스 보호된 메모리 도메인에 할당되는 상기 비디오 프레임 버퍼의 일부에 대해 수행되는 방법.
KR1020120121514A 2008-12-31 2012-10-30 보안 메모리 도메인에 이미지를 직접 렌더링하고 대응하는 사용자 입력을 상관시키는 방법 및 시스템 KR101390077B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/347,576 US8364601B2 (en) 2008-12-31 2008-12-31 Methods and systems to directly render an image and correlate corresponding user input in a secure memory domain
US12/347,576 2008-12-31

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020090131006A Division KR20100080401A (ko) 2008-12-31 2009-12-24 보안 메모리 도메인에 이미지를 직접 렌더링하고 대응하는 사용자 입력을 상관시키는 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20120135165A KR20120135165A (ko) 2012-12-12
KR101390077B1 true KR101390077B1 (ko) 2014-04-29

Family

ID=42034503

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020090131006A KR20100080401A (ko) 2008-12-31 2009-12-24 보안 메모리 도메인에 이미지를 직접 렌더링하고 대응하는 사용자 입력을 상관시키는 방법 및 시스템
KR1020120121514A KR101390077B1 (ko) 2008-12-31 2012-10-30 보안 메모리 도메인에 이미지를 직접 렌더링하고 대응하는 사용자 입력을 상관시키는 방법 및 시스템

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020090131006A KR20100080401A (ko) 2008-12-31 2009-12-24 보안 메모리 도메인에 이미지를 직접 렌더링하고 대응하는 사용자 입력을 상관시키는 방법 및 시스템

Country Status (5)

Country Link
US (1) US8364601B2 (ko)
EP (1) EP2204758A3 (ko)
JP (1) JP4937339B2 (ko)
KR (2) KR20100080401A (ko)
CN (1) CN101840469B (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8207983B2 (en) * 2009-02-18 2012-06-26 Stmicroelectronics International N.V. Overlaying videos on a display device
US8780122B2 (en) 2009-09-16 2014-07-15 Nvidia Corporation Techniques for transferring graphics data from system memory to a discrete GPU
US9111325B2 (en) * 2009-12-31 2015-08-18 Nvidia Corporation Shared buffer techniques for heterogeneous hybrid graphics
US8856319B1 (en) 2010-02-03 2014-10-07 Citrix Systems, Inc. Event and state management in a scalable cloud computing environment
US8775590B2 (en) * 2010-09-02 2014-07-08 International Business Machines Corporation Reactive monitoring of guests in a hypervisor environment
TWI607376B (zh) * 2011-04-08 2017-12-01 系微股份有限公司 用於處理改變依照統一可延伸韌體介面計算裝置中之系統安全資料庫及韌體儲存區請求的系統及方法
KR101689204B1 (ko) * 2011-09-07 2016-12-23 인텔 코포레이션 디바이스의 펌웨어 무결성 검증
WO2013081589A1 (en) * 2011-11-30 2013-06-06 Intel Corporation Securing inputs from malware
WO2013081406A1 (en) * 2011-12-02 2013-06-06 Samsung Electronics Co., Ltd. Method and apparatus for securing touch input
CN104137026B (zh) * 2011-12-30 2017-05-10 英特尔公司 用于制图识别的方法、装置和系统
US8973095B2 (en) * 2012-06-25 2015-03-03 Intel Corporation Authenticating a user of a system via an authentication image mechanism
GB201212878D0 (en) 2012-07-20 2012-09-05 Pike Justin Authentication method and system
US9769123B2 (en) * 2012-09-06 2017-09-19 Intel Corporation Mitigating unauthorized access to data traffic
EP2747071A1 (de) * 2012-12-21 2014-06-25 Deutsche Telekom AG Anzeige eines fälschungssicheren Identitätsindikators
KR20140099135A (ko) * 2013-02-01 2014-08-11 삼성전자주식회사 이미지의 부분 프레임을 업데이트 하는 시스템 온 칩 및 그 동작방법
KR20140111790A (ko) * 2013-03-12 2014-09-22 삼성전자주식회사 가상 키보드에서 난수를 이용한 키 입력 방법 및 장치
WO2015094261A1 (en) * 2013-12-19 2015-06-25 Intel Corporation Policy-based trusted inspection of rights managed content
US20150212658A1 (en) * 2014-01-24 2015-07-30 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Indicating altered user interface elements
US9009468B1 (en) * 2014-08-26 2015-04-14 MagicCube, Inc. System for transaction authentication
US9507951B2 (en) * 2014-10-20 2016-11-29 Intel Corporation Technologies for secure input and display of virtual touch user interfaces
EP3021249A1 (en) * 2014-11-13 2016-05-18 Gemalto Sa System for securely entering a private code
US9940455B2 (en) * 2015-02-25 2018-04-10 International Business Machines Corporation Programming code execution management
GB201520741D0 (en) 2015-05-27 2016-01-06 Mypinpad Ltd And Licentia Group Ltd Authentication methods and systems
US10025550B2 (en) * 2016-03-15 2018-07-17 Intel Corporation Fast keyboard for screen mirroring
GB2549118B (en) * 2016-04-05 2020-12-16 Samsung Electronics Co Ltd Electronic payment system using identity-based public key cryptography
US11233658B2 (en) * 2019-08-14 2022-01-25 OX Labs Inc. Digital transaction signing for multiple client devices using secured encrypted private keys
US11392721B2 (en) * 2019-12-13 2022-07-19 At&T Intellectual Property I, L.P. Virtual machine formjacking protection

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080115078A1 (en) 2006-11-13 2008-05-15 Sandeep Suresh Girgaonkar Method for secure data entry in an application

Family Cites Families (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5557798A (en) 1989-07-27 1996-09-17 Tibco, Inc. Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
EP0447145B1 (en) 1990-03-12 2000-07-12 Hewlett-Packard Company User scheduled direct memory access using virtual addresses
US5483641A (en) 1991-12-17 1996-01-09 Dell Usa, L.P. System for scheduling readahead operations if new request is within a proximity of N last read requests wherein N is dependent on independent activities
US6208805B1 (en) * 1992-02-07 2001-03-27 Max Abecassis Inhibiting a control function from interfering with a playing of a video
US7054547B1 (en) * 1992-02-07 2006-05-30 Max Abecassis Disc having a segment code for prohibiting a play control function during a playing of a video segment
US5312673A (en) 1992-07-28 1994-05-17 Bradford Industries, Inc. Adhesive system for athletic lettering and the like
US5379400A (en) 1992-08-07 1995-01-03 International Business Machines Corp. Method and system for determining memory refresh rate
DE69429777T2 (de) 1993-09-30 2002-10-17 Apple Computer System zur dezentralen massenspeichersteuerung eines rechners mit virtuellem speicher
US5634043A (en) 1994-08-25 1997-05-27 Intel Corporation Microprocessor point-to-point communication
US5687370A (en) 1995-01-31 1997-11-11 Next Software, Inc. Transparent local and distributed memory management system
FR2744818B1 (fr) 1996-02-12 1998-03-27 Bull Sa Procede de verification de la conservation de l'integrite d'une requete emise sans protection par un client vers un serveur au moyen de l'integrite de la reponse
US6542919B1 (en) 1996-03-22 2003-04-01 Koninklijke Philips Electronics N.V. Operating system for use with protection domains in a single address space
US5944821A (en) 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
US5991881A (en) 1996-11-08 1999-11-23 Harris Corporation Network surveillance system
JPH10228421A (ja) 1997-02-14 1998-08-25 Nec Ic Microcomput Syst Ltd メモリアクセス制御回路
US6360244B1 (en) 1997-04-11 2002-03-19 Fujitsu Limited System and method for multi-level memory domain protection
US5987557A (en) 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
US6061449A (en) * 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
US6163834A (en) 1998-01-07 2000-12-19 Tandem Computers Incorporated Two level address translation and memory registration system and method
US6496847B1 (en) 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6105137A (en) 1998-07-02 2000-08-15 Intel Corporation Method and apparatus for integrity verification, authentication, and secure linkage of software modules
US6321276B1 (en) 1998-08-04 2001-11-20 Microsoft Corporation Recoverable methods and systems for processing input/output requests including virtual memory addresses
JP4763866B2 (ja) 1998-10-15 2011-08-31 インターシア ソフトウェア エルエルシー 2重再暗号化によりデジタルデータを保護する方法及び装置
US6832257B1 (en) 1998-12-07 2004-12-14 Sony Corporation Computer, recorded medium on which address validity checking program is recorded, and address validity checking method
US6732220B2 (en) 1999-02-17 2004-05-04 Elbrus International Method for emulating hardware features of a foreign architecture in a host operating system environment
WO2001001262A1 (fr) 1999-06-24 2001-01-04 Fujitsu Limited Controleur de peripherique et systeme d'entree/sortie
US7650504B2 (en) 1999-07-22 2010-01-19 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US6779117B1 (en) * 1999-07-23 2004-08-17 Cybersoft, Inc. Authentication program for a computer operating system
US6751737B1 (en) 1999-10-07 2004-06-15 Advanced Micro Devices Multiple protected mode execution environments using multiple register sets and meta-protected instructions
GB2371658B (en) 1999-10-25 2004-01-28 Phoenix Tech Ltd Secure software SMI dispatching using caller address
US6571333B1 (en) 1999-11-05 2003-05-27 Intel Corporation Initializing a memory controller by executing software in second memory to wakeup a system
US6738882B1 (en) 1999-11-30 2004-05-18 Hewlett-Packard Development Company, L.P. Concurrent multi-processor memory testing beyond 32-bit addresses
US6658515B1 (en) 2000-01-25 2003-12-02 Dell Usa, L.P. Background execution of universal serial bus transactions
US6983374B2 (en) 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
US6553438B1 (en) 2000-04-24 2003-04-22 Intel Corporation Methods and system for message resource pool with asynchronous and synchronous modes of operation
US6931540B1 (en) 2000-05-31 2005-08-16 Networks Associates Technology, Inc. System, method and computer program product for selecting virus detection actions based on a process by which files are being accessed
US6751720B2 (en) 2000-06-10 2004-06-15 Hewlett-Packard Development Company, L.P. Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy
US6954861B2 (en) 2000-07-14 2005-10-11 America Online, Inc. Identifying unauthorized communication systems based on their memory contents
US6487643B1 (en) 2000-09-29 2002-11-26 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6996551B2 (en) 2000-12-18 2006-02-07 International Business Machines Corporation Apparata, articles and methods for discovering partially periodic event patterns
US6907600B2 (en) 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
US6567897B2 (en) 2001-03-01 2003-05-20 International Business Machines Corporation Virtualized NVRAM access methods to provide NVRAM CHRP regions for logical partitions through hypervisor system calls
US20030037237A1 (en) 2001-04-09 2003-02-20 Jean-Paul Abgrall Systems and methods for computer device authentication
US6684305B1 (en) 2001-04-24 2004-01-27 Advanced Micro Devices, Inc. Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence
WO2002091146A2 (en) 2001-05-09 2002-11-14 Ecd Systems, Inc. Systems and methods for the prevention of unauthorized use and manipulation of digital content
US7478394B1 (en) 2001-06-04 2009-01-13 Hewlett-Packard Development Company, L.P. Context-corrupting context switching
US6671791B1 (en) 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
US7093118B2 (en) 2001-06-27 2006-08-15 Intel Corporation System and method for external bus device support
US6920534B2 (en) 2001-06-29 2005-07-19 Intel Corporation Virtual-port memory and virtual-porting
US8001594B2 (en) 2001-07-30 2011-08-16 Ipass, Inc. Monitoring computer network security enforcement
US6685567B2 (en) 2001-08-08 2004-02-03 Igt Process verification
US6883116B2 (en) 2001-09-27 2005-04-19 International Business Machines Corporation Method and apparatus for verifying hardware implementation of a processor architecture in a logically partitioned data processing system
US7062650B2 (en) 2001-09-28 2006-06-13 Intel Corporation System and method for verifying integrity of system with multiple components
US6823433B1 (en) 2001-11-13 2004-11-23 Advanced Micro Devices, Inc. Memory management system and method for providing physical address based memory access security
US6850994B2 (en) 2001-11-16 2005-02-01 Microsoft Corporation Method for determining status of a computer device and detecting device behavior in response to a status request
US6804741B2 (en) 2002-01-16 2004-10-12 Hewlett-Packard Development Company, L.P. Coherent memory mapping tables for host I/O bridge
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
US7127548B2 (en) 2002-04-16 2006-10-24 Intel Corporation Control register access virtualization performance improvement in the virtual-machine architecture
JP2003330365A (ja) 2002-05-09 2003-11-19 Toshiba Corp コンテンツ配布/受信方法
US20030229794A1 (en) 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
US6922766B2 (en) 2002-09-04 2005-07-26 Cray Inc. Remote translation mechanism for a multi-node system
US7107497B2 (en) 2002-09-30 2006-09-12 Sun Microsystems, Inc. Method and system for event publication and subscription with an event channel from user level and kernel level
US7028229B2 (en) 2002-09-30 2006-04-11 Sun Microsystems, Inc. Kernel event subscription and publication system and method
US20040073809A1 (en) * 2002-10-10 2004-04-15 Wing Keong Bernard Ignatius Ng System and method for securing a user verification on a network using cursor control
CN1220128C (zh) * 2003-01-22 2005-09-21 王洋 键值可随机变化的智能保密键盘
US7111200B2 (en) 2003-04-17 2006-09-19 International Business Machines Corporation Apparatus and method for debugging a logical partition
US20040226009A1 (en) 2003-05-09 2004-11-11 International Business Machines Corporation System and method for software application task abstraction
US6961852B2 (en) 2003-06-19 2005-11-01 International Business Machines Corporation System and method for authenticating software using hidden intermediate keys
US7010630B2 (en) 2003-06-30 2006-03-07 International Business Machines Corporation Communicating to system management in a data processing system
US7103779B2 (en) 2003-09-18 2006-09-05 Apple Computer, Inc. Method and apparatus for incremental code signing
US7542026B2 (en) 2003-11-03 2009-06-02 International Business Machines Corporation Apparatus method and system for improved feedback of pointing device event processing
US20050132122A1 (en) 2003-12-16 2005-06-16 Rozas Carlos V. Method, apparatus and system for monitoring system integrity in a trusted computing environment
US20050138417A1 (en) 2003-12-19 2005-06-23 Mcnerney Shaun C. Trusted network access control system and method
US7225325B2 (en) 2003-12-30 2007-05-29 International Business Machines Corporation Customizing a computer system by using stored configuration parameters in a configuration mechanism
US7831838B2 (en) 2004-03-05 2010-11-09 Microsoft Corporation Portion-level in-memory module authentication
US20050213768A1 (en) 2004-03-24 2005-09-29 Durham David M Shared cryptographic key in networks with an embedded agent
US7653727B2 (en) 2004-03-24 2010-01-26 Intel Corporation Cooperative embedded agents
US7401230B2 (en) 2004-03-31 2008-07-15 Intel Corporation Secure virtual machine monitor to tear down a secure execution environment
US7594124B2 (en) 2004-06-09 2009-09-22 Intel Corporation Cross validation of data using multiple subsystems
US7558966B2 (en) 2004-06-09 2009-07-07 Intel Corporation Notifying remote administrator of platform integrity determination
US7802250B2 (en) 2004-06-28 2010-09-21 Intel Corporation Support for transitioning to a virtual machine monitor based upon the privilege level of guest software
US20050289311A1 (en) 2004-06-29 2005-12-29 David Durham System and method for secure inter-platform and intra-platform communications
US7644287B2 (en) 2004-07-29 2010-01-05 Microsoft Corporation Portion-level in-memory module authentication
US7281102B1 (en) 2004-08-12 2007-10-09 Vmware, Inc. Restricting memory access to protect data when sharing a common address space
US7571474B2 (en) 2004-12-30 2009-08-04 Intel Corporation System security event notification aggregation and non-repudiation
US7577848B2 (en) 2005-01-18 2009-08-18 Microsoft Corporation Systems and methods for validating executable file integrity using partial image hashes
US7739517B2 (en) 2005-03-31 2010-06-15 Intel Corporation Hardware-based authentication of a software program
US7603484B2 (en) 2005-04-21 2009-10-13 Microsoft Corporation Protocol for communication with a user-mode device driver
US20060294596A1 (en) 2005-06-27 2006-12-28 Priya Govindarajan Methods, systems, and apparatus to detect unauthorized resource accesses
US20070006175A1 (en) 2005-06-30 2007-01-04 David Durham Intra-partitioning of software components within an execution environment
US7587612B2 (en) 2005-06-30 2009-09-08 Intel Corporation Generating and communicating information on locations of program sections in memory
US20070006307A1 (en) 2005-06-30 2007-01-04 Hahn Scott D Systems, apparatuses and methods for a host software presence check from an isolated partition
US20070005935A1 (en) 2005-06-30 2007-01-04 Khosravi Hormuzd M Method and apparatus for securing and validating paged memory system
US7669242B2 (en) 2005-06-30 2010-02-23 Intel Corporation Agent presence monitor configured to execute in a secure environment
US7953980B2 (en) 2005-06-30 2011-05-31 Intel Corporation Signed manifest for run-time verification of software program identity and integrity
US7761674B2 (en) 2005-12-30 2010-07-20 Intel Corporation Identifier associated with memory locations for managing memory accesses
CN1825796A (zh) * 2006-03-29 2006-08-30 刘大扬 基于图片键盘的网络加密系统及其操作方法
JP2008033747A (ja) * 2006-07-31 2008-02-14 Fuji Xerox Co Ltd 入力情報保護システム及びプログラム
US20080077767A1 (en) 2006-09-27 2008-03-27 Khosravi Hormuzd M Method and apparatus for secure page swapping in virtual memory systems
CN201035502Y (zh) * 2006-12-28 2008-03-12 上海麦柯信息技术有限公司 安全随机动态软键盘
US8364973B2 (en) 2007-12-31 2013-01-29 Intel Corporation Dynamic generation of integrity manifest for run-time verification of software program

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080115078A1 (en) 2006-11-13 2008-05-15 Sandeep Suresh Girgaonkar Method for secure data entry in an application

Also Published As

Publication number Publication date
KR20100080401A (ko) 2010-07-08
US20100169666A1 (en) 2010-07-01
CN101840469B (zh) 2017-10-13
JP2010170543A (ja) 2010-08-05
CN101840469A (zh) 2010-09-22
EP2204758A2 (en) 2010-07-07
US8364601B2 (en) 2013-01-29
JP4937339B2 (ja) 2012-05-23
EP2204758A3 (en) 2010-12-15
KR20120135165A (ko) 2012-12-12

Similar Documents

Publication Publication Date Title
KR101390077B1 (ko) 보안 메모리 도메인에 이미지를 직접 렌더링하고 대응하는 사용자 입력을 상관시키는 방법 및 시스템
EP2183695B1 (en) Device with a secure virtual machine
US9471511B2 (en) System and methods for CPU copy protection of a computing device
KR101504857B1 (ko) 보안 시스템에서 랜덤하게 할당된 메모리 범위로 jit를 지원하는 시스템 및 방법
Amiri Sani Schrodintext: Strong protection of sensitive textual content of mobile applications
US8996883B2 (en) Securing inputs from malware
CN105320895B (zh) 用于联机加密处理的高性能自主硬件引擎
US20160094555A1 (en) System and methods for executing encrypted managed programs
CN113302613B (zh) 旁路保护
Oh et al. Trustore: Side-channel resistant storage for sgx using intel hybrid cpu-fpga
US9195821B2 (en) System and methods for remote software authentication of a computing device
US20190103074A1 (en) Technologies for secure z-order enforcement with trusted display
Mittal et al. A survey of techniques for improving security of gpus
Zhang et al. Memory forensic challenges under misused architectural features
US10303885B2 (en) Methods and systems for securely executing untrusted software
Van Bulck et al. Breaking virtual memory protection and the SGX ecosystem with foreshadow
Chu et al. Ocram-assisted sensitive data protection on arm-based platform
Zheng et al. Secure mobile payment employing trusted computing on trustzone enabled platforms
Toll et al. The Caernarvon secure embedded operating system
Kim et al. iLeakage: Browser-based Timerless Speculative Execution Attacks on Apple Devices
Parker Protecting Cryptographic Keys and Functions from Malware Attacks
JP6117402B2 (ja) 入力を保護するシステム及び方法
Zhang Comparison of prominent trusted execution environments
Markin et al. Security threat level estimation for untrusted software based on TrustZone technology
Tsantekidis et al. Securing Runtime Memory via MMU Manipulation

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180328

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee