JPH04229346A - プログラムコード保護用に使用すべきアドレスした情報のストリームのエンクリプション - Google Patents
プログラムコード保護用に使用すべきアドレスした情報のストリームのエンクリプションInfo
- Publication number
- JPH04229346A JPH04229346A JP3128197A JP12819791A JPH04229346A JP H04229346 A JPH04229346 A JP H04229346A JP 3128197 A JP3128197 A JP 3128197A JP 12819791 A JP12819791 A JP 12819791A JP H04229346 A JPH04229346 A JP H04229346A
- Authority
- JP
- Japan
- Prior art keywords
- data
- address
- key
- value
- bus
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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/79—Protecting 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2107—File 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
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータの物理的
メモリ内に格納されている専有情報乃至はアルゴリズム
の保護に関するものである。更に詳細には、本発明は、
元の保護されたアルゴリズム乃至は情報を開示すること
なしに、検査又はトランスポートのために、コンピュー
タからこのデータを転送する技術に関するものである。 このことを達成するために使用される技術は、転送デー
タを暗号化する特定の方法である。この技術は、更に、
私的又は保護されている情報の何らかのトランスポート
に適用可能なものである。 【0002】 【従来の技術】現在のところ、エンクリプション(暗号
)技術は、メモリ保護方法の中に完全に包まれている。 このメモリ保護方法の目的は、特定のコンピュータメモ
リセグメントの内容が不当に開示されることを防止し、
一方このデータに関するある種の診断を行なう能力を維
持することである。本件は、集積回路、特にマイクロコ
ントローラ上に位置されたメモリをそのように保護する
ことに関するものである。本件においては、保護される
べく選択されるメモリはオンチップのEPROMであり
、本明細書においてはOCEPROMと呼ぶこととする
。本明細書において言及されるその他のタイプのメモリ
は、非「オンチップEPROM」メモリ、即ちNOCE
PROMと呼び、両者を区別することとする。NOCE
PROMは、本発明によって保護されるセグメント以外
の何らかのメモリを有している。NOCEPROMのカ
テゴリに属するメモリは、OCEPROMを有する集積
回路上に物理的に位置されているか又はされていない場
合があり、且つ例えば、NOCEPROMのカテゴリに
おける以下の如きメモリ、即ちオンチップRAM、オン
チップROM及び何れかのオフチップメモリを包含する
。 【0003】図1は、システムデータ/アドレスバス1
05、マイクロコントローラ101、メモリ装置110
及びマイクロプロセサ120を有する典型的な従来のマ
イクロプロセサシステムを示した概略図である。マイク
ロコントローラ101は、バス101−1を介してシス
テムアドレス/データバス105へ接続されており、且
つOCEPROM101−2及びNOCEPROM10
1−3を有している。メモリ装置110は、上述した定
義に従ってNOCEPROMとして示してあり、それは
バス110−1を介してシステムアドレス/データバス
105へ接続されている。マイクロプロセサ120はバ
ス120−1を介してシステムアドレス/データバスへ
接続されている。説明の便宜上、本明細書では、例えば
、マイクロコントローラ101、マイクロプロセサ12
0又はその他のプロセサ(不図示)によりNOCEPR
OMから実行される何れかのコードによりマイクロコン
トローラ101内に収納されているOCEPROM10
1−2の内容が許可なく開示されることを防止すること
が所望されている状態について説明する。 【0004】物理的マイクロコントローラメモリの特定
のセグメントの内容が開示されることから保護されるべ
きである場合には、マイクロコントローラアーキテクチ
ャの現在の環境及び使用は、少なくとも二つの検討事項
を支配する。第一の検討事項は、これらのメモリ内容を
「ラン時間」においてどのように保護するかということ
である。二番目の検討事項は、変更動作モード期間中に
これらのメモリ内容をどのように保護するかということ
である。 【0005】「ラン時間」という用語は、ここでは、マ
イクロコントローラプロセサがメモリからの命令をフェ
ッチし且つ実行する期間のことを意味する。これらの命
令は、一部のデータを処理するために使用することが可
能である。そのように命令と関連したデータは、命令の
「オペランド」と呼ばれる。マイクロコントローラの生
来の命令を使用して物理的メモリの保護したセグメント
の内容を開示させることが考えられる。例えば、データ
転送命令を使用して、保護されているセグメントからの
データを出力ポートへ転送させることが可能である。 【0006】現在行なわれている別の動作モードは、一
般的には、プログラミング、又は保護されているセグメ
ントのプログラム検証のために使用されており、且つ一
般的には、「メモリダンプ」、「ROMダンプ」又は「
EPROMモード」の一つ又はそれ以上のものとして言
及されている。この別の動作モードに関連する名称がど
のようなものであろうと、それは、マイクロコントロー
ラを、その通常の稼動形態以外の何らかの形態とするこ
とを特徴としている。この別の動作モードの目的は、マ
イクロコントローラのトータルメモリの何らかの物理的
セグメントの内容を開示させるか又はそれへアクセスす
るためである。一般的には、この別の形態は、マイクロ
コントローラのオンチッププロセサ能力を利用するもの
ではない。 【0007】本発明は、主に許可なしで情報が開示され
ることに対する対策(「読取り保護」)に関するもので
あるが、それは、更に、メモリの保護されているセグメ
ントの内容の制御乃至は変更防止に共通のものである。 これは「書込み保護」と呼ばれる。メモリ保護メカニズ
ムの一部として、「書込み保護」は、情報の開示を防止
すべく構成された手段と共に実施される場合もあればさ
れない場合もある。 【0008】マイクロコントローラに対する殆どの従来
のメモリ保護メカニズムは、二つの種類の内の一つに分
類され、それらの種類は、クラス1及びクラス2として
区別することとする。クラス1のメカニズムは、保護さ
れているデータへのアクセスを制御するために単一要素
(即ち、コンピュータビット又は何らかのタイプのヒュ
ーズ)を使用する。この単一要素が適切に構成される場
合には、一般的に以下の対策がとられる。「ラン時間」
において、「オペランド」として保護されているメモリ
セグメントからのデータを使用することが可能な命令の
みがそのメモリセグメント内に格納され且つそこからフ
ェッチされる命令である。「メモリダンプ」モードにお
いては、その保護されたメモリセグメントへのアクセス
が許容されることはない。クラス2のメカニズムは、ク
ラス1によって使用されるものと同一の制限が「ラン時
間」において使用される。「メモリダンプ」モードにお
いて、保護されているメモリセグメントへのアクセスは
、一般的に、「キー」の使用を介して制御される。この
ようなキーは、通常2進値である。該キーのフィールド
幅は、典型的に、128乃至256ビットの範囲内であ
り、16乃至32個の8ビットバイトの範囲に対応して
いる。このオーダのフィールド幅は、2128 乃至2
256 の巨大な数の可能なキーを与え、且つ単一の正
しいキーを推測することを困難な作業としている。従来
技術においては、これらのキーは、オンチップソフトウ
エアを保護するために二つの態様で使用されている。 【0009】第一の従来技術の方法においては、オンチ
ップメモリへアクセスするための許可として単に正しい
キーを使用することが関与する。このことは、該キーが
保護されたメモリを有する集積回路へ提供され、且つ該
集積回路がその提供されたキーを該集積回路上に格納さ
れている正確なキー値と比較することを意味する。これ
ら二つの値がマッチ、即ち一致する場合には、オンチッ
プメモリへのアクセスに対する許可が与えられる。この
アプローチは、組合わせ錠に非常に類似した巨大な数の
可能なキーの値に依存するものである。このアプローチ
には幾つかの欠点があり、即ち、(1)正確なキーの値
を警護しなければならず、(2)正確なキーの値をチッ
プ上に格納せねばならず、そのことは高価な集積回路表
面積を使用することになり、且つ(3)そのキーが発見
された場合には、この安全メカニズムは壊滅的な態様で
崩壊し、絶対的に何らのメモリ保護も維持されることは
なくなる。 【0010】第二の従来技術の方法では、外部環境に開
示される前にオンチップメモリ内に格納される情報を暗
号化するためのキーを使用する。このエンクリプション
(暗号)は、通常、保護されている情報を、オンチップ
メモリからのバイトのストリームとして観察する。この
バイトのストリームは、通常、オンチップメモリの全て
が暗号化され且つ出力される迄、キーバイトで繰返しX
OR処理又はXNOR処理される。従って、32個のキ
ーバイトがある場合には、最初のキーバイトはメモリか
らの最初のバイトとXNOR処理され、二番目のキーバ
イトはメモリからの二番目のバイトとXNOR処理され
、以下そのように32番目のバイト迄処理が行なわれる
。次いで、メモリからの33番目のバイトが一番目のキ
ーバイトとXNOR処理され、且つ該プロセスはそれ自
身繰返して開始する。この従来技術のアプローチの場合
には幾つかの欠点があり、即ち(1)キーがオンチップ
で格納されねばならず、そのことは高価な集積回路の表
面積を使用し、(2)キーが発見されると、その安全メ
カニズムは壊滅的な態様で崩壊し、且つ(3)オンチッ
プメモリの何れかのプログラムしていないバイトがキー
バイトとXNOR処理されると、そのキーバイトが知ら
れてしまうということである。 【0011】従来技術メモリ保護方法1(クラス2)一
つの従来方法(例えば、インテル839XBH,879
XBH,87C196KBタイプの装置おいて使用され
ている)は、オンチッププログラムメモリ用の4レベル
の保護を画定するために集積回路のチップコンフィギュ
レーション(形態)レジスタ(CCR)内に位置されて
いる二つのビットを使用している。これらのビットは、
LOC0及びLOC1として言及されており、且つ以下
のレベルの保護を与える。
表 1 LOC 1
LOC 0 読取保護
書込保護 0 0
イネーブル済 イネーブル
済 0 1
イネーブル済 ディスエーブル済
1 0
ディスエーブル済 イネーブル済 1
1 ディスエーブ
ル済 ディスエーブル済【0012】読取り保護
がイネーブルされると、(1)オンチップメモリの最後
の五つのバイトはプログラム格納のために使用すること
はできず、(2)オンチップメモリはオンチップメモリ
からの命令によってのみ読取ることが可能であり、且つ
(3)ノンマスカブル(非マスク可能)インタラプト(
NMI)が、次のリセット迄、集積回路をして外部実行
へスイッチさせる。これら三つの事項は、保護されてい
るオンチップのメモリ内に格納されているデータのラン
時間開示を防止する。 【0013】/EA(外部アクセス、外部メモリ)の値
はリセットでラッチされ、従って集積回路は、稼動中外
部から内部への実行へスイッチさせることはできない。 このことは、分割命令フェッチ、即ち外部メモリからの
opcode、内部の保護されたメモリからのオペラン
ド、を防止するためのラン時間セキュリティの一側面と
して行なうことが可能である。このことは、しばしば、
この信号をうまく制御することにより、/EAをラッチ
することのない集積回路上で達成することが可能である
。 【0014】メモリダンプを実施するためには、オンチ
ップの16バイトセキュリティキーがマッチ、即ち一致
されなければならない。チップは、外部メモリ内の特定
した位置に格納されるユーザが供給したキーと集積回路
上に格納されている16バイトのセキュリティキーとを
自動的にチェックする。マッチ、即ち一致がある場合に
は、オンチップメモリの内容が外部メモリへダンプされ
る。マッチ(一致)が存在しない場合には、チップは、
それ自身をエンドレスループの内部実行状態とさせる。 書込み保護がイネーブルされると、オンチップメモリに
対して更なるプログラミングが許容されることはない。 【0015】従来技術メモリ保護方法2(クラス2)こ
の方法(例えば、インテル87C51,87C51BH
,87C51FA,87C51FB,87C51GA,
87C52BHタイプの装置において使用されている)
においても、オンチッププログラムメモリ用の4レベル
の保護を画定するために集積回路上で2ビットのEPR
OMを使用している。これら二つのビットはB1及びB
2として言及されており、表2に示したレベルの保護が
与えられる。
表 2 B1 B2
保
護 0 0 (a)外部的
にフェッチしたコードは内部プログラムメモ
リをアク
セス不可 (
b)更なるプログラミングはディスエーブル
(c)プログラム検証
(メモリダンプ)ディスエーブル) 0
1 (a)外部的にフェッチしたコード
は内部
プログラムメモリをアクセス不可
(b)更なるプログラミ
ングはディスエーブル 1 0
後の画定のためにリザーブ
1 1 なし【00
16】/EAの値は、オンチップメモリが読取り保護さ
れている場合には、リセットでラッチされる。これらの
条件化において、/EAの「現在」値は、適切な実行の
ためには、ラッチされている値と一致せねばならない。 このことは、装置のラン時間メモリ保護の一側面である
場合がある。メモリダンプはこの方法を使用する全ての
チップに対して暗号化される。オンチップの32バイト
メモリアレーがユーザによってプログラムされる。この
メモリアレイは、検証期間中にプログラムバイトをエン
コードするために使用される。各プログラムバイトは、
該アレイからの32キーバイトの一つと論理的にXNO
R処理される。該キーバイトは逐次的にアドレスされる
。従って、プログラムの最初のバイトは、該アレイの最
初のバイトとXNOR処理される。プログラムの二番目
のバイトは該アレイの二番目のバイトとXNOR処理さ
れ、且つ以下同様にプログラムの32番目のバイト迄同
様の処理が行なわれる。次いで、プログラムの33番目
のバイトが該アレイの最初のバイトとXNOR処理され
る。このエンクリプション(暗号化)アルゴリズムは、
プログラム全体に対してこのような態様で繰返し行なわ
れる。 【0017】従来技術メモリ保護方法3(クラス1)こ
のアプローチ(例えば、インテル8751H及び874
4Hタイプの装置において使用されている)は、オンチ
ップメモリへのアクセスを制御するために集積回路上で
隠されている一つのロックビットを使用する。このビッ
トがプログラムされると、(1)内部プログラムメモリ
は読出すことが不可能であり、(2)該装置を更にプロ
グラムすることが不可能であり、且つ(3)該装置は外
部メモリから実行することはできない。該装置を内部実
行へ制限することはこの方法の欠点である。該ロックビ
ットは、典型的に、EPROMセル内に格納され、且つ
EPROMの消去により該装置の完全な機能性が回復さ
れる。 【0018】従来技術メモリ保護方法4(クラス1)別
の従来技術(例えば、インテル8051AHP及び80
C51BHPタイプの装置において使用されている)は
、ラン時間において、プログラムメモリ空間を4Kバイ
トへ制限している。この空間は、二つの可能な態様のう
ちの一つでコンフィギャ、即ち形態付がなされねばなら
ない。それは、完全にチップ上に設けられるか、又は完
全にチップ外部に設けられる。この4Kバイト境界を超
えてのデータアクセスは、適宜のプログラム命令(例え
ば、MOVX@Ri,A又はMOVX A,@Ri)
を使用してレジスタRiを介して行なうことが可能であ
るにすぎない。明らかに、結合した内部/外部実行を阻
止することは、システム適用におけるこの方法の柔軟性
を低下させている。本明細書においては「ROMダンプ
」又は「EPROMモード」として言及されるプログラ
ム検証テストモードは、これらの装置から除去されてい
る。 【0019】従来技術メモリ保護方法5(クラス2)あ
る従来装置(例えば、インテル87C51FA及び83
C51FB装置)では、オンチップメモリへのアクセス
を制御するために単一のロックビットを使用している。 このビットがプログラムされないままに置かれると、何
等の保護が与えられることはない。このビットがプログ
ラムされると(1)/EAがリセットでラッチされて、
装置が稼動中に外部実行から内部実行へスイッチされる
ことを防止し、且つ(2)外部メモリから実行されるM
OVC命令(プログラムコードバイトを移動させるため
に使用される)は、内部メモリからコードバイトをフェ
ッチすることは許容されない。更に、上述した従来技術
方法2において説明した如く、32バイトエンクリプシ
ョン(暗号)アレイを使用してメモリダンプ出力をエン
コードする。このアレイは、常に、メモリダンプ出力上
にマップされている。このアレイがプログラムされない
ままであると、メモリデータは影響を受けることはない
。それがユーザによってプログラムされる場合には、R
OMデータはエンコードされる。 【0020】従来技術メモリ保護方法6(クラス2)別
の従来技術(例えばインテル8398装置において使用
されている)は、オンチッププログラムメモリへのアク
セスを制御するために集積回路上で隠されているメモリ
セル内に格納されている単一のロックビットを使用して
いる。このビットがプログラムされると、オンチップメ
モリは、外部メモリから実行するプログラムによって読
取ることは不可能である。メモリダンプを実行するため
に、16バイトのオンチップキーがマッチされねばなら
ない。メモリダンプモードにおいては、該キーは、集積
回路によって外部メモリから自動的に読取られる。外部
メモリから読取られる該キーがオンチップキーとマッチ
する場合には、メモリダンプが進行する。一方、マッチ
しない場合には、メモリダンプはアボート、即ち中断さ
れる。 【0021】従来技術メモリ保護方法7米国特許第4,
698,617号は、エンクリプション技術の変形例を
示しており、その場合、データを暗号化するために使用
されるキーは、異なったデータバイトが読取られる場合
に変化する。この米国特許は、そのカウントを既知の値
からスタートしてエンクリプション(暗号)キーを与え
るための擬似ランダムカウンタを使用することを記載し
ている。そのカウントが同一の既知の値からスタートす
る態様する擬似ランダムカウンタが、暗号化データを解
読するために受信用集積回路において使用されている。 この米国特許は、更に、エンクリプションキーが、極め
て簡単に、読取ることが所望されるデータのアドレスで
ある場合のエンクリプション技術の例をも示している。 【0022】これらは、上記米国特許の図1及び4に示
されているものを実施する場合の欠点である。最初に図
4を参照すると、その場合は、ROM出力を暗号化する
ためにアドレスが使用されている。エンコード回路用の
二つのオペランドの内の一方は、容易に分る(アドレス
)。エンコーディングはXOR/XNORに基づく可能
性があるので(図5a及び5b)、送信されたバイトの
ストリームを解読するために、ROM出力ビットに対す
るアドレスビットの固定したマッピングを決定すること
が必要であるにすぎない。ROMは、通常、最後のアド
レス変化から測定される評価すべき何らかの固定したイ
ンターバル(期間)を必要とする。このインターバルを
Te とする。Te の期間中、ROMは、通常、一定
の値の出力Vo を保持する。注意すべきことであるが
、図4のエンコード回路に対して出力ストローブが存在
しておらず、従ってその出力変化はバス10又はバス7
上の変化に関して相対的に直接的なものである。該マッ
ピングを決定するために、Te 未満の周期でバス10
上に適宜のアドレスパターンを印加し、且つバス8にお
けるVo に与える影響を観察する。 【0023】上述した米国特許の図1に示すものは幾分
より堅牢なものである。何れのエンクリプション(暗号
)オペランドも知られていないので、Voに関する未知
のマッピング及び未知のオペランドに関する影響を同時
的に観察せねばならない。しかしながら、その構成は、
ROMイネーブルリードを制御することを可能とするも
のであるから、正味の効果を決定することが可能である
。このことは幾つかの態様で行なうことが可能である。 第一に、Te を超える周期を有するアドレスで変化し
ている間に、リード11上の一定のアクティブな値を保
持することが可能である。このことは、幾つかの異なっ
たデータバイトに関する単一のエンクリプションキーの
効果を観察することを可能とする。第二に、Te を超
える周期でアドレス定数及びトグルリード11を保持す
ることが可能である。このことは、幾つかの(又は、全
ての)データバイトに関する各エンクリプションキーの
効果を決定することを可能とする。第三に、Te 未満
の周期でアドレス定数及びトグルリード11を保持する
ことが可能である。このことは、一定値Vo に関する
各キーバイトの効果を決定することを可能とする。 【0024】これらの手法の何れもがエンクリプション
マッピング又は保護されているデータを直接的に開示さ
せる蓋然性はないが、それらの手法は、その目的のため
に使用することが可能なかなりの量の情報を開示する。 前述した従来技術方法1乃至6の場合には幾つかの欠点
が存在している。例えば、プログラムデータを暗号化す
るために32バイトキーが使用される実施例においては
、かなりの量の集積回路の表面積が32バイトキーを格
納するために使用されねばならない。更に、32バイト
毎に各キーバイトが暗号化された出力パターンにおいて
繰返えされる。従って、各キーバイトは、プログラムの
1/32をエンコードする。単に一つのキーバイトを発
見するだけで、開示されることから保護することが所望
されているプログラムの顕著な部分をすぐさま開示する
こととなる。更に、OCEPROMのプログラムされて
いないバイトが該キーバイトの一つでエンコードされる
場合には、そのキーバイトは公知のものとなる。このこ
とは、保護されているプログラムがOCEPROMにお
いて使用可能な空間を完全に占有するものではない場合
に発生する場合があり、且つOCEPROMのプログラ
ムされていない部分はメモリダンプ期間中に出力される
。更に、このキー値は、常に、オンチップ及びオフチッ
プの両方において安全な状態に維持されねばならない。 最後に、キー全体が発見される場合には、保護メカニズ
ムは壊滅的な態様で崩れ去り、全く何等のメモリ保護も
維持されないこととなる。 【0025】 【課題を解決するための手段】本発明の一実施形態によ
れば、エンクリプション(暗号化)方法が、エンクリプ
ション(暗号)キーとして、特定のオンチップメモリ内
に格納されているデータのあるバイトを選択する。これ
らの選択されたバイトは、それら自身、及び上述した特
定のメモリ内の残りのデータの全てを暗号化するために
使用される。選択されたバイトは、エンクリプション、
即ち暗号化のために特に割当てられている値を有するも
のではなく、それらのバイトは、所定の規則に従って、
暗号化されるべきデータの本体から単純に選択される。 この技術が実施される場合には、上述したメモリ内に格
納されているデータの各バイトは、開示の前に、指定さ
れたエンクリプション(暗号)キーバイトの一つと結合
される(例えば、排他的NORゲートを使用して)。こ
の実施例によれば、そのエンクリプションキーバイトを
読取ろうとする侵略者はその意志がくじかれることとな
る。なぜならば、それらはそれら自身を暗号化するため
に使用されており、その結果各々のビットが論理値1で
ある出力バイトとなっているからである。 【0026】本発明の技術を使用する上で特定の利点が
存在している。ユーザは、一組のキーバイトを別個に供
給し、プログラムし又は安全対策を施すことが必要とさ
れるものではない。更に、このようなバイトを格納する
ために何等シリコン面積が無駄に使用される訳でない。 この暗号化技術の結果を解読するためには、侵略者は元
のデータのある部分を知ることが必要である。更に、こ
の技術は優雅に劣化する。暗号化データが単一の共通依
存性を有することがないようにキーが選択される。従っ
て、単一のキーが発見された場合でも、暗号化データの
非常に小さな部分のみが開示されるにすぎない。 【0027】 【実施例】本発明によれば、データ暗号化の新規な方法
が提供され、メモリの内容を保護するメカニズムを提供
している。これは、マイクロコンピュータにおいて使用
するのに特に適しており、以下の本発明の説明はマイク
ロコントローラへの適用の場合について特に説明する。 しかしながら、本発明のエンクリプション(暗号)構成
及びその技術は、マイクロコントローラ、マイクロプロ
セサ又は任意のスケールのプロセサ及びメモリ装置以外
のデータ転送において使用されるメモリシステムにおい
て使用するのに適しているものである。 【0028】本明細書においてOCEPROMと呼ばれ
るメモリのセグメントをマイクロコントローラの物理的
な一部として定義する。本発明のラン時間メモリ保護構
成の一実施例は、図2に示した如く、四個の主要な要素
を有している。 【0029】命令opcodeがフェッチ、デコード及
び実行(FDE)ユニット22によってOCEPROM
21からフェッチされ、且つこのプロセスはセキュリテ
ィモニタ23によってモニタされる。本ラン時間セキュ
リティメカニズムの最初の拘束条件は、唯一つのFDE
ユニットがOCEPROM21へアクセスすることが可
能であるということである。この特権を有するマイクロ
コントローラFDEユニットは、特に、物理的にOCE
PROM21を有するマイクロコントローラである。こ
の拘束条件は、OCEPROM21へのラン時間直接メ
モリアクセス(DMA)の可能性を取除いており、且つ
その他のラン時間複数アクセスメカニズムを排除してい
る。一例として、OCEPROM21を有するマイクロ
コントローラがマルチプロセサシステム内に設けられる
場合、このOCEPROMは、それが、収容されている
特定のマイクロコントローラによってのみラン時間にお
いてアクセスすることが可能である。別の実施例におい
ては、例えばマイクロプロセサ及びDMAコントローラ
等のような複数個のプロセサ又はコントローラによって
、保護されているメモリセグメントに対して複数実行ア
クセスが与えられる。一つのこのような実施例において
は、保護されているメモリに対しての実行アクセスが可
能な各装置に対して一つづつ複数個のセキュリティモニ
タが使用される。別の実施例においては、単一のセキュ
リティモニタが使用され、それはより洗練されており、
且つ複数個の実行可能性が存在するという事実を考慮す
ることが可能である。この実施例においては、例えば、
単一のセキュリティモニタは、保護されているメモリか
らの情報を読取ることが可能であるか否かを決定する場
合に、アクセスされることを所望するアドレスのみなら
ず、アクセスを所望する装置をも検討する。 【0030】以下の定義付は、本発明の一実施例に関連
する読取り及び書込み特権を例示するのに役立つ。以下
の説明に加えて、これらの特権を詳細に示してある。 【0031】「DATA」特権を、OCEPROMへの
「ラン時間」アクセスを制御するためのものとして定義
する。それは、例外アクセスとして考えることが可能で
あり、且つ敵対的なプログラムがソースOCEPROM
の内容をデータとして読取ることを防止すべく構成され
ている。DATA特権が許容される場合には、NOCE
PROMからフェッチされ且つ実行された命令は、オペ
ランドに対するソースとしてOCEPROMを使用する
ことが許容される。DATA特権が許容されない場合に
は、NOCEPROMからフェッチされた命令は、オペ
ランドに対するソースとしてOCEPROMを使用する
ことは許容されない。OCEPROMからフェッチされ
且つ実行される命令は、常に、オペランドに対するソー
スとしてOCEPROMを使用することが許容される。 これらの命令に対する参照において(「フェッチ及び実
行」)、そのフェッチ及び実行を実施するマイクロコン
トローラは特に物理的にOCEPROMを有するマイク
ロコントローラである。 【0032】OCEPROMの内容を変更するための試
みを制御するために「WRITE」特権を定義する。W
RITE(書込み)特権が許可される場合には、OCE
PROMは、与えられたプログラミングメカニズムによ
って変更することが可能である。WRITE特権が許可
されない場合には、与えられたプログラミングメカニズ
ムがディスエーブルされ且つOCEPROMの内容の変
更は許可されない。 【0033】一実施例においては、マイクロコントロー
ラは、一般的に理解されている通常の稼動モードとは別
に一つを超える動作モードを有している。これらのモー
ドは、OCEPROMのプログラム及び/又は検証を実
施することが意図されているものであり、且つ命令を実
行するためのマイクロコントローラ資源を使用する場合
もしない場合もある。それらは、何れの場合においても
、上述した「DATA(データ)」及び「WRITE(
書込み)」特権の強制下にある。これらの動作モードの
場合、OCEPROM内に収納されているデータが要求
によって開示しても良いものであるか否かを決定するた
めに「VERIFY(検証)」特権を定義する。このよ
うな要求は、マイクロコントローラが適宜の動作モード
にある場合に特定のメカニズムによって認識される。 VERIFYが許可される場合には、OCEPROMか
ら開示されたデータは、その格納されている値の正確な
表示である。VERIFYが許可されない場合には、O
CEPROMから何等データが開示されることはない。 「暗号化VERIFY」のみが許可される場合には、O
CEPROMから開示されたデータは実際の格納されて
いる値のエンクリプション、即ち暗号である。
表 3プログラム可能
形態ビット
特 権
機 能
NOCEPROMア
クセスから
のOCEPROM
暗号化 BIT SB1 BIT SB0
へのデータ WRITE VERIFY VERI
FY 1 1 Y
Y Y N
WRITE、暗号化VERIFY
許可、及
びセキュリテ
ィなしでのNOCEPROMか
ら
OCEPROMへのアクセ
ス許可 1
0 Y N
Y N WRITE禁
止、暗号化
VERIFY許可及び
NOCEPR
OMからOCEPROM
へのアクセス許可 0
1 N
N N Y WR
ITE禁止、暗号化
VERIFYのみ許可及び
NOCEPROMからOCEPROM
へのアクセス
否定 0 0 N
N N N
WRITE禁止、VERIFY
ディスエー
ブル、及び
NOCEPROMからOCEPROM
へのアクセス否定、そ
の際にトップレベルセ
キュリティを供給【0034】これらの四つのレベルの
セキュリティ(表3)は、OCEPROM内に格納され
ているデータが許可なく開示されることを阻止すべく構
成されている。更に、それらは、このデータが許可なく
変更されることを防止している。本発明に基づくマイク
ロコントローラの一実施例においては、OCEPROM
は、アドレスCOOO hex及びFFFF he
xの間に位置されている。これら四つのレベルのセキュ
リティは、OCEPROMの全てへのアクセスを制御す
る。更に、セキュリティビットSB1及びSB0を有す
るチップ形態バイトは、WRITE特権が許可されない
場合に、書込み保護状態とされる。チップ形態バイトは
暗号化されず、与えられた別の動作モードにおいて読取
り可能である。 【0035】図3は、本発明の一実施例に基づいて構成
されたマイクロコントローラの一部を示している。マイ
クロコントローラ200は、アドレスバス250−Aか
らアドレス信号を受取り且つバス250−Fへデータ信
号を供給するNOCEPROM201−3を有している
。これはNOCEPROMであるから、NOCEPRO
M201−3と関連して何等エンクリプション(暗号)
又は権限付与回路が使用されている訳ではない。 【0036】マイクロコントローラ200は、更に、ア
ドレスバス250−Bからアドレス信号を受取り且つア
ドレスバス250−Cからもアドレス信号を受取るOC
EPROM201−2を有している。OCEPROM2
01−2は、データバス250−Dへデータ信号を供給
する。これはOCEPROMであるので、それに収容さ
れるデータへのアクセスが権限が付与されたものである
ことを確保し、且つ必要とされる場合にはバス250−
E又はバス250−Fへ供給されるデータを暗号化する
ために付加的な回路が使用されている。表3に示した如
く、プログラム可能形態ビットSB1及びSB0はオン
チップセキュリティ回路の動作を制御する。以下の説明
は、表3において定義した形態ビットSB1及び形態ビ
ットSB0の組合わせに関する図3の回路及び構成の動
作について説明する。 【0037】形態ビットSB1及びSB0の両方が論理
値1を有する場合には、通常の稼動モードにおいてOC
EPROM201−2の内容が開示されることを防止す
るための何等特別な構成が強制されるものではない。こ
れらの条件下においては、OCEPROM201−2内
に収容されているデータは、アドレスバス250−A上
に適宜のアドレス値を供給することによりアクセスする
ことが可能である。アドレスモニタ205は、それがバ
ス250−A上で受取るアドレスを不変のままバス25
0−Bへ供給する。このアドレス値が前のアドレス値と
同一でない場合には、アドレスモニタ205は、新たな
アドレスリード255上に論理0パルスを供給する。エ
ンクリプション(暗号)制御論理204が、SB1リー
ド251のこの論理1の値及びSB0リード252の論
理1の値を検知し、且つキー読取りストローブリード2
56上に論理0の値を供給する。ゼロ回路206は、キ
ー読取りストローブ256の論理0の値を検知し、且つ
バス250−Bからそれが受取るアドレスビットA(2
,3,4)をバス250−CのビットA(2,3,4)
へ夫々不変のまま供給する。新たなアドレスリード25
5上の短い論理0パルスに応答して、アドレスバス25
0−B及び250−C上に存在するアドレスに従って、
OCEPROM201−2がデータバス250−Dへデ
ータを供給する。ラン時間セキュリティモニタ202は
、SB1リード251の論理1の値を検知し且つイネー
ブルリード253へ論理1の値を供給する。データバス
セレクタ203は、モードバス257を検査して、集積
回路が現在通常の稼動モードにあるか否かを決定し、且
つSB1リード251,SB0リード52及びイネーブ
ルリード253の各々の上に存在する論理1の値に従っ
て、ステータス及びタイミングバス254上に存在する
信号値に従ってそのように支持される場合には、データ
バス250−D上に存在するデータを、不変のままラン
時間データバス250−Fへ供給する。 【0038】形態ビットSB1及びSB0の両方が論理
値1を有する場合、OCEPROM201−2の内容の
プログラミング又は読出しのために主に意図された動作
モードにおいて該内容が開示されることを防止するため
の何等特別の構成は与えられない。これらの動作モード
は、通常の稼動モードに対する変形例として前に記載し
てある。これらの条件下においては、OCEPROM2
01−2内に収容されているデータは、アドレスバス2
50−A上に適宜のアドレス値を供給することによりア
クセスすることが可能である。アドレスモニタ205は
、それがバス250−A上で受取るアドレスを不変のま
まバス250−Bへ供給する。このアドレス値が前のア
ドレス値と同一でない場合には、アドレスモニタ205
が、新たなアドレスリード255上に短く論理0パルス
を与える。暗号制御論理204がリード251上のSB
1の論理1の値及びリード252上のSB0の論理1の
値を検知し、且つキー読取りストローブリード256上
に論理0の値を供給すると共に出力ストローブリード2
59上に論理0の値を供給する。ゼロ回路206は、キ
ー読取りストローブリード256の論理0の値を検知し
、且つそれがバス250−Bから受取るアドレスビット
A(2,3,4)を、バス250−CのビットA(2,
3,4)へ夫々不変のまま供給する。新たなアドレスリ
ード255上の短い論理0パルスに応答して、OCEP
ROM201−2は、アドレスバス250−B及び25
0−C上に存在するアドレスに従ってデータバス250
−Dへデータを供給する。モードバス257上に存在す
る信号値によって決定される如く、データバス250−
D上のデータは、以下の如くに、データバス250−E
又はデータバス250−Fの内の一つのみへ供給するこ
とが可能である。暗号回路207は出力ストローブ25
9の論理0値を検知すると共に形態ビットSB1リード
251の論理1の値を検知し、且つモードバス257上
の信号値が適切なものである場合には、バス250−D
からのデータを不変のままバス250−Eへ供給する。 ラン時間セキュリティモニタ202は、SB1リード2
51の論理1の値を検知し、且つ論理1の値をイネーブ
ルリード253へ供給する。データバスセレクタ203
はSB1リード251、SB0リード252及びイネー
ブルリード253の各々の論理1の値を検知し、且つモ
ードバス257上の信号値が適切なものである場合に、
ステータス及びタイミングバス254上に存在する信号
値に従ってそのように指示される場合に、バス250−
Dからのデータを不変のままバス250−Fへ供給する
。 【0039】形態ビットSB1及びSB0の両方が論理
値1を有する場合には、OCEPROM201−2へデ
ータをプログラムすることを防止するために何等特別の
構成はとられることがない。これらの条件下において、
適宜の動作モードにおいて、アドレスバス250−A上
にアドレスを及びデータバス250−G上にデータを供
給することにより、データをOCEPROM201−2
へプログラムさせることが可能である。アドレスモニタ
205は、それがアドレスバス250−A上で受取るア
ドレスを不変のままバス205−Bへ供給する。暗号制
御論理204は、SB1リード251の論理1の値及び
SB0リード252の論理1の値を検知し、且つキー読
取りストローブリード256上に論理0の値を供給する
。ゼロ回路206はキー読取りストローブリード256
の論理0の値を検知し、且つそれがバス250−Bから
受取るアドレスビットA(2,3,4)を夫々バス25
0−CのビットA(2,3,4)へ不変のまま供給する
。充分なアドレス及びデータ安定化インターバルの後に
、短い論理0パルスがPGMリード262へ印加される
。この短い論理0パルスは、暗号論理204をして、S
B1リード251の論理1の値及びSB0リード252
の論理1の値に従って、OPGMリード263上に短い
論理0パルスを供給する。OCEPROM201−2は
、OPGMリード263上の短い論理0パルスを検知し
、且つバス250−B及びバス250−Cによって一体
的に表わされるアドレス値に態様してOCEPROM2
01−2内の位置へバス250−Gからのデータをプロ
グラム、即ち書込む。 【0040】形態ビットSB1が論理値1を有しており
且つ形態ビットSB0が論理値0を有していると、通常
の稼動モードにあるOCEPROM201−2の内容が
開示されることを防止するために何等特別の構成が与え
られることはない。これらの条件下において、OCEP
ROM201−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
)へ不変のまま供給する。新たなアドレスリード255
上の短い論理0パルスに応答して、OCEPROM20
1−2は、アドレスバス250−B及び250−C上に
存在するアドレスに従ってデータバス250−Dへデー
タを供給する。ラン時間セキュリティモニタ202がS
B1リード251の論理1の値を検知し、且つ論理1の
値をイネーブルリード253へ供給する。データバスセ
レクタ203は、モードバス257を検査して、該集積
回路が現在通常の稼動モードにあるか否かを決定し、且
つSB1リード251及びイネーブルリード253の各
々の上に存在する論理1の値に従って、且つSB0リー
ド252上に存在する論理0の値に従って、データバス
250−D上に存在するデータを、ステータス及びタイ
ミングバス254上に存在する信号値に従ってそのよう
に指示される場合には、不変のままラン時間データバス
250−Fへ供給する。 【0041】形態ビットSB1が論理値1を有しており
且つ形態ビットSB0が論理値0を有している場合には
、OCEPROM201−2のプログラミング又は読出
しに対して主に意図されている動作モードにおいて該内
容が開示されることを防止するために何等特別の構成は
与えられない。これらの動作モードは、以前に通常の稼
動モードに対する変形例として説明してある。これらの
状況下においては、OCEPROM201−2内に収容
されるデータは、アドレスバス250−A上に適宜のア
ドレス値を供給することによってアクセスすることが可
能である。アドレスモニタ205は、それがバス250
−A上で受取るアドレスを不変のままバス250−Bへ
供給する。このアドレス値が前のアドレス値と同一でな
い場合には、アドレスモニタ205が新たなアドレスリ
ード255上に短く論理0パルスを供給する。暗号制御
論理204はSB1リード251の論理1の値及びSB
0リード252の論理0の値を検知し、且つキー読取り
ストローブリード256上に論理0の値を供給すると共
に出力ストローブリード259上に論理0の値を供給す
る。ゼロ回路206は、キー読取りストローブリード2
56の論理0の値を検知し、且つそれがバス250−B
から受取るアドレスビットA(2,3,4)を夫々バス
250−CのビットA(2,3,4)へ不変のまま供給
する。新たなアドレスリード255上の短い論理0パル
スに応答して、OCEPROM201−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へ供給する。 【0042】形態ビットSB1が論理値1を有しており
且つ形態ビットSB0が論理値0を有している場合には
、暗号制御論理204は、PGMリード262上の値に
無関係に、OPGMリード263上に論理0パルスを供
給することはなく、実効的にOCEPROM201−2
のプログラミングを防止している。 【0043】形態ビットSB1が論理値0を有しており
且つ形態ビットSB0が論理値1を有している場合には
、OCEPROM201−2の内容が許可なく開示され
ることを防止するために特別の構成が通常の稼動モード
において強制される。SB1の論理0値に従って、ラン
時間セキュリティモニタ202が、各opcodeフェ
ッチのソース(発信元)を記録するために、ステータス
及びタイミングバス254上の信号値を検査する。特定
のopcodeがOCEPROM201−2からフェッ
チされると、ラン時間セキュリティモニタ202が、そ
のopcodeが実行を開始するや否や論理1の値をイ
ネーブルリード253上に供給し、その際にデータバス
セレクタ203が、opcodeの実行のために必要に
応じて、データバス250−Dからoperandデー
タをバス250−Fへ転送することを許容する。特定の
opcodeがNOCEPROMからフェッチされると
、ラン時間セキュリティモニタ202は該opcode
の実行期間中に論理1の値をイネーブルリード253に
供給することはなく、その際にデータバスセレクタ20
3が任意のデータをバス250−Dから250−Fへ転
送することを防止する。このように、OCEPROM2
01−2への読取りアクセスは、NOCEPROMから
実行される任意のソフトウエアに対して不許可状態とさ
れる。 【0044】形態ビットSB1の値が論理0であり且つ
形態ビットSB0の値が論理1である場合には、OCE
PROM201−2の内容のプログラミング(書込み)
又は読出しのために主に意図されている動作モードにお
いて該内容が開示されることを制限するための特別の構
成が与えらえる。これらの動作モードは、通常の稼動モ
ードに対する変形例として先に説明してある。これらの
状況下においては、OCEPROM201−2内の位置
の検証が許可され且つこのような位置の内容は開示され
る前に暗号化される。検証を実行するために、アドレス
バス250−A上にアドレスが供給される。このアドレ
スは前のアドレスと同一でない場合には、アドレスモニ
タ205が新たなアドレスリード255上に論理値0の
パルスを短く供給する。このパルスは暗号制御論理20
4を初期化し、且つそれをして以下の出力値、即ち論理
値0を有するキー読取りストローブリード256、論理
値1を有するデータラッチストローブリード258、論
理値0を有する出力ストローブリード259、論理値1
を有するnstart読取りリード261を発生させる
。アドレスモニタ205が、それがバス250−A上で
受取るアドレスを不変のままバス250−Bへ供給する
。キー読取りストローブ256の値が現在論理0である
ので、ゼロ回路206は、アドレスビットA(2,3,
4)に関し何等影響を与えることはなく、且つこれらの
ビットを不変のままバス250−Cへ供給する。新たな
アドレスリード255上の論理0パルスに応答して、バ
ス250−B及びバス250−Cから構成されるアドレ
スに従って、OCEPROM201−2がバス250−
Dへデータを発生させる。このデータがその宛先へ伝搬
する時間の後に、OCEPROM201−2がデータ伝
搬リード260上に論理1の値を発生する。このことは
、暗号制御論理204をしてデータラッチストローブリ
ード258上に論理0の値を発生させ、それは、バス2
50−D上に存在するデータをデータラッチ208によ
ってラッチ(保持)させる。その直後に、暗号制御論理
204が、OCEPROM201−2から暗号キーバイ
トを読取るために、キー読取りストローブリード256
上に論理値1を発生させる。ゼロ回路206がキー読取
りストローブリード256上の論理値1を検知し、且つ
アドレスバス250−Cの三つのビットのうちの各々の
上に論理値0を発生させる。その直後に、暗号制御論理
204がnstart読取りリード261上に短い論理
0パルスを発生させる。このことは、OCEPROM2
01−2をしてデータ伝搬リード260上に論理値0を
発生させ、且つ現在論理値0を有しているバス250−
B及びバス250−Cから構成されるアドレスに従って
データバス250−Dへデータを発生させる。 このデータがその宛先へ伝搬する時間が経過した後に、
且つ暗号回路207がデータラッチ208内に格納され
ているデータを暗号化し且つバス261上にバス250
−D上の暗号キー値で供給すると、OCEPROM20
1−2がデータ伝搬リード260上に論理1の値を発生
する。その直後に、暗号制御論理204が出力ストロー
ブ259上に論理1の値を発生し、それは暗号回路20
7をしてデータバス250−E上に暗号化データ値を発
生させる。モードバス257が適切な値である場合には
、バス250−E上の暗号化データ値は、セレクタ20
3がステータス及びタイミングバス254上の信号値に
よってそのように指示されている場合に、セレクタ20
3を介してラン時間データバス250−Fへ供給するこ
とが可能である。上述した暗号プロセス期間中の任意の
時間においてバス250−A上のアドレス値が変化され
ると、アドレスモニタ205は新たなアドレスリード2
55上に論理1のパルスを短く発生し、暗号制御論理2
04をして暗号化プロセスを停止させ且つ新たなアドレ
ス値で新しく開始する。この場合には、停止された暗号
化プロセスからのデータはバス250−Eへ供給可能な
状態とされることはなく、その際に意図したレベルのセ
キュリティを維持する。上述した暗号化プロセスが充分
な時間期間の間バス250−A上に一定のアドレス値を
維持することにより完了する迄稼動することが許容され
る場合には、その時にバス250−A上に適宜のアドレ
ス値を供給することにより、付加的な暗号化データバイ
トを要求することが可能である。 【0045】形態ビットSB1が論理値0を有しており
且つ形態ビットSB0が論理値1を有している場合には
、暗号制御論理204はPGMリード262上の値に無
関係に、OPGMリード263上に論理0のパルスを供
給することはなく、実効的にOCEPROM201−2
のプログラミング、即ち書込みを防止している。 【0046】形態ビットSB1リード251が論理値0
を有しており且つ形態ビットSB0リード252が論理
値0を有している場合には、OCEPROM201−2
の内容が許可なく開示されることを防止するために通常
の稼動モードにおいて特別の構成が強制的に与えられる
。SB1リード251の論理0の値に従って、ラン時間
セキュリティモニタ202が、各opcodeフェッチ
のソース、即ち発信元を記録するために、ステータス及
びタイミングバス254上の信号値を検査する。特定の
opcodeがOCEPROM201−2からフェッチ
されると、ラン時間セキュリティモニタ202が、op
sodeが実行を開始するや否や、イネーブルリード2
53上に論理1の値を供給し、その際にデータバスセレ
クタ203が、該opcodeの実行に対する必要に応
じ、データバス250−Dからバス250−Fへオペラ
ンドデータを転送することを許容する。特定のopco
deがNOCEPROMからフェッチされると、ラン時
間セキュリティモニタ202が、該opcodeの実行
期間中にイネーブルリード253上に論理1の値を供給
することはなく、その際にデータバスセレクタ203が
バス250−Dからバス250−Fへデータを転送する
ことを防止する。このように、OCEPROM201−
2への読取りアクセスは、NOCEPROMから実行さ
れる任意のソフトウエアに対して不許可状態とされる。 【0047】形態ビットSB1の値が論理0であり且つ
形態ビットSB0の値が論理0である場合には、OCE
PROM201−2内の位置の検証(読出し)は、該内
容のプログラミング又は読出しに対して主に意図されて
いる動作モードにおいては許可されることはない。従っ
て、暗号制御論理204は、出力ストローブリード25
9上に論理値1を発生することはなく、且つ暗号回路2
07は何らかのデータをデータバス250−Bからデー
タバス250−Eへ転送することはない。従って、セレ
クタ203は、データバス250−D上に存在するデー
タをラン時間データバスに250−Fへ供給可能な状態
とさせることはない。 【0048】形態ビットSB1が論理値0を有しており
且つ形態ビットSB0が論理値0を有している場合、暗
号制御論理204は、PGMリード262上の値とは無
関係に、OPGMリード263上に論理0のパルスを供
給することはなく、実効的にOCEPROM201−2
のプログラミング、即ち書込みを防止している。 【0049】興味のあることであるが、従来技術と比較
しての利点は、データ暗号化のプロセスに対して必要な
図3の実施例の回路及び構成の程度が何れかの潜在的な
侵略者から分離されていることである。従来技術におけ
る場合には、集積回路パッケージ及び該回路の物理的寸
法が、暗号手法を出し抜く場合に関与する困難性のレベ
ルを著しく増加させるべく作用している。このことに加
えて、図3の暗号構成によって使用される信号は二つに
すぎず、従って集積回路パッケージの外部から容易に制
御することが可能である。これらの信号は、(1)アド
レスバス250−A及び(2)暗号回路を動作するのに
必要とされるDCパワーである。前述した如く、アドレ
スバス250−Aの値における変化は、暗号制御論理2
04をして再度初期化させ、実効的に現在のデータバイ
トの暗号化を停止させ且つ新たなアドレス値で新たに開
始する。これらの回路を動作させるのに必要とされるD
Cパワー信号における変化は、それらをしてより高速又
はより低速の何れかで動作させる。しかしながら、これ
らの状況下において、集積回路パッケージ内に収容され
ている全ての回路が、同一の範囲に亘り速度が増加乃至
は減少する。従って暗号制御論理204をOCEPRO
M201−2よりも早く又は遅く一貫性をもって動作さ
せることは不可能である。このことは、本発明の暗号メ
カニズムの完全性乃至は一体性を維持するのに貢献して
いる。暗号回路を動作させるために使用されるその他の
全ての信号は、集積回路パッケージ内で派生される。 【0050】特に興味のあることは、一実施例において
は、暗号化を実施する態様に影響を与えるために使用す
ることの可能な全ての外部的に制御可能なクロック、タ
イミング又は同期信号を除去している。この除去を行な
うために、暗号制御論理204は、非同期シーケンシャ
ル回路設計の現在のプラクティスに従って構成されてい
る。この実施例において特に興味のあることは、暗号制
御論理204を再度初期化し且つOCEPROM201
−2をしてデータバス250−D上に新たなデータを発
生させるために信号新アドレス255を使用しているこ
とである。注意すべきことであるが、信号新アドレス2
55はOCEPROM201−2に対してのイネーブル
信号でなく、それは、単に、新たなアドレス値が提供さ
れたことを表わすにすぎない。ここで選択された態様で
この信号を使用することは、何れかの侵略者が要求され
たデータバイトを暗号化するために選択されたキー値に
関する制御を実施することを防止している。このことは
、丁度暗号制御論理204がOCEPROM201−2
へ指示を与えて暗号キー値を発生させた如く、外部的に
供給されたアドレスを変化させることにより以前に行な
われている場合がある。この実施例における付加的な興
味のあることとしては、OCEPROM201−2によ
って発生されるデータ伝搬リード260を使用すること
である。データ伝搬信号は、OCEPROM201−2
から要求されたデータが供給され、且つ与えられた信号
経路に沿ってその宛先へ伝搬するための充分な期間を有
したことを表わす。この信号を使用することにより、タ
イミング又は同期信号に関する外部的依存性を除去する
ことが可能である。この実施例における付加的な興味の
あることとしては、信号nstart読取り(リード2
61上)を使用することであり、そのことは、暗号制御
論理204がOCEPROM201−2へ指示を与えて
暗号キー値を発生させることを可能とする。これら三つ
の信号は、関連して使用され、単一の集積回路パッケー
ジ内で暗号化のプロセスを制御する新規な手段を与えて
いる。これらの信号の何れもが集積回路パッケージの外
部から直接的に制御可能なものではなく、且つそれらを
一体的に使用することにより、この暗号メカニズムの弱
体性を著しく減少させている。 【0051】暗号化検証の適用 本発明に基づいて構成された集積回路が暗号化検証を実
施すべく構成されている場合には、OCEPROMから
要求されるデータは開示される前に暗号化される。要求
されたデータバイトのアドレスがその要求者によって与
えられる。本発明に基づいて、暗号化方法は、暗号キー
としてOCEPROM内に格納されるユーザコードのバ
イトを使用しており、その際に別の暗号キーを格納し且
つ使用することを必要とすることはない。 【0052】開示の前に要求されたデータバイトを暗号
化するために、オンチップ回路が以下のプロセスを制御
する。要求されたデータバイトが一時的な位置、即ち「
データレジスタ」内にフェッチされ且つ格納される。 該要求者によって供給されるアドレスが、アドレスビッ
トA2 ,A3 ,A4 を強制的にゼロとすることに
より変更される。これらのビットは、アドレスビットA
0 で開始するアドレスフィールドの最小桁端部からカ
ウントすることによって識別される。新たに形成された
アドレスは、「暗号キーバイト」として使用されるため
にOCEPROMから別のバイトをフェッチするために
使用される。暗号キーバイトは、データレジスタ内に格
納されているバイトとビット毎にXNOR処理される。 このことは、暗号キーバイトのビットK0 はデータレ
ジスタのビットD0 とXNOR処理され、該キーバイ
トのビットK1 がデータレジスタのビットD1 とX
NOR処理され、以下同様の処理が行なわれることを意
味している。その結果得られる値は、要求されたデータ
バイトの暗号化した値として開示される。 【0053】この暗号技術の一実施例の一例を表4を参
照して次に説明する。OCEPROMから要求されたデ
ータバイトがアドレスCOFF hex及びデータ値
AChexを有するものと仮定する。要求されたデータ
バイトがフェッチされ且つデータレジスタ内に格納され
る。次いで、該アドレスがCOE3 hexの値へ変
化される。このアドレスに位置されているバイトがフェ
ッチされ且つデータレジスタバイト内に格納されている
データとビット毎にXNOR処理される。アドレスCO
E3 hexにおけるバイトが8B hexの値を
有するものと仮定する。その結果得られる暗号化された
値はD8 hexである。興味のあることであるが、
本発明によれば、暗号化検証動作モードにおいて、キー
バイトは権限のないユーザによって検知されることは不
可能であると言うことである。なぜならば、各キーバイ
トはそれ自信を暗号化するために使用されており、その
結果暗号化された出力は各ビットに対し論理1を有して
いるからである。このことは、敵対するプログラムに対
して本質的に公知のアドレスデータを暗号キーとして使
用する従来方法と比較して明らかに著しい利点を与えて
いる。
表 4
Hex 二 進 要求
されたデータバイトのアドレス COFF
1100,0000,1111,1111 実際の
データ値
AC 1010,1100 暗号
キーアドレス
COE3 1100,0000,1110,00
11 暗号キーデータ
8B 1000,
1011 暗号化データ(XNOR)
D8 110
1,1000 【0054】当然に、例えば、全てが1、全てが0、又
は1と0との組合わせ等のようなアドレスビットの異な
った組合わせを選択した値へ強制することにより、オン
チップメモリ内に格納されている情報を暗号キーとして
選択する任意の所望の態様を使用することが可能である
。一方、選択した組のアドレスビットを、読取られるべ
きアドレス位置内に収容される選択されたビットでそれ
らに関する論理的又は演算処理を実施することにより変
更させることが可能である。同様に、例えば、データバ
イト及びキーバイトを使用して演算及び/又は論理機能
を実施することにより、暗号キーを使用してデータを暗
号化する任意の所望の態様を使用することが可能である
。更に、このような暗号化は、全てのビットを使用して
与えることが可能であるか、又は、別法として、一つ又
はそれ以上のビットを暗号化されないまま残存させるこ
とが可能である。所望により、どのビットを暗号化させ
るかの選択は、例えば、所望のデータバイト内において
得られるデータ及び/又は暗号キーの値に依存して時間
に関し変化することが可能である。更に、別の実施例に
おいては、キーバイトのビットは、データバイトを暗号
化するためにそれらを使用する前にそれらの順番を変化
させることにより、基本的にスクランブルされる。 【0055】決定論的欠陥分離 図4を参照して、一実施例において選択した特定の暗号
化方法がどのようにしてその保護されているセグメント
内に収容される情報を開示することなしに、保護されて
いるメモリセグメント内におけるビット欠陥の決定論的
分離を行なうことを可能とするかについて説明する。図
4は、暗号キーバイトを対構成としてデータバイトとさ
せる一実施例を詳細に示している。暗号化されたメモリ
出力は、一般的に、「テストベクトル」、即ち暗号化さ
れたデータの信頼されるストリームに対して比較される
。これら二つのデータバイトストリームの間の差異は、
テストベクトルか又はメモリからダンプされた暗号化デ
ータの何れかに欠陥が存在することを表わす。このよう
な差異が検知され、且つテストベクトルが正しいもので
あると証明される場合には、暗号化データストリームが
エラーであると推論する。ここでは、バイト欠陥は、そ
のバイト内の一つ又はそれ以上のビットが誤った2進値
(これらの各々はビット欠陥と呼ばれる)が存在する状
態として定義される。各キーバイトは、七個のデータバ
イト及びそれ自身をエンコードする。特定の32バイト
セグメントの場合、説明のためにキーバイトKB1 及
びそれと関連するデータバイトDB11−DB17を選
択することが可能である。特定のバイトストリームにお
いて発生される故障ノードは一般的には以下の三つのク
ラスの内の一つへ分類される。 【0056】(1)一組のバイト{DB11...,D
B47}からのデータバイト内の単一ビットエラー。 (2)一組のバイト{KB1 ,KB2 ,KB3 ,
KB4 }からのキーバイトにおける単一ビットエラー
。 (3)キー及びデータバイトが選択された暗号パターン
によって関連されており、且つエラーの二つのビットが
それらの夫々のバイト内の同一の相対的な位置を有する
ように、タイプ(1)のエラーとタイプ(2)のエラー
とを有する二重ビットエラー。 【0057】一例を次の表5に示してある。 【0058】表示したビットは二重ビットエラーを構成
している。データバイト(故障モード1)における単一
ビットエラーは、簡単に検知可能である。なぜならば、
それらは、テストベクトルにおけるそれらの対向するも
のと等しくないからである。表6に示した如く、暗号(
XNOR)に対して選択された機能を検討すると、最初
に、キーバイトにおける単一ビットエラーが検知不可能
であるように見えるかも知れない(なせならば、各キー
バイトは、それ自身を暗号化するために使用されており
、その結果は常に「1」だからである。 【0059】しかしながら、各キーバイトも七個のデー
タバイトを暗号化することを注意すべきである。単一の
キービットエラーは、これら七個のデータバイトの各々
におけるデータビットエラーとして表わされる。これら
七個のデータビットエラーの各々がそれらの夫々のバイ
トにおける同一の相対的ビット位置を有するという事実
によって独特に識別される。 【0060】XOR(XNOR)を使用する例外メカニ
ズムにおける二重ビットエラー(故障モード3)の検知
に関連する伝統的な問題は、特定のキーバイトが一つの
データバイトのみをエンコードするということである。 このことは、故障モード3が予測不可能であることを意
味している。本発明の暗号構成の場合には、故障モード
3は特定の故障したキーバイト/ビットに関連する六個
の残りのデータバイトの各々における単一のビットエラ
ーとして表われる。一例として、暗号化したメモリデー
タに対するテストベクトルの以下の比較を参照する。 暗号化前の
二重ビットエラーを有する
正しいデータ値 実
際のメモリ内容 DB37 00
00 0000 000
0 0000 DB36 11
11 1111 111
1 1111 DB35 00
00 0000 000
0 0000 DB34 11
11 1111 111
1 1111 DB33 00
00 0000 000
0 0000 DB32 11
11 1111 111
1 1111 DB31 00
00 0000 000
0 0100 KB3 00
00 0000 000
0 0100 正しい暗
号化 上の二重ビットエラーを
反映する テストベクトル
暗号化データストリーム
DB37 1111 1111
1111 1011
DB36 0000 0000
0000 0100
DB35 1111 1111
1111 1011
DB34 0000 0000
0000 0100
DB33 1111 1111
1111 1011
DB32 0000 0000
0000 0100
DB31 1111 1111
1111 1111
KB3 1111 1111
1111 1111 【006
1】正しい暗号化されたデータテストベクトルが、二重
ビットエラーを検知するために、暗号化されたデータス
トリームと比較される。この暗号化検証用のアプローチ
は、保護されている情報をそれ自身の暗号キーとして使
用することを可能とし、その際にユーザが、別の組の暗
号キーバイトを与え、プログラムし又は安全対策を講じ
ることを必要とすることはない。それは、決定論的な欠
陥分離を行なうことを助け、必要な場合に、正しいエラ
ービットを見つけることを可能とする。該データはそれ
自身の暗号キーとして作用し、従って何等付加的な回路
又は集積回路表面積が、一つ又はそれ以上のセキュリテ
ィキーを保持し、又はスタート値から多様な暗号キーを
与えるために擬似ランダムカウンタを与えることが必要
とされることはない。このアプローチは、例えばフィー
ルドでの診断等のような検証目的のためのそれらのプロ
グラムの暗号化したものをユーザが維持することを可能
とし、このことは本質的に、暗号化されていないものを
維持するよりも一層安全である。このアプローチは、「
優雅に劣化」する(即ち、「キー」バイトの何れか一つ
が発見されると、保護されているデータの内の8バイト
のみが開示されるにすぎない)。これらの8バイトは、
隣接しているものではなく、従って多分、完全なコンピ
ュータ命令を開示するものではない。 【0062】本明細書に記載したメモリ保護アーキテク
チャを使用することにより、システム設計の柔軟性を維
持することが可能である。なぜならば、それは、コンピ
ュータプロセサが、保護されているメモリのセキュリテ
ィ、即ち安全性に対して妥協することなしに、内部メモ
リ(例えば、マイクロコントローラ上に設けられるもの
)又は外部メモリからのいずれかから実行することを可
能とするからである。本明細書に記載した特定の回路を
実現することにより、このメモリ保護アーキテクチャの
弱体性を著しく減少させることが可能である。なぜなら
ば、何等外部的に派生される同期信号が暗号化プロセス
に対して必要とされないからである。 【0063】本明細書に記載した特定の例は、保護され
るメモリ内容を、暗号化検証のために32個のバイトセ
グメントへ実効的に区分している。これら32個のバイ
トセグメントの各々は、図5に示した如く、該セグメン
トの「ベース」において位置されている4バイトテーブ
ル(表)によって暗号化される。出力データの各32バ
イト部分はキーとは独立的なものである。 【0064】以上、本発明の具体的実施の態様について
詳細に説明したが、本発明は、これら具体例にのみ限定
されるべきものではなく、本発明の技術的範囲を逸脱す
ることなしに種々の変形が可能であることは勿論である
。
メモリ内に格納されている専有情報乃至はアルゴリズム
の保護に関するものである。更に詳細には、本発明は、
元の保護されたアルゴリズム乃至は情報を開示すること
なしに、検査又はトランスポートのために、コンピュー
タからこのデータを転送する技術に関するものである。 このことを達成するために使用される技術は、転送デー
タを暗号化する特定の方法である。この技術は、更に、
私的又は保護されている情報の何らかのトランスポート
に適用可能なものである。 【0002】 【従来の技術】現在のところ、エンクリプション(暗号
)技術は、メモリ保護方法の中に完全に包まれている。 このメモリ保護方法の目的は、特定のコンピュータメモ
リセグメントの内容が不当に開示されることを防止し、
一方このデータに関するある種の診断を行なう能力を維
持することである。本件は、集積回路、特にマイクロコ
ントローラ上に位置されたメモリをそのように保護する
ことに関するものである。本件においては、保護される
べく選択されるメモリはオンチップのEPROMであり
、本明細書においてはOCEPROMと呼ぶこととする
。本明細書において言及されるその他のタイプのメモリ
は、非「オンチップEPROM」メモリ、即ちNOCE
PROMと呼び、両者を区別することとする。NOCE
PROMは、本発明によって保護されるセグメント以外
の何らかのメモリを有している。NOCEPROMのカ
テゴリに属するメモリは、OCEPROMを有する集積
回路上に物理的に位置されているか又はされていない場
合があり、且つ例えば、NOCEPROMのカテゴリに
おける以下の如きメモリ、即ちオンチップRAM、オン
チップROM及び何れかのオフチップメモリを包含する
。 【0003】図1は、システムデータ/アドレスバス1
05、マイクロコントローラ101、メモリ装置110
及びマイクロプロセサ120を有する典型的な従来のマ
イクロプロセサシステムを示した概略図である。マイク
ロコントローラ101は、バス101−1を介してシス
テムアドレス/データバス105へ接続されており、且
つOCEPROM101−2及びNOCEPROM10
1−3を有している。メモリ装置110は、上述した定
義に従ってNOCEPROMとして示してあり、それは
バス110−1を介してシステムアドレス/データバス
105へ接続されている。マイクロプロセサ120はバ
ス120−1を介してシステムアドレス/データバスへ
接続されている。説明の便宜上、本明細書では、例えば
、マイクロコントローラ101、マイクロプロセサ12
0又はその他のプロセサ(不図示)によりNOCEPR
OMから実行される何れかのコードによりマイクロコン
トローラ101内に収納されているOCEPROM10
1−2の内容が許可なく開示されることを防止すること
が所望されている状態について説明する。 【0004】物理的マイクロコントローラメモリの特定
のセグメントの内容が開示されることから保護されるべ
きである場合には、マイクロコントローラアーキテクチ
ャの現在の環境及び使用は、少なくとも二つの検討事項
を支配する。第一の検討事項は、これらのメモリ内容を
「ラン時間」においてどのように保護するかということ
である。二番目の検討事項は、変更動作モード期間中に
これらのメモリ内容をどのように保護するかということ
である。 【0005】「ラン時間」という用語は、ここでは、マ
イクロコントローラプロセサがメモリからの命令をフェ
ッチし且つ実行する期間のことを意味する。これらの命
令は、一部のデータを処理するために使用することが可
能である。そのように命令と関連したデータは、命令の
「オペランド」と呼ばれる。マイクロコントローラの生
来の命令を使用して物理的メモリの保護したセグメント
の内容を開示させることが考えられる。例えば、データ
転送命令を使用して、保護されているセグメントからの
データを出力ポートへ転送させることが可能である。 【0006】現在行なわれている別の動作モードは、一
般的には、プログラミング、又は保護されているセグメ
ントのプログラム検証のために使用されており、且つ一
般的には、「メモリダンプ」、「ROMダンプ」又は「
EPROMモード」の一つ又はそれ以上のものとして言
及されている。この別の動作モードに関連する名称がど
のようなものであろうと、それは、マイクロコントロー
ラを、その通常の稼動形態以外の何らかの形態とするこ
とを特徴としている。この別の動作モードの目的は、マ
イクロコントローラのトータルメモリの何らかの物理的
セグメントの内容を開示させるか又はそれへアクセスす
るためである。一般的には、この別の形態は、マイクロ
コントローラのオンチッププロセサ能力を利用するもの
ではない。 【0007】本発明は、主に許可なしで情報が開示され
ることに対する対策(「読取り保護」)に関するもので
あるが、それは、更に、メモリの保護されているセグメ
ントの内容の制御乃至は変更防止に共通のものである。 これは「書込み保護」と呼ばれる。メモリ保護メカニズ
ムの一部として、「書込み保護」は、情報の開示を防止
すべく構成された手段と共に実施される場合もあればさ
れない場合もある。 【0008】マイクロコントローラに対する殆どの従来
のメモリ保護メカニズムは、二つの種類の内の一つに分
類され、それらの種類は、クラス1及びクラス2として
区別することとする。クラス1のメカニズムは、保護さ
れているデータへのアクセスを制御するために単一要素
(即ち、コンピュータビット又は何らかのタイプのヒュ
ーズ)を使用する。この単一要素が適切に構成される場
合には、一般的に以下の対策がとられる。「ラン時間」
において、「オペランド」として保護されているメモリ
セグメントからのデータを使用することが可能な命令の
みがそのメモリセグメント内に格納され且つそこからフ
ェッチされる命令である。「メモリダンプ」モードにお
いては、その保護されたメモリセグメントへのアクセス
が許容されることはない。クラス2のメカニズムは、ク
ラス1によって使用されるものと同一の制限が「ラン時
間」において使用される。「メモリダンプ」モードにお
いて、保護されているメモリセグメントへのアクセスは
、一般的に、「キー」の使用を介して制御される。この
ようなキーは、通常2進値である。該キーのフィールド
幅は、典型的に、128乃至256ビットの範囲内であ
り、16乃至32個の8ビットバイトの範囲に対応して
いる。このオーダのフィールド幅は、2128 乃至2
256 の巨大な数の可能なキーを与え、且つ単一の正
しいキーを推測することを困難な作業としている。従来
技術においては、これらのキーは、オンチップソフトウ
エアを保護するために二つの態様で使用されている。 【0009】第一の従来技術の方法においては、オンチ
ップメモリへアクセスするための許可として単に正しい
キーを使用することが関与する。このことは、該キーが
保護されたメモリを有する集積回路へ提供され、且つ該
集積回路がその提供されたキーを該集積回路上に格納さ
れている正確なキー値と比較することを意味する。これ
ら二つの値がマッチ、即ち一致する場合には、オンチッ
プメモリへのアクセスに対する許可が与えられる。この
アプローチは、組合わせ錠に非常に類似した巨大な数の
可能なキーの値に依存するものである。このアプローチ
には幾つかの欠点があり、即ち、(1)正確なキーの値
を警護しなければならず、(2)正確なキーの値をチッ
プ上に格納せねばならず、そのことは高価な集積回路表
面積を使用することになり、且つ(3)そのキーが発見
された場合には、この安全メカニズムは壊滅的な態様で
崩壊し、絶対的に何らのメモリ保護も維持されることは
なくなる。 【0010】第二の従来技術の方法では、外部環境に開
示される前にオンチップメモリ内に格納される情報を暗
号化するためのキーを使用する。このエンクリプション
(暗号)は、通常、保護されている情報を、オンチップ
メモリからのバイトのストリームとして観察する。この
バイトのストリームは、通常、オンチップメモリの全て
が暗号化され且つ出力される迄、キーバイトで繰返しX
OR処理又はXNOR処理される。従って、32個のキ
ーバイトがある場合には、最初のキーバイトはメモリか
らの最初のバイトとXNOR処理され、二番目のキーバ
イトはメモリからの二番目のバイトとXNOR処理され
、以下そのように32番目のバイト迄処理が行なわれる
。次いで、メモリからの33番目のバイトが一番目のキ
ーバイトとXNOR処理され、且つ該プロセスはそれ自
身繰返して開始する。この従来技術のアプローチの場合
には幾つかの欠点があり、即ち(1)キーがオンチップ
で格納されねばならず、そのことは高価な集積回路の表
面積を使用し、(2)キーが発見されると、その安全メ
カニズムは壊滅的な態様で崩壊し、且つ(3)オンチッ
プメモリの何れかのプログラムしていないバイトがキー
バイトとXNOR処理されると、そのキーバイトが知ら
れてしまうということである。 【0011】従来技術メモリ保護方法1(クラス2)一
つの従来方法(例えば、インテル839XBH,879
XBH,87C196KBタイプの装置おいて使用され
ている)は、オンチッププログラムメモリ用の4レベル
の保護を画定するために集積回路のチップコンフィギュ
レーション(形態)レジスタ(CCR)内に位置されて
いる二つのビットを使用している。これらのビットは、
LOC0及びLOC1として言及されており、且つ以下
のレベルの保護を与える。
表 1 LOC 1
LOC 0 読取保護
書込保護 0 0
イネーブル済 イネーブル
済 0 1
イネーブル済 ディスエーブル済
1 0
ディスエーブル済 イネーブル済 1
1 ディスエーブ
ル済 ディスエーブル済【0012】読取り保護
がイネーブルされると、(1)オンチップメモリの最後
の五つのバイトはプログラム格納のために使用すること
はできず、(2)オンチップメモリはオンチップメモリ
からの命令によってのみ読取ることが可能であり、且つ
(3)ノンマスカブル(非マスク可能)インタラプト(
NMI)が、次のリセット迄、集積回路をして外部実行
へスイッチさせる。これら三つの事項は、保護されてい
るオンチップのメモリ内に格納されているデータのラン
時間開示を防止する。 【0013】/EA(外部アクセス、外部メモリ)の値
はリセットでラッチされ、従って集積回路は、稼動中外
部から内部への実行へスイッチさせることはできない。 このことは、分割命令フェッチ、即ち外部メモリからの
opcode、内部の保護されたメモリからのオペラン
ド、を防止するためのラン時間セキュリティの一側面と
して行なうことが可能である。このことは、しばしば、
この信号をうまく制御することにより、/EAをラッチ
することのない集積回路上で達成することが可能である
。 【0014】メモリダンプを実施するためには、オンチ
ップの16バイトセキュリティキーがマッチ、即ち一致
されなければならない。チップは、外部メモリ内の特定
した位置に格納されるユーザが供給したキーと集積回路
上に格納されている16バイトのセキュリティキーとを
自動的にチェックする。マッチ、即ち一致がある場合に
は、オンチップメモリの内容が外部メモリへダンプされ
る。マッチ(一致)が存在しない場合には、チップは、
それ自身をエンドレスループの内部実行状態とさせる。 書込み保護がイネーブルされると、オンチップメモリに
対して更なるプログラミングが許容されることはない。 【0015】従来技術メモリ保護方法2(クラス2)こ
の方法(例えば、インテル87C51,87C51BH
,87C51FA,87C51FB,87C51GA,
87C52BHタイプの装置において使用されている)
においても、オンチッププログラムメモリ用の4レベル
の保護を画定するために集積回路上で2ビットのEPR
OMを使用している。これら二つのビットはB1及びB
2として言及されており、表2に示したレベルの保護が
与えられる。
表 2 B1 B2
保
護 0 0 (a)外部的
にフェッチしたコードは内部プログラムメモ
リをアク
セス不可 (
b)更なるプログラミングはディスエーブル
(c)プログラム検証
(メモリダンプ)ディスエーブル) 0
1 (a)外部的にフェッチしたコード
は内部
プログラムメモリをアクセス不可
(b)更なるプログラミ
ングはディスエーブル 1 0
後の画定のためにリザーブ
1 1 なし【00
16】/EAの値は、オンチップメモリが読取り保護さ
れている場合には、リセットでラッチされる。これらの
条件化において、/EAの「現在」値は、適切な実行の
ためには、ラッチされている値と一致せねばならない。 このことは、装置のラン時間メモリ保護の一側面である
場合がある。メモリダンプはこの方法を使用する全ての
チップに対して暗号化される。オンチップの32バイト
メモリアレーがユーザによってプログラムされる。この
メモリアレイは、検証期間中にプログラムバイトをエン
コードするために使用される。各プログラムバイトは、
該アレイからの32キーバイトの一つと論理的にXNO
R処理される。該キーバイトは逐次的にアドレスされる
。従って、プログラムの最初のバイトは、該アレイの最
初のバイトとXNOR処理される。プログラムの二番目
のバイトは該アレイの二番目のバイトとXNOR処理さ
れ、且つ以下同様にプログラムの32番目のバイト迄同
様の処理が行なわれる。次いで、プログラムの33番目
のバイトが該アレイの最初のバイトとXNOR処理され
る。このエンクリプション(暗号化)アルゴリズムは、
プログラム全体に対してこのような態様で繰返し行なわ
れる。 【0017】従来技術メモリ保護方法3(クラス1)こ
のアプローチ(例えば、インテル8751H及び874
4Hタイプの装置において使用されている)は、オンチ
ップメモリへのアクセスを制御するために集積回路上で
隠されている一つのロックビットを使用する。このビッ
トがプログラムされると、(1)内部プログラムメモリ
は読出すことが不可能であり、(2)該装置を更にプロ
グラムすることが不可能であり、且つ(3)該装置は外
部メモリから実行することはできない。該装置を内部実
行へ制限することはこの方法の欠点である。該ロックビ
ットは、典型的に、EPROMセル内に格納され、且つ
EPROMの消去により該装置の完全な機能性が回復さ
れる。 【0018】従来技術メモリ保護方法4(クラス1)別
の従来技術(例えば、インテル8051AHP及び80
C51BHPタイプの装置において使用されている)は
、ラン時間において、プログラムメモリ空間を4Kバイ
トへ制限している。この空間は、二つの可能な態様のう
ちの一つでコンフィギャ、即ち形態付がなされねばなら
ない。それは、完全にチップ上に設けられるか、又は完
全にチップ外部に設けられる。この4Kバイト境界を超
えてのデータアクセスは、適宜のプログラム命令(例え
ば、MOVX@Ri,A又はMOVX A,@Ri)
を使用してレジスタRiを介して行なうことが可能であ
るにすぎない。明らかに、結合した内部/外部実行を阻
止することは、システム適用におけるこの方法の柔軟性
を低下させている。本明細書においては「ROMダンプ
」又は「EPROMモード」として言及されるプログラ
ム検証テストモードは、これらの装置から除去されてい
る。 【0019】従来技術メモリ保護方法5(クラス2)あ
る従来装置(例えば、インテル87C51FA及び83
C51FB装置)では、オンチップメモリへのアクセス
を制御するために単一のロックビットを使用している。 このビットがプログラムされないままに置かれると、何
等の保護が与えられることはない。このビットがプログ
ラムされると(1)/EAがリセットでラッチされて、
装置が稼動中に外部実行から内部実行へスイッチされる
ことを防止し、且つ(2)外部メモリから実行されるM
OVC命令(プログラムコードバイトを移動させるため
に使用される)は、内部メモリからコードバイトをフェ
ッチすることは許容されない。更に、上述した従来技術
方法2において説明した如く、32バイトエンクリプシ
ョン(暗号)アレイを使用してメモリダンプ出力をエン
コードする。このアレイは、常に、メモリダンプ出力上
にマップされている。このアレイがプログラムされない
ままであると、メモリデータは影響を受けることはない
。それがユーザによってプログラムされる場合には、R
OMデータはエンコードされる。 【0020】従来技術メモリ保護方法6(クラス2)別
の従来技術(例えばインテル8398装置において使用
されている)は、オンチッププログラムメモリへのアク
セスを制御するために集積回路上で隠されているメモリ
セル内に格納されている単一のロックビットを使用して
いる。このビットがプログラムされると、オンチップメ
モリは、外部メモリから実行するプログラムによって読
取ることは不可能である。メモリダンプを実行するため
に、16バイトのオンチップキーがマッチされねばなら
ない。メモリダンプモードにおいては、該キーは、集積
回路によって外部メモリから自動的に読取られる。外部
メモリから読取られる該キーがオンチップキーとマッチ
する場合には、メモリダンプが進行する。一方、マッチ
しない場合には、メモリダンプはアボート、即ち中断さ
れる。 【0021】従来技術メモリ保護方法7米国特許第4,
698,617号は、エンクリプション技術の変形例を
示しており、その場合、データを暗号化するために使用
されるキーは、異なったデータバイトが読取られる場合
に変化する。この米国特許は、そのカウントを既知の値
からスタートしてエンクリプション(暗号)キーを与え
るための擬似ランダムカウンタを使用することを記載し
ている。そのカウントが同一の既知の値からスタートす
る態様する擬似ランダムカウンタが、暗号化データを解
読するために受信用集積回路において使用されている。 この米国特許は、更に、エンクリプションキーが、極め
て簡単に、読取ることが所望されるデータのアドレスで
ある場合のエンクリプション技術の例をも示している。 【0022】これらは、上記米国特許の図1及び4に示
されているものを実施する場合の欠点である。最初に図
4を参照すると、その場合は、ROM出力を暗号化する
ためにアドレスが使用されている。エンコード回路用の
二つのオペランドの内の一方は、容易に分る(アドレス
)。エンコーディングはXOR/XNORに基づく可能
性があるので(図5a及び5b)、送信されたバイトの
ストリームを解読するために、ROM出力ビットに対す
るアドレスビットの固定したマッピングを決定すること
が必要であるにすぎない。ROMは、通常、最後のアド
レス変化から測定される評価すべき何らかの固定したイ
ンターバル(期間)を必要とする。このインターバルを
Te とする。Te の期間中、ROMは、通常、一定
の値の出力Vo を保持する。注意すべきことであるが
、図4のエンコード回路に対して出力ストローブが存在
しておらず、従ってその出力変化はバス10又はバス7
上の変化に関して相対的に直接的なものである。該マッ
ピングを決定するために、Te 未満の周期でバス10
上に適宜のアドレスパターンを印加し、且つバス8にお
けるVo に与える影響を観察する。 【0023】上述した米国特許の図1に示すものは幾分
より堅牢なものである。何れのエンクリプション(暗号
)オペランドも知られていないので、Voに関する未知
のマッピング及び未知のオペランドに関する影響を同時
的に観察せねばならない。しかしながら、その構成は、
ROMイネーブルリードを制御することを可能とするも
のであるから、正味の効果を決定することが可能である
。このことは幾つかの態様で行なうことが可能である。 第一に、Te を超える周期を有するアドレスで変化し
ている間に、リード11上の一定のアクティブな値を保
持することが可能である。このことは、幾つかの異なっ
たデータバイトに関する単一のエンクリプションキーの
効果を観察することを可能とする。第二に、Te を超
える周期でアドレス定数及びトグルリード11を保持す
ることが可能である。このことは、幾つかの(又は、全
ての)データバイトに関する各エンクリプションキーの
効果を決定することを可能とする。第三に、Te 未満
の周期でアドレス定数及びトグルリード11を保持する
ことが可能である。このことは、一定値Vo に関する
各キーバイトの効果を決定することを可能とする。 【0024】これらの手法の何れもがエンクリプション
マッピング又は保護されているデータを直接的に開示さ
せる蓋然性はないが、それらの手法は、その目的のため
に使用することが可能なかなりの量の情報を開示する。 前述した従来技術方法1乃至6の場合には幾つかの欠点
が存在している。例えば、プログラムデータを暗号化す
るために32バイトキーが使用される実施例においては
、かなりの量の集積回路の表面積が32バイトキーを格
納するために使用されねばならない。更に、32バイト
毎に各キーバイトが暗号化された出力パターンにおいて
繰返えされる。従って、各キーバイトは、プログラムの
1/32をエンコードする。単に一つのキーバイトを発
見するだけで、開示されることから保護することが所望
されているプログラムの顕著な部分をすぐさま開示する
こととなる。更に、OCEPROMのプログラムされて
いないバイトが該キーバイトの一つでエンコードされる
場合には、そのキーバイトは公知のものとなる。このこ
とは、保護されているプログラムがOCEPROMにお
いて使用可能な空間を完全に占有するものではない場合
に発生する場合があり、且つOCEPROMのプログラ
ムされていない部分はメモリダンプ期間中に出力される
。更に、このキー値は、常に、オンチップ及びオフチッ
プの両方において安全な状態に維持されねばならない。 最後に、キー全体が発見される場合には、保護メカニズ
ムは壊滅的な態様で崩れ去り、全く何等のメモリ保護も
維持されないこととなる。 【0025】 【課題を解決するための手段】本発明の一実施形態によ
れば、エンクリプション(暗号化)方法が、エンクリプ
ション(暗号)キーとして、特定のオンチップメモリ内
に格納されているデータのあるバイトを選択する。これ
らの選択されたバイトは、それら自身、及び上述した特
定のメモリ内の残りのデータの全てを暗号化するために
使用される。選択されたバイトは、エンクリプション、
即ち暗号化のために特に割当てられている値を有するも
のではなく、それらのバイトは、所定の規則に従って、
暗号化されるべきデータの本体から単純に選択される。 この技術が実施される場合には、上述したメモリ内に格
納されているデータの各バイトは、開示の前に、指定さ
れたエンクリプション(暗号)キーバイトの一つと結合
される(例えば、排他的NORゲートを使用して)。こ
の実施例によれば、そのエンクリプションキーバイトを
読取ろうとする侵略者はその意志がくじかれることとな
る。なぜならば、それらはそれら自身を暗号化するため
に使用されており、その結果各々のビットが論理値1で
ある出力バイトとなっているからである。 【0026】本発明の技術を使用する上で特定の利点が
存在している。ユーザは、一組のキーバイトを別個に供
給し、プログラムし又は安全対策を施すことが必要とさ
れるものではない。更に、このようなバイトを格納する
ために何等シリコン面積が無駄に使用される訳でない。 この暗号化技術の結果を解読するためには、侵略者は元
のデータのある部分を知ることが必要である。更に、こ
の技術は優雅に劣化する。暗号化データが単一の共通依
存性を有することがないようにキーが選択される。従っ
て、単一のキーが発見された場合でも、暗号化データの
非常に小さな部分のみが開示されるにすぎない。 【0027】 【実施例】本発明によれば、データ暗号化の新規な方法
が提供され、メモリの内容を保護するメカニズムを提供
している。これは、マイクロコンピュータにおいて使用
するのに特に適しており、以下の本発明の説明はマイク
ロコントローラへの適用の場合について特に説明する。 しかしながら、本発明のエンクリプション(暗号)構成
及びその技術は、マイクロコントローラ、マイクロプロ
セサ又は任意のスケールのプロセサ及びメモリ装置以外
のデータ転送において使用されるメモリシステムにおい
て使用するのに適しているものである。 【0028】本明細書においてOCEPROMと呼ばれ
るメモリのセグメントをマイクロコントローラの物理的
な一部として定義する。本発明のラン時間メモリ保護構
成の一実施例は、図2に示した如く、四個の主要な要素
を有している。 【0029】命令opcodeがフェッチ、デコード及
び実行(FDE)ユニット22によってOCEPROM
21からフェッチされ、且つこのプロセスはセキュリテ
ィモニタ23によってモニタされる。本ラン時間セキュ
リティメカニズムの最初の拘束条件は、唯一つのFDE
ユニットがOCEPROM21へアクセスすることが可
能であるということである。この特権を有するマイクロ
コントローラFDEユニットは、特に、物理的にOCE
PROM21を有するマイクロコントローラである。こ
の拘束条件は、OCEPROM21へのラン時間直接メ
モリアクセス(DMA)の可能性を取除いており、且つ
その他のラン時間複数アクセスメカニズムを排除してい
る。一例として、OCEPROM21を有するマイクロ
コントローラがマルチプロセサシステム内に設けられる
場合、このOCEPROMは、それが、収容されている
特定のマイクロコントローラによってのみラン時間にお
いてアクセスすることが可能である。別の実施例におい
ては、例えばマイクロプロセサ及びDMAコントローラ
等のような複数個のプロセサ又はコントローラによって
、保護されているメモリセグメントに対して複数実行ア
クセスが与えられる。一つのこのような実施例において
は、保護されているメモリに対しての実行アクセスが可
能な各装置に対して一つづつ複数個のセキュリティモニ
タが使用される。別の実施例においては、単一のセキュ
リティモニタが使用され、それはより洗練されており、
且つ複数個の実行可能性が存在するという事実を考慮す
ることが可能である。この実施例においては、例えば、
単一のセキュリティモニタは、保護されているメモリか
らの情報を読取ることが可能であるか否かを決定する場
合に、アクセスされることを所望するアドレスのみなら
ず、アクセスを所望する装置をも検討する。 【0030】以下の定義付は、本発明の一実施例に関連
する読取り及び書込み特権を例示するのに役立つ。以下
の説明に加えて、これらの特権を詳細に示してある。 【0031】「DATA」特権を、OCEPROMへの
「ラン時間」アクセスを制御するためのものとして定義
する。それは、例外アクセスとして考えることが可能で
あり、且つ敵対的なプログラムがソースOCEPROM
の内容をデータとして読取ることを防止すべく構成され
ている。DATA特権が許容される場合には、NOCE
PROMからフェッチされ且つ実行された命令は、オペ
ランドに対するソースとしてOCEPROMを使用する
ことが許容される。DATA特権が許容されない場合に
は、NOCEPROMからフェッチされた命令は、オペ
ランドに対するソースとしてOCEPROMを使用する
ことは許容されない。OCEPROMからフェッチされ
且つ実行される命令は、常に、オペランドに対するソー
スとしてOCEPROMを使用することが許容される。 これらの命令に対する参照において(「フェッチ及び実
行」)、そのフェッチ及び実行を実施するマイクロコン
トローラは特に物理的にOCEPROMを有するマイク
ロコントローラである。 【0032】OCEPROMの内容を変更するための試
みを制御するために「WRITE」特権を定義する。W
RITE(書込み)特権が許可される場合には、OCE
PROMは、与えられたプログラミングメカニズムによ
って変更することが可能である。WRITE特権が許可
されない場合には、与えられたプログラミングメカニズ
ムがディスエーブルされ且つOCEPROMの内容の変
更は許可されない。 【0033】一実施例においては、マイクロコントロー
ラは、一般的に理解されている通常の稼動モードとは別
に一つを超える動作モードを有している。これらのモー
ドは、OCEPROMのプログラム及び/又は検証を実
施することが意図されているものであり、且つ命令を実
行するためのマイクロコントローラ資源を使用する場合
もしない場合もある。それらは、何れの場合においても
、上述した「DATA(データ)」及び「WRITE(
書込み)」特権の強制下にある。これらの動作モードの
場合、OCEPROM内に収納されているデータが要求
によって開示しても良いものであるか否かを決定するた
めに「VERIFY(検証)」特権を定義する。このよ
うな要求は、マイクロコントローラが適宜の動作モード
にある場合に特定のメカニズムによって認識される。 VERIFYが許可される場合には、OCEPROMか
ら開示されたデータは、その格納されている値の正確な
表示である。VERIFYが許可されない場合には、O
CEPROMから何等データが開示されることはない。 「暗号化VERIFY」のみが許可される場合には、O
CEPROMから開示されたデータは実際の格納されて
いる値のエンクリプション、即ち暗号である。
表 3プログラム可能
形態ビット
特 権
機 能
NOCEPROMア
クセスから
のOCEPROM
暗号化 BIT SB1 BIT SB0
へのデータ WRITE VERIFY VERI
FY 1 1 Y
Y Y N
WRITE、暗号化VERIFY
許可、及
びセキュリテ
ィなしでのNOCEPROMか
ら
OCEPROMへのアクセ
ス許可 1
0 Y N
Y N WRITE禁
止、暗号化
VERIFY許可及び
NOCEPR
OMからOCEPROM
へのアクセス許可 0
1 N
N N Y WR
ITE禁止、暗号化
VERIFYのみ許可及び
NOCEPROMからOCEPROM
へのアクセス
否定 0 0 N
N N N
WRITE禁止、VERIFY
ディスエー
ブル、及び
NOCEPROMからOCEPROM
へのアクセス否定、そ
の際にトップレベルセ
キュリティを供給【0034】これらの四つのレベルの
セキュリティ(表3)は、OCEPROM内に格納され
ているデータが許可なく開示されることを阻止すべく構
成されている。更に、それらは、このデータが許可なく
変更されることを防止している。本発明に基づくマイク
ロコントローラの一実施例においては、OCEPROM
は、アドレスCOOO hex及びFFFF he
xの間に位置されている。これら四つのレベルのセキュ
リティは、OCEPROMの全てへのアクセスを制御す
る。更に、セキュリティビットSB1及びSB0を有す
るチップ形態バイトは、WRITE特権が許可されない
場合に、書込み保護状態とされる。チップ形態バイトは
暗号化されず、与えられた別の動作モードにおいて読取
り可能である。 【0035】図3は、本発明の一実施例に基づいて構成
されたマイクロコントローラの一部を示している。マイ
クロコントローラ200は、アドレスバス250−Aか
らアドレス信号を受取り且つバス250−Fへデータ信
号を供給するNOCEPROM201−3を有している
。これはNOCEPROMであるから、NOCEPRO
M201−3と関連して何等エンクリプション(暗号)
又は権限付与回路が使用されている訳ではない。 【0036】マイクロコントローラ200は、更に、ア
ドレスバス250−Bからアドレス信号を受取り且つア
ドレスバス250−Cからもアドレス信号を受取るOC
EPROM201−2を有している。OCEPROM2
01−2は、データバス250−Dへデータ信号を供給
する。これはOCEPROMであるので、それに収容さ
れるデータへのアクセスが権限が付与されたものである
ことを確保し、且つ必要とされる場合にはバス250−
E又はバス250−Fへ供給されるデータを暗号化する
ために付加的な回路が使用されている。表3に示した如
く、プログラム可能形態ビットSB1及びSB0はオン
チップセキュリティ回路の動作を制御する。以下の説明
は、表3において定義した形態ビットSB1及び形態ビ
ットSB0の組合わせに関する図3の回路及び構成の動
作について説明する。 【0037】形態ビットSB1及びSB0の両方が論理
値1を有する場合には、通常の稼動モードにおいてOC
EPROM201−2の内容が開示されることを防止す
るための何等特別な構成が強制されるものではない。こ
れらの条件下においては、OCEPROM201−2内
に収容されているデータは、アドレスバス250−A上
に適宜のアドレス値を供給することによりアクセスする
ことが可能である。アドレスモニタ205は、それがバ
ス250−A上で受取るアドレスを不変のままバス25
0−Bへ供給する。このアドレス値が前のアドレス値と
同一でない場合には、アドレスモニタ205は、新たな
アドレスリード255上に論理0パルスを供給する。エ
ンクリプション(暗号)制御論理204が、SB1リー
ド251のこの論理1の値及びSB0リード252の論
理1の値を検知し、且つキー読取りストローブリード2
56上に論理0の値を供給する。ゼロ回路206は、キ
ー読取りストローブ256の論理0の値を検知し、且つ
バス250−Bからそれが受取るアドレスビットA(2
,3,4)をバス250−CのビットA(2,3,4)
へ夫々不変のまま供給する。新たなアドレスリード25
5上の短い論理0パルスに応答して、アドレスバス25
0−B及び250−C上に存在するアドレスに従って、
OCEPROM201−2がデータバス250−Dへデ
ータを供給する。ラン時間セキュリティモニタ202は
、SB1リード251の論理1の値を検知し且つイネー
ブルリード253へ論理1の値を供給する。データバス
セレクタ203は、モードバス257を検査して、集積
回路が現在通常の稼動モードにあるか否かを決定し、且
つSB1リード251,SB0リード52及びイネーブ
ルリード253の各々の上に存在する論理1の値に従っ
て、ステータス及びタイミングバス254上に存在する
信号値に従ってそのように支持される場合には、データ
バス250−D上に存在するデータを、不変のままラン
時間データバス250−Fへ供給する。 【0038】形態ビットSB1及びSB0の両方が論理
値1を有する場合、OCEPROM201−2の内容の
プログラミング又は読出しのために主に意図された動作
モードにおいて該内容が開示されることを防止するため
の何等特別の構成は与えられない。これらの動作モード
は、通常の稼動モードに対する変形例として前に記載し
てある。これらの条件下においては、OCEPROM2
01−2内に収容されているデータは、アドレスバス2
50−A上に適宜のアドレス値を供給することによりア
クセスすることが可能である。アドレスモニタ205は
、それがバス250−A上で受取るアドレスを不変のま
まバス250−Bへ供給する。このアドレス値が前のア
ドレス値と同一でない場合には、アドレスモニタ205
が、新たなアドレスリード255上に短く論理0パルス
を与える。暗号制御論理204がリード251上のSB
1の論理1の値及びリード252上のSB0の論理1の
値を検知し、且つキー読取りストローブリード256上
に論理0の値を供給すると共に出力ストローブリード2
59上に論理0の値を供給する。ゼロ回路206は、キ
ー読取りストローブリード256の論理0の値を検知し
、且つそれがバス250−Bから受取るアドレスビット
A(2,3,4)を、バス250−CのビットA(2,
3,4)へ夫々不変のまま供給する。新たなアドレスリ
ード255上の短い論理0パルスに応答して、OCEP
ROM201−2は、アドレスバス250−B及び25
0−C上に存在するアドレスに従ってデータバス250
−Dへデータを供給する。モードバス257上に存在す
る信号値によって決定される如く、データバス250−
D上のデータは、以下の如くに、データバス250−E
又はデータバス250−Fの内の一つのみへ供給するこ
とが可能である。暗号回路207は出力ストローブ25
9の論理0値を検知すると共に形態ビットSB1リード
251の論理1の値を検知し、且つモードバス257上
の信号値が適切なものである場合には、バス250−D
からのデータを不変のままバス250−Eへ供給する。 ラン時間セキュリティモニタ202は、SB1リード2
51の論理1の値を検知し、且つ論理1の値をイネーブ
ルリード253へ供給する。データバスセレクタ203
はSB1リード251、SB0リード252及びイネー
ブルリード253の各々の論理1の値を検知し、且つモ
ードバス257上の信号値が適切なものである場合に、
ステータス及びタイミングバス254上に存在する信号
値に従ってそのように指示される場合に、バス250−
Dからのデータを不変のままバス250−Fへ供給する
。 【0039】形態ビットSB1及びSB0の両方が論理
値1を有する場合には、OCEPROM201−2へデ
ータをプログラムすることを防止するために何等特別の
構成はとられることがない。これらの条件下において、
適宜の動作モードにおいて、アドレスバス250−A上
にアドレスを及びデータバス250−G上にデータを供
給することにより、データをOCEPROM201−2
へプログラムさせることが可能である。アドレスモニタ
205は、それがアドレスバス250−A上で受取るア
ドレスを不変のままバス205−Bへ供給する。暗号制
御論理204は、SB1リード251の論理1の値及び
SB0リード252の論理1の値を検知し、且つキー読
取りストローブリード256上に論理0の値を供給する
。ゼロ回路206はキー読取りストローブリード256
の論理0の値を検知し、且つそれがバス250−Bから
受取るアドレスビットA(2,3,4)を夫々バス25
0−CのビットA(2,3,4)へ不変のまま供給する
。充分なアドレス及びデータ安定化インターバルの後に
、短い論理0パルスがPGMリード262へ印加される
。この短い論理0パルスは、暗号論理204をして、S
B1リード251の論理1の値及びSB0リード252
の論理1の値に従って、OPGMリード263上に短い
論理0パルスを供給する。OCEPROM201−2は
、OPGMリード263上の短い論理0パルスを検知し
、且つバス250−B及びバス250−Cによって一体
的に表わされるアドレス値に態様してOCEPROM2
01−2内の位置へバス250−Gからのデータをプロ
グラム、即ち書込む。 【0040】形態ビットSB1が論理値1を有しており
且つ形態ビットSB0が論理値0を有していると、通常
の稼動モードにあるOCEPROM201−2の内容が
開示されることを防止するために何等特別の構成が与え
られることはない。これらの条件下において、OCEP
ROM201−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
)へ不変のまま供給する。新たなアドレスリード255
上の短い論理0パルスに応答して、OCEPROM20
1−2は、アドレスバス250−B及び250−C上に
存在するアドレスに従ってデータバス250−Dへデー
タを供給する。ラン時間セキュリティモニタ202がS
B1リード251の論理1の値を検知し、且つ論理1の
値をイネーブルリード253へ供給する。データバスセ
レクタ203は、モードバス257を検査して、該集積
回路が現在通常の稼動モードにあるか否かを決定し、且
つSB1リード251及びイネーブルリード253の各
々の上に存在する論理1の値に従って、且つSB0リー
ド252上に存在する論理0の値に従って、データバス
250−D上に存在するデータを、ステータス及びタイ
ミングバス254上に存在する信号値に従ってそのよう
に指示される場合には、不変のままラン時間データバス
250−Fへ供給する。 【0041】形態ビットSB1が論理値1を有しており
且つ形態ビットSB0が論理値0を有している場合には
、OCEPROM201−2のプログラミング又は読出
しに対して主に意図されている動作モードにおいて該内
容が開示されることを防止するために何等特別の構成は
与えられない。これらの動作モードは、以前に通常の稼
動モードに対する変形例として説明してある。これらの
状況下においては、OCEPROM201−2内に収容
されるデータは、アドレスバス250−A上に適宜のア
ドレス値を供給することによってアクセスすることが可
能である。アドレスモニタ205は、それがバス250
−A上で受取るアドレスを不変のままバス250−Bへ
供給する。このアドレス値が前のアドレス値と同一でな
い場合には、アドレスモニタ205が新たなアドレスリ
ード255上に短く論理0パルスを供給する。暗号制御
論理204はSB1リード251の論理1の値及びSB
0リード252の論理0の値を検知し、且つキー読取り
ストローブリード256上に論理0の値を供給すると共
に出力ストローブリード259上に論理0の値を供給す
る。ゼロ回路206は、キー読取りストローブリード2
56の論理0の値を検知し、且つそれがバス250−B
から受取るアドレスビットA(2,3,4)を夫々バス
250−CのビットA(2,3,4)へ不変のまま供給
する。新たなアドレスリード255上の短い論理0パル
スに応答して、OCEPROM201−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へ供給する。 【0042】形態ビットSB1が論理値1を有しており
且つ形態ビットSB0が論理値0を有している場合には
、暗号制御論理204は、PGMリード262上の値に
無関係に、OPGMリード263上に論理0パルスを供
給することはなく、実効的にOCEPROM201−2
のプログラミングを防止している。 【0043】形態ビットSB1が論理値0を有しており
且つ形態ビットSB0が論理値1を有している場合には
、OCEPROM201−2の内容が許可なく開示され
ることを防止するために特別の構成が通常の稼動モード
において強制される。SB1の論理0値に従って、ラン
時間セキュリティモニタ202が、各opcodeフェ
ッチのソース(発信元)を記録するために、ステータス
及びタイミングバス254上の信号値を検査する。特定
のopcodeがOCEPROM201−2からフェッ
チされると、ラン時間セキュリティモニタ202が、そ
のopcodeが実行を開始するや否や論理1の値をイ
ネーブルリード253上に供給し、その際にデータバス
セレクタ203が、opcodeの実行のために必要に
応じて、データバス250−Dからoperandデー
タをバス250−Fへ転送することを許容する。特定の
opcodeがNOCEPROMからフェッチされると
、ラン時間セキュリティモニタ202は該opcode
の実行期間中に論理1の値をイネーブルリード253に
供給することはなく、その際にデータバスセレクタ20
3が任意のデータをバス250−Dから250−Fへ転
送することを防止する。このように、OCEPROM2
01−2への読取りアクセスは、NOCEPROMから
実行される任意のソフトウエアに対して不許可状態とさ
れる。 【0044】形態ビットSB1の値が論理0であり且つ
形態ビットSB0の値が論理1である場合には、OCE
PROM201−2の内容のプログラミング(書込み)
又は読出しのために主に意図されている動作モードにお
いて該内容が開示されることを制限するための特別の構
成が与えらえる。これらの動作モードは、通常の稼動モ
ードに対する変形例として先に説明してある。これらの
状況下においては、OCEPROM201−2内の位置
の検証が許可され且つこのような位置の内容は開示され
る前に暗号化される。検証を実行するために、アドレス
バス250−A上にアドレスが供給される。このアドレ
スは前のアドレスと同一でない場合には、アドレスモニ
タ205が新たなアドレスリード255上に論理値0の
パルスを短く供給する。このパルスは暗号制御論理20
4を初期化し、且つそれをして以下の出力値、即ち論理
値0を有するキー読取りストローブリード256、論理
値1を有するデータラッチストローブリード258、論
理値0を有する出力ストローブリード259、論理値1
を有するnstart読取りリード261を発生させる
。アドレスモニタ205が、それがバス250−A上で
受取るアドレスを不変のままバス250−Bへ供給する
。キー読取りストローブ256の値が現在論理0である
ので、ゼロ回路206は、アドレスビットA(2,3,
4)に関し何等影響を与えることはなく、且つこれらの
ビットを不変のままバス250−Cへ供給する。新たな
アドレスリード255上の論理0パルスに応答して、バ
ス250−B及びバス250−Cから構成されるアドレ
スに従って、OCEPROM201−2がバス250−
Dへデータを発生させる。このデータがその宛先へ伝搬
する時間の後に、OCEPROM201−2がデータ伝
搬リード260上に論理1の値を発生する。このことは
、暗号制御論理204をしてデータラッチストローブリ
ード258上に論理0の値を発生させ、それは、バス2
50−D上に存在するデータをデータラッチ208によ
ってラッチ(保持)させる。その直後に、暗号制御論理
204が、OCEPROM201−2から暗号キーバイ
トを読取るために、キー読取りストローブリード256
上に論理値1を発生させる。ゼロ回路206がキー読取
りストローブリード256上の論理値1を検知し、且つ
アドレスバス250−Cの三つのビットのうちの各々の
上に論理値0を発生させる。その直後に、暗号制御論理
204がnstart読取りリード261上に短い論理
0パルスを発生させる。このことは、OCEPROM2
01−2をしてデータ伝搬リード260上に論理値0を
発生させ、且つ現在論理値0を有しているバス250−
B及びバス250−Cから構成されるアドレスに従って
データバス250−Dへデータを発生させる。 このデータがその宛先へ伝搬する時間が経過した後に、
且つ暗号回路207がデータラッチ208内に格納され
ているデータを暗号化し且つバス261上にバス250
−D上の暗号キー値で供給すると、OCEPROM20
1−2がデータ伝搬リード260上に論理1の値を発生
する。その直後に、暗号制御論理204が出力ストロー
ブ259上に論理1の値を発生し、それは暗号回路20
7をしてデータバス250−E上に暗号化データ値を発
生させる。モードバス257が適切な値である場合には
、バス250−E上の暗号化データ値は、セレクタ20
3がステータス及びタイミングバス254上の信号値に
よってそのように指示されている場合に、セレクタ20
3を介してラン時間データバス250−Fへ供給するこ
とが可能である。上述した暗号プロセス期間中の任意の
時間においてバス250−A上のアドレス値が変化され
ると、アドレスモニタ205は新たなアドレスリード2
55上に論理1のパルスを短く発生し、暗号制御論理2
04をして暗号化プロセスを停止させ且つ新たなアドレ
ス値で新しく開始する。この場合には、停止された暗号
化プロセスからのデータはバス250−Eへ供給可能な
状態とされることはなく、その際に意図したレベルのセ
キュリティを維持する。上述した暗号化プロセスが充分
な時間期間の間バス250−A上に一定のアドレス値を
維持することにより完了する迄稼動することが許容され
る場合には、その時にバス250−A上に適宜のアドレ
ス値を供給することにより、付加的な暗号化データバイ
トを要求することが可能である。 【0045】形態ビットSB1が論理値0を有しており
且つ形態ビットSB0が論理値1を有している場合には
、暗号制御論理204はPGMリード262上の値に無
関係に、OPGMリード263上に論理0のパルスを供
給することはなく、実効的にOCEPROM201−2
のプログラミング、即ち書込みを防止している。 【0046】形態ビットSB1リード251が論理値0
を有しており且つ形態ビットSB0リード252が論理
値0を有している場合には、OCEPROM201−2
の内容が許可なく開示されることを防止するために通常
の稼動モードにおいて特別の構成が強制的に与えられる
。SB1リード251の論理0の値に従って、ラン時間
セキュリティモニタ202が、各opcodeフェッチ
のソース、即ち発信元を記録するために、ステータス及
びタイミングバス254上の信号値を検査する。特定の
opcodeがOCEPROM201−2からフェッチ
されると、ラン時間セキュリティモニタ202が、op
sodeが実行を開始するや否や、イネーブルリード2
53上に論理1の値を供給し、その際にデータバスセレ
クタ203が、該opcodeの実行に対する必要に応
じ、データバス250−Dからバス250−Fへオペラ
ンドデータを転送することを許容する。特定のopco
deがNOCEPROMからフェッチされると、ラン時
間セキュリティモニタ202が、該opcodeの実行
期間中にイネーブルリード253上に論理1の値を供給
することはなく、その際にデータバスセレクタ203が
バス250−Dからバス250−Fへデータを転送する
ことを防止する。このように、OCEPROM201−
2への読取りアクセスは、NOCEPROMから実行さ
れる任意のソフトウエアに対して不許可状態とされる。 【0047】形態ビットSB1の値が論理0であり且つ
形態ビットSB0の値が論理0である場合には、OCE
PROM201−2内の位置の検証(読出し)は、該内
容のプログラミング又は読出しに対して主に意図されて
いる動作モードにおいては許可されることはない。従っ
て、暗号制御論理204は、出力ストローブリード25
9上に論理値1を発生することはなく、且つ暗号回路2
07は何らかのデータをデータバス250−Bからデー
タバス250−Eへ転送することはない。従って、セレ
クタ203は、データバス250−D上に存在するデー
タをラン時間データバスに250−Fへ供給可能な状態
とさせることはない。 【0048】形態ビットSB1が論理値0を有しており
且つ形態ビットSB0が論理値0を有している場合、暗
号制御論理204は、PGMリード262上の値とは無
関係に、OPGMリード263上に論理0のパルスを供
給することはなく、実効的にOCEPROM201−2
のプログラミング、即ち書込みを防止している。 【0049】興味のあることであるが、従来技術と比較
しての利点は、データ暗号化のプロセスに対して必要な
図3の実施例の回路及び構成の程度が何れかの潜在的な
侵略者から分離されていることである。従来技術におけ
る場合には、集積回路パッケージ及び該回路の物理的寸
法が、暗号手法を出し抜く場合に関与する困難性のレベ
ルを著しく増加させるべく作用している。このことに加
えて、図3の暗号構成によって使用される信号は二つに
すぎず、従って集積回路パッケージの外部から容易に制
御することが可能である。これらの信号は、(1)アド
レスバス250−A及び(2)暗号回路を動作するのに
必要とされるDCパワーである。前述した如く、アドレ
スバス250−Aの値における変化は、暗号制御論理2
04をして再度初期化させ、実効的に現在のデータバイ
トの暗号化を停止させ且つ新たなアドレス値で新たに開
始する。これらの回路を動作させるのに必要とされるD
Cパワー信号における変化は、それらをしてより高速又
はより低速の何れかで動作させる。しかしながら、これ
らの状況下において、集積回路パッケージ内に収容され
ている全ての回路が、同一の範囲に亘り速度が増加乃至
は減少する。従って暗号制御論理204をOCEPRO
M201−2よりも早く又は遅く一貫性をもって動作さ
せることは不可能である。このことは、本発明の暗号メ
カニズムの完全性乃至は一体性を維持するのに貢献して
いる。暗号回路を動作させるために使用されるその他の
全ての信号は、集積回路パッケージ内で派生される。 【0050】特に興味のあることは、一実施例において
は、暗号化を実施する態様に影響を与えるために使用す
ることの可能な全ての外部的に制御可能なクロック、タ
イミング又は同期信号を除去している。この除去を行な
うために、暗号制御論理204は、非同期シーケンシャ
ル回路設計の現在のプラクティスに従って構成されてい
る。この実施例において特に興味のあることは、暗号制
御論理204を再度初期化し且つOCEPROM201
−2をしてデータバス250−D上に新たなデータを発
生させるために信号新アドレス255を使用しているこ
とである。注意すべきことであるが、信号新アドレス2
55はOCEPROM201−2に対してのイネーブル
信号でなく、それは、単に、新たなアドレス値が提供さ
れたことを表わすにすぎない。ここで選択された態様で
この信号を使用することは、何れかの侵略者が要求され
たデータバイトを暗号化するために選択されたキー値に
関する制御を実施することを防止している。このことは
、丁度暗号制御論理204がOCEPROM201−2
へ指示を与えて暗号キー値を発生させた如く、外部的に
供給されたアドレスを変化させることにより以前に行な
われている場合がある。この実施例における付加的な興
味のあることとしては、OCEPROM201−2によ
って発生されるデータ伝搬リード260を使用すること
である。データ伝搬信号は、OCEPROM201−2
から要求されたデータが供給され、且つ与えられた信号
経路に沿ってその宛先へ伝搬するための充分な期間を有
したことを表わす。この信号を使用することにより、タ
イミング又は同期信号に関する外部的依存性を除去する
ことが可能である。この実施例における付加的な興味の
あることとしては、信号nstart読取り(リード2
61上)を使用することであり、そのことは、暗号制御
論理204がOCEPROM201−2へ指示を与えて
暗号キー値を発生させることを可能とする。これら三つ
の信号は、関連して使用され、単一の集積回路パッケー
ジ内で暗号化のプロセスを制御する新規な手段を与えて
いる。これらの信号の何れもが集積回路パッケージの外
部から直接的に制御可能なものではなく、且つそれらを
一体的に使用することにより、この暗号メカニズムの弱
体性を著しく減少させている。 【0051】暗号化検証の適用 本発明に基づいて構成された集積回路が暗号化検証を実
施すべく構成されている場合には、OCEPROMから
要求されるデータは開示される前に暗号化される。要求
されたデータバイトのアドレスがその要求者によって与
えられる。本発明に基づいて、暗号化方法は、暗号キー
としてOCEPROM内に格納されるユーザコードのバ
イトを使用しており、その際に別の暗号キーを格納し且
つ使用することを必要とすることはない。 【0052】開示の前に要求されたデータバイトを暗号
化するために、オンチップ回路が以下のプロセスを制御
する。要求されたデータバイトが一時的な位置、即ち「
データレジスタ」内にフェッチされ且つ格納される。 該要求者によって供給されるアドレスが、アドレスビッ
トA2 ,A3 ,A4 を強制的にゼロとすることに
より変更される。これらのビットは、アドレスビットA
0 で開始するアドレスフィールドの最小桁端部からカ
ウントすることによって識別される。新たに形成された
アドレスは、「暗号キーバイト」として使用されるため
にOCEPROMから別のバイトをフェッチするために
使用される。暗号キーバイトは、データレジスタ内に格
納されているバイトとビット毎にXNOR処理される。 このことは、暗号キーバイトのビットK0 はデータレ
ジスタのビットD0 とXNOR処理され、該キーバイ
トのビットK1 がデータレジスタのビットD1 とX
NOR処理され、以下同様の処理が行なわれることを意
味している。その結果得られる値は、要求されたデータ
バイトの暗号化した値として開示される。 【0053】この暗号技術の一実施例の一例を表4を参
照して次に説明する。OCEPROMから要求されたデ
ータバイトがアドレスCOFF hex及びデータ値
AChexを有するものと仮定する。要求されたデータ
バイトがフェッチされ且つデータレジスタ内に格納され
る。次いで、該アドレスがCOE3 hexの値へ変
化される。このアドレスに位置されているバイトがフェ
ッチされ且つデータレジスタバイト内に格納されている
データとビット毎にXNOR処理される。アドレスCO
E3 hexにおけるバイトが8B hexの値を
有するものと仮定する。その結果得られる暗号化された
値はD8 hexである。興味のあることであるが、
本発明によれば、暗号化検証動作モードにおいて、キー
バイトは権限のないユーザによって検知されることは不
可能であると言うことである。なぜならば、各キーバイ
トはそれ自信を暗号化するために使用されており、その
結果暗号化された出力は各ビットに対し論理1を有して
いるからである。このことは、敵対するプログラムに対
して本質的に公知のアドレスデータを暗号キーとして使
用する従来方法と比較して明らかに著しい利点を与えて
いる。
表 4
Hex 二 進 要求
されたデータバイトのアドレス COFF
1100,0000,1111,1111 実際の
データ値
AC 1010,1100 暗号
キーアドレス
COE3 1100,0000,1110,00
11 暗号キーデータ
8B 1000,
1011 暗号化データ(XNOR)
D8 110
1,1000 【0054】当然に、例えば、全てが1、全てが0、又
は1と0との組合わせ等のようなアドレスビットの異な
った組合わせを選択した値へ強制することにより、オン
チップメモリ内に格納されている情報を暗号キーとして
選択する任意の所望の態様を使用することが可能である
。一方、選択した組のアドレスビットを、読取られるべ
きアドレス位置内に収容される選択されたビットでそれ
らに関する論理的又は演算処理を実施することにより変
更させることが可能である。同様に、例えば、データバ
イト及びキーバイトを使用して演算及び/又は論理機能
を実施することにより、暗号キーを使用してデータを暗
号化する任意の所望の態様を使用することが可能である
。更に、このような暗号化は、全てのビットを使用して
与えることが可能であるか、又は、別法として、一つ又
はそれ以上のビットを暗号化されないまま残存させるこ
とが可能である。所望により、どのビットを暗号化させ
るかの選択は、例えば、所望のデータバイト内において
得られるデータ及び/又は暗号キーの値に依存して時間
に関し変化することが可能である。更に、別の実施例に
おいては、キーバイトのビットは、データバイトを暗号
化するためにそれらを使用する前にそれらの順番を変化
させることにより、基本的にスクランブルされる。 【0055】決定論的欠陥分離 図4を参照して、一実施例において選択した特定の暗号
化方法がどのようにしてその保護されているセグメント
内に収容される情報を開示することなしに、保護されて
いるメモリセグメント内におけるビット欠陥の決定論的
分離を行なうことを可能とするかについて説明する。図
4は、暗号キーバイトを対構成としてデータバイトとさ
せる一実施例を詳細に示している。暗号化されたメモリ
出力は、一般的に、「テストベクトル」、即ち暗号化さ
れたデータの信頼されるストリームに対して比較される
。これら二つのデータバイトストリームの間の差異は、
テストベクトルか又はメモリからダンプされた暗号化デ
ータの何れかに欠陥が存在することを表わす。このよう
な差異が検知され、且つテストベクトルが正しいもので
あると証明される場合には、暗号化データストリームが
エラーであると推論する。ここでは、バイト欠陥は、そ
のバイト内の一つ又はそれ以上のビットが誤った2進値
(これらの各々はビット欠陥と呼ばれる)が存在する状
態として定義される。各キーバイトは、七個のデータバ
イト及びそれ自身をエンコードする。特定の32バイト
セグメントの場合、説明のためにキーバイトKB1 及
びそれと関連するデータバイトDB11−DB17を選
択することが可能である。特定のバイトストリームにお
いて発生される故障ノードは一般的には以下の三つのク
ラスの内の一つへ分類される。 【0056】(1)一組のバイト{DB11...,D
B47}からのデータバイト内の単一ビットエラー。 (2)一組のバイト{KB1 ,KB2 ,KB3 ,
KB4 }からのキーバイトにおける単一ビットエラー
。 (3)キー及びデータバイトが選択された暗号パターン
によって関連されており、且つエラーの二つのビットが
それらの夫々のバイト内の同一の相対的な位置を有する
ように、タイプ(1)のエラーとタイプ(2)のエラー
とを有する二重ビットエラー。 【0057】一例を次の表5に示してある。 【0058】表示したビットは二重ビットエラーを構成
している。データバイト(故障モード1)における単一
ビットエラーは、簡単に検知可能である。なぜならば、
それらは、テストベクトルにおけるそれらの対向するも
のと等しくないからである。表6に示した如く、暗号(
XNOR)に対して選択された機能を検討すると、最初
に、キーバイトにおける単一ビットエラーが検知不可能
であるように見えるかも知れない(なせならば、各キー
バイトは、それ自身を暗号化するために使用されており
、その結果は常に「1」だからである。 【0059】しかしながら、各キーバイトも七個のデー
タバイトを暗号化することを注意すべきである。単一の
キービットエラーは、これら七個のデータバイトの各々
におけるデータビットエラーとして表わされる。これら
七個のデータビットエラーの各々がそれらの夫々のバイ
トにおける同一の相対的ビット位置を有するという事実
によって独特に識別される。 【0060】XOR(XNOR)を使用する例外メカニ
ズムにおける二重ビットエラー(故障モード3)の検知
に関連する伝統的な問題は、特定のキーバイトが一つの
データバイトのみをエンコードするということである。 このことは、故障モード3が予測不可能であることを意
味している。本発明の暗号構成の場合には、故障モード
3は特定の故障したキーバイト/ビットに関連する六個
の残りのデータバイトの各々における単一のビットエラ
ーとして表われる。一例として、暗号化したメモリデー
タに対するテストベクトルの以下の比較を参照する。 暗号化前の
二重ビットエラーを有する
正しいデータ値 実
際のメモリ内容 DB37 00
00 0000 000
0 0000 DB36 11
11 1111 111
1 1111 DB35 00
00 0000 000
0 0000 DB34 11
11 1111 111
1 1111 DB33 00
00 0000 000
0 0000 DB32 11
11 1111 111
1 1111 DB31 00
00 0000 000
0 0100 KB3 00
00 0000 000
0 0100 正しい暗
号化 上の二重ビットエラーを
反映する テストベクトル
暗号化データストリーム
DB37 1111 1111
1111 1011
DB36 0000 0000
0000 0100
DB35 1111 1111
1111 1011
DB34 0000 0000
0000 0100
DB33 1111 1111
1111 1011
DB32 0000 0000
0000 0100
DB31 1111 1111
1111 1111
KB3 1111 1111
1111 1111 【006
1】正しい暗号化されたデータテストベクトルが、二重
ビットエラーを検知するために、暗号化されたデータス
トリームと比較される。この暗号化検証用のアプローチ
は、保護されている情報をそれ自身の暗号キーとして使
用することを可能とし、その際にユーザが、別の組の暗
号キーバイトを与え、プログラムし又は安全対策を講じ
ることを必要とすることはない。それは、決定論的な欠
陥分離を行なうことを助け、必要な場合に、正しいエラ
ービットを見つけることを可能とする。該データはそれ
自身の暗号キーとして作用し、従って何等付加的な回路
又は集積回路表面積が、一つ又はそれ以上のセキュリテ
ィキーを保持し、又はスタート値から多様な暗号キーを
与えるために擬似ランダムカウンタを与えることが必要
とされることはない。このアプローチは、例えばフィー
ルドでの診断等のような検証目的のためのそれらのプロ
グラムの暗号化したものをユーザが維持することを可能
とし、このことは本質的に、暗号化されていないものを
維持するよりも一層安全である。このアプローチは、「
優雅に劣化」する(即ち、「キー」バイトの何れか一つ
が発見されると、保護されているデータの内の8バイト
のみが開示されるにすぎない)。これらの8バイトは、
隣接しているものではなく、従って多分、完全なコンピ
ュータ命令を開示するものではない。 【0062】本明細書に記載したメモリ保護アーキテク
チャを使用することにより、システム設計の柔軟性を維
持することが可能である。なぜならば、それは、コンピ
ュータプロセサが、保護されているメモリのセキュリテ
ィ、即ち安全性に対して妥協することなしに、内部メモ
リ(例えば、マイクロコントローラ上に設けられるもの
)又は外部メモリからのいずれかから実行することを可
能とするからである。本明細書に記載した特定の回路を
実現することにより、このメモリ保護アーキテクチャの
弱体性を著しく減少させることが可能である。なぜなら
ば、何等外部的に派生される同期信号が暗号化プロセス
に対して必要とされないからである。 【0063】本明細書に記載した特定の例は、保護され
るメモリ内容を、暗号化検証のために32個のバイトセ
グメントへ実効的に区分している。これら32個のバイ
トセグメントの各々は、図5に示した如く、該セグメン
トの「ベース」において位置されている4バイトテーブ
ル(表)によって暗号化される。出力データの各32バ
イト部分はキーとは独立的なものである。 【0064】以上、本発明の具体的実施の態様について
詳細に説明したが、本発明は、これら具体例にのみ限定
されるべきものではなく、本発明の技術的範囲を逸脱す
ることなしに種々の変形が可能であることは勿論である
。
【図1】 典型的な従来のマイクロプロセサシステム
を示したブロック図。
を示したブロック図。
【図2】 本発明の一実施例に基づいて構成されたラ
ン時間メモリ保護構成を示したブロック図。
ン時間メモリ保護構成を示したブロック図。
【図3】 本発明の一実施例に基づいて構成したメモ
リ保護構成を示したブロック図。
リ保護構成を示したブロック図。
【図4】 バイト欠陥の決定論的分離のために本発明
の一方法を使用する状態を示すと共に本発明がどのよう
にして各キーバイトをそれが暗号化のために使用される
データバイトとどのように関連するかを示した説明図。
の一方法を使用する状態を示すと共に本発明がどのよう
にして各キーバイトをそれが暗号化のために使用される
データバイトとどのように関連するかを示した説明図。
【図5】 本発明によりどのようにして保護されてい
るコードを各々がそれ自身の別個のキーで保護されるサ
ブセクションへ分離するかを示した説明図。
るコードを各々がそれ自身の別個のキーで保護されるサ
ブセクションへ分離するかを示した説明図。
21 オンチップEPROM(OCEPROM)22
フェッチ、デコード及び実行(FDE)ユニット2
3 セキュリティモニタ
フェッチ、デコード及び実行(FDE)ユニット2
3 セキュリティモニタ
Claims (17)
- 【請求項1】 データを格納するメモリ手段が設けら
れており、前記メモリ手段内の位置を画定するデータア
ドレスを受取るアドレスバスが設けられており、前記メ
モリ手段内に格納されているデータに関連するデータを
前記データアドレスによって画定される位置に供給する
データバスが設けられており、前記データアドレスに基
づいてキーアドレスを供給する手段が設けられており、
前記キーアドレスは前記メモリ手段内の位置を画定し、
その内容は前記アドレスに関連する暗号キーとして作用
し、前記データバス上に暗号化データを供給するために
前記データを前記暗号キーで暗号化する手段が設けられ
ていることを特徴とするデータ装置。 - 【請求項2】 請求項1において、前記キーアドレス
を供給する手段が、前記キーアドレスを供給するために
前記データアドレスを変更する手段を有することを特徴
とするデータ装置。 - 【請求項3】 請求項2において、前記キーアドレス
が、前記データアドレスの一つ又はそれ以上のビットを
予め定めた値へ設定することによって与えられることを
特徴とするデータ装置。 - 【請求項4】 請求項2において、前記キーアドレス
が、前記データアドレスの一つ又はそれ以上のビットに
関し論理機能又は演算機能を実行することによって与え
られることを特徴とするデータ装置。 - 【請求項5】 請求項1において、前記暗号化手段が
、前記データ及び前記暗号キーの一つ又はそれ以上のビ
ットを論理的又は演算的に結合させる手段を有すること
を特徴とするデータ装置。 - 【請求項6】 請求項3において、前記一つ又はそれ
以上のビットとして作用するビットの選択が異なったデ
ータアドレスに対して変化することを特徴とするデータ
装置。 - 【請求項7】 請求項6において、前記一つ又はそれ
以上のビットの選択が前記データ及び/又は前記データ
アドレスの値に依存することを特徴とするデータ装置。 - 【請求項8】 請求項4において、前記一つ又はそれ
以上のビットとして作用するビットの選択が、前記デー
タ及び/又は前記データアドレスの値に依存することを
特徴とするデータ装置。 - 【請求項9】 請求項8において、前記一つ又はそれ
以上のビットの選択が前記データ及び/又は前記データ
アドレスの値に依存することを特徴とするデータ装置。 - 【請求項10】 請求項5において、前記一つ又はそ
れ以上のビットの選択が前記データ及び/又は前記デー
タアドレスの値に依存することを特徴とするデータ装置
。 - 【請求項11】 データを暗号化する方法において、
暗号化されるべきデータを包含するメモリ手段で位置を
画定するデータアドレスを受取り、前記データアドレス
に基づいてキーアドレスを与え、前記キーアドレスがそ
の内容が暗号キーとして作用する前記メモリ手段内の位
置を画定するものであり、前記暗号キーを使用して前記
データを暗号化させ、その際に暗号化データを供給する
、上記各ステップを有することを特徴とする方法。 - 【請求項12】 請求項11において、前記キーアド
レスを与えるステップが、前記データアドレスを変更さ
せて前記キーアドレスを与えるステップを有することを
特徴とする方法。 - 【請求項13】 請求項12において、前記データア
ドレスを変更して前記キーアドレスを与えるステップが
、一つ又はそれ以上のビット又は前記データアドレスを
予め定めた値へ設定するステップを有することを特徴と
する方法。 - 【請求項14】 請求項12において、前記データア
ドレスを変更して前記キーアドレスを与えるステップが
、前記データアドレスの一つ又はそれ以上のビットに関
し論理又は演算機能を実行するステップを有することを
特徴とする方法。 - 【請求項15】 請求項11において、前記暗号化ス
テップが、前記データ及び前記暗号キーの一つ又はそれ
以上のビットを論理的又は演算的に結合させることを包
含することを特徴とする方法。 - 【請求項16】 請求項1において、前記データ装置
が集積回路を有しており、且つ前記暗号化手段が前記集
積回路外部において容易に入手可能でない少なくとも一
つの制御信号に応答して動作することを特徴とするデー
タ装置。 - 【請求項17】 請求項16において、前記暗号化手
段が非同期的に動作することを特徴とするデータ装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US07/518,117 US5058164A (en) | 1990-05-03 | 1990-05-03 | Encryption of streams of addressed information to be used for program code protection |
| US518117 | 1990-05-03 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH04229346A true JPH04229346A (ja) | 1992-08-18 |
Family
ID=24062621
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3128197A Pending JPH04229346A (ja) | 1990-05-03 | 1991-05-02 | プログラムコード保護用に使用すべきアドレスした情報のストリームのエンクリプション |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US5058164A (ja) |
| EP (1) | EP0455064B1 (ja) |
| JP (1) | JPH04229346A (ja) |
| KR (1) | KR100227875B1 (ja) |
| DE (1) | DE69120596T2 (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5995623A (en) * | 1996-01-30 | 1999-11-30 | Fuji Xerox Co., Ltd. | Information processing apparatus with a software protecting function |
| US7761780B2 (en) | 2005-11-28 | 2010-07-20 | Kabushiki Kaisha Toshiba | Method, apparatus, and system for protecting memory |
| JP2016517241A (ja) * | 2013-04-16 | 2016-06-09 | クアルコム,インコーポレイテッド | ストレージデバイスによって支援されるインライン暗号化および暗号化解除 |
Families Citing this family (147)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| SG46177A1 (en) * | 1989-12-13 | 1998-02-20 | Ibm | Computer system security device |
| JPH03276345A (ja) * | 1990-03-27 | 1991-12-06 | Toshiba Corp | マイクロコントローラ |
| JP2862030B2 (ja) * | 1991-06-13 | 1999-02-24 | 三菱電機株式会社 | 暗号化方式 |
| 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 |
| JPH08263438A (ja) | 1994-11-23 | 1996-10-11 | Xerox Corp | ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法 |
| US7117180B1 (en) | 1994-11-23 | 2006-10-03 | Contentguard Holdings, Inc. | System for controlling the use of digital works using removable content repositories |
| US5638443A (en) * | 1994-11-23 | 1997-06-10 | Xerox Corporation | System for controlling the distribution and use of composite digital works |
| 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 |
| US6865551B1 (en) | 1994-11-23 | 2005-03-08 | Contentguard Holdings, Inc. | Removable content repositories |
| US5629980A (en) * | 1994-11-23 | 1997-05-13 | Xerox Corporation | System for controlling the distribution and use of digital works |
| US6963859B2 (en) | 1994-11-23 | 2005-11-08 | Contentguard Holdings, Inc. | Content rendering repository |
| 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 |
| CA2242596C (en) * | 1996-01-11 | 2012-06-19 | Mrj, Inc. | System for controlling access and distribution of digital property |
| 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 |
| US6937726B1 (en) | 1999-04-06 | 2005-08-30 | Contentguard Holdings, Inc. | System and method for protecting data files by periodically refreshing a decryption key |
| US7356688B1 (en) | 1999-04-06 | 2008-04-08 | Contentguard Holdings, Inc. | System and method for document distribution |
| US7286665B1 (en) | 1999-04-06 | 2007-10-23 | Contentguard Holdings, Inc. | System and method for transferring the right to decode messages |
| 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 |
| US7743259B2 (en) | 2000-08-28 | 2010-06-22 | Contentguard Holdings, Inc. | System and method for digital rights management using a standard rendering engine |
| 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 |
| US6931545B1 (en) | 2000-08-28 | 2005-08-16 | Contentguard Holdings, Inc. | Systems and methods for integrity certification and verification of content consumption environments |
| US7237125B2 (en) | 2000-08-28 | 2007-06-26 | Contentguard Holdings, Inc. | Method and apparatus for automatically deploying security components in a content distribution system |
| 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 |
| US7028009B2 (en) * | 2001-01-17 | 2006-04-11 | Contentguardiholdings, Inc. | Method and apparatus for distributing enforceable property rights |
| US6754642B2 (en) | 2001-05-31 | 2004-06-22 | Contentguard Holdings, Inc. | Method and apparatus for dynamically assigning usage rights to digital works |
| WO2002057922A1 (en) | 2001-01-17 | 2002-07-25 | Contentguard Holdings, Inc. | Method and apparatus for managing digital content usage 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 |
| US7774279B2 (en) | 2001-05-31 | 2010-08-10 | Contentguard Holdings, Inc. | Rights offering and granting |
| US7206765B2 (en) | 2001-01-17 | 2007-04-17 | Contentguard Holdings, Inc. | System and method for supplying and managing usage rights based on rules |
| 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 |
| 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 |
| EP2267626B8 (en) * | 2001-03-28 | 2016-11-30 | NDS Limited | Digital rights management system and method |
| US8099364B2 (en) | 2001-05-31 | 2012-01-17 | Contentguard Holdings, Inc. | Digital rights management of content when content is a future live event |
| US8001053B2 (en) | 2001-05-31 | 2011-08-16 | Contentguard Holdings, Inc. | System and method for rights offering and granting using shared state variables |
| 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 |
| US8275716B2 (en) | 2001-05-31 | 2012-09-25 | Contentguard Holdings, Inc. | Method and system for subscription digital rights management |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| CN1539117A (zh) | 2001-06-07 | 2004-10-20 | ��̹�е¿عɹɷ�����˾ | 在数字权利管理系统中支持多个委托区域的方法和装置 |
| AU2002345577A1 (en) | 2001-06-07 | 2002-12-23 | Contentguard Holdings, Inc. | Protected content distribution system |
| EP1393230A4 (en) * | 2001-06-07 | 2004-07-07 | Contentguard Holdings Inc | METHOD AND METHOD FOR MANAGING TRANSFER OF RIGHTS |
| US7774280B2 (en) * | 2001-06-07 | 2010-08-10 | Contentguard Holdings, Inc. | System and method for managing transfer of rights using shared state variables |
| JP2003134106A (ja) * | 2001-10-22 | 2003-05-09 | Victor Co Of Japan Ltd | 暗号化方法、復号化方法及び装置、並びに情報記録媒体 |
| US7921284B1 (en) | 2001-12-12 | 2011-04-05 | Gary Mark Kinghorn | Method and system for protecting electronic data in enterprise environment |
| US7681034B1 (en) | 2001-12-12 | 2010-03-16 | Chang-Ping Lee | Method and apparatus for securing electronic data |
| US6889210B1 (en) * | 2001-12-12 | 2005-05-03 | Pss Systems, Inc. | Method and system for managing security tiers |
| US7260555B2 (en) | 2001-12-12 | 2007-08-21 | Guardian Data Storage, Llc | Method and architecture for providing pervasive security to digital assets |
| US8065713B1 (en) | 2001-12-12 | 2011-11-22 | Klimenty Vainstein | System and method for providing multi-location access management to secured items |
| US7631184B2 (en) | 2002-05-14 | 2009-12-08 | Nicholas Ryan | System and method for imposing security on copies of secured items |
| US10360545B2 (en) | 2001-12-12 | 2019-07-23 | Guardian Data Storage, Llc | Method and apparatus for accessing secured electronic data off-line |
| US7380120B1 (en) | 2001-12-12 | 2008-05-27 | Guardian Data Storage, Llc | Secured data format for access control |
| US10033700B2 (en) | 2001-12-12 | 2018-07-24 | Intellectual Ventures I Llc | Dynamic evaluation of access rights |
| US7930756B1 (en) | 2001-12-12 | 2011-04-19 | Crocker Steven Toye | Multi-level cryptographic transformations for securing digital assets |
| 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 |
| US7565683B1 (en) | 2001-12-12 | 2009-07-21 | Weiqing Huang | Method and system for implementing changes to security policies in a distributed security system |
| US7562232B2 (en) | 2001-12-12 | 2009-07-14 | Patrick Zuili | System and method for providing manageability to security information for secured items |
| US7783765B2 (en) | 2001-12-12 | 2010-08-24 | Hildebrand Hal S | System and method for providing distributed access control to secured documents |
| US7478418B2 (en) | 2001-12-12 | 2009-01-13 | Guardian Data Storage, Llc | Guaranteed delivery of changes to security policies in a distributed 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 |
| US7921450B1 (en) | 2001-12-12 | 2011-04-05 | Klimenty Vainstein | Security system using indirect key generation from access rules and methods therefor |
| 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 |
| 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 |
| KR100474526B1 (ko) * | 2002-07-19 | 2005-03-10 | 매그나칩 반도체 유한회사 | 외부 프로그램 코드를 보호할 수 있는 컨트롤 시스템 |
| 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 |
| US7577838B1 (en) | 2002-12-20 | 2009-08-18 | Alain Rossmann | Hybrid systems for securing digital assets |
| US7890990B1 (en) | 2002-12-20 | 2011-02-15 | Klimenty Vainstein | Security system with staging capabilities |
| 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 |
| WO2005003969A1 (en) * | 2003-06-27 | 2005-01-13 | Sun Microsystems, 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 |
| DE10345385B4 (de) | 2003-09-30 | 2005-10-06 | Infineon Technologies Ag | Entschlüsselung bzw. Verschlüsselung bei Schreibzugriffen auf einen Speicher |
| US7703140B2 (en) | 2003-09-30 | 2010-04-20 | Guardian Data Storage, Llc | Method and system for securing digital assets using process-driven security policies |
| 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 |
| EP1658696B1 (en) | 2004-02-05 | 2009-07-01 | Research In Motion Limited | On-chip storage, creation, and manipulation of an encryption key |
| WO2005088533A1 (en) | 2004-03-12 | 2005-09-22 | Ingenia Technology Limited | Authenticity verification methods, products and apparatuses |
| DE602005014755D1 (de) | 2004-03-12 | 2009-07-16 | Ingenia Technology Ltd | Verfahren und vorrichtungen zur erzeugung authentifizierbarer gegenstände und ihrer nachfolgenden überprüfung |
| US7707427B1 (en) | 2004-07-19 | 2010-04-27 | Michael Frederick Kenrich | Multi-level file digests |
| GB2417592B (en) | 2004-08-13 | 2006-07-26 | Ingenia Technology Ltd | Authenticity verification of articles |
| GB2417074B (en) * | 2004-08-13 | 2007-11-21 | Ingenia Technology Ltd | Authenticity verification methods,products and apparatuses |
| US7458102B2 (en) * | 2004-08-17 | 2008-11-25 | Emc Corporation | Information security architecture for remote access control using non-bidirectional protocols |
| US7653802B2 (en) * | 2004-08-27 | 2010-01-26 | Microsoft Corporation | System and method for using address lines to control memory usage |
| US7734926B2 (en) * | 2004-08-27 | 2010-06-08 | Microsoft Corporation | System and method for applying security to memory reads and writes |
| US7822993B2 (en) * | 2004-08-27 | 2010-10-26 | Microsoft Corporation | System and method for using address bits to affect encryption |
| 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 |
| 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 |
| EP1849117A1 (en) * | 2005-02-11 | 2007-10-31 | Universal Data Protection Corporation | Method and system for microprocessor data security |
| 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 |
| US20070050642A1 (en) * | 2005-08-26 | 2007-03-01 | International Business Machines Corporation | Memory control unit with configurable memory encryption |
| US20070067644A1 (en) * | 2005-08-26 | 2007-03-22 | International Business Machines Corporation | Memory control unit implementing a rotating-key encryption algorithm |
| GB2448245B (en) | 2005-12-23 | 2009-11-04 | Ingenia Holdings | 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 |
| US9910996B2 (en) * | 2010-06-16 | 2018-03-06 | 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 |
| US10102390B2 (en) | 2012-06-28 | 2018-10-16 | Honeywell International Inc. | Memory authentication with redundant encryption |
| US9152801B2 (en) * | 2012-06-28 | 2015-10-06 | Steven W. Cooke | Cryptographic system of symmetric-key encryption using large permutation vector keys |
| 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 |
| US20180196956A1 (en) * | 2017-01-10 | 2018-07-12 | Renesas Electronics America Inc. | Security architecture and method |
| KR102659866B1 (ko) * | 2022-02-09 | 2024-04-22 | 김봉묵 | 꼬치 구이장치 |
Family Cites Families (6)
| 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 |
| JPS59501128A (ja) * | 1982-06-21 | 1984-06-28 | エス・ピ−・エル・ソフトウエア・プロテクト・ア−・ゲ− | デジタル情報コ−ド化方法および装置 |
| 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. |
-
1990
- 1990-05-03 US US07/518,117 patent/US5058164A/en not_active Expired - Lifetime
-
1991
- 1991-04-19 EP EP91106278A patent/EP0455064B1/en not_active Expired - Lifetime
- 1991-04-19 DE DE69120596T patent/DE69120596T2/de not_active Expired - Fee Related
- 1991-05-02 JP JP3128197A patent/JPH04229346A/ja active Pending
- 1991-05-02 KR KR1019910007090A patent/KR100227875B1/ko not_active Expired - Lifetime
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5995623A (en) * | 1996-01-30 | 1999-11-30 | Fuji Xerox Co., Ltd. | Information processing apparatus with a software protecting function |
| US7761780B2 (en) | 2005-11-28 | 2010-07-20 | Kabushiki Kaisha Toshiba | Method, apparatus, and system for protecting memory |
| JP2016517241A (ja) * | 2013-04-16 | 2016-06-09 | クアルコム,インコーポレイテッド | ストレージデバイスによって支援されるインライン暗号化および暗号化解除 |
Also Published As
| Publication number | Publication date |
|---|---|
| KR100227875B1 (ko) | 1999-11-01 |
| DE69120596T2 (de) | 1997-02-20 |
| KR910020560A (ko) | 1991-12-20 |
| EP0455064A3 (en) | 1991-11-21 |
| US5058164A (en) | 1991-10-15 |
| DE69120596D1 (de) | 1996-08-08 |
| EP0455064B1 (en) | 1996-07-03 |
| EP0455064A2 (en) | 1991-11-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH04229346A (ja) | プログラムコード保護用に使用すべきアドレスした情報のストリームのエンクリプション | |
| US7444668B2 (en) | Method and apparatus for determining access permission | |
| CN1647443B (zh) | 帮助具有多个级别软件的集成系统的安全操作的方法和系统 | |
| US7461268B2 (en) | E-fuses for storing security version data | |
| JP4260984B2 (ja) | 情報処理装置および情報処理方法 | |
| TWI498768B (zh) | 具有安全啟動機制之電腦系統、啟動電腦系統的方法、及中央處理單元 | |
| TWI460604B (zh) | 安全微控制器、硬體加密器及用於保全一微控制器內之內容之方法 | |
| US7266842B2 (en) | Control function implementing selective transparent data authentication within an integrated system | |
| US20070237325A1 (en) | Method and apparatus to improve security of cryptographic systems | |
| US8838950B2 (en) | Security architecture for system on chip | |
| EP1638033B1 (en) | Self testing and securing RAM system and method | |
| US8438658B2 (en) | Providing sealed storage in a data processing device | |
| JPH0713873A (ja) | チップ・カードのキーを保護する装置 | |
| CN110020561A (zh) | 半导体装置和操作半导体装置的方法 | |
| JP2005520231A (ja) | 周辺素子へのアクセス保護を含むデータプロセッシングシステムとその方法 | |
| US7975151B2 (en) | Decryption key table access control on ASIC or ASSP | |
| US20060080537A1 (en) | Illegal analysis / falsification preventing system | |
| EP1280038B1 (en) | System and method for code and data security in a semiconductor device | |
| US20060075236A1 (en) | Method and apparatus for high assurance processing | |
| KR20060135467A (ko) | 보호된 비휘발성 메모리를 사용하는 시스템 및 방법 | |
| US5687354A (en) | Memory system and method for protecting the contents of a ROM type memory | |
| JP5798007B2 (ja) | マイクロコンピュータおよびデータ処理装置 | |
| US8844022B2 (en) | Method and system to allow system-on-chip individual I/O control to be disabled and enabled by programmable non-volatile memory | |
| KR20250177937A (ko) | 키 암호화 키를 생성하는 집적회로 및 그것의 동작 방법 | |
| CN116203886A (zh) | 一种应用于fpga的高安全电路 |