Claims (32)
컴퓨터 시스템으로 부터 복제 방지된 프로그램의 복제가 금지되는 컴퓨터 시스템에서 복제 방지된 프로그램을 실행하는 장치에 있어서, 복제 방지된 프로그램 데이타가 암호화된 형태로 저장되는 프로그램 메모리와, 상기 프로그램 메모리와 결합되고, 상기 복제 방지된 프로그램을 명백한 부분과 나머지 부분으로 해독하는 수단과; 상기 명백한 부분을 프로세서가 접근할 수 있는 메모리부에 제공하는 수단과; 상기 복제 방지된 프로그램의 나머지 부분을 저장하고 상기 프로세서가 직접 접근할 수 없는 나머지 메모리부와; 상기 프로세서에 의한 사용을 위해 상기 프로그램의 나머지 부분의 서브 셋트를 요청하는 수단과; 상기 복제 방지칩에 구비되며 상기 프로세서에 대해 저장된 상태로 주어지고 상기 요청된 서브 셋트가 요청되는 것이 예측되는 서브 셋트인지를 점검하는 수단으로 구성되는 복제 방지칩을 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.An apparatus for executing a copy-protected program in a computer system in which copying of copy-protected programs from a computer system is prohibited, the apparatus comprising: a program memory in which copy-protected program data is stored in an encrypted form; Means for decrypting said copy-protected program into an explicit portion and a remaining portion; Means for providing said explicit portion to a memory portion accessible by the processor; A remaining memory part for storing the remaining part of the copy-protected program and for which the processor can not directly access; Means for requesting a subset of the remainder of the program for use by the processor; And a means for checking whether the requested subset is a subset that is provided to the copy protection chip and which is stored in the stored state for the processor and in which the requested subset is predicted to be requested. Unauthorized copy protection device.
제1항에 있어서, 상기 프로그램 메모리에 저장된 복제 방지된 프로그램은 프로그램부분과 함께 저장되고 나머지 부분과는 분리되어 저장되는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.The apparatus of claim 1, wherein the copy-protected program stored in the program memory is stored together with the program portion and is stored separately from the remaining portion.
제1항에 있어서, 상기 나머지 부분은 복제 방지된 프로그램의 분기 명령 셋트인 것을 특징으로 하는 실행프로그램의 무단 복제 방지장치.The apparatus of claim 1, wherein the remaining portion is a branch instruction set of a copy-protected program.
제3항에 있어서, 상기 복제 방지칩은 최근에 실행된 분기 명령에 기초하여 분기 명령을 저장하기 위한 수단을 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.4. The apparatus according to claim 3, wherein the copy protection chip comprises means for storing a branch instruction based on a branch instruction that has been recently executed.
제1항에 있어서, 상기 분기 명령을 해독하는 수단은 해독 키와 함께 형성되는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.The apparatus according to claim 1, wherein the means for decrypting the branch instruction is formed with a decryption key.
제5항에 있어서, 상기 해독키는 휘발성 메모리에 저장되는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.6. The apparatus of claim 5, wherein the decryption key is stored in a volatile memory.
제6항에 있어서, 상기 휘발성 메모리는 복제 방지칩 위에 배치되며, 상기 복제 방지칩은 상기 휘발성 메모리의 적어도 일부를 덮어서 모호하게 만드는 덧씌운 회로를 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.7. The apparatus of claim 6, wherein the volatile memory is disposed on a copy protection chip, the copy protection chip comprising overlaid circuitry that covers and obscures at least a portion of the volatile memory. .
제7항에 있어서, 상기 덧씌운 회로가 그것의 제거가 그 전원을 제거하도록 휘발성 메모리용 전원과 결합되어 있는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.8. The apparatus of claim 7, wherein the overlaid circuitry is coupled to a power supply for volatile memory such that its removal removes its power source.
제1항에 있어서, 상기 프로세서의 명령 실행 속도를 결정하기 위한 클록 수단을 상기 클록 수단이 그 속도가 예상 범위 내라는 것을 결정할 때 프로세서 요청에 반응하는 복제 방지칩내에 설치되는 클록 수단을 더 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.2. The system of claim 1, further comprising clock means installed in a copy protection chip responsive to a processor request when the clock means determines that the speed is within the expected range, Wherein the program is a program for preventing unauthorized copying of an execution program.
제1항에 있어서, 암호와 전에 압축된 복제 방지된 프로그램을 해독 후에 압축 해제하는 데이타 압축 해제기를 더 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.The apparatus according to claim 1, further comprising a data decompressor for decompressing the decrypted program and a pre-compressed copy-protected program before decompression.
제10항에 있어서, 상기 압축 해제기는 엔트로피 디코더인 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.11. The apparatus of claim 10, wherein the decompressor is an entropy decoder.
제1항에 있어서, 그 결정된 체크섬이 예상되는 체크섬과 맞을 때만 프로세서 요청에 반응하는 복제 방지칩 내에 구비되고 프로세서 버스의 억세스의 체크섬을 결정하는 체크섬 수단을 더 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.The method of claim 1, further comprising checksum means in the copy protection chip responsive to the processor request only when the determined checksum matches the expected checksum and determining checksum of accesses of the processor bus. Copy protection device.
제1항에 있어서, 키 값에 의해 역으로 형성되고 결정되는 패턴에 따라 복제 방지된 프로그램의 데이타 요소를 재 배열하는 데이타 스크램블 장치를 더 구비하며, 여기서 상기 복제 방지된 프로그램은 프로그램 메모리에 저장되기 전에 상기 데이타 스크램블 장치의 역 배열 동작에 의해 재 배열되는 것을 특징으로 하는 실행프로그램의 무단 복제 방지장치.The data scrambler according to claim 1, further comprising a data scrambler for rearranging data elements of a copy protected program according to a pattern formed and determined inversely by a key value, wherein the copy protected program is stored in a program memory Wherein the data scrambling device is rearranged by an inverse arrangement operation of the data scrambler.
제13항에 있어서, 상기 데이타 스크램블 장치는 다수의 퍼스트-인 퍼스트- 아웃 버퍼들을 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.14. The apparatus of claim 13, wherein the data scrambler comprises a plurality of first-in first-out buffers.
제13항에 있어서, 상기 역으로 형성되고 결정되는 패턴은 의사 난수 발생기의 출력을 기준으로 하여 발생되는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.14. The apparatus of claim 13, wherein the reversed pattern is generated based on an output of the pseudo-random number generator.
제1항에 있어서, 해독수단이 의사 난수 발생기의 출력과 그 키값에 따라 해독동작을 하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.The apparatus according to claim 1, wherein the decryption means performs a decryption operation according to the output of the pseudo-random number generator and the key value.
제1항에 있어서, 체크수단이 예상되지 않은 서브 셋트가 요청된 것을 검출한 때, 상기 복제 방지칩의 동작과 프로그램의 흐름을 변경하는 변경수단을 더 구비하고, 여기서 상기 변경동작에 의해 프로그램의 흐름 또는 동작에 따른 부정적 효과가 발생하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.The apparatus according to claim 1, further comprising changing means for changing the operation of the copy protection chip and the flow of the program when the checking means detects that an unexpected subset is requested, Wherein a negative effect of the flow or operation occurs.
제17항에 있어서, 상기 변경수단은 프로세서를 정지시키는 수단인 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.The apparatus according to claim 17, wherein the changing means is means for stopping the processor.
무단 복제로 부터 프로그램 데이타를 복제 방지하는 장치에 있어서, 상기 프로그램 데이타로 부터 분기 명령을 추출하는 분기명령 분리기와; 압축된 데이타를 형성하기 위하여 추출된 분기명령과 프로그램 데이타의 나머지 부분을 압축하는 압축기 및 상기 압축된 데이타를 암호화하는 암호기를 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.An apparatus for copy protection of program data from unauthorized copying, comprising: a branch instruction separator for extracting a branch instruction from the program data; A compressor for compressing the extracted branch instruction and the remaining portion of the program data to form compressed data, and an encryption unit for encrypting the compressed data.
제19항에 있어서, 상기 분기명령 분리기는 프로그램 데이타의 체크섬을 표시하는 체크섬 데이타를 자동으로 발생시키는 수단; 및 프로그램 데이타 처리과정의 타이밍을 억세스하기 위해 사용되는 타이밍 정보를 자동으로 발생시키는 수단을 구비함으로써 상기 체크섬 데이타와 타이밍 정보가 압축기에 의해 압축되고 암호기에 의해 암호화되는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지장치.20. The apparatus of claim 19, wherein the branch instruction separator comprises: means for automatically generating checksum data indicative of a checksum of program data; And means for automatically generating timing information used for accessing the timing of the program data processing process so that the checksum data and the timing information are compressed by the compressor and encrypted by the encoder. Prevention device.
복제 방지가 안된 프로세서 버스를 거쳐 얻어지는 정보로 부터 이용가능한 형태로 복제 방지된 프로그램의 복제를 방지하기 위해 복제 방지 프로그램을 실행하는 방법에 있어서, 복제 방지가 안된 프로세서로 부터 하나 이상의 프로그램 명령 또는 하나 이상의 프로그램 데이타 요소중 적어도 하나를 구비하는 프로그램 데이타 블록의 요청을 받는 단계와; 복제 방지된 상태로 상기 프로그램 데이타 블록을 명백한 부분과 나머지 부분으로 해독하는 단계와; 복제 방지가 안된 프로세서로 상기 명백한 부분을 제공하는 단계와; 상기 복제 방지가 안된 프로세서로 부터 나머지 부분 요소의 요청을 받는 단계와; 복제 방지가 안된 프로세서의 상태와 이전의 요청을 받아 그 요청이 적절한지를 점검하는 단계와; 상기 복제 방지가 안된 프로세서로 부터 나머지 부분의 요청을 처리하는 단계와; 및 밑에 놓인 나머지 부분 요소가 요청에 반응한 정보 내용을 참조하여 이용 가능하지 않다고 결정되는 경우에 상기 요청에 반응하는 단계를 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지방법.A method for running a copy protection program to prevent copying of a copy protected program in a form usable from information obtained via a non-copy protected processor bus, the method comprising: Receiving a request for a program data block comprising at least one of program data elements; Decrypting the program data block into an explicit portion and a remaining portion in a copy protected state; Providing said explicit portion to a non-copy protected processor; Receiving a request for the remaining partial elements from the copy-protected processor; Receiving a previous request for the status of the non-copy protected processor and checking if the request is appropriate; Processing a remaining portion of the request from the non-copy-protected processor; And responding to the request if the remaining underlying element is determined not to be available by reference to information content responsive to the request.
제21항에 있어서, 상기 복제 방지된 프로그램을 형성하기 위하여 프로그램을 명백한 부분과 나머지 부분으로 분리하는 단계와; 및 상기 복제 방지된 프로그램의 권리없는 복제를 의도하는 무단 공격자에 의해 접근 가능한 메모리에 복제 방지된 프로그램을 저장하기 전에 복제 방지된 프로그램을 암호화하는 단계를 더 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지방법.22. The method of claim 21, further comprising: separating the program into an explicit portion and a remaining portion to form the copy-protected program; And encrypting the copy-protected program prior to storing the copy-protected program in a memory accessible by an unauthorized attacker intended for unauthorized copying of the copy-protected program. How to prevent.
제22항에 있어서, 상기 분리하는 단계는 복제 방지된 프로그램으로 부터 복제 방지된 프로그램의 분기명령을 분리하는 단계인 것을 특징으로 하는 실행 프로그램의 무단 복제 방지방법.The method according to claim 22, wherein said separating step is a step of separating a branch instruction of a copy-protected program from a copy-protected program.
제21항에 있어서, 상기 해독단계는 해독 키와 함께 실행되는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지방법.22. The method of claim 21, wherein the decryption is performed with a decryption key.
제24항에 있어서, 상기 해독키를 휘발성 메모리에 저장하는 단계를 더 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지방법.25. The method of claim 24, further comprising the step of storing the decryption key in a volatile memory.
제25항에 있어서, 상기 휘발성 메모리의 전원을 공급하는 단계와; 그 회로가 방해를 받을 때 상기 휘발성 메모리로 부터 전원이 제거되고 그 회로의 제거없이 상기 휘발성 메모리의 내용을 측정할 수 없도록 회로에 의해 상기 휘발성 메모리를 덮는 단계를 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지방법.26. The method of claim 25, further comprising: supplying power to the volatile memory; And covering the volatile memory with a circuit so that when the circuit is disturbed, power is removed from the volatile memory and the contents of the volatile memory can not be measured without removal of the circuit. How to prevent piracy.
제21항에 있어서, 요청에 반응하여 정보를 제공하기 전에 상기 프로세서의 명령 실행 속도를 점검하는 단계를 더 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지방법.22. The method of claim 21, further comprising checking the instruction execution speed of the processor before providing information in response to the request.
제21항에 있어서, 암호화되기 전에 압축되는 복제 방지 프로그램을 해독한 후에 압축 해제하는 단계를 더 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지방법.The method according to claim 21, further comprising decompressing and then decompressing the copy protection program compressed before being encrypted.
제21항에 있어서, 프로세서 버스에 대해 버스 억세스의 체크섬을 결정하는 단계와; 실행이 예상되는 복제 방지된 프로그램의 명령에 대해 예산되는 사전에 계산된 체크섬과 상기 체크섬을 비교하는 단계; 및 상기 체크섬과 사전에 계산된 체크섬이 다를 때, 상기 복제 방지된 프로그램의 방해받지 않는 동작을 막는 단계를 더 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지방법.22. The method of claim 21, further comprising: determining a checksum of the bus access to the processor bus; Comparing the checksum with a previously computed checksum that is budgeted for a command of a copy-protected program that is expected to be executed; And preventing an unobtrusive operation of the copy-protected program when the checksum differs from a previously computed checksum.
제21항에 있어서, 상기 공격자에 의해 접근 가능한 메모리에 저장하기 전에 키 값에 의해 역으로 형성되고 결정되는 패턴에 따라 복제 방지된 프로그램의 데이타 요소의 순서를 스크램블하는 단계; 및 상기 프로세서의 적절한 요청에 따라 데이타 요소의 순서를 디스크램블하는 단계를 더 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지방법.22. The method of claim 21, further comprising: scrambling the order of data elements of the copy protected program according to a pattern formed and determined inversely by a key value before being stored in a memory accessible by the attacker; And descrambling the order of the data elements according to an appropriate request of the processor.
제30항에 있어서, 상기 스크램블 단계는 역으로 형성되고 결정되는 패턴을 형성하기 위해 사용되는 의사 난수 발생 단계를 더 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지방법.32. The method of claim 30, wherein the scrambling step further comprises a pseudo-random number generation step used to form a pattern that is formed and determined inversely.
무단 복제에 대항하여 프로그램을 복제 방지하는 방법에 있어서, 비 분기명령과 분기명령의 순열에 따라 프로그램 코드를 분리하는 단계와; 압축된 데이타의 제1 셋트를 형성하기 위해 비 분기명령을 압축하는 단계와; 압축된 데이타의 제2셋트를 형성하기 위해 분기명령을 압축하는 단계; 및 상기 압축된 데이타의 제1 및 제2 셋트를 암호화하는 단계를 구비하는 것을 특징으로 하는 실행 프로그램의 무단 복제 방지방법.A method for copy protection of a program against unauthorized copying, the method comprising: separating program codes according to a permutation of a non-branch instruction and a branch instruction; Compressing a non-branch instruction to form a first set of compressed data; Compressing the branch instruction to form a second set of compressed data; And encrypting the first and second sets of the compressed data.