KR20000068373A - 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터 - Google Patents

예측 불가능 마이크로프로세서 또는 마이크로컴퓨터 Download PDF

Info

Publication number
KR20000068373A
KR20000068373A KR1019997001613A KR19997001613A KR20000068373A KR 20000068373 A KR20000068373 A KR 20000068373A KR 1019997001613 A KR1019997001613 A KR 1019997001613A KR 19997001613 A KR19997001613 A KR 19997001613A KR 20000068373 A KR20000068373 A KR 20000068373A
Authority
KR
South Korea
Prior art keywords
program
memory
microcomputer
operating
microprocessor
Prior art date
Application number
KR1019997001613A
Other languages
English (en)
Other versions
KR100578459B1 (ko
Inventor
위공미셸
Original Assignee
미쉘 꼴롱브
뷜 쎄뻬8
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 미쉘 꼴롱브, 뷜 쎄뻬8 filed Critical 미쉘 꼴롱브
Publication of KR20000068373A publication Critical patent/KR20000068373A/ko
Application granted granted Critical
Publication of KR100578459B1 publication Critical patent/KR100578459B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/75Protecting 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 by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting 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 by inhibiting the analysis of circuitry or operation with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context

Landscapes

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

Abstract

본 발명은 프로세서(1)와, 제1 동작 메모리(51)와, 오퍼레이팅 시스템, 메인 프로그램(P1) 및 제2 프로그램(P2)을 포함하는 메인 메모리(6)로 구성되는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터에 있어서, 또한 제2동작 메모리(52)와; 프로그램의 실행동안 그들의 내용을 보존하는 동안 2개의 동작 메모리(51,52) 중의 하나에 대하여 동작 메모리로서 사용을 스위칭하는 것이 가능하게 하는 스위칭 수단을 구비하며; 상기 스위칭 수단은 메인 메모리의 프로그램의 동작 문맥을 기억하는 적어도 한 블록의 레지스터(54)와, 각 메모리(51,526)와 연관되어 있고 상기 스위칭 회로(53)에 의해 제어되는 억세스 레지스터(A1-A3)(D1-D3)와 동작 메모리들 중의 하나를 인에이블시키는 스위칭 회로(53)로 구성되는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터에 관한 것이다.

Description

예측 불가능 마이크로프로세서 또는 마이크로컴퓨터{UNPREDICTABLE MICROPROCESSOR OR MICROCOMPUTER}
도 1은 본 발명의 일실시예에 따른 집적회로의 전자도면;
도 2는 인터럽트의 출현에 대한 명령의 실행과 언마스크 인터럽트의 확인에 대한 타이밍도;
도 3은도 3은 집적회로 메모리 레지스터 중 하나의 로딩회로의 다른 예를 보여주는 도면;
도 4는 회로의 정상적인 동작으로 리턴시키는 프로그램 부분(P2)의 논리도이다.
본 발명은 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터에 관한 것이다.
마이크로프로세서 또는 마이크로컴퓨터는 내부적 또는 외부적으로 마이크로프로세서 또는 마이크로컴퓨터에 공급되는 클록신호 중 하나에 대하여 기준 설정된 일 또는 몇 개의 타이밍 신호에 따라 순차적으로 단계적으로 메모리에 기록된 프로그램의 과도한 명령을 실행하는 것은 주지된 사실이다.
명령의 실행은 프로세서에 규칙적으로 타임을 제공하는 클록신호와 전체적으로 동기되며 이 프로그램에 의해 미리 결정된 순서에 대하여 순차적이기 때문에 시간의 함수로서 이러한 프로그램 실행 방법의 각종 단계를 아는 것이 가능하다는 것이 입증되었다. 실로 모든 프로그램은 미리 알려진 순서로 연속적으로 실행되어야 하는 일련의 명령을 발생하며, 그들이 시간이 진행하는 동안 미리 설정된 순서로 실행되기 때문에 각 명령이 시작되어 끝나는 순간은 정확하게 알려져 있다. 따라서, 실행되는 프로그램은 소정 순서의 명령으로 구성되어 있기 때문에 프로세서의 처리유닛에 주어진 순간에 어떤 명령이 실행되는 지를 아는 것이 원리적으로 가능하다.
예를들어, 프로그램 또는 처리유닛의 시작 현재에 실행되는 명령번호나 또는 사건(event), 내부 또는 외부 기준신호, 또는 다시 한번 프로세서의 리셋으로부터 경과한 시간을 결정하는 것이 가능하다.
이러한 마이크로프로세서 또는 마이크로컴퓨터에서 프로그램의 개요(run-through)를 관찰할 수 있는 가능성은 이러한 마이크로프로세서 또는 마이크로컴퓨터가 높은 보안분야에 사용될 때 중대한 단점이 된다. 따라서 악인이 프로세서의 연속적인 상태를 알 수 있고, 내부 처리에 관한 다수의 예민한 결과를 얻는데 이 정보를 사용할 수 있다.
예를들어, 내부의 기밀정보 또는 메시지의 해독의 테스팅 또는 다신 한번 몇가지 정보의 무결성(integrity) 테스팅과 같은 결정된 보안동작의 결과에 따라서 다른 순간에 정해진 동작(action)이 발생할 수 있다고 가정하는 것이 가능하다. 문제의 순간에 따라서는 예를들어, 프로세서를 작동시키거나 물리적인 조사에 의해 어떤 레지스터 값을 얻으며, 이에 따라 정보의 결과 또는 기밀내용에 관한 것으로 더욱이 암호 계산의 경우에는 사용된 비밀 해독키(ciphering key)에 관한 정보를 얻는 것이 가능하게 된다.
랜덤하게 클록 펄스를 발생하는 회로를 갖춘 보안 마이크로컴퓨터에 관한 초기 개량을 제공하는 장치가 있다. 이 방법에서는 사건의 관찰하는 경우 동기가 곧 실행 불가능하게 되므로 조사를 수행하는 것이 특히 어렵게 한다.
그러나, 이러한 종류의 해결책은 많은 결점을 포함하고 있다.
먼저, 이러한 회로의 설계는 마이크로컴퓨터와 같이 복잡한 회로를 통하여 랜덤한 동작을 시뮬레이팅하는 방법이 없기 때문에 특히 다루기 힘들고 까다롭다. 또한 그것의 스크램블드(scrambled) 처리된 행동과 관련하여 생산 말기에 회로를 테스트하는 것이 매우 어렵다. 랜덤한 일련의 클록펄스는 실제로 회로의 정의를 시뮬레이팅하는 것을 매우 어렵게 하나, 특히 내부버스 또는 레지스터에서의 신호 스위칭 기간 동안 모든 프로세서 로직회로의 모든 행동을 제어하는 것을 매우 어렵게 한다.
이것이 초기 개선, 즉 본 출원인에 의해 "개선된 집적회로와 이러한 집적회로에 사용되는 처리방법"의 제목으로 1996. 3. 7일 프랑스 특허 제 9602903 호로 출원된 주제가 이루어진 이유이며 이로 인하여 통상적인 주기적인 클록에 따라 정의와 테스트가 진행되는 동안 프로세서의 정상적인 동작이 이루어지도록 하며; 이 프로세서는 보호모드와 정상모드 사이의 스위칭이 가능하다. 보안을 보장하기 위하여 암호 또는 임시적인(특별한) 암호 메시지의 입력시에만 프로세서에 의해 모드가 활성화될 수 있게 가정하는 것은 쉬운 일이다.
이러한 어려움에 더하여 랜덤 클록의 제어하, 즉 전체적으로 무질서한 방식으로 단계를 진행하는 동안 실패를 진단하는데 어려움이 있다. 실제로 이러한 무질서 속에서 어떤 문제가 어떻게 결함부분에 기인할 수 있는 지 그리고 어떻게 그것이 나타난 정확한 상황이 결정될 수 있을까?
비록 그것이 이론적인 흥미로운 개선을 제공할지라도 랜덤 클록을 사용하는 것은 전체적으로 만족스런 해결방안이 될 수 없고 무엇보다도 실제로 구현하는 것이 쉽지 않다.
본 발명의 목적중 하나는 상기한 그러한 조사를 금지하며 전체적으로 단순한 설계가 가능하고 종래의 방법으로 고장의 진단이 가능한 전체적으로 제어되는 표준회로를 사용함과 동시에 프로세서의 내부행동을 부정 관찰하는 것을 방지할 수 있는 수단을 갖는 프로세서를 구비하는 것이다.
상기한 목적은 프로세서와, 초기 동작 메모리와, 운영 체제, 메인 프로그램 및 제2 프로그램을 포함하는 메인 메모리로 구성되는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터에 있어서, 또한
제2동작 메모리와;
프로그램의 실행동안 그들의 내용을 보존하는 동안 2개의 동작 메모리 중의 하나에 대하여 동작 메모리로서 사용을 스위칭하는 것이 가능하게 하는 통신수단을 구비하며;
상기 스위칭 수단은 문맥을 메모리하는 적어도 한 블록의 레지스터를 포함하여, 이에 의해 프로그램이 메인 메모리와 스위칭 회로를 관통실행(run-through)하여 각 메모리와 연관되어 있고 상기 스위칭 회로에 의해 제어되는 억세스 레지스터와 동작 메모리들 중의 하나를 유효화시키는 것에 특징이 있다는 사실에 의해 달성된다.
다른 특징에 따르면, 스위칭 수단은 제2프로그램의 관통실행을 위한 문맥을 메모리하는 제2블록의 레지스터를 구비한다.
다른 특징에 따르면, 스위칭 수단은 등시성(isochronal) 클록에 대하여 프로그램의 관통실행을 상관시키는 수단을 더 포함한다.
본 발명의 다른 목적은 상기 스위칭 수단의 구현이 프로세서 그 자체에 의해 보증되어 상기 스위칭 수단에 의해 발생된 임의 부가적인 보안이 단지 마이크로컴퓨터에 위치한 오퍼레이팅 시스템의 결정에 따르며, 따라서 악의적인 행동으로 간주될 때 예측 불가능하게 하는 것을 보장하는 것이다.
이 목적은 메인 프로그램이 각각의 동작 메모리와 연관된 메모리 레지스터 블록과 동작 메모리 유효화 회로를 로딩시킴에 의해 스위칭 메카니즘을 인에이블시키거나 금지시킬 수 있는 사실에 의해 달성된다.
다른 특징에 따르면, 제2동작 메모리와 그것의 억세스 레지스터는 메인 프로그램을 사용하는 동안 제1메모리와 그것 자신의 억세스 레지스터를 대체한다.
본 발명의 제3목적은 클록과 랜덤 타이밍 신호를 사용하는 것이 필요하지 않고, 실행시간이 프로그램 그 자체로 독립적으로 되는 것이다.
이 목적은 상관해제수단이 제2프로그램에 대해 랜덤방식으로 접속시킴에 의해 프로세서에 프로그램의 실행을 동기 해제하도록 인터럽트회로에 의해 랜덤 인터럽트를 트리거시킬 수 있는 랜덤 발생기를 포함한다는 사실에 의해 달성된다.
다른 특징에 따르면, 상관해제수단은 시간 카운트 종료시에 제2프로그램으로부터 메인 프로그램으로 귀환시키는 인터럽트를 트리거시키는 프로세서 1과 독립된 시간 카운팅 시스템을 포함한다.
다른 특징에 따르면, 동작 메모리에 대한 스위칭 수단은 프로세서와 그것의 프로그램, 또는 랜덤 인터럽트 시스템이나 타임 카운터, 또는 이들 셋중에서 적어도 2개의 임의의 조합에 의해 제어된다.
본 발명의 제4목적은 레지스터 스위칭이 민감한(sensitive) 정보에 대한 직/간접 억세스의 수단으로서 해석되지 않게 피하는 것이다.
이러한 목적은 동작 메모리의 스위칭 수단이 메인 프로그램 시퀀스를 수행하는 프로세서로부터의 변경에 의해 확립되는 사실에 의해 달성된다.
다른 특징에 따르면, 제2프로그램은 메인 메모리 내의 메인 프로그램의 동작공간과 동일한 동작공간을 사용한다.
다른 특징에 따르면, 제2프로그램은 메인 프로그램의 동작공간 보다 더 작은 동작공간을 사용한다.
다른 특징에 따르면, 스위칭 수단은 마이크로프로세서 명령의 실행 사이클 내에 동작 메모리 및 연관된 문맥을 교체시킨다.
다른 특징에 따르면, 제2프로그램은 문맥을 재건할 필요 없이 메인 프로그램으로 리턴하도록 메인 프로그램의 일반적인 동작 문맥을 변형시키지 않는다.
다른 특징에 따르면, 메인 프로그램의 문맥은 제어가 메인 프로그램으로 넘어가기 전에 스위칭 수단 또는 제2프로그램에 의해 자동적으로 재건된다.
다른 특징에 따르면, 그것은 제2프로그램 메모리를 메인 프로그램 메모리로 대체하는 수단을 포함한다.
다른 특징에 따르면, 메인 프로그램은 제1동작 메모리 및/또는 제2동작 메모리를 선택적으로 또는 동시에 사용할 수 있다.
다른 특징에 따르면, 스위칭 회로의 로딩은 상관해제 인터럽트의 마스킹(masking) 또는 언마스킹을 인에이블시킨다.
다른 특징에 따르면, 메인 프로그램으로의 리턴은 스위칭 레지스터가 인터럽트를 언마스크하도록 메인 프로그램 또는 제2프로그램으로부터 명령의 실행에 의해 적절하게 로딩된 후에 제2프로그램에 의해 트리거되는 인터럽트에 의해 이루어진다.
다른 특징에 따르면, 마이크로프로세서 또는 마이크로컴퓨터는 단일 집적회로를 구성한다.
본 발명의 다른 특징과 이점은 다음의 도면을 참고한 다음 설명을 통하여 명확하게 될 것이다:
도 1은 본 발명의 실시예중의 하나를 나타낸다. 본 발명에 의해 커버되며, 소위 SUMIC(Self-Unpredictable MICrocomputer)라 불리는 마이크로프로세서 또는 마이크로컴퓨터는 처리유닛(1), 실행될 프로그램을 포함하는 비휘발성 메모리(6), 그것의 어드레스 레지스터(A2)와 데이터 레지스터(D2)를 갖는 RAM(51), 뿐만아니라 예를들어, 정규 및 예측 불가능한 순간에 펄스를 공급하는 랜덤 또는 의사-랜덤 신호 발생기(2), 인터럽트 회로(4), 레지스터 회로(R2), 타이머(R3), 시퀀서 회로(8), 비휘발성 메모리(7)(NVM), 그것의 번지지정 레지스터(A3)와 데이터 레지스터(D3)를 갖는 휘발성 타입의 더미 메모리(DumRAM)(52), 정상 동작으로 리턴하기 위한 파라미터를 메모리하기 위한 2개의 레지스터 스택(54,55) 및 예를들어, 어드레스 레지스터(A1,A2) 및 데이터 레지스터(D1,D3)와 제1 및 제2 블록의 메모리 레지스터(54,55)의 동작을 검사하는데 충분한 수의 셀을 갖는 레지스터로 이루어진 스위칭 회로(53)를 포함한다. 이 스위칭 레지스터(53)는 버스(3)를 통하여 처리유닛(1)에 의해 로딩된다. 이러한 스위칭 레지스터(53)의 상태는 프로세서의 동작 메모리 공간 또는 이 공간의 외부에 있는 RAM 및/또는 DumRAM을 유효화시키는데 특히 사용된다.
이러한 모노리식 집적회로(IC)에서 처리유닛은 버스(3)에 의해 각종 메모리에 접속되며, 각각의 메모리는 각각의 어드레스 레지스터(A1,A2,A3) 및 각각의 데이터 레지스터(D1,D2,D3)를 갖는 레지스터를 향하여 나아가며, 어드레스 레지스터 및 데이터 레지스터 각각은 스위칭 회로(53)로부터 뻗어나온 명령라인(531A,532A,536A) 및 (531D,532D,536D)에 의해 록크될 수 있다. 이 스위칭 회로는 또한 3개의 다른 명령라인을 포함하며, 하나의 명령라인(533)은 2입력을 갖는 AND 게이트(11)에 연결되고, AND 게이트(11)의 다른 입력은 인터럽트 회로(4)로부터 인출된 버스라인(31)에 연결되어 있다. 이 AND 게이트(11)의 출력은 단지 스위칭 회로가 활성화되지 않았을 때 그리고 따라서 라인(533)이 활성화 상태가 아닐 때에만 인터럽트 인에이블 레지스터(IER) 비트 중의 하나에 직접 연결되어 인터럽트 회로(4)에 의해 트리거되는 인터럽트를 차단(mask)한다.
2개의 다른 라인(534,535) 각각은 2개의 록크(lock) 또는 스택(stack) 또는 메모리(memorization) 레지스터(54,55) 중 하나를 록크한다. 이들 블록 각각은 이하에 설명될 정보의 기억을 위한 다수의 메모리 레지스터(54,55)를 갖는다. 이들 레지스터(54,55)는 메모리에 공통인 버스(3)에 연결되어 있다. 이 버스(3)는 소망하는 동작 모드에 따라 제어 라인(531A,532A,532D,536A,536D,533,534,535)을 활성화 또는 비활성화시키는데 요구되는 값으로 스위칭 회로(53)를 로딩시키는데 사용된다. 비휘발성 메모리(6)는 이후에 메인 프로그램이라 불리는 회로 오퍼레이팅 시스템(OS) 및 초기 어플리케이션 프로그램(P1)과 이후에 2차 프로그램이라 불리는 제2프로그램(P2)을 포함하며, 시퀀서(8), 레지스터(R2), 타이머(R3) 및 랜덤 발생기(R1)는 또한 버스(3)에 연결되고, 이 3요소(R1,R2,R3)는 인터럽트 발생기 회로(4)에 연결되며 인터럽트 발생기 회로(4)는 프로세서의 인터럽트 인에이블 레지스터(IER)를 사용하여 프로세서(1)의 인터럽트 입력에 연결되며, 이들 중 하나의 비트는 몇몇 사용자에게 특수한 어플리케이션을 위해 유용하며 전체적으로 예약(reserved)된다.
초기 실시예에서 비휘발성 메모리(6)에 포함된 메인 프로그램(P1)은 버스(3)를 통하여 스위칭 회로(53)의 상태를 필요할 때 수정하며, 그 절차는 실행하는데 어떤 어려움을 나타내지 않는다. 순간적으로, 이는 정상 동작으로 리턴하는데 제1블록(54)에 요구되는 모든 레지스터와 메모리 패키지를 유효화하는 CE(Chip Enable) 입력을 동작시킴에 의해 메인 동작 RAM(51) 또는 이 메모리의 일부를 교체한다. 이들 메모리 및 레지스터는 그들을 유지하는데 요구되는 에너지를 세이브하도록 스태틱형으로 하는 것이 유리하다. 따라서, 스위칭 회로(53)는 더미 메모리(52)를 메인 동작 메모리(51)로 교체하여 프로그램이 메인 동작 메모리 대신에 더미 메모리를 배타적으로 사용하여 실행된다. 상기 더미 메모리(52)는 교체되는 메모리와 동일한 어드레스를 가질 수 도 있고 상이한 어드레스를 가질 수 있다. 하나의 유리하고 경제적인 해결책은 이러한 더미 메모리를 위해 매우 작은 RAM을 사용하는 것이다. 실제로 이 더미 메모리는 메인 프로그램에 대한 기능부분 역할을 하지 않으며, 번지지정 가능한 공간은 어드레스 레지스터(A3)의 길이를 단지 감소시킴에 의해 제한될 수 있다. 또한 몇 개의 어드레스 레지스터 블록들 사이에 익스클루시브 오어(EXOR)를 제공하여 자체적으로 어드레스를 폴드-백(fold-back)하는 것이 가능하다. 따라서, 만약 메인 동작 메모리의 번지지정 가능한 공간은 512바이트일 경우, 더미 메모리는 어려움 없이 32바이트로 제한될 수 있고, 따라서 이는 매우 경제적인 해결방안으로 이끈다. 32바이트는 예를들어, 메인 동작 메모리의 매트릭스에 RAM 메모리 라인의 간단한 부가를 대응할 수 있다. 이 경우에 이 라인은 자신의 어드레스 레지스터(A3)와 실패 레지스터(D3)를 갖고 있다. 스위칭 회로(53)가 더미 메모리를 활성화할 때 그것의 내용을 방해하지 않도록 NVM에 임의의 기록 억세스를 또한 금지시킬 수 있다.
스위칭을 실행하기 위하여, 때때로 2블록 레지스터 즉, 각각 프로그램을 실행하는데 요구되는 전체 문맥을 포함하는 제1블록(54)과 제2블록(55) 및 특히 제1블록(54)에 대한 프로그램 카운터(PC1) 및 제2블록(55)에 대한 프로그램 카운터(PC2), 제1블록(54)에 대한 명령 디코딩 레지스터(D1) 및 제2블록(55)에 대한 명령 디코딩 레지스터(D2), 그리고 T11, T12 및 T21, T22로 표시되는 다른 레지스터를 교대로 사용하는 것이 유리하다. 후자 레지스터(T11, T12 및 T21, T22)는 예를들어, 사용될 머신 사이클 번호와 같은 동일한 동작 파라미터를 보존한다. 모든 이들 레지스터는 스위칭 회로(53)에 의해 자동적으로 절환된다. 어드레스의 변경은 대부분 마이크로-계산기의 경우에서와 같이 특정 명령을 사용하여 레지스터 스택에 프로그램 카운터의 내용을 세이브하기 위하여 어떤 의무 없이 이 경우에 순간적으로 실행된다. 따라서, 양방향의 스위칭은 (일반적으로 클록 사이클보다 더 짧게) 매우 빠르며, 이는 장치의 보안 레벨을 상당하게 증가시킨다. 동일한 메카니즘이 T11 내지 T22와 같은 프로세서의 동작 문맥을 세이브하는 다른 레지스터에 사용될 수 있다.
프로그램(P1)이 스위칭 레지스터를 로딩함에 따라 더미 모드에서 집적회로의 동작을 활성화할 때 스위칭 회로(53)는 프로그램(P1)이 인터럽트된 경우 그것을 재시동시키기 위한 더미 회로 동작 전에 파라미터를 보존하는 제1스택 레지스터(54)를 금지시킬 것이다. 한편, 제2스택 레지스터(55)는 프로그램(P2)을 실행하기 위하여 동일한 더미 메모리를 갖는 회로의 정상적인 동작이 이루어지도록 하는데 사용될 것이다. 또한 이 경우에 더미 모드에서 동작에 대응하는 인터럽트 마스킹 IER 레지스터는 차단되지 않아 랜덤 발생기 또는 난수(random number)로 랜덤 발생기에 의해 미리 로딩된 타이머(R3), 및 이 수로 표현되는 시간의 관통(run-through)의 끝에서 특정 정보로 로딩된 레지스터(R2)에 의해 인터럽트의 발생동안 인터럽트를 트리거시키며, 이는 버스 라인(31)이 프로그램(P1) 제어하의 정상 동작으로부터 프로그램(P2) 제어하의 더미 모드로 동작을 전환시킨다는 것은 명백하다.
도 2는 인터럽트 모드에서 동작을 나타낸다. 도 2는 처리유닛(1)에 대한 라인(31)에 인터럽트 회로에 의해 전송된 제1인터럽트 펄스(IT)는 레지스터에 의해 데이터를 마스킹 레지스터로 로딩하도록 "데이터를 레지스터(IER)로 즉시 이동(MOVE immediate data to register IER)" 명령을 사용하여 인터럽트 차단에 의해 고려되지 않는다는 것을 보여준다. 현 명령은 전환(diversion) 인터럽트를 차단하지 않으나 (그러나 이는 다른 시간에 어떤 다른 명령에 의해 행하여질 수 있는) 것으로 추정된다. 이 경우에 제2펄스는 스위칭 회로(53)가 전환하도록 처리유닛(1)에 고려되며 따라서, 제2블록 레지스터(55)와 DumRAM(52)는 제1블록(54)과 RAM 더미 메모리(51) 대신에 활성화된다. 인터럽트의 수신확인은 예를들어, S2와 S3 사이의 하나의 상태에서 다른 상태로 전환기간 동안에만 가능하여 머신의 안정되고 불변의 상태를 메모리하며 그리고 우선적으로 인터럽트된 프로그램이 리턴할 때와 동일한 상태를 정확하게 복원한다는 점에 유의해야 한다. 만약 이러한 인터럽트가 수신 확인되는 경우 명령의 끝에 습관적인 경우와 같이 다음 명령에 대하여 정상적으로 발생하기 때문에 인터럽트된 프로그램이 회복될 때 어떤 특별한 문제점은 존재하지 않는다. 역으로, 만약 인터럽트가 예를들어, 상태(S2)에서 명령의 실행도중에 발생하는 경우 인터럽트된 프로그램의 회복시에 상태(S3)를 정확하게 트리거하도록 시퀀싱 회로가 동일하게 복원되는 것이 자명하게 필요하다. 이는 예를들어, 회복 순간에 버스(3)를 통하여 레지스터(T11)와 시퀀서(8) 사이의 다이렉트 링크에 의해 달성될 수 있다. 이 링크는 또한 버스(3)를 통하여 가지 않고 특수하게 될 수 도 있다. 그것은 또한 이 단계 동안 버스의 동원을 피하기 위하여 시퀀서 그 자신에 상태 메모리 레지스터를 포함하는 것이 유리하다.
이러한 방법으로 인터럽트에 의해 메인 프로그램(P1)은 하기와 같이 제2프로그램(P2)으로 인에이블 및/또는 절환된다. 제2프로그램이 활성화 상태가 아닐 때 스위칭 회로(53)의 상태는 변경되어 RAM 동작 메모리는 어떤 수정없이 초기 구성을 회복하며 그 결과 메인 프로그램은 그것이 인터럽트된 점에서 정확하게 그것의 코스를 회복한다. 또한 메인 프로그램(P1)이 보호될 필요가 있을 때 제2프로그램(P2) 자신의 전환에 의해 그것은 트립(trip)하여 다른 시퀀스를 스크램블하도록 시작시에 또는 처리도중에 그것에 의해 선택된 순간에 랜덤 길이를 발생하는 방법으로 처리될 수 있다. 그후 처리 동작은 제2프로그램(P2)에 의해 제어되어 예를들어, 시간의 길이가 발생기(2)로부터 유도된 난수에 의존하는 대기루프를 트리거할 수 있다. 제2프로그램은 메인 프로그램에 의해 사용되지 않는 메모리의 일부를 사용하여 실행될 수 있으며 그 결과 메인 프로그램은 제2프로그램이 새로운 제어를 다음 인터럽트에 따라, 또한 종전과 같이 타이머를 사용하여, 또는 이들 둘의 조합을 사용하여 메인 프로그램으로 전송하자마자 그것의 정상적인 처리를 회복한다. 제2프로그램은 또한 제어를 그것으로 넘기기 전에 그것이 메인 프로그램의 문맥을 복원하는 한 공유된 자원을 사용할 수 있다.
이러한 메카니즘은 제2프로그램의 실행 끝에서 리턴하는 제2프로그램으로 메인 프로그램의 분기(branching)의 실행과 유사하나 이 발명의 메카니즘은 하기점이 특히 상이하다:
■ 제2프로그램은 메인 프로그램과 필수적으로 관련된 어떤 기능을 실행하지 않으며,
■ 더미 메모리(52)의 크기는 프로그램의 정상적인 관통실행에 필요한 것 보다 훨씬 더작게 될 수 있고,
■ 더미 메모리(52)의 내용은 그것이 단순히 트랙을 커버하기 때문에 중요하지 않으며,
■ 이러한 고속 메카니즘인 경우 제2프로그램의 명령을 메인 프로그램의 명령과 인터레이스(interlace)하는 것이 가능하고,
■ 제2프로그램은 단순히 트랙을 커버링하는데 사용되기 때문에 제2프로그램의 문맥을 세이브할 필요가 없다.
제2실시예에서, 프로세서가 동시에 회로(53)를 스위칭할 때 그것은 랜덤 발생기(2) 또는 비휘발성 메모리 NVM(7)의 내용으로부터 초기화되는 타이머(R3)를 활성화시킨다. EEPROM 타입의 상기 NVM 또는 철-전기(ferro-electric) 유닛은 NVM이 사용될 때 마다 수정된 단일 번호를 포함할 수 있다. 타이머(R3)가 만료될 때 예측 불가능한 기간 후에 타이머는 트리거되어 메인 프로그램으로 리턴하며 또한 메인 메모리를 동작 공간으로 되돌리기 위하여 스위칭 회로(53)를 절환시킨다. 이러한 메카니즘은 종래의 인터럽트 또는 스위칭 회로(53)에 대한 타이머(R3)의 직접 동작 및 레지스터(PC1,PC2)에 대한 동작에 의해 실행되어 PC1 및 PC2와 같은 처리유닛(1)에 의해 프로그램의 실행을 체크한다.
변형 실시예에서 제2프로그램(P2)으로서 역 케이블링 또는 어드레스 내용에 대한 레프트 시프트 회로에 의해 예를들어, 레지스터(ID2)의 내용을 반전 및/또는 어드레스로부터 얻어진 바이트를 반전시켜 랜덤하게 선택된 어드레스를 초기에 지정하는 메인 프로그램(P1)의 임의 부분을 사용하는 것도 가능하다. 이러한 방법에서 우리는 또한 프로그램이 전체적으로 이상한(outlandish) 명령을 실행할 것이라고 보장한다.
이상한 명령을 실행하기 위한 다른 변형예는 임시 명령(IDT)을 디코딩하는 레지스터가 한편으로 버스(33)의 일부분에 의해 버스(3)에 접속되며, 다른 한편으로 버스(34)의 일부분에 의해 회로상태를 메모리시키는 제2스택 레지스터(55)에 접속되는 도 3에 제공된 실시예일 수 있다. 버스(34)의 일부분은 레지스터(IDT)의 비트(B7)를 레지스터(ID2)의 비트(B4), 레지스터(IDT)의 비트(B6)를 레지스터(ID2)의 비트(B1), 레지스터(IDT)의 비트(B5)를 레지스터(ID2)의 비트(B3) 등으로 접속하는 특수 케이블링에 의해 스택(55)의 레지스터(ID2)에 하드웨어적으로 접속된다.
끝으로 마지막 변형예는 전체적으로 이상한 (명령의) 실행이 이루어지게 하며 도 3에 도시된 바와같이 구성되고 구체화된다. 도 3에서 버스(3)는 IDT 임시명령 디코딩 레지스터에 버스(35)의 일부분에 의해 접속된다. 버스의 다른 부분(37)은 이 IDT 레지스터를 몇 개의 입력을 갖는 익스클루시브 OR 게이트(39)에 연결한다. 이 OR 게이트의 다른 입력은 버스(3)와 관련이 이루어지는 버스의 일부분(36)과 연결된 레지스터(R'2)에 버스(38)의 의해 연결된다. 이 레지스터(R'2)는 "레지스터(R1)(예를들어)를 레지스터(R'2)로 이동(MOVE register(R1) to register(R'2))"와 같은 명령에 의해 랜덤 발생기(R1) 또는 타이머 또는 비휘발성 메모리 NVM(7)로부터 얻어진 것과 같은 임의 정보로 로딩될 수 있다. 이러한 종류의 시프트 명령은 마이크로프로세서 분야의 당업자에게 주지된 것이며 구현에 어떤 어려움이 없다. 레지스터(R'2)의 정보와 IDT 레지스터로 로딩된 값 사이의 익스클루시브 OR는 프로그램 명령(P2)을 전체적으로 수정하는 방법이며, 따라서 전체적으로 이상한 명령을 실행한다.
프로그램(P2)에서 랜덤방식으로 불려질 다수의 시퀀스를 사용하는 것이 가능하며, 각각의 시퀀스는 각각 분기 및 다른 마이크로프로세서 행동에 가변 처리시간을 필요로 하는 다른 명령 세트를 구현할 것이다. 시퀀스는 메인 프로그램이 제2프로그램으로 점프를 수행한후 랜덤하게 호출될 수 있으며, 제2프로그램은 메모리(7)로부터 2 레지스터, 예를들어 마이크로프로세서(1)의 T21 및 T22 로 랜덤값을 로딩한다. 제2프로그램은 이 값(V)을 증가시키며 그후 프로그램은 이 값의 메모리를 명령하며, 비휘발성 메모리(7)를 증가시킨다. 비휘발성 메모리(7)에 메모리된 이 값은 계속된 사용을 위해 설계되었다. 제2프로그램은 그후 T21에 n MSB 또는 LSB를 샘플링하여 각종 제2프로그램 시퀀스로부터 실행될 프로그램 시퀀스를 지정하는 것을 가능하게 만드는 값(r)을 얻는다.
제3실시예에서 랜덤 발생기(2)는 그것의 상태를 발견하도록 판독 명령에 의해, 또는 결정된 펄스를 직접 판독함에 의해, 또는 그들의 몇 개를 그룹지움에 의해, 또는 랜덤 발생기(2)로부터 로딩된 레지스터(R2)의 내용을 고려함에 의해 버스(3)를 통하여 프로세서(1)에 의해 응답 지령이 보내질 수 있다. 메인 프로그램이 보호를 필요로 할 때 그것은 앞에서 보여준 메카니즘과 유사한 방법으로 제2프로그램으로 제어를 넘긴다.
자연적으로 한편으로 랜덤 클록, 다른 한편으로 홀로 또는 그것이 승인되거나 또는 승인되지 않은 랜덤 인터럽트 시스템에 의해 메인 프로그램의 관통 실행을 차단하는 가능성을 갖도록 함에 의해 전술한 실시예의 효과를 결합하는 것이 가능하다.
또한 메인 프로그램의 관통 실행은 랜덤 발생기, 프로그램, 타이머, 제2프로그램 또는 동시에 2, 3 또는 4 소자에 따라 절대적으로 예측 불가능한 시퀀싱에 따라 수행된다. 메인 프로그램이 보안관점에서 감지되지 않는 기능을 실행할 때 메인 프로그램은 또한 외부 세계에 결과를 공급하거나 또는 타이머(R3) 또는 랜덤 발생기(2) 상관해제 인터럽트를 차단하기 위하여 예를들어, 정상동작에 의지할 수 있으며, 따라서 처리시간을 최적화한다. 가능한한 보안 기능이 구현되자마자 주 프로그램(P1)은 동작을 "스크램블"하도록 상관해제 인터럽트를 유효화함에 의해 랜덤 모드로 동작시킨다.
도 1에 도시된 제4실시예는 또한 동시에 RAM(51,52)을 사용할 수 있다. 실제로 만약 메모리 및 관련 레지스터의 스위칭을 검출하는 것이 가능하다고 가장하면, 더미 메모리(52)를 사용하여 시퀀스를 제거함에 의해 분석을 수행할 수 있다. 이러한 우발성을 피하기 위하여, 이 실시예는 메모리(51,52)가 초기 단계동안 병렬로 유효화될 수 있다는 것을 의미한다. 명확하게 이는 곧 메모리(52)가 후자와 함께 동작할 때 메모리(51)에 있는 프로그램(P1)에 의해 사용된 존의 최소 크기와 동일한 크기를 갖는다는 것을 미리 가정한다. 이러한 방법으로 각각 메모리(51,52)에 프로그램(P1)에 의해 사용된 2메모리 존의 내용은 초기화되며 이러한 제1단계 동안 동일한 방법으로 이 프로그램에 의해 사용된다. 하나의 대체예는 어떤 충돌을 방지하기 위하여 판독 사이클동안 2레지스터(D2,D3)의 단지 하나를 필요한 구성과 함께 스위칭 회로(53)를 로딩함에 의해 유효화시키는 것이며 그러나 이것은 본 발명에 대한 어떤 기본적인 변경을 하는 것은 아니다. 따라서, 우리는 이 단계동안 어떤 메모리가 실제로 사용되는 지를 구별할 수 없다. 따라서, 제2단계 동안 스위칭 회로(53)에 대한 변경에 의해 메모리를 대체하여 랜덤하게 스위칭하는 것이 가능하게 되며 한편 동일한 프로그램(P1)을 계속하여 실행한다. 따라서, 더 이상 RAM 또는 사용된 레지스터와 함께 하나의 프로그램 또는 다른 것의 실행을 상관시키는 것이 가능하다. 제3단계에서 우리는 예측 불가능한 순간에 전에 설명한 바와같이 프로그램(P2)을 통하여 더미 레지스터(52)로 스위칭을 할 것이며 한편 메인 동작 메모리(51)에 대한 리턴이 또한 예측 불가능한 순간에 일어나며 그 처리는 보호방안으로서 메인 프로그램(P1)의 제어하에 임의로 재생 가능하게 될 것이다.
끝으로 본 발명에 의해 제기되는 마지막 프로그램은 프로그램(P2)의 더미모드로부터 빠져나와 프로그램(P1)을 갖는 정상 동작모드로 리턴할 수 있는 프로그램이다. 제어를 프로그램(P2)으로 넘기기 바로 전에 프로그램(P1)은 후자를 초기화하는 동안 랜덤 발생기 또는 타이머로부터의 인터럽트를 인에이블시킨다. 무질서한 프로그램(P2)의 관통실행동안 회로(4)를 경유한 인터럽트가 발생하여 인터럽트 프로그램(PIT)으로 이관된다. 인터럽트 벡터에 의해 종전과 같이 억세스되는 이 프로그램은 예를들어 현 프로그램의 실행 문맥을 해석한다. 만약 P2가 활성화 상태일 경우 PIT는 제어를 프로그램(P1)으로 넘긴다.
이러한 메카니즘은 다음과 같이 수행된다: PIT 프로그램의 제1명령이 실행될 때 예를들어, 도 4에 도시된 바와같이 스위칭 회로(53)의 내용 판독(41)후에 회로(53)에 포함된 정보가 더미 모드 동작에 대응하는 지를 판단하기 위한 테스트(42)가 이루어질 수 있다. 테스트 결과 긍정적이면 PIT 프로그램은 단계(43)로 표시되는 프로그램 리턴 명령(P1)을 실행한다. 이러한 리턴은 라인(534,531)의 값을 수정하는 단계(44)에 따라 스위칭 레지스터(53)의 기입에 의해 초기화된다. 이러한 계속되는 스위칭 레지스터(53)로 기입(44)은 라인(534)과 라인(531)값의 정상 수정 모드로 리턴을 가능하게 하여 스택(54)과 메인 동작 메모리(51)의 사용을 다시 한번 승인한다. 프로그램(P1)에 대한 리턴 명령은 더미 테스트(42) 후에 직접 또는 랜덤 시간을 발생하는 다수의 다른 명령의 실행후에 실행될 수 있다. 만약 테스트(42)가 부정적인 경우 프로그램은 단계(45)로 진행하여 더미 모드로 전환하기 위해 스위칭 레지스터(53)로 기입하며 그 결과 라인(535,532)의 값을 수정하여 레지스터 스택(55)과 더미 메모리의 사용을 가능하게 하며 라인(531,534)에 의한 제어에 따라 회로를 록킹시킨다.
모든 상기한 실시예에서는 랜덤 클록을 사용할 필요가 없다. 이와 반대로 클록 분배는 회로, 시뮬레이션 및 테스팅의 설계가 쉽도록 전체적으로 종래와 같은 등시성으로 이루어진다. 실제로 보안은 더 이상 프로세서가 랜덤하게 타임을 공급받는 다는 사실에 기인하지 않으며 오히려 단계적으로 또는 등시성 클록을 갖고 단계적이 아니거나 이들 프로그램 그 자체의 실행에 기인하며; 실행 그 자체는 스크램블된다.
프로세서에 의해 실행되는 프로그램의 조직은 프로세서의 동작을 머신에 의해 실행되는 프로그램의 종류에 따라 구현될 재밍(jamming)의 타입에 따라 결정하는 실제 보안 오퍼레이팅 시스템에 의해 제어된다. 이 경우에 오퍼레이팅 시스템은 적합한 것으로 판단될 때 랜덤 발생기로부터의 각종 신호, 인터럽트 및 메인/제2프로그램의 진수를 관리한다. 명확하게 제2프로그램은 단순한 대기 루프 이외의 다른 기능을 수행하는데 사용될 수 있으며, 특히 처리는 제2프로그램에 공급되는 시간을 이용하도록 메인 프로그램에 유효하다. 이러한 처리는 예를들어, 메인 프로그램에 의해 계속하여 사용되는 예비 계산으로 구성될 수 있다. 자연적으로 프로세서가 멀티-어플리케이션 모드로 동작할 때 본 발명의 메카니즘을 일반화하는 것은 쉬운 한편 어플리케이션 프로그램은 그후 단순한 메인 프로그램으로서 고려될 수 있다.
상기한 랜덤 발생기 및 타이머는 생산시에 어떤 특별한 문제를 야기하지 않으며 이 발명과 어떤 연관이 없는 다른 용도에 별도로 사용될 때 당업자에게 주지된 것이다.
랜덤 발생기인 경우 다른 주기를 갖는 루프 카운터를 사용하는 것이 가능하다. 이들 카운터는 비휘발성 메모리(7)에 기억된 초기화 정보에 의해 초기화된다. 프로세서가 시작할 때 카운터는 초기값으로서 기억된 값을 고려한다. 계산 또는 끝에서 z 동안 비휘발성 메모리는 다음 초기화에 카운터를 초기화시키기 위한 초기화 정보로서 사용된 새로운 값으로 업데이트 된다. 상기한 인터럽트 펄스의 발생은 그후 발생된 번호가 프로그램 데이터의 일부와 동일하게 동일한 특성을 가질 때 발생할 수 있다. 또한 하나 또는 몇 개의 카운터의 일 또는 몇 개의 비트값을 사용하는 것이 가능하다. 또한 암호화 알고리즘 또는 상기한 초기화 정보에 의해 초기화된 쵸핑 기능을 사용하여 매우 우수한 랜덤 발생기를 제조하는 것이 가능하다. 이경우에 발생기는 알고리즘을 구현하는 프로그램일 수 있다. 이 난수 발생기는 또한 상기와 같이 각종 난수를 발생하는데 사용될 수 있다. 이와 같이 발생기를 만드는 다른 방법은 "노이즈 다이오드"의 단자 양단에 발생된 전압을 증폭하는 것이며 과도하게 빠른 노이즈 펄스가 마이크로프로세서의 동작에 간섭을 받지 않는 것을 보장하는 것을 로우-패스필터링 이후에 신호를 정형한다.

Claims (19)

  1. 프로세서(1)와, 제1 동작 메모리(51)와, 오퍼레이팅 시스템, 메인 프로그램(P1) 및 제2 프로그램(P2)을 포함하는 메인 메모리(6)로 구성되는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터에 있어서, 또한
    제2동작 메모리(52)와;
    프로그램의 실행동안 그들의 내용을 보존하는 동안 2개의 동작 메모리(51,52) 중의 하나에 대하여 동작 메모리로서 사용을 스위칭하는 것이 가능하게 하는 스위칭 수단을 구비하며;
    상기 스위칭 수단은 메인 메모리의 프로그램의 동작 문맥을 기억하는 적어도 한 블록의 레지스터(54)와, 각 메모리(51,526)와 연관되어 있고 스위칭 회로(53)에 의해 제어되는 억세스 레지스터(A1-A3)(D1-D3)와 동작 메모리들 중의 하나를 인에이블시키는 스위칭 회로(53)로 구성되는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  2. 제1항에 있어서, 상기 스위칭 수단은 제2프로그램의 동작 문맥을 기억하는 제2블록의 레지스터(55)를 구비하는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  3. 전항 중 어느 한 항에 있어서, 스위칭 수단은 등시성(isochronal) 클록에 대하여 프로그램의 실행을 상관 해제시키는 수단(R1,R2,R3)을 더 포함하는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  4. 전항중 어느 한항에 있어서, 메인 프로그램이 각각의 동작 메모리(51,52)와 연관된 기억 레지스터(54,55)의 블록과 동작 메모리(51,52)를 스위칭/인에이블시키기 위한 회로(53)를 로딩시킴에 의해 스위칭 메카니즘 또는 메카니즘을 인에이블시키거나 금지시킬 수 있는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  5. 전항 중 어느 한 항에 있어서, 제2동작 메모리(52)와 그것의 억세스 레지스터(A3,D3)는 메인 프로그램을 사용하는 동안 동작 메모리(51)와 그것 자신의 억세스 레지스터(A2,D2)로 대체되는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  6. 제3항에 있어서, 상관해제수단이 제2프로그램(P2)으로 랜덤방식으로 점프함에 의해 프로세서에 프로그램의 실행을 동기 해제하도록 인터럽트회로(4)에 의해 랜덤 인터럽트를 트리거시킬 수 있는 난수 발생기(2)를 포함하는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  7. 제4항 또는 제6항에 있어서, 상관해제수단은 시간 카운트후에 제2프로그램으로부터 메인 프로그램으로 귀한시키는 인터럽트를 트리거시킬 수 있는 프로세서(1)와 독립된 시간 카운팅 시스템(R3)을 포함하는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  8. 제4항, 제6항, 또는 제7항 또는 이들의 조합에 있어서, 동작 메모리를 스위칭 하기 위한 스위칭 수단(53,54,55,A2,A3,D2,D3)은 프로세서와 그것의 프로그램, 랜덤 인터럽트 시스템(2,4), 타이머(R3), 또는 이들 셋중에서 적어도 2개의 임의의 조합에 의해 제어되는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  9. 전항 중 어느 한 항 또는 그들의 조합에 있어서, 동작 메모리를 스위칭 하기 위한 스위칭 수단(53,54,55,A2,A3,D2,D3)은 메인 프로그램 시퀀스를 실행하는 프로세서(1)에 의해 로딩됨에 의해 인에이블되는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  10. 전항 중 어느 한 항에 있어서, 제2프로그램(P2)은 메인 메모리(6) 내의 메인 프로그램(P1)의 동작공간과 동일한 동작공간을 사용하는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  11. 제1항 내지 제9항 중 어느 한 항에 있어서, 제2프로그램(P2)은 메인 프로그램의 동작공간 보다 더 작은 동작공간을 사용하는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  12. 전항 중 어느 한 항에 있어서, 스위칭 수단은 마이크로프로세서 명령의 실행 사이클 내에 메모리(53,54,55,A2,A3,D2,D3) 및 연관된 문맥의 교체를 실행하는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  13. 전항 중 어느 한 항에 있어서, 제2프로그램(P2)은 이 문맥을 재건할 필요없이 메인 프로그램으로 리턴하도록 메인 프로그램(P1)의 일반적인 동작 문맥을 변형시키지 않는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  14. 제13항에 있어서, 메인 프로그램(P1)의 문맥은 제어가 메인 프로그램(P1)으로 넘어가기 전에 스위칭 수단(53) 또는 제2프로그램(P2)에 의해 자동적으로 재건되는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  15. 전항 중 어느 한 항에 있어서, 그것은 제2프로그램 메모리(P2)를 메인 프로그램(P1) 메모리로 대체하는 수단을 포함하는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  16. 전항 중 어느 한 항에 있어서, 메인 프로그램(P1)은 제1동작 메모리(51) 및/또는 제2동작 메모리(52)를 선택적으로 또는 동시에 사용할 수 있는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  17. 스위칭 회로(53)의 로딩은 상관해제 인터럽트의 마스킹(masking) 또는 언마스킹이 가능하게 하는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  18. 메인 프로그램(P1)으로의 리턴은 스위칭 레지스터(53)가 인터럽트를 언마스크하도록 메인 프로그램(P1) 또는 제2프로그램(P2)으로부터 명령의 실행에 의해 적절하게 로딩된 후에 제2프로그램(P2)에 의해 트리거되는 인터럽트에 의해 실행되는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
  19. 마이크로프로세서 또는 마이크로컴퓨터는 단일 집적회로에 구현되는 것을 특징으로 하는 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터.
KR1019997001613A 1997-06-26 1998-06-25 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터 KR100578459B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR97/07995 1997-06-26
FR9707995A FR2765361B1 (fr) 1997-06-26 1997-06-26 Microprocesseur ou microcalculateur imprevisible

Publications (2)

Publication Number Publication Date
KR20000068373A true KR20000068373A (ko) 2000-11-25
KR100578459B1 KR100578459B1 (ko) 2006-05-10

Family

ID=9508464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019997001613A KR100578459B1 (ko) 1997-06-26 1998-06-25 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터

Country Status (10)

Country Link
US (1) US7036002B1 (ko)
EP (1) EP0920660B1 (ko)
JP (2) JP2000501541A (ko)
KR (1) KR100578459B1 (ko)
CN (1) CN1239973C (ko)
DE (1) DE69839958D1 (ko)
FR (1) FR2765361B1 (ko)
HK (1) HK1022756A1 (ko)
TW (1) TW457453B (ko)
WO (1) WO1999000718A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2787900B1 (fr) * 1998-12-28 2001-02-09 Bull Cp8 Circuit integre intelligent
JP2001094550A (ja) * 1999-09-17 2001-04-06 Toshiba Corp 信号処理装置
WO2004053684A2 (en) * 2002-12-12 2004-06-24 Arm Limited Processing activity masking in a data processing system
US7373463B2 (en) * 2003-02-13 2008-05-13 Stmicroelectronics S.A. Antifraud method and circuit for an integrated circuit register containing data obtained from secret quantities
US20040162993A1 (en) * 2003-02-13 2004-08-19 Yannick Teglia Antifraud method of an algorithm executed by an integrated circuit
JP4447977B2 (ja) 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
EP2164020B1 (en) * 2007-05-11 2014-02-26 Nagrastar L.L.C. Apparatus for controlling processor execution in a secure environment
EP2000936A1 (en) * 2007-05-29 2008-12-10 Gemplus Electronic token comprising several microprocessors and method of managing command execution on several microprocessors
IT1404162B1 (it) * 2010-12-30 2013-11-15 Incard Sa Metodo per de-correlare segnali elettrici emessi da una carta a circuito integrato
CN103164384B (zh) * 2011-12-15 2016-05-18 中国银联股份有限公司 多机系统共享内存的同步实现方法及其系统
US9703951B2 (en) 2014-09-30 2017-07-11 Amazon Technologies, Inc. Allocation of shared system resources
US9378363B1 (en) * 2014-10-08 2016-06-28 Amazon Technologies, Inc. Noise injected virtual timer
US9754103B1 (en) 2014-10-08 2017-09-05 Amazon Technologies, Inc. Micro-architecturally delayed timer
US9491112B1 (en) 2014-12-10 2016-11-08 Amazon Technologies, Inc. Allocating processor resources based on a task identifier
US9864636B1 (en) 2014-12-10 2018-01-09 Amazon Technologies, Inc. Allocating processor resources based on a service-level agreement

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694603A (en) * 1982-09-28 1997-12-02 Reiffin; Martin G. Computer memory product with preemptive multithreading software
US4575817A (en) * 1983-06-27 1986-03-11 International Business Machines Corporation Switching of programming routine supporting storage stacks
US4591982A (en) * 1983-08-29 1986-05-27 International Business Machines Corporation Storage selection override apparatus for a multimicroprocessor implemented data processing system
JPS6491228A (en) * 1987-09-30 1989-04-10 Takeshi Sakamura Data processor
US5012409A (en) * 1988-03-10 1991-04-30 Fletcher Mitchell S Operating system for a multi-tasking operating environment
JPH02163834A (ja) * 1988-12-16 1990-06-25 Mitsubishi Electric Corp マルチ・タスク処理方式
JPH02224140A (ja) * 1989-02-27 1990-09-06 Nippon Motoroola Kk 割込試験装置
US5127098A (en) * 1989-04-12 1992-06-30 Sun Microsystems, Inc. Method and apparatus for the context switching of devices
GB2234613B (en) * 1989-08-03 1993-07-07 Sun Microsystems Inc Method and apparatus for switching context of state elements in a microprocessor
AU631246B2 (en) * 1989-09-15 1992-11-19 Digital Equipment Corporation System and method for reducing timing channels in digital data processing systems
US5249294A (en) * 1990-03-20 1993-09-28 General Instrument Corporation Determination of time of execution of predetermined data processing routing in relation to occurrence of prior externally observable event
CA2037857C (en) * 1990-03-20 2001-01-16 Roy Allen Griffin, Iii Prevention of determination of time of execution of predetermined data processing routine in relation to occurrence of prior observable external event
JP2697254B2 (ja) * 1990-06-06 1998-01-14 松下電器産業株式会社 リアルタイム処理装置
JPH0454652A (ja) * 1990-06-25 1992-02-21 Nec Corp マイクロコンピュータ
US5357617A (en) * 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
US5404402A (en) * 1993-12-21 1995-04-04 Gi Corporation Clock frequency modulation for secure microprocessors
US5613114A (en) * 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching

Also Published As

Publication number Publication date
CN1234883A (zh) 1999-11-10
WO1999000718A1 (fr) 1999-01-07
TW457453B (en) 2001-10-01
CN1239973C (zh) 2006-02-01
DE69839958D1 (de) 2008-10-16
JP2002055883A (ja) 2002-02-20
KR100578459B1 (ko) 2006-05-10
HK1022756A1 (en) 2000-08-18
US7036002B1 (en) 2006-04-25
FR2765361A1 (fr) 1998-12-31
EP0920660B1 (fr) 2008-09-03
FR2765361B1 (fr) 2001-09-21
EP0920660A1 (fr) 1999-06-09
JP2000501541A (ja) 2000-02-08

Similar Documents

Publication Publication Date Title
US5944833A (en) Integrated circuit and method for decorrelating an instruction sequence of a program
KR100578459B1 (ko) 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터
US4558176A (en) Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software
US5237616A (en) Secure computer system having privileged and unprivileged memories
US7584386B2 (en) Microprocessor comprising error detection means protected against an attack by error injection
JP4030719B2 (ja) インテリジェントic
KR100227875B1 (ko) 프로그램 코드를 보호용으로 사용되는 어드레스 정보 스트림의 암호화
US5704039A (en) Mask programmable security system for a data processor and method therefor
JPH0719231B2 (ja) 改良されたアクセス安全装置を備える集積回路
US20070237325A1 (en) Method and apparatus to improve security of cryptographic systems
JP2003521034A (ja) マイクロプロセッサシステムおよびそれを操作する方法
JP4693245B2 (ja) 外部からの不正操作に対するコンピュータコアの保護
JP2003228521A (ja) 集積回路の動作のブロック
KR20000076351A (ko) 집적 회로 및 상기 회로의 테스트 방법
JPH0231256A (ja) 外部メモリとそれを用いる情報処理装置
US7340575B2 (en) Method and a circuit for controlling access to the content of a memory integrated with a microprocessor
KR20010032564A (ko) 미분 전류 소모 분석을 방지하는 데이터 처리 장치 및작동 방법
CN207319238U (zh) 用于保护集成电路的至少一个功能的保护模块
JPH0475137A (ja) データ処理装置
US20230069651A1 (en) Processing device and method for secured boot
JPS63266533A (ja) デ−タ処理装置
JP3404354B2 (ja) インサーキットエミュレータ及び不正アクセス検出方法
SU1042023A1 (ru) Устройство контрол микропроцессорных блоков

Legal Events

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

Payment date: 20120430

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130502

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee