KR20040094377A - 온 더 플라이 암호화/복호화에 대한 usb 데이터의 동적대체 - Google Patents

온 더 플라이 암호화/복호화에 대한 usb 데이터의 동적대체 Download PDF

Info

Publication number
KR20040094377A
KR20040094377A KR1020040030664A KR20040030664A KR20040094377A KR 20040094377 A KR20040094377 A KR 20040094377A KR 1020040030664 A KR1020040030664 A KR 1020040030664A KR 20040030664 A KR20040030664 A KR 20040030664A KR 20040094377 A KR20040094377 A KR 20040094377A
Authority
KR
South Korea
Prior art keywords
data
command
usb
secure component
security
Prior art date
Application number
KR1020040030664A
Other languages
English (en)
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 KR20040094377A publication Critical patent/KR20040094377A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/72Protecting 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 in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/72Protecting 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 in cryptographic circuits
    • G06F21/725Protecting 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 in cryptographic circuits operating on a secure reference time value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2153Using hardware token as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Systems (AREA)
  • Storage Device Security (AREA)
  • Small-Scale Networks (AREA)

Abstract

본 발명에 따른 보안 모듈과 방법은, 버스를 제어하는 소프트웨어가 신뢰성이 없는 경우에도, 하부의 USB 버스 프로토콜 또는 장치를 변경함이 없이 보안 콤포넌트가 장치와 안전하게 통신할 수 있는 USB 또는 다른 유사 장치로부터의 데이터 요청을 구현한다. (장치 또는 허브와 물리적으로 분리 또는 통합된)보안 모듈은 데이터 요청에 응답하여 콤포넌트를 보안하기 위해서 장치로부터 보안콤포넌트에 전송된 데이터를 가로챈다. "인식되지 않음" 신호가 보안 콤포넌트에 전송되고, 데이터는 암호화된다. 다음 데이터 요청이 가로채어지고, 암호화된 데이터가 응답으로 전송된다. 보안 콤포넌트로부터 장치로의 응답은 장치에 도달할 수 있게 된다. 설정 요청을 다루기 위해, 허용(allow) 명령은 암호화된 설정 명령과 암호화되지 않은 설정 명령을 포함하여 보안 모듈에 전송된다. 암호화 점검이 성공적이면, (보안 모듈에 의해) 장치에 전송된 설정 명령은 장치에 도달할 수 있게 된다.

Description

온 더 플라이 암호화/복호화에 대한 USB 데이터의 동적 대체{DYNAMIC SUBSTITUTION OF USB DATA FOR ON-THE-FLY ENCRYPTION/DECRYPTION}
본 발명은 디지털 데이터를 보호하는 방법 및 시스템에 관한 것으로서, 특히, 범용 직렬 버스(USB) 아키텍쳐와 프로토콜 또는 유사한 아키텍쳐와 프로토콜을 사용하여 전송 중인 디지털 데이터를 보호하는 방법 및 시스템에 관한 것이다.
컴퓨터 시스템에서는, 주변 및 기타 장치가 USB 버스와 같은 버스를 통해 컴퓨터 시스템에 부착될 수 있다. USB 버스를 사용하는 컴퓨터 시스템은, 애플리케이션과 상호작용하고 중앙 호스트로부터 주변장치로의 데이터 송수신을 중재하는 USB 소프트웨어 레이어를 포함할 수 있다.
USB 소프트웨어 레이어는 범용 USB 하드웨어를 지원한다. USB 통신을 지원하기 위해, USB 소프트웨어 레이어는 복잡하며 융통성이 있다. USB 소프트웨어 레이어는 다수의 독립적인 하드웨어 벤더의 드라이브를 지원하는 것이 바람직하며 플러깅 가능(pluggable)을 유지해야 한다. 따라서, USB 소프트웨어 레이어는 하드웨어 변경 또는 다른 업데이트와 같은 도전에 대응하기 위해 자주 변경될 수 있다. 더욱이, 많은 수의 서로 다른 이용가능 USB 하드웨어 요소가 있으므로, USB 소프트웨어 레이어는 이러한 여러 옵션을 지원할 수 있는 것이 바람직하다.
UBS 버스 상의 데이터는 비보안(insecure) USB 소프트웨어 레이어를 통과하고 또한 이 데이터는 버스 상의 임의의 장치에 이용가능하기 때문에, 보안이 관심사가 되고 있다. 예를 들어, 컴퓨터 모델은 데이터를 USB 버스를 통해 전달되도록 요청하는 보안 콤포넌트 - 소프트웨어 또는 하드웨어 - 를 포함할 수 있다. 그러나, 단순성, 융통성 및 갱신가능성을 위해 USB 소프트웨어 레이어는 보안 소프트웨어 콤포넌트의 일부가 아닌 것이 바람직하다. 하지만, USB 소프트웨어 레이어가 보안 소프트웨어 콤포넌트의 일부가 아니면, 보안 소프트웨어 콤포넌트에 구현된 보안성이 위험하게 된다.
소프트웨어 또는 하드웨어 공격은 시스템을 취약하게 할 수 있다. 예를 들어, 하드웨어 장치로부터 공격자가 장치 입력을 스푸핑(spoofing)할 수 있으므로, 사용자의 타이핑 정보가 데이터가 지시된 애플리케이션에 전송되지 않는다. 또한, 공격자는 장치 입력을 스니핑(sniffing) - 예를 들어, 사용자의 키스트로크를 저장- 할 수 있어, 암호 또는 다른 데이터 정보를 얻을 수 있다. 또한, 입력의 기록, 변경 또는 재생이 컴퓨터 내의 소프트웨어 공격에 의해 가능하다.
보안 소프트웨어가 컴퓨터 시스템에서 동작하고 있으면, USB 장치와의 통신이 비보안 USB 소프트웨어와 버스에 걸쳐 수행되어야 한다. 이러한 장치는 종종 디스플레이 및 입력 목적을 위해 사용자에게 필요하다. 따라서, 보안 소프트웨어가 보안이 되기 위해서, 보안 소프트웨어에 대한 입력 및 출력도 또한 보안이 되어야 한다. 보안 소프트웨어가 사용자에 대안 보안 경로를 갖지 않으면, 보안 소프트웨어는 자신이 취하는 동작이 실제 사용자를 위하는 것인지를 알 수 있는 방법이 없다. 첫째, 공격자는 사용자 입력 (사용자로부터 온 것이 아니고 따라서 사용자 의도가 아님)을 제작하여 보안 소프트웨어가 적법한 사용자가 의도하지 않았던 동작을 수행하도록 속일 수 있다. 둘째, 신뢰(trusted) 소프트웨어의 출력이 보안 경로를 통해 사용자에게로 직접 가는 것이 아니면, 적법한 사용자는 그가 실제로 보안 소프트웨어로부터의 진정한 출력을 보고 있는지 확신을 가질 수 없다. 그러나, USB 프로토콜은 컴퓨터 산업에서 표준이므로, 보안을 제공하기 위해 USB 프로토콜 또는 아키텍쳐를 변경하게 되면 광범위하게 이용가능하고 또한 광범위하게 구현되는 아키텍쳐를 사용하는 이점이 제거될 수도 있다.
따라서, 기존 USB 장치 및 시스템과의 USB 접속성 및 호환성의 이점을 제공하면서 보안을 향상시키는 방법이 요구된다.
본 발명은 USB 장치에 제공될 보안 모듈 내에 암호화/복호화 설비를 제공한다. 특히, 본 발명은 장치로부터 데이터 - 상기 데이터는 그 장치에 의해 시스템에 리턴됨 - 를 요청하는 명령 및 안전하게 처리하도록 장치를 구성하는 설정 명령과 같은, 장치와 보안 콤포넌트 간의 통신을, 이들 명령 및 데이터가 비보안된 하드웨어 및/또는 소프트웨어를 통해 보안 콤포넌트에 도달하는 경우에도 제공한다.
암호화/복호화는 물리적으로 분리된 장치, 예를 들어, USB 장치 및 USB 장치가 플러그하는 호스트 또는 하드웨어 사이의 접속 배선에 위치한 하드웨어의 일부("동글(dongle)")로, 또는 변형되지 않은 USB 장치가 플러그하는 별도 장치로서 제공될 수 있다. 다르게는, 암호화/복호화 장치는 예를 들어, 하드웨어 암호화/복호화가 내장되거나 또는 업스트림 허브의 기능이 집적된 키보드와 같은 장치에 내장될 수 있다.
장치는 그의 서로 다른 기능 부위와 관련된 여러 종점(endpoint)을 가질 수 있다. 따라서, 일실시예에서, 보안 동글은 장치 상의 모든 인터페이스와 모든 종점에 대한 보안을 처리한다.
본 발명의 일실시예에 따라, USB 장치가 페이로드를 수신하여 보안 콤포넌트, 예를 들어 키 스트로크 또는 마우스 스트로크와 같은 HID (휴먼 인터페이스 드라이버) 패킷에 전송하는 경우, 페이로드는 장치로부터 동글로의 업스트림으로 쿨리어 상태로 전송되고, 동글에서 암호화되며, 호스트에 암호화되어 전송된다. 암호화된 페이로드의 대체는 USB 호스트 컨트롤러에 투명(transparent)하고 장치에 투명하다.
또한, 동글은 이러한 투명성을 보장하기 위해서 시스템에서 장치로의 모든 비인증 SETUP 패킷을 방지한다. 동글이 임의의 SETUP 명령이 전송될 수 있도록 하기 전에, 보안 소프트웨어는 동글에 "서명된(signed)" ALLOW 명령을 전송한다. 그리고, 일단 ALLOW 명령을 수신하면, 특정 SETUP 명령을 규정된 바대로 허용할 뿐이다. 따라서, SETUP 명령이 수행될 예정이면, 예비 ALLOW 명령이 설정 명령 데이터 및 그 설정 명령 데이터의 암호화된 버전을 포함하는 데이터와 함께 전송된다. (예를 들면, ALLOW 명령이 보안 소프트웨어에서 서명되었음을 보장함으로써, 일 실시예에서는, 동글과 보안 소프트웨어 간의 공유 보안을 사용하여 해시를 추가함으로써) 데이터가 검증되면, 동글은 전송되어 종점에서 실행될 매칭 명령 데이터와 SETUP 명령이 종점에 어드레스될 수 있게 한다.
보안 애플리케이션이 안전한 종점으로부터 데이터 요청을 원하는 경우, 보안 애플리케이션은 표준 방식의 USB 시스템 소프트웨어를 사용하여 그 요청을 특정 종점에 전송한다. 그러나, 동글은 이러한 요청 토큰이 종점에 진행하는 방식과 데이터가 호스트 시스템 소프트웨어에서 리턴되는 방식을 다음과 같이 변경한다: USB 시스템 소프트웨어가 종점에 토큰을 전송하는 경우, 그 토큰은 보안 모듈에 의해 가로채진다. 보안 모듈은 장치 상으로 토큰을 전송하지만, 호스트에는 NAK을 전송한다. 장치가 데이터를 갖는 폴(poll)에 응답하면, 그 데이터는 저장되어 보안 모듈에 의해 암호화된다. 반복 폴이 장치와 종점에서의 보안 모듈에 의해 탐지되는 경우, 그 요청은 보안 모듈에 의해 "스매싱(smashing)"된다 ("스매싱"이라는 용어는 USB 영역에서 전송 에러를 나타내는 방식으로 데이터가 전송되는 것을 의미한다). 보안 모듈은 두번째 폴에 대한 응답으로 암호화된 데이터를 전송하며, 호스트가 ACK 신호를 갖는 수신을 긍정응답하며, ACK 신호는 보안 모듈에 의해 장치에 전달된다.
보안 실시예가 데이터를 안전한 장치에 전송하기를 원하는 경우, 우선 그 자신의 보안 모듈에 요청을 전송한다. ALLOW 토큰은 보안 모듈에 전송된다. 이 패킷의 일부로서, 명령(USB 장치에 대한 명령을 포함하는 SETUP 명령)이 ALLOW 토큰의 데이터로서 전송된다. 보안 모듈은 ALLOW 명령을 검증하여 보안 소프트웨어에서 왔는지를 판정하고 이 데이터를 저장한다. 그 후, 새로운 명령 토큰이 보안 모듈에 전달될 때, 그 명령 토큰이 ALLOW 명령에서의 명령으로서 전송된 명령 토큰과 매치하면, 설정 명령이 장치 상에 전달된다. SETUP 프로토콜의 나머지 부분은 정상적으로 USB 버스 상에 진행한다. SETUP 명령이 이전에 수신된 ALLOW 명령과 매치하지 않으면, 동글은 종료하기 전에 SETUP 명령을 스매싱한다.
이하, 본 발명의 다른 태양에 대하여 설명한다.
첨부한 도면을 참조하여 본 발명에 따른 보안 모듈을 상세히 설명한다.
도 1은 본 발명이 구현될 수 있는 컴퓨터 시스템을 나타내는 블록도.
도 2는 본 발명이 구현될 수 있는 USB에 의해 부착되는 컴퓨터 및 다른 장치를 포함하는 컴퓨터 시스템을 나타내는 블록도.
도 3a는 본 발명의 일실시예에 따른 동글(dongle) 및 집적 보안 모듈을 포함하는 컴퓨터 시스템을 나타내는 블록도.
도 3b는 본 발명의 다른 실시예에 따른 동글 및 집적 보안 모듈을 포함하는 컴퓨터 시스템을 나타내는 블록도.
도 4는 본 발명의 일실시예에 따른 IN 트랜잭션을 예시하는 흐름도.
도 5는 본 발명의 일실시예에 따른 SETUP 트랜잭션을 예시하는 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
161 : 마우스
162 : 키보드
163 : 그래픽 태블릿
167 : 호스트 컨트롤러
197 : 스피커
300 : 보안 모듈
310 : 동글
350 : 보안 서버
예시적인 컴퓨팅 환경
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예시를 나타낸다. 컴퓨팅 시스템 환경(100)은 적절한 컴퓨팅 환경의 단지 일예이며, 본 발명의 사용 또는 기능의 범위에 대한 어떤 제한도 암시하려는 것은 아니다. 컴퓨팅 환경(100)은 예시적인 운영 환경(100)에서 설명된 콤포넌트 중의 하나 또는 조합에 관한 임의의 의존성 또는 요건을 갖는 것을 해석되어서는 안된다.
당업자는 컴퓨터 또는 다른 클라이언트 또는 서버 장치가 컴퓨터 네트워크 의 일부로서 또는 분산 컴퓨팅 환경에서 사용될 수 있음을 이해할 것이다. 이에 있어서, 본 발명은 임의 개수의 메모리 또는 저장 유닛을 갖는 임의의 컴퓨터 시스템 그리고 임의 개수의 저장 유닛 또는 볼륨에 걸쳐 발생하는 임의 개수의 애플리케이션과 프로세스에 관한 것이며, 이들은 본 발명과 관련하여 사용될 수 있다. 본 발명은 원격 또는 로컬 스토리지를 갖는 네트워크 환경 또는 분산 컴퓨팅 환경에 배치된 서버 컴퓨터와 클라이언트 컴퓨터의 환경에 적용할 수 있다. 또한, 본 발명은 원격 또는 로컬 서비스와 관련된 정보를 생성, 수신 및 송신하는 프로그래밍 언어 기능, 번역 및 실행 성능을 갖는 단독 컴퓨팅 장치에 적용될 수 있다.
본 발명은 수많은 다른 범용 또는 특정 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작할 수 있다. 본 발명에 사용되기에 적합한 공지의 컴퓨팅 시스템, 환경 및/또는 구성의 예들은 개인용 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋탑 박스, 프로그래머블 소비자 전자제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 장치 중의 임의의 것을 포함할 수 있는 분산 컴퓨팅 환경 등을 포함하며 이에 국한되지는 않는다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령에 대하여 설명될 수 있다. 통상, 프로그램 모듈은 특정 태스크를 실행하거나 특정 추상 데이터형을 구현하는 루틴, 프로그램, 오브젝트, 콤포넌트, 데이터 구조 등을 포함한다. 또한 본 발명은 통신 네트워크 또는 다른 데이터 전송 매체를 통해 연결되는 원격 처리 장치에 의해 태스크가 실행되는 분산 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈 및 기타 데이터는 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체에 모두 위치할 수 있다. 컴퓨터 자원 및 서비스의 분산 컴퓨팅 장비의 공유는 컴퓨팅 장치와 시스템 간의 직접 교환에 의해 행해진다. 이들 자원 및 서비스는 정보, 캐시 저장, 파일용 디스크 저장의 교환을 포함한다. 분산 컴퓨팅은 네트워크 접속성을 이용하여, 클라이언트가 그들 전체의 힘을 전체 기업에 골고루 분배할 수 있게 한다. 이에 있어서, 다양한 장치가 본 발명의 기술을 이용할 수 있는 애플리케이션, 오브젝트 또는 리소스를구비할 수 있다.
도 1을 참조하면, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 콤포넌트는 처리부(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 콤포넌트를 처리부(120)에 결합하는 시스템 버스(121)를 포함하며 이에 국한되지 않는다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 병렬 버스 및 다양한 버스 구조 중의 임의의 것을 사용한 로컬 버스를 포함하는 여러 형태의 버스 구조 중의 임의의 것일 수 있다. 예를 들어 - 한정이 아님 -, 이러한 아키텍쳐는 산업 표준 구조(ISA) 버스, 마이크로 채널 구조(MCA) 버스, 향상된 ISA(EISA) 버스, 비디오 전자 산업 협회(VESA) 로컬 버스, 및 주변 콤포넌트 상호접속(PCI) 버스(메자닌(Mezzanine) 버스로도 알려짐)을 포함한다.
컴퓨터(110)는 통상 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 예를 들어 - 한정이 아님 -, 컴퓨터 판독가능 매체는 컴퓨터 스토리지 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 스토리지 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등의 정보의 저장을 위한 임의의 방법 또는 구조로 구현될 수 있는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 스토리지 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CDROM, 디지털 다기능 디스크(DVD) 또는 다른 광디스크 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 장치, 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하며 이에 국한되지 않는다. 통상, 통신 매체는 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호로 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에서 정보를 암호화하는 방식으로 특정 하나 이상이 설정 또는 변경되는 신호를 의미한다. 예를 들어 - 한정이 아님 -, 통신 매체는 유선 네트워크, 다이렉트 유선 접속과 같은 유선 매체, 어쿠스틱, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함한다. 상기한 것들의 임의의 조합이 컴퓨터 판독가능 매체의 범주 내에 포함되어야 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM; 131)와 랜덤 액세스 메모리 (RAM; 132)와 같은 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 스토리지 매체를 포함한다. 기본 입출력 시스템(133; BIOS)은 시동 동안과 같이 컴퓨터(110) 내의 요소들간의 정보를 전송할 수 있게 하는 기본 루틴을 포함하며, 통상 ROM(131)에 저장된다. RAM(132)은 통상 직접 액세스가능하고 및/또는 처리부(120)에 의해 현재 동작될 수 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예를 들어 - 한정이 아님 -, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 예시한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 스토리지 매체를 포함할 수 있다. 단지 예를 들면, 도 1은 비분리형, 비휘발성 자기 매체로부터 판독하거나 이에 기입하는 하드 디스크 드라이브(140), 분리형, 비휘발성 자기 디스크(152)로부터 판독하거나 이에 기입하는 자기 디스크 드라이브(151), 및 CD ROM 또는 기타 광매체와 같이 분리형 비휘발성 광디스크(156)로부터 판독하거나 이에 기입하는 광디스크 드라이브(155)를 예시한다. 예시적인 운영 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 스토리지 매체는 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다기능 디스크, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하며 이에 국한되지 않는다. 하드 디스크 드라이브(141)는 통상 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151)와 광디스크 드라이브(155)는 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
상술하고 도 1에 예시된 드라이브 및 관련 컴퓨터 스토리지 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 및 기타 데이터를 컴퓨터(110)에 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 예시되어 있다. 이들 콤포넌트는 운영 체제(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈(136), 및 프로그램 데이터(137)과 동일하거나 상이할 수 있다. 운영 체제(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)는 적어도 그들이 서로 다른 복사본임을 설명하기 위해 여기서는 서로 다른 번호가 부여되어 있다. 사용자는 키보드(162) 및 통상 마우스, 트랙볼 또는 터치 패드로 불리는 포인팅 장치(161)와 같은 입력 장치를 통해 컴퓨터(20)에 명령 및 정보를 입력할 수 있다. 다른 입력 장치(미도시)는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 장치는 시스템 버스에 접속된 사용자 입력 인터페이스(160)를 통해 처리부(120)에 종종 접속되지만, 병렬 포트, 게임 포트 또는 범용 직렬 버스(USB)와 같은 다른 인터페이스 및 버스 구조에 의해서 접속될 수도 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치 또한 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터 뿐만 아니라, 컴퓨터도 출력 병렬 인터페이스(190)를 통해 접속될 수 있는 스피커(197) 및 프린터(196)와 같은 다른 병렬 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터에 대한 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있으며, 비록 메모리 스토리지 장치(181) 만이 도 1에서는 예시되었지만, 컴퓨터(110)에 있어서 상술한 많은 또는 모든 요소를 통상 포함한다. 도 1에 도시된 논리 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 다른 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실내, 범기업망, 인트라넷 및 인터넷에서 흔히 볼 수 있다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용되는경우, 컴퓨터(110)는 모뎀(172) 또는 인터넷과 같은 WAN(173)을 통해 통신을 확립하는 다른 수단을 통상 포함한다. 모뎀(172)은 내장형이거나 외장형일 수 있으며, 사용자 입력 인터페이스(160) 또는 다른 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크화된 환경에서, 컴퓨터(110)에 대하여 도시된 프로그램 모듈 또는 그 일부는 원격 메모리 스토리지 장치 내에 저장될 수 있다. 예를 들어 - 한정이 아님 -, 도 1은 메모리 장치(181)에 상주하는 것으로 원격 애플리케이션 프로그램을 예시하고 있다. 도시된 네트워크 접속은 예시적이며 컴퓨터들 간의 통신 링크를 확립하는 다른 수단이 사용될 수 있음이 이해될 수 있을 것이다.
USB 프로토콜
USB 아키텍쳐는 호스트에 접속되어 이와 통신하는 장치들에 대한 방식을 제공한다. 예를 들어, 도 2에 도시된 바와 같이, 범용 직렬 버스(USB)는 마우스(161), 키보드(162), 그래픽 태블릿(163), 스피커(197), 마이크로폰(164), 전화기(165), 및 모니터를 컴퓨터에 접속하는 데 사용될 수 있다. USB 아키텍쳐는 하나 이상의 USB 장치와 하나의 USB 호스트 간의 접속을 가능하게 한다. 통상, 이러한 구성에서, 컴퓨터(110)는 USB 호스트이다.
사용되는 물리적 접속은 스타 형상(star topology)이다. 반복을 피하기 위해서, 계층 순번이 스타 토폴로지에 부과되어 있다. 그 결과는 도 2에 도시된 바와 같은 트리 유사 토폴로지이다. 허브는 각 스타의 중앙에 있다. USB 호스트는 하나의 허브이다. 기능을 갖는 USB 장치 또한 허브일 수 있다. 예를 들어, 도 2에서, 키보드(162)와 모니터(191)는 각각이 허브로서 기능하는 장치일 수 있다.임의의 개별 기능을 갖지 않는 허브가 또한 USB 토폴로지에서 가능하다.
또한, 여러 기능이 단일 물리적 장치로 나타나는 것에 패킷될 수 있다. 예를 들어, 키보드와 포인팅 장치(트랙볼 등)은 단일 패키지 내에 함께 결합될 수 있다. 여러 기능이 단일 패키지 내의 허브와 결합되는 경우, 이들은 복합 장치로 불린다. 복합 장치 내의 허브 및 그 허브에 부착된 각 기능은 그들 자신의 장치 주소를 할당받는다. 예를 들어, 키보드(162)에서, 허브와 키보드 기능은 각기 별도의 장치 주소를 가질 수 있다.
호스트는 호스트 컨트롤러(167)로 알려진 호스트 컴퓨터 시스템에 대한 USB 인터페이스를 포함한다. 호스트 컨트롤러(167)와 USB 시스템 소프트웨어는 장치와 그 장치를 제어하는 특정 소프트웨어 사이에 USB 네트워크 및 호스트 개인용 컴퓨터 상의 인터페이스를 제공한다. 호스트 컨트롤러(167)는 이들 장치로부터/로 모든 패킷을 송수신하기 위해 USB 자원에 대한 모든 액세스를 제어한다. 루트 허브 및 임의의 추가 허브와 관련된 시스템 소프트웨어는 버스 토폴로지를 추적하고 장치의 모든 어드레싱과 장치를 사용하는 클라이언트 소프트웨어로부터의 데이터 라우팅 및 그 장치 자체를 모두 관리한다. 호스트에서의 클라이언트 소프트웨어가 몇몇 USB 장치와의 통신을 원할 경우, 이는 SUB 시스템 소프트웨어와 상호작용함으로써 수행될 수 있다. USB 시스템 소프트웨어는 호스트 컨트롤러(167)와 상호작용한다. 호스트 컨트롤러(167)는 USB 장치와 장치 상의 종점으로부터/으로 USB 버스를 통해 신호를 송수신한다. 하나 이상의 허브가 호스트 컨트롤러(167)와 USB 장치 사이를 중재할 수 있다. USB 장치에서, USB 인터페이스 레이어는 신호를 수신한다. 이 레이어는 프레임 데이터를 장치에 전송하며, 상기 장치는 그 장치 상의 여러 종점으로/으로부터 데이터를 라우팅한다. 몇몇 경우에, 이들 인터페이스는, 예를 들어, 스피커(197)의 스피커 기능, 키보드(162)의 키보드 기능 또는 키보드와 마우스를 포함하는 단일 장치의 두개의 기능과 같은 "기능"으로 그룹지어질 수 있다.
모든 USB 장치는 USB 프로토콜의 범주, 표준 USB 동작에 대한 그들의 반응 및 표준 성능 기술 정보에 대한 표준 USB 인터페이스를 제공한다. 이들 인터페이스는 벤더 특정 고객 인터페이스가 정의될 수 있지만 USB 장치 작업 그룹 표준 조직에 의해 통상 정의된다.
도 2에서 오브젝트를 접속하는 선으로 도시된 버스는 폴링된 버스이다. 호스트 컨트롤러(167)를 통해 컴퓨터(110)는 모든 데이터 전송을 개시한다. 이러한 유형의 전송들 중 하나는 인터럽트 전송이다. 인터럽트 전송은 작은 데이터, 비주기, 저주파 및 한정된 레이턴시에 대하여 사용된다. 인터럽트 전송은 접속을 위한 보장된 최대 서비스 구간 및 다음 주기에서의 전송 재시도를 제공한다. 예를 들어, 키 스트로크에 대한 키보드의 폴링은 이러한 유형의 USB 전송을 사용하여 처리된다.
USB 트랜잭션은 호스트에서의 애플리케이션이 호스트 컨트롤러(167)로부터의 장치로/로부터의 전송을 요청하는 경우에 개시한다. 호스트 컨트롤러(167)는 트랜잭션 유형 및 방향을 나타내는 USB 패킷, USB 장치 주소 및 종점 번호를 전송한다. 이는 "토큰 패킷"이다. 각각의 USB 장치는 장치가 호스트 컨트롤러(167)에 부착되고 순번이 정해질 때 할당되는 USB 어드레스에 의해 참조된다. 각각의 USB 장치는 토큰 내에 포함된 주소 정보를 사용하여 그 정보가 호스트에 의해 전송된 토큰의 타겟인지를 판정한다. 종점 번호는 종점 및 그에 따라 통신이 진행되는 USB 장치에서의 상기 종점이 상주하는 인터페이스를 정의한다.
다음으로, 데이터 패킷 상태로, 데이터는 토큰 패킷에서의 명령에 따라 종점에서 호스트로 또는 호스트에서 종점으로 전송된다. 토큰이 IN 토큰이면, 호스트는 종점으로부터 정보를 요청한다. 토큰이 OUT 토큰이면, 호스트 종점에 정보를 전송할 것임을 나타낸다.
토큰이 IN 토큰이지만, 어드레싱된 장치로부터 전송될 데이터가 아직 없으면, 이에 따른 NAK 패킷이 데이터를 대신하여 종점에 의해 전송된다. 예를 들어, 키보드(162)가 폴링되고 있지만 어떤 키 스트로크도 발생하지 않는 경우에는, NAK(부정 응답)이 전송된다. 종점이 스톨링(stalling)되면, STALL이 전송된다. 전송도리 데이터가 있으면, 그 데이터가 전송된다. 이에 응답하여, 데이터가 수신되면, 호스트는 ACK 핸드쉐이크(handshake)를 전송할 수 있다.
OUT 토큰이 전송되었고 호스트로부터 종점으로 데이터가 전송되었으면, 종점은 ACK 패킷을 전송하여 그 데이터가 성공적으로 수신되었는지를 응답할 수 있다. STALL 핸드쉐이크는 종점이 스톨링되어 그 데이터를 수신할 수 없는 경우에 전송될 수 있다. 종점이 데이터를 수신하지 않으면, NAK이 전송된다.
SETUP 명령은 (데이터 단계에서 전송된) 명령을 종점에서 실행하게 하는 OUT 트랜잭션 유형이다.
USB 프로토콜의 완전한 설명은 공개 문서인 USB 규정에 포함되어 있다. 이 문서는 USB 개발자 포럼 웹사이트 www.usb.org에서 구입할 수 있다.
USB 데이터의 동적 대체
본 발명의 방법 및 시스템은 네트워크 상에서 USB 장치 등의 장치 및 보안 콤포넌트 간의 통신 보안을 구현한다. 본 발명의 보안 모듈은 USB 장치 내에 배치될 수 있으며, USB 시스템을 기준으로 주로 설명하지만, 호스트와 장치 사이에 임의의 동작가능한 접속이 본 발명에 따라 구현될 수 있다. 예를 들어, 하나 이상의 로컬 버스, 네트워크(근거리 통신망(LAN) 또는 다른 네트워크 등) 및 USB 버스를 포함하는 임의의 접속이 본 발명을 이용할 수 있다.
도 3a에 도시된 시스템에서, 본 발명에 따르면, 컴퓨터(110) 내의 보안 콤포넌트와 마우스(361) 사이에서 그리고 보안 콤포넌트와 그래픽 태블릿(163) 사이에서 통신이 보안된다. 마우스(361)는 통합 보안 모듈(300)을 포함하며, 보안 콤포넌트를 이용한 통신은 보안 모듈에 의해 중재된다. 도 3a의 시스템에서, 그래픽 태블릿(163), 동글(310)과의 통신 보안을 위해, 그래픽 태블릿(163)과 보안 콤포넌트 간의 접속이 그래픽 태블릿(163)으로부터 물리적으로 분리되어 중재된다. 보안 모듈은 동글(310) 내에 포함된다. 보안 모듈은 USB 시스템 내의 임의의 지점에서 구현될 수 있다. 보안 모듈 또는 동글의 USB 네트워크 업스트림(호스트 방향) 상의 통신은 보호되지만, 보안 모듈 또는 동글의 통신 다운스트림(호스트로부터 멀어지는 방향)은 손상되기 쉽다.
시스템의 물리적 레이아웃 때문에, 호스트와 보호된 장치 간의 모든 통신은보안 모듈을 통해 전달된다. 다른 실시예에서는, 보안 모듈은 동글, 업스트림 허브 또는 보안 장치 자체에 통합될 수 있다. 통상, 판독가능 또는 검증 가능 데이터를 생성하는 임의의 암호화 방식이 시스템의 보안에 이용될 수 있다. 일 실시예에서, 장치와 통신하는 보안 콤포넌트와 키 정보를 구비하는 보안 모듈을 모두 구비하는 키 쌍 시스템(key pair system)이 고려된다. 일 실시예에 따라, 암호화/복호화 성능을 초기화하기 위해서, 보안 콤포넌트와 보안 모듈은 파트너쉽 키를 공유한다. 두 장치들 사이에 공유될 이러한 파트너쉽 정보에 대한 방법중 하나는 보안 콤포넌트가 키 정보와 보안 모듈을 모두 안전하게 디스플레이한 후에 다운스트림 키보드 또는 다른 입력 장치로부터 입력을 받아들여 파트너쉽 키를 설정하는 것이다. 예를 들어, 보안 콤포넌트는 보안 모니터 또는 다른 출력 장치 상의 파트너쉽 키를 디스플레이할 수 있다. 보안 모듈이 키보드에 부착 또는 통합되면, 그 키보드는 파트너쉽 키을 입력하는데 사용될 수 있다. 다른 실시예에서, 공유 파트너쉽 키는 또한 장치와 보안 콤포넌트 양자로 암호화된 하드웨어일 수 있으며, 공장 인스톨 시간 동안(또는 설치 후 첫 부팅시에) 장치에 구워저서 보안 콤포넌트 소트트웨어에 인스톨될 수 있으며, 또는, 사용자에 의해 마우스로 선택되는 스크린 상의 버튼을 무작위로 배치함으로써 보안 모듈에 의해 표시되고 보안 콤포넌트에 입력할 수 있기 때문에, 침입자가 정보를 염탐하는 것을 방지할 수 있다. 일 실시예에서, 파트너쉽 키는 보안 콤포넌트로부터 보안 모듈로의 명령을 유효화할 뿐만 아니라 데이터를 암호화하고 복호화하는 키로서 사용된다.
본 발명의 일 실시예에서, 호스트(컴퓨터 110)는 장치에 명령을 내릴 수 있는 보안 콤포넌트로서 보안 소프트웨어를 포함한다. 이 실시예에서, 보안 소프트웨어는 의심이 가는 장치를 직접 제어하지는 않지만, 호스트의 가능한 비보안 영역과 비보안된 버스를 통해 장치와 통신하여야 한다. 예를 들어, 호스트가 보안 치리가 가능하면, 보안 소프트웨어는 호스트 상의 보안 프로세스로서 동작할 수 있다. 보안 소프트웨어로부터 발행된 명령은 그 명령이 호스트의 비보안된 영역으로 그리고 비보안된 버스를 통해 전송되기 전에 암호화 또는 서명되어야 한다. 이러한 방식으로, 데이터가 호스트 또는 버스의 취약 가능 영역을 통해 전달되더라도 보안이 달성될 수 있다.
도 3b에 도시된 시스템에서, 본 발명에 따라, 보안 콤포넌트는 보안 서버(350), 즉, 마우스(361)와 그래픽 태블릿(163)을 통해 사용자와의 보안 통신을 요구하는 신뢰(trusted) 컴퓨터이다. 비신뢰 컴퓨터(360)는 호스트 컨트롤러(167)를 포함하며, 비신뢰(trusted) 컴퓨터(360)와 서버 컴퓨터(350) 사이, 비신뢰 컴퓨터(360)와 모니터(191), 모니터(191)와 키보드(162), 및 키보드(162)와 동글(310) 사이에서의 접속 수만큼 공격에 취약할 수 있다. 그러나, 보안 서버(350)와 마우스(361) 사이, 그리고, 보안 서버(350)와 그래픽 태블릿(163) 사이에서 전송되는 정보는 본 발명에 의해 보안되기 때문에, 이들 접속과 중재자들의 취약성은 보안 서버(350)와 이들 장치들 간의 통신을 비보안되도록 하지는 않는다.
복호화/암호화를 구현하기 위해서, 다른 일실시예에서는, 세션 키가 보안 콤포넌트와 보안 모듈 사이의 각 세션에서 생성된다. 이는 보안을 향상시키며, 재생 공격(replay attack)에 대한 방어 수단이다. 암호화된 데이터가 기록되어 재생될수 있는 동안, 세션 키가 변경되면, 암호화된 데이터는 비인증된 것으로 식별된다. 세션은 보안 콤포넌트와 장치 또는 보안 모듈 사이에서 확립된다. 보안 콤포넌트와 보안 모듈은 일회성의(nonces) 알려진 데이터를 교환한다. 보안 콤포넌트와 보안 모듈 각가은 파트너쉽 키를 갖는 이들 두개의 일회성 해시 기능을 계산하는 동안, 암호화/복호화하는데 사용되는 세션 키가 된다. 일 실시예에서, 올바른 초기화는 암호화된 정보의 교환을 통해 확인된다.
본 발명은 USB 프로토콜을 기준으로 설명하였지만, 보다 넓은 이용가능성을 가지고 있으며 후술하는 바와 같이 USB에 유사한 임의의 프로토콜을 사용하여 실시될 수 있음이 이해될 것이다. 예를 들어, IEEE-1394 표준을 사용하여 어드레싱되는 장치에서 사용될 수 있다.
온 더 플라이 암호화에 대한 신호 전송
본 발명에 따라, 보안 콤포넌트가 보안 모듈을 넘어서는 종점에 어드레싱되는 IN 토큰을 호스트와 버스를 통해 발행할 때, 보안 모듈은 USB 어드레스와 IN 토큰이 어드레싱되는 종점이 보호되는지 즉 "파악되는지(seized)"를 판정하기 위해 점검한다. 만약 어드레스와 종점이 파악되지 않으면, 보안 모듈은 단순히 호스트로부터 종점으로의 임의의 정보와 종점으로부터 호스트로의 임의의 정보를 전달한다(USB 허브가 다운스트림 포트 이전에 업스트림으로부터의 데이터를 반복하거나 이에 대한 역인 방법으로). 그러나, 종점이 파악되면, 도 4에서 알 수 있는 바와 같이 보안 모듈은 보안 콤포넌트와 종점 사이를 중재한다.
도 4에 도시된 바와 같이, 데이터 요청은 단계 410에서 보안 콤포넌트로부터보안 모듈에 의해 수신된다. 어드레스와 데이터 요청이 향하는 종점이 파악되더라도, IN 토큰은 단계 420에서 파악된 종점으로 전송된다. 그 후, 보안 모듈은 단계 430에서 종점에 의해 리턴된 요청 데이터를 가로챈다. 이 데이터를 버스에 전달하는 대신, 보안 모듈은 단계 440에서 어떤 데이터도 이용가능하지 않음을 나타내는 신호를 호스트에 (표준 NAK 패킷을 사용하여) 전송하고 단계 450에서 보안 콤포넌트로부터의 제2 데이터 요청의 수신을 대기한다. 한편, 보안 모듈은 단계 460에서 요청 데이터를 암호화한다. USB 상의 모든 인터럽트 종점과 마찬가지로, 호스트 시스템은 추후 IN 명령을 재시도한다. 암호화가 완료되고 제2 데이터 요청이 수신되었으면, 보안 모듈은 단계 470에서 제2 데이터 요청에 대한 응답으로 암호화된 데이터를 보안 콤포넌트에 전송한다. 제2 데이터 요청은 의심이 가는 장치 주소에는 손상없이 전송되지 않는다. 보안 장치는 이러한 비트들을 수신하고 있으면 비트를 계속 재송신하여야 하므로, 이들 비트가 의심가는 주소와 종점으로 재송신된 후에야 다음 IN 토큰이 파악된 주소에 전송되는 것을 판단할 수 있다. 따라서, 보안 장치는 동글이 이 조건을 탐지할 때, 나머지 패킷을 손상시켜 이를 "스매싱"되도록 하여야 한다. 따라서, USB 종점은 유효 IN 토큰을 수신하지 않았으므로 새로운 패킷을 리턴하지 않고, 그 대신, 동글이 호스트에 대한 암호화된 패킷을 사용하여 장치에 응답할 수 있다. 그 데이터에 대하여 보안 콤포넌트로부터 긍정응답이 수신되면, 단계 480에서 긍정응답이 종점에 전달된다.
이 온 더 플라이 암호화가 보안 및 비보안 영역을 갖는 호스트 상에 구현되면, 데이터를 암호화 또는 서명하는데 사용되는 정보는 보안 영역 내에서 호스트에의해 유지되어야 하며, 보안 모듈은 그 데이터를 복호화 또는 검증하는데 요구되는 정보를 포함하여야 한다. 공유 파트너쉽 키가 암호화 정보 및 검증 정보 양자에 사용되는 경우, 이 파트너쉽 키는 호스트에 의해 보안 영역과 보안 모듈에 저장된다.
USB 시스템 상에서 이를 구현하기 위해서, 데이터 요청이 IN 토큰이면, 어떤 데이터도 이용가능하지 않음을 나타내는 신호는 NAK 신호이어야 하며, 응답은 ACK 신호이다.
단계 430에서, 종점이 에러 상태에 있음을 나타내는 신호(예를 들어, USB, STALL 신호)를 보안 모듈이 수신하면, 그 신호는 버스에 전달된다.
온 더 플라이 복호화에 대한 신호 전송
상술한 일 실시예에서, (보안 모듈에 의해) 보안된 장치에 대한 모든 설정 명령은 상술한 바와 같이 불허되고 스매싱된다. 이는 보안 컴퓨터가 장치에 대한 적법한 설정 명령을 전송하기를 원하는 경우에는 문제를 야기한다. 이러한 이유로, 보안 모듈을 통해 장치로의 특정 설정 명령을 허용하는 메커니즘이 개발되어야 한다.
본 발명에 따르면, 보안된 종점에 명령을 전송하는 유효 설정 명령이 우선 "allow" 명령에서 보안 콤포넌트에 의해 보안 모듈에 전송된다. 이 명령은 다른 모든 명령이 신뢰 소프트웨어로부터 보안 모듈에 전송되는 것과 동일한 방식으로 유효화될 수 있다. 도 5에 도시된 바와 같이, 허용(allow) 명령은 단계 510에서 보안 콤포넌트로부터 보안 모듈에 의해 수신된다. 그 후, 단계 520에서 암호화된설정 명령을 포함하는, 보안 콤포넌트로부터 전송된 allow 명령이 보안 모듈에 의해 수신된다. 단계 530에서 암호화된 설정 명령을 검증하려는 시도가 수행된다.
다른 실시예에서, 검증은 설정 명령의 복호화를 포함하며, 이는 설정 명령의 국부적으로 복호화된 버전을 생성한다. 일 실시예에서, 보안 모듈에 의해 수신되는 allow 명령 데이터는 설정 명령의 비암호화된 버전을 포함한다. 검증을 위해 보안 모듈은 이 비암호화된 버전과 국부적으로 비암호화된 버전을 비교한다.
또다른 실시예에서, 암호화된 설정 명령은 설정 명령의 서명된(signed) 버전이고, 검증에서, 서명은 설정 명령이 공유 키를 사용하여 서명되었음을 보장하도록 점검된다.
검증이 성공적이지 않으면, 설정 명령은 종점에 전송되지 않을 수 있다. 검증이 성공적이면, 보안 모듈은 단계 540에서 보안 콤포넌트로부터 설정 명령의 수신을 대기한다. 설정 명령이 이전에 검증된 설정 명령(단계 530)과 매칭하면, 다음 데이터 단계와 더불어 명령이 단계 570에서 종점에 전송된다. 설정 명령이 매칭하지 않으면, 이는 전송되지 않는다. 그 대신, 보안 모듈은 설정 명령의 매칭을 대기한다.
결론
이러한 방식으로, USB 프로토콜을 여전히 사용하면서, 암호화된 데이터와 명령이 보안 콤포넌트로부터 종점으로 그리고 종점으로부터 보안 콤포넌트로 전달될 수 있고, 다른 종류의 재프로그래밍 또는 재구성으로부터 장치의 보안을 확보한다.
상술한 바와 같이, 본 발명의 예시적인 실시예가 다양한 컴퓨팅 장치와 네트워크 아키텍쳐에 대하여 설명되었지만, 기본 개념은 USB 또는 유사 통신의 암호화/복호화를 구현하는 것이 바람직한 임의의 컴퓨팅 장치 또는 시스템에 적용될 수 있다. 따라서, 본 발명에 따른 기술은 다양한 애플리케이션 및 장치에 적용될 수 있다.
여기서 설명된 다양한 기술은 하드웨어 또는 소프트웨어, 혹은 적절한 경우 양자의 조합으로 구현될 수 있다. 따라서, 본 발명의 방법 및 장치 또는 그의 특정 태양 및 일부는 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 임의의 다른 머신 판독가능 저장 매체와 같은 유형의 매체에서 구현되는 프로그램 코드의 형태(즉, 명령)를 취할 수 있으며, 여기서, 프로그램이 컴퓨터와 같은 머신에 의해 로딩되고 실행될 때, 그 머신은 본 발명을 실시하는 장치가 된다. 프로그램가능한 컴퓨터 상의 프로그램 코드 실행의 경우에, 통상, 컴퓨팅 장치는 프로세서, 상기 프로세서에 의해 판독가능한 스토리지 매체(휘발성 및 비휘발성 및/또는 스토리지 요소를 포함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함할 수 있다. 본 발명의 신호 처리 서비스를 예를 들어 데이터 처리 API 등의 사용을 통하여 사용할 수 있는 하나 이상의 프로그램은, 컴퓨터 시스템과 통신하는 고차원 절차 또는 객체 지향 프로그래밍 언어에서 구현되는 것이 바람직하다. 그러나, 프로그램(들)은 원하는 경우, 어셈블리 또는 기계어로 구현될 수도 있다. 어떠한 경우이든, 그 언어는 컴파일되고 인터프리트되는 언어일 수 있으며, 하드웨어 구현과 결합될 수 있다.
본 발명의 방법 및 장치는 또한 전기선 또는 케이블링을 통해, 광섬유를 통해 또는 임의의 다른 형태의 전송 등과 같이 어떤 전송 매체를 통해 실시될 수 있으며, 여기서, 프로그램 코드가 EEPROM, 게이트 어레이, 프로그래머블 로직 디바이스(PLD), 클라이언트 컴퓨터 등, 또는 상술한 실시예에서 설명된 바와 같은 신호 처리를 갖는 수신 머신 등의 머신에 의해 수신되고 로딩되어 실행되는 경우, 본 발명을 실시하기 위한 장치가 된다. 범용 프로세서 상에서 구현되는 경우, 프로그램 코드는 본 발명의 기능을 호출하도록 동작하는 고유 장치를 제공하도록 프로세서와 결합된다. 또한, 본 발명과 관련하여 사용되는 임의의 스토리지 기술이 항상 하드웨어 및 소프트웨어의 조합일 수 있다.
본 발명은 여러 도면의 바람직한 실시예에 관련하여 설명되었지만, 다른 유사한 실시예가 사용될 수 있으며, 본 발명으로부터 벗어남이 없이 본 발명의 동일 기능을 수행하기 위한 상술한 구현에 대한 변형 또는 추가가 행해질 수 있다. 예를 들어, 본 발명의 예시적인 네트워크 환경은 피어 대 피어 네트워크화된 환경과 같은 네트워크화된 환경의 경우에 대하여 설명하였지만, 당업자는 본 발명은 이에 국한되지 않으며 본 발명에서 설명된 바와 같은 방법들이 유무선에 관계없이 게임 콘솔, 핸드헬드 컴퓨터, 휴대용 컴퓨터 등과 같은 임의의 컴퓨팅 장치 또는 환경에 적용할 수 있으며, 통신 네트워크를 통해 접속되고 그 네트워크와 상호작용하는 임의 개수의 이러한 컴퓨팅 장치에 적용될 수 있다. 더욱이, 특히, 네트워크화된 무선 장치의 개수가 계속 늘어남에 따라 핸드헬드 장치 운영 체제 및 다른 애플리케이션 특정 운영 체제를 포함하는 다양한 컴퓨터 플랫폼이 고려될 수 있다. 또한, 본 발명은 복수의 프로세싱 칩 또는 장치에서 또는 이를 통해 구현될 수 있으며,스토리지는 복수의 장치에 대하여 유사하게 영향받을 수 있다. 따라서, 본 발명은 임의의 단일 실시예에 국한되는 것이 아니라 첨부된 청구 범위에 따른 폭과 범위를 갖는 것으로 간주되어야 한다.
상술한 본 발명에 따르면, USB 프로토콜을 여전히 사용하면서, 암호화된 데이터와 명령이 보안 콤포넌트로부터 종점으로 그리고 종점으로부터 보안 콤포넌트로 전달될 수 있고, 다른 종류의 재프로그래밍 또는 재구성으로부터 장치의 보안을 확보한다.

Claims (63)

  1. 장치 및 보안 콤포넌트 간의 데이터 전송을 중재하는 방법에 있어서,
    상기 데이터 요청을 수신하는 단계;
    제1 데이터 요청의 상기 수신 후에, 상기 제1 데이터 요청을 상기 장치에 전달하는 단계;
    상기 제1 데이터 요청의 상기 장치로의 상기 전달 후에, 상기 장치로부터 데이터를 수신하는 단계;
    상기 제1 데이터 요청의 상기 수신 후에, 데이터가 이용가능하지 않음을 나타내는 신호를 상기 보안 콤포넌트에 전송하는 단계;
    상기 장치로부터의 상기 데이터의 상기 수신 후에, 상기 데이터를 암호화하는 단계;
    상기 보안 콤포넌트로부터 상기 장치로의 제2 데이터 요청을 가로채는 단계; 및
    상기 제2 데이터 요청 후에, 상기 암호화된 데이터를 상기 보안 콤포넌트에 전송하는 단계를 포함하는 데이터 전송 중재 방법.
  2. 제1항에 있어서,
    상기 암호화는 키를 사용하여 수행되며, 상기 보안 콤포넌트는 복호화를 위해 상기 키의 복사본을 포함하는 보안 부분을 포함하는 데이터 전송 중재 방법.
  3. 제1항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 데이터 요청은 USB IN 토큰이고, 상기 데이터는 USB 데이터이며, 어떤 데이터도 이용가능하지 않음을 나타내는 상기 보안 콤포넌트로의 상기 신호는 NAK 신호인 데이터 전송 중재 방법.
  4. 제1항에 있어서,
    상기 보안 콤포넌트로의 상기 암호화된 데이터의 상기 전송 후에, 상기 보안 콤포넌트로부터 긍정응답(acknowledgement)을 수신하는 단계;
    상기 보안 콤포넌트로부터의 상기 긍정응답의 상기 수신 후에, 상기 장치에 상기 긍정응답을 전송하는 단계를 더 포함하는 데이터 전송 중재 방법.
  5. 제4항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 긍정응답은 ACK 신호인 데이터 전송 중재 방법.
  6. 제1항에 있어서,
    상기 장치로부터 수신된 상기 데이터는 상기 장치가 에러 상태에 있음을 나타내는 신호를 포함하고, 상기 장치가 에러 상태에 있음을 나타내는 데이터가 상기장치로부터 수신된 후에, 어떤 데이터도 이용가능하지 않음을 나태는 신호를 상기 보안 콤포넌트에 전송하는 것은 상기 장치가 에러 상태에 있음을 나타내는 신호인 데이터 전송 중재 방법.
  7. 제6항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 장치가 에러 상태임을 나타내는 상기 신호는 STALL 신호인 데이터 전송 중재 방법.
  8. USB 호스트에 동작가능하게 접속된 보안 콤포넌트 및 USB 장치 사이에서 데이터 전송을 중재하는 방법에 있어서,
    상기 보안 콤포넌트로부터의 제1 IN 토큰에 응답하여 상기 USB 장치로부터 데이터를 가로채는 단계;
    상기 데이터를 암호화하는 단계;
    상기 USB 장치에 대한 상기 보안 콤포넌트에 의해 전송되는 제2 IN 토큰을 가로채는 단계; 및
    상기 암호화된 데이터를 상기 보안 콤포넌트에 전송하는 단계를 포함하는 데이터 전송 중재 방법.
  9. 제8항에 있어서,
    상기 USB 장치로부터 상기 데이터를 가로챈 후에, 상기 보안 콤포넌트에 NAK 신호를 전송하는 단계를 더 포함하는 데이터 전송 중재 방법.
  10. 제8항에 있어서,
    상기 제1 IN 토큰을 스매싱(smashing)하는 단계를 더 포함하는 데이터 전송 중재 방법.
  11. 보안 콤포넌트와 장치 사이에서 데이터를 중재하는 방법에 있어서,
    상기 장치에 대한 제1 명령을 포함하는 데이터를 수신하는 단계;
    상기 제1 명령의 보안을 검증하는 단계;
    상기 장치의 제2 명령을 가로채는 단계;
    상기 제1 명령과 상기 제2 명령을 비교하는 단계; 및
    상기 제1 명령과 상기 제2 명령이 동일하면, 상기 제2 명령을 상기 장치에 전송하는 단계를 포함하는 데이터 전송 중재 방법.
  12. 제11항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 제1 명령과 상기 제2 명령은 설정 명령을 포함하는 데이터 전송 중재 방법.
  13. 제11항에 있어서,
    상기 장치에 상기 제2 명령 데이터의 상기 전송 후에, 상기 장치로부터의 긍정응답을 수신하는 단계; 및
    상기 보안 콤포넌트로의 상기 긍정응답의 상기 수신 후에, 상기 장치에 상기 긍정응답을 전송하는 단계를 더 포함하는 데이터 전송 중재 방법.
  14. 제13항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 긍정응답은 ACK 신호를 포함하는 데이터 전송 중재 방법.
  15. 제11항에 있어서,
    상기 제1 명령의 상기 검증은, 상기 제1 명령의 암호화된 복사본과 상기 제1 명령의 비암호화된 복사본을 비교하는 단계를 포함하는 데이터 전송 중재 방법.
  16. 제11항에 있어서,
    상기 제1 명령의 상기 검증은,
    상기 제1 명령의 서명된(signed) 복사본 상에 서명을 검증하는 단계를 포함하는 데이터 전송 중재 방법.
  17. USB 장치에서 USB 호스트에 동작가능하게 접속된 보안 콤포넌트로부터의SETUP 요청을 안전하게 처리하는 방법에 있어서,
    보안 콤포넌트로부터 ALLOW 명령을 수신하는 단계;
    상기 ALLOW 명령의 상기 수신 후에, 명령 데이터를 수신하는 단계;
    상기 명령 데이터를 검증하는 단계;
    상기 USB 장치에 대한 SETUP 명령 데이터를 포함하는 SETUP 명령을 수신하는 단계;
    상기 SETUP 명령 데이터와 상기 명령 데이터를 비교하는 단계; 및
    상기 SETUP 명령 데이터가 상기 명령 데이터와 동일하면, 상기 SETUP 명령을 상기 USB 장치에 전송하는 단계를 포함하는 방법.
  18. 제17항에 있어서,
    상기 명령 데이터의 상기 수신 후에, 상기 보안 콤포넌트에 ACK 신호를 전송하는 단계를 더 포함하는 방법.
  19. 제17항에 있어서,
    상기 명령 데이터의 상기 전송 후에, 상기 USB 장치로부터 ACK 신호를 수신하는 단계;
    상기 장치로부터 상기 ACK 신호의 상기 수신 후에, 상기 ACK 신호를 상기 보안 콤포넌트에 전송하는 단계를 더 포함하는 방법.
  20. 장치와 보안 콤포넌트 사이에서 데이터 전송을 중재하는 보안 모듈에 있어서,
    상기 데이터 요청을 수신하는 수단;
    제1 데이터 요청의 상기 수신 후에, 상기 제1 데이터 요청을 상기 장치에 전달하는 수단;
    상기 장치로의 상기 제1 데이터 요청의 상기 전달 후에, 상기 장치로부터 상기 데이터를 수신하는 수단;
    상기 제1 데이터 요청의 상기 수신 후에, 어떤 데이터도 이용가능하지 않음을 나타내는 신호를 상기 보안 콤포넌트에 전송하는 수단;
    상기 장치로부터 상기 데이터의 상기 수신 후에, 상기 데이터를 암호화하는 수단;
    상기 보안 콤포넌트로부터 상기 장치로의 제2 보안 요청을 가로채는 수단; 및
    상기 제2 데이터 요청 후에, 상기 보안 콤포넌트에 상기 암호화된 데이터를 전송하는 수단을 포함하는 보안 모듈.
  21. 제20항에 있어서,
    상기 장치는 상기 보안 모듈을 포함하는 보안 모듈.
  22. 제20항에 있어서,
    상기 보안 모듈은 허브를 포함하는 보안 모듈.
  23. 제20항에 있어서,
    동글(dongle)은 상기 보안 모듈을 포함하고, 상기 동글은 상기 보안 콤포넌트에 동작가능하게 접속되는 보안 모듈.
  24. 제20항에 있어서,
    상기 암호화는 키를 사용하여 수행되고, 상기 보안 모듈은 상기 키를 저장하는 수단을 포함하며, 상기 보안 콤포넌트는 복호화를 위해 상기 키의 복사본을 포함하는 보안 부분을 포함하는 보안 모듈.
  25. 제20항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 데이터 요청은 USB IN 토큰이고, 상기 데이터는 USB 데이터이며, 어떤 데이터도 이용가능하지 않음을 나타내는 상기 보안 콤포넌트로의 신호는 NAK 신호인 보안 모듈.
  26. 제20항에 있어서,
    상기 보안 콤포넌트로의 상기 암호화된 데이터의 상기 전송 후에, 상기 보안 콤포넌트로부터 긍정응답을 수신하는 수단;
    상기 보안 콤포넌트로부터 상기 긍정응답의 상기 수신 후에, 상기 장치에 상기 긍정응답을 전송하는 수단을 더 포함하는 보안 모듈.
  27. 제26항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 긍정응답은 ACK 신호인 보안 모듈.
  28. 제20항에 있어서,
    상기 장치로부터 수신된 상기 데이터는 상기 장치가 에러 상태에 있음을 나타내는 신호를 포함하고, 상기 장치가 에러 상태에 있음을 나타내는 데이터가 상기 장치로부터 수신된 후에, 어떤 데이터도 이용가능하지 않음을 나타내는 신호를 상기 보안 콤포넌트에 전송하는 것은 상기 장치가 에러 상태임을 나타내는 신호인 보안 모듈.
  29. 제28항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 장치가 에러 상태임을 나타내는 상기 신호는 STALL 신호인 보안 모듈.
  30. 제20항에 있어서,
    상기 보안 콤포넌트는 제1 컴퓨터 시스템에 위치하고, 상기 장치는 제2 컴퓨터 시스템에 위치하며, 상기 제1 및 제2 컴퓨터 시스템은 동작가능하게 접속되며, 상기 동작가능한 접속은 네트워크, 로컬 버스, 및 USB 버스 중의 적어도 하나를 포함하는 보안 모듈.
  31. 제20항에 있어서,
    상기 보안 콤포넌트는 적어도 하나의 보안 프로세스를 실행하는 보안 소프트웨어 콤포넌트를 포함하고, 상기 데이터 전송은 상기 적어도 하나의 보안 프로세서 중의 하나와 상기 장치 사이에서 발생하는 보안 모듈.
  32. USB 호스트에 동작가능하게 접속된 보안 컴퓨터와 USB 장치 사이에서 데이터 전송을 중재하는 보안 모듈에 있어서,
    상기 보안 콤포넌트로부터의 제1 IN 토큰에 응답하여 상기 USB 장치로부터의 데이터를 가로채는 수단;
    상기 데이터를 암호화하는 수단;
    상기 USB 장치에 대한 상기 보안 콤포넌트에 의해 전송되는 제2 IN 토큰을 가로채는 수단; 및
    상기 암호화된 데이터를 상기 보안 콤포넌트에 전송하는 수단을 포함하는 보안 모듈.
  33. 제32항에 있어서,
    상기 USB 장치로부터 상기 데이터를 가로챈 후에, 상기 보안 콤포넌트에 NAK 신호를 전송하는 수단을 더 포함하는 보안 모듈.
  34. 제32항에 있어서,
    상기 제1 IN 토큰을 스매싱하는 수단을 더 포함하는 보안 모듈.
  35. 보안 콤포넌트와 장치 사이에서 데이터 전송을 중재하는 보안 모듈에 있어서,
    상기 장치 상에서 실행될 제1 명령을 포함하는 데이터를 수신하는 수단;
    상기 제1 명령의 보안을 검증하는 수단;
    상기 장치로 향하는 제2 명령을 가로채는 수단;
    상기 제1 명령을 상기 제2 명령과 비교하는 수단; 및
    상기 제1 명령이 상기 제2 명령과 동일하면, 상기 제2 명령 데이터를 상기 장치에 전송하는 수단을 포함하는 보안 모듈.
  36. 제35항에 있어서,
    상기 장치는 상기 보안 모듈을 포함하는 보안 모듈.
  37. 제35항에 있어서,
    상기 보안 모듈은 허브를 포함하는 보안 모듈.
  38. 제35항에 있어서,
    동글은 상기 보안 모듈을 포함하고, 상기 동글은 상기 보안 콤포넌트에 동작가능하게 접속되는 보안 모듈.
  39. 제38항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 제1 명령과 상기 제2 명령은 설정 명령을 포함하는 보안 모듈.
  40. 제38항에 있어서,
    상기 장치로의 상기 제2 명령의 상기 전송 후에, 상기 장치로부터 긍정응답을 수신하는 수단;
    상기 보안 콤포넌트로의 상기 긍정응답의 상기 수신 후에, 상기 장치에 상기 긍정응답을 전송하는 수단을 더 포함하는 보안 모듈.
  41. 제40항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 긍정응답은 ACK 신호를 포함하는 보안 모듈.
  42. 제38항에 있어서,
    상기 제1 명령의 상기 검증은,
    상기 제1 명령의 암호화된 복사본을 상기 제1 명령의 비암호화된 복사본과 비교하는 단계를 포함하는 보안 모듈.
  43. USB 장치에서 USB 호스트에 동작가능하게 접속된 보안 콤포넌트로부터 SETUP 요청을 안전하게 처리하는 보안 모듈에 있어서,
    보안 콤포넌트로부터 ALLOW 명령을 수신하는 수단;
    상기 ALLOW 명령의 상기 수신 후에, 명령 데이터를 수신하는 수단;
    상기 명령 데이터를 검증하는 수단;
    상기 USB 장치에 대한 SETUP 명령 데이터를 포함하는 SETUP 명령을 수신하는 수단;
    상기 SETUP 명령 데이터와 상기 명령 데이터를 비교하는 수단; 및
    상기 SETUP 명령 데이터가 상기 명령 데이터와 동일하면, 상기 SETUP 명령을 상기 USB 장치에 전송하는 수단을 포함하는 보안 모듈.
  44. 제43항에 있어서,
    상기 명령 데이터의 상기 수신 후에, 상기 보안 콤포넌트에 ACK 신호를 전송하는 수단을 더 포함하는 보안 모듈.
  45. 제43항에 있어서,
    상기 명령 데이터의 상기 전송 후에, 상기 USB 장치로부터 ACK 신호를 수신하는 수단;
    상기 장치로부터 상기 ACK 신호의 상기 수신 후에, 상기 보안 콤포넌트에 상기 ACK 신호를 전송하는 수단을 더 포함하는 보안 모듈.
  46. 장치와 보안 콤포넌트 사이에서 데이터 전송을 중재하는 컴퓨터 판독가능 매체에 있어서,
    상기 데이터 요청을 수신하는 단계;
    제1 데이터 요청의 상기 수신 후에, 상기 장치에 상기 제1 데이터 요청을 전달하는 단계;
    상기 장치로의 상기 제1 데이터 요청의 상기 전달 후에, 상기 장치로부터 데이터를 수신하는 단계;
    상기 제1 데이터 요청의 상기 수신 후에, 어떤 데이터도 이용가능하지 않음을 나타내는 신호를 상기 보안 콤포넌트에 전송하는 단계;
    상기 장치로부터의 상기 데이터의 상기 수신 후에, 상기 데이터를 암호화하는 단계;
    상기 보안 콤포넌트로부터 상기 장치로의 제2 데이터 요청을 가로채는 단계; 및
    상기 제2 데이터 요청 후에, 상기 암호화된 데이터를 상기 보안 콤포넌트에전송하는 단계
    를 포함하는 단계들을, 하나 이상의 프로세서에 의해 실행될 때, 구현하는 컴퓨터 판독가능 명령을 갖는 컴퓨터 판독가능 매체.
  47. 제46항에 있어서,
    상기 암호화는 키를 사용하여 수행되고, 상기 보안 콤포넌트는 복호화를 위해 상기 키의 복사본을 포함하는 보안 부분을 포함하는 컴퓨터 판독가능 매체.
  48. 제46항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 데이터 요청은 USB IN 토큰이고, 상기 데이터는 USB 데이터이며, 어떤 데이터도 이용가능하지 않음을 나타내는 상기 보안 콤포넌트로의 상기 신호는 NAK 신호인 컴퓨터 판독가능 매체.
  49. 제46항에 있어서,
    상기 단계들은,
    상기 암호화된 데이터의 상기 보안 콤포넌트로의 전송 후에, 상기 보안 콤포넌트로부터 긍정응답을 수신하는 단계;
    상기 보안 콤포넌트로부터 상기 긍정응답의 상기 수신 후에, 상기 장치에 상기 긍정응답을 전송하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  50. 제49항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 긍정응답은 ACK 신호인 컴퓨터 판독가능 매체.
  51. 제46항에 있어서,
    상기 장치로부터 수신된 상기 데이터는 상기 장치가 에러 상태에 있음을 나타내는 신호를 포함할 수 있으며, 상기 장치가 에러 상태임을 나타내는 데이터가 상기 장치로부터 수신된 후에, 어떤 데이터도 이용가능하지 않음을 나타내는 신호를 상기 보안 콤포넌트에 전송하는 것은 상기 장치가 에러 상태에 있음을 나타내는 신호인 컴퓨터 판독가능 매체.
  52. 제51항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 장치가 에러 상태에 있음을 나타내는 신호는 STALL 신호인 컴퓨터 판독가능 매체.
  53. USB 호스트에 동작가능하게 접속된 보안 컴퓨터 및 USB 장치 사이에서 데이터 전송을 중재하는 컴퓨터 판독가능 매체에 있어서,
    상기 보안 콤포넌트로부터의 제1 IN 토큰에 응답하여 상기 USB 장치로부터데이터를 가로채는 단계;
    상기 데이터를 암호화하는 단계;
    상기 USB 장치에 대하여 상기 보안 콤포넌트에 의해 전송되는 제2 IN 토큰을 가로채는 단계; 및
    상기 보안 콤포넌트에 상기 암호화된 데이터를 전송하는 단계
    를 포함하는 단계들을, 하나 이상의 프로세서에 의해 실행될 때, 구현하는 컴퓨터 판독가능 명령을 갖는 컴퓨터 판독가능 매체.
  54. 제50항에 있어서,
    상기 단계들은,
    상기 USB 장치로부터 상기 데이터를 가로챈 후에, 상기 보안 콤포넌트에 NAK 신호를 전송하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  55. 제50항에 있어서,
    상기 단계들은,
    상기 제1 IN 토큰을 스매싱하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  56. 보안 콤포넌트와 장치 사이의 데이터 전송을 중재하는 컴퓨터 판독가능 매체에 있어서,
    상기 장치 상에서 실행될 제1 명령을 포함하는 데이터를 수신하는 단계;
    상기 제1 명령의 보안을 검증하는 단계;
    상기 장치로 향하는 제2 명령을 가로채는 단계;
    상기 제1 명령을 상기 제2 명령과 비교하는 단계;
    상기 제1 명령이 상기 제2 명령과 동일하면, 상기 제2 명령을 상기 장치에 전송하는 단계
    들을 포함하는 단계들을, 하나 이상의 프로세서에 의해 실행될 때, 구현하는 컴퓨터 판독가능 명령을 갖는 컴퓨터 판독가능 매체.
  57. 제56항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 제1 명령 및 상기 제2 명령은 설정 명령을 포함하는 컴퓨터 판독가능 매체.
  58. 제56항에 있어서,
    상기 단계들은,
    상기 제2 명령 데이터의 상기 장치로의 전송 후에, 상기 장치로부터 긍정응답을 수신하는 단계;
    상기 보안 콤포넌트에 대한 상기 긍정응답의 수신 후에, 상기 긍정응답을 상기 장치에 전송하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  59. 제58항에 있어서,
    상기 장치는 USB 장치이고, 상기 보안 콤포넌트는 USB 호스트에 동작가능하게 접속되며, 상기 긍정응답은 ACK 신호를 포함하는 컴퓨터 판독가능 매체.
  60. 제56항에 있어서,
    상기 제1 명령의 상기 검증은,
    상기 제1 명령의 암호화된 복사본과 상기 제1 명령의 비암호화된 복사본을 비교하는 단계를 포함하는 컴퓨터 판독가능 매체.
  61. USB 장치에서 USB 호스트에 동작가능하게 접속된 보안 콤포넌트로부터의 SETUP 요청을 안전하게 처리하는 컴퓨터 판독가능 매체에 있어서,
    보안 콤포넌트로부터 ALLOW 명령을 수신하는 단계;
    상기 ALLOW 명령의 상기 수신 후에, 명령 데이터를 수신하는 단계;
    상기 명령 데이터를 검증하는 단계;
    상기 USB 장치에 대한 SETUP 명령 데이터를 포함하는 SETUP 명령을 수신하는 단계;
    상기 SETUP 명령 데이터와 상기 명령 데이터를 비교하는 단계; 및
    상기 SETUP 명령 데이터가 상기 명령 데이터와 동일하면, 상기 SETUP 명령을 상기 USB 장치에 전송하는 단계
    를 포함하는 단계들을, 하나 이상의 프로세서에 의해 실행될 때, 구현하는컴퓨터 판독가능 명령을 갖는 컴퓨터 판독가능 매체.
  62. 제61항에 있어서,
    상기 단계들은,
    상기 명령 데이터의 상기 수신 후에, 상기 보안 콤포넌트에 ACK 신호를 전송하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  63. 제61항에 있어서,
    상기 단계들은,
    상기 명령 데이터의 상기 전송 후에, 상기 USB 장치로부터 ACK 신호를 수신하는 단계;
    상기 장치로부터 상기 ACK 신호의 상기 수신 후에, 상기 ACK 신호를 상기 보안 콤포넌트에 전송하는 단계를 포함하는 컴퓨터 판독가능 매체.
KR1020040030664A 2003-05-02 2004-04-30 온 더 플라이 암호화/복호화에 대한 usb 데이터의 동적대체 KR20040094377A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/428,251 2003-05-02
US10/428,251 US7469343B2 (en) 2003-05-02 2003-05-02 Dynamic substitution of USB data for on-the-fly encryption/decryption

Publications (1)

Publication Number Publication Date
KR20040094377A true KR20040094377A (ko) 2004-11-09

Family

ID=32990472

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040030664A KR20040094377A (ko) 2003-05-02 2004-04-30 온 더 플라이 암호화/복호화에 대한 usb 데이터의 동적대체

Country Status (10)

Country Link
US (1) US7469343B2 (ko)
EP (1) EP1473617A3 (ko)
JP (1) JP2004362552A (ko)
KR (1) KR20040094377A (ko)
CN (1) CN1551003A (ko)
AU (1) AU2004201804A1 (ko)
BR (1) BRPI0401686A (ko)
CA (1) CA2465246A1 (ko)
MX (1) MXPA04004143A (ko)
RU (1) RU2352986C2 (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004295358A (ja) * 2003-03-26 2004-10-21 Internatl Business Mach Corp <Ibm> 情報処理装置、その暗号処理システム及び外部記憶装置の制御方法
JP3632695B2 (ja) * 2003-05-06 2005-03-23 セイコーエプソン株式会社 データ転送制御装置、電子機器及びデータ転送制御方法
US7712131B1 (en) 2005-02-09 2010-05-04 David Lethe Method and apparatus for storage and use of diagnostic software using removeable secure solid-state memory
US20060200612A1 (en) * 2005-03-02 2006-09-07 Laurence Hamid Method and protocol for transmitting extended commands to USB devices
US7886353B2 (en) * 2005-03-25 2011-02-08 Microsoft Corporation Accessing a USB host controller security extension using a HCD proxy
US7761618B2 (en) * 2005-03-25 2010-07-20 Microsoft Corporation Using a USB host controller security extension for controlling changes in and auditing USB topology
US7760908B2 (en) * 2005-03-31 2010-07-20 Honeywell International Inc. Event packaged video sequence
US7461246B2 (en) * 2005-05-02 2008-12-02 Nokia Corporation First-time startup device warranty user interface notification
US7945788B2 (en) * 2005-05-03 2011-05-17 Strong Bear L.L.C. Removable drive with data encryption
US20070071404A1 (en) * 2005-09-29 2007-03-29 Honeywell International Inc. Controlled video event presentation
US8135958B2 (en) 2005-11-22 2012-03-13 International Business Machines Corporation Method, system, and apparatus for dynamically validating a data encryption operation
DE102005061212A1 (de) * 2005-12-21 2007-07-05 Siemens Ag Verfahren zum Betrieb eines Automatisierungssystems
EP2119235A4 (en) * 2007-02-02 2011-12-21 Honeywell Int Inc SYSTEMS AND METHODS FOR MANAGING LIVE VIDEO DATA
US8296240B2 (en) 2007-03-22 2012-10-23 Sony Corporation Digital rights management dongle
JP2008244558A (ja) * 2007-03-26 2008-10-09 Sharp Corp 電力線通信システムおよび電力線通信装置
US20090049307A1 (en) * 2007-08-13 2009-02-19 Authennex, Inc. System and Method for Providing a Multifunction Computer Security USB Token Device
EP2338244B1 (en) * 2008-09-12 2021-06-16 Assa Abloy Ab Use of a secure element for writing to and reading from machine readable credentials
JP5628831B2 (ja) * 2008-12-24 2014-11-19 ザ コモンウェルス オブ オーストラリア デジタルビデオガード
WO2010099575A1 (en) 2009-03-04 2010-09-10 Honeywell International Inc. Systems and methods for managing video data
EP2406749B1 (en) 2009-03-13 2018-06-13 Assa Abloy Ab Transfer device for sensitive material such as a cryptographic key
EP2228746A1 (en) 2009-03-13 2010-09-15 Assa Abloy Ab Realization of access control conditions as boolean expressions in credential authentications
US9032058B2 (en) 2009-03-13 2015-05-12 Assa Abloy Ab Use of SNMP for management of small footprint devices
US8275961B2 (en) * 2009-05-28 2012-09-25 Hewlett-Packard Development Company, L.P. Secure delivery of digital media via flash device
US8806190B1 (en) 2010-04-19 2014-08-12 Amaani Munshi Method of transmission of encrypted documents from an email application
CN101894087A (zh) * 2010-07-08 2010-11-24 东南大学 具有usb接口的移动可信计算模块
KR101064143B1 (ko) * 2010-08-20 2011-09-15 주식회사 파수닷컴 Drm 환경에서의 클립보드 보호 시스템 및 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
WO2012087258A1 (en) * 2010-12-22 2012-06-28 Tamara Elektronik Muhendislik Insaat Musavirlik Sanayi Ve Ticaret Limited Sirketi Usb memory encryption device
US8566934B2 (en) * 2011-01-21 2013-10-22 Gigavation, Inc. Apparatus and method for enhancing security of data on a host computing device and a peripheral device
US20120237024A1 (en) * 2011-03-18 2012-09-20 Wei-Ti Liu Security System Using Physical Key for Cryptographic Processes
GB2506803B (en) 2011-08-10 2020-07-01 Srivastava Gita Apparatus and method for enhancing security of data on a host computing device and a peripheral device
DE102012003009A1 (de) 2012-02-15 2013-08-22 Giesecke & Devrient Gmbh Übertragen von Datenströmen zu und von einem Sicherheitsmodul
US9654604B2 (en) * 2012-11-22 2017-05-16 Intel Corporation Apparatus, system and method of controlling data flow over a communication network using a transfer response
US9232176B2 (en) 2013-03-04 2016-01-05 Janus Technologies, Inc. Method and apparatus for securing computer video and audio subsystems
US9363836B2 (en) * 2013-04-01 2016-06-07 Silver Spring Networks, Inc. Secure management of radio transmissions in an endpoint device of a network
US9424443B2 (en) 2013-08-20 2016-08-23 Janus Technologies, Inc. Method and apparatus for securing computer mass storage data
US9076003B2 (en) 2013-08-20 2015-07-07 Janus Technologies, Inc. Method and apparatus for transparently encrypting and decrypting computer interface data
US9215250B2 (en) 2013-08-20 2015-12-15 Janus Technologies, Inc. System and method for remotely managing security and configuration of compute devices
US9684805B2 (en) 2013-08-20 2017-06-20 Janus Technologies, Inc. Method and apparatus for securing computer interfaces
US9384150B2 (en) 2013-08-20 2016-07-05 Janus Technologies, Inc. Method and apparatus for performing transparent mass storage backups and snapshots
US11210432B2 (en) 2013-08-20 2021-12-28 Janus Technologies, Inc. Method and apparatus for selectively snooping and capturing data for secure computer interfaces
US9231921B2 (en) 2013-08-20 2016-01-05 Janus Technologies, Inc. System and architecture for secure computer devices
US10140457B2 (en) * 2015-07-31 2018-11-27 Intel Corporation Secure input/output device management
TW201917594A (zh) * 2017-10-18 2019-05-01 華東科技股份有限公司 一種資料交換之導引裝置及方法
EP3502941B1 (en) * 2017-12-19 2021-01-20 Riddle & Code GmbH Dongles and method for providing a digital signature
CN111222183B (zh) * 2019-11-18 2023-07-28 天津津航计算技术研究所 一种基于usb接口的加密方法
US11809611B2 (en) * 2020-02-24 2023-11-07 Microsoft Technology Licensing, Llc Protecting device detachment with bus encryption
CN112416829B (zh) * 2020-11-25 2021-06-29 福州富昌维控电子科技有限公司 数据传输到hmi的方法以及usb hid设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596718A (en) * 1992-07-10 1997-01-21 Secure Computing Corporation Secure computer network using trusted path subsystem which encrypts/decrypts and communicates with user through local workstation user I/O devices without utilizing workstation processor
JPH10260903A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd グループ暗号方法、及びファイル暗号システム
US6094486A (en) * 1997-06-19 2000-07-25 Marchant; Brian E. Security apparatus for data transmission with dynamic random encryption
US6061794A (en) 1997-09-30 2000-05-09 Compaq Computer Corp. System and method for performing secure device communications in a peer-to-peer bus architecture
US6971048B1 (en) * 1998-06-15 2005-11-29 Sun Microsystems, Inc. Testing device driver hardening
US6389029B1 (en) * 1998-11-10 2002-05-14 Nortel Networks Limited Local area network incorporating universal serial bus protocol
US6763467B1 (en) * 1999-02-03 2004-07-13 Cybersoft, Inc. Network traffic intercepting method and system
JP4356178B2 (ja) * 1999-03-09 2009-11-04 ソニー株式会社 再生装置
AU2248001A (en) 1999-10-22 2001-05-08 Aerwire Corporation Wireless universal serial bus system
JP2002288041A (ja) * 2001-03-23 2002-10-04 Sony Corp 情報処理装置および方法、プログラム格納媒体、並びにプログラム
JP2003087239A (ja) * 2001-09-06 2003-03-20 Sony Corp 通信システム、通信装置および方法、記録媒体、並びにプログラム
WO2003029997A1 (en) * 2001-09-27 2003-04-10 Koninklijke Philips Electronics N.V. Bus system and bus interface

Also Published As

Publication number Publication date
MXPA04004143A (es) 2005-06-08
CA2465246A1 (en) 2004-11-02
CN1551003A (zh) 2004-12-01
US20040250087A1 (en) 2004-12-09
RU2004113565A (ru) 2005-10-27
EP1473617A2 (en) 2004-11-03
BRPI0401686A (pt) 2005-01-18
AU2004201804A1 (en) 2004-11-18
JP2004362552A (ja) 2004-12-24
RU2352986C2 (ru) 2009-04-20
EP1473617A3 (en) 2006-05-03
US7469343B2 (en) 2008-12-23

Similar Documents

Publication Publication Date Title
US7469343B2 (en) Dynamic substitution of USB data for on-the-fly encryption/decryption
JP4579969B2 (ja) ネットワーク・ドメインのネットワークエンドポイントにおける組込みエージェントの間で暗号化キーを共有するための方法、装置及びコンピュータプログラム製品
US10885197B2 (en) Merging multiple compute nodes with trusted platform modules utilizing authentication protocol with active trusted platform module provisioning
US10776489B2 (en) Methods and systems for providing and controlling cryptographic secure communications terminal operable to provide a plurality of desktop environments
RU2297037C2 (ru) Управление защищенной линией связи в динамических сетях
US8661252B2 (en) Secure network address provisioning
JP3922886B2 (ja) 基本パスワードをリモートで復元するデータ処理のシステム及び方法
JP5860815B2 (ja) コンピューターポリシーを施行するためのシステムおよび方法
RU2756040C2 (ru) Адресация доверенной среды исполнения с использованием ключа подписи
US6754826B1 (en) Data processing system and method including a network access connector for limiting access to the network
US11237986B1 (en) Method and apparatus for side-band management of security for a server computer
US20120084562A1 (en) Methods and systems for updating a secure boot device using cryptographically secured communications across unsecured networks
US9961048B2 (en) System and associated software for providing advanced data protections in a defense-in-depth system by integrating multi-factor authentication with cryptographic offloading
US20120131341A1 (en) Method and system for improving storage security in a cloud computing environment
JP2004529561A (ja) コンピュータ・ネットワーク内のアプリケーション・コードおよびコンテンツ・データの制御された配布
CN102404314A (zh) 远程资源单点登录
TW200832438A (en) Secure co-processing memory controller integrated into an embedded memory subsystem
KR20080005551A (ko) 분배 처리 시스템 및 방법
EP4233274A1 (en) Distributed secure communication system
WO2019120231A1 (zh) 确定tpm可信状态的方法、装置及存储介质
US7493429B2 (en) Communication of information via a side-band channel, and use of same to verify positional relationship
US20240291636A1 (en) Spdm-based firmware protection system and method

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application