KR20080018196A - 순응하는 장치와 함께 배포하기 위한 하드웨어 및소프트웨어 라이센스를 식별하기 위한 데이터 구조 - Google Patents

순응하는 장치와 함께 배포하기 위한 하드웨어 및소프트웨어 라이센스를 식별하기 위한 데이터 구조 Download PDF

Info

Publication number
KR20080018196A
KR20080018196A KR1020077029322A KR20077029322A KR20080018196A KR 20080018196 A KR20080018196 A KR 20080018196A KR 1020077029322 A KR1020077029322 A KR 1020077029322A KR 20077029322 A KR20077029322 A KR 20077029322A KR 20080018196 A KR20080018196 A KR 20080018196A
Authority
KR
South Korea
Prior art keywords
license
software
hardware
data
information
Prior art date
Application number
KR1020077029322A
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 KR20080018196A publication Critical patent/KR20080018196A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1064Restricting content processing at operating system level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems

Abstract

본 발명은 ACPI BIOS를 이용하여 소프트웨어 라이센싱을 시행하기 위한 시스템 및 방법에 관한 것이다. 소프트웨어 및 하드웨어가 실행될 시스템의 소프트웨어 및 하드웨어 둘 다에 관한 정보를 포함하는 디지털 라이센스가 제공된다. 라이센싱 프로세스는 최종 사용자로부터 하드웨어 및 소프트웨어 정보를 수신하고, 이 둘에 라이센스를 바인딩한다. 주 BIOS 바이너리는 코드 및 정적 마더보드 특정 데이터를 포함한다. 예를 들어, 일련번호와 같은 기계-특정 시스템 관리 데이터를 포함하는 동적 상태 값들은 이어서 NVRAM 또는 그의 동등물에 저장될 수 있다. 주 BIOS 바이너리는 하드웨어를 시험하기 위한 충분한 기능성을 제공한다. 시스템에 로드될 소프트웨어가 알려지면, 소프트웨어 및 하드웨어 정보 모두를 포함하는, 대응되는 디지털 라이센스가 NVRAM에 로드된다.
데이터 구조, 라이센스, ACPI BIOS

Description

