KR19990028931A - 허가없는 사용에 대비한 소프트웨어 보호 - Google Patents

허가없는 사용에 대비한 소프트웨어 보호 Download PDF

Info

Publication number
KR19990028931A
KR19990028931A KR1019980700233A KR19980700233A KR19990028931A KR 19990028931 A KR19990028931 A KR 19990028931A KR 1019980700233 A KR1019980700233 A KR 1019980700233A KR 19980700233 A KR19980700233 A KR 19980700233A KR 19990028931 A KR19990028931 A KR 19990028931A
Authority
KR
South Korea
Prior art keywords
algorithm
software
key
computer
external unit
Prior art date
Application number
KR1019980700233A
Other languages
English (en)
Inventor
마그네 아릴드 하클룬트
블라디미르 아. 올레슈추크
Original Assignee
지크비외른센, 지구르트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 지크비외른센, 지구르트 filed Critical 지크비외른센, 지구르트
Publication of KR19990028931A publication Critical patent/KR19990028931A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/109Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by using specially-adapted hardware at the client
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Emergency Protection Circuit Devices (AREA)
  • Devices For Executing Special Programs (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Moving Of Heads (AREA)
  • Orthopedics, Nursing, And Contraception (AREA)

Abstract

본 발명은 저작권 소유자의 허가없는 사용으로부터 소프트웨어, 특히 자유 배포된 응용 소프트웨어를 보호하는 장치에 관한 것이다. 복호로 사용되는 키(k2)와 구별되는 키(k1)를 사용하여 소프트웨어를 암호화함으로써, 더 나은 보호는 복호 키가 사용자에 대한 비밀을 유지할 때 인증되지않은 사용에 대비하여 달성된다. 추가 개선된 보안성은 부가적으로 소프트웨어가 사용되는 컴퓨터와 복호 키가 저장되는 외부 유니트 사이의 통신의 스크램블링-디스크램블링를 실행함으로써 달성된다. 또한, 외부 유니트는 그것이 호스트 컴퓨터로 복귀하도록 배열되고, 그것의 데이터 프로세싱으로부터의 결과는 호스트로부터 수신되며, 다음에 상기 결과는 개별 프로그램의 추가 실행에 사용된다.

Description

허가없는 사용에 대비한 소프트웨어 보호
소프트웨어, 특히 퍼스널 컴퓨터에서 실행하기 위해 사용되는 소프트웨어의 저작권 침해 복사는 소프트웨어에 매년 엄청난 자본을 투자하는 소프트웨어 판매자에게 심각한 문제이다. 특정 컴퓨터 프로그램 또는 프로그램 패키지의 설치 또는 운용을 위한 암호를 요구함으로써 인증되지않은 사용으로부터 소프트웨어를 보호하는데 사용되는 일반적 방법은 충분한 보안성을 제공하지 못하고 있다. 그러므로, 저작권 소유자의 허가가 정말 존재할 경우에만 특정 컴퓨터 프로그램 또는 컴퓨터 프로그램 패키지의 사용이 가능하게 하는 장치는 상당히 중요하게 되었다.
요구된 암호의 간단한 타이핑이 프로그램에 대한 접근을 획득하는데 충분하지 않은 장치를 확립하려는 몇몇 시도가 이루어져 왔다. 예를 들면, 임의 프로그램을 사용할 수 있도록 컴퓨터에 접속되는 특수 하드웨어를 요구하는 시스템들이 제시되어왔다. 이런 유니트는 예를 들어 컴퓨터의 입출력 단자 중 하나에 직접 접속되고, 프로그램된 부가적 루틴의 요구가 질문 형태로 응용 프로그램에서 이런 목적을 위해 포함될 때 정보가 판독되는 내부 메모리에 저장되는 고정된 테이블, 식별 번호 등을 포함하는 블라인드 플러그(또한 "동글(dongle))의 형태를 취한다. 또한 상기 유니트는 카드가 삽입되는 카드 판독기 스테이션 등의 형태를 취할 수 있는데, 질문은 상기 블라인드 플러그의 그것과 유사한 원리로 카드에 저장된다. 통상 체킹 절차는 프로그램 일치의 직접 비교를 형성하는 프로그램의 부가적 루틴을 포함하며, 정보의 대응하는 항목은 저장된 테이블내에 존재한다.
이런 장치의 예는 독일 특허 출원 제 44 19 115 호에 개시되어 있는데, 칩카드에 저장된 문제가 판독되며, 기대된 내용이 존재한다면 이 사실은 프로그램 사용을 위한 일치의 충분한 증거로서 간주된다. 체킹은 프로그램이 설치될 때, 또는 그것의 사용동안 수행될 수 있다. 독일 특허 출원 제 42 39 865 호는 부가적으로 수행된 소프트웨어 설치 횟수가 기록되어 설치의 횟수를 제한할 수 있는 장치를 제공하는 유사한 시스템을 개시하고 있다.
소프트웨어에 포함되어야 하는 부가적 루틴은 모든 공지된 디바이스의 주요 단점을 구성한다. 이런 루틴을 간단히 제거함으로써 소프트웨어는 정상적으로 동작할 것이며, 인증되지않은 사용으로부터의 보호는 상실될 것이다. 또한, 컴퓨터의 프로세서와 유니트 또는 카드의 메모리 사이의 데이터 교환동안, 정보를 관측하는 것이 가능할 것이며, 이런 교환되는 정보의 코스는 프로그램이 사용될때와 동일하고, 또한 외부 메모리에 저장된 문제가 노출될 수도 있을 것이다. 메모리의 내용이 어떤 방식 또는 다른 방식으로 암호화되더라도, 통신 인터페이스에 걸친 이런 종류의 반복은 대응하는 하드웨어 유니트를 시뮬레이션하거나, 또는 상당히 신중한 계산력에 의한 "코드 파손"을 가능하게 할 수 있다.
영국 특허출원 제 2 163 577 호에 개시된 장치에서, 상기 타입의 하드웨어 유니트의 일부 단점은 특정 암호화 기술을 사용하고, 수개의 저장 수단과 부정조작할 수 없는 하우징내의 자체 프로세서를 적용함으로써 방지된다. 상기 하우징내의 프로세서는 하우징이 접속되는 호스트 컴퓨터로부터 전송되는 암호화된 응용 프로그램 또는 프로그램 모듈을 단독으로 복호하고 실행하도록 하우징에 저장되는 복호 키의 사용을 형성하고, 또한 그것의 명령은 하우징내에 저장된다. 암호화 기술 자체를 고려하면, 영국 특허 출원 제 2 163 577 호에 따른 장치는 응용 프로그램의 암호화를 위한 소위 데이터 암호화 표준(DES : data encryption standard) 알고리즘, 및 응용 프로그램의 복호를 위한 대응하는 역 DES 알고리즘을 사용하고, 여기에서 하나의 동일 키가 암호화 및 복호 둘다를 위해 사용된다. 그러므로, DES 표준은 대칭적이며, 보안성은 키 자체에만 존재한다. 따라서, 보안성을 유지하기 위하여, 또한 DES 키 자체의 암호화가 영국 특허 출원에 제시된다. 이런 목적을 위하여 암호화 및 복호를 위한 2개의 서로 다른 키를 가지는 소위 리베스트, 샤미르, 아들만(RSA : Rivest, Shamir, Adleman) 알고리즘이 사용되는데, 하나의 키를 다른 키로부터 공제하는 것은 실제적으로 불가능하다. 그러므로, RSA 암호화 시스템은 비대칭적 2개의 키 시스템(또한 공용 키/전용 키 암호화 시스템으로 불리우는)이며, 영국 특허 출원 제 2 163 577 호에 따른 장치의 경우에 DES 키를 암호화하기 위해 공지된 키(공용 키)가 될 수 있는 단지 하나의 키가 사용자가 알아서는 않되는 다른 키(전용 또는 비밀 키)가 DES 키를 복호하는데 사용되는 동안 사용된다. 후자의 키, 예를 들어 비밀 키는 부정 조작할 수 없는 하우징내의 메모리에 저장되어 암호화된 DES 키의 복호가 요구될 때 하우징내의 프로세서에 의해 명령 인출되고, 그것의 각각은 응용 프로그램을 실행할 수 있게 하는 목적을 위해 암호화된 응용 프로그램의 일부를 이룬다.
그러나, 영국 특허 출원 제 2 163 577 호에 따른 장치에서, 또한 외부 유니트와 호스트 컴퓨터 사이의 통신을 모니터하는 것이 가능하며, 통신 코스는 동일 암호화된 프로그램 모듈이 실행될 수 있을 때와 동일하다. 완전한 프로그램 모듈이 암호화되고 이런 모듈이 소프트웨어의 상대적으로 큰 일부를 형성하기 때문에, 이런 종류의 통신 인터페이스에 걸친 예측가능한 반복은 한번만 암호화된 프로그램 모듈을 복호할 목적을 위해 예를 들어 다음에 오프라인 모드에서 수행될 수 있는 소프트웨어의 나머지로부터 쉽게 분리될 수 있는 개별 프로그램 모듈의 식별을 돕는다. 더욱이, 완전한 응용 프로그램 모듈의 외부 복호, 저장 및 실행은 하우징내의 회로가 충분히 높은 데이터 프로세싱 능력 및 프로그램 모듈이 시작하는 호스트 컴퓨터와의 매우 빠른 통신을 소유하지 않는다면 용인할 수 없게 긴 시간 주기를 취할 것이다.
본 발명의 목적은 소프트웨어의 공급자 및/또는 사업주에게 인증되지않은 사용으로부터 제품을 보호하는 개선된 가능성을 제공하고, 소프트웨어가 제한없이 복사되고 배포될 수 있지만 여전히 필수 허가가 존재하지않는다면 사용될 수 없는 방식으로 종래 기술의 단점을 겪지않는 암호화 장치를 제공하는 것이다.
본 발명의 다른 목적은 개별 소프트웨어 모듈 뿐만 아니라 전체 프로그램 패키지를 수용할 수 있는 범용 특성의 암호화 장치를 제공하는 것인데, 사용 허가는 이를테면 프로그램 패키지의 선택된 부분에 대해 다른 레벨로 할당될 수 있다.
이런 목적들은 첨부 도면과 관련하여 알 수 있는 바와 같이 본 발명의 바람직한 실시예에 대한 보기의 아래 설명으로부터 더욱 명료하게 나타날 것이다.
발명의 요약
본 발명의 제 1 일반적 특징은,
- 제 1 알고리즘에 따라 상기 소프트웨어의 적어도 일부를 암호화하는 단계, 및
- 제 2 알고리즘에 따라 상기 소프트웨어의 암호화된 부분을 해독하는 단계를 포함하며, 상기 제 2 알고리즘은 외부 유니트에 저장되는 상기 소프트웨어의 암호화된 부분의 복호에 사용될 수 있는 키와 함께 상기 컴퓨터에 접속될 수 있고, 상기 외부 유니트는 적어도 컴퓨터 판독가능 저장 매체와 그것 자체의 프로세서를 포함하는, 컴퓨터에서 인증되지않은 사용을 방지하는 방법에 관한 것으로서,
상기 방법은, 상기 제 2 알고리즘에 따른 상기 복호는 상기 외부 유니트에 저장된 제 2 키를 사용함으로써 실행되고, 상기 제 2 키는 상기 제 1 알고리즘에 따른 상기 소프트웨어의 일부에 대한 암호화 실행에 사용되는 제 1 키와 다른 것을 특징으로 한다.
본 발명의 다른 특징은, 컴퓨터에서의 사용이 제 2 알고리즘에 따라 복호되는 상기 소프트웨어의 적어도 일부를 제 1 알고리즘에 따라 암호화하는 단계를 포함하는 소프트웨어 준비 방법에 관한 것으로서, 상기 제 1 알고리즘에 따라 상기 암호화를 위해 사용되는 키는 제 2 알고리즘에 따른 복호 실행에 사용되는 제 2 키와 다른 제 1 키이고, 소프트웨어의 일부는 상기 제 1 알고리즘과 제 1 키에 따라 암호화되는 것을 특징으로 한다.
상기 제 2 특징에서, 또한 본 발명은,
- 제 1 알고리즘과 제 1 키에 따라 소프트웨어의 적어도 일부에 대한 암호화를 달성하는 암호 수단, 및
- 컴퓨터에 접속될 수 있게 적용되고, 제 2 알고리즘과 키를 위해 적어도 그것의 자체 프로세서와 컴퓨터 판독가능 저장 매체를 포함하며, 제 2 알고리즘과 키에 따라 상기 소프트웨어의 암호화된 부분의 복호를 실행하도록 배치되는 외부 유니트를 포함하는, 대응하는 인증을 갖는 컴퓨터에서만 사용될 수 있도록 소프트웨어, 특히 자유 분배를 위해 의도된 소프트웨어 준비 장치에 관한 것으로서,
상기 제 2 알고리즘에 따른 상기 복호에 사용되는 제 2 키를 제공하는 발생기 수단을 더 포함하며, 상기 제 2 키는 상기 제 1 알고리즘에 따른 상기 소프트웨어의 일부의 암호화 실행에서 상기 암호 수단에 의해 사용되는 상기 제 1 키와 다른 것을 특징으로 한다.
본 발명의 제 3 특징은 컴퓨터에 외부 유니트를 접속하는 단계를 포함하고, 상기 외부 유니트는 적어도 컴퓨터 판독가능한 저장 매체와 그 자체의 프로세서, 및 상기 외부 유니트에 저장되는 소프트웨어의 암호화된 일부의 복호에 사용될 수 있는 제 2 알고리즘과 키를 포함하는, 소프트웨어, 특히 자유 분배 소프트웨어의 컴퓨터에서의 인증된 사용 가능성 형성 방법에 관한 것으로서, 제 1 알고리즘에 따라 암호화되는 상기 소프트웨어의 일부를 실행하는 상기 컴퓨터가 호출 시퀀스, 또는 부가된 목적 코드 이전에 대응하는 진입점으로의 점프를 초래하는 유사한 명령에 직면할 때, 상기 목적 코드는 상기 외부 유니트에 대한 통신 채널을 형성하기 위해 상기 컴퓨터에 의해 사용되고 상기 채널을 통해 상기 소프트웨어의 암호화된 일부는 둘다 상기 외부 유니트내에 저장되는 제 2 알고리즘과 제 2 키에 따라 상기 유니트 자체의 프로세서에 의해 복호될 수 있도록 제 1 전송 섹션에서 상기 외부 유니트로 전송되고, 상기 제 2 키는 상기 제 1 알고리즘에 따른 상기 소프트웨어의 상기 일부의 암호화의 실행에 사용되는 상기 제 1 키와 다르며, 다음에 상기 복호된 소프트웨어 부분은 상기 외부 유니트에서 처리되어 상기 결과는 상기 컴퓨터에서의 추가 사용을 위해 상기 통신 채널을 통해 반대 방향으로 상기 제 2 전송 섹션에서 전송되는 것을 특징으로 한다.
이런 제 3 특징에서 본 발명은 또한 적어도 그것 자체의 프로세서와 컴퓨터 판독가능 저장 매체를 포함하고, 그것과의 통신을 위해 상기 호스트 컴퓨터에 접속될 수 있는 외부 유니트에 대해 호스트 컴퓨터로서 기여하도록 사용되는 컴퓨터를 포함하는, 소프트웨어, 특히 자유 분배 소프트웨어의 인증된 사용 가능성 형성 장치에 관한 것으로서, 상기 외부 유니트는 상기 발생기 수단에 의해 생성된 상기 제 2 알고리즘과 상기 제 2 키에 따라 복호를 실행하는데 적용되는 복호 수단을 포함하며, 상기 제 2 알고리즘은 상기 제 1 알고리즘에 따라 상기 소프트웨어의 상기 암호화의 실행에서 상기 암호 수단에 의해 사용되는 상기 제 1 키와 다른 것을 특징으로 한다.
본 발명에 따른 방법 및 장치에 의해 저작권 소유자의 허가가 존재하지 않는다면 컴퓨터 프로그램 또는 컴퓨터 프로그램 팩키지의 형태의 소프트웨어를 사용하는 것이 극도로 어렵게 만드는 장치가 달성된다.
본 발명은 저작권 소유자의 허가 없는 사용으로부터의 소프트웨어, 특히 자유 배포 응용 소프트웨어 보호에 관한 것으로서; 특히 컴퓨터 소프트웨어의 인증되지않은 사용을 방지하는 방법; 단지 대응하는 인증을 갖는 컴퓨터에서의 사용을 위한 소프트웨어를 준비하기 위한 방법 및 장치; 및 본 발명의 특징에 따라 제공되어지는 컴퓨터 소프트웨어의 인증된 사용을 허용하기 위한 방법 및 장치에 관한 것이다.
도 1은 본 발명에 따른 바람직한 하드웨어 구성도.
도 2는 본 발명에 따른 간략화된 일반 소프프웨어 다이어그램.
도 3은 공통 명령 또는 실행 파일(.EXE 파일)이 암호화없이 발생되는 방법을 개략적으로 도시하는 도면.
도 4와 도 5는 소스 코드 레벨에서의 암호화가 본 발명에 따라 수행되는 방법을 개략적으로 도시하는 도면.
도 6은 자기 기록 디스크와 임의 접근 기억장치(RAM) 상의 소프트웨어 분할을 개략적으로 도시하는 도면.
도 7은 컴퓨터에서의 보호 소프트웨어의 사용을 개략적으로 도시하는 도면.
도 8은 도 4와 도 5에 도시된 타입의 암호화 프로세스의 보기를 도시하는 도면.
도 9는 컴퓨터에서의 보호 소프트웨어의 사용을 개략적으로 도시하는 도면.
도 10은 접근 체킹 또는 인증을 포함하는 응용 영역을 개략적으로 도시하는 도면.
도 11은 본 발명의 바람직한 실시예에 따른 암호화-복호 및 스크램블-디스크램블을 포함하는 프로세스의 코스를 개략적으로 도시하는 순서도.
우선 본 발명의 바람직한 하드웨어 구성을 도시하고 본 발명에 따른 호스트 컴퓨터로서 기여하는 워크스테이션 또는 퍼스널 컴퓨터의 형태를 가지는 컴퓨터를 도시하는 도 1를 참조한다. 도면에서, 본 발명에 따른 외부 유니트는 특히 스마트 카드를 위해 상업적으로 입수가능한 집적된 마이크로프로세서, 예를 들면 CCA12103 타입으로 제공되는 카드 판독기 또는 프로세서의 형태가 되는 것으로 도시되는데, 컴퓨터내에 포함되어 있는 상기 유니트는 직렬 또는 병렬 접속에 의해 컴퓨터에 접속되는 장비의 개별 유니트로 도시되거나 배치된다.
도 3은 공통 명령 또는 실행 파일(.EXE 파일)이 암호화없이 발생되는 방법을 도시하고; 도 4와 5는 각각의 이들의 고유 방식으로 암호화가 본 발명에 따른 소스 코드 레벨에서 수행될 수 있는 방법을 설명한다.
도 6은 소프트웨어 자체는 자기 기록 디스크 상에 배치되는 반면, 특수 프로그램(목적 코드 또는 데이터 라이브러리)은 컴퓨터의 임의 접근 기억장치(RAM)에 공급된다는 것을 도시한다.
도 7과 9는 보호 소프트웨어가 컴퓨터에서 사용될 때 발생하는 프로세스를 도시한다.
도 8은 도 4와 5에 도시된 타입의 암호화 프로세스의 보기를 도시한다. 여기에서, 상기 소스 코드는 Pascal, C, Modula 등과 같은 고레벨 프로그래밍 언어로 존재한다고 가정된다. 상기 소스 코드가 암호화되어 소위 인증되지않은 사용으로부터 보호된다는 것이다. 상기 소스 코드에서 암호화 함수(g)에 의해 암호화되는 다소의 파라미터가 선택된다. 예를 들면, 비보호 소스 코드내의 명령에 존재하는 식: x: = y +10은 다음과 같이 표현될 수 있다.
x의 올바른 값을 얻기 위하여 상기 보호 프로그램은 10 + T와 동일한 C의 값에 "도달"하여야 한다. 상기 복호 프로그램은 상기 보호 소프트웨어의 일부를 구성하는 "특수 소프트웨어"(부가된 목적 코드)내에 배치된다(도 5를 참조하라). 또한 상기 특수 소프트웨어는 여기에서 f와 f-1로서 표시되고 스마트 카드와 통신하기 위한 프로그램이 되는 스크램블링 및 디스크램블링 함수를 포함한다(도 7를 참조하라). 상기 스마트 카드와의 통신에서, 함수 f와 f-1는 스마트 카드로부터 명령 인출되는 키를 사용하고, 상기 스마트 카드 자체는 상기 보호 소프트웨어내에 배치된 변수 T의 임의 값을 생성하는 번호 발생기; 상기 복호 함수 g-1를 위한 비밀 키; 상기 복호 함수 g-1를 위한 알고리즘; 및 함수 f와 f-1를 위한 하나 이상의 키를 포함한다.
상기 암호와 함수 g와 복호 함수 g-1은 대칭적이 아닌 공용 키 암호화 시스템을 나타낸다는 것이 중요하다는 것에 유의하여야 한다. 이것은 상기 암호화 함수 g가 공지될 수 있는 공용 키를 사용한다는 것을 의미하지만, 그러나 이런 키는 상기 복호 함수 g-1에 도달하기에 충분하지않다(그것의 알고리즘도 그것의 키도 아니다). 그러므로, 상기 복호 함수 g-1를 위한 알고리즘과 키는 이들이 결코 전송되지않는 스마트 카드 상에 배치된다.
상기 함수 f, f-1, g, g-1는 교환적일 필요가 있다(예를 들면, 이들은 변화값없이 서로 교환가능하다). 여기에서 이것은 이들이 다음과 같은 특성을 가져야 한다는 것을 의미한다.
f-1(g-1(f(g(x)))) = x
이런 식의 보호 프로그램의 컴퓨터에서의 사용때, 상기 프로그램의 실행은 평상적으로 시작한다(도 7). 상기 스마트 카드와의 통신을 통해 변수값(T)와 함수 f 또는 f-1를 위한 키는 상기 소프트웨어내로 진입된다. 실행이 암호화된 파라미터(도시된 보기에서 g(10))에 도달하는 순간에 상기 값(g(10 + T)은 상기 스마트 카드에 f(g(10) + T)를 추가로 전달하는 특수 소프트웨어 보내진다. 상기 스마트 카드에서, g-1((10) +T) -T)의 값이 계산되고, 이 값은 상기 특수 소프트웨어로 복귀된다. 다음에 상기 특수 소프트웨어에 의해 f-1(g-1((10) + T) -T)))이 계산되고, 이것은 x와 x + T와 동일하며; 이런 결과는 상기 프로그램에서의 사용을 위해 파라미터 C로서 상기 보호 프로그램에 공급된다.
본 발명에 따른 이런 종류의 암호화-복호 장치를 가지고, 다음의 장점과 가능성이 실현된다.
- 스마트 카드의 사용에 의한 상당한 응용성.
- 스마트 카드의 라이선싱(예를 들면, 사용자)은 소프트웨어 제작자에 의해 보증된 수입자 또는 대리인에 의해 공급될 수 있다. 다음에 스마트 카드는 동일한 인증 형식과 알고리즘을 가지는 여러 소프트웨어 패키지를 위한 몇몇 레벨의 라이선스, 또는 허가를 포함할 수 있다.
- 비대칭 이중 키 암호화 장치(공용 키/ 전용 키 암호 시스템), 이를테면 RSA 암호 시스템을 사용하는 암호화의 제 1 레벨. 그결과 공용 키는 소프트웨어 제작자에만 사용가능하며, 상기 전용 키는 스마트 카드의 제조업자가 소프트웨어 제작자에 의해 주어진 명세에 따라 스마트 카드의 판독 전용 기억 장치(ROM)내에 기입되는 비밀 키이다. 상기 전용 키는 각각의 프로그램 패키지에 대해 다를 수 있다.
- 보호 소프트웨어가 실행되기 시작할 때 스마트 카드에 전송되고 스마트 카드의 인증 프로세스를 시작하는 전용 키 번호 0에 이해 스마트 카드에서 복호되는 비대칭 암호화된 인증 키.
- 상기 장치가 상기 동작 시스템에 무관하도록 하는 소스 코드 레벨에서의 암호화. 단지 명령 파일로 이루어진 것과 같은 파일의 작은 부분, 또는 프래그먼트를 암호화함으로써, 어떤 방식 또는 다른 방식으로 이런 부분을 손상시킬 목적을 위해 암호화된 소프트웨어의 이런 부분을 식별하는 것은 어렵다. 또한 복호 알고리즘 및 키는 쉽게 스마트 카드에 기입된다.
- 호스트 컴퓨터와 스마트 카드 사이의 통신이 로깅(logging)에 의한 통신으로부터 감지를 형성하는 어떤 것을 추적하는 것이 어렵게 되도록 하는 제 2 암호화 레벨. 사용될 수 있는 알고리즘은 보호 소프트웨어와 스마트 카드 둘다에 배치되고, 암호화 키와 복호 키는 둘다 스마트 카드내에 예를 들어 사용자에게 숨겨져 저장된다. 상기 암호화 알고리즘과 키는 여러 타입의 소프트웨어에 대해 다를 수 있다.
도 10은 본 발명에 따른 장치의 응용 범위가 추가 가능성이 존재할 수 있을 때 접근 체킹 또는 인증을 커버하도록 연장가능하다는 것을 증명하는데 기여한다. 본 발명의 이런 실시예에서, 보호될 수 있는 소프트웨어는 질문 형식의 소프트웨어 패키지를 위한 소위 공용 키와 식별 번호를 사용함으로써 암호화된 인증 키를 가질 수 있다. 다음에, 스마트 카드와 같은 외부 유니트는 바람직하게 마스크 프로그램밍되는 복호 알고리즘, 인증 키를 복호하는데 사용될 수 있는 전용 키 번호 0(ROM내의), 및 아래에 도시된 테이블로서 구성될 수 있는 접근 또는 인증 테이블을 포함할 것이다.
PID(프로그램 I.D. 번호) AcL(접근 레벨) PK(전용 키)
PID (1) AcL (1) PK (1)
PID (2) AcL (2) PK (1)
PID (3) AcL (3) PK (3)
..... ..... .....
PID (n) AcL (n) PK (n)
테이블에서, PID는 소프트웨어의 일치 번호를 표시하고, 그결과 다른 프로그램은 또한 개별 소프트웨어 제품 등의 버전 번호를 포함할 수 있는 유사하지않은 일치 번호에 할당된다. AcL은 접근이 허용되고 접근이 허용되지 않는 2개의 서로 다른 레벨; 개별 프로그램이 실행될 수 있는 제한된 횟수; 프로그램 사용을 위한 시간 제한, 예를 들어 허가 만료일; 프로그램에 대한 단지 단축된 변형(variant)으로의 접근, 예를 들면 소위 데모 변형과 같은 접근 레벨 또는 상태를 표시한다. 상기 테이블의 접근 레벨 칼럼인 AcL의 기입은 예를들어 소프트웨어 제품의 수입자 또는 대리인에 의해 수정가능하다.
상기 전용 키 칼럼 PK에서, 상기 소프트웨어 제작자는 소프트웨어의 일치 번호 PID에 의존하는 암호화된 프래그먼트의 복호에 사용될 수 있는 비밀키를 지정한다. 상기 비밀 키는 스마트 카드내에 마스크 프로그래밍되고 그밖의 누구든지 사용불가능하다.
도 11은 상기 소스 코드(g1, k1)의 암호화 단계; 상기 암호화된 데이터(g3, k3)의 스크램블링 단계; 상기 외부 유니트에 상기 스크램블된 암호화 데이터를 전송하고 그것의 (g4, k4)를 디스크램블링하는 단계; 상기 전송되고 디스크램블된 데이터(g2, k2)의 복호 단계; 상기 복호된 데이터를 처리하고, 상기 결과(g5, k5)를 스크램블링하는 단계; 상기 호스트 컴퓨터에 상기 스크램블된 데이터를 전송하고 그것의 (g6, k6)를 디스크램블링하는 단계; 및 추가 사용을 위해 상기 복호된 결과를 출력하는 단계를 포함하는 본 발명의 바람직한 실시예에 따른 프로세스의 거의 완전한 코스를 개략적으로 도시하는 순서도이다.
본 발명의 실시예로 도시된 보기에서, 스마트 카드는 아래의 청구항에 표시된 외부 유니트의 바람직한 수행을 구성한다. 이것은 아주 간단히 스마트 카드 기술이 첨부된 청구항에 따라 외부 유니트, 또는 개별 물품에 필수적으로 저장되어야 하는 알고리즘, 키 등의 최대 "부정 조작할 수 없는" 보호가 되는 것으로 고려되기 때문이다. 세계의 이런 카드의 소수 제조업자, 및 이런 카드, 특히 직불 카드의 형태를 가지는 카드의 사용에 임의로 쓸 수 있는 상당한 유용성은 이런 스마트 카드를 위조하는데 요구되는 지식이 부정직한 의도를 가지는 사람에게 쉽게 이용될 수 없을 것이라는 사실에 크게 기여한다. 이상에서는 본 발명의 양호한 일 실시예에 따라 본 발명이 설명되었지만, 첨부된 청구 범위에 의해 한정되는 바와 같은 본 발명의 사상을 일탈하지 않는 범위 내에서 다양한 변형이 가능함은 본 발명이 속하는 기술 분야의 당업자에게는 명백하다.

Claims (27)

  1. - 제 1 알고리즘에 따라 소프트웨어의 적어도 일부를 암호화하는 단계; 및
    - 제 2 알고리즘에 따라 상기 소프트웨어의 암호화된 부분을 복호하는 단계를 포함하며, 상기 제 2 알고리즘은 상기 소프트웨어의 암호화된 부분의 복호에 사용될 수 있는 키와 함께 컴퓨터에 접속될 수 있는 외부 유니트에 저장되고, 상기 외부 유니트는 적어도 하나의 컴퓨터 판독가능 저장 매체와 그 자체의 프로세서를 포함하는, 컴퓨터 소프트웨어의 인증되지않은 사용을 방지하는 방법에 있어서,
    상기 제 2 알고리즘(g2)에 따른 상기 복호는 상기 외부 유니트에 저장된 제 2 키(k2)를 사용함으로써 실행되고, 상기 제 2 키는 상기 제 1 알고리즘(g1)에 따른 상기 소프트웨어의 일부의 암호화의 실행에 사용되는 제 1 키(k1)와 다른 것을 특징으로 하는 컴퓨터 소프트웨어의 인증되지않은 사용을 방지하는 방법.
  2. 제 1항에 있어서,
    상기 제 1 알고리즘(g1)에 따른 상기 소프트웨어 일부의 암호화는 컴파일링과 링킹 이전에, 또는 실행가능한 프로그램을 생성하며 동시에 상기 실행가능한 프로그램의 데이터 라이브러리에 상기 외부 유니트와의 통신에 관련한 목적 코드를 부가하는 유사한 처리 단계 동안 상기 개별 소프트웨어의 소스 코드에서 실행되는 것을 특징으로 하는 컴퓨터 소프트웨어의 인증되지않은 사용을 방지하는 방법.
  3. 제 1항 또는 제 2항에 있어서,
    상기 제 2 알고리즘(g2)에 따라 실행되는 상기 소프트웨어의 암호화된 부분의 상기 복호는 상기 컴퓨터가 상기 소프트웨어의 실행에서 호출 시퀀스, 또는 상기 부가된 목적 코드에 대응하는 진입점으로의 점프를 초래하는 유사한 명령에 직면할 때 발생하고, 그결과 통신 채널은 상기 부가된 목적 코드의 사용에 의해 상기 컴퓨터와 상기 외부 유니트 사이에 형성되고, 상기 통신 채널을 통하여 상기 소프트웨어의 암호화된 부분은 제 1 전송 섹션에서 상기 유니트 자체의 프로세서에 의해 복호될 수 있게 상기 외부 유니트로 전송되며, 다음에 상기 복호된 소프트웨어 부분은 상기 외부 유니트에서 처리되어 상기 결과는 상기 컴퓨터에서의 추가 사용을 위해 제 2 전송 섹션에서 상기 통신 채널을 통해 반대 방향으로 전송되는 것을 특징으로 하는 컴퓨터 소프트웨어의 인증되지않은 사용을 방지하는 방법.
  4. 제 3항에 있어서,
    - 상기 제 1 알고리즘(g1)에 따라 암호화되는 상기 소프트웨어의 일부가 상기 제 1 전송 섹션 이전에 제 3 알고리즘(g3) 및 상기 개별 전송 섹션에 대해 임의로 선택되고 상기 외부 유니트에 의해 생성되는 번호에 기초하는 제 3 키(k3)에 따라 스크램블되는 단계; 및
    - 상기 제 1 알고리즘(g1)에 따라 암호화되고 상기 제 3 알고리즘(g4)에 따라 스크램블되며 상기 제 1 전송 섹션내의 상기 외부 유니트에 전송되는 상기 소프트웨어의 일부가 상기 제 3 알고리즘(g3)의 역 알고리즘이 되는 제 4 알고리즘(g4) 및 상기 제 3 키(k3)에 대해 임의로 선택된 상기 번호에 기초하는 제 4 키(k4)에 따라 상기 외부 유니트에서 디스크램블되는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 소프트웨어의 인증되지않은 사용을 방지하는 방법.
  5. 제 3항 또는 제 4항에 있어서,
    - 상기 제 2 알고리즘(g2)에 따라 암호화되는 상기 소프트웨어의 일부를 기초로 하여 상기 외부 유니트에서 생성되는 상기 결과가 상기 제 2 전송 섹션 이전에 제 5 알고리즘(g5) 및 상기 개별 전송 섹션에 대해 임의로 선택되고 상기 외부 유니트에 의해 생성되는 번호에 기초하는 제 5 키(k5)에 따라 스크램블되는 단계; 및
    - 상기 제 2 알고리즘(g2)에 따라 복호되고 상기 제 5 알고리즘(g5)에 따라 스크램블되어 상기 제 2 전송 섹션에서 상기 컴퓨터로 전송되는 상기 소프트웨어의 일부를 기초로 하여 상기 외부 유니트에서 생성된 상기 결과가 상기 제 5 알고리즘(g5)의 역 알고리즘이 되는 제 6 알고리즘(g6) 및 상기 제 5 키(k5)에 대해 임의로 선택된 상기 번호에 기초하는 제 6 키(k6)에 따라 상기 컴퓨터에서 디스크램블되는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 소프트웨어의 인증되지않은 사용을 방지하는 방법.
  6. 제 4항 또는 제 5항에 있어서,
    상기 제 3 및 제 4 키(k3, k4)에 대해 임의로 선택된 상기 번호, 및 상기 제 5 및 제 6 키(k5, k6)에 대해 임의로 선택된 상기 번호는 동일한 번호인 것을 특징으로 하는 컴퓨터 소프트웨어의 인증되지않은 사용을 방지하는 방법.
  7. 컴퓨터에서의 사용에 의해 제 2 알고리즘에 따라 복호되는 소프트웨어의 적어도 일부를 제 1 알고리즘에 따라 암호화하는 단계를 포함하고, 대응하는 인증을 갖는 컴퓨터에서만 사용하기 위한 소프트웨어, 특히 자유 분배를 위해 의도된 소프트웨어 준비 방법에 있어서,
    상기 제 1 알고리즘(g1)에 따른 상기 암호화를 위해 사용되는 키는 상기 제 1 알고리즘과 제 1 키에 따라 암호화되는 상기 소프트웨어 일부의 상기 제 2 알고리즘(g2)에 따른 상기 복호 실행에 사용되는 제 2 키(k2)와 다른 것을 특징으로 하는 소프트웨어 준비 방법.
  8. 제 7항에 있어서,
    상기 제 1 알고리즘(g1)에 따른 상기 소프트웨어 일부의 상기 암호화는 실행가능한 프로그램에 대한 컴파일링과 링킹 이전에, 또는 실행가능한 프로그램을 생성하고 동시에 상기 컴퓨터에 접속될 수 있는 외부 유니트와의 통신에 관련하여 상기 실행가능한 프로그램의 데이터 라이브러리에 목적 코드를 부가하는 유사한 단계로 상기 개별 소프트웨어에 대한 소스 코드 자체에서 실행되는 것을 특징으로 하는 소프트웨어 준비 방법.
  9. 제 7항 또는 제 8항에 있어서,
    실행가능한 프로그램에 대한 상기 소스 코드의 컴파일링 및/또는 링킹으로, 또는 실행가능한 프로그램, 호출 시퀀스, 또는 상기 부가된 목적 코드에 대한 대응하는 진입점으로의 점프를 초래하는 상기 실행가능한 프로그램의 컴퓨터에서의 실행으로 삽입되는 유사한 명령을 생성하는 유사한 처리 단계로, 상기 목적 코드는 상기 컴퓨터와 상기 복호가 상기 제 2 알고리즘(g2)에 따라 발생하는 외부 유니트 사이의 통신 채널을 형성하는데 사용되는 것을 특징으로 하는 소프트웨어 준비 방법.
  10. 제 9항에 있어서,
    제 3 키(k3)가 상기 제 1 알고리즘(g1)에 따라 암호화되는 상기 소프트웨어 일부에 삽입되는 단계를 더 포함하는데, 상기 제 3 키(k3)는 그것의 상기 외부 유니트로의 전송 이전에 상기 소프트웨어 일부의 스크램블링을 위해 제 3 알고리즘(g3)에 사용되는 것을 특징으로 하는 소프트웨어 준비 방법.
  11. 컴퓨터에 외부 유니트를 접속하는 단계를 포함하고, 상기 외부 유니트는 적어도 컴퓨터 판독가능한 저장 매체와 그 자체의 프로세서, 및 상기 외부 유니트에 저장되는 소프트웨어의 암호화된 일부의 복호에 사용될 수 있는 제 2 알고리즘과 키를 포함하는, 제 9항에 따라 준비된 소프트웨어, 특히 자유 분배 소프트웨어의 컴퓨터에서의 인증된 사용 가능성 형성 방법에 있어서,
    제 1 알고리즘(g1)에 따라 암호화되는 상기 소프트웨어의 일부를 실행하는 상기 컴퓨터가 호출 시퀀스, 또는 부가된 목적 코드 이전에 대응하는 진입점으로의 점프를 초래하는 유사한 명령에 직면할 때, 이러한 목적 코드는 상기 외부 유니트에 대한 통신 채널을 형성하기 위해 상기 컴퓨터에 의해 사용되고 상기 채널을 통해 상기 소프트웨어의 암호화된 일부는 둘다 상기 외부 유니트내에 저장되는 제 2 알고리즘(g2)과 제 2 키(k2)에 따라 상기 유니트 자체의 프로세서에 의해 복호될 수 있도록 제 1 전송 섹션에서 상기 외부 유니트로 전송되고, 상기 제 2 키(k2)는 상기 제 1 알고리즘(g1)에 따른 상기 소프트웨어의 상기 일부의 암호화의 실행에 사용되는 상기 제 1 키(k1)와 다르며, 다음에 상기 복호된 소프트웨어 부분은 상기 외부 유니트에서 처리되어 상기 결과는 상기 컴퓨터에서의 추가 사용을 위해 상기 통신 채널을 통해 반대 방향으로 상기 제 2 전송 섹션에서 전송되는 것을 특징으로 하는 컴퓨터에서의 인증된 사용 가능성 형성 방법.
  12. 제 10항에 따른 소프트웨어의 인증된 사용 가능성을 형성하는, 제 11항에 있어서,
    - 상기 접속된 외부 유니트로의 상기 제 1 전송 섹션 이전에, 상기 제 1 알고리즘(g1)에 따라 암호화되는 상기 소프트웨어의 일부는 상기 제 3 알고리즘(g3)과 상기 상기 제 3 키(k3)에 따라 스크램블되고, 상기 제 3 키(k3)는 상기 개별 전송 섹션에 대해 임의로 선택되고 상기 외부 유니트에 의해 제공되는 번호에 기초하며,
    - 상기 제 1 알고리즘(g)에 따라 암호화되며, 상기 제 3 알고리즘(g3)에 따라 스크램블되어 상기 제 1 전송 섹션에서 상기 외부 유니트에 전송되는 상기 소프트웨어 일부는 제 4 알고리즘(g4)과 제 4 키(4)에 따라 상기 외부 유니트에서 디스크램블되고, 상기 제 4 키(k4)는 상기 제 3 키(k3)에 대해 임의로 선택된 번호에 기초하고 상기 제 4 알고리즘(g4)은 상기 제 3 알고리즘(g3)의 역 알고리즘이 되는 것을 특징으로 하는 컴퓨터에서의 인증된 사용 가능성 형성 방법.
  13. 제 12항에 있어서,
    - 상기 제 2 알고리즘(g2)에 따라 복호되는 상기 소프트웨어 일부를 기초하여 상기 외부 유니트에서 생성되는 상기 결과는 상기 제 2 전송 섹션 이전에 제 5 알고리즘(g5)과 상기 개별 전송 섹션에 대해 임의로 선택된 번호에 기초하고 상기 외부 유니트에 의해 제공되는 제 5 키(k5)에 따라 스크램블되는 단계, 및
    - 상기 제 2 알고리즘(k2)에 따라 복호되는 상기 소프트웨어 일부를 기초하여 상기 외부 유니트에서 생성되며, 상기 제 5 알고리즘(g5)에 따라 스크램블되어 상기 제 2 전송 섹션에서 상기 컴퓨터에 전송되는 상기 결과는 상기 제 5 알고리즘(g5)의 역 알고리즘이 되는 제 6 알고리즘(g6)과 상기 제 5 키(k5)에 대해 상기 임의로 선택된 번호에 기초되는 제 6 키(k6)에 따라 디스크램블되게 되는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터에서의 인증된 사용 가능성 형성 방법.
  14. 제 1항 내지 제 13항 중 어느 한 항에 있어서,
    상기 제 1 및 제 2 알고리즘(g1, g2)과 상기 제 1 및 제 2 키(k1, k2)는 비대칭의 이중 키 암호 장치(공용 키/전용키 암호 시스템), 이를테면 RSA 암호 시스템에 따라 결정되고, 상기 제 1 키(k1)는 공지된 키(공용 키)가 되며, 상기 제 2 키(k2)는 상기 암호 장치의 비밀 키(전용 키)가 되는 것을 특징으로 하는 방법.
  15. 제 1항 내지 제 14항 중 어느 한 항에 있어서,
    상기 제 1 알고리즘(g1)에 따라 암호화될 수 있는 상기 소프트웨어 일부는 컴퓨터에 의한 상기 개별 소프트웨어의 사용을 완전히 명확히 함으로써 선택되는 되는 것을 특징으로 하는 방법.
  16. - 제 1 알고리즘과 제 1 키에 따라 소프트웨어의 적어도 일부에 대한 암호화를 달성하는 암호 수단, 및
    - 컴퓨터에 접속될 수 있게 적용되고, 제 2 알고리즘과 키를 위해 적어도 그것의 자체 프로세서와 컴퓨터 판독가능 저장 매체를 포함하며, 제 2 알고리즘과 키에 따라 상기 소프트웨어의 암호화된 부분의 복호를 실행하도록 배치되는 외부 유니트를 포함하는, 대응하는 인증을 갖는 컴퓨터에서만 사용될 수 있도록 소프트웨어, 특히 자유 분배를 위해 의도된 소프트웨어 준비 장치에 있어서,
    상기 제 2 알고리즘(g2)에 따른 상기 복호에 사용는 제 2 키(k2)를 제공하는 발생기 수단을 더 포함하며, 상기 제 2 키는 상기 제 1 알고리즘(g1)에 따른 상기 소프트웨어의 일부의 암호화 실행에서 상기 암호 수단에 의해 사용되는 상기 제 1 키(k1)와 다른 것을 특징으로 하는 소프트웨어 준비용 장치.
  17. 제 16항에 있어서,
    상기 암호 수단은 그것이 컴파일링되고 링크되거나, 또는 임의 다른 방식으로 실행가능한 프로그램에 전송되기 이전에 상기 개별 소프트웨어의 목적코드 자체의 상기 제 1 알고리즘(g1)에 따라 상기 소프트웨어의 일부의 상기 암호화를 수행하는데 사용되며, 동시에 상기 외부 유니트와의 통신에 관현한 목적 코드의 상기 실행가능한 프로그램의 상기 데이터 라이브러리에 대한 부가를 달성하는 것을 특징으로 하는 소프트웨어 준비 장치.
  18. 제 16 또는 제 17항에 있어서,
    상기 암호 수단은 실행가능한 프로그램에 대한 상기 컴파일링 및/또는 링킹 동안, 또는 실행가능한 프로그램, 호출 시퀀스, 또는 상기 컴퓨터의 상기 실행가능한 프로그램의 실행에서 상기 컴퓨터가 다음에 상기 접속된 외부 유니트에 대한 통신 채널을 형성하는데 사용하는 유사한 명령을 생성하는 유사한 처리동안 삽입하는데 사용되는 것을 특징으로 하는 소프트웨어 준비 장치.
  19. 제 18항에 있어서,
    상기 암호 수단은 상기 제 1 알고리즘(g1)에 따라 암호화되는 상기 소프트웨어의 일부에 진입하는데 사용되고, 제3 키(k3)는 상기 외부 유니트로의 그것의 전송 이전에 상기 소프트웨어의 일부를 스크램블링하기 위해 제 3 알고리즘(g3)에 사용될 수 있는 것을 특징으로 하는 소프트웨어 준비용 장치.
  20. 적어도 그것 자체의 프로세서와 컴퓨터 판독가능 저장 매체를 포함하고 그것과의 통신을 위해 상기 호스트 컴퓨터에 접속될 수 있는 외부 유니트에 대해 호스트 컴퓨터로서 기여하도록 사용되는 컴퓨터를 포함하는, 제 16항에 따른 장치에 의해 준비된 소프트웨어, 특히 자유 분배 소프트웨어의 인증된 사용 가능성 형성 장치에 있어서,
    상기 외부 유니트는 상기 발생기 수단에 의해 생성된 상기 제 2 알고리즘(g2)과 상기 제 2 키(k2)에 따라 복호를 실행하는데 적용되는 복호 수단을 포함하며, 상기 제 2 알고리즘(g2)은 상기 제 1 알고리즘(g1)에 따라 상기 소프트웨어의 상기 암호화의 실행에서 상기 암호 수단에 의해 사용되는 상기 제 1 키(k1)와 다른 것을 특징으로 하는 소프트웨어의 인증된 사용 가능성 형성 장치.
  21. 제 20항에 있어서,
    상기 복호 수단은 상기 제 1 알고리즘(g1)에 따라 암호화되는 상기 소프트웨어의 일부의 상기 실행에서 상기 호스트 컴퓨터가 상기 부가된 목적 코드에 대한 대응하는 진입점으로의 점프를 준비하는 호출 시퀀스에 직면할 때 상기 제 2 알고리즘(g2)에 따라 상기 복호를 실행하고, 다음에 상기 호스트 컴퓨터는 상기 외부 유니트에 대한 통신 채널을 형성하기 위해 상기 목적 코드를 사용하고, 상기 통신 채널을 통해 상기 소프트웨어의 암호화된 부분이 제 1 전송 섹션에서 상기 외부 채널에 전송되어 상기 복호를 받도록 하며, 상기 외부 채널 유니트 자체 프로세서의 복호된 부분은 상기 소프트웨어의 상기 복호된 부분을 처리하는데 사용되고 상기 결과가 상기 컴퓨터에서의 상기 결과의 추가 사용을 위해 제 2 전송 섹션에서 상기 통신 채널을 통해 반대 방향으로 전송되는 것을 특징으로 하는 소프트웨어의 인증된 사용 가능성 형성 장치.
  22. 제 19항에 따른 장치에 의해 준비된 소프트웨어의 인증된 사용 가능성 형성에 적용되는, 제 21항에 있어서,
    상기 외부 유니트는 상기 제 1 알고리즘(g1)에 따라 암호화되고, 상기 제 1 전송 섹션 이전에 상기 제 3 알고리즘(g3)에 따라 상기 호스트 컴퓨터에 의해 스크램블되어 상기 제 1 전송 섹션에서 상기 외부 유니트에 전송되는 상기 소프트웨어의 부분을 제 4 알고리즘(g4)에 따라 디스크램블하는 디스크램블러 수단을 포함하고, 상기 스크램블링에서 상기 호스트 컴퓨터에 의해 사용되는 상기 제 3 키(k3)는 상기 개별 전송 섹션에 대해 임의로 선택된 번호에 기초하고 상기 외부 유니트내의 상기 디스크램블러 수단에 의해 제공되고, 상기 제 4 키(k4))는 상기 제 3 키(k3)와 같이 동일한 임의로선택된 번호에 기초하며, 상기 제 4 알고리즘(g4)은 상기 제 3 알고리즘(g3)의 역 알고리즘인 것을 특징으로 하는 소프트웨어의 인증된 사용 가능성 형성 장치.
  23. 제 21항 또는 제 22항에 있어서,
    상기 외부 유니트는 상기 제 2 전송 섹션에서 상기 제 5 알고리즘(g1)과 제 5 키(k5)에 따라 상기 유니트가 상기 제 2알고리즘(g2)에 따라 복호되어지는 상기 소프트웨어의 부분을 기초하여 상기 외부 유니트에서 생성된 상기 결과를 스크램블하는 스크램블러 수단을 더 포함하고, 상기 스크램블링에서 상기 스크램블러 수단에 의해 사용된 상기 제 5 키(k5)는 상기 개별 전송 섹션에 대해 임의로 선택되고 상기 외부 유니트내의 번호 발생기에 의해 생성되는 번호에 기초하고, 상기 호스트 컴퓨터는 제 6 알고리즘(g6)과 제 6 키(k6)에 따라 상기 호스트 컴퓨터에서의 추가 사용을 위해 상기 외부 유니트에서 생성된 상기 결과를 디스크래블링할 수 있고, 상기 제 2 전송 섹션 이전에 상기 결과는 상기 외부 유니트내의 상기 스크램블러 수단에 의해 상기 제 5 알고리즘(g5)에 따라 스크램블되어 상기 제 2 전송 섹션에서 상기 상기 컴퓨터에 전송되고, 상기 제 6 키(k6)는 상기 제 5 키(k5)와 같은 동일한 임의로 선택된 번호에 기초하며, 상기 제 6 알고리즘(g5)은 상기 제 5 알고리즘(g5)의 역 알고리즘인 것을 특징으로 하는 소프트웨어의 인증된 사용 가능성 형성 장치.
  24. 제 16항 내지 제 23항 중 어느 한 항에 있어서,
    상기 외부 유니트는 어댑터 수단과 부정 조작할 수 없는 개별 물품을 포함하는데, 상기 개별 부품의 내부 또는 그 위에는 전기 회로가 배치되고, 상기 개별 물품은 적어도 상기 외부 유니트 프로세서와 컴퓨터 판독가능 저장 기억장치를 포함하고 통신 채널이 상기 개별 물품의 회로와 상기 호스트 컴퓨터 사이에 형성될 수 있도록 배열되고 상기 물품이 상기 어댑터 수단의 슬롯내에 삽입될 때 또는 임의 다른 방식으로 상기 어댑터 수단에 접속되며, 상기 제 2 알고리즘(g2)과 상기 제 2 키(k2)는 이들이 상기 개별 물품의 프로세서 외에 다른 수단에 의해 판독될 수 없고 상기 개별 물품 외부에서 결코 이용할 수 없는 식으로 상기 기억 장치에 저장되는 것을 특징으로 하는 장치.
  25. 제 24항에 있어서,
    상기 개별 품목은 크레디트 카드의 크기를 가지는 플라스틱 카드와 같은 작은 기판 플레이트, 또는 스마트 카드의 형태를 취하고, 다음에 상기 어댑터 수단은 상기 호스트 컴퓨터 또는 거기에 접속된 주변 유니트와 임의로 결합될 수 있는 상기 기판 플레이트를 위한 카드 판독기 스테이션을 포함하는 것을 특징으로 하는 장치.
  26. 제 24항에 있어서,
    상기 개별 물품은 카드 위치에 배치될 수 있게 변형된 전기 회로 카드 또는 카드 확장을 위해 상기 호스트 컴퓨터에 제공되는 슬롯의 형태를 취하고, 상기 회로 카드는 포터블 호스트 컴퓨터의 경우에 PCMCIA 표준과 같은 삽입가능 카드를 위해 사용되는 표준 디자인 중 하나에 따라 구성되는 것을 특징으로 하는 장치.
  27. 제 24항에 있어서,
    상기 개별 물품은 전기 블라인드 플러그 등의 형태를 취하고, 다음에 상기 어댑터 수단은 상기 호스트 컴퓨터의 입출력 단자를 포함하는 것을 특징으로 하는 장치.
KR1019980700233A 1995-07-13 1996-07-10 허가없는 사용에 대비한 소프트웨어 보호 KR19990028931A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
NO952795A NO302388B1 (no) 1995-07-13 1995-07-13 Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse
NO952795 1995-07-13

Publications (1)

Publication Number Publication Date
KR19990028931A true KR19990028931A (ko) 1999-04-15

Family

ID=19898393

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980700233A KR19990028931A (ko) 1995-07-13 1996-07-10 허가없는 사용에 대비한 소프트웨어 보호

Country Status (17)

Country Link
US (3) US6266416B1 (ko)
EP (2) EP0855052B1 (ko)
JP (1) JP4267065B2 (ko)
KR (1) KR19990028931A (ko)
CN (1) CN1155866C (ko)
AT (1) ATE233916T1 (ko)
AU (1) AU713872B2 (ko)
DE (1) DE69626530T2 (ko)
DK (1) DK0855052T3 (ko)
ES (1) ES2194109T3 (ko)
HK (2) HK1009533A1 (ko)
IL (1) IL122888A (ko)
NO (1) NO302388B1 (ko)
NZ (1) NZ313319A (ko)
PL (1) PL187088B1 (ko)
PT (1) PT855052E (ko)
WO (1) WO1997003398A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000053933A (ko) * 2000-05-10 2000-09-05 류종렬 소프트웨어의 정품인증시스템 및 그 방법
KR20030055713A (ko) * 2001-12-27 2003-07-04 한국전자통신연구원 디지털 컨텐츠 저작권 보호 장치 및 방법
KR100435918B1 (ko) * 2001-11-09 2004-06-16 주식회사 휴맥스 디지털 방송 프로그램에서의 데이터 암호화 기록 방법

Families Citing this family (117)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NO302388B1 (no) * 1995-07-13 1998-02-23 Sigurd Sigbjoernsen Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse
US6523119B2 (en) * 1996-12-04 2003-02-18 Rainbow Technologies, Inc. Software protection device and method
FR2760871B1 (fr) * 1997-03-13 1999-04-16 Bull Cp8 Procede de stockage et d'exploitation d'une information sensible dans un module de securite, et module de securite associe
SG67401A1 (en) * 1997-07-07 1999-09-21 Low Huan Khing A method and system for protecting intellectual property products distributed in mass market
US6442276B1 (en) 1997-07-21 2002-08-27 Assure Systems, Inc. Verification of authenticity of goods by use of random numbers
US6643775B1 (en) * 1997-12-05 2003-11-04 Jamama, Llc Use of code obfuscation to inhibit generation of non-use-restricted versions of copy protected software applications
EP0930616B1 (en) 1998-01-20 2005-07-13 Fujitsu Limited Data storage device and control method therefor
EP1004979A1 (en) * 1998-11-24 2000-05-31 CANAL+ Société Anonyme Portable electronic card
US7140005B2 (en) * 1998-12-21 2006-11-21 Intel Corporation Method and apparatus to test an instruction sequence
US7730300B2 (en) 1999-03-30 2010-06-01 Sony Corporation Method and apparatus for protecting the transfer of data
US6697489B1 (en) 1999-03-30 2004-02-24 Sony Corporation Method and apparatus for securing control words
JP2001016195A (ja) * 1999-04-27 2001-01-19 Matsushita Electric Ind Co Ltd 情報利用制御装置
FR2793050B1 (fr) * 1999-04-28 2001-08-17 Fingerprint Procede pour securiser un logiciel d'utilisation a partir d'une unite de traitement et de memorisation d'un secret et systeme en faisant application
US7036738B1 (en) 1999-05-03 2006-05-02 Microsoft Corporation PCMCIA-compliant smart card secured memory assembly for porting user profiles and documents
US7117369B1 (en) * 1999-05-03 2006-10-03 Microsoft Corporation Portable smart card secured memory system for porting user profiles and documents
US6681214B1 (en) * 1999-06-29 2004-01-20 Assure Systems, Inc. Secure system for printing authenticating digital signatures
JP4127587B2 (ja) 1999-07-09 2008-07-30 株式会社東芝 コンテンツ管理方法およびコンテンツ管理装置および記録媒体
US7351919B1 (en) * 1999-07-15 2008-04-01 Thomson Licensing Port cover for limiting transfer of electromagnetic radiation from a port defined in a host device
US6684389B1 (en) * 1999-08-05 2004-01-27 Canon Kabushiki Kaisha Compiler that decrypts encrypted source code
EP1076279A1 (en) * 1999-08-13 2001-02-14 Hewlett-Packard Company Computer platforms and their methods of operation
GB9922665D0 (en) 1999-09-25 1999-11-24 Hewlett Packard Co A method of enforcing trusted functionality in a full function platform
US6912513B1 (en) * 1999-10-29 2005-06-28 Sony Corporation Copy-protecting management using a user scrambling key
US7039614B1 (en) 1999-11-09 2006-05-02 Sony Corporation Method for simulcrypting scrambled data to a plurality of conditional access devices
US6304972B1 (en) * 2000-01-03 2001-10-16 Massachusetts Institute Of Technology Secure software system and related techniques
DE10003086A1 (de) * 2000-01-25 2001-08-02 Infineon Technologies Ag Datenverarbeitungssystem
SE0000871L (sv) * 2000-03-13 2001-09-14 Oerjan Vestgoete Ett förfarande och system för att vid elektronisk handel förhindra ej auktoriserad användning av programvara
DE10023820B4 (de) * 2000-05-15 2006-10-19 Siemens Ag Software-Schutzmechanismus
AU2001261616A1 (en) * 2000-05-17 2001-11-26 Smart Modular Technologies, (Ma) Programming a memory based on information obtained from a remote location
EP1308882A4 (en) * 2000-07-07 2004-03-24 Fujitsu Ltd TERMINAL DEVICE FOR INTEGRATED CIRCUIT CARD
MD1871G2 (ro) * 2000-07-28 2002-08-31 Компания ДЕКАРТ с ограниченной ответственностью Procedeu de protecţie contra copierii bazelor de date şi a programelor pentru calculator
JP4067757B2 (ja) * 2000-10-31 2008-03-26 株式会社東芝 プログラム配布システム
US8909555B2 (en) * 2001-04-24 2014-12-09 Hewlett-Packard Development Company, L.P. Information security system
ATE242892T1 (de) 2001-05-11 2003-06-15 Sospita As Sequenznummerierungsmechanismus zur sicherung der ausführungsordnungs-integrietät von untereinander abhängigen smart-card anwendungen
CN1442005A (zh) * 2001-05-15 2003-09-10 三菱电机株式会社 内容再生装置、内容分发服务器和内容分发系统
US7895616B2 (en) 2001-06-06 2011-02-22 Sony Corporation Reconstitution of program streams split across multiple packet identifiers
US7747853B2 (en) 2001-06-06 2010-06-29 Sony Corporation IP delivery of secure digital content
US7151831B2 (en) 2001-06-06 2006-12-19 Sony Corporation Partial encryption and PID mapping
US7146340B1 (en) * 2001-07-25 2006-12-05 Novell, Inc. Method and systems for licensing electronic data
JP2005512170A (ja) * 2001-11-12 2005-04-28 ネットワーク リサーチ ラブ リミテッド 不正使用に対する情報保護の方法および装置
CA2363795A1 (en) * 2001-11-26 2003-05-26 Cloakware Corporation Computer system protection by communication diversity
WO2003055132A1 (en) * 2001-12-21 2003-07-03 Sony Computer Entertainment Inc. Methods and apparatus for secure distribution of program content
US7823174B2 (en) 2002-01-02 2010-10-26 Sony Corporation Macro-block based content replacement by PID mapping
US7765567B2 (en) 2002-01-02 2010-07-27 Sony Corporation Content replacement by PID mapping
JP2003280754A (ja) * 2002-03-25 2003-10-02 Nec Corp 隠蔽化ソースプログラム、ソースプログラム変換方法及び装置並びにソース変換プログラム
US7162644B1 (en) 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
US20030200449A1 (en) * 2002-04-17 2003-10-23 International Business Machines Corporation Method of accessing a shared subroutine of computer system
US20030217280A1 (en) * 2002-05-17 2003-11-20 Keaton Thomas S. Software watermarking for anti-tamper protection
US7093119B2 (en) 2002-07-16 2006-08-15 International Business Machines Corporation Methods and computer program products for protecting source code of an interpreted programming language
AU2003268037A1 (en) * 2002-07-30 2004-02-16 Digital Interactive Streams, Inc. Digital content security system and method
DE60314782T2 (de) * 2002-08-01 2007-10-31 Matsushita Electric Industrial Co., Ltd., Kadoma Vorrichtung zum Generieren eines verschlüsselten Programms
GB2392262A (en) * 2002-08-23 2004-02-25 Hewlett Packard Co A method of controlling the processing of data
US8818896B2 (en) 2002-09-09 2014-08-26 Sony Corporation Selective encryption with coverage encryption
US8572408B2 (en) 2002-11-05 2013-10-29 Sony Corporation Digital rights management of a digital device
US7724907B2 (en) 2002-11-05 2010-05-25 Sony Corporation Mechanism for protecting the transfer of digital content
AR042599A1 (es) * 2002-11-19 2005-06-29 Schiavoni Juan Jose Metodo de proteccion de programas y equipo para realizarlo
JP2004171367A (ja) * 2002-11-21 2004-06-17 Matsushita Electric Ind Co Ltd 回路動作シミュレーション装置、回路動作シミュレーション方法、回路動作シミュレーションプログラム、および回路情報復号化プログラム
JP3878542B2 (ja) * 2002-11-29 2007-02-07 株式会社東芝 記録装置
US8645988B2 (en) 2002-12-13 2014-02-04 Sony Corporation Content personalization for digital content
US8667525B2 (en) 2002-12-13 2014-03-04 Sony Corporation Targeted advertisement selection from a digital stream
EP1439446B1 (de) * 2003-01-14 2006-03-29 Aladdin Knowledge Systems GmbH& Co. KG Verfahren zum Erweitern eines Programms um eine Kopierschutzfunktion
US7536558B2 (en) * 2003-08-29 2009-05-19 Tgbw Inc. Flash memory distribution of digital content
US20050071656A1 (en) * 2003-09-25 2005-03-31 Klein Dean A. Secure processor-based system and method
US7415618B2 (en) * 2003-09-25 2008-08-19 Sun Microsystems, Inc. Permutation of opcode values for application program obfuscation
US8220058B2 (en) * 2003-09-25 2012-07-10 Oracle America, Inc. Rendering and encryption engine for application program obfuscation
US7424620B2 (en) * 2003-09-25 2008-09-09 Sun Microsystems, Inc. Interleaved data and instruction streams for application program obfuscation
US7353499B2 (en) * 2003-09-25 2008-04-01 Sun Microsystems, Inc. Multiple instruction dispatch tables for application program obfuscation
US7363620B2 (en) * 2003-09-25 2008-04-22 Sun Microsystems, Inc. Non-linear execution of application program instructions for application program obfuscation
US20050069138A1 (en) * 2003-09-25 2005-03-31 Sun Microsystems, Inc., A Delaware Corporation Application program obfuscation
US7853980B2 (en) 2003-10-31 2010-12-14 Sony Corporation Bi-directional indices for trick mode video-on-demand
JP2007515723A (ja) * 2003-12-22 2007-06-14 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ アクティブなエンティティを使用するソフトウェア実行保護
US20050216548A1 (en) * 2004-03-04 2005-09-29 Brian Wormington Method and system for digital content distribution
FR2867635B1 (fr) * 2004-03-11 2006-09-22 Oberthur Card Syst Sa Procede de traitement de donnees securise, base notamment sur un algorithme cryptographique
JP2008505385A (ja) * 2004-07-02 2008-02-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ セキュリティユニットおよびそのようなセキュリティユニットを備える保護システムならびにデータを保護するための方法
US20060020552A1 (en) * 2004-07-26 2006-01-26 James Sloan Copy-restriction system for digitally recorded, computer disk-based music recordings
US7895617B2 (en) 2004-12-15 2011-02-22 Sony Corporation Content substitution editor
US8041190B2 (en) 2004-12-15 2011-10-18 Sony Corporation System and method for the creation, synchronization and delivery of alternate content
US20060137016A1 (en) * 2004-12-20 2006-06-22 Dany Margalit Method for blocking unauthorized use of a software application
CN100373376C (zh) * 2005-01-21 2008-03-05 深圳市致芯微电子有限公司 加密芯片、利用该加密芯片的cpu程序加密方法和系统
EP1866825A1 (en) 2005-03-22 2007-12-19 Hewlett-Packard Development Company, L.P. Methods, devices and data structures for trusted data
EP1717723A1 (en) * 2005-04-29 2006-11-02 ST Incard S.r.l. Improved virtual machine or hardware processor for IC-card portable electronic devices
JP2007065850A (ja) * 2005-08-30 2007-03-15 Fujitsu Ltd 情報処理装置、情報処理方法およびプログラム
US20070074050A1 (en) * 2005-09-14 2007-03-29 Noam Camiel System and method for software and data copy protection
JP4631658B2 (ja) * 2005-11-09 2011-02-16 ソニー株式会社 デジタル放送受信システム及びデジタル放送受信装置
CN100446016C (zh) * 2005-11-17 2008-12-24 北京兆维电子(集团)有限责任公司 一种实现数据安全保护的系统
US7991159B2 (en) * 2005-12-09 2011-08-02 Alcatel-Lucent Usa Inc. Layered mobile application security system
US8701091B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Method and system for providing a generic console interface for a graphics application
EP1798653B1 (de) * 2005-12-16 2011-08-03 Aladdin Europe GmbH Verfahren, Computerprogrammprodukt und Vorrichtung zum Schützen eines einen Funktionsblock aufweisenden Programms
US8185921B2 (en) 2006-02-28 2012-05-22 Sony Corporation Parental control of displayed content using closed captioning
US8452981B1 (en) * 2006-03-01 2013-05-28 Nvidia Corporation Method for author verification and software authorization
RU2296363C1 (ru) * 2006-04-27 2007-03-27 Общество с ограниченной ответственностью "АСТРОМА" Способ и средство защиты программного обеспечения от несанкционированного использования
US8436870B1 (en) 2006-08-01 2013-05-07 Nvidia Corporation User interface and method for graphical processing analysis
US8607151B2 (en) * 2006-08-01 2013-12-10 Nvidia Corporation Method and system for debugging a graphics pipeline subunit
US8436864B2 (en) * 2006-08-01 2013-05-07 Nvidia Corporation Method and user interface for enhanced graphical operation organization
US8963932B1 (en) 2006-08-01 2015-02-24 Nvidia Corporation Method and apparatus for visualizing component workloads in a unified shader GPU architecture
CN100428262C (zh) * 2006-09-22 2008-10-22 中山大学 一种基于改进的一次一密乱码本的软件保护方法
US20080133419A1 (en) * 2006-12-05 2008-06-05 Brian Wormington Secure financial transaction system and method
US8479020B2 (en) * 2007-07-25 2013-07-02 Motorola Mobility Llc Method and apparatus for providing an asymmetric encrypted cookie for product data storage
DE102007059798B3 (de) * 2007-12-11 2009-04-09 Ascolab Gmbh Verfahren zur Verschlüsselung von ausführbarem Programmcode, insbesondere als Schutz gegen unautorisierte Vervielfältigung, Manipulation und unautorisierten Betrieb
US8448002B2 (en) * 2008-04-10 2013-05-21 Nvidia Corporation Clock-gated series-coupled data processing modules
JP5037422B2 (ja) * 2008-04-30 2012-09-26 株式会社リコー 画像形成装置、アクセス制御方法、及びアクセス制御プログラム
KR101224717B1 (ko) * 2008-12-26 2013-01-21 에스케이플래닛 주식회사 소프트웨어 라이센스 보호 방법과 그를 위한 시스템, 서버,단말기 및 컴퓨터로 읽을 수 있는 기록매체
KR101049718B1 (ko) * 2008-12-29 2011-07-19 에스케이 텔레콤주식회사 소프트웨어 분리 실행 방법, 장치 및 컴퓨터로 읽을 수 있는 기록매체
WO2011013120A1 (en) * 2009-07-30 2011-02-03 Rascalim Software Security Ltd. System and method for limiting execution of software to authorized users
CN103797489B (zh) * 2011-03-21 2017-12-12 爱迪德技术有限公司 用于安全地将程序执行绑定到且节点锁定到受信任的签名授权机构的系统和方法
JP2014531663A (ja) 2011-08-05 2014-11-27 ケーピーアイティ テクノロジーズ リミテッド 埋め込みソフトウェアコードの保護システム
US9489541B2 (en) * 2011-09-09 2016-11-08 Nvidia Corporation Content protection via online servers and code execution in a secure operating system
ITMI20120561A1 (it) * 2012-04-05 2013-10-06 St Microelectronics Srl Metodo per proteggere un programma applicativo
US9323315B2 (en) 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US8850371B2 (en) 2012-09-14 2014-09-30 Nvidia Corporation Enhanced clock gating in retimed modules
US9471456B2 (en) 2013-05-15 2016-10-18 Nvidia Corporation Interleaved instruction debugger
CN103324871A (zh) * 2013-05-23 2013-09-25 董礼貌 一种软件万变链接设备、系统和方法
CN104462990B (zh) * 2013-09-13 2019-02-26 腾讯科技(深圳)有限公司 字符串加解密方法和装置
JP6287964B2 (ja) * 2015-06-09 2018-03-07 株式会社デンソー ソフトウェア複製防止システム
US9881142B2 (en) * 2015-09-11 2018-01-30 Patrick Robert Koren Method and apparatus for preventing and investigating software piracy
US11829454B2 (en) * 2018-03-09 2023-11-28 Patrick Robert Koren Method and apparatus for preventing and investigating software piracy
US20190362085A1 (en) * 2017-06-23 2019-11-28 Mitsubishi Electric Corporation Ladder program unauthorized-use prevention system and ladder program unauthorized-use prevention method
US20220374512A1 (en) * 2021-05-21 2022-11-24 Vmware, Inc. Software-based hardware security module (hsm) for a virtualized computing environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4683553A (en) * 1982-03-18 1987-07-28 Cii Honeywell Bull (Societe Anonyme) Method and device for protecting software delivered to a user by a supplier
US4757534A (en) * 1984-12-18 1988-07-12 International Business Machines Corporation Code protection using cryptography
US5222133A (en) * 1991-10-17 1993-06-22 Wayne W. Chou Method of protecting computer software from unauthorized execution using multiple keys

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558176A (en) * 1982-09-20 1985-12-10 Arnold Mark G Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software
US4799258A (en) * 1984-02-13 1989-01-17 National Research Development Corporation Apparatus and methods for granting access to computers
EP0175487A3 (en) * 1984-08-23 1989-03-08 Btg International Limited Software protection device
GB8423784D0 (en) * 1984-09-20 1984-10-24 Fifield K J Processing device
US5109413A (en) * 1986-11-05 1992-04-28 International Business Machines Corporation Manipulating rights-to-execute in connection with a software copy protection mechanism
US4817140A (en) * 1986-11-05 1989-03-28 International Business Machines Corp. Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor
EP0266748B1 (en) 1986-11-05 1995-02-08 International Business Machines Corporation A software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor
US5081676A (en) * 1990-10-04 1992-01-14 Chou Wayne W Method and apparatus for protecting multiple copies of computer software from unauthorized use
US5410717A (en) * 1991-03-22 1995-04-25 Allen-Bradley Company, Inc. Removable function card for a programmable controller processor
US5485519A (en) * 1991-06-07 1996-01-16 Security Dynamics Technologies, Inc. Enhanced security for a secure token code
US5319705A (en) * 1992-10-21 1994-06-07 International Business Machines Corporation Method and system for multimedia access control enablement
DE4239865A1 (de) 1992-11-27 1994-06-01 Heinz Johann Verfahren zur Verhinderung der Anwendung eines unberechtigt auf einen Datenträger kopierten Programms und Vorrichtung zur Durchführung des Verfahrens
US5337357A (en) * 1993-06-17 1994-08-09 Software Security, Inc. Method of software distribution protection
US5319704A (en) * 1993-06-17 1994-06-07 Exar Corporation Control circuit for voltage controlled attenuator for speakerphones
US5343527A (en) * 1993-10-27 1994-08-30 International Business Machines Corporation Hybrid encryption method and system for protecting reusable software components
US5398285A (en) * 1993-12-30 1995-03-14 Motorola, Inc. Method for generating a password using public key cryptography
DE4419115A1 (de) * 1994-06-01 1994-10-20 Michael Doelker Verfahren zum hochwirksamen Schutz vor unauthorisierter Benutzung von Softwarekopien
US5651068A (en) * 1995-03-08 1997-07-22 Hewlett-Packard Company International cryptography framework
NO302388B1 (no) * 1995-07-13 1998-02-23 Sigurd Sigbjoernsen Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4683553A (en) * 1982-03-18 1987-07-28 Cii Honeywell Bull (Societe Anonyme) Method and device for protecting software delivered to a user by a supplier
US4757534A (en) * 1984-12-18 1988-07-12 International Business Machines Corporation Code protection using cryptography
US5222133A (en) * 1991-10-17 1993-06-22 Wayne W. Chou Method of protecting computer software from unauthorized execution using multiple keys

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000053933A (ko) * 2000-05-10 2000-09-05 류종렬 소프트웨어의 정품인증시스템 및 그 방법
KR100435918B1 (ko) * 2001-11-09 2004-06-16 주식회사 휴맥스 디지털 방송 프로그램에서의 데이터 암호화 기록 방법
KR20030055713A (ko) * 2001-12-27 2003-07-04 한국전자통신연구원 디지털 컨텐츠 저작권 보호 장치 및 방법

Also Published As

Publication number Publication date
US20040193987A1 (en) 2004-09-30
IL122888A (en) 2000-10-31
ES2194109T3 (es) 2003-11-16
WO1997003398A1 (en) 1997-01-30
MX9800385A (es) 1998-09-30
US20030190043A1 (en) 2003-10-09
DK0855052T3 (da) 2003-07-07
NZ313319A (en) 1999-10-28
ATE233916T1 (de) 2003-03-15
PL324525A1 (en) 1998-06-08
HK1009533A1 (en) 1999-06-04
JPH11509023A (ja) 1999-08-03
IL122888A0 (en) 1998-08-16
JP4267065B2 (ja) 2009-05-27
AU713872B2 (en) 1999-12-09
NO302388B1 (no) 1998-02-23
HK1048674A1 (zh) 2003-04-11
CN1155866C (zh) 2004-06-30
EP1253503A3 (en) 2004-07-14
DE69626530D1 (de) 2003-04-10
PL187088B1 (pl) 2004-05-31
CN1192814A (zh) 1998-09-09
DE69626530T2 (de) 2003-11-13
AU6535796A (en) 1997-02-10
EP0855052B1 (en) 2003-03-05
NO952795D0 (no) 1995-07-13
EP0855052A1 (en) 1998-07-29
PT855052E (pt) 2003-06-30
NO952795L (no) 1997-01-14
EP1253503A2 (en) 2002-10-30
US6266416B1 (en) 2001-07-24

Similar Documents

Publication Publication Date Title
KR19990028931A (ko) 허가없는 사용에 대비한 소프트웨어 보호
EP0809379B1 (en) Authentication apparatus according to the challenge-response principle
US6014745A (en) Protection for customer programs (EPROM)
US7313828B2 (en) Method and apparatus for protecting software against unauthorized use
TW445402B (en) Secure processor with external memory using block chaining and block re-ordering
US7058818B2 (en) Integrated circuit for digital rights management
JP4461145B2 (ja) Sim装置用コンピュータシステム及び方法
US6684198B1 (en) Program data distribution via open network
EP1461681B1 (en) Protecting a device against unintended use in a secure environment
US20030120605A1 (en) System and method for preventing unauthorized use of protected software utilizing a portable security device
US20110083020A1 (en) Securing a smart card
US6336189B1 (en) Apparatus and method for data capsule generation
KR100358705B1 (ko) Pc 기반의 유.에스.비. 보안 모듈과 암호칩을 사용한정보 보호 장치
EP1471405A1 (en) Method and device for protecting information against unauthorised use
US8261076B2 (en) Method and device for agreeing shared key between first communication device and second communication device
JP2005215945A (ja) 情報処理装置、ソフトウェアの実行を許可する記憶装置、および、ソフトウェア実行方法
KR100310445B1 (ko) Pc 기반의 암호칩을 사용한 유.에스.비 보안모듈 제어방법
CA2226386C (en) Protection of software against use without permit
JP2000047866A (ja) プログラム実行プロテクト方法およびicカード、並びに記録媒体
KR20030010240A (ko) 아이씨칩내장카드를 이용한 소프트웨어불법복제방지방법과그 소프트웨어 복제방지용 아이씨칩내장카드
JP2005527896A (ja) メモリーに格納されたデジタルデータを保護するための方法および装置。
JPH11196083A (ja) スクランブルキー転送方法
Maradan et al. Smart Card Applications and Systems: Market Trend and Impact on Other Technological Development

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application