KR100227875B1 - 프로그램 코드를 보호용으로 사용되는 어드레스 정보 스트림의 암호화 - Google Patents

프로그램 코드를 보호용으로 사용되는 어드레스 정보 스트림의 암호화 Download PDF

Info

Publication number
KR100227875B1
KR100227875B1 KR1019910007090A KR910007090A KR100227875B1 KR 100227875 B1 KR100227875 B1 KR 100227875B1 KR 1019910007090 A KR1019910007090 A KR 1019910007090A KR 910007090 A KR910007090 A KR 910007090A KR 100227875 B1 KR100227875 B1 KR 100227875B1
Authority
KR
South Korea
Prior art keywords
data
address
bits
key
value
Prior art date
Application number
KR1019910007090A
Other languages
English (en)
Other versions
KR910020560A (ko
Inventor
아이. 엘머 토마스
티. 뉴엔 란
린 렁-판
Original Assignee
클라크 3세 존 엠.
내셔널 세미콘덕터 코포레이션
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 클라크 3세 존 엠., 내셔널 세미콘덕터 코포레이션 filed Critical 클라크 3세 존 엠.
Publication of KR910020560A publication Critical patent/KR910020560A/ko
Application granted granted Critical
Publication of KR100227875B1 publication Critical patent/KR100227875B1/ko

Links

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • 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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 암호 키로서 특정의 온-칩 메모리 내에 저장되는 데이터 중 어떤 바이트를 선택하는 암호 방법에 관한 것이다. 이렇게 선택된 바이트는 그것 자체 및 상기 특정의 메모리 내의 나머지 데이터 전부를 암호화하기 위하여 사용된다. 선택된 바이트는, 암호화를 위하여 특히 할당된 값을 지니지 않고, 그것들은 단지 소정의 규칙에 따라서 암호화되어야 할 데이터의 본체로부터 선택된다.
이러한 기술이 실시되는 경우, 상기 메모리 내에 저장된 데이터의 각각의 바이트는, 공개되기 전에 지정된 암호 키 바이트의 하나와 결합한다 (예컨대, 배타적인 NOR 게이트를 사용한다. ) 사용자는, 1 조의 키 바이트를 별개로 공급, 프로그램 또는 안전 대책을 마련할 필요가 없다. 또한 그러한 바이트를 저장하기 위한 것으로 어떤 실리콘 영역도 낭비되지 않는다. 침입자는 이러한 암호 기술의 결과를 해독하기 위하여 원래 데이터의 어떤 부분을 필요로 하게 될 것이다. 또한 이러한 기술은 우아하게 열화한다. 키는 암호화 데이터가 단일의 공통의 의존성을 지니지 않도록 선택된다. 따라서, 단일의 키가 발견되는 경우, 단지 암호화 데이터의 극히 작은 부분만이 발견되는 것이다.

Description

프로그램 코드를 보호용으로 사용되는 어드레스 정보 스트림의 암호화
제1도는 전형적인 종래의 마이크로 프로세서 시스템을 도시하는 블록도이다.
제2도는 본 발명의 일실시예에 따라 구성된 런 타임 메모리 보호 구성을 도시하는 블록도이다.
제3도는 본 발명의 일실시예에 따라 구성된 메모리 보호 구성을 도시하는 블록도이다.
제4도는 바이트 결함의 결정론적 분리를 위하여 본 발명의 일 방법을 사용하는 상태를 도시하는 것으로, 본 발명이 어떻게 각각의 키 바이트를 그것이 암호화하는데 사용되는 데이터 바이트와 관련되는지를 도시한다.
제5도는 본 발명이 어떻게, 보호되는 코드를, 서브섹션 즉, 그 각각이 그자신의 개별적인 키에서 보호되는 서브섹션으로 분리하는지를 도시한다.
[발명의 분야]
본 발명은, 컴퓨터의 물리적 메모리 내에 저장된 전유 정보(proprietary information), 또는 알고리즘(algorithm)의 보호에 관한 것이다. 보다 상세하게 기술하면, 본 발명은, 원래의 보호되는 알고리즘 또는 정보를 공개시키지 않으면서, 검색 또는 트랜스포트를 위하여, 컴퓨터로부터 이러한 데이터를 전송하는 기술에 관한 것이다. 이것을 달성하기 위하여 사용하는 기술은, 전송 데이터를 암호화하는 특정한 방법이다. 이러한 기술은, 또한 사적인 정보 또는 보호되는 정보의 어떠한 트랜스포트(transport)에도 적용할 수 있다.
[발명의 배경]
현재의 경우, 인크립션(암호; encryption)기술은, 메모리 보호 방법 (memory protection scheme) 중에 완전히 포함된다. 이러한 메모리 보호 방법의 목적은, 특정한 컴퓨터 메모리 세그먼트(segment)의 내용이 부당하게 공개되는 것을 방지하는 한편, 이러한 데이터에 관한 임의의 진단을 실시하는 능력을 유지하는 것이다. 본원 발명은, 집적 회로, 특히 마이크로 컨트롤러(micro controller)상에 위치하는 메모리를 보호하는 것에 관한 것이다. 본원 발명에 있어서, 보호되도록 선택되는 메모리는 온 칩 EPROM(on chip EPROM)으로서, 본원 명세서에서는 OCEPROM 이라고 한다. 본 명세서에서 언급되는 그와 다른 타입의 메모리는, 비 (non) "온 칩 EPROM" 메모리, 즉 NOCEPROM 이라 하여 양자를 구별한다. NOCEPROM은, 본 발명에 의해 보호되는 세그먼트 이외의 메모리를 포함한다. NOCEPROM 카테고리에 속하는 메모리는, OCEPROM을 포함하는 집적 회로 상에 물리적으로 위치할 수 있거나 또는 위치하지 않을 수 있고, 예컨대 NOCEPROM의 카테고리에 있어서 다음과 같은 메모리, 즉 온 칩 RAM, 온 칩 ROM 및 오프 칩(off chip) 메모리를 포함한다.
제1도는, 시스템 데이터/어드레스 버스(105), 마이크로 컨트롤러(101), 메모리 장치(110) 및 마이크로 프로세서(120)를 포함하는 전형적인 종래의 마이크로 프로세서 시스템을 도시한다. 마이크로 컨트롤러(101)는, 버스(101-1)를 통하여 시스템 어드레스/데이터 버스(105)에 접속하고, 또한 OCEPROM(101-2) 및 NOCEPROM(101-3)을 포함한다. 메모리 장치(110)는, 상기 정의에 따라 NOCEPROM으로 나타내고, 그것은 버스(110-1)를 통하여 시스템 어드레스/데이터 버스(105)에 접속한다. 마이크로 프로세서(120)는 버스(120-1)를 통하여 시스템 어드레스/데이터 버스에 접속한다. 설명의 편의상, 본 명세서에서는, 예컨대 마이크로 컨트롤러(101), 마이크로 프로세서(120), 또는 그 외 프로세서 (도시하지 않음)에 의해 NOCEPROM으로부터 실행되는 임의의 코드에 의해 마이크로 컨트롤러(101)내에 포함되는 OCEPROM (101-2)의 내용이 허가 없이 공개 되는 것을 방지하는 것이 바람직한 상태에 대하여 기술한다.
물리적인 마이크로 컨트롤러 메모리의 특정한 세그먼트의 내용을 공개로부터 보호하고자 하는 경우, 마이크로 컨트롤러 아키텍쳐 (architecture)의 현재 환경 및 사용은, 적어도 2가지 검토 사항을 제시한다. 첫 번째 검토 사항은, 이러한 메모리 내용을 "런 타임(run time)"에 있어서 어떻게 보호할 것인가라는 점이다. 두 번째 검토 사항은, 변경 동작 모드 (alternate mode of operation) 기간 중에 이러한 메모리 내용을 어떻게 보호할 것인가라는 점이다.
"런 타임"이라고 하는 용어는, 본 명세서에서 마이크로 컨트롤러 프로세서가 메모리로부터 명령을 페취(fetch)하고 실행하는 동안의 기간(interval)을 의미한다. 이러한 명령은, 일부의 데이터를 처리하기 위하여 사용할 수 있다. 이와 같이 명령과 관련된 데이터를, 명령의 "오퍼랜드(operand)"라고 한다. 마이크로 컨트롤러에 대한 태생적(native) 명령을 사용하여 물리적인 메모리의 보호되는 세그먼트의 내용을 공개하는 것을 고려할 수 있다. 예컨대, 데이터 전송 명령을 사용하여, 데이터를 보호되는 세그먼트로부터 출력 포트로 전송시킬 수 있 다.
현재 실시되고 있는 변경 동작 모드(alternate mode of operation)는, 일반적으로 프로그램, 또는 보호되는 세그먼트의 프로그램 검증을 위하여 사용되고, 통상 "메모리 덤프(memory dump)", "ROM 덤프", 또는 "EPROM 모드" 중 하나 또는 그 이상의 이름으로 부른다. 그 변경 동작 모드의 명칭을 무엇이라고 하든, 그것은 마이크로 컨트롤러를 그 통상의 동작 형태 이외의 형태로 하는 것을 특징으로 한다. 이러한 변경 동작 모드의 목적은, 마이크로 컨트롤러의 토탈(total) 메모리에 대한 어떤 물리적 세그먼트의 내용을 개시하거나 또는 그것으로 액세스하기 위한 것이다. 이러한 변경 형태(alternate configuration)는, 일반적으로 마이크로 컨트롤러의 온-칩 프로세서 능력을 사용하지 않는다.
본 발명은, 넓은 범위에서 보면, 허가 없이 정보가 공개되는 것에 대한 대책, 즉 "판독 보호 (read protection)"에 관한 것으로, 그것은 또한, 메모리의 보호되는 세그먼트의 내용에 대한 제어 또는 변경 방지에 관한 것이기도 하다. 이것을 "기록 보호(write protection)"라고 한다. 메모리 보호 메커니즘의 일부로서, "기록 보호"는, 정보의 공개를 방지하도록 구성된 수단과 함께 실시되는 경우도 있고 그렇지 않은 경우도 있다.
마이크로 컨트롤러에 대한 종래 기술에 따른 메모리 보호 메커니즘의 대부분은, 2가지 종류 중 하나로 분류되는데, 이것을 클래스 1 및 클래스 2로 구별하기로 한다. 클래스 1 메커니즘은, 보호되는 데이터로의 액세스를 제어하기 위하여, 단일 요소 즉, 컴퓨터 비트 또는 임의의 형태의 퓨즈 (fuse)를 사용한다.
이러한 단일 요소를 적절하게 구성하는 경우, 일반적으로는 아래의 대책을 취하게 된다. "런 타임"에 있어서, "오퍼랜드"로서, 보호되는 메모리 세그먼트로부터의 데이터를 사용할 수 있는 명령만이, 그러한 메모리 세그먼트 내에 저장되고 그것으로부터 페취되는 명령이다. "메모리 덤프" 모드에 있어서, 그러한 보호되는 메모리 세그먼트로의 액세스는 허용되지 않는다. 클래스 2의 메커니즘은, 클래스 1에 의해 사용되는 것과 동일한 제한을 "런 타임"에서 사용한다. "메모리 덤프" 모드에 있어서, 보호되는 메모리 세그먼트로의 액세스는, 일반적으로, "키(key)"의 사용을 통하여 제어된다. 이와 같은 키는, 통상 2진 값이다. 상기 키의 필드 폭(field width)은, 전형적으로, 128 내지 256 비트의 범위 내에 있고, 그것은 16 내지 32 개의 8-비트 바이트의 범위에 대응한다. 이러한 오더(order)의 필드 폭은, 2128내지 2256이라는 거대한 수의 가능한 키를 제공하여, 단 하나의 정확한 키를 추측하는 것을 어렵게 한다. 종래 기술에 있어서, 이러한 키는, 온-칩 소프트웨어를 보호하기 위하여 2 가지 방식으로 사용된다.
첫 번째 선행기술에 따른 방법은, 온-칩 메모리로 액세스하기 위한 허가로서 단순히 정확한 키를 사용하는 것에 관한 것이다. 이것은, 상기 키가 보호되는 메모리를 지니는 집적 회로로 제공되고, 상기 집적 회로는 그 제공된 키를 상기 집적 회로 상에 저장된 정확한 키 값과 비교하는 것을 의미한다. 이러한 2개의 값이 매치(match), 즉 일치하는 경우, 온-칩 메모리로의 액세스에 대한 허가가 주어진다. 이러한 어프로치는, 단순하게 가능한 키의 값의 수가 엄청나다는 사실에 의존한다. 이것은 조합 자물쇠의 경우와 대단히 유사하다. 이러한 어프로치는 몇 가지 결점을 지니는데, 그것은 (1) 정확한 키의 값에 대하여 안전 대책을 마련해야 하고, (2) 정확한 키의 값을 칩 상에 저장해야하는데, 그것은 고가의 집적 회로 표면 영역을 사용하는 것으로 되며, (3) 이러한 키가 발견되는 경우, 이러한 안전 메커니즘(security mechanism)은 파국적인 방법으로 붕괴하여, 절대적으로 어떠한 메모리 보호도 유지할 수 없게 된다.
두 번째 선행 기술에 따른 방법은, 온-칩 메모리 내에 저장된 정보를 외부 환경에 공개되기 전에 암호화하기 위하여 키를 사용하는 것이다. 이러한 인크립션(암호)은, 통상, 보호되는 정보를, 온-칩 메모리로부터의 바이트 스트림(stream of bytes)으로 관찰한다. 이러한 바이트 스트림은, 통상 온-칩 메모리 모두가 암호화되어 출력될 때까지, 키 바이트와 반복적으로 XOR 처리 또는 XNOR 처리된다. 따라서, 32 개의 키 바이트가 있는 경우, 첫 번째 키 바이트는 메모리로부터의 첫 번째 바이트와 XNOR 처리되고, 두 번째 키 바이트는 메모리로부터의 두 번째 바이트와 XNOR 처리되며, 그러한 방법으로 32 번째 바이트까지 처리된다. 그런 다음, 메모리로부터의 33 번째 바이트는 첫 번째 키 바이트와 XNOR 처리되고, 또한 상기 프로세스는 그 자체를 반복하여 개시한다. 이러한 종래 기술에 따른 어프로치에는 몇 가지 결점이 있다. 즉 (1) 키가 온-칩에 저장 되어야하는데, 그것은 고가의 집적 회로의 표면 영역을 사용하는 것으로 되고, (2) 키가 발견되면, 시큐리티 메커니즘은 파국적인 방법으로 붕괴하며, 또한 (3) 온-칩 메모리의 어떤 프로그램되지 않은 바이트가 키 바이트와 XNOR 처리되면,이러한 키 바이트는 알려지게 된다는 것이다.
[선행 기술에 따른 메모리 보호 방법 1 (클래스 2)]
1가지 종래 방법 (예컨대, INTEL 839XBH, 879XBH, 및 87C196KB 타입의 장치에 사용됨)은, 온-칩 프로그램 메모리용 4 레벨의 보호를 획정하기 위하여 집적 회로의 칩 컨피규레이션(형태) 레지스터(CCR) 내에 위치하는 2 개의 비트를 사용한다. 이러한 비트를, LOC0 및 LOC1이라 하고, 다음과 같은 레벨의 보호를 제공한다.
[표 1]
판독 보호가 이네이블되는 경우, (1) 온-칩 메모리의 최종 5 바이트는 프로그램 저장을 위하여 사용될 수 없고, (2) 온-칩 메모리는 온-칩 메모리로부터의 명령에 의해서만 판독될 수 있으며, (3) 비 마스크가능 인터럽트(NonMaskable Interrupt ; NMI)는, 다음의 리세트까지, 집적 회로를 외부 실행으로 스위칭한다. 이러한 3 가지 사항은, 보호되는 온-칩 메모리 내에 저장되는 데이터의 런 타임 개시를 방지한다.
/EA(외부 액세스, 외부 메모리)의 값은 리세트에서 래치(latch)되는데, 그 결과 집적 회로는, 동작하는 동안 외부로부터 내부 실행으로 스위치될 수 없다. 이것은 분할 명령 페취(split instruction fetch) : 즉 외부 메모리로부터의 opcode, 내부의 보호되는 메모리로부터의 오퍼랜드를 방지하기 위한 런 타임 시큐리티(run time security)의 일측면으로 실시될 수 있다. 이것은, 종종 이러한 신호를 잘 제어함으로써, /EA를 래치하지 않는 집적 회로 상에서 달성될 수 있다.
메모리 덤프를 실시하기 위하여, 온-칩의 16 바이트 시큐리티 키가 매치, 즉 일치해야한다. 칩은, 외부 메모리 내의 특정한 위치에 저장되는 것으로 사용자가 공급하는 키와, 집적 회로 상에 저장되는 것으로 16 바이트의 시큐리티 키 사이의 일치 여부를 자동적으로 체크한다. 매치, 즉 일치하는 경우, 온-칩 메모리의 내용은 외부 메모리로 덤프된다. 매치(일치)가 이루어지지 않는 경우, 칩은 그 자신을 엔드리스 루프(endless loop)의 내부 실행 상태로 만든다.
기록 보호가 이네이블되면, 온-칩 메모리에 대한 더 이상의 프로그래밍은 허용되지 않는다.
[선행 기술에 따른 메모리 보호 방법 2 (클래스2)]
이러한 방법 (예컨대, INTEL 87C51, 87C51BH, 87C51FA, 87C51FB, 87C51GA 및 8752BH 타입의 장치에 사용됨)에 있어서도, 온-칩 프로그램 메모리용 4 레벨의 보호를 획정 (define)하기 위하여 집적 회로 상에 2 비트의 EPROM을 사용한다. 이러한 2개의 비트는 B1 및 B2라 하는 것으로, 표 2에 도시하는 레벨의 보호를 제공한다.
[표 2]
/EA의 값은, 온-칩 메모리가 판독 보호될 때마다, 리세트에서 래치된다. 이러한 조건에서, /EA의 "현재" 값은, 적절한 실행을 위해서, 래치되는 값과 일치해야 한다. 이것은, 장치에 대한 런 타임 메모리 보호의 일측면이다.
메모리 덤프는 이러한 방법을 사용하는 모든 칩에 대하여 암호화된다. 온-칩의 32 바이트 메모리 어레이(array)는 사용자에 의하여 프로그래밍된다. 이러한 메모리 어레이는, 검증(verification)기간 중에 프로그램 바이트를 인코드하기 위하여 사용된다. 각각의 프로그램 바이트는, 상기 어레이로부터의 32 키 바이트 중 하나와 논리적으로 XNOR 처리된다. 상기 키 바이트는 차례로 어드레스된다. 따라서, 프로그램의 첫 번째 바이트는, 상기 어레이의 첫 번째 바이트와 XNOR 처리된다. 프로그램의 두 번째 바이트는 상기 어레이의 두 번째 바이트와 XNOR 처리되고, 이하 마찬가지로 프로그램의 32 번째 바이트까지 동일하게 처리한다. 그런 다음, 프로그램의 33 번째 바이트는 상기 어레이의 첫 번째 바이트와 XNOR 처리된다. 이러한 인크립션(암호화) 알고리즘은, 프로그램 전체에 대하여 이와 같은 방법으로 반복하여 실시한다.
[선행 기술에 따른 메모리 보호 방법 3 (클래스 1)]
이러한 어프로치 (예컨대, INTEL 8751H 및 8744H 타입의 장치에 사용됨)는, 온-칩 메모리로의 액세스를 제어하기 위하여 집적 회로 상에 숨어 있는 1개의 록 비트(lock bit)를 사용한다. 이러한 비트가 프로그램되면, (1) 내부 프로그램 메모리는 판독될 수 없고, (2) 상기 장치를 다시 프로그램할 수 없으며, (3) 상기 장치는 외부 메모리로부터 실행할 수 없다. 상기 장치를 내부 실행 (internal execution)으로 제한하는 것은 이러한 방법의 단점이다. 상기 록 비트는, 일반적으로 EPROM 셀 내에 저장되고, EPROM을 소거함으로써 상기 장치의 완전한 기능성을 회복한다.
[선행 기술에 따른 메모리 보호 방법 4 (클래스 1)]
또 다른 선행 기술 (예컨대, INTEL 8051AHP 및 80C51BHP 타입의 장치에 사용됨)은, 런 타임에 있어서, 프로그램 메모리 공간(program memory space)을 4K 바이트로 제한하는 것이다. 이러한 공간은 2 가지 가능한 방법 중 1 가지로 그 형태를 구성하여야 한다. 그것은, 완전하게 칩 상에 설치하거나, 또는 완전하게 칩 외부에 설치하는 것을 말한다. 이러한 4K 바이트 경계를 넘는 데이터 액세스는, 적당한 프로그램 명령 (예컨대, MOVX@Ri, A 또는 MOVX A,@Ri)을 사용하는 레지스터(Ri)를 통해서만 실시할 수 있을 뿐이다. 분명한 것은, 결합된 내부/외부 실행을 방지하는 것은, 시스템 적용에 있어서 이러한 방법의 유연성을 저하시킨다.
본 명세서에 있어서 "ROM 덤프" 또는 "EPROM 모드"라고 하는 프로그램 검증 테스트 모드는, 이러한 장치로부터 간단하게 제거된다.
[선행 기술에 따른 메모리 보호 방법 5 (클래스 2)]
어떤 종래의 장치 (예컨대, INTEL 87C51FA 및 83C51FB 장치)는, 온-칩 메모리로의 액세스를 제어하기 위하여 단일한 록 비트(single lock bit)를 사용한다. 이러한 비트가 프로그램되지 않은 채로 남아있게 되면, 아무런 보호도 주어지지 않는다. 이러한 비트가 프로그램되면 : (1) /EA는 리세트에서 래치되어서, 장치가 작동하는 동안 외부로부터 내부 실행으로 스위칭되는 것을 방지하고, (2) 외부 메모리로부터 실행되는 MOVC 명령(프로그램 코드 바이트를 이동시키기 위하여 사용됨)은, 내부 메모리로부터 코드 바이트가 페취되는 것을 허용하지 않는다.
또한, 상기 선행 기술에 따른 방법 2에서 설명한 바와 같이, 32 바이트 인크립션(암호) 어레이를 사용하여 메모리 덤프 출력(memory dump output)을 인코드한다. 이러한 어레이는,항상 메모리 덤프 출력 상에 맵(map)된다. 이러한 어레이가 프로그램되지 않은 채 남아있게 되면, 메모리 데이터는 영향을 받지 않는다. 그것이 사용자에 의해 프로그램되면, ROM 데이터는 인코드될 것이다.
[선행 기술에 따른 메모리 보호 방법 6 (클래스 2)]
또 다른 선행 기술 (예컨대, INTEL 8398 장치에 사용됨)은, 온-칩 프로그램 메모리로의 액세스를 제어하기 위하여, 집적 회로 상에 숨어있는 메모리 셀 내에 저장되어 있는 단일의 록 비트(single lock bit)를 사용한다. 이러한 비트가 프로그램되면, 온-칩 메모리는, 외부 메모리로부터 실행되는 프로그램에 의해 판독될 수 없다. 메모리 덤프를 실행하기 위하여, 16 바이트 온-칩 키는 매치, 즉 일치하여야 한다. 메모리 덤프 모드에 있어서, 상기 키는, 집적 회로에 의해 외부 메모리로부터 자동적으로 판독된다. 외부 메모리로부터 판독된 상기 키가 온-칩 키와 매치(일치)하는 경우, 메모리 덤프는 진행한다. 한편, 매치하지 않는 경우, 메모리 덤프는 어보트 (abort), 즉 중단된다.
[선행 기술에 따른 메모리 보호 방법 7]
미국특허 제4,698,617 호는, 인크립션 기술에 대한 변형예를 개시하는데, 여기에서 데이터를 암호화하기 위하여 사용하는 키는, 상이한 데이터 바이트를 판독하는 경우에 변화한다. 상기 미국특허는, 그 카운트를 공지의 값으로부터 스타트하여, 인크립션(암호) 키를 제공하기 위한 의사랜덤 카운터 (pseudorandom counter)의 사용에 대하여 기재하고 있다. 그 카운트를 동일한 공지의 값으로부터 스타트하는, 대응하는 의사랜덤 카운터는, 암호화된 데이터를 해독하기 위하여 수신용 집적 회로에 사용된다. 상기 미국특허는, 또한 인크립션 기술의 일예를 보여주는데, 여기에서 인크립션 키는 극히 간단하게도 판독이 요구되는 데이터의 어드레스이다.
아래 내용은, 상기 미국특허의 제1도 및 제4도에 나타나 있는 기술을 실시하는 경우에 대한 단점이다. 우선 제4도를 살펴보면, 여기에서는 ROM 출력을 암호화하기 위하여 어드레스를 사용한다. 인코드 회로에 대한 2 개의 오퍼랜드 중 하나는 용이하게 알 수 있다. - 어드레스 인코딩은 XOR/XNOR에 기초할 가능성이 크기 때문에 (제5(a)도 및 제5(b)도), 송신된 바이트 스트림을 해독하기 위하여, 단지 ROM 출력 비트에 대한 어드레스 비트의 고정된 매핑을 결정하기만 하면 된다. 일반적으로, ROM은, 최종적인 어드레스 변화로부터 측정되는 것으로, 평가해야할 어떤 고정된 인터벌(간격)을 필요로 한다. 이러한 인터벌을 Te라 한다. Te의 기간 동안, ROM은 통상 일정한 값의 출력(Vo)을 유지한다. 주의해야할 것은, 제4도의 인코드 회로에 대하여 출력 스트로브(output strobe)가 존재하지 않는다는 것으로, 결과적으로 그 출력 변화는 버스(10) 또는 버스(7) 상의 변화에 대하여 상대적으로 직접적인 것이다. 상기 매핑(mapping)을 결정하기 위하여, Te미만의 기간에 있어서 버스(10) 상에 적당한 어드레스 패턴을 인가하고, 버스(8)에 있어서 (Vo)에 미치는 영향을 관찰한다.
상기 미국특허의 제1도에 도시하는 것은 다소 더 힘든 것이다. 왜냐하면 어떠한 인크립션 (암호) 오퍼랜드도 알려져 있지 않기 때문에, (Vo)에 관한 미지의 오퍼랜드 및 미지의 매핑에 관한 영향을 동시에 관찰해야만 하기 때문이다.
그러나, 그 구성이 ROM 이네이블 리드를 제어할 수 있게 하기 때문에, 정미(正 味)의 효과를 결정할 수 있다. 이것은 여러 가지 방법으로 실시할 수 있다. 첫째로, (Te)를 초과하는 주기를 지니는 어드레스에서 변화하는 동안, 리드 (11) 상에 일정한 액티브 값을 유지시킬 수 있다. 이것은 여러 가지 상이한 데이터 바이트에 관한 단일의 인크립션 키에 대한 효과를 관찰할 수 있게 한다.
둘째로, (Te)를 초과하는 주기에서 어드레스 상수 및 토글 리드(11;toggle lead)를 유지시킬 수 있다. 이것은, 몇 가지 (또는 전부) 데이터 바이트에 관한 각각의 인크립션 키의 효과를 결정할 수 있게 한다.
셋째로, (Te) 미만의 주기에서 어드레스 상수 및 토글 리드(11)를 유지시킬 수 있다. 이것은, 일정한 값 (Vo)에 관한 각각의 키 바이트의 효과를 결정할 수 있게 한다.
이러한 수단의 어느 것도 인크립션 매핑 또는 보호되는 데이터를 직접적으로 공개시킬 개연성은 없으나, 이러한 수단은, 그 목적을 위하여 사용 가능한 상당한 양의 정보를 공개한다.
상기 선행 기술에 따른 방법 (1) 내지 (6)의 경우, 심각한 결점이 존재한다. 예컨대, 프로그램 데이터를 암호화하기 위하여 32 바이트 키가 사용되는 실시예에 있어서, 상당한 양의 집적 회로의 표면 영역을 32 바이트 키를 저장하기 위하여 사용해야 한다는 것이다.
또한, 모든 32 바이트마다 각각의 키 바이트가 암호화되는 출력 패턴으로 반복된다. 따라서, 각각의 키 바이트는, 프로그램의 1/32를 인코드한다. 단지 1 개의 키 바이트를 발견했을 뿐이라 하더라도, 그것은 공개로부터 보호되어야 할 프로그램의 상당 부분을 즉시 공개하는 것으로 된다. 또한, OCEPROM의 프로그램되지 않은 바이트가 상기 키 바이트 중 하나로 인코드되는 경우, 그 키 바이트는 알려지게 된다. 이것은, 보호되는 프로그램이 OCEPROM에 있어서 사용 가능한 공간을 완전히 점유하지 않는 경우에 발생할 수 있고, 또한 OCEPROM의 프로그램되지 않은 부분이 메모리 덤프 기간 중에 출력되는 경우에 발생할 수 있다. 또한, 이러한 키 값은, 항상, 온-칩 및 오프-칩 2 가지 모두에 있어서 안전한 상태로 유지되어야 한다. 결과적으로, 키 전체가 발견되면, 보호 메커니즘은 파국적인 방법으로 붕괴하고, 절대적으로 아무런 메모리 보호도 유지할 수 없게 되는 것이다.
[요약]
본 발명의 실시예에 따르면, 인크립션 (암호) 방법은, 인크립션 (암호)키로서, 특정한 온-칩 메모리 내에 저장된 데이터의 어떤 바이트를 선택한다. 이렇게 선택한 바이트는, 그 자신과 상기 특정한 메모리 내에 잔존하는 데이터 모두를 암호화하기 위하여 사용한다. 선택된 바이트는, 인크립션, 즉 암호화를 위하여 특히 할당되는 값을 지니는 것은 아니나, 이러한 바이트는, 소정의 규칙에 따라, 암호화되어야 할 데이터의 본체로부터 단순하게 선택된다.
이러한 기술을 실시하는 경우, 상기 메모리 내에 저장된 데이터의 각각의 바이트는, 공개에 앞서, 지정된 인크립션 키 바이트 중 하나와 결합한다. (예컨대, 배타적 NOR 게이트를 사용함). 이러한 실시예에 따르면, 인크립션 키 바이트 (encryption key byte)를 판독하고자 하는 침입자는 그 의지를 상실하게 된다. 왜냐하면, 그것들은 그 자체를 암호화하기 위하여 사용됨으로써, 각각의 비트가 논리 값 1인 출력 바이트로 되는 결과를 가져오기 때문이다.
본 발명에 따른 기술의 사용에는 특정한 이점이 존재한다. 사용자는, 1조의 키 바이트를 개별적으로 공급하거나 프로그램하는 것 또는 안전 대책을 마련할 것을 필요로 하지 않는다. 또한 이러한 바이트를 저장하기 위하여 어떤 실시콘 영역도 낭비하지 않는다. 이러한 암호화 기술의 결과를 해독하기 위하여, 침입자는 원래 데이터의 어떤 부분을 알 필요가 있다. 또한, 이러한 기술은 우아하게 열화한다. 암호화 데이터가 단일한 공통의 의존성을 지니지 않도록 키를 선택한다. 따라서, 단일의 키가 발견되는 경우에도, 암호화 데이터의 극히 적은 부분만이 공개될 뿐이다.
[본 발명의 바람직한 실시예에 대한 상세한 설명]
본 발명에 따르면, 메모리의 내용을 보호하기 위한 메커니즘을 제공하기 위하여, 데이터 암호화에 관한 새로운 방법을 달성한다. 이것은, 마이크로 컨트롤러에 사용하는데 특히 적합한 것으로, 아래에서 기술하는 본 발명의 암호화 구조 및 기술에 관한 설명은, 마이크로 컨트롤러에 적용하는 경우에 관한 것이다.
그러나, 본 발명의 인크립션 (암호) 구성 및 그 기술은, 마이크로 컨트롤러, 마이크로 프로세서 또는 임의의 규모를 지니는 프로세서 및 메모리 장치 외에 데이터 전송에 사용되는 메모리 시스템에 대하여 사용하는데 적합한 것이다.
본 발명에 있어서 OCEPROM 이라고 하는 메모리 세그먼트를, 마이크로 컨트롤러의 물리적인 일부 (physical part)로서 정의한다.
본 발명의 런 타임 메모리 보호 구성의 실시예는, 제2도에 도시하는바와 같이, 4 개의 주요한 요소를 지니고 있다.
명령 (opcode)은, 페취, 디코드 및 실행 (FDE) 유니트 (22)에 의해 OCEPROM (21)으로부터 페취되고, 이러한 프로세스는 시큐리티 모니터 (23)에 의해 모니터된다. 본 발명의 런 타임 시큐리티 메커니즘에 대한 첫 번째 구속 조건은, 단지 하나의 FDE 유니트만이 OCEPROM (21)으로 액세스할 수 있다는 것이다. 이러한 특권 (privilege)을 지니는 마이크로 컨트롤러 FDE 유니트는, 특히, 물리적으로 OCEPROM (21)을 포함하는 마이크로 컨트롤러이다. 이러한 구속 조건은, OCEPROM (21)으로 런 타임 직접 메모리 액세스 (Direct Memory Access ; DMA)할 가능성을 제거하고, 그 다른 런 타임 복수 액세스 메커니즘 (runtime plural access mechanism)을 제외시킨다. 일례로, OCEPROM (21)을 포함하는 마이크로 컨트롤러가 멀티프로세서 시스템 내에 설치되는 경우, 이러한 OCEPROM은, 그것이 수용되어 있는 특정한 마이크로 컨트롤러에 의해서만 런 타임에서 액세스할 수 있다. 또 다른 실시예에 있어서, 예컨대 마이크로 프로세서 및 DMA 컨트롤러 등과 같은 복수개의 프로세서 또는 컨트롤러에 의해, 보호되는 메모리 세그먼트에 대하여 복수개의 실행 액세스 (plural execution access)가 제공된다. 이러한 1 가지 실시예에 있어서, 보호되는 메모리에 실행 액세스할 수 있는 각각의 장치 중 하나에 대하여 복수개의 시큐리티 모니터를 사용한다. 또 다른 실시예에서는, 하나의 시큐리티 모니터를 사용하는데, 그것은 보다 세련 된 것으로, 복수개의 실행 가능성이 있다는 사실을 고려할 수 있다. 이러한 실시예에 있어서, 하나의 시큐리티 모니터가, 예컨대 보호되는 메모리로부터의 정보를 판독할 수 있는지의 여부를 결정하는 경우, 액세스되어야 할 어드레스 뿐만 아니라 액세스하는 장치도 검토한다.
다음에 정의하는 것은, 본 발명의 실시예에 관련된 판독 및 기록 특권을 예시하는 역할을 한다. 다음의 정의에 부가하여, 이러한 특권을 표 3에 기재하고 있다.
"DATA" 특권은, OCEPROM으로 "런 타임" 액세스를 제어하기 위한 특권으로 정의한다. 그것은, 실행 액세스라고 할 수 있는 것으로, 적대적인 (hostile)프로그램이 데이터로서의 안전한 OCEPROM의 내용을 판독하는 것을 방지하도록 설계한다. 데이터 특권이 허용되는 경우, NOCEPROM으로부터 페취되고 실행되는 명령은, 오퍼랜드에 대한 소오스 (source)로서 OCEPROM을 사용하도록 허용된다. 데이터 특권이 허용되지 않는 경우, NOCEPROM으로부터 페취되는 명령은, 오퍼랜드에 대한 소오스로서 OCEPROM을 사용하도록 허용되지 않는다.
OCEPROM으로부터 페취되고 실행되는 명령은, 항상 오퍼랜드에 대한 소오스로서 OCEPROM을 사용하도록 허용된다.
이러한 명령, 즉 "페취 및 실행 (fetched and executed)"에 있어서, 그 페취 및 실행을 실시하는 마이크로 컨트롤러는 특히, 물리적으로 OCEPROM을 포함하는 마이크로 컨트롤러이다.
OCEPROM의 내용을 변경하기 위한 시도를 제어하기 위하여 "WRITE" 특권을 정의한다. WRITE (기록) 특권이 허용되는 경우, OCEPROM은, 주어진 프로그래밍 메커니즘에 의하여 변경될 수 있다. WRITE 특권이 허용되지 않는 경우, 주어진 프로그래밍 메커니즘은 디스에이블되고 OCEPROM 내용의 변경은 허용되지 않는다.
일실시예에 있어서, 마이크로 컨트롤러는, 일반적으로 이해하고 있는 통상의 작동 모드와는 다른 하나 또는 그 이상의 동작 모드를 지닌다. 이러한 모드는, OCEPROM의 프로그램 및/ 또는 검증을 실시하기 위한 것으로, 명령을 실행하기 위한 마이크로 컨트롤러의 자원을 사용하는 경우도 있고 그렇지 않은 경우도 있다. 그것들은, 어떤 경우에 대해서도, 위에 정의한 "DATA" 및 "WRITE" 특권의 강제 하에 있다. 이러한 동작 모드의 경우, OCEPROM 내에 저장된 데이터를 요구 (request)에 따라 공개하여도 좋은지 여부를 결정하기 위하여 "VERIFY (검증)" 특권을 정의한다. 이러한 요구는, 마이크로 컨트롤러가 적당한 동작 모드에 있는 경우 특정의 메커니즘에 의해 인식된다. VERIFY가 허용되는 경우, OCEPROM으로부터 공개되는 데이터는, 그 저장되어 있는 값의 정확한 표시이다. VERIFY가 허용되지 않는 경우, OCEPROM으로부터 어떠한 데이터도 공개되지 않는다. 단지 "암호화 VERIFY"만이 허용되는 경우, OCEPROM으로부터 공개된 데이터는 실제 저장된 값의 인크립션, 즉 암호이다.
[표 3]
이러한 4 가지 레벨의 시큐리티 (표 3 참조)는, OCEPROM 내에 저장된 데이터가 허가 없이 공개되는 것을 방지하도록 설계되어 있다. 또한, 그것들은 이러한 데이터가 허가 없이 변경되는 것을 방지한다. 본 발명에 따른 마이크로 컨트롤러의 실시예에 있어서, OCEPROM은, 어드레스 (COOO hex) 및 (FFFF hex) 사이에 위치한다. 이러한 4 가지 레벨의 시큐리티는, OCEPROM의 모든 액세스를 제어한다. 또한, 시큐리티 비트 (SB1) 및 (SE0)를 포함하는 칩 형태 바이트 (chip configuration byte)는, WRITE 특권이 허가되지 않는 경우, 기록 보호 상태로 된다. 칩 형태 바이트는 암호화되지 않고, 주어진 다른 동작 모드에서 판독 가능하다.
제3도는, 본 발명의 일실시예에 따라 구성된 마이크로 컨트롤러의 일부를 도시한다. 마이크로 컨트롤러(200)는, 어드레스 버스(250-A)로부터 어드레스 신호를 수신하고 버스(250-F)에 데이터 신호를 공급하는 NOCEPROM(201-3)을 포함한다. 이것은 NOCEPROM이기 때문에, NOCEPROM (201-3)과 관련된 어떠한 인크립션 (암호) 또는 권한 부여 회로도 사용되지 않는다.
마이크로 컨트롤러 (200)는, 또한, 어드레스 버스 (250-B)로부터 어드레스신호를 수신하고 또한 어드레스 버스 (250-C)로부터 어드레스 신호를 수신하는 OCEPROM (201-2)을 포함한다. OCEPROM (201-2)은, 데이터 버스 (250-D)로 데이터 신호를 제공한다. 이것은 OCEPROM이기 때문에, 그곳에 포함된 데이터로의 액세스가 권한이 부여되었다는 것을 보장하고, 필요한 경우 버스 (250-E)또는 버스 (250-F)로 공급된 데이터를 암호화하기 위하여 부가적인 회로를 사용한다. 표 3에 도시하는 바와 같이, 프로그램 가능 형태 비트 (SB1) 및 (SB0)는 온-칩 시큐리티 회로의 동작을 제어한다. 아래의 설명은, 표 3에서 정의한 형태 비트 (SB1) 및 형태 비트 (SB0)의 조합에 관한 제3도의 회로 및 구성의 동작에 대하여 설명한다.
형태 비트 (SB1) 및 (SB0) 모두가 논리 값 1을 지니는 경우, 통상의 동작 모드에 있어서 OCEPROM (201-2)의 내용이 공개되는 것을 방지하기 위하여 어떤 특별한 구성 (special provision)을 강제하는 것은 아니다. 이러한 조건 하에 있어서, OCEPROM (201-2) 내에 포함된 데이터는, 어드레스 버스 (250-A) 상에 적당한 어드레스 값을 제공함으로써 액세스 가능하다. 어드레스 모니터 (205)는, 그것이 버스 (205-A) 상에서 수신하는 어드레스를 변화시키지 않은 채로 (unchanged) 버스 (250-B)로 공급한다. 이러한 어드레스 값이 그 전의 어드레스 값과 동일하지 않을 경우, 어드레스 모니터 (205)는, 새로운 어드레스 리드 (255)상에 짧은 논리 0 펄스를 공급한다. 인크립션 (암호) 제어 논리 (204)는, SB1 리드 (251)의 논리 1의 값 및 SB0 리드 (252)의 논리 1의 값을 검지하고, 그에 따라 키 판독 스트로브 리드 (256; key read strobe lead) 상에 논리 0의 값을 공급한다. 제로 (zero) 회로 (206)는, 키 판독 스트로브 리드 (256)의 논리 0의 값을 검지하고, 그에 따라 버스 (250-B)로부터 그것이 수신한 어드레스 비트 A (2, 3, 4)를 버스 (250-C)의 비트 A (2, 3, 4)로 각각 변화시키지 않은 채로 공급한다. 새로운 어드레스 리드 (255) 상의 짧은 논리 0 펄스에 응답하여, 어드레스 버스 (250-B) 및 (250-C) 상에 존재하는 어드레스에 따라서, OCEPROM (201-2)은 데이터 버스 (250-D)에 데이터를 제공한다. 런 타임 시큐리티 모니터 (202)는, SB1 리드 (251)의 논리 1의 값을 검지하고, 그에 따라 이네이블 리드 (253)으로 논리 1의 값을 공급한다. 데이터 버스 실렉터 (203; data bus selector)는, 모드 버스 (257)를 검사하여, 집적 회로가 현재 통상의 동작 모드에 있는지 여부를 결정하고, SB1 리드 (251), SB0 리드 (252), 및 이네이블 리드 (253) 각각의 위에 존재하는 논리 1의 값에 따라, 스테이터스 (status) 및 타이밍 버스 (254) 상에 존재하는 신호 값에 따라 지시되는 경우, 데이터 버스 (250-D) 상에 존재하는 데이터를, 변화시키지 않은 채로 런 타임 데이터 버스 (250-F)로 공급한다.
형태 비트 (SB1) 및 (SB0) 모두가 논리 값 1을 지니는 경우, OCEPROM(201-2)의 내용에 있어서 그 프로그래밍 또는 판독을 위하여 주로 의도하는 동작 모드에 있어서 상기 내용이 개시되는 것을 방지하기 위하여 어떤 특별한 구성을 강제하지 않는다. 이러한 동작 모드는, 통상의 동작 모드에 대한 변형예로서 앞서 기재한 바 있다. 이러한 조건하에 있어서, OCEPROM (201-2) 내에 포함된 데이터는, 어드레스 버스 (250-A) 상에 적당한 어드레스 값을 공급함으로써 액세스 가능하다. 어드레스 모니터 (205)는, 그것이 버스 (250-A) 상에서 수신하는 어드레스를 변화시키지 않은 채로 버스 (250-B)로 공급한다. 이러한 어드레스 값이 그 전의 어드레스 값과 동일하지 않을 경우, 어드레스 모니터 (205)는, 새로운 어드레스 리드 (255) 상에 짧은 논리 0 펄스를 제공한다. 암호 제어 논리 (204)는 리드 (251) 상의 SB1의 논리 1의 값 및 리드 (252) 상의 SB0의 논리 1의 값을 검지하고, 그에 따라 키 스트로브 리드 (256) 상에 논리 0의 값을 공급함과 동시에 출력 스트로브 리드 (259) 상에 논리 0의 값을 공급한다. 제로 회로 (206)는, 키 판독 스트로브 리드 (256)의 논리 0의 값을 검지하고, 그에 따라 그것이 버스 (250-B)로부터 수신하는 어드레스 비트 A (2, 3, 4)를 버스 (250-C)의 비트 A (2, 3, 4)로 각각 변화시키지 않은 채로 공급한다. 새로운 어드레스 비트 (255) 상의 짧은 논리 0 펄스에 응답하여, OCEPROM (201-2)는, 어드레스 버스 (250-B) 및 (250-C) 상에 존재하는 어드레스에 따라서 데이터 버스 (250-D)로 데이터를 공급한다. 모드 버스 (257) 상에 존재하는 신호 값에 의해 결정되는 바와 같이, 데이터 버스 (250-D) 상의 데이터는, 아래와 같이, 데이터 버스 (250-E)또는 데이터 버스 (250-F)의 단지 하나만으로 존재할 수 있다. 암호 회로 (207)는 스트로브 (259)의 논리 0 값을 검지함과 동시에 형태 비트 SB1 리드 (251)의 논리 1의 값을 검지하고, 만약 모드 버스 (257) 상의 신호 값이 적절한 경우, 버스 (250-D)로부터의 데이터를 변화시키지 않은 채로 버스 (250-E)로 공급한다. 런 타임 시큐리티 모니터 (202)는, SB1 리드 (251)의 논리 1의 값을 검지하고, 그에 따라 논리 1의 값을 이네이블 리드 (253)로 공급한다. 데이터 버스 실렉터 (203)는 SB1 리드 (251), SB0 리드 (252) 및 이네이블 리드 (253)의 각각의 논리 1의 값을 검지하고, 모드 버스 (257) 상의 신호 값이 적절한 경우, 스테이터스 및 타이밍 버스 (254) 상의 신호값에 따라 지시되는 경우, 버스 (250-D)로부터의 데이터를 변화시키지 않은 채로 버스 (250-F)로 공급한다.
형태 비트 (SB1) 및 (SB0) 모두가 논리 값 1을 지니는 경우, OCEPROM(201-2)으로 데이터를 프로그램 하는 것을 방지하기 위하여 어떤 특별한 구성을 취하는 것이 아니다. 이러한 조건하에 있어서, 적당한 동작 모드에 있어서, 어드레스 버스 (250-A)상에 어드레스 및 데이터 버스 (250-G) 상에 데이터를 공급함으로써, 데이터를 OCEPROM (201-2)으로 프로그램 할 수 있다. 어드레스 모니터 (205)는, 그것이 어드레스 버스 (250-A) 상에서 수신하는 어드레스를 변화시키지 않은 채로 버스 (250-B)로 공급한다. 암호 제어 논리 (204)는, SB1 리드 (251)의 논리 1의 값 및 SB0 리드 (252)의 논리 1의 값을 검지하고, 그에 따라 키 판독 스트로브 리드 (256) 상에 논리 0의 값을 공급한다. 제로 회로 (206)는 키 판독 스트로브 리드 (256)의 논리 0의 값을 검지하고, 그에 따라 그것이 버스 (250-B)로부터 수신하는 어드레스 비트 A (2, 3, 4)를 각각 버스 (250-C)의 비트 A (2, 3, 4)로 변화시키지 않은 채로 공급한다. 충분한 어드레스 및 데이터 안정화 인터벌 (stabilization interval)후에, 짧은 논리 0 펄스가 PGM 리드 (262)로 인가된다. 이러한 짧은 논리 0 펄스는, 암호 논리 (204)로 하여금, SB1 리드 (251)의 논리 1의 값 및 SB0 리드 (252)의 논리 1의 값에 따라서, OPGM 리드(263)상에 짧은 논리 0 펄스를 공급한다. OCEPROM(201-2)은, OPGM 리드 (263) 상의 짧은 논리 0 펄스를 검지하고, 그에 따라 버스 (250-B) 및 버스 (250-C)에 의해 일체적으로 표현되는 어드레스 값에 대응하여 OCEPROM (201-2) 내의 위치로 버스 (250-G)로부터의 데이터를 프로그램, 즉 기록한다.
형태 비트 (SB1)가 논리 값 1을 지니고 형태 비트 (SB0)가 논리 값 0을 지니는 경우, 통상의 동작모드에 있는 OCEPROM (201-2)의 내용이 공개되는 것을 방지하기 위하여 어떤 특별한 구성을 강제하지는 않는다. 이러한 조건하에 있어서, OCEPROM (201-2) 내에 수용된 데이터는, 어드레스 버스 (250-A) 상에 적당한 어드레스 값을 제공함으로써 액세스 할 수 있다. 어드레스 모니터 (205) 는, 그것이 버스 (250-A) 상에서 수신하는 어드레스를 변환시키지 않은 채로 버스 (250-B)로 공급한다. 이러한 어드레스 값이 그 전의 어드레스 값과 동일하지 않을 경우, 어드레스 모니터 (205)는 새로운 어드레스 리드 (255) 상에 논리 0 펄스를 짧게 공급한다. 암호 제어 논리 (204)가 SB1 리드 (251)의 논리 1의 값 및 SB0 리드 (252)의 논리 0 값을 검지하고 그에 따라 키 판독 스트로브 리드 (256) 상에 논리 0의 값을 공급한다. 제로 회로 (206)는 키 판독 스트로브 리드 (256)의 논리 0 값을 검지하고, 그에 따라 그것이 버스 (250-B)로부터 수신하는 어드레스 비트 A(2, 3, 4)를 각각 버스 (250-C)의 비트 A (2, 3, 4)로 변환시키지 않은 채로 공급한다. 새로운 어드레스 리드 (256) 상에 짧은 논리 0 펄스에 응답하여, OCEPROM (201-2)은, 어드레스 버스 (250-B) 및 (250-C) 상에 존재하는 어드레스에 따라 데이터 버스 (250-D)로 데이터를 공급한다. 런 타임 시큐리티 모니터 (202)는 SB1 리드 (251)의 논리 1의 값을 검지하고 그에 따라 논리 1의 값을 이네이블 리드 (253)로 공급한다. 데이터 버스 실렉터 (203)는, 모드 버스 (257)를 검사하여, 상기 집적 회로가 현재 통상의 동작 모드에 있는지 여부를 정하고, SBl 리드 (251) 및 이네이블 리드 (253) 각각에 존재하는 논리 1의 값에 따라, 그리고 SB0 리드 (252) 상에 존재하는 논리 0의 값에 따라, 데이터 버스 (250-D) 상에 존재하는 데이터를, 스테이터스 및 타이밍 버스 (254) 상에 존재하는 신호 값에 따라 지시되는 경우, 변화시키지 않은 채로 런 타임 데이터 버스 (250-F)로 공급한다.
형태 비트 (SB1)가 논리 값 1을 지니고 형태 비트 (SB0)가 논리 값 0을 지니는 경우, OCEPROM (201-2)의 프로그래밍 또는 판독을 주로 의도하는 동작 모드에 있어서 상기 내용이 공개되는 것을 방지하기 위하여 어떤 특별한 구성도 주어지지 않는다. 이러한 동작 모드는, 앞에서 통상의 동작 모드에 대한 변형예로서 설명하고 있다. 이러한 상황 하에 있어서, OCEPROM (201-2) 내에 포함된 데이터는, 어드레스 버스 (250-A) 상에 적당한 어드레스 값을 공급함으로써 액세스 가능하다. 어드레스 모니터 (205)는, 그것이 버스 (250-A) 상에서 수신하는 어드레스를 변화시키지 않은 채로 버스 (250-B)에 공급한다. 이러한 어드레스 값이 그 전의 어드레스 값과 동일하지 않을 경우, 어드레스 모니터 (205)는 새로운 어드레스 리드 (255) 상에 짧게 논리 0 펄스를 공급한다. 암호 제어 논리 (204)는, SB1 리드 (251) 의 논리 1의 값 및 SB0 리드 (252)의 논리 0의 값을 검지하고, 그에 따라 키 판독 스트로브 리드 (256) 상에 논리 0의 값을 공급함과 동시에 출력 스트로브 리드 (259) 상에 논리 0의 값을 공급한다. 제로 회로 (206)는, 키 판독 스트로브 (256)의 논리 0의 값을 검지하고, 그에 따라 그것이 버스 (250-B)로부터 수신하는 어드레스 비트 A (2, 3, 4)를 각각 버스 (250-C)의 비트 A (2, 3, 4)로 변화시키지 않은 채로 공급한다. 새로운 어드레스 리드 (255)의 짧은 논리 0 펄스에 응답하여, OCEPROM (201-2)은, 어드레스 버스 (250-B) 및 (250-C) 상에 존재하는 어드레스에 따라서, 데이터 버스 (250-D)로 데이터를 공급한다. 모드 버스 (257) 상에 존재하는 신호 값에 의해 결정되는 바와 같이, 데이터 버스 (250-D) 상의 데이터는, 다음과 같이, 데이터 버스 (250-E) 또는 데이터 버스 (250-F) 중 단지 하나에만 공급할 수 있다. 암호 회로 (207) 는 출력 스트로브 리드 (259) 의 논리 0의 값 및 형태 비트 SB1 리드 (251)의 논리 1의 값을 검지하고, 모드 버스 (257) 상의 신호 값이 적당한 경우, 버스 (250-D)로부터의 데이터를 변화시키지 않은 채로, 버스 (250-E)로 공급한다.
런 타임 시큐리티 모니터 (202)는, SB1 리드 (251)의 논리 1의 값을 검지하고 그에 따라 논리 1의 값을 이네이블 리드 (253)로 공급한다. 데이터 버스 실렉터 (203)는, SB1 리드 (251) 의 논리 1의 값, SB0 리드(252)의 논리 0의 값 및 이네이블 리드 (253)의 논리 1의 값을 검지하고, 모드 버스(257)상의 신호 값이 적당한 경우, 버스 (250-D)로부터의 데이터를, 스테이터스 및 타이밍 버스(254) 상에 존재하는 신호값에 따라 지시되는 경우, 버스(250-D)로부터의 데이터를 변화시키지 않은 채 버스 (250-F)로 공급한다.
형태 비트 (SB1)가 논리 값 1을 지니고 형태 비트 (SB0)가 논리 값 0을 지니는 경우, 암호 제어 논리 (204)는, PGM 리드 (262) 상의 값과 관계없이,opgm 리드 (263) 상에 논리 0 펄스를 공급하지 않고, OCEPROM (201-2)의 프로그래밍을 방지 한다.
형태 비트 (SB1)가 논리 값 0을 지니고 형태 비트 (SB0)가 논리 값 1을 지니는 경우, OCEPROM (201-2)의 내용이 허가 없이 공개되는 것을 방지하기 위하여 특별한 구성이 통상의 동작 모드에 있어서 강제된다. (SB1)의 논리 0의 값에 따라, 런 타임 시큐리티 모니터 (202)는, 각각의 opcode 페취 소오스 (발신원)을 기록하기 위하여, 스테이터스 및 타이밍 버스 (254) 상의 신호 값을 검사한다. 특정의 opcode가 OCEPROM (201-2)으로부터 페취되는 경우, 런 타임 시큐리티 모니터 (202)는, 그러한 opcode가 실행을 개시하자마자 논리 1의 값을 이네이블 리드 (253) 상에 공급하고, 그럼으로써 데이터 버스 실렉터 (203)로 하여금, opcode의 실행을 위하여 필요에 따라, 데이터 버스 (250-D)로부터 operand 데이터를 버스 (250-F)로 전송하도록 한다. 특정의 opcode가 NOCEPROM으로부터 페취되는 경우, 런 타임 시큐리티 모니터 (202)는 상기 opcode가 실행되는 동안 논리 1의 값을 이네이블 리드 (253) 상에 공급하지 않게 되고, 그럼으로써 데이터 버스 실렉터 (203)가 임의의 데이터를 버스 (250-D)로부터 버스 (250-F)로 전송 하는 것을 방지한다. 이러한 방법으로, OCEPROM (201-2)으로의 판독 액세스는, NOCEPROM으로부터 실행되는 임의의 소프트웨어에 대하여 허용되지 않는 상태로 된다.
형태 비트 (SB1)의 값이 논리 0 이고 형태 비트 (SB0)의 값이 논리 1인 경우, OCEPROM (201-2)의 내용에 대한 프로그래밍 (기록) 또는 판독을 위하여 주로 의도되는 동작 모드에 있어서 상기 내용이 공개되는 것을 제한하기 위하여 특별한 구성을 강제한다. 이러한 동작 모드는, 통상의 동작 모드에 대한 변형예로서 앞에서 설명하고 있다. 이러한 상황하에 있어서, OCEPROM (201-2) 내의 위치에 대한 검증이 허용되고 그와 같은 위치의 내용은 공개되기 전에 암호화된다. 검증을 실행하기 위하여, 어드레스 버스 (250-A) 상에 어드레스가 제공된다.
이러한 어드레스가 그 전의 어드레스와 동일하지 않는 경우, 어드레스 모니터 (205)는 새로운 어드레스 리드 (255) 상에 논리 값 0의 펄스를 짧게 공급한다. 이러한 펄스는 암호 제어 논리 (204)를 초기화하고, 그것으로 하여금 아래의 출력 값 : 즉, 논리 값 0을 지니는 키 판독 스트로브 리드 (256), 논리 값 1을 지니는 데이터 래치 스트로브 리드 (258), 논리 값 0을 지니는 출력 스트로브 리드 (259), 논리 값 1을 지니는 nstart 판독 리드 (261)를 발생시킨다.
어드레스 모니터 (205)는, 그것이 버스 (205-A) 상에서 수신하는 어드레스를 변화시키지 않은 채로 버스 (250-B)로 공급한다. 키 판독 스트로브 (256)의 값이 현재 논리 0 이기 때문에, 제로 회로 (206)는, 어드레스 비트 A (2, 3, 4)에 관하여 전혀 영향을 미치지 않으며, 이러한 비트를 변화시키지 않은 채로 버스 (250-C)에 공급한다. 새로운 어드레스 리드 (255) 상의 논리 0 펄스에 응답하여, 버스 (250-B) 및 (250-C)로부터 구성되는 어드레스에 따라서, OCEPROM (201-2)은 버스 (250-D)로 데이터를 발생시킨다. 이러한 데이터가 그 수신지로 전파하는 시간 후에,OCEPROM (201-2)은 데이터 전파 리드 (260) 상에 논리 1의 값을 발생시킨다.
이것은, 암호 제어 논리 (204)로 하여금 데이터 래치 스트로브 리드 (258) 상에 논리 0의 값을 발생시키고, 그것은 버스 (250-D) 상에 존재하는 데이터를 데이터 래치 (208)에 의해 래치 (유지)시킨다. 그 후 즉시, 암호 제어 논리 (204)는,OCEPROM (201-2)으로부터 암호 키 바이트를 판독하기 위하여 키 판독 스트로브 리드 (256) 상에 논리 값 1을 발생시킨다. 제로 회로 (206)는 키 판독 스트로브 리드 (256) 상의 논리 값 1을 검지하고, 그에 따라 어드레스 버스 (250-C)의 3개 비트 각각의 위에 논리 값 0을 발생시킨다. 그 후 즉시, 암호 제어 논리 (204)는 nstart 판독 리드 (261) 상에 짧은 논리 0 펄스를 발생시킨다. 이것은, OCEPROM (201-2)으로 하여금 데이터 전파 리드 (260) 상에 논리 값 0을 발생시키고, 현재 논리 값 0을 지니는 버스 (250-B) 및 버스 (250-C)로부터 구성되는 어드레스에 따라 데이터 버스 (250-D)로 데이터를 발생시킨다. 이러한 데이터가 그 수신지에 전파하는 시간이 경과한 후, 그리고 암호 회로 (207)가 데이터 래치 (208) 내에 저장되는 데이터를 암호화하고 버스 (261) 상에 버스 (250-D) 상의 암호 키 값을 공급하면, OCEPROM (201-2)은 데이터 전파 리드 (260) 상에 논리 1의 값을 발생시킨다. 그 후 즉시, 암호 제어 논리 (204)는 출력 스트로브 (259)상에 논리 1의 값을 발생시키고, 그것은 암호 회로 (207)로 하여금 데이터 버스 (250-E) 상에 암호화 데이터 값을 발생시킨다. 모드 버스 (257)가 적당한 값인 경우, 버스 (250-E) 상의 암호화 데이터 값은, 실렉터 (203)가 스테이터스 및 타이밍 버스 (254) 상의 신호 값에 따라서 그와 같이 지시되는 경우, 실렉터 (203)를 통하여 런 타임 데이터 버스 (250-F)로 공급할 수 있다. 상기 암호 프로세스 기간 중의 임의의 시간에 있어서, 버스 (250-A) 상의 어드레스 값이 변화하게 되면, 어드레스 모니터 (205)는 새로운 어드레스 리드 (255) 상에 논리 1의 펄스를 짧게 발생시키고, 암호 제어 논리 (204)로 하여금 암호화 프로세스를 정지시켜서 새로운 어드레스 값을 새롭게 개시하게 한다. 이 경우에, 정지된 암호화 프로세스로부터의 데이터는 어느 것도 버스 (250-E)로 공급할 수 없고, 그에 따라 의도한 레벨의 시큐리티를 유지한다. 상기 암호화 프로세스가 충분한 시간 주기 동안 버스 (250-A) 상에 일정한 어드레스 값을 유지함으로써 완료하도록 작동이 허용되는 경우, 버스 (250-A) 상에 적당한 어드레스 값을 공급함으로써, 부가적인 암호화 데이터 바이트를 요구할 수 있다.
형태 비트 (SB1)가 논리 값 0을 지니고 형태 비트 (SB0)가 논리 값 1을 지니는 경우, 암호 제어 논리 (204)는 PGM 리드 (262) 상의 값에 무관하게, opgm 리드 (263) 상의 논리 0 펄스를 공급하지 않고, 실효적으로 OCEPROM (201-2)의 프로그래밍, 즉 기록을 방지한다.
형태 비트 SB1 리드 (251)가 논리 값 0을 지니고 형태 비트 SB0 리드 (252)가 논리 값 0을 지니는 경우, OCEPROM (201-2)의 내용이 허가 없이 공개 되는 것을 방지하기 위하여 통상의 동작 모드에 있어서 특별한 구성이 강제적으로 주어진다. SB1 리드 (251)의 논리 0의 값에 따라, 런 타임 시큐리티 모니터 (202)는, 각각의 opcode 페취 소오스, 즉 발신원을 기록하기 위하여, 스테이터스 및 타이밍 버스 (254) 상의 신호 값을 검사한다. 특정의 opcode가 OCEPROM (201-2)으로부터 페취되는 경우, 런 타임 시큐리티 모니터 (202)는, opcode가 실행을 개시하자마자 이네이블 리드 (253) 상의 논리 1의 값을 공급하고, 그 때 데이터 버스 실렉터 (203)는, 상기 opcode의 실행에 대하여, 필요에 따라, 데이터 버스 (250-D)로부터 버스 (250-F)로 오퍼랜드 데이터를 전송할 수 있다. 특정의 opcode가 NOCEPROM으로부터 페취되는 경우, 런 타임 시큐리티 모니터 (202)는, 상기 opcode가 실행되는 동안 이네이블 리드 (253) 상에 논리 1의 값을 공급 하지 않고, 그에 따라 데이터 버스 실렉터 (203)가 버스 (250-D)로부터 버스 (250-F)로 임의의 데이터를 전송하는 것을 방지한다. 이러한 방법으로, OCEPROM (201-2)으로의 판독 액세스는, NOCEPROM으로부터 실행되는 임의의 소프트웨어에 대해서도 허용하지 않게 된다.
형태 비트 (SB1)의 값이 논리 0 이고 형태 비트 (SB0)의 값이 논리 0 인 경우, OCEPROM (201-2) 내의 위치에 대한 검증 (판독)은, 상기 내용의 프로그래밍 또는 판독을 위해 주로 의도되는 동작 모드에서 허용되지 않는다. 따라서,암호 제어 논리 (204)는, 출력 스트로브 리드 (259) 상에 논리 값 1을 발생시키지 않고, 암호 회로 (207)는 데이터를 데이터 버스 (250-D)로부터 데이터 버스 (250-E)로 전송하지 않는다. 따라서, 실렉터 (203)는, 데이터 버스 (250-D) 상에 존재하는 데이터를 런 타임 데이터 버스 (250-F)로 공급할 수 없게 한다
형태 비트 (SB1)가 논리 값 0을 지니고 형태 비트 (SB0)가 논리 값 0을 지니는 경우, 암호 제어 논리 (204)는, PGM 리드 (262) 상의 값과 무관하게 OPGM 리드 (263) 상에 논리 0 펄스를 제공하지 않고, 실효적으로 OCEPROM(201-2)의 프로그래밍, 즉 기록을 방지한다.
선행 기술과 비교하여 흥미있는 이점은, 데이터 암호화 프로세스에 대하여 필요한 제3도의 실시예의 회로 및 구성의 정도가 얼마만큼 잠재적인 침입자로부터 분리시킬 수 있는가이다. 선행 기술의 경우, 집적 회로 패키지 및 상기 회로의 물리적인 크기는, 암호 방법을 우회적으로 알지 못하게 하는 것과 관련하여 그 곤란성의 레벨을 현저하게 증가시키도록 작용한다. 뿐만 아니라, 제3도의 암호 구성에 의해 사용되는 신호는 단지 2 개만이, 집적 회로 패키지의 외부로부터 용이하게 제어할 수 있을 뿐이다. 이러한 신호는, (1) 어드레스 버스 (250-A), (2) 암호 회로를 동작시키는데 필요한 DC 전원이다. 상기한 바와 같이,어드레스 버스 (250-A)의 값에 있어서 변화는, 암호 제어 논리 (204)로 하여금 재초기화시키고, 실효적으로 현재의 데이터 바이트의 암호화를 정지시키며, 새로운 어드레스 값에서 새롭게 개시한다. 이러한 회로를 동작시키는데 필요한 DC전원 신호에 있어서 변화는, 그것으로 하여금 보다 고속 또는 보다 저속의 어느 것으로 동작하게 한다. 그러나, 이러한 상황하에서, 집적 회로 패키지 내에 포함된 모든 회로는, 동일한 범위에 이르기까지 속도가 증가 또는 감소한다. 따라서,암호 제어 논리 (204)를 OCEPROM (201-2) 보다 빠르거나 느리게 동작하는 것 을 일관성 있게 하는 것은 불가능하다. 이것은, 본 발명의 암호 메커니즘의 완전성을 유지하는데 기여한다. 암호 회로를 동작시키기 위하여 사용되는 그 외 모든 신호는, 집적 회로 패키지 내에서 파생된다.
특히 흥미 있는 점은, 실시예에 있어서, 암호화를 실시하는 방법에 영향을 주기 위하여 사용하는 모든 외부적으로 제어 가능한 클록, 타이밍 또는 동기 신호를 제거한 것이다. 이러한 제거를 위하여, 암호 제어 논리 (204)는, 비동기 시퀀셜 회로 설계의 현재의 프랙티스에 따라 구성한다. 이러한 실시예에 있어서, 특히 흥미 있는 점은, 암호 제어 논리 (204) 를 재초기화시키고, OCEPROM(201-2)으로 하여금 데이터 버스 (250-D) 상에 새로운 데이터를 발생시키기 위하여 신호 새로운 어드레스 (255; signal new address)를 사용한다는 것이다. 주의할 것은, 신호 새로운 어드레스 (255)는 OCEPROM (201-2)에 대한 이네이블 신호가 아니라, 그것은 단지 새로운 어드레스 값이 제공되었다는 것을 나타내는 것에 불과하다는 것이다. 여기에서 선택된 방법으로 이러한 신호를 사용하는 것은, 어떤 침입자가 요구되는 데이터 바이트를 암호화하기 위하여 선택되는 키 값에 관한 제어를 실시하는 것을 방지한다.
이것은, 암호 제어 논리 (204)가 OCEPROM (201-2)에 지시하여 암호 키 값을 발생시키는 바와 같이, 외부적으로 공급된 어드레스를 변화시킴으로써 그 이전에 실시할 수 있다. 이러한 실시예에서 또한 흥미 있는 점은, OCEPROM (201-2)에 의해 발생하는 데이터 전파 리드 (260)를 사용한다는 것이다. 데이터 전파 신호는, OCEPROM (201-2)으로부터 요구되는 데이터가 제공되고, 주어진 신호 경로를 따라 그 수신지에 전파하기 위하여 충분한 시간 간격을 지닌다는 것을 나타낸다. 이러한 신호를 사용함으로써, 타이밍 또는 동기 신호에 관한 외부적인 의존성을 제거할 수 있다.
이러한 실시예에서 또한 흥미 있는 점은, 신호 nstart 판독 (리드(261)상)를 사용한다는 것으로, 그것은, 암호 제어 논리 (204)가 OCEPROM (201-2)에 지시하여 암호 키 값을 발생시킬 수 있게 한다. 이러한 3 개의 신호는, 관련하여 사용되고, 단일의 집적 회로 패키지 내에서 암호화 프로세스를 제어하는 신규한 수단을 제공한다.
이러한 신호의 어떤 것도 집적 회로 패키지의 외부로부터 직접적으로 제어할 수 없고, 그것들을 일체적으로 사용함으로써, 이러함 암호 메커니즘의 취약성을 현저하게 감소시킨다.
[암호화 검증의 적용 (Application of Encrypted Verification)]
본 발명에 따라 구성된 집적 회로가 암호화 검증을 실시하도록 구성되는 경우, OCEPROM으로부터 요구되는 데이터는 공개되기 전에 암호화된다. 요구되는 데이터 바이트의 어드레스는 그 요구자에 의해 주어진다.
본 발명에 따르면, 암호화 방법은, 암호키로서 OCEPROM 내에 저장되는 사용자 코드의 바이트를 사용하는데, 이 때 다른 별개의 암호 키를 저장하고 사용할 것을 필요로 하지 않는다.
공개 전에 요구되는 데이터 바이트를 암호화하기 위하여, 온-칩 회로는 다음과 같은 프로세스를 제어한다. 요구되는 데이터 바이트가 일시적인 위치, 즉 "데이터 레지스터" 내에 페취되고 저장된다. 상기 요구자에 의해 제공된 어드레스는, 어드레스 비트 (A2, A3, A4)를 강제적으로 제로로 하는 것에 의해 변경된다. 이러한 비트는, 어드레스 비트 (Ao)에서 개시하는 경우, 어드레스 필드의 최소의 현저한 단부 (the least significant end) 로부터 카운트함으로써 식별된다. 새롭게 형성된 어드레스는, "암호 키 바이트"로 사용되기 위하여 OCEPROM으로부터 다른 바이트를 페취하기 위하여 사용된다. 암호 키 바이트는, 데이터 레지스터 내에 저장된 바이트와 비트와 같이 XNOR 처리된다. 이것은, 암호 키 바이트의 비트 (Ko)가 데이터 레지스터의 비트 (Do)와 XNOR 처리되고, 상기 키 바이트의 비트 (K1)가 데이터 레지스터의 비트 (D1)와 XNOR 처리되며, 이하 마찬가지의 방식으로 처리가 행해지는 것을 의미한다. 그 결과 얻어지는 값은, 요구되는 데이터 바이트의 암호화한 값으로서 공개된다.
이러한 암호 기술의 실시예에 대한 보기를 표 4를 참조하여 아래에 설명한다. OCEPROM으로부터 요구되는 데이터 바이트는 어드레스 (COFF hex)및 데이터 값 (AC hex)을 지닌다고 가정한다. 요구되는 데이터 바이트가 페취되고 데이터 레지스터 내에 저장된다. 그런 다음, 상기 어드레스는 (COE3 hex)의 값으로 변환된다. 이러한 어드레스에 위치하는 바이트는 페취되고 데이터 레지스터 바이트 내에 저장되는 데이터와 비트와 같이 XNOR 처리된다.
어드레스 (COE3 hex)에 있는 바이트는 (8B hex)의 값을 지닌다고 가정한다. 그 결과 얻어지는 암호화된 값은 (D8 hex)이다. 홍미 있는 점은, 본 발명에 따르면, 암호화 검증 동작 모드에 있어서, 키 바이트는 권한 없는 사용자에 의해 검지될 수 없다는 것이다. 왜냐하면, 각각의 키 바이트 (key byte)는 그것 자체를 암호화하기 위하여 사용되고, 그 결과 암호화된 출력 (encrypted output)은 각 비트에 대하여 논리 1을 지니기 때문이다. 이것은, 적대적인 (hostile) 프로그램에 대하여 본질적으로 공지인 어드레스 데이터를, 암호 키로 사용하는 종래 방법과 비교하여 현저한 이점을 준다는 것은 분명하다.
[표 4]
예컨대, 전부 1, 전부 0, 또는 1과 0의 조합 등과 같은 어드레스 비트의 상이한 조합을 선택된 값으로 강제함으로써, 온-칩 메모리 내에 저장되는 정보를 암호 키로서 선택하는 임의의 바람직한 방법을 사용할 수 있음은 당연하다. 다른 방법으로, 선택된 조의 어드레스 비트를, 판독되어야 하는 어드레스 위치 내에 수용되는 선택된 비트와 그것을 논리적 (logical) 또는 연산 처리 (arithmetic operation)를 함으로써, 변경시킬 수 있다. 마찬가지로, 암호 키를 사용하여 데이터를 암호화하는 임의의 바람직한 방법은, 예컨대 데이터 바이트 및 키 바이트를 사용하는 연산 및/또는 논리 기능을 실시할 수 있다. 또한, 이와 같은 암호화는,모든 비트를 사용하거나 또는 다른 방법으로서, 1 개 또는 그 이상의 비트를 암호화하지 않은 채로 잔존시킬 수 있다. 바람직한 바에 따르면, 어떤 비트를 암호화시킬 것인가에 대한 선택은, 예컨대, 바람직한 데이터 바이트 내에서 얻어지는 데이터 및/또는 암호 키의 값에 의존하여 시간에 대하여 변화할 수 있다. 또한,다른 실시예에 있어서, 키 바이트 비트는, 데이터 바이트를 암호화하기 위하여 그것들을 사용하기 전에 그 순서를 변화시킴으로써, 기본적으로 스크램블 (scramble)된다.
[결정론적 결함 분리 (Deterministic Fault Isolation)]
제4도를 참조하여, 실시예에 있어서 선택된 특정한 암호화 방법이, 어떻게 그 보호되는 메모리 세그먼트 내에 포함된 정보를 공개하지 않고, 보호되는 메모리 세그먼트 내에 있어서 비트 결함의 결정론적 분리 (deterministic isolation of bit fault)를 행할 수 있는지에 대하여 설명한다. 제4도는, 암호 키 바이트를 데이터 바이트와 쌍을 이루게 하는 실시예를 상세하게 도시한다. 암호화된 메모리 출력을, 일반적으로, "테스트 벡터 (test vector)", 암호화된 데이터의 신뢰할 수 있는 스트림 (trusted stream)에 대하여 비교한다. 이러한 2 개의 데이터 바이트 스트림 사이의 차이는, 테스트 벡터 또는 메모리로부터 덤프된 암호화 데이터의 어느 것에 결함이 존재하는지를 나타낸다. 이와 같은 차이가 검지되고, 테스트 벡터가 정확하다는 것이 증명되는 경우, 암호화 데이터 스트림이 에러 상태에 있음을 추론한다. 여기에서, 바이트 결함 (byte fault)은, 그 바이트 내의 1 개 또는 그 이상의 비트가 잘못된 2진 값 (그 각각을 비트 결함 (bit fault)이라고 함)이 존재하는 상태라고 정의한다. 각각의 키 바이트는, 7 개의 데이터 바이트 및 그 자체를 인코드한다. 특정의 32 바이트 세그먼트의 경우, 설명을 위하여 키 바이트 (KB1) 및 그와 관련되는 데이터 바이트 (DB11-DB17)를 선택할 수 있다.
특정의 바이트 스트림에서 발생하는 고장 모드 (failure mode)는 일반적으로 아래 3 가지 중 어느 하나로 분류된다.
(1) 1조의 바이트 {DB11, … , DB47}로부터의 데이터 바이트에 있어서 단일 비트 에러
(2) 1조의 바이트{KB1, KB2, KB3, KB4}로부터의 키 바이트에 있어서 단일 비트 에러
(3) 키 및 데이터 바이트가 선택된 암호 패턴에 의해 관련되고, 에러에 있어서 2 개의 비트가 그 각각의 바이트 내의 동일한 상대적인 위치를 지니게 되는 타입 (1)의 에러 및 (2)의 에러를 포함하는 2 중 비트 에러이다. 그 일예를 다음의 표 5에 도시한다.
[표 5]
표시한 비트는 2중 비트 에러 (double bit error)를 구성한다.
데이터 바이트 (고장 모드 1)에 있어서 단일 비트 에러는, 간단하게 검지할 수 있다. 왜냐하면, 그것들은, 테스트 벡터에 있어서 그것의 대향하는 것 (counterpart)과 같지 않기 때문이다. 표 6에 도시하는 바와 같이, 암호 (XNOR)에 대하여 선택된 기능을 검토하면, 처음에, 키 바이트에 있어서 단일 비트 에러를 검지할 수 없는 것으로 나타날 수 있다. (왜냐하면, 각각의 키 바이트는, 그것 자체를 암호화하기 위하여 사용되고, 그 결과는 항상 "1"이기 때문이다. )
[표 6]
그러나, 각각의 키 바이트는 또한 7 개의 데이터 바이트를 암호화한다는것을 주의해야 한다. 단일한 키 비트 에러는, 이러한 7 개의 데이터 바이트 각각에 있어서 데이터 비트 에러로서 나타난다. 이러한 7 개의 데이터 비트 에러 각각이 그 각각의 바이트에 있어서 동일한 상대적 비트 위치 (the same relative bit position)를 지닌다고 하는 사실에 의해 독특하게 식별된다.
XOR/XNOR을 사용하는 인크립션 메커니즘에 있어서 2 중 비트 에러 (고장 모드 3)의 검지에 관한 전통적인 문제는, 특정의 키 바이트가 단지 하나의 데이터 바이트만을 인코드한다는 점이다. 이것은, 고장 모드 3을 예측할 수 없다는 것을 의미한다. 본 발명의 암호 구성의 경우, 고장 모드 3은 특정의 고장난 키 바이트/비트와 관련하는 6 개의 나머지 데이터 바이트 각각에 있어서 단일의 비트 에러로서 나타난다. 일예로서, 아래의 암호화한 메모리 데이터에 대한 테스트 벡터의 비교를 참조한다.
정확한 암호화된 데이터 테스트 벡터는, 2중 비트 에러를 검지하기 위하여, 암호화된 데이터 스트림과 비교된다.
이러한 암호화 검증 (ENCRYPTED VERIFICATION)을 위한 어프로치는, 보호되는 정보를 그것 자체의 암호 키 (ENCRYPTION KEY)로서 사용할 수 있게 하고, 그에 따라 사용자가, 다른 조의 암호 키 바이트를 제공, 프로그램 또는 안전 대책을 마련하도록 하는 것을 필요로 하지 않는다. 그것은, 결정론적인 결함 분리를 행하는 것을 도와서, 필요한 경우, 정확한 에러 비트를 발견할 수 있게 한다. 상기 데이터는 그 자체의 암호 키로서 작용하여, 어떠한 부가적인 회로 또는 집적 회로 표면 영역도, 하나 또는 그 이상의 시큐리티 키를 유지하거나 또는 스타트 값으로부터 다양한 암호 키를 제공하기 위하여 의사 랜덤 카운트를 주는 것을 목적으로 해서는 필요로 하지 않는다. 이러한 어프로치는, 예컨대 필드에서의 진단 등과 같은 검증 목적을 위하여 그 프로그램에 대하여 암호화한 것을 사용자가 유지할 수 있게 하는데, 그것은 본질적으로, 암호화되지 않은 것을 유지하는 것보다 한층 안전하다. 이러한 어프로치는, "우아하게 열화 (fails gracefully)"한다. (즉, "키" 바이트 중 어느 하나가 발견되면, 보호되는 데이터의 단지 8 바이트만이 공개될 뿐이다.) 이러한 8 바이트는, 인접하지 않기 때문에, 거의 완전한 컴퓨터 명령을 공개하지 않는다.
본 명세서에서 기술하는 메모리 보호 아키텍쳐를 사용함으로써, 시스템 설계의 유연성을 유지할 수 있다. 왜냐하면, 그것은, 컴퓨터 프로세스가 보호되는 메모리의 시큐리티, 즉 안정성에 대하여 타협하는 것 없이, 내부 메모리 (예컨대, 마이크로 컨트롤러 상에 설치되는 것) 또는 외부 메모리의 어느 것으로부터 실행 할 수 있게 하기 때문이다. 본 명세서에서 기술하는 특정의 회로를 실현함으로써, 이러한 메모리 보호 아키텍쳐의 취약성을 현저하게 감소시킬 수 있다. 왜냐 하면, 어떠한 외부적으로 파생되는 동기 신호도 암호화 프로세스를 위하여 필요하지 않기 때문이다.
본 명세서에서 기술하는 특정한 예는, 보호되는 메모리 내용을, 암호화 검증을 위하여 32 개의 바이트 세그먼트로 실효적으로 구분한다. 이러한 32 개의 바이트 세그먼트 각각은, 제5도에 도시하는 바와 같이, 상기 세그먼트의 "베이스"에 위치하는 4 바이트 테이블에 의해 암호화된다. 출력 데이터의 각 32 바이트 부분은 키와 독립적이다.
본 명세서에서 인용하는 모든 간행물은 참고 자료로 기재하는 것으로, 각각의 개별적인 간행물 또는 특허 출원은 참고 자료로 기재하기 위하여 특정하여 표시하고 개별적으로 나타내고 있다.
이상, 본 발명의 구체적인 실시 태양에 대하여 상세하게 설명하였으나, 본 발명은, 이러한 구체적인 예에만 한정되는 것이 아니라, 본 발명의 기술적 범위를 일탈하지 않는 범위에서 여러 가지 변형이 가능함은 물론이다.

Claims (20)

  1. 데이터를 암호화하는 방법에 있어서, 상기 방법은 : 암호화되어야 하는 데이터를 포함하는 메모리 수단 내의 위치를 획정하는 데이터 어드레스를 수신하는 단계 ; 상기 데이터 어드레스를 기초로 하여 키 어드레스를 제공하고, 상기 키 어드레스는 그 내용이 암호 키로서 작용하는 상기 메모리 수단 내의 위치를 획정하는 단계 ; 및 상기 암호 키를 사용하여 상기 데이터를 암호화하고, 그럼으로써 암호화 데이터를 공급하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 키 어드레스를 제공하는 단계는, 상기 데이터 어드레스를 변경하기 위하여 상기 키 어드레스를 제공하는 단계를 포함하는 방법.
  3. 제2항에 있어서, 상기 데이터 어드레스를 변경하여 상기 키 어드레스를 제공하는 단계는, 하나 또는 그 이상의 비트 또는 상기 데이터 어드레스를 예정된 값으로 설정하는 단계를 포함하는 방법.
  4. 제2항에 있어서, 상기 데이터 어드레스를 변경하여 상기 키 어드레스를 제공하는 단계는, 상기 데이터 어드레스의 하나 또는 그 이상의 비트 기능을 실행하는 단계를 포함하는 것으로, 여기에서 상기 기능은 논리 기능 및 연산 기능으로 구성되는 그룹에서 선택되는 방법.
  5. 제1항에 있어서, 상기 암호화 단계는, 상기 데이터 및 상기 암호 키의 하나 또는 그 이상의 비트를 논리적으로 조합하는 단계를 포함하는 방법.
  6. 제1항에 있어서, 상기 암호화 단계는, 상기 데이터 및 상기 암호 키의 하나 또는 그 이상의 비트를 연산적으로 조합하는 단계를 포함하는 방법.
  7. 데이터 장치에 있어서, 상기 장치는 : 데이터를 저장하는 메모리 수단 ; 상기 메모리 수단 내의 위치를 획정하는 데이터 어드레스를 수신하는 어드레스 버스 ; 상기 메모리 수단 내에 저장되는 데이터에 관련하는 데이터를, 상기 데이터 어드레스에 의해 획정되는 위치로 전송하는 데이터 버스 ; 상기 데이터 어드레스를 기초로하여 키 어드레스를 공급하는 수단으로서, 상기 키 어드레스는 상기 메모리 수단 내의 위치를 획정하고, 그 내용은 상기 어드레스에 관련하는 암호 키로서 작용하는 수단 ; 및 상기 데이터 버스 상에 암호화 데이터를 공급하기 위하여 상기 데이터를 상기 암호 키로서 암호화하는 수단을 포함하는 데이터 장치.
  8. 제7항에 있어서, 상기 데이터 장치는 집적 회로를 포함하고, 상기 암호화 수단은 상기 집적 회로의 외부에서 용이하게 사용할 수 없는 적어도 하나의 제어 신호에 응답하여 동작하는 데이터 장치.
  9. 제8항에 있어서, 상기 암호화 수단은 비동기적으로 동작하는 데이터 장치.
  10. 제7항에 있어서, 상기 키 어드레스를 공급하는 수단은, 상기 키 어드레스를 공급하기 위하여 상기 데이터 어드레스를 변경하는 수단을 포함하는 데이터 장치.
  11. 제10항에 있어서, 상기 키 어드레스는, 상기 데이터 어드레스의 하나 또는 그 이상의 비트를 예정된 값으로 설정함으로써 제공되는 데이터 장치.
  12. 제11항에 있어서, 상기 하나 또는 그 이상의 비트로서 작용하는 비트의 선택은 상이한 데이터 어드레스에 대하여 변화하는 데이터 장치.
  13. 제12항에 있어서, 상기 하나 또는 그 이상의 비트의 선택은 상기 데이터 및 상기 데이터 어드레스를 구성하는 비트로부터 선택되는 하나 또는 그 이상의 비트의 값에 의존하는 데이터 장치.
  14. 제10항에 있어서, 상기 키 어드레스는, 상기 데이터 어드레스의 하나 또는 그 이상의 비트 기능을 실행함으로써 제공되는 것으로, 여기에서 상기 기능은 논리 기능 및 연산 기능으로 구성되는 그룹에서 선택되는 데이터 장치.
  15. 제14항에 있어서, 상기 하나 또는 그 이상의 비트로서 작용하는 비트의 선택은, 상기 데이터 및 상기 데이터 어드레스를 구성하는 비트로부터 선택되는 하나 또는 그 이상의 비트의 값에 의존하는 데이터 장치.
  16. 제15항에 있어서, 상기 하나 또는 그 이상의 비트의 선택은 상기 데이터 및 상기 데이터 어드레스를 구성하는 비트로부터 선택되는 하나 또는 그 이상의 비트의 값에 의존하는 데이터 장치.
  17. 제7항에 있어서, 상기 암호화 수단은, 상기 데이터 및 상기 암호 키로 구성되는 비트로부터 선택되는 하나 또는 그 이상의 비트를 논리적으로 조합하는 수단을 포함하는 데이터 장치.
  18. 제17항에 있어서, 상기 하나 또는 그 이상의 비트의 선택은, 상기 데이터 및 상기 데이터 어드레스로 구성되는 비트로부터 선택되는 하나 또는 그 이상의 비트의 값에 의존하는 데이터 장치.
  19. 제7항에 있어서, 상기 암호화 수단은, 상기 데이터 및 상기 암호 키로 구성되는 비트로부터 선택되는 하나 또는 그 이상의 비트를 연산적으로 조합하는 수단을 포함하는 데이터 장치.
  20. 제19항에 있어서, 상기 하나 또는 그 이상의 선택은, 상기 데이터 및 상기 데이터 어드레스로 구성되는 비트로부터 선택된 하나 또는 그 이상의 비트의 값에 의존하는 데이터 장치.
KR1019910007090A 1990-05-03 1991-05-02 프로그램 코드를 보호용으로 사용되는 어드레스 정보 스트림의 암호화 KR100227875B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US518,117 1990-05-03
US07/518,117 US5058164A (en) 1990-05-03 1990-05-03 Encryption of streams of addressed information to be used for program code protection

Publications (2)

Publication Number Publication Date
KR910020560A KR910020560A (ko) 1991-12-20
KR100227875B1 true KR100227875B1 (ko) 1999-11-01

Family

ID=24062621

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019910007090A KR100227875B1 (ko) 1990-05-03 1991-05-02 프로그램 코드를 보호용으로 사용되는 어드레스 정보 스트림의 암호화

Country Status (5)

Country Link
US (1) US5058164A (ko)
EP (1) EP0455064B1 (ko)
JP (1) JPH04229346A (ko)
KR (1) KR100227875B1 (ko)
DE (1) DE69120596T2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100474526B1 (ko) * 2002-07-19 2005-03-10 매그나칩 반도체 유한회사 외부 프로그램 코드를 보호할 수 있는 컨트롤 시스템

Families Citing this family (149)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0432333B1 (en) * 1989-12-13 1996-02-14 International Business Machines Corporation Computer system security device
JPH03276345A (ja) * 1990-03-27 1991-12-06 Toshiba Corp マイクロコントローラ
JP2862030B2 (ja) * 1991-06-13 1999-02-24 三菱電機株式会社 暗号化方式
US6963859B2 (en) 1994-11-23 2005-11-08 Contentguard Holdings, Inc. Content rendering repository
JPH08263438A (ja) * 1994-11-23 1996-10-11 Xerox Corp ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法
US6865551B1 (en) 1994-11-23 2005-03-08 Contentguard Holdings, Inc. Removable content repositories
US7117180B1 (en) 1994-11-23 2006-10-03 Contentguard Holdings, Inc. System for controlling the use of digital works using removable content repositories
US5715403A (en) * 1994-11-23 1998-02-03 Xerox Corporation System for controlling the distribution and use of digital works having attached usage rights where the usage rights are defined by a usage rights grammar
US5634012A (en) * 1994-11-23 1997-05-27 Xerox Corporation System for controlling the distribution and use of digital works having a fee reporting mechanism
US5638443A (en) * 1994-11-23 1997-06-10 Xerox Corporation System for controlling the distribution and use of composite digital works
US5629980A (en) * 1994-11-23 1997-05-13 Xerox Corporation System for controlling the distribution and use of digital works
US5644636A (en) * 1994-12-30 1997-07-01 Xtec, Incorporated Method and apparatus for securing data stored in semiconductor memory cells
US5606615A (en) * 1995-05-16 1997-02-25 Lapointe; Brian K. Computer security system
US5917910A (en) * 1995-10-16 1999-06-29 Sony Corporation Encrypting method and apparatus, recording method, decrypting method and apparatus, and recording medium
US5812883A (en) * 1995-11-22 1998-09-22 Mitsubishi Chemical America, Inc. System for reading and storing formatting information after formatting a first storage medium and using the stored formatting information to format a second storage medium
EP0880840A4 (en) 1996-01-11 2002-10-23 Mrj Inc DEVICE FOR CONTROLLING ACCESS AND DISTRIBUTION OF DIGITAL PROPERTY
JP3747520B2 (ja) * 1996-01-30 2006-02-22 富士ゼロックス株式会社 情報処理装置及び情報処理方法
US5892826A (en) * 1996-01-30 1999-04-06 Motorola, Inc. Data processor with flexible data encryption
CA2173688C (en) * 1996-04-09 2000-01-18 Hideo Shimizu Encryption apparatus and method capable of controlling encryption process in accordance with an internal state
US6760779B1 (en) * 1996-07-08 2004-07-06 William K. Riceman Apparatus and method for high speed data communication
KR100201396B1 (ko) * 1996-07-20 1999-06-15 구본준 이피롬의 비화코드 해독 방지회로
FR2758898B1 (fr) * 1997-01-28 1999-03-05 Sagem Procede de preservation de l'integrite de donnees logiciel
US6233684B1 (en) 1997-02-28 2001-05-15 Contenaguard Holdings, Inc. System for controlling the distribution and use of rendered digital works through watermaking
KR100253328B1 (ko) * 1997-09-30 2000-05-01 김영환 메모리의 데이터 보호회로
US6345359B1 (en) * 1997-11-14 2002-02-05 Raytheon Company In-line decryption for protecting embedded software
US7068787B1 (en) 1998-10-23 2006-06-27 Contentguard Holdings, Inc. System and method for protection of digital works
US7286665B1 (en) 1999-04-06 2007-10-23 Contentguard Holdings, Inc. System and method for transferring the right to decode messages
US7356688B1 (en) 1999-04-06 2008-04-08 Contentguard Holdings, Inc. System and method for document distribution
US6937726B1 (en) 1999-04-06 2005-08-30 Contentguard Holdings, Inc. System and method for protecting data files by periodically refreshing a decryption key
US6859533B1 (en) 1999-04-06 2005-02-22 Contentguard Holdings, Inc. System and method for transferring the right to decode messages in a symmetric encoding scheme
US6289450B1 (en) * 1999-05-28 2001-09-11 Authentica, Inc. Information security architecture for encrypting documents for remote access while maintaining access control
JP4106156B2 (ja) * 1999-07-07 2008-06-25 理想科学工業株式会社 孔版印刷装置
GB9920502D0 (en) 1999-09-01 1999-11-03 Ncr Int Inc Portable terminal
US6885748B1 (en) 1999-10-23 2005-04-26 Contentguard Holdings, Inc. System and method for protection of digital works
US6741705B1 (en) * 2000-02-23 2004-05-25 Cisco Technology, Inc. System and method for securing voice mail messages
US8832852B2 (en) 2000-08-28 2014-09-09 Contentguard Holdings, Inc. Method and apparatus for dynamic protection of static and dynamic content
US7743259B2 (en) 2000-08-28 2010-06-22 Contentguard Holdings, Inc. System and method for digital rights management using a standard rendering engine
US6931545B1 (en) 2000-08-28 2005-08-16 Contentguard Holdings, Inc. Systems and methods for integrity certification and verification of content consumption environments
US7073199B1 (en) 2000-08-28 2006-07-04 Contentguard Holdings, Inc. Document distribution management method and apparatus using a standard rendering engine and a method and apparatus for controlling a standard rendering engine
JP2002105639A (ja) * 2000-09-25 2002-04-10 L'air Liquide Mocvd処理用の銅原料液及びその製造方法
US7343324B2 (en) 2000-11-03 2008-03-11 Contentguard Holdings Inc. Method, system, and computer readable medium for automatically publishing content
US6978376B2 (en) 2000-12-15 2005-12-20 Authentica, Inc. Information security architecture for encrypting documents for remote access while maintaining access control
US6912294B2 (en) 2000-12-29 2005-06-28 Contentguard Holdings, Inc. Multi-stage watermarking process and system
US8069116B2 (en) 2001-01-17 2011-11-29 Contentguard Holdings, Inc. System and method for supplying and managing usage rights associated with an item repository
US7206765B2 (en) 2001-01-17 2007-04-17 Contentguard Holdings, Inc. System and method for supplying and managing usage rights based on rules
CN101369299B (zh) 2001-01-17 2010-06-09 康坦夹德控股股份有限公司 管理数字内容使用权利的方法和装置
US7774279B2 (en) 2001-05-31 2010-08-10 Contentguard Holdings, Inc. Rights offering and granting
US6754642B2 (en) 2001-05-31 2004-06-22 Contentguard Holdings, Inc. Method and apparatus for dynamically assigning usage rights to digital works
US7028009B2 (en) * 2001-01-17 2006-04-11 Contentguardiholdings, Inc. Method and apparatus for distributing enforceable property rights
DE10101972A1 (de) * 2001-01-17 2002-07-25 Siemens Ag Vorrichtung mit einem Steuergerät und einem nicht-flüchtigen Speicher sowie Verfahren zum Betreiben einer solchen Vorrichtung
US7155011B2 (en) * 2001-03-13 2006-12-26 Victor Company Of Japan, Limited Encryption method, decryption method, and recording and reproducing apparatus
US7185205B2 (en) * 2001-03-26 2007-02-27 Galois Connections, Inc. Crypto-pointers for secure data storage
US7512986B2 (en) 2001-03-28 2009-03-31 Nds Limited Digital rights management system and method
US7725401B2 (en) 2001-05-31 2010-05-25 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US6895503B2 (en) 2001-05-31 2005-05-17 Contentguard Holdings, Inc. Method and apparatus for hierarchical assignment of rights to documents and documents having such rights
US8275716B2 (en) 2001-05-31 2012-09-25 Contentguard Holdings, Inc. Method and system for subscription digital rights management
US8001053B2 (en) 2001-05-31 2011-08-16 Contentguard Holdings, Inc. System and method for rights offering and granting using shared state variables
US6876984B2 (en) 2001-05-31 2005-04-05 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US8099364B2 (en) 2001-05-31 2012-01-17 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US7222104B2 (en) * 2001-05-31 2007-05-22 Contentguard Holdings, Inc. Method and apparatus for transferring usage rights and digital work having transferrable usage rights
US6973445B2 (en) * 2001-05-31 2005-12-06 Contentguard Holdings, Inc. Demarcated digital content and method for creating and processing demarcated digital works
US8275709B2 (en) 2001-05-31 2012-09-25 Contentguard Holdings, Inc. Digital rights management of content when content is a future live event
US7152046B2 (en) 2001-05-31 2006-12-19 Contentguard Holdings, Inc. Method and apparatus for tracking status of resource in a system for managing use of the resources
US6976009B2 (en) 2001-05-31 2005-12-13 Contentguard Holdings, Inc. Method and apparatus for assigning consequential rights to documents and documents having such rights
WO2002101494A2 (en) 2001-06-07 2002-12-19 Contentguard Holdings, Inc. Protected content distribution system
US7774280B2 (en) 2001-06-07 2010-08-10 Contentguard Holdings, Inc. System and method for managing transfer of rights using shared state variables
WO2002101490A2 (en) 2001-06-07 2002-12-19 Contentguard Holdings, Inc. Cryptographic trust zones in digital rights management
US20030140003A1 (en) * 2001-06-07 2003-07-24 Xin Wang Method and apparatus managing the transfer of rights
JP2003134106A (ja) * 2001-10-22 2003-05-09 Victor Co Of Japan Ltd 暗号化方法、復号化方法及び装置、並びに情報記録媒体
US10033700B2 (en) 2001-12-12 2018-07-24 Intellectual Ventures I Llc Dynamic evaluation of access rights
US7478418B2 (en) 2001-12-12 2009-01-13 Guardian Data Storage, Llc Guaranteed delivery of changes to security policies in a distributed system
US7380120B1 (en) 2001-12-12 2008-05-27 Guardian Data Storage, Llc Secured data format for access control
US7631184B2 (en) 2002-05-14 2009-12-08 Nicholas Ryan System and method for imposing security on copies of secured items
US7921450B1 (en) 2001-12-12 2011-04-05 Klimenty Vainstein Security system using indirect key generation from access rules and methods therefor
US8065713B1 (en) 2001-12-12 2011-11-22 Klimenty Vainstein System and method for providing multi-location access management to secured items
US7681034B1 (en) 2001-12-12 2010-03-16 Chang-Ping Lee Method and apparatus for securing electronic data
US10360545B2 (en) 2001-12-12 2019-07-23 Guardian Data Storage, Llc Method and apparatus for accessing secured electronic data off-line
US7260555B2 (en) 2001-12-12 2007-08-21 Guardian Data Storage, Llc Method and architecture for providing pervasive security to digital assets
US7783765B2 (en) 2001-12-12 2010-08-24 Hildebrand Hal S System and method for providing distributed access control to secured documents
US7565683B1 (en) 2001-12-12 2009-07-21 Weiqing Huang Method and system for implementing changes to security policies in a distributed security system
US7921288B1 (en) 2001-12-12 2011-04-05 Hildebrand Hal S System and method for providing different levels of key security for controlling access to secured items
US7562232B2 (en) 2001-12-12 2009-07-14 Patrick Zuili System and method for providing manageability to security information for secured items
US7178033B1 (en) 2001-12-12 2007-02-13 Pss Systems, Inc. Method and apparatus for securing digital assets
USRE41546E1 (en) 2001-12-12 2010-08-17 Klimenty Vainstein Method and system for managing security tiers
US8006280B1 (en) 2001-12-12 2011-08-23 Hildebrand Hal S Security system for generating keys from access rules in a decentralized manner and methods therefor
US6889210B1 (en) * 2001-12-12 2005-05-03 Pss Systems, Inc. Method and system for managing security tiers
US7921284B1 (en) 2001-12-12 2011-04-05 Gary Mark Kinghorn Method and system for protecting electronic data in enterprise environment
US7930756B1 (en) 2001-12-12 2011-04-19 Crocker Steven Toye Multi-level cryptographic transformations for securing digital assets
US7950066B1 (en) 2001-12-21 2011-05-24 Guardian Data Storage, Llc Method and system for restricting use of a clipboard application
US8176334B2 (en) 2002-09-30 2012-05-08 Guardian Data Storage, Llc Document security system that permits external users to gain access to secured files
US8613102B2 (en) 2004-03-30 2013-12-17 Intellectual Ventures I Llc Method and system for providing document retention using cryptography
US8051303B2 (en) * 2002-06-10 2011-11-01 Hewlett-Packard Development Company, L.P. Secure read and write access to configuration registers in computer devices
US7478235B2 (en) * 2002-06-28 2009-01-13 Microsoft Corporation Methods and systems for protecting data in USB systems
US6920566B2 (en) * 2002-07-12 2005-07-19 Phoenix Technologies Ltd. Secure system firmware by disabling read access to firmware ROM
US8171567B1 (en) 2002-09-04 2012-05-01 Tracer Detection Technology Corp. Authentication method and system
US7512810B1 (en) 2002-09-11 2009-03-31 Guardian Data Storage Llc Method and system for protecting encrypted files transmitted over a network
US7836310B1 (en) 2002-11-01 2010-11-16 Yevgeniy Gutnik Security system that uses indirect password-based encryption
US7890990B1 (en) 2002-12-20 2011-02-15 Klimenty Vainstein Security system with staging capabilities
US7577838B1 (en) 2002-12-20 2009-08-18 Alain Rossmann Hybrid systems for securing digital assets
JP4891521B2 (ja) * 2003-03-28 2012-03-07 三洋電機株式会社 データ入出力方法、およびその方法を利用可能な記憶装置およびホスト装置
US7257718B2 (en) 2003-05-12 2007-08-14 International Business Machines Corporation Cipher message assist instructions
US8707034B1 (en) 2003-05-30 2014-04-22 Intellectual Ventures I Llc Method and system for using remote headers to secure electronic files
US8104085B2 (en) * 2003-06-27 2012-01-24 Oracle America, Inc. Hybrid system implementing distinct and co-existing application execution environments and methods for implementing the same
US7730543B1 (en) 2003-06-30 2010-06-01 Satyajit Nath Method and system for enabling users of a group shared across multiple file security systems to access secured files
US7555558B1 (en) 2003-08-15 2009-06-30 Michael Frederick Kenrich Method and system for fault-tolerant transfer of files across a network
US8127366B2 (en) 2003-09-30 2012-02-28 Guardian Data Storage, Llc Method and apparatus for transitioning between states of security policies used to secure electronic documents
US7703140B2 (en) 2003-09-30 2010-04-20 Guardian Data Storage, Llc Method and system for securing digital assets using process-driven security policies
DE10345385B4 (de) * 2003-09-30 2005-10-06 Infineon Technologies Ag Entschlüsselung bzw. Verschlüsselung bei Schreibzugriffen auf einen Speicher
CA2537299C (en) 2004-02-05 2011-03-22 Research In Motion Limited On-chip storage, creation, and manipulation of an encryption key
EP2131315A3 (en) * 2004-03-12 2011-01-26 Ingenia Technology Limited Authenticity verification by large scale illumination
EP2081130B1 (en) 2004-03-12 2013-07-24 Ingenia Holdings Limited Methods and apparatuses for creating authenticatable printed articles and subsequently verifying them
US7707427B1 (en) 2004-07-19 2010-04-27 Michael Frederick Kenrich Multi-level file digests
GB2417074B (en) * 2004-08-13 2007-11-21 Ingenia Technology Ltd Authenticity verification methods,products and apparatuses
GB2417592B (en) 2004-08-13 2006-07-26 Ingenia Technology Ltd Authenticity verification of articles
US7458102B2 (en) * 2004-08-17 2008-11-25 Emc Corporation Information security architecture for remote access control using non-bidirectional protocols
US7734926B2 (en) * 2004-08-27 2010-06-08 Microsoft Corporation System and method for applying security to memory reads and writes
US7444523B2 (en) 2004-08-27 2008-10-28 Microsoft Corporation System and method for using address bits to signal security attributes of data in the address space
US7822993B2 (en) * 2004-08-27 2010-10-26 Microsoft Corporation System and method for using address bits to affect encryption
US7653802B2 (en) * 2004-08-27 2010-01-26 Microsoft Corporation System and method for using address lines to control memory usage
GB2419434A (en) * 2004-10-23 2006-04-26 Qinetiq Ltd Encrypting data on a computer's hard disk with a key derived from the contents of a memory
JP2008530663A (ja) * 2005-02-11 2008-08-07 ユニバーサル データ プロテクション コーポレーション マイクロプロセッサのデータセキュリティの方法およびシステム
RU2417448C2 (ru) * 2005-07-27 2011-04-27 Инджениа Холдингс Лимитед Верификация аутентичности
US8566607B2 (en) * 2005-08-26 2013-10-22 International Business Machines Corporation Cryptography methods and apparatus used with a processor
US20070067644A1 (en) * 2005-08-26 2007-03-22 International Business Machines Corporation Memory control unit implementing a rotating-key encryption algorithm
US20070050642A1 (en) * 2005-08-26 2007-03-01 International Business Machines Corporation Memory control unit with configurable memory encryption
JP4469783B2 (ja) 2005-11-28 2010-05-26 株式会社東芝 メモリ保護装置、メモリ保護システムおよびメモリ保護方法
WO2007072044A1 (en) 2005-12-23 2007-06-28 Ingenia Holdings (Uk) Limited Optical authentication
US9313027B2 (en) * 2005-12-29 2016-04-12 Proton World International N.V. Protection of a calculation performed by an integrated circuit
US7484060B2 (en) * 2006-04-27 2009-01-27 Blue Coat Systems, Inc. Systems and methods for protecting customer secrets during vendor troubleshooting
US8863230B1 (en) * 2006-06-09 2014-10-14 Xilinx, Inc. Methods of authenticating a programmable integrated circuit in combination with a non-volatile memory device
US7987358B1 (en) * 2006-06-09 2011-07-26 Xilinx, Inc. Methods of authenticating a user design in a programmable integrated circuit
US9251339B2 (en) * 2007-12-29 2016-02-02 International Business Machines Corporation Core dump privacy during application failure
GB2466311B (en) 2008-12-19 2010-11-03 Ingenia Holdings Self-calibration of a matching algorithm for determining authenticity
GB2466465B (en) 2008-12-19 2011-02-16 Ingenia Holdings Authentication
GB2476226B (en) 2009-11-10 2012-03-28 Ingenia Holdings Ltd Optimisation
WO2011159918A2 (en) * 2010-06-16 2011-12-22 Vasco Data Security, Inc. Mass storage device memory encryption methods, systems, and apparatus
US9128876B2 (en) 2011-12-06 2015-09-08 Honeywell International Inc. Memory location specific data encryption key
US8539601B2 (en) 2012-01-17 2013-09-17 Lockheed Martin Corporation Secure data storage and retrieval
US9152801B2 (en) * 2012-06-28 2015-10-06 Steven W. Cooke Cryptographic system of symmetric-key encryption using large permutation vector keys
US10102390B2 (en) 2012-06-28 2018-10-16 Honeywell International Inc. Memory authentication with redundant encryption
US20140310536A1 (en) * 2013-04-16 2014-10-16 Qualcomm Incorporated Storage device assisted inline encryption and decryption
US9411600B2 (en) * 2013-12-08 2016-08-09 Intel Corporation Instructions and logic to provide memory access key protection functionality
US9729320B2 (en) * 2014-02-25 2017-08-08 Cavium, Inc. Apparatus and method for software enabled access to protected hardware resources
CN104881611B (zh) 2014-02-28 2017-11-24 国际商业机器公司 保护软件产品中的敏感数据的方法和装置
IL234956A (en) * 2014-10-02 2017-10-31 Kaluzhny Uri Data bus protection with enhanced key entropy
US10013363B2 (en) 2015-02-09 2018-07-03 Honeywell International Inc. Encryption using entropy-based key derivation
US10708073B2 (en) 2016-11-08 2020-07-07 Honeywell International Inc. Configuration based cryptographic key generation
CN110268392A (zh) * 2017-01-10 2019-09-20 瑞萨电子美国有限公司 安全架构和方法
KR102659866B1 (ko) * 2022-02-09 2024-04-22 김봉묵 꼬치 구이장치

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4087626A (en) * 1976-08-04 1978-05-02 Rca Corporation Scrambler and unscrambler for serial data
DE2658065A1 (de) * 1976-12-22 1978-07-06 Ibm Deutschland Maschinelles chiffrieren und dechiffrieren
US4246638A (en) * 1978-09-14 1981-01-20 Thomas William J Method and apparatus for controlling usage of a programmable computing machine
EP0097621A1 (de) * 1982-06-21 1984-01-04 SPL Software Protect AG Verfahren zur Verschleierung digitaler Information und Vorrichtung zur Durchführung des Verfahrens
US4847902A (en) * 1984-02-10 1989-07-11 Prime Computer, Inc. Digital computer system for executing encrypted programs
CH666972A5 (de) * 1984-07-02 1988-08-31 Software Protect Ltd Verfahren und einrichtung zur verschluesselten datenuebertragung in datenverarbeitungsanlagen.

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100474526B1 (ko) * 2002-07-19 2005-03-10 매그나칩 반도체 유한회사 외부 프로그램 코드를 보호할 수 있는 컨트롤 시스템

Also Published As

Publication number Publication date
US5058164A (en) 1991-10-15
DE69120596D1 (de) 1996-08-08
EP0455064A2 (en) 1991-11-06
DE69120596T2 (de) 1997-02-20
KR910020560A (ko) 1991-12-20
EP0455064B1 (en) 1996-07-03
JPH04229346A (ja) 1992-08-18
EP0455064A3 (en) 1991-11-21

Similar Documents

Publication Publication Date Title
KR100227875B1 (ko) 프로그램 코드를 보호용으로 사용되는 어드레스 정보 스트림의 암호화
US4583196A (en) Secure read only memory
US4558176A (en) Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software
TWI460604B (zh) 安全微控制器、硬體加密器及用於保全一微控制器內之內容之方法
US4523271A (en) Software protection method and apparatus
US5224166A (en) System for seamless processing of encrypted and non-encrypted data and instructions
KR100629069B1 (ko) 데이터 액세스 방법, 데이터 액세스 시스템 및 컴퓨터 판독 가능 기록 매체
US6345359B1 (en) In-line decryption for protecting embedded software
JP4245662B2 (ja) マイクロプロセッサのシリアル番号へのソフトウェアアクセスのための方法および装置
US20070237325A1 (en) Method and apparatus to improve security of cryptographic systems
US20040243823A1 (en) Method and apparatus for determining access permission
KR101329823B1 (ko) 보안 시스템 온 칩
US20070186117A1 (en) Secure processor-based system and method
KR20040101342A (ko) 집적 시스템 내에서의 초기화 방법, 관리 방법, 업데이트방법 및 복원 방법
JP2000347942A (ja) 情報処理装置
JPH0713873A (ja) チップ・カードのキーを保護する装置
JP2000504137A (ja) 電子的データ処理回路
EP3788536B1 (en) Cryptographic key distribution
US20060075236A1 (en) Method and apparatus for high assurance processing
KR20000068373A (ko) 예측 불가능 마이크로프로세서 또는 마이크로컴퓨터
EP0115395B1 (en) Computer processor system with software protection
JPH07219852A (ja) 半導体メモリ装置
JP4336690B2 (ja) 外部インターフェースを有する半導体装置
JP2004086525A (ja) 半導体装置及びそれを用いたインサーキットエミュレータ
KR100258861B1 (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: 20100729

Year of fee payment: 12

EXPY Expiration of term