KR100200444B1 - 소프트웨어 객체 배포 방법 - Google Patents

소프트웨어 객체 배포 방법 Download PDF

Info

Publication number
KR100200444B1
KR100200444B1 KR1019950009726A KR19950009726A KR100200444B1 KR 100200444 B1 KR100200444 B1 KR 100200444B1 KR 1019950009726 A KR1019950009726 A KR 1019950009726A KR 19950009726 A KR19950009726 A KR 19950009726A KR 100200444 B1 KR100200444 B1 KR 100200444B1
Authority
KR
South Korea
Prior art keywords
file
key
software object
user
encrypted
Prior art date
Application number
KR1019950009726A
Other languages
English (en)
Other versions
KR950029928A (ko
Inventor
이. 쿠퍼 토마스
프레이어 로버트에프.
Original Assignee
포만 제프리 엘
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포만 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포만 제프리 엘
Publication of KR950029928A publication Critical patent/KR950029928A/ko
Application granted granted Critical
Publication of KR100200444B1 publication Critical patent/KR100200444B1/ko

Links

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/109Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by using specially-adapted hardware at the client
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 소프트웨어 객체를 업자로부터 잠재적 사용자에게로 배포하는 방법 및 장치에 관한 것이다. 소프트웨어 객체는 바람직하게 암호화를 통해 파기가능하게 기능적으로 제한되며, 화일 관리 프로그램과 함께 컴퓨터 액세스가능 메모리 매체로 로딩된다. 컴퓨터 액세스가능 메모리 매체는 업자로부터 잠재적 사용자에게로 전달된다. 화일 관리 프로그램은 사용자 제어 데이타 처리 시스템으로 로딩되며, 사용자 제어 데이타 처리 시스템의 운영 체제와 연관된다. 컴퓨터 액세스가능 메모리 매체는 사용자 제어 데이타 처리 시스템에 의해 판독된다. 파일 관리 프로그램은 소프트웨어 객체에 대한 액세스를 제한하기 위해 사용된다.

Description

소프트웨어 객체 배포 방법
제1도는 소프트웨어 제품의 시험사용 기간의 사용을 가능하게 하는 바람직한 기법의 구현에 사용될 수 있는 독립형 데이터 처리 시스템, 전화기 및 각종 컴퓨터 액세스가능 메모리 매체를 도시한 도면.
제2도는 소프트웨어 제품의 시험사용 기간의 사용을 가능하게 하는 본 발명의 기법을 이용할 수 있는 분산 데이터 처리 시스템을 도시한 도면.
제3도는 본 발명에 따라 머신 ID를 발생시키는데 사용될 수 있는 데이터 처리 시스템의 속성을 나타내는 블럭도.
제4도는 소프트웨어 객체를 암호화하는 루틴을 도시하는 블럭도.
제5도는 본 발명의 기법에 따라 소스(소프트웨어 업자) 및 사용자(고객) 사이의 정보 교환을 도시하는 도면.
제6도는 본 발명에 따라 사용자 인터페이스 셀을 구축하는데 사용되는 개략적 단계를 나타내는 흐름도.
제7도는 본 발명에 따라 업자와 고객사이의 대화를 나타내는 흐름도.
제8도, 제9도, 제10a도 및 제10b도는 본 발명에 따라 시험사용 기간의 동작을 용이하게 하는 사용자 인터페이스 스크린을 예시한 도면.
제11도는 일시 액세스 키를 개시하는데 사용되는 사용자 인터페이스를 예시한 도면.
제12도는 머신 ID를 발생시키는 바람직한 기법을 예시한 블럭도.
제13도는 본 발명에 따라 머신 ID를 암호화하는데 사용되는 암호화 동작을 도시한 블럭도.
제14도는 본 발명에 따라 제품 키를 발생시키기 위한 바람직한 기법을 나타내는 블럭도.
제15도는 하나 혹은 그 이상의 소프트웨어 객체를 암호해독하는데 사용될 수 있는 실제 키를 발생시키기 위해 일시 제품 키를 사용하는 기법을 도시한 블럭도.
제16도 및 제17도는 제15도의 블럭도에 따라 도출된 실제 키를 검증하기 위한 바람직한 기법을 도시한 도면.
제18도는 일시 키를 포함하는 정보를 포함하는 키 화일을 암호화하기 위한 바람직한 루틴을 나타내는 블럭도.
제19도는 본 발명에 따라, 암호화된 화일내의 암호화 헤더를 처리하는 바람직한 기법을 나타내는 블럭도.
제20도는 암호화된 소프트웨어 객체를 암호해독하는데 사용될 수 있는 실제 키를 도출하기 위해 사용자 제어 데이터 처리 시스템내의 다수의 입력을 사용하는 기법을 블럭도로 도시한 도면.
제21도는 제20도에 따라 도출된 실제 키를 사용하여 암호해독하는 동작을 도시한 도면.
제22도는 실제 키의 유효성을 판정하기 위해 사용되는 비교 동작을 나타내는 블럭도.
제23도는 검증된 실제 키를 사용하여 암호해독하는 동작을 도시한 도면.
제24,25,26,27 및 28도는 본 발명에 따른 암호화 헤더의 사용을 나타내는 도면.
제29a 및 29b도는 암호화된 소프트웨어 객체의 시험사용 기간의 사용을 위한 바람직한 기법을 도시한 흐름도.
제30도 및 제31도는 분산 데이터 처리 시스템내에서 시험사용 기간의 사용을 위한 동작을 수행하는데 사용될 수 있는 수입/수출 동작을 나타내는 도면.
제32도 및 제33도는 제30도 및 제31도에 도시된 수입/수출 동작의 또 다른 실시예를 도시한 도면.
제34도 및 제35도는 수입/수출 동작을 수행하는 다른 기법을 도시한 블럭도.
* 도면의 주요부분에 대한 부호의 설명
10 : 데이터 처리 시스템 74 : 메모리 제어기
78 : 인터럽트 제어기 102 : 디스크 제어기
108 : 분산 데이터 처리 시스템 203 : 실제 키
201 : 소프트웨어 객체 205 : 암호화 엔진
207 : 암호화된 소프트웨어 객체 377 : 제품 키
379 : 실제 키 발생기 397 : 키 파일
405 : 암호화된 키 파일 413 : 암호해독 엔진
421 : 고유의 시스템 속성 499 : 헤더
651 : 소스 컴퓨터 655 : 머신 ID 파일
707 : 타겟 컴퓨터 807 : 수출 키 디스켓
1665 : 전달 키 1701 : 타겟 컴퓨터 속성
본 발명은 전반적으로 소프트웨어 객체(software object)로의 액세스를 보호하기 위한 기법에 관한 것으로서, 특히 소프트웨어 객체로의 액세스를 일시적으로 암호하하여 제한하는 기법에 관한 것이다.
혁신적인 소프트웨어 제품을 개발하여 판매하는 회사는 엄청난 부(富)를 얻고 있으며, 이러한 추세는 시간이 경과할수록 보다 많은 소비자가 컴퓨터를 사용하게 되어 더욱 확대될 것이다. 그러나 잠재적인 소비자가 각종 소프트웨어 제품을 브라우징(browse)할 수 있는 기회가 거의 없기 때문에 컴퓨터 소프트웨어를 판매하기가 쉽지는 않다. 통상, 소프트웨어 제품은 상자에 포장되어 있으므로 소비자가 그 제품을 구입하기 전에는 실제로 그제품을 사용해 볼 수가 없다. 이러한 점은 소비자가 소프트웨어 제품에 대해 갖는 큰 불만 사항들중의 하나이다. 왜냐하면, 소비자는 종종 각종 소프트웨어 제품을 구입해본 후에야 비로서 적합한 제품을 찾을 수 있기 때문이다. 소프트웨어 해적 행위(piracy)가 난무하는 것도 이러한 점에 상당 부분 기인한다. 잠재적 소프트웨어 구매자는 종종 친구 혹은 관련 업체로부터 일시적인 사용을 위해 소프트웨어를 대여하곤 한다. 그러나 이러한 일시적 대여는 종종 오랜 기간으로 연장되며, 이 잠재적 구입자는 결코 소프트웨어 제품의 정본을 구입하지 않고 대여한 복사본을 사용할 수도 있다.
영화관의 영화 예고편 및 TV의 광고처럼 통상의 통신 채널을 통해 소프트웨어 제품의 견본을 광고할 수는 없으므로 소프트웨어 업자는 새로운 제품을 광고하고 소비자의 관심을 끌기 위해서 인쇄물 및 DM 광고(direct mail advertisement)를 이용해야 한다. 불행하게도, 인쇄물은 종종 제품의 특성을 정확히 전달할 수 없는데, 그 이유는, 정적인 인쇄물로는 사용자와 소프트웨어 제품 사이의 상호작용 혹은 대화(interact)가 시뮬레이션(simulation)될 수 없기 때문이다. 소비자가 소프트웨어 제품 구입을 결정하기 전에 이 제품을 액세스할 수 있고 또한 이러한 액세스로 인해 소프트웨어 제품이 불법적으로 사용될 염려가 없다면, 컴퓨터 소프트웨어 제품의 업자 및 소비자 모두에게는 이익이 될 것이다.
소프트웨어 업자는 암호화된 소프트웨어 제품을 배포함으로써 소비자에게 제품을 구입하기 전에 사용해 볼 수 있는 기회를 부여할 수도 있을 것이다. 그러나, 이를 위해서는 이 제품에 대한 사용자의 액세스를 허용하는 키를 함께 배포해야 한다. 업자는 이후 전적으로 잠재적 구매자의 정직성 및 인격에 의존할 수 밖에 없다. 부도덕하거나 정직하지 못한 사용자는 자신의 친구 혹은 관련 업체에 키를 넘겨 주어 이들이 불법적인 액세스를 행할 수도 있다. 또한 부도덕한 사용자가 공중이 액세스할 수 있는 공중 게시판(publicly-accessible bulletin boards)에 이 키를 공개함으로써 다수의 사용자가 불법적인 사용자가 되게 할 수도 있다. 전형적으로, 이러한 불법 행위는 쉽게 근절될 수 없으며, 따라서 업자는 잠재적 구매자에게 미리 제품을 배포하는 것을 주저할 수 밖에 없게 된다.
따라서, 본 발명의 일 목적은 일시 사용을 넘어선 불법적인 사용 및 불법 복제의 위험없이 사용자의 일시 시험사용적인 소프트웨어 사용이 하용되도록 업자로부터 잠재적 구매자에게로 소프트웨어 객체를 배포하는 장치 및 방법을 제공하는 데 있다. 바람직하게도 이 목적은 파일 관리 프로그램(file management program)과 함께 컴퓨터 액세스가능 메모리 매체(computer-accessible memory media)상에 소프트웨어 객체를 제공함으로써 달성된다. 바람직하게도, 소프트웨어 객체는 하나 혹은 그 이상의 암호화 동작을 통해 그 기능이 파기가능하게 제한된다. 컴퓨터 액세스가능 메모리매체는 통상의 우편 및 배달 서비스를 통해 업자로부터 잠재적 구매자에게로전달된다. 잠재적 구매자는 상기 매체를 전달받았을 때, 화일 관리 프로그램을 사용자 제어 데이타 처리 시스템에 로딩하고 이 데이타 처리 시스템의 운영 체제와 연관시킨다. 이후, 컴퓨터 액세스가능 메모리 매체는 이 사용자 제어 데이터 처리 시스템의 사용을 통해 판독된다. 화일 관리 프로그램은 사용자 제어데이타 처리시스템에 의해 실행되고, 소프트웨어 객체에 대한 액세스를 사전정의된 일시 시험사용 기간동안의 사용으로 제한하는 역할을 한다. 일시 시험사용 동작 모드동안, 소프트웨어 객체는 이 소프트웨어 객체의 가역적인 기능 제한을 파기시킴으로써 일시적으로 사용가능하게 된다. 이러한 동작은 바람직하게도 소프트웨어 객체가 사용자 제어 데이타 처리 시스템에 의해 호출되었을 때만 암호화된 소프트웨어 객체를 암호해독함으로써 달성될 수 있다. 화일 관리 프로그램은 바람직하게도 복제 동작을 차단하며, 따라서 이 암호화된 소프트웨어 객체는 운영 체제에 의해 이 소프트웨어 객체가 호출되었을 때만 일시적으로 암호해독된다. 잠재적 사용자가 이 소프트웨어 객체를 구매하기로 결정하면, 이 소프트웨어 객체는 영구 사용 동작 모드로 진입하며, 이 소프트웨어 객체의 기능적 제한이 영구적으로 파기되어, 잠재적 사용자는 이 소프트웨어 객체를 자유로이 사용할 수 있다. 이로써 잠재적 사용자는 소프트웨어를 시험사용하여, 이소프트웨어가 사용자 자신이 원하는 제품인지를 판정할 수 있게 된다.
화일 관리 프로그램은 사용자 제어 데이타 처리 시스템의 운영 체제를 지속적으로 감시하여 운영 체제 입력 호출 및 출력 호출을 감시한다. 화일 관리 프로그램은 사용자 제어 데이타 처리 시스템의 운영 체제가 시험사용 기간동안 브라우즈되는 소프트웨어 객체를 호출하는 시점을 식별한다. 이후, 화일 관리 프로그램은 이 소프트웨어 객체와 연관된 일시 액세스 키를 인출하고, 이어서 일시 액세스키를 검사하여 이 키가 유효한지를 판정한다. 다음, 화일 관리 프로그램은 이 소프트웨어 객체의 기능적 제한을 파기하고, 이를 데이타 처리 시스템으로 전송하여 처리한다.
본 발명의 다른 목적은 업자로부터 사용자에게로 소프트웨어 객체를 배포하는 장치 및 방법을 제공하는 데 있다. 소프트웨어 객체는 영속 암호화 키(long-lived encryption key)를 사용하여 암호화되어, 업자로부터 사용자에게로 전달 된다. 암호화된 소프트웨어 객체는 특정의 시스템 구성(particular system configuration)을 갖는 사용자 제어 데이타 처리 시스템으로 로딩된다. 이후, 적어도 부분적으로 사용자 제어 데이티 처리 시스템의 특정 구성에 기초한 머신 ID가 도출된다. 다음, 적어도 부분적으로 머신 ID 및 영속 암호화 키에 기초한 일시 키가 도출된다. 일시 키를 수신하여 영속 암호화 키를 발생기키기 위해 영속 키 발생기가 제공된다. 이 일시 키에 의해 사용자는 규정된 기간동안 소프트웨어 객체를 액세스하기 위한 영속 암호화 키를 발생시킨다. 이들 동작은 다수의 모드에서 동작가능한 화일 관리 프로그램에 의해 주로 수행된다. 이들 모드에는 설정 동작 모드, 머신 식별 동작 모드 및 일시 키 도출 동작 모드가 포함된다. 설정 동작 모드동안, 화일 관리 프로그램은 사용자 제어 데이타 처리 시스템으로 로딩되어 사용자 제어 데이타 처리 시스템의 운영 체제와 연관된다. 머신 식별 동작 모드동안, 화일 관리 프로그램이 사용되어 적어도 사용자 제어 데이타 처리 시스템의 속성에 기초한 머신 ID가 도출된다. 일시 키 도출 동작 모드동안, 적어도 부분적으로 머신식별 번호에 기초한 일시 키가 도출된다. 화일 관리 프로그램은 또한 시험사용 동작 모드를 허용하며, 이 모드에서는 화일 관리 프로그램이 사용자 제어 데이타 처리 시스템에 의해 실행되어 일시 키에 의해 정의되는 기간동안 소프트웨어 객체로의 액세스가 제한된다. 즉, 이 가간동안에는 일시 키를 포함하는 적어도 하나의 입력수신에 응답하여 사용자 제어 데이터 처리 시스템에서 영속 키 발생기가 사용되어 영속 키가 제공된다.
본 발명의 또 다른 목적은 데이터 처리 시스템에서 컴퓨터 액세스가능 메모리 매체에 저장된 특정 화일로의 액세스를 보호하는 방법 및 장치를 제공하는데 있다. 화일 관리 프로그램은 데이터 처리 시스템의 운영 체제 구성요소로서 제공된다. 컴퓨터 액세스가능 메모리 매체에 적어도 하나의 암호화 화일 및 적어도 하나의 암호화되지 않은 화일을 포함하는 다수의 파일이 저장된다. 각 암호화 화일에 대해서, 사전선택된 부분이 컴퓨터 메모리에 기록되, 이 화일에 암호해독하는데 사용될 수 있는 정보를 포함하는 암호해독 블럭이 발생되며, 이 암호해독 블럭은 컴퓨터 메모리의 임의의 부분에 기록된 상기 사전선택된 부분을 대신하여 이 파일에 통합된다. 화일 관리 프로그램은 컴퓨터 액세스가능 메모리 매체에 저장된 호출된 화일에 대한 데이터 처리 동작 호출(data processing operation calls)을 감시하며, 화일 관리 프로그램은 호출된 화일이 이에 연관된 암호해독 블럭을 갖는지를 판정한다. 화일 관리 프로그램은 호출된 파일이 연관된 암호해독 블럭을 갖는 지의 여부에 따라 특정 방식으로 호출된 화일을 처리한다. 암호해독 블럭을 통합하여도 암호화된 화일의 크기는 변화하지 않으며, 따라서 특정 유형의 처리 에러의 발생이 방지된다. 시험사용 기간동안, 암호화된 화일은 암호화된 상태로 보존되며 복제될 수 없다. 잠재적인 사용자가 소프트웨어 제품을 구입하기로 하면, 영구 키가 제공되어 암호해독 블록 대신 사전선택된 부분이 이 화일로 대체된다. 일단, 암호해독 블록이 제거되면, 암호화된 화일은 암호해독되어 구입자가 자유로이 사용할 수 있게끔 할 수 있다. 바람직하도, 화일 관리 프로그램은, 운영체제에 의해 호출될 때, 화일을 인터셉트하며, 암호해독 블럭을 사용하여 키 파일 명칭을 도출하고 호출된 화일을 판독하는데 사용된다. 각각의 암호화된 화일의 암호해독 블록은 유효 세그먼트를 구비하며, 이 세그먼트는 화일 관리 프로그램에 의해 암호해독되고 상기 키가 특정 파일을 암호해독할 수 있는지의 여부를 판정하기 위해 호출된 화일의 선택된 세그먼트와 비교된다. 암호해독된 유효 세그먼트가 알려진 순수 텍스트 유효세그먼트(known clear text validation segment)와 일치하면, 파일은 이후 동적으로 암호해독되어 차후의 처리를 위해 전달된다.
본 발명의 또 다른 목적은 데이터 처리 시스템에서 컴퓨터 액세스가능 메모리 매체에 저장된 특정 파일로의 액세스를 보호하는 방법 및 장치를 제공하는 데 있다. 파일 관리 프로그램이 데이터 처리 시스템의 운영 체제 구성요소로서 제공된다. 데이터 처리 시스템에 사용가능한 컴퓨터 액세스가능 메모리 매체에는 적어도 하나의 암호화된 파일 및 적어도 하나의 암호화되지 않은 파일이 저장된다. 암호화된 파일은 적어도 부분적으로 실행가능한 코드로 구성된 암호화되지 않은 보안 스터브(security stub)와 연관된다. 파일 관리 프로그램은 컴퓨터 액세스가능 메모리 매체에 저장된 호출된 파일에 대한 데이터 처리 시스템 호출을 감시하고, 호출된 화일이 연관된 암호화되지 않은 보안 스퍼브를 갖는지를 판정하며, 호출된 화일이 연관된 암호화되지 않은 보안 스터브를 갖는지의 여부에 따라 특정한 방식으로 호출된 화일을 처리하는데 사용된다. 보다 상세히 설명하면, 호출된 파일이 이와 연관된 암호화되지 않은 보안 스터브를 갖지 않는다고 판정되면 호출된 파일의 처리가 허용된다. 그러나, 호출된 화일이 이에 연관된 암호화되지 않은 보안 스터브를 갖는다고 판정되면, 호출된 화일의 처리 허용 여부에 관한 판정이 내려지기 전에 다음의 사항이 검사되어야 한다. 먼저, 암호해독 동작이 실행되도록 허용하는 정보를 획득하기 위해 암호화되지 않은 보안 스터브가 검사된다. 이후 암호해독 동작이 수행된다. 최종적으로, 호출된 화일이 후속 처리를 위해 전달되도록 허용된다. 바람직하게, 호출된 파일은 처리를 위해 운영 체제로 전달됨에 따라 동작으로 암호해독 된다. 또한, 암호화되지 않은 보안 스터브는 호출된 파일의 실행전에 호출된 파일로부터 분리된다. 그러나, 암호화되지 않은 보안 스터브가 우연히 호출된 파일에 부착된 채로 남는다면, 처리 동작은 중단되어야 하며, 프로세서가 잠겨지는 것(locked-up)을 방지하기 위해 메시지가 전상되어야 한다.
본 발명의 또 다른 목적은 소스로부터 사용자에게로 소프트웨어 객체를 배포하는 장치 및 방법을 제공하는 데 있다. 컴퓨터 액세스가능 메모리 매체가 소스로부터 잠재적 사용자에게로 배포된다. 이 컴퓨터 액세스가능 메모리 매체는 사전결정된 암호화 엔진 및 영속 비밀 키를 사용하여 암호화되는 소프트웨어 객체를 포함한다. 인터페이스 프로그램이 제공되어 업자와 사용자 사이의 상호작용 즉 대화를 용이하게 한다. 인터페이스 프로그램은 사용자 제어 데이타 처리 시스템의 적어도 하나의 사전결정된 속성을 사용하여 머신 ID를 발생시키는 머신 식별 모듈을 포함하며, 또한 적어도 하나의 일시 키를 입력으로서 수신하여 영속 비밀 키를 출력으로서 빌생시키는 영속 비밀 키 발생기를 포함한다. 검증 모듈이 제공되어, 자신의 유효성이 결정된 일시 키를 테스트한다. 소프트웨어 객체 소스는 일시 키 발생기를 보유하며, 이 일시 키 발생기는 적어도 하나의 머신 ID를 입력으로서 수신하고 일시 키의 출력을 발생시킨다. 인테페이스 프로그램은 사용자 제어 데이터 처리 시스템 상으로 로딩된다. 사용자 식별 모듈은 사용자 제어 데이터 처리 시스템의 적어도 하나의 사전결정된 속성을 검사하여, 머신 ID를 발생시키는데 사용된다. 소스와 사용자 사이의 대화동안, 머신 ID는 보안이 유지되지 않는 통신 채널상으로 전달된다. 소프트웨어 객체의 소스에서, 일시 키는 키 발생기에 머신 ID (및 다른 정보)를 입력함으로써 발생된다. 소스와 사용자 사이의 대화동안, 일시 키는 전형적으로 보안이 유지되지 않는 통신 채널상으로 전달된다. 다음, 검증 모듈이 일시키의 유효성을 판정하는데 사용된다. 이어서, 소프트웨어 객체를 암호해독하여 일시적으로 액세스하기 위해, 일시 키를 수신하여 영속 비밀 키를 발생시키는 영속 비밀 키 발생기가 사용된다. 사용자에게는 또한 수입 모듈 및 수출 모듈(import module and export module)이 제공되며, 이들 모듈은 분산 데이터 처리 시스템내의 하나의 머신에서 다른 머신으로 암호화된 소프트웨어 객체, 키 파일 및 머신 ID 파일을 전송하는데 휴대용 메모리 매체가 사용될 수 있도록 허용하고, 이 경우 일시키를 사용하면 소프트웨어 객체에 대한 일시적인 시험사용 액세스가 허용된다.
이하 본 도면을 참조하여 본 발명을 상세히 설명한다.
소프트웨어 제품을 시험사용 기간동안 사용할 수 있게 하는 본 발명의 장치 및 방법은 제1도에 예시된 것과 같은 독립형 PC(stand-alone PC), 혹은 제2도에 예시된 것과 같은 분산 데이터 처리 시스템(distributed data processing system)에서 사용될 수 있다. 어느 경우에나, 하나 혹은 그 이상의 소프트웨어 제품에 대한 일시적인 시험사용 기간동안의 액세스는 특정 데이터 처리 시스템 속성(particular data processing system attributes)을 갖는 특정 데이터 처리 시스템상에서 시험사용 제품을 사용하는 것에 따라 결정된다. 이러한 동작은 하나 혹은 그 이상의 데이터 처리 시스템 속성에 기초하는 일시 액세스 키(temporary access key)를 사용하여 시험 소프트웨어 제품을 암호화함으로써 달성된다. 제3도는 다수의 시스템 구성 속성(system configuration attributes)을 도면으로 예시하며, 이 속성이 이하 상세히 기술하는 바와 같이 일시 액세스 키를 생성하는 데 사용된다. 먼저, 제1도의 독립형 데이터 처리 시스템 및 제2도의 분산 데이터 처리 시스템을 기술한 후 제3도에 예시된 특정 시스템 구성 속성을 설명할 것이다.
제1도를 참조하면, 본 발명에 따라 프로그램될 수 있는 데이터 처리 시스템(10)이 예시되어 있다. 도면으로부터 알 수 있는 바와 같이, 데이터 처리 시스템(10)은 프로세서(12)를 포함하며, 이 프로세서는 본 도면에는 도시되지 않는 그래픽 프로세서, 메모리 장치 및 중앙 프로세서를 구비한다. 비디오 디스플레이(16)가 프로세서(12)에 접속되며, 이 디스플레이는 공지의 방법으로 컬러 혹은 흑백 모니터를 사용하여 구현될 수 있다. 또한 키보드(14)가 프로세서(12)에 접속된다. 키보드(14)는 바람직하게는 표준 컴퓨터 키보드이며, 이 키보드는 케이블을 통해 프로세서에 접속된다.
또한, 마우스(20)와 같은 그래픽 포인팅 장치(graphical pointing device)가 프로세서(12)에 접속된다. 마우스(20)는 공지의 방법으로 케이블을 통해 프로세서(12)에 접속된다. 도시된 바와 같이, 마우스(20)는 좌측 및 우측 버튼을 구비하며, 사용자가 이들 버튼을 누르거나 혹은 클릭(clicked)함으로써 커맨드 혹은 제어 신호(command or control signal)가 데이터 처리 시스템(10)에 제공된다. 비록 본 발명의 실시예에서는 마우스를 사용하였지만, 당업자라면 라이트 펜(light pen), 터치스크린(touch sensitive screen) 같은 또 다른 그래픽 포인팅 장치를 사용하여 본 발명의 실시예를 구현할 수도 있음을 쉽게 이해할 것이다. 또한, 당업자라면 데이터 처리 시스템(10)이 뉴욕 아몬크(Amonk, Newyork)에 소재한 IBM 사에 의해 제조된 모델 80 PS/2와 같은 이른바 퍼스널 컴퓨터를 사용하여 구현될 수도 있음을 쉽게 이해할 것이다.
본 발명은 독립형 데이터 처리 시스템을 사용하여 구현될 수도 있으나, 또한 분산 데이터 처리 시스템을 사용하여 구현될 수도 있으며, 이 경우 본 발명의 수입루틴(import routine) 및 수출 루틴(export routine)이 사용되어 분산 데이터 시스템 내에 존재하는 특정 데이터 처리 장치들사이에서 휴대용 메모리 매체(디스켓 혹은 테이프)를 통해 하나 혹은 그 이상의 암호화된 파일, 이들 파일의 암호화된 키 파일 및 연관된 파일 관리 프로그램(file management programs)을 전송한다. 본 발명의 수입 및 수출 루틴이 이하 상세히 기술되지만, 기본적 분산 데이터 시스템을 이해하는 것이 중요한다.
제3도는 다수의 데이터 처리 시스템 속성을 예시한 블럭도이며, 이 속성은 특정 데이터 처리 시스템(이 시스템은 독립형이건 분산 데이터 처리 시스템내의 노드(node)이건 상관없음)을 유일하게 식별하고, 또한 머신 ID 값을 발생시키는데 사용될 수 있으며, 이 머신 ID 값은 일시 액세스 제품 키(temporary access product key)를 발생시키거나 혹은 도출하는데 사용되고, 이 제품 키는 특정의 사전정의된 시험사용기간동안 암호화된 제품에 대한 액세스를 도출하는 데 사용될 수 있다. 데이터 처리 시스템은 특정 시스템 버스(60) 구조, 특정 메모리 제어기(74), 버스 제어기(76), 인터럽트 제어기(78), 키보드 마우스 제어기(80), DMA 제어기(66), VGA비디오 제어기(82), 병렬 제어기(84), 직렬 제어기(86), 디스켓 제어기(88) 및 디스크 제어기(82)를 포함한다. 부가적으로, 다수의 비어있거나 혹은 점유된 슬롯(106)이 특정 데이터 처리 시스템을 식별하는 데 사용될 수도 있다. 각각의 특정 데이터 처리 시스템은 RAM(70), ROM(68) 혹은 CMOS RAM(72)으로부터 도출된 속성을 보유할 수 있다. 프린터(96), 모니터(94), 마우스(92), 키보드(90), 디스켓(100) 혹은 디스크 드라이브(104)와 같은 단말 장치는 머신 ID 값을 얻기 위해 사전결정된 방식으로 처리될 수 있는 데이터 처리 시스템의 하나 혹은 그 이상의 속성을 도출하는데 사용될 수 있다. 머신 ID 값의 도출은 이하 상세히 기술된다. 본 발명은 사용자에게 소프트웨어 프로그램을 배포하는 효율적인 방법에 관한 것으로, 이 방법은 사용자가 프로그램을 구입하여 이 프로그램을 합법적으로 사용할 수 있는 권리를 가지기 전에 이 프로그램을 시험사용해 볼 수 있는 수단을 사용자에게 제공한다. 이 개념에 따르면, 완전한 프로그램이 디스켓 혹은 CD-ROM과 같은 컴퓨터 액세스 가능 메모리 매체(computer accessible memory media)에 의해 잠재적 사용자에게 배포된다. 이 개념은 사용자가 배포된 매체의 프로그램에 액세스할 수 있도록 허용하는 키를 발생하는 것이다. 이러한 환경에서, 파일 관리 프로그램은 사용자가 다양한 제품을 시험사용할 수 있게 허용하는 다수의 인터페이스를 제공한다. 이 인터페이스는 배포된 매체에 포함된 소프트웨어 제품의 주문(ordering) 및 잠금해제(unlocking)를 가능케한다. 소프트웨어 제품의 잠금해제는 일시 액세스(암호해독) 키의 수신, 검증 및 기록(reception, validation and recording)에 의해 달성된다.
파일 관리 프로그램은 사용자 제어 데이터 처리 시스템(user-controlled data processing system)내에 상주하여 사용자의 컴퓨터에서 운영 체제의 일부가 된다. 이러한 (PC 도스 환경내의)상주 프로그램의 예로 종료후 상주(terminate and stay resident) 동작을 위한 상주 프로그램 TSR이 있으며, 이 프로그램은 DOS 파일 입력 및 출력 동작을 인터셉트하고 처리한다. 일시 액세스 키가 사용자에게 제공되었을 때, 시스템 파일은 이전에 시험사용 동작 모드로 사용되었는지의 여부에 대해 점검된다. 제품이 시험사용 동작 모드로 사용되지 않았다면, 일시 키는 저장된다. 일단 시험사용 동작 키가 존재하면, 암호화된 애플리케이션은 파일 관리 프로그램에 의해 개시될 때만 실행될 수 있다. 파일 관리 프로그램은 애플리케이션이 암호화되고 특정 동작에 대한 유효 시험사용 동작 모드 키가 존재한다는 것을 인식할 것이다. 유효 시험사용 동작 모드 키는 기간 만료(expire)되지 않은 키이다. 유효 시험사용 동작 모드는 타이머 혹은 카운터에 의해 정의될 수 있다. 타이머가 사용되어, 특정 사전정의된 기간을 카운트 다운(count down)할 수 있으며, 이와 달리 카운터가 사용되어, 시험사용 모드 동작동안 허용된 사전정의된 시험사용 세션(session)의 수를 감소시킬 수 있다. 키가 유효하다면, 파일 관리 프로그램은 TSR과 직접적으로 통신하며, 특정 암호화된 애플리케이션에 대한 시험사용 모드 동작을 가능하게 한다. 그후, 파일 관리 프로그램은 암호화된 애플리케이션을 개시(kick off)한다. 사용자가 제어 데이터 처리 시스템의 운영 체제에 상주하는 코드는 운영 체제를 통한 제어를 유지한다. 이 코드는 시험사용 동작 모드의 사용을 감시하여 파일이 암호해독(decrypt)되어 메모리에 로딩(loading)되는 것을 허용한다. 그러나 암호화된 파일이 암호해독되어 매체에 복제되는 것은 방지된다. 이 동작은 운영 체제를 사용하여 어느 애플리케이션이 이 데이터를 액세스하려는지를 판정하고 이 데이터에 대한 액세스 권한이 있는 애플리케이션만이 데이터를 액세스하도록 허용함으로써 달성된다.
제4도는 소프트웨어 제품을 암호화하는 루틴을 예시한 블럭도이다. 소프트웨어 객체(201)를 구성하는 2진 문자는 암호화 엔진(205)에 입력으로서 제공된다. 실제 키(203)는 암호화 엔진(205)에서 암호화 키로 사용된다. 암호화 엔진(205)의 출력은 암호화된 소프트웨어 객체(207)이다. 암호화 엔진(205)은 공지의 DES 알고리즘과 같은 임의의 통상적인 암호화 동작일 수 있으며, 이와 달리, 소프트웨어 객체(205)를 랜덤화(randomize)하는 배타적-OR 동작(exclusive-OR operation)이 될 수도있다.
제5도는 본 발명의 기법에 따른 소스(209)(소프트웨어 업자)와 사용자(211)(잠재적 고객)사이의 정보 교환을 예시한 도면이다. 소스(209)와 사용자(211)사이의 화살표는 업자(209)와 고객(211) 사이의 객체 혹은 정보의 교환을 나타낸다. 화살표(213)에서, 컴퓨터 액세스가능 메모리 매체는 소스(209)로부터 사용자(211)로 직접 전달된다. 이 전달은 미국 우편 배달, 배달회사의 택배(courier delivery), 지급 배달(express service delivery) 혹은 책 및 잡지와 같은 인쇄물에 의한 배달의 형태일 수 있다. 이와 달리, 전자 우편(electronic mail) 혹은 기타 전송 기법을 사용하여 전자 서류(electronic documents)를 소스(209)로부터 사용자(211)에게로 전달할 수 있다. 화살표(215)에서, 바람직하게 사용자(211)의 데이터 처리 시스템을 식별하는 고유의 머신 ID를 포함하는 사용자 고유 정보(user-specific information)가 보안이 유지되지 않는 통신 채널을 통해 사용자(211)로부터 소스(209)로 전송된다. 전형적으로, 이 정보는 전화를 통해 교환되지만, 전자 우편 혹은 기타 통신 기법을 사용하여 교환될 수도 있다. 화살표(217)에서 소스(209)는 사용자(211)에 제품 키를 제공한다. 제품 키는 메모리 매체에 포함된 제품이 전술한 사전정의된 기간동안 일시적으로 액세스되도록 허용한다. 이 기간은 사용자(211)가 소프트웨어에 익숙해져서 소프트웨어 제품을 구입할 것인지의 여부를 결정하는 시험사용 기간으로 간주된다. 사용자(211)는 소프트웨어 제품에 대한 영구적인 액세스를 달성하기 위해서는 소스(209)와 더 통신하여야 한다. 제품 키는 사전정의된 특정한 기간동안 혹은 사전정의된 특정 수의 세션(sessions)동안 사용자(211)가 소프트웨어 객체에 대한 액세스를 수행할 수 있게 한다. 시간 경과에 따라 사용자의 클럭 혹은 카운터는 감소한다. 시험사용 기간이 종료됨에 따라, 더 이상의 액세스는 허용되지 않는다. 따라서, 사용자(211)는 소스(209)와 접촉하여, 소프트웨어 제품에 대한 자유로운 액세스를 허용하도록 제품을 영구적으로 잠금해제하는 영구 키를 구입하는 긍정적 조치(affirmative steps)를 취해야 한다.
소스(209)와 사용자(211)사이의 통신은 사용자 인터페이스에 의해 한결 용이하게 행하여진다. 인터페이스의 구축은 제6도의 흐름도로 예시된다. 이 프로세스는 블럭(219)에서 시작하여 블럭(221)으로 진행하며, 이 블럭(221)에서 소스(209)는, 소프트웨어 제품의 시험사용 기간 사용의 구현을 용이하게 하는 인터페이스에서 사용되는 언어와 통화(currencies)를 결정하는 언어 및 장소 선택(language and locate seletion)을 행한다. 다수의 소프트웨어 제품은 한 묶음이 되어, (즉, 번들로)단일 컴퓨터 엑세스가능 메모리 매체에 의해 사용자(211)에게 전송될 수 있다. 따라서, 블럭(223)에 따르면, 소스(209)는 컴퓨터 액세스가능 메모리 매체가 시험사용 될 프로그램인지에 대한 판정을 행하여야 하며, 블럭(223)에 따라 적절한 필드가 기입된다. 다음, 블럭(225)에 따라, 프로그램은 기능적으로 제한되거나 혹은 암호화된다.
그후, 블럭(227)에 따라, 셀이 컴퓨터 프로그램 제품과 함께 디스켓 혹은 CD-ROM과 같은 컴퓨터 액세스가능 메모리 매체상으로 로딩된다. 이 과정은 블럭(229)에서 종결된다.
제7도는 본 발명에 따른 업자와 고객사이의 대화의 흐름도를 예시하고 있다. 이 흐름도는 블럭(231)에서 시작하여 단계(233)로 진행되며, 단계(233)에서 컴퓨터 액세스가능 메모리 매체는 시험사용 및 구입(try-and-buy)의 시험사용 기간을 제공하기 위해 사용자에게 배포된다. 이후, 단계(235)에 따라, 파일 관리 프로그램은 컴퓨터 액세스가능 메모리 매체로부터 사용자 제어 데이터 처리 시스템상으로 로딩되어 실행된다. 파일 관리 프로그램은 다수의 인터페이스 스크린을 구비하며, 이 스크린은 업자와 사용자 사이의 대화를 용이하게 하고, 사용자에 의해 사용될 수 있는 옵션을 제시한다. 따라서, 단계(237)에 따르면, 파일 관리 프로그램은 브라우징을 가능케 하는 적절한 사용자 인터페이스를 디스플레이한다. 다음, 단계(239)에 따라, 고객과 업자는 전형적으로 전자 우편을 통해 대화하여, 업자는 고객에 대한 정보를 수집하게 되고 사전정의된 시험사용 기간동안 컴퓨터 액세스가능 메모리 매체상에 포함된 하나 혹은 그 이상의 소프트웨어 제품에 대한 액세스를 허용하는 일시키를 배포하게 된다. 전형적으로, 이 시험사용 기간은 내부 클럭 혹은 카운터에 의해 정의되며, 이 카운터는 특정 소프트웨어 제품에 대해 잠재적 사용자에게 부여된 세션 수를 추적한다. 단계(241)는 시험사용 기간 사용을 허용함을 나타낸다. 이후, 블럭(243)에 따라, 파일 관리 프로그램은 데이트 차리 시스템내의 모든 입/출력 호출(input and output calls)을 관찰하고 감시하여 컴퓨터 액세스가능 메모리 매체상에 포함된 암호화된 소프트웨어 제품의 불법적인 사용을 차단한다. 본 발명의 바람직한 실시예에서, 파일 관리 프로그램은 암호화된 파일에 대한 호출을 감시하여, 이 파일이 후속 단계로 전달되기 전에 액세스가 허용되는지 혹은 거부(deny)되는지를 판정한다. 고객은 소프트웨어 제품을 액세스할 수 있으며, 따라서 자신이 이 제품을 구입할 것인지의 여부를 판단할 수 있다. 제품을 구입하기로 결정하면, 단계(245)에 개시된 것처럼 고객은 업자와 한번 더 대화하여 업자는 고객에게 영구 키를 전송한다. 고객이 영구 키를 수신했을 때 이 프로세서는 종결되며, 사용자가 구입한 하나 혹은 그 이상의 소프트웨어 제품이 암호해독되어 이후 사용자는 구입한 소프트웨어 제품에 대해 자유로이 액세스 할 수 있게 된다.
제8도, 제9도, 제10a도 및 제10b도는 사용자 인터페이스 스크린을 예시하며, 이 스크린은 본 발명에 따른 시험사용 기간 동작을 용이하게 한다. 제8도는 주문 형식 사용자 인터페이스 스크린(249)를 예시하며, 이 인터페이스 스크린은 고객이 또 다른 윈도우에서 주문 보기(view order)를 선택했을 때 디스플레이된다. 주문 형식 사용자 인터페이스 스크린(249)은 타이틀 바(title bar)(251)를 구비하며, 이 바는 소프트웨어 업자를 식별하고, 업자의 전화번호를 제공함으로써 잠재적 사용자와 업자 사이의 대화를 용이하게 한다. 주문 형식 필드(255)가 제공되어 시험사용 동작 기간동안 검사될 수 있는 하나 혹은 그 이상의 소프트웨어 제품을 식별한다. 수량 서브필드(quantity subfield)(259), 아이템 서브필드(item subfield)(257), 서술 서브필드(description subfield)(260) 및 가격 서브필드(price subfield)(253)를 포함하는 다수의 서브필드가 제공된다. 삭제 버튼(delete button)(261)은 잠재적 사용자가 주문 형식 필드로부터 아이템을 삭제할 수 있게 하는 버튼이다. 부합계 필드(subtotal field)(263)는 주문된 소프트웨어에 대한 가격의 부합계를 제공한다. 지불 방법 아이콘(payment method icon)(265)은 허용가능한 지불 형식을 식별한다. 물론 잠재적 사용자는 전화번호를 사용하여 업자와 직접적으로 접촉하여 하나 혹은 그 이상의 소프트웨어를 구입할 수도 있으며, 또한 이와 달리, 사용자는 소프트웨어 제품이 구입하기에 적당한지를 결정하기 위해 시험사용동작 모드동안 하나 혹은 그 이상의 소프트웨어 제품을 시험사용할 수 있다. 다수의 기능 아이콘(267)은 주문 형식 인터페이스 스크린(249)의 최하단부에 제공된다. 이들 아이콘은 폐쇄 아이콘(close icon), 팩스 아이콘(fax icon), 우편 아이콘(mail icon), 인쇄 아이콘(print icon), 잠금해제 아이콘(unlock icon) 및 도움말 아이콘(help icon)을 포함한다. 사용자는 그래픽 포인팅 장치의 통상적인 포인팅 및 클릭 동작을 사용하여 하나 혹은 그 이상의 동작을 선택할 수 있다. 팩스 아이콘은 팩시밀리머신 혹은 팩시밀리 보드를 사용하여 업자와의 대화를 용이하게 한다. 인쇄 아이콘은 사용자가 소프트웨어 업자와 대화한 기록을 복제하여 종이에 기록한다.
고객, 컴퓨터 엑세스가능 메모리 매체 및 고객이 사용하는 컴퓨터 시스템은 고객 ID(273), 매체 ID(269) 및 머신 ID(271)에 의해 식별된다. 매체 ID는 잠재적 사용자에게 전달되기 전에 컴퓨터 액세스가능 메모리에 배당된다. 이 ID는 고정되며, 변하지 않는다. 고객 ID(273)는 잠재적 사용자와 업자 사이의 대화로부터 도출된다. 바람직하게, 고객은 전화 대화에서 질문에 대해 응답하고, 업자는 고객 ID(273)를 제공하며, 이 ID는 특정 고객에 대해 유일하다. 머신 ID(271)는 컴퓨터 액세스가능 메모리 매체상에 상주하는 파일 관리 프로그램을 사용하여 자동적으로 도출되며, 이 ID는 잠재적 고객이 사용하는 특정 데이터 처리 시스템에 대해 유일하다. 잠재적 고객은 전형적으로 전화에 의한 대화를 통해 업자에게 머신 ID를 제공할 것이며, 팩스 대화 혹은 정규적인 우편 대화를 통해서도 이 ID를 제공할 수 있다.
제9도는 주문 형식 다이알로그 인터페이스 스크린(275)을 나타낸다. 이 인터페이스 스크린은 잠재적 고객을 유일하게 식별하는 정보의 도출을 용이하게 하며, 명칭 필드(name field)(277), 주소 필드(address fild)(279), 전화번호 필드(281) 팩시밀리 번호 필드(283), 지불 방법 필드(285), 배달 방법 필드(shipping method field)(287), 계좌 번호 필드(account number field)(289), 만료 일자 필드(expiration data field), 부가세 ID 필드(value added tax ID field)(293)를 포함한다. 주문 형식 다이알로그 인터페이스 스크린(275)은 또한 인쇄 버튼(295) 및 취소 버튼(279)을 포함하며, 이들 버튼은 잠재적 사용자가 이들 필드로부터 정보를 삭제하거나 혹은 인터페이스 스크린을 종이에 기록하여 출력하도록 한다.
제10a도 및 제10b도는 잠금해제 다이알로그 인터페이스 스크린(301, 303)을 예시한다. 사용자는 그래픽 포인팅 장치를 사용하여, 잠금해제 리스트(305)의 구성요소인 내용 아이템 번호 필드(307) 및 서슬 필드(309)에 의해 식별된 하나 혹은 그 이상의 아이템을 선택한다. 인터페이스 스크린은 또한 고객 ID 필드(313) 및 머신 ID 필드(315)를 포함한다. 바람직하게, 업자는 전화, 팩스 혹은 우편으로 고객에게 고객 ID를 제공한다. 바람직하게, 고객은 전화, 팩스 혹은 우편을 통해 머신 ID 필드(315)내의 머신 ID를 업자에게 제공한다. 일단 이 정보가 시험사용 동작 기간동안 요구되는 제품의 ID와 함께 교환되면, 키 필드(311)에 위치한 일시 액세스 키가 제공된다. 이 키는 일시적으로 고객에 의해 식별되어 선택된 소프트웨어 제품을 잠금해제할 것이다. 폐쇄 버튼(319), 저장 버튼(save button)(317) 및 도움말 버튼(321)이 또한 이 인터페이스 스크린내에 제공되어 사용자 대화를 용이하게 한다.
제10b도는 단일 제품 잠금해제 인터페이스 스크린(303)을 예시한다. 이 인터페이스 스크린은 머신 ID 필드(313), 고객 ID 필드(315), 및 키 필드(311)를 포함한다. 잠금해제된 제품은 이 인터페이스 스크린에서 식별될 필요는 없다. 왜냐하면, 대화는 단지 단일 제품에만 관계하며, 사용자는 일시 시험사용 기간 동작이 요구되는 제품을 알고 있다고 가정하기 때문이다. 저장 버튼(317), 취소 버튼(319) 및 도움 버튼(321)이 또한 이 인터페이스에 제공되어 사용자의 대화를 용이하게 한다.
제11도는 시험사용 기간 동작 모드를 개시하기 위해 하나 혹은 그 이상의 암호화된 제품을 잡금해제하는데 사용되는 사용자 인터페이스 스크린을 도시하고 있다. 제11도의 개시 일자(날짜) 다이알로그는 제10a도 혹은 제10b도의 잠금 해제 다이알로그에서 SAVE 버튼이 선택된 후 디스플레이된다. 사용자는 데이터 필드(310)에 제공된 날짜를 확인하도록 요청받는다. 사용자는 계속 버튼(continue button)(312), 취소 버튼(cancel button)(314) 혹은 도움말(Help) 버튼(316)을 포인팅 하거나 클릭함으로써 디스플레이되는 질문에 응답할 수 있다. 필드(310)에 디스플레이되는 날짜는 사용자 제어 데이터 처리 시스템의 시스템 클럭으로부터 도출된다. 사용자는 시스템 클럭을 변경하여 시험사용 기간 동작 시작 날짜나 혹은 표준날짜에 상응하도록 조정할 수 있다.
시험사용 기간 동작은 두가지 형식을 취할 수 있다. 제 1 형식은 사용자가 모든 특징(feature)을 시험사용하는 것을 허용하지만, 데이터 파일의 프린팅 혹은 저장같은 주요 동작을 허용하지 않는 기능적으로 제한(functionally disable)된 제품 유형이며, 제 2 형식은 한정된 시간동안 사용할 수 있는 전 기능(fully functional) 제품이다. 이는 액세스 보호를 필요로 하며, 고객이 무료로 혹은 명목상의 비용만 지불하고 제품의 모든 기능을 시험사용하는 것을 허용한다. 전형적으로, 본 발명에 따르면, 제품에 대한 액세스는 타임(timed) 키에 의해 제어된다. 제품을 사용하는 시험사용 기간은 업자에 의해 정의된다. 시험사용 기간은 키가 송출(issue)되었을 때 시작한다. 본 발명에 따르면, 시험사용 동작 기간동안 사전검토되는 제품은 단지 고객 셀(customer shell)내에서만 실행될 수 있다. 암호해독 드라이버(decryption driver)는 암호화 제품이 복제되는 것을 방지하며, 고객의 셀 외부에서 제품이 동작하는 것을 방지한다. 또 다른 실시예에서, 시험사용 기간은 카운터에 의해 정의되며, 이 카운터는 제품에 대해 고객에게 부여되는 각각의 세션마다 증가하거나 혹은 감소한다. 이는 일시 키에 의해 암호해독이 더 이상 허용되지 않게 되어 고객이 사전정의된 횟수만큼 제품을 사용할 수 있게 한다.
일시 액세스 키의 제한은 키의 제어 벡터내에 설정된다. 전형적으로, 제어 벡터는 키에 대한 간단한 서술, 머신 ID 및 (클럭 값 혹은 카운터 값과 같은)시험사용 기간 데이터를 포함하는 포맷된 텍스트 스트링(formatted text string)을 포함한다. 제어 벡터를 변경하면 키가 파손된다. 보호된 소프트웨어 제품이 실행 될 경우, 사용 데이터(usage data)는 시험사용 동작 기간을 제한하기 위해 갱신되어야 한다. 클럭 혹은 카운터의 변경을 방지하기 위해, 이들 값은 전형적으로 암호화된 파일내의 다수의 위치에 기록된다. 본 발명의 바람직한 실시예에 따르면, 시험사용 기간 정보(클럭 값 및/혹은 카운터 값)는 키 파일 및 머신 ID 파일에 복제 되며, 이 키 파일은 이하 상세히 기술된다. 암호화된 프로그램에 대한 액세스가 요구될 때, 클럭 및/혹은 카운터의 값이 동일한지를 판정하기 위해 이들 모두의 위치가 점검된다. 일반적인 사용자는 3개의 파일 모두를 성공적으로 변경시킬 만큼의 능력은 없을 것이다. 바람직한 실시예에서는, 클럭과 카운터의 조합이 사용되어 시스템 클럭을 리셋하기 위한 백업 및 복원 동작(back up and restore operation)의 확대 사용을 방지한다. 시험 사용이 요구될 때 마다 PC의 클럭을 리셋하는 것은 가능하지만, 이는 시스템상의 조정 파일들의 날짜/시간 스템프를 추적하고 파일 날짜/시간 스펨프와 시스템 클럭중에서 가장 최근의 날짜를 사용함으로써 감지될 수있다. 전술한 바와 같이, 타이머 및/혹은 카운터 정보가 저장되는 3 위치중의 하나는 시스템 파일이다. OS/2 운영 체제하에서 동작할 때, 시간 및 사용 데이터는 OS/2 운영 시스템내의 OS2.INI와 같은 시스템 데이터 파일내에 저장될 수 있다. 시험 및 사용 데이터를 리셋하려면 사용자는 이들 파일을 지속적으로 백업하고 복원하여야 한다. 이들 파일은 사용자 시스템의 동작에 중요한 다른 데이터도 포함하고 있다. 부주의한 사용자는 종종 이들 파일을 구 버전(older version)으로 복원함으로써 다른 응용에 대한 중요한 데이터를 상실할 수도 있다. 본 발명에 있어서, 이들 보호 기법은 시험사용 기간의 사용을 정해진 기간을 초과하여 연장시키려는 사용자의 불순한 의도를 차단할 수 있다.
넓게 보면, 본 발명에 있어서, 업자는 다수의 암호화된 소프트웨어 제품을 CD-ROM 혹은 자기 매체 디스켓과 같은 컴퓨터 액세스가능 메모리 매체상으로 로딩한다. 또한, 파일 관리 프로그램이 컴퓨터 액세스가능 메모리상으로 로딩되며, 이 프로그램은 업자와 고객사이의 대화를 용이하게 하는 다수의 사용자 인터페이스 스크린을 제공하는 기능을 포함하는 다수의 기능을 수행한다. 컴퓨터 액세스가능 메모리 매체는 사용자 제어 데이터 처리 시스템상으로 로딩되고, 파일 관리 프로그램이 로딩되어 실행된다. 파일 관리 프로그램은 고객에게 다수의 사용자 인터페이스 스크린을 제공하며, 고객에 대한 정보(성명, 주소, 전화번호 및 요금 정보)를 수집하고, 소프트웨어 제품에 대해 시험사용 기간을 필요로 하는 고객의 선택을 수신한다. 고객 ID, 제품 ID, 매체 ID 및 머신 ID와 같은 정보가 업자와 고객사이에서 교환된다. 업자는 자신의 내부 기록에 따라 고객 ID를 발생시킨다. 바람직하게, 소프트웨어 업자는 소프트웨어 고객으로부터 정보를 수집하고 이 정보를 설정된 공간에 타이핑하여 잠재적 소프트웨어 고객을 식별한다. 이와 달리, 소프트웨어 업자는 완성된 주문 정보 다이알로그 인터페이스 스크린(275)의 팩시밀리 혹은 우편전송을 수신할 수 있다(제9도), (CD 및 디스켓과 같이)배포되는 메모리 매체는 또한, 파일 관리 프로그램을 포함하며, 이 프로그램은 사용자 제어 데이터 처리 시스템의 하나의 속성에 적어도 부분적으로 의존하는 고유의 머신 ID를 발생시킨다. 이 머신 ID는 바람직하게 한번의 셋업 프로세스동안 생성되는 임의의 8 비트 수이다. 바람직하게, 8개의 임의의 비트는 난수 발생기(random number generator)의 시드(Seed)로서 시스템 시간을 사용하여 기본 난수 발생기로부터 발생된다. 바람직하게, 점검 비트(check bits)가 최종 결과에 추가된다. 주문 시스템에 대해서 이들 점검 비트는 중요한다. 그 이유는 주문을 받은 사람은 고객이 전화상으로 불러준 머신 ID를 키로서 입력하여야 하기 때문이다. 이 점검 비트를 사용하면 고객에게 이 번호를 반복하도록 요구하지 않고서도 머신 ID를 즉시 검증할 수 있다. 바람직하게, 마스터 파일이 사용자 제어 데이터 처리 시스템상에 유지되며, 이 마스터 파일은 머신 ID의 순수 텍스트(clear text) 및 머신 ID의 암호화된 버전을 보유한다.
소프트웨어 고객이 소프트웨어 제품의 일시 시험 사용을 주문할 때, 고객은 전화를 통해 구두로 소프트웨어 업자에게 머신 ID를 전달한다. 이에 응답하여, 업자는 소프트웨어 고객에게 컴퓨터 액세스가능 메모리 매체 상의 암호화된 소프트웨어 제품에 대해 일시 액세스 키로 동작하는 제품 키 및 고객 ID를 전달한다. 바람직하게, 제품 키는 머신 ID, 고객 번호, 주문된 프로그램 혹은 프로그램들에 대한 실제 암호화 키 및 제어 데이터 블럭의 함수이다. 소프트웨어 고객은 제품 키를 고객 번호 및 제어 데이터 식별 블럭과 조합하여 실제 암호화 키를 발생시킴으로써 제품 키를 검증할 수 있다. 이 키는 그후 암호화된 검증 세그먼트를 암호해독하여 비교하는데 사용된다. 암호화된 검증 세그먼트가 알려진 검증 세그먼트의 순수 텍스트와 동일하다면, 사용자 파일 관리 프로그램은 제품 키가 양호한 키이고 소프트웨어 제품에 대한 일시적 액세스를 위해 사용될 수 있다고 판정한다. 따라서, 전술한 비교에서 키들이 일치한다면, 키는 사용자 제어 데이터 처리 시스템상에서 키화일내에 저장된다. 바람직하게, 키 파일은 제품 키, 고객 키(이는 고객 ID 및 내부의 키 발생 키로부터 발생됨) 및 머신 ID를 포함하는 순수 ASCⅡ 스트링을 포함한다. 암호해독 수단이 실제 암호화 키를 도출하기 위해서는 이들 3 개의 아이템 모두가 변하지 않아야 한다. 키 파일을 특정 사용자 제어 데이터 처리 시스템에 공고히 결합시키기 위해, 동일한 키 파일이 시스템 파라미터로부터 도출된 키에 의해 암호화된다. 이들 시스템 파라미터는 데이터 처리 시스템의 구성으로부터 도출될 수 있다.
넓게 말하면, 본 발명에 있어서 (전형적으로 전화를 통해 구두로 전달되는)일시 키는 실제 키를 고객 번호, 머신 ID 및 다른 사전정의된 순수 텍스트와 조합하는 암호화를 사용하는 알고리즘으로부터 생성된다. 따라서, 이 키는 단일 머신에 대해서만 효과가 있다. 이 키가 다른 사용자에게 주어지더라도, 이 사용자의 머신 프로그램을 잠금해제시키지는 못할 것이다. 이에 따라, 소프트웨어 업자가 완성된 프로그램을 디스켓 혹은 CD-ROM 과 같은 컴퓨터 액세스가능 메모리 매체로 배포함으로써, 지적 재산권의 침해로 인한 경제적 손실없이, 소프트웨어 제품을 시장에 공급할 수 있다.
암호화 동작에 사용될 수 있는 시스템의 몇몇 바람직한 고유 속성은 하드 디스크 일련번호, 하드 디스크의 크기 및 포맷 시스템 모델 번호, 하드웨어 인터페이스 카드, 하드웨어 일련 번호 및 다른 구성 파라미터를 포함한다. 이 기법의 결과는 머신 ID 파일이 사용자 제어 데이터 처리 시스템의 동일한 복제품(clone)인 시스템상에서만 암호해독될 수 있다는 것이다. 이 복제 시스템은 매우 구하기 어려운데, 왜냐하면, 대부분의 데이터 처리 시스템은 상이한 구성을 가지며 상당한 노력이 없이는 일치시키기 힘들기 때문이다. 이들 특징은 이하 상세히 기술된다. 제12도를 참조하면, 파일 관리 프로그램은 암호화된 소프트웨어 제품 및 파일 관리 프로그램을 구비한 배포된 컴퓨터 액세스가능 메모리 매체를 수신한다. 파일 관리 프로그램은 제12도의 단계(351)에 표시된 바와 같이 사용자 제어 데이터 처리 시스템의 구성을 액세스한다. 데이터 처리 시스템의 사용자 고유 속성은 단계(353)에서 도출되며, 머신 ID 발생기(355)에 입력으로 제공된다. 이 발생기는 바람직하게 난수 발생기이며 다수의 이진 문자를 입력으로써 수신하고 머신 ID(357)를 나타내는 의사 임의 출력(pseudo-random output)을 발생시킨다. 머신 ID 발생기(355)는 임의의 통상적인 의사 난수 발생기이며, 이 발생기는 이진 문자를 입력으로 수신하고 사전정의된 알고리즘에 따라 다수의 의사 임의 이진 문자를 출력으로서 발생시킨다.
제13도를 참조하면, 머신 ID(357)는 또한 파일 관리 프로그램내에 암호화된 형태로 보존된다. 머신 ID(357)는 암호화 엔진(359)에 입력으로 제공되며, 이 엔진은 암호화된 머신 ID(351)를 출력으로서 발생시킨다. 암호화 엔진(359)는 DES 알고리즘과 같은 임의의 통상적인 암호화 루틴을 포함할 수 있다. 키(363)는 암호화 엔진(359)에 입력으로 제공되며, 통상적인 방식으로 암호화 동작에 영향을 미친다. 키(363)는 시스템 속성 선택기(365)로부터 도출된다. 선택될 수 있는 시스템 속성의 유형은 시스템 속성 디렉토리(367)에 도시되며, 이 디렉토리는 하드 디스크 일련번호, 하드 디스크 크기, 하드 디스크 유형, 시스템 모델 번호, 하드웨어 인터페이스 카드, 하드웨어 일련 번호 혹은 다른 구성 파라미터를 포함한다.
본 발명에 따르면, 순수 텍스트 머신 ID(357) 및 암호화된 머신 ID(361)는 메모리에 보존된다. 또한, 본 발명에 따르면, 파일 관리 프로그램은 자동적으로 순수 텍스트 ID(357)를 적절한 사용자 인터페이스 스크린에 나타낸다. 사용자는 그후 소프트웨어 업자에게 머신 ID를 전송하고, 이 ID는 제14도의 블럭도에 따라 사용된다. 도시된 바와 같이, 제품 키 암호화 엔진(375)은 소프트웨어 업자의 제어하에 유지된다. 이 제품 키 암호화 엔진(375)은, 머신 ID(357), (소프트웨어 업자의 내부 기록 보관에 따라 고객에게 할당된) 고객 번호(369), (소프트웨어 고객이 관리하는 컴퓨터 액세스가능 메모리 매체상에 보관된 소프트웨어 제품을 암호해독하는데 사용되는) 실제 암호화 키(371), (임의의 사전정의된 텍스트 부분일 수 있는) 제어 블럭 텍스트(373), (시험사용 기간을 정의하는 클럭 및/혹은 카운터 값과 같은) 시험사용 기간 데이터(374)를 입력으로서 수신한다. 제품 키 암호화 엔진은 출력으로서 제품 키(377)를 발생시킨다. 제품 키(377)는 실제 키(371)를 드러낼 위험없이 보안유지되지 않는 통신 채널을 거쳐 소프트웨어 고객에게 전달될 수 있다. 실제 키(371)는 암호화 동작에 의해 마스크(mask)될 수 있으며, 제품 키(377)는 머신 ID(357)가 도출된 구성과 동일한 구성을 갖는 데이터 처리 시스템상에서 사용될 수 있으므로, 암호화된 소프트웨어 제품에 대한 액세스가 안전하게 유지될 수 있다.
제품 키(377)의 전송시에, 사용자 제어 데이터 처리시스템에 상주하는 파일 관리 프로그램은 실제 키 발생기(379)를 이용하여, 제품 키(377), 고객 번호(369), 제어 블럭 텍스트(373), 머신 ID(357) 및 시험사용 기간 데이터(374)를 포함하는 다수의 입력을 수신한다. 실제 키 발생기(379)는 도출된 실제 키(381)를 출력으로 발생시킨다.
제품 키 암호화 엔진(375) 및 실제 키 발생기(379)의 동작을 수행하는 암호화 및 암호해독 알고리즘(제14도 및 제15도)은 1992 년 10월 21일 출원되어 계류중인 Method and System for Multimedia Access Control Enablement 라는 명칭의 미국 특허 출원 번호 제 07/964,324 호에 개시되어 있으며, 본 명세서에서는 이를 참조로서 인용한다.
다음, 제16 및 17도에 도시된 바와 같이, 도출된 실제 키(381)는 소프트웨어 업자가 제공한 제품 키(377)의 유효성(validity) 및 정당성(authenticity)을 판정하기 위해 테스트된다. 도시된 바와 같이, 도출된 제품 키(381)는 암호와 엔진(385)에 입력으로 제공된다. 사전결정된 암호화 검증 데이터 세그먼트(385)는 암호화 엔진(385)에 다른 입력으로 제공된다. 암호화 엔진은 도출된 순수 검증 텍스트(387)를 출력으로 제공한다. 그후, 제17도에 따르면, 도출된 순수 검증 텍스트(387)는 비교기(389)에서 알려진 순수 검증 텍스트(391)와 비교된다. 비교기(389)는 알려진 순수 검증 텍스트(391)와 도출된 순수 검증 텍스트(387)를 단순히 비트단위로 비교한다. 도출된 순수 검증 텍스트(387)가 알려진 검증 텍스트(391)와 일치한다면, 키 파일이 단계(393)에서 생성된다. 그러나, 일치하지 않는다면, 단계(395)에서 사용자 제어 데이터 처리 시스템상에 경고(warning)가 나타난다
제18도를 참조하면, 키 파일(397)은 일시 제품 키, (고객 번호의 암호화 버전인)고객 키, 순수 텍스트에서의 순수 머신 ID 및 (클럭 및/혹은 카운터 값과 같은) 시험사용 기간 데이터를 포함하는 것으로 도시되어 있다. 이 키 파일은 암호화 엔진(399)에 입력으로 제공된다. 키(401)는 또한 암호화 엔진(399)에 입력으로 제공된다. 키(401)는 머신 ID를 도출하는데 사용되는 시스템 속성과 같은 고유의 시스템 속성(403)으로부터 도출된다. 암호화 엔진(399)은 암호화된 키 파일(405)을 출력으로서 제공한다.
제19,20,21,22 및 23도는 일시 액세스 키가 수신되어 검증되고, 키 파일(397)(제18도)에 기록된 후의 파일 관리 프로그램의 동작을 도시한다.
제19도는 암호화된 소프트웨어 제품이 사용자 제어 데이터 처리 시스템에 의해 처리될 때 수행되는 단계를 나타내는 블럭도이다. 암호화된 파일(405)은 인출되어, 사용자 제어 데이터 처리 시스템에 의해 헤더(header) 부분이 판독된다. 헤더는 키 파일의 위치를 포함하는 다수의 구성요소를 구비한다. 키 파일의 위치는 단계(409)에 따라 키 파일을 인출하기 위해 사용된다. 헤더는 또한 암호화된 검증 텍스트(411)를 포함한다. 암호화된 검증 텍스트(411)는 또한 사용자 제어 데이터 처리 시스템에 의해 판독된다. 전술한 바와 같이 (그리고 제18도에 도시된 바와 같이), 키 파일은 제품 키(419), 고객 키(417) 및 머신 ID(415)를 포함한다. 이들은 암호해독 엔진(413)에 입력으로서 제공된다. 암호해독 엔진(413)은 실제 키(421)를 출력으로서 제공한다. 실제 키(421)가 배포된 메모리 매체상의 암호화된 소프트웨어 제품을 암호해독하는데 사용되기 전에, 유효성이 먼저 테스트된다. 제21도는 검증 테스팅의 블럭도이다. 헤더에 포함된 암호화된 검증 텍스트(423)는 암호해독 엔진(425)에 입력으로서 제공된다. (제20도의 동작에서 도출된)실제 키(421)가 또한 암호해독 엔진(425)에 입력으로서 제공된다. 암호해독 엔진(425)은 (도출된) 순수 검증 텍스트(427)를 출력으로서 제공한다. 제22도의 블럭도로 도시된 바와 같이, (도출된) 순수 검증 텍스트(427)는 비교기(429)에 입력으로서 제공된다. 알려진 순수 검증 텍스트(431)가 비교기(429)에 입력으로서 제공된다. 알려진 순수 검증 텍스트(431)가 또한 비교기(429)에 입력으로서 제공된다. 비교기(429)는 도출된 검증 텍스트(427)가 알려진 순수 검증 텍스트(431)와 일치하는 지의 여부를 판정한다. 이들 텍스트가 일치하면, 소프트웨어 객체는 단계(433)에 따라 암호해독된다. 그러나, 일치하지 않는다면, 단계(435)에서 경고가 나타날 것이다. 제23도는 제22도의 단계(433)의 암호해독 동작을 예시한 블럭도이다. 암호화된 소프트웨어 객체(437)는 암호해독 엔진(439)에 입력으로서 제공된다. 검증된 실제 키(441)도 또한 암호해독 엔진(439)에 입력으로서 제공된다. 암호해독 엔진(439)은 암호해독된 소프트웨어 객체를 출력으로서 제공한다.
암호화 헤더는 파일이 순수 텍스트 파일과 함게 저장될 때 파일이 암호화되어 있는지의 여부를 판정하기 위해 제공된다. 암호화된 파일을 위한 암호화 헤더를 제공함에 있어서, 파일 크기가 변화되지 않는 것이 중요하다. 왜냐하면, 이 크기는 설치(installation)동안 (본 발명의 개념과는 관계없는) 검증 단계의 일부로서 점검되기 때문이다. 따라서, 파일을 예정된 것보다 크게 만드는 것은 소프트웨어의 설치동안 동작상의 어려움을 야기할 수가 있다. 파일이 암호화되었다는 사실을 반영하기 위해 암호화 소프트웨어 제품과 연관된 파일 명칭이 변경될 수 없으므로 암호화 헤더는 또한 필요하다. 왜냐하면, 암호화된 제품을 액세스하는 다른 애플리케이션은 원래의 파일 명칭을 사용하여 그들 파일을 액세스할 것이기 때문이다. 따라서, 파일이 암호화되었음을 나타내기 위해 파일 명칭을 변경하는 것은 암호화된 소프트웨어 제품과 다른 연관된 소프트웨어 제품 사이의 유익하고 또한 필요한 통신을 저해할 것이다. 예를 들면, 스프레드시트 애플리케이션(spreadsheet applications)은 통상 스프레드시트의 부분을 연관된 워드 처리 프로그램으로 이식(port)하여 재정 정보(financial information)를 인쇄된 서류에 포함시킬 수 있다. 워드 처리 시스템의 하드 코딩(hard coding)된 원 파일 명칭을 변경화는 것은 이들 소프트웨어 제품 사이의 원활한 통신을 저해할 수 있다. 본 발명의 암호화 헤드는 암호화된 파일을 정규 파일 길이로 보존하고, 소프트웨어 제품에 대한 파일 명칭을 변경되지 않은 형태로 보존함으로써 이들 문제점을 해결한다.
제24도는 암호화 헤더(451)를 구비한 암호화된 파일을 도식적으로 예시하고 있다. 암호화 헤더(451)는 고유 식별자 부분(453), 키 파일 부분의 명칭, 암호화된 검증 세그먼트(457), 암호화 유형 세그먼트(459), 사이드 파일의 오프셋(offset to side file)(461) 및 암호화된 파일 데이터(463)를 구비한 다수의 코드 세그먼트를 포함한다. 물론, 이러한 관점에서, 암호화된 파일 데이터(463)는 워드 처리 프로그램 혹은 스프레드시트와 같은 암호화된 소프트웨어 제품을 나타낸다. 암호화 헤더(451)는 통상 암호화된 소프트웨어 제품의 일부를 구성하는 암호화된 데이터를 대신하여 제공된다. 암호화 헤더는 암호화된 소프트웨어 제품의 제 1 부분을 대신하여 대체(substitate)된다. 암호화된 파일 데이터(463)의 암호화된 소프트웨어의 선두부분에 암호화 헤더(451)를 위치시키기 위해, 암호화된 파일 데이터의 일 부분은 다른 위치로 복제되어야 한다. 사이드 파일의 오프셋(461)은 대체된 파일 데이터가 포함된 사이드 파일의 위치를 식별한다.
제25도는 암호화된 파일 및 사이드 파일의 디렉토리(directory)사이의 관계를 예시하고 있다. 도시된 바와 같이, 암호화된 파일(465)의 디렉토리는 파일 aaa, 파일 bbb, 파일 ccc, 파일 ddd에서 파일 nnn 까지를 포함한다. 이들 각각의 파일은 특정 암호화된 소프트웨어 제품에 대한 디렉토리 명칭을 나타낸다. 각각의 암호화된 소프트웨어 제품은 파일의 크기 및 화일 명칭을 변경시키지 않고 암호화된 헤더(451)를 수용하기 위해 대체된 파일의 선두 부분을 포함하는 사이드 파일과 연관된다. 파일 aaa는 사이드 파일 AAA와 연관된다. 소프트웨어 제품 파일 bbb는 사이드 파일 BBB와 연관된다. 암호화된 소프트웨어 제품 ccc는 사이드 파일 CCC와 연관된다. 암호화된 소프트웨어 제품 ddd는 사이드 파일 DDD와 연관된다. 암호화된 소프트웨어 제품 nnn은 사이드 파일 NNN과 연관된다. 제25도에서, 디렉토리 명칭(467, 469, 471, 473 및 475)은 사이드 파일(477, 479, 481, 483 및 485)과 연관되는 것으로 도시된다. 사이드 화일의 목적은 화일 크기를 변경하지 않고 암호화 헤드로 각각의 암호화된 소프트웨어 제품을 태그(tag)시키는데 있다.
암호화 헤더(451)의 암호화 유형 세그먼트(459)는 암호화 유형을 식별하여 암호화된 소프트웨어 제품을 암호화하는데 사용된다. 암호화된 소프트웨어 제품을 암호화하는데 다수의 통상적인 암호화 기법중의 임의의 기법이 사용될 수 있으며, 동일한 메모리 매체상에 포함된 상이한 소프트웨어 제품을 암호화하는데 상이한 암호화 유형이 사용될 수도 있다. 암호화 유형 세그먼트(459)는, 일시 액세스 키가 유효하고 기간 만료되지 않았다면 적절한 암호화/암호해독 루틴을 호출하여 암호화된 소프트웨어 제품을 암호해독시킨다. 암호화 헤더(451)의 키 파일 세그먼트(455)의 명칭은 키 파일의 어드레스(전형적으로 디스크 드라이브 위치)를 제공한다. (제18도와 관련하여) 전술한 바와 같이, 키 파일은 제품 키, 고객 키 및 순수 머신 ID를 포함한다. (제20도에 따라) 실제 키를 발생하는데 이들 3개의 정보가 모두 필요하다. 암호화된 검증 세그먼트(457)는 제21도에 도시된 루틴에서 사용되는 암호화된 검증 텍스트를 포함한다. 이 루틴은 도출된 순수 검증 텍스트를 발생시키며, 이 도출된 순수 검증 텍스트는 제22도의 루틴을 사용하여 알려진 순수 검증 텍스트와 비교된다. 도출된 순수 검증 텍스트가 알려진 순수 검증 텍스트와 정확히 일치하는 경우에만 도출되고 검증된 실제 키를 사용하여 제23도의 루틴에 따라 암호화된 소프트웨어 제품을 암호해독하는 프로세스가 계속될 수 있다. 그러나, 제23도의 암호해독 동작을 수행하기에 앞서, 대응하는 사이드 파일의 내용이 암호화헤더(451)를 대신하여 암호화된 소프트웨어 제품으로 다시 대체되어야 한다. 이러한 동작은 암호화된 소프트웨어 제품이 암호해독 동작을 시작하기 전에 완료됨을 보장한다.
사용자 제어 데이터 처리 시스템의 운영 체제에 의한 처리를 위해 파일이 도출될 때마다, 운영 체제내에 상주하는 파일 관리 프로그램은 입/출력 요구를 인터셉트하여 파일의 선두 부분을 검사함으로써 고유 식별자(453)와 같은 암호해독 블럭식별자가 특정의 공지 위치에 존재하는 지를 판정한다. 최상의 성능을 위해, 제24도에 도시된 바와 같이, 이 위치는 일반적으로 파일의 시작부에 존재할 것이다. 파일 관리 프로그램이 화일이 암호해독 블럭을 갖는다고 판정하면, TSR이 블럭을 메모리로 판독할 것이다. 블럭은 그후 파싱(parse)되어, 키 파일을 포함하는 드라이브 및 디렉토리를 지정하는 환경 변수(environment variable)를 복제하고 암호화 블럭으로부터 키 파일 명칭을 연결(concatenate)하여 완전한 키 파일 명칭(fully qualified key file)을 생성한다. TSR은 그후 키 화일의 개방을 시도한다. 키 화일이 존재하지 않는다면, TSR은 암호화된 화일의 개방을 시도하는 애플리케이션에 대해 액세스 거부(access denied) 응답을 보낸다. 키 파일이 존재한다고 판정되면, TSR은 키 파일을 개방하여 키(제품 키, 고객 키, 머신 ID)를 판독하고 실제 키를 발생시킨다. 이 실제 키는 암호해독 블럭 검증 데이터를 암호해독하는데 사용된다. 전술한 바와 같이, 비교 동작은 이 암호해독 동작이 성공적인지의 여부를 판정한다. 비교가 실패하였다면, 키 파일은 유효하지 않음(invalid)으로 판정되고, TSR은 암호화된 소프트웨어 제품의 개방을 시도하는 애플리케이션에 대해 액서스 거부 메시지(access denied message)를 보낸다. 그러나, 비교가 성공적이면, 파일 관리 프로그램은 암호화 헤더에 설정된 암호화 유형에 따른 파일을 암호해독하는 준비를 한다. TSR은 그후 유효 파일 핸들(valid file handle)을 호출 애플리케이션으로 보내어 이 파일이 개방되었음을 나타낸다. 애플리케이션이 암호화된 파일로부터 데이터를 판독할 때, TSR은 이 데이터를 애플리케이션으로 다시 전달하기 전에 이 데이터를 판독하여 암호해독한다. 요구된 데이터가 사이드 파일에 저장되어 있는 대체된 데이터의 일부이면, TSR은 사이드 파일을 판독하여 적절히 암호해독된 블럭을 호출 애플리케이션으로 보내며, 호출 애플리케이션은 이 데이터가 별도의 파일로부터 전달되었음을 인식하지 못한다.
암호화 헤더의 넓은 개념이 제24 및 제25도에 도시되어 있으나, 암호화된 파일을 생성하는 보다 상세한 특징이 제26도, 제27도 및 제28도에 도시되어 있다. 제27도 및 제28도는 데이터 파일의 두 유형을 도시한다. 제27도는 비실행 데이터 파일(non-executing data file)을 도시하고, 제28도는 실행 데이터화일(executing data file)을 도시한다. 제26도는 헤더(499)를 도시하며, 이 헤더는 서명 세그먼트(signature segment)(501), 헤더 LEN(503), 사이드 파일 인덱스(505), 사이드 파일 LEN(507), 암호화 유형 세그먼트(509), 검증 데이터(511) 및 키 파일 명칭(518)을 포함한다. 제27도에 도시된 바와 같이, 소프트웨어 제품은 순수 파일(521)로서 시작하며, 특정 암호화 루틴에 따라 암호화 파일(523)로 암호화된다. 헤더(499)의 암호화 유형 세그먼트(509)는 순수 파일(521)을 변경하는데 사용된 암호화 유형을 식별하여 파일(523)로 암호화한다. 다음, 암호화 파일(523)의 선두 부분은 사이드 파일(527)로 복제되며, 이 사이드 파일은 헤더(499)의 사이드 파일 인덱스(505) 및 사이드 파일 LEN(507)에 의해 식별된다. 부가적으로, 검증 데이터의 순수 텍스트의 복제본이 또한 사이드 파일(527)에 포함된다. 이후, 헤더(499)는 암호화된 파일(523)의 선두 부분으로 복제되어 변경된 암호화 파일(525)을 형성한다. 유사한 단계가 제28도에 예시된 실행 파일에 적용된다. (순수 파일(531)로 표시된) 소프트웨어 제품의 순수 텍스트 복제본은 통상적인 루틴에 따라 암호화되어 암호화 파일(533)을 형성한다. 암호화된 파일(533)의 선두 부분은 사이드 파일(539)에 복제되어 암호화된 파일(533)의 오버레이된 데이터가 보존된다. 또한, 사이드 파일(539)은 검증 데이터의 순수 텍스트의 복제본을 포함한다. 이후, 암호화된 파일(533)은 실행가능한 스터브(stub)(537) 및 헤더(499)를 암호화 파일(533)의 제 1 부분으로 오버레이함으로써 변경된다.
제28도의 실행가능한 스터브(537)의 목적이 이하 설명된다.
퍼스널 컴퓨터용 DOS 운영 체제는 암호화된 애플리케이션의 실행을 시도할 것이다. 이에 따른 결과로 시스템이 중단(hang)되거나 혹은 바람직하지 못한 동작을 수행할 수 있다. 제28도의 실행가능 파일의 실행가능 스터브(537)는 사용자가 암호화된 애플리케이션의 실행을 시도하지 못하게 하는데 사용된다. 사용자가 암호화된 애플리케이션을 실행하려 시도하면 시스템을 중단시키거나 혹은 드라이브를 포맷팅(formatting)할 위험이 상당히 높다. 실행가능 스터브는 암호화된 소프트웨어 선두 부분에 부착되어 애플리케이션이 TSR없이 실행되거나 혹은 TSR이 감시하고 있지 않는 드라이브로부터 실행될 때마다 수행된다. 이 스터브는 사용자에게 애플리케이션이 동작하지 않는 이유를 설명하는 메시지를 제공할 것이다. 메시지 제공에 추가하여, 이 실행가능 스터브는 이하 개시되는 복잡한 동작을 수행하는데 사용될 수 있다.
(1) 실행가능 스터브 TSR의 기능을 복제(duplicate)할 수 있으며, 애플리케이션을 재차 개시하기 전에 동적인 암호화(dynamic encryption)를 마련할 수 있다.
(2) 실행가능 스터브는 일시 액세스 키를 턴온하여 애플리케이션을 재차 개시할 수 있다.
(3) 실행가능 스터브는 TSR과 통신할 수 있으며, 애플리케이션이 실행되는 드라이브를 감시하도록 TSR에 알린다.
실행가능 스터브는 저장되거나 다음과 같이 암호화된 프로그램으로 복제된다.
(1) 애플리케이션이 암호화된다.
(2) 이 프로그램에 대해 암호해독 블럭이 생성된다.
(3) 사전 생성된 실행가능 스터브가 암호해독 블럭의 선두 부분에 부착된다.
(4) 결합된 암호해독 헤더 및 실행가능 스터브의 길이가 판정된다.
(5) 상기 길이와 동일한 실행가능 파일의 선두 부분에서의 바이트는 이후 메모리, 바람직하게 사전정의된 사이드 파일 위치로 판독된다.
(6) 암호화 헤더 및 실행가능 스터브는 그후 실행가능 코드에서 선행 바이트(leading bytes)상에 기록된다.
TSR은 실행가능 스터브의 알려진 크기(known size)를 초과하여 암호해독 블럭 부분을 탐색함으로써 실행가능 스터브가 암호화되었는지의 여부를 판정할 수 있다. TSR이 실행가능 스터브를 암호해독할 때, TSR은 사이드 파일을 액세스하여 스터브 및 헤더 블럭에 의해 대체된 바이트를 판독한다.
제29도는 시험사용 기간 동안의 동작을 나타내는 흐름도로서 블럭(601)에서 시작된다. 블럭(603)에 따라, 사용자 제어 데이터 처리 시스템의 운영 체재내에 상주하는 화일 관리 프로그램은 메모리 매체에 대한 입/출력 호출을 지속적으로 감시한다. 이후, 블럭(605)에 따라, 각 입/출력 호출에 대해, 호출된 파일이 인터셉트되고, 블럭(607)에 따라 화일 관리 프로그램이 액세스의 허용여부를 판정할 때까지 운영 체제의 호출된 화일에 대한 액세스는 거부된다. 암호해독 블록이 위치되는 호출된 화일의 일 부분이 판독된다. 블럭(609)에 따라 이 호출된 파일 부분이 판독되며, 블럭(611)에 따라 키 파일 어드레스가 도출된다. 도출된 어드레스는 블럭(613)에 따라 키 파일을 인출하는데 사용된다. 판정 블럭(615)에 따라, 키 파일이 위치되어 있지 않다면, 프로세스는 블럭(617)에서 종료된다. 그러나, 판정 블럭(615)에서 키 파일이 존재한다고 판정되면, 블럭(619)에 따라 키가 도출된다. 도출된 키는 이후 블럭(621)에 따라 암호화 헤더내에 위치한 검증 세그먼트를 암호해독 하는데 사용된다. 판정 블럭(623)에서는, 암호해독 검증 세그먼트가 암호해독 검증 세그먼트의 순수 텍스트와 비교된다. 암호해독된 세그먼트가 알려진 순수 텍스트 세그먼트와 일치하지 않는다고 판정되면, 프로세스는 블럭(625)에서 종료된다. 판정 블럭(623)에서 암호해독된 검증 세그먼트가 알려진 순수 텍스트 검증 세그먼트와 일치한다고 판정되면, 프로세스는 소프트웨어 블럭(627)으로 진행하여 호출된 파일에 대한 액세스가 허용된다. 이후, 암호해독 유형이 블럭(629)에 따라 암호해독 헤더로부터 판독되고, 블럭(631)에 따라 호출된 파일은 동적으로 암호해독되어, 블럭(633)에 따라 사용자 제어 데이터 처리 시스템의 운영체제로 전달되어 처리된다. 프로세스는 블럭(635)에서 종료된다.
암호화된 파일의 불법적인 실행이 시도될 경우, 실행가능 스터브는 적어도 일시적으로 액세스를 거부하고, 메시지를 시스템에 전달할 것이지만, 전술한 다수의 복잡한 방법으로 문제점을 처리할 수도 있다.
본 발명의 바람직한 실시예에 따르면, 시험사용 기간동안 혹은 시험사용 기간의 종료시점에서 잠재적 구입자는 업자와 접촉하여 컴퓨터 액세스가능 메모리 매체상의 하나 혹은 그 이상의 소프트웨어 제품과 복제품 구입을 약정할 수 있다. 바람직하게, 제품을 잠재적 사용자에게 제공하는데 CD-ROM 혹은 플로피 디스크가 사용되어 왔다. 바람직하게, 컴퓨터 액세스 가능 메모리 매체는 시험사용 기간 사용을 위해 제공되는 각 제품의 두 개의 암호화된 복제본을 포함한다. 하나의 암호화된 복제본은 업자가 구입자에게 전송하는 파일 관리 프로그램 및 일시 키를 사용하여 암호해독될 수도 있다. 다른 암호화된 복제본은 시험사용 기간 모드 동작에서는 사용할 수 없으며, 대신에 사용자가 일단 구매하면 암호해독되어 사용될 수 있는 영구 복제본이다. 개요적으로, 사용자는 시험사용할 소프트웨어 제품을 선택하고, 업자로부터 일시 액세스 키를 도출하며, 이를 통해 사용자는 사전정의된 시험사용 기간동안 제품을 액세스한다. 시험사용 기간의 종결 전 혹은 종결 후에, 사용자는 팩시밀리, 전자 우편 혹은 전화를 통해 업자와 접촉함으로써 업자로부터 소프트웨어 제품의 영구 복제본을 구입할 수 있다. 일단 비용이 지불되면, 업자는 사용자에게 영구 액세스 키를 전달하며, 이 키는 소프트웨어 제품의 제 2 암호화된 복제본을 암호해독하는데 사용된다. 이 암호화된 제품은 DES 알고리즘과 같은 임의의 통상적인 암호화 루틴을 사용하여 암호화될 수 있다. 영구 키는 소프트웨어 제품이 제한없이 사용될 수 있도록 암호해독되도록 한다. 한번의 거래에서 다수의 복제본을 구입할 수도 있으므로, 본 발명은 이동가능 액세스 키(movable access keys)를 제공하는 기법을 구비하며, 이 기법은 제30도 내지 제35도에서 상세히 설명된다. 본 발명의 바람직한 실시예에서, 소프트웨어 제품의 제 2 복제본을 암호화하고 암호해독하는데 사용된 암호화 알고리즘은 시험사용 기간 동작 모드에서 사용된 것과 유사하다.
본 발명은 시험사용 기간의 종결후에 영구 액세스 키의 배포를 허용하는 수입/수출 기능을 포함한다. 전형적으로, 사무실 관리자 혹은 데이터 처리 시스템 관리자는 시험 기간의 종료후에 암호화된 제품의 소정수의 복제본을 구입할 것이다. 회사 조직내의 한 구성원들에게 암호화된 제품에 대해 제한되지 않는 영구 액세스를 허용하는 영구 키가 송출될 것이다. 컴퓨터 장치가 분산 데이터 처리 네트워크에 연결되어 있지 않은 사무실 혹은 작업 환경에서, 영구 액세스 키는 사무실 관리자 혹은 데이터 처리 관리자로부터 암호화된 소프트웨어 제품의 복제본을 수신하는 회사내의 선택된 구성원들에게 전송되어야 한다. 영구 키는 제품에 대한 영구적인 액세스를 허용한다. 회사내의 모든 종업원에게 특정 암호화된 제품의 복제본이 송출되지는 않으므로, 업자는 불법적인 제품의 배포를 차단하거나 혹은 최소화하는 방식으로 제품을 배포하여야 한다. 제품이 암호화되어 있으므로, 제품은 자신의 암호화된 형태로는 자유로이 배포될 수 있다. 본 발명에서 보호되어야 하는 것은 제품에 대한 제한되지 않는 액세스를 허용하는 키이다. 전자 우편 혹은 인쇄 매체상으로 키가 배포되는 것을 차단하기 위해, 본 발명은 소스 컴퓨터에 상주하는 수출프로그램 및 타겟 컴퓨터(target computer)에 상주하는 수입 프로그램을 포함하며, 이들 프로그램은 플로피 디스켓과 같은 제거가능 메모리 매체를 통해 액세스 키가 배포될 수 있다. 이로 인해 액세스 키가 부주의 혹은 우발적으로 배포 혹은 누설 되는 것이 방지된다. 이 목적을 성취하기 위한 두가지 실시예가 이하 개시된다.
제 1 실시예에서는 소스 컴퓨터내에 보존되는 하나 혹은 그 이상의 암호화된 파일이 일단 암호해독되고, 이후 (디스켓 일련 번호와 같이) 이동가능한 메모리 매체에 대해 고유한 암호화 키 및 암호화 알고리즘을 사용하여 암호화된다. 키 파일은 이후 디스켓을 통해 타겟 컴퓨터로 전달된다. 타겟 컴퓨터는 이동가능 메모리 매체와 대화하여 도출한 키를 사용하여 이 키 파일을 암호해독한다. 곧바로, 키 파일 혹은 파일들은 타겟 컴퓨터의 고유의 시스템 속성으로부터 도출된 키를 통해 암호화되는 암호화 동작을 통해 암호화된다.
다른 실시예에서, 이동가능한 메모리 매체는 타겟 컴퓨터상으로 로딩되어, 타겟 컴퓨터 수입 파일로부터 타겟 컴퓨터에 대해 유일하게 연관되고 타겟 컴퓨터의 하나 혹은 그 이상의 고유 시스템 속성으로부터 획득될 수 있는 전달 키를 획득한다. 메모리 매체는 그후 소스 컴퓨터로 전달되며, 소스 컴퓨터에서 하나 혹은 그 이상의 키 파일이 암호해독되고, 그후 전달키를 사용하여 암호화된다. 메모리 매체는 그후 타겟 컴퓨터로 전달되고, 이 컴퓨터에서 전달 키가 발생되어 하나 혹은 그 이상의 키 파일을 암호해독하는 암호해독 동작에 사용된다. 바람직하게, 키파일은 즉시, 타겟 컴퓨터에 유일하게 연관되며 하나 혹은 그 이상의 고유한 컴퓨터 구성 속성으로부터 도출될 수 있는 키를 통해 암호화되는 암호화 동작에 의해 암호화된다. 제1실시예는 제30도, 제31도, 제32도 및 제33도를 참조하여 설명되며, 제2실시예는 제34도 및 제35도를 참조하여 설명된다.
제30도 및 제31도는 수출 및 수입 동작의 블럭도를 도시하며, 이 동작은 합법적인 사용자가 수출(export)기능을 사용하여 자신의 영구키를 다른 데이터처리시스템에 전송하도록 한다. 이 수출기능은 다른 시스템으로 수입될 수 있는 액세스 키의 고유한 디스켓 이미지(unique diskette image)를 발생시킨다. 본 발명에 따르면, 소프트웨어 업자가 전화를 통해 고객에게 전송하는 액세스 키는 40바이트 미만의 길이이다. 발생된 키 파일은 2000바이트를 초과하는 길이이다. 수출 기능은 키 파일 및 머신 ID파일을 디스켓에 복제하는데 사용된다. 이 두 파일 모두 변경된 디스켓 일련 번호에 의해 암호화되어이들 파일이 누구나 사용할 수 있는 공중적인 포럼(public forum)에 복제되는 것을 차단한다. 다른 시스템에 제공된 수입 기능은 이들 파일을 암호해독하고, 디스켓의 제품 키 및 머신 ID를 수입 시스템 마스터 파일내의 수입 제품 키 및 머신 ID리스트에 추가하고, 키 파일을 수입시스템 하드 디스크로 복제한다. 이 키 파일은 전술한 바와 같이 수입 시스템상에서 암호화된다.
제30도는 본 발명의 바람직한 실시예에 따른 수출 동작을 도시한 블럭도이다. 도시한 바와 같이, 소스 컴퓨터(651)는 키 파일(653) 및 머스 ID 파일(655)을 포함한다. 키 파일(653)은 제품 키, 고객 키, 소스 컴퓨터(653)에 대한 머신 ID의 순수 텍스트, (시험사용 기간을 정의하는 클럭 및/혹은 카운터와 같은) 시험사용 기간 데이터 및 수출 카운터를 포함하며, 이 수출 카운터는 특정 보호된 소프트웨어 제품에 대해 허용된 수출 동작의 최대 횟수를 정의하고, 성취된 수출 동작의 전체 횟수를 추적하는 이중 동작을 수행한다. 머신 ID 파일은 머신 ID 및 (시험사용 기간을 정의하는 클럭 및/혹은 카운터와 같은) 시험사용 기간 데이터를 포함한다. 키파일(653) 및 머신 ID(655)은 모두(DES 알고리즘과 같은) 임의의 통상적인 암호화 동작에 의해 암호화되며, 이 암호화 동작은 소스 컴퓨터(651)의 고유한 시스템 속성으로부터 획득된 키에 의해 암호화된다. 수출 동작은 개시시에, 키 파일(653) 및 머신 ID파일(655)은 암호해독된다. 키 파일(653)은 키(659)를 통해 암호해독되는 암호해독 동작(657)에 입력으로서 제공된다. 유사하게, 머신 ID 파일(655)운 키(661)를 통해 암호해독되는 암호해독 동작(663)에 입력으로서 제공된다. 암호해독 동작(657, 663)은 키파일(653) 및 머신 ID파일(655)의 순수 텍스트 버전을 발생시킨다. 일단 순수 텍스트가 얻어지면, 키 파일(653)내에 포함된 수출 카운터는 블럭(661)에 따라 변경된다. 예를 들면, 이 동작이 10개의 허용된 동작중 7번째 수출 동작이라면 카운터는 7:10을 판독할 것이다. 키 파일(653)의 순수 텍스트 버전은 암호화 동작(669)에 입력으로서 제공된다. 암호화 동작(669)은 (DES 알고리즘과 같은)임의의 통상적인 암호화 동작이며, 이 동작은 소스 컴퓨터(651)에 접속된 메모리 매체에 대해 고유한 메모리 매체 속성(665)을 통해 암호화되고, 변경자(modifier)(667)에 의해 변경된다. 예를 들면, 고유의 디스켓 일련 번호는 메모리 매체(677)에 대해 고유한 메모리 매체 속성으로서 제공될 수 있다. 디스켓 일련 번호는 변경자(667)에 의해 변경되어 암호화 동작(699)에 입력으로서 제공된다. 동일한 동작이 머신 ID파일(655)의 순수 텍스트에 대해서도 수행된다. 고유의 메모리 매체 속성(671)은 변경자(673)에 의해 변경되고, DES 동작과 같은 임의의 통상적인 암호화 동작을 포함할 수도 있는 암호화 동작(675)에 대한 키로서 사용되며, 최종적으로, 암호화 동작(669 및 675)의 출력은 복제 동작(679, 681)에 입력으로서 제공되며, 이들 복제 동작은 암호화된 키 파일(653) 및 머신 ID 파일(655)을 메모리 매체(677)에 복제한다.
제31도는 수입 동작을 도시하는 블럭도이다. (제30도의)메모리 매체(677)는 소스 컴퓨터(651)에서 물리적으로 제거되어 (제31도의)컴퓨터(707)로 전달된다. 이와 달리, 분산 데이터 처리 시스템에서, 이 전달은 메모리 매체(677)의 물리적인 제거없이 발생할 수도 있다. 이제 제31도를 참조하면, 블럭(683)에 따라, 타겟 머신의 머신 ID는 메모리 매체(677)로 복제되어, 어느 타겟 컴퓨터가 키 파일 및 머신 ID파일을 수신하였는지에 대한 기록을 보존한다. 이후, 블럭(685, 693)에 따라, 암호화된 키 파일(653) 및 머신 ID파일(655)은 메모리 매체로부터 타겟 컴퓨터(707)로 복제된다. 암호화된 키 파일(653)은 암호해독 동작(689)에 입력으로서 제공되며, 이 암호해독 동작은 키(687)를 통해 암호해독된다. 암호해독 동작(689)은 블럭(669)의 암호화 동작을 반전하여, 키 파일(653)에 순수 텍스트 버전을 출력으로서 제공한다. 마찬가지로, 머신 ID 파일(655)은 암호해독 동작(697)에 입력으로서 제공되며, 암호화 동작(697)의 암호화를 반전하며 머신 ID파일(655)의 순수 텍스트를 출력으로서 제공한다. 블럭(691)에 따라, 소스 컴퓨터(651)의 머신 ID가 검색되어 키 파일(653)의 순수 텍스트내의 메모리에 기록된다. 다음, 키 파일(653)의 순수 텍스트는 암호화 동작(699)에 입력으로서 제공된다. 암호화 동작(699)은 DES동작과 같은 통상적인 암호화 동작으로서, 타겟 컴퓨터(707)의 머신 ID 혹은 변경된 머신 ID와 같은 타겟 컴퓨터 고유 속성에 의해 암호화된다. 머신 ID 파일(655)의 순수 텍스트는 암호화 동작(703)의 입력으로서 제공된다. 암호화 동작(703)은 DES암호화 동작과 같은 임의의 통상적인 암호화 동작이며, 이 동작은 타겟 컴퓨터(707)의 머신 ID혹은 변경된 머신 ID와 같은 고유한 타겟 컴퓨터 속성(705)에 의해 암호화된다. 암호화 동작(699)의 출력은(소스 컴퓨터(651)의 키 파일(653)의 일시 제품키와 동일한) 제품 키를 포함하는 암호화된 키 파일(709), (소스 컴퓨터(651)의 키 파일(653)의 고객 번호와 동일한)고객 번호, (소스 컴퓨터(651)의 것과는 다른 타겟 컴퓨터(707)의 머신 ID인)순수 머신 ID, (소스(651)의 키 파일(653)의 시험사용 기간 데이터와 동일한)시험사용 기간 데이터 및 소스 컴퓨터(651)의 머신 ID를 발생시킨다. 암호화 동작(703)의 출력은 타겟 컴퓨터(707)의 머신 ID를 포함하는 머신 ID 파일(711)(소스 컴퓨터(651)의 것과는 다름) 및 (소스 컴퓨터(651)의 머신 ID 파일(655)의 것과 동일한)시험사용 기간 데이터를 정의한다.
제32도 및 제33도는 제30도 및 제31도에 도시된 수입 및 수출 동작의 다른 관점을 도시하며, 본 발명의 다양한 주요한 특성을 강조한다. 도시된 바와 같이, 소스 컴퓨터(801)는 소스 컴퓨터(801)에 대해 고유한 시스템 속성 키를 통해 암호화되는 머신 ID파일(803)을 포함한다. 머신 ID파일은 머신 ID, 각각의 보호된 소프트웨어 제품에 대해 허용된 수출 횟수의 카운트(count of the number of exports), 사용되는 수출의 전체 회수의 카운트를 포함한다. 예를 들면, 제1수출 동작은 1:10의 카운트를 보유하며, 이는 10개의 허용된 수출 동작중 하나의 수출 동작이 발생하였음을 나타낸다. 다음수출 동작에서, 카운터는 2:10으로 증가되며, 이는 10개의 허용된 수출동작중 두 개의 수출 동작이 발생했음을 나타낸다. 수출 동작의 결과를 수신하는 각 타겟 컴퓨터는 이 특정 카운터 값으로 태그되어, 특정 수출 동작의 수신자임을 확인한다. 예를 들면, 하나의 소스 컴퓨터는 1:10의 카운터 값을 보유할 수 있으며, 이는 이 컴퓨터가 10개의 허용된 수출 동작의 제1 수출 동작의 수신자임을 나타낸다. 그러나, 다른 타겟 컴퓨터는 카운터 값 7:10을 보유할 수도 있으며, 이는 이 특정 타겟 컴퓨터가 10개의 허용된 동작중 7번째의 수출 동작을 수신하였음을 나타낸다. 이러한 방식으로, 타겟 컴퓨터는 사용된 수출동작의 전체 횟수의 카운트를 유지하며, 소스 컴퓨터는 각각 상이한 카운터값을 보유하되, 이값은 다수의 허용된 수출 동작중 특정 동작으로부터 머신 ID 파일 및 키 파일을 소스 컴퓨터가 수신하였음을 나타낸다.
소스 컴퓨터(801)에서 머신 ID파일(803) 및 키 파일(805)은 소스 컴퓨터(801)에 대해 고유의 시스템 속성을 키로서 사용하는 암호화 알고리즘으로 암호화된다. 그러나, 일단 머신 ID파일(803) 및 키 파일(805)이 수출 키 디스켓(807)과 같은 메모리 매체로 전송되면, 머신 ID파일(809) 및 키 파일(811)은 암호화 키를 디스켓의 일련 번호와 같은 고유한 디스켓 속성으로 사용하는 임의의 통상적인 암호화 동작에 의해 암호화된다. 이러한 동작은 머신 ID파일(809) 및/혹은 키 파일(811)의 내용이 다른 디스켓 혹은 다른 메모리 매체로 복제되어 소프트웨어에 대한 불법 적인 액세스를 성취하는데 사용될 가능성을 최소로한다. 왜냐하면, 머신 ID 파일(809) 및 키파일(811)의 내용을 타겟 컴퓨터로 효과적으로 전송하려면, 타겟 컴퓨터가 수출 키 디스켓(807)으로부터 고유의 디스켓 속성을 판독하고 사용할 수 있어야 하기 때문이다. 머신 ID 파일(809) 및 키 파일(811)이 이들 아이템이 복제된 디스켓으로 타겟 컴퓨터에 제공될 때만 효율적인 전송이 이루어질 수 있다. 수출 키 디스켓(807)이외의 디스켓을 사용하여 머신 ID 파일(809) 및 키 화일(811)을 잠재적 타겟 컴퓨터로 제공하면 무의미한 정보의 전달이 이루어진다. 왜냐하면 타겟 컴퓨터가 성공적인 암호해독 동작을 성취하기 위해서는 수출 키 디스켓(807)의 고유 속성이 요구되기 때문이다.
제33도에 도시한 바와 같이, 수출 키 디스켓(807)은 타겟 컴퓨터(813)에 제공된다. 물론, 머신 ID파일(809) 및 키 파일은 암호화된 형태이다. 수출 키 디스켓(807)에서 타겟 컴퓨터(813)로의 전송에서 머신 ID 파일(809)의 내용은 타겟 컴퓨터(813)의 머신 ID 및 사용된 수입의 횟수에 의해 갱신된다. 타겟 컴퓨터(813)로의 전송을 성취함에 있어, 머신 ID파일(815)이 구성되고, 이 파일은 타겟 컴퓨터(813)의 머신 ID, 고객 정보 및 소스 컴퓨터(810)의 머신 ID 리스트와 같은 다수의 아이템을 포함한다. 머신 ID파일(815) 및 키파일(817)은 모두 타겟 컴퓨터(813)의 고유한 속성을 키로서 사용하는 통상적인 암호화 동작을 통해 암호화된다. 이러한 동작은 머신 ID파일(815) 및 키 파일(817)을 특정 타겟 컴퓨터(813)에 결합시킨다.
수출/수입 카운터를 이용하여 합법화된 수출/수입 동작의 전체 횟수 및 사용된 수출/수입 동작의 전체 횟수를 추적함으로써, 본 발명은 시험사용 기간동안 소프트웨어 제품의 배포 현황을 추적하는데 사용될 수 있는 감사 방안(audit trail)을 구축하고 있다. 각각의 소스 컴퓨터는 수행된 수출 동작의 전체 횟수의 기록을 보유하고 있다. 각각의 소스 컴퓨터는 하나 혹은 그 이상의 보호되는 소프트웨어 제품을 타겟 컴퓨터로 전송하는데 사용되는 특정 수출/수입 동작의 기록을 보유하고 있다. (디스켓 혹은 디스켓들과 같은)전송을 성취하는데 사용되는 메모리 매체는 모든 수출/수입 동작에서 사용된 소스 컴퓨터 및 타겟 컴퓨터 모두의 머신 ID의 영구 기록을 보유하고 있다.
수출 및 수입 동작을 구현하는 절차는 소프트웨어 제품이 결코 불필요한 위험에 노출되지 않도록 한다. 머신 ID 파일 및 키 파일이 소스 컴퓨터에서 수출 디스켓으로 전달될 때, 이들은 수출 디스켓의 내용이 불법적으로 키를 배포하는 수단으로서 게시판에 공개되는 것을 차단한다. 수입 동작동안, 머신 ID파일 및 키 파일은 타겟 컴퓨터에 대해 고유한 시스템 속성으로 암호화되어, 소프트웨어 제품이 타겟 컴퓨터에 대해 고유한 속성으로 암호화되는 것을 제외하고는, 소프트웨어 제품이 소스 컴퓨터의 보안 유지를 위한 방식으로 보존되게 함으로써 키의 불법적인 복제 및 공개를 차단한다.
수출/수입 기능의 제2실시예가 제34도 및 제35도에 블럭도로 도시되어 있다. 개략적으로 메모리 매체(1677)는 먼저 타겟 컴퓨터(1707)와 대화하는데 사용되어 타겟 컴퓨터로부터 전달 키를 획득하며, 이 전달 키는 타겟 컴퓨터(1707)에 대해 고유하며, 바람직하게 타겟 컴퓨터(1707)의 하나 혹은 그 이상의 고유 시스템속성으로부터 도출된다. 전달 키는 타겟 컴퓨터(1707)의 머신 ID를 변경한 것이 될 수도 있다. 다음 메모리 매체(1677)는 수출 동작 모드에서 소스컴퓨터(1651)와 대화하는데 사용되며, 이 동작 모드에서 키 파일(1653) 및 머신 ID 파일(1655)이 먼저 암호해독되고, 이후 전달 키를 사용하여 암호화된다.
제34도는 본 발명의 바람직한 실시예의 따른 수출 동작을 도시한 블럭도이다. 도시된 바와 같이, 소스 컴퓨터(1651)는 키파일(1653) 및 머신 ID파일(1655)을 포함한다. 키 파일(1653)은 제품 키, 고객 키, 소스 컴퓨터(1653)의 머신 ID의 순수 텍스트, (시험사용 기간을 정의하는 클럭 및/혹은 카운터와 같은) 시험사용 기간 데이터 및 수출 카운터를 포함하며, 이 수출 카운터는 특정 보호된 소프트웨어 제품에 대해 허용된 수출 동작의 최대 횟수를 정의하고, 성취된 수출 동작의 전체 횟수를 추적하는 이중 동작을 수행한다. 머신 ID 파일은 머신 ID 및 (시험사용 기간을 정의하는 클럭 및/혹은 카운터와 같은)시험사용 기간 데이터를 포함한다. 키 파일(1653) 및 머신 ID파일(1655) 모두는 (DES 알고리즘과 같은) 임의의 통상적인 암호화 동작에 의해 암호화되며, 이 암호화 동작은 소스 컴퓨터(1651)의 고유 시스템 속성으로부터 도출된 키를 통해 암호화된다. 수출동작의 개시시에, 키 파일(1653) 및 머신 ID 파일(1655)은 암호해독된다. 키 파일(1653)은 키(1659)에 의해 암호해독되는 암호해독 동작(1657)에 입력으로서 제공된다. 마찬가지로, 머신 ID파일(1655)은 키(1661)를 통해 암호해독되는 암호해독 동작(1663)에 입력으로서 제공된다. 암호해독 동작(1657, 1663)은 키 파일 및 머신 ID 파일(1655)의 순수 텍스트 버전을 발생시킨다. 일단 순수 텍스트가 도출되면, 키 파일(1653)내에 포함된 수출 카운터는 블럭(1661)에 따라 갱신된다. 예를 들면, 실행되는 동작이 10개의 허용된 동작중에서 7번째 허용된 수출 동작이라면, 카운터는 7:10이 된다. 키 파일(1653)의 순수 텍스트 버전은 암호화 동작(1669)에 입력으로서 제공된다. 암호화 동작(1669)은 (DES 알고리즘과 같은) 임의의 통상적인 암호화 동작이 될 수 있으며, 이 동작은 사전에 도출된 전달 키(1665)를 통해 암호화된다. 동일한 동작이 머신 ID파일(1655)의 순수 택스트에 대해 수행된다. 전달 키(1671)는 DES 동작과 같은 임의의 통상적인 암호화 동작을 포함하는 암호화 동작(1675)에 대한 키로서 사용된다. 최종적으로, 암호화 동작(1669) 및 (1675)의 출력은 복제 동작(1679, 1681)에 대한 입력으로서 제공되며, 이들 복제 동작은 암호화된 키 파일(1653) 및 머신 ID 파일(1655)을 메모리 매체(1677)로 복제한다.
제35도는 수입 동작을 도시한 블럭도이다. (제34도의) 메모리 매체(1677)는 소스 컴퓨터(1651)로부터 이동되어 컴퓨터(1707)로 전달된다. 이와 달리, 분산 데이터 처리 시스템에서, 이 전달은 메모리 매체(1677)를 실제로 전달하지 않고도 실행될 수 있다. 이제 제35도를 참조하면, 블럭(1683)에 따라 타겟 머신의 머신 ID는 메모리 메체(1677)로 복제되어, 키 파일 및 머신 ID 파일을 수신한 특정 타겟 컴퓨터의 기록을 보존한다. 이후, 블럭(1685, 1693)에 따라, 암호화된 키 파일(1653) 및 머신 ID 파일(1655)은 메모리 매체에서 타겟 컴퓨터(1707)로 복제된다. 암호화된 키 파일(1653)의 키(1687)에 의해 암호해독되는 암호해독 동작(1689)에 입력으로서 제공된다. 암호해독 동작(1689)은 블럭(1669)의 암호화 동작을 반전하여, 키 파일(1653)의 순수 텍스트를 출력으로서 제공한다. 마찬가지로, 머신 ID 파일(1655)은 키(1695)에 의해 암호해독되는 암호해독 동작(1697)에 입력으로서 제공된다. 암호해독 동작(1697)은 암호화 동작(1675)의 암호화를 반전하여 머신 ID 파일(1655)의 순수 텍스트를 출력으로서 제공한다. 블럭(1691)에 따라, 소스 컴퓨터(1651)의 머신 ID가 검색되어 키 파일(1653)의 순수 텍스트내의 메모리에 저장된다. 다음, 키 파일(1653)의 순수 텍스트는 암호화 동작(1699)에 입력으로서 제공된다. 암호화 동작(1699)은 DES 동작과 같은 통상적인 암호화 동작으로 타겟 컴퓨터(1707)의 머신 ID 혹은 변경된 머신 ID 와 같은 타겟 컴퓨터의 고유 속성에 의해 암호화된다. 머신 ID화일(1655)의 순수 텍스트는 암호화 동작(1703)에 입력으로서 제공된다. 암호화 동작(1703)은 DES 암호화 동작과 같은 임의의 통상적인 암호화 동작으로서, 타겟 컴퓨터(1707)의 머신 ID 혹은 변경된 머신 ID와 같은 고유한 타겟 컴퓨터 속성(1705)에 의해 암호화된다. 암호화 동작(1699)의 출력은 암호화된 키화일(1709)을 발생시키며, 이 파일은 (소스 컴퓨터(1651)의 키 파일(1653)의 일시 제품 키와 동일한) 제품 키, (소스 컴퓨터(1651)의 키 파일(1653)의 고객 번호와 동일한) 고객 번호, (소스 컴퓨터(1651)의 것과는 다른 타겟 컴퓨터(1707)의 머신 ID인) 순수 머신 ID, (소스(1651)의 키 파일(1653)의 시험사용 간격 데이터와 동일한) 시험사용 기간 데이터 및 소스 컴퓨터(1651)의 머신 ID를 포함한다. 암호화 동작(1703)의 출력은 머신 ID 파일(1711)을 정의하며, 이 파일은 (소스 컴퓨터(1651)의 것과는 다른) 타겟 컴퓨터(1707)의 머신 ID 및 (소스 컴퓨터(1651)의 머신 ID 파일(1655)의 것과 동일한) 시험사용 기간 데이터를 포함한다.
이상 본 발명이 바람직한 실시예에 따라 구체적으로 설명되었지만, 본 발명은 상기 실시예에 한정되는 것은 아니며, 그 사상 및 범주를 이탈하지 않는 범위내에서 여러 가지로 변경 가능함은 물론이다.

Claims (18)

  1. 업자로부터 잠재적 사용자에게로 소프트웨어 객체를 배포하는 방법에 있어서, ①소프트웨어 객체를 마려하는 단계와, ②컴퓨터 액세스가능 메모리 매체를 마련하는 단계와, ③화일 관리 프로그램을 마련하는 단계와, ④상기 소프트웨어 객체의 기능을 파기가능하게 제한하는 단계와, ⑤상기 소프트웨어 객체를 상기 컴퓨터 액세스가능 메모리 매체상에 기록하는 단계와, ⑥상기 컴퓨터 액세스가능 메모리 매체를 상기 업자로부터 잠재적 사용자에게로 전달하는 단계와, ⑦상기 파일 관리 프로그램을 사용자 제어 데이터 처리 시스템내로 로딩하여, 상기 파일관리 프로그램의 동작을 상기 사용자 제어 데이터 처리 시스템의 운영 체제와 통합시키는 단계와, ⑧상기 사용자 제어 데이터 처리 시스템을 통해 상기 컴퓨터 액세스가능 메모리 매체를 판독하는 단계와, ⑨상기 사용자 제어 데이터처리 시스템을 통해 상기 소프트웨어 객체의 기능을 복원하기 위해 상기 파일 관리 프로그램을 사용하여 원격 허가 과정의 종료후 상기 소프트웨어 객체에 대한 액세스를 가능하게 하는 단계를 포함하는 소프트웨어 객체 배포 방법.
  2. 제1항에 있어서, 상기 파일 관리프로그램은 상기 사용자 제어 데이터 처리 시스템에 의해 실행될 때 다수의 동작 모드로 동작하며, 상기 다수의 동작 모드는, ⒜상기 소프트웨어 객체의 기능 제한을 복원함으로써 상기 소프트웨어 객체가 일시적으로 인에이블되는 일시적인 시험사용 동작 모드와, ⒝상기 소프트웨어 객체의 기능 제한이 복원되어 상기 잠재적 사용자가 상기 소프트웨어 객체를 제한없이 사용하도록 허용하는 정규 사용 동작 모드를 포함하는 소프트웨어 객체 배포 방법.
  3. 제2항에 있어서, 상기 다수의 동작 모드는, ⒞상기 소프트웨어 객체와 관련한 선택된 정보가 상기 잠재적 사용자가 선택하기에 용이한 방식으로 상기 잠재적 사용자에게 제공되는 브라우징 동작 모드(a browsing mode of operation)를 더 포함하는 소프트웨어 객체 배포 방법.
  4. 제1항에 있어서, 상기 기능을 제한하는 단계는 상기 소프트웨어 객체의 적어도 일부분을 암호화하는 단계를 포함하는 소프트웨어 객체 배포 방법.
  5. 제1항에 있어서, 상기 기능을 제한하는 단계는 상기 소프트웨어 객체의 적어도 하나의 특징을 제거하는 단계를 포함하는 소프트웨어 객체 배포 방법.
  6. 제1항에 있어서, 상기 기능을 제한하는 단계는 상기 소프트웨어 객체가 다른 제한없이 사용되는 시간을 제한하는 단계를 포함하는 소프트웨어 객체 배포 방법.
  7. 제1항에 있어서, 상기 기능을 제한하는 단계는 상기 소프트웨어 객체의 사용이 사전정의된 제한된 횟수만큼만 사용되도록 제한하는 단계를 포함하는 소프트웨어 객체 배포 방법.
  8. 제1항에 있어서, 상기 파일 관리 프로그램을 상기 컴퓨터 액세스가능 메모리 매체상에 기록하는 단계와, 상기 소프트웨어 객체 및 상기 파일 관리 프로그램 모두는 포함하는 상기 컴퓨터 액세스가능 메모리 매체를 상기 업자로부터 잠재적 사용자에게로 전달하는 단계를 더 포함하는 소프트웨어 객체 배포방법.
  9. 제1항에 있어서, 상기 화일 관리 프로그램은, 상기 소프트웨어 객체의 (a) 시험사용 및 (b) 주문을 용이하게 하는 고객 인터페이스를 포함하는 소프트웨어 객체 배포 방법.
  10. 제10항에 있어서, 상기 고객 인터페이스는, 상기 데이터 필드내에 포함된 정보를 상기 업자에게 전송하기 위한 다수의 사용자 선택 전송 옵션을 더 포함하는 소프트웨어 객체 배포 방법.
  11. 제11항에 있어서, 상기 고객 인터페이스는, 상기 데이타 필드내에 포함되 정보를 상기 업자에게 전송하기 위한 다수의 사용자 선택 전송 옵션을 더 포함하는 소프트웨어 객체 배포 방법.
  12. 제1항에 있어서, 상기 파일 관리 프로그램은, ⒜상기 사용자 제어 데이터 처리 시스템의 운영 체제 입력 호출 및 출력 호출에 대해 운영 체제를 지속적으로 감시하는 동작과, ⒝상기 사용자 제어 데이터 처리 시스템의 운영 체제가 상기 소프트웨어 객체를 호출하는 시점을 식별하는 동작과, ⒞상기 소프트웨어 객체와 관련된 일시 액세스 키를 인출하는 동작과, ⒟상기 일시 액세스 키를 검사하여 상기 일시 액세스 키의 유효성을 판정하는 동작과, ⒠상기 소프트웨어 객체의 기능 제한을 복원하는 동작과, ⒡처리를 위해 상기 소프트웨어 객체를 상기 데이터 처리 시스템으로 전달하는 동작으로 포함하는 소프트웨어 객체 배포 방법.
  13. 제13항에 있어서, 상기 기능을 제한하는 단계는 상기 소프트웨어 객체의 적어도 일부분을 암호화하는 단계를 포함하고, 상기 소프트웨어 객체의 기능적 제한을 복원하는 단계는 상기 소프트웨어 객체의 암호화된 부분을 암호 해독하는 단계를 포함하는 소프트웨어 객체 배포 방법.
  14. 제2항에 있어서, 상기 일시 시험사용 동작 모드는 일시 액세스 키를 사용하여 인에이블되는 소프트웨어 객체 배포 방법.
  15. 제15항에 있어어, 상기 일시 액세스 키는 상기 일시 시험사용 동작 모드의 개시시에 개시되는 소프트웨어 클럭을 포함하는 소프트웨어 객체 배포 방법.
  16. 제15항에 있어서, 상기 일시 액세스 키는 상기 시험사용 동작 모드 동안 상기 소프트웨어 객체가 사용될 때마다 갱신되는 카운터를 포함하는 소프트웨어 객체 배포 방법.
  17. 제15항에 있어서, 상기 정규 사용 동작 모드는 상기 소프트웨어 객체의 상기 기능적 제한을 복원함으로써 개시되는 소프트웨어 객체 배포방법.
  18. 제15항에 있어서, 상기 일시 액세스 키는 상기 시험사용 동작 모드의 진행에 따라 변경되는 소프트웨어 객체 배포 방법.
KR1019950009726A 1994-04-25 1995-04-25 소프트웨어 객체 배포 방법 KR100200444B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/235,035 1994-04-25
US08/235,035 1994-04-25
US08/235,035 US5689560A (en) 1994-04-25 1994-04-25 Method and apparatus for enabling trial period use of software products: method and apparatus for allowing a try-and-buy user interaction

Publications (2)

Publication Number Publication Date
KR950029928A KR950029928A (ko) 1995-11-24
KR100200444B1 true KR100200444B1 (ko) 1999-06-15

Family

ID=22883809

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950009726A KR100200444B1 (ko) 1994-04-25 1995-04-25 소프트웨어 객체 배포 방법

Country Status (8)

Country Link
US (1) US5689560A (ko)
EP (1) EP0679979B1 (ko)
JP (1) JPH07295803A (ko)
KR (1) KR100200444B1 (ko)
CN (1) CN1132110C (ko)
AU (1) AU1485695A (ko)
CA (1) CA2145925C (ko)
DE (1) DE69531077T2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8584249B2 (en) 2003-05-16 2013-11-12 Phu Sang Ltd., Llc System for preventing unauthorized use of digital content

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2720532B1 (fr) * 1994-05-25 1997-09-12 Vincent Lorphelin Système de location sécurisée de logiciels par carte à mémoire.
EP0715734A1 (en) * 1994-06-30 1996-06-12 Hughes Aircraft Company File encryption scheme
EP1845527A3 (en) * 1994-07-08 2012-04-25 Sony Corporation Receiving controlled-access broadcast signals
AU695468B2 (en) * 1994-12-13 1998-08-13 Alexander Atkinson Dunn Methods and apparatus for protection of executable programs, libraries and data
AUPN002594A0 (en) * 1994-12-13 1995-01-12 Dunn, Alexander Atkinson Improvements in software for the protection of executable programs, libraries and their data
JP3366143B2 (ja) * 1995-01-10 2003-01-14 富士通株式会社 ソフトウェア流通システムにおける識別子管理装置および方法ならびにソフトウェア流通管理装置および方法
JPH08335182A (ja) * 1995-06-07 1996-12-17 Fujitsu Ltd ファイル保護システム及びそのファイル保護システムを用いたソフトウエア利用システム及びそのソフトウエア利用システムに用いられる記録媒体
US5870543A (en) * 1995-06-07 1999-02-09 Digital River, Inc. System for preventing unauthorized copying of active software
US5903647A (en) * 1995-06-07 1999-05-11 Digital River, Inc. Self-launching encrypted digital information distribution system
US5887060A (en) * 1995-06-07 1999-03-23 Digital River, Inc. Central database system for automatic software program sales
US5883955A (en) * 1995-06-07 1999-03-16 Digital River, Inc. On-line try before you buy software distribution system
US5883954A (en) * 1995-06-07 1999-03-16 Digital River, Inc. Self-launching encrypted try before you buy software distribution system
EP0870381A4 (en) * 1995-06-07 1999-09-29 Digital River Inc SOFTWARE TEST DISTRIBUTION AND SALE SYSTEM
JPH0934765A (ja) * 1995-07-20 1997-02-07 Fuji Xerox Co Ltd ファイル管理装置
US6516296B1 (en) 1995-11-27 2003-02-04 Fujitsu Limited Translating apparatus, dictionary search apparatus, and translating method
JP3952216B2 (ja) 1995-11-27 2007-08-01 富士通株式会社 翻訳装置及び辞書検索装置
US6009543A (en) * 1996-03-01 1999-12-28 Massachusetts Institute Of Technology Secure software system and related techniques
TW330999B (en) * 1996-03-08 1998-05-01 Matsushita Electric Ind Co Ltd Microprocessor suitable for reproducing AV data while protecting the AV data from illegal copy and image information processing system using the microprocessor
DE19610314A1 (de) * 1996-03-15 1997-09-18 Juergen Sulz Verfahren zum Erteilen einer individuellen Benutzungsfreigabe für ein Computerprogramm
US6530019B1 (en) * 1996-06-12 2003-03-04 Dell U.S.A., L.P. Disk boot sector for software contract enforcement
JP2810033B2 (ja) * 1996-07-08 1998-10-15 村越 弘昌 稼働管理システム及び稼働管理方法
US6052780A (en) * 1996-09-12 2000-04-18 Open Security Solutions, Llc Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information
US6141698A (en) * 1997-01-29 2000-10-31 Network Commerce Inc. Method and system for injecting new code into existing application code
WO1998037659A2 (en) * 1997-02-24 1998-08-27 Wildfire Communications, Inc. Method and apparatus for offering additional product functions to a user
US5920863A (en) * 1997-05-31 1999-07-06 International Business Machines Corporation System and method for supporting transactions for a thin client lacking a persistent store in a distributed object-oriented environment
JPH11265544A (ja) * 1998-03-16 1999-09-28 Fujitsu Ltd 記憶装置及びそのパスワード制御方法
US6334214B1 (en) * 1998-04-03 2001-12-25 Preview Software Try/buy wrapping of installation-ready software for electronic distribution
US6298443B1 (en) * 1998-04-24 2001-10-02 Dell Usa, L.P. Method and system for supplying a custom software image to a computer system
JP4539874B2 (ja) * 1998-05-14 2010-09-08 株式会社セガ 情報処理装置、情報処理方法及び情報記録媒体並びに情報処理システム
KR100591098B1 (ko) 1998-05-14 2006-06-19 가부시키가이샤 세가 정보 처리 장치, 정보 처리 방법과 정보 기록 매체 및정보 처리 시스템
AUPP407198A0 (en) 1998-06-12 1998-07-02 Canon Kabushiki Kaisha Print enablement in software systems
AU734981B2 (en) * 1998-06-12 2001-06-28 Canon Kabushiki Kaisha Print enablement in software systems
US6092120A (en) * 1998-06-26 2000-07-18 Sun Microsystems, Inc. Method and apparatus for timely delivery of a byte code and serialized objects stream
US7058597B1 (en) 1998-12-04 2006-06-06 Digital River, Inc. Apparatus and method for adaptive fraud screening for electronic commerce transactions
US20030195974A1 (en) 1998-12-04 2003-10-16 Ronning Joel A. Apparatus and method for scheduling of search for updates or downloads of a file
US7617124B1 (en) 1998-12-04 2009-11-10 Digital River, Inc. Apparatus and method for secure downloading of files
EP1185928A1 (en) 1998-12-16 2002-03-13 Kent Ridge Digital Labs Process oriented computing environment
US6966002B1 (en) 1999-04-30 2005-11-15 Trymedia Systems, Inc. Methods and apparatus for secure distribution of software
US7360252B1 (en) 1999-04-30 2008-04-15 Macrovision Corporation Method and apparatus for secure distribution of software
US6289450B1 (en) 1999-05-28 2001-09-11 Authentica, Inc. Information security architecture for encrypting documents for remote access while maintaining access control
US20050251686A1 (en) * 1999-06-09 2005-11-10 Andres Torrubia-Saez Methods and apparatus for secure distribution of software
CA2313839A1 (en) * 1999-07-27 2001-01-27 Lucent Technologies Inc. Method of monitoring runtime usage of demo evaluation software
AU1651701A (en) 1999-12-06 2001-06-18 Fujitsu Limited Data distribution system and recorder for use therein
US6832230B1 (en) * 1999-12-22 2004-12-14 Nokia Corporation Apparatus and associated method for downloading an application with a variable lifetime to a mobile terminal
US6654888B1 (en) * 1999-12-31 2003-11-25 International Business Machines Corporation Installing and controlling trial software
US6304972B1 (en) * 2000-01-03 2001-10-16 Massachusetts Institute Of Technology Secure software system and related techniques
US7493497B1 (en) 2000-02-03 2009-02-17 Integrated Information Solutions Digital identity device
US20070271191A1 (en) * 2000-03-09 2007-11-22 Andres Torrubia-Saez Method and apparatus for secure distribution of software
US20020111997A1 (en) * 2000-04-26 2002-08-15 Maurice Herlihy Methods and systems for securing computer software
TW525329B (en) * 2000-05-29 2003-03-21 Omron Tateisi Electronics Co Power supply module and power supply unit using the same
EP1302882A1 (en) * 2000-05-30 2003-04-16 Akiyoshi Okamoto Rental system of digital content
US7031947B1 (en) * 2000-07-27 2006-04-18 Prolink Solutions, Llc Method and apparatus for continuing play with cart-based navigation/information system display
US7555537B2 (en) * 2000-10-25 2009-06-30 Nokia Mobile Phones Ltd. Downloadable multimedia content and method for accounting
US6978376B2 (en) 2000-12-15 2005-12-20 Authentica, Inc. Information security architecture for encrypting documents for remote access while maintaining access control
US7409424B2 (en) 2001-04-24 2008-08-05 Parker James A Electronic mail file access system
US7421411B2 (en) 2001-07-06 2008-09-02 Nokia Corporation Digital rights management in a mobile communications environment
US6549980B2 (en) 2001-07-19 2003-04-15 Dell Pruducts L.P. Manufacturing process for software raid disk sets in a computer system
US7269668B2 (en) * 2001-09-05 2007-09-11 Redford Darrell J Mobile, seamless, temporary, wireless network access apparatus and method
US7725490B2 (en) 2001-11-16 2010-05-25 Crucian Global Services, Inc. Collaborative file access management system
US7316032B2 (en) * 2002-02-27 2008-01-01 Amad Tayebi Method for allowing a customer to preview, acquire and/or pay for information and a system therefor
US7562397B1 (en) * 2002-02-27 2009-07-14 Mithal Ashish K Method and system for facilitating search, selection, preview, purchase evaluation, offering for sale, distribution, and/or sale of digital content and enhancing the security thereof
US8216071B2 (en) * 2002-03-20 2012-07-10 Intel Corporation Method and apparatus for software delivery and management
US20030217280A1 (en) * 2002-05-17 2003-11-20 Keaton Thomas S. Software watermarking for anti-tamper protection
JP2004127024A (ja) * 2002-10-03 2004-04-22 Canon Inc 複合現実感システム用コンテンツ保護装置及び保護方法
JP4042571B2 (ja) 2003-01-15 2008-02-06 ヤマハ株式会社 コンテンツ提供方法及び装置
JP4417123B2 (ja) 2003-02-19 2010-02-17 パナソニック株式会社 ソフトウェア更新方法及び無線通信装置
US7277901B2 (en) * 2003-07-10 2007-10-02 Tacit Networks, Inc. Collaborative file update system
KR20060127215A (ko) * 2004-03-22 2006-12-11 코닌클리케 필립스 일렉트로닉스 엔.브이. 컨텐츠에 대한 전자 지불
US7458102B2 (en) * 2004-08-17 2008-11-25 Emc Corporation Information security architecture for remote access control using non-bidirectional protocols
US7281652B2 (en) * 2005-05-18 2007-10-16 Foss Jonathan G Point-of-sale provider evaluation
EP1796000A1 (en) * 2005-12-06 2007-06-13 International Business Machines Corporation Method, system and computer program for distributing software products in trial mode
NL1032244C2 (nl) * 2006-07-28 2008-01-29 Sharewire B V Werkwijze, computerprogramma, computerprogrammaproduct en inrichting voor het vanaf ten minste één server via een datanetwerk laden van software.
EP1901190A1 (en) 2006-09-15 2008-03-19 Sony DADC Austria AG Method and system for managing access to add-on data files
US8051488B2 (en) * 2006-10-05 2011-11-01 Microsoft Corporation Trial usage for encrypted subscription-based data
JP4671198B2 (ja) * 2007-01-26 2011-04-13 株式会社ソニー・コンピュータエンタテインメント 情報処理装置
EP2113861B1 (en) 2007-02-23 2018-10-10 Panasonic Intellectual Property Management Co., Ltd. Copyright protection data processing system and reproduction device
CN101632088B (zh) * 2007-02-23 2012-05-23 松下电器产业株式会社 著作权保护数据处理系统以及再现装置
JP4962050B2 (ja) * 2007-03-05 2012-06-27 富士通株式会社 情報受け渡し装置、方法、プログラム及び記憶媒体
US20090253414A1 (en) * 2008-04-03 2009-10-08 Cequint, Inc. Systems and methods for deployment and sale of advanced calling features
US20090287331A1 (en) * 2009-07-27 2009-11-19 Shoma Inc. Systems and Methods for Bio-Refinery Application Management and Process Improvement
US8839444B2 (en) * 2011-03-31 2014-09-16 Kaspersky Lab Zao Automatic analysis of software license usage in a computer network
JP5811265B2 (ja) * 2012-02-29 2015-11-11 富士電機株式会社 プログラマブルコントローラ、プログラマブルコントローラシステム、及びプログラマブルコントローラの提供システム
JP7183873B2 (ja) * 2019-03-05 2022-12-06 京セラドキュメントソリューションズ株式会社 電子機器及び電子機器の制御方法
CN111190614B (zh) * 2019-12-26 2023-12-19 北京威努特技术有限公司 一种软件安装的方法及计算机设备
US11422977B1 (en) * 2021-10-15 2022-08-23 Morgan Stanley Services Group Inc. High-compression, high-volume deduplication cache
CN115357869A (zh) * 2022-10-19 2022-11-18 安徽华云安科技有限公司 一种基于多路径配置的软件激活方法和装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4588991A (en) * 1983-03-07 1986-05-13 Atalla Corporation File access security method and means
US4888798A (en) * 1985-04-19 1989-12-19 Oms, Inc. Modular software security
US5021997A (en) * 1986-09-29 1991-06-04 At&T Bell Laboratories Test automation system
EP0268139A3 (en) * 1986-11-05 1991-04-10 International Business Machines Corporation Manipulating rights-to-execute in connection with a software copy protection mechanism
US5155847A (en) * 1988-08-03 1992-10-13 Minicom Data Corporation Method and apparatus for updating software at remote locations
US5166886A (en) * 1989-07-31 1992-11-24 Molnar Charles E System to demonstrate and sell computer programs
JP3073590B2 (ja) * 1992-03-16 2000-08-07 富士通株式会社 電子化データ保護システム、使用許諾者側装置および使用者側装置
AU678985B2 (en) * 1992-09-21 1997-06-19 Uniloc Corporation Pty Limited System for software registration
US5327563A (en) * 1992-11-13 1994-07-05 Hewlett-Packard Method for locking software files to a specific storage device
US5341429A (en) * 1992-12-04 1994-08-23 Testdrive Corporation Transformation of ephemeral material

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8584249B2 (en) 2003-05-16 2013-11-12 Phu Sang Ltd., Llc System for preventing unauthorized use of digital content

Also Published As

Publication number Publication date
AU1485695A (en) 1995-11-02
CN1132110C (zh) 2003-12-24
DE69531077T2 (de) 2004-05-19
US5689560A (en) 1997-11-18
KR950029928A (ko) 1995-11-24
CA2145925A1 (en) 1995-10-26
CN1115059A (zh) 1996-01-17
CA2145925C (en) 1998-12-08
DE69531077D1 (de) 2003-07-24
EP0679979A1 (en) 1995-11-02
EP0679979B1 (en) 2003-06-18
JPH07295803A (ja) 1995-11-10

Similar Documents

Publication Publication Date Title
KR100200444B1 (ko) 소프트웨어 객체 배포 방법
KR100200443B1 (ko) 소프트웨어 객체 배포 방법
KR100188505B1 (ko) 화일 액세스 보호방법 및 컴퓨터 액세스 가능 메모리 매체
KR100200445B1 (ko) 파일 액세스 보안유지 방법 및 장치
JP3914430B2 (ja) ソフトウェア・オブジェクトの配布を可能にするための方法および装置
US6332025B2 (en) Software distribution system and software utilization scheme for improving security and user convenience
US7080043B2 (en) Content revocation and license modification in a digital rights management (DRM) system on a computing device
US20050060568A1 (en) Controlling access to data
GB2404536A (en) Protection of data using software wrappers
JP2004157864A (ja) コンテンツ配信システム
KR100440037B1 (ko) 문서보안 시스템
US20050060544A1 (en) System and method for digital content management and controlling copyright protection
WO1998027494A1 (fr) Procede de gestion de document electronique

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
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20060216

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee