JP2008530663A - マイクロプロセッサのデータセキュリティの方法およびシステム - Google Patents
マイクロプロセッサのデータセキュリティの方法およびシステム Download PDFInfo
- Publication number
- JP2008530663A JP2008530663A JP2007554404A JP2007554404A JP2008530663A JP 2008530663 A JP2008530663 A JP 2008530663A JP 2007554404 A JP2007554404 A JP 2007554404A JP 2007554404 A JP2007554404 A JP 2007554404A JP 2008530663 A JP2008530663 A JP 2008530663A
- Authority
- JP
- Japan
- Prior art keywords
- key
- byte
- circuit
- data
- decryption
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/82—Protecting input, output or interconnection devices
- G06F21/85—Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/34—Encoding or coding, e.g. Huffman coding or error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Storage Device Security (AREA)
Abstract
本発明の実施形態は、概して、マイクロプロセッサのデータセキュリティのための方法およびシステムに関し、データの暗号化およびコンピュータのマイクロプロセッサに記憶されたデータ、またはそれと通信したデータの復号化を含む。このような暗号化および復号化は、バイトごとに実行される。このような暗号化および復号化は、復号化鍵または暗号化鍵を用いてバイトに論理演算を実行して、各復号化されたバイトまたは暗号化されたバイトを生成する工程を含む。鍵は、固定または可変または両者の組み合わせとすることができる。鍵は、マイクロプロセッサ内の専用のハードワイヤードされた鍵回路に符号化され、マイクロプロセッサ内の暗号化および復号化回路にアクセス可能である。
【選択図】図3
【選択図】図3
Description
本発明は、マイクロプロセッサのデータセキュリティのための方法およびシステムに関する。特に、本発明は、バイトごとまたはワードごとに、コンピュータのマイクロプロセッサに記憶されたデータ、またはコンピュータのマイクロプロセッサと通信する記憶されたデータのデータ暗号化および復号化の方法およびシステムに関する。
データセキュリティは、特に記憶された機密データに関連しているので、ビジネスの多くの局面において重要な問題である。たとえば、フラッシュメモリ(または他の形式のリードオンリーメモリ)に記憶されたコンピュータプログラムのソースコードは、重要な機密情報となり得る。他社は、競合するコンピュータ製品または電子デバイス用に自社でソースコードを書くのを避けるために、オペレーショナルソースコードのコピーを望むかもしれない。
フラッシュメモリからソースコードをコピーしようとするこれらの試みは、たとえば、競合製品のメモリにコピーできるように、メモリチップのダイを突き通したり、生データ形式でそこに記憶されたソースコードを調査することができる。マイクロプロセッサ内部のデータがアクセスされるのを防ぐいくつかの試みはあるが、これらは、ダイスライシングを防ぐことはできないし、どのような既知の技術でも、適切にマイクロプロセッサ外部のいかなるデバイスにおける情報を保護することはできない。従って、フラッシュメモリまたは他の不揮発性メモリに記憶されたソースコードは、より良く保護されなければ、コピーに対して脆弱である。
マイクロプロセッサのリバースエンジニアリングに役立つ他の技術も存在する。たとえば、特別な導線配置を有する回路では、これらの配置は、ときどき回路における導電要素の磁気分極を検出することにより読み出すことができる。従って、データの暗号化または復号化においてマイクロプロセッサで用いるコードを記憶するレジスタでさえ、自身のデータコンテンツが最新のセキュリティクラッキング技術により読み出される可能性がある。
従来のセキュリティ技術に伴う1つまたは複数の欠点や不都合を解決または改善することにより、記憶されたデータの改善されたデータセキュリティを提供すること、または、少なくともこうした従来のセキュリティ技術に取って代わる有用な技術を提供することが望まれている。
広いレベルでは、本発明は、CPUアーキテクチャおよび外部記憶データ内に記憶されたデータを含む、マイクロコントローラが処理し得るどんな種類の情報も保護するために用いることができる。これは、たとえば、ファームウェアやソースコード、オーディオまたはビデオ信号データ、コンフィグレーションセッティング、システム変数、および不正な読み出しおよびコピーから保護されることが望まれる他のあらゆる情報を含むことができる。
一態様において、本発明は、データ読み出し方法に関する。この方法は、プロセッサと関係するメモリから、少なくとも1バイトの記憶されたデータを読み込む工程と、読み込まれた各バイトごとに、復号化鍵を用いてバイトに論理演算を実行して復号化されたバイトを生成する工程であって、復号化鍵は、プロセッサにアクセス可能な専用の鍵回路により符号化されている工程と、各復号化されたバイトをその処理のためにプロセッサに供給する工程と、を備える。
この方法によって読み出される記憶されたデータは、不揮発性メモリへの記憶の前に、復号化鍵に対応する(すなわち、暗号化技術的に適合または対にされた)暗号化鍵を用いてバイトごとに暗号化されている。復号化において用いられる論理演算は、暗号化において用いられる論理演算の逆論理演算である。従って、この読み出し方法は、不揮発性メモリに初めに(符号化された)記憶されたデータに基づいて、復号化されたバイトを生成する。
記憶されたデータは、たとえば、コンピュータプログラムのソースコードとすることができる。また、記憶されたデータは、暗号化されたオーディオまたはビデオ信号データとすることができる。別の態様において、メモリは、不揮発性でなくともよい。メモリは、たとえば、ランダムアクセスメモリ(RAM)、レジスタ、またはキャッシュメモリを含むことができる。
復号化鍵は、固定復号化鍵とすることができ、また可変復号化鍵とすることができる。一実施形態において、第1および第2の復号化鍵が、一方の鍵を固定とし、他方を可変として用いられる。可変復号化鍵は、各バイトごとに異なってもよい。1つ以上の復号化鍵が用いられる場合には、バイトを復号化するために各復号化鍵に対して対応する論理演算が用いられる。論理演算は、同一または異なっていてもよい。
論理関数の例は、排他的論理和(XOR)演算およびハッシュ関数を含む。他の例は、ビットのセットの位置をスワッピング(たとえば、バイト内の4ビットの2つのブロックの位置の交換)およびバイトへの固定値の加算またはバイトからの固定値の減算を含む。(復号化で用いられる論理演算の逆論理演算で暗号化されている必要があるので)変換が容易に可逆的である場合には、他の形式のビット変換を論理演算の一環として用いることができる。
論理演算がXOR演算である場合には、データバイトおよび暗号化鍵は、XOR演算のオペランドである。論理演算がハッシュ関数である場合には、ハッシュ関数は復号化鍵で符号化され、ハッシュ関数を用いてデータのビットは転置され、暗号化鍵に基づいて暗号化されたバイトが生成される。
可変復号化鍵は、記憶されたデータバイトのそれぞれのメモリロケーションに対応していてもよい。また、プログラムカウンタの値や、連続的またはランダムな数の所定のリストなどの他の数的に可変のものを用いてもよい。また、可変値は、記憶されるバイトに加算、または記憶されるバイトから減算されてもよい。所定のシード値に基づいて、可変鍵の形成に用いられる可変鍵または可変値の疑似ランダム数を生成するために、リニアフィードバックシフトレジスタ(LFSR)を用いてもよい。
他の態様において、本発明は、データ記憶方法に関する。この方法は、プロセッサと関係するメモリに記憶される少なくとも1バイトのデータを受け取る工程と、受け取った各バイトごとに、暗号化鍵を用いてバイトに論理演算を実行して暗号化されたバイトを生成する工程であって、暗号化鍵は、プロセッサにアクセス可能な専用の鍵回路に符号化されている工程と、各暗号化されたバイトを不揮発性メモリに記憶する工程と、を備える。
記憶されるデータは、たとえば、コンピュータプログラムのソースコードであってもよいし、オーディオまたはビデオ信号データであってもよい。このデータ記憶方法は、概して、上述したデータ読み込み方法を逆の方法で実行するものである。従って、上述のデータ読み込み方法は、このデータ記憶方法により記憶されたデータを読み込むのに特に適している。このため、記憶されたデータの読み込みにおいて用いられる復号化鍵は、記憶する前にデータを暗号化するのに用いられた暗号化鍵と同一である。さらに、データの読み込みにおいて実行された論理演算は、データの記憶において実行された論理演算の逆演算である。その結果、暗号化されたデータから元のデータに戻すことができる。
他の態様において、本発明は、上述のデータ記憶方法を実行し、続いて上述のデータ読み込み方法を実行する工程を含むデータ処理方法に関する。
本発明のさらに別の態様は、記憶されたデータを読み込む方法に関する。この方法は、記憶された命令データの複数のワードを不揮発性メモリから読み込む工程と、各ワードごとに、復号化鍵を用いてワードに論理演算を実行して復号化されたワードを生成する工程と、復号化されたワードのそれぞれをその処理のためにプロセッサに供給する工程と、を備える。
さらに別の態様において、本発明はデータ記憶方法に関する。この方法は、不揮発性メモリに記憶されるべき命令データの複数のワードを受け取る工程と、各ワードごとに、暗号化鍵を用いてワードに論理演算を実行して暗号化されたワードを生成する工程と、暗号化されたワードのそれぞれを不揮発性メモリに記憶する工程と、を備える。
本発明の他の態様は、上述の方法を実行する手段を有するデータの記憶および読み込み装置、回路およびシステムに関する。たとえば、このような態様は、必要に応じて、データをバイトごとまたはワードごとに符号化または復号化する符号化論理回路または復号化論理回路を備えることができる。さらなる態様において、本発明は、不揮発性メモリに記憶するデータのバイトまたはワードを符号化する符号化論理回路、および符号化されたデータバイトまたはワードをメモリから読み込み、それらを復号化する復号化論理回路を備えるCPUアーキテクチャに関する。
本発明のさらなる態様は、プロセッサと、不揮発性メモリと、暗号化および復号化回路と、鍵回路と、を備える計算装置に関する。不揮発性メモリは、データの複数のバイトを記憶し且つ読み込むためにプロセッサにアクセス可能である。暗号化回路は、不揮発性メモリに記憶されるデータを受け取り、各バイトを第1の論理演算を用いることにより鍵に基づいて暗号化し、暗号化された各バイトを記憶のために不揮発性メモリに渡すよう構成される。復号化回路は、不揮発性メモリから読み込まれた暗号化されたデータのバイトを受け取り、第1の論理演算の逆演算である第2の論理演算を用いて、鍵に基づいて各バイトを復号化し、復号化された各バイトを前記プロセッサに渡すよう構成される。鍵回路は、その中で鍵が形成され、暗号化回路および復号化回路にアクセス可能である。鍵は、固定または可変にすることができ、また固定鍵および可変鍵とすることもできる。鍵回路は、固定鍵回路、または可変鍵回路、または両者とすることができる。
好ましくは、固定鍵回路は、該固定鍵回路における複数の導線のうち選択された導線間に形成された恒久的な電気的接続に従って、不揮発性にその中に固定鍵を形成する。固定鍵回路は、好ましくは、暗号化回路および復号化回路にのみアクセス可能である。固定鍵は、プロセッサまたはプロセッサをハウジングするデバイスのシリアル番号に基づいていてもよい。固定鍵回路は、暗号化回路および/または復号化回路の一部として形成されてもよく、プロセッサの算術論理演算ユニット(ALU)に含まれてもよい。不揮発性メモリは、暗号化されたコンピュータプログラムのソースコードを記憶してもよい。
一実施形態において、この装置はさらに、可変鍵を暗号化回路および復号化回路に供給するよう構成された可変鍵回路を備える。暗号化回路は、この実施形態において、暗号化されたバイトを不揮発性メモリに渡す前に、第3の論理演算を用いて可変鍵に基づいて各バイトを暗号化するようさらに構成される。復号化回路は、この実施形態において、復号化されたバイトをプロセッサに渡す前に第3の論理演算の逆演算である第4の論理演算を用いて可変鍵に基づいて各バイトを復号化するようさらに構成される。可変鍵は、少なくともバイトのいくつかごとに異なる。論理演算は、全てXOR演算またはハッシュ演算またはXOR演算とハッシュ演算の適切な組み合わせであってよい。
一実施形態において、可変鍵は、所定のシード値に応じて、リニアフィードバックシフトレジスタ(LFSR)回路により生成される。LFSR回路は、好ましくは、固定タッピングポイントを有する8ステージのLFSR回路である。また、可変鍵は、不揮発性メモリに記憶された暗号化されたバイトのそれぞれのメモリロケーションに対応していてもよい。シード値は、ランダムに選択された値にしてもよいし、また、デバイスのシリアル番号または他の一意の識別子であってもよい(またはこれらから導出されてもよい)。
好ましくは、暗号化回路は、データデリミタビットを含む、不揮発性メモリに記憶される全てのデータを暗号化する。従って、予想される暗号化されたデータの模倣者は、オーバーヘッドビットとは対照的に、記憶された暗号化データのどのバイトが適切なバイトであるか決定するために、データデリミタによる助けを受けられないであろう。
本発明の実施形態に係るデータの記憶および読み込み装置、回路、システム、方法、およびアーキテクチャは、バイト単位ごとまたはワード単位ごとにデータを暗号化および復号化することにより、記憶されたデータのセキュリティを向上する。その結果、それが記憶されているメモリからコピーされた場合、暗号化されたデータは、暗号化/復号化鍵にアクセスしなければ模倣者にとって役に立たない。固定鍵および/または可変鍵を暗号化および復号化のために用いることができる。
固定鍵は、たとえば、データが記憶されるデバイスのシリアル番号から得ることができる。デバイスのシリアル番号は、通常、デバイス製造業者にのみ知られているので、模倣者は、暗号化/復号化鍵にアクセスできないであろう。従って、固定鍵は、デバイス製造業者により固定鍵回路内にハードコードされる。その後、デバイスのソースコードまたは他の機密情報を記憶しようとしたとき、記憶されるデータは、固定鍵回路を通って渡される。その結果、記憶される前に暗号化がなされる。そのソースコードをデバイスメモリに書き込むエンティティは、そのソースコードが暗号化されるという利点を有するが、固定鍵を知らず、その秘密性を維持する必要がない。
鍵は、プログラマブルリードオンリーメモリ(PROM)に採用されたり、またはオブスキュアなレジスタに記憶されるなどのコンフィギュレーションヒューズを場合により用いて、CPUアーキテクチャおよび/または製造業者によりハードワイヤード回路で指定された特定の回路内に記録することができる。従って、CPUコア内に暗号化/復号化鍵を埋め込むことは、それを潜在的なメモリ模倣者に実質的に識別できなくする。固定化鍵は、従って、CPU回路にハードワイヤードまたはハードコードされる。この固定鍵のハードワイヤリングは、永久的な(すなわち、不揮発性の)、ワンタイムプログラマブル(OTP)であり、好ましくは、プログラムされた固定鍵に従って物理的に接続された導線のマトリックスから構成される。このような物理的な接続は、通常、磁気分極を検出するデバイスによっては読み出すことができないので、固定鍵の高いセキュリティを提供する。固定鍵を記憶するためにプログラマブルレジスタを用いることを避けるという点で、本発明の実施形態は、レジスタの磁気分極センサなどののぞき見技術などに対する脆弱性を回避している。
固定および可変の暗号化/復号化鍵の使用の組み合わせは、記憶されたデータにさらなるデータセキュリティを提供する。可変鍵は、たとえば、特定のバイトのメモリロケーションや所定の(しかし場合によってはランダムに選ばれた)番号の数列などのひと続きの番号に従って各バイトまたはワードが変化するよう設定できる。他の例では、可変鍵は、各バイトまたはワードに対し、LFSR回路の疑似ランダム出力に従って生成することができる。従って、異なるロケーションに記憶された同じ元データは、異なって暗号化されたデータとしてデバイス内に記憶されるであろうし(可変鍵が各バイトまたはワードに対して変化するので)、異なったデバイスにわたって(固定鍵はデバイス固有とできるので)記憶されるであろう。
本発明の実施形態のさらなる利点は、バイト単位ごとに実行されるので暗号化および復号化を高速で実行できることであり、従ってCPUのパフォーマンスに悪影響を及ぼすことがない。
本発明の実施形態は、概して、現在何らかの形式のデータ記憶装置に利用可能なものよりも高いデータセキュリティを促進するデータ符号化および復号化方法およびシステムに関する。データが記憶されるとき(すなわち、リードオンリーメモリに最初に書き込まれるとき)、データは、バイトごとに符号化(暗号化)される。暗号化は、バイトを同サイズの符号化形式に変換するために、論理演算を用いて行われる。このような論理演算は、たとえば、鍵を用いて排他的論理和(XOR)論理関数を実行したり、バイトまたはワードをハッシュ関数に通したりして、バイトまたはワード内におけるデータビットの位置を転置することを含むことができる。この暗号化は、少なくとも1つの固定鍵を用いて行うことができ、任意的に可変鍵を伴う論理関数を用いてさらなる暗号化を施すことができる。
説明を簡略化するために、ここで説明されるデータの暗号化および復号化は、バイトごとに行われるものとして説明する。しかしながら、8(すなわち、1バイト)以外のビット数が、暗号化および復号化のための情報量子として用いられることを理解すべきである。たとえば、命令セットが16ビットワードを用いている場合、暗号化および復号化はワードごとに行うことができる。同じように、命令セットが32ビットワードを用いている場合、暗号化および復号化は、32ビット情報量子関して行うことができる。一方、暗号化または復号化は、1度に4ビット(時々ニブルと呼ばれる)のみで行うこともできる。従って、この明細書ではバイトについて言及しているが、他のサイズの情報量子(information quanta)を採用することができ、このような代替の情報量子の実施が、本開示に照らして当業者にとって明らかであることを理解すべきである。
さらに、たとえば16または32ビットなど、データワードが8ビットよりも大きい場合でも、各ワード内におけるバイトは別々に暗号化することができる。従って、可変鍵が採用される場合、データワード内におけるバイトは異なる鍵を用いて暗号化される。
「暗号化」および「符号化」の用語並びにそれらの各バリエーションは、本明細書において同じ意味で用いられる。同様に、「暗号解読」および「復号化」の用語並びにそれらのバリエーションは、同じ意味で用いられる。
一旦記憶された暗号化された情報を読み出すために、固定鍵および可変鍵にアクセスする必要がある(初期の暗号化において用いられていた場合)。固定鍵は、CPUアーキテクチャに組み込まれたハードワイヤード論理回路により提供され、フラッシュメモリやその他のデータ記憶装置から離れて位置している。たとえば、暗号化されたフラッシュメモリに対し、そこに記憶されたソースコードは、CPUにて読み込まれ、処理されるが、最初に復号化(暗号解読)されていなければ、意味のある命令や情報をもたらすものではない。この復号化は、CPUアーキテクチャにハードコードされた固定鍵を用いることによってのみ行うことができ、これは、ソースコードが元々暗号化形式で記憶された特定のCPUに特有のものである。従って、オリジナルのマシンからのソースコードは、コピーすることは可能であるが、他のマシンはハードコードされた固定鍵にアクセスすることができないので、他のマシンにおいて用いることはできない。さらに、復号化鍵は、マシンに固有の位置でCPUアーキテクチャ内にハードワイヤードすることができるが、これはソースコードをコピーしようとする試みる人にとって明らかではなく、従ってソースコードの拡張されたセキュリティを提供する。
固定鍵は、デバイス固有のものであることが好ましい。たとえば、固定鍵は、マイクロコントローラを収容しているデバイスのシリアル番号や、マイクロコントローラ自身に付されているシリアル番号から得ることができる。シリアル番号は、暗号化および復号化処理において実行される論理演算の許容オペランド長よりも長くなる可能性があるので、固定鍵は、たとえば、バイナリコードのシリアル番号の8つの最上位または最下位ビットとして選択することができる。しかしながら、その他の所定のビットの選択を、シリアル番号から固定鍵を得るために用いることができる。固定鍵を決定するためにデバイスまたはマイクロコントローラのシリアル番号を用いることは、固定鍵がデバイス固有であること、および、暗号化され、他のデバイスに記憶された同じデータは、異なった記憶データであるように見えることを有利に意味する。また、デバイスのシリアル番号に代えて、記憶された異なるデバイス固有のコード(デバイス製造メーカにのみ知られている)を、固定鍵を得るために用いることができる。
図面を参照して、本発明の実施形態についてさらに詳細に説明する。参照を簡略化するために、ある機能がある図面に関して最初に導入される場合には、その機能は、100の位をその図面番号とした符号で示される。たとえば、図2に導入されたある機能は、200から299の間の符号を有する。その符号は、その後、後続の図面において、同一または他の実施の形態に適用されるときには、同一または類似の機能を示すために用いられる。
図1は、記憶する前にデータを符号化するデータ符号化装置100を示す。データ符号化装置100は、符号化しその後メモリ120に記憶するデータ125を受け取るエンコードロジック110を備える。エンコードロジック110は、また、データ125がメモリ120内の正しい場所に記憶されるように、データ125用のメモリロケーション130を入力として受け取る。鍵140は、エンコードロジック110に入力され、鍵140を用いて論理関数をそこで実行することによりデータ125の暗号化を促進する。データ125は、XOR論理関数を用いて暗号化される。これは、データバイトを1つのオペランドとして用い、鍵をもう1つのオペランドとして用いて、暗号化されていないデータ125と同じ長さの暗号化データ(すなわち、バイト長またはワード長)を生成する。
エンコードロジック110は、暗号化されたバイトをメモリ120のメモリロケーション130により指定された場所に記憶する。選択的に、エンコードロジック110はさらに、さらなる論理演算における1つのオペランドとしてメモリロケーション130を用いることにより、鍵暗号化されたデータをもう1つのオペランドとした状態で、記憶の前にデータを暗号化または符号化することができる。
暗号化鍵としてメモリロケーション130を用いることは、メモリロケーション130がデータ125のそれぞれのバイトまたはワードによって異なるので、可変暗号化鍵を有利に提供する。固定鍵140と可変鍵の組み合わせは、メモリ120に記憶されたデータに高いデータセキュリティを有利に提供する。メモリロケーション130以外の可変鍵、たとえば、プログラムカウンタや所定のナンバーシーケンスなどを用いることができる。他の例では、メモリロケーション(ポインタ)は、鍵のテーブルから鍵を選択するための鍵選択ポインタとして用いることができる。他の例では、可変鍵は、たとえば、図11に関して後述されるように、リニアフィードバックシフトレジスタ(LFSR)回路により、疑似乱数とすることができる。
エンコードロジック110は、プレファブチップや特定用途向け集積回路(ASIC)内に存在してもよいし、CPUアーキテクチャの一部にハードワイヤードされてもよく、直接に符号化データをメモリ120に書き込むためにデータバスに接続されることが好ましい。メモリ120は、フラッシュメモリやその他の形式の不揮発性メモリとすることができる。その他の不揮発性メモリの例は、リードオンリーメモリ(ROM)、プログラマブルリードオンリーメモリ(PROM)、消去可能プログラマブルリードオンリーメモリ(EPROM)、および電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)を含む。フラッシュメモリは、EEPROMの形式である。本発明の実施形態はCPU内の不揮発性メモリを保護するのに特に適しているが、メモリ120は、CPUアーキテクチャ内部またはその外部に存在してもよい。外部不揮発性メモリは、CDやDVDなどの光学的記憶装置や、その他の光学的、電気的、電気光学的、化学的(分子的)またはマイクロ機械的な記憶装置を含むことができる。
本発明の実施形態は、特に不揮発性メモリを保護するのに適しているが、RAM、レジスタ、またはキャッシュなどの揮発性メモリの形式にも適用することができる。さらに、本発明の実施形態は、特にコピーに細心の注意を払うべきファームウェアやデータを保護するのに特に適しているが、データの種類にかかわらず、どのようなデータ形式にも適用することができる。
メモリ120の特定のメモリ種類に応じて、1つ若しくは複数の回路またはデバイスをエンコードロジック110およびメモリ120とともに用いて、符号化されたバイトをメモリ120にロードするのを促進することができる。この目的に適した回路またはデバイスは、当業者にとって明らかであろう。たとえば、標準的なROM、PROM、EPROM、EEPROM、またはフラッシュとしてブートローダーを用いて、記憶の前に符号化するためにエンコードロジック110にバイトを供給することができる。
図2を参照すると、データ復号化装置200が示されている。データ復号化装置200は、デコードロジック210を備える。デコードロジック210は、メモリから読み込まれたデータバイト225を復号し、復号化されたバイトを、たとえばCPU内の算術論理演算ユニット(ALU)で実行することにより処理するデータ処理部220に渡す。また、データが光ディスクなどの記憶装置から読み込まれる場合には、たとえばオーディオまたはビデオ信号を生成するために、何らかの形式のデジタル信号処理を施すことができる。
復号化処理の一環として、デコードロジック210は、記憶されたデータバイト225をメモリ120のメモリロケーション230により決定された場所から読み出す。この記憶されたデータバイト225は、バイトごとに読み込まれるようにデコードロジック210に供給される。メモリロケーション230は、CPU内のマトリックスデコーダにより供給することができる。マトリックスデコーダは、プログラムカウンタおよび/またはRAMポインタに基づいた行と列の選択を用いる。また、マトリックスデコーダは、間接アドレス指定により、メモリロケーション230を決定することができる。
バイトのメモリロケーションが符号化処理において用いられた場合、それはまた、復号化処理におけるデコードロジック210によっても用いられる。メモリおよびメモリロケーション230からのバイト225から部分的に復号化されたバイトを得るために、逆論理関数が用いられる。この部分的に復号化されたバイトは、その後、元の符号化鍵140とともに用いられ、最終的にデータを復号化する。その後、復号化されたデータは、データ処理部220に供給される。
符号化および復号化処理において用いることのできる論理演算の例は、XOR関数およびハッシュ関数を含む。XOR関数が用いられる場合、XORの逆論理演算は、単にXOR関数である。すなわち、A XOR B=Cの場合、C XOR B=Aとなる。論理演算がハッシュ関数の場合、鍵140はハッシュ関数に組み込まれ、その鍵は、バイトまたはワード内のビットがハッシュ関数によってどのように転置されるかを決定する。ハッシュ関数の逆関数は、単にその元の位置への転置ビットをマップする。
符号化および復号化処理において用いることのできる論理演算のさらなる例は、バイト内のビットのグループまたはブロックのスワッピング、および、バイトへまたはバイトからの値の加算または減算を含む。加算または減算される値は、関連する論理演算において固定鍵または可変鍵のいずれが用いられているかに応じて、固定または可変の値とすることができる。
鍵140は、好ましくは、CPUアーキテクチャ内のある場所にハードワイヤードされる。これにより、たとえば、ALU内や、エンコードロジック110および/またはデコードロジック210内などにおいて、(たとえば、全体のCPUアーキテクチャのトポグラフィを観察することから)その関数を識別することが難しくなる。
鍵140は、専用の論理回路(図9に示される実施例である、トランジスタをベースとするハッシュマトリックスなど)における特定のトランジスタをイネーブルまたはディセーブルにすることにより、CPUの初期設定において設定することができる。または、鍵140は、図7に示すような導線のマトリックスにおいて導線接続部を構築することにより、初期設定において設定することができる。マトリックスにおける導線は、初めは接続されておらず、初期設定において、特定の導線が、ハッシュマトリックスにプログラムされるハッシュ関数に応じて、垂直に配向された導線に接続される。たとえば、導線の接続は、既存の集積回路形成技術に従って半導体基板を選択的レーザ露光することにより、製造プロセスの間に形成することができる。
一実施形態では、可変鍵は、固定鍵から得ることができる。たとえば、固定鍵は、(図8に関連して説明されるように)LFSR回路のシード値として用いることができる。これは、疑似ランダム可変鍵を新しいクロックサイクルごとに生成する。また、可変鍵は、各種量の加算または減算(または他の数学関数)により固定鍵から得ることができる。
図3を参照すると、CPUアーキテクチャ内で用いる復号化装置300が示されている。データ復号化装置300は、フラッシュメモリや他の不揮発性メモリなどのコンピュータプログラムのソースコードを記憶するメモリ310を備える。メモリ310は、メモリ120の一例である。このソースコードは、一度復号化すれば、算術論理演算ユニット(ALU)360により実行可能である。メモリ310は、デコードロジック320が特定のメモリロケーションにおけるビットのオンオフ状態を読み取ることができるように、特定のメモリロケーションにアクセスできるようにしている。従って、デコードロジック320は、メモリ310から効率的にバイトを受け取る。メモリ310は、本発明の実施形態(たとえば、図1に関連して説明した実施形態)に従って暗号化されたデータを含んでいるので、メモリ310から読み込まれたバイトは、ALUに渡される前にデコードロジック320により復号化されなければならない。
デコードロジック320は、固定鍵回路322にて形成された固定復号化鍵にアクセスできる。固定鍵回路322は、固定復号化鍵で符号化されたハッシュ関数をエミュレートすることができるか、または、トランジスタをベースとするハッシュ回路またはXOR回路(図9に関連して説明されるXOR回路1240など)内に固定復号化鍵をハードワイヤードすることができる。デコードロジック320は、固定復号化鍵を用いてハッシュ関数またはXOR演算を実行し、復号化されたバイトを生成する。
メモリ310内の暗号化データが可変暗号化鍵で暗号化されている場合、デコードロジック320も可変鍵回路324を用いて、各バイトをさらに復号化する。固定復号化鍵で復号化された各バイトごとに、可変鍵回路324は、その特定のバイトを復号化するための特定の可変復号化鍵を提供する。各バイトに対する特定の可変復号化鍵は、特定のバイトの暗号化に用いられる暗号化鍵に応じて定められる。たとえば、ランダムまたは疑似ランダムな番号のリストが暗号化の間に用いられた場合、その同じリストが復号化に用いられる。従って、可変鍵回路324は、バイトを符号化するために用いられた逆論理演算に従って各バイトを復号化するために、特定の可変復号化鍵をデコードロジック320に提供する。従って、論理演算がXOR演算であった場合、対称的であるが、バイトを復号化するのに同じXOR演算を用いることができ、バイトがハッシュ関数で暗号化された場合には、バイトを復号化するのにハッシュ関数の逆関数を用いることができる。
採用された可変鍵の種類に応じて、可変鍵回路324は、LFSR回路(図8に示す)などのデコードロジック320内の特定の回路、またはプログラムカウンタやメモリアドレスレジスタの出力を含むまたはアクセスできる。また、可変鍵回路324は、暗号化された不揮発性メモリ内に記憶されたランダムまたは疑似ランダムな鍵リストを含むまたはアクセスすることができる。
LFSR回路は、所定の数のフリップフロップおよびタッピングポイントを有する回路のために、シード値に応じて、疑似ランダム数列を有利に生成する。このようなLFSRは、同じシード値を与えられた場合には、同一の疑似ランダム数列を生成する。従って、暗号化プロセスにおいて用いられる復号化として同一の可変鍵シーケンスを生成するためには、メモリに(非常に長くなる可能性がある)数のリストを記憶するよりも、可変暗号化鍵を生成するのに用いられるシード値を記憶すれば足りる。また、ランダムまたは疑似ランダム数を繰り返して生成するために、他の回路構成を用いることも可能である。
各バイトは、デコードロジック320により復号化されると、命令レジスタ330に渡される。たとえば16ビットワードや32ビットワードなどの、CPUの命令セットで用いられるデータワードのサイズに応じて、バイトは、1つまたは複数のさらなるバイトが命令を完了するのを待つ間に、記憶することができる。CPUアーキテクチャで用いられる特定の命令セットに応じて、ワード長は、8、16、または32ビット以外とすることが可能である。命令レジスタ330が完了命令(デコードロジック320から1つまたは複数の復号化されたバイトで構成されている)を受け取ると、その命令は、命令を処理するために、マルチプレクサ350、そしてALU360に渡される。マルチプレクサ350は、ランダムアクセスメモリ(RAM)340からALU360へ命令およびデータの入力を調整する。
図4を参照すると、CPUで用いる別の復号化装置400が示されている。装置400は、デコードロジック320がALU360内に位置しており、符号化されたバイトを直接メモリ310から受け取る構成ではないことを除けば、装置300と類似している。ALU360内にデコードロジック320を位置させることにより、復号化されたデータがALU360で処理される前にバスラインをのぞき見することにより観察されるのをより困難にしている。
装置400において、メモリ310は、命令レジスタ330に暗号化されたバイトを供給する。命令レジスタ330は、CPUの命令セットのデータサイズに応じた、データワードを完了するのに十分なバイトを受け取るまで、バイトを記憶する。命令レジスタ330は、その後、データワード(まだ暗号化されている)をマルチプレクサ350に渡す。マルチプレクサ350は、ALU360への命令とデータ(RAM340からの)の入力を調整する。マルチプレクサ350が命令レジスタ330から暗号化されたデータワードを受け取る場合、マルチプレクサ350は、暗号化されたワードをALU360内のデコードロジック320に渡す。デコードロジック320は、固定鍵回路322により供給された、または固定鍵回路322に組み込まれた鍵、および、妥当な場合、可変鍵回路324により提供された鍵を用いて、データワードを復号化を進める。復号化されたデータワードは、その後、ALU360により実行、若しくは処理される。
装置400では、デコードロジック320は、命令ワードの個々のバイトを別々に復号化するか、またはワードごとに復号化を実行するように構成することができる。復号化がバイトごとに実行される場合、これは、上述したように行われる。しかしながら、復号化がワードごとに実行される場合、固定鍵回路322により提供される固定復号化鍵は、バイト長鍵よりむしろ、ワード長鍵であり、可変鍵回路324により提供される可変復号化鍵もまた、ワード長鍵である。ワードのメモリロケーションが、暗号化処理の間(メモリ310への記憶の前)にそのワードのバイトを暗号化するのに用いられた場合、ワードのメモリロケーションは、これはそのワードにおける第1バイトのメモリロケーションであるが、可変鍵回路324により提供された可変復号化鍵として用いられる。
メモリ310内のデータがバイトごとに符号化された場合、装置400では、デコードロジック320は、それぞれの命令ワードにおいてバイトごとにバイトを復号化しなければならず、可変鍵回路324は、それぞれの可変復号化鍵をそれに従って提供する。
図3および図4に関連した実施例としてフラッシュメモリ310が図示および記載されているが、本発明が適用される個々の状況に応じて、他の形式のメモリもフラッシュメモリの代わりに用いることができる。このような他の形式のメモリは、簡潔かつ本発明が不明瞭となるのを避けるために、ここには記載されていない。
図5を参照すると、データ符号化方法500が示されている。データ符号化方法500では、まず、ステップ510において、メモリ120(またはメモリ310)に記憶されるバイトを受けとる。記憶されるバイトは、内部のブートローダからシリアルおよび/またはパラレル方式で受け取ることができる。これは、たとえば、ファームウェアまたはハードウェアにより実行することができる。たとえば標準的なROMおよびPROMなどの種類のROMに対しては、データをメモリチップの製造業者により予め符号化し、記憶しておくことができる。このようなケースでは、メモリチップの製造業者がCPUの製造業者と同一の業者でない場合には、記憶されたデータが読み込まれて復号化できるとともに、固定鍵がCPU製造業者により適切に固定鍵回路322に書き込まれるように、チップの製造業者とCPUの製造業者は、符号化に用いる暗号化鍵を共有しなければならない。
ステップ520において、バイトの意図された記憶場所が、たとえばブートローダーにより決定される。ステップ530では、ハッシュ関数やXOR演算などの所定の論理関数に基づいた固定暗号化鍵を用いて、バイトが符号化される。また、可変鍵暗号化が用いられる場合には、バイトもまた、ステップ525において、論理関数に基づいた可変暗号化鍵を用いてエンコードロジック110により暗号化される。固定および可変鍵暗号化において用いられる論理関数は、同一としてもよいし、異なるものとしてもよい。
可変鍵暗号化は、固定鍵暗号化の前に任意的に発生するものとして図5に示されているが、固定鍵暗号化および可変鍵暗号化の順序は、交換可能である。バイトは、暗号化されると、ステップ540において、所定のメモリロケーションに記憶される。別の実施形態では、ステップ530は、ステップ525を任意的な固定鍵暗号化ステップとして、可変鍵暗号化を用いることができる。
本発明のさらなる実施形態では、セキュリティを高めるために、2つ以上の暗号化鍵を用いることができる。このような追加的な鍵は、固定または可変とすることができる。このようなさらなる実施形態は、たとえば、3つ、4つ、または5つの鍵を、それぞれの鍵が拡張された符号化のシーケンスにおいて用いられるようにして、用いることができる。そこでは、データは、連続的に実行される論理関数(これは、同一であっても異なっていてもよい)に従って、全ての鍵で符号化される。さらに、可変数の鍵は、固定数の鍵よりむしろ用いることができる。もちろん、符号化において用いられる鍵の数およびロケーションは、記憶されたデータを復号化可能とするためには、デコードロジック210または310に知られていなければならない。
一実施形態では、符号化において用いられる鍵の数は、各バイトに対して変化することができる。たとえば、鍵の数は、バイトのロケーションに応じて、またはランダムに、または疑似ランダムに、変化することができる。また、符号化において用いられる鍵の数は、LFSR回路などの回路によって生成される疑似ランダム数列に従って決定することができる。確実に疑似ランダム数の繰り返し度が低くなり、用いられる鍵の数も少なくなるようにするために、LFSR回路は、ほぼ4から8程度のステージを有することが好ましく、LFSR回路出力の最初の数ビットのみが、使用する鍵の数を決定するために用いられる。
図6を参照すると、図3の装置300に基づいた、データ復号化方法600が示されている。データ復号化方法600は、まず、ステップ610において、記憶装置(すなわち、メモリ120またはメモリ310)から暗号化されたバイトを読み込む。ステップ610にて読み込まれたバイトは、ステップ620において、固定鍵を用いて復号化される。固定鍵および符号化されたバイトは、XOR演算やハッシュ関数などの論理演算に適用される。これは、その記憶前のデータ符号化において用いられた論理演算の逆論理演算である。
可変鍵を用いてバイトが暗号化された場合、ステップ625において、ステップ620にて部分的に復号化されたバイトは、可変復号化鍵および第2の論理演算を用いてさらに復号化される。部分的に復号化されたバイトおよび可変鍵は、結果として生じるバイトが完全に復号化されている状態で、第2の論理演算に対してオペランドとして用いられる。可変鍵暗号化が記憶装置から読み込まれたデータの符号化に用いられなかった場合には、ステップ625はスキップされる。
ステップ620またはステップ625により生じる完全に復号化されたバイトは、レジスタに渡され、データワードの全てのバイトを受け取るまで、そこで保持される(ステップ630)。データワードの全てのバイトがまだ読み込まれていない場合には、データワードの全てのバイトが読み込まれるまで、ステップ610から620(および該当する場合にはステップ625)が繰り返される。ひとたびデータワードレジスタがワードを形成する全ての復号化されたバイトを受け取ると、データワードは、ステップ640にてALU360に渡され、データワードにより表される命令は、ステップ650において、処理/実行される。ステップ610から650は、さらに処理されるべき命令がある限り、繰り返して実行される。
ワード長が1バイト長のみの場合には、ステップ630はスキップされ、ステップ620から625により生じる完全に復号化されたバイトは、ステップ640において、直接ALU360に渡される。
別の実施形態においては、ステップ640は、データワードまたはバイトをALU以外のプロセッサ、たとえば、データを信号データとして処理するデジタル信号処理プロセッサ(DSP)などに渡すことができる。この別の実施形態は、データ記憶装置が、コンピュータプログラムのソースコードよりむしろ、たとえばオーディオまたはビデオ信号データを記憶している場合に適用することができる。この別の実施形態では、ステップ650は、その特定のデータの種類に応じてデータを処理するステップを含むことができる。
別の実施形態では、方法600は、図4の装置400にもまた適用することが可能である。このような実施形態では、暗号化されたデータバイトまたはワードは、命令レジスタ330に読み込まれ、命令レジスタ330からALU360に直接渡される。ALU360では、デコードロジック320を用いて復号化が実行される。従って、この実施形態では、ステップ620および625は、ステップ640の後、且つステップ650の前に行われる。
図7を参照すると、上述したエンコードロジック110またはデコードロジック210、320の関数の一環としてのハッシュ関数を実行するハッシュマトリックス700の例が示されている。ハッシュマトリックス700は、特定の導線が接続され、他の全ての導線は接続されていない導線のアレイを備える。接続された導線は、ハッシュ鍵に対応するように構成されている。よって、たとえば、8ビット入力の場合、8ビットのそれぞれは、アレイ内における各接続導線の位置のために、異なるビット位置にマップすることができる。これらの導線は、コンフィギュレーションヒューズにより、恒久的なコンフィギュレーションに接続でき、または、電気的にリコンフィギュラブルに接続することができる。
図7に示す例では、ビット位置01234567を有する入力バイトは、ハッシュマトリックス700により、出力では、新たなビット位置42130576に転置されている。
導線の接続は、いろいろな方法で形成することができるが、ワンタイムプログラマブル(OTP)で、磁気分極センサで読取できないように構成されることが好ましい。従って、論理レベルでリコンフィギュラブルとするよりもむしろ、物理レベルで導線接続を形成することが好ましい。このようにして、固定鍵は、デバイス固有に選択されるので、それぞれの固定鍵回路はデバイス固有となり、メモリ310は、そのデバイス固有の固定鍵を用いて暗号化されたデータを記憶する。これにより、メモリ310からコピーされた場合、そのデータは、他のデバイスでは使えなくすることができる。
一例では、導線の接続は、半導体のダイの製造プロセスの間に形成することができる。接続は、半導体基板における導線の特定の導線交差点を、レーザ書き込みビームで選択的露光を行うことにより、ダイに書き込むことができる。このような接続は、その後、集積回路を形成する後続のステップにおいて、保護され、保存され、隠される。
一実施形態においては、複数の固定鍵回路を用いることができ、それぞれは、異なる固定コードがそこに書き込まれ、異なるメモリまたは同じメモリの異なる部分を符号化および復号化するために用いられる。
ハッシュマトリックス700は、マトリックスの片側に入力接続部710を備え、マトリックスの別の側に出力接続部740を備える。入力導線720は、縦方向に配置されており、一方、出力導線725は、入力導線に交差するように横方向に配置されている。入力導線720と出力導線725のそれぞれは、最初には接続されていない。
固定鍵のハードコーディング手順では、入力導線720と出力導線725の間に接続730が選択され、接続点730がハッシュマトリックス700に形成される。接続点730の配置は、ハードコードされた形の固定鍵であり、接続点730は、ハッシュマトリックス700に符号化される所望の固定(ハッシュ)鍵735に従って形成される。入力導線720のそれぞれが、入出力間のビット転置が確実に1対1となるよう1つの出力導線725にのみ接続されるために、入力導線720と出力導線725が交差するその他全ての位置は、絶縁若しくは未接続のままである。
図7に示すハッシュマトリックスは、符号化または復号化に用いることができる。ハッシュマトリックスが、入ってくるバイトを符号化するよう構成されている場合、対応する逆ハッシュマトリックスもまた、たとえば、デコードロジック320の一環として、転置されたビットを元の位置にマップするために、復号化プロセスを提供する。また、回路構成に応じて、同じハッシュマトリックスを逆の方法で復号化に用いることができる。
図7には、直角に走っている入力導線720および出力導線725が示されているが、当然のことながら、所望のハッシュ構成を構築するのに互いに所望のポイントで容易に接続できる限りは、導線が直角に走っていないような他の導線の配向および配置も採用することができる。たとえば、入力導線720は、薄い絶縁層により分離された出力導線725に対して上方且つ平行に走ることができる。ここでは、所望するように各導線を接続するために、絶縁層は、除去するか、導電性に変化することができる。また、当然のことながら、選択された導線を接続することによりハッシュマトリックスの接続を形成する代わりに、入力導線の全てが出力導線の全てに接続され、接続が望まれる導線間以外の全ての導線の接続を切ることにより、固定鍵がハードコードされるように、導線をプレハブ成形してもよい。
図7には、接続点730が点の接続として図示されている。しかしながら、図9に示すように、導線接続は、代わりに、トランジスタや他の固体素子などの他の適切な接続手段を用いて形成することもできる。
上述の実施形態に係るバイトごとのデータ符号化は、付録Aの表1から表3に、表形式で示されている。表1は、最左列(これを6列中の第1列と呼ぶ)にソースデータ例を16進数表記で示している。対応する2進数のソースデータは、第2列に示されている。表1に示された例では、2進数のソースデータは、メモリロケーション(第3列に10進数のロケーション値を示し、第4列に対応する2進数のロケーションを示す)を可変鍵として用いてXOR論理演算を行うことにより符号化され、固定鍵としての所定の数で(XOR演算により)符号化される。固定鍵は、この場合、5C(16進数)または01011100(2進数)。結果として生じる符号化され、記憶されたデータは、第5列に2進数表記で示され、第6列に対応する16進数表記で示されている。
表2に示すさらなる例では、固定鍵のみが変更されている。5Cに代えて、表2における新たな固定鍵は、A7である。表2の第5および第6列からはっきり分かるように、得られる符号化され記憶されるデータは、表1の同じ列に示されるものとは異なっている。表3には、さらなる例が示されている。表3では、同じ固定鍵(A7)が用いられているが、可変鍵(すなわち、メモリロケーション)が1ずつ増やされており、実際には、記憶装置が異なったロケーションから始まっている。可変鍵のこの小さな変化により、表3の第5列および第6列に示されるように、全ての符号化され記憶されるデータが変化する結果となる。
図8を参照すると、LFSR回路1100の例が示されている。LFSR回路1100は、直列にコモンクロック1120に接続された複数のDラッチ(フリップフロップ)1110を備える。Dラッチ1110のそれぞれは、前のDラッチ1110と次のDラッチ1110に直列に接続されている(但し、それが直列の最初または最後である場合を除く)。Dラッチ1110は、1または0のビット値を表す電圧を出力する出力端子に接続された出力ライン1130を有する。各Dラッチ1110の出力ライン1130は、また、フィードバック論理回1140へのフィードバックとして用いることができる。フィードバック論理回1140は、直列の最初のDラッチ1110へのフィードバック入力の一部を形成する。
出力ライン1130に沿って疑似ランダム数の生成を達成するために、選択された出力ライン1130のみがフィードバック論理回1140への入力として用いられる。たとえば、図8に示すように、第2、第3、第6および第8のDラッチ出力ライン1130がフィードバック論理回1140への入力として用いられている。フィードバック論理回1140への入力用に選択された出力ライン1130の位置は、また、タッピングポイントと呼ばれる。最大の疑似ランダム数列長を提供するいくつかの所定の最適なタッピングポイントの配置はあるが、タッピングポイントの選択に応じて、(繰り返し前の)疑似ランダム数列長は変化する。
図8に示されたLFSR回路1100の例は、8つのDラッチ1110(8ステージLFSR回路と呼ばれる)と、4つの所定の固定タッピングポイントを有する。LFSR回路のパフォーマンスに応じて、異なる数のDラッチ1110を用いることができる。さらに、所望するLFSR回路のパフォーマンスに応じて、異なる数のタッピングポイントおよび代わりのタッピングポイントの配置を用いることが可能である。一実施形態では、LFSR回路は、可変タッピングポイントを有するよう構成することが可能である。これにより、要求に応じて異なる疑似ランダム数列を生成するよう、マイクロプロセッサで制御できる。
疑似ランダム数列の生成を開始するために、LFSR回路1100にシード値を供給する必要がある。このシード値は、シリアルに入力することができ、最初のDラッチ1110で始まり、8クロックサイクルで残りのDラッチ1110に伝搬する。また、Dラッチ1110は、単一のクロックサイクルでシードビットのパラレル入力できるよう構成することも可能である。
クロック1120の各クロックサイクルごとに、各Dラッチ1110の出力は、直列に接続された次のDラッチ1110および出力ライン1130に供給される。従って、8つの出力ライン1130のそれぞれのビット値は、前のクロックサイクルでの前のDラッチ1110の出力および直列の最初のDラッチ1110に供給されるフィードバックに依存する。
LFSR回路1100がゼロの連続でスタックするのを防止するために、各Dラッチ1110の出力は、NORゲート1150にも供給され、この出力は、フィードバック論理回1140の出力とともにXORゲート1160に供給される。XORゲート1160の出力は、その後、フィードバック入力として直列の最初のDラッチ1110に供給される。従って、全ての出力ライン1130が0の値を伝送している場合、NORゲート1150は、1の値を出力する。これにより、Dラッチに疑似ランダム数の生成を再開させることができる。
フィードバック論理回1140は、このLFSR回路1100の例では、3つのXORゲートを備える。2つのXORゲートのそれぞれは、4つのタッピングポイントからの4つのフィードバック入力のうち2つを受け取る。そして、これらのXORゲートの出力は、3番目のXORゲートに供給される。このXORゲートは、次に、出力をXORゲート1160に供給する。
図9を参照すると、符号1200で指定された符号化または復号化回路の特定の実施形態が示されている。この回路は、鍵回路140または固定鍵回路322の関数の少なくとも一部を備える。回路1200は、また、1つの可能な実施形態において、LFSR回路1100とともに可変鍵回路324の少なくとも一部として用いることができる。回路1200は、XOR符号化回路1240と組み合わせてハッシュマトリックス1205を備える。ハッシュマトリックス1205は、ハッシュマトリックス1205の入力導線1220と出力導線1225との間に形成された選択された回路接続に応じて、その中でハッシュ鍵1215が符号化または形成されるという点で、ハッシュマトリックス700と動作が類似している(そして、同じ固定鍵で符号化する様子を示している)。
ハッシュマトリックス700の回路接続730と対称的に、ハッシュマトリックス1205は、たとえばトランジスタ1230などのスイッチングデバイスのマトリックスを用いている。これは、入力導線1220を出力導線1225と相互接続している。図9に示したトランジスタは、バイポーラ接合トランジスタ(BJT)であるが、トランジスタはBJTまたは電界効果トランジスタ(FET)とすることができる。代替手段として、他の固体半導体デバイスや単純な導体も、入力導線1220と出力導線1225との間の切替可能または切替不可能な接続を形成するために用いることができる。さらなる代替手段として、固定または可変鍵で構成されたマルチプレクサの形式を、各バイトまたはワード内のビットの転置/リダイレクトに用いることができる。
符号化される、またはハッシュマトリックス1205内に形成される固定鍵に応じて、各入力導線1220を各出力導線1225に接続するために特定のトランジスタが選択される。ハッシュマトリックス1205で選択されなかったトランジスタは、入力および出力導線1220、1225に非接続にするか、またはベース端子をローにすることにより、ディセーブルにする。それぞれの選択されたトランジスタ1230のベース端子がハイのとき、そのトランジスタ1230はイネーブルとなる。従って、関係する入力導線1220の入力電圧は、各トランジスタ1230が接続される出力導線1225に渡され、その結果、入力1210のビット位置が異なった出力ビット位置に転置される。リコンフィギュラブルなハッシュマトリックス1205の実施形態では、マトリックスの各トランジスタのベース端子は、独立して選択可能である。従って、各入力導線1220を任意の出力導線1225に選択的に接続可能とすることができる。
図9に示す回路1200の例では、ハッシュマトリックス1205は、出力導線1225と接続されたXOR符号化回路1240と組み合わせて用いられている。出力導線1225のそれぞれは、XOR符号化回路1240XORゲート1270への一方の入力として用いられている。各XORゲート1270の他方の入力は、XOR符号化回路1240に符号化されたXOR鍵1260の1ビットを供給する。XOR鍵1260は、XOR符号化回路1240の各ビット位置に符号化されるXOR鍵1260のビット値に応じて、ハイ入力ライン1250またはロー入力ライン1255から選択された一方に接続された各XORゲート1270の第2の入力を有することにより符号化される。たとえば、1をXORゲート1270の第2の入力に供給するために、その入力は、接続ポイント1265において、ハイ入力ライン1250に接続される。逆に、0をXORゲート1270の第2の入力に供給するためには、その入力は、接続ポイント1265において、ロー入力ライン1255に接続されなくてはならない。XOR符号化回路1240における接続ポイント1265は、ハードワイヤードされることが好ましく、図7に関して説明した接続点730と同じように形成することができる。
図9は、ハッシュマトリックス1205の出力に接続された一連のXOR符号化ゲート1270を有するXOR回路1240を示している。図示された実施形態の例において、XOR符号化回路1240は、復号化または符号化プロセスの一環としてさらなる論理演算を実行するために用いることができる。このような実施形態の例においては、XOR符号化ゲート1270は、有利に、固定暗号化鍵または固定復号化鍵を含む論理演算を実行するために用いることができる。一方、ハッシュマトリックス1205は、可変鍵暗号化または復号化(ハッシュマトリックスがリコンフィギュラブルの場合)に用いることができる。図9に示された例では、入力バイト値11010111は、ハッシュマトリックス1205により、00111111に転置される。転置されたバイトは、その後、(XOR鍵1260の)値10100110でXORされ、出力バイト値10011001が供給される。
図9は、ハッシュマトリックス1205と組み合わせたXOR回路1240を示しているが、当然のことながら、これらの回路のどちらかは別の回路、その中でハードコードされた固定鍵が形成される回路か、LFSR回路1100などの可変鍵を生成する回路かに置き換えることができる。しかしながら、少なくとも1つの回路は、ハードコードされた固定鍵がその中で形成されるべきである。回路1200は、データの符号化または復号化に用いることができる。回路1200がデータの符号化に用いられる場合、ハッシュマトリックス1205が、符号化回路とは逆にビットを転置するよう逆に構成されることを除いて類似の回路がそのデータの復号化に与えられる。
実行される論理演算の特定の種類に応じて、暗号化/符号化に含まれる論理演算を実行するために、代替的な回路を用いることができる。図9に示されるトランジスタ1230は、ビットを新たな位置にリダイレクトする多くの可能な手段のうちの1つのみを表している。たとえば、他の形式のトランジスタや論理スイッチを、図9に示されたトランジスタスイッチ1230に代えて用いることができ、他の論理スイッチ構成をハッシュ以外の論理演算のために用いることができる。
本発明の実施形態を図面を参照して説明したが、この説明は例示であること、および本発明の精神または範囲を説明され図示された実施形態のみに限定することを意図していないことは理解されるところである。本発明の精神と範囲を逸脱しない範囲でのいくつかの改良および拡張は当業者にとって明らかである。
Claims (56)
- プロセッサと関係するメモリから、少なくとも1バイトの記憶されたデータを読み込む工程と、
読み込まれた各バイトごとに、復号化鍵を用いてバイトに論理演算を実行して復号化されたバイトを生成する工程であって、前記復号化鍵は、前記プロセッサにアクセス可能な専用の鍵回路に符号化されている工程と、
各復号化されたバイトをその処理のために前記プロセッサに供給する工程と、
を備えることを特徴とするデータ読み出し方法。 - 前記記憶されたデータは、暗号化されたコンピュータプログラムのソースコードであることを特徴とする請求項1に記載の方法。
- 前記メモリは、不揮発性メモリの形式であることを特徴とする請求項1または2に記載の方法。
- 前記不揮発性メモリは、リードオンリーメモリ(ROM)の形式であることを特徴とする請求項3に記載の方法。
- 前記記憶されたデータは、暗号化されたマイクロプロセッサデータであることを特徴とする請求項1に記載の方法。
- 前記復号化鍵は第1の復号化鍵であり、前記論理演算は第1の論理演算であって、
当該方法は、各バイトごとに、第2の復号化鍵を用いて前記復号化されたバイトに第2の論理演算を実行してさらに復号化されたバイトを生成する工程をさらに備えることを特徴とする請求項1から5のいずれかに記載の方法。 - 前記第1の論理演算は、XOR演算であり、データバイトおよび前記第1の復号化鍵は、前記XOR演算のオペランドであることを特徴とする請求項6に記載の方法。
- 前記第1の論理演算は、前記第1の復号化鍵で符号化された第1のハッシュ関数であって、前記第1のハッシュ関数によってデータバイトのビットが転置され、前記第1の復号化鍵に基づいて復号化されたバイトが生成されることを特徴とする請求項6に記載の方法。
- 前記第2の論理演算はXOR演算であり、前記復号化されたバイトおよび前記第2の復号化鍵は、前記XOR演算のオペランドであることを特徴とする請求項7または8に記載の方法。
- 前記第2の論理演算は、前記第2の復号化鍵で符号化された第2のハッシュ関数であって、前記第2のハッシュ関数によって復号化されたバイトのビットが転置され、前記第2の復号化鍵に基づいて前記さらに復号化されたバイトが生成されることを特徴とする請求項7または8に記載の方法。
- 前記第2の復号化鍵は、可変復号化鍵であり、前記第1の復号化鍵は、固定復号化鍵であることを特徴とする請求項6に記載の方法。
- 前記第1の復号化鍵は、可変復号化鍵であり、前記第2の復号化鍵は、固定復号化鍵であることを特徴とする請求項6に記載の方法。
- 前記可変復号化鍵は、少なくとも1つのデータバイトのそれぞれのメモリロケーションに対応していることを特徴とする請求項11または12に記載の方法。
- 前記可変復号化鍵は、各バイトごとに異なることを特徴とする請求項11または12に記載の方法。
- 前記記憶されたデータは、前記復号化鍵と同じ符号化鍵を用いて符号化されていることを特徴とする請求項1から14のいずれかに記載の方法。
- 前記復号化鍵は、前記プロセッサまたは前記プロセッサをハウジングするデバイスのシリアル番号に基づいていることを特徴とする請求項1から15のいずれかに記載の方法。
- 前記復号化鍵は、前記鍵回路に恒久的にハードコードされていることを特徴とする請求項1から16のいずれかに記載の方法。
- 前記可変復号化鍵は、所定のシード値に応じて、リニアフィードバックシフトレジスタ(LFSR)回路により生成されることを特徴とする請求項11または12に記載の方法。
- 前記LFSR回路は、所定のタッピングポイントを有する8ステージLFSR回路であることを特徴とする請求項18に記載の方法。
- 前記鍵回路は、前記プロセッサの算術論理演算ユニット(ALU)に含まれることを特徴とする請求項1から19のいずれかに記載の方法。
- プロセッサと関係するメモリに記憶される少なくとも1バイトのデータを受け取る工程と、
受け取った各バイトごとに、暗号化鍵を用いてバイトに論理演算を実行して暗号化されたバイトを生成する工程であって、前記暗号化鍵は、前記プロセッサにアクセス可能な専用の鍵回路に符号化されている工程と、
各暗号化されたバイトを前記メモリに記憶する工程と、
を備えることを特徴とするデータ記憶方法。 - 前記記憶されるデータは、コンピュータプログラムのソースコードであることを特徴とする請求項21に記載の方法。
- 前記メモリは、不揮発性メモリの形式であることを特徴とする請求項21または22に記載の方法。
- 前記不揮発性メモリは、リードオンリーメモリ(ROM)の形式であることを特徴とする請求項23に記載の方法。
- 前記記憶されるデータは、マイクロプロセッサデータであることを特徴とする請求項21に記載の方法。
- 前記暗号化鍵は第1の暗号化鍵であり、前記論理演算は第1の論理演算であって、
当該方法は、各バイトごとに、第2の暗号化鍵を用いて前記暗号化されたバイトに第2の論理演算を実行してさらに暗号化されたバイトを生成する工程をさらに備えることを特徴とする請求項21から25のいずれかに記載の方法。 - 前記第1の論理演算は、XOR演算であり、データバイトおよび前記第1の暗号化鍵は、前記XOR演算のオペランドであることを特徴とする請求項26に記載の方法。
- 前記第1の論理演算は、前記第1の暗号化鍵で符号化された第1のハッシュ関数であって、前記第1のハッシュ関数によってデータバイトのビットが転置されて、前記第1の暗号化鍵に基づいて前記暗号化されたバイトが生成されることを特徴とする請求項26に記載の方法。
- 前記第2の論理演算はXOR演算であり、前記暗号化されたバイトおよび前記第2の暗号化鍵は、前記XOR演算のオペランドであることを特徴とする請求項27または28に記載の方法。
- 前記第2の論理演算は、前記第2の暗号化鍵で符号化された第2のハッシュ関数であって、前記第2のハッシュ関数によって暗号化されたバイトのビットが転置され、前記第2の暗号化鍵に基づいて前記さらに暗号化されたバイトが生成されることを特徴とする請求項27または28に記載の方法。
- 前記第2の暗号化鍵は、可変暗号化鍵であり、前記第1の暗号化鍵は、固定暗号化鍵であることを特徴とする請求項26に記載の方法。
- 前記第1の暗号化鍵は、可変暗号化鍵であり、前記第2の暗号化鍵は、固定暗号化鍵であることを特徴とする請求項26に記載の方法。
- 前記可変暗号化鍵は、少なくとも1つのデータバイトのそれぞれのメモリロケーションに対応していることを特徴とする請求項31または32に記載の方法。
- 前記可変暗号化鍵は、各バイトごとに異なることを特徴とする請求項31または32に記載の方法。
- 前記暗号化鍵は、前記プロセッサまたは前記プロセッサをハウジングするデバイスのシリアル番号に基づいていることを特徴とする請求項21から34のいずれかに記載の方法。
- 前記暗号化鍵は、前記鍵回路に恒久的にハードコードされていることを特徴とする請求項21から35のいずれかに記載の方法。
- 前記可変暗号化鍵は、所定のシード値に応じて、リニアフィードバックシフトレジスタ(LFSR)回路により生成されることを特徴とする請求項31または32に記載の方法。
- 前記LFSR回路は、所定のタッピングポイントを有する8ステージLFSR回路であることを特徴とする請求項37に記載の方法。
- メモリに記憶される全てのデータは、暗号化されることを特徴とする請求項21から38のいずれかに記載の方法。
- プロセッサと、
少なくとも1バイトのデータを記憶するために前記プロセッサにアクセス可能な不揮発性メモリと、
前記不揮発性メモリに記憶されるデータを受け取り、受け取った各バイトを第1の論理演算を用いることにより鍵に基づいて暗号化し、暗号化された各バイトを記憶のために前記不揮発性メモリに渡すよう構成された暗号化回路と、
暗号化されたデータのバイトを前記不揮発性メモリから受け取り、前記第1の論理演算の逆演算である第2の論理演算を用いて前記鍵に基づいて各バイトを復号化し、復号化された各バイトを前記プロセッサに渡すよう構成された復号化回路と、
その中で前記鍵が形成され、前記暗号化回路および復号化回路にアクセス可能な鍵回路と、
を備えることを特徴とする計算装置。 - 前記鍵は固定鍵であり、前記鍵回路は固定鍵回路であることを特徴とする請求項40に記載の装置。
- 前記固定鍵回路は、該固定鍵回路における複数の導線のうち選択された導線間に形成された恒久的な電気的接続に従って、不揮発性にその中に固定鍵を形成することを特徴とする請求項41に記載の装置。
- 前記固定鍵は、前記プロセッサまたは前記プロセッサをハウジングするデバイスのシリアル番号に基づいていることを特徴とする請求項41または42に記載の装置。
- 前記不揮発性メモリは、暗号化されたコンピュータプログラムのソースコードを記憶することを特徴とする請求項40から43のいずれかに記載の装置。
- 可変鍵を前記暗号化回路および前記復号化回路に供給するよう構成された可変鍵回路をさらに備え、前記暗号化回路はさらに、前記暗号化されたバイトを前記不揮発性メモリに渡す前に、第3の論理演算を用いて前記可変鍵に基づいて各バイトを暗号化するよう構成され、前記復号化回路はさらに、前記復号化されたバイトを前記プロセッサに渡す前に、前記第3の論理演算の逆演算である第4の論理演算を用いて前記可変鍵に基づいて各バイトを復号化するよう構成されることを特徴とする請求項41から43のいずれかに記載の装置。
- 前記可変鍵は、各バイトごとに異なることを特徴とする請求項45に記載の装置。
- 1つまたは複数の前記第1、第2、第3および第4の論理演算は、XOR演算であることを特徴とする請求項45または46に記載の装置。
- 1つまたは複数の第1、第2、第3および第4の論理演算は、ハッシュ演算であることを特徴とする請求項45または46に記載の装置。
- 前記可変鍵は、所定のシード値に応じて、リニアフィードバックシフトレジスタ(LFSR)回路により生成されることを特徴とする請求項45から48のいずれかに記載の装置。
- 前記LFSR回路は、所定のタッピングポイントを有する8ステージLFSR回路であることを特徴とする請求項49に記載の装置。
- 前記可変鍵は、前記不揮発性メモリに記憶された暗号化されたバイトのそれぞれのメモリロケーションに対応していることを特徴とする請求項45から48のいずれかに記載の装置。
- 前記暗号化回路は、前記不揮発性メモリに記憶される全てのデータを暗号化し、前記復号化回路は、前記不揮発性メモリから受け取った全てのデータを復号化することを特徴とする請求項40から51のいずれかに記載の装置。
- 前記鍵回路は、前記プロセッサの算術論理演算ユニット(ALU)に含まれることを特徴とする請求項40から52のいずれかに記載の装置。
- 前記鍵回路は、前記暗号化回路および前記復号化回路にのみアクセス可能であることを特徴とする請求項40から53のいずれかに記載の装置。
- 前記鍵回路は、前記暗号化回路および/または前記復号化回路の一部として形成されることを特徴とする請求項40から54のいずれかに記載の装置。
- 前記鍵は可変鍵であり、前記鍵回路は可変鍵回路であることを特徴とする請求項40に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US65163605P | 2005-02-11 | 2005-02-11 | |
US69380105P | 2005-06-27 | 2005-06-27 | |
PCT/CA2006/000199 WO2006084375A1 (en) | 2005-02-11 | 2006-02-10 | Method and system for microprocessor data security |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008530663A true JP2008530663A (ja) | 2008-08-07 |
Family
ID=36792881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007554404A Pending JP2008530663A (ja) | 2005-02-11 | 2006-02-10 | マイクロプロセッサのデータセキュリティの方法およびシステム |
Country Status (6)
Country | Link |
---|---|
US (1) | US20070172053A1 (ja) |
EP (1) | EP1849117A1 (ja) |
JP (1) | JP2008530663A (ja) |
KR (1) | KR20070118589A (ja) |
CA (1) | CA2593441A1 (ja) |
WO (1) | WO2006084375A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008185616A (ja) * | 2007-01-26 | 2008-08-14 | Canon Inc | 秘密鍵暗号方法、秘密鍵暗号装置、及びコンピュータプログラム |
JP2018074448A (ja) * | 2016-10-31 | 2018-05-10 | 株式会社テイエルブイ | 暗号化システム及び暗号化方法 |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8520069B2 (en) | 2005-09-16 | 2013-08-27 | Digital Ally, Inc. | Vehicle-mounted video system with distributed processing |
US20080031451A1 (en) * | 2005-11-14 | 2008-02-07 | Jean-Francois Poirier | Method and system for security of data transmissions |
US20070279969A1 (en) * | 2006-06-02 | 2007-12-06 | Raytheon Company | Intrusion detection apparatus and method |
US8108692B1 (en) | 2006-06-27 | 2012-01-31 | Siliconsystems, Inc. | Solid-state storage subsystem security solution |
JP4912921B2 (ja) * | 2007-02-27 | 2012-04-11 | 富士通セミコンダクター株式会社 | セキュアプロセッサシステム、セキュアプロセッサ及びセキュアプロセッサシステムの制御方法 |
KR100922862B1 (ko) * | 2007-11-14 | 2009-10-20 | 성균관대학교산학협력단 | 명령어의 부호화를 통한 시스템 보안방법 |
US7788433B2 (en) * | 2008-05-24 | 2010-08-31 | Via Technologies, Inc. | Microprocessor apparatus providing for secure interrupts and exceptions |
US8819839B2 (en) * | 2008-05-24 | 2014-08-26 | Via Technologies, Inc. | Microprocessor having a secure execution mode with provisions for monitoring, indicating, and managing security levels |
US9317708B2 (en) * | 2008-08-14 | 2016-04-19 | Teleputers, Llc | Hardware trust anchors in SP-enabled processors |
US7761714B2 (en) * | 2008-10-02 | 2010-07-20 | Infineon Technologies Ag | Integrated circuit and method for preventing an unauthorized access to a digital value |
US8503972B2 (en) | 2008-10-30 | 2013-08-06 | Digital Ally, Inc. | Multi-functional remote monitoring system |
US8356184B1 (en) | 2009-06-25 | 2013-01-15 | Western Digital Technologies, Inc. | Data storage device comprising a secure processor for maintaining plaintext access to an LBA table |
US8359346B2 (en) * | 2009-11-05 | 2013-01-22 | Freescale Semiconductor, Inc. | Hash function for hardware implementations |
JP5443599B2 (ja) * | 2009-12-22 | 2014-03-19 | インテル・コーポレーション | セキュアなアプリケーションの実行を提供する方法および装置 |
US9087200B2 (en) | 2009-12-22 | 2015-07-21 | Intel Corporation | Method and apparatus to provide secure application execution |
US8549585B2 (en) * | 2010-06-14 | 2013-10-01 | International Business Machines Corporation | Method and apparatus to implement secured, layered logout from a computer system |
US8611544B1 (en) * | 2011-01-25 | 2013-12-17 | Adobe Systems Incorporated | Systems and methods for controlling electronic document use |
US9137014B2 (en) | 2011-01-25 | 2015-09-15 | Adobe Systems Incorporated | Systems and methods for controlling electronic document use |
CN102385052A (zh) * | 2011-12-09 | 2012-03-21 | 中国人民解放军第二炮兵计量站 | 雷达参数加密测试装置及方法 |
US9305142B1 (en) | 2011-12-19 | 2016-04-05 | Western Digital Technologies, Inc. | Buffer memory protection unit |
US9042551B2 (en) * | 2012-06-04 | 2015-05-26 | International Business Machines Corporation | Electronically programmable fuse security encryption |
WO2014052898A1 (en) | 2012-09-28 | 2014-04-03 | Digital Ally, Inc. | Portable video and imaging system |
US10272848B2 (en) | 2012-09-28 | 2019-04-30 | Digital Ally, Inc. | Mobile video and imaging system |
DE102013205544A1 (de) * | 2013-03-28 | 2014-10-02 | Robert Bosch Gmbh | Vorrichtung und Verfahren zur Verarbeitung von Daten |
US10764542B2 (en) | 2014-12-15 | 2020-09-01 | Yardarm Technologies, Inc. | Camera activation in response to firearm activity |
US9958228B2 (en) | 2013-04-01 | 2018-05-01 | Yardarm Technologies, Inc. | Telematics sensors and camera activation in connection with firearm activity |
US9159371B2 (en) * | 2013-08-14 | 2015-10-13 | Digital Ally, Inc. | Forensic video recording with presence detection |
US10075681B2 (en) | 2013-08-14 | 2018-09-11 | Digital Ally, Inc. | Dual lens camera unit |
US9253452B2 (en) | 2013-08-14 | 2016-02-02 | Digital Ally, Inc. | Computer program, method, and system for managing multiple data recording devices |
US10390732B2 (en) | 2013-08-14 | 2019-08-27 | Digital Ally, Inc. | Breath analyzer, system, and computer program for authenticating, preserving, and presenting breath analysis data |
US10657262B1 (en) * | 2014-09-28 | 2020-05-19 | Red Balloon Security, Inc. | Method and apparatus for securing embedded device firmware |
EP3210396A1 (en) | 2014-10-20 | 2017-08-30 | Axon Enterprise, Inc. | Systems and methods for distributed control |
US9841259B2 (en) | 2015-05-26 | 2017-12-12 | Digital Ally, Inc. | Wirelessly conducted electronic weapon |
KR101639675B1 (ko) * | 2015-05-29 | 2016-07-14 | 주식회사 하우리 | 다형성 바이러스 진단장치 및 진단방법 |
US10013883B2 (en) | 2015-06-22 | 2018-07-03 | Digital Ally, Inc. | Tracking and analysis of drivers within a fleet of vehicles |
US10192277B2 (en) | 2015-07-14 | 2019-01-29 | Axon Enterprise, Inc. | Systems and methods for generating an audit trail for auditable devices |
US20170076098A1 (en) * | 2015-09-14 | 2017-03-16 | Riverside Research Institute | Assured computer architecture-volatile memory design and operation |
US10312091B1 (en) | 2015-10-13 | 2019-06-04 | Multibeam Corporation | Secure permanent integrated circuit personalization |
WO2017136646A1 (en) | 2016-02-05 | 2017-08-10 | Digital Ally, Inc. | Comprehensive video collection and storage |
US10419208B2 (en) * | 2016-06-02 | 2019-09-17 | Wipro Limited | Method and system for encrypting data |
US10521675B2 (en) | 2016-09-19 | 2019-12-31 | Digital Ally, Inc. | Systems and methods of legibly capturing vehicle markings |
US10911725B2 (en) | 2017-03-09 | 2021-02-02 | Digital Ally, Inc. | System for automatically triggering a recording |
KR102019378B1 (ko) * | 2017-06-19 | 2019-09-06 | 현대오트론 주식회사 | 마이크로 프로세서 유닛을 감시하는 감시 장치, 그것의 포함하는 시스템 및 동작 방법 |
EP3419212B1 (en) * | 2017-06-23 | 2020-03-11 | Vestel Elektronik Sanayi ve Ticaret A.S. | Computer implemented method, computer system and computer readable computer program product |
US11024137B2 (en) | 2018-08-08 | 2021-06-01 | Digital Ally, Inc. | Remote video triggering and tagging |
KR102590439B1 (ko) * | 2018-10-01 | 2023-10-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
US11228432B2 (en) * | 2019-03-04 | 2022-01-18 | Siavash Bayat-Sarmadi | Quantum-resistant cryptoprocessing |
FR3097365B1 (fr) * | 2019-06-11 | 2021-07-02 | St Microelectronics Rousset | Circuit électronique |
US11645428B1 (en) | 2020-02-11 | 2023-05-09 | Wells Fargo Bank, N.A. | Quantum phenomenon-based obfuscation of memory |
US20220014366A1 (en) * | 2020-07-13 | 2022-01-13 | Synopsys, Inc. | Key protection using a noising and de-noising scheme |
CN112231652B (zh) * | 2020-10-28 | 2022-02-22 | 百度在线网络技术(北京)有限公司 | 可信环境远程验证方法、装置、设备、系统及介质 |
CN113193957B (zh) * | 2021-05-10 | 2023-03-31 | 成都量安区块链科技有限公司 | 一种与量子网络分离的量子密钥服务方法与系统 |
US11950017B2 (en) | 2022-05-17 | 2024-04-02 | Digital Ally, Inc. | Redundant mobile video recording |
CN116933298B (zh) * | 2023-09-18 | 2024-02-09 | 广东省科技基础条件平台中心 | 一种科技成果数据加密处理方法、装置、存储介质及设备 |
Family Cites Families (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4168396A (en) * | 1977-10-31 | 1979-09-18 | Best Robert M | Microprocessor for executing enciphered programs |
US4278837A (en) * | 1977-10-31 | 1981-07-14 | Best Robert M | Crypto microprocessor for executing enciphered programs |
US4465901A (en) * | 1979-06-04 | 1984-08-14 | Best Robert M | Crypto microprocessor that executes enciphered programs |
US4319079A (en) * | 1979-09-13 | 1982-03-09 | Best Robert M | Crypto microprocessor using block cipher |
DE3044984A1 (de) * | 1979-11-30 | 1982-04-15 | Dassault Electronique | Integrierte transistorschaltung, insbesondere fuer codierung |
US4513174A (en) * | 1981-03-19 | 1985-04-23 | Standard Microsystems Corporation | Software security method using partial fabrication of proprietary control word decoders and microinstruction memories |
FR2523745B1 (fr) * | 1982-03-18 | 1987-06-26 | Bull Sa | Procede et dispositif de protection d'un logiciel livre par un fournisseur a un utilisateur |
EP0114522A3 (en) * | 1982-12-27 | 1986-12-30 | Synertek Inc. | Rom protection device |
US4573119A (en) * | 1983-07-11 | 1986-02-25 | Westheimer Thomas O | Computer software protection system |
US4776011A (en) * | 1983-10-24 | 1988-10-04 | Sony Corporation | Recursive key schedule cryptographic system |
US4633388A (en) * | 1984-01-18 | 1986-12-30 | Siemens Corporate Research & Support, Inc. | On-chip microprocessor instruction decoder having hardware for selectively bypassing on-chip circuitry used to decipher encrypted instruction codes |
JPS61166653A (ja) * | 1985-01-19 | 1986-07-28 | Panafacom Ltd | アドレス変換エラー処理方法 |
JPS6231472A (ja) * | 1985-04-03 | 1987-02-10 | Nec Corp | ビツト処理回路 |
US5014234A (en) * | 1986-08-25 | 1991-05-07 | Ncr Corporation | System with software usage timer and counter for allowing limited use but preventing continued unauthorized use of protected software |
US4893339A (en) * | 1986-09-03 | 1990-01-09 | Motorola, Inc. | Secure communication system |
US5146575A (en) * | 1986-11-05 | 1992-09-08 | International Business Machines Corp. | Implementing privilege on microprocessor systems for use in software asset protection |
US5109413A (en) * | 1986-11-05 | 1992-04-28 | International Business Machines Corporation | Manipulating rights-to-execute in connection with a software copy protection mechanism |
US4817140A (en) * | 1986-11-05 | 1989-03-28 | International Business Machines Corp. | Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor |
NL8602847A (nl) * | 1986-11-11 | 1988-06-01 | Philips Nv | Werkwijze voor het vercijferen/ontcijferen en inrichting voor het uitvoeren van de werkwijze. |
JPH0192833A (ja) * | 1987-10-02 | 1989-04-12 | Satoru Kubota | 暗号翻訳の回路を内蔵することにより、ソフトウェアの違法なコピーを防止するマイクロプロセッサ |
JPH01296361A (ja) * | 1988-05-25 | 1989-11-29 | Mitsubishi Electric Corp | メモリカード |
US5007082A (en) * | 1988-08-03 | 1991-04-09 | Kelly Services, Inc. | Computer software encryption apparatus |
US4937861A (en) * | 1988-08-03 | 1990-06-26 | Kelly Services, Inc. | Computer software encryption apparatus |
US5231662A (en) * | 1989-08-01 | 1993-07-27 | Tulip Computers International B.V. | Method and device for enciphering data to be transferred and for deciphering the enciphered data, and a computer system comprising such a device |
US5058164A (en) * | 1990-05-03 | 1991-10-15 | National Semiconductor Corp. | Encryption of streams of addressed information to be used for program code protection |
WO1993010498A1 (en) * | 1991-11-12 | 1993-05-27 | Microchip Technology Inc. | Security for on-chip microcontroller memory |
US5351299A (en) * | 1992-06-05 | 1994-09-27 | Matsushita Electric Industrial Co., Ltd. | Apparatus and method for data encryption with block selection keys and data encryption keys |
US5319705A (en) * | 1992-10-21 | 1994-06-07 | International Business Machines Corporation | Method and system for multimedia access control enablement |
CN101359350B (zh) * | 1995-02-13 | 2012-10-03 | 英特特拉斯特技术公司 | 用于安全地管理在数据项上的操作的方法 |
US5943422A (en) * | 1996-08-12 | 1999-08-24 | Intertrust Technologies Corp. | Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels |
US5606616A (en) * | 1995-07-03 | 1997-02-25 | General Instrument Corporation Of Delaware | Cryptographic apparatus with double feedforward hash function |
US5737760A (en) * | 1995-10-06 | 1998-04-07 | Motorola Inc. | Microcontroller with security logic circuit which prevents reading of internal memory by external program |
US5870470A (en) * | 1996-02-20 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for encrypting long blocks using a short-block encryption procedure |
US5745576A (en) * | 1996-05-17 | 1998-04-28 | Visa International Service Association | Method and apparatus for initialization of cryptographic terminal |
US20030004653A1 (en) * | 1996-05-24 | 2003-01-02 | Michael Flavin | Automated technology of screening of stationary phases |
US5745577A (en) * | 1996-07-25 | 1998-04-28 | Northern Telecom Limited | Symmetric cryptographic system for data encryption |
US5970142A (en) * | 1996-08-26 | 1999-10-19 | Xilinx, Inc. | Configuration stream encryption |
US5920861A (en) * | 1997-02-25 | 1999-07-06 | Intertrust Technologies Corp. | Techniques for defining using and manipulating rights management data structures |
US6236728B1 (en) * | 1997-06-19 | 2001-05-22 | Brian E. Marchant | Security apparatus for data transmission with dynamic random encryption |
US6240183B1 (en) * | 1997-06-19 | 2001-05-29 | Brian E. Marchant | Security apparatus for data transmission with dynamic random encryption |
US6094486A (en) * | 1997-06-19 | 2000-07-25 | Marchant; Brian E. | Security apparatus for data transmission with dynamic random encryption |
US6047069A (en) * | 1997-07-17 | 2000-04-04 | Hewlett-Packard Company | Method and apparatus for preserving error correction capabilities during data encryption/decryption |
US6252961B1 (en) * | 1997-07-17 | 2001-06-26 | Hewlett-Packard Co | Method and apparatus for performing data encryption and error code correction |
US6014745A (en) * | 1997-07-17 | 2000-01-11 | Silicon Systems Design Ltd. | Protection for customer programs (EPROM) |
US6061449A (en) * | 1997-10-10 | 2000-05-09 | General Instrument Corporation | Secure processor with external memory using block chaining and block re-ordering |
US6192129B1 (en) * | 1998-02-04 | 2001-02-20 | International Business Machines Corporation | Method and apparatus for advanced byte-oriented symmetric key block cipher with variable length key and block |
US6088800A (en) * | 1998-02-27 | 2000-07-11 | Mosaid Technologies, Incorporated | Encryption processor with shared memory interconnect |
DE19818175A1 (de) * | 1998-04-23 | 1999-10-28 | Bosch Gmbh Robert | Verfahren und System zur Datensicherung |
US6339815B1 (en) * | 1998-08-14 | 2002-01-15 | Silicon Storage Technology, Inc. | Microcontroller system having allocation circuitry to selectively allocate and/or hide portions of a program memory address space |
US6505279B1 (en) * | 1998-08-14 | 2003-01-07 | Silicon Storage Technology, Inc. | Microcontroller system having security circuitry to selectively lock portions of a program memory address space |
EP0992916A1 (en) * | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Digital signal processor |
US6397333B1 (en) * | 1998-10-07 | 2002-05-28 | Infineon Technologies Ag | Copy protection system and method |
JP2000194551A (ja) * | 1998-12-28 | 2000-07-14 | Oki Micro Design Co Ltd | フラッシュメモリ書換え回路 |
US6654889B1 (en) * | 1999-02-19 | 2003-11-25 | Xilinx, Inc. | Method and apparatus for protecting proprietary configuration data for programmable logic devices |
WO2000057290A1 (fr) * | 1999-03-19 | 2000-09-28 | Hitachi, Ltd. | Processeur d'informations |
US6367010B1 (en) * | 1999-07-02 | 2002-04-02 | Postx Corporation | Method for generating secure symmetric encryption and decryption |
US6351814B1 (en) * | 1999-07-21 | 2002-02-26 | Credence Systems Corporation | Field programmable gate array with program encryption |
EP1093121A1 (en) * | 1999-10-13 | 2001-04-18 | Matsushita Electric Industrial Co., Ltd. | Information recording medium, and method and apparatus for recording and reproducing information using the same |
US6594780B1 (en) * | 1999-10-19 | 2003-07-15 | Inasoft, Inc. | Operating system and data protection |
ATE382897T1 (de) * | 2000-01-18 | 2008-01-15 | Infineon Technologies Ag | Mikroprozessoranordnung und verfahren zum betreiben einer mikroprozessoranordnung |
CA2305078A1 (en) * | 2000-04-12 | 2001-10-12 | Cloakware Corporation | Tamper resistant software - mass data encoding |
US6547979B1 (en) * | 2000-08-31 | 2003-04-15 | Micron Technology, Inc. | Methods of enhancing selectivity of etching silicon dioxide relative to one or more organic substances; and plasma reaction chambers |
US7103782B1 (en) * | 2000-09-27 | 2006-09-05 | Motorola, Inc. | Secure memory and processing system having laser-scribed encryption key |
FR2817067B1 (fr) * | 2000-11-21 | 2003-02-21 | Cyber Comm | Procede et dispositif d'authentification de documents electroniques au moyen d'une signature numerique |
DE10110049A1 (de) * | 2001-03-02 | 2002-09-05 | Bosch Gmbh Robert | Verfahren und Vorrichtung zur Datenverschlüsselung bei der Programmierung von Steuergeräten |
US20020150252A1 (en) * | 2001-03-27 | 2002-10-17 | Leopard Logic, Inc. | Secure intellectual property for a generated field programmable gate array |
JP3851115B2 (ja) * | 2001-06-28 | 2006-11-29 | 富士通株式会社 | 暗号回路 |
US6996725B2 (en) * | 2001-08-16 | 2006-02-07 | Dallas Semiconductor Corporation | Encryption-based security protection for processors |
KR100445406B1 (ko) * | 2001-11-30 | 2004-08-25 | 주식회사 하이닉스반도체 | 데이터 암호화 장치 및 그 방법 |
DE10201449C1 (de) * | 2002-01-16 | 2003-08-14 | Infineon Technologies Ag | Rechenwerk, Verfahren zum Ausführen einer Operation mit einem verschlüsselten Operanden, Carry-Select-Addierer und Kryptographieprozessor |
US7221756B2 (en) * | 2002-03-28 | 2007-05-22 | Lucent Technologies Inc. | Constructions of variable input length cryptographic primitives for high efficiency and high security |
US20030188180A1 (en) * | 2002-03-28 | 2003-10-02 | Overney Gregor T. | Secure file verification station for ensuring data integrity |
FR2838894A1 (fr) * | 2002-04-19 | 2003-10-24 | St Microelectronics Sa | Chiffrement du contenu d'une memoire externe a un processeur |
US20050071656A1 (en) * | 2003-09-25 | 2005-03-31 | Klein Dean A. | Secure processor-based system and method |
-
2006
- 2006-02-10 JP JP2007554404A patent/JP2008530663A/ja active Pending
- 2006-02-10 US US11/350,839 patent/US20070172053A1/en not_active Abandoned
- 2006-02-10 EP EP06705154A patent/EP1849117A1/en not_active Withdrawn
- 2006-02-10 CA CA002593441A patent/CA2593441A1/en not_active Abandoned
- 2006-02-10 WO PCT/CA2006/000199 patent/WO2006084375A1/en active Application Filing
- 2006-02-10 KR KR1020077017349A patent/KR20070118589A/ko not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008185616A (ja) * | 2007-01-26 | 2008-08-14 | Canon Inc | 秘密鍵暗号方法、秘密鍵暗号装置、及びコンピュータプログラム |
JP2018074448A (ja) * | 2016-10-31 | 2018-05-10 | 株式会社テイエルブイ | 暗号化システム及び暗号化方法 |
Also Published As
Publication number | Publication date |
---|---|
US20070172053A1 (en) | 2007-07-26 |
WO2006084375A1 (en) | 2006-08-17 |
CA2593441A1 (en) | 2006-08-17 |
EP1849117A1 (en) | 2007-10-31 |
KR20070118589A (ko) | 2007-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008530663A (ja) | マイクロプロセッサのデータセキュリティの方法およびシステム | |
US4465901A (en) | Crypto microprocessor that executes enciphered programs | |
US4278837A (en) | Crypto microprocessor for executing enciphered programs | |
US9213653B2 (en) | Memory integrity | |
JP4551802B2 (ja) | プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法 | |
TW201944231A (zh) | 具有物理不可複製功能的真亂數生成系統 | |
CN101116081A (zh) | 用于微处理器数据安全的方法和系统 | |
JP4611027B2 (ja) | 不揮発性メモリモジュールを有する回路構成および不揮発性メモリモジュールにおけるデータの暗号化/暗号解読の方法 | |
JP2002328845A (ja) | 半導体集積回路及びicカードのセキュリティー保護方法 | |
JP2010509690A (ja) | 記憶装置のセキュリティを確保する方法とシステム | |
TW201918923A (zh) | 安全邏輯系統及操作安全邏輯系統的方法 | |
CN107534549B (zh) | 可读存储介质、用于数据流字块加密的方法及系统 | |
TW201820816A (zh) | 具有鑑認指令之密碼訊息 | |
EP0008033B1 (en) | Microprocessor for executing enciphered programs | |
CN114444140A (zh) | 存储器中的不可复制函数应用 | |
KR101126596B1 (ko) | 단일 및 다중 aes 동작을 지원하기 위한 듀얼 모드 aes 장치 및 방법 | |
US7333613B2 (en) | Cyphering of the content of a memory external to a processor | |
KR20180059217A (ko) | 메모리 데이터 보안 처리 장치 및 방법 | |
CN111125791B (zh) | 一种内存数据的加密方法、装置、cpu芯片及服务器 | |
JP4323527B2 (ja) | 半導体記憶装置 | |
JP2009169489A (ja) | 暗号化方法、復号化方法、暗号化装置、復号化装置 | |
JP2008140104A (ja) | メモリシステム及びメモリアクセス方法 | |
CN110516457B (zh) | 一种数据存储方法及读取方法、存储设备 | |
US7707431B2 (en) | Device of applying protection bit codes to encrypt a program for protection | |
JP2007281994A (ja) | 半導体集積回路 |