순응하는 장치와 함께 배포하기 위한 하드웨어 및 소프트웨어 라이센스를 식별하기 위한 데이터 구조{DATA STRUCTURE FOR IDENTIFYING HARDWARE AND SOFTWARE LICENSES TO DISTRIBUTE WITH A COMPLYING DEVICE}
본 발명은 일반적으로 컴퓨터 하드웨어 및 소프트웨어 배포의 분야에 관한 것이다. 더 구체적으로, 본 발명은 소프트웨어가 특정 하드웨어 장치에 배포되고 로드될 수 있는지를 식별하는 데이터 구조에 관한 것이다.
전통적으로, 소프트웨어는 한 장치의 사용(per device usage)을 위해 라이센스된다. 하지만, 피허가자(licensee) 의무를 강제하기 위한 제한된 방법들이 있었으며, 이것은 소프트웨어가 다수의 허가되지 않은 기계들에 설치되도록 하였다. 디지털 라이센스는 쉬링크랩 라이센스(shrink wrap license)를 개선한 것으로, 하나의 소프트웨어를 특정한 하나의 하드웨어에 대하여 제한하기 위해 사용되고, 여기서 디지털 라이센스는 소프트웨어 및 하드웨어 정보 모두를 포함한다.
디지털 라이센스에 있어서 하나의 문제는 매년, 1억 개가 넘는 개인용 컴퓨터가 OEM(original equipment manufacturer)을 통해 최종 고객에게 발송된다는 것이다. 모든 최종 사용자들에게 소프트웨어의 카피 및 특정 기계에 대한 디지털 라이센스를 취득하도록 요구하는 것은 실용적이지 않다. 이 문제에 대한 부분적인 해결책이 MICROSOFT WINDOWS XP가 사전-로드된(pre-loaded) 새로운 컴퓨터들에 사용되었다. OEM들에게 "시스템 잠금 사전-설치(System Locked Pre-installation)" 또는 SLP라 불리는 메커니즘을 이용하여 WINDOWS XP를 "사전-활성화(pre-activate)"하는 능력이 제공되었다.
SLP는 뜻하지 않은 무단복제로부터 설치를 보호하기 위해서 OEM의 개인용 컴퓨터 BIOS에 저장된 정보를 사용한다. 최종 고객으로부터 MICROSOFT로의 통신이 요구되지 않으며 하드웨어 해시도 생성되지 않거나 필요하지 않다. 시동 시에, WINDOWS XP는 PC의 BIOS를 SLP 정보와 비교한다. 만약 그것이 일치하면, 활성화가 요구되지 않는다. 따라서, SLP를 갖는 PC상에서 각각의 모든 하드웨어가 변경될 수 있으며 어떤 재활성화도 요구되지 않을 수 있다. 하지만, 이 방법의 한계는 BIOS의 OEM 정보가 단순히 그것을 BIOS에 플래시(flash)함으로써 기입될 수 있다는 것이다. 따라서, 그것은 허가되지 않은 기계의 BIOS에 기입되어, 허가되지 않은 기계를 허가된 기계처럼 보이게 할 수 있다.
따라서, 디지털 라이센스가 제조업자들에 의해 사전-로드될 소프트웨어 및 하드웨어와 관련된 정보를 포함할 것이 요구되며, 디지털 라이센스가 하드 드라이브 손상 또는 이미지 기반 설치(image based installation)와 같이 시스템 생명 주기(life cycle) 동안 지속될 것이 요구된다. 또한 디지털 라이센스 정보가 허가되지 않은 PC에 쉽게 전송되지 않도록 하는 것도 요구된다. 본 발명은 이들 및 다른 문제들에 대한 해결책을 제공한다.
본 발명은 소프트웨어 라이센싱 시행을 위해 ACPI BIOS의 사용을 확장한다. ACPI는 고급 구성 및 전력 인터페이스(advanced configuration and power interface)의 약어이다. 소프트웨어가 실행될 컴퓨팅 장치의 소프트웨어 및 하드웨어 모두에 관한 정보를 포함하는 디지털 라이센스가 제공된다. 라이센싱 프로세스는 최종 사용자로부터 하드웨어 및 소프트웨어 정보를 수신하고, 이 모두에 라이센스를 바인딩한다. 본 발명에 따라, (ROM 또는 그의 동등물의) 주 BIOS 바이너리는 코드 및 정적 마더보드(static motherboard) 특정 데이터를 포함한다. 예를 들어, 일련 번호와 같은 기계-특정(machine-specific) 시스템 관리 데이터를 포함하는 동적 상태 값(dynamic state value)들은 NVRAM 또는 그의 동등물에 계속적으로 저장될 수 있다. 주 BIOS 바이너리는 하드웨어를 검사하기 위한 충분한 기능성을 제공한다. 시스템에 로드될 소프트웨어가 알려지면, 소프트웨어 및 하드웨어 정보 모두에 관한 정보를 포함하는, 대응하는 디지털 라이센스가 NVRAM에 로드된다.
본 발명의 추가적인 특징 및 장점들은 첨부된 도면을 참조하여 이어지는 예시적인 실시예들에 대한 아래의 상세한 설명을 통해 분명해질 것이다.
앞선 설명뿐만 아니라 본 발명의 실시예에 대한 이어지는 상세한 설명은 첨부된 도면과 함께 읽음으로써 더 잘 이해될 것이다. 본 발명을 설명하기 위한 목적으로, 도면에는 본 발명의 예시적인 구조가 도시되지만, 본 발명은 개시된 특정 방법 및 수단들에 제한되지 않는다.
도 1은 본 발명의 양상들이 구현될 수 있는 예시적인 컴퓨팅 환경을 도시하 는 블록도이다.
도 2는 본 발명에 따른 예시적인 ACPI BIOS 테이블이다.
도 3은 도 2에 도시된 소프트웨어 라이센싱 구조를 도시한다.
예시적인 컴퓨팅 환경
도 1은 본 발명이 구현되기에 적합한 컴퓨팅 시스템 환경(100)의 일례를 도시하고 있다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 일례에 불과하며, 본 발명의 용도 또는 기능성의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
본 발명은 많은 기타 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작할 수 있다. 본 발명에서 사용하는 데 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 개인용 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템들이나 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만 이에 제한되는 것은 아니다.
본 발명은 일반적으로 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 관련하여 기술될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크 또는 기타 데이터 전송 매체를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈 및 기타 데이터는 메모리 저장 장치를 비롯한 로컬 및 원격 컴퓨터 저장 매체 둘 다에 위치할 수 있다.
도 1과 관련하여, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들은 처리 장치(120), 시스템 메모리(130), 및 시스템 메모리를 비롯한 각종 시스템 컴포넌트들을 처리 장치(120)에 연결시키는 시스템 버스(121)를 포함하지만 이에 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예로서, 이러한 아키텍처는 ISA(industry standard architecture) 버스, MCA(micro channel architecture) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스, PCI(peripheral component interconnect) 버스(메자닌 버스(mezzanine bus)로도 알려진), PCI-익스프레스(Peripheral Component Interconnect Express), 그리고 SMBus(Systems Management Bus)를 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨터(110)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함하지만 이에 제한되는 것은 아니다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함되는 것으로 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132)과 같은 휘발성 및/또는 비휘발 성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에, 컴퓨터(110) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)은 통상적으로 처리 장치(120)가 즉시 액세스 할 수 있고 및/또는 현재 동작시키고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 또한 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체를 포함한다. 단지 예로서, 도 1은 비이동식·비휘발성 자기 매체에 기록을 하거나 그로부터 판독을 하는 하드 디스크 드라이브(141), 이동식·비휘발성 자기 디스크(152)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(151), CD-ROM 또는 기타 광 매체 등의 이동식·비휘발성 광 디스크(156)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(155)를 포함한다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고상(solid state) 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)에 다른 번호가 부여되어 있다는 것은 적어도 이들이 다른 사본(copy)이라는 것을 나타내기 위한 것이다. 사용자는 키보드(162) 및 일반적으로 마우스, 트랙볼(trackball) 또는 터치패드로 불리는 포인팅 장치(161)와 같은 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다. 다른 입력 장치(도시되지 않음)로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 접속될 수 있다. 모니터 외에, 컴퓨터는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(195)를 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 도 1에는 메모리 저장 장치(181)만이 도시되었지만 통상적으로 컴퓨터(110)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함한다. 도시된 논리적 접속으로는 근거리 통신망(LAN)(171) 및 원거리 통신망(WAN)(173)이 있지만, 기타 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷과 같은 WAN(173)을 통해 통신을 설정하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 예로서, 도 1은 원격 애플리케이션 프로그램(185)이 메모리 장치(181)에 있는 것으로 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
예시적인 실시예들
본 발명은 라이센싱 정보를 노출하는 ACPI BIOS 내의 데이터 구조에 관한 것이다. ACPI 시스템 펌웨어는 테이블로 조직된 데이터를 주 메모리에 배치함으로써 시스템의 특성을 설명한다. 이 테이블은 RSDT 및 DSDT와 같은 이름을 갖는다. DSDT(Differentiated System Description Table)는 시스템의 장치들이 설명되는 곳이기 때문에 가장 큰 테이블이다. 본 발명은, 예를 들어, SLIC라 불리는 소프트웨어 라이센싱 테이블을 구현함으로써 이 구조 위에 구축된다.
ACPI_SLIC 시스템 테이블 구조는 마더보드에 존속하는 라이센싱 정보를, 예를 들어, 운영 체제의 라이센싱 시행 엔진에 노출한다. ACPI_SLIC는 유리하게, 도 2에 도시된 것과 같이, 다른 ACPI 테이블들과 동일한 헤더 구조를 공유한다. 이에 더해, 두 개의 추가적인 데이터 구조가 제공된다: (1)디지털 서명(digitally signed) 라이센스 데이터 및 (2)위에 언급된 디지털 라이센스의 서명을 검증하는 공개 키(public key).
ACPI_SLIC 내의 디지털 라이센스 데이터는 바람직하게 작은데 이는 마더보드의 지속 메모리가 비싸기 때문이다. 디지털 라이센스가 적어도 다음의 데이터들을 포함하는 것이 바람직하다: (1)하드웨어 정보, 예를 들어, 개별 하드웨어 ID 또는 마더보드 유형 ID, (2)소프트웨어 정보, 예를 들어, 제품 키 또는 운영 체제 플래그, (3)RSA1024에 기초하지만, 이에 제한되지 않는, 디지털 서명 및 타임스탬프. ACPI_SLIC 내의 디지털 라이센스는 불분명한 문자열(opaque string)인 것이 바람직하다. 운영 체제가 데이터를 해석하는 방식은 유형 값(type value)에 의해 결정된 다.
위의 항목 (1)의 디지털 라이센스를 검증하기 위한 공개 키는 BIOS 등에 포함된 마더보드의 특별한 하드웨어에 구현될 수 있다. 표준화된 운영 체제 검색을 위해, 이 디지털 서명의 검증기(verifier)도 ACPI_SLIC를 통해 노출된다.
도 2에 도시된 소프트웨어 라이센싱 구조는 도 3에서 더 상세히 정의된다. 소프트웨어 라이센싱 구조는 디지털 라이센스 및 그의 서명 검증기를 포함하며, 이들은 구조 유형의 값에 의해 노출되고 구별된다.
본 발명은 ACPI BIOS를 위한 유연한 제작 프로세스를 지원한다. BIOS는 개념적으로 두 개의 부분으로 볼 수 있다:
1. 코드 및 정적 마더보드 특정 데이터를 포함하는, ROM 또는 그의 동등물상의 주 BIOS 바이너리; 및
2. 일련번호와 같은 시스템 관리 데이터를 포함하는, NVRAM 또는 그의 동등물상의 동적 상태 값.
전자는 마더보드 특정(motherboard specific)이며, 후자는 개별 기계 특정(individual machine specific)이다.
PC 제작의 초기 단계에서, OEM은 출하 시간 중에 최종 사용자를 위해 어떤 소프트웨어가 그 특정 PC에 로드될지 모를 수 있다. 하지만, OEM은 하드웨어를 시험하기 위해 전기능(full functional) 펌웨어/BIOS가 필요할 수 있다. 따라서, 주 BIOS 바이너리가 ROM 또는 그의 동등물에 로드된다. PC와 함께 어떤 소프트웨어가 발송될지 등을 OEM이 결정하고난 후, 후기 제작 프로세스에서 소프트웨어 및 하드 웨어 둘 다에 관한 정보를 포함하는, 대응되는 디지털 라이센스가 NVRAM 또는 그 동등물에 로드될 수 있다.
상술된 것에 더해, ACPI코드는 마더보드의 유형마다 다르다. 본 발명에 따라, 컴파일된 BIOS 바이너리의 일부인 ACPI 시스템 테이블 헤더의 OEMID 및 OEMTableID 값들은 마더보드를 위한 간접적인 식별자로 사용될 수 있다.
따라서, 주 BIOS 바이너리 내의 ACPI BIOS 코드는 NVRAM(또는 그의 동등물)으로부터 디지털 라이센스를, ROM의 BIOS 바이너리(또는 마더보드의 다른 특별한 칩)로부터 서명 검증기를 검색하고, 데이터를 사전 정의된 ACPI_SLIC 구조로 운영 체제에 제공한다.
본 발명이 다양한 도면의 바람직한 실시예들과 관련하여 설명되었지만, 본 발명을 벗어나지 않으면서 본 발명의 동일한 기능을 수행하도록, 다른 유사한 실시예들이 사용되거나, 설명된 실시예들에 대한 변경 또는 추가가 이루어질 수 있음이 이해되어야 한다. 예를 들어, 본 기술 분야의 숙련된 자들은 본 명세서에 설명된 본 발명이 유선 또는 무선인, 모든 임의의 컴퓨팅 장치 또는 환경에 적용될 수 있으며, 통신 네트워크를 통해 연결되고, 네트워크를 통해 상호작용하는 임의의 수의 컴퓨팅 장치에 적용될 수 있음을 이해할 것이다. 또한, 특히 무선 네트워크로 연결된 장치들의 수가 증가함에 따라, 핸드-헬드 장치 운영 체제 및 기타 애플리케이션 특정 운영체제를 포함하는 컴퓨터 플랫폼들이 숙고된다는 것이 강조되어야 한다. 이에 더해, 본 발명은 복수의 프로세싱 칩 또는 장치 내 또는 이들 간에 구현될 수 있으며, 저장소도 이와 유사하게 복수의 장치들 간에서 영향을 받을 수 있 다. 따라서, 본 발명은 어떤 하나의 실시예에 제한되어서는 안되며, 오히려 첨부된 청구항에 따른 폭과 범위 내에서 이해되어야 한다.

Claims (15)

  1. 컴퓨팅 시스템에 배포하기에 적합한 애플리케이션에서 사용하기 위해 컴퓨터 판독가능 매체에 구현된 데이터 구조로서,
    상기 데이터 구조의 컨텐트에 관한 정보를 포함하는 헤더 필드, 및
    상기 컴퓨팅 시스템의 하드웨어 및 소프트웨어에 관한 정보와 디지털 서명을 포함하는 소프트웨어 라이센스 구조
    를 포함하는 데이터 구조.
  2. 제1항에 있어서,
    상기 소프트웨어 라이센스 구조는, 구조 유형 필드, 라이센스 데이터 길이 필드 및 라이센스 데이터 필드를 포함하는 데이터 구조.
  3. 제2항에 있어서,
    상기 라이센스 데이터 필드는 상기 컴퓨팅 시스템 내의 하드웨어에 관한 정보를 포함하는 데이터 구조.
  4. 제2항에 있어서,
    상기 라이센스 데이터 필드는 상기 컴퓨팅 시스템에 로드된 소프트웨어에 관한 정보를 포함하는 데이터 구조.
  5. 제2항에 있어서,
    상기 라이센스 데이터 필드는 타임스탬프(timestamp)를 포함하는 데이터 구조.
  6. 제1항에 있어서,
    상기 애플리케이션은 상기 디지털 라이센스를 검증하는 검증기(verifier)를 포함하며, 상기 검증기는 상기 컴퓨팅 시스템에 인스톨된 운영 체제에 노출된 데이터 구조.
  7. 개인용 컴퓨터의 제작 중에 BIOS를 채우기 위한 방법으로서,
    주 BIOS 바이너리를 로드하는 단계, 및
    상기 컴퓨팅 시스템의 하드웨어 및 소프트웨어에 관한 정보 및 디지털 서명을 포함하는 소프트웨어 라이센스 구조를 상기 BIOS에 로드하는 단계
    를 포함하는 방법.
  8. 제7항에 있어서,
    디지털 라이센스 및 서명 검증기를 검색하기 위해 상기 주 BIOS 바이너리에 명령을 제공하는 단계를 더 포함하는 방법.
  9. 제8항에 있어서,
    상기 디지털 라이센스를 상기 개인용 컴퓨터에 인스톨된 운영 체제에 제공하기 위해, 상기 주 BIOS 바이너리에 명령을 제공하는 단계를 더 포함하는 방법.
  10. 데이터 구조를 사용하여 컴퓨팅 장치와 함께 배포된 하드웨어 및 소프트웨어를 라이센싱하기 위한 방법으로서,
    상기 컴퓨팅 장치 내에 포함된 BIOS에 상기 데이터 구조를 제공하는 단계 -상기 데이터 구조는, 상기 데이터 구조의 컨텐트에 관한 정보를 포함하는 헤더 필드, 및 상기 컴퓨팅 시스템의 하드웨어 및 소프트웨어에 관한 정보와 디지털 서명을 포함하는 소프트웨어 라이센스 구조를 포함함-,
    상기 디지털 서명을 검증하는 서명 검증기를 제공하는 단계, 및
    상기 컴퓨팅 장치에서 실행되고 있는 운영 체제에 상기 데이터 구조를 제공하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    상기 소프트웨어 라이센스 구조는, 구조 유형 필드, 라이센스 데이터 길이 필드 및 라이센스 데이터 필드를 포함하는 방법.
  12. 제10항에 있어서,
    상기 라이센스 데이터 필드는 상기 컴퓨팅 시스템 내의 하드웨어에 관한 정보를 포함하는 방법.
  13. 제10항에 있어서,
    상기 라이센스 데이터 필드는 상기 컴퓨팅 시스템에 로드된 소프트웨어에 관한 정보를 포함하는 방법.
  14. 제10항에 있어서,
    상기 라이센스 데이터 필드는 타임스탬프를 포함하는 방법.
  15. 제10항에 있어서,
    디지털 라이센스 및 상기 서명 검증기를 검색하기 위해 BIOS 바이너리에 명령을 제공하는 단계를 더 포함하는 방법.
KR1020077029322A 2005-06-21 2006-06-21 순응하는 장치와 함께 배포하기 위한 하드웨어 및소프트웨어 라이센스를 식별하기 위한 데이터 구조 KR20080018196A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/157,886 US20060288422A1 (en) 2005-06-21 2005-06-21 Data structure for identifying hardware and software licenses to distribute with a complying device
US11/157,886 2005-06-21

Publications (1)

Publication Number Publication Date
KR20080018196A true KR20080018196A (ko) 2008-02-27

Family

ID=37574870

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077029322A KR20080018196A (ko) 2005-06-21 2006-06-21 순응하는 장치와 함께 배포하기 위한 하드웨어 및소프트웨어 라이센스를 식별하기 위한 데이터 구조

Country Status (4)

Country Link
US (1) US20060288422A1 (ko)
KR (1) KR20080018196A (ko)
CN (1) CN101627364A (ko)
WO (1) WO2007002279A2 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8132266B2 (en) * 2006-03-28 2012-03-06 Emc Corporation Methods, systems, and computer program products for identifying and enforcing software feature limits across different hardware platforms, software releases, and tiers
US20080183591A1 (en) * 2007-01-31 2008-07-31 Microsoft Corporation System for partner engagement in commercial distribution of digital porducts
CN101236589B (zh) * 2007-02-02 2010-11-10 鸿富锦精密工业(深圳)有限公司 保护计算机操作系统产权的装置及方法
JP2008217773A (ja) * 2007-02-07 2008-09-18 Hitachi Ltd 組み込みソフトウェア動作装置及び組み込みソフトウェアのライセンス判定方法
US8782385B2 (en) * 2007-04-16 2014-07-15 Dell Products, Lp System and method of enabling use of software applications using stored software licensing information
TWI345726B (en) * 2007-09-03 2011-07-21 Giga Byte Tech Co Ltd Methods and systems for updating image file in a bios memory
US8667604B2 (en) * 2007-09-13 2014-03-04 Microsoft Corporation Protection of software on portable medium
TWI354215B (en) * 2008-03-28 2011-12-11 Asustek Comp Inc A procedure to establish a system licensing intern
US20090287917A1 (en) * 2008-05-19 2009-11-19 Microsoft Corporation Secure software distribution
US20100293536A1 (en) * 2009-05-12 2010-11-18 Microsoft Corporation Enhanced product functionality based on user identification
US20100293103A1 (en) * 2009-05-12 2010-11-18 Microsoft Corporation Interaction model to migrate states and data
US9424399B2 (en) * 2009-05-12 2016-08-23 Microsoft Technology Licensing, Llc Availability of permission models in roaming environments
US9614678B2 (en) 2011-06-10 2017-04-04 Dell Products, Lp System and method for extracting device uniqueness to assign a license to the device
US8949813B2 (en) * 2011-07-29 2015-02-03 Dell Products Lp Systems and methods for facilitating activation of operating systems
US9558329B2 (en) * 2014-06-19 2017-01-31 Dell Products L.P. License management using a basic input/output system (BIOS)
US11281472B2 (en) * 2020-02-03 2022-03-22 Dell Products L.P. System and method for securing compromised information handling systems

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7149721B1 (en) * 2000-09-05 2006-12-12 Adobe Systems Incorporated Electronic content rights with and-or expression
US20040054952A1 (en) * 2002-09-13 2004-03-18 Morrow James W. Device verification system and method

Also Published As

Publication number Publication date
WO2007002279A3 (en) 2009-04-16
WO2007002279A2 (en) 2007-01-04
US20060288422A1 (en) 2006-12-21
CN101627364A (zh) 2010-01-13

Similar Documents

Publication Publication Date Title
KR20080018196A (ko) 순응하는 장치와 함께 배포하기 위한 하드웨어 및소프트웨어 라이센스를 식별하기 위한 데이터 구조
US9910743B2 (en) Method, system and device for validating repair files and repairing corrupt software
CN101310472B (zh) 用以支持获信任环境的计算机可读组件的自动更新
US20110030062A1 (en) Version-based software product activation
RU2363044C2 (ru) Компактная идентификация аппаратных средств для привязки пакета программного обеспечения к компьютерной системе, имеющей допуск на изменения аппаратных средств
EP1399808B1 (en) Binding by hash
JP5512610B2 (ja) 非ファームウェアエージェントからメモリへのアクセスを許可または阻止する方法、システム、および機械可読記憶媒体
US8181166B2 (en) System and method for determining when an EJB compiler needs to be executed
US8407692B2 (en) Dynamic correction of component manifests
US6681329B1 (en) Integrity checking of a relocated executable module loaded within memory
CN111052117B (zh) 在没有多元化创作的情况下安全地定义操作系统组成
US8117429B2 (en) System and method for a distributed and flexible configuration of a TCG TPM-based local verifier
US8224750B1 (en) Method and system for upgrading licenses to installed software
US20070038572A1 (en) Method, system and computer program for metering software usage
US7577831B2 (en) Relocating of system management interface code within an information handling system
US20080189699A1 (en) System and method for automatically loading software components
US20040255292A1 (en) Delivering multiple installation images and computer-readable installation keys on installation media
CN117688551A (zh) 启动路径白名单更新方法、装置、电子设备及存储介质
JP2004287818A (ja) 計算機の評価システム、計算機及び評価プログラム
CN114519189A (zh) 一种国产UEFI固件licence管控方法
KR20170004043A (ko) 운영체제 불법 복제 방지 시스템

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid