KR100200445B1 - 파일 액세스 보안유지 방법 및 장치 - Google Patents

파일 액세스 보안유지 방법 및 장치 Download PDF

Info

Publication number
KR100200445B1
KR100200445B1 KR1019950009728A KR19950009728A KR100200445B1 KR 100200445 B1 KR100200445 B1 KR 100200445B1 KR 1019950009728 A KR1019950009728 A KR 1019950009728A KR 19950009728 A KR19950009728 A KR 19950009728A KR 100200445 B1 KR100200445 B1 KR 100200445B1
Authority
KR
South Korea
Prior art keywords
file
key
called
encrypted
called file
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1019950009728A
Other languages
English (en)
Inventor
이 쿠퍼 토마스
에프 프레이어 로버트
Original Assignee
포만 제프리 엘
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포만 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포만 제프리 엘
Application granted granted Critical
Publication of KR100200445B1 publication Critical patent/KR100200445B1/ko
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1063Personalisation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress

Landscapes

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

Abstract

본 발명은 데이타 처리 시스템의 컴퓨터 액세스 가능 메모리 매체에 저장된 특정 파일에 대한 액세스 보안유지 방법 및 장치를 제공한다. 파일 관리 프로그맨은 데이타 처리 시스템의 운영체제 구성요소로서 제공된다. 적어도 하나의 암호화된 파일 및 적어도 하나의 암호화되지 않은 파일이 컴퓨터 액세스가능 메모리 매체에 저장된다. 암호화되지 않은 보안 스터브는 각각의 암호화된 파일과 연관된다. 보안 스터브는 적어도 부분적으로 실행가능한 코드를 구상한다. 파일 관리 프로그램은 컴퓨터 액세스가능 메모리 매체에 저장된 호출 파일을 호출하는데 사용된다. 파일 관리 프로그램은 호출된 파일이 연관된 암호화되지 않은 보안 스터브를 갖는지를 판정한다. 호출된 파일이 연관된 암호화되지않은 보안 스터브를 갖는지의 여부에 따른 특정 방식으로 호출된 파일이 처리된다.

Description

