KR100503906B1 - 마이크로프로세서 - Google Patents

마이크로프로세서 Download PDF

Info

Publication number
KR100503906B1
KR100503906B1 KR10-2002-0058773A KR20020058773A KR100503906B1 KR 100503906 B1 KR100503906 B1 KR 100503906B1 KR 20020058773 A KR20020058773 A KR 20020058773A KR 100503906 B1 KR100503906 B1 KR 100503906B1
Authority
KR
South Korea
Prior art keywords
task
key
program
cache
state
Prior art date
Application number
KR10-2002-0058773A
Other languages
English (en)
Other versions
KR20030027803A (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 KR20030027803A publication Critical patent/KR20030027803A/ko
Application granted granted Critical
Publication of KR100503906B1 publication Critical patent/KR100503906B1/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/22Microcontrol or microprogram arrangements
    • 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/72Protecting 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 cryptographic circuits
    • 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/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Mathematical Physics (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은, 적은 비밀에 기초하여 암호화 프로그램의 내용을 OS로부터도 효율적으로 보호하는 것이 가능한 내탬퍼 프로세서를 제공한다.
본 발명의 마이크로프로세서는, 암호화된 프로그램의 복호키를 저장하되, 각각의 엔트리가 당해 프로세서 내에 있어서 일의(一意)의 태스크 ID로 식별되는 키값 테이블과,
상기 태스크 ID 대응으로 태스크의 실행상태를 저장하는 태스크상태 테이블,
어떤 태스크 ID에 대한 삭제명령이 발행된 때에, 태스크상태 테이블에 있어서 당해 태스크의 상태가 실행중 이외의 경우에만 태스크 삭제의 실행을 허가하는 판정기능부 및,
상기 삭제명령의 실행에 있어서, 상기 태스크 ID에 대응하는 키값 테이블의 내용 및 프로세서내 정보를 각각 소거하고서 태스크 실행상태를 초기상태로 하는 태스크 초기화 기능부를 갖추어 이루어진다.

Description

마이크로프로세서 {MICROPROCESSOR}
본 발명은, 멀티태스크(multi-task: 다중 작업)의 프로그램 실행환경 하에서 실행코드나 처리대상인 데이터의 부정한 변경(alteration)을 방지하는 것이 가능한 내탬퍼 마이크로프로세서(tamper resistant processor)에 관한 것이다.
PC 등의 일반 이용자 쪽으로의 컴퓨터의 하드웨어정보나 운영체제(operation system; 이하, 「OS」라 한다)의 시스템 프로그램정보가 특별히 비밀로 되는 일없이 개시되어 있는 오픈 시스템(open system: 개방 시스템)이 널리 보급되고 있다. 오픈 시스템에서는, 최종 이용자(end user)가 시스템 프로그램을 변경하여 소망하는 개량을 가할 수 있다. 이러한 환경 하에서, 어플리케이션 프로그램(응용 프로그램)이 취급하는 정보의 저작권이나, 프로그램 자체의 저작권을 보호하기 위해서는, 미리 시스템의 OS가 어플리케이션에 대해 적대적 동작을 취할 수 있다는 것을 상정한 비밀보호능력이 있는 하드웨어가 필요하다. 실제, 이러한 비밀보호기능을 갖춘 하드웨어, 특히 마이크로프로세서가 제안되어 있다(일본 특허출원 제2000-35398호, Lie et al., "Architectural Support for Copy and Tamper Resistant Software"; Computer Architecture News 28(5): p168- 등).
비밀보호능력을 갖춘 마이크로프로세서는, 멀티태스크(다중 작업)환경 하에서 프로그램 자체나 프로그램이 취급하는 정보가 부정하게 들여다 보여지게 되어, 변경되지 않도록 이들 정보를 암호화하는 기능을 갖추고 있다. 이러한 마이크로프로세서를 내탬퍼 프로세서라 한다.
내탬퍼 프로세서의 주목적은, 최종 이용자의 시스템에서 동작하는 어플리케이션을 보호함으로써, 프로그램이나 콘텐츠, 네트워크 서비스의 권리자의 권리를 보호하는 것이다. 구체적으로는, (1) 프로그램에 실장(實裝)된 알고리즘의 보호, (2) 프로그램에 매립된 영업비밀(trade secret)이나 콘텐츠의 보호, (3) 프로그램동작의 변경으로부터의 보호의 3가지를 들 수 있다.
프로그램에 실장된 알고리즘의 보호는 프로그램의 권리자를 보호하기 위해 필요하다. 프로그램에 매립된 영업비밀의 보호는 프로그램이 취급하는 콘텐츠의 부정복사를 방지하기 위해 필요하다. 부정한 변경으로부터의 보호는, 예컨대 서비스 공급자의 권리를 보호하기 위해 필요하다.
네트워크 서비스를 이용하는 프로그램이 과금(課金: 요금부과)정보를 서버와 주고받는 것과 같은 어플리케이션에서는, 특히 과금정보의 송신동작을 올바르게 실행하여 부정한 변경을 방지하는 것이 중요하다. 실제의 예로서, PC에서 DVD를 재생하는 프로그램이 해석되고, 거기로부터 DVD의 암호를 해독하기 위한 영업비밀이 판독되어 부정하게 DVD를 복사하는 프로그램(DeCSS)이 말들어진 것은 잘 알려져 있다.
오픈 시스템에 있어서, 단순히 어플리케이션 프로그램의 비밀을 보호하는 기구는 종래부터 제안되어 있지만, 본 건의 출원인은 하나의 시스템상에서 복수의 프로그램(복수의 다른 프로그램 공급자로부터의 프로그램 또는 단일의 공급자로부터의 복수의 다른 프로그램)이 의사병렬적으로 기동되는 경우에, 그 각각에 대해 시스템의 자원을 관리하는 OS로부터도 독립적으로 비밀을 보호하는 보호환경을 제안해 왔다(일본 특허출원 제2000-35398호, 제2000-135010호, 제2000-333635호, 제2001-024480호 등). 이러한 보호환경을 「멀티파티 어플리케이션(multi-party application) 보호환경」이라 한다.
도 18은 일반적인 멀티파티의 어플리케이션 보호환경을 나타낸다. 도 18에 있어서, 이용자(12)가 복수의 소프트웨어 공급자(software vendor; 21-1∼21-n)중 공급자1(21-2)로부터 프로그램을 구입하는 경우를 예로 든다. 이용자(12)가 사용하는 시스템(2)은 마이크로프로세서A를 내장하고, 마이크로프로세서A는 이 프로세서에 고유의 비밀키A를 갖는다. 비밀키A에 대응하는 공개키A는 공개되어 있다.
소프트웨어 공급자1은 프로그램(22-1)을 개발하고, 암호키로서 프로그램키1을 선택하며, 평문 프로그램(22-1)을 암호화하여 암호화 프로그램(23-1)을 작성한다. 다음에, 프로그램키1을 배포처 시스템(2)의 프로세서A에 고유의 공개키A로 암호화하여 배포키(25-1)를 작성한다.
도시는 하지 않았지만, 소프트웨어 공급자1은 프로그램(22-1) 외에도 복수의 다른 프로그램을 개발하고 있고, 각각 프로그램에 따른 프로그램키를 선택하여 암호화 프로그램과 배포키를 작성한다. 여기서는, 설명의 편의상, 하나의 프로그램에 대해 설명한다.
소프트웨어 공급자1은 암호화한 프로그램(23-1)과 암호화한 배포키(25-1)를 네트워크를 매개해서 목표 시스템(target system; 2)으로 인도(배달)한다. 인도된 프로그램(23-1)과 배포키(25-1)는 시스템의 2차 기억(예컨대, 하드디스크)(7)에 격납된다. 프로그램(23-1)은 실행코드와 데이터(초기화 데이터 등)를 포함하고, 실행시에 마이크로프로세서(3)의 밖에 있는 외부메모리(8)로 암호화된 그대로의 상태에서 독출된다. 외부메모리(8)상의 암호화된 프로그램을 보호프로그램이라 칭한다.
마이크로프로세서A는 배포키(25-1)를 읽어들이고, 공개키A에 대응하는 비밀키A에 의해 이것을 복호하여 프로그램키1을 얻는다. 키의 복호처리는 마이크로프로세서내의 보호로직(코어; 6)에서 행해진다.
다음에 마이크로프로세서A는, 프로그램키1에 의해 프로그램1을 복호하여 캐시메모리(4)로 읽어들인다. 복호와 캐시메모리(4)로의 읽어들임(reading)은 소정의 캐시 알고리즘에 의해, 프로그램의 실행에 따라 부분마다 행해지고, 프로그램 전체가 한번에 캐시메모리(4)로 읽어들여지는 것은 아니다. 캐시메모리(4)로 읽어들인 프로그램은 평문상태이므로, 암호화되어 있지 않은 통상의 프로그램과 마찬가지로 코어(6)에서 실행된다. 프로그램키1이나 평문 프로그램을 취급하는 부분은 프로세서A의 코어(6)에 의해 행해지고, OS가 개재(介在)할 여지는 없다. 마이크로프로세서내에 있는 캐시메모리(4), 비밀키(5)의 내용은 프로세서의 사양에 정해진 조작을 제외하고는 외부로부터 직접 독출할 수는 없다.
도시는 하지 않았지만, 캐시메모리(4)에 격납된 평문의 정보에 대해 이용자가 복수의 프로그램 공급자(21-1∼21-n)로부터 복수의 다른 프로그램을 구입해도, 그들 프로그램간에서 독립적으로 비밀이 지켜지는 것을 보증하기 위해 캐시메모리(4)의 라인마다 그 평문정보가 어느 암호키에 의해 복호화된 정보인지를 특정하는 식별자가 부여된다. 다른 프로그램 공급자의 다른 프로그램마다 프로그램키는 각각 다르므로, 캐시라인에 있는 태스크와 그것을 복호한 키를 대응시킴으로써, 프로그램의 독립성은 일단 보증된다.
(1) 태스크의 식별기능을 실현하기 위해서는, 각 프로그램의 프로그램키를 태스크ID에 대응하여 저장하는 테이블을 마이크로프로세서 내부에 갖추는 것이 필요하다. 이러한 테이블의 설정을 지시하는 것은 시스템을 관리하는 OS이고, OS 프로그램으로부터 테이블을 조작하는 수단이 필요하게 된다. 이 테이블 조작수단은 당연히 비밀보호의 요구를 만족시키는 것이 아니면 않된다.
또, 태스크대응의 키 테이블은 비밀보호의 가장 중요한 부분으로 되지만, 자원의 유한성이나 비용의 관계상, 테이블의 양을 무한으로 증가시킬 수는 없다. 이 때문에, 어떤 테이블의 엔트리(entry)를 어느 프로그램에 할당하는가, 엔트리를 어떻게 재이용하는가는 시스템 이용자의 의향에 따라 OS가 관리할 필요가 있다.
이러한 OS의 조작은 비밀보호에 결함을 초래할 가능성이 있다. 예컨대, 어떤 프로그램키X에 태스크ID #1을 할당한 상태일 때, OS가 다른 프로그램키(Y)에 동일한 태스크ID #1을 재할당한다고 하자. 이 때, 캐시메모리에 태스크ID #1의 태그(tag)가 부여된 캐시라인이 남아 있으면, 그 데이터는 프로그램키Y에 대응하는 프로그램으로부터 판독할 수 있다. 이것은 비밀보호의 원칙에 위반된다.
그래서, 제1의 과제로서, 이러한 위반을 방지하기 위한 태스크상태 관리와 테이블 관리의 기구를 제공한다.
(2) 프로그램의 암호화에는, 캐시라인 단위로 복호처리가 완결되도록 하는 방법과, 어떤 하나의 캐시라인의 복호에 복수의 캐시라인의 데이터가 필요한 방법의 2종류가 있다. 전자는 메모리용량이나 라인 단위의 교환에 그다지 영향을 미치지 않지만, 후자에는 이하의 문제가 있다.
캐시라인의 복호에 복수의 캐시라인의 데이터를 필요로 하는 방법에서는, 메모리로의 랜덤 억세스(random access)가 발생하는 경우, 필요한 메모리영역의 전후의 메모리영역도 읽어들이지 않으면 안된다. 이 때문에, 커다란 오버헤드(overhead)가 발생한다.
또, 복호결과는 인접하는 라인의 데이터에 의존하기 때문에, 소위 블록교환 공격의 가능성이 있다. 블록교환 공격이라고 하는 것은, 동일한 비밀에 근거하여 암호화된 블록정보를 공격자가 적절히 교환함으로써, 시스템의 상태를 공격자가 의도한 바와 같이 변경하는 공격을 의미한다. 예컨대, 공격자가 어떤 어드레스 X에 배치되어 있던 라인 P가 과금동작에 대응하는 부분인 것을 통신의 타이밍 등으로부터 알았다고 하자. 그리고, 동일한 프로그램키로 암호화된 다른 라인 Q를 실행해도, 프로그램이 제공하는 서비스에 악영향이 없는 것을 알았다고 하자. 이 때, 라인 P를 라인 Q로 치환하면, 공격자의 프로그램의 서비스에 영향을 미치지 않고 과금만을 면하게 할 수 있다. 마찬가지의 공격은, 프로그램이 취급하는 데이터에도 적용가능하다.
모든 블록마다 개별의 키를 제공하면 상기의 문제는 해결할 수 있지만, 배포키에 블록마다의 개별 암호키를 격납하면, 배포키와 공개키로 암호화하는 알고리즘이 팽대(膨大)하게 되어 복호화처리의 오버헤드를 일으킨다. 또, 그러한 키를 관리하는 팽대한 용량의 테이블을 마이크로프로세서 내부에 필요로 하여, 키의 배포, 관리비용의 면에서 현실적이지 못하다.
더욱이, 일반적으로 프로그램은 미리 배치되는 어드레스가 항상 일정한 것은 아니고, 목표 시스템의 구성(다른 프로그램과 공유하는 라이브러리나 공유 메모리의 구성)에 의해, 배치되는 어드레스가 변경되는 일이 있다. 이것을 리로케이션(relocation: 재배치)이라 한다. 블록마다의 암호화를 행하는 경우, 리로케이션의 문제를 고려하지 않으면 안된다.
그래서, 제2의 과제로서 처리오버헤드가 작고, 데이터교환 공격을 곤란하게 하며, 리로케이션도 고려한 비밀정보 관리능력을 갖는 마이크로프로세서를 제공한다.
(3) 프로그램(실행코드), 데이터, 컨텍스트(context)정보는 어플리케이션의 3요소이지만, 이들은 프로세서 내부에서의 취급에 차이가 있다. 실행코드와 데이터로 프로그램 본체를 이루고, 컨텍스트는 태스크의 실행이 중단된 때에 태스크를 재개하기 위해 메모리상에 저장되는 상태정보이다.
일반적으로 마이크로프로세서 내부의 프로그램은 재기록되는 일은 없지만, 캐시상의 데이터에 변경이 있으면 데이터는 외부메모리로 되돌려 기입된다.
또, 프로그램이나 데이터는 캐시라인 단위로 억세스되지만, 컨텍스트정보는 단일의 캐시라인으로는 격납할 수 없을 만큼의 사이즈로 되는 일이 많다. 컨텍스트 절체시는 복수의 캐시라인에 걸치는 정보가 한데 모아져서 독출·기록된다.
성질이 다른 이들 정보를 외부메모리와 주고받을 때에는, 각각 암호처리가 필요하게 되지만, 그 한편으로 하드웨어 비용의 삭감이 요망된다.
그래서, 제3의 과제로서 이들 정보에 대한 암호처리 하드웨어를 공통화할 수 있는 마이크로프로세서를 제공한다.
제1의 과제를 해결하기 위해, 실제로 캐시라인에 있는 태스크의 식별자와, OS에 의해 할당된 태스크의 식별자를 비교하여, 일치할 때에만 그 캐시라인으로의 억세스를 허가하고, 일치하지 않을 때는 캐시라인의 내용을 폐기한다.
이것을 실현하기 위해 마이크로프로세서는, 암호화된 프로그램의 복호키를 저장하되, 각각의 엔트리가 당해 프로세서 내에 있어서 일의(一意)의 태스크 ID로 식별되는 키값 테이블과,상기 태스크 ID 대응으로 태스크의 실행상태를 저장하는 태스크상태 테이블,어떤 태스크 ID에 대한 삭제명령이 발행된 때에, 태스크상태 테이블에 있어서 당해 태스크의 상태가 실행중 이외의 경우에만 태스크 삭제의 실행을 허가하는 판정기능부 및,상기 삭제명령의 실행에 있어서, 상기 태스크 ID에 대응하는 키값 테이블의 내용 및 프로세서내 정보를 각각 소거하고서 태스크 실행상태를 초기상태로 하는 태스크 초기화 기능부를 갖추어 이루어진다.
제2의 과제를 해결하기 위해, 적은 비밀에 기초하여 블록마다 다른 키로 복호하는 것이 가능하게 한다. 이것을 실현하기 위해, 마이크로프로세서는 이하를 구비한다.
(a) 각각 고유의 프로그램키에 기초하여 암호화된 복수의 프로그램이 격납되어 있는 외부메모리의 어드레스를 지정하여 독출요구를 발행하는 프로세서 코어;
(b) 프로세서 코어의 독출요구에 따라 외부메모리의 지정된 어드레스의 데이터 블록을 독출하는 인터페이스;
(c) 프로그램의 실행제어단위인 태스크마다 주어지는 태스크 식별자에 대응하여 프로그램키를 저장하는 태스크키 테이블;
(d) 태스크 식별자마다 프로그램이 배치된 선두어드레스를 오프셋값으로서 저장하는 오프셋 테이블;
(e) 독출요구에 의해 지정된 어드레스와, 오프셋 테이블의 태스크 식별자로 지정되는 오프셋값으로부터 상대어드레스값을 계산하고, 이 상대어드레스값을 프로그램키로 암호화한 블록대응키를 생성하는 키생성부;
(f) 독출된 데이터 블록을 블록대응키에 의해 복호화하는 암호처리부; 및
(g) 복호화된 데이터 블록을 캐시라인 단위로 읽어들이는 캐시 메모리.
또, 태스크의 실행중단시에 프로그램이나 데이터가 배치되는 물리어드레스는, 자주 시스템의 자원관리에 의해 변경(리로케이션)되지만, 블록마다 암호화된 프로그램을 복호하여 정상적으로 실행하기 위해서는, 정보는 일정의 어드레스공간에 배치될 필요가 있다. 그래서, 목표 어드레스(target address)와 프로그램의 개시어드레스(오프셋 어드레스)의 차로 나타나는 상대어드레스를 계산할 때는, 가상어드레스를 사용한다.
이에 따라, 블록교환을 효과적으로 방지함과 더불어 제한 있는 물리 메모리를 효율좋게 이용할 수 있다.
제3의 과제를 해결하기 위해, 마이크로프로세서는
(a) 외부메모리에 암호화된 상태로 격납되어 있는 프로그램의 실행코드 및 데이터를 캐시라인마다 취입하는 인터페이스와,
(b) 프로그램의 개시어드레스인 오프셋값을 저장하는 오프셋 테이블을 갖추고, 실행코드를 평문상태로 캐시라인마다 저장하는 제1캐시,
(c) 데이터의 어드레스 범위를 저장하는 어드레스 범위 레지스터를 갖추고, 데이터를 평문상태로 캐시라인마다 저장하는 제2캐시,
(d) 제1 및 제2캐시에 공통버스를 매개해서 접속되어 프로그램의 암호화에 사용한 암호키를 저장하는 키값 테이블 및,
(e) 제1 및 제2캐시 버스 및 키값 테이블에 공통버스를 매개해서 접속되어 키값 테이블과 제1캐시로부터 암호키와 오프셋값을 각각 수취하여 이 암호키와 오프셋값에 기초해서 실행코드를 복호화하여 제1캐시에 공급하고, 키값 테이블과 제2캐시로부터 암호키와 어드레스 범위를 각각 수취하여 암호키와 어드레스 범위에 기초해서 데이터를 복호화하여 제2캐시에 공급하는 암호처리부를 구비한다.
이 구성에 의해, 캐시간에서 공유되는 효율적인 암호처리구조를 갖는 마이크로프로세서가 실현된다.
(발명의 실시형태)
이하, 도면을 참조하면서 본 발명의 실시형태를 설명한다.
도 1은 본 발명이 적용되는 멀티파티(multi-party: 다수 공동)의 어플리케이션 보호환경을 설명하기 위한 도면이다.
소프트웨어 공급자(121)는 프로그램(122)을 제작하고, 이것을 이용자(112)의 시스템(102)에 내장되는 마이크로프로세서A에 배포한다. 배포하는 프로그램을 보호하기 위해, 평문 프로그램(122)을 암호화한다.
구체적으로는, 실행코드와 초기화가 끝난 데이터 등의 데이터로 구성되는 프로그램을, 소프트웨어 공급자(121)가 선택한 프로그램키로 암호화하고, 암호화에 사용한 프로그램키를 목표 시스템(102)의 프로세서A의 공개키A로 암호화하여 배포키를 생성한다.
이 때, 소프트웨어 공급자(121)는 프로그램이나 초기화 데이터를 복수의 블록으로 분할하고, 블록마다 다른 키로 암호화한다. 다만, 공급자(121)는 블록수에 따른 수의 키를 선택하는 것이 아니라, 복수의 키를 생성하기 위한 기본으로 되는 정수(Cx)와, Cx에 기초하여 생성된 복수의 키를 암호화하는 키(Kx)의 2개만을 선택하면 좋다. 상세한 설명은 후술하지만, 이 2개의 정수를 기초로 해서 블록마다 다른 키로 암호화하여 암호화 프로그램(123)을 생성한다. 그리고, Cx와 Kx를 프로세서A의 공개키A로 암호화하여 배포키 Kx[A], Cx[A]를 제작한다.
한편, 도 1에서는 설명의 편의상 단일의 소프트웨어 공급자밖에 나타내고 있지 않지만, 멀티파티의 환경을 상정하고 있으므로, 이용자(112)는 복수의 공급자로부터 각각 블록 암호화 프로그램을 구입하여 시스템(102)에 격납하는 것으로 한다.
배포된 블록 암호화 프로그램은 배포키와 더불어 일단 하드드라이브 디스크 등의 2차 기억(107)에 격납되고, 실행시에 메모리(108)에 확보된 영역(109-1)으로 읽어들여진다. 이 메모리로의 읽어들임은, 시스템(102)의 자원을 관리하는 OS(110)에 의해 행해진다. 프로그램 본체와 배포키는 동일한 파일에 격납해도 좋고, 각각의 파일에 격납해도 좋다. 메모리(108)는 같은 공급자(121)에 의한 다른 프로그램이나, 그 이외의 공급자로부터의 프로그램을 위한 영역(109-n)도 갖추지만, 설명의 편의상 이들에 대해서는 생략한다.
프로세서A는 배포키(125)를 읽어들이고, 비밀키A를 이용하여 보호로직(106)으로 배포키를 복호한다. 복호한 키로, 메모리(108)에 배치된 암호화 프로그램을 블록 단위로 캐시메모리(104)로 읽어들이고, 블록마다 복호화한다. 이 때, 프로세서A의 특징으로서, 제한된 수의 비밀, 예컨대 2개의 정수 Kx, Cx로부터 복수의 암호블록의 각각에 대응한 블록대응키를 생성하여 블록 단위로 복호하는 능력을 갖는다.
도 2는 도 1에 나타낸 마이크로프로세서A의 하드웨어 구성도이다. 프로세서A는 프로세서 패키지(200) 내에 코어(902), 명령캐시(903), 데이터 캐시(904), 이들 캐시에 의해 공유되는 고속 암호키 처리모듈(FCM: Fast Ciphering Module)(911), 키값 테이블(KVT: key value table)(906)을 갖춘다. 이들은 내부버스(905)로 서로 접속되어 있다.
코어(902), 고속 암호키 처리모듈(911), 키값 테이블(912), 배포키 관리모듈(913)로 도 1의 보호로직을 구성한다.
코어(902)는 레지스터 어레이(915)와 태스크 전환기(task switcher; 914)를 갖는다. 태스크 전환기(914)는 태스크의 절체, 즉 인터럽트 발생시의 컨텍스트의 보존, 복귀를 실행한다. 컨텍스트는 태스크의 실행에 대응하여 생성되고, 태스크와 대응하여 관리된다. 이것을 실현하기 위해, 태스크 전환기(914)는 내부에 태스크상태 테이블(921)과 해시계산부(922)를 갖는다. 태스크상태 테이블(921)은 후술하는 바와 같이 태스크ID와 대응시켜 태스크상태를 저장한다. 또, 도시는 하지 않았지만, 코어(902)는 레지스터 어레이에 있는 컨텍스트의 변경통지나 배포키 설정명령 등을 발한다.
명령캐시(903)는 프로그램의 실행코드를 캐시한다. 통상의 어드레스를 식별하는 캐시 태그에 더하여, 보호태스크를 식별하는 태그도 부여되고, 마이크로프로세서의 내부 데이터로 어플리케이션의 독립성을 보증한다. 한편, 도 2에는 도시하지 않았지만, 후술하는 바와 같이 명령캐시는 프로그램(실행코드)이나 데이터의 개시어드레스(오프셋)를 기술(記述)하는 오프셋 테이블(1207; 도 9 참조)을 내부에 갖는다.
데이터 캐시(904)는 프로그램의 초기화 데이터, 스택 데이터, 동적 데이터 등, 프로그램에 관련한 각종의 정보를 캐시한다.
고속(대칭) 암호키 처리모듈(911)은 키생성모듈(1312)과 암호처리모듈(1313)을 갖는다. 키생성모듈(1312)은 내부버스(905)를 통해 블록의 키와, 처리대상 블록의 상대어드레스값을 취득하고, 후술하는 방법으로 블록마다 대응하는 암호키를 생성한다. 암호처리모듈(1313)은 생성된 블록마다의 암호키에 의해 대응하는 블록의 암호/복호처리를 실행한다. 블록의 암호처리에는 복수의 블록을 필요로 하므로, 복수의 모듈을 병렬처리하기 위한 디스패처(dispatcher)도 포함한다.
키값 테이블(KVT; 912)은 캐시로부터 보내져 오는 테이블 ID정보에 기초하여 테이블을 검색하고, 키의 값을 고속 암호키 처리모듈(911)에 공급한다.
배포키 관리모듈(913)은 배포키의 공개키 복호화 및 복호화 결과의 테이블을 셋업(setup)한다.
마이크로프로세서는 또 점선의 화살표로 나타낸 바와 같이, 태스크 채널(916)을 갖고, 코어(902)로부터 다른 모듈로, 현재 실행중의 태스크 및 컨텍스트 보존되는 태스크의 정보를 전달한다. 마이크로프로세서의 패키지의 밖에 외부메모리로서 RAM(907), 주변회로를 접속하는 소위 사우스 브릿지(south bridge; 908)가 있고, 버스 인터페이스(906)로 내부버스(905)와 외부메모리(907)나 사우스 브릿지(908)간의 데이터 전송, 버퍼링을 행한다.
도 3은 프로그램을 블록마다 암호화하는 수순을 설명하는 도면이다. 이 처리는 도 1의 소프트웨어 공급자(121)의 블록대응 암호처리부(126)에 의해 행해진다.
소프트웨어 공급자가 개발한 평문의 어플리케이션 프로그램의 프로그램영역(1001)은 128비트(16바이트)를 단위로 하는 복수의 블록0∼블럭n으로 구성되어 있다. 이 영역 전체에 대해, 미리 2개의 정수 Kx와 Cx가 선택되어 있다.
먼저, 정수(Cx)와 프로그램의 선두로부터 본 상대적인 각 블록의 선두어드레스의 합을 구한다. 예컨대 최초의 블록0의 선두바이트는 0이기 때문에, Cx+0이 계산된다(S1002-0). Cx+0의 값은 비밀키(Kx)로 암호화되고, 블록대응키(Kv0)가 생성된다(S1003-0). 평문블록(1001-0)은 이 블록대응키(Kv0)로 암호화되고(S1004-0), 이로써 암호블록(1005-0)이 생성된다.
마찬가지로, 2번째의 블록1의 선두바이트는 16바이트이기 때문에, 프로그램의 선두로부터 본 상대어드레스는 16으로 되고, Cx+16을 계산한다(S1002-1). n+1번째의 블록n의 상대어드레스는 16n이고, Cx+16n을 구한다(S1002-n). 이들 값을 Kx로 암호화하여 대응하는 블록의 암호키(Kv1∼Kvn)를 생성한다(S1004-1∼S1004-n). 각 암호키로 평문블록1∼n을 암호화하여 암호블록(1005-1∼1005-n)을 생성한다.
도 3에서는 암호화처리 S1003-0∼S1003-n이나 S1004-0∼S1004-n을 독립적으로 나타내고 있지만, 하나의 암호화처리에 주어지는 파라미터를 바꾸어 반복 사용해도 좋고, 소프트웨어로 실현해도 좋다.
도 3에 나타낸 암호화방법에 의하면, 소프트웨어 공급자(121)는 목표 시스템(102)에서 프로그램이 배치되는 절대어드레스를 의식하지 않고 암호처리할 수 있다. 프로그램 공급자는 절대어드레스값을 예상할 수는 없으므로, 절대어드레스값에 기초하여 블록대응키를 생성하고자 하면, 목표 시스템(102)으로부터 미리 프로그램이 배치되는 절대어드레스의 통지를 받고 나서, 배치어드레스 대응의 암호화 프로그램 본체를 작성하거나, 배치어드레스 대응의 암호화 프로그램 본체를 무수히 배치하지 않으면 안된다. 어느 경우도, 프로그램 본체의 배포비용이 현저히 커진다.
도 3의 방법에서는, 배포하지 않으면 안되는 비밀은 키(Kx)와 정수(Cx)뿐이고, 또한 각 블록의 상대어드레스를 사용하여 복수의 블록대응의 암호키를 생성하므로, 소프트웨어 공급자 측의 처리부담이 경감되어 경제성도 만족된다.
이렇게 하여 암호화된 각 블록(1005-0∼1005-n)은 배포키 Kx[A], Cx[A]와 더불어 목표 시스템(102)으로 보내진다. 목표 시스템에서는, 비밀정보(Kx, Cx)와 블록의 상대어드레스값만 공급되면, 마이크로프로세서 내에서 다른 블록의 데이터나 배치된 메모리의 절대번지에 의존하지 않고, 각 블록 독립으로 복호할 수 있다.
이것은, 메모리로의 랜덤 억세스를 특징으로 하는 현재의 컴퓨터 아키텍처 및 어플리케이션 프로그램의 리로케이션을 전제로 한 현재의 OS에 효율좋게 적합(適合)하다.
또, 설령 공격자가 블록의 부정한 교환을 행해도, 블록마다의 상대어드레스값이 다르므로, 블록 암호키(Kv)도 달라 공격자가 의도하는 동작은 이루어지지 않는다.
다음에, 목표 시스템(102) 측에서의 동작의 상세를 설명한다.
프로그램의 실행에 앞서, OS(110)는 소프트웨어 공급자(121)로부터 수취한 어플리케이션 프로그램의 실행코드, 초기화 데이터(정적 데이터), 작업영역(스택)에 각각 메모리(108)의 영역을 할당한다. 이 단계에서는, 프로그램은 암호화된 그대로의 상태이다. 할당되는 메모리영역의 개시어드레스는, 시스템의 상태, 즉 연계하여 동작하는 다른 프로그램 모듈이나 공유 메모리의 배치에 의해 변화해 가므로, 시스템을 관리하는 OS는 상황에 따라 영역의 어드레스를 자유로이 결정한다(리로케이션). OS(110)는 또 배포키를 배치하는 영역을 결정하고, 배포키 정보를 읽어들인다.
OS(110)는 이들 영역의 어드레스정보를 메모리상의 정보배치 기술자(IAD: information arrangement descriptor)라 불리는 구조체에 기술한다.
도 4는 어떤 태스크의 가상어드레스공간의 메모리맵과, 정보배치 기술자(1111) 및 배포키 정보(1121)의 구조를 나타낸다. 메모리맵상에는, 프로그램(1102), 초기화(static: 정적) 데이터(1103), 작업영역(스택; 1104)에 더하여, 정보배포 기술자용의 영역(1105), 배포키용의 영역(1106)이 배치된다.
정보배치 기술자(1111)는, 프로그램영역의 개시어드레스(프로그램 오프셋; 1112), 데이터영역 개시어드레스(정적 데이터 오프셋; 1113), 데이터영역 종료어드레스(정적 데이터 엔드(end); 1114), 작업영역 개시어드레스(스택 오프셋; 1115), 작업영역 종료어드레스(스택 리미트(limit); 1116), 배포키 어드레스 개시어드레스(배포키 오프셋; 1117)를 포함한다.
배포키(1121)는 프로그램키(Kx; 1122), 프로그램 비밀정수(Cx; 1123), 초기화 데이터키(1124), 초기화 데이터 비밀정수(1125), 초기화 데이터길이(1126), 작업영역(스택)키(1127), 작업영역 비밀정수(1128), 작업영역길이(1129)를 포함한다.
메모리상에 배치된 프로그램이 마이크로프로세서(103)로 읽어들여져 복호, 실행될 때는, OS(110)는 정보배치 기술자에 기초하여 태스크상태를 제어하는 각종의 특권명령(태스크 제어명령)을 발행하여 태스크의 상태관리를 행한다.
도 5는 태스크 제어명령의 예를 나타내고, 도 6은 태스크의 상태천이를 나타낸다. 태스크 제어명령은 내부 테이블로의 태스크의 등록(register), 태스크의 개시(start), 중단된 태스크상태의 보존(suspend), 중단된 태스크의 재개(continue), 태스크의 종료, 즉 내부 테이블로부터의 태스크 비밀정보의 삭제(delete) 등을 포함한다. 그리고, 이들 제어명령에 따라 도 6에 나타낸 바와 같이 NULL상태(201)로부터 INIT상태(202)로 되고, RUN상태(203), STOPPED상태(204), SUSPEND상태(205) 등을 천이한다.
이하, 태스크를 실행하기 위한 동작에 대해, 특히 태스크의 등록, 태스크의 실행, 태스크의 중단, 태스크의 종료를 중심으로 상세히 설명한다.
<태스크의 등록>
1. 등록처리플로우
먼저, 태스크를 등록하기 위해, OS(110)는 등록하고자 하는 태스크의 ID와 그 프로그램의 정보배치 기술자의 선두어드레스를 파라미터로 하여 특권명령인 등록(register)명령을 발행한다. 등록명령의 발행에 의해 이 프로그램을 위한 배포키(1121)가 복호되고, 각 메모리블록의 복호에 사용되는 키와 상대어드레스정보가 태스크ID와 관련지어 마이크로프로세서 내의 각종 테이블(후술)에 등록된다.
도 7은 마이크로프로세서(하드웨어; 103)상에서의 태스크등록의 개략동작을 나타내고, 도 8은 등록명령의 처리플로우를 나타낸다.
정보배치 기술자(IAD; 1111)의 어드레스와 태스크ID #1을 파라미터로 하여 등록명령이 발행되면, 코어(902)내의 태스크 전환기(914)는 태스크의 상태를 체크한다(S301). 태스크상태가 NULL이 아니면(S301에서 NO), 태스크상태를 INVALID로 하여 에러로 한다(S308). 태스크상태가 NULL이면(S301에서 YES), 도 7의 점선 (1)로 나타낸 바와 같이, 코어(902)는 정보배치 기술자의 어드레스와 태스크ID를 포함하는 등록요구를 배포키 관리모듈(913)의 순서기(sequencer; 913-1)에 기입한다.
순서기는 도 7의 점선 (2)로 나타낸 바와 같이 정보배치 기술자의 영역에 대한 메모리 독출요구를 BIU(906)로 보내고, BIU는 점선 (3)으로 나타낸 바와 같이 정보배치 기술자(1111)를 순서기에 공급한다. 순서기는 이 정보기술자를 해석하여 프로그램, 초기화 데이터, 작업영역에 대응하는 오프셋 어드레스나 범위, 배포키 오프셋 어드레스(1117)를 취득한다(S302).
다음에 순서기는, 배포키 어드레스에 대한 독출요구를 BIU로 보낸다. BIU는 점선 (4)로 나타낸 바와 같이 배포키의 내용을 공개키 복호모듈(913-2)에 공급한다. 공개키 복호모듈(913-2)은 배포키(1121; 도 4)를 복호화하여 프로그램의 비밀정수(Cx), 초기화 데이터의 비밀정수, 작업영역의 비밀정수를 취득한다(S303).
다음에, 도 7의 점선 (5)로 나타낸 바와 같이, S302에서 취득한 프로그램, 초기화 데이터, 작업영역의 오프셋 어드레스를 명령캐시(903)의 오프셋 테이블(도 9 참조)에 기입한다(S304).
마찬가지로, S303에서 취득한 프로그램, 초기화 데이터, 작업영역의 암호키(비밀정수)를 키값 테이블(912)에 기입한다(S305). 이렇게 하여, 테이블이 설정되고, 태스크의 등록이 완료된다.
태스크의 등록이 완료되면, 태스크상태는 NULL로부터 INIT로 이행하고(S306), 이 상태의 천이는 인터럽트에 의해 코어(902)에 통지되며(S307), OS는 태스크를 실행하기 위한 준비가 갖추어진 것을 안다.
2. 테이블의 설정
마이크로프로세서내의 각종 테이블의 설정을 설명하기 전에, 도 9∼도 11을 참조하여 마이크로프로세서를 구성하는 명령캐시(903), 고속 암호키 처리모듈(FCM; 911), 키값 테이블(KVT; 912), 데이터 캐시(904)의 구성을 설명한다.
도 9는 명령캐시(903)의 상세한 설명을 나타낸다. 명령캐시(903)는 명령TLB(translation lookaside buffer; 122)를 갖는 명령관리유닛(MMU; 1201)과, 명령 캐시 메모리(1203), 현태스크ID 레지스터(1204), 캐시 억세스 검증부(1205), 태스크ID 기입부(1206) 및, 오프셋 테이블(1207)을 포함한다.
캐시메모리(1203)는, 복수의 소정 사이즈의 캐시라인으로 구성되고, 각 캐시라인은 그 캐시라인(블록)에서 실행되는 태스크의 태스크ID를 저장하는 태그를 갖는다. 캐시 억세스 검증부(1205)는 태그에 저장된 태스크ID와 현태스크ID 레지스터의 값을 비교하여 일치할 때만 억세스를 허가한다. 일치하지 않을 때는 그 캐시라인의 내용을 폐기한다.
도 10은 키값 테이블(KVT; 912)과 고속 암호키 처리모듈(FCM; 911)의 상세를 나타낸다. KVT(912)는 테이블 억세스 제어부(1301)와 현태스크ID 레지스터(1302), 태스크키(혹은 프로그램키) 테이블(1303), 컨텍스트키 테이블(1304) 및 데이터키 테이블(1305)을 포함한다. 여기서는 도시는 하지 않았지만, 데이터키 테이블(1305)은 4개의 테이블(테이블0∼3)을 포함한다. KVT(912)는 버스(1315)를 매개해서 버스(905)와 접속된다.
고속 암호키 처리모듈(FCM; 911)은 디스패처(1311)와 키생성모듈(1312) 및 암호처리모듈(1313)을 포함한다. 키생성모듈(1312)은 키생성단위로서 병렬로 1312-1∼1312-3을 갖고, 암호처리모듈(1313)은 암호처리단위로서 1313-1∼1313-3을 갖는다. 디스패처(1311)는 후술하는 바와 같이 키생성단위나 암호처리단위의 빈 어떤 부분에 처리를 할당하여 병렬처리를 가능하게 한다. FCM(911)은 버스(1314)를 매개해서 버스(905)에 접속된다.
KVT(912)로부터 FCM(911)으로, 버스(1316)를 매개해서 암호키가 전송되고, 버스(1317)를 매개해서 상대어드레스값이 전송된다.
도 11은 데이터 캐시(904)의 상세를 나타낸다. 데이터 캐시(904)는 현태스크ID 레지스터(1401)와, 어드레스 범위를 저장하는 MTRR(memory type range register) 테이블(1403), 이 테이블을 관리하여 MTRR 테이블의 어드레스 범위와 목표 어드레스를 비교하는 MTRR 테이블 관리비교부(1402), 암호속성 송출부(1411), 데이터 캐시 메모리(1431), 데이터 TLB(1433)를 갖는 MMU(1442) 및, 보존예정 컨텍스트식별자 레지스터(1434)를 포함한다. 암호속성 송출부(1411)는 데이터나 컨텍스트를 외부메모리로 되돌려 기입할 때, 그 암호속성을 확인하기 위해 읽어들임 요구데이터 암호식별자 레지스터(1412)와, 읽어들임 요구 컨텍스트 암호키 식별자 레지스터(1413), 기록(writing)요구 데이터 암호키 식별자 레지스터(1414), 기록요구 컨텍스트 암호키 식별자 레지스터(1415) 및, 억세스 검증부(1421)를 갖는다. MMU(1442)는 소정의 변환정보에 기초하여 코어(902)로부터 출력되는 가상어드레스로부터 물리어드레스로 변환하여 메모리 억세스를 행한다.
KVT(912)의 6종류의 테이블, 즉 프로그램키 테이블(1303), 컨텍스트키 테이블(1304), 데이터키 테이블(1305)(0-3)은 각각 태스크ID로 인덱스되고, 키생성에 사용하는 2종류의 비밀정보를 저장할 수 있다. 블록의 복호키 생성에 사용되는 2개의 비밀정보, 예컨대 도 4에 나타낸 프로그램을 위한 Kx(1122)와 Cx(1123)는 KVT(912)의 프로그램키 테이블(1303)의 태스크ID #1의 란에 기입된다.
한편, 이 프로그램영역의 오프셋값(1112)은 명령캐시(903)내의 오프셋 테이블(1207)의 태스크ID #1의 란에 기입된다.
데이터 캐시(904)의 MTRR 테이블(1403)은 태스크ID와 0∼3의 값을 취하는 MTRR 식별자로 식별된다. 즉, MTRR 테이블(1403)은 1태스크당 4개의 MTRR(어드레스 범위 레지스터)을 갖고, 각각에 데이터영역의 어드레스 범위와 키의 값을 등록할 수 있다. 태스크등록시에 있어서는, MTRR 식별자0, 1에 대응하는 초기화 데이터와, 작업영역(스택)에 대응하는 MTRR이 설정된다. 또, MTRR2, 3의 내용은 0으로 초기화된다.
어떤 태스크가 메모리를 참조할 때, 목표 어드레스와 MTRR의 어드레스 범위가 비교되고, 일치한 MTRR에 대응하는 암호화 속성(즉 키)이 사용된다. 데이터에 대해서도, MTRR의 선두번지를 오프셋으로 하여 상대어드레스값을 사용해서 상술한 수순의 암호키 생성이 적용된다.
테이블의 내용에 모순이 발생하는 것을 방지하기 위해, 이들 테이블을 재기록하고 있는 기간은 코어(902)에서는 이 태스크에 대한 모든 오퍼레이션이 금지된다.
테이블의 재기록이 완료되면, 태스크 전환기(STS; 914)의 태스크상태 테이블(921)에서 이 태스크ID에 대응하는 엔트리가 상태 NULL로부터 INIT로 재기록되고, 등록의 완료가 인터럽트에 의해 코어(902)에 통지된다.
또한, 본 실시예에서는 이들 등록오퍼레이션을 하드웨어로 실장한 예를 나타냈지만, 펌웨어로서 프로세서 내부에 짜 넣어진 소프트웨어로서 실장해도 좋다. 다만, 펌웨어는 악의를 가진 시스템 이용자에 의해 변경되는 일이 없도록 주의가 필요하다.
<태스크의 실행>
1. 태스크의 실행개시
태스크를 실행하기 위해서는, INIT상태에 있는 태스크에 대해, OS가 태스크ID를 파라미터로 하여 개시(start)명령을 실행한다. 그러면 제어가 프로그램의 선두로 옮겨진다. INIT상태에 있는 태스크 이외를 지정하여 개시명령을 실행한 경우, 에러로 되어 아무것도 실행되지 않는다.
도 12는 태스크실행 개시명령의 플로우를 나타낸다. 어떤 태스크에 대해 그 태스크ID를 지정하여 개시명령이 발행되면, 먼저 그 태스크상태가 INIT에 있는지 어떤지, 즉 태스크실행의 준비가 갖추어진 상태에 있는지 어떤지를 판단한다(S401). INIT 이외의 상태에 있는 태스크 식별자를 지정하여 개시명령이 내려진 경우는(S401에서 NO), 태스크상태 테이블(921)이 INVALID로 되어(S407) 에러로 된다.
태스크가 INIT상태에 있는 경우는(S401에서 YES), 코어(902)가 저장하는 현태스크ID가 새로운 태스크로 설정되고(S402), 레지스터 어레이(915)가 초기화된다(S403). 또, 프로그램 카운터(도시하지 않음)의 값이 프로그램영역의 선두에 설정된다(S404).
계속해서, 새로운 태스크ID가 태스크 채널(916)을 통해 명령캐시(903), 데이터 캐시(904), 키값 테이블(912)에 통지되고, 각각의 현태스크ID 레지스터(1204, 1401, 1302)에 저장된다(S405). 그 후, 코어(902)의 태스크상태 테이블(921)에서 태스크상태가 INIT로부터 RUN으로 재기록되고(S406), 실행이 개시된다.
본 실시형태에서는, 블록마다 암호화되어 보호된 프로그램을 실행하므로, 외부메모리의 프로그램이 캐시로 읽어들여질 때, 태스크ID에 대응하여 등록된 프로그램키에 기초하여 블록마다 프로그램의 복호화가 행해지고, 복호결과인 평문이 캐시로 읽어들여져 실행된다. 이 때, 태스크등록시에 배치된 메모리 어드레스에 맞추어 오프셋을 명령캐시(903) 내부의 오프셋 테이블(1297)에 등록하고, 메모리 억세스와 오프셋의 차를 상대어드레스값으로서 사용하므로, 프로그래머가 암호화한 프로그램이 OS에 의해 어느 어드레스에 배치되어 있어도 올바르게 복호화할 수 있다.
또한, 실시형태에서는 NULL상태로부터 중간의 INIT상태를 거쳐 RUN상태로 이행하는 예가 기재되어 있는데, 이것은 배포키의 공개키 알고리즘 처리를 비동기적으로 실행함으로써, 공개키 알고리즘 처리중의 비교적 긴 응답불능시간을 단축하는 것이 목적이다. 응답불능시간을 허용하면 중간의 INIT상태를 생략해도 지장이 없다. (비동기적 공개키 알고리즘 처리에 대해서는, 동일 출원인에 의한 일본 특허출원 제2001-024480호 참조.)
2. 명령캐시로의 읽어들임(reading)
다음에는 명령캐시(903)로의 읽어들임 처리에 대해 도 13의 처리플로우를 참조하여 설명한다.
태스크의 실행이 개시되어 캐시로 읽어들인 라인에는, 통상의 메모리 어드레스의 일치를 판정하는 태그에 더하여, 이 태스크의 태스크ID 태그가 부여된다. 그리고, 읽어들인 캐시라인에 억세스가 있으면, 명령캐시(903)의 억세스 검증부(1205)에서 라인에 부여된 태스크ID의 태그와 억세스가 있었던 현태스크ID의 일치, 불일치가 판단된다. 불일치의 경우는, 설령 메모리 어드레스의 태그가 일치하고 있어도 캐시의 미스히트(miss hit)로서 취급되고, 이 캐시라인의 정보가 재차 외부메모리로부터 읽어들여지는 것으로 된다. 다른 태스크에 의해 이 라인에 대응하는 외부메모리의 내용이 다시 읽어들여져도 새로 억세스한 태스크의 태스크ID에 대응하는 키로 복호화되어 읽어들여지는 것으로 된다. 즉, 본래의 키와 다른 키로 복호된 결과를 실행하는 것으로 되어 정상의 처리는 행하여지지 않는다.
한편, 이하의 설명에서 상대어드레스의 계산은 가상어드레스에 기초하여 행해지지만, 캐시의 히트(hit), 미스히트(miss hit)의 판정은 물리어드레스에 대해 행해진다. 캐시의 히트, 미스히트의 판정에 가상어드레스를 사용하면, 동일의 메모리 블록이 캐시상에 복수 존재하는 에일리어스(alias)라 불리는 현상이 발생하기 때문이다. 이 현상은 특히 동일의 물리어드레스 영역을 복수의 태스크가 공유하는 경우에 문제로 되므로, 본 실시형태에서는 통상의 캐시 히트, 미스히트는 물리어드레스에 의해 판정하고 있다.
도 13은 명령캐시(903)로의 읽어들임 처리플로우를 나타낸다. 이 플로우에서는, 설명의 간략화를 위해 명령캐시(903)와 FCM(911), BIU(906)의 동작을 일체로 하여 나타내고 있다.
먼저, 코어(902)로부터 독출요구가 있으면, 명령캐시(903)는 BIU(906)에 대해 목표 어드레스 블록의 독출요구를 보낸다. 독출요구에는 리퀘스트 ID, 보호의 유무, 목표 어드레스 범위, 요구원(request source)의 ID의 정보가 포함되어 있다.
여기서, 목표 어드레스와 읽어들인 캐시라인에 부여되어 있는 어드레스의 일치, 불일치가 판단된다(S501). 물리어드레스가 일치하지 않는 경우는(S501에서 NO), 미스히트로서 독출요구된 새로운 태스크ID에 대응하는 오프셋 어드레스의 취득을 개시한다. 오프셋 어드레스는 오프셋 테이블(1207)중의 현태스크ID에 대응하는 엔트리로부터 취득된다(S502).
다음에, 취득한 오프셋값으로부터 상대어드레스를 계산한다. 상대어드레스는 메모리 어드레스로부터 오프셋값을 뺌으로써 구해진다(S503). 한편, 보호태스크 실행중에 캐시메모리로의 억세스가 있으면, 명령캐시(903)는 캐시메모리의 억세스와 병행하여 상대어드레스의 계산을 행한다.
명령캐시(903)는 구한 상대어드레스값과 태스크ID를 내부버스(905)를 통해 키값 테이블(KVT; 912)로 보낸다. 이 때, 리퀘스트 ID가 부여된다. KVT(912)는 태스크키 테이블(1303)로부터 태스크ID에 대응하는 키의 값을 취득하고, 키의 값과 오프셋값을 채널(1316)을 통해 고속 암호키 처리모듈(FCM; 911)의 키생성모듈(1312)로 보낸다. 동시에 KVT(912)는 오프셋값과 리퀘스트 ID, 요구원 ID를 채널(1317)을 통해 FCM(911)의 암호처리모듈(1313)로 보낸다.
FCM(911)의 키생성모듈(1312)은 KVT(912)로부터 키의 값과 오프셋값을 수취하면, 즉시 그 블록에 대응하는 키의 계산을 개시한다. 즉, 프로그램의 비밀정수(Cx)에 상대어드레스값을 가산한 중간값을 구하고(S504), 구한 중간값을 프로그램의 비밀키(Kx)로 암호화하여 프로그램의 블록에 대응하는 블록대응키를 생성한다(S505).
이 키의 계산은 암호화처리이므로, 복수 사이클의 시간을 필요로 한다. 효율좋게 계산을 하기 위해 키생성모듈(1312)에는 복수의 키생성단위(1312-1∼1312-3)가 설치되고, 디스패처(1311)가 빈 키생성단위에 처리요구를 할당한다. 1개의 리퀘스트가 복수의 암호블록으로 구성되는 경우는, 모든 암호블록 대응의 키를 생성할 때까지 상대어드레스값을 증분하여 S502∼S505를 반복한다.
한편, BIU(906)는 외부메모리로부터 독출한 결과를 암호블록의 크기의 데이터로 될 때까지 버퍼링한다. 원래 보호되어 있지 않은 비암호화 데이터가 요구되고 있는 경우는, 데이터는 직접 요구원의 명령캐시로 보내지지만, 본 실시형태에서는 암호화 데이터에 대한 요구이므로, 독출결과는 FCM(911)으로 보내진다. FCM(911)의 암호처리모듈(1313)은 키생성모듈에 의해 생성된 블록암호키로 BIU(906)로부터 공급된 데이터를 복호한다(S506).
복호에는 복수 사이클의 시간이 걸리므로, 앞의 복호처리가 완료되기 전에 캐시라인을 구성하는 다음의 암호블록이 도착한 경우는, 다른 암호처리단위가 할당되어 병렬적으로 처리가 행해진다. 도 10에는 암호처리단위로서 1313-1∼1313-3만이 나타나 있지만, 충분한 수의 암호처리단위를 준비하면, 암호처리단위의 처리사이클보다도 짧은 간격으로 데이터가 도착해도 지연을 발생시키는 일없이 복호화처리가 가능하게 된다.
복호를 완료한 블록은, 곧바로 내부버스 경유로 요구원의 명령캐시(903)로 보내진다. 명령캐시(903)는 이 캐시라인에 데이터를 격납하고, 라인을 구성하는 모든 데이터가 일치하면 캐시 태그에 라인유효의 표시, 암호화 있음의 표시, 실행중의 태스크ID를 기입한다(S507).
캐시라인이 유효하게 되면, 코어(902)는 이 라인으로부터 데이터를 독출하고, 프로그램의 실행을 재개한다(S508).
다음에, S501에서 목표 어드레스와 캐시라인의 어드레스 태그(물리어드레스부분)이 일치한 경우, 즉 그때까지 실행되고 있던 태스크A와 다른 태스크ID를 갖는 태스크B가 마침 동일한 메모리영역을 억세스하여 캐시라인이 히트한 경우를 생각해 보자. 캐시의 물리어드레스가 히트했다고 하는 것은, 태스크B는 종래의 자원관리적인 의미에서 이 어드레스의 메모리의 억세스권이 있는 것으로 된다.
이 경우는, 명령캐시(903)의 억세스 검증부(1205)가 현태스크ID 레지스터(1204)의 값과 이 캐시라인에 부여되어 있는 태스크ID 태그를 더 비교한다(S509). 비교결과가 일치하지 않는 경우, 예컨대 현태스크ID 레지스터(1204)에는 "B"라고 기재되어 있지만, 캐시라인 태그의 태스크ID란에는 "A"라고 기재되고, 그 암호특성은 암호화라인인 것을 나타내고 있는 경우에는(S509에서 NO), 캐시가 플래시(flash)되고, 태스크B에 태스크ID에 대해 S502∼S507을 반복한다. 즉, 태스크B의 오프셋 어드레스로부터 상대어드레스가 계산되고, 캐시라인 어드레스에 대응하는 외부메모리의 데이터를 태스크B의 프로그램키로 복호한 결과가 이 캐시라인으로 읽어들여진다.
태스크A와 태스크B의 프로그램키가 일치하고 있으면, 각각 읽어들였다고 해도 2개의 태스크는 동일한 프로그램을 실행할 뿐이지만, 외부메모리의 데이터를 암호화한 본래의 키가 태스크A의 프로그램키이고, 태스크B의 키가 그것과는 다른 것인 경우, 태스크B는 본래의 프로그램과는 다른 터무니없는 프로그램을 실행하는 것으로 되어 의도하는 공격을 할 수 없다.
한편, 현태스크 레지스터의 값과 캐시라인의 태스크ID 태그가 일치하면(S509에서 YES), 요구된 어드레스의 내용이 코어(902)로 보내진다(S508).
이와 같이, 어떤 태스크의 실행중에 다른 태스크에 의해 같은 캐시라인이 재차 읽어들여진 경우, 외부메모리의 내용은 본래의 키와는 다른 키로 복호화되어 캐시라인으로 읽어들여진다. 본래의 키와는 다른 키로 복호화한 결과를 실행한 프로그램은 물론 정상적인 동작을 하지 않는다.
이 제어는 OS의 특권을 가지고도 번복할 수 없다. OS가 자유로이 태스크키 테이블(1303)을 조작할 수 있다고 한다면, 다른 프로그램의 비밀을 취득할 수 있지만, 본 발명에서는 OS가 프로그램키의 등록으로 대표되는 태스크의 상태관리와 비밀정보의 조작을 실행할 수 있는 것은, 도 5에 나타낸 바와 같은 일련의 태스크 제어명령의 발행에 제한되어 있다. 따라서, 본 발명의 마이크로프로세서에서는, 설령 OS의 특권을 가져도 어플리케이션의 프로그램 또는 데이터의 각 블록에 대응하는 키를 알지 못하는 한, 그것을 올바르게 실행하거나 독출할 수 없다.
이 기구에 의해, 어플리케이션 프로그램의 독립성을 보증하는 멀티파티의 프로그램 보호환경을 제공할 수 있는 것이다.
한편, S506과 관련하여 복수의 암호처리단위(1313)에 의해 신속한 복호처리가 가능하다고 설명했지만, 1개의 암호처리단위에 충분한 스루풋(throughput: 처리능력)이 있으면, 복수의 암호처리단위를 갖추는 것은 불필요하다. 예컨대, DES와 같이 동일 종류의 연산의 반복에 의해 구성되는 암호처리에서는 처리를 파이프라인화함으로써 높은 스루풋이 얻어지는 것이 알려져 있다.
그러나, 이러한 파이프라인 실장은 하드웨어 규모에 있어서도, 설계의 곤란성에 있어서도 많은 비용이 필요하다. 또, 일반적으로 이용가능한 IP의 형태로 제공되는 암호처리단위는 설계에 고도의 노하우와 시간을 필요로 하므로, 필요한 처리능력에 균형이 맞는 암호처리단위를 그 때마다 설계하는 것이 큰 부담으로 된다. 다양한 조건으로의 대응을 생각했을 때, 본 실시형태와 같이 기존의 암호처리단위를 복수 병렬동작시키는 것이 설계의 유연성의 점에서 유리하다. 또, 하드웨어 설계비용을 포함한 전체의 비용삭감의 효과가 있다.
3. 데이터 캐시에서의 실행처리
다음에, 데이터 캐시의 동작에 대해 설명한다. 초기화 데이터, 작업영역(스택) 등의 데이터의 보호에 대해서는, 태스크가 동적으로 확보한 데이터영역을 임의의 암호키에 의해 암호화하여 보호할 수 있다. 초기화 데이터, 작업영역, 동적 영역 등, 복수의 보호영역을 정의하고, 각각 다른 키를 설정하는 것이 가능하다. 예컨대 초기화 데이터의 경우, 외부메모리에는 이미 암호화가 끝난 데이터가 놓여져 있어, 이것을 독출하고, 복호할 때의 수순은 기본적으로는 프로그램의 경우와 같다.
전술한 프로그램(실행코드)의 경우는, 암호속성은 명령캐시(903)에서 현태스크ID와 캐시 태그의 태스크ID를 비교함으로써 판단되고 있었지만, 데이터의 경우는 속성의 판단이 현태스크ID와 MTRR(어드레스 범위 레지스터)의 비교로 행해지는 점이 다르다.
데이터 억세스가 있을 경우, 도 11에 나타낸 데이터 캐시(904)의 MTRR 테이블 관리비교부(1402)에서 억세스속성이 판정된다. 구체적으로는, MTRR 테이블 관리비교부(1402)에 현태스크ID와 목표 어드레스가 입력되면, 태스크ID에 대응하는 MTRR 테이블(1403)의 엔트리(0∼3)의 어드레스 범위와 목표 어드레스가 각각 비교된다.
MTRR 엔트리에 합치(合致)하는 것이 하나뿐이면, 그 속성이 무조건 채용되고, 태스크ID와 MTRR 엔트리 ID의 조가 당해 메모리 억세스의 암호속성으로 된다.
MTRR 엔트리가 중복한 어드레스 범위를 갖고, 목표 어드레스가 복수의 엔트리의 어드레스 범위에 합치한 경우, 미리 MTRR마다 정해진 우선순위에 따라 다만 하나의 MTRR이 선택되고, 이 메모리 억세스의 암호속성으로 된다.
이렇게 해서 MTRR 테이블 관리비교부(1402)에서 결정된 메모리 억세스 속성은 데이터 읽어들임의 경우, 암호속성 송출부(1411)의 읽어들임 데이터키 ID 레지스터(1412)에 일시적으로 보존된다. 또, MTRR 테이블 관리비교부(1402)에서는, 히트한 MTRR 엔트리의 선두어드레스와 메모리 억세스의 목표 어드레스로부터 상대어드레스값이 계산된다.
이들 메모리 억세스 속성과 상대어드레스값은 프로그램 메모리의 억세스의 경우와 마찬가지로, 내부버스(905)를 통해 키값 테이블(KVT; 912)로 보내진다.
데이터 캐시가 BIU(906)에 데이터 독출을 요구하고, 메모리 억세스 속성이 KVT(912)로 보내지며, 데이터가 FCM(911)으로 보내져 복호화되고, 데이터 캐시로 되돌리는 시퀀스는 명령캐시의 경우와 동일하다.
최후로, 캐시 태그에 메모리 억세스 속성과 상대어드레스값이 기입되어 캐시로의 읽어들임이 완료된다.
다음에, 어드레스 변환기구를 갖는 경우의 데이터 캐시의 비동기 기입에 관한 문제와, 본 실시형태에서 제공하는 기구에 대해 설명한다.
도 14에 본 실시형태의 데이터 캐시의 데이터 구조를 나타낸다. 데이터 캐시 메모리(1431)는 256개의 라인(1501-0∼1501-255)으로 구성되어 있다. 각 라인(예컨대 라인0)은 외부메모리의 내용을 격납하는 라인버퍼(1501-0-0)와 물리어드레스 태그(1501-0-1), 상대어드레스값(1501-0-2), 태스크 식별자(1501-0-3), MTRR 식별자(1501-0-4) 및 플래그영역(1501-0-5)을 갖는다.
데이터 캐시(904)가 명령캐시(903)와 다른 점은, 데이터의 되돌려 기입, 즉 인터럽트시 등에 외부메모리로 일시적으로 퇴피되는 경우가 있다는 점이다.
어떤 태스크A에 의해 읽어들여진 캐시라인은 반드시 태스크A의 실행중에 플래시되어 외부메모리에 되돌려 기입되는 것으로는 한정되지 않는다. 다른 태스크B의 실행중에 플래시될 가능성도 있다. 어드레스 변환기구를 갖는 프로그램의 경우, 태스크마다 다른 메모리맵을 가질 수 있기 때문에, 캐시라인의 보존처 물리어드레스는 가상어드레스로부터 똑같이 결정할 수 없다.
종래, 이 문제는 캐시 태그에 물리어드레스 태그(1501-0-1)를 마련하고, 보존처의 물리어드레스정보를 부여하면, 현재 실행중의 태스크가 무엇인지에 관계없이 캐시라인의 보존처를 결정할 수 있다.
그러나, 이것에 본 발명의 블록대응키를 이용한 암호화를 적용하고자 하면, 문제가 생긴다. 블록대응키는, 상술한 바와 같이 캐시라인의 가상어드레스와 오프셋값의 차인 상대어드레스값으로부터 생성되고 있다. 일반적으로는 상대어드레스값은 물리어드레스로부터 생성할 수 없으므로, 캐시의 되돌려 기입에 있어서의 데이터 암호화가 불가능하다.
본 실시형태에서는, 데이터 캐시 메모리(1431)의 캐시 태그에 상대어드레스값을 격납하는 태그(1501-0-2)를 마련하고, 이 캐시라인의 확보시에 부여된 상대어드레스값을 보존함으로써, 되돌려 기입시의 암호화의 문제를 해결하고 있다. 태그의 기입은, 이 캐시라인의 암호속성 결정시에 행한다.
다른 방법으로서, 캐시 태그에 가상어드레스를 저장해도 동일한 기능이 실현된다. 캐시의 비동기 되돌려 기입을 실행할 때에, 메모리영역 정보는 MTRR 테이블(1403)에 저장되어 있으므로, 가상어드레스와 태스크 식별자로부터 MTRR의 오프셋정보를 취득하여 상대어드레스값을 계산하면 좋다.
데이터 캐시(904)에서는, 배포키로 결정된 초기화 데이터와 작업영역 외에, 2개소의 데이터영역을 추가할 수 있다. 이들 영역은 MTRR(어드레스 범위 레지스터)의 ID 2, 3으로 지정된다.
데이터영역의 추가는 세트키(setkey)라 부르는 특별한 명령을 태스크에 발행함으로써 행해진다. 프로세서의 소정의 레지스터에 데이터의 암호키, 보조정수와 메모리영역 및 MTRR ID를 격납하여 세트키 명령을 발행한다. 세트키 명령은 자신의 태스크ID의 데이터 암호화 속성에만 유효하므로, 명령으로 명시적으로 태스크ID를 지정할 필요는 없다.
세트키 명령은 프로세서 코어(902)의 내부에서 데이터 캐시(904)의 MTRR 테이블(1403)로의 억세스와, 키값 테이블(912)의 데이터키 데이블(1305)로의 억세스라고 하는 2개의 단계로 분해되어 실행된다.
태스크의 초기상태에 있어서, MTRR(어드레스 범위 레지스터)의 2, 3은 무효화된 상태, 즉 어드레스 범위의 크기가 0인 상태에 있다. 이 상태에서는 어떠한 메모리 억세스도 어드레스 범위에 해당하지 않는다.
세트키 명령이 발행되면, 최초로 태스크ID와 MTRR의 ID에 일치하는 데이터 캐시라인이 플래시된다.
다음에, 키값 테이블(912)의 데이터키 데이블(1305)의 태스크ID와 MTRR의 ID로 인덱스된 란에, 암호키가 기입된다.
다음에, 데이터 캐시(904)의 MTRR 테이블(1403)의 지정 태스크ID와 MTRR의 ID로 인덱스된 란에, 어드레스 범위가 기입된다.
MTRR의 어드레스 범위의 길이가 0을 넘으면 그 암호화 지정이 유효하게 된다. 이하, 추가 데이터의 독출·기입에 대해서는 초기화 데이터의 경우와 마찬가지이다.
설정한 MTRR의 변경, 즉 데이터영역의 속성을 변경하기 위해서는, 재차 세트키 명령을 발행한다. 상술한 바와 같이, 세트키 명령을 발행하면 MTRR의 ID에 대응하는 캐시상의 라인은 전부 플래시되고, 외부메모리로 기록된다. 그 후, 데이터키 데이블(1305), MTRR 테이블(1403)에 새로운 설정이 기입되고, 새로운 설정에서의 독출·기입이 시작된다.
일단 외부메모리에 되돌려 기입되어 보존된 암호데이터는 전에 사용한 암호키(Kx), 보조정수(Cx), 오프셋 어드레스가 일치하여 비로소 올바르게 독출된다. 설령 암호키, 보조정수가 일치하고 있어도 오프셋 어드레스가 일치하지 않으면 올바른 값을 복호화할 수 없다. 이 일은 태스크간에서 공유되는 공유메모리나 디스크 데이터의 독출·기입에 있어서 중요하다. 이 이유로 세트키 명령이 실행되면, 대응하는 캐시라인은 무조건 플래시된다.
반대로, 어떤 데이터영역이 외부메모리상에서 다른 절대 메모리 어드레스영역에 복사되었다고 해도, MTRR의 영역지정 선두어드레스가 이동처 어드레스에 대응하여 설정되면, 암호키, 보조정수가 일치하는 조건 하에서, 원 데이터를 올바르게 독출할 수 있다.
이와 같이, 본 실시형태에서는 데이터의 암호화에 있어서도, 블록교환 공격방지를 위한 블록마다의 개별 암호키방식과, 메모리의 재배치(리로케이션)를 모순없이 양립시킬 수 있다.
<태스크의 일시중단>
멀티태스크 OS에서는, 태스크의 실행이 이따금씩 인터럽트에 의해 중단된다. 인터럽트후에는 OS의 인터럽트 핸들러가 실행되고, 필요에 따라 다른 태스크로 실행이 절체되는 경우와, 태스크의 절체없이 원 태스크로 복귀하는 경우가 있다.
본 실시형태의 프로세서에서는, 인터럽트 컨트롤러로부터 인터럽트요구가 있으면, 보호태스크의 실행은 중단되고, 인터럽트 벡터로 지정되는 어드레스의 인터럽트 핸들러의 실행이 개시된다. 즉, 그 때까지의 보호태스크의 레지스터값(컨텍스트정보)이 인터럽트 핸들러에 의해 코어(902)의 레지스터 버퍼(어레이)(915)로 퇴피되어 OS를 포함한 다른 태스크로부터의 독출로부터 보호된다. 이 인터럽트에 의해, 도 6의 상태천이에 나타낸 바와 같이 태스크상태 테이블(921)의 값이 RUN으로부터 STOPPED로 이행한다.
STOPPED상태에서는, 중단된 태스크의 컨텍스트는 코어(902)의 레지스터 버퍼(915)를 점유하고 있지만, 이 상태에서 SUSPEND명령(태스크실행상태 보존명령)이 발행되면, 레지스터 버퍼의 내용은 SUSPEND명령으로 지정된 메모리영역에 보존되고, 태스크상태는 SUSPEND로 이행한다. 인터럽트 핸들러는 레지스터 버퍼의 내용을 독출할 수 없지만, 그것을 일괄하여 메모리에 보존할 수 있는 것이다.
인터럽트 처리시간이 긴 경우나, 태스크 절체가 있는 경우는, 레지스터 버퍼의 내용은 캐시메모리에 보존된다. 또, 보존된 컨텍스트정보가 더 외부메모리로 기록되는 경우도 있다. 이 경우, 컨텍스트정보가 소정의 컨텍스트키로 암호화되고 나서, 외부메모리로 기록된다.
SUSPEND(보존)상태의 태스크를 재개하기 위해서는, 도 5 및 도 6에 나타낸 바와 같이 태스크ID와 컨텍스트정보의 보존처 어드레스를 지정하여 재개(resume)명령을 발행한다.
STOPPED상태(레지스터값이 보존되지 않고 단순히 퇴피되어 있는 상태)로부터 태스크를 재개하기 위해서는, 재개(continue)명령을 발행한다. 예컨대, 인터럽트 처리가 간단히 끝나 태스크의 절체가 기동되지 않는 경우나, 소프트웨어 타이머의 카운터 증가처리에서는 그 때까지 실행되고 있던 레지스터값을 보존하지 않고 레지스터 버퍼 어레이(915)에 퇴피시키는 것으로 그친다. 이 경우는, 레지스터 버퍼로부터 레지스터값이 복귀되고, 인터럽트전의 태스크실행이 재개된다. 태스크의 상태는 STOPPED로부터 RUN으로 리턴된다.
도 15는 태스크상태 보존(suspend)명령이 내려진 때의 처리플로우이다.
먼저, 태스크상태 보존명령의 발행을 받아 태스크상태 테이블(921)을 참조하여 지정된 태스크상태가 STOPPED인지 판단된다(S601). STOPPED가 아닌 경우는(S601에서 NO), 그 때까지의 레지스터값이 코어(902)의 레지스터 버퍼 어레이(915)에 퇴피되어 있지 않은 것으로 되므로, 이 상태에서 태스크상태 보존명령이 내려져도 무효로 되고, 태스크상태는 INVALID로 된다(S605).
지정된 태스크상태가 STOPPED인 경우는(S601에서 YES), 레지스터 버퍼 어레이(915)에 있는 내용이 태스크상태 보존명령으로 지정된 어드레스의 메모리영역에 기입되고, 보존이 개시된다(S692).
보존은 캐시로의 보존이 기본이고, 보존개시 전에 태스크 채널(916)을 통해 그 때까지 실행하고 있던 태스크의 ID가 데이터 캐시의 보존예정 컨텍스트 식별자 레지스터(1434)에 저장된다. 그리고, 데이터 캐시 메모리(1431)상에서 컨텍스트정보를 기입하기 위한 캐시라인이 확보되고, 데이터의 전송이 개시된다. 라인의 기입완료마다 캐시라인의 태그에 컨텍스트를 나타내는 식별자와 태스크ID가 기입된다.
컨텍스트정보의 보존은 원 메모리의 내용을 완전히 덮어 쓰기(overwrite)하는 것이다. 컨텍스트정보는 캐시라인 사이즈의 정수배로, 그 선두어드레스가 반드시 캐시라인 사이즈로 조절(align)되어 있고, 통상 필요하게 되는 기입전에 보존처 내용을 독출하는 동작[기록할당(write allocate)]은 불필요하게 된다.
그리고, 코어(902)의 해시계산부(922)에서 레지스터 버퍼의 내용 전체의 해시가 계산되고, 태스크ID와 더불어 메모리상의 레지스터 정보의 최후에 해시값이 부가된다(S603). 다수 라인에 걸치는 경우는, 코어(902)의 태스크 전환기(STS; 914)는 레지스터 버퍼 어레이(915)의 정보를 순차 캐시라인에 기입하면서 해시를 계산한다.
컨텍스트영역의 최후에 태스크ID와 해시값을 기입하고, 태그의 부가가 끝나면 태스크상태 보존명령의 실행은 완료로 되며, 태스크의 상태는 SUSPEND로 이행한다(S604).
보존된 컨텍스트정보는 데이터와 마찬가지로 태스크의 실행과는 비동기적으로 외부메모리(108)로 기록된다. 외부메모리로의 기록시의 컨텍스트정보의 취급에서, 다른 정보와 다른 점이 2점 있다. 하나는 상대어드레스값의 취급이고, 다른 하나는 읽어들임 처리의 차이이다.
컨텍스트정보는 복수의 블록으로 구성되지만, 상대어드레스값으로서 동일한 값이 사용된다. 상대어드레스값에는, 미리 정해진 정수가 사용된다. 컨텍스트에는 해시가 부가되어 있어 블록의 교환에 원래 내성이 있기 때문이다. 컨텍스트정보가 보존된 캐시라인이 플래시될 때, 취출된 암호속성은 기록 컨텍스트 키ID(1415)에 일시적으로 저장된다. 그 후의 처리는, 데이터 캐시의 기록과 동일하다.
도 16은 보존된 컨텍스트정보로부터 태스크를 재개하는 처리플로우이다.
먼저, 보존된 컨텍스트정보를 읽어들여 태스크의 실행을 재개하기 위해, 태스크ID와 보존처 메모리 어드레스를 파라미터로 한 재개(resume)명령이 발행되면, 지정된 태스크상태가 SUSPEND인지 어떤지가 판단된다(S701). SUSPEND 상태에 없는 경우는(S701에서 NO), 컨텍스트정보가 보존되어 있지 않으므로, 태스크상태는 INVALID로 된다(S707). 환언하면, 재개명령은 명령상태가 SUSPEND 이외의 경우는 무효이다.
SUSPEND상태에 있는 경우는(S701에서 YES), 어드레스와 태스크ID가 각각 어드레스선과 태스크 채널을 통해 데이터 캐시(904)로 보내진다. 캐시의 어드레스가 히트하고, 또한 태그가 컨텍스트를 나타내고 있으며, 태스크ID가 일치하는 경우, 캐시메모리(1431)상의 데이터가 레지스터 버퍼로 전송되고, 태스크의 재개처리가 개시된다(S702).
레지스터 버퍼로의 데이터 전송과 병행하여 해시계산이 행해진다(S703). 계산한 해시가 기대값과 일치하는지 어떤지가 판단되고(S704), 불일치하는 경우 재개처리는 중지되며, 태스크는 INVALID상태로 된다(S707).
해시가 일치한 경우는(S704에서 YES), 현태스크 레지스터에 지정된 태스크의 ID를 설정하고(S705), 태스크의 상태를 RUN으로 변경하여 실행이 재개된다(S706).
도 16의 플로우에는 기재되어 있지 않지만, 재개명령으로 지정된 컨텍스트정보의 영역이 캐시라인에 히트하지 않은 경우는, 보존된 데이터가 외부메모리에 기록되어 있는 경우이다. 이 경우는, 외부메모리로부터의 데이터 읽어들임이 개시된다. 즉, 태스크ID 레지스터(1401)에 보존된 태스크ID와 재개명령으로 지정된 어드레스에 대응하는 메모리의 독출요구가 데이터 캐시(904)로부터 BIU(906)로 보내진다. 그리고, 태스크ID와 컨텍스트를 의미하는 암호속성이 키값 테이블(912)로 보내지고, FCM(911)에서 복호하기 위한 키가 생성된다. 어떤 시점에서 보존된 태스크의 컨텍스트정보는 모두 같은 키로 암호화되어 있으므로, 블록단위의 키생성은 행하여지지 않는다.
복호가 완료된 블록은, 순차 데이터 캐시(904)로 보내지고, 태스크 전환기(STS; 914)는 레지스터 버퍼 어레이(915)에 그 내용을 읽어들인다. 이후의 처리는 캐시가 히트한 경우와 동일하다.
<태스크의 종료>
태스크를 완료하고, 할당된 태스크ID와 프로세서내의 각종 테이블을 다른 새로운 태스크를 위해 재이용하기 위해서는, 태스크ID를 지정하여 삭제(delete)명령을 발행한다. 본 실시형태에서는, 그 때까지의 태스크의 내용이 부정하게 들여다 보여지지 않도록, 시스템 동작중에는 한번 등록한 태스크의 태스크ID는 그 등록을 삭제하지 않는 한, 새로운 태스크를 위해 사용할 수 없다.
도 17은 태스크삭제의 처리플로우를 나타낸다.
먼저, 태스크에 대해 삭제명령이 발행되면, 지정된 태스크가 INIT, STOPPED, SUSPEND의 어느 상태로 있는지가 판단된다(S801). 상기의 어느 상태에도 없는 경우(즉, RUN, NULL인 경우)에는, 태스크는 INVALID로 되고(S805), 에러로 된다.
상기의 어느 상태에 있는 경우는(S801에서 YES), 지정된 태스크ID에 대응하는 태그가 부여된 캐시라인이 플래시된다(S802).
이에 따라, 대응하는 키 테이블(1330∼1305), 명령캐시의 오프셋 테이블(1207), 데이터 캐시의 MTRR 테이블(1403)도 클리어된다(S803).
이들 동작이 완료되면, 태스크상태가 NULL로 된다(S804).
삭제명령을 발행하는 것은 태스크 자신이 아니라 OS이고, 삭제명령을 발행할 수 있는 것은 RUN과 NULL 이외의 상태에 있는 태스크에 대해 가능하다.
태스크가 삭제되어 ID가 NULL상태로 되면, 다시 등록명령에 의해 배포키를 등록하고, 새로운 태스크를 실행할 수 있다.
이상 설명한 바와 같이 본 발명에 의하면, 적은 수의 비밀에 기초하여 간단한 방법으로 프로그램을 블록마다 암호화, 복호화하므로, 블록교환 공격을 방지할 수 있는 동시에, 소프트웨어 공급자측과 마이크로프로세서측의 쌍방의 자원관리, 처리부담이 경감된다.
블록대응 암호화에, 가상메모리 공간에 기초한 상대어드레스를 사용하므로, 리로케이션(재배치)의 문제에 효율적으로 대처할 수 있다.
키값 테이블과 고속 암호키 처리모듈을 캐시간에서 공유함으로써, 하드웨어 비용이 삭감된다.
도 1은 본 발명의 실시형태에 따른 멀티파티(multi-party: 다수 공동)의 어플리케이션 보호환경을 나타낸 도면,
도 2는 도 1의 목표 시스템(target system)에 내장된 마이크로프로세서의 개략구성도,
도 3은 도 1의 멀티파티 보호환경을 실현하기 위한 블록대응 암호키 생성수순을 나타낸 도면,
도 4는 본 발명의 실시형태에서 사용되는 정보배치 기술자와 배포키의 구성과, 이들 정보가 배치되는 가상어드레스공간의 메모리맵을 나타낸 도면,
도 5는 태스크 제어명령의 예를 나타낸 도면,
도 6은 태스크상태 천이의 예를 나타낸 도면,
도 7은 마이크로프로세서상에서의 태스크등록의 동작을 나타낸 도면,
도 8은 태스크등록의 처리수순을 나타낸 플로우차트,
도 9는 도 2에 나타낸 마이크로프로세서내의 명령캐시의 개략구성도,
도 10은 도 2에 나타낸 마이크로프로세서내의 키값 테이블과 고속 암호키 처리모듈의 개략구성도,
도 11은 도 2에 나타낸 마이크로프로세서내의 데이터 캐시의 개략구성도,
도 12는 태스크실행 개시의 처리수순을 나타낸 플로우차트,
도 13은 명령캐시로의 읽어들임(fetch)수순을 나타낸 플로우차트,
도 14는 데이터 캐시 내부의 데이터 구조를 나타낸 도면,
도 15는 태스크상태 보존(SUSPEND)의 처리수순을 나타낸 플로우차트,
도 16은 중단된 태스크 재개의 처리수순을 나타낸 플로우차트,
도 17은 태스크의 종료(삭제)의 처리수순을 나타낸 플로우차트,
도 18은 종래의 멀티파티 어플리케이션 보호환경의 도면이다.
<도면부호의 설명>
102 --- 목표 시스템(이용자 시스템),
103 --- 마이크로프로세서, 105 --- 비밀키,
108 --- 외부메모리, 113 --- 공개키,
121 --- 소프트웨어 공급자, 125 --- 배포키,
126 --- 블록대응 암호키 처리부, 200 --- 프로세서 패키지,
902 --- 코어, 903 --- 명령캐시,
904 --- 데이터 캐시, 905 --- 내부버스,
906 --- 버스 인터페이스 유닛(BIU),
911 --- 고속 암호키 처리모듈(FCM),
912 --- 키값 테이블, 913 --- 배포키 관리모듈,
913-1 --- 순서기(sequencer), 913-2 --- 공개키 복호모듈,
914 --- 태스크 전환기, 915 --- 레지스터 버퍼 어레이,
921 --- 태스크상태 테이블, 922 --- 해시계산부,
1111 --- 정보배치 기술자, 1203 --- 명령캐시 메모리,
1204, 1302, 1401 --- 현태스크(current task) ID 레지스터,
1205 --- 억세스 검증부, 1207 --- 오프셋 테이블,
1303∼1305 --- 키 테이블, 1311 --- 디스패처(dispatcher),
1312 --- 키생성모듈, 1313 --- 암호처리모듈,
1402 --- MTRR 테이블 관리비교부,
1403 --- MTRR(어드레스 범위 레지스터) 테이블,
1411 --- 암호속성 송출부.

Claims (18)

  1. 암호화된 프로그램의 복호키를 저장하되, 각각의 엔트리가 당해 프로세서 내에 있어서 일의(一意)의 태스크 ID로 식별되는 키값 테이블과,
    상기 태스크 ID 대응으로 태스크의 실행상태를 저장하는 태스크상태 테이블,
    어떤 태스크 ID에 대한 삭제명령이 발행된 때에, 태스크상태 테이블에 있어서 당해 태스크의 상태가 실행중 이외의 경우에만 태스크 삭제의 실행을 허가하는 판정기능부 및,
    상기 삭제명령의 실행에 있어서, 상기 태스크 ID에 대응하는 키값 테이블의 내용 및 프로세서내 정보를 각각 소거하고서 태스크 실행상태를 초기상태로 하는 태스크 초기화 기능부를 갖추어 이루어진 것을 특징으로 하는 마이크로프로세서.
  2. 제1항에 있어서, 상기 태스크 ID 대응의 프로세서내 정보로서, 캐시태그에 상기 태스크의 식별자를 저장하는 캐시메모리를 더 갖춘 것을 특징으로 하는 마이크로프로세서.
  3. 제1항에 있어서, 상기 키값 테이블에, 프로세서 내부에 저장되는 데이터와 레지스터의 암호화 및 복호를 위한 암호키를 각각 갖춘 것을 특징으로 하는 마이크로프로세서.
  4. 제2항에 있어서, 상기 태스크가 적어도 NULL, RUN의 2종류의 상태를 취하고,
    상기 키값 테이블은 상기 태스크상태가 NULL로부터 RUN으로 이행할 때에 상기 프로그램에 암호화되어 격납되어 있는 프로그램키와, 이 프로그램키에 기초해서 생성된 상기 복호키를 격납하도록 된 것을 특징으로 하는 마이크로프로세서.
  5. 제1항에 있어서, 상기 태스크가 적어도 NULL, RUN, SUSPEND의 3종류의 상태를 취하고,
    상기 태스크상태 테이블에 있어서 당해 태스크의 상태에서 실행중의 태스크가 중단된 때에, 중단된 태스크의 실행상태를 일시적으로 보존하는 제2의 캐시메모리를 더 갖춘 것을 특징으로 하는 마이크로프로세서.
  6. 현재 처리중의 태스크의 식별자를 태스크 ID 레지스터에 격납하는 단계와,
    태스크의 요구가 있을 때에, 태스크를 실행하기 위해 외부메모리에 블록마다 암호화된 상태로 격납되어 있는 프로그램을 캐시라인 단위로 읽어들이는 단계,
    상기 캐시라인의 소정 영역에 상기 요구가 있는 태스크의 식별자를 격납하는 단계,
    상기 캐시라인에 격납된 태스크의 식별자와 상기 태스크 ID 레지스터에 격납된 태스크 식별자를 비교하는 비교단계 및,
    상기 비교단계에서 비교한 비교결과가 일치할 때, 상기 읽어들인 내용을 복호화하는 단계를 갖추어 이루어진 것을 특징으로 하는 암호처리방법.
  7. 제6항에 있어서, 상기 태스크 식별자를 비교하는 단계에서 얻어지는 비교결과가 불일치하는 경우에, 상기 캐시라인의 내용을 폐기하는 단계를 더 갖추어 이루어진 것을 특징으로 하는 암호처리방법.
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 태스크의 요구에 따라 외부메모리에 암호화된 상태로 격납되어 있는 프로그램을, 격납 중인 것을 나타내는 캐시태그의 플래그를 가진 캐시라인마다 평문상태로 저장하는 캐시메모리와,
    상기 평문상태의 프로그램을 실행하는 명령실행부,
    상기 태스크의 실행 중에 인터럽트가 발생한 경우에, 상기 프로그램의 실행상태를 일시적으로 퇴피시키는 퇴피 레지스터,
    실행상태 보존요구가 있을 때에, 상기 퇴피 레지스터의 내용에 해시를 부가해서 상기 캐시메모리의 소정의 라인에 기입하는 해시계산부 및,
    상기 캐시라인마다 기입된 실행상태를 상기 캐시라인 단위로 소정의 암호키에 의해 암호화해서 외부메모리에 되돌려 기입하는 암호처리부를 갖추어 이루어진 것을 특징으로 하는 마이크로프로세서.
  17. 삭제
  18. 제16항에 있어서, 상기 암호처리부는, 실행상태 복귀요구가 있을 때, 상기 암호화된 실행상태의 플래그를 상기 캐시메모리의 캐시태그에 세트해서 읽어들이고, 상기 암호키로 캐시라인마다 복호하여 상기 퇴피 레지스터에 공급하며,
    상기 해시계산부는, 상기 해시를 검증해서 검증에 성공한 경우에만 상기 실행상태의 복귀를 허가하도록 된 것을 특징으로 하는 마이크로프로세서.
KR10-2002-0058773A 2001-09-28 2002-09-27 마이크로프로세서 KR100503906B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2001-00304488 2001-09-28
JP2001304488A JP4226816B2 (ja) 2001-09-28 2001-09-28 マイクロプロセッサ

Publications (2)

Publication Number Publication Date
KR20030027803A KR20030027803A (ko) 2003-04-07
KR100503906B1 true KR100503906B1 (ko) 2005-07-27

Family

ID=19124403

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0058773A KR100503906B1 (ko) 2001-09-28 2002-09-27 마이크로프로세서

Country Status (6)

Country Link
US (2) US7424622B2 (ko)
EP (1) EP1298518B1 (ko)
JP (1) JP4226816B2 (ko)
KR (1) KR100503906B1 (ko)
CN (1) CN1410876A (ko)
DE (1) DE60214640T2 (ko)

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4226816B2 (ja) 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ
JP4115759B2 (ja) * 2002-07-01 2008-07-09 株式会社東芝 耐タンパプロセッサにおける共有ライブラリの使用方法およびそのプログラム
US7321910B2 (en) 2003-04-18 2008-01-22 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7539876B2 (en) 2003-04-18 2009-05-26 Via Technologies, Inc. Apparatus and method for generating a cryptographic key schedule in a microprocessor
US7529368B2 (en) 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent output feedback mode cryptographic functions
US8060755B2 (en) 2003-04-18 2011-11-15 Via Technologies, Inc Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
US7900055B2 (en) 2003-04-18 2011-03-01 Via Technologies, Inc. Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms
US7532722B2 (en) 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7502943B2 (en) 2003-04-18 2009-03-10 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
US7392400B2 (en) 2003-04-18 2008-06-24 Via Technologies, Inc. Microprocessor apparatus and method for optimizing block cipher cryptographic functions
US7925891B2 (en) 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US7536560B2 (en) 2003-04-18 2009-05-19 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic key size
US7542566B2 (en) 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7519833B2 (en) 2003-04-18 2009-04-14 Via Technologies, Inc. Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine
US7529367B2 (en) 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent cipher feedback mode cryptographic functions
US7844053B2 (en) 2003-04-18 2010-11-30 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US6996698B2 (en) * 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
US7472285B2 (en) * 2003-06-25 2008-12-30 Intel Corporation Apparatus and method for memory encryption with reduced decryption latency
JP4624732B2 (ja) * 2003-07-16 2011-02-02 パナソニック株式会社 アクセス方法
US7627869B2 (en) * 2003-08-21 2009-12-01 Nxp B.V. Hardware register access via task tag ID
JP4309726B2 (ja) * 2003-09-01 2009-08-05 株式会社東芝 マイクロプロセッサ
JP4263976B2 (ja) 2003-09-24 2009-05-13 株式会社東芝 オンチップマルチコア型耐タンパプロセッサ
US20050097300A1 (en) * 2003-10-30 2005-05-05 International Business Machines Corporation Processing system and method including a dedicated collective offload engine providing collective processing in a distributed computing environment
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
JP4282472B2 (ja) 2003-12-26 2009-06-24 株式会社東芝 マイクロプロセッサ
JP4559794B2 (ja) * 2004-06-24 2010-10-13 株式会社東芝 マイクロプロセッサ
JP4490192B2 (ja) * 2004-07-02 2010-06-23 株式会社エヌ・ティ・ティ・ドコモ マルチタスク実行システム
JP4668556B2 (ja) * 2004-07-02 2011-04-13 株式会社エヌ・ティ・ティ・ドコモ タスク管理システム
JP2006023957A (ja) * 2004-07-07 2006-01-26 Sony Corp 半導体集積回路及び情報処理装置
US8954751B2 (en) 2004-10-08 2015-02-10 International Business Machines Corporation Secure memory control parameters in table look aside buffer data fields and support memory array
US7657756B2 (en) * 2004-10-08 2010-02-02 International Business Machines Corporaiton Secure memory caching structures for data, integrity and version values
US20060242429A1 (en) * 2004-12-21 2006-10-26 Michael Holtzman In stream data encryption / decryption method
JP4737592B2 (ja) * 2005-02-16 2011-08-03 ルネサスエレクトロニクス株式会社 データ処理装置
JP4721737B2 (ja) * 2005-03-17 2011-07-13 富士通株式会社 データのバックアップ方法、バックアップ処理システム、およびコンピュータプログラム
US7843830B1 (en) * 2005-05-05 2010-11-30 Force 10 Networks, Inc Resilient retransmission of epoch data
CN100447702C (zh) * 2005-05-23 2008-12-31 联想(北京)有限公司 一种防止未被授权程序在计算机系统运行的方法及其系统
US7684566B2 (en) 2005-05-27 2010-03-23 Microsoft Corporation Encryption scheme for streamed multimedia content protected by rights management system
JP4372061B2 (ja) * 2005-07-01 2009-11-25 パナソニック株式会社 機密情報実装システム及びlsi
US8321690B2 (en) * 2005-08-11 2012-11-27 Microsoft Corporation Protecting digital media of various content types
CN100354789C (zh) * 2005-08-19 2007-12-12 华为技术有限公司 一种内容群组的数字版权保护方法及系统
US7970133B2 (en) * 2006-01-19 2011-06-28 Rockwell Collins, Inc. System and method for secure and flexible key schedule generation
US8001591B2 (en) * 2006-01-31 2011-08-16 Freescale Semiconductor, Inc. Distributed resource access protection
US7991965B2 (en) 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes
US20070297606A1 (en) * 2006-06-27 2007-12-27 Tkacik Thomas E Multiple key security and method for electronic devices
US8285877B1 (en) * 2006-12-05 2012-10-09 Nvidia Corporation Intelligent background data conversion
US8588421B2 (en) * 2007-01-26 2013-11-19 Microsoft Corporation Cryptographic key containers on a USB token
JP2009044677A (ja) * 2007-08-10 2009-02-26 Panasonic Corp 機密情報処理装置、機密情報処理機器、及び機密情報処理方法
JP4976991B2 (ja) * 2007-11-22 2012-07-18 株式会社東芝 情報処理装置、プログラム検証方法及びプログラム
JP2009199414A (ja) * 2008-02-22 2009-09-03 Renesas Technology Corp マイクロコンピュータ
US8112634B2 (en) * 2008-06-04 2012-02-07 Samsung Electronics Co., Ltd. Security-enhanced storage devices using media location factor in encryption of hidden and non-hidden partitions
US8145855B2 (en) 2008-09-12 2012-03-27 Sandisk Technologies Inc. Built in on-chip data scrambler for non-volatile memory
US8429330B2 (en) * 2008-09-12 2013-04-23 Sandisk Technologies Inc. Method for scrambling data in which scrambling data and scrambled data are stored in corresponding non-volatile memory locations
US9336160B2 (en) * 2008-10-30 2016-05-10 Qualcomm Incorporated Low latency block cipher
US8745411B2 (en) * 2008-11-07 2014-06-03 Broadcom Corporation Protecting external volatile memories using low latency encryption/decryption
JP2010128392A (ja) * 2008-11-28 2010-06-10 Canon Inc ハッシュ処理装置及びその方法
JP5322620B2 (ja) 2008-12-18 2013-10-23 株式会社東芝 情報処理装置、プログラム開発システム、プログラム検証方法及びプログラム
JP5304345B2 (ja) * 2009-03-11 2013-10-02 富士通株式会社 コンテンツ処理装置、コンテンツ処理システム、およびコンテンツ処理プログラム
US9954875B2 (en) 2009-06-26 2018-04-24 International Business Machines Corporation Protecting from unintentional malware download
US9298894B2 (en) 2009-06-26 2016-03-29 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US8954752B2 (en) 2011-02-23 2015-02-10 International Business Machines Corporation Building and distributing secure object software
US8578175B2 (en) 2011-02-23 2013-11-05 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US9846789B2 (en) 2011-09-06 2017-12-19 International Business Machines Corporation Protecting application programs from malicious software or malware
US8819446B2 (en) 2009-06-26 2014-08-26 International Business Machines Corporation Support for secure objects in a computer system
ES2390796T3 (es) * 2009-07-27 2012-11-16 Nagravision S.A. Método de implementación de un procesador para garantizar la integridad de un software
JP2011071760A (ja) * 2009-09-25 2011-04-07 Canon Inc 情報処理装置、情報処理装置のジョブ処理方法、及びプログラム
WO2011101972A1 (ja) 2010-02-18 2011-08-25 株式会社東芝 プログラム
JP2011181000A (ja) * 2010-03-03 2011-09-15 Toshiba Corp コントローラ、半導体記憶装置および半導体記憶装置の制御方法
US8751789B2 (en) * 2010-09-17 2014-06-10 International Business Machines Corporation General purpose distributed encrypted file system
US9864853B2 (en) 2011-02-23 2018-01-09 International Business Machines Corporation Enhanced security mechanism for authentication of users of a system
US8745408B2 (en) * 2011-04-08 2014-06-03 Infineon Technologies Ag Instruction encryption/decryption arrangement and method with iterative encryption/decryption key update
JP5775738B2 (ja) * 2011-04-28 2015-09-09 富士通株式会社 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム
JP5316592B2 (ja) * 2011-06-09 2013-10-16 富士通セミコンダクター株式会社 セキュアプロセッサ用プログラム
KR101869059B1 (ko) * 2012-02-28 2018-06-20 삼성전자주식회사 저장 장치 및 그것의 메모리 컨트롤러
EP2653992A1 (en) * 2012-04-17 2013-10-23 Itron, Inc. Microcontroller configured for external memory decryption
US8572410B1 (en) 2012-07-18 2013-10-29 Freescale Semiconductor, Inc. Virtualized protected storage
JP6214142B2 (ja) * 2012-10-09 2017-10-18 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
US20140181402A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Selective cache memory write-back and replacement policies
US20140310536A1 (en) * 2013-04-16 2014-10-16 Qualcomm Incorporated Storage device assisted inline encryption and decryption
TW201512894A (zh) * 2013-09-24 2015-04-01 hong-jian Zhou 資料存取系統及其資料與指令傳輸裝置
US9223965B2 (en) 2013-12-10 2015-12-29 International Business Machines Corporation Secure generation and management of a virtual card on a mobile device
US9235692B2 (en) 2013-12-13 2016-01-12 International Business Machines Corporation Secure application debugging
US10223289B2 (en) * 2015-07-07 2019-03-05 Qualcomm Incorporated Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
US20170116003A1 (en) * 2015-10-27 2017-04-27 International Business Machines Corporation Dynamic determination of the applicability of a hardware accelerator to a request
US9886390B2 (en) * 2015-11-10 2018-02-06 International Business Machines Corporation Intelligent caching of responses in a cognitive system
CN107145308B (zh) * 2017-05-04 2021-06-22 惠州Tcl移动通信有限公司 移动终端、及其sd卡操作控制方法、系统、存储装置
IT201700050153A1 (it) * 2017-05-09 2018-11-09 St Microelectronics Srl Modulo hardware di sicurezza, relativo sistema di elaborazione, circuito integrato e dispositivo
US10509666B2 (en) * 2017-06-29 2019-12-17 Ati Technologies Ulc Register partition and protection for virtualized processing device
TWI670960B (zh) 2018-06-14 2019-09-01 笠眾實業有限公司 在公眾網路下進行驗證連線的車聯網系統及其連線方法
US11595192B2 (en) * 2020-04-24 2023-02-28 Dell Products L.P. System and method of migrating one or more storage class memories from a first information handling system to a second information handling system
WO2023022787A1 (en) * 2021-08-18 2023-02-23 Micron Technology, Inc. Selective cache line memory encryption
CN117519955B (zh) * 2024-01-08 2024-03-29 浪潮电子信息产业股份有限公司 一种加速设备的控制方法、系统、装置及加速设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666411A (en) * 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
KR20010082631A (ko) * 2000-02-14 2001-08-30 니시무로 타이죠 변조방지 마이크로프로세서

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3976978A (en) * 1975-03-26 1976-08-24 Honeywell Information Systems, Inc. Method of generating addresses to a paged memory
US4168396A (en) * 1977-10-31 1979-09-18 Best Robert M Microprocessor for executing enciphered programs
US4463420A (en) * 1982-02-23 1984-07-31 International Business Machines Corporation Multiprocessor cache replacement under task control
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
JPS6079446A (ja) 1983-10-06 1985-05-07 Hitachi Ltd 多重仮想記憶デ−タ処理装置
US4887296A (en) * 1984-10-26 1989-12-12 Ricoh Co., Ltd. Cryptographic system for direct broadcast satellite system
JPH0192833A (ja) * 1987-10-02 1989-04-12 Satoru Kubota 暗号翻訳の回路を内蔵することにより、ソフトウェアの違法なコピーを防止するマイクロプロセッサ
US5097533A (en) * 1988-11-29 1992-03-17 International Business Machines Corporation System and method for interfacing computer application programs written in different languages to a software system
JPH03204744A (ja) 1990-01-08 1991-09-06 Nec Corp アドレス変換機構
JPH03235143A (ja) 1990-02-13 1991-10-21 Sanyo Electric Co Ltd キャッシュメモリ制御装置
JP2846697B2 (ja) 1990-02-13 1999-01-13 三洋電機株式会社 キャッシュメモリ制御装置
JP3235144B2 (ja) 1991-08-02 2001-12-04 ソニー株式会社 量子箱列の作製方法
JP3235143B2 (ja) 1991-11-25 2001-12-04 ソニー株式会社 アルカリ電池
JP3204744B2 (ja) 1992-07-22 2001-09-04 株式会社東芝 信号遅延メモリ回路
US5319705A (en) * 1992-10-21 1994-06-07 International Business Machines Corporation Method and system for multimedia access control enablement
JP3381080B2 (ja) 1993-03-16 2003-02-24 日本電信電話株式会社 処理の中断が可能な排他制御方式
JP3381079B2 (ja) 1993-03-16 2003-02-24 日本電信電話株式会社 キャッシュメモリを用いた排他制御システム
JPH06266621A (ja) 1993-03-17 1994-09-22 Nippon Telegr & Teleph Corp <Ntt> データアクセス方法
JPH06282488A (ja) 1993-03-25 1994-10-07 Mitsubishi Electric Corp キャッシュ記憶装置
JP3381086B2 (ja) 1993-07-09 2003-02-24 日本電信電話株式会社 排他制御可能なマルチプロセッサシステム
US5805711A (en) * 1993-12-21 1998-09-08 Francotyp-Postalia Ag & Co. Method of improving the security of postage meter machines
JPH08180001A (ja) * 1994-04-12 1996-07-12 Mitsubishi Electric Corp 通信方式及び通信方法及びネットワークインタフェース
JPH07311712A (ja) 1994-05-19 1995-11-28 Toshiba Corp 障害復旧方法
JPH09259044A (ja) 1996-03-21 1997-10-03 Fuji Xerox Co Ltd 機密保護機能付き情報処理装置および機密保護方法
US6427162B1 (en) * 1996-05-02 2002-07-30 Sun Microsystems, Inc. Separate code and data contexts: an architectural approach to virtual text sharing
US6311290B1 (en) * 1997-02-14 2001-10-30 Intel Corporation Methods of reliably allocating, de-allocating, re-allocating, and reclaiming objects in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US6061449A (en) * 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
JP3376956B2 (ja) * 1999-05-14 2003-02-17 日本電気株式会社 プロセッサ間通信装置
US6816488B1 (en) * 1999-05-21 2004-11-09 Advanced Micro Devices, Inc. Apparatus and method for processing data frames in a network switch
US20010031050A1 (en) * 2000-02-14 2001-10-18 Lateca Computer Inc. N.V. Key generator
EP1182556B1 (en) * 2000-08-21 2009-08-19 Texas Instruments France Task based adaptive profiling and debugging
JP4226816B2 (ja) 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666411A (en) * 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
KR20010082631A (ko) * 2000-02-14 2001-08-30 니시무로 타이죠 변조방지 마이크로프로세서

Also Published As

Publication number Publication date
JP4226816B2 (ja) 2009-02-18
KR20030027803A (ko) 2003-04-07
DE60214640D1 (de) 2006-10-26
EP1298518A2 (en) 2003-04-02
US20030065933A1 (en) 2003-04-03
US7673155B2 (en) 2010-03-02
JP2003108442A (ja) 2003-04-11
US20090006864A1 (en) 2009-01-01
CN1410876A (zh) 2003-04-16
EP1298518A3 (en) 2004-04-21
DE60214640T2 (de) 2007-01-11
EP1298518B1 (en) 2006-09-13
US7424622B2 (en) 2008-09-09

Similar Documents

Publication Publication Date Title
KR100503906B1 (ko) 마이크로프로세서
JP3866597B2 (ja) 内部メモリ型耐タンパプロセッサおよび秘密保護方法
US7136488B2 (en) Microprocessor using asynchronous public key decryption processing
US7590869B2 (en) On-chip multi-core type tamper resistant microprocessor
US7694151B1 (en) Architecture, system, and method for operating on encrypted and/or hidden information
KR100924043B1 (ko) 보안 데이터 프로세싱 및 전송을 위한 방법들 및 장치들
US8190917B2 (en) System and method for securely saving and restoring a context of a secure program loader
US7673152B2 (en) Microprocessor with program and data protection function under multi-task environment
US7681044B2 (en) Secure processor and system
JP3880933B2 (ja) 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法
US7945789B2 (en) System and method for securely restoring a program context from a shared memory
US20010018736A1 (en) Tamper resistant microprocessor
JP4643702B2 (ja) マイクロプロセッサ
JP2019532559A (ja) ハードウェアアクアクセラレーテッド暗号法のためのキーのスレッド所有権
US10169251B1 (en) Limted execution of software on a processor
US11763041B2 (en) Data storage device performing in-storage processing
Whelihan et al. A key-centric processor architecture for secure computing
US20150039900A1 (en) Program execution method and decryption apparatus
KR20090059602A (ko) 세션 메모리 버스를 구비한 암호화 장치
JP4021810B2 (ja) プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法

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: 20080626

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee