KR20090048581A - 가상 머신 활성화를 갖는 휴대용 대량 저장장치 - Google Patents

가상 머신 활성화를 갖는 휴대용 대량 저장장치 Download PDF

Info

Publication number
KR20090048581A
KR20090048581A KR1020097002491A KR20097002491A KR20090048581A KR 20090048581 A KR20090048581 A KR 20090048581A KR 1020097002491 A KR1020097002491 A KR 1020097002491A KR 20097002491 A KR20097002491 A KR 20097002491A KR 20090048581 A KR20090048581 A KR 20090048581A
Authority
KR
South Korea
Prior art keywords
virtual machine
card
mass storage
firmware
application
Prior art date
Application number
KR1020097002491A
Other languages
English (en)
Other versions
KR101504647B1 (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
Priority claimed from US11/463,264 external-priority patent/US20080126705A1/en
Priority claimed from US11/463,256 external-priority patent/US7725614B2/en
Application filed by 쌘디스크 코포레이션 filed Critical 쌘디스크 코포레이션
Publication of KR20090048581A publication Critical patent/KR20090048581A/ko
Application granted granted Critical
Publication of KR101504647B1 publication Critical patent/KR101504647B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F21/79Protecting 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 in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Human Computer Interaction (AREA)
  • Storage Device Security (AREA)

Abstract

디지털 픽처(digital picture)들, 영화들 및 음악과 같은 큰 파일들을 저장하기 위하여 휴대용 대량 저장 장치가 사용된다. 대량 저장 장치는 상기 장치의 신뢰 가능한 동작을 보장하여 판권소유된 재료와 같은 보안 컨텐트의 희망하지 않는 카피 또는 저장을 방지하기 위하여 판독 기록 동작들로의 액세스를 제한하는 보안 메커니즘들을 갖는 펌웨어를 가진다. 보안 메커니즘들이 일반적으로 액세스를 제한할지라도, 펌웨어는 가상 머신과 함께 동작하게 될 수 있고, 가상 머신이 존재하는 경우에, 가상 머신이 보안 컨텐트에 액세스하고 대량 저장 메모리로 데이터를 기록 및 판독하기 위하여 펌웨어와 함께 동작하도록 한다. 가상 머신은 제조 시에 로딩되지만 활성화되지 않거나, 또는 제조 이후에 다운로딩 및 활성화된다. 가상 머신에 대한 임의의 로열티는 가상 머신이 존재하고 장치에서 활성화되는 경우에만 지불된다.
휴대용 대량 저장 장치, 가상 머신, 보안 컨텐트, 보안 메커니즘, 펌웨어.

Description

가상 머신 활성화를 갖는 휴대용 대량 저장장치{PORTABLE MASS STORAGE WITH VIRTUAL MACHINE ACTIVATION}
본 발명은, 일반적으로 휴대용 대량 저장 장치들 및 상기 장치들 상에서 실행되는 펌웨어(firmware) 및 소프트웨어(software)에 관한 것이며, 더 명확하게는, 소프트웨어 및 다른 컨텐트(content)를 제공하고 상기 소프트웨어 및 다른 컨텐트를 활성화시키고 상기 소프트웨어와 다른 컨텐트에 대해 비용을 지불하는 것에 관한 것이다.
스마트 카드(smart card)들은 상당한 시간 동안 광범위하게 사용되었고, 그 중에서도 특히 현금 및 신용 카드들로서 자주 사용된다. 스마트 카드들은 명칭이 나타내는 바와 같이, 프로세서 제어되고, 또한 아이덴티피케이션(identification) 및 거래 관련 데이터를 유지하기 위하여 소량의 메모리를 포함한다. 스마트 카드들 상에서 Java 기반 프로그램을 생성 및 실행하는 능력이 최근에 개발되었고 인기를 얻고 있다. Java 기반 프로그램들은 또한 디지털 카메라들 및 음악 플레이어들에서 전형적으로 사용되는 대량 저장 메모리 카드들과 같은 다른 지능형 장치들에서 구현될 수 있다. 이러한 다른 카드들은 자신들이 스마트 카드에 저장된 거래 및 아이덴티피케이션 데이터보다 더 큰 사진들과 음악, 오더(order) 또는 매그니튜 드(magnitude)와 같은 매우 큰 데이터 라이브러리(library)들을 저장하고 상기 매우 큰 데이터 라이브러리에 액세스해야 하기 때문에, 대량 저장 장치들로서 인식된다. 이러한 대량 저장 카드들의 예들로는 컴팩트 플래시("CF") 카드, 보안 디지털("SD") 카드, 미니 SD 카드, 마이크로 SD 카드, 멀티-미디어("MMC") 카드, 및 메모리 스틱이 있다. 상술된 예들 이외에 많은 더 상이한 포맷(format)들의 대량 저장 카드들이 존재한다. 휴대용 플래시 메모리 기반 유니버설 직렬 버스(universal serial bus: "USB") 드라이브들이 또 다른 유형의 휴대용 대량 저장 장치이다.
Java CardTM 기술은 Java 프로그래밍 언어로 기록된 프로그램들이 스마트 카드들 및 다른 소형 자원-제약된 장치들 상에서 실행될 수 있도록 한다. 개발자들은 표준 소프트웨어 개발 툴(tool)들 및 환경들을 사용하여 프로그램들을 구성 및 테스트하고 나서, 상기 프로그램들을 Java CardTM 기술-가능 장치상에서 설치될 수 있는 형태로 변환할 수 있다. Java CardTM 플랫폼(platform)에 대한 애플리케이션 소프트웨어는 애플릿(applet), 또는 더 명확하게는, (이를 브라우저 애플릿들과 구별하기 위하여) Java CardTM 애플릿 또는 카드 애플릿이라고 칭해진다.
Java CardTM 기술이 Java 프로그래밍 언어로 기록된 프로그램들이 소형 메모리 카드들 상에서 실행될 수 있도록 하지만, 이와 같은 소형 장치들은 Java 플랫폼의 전체 기능을 지원하는데 너무 많이 미치지 못한다. 그러므로, Java CardTM 플랫 폼은 Java 플랫폼의 특징들의 신중하게 선택된 커스터마이징(customizing)된 서브셋만을 지원한다. 이 서브셋은 소형 장치들에 대해 프로그램들을 기록하는데 적합한 특징들을 제공하며, Java 프로그래밍 언어의 객체-지향 케이퍼빌리티(object-oriented capability)들을 보존한다.
Java CardTM는 한 유형의 가상 머신이다. 다른 가상 머신들이 또한 이용 가능하고, 가상 머신은 물리적 프로세서의 추상개념(abstraction)이며, 종래의 프로세서의 가상 대응부들을 갖는다. Java 언어의 경우에, Java 가상 머신은 컴파일링(compiling)된 Java 이진 코드와 기초적인 하드웨어 플랫폼 마이크로프로세서 사이의 인터페이스의 역할을 하는 소프트웨어이다.
이와 같은 소형 장치에서 구현될 때 특히 유용한 하나의 애플리케이션은 음악 또는 영화들, 등과 같은 보호된 컨텐트에 대한 지불을 포함한다.
Java로 기록된 애플리케이션들을 실행하기 위하여, Java CardTM 가상 머신이 카드 내로 로딩(loading)되고 활성화되어야 한다. 머신의 각각의 인스턴스(instance)는 Sun 또는 이와 같은 구성요소들의 공급자로의 라이센스 요금(license fee)의 지불을 필요로 한다. 스마트 카드의 주목적이 거래이기 때문에, 라이센스 요금의 비용은 비즈니스(business)를 행하는 비용으로서 카드의 발행자에게 수용 가능하다. 그러나, 대량 저장 유형의 메모리 카드의 사용자는 전형적인 사용자가 주로 데이터 저장을 위하여 카드를 소유하고 사용하기 때문에, 가상 머신이 가능하게 하는 부가적인 애플리케이션들에 대한 용도를 가지거나 가지지 않을 수 있다. 그러므로, 제조자는 당연히 라이센스 요금의 비용을 패스온(pass on)하거나 부담할 수 없다. 더구나, 가상 머신(들) 상에서 실행되는 애플릿들 또는 다른 프로그램들 각각은 또한 당연히 (이에 대한 용도를 가질 수 없는 사용자에게) 패스온되거나 부담될 수 없는 라이센스 요금을 필요로 할 수 있다.
Java CardTM 가상 머신의 역할은 Java CardTM 플랫폼에 대한 소프트웨어의 생성 및 배치에 대한 프로세스의 상황에서 가장 양호하게 이해된다. Java CardTM 가상 머신, Java CardTM 플랫폼용 컨버터("Java CardTM 컨버터"), 단말기 설치 툴, 및 장치 상에서 실행되는 설치 프로그램을 포함하는, Java CardTM 시스템을 구성하는 여러 구성요소들이 존재한다. Java CardTM 애플릿의 개발은 임의의 다른 Java 프로그램과 같이 시작된다: 개발자는 하나 이상의 Java 클래스(class)들을 기록하고, Java 컴파일러로 소스 코드를 컴파일링하고, 하나 이상의 클래스 파일들을 생성한다. 애플릿은 장치 환경을 에뮬레이팅(emulating)하기 위하여 시뮬레이션 툴(simulation tool)을 사용하여 워크스테이션(workstation) 상에서 실행되고, 테스트되고 디버깅(debugging)된다. 그 후, 애플릿이 장치로 다운로딩될 준비가 될 때, 애플릿을 포함하는 클래스 파일들이 Java CardTM 컨버터를 사용하여 CAP(변환된 애플릿) 파일로 변환된다. Java CardTM 컨버터는 Java 패키지를 구성하는 모든 클래스 파일들을 입력으로서 취한다. Java CardTM 컨버터는 또한 하나 이상의 엑스포트 파일(export file)들을 입력으로서 취한다. 엑스포트 파일은 변환되는 클래스들에 의해 임포트(import)되는 다른 패키지들의 컨텐트들에 대한 명칭 및 링크 정보를 포함한다. 애플릿 또는 라이브러리 패키지가 변환될 때, 상기 컨버터는 또한 상기 패키지에 대한 엑스포트 파일을 생성할 수 있다.
통상적으로, 변환 이후에, CAP 파일은 카드 판독기 주변장치를 갖는 데스크톱 컴퓨터와 같은 카드 단말기로 카피된다. 그 후, 단말기 상의 설치 툴이 CAP 파일을 로딩하고, 이를 Java CardTM 기술-가능 장치로 전송한다. 상기 장치상의 설치 프로그램은 CAP 파일의 컨텐트를 수신하고, 애플릿이 Java CardTM 가상 머신에 의해 실행되도록 준비한다. 가상 머신 자신은 CAP 파일들을 로딩 또는 조종할 필요가 없다; 상기 가상 머신은 설치 프로그램에 의해 장치상으로 로딩되었던 CAP 파일에서 발견된 애플릿 코드를 실행하기만 하면 된다.
Java CardTM 플랫폼의 이러한 양상들 및 다른 양상들이 전체적으로 본원에 참조되어 있는 Sun Microsystems로부터의 다음의 명세서들: Application Programming Interface, Java CardTM Platform, Version 2.2.1; Runtime Environment Specification, Java CardTM Platform, Version 2.2.1; 및 Virtual Machine Specification, Java CardTM Platform, Version 2.2.1에서 설명되어 있다.
상술된 바와 같이, Java로 기록된 애플리케이션들을 실행하기 위하여, Java CardTM 가상 머신은 카드 내로 로딩되고 활성화되어야 한다.
Yoshimoto 등에 의한 미국 특허 번호 제6,772,955에 설명된 하나의 종래의 방법에서, 가상 머신은 카드가 포인트 기반 거래들에서 사용되도록 하기 위하여 메모리 카드 제어기 칩의 부분으로서 제공된다. 포인트 카드로서 카드를 사용하기 위한 소스 코드가 Java로 기록되고 카드 내로 로딩된다. 포인트 잔액(point balance)은 각각의 아이템(item)이 카드로 구매될 때마다 갱신된다.
Java 가상 머신의 각각의 인스턴스는 Sun 또는 다른 공급자들로의 라이센스 요금의 지불을 필요로 한다. 유사하게, 임의의 다른 독점적인 가상 머신은 이와 같은 머신의 라이센서(licensor)로의 지불을 필요로 할 수 있다. 스마트 카드에서, 각각의 카드에는 Java CardTM 가상 머신의 활성이고 지불된 카피가 제공된다. 이것은 Yoshimoto 특허에서 설명된 시스템에 대한 것과 마찬가지로, 각각의 스마트 카드의 비용에 추가된다. 스마트 카드의 원칙 기능이 대부분의 애플리케이션들에서 거래이기 때문에, 이 비용은 제조자, 중개자, 또는 소비자에게 부담 및/또는 패스온될 수 있다. 그러나, 가상 머신의 기능이 결코 사용될 수 없는 소비자 대량 저장 장치에서 라이센스의 비용을 지불하거나 패스온하는 것은 바람직하지 않다.
글로벌 플랫폼(global platform)은 스마트 카드들의 진흥 및 표준화를 위한 산업 컨소시움이다. 글로벌 플랫폼은 많은 산업들에 걸쳐 많은 서비스 공급자들에 의해 스마트 카드 프로그램들의 글로벌 배치를 위하여 개방형 기술 프레임워크(open technology framework)를 생성 및 유지하는 스마트 카드 산업 표준 조직체 의 역할을 한다. 글로벌 플랫폼 애플리케이션 프로그래밍 인터페이스("API") 및 글로벌 플랫폼의 다른 양상들이 www.globalplatform.com에서 입수 가능하고 전체적으로 본원에 참조되어 있는 2004년 12월자의 The Global Platform Card Specification. V.2.1.1 및 The Formal Specification of Global Platform Card Security Requirements에 설명되어 있다. 글로벌 플랫폼은 이미 가상 머신을 갖는 스마트 카드 및 다른 장치에 애플릿들의 다운로딩을 제공한다. 그러나, 상기 글로벌 플랫폼이 필요로 될 때 애플릿들 및 관련 기능을 제공하지만, 상기 글로벌 플랫폼은 애플릿들을 실행하는데 필요로 되는 가상 머신을 이미 가지는 카드들에 대해서만 그러하다.
본 발명은 제조 및 사용의 비용을 최소화하면서 휴대용 대량 저장 장치들의 잠재적인 사용들을 증가시킨다. 본 발명은 상기 장치들이 다양한 특수용 소프트웨어 애플리케이션들을 실행하도록 하지만, 이러한 애플리케이션들의 비용은 사용자가 그러한 애플리케이션들의 기능을 사용하도록 선택하는 경우에만 부담될 것이다. 즉, 잠재적인 사용들과 관련된 비용이 잠재성이 실현되는 경우에만 부과된다. 이것은 제조자 및 소비자 둘 모두에게 장점이다. 제조자는 일부 서브셋의 소비자들에게만 바람직할 수 있는 특징들에 대한 비용들을 부담하거나 패스온하지 않아도 되면서, 제품 기능 및 시장 진출을 증가시킬 수 있다. 상기 특징들을 사용하고자 하는 소비자들은 필요로 될 때 상기 특징들에 대해 지불할 수 있는 반면, 상기 기능을 사용하고자 하지 않는 소비자들은 자신들이 희망하거나 필요로 하지 않는 어떤 것에 대해 지불할 필요가 없다.
가상 머신은 적소의 상기 가상 머신에 의하여, 장치 상에서 직접 실행되는데 이용 가능한 것보다 더 많은 다양한 애플리케이션들이 사용에 이용 가능하기 때문에, 휴대용 대량 저장 장치에서 매우 유용하다. 이는 가상 머신이 임의의 특정 프로세싱 플랫폼으로부터의 독립을 제공하기 때문이다. 가상 머신은 마이크로프로세서에 의해 실행되는 자급식 운영 환경이지만, 자신이 마치 별도의 컴퓨터인 것처럼 동작한다. 가상 머신 애플리케이션은 가상 머신이 어떤 종류의 프로세서들 및 운영 시스템상에서 실행되고 있든지 간에, 상기 가상 머신에서 동일한 방식으로 수행 및 실행될 것이다.
종래의 해결책들이 가상 머신을 메모리 카드 내로 통합하였지만, 소비자가 가상 머신을 희망하거나 필요로 하는지의 여부에 관계없이 가상 머신의 비용이 제조자 및 소비자에 의해 부담되어야 했다. 이것은 주로 거래 카드들 또는 "전자 지갑들"로서 사용되도록 의도되는 장치들에서는 수용 가능하지만, 최초에 또는 주로 다른 용도들로 사용될 수 있는 휴대용 대량 저장 장치에서는 이상적이지 않다. 본 발명에 의하여, 가상 머신에 대한 라이센스 요금은 사용자가 가상 머신 또는 머신들의 존재를 필요로 하는 애플리케이션을 사용하고자 하는 경우에만 지불될 필요가 있다. 따라서, 기초적인 대량 저장 장치의 비용은 최소로 유지될 수 있고, 추가 애플리케이션들 및 가상 머신은 필요로 되거나 희망되는 경우에만 지불될 수 있다. 가상 머신은 장치의 수명 동안 언제라도 활성화될 수 있고, 지불은 상기 가상 머신이 활성이 되는 경우에만 행해질 것이다. 상기 머신은 또한 언제라도, 단독으로, 또는 상기 머신을 사용하는 애플리케이션과 함께 카드 내로 로딩될 수 있다. 일부의 바람직한 실시예들에서, 가상 머신이 필요로 될 때, 가상 머신의 설치는 가상 머신 또는 더 상위의 레벨 애플리케이션의 활성화의 부분으로서 배후에서 사용자가 인식함이 없이 발생될 것이다.
본 발명은 요금들을 필요로 하는 프로그램들이 사용될 때에만 라이센스 요금들을 지불하도록 한다. 이것은 이 프로그램이 실행 불가능한 환경들 내에 이러한 프로그램들을 통합시키는 것을 가능하게 한다. 이것은 대량 저장형 메모리 카드와 같은 소형 장치에서 구현될 수 있는 애플리케이션들의 많고 다양한 선택이 제공되면 특히 유용하다.
본 발명은 사용자가 자신이 원하는 프로그램들만을 빠르고 쉽게 선택하고, 활성화하고, 자신이 원하는 프로그램들에 대해서만 지불하도록 한다. 이것은 기본적인 장치가 모두에게 알맞도록 하는 동시에, 커스터마이징된 애플리케이션들이 바람직한 것들을 발견하는 사람들에 의해 사용되도록 한다.
가상 머신을 휴대용 대량 저장 장치를 실행시키는 기초적인 펌웨어와 통합하는 것은 간단한 태스크(task)가 아니다. 이것은 보호된 컨텐트로의 액세스를 제한해야 하는 "보안" 장치들에서 특히 그러하다. 이와 같은 장치들에서, 장치의 펌웨어는 적어도 부분적으로 컨텐트를 보호할 책임이 있다. 따라서, 펌웨어는 판독/기록 동작들로의 액세스를 제한한다. 이와 같이, 이것은 보호된 컨텐트의 인증받지 않은 카피들을 행하고자 하는 사람들을 목표로 한다. 그러므로, 기초적인 펌웨어는 해커(hacker)들로부터 컨텐트를 보호해야 하지만, 여전히 가상 머신과 같은 애플리케이션이 상기 컨텐트에 액세스하도록 해야 한다. 따라서, 가상 머신이 어느 지점에서도 로딩될 수 있는(또는 이와 같은 컨텐트를 사용하는 장치에서 실행되는 애플리케이션이 턴온되는) 시나리오에서, 펌웨어는 가상 머신(또는 애플리케이션)과 함께 또는 가상 머신 없이 실행되고 악의적인 소프트웨어가 가상 머신(또는 애플리케이션)으로서 가장하지 못하도록 할 수 있어야 한다.
도 1은 대량 저장 장치(100)의 개략도.
도 2는 대량 저장 장치(100) 및 호스트(105)의 소프트웨어 구성요소들의 개략도.
도 3a는 본 발명의 실시예에 따른 대량 저장 장치의 소프트웨어 구성요소들의 도면.
도 3b는 본 발명의 실시예에 따른 다운로딩된 애플리케이션의 도면.
도 4a는 본 발명에 따른 제 1 프로비저닝 시나리오(provisioning scenario)의 흐름도.
도 4b는 본 발명에 따른 제 2 프로비저닝 시나리오의 흐름도.
도 4c는 본 발명에 따른 제 3 프로비저닝 시나리오의 흐름도.
도 5는 본 발명의 실시예에 따른 애플리케이션 프로토콜 인터페이스 관리를 도시한 흐름도.
도 6은 공개 키 기반구조 및 대량 저장 장치(100)를 도시한 도면.
도 7은 공개 키 기반구조의 일부 구성요소들을 기술한 테이블.
도 8은 본 발명의 실시예에 따른 수익 흐름의 도면.
도 9는 플래시 메모리(140)의 메모리 공간의 일부의 도면.
배경에서 논의된 바와 같이, 휴대용 플래시 메모리 기반 대량 저장 장치들은 오늘날 큰 파일들 및 소프트웨어 프로그램들을 저장하는데 광범위하게 사용된다. 메모리 카드들 또는 포켓 크기의 USB 플래시 드라이브들에 의존하는 디지털 드라이브들의 광범위한 사용으로 인하여, 많은 사람들이 이미 이러한 휴대용 대량 저장 장치들 중 하나 이상을 가지고 있다. 본 발명은 제조 및 사용 비용을 최소화하면서, 이러한 장치들의 잠재적인 사용들을 증가시킨다. 본 발명은 상기 장치들이 다양한 특수용 소프트웨어 애플리케이션들을 실행하도록 하지만, 이러한 애플리케이션들의 비용은 사용자가 그러한 애플리케이션들의 기능을 사용하도록 선택하는 경우에만 부담될 것이다. 즉, 잠재적인 사용과 관련된 비용이 잠재성이 실현되는 경우에만 부과된다. 이것은 제조자 및 소비자 둘 모두에게 장점이다. 제조자는 일부 서브셋의 소비자들에게만 바람직할 수 있는 특징들에 대한 비용들을 부담하거나 패스온하지 않아도 되면서, 제품 기능 및 시장 진출을 증가시킬 수 있다. 상기 특징들을 사용하고자 하는 소비자들은 필요로 될 때 상기 특징들에 대해 지불할 수 있는 반면, 상기 기능을 사용하고자 하지 않는 소비자들은 자신들이 희망하거나 필요로 하지 않는 어떤 것에 대해 지불할 필요가 없다.
대량 저장 장치 상에서 실행 및/또는 저장될 수 있는 많은 소프트웨어 및 다른 컨텐트는 소유자 또는 라이센서에게 요금을 지불하는 것을 필요로 한다. 예를 들어, 소프트웨어 프로그램은 생성자에게 라이센스 요금을 지불하는 것을 필요로 하고, 음악, 영화들, 사진들 또는 기록된 작업들과 같은 컨텐트는 또한 전매자, 생성자, 공급자 및/또는 라이센서, 등에게 지불하는 것을 필요로 한다. 대량 저장 장치에서 구현될 때 특히 유용한 소프트웨어 프로그램의 하나의 특정 예는 가상 머신이다. 이것은 가상 머신이 기초적인 하드웨어 플랫폼의 사양들에 맞춰질 필요가 없는 소프트웨어를 생성 및 실행하도록 하기 때문이다. 가상 머신의 하나의 예는 배경에서 설명된 바와 같이, Sun Microsystems에 의해 제공되는 Java 기반 가상 머신이다.
Sun Microsystems로부터의 가상 머신이 예로서 설명될 것이지만, 다른 가상 머신들이 존재하고 또 다른 것들이 개발될 것이다. 가상 머신은 마이크로프로세서의 의해 실행되는 자급식 운영 환경이지만, 자신이 마치 별도의 컴퓨터인 것처럼 동작한다. 가상 머신 애플리케이션은 가상 머신이 어떤 종류의 프로세서들 및 운영 시스템상에서 실행되고 있든지 간에, 상기 가상 머신에서 동일한 방식으로 수행 및 실행될 것이다. 이것은 임의의 특정 프로세싱 플랫폼으로부터의 독립을 제공한다. 그러므로, 가상 머신 없이 이용 가능한 것보다 더 넓은 범위의 소프트웨어 프로그램들이 가상 머신 및 기초적인 장치 상에서 실행되는데 이용 가능해야 한다. 본 발명은 임의의 가상 머신 및 이것이 가능하게 하는 애플리케이션들과 함께 동작할 수 있다.
대량 저장한 메모리 카드의 일반적인 아키텍처(architecture)가 도 1에 도시되어 있다. 대량 저장 장치(100)의 다양한 구성요소들은 서로 결합되고 시스템 버 스(150)를 통해 통신한다. 장치(100)는 호스트 인터페이스(140)를 통하여 호스트(105)라고 또한 칭해지는 외부 장치(105)와 통신한다. 호스트 인터페이스(140)는 호스트(150)와 장치(100) 사이에서 데이터를 앞뒤로 전달하는 논리 및 하드웨어 구성요소들 둘 모두를 포함한다. 장치(100)가 대량 저장 메모리 카드의 폼 팩터(form factor)를 가지는 경우, 상기 인터페이스는 예를 들어, 디지털 카메라의 컨택 구조(contact structure)와 인터페이싱하는 전기적 컨택들을 포함한다. 장치(100)가 USB 장치의 폼 팩터를 가지는 경우, 호스트 인터페이스(140)는 USB 포트와 인터페이싱하기 위하여 전기적 컨택들 및 필요한 드라이버들을 포함한다. 제어기(110)는 상기 장치를 제어하고, 대량 저장장치 플래시 메모리(140)의 셀들 내에서 판독/기록 동작들 및 데이터 분배를 관리한다. 장치(100)는 또한 도시된 바와 같이 개별 구성요소이거나 제어기(110) 내에 통합될 수 있는 랜덤 액세스 메모리("RAM")(120)를 포함한다. 제어기(110)는 판독 전용 메모리(130) 또는 대량 저장장치 플래시 메모리(140) 중 하나에 저장되는 RAM(120)으로부터의 펌웨어를 실행한다. 판독 전용 메모리(130)는 전기적으로 소거 가능하므로, EEPROM 또는 EEROM일 수 있다. 펌웨어는 제어기에 의해 실행되고, 메모리 카드의 동작을 제어한다. 펌웨어가 커럽트(corrupt)되는 경우, 메모리 카드는 더 이상 적절하게 기능을 하지 않을 것이다.
대량 저장 장치(100)는 바람직하게는 보안 수단들을 포함한다. 이러한 수단들은 애플리케이션의 상태(예를 들어, 비활성 내지 활성)가 인증받은 자에 의해서만 변화될 수 있도록 할 것이다. 상기 상태는 장치 펌웨어에 의해서 제어되며, 펌웨어는 특정 애플리케이션이 활성인지와 사용될 수 있는지를 검증하기 위하여 상기 상태를 검사할 수 있다. 이러한 수단들은 또한 바람직하게는 장치의 하드웨어와 소프트웨어 둘 모두로 구현되며, 일부 실시예들에서, 장치에 저장되고 장치로 그리고 장치로부터 전달된 데이터를 암호화한다. 이 유형의 보안 대량 저장 장치에 대한 더 많은 정보에 대해서는, 전체적으로 본원에 참조되어 있는 다음의 미국 특허 출원들: Holtzman 등에 의한 명칭이 "Secure Memory Card With Life Cycle Phases"인 출원 번호 제11/053,273호; Holtzman 등에 의한 명칭이 "Momory System with in Stream Data Encryption/Decryption"인 출원 번호 제11,314,032호; 및 명칭이 "Secure Yet Flexible System Architecture for Secure Devices With Flash Mass Storage Memory"인 출원 번호 제11/317,339호를 참조하라.
장치(100)는 이전에 언급된 바와 같이, 장치(100)가 메모리 카드, USB 장치 또는 다른 폼 팩터의 형태일 수 있을지라도, 장치의 하나의 실시예에서 메모리 카드라고 칭해질 것이다.
펌웨어는 이중 일부가 보호된 데이터일 수 있는 카드의 데이터로의 경로를 제공한다. 제어기를 실행시키는 펌웨어의 무결성(integrity)은 특히 보안 카드에서 중요하다. 카드가 보안 카드, 예를 들어, 어떤 형태의 디지털 권리 관리("DRM")를 구현하는 것인 경우, 펌웨어의 기능들 중 하나는 보호된 컨텐트로의 액세스를 제한하는 것이다. DRM은 디지털 컨텐트의 자유로운 사용 및 전달을 제한하는 다수의 기술들을 설명하는데 사용되는 광범위한 용어이며, 이와 같이, 일부 사람들은 DRM이 "디지털 제한 관리(digital restrictions management)"로서 더 적절히 설명된다고 여긴다. 도 2는 펌웨어를 포함하는, 장치(100)의 소프트웨어 구성요소들 중 일부를 도시한다. 가상 머신(220)은 베이스 카드 펌웨어(base card firmware)(210)에 존재하지 않는 기능을 포함하지만, 또한 플래시 메모리 내의 컨텐트에 액세스할 수 있을 것이다. 그러므로, 어떤 점에서, 가상 머신은 또한 카드 내의 펌웨어의 유형으로 간주될 수 있고, 펌웨어(210)와 완전히 통합되거나 호환 가능해야 한다. 그러므로, 카드 펌웨어(210)는 VM(220)의 존재와 함께 또는 VM의 존재 없이 로버스트(robust)하게 기능할 수 있는 방식으로 구현된다. 마찬가지로, VM(220)은 카드 펌웨어와 함께 기능하는 방식으로 구현된다. 펌웨어가 VM(220)와 통합되도록 하는 펌웨어(210)의 코드에서 구현된 디자인 양상(design aspect)들은 펌웨어(210) 내에서 "후크(hook)들"로서 간주될 수 있다. 이러한 후크들 및 이들이 수반하는 호환성은 펌웨어(210)와 VM(220) 사이의 이중 화살표들로 표현된다. 카드(100) 내에서 로딩된 애플릿들은 VM(220)을 통하여 펌웨어와 통신할 수 있고, 카드상에 임의의 수의 상이한 소프트웨어 애플리케이션들을 제공할 수 있다. 이러한 애플릿들(240A...X)은 가상 머신 상에서 실행되므로, 제어기(110) 및 장치(110)의 다른 하드웨어 구성요소들의 특성들에 맞춰질 필요가 없다. 이것은 그렇지 않았더라면 카드와 호환 가능하지 않았을 상이한 소프트웨어 애플리케이션들의 라이브러리로 상기 장치를 개방시킨다.
도 2에 도시된 바와 같이, 호스트(105)는 애플리케이션 프로그래밍 인터페이스("API")를 통해 (VM(220)을 포함한) 펌웨어(210)와 통신해야 한다. 임의의 수의 API들(250A...X)이 카드에서 구현될 수 있다. 이것은 표준 또는 네이티브 장치 API(native device API)(250A), 글로벌 플랫폼 API와 같은 산업 표준 또는 광범위 하게 수용되는 API(250B), (VM(220)에 연관되는 API, 예를 들어, Java 가상 머신에 대한 API, 또는 애플릿들(240) 중 하나에 대한 API와 같은) 독점적인 API들(250C), 및 다른 유형의 API(250X)를 포함한다. VM(220)은 기능을 하기 위하여 적소에 적절한 API를 가져야 하므로, 특정 가상 머신을 활성화시키는 하나의 방식은 특정 가상 머신과 호환 가능한 API를 활성화 및/또는 로딩시키는 것에 의한 것이다. VM은 물론 다양한 다른 트리거(trigger)들로 직접 활성화될 수 있다. VM은 도 9와 관련하여 이후에 설명되는 바와 같이 펌웨어의 유형이다. 다양한 활성화 방법들이 이하에 설명될 것이다.
카드의 애플리케이션이 무엇이든지 간에, 이전에 논의된 가상 머신의 기능을 추가하는 것은 카드의 다른 펌웨어와의 통합을 필요로 한다. 가상 머신 및 이의 다양한 애플릿들이 카드가 공장을 떠나기 전에 펌웨어와 통합되든지 또는 후에 펌웨어와 통합되든지 간에, 카드는 끊김 없이 동작해야 한다. 애플릿이 필드 다운로딩(field downloading)되는 시나리오에서, 애플릿의 컨텐트들 및 특징은 안 한다면 몰라도, 용이하게 검증될 수는 없다. 그러므로, 카드의 기본적 펌웨어는 필드 다운로드 및 애플릿이 필요로 할 데이터 액세스를 수용할 만큼 충분히 유연해야 하는 동시에, 양호하지 않게 기록된 애플릿으로도 기능을 하는데 충분히 로버스트해야 한다. 더구나, 애플릿이 카드의 DRM을 파기(depeat)하는 경우에, 펌웨어는 상기 애플릿으로부터 데이터를 보호해야 하지만, 인증받은 사용자들에게 컨텐트를 지속적으로 공급해야 한다.
소량의 고도로 보호된 거래 데이터를 보호하는 것을 목적으로 하는 스마트 카드와 달리, 대량 저장형 메모리 카드는 컨텐트의 매우 큰 라이브러리들로의 빈번한 액세스를 제공해야 한다. 이 사용자 컨텐트는 카드가 만날 수 있는 애플리케이션들일 수 있기 때문에, 카드의 수명 동안 항상 유동적이다. 카드의 펌웨어 및 하드웨어는 카드의 컨텐트들을 항상 보호하면서, 새로운 애플리케이션들에 대한 사용자 희망들을 수용하고 상기 사용자 희망들이 필드(또는 공장)에서 다운로딩되도록 한다. 이것은 간단한 태스크가 아니다.
도 3a는 카드(100) 내의 소프트웨어 구성요소들 중 일부의 표현이다. 다양한 애플릿들(240A-X)이 카드 내에서 실행되고 있다. 선호되는 가상 머신(220)은 Java CardTM 가상 머신이며, Java CardTM 또는 다른 Java 가상 머신의 경우에, 특정 애플릿들 또는 가상 머신(220)을 기반으로 하여 필요하거나 바람직하다면 Java CardTM 프레임워크가 또한 존재할 것이다. 이러한 구성요소들 모두는 카드 운영 시스템 또는 펌웨어(210) 상에서 실행된다. 이 경우에, Java CardTM 프레임워크 및 다른 산업 추가물(230) 및 Java 가상 머신(220)이 카드 운영 시스템(210) 상에서 실행된다.
도 3b는 카드 내로 로딩되어 언제라도 활성화될 수 있고, 본 발명의 펌웨어 및 시스템의 부분의 기능을 하는 소프트웨어 구성요소 또는 "패키지"를 도시한다. 상기 패키지는 가상 머신(220) 뿐만 아니라, (선택적으로) 하나 이상의 소프트웨어 애플리케이션들(270)을 포함할 수 있다. 기초적인 펌웨어(210)가 애플리케이션(들)(270) 및 VM(220)의 부가적인 소프트웨어와 함께 기능하도록 구비된다. 가상 머신 상에서 실행되는 임의의 소프트웨어 애플리케이션(270)은 언제라도 카드 내로 로딩될 수 있다. 점선은 VM(200)이 애플리케이션(들)(270)과 함께 또는 애플리케이션(들) 없이 로딩될 수 있고 애플리케이션의 설치가 VM의 설치와 동시에 발생할 필요가 없다는 것을 나타내는 역할을 한다. 패키지의 구성요소들과 관련된 임의의 요금들은 i) 패키지가 카드에서 존재할 때, 및 ii) 패키지가 활성화될 때 둘 모두에서만 지불될 필요가 있다.
도 3b에 도시된 패키지는 다수의 방식으로 사용자에게 제공될 수 있다. 상기 패키지는 도 4a에 도시된 바와 같이, 판매 시에 카드 내에 제공될 수 있다. 이 경우에, 상기 패키지는 자신이 사용되기 전에 "필드"에서 활성화되어야 한다. 상기 패키지는 대안적으로 도 4b에 도시된 바와 같이, 완전한 패키지로서 또는 하나씩 사용자에 의해 "필드" 다운로딩될 수 있다. 또 다른 방법으로서, 새로운 펌웨어(210)는 도 4c에 도시된 바와 같이, 카드 내로 로딩될 수 있다. 이 펌웨어 다운로드는 또한 도 3b에 도시된 패키지의 모두 또는 부분을 포함할 것이다. 하나의 실시예에서, 이것은 도 2에 도시된 펌웨어(210), VM(220), 애플릿들(240)이 모두 펌웨어 갱신의 프로세스에서 로딩될 것이라는 것을 의미한다. 이러한 기본적 방법들이 이하에 논의되는 도 4a, 4b, 및 4c의 흐름도에 도시되어 있다.
상술된 바와 같이, 가상 머신 및 애플릿 또는 애플리케이션은 사용되기 위하여 활성이거나 활성화될 필요가 있다. 물론, 이것이 많은 시나리오들에서 바람직하지 않을지라도, 활성 구성요소들을 다운로딩하는데 필요한 보안 수단들이 존재하지 않을 수 있다. 이것은 카드들의 제한된 분배가 제한되는 보안 또는 신뢰 환경에서 반드시는 아니지만, 적합할 것이다. 또한, 일부 실시예들에서, 보안은 다운로드 프 로세스의 부분일 수 있고, 부가적인 활성화가 요구될 필요가 없다. 즉, 구성요소는 사용자가 제 1 장소에서 다운로딩하는 것을 인증받았다면 활성화된 상태로 다운로딩될 수 있거나, 또는 활성화가 다운로드 시퀀스의 부분으로서 발생될 수 있다.
카드(100)는 활성화 명령을 수신하여 검증하는 활성화 관리기를 갖는다. 활성화 관리기는 펌웨어(210)의 부분이거나, 또는 별도의 소프트웨어 모듈로 간주될 수 있다. 활성과 관리기는 애플리케이션들 또는 운영 시스템 특징들을 턴온 및 턴오프한다. 이 활성화는 바람직하게는 예를 들어, 보안 채널 위에서 안전하게 행해진다. 하나의 실시예에서, 활성화 관리기는 자신의 정확한 코드를 수신하는 경우에 패키지를 활성화시킬 것이다. 활성화 관리기는 상기 코드를 수신하고, 이를 상기 코드를 검증할 서버에 대해 검사하거나, 이를 카드의 메모리 내에 저장된 코드의 암호화된 버전에 대해 검사한다. 활성화 관리기는 또한 실패된 활성화들을 추적하고, 일부 실시예들에서, 실패된 시도들을 수를 제한하며, 상기 수가 초과되는 경우에 카드를 록킹(locking)할 수 있다.
코드는 상이한 파라미터들을 기반으로 하고 임의의 수의 방식들로 계산될 수 있다. 코드는 또한 부합하는 애플리케이션을 턴온하는 것으로 예측되는 간단한 번호일 수 있다. 코드는 활성화에 대해 일반적일 수 있으며, 또한 특정 애플리케이션과 고유하게 관련된 번호인 애플리케이션 ID와 관련되고/관련되거나 애플리케이션 ID를 기반으로 할 수 있다. 코드는 부분적으로 단지 특정 카드와 관련되는 번호인 카드 고유 ID를 기반으로 할 수 있다. 코드는 또한 애플리케이션, 상기 애플리케이션이 활성화되어야 하는지 또는 활성화해제되어야 하는지의 여부, 및 활성화 코드 자체를 규정하는 부분들을 가질 수 있다. 코드는 비활성, 활성, 서스펜디드(suspended), 또는 리보크드(revoked)와 같은 특정 애플리케이션 상태를 규정하거나 포함할 수 있다. 코드는 또한 필요한 다른 다양한 승인들, 예를 들어, DRM 방식에서의 상이한 승인 레벨들로의 액세스를 규정 및 제공할 수 있다. 코드는 또한 상기 방식들 모두의 일부 또는 모든 양상들을 기반으로 하거나 또는 상기 방식들 모두의 일부 또는 모든 양상들을 포함할 수 있다.
코드는 또한 대칭 또는 비대칭 암호 인증 방식의 부분일 수 있다. 예를 들어, 대칭 방식에서, 코드는 종래 기술에 널리 공지되어 있는 일회용 패스워드(one time password: "OTP")의 유형일 수 있다. 이 경우에, 카드 및 검증 서버 둘 모두는 동일한 시드(seed)를 가질 것이며, 상기 시드 및 임의의 수의 선택된 알고리즘들을 기반으로 하여 코드 또는 OTP를 독립적으로 생성할 것이다. 코드 또는 OTP는 규칙적인 간격으로 증분 또는 갱신되며, 임의의 소정 순간에, 카드에서 계산된 OTP가 검증 서버에 의해 계산된 OTP에 대해 검증될 수 있다. OTP 방식에 의하여, 2개의 카드들이 원래 동일한 시드로 로딩되었던 경우, 상이한 알고리즘들이 (카드 및 서버 내에서) 패스워드를 증분시키기 위하여 2개의 카드들에서 사용되는 경우, 하나의 카드에서의 시드 또는 일회용 패스워드 값이 침해(compromising)될지라도, 이것은 또 다른 카드 내로 해킹하는데 사용될 수 없다. 하나의 예에서, 활성화 코드 또는 OTP는 카드 ID, 카드 유형, 애플리케이션 ID, 및 OTP 시드의 펑션(function)이다. 카드 유형은 컴팩트 플래시 카드, SD 카드, 미니 SD 카드, MMC 카드, 트랜스플래시 카드, XD 카드, 메모리 스틱, 등과 같은 임의의 널리 공지된 카드 유형이거 나, 또는 USB 플래시 드라이브일 수 있다.
활성화 코드가 OTP를 포함하거나 OTP(의 펑션)을 기반으로 하는 실시예에서, OTP 및/또는 코드는 애플리케이션 또는 소프트웨어 계층을 턴온 또는 턴오프하는데 사용될 수 있다. (원격 서버 또는 다른 장치에 의해 생성된) OTP 또는 코드는 카드로 전송되고 상기 카드에 의해 생성된 OTP에 대해 비교되어, 활성화 코드 또는 OTP를 검증한다. 이것이 정확한 것으로 검증되는 경우, 애플리케이션 또는 소프트웨어 계층은 턴온 또는 오프될 수 있다. 이러한 목적들을 위한 OTP의 사용은 값이 한 번만 사용될 수 있으므로, 다수의 활성화에 사용되거나 인증받지 않은 방식으로 패스온되어 사용되는 것이 불가능하기 때문에 유용하다. 일부 실시예들에서, 활성화될 애플리케이션의 애플리케이션 ID는 또한 활성화 코드 또는 OTP를 생성하는데 사용될 수 있다. 이 방식으로, OTP는 어떤 애플리케이션에 특정될 것이다.
상술된 바와 같이, 일부 실시예들에서, 다수의 카드들에 대해 동일한 시드가 사용될 수 있다. 시드는 OTP 계산의 기초이다. 다시, 활성화 코드 또는 OTP는 카드 ID, 카드 유형, 애플리케이션 ID, 및 OTP 시드의 펑션이다. 이것은 동일한 시크릿 시드(secret seed)가 다수의 카드들 내로 로딩되도록 하는데, 이는 서버 데이터베이스 상에서 기록들의 수를 감소시킨다. 동시에, 카드 ID, 카드 유형, 및 애플리케이션 ID 중 하나 이상의 펑션일 수 있는 상이한 알고리즘들이 사용될 수 있기 때문에, 특정 OTP들 및 활성화 코드들이 생성될 수 있으므로, 고 레벨의 보안을 제공한다.
가장 통상적인 비대칭 방식들은 장치 또는 엔티티(entity)가 암호적으로 관 련되어 하나의 키로 암호화된 데이터가 다른 키로 해독될 수 있는 2개의 키들, 즉 사설 키 및 공개 키를 소유하고 공개 키로부터 사설 키를 수학적으로 도출할 수 없는 공개 키 기반구조(public key infrastructure: PKI)를 포함한다. 이와 같은 방식에서, 공개 키는 자유롭게 분배되고, 사설 키는 소유하는 엔티티에 의해 시크릿으로 유지된다. 엔티티의 인증은 이의 공개 키를 사용하여 암호화되었던 메시지를 해독하여 사설 키의 소유권을 증명하는 것이 필요로 되는 도전/응답 시퀀스(challenge/response sequence)를 수행함으로써 성취된다. PKI를 사용하는 본 발명의 실시예가 이후에 설명되는 도 6 및 7에 도시되어 있다.
더구나, 하나의 실시예에서, 대칭 방식의 양상은 비대칭 방식의 양상과 결합된다. 이와 같은 실시예의 하나의 예에서, OTP가 하나의 단계에서 카드를 검증하는데 사용될 것이며, 또 다른 단계에서, 도전/응답 대화가 사용될 것이다.
활성화 프로세스를 논의하였을지라도, 이제 다운로드 및 활성화 둘 모두의 양상을 도시한 도 4a, 4b, 및 4c의 흐름도들로 리턴할 것이다.
도 4a는 로딩된 가상 머신의 활성화가 수행되어야 하는 프로세스를 도시한다. 도 4a의 단계(405)에서, 가상 머신은 카드가 사용자에게 판매되기 이전의 어떤 시점에서 카드의 발행자 또는 공급자에 의해 제공된다. 이것은 제조시 또는 이후의 어떤 시점일 수 있고, 카드의 펌웨어가 또한 존재할 것이다. 가상 머신은 휴지 또는 비활성 상태일 것인데, 즉 소비자에 의한 사용에 이용 가능하지 않을 것이다. 그러므로 (사용되지 않거나 비활성의) 가상 머신에 대한 라이센스 요금을 지불하는 것이 필요하지는 않다. 바람직하게는, 소비자는 가상 머신이 활성화되거나 "록킹해 제"되기 전에 카드상에 존재한다는 것을 인식하지 못할 것이다. 가상 머신은 임의의 유형 또는 브랜드의 가상 머신일 수 있다. 현재 이용 가능한 가상 머신들의 일부의 예들은: java; MULTOS; Java CardTM; embedded linux; embedded java; dot.net; 및 Windows CE이다. 상이한 애플릿들을 지원하기 위하여 상이한 가상 머신들이 필요로 될 수 있으므로, 다수의 VM들이 장치 내로 로딩될 수 있다. 장치 펌웨어는 상이한 VM들 및 애플릿들에 대해 필요로 되는 자원들의 가용성을 관리한다.
단계(410)에서, 시스템의 사용자, 카드, 또는 서버가 가상 머신이 필요로 되거나 희망 된다고 결정한다. 다음으로, 단계(415)에서, 신뢰 기관(trusted authority)이 가상 머신을 활성화한다. 이 시점에서, 가상 머신과 관련된 임의의 라이센스 요금이 지불될 필요가 있을 것이다. 공개 키 기반구조에서, 신뢰 기관은 종종 인증 기관이라고 칭해진다. 인증 기관(620)은 도 6에 도시되어 있다.
도 6은 크리덴셜(credential)들의 검증/인증을 위해 공개 기 기반구조를 사용하는 실시예를 도시한다. 거래들이 자신들이 발생하는 시스템보다 더 안전하지 않을 수 있기 때문에, 가장 중요한 요소는 서로를 위치시키고 이들이 사용하는 공개 키가 진실로 이들이 통신하고자 하는 사람(또는 머신)에 속한다는 확신을 갖기 위하여 커레스펀던트(correspondent)들에 대한 방식을 설정하는 것이다. 공개 키 기반구조는 이 신뢰를 제공하도록 디자인된다. 공개 키를 이의 소유자에 관한 식별 정보와 바인딩(binding)하는 디지털 인증서 또는 공개 키 인증서라 칭하는 데이터 요소를 사용할 때, 상기 기반구조는 바인딩을 생성하고 이를 사용 커뮤니 티(community) 내의 모두를 위하여 관리한다. 일단 크리덴셜들이 검증되면, 패키지는 상술된 바와 같이 코드 또는 OTP로 활성화될 수 있다. 대안적으로 크리덴셜 자신들 또는 이의 검증은 크리덴셜들의 검증/인증에 충분하여, 활성화를 허용하거나 트리거할 것이다.
시크릿 키 및 공개 키 암호화의 조합을 사용할 때, PKI는 데이터 기밀성, 데이터 무결성, 및 키 관리를 포함한 다수의 다른 보안 서비스들을 가능하게 한다. PKI에 대한 파운데이션(foundation) 또는 프레임워크는 전체적으로 본원에 참조되어 있는 ITU-T X.509 Recommendation [X.509]에 규정되어 있다.
최종 엔트리들은 종종 최종-사용자들로 간주된다. 이것이 종종 그러할지라도, 용어 최종 엔티티는 훨씬 더 일반적인 것이다. 최종 엔티티는 최종 사용자, 라우터 또는 서버와 같은 장치, 프로세스, 또는 공개 키 인증서의 서브젝트 네임(subject name)에서 식별될 수 있는 어떤 것일 수 있다. 최종 엔티티들은 또한 PKI 관련 서비스들의 소비자들로서 간주될 수 있다. 본 발명에서, 도 6에 도시된 실시예에서 나타낸 바와 같이, 최종 엔티티는 대량 저장 장치(100) 및 이의 사용자이다.
공기 키들은 공기 키 인증서들의 형태로 분배된다. CA(620)는 자신의 공개 키 인증서들을 발행할 수 있는 구성요소이기 때문에 PKI의 파운데이션이다. 공기 키 인증서들은 장치(100) 및 레포지토리(repository)(610)로 전송된다. 공개 키 인증서들은 (서브젝트 네임을 공개 키에 효율적으로 바인딩하는) 발행 CA에 의해 디지털로 서명된다. CA들은 또한 이것이 별도의 CRL 발행자(630)로 위임되지 않았다 면, 인증서 폐기 목록(certificate revocation list)들을 발행할 책임이 있다. CA들은 또한 최종-사용자 등록과 같은 다수의 관리 태스크들에 관련될 수 있지만, 이것들은 종종 선택적이며 도 6에 도시되지 않은 등록 기관(registration authority: RA)에 위임된다. 실제로, CA들은 또한 이 기능이 또한 별도의 구성요소로 위임될 수 있을지라도 키 백업 및 복구 기능의 역할을 할 수 있다. CA들은 PKI에서 종종 "신뢰의 소스(source of trust)"로 간주된다. 공개 키 기반구조를 사용하는 실시예에서, CA(610)는 패키지를 다운로딩할 서버 및 장치(100)가 신뢰받을 수 있는지를 나타낼 것이다. 이 신뢰는 다운로드, 활성화, 및 지불 용도들에 사용될 것이다. 도 7은 도 6의 구성요소들을 설명하는 테이블이며, 즉시 참조(quick reference)로서 제공된다.
도 4b는 가상 머신을 단독으로 또는 더 큰 소프트웨어 패키지의 부분으로서 제공하는 또 다른 프로세스이다. 단계(435)에서, 카드 펌웨어(210)가 제공된다. 이 펌웨어는 가상 머신과의 미래의 통합 또는 가상 머신과 함께 사용하기 위해 "후크들"을 갖는데, 즉, 가상 머신과 호환 가능하도록 디자인된다. 가상 머신 호환 가능한 펌웨어는 바람직하게는 카드의 제조시에 제공되지만, 또한 카드의 수명 동안 언제라도 로딩될 수 있다. 펌웨어는 카드상의 일부 데이터 유형들로의 액세스를 제한하도록 디자인된 보안 메커니즘들을 갖는다. 펌웨어는 카드의 메모리에 저장되는 보호된 컨텐트 및 자신 내에 보안 메커니즘 자체들을 포함한다. 가상 머신이 설치 또는 활성화되기 전에, 펌웨어(의 보안 메커니즘들)는 카드 내 또는 외에서 실행되는 소프트웨어 애플리케이션들이 보호된 데이터에 액세스하지 않도록 한다. 그러 나, 펌웨어는 또한 가상 머신을 검출하고, 일단 가상 머신이 설치되고 활성화되면 상기 가상 머신이 어떤 보호된 데이터에 액세스하도록 동작 가능하다. 즉, 펌웨어는 상이한 동작 상태들, 가상 머신 없이 사용하기 위한 상태 및 가상 머신과 함께 사용하기 위한 상태를 갖는 것으로 간주될 수 있다. 상태들 둘 모두에서, 펌웨어는 상기 펌웨어 자신을 포함한 카드상의 데이터를 보호하고 상기 카드상의 데이터로의 액세스를 제한해야 한다. 그러나 제 2 상태에서, 펌웨어는 임의의 악의적인 애플리케이션들의 인증받지 않은 판독/기록 액세스를 허용하지 않으면서, 가상 머신이 데이터를 판독 및 기록하도록 해야 한다.
다음으로, 단계(440)에서, 카드가 제조자를 떠난 후에, 사용자 또는 중개자, 또는 카드 자신이 가상 머신이 희망되거나 필요로 된다고 결정한다. 그 후, 가상 머신 및 이의 공급자가 단계(445)에서 인증된다. 이것은 상술된 바와 같이, 대칭 및/또는 비대칭 인증일 수 있다. 단계(450)에서, 가상 머신은 카드 내로 다운로딩되고 활성화된다. 이 시점에서, 가상 머신과 관련된 임의의 라이센스 요금이 지불될 필요가 있을 것이다. 일단 활성화되면, 지불이 트리거될 것이다.
도 4c는 가상 머신을 단독으로 또는 더 큰 소프트웨어 번들(bundle)로서 제공하는 또 다른 프로세스이다. 단계(460)에서, 사용자 또는 카드는 가상 머신이 필요로 되거나 희망된다고 결정한다. 다음으로, 단계(465)에서, 가상 머신 및 이의 공급자가 인증된다. 이것은 상술된 바와 같이 대칭 또는 비대칭 인증일 수 있다. 단계(470)에서, 가상 머신(220)을 갖는 새로운 카피 또는 버전의 펌웨어(210)가 카드 내로 다운로딩된다. 부가적인 애플릿들(240) 또는 다른 프로그램들이 선택적으 로 동시에 로딩될 수 있다.
도 5는 가상 머신 다운로드에 의한 API 관리를 도시한다. 단계(510)에서, 애플릿 다운로드에 대해 요청이 수신된다. 이 요청은 인터넷을 포함한 임의의 네트워크를 통하여 임의의 지능형 장치로부터의 서버에 의해 행해질 수 있다. 서버는 카드의 발행자 또는 공급자, 또는 임의의 제 3자에 의해 운영될 수 있다. 카드의 발행자는 제조자 또는 이의 대리인일 수 있는 반면, 공급자는 카드들을 핸들링하거나, 분배하거나 또는 판매하는 임의의 엔티티일 수 있다. 그 후, 단계(510)의 요청을 수신한 서버는 발행자 또는 공급자가 상기 요청을 직접 수신하지 않은 경우에, 상기 요청을 카드의 발행자 또는 공급자에게 통지한다. 단계(520)에서, 발행자 또는 공급자는 애플릿이 실행되도록 하기 위하여 필요로 되는 (경우) 가상 머신을 고속으로 검색한다. 다음으로, 단계(530)에서, 가상 머신 및 애플릿은 카드 내로 끊김없이 로딩된다. 이것은 사용자가 가상 머신이 검색되어 자신의 카드 내로 로딩되었다는 것을 인지할 필요가 없다(그러나, 인지할 수 있다)는 것을 의미한다. 단계(540) 이전, 이후, 또는 동시에 발생할 수 있는 단계(440)에서, 가상 머신 및 애플릿이 활성화된다. 단계(550)에서, 카드는 가상 머신 및 애플릿에 적합한 API를 선택하여 사용한다. 적절한 API가 존재하지 않는 경우, 발행자 또는 공급자가 적절한 API를 카드 내로 로딩한다. 다시, 단계(520)에서와 같이, 사용자는 바람직하게는 API가 카드 내로 로딩되었다는 것을 인지할 필요가 없다(그러나, 인지할 수 있다). 요약하면, 상기 프로세스는 사용자를 위해 가능한 한 빠르고 쉽게 행해진다. 일단 애플릿에 대해 요청이 행해지면, 애플릿 및 상기 애플릿이 실행될 수 있도록 하는데 필요한 모든 소프트웨어가 사용자가 자신의 애플릿을 로딩하는 것 및 이것이 동작하도록 하는 것과 관련될 수 있는 다양한 단계들을 인지함이 없이 매우 빠른 방식으로 자동적으로 로딩될 수 있다. 상술된 바와 같이, 적절한 API를 제공하는 것이 가상 머신 및/또는 애플릿을 활성화시키는 하나의 방식이다.
요금 및 로열티 징수 및 분배
일단 가상 머신, 애플릿, 또는 다른 소프트웨어 애플리케이션이 활성화되었다면, 애플리케이션에 대해 라이센스 요금이 지불되어야 한다. 예를 들어, 애플릿이 카드로 로딩된 보안 컨텐트를 제어하는데 사용되는 디지털 권리 관리("DRM")를 포함하는 경우, 상기 컨텐트에 대해 로열티가 또한 요청될 될 수 있다. 어느 경우든지, 본 발명은 임의의 유형의 로열티 또는 라이센스 지불을 행하는데 사용될 수 있다. 도 8은 다양한 엔티티들로의, 그리고 다양한 엔티티들로부터의 요금들의 지불을 위한 시스템을 도시한다. 소비자 요금(805A)은 지불 컬렉터(payment collector)(810)에 의해 징수된다. 이것은 바람직하게는 인터넷상에서 제공된 보안 서비스를 포함할 것이다. 지불 컬렉터(810)는 자신의 서비스들에 대해 요금 중 일부를 유지하고, 요금의 나머지를 장치 발행자(820)에게 전달한다. 예를 들어, 컨텐트 또는 프로그램이 SanDisk에 의해 발행된 SD 카드상으로 로딩되는 경우, SanDisk는 카드 발행자(820)일 것이며, 요금(805)의 일부(805B)를 수신할 것이다. 그 후, 발행자는 요금(805)의 일부를 유지할 것이며, 일부(805C)를 컨텐트 소유자 또는 라이센시(licensee)(830)에게 전송할 것이다. 이와 같이 더 설명된 실시예들에서, Java 가상 머신 뿐만 아니라, 가상 머신 상에서 실행되는 다른 애플릿들에 대한 지 불이 행해질 수 있다. 상기 시스템은 또한 라이센스를 필요로 하는 다른 유형들의 컨텐트에 대해 지불하는데 더 일반적으로 사용될 수 있다. 이 지불 시스템은 또한 컨텐트 및 상기 컨텐트를 장치의 사용자에게 렌더링(rendering)하는데 필요로 되는 소프트웨어에 대한 지불에서 매우 유용할 것이다.
보안
가상 머신을 안전하게 활성화시키는 것 이외에, 장치(100)는 또한 다른 보안 수단들을 구현한다. 가상 머신이 플래시 메모리에 저장되기 전에, 카드는 자신이 상술된 신뢰 기관에 의해 서명되는 것을 필요로 할 수 있다. 게다가, 다양한 암호화 기술들이 또한 구현될 수 있어서, 가상 머신(또는 다른 소프트웨어 애플리케이션)은 변조되거나, 부정하게 활성화되거나, 또는 장치들 상에 불법적으로 카피 및 설치될 수 없게 된다. VM은 다양한 널리 공지된 해시 함수(hash function)들로, 또는 대안적으로 장치 고유 키로 암호화될 수 있다.
이 암호화는 소프트웨어 및/또는 하드웨어로 성취될 수 있다. 이것은 MAC 값들, SHA-1 값들, 또는 해시 값들을 사용을 수반할 수 있다. 이러한 암호화/해독 기술들의 기초들은 널리 공지되어 있고, 본원에 상세히 설명될 필요가 없다.
하나의 실시예에서, 암호화는 제어기의 하드웨어에서 구현된 암호화 엔진(encryption engine)으로 수행된다. 암호화 엔진의 하드웨어는 애플리케이션의 인입 데이터(incoming data)가 카드의 메모리 내로 로딩되고 있을 때, 진행 중에, 애플리케이션의 인입 데이터를 암호화한다. 제어기는 상기 제어기에 특정되는 해시 값들을 생성하는데 사용되고, 제어기와의 관련성은 제어기의 일종의 서명 역할을 한다. 그 후, 이 서명은 애플리케이션이 실행되기 전에 검증된다. 적어도 부분적으로 제어기의 (전적으로 펌웨어 내라기보다는 오히려) 하드웨어 내에 암호화 엔진을 구현하는 것은 크래킹(cracking)되기가 매우 어려운 로버스트한 장치를 발생시킨다. 이것은 제어기가 장치의 보안을 크래킹하는 통상적인 방식인, (상이한 서명을 가지는) 대용 제어기로 교체될 수 없기 때문이다. 제어기의 서명이 또한 용이하게 위조될 수도 없다. 도 9에 도시된 바와 같이, 펌웨어(210)는 부트 로더 부분(boot loader portion)(210a), 시스템 부분(210b), 및 다양한 MAC 값들, SHA-1 값들, 또는 펌웨어용 해시 값들을 가질 수 있고, 이들은 실행을 위해 RAM 메모리로 개별적으로 로딩될 수 있는 오버레이(overlay)들 또는 세그먼트(segment)들로 분할될 수 있다. 본 발명의 일부 실시예들에서 사용되는 암호화 기술들의 이러한 양상 및 다른 양상들에 대한 부가적인 정보에 대해서는, 전체적으로 본원에 참조되어 있는 M. Holtzman 등의 출원들을 참조하라.
다양한 펌웨어 애플리케이션들이 도 9에 도시된 플래시 메모리 공간에 저장된다는 것을 알 수 있다. 가상 머신 및 애플릿들은 펌웨어 애플리케이션들로서 간주될 수 있다. 예를 들어, 202a로 넘버링된 APP FW 1은 가상 머신을 포함할 수 있고, 애플릿은 202b로 넘버링된 APP FW 2에 의해/내에 포함될 수 있다. 펌웨어의 이러한 피스들이 오버레이들로 분할되는 경우, 애플리케이션 펌웨어 오버레이 맵(application firmware overlay map)(201a)은 애플리케이션 펌웨어 "퍼즐(puzzle)"의 다양한 피스들이 저장되는 장소를 나타낼 것이다. 오버레이들의 해시 값들, SHA-1 값들, 또는 MAC 값들은 플래시 메모리 내의 테이블(201b)에 자신들 의 암호화된 형태로 저장된다. 이러한 값 자신들은 순서대로 암호화될 수 있고, 일부 실시예들에서, 상술된 바와 같이 장치 특정 하드웨어 암호화 기술들로 암호화될 수 있다. 일부 실시예들에서, 카드의 다른 펌웨어와의 통합 및 동작을 용이하게 하기 위하여 가상 머신용 플래시 메모리 내에 공간이 예약될 것이다. 이것은 펌웨어에 의해 부분적으로 제공되는 카드의 보안이 가상 머신 또는 카드상에서 실행되고 내부에 저장된 데이터에 액세스하는 임의의 다른 애플리케이션에 의해 손상될 수 있는 보안 카드에서 특히 중요하다.
본 발명의 실시예들이 도시 및 설명되었지만, 본 발명의 더 광범위한 양상들에서 본 발명을 벗어남이 없이 이러한 설명적인 실시예들에 대한 변화들 및 변경들이 행해질 수 있다. 따라서, 명시적으로 상술되지는 않았지만, 본 발명의 범위 내에 있는 본 발명의 다른 실시예들이 존재하므로, 본 발명의 범위가 제공된 설명적인 실시예들로만 제한되지 않는다는 점이 명백해야 한다. 그러므로, 첨부된 청구항들이 본 발명의 경계들 및 범위들을 설명한다는 점이 이해될 것이다. 그러나, 단어들이 본 발명의 범위를 설명하는 불완전한 방식이기 때문에, 청구항들의 명시된 단어들 내에 있지않는 등가의 구조들 및 방법들이 또한 본 발명의 실제 범위 내에 존재한다는 점이 또한 이해되어야 한다.
상술한 바와 같이, 본 발명은, 일반적으로 휴대용 대량 저장 장치들 및 상기 장치들 상에서 실행되는 펌웨어(firmware) 및 소프트웨어(software)를 제공하는데 사용된다.

Claims (47)

  1. 소프트웨어 애플리케이션이 대량 저장형 메모리 카드에서 사용될 수 있도록 하는 방법으로서,
    상기 메모리 카드의 데이터 저장 동작들을 실행하는 펌웨어를 제공하는 단계와
    상기 카드 내에서 하나 이상의 애플리케이션 프로그래밍 인터페이스들을 제공하는 단계와,
    상기 카드 내에 로딩될 때 활성화되지 않는 가상 머신을 제공하는 단계를
    포함하며,
    상기 메모리 카드는 사용자가 상기 소프트웨어 애플리케이션을 사용하고자 하는 경우 상기 가상 머신을 활성화함으로써 상기 가상 머신의 능력을 사용하도록 동작 가능한, 소프트웨어 애플리케이션이 대량 저장형 메모리 카드에서 사용될 수 있도록 하는 방법.
  2. 제 1항에 있어서, 상기 가상 머신이 활성화되는 경우에만, 상기 가상 머신에 대한 라이센스 요금을 지불하는 단계를 더 포함하는, 소프트웨어 애플리케이션이 대량 저장형 메모리 카드에서 사용될 수 있도록 하는 방법.
  3. 제 1항에 있어서, 상기 가상 머신의 능력을 사용하는 상기 소프트웨어 애플 리케이션을 상기 카드 내로 로딩하는 단계를 더 포함하며, 상기 소프트웨어 애플리케이션은 상기 대량 저장형 메모리 카드의 프로세서에 의한 실행에 대하여 상기 가상 머신에 의존하는, 소프트웨어 애플리케이션이 대량 저장형 메모리 카드에서 사용될 수 있도록 하는 방법.
  4. 제 1항에 있어서, 상기 가상 머신은 소비자가 상기 카드를 수신하기 전에 상기 카드 내에 로딩되는, 소프트웨어 애플리케이션이 대량 저장형 메모리 카드에서 사용될 수 있도록 하는 방법.
  5. 제 1항에 있어서, 상기 가상 머신은 소비자가 상기 카드를 수신한 후에 상기 카드 내로 필드 로딩되는, 소프트웨어 애플리케이션이 대량 저장형 메모리 카드에서 사용될 수 있도록 하는 방법.
  6. 제 1항에 있어서, 상기 펌웨어는 상기 가상 머신이 활성화 이후에만 상기 카드상에 저장된 데이터에 액세스하도록 하는, 소프트웨어 애플리케이션이 대량 저장형 메모리 카드에서 사용될 수 있도록 하는 방법.
  7. 제 3항에 있어서, 상기 소프트웨어 애플리케이션은 디지털 권리 관리를 포함하는, 소프트웨어 애플리케이션이 대량 저장형 메모리 카드에서 사용될 수 있도록 하는 방법.
  8. 제 7항에 있어서, 디지털 권리 관리 애플리케이션에 의해 관리되는 컨텐트에 대한 요금을 컨텐트의 소유자 또는 라이센서에게 지불하는 단계를 더 포함하는, 소프트웨어 애플리케이션이 대량 저장형 메모리 카드에서 사용될 수 있도록 하는 방법.
  9. 제 7항에 있어서, 상기 가상 머신은 암호화되는, 소프트웨어 애플리케이션이 대량 저장형 메모리 카드에서 사용될 수 있도록 하는 방법.
  10. 제 9항에 있어서, 상기 가상 머신은 자신이 상기 카드 내로 로딩될 때 상기 메모리 카드의 하드웨어에 의해 암호화되는, 소프트웨어 애플리케이션이 대량 저장형 메모리 카드에서 사용될 수 있도록 하는 방법.
  11. 제 9항에 있어서, 상기 암호화된 가상 머신은 상기 메모리 카드의 하드웨어의 서명을 포함하고, 서명을 생성한 하드웨어 이외의 하드웨어에 의하여 사용될 수 없는, 소프트웨어 애플리케이션이 대량 저장형 메모리 카드에서 사용될 수 있도록 하는 방법.
  12. 제 5항에 있어서, 상기 가상 머신의 확실성 및/또는 상기 가상 머신의 공급자를 검증하는 단계를 더 포함하는, 소프트웨어 애플리케이션이 대량 저장형 메모 리 카드에서 사용될 수 있도록 하는 방법.
  13. 휴대용 플래시 메모리 대량 저장 장치를 제공하는 방법으로서,
    상기 플래시 메모리 대량 저장 장치를 공급하는 단계와,
    상기 장치 내로 로딩될 애플리케이션을 갖는 제 1 자(first party)의 크리덴셜을 검증하는 단계를
    포함하며,
    상기 크리덴셜은 상기 제 1 자가 가상 머신을 포함하는 애플리케이션을 로딩하도록 하는, 휴대용 플래시 메모리 대량 저장 장치 제공 방법.
  14. 제 13항에 있어서, 상기 장치 내로 상기 애플리케이션을 로딩하는 단계를 더 포함하는, 휴대용 플래시 메모리 대량 저장 장치 제공 방법.
  15. 제 14항에 있어서, 상기 애플리케이션은 상기 장치가 소비자에게 판매된 이후에 필드에서 상기 장치 내로 로딩되는, 휴대용 플래시 메모리 대량 저장 장치 제공 방법.
  16. 제 13항에 있어서, 상기 애플리케이션과 관련된 요금의 지불을 수집하는 단계를 더 포함하는, 휴대용 플래시 메모리 대량 저장 장치 제공 방법.
  17. 제 16항에 있어서, 제 2 자(second party)에게 상기 요금의 일부를 분배하는 단계를 더 포함하는, 휴대용 플래시 메모리 대량 저장 장치 제공 방법.
  18. 제 16항에 있어서, 상기 요금은 로열티를 포함하는, 휴대용 플래시 메모리 대량 저장 장치 제공 방법.
  19. 제 16항에 있어서, 상기 요금은 상품들 또는 서비스들에 대한 전자 지불을 포함하는, 휴대용 플래시 메모리 대량 저장 장치 제공 방법.
  20. 대량 저장형 메모리 장치의 사용자에게 소프트웨어 애플리케이션을 제공하는 방법으로서,
    메모리 카드의 데이터 저장 동작들을 실행하는 펌웨어를 제공하는 단계와,
    상기 카드 내에서 하나 이상의 애플리케이션 프로그래밍 인터페이스들을 제공하는 단계와,
    상기 애플리케이션을 로딩시키기 위한 요청을 수신하는 단계와,
    가상 머신을 상기 카드 내로 로딩하는 단계와,
    상기 애플리케이션을 상기 카드 내로 로딩하는 단계를
    포함하는, 소프트웨어 애플리케이션 제공 방법.
  21. 제 20항에 있어서, 상기 가상 머신은 상기 애플리케이션의 요청자의 인식 없 이 로딩되는, 소프트웨어 애플리케이션 제공 방법.
  22. 제 20항에 있어서, 상기 가상 머신을 상기 카드 내로 로딩시키는 요청을 수신하는 단계를 더 포함하는, 소프트웨어 애플리케이션 제공 방법.
  23. 제 20항에 있어서, 상기 애플리케이션을 로딩하기 전에 상기 애플리케이션의 공급자를 인증하는 단계를 더 포함하는, 소프트웨어 애플리케이션 제공 방법.
  24. 제 20항에 있어서, 상기 가상 머신을 로딩하기 전에 상기 가상 머신의 공급자를 인증하는 단계를 더 포함하는, 소프트웨어 애플리케이션 제공 방법.
  25. 제 18항 또는 19항에 있어서, 상기 인증 단계는 대칭 인증을 포함하는, 소프트웨어 애플리케이션 제공 방법.
  26. 제 18항 또는 19항에 있어서, 상기 인증 단계는 비대칭 인증을 포함하는, 소프트웨어 애플리케이션 제공 방법.
  27. 제 20항에 있어서, 상기 카드 내에서 상기 애플리케이션을 암호화하는 단계를 더 포함하는, 소프트웨어 애플리케이션 제공 방법.
  28. 제 20항에 있어서, 상기 카드 내에서 상기 가상 머신을 암호화하는 단계를 더 포함하는, 소프트웨어 애플리케이션 제공 방법.
  29. 제 22항 또는 23항에 있어서, 상기 암호화 단계는 상기 메모리 카드의 제어기에 저장된 키를 사용하는 단계를 포함하는, 소프트웨어 애플리케이션 제공 방법.
  30. 제 20항에 있어서, 상기 애플리케이션은 상기 가상 머신이 실행되는 것을 필요로 하는, 소프트웨어 애플리케이션 제공 방법.
  31. 대량 저장형 메모리 장치와 함께 사용하기 위해 제공된 가상 머신을 인에이블하는 방법으로서,
    메모리 카드의 데이터 저장 동작들을 실행하는 펌웨어를 제공하는 단계와,
    상기 카드 내로 가상 머신을 로딩하는 단계와,
    상기 카드 내에서, 상기 가상 머신의 기능을 사용하기 위한 요청을 수신하는 단계와,
    상기 가상 머신이 기능을 하는데 필요한 애플리케이션 프로그래밍 인터페이스를 제공함으로써, 상기 가상 머신이 사용될 수 있도록 하는 단계를
    포함하는, 가상 머신 인에이블 방법.
  32. 제 31항에 있어서, 상기 애플리케이션 프로그래밍 인터페이스를 제공하는 단 계를 더 포함하는, 가상 머신 인에이블 방법.
  33. 제 31항에 있어서, 일단 상기 가상 머신의 사용이 가능해지면, 상기 가상 머신에 대한 라이센스 요금을 지불하는 단계를 더 포함하는, 가상 머신 인에이블 방법.
  34. 대량 저장형 메모리 장치에서 사용하기 위해 소프트웨어 애플리케이션을 활성화 또는 활성화해제하는 방법으로서,
    상기 메모리 장치의 데이터 저장 동작들을 실행하는 펌웨어를 제공하는 단계로서, 상기 소프트웨어 애플리케이션은 상기 메모리 장치에 저장된 데이터에 액세스하기 위하여 상기 펌웨어 데이터 저장 동작들에 의존하는, 펌웨어 제공 단계와,
    상기 장치의 펌웨어로, 일회용 패스워드 값을 생성하는 단계와,
    상기 장치의 상기 펌웨어로 생성된 상기 일회용 패스워드 값을 상기 장치 외부에서 생성된 일회용 패스워드 값과 비교하는 단계와,
    상기 비교가 상기 장치에 의해 생성된 상기 값이 상기 장치 외부에서 생성된 상기 값과 부합한다고 검증하는 경우, 상기 소프트웨어 애플리케이션의 실행을 허용하거나 허용하지 않는 단계를
    포함하는, 소프트웨어 애플리케이션을 활성화 또는 활성화해제하는 방법.
  35. 제 34항에 있어서, 상기 일회용 패스워드 값을 생성하는 단계는 상기 소프트 웨어 애플리케이션과 관련된 고유 식별자; 및 상기 장치와 관련된 고유 식별자 중 하나 이상, 및 시드의 펑션으로서 상기 패스워드를 생성하는 단계를 포함하는, 소프트웨어 애플리케이션을 활성화 또는 활성화해제하는 방법.
  36. 제 35항에 있어서, 상기 일회용 패스워드 값을 생성하는 단계는 상기 장치 유형의 펑션으로서 상기 패스워드를 생성하는 단계를 더 포함하는, 소프트웨어 애플리케이션을 활성화 또는 활성화해제하는 방법.
  37. 제 34항에 있어서, 많은 대량 저장형 메모리 장치들이 생성되고, 상기 장치들 각각은 고유 식별자에 기초하여 값들을 다양화하는 일회용 패스워드 생성 알고리즘을 사용함으로써 소정의 카운트에 대하여 상이한 일회용 패스워드 값들을 여전히 생성하는 동일한 시드를 포함하는, 소프트웨어 애플리케이션을 활성화 또는 활성화해제하는 방법.
  38. 제 34항에 있어서, 상기 고유 식별자는 특정 장치와 고유하게 관련된 번호를 포함하는, 소프트웨어 애플리케이션을 활성화 또는 활성화해제하는 방법.
  39. 제 34항에 있어서, 상기 고유 식별자는 상기 소프트웨어 애플리케이션의 특정 인스턴스와 특정하게 관련된 번호를 포함하는, 소프트웨어 애플리케이션을 활성화 또는 활성화해제하는 방법.
  40. 대량 저장형 플래시 메모리 장치로서,
    제어기와,
    랜덤 액세스 메모리와,
    플래시 메모리를 포함하는 대량 저장장치와,
    가상 머신과,
    상기 가상 머신의 동작이 희망될 때 상기 가상 머신의 동작을 인에이블하는 메커니즘을
    포함하며,
    상기 가상 머신과 관련된 라이센스 요금은 상기 장치의 사용자의 활동에 의하여 메커니즘이 트리거되는 경우에 지불되는, 대량 저장형 플래시 메모리 장치.
  41. 제 40항에 있어서, 상기 가상 머신은 상기 대량 저장장치 플래시 메모리에 저장되는, 대량 저장형 플래시 메모리 장치.
  42. 대량 저장형 플래시 메모리 장치로서,
    제어기와,
    랜덤 액세스 메모리와,
    플래시 메모리를 포함하는 대량 저장장치와,
    가상 머신과,
    상기 가상 머신을 인에이블하는 수단을
    포함하며,
    상기 인에이블 수단이 트리거될 때 상기 가상 머신에 대한 요금의 지불이 개시되는, 대량 저장형 플래시 메모리 장치.
  43. 대량 저장형 메모리 카드로서,
    플래시 메모리와,
    제어기와,
    상기 플래시 메모리의 판독 및 기록 동작들을 제어하는 펌웨어를
    포함하고,
    상기 펌웨어는 상기 판독 및 기록 동작들로의 액세스를 제한하는 보안 루틴들을 상기 펌웨어 내에 포함하며,
    상기 펌웨어의 제 1 동작 상태는 가상 머신이 없는 상기 카드의 동작을 위한 제 1 상태이고,
    상기 펌웨어의 제 2 동작 상태는 가상 머신을 갖는 상기 카드의 동작을 위한 제 2 상태이며,
    상기 제 2 상태에 있는 동안, 상기 펌웨어의 상기 보안 루틴들은 판독 및 기록 보호된 데이터로부터의 데이터로의 가상 머신 액세스를 승인하는, 대량 저장형 메모리 카드.
  44. 제 43항에 있어서, 상기 가상 머신을 위한 메모리 공간이 상기 플래시 메모리 내에서 예약되는, 대량 저장형 메모리 카드.
  45. 제 43항에 있어서, 상기 카드는 가상 머신이 카드 내로 로딩될 때까지 상기 제 1 상태로 동작하고, 그 후에 상기 제 2 상태로 동작하는, 대량 저장형 메모리 카드.
  46. 제 45항에 있어서, 애플릿이 상기 가상 머신과 함께 로딩되는, 대량 저장형 메모리 카드.
  47. 제 45항에 있어서, 상기 애플릿은 디지털 권리 관리 애플리케이션을 포함하는, 대량 저장형 메모리 카드.
KR1020097002491A 2006-08-08 2007-07-26 가상 머신 활성화를 갖는 휴대용 대량 저장장치 KR101504647B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11/463,256 2006-08-08
US11/463,264 2006-08-08
US11/463,264 US20080126705A1 (en) 2006-08-08 2006-08-08 Methods Used In A Portable Mass Storage Device With Virtual Machine Activation
US11/463,256 US7725614B2 (en) 2006-08-08 2006-08-08 Portable mass storage device with virtual machine activation
PCT/US2007/074399 WO2008021682A2 (en) 2006-08-08 2007-07-26 Portable mass storage with virtual machine activation

Publications (2)

Publication Number Publication Date
KR20090048581A true KR20090048581A (ko) 2009-05-14
KR101504647B1 KR101504647B1 (ko) 2015-03-30

Family

ID=38823627

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097002491A KR101504647B1 (ko) 2006-08-08 2007-07-26 가상 머신 활성화를 갖는 휴대용 대량 저장장치

Country Status (5)

Country Link
EP (1) EP2049991A2 (ko)
JP (1) JP5118700B2 (ko)
KR (1) KR101504647B1 (ko)
TW (1) TWI357572B (ko)
WO (1) WO2008021682A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101103313B1 (ko) * 2009-09-28 2012-01-11 주식회사 잉카인터넷 가상머신 환경에서의 매체제어방법
KR101655890B1 (ko) * 2015-04-08 2016-09-08 (주)세이퍼존 배드 유에스비 방지를 위한 보안 유에스비 장치의 펌웨어 설치 방법

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8868925B2 (en) * 2008-12-09 2014-10-21 Nvidia Corporation Method and apparatus for the secure processing of confidential content within a virtual machine of a processor
CN101964068A (zh) * 2009-07-22 2011-02-02 深圳市江波龙电子有限公司 一种sd卡及其数据访问控制方法
US9292319B2 (en) 2012-03-28 2016-03-22 Google Inc. Global computing interface
TWI494856B (zh) * 2012-05-21 2015-08-01 Irene Tsai Program call method and mobile device
SG11201708726PA (en) * 2015-03-26 2017-11-29 Einnovations Holdings Pte Ltd System and method for facilitating remittance
CN111443991B (zh) * 2020-03-26 2023-06-23 恒宝股份有限公司 智能卡控制方法、装置及智能卡

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956505A (en) 1991-12-24 1999-09-21 Pitney Bowes Inc. Remote activation of software features in a data processing device
DE69827405T2 (de) * 1997-03-24 2005-05-19 Visa International Service Association, Foster City System und verfahren für eine mehrzweckchipkarte die eine nachträgliche speicherung einer anwendung auf dieser karte ermöglicht
JP2002169622A (ja) * 2000-09-25 2002-06-14 Fujitsu Ltd 課金方法およびプログラム
US20020145632A1 (en) * 2000-10-27 2002-10-10 Shimon Shmueli Portable interface for computing
JP2002279372A (ja) * 2001-03-15 2002-09-27 Nippon Telegr & Teleph Corp <Ntt> Icカード及びicカードのアプリケーション管理方法
JP2002318702A (ja) * 2001-04-19 2002-10-31 Mitsubishi Electric Corp 車載情報システム
JP2002358205A (ja) * 2001-06-01 2002-12-13 Dainippon Printing Co Ltd 複数のプラットホームを備えた携帯可能情報処理装置
JP3913128B2 (ja) * 2002-02-28 2007-05-09 松下電器産業株式会社 メモリカード
DE60210416T2 (de) * 2002-02-28 2006-09-07 Matsushita Electric Industrial Co., Ltd., Kadoma Speicherkarte
KR20050103448A (ko) * 2003-02-04 2005-10-31 마츠시타 덴끼 산교 가부시키가이샤 반도체 메모리 카드 및 컴퓨터 판독가능한 프로그램
JP4486828B2 (ja) * 2003-02-04 2010-06-23 パナソニック株式会社 半導体メモリカード、コンピュータ読取可能なプログラム
JP2005190276A (ja) * 2003-12-26 2005-07-14 Toshiba Corp メモリカード
KR20050070381A (ko) * 2003-12-30 2005-07-07 엘지전자 주식회사 원타임 패스워드 기반 인증 시스템
US20060004667A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for collecting operating system license revenue using an emulated computing environment
US20060106920A1 (en) * 2004-11-15 2006-05-18 Microsoft Corporation Method and apparatus for dynamically activating/deactivating an operating system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101103313B1 (ko) * 2009-09-28 2012-01-11 주식회사 잉카인터넷 가상머신 환경에서의 매체제어방법
KR101655890B1 (ko) * 2015-04-08 2016-09-08 (주)세이퍼존 배드 유에스비 방지를 위한 보안 유에스비 장치의 펌웨어 설치 방법

Also Published As

Publication number Publication date
KR101504647B1 (ko) 2015-03-30
WO2008021682A3 (en) 2008-07-24
TW200820076A (en) 2008-05-01
JP5118700B2 (ja) 2013-01-16
JP2010500656A (ja) 2010-01-07
EP2049991A2 (en) 2009-04-22
TWI357572B (en) 2012-02-01
WO2008021682A2 (en) 2008-02-21

Similar Documents

Publication Publication Date Title
US8447889B2 (en) Portable mass storage device with virtual machine activation
US20080126705A1 (en) Methods Used In A Portable Mass Storage Device With Virtual Machine Activation
US7171558B1 (en) Transparent digital rights management for extendible content viewers
US8549313B2 (en) Method and system for integrated securing and managing of virtual machines and virtual appliances
KR100896625B1 (ko) 숨겨진 중간 키들을 사용하여 소프트웨어를 인증하기 위한시스템 및 방법
US8214630B2 (en) Method and apparatus for controlling enablement of JTAG interface
US6327652B1 (en) Loading and identifying a digital rights management operating system
US7302709B2 (en) Key-based secure storage
US8065521B2 (en) Secure processor architecture for use with a digital rights management (DRM) system on a computing device
US8621601B2 (en) Systems for authentication for access to software development kit for a peripheral device
JP5636371B2 (ja) 汎用コンピューティングデバイスにおけるコード実行制御および再帰的セキュリティプロトコルでのコード実行制御のための方法およびシステム
KR101504647B1 (ko) 가상 머신 활성화를 갖는 휴대용 대량 저장장치
AU6492198A (en) Method and system for networked installation of uniquely customized, authenticable, and traceable software applications
JP2003507785A (ja) コンピュータ・プラットフォームおよびその運用方法
Dietrich et al. Towards customizable, application specific mobile trusted modules
JP2011523481A (ja) 周辺装置用ソフトウェア開発キットのアクセス認証
Sadeghi et al. Enabling fairer digital rights management with trusted computing
US20090293117A1 (en) Authentication for access to software development kit for a peripheral device
WO2023174943A1 (en) License binding of an application license to a device
Computing 3rd European Trusted Infrastructure Summer School (ETISS 2008)
CA2615030A1 (en) Transparent digital rights management for extendible content viewers

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee