KR101301332B1 - 보안 기계 카운팅 - Google Patents

보안 기계 카운팅 Download PDF

Info

Publication number
KR101301332B1
KR101301332B1 KR1020087006353A KR20087006353A KR101301332B1 KR 101301332 B1 KR101301332 B1 KR 101301332B1 KR 1020087006353 A KR1020087006353 A KR 1020087006353A KR 20087006353 A KR20087006353 A KR 20087006353A KR 101301332 B1 KR101301332 B1 KR 101301332B1
Authority
KR
South Korea
Prior art keywords
machine
message
activation
binding service
software
Prior art date
Application number
KR1020087006353A
Other languages
English (en)
Other versions
KR20080044297A (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=37889129&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR101301332(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080044297A publication Critical patent/KR20080044297A/ko
Application granted granted Critical
Publication of KR101301332B1 publication Critical patent/KR101301332B1/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
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • 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/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
    • 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/2135Metering
    • 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/2151Time stamp

Landscapes

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

Abstract

볼륨 라이센스 환경에서 소프트웨어 무단 복제를 막기 위한 방법 및 컴퓨터 판독가능 매체에 관한 것이다. 활성화 바이패스 메시지가 생성되고 전송된다. 활성화 바이패스 메시지 내에 포함된 정보는 기계 식별자들의 목록과 비교된다. 바인딩 서비스 메시지는 목록 내의 기계 식별자들의 카운트를 포함한다. 카운트가 미리 결정된 임계값에 도달하면, 소프트웨어 활성화 바이패스가 일어날 수 있다.
보안 기계, 소프트웨어 무단 복제, 볼륨 라이센스 환경, 활성화 바이패스, 기계 식별자, 바인딩 서비스, 카운트

Description

보안 기계 카운팅{SECURE MACHINE COUNTING}
소프트웨어 무단 복제는 소프트웨어 벤더들에게 매년 거액의 금전적 손해를 입히는 전 세계적 문제이다. 비공식적인 복사(casual copying)라고 알려진 무단 복제의 한 형태는, 최종 사용자 사용권 계약(end user license agreement)을 위반하고 복수의 컴퓨터에 소프트웨어를 공유하고 설치하는 것이다. 제품 활성화(product activation)는 이러한 유형의 무단 복제를 감소시키는 한가지 방안이다.
제품 활성화는 일반적으로 설치 식별 코드(installation identification code) 및/또는 하드웨어 식별자를 소프트웨어 벤더에게 제출(submission)하는 것에 의존한다. 소프트웨어 벤더는 응답으로 활성화 확인 코드(activation confirmation code)를 반환한다. 제품 활성화의 통상적인 소매 애플리케이션(retail application)에서, 포장된 소프트웨어의 각 패키지에 대해 고유한 제품 키가 제공된다. 일반적으로, 일정한 유예기간(소프트웨어 설치 후의 일정 기간으로, 이 기간 중에 소프트웨어는 활성화되지 않고 실행됨) 중 또는 후에, 고객은 자신의 소프트웨어 카피를 활성화하기 위해 소프트웨어 벤더에 접속(contact)해야만 한다. 이에 실패하면, 소프트웨어가 비활성화되거나 소프트웨어의 기능성이 저하되는 경우가 많다. 일반적으로, 고유 제품 키는 고유한 제품 식별 코드를 생성하 는 데 사용되며, 고유 제품 식별 코드는 해시된 하드웨어-관련 값(hashed hardware-related value)과 결합되어, 소프트웨어가 실행되고 있는 기계에 대해 특정한 설치 식별 코드를 생성할 수 있다. 소프트웨어가 실행될 수 있도록 하는 활성화 확인(activation confirmation)은 일반적으로 고객에게 반환된다. 이와 관련하여, 활성화 확인은 또한 라이센스 파일 또는 라이센스를 나타내는 바이너리일 수 있다. 각 로그인에서, 라이센싱된 소프트웨어는, 자신이 활성화되었던 것과 본질적으로 동일한 하드웨어에서 실행되고 있는지를 확인한다. 확인이 실패하면, 소프트웨어가 다시 실행되기 위해서 재활성화가 요구된다.
기업 고객들은 일반적으로 볼륨 라이센스(volume license)를 구매하는데, 이는 (자신들의 도메인에 수백 또는 수천 개의 기계들이 있을 수 있는) 기업 고객들이 기계-특정(machine-specific) 활성화 코드를 받기 위해서, 각 설치된 소프트웨어 카피에 대해 소프트웨어 벤더를 접속하는 것이 편리하지 않기 때문이다. 따라서, 일반적으로, 볼륨 라이센스의 소유자들은 그들의 소프트웨어를 활성화하기 위해 소프트웨어 벤더에 접속할 필요가 없는데, 이는 볼륨 라이센스 키가 검출되면 소프트웨어가 활성화 요구사항(activation requirement)을 바이패스(bypass)하기 때문이다. 이것은 "제품 활성화 바이패스"라고 알려진 것이다. 따라서, 동일한 볼륨 라이센스 키가 여러 다른 컴퓨터들에서 사용될 수 있으며, 이들은 어느 것도, 유예기간이 만료되기 전 또는 후에, 소프트웨어를 실행하기 위해 활성화를 필요로 하지 않는다. 이 특징은 기업 고객들이 소프트웨어를 설치하는 데 있어 볼륨 라이센스의 사용을 더 편리하게 하지만, 이것은 또한 무단 복제의 좋은 표적이다. 예 를 들어, 저작권 침해자(pirate)들은 합법적인 불륨 라이센싱 매체를 획득하고, 유효한 볼륨 라이센싱 제품 키들을 사거나 훔친다. 매체 및 제품 키는, "B to C(business to consumer)" 채널 무단 복제(channel piracy)로 알려진 스킴으로 용도 변경(repurposed)되어 의심하지 않는 고객들에게 판매된다.
따라서, 합법적인 고객들에게 성가신 무단 복제 방지 요구사항(anti-piracy requirement)들로 부당하게 부담을 지우지 않으면서, 네트워크 컴퓨팅 환경에서 무단 복제를 막기 위한 메커니즘에 대한 필요가 있다. 본 발명은 이 필요를 만족시킨다.
<발명의 개요>
위의 단점 및 결점들과 관련하여, 실시예는 볼륨 라이센싱 환경에 소프트웨어 활성화 바이패스 메커니즘을 통합시킨다. 이러한 실시예에 따라, 소프트웨어 애플리케이션에 대한 적절한 활성화 바이패스가 일어나도록 하기 위해 고객 네트워크에 존재해야 하는 최소 기계의 수를 지정하는 정책이 소프트웨어 애플리케이션과 함께 제공된다. 네트워크 내의 한 컴퓨터는 바인딩 서비스 기계(binding service machine)로 지정되고, 소프트웨어 애플리케이션이 설치될 다른 컴퓨터들은 클라이언트이다. 한 시점에서, 각 클라이언트는 소프트웨어의 활성화 바이패스를 수행하려는 시도를 한다. 이를 위해, 클라이언트는 기계 식별자, 타임스탬프 및 소프트웨어 애플리케이션과 관련된 정보를 포함하는 활성화 바이패스 메시지를 생성하고, 이 메시지를 바인딩 서비스 기계로 전송한다.
활성화 바이패스 메시지를 수신하면, 바인딩 서비스 기계는 모든 수신한 기 계 식별자의 목록에 대비하여 기계 식별자를 확인한다. 트러스트 스토어(trust store)에 기계 식별자가 존재하지 않으면, 이는 추가된다. 바인딩 서비스 기계는 목록 내의 고유 기계 식별자들의 수를 카운트하고 이 카운트를 바인딩 서비스 메시지에 입력하고, 이는 클라이언트에게로 전송된다. 바인딩 서비스 메시지를 수신하면, 클라이언트는 카운트가 정책을 만족하는지를 결정하고, 만약 그렇다면, 기계는 소프트웨어를 활성화할 수 있다.
이 발명의 개요는 아래의 실시예에서 더 상세히 설명되는 개념들의 선택을 간략한 형태로 소개하기 위해 제공된 것이다. 이 발명의 개요는 청구된 본 발명의 주요 특징 또는 본질적 특징을 식별하기 위한 것이 아니며, 또한 청구된 본 발명의 범위를 결정하는 데 보조로서 사용되도록 하기 위한 것이 아니다.
앞선 개요뿐 아니라 바람직한 실시예들에 대한 이어지는 상세한 설명은 첨부된 도면과 함께 읽음으로써 더 잘 이해된다. 본 발명을 설명하기 위한 목적으로, 도면에는 본 발명의 예시적인 구조가 도시되지만, 본 발명은 도면에 개시된 특정 방법 및 수단들에 제한되지 않는다.
도 1은 본 발명의 양상이 구현될 수 있는 예시적인 컴퓨팅 환경이다.
도 2A는 실시예에 따라 소프트웨어 무단 복제를 막을 수 있는 예시적인 네트워크를 도시하는 블록도이다.
도 2B는 실시예에 따라 사용될 수 있는 예시적인 활성화 바이패스 메시지의 블록도이다.
도 2C는 실시예에 따라 사용될 수 있는 예시적인 바인딩 서비스 메시지의 블록도이다.
도 3은 실시예에 따라 소프트웨어의 활성화 바이패스를 허락하는 예시적인 클라이언트 방법을 도시하는 흐름도이다.
도 4는 실시예에 따라 소프트웨어를 활성화하는 예시적인 바인딩 서비스 방법을 도시하는 흐름도이다.
개관
실시예는 볼륨 라이센싱 환경에 소프트웨어 활성화 바이패스 메커니즘을 통합한다. 활성화 바이패스 메커니즘은 고객으로 하여금 소프트웨어 벤더를 접속할 것을 요구하지 않는다. 이러한 실시예에 따라, 소프트웨어 애플리케이션과 함께 정책이 제공된다. 정책은 소프트웨어 애플리케이션에 대한 적절한 활성화 바이패스가 일어나도록 하기 위해 고객 네트워크에 존재해야 하는 최소 기계의 수를 지정한다. 네트워크 내의 한 컴퓨터는 바인딩 서비스 기계로 지정된다. 소프트웨어 애플리케이션이 설치될 다른 컴퓨터들은 클라이언트이다. 소프트웨어 애플리케이션의 카피가 각 컴퓨터(즉, 예를 들어, 바인딩 서비스 기계 및 클라이언트)에 설치되고, 한 시점에서(예를 들어, 로그온에서), 각 클라이언트는 소프트웨어의 활성화 바이패스를 수행하려는 시도를 한다. 이를 위해, 클라이언트는 기계 식별자, 타임스탬프 및 소프트웨어 애플리케이션과 관련된 정보를 포함하는 활성화 바이패스 메시지를 생성하고, 이 메시지를 바인딩 서비스 기계로 전송한다.
활성화 바이패스 메시지를 수신하면, 바인딩 서비스 기계는 모든 수신한 기계 식별자의 목록에 대비하여 기계 식별자를 확인한다. 트러스트 스토어에 기계 식별자가 존재하지 않으면, 이는 추가된다. 바인딩 서비스 기계는 트러스트 스토어 내의 고유 기계 식별자들의 수를 카운트하고 이 카운트를 바인딩 서비스 메시지에 입력하고, 이는 클라이언트에게로 전송된다. 바인딩 서비스 메시지를 수신하면, 클라이언트는 카운트가 정책을 만족하는지(즉, 최소 기계의 수가 만족되었는지)를 결정한다. 만약 만족한다면, 기계는 소프트웨어의 활성화 바이패스를 사용가능하게 할 수 있다. 그렇지 않다면, 소프트웨어는 비활성 상태로 머무르고, 적용할 수 있다면, "유예" 기간에서는 계속하여 동작한다.
본 발명의 본 내용은 법에 의한 요구사항들을 만족하도록 특수성을 가지고 설명된다. 하지만, 설명 자체는 본 특허의 범위를 제한하기 위한 것이 아니다. 오히려, 발명자들은 청구된 본 발명이 또한 다른 현재 또는 미래 기술들과 함께, 다른 단계들 또는 본 문서에 설명된 것과 유사한 요소들을 포함하는 다른 방법들로 구현될 수 있음을 이해한다. 또한, "단계"라는 용어는, 사용된 방법의 다른 양상들을 암시하기 위해 여기에 사용될 수 있지만, 개별 단계들의 순서가 명확히 설명되지 않은 한, 이 용어는 여기에 개시된 다양한 단계들 간의 임의의 구체적 순서를 내포하는 것으로 해석되어서는 안된다.
예시적 컴퓨팅 환경
도 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) 로컬 버스, 그리고 메자닌 버스(mezzanine bus)로도 알려진 PCI(peripheral component interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(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)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함한다. 도 1에 도시된 논리적 접속으로는 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)에 있는 것으로 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
예시적 분산 컴퓨팅 프레임워크 또는 아키텍처
개인 컴퓨팅과 인터넷의 통합에 비추어 다양한 분산 컴퓨팅 프레임워크가 개발되었으며 또한 개발되고 있다. 개인 및 기업 사용자들은 서로 마찬가지로 애플 리케이션 및 컴퓨팅 장치들을 위한, 무결절성으로 상호 운용가능(seamlessly interoperable)한 및 웹-기반(web-enabled)인 인터페이스를 제공받으며, 이는 컴퓨팅 활동들을 점점 웹 브라우저 또는 네트워크-기반(network-oriented)으로 만든다.
예를 들어, MICROSOFT®의 .NET 플랫폼은 서버, 웹-기반 데이터 저장소와 같은 빌딩 블록 서비스, 및 다운로드 가능한 장치 소프트웨어를 포함한다. 일반적으로, .NET 플랫폼은 (1) 전체 컴퓨팅 장치의 범위가 함께 작업하도록 만들고, 이 모두에 사용자 정보가 자동으로 업데이트되고 동기화되도록 하는 능력, (2) HTML보다는, 더 많은 XML의 사용에 의해 가능해진, 웹 사이트들의 증가된 대화형 기능(interactive capability), (3) 예를 들어, 이메일, 또는 Office.NET과 같은 소프트웨어와 같은, 다양한 애플리케이션의 관리를 위해 중앙 시작점으로부터 제품 및 서비스에 대한 사용자 지정된(customized) 액세스 및 전달을 사용자에게 제공하는 온라인 서비스, (4) 정보에 대한 액세스의 효율 및 용이성을 증가시킬 뿐 아니라, 사용자 및 장치 사이에서 정보의 동기화를 증가시킬, 집중화된 데이터 저장소, (5) 이메일, 팩스, 및 전화와 같은 다양한 통신 매체를 통합하는 능력, (6) 개발자들에게, 재사용가능한 모듈을 생성하는 능력을 제공하여, 생산성을 증가시키고 프로그래밍 에러의 수를 감소시키고, 및 (6) 다수의 다른 크로스-플랫폼(cross-platform) 통합 특징들도 제공한다.
여기의 예시적 실시예들이 컴퓨팅 장치에 존재하는 소프트웨어와 관련하여 설명되지만, 본 발명의 하나 이상의 부분들은 또한, 운영 체제, API, 또는 보조 프로세서와 요청하는 객체 사이의 미들웨어 소프트웨어를 통해 구현될 수 있으며, 이 로써 서비스가 .NET의 모든 언어 및 서비스뿐 아니라, 및 다른 분산된 컴퓨팅 프레임워크를 통해 수행되고, 지원되고, 또는 액세스될 수 있다.
예시적 실시예
이어지는 논의에서는, 소프트웨어 활성의 컨텍스트에서 컴퓨터 네트워크 내의 컴퓨터들 간에 안전한 통신을 구현하는 것과 관련된 세부사항들이 당업자들에게 이미 알려진 것으로 가정된다. 따라서, 그러한 세부사항들은 명확성을 위해 여기에서 생략된다.
실시예에서, 관련된 정책을 가진, 볼륨 라이센싱된 소프트웨어가 제공된다. 정책은 소프트웨어의 적절한 활성화 바이패스가 일어나도록 하기 위해 고객의 네트워크에 존재해야 하는 기계의 수를 지정한다. 이 정책 데이터는, 예를 들어, 고객의 네트워크 내의 기계들에 의해 인증될 수 있는, 서명된 확장성 권리 표시 언어(eXtensible rights Markup Language, XrML) 파일에 기록될 수 있다. 네트워크 내의 한 컴퓨터는 바인딩 서비스 기계로 지정된다. 지정은, 예를 들어, 고객, 소프트웨어 벤더, 소프트웨어 애플리케이션 자체 등을 통해 이루어질 수 있다. 소프트웨어 애플리케이션이 설치될 다른 컴퓨터들은 클라이언트이다. 소프트웨어 애플리케이션의 카피가 각 컴퓨터(즉, 예를 들어, 바인딩 서비스 기계 및 클라이언트)에 설치되고, 한 시점에서(예를 들어, 로그온에서), 각 클라이언트는 소프트웨어를 활성화하려는 시도를 한다.
임의의 다른 보안 조치에 더해서, 예를 들어, 프로세서 식별자 등과 같은 고유 기계 특성은, 소프트웨어의 활성화 바이패스를 시도하는 컴퓨터와, 이러한 활성 화 바이패스를 가능하게 하기 위해 바인딩 서비스를 제공하는 컴퓨터 간의 통신 경로를 보호하기 위한 기계 식별자로 사용될 수 있다. 자신의 소프트웨어 카피의 활성화를 시도하는 클라이언트는 자신의 기계 식별자, 타임스탬프, 소프트웨어 애플리케이션에 관한 정보 및 기계 인증 코드(machine authentication code, MAC)를 포함하는 활성화 바이패스 메시지를 생성하고, 다음, 메시지를 바인딩 서비스 기계로 전송한다. MAC를 사용함으로써, 한 실시예는 클라이언트 및 바인딩 서비스(아래에 상세히 논의됨)의 메시지가 메시지 자신을 통해 인증될 수 있도록 한다. 이러한 방식으로, 이러한 메시지의 인증은, 클라이언트와 바인딩 서비스 사이의 통신 레이어에 의존해야 하기보다는, 자급적(self contained)일 수 있다. 메시지가 바인딩 서비스에 전달되고 나면, 바인딩 서비스는 메시지를 검사하여, 타임스탬프 및 MAC가 유효한지를 확인한다.
메시지를 수신하고 메시지의 인증을 확인하면, 바인딩 서비스는 알려진 기계들의 큐에서 기계 식별자를 확인하고, 만약 기계 식별자가 발견되지 않으면 기계 식별자는 큐에 추가된다. 다음, 바인딩 서비스는 큐 내의 고유 기계 식별자들의 수를 카운트하고, 카운트를 포함하는 인증된 응답 메시지를 클라이언트에게 전송한다. 클라이언트는 카운트가 정책을 만족하는지(즉, 최소 기계의 수가 만족되었는지)를 결정한다. 만약 만족한다면, 기계는 소프트웨어의 활성화 바이패스를 사용가능하게 할 수 있다. 그렇지 않다면, 소프트웨어는 비활성 상태로 머무르고, 적용할 수 있다면, "유예" 기간에서는 계속하여 동작한다.
따라서, 실시예는, 볼륨 라이센싱된 소프트웨어 애플리케이션의 활성화 바이 패스가 일어나도록 허락하기 전에, 소프트웨어 애플리케이션이 실제로 컴퓨터의 네트워크에서 사용되고 있다는 것을 고객이 효과적으로 확인할 것을 요구한다는 것을 이해해야 한다. 실시예는 네트워크로 하여금, 소프트웨어가 활성화 바이패스될 기계를 특정 최소한의 수만큼 가질 것을 요구하며, 정확한 카운트를 얻기 위해 기계-특정 식별자를 이용한다. 실시예가 특정 기계들의 집합에 소프트웨어가 설치될 것을 요구하지 않는 한편, 네트워크 내에 특정 수의 기계가 존재하도록 하는 요구사항은 효과적으로 대부분의 소프트웨어 저작권 침해자들의 의도를 막는다. 다시 말해, 소프트웨어 저작권 침해자는 단지 불법적으로 소프트웨어 애플리케이션을 실행하기 위한 목적만으로, 요구되는 기계의 수를 가진 네트워크를 설정하지 않기 쉽고, 특히 요구되는 기계의 수가 특별히 클 경우 그렇다. 이것은 특히 (의심하지 않고, 또는 다른 방식으로) 무단 복제된 소프트웨어 애플리케이션의 카피를 구매하는 임의의 개인들에 있어 사실이다. 최소 기계의 수가 고정된 수로 설정되면, 보안 및 사용자-친화성(user-friendliness)과 관련하여 특정 교환 조건(tradeoff)이 만들어져야 할 필요가 있을 수 있다. 예를 들어, 수를 너무 낮게 설정하는 것은 이로운 보안 결과를 성취하지 못하기 쉽고, 반면, 수를 너무 높게 설정하는 것은 합법적인 고객들에게 문제를 일으킬 수 있다.
기계 카운트를 생성하기 위해 바인딩 서비스 기계를 사용함으로써, 클라이언트는 활성화 요구사항을 바이패스하기 위해 카운트를 위조할 수 없다. 또한, 카운트의 사용은, 소프트웨어 애플리케이션이 의도된 컴퓨터 네트워크에서 사용되고 있는지를 결정하기 위한 쉽고 신뢰할 수 있는 방법이다. 위에서 언급된 바와 같이, 한 실시예는 대상 네트워크 내에 지정된 수의 서로 다른 기계들이 존재함을 단순히 확인한다. 그 결과, 소프트웨어가 특정 네트워크에 맞춰져야 하는 경우에서와 같이 소프트웨어를 업데이트하거나 변경할 필요없이, 소프트웨어 벤더에 의해 동일한 소프트웨어가 다른 고객들에게 판매될 수 있다. 따라서, 실시예에서, 고도의 보안 및 무단 복제에 대한 제지와 합법적인 고객의 입장에서의 설치 및 활성화의 용이성 사이에 분별 있는 균형이 이루어진다. 이 균형은 벤더 및/또는 고객 필요에 따라 변경될 수 있음을 이해해야 한다.
도 2A는 실시예에 따라 소프트웨어 무단 복제를 막을 수 있는 예시적인 네트워크의 블록도이다. 클라이언트(220a-c)는 네트워크 내에 있는 임의의 유형의 컴퓨팅 장치일 수 있다. 각 클라이언트(220a-c)는 소프트웨어(230)의 카피 및 각각의 기계 특성(222a-c)을 포함한다. 소프트웨어 벤더는, CD-ROM과 같은, 하지만 이에 제한되지 않는 어떤 매체에 있는 소프트웨어(230)의 카피와 함께 볼륨 라이센스 홀더(volume license holder)를 제공하거나, 또는 도 1과 관련하여 상술된 것과 같이, 네트워크를 통해 직접 제공할 수 있다. 소프트웨어(230)에 첨부되는 것은 기업-특정 또는 볼륨-라이센스-홀더-특정 볼륨 라이센스 키(volume license key, VLK)일 수 있다(도시되지 않음). 한 실시예에서, VLK는 라이센스 파일이라 불리는, 상대적으로 큰 파일 내에 포함될 수 있다. 클라이언트(220a-c) 각각의 기계 특성(222a-c)은 클라이언트(220a-c)와 관련된 하드웨어 장치를 식별하는 임의의 유형의 데이터일 수 있다. 예를 들어, 기계 특성(222a)은 클라이언트(220a)의 프로세서 식별자 등일 수 있다. 실시예에서, 각 클라이언트(220a-c)에 대해 사용된 기 계 특성(222a-c)의 유형(들)은 같다(예를 들어, 각 클라이언트(220a-c)는 자신의 프로세서 식별자를 자신의 기계 속성(222a-c)으로 사용함). 다른 실시예에서, 각 클라이언트(220a-c)는 다른 기계 특성(222a-c)을 사용할 수 있다.
위에서 언급된 바와 같이, 네트워크 내의 한 컴퓨터는 바인딩 서비스 기계(210)로 지정될 수 있다. 바인딩 서비스 기계(210)는 독립 실행형(stand-alone) 기계이거나, 또는 클라이언트(220)일 수 있다. 다시 말해, 클라이언트(220a), 및 바인딩 서비스 기계(210)와 같은 클라이언트는 동일한 기계에 의해 호스트되거나, 다른 기계들에 있을 수 있다. 바인딩 서비스 기계(210)는, 예를 들어, 소프트웨어 활성화 바이패스를 수행하기 위해 바인딩 서비스 기계(210) 내에서 실행되는 프로세스일 수 있는, 바인딩 서비스(212)를 포함한다. 이에 더해, 바인딩 서비스 기계(210)는, 소프트웨어 활성화 바이패스가 일어나도록 하기 위해 네트워크 내에 존재해야 하는 고유 기계들의 최소한의 수를 지정하는 정책(216)을 포함한다. "기계"라는 단어는 소프트웨어(230)를 설치할, 네트워크 내의 임의의 장치를 나타낸다. "기계"가 통상적으로 어떤 유형(예를 들어, 데스크톱, 랩톱 등)의 컴퓨터를 나타내는 한편, "기계"는 또한 서버, PDA와 같은 장치 등을 나타낼 수 있다. 또한, 이러한 기계는 네트워크에 계속적으로 연결되어 있을 필요는 없다(예를 들어, 랩톱).
정책(216) 내에 설정된 수는, 개별적인 경우들에 따라 다르게, 고객의 특정 유형(예를 들어, 기업 고객)에 따라, 네트워크의 크기 등과 같은 것에 따라, 자의적(arbitrarily)으로 설정될 수 있다. 예를 들어, 정책은 소프트웨어 활성화 바이 패스를 허락하기 전에 네트워크 내에 25개의 고유 기계가 존재할 것을 요구하도록 설정될 수 있다. 트러스트 스토어(214)는 소프트웨어의 활성화를 시도한 모든 기계들의 큐를 포함한다. 큐는 기계들을 기계 식별자로 나타내거나(아래에 설명되는 것과 같이), 예를 들어, 기계 식별자 및 추가적 정보를 포함하는 엔트리(entry)로 나타낼 수 있다. 이러한 추가적 정보는, 예를 들어, 타임스탬프 등일 수 있다. 트러스트 스토어(214)는, 하나 이상의 암호화 키를 포함하는 트러스트 스토어 파일일 수 있다. 키는 서명자 인증서(signer certificate)로서 저장되고, 거기에 포함된 데이터를 검증하는 것과 같은, 다양한 목적을 위해 사용될 수 있다. 따라서, 트러스트 스토어(214)는 기계 식별자 및 임의의 추가적 정보를 위한 안전한, "신뢰된" 위치일 수 있다.
위에서 언급된 바와 같이, 자신의 소프트웨어(230) 카피를 활성화하기 위해, 클라이언트(220a-c)는 활성화 바이패스 메시지를 바인딩 서비스 기계(210)로 전송한다. 예를 들어, 사용자 지시가 있을 때, 만료 시간 후, 이벤트(예를 들어, 로그인, 소프트웨어(230)의 시동 등)의 발생 시 등과 같은 임의의 유형의 활동이 활성화 바이패스를 일으킬 수 있다. 소프트웨어(230)의 활성화 바이패스를 성공적으로 완료하기 전에, 소프트웨어(230)는, 소프트웨어(230)의 활성화 바이패스 전에 사용자에게 모든 또는 부분적인 기능이 사용가능해지는 "유예" 기간에서 동작할 수 있다. 실시예에서, 유예기간의 사용은 유용한데, 이는 다수의 클라이언트 활성화 바이패스 시도들이, 요구되는 수의 기계들로 트러스트 스토어(214) 내의 큐를 채우기 전까지 시간이 걸릴 수 있기 때문이다. 따라서, 필요한 수의 기계들을 큐가 구축 하는 동안, 고객의 사용자들은 여전히 소프트웨어(230)를 사용하는 것이 가능하다. 한 실시예에서, 활성화 바이패스 프로세스가 완전히 자동화될 수 있음에 따라, 유예기간의 사용은, 클라이언트(220a-c) 중의 한 사용자에게 보이지 않게(invisible) 활성화 바이패스 프로세스를 효과적으로 제공할 수 있다.
도 2B는 실시예에 따라 사용될 수 있는 예시적인 활성화 바이패스 메시지(240)의 블록도이다. 활성화 바이패스 메시지(240)는 임의의 적절한 보안 메시징 포맷에 따라 포맷될 수 있다. 활성화 바이패스 메시지(240)는, 어떤 활성화 바이패스가 필요한지를 소프트웨어에 지정하는 소프트웨어 식별자(242)를 포함한다. 실시예에서, 소프트웨어 식별자(242)는 소프트웨어 식별자, 버전 번호 및/또는 이와 유사한 것 등을 포함할 수 있다. 따라서, 복수의 소프트웨어 애플리케이션이 실시예에 따라 활성화 바이패스를 겪게 되면, 각 애플리케이션의 활성화 바이패스 프로세스는 분리되어, 다른 활성화 바이패스 프로세스와 저촉되는 것을 피할 수 있다.
활성화 바이패스 메시지(240)는 또한, 예를 들어, 도 2A와 관련하여 상술된 기계 특성(222a-c)으로부터 형성될 수 있는 기계 식별자(244)를 포함할 수 있다. 예를 들어, 기계 특성(222a-c)은 기계 식별자(244)를 형성하도록, 해시되고, 암호화되고/거나 이와 유사한 것 등이 될 수 있다. 대안적으로, 기계 식별자(244)는 더 나아간 프로세싱 또는 변경 없이 간단히 기계 특성(222a-c)을 포함할 수 있다. 활성화 바이패스 메시지(240)는 또한 타임스탬프(246)를 포함할 수 있다. 타임스탬프(246)는 "재전송(replay)" 공격 및 이와 유사한 것 등으로부터 소프트웨어를 보호하는 데 사용될 수 있는데, 이는 기계 식별자(244)에 의해 용이하게(facilitated) 되는 하드웨어 바인딩이 현재(current)의 것으로 알려져 있기 때문이다. 마지막으로, 활성화 바이패스 메시지(240)는, 예를 들어, 메시지 인증 코드(MAC) 등에 의해 실행될 수 있는 인증(248)을 포함할 수 있다. 명확성을 위해 도 2B에 도시되지 않았지만, 활성화 바이패스 메시지(240)는, 예를 들어, 정책(216)과 관련된 정보와 같은 추가적인 필드를 포함할 수 있다.
도 2C는 실시예에 따라 사용될 수 있는 예시적인 바인딩 서비스 메시지(250)의 블록도이다. 바인딩 서비스 메시지(250)는, 도 2B와 관련하여 상술된 활성화 바이패스 메시지(240)와 같이, 소프트웨어 식별자(242), 기계 식별자(244)(클라이언트를 식별), 타임스탬프(246)(예를 들어, 활성화 바이패스 메시지(240)에 사용된 타임스탬프) 및 인증(248)을 포함한다. 인증(248)은 활성화 바이패스 메시지(240)의 인증과 같은 방식으로 실행되거나, 또는 다른 프로토콜에 따라 실행될 수 있다. 또한, 바인딩 서비스 메시지(250)는, 도 2A와 관련하여 상술된, 트러스트 스토어(214)의 큐 내에 목록화된 고유 기계 식별자의 수에 대응되는 카운트(252)를 포함한다. 명확성을 위해 도 2C에 도시되지 않았지만, 바인딩 서비스 메시지(250)는, 예를 들어, 정책(216)과 관련된 정보와 같은 또 다른 필드를 포함할 수 있다.
도 3은 실시예에 따라 소프트웨어를 활성화하는 예시적인 클라이언트 방법을 도시하는 흐름도이다. 방법(300)은 셋업(setup) 중에 개시 및/또는 수행되거나, 나중의 시간(예를 들어, 로그인)에 수행될 수 있음을 이해해야 한다. 방법(300)은, 예를 들어, 무인 파일(unattended file)의 도움을 받아 수행될 수 있다. 무인 파일은 (무인 설치를 수행하기 위해서) 표준 셋업 프롬프트(normal setup prompt)를 바이패스하기 위해 소프트웨어 셋업 루틴과 함께 사용되는 텍스트 파일이다. 무인 파일은 대상 기계의 근거리 통신망(LAN) 또는 인터넷 등을 통해, 예를 들어, VLK를 자동으로 입력하고, 프록시 설정들을 구성하고, 최종 사용자를 대신해서 시스템을 자동-활성화할 수 있다. 활성화 바이패스는 또한 커맨드 라인 스크립트(command line script)를 이용하여 셋업 후에 수행될 수 있다.
단계(301)에서, 도 2B와 관련하여 상술된 활성화 바이패스 메시지(240)와 같은 클라이언트 활성화 바이패스 메시지가 클라이언트에 의해 생성된다. 클라이언트 활성화 바이패스 메시지는, 소프트웨어의 최초 설치 시에 또는 이미-설치된(already-installed) 소프트웨어 애플리케이션에 대한 현재 볼륨 라이센스가 더 이상 유효하지 않다는 것을 클라이언트가 결정했을 때 등에서 생성될 수 있다. 단계(302)에서, 활성화 바이패스 메시지는 바인딩 서비스 기계로 전송된다. 단계(302)는 단계(301) 후에 곧바로 발생하거나, 또는 지연 후에 발생할 수 있다. 예를 들어, 클라이언트가 현재 네트워크로부터 단절된 랩톱 컴퓨터라면, 활성화 바이패스 메시지는 사용자가 컴퓨터를 시동(start up)할 때 생성될 수 있다. 사용자가 클라이언트 랩톱 컴퓨터를 네트워크에 재연결하면, 활성화 바이패스 메시지는 바인딩 서비스 기계로 전송될 수 있다. 따라서, 도 2B와 관련하여 상술된 타임스탬프는, 예를 들어, 활성화 바이패스 메시지가 생성되거나 전송된 시간에 대응될 수 있다. 단계(303)에서, 도 2C와 관련하여 상술된 바인딩 서비스 메시지(250)와 같은 바인딩 서비스 메시지가 클라이언트 기계에 의해 수신된다. 바인딩 서비스 메시지의 생성을 포함하는 예시적인 방법이 도 4와 관련하여 아래에서 논의된다.
단계(305)에서, 임의의 필요한 메시지 인증 프로세싱 후에, 카운트(카운트(252)와 같은)는 바인딩 서비스 메시지로부터 추출되고, 클라이언트의 소프트웨어 애플리케이션 카피와 관련된 미리 결정된 카운트에 비교된다. 미리 결정된 카운트는 도 2A와 관련하여 상술된 정책(216)에 대응될 수 있다는 것을 이해해야 한다. 단계(307)에서, 수신된 카운트가 미리 결정된 카운트와 같은지 또는 그보다 큰지에 대한 결정이 이루어진다. 정책은 미리 결정된 카운트가 일치(match)되어야 하는지 또는 초과되어야 하는지를 지정할 수 있음을 이해해야 한다.
수신된 카운트가, 적절하게, 미리 결정된 카운트와 같거나 크지 않으면, 단계(309)에서 방법(300)이 종료된다. 바인딩 서비스가 소프트웨어의 정책에 의해 요구되는 고유 기계 식별자의 최소한의 수를 아직 수신하지 않았기 때문에, 클라이언트 소프트웨어 카피의 활성화 바이패스가 발생하지 않음을 이해해야 한다. 예를 들어, 주어진 기간 동안 활성화 바이패스 없이 소프트웨어의 사용을 허락하는 "유예기간"을 소프트웨어가 포함하면, 사용자는 여전히 소프트웨어를 사용할 수 있다.
수신된 카운트가 미리 결정된 카운트와 같거나 크면, 단계(311)에서, 소프트웨어는 바인딩 메커니즘과 함께 바이패스 마크(bypass mark)를 사용하는 활성화 바이패스를 허락한다. 이 바인딩 메커니즘은 활성화 바이패스 마크가 간단히 복사되어 다른 기계에 사용될 수 없도록 보장한다. 실시예에서, 바인딩 메커니즘은 각 개별 기계에 대해 특정하다. 실시예에서, 단계(311)가 완료되면, 클라이언트는 더 이상 소프트웨어 애플리케이션을 인증하기 위한 목적으로 바인딩 서비스 기계에 접 속할 필요가 없다. 대안적인 실시예에서, 방법(300)은 고정된 또는 변경가능한 간격으로 반복될 수 있다. 예를 들어, 트러스트 스토어 큐에 포함된 기계 식별자들이 지정된 수명(life span)이 있으면, 지정된 수명 후에 기계 식별자들은 큐로부터 삭제된다. 이러한 실시예에서, 방법(300)은 소정의 간격으로 반복되어, 큐(및 그의 대응되는 카운트)를 현행(current)으로 유지한다.
소프트웨어가 처음 설치되면, 트러스트 스토어의 큐에 목록화된 기계들이 없기 쉽다는 것을 이해해야 한다. 예를 들어, 첫 번째 클라이언트가 자신의 소프트웨어 카피에 대해 활성화 바이패스를 수행하려고 시도하면, 바인딩 서비스는 트러스트 스토어를 액세스하여, 거기에 포함된 큐 내에 클라이언트가 기록되어 있는지를 결정한다. 이전에 자신의 소프트웨어 카피에 대해 활성화 바이패스를 수행하려고 시도한 클라이언트가 없기 때문에, 첫 번째 클라이언트가 추가되기 전까지 트러스트 스토어에 기록된 클라이언트가 없다. 미리 결정된 카운트가 도달되지 않으면, 클라이언트 기계는 계속하여 유예기간에서 작용한다. 유예기간이 지나면, 클라이언트 기계는 축소된 기능 모드(reduced functionality mode)에서 작용하거나, 최종 사용자는 소프트웨어 벤더로부터 확장을 요청할 수 있다.
도 4는 실시예에 따라 소프트웨어의 활성화 바이패스를 수행하는 예시적인 바인딩 서비스 방법(400)을 도시하는 흐름도이다. 단계(401)에서, 도 2B와 관련하여 상술된 활성화 바이패스 메시지(240)와 같은, 활성화 바이패스 메시지가 수신된다. 적절한 메시지 인증 프로세싱이 완료된 후, 단계(403)에서, 기계 식별자가 큐 내에 존재하는지 확인하기 위해, 활성화 바이패스 메시지 내에 포함된 기계 식별자 는 바인딩 서비스 기계의 트러스트 스토어의 큐 내에 포함된 임의의 기계 식별자에 비교된다. 기계 식별자가 이미 존재하면, 방법(400)은, 곧 논의될, 단계(407)로 진행된다. 대안적으로, 타임스탬프가 사용되는 실시예에서, 단계(407)로 진행되기 전에, 목록에 저장된 기계 식별자는 방금-수신된(just-received) 기계 식별자로 교체될 수 있다. 이러한 방식으로, 목록은 가장 최근에 수신한 기계 식별자를 포함한다. 기계 식별자가 이미 존재하지 않으면, 단계(405)에서, 기계 식별자는 큐에 추가된다. 몇몇 경우에서, 추가적인 정보가 기계 식별자와 함께 큐에 저장될 수 있다. 예를 들어, 잠재적 소프트웨어 저작권 침해자로부터의 재전송 공격을 피하기 위해 타임스탬프가 저장될 수 있다.
단계(407)에서, 큐 내의 기계 식별자들의 수가 카운트된다. 방법(400)은 기계 식별자가 이미 존재하지 않을 경우에만 기계 식별자를 큐 내에 놓기 때문에, 큐는 고유 기계 식별자들을 포함한다(즉, 각 기계 식별자는 특정 클라이언트가 활성화 바이패스 메시지를 몇 번 전송했는지에 상관없이 한 번만 저장됨). 단계(409)에서, 카운트를 포함하는 메시지는, 단계(401)에서 수신된 활성화 바이패스 메시지를 전송한 클라이언트에게로 전송된다. 실시예에서, 기계 식별자는 미리 결정된 시간이 지난 후에 큐로부터 삭제될 수 있다(도 4에 도시되지 않음). 예를 들어, 소프트웨어 애플리케이션의 정책은, 소프트웨어의 활성화 바이패스를 한번 사용가능하도록 하기보다는, 클라이언트가 여전히 고객 네트워크의 일부라는 것을 보장하기 위해, 소프트웨어가 주기적으로 활성화 바이패스 프로세스를 반복해야 함을 지시할 수 있다. 따라서, 주기적으로 기계 식별자들을 삭제함으로써, 여전히 네트워 크에 충분한 수의 클라이언트가 존재(및 활성화 바이패스 메시지를 전송)하지 않는 한, 카운트는 정책에 의해 요구되는 기계의 수 아래로 떨어질 수 있다.
이러한 실시예에서 클라이언트 기계는, 기계 식별자 카운트가 충분히 높게 유지되는 것을 보장하기 위해, 활성화 바이패스의 반복을 주기적으로 시도하도록 구성되어야 한다는 것을 이해해야 한다. 또한, 클라이언트가 활성화 바이패스 프로세스를 반복하려는 시도를 전혀 하지 않는다면, 기계 식별자 카운트가 임계값 아래로 떨어지더라도 소프트웨어는 활성화된 상태로 유지될 수 있다.
앞의 예들은 단지 설명을 위한 목적으로 제공된 것이며, 어떤 방식으로도 본 발명을 제한하는 것으로 해석되어서는 안된다는 것을 주의해야 한다. 또한, 본 발명을 구현하는 다양한 방법들이 있음을 주의해야하며, 예를 들어, 본 발명에 따라 애플리케이션 및 서비스로 하여금 라이센싱 정보를 얻을 수 있도록 하는 적절한 API, 도구 키트(tool kit), 드라이버 코드(driver code), 동적 연결 라이브러리(dynamic linked library, DLL), 운영 체제, 컨트롤, 독립 실행형 또는 다운로드 가능한 소프트웨어 객체, 등이 있다. 본 발명의 실시예들은 본 발명의 사용을 API(또는 다른 소프트웨어 객체)의 관점뿐 아니라, 여기에 설명된 바와 같이 VLK 라이센싱 기술과 관련하여 통신하는 소프트웨어 또는 하드웨어 객체의 관점에서 숙고한다. 따라서, 여기에 설명된 본 발명의 다양한 구현은 전적으로 하드웨어, 부분적으로 하드웨어 및 부분적으로 소프트웨어뿐 아니라 소프트웨어인 양상들을 가질 수 있다.
위에서 언급된 바와 같이, 예시적인 실시예들이 다양한 컴퓨팅 장치 및 네트 워크 아키텍처와 관련하여 설명되었지만, 기본적인 개념들은 무단 복제를 막기 원하는 임의의 컴퓨팅 장치 또는 시스템에 적용될 수 있다. 따라서, 실시예에 따라 데이터를 인코딩/디코딩하기 위한 기술들은 다양한 애플리케이션 및 장치들에 적용될 수 있다. 예를 들어, 실시예의 알고리즘(들) 및 하드웨어 구현들은, 장치 상의 개별 객체로서, 다른 객체의 일부로서, 재사용가능한 컨트롤로서, 서버로부터의 다운로드 가능한 객체로서, 장치 또는 객체 및 네트워크 사이의 "중재자(middle man)"로서, 분산된 객체로서, 하드웨어로서, 메모리로, 상기한 것의 임의의 조합 등으로서 제공된, 컴퓨팅 장치의 운영 체제에 적용될 수 있다. 여기에서 예시적인 프로그래밍 언어, 이름 및 예들이 다양한 선택들의 대표로서 선택되었지만, 이들 언어, 이름 및 예들은 제한적인 것으로 의도된 것이 아니다. 본 발명을 이루기 위한 컨트롤의 사용을 나타내는 실시예들과 관련하여, 본 발명은 .NET 컨트롤의 제공에 제한되지 않으며, 오히려 본 발명에 따라 무단 복제 제지 목적을 성취하는 임의의 소프트웨어(및/또는 하드웨어) 부분이라는 광범위한 컨텍스트에서 생각되어야 한다. 당업자들은, 본 발명의 다양한 실시예들에 의해 성취되는 기능과 같거나, 유사한 또는 동등한 기능들을 성취하는 객체 코드 및 전문어(nomenclature)들을 제공하는 수많은 방법이 있음을 이해할 것이다. 실시예는 온라인 경매 또는 입찰 사이트(bidding site)와 관련하여 구현될 수 있다.
언급된 바와 같이, 여기에 설명된 다양한 기술들은 하드웨어 또는 소프트웨어, 또는 적절한 곳에, 둘의 조합과 관련하여 구현될 수 있다. 따라서, 본 발명의 실시예들의 방법 및 장치, 또는 특정 양상 또는 그의 부분들은, 플로피 디스크, CD-ROM, 하드 드라이브, 또는 임의의 다른 기계 판독가능 저장 매체와 같은, 실체적인 매체(tangible media)에 포함된 프로그램 코드(즉, 명령)의 형태를 가질 수 있고, 여기서, 프로그램 코드가 로드되고 컴퓨터와 같은 기계에 의해 실행되면, 기계는 본 발명을 실행하기 위한 장치가 된다. 프로그램가능한 컴퓨터에서의 프로그램 코드 실행의 경우, 컴퓨팅 장치는 일반적으로 프로세서, 프로세서에 의해 판독가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장소 요소들을 포함함), 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함한다. 예를 들어, 데이터 프로세싱 API, 재사용가능한 컨트롤, 또는 이와 유사한 것 등을 통해 본 발명의 무단 복제 제지 기술들을 이용할 수 있는 하나 이상의 프로그램은, 컴퓨터 시스템과 통신하기 위해, 높은 레벨의 절차(high level procedural) 또는 객체 지향 프로그래밍 언어에 바람직하게 구현된다. 하지만, 필요하다면, 프로그램(들)은 어셈블리 또는 기계 언어에 구현될 수 있다. 어떤 경우든, 언어는 컴파일된 또는 해석된(interpreted) 언어일 수 있고, 하드웨어 구현과 결합될 수 있다.
본 발명의 실시예들의 방법 및 장치는 또한, 전기적 배선 또는 케이블, 광섬유, 또는 임의의 다른 형태의 전송과 같은 어떤 전송 매체를 통해 전송되는 프로그램 코드의 형태로 구현된 통신을 통해 실행될 수 있으며, 여기서, 프로그램 코드가, EPROM, 게이트 어레이, 프로그램 가능 논리 소자(programmable logic device, PLD), 클라이언트 컴퓨터, 비디오 리코더(video recorder) 또는 이와 유사한 것 등과 같은 기계, 또는 예시적 실시예에서 설명된 바와 같이 신호 프로세싱 기능을 갖는 수신하는 기계(receiving machine)에 수신되고 로드되고 실행되면, 이는 본 발 명의 실행을 위한 장치가 된다. 범용 프로세서에 구현될 때, 프로그램 코드는 프로세서와 결합하여 본 발명의 기능을 호출하도록 동작하는 고유한 장치를 제공한다. 또한, 본 발명과 관련하여 사용된 임의의 저장 기술들은 변합없이 하드웨어 및 소프트웨어의 조합일 수 있다.
본 발명이 다양한 도면의 바람직한 실시예들과 관련하여 설명되었지만, 본 발명을 벗어나지 않으면서 본 발명의 동일한 기능을 수행하기 위해, 다른 유사한 실시예가 사용되거나, 설명된 실시예에 변경 및 추가가 이루어질 수 있음을 이해해야 한다. 예를 들어, 본 발명의 예시적인 네트워크 환경이, 피어 투 피어 네트워크 환경과 같은 네트워크화된 환경의 컨텍스트에서 설명되지만, 당업자는 본 발명이 그에 제한되지 않고, 본 발명에서 설명된 바와 같이, 방법들은, 무선 또는 유선인, 게이밍 콘솔(gaming console), 핸드-헬드 컴퓨터, 휴대용 컴퓨터와 같은 임의의 컴퓨팅 장치 또는 환경에 적용될 수 있고, 통신 네트워크를 통해 연결되고 네트워크를 통해 상호작용하는 임의의 수의 이러한 컴퓨팅 장치들에 적용될 수 있다. 더 나아가, 특히 무선 네트워크로 연결된 장치들의 수가 계속 증가함에 따라, 핸드-헬드 장치 운영 체제 및 기타 애플리케이션 특정 운영 체제들을 포함하는 다양한 컴퓨터 플랫폼이 숙고된다는 것이 강조되어야 한다. 또한, 본 발명은 복수의 프로세싱 칩 또는 장치 내에 또는 사이에 구현될 수 있고, 저장은 복수의 장치 사이에서 유사하게 영향을 받을 수 있다. 따라서, 본 발명은 어떤 하나의 실시예에 제한되어서는 안되고, 오히려 첨부된 청구의 범위에 따른 폭 및 범위에서 해석되어야 한다.

Claims (20)

  1. 컴퓨터 판독가능 기록매체로서,
    활성화 바이패스 메시지(activation bypass message)를 생성하는 단계 -상기 활성화 바이패스 메시지는 활성화 바이패스될 소프트웨어 애플리케이션과 관련된 소프트웨어 식별자 및 기계 식별자를 포함함-;
    상기 활성화 바이패스 메시지를 바인딩 서비스 기계(binding service machine)로 전송하는 단계;
    상기 바인딩 서비스 기계로부터 기계 카운트(machine count)를 포함하는 바인딩 서비스 메시지를 수신하는 단계 -상기 기계 카운트는 적어도 하나의 활성하 바이패스 메시지를 상기 바인딩 서비스 기계로 전송한 기계의 수를 나타냄-;
    상기 기계 카운트를, 기계의 수를 나타내는 미리 결정된 카운트와 비교하는 단계; 및
    상기 기계 카운트가 상기 미리 결정된 카운트 이상인 경우, 상기 소프트웨어 애플리케이션에 대해 활성화 바이패스를 허락하는 단계
    를 수행하기 위한 컴퓨터 실행가능 명령어를 갖는 컴퓨터 판독가능 기록매체.
  2. 제1항에 있어서,
    상기 활성화 바이패스 메시지는 상기 활성화 바이패스 메시지가 생성된 시간을 나타내는 타임스탬프(timestamp)를 더 포함하는 컴퓨터 판독가능 기록매체.
  3. 제1항에 있어서,
    상기 활성화 바이패스 메시지는 컴퓨터 네트워크를 통해 전송되고, 상기 기계 카운트는 적어도 하나의 활성화 바이패스 메시지를 상기 바인딩 서비스 기계로 전송한, 상기 네트워크에 존재하는 기계의 수에 대응되는 컴퓨터 판독가능 기록매체.
  4. 제3항에 있어서,
    상기 활성화 바이패스 메시지는, 상기 소프트웨어 애플리케이션의 활성화가 바이패스될 기계가 상기 컴퓨터 네트워크에 로그인할 때 전송되는 컴퓨터 판독가능 기록매체.
  5. 제4항에 있어서,
    상기 기계 식별자는, 상기 소프트웨어 애플리케이션의 활성화가 바이패스될 상기 기계의 하드웨어 특성으로부터 유도되는 컴퓨터 판독가능 기록매체.
  6. 제1항에 있어서,
    상기 미리 결정된 카운트는 상기 소프트웨어 애플리케이션과 관련된 정책에 의해 정의되는 컴퓨터 판독가능 기록매체.
  7. 제6항에 있어서,
    상기 활성화 바이패스 메시지는 상기 정책을 더 포함하는 컴퓨터 판독가능 기록매체.
  8. 제6항에 있어서,
    상기 정책은 상기 소프트웨어 애플리케이션과 관련된 서명된 확장성 권리 표시 언어(extensible rights markup language) 파일의 일부로서 저장되는 컴퓨터 판독가능 기록매체.
  9. 제8항에 있어서,
    상기 생성하는 단계 및 전송하는 단계는 미리 결정된 간격(predetermined interval)으로 반복되는 컴퓨터 판독가능 기록매체.
  10. 제1항에 있어서,
    상기 활성화 바이패스 메시지는 제1 메시지 인증 코드를 더 포함하고, 상기 바인딩 서비스 메시지는 제2 메시지 인증 코드를 더 포함하고, 상기 컴퓨터 실행가능 명령어는 상기 제2 인증 코드를 이용하여 상기 바인딩 서비스 메시지를 인증하는 단계를 더 수행하는 컴퓨터 판독가능 기록매체.
  11. 컴퓨터 판독가능 기록매체로서,
    클라이언트 기계로부터 활성화 바이패스 메시지를 수신하는 단계 -상기 활성화 바이패스 메시지는, 바이패스되어야 하는 활성화 요구사항을 갖는 소프트웨어 애플리케이션과 관련된 소프트웨어 식별자 및 클라이언트 기계 식별자를 포함함-;
    상기 수신된 클라이언트 기계 식별자가 기계 식별자들의 목록 중에 있는지를 판정하는 단계;
    상기 수신된 클라이언트 기계 식별자가 상기 기계 식별자들의 목록 중에 없는 경우, 상기 수신된 클라이언트 기계 식별자를 상기 목록에 추가하는 단계;
    상기 목록 내의 고유 기계 식별자들의 수를 판정하는 단계; 및
    바인딩 서비스 메시지를 전송하는 단계 -상기 바인딩 서비스 메시지는 상기 고유 기계 식별자들의 수를 포함함-
    를 수행하기 위한 컴퓨터 실행가능 명령어를 갖는 컴퓨터 판독가능 기록매체.
  12. 제11항에 있어서,
    상기 활성화 바이패스 메시지는 제1 메시지 인증 코드를 더 포함하고, 상기 바인딩 서비스 메시지는 제2 메시지 인증 코드를 더 포함하고, 상기 컴퓨터 실행가능 명령어는 상기 제2 인증 코드를 이용하여 상기 활성화 바이패스 메시지를 인증하는 단계를 더 수행하는 컴퓨터 판독가능 기록매체.
  13. 제11항에 있어서,
    상기 컴퓨터 실행가능 명령어는 미리 결정된 시간이 지난 후에, 상기 목록으로부터 상기 수신된 클라이언트 식별자를 삭제하는 단계를 더 수행하는 컴퓨터 판독가능 기록매체.
  14. 제11항에 있어서,
    상기 클라이언트 기계 식별자는 상기 클라이언트 기계의 하드웨어 특성으로부터 유도되는 컴퓨터 판독가능 기록매체.
  15. 제11항에 있어서,
    상기 활성화 바이패스 메시지는, 상기 활성화 바이패스 메시지가 상기 클라이언트 기계에 의해 생성된 시간을 나타내는 타임스탬프를 더 포함하는 컴퓨터 판독가능 기록매체.
  16. 제15항에 있어서,
    상기 기계 식별자들의 목록 내의 각 기계 식별자는 상기 기계 식별자 및 관련된 타임스탬프를 포함하는 엔트리로서 나타나는 컴퓨터 판독가능 기록매체.
  17. 제16항에 있어서,
    상기 컴퓨터 실행가능 명령어는 상기 수신된 클라이언트 기계 식별자가 상기 기계 식별자 엔트리의 목록 중에 있는 경우, 그 엔트리를 가장 최근의 타임스탬프와 관련된 기계 식별자에 대응되는 엔트리로 업데이트 또는 교체하는 단계를 더 수행하는 컴퓨터 판독가능 기록매체.
  18. 볼륨 라이센스 환경(volume license environment)에서 무단 복제(piracy)를 막기 위한 방법으로서,
    클라이언트 기계에서 활성화 바이패스 메시지를 생성하는 단계 -상기 활성화 바이패스 메시지는, 활성화가 바이패스될 소프트웨어 애플리케이션과 관련된 소프트웨어 식별자 및 기계 식별자를 포함함-;
    상기 활성화 바이패스 메시지를 바인딩 서비스 기계로 전송하는 단계;
    상기 바인딩 서비스 기계에서, 상기 수신된 클라이언트 기계 식별자가 기계 식별자들의 목록 중에 있는지를 판정하는 단계;
    상기 수신된 클라이언트 기계 식별자가 상기 기계 식별자들의 목록 중에 없는 경우, 상기 바인딩 서비스 기계에서, 상기 수신된 클라이언트 기계 식별자를 상기 목록에 추가하는 단계;
    상기 바인딩 서비스 기계에서, 상기 목록 내의 고유 기계 식별자들의 수를 판정하는 단계;
    바인딩 서비스 메시지를 상기 클라이언트 기계로 전송하는 단계 -상기 바인딩 서비스 메시지는 고유 기계 식별자들의 수를 포함함-;
    상기 클라이언트 기계에서, 수신된 상기 고유 기계 식별자들의 수를 기계의 수를 나타내는 미리 결정된 카운트와 비교하는 단계; 및
    상기 수신된 고유 기계 식별자들의 수가 상기 미리 결정된 카운트 이상인 경우, 상기 소프트웨어 애플리케이션에 대해 활성화 바이패스를 허락하는 단계
    를 포함하는 방법.
  19. 제18항에 있어서,
    상기 바인딩 서비스 기계에서, 미리 결정된 시간이 지난 후에 상기 목록으로부터 상기 수신된 클라이언트 식별자를 삭제하는 단계, 및 상기 클라이언트 기계에서, 상기 생성하는 단계 및 전송하는 단계를 미리 결정된 간격으로 반복하는 단계를 더 포함하는 방법.
  20. 제18항에 있어서,
    상기 활성화 바이패스 메시지는 제1 메시지 인증 코드를 더 포함하고 상기 바인딩 서비스 메시지는 제2 메시지 인증 코드를 더 포함하고,
    상기 바인딩 서비스 기계에서, 상기 제1 인증 코드를 이용하여 상기 활성화 바이패스 메시지를 인증하는 단계, 및 상기 클라이언트 기계에서, 상기 제2 인증 코드를 이용하여 상기 바인딩 서비스 메시지를 인증하는 단계를 더 포함하는 방법.
KR1020087006353A 2005-09-15 2006-09-06 보안 기계 카운팅 KR101301332B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/227,528 2005-09-15
US11/227,528 US8181265B2 (en) 2003-01-31 2005-09-15 Secure machine counting
PCT/US2006/034631 WO2007035258A1 (en) 2005-09-15 2006-09-06 Secure machine counting

Publications (2)

Publication Number Publication Date
KR20080044297A KR20080044297A (ko) 2008-05-20
KR101301332B1 true KR101301332B1 (ko) 2013-08-30

Family

ID=37889129

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087006353A KR101301332B1 (ko) 2005-09-15 2006-09-06 보안 기계 카운팅

Country Status (7)

Country Link
US (1) US8181265B2 (ko)
EP (1) EP1934810B1 (ko)
JP (1) JP5185820B2 (ko)
KR (1) KR101301332B1 (ko)
CN (1) CN101263489B (ko)
BR (1) BRPI0616033B1 (ko)
WO (1) WO2007035258A1 (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7273415B2 (en) 2000-09-07 2007-09-25 Igt Gaming device having a bonus scheme with multiple selection groups
US7666093B2 (en) 2004-08-03 2010-02-23 Igt Gaming method and device involving progressive wagers
US7892093B2 (en) * 2004-08-19 2011-02-22 Igt Gaming system having multiple gaming machines which provide bonus awards
US8251791B2 (en) 2004-08-19 2012-08-28 Igt Gaming system having multiple gaming machines which provide bonus awards
US7963847B2 (en) 2004-08-19 2011-06-21 Igt Gaming system having multiple gaming machines which provide bonus awards
US8021230B2 (en) 2004-08-19 2011-09-20 Igt Gaming system having multiple gaming machines which provide bonus awards
US7607977B2 (en) * 2004-08-19 2009-10-27 Igt Gaming system having multiple gaming machines which provide bonus awards
US8128491B2 (en) 2005-09-09 2012-03-06 Igt Server based gaming system having multiple progressive awards
US7841939B2 (en) 2005-09-09 2010-11-30 Igt Server based gaming system having multiple progressive awards
US8137188B2 (en) 2005-09-09 2012-03-20 Igt Server based gaming system having multiple progressive awards
US7780520B2 (en) * 2006-03-15 2010-08-24 Igt Gaming device having multiple different types of progressive awards
US8070597B2 (en) * 2006-08-03 2011-12-06 Igt Gaming device and method having multiple progressive award levels and a secondary game for advancing through the progressive award levels
US8523665B2 (en) * 2006-10-11 2013-09-03 Igt Gaming system and method having multi-level mystery triggered progressive awards
US20080108430A1 (en) 2006-11-08 2008-05-08 Igt Gaming system and method which provides players an opportunity to win a progressive award
US7963845B2 (en) 2006-11-08 2011-06-21 Igt Gaming system and method with multiple progressive award levels and a skill based determination of providing one of the progressive award levels
US9047733B2 (en) * 2006-11-08 2015-06-02 Igt Gaming system and method for providing multiple level progressive awards with increased odds of winning higher level progressive awards
US8105149B2 (en) 2006-11-10 2012-01-31 Igt Gaming system and method providing venue wide simultaneous player participation based bonus game
US9002745B2 (en) * 2006-12-21 2015-04-07 Igt Secure media distribution in a wager gaming system
US8667604B2 (en) * 2007-09-13 2014-03-04 Microsoft Corporation Protection of software on portable medium
US20090204544A1 (en) * 2008-02-08 2009-08-13 Microsoft Corporation Activation by trust delegation
WO2009105702A2 (en) * 2008-02-22 2009-08-27 Etchegoyen Craig S License auditing for distributed applications
US8376836B2 (en) 2008-11-07 2013-02-19 Igt Server based gaming system and method for providing deferral of bonus events
US8708804B2 (en) 2012-06-22 2014-04-29 Igt Gaming system and method providing a collection game including at least one customizable award collector
CN109933609B (zh) * 2019-01-30 2022-04-01 福建天泉教育科技有限公司 一种批量生成id的方法及终端
JP7180638B2 (ja) 2020-06-08 2022-11-30 トヨタ自動車株式会社 車両の走行状態制御装置及び方法
CN114297588A (zh) * 2021-12-31 2022-04-08 奇安信科技集团股份有限公司 一种软件正版化管理方法、装置及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4688169A (en) 1985-05-30 1987-08-18 Joshi Bhagirath S Computer software security system
US5182770A (en) 1991-04-19 1993-01-26 Geza Medveczky System and apparatus for protecting computer software

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3938120A (en) * 1974-05-06 1976-02-10 Baltimore Brushes, Inc. Talking door sentinel
US4323883A (en) * 1980-12-31 1982-04-06 Sowards Lorin F Doorbell for pets
US4400696A (en) * 1981-04-29 1983-08-23 Klingensmith Robert R Animal actuated attention attracting apparatus
US4686504A (en) * 1986-08-07 1987-08-11 German Richard W Pet operable annunciator
DE3815869A1 (de) * 1987-05-08 1988-11-17 Ricoh Kk Verfahren zum extrahieren von merkmalsmengen eines zeichens
CA1258306A (en) * 1988-08-16 1989-08-08 Gordon E.L. Gunoff Doorbell activating device for pets
US5138712A (en) 1989-10-02 1992-08-11 Sun Microsystems, Inc. Apparatus and method for licensing software on a network of computers
AU2247092A (en) 1991-05-08 1992-12-21 Digital Equipment Corporation License management system
US5260999A (en) 1991-06-28 1993-11-09 Digital Equipment Corporation Filters in license management system
US5204897A (en) 1991-06-28 1993-04-20 Digital Equipment Corporation Management interface for license management system
US6134324A (en) 1991-07-31 2000-10-17 Lsi Logic Corporation Method and system for distributing a plurality of software products, and limiting access thereto
US5365214A (en) * 1992-08-24 1994-11-15 Dimango Products Corporation Musical wireless alerting system
US5319705A (en) 1992-10-21 1994-06-07 International Business Machines Corporation Method and system for multimedia access control enablement
US5509070A (en) * 1992-12-15 1996-04-16 Softlock Services Inc. Method for encouraging purchase of executable and non-executable software
US5303677A (en) * 1993-03-31 1994-04-19 Jones George D Pet entrance pager
JPH07110767A (ja) 1993-10-13 1995-04-25 Mitsubishi Electric Corp ソフトウエア使用ライセンス管理制御方法
US5443036A (en) * 1993-11-02 1995-08-22 Amiss; Kevin T. Method of exercising a cat
JPH07219763A (ja) * 1994-02-03 1995-08-18 Canon Inc ソフトウェアの登録/起動方法及びその装置
US5553139A (en) 1994-04-04 1996-09-03 Novell, Inc. Method and apparatus for electronic license distribution
US5845065A (en) 1994-11-15 1998-12-01 Wrq, Inc. Network license compliance apparatus and method
US5604478A (en) * 1995-03-06 1997-02-18 Tamara L. Grady Pet operable door chime
US5475369A (en) * 1995-05-24 1995-12-12 Baker; William J. Animal actuating signaling device
JP3688356B2 (ja) 1995-08-31 2005-08-24 富士通株式会社 ライセンシー通知システム
US6067622A (en) 1996-01-02 2000-05-23 Moore; Steven Jerome Software security system using remove function to restrict unauthorized duplicating and installation of an application program
US20010011253A1 (en) 1998-08-04 2001-08-02 Christopher D. Coley Automated system for management of licensed software
US5905860A (en) 1996-03-15 1999-05-18 Novell, Inc. Fault tolerant electronic licensing system
US5742757A (en) 1996-05-30 1998-04-21 Mitsubishi Semiconductor America, Inc. Automatic software license manager
JP3917687B2 (ja) 1996-08-22 2007-05-23 富士通株式会社 コンテンツ利用管理装置及びその装置を用いたコンテンツ利用システム
US5754763A (en) 1996-10-01 1998-05-19 International Business Machines Corporation Software auditing mechanism for a distributed computer enterprise environment
JP3924342B2 (ja) 1997-02-14 2007-06-06 富士通株式会社 ソフトウェアライセンス管理システムおよびソフトウェアライセンス管理装置
US6108420A (en) 1997-04-10 2000-08-22 Channelware Inc. Method and system for networked installation of uniquely customized, authenticable, and traceable software application
US6263492B1 (en) 1997-06-06 2001-07-17 Microsoft Corporation Run time object layout model with object type that differs from the derived object type in the class structure at design time and the ability to store the optimized run time object layout model
US6188995B1 (en) 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
US6175298B1 (en) * 1998-08-06 2001-01-16 The Lamson & Sessions Co. CD quality wireless door chime
US6006035A (en) 1997-12-31 1999-12-21 Network Associates Method and system for custom computer software installation
US6134659A (en) 1998-01-07 2000-10-17 Sprong; Katherine A. Controlled usage software
JPH11238038A (ja) 1998-02-19 1999-08-31 Iwanami Shoten:Kk ネットワークライセンス管理システムおよび記録媒体
US6324649B1 (en) 1998-03-02 2001-11-27 Compaq Computer Corporation Modified license key entry for pre-installation of software
US6189146B1 (en) 1998-03-18 2001-02-13 Microsoft Corporation System and method for software licensing
US6226747B1 (en) 1998-04-10 2001-05-01 Microsoft Corporation Method for preventing software piracy during installation from a read only storage medium
US6223288B1 (en) 1998-05-22 2001-04-24 Protexis Inc. System for persistently encrypting critical software file to prevent installation of software program on unauthorized computers
US6799277B2 (en) 1998-06-04 2004-09-28 Z4 Technologies, Inc. System and method for monitoring software
US6044471A (en) * 1998-06-04 2000-03-28 Z4 Technologies, Inc. Method and apparatus for securing software to reduce unauthorized use
US6169976B1 (en) 1998-07-02 2001-01-02 Encommerce, Inc. Method and apparatus for regulating the use of licensed products
JP3573624B2 (ja) 1998-07-31 2004-10-06 三菱電機株式会社 ネットワークインストールシステム
US6343280B2 (en) 1998-12-15 2002-01-29 Jonathan Clark Distributed execution software license server
CA2262830A1 (fr) * 1999-03-05 2000-09-05 Andre Laroche Systeme de deverrouillage securitaire pour porte electrique
US6920567B1 (en) 1999-04-07 2005-07-19 Viatech Technologies Inc. System and embedded license control mechanism for the creation and distribution of digital content files and enforcement of licensed use of the digital content files
US6697948B1 (en) * 1999-05-05 2004-02-24 Michael O. Rabin Methods and apparatus for protecting information
WO2000075760A1 (en) 1999-06-07 2000-12-14 Firepad, Inc. Method and system for preventing the unauthorized use of software
US6842896B1 (en) 1999-09-03 2005-01-11 Rainbow Technologies, Inc. System and method for selecting a server in a multiple server license management system
US7035918B1 (en) 1999-09-03 2006-04-25 Safenet Canada. Inc. License management system and method with multiple license servers
JP2001084137A (ja) * 1999-09-14 2001-03-30 Matsushita Electric Ind Co Ltd ライセンス管理装置およびライセンス管理方法
US20030088516A1 (en) 1999-12-21 2003-05-08 Eric B. Remer Software anti-piracy licensing
US6460140B1 (en) 1999-12-30 2002-10-01 Starnet Communications Corporation System for controlling the use of licensed software
JP4086445B2 (ja) 2000-03-09 2008-05-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報送信方法、ネットワーク・プロバイダ・サーバ、情報端末及び情報端末における方法
US6948168B1 (en) 2000-03-30 2005-09-20 International Business Machines Corporation Licensed application installer
US20030050895A1 (en) 2000-03-31 2003-03-13 Rick Dedrick Automated volume license agreement method and apparatus
US7024696B1 (en) 2000-06-14 2006-04-04 Reuben Bahar Method and system for prevention of piracy of a given software application via a communications network
US6810389B1 (en) 2000-11-08 2004-10-26 Synopsys, Inc. System and method for flexible packaging of software application licenses
US6368227B1 (en) * 2000-11-17 2002-04-09 Steven Olson Method of swinging on a swing
JP2002297255A (ja) 2001-03-30 2002-10-11 Ntt Comware Corp ソフトウェア管理方法、そのシステム、そのプログラム及びそのプログラムが記録された記録媒体
JP4194772B2 (ja) 2001-07-05 2008-12-10 ヤフー株式会社 ソフトウェア使用認証方法、ソフトウェア使用認証プログラム、ソフトウェア使用認証プログラムを記録した記録媒体、ソフトウェア使用認証方法で用いられるデータ、このデータを記録した記録媒体
US7111285B2 (en) 2001-07-17 2006-09-19 Liquid Machines, Inc. Method and system for protecting software applications against static and dynamic software piracy techniques
US7742992B2 (en) 2002-02-05 2010-06-22 Pace Anti-Piracy Delivery of a secure software license for a software product and a toolset for creating the software product
US7747531B2 (en) 2002-02-05 2010-06-29 Pace Anti-Piracy Method and system for delivery of secure software license information
US7228567B2 (en) 2002-08-30 2007-06-05 Avaya Technology Corp. License file serial number tracking
US6859793B1 (en) 2002-12-19 2005-02-22 Networks Associates Technology, Inc. Software license reporting and control system and method
US7644442B2 (en) 2003-01-31 2010-01-05 Microsoft Corporation Systems and methods for using machine attributes to deter software piracy in an enterprise environment
US7356709B2 (en) * 2003-01-31 2008-04-08 Microsoft Corporation Systems and methods for deterring software piracy in a volume license environment
JP4371711B2 (ja) * 2003-06-11 2009-11-25 キヤノン株式会社 情報処理装置およびその制御方法、並びに、コンピュータプログラム
JP4069388B2 (ja) * 2003-09-16 2008-04-02 ソニー株式会社 サーバ装置およびコンテンツサーバ装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4688169A (en) 1985-05-30 1987-08-18 Joshi Bhagirath S Computer software security system
US5182770A (en) 1991-04-19 1993-01-26 Geza Medveczky System and apparatus for protecting computer software

Also Published As

Publication number Publication date
CN101263489A (zh) 2008-09-10
EP1934810A1 (en) 2008-06-25
BRPI0616033B1 (pt) 2018-09-25
EP1934810A4 (en) 2016-11-23
US8181265B2 (en) 2012-05-15
CN101263489B (zh) 2010-12-01
KR20080044297A (ko) 2008-05-20
US20060036552A1 (en) 2006-02-16
WO2007035258A1 (en) 2007-03-29
JP2009509239A (ja) 2009-03-05
EP1934810B1 (en) 2018-01-03
JP5185820B2 (ja) 2013-04-17
BRPI0616033A2 (pt) 2011-06-07

Similar Documents

Publication Publication Date Title
KR101301332B1 (ko) 보안 기계 카운팅
JP4902636B2 (ja) マシン属性を使用して企業環境におけるソフトウエア海賊版を防止する方法およびシステム
JP4731817B2 (ja) ボリュームライセンスキー環境においてソフトウェアの著作権侵害を阻止するシステムおよび方法
US7424606B2 (en) System and method for authenticating an operating system
JP4870937B2 (ja) ソフトウエアのアップデートを制限する方法およびシステム
JP5992457B2 (ja) オペレーティングシステムのコンフィグレーション値の保護
JP4906854B2 (ja) 情報処理装置、情報記録装置、情報処理システム、プログラムアップデート方法、プログラムおよび集積回路
KR101159316B1 (ko) 소프트웨어 제품 면허의 단일 재활성화를 위한 방법 및 시스템
KR101219839B1 (ko) 콘텐츠 저작권 관리 시스템에서의 유연한 라이센싱아키텍처
JP4844102B2 (ja) サブプログラム及びそのサブプログラムを実行する情報処理装置
KR20080026132A (ko) 신뢰 환경을 지원하기 위한 컴퓨터 판독가능 구성요소의자동 업데이트
US20110010778A1 (en) Standalone solution for serial copy management system (scms) compliance
Maruyama et al. Linux with TCPA integrity measurement
KR20080008328A (ko) 보호 컴퓨팅 환경의 갱신 가능하고 개별화 가능한 요소
AU2015202830A1 (en) Electronic license management
KR20080004289A (ko) 프로그램 불법설치 방지를 위한 웹 인증키 생성 시스템 및방법
KR20060063609A (ko) 가상경로를 이용한 리소스 제공 방법 및 그 시스템

Legal Events

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

Payment date: 20160720

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170719

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180730

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190729

Year of fee payment: 7