파일 액세스 보안유지 방법 및 장치
제1도는 소프트웨어 제품의 시험 기간 사용을 가능하게 하는 바람직한 기법의 구현에 사용될 수 있는 독립형 데이타 처리 시스템, 전화기 및 각종 컴퓨터 액세스가능 메모리 매체를 도시한 도면.
제2도는 소프트웨어 제품의 시험 기간 사용을 가능하게 하는 본 발명의 기법을 사용할 수 있는 분산 데이타 처리 시스템을 도시한 도면.
제3도는 본 발명에 따라 장치 식별을 발생하는데 사용될 수 있는 데이타 처리 시스템의 속성을 나타내는 블럭도.
제4도는 소프트웨어 객체를 암호화하는 루틴을 도시하는 블럭도.
제5도는 본 발명의 기법에 따라 소오스(소프트웨어 업자) 및 사용자(고객)사이의 정보 교환을 도시하는 도면.
제6도는 본 발명에 따라 사용자 인터페이스 쉘을 생성하는 데 사용되는 단계를 나타내는 흐름도.
제7도는 본 발명에 따라 업자와 고객사이의 대화를 나타내는 흐름도.
제8도, 제9도, 제10a도 및 제10b도는 본 발명에 따라 시험 기간 사용을 용이하게 하는 사용자 인터페이스 스크린을 예시한 도면.
제11도는 일시 액세스 키를 개시하는데 사용되는 사용자 인터페이스를 예시한 도면.
제12도는 장치 식별을 발생하는 바람직한 기법을 예시한 블럭도.
제13도는 본 발명에 따라 장치 식별을 암호화하는데 사용되는 암호화 동작을 도시한 블럭도.
제14도는 본 발명에 따라 제품 키를 발생하는 바람직한 기법을 나타내는 블럭도.
제15도는 하나 혹은 그 이상의 소프트웨어 객체를 암호해독하는데 사용될 수 있는 실제 키를 발생하기 위해 일시 제품 키를 사용하는 기법을 도시한 블럭도.
제16도 및 제17도는 제15도의 블록도에 따라 도출된 실제 키의 유효여부를 검증하는 바람직한 기법을 도시한 도면.
제18도는 일시 키를 포함하는 정보를 갖는 키 파일을 암호화하는 바람직한 루틴을 나타내는 블럭도.
제19도는 본 발명에 따라, 암호화된 파일내의 암호화 헤더를 처리하는 바람직한 기법을 나타내는 블럭도.
제20도는 암호화된 소프트웨어 객체를 암호해독하는데 사용될 수 있는 실제 키를 도출하기 위해 사용자 제어 데이타 처리 시스템내의 다수의 입력을 사용하는 기법을 블럭도로 도시한 도면.
제21도는 제20도에 따라 도출된 실제 키를 사용하는 암호해독 동작을 도시한 도면.
제22도는 실제 키의 유효성을 판정하기 위해 사용되는 비교 동작을 나타내는 블럭도.
제23도는 검증된 실제 키를 사용하는 암호해독 동작을 도시하는 도면.
제24,25,26,27 및 28도는 본 발명에 따른 암호화 헤더의 사용을 나타내는 도면.
제29도는 암호화된 소프트웨어 객체의 시험 기간 사용을 제공하는 바람직한 기법을 도시한 흐름도.
제30도 및 제31도는 분산 데이타 처리 시스템내에서의 시험 기간 사용동작을 수행하는데 사용될 수 있는 임포트/엑스포트 동작을 나타내는 도면.
제32도 및 제33도는 제30도 및 제31도에 도시된 임포트/엑스포트 동작의 또 다른 실시예를 도시한 도면.
제34도 및 제35도는 임포트/엑스포트 동작을 수행하는 다른 기법을 도시한 블럭도.
* 도면의 주요부분에 대한 부호의 설명
10 : 데이타 처리 시스템 74 : 메모리 제어기
78 : 인터럽트 제어기 102 : 디스크 제어기
108 : 분산 데이타 처리 시스템 203 : 실제 키
201 : 소프트웨어 객체 205 : 암호화 엔진
207 : 암호화된 소프트웨어 객체 377 : 제품 키
379 : 실제 키 발생기 393 : 생성 키 파일
397 : 키 파일 405 : 암호화된 키 파일
421 : 유일한 시스템 속성 413 : 암호해독 엔진
499 : 헤더 651 : 소오스 컴퓨터
655 : 장치 식별 파일 707 : 목표 컴퓨터
807 : 엑스포트 키 디스켓 1665 : 전달 키
1701 : 목표 컴퓨터 속성
본 발명은 일반적으로 소프트웨어 객체(software object)에 대한 액세스의 보안유지(securing) 기법에 관한 것으로 특히, 소프트웨어 객체에 대한 액세스의 임시 암호화 및 제한(temporarily encrypting and restricting) 기법에 관한 것이다.
혁신적인 소프트웨어 제품을 개발하여 판매한 회사는 엄청난 이익을 성취하고 있으며, 이러한 경향은 시간이 지날수록 더 많은 소비자가 컴퓨터를 사용하게 됨에 따라 더욱 확대될 것이다. 컴퓨터 소프트웨어는 판매하기가 어려운데 그 이유는 잠재적인 소비자가 각종 소프트웨어 제품을 시험가동(browse)할 수 있는 기회가 거의 없기 때문이다. 전형적으로, 소프트웨어 제품은 상자에 포장되어 있으므로 소비자가 그 제품을 구입하기 전에는 실제적으로 사용해 볼 수가 없다. 이러한 점은 소비자가 소프트웨어 제품에 대해 갖는 큰 불만 사항중의 하나이다. 왜냐하면, 소비자는 종종 다수의 소프트웨어 제품을 구입해본 후에야 비로서 적합한 제품을 찾을 수 있기 때문이다.
소프트웨어 무단 복제(piracy)가 난무하는 것도 이러한 점에 상당 부분 기인한다. 잠재적 소프트웨어 구매자는 종종 친구 혹은 관련 업체로부터 일시 사용을 위해 소프트웨어를 대여한다. 이러한 일시적 대여는 종종 오랜 기간으로 연장되며, 이 잠재적 구입자는 결코 소프트웨어 제품의 정본을 구입하지 않고 대여한 복사본을 사용할 수 있다.
영화관의 영화 예고편 및 TV의 광고처럼 통상의 통신 채널(common communication channel)을 통하여 소프트웨어 제품의 견본을 광고할 수는 없으므로 소프트웨어 업자는 새로운 제품을 광고하고 소비자의 관심을 끌기 위해서 인쇄물 및 직접 메일 광고(direct mail advertisement)를 이용해야 한다. 불행하게도, 인쇄물은 종종 제품의 특성을 정확히 전달할 수 없는데, 그 이유는, 정적인 인쇄물로는 사용자와 소프트웨어 제품 사이의 상호작용이 시뮬레이션(simulation)될 수 없기 때문이다. 소비자가 소프트웨어 제품 구입을 결정하기 전에 이 제품을 액세스할 수 있고 또한 이러한 액세스로 인해 소프트웨어 제품이 불법적으로 사용될 염려가 없다면, 컴퓨터 소프트웨어 제품의 생산자 및 소비자 모두에게 이익이 될 것이다.
소프트웨어 업자는 암호화된 소프트웨어 제품을 배포 (distribute)하므로써 소비자에게 제품을 구입하기 전에 사용해볼 수 있는 기회를 부여할 수도 있을 것이다. 그러나, 이 제품에 대한 사용자의 액세스를 허용하는 키를 배포해야 한다. 업자는 이후 전적으로 잠재적 구매자의 정직성 및 인격에 의존할 수 밖에 없다. 부도덕하거나 정직하지 못한 사용자는 자신의 친구 혹은 관련 업체에 키를 넘겨주어 이들이 불법적인 액세스를 행할 수도 있다. 또한 부도덕한 사용자가 공중이 액세스할 수 있는 게시판 (publicly-accessible bulletin boards)에 이 키를 공개하므로써 다수의 사용자가 불법적인 사용자가 될 수도 있다. 전형적으로, 이러한 불법 행위는 쉽게 근절될수 없으며, 따라서 업자는 잠재적 구매자에게 시험 사용을 위해 제품을 배포하는 것을 주저할 수밖에 없게 된다.
따라서, 본 발명의 일 목적은 일시 사용을 넘어선 불법적인 사용 및 불법 복제의 위험없이 사용자가 일시적으로 시험적 소프트웨어 이용을 할 수 있도록 업자가 잠재적 구매자에게 소프트웨어 객체를 배포하는 장치 및 방법을 제공하는 데 있다. 바람직하게 이 목적은 컴퓨터 액세스가능 메모리(computer-accessible memory)상에 파일 관리 프로그램(file management program)과 함께 소프트웨어 객체를 제공하므로써 성취된다. 바람직하게, 소프트웨어 객체는 하나 혹은 그 이상의 암호화 동작을 통해 반전가능하게(reversibly) 그 기능이 제한된다. 컴퓨터 액세스가능 메모리 매체는 통상의 우편 및 배달 서비스를 통해 업자에서 잠재적 구매자로 전달된다. 잠재적 구매자는 매체를 수신했을 때, 파일 관리 프로그램을 사용자 제어 데이타 처리 시스템에 적재하고 이 데이타 처리 시스템의 운영 체제와 연관시킨다. 이후, 컴퓨터 액세스가능 메모리 매체는 이 사용자 제어 데이타 처리 시스템을 사용하여 판독된다. 파일 관리 프로그램은 사용자 제어 데이타 처리 시스템에 의해 실행되고, 소프트웨어 객체에 대한 액세스를 소정의 일시 시험 기간 동안의 사용으로 제한하는 역할을 한다. 일시 시험 사용 모드 동안, 소프트웨어 객체는 이 소프트웨어 객체의 가역적인 기능 제한을 반전시키므로써 일시적으로 사용가능하게 된다. 이러한 동작은 바람직하게 소프트웨어 객체가 사용자 제어 데이타 처리 시스템에 의해 호출되었을 때 암호화된 소프트웨어 객체를 암호해독하므로써 성취될 수 있다. 파일 관리 프로그램은 바람직하게 복제 동작을 차단하며, 따라서 이 암호화된 소프트웨어 객체는 운영체제에 의해 이 소프트웨어 객체가 호출되었을 때만 일시적으로 암호해독된다. 잠재적 사용자가 이 소프트웨어 객체를 구매하기로 결정하면, 이 소프트웨어 객체는 영구 사용 동작 모드로 진입하며, 이 소프트웨어 객체의 기능적 제한이 영구적으로 반전되어, 잠재적 사용자는 이 소프트웨어 객체를 자유로이 사용할 수 있다. 이로써 잠재적 사용자는 소프트웨어를 시험 가동하여, 이소프트웨어가 사용자 자신이 원하는 객체인지를 결정할 수 있게 된다.
파일 관리 프로그램은 사용자 제어 데이타 처리 시스템의 운영 체제를 지속적으로 감시하여 운영 체제 입력 호출 및 출력 호출을 감시한다. 파일 관리 시스템은 사용자 제어 데이타 처리 시스템의 운영 체제가 시험 가동 대상 소프트웨어 객체를 요구할 때를 식별한다. 이후, 파일 관리 시스템은 이 소프트웨어 객체와 연관된 일시 액세스 키를 인출하고, 이어서 일시 액세스 키를 검사하여 이 키가 유효한지를 판정한다. 다음, 파일 관리 시스템은 이 소프트웨어 객체의 기능적 제한을 반전하고, 이를 데이타 처리 시스템으로 전송하여 처리한다.
본 발명의 다른 목적은 업자에게 사용자에게 소프트웨어 객체를 배포하는 장치 및 방법을 제공하는 데 있다. 소프트웨어 객체는 긴 수명 암호 키(long-lived encryption key)를 사용하여 암호화되며, 업자에서 사용자에게로 전송된다. 암호화된 소프트웨어 객체는 특정한 시스템 구성(particular system configuration)을 구비한 사용자 제어 데이타 처리 시스템으로 적재된다. 적어도 부분적으로는 사용자 제어 데이타 처리 시스템의 특정 구성에 기초한 장치 식별 번호(numerical machine identification)가 이후 도출된다. 다음, 적어도 부분적으로는 장치 식별 번호 및 긴 수명 암호화 키에 기초한 일시 키가 도출된다. 긴 수명 키 발생기가 제공되어 일시 키를 수신하고 긴 수명 암호화 키를 발생한다. 일시 키는 사용자가 규정된 기간동안 소프트웨어 객체를 액세스하기 위해 긴 수명 암호화 키를 발생하도록 한다. 이들 동작은 다수의 모드에서 동작가능한 파일 관리 프로그램에 의해 주로 수행된다. 이들 모드에는 설정 동작 모드, 장치 식별 동작 모드 및 일시 키 도출 동작 모드가 포함된다. 설정 동작 모드동안, 파일 관리 프로그램은 사용자 제어 데이타 처리 시스템으로 적재되어 사용자 제어 데이타 처리 시스템의 운영 체제와 연관된다. 장치 식별동작 모드동안, 파일 관리 프로그램이 사용되어 적어도 사용자 제어 데이타 처리 시스템의 속성에 기초한 장치 식별 번호가 도출된다. 일시 키 도출 동작 모드동안, 적어도 부분적으로 장치 식별 번호에 기초한 일시 키가 도출된다. 파일 관리 프로그램은 또한 시험 동작 모드를 허용하며, 이 모드에서는 파일 관리 프로그램이 사용자 제어 데이타 처리 시스템에 의해 구비하여 실행되어, 일시 키에 의한 소프트웨어 객체에의 액세스를 정의된 기간동안으로 제한한다. 이 기간 동안 일시 키를 포함하는 적어도 하나의 입력을 수신하면 긴 수명 키 발생기는 사용자 제어 데이타 처리 시스템에서 사용되어 긴 수명 키를 제공한다.
본 발명의 또 다른 목적은 데이타 처리 시스템에서 컴퓨터 액세스가능 메모리 메체에 저장된 특정 파일에 대한 액세스를 보안유지(securing)하는 방법 및 장치를 제공하는데 있다. 파일 관리 프로그램이 데이타 처리 시스템의 운영 체제 구성요소로서 제공된다. 컴퓨터 액세스가능 메모리 매체에 적어도 하나의 암호화된 파일 및 적어도 하나의 암호화되지 않은 파일을 포함하는 다수의 파일이 저장된다. 각 암호화 파일에 대해서, 사전선택된 부분이 컴퓨터 메모리에 기록되고, 이 파일을 암호해독하는데 사용될 수 있는 정보를 포함하는 암호해독 블럭이 발생되며, 이 암호해독 블록은 컴퓨터 메모리의 어느 부분에 기록된 상기 사전선택된 부분을 대신하여 이 파일에 통합된다. 파일 관리 프로그램은 컴퓨터 액세스가능 메모리 매체에 저장되어 있는 호출된 파일에 대한 데이타 처리 동작 호출(data processing operation calls)을 감시하며, 파일 관리 프로그램은 호출된 파일이 이에 연관된 암호해독 블록을 갖는 지를 판정한다. 파일 관리 프로그램은 호출된 파일이 연관된 암호해독 블럭을 갖는 지의 여부에 의존하는 특정 방식으로 호출된 파일을 처리한다. 암호해독 블럭을 통합하여도 암호화된 파일의 크기는 변화하지 않으며, 따라서 특정 유형의 처리 에러의 발생이 차단된다. 시험 기간동안, 암호화된 파일은 암호화된 상태로 보존되며 복제될 수 없다. 잠재적인 사용자가 소프트웨어 제품을 구입하기로 하면, 영구 키가 제공되어 암호해독 블럭 대신 사전 선택된 부분을 대체한다. 일단, 암호해독 블럭이 제거되면, 암호화된 파일은 암호해독되어 구입자가 자유로이 사용할 수 있다. 바람직하게, 파일 관리 프로그램을 이용하여, 파일이 운영체제에 의해 호출될 때, 이를 인터셉트하며, 암호해독 블럭을 사용하여 키 파일 명칭을 도출하고 호출된 파일을 판독하는데 사용된다. 각각의 암호화된 파일의 암호해독 블럭은 유효 세그먼트를 구비하며, 이 세그먼트는 파일 관리 프로그램에 의해 암호해독되고 상기 키가 특정 파일을 암호해독할 수 있는지의 여부를 판정하기 위해 호출된 파일의 선택된 세그먼트와 비교된다. 암호해독된 유효 세그먼트가 알려진 순수 텍스트 유효 세그먼트(known clear text validation segment)와 일치하면, 파일은 이후 동적으로 암호해독되어 차후의 처리를 위해 전달된다.
본 발명의 또 다른 목적은 데이타 처리 시스템에서 컴퓨터 액세스가능 메모리 매체에 저장된 특정 파일에 대한 액세스를 보안유지하는 방법 및 장치를 제공하는 데 있다. 파일 관리 프로그램이 데이타 처리 시스템의 운영 체제 구성요소로서 제공된다. 데이타 처리 시스템에 사용가능한 컴퓨터 액세스가능 메모리 매체에는 적어도 하나의 암호화된 파일 및 적어도 하나의 암호화되지 않은 파일이 저장된다. 암호화된 파일은 적어도 부분적으로 실행가능한 코드로 구성된, 암호화되지 않은 보안 스터브(security stub)와 연관된다. 파일 관리 프로그램은 컴퓨터 액세스가능 메모리 매체에 저장된 호출된 파일에 대한 데이타 처리 시스템 호출을 감시하고, 호출된 파일이 연관된 암호화되지 않은 보안 스터브를 갖는 지를 판정하며, 호출된 파일이 연관된 암호화되지 않은 보안 스터브를 갖는지의 여부에 의존하여 특정한 방식으로 호출된 파일을 처리하는데 사용된다. 보다 상세히 설명하면, 호출된 파일이 이에 연관된 암호화되지 않은 보안 스터브를 갖지 않는다고 판정되면 호출된 파일의 처리가 허용된다. 그러나, 호출된 파일이 이에 연관된 암호화되지 않은 보안 스터브를 갖는다고 판정되면, 호출된 파일의 처리 허용 여부에 관한 판정이 내려지기 전에 다음의 사항이 검사되어야 한다. 먼저, 암호화되지 않은 보안 스터브가 검사되어 암호해독 동작을 가능하게 하는 정보를 획득한다. 이후 암호해독 동작이 수행된다. 최종적으로, 호출된 파일이 후속 처리를 위해 전달되도록 허용된다. 바람직하게, 호출된 파일은 처리를 위해 운영 체제로 전달됨에 따라 동적으로 암호해독 된다. 또한, 암호화되지 않은 보안 스터브는 호출된 파일의 실행전에 호출된 파일로부터 분리된다. 그러나, 암호화되지 않은 보안 스터브가 우연히 호출된 파일에 부착된 채로 남는다면, 처리 동작은 중단되어야 하며, 프로세서가 잠겨지는 것(locked-up)을 방지하기 위해 메시지가 전송되어야 한다.
본 발명의 또 다른 목적은 소오스에서 사용자로 소프트웨어 객체를 배포하는 장치 및 방법을 제공하는 데 있다. 컴퓨터 액세스가능 메모리 매체는 소오스에서 잠재적 사용자로 배포된다. 이 컴퓨터 액세스가능 메모리 매체는 소정 암호화 엔진 및 긴 수명 비밀 키를 사용하여 암호화된 소프트웨어 객체를 포함한다. 안터페이스 프로그램이 제공되어 업자와 사용자 사이의 상호작용 즉, 대화를 용이하게 한다. 인터페이스 프로그램은 사용자 제어 데이타 처리 시스템의 적어도 하나의 소정 속성을 사용하여 장치 식별을 발생하는 장치 식별 모듈을 포함하며, 또한 최소한 일시 키를 입력으로 수신하고 긴 수명 비밀 키를 출력으로 발생하는 긴 수명 비밀 키 발생기를 포함한다. 검증 모듈이 제공되고, 이는 일시 키를 테스트하여 그 유효성을 결정한다. 소프트웨어 객체 소오스는 일시 키 발생기를 유지하며, 이 일시 키 발생기는 최소한 장치 식별을 입력으로서 수신하고 일시 키의 출력을 발생한다. 인터페이스 프로그램은 사용자 제어 데이타 처리 시스템으로 적재된다. 사용자 식별 모듈은 사용자 제어 데이타 처리 시스템의 적어도 하나의 소정 속성을 검사하고, 장치 식별을 발생하기 위해 사용된다. 소오스와 사용자 사이의 대화동안, 장치 식별을 보안이 유지되지 않는 통신 채널(insecure communication channel)상으로 전달된다. 소프트웨어객체의 소오스에서, 일시 키는 일시 키 발생기에 대한 입력으로서 장치 식별 (및 다른 정보)을 사용하여 발생된다. 소오스와 사용자 사이의 대화동안, 일시 키는 전형적으로 보안이 유지되지 않는 통신 채널상으로 전달된다. 다음, 검증 모듈은 일시 키의 유효성을 판정하기 위해 사용된다. 이어서, 긴 수명 비밀 키 발생기가 사용되어 일시 키를 수신하고 긴 수명 비밀 키를 발생하므로써 소프트웨어 객체의 암호를 해독하고 소프트웨어 객체에 일시적으로 액세스한다. 사용자에게는 또한 임포트 모듈 및 엑스포트 모듈(import module and export module)이 제공되며, 이들 모듈은 분산 데이타 처리 시스템내의 하나의 장치에서 다른 장치으로 암호화된 소프트웨어 객체, 키 파일 및 장치 식별 파일을 전송하는데 휴대용 메모리 매체가 사용될 수 있도록 허용하고, 이 경우 일시 키를 사용하면 소프트웨어 객체에 대한 일시 시험 액세스가 허용된다.
이하 본 도면을 참조하여 본 발명을 상세히 설명한다.
소프트웨어 제품을 시험 기간(trail period)동안 사용할 수 있게 하는 본 발명의 장치 및 방법은 제1도에 예시된 것과 같은 독립형 PC(stand-alone PCs), 혹은 제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)이 뉴욕 아몬크(Armonk, Newyork)에 소재한 IBM 사에 의해 제조된 모델 80 PS/2 와 같은 이른바 퍼스널 컴퓨터를 사용하여 구현될 수도 있음을 쉽게 이해할 것이다.
본 발명은 독립형 데이타 처리 시스템을 사용하여 구현될 수도 있으나, 또한 분산 데이타 처리 시스템을 사용하여 구현될 수도 있으며, 이 경우 본 발명의 임포트 루틴(import routine) 및 엑스포트 루틴(export routine)이 사용되어 분산 데이타 시스템내에 존재하는 특정 데이타 처리 장치사이에서 휴대용 메모리 매체(디스켓 혹은 테이프)를 통해 하나 혹은 그 이상의 암호화된 파일, 이들 파일의 암호화된 키 파일 및 연관된 파일 관리 프로그램(file management programs)을 전송한다. 본 발명의 임포트 및 엑스포트 루틴이 이하 상세히 기술되지만, 기본적 분산 데이타 시스템을 이해하는 것이 중요하다.
제3도는 다수의 데이타 처리 시스템 속성을 예시한 블럭도이며, 이 속성은 특정 데이타 처리 시스템을(이 시스템이 독립형이건 분산 데이타 처리 시스템내의 노드(node)이건) 유일하게 식별하고, 또한 장치 식별 값(machine identification value)을 발생하는데 사용될 수 있으며, 이 장치 식별 값은 일시 액세스 제품 키(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)와 같은 단말 장치가 데이타 처리 시스템의 하나 혹은 그 이상의 속성을 도출하는데 사용될 수 있다. 장치 식별 값의 도출은 이하 상세히 기술된다. 본 발명은 사용자에게 소프트웨어 프로그램을 배포하는 효율적인 방법에 관한 것으로, 이 방법은 사용자가 프로그램을 구입하여 이 프로그램을 합법적으로 사용할 수 있는 권리를 가지기 전에 이 프로그램을 시운전 해볼 수 있는 수단을 사용자에게 제공한다. 이 개념에 따르면, 완전한 프로그램이 디스켓 혹은 CD-ROM과 같은 컴퓨터 액세스 가능 메모리 매체(computer accessible memory media)에 의해 잠재적 사용자에게 배포된다. 이 개념은 사용자가 배포된 매체에서 프로그램을 액세스할 수 있도록 허용하는 키를 발생하는 것이다. 이러한 환경에서, 파일 관리 프로그램은 사용자가 다양한 제품을 시운전하도록 허용하는 다수의 인터페이스를 제공한다. 인터페이스는 배포된 매체에 포함된 소프트웨어 제품의 주문(ordering) 및 잠금해제(unlocking)를 허용한다. 소프트웨어 제품의 잠금해제는 일시 액세스(암호 해독) 키의 수신, 검증 및 기록(reception, validation and recording)에 의해 성취된다.
파일 관리 프로그램은 사용자 제어 데이타 처리 시스템(user-controlled data proccessing system)내에 상주하여 사용자의 컴퓨터에서 운영 체제의 일부가 된다. 이러한 (PC 도스 환경내의)상주 프로그램의 예로 종결 및 잔류(terminate and stay resident) 동작을 위한 상주 프로그램 TSR이 있으며,이 프로그램은 DOS 파일 입력 및 출력 동작을 인터셉트(intercept)하고 제어한다. 일시 액세스 키가 사용자에게 제공될 때, 이전에 시험 동작 모드에서 시스템 파일이 사용되었는지의 여부에 대해 점검된다. 제품이 시험 동작 모드로 사용되지 않았다면, 일시 키는 저장된다. 일단 시험 동작 키가 존재하면, 암호화된 어플리케이션은 파일 관리 프로그램에 의해 개시될때만 실행될 수 있다. 파일 관리 프로그램은 어플리케이션이 암호화되고 유효 시험 동작 모드 키가 특정 동작에 대해 존재한다는 것을 인식할 것이다. 유효 시험 동작 모드 키는 기간 만료(expire)되지 않은 키이다. 유효 시험 동작 모드는 타이머 혹은 카운터에 의해 정의될 수 있다. 타이머가 사용되어 소정 기간을 카운트 다운(count down)할 수 있으며, 이와 달리 카운터가 사용되어 시험 모드 동작동안 허용된 소정의 시험 세션(session)의 수를 감소시킬 수 있다. 키가 유효하다면, 파일 관리 프로그램은 TSR과 직접적으로 통신하며, 특정 암호화된 어플리케이션에 대한 시험 모드동작을 가능하게 한다. 그후, 파일 관리 프로그램은 암호화된 어플리케이션을 개시(kick off)한다. 사용자 제어 데이타 처리 시스템의 운영 체제에 상주하는 코드가 운영 체제에 대한 제어를 유지한다. 이 코드는 시험 동작 모드의 사용을 감시하여, 파일이 암호 해독(decrypt)되고 메모리에 적재(loading)되는 것을 허용한다. 이 동작은 운영 체제를 사용하여 어느 어플리케이션이 이 데이타를 액세스하려는지를 판정하고 이 데이타에 대한 액세스 권한이 있는 어플리케이션만이 이 데이타를 액세스하도록 허용함으로써 수행된다.
제4도는 소프트웨어 제품을 암호화하는 루틴을 예시한 블럭도이다. 소프트웨어 객체(201)를 구성하는 2진 문자는 암호화 엔진(205)에 입력으로서 제공된다. 실제 키(203)는 암호화 엔진(205)에서 암호화 키로 사용된다. 암호화 엔진(205)의 출력은 암호화된 소프트웨어 객체(207)이다. 암호화 엔진(205)은 공지의 DES 알고리즘같은 임의의 통상적인 암호화 동작일 수 있으며, 이와 달리, 소프트웨어 객체(201)를 무작위화(randomize)하는 배타적인-OR 동작(exclusive-OR operation)이 될 수도 있다.
제5도는 본 발명의 기법에 따른 소오스(209)(소프트웨어 업자)와 사용자(211)(잠재적 고객)사이의 정보 교환을 예시한 도면이다. 소오스(209)와 사용자(211)사이의 화살표는 업자(209)와 고객(211) 사이의 객체 혹은 정보의 교환을 나타낸다. 화살표(213)에서, 컴퓨터 액세스가능 메모리 매체는 소오스(209)에서 사용자(211)로 직접 전송된다. 이 전송은 미합중국 우편 배달(mail delivery), 배달회사 배달(courier delivery), 익스프레스 서비스 배달(express service delivery) 혹은 책 및 잡지와 같은 인쇄물에 의한 배달의 형태를 띌 수 있다. 이와 달리, 전자 우편(electronic mail) 혹은 기타 전송 기법을 사용하여 전자 서류(electronic documents)가 소오스(209)로부터 사용자(211)에게 전달될 수 있다. 화살표(215)에서, 바람직하게 사용자(211)의 데이타 처리 시스템을 식별하는 유일한 장치 식별 번호를 포함하는 사용자 특정 정보(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 locale selection)을 행한다. 다수의 소프트웨어 제품은 한 묶음이 되어(즉, 번들로) 단일 컴퓨터 액세스가능 메모리 매체에 의해 사용자(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도는 주문 형식 사용자 인터페이스(order form user interface)(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)을 포함한다. 사용자는 그래픽 포인팅 장치의 통상적인 포인팅 및 클릭 동작을 사용하여 하나 혹은 그 이상의 동작을 선택할 수 있다. 팩스 아이콘은 팩시밀리 장치 혹은 팩시밀리 보드를 사용하여 업자와의 대화를 용이하게 한다. 인쇄 아이콘은 사용자가 소프트웨어 업자와 대화한 기록을 복제하여 종이에 기록한다.
고객, 컴퓨터 액세스가능 메모리 매체 및 고객이 사용하는 컴퓨터 시스템은 고객 식별(273), 매체 식별(269) 및 장치 식별(271)에 의해 식별된다. 매체 식별은 잠재적 사용자에게 전달되기 전에 컴퓨터 액세스가능 메모리에 할당된다. 이 식별은 고정되며, 변하지 않는다. 고객 식별(273)은 잠재적 사용자와 업자 사이의 대화로부터 도출된다. 바람직하게, 고객은 전화 대화에서 질문에 대한 대답을 제공하고, 업자는 고객 식별(273)을 제공하며, 이 식별은 특정 고객에 대해 유일하다. 장치 식별(271)은 컴퓨터 액세스가능 메모리 매체상에 상주하는 파일 관리 프로그램을 사용하여 자동적으로 도출되며, 이 식별은 잠재적 고객이 사용하는 특정 데이타 처리 시스템에 대해 유일하다. 잠재적 고객은 전형적으로 전화에 의한 대화를 통해 업자에게 장치 식별을 제공할 것이며, 팩스 대화 혹은 정규적인 우편 대화를 통해서도 이 식별을 제공할 수 있다.
제9도는 주문 정보 대화 인터페이스(order form dialog interface)(275)를 나타낸다. 이 인터페이스는 잠재적 고객을 유일하게 식별하는 정보의 도출을 용이하게 하며, 성명 필드(name field)(277), 주소 필드(address field)(279), 전화 번호 필드(281), 팩시밀리 번호 필드(283), 지불 방법 필드(285), 배달 방법 필드(shipping method field)(287), 회계 번호 필드(account number field)(289), 만료 일자 필드(expiration data field), 부가세 ID 필드(value added tax ID field)(293)를 포함한다. 주문 형식 대화 인터페이스(275)는 또한 인쇄 버턴(295) 및 취소 버턴(297)을 포함하며, 이들 버턴은 잠재적 사용자가 이들 필드로부터 정보를 삭제하거나 혹은 인터페이스 스크린을 종이에 기록하여 출력하도록 한다.
제10a도 및 제10b도는 잠금해제 대화 인터페이스 스크린(301, 303)을 예시한다. 사용자는 그래픽 포인팅 장치를 사용하여, 잠금해제 리스트(305)의 구성요소인 내용 아이템 번호 필드(307) 및 서술 필드(309)에 의해 식별된 하나 혹은 그 이상의 아이템을 선택한다. 인터페이스는 또한 고객 ID 필드(313) 및 장치 ID 필드(315)를 포함한다. 바람직하게, 업자는 전화, 팩스 혹은 우편으로 고객에게 고객 식별을 제공한다. 바람직하게, 고객은 전화, 팩스 혹은 우편을 통해 장치 식별 필드(315)내의 장치 식별을 업자에게 제공한다. 일단 이 정보가 시험 기간 동작동안 요구되는 제품의 식별과 함께 교환되면, 키 필드(311)에 위치한 일시 액세스 키가 제공된다. 이 키는 일시적으로 고객에 의해 식별되고 선택된 소프트웨어 제품을 잠금해제할 것이다. 폐쇄 버턴(319), 저장 버턴(save button)(317) 및 도움말 버턴(321)이 또한 이 인터페이스 스크린내에 제공되어 사용자 대화를 용이하게 한다.
제10b도는 단일 제품 잠금해제 인터페이스 스크린(303)을 예시한다. 이 인터페이스 스크린은 장치 식별 필드(313), 고객 식별 필드(315), 및 키 필드(311)를 포함한다. 잠금해제된 제품은 이 인터페이스에서 식별될 필요는 없다. 왜냐하면, 대화는 단지 단일 제품에만 관계하며, 사용자는 일시 시험 기간 동작이 요구하는 제품을 알고있다고 가정하기 때문이다. 저장 버턴(317), 취소 버턴(319) 및 도움 버턴(321)이 또한 이 인터페이스에 제공되어 사용자의 대화를 용이하게 한다.
제11도는 시험 기간 동작 모드를 개시하기 위해 하나 혹은 그 이상의 암호화된 제품을 잠금해제하는데 사용되는 사용자 인터페이스 스크린을 제공한다. 제11도의 개시 일자(날짜) 대화는 제10a도 혹은 제10b도의 잠금해제 대화에서 저장 버턴이 선택된 후 디스플레이된다. 사용자는 데이타 필드(310)에 제공된 날짜를 확인하도록 요청받는다. 사용자는 계속 버턴(continue button)(312), 취소 버턴(cancel button)(314) 혹은 도움말 버턴(316)을 가리키거나 클릭함으로써 디스플레이되는 질문에 응답할 수 있다. 필드(310)에 디스플레이되는 날짜는 사용자 제어 데이타 처리 시스템의 시스템 클럭으로부터 도출된다. 사용자는 시스템 클럭을 변경하여 시험 기간동작 시작 날짜나 혹은 표준날짜에 상응하도록 날짜를 조정할 수 있다.
시험 기간 동작은 두가지 형식을 취할 수 있다. 제 1 형식은 사용자가 모든특징(feature)을 시도하는 것을 허용하지만, 데이타 파일의 프린팅 혹은 저장같은 주요 동작을 허용하지 않는 기능적으로 디스에이블(functionally disable)된 제품 유형이며, 제 2 형식은 한정된 시간동안 사용할 수 있는 전 기능(fully functional) 제품이다. 이는 액세스 보호를 필요로 하며, 고객이 무료로 혹은 명목상의 비용만 지불하고 제품의 모든 기능을 시도하는 것을 허용한다. 전형적으로, 본 발명에 따르면, 제품에 대한 액세스는 타임(timed)키에 의해 제어된다. 제품을 사용하는 시험 기간은 업자에 의해 정의된다. 시험 기간은 키가 송출(issue)되었을 때 시작한다. 본 발명에 따르면, 시험 동작 기간동안 사전검토되는 제품은 단지 고객 쉘(customer shell)내로부터 실행될 수 있다. 암호해독 드라이버(decryption driver)는 암호화 제품이 복제되는 것을 허용하지 않으며, 고객의 쉘 외부에서 제품이 동작하는 것을 허용하지 않는다. 또 다른 실시예에서, 시험 기간은 카운터에 의해 정의되며, 이 카운터는 제품에 대해 고객에게 부여되는 각각의 세션마다 증가하거나 혹은 감소한다. 이는 일시 키에 의한 암호해독이 더 이상 허용되지 않게되어 고객이 소정의 횟수만큼 제품을 사용하는 것을 허용한다.
일시 액세스 키의 제한은 키의 제어 벡터에 설정된다. 전형적으로, 제어 벡터는 키에 대한 간단한 서술, 장치 식별 번호 및 (클럭 값 혹은 카운터 값과 같은)시험 기간 데이타를 포함하는 포맷된 텍스트 열(formatted text string)을 포함한다. 제어 벡터를 변경하면 키가 파손된다. 보호된 소프트웨어 제품이 실행될 때, 사용 데이타(usage data)는 시험 동작 기간의 제한을 시행(enforce)하기 위해 갱신되어야 한다. 탬퍼링(tampering)으로부터 클럭 혹은 카운터를 보호하기 위해, 이들 값은 전형적으로 암호화된 파일내의 다수의 위치에 기록된다. 본 발명의 바람직한 실시예에 따르면, 시험 기간 정보(클럭 값 및/혹은 카운터 값)는 키 파일 및 장치 식별 파일에 복제되며, 이 키 파일은 이하 상세히 기술된다. 암호화된 프로그램에 대한 액세스가 요구될 때, 클럭 및/혹은 카운터의 값이 동일한지를 판정하기 위해 이들 모두의 위치가 점검된다. 일반적인 사용자는 3개의 파일 모두를 성공적으로 탬퍼링할 만큼의 능력은 없을 것이다. 바람직한 실시예에서는, 클럭과 카운터의 조합이 사용되어 시스템 클럭을 리셋하기 위한 백업 및 복원 동작(back up and restore operation)에 대한 확장된 사용을 방지한다. 시험 사용이 요구될 때 마다 PC의 클럭을 리셋하는 것은 가능하지만, 이는 시스템상의 조정 파일들의 날짜/시간 스탬프를 추적하고 파일 날짜/시간 스템프와 시스템 클럭중에서 가장 최근의 날짜를 사용하여 감지될 수 있다. 전술한 바와 같이, 타이머 및/혹은 카운터 정보가 저장되는 3 위치중의 하나는 시스템 파일이다. OS/2 운영 체제하에서 동작할 때, 시간 및 사용 데이타는 OS/2 운영시스템내의 OS2.INI 와 같은 시스템 데이타 파일내에 저장될 수 있다. 시험 및 사용데이타를 리셋하려면 사용자는 이들 파일을 지속적으로 백업하고 복원하여야 한다. 이들 파일은 사용자 시스템의 동작에 중요한 다른 데이타도 포함하고 있다. 부주의한 사용자는 종종 이들 파일을 구 버전(older version)으로 복원함으로써 다른 어플리케이션에 대한 중요한 데이타를 상실할 수도 있다. 본 발명에 있어서, 이들 보호 기법은 시도 기간 사용을 정해진 기간을 초과하여 연장시키려는 사용자의 불순한 의도를 차단할 수 있다.
넓게 보면, 본 발명에 있어서, 업자는 다수의 암호화된 소프트웨어 제품을 CD-ROM 혹은 자기 매체 디스켓과 같은 컴퓨터 액세스가능 메모리 매체상으로 적재한다. 또한, 파일 관리 프로그램이 컴퓨터 액세스가능 메모리상으로 적재되며, 이 프로그램은 업자와 고객사이의 대화를 용이하게 하는 다수의 사용자 인터페이스 스크린을 제공하는 기능을 포함하는 다수의 기능을 수행한다. 컴퓨터 액세스가능 메모리 매체는 사용자 제어 데이타 처리 시스템상으로 적재되고, 파일 관리 프로그램이 적재되어 실행된다. 파일 관리 프로그램은 고객에게 다수의 사용자 인터페이스 스크린을 제공하며, 고객에 대한 정보(성명, 주소, 전화번호 및 요금 정보)를 수집하고, 시험 기간이 필요한 소프트웨어 제품에 대한 고객의 선택을 수신한다. 고객 식별 번호, 제품 식별 번호, 매체 식별 번호 및 장치 식별 번호와 같은 정보가 업자와 고객사이에서 교환된다. 업자는 자신의 내부 기록에 따라 고객 식별 번호를 발생한다. 바람직하게, 소프트웨어 업자는 소프트웨어 고객으로부터 정보를 수집하여 이 정보를 설정된 공간 형식으로 타이핑하여 잠재적 소프트웨어 고객을 식별한다. 이와 달리, 소프트웨어 업자는 완성된 주문 정보 대화 인터페이스 스크린(275)의 팩시밀리 혹은 우편 전송을 수신할 수 있다(제9도). (CD 및 디스켓과 같은) 배포된 메모리 매체는 또한, 파일 관리 프로그램을 포함하며, 이 프로그램은 사용자 제어 데이타 처리 시스템의 하나의 속성에 적어도 부분적으로 의존하는 유일한 장치 식별을 발생한다. 이 장치 식별은 바람직하게 한번의 셋업 프로세스동안 생성되는 임의의 8비트 수이다. 바람직하게, 8 개의 임의의 비트는 난수 발생기(random number generator)의 시드(Seed)로서 시스템 시간을 시용하여 기본 난수 발생기로부터 발생된다. 바람직하게, 점검 비트(check bits)가 최종 결과에 추가된다. 주문 시스템에 대해서 이들 점검 비트는 중요한데, 그 이유는 주문을 받은 사람은 고객이 전화상으로 불러준 장치 ID를 키인(key in)하여야 하기 때문이다. 점검 비트는 고객에게 이 번호를 반복하도록 요구하지 않고서도 장치 ID의 즉시 검증(instant verification)을 허용한다. 바람직하게, 마스터 파일이 사용자 제어 데이타 처리 시스템상에 유지되며, 이 마스터 파일은 장치 식별의 순수 텍스트(clear text) 및 장치 식별의 암호화된 버전을 보유한다.
소프트웨어 고객이 소프트웨어 제품의 일시 시험 사용을 주문할 때, 고객은 전화를 통해 구두로 소프트웨어 업자에게 장치 식별을 전달한다. 이에 응답하여, 업자는 소프트웨어 고객에게 컴퓨터 액세스가능 메모리 매체 상의 암호화된 소프트웨어 제품에 대해 일시 액세스 키로 동작하는 제품 키 및 고객 식별 번호를 전달한다. 바람직하게, 제품 키는 장치 식별, 고객 번호, 주문된 프로그램 혹은 프로그램들에 대한 실제 암호화 키 및 제어 데이타 블럭의 함수이다. 소프트웨어 고객은 제품 키를 고객 번호 및 제어 데이타 식별 블럭과 조합하여 실제 암호화 키를 발생하므로써 제품 키를 검증할 수 있다. 이 키는 그후 암호화된 검증 세그먼트를 암호해독하는데 사용되어 비교 동작을 허용한다. 암호화된 검증 세그먼트가 알려진 검증 세그먼트의 순수 텍스트와 동일하다면, 사용자 파일 관리 프로그램은 제품 키가 양호한 키이고 소프트웨어 제품에 대한 일시적 액세스를 허용하는데 사용될 수 있다고 판정한다. 따라서, 전술한 비교에서 키들이 일치한다면, 키는 사용자 제어 데이타 처리시스템상에서 키 파일내에 저장된다. 바람직하게, 키 파일은 제품 키, 고객 키(고객 번호와 내부키 발생키에 의해 발생됨) 및 장치 식별을 포함하는 순수 ASCII 스트링을 포함한다. 암호해독 수단이 실제 암호하 키를 도출하기 위해서는 이들 3개의 아이템 모두가 변하지 않아야 한다. 키 파일을 특정 사용자 제어 데이타 처리 시스템에 공고히 결합시키기 위해, 동일한 키 파일이 시스템 파라미터로부터 도출된 키에 의해 암호화된다. 이들 시스템 파라미터는 데이타 처리 시스템의 구성으로부터 도출될 수 있다.
넓게 말하면, 본 발명에 있어서 (전형적으로 전화를 통해 구두로 전달되는)일시 키는 실제 키를 고객 번호, 장치 식별 번호 및 다른 소정의 순수 텍스트와 조합하는 암호화를 사용하는 알고리즘으로부터 생성된다. 따라서, 이 키는 단일 장치에 대해서만 효과가 있다. 이 키가 다른 사용자에게 주어지더라도, 이 사용자의 장치 프로그램을 잠금해제시키지는 못할 것이다. 이에 따라, 소프트웨어 업자가 완성된 프로그램을 디스켓 혹은 CD-ROM 과 같은 컴퓨터 액세스가능 메모리 매체로 배포함으로써, 지적 재산권의 침해로 인한 경제적 손실없이, 소프트웨어 제품을 시장에 공급할 수 있다.
암호화 동작에 사용될 수 있는 시스템의 몇몇 바람직한 유일한 속성은 하드디스크 일련 번호, 하드 디스크의 크기 및 포맷 시스템 모델 번호, 하드웨어 인터페이스 카드, 하드웨어 일련 번호 및 다른 구성 파라미터를 포함한다. 이 기법의 결과는 장치 식별 파일이 사용자 제어 데이타 처리 시스템의 동일한 복제품(clone)인 시스템상에서만 암호해독될 수 있다는 것이다. 이 복제 시스템은 매우 구하기 어려운데, 왜냐하면, 대부분의 데이타 처리 시스템은 상이한 구성을 가지며 상당한 노력이 없이는 일치시키기 힘들기 때문이다. 이들 특징은 이하 상세히 기술된다.
제12도를 참조하면, 파일 관리 프로그램은 암호화된 소프트웨어 제품 및 이에 포함된 파일 관리 프로그램을 구비하여 배포된 컴퓨터 액세스가능 메모리 매체를 수신한다. 파일 관리 프로그램은 제12도의 단계(351)에 표시된 바와 같이 사용자 제어 데이타 처리 시스템의 구성을 평가한다. 데이타 처리 시스템의 사용자 특정 속성은 단계(353)에서 도출되며, 장치 식별 발생기(355)에 입력으로 제공된다. 이 발생기는 바람직하게 난수 발생기이며 다수의 이진 문자를 입력으로써 수신하고 장치 식별(357)을 나타내는 의사 무작위 출력(pseudo-random output)을 발생한다. 장치 식별 발생기(355)는 임의의 통상적인 의사 난수 발생기이며, 이 발생기는 이진 문자를 입력으로 수신하고 소정의 알고리즘에 따라 다수의 의사 무작위 이진 문자를 출력으로 발생한다.
제13도를 참조하면, 장치 식별(357)은 또한 파일 관리 프로그램내에 암호화된 형태로 보존된다. 장치 식별(357)은 암호화 엔진(359)에 입력으로 제공되며, 이 엔진은 암호화된 장치 식별(351)을 출력으로 발생한다. 암호화 엔진(359)은 DES 알고리즘과 같은 임의의 통상적인 암호화 루틴을 포함할 수 있다. 키(363)는 암호화 엔진(359)에 입력으로 제공되며, 통상적인 방식으로 암호화 동작에 영향을 미친다. 키(363)는 시스템 속성 선택기(365)로부터 도출된다. 선택될 수 있는 시스템 속성의 유형은 시스템 속성 목록(367)에 도시되며, 이 목록은 하드 디스크 일련 번호, 하드 디스크 크기, 하드 디스크 유형, 시스템 모델 번호, 하드웨어 인터페이스 카드, 하드웨어 일련 번호 혹은 다른 구성 파라미터를 포함한다.
본 발명에 따르면, 순수 텍스트 장치 식별(357) 및 암호화된 장치 식별(361)은 메모리에 보존된다. 또한, 본 발명에 따르면, 파일 관리 프로그램은 자동적으로 순수텍스트 식별(357)을 적절한 사용자 인터페이스 스크린에 나타낸다. 사용자는 그후 소프트웨어 업자에게 장치 식별을 전송하고, 이 식별은 제14도의 블럭도에 따라 사용된다.
도시된 바와 같이, 제품 키 암호하 엔진(375)은 소프트웨어 업자의 제어하에 유지된다. 이 제품 키 암호화 엔진(375)은, 장치 식별(375), (소프트웨어 업자의 내부기록 보관에 따라 고객에게 할당된) 고객 번호(369), (소프트웨어 고객이 관리하는 컴퓨터 액세스가능 메모리 매체 상에 보관된 소프트웨어 제품을 암호해독하는데 사용되는) 실제 암호화 키(371), (임의의 소정의 텍스트 부분일 수 있는) 제어 블럭 텍스트(373), (시험 사용 기간을 정의하는 클럭 및/혹은 카운터 값과 같은) 시험 기간데이타(374)를 입력으로서 수신한다. 제품 키 암호화 엔진은 출력으로서 제품 키(377)를 발생한다. 제품 키(377)는 실제 키(371)을 드러낼 위험없이 보안유지되지 않는 통신 채널을 거쳐 소프트웨어 고객에게 전달될 수 있다. 실제 키(371)는 암호화동작에 의해 마스크(mask)될 수 있으며, 제품 키(377)는 장치 식별(357)이 도출된 구성과 동일한 구성을 갖는 데이타 처리 시스템상에서 사용될 수 있으므로, 암호화된 소프트웨어 제품에 대한 액세스가 안전한 환경에서 보존될 수 있다.
제품 키(377)의 전송시에, 사용자 제어 데이타 처리 시스템에 상주하는 파일관리 프로그램은 실제 키 발생기(379)를 이용하여, 제품 키(377), 고객 번호(369), 제어 블록 텍스트(373), 장치 식별(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)는 암호화 엔진(383)에 입력으로 제공된다. 소정 암호화 검증 데이타 세그먼트(385)는 암호화 엔진(385)에 다른 입력으로 제공된다. 암호화 엔진은 도출된 순수 검증 텍스트(387)를 출력으로 제공한다. 그후, 제17도에 따르면, 도출된 순수 검증 텍스트(387)는 비교기(389)에서 알려진 순수 검증 텍스트(391)와 비교된다. 비교기(389)는 알려진 순수 검증 텍스트(391)와 도출된 순수 검증 텍스트(387)를 단순히 비트단위로 비교한다. 도출된 순수 검증 텍스트(387)가 알려진 검증 텍스트(391)와 일치한다면, 키 파일이 단계(393)에서 생성된다. 그러나, 일치하지 않는다면, 단계(395)에서 사용자 제어 데이타 처리 시스템상에 경고(waring)가 나타난다.
제18도를 참조하면, 키 파일(397)은 일시 제품 키, (고객 번호의 암호화 버전인) 고객 키, 순수 텍스트에서의 장치 식별 번호 및 (클럭 및/혹은 카운터 값과 같은) 시험 기간 데이타를 포함하는 것으로 도시되어 있다. 이 키 파일은 암호화 엔진(399)에 입력으로 제공된다. 키(401)는 또한 암호화 엔진(399)에 입력으로 제공된다. 키(401)는 장치 식별 번호를 도출하는데 사용되는 시스템 속성과 같은 유일한 시스템 속성(403)으로부터 도출된다. 암호화 엔진(399)은 암호화된 키 파일(405)을 출력으로서 제공한다.
제19, 20, 21, 22 및 23도는 일시 액세스 키가 수신되어 검증되고, 키 파일(397)(제18도)에 기록된 후의, 파일 관리 프로그램의 동작을 도시한다.
제19도는 암호화된 소프트웨어 제품이 사용자 제어 데이타 처리 시스템에 의해 처리될 때 수행되는 단계를 나타내는 블럭도이다. 암호화된 파일(405)은 인출되어, 사용자 제어 데이타 처리 시스템에 의해 헤더(header) 부분이 판독된다. 헤더는 키 파일의 위치를 포함하는 다수의 구성요소를 구비한다. 키 파일의 위치는 단계(409)에 따라 키파일을 인출하기 위해 사용된다. 헤더는 또한 암호화된 검증 텍스트(411)를 포함한다. 암호화된 검증 텍스트(411)는 또한 사용자 제어 데이타 처리 시스템에 의해 판독된다. 전술한 바와 같이 (그리고 제18도에 도시된 바와 같이), 키 파일은 제품 키(419), 고객 키(417) 및 장치 식별(415)을 포함한다. 이들은 암호해독엔진(413)에 입력으로서 제공된다. 암호해독 엔진(413)은 실제 키(421)를 출력으로서 제공한다. 실제 키(421)가 배포된 메모리 매체상의 암호화된 소프트웨어 제품을 암호해독하는데 사용되기 전에, 유효성이 먼저 테스트된다. 제21도는 검증 테스팅의 블록도이다. 헤더에 포함된 암호화된 검증 텍스트(423)는 암호해독 엔진(425)에 입력으로서 제공된다. (제20도의 동작에서 도출된) 실제 키(421)가 또한 암호해독 엔진(425)에 입력으로서 제공된다. 암호해독 엔진(425)은 순수 검증 텍스트(427)를 출력으로서 제공한다. 제22도의 블럭도로 도시된 바와 같이, 순수 검증 텍스트(427)는 비교기(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) 및 암호화된 파일 데이타(463)를 구비한 다수의 코드 세그먼트를 포함한다. 물론, 이러한 관점에서, 암호화된 파일 데이타(463)는 워드 처리 프로그램 혹은 스프레드시트 같은 암호화된 소프트웨어 제품을 나타낸다. 암호화 헤더(451)는 통상 암호화된 소프트웨어 제품의 일부를 구성하는 암호화된 데이타를 대신하여 제공된다. 암호화 헤더는 암호화된 소프트웨어 제품의 제 1 부분을 대신하여 대체(substitute)된다. 암호화된 파일 데이타(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은 키 파일을 개방하여 키(제품 키, 고객 키, 장치 식별)를 판독하고 실제 키를 발생시킨다. 이 실제 키는 암호해독 블록 검증 데이타를 암호해독하는데 사용된다. 전술한 바와 같이, 비교 동작은 이 암호해독 동작이 성공적인지의 여부를 판정한다. 비교가 실패하였다면, 키 파일은 유효하지 않음(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이 감시(watching)하지 않은 드라이브로부터 실행될 때마다 수행된다 혹은 TSR이 감시(watching)하지 않는 드라이브로부터 실행될 때마다 수행된다. 이 스터브는 사용자에게 어플리케이션이 동작하지 않는 이유를 설명하는 메시지를 제공할 것이다. 메시지 제공에 추가하여, 이 실행가능 스터브는 이하 개시되는 복잡한 동작을 수행하는데 사용될수 있다.
⑴ 실행가능 스터브는 TSR 의 기능을 복제(duplicate)할 수 있으며, 어플리케이션을 두번째로 시작하기전에 동적인 암호화(dynamic encryption)를 설치(install)할 수 있다.
⑵ 실행 가능 스터브는 일시 액세스 키를 턴온할 수 있고 어플리케이션을 두 번째로 시작할 수 있다.
⑶ 실행 가능 스터브는 TSR 과 통신할 수 있으며, 어플리케이션이 비롯되어 실행되는 드라이브를 감시하도록 TSR에 알린다.
실행가능 스터브는 저장되고 암호화된 프로그램으로 이하 개시되는 바와 같이 복제된다.
⑴ 어플리케이션이 암호화된다.
⑵ 이 프로그램에 대해 암호해독 블록이 생성된다.
⑶ 사전 생성된 실행가능 스터브가 암호해독 블록의 앞부분에 부착된다.
⑷ 결합된 암호해독 헤더 및 실행가능 스터브의 길이가 판정된다.
⑸ 상기 길이와 동일한 실행가능 파일의 앞부분에서의 바이트는 이후 메모리, 바람직하게 소정의 사이드 파일 위치로 판독된다.
⑹ 암호화 헤더 및 실행가능 스터브는 그후 실행가능 코드로 선행 바이트(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 실시예에서는 소오스 컴퓨터내에 보존되는 하나 혹은 그 이상의 암호화된 파일이 일단 암호해독되고, 이후 (디스켓 일련 번호와 같은) 운송가능한 메모리 매체에 유일한 암호화 키 및 암호화 알고리즘을 사용하여 암호화된다. 키 파일은 이후 디스켓을 통해 목표컴퓨터로 운반된다. 목표 컴퓨터에서는 이 목표 컴퓨터가 운송가능 메모리 매체와 대화하여 도출한 키를 사용하여 이 키 파일을 암호해독한다. 곧바로, 키 파일 혹은 파일들은 목표 컴퓨터의 유일한 시스템 속성으로부터 도출된 키를 가지고 키(key)되어지는 암호화 동작을 사용하여 암호화된다.
다른 실시예에서, 운반가능한 메모리 매체는 목표 컴퓨터상으로 적재되어 목표 컴퓨터 임포트 파일로부터 목표 컴퓨터와 유일하게 연관되고 목표 컴퓨터의 하나 혹은 그 이상의 유일한 시스템 속성으로부터 획득될 수 있는 운반 키를 획득한다. 메모리 매체는 그후 소오스 컴퓨터로 운반되며, 소오스 컴퓨터에서 하나 혹은 그 이상의 키 파일이 암호해독되고, 그후 운반 키를 사용하여 암호화된다. 메모리 매체는 그후 목표 컴퓨터로 전송되고, 이 컴퓨터에서 운반 키가 발생되어 하나 혹은 그 이상의 키 파일을 암호해독하는 암호해독 동작에 사용된다. 바람직하게, 키 파일은 즉시, 목표 컴퓨터와 유일하게 연관되며 하나 혹은 그 이상의 유일한 컴퓨터 구성 속성으로부터 도출될 수 있는 키에 의해 키되어지는 암호화 동작을 사용하여 암호화된다. 제 1 실시예는 제30도, 제31도, 제32도 및 제33도를 참조하여 설명되며, 제 2 실시예는 제34도 및 제35도를 참조하여 설명된다.
제30도 및 제31도는 엑스포트 및 임포트 동작의 블럭도를 개시하며, 이 동작은 합법적인 사용자가 엑스포트(export) 기능을 사용하여 자신의 영구 키를 다른 데이타 처리 시스템에 전송하도록 한다. 이 엑스포트 기능은 다른 시스템으로의 임포트를 위해 허용된 액세스 키의 유일한 디스켓 이미지(unique diskette image)를 발생한다. 본 발명에 따르면, 소프트웨어 업자가 전화를 통해 고객에게 전송하는 액세스 키는 40 바이트 미만의 길이이다. 발생된 키 파일은 2000 바이트를 초과하는 길이이다. 엑스포트 기능은 키 파일 및 장치 식별 파일을 디스켓에 복제하는데 사용된다. 이 두 파일 모두 변경된 디스켓 일련 번호에 의해 암호화되어 이들 파일이 누구나 사용할 수 있는 공중적인 포럼(public forum)에 복제되는 것을 차단한다. 다른 시스템에 제공된 임포트 기능은 이들 파일을 암호해독하고, 디스켓으로부터의 제품 키 및 장치 식별을 임포트 시스템 마스터 파일내의 임포트 제품 키 및 장치 식별리스트에 추가하고, 키 파일을 임포트 시스템 하드 디스크로 복제한다. 이 키 파일은 전술한 바와 같이 임포트 시스템상에서 암호화된다.
제30도는 본 발명의 바람직한 실시예에 따른 엑스포트 동작을 도시한 볼럭도이다. 도시한 바와 같이, 소오스 컴퓨터(651)는 키 파일(653) 및 장치 식별 파일(655)을 포함한다. 키 파일(653)은 제품 키, 고객 키, 소오스 컴퓨터(653)에 대한 장치 식별의 순수 텍스트, (시험 기간을 정의하는 클럭 및/혹은 카운터와 같은) 시험 기간 데이타 및 엑스포트 카운터를 포함하며, 이 엑스포트 카운터는 특정 보호된 소프트웨어 제품에 대해 허용된 엑스포트 동작의 최대 수를 정의하고, 성취된 엑스포트 동작의 전체 횟수를 추적하는 이중 동작을 수행한다. 장치 식별 파일은 장치 식별 번호 및 (시험 기간을 정의하는 클럭 및/혹은 카운터와 같은) 시험 기간 데이타를 포함한다. 키 파일(653) 및 장치 식별 파일(655)은 모두 (DES 알고리즘같은) 임의의 통상적인 암호화 동작에 의해 암호화되며, 이 암호화 동작은 소오스 컴퓨터(651)의 유일한 시스템 속성으로부터 획득된 키에 의해 키되어진다. 엑스포트 동작의 시작시에, 키 파일(653) 및 장치 식별 파일(655)은 암호해독된다. 키 파일(653)은 키(659)에 의해 키되어지는 암호해독 동작(657)에 입력으로서 제공된다. 유사하게, 장치 식별파일(655)은 키(662)에 의해 키되어지는 암호해독 동작(663)에 입력으로서 제공된다. 암호해독 동작(657, 663)은 키 파일(653) 및 장치 식별 파일(655)의 순수 텍스트 버전을 발생한다. 일단 순수 텍스트가 얻어지면, 키 파일(653)내에 포함된 엑스포트 카운터는 블럭(661)에 따라 변경된다. 예를 들면, 이 동작이 10 개의 허용된 동작중 7 번째 엑스포트 동작이라면 카운터는 7:10을 판독할 것이다. 키 파일(653)의 순수 텍스트 버전은 암호화 동작(669)에 입력으로서 제공된다. 암호화 동작(699)은 (DES 알고리즘과 같은) 임의의 통상적인 암호화 동작이며, 이 동작은 소오스 컴퓨터(651)에 접속된 메모리 매체에 유일한 메모리 매체 속성(665)에 의해 키되어지고, 변경자(modifier)(667)에 의해 변경된다. 예를 들면, 유일한 디스켓 일련 번호는 메모리 매체(677)에 유일한 메모리 매체 속성으로 제공될 수 있다. 디스켓 일련 번호는 변경자(667)에 의해 변경되어, 암호화 동작(699)에 입력으로서 제공된다. 동일한 동작이 장치 식별 파일(655)의 순수 텍스트에 대해서도 수행된다. 유일한 메모리 매체 속성(671)은 변경자(673)에 의해 변경되고, DES 동작과 같은 임의의 통상적인 암호화 동작을 포함할 수도 있는 암호화 동작(675)에 대한 키로서 사용되며, 최종적으로, 암호화 동작(669 및 675)의 출력은 복제 동작(679, 681)에 입력으로서 제공되며, 이들 복제 동작은 암호화된 키 파일(653) 및 장치 식별 파일(655)을 메모리 매체(677)에 복제한다.
제31도는 임포트 동작을 도시하는 블록도이다. (제30도의) 메모리 매체(677)는 소오스 컴퓨터(651)에서 물리적으로 제거되어 (제31도의) 컴퓨터(707)로 운반된다. 이와 달리, 배포 데이타 처리 시스템에서, 이 운반은 메모리 매체(677)의 물리적인 제거없이 발생할 수도 있다. 이제 제31도를 참조하면, 블럭(683)에 따라, 목표 장치의 장치 식별은 메모리 매체(677)로 복제되어 어느 목표 컴퓨터가 키 파일 및 장치 식별 파일을 수신하였는지에 대한 기록을 보존한다. 이후, 블록(685, 693)에 따라, 암호화된 키 파일(653) 및 장치 식별 파일(655)은 메모리 매체로부터 목표 컴퓨터(707)로 복제된다. 암호화된 키 파일(653)은 암호해독 동작(689)에 입력으로서 제공되며, 이 암호해독 동작은 키(687)로 키되어진다. 암호해독 동작(689)은 블럭(669)의 암호화 동작을 반전(reverse)하며, 키 파일(653)의 순수 텍스트 버전을 출력으로서 제공한다. 마찬가지로, 장치 식별 파일(655)은 암호해독 동작(697)에 입력으로서 제공되며, 키(695)에 의해 키되어진다. 암호해독 동작(697)은 암호화 동작(675)의 암호화를 반전하며 장치 식별 파일(655)의 순수 텍스트를 출력으로서 제공한다. 블럭(691)에 따라, 소오스 컴퓨터(651)의 장치 식별이 검색되어 키 파일(653)의 순수 텍스트내의 메모리에 기록된다. 다음, 키 파일(653)의 순수 텍스트는 암호화 동작(699)에 입력으로서 제공된다. 암호화 동작(699)은 DES 동작과 같은 통상적인 암호화 동작으로, 목표 컴퓨터(707)의 장치 식별 혹은 변경된 장치 식별과 같은 목표 컴퓨터 유일한 속성에 의해 키되어진다. 장치 식별 파일(655)의 순수 텍스트는 암호화 동작(703)의 입력으로서 제공된다. 암호화 동작(703)은 DES 암호화 동작과 같은 임의의 통상적인 암호화 동작이며, 이 동작은 목표 컴퓨터(707)의 장치 식별 혹은 변경된 장치 식별과 같은 유일한 목표 컴퓨터 속성(705)에 의해 키되어진다. 암호화 동작(699)의 출력은 (소오스 컴퓨터(651)의 키 파일(653)의 일시 제품 키와 동일한) 제품 키를 포함하는 암호화된 키 파일(709), (소오스 컴퓨터(651)의 키 파일(653)의 고객 번호와 동일한) 고객 번호, (소오스 컴퓨터(651)의 것과는 다른 목표 컴퓨터(707)의 장치 식별인) 순수 장치 식별, (소오스(651)의 키 파일(653)의 시험 기간 데이타와 동일한) 시험 기간 데이타 및 소오스 컴퓨터(651)의 장치 식별의 식별을 발생한다. 암호화 동작(703)의 출력은 목표 컴퓨터(707)의 장치 식별을 포함하는 장치 식별 파일(711)(소오스 컴퓨터(651)의 것과는 다름) 및 (소오스 컴퓨터(651)의 장치 식별 파일(655)의 것과 동일한) 시험 기간 데이타를 정의한다.
제32도 및 제33도는 제30도 및 제31도에 도시된 임포트 및 엑스포트 동작의 다른 관점을 도시하며, 본 발명의 다양한 주요한 특성을 강조한다. 도시된 바와 같이, 소오스 컴퓨터(801)는 소오스 컴퓨터(801)에 유일한 시스템 속성 키에 의해 키되어지는 장치 식별 파일(803)을 포함한다. 장치 식별 파일은 장치 식별 번호, 각각의 보호된 소프트웨어 제품에 대해 허용된 엑스포트 횟수의 카운트(count of the number of exports), 사용된 엑스포트의 전체 수의 카운트를 포함한다. 예를 들면, 제 1 엑스포트 동작은 1:10의 카운트를 운반하며, 이는 10 개의 허용된 엑스포트 동작중 하나의 엑스포트 동작이 발생했음을 나타낸다. 다음 엑스포트 동작에서, 카운터는 2:10으로 증가되며, 이는 10 개의 허용된 엑스포트 동작중 두개의 엑스포트 동작이 발생했음을 나타낸다. 엑스포트 동작의 결과를 수신하는 각 목표 컴퓨터는 이 특정 카운터 값으로 태그되어, 특정 엑스포트 동작의 수신자임을 확인한다. 예를 들면, 하나의 목표 컴퓨터는 1:10의 카운터 값을 운반할 수 있으며, 이는 이 컴퓨터가 10 개의 허용된 엑스포트 동작의 제 1 엑스포트 동작의 수신자임을 나타낸다. 그러나, 다른 목표 컴퓨터는 카운터 값 7:10을 운반할 수도 있으며, 이는 이 특정 목표 컴퓨터가 10 개의 허용된 동작중 7 번째의 엑스포트 동작을 수신하였음을 나타낸다. 이러한 방식으로, 목표 컴퓨터는 사용된 엑스포트 동작의 전체 수의 카운트를 유지하며, 소오스 컴퓨터는 각각 상이한 카운터 값을 운반하되, 이 값은 다수의 허용된 엑스포트 동작중 특정 동작에 의해 소오스 컴퓨터로부터의 장치 식별 파일 및 키 파일을 수신하였음을 나타낸다.
소오스 컴퓨터(801)에서 장치 식별 파일(803) 및 키 파일(805)은 소오스 컴퓨터(801)에 유일한 시스템 속성을 키로서 사용하는 암호화 알고리즘으로 암호화된다. 그러나, 일단 장치 식별 파일(803) 및 키 파일(805)이 엑스포트 키 디스켓(807)과 같은 메모리 매체로 전송되면, 장치 식별 파일(809) 및 키 파일(811)은 암호화 키로서 디스켓의 일련 번호와 같은 유일한 디스켓 속성을 사용하는 임의의 통상적인 암호화 동작에 의해 암호화된다. 이러한 동작은 장치 ID 파일(809) 및/혹은 키 파일(811)의 내용이 다른 디스켓 혹은 다른 메모리 매체로 복제되어 소프트웨어에 대한 불법적인 액세스를 성취하는데 사용될 가능성을 최소로 한다. 왜냐하면, 장치 ID 파일(809) 및 키 파일(811)의 내용을 목표 컴퓨터로 효과적으로 전송하려면, 목표 컴퓨터가 엑스포트 키 디스켓(807)으로부터 유일한 디스켓 속성을 판독하고 사용할 수 있어야 하기 때문이다. 장치 ID 파일(809) 및 키 파일(811)이 이들 아이템이 복제된 디스켓으로 목표 컴퓨터에 제공될 때만 효율적인 전송이 이루어질 수 있다. 엑스포트 키 디스켓(807)이외의 디스켓을 사용하여 장치 ID 파일(809) 및 키 파일(811)을 잠재적 목표 컴퓨터로 제공하면 무의미한 정보의 전달이 이루어진다. 왜냐하면, 목표 컴퓨터가 성공적인 암호해독 동작을 성취하기 위해서는 엑스포트 키 디스켓(807)의 유일한 속성이 요구되기 때문이다.
제33도에 도시한 바와 같이, 엑스포트 키 디스켓(807)은 목표 컴퓨터(813)에 제공된다. 물론, 장치 식별 파일(809) 및 키 파일(811)은 암호화된 형태이다. 엑수포트 키 디스켓(807)에서 목표 컴퓨터(813)로의 전송에서, 장치 ID 파일(809)의 내용은 목표 컴퓨터(813)의 장치 식별 및 사용된 엑스포트의 수에 의해 갱신된다. 목표 컴퓨터(813)로의 전송을 성취함에 있어, 장치 식별 파일(815)이 구성되고, 이 파일은 목표컴퓨터(813)의 장치 식별, 고객 정보 및 소오스 컴퓨터(810)의 장치 식별 번호 리스트와 같은 다수의 아이템을 포함한다. 장치 식별 파일(815) 및 키 파일(817) 모두 목표 컴퓨터(813)의 유일한 속성을 키로서 사용하여 통상적인 암호화 동작을 사용하여 암호화된다. 이러한 동작은 장치 식별 파일(815) 및 키 파일(817)을 특정 목표 컴퓨터(813)에 결합시킨다.
엑스포트/임포트 카운터를 이용하여 합법화된 엑스포트/임포트 동작의 전체수 및 사용된 엑스포트/임포트 동작의 전체 수를 추적함으로써, 본 발명은 시험 기간동안 소프트웨어 제품의 배포현황을 추적하는데 사용될 수 있는 감사 방안(audit trail)을 생성한다. 각각의 소오스 컴퓨터는 수행된 엑스포트 동작의 전체 수의 기록을 운반한다. 각각의 소오스 컴퓨터는 하나 혹은 그 이상의 보호된 소프트웨어 제품을 목표 컴퓨터로 전송하는데 사용되는 특정 임포트/엑스포트 동작의 기록을 운반할 것이다. (디스켓 혹은 디스켓들과 같은) 전송을 성취하는데 사용되는 메모리 매체는 모든 엑스포트/임포트 동작에서 사용된 소오스 컴퓨터 및 목표 컴퓨터 모두의 장치식별 번호의 영구 기록을 운반할 것이다.
엑스포트 및 임포트 동작을 구현하는 절차는 소프트웨어 제품이 결코 불필요한 위험에 노출되지 않도록 한다. 장치 식별 파일 및 키 파일이 소오스 컴퓨터에서 엑스포트 디스켓으로 전달될 때, 이들은 엑스포트 디스켓의 유일한 속성으로 암호화되어 엑스포트 디스켓이 복제되거나 혹은 이 디스켓의 내용이 불법적으로 키를 배포하는 수단으로서 게시판에 공개되는 것을 차단한다. 임포트 동작동안, 장치 식별파일 및 키 파일은 목표 컴퓨터에 유일한 시스템 속성으로 암호화되어, 소프트웨어 제품이 목표 컴퓨터에 유일한 속성으로 암호화되는 것을 제외하고는, 소프트웨어 제품이 소오스 컴퓨터의 보안 유지와 일치하는 방식으로 보존되는 것을 보장하므로써 키의 불법적인 복제 및 공개를 차단한다. 엑스포트/임포트 기능의 제 2 실시예가 제34도 및 제35도에 블럭도로 도시되어 있다. 개략적으로, 메모리 매체(1677)는 먼저 목표 컴퓨터(1707)와 대화하는데 사용되어 목표 컴퓨터로부터 전달 키를 획득하며, 이 전달 키는 목표 컴퓨터(1707)에 유일하며, 바람직하게 목표 컴퓨터(1707)의 하나 혹은 그 이상의 유일한 시스템 속성으로부터 도출된다. 전달 키는 목표 컴퓨터(1707)의 장치 식별을 변경한 것이 될 수도 있다. 다음 메모리 매체(1677)는 엑스포트 동작모드에서 소오스 컴퓨터(1651)와 대화하는데 사용되며, 이 동작 모드에서 키 파일(1653) 및 장치 식별 파일(1655)이 먼저 암호해독되고, 이후 전달 키를 사용하여 암호화된다.
제34도는 본 발명의 바람직한 실시예에 따른 엑스포트 동작을 도시한 블럭도이다. 도시된 바와 같이, 소오스 컴퓨터(1651)는 키 파일(1653) 및 장치 식별 파일(1655)을 포함한다. 키 파일(1653)은 제품 키, 고객 키, 소오스 컴퓨터(1653)의 장치 식별의 순수 텍스트, (시험 기간을 정의하는 클럭 및/혹은 카운터와 같은) 시험 기간 데이타 및 엑스포트 카운터를 포함하며, 이 엑스포트 카운터는 특정 보호된 소프트웨어 제품에 대해 허용된 엑스포트 동작의 최대 수를 정의하고, 성취된 엑스포트 동작의 전체 수를 추적하는 이중 동작을 수행한다. 장치 식별 파일은 장치 식별 번호 및 (시험 기간을 정의하는 클럭 및/혹은 카운터와 같은) 시험 기간 데이타를 포함한다. 키 파일(1653) 및 장치 식별 파일(1655) 모두는 (DES 알고리즘과 같은) 임의의 통상적인 암호화 동작에 의해 암호화되며, 소오스 컴퓨터(1651)의 유일한 시스템 속성으로부터 도출된 키에 의해 키되어진다. 엑스포트 동작의 시작에서, 키 파일(1653) 및 식별 파일(1655)은 암호해독된다. 키 파일(1653)은 키(1659)에 의해 키되어지는 암호해독 동작(1657)에 입력으로서 제공된다. 마찬가지로, 장치 식별 파일(1655)은 키(1661)에 의해 키되어지는 암호해독 동작(1663)에 입력으로서 제공된다. 암호해독 동작(1657, 1663)은 키 파일 및 장치 식별 파일(1655)의 순수 텍스트 버전을 발생한다. 일단 순수 텍스트가 도출되면, 키 파일(1653)내에 포함된 엑스포트 카운터는 블럭(1661)에 따라 갱신된다. 예를 들면, 실행되는 동작이 10 개의 허용된 동작중에서 7번째 허용된 엑스포트 동작이라면, 카운터는 7:10이 된다. 키 파일(1653)의 순수 텍스트 버전은 암호화 동작(1669)에 입력으로서 제공된다. 암호화 동작(1669)은 (DES 알고리즘과 같은)임의의 통상적인 암호화 동작이 될 수 있으며, 이 동작은 사전에 도출된 전달 키(1665)에 의해 키되어진다. 동일한 동작이 장치 식별 파일(1655)의 순수 텍스트에 대해 수행된다. 전달 키(1671)는 DES 동작과 같은 임의의 통상적인 암호화 동작을 포함하는 입력 동작(1675)에 대한 키로서 사용된다.
최종적으로, 암호화 동작(1669) 및 (1675)의 출력은 복제 동작(1679, 1681)에 대한 입력으로서 제공되며, 이들 복제 동작은 암호화된 키 파일(1653) 및 장치 식별 파일(1655)를 메모리 매체(1677)로 복제한다.
제35도는 임포트 동작을 도시한 블록도이다. (제34도의) 메모리 매체(1677)는 소오스 컴퓨터(1651)로부터 제거되어 컴퓨터(1707)로 전달된다. 이와 달리, 배포 데이타 처리 시스템에서, 이 전달은 메모리 매체(1677)를 전달하지 않고 실행될수 있다. 이제 제35도를 참조하면, 목표 장치의 장치 식별은 메모리 매체(1677)로 복제되어 키 파일 및 장치 식별 파일을 수신한 특정 목표 컴퓨터의 기록을 보존한다. 이후, 블럭(1685, 1693)에 따라, 암호화된 키 파일(1653) 및 장치 식별 파일(1655)은 메모리 매체에서 목표 컴퓨터로 복제된다. 암호화된 키 파일(1653)은 키(1687)에 의해 키되어지는 암호해독 동작(1689)에 입력으로서 제공된다. 암호해독 동작(1689)은 블럭(1669)의 암호화 동작을 반전하여, 키 파일(1653)의 순수 텍스트를 출력으로서 제공한다. 마찬가지로, 장치 식별 파일(1655)은 키(1695)에 의해 키되어지는 암호 해독 동작(1697)에 입력으로서 제공된다. 암호해독 동작(1697)은 암호화 동작(1675)의 암호화를 반전하여 장치 식별 파일(1655)의 순수 텍스트를 출력으로서 제공한다. 블럭(1691)에 따라, 소오스 컴퓨터(1651)의 장치 식별이 검색되어 키 파일(1653)의 순수 텍스트내의 메모리에 저장된다. 다음, 키 파일(1653)의 순수 텍스트는 암호화 동작(1699)에 입력으로서 제공된다. 암호화 동작(1699)은 DES 동작과 같은 통상적인 암호화 동작으로 목표 컴퓨터(1707)의 장치 식별 혹은 변경된 장치 식별과 같은 목표 컴퓨터의 유일한 속성에 의해 키되어진다. 장치 식별 파일(1655)의 순수 텍스트는 암호화 동작(1703)에 입력으로서 제공된다. 암호화 동작(1703)은 DES 암호화 동작과 같은 임의의 통상적인 암호화 동작이며, 목표 컴퓨터(1707)의 장치 식별 혹은 변경된 장치 식별과 같은 유일한 목표 컴퓨터 속성(1705)에 의해 키되어진다. 암호화 동작(1699)의 출력은 암호화된 키 파일(1709)을 발생하며, 이 파일은 (소오스 컴퓨터(1651)의 키 파일(1653)의 일시 제품 키와 동일한) 제품 키, (소오스 컴퓨터(1651)의 키 파일(1653)의 고객 번호와 동일한) 고객 번호, (소오스 컴퓨터(1651)의 것과는 다른 목표 컴퓨터(1707)의 장치 식별인) 순수 장치 식별, (소오스(1651)의 키 파일(1653)의 시험 간격 데이타와 동일한) 시험 기간 데이타 및 소오스 컴퓨터(1651)의 장치 식별의 식별을 포함한다. 암호화 동작(1703)의 출력은 장치 식별 파일(1711)을 정의하며, 이 파일은 (소오스 컴퓨터(1651)의 것과는 다른)목표 컴퓨터(1707)의 장치 식별 및 (소오스 컴퓨터(1651)의 장치 식별 파일(1655)의 것과 동일한) 시험 기간 데이타를 포함한다.
이상 본 발명이 바람직한 실시예에 따라 구체적으로 설명되었지만, 본 발명은 상기 실시예에 한정되는 것은 아니며, 그 사상 및 범주를 이탈하지 않는 범위내에서 여러 가지로 변경 가능함은 물론이다.

Claims (22)

  1. 암호화된 파일에의 액세스를 선택적으로 허용하는 방법에 있어서, ①상기 암호화된 파일을 갖는 다수의 파일을 제공하는 단계와, ②적어도 부분적으로 실행가능한 코드로 구성된, 암호화되지 않은 보안 스터브를 상기 암호화된 파일에 부착하는 단계와, ③상기 다수의 파일을 접근가능한 위치에 두는 단계와, ④사용자 행위에 응하여, 호출된 파일에 대한 사용자 개시 요청을 발생하는 단계와-여기서, 상기 호출된 파일은 상기 다수의 파일중 하나임- ⑤상기 사용자 요청을 데이타 처리 시스템 호출로 번역하는 단계와, ⑥상기 데이타 처리 시스템 호출을 파일 관리 프로그램을 사용하여 수신하는 단계와-여기서, 상기 파일 관리 프로그램은 ⒜ 활성상태 또는 ⒝ 비활성상태로 존재하며, 운영체제의 일 구성요소임-, ⑦상기 호출된 파일이 상기 보안 스터브를 가진다고 판정된 경우, 상기 파일 관리 프로그램을 이용하여 상기 다수의 파일 중에서 상기 호출된 파일에 선택적으로 액세스하는 단계와, ⑧상기 호출된 파일이 상기 보안 스터브를 가지지 않는다고 판정된 경우, 상기 파일 관리 프로그램을 이용하여 상기 다수의 파일 중에서 상기 호출된 파일에 비선택적으로 액세스하는 단계와, ⑨상기 호출된 파일이 액세스되는 한도까지, 상기 사용자 개시 요청에 따라 상기 호출된 파일을 처리하는 단계를-여기서, 상기 다수의 파일중 상기 소정 파일에의 사용자에 의한 액세스는 상기 보안 스터브에 의해 제어됨- 포함하는 파일 액세스 보안유지 방법.
  2. 제1항에 있어서, 상기 파일 관리 프로그램을 사용하여 상기 호출된 파일에 선택적으로 액세스하는 단계와 비선택적으로 액세스하는 단계는 상기 호출된 파일의 적어도 일부를 검사하는 단계를 더 포함하는 파일 액세스 보안유지 방법.
  3. 제1항에 있어서, 상기 파일 관리 프로그램을 사용하여 상기 호출된 파일에 선택적으로 액세스 하는 단계와 비선택적으로 액세스하는 단계는 상기 호출된 파일이 상기 부착된 암호화되지 않은 보안 스터브를 갖는다고 판정된 경우, 암호해독 동작에 이용하기 위한 정보를 얻기 위하여 상기 부착된 암호화되지 않은 보안 스터브를 분석하는 단계를 더 포함하는 파일 액세스 보안유지 방법.
  4. 제1항에 있어서, 상기 호출된 파일이 상기 부착된 암호화되지 않은 보안 스터브를 갖지 않는다고 판정된 경우, 상기 호출된 파일이 처리되도록 허용하는 단계와, 상기 호출된 파일이 상기 부착된 암호화되지 않은 보안 스터브를 갖는다고 판정된 경우에는, ⒜ 암호해독 동작이 수행되도록 허용하는 정보를 얻기 위하여 ⑴ 상기 호출된 파일 및 ⑵ 상기 암호화되지 않은 보안 스터브중의 적어도 하나를 검사하고, ⒝ 상기 호출된 파일을 암호해독하며, ⒞ 상기 호출된 파일의 처리를 허용하는 단계를 더 포함하는 파일 액세스 보안유지 방법.
  5. 제1항에 있어서, 상기 호출된 파일이 상기 부착된 암호화되지 않은 보안 스터브를 가진다고 판정된 경우, 후속 처리를 위해 상기 호출된 파일을 전달함과 동시에 상기 호출된 파일을 동시에 암호해독하는 단계를 더 포함하는 파일 액세스 보안유지 방법.
  6. 제1항에 있어서, 상기 파일 관리 프로그램이 활성 상태에 있고 상기 호출된 파일이 상기부착된 암호화되지 않은 보안 스터브를 가진다고 판정된 경우, 상기 호출된 파일을 처리하기 전에 상기 부착된 암호화되지 않은 보안 스터브를 상기 호출된 파일로부터 분리하는 단계와, 상기 파일 관리 프로그램이 비활성 상태에 있고 상기 부착된 암호화되지 않은 보안 스터브가 존재한다고 판정된 경우, ⒜ 상기 호출된 파일의 처리를 저지하고, ⒝ 상기 호출된 파일을 실행할 수 없음을 상기 사용자에게 통보하는 단계를 더 포함하는 파일 액세스 보안유지 방법.
  7. 제1항에 있어서, 상기 적어도 하나의 암호화된 파일은 단명 키(a short-lived key)에 의해 암호해독될 수 있는 적어도 하나의 암호화된 소프트웨어 제품을 포함하는 파일 액세스 보안유지 방법.
  8. 제7항에 있어서, 상기 단명 키는 상기 소프트웨어 제품에 대한 특정 고객 시험 기간(a particular customer trial interval)을 정의하는 파일 액세스 보안유지 방법.
  9. 제7항에 있어서, 상기 특정 고객 시험 기간은 ⒜ 소정의 기간(a predefined time interval)과, ⒝ 소정의 호출 처리의 횟수(a predefined number of processing calls) 중의 적어도 하나를 포함하는 파일 액세스 보안유지 방법.
  10. 제8항에 있어서, 상기 파일 관리 프로그램을 상기 단명 키와 상호작용(interact)하는데 사용함으로써 상기 소프트웨어 제품에 대한 상기 특정 고객 시험 기간을 변경시키는 단계를 더 포함하는 파일 액세스 보안유지 방법.
  11. 제8항에 있어서, 상기 호출된 파일과 연관된 특정 파일에 상기 단명 키를 위치시키는 단계와; 상기 파일 관리 프로그램을 사용하여 상기 호출된 파일과 연관된 상기 파일 내의 상기 단명 키를 탐색하는 단계를 더 포함하는 파일 액세스 보안유지 방법.
  12. 암호화된 파일에의 액세스를 선택적으로 허용하는 장치에 있어서, ①상기 암호화된 파일을 갖는 다수의 파일을 제공하는 수단과, ②적어도 부분적으로 실행가능한 코드로 구성된, 암호화되지 않은 보안 스터브를 상기 암호화된 파일에 부착하는 수단과, ③상기 다수의 파일을 접근가능한 위치에 두는 수단과, ④사용자 행위에 응하여, 호출된 파일에 대한 사용자 개시 요청을 발생하는 수단과-여기서, 상기 호출된 파일은 상기 다수의 파일중 하나임- ⑤상기 사용자 요청을 데이타 처리 시스템 호출로 번역하는 수단과, ⑥상기 데이타 처리 시스템 호출을 파일 관리 프로그램을 사용하여 수신하는 수단과-여기서, 상기 파일 관리 프로그램은 ⒜ 활성상태 또는 ⒝ 비활성상태로 존재하며, 운영체제의 일 구성요소임-, ⑦상기 호출된 파일이 상기 보안 스터브를 가진다고 판정된 경우, 상기 파일 관리 프로그램을 이용하여 상기 다수의 파일 중에서 상기 호출된 파일에 선택적으로 액세스하는 수단과, ⑧상기 호출된 파일이 상기 보안 스터브를 가지지 않는다고 판정된 경우, 상기 파일 관리 프로그램을 이용하여 상기 다수의 파일 중에서 상기 호출된 파일에 비선택적으로 액세스하는 수단과, ⑨상기 호출된 파일이 액세스되는 한도까지, 상기 사용자 개시 요청에 따라 상기 호출된 파일을 처리하는 수단을-여기서, 상기 다수의 파일중 상기 소정 파일에의 사용자에 의한 액세스는 상기 보안 스터브에 의해 제어됨-포함하는 파일 액세스 보안유지 장치.
  13. 제12항에 있어서, 상기 파일 관리 프로그램은 상기 호출된 파일의 적어도 일부분을 검사하는 수단을 포함하는 파일 액세스 보안유지 장치.
  14. 제12항에 있어서, 상기 파일 관리 프로그램은 상기 부착된 암호화되지 않은 보안 스터브를 분석하여 암호해독 동작에서 사용되는 정보를 획득하는 수단을 더 포함하는 파일 액세스 보안유지 장치.
  15. 제12항에 있어서, 상기 파일 관리 프로그램은 상기 호출된 파일이 부착된 암호화되지 않은 보안 스터브를 갖지 않는다고 판정된 경우, 상기 호출된 파일이 처리되도록 허용하는 패스 스루 동작 모드(a pass-through mode of operation)와, 상기 호출된 파일이 부착된 암호화되지 않은 보안 스터브를 갖는다고 판정된 경우에는, ⒜ 암호해독 동작이 수행되도록 허용하는 정보를 획득하기 위하여 ⑴ 상기 호출된 파일 및 ⑵ 상기 암호화되지 않은 보안 스터브중의 적어도 하나를 검사하고, ⒝ 상기 호출된 파일을 암호해독하며, ⒞ 상기 호출된 파일의 처리를 허용하는 암호해독 동작 모드(a decryption mode of operation)를 포함하는 다수의 동작 모드에서 동작할 수 있는 파일 액세스 보안유지 장치.
  16. 제12항에 있어서, 상기 호출된 파일이 후속 처리를 위해 전달되는 것과 동시에 상기 호출된 파일을 암호해독하는 수단을 더 포함하는 파일 액세스 보안유지 장치.
  17. 제12항에 있어서, 상기 파일 관리 프로그램은, 상기 파일 관리 프로그램이 활성 상태에 있고 상기 부착된 암호화되지 않은 보안 스터브가 존재한다고 판정된 경우, 상기 호출된 파일을 실행하기 전에 상기 부착된 암호화되지 않은 보안 스터브를 상기 호출된 파일로부터 분리하고, 상기 파일 관리 프로그램이 비활성 상태에 있고 상기 부착된 암호화되지 않은 보안 스터브가 상기 호출된 파일에 부착된 채로 남아있다고 판정된 경우에는, ⒜ 상기 호출된 파일의 실행을 저지하고, ⒝ 상기 데이타 처리 시스템에 상기 호출된 파일이 실행될 수 없음을 알리는 메시지를 전송하는데 더 사용되는 파일 액세스 보안유지 장치.
  18. 제12항에 있어서, 상기 적어도 하나의 암호화된 파일은 단명 키로 암호해독될 수 있는 적어도 하나의 암호화된 소프트웨어 제품을 포함하는 파일 액세스 보안유지 장치.
  19. 제18항에 있어서, 상기 단명 키는 상기 소프트웨어 제품에 대한 특정 고객 시험 기간을 정의하는 파일 액세스 보안유지 장치.
  20. 제18항에 있어서, 상기 특정 고객 시험 간격은 ⒜ 소정의 기간과, ⒝ 소정의 호출 처리의 횟수중의 적어도 하나를 포함하는 파일 액세스 보안유지 장치.
  21. 제19항에 있어서, 상기 파일 관리 프로그램을 상기 단명 키와 상호작용하는데 사용함으로써 상기 소프트웨어 제품에 대한 상기 특정 고객 시험 기간을 변경시키는 수단을 더 포함하는 파일 액세스 보안유지 장치.
  22. 제19항에 있어서, 상기 호출된 파일과 연관된 특정 위치에 상기 단명 키를 두는 수단과, 상기 파일 관리 프로그램을 사용하여 상기 호출된 파일과 연관된 상기 특정 위치에서 상기 단명 키를 탐색하는 수단을 더 포함하는 파일 액세스 보안유지 장치.
KR1019950009728A 1994-04-25 1995-04-25 파일 액세스 보안유지 방법 및 장치 Expired - Fee Related KR100200445B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US23503394A 1994-04-25 1994-04-25
US8/235,033 1994-04-25

Publications (1)

Publication Number Publication Date
KR100200445B1 true KR100200445B1 (ko) 1999-06-15

Family

ID=22883794

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950009728A Expired - Fee Related KR100200445B1 (ko) 1994-04-25 1995-04-25 파일 액세스 보안유지 방법 및 장치

Country Status (6)

Country Link
US (1) US5737416A (ko)
EP (1) EP0679978B1 (ko)
JP (1) JP3503774B2 (ko)
KR (1) KR100200445B1 (ko)
CA (1) CA2143874C (ko)
DE (1) DE69529782D1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100348027B1 (ko) * 2000-06-28 2002-08-07 류종렬 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템및 그 방법

Families Citing this family (222)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271865A (ja) 1994-04-01 1995-10-20 Mitsubishi Corp データベース著作権管理方法
US6424715B1 (en) 1994-10-27 2002-07-23 Mitsubishi Corporation Digital content management system and apparatus
EP0715241B1 (en) 1994-10-27 2004-01-14 Mitsubishi Corporation Apparatus for data copyright management system
US7117180B1 (en) 1994-11-23 2006-10-03 Contentguard Holdings, Inc. System for controlling the use of digital works using removable content repositories
US20050149450A1 (en) * 1994-11-23 2005-07-07 Contentguard Holdings, Inc. System, method, and device for controlling distribution and use of digital works based on a usage rights grammar
US6865551B1 (en) 1994-11-23 2005-03-08 Contentguard Holdings, Inc. Removable content repositories
US6963859B2 (en) * 1994-11-23 2005-11-08 Contentguard Holdings, Inc. Content rendering repository
JPH08263438A (ja) 1994-11-23 1996-10-11 Xerox Corp ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法
AUPN002594A0 (en) * 1994-12-13 1995-01-12 Dunn, Alexander Atkinson Improvements in software for the protection of executable programs, libraries and their data
US5745569A (en) * 1996-01-17 1998-04-28 The Dice Company Method for stega-cipher protection of computer code
US7362775B1 (en) 1996-07-02 2008-04-22 Wistaria Trading, Inc. Exchange mechanisms for digital information packages with bandwidth securitization, multichannel digital watermarks, and key management
US5613004A (en) * 1995-06-07 1997-03-18 The Dice Company Steganographic method and device
US8595502B2 (en) 1995-09-29 2013-11-26 Intarsia Software Llc Data management system
US6023506A (en) * 1995-10-26 2000-02-08 Hitachi, Ltd. Data encryption control apparatus and method
US7801817B2 (en) * 1995-10-27 2010-09-21 Makoto Saito Digital content management system and apparatus
US6088515A (en) 1995-11-13 2000-07-11 Citrix Systems Inc Method and apparatus for making a hypermedium interactive
US6665797B1 (en) * 1995-12-01 2003-12-16 Tse Ho Keung Protection of software again against unauthorized use
US7664263B2 (en) * 1998-03-24 2010-02-16 Moskowitz Scott A Method for combining transfer functions with predetermined key creation
US6205249B1 (en) * 1998-04-02 2001-03-20 Scott A. Moskowitz Multiple transform utilization and applications for secure digital watermarking
US7346472B1 (en) 2000-09-07 2008-03-18 Blue Spike, Inc. Method and device for monitoring and analyzing signals
US7177429B2 (en) 2000-12-07 2007-02-13 Blue Spike, Inc. System and methods for permitting open access to data objects and for securing data within the data objects
US7457962B2 (en) * 1996-07-02 2008-11-25 Wistaria Trading, Inc Optimization methods for the insertion, protection, and detection of digital watermarks in digitized data
US5889868A (en) * 1996-07-02 1999-03-30 The Dice Company Optimization methods for the insertion, protection, and detection of digital watermarks in digitized data
US7159116B2 (en) 1999-12-07 2007-01-02 Blue Spike, Inc. Systems, methods and devices for trusted transactions
US7095874B2 (en) * 1996-07-02 2006-08-22 Wistaria Trading, Inc. Optimization methods for the insertion, protection, and detection of digital watermarks in digitized data
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
US7730317B2 (en) * 1996-12-20 2010-06-01 Wistaria Trading, Inc. Linear predictive coding implementation of digital watermarks
US6233684B1 (en) 1997-02-28 2001-05-15 Contenaguard Holdings, Inc. System for controlling the distribution and use of rendered digital works through watermaking
US5923842A (en) * 1997-03-06 1999-07-13 Citrix Systems, Inc. Method and apparatus for simultaneously providing anonymous user login for multiple users
US6041411A (en) * 1997-03-28 2000-03-21 Wyatt; Stuart Alan Method for defining and verifying user access rights to a computer information
EP1653463A1 (en) * 1997-05-13 2006-05-03 Kabushiki Kaisha Toshiba License information copying method and apparatus, license information moving method
US5892901A (en) * 1997-06-10 1999-04-06 The United States Of America As Represented By The Secretary Of The Navy Secure identification system
US7290288B2 (en) 1997-06-11 2007-10-30 Prism Technologies, L.L.C. Method and system for controlling access, by an authentication server, to protected computer resources provided via an internet protocol network
US6226747B1 (en) * 1998-04-10 2001-05-01 Microsoft Corporation Method for preventing software piracy during installation from a read only storage medium
JP3994518B2 (ja) * 1998-05-11 2007-10-24 ソニー株式会社 データ配信装置およびデータ配信用の端末装置
US6957341B2 (en) * 1998-05-14 2005-10-18 Purdue Research Foundation Method and system for secure computational outsourcing and disguise
US7068787B1 (en) 1998-10-23 2006-06-27 Contentguard Holdings, Inc. System and method for protection of digital works
US7058597B1 (en) 1998-12-04 2006-06-06 Digital River, Inc. Apparatus and method for adaptive fraud screening for electronic commerce transactions
US7617124B1 (en) 1998-12-04 2009-11-10 Digital River, Inc. Apparatus and method for secure downloading of files
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
JP3644295B2 (ja) * 1999-03-17 2005-04-27 セイコーエプソン株式会社 投写型表示装置
DE10080963T1 (de) * 1999-03-22 2002-07-25 Microvault Corp Datenschutz-Verfahren und -Vorrichtung für ein System zur geschützten Datenübertragung
US7664264B2 (en) * 1999-03-24 2010-02-16 Blue Spike, Inc. Utilizing data reduction in steganographic and cryptographic systems
US6829708B1 (en) 1999-03-27 2004-12-07 Microsoft Corporation Specifying security for an element by assigning a scaled value representative of the relative security thereof
US7319759B1 (en) 1999-03-27 2008-01-15 Microsoft Corporation Producing a new black box for a digital rights management (DRM) system
US20020019814A1 (en) 2001-03-01 2002-02-14 Krishnamurthy Ganesan Specifying rights in a digital rights license according to events
US7286665B1 (en) 1999-04-06 2007-10-23 Contentguard Holdings, Inc. System and method for transferring the right to decode messages
US6937726B1 (en) 1999-04-06 2005-08-30 Contentguard Holdings, Inc. System and method for protecting data files by periodically refreshing a decryption key
US7356688B1 (en) 1999-04-06 2008-04-08 Contentguard Holdings, Inc. System and method for document distribution
US6859533B1 (en) 1999-04-06 2005-02-22 Contentguard Holdings, Inc. System and method for transferring the right to decode messages in a symmetric encoding scheme
US7360252B1 (en) 1999-04-30 2008-04-15 Macrovision Corporation Method and apparatus for secure distribution of software
US6966002B1 (en) 1999-04-30 2005-11-15 Trymedia Systems, Inc. Methods and apparatus for secure distribution of software
US20060005021A1 (en) * 1999-06-09 2006-01-05 Andres Torrubia-Saez Methods and apparatus for secure distribution of software
WO2001004757A1 (en) * 1999-07-14 2001-01-18 Symantec Corporation System and method for preventing detection of a selected process running on a computer
US7475246B1 (en) 1999-08-04 2009-01-06 Blue Spike, Inc. Secure personal content server
US7757097B2 (en) * 1999-09-03 2010-07-13 Purdue Research Foundation Method and system for tamperproofing software
US7287166B1 (en) 1999-09-03 2007-10-23 Purdue Research Foundation Guards for application in software tamperproofing
US20080082446A1 (en) * 1999-10-01 2008-04-03 Hicks Christian B Remote Authorization for Unlocking Electronic Data System and Method
US6885748B1 (en) 1999-10-23 2005-04-26 Contentguard Holdings, Inc. System and method for protection of digital works
US6792113B1 (en) 1999-12-20 2004-09-14 Microsoft Corporation Adaptable security mechanism for preventing unauthorized access of digital data
US6654888B1 (en) 1999-12-31 2003-11-25 International Business Machines Corporation Installing and controlling trial software
US7353209B1 (en) 2000-01-14 2008-04-01 Microsoft Corporation Releasing decrypted digital content to an authenticated path
AU2000269279A1 (en) * 2000-01-14 2001-07-24 Microsoft Corporation Producing a new black box for a digital rights management (drm) system
JP2001219440A (ja) * 2000-02-09 2001-08-14 Sony Disc Technology Inc 多数個取り用成形装置およびその成形方法
US20070271191A1 (en) * 2000-03-09 2007-11-22 Andres Torrubia-Saez Method and apparatus for secure distribution of software
WO2001079972A2 (en) * 2000-04-18 2001-10-25 Iomega Corporation Method and system for delivery and execution of copy protected digital content
US7020773B1 (en) 2000-07-17 2006-03-28 Citrix Systems, Inc. Strong mutual authentication of devices
US8832852B2 (en) 2000-08-28 2014-09-09 Contentguard Holdings, Inc. Method and apparatus for dynamic protection of static and dynamic content
US7743259B2 (en) 2000-08-28 2010-06-22 Contentguard Holdings, Inc. System and method for digital rights management using a standard rendering engine
US7073199B1 (en) 2000-08-28 2006-07-04 Contentguard Holdings, Inc. Document distribution management method and apparatus using a standard rendering engine and a method and apparatus for controlling a standard rendering engine
US6931545B1 (en) * 2000-08-28 2005-08-16 Contentguard Holdings, Inc. Systems and methods for integrity certification and verification of content consumption environments
US20040243540A1 (en) * 2000-09-07 2004-12-02 Moskowitz Scott A. Method and device for monitoring and analyzing signals
US7127615B2 (en) 2000-09-20 2006-10-24 Blue Spike, Inc. Security based on subliminal and supraliminal channels for data objects
EP1352307A2 (en) 2000-09-22 2003-10-15 EDC Systems, Inc. Systems and methods for preventing unauthorized use of digital content
US7237123B2 (en) * 2000-09-22 2007-06-26 Ecd Systems, Inc. Systems and methods for preventing unauthorized use of digital content
US7343324B2 (en) * 2000-11-03 2008-03-11 Contentguard Holdings Inc. Method, system, and computer readable medium for automatically publishing content
US6986040B1 (en) 2000-11-03 2006-01-10 Citrix Systems, Inc. System and method of exploiting the security of a secure communication channel to secure a non-secure communication channel
US20030139963A1 (en) * 2000-12-08 2003-07-24 Chickering D. Maxwell Decision theoretic approach to targeted solicitation by maximizing expected profit increases
US6912294B2 (en) 2000-12-29 2005-06-28 Contentguard Holdings, Inc. Multi-stage watermarking process and system
US7774279B2 (en) * 2001-05-31 2010-08-10 Contentguard Holdings, Inc. Rights offering and granting
US7206765B2 (en) * 2001-01-17 2007-04-17 Contentguard Holdings, Inc. System and method for supplying and managing usage rights based on rules
WO2002057922A1 (en) 2001-01-17 2002-07-25 Contentguard Holdings, Inc. Method and apparatus for managing digital content usage rights
US20030220880A1 (en) * 2002-01-17 2003-11-27 Contentguard Holdings, Inc. Networked services licensing system and method
US6754642B2 (en) 2001-05-31 2004-06-22 Contentguard Holdings, Inc. Method and apparatus for dynamically assigning usage rights to digital works
US7028009B2 (en) 2001-01-17 2006-04-11 Contentguardiholdings, Inc. Method and apparatus for distributing enforceable property rights
US8069116B2 (en) * 2001-01-17 2011-11-29 Contentguard Holdings, Inc. System and method for supplying and managing usage rights associated with an item repository
FR2823399B1 (fr) * 2001-04-06 2003-08-15 Pierre Bonnerre Soft Link Procede de gestion d'acces securise a des ressources numeriques d'un serveur, et systeme associe
US7328453B2 (en) * 2001-05-09 2008-02-05 Ecd Systems, Inc. Systems and methods for the prevention of unauthorized use and manipulation of digital content
US8001053B2 (en) * 2001-05-31 2011-08-16 Contentguard Holdings, Inc. System and method for rights offering and granting using shared state variables
US20030009424A1 (en) * 2001-05-31 2003-01-09 Contentguard Holdings, Inc. Method for managing access and use of resources by verifying conditions and conditions for use therewith
US6973445B2 (en) * 2001-05-31 2005-12-06 Contentguard Holdings, Inc. Demarcated digital content and method for creating and processing demarcated digital works
US7152046B2 (en) * 2001-05-31 2006-12-19 Contentguard Holdings, Inc. Method and apparatus for tracking status of resource in a system for managing use of the resources
US6895503B2 (en) * 2001-05-31 2005-05-17 Contentguard Holdings, Inc. Method and apparatus for hierarchical assignment of rights to documents and documents having such rights
US6976009B2 (en) 2001-05-31 2005-12-13 Contentguard Holdings, Inc. Method and apparatus for assigning consequential rights to documents and documents having such rights
US7222104B2 (en) 2001-05-31 2007-05-22 Contentguard Holdings, Inc. Method and apparatus for transferring usage rights and digital work having transferrable usage rights
US7725401B2 (en) * 2001-05-31 2010-05-25 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US8099364B2 (en) * 2001-05-31 2012-01-17 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US8275709B2 (en) * 2001-05-31 2012-09-25 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US8275716B2 (en) 2001-05-31 2012-09-25 Contentguard Holdings, Inc. Method and system for subscription digital rights management
US6876984B2 (en) 2001-05-31 2005-04-05 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US7774280B2 (en) 2001-06-07 2010-08-10 Contentguard Holdings, Inc. System and method for managing transfer of rights using shared state variables
CA2432189A1 (en) * 2001-06-07 2002-12-19 Contentguard Holdings, Inc. Cryptographic trust zones in digital rigths management
AU2002345577A1 (en) * 2001-06-07 2002-12-23 Contentguard Holdings, Inc. Protected content distribution system
BR0210932A (pt) * 2001-06-07 2004-06-08 Contentguard Holdings Inc Método e aparelho para gerenciar a transferência de direitos
US7100200B2 (en) * 2001-06-13 2006-08-29 Citrix Systems, Inc. Method and apparatus for transmitting authentication credentials of a user across communication sessions
US20050198379A1 (en) * 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
US7562146B2 (en) * 2003-10-10 2009-07-14 Citrix Systems, Inc. Encapsulating protocol for session persistence and reliability
US6948073B2 (en) 2001-06-27 2005-09-20 Microsoft Corporation Protecting decrypted compressed content and decrypted decompressed content at a digital rights management client
US7239708B2 (en) 2001-06-27 2007-07-03 Microsoft Corporation Protecting decrypted compressed content and decrypted decompressed content at a digital rights management client
US7421411B2 (en) * 2001-07-06 2008-09-02 Nokia Corporation Digital rights management in a mobile communications environment
US20030084332A1 (en) * 2001-10-26 2003-05-01 Koninklijke Philips Electronics N.V. Method for binding a software data domain to specific hardware
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
GB0202431D0 (en) * 2002-02-02 2002-03-20 F Secure Oyj Method and apparatus for encrypting data
US7984157B2 (en) * 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
US7661129B2 (en) * 2002-02-26 2010-02-09 Citrix Systems, Inc. Secure traversal of network components
US8216071B2 (en) * 2002-03-20 2012-07-10 Intel Corporation Method and apparatus for software delivery and management
US7287275B2 (en) 2002-04-17 2007-10-23 Moskowitz Scott A Methods, systems and devices for packet watermarking and efficient provisioning of bandwidth
US8250663B2 (en) * 2002-09-04 2012-08-21 Music Public Broadcasting, Inc. Method and system for controlling presentation of media on a media storage device
JP2004072718A (ja) * 2002-06-12 2004-03-04 Fuji Photo Film Co Ltd デジタルカメラ用メモリーカード
US8233392B2 (en) * 2003-07-29 2012-07-31 Citrix Systems, Inc. Transaction boundary detection for reduction in timeout penalties
US8270423B2 (en) * 2003-07-29 2012-09-18 Citrix Systems, Inc. Systems and methods of using packet boundaries for reduction in timeout prevention
US7616638B2 (en) 2003-07-29 2009-11-10 Orbital Data Corporation Wavefront detection and disambiguation of acknowledgments
US7630305B2 (en) 2003-07-29 2009-12-08 Orbital Data Corporation TCP selective acknowledgements for communicating delivered and missed data packets
US7370212B2 (en) 2003-02-25 2008-05-06 Microsoft Corporation Issuing a publisher use license off-line in a digital rights management (DRM) system
US8510571B1 (en) 2003-03-24 2013-08-13 Hoi Chang System and method for inserting security mechanisms into a software program
JP4424465B2 (ja) * 2003-06-09 2010-03-03 ソニー株式会社 情報機器、情報サーバおよび情報処理プログラム
US8432800B2 (en) 2003-07-29 2013-04-30 Citrix Systems, Inc. Systems and methods for stochastic-based quality of service
US8238241B2 (en) 2003-07-29 2012-08-07 Citrix Systems, Inc. Automatic detection and window virtualization for flow control
US8437284B2 (en) 2003-07-29 2013-05-07 Citrix Systems, Inc. Systems and methods for additional retransmissions of dropped packets
US20060242406A1 (en) 2005-04-22 2006-10-26 Microsoft Corporation Protected computing environment
US8077632B2 (en) * 2005-01-20 2011-12-13 Citrix Systems, Inc. Automatic LAN/WAN port detection
US8725646B2 (en) 2005-04-15 2014-05-13 Microsoft Corporation Output protection levels
US9363481B2 (en) 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
US7281652B2 (en) * 2005-05-18 2007-10-16 Foss Jonathan G Point-of-sale provider evaluation
US20060265758A1 (en) 2005-05-20 2006-11-23 Microsoft Corporation Extensible media rights
US20060271493A1 (en) * 2005-05-24 2006-11-30 Contentguard Holdings, Inc. Method and apparatus for executing code in accordance with usage rights
US7438078B2 (en) * 2005-08-05 2008-10-21 Peter Woodruff Sleeping bag and system
US7895639B2 (en) * 2006-05-04 2011-02-22 Citrix Online, Llc Methods and systems for specifying and enforcing access control in a distributed system
US7814334B2 (en) * 2007-06-18 2010-10-12 International Business Machines Corporation Method and apparatus for changing and adding activation keys for functions of digital content without having to change and recompile the digital content
JP2009027525A (ja) * 2007-07-20 2009-02-05 Nec Corp 光伝送システムおよび光伝送方法
US20090064134A1 (en) * 2007-08-30 2009-03-05 Citrix Systems,Inc. Systems and methods for creating and executing files
KR101401818B1 (ko) 2007-09-12 2014-05-30 소니 픽쳐스 엔터테인먼트, 인크. 하나 이상의 사용자 장치들에 대한 콘텐츠 배포 방법 및 시스템
US8127235B2 (en) 2007-11-30 2012-02-28 International Business Machines Corporation Automatic increasing of capacity of a virtual space in a virtual world
US20090164919A1 (en) 2007-12-24 2009-06-25 Cary Lee Bates Generating data for managing encounters in a virtual world environment
JP5159375B2 (ja) 2008-03-07 2013-03-06 インターナショナル・ビジネス・マシーンズ・コーポレーション メタバースにおけるオブジェクトの真贋判断システム、方法及びそのコンピュータ・プログラム
CA2659016A1 (en) * 2009-03-23 2010-09-23 Doug P. Horsley Polychromatic harmonica
US9205328B2 (en) 2010-02-18 2015-12-08 Activision Publishing, Inc. Videogame system and method that enables characters to earn virtual fans by completing secondary objectives
US8402555B2 (en) 2010-03-21 2013-03-19 William Grecia Personalized digital media access system (PDMAS)
US20100185868A1 (en) * 2010-03-21 2010-07-22 William Grecia Personilized digital media access system
US9682324B2 (en) 2010-05-12 2017-06-20 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
US9043863B1 (en) 2010-09-07 2015-05-26 Symantec Corporation Policy enforcing browser
US8832855B1 (en) * 2010-09-07 2014-09-09 Symantec Corporation System for the distribution and deployment of applications with provisions for security and policy conformance
US8955152B1 (en) 2010-09-07 2015-02-10 Symantec Corporation Systems and methods to manage an application
US10137376B2 (en) 2012-12-31 2018-11-27 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
CN104182661A (zh) * 2013-05-24 2014-12-03 富泰华工业(深圳)有限公司 软件保护系统
US10286326B2 (en) 2014-07-03 2019-05-14 Activision Publishing, Inc. Soft reservation system and method for multiplayer video games
US11351466B2 (en) 2014-12-05 2022-06-07 Activision Publishing, Ing. System and method for customizing a replay of one or more game events in a video game
US10118099B2 (en) 2014-12-16 2018-11-06 Activision Publishing, Inc. System and method for transparently styling non-player characters in a multiplayer video game
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US10486068B2 (en) 2015-05-14 2019-11-26 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US10315113B2 (en) 2015-05-14 2019-06-11 Activision Publishing, Inc. System and method for simulating gameplay of nonplayer characters distributed across networked end user devices
US10286314B2 (en) 2015-05-14 2019-05-14 Activision Publishing, Inc. System and method for providing continuous gameplay in a multiplayer video game through an unbounded gameplay session
US10086266B2 (en) 2015-06-15 2018-10-02 Activision Publishing, Inc. System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
US10471348B2 (en) 2015-07-24 2019-11-12 Activision Publishing, Inc. System and method for creating and sharing customized video game weapon configurations in multiplayer video games via one or more social networks
US11185784B2 (en) 2015-10-08 2021-11-30 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US10099140B2 (en) 2015-10-08 2018-10-16 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US10376781B2 (en) 2015-10-21 2019-08-13 Activision Publishing, Inc. System and method of generating and distributing video game streams
US10232272B2 (en) 2015-10-21 2019-03-19 Activision Publishing, Inc. System and method for replaying video game streams
US10245509B2 (en) 2015-10-21 2019-04-02 Activision Publishing, Inc. System and method of inferring user interest in different aspects of video game streams
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10226703B2 (en) 2016-04-01 2019-03-12 Activision Publishing, Inc. System and method of generating and providing interactive annotation items based on triggering events in a video game
US10226701B2 (en) 2016-04-29 2019-03-12 Activision Publishing, Inc. System and method for identifying spawn locations in a video game
US10179289B2 (en) 2016-06-21 2019-01-15 Activision Publishing, Inc. System and method for reading graphically-encoded identifiers from physical trading cards through image-based template matching
US10573065B2 (en) 2016-07-29 2020-02-25 Activision Publishing, Inc. Systems and methods for automating the personalization of blendshape rigs based on performance capture data
US10463964B2 (en) 2016-11-17 2019-11-05 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible heatmaps
US10709981B2 (en) 2016-11-17 2020-07-14 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps
US10500498B2 (en) 2016-11-29 2019-12-10 Activision Publishing, Inc. System and method for optimizing virtual games
US10055880B2 (en) 2016-12-06 2018-08-21 Activision Publishing, Inc. Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional
US10861079B2 (en) 2017-02-23 2020-12-08 Activision Publishing, Inc. Flexible online pre-ordering system for media
US10818060B2 (en) 2017-09-05 2020-10-27 Activision Publishing, Inc. Systems and methods for guiding motion capture actors using a motion reference system
US10974150B2 (en) 2017-09-27 2021-04-13 Activision Publishing, Inc. Methods and systems for improved content customization in multiplayer gaming environments
US11040286B2 (en) 2017-09-27 2021-06-22 Activision Publishing, Inc. Methods and systems for improved content generation in multiplayer gaming environments
US10561945B2 (en) 2017-09-27 2020-02-18 Activision Publishing, Inc. Methods and systems for incentivizing team cooperation in multiplayer gaming environments
US10537809B2 (en) 2017-12-06 2020-01-21 Activision Publishing, Inc. System and method for validating video gaming data
US10463971B2 (en) 2017-12-06 2019-11-05 Activision Publishing, Inc. System and method for validating video gaming data
US10981051B2 (en) 2017-12-19 2021-04-20 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US10864443B2 (en) 2017-12-22 2020-12-15 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US10596471B2 (en) 2017-12-22 2020-03-24 Activision Publishing, Inc. Systems and methods for enabling audience participation in multi-player video game play sessions
US11278813B2 (en) 2017-12-22 2022-03-22 Activision Publishing, Inc. Systems and methods for enabling audience participation in bonus game play sessions
US11192028B2 (en) 2018-11-19 2021-12-07 Activision Publishing, Inc. Systems and methods for the real-time customization of video game content based on player data
US11263670B2 (en) 2018-11-19 2022-03-01 Activision Publishing, Inc. Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user
US11115712B2 (en) 2018-12-15 2021-09-07 Activision Publishing, Inc. Systems and methods for indexing, searching for, and retrieving digital media
US11679330B2 (en) 2018-12-18 2023-06-20 Activision Publishing, Inc. Systems and methods for generating improved non-player characters
US11305191B2 (en) 2018-12-20 2022-04-19 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11344808B2 (en) 2019-06-28 2022-05-31 Activision Publishing, Inc. Systems and methods for dynamically generating and modulating music based on gaming events, player profiles and/or player reactions
US11097193B2 (en) 2019-09-11 2021-08-24 Activision Publishing, Inc. Methods and systems for increasing player engagement in multiplayer gaming environments
US11423605B2 (en) 2019-11-01 2022-08-23 Activision Publishing, Inc. Systems and methods for remastering a game space while maintaining the underlying game simulation
US11712627B2 (en) 2019-11-08 2023-08-01 Activision Publishing, Inc. System and method for providing conditional access to virtual gaming items
US11537209B2 (en) 2019-12-17 2022-12-27 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
US11420122B2 (en) 2019-12-23 2022-08-23 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11563774B2 (en) 2019-12-27 2023-01-24 Activision Publishing, Inc. Systems and methods for tracking and identifying phishing website authors
US11524234B2 (en) 2020-08-18 2022-12-13 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically modified fields of view
US11351459B2 (en) 2020-08-18 2022-06-07 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically generated attribute profiles unconstrained by predefined discrete values
US11833423B2 (en) 2020-09-29 2023-12-05 Activision Publishing, Inc. Methods and systems for generating level of detail visual assets in a video game
US11717753B2 (en) 2020-09-29 2023-08-08 Activision Publishing, Inc. Methods and systems for generating modified level of detail visual assets in a video game
US11724188B2 (en) 2020-09-29 2023-08-15 Activision Publishing, Inc. Methods and systems for selecting a level of detail visual asset during the execution of a video game
US12485347B2 (en) 2020-11-11 2025-12-02 Activision Publishing, Inc. Systems and methods for procedurally animating a virtual camera associated with player-controlled avatars in video games
US11439904B2 (en) 2020-11-11 2022-09-13 Activision Publishing, Inc. Systems and methods for imparting dynamic and realistic movement to player-controlled avatars in video games
US12179113B2 (en) 2020-12-09 2024-12-31 Activision Publishing, Inc. Methods and systems for dynamically selecting and modifying digital assets within game elements of a multiplayer video game
US12097430B2 (en) 2020-12-28 2024-09-24 Activision Publishing, Inc. Methods and systems for generating and managing active objects in video games
US12064688B2 (en) 2020-12-30 2024-08-20 Activision Publishing, Inc. Methods and systems for determining decal projections intersecting spatial units in a frame of a game space
US11853439B2 (en) 2020-12-30 2023-12-26 Activision Publishing, Inc. Distributed data storage system providing enhanced security
US11794107B2 (en) 2020-12-30 2023-10-24 Activision Publishing, Inc. Systems and methods for improved collision detection in video games
US12434152B2 (en) 2021-10-13 2025-10-07 Activision Publishing, Inc. Systems and methods for dynamically enabling feature changes in a mobile game
US12293076B2 (en) 2021-10-15 2025-05-06 Morgan Stanley Services Group Inc. High-compression, high-volume deduplication cache
US11422977B1 (en) * 2021-10-15 2022-08-23 Morgan Stanley Services Group Inc. High-compression, high-volume deduplication cache
US12370445B2 (en) 2021-11-12 2025-07-29 Activision Publishing, Inc. Computer implemented method of scalably generating gaming assets for rendering during gameplay
US12589303B2 (en) 2021-11-12 2026-03-31 Activision Publishing, Inc. Computer-implemented methods for generating level of detail assets for dynamic rendering during a videogame session
US12544674B2 (en) 2021-12-20 2026-02-10 Activision Publishing, Inc. System and method for using room-scale virtual sets to design video games
US12589300B2 (en) 2022-09-30 2026-03-31 Activision Publishing, Inc. Systems and methods for improved corner slicing in a multiplayer video game

Family Cites Families (11)

* 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
US4864616A (en) * 1987-10-15 1989-09-05 Micronyx, Inc. Cryptographic labeling of electronically stored data
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 富士通株式会社 電子化データ保護システム、使用許諾者側装置および使用者側装置
IL107044A0 (en) * 1992-09-21 1993-12-28 Uniloc Singapore Private Ltd 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
KR100348027B1 (ko) * 2000-06-28 2002-08-07 류종렬 운영체제와 컴파일러가 연계된 프로그램 변경방지 시스템및 그 방법

Also Published As

Publication number Publication date
JP3503774B2 (ja) 2004-03-08
EP0679978A1 (en) 1995-11-02
EP0679978B1 (en) 2003-03-05
JPH07295799A (ja) 1995-11-10
US5737416A (en) 1998-04-07
CA2143874C (en) 2000-06-20
CA2143874A1 (en) 1995-10-26
DE69529782D1 (de) 2003-04-10

Similar Documents

Publication Publication Date Title
KR100200445B1 (ko) 파일 액세스 보안유지 방법 및 장치
KR100200443B1 (ko) 소프트웨어 객체 배포 방법
KR100188505B1 (ko) 화일 액세스 보호방법 및 컴퓨터 액세스 가능 메모리 매체
KR100200444B1 (ko) 소프트웨어 객체 배포 방법
JP3914430B2 (ja) ソフトウェア・オブジェクトの配布を可能にするための方法および装置
US6763464B2 (en) Self-protecting documents
JP3243331B2 (ja) ソフトウェア管理用階層媒体の作成方法,ソフトウェア管理用階層媒体の作成装置およびソフトウェア管理用階層媒体
US20140123218A1 (en) System for controlling access and distribution of digital property
US20060178997A1 (en) Systems and methods for authoring and protecting digital property
JPH10513289A (ja) 所定の使用条件を満たすようにデータ対象を管理するための方法およびシステム
GB2404537A (en) Controlling access to data using software wrappers
US20050060544A1 (en) System and method for digital content management and controlling copyright protection
JP2000101565A (ja) コンテンツ利用装置とコンテンツ利用プログラムを記録した記録媒体
WO1998027494A1 (en) Electronic document management method
US20040123126A1 (en) Method and apparatus for deterring piracy
JPH10240517A (ja) ソフトウェアの複製防止方法及び装置
JPWO1998027494A1 (ja) 電子文書管理方法

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

R17-X000 Change to representative recorded

St.27 status event code: A-3-3-R10-R17-oth-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

R17-X000 Change to representative recorded

St.27 status event code: A-3-3-R10-R17-oth-X000

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

FPAY Annual fee payment

Payment date: 20020108

Year of fee payment: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20030311

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20030311

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000