KR100574747B1 - 마이크로프로세서 회로 및 액세스 구성 방법 - Google Patents

마이크로프로세서 회로 및 액세스 구성 방법 Download PDF

Info

Publication number
KR100574747B1
KR100574747B1 KR1020037010303A KR20037010303A KR100574747B1 KR 100574747 B1 KR100574747 B1 KR 100574747B1 KR 1020037010303 A KR1020037010303 A KR 1020037010303A KR 20037010303 A KR20037010303 A KR 20037010303A KR 100574747 B1 KR100574747 B1 KR 100574747B1
Authority
KR
South Korea
Prior art keywords
program
access
memory
address
microprocessor circuit
Prior art date
Application number
KR1020037010303A
Other languages
English (en)
Other versions
KR20030084921A (ko
Inventor
브루클마이어프란츠-요셉
프리딩거한스
세들라크홀거
마이크리스티안
Original Assignee
인피네온 테크놀로지스 아게
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인피네온 테크놀로지스 아게 filed Critical 인피네온 테크놀로지스 아게
Publication of KR20030084921A publication Critical patent/KR20030084921A/ko
Application granted granted Critical
Publication of KR100574747B1 publication Critical patent/KR100574747B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range

Abstract

본 발명은 메모리 내에 저장된 데이터 또는 프로그램에 대한 액세스를 구성하는 마이크로프로세서 회로에 관한 것이다. 상기 회로는 적어도 하나의 마이크로프로세서와, 운영 체제를 위한 메모리와, 개별 외부 프로그램으로 자유 프로그래밍하기 위한 적어도 하나의 메모리를 포함한다. 자유 프로그래밍을 위해 이용되는 메모리는 대응하는 어드레스 공간을 포함하는 수 개의 메모리 영역을 구비하고, 각 어드레스 공간에는 식별자가 할당된다. 또한, 마이크로프로세서 회로는 메모리 구역을 주소 지정(addressing)하기 이전에 메모리 구역에 각각 할당된 식별자를 제 1 보조 레지스터(first auxiliary register) 내부로 로딩하고, 주소 지정된 메모리 구역의 상기 식별자를 제 2 보조 레지스터 내부로 로딩하며, 제 1 보조 레지스터와 제 2 보조 레지스터를 비교하는 수단을 포함한다. 액세스 권리를 포함하는 적어도 하나의 비트 시퀀스는 또한 메모리 구역의 각각의 어드레스 공간에 할당되고, 이것은 코드 인스트럭션 및 민감성 데이터가 다른 외부 프로그램으로부터의 기록 액세스로부터 보호될 수 있게 한다.

Description

마이크로프로세서 회로 및 액세스 구성 방법{MICROPROCESSOR CIRCUIT FOR DATA CARRIERS AND A METHOD FOR ORGANISING ACCESS TO DATA STORED IN A MEMORY}
본 발명은 청구항 1의 서문에 따른 마이크로프로세서 회로 및 청구항 14의 서문에 따른 메모리에 저장된 프로그램 또는 데이터에 대한 액세스를 구성하는 방법에 관한 것이다.
전술한 타입의 마이크로프로세서 회로는 바람직하게는 가령 신분증 카드, 신용 카드, 청구 카드 등과 이른바 스마트 카드에서 사용되며, 집적 회로를 구비하고 있다. 또한, 마이크로프로세서 회로는 대응하는 인터페이스를 통해서 상술한 카드와 통신하는 이른바 거래 지불 모듈(payment transaction module)에서도 사용된다. 일반적으로, 마이크로프로세서 회로는 거래시 지불하는데 있어서 적합한 가령 이동 전화, PC, PDA 등과 같은 개인화된 단말 장치에서 사용될 수 있다.
상기 카드의 중요한 장점 중 하나는 카드 소유자가 이를 다양하게 사용할 수 있다는 것이다. 집적 회로 및 관련 저장 매체에 포함된 마이크로프로세서는 광범위한 데이터가 카드 그 자체 내에서 프로세싱될 수 있게 한다.
카드 제조자는 가령 외부에서 입력된 코드를 저장된 코드와 비교하는 절차와 같은 기본 기능을 수행하는 상주형 운영 체제(a resident operating system)를 상기 마이크로프로세서에 제공할 수 있다. 마이크로프로세서와 관련된 메모리는 상기 운영 체제를 저장할 뿐만 아니라 다수의 기능과 가령 보안 검사를 위해서 필요하고 언제나 비밀로 유지되어야 하는 파라미터를 포함하는 특정 애플리케이션을 저장할 수 있다.
관련 프로그램을 구비한 운영 체제가 시작 시점을 형성하고 소정의 인터페이스가 규정되며 메모리 또는 메모리 구역이 외부 프로그램을 위해서 예비될 때, 카드가 다양하게 사용될 수 있다. 카드 제조자는 카드 사용자 말하자면 카드를 발행하는 조직에게 그의 외부 프로그램에서 프로그래밍하기 위한 메모리 또는 메모리 구역을 제공한다. 이 외부 프로그램에서, 상기 조직은 운영 체제와는 무관하지만 오직 상기 특정 조직과는 관계가 있는 특정한 동작을 규정할 수 있다.
미래에는, 오직 단일 조직만이 사전제조된 스마트 카드 내에 그의 외부 프로그램을 저장하는 것이 아니라, 다수의 여러 조직들이 스마트 카드 상에 그들의 대응하는 프로그램을 저장할 것이다. 이 경우에, 운영 체제의 일부가 되거나 개별 외부 프로그램의 일부가 되는 보안 관련 데이터가 비승인 액세스로부터 보호되도록 하기 위한 노력이 필요하다.
외부 프로그램이 다른 외부 프로그램의 프로그램부(이른바 프로그램 라이브러리(program library))를 호출하는 것을 고려할 수 있다. 통상적인 메모리 조직을 기초로 하여, 모든 프로그램부는 동일한 논리 어드레스 구역으로서 지칭되는 장소에 위치한다. 이 경우에, 외부 프로그램의 코드 및 데이터는 메모리 구역의 어드레스 공간에 위치한다. 이 경우에, 상기 코드 그 자체는 다수의 프로그램부, 라이브러리 또는 기능부를 포함한다. 예시적으로, 이른바 애플리케이션으로 불리어지는 외부 프로그램 A가 동일한 논리 어드레스 공간에 위치하는 외부 프로그램 B의 라이브러리 및 다른 외부 프로그램 C의 라이브러리를 교대로 호출하면, 다른 보호 메카니즘이 존해하지 않는 경우에 프로그램 라이브러리 B는 프로그램 라이브러리 C의 데이터에 대한 기록 동작을 수행함으로써 데이터를 파괴하거나 판독 동작을 수행함으로써 프로그램 라이브러리 C의 고유한 비밀 데이터를 은밀하게 발견할 수도 있다. 이로써, 프로그램 라이브러리 C는 다른 외부 프로그램에서의 사용을 포함해서 추후에 사용에 있어서 사용 불가능하게 되며, 이로써 프로그램 라이브러리 C의 가치가 파괴될 것이다.
이러한 문제를 해결하기 위해서, 프로그램부, 말하자면 프로그램 라이브러리가 메모리 내의 하드웨어 메카니즘에 의해서 서로 분리되게 하고, 프로그램 라이브러리 간의 데이터 액세스는 오직 운영 체제에 의해서만 허용되게 해야 하는 것으로 알려져 있다. 그러나, 이것의 결과로 획득되는 보안은 높은 프로그래밍 복잡성 및 복잡한 하드웨어로 이루어진다. 또한, 컴퓨터 라이브러리들 간의 직접적인 통신에 비해서 성능이 감소된다. 이로써, 높은 보안 수준을 성취하게 되면 성능이 저하된다.
EP 0 512 542 B1은 메모리에 저장된 데이터 또는 프로그램으로의 액세스를 방지하는 마이크로프로세서 회로를 개시하며, 상기 회로는 적어도 하나의 마이크로프로세서와, 운영 체제를 위한 메모리와, 개별 외부 프로그램으로 자유 프로그래밍하기 위한 적어도 하나의 메모리를 포함한다. 이 경우에, 다수의 자유롭게 프로그래밍가능한 메모리 구역이 제공되며, 상기 그의 어드레싱된 공간은 적어도 하나의 최상위 로케이션(most-significant location)을 제외하고는 동일하다. 또한, 마이크로프로세서 회로는 제각각의 경우에 메모리 구역을 주소 지정하기 이전에 메모리 구역에 할당된 각각의 최상위 로케이션을 제 1 보조 레지스터 내부로 로딩하며, 상기 주소 지정된 메모리 구역의 각각의 최상위 로케이션을 제 2 보조 레지스터 내부로 로딩한 다음 제 1 보조 레지스터와 제 2 보조 레지스터를 비교하는 수단을 갖는다. 상기 보조 레지스터 컨텐츠가 변경되는 경우에, 보호 신호(inhibit signal)가 생성되어 허용되지 않은 어드레스를 주소 지정하는 외부 프로그램이 실행되고 있는지 여부를 확인한다.
이러한 절차의 단점은 원칙적으로 다른 외부 프로그램에 대한 액세스가 방지된다는 것이다. 이로써, 다른 외부 프로그램의 특정 프로그램부를 상호간에 사용하는 것이 불가능하다. 이로써, 적절한 경우에 다수의 외부 프로그램은 동일한 기능성을 갖는 동일한 프로그램부를 포함해야 한다. 그러나, 이는 오직 한정된 메모리 구역을 일반적으로 갖는 휴대용 데이터 장치에 있어서 매우 불리하다.
발명의 개요
본 발명의 목적은 간단한 방법을 사용하여 외부 프로그램으로의 액세스를 가능하게 하는 회로 및 방법을 제공하는 것이다.
이러한 목적은 청구항 1 및 14에서 명시된 특징부에 의해서 본 발명에 따라서 성취된다.
본 발명에 따르면, 상기 목적은 메모리 구역의 각 어드레스 공간이 액세스 권리를 포함하는 적어도 하나의 비트 시퀀스(ACR)를 할당받는다는 사실로 인해서 성취된다. 달리 말하면, 이는 각각의 논리적 어드레스 공간이 액세스 권리를 포함하는 비트 시퀀스를 할당받는 적어도 하나의 어드레스 블록으로 하위 분할됨을 의미한다.
이로써, 본 발명은 동일한 논리적 어드레스 공간에 위치한 상이한 외부 프로그램들의 프로그램부들 간의 직접적인 통신을 가능하게 하는 하드웨어 보호 메커니즘을 제공한다. 그러나, 이 경우에, 운영 체제에 의한 제어가 필요없게 된다.
본 발명의 유리한 실시예에서, 어드레스 공간의 각 어드레스는 액세스 권리를 포함하는 비트 시퀀스를 할당받는다. 달리 말하면, 이는 코드 열 및 데이터 워드가 모두 액세스 권리를 포함하는 비트 시퀀스를 할당받는 것을 의미한다. 이로써, 선택적으로 결정된 데이터 구역은 바람직한 권리를 할당받을 수 있게 된다.
액세스 권리를 포함하는 비트 시퀀스는 유리하게는 메모리 내에 저장된 테이블 내에서 어드레스 또는 어드레스 블록 및 식별자(프로그램 ID)와 함께 저장된다. 이 경우에, 어드레스 블록은 그의 어드레스 시작부 또는 그의 어드레스 종료부 및 어드레스 블록 길이에 의해 식별될 수 있다. 이와 달리, 어드레스 블록은 하부 어드레스와 상부 어드레스에 의해서 식별될 수도 있다. 각 어드레스 블록은 이어서 액세스 권리를 포함하는 비트 시퀀스를 할당받을 수 있다. 어드레스 블록이 오직 개별 어드레스만을 포함한다면, 각 개별 인스트럭션 또는 각 개별 어드레스는 액세스 권리를 포함하는 비트 시퀀스를 할당받을 수 있다.
이와 달리, 각 어드레스 공간 또는 각 어드레스에는 액세스 권리를 포함하는 비트 시퀀스가 제공된다. 이는 액세스 권리를 포함하는 비트 시퀀스의 길이만큼 이전에 사용된 워드 열을 연장하는 것을 의미한다. 결과적으로, 액세스 권리는 자동적으로 각 어드레스, 말하자면 각 워드에 할당된다. 이 경우에, 각 어드레스 또는 각 어드레스 공간의 식별자는 가령 각 어드레스 또는 어드레스 공간의 각 어드레스의 적어도 하나의 최상위 로케이션 내에 포함될 수 있다.
액세스 권리를 포함하는 비트 시퀀스는 제 1 액세스 권리 및 제 2 액세스 권리를 포함하며, 상기 제 1 액세스 권리는 두 메모리 구역 간의 액세스를 조정하며, 상기 제 2 액세스 권리는 하나의 메모리 구역 내의 액세스 간을 조정한다. 서로 다른 외부 프로그램들이 서로 다른 메모리 구역 내에 저장되어 있다고 가정하면, 액세스는 외부 프로그램의 프로그램부에 의해서 매우 선택적으로 조정될 수 있다. 이로써, 액세스는 거절되거나 허락될 수 있다. 액세스 그 자체는, 데이터가 외부 프로그램이 의지하는 것과 관련이 있다면, 판독 승인 또는 기록 승인을 포함할 수 있다. 하나의 외부 프로그램이 다른 외부 프로그램으로부터 코드 호출을 시도한다면, 이러한 경우에도 액세스 권리의 조정이 존재할 수 있다.
유리한 실시예에서, 비트 시퀀스에서 제 3 (데이터) 액세스 권리는 하나의 메모리 구역 내에서의 액세스, 달리 말하자면 단일 프로그램 내에서 액세스를 조정한다. 이는 전용 프로그램의 상기 제 2 액세스 권리와 결합된다. 특히, 상기 전용 프로그램 내의 실행 코드의 제 2 액세스 권리가 설정되어 있지 않다면, 가령 초기화 데이터 또는 변수와 같은 민감성 데이터를 상기 전용 프로그램 내의 특정 프로그램부의 판독 또는 기록 액세스로부터 보호할 수 있다. 그러나, 실행 동안 발생하는 데이터만을 포함하는 다른 데이터 구역은 가령 모든 프로그램부에 의해서 판독 또는 기록될 수 있다.
다른 유리한 실시예에서, 액세스 권리가 운영 체제에 의해서 판독 또는 기록될 수 있는 경우에, 두 메모리 구역 간의 다른 액세스 권리를 포함하는 권리 버퍼가 제공된다. 상기 버퍼는 바람직하게는 각 경우에 두 개의 상이한 메모리 구역 간의 허용된 할당 영역, 달리 말하자면 허용된 액세스를 포함한다. 이 실시예는 가령 캐시(cache)(버퍼)의 형태로 실현될 수 있는 액세스 테이블을 도입한다. 이러한 할당은 식별자(프로그램 ID) 또는 상기 각각의 식별자를 결정하는데 사용될 수 있는 번역 테이블에 의해서 테이블로 실현된다.
결과적으로, 다수의 프로그램부를 포함하는 애플리케이션 A는 가령 프로그램부 C로의 액세스 권리를 부여하기보다는 프로그램부 B로의 액세스 권리를 부여할 수 있다. 이를 위해서, 이러한 버퍼 또는 버퍼 내에 저장된 테이블은, 가령 두 개의 행 및 프로그램부의 개수 및 복잡성에 따라서 대응하는 수의 열을 포함한다. 하나의 열에서, 액세스 중인 프로그램부에 대한 식별자는 제 1 행에 제공되며, 액세스를 수행하도록 허용될 프로그램부에 대한 식별자는 제 2 행에 제공된다. 가장 간단한 구현의 경우에, 상기 식별자들은 프로그램 ID와 동일하다. 그러나, 이와 달리, 번역 테이블이 또한 제공되어서 다른 테이블 엔트리로부터 프로그램 ID를 결정하는데 사용될 수 있다.
권리 버퍼로 실현되는 액세스 테이블은 상이한 방식으로 실현될 수 있다. 2 행 테이블의 경우에, 상이한 프로그램부들의 각각의 조합은 많아야 1회 발생될 수 있도록 허용된다. 이와 달리, 상기 테이블은 프로그램부의 개수에 대응하는 프로그램부의 수를 포함한다. 허용된 액세스는 테이블 내의 추가된 행에 의해서 저장된다.
다른 유리한 바람직한 실시예에서, 운영 체제에 의해서만 관리될 수 있는 메모리 구역이 제공된다. "콘텍스트 세이프 구역(Context Safe Area)"으로 지칭되는 상기 운영 체제에 의해서만 관리되는 메모리 구역은 임의의 다른 외부 프로그램 또는 이들의 프로그램부에 의해서 판독 또는 기록될 수 없는 민감성 데이터를 버퍼 저장(buffer-store)하는 기능을 한다. 이로써, 상기 운영 체제에 의해서만 관리될 수 있는 상기 메모리 구역은 특히 특정하게 선택된 프로그램부에 대해서만 사용 가능한 제 3 액세스 권리를 갖는 코드에 의해서 사용되는 스택을 구성한다.
다른 실시예에서, 각 메모리 구역은 각각의 메모리 구역 내에 저장된 프로그램에 의해서만 관리될 수 있는 데이터를 버퍼 저장하는 어드레스 구역을 할당받는다. 이러한 버퍼(스택)는 또한 다른 외부 프로그램에 의해서 어떠한 환경 하에서도 판독될 수 없는 특정 민감성 데이터를 버퍼 저장하는 기능을 한다.
상술된 마이크로프로세서 회로의 구성은 이하에서 기술될 방법을 참조하면 보다 잘 이해될 것이다.
본 발명은, 적어도 하나의 마이크로프로세서, 운영 체제를 위한 메모리, 개별 외부 프로그램으로 자유 프로그래밍하기 위한 적어도 하나의 메모리, 자유 프로그래밍하기 위한 메모리 내에 제공되어 있고, 각각의 어드레스 공간을 갖는 다수의 메모리 구역을 구비하여, 메모리 내에 저장된 데이터 또는 프로그램으로의 액세스를 구성하는 방법을 제공하는데, 상기 각각의 어드레스 공간은 식별자(프로그램 ID)를 할당 받고, 정확하게 하나의 외부 프로그램이 각 메모리 구역 내에 제공되며, 본 방법은, (a) 외부 프로그램의 현재 실행되고 있는 코드 인스트럭션의 제 1 프로그램 ID를, 그 시점의 현재 어드레스(PC)의 식별자를 사용하여 결정하는 단계와, (b) 주소 지정된 메모리 구역의 제 2 프로그램 ID를 결정하는 단계와, (c) 상기 제 1 프로그램 ID와 상기 제 2 프로그램 ID를 비교하는 단계와, (d) 단계 (c)에서의 비교 결과에 따라서 제 1 또는 제 2 액세스 권리를 선택하는 단계와, (e) 상기 선택된 액세스 권리를 평가하는 단계와, (f1) 상기 주소 지정된 메모리 구역에 대한 상기 액세스 또는 상기 코드 인스트럭션이 허용된다면 프로그램 코드를 계속 진행시키는 단계와, (f2) 상기 주소 지정된 메모리 구역에 대한 상기 액세스 또는 상기 코드 인스트럭션이 허용되지 않는다면, 에러 처리 루틴(an error handling routine)을 호출하는 단계를 포함한다.
결과적으로, 가령 최상위 로케이션(들)과 같은 식별자(이후부터는, 프로그램 ID로도 지칭됨)를 사용하여, 동일한 메모리 구역 또는 상이한 메모리 구역으로 또한 그에 따라 상이한 외부 프로그램으로의 액세스가 이뤄지고 있는지 여부를 결정할 수 있다. 이러한 평가 결과에 따라서, 제 1 액세스 권리 또는 제 2 액세스 권리가 결정 및 평가된다. 이러한 방법을 기초로 하여, 특정 프로그램부(프로그램 라이브러리)가 다른 외부 프로그램에 대해서도 사용가능하게 될 수 있다.
본 발명에 따른 방법의 바람직한 실시예에서, 제 1 프로그램 ID와 제 2 프로그램 ID가 동일하다면, 제 2 액세스 권리 또는 제 3 액세스 권리가 현재 실행되고 있는 코드 인스트럭션의 액세스 권리에 따라서 선택된다. 코드 인스트럭션에 할당된 액세스 권리는 코드 인스트럭션이 프로그램 코드의 민감성 구역을 액세스할 수 있는지의 여부를 나타낸다. 만약에 그러하다면, 상기 어드레스에 할당된 선택된 제 3 액세스 권리가 평가되고 기록 액세스 또는 판독 액세스가 실행될 수 있는지의 여부가 규정된다. 이는 현재 실행되고 있는 외부 프로그램의 프로그램 라이브러리에 의한 민감성 데이터의 파괴를 방지하는 것을 보장한다.
본 발명에 따른 다른 유리한 실시예에서, 단계 (f2) 후에, (g) 상기 제 2 프로그램 ID(PIDADDR)에 의해 식별된 메모리 구역으로의 상기 제 1 프로그램 ID(PIDPC)를 갖는 메모리 구역의 허용된 액세스를 나타내는 엔트리에 대해 상기 권리 버퍼를 체크하는 단계와, (h) 상기 엔트리가 상기 권리 버퍼 내에 존재한다면 상기 프로그램 코드를 계속 진행시키는 단계와, (i) 상기 엔트리가 존재하지 않는다면 에러 처리 루틴을 호출하는 단계를 포함한다.
본 발명에 따른 방법의 유리한 변형은 상기 권리 버퍼에 의해서, 프로그램부 C 로의 액세스 권리가 부여되기 보다는 프로그램부 B로의 액세스 권리가 부여될 수 있게 한다.
프로그램부 A가 프로그램 B 액세스하면, 먼저 제 1 액세스 권리, 제 2 액세스 권리, 제 3 액세스 권리가 체크된다. 액세스가 허용되면, 각각의 권리에 따라서 실행된다. 그러나, 액세스가 허용되지 않는다면, 권리 버퍼의 컨텐츠가 프로그램부 A의 프로그램부 B로의 액세스에 대한 엔트리의 존재 여부와 관련하여 체크된다. 상기 엔트리가 존재한다면, 상기 프로그램부 B로의 연장된 액세스 권리는 가령 프로그램부 A에 부여된다. 상기 엔트리가 상기 권리 버퍼 내에 존재하지 않는다면, 에러 처리 루틴이 개시된다.
본 발명에 따른 유리한 실시예에서, 단계 (a)의 코드 인스트럭션이 점프 인스트럭션(jump instruction)이라면, 단계 (a) 이후에는 (b) 주소 지정된 메모리 구역의 제 2 프로그램 ID를 결정하는 단계와, (c) 상기 제 1 및 제 2 프로그램 ID를 비교하는 단계와, (d) 상기 호출된 어드레스로 점프하는 단계와, (e1) 상기 제 1 및 제 2 프로그램 ID가 동일하면 상기 주소 지정된 메모리 구역에서 상기 프로그램 코드를 계속 진행시키는 단계와, (e2) 상기 제 1 및 제 2 프로그램 ID가 동일하지 않다면 상기 주소 지정된 내용의 어드레스 내용을 판독하는 단계와, (aa) 상기 어드레스 내용 판독 사항이 엔트리 인스트럭션이 아니면 에러 처리 루틴을 호출하는 단계와, (bb) 상기 어드레스 내용 판독 사항이 엔트리 인스트럭션이면 상기 프로그램 코드를 계속 진행시키는 단계가 실행된다.
이러한 절차는 프로그램 라이브러리들 간의 점프가 규정된 엔트리 인스트럭션에 의해서 이전에 규정된 엔트리 어드레스에서만 실행될 수 있게 한다. 이로써, 프로그램 코드의 임의의 로케이션에 대해서 제어되지 않은 엔트리는 불가능해진다. 이로써, 데이터의 은밀한 발견 및 파괴가 불가능하게 된다.
본 발명의 다른 실시예에서, 점프 인스트럭션이 저장된 어드레스는 버퍼 상 에 저장된다.
상기 버퍼는 바람직하게는 서두에서 언급된 "콘텍스트 세이프 구역"인, 오직 운영 체제에 의해서만 관리될 수 있는 저장 구역이다.
엔트리 인스트럭션은 유리하게는 고정적으로 사전 규정된 비트 시퀀스이다. 상기 비트 시퀀스는 엔트리 어드레스의 관련 여부를 식별하는데 사용될 수 있다.
또한, 공통 액세스 가능 버퍼(스택)가 제 1 실행 권리를 할당받은 코드 인스트럭션에 대한 버퍼로서 이용될 수 있는 것이 매우 유리하다. 상기 코드 인스트럭션은 프로그램의 민감성 데이터를 액세스하지 않거나 액세스할 수 없는 프로그램 코드이다.
한편, 각각의 메모리 구역에 할당되고 상기 각각의 메모리 구역에 저장된 프로그램에 의해서만 관리될 수 있는 버퍼는 유리하게는 제 2 실행 권리를 할당받은 코드 인스트럭션에 의해서 사용된다. "민감성 스택(Sensitive Stack)"으로서 지칭되는 상기 버퍼는 다른 프로그램 라이브러리 또는 외부 프로그램에 의해서 어떠한 상황 하에서도 판독 또는 기록될 수 없는 데이터를 버퍼 저장하는 기능을 한다.
본 발명 및 이의 장점은 이하의 도면을 참조하여 보다 상세하게 설명될 것이다.
도 1은 두 개의 프로그램 A 및 B를 갖는 선형 어드레스 공간의 분할 도면,
도 2는 액세스 권리를 포함하는 테이블의 제 1 실시예의 도면,
도 3은 액세스 권리를 포함하는 테이블의 제 2 실시예의 도면,
도 4는 각 어드레스가 액세스 권리를 포함하는 비트 시퀀스를 할당받는 어드레스 구역의 기본 설계 도면,
도 5는 가능한 액세스 권리를 갖는 테이블의 도면,
도 6은 프로그램 흐름도의 형태로 된 본 발명의 따른 방법의 도면,
도 7은 본 발명에 따른 마이크로프로세서 회로의 실시예의 도면.
도 1은 본 발명이 기초로 하고 있는 문제 구역을 예시적으로 도시한다. 선형 어드레스 공간에 위치한 두 개의 프로그램 A 및 B가 존재한다. 프로그램 A에 속해 있으며 관련된 휘발성이며 고정적으로 사전 규정된 데이터를 갖는 프로그램부 또는 프로그램 라이브러리가 상호 호출 및 상호 관리에 의해서 서로를 파괴하지 않도록 하는 방식으로 구성되어 있다고 가정한다. 도 1에서, 프로그램 A는 단지 인스트럭션 코드를 포함하며 코드 A에 의해서 식별되는 구역을 포함한다. 상기 구역은 상호 간에 독립적인 다수의 기능부 A1, A2를 포함한다. 상기 기능부는 서로 간을 상호 간에 호출할 수 있다. 또한, 프로그램 A는 예시적으로 휘발성 또는 비휘발성 데이터를 포함할 수 있는 두 개의 데이터 구역 A1, A2를 포함한다. 프로그램 A에 위치한 모든 데이터는 인스트럭션 코드 또는 상기 기능부에 의해서 완전하게 관리 및 제어될 수 있다.
프로그램 B는 오직 한 개의 데이터 구역 B만이 도 1에 도시되었다는 것을 제외하면 프로그램 A와 동일한 구조를 갖는다. 프로그램 B에 위치한 기능부들도 또한 서로 간을 상호적으로 호출할 수 있으며 데이터 구역 B에 저장된 데이터를 관리 및 제어할 수 있다.
본 발명에 따르면, 프로그램 A 및 프로그램 B는 최상위 로케이션(들)을 통해서 또는 각각의 할당된 프로그램 ID(PID)를 통해서 서로 다른 각각의 사전결정된 메모리 구역에 위치한다. 물론, 이 메모리 구역 내부에서, 인스트럭션 코드 및 데이터는 반드시 도면에서 도시된 바와 같이 배치되어야 하는 것은 아니다.
본 발명은 프로그램 B의 기능부가 프로그램 A의 데이터를 액세스하는 것을 가능하게 할 수 있는 가능성에 대해서 살펴보고자 한다. 예시적으로, 이러한 두 개의 액세스 타입이 도 1에 도시된다. 기능부 B1은 데이터 구역 A2를 액세스하며 기능부 B2는 데이터 구역 A1을 액세스한다. 본 발명에 따라서, 상기 데이터가 프로그램 B에 대해서 이용 가능하게 만드는 프로그램 A는 특정 데이터 구역에 대해서 선택적으로 다른 프로그램 특정 액세스 권리를 허용할 수 있다. 가능한 액세스 권리가 도 5에 도시되어 있다. 다음과 같은 것들이 고려될 수 있는데, 기록/판독 권리(W), 판독 전용 권리(R), 데이터 액세스 권리 없음(-), 말하자면 판독 및 기록 불가능이 있다. 이들 권리들은 데이터에 할당된다. 이른바 실행 권리 Xn 및 Xs는 인스트럭션 코드에 할당되며, 요구된 데이터 구역이 현재 실행되고 있는 인스트럭션으로 액세스 가능한지의 여부에 대한 정보를 포함한다.
프로그램 B에서 프로그램 A로의 데이터 액세스는 현재 실행되고 있는 코드 인스트럭션 및 액세스된 어드레스의 프로그램 ID(가령, 최상위 로케이션 또는 로케 이션들)를 비교함으로써 하드웨어에 의해서 체크될 수 있다.
상기 프로그램 ID 비교 결과에 따라서, 데이터 액세스가 현재 실행되고 있는 프로그램 내부의 기능부에 의해서 또는 다른 프로그램의 기능부에 의해서 실행되는 지의 여부가 확립될 수 있다. 본 발명에 따라서, 이어서, 각각의 데이터 구역(코드 인스트럭션 및 데이터 모두)은 액세스 권리를 포함하는 비트 시퀀스를 할당받는다.
상기 비트 시퀀스는 도 4에 도시된 바처럼 워드 열의 일부일 수 있다. 어드레스 및 이 내부에 위치하는 값 이외에, 상기 워드 열은 액세스 권리(ACR)를 포함하는 비트 시퀀스에 의해서 연장된다. 이와 달리, 메모리 내에는 상기 메모리 구역을 규정하며 상기 메모리 구역에 할당되고, 상기 액세스 권리를 갖는 비트 시퀀스를 포함하는 테이블이 제공될 수 있다. 이 경우에, 상기 어드레스 구역은 바람직하게는 하부 어드레스 및 상부 어드레스에 의해서 규정되거나(도 2 참조), 이와 달리 그의 어드레스 시작부 및 어드레스 블록 길이에 의해서 규정될 수 있다(도 3 참조).
액세스 권리를 포함하는 비트 시퀀스는 적어도 두 개의 액세스 권리를 포함하며, 제 1 액세스 권리는 두 프로그램 간의 액세스를 조정하며, 제 2 액세스 권리는 프로그램 내부에서의 액세스를 조정한다. 액세스 권리가 상기 비트 시퀀스(ACR) 내에서 배치되는 순서는 원하는대로 선택될 수 있다. 액세스 권리를 포함하는 비트 시퀀스는 유리하게는 제 3 액세스 권리를 포함하며, 상기 제 3 액세스 권리는 프로그램 내부의 액세스를 조정한다. 상기 제 2 액세스 권리와는 대조적으로, 가령 초기화 데이터와 같은 민감성 데이터를 포함하는 어드레스 구역은 상기 제 3 액세스 권리에 의해서 식별된다. 코드 인스트럭션이 상기 데이터를 판독 또는 기록할 수 있도록 하기 위해서, 각각의 코드 인스트럭션은 또한 특별한 식별부를 필요로 한다.
도 2에 도시된 액세스 권리를 포함하는 비트 시퀀스는 제 1 및 제 2 및 제 3 권리를 가지며, 후자의 권리는 행 ACR에서 우측으로부터 좌측으로 전술한 순서로 입력된다. 가령 초기화 데이터를 포함하는 데이터 구역 A2는 외부 프로그램의 기능부에 의해서 판독이 허용되며(제 1 액세스 권리 : R), 이 때에 현 프로그램 내부의 기능부는 기록 권리를 소유할 수 있다. 이는 통상적인 제 1 실행 권리(Xn)로 식별되는 코드 인스트럭션 뿐만 아니라 민감성 데이터를 실행하기 위한 승인(제 2 실행 권리)(Xs)을 갖는 코드 인스트럭션에 대해서도 적용된다.
또한, 현재 실행되고 있는 프로그램 A 내부 및 외부에 존재하는 기능부에 의해서 데이터 구역 A1이 기록되도록 허용하는 것도 도 2의 테이블로부터 수집될 수 있다(제 1 및 제 2 및 제 3 액세스 권리 : W).
이로써, 선형 어드레스 공간의 개별 데이터 구역에 할당된 액세스 권리에 의해서, 데이터 또는 기능부가 간단한 방식으로 다른 프로그램으로 액세스가능하게 될 수 있다. 외부 프로그램에 의해서 요구되는 액세스가 허용되지 않는다면(상기 액세스는 액세스 권리를 기초로 하여 확립될 수 있음), 에러 처리 루틴이 개시된다. 이러한 방식으로, 프로그래머는 프로그램의 코드 인스트럭션 및 선택된 데이터를 다른 프로그램으로부터의 기록 액세스로부터 보호할 수 있다.
본 발명에 따른 다른 보호 메카니즘은 외부 프로그램으로부터의 기능부 호출의 제어와 관련된다. 프로그램에서 제어되지 않는 프로그램 흐름을 방지하여 전용 데이터의 덮어쓰기(overwrite)에 의한 가능한 파괴를 방지하기 위해서, 프로그램 내의 기능부는 오직 규정된 엔트리 어드레스에서만 다른 프로그램이 점프할 수 있도록 허용된다. 이들 엔트리 어드레스는 사전규정된 비트 시퀀스에 의해 식별된다. 점프 인스트럭션의 경우에, 명시된 어드레스는 예상되는 비트 시퀀스에 대해서 체크된다. 만약 예상되는 비트 시퀀스가 존재하지 않는다면, 에러 처리 루틴이 개시된다. 만약 예상되는 비트 시퀀스가 발견된다면, 호출된 기능부가 실행될 수 있다.
프로그램 내의 기능부는 어떠한 로케이션으로부터도 호출될 수 있기 때문에, 리턴 어드레스(return address)는 각 기능부 호출에 대해서 저장되어야 한다. 리턴 인스트럭션이 기능부의 코드 인스트럭션의 프로세싱 동안 발견된다면, 프로그램 카운터는 이전에 저장된 리턴 어드레스로 설정된다. 프로그램 내에서의 프로그램 흐름은 리턴 어드레스를 조작함으로써 바람직하지 못한 방식으로 변경될 수 있다.
이러한 문제를 해결하기 위해서, 본 발명은 운영 체제에 의해서만 액세스될 수 있는 버퍼 상에서의 기능부 호출의 경우에 리턴 어드레스를 자동적으로 저장함으로써 다른 프로그램에 의한 기록 액세스로부터 상기 리턴 어드레스를 보호하는 방법을 제안한다. 이 경우에, 기능부 호출이 다른 프로그램으로부터 실행되는 경우에 오직 상기 리턴 어드레스만을 기록되지 않은 버퍼 상에 저장하는 것으로 충분하다. 반대로, 동일한 프로그램 내에서 기능부가 호출된 경우에는, 일반적으로 액세스가능한 버퍼를 사용할 수 있다. 그러나, 이 경우에, 상기 리턴 어드레스가 현 프로그램 외부로 나오지 않는 것을 보장할 필요가 있다. 이와 달리, 기능부 호출의 경우에 리턴 어드레스는 중간의 레지스터 내에 자동적으로 저장될 수 있으며, 상기 중간 레지스터의 이전 값(old value)은 리턴 어드레스와 함께 개별 스택 상에 저장된다. 상기 중간 레지스터로의 액세스는 호출된 프로그램에 대해서는 운영 체제에 의해서 관리되는 버퍼로의 액세스 만큼이나 제한적이어야 한다.
본 발명에 따른 방법은 도 6를 참조하여 또한 설명된다. 인스트럭션 캐시로부터의 인스트럭션은 CPU 내부로 로딩되고 프로그램 ID(PIDpc)는 내부 CPU 레지스터 내에서 유지된다. 다음 단계에서, 코드 인스트럭션이 점프 인스트럭션인지의 여부가 체크된다. 만약 그러하다면, 호출된 어드레스의 프로그램 ID(PIDJ)가 결정된다. 두 프로그램 ID가 동일하면, 호출된 어드레스로의 점프가 발생하며 상기 프로그램은 계속 진행된다. 동일한 프로그램 ID는 상기 점프가 현재 활동중인 프로그램 내부에서 실행되고 있음을 의미한다. 상이한 프로그램 ID인 경우에, 호출된 어드레스는 점프되고 그 내부에 존재하는 어드레스 컨텐츠가 판독된다. 만일 이 어드레스 컨텐츠가 예상된 엔트리 인스트럭션이면, 즉 말하자면 고정적으로 사전 규정된 비트 시퀀스이면, 프로그램 코드는 계속 진행된다. 만일 그렇지 않다면 에러 처리 루틴이 호출된다.
코드 인스트럭션이 점프 인스트럭션이 아니고 데이터 액세스를 갖는 인스트럭션이면, 상기 데이터 캐시로부터 호출된 어드레스의 프로그램 ID는 CPU 내부로 로딩되고 결정된다. 만일 프로그램 ID인 PIDPC와 PIDADDR이 대응하지 않는다면, 외부 프로그램의 데이터 액세스의 시도가 포함된다. 결과적으로, 제 1 액세스 비트는 상기 데이터 캐시의 어드레스 또는 할당된 테이블로부터 결정되고 평가된다. 만일 가령 R 또는 W를 구성하는 제 1 액세스 권리인, 데이터를 판독하는 시도가 실행되도록 액세스가 허용된다면, 프로그램 코드는 계속 실행된다. 상기 제 1 액세스 비트가 상술된 실례에서의 판독 승인 또는 기록 승인 중 어느 것도 부여하지 않는다면, 에러 처리 루틴이 호출된다.
에러 처리 루틴이 호출되는 대신에, 이 시점에서 액세스 권리에 대한 다른 체크가 수행될 수 있다. 권리 버퍼 내에 저장된 테이블에서, 호출 프로그램부와 피호출 프로그램부를 포함하는 한 쌍의 권리가 존재하는지의 여부에 대해서 엔트리들이 체크된다. 만일 존재한다면, 예로서, 프로그램 ID(PIDADDR)를 갖는 프로그램부로의 연장된 액세스가 프로그램 ID(PIDPC)를 갖는 프로그램부에 부여된다. 이로써, 동일한 승인을 고유하게 갖는 다른 프로그램부보다는 소정의 프로그램부로의 액세스 권리를 더 많이 부여할 수 있다. 그러나, 민감성 액세스 권리(제 3 액세스 비트)의 경우에, 상기 권리에 대해서 상술된 구별 사항이 유지된다. 그러나, 권리 버퍼 내에 프로그램 ID(PIDADDR)와 프로그램 ID(PIDPC)를 갖는 어떤 엔트리도 존재하지 않는다면, 에러 처리 루틴이 개시된다.
서두에서 언급된 액세스 권리의 체크는 상기에서 언급된 액세스 권리의 연장된 체크와 병행하여 발생할 수 있다. 호출된 프로그램부로의 액세스는 상기 액세스 권리의 통상적인 체크 또는 연장된 체크가 긍정적으로 나타나는 경우에 허용된다. 만일 두 개의 권리 체크 모두가 부정적으로 나타나면, 에러 처리 루틴이 개시된다.
프로그램 ID(PIDPC)와 프로그램 ID(PIDADDR)가 대응하는 경우에, 현재 활성중인 프로그램 내부에서의 액세스가 포함된다. 만일 코드 인스트럭션에 통상적인 데이터로의 액세스만을 허용하는 실행 권리가 제공되면, 상기 어드레스에서는 제 2 액세스 비트가 상기 데이터 캐시로부터 판독되고 평가된다. 만일 코드 인스트럭션이 제 2 실행 권리(Xs)에 의해서 식별되는 민감성 데이터를 프로세싱할 수 있는 권리를 갖는다면, 액세스 권리를 포함하는 비트 시퀀스로부터 제 3 액세스 권리가 판독되어 평가된다. 만일 허용된 액세스의 경우에는, 프로그램 코드는 상술된 두 경우 모두에서 계속 진행된다. 그러나 만일 그러하지 않다면, 에러 처리 루틴이 호출된다.
도 7은 본 발명에 따른 마이크로프로세서 회로의 개략적인 구성을 예시적으로 도시한 도면이다. 마이크로프로세서(1)는 제어 라인(10)을 통해서 메모리 장치(2)에 접속된 제어 유닛(3)을 포함한다. 상기 메모리는 운영 체제를 위해서 제공되는 메모리 구역(21), 예로서 각각의 외부 프로그램을 위한 3개의 메모리 구역(22,23,24)과, 오로지 운영 체제에 의해서만 관리될 수 있는 버퍼(25), 모든 프로그램에 대해서 사용 가능한 버퍼(26), 메모리 구역(22,23,24) 중 하나의 구역에 각각 할당되며 오직 상기 메모리 구역에 의해서만 관리될 수 있는 버퍼(27,28,29)(이른바 "민감성 스택")를 포함한다. 또한, 상기 마이크로프로세서는 중앙 처리 장치(CPU)(6)와, 인스트럭션 캐시(4)와, 데이터 캐시(5)와, 각각 보조 레지스터(72,82)를 갖는 산술 유닛(7,8)을 포함한다. 또한, 평가 유닛(9)이 존재하며, 상기 평가 유닛은 산술 유닛(7,8) 및 산술/논리 처리 유닛(6)에 접속된다.
산술 유닛(7)에 의해서, 현재 실행중인 코드 인스트럭션의 어드레스의 프로그램 ID가 결정되어 상기 보조 레지스터(72)에 저장된다. 이를 위해서, 인스트럭션 캐시(4)로부터의 어드레스가 상기 산술/논리 처리 유닛(6)을 통해서 상기 산술 유닛(7)에 공급된다. 이와 대응하는 방식으로, 호출될 어드레스의 프로그램 ID는 산술 유닛(8)에 의해서 결정되어 보조 레지스터(82)에 저장된다. 호출될 어드레스는 상기 산술/논리 유닛(6)에 의해서 데이터 캐시로부터 산술 유닛(8)으로 공급된다. 보조 레지스터(72,82)의 컨텐츠는 평가 유닛(9)에 공급되고 여기서 서로 비교된다. 이로써, 액세스가 두 개의 프로그램 간에서 수행될 것인지 아니면 하나의 프로그램 내부에서 수행될 것인지가 결정된다. 마지막으로, 코드 인스트럭션의 액세스 권리 및 호출될 어드레스의 액세스 권리가 평가 유닛(9)에 제공된다. 이러한 정보를 사용하여, 상기 평가 유닛(9)은 도 6에서 기술된 프로그램 시퀀스를 수행하며 액세스의 허용 또는 거절 여부를 결정할 수 있다. 이러한 결과는 CPU로 제공된다.

Claims (22)

  1. 메모리(2) 내에 저장된 데이터 또는 프로그램에 대한 액세스를 구성하는 마이크로프로세서 회로에 있어서,
    적어도 하나의 마이크로프로세서(1)와,
    운영 체제를 위한 메모리 구역(21)과,
    개별 외부 프로그램으로 자유 프로그래밍(free programming)하기 위한 적어도 하나의 메모리 구역(22,23,24)과,
    자유 프로그래밍을 위해 상기 메모리 구역(22,23,24) 내에 제공되고, 식별자(프로그램 ID)를 할당받은 각각의 어드레스 공간을 구비하는 다수의 메모리 구역과,
    상기 메모리 구역을 주소 지정(addressing)하기 이전에 메모리 액세스가 발생하는 각각의 경우에, 상기 메모리 구역에 각각 할당된 상기 식별자(프로그램 ID)를 제 1 보조 레지스터(first auxiliary register)(72) 내부로 로딩하고, 상기 주소 지정된 메모리 구역의 상기 식별자(프로그램 ID)를 제 2 보조 레지스터(82) 내부로 로딩하며, 상기 제 1 보조 레지스터(72)와 상기 제 2 보조 레지스터(82)를 비교하는 수단(7,8)을 포함하며,
    상기 메모리 구역의 각 어드레스 공간은 액세스 권리(access rights)를 포함하는 적어도 하나의 비트 시퀀스(ACR)를 할당받는
    마이크로프로세서 회로.
  2. 제 1 항에 있어서,
    상기 어드레스 공간의 각 어드레스는 액세스 권리를 포함하는 비트 시퀀스(ACR)를 할당받는
    마이크로프로세서 회로.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 액세스 권리를 포함하는 상기 비트 시퀀스(ACR)는 상기 어드레스 또는 어드레스 블록과 함께 저장되며, 테이블 내의 상기 식별자(프로그램 ID)는 상기 메모리 내에 저장되는
    마이크로프로세서 회로.
  4. 제 3 항에 있어서,
    상기 어드레스 블록은 그의 어드레스 시작부(address beginning) 또는 어드레스 종료부(address end) 및 어드레스 블록 길이에 의해 식별되는
    마이크로프로세서 회로.
  5. 제 3 항에 있어서,
    상기 어드레스 블록은 하부 어드레스 및 상부 어드레스에 의해서 식별되는
    마이크로프로세서 회로.
  6. 제 1 항 또는 제 2 항에 있어서,
    상기 각각의 어드레스 공간 또는 상기 각각의 어드레스에는 상기 액세스 권리를 포함하는 비트 시퀀스(ACR)가 제공되는
    마이크로프로세서 회로.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 액세스 권리를 포함하는 상기 비트 시퀀스는 제 1 액세스 권리 및 제 2 액세스 권리를 포함하며,
    상기 제 1 액세스 권리는 메모리 구역(22,23,24) 중 2개의 메모리 구역 사이의 액세스를 조정하며,
    상기 제 2 액세스 권리는 메모리 구역(22,23,24) 중 하나의 메모리 구역 내의 액세스를 조정하는
    마이크로프로세서 회로.
  8. 제 7 항에 있어서,
    상기 비트 시퀀스 내에 제 3 액세스 권리가 제공되며,
    상기 제 3 액세스 권리는 메모리 구역(22, 23, 24) 중 하나의 메모리 구역 내의 액세스를 조정하는
    마이크로프로세서 회로.
  9. 제 1 항 또는 제 2 항에 있어서,
    상기 2개의 메모리 구역 사이의 다른 액세스 권리를 포함하는 권리 버퍼(rights buffer)가 제공되고, 이 경우에 상기 액세스 권리는 상기 운영 체제에 의해서 판독 또는 기록될 수 있는
    마이크로프로세서 회로.
  10. 제 9 항에 있어서,
    상기 권리 버퍼는 각각의 경우에 상기 2개의 메모리 구역 간의 허용된 할당 영역(허용된 액세스)을 포함하는
    마이크로프로세서 회로.
  11. 제 10 항에 있어서,
    상기 할당 영역은 상기 식별자(프로그램 ID)를 이용하거나, 상기 각각의 식별자를 결정하는데 사용될 수 있는 번역 테이블(a translation table)을 이용하여 소정의 테이블로서 실현되는
    마이크로프로세서 회로.
  12. 제 1 항 또는 제 2 항에 있어서,
    운영 체제에 의해서만 관리될 수 있는 버퍼(25)를 구비하는
    마이크로프로세서 회로.
  13. 제 1 항 또는 제 2 항에 있어서,
    상기 각각의 메모리 구역(22,23,24)은 상기 각각의 메모리 구역(22,23,24) 내에 저장된 프로그램에 의해서만 관리될 수 있는 데이터의 버퍼 저장(buffer-storing)을 위한 어드레스 구역(27,28,29)을 할당받는
    마이크로프로세서 회로.
  14. 적어도 하나의 마이크로프로세서(1)와, 운영 체제를 위한 메모리 구역(21)과, 개별 외부 프로그램으로 자유 프로그래밍하기 위한 적어도 하나의 메모리 구역(22,23,24)과, 자유 프로그래밍을 위해 상기 메모리 구역(22,23,24) 내에 제공되고, 식별자(프로그램 ID)를 할당받은 각각의 어드레스 공간을 갖는 다수의 메모리 구역을 구비하고, 오로지 하나의 외부 프로그램이 각각의 상기 메모리 구역(22, 23, 24) 내에 제공되게 함으로써, 메모리(2) 내에 저장된 데이터 또는 프로그램에 대한 액세스를 구성하는 방법으로서,
    (a) 외부 프로그램의 현재 실행되고 있는 코드 인스트럭션의 제 1 프로그램 ID(PIDPC)를, 그 시점의 현재 어드레스(PC)의 식별자를 사용하여 결정하는 단계와,
    (b) 주소 지정된 메모리 구역의 제 2 프로그램 ID(PIDADDR)를 결정하는 단계와,
    (c) 상기 제 1 프로그램 ID와 상기 제 2 프로그램 ID를 비교하는 단계와,
    (d) 단계 (c)에서의 비교 결과에 따라서 제 1 또는 제 2 액세스 권리(ACR)를 선택하는 단계와,
    (e) 선택된 액세스 권리를 평가하는 단계와,
    (f1) 상기 주소 지정된 메모리 구역에 대한 상기 액세스 또는 상기 코드 인스트럭션이 허용된다면 프로그램 코드를 계속 진행시키는 단계와,
    (f2) 상기 주소 지정된 메모리 구역에 대한 상기 액세스 또는 상기 코드 인스트럭션이 허용되지 않는다면, 에러 처리 루틴(an error handling routine)을 호출하는 단계를 포함하는
    액세스 구성 방법.
  15. 제 14 항에 있어서,
    상기 제 1 프로그램 ID와 상기 제 2 프로그램 ID가 동일하다면, 상기 현재 실행되고 있는 코드 인스트럭션의 액세스 권리에 따라서 상기 제 2 액세스 권리 또는 제 3 액세스 권리가 선택되는
    액세스 구성 방법.
  16. 제 14 항 또는 제 15 항에 있어서,
    단계 (f2) 이후에,
    (g) 상기 제 1 프로그램 ID(PIDPC)를 갖는 메모리 구역으로부터 상기 제 2 프로그램 ID(PIDADDR)에 의해 식별된 메모리 구역에 대해 허용된 액세스를 나타내는 엔트리에 대해 권리 버퍼를 체크하는 단계와,
    (h1) 상기 엔트리가 상기 권리 버퍼 내에 존재한다면 상기 프로그램 코드를 계속 진행시키는 단계와,
    (h2) 상기 엔트리가 존재하지 않는다면 에러 처리 루틴을 호출하는 단계를 포함하는
    액세스 구성 방법.
  17. 제 14 항 또는 제 15 항에 있어서,
    상기 단계 (a)의 상기 코드 인스트럭션이 점프 인스트럭션(jump instruction)이면, 상기 단계 (a) 이후에는,
    (b) 상기 주소 지정된 메모리 구역의 상기 제 2 프로그램 ID(PIDADDR)를 결정하는 단계와,
    (c) 상기 제 1 프로그램 ID와 제 2 프로그램 ID를 비교하는 단계와,
    (d) 호출된 어드레스로 점프하는 단계와,
    (e1) 상기 제 1 프로그램 ID와 상기 제 2 프로그램 ID가 동일하면 상기 주소 지정된 메모리 구역에서 상기 프로그램 코드를 계속 진행시키는 단계와,
    (e2) 상기 제 1 프로그램 ID와 제 2 프로그램 ID가 동일하지 않다면 주소 지정된 컨텐츠의 어드레스 컨텐츠를 판독하는 단계와,
    (aa) 상기 어드레스 컨텐츠 판독 정보가 엔트리 인스트럭션이 아니면 에러 처리 루틴을 호출하는 단계와,
    (bb) 상기 어드레스 컨텐츠 판독 정보가 엔트리 인스트럭션이면 상기 프로그램 코드를 계속 진행시키는 단계가 실행되는
    액세스 구성 방법.
  18. 제 17 항에 있어서,
    단계 d) 이전에, 버퍼(25...29) 상에 상기 현재 실행되고 있는 점프 인스트럭션의 어드레스를 저장하는 단계가 실행되는
    액세스 구성 방법.
  19. 제 17 항에 있어서,
    상기 엔트리 인스트럭션은 고정적으로 사전 규정된 비트 시퀀스(a fixedly prescribed bit sequence)인
    액세스 구성 방법.
  20. 제 18 항에 있어서,
    상기 버퍼(25)는 오직 운영 체제에 의해서만 관리되는
    액세스 구성 방법.
  21. 제 14 항 또는 제 15 항에 있어서,
    제 1 실행 권리를 할당받은 코드 인스트럭션은 버퍼로서 공통 액세스 가능 버퍼(a publicly accessible buffer)(26)를 이용하는
    액세스 구성 방법.
  22. 제 14 항 또는 제 15 항에 있어서,
    제 2 실행 권리를 할당받은 코드 인스트럭션은, 상기 메모리 구역에 할당되며 오로지 상기 각각의 메모리 구역에 저장된 프로그램 및 상기 운영 체제에 의해서만 관리될 수 있는 버퍼(27,28,29)를 사용하는
    액세스 구성 방법.
KR1020037010303A 2001-02-06 2002-01-25 마이크로프로세서 회로 및 액세스 구성 방법 KR100574747B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE10105284.7 2001-02-06
DE10105284A DE10105284A1 (de) 2001-02-06 2001-02-06 Mikroprozessorschaltung für Datenträger und Verfahren zum Organisieren des Zugriffs auf in einem Speicher abgelegten Daten
PCT/DE2002/000256 WO2002063463A2 (de) 2001-02-06 2002-01-25 Mikroprozessorschaltung für datenträger und verfahren zum organisieren des zugriffs auf in einem speicher abgelegten daten

Publications (2)

Publication Number Publication Date
KR20030084921A KR20030084921A (ko) 2003-11-01
KR100574747B1 true KR100574747B1 (ko) 2006-04-28

Family

ID=7672999

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037010303A KR100574747B1 (ko) 2001-02-06 2002-01-25 마이크로프로세서 회로 및 액세스 구성 방법

Country Status (13)

Country Link
US (1) US7260690B2 (ko)
EP (1) EP1358558B1 (ko)
JP (1) JP3878134B2 (ko)
KR (1) KR100574747B1 (ko)
CN (1) CN1320465C (ko)
AT (1) ATE505763T1 (ko)
BR (1) BR0206992A (ko)
DE (2) DE10105284A1 (ko)
MX (1) MXPA03007023A (ko)
RU (1) RU2266559C2 (ko)
TW (1) TWI259365B (ko)
UA (1) UA74238C2 (ko)
WO (1) WO2002063463A2 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2843465B1 (fr) * 2002-08-06 2005-07-01 Checkflow Procede de communication entre applications destine a securiser l'acces aux donnees d'une application
JP2005275629A (ja) * 2004-03-23 2005-10-06 Nec Corp マルチプロセッサシステム、及び、メモリアクセス方法
WO2006052703A2 (en) * 2004-11-04 2006-05-18 Board Of Trustees Of Michigan State University Secure bit
US20060136679A1 (en) * 2004-12-21 2006-06-22 O'connor Dennis M Protected processing apparatus, systems, and methods
JP2007052481A (ja) * 2005-08-15 2007-03-01 Matsushita Electric Ind Co Ltd Icカード用lsi
JP4519738B2 (ja) * 2005-08-26 2010-08-04 株式会社東芝 メモリアクセス制御装置
US7882318B2 (en) * 2006-09-29 2011-02-01 Intel Corporation Tamper protection of software agents operating in a vitual technology environment methods and apparatuses
US7802050B2 (en) * 2006-09-29 2010-09-21 Intel Corporation Monitoring a target agent execution pattern on a VT-enabled system
US8739304B2 (en) * 2006-11-10 2014-05-27 Sony Computer Entertainment Inc. Providing content using hybrid media distribution scheme with enhanced security
US8752199B2 (en) * 2006-11-10 2014-06-10 Sony Computer Entertainment Inc. Hybrid media distribution with enhanced security
US20100325077A1 (en) * 2007-02-21 2010-12-23 Naoshi Higuchi Computer, operation rule application method and operating system
JP4939387B2 (ja) 2007-12-06 2012-05-23 ルネサスエレクトロニクス株式会社 データ処理装置及びアドレス空間保護方法
DE102008029231B4 (de) * 2008-06-19 2010-12-02 Lars Gollub Prozessor mit Ansprungbefehlen zur Überwachung des Kontrollflusses
US20110225654A1 (en) * 2008-08-25 2011-09-15 Mao-Huai Weng Write-Proof Protection Method of a Storage Device
US8682639B2 (en) * 2010-09-21 2014-03-25 Texas Instruments Incorporated Dedicated memory window for emulation address
DE102013218646B4 (de) 2012-09-18 2023-01-19 Denso Corporation Verarbeitungsvorrichtung
JP2014174758A (ja) * 2013-03-08 2014-09-22 Denso Corp 処理装置
JP6323235B2 (ja) * 2014-07-29 2018-05-16 株式会社デンソー 電子制御装置
US10129035B2 (en) * 2015-08-10 2018-11-13 Data I/O Corporation Device birth certificate

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3072127D1 (en) 1980-02-28 1988-12-08 Intel Corp Data processing system
JPS5963097A (ja) 1982-09-30 1984-04-10 Panafacom Ltd アドレス比較によるメモリ・プロテクシヨン方式
SU1156078A1 (ru) 1983-01-03 1985-05-15 Московский Ордена Ленина И Ордена Октябрьской Революции Энергетический Институт Устройство дл обмена информацией между объектом контрол и электронной вычислительной машиной
JPS6137540A (ja) 1984-07-30 1986-02-22 Kubota Ltd 走行用伝動装置
DE4115152C2 (de) * 1991-05-08 2003-04-24 Gao Ges Automation Org Kartenförmiger Datenträger mit einer datenschützenden Mikroprozessorschaltung
US5627987A (en) * 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
JPH07302226A (ja) 1994-05-02 1995-11-14 Nec Corp メモリ不正アクセス検出回路
US5513337A (en) * 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
JP3740195B2 (ja) * 1994-09-09 2006-02-01 株式会社ルネサステクノロジ データ処理装置
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
JPH08272625A (ja) 1995-03-29 1996-10-18 Toshiba Corp マルチプログラム実行制御装置及び方法
JPH09160831A (ja) 1995-12-08 1997-06-20 Hitachi Ltd 情報処理装置
JP3638714B2 (ja) 1996-05-23 2005-04-13 三菱電機株式会社 記憶データ保護装置
RU2126168C1 (ru) 1997-04-02 1999-02-10 Товарищество с ограниченной ответственностью "Коминфор" ("COMINFOR") Способ защиты персонального компьютера от несанкционированного доступа и устройство для его реализации
JP2001005726A (ja) * 1999-04-20 2001-01-12 Nec Corp メモリアドレス空間拡張装置及びプログラムを記憶した記憶媒体
DE19925195A1 (de) * 1999-06-01 2000-12-07 Giesecke & Devrient Gmbh Verfahren für die sichere Verwaltung eines Speichers
DE19937529A1 (de) * 1999-08-09 2001-03-01 Giesecke & Devrient Gmbh Tragbarer Datenträger und Verfahren zur Nutzung in einer Mehrzahl von Anwendungen
US6795905B1 (en) * 2000-03-31 2004-09-21 Intel Corporation Controlling accesses to isolated memory using a memory controller for isolated execution
US6745307B2 (en) * 2001-10-31 2004-06-01 Hewlett-Packard Development Company, L.P. Method and system for privilege-level-access to memory within a computer
US6823433B1 (en) * 2001-11-13 2004-11-23 Advanced Micro Devices, Inc. Memory management system and method for providing physical address based memory access security
US6854039B1 (en) * 2001-12-05 2005-02-08 Advanced Micro Devices, Inc. Memory management system and method providing increased memory access security

Also Published As

Publication number Publication date
DE10105284A1 (de) 2002-08-29
WO2002063463A2 (de) 2002-08-15
US20040088509A1 (en) 2004-05-06
MXPA03007023A (es) 2004-12-06
RU2266559C2 (ru) 2005-12-20
JP3878134B2 (ja) 2007-02-07
US7260690B2 (en) 2007-08-21
EP1358558A2 (de) 2003-11-05
CN1320465C (zh) 2007-06-06
WO2002063463A3 (de) 2003-02-06
DE50215002D1 (de) 2011-05-26
ATE505763T1 (de) 2011-04-15
TWI259365B (en) 2006-08-01
BR0206992A (pt) 2004-02-10
EP1358558B1 (de) 2011-04-13
CN1491388A (zh) 2004-04-21
KR20030084921A (ko) 2003-11-01
RU2003127063A (ru) 2005-01-10
JP2004526237A (ja) 2004-08-26
UA74238C2 (uk) 2005-11-15

Similar Documents

Publication Publication Date Title
KR100574747B1 (ko) 마이크로프로세서 회로 및 액세스 구성 방법
JP2727520B2 (ja) メモリカード及びその作動方法
JP3529800B2 (ja) 携帯データキャリヤー用データ保護マイクロプロセッサー回路
KR100734340B1 (ko) 상이한 메모리 기술 특성을 갖는 분할 메모리 장치
UA44303C2 (uk) Портативна чіп-картка
US20020089890A1 (en) Memory device and method for accessing a memory
US6453397B1 (en) Single chip microcomputer internally including a flash memory
GB2503470A (en) Memory protection using read protection flags and access conditions
US20020040438A1 (en) Method to securely load and manage multiple applications on a conventional file system smart card
CN1243580A (zh) 监控软件程序按规定执行的方法
US20060206704A1 (en) Data transmission system and method for operating a data transmission system
JP4559552B2 (ja) 集積回路を有するチップカード
US7363293B2 (en) Access control method and device in an embedded system
JPH01219982A (ja) Icカード
US7237092B2 (en) Microprocessor circuit for portable data carriers and method for operating the circuit
GB2356469A (en) Portable data carrier memory management system and method
US6487649B1 (en) Microcomputer
KR20020078998A (ko) 다중 응용 프로그램들 간의 보안을 유지할 수 있는 스마트카드
KR20020082281A (ko) 다중 응용 프로그램들 간의 보안을 유지할 수 있는 스마트카드

Legal Events

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

Payment date: 20130412

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140411

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150416

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160408

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee