JPWO2015045172A1 - 情報処理装置及び情報処理方法 - Google Patents

情報処理装置及び情報処理方法 Download PDF

Info

Publication number
JPWO2015045172A1
JPWO2015045172A1 JP2015538813A JP2015538813A JPWO2015045172A1 JP WO2015045172 A1 JPWO2015045172 A1 JP WO2015045172A1 JP 2015538813 A JP2015538813 A JP 2015538813A JP 2015538813 A JP2015538813 A JP 2015538813A JP WO2015045172 A1 JPWO2015045172 A1 JP WO2015045172A1
Authority
JP
Japan
Prior art keywords
processor
information
program
protection unit
information protection
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.)
Granted
Application number
JP2015538813A
Other languages
English (en)
Other versions
JP6146476B2 (ja
Inventor
清之 小檜山
清之 小檜山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2015045172A1 publication Critical patent/JPWO2015045172A1/ja
Application granted granted Critical
Publication of JP6146476B2 publication Critical patent/JP6146476B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/108Transfer of content, software, digital rights or licenses
    • G06F21/1084Transfer of content, software, digital rights or licenses via third party
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/109Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by using specially-adapted hardware at the client
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Abstract

情報処理装置は、第1のプロセッサと、情報保護部と、情報保護部と第1のプロセッサとを接続する第1の通信路とを有する。情報保護部は、情報保護部を第1の通信路と接続するインターフェース回路と、第2のプロセッサと、第1のプロセッサから参照できず、一方、前記第2のプロセッサから参照可能な第1のメモリとを有する。インターフェース回路は、第1の通信路から受信したコマンドが、情報保護部宛てのコマンドである場合、そのコマンドを第2のプロセッサに渡し、一方、第1の通信路から受信したコマンドが情報保護部宛てのコマンドでない場合、そのコマンドを第2のプロセッサに渡さない。そして第2のプロセッサは、第1のプロセッサから第1の通信路を介して情報保護部宛てのコマンドを受信すると、第1のメモリに記憶された情報に関する処理を実行する。

Description

本発明は、例えば、情報の漏洩または不正な改ざんを防止する情報処理装置及び情報処理方法に関する。
近年、携帯端末に代表されるように、プロセッサを含む一つのシステムLSIに装置の主要な機能が実装された装置が開発されている。このような装置において、システムLSI上で動作するオペレーションシステムなどのソフトウェア、または、他の装置と情報を交換するためのインタフェースが開示されていることがある。オペレーションシステムまたはインターフェースが開示されているため、様々なサードパーティのソフトウェア開発業者がその装置上で動作する独自ソフトウェアを開発することが可能となっている。
しかし、インタフェースまたはオペレーションシステムが開示されることにより、ハッカーなど悪意ある第三者が、プロセッサ上で動作するソフトウェアを違法に改ざんすることが容易となる。さらに、悪意ある第三者が、改ざんされたソフトウェアを利用して装置に記憶されている個人情報または著作権付きコンテンツといった機密情報を不正にコピーしたり、そのような機密情報を書き換えたり、あるいは、装置を不正利用することが容易になる。
そこで、そのような不正なソフトウェアの改ざん及び機密情報の不正コピーなどを防止するための様々な技術が提案されている。例えば、システムLSIに、暗号回路または認証回路といった、セキュリティー機能を司る回路が個別に実装されたものが提案されている。このような実装は、装置外部からのハッキング攻撃には有効であるが、セキュリティー機能を制御する回路がハッキングするような装置内部からのハッキング攻撃には、脆弱である。
例えば、コンテンツの不正コピーを防止するために、コンテンツは暗号化されて伝送または保存される。しかし、装置がそのコンテンツを再生する際に暗号復号鍵が盗まれるとコンテンツが不正にコピーされるおそれがある。例えば、プロセッサが暗号復号鍵を使用してコンテンツを復号することを想定する。この場合、外部からアクセス可能なプロセッサまたは仕様が開示されているオペレーションシステムなどオープンな環境でプロセッサが暗号復号鍵を扱うと、ハッカーにその暗号復号鍵が知られてしまう危険性がある。
また、システムLSIに含まれる、セキュリティー機能を司る回路と別個に設けられた揮発性または不揮発性のメモリ領域は、基本的に第三者が自由にアクセスできる領域である。そのため、ハッカーがそのようなメモリ領域に何らかの手段によってハッキングプログラムを記憶させる可能性がある。このような場合、ハッカーは、メモリ領域に記憶されている正当なプログラムまたは機密情報(鍵情報及び個人情報を含む)をハッキング(例えば、不正改ざんまたは不正アクセス)できる。
例えば、不揮発性のメモリ領域に暗号化された状態で個人情報などが記憶されていても、その個人情報を復号する鍵も同じメモリ領域に記憶されていれば、ハッカーにメモリ領域内の情報を解析されて個人情報をハッキングされる可能性がある。さらに、個人情報の復号を不揮発性メモリ領域内の独自の復号プログラムによって実現したとしても、やはりそのプログラムをハッカーに解析されて、情報が漏えいするおそれがある。あるいは、ハッカーは、その独自プログラムを解析し、個人情報を漏えいするようにその独自プログラムを改ざんする可能性もある。
このように、セキュリティー機能を司る回路と別個に設けられたメモリ領域に記憶されている機密情報に不正アクセスすることで、悪意のある第三者が機密情報を盗み出すおそれがある。あるいは、悪意のある第三者が、機密情報を扱うプログラムを機密情報が漏えいするように不正に改ざんすることで間接的に機密情報が盗まれる可能性がある。
また、装置内の情報を保護するために、セキュリティー機能の一部を司るセキュリティーカードを、システムLSIに接続することも提案されている(例えば、特許文献1を参照)。例えば、デジタルテレビ放送では、圧縮された映像ストリームがスクランブル鍵を用いて暗号化されているとともに、放送される映像ストリームの中に数秒毎に更新されるその映像ストリームの復号に利用されるスクランブル鍵が含まれる。一方、スクランブル鍵を復号するワーク鍵がセキュリティーカードに内蔵されている。そしてチューナーにより選択された番組(チャンネル)情報(上記のストリーム)の一部は、システムLSIのメインプロセッサ上で動作するプログラムによってセキュリティーカードに入力される。そしてセキュリティーカードから復号されたスクランブル鍵が出力される。復号されたスクランブル鍵をメインプロセッサが受け取り、例えば、暗号回路に入力する。暗号回路には、スクランブル鍵とともにスクランブル鍵で暗号化された圧縮映像ストリームが入力され、その暗号回路は、圧縮映像ストリームを復号して出力する。復号された圧縮映像ストリームは、映像処理回路に入力されて伸長処理され、YPbPr映像信号、あるいはRGB映像信号に変換される。その映像信号がグラフィックス回路に入力される。グラフィックス回路は、例えば、番組タイトルなどの付加情報をその映像信号に合成して、最終的に得られた映像がモニターに出力される。モニターは、その映像を表示する。
特開2007−281813号公報
セキュリティーカードは、外部からアクセスしたり、改ざんが極めて困難なセキュア・モジュール(耐tamperモジュール)のため、セキュリティカードに内蔵されたワーク鍵などの機密情報が漏洩する可能性は低い。しかし、上記の映像処理の大部分は、メインプロセッサが、セキュリティーカードとは別個に設けられたメモリ領域を用いて行っているため、ハッキングされる可能性がある。
そこで本明細書は、機密情報への不正なアクセスをより困難にする情報処理装置を提供することを目的とする。
一つの実施形態によれば、情報処理装置が提供される。この情報処理装置は、第1のプロセッサと、情報保護部と、情報保護部と第1のプロセッサとを接続する第1の通信路とを有する。情報保護部は、情報保護部を第1の通信路と接続するインターフェース回路と、第2のプロセッサと、第1のプロセッサから参照できず、一方、前記第2のプロセッサから参照可能な第1のメモリとを有する。インターフェース回路は、第1の通信路から受信したコマンドが、情報保護部宛てのコマンドである場合、そのコマンドを第2のプロセッサに渡し、一方、第1の通信路から受信したコマンドが情報保護部宛てのコマンドでない場合、そのコマンドを第2のプロセッサに渡さない。そして第2のプロセッサは、第1のプロセッサから第1の通信路を介して情報保護部宛てのコマンドを受信すると、第1のメモリに記憶された情報に関する処理を実行する。
本発明の目的及び利点は、請求項において特に指摘されたエレメント及び組み合わせにより実現され、かつ達成される。
上記の一般的な記述及び下記の詳細な記述の何れも、例示的かつ説明的なものであり、請求項のように、本発明を制限するものではないことを理解されたい。
本明細書に開示された情報処理装置は、機密情報への不正なアクセスをより困難にすることができる。
図1は、情報処理装置の一例であるシステムLSIの概略構成図である。 図2は、情報保護部のハードウェア構成図である。 図3は、情報保護部により実行される情報処理の動作フローチャートである。 図4(A)及び図4(B)は、それぞれ、プログラムAに属するモジュールとプログラムBに属するモジュールの一例を示す図である。 図5(A)及び図5(B)は、それぞれ、プログラムBの一例を示す図である。 図6(A)及び図6(B)は、それぞれ、プログラムBの他の一例を示す図である。 図7は、スキャンプログラムのコードの一例を示す図である。
以下、図を参照しつつ、様々な実施形態による情報処理装置について説明する。この情報処理装置は、例えば、システムLSIとして実装され、その一部に、機密情報を扱う情報保護部を有する。情報保護部は、機密情報及び機密情報を扱うプログラムを記憶するための揮発性のメモリ回路及び不揮発性のメモリ回路とともに、機密情報を扱うプログラムの少なくとも一部が動作するプロセッサを有する。情報保護部の外部からは、情報保護部内のメモリへのアクセスができないようになっている。メインのプロセッサから情報保護部を呼び出すコマンドをバスを介して情報保護部が受け取ると、情報保護部内のプロセッサがそのコマンドを解析して、情報保護部内のメモリの必要な領域にアクセスする。そしてこの情報保護部は、外部から要求された機密情報を完全に再生するためには、情報保護部にアクセスする必要がある形式にして、その機密部を外部へ出力する。あるいは、この情報保護部は、プログラムの一部のみを外部のメモリ領域に展開させ、そのプログラムの他の一部を情報保護部内のメモリ領域に展開する。これにより、この情報処理装置は、機密情報及びプログラムが解析されたり、あるいは改ざんされることを防止する。
図1は、情報処理装置の一例であるシステムLSIの概略構成図である。
システムLSI1は、例えば、一つの集積回路であり、通信回路2と、無線処理回路3と、映像処理回路4と、グラフィックス処理回路5と、揮発性メモリ回路6と、不揮発性メモリ回路7と、メインプロセッサ8と、情報保護部9とを有する。システムLSI1が有するこれらの各部は、バス10を介して互いに通信可能に接続されている。このシステムLSI1は、例えば、携帯電話機、携帯情報端末、コンピュータまたはテレビ受信機といった様々な装置に実装可能である。
通信回路2は、システムLSI1を通信ネットワークと接続するためのインターフェース回路であり、その通信ネットワークの規格に従って情報を送信または受信する。通信ネットワークの規格は、例えば、Ethernet(登録商標)とすることができる。そして通信回路2は、通信ネットワークを介して受信した情報を、メインプロセッサ8または情報保護部9へ渡す。あるいは、通信回路2は、メインプロセッサ8または情報保護部9から受け取った情報を通信ネットワークへ出力する。
無線処理回路3は、無線電波によって搬送され、アンテナ(図示せず)を介して受信した無線信号に含まれる情報を取り出して、メインプロセッサ8または情報保護部9へ渡す。無線電波は、例えば、デジタル放送の電波であり、無線信号は、例えば、1以上のチャネルについての、暗号化され、かつ、圧縮された映像ストリームを含む。この場合、無線処理回路3は、チューナーであり、無線信号から、メインプロセッサ8からの制御に従って選択されたチャネルの暗号化され、かつ、圧縮された映像ストリームを取り出す。そして無線処理回路3は、その暗号化され、かつ、圧縮された映像ストリームをメインプロセッサ8または情報保護部9へ渡す。
あるいは、無線処理回路3は、所定の無線通信規格に従って、基地局から受信した無線信号に含まれる各種の情報を取り出したり、システムLSI1が実装された装置から基地局へ送信する無線信号を生成する回路であってもよい。
映像処理回路4は、メインプロセッサ8または情報保護部9により復号された、圧縮された映像ストリームを、その映像ストリームを圧縮するのに用いられた圧縮符号化方式に従って伸長し、映像データを再現する。映像処理回路4は、例えば、Moving Picture Experts Group (MPEG)-2、MPEG-4、H.264 MPEG-4 AVCなどの圧縮符号化方式で圧縮された映像ストリームを伸長する。映像処理回路4は、再現された映像ストリームに含まれる各ピクチャを表示順序に従ってグラフィックス処理回路5へ渡す。
グラフィックス処理回路5は、映像処理回路4から受け取った各ピクチャを、表示順序に従って、システムLSI1が実装された装置の表示装置(図示せず)に表示させる。
揮発性メモリ回路6は、例えば、ダイナミックメモリを有し、システムLSI1上で実行される様々なプログラムによって扱われる情報を一時的に記憶する。
不揮発性メモリ回路7は、例えば、フラッシュメモリ(登録商標)といった、不揮発性のランダムアクセス可能なメモリ回路及びマスクROMといった読み出し専用のメモリ回路を有する。そして不揮発性メモリ回路7は、システムLSI1への電力供給が停止されても消去されないことが望まれる様々な情報及びシステムLSI1で動作する、機密情報を扱わない様々なプログラムを記憶する。さらに、揮発性メモリ回路6または不揮発性メモリ回路7は、情報保護部9と連携して動作するプログラムの一部を記憶してもよい。
メインプロセッサ8は、例えば、論理演算回路及び数値演算回路を有し、システムLSI1で動作する様々なプログラムを実行する。またメインプロセッサ8は、機密情報を扱う場合、あるいは、不正なアクセスを防止したいプログラムを実行する場合、情報保護部9へ、実行中のプログラムに応じたコマンドを送信する。情報保護部9へアクセスするためのコマンドは、例えば、所定長または可変長の持つビット列であり、その先頭部分に、情報保護部9へのコマンドであることを表す、所定長(例えば、4〜8ビット)のビット列で表されたコマンド識別情報を含む。さらに、そのコマンドは、例えば、コマンド識別情報に後続して、コマンドの種類を表す所定長(例えば、4〜8ビット)のビット列と、そのコマンドの実行に必要な情報を含む。コマンドの種類を表すビット列は、コマンドの種類ごとに一意に定められる。またメインプロセッサ8は、情報保護部9からそのプログラムの実行に必要な情報を受け取る。
情報保護部9は、セキュリティーに関する処理を行う装置であり、情報保護部9内に個人情報、暗号復号鍵といった機密情報及びプログラムなどを保持する。そして情報保護部9は、外部から情報保護部9内に記憶されている各種の機密情報またはプログラムにアクセスしたり、それら機密情報及びプログラムの改ざんが困難な耐Tamperモジュールである。
図2は、情報保護部9のハードウェア構成図である。情報保護部9は、インターフェース回路11と、乱数発生回路12と、マスター鍵生成回路13と、暗号回路14と、タイミング回路15と、揮発性メモリ回路16と、不揮発性メモリ回路17と、サブプロセッサ18とを有する。情報保護部9が有するこれらの各部は、情報保護部9内に形成されたバス20を介して互いに通信可能に接続される。また、乱数発生回路12、マスター鍵生成回路13、暗号回路14、タイミング回路15、揮発性メモリ回路16、及び不揮発性メモリ回路17は、サブプロセッサ18は参照可能となっているが、情報保護部9の外部から参照不可能となっている。具体的には、サブプロセッサ18のみが、乱数発生回路12、マスター鍵生成回路13、暗号回路14、タイミング回路15、揮発性メモリ回路16、及び不揮発性メモリ回路17にアクセスするためのアドレス情報を知っている。一方、メインプロセッサ8など、情報保護部9の外部にあるユニットは、情報保護部9内のこれらの回路のアドレス情報を知らない。そしてサブプロセッサ18は、情報保護部9内の回路の何れかにアクセスする場合には、そのアクセスする回路のアドレス情報を含むコマンドを生成してバス20に出力する。
インターフェース回路11は、情報保護部9をシステムLSI1のバス10に接続するためのインターフェースである。そしてインターフェース回路11は、バス10を介して受け取ったビット列の先頭部分のビット列が、情報保護部9に対するコマンドであることを表すコマンド識別情報と一致すると、そのビット列をバス20を介してサブプロセッサ18へ渡す。またインターフェース回路11は、サブプロセッサ18からバス20を介して受け取った情報またはプログラムの一部などをバス10へ出力する。ただし、インターフェース回路11は、情報保護部9内のサブプロセッサ18以外の各部が出力する信号は情報保護部9の外へ出力しないように形成されてもよい。そのために、例えば、サブプロセッサ18から情報保護部9の外へ出力される情報を含むビット列の先頭に、情報保護部9の外の機器を宛先とすることを表す所定長の識別ビット列がサブプロセッサ18により付される。そしてインターフェース回路11は、バス20を流れるビット列のうち、その識別ビット列を含むビット列のみを情報保護部9の外へ出力する。
またインターフェース回路11は、情報保護部9を初期化するための初期化コマンドをバス10を介して受け取ると、その初期化コマンドをサブプロセッサ18へ渡す。なお、初期化コマンドには、コマンドの種類を表すビット列として、情報保護部9を初期化するコマンドであることを表すビット列が含まれる。
なお、システムLSI1が有する複数の端子のうちの何れかの端子が、初期化コマンド入力用に、サブプロセッサ18と接続されていてもよい。この場合には、その初期化コマンド入力用の端子を介して初期化コマンドが入力されることにより、情報保護部9は初期化される。
乱数発生回路12は、所定の乱数発生方法に従って乱数を発生させる。なお、乱数発生回路12によって採用される乱数発生方法は、ハードウェアまたはソフトウェアによって乱数を発生させる様々な乱数発生方法のうちの何れの方法であってもよい。乱数発生回路12により発生された乱数は、例えば、プログラムの一部を情報保護部9の内部で動作するサブプログラムとメインプロセッサ8で動作する他のサブプログラムとに分割するために利用される。
マスター鍵生成回路13は、所定のビット列で表されるマスター鍵を生成する。マスター鍵は、例えば、情報保護部9が扱う情報を暗号化または復号するために用いられる。またマスター鍵は、情報保護部9の個別鍵などの安全性を保つために、その個別鍵をマスター鍵とともに暗号化するためにも利用可能である。
暗号回路14は、所定の暗号化方式に従って、情報保護部9が扱う情報を暗号化し、または、暗号化された情報を復号する。なお、暗号回路14で採用される暗号化方式は、DES暗号またはAES暗号といった様々な共通鍵暗号方式の何れであってもよく、あるいは、RSA暗号または楕円DSAといった、様々な公開鍵暗号方式の何れであってもよい。また暗号回路14は、複数の暗号化方式に対応していてもよい。さらに、暗号回路14は、ハッシュ関数に従って様々な情報のハッシュ値を演算する回路を有していてもよい。
なお、サブプロセッサ18が、サブプロセッサ18上で動作するプログラムに従って、情報の暗号化、復号またはハッシュ値の算出などの処理を行う場合、暗号回路14は省略されてもよい。
タイミング回路15は、情報保護部9内の各部にタイミング信号を供給する回路である。例えば、システムLSI1全体を駆動するクロック信号がタイミング回路15の入力用端子を介して入力されることにより、タイミング回路15は、そのクロック信号によって駆動される。情報保護部9の外部から直接タイミング回路15にアクセスできないので、タイミング回路15から供給されるタイミング信号は、改ざんが困難な信頼性が高い信号となる。そのため、タイミング回路15から供給されるタイミング信号は、情報保護部9の外部で利用されてもよい。
タイミング回路15が供給するタイミング信号(以下では、便宜上、高信頼タイミング信号と呼ぶ)は、例えば、コンテンツの視聴期限などを確認するために、サブプロセッサ18により利用される。あるいは、高信頼タイミング信号は、サブプロセッサ18上で動作する各種のDigital Rights Management(DRM)用プログラムまたはConditional Access System(CAS)プログラムによって利用されてもよい。
タイミング回路15の初期化は、例えば、下記の手順に従って実行される。
先ず、システムLSI1が実装された装置に電源が投入される。このとき、情報保護部9のサブプロセッサ18が、揮発性メモリ回路16または不揮発性メモリ回路17に記憶されているDRMプログラムに従って、通信ネットワークまたは基地局を経由してDRMサーバ(図示せず)に接続する。そして、サブプロセッサ18は、その接続時点でのDRMサーバが供給する信頼性の高い時刻情報を取得する。その際、セキュリティーを向上するために、DRMサーバとシステムLSI1が実装された装置間は、所定の暗号化通信方式などに従って通信が行われてもよい。そしてサブプロセッサ18は、その時刻情報に示された時刻でタイミング回路15を初期化する。初期化以降は、タイミング回路15が、クロック信号の周波数に従って、高信頼タイミング信号を出力することで、システムLSI1が実装された装置とDRMサーバ間の接続を無くす。これにより、通信ネットワークの負荷が軽減される。
なお、いろいろなシステムLSI1のクロック周波数がDRMサーバのクロック周波数と異なることもある。この場合、以下の手順に従って、高信頼タイミング信号は補正されてもよい。
・システムLSI1からDRMサーバへの1回目のアクセスによって、情報保護部9がDRMサーバから1回目の時刻情報を受信する。そしてサブプロセッサ18は、その1回目の時刻情報に示された時刻でタイミング回路15を初期化する。ここで、例えば、1回目の時刻情報に示された時刻を表す値が「100」であったとする。この場合、タイミング回路15から出力される高信頼タイミング信号の初期値も<100>に設定される。
・その後、システムLSI1は、DRMサーバに再接続し、2回目の時刻情報を受信する。ここで、2回目の時刻情報に示された時刻を表す値が「120」であったとする。一方、タイミング回路15から出力される高信頼タイミング信号に示された時刻の値は、タイミング回路15の初期化設定時の値から、システムLSI1のクロック周波数ごとにカウントアップされて、2回目の時刻情報受信時に、例えば、<140>になっていたとする。
・サブプロセッサ18は、この2回の時刻情報に基づいて、高信頼タイミング信号を補正できる。この例では、1回目の時刻情報受信時の高信頼タイミング信号の値と2回目の時刻情報受信時の高信頼タイミング信号の値の差は<40>である。一方、実際の経過時間は、1回目と2回目の時刻情報受信時の時刻値の差から「20」である。このことから、DRMサーバのクロック周波数に対する、高信頼タイミング信号のクロック周波数の比は、2(=<40>/「20」)倍であることが分かる。
そこで、サブプロセッサ18は、高信頼タイミング信号を利用する場合、例えば、次式に従って補正時刻値Ctを算出する。
Ct = C0+(Cc-C0)/r
ここで、C0は、高信頼タイミング信号の初期化値であり、Ccは、現在の高信頼タイミング信号の値である。そしてrは、DRMサーバのクロック周波数に対する、高信頼タイミング信号のクロック周波数の比であり、上記の例では2となる。比rは、例えば、1度算出されると、不揮発性メモリ回路17に記憶される。そのため、1度比rが算出されれば、それ以降、サブプロセッサ18は、不揮発性メモリ回路17を参照して、この比rを読み出せばよいので、比rの算出は、1回だけ実行されればよい。
この演算をサブプロセッサ18が必要に応じて実行する。これにより、システムLSI1のクロック周波数がDRMサーバのクロック周波数と異なっていても、サブプロセッサ18は、タイミング回路15からの高信頼タイミング情報に従って、信頼性の高い時刻情報を得ることができる。そのため、サブプロセッサ18は、時刻情報を必要とする度に、DRMサーバにアクセスしなくてもよい。
なお、比rの算出は、定期的(例えば、1時間ごと、1日ごと)に行われてもよい。システムLSI1のクロック回路は、情報保護部9内に存在しないため、他のクロック回路に置き換えられる可能性があるためである。高信頼タイミング信号の値を補正して得られる時刻値と、DRMサーバから受信した時刻情報に表された時刻値が一致しないことが連続して複数回起きる場合は、システムLSI1のクロック回路が置き換えられた可能性がある。この場合、サブプロセッサ18は、情報保護部9をエラー状態にし、エラー状態であることを表すフラグを不揮発性メモリ回路17に記憶させた上で、情報保護部9の動作を停止させてもよい。
この場合、エラー状態からの復帰は、例えば、システムLSI1が実装された装置の電源再投入により行われるか、あるいは、情報保護部9の管理サーバ(図示せず)から通信ネットワークを介してエラー状態解除命令を受信することで行われる。
揮発性メモリ回路16は、例えば、ダイナミックメモリを有し、情報保護部9で扱われる情報及び実行中のプログラムの少なくとも一部を一時的に記憶する。
不揮発性メモリ回路17は、例えば、フラッシュメモリ(登録商標)といった、不揮発性のランダムアクセス可能なメモリ回路及びマスクROMといった読み出し専用のメモリ回路を有する。そして不揮発性メモリ回路17は、情報保護部9への電力供給が停止されても消去されないことが望まれる様々な機密情報及び情報保護部9で動作する様々なプログラムを記憶する。なお、不揮発性メモリ回路17のメモリ容量は、システムLSI1自体の不揮発性メモリ回路7のメモリ容量よりも少なくてよい。これにより、製造コストが高い不揮発性メモリが少なくて済むので、システムLSI1自体の製造コストも低減できる。
不揮発性メモリ回路17には、例えば、以下のような機密情報またはプログラムが記憶される。なお、不揮発性メモリ回路17には、下記の様々な情報及びプログラムの全てが記憶されていてもよく、あるいは、そのうちの一部のみが記憶されていてもよい。
・情報保護部9自身の識別情報。この識別情報は、情報保護部9ごとに一意に設定され、例えば、プログラムのダウンロード時、工場出荷時、あるいは、初期化の時に使用される。
・情報保護部9ごとに一意に設定される、情報保護部9の個別鍵
・情報保護部9内の揮発性メモリ回路16または不揮発性メモリ回路17に、任意のプログラムをダウンロードするために利用されるダウンロードプログラム及びダウンロード用機密情報。なお、ダウンロード用機密情報は、情報保護部9自身の識別情報及び情報保護部9の個別鍵であってもよい。
・サービス特定情報及びサービス関連情報。これらの情報には、例えば、サービス実行に必要なプログラムのうちのサブプロセッサ18上で動作する部分と、システムLSI1のメインプロセッサ8上で動作する他の部分との間の関連付け情報が含まれる。あるいは、サービス特定情報及びサービス関連情報には、そのサービスに関連する管理サーバ側の機能への関連付け情報などが含まれてもよい。
・サービス実行に必要な各種のプログラム。これらのプログラムは、情報保護部9のみが知っている暗号鍵、例えば上記の個別鍵を用いて暗号化されていてもよい。
・各種暗号鍵
なお、不揮発性メモリ回路17は、揮発性メモリ回路16と比較して高価であり、かつ、アクセスに要する時間が掛かる。そこで、不揮発性メモリ回路17に記憶されている各種の情報及びプログラムのうち、実際に利用される情報またはプログラムは一旦揮発性メモリ回路16にコピーされる。そしてサブプロセッサ18は、揮発性メモリ回路16に記憶されている、それらの情報またはプログラムにアクセスすることで、必要な処理を実行することで、処理速度を向上できる。
サブプロセッサ18は、例えば、論理演算回路及び数値演算回路を有し、システムLSI1上で動作する様々なプログラムに関連する機密情報に関する部分の処理を実行する。
図3は、情報保護部9により実行される情報処理の動作フローチャートである。
インターフェース回路11は、バス10から受け取ったコマンドが情報保護部9宛てのコマンドか否か判定する(ステップS101)。そのコマンドが情報保護部9宛てのコマンドでない場合(ステップS101−No)、インターフェース回路11は、そのコマンドをサブプロセッサ18には渡さず、廃棄する(ステップS102)。
一方、そのコマンドが情報保護部9宛てのコマンドである場合(ステップS101−Yes)、インターフェース回路11は、そのコマンドをサブプロセッサ18に渡す。そしてサブプロセッサ18は、揮発性メモリ回路16または不揮発性メモリ回路17を参照してそのコマンドで指定された処理を実行する(ステップS103)。
以下、情報保護部9で実行される様々な処理について説明する。
(プログラムのダウンロード及び課金)
まず、通信ネットワークなどを介してシステムLSI1が実装された装置と接続されるサーバ(図示せず)から各種のプログラムを情報保護部9にダウンロードする方法及び情報保護部9の利用者に課金する方法について説明する。
第1の方法として、共通鍵を利用する方法について説明する。
この場合、情報保護部9の不揮発性メモリ回路17には、情報保護部9の識別情報と個別鍵情報が予め記憶されている。
一方、サーバは、情報保護部9を管理するサーバであり、情報保護部9ごとの識別情報と、サーバと情報保護部9間で安全に情報を送受信するため、すなわち、情報が第三者に漏洩しないように情報を送受信するための鍵情報とを予め記憶している。
システムLSI1が実装された装置のユーザが、その装置のキーボードまたはタッチパネルといったユーザインターフェース(図示せず)を介して、情報保護部9に記憶されている識別情報の表示を要求する操作を行う。なお、この操作は、プログラムのダウンロードを要求する操作に含まれていてもよい。識別情報の表示を要求する操作が行われると、システムLSI1のメインプロセッサ8は、情報保護部9に対して、識別情報の読出しを要求するコマンドを生成し、そのコマンドをバス10を介して情報保護部9へ送信する。情報保護部9のサブプロセッサ18は、インターフェース回路11を介してそのコマンドを受け取ると、不揮発性メモリ回路17からその識別情報を読み込む。そしてサブプロセッサ18は、その識別情報をメインプロセッサ8へ出力する。メインプロセッサ8は、その識別情報を受け取ると、システムLSI1が実装された装置の表示部にその識別情報を表示させる。なお、表示部は、ユーザインターフェースと一体化されていてもよい。
さらに、システムLSI1が実装された装置を所有するユーザは、そのユーザの固有情報、例えば、ユーザの氏名、住所、銀行口座などを電話またはメールを用いてサーバを管理している管理センターに連絡する。管理センターでは、オペレータが、ユーザの固有情報などに基づいてユーザの信頼性を確認する。そして、連絡者がユーザ本人またはユーザの正当な代理人であることを確認できれば、オペレータは、サーバにおいて、情報保護部9の識別情報とユーザの固有情報をリンクさせて管理できるように管理データを作成する。サーバは、情報保護部9とサーバしか知らない情報保護部9の個別鍵を用いて要求されたプログラムを暗号化する。そしてサーバは、暗号化されたプログラムを、通信ネットワークあるいは放送網経由でシステムLSI1が実装された装置へ送信する。送信されるプログラムは暗号化されており、暗号化されたプログラムを復号する暗号鍵は、情報保護部9とサーバしか知らないので、プログラムが送信される経路はどのような経路であっても、プログラムの秘密は保たれる。システムLSI1は、暗号化されたプログラムを受信すると、そのプログラムを含む、情報保護部9へのダウンロードコマンドを作成し、ダウンロードコマンドを情報保護部9へ送信する。情報保護部9のサブプロセッサ18は、インターフェース回路11を介してダウンロードコマンドを受け取ると、個別鍵を用いてそのダウンロードコマンドに含まれる、暗号化されたプログラムを復号する。これにより、プログラム自体は、外からアクセスすることが困難な情報保護部9の内部で復号されるので、プログラムの機密性が保たれる。
サーバは、プログラムのダウンロードが行われる度に、ダウンロードを要求した情報保護部9の識別情報とともに記憶されたユーザの固有情報で特定されたユーザに、ダウンロードされたプログラムについての課金を行う。
次に、秘密鍵と公開鍵のペアを用いる方法について説明する。なお、以下では、上記の共通鍵を利用する方法と異なる点について説明する。
RSA暗号といった公開鍵暗号方式では、秘密鍵を用いて暗号化された情報は、公開鍵でしか復号できず、一方、公開鍵を用いて暗号化した情報は、秘密鍵でしか復号できないという性質がある。
そこで、情報保護部9の不揮発性メモリ回路17には、個別鍵情報として、情報保護部9の公開鍵と秘密鍵のペアと、サーバの公開鍵が予め記憶される。一方、サーバには、情報保護部9ごとに、その情報保護部9の識別情報とともに、情報保護部9の公開鍵と、サーバ自身の公開鍵と秘密鍵のペアが予め記憶される。
この例では、サーバがプログラムを暗号化する際、情報保護部9とサーバしか知らない一時鍵を用いてプログラムを暗号化する。サーバは、その一時鍵を用いて暗号化されたプログラムをシステムLSI1が実装された装置へ送信する。情報保護部9は、システムLSI1のメインプロセッサ8から、その一時鍵を用いて暗号化されたプログラムを含むダウンロードしたプログラムを受け取る。そして情報保護部9のサブプロセッサ18は、一時鍵を用いて暗号化されたプログラムを復号する。
一時鍵は、例えば、以下の方法で、情報保護部9とサーバの間で共有される。まずサーバが、乱数Aを所定の乱数発生方式に従って生成し、サーバの記憶装置に乱数Aを記憶する。そしてサーバは、乱数AをシステムLSI1が実装された装置へ送信する。システムLSI1のメインプロセッサ8は、乱数Aを含む、一時鍵生成コマンドを情報保護部9へ渡す。
情報保護部9のサブプロセッサ18は、一時鍵生成コマンドを受け取ると、そのコマンドに含まれる乱数Aを、情報保護部9の秘密鍵を用いて暗号化する。またサブプロセッサ18は、一時鍵を生成し、その一時鍵をサーバの公開鍵を用いて暗号化する。さらにサブプロセッサ18は、乱数発生回路12に対して乱数Bを発生させる。そしてサブプロセッサ18は、乱数Bと、サーバの公開鍵を用いて暗号化された一時鍵及び情報保護部9の秘密鍵を用いて暗号化された乱数Aを、通信回路2を介してサーバへ送信する。またサブプロセッサ18は、一時鍵及び乱数Bを、揮発性メモリ回路16に記憶する。
サーバは、情報保護部9の秘密鍵で暗号化された乱数Aを、情報保護部9の公開鍵を用いて復号し、乱数Aであることを確認することでシステムLSI1と接続されていることを確認する。またサーバは、乱数Bをサーバの秘密鍵で暗号化して、システムLSI1が実装された装置へ送信する。さらにサーバは、情報保護部9から受信した、サーバの公開鍵を用いて暗号化された一時鍵を、サーバの秘密鍵を用いて復号する。
システムLSI1のメインプロセッサ8は暗号化された乱数Bを含む、一時鍵共有検証コマンドを情報保護部9へ渡す。
情報保護部9のサブプロセッサ18は、インターフェース回路11を介して一時鍵共有検証コマンドを受け取ると、サーバの秘密鍵で暗号化された乱数Bをサーバの公開鍵を用いて復号し、揮発性メモリ回路16に記憶している乱数Bと一致するか否か確認する。復号された乱数Bと揮発性メモリ回路16に記憶している乱数Bが一致する場合、サブプロセッサ18は、システムLSI1がサーバに接続されていることを確認する。
以上により、サーバと情報保護部9間の相互認証が終了し、サーバと情報保護部9間で一時鍵が共有される。
なお、システムLSI1のメインプロセッサ8は、ユーザの固有情報を含む、固有情報暗号化コマンドを作成し、固有情報暗号化コマンドを情報保護部9へ送信してもよい。情報保護部9のサブプロセッサ18は、固有情報暗号化コマンドに含まれる固有情報を、上記の共通鍵、あるいは一時鍵を用いて暗号化し、暗号化された固有情報をメインプロセッサ8へ返信してもよい。そしてメインプロセッサ8は、暗号化された固有情報を、サーバへ送信してもよい。
また、サーバは、プログラムのダウンロードが行われた情報保護部9の識別情報とともに、製造者識別情報を記憶してもよい。製造者識別情報は、情報保護部9を含むシステムLSI1が実装された装置の製造者、あるいは、情報保護部9を含むシステムLSI1の製造者を特定する情報である。そしてサーバは、プログラムのダウンロードが行われる度に、ダウンロードを要求した情報保護部9の識別情報とともに記憶された製造者識別情報で特定された製造者に、ダウンロードされたプログラムについての課金を行ってもよい。
なお、製造者識別情報として、情報保護部9の識別情報に含まれる、下位(上位)の所定の桁の数値が割り当てられてもよい。
(プログラムの実行)
次に、システムLSI1上でのプログラムの実行について説明する。本実施形態では、プログラムの一部をメインプロセッサ8が実行し、プログラムの他の一部を、外部からアクセス困難な情報保護部9のサブプロセッサが実行することで、情報保護部9は、そのプログラムが扱う機密情報の漏洩及び改ざんを防止する。
例えば、メインプロセッサ8が処理する、揮発性メモリ回路6に記憶されたプログラムは、仕様が公開されたオペレーションシステム上で動作する。また、揮発性メモリ回路6は、第三者がアクセス可能となっている。そのため、そのプログラム及びそのプログラムが扱うデータは、悪意ある第三者により不正に見られたり、コピーされたり、改ざんされたり、あるいは不正使用されるおそれがある。例えば、メインプロセッサ8が処理するプログラムが、コンテンツの視聴及びその視聴に対する課金を行うプログラムであれば、ユーザがコンテンツを10回視聴しても1回視聴とみなすようにプログラムまたは課金用のデータが改ざんされるおそれがある。
一方、情報保護部9は、メインプロセッサ8からの所定のコマンドでしかアクセスできず、情報保護部9内の揮発性メモリ回路16に記憶されている情報及び不揮発性メモリ回路17に記憶されている情報は、情報保護部9の外部から直接参照できない。また情報保護部9のサブプロセッサ18は、メインプロセッサ8から所定のコマンドで渡された情報を除いて、システムLSI1の各メモリ回路に記憶されている情報にアクセスしない。そしてサブプロセッサ18上で動作するプログラムは、情報保護部9内の揮発性メモリ回路16に記憶されている情報及び不揮発性メモリ回路17に記憶されている情報など、情報保護部9内で生成され、あるいは保持されている情報のみを利用する。本実施形態による情報保護部9は、上記のようなサブプロセッサ18の特性を利用して、メインプロセッサ8が処理するプログラム及びそのプログラムが扱う情報が不正に見られたり、改ざんされることを防止する。なお、以下では、プログラムのうちのサブプロセッサ18上で実行される部分をプログラムAと呼び、プログラムのうちのメインプロセッサ8上で実行される部分をプログラムBと呼ぶ。
例えば、システムLSI1が実装された装置のユーザインターフェースを介して、情報保護部9の不揮発性メモリ回路17に記憶されているプログラムを実行する操作が行われる。このとき、メインプロセッサ8は、その操作で指定されたプログラムの識別情報を含む、プログラム起動コマンドを生成し、そのプログラム起動コマンドを情報保護部9へ出力する。
情報保護部9のサブプロセッサ18は、インターフェース回路11を介してプログラム起動コマンドを受け取ると、そのプログラム起動コマンドで指定されたプログラムを不揮発性メモリ回路17から読み込む。そしてサブプロセッサ18は、そのプログラムを、例えば、乱数発生回路12から受け取った乱数にしたがって、モジュール単位でプログラムAとプログラムBに分割する。そのために、例えば、プログラムのモジュールごとに予め一意に識別番号が付され、乱数発生回路12が発生する乱数ごとに、プログラムAに属するモジュールの識別番号とプログラムBに属するモジュールの識別番号が格納されたテーブルが予め作成される。このテーブルは、不揮発性メモリ回路17に記憶される。サブプロセッサ18は、そのテーブルを参照して、乱数発生回路12から受け取った乱数にしたがって、プログラムAに属するモジュールとプログラムBに属するモジュールを決定すればよい。
サブプロセッサ18は、プログラムAに属するモジュールを揮発性メモリ回路16にコピーする。またサブプロセッサ18は、プログラムBに属するモジュールと、モジュールごとに、そのモジュールを識別番号及びプログラムAに属するか否かを表すフラグを含むデータを生成し、そのデータをメインプロセッサ8へ出力する。
メインプロセッサ8は、プログラムの実行中において各モジュールを呼び出す際に、そのモジュールのフラグを参照して、そのモジュールがプログラムAに属するか否かを判定する。そしてそのモジュールがプログラムAに属する場合、メインプロセッサ8は、そのモジュールの識別番号及びそのモジュールに渡すパラメータを含む呼び出しコマンドを作成し、その呼び出しコマンドを情報保護部9へ出力する。
情報保護部9のサブプロセッサ18は、インターフェース回路11を介して呼び出しコマンドを受け取ると、その呼び出しコマンドに含まれるモジュールの識別番号に従って実行するモジュールを特定する。そしてサブプロセッサ18は、特定したモジュールに、呼び出しコマンドに含まれるパラメータを渡して、そのモジュールの処理を実行する。サブプロセッサ18は、そのモジュールの処理結果を表すデータを作成し、そのデータをメインプロセッサ8へ渡す。
以上により、プログラムの一部が外部からの参照が困難な情報保護部9で実行されるので、そのプログラム及びそのプログラムで扱われるデータの不正な参照、コピー及び改ざんが困難になる。
図4(A)及び図4(B)は、それぞれ、プログラムAに属するモジュールとプログラムBに属するモジュールの一例を示す図である。図4(A)及び図4(B)に示されるプログラムは同一のプログラムであり、モジュールFuncA〜FuncKを含む。図4(A)では、枠線400で囲まれたFuncC、FuncD、FuncG、FuncH、FuncJがプログラムAに属する。一方、図4(B)では、枠線410で囲まれたFuncB、FuncC、FuncG、FuncJがプログラムAに属する。このように、プログラムが起動される度に、プログラムAに属するモジュールを変更することで、外から見た機能は同じでも中のコードの違うプログラムBが起動するので、悪意のある第三者がこのプログラムをハッキングすることは極めて困難になる。
なお、プログラムの各モジュールは、情報保護部9の不揮発性メモリ回路17に、情報保護部9の内部のみに保持される鍵、例えば、個別鍵を用いて暗号化された上で記憶されていてもよい。この場合、サブプロセッサ18は、プログラム起動コマンドを受け取ると、そのプログラム起動コマンドで指定されたプログラムを、その暗号化に用いられた鍵を用いて復号すればよい。
また、サブプロセッサ18は、プログラム起動コマンドを受け取る度に、プログラムBのコードを、同じ処理が実行されるようにしつつ、改変してもよい。例えば、サブプロセッサ18は、コード自体を改変してもよく、あるいは、GOTO命令を利用して、プログラムBに含まれる各モジュールの呼び出し順序を維持したまま、各モジュールの記述順序を入れ替えてもよい。
さらに、サブプロセッサ18は、プログラム起動コマンドを受け取る度に、プログラムBが実行する処理には何も関係の無い処理を実行するか、何の処理もしないダミーコードを、プログラムB中の異なる位置に挿入してもよい。またサブプロセッサ18は、プログラム起動コマンドを受け取る度に、プログラムB中に挿入するダミーコードの数を変更してもよい。
そのために、例えば、乱数発生回路12が発生する乱数ごとに、プログラムBに属するコードが格納されたテーブルが不揮発性メモリ回路17に記憶される。サブプロセッサ18は、そのテーブルを参照して、乱数発生回路12から受け取った乱数にしたがって、プログラムBに属するコードを決定すればよい。
図5(A)及び図5(B)は、それぞれ、プログラムBの一例を示す図である。図5(A)及び図5(B)において、記号A、B、X及びYは、それぞれ、変数である。図5(A)及び図5(B)から明らかなように、図5(A)に示されるプログラム500と図5(B)に示されるプログラム510は同一の処理を実行するが、コード内容が互いに異なっている。
図6(A)及び図6(B)は、それぞれ、プログラムBの他の一例を示す図である。図6(A)及び図6(B)において、Funcm(m=1〜5)は、それぞれ、一つのモジュールを表す。またFunc Dは、ダミーコードを表す。Goto Xは、行番号Xへ処理をジャンプさせるGoto命令である。そして各モジュールまたはGoto命令の左に付された番号は、行番号を表す。この例では、図6(A)に示されたプログラム600及び図6(B)に示されたプログラム610の何れも、Func1〜Func5の順序で処理を実行する。しかし、プログラム600とプログラム610とでは、モジュールの記述順序が互いに異なっているために、悪意のある第三者から見て、プログラム600の処理内容とプログラム610の処理内容が同一であることは分かり難い。また、プログラム610には、ダミーコードが含まれている。そのため、プログラムBの解析も困難になる。
また、本実施形態では、プログラムBを起動の度に異なるコードに書き換えるプログラムも、情報保護部9内のサブプロセッサ18により実行される。そのため、プログラムBの書き換えを実行するプログラムが解析されることで、プログラムBの内容が第三者に知られたり、改ざんされる可能性は極めて低い。
さらに、メインプロセッサ8及びサブプロセッサ18は、定期的あるいは不定期的に、実行中のプログラムBをスキャンして、プログラムBが改ざんされているか否かを確認してもよい。
まず、サブプロセッサ18は、プログラムBをスキャンするためのスキャンプログラムを生成する。サブプロセッサ18は、生成したプログラムをメインプロセッサ8へ出力し、メインプロセッサ8は、受け取ったスキャンプログラムを揮発性メモリ回路6に書き込む。メインプロセッサ8は、スキャンプログラムを実行することによって揮発性メモリ回路6からプログラムBのプログラムコードが記憶されているメモリ領域に対して所定の演算を行って、スキャン演算値を算出する。メインプロセッサ8は、そのスキャン演算値を含むスキャン結果通知コマンドを生成し、そのスキャン結果通知コマンドを情報保護部9へ送信する。情報保護部9のサブプロセッサ18は、インターフェース回路11を介してスキャン結果通知コマンドを受け取り、そのコマンドに含まれるスキャン演算値に基づいて、プログラムBのコードが改ざんされているか否か判定する。サブプロセッサ18は、プログラムBが改ざんされていると判定すると、メインプロセッサ8に、プログラムBの実行を停止させる命令を出力する。
なお、スキャンプログラムは、メインプロセッサ8に、例えば、プログラムBの一部または全部が記憶されているメモリ領域内のビット列のハッシュ値をスキャン演算値として算出させる。あるいは、スキャンプログラムは、メインプロセッサ8に、プログラムBの互いに異なる一部が記憶されている複数のメモリ領域内のビット列に対して、数値演算、論理演算、または数値演算と論理演算の組み合わせを実行させることでスキャン演算値を算出する。
サブプロセッサ18は、メインプロセッサ8から受け取ったスキャン演算値を、情報保護部9の揮発性メモリ回路16または不揮発性メモリ回路17に記憶されている、プログラムBが改ざんされていない場合のスキャン演算値と比較する。そして、サブプロセッサ18は、二つのスキャン演算値が一致すれば、プログラムBは改ざんされていないと判定し、一方、二つのスキャン演算値が一致しなければ、プログラムBは改ざんされていると判定する。なお、情報保護部9内に記憶されるスキャン演算値は、例えば、サブプロセッサ18がプログラムB及びスキャンプログラムを生成したときに、プログラムBが記憶されている揮発性メモリ回路16をスキャンプログラムを用いてスキャンすることで算出される。あるいは、メインプロセッサ8から受け取ったスキャン演算値のうちでプログラムBが改ざんされていないと判定されたときの最新のスキャン演算値が、情報保護部9の揮発性メモリ回路16または不揮発性メモリ回路17に記憶されてもよい。
なお、スキャン演算値は上記の例に限らず、プログラムが改ざんされているか否かを検出するために、プログラムが記憶されているメモリ領域の記憶内容に基づいて算出される様々な値の何れかであってもよい。
なお、スキャンプログラム自体が、第三者がアクセス可能な揮発性メモリ回路6に記憶されているため、プログラムBが改ざんされていないとの判定結果が常に得られるように、スキャンプログラム自体が改ざんされる可能性がある。そこで、サブプロセッサ18は、スキャンプログラムをできるだけ頻繁に変更することでスキャンプログラム自身のハッキングを困難にすることが好ましい。スキャンプログラムが頻繁に変更されるほど、スキャンプログラムを解析したり、プログラムBの改ざん検知を無効化するようにスキャンプログラムを改ざんするための時間がなくなる。そのため、スキャンプログラムを解析したり、プログラムBの改ざん検知を無効化するようにスキャンプログラムを改ざんすることがより困難となる。
サブプロセッサ18は、スキャンプログラムを生成する度に、スキャン対象となるメモリ領域、メモリ領域ごとのスキャン順序、スキャン演算値算出用の演算処理、スキャン演算値を情報保護部9に戻す処理、またはスキャンプログラムのコードなどを変更する。
図7は、スキャンプログラムのコードの一例を示す図である。スキャンプログラム700において、一つの行が一つの命令を表す。そしてメインプロセッサ8は、スキャンプログラム700に含まれる各命令を、1番上の行の命令から順に実行する。
この例では、31番地メモリ〜35番地メモリにプログラムBの一部が格納されているとする。サブプロセッサ18は、書込み先のメモリの番地(2001〜2005)を、スキャンプログラムの作成の度にランダムに変更することができる。その際、サブプロセッサ18は、読み込むメモリ番地ごとに、乱数発生回路12により乱数を発生させ、その乱数に所定の係数を乗じ、かつ整数化した値を、書込み先の候補となるメモリの番地の最小値に加えることで書込み先のメモリ番地を決定してもよい。
またスキャンプログラム700において、6、7行目の処理がスキャン値を算出する処理である。サブプロセッサ18は、スキャンプログラムを生成する度に、6、7行目の処理内容を変更してもよい。その際、例えば、サブプロセッサ18は、乱数とスキャン値算出演算とを対応させたテーブルを参照して、スキャンプログラム生成の際に乱数発生回路12により発生させた乱数に対応するスキャン値算出演算を特定する。そしてサブプロセッサ18は、特定したスキャン値算出演算をスキャンプログラムに組み込めばよい。
またスキャンプログラム700において、8、9行目の処理がスキャン値を情報保護部9に戻す処理である。サブプロセッサ18は、スキャンプログラムを生成する度に、8、9行目の演算内容を変更してもよい。その際、例えば、サブプロセッサ18は、スキャンプログラム生成の際に乱数発生回路12により発生させた乱数を、スキャン演算値に加算する定数またはスキャン演算値に乗じる定数とする。
また、サブプロセッサ18は、プログラムBを生成する際に、認証コードをプログラムBの中に埋め込んでもよい。この場合、メインプロセッサ8は、プログラムBの実行中に、認証コードを読み込むと、その認証コードに従って情報保護部9を利用してプログラムBを認証する。なお、認証コードの位置に制限は無く、例えば、認証コードは、プログラムBの一番先頭または最後に埋め込まれていてもよく、あるいは、プログラムBの途中に埋め込まれていてもよい。また、プログラムB中に埋め込まれる認証コードは一つでもよく、あるいは、複数でもよい。
認証コードにより実行される認証処理として、例えば、以下のような認証処理が実行される。
(1)サブプロセッサ18は、プログラムBの生成時に、プログラムBの予め決められた部分(例えば、コードの先頭部分)において、初期情報として、定数X,Y,Zを規定する。定数X,Y,Zは、例えば、プログラムBが生成される度に異なる値に設定される。そしてサブプロセッサ18は、定数X,Y,Zを用いた所定の演算により得られた結果を情報保護部9の揮発性メモリ回路16に記憶する。所定の演算は、数値演算、論理演算、あるいは数値演算と論理演算の組み合わせとすることができる。この例では、所定の演算をW0=X*Y+Zとし、その演算により得られた値W0が揮発性メモリ回路16に記憶される。
またこの定数X,Y,Zは、プログラムBが実行されることにより、例えば、揮発性メモリ回路6内のメモリ領域の何れかに記憶される。
(2)メインプロセッサ8は、プログラムBの実行中に、埋め込まれた認証コードに達すると揮発性メモリ回路6から定数X,Y,Zを読み込む。
(3)そしてメインプロセッサ8は、定数X,Y,Zに対して上記の所定の演算(この例では、W=X*Y+Z)を行う。
(4)メインプロセッサ8は、得られた値Wを含む、認証要求コマンドを生成し、その認証要求コマンドを情報保護部9へ送信する。
(5)サブプロセッサ18は、インターフェース回路11を介して受け取った認証要求コマンドに含まれる値Wを、情報保護部9内の揮発性メモリ回路16に記憶されている値W0と比較する。値WとW0が一致すれば、サブプロセッサ18は、プログラムBの続行の許可を表す信号をメインプロセッサ8へ出力する。一方、値WとW0が一致しなければ、プログラムBが改ざんされている可能性が高いので、サブプロセッサ18は、プログラムBの停止を表す信号をメインプロセッサ8へ出力する。
(6)メインプロセッサ8は、プログラムBの続行の許可を表す信号をサブプロセッサ18から受け取ると、認証コードに後続する処理を実行する。一方、メインプロセッサ8は、プログラムBの停止を表す信号を受信すると、プログラムBの処理を停止する。またサブプロセッサ18は、情報保護部9の動作を停止させ、システムLSI1が実装された装置の電源が再投入されるまで、情報保護部9が動作しないようにしてもよい。
プログラムB中に複数の認証コードが含まれている場合、メインプロセッサ8及びサブプロセッサ18は、実行中の処理が認証コードに達する度に、ステップ(2)〜(6)の処理を繰り返す。この場合、認証コードごとに、利用される定数は異なっていてもよく、また、認証コードごとに、利用される定数に対して行われる演算も異なっていてもよい。
認証コードは、プログラムBの生成の度に変更されてもよい。例えば、上記の定数X,Y,Zの値が、プログラムBの生成の度に変更されてもよく、あるいは、上記の定数X,Y,Zに対して行われる演算が変更されてもよい。あるいはまた、プログラムBの生成の度に、認証コードの実行に利用される定数の組み合わせが変更されてもよい。例えば、サブプロセッサ18は、乱数と認証コードが対応付けられたテーブルを参照することで、プログラムBの生成の際に乱数発生回路12により発生させた乱数に対応する認証コードを決定し、決定した認証コードをプログラムBに埋め込めばよい。このように、プログラムBの生成の度に認証コードを変更することで、第三者がプログラムBを改ざんした際に、その改ざんされたプログラムBが認証に成功することが極めて困難となる。
なお、サブプロセッサ18は、認証処理に時間制限を設けてもよい。例えば、サブプロセッサ18は、認証コードが埋め込まれたプログラムBをメインプロセッサ8へ出力する際における、タイミング回路15からの高信頼タイミング信号に示された時刻をプログラムBの起動時刻として揮発性メモリ回路16に記憶してもよい。
サブプロセッサ18は、プログラムBの起動時刻から一定期間内に認証要求コマンドを受け取らなかった場合、プログラムBの認証処理が改ざんされたと判定する。そしてサブプロセッサ18は、プログラムBの停止を表す信号をメインプロセッサ8へ出力する。これにより、情報保護部9は、認証コードの偽造に利用可能な時間を無くすことが可能である。またこのように、認証を受けることができる期間を制限することで、情報保護部9は、認証結果が永遠に返信されないと認証OKとなるいう結果になるのを防げる。
(情報保護部外のメモリ回路の利用)
次に、機密情報を情報保護部9外のメモリ回路に格納する例について説明する。不揮発性メモリ回路は、一般的に、揮発性メモリ回路よりも高価であるため、コストの観点からは、システムLSI1に実装される不揮発性メモリ回路の記憶容量は少ない方が好ましい。そこでこの例では、情報保護部9が有する不揮発性メモリ回路17の記憶容量を最小限に抑え、その代わりに、情報保護部9外にあるメモリ回路を利用する。
最初に、暗号化された機密情報を単純にシステムLSI1の不揮発性メモリ回路7に記憶させておく場合の不都合について説明する。
例えば、情報保護部9の識別情報及び個別鍵情報といった機密情報が、情報保護部9しか知らない暗号鍵を用いて暗号化され、不揮発性メモリ回路7に記憶されているとする。
これらの暗号化された機密情報は、情報保護部9しか知らない暗号鍵で暗号化されているため、暗号化された情報が第三者に知られる可能性は低い。しかし、不揮発性メモリ回路7に記憶されている機密情報全体が置き替えられる可能性がある。そのため、以下のような不正を防げない可能性がある。
例えば、システムLSI1の電源切断後にも、次回のシステムLSI1の使用の際に必要となる機密情報を保持するため、情報保護部9が機密情報を暗号化した上で、不揮発性メモリ回路7に暗号化された機密情報を保存する。機密情報として、例えば、プリペイドの「残金」及び「視聴コンテンツの履歴情報」が保存される。
過去のある時点(例えば、2か月前)において、不揮発性メモリ回路7に記憶されている暗号化された情報全体が他の装置のメモリにコピーされたとする。その際、残金は5000円、視聴コンテンツの履歴に映画1が記録されていたとする。
その後、ユーザが映画2、3の視聴などのために、プリペイドの残金を使用したとする。そして現時点において、残金は1000円、視聴コンテンツの履歴に映画1、2、3が記録されていたとする。
ここで、現時点で不揮発性メモリ回路7に記憶されている暗号化された情報が、過去の時点の不揮発性メモリ回路7に記憶されている暗号化された情報で置換されたとする。この場合、本来は、残金は1000円であるところ、5000円になる。また視聴したコンテンツも映画1、2、3なのに、記録上は映画1のみになってしまう。また、過去の時点の不揮発性メモリ回路7に記憶されている暗号化された情報も、情報保護部9によって暗号化されているので、置換後の情報が不正に操作された情報かどうかの見分けが付き難い。このような不正なコピーを防げなければ、過去のある時点から現在までの間にユーザがどんなに金を使っても、常に残金が残ることになってしまう。
そこで本実施形態では、このような不正を防ぐため、メインプロセッサ8及びサブプロセッサ18は、以下のような処理を実行する。
メインプロセッサ8は、機密情報を更新する度に、更新された機密情報を含む記録更新要求コマンドを生成し、その記録更新要求コマンドを情報保護部9へ送信する。サブプロセッサ18は、インターフェース回路11を介して記録更新要求コマンドを受け取ると、その記録更新要求コマンドに含まれる機密情報を、情報保護部9しか知らない暗号鍵、例えば、個別鍵を用いて暗号化する。そしてサブプロセッサ18は、暗号化された機密情報をメインプロセッサ8へ出力する。メインプロセッサ8は、暗号化された機密情報を不揮発性メモリ回路7に保存する。
またサブプロセッサ18は、暗号化された機密情報を、暗号回路14に渡す。暗号回路14は、暗号化された機密情報のハッシュ値を計算する。そして暗号回路14は、そのハッシュ値をサブプロセッサ18に返す。サブプロセッサ18は、そのハッシュ値を、機密情報の種類を表す情報とともに不揮発性メモリ回路17に保存する。
また、メインプロセッサ8は、動作中のアプリケーションプログラムなどにより、機密情報の更新または参照を要求されると、暗号化された機密情報を不揮発性メモリ回路7から読み出し、その暗号化された機密情報を含む記録確認コマンドを生成する。そしてメインプロセッサ8は、その記録確認コマンドを情報保護部9へ送信する。
サブプロセッサ18は、インターフェース回路11を介して記録確認コマンドを受け取ると、記録確認コマンドに含まれる暗号化された機密情報を暗号回路14に渡す。そして暗号回路14は、その暗号化された機密情報のハッシュ値を算出し、サブプロセッサ18に返す。
サブプロセッサ18は、暗号回路14から受け取ったハッシュ値と、不揮発性メモリ回路17に記憶されているハッシュ値とを比較する。その二つのハッシュ値が一致する場合、サブプロセッサ18は、暗号化された機密情報は改ざんされていないと判定する。そしてサブプロセッサ18は、暗号化された機密情報を復号し、復号された機密情報をメインプロセッサ8へ出力する。これにより、メインプロセッサ8は、復号された機密情報を参照または更新できる。
一方、その二つのハッシュ値が一致しない場合、サブプロセッサ18は、暗号化された機密情報が改ざんされたと判定する。この場合には、サブプロセッサ18は、機密情報を復号せず、メインプロセッサ8に、機密情報が改ざんされていることを通知する。
以上に説明した処理により、システムLSI1は、情報保護部9外のメモリ回路に機密情報を保存する場合にも、現在の機密情報を過去の機密情報で置換することによる不正を防止できる。そのため、情報保護部9が有する不揮発性メモリ回路17の記憶容量が小さくて済む。
なお、メインプロセッサ8は、記録確認コマンドに、暗号化された機密情報とともに、更新後の機密情報の値、あるいは、更新前の機密情報の値と更新後の機密情報の値の差分値を含めてもよい。この場合には、サブプロセッサ18が、暗号化された機密情報を復号した後に、その機密情報の値を、更新後の機密情報の値、あるいは、更新前の機密情報の値と更新後の機密情報の値の差分値に基づいて更新する。そしてサブプロセッサ18は、更新後の機密情報を暗号化してからメインプロセッサ8へ出力するとともに、暗号回路14に、更新後の機密情報のハッシュ値を算出させる。この場合には、機密情報の更新も、外部からアクセスすることが困難な、情報保護部9内のサブプロセッサ18が実行するので、機密情報が漏えいするリスクがより軽減される。
また、暗号回路14は、暗号化された機密情報のハッシュ値を算出する代わりに、暗号化された機密情報のチェックサムを算出し、そのチェックサムが不揮発性メモリ回路17に記憶されてもよい。この場合、ハッシュ値を算出するよりも、簡単な演算でよいので、暗号回路14が簡単化できる。
また、暗号回路14は、暗号化されていない機密情報のハッシュ値またはチェックサムを算出し、そのハッシュ値またはチェックサムが不揮発性メモリ回路17に記憶されてもよい。
さらにまた、メインプロセッサ8は、更新対象となる機密情報だけでなく、全ての機密情報を、記録更新要求コマンド及び記録確認コマンドに含めてもよい。この場合には、全ての機密情報に対して一つのハッシュ値またはチェックサムが計算されればよい。
なお、情報保護部9外のメモリ回路を機密情報の保存に利用して、システムLSI1は、デジタルテレビ放送の受信に関する処理を実行してもよい。この場合には、情報保護部9内でCASプログラムが動作して、スクランブル鍵の復号など、スクランブル鍵に関する処理と、ワーク鍵の復号及び暗号化などの処理が行われる。その際、情報保護部9外の不揮発性メモリ回路7に、暗号化されたワーク鍵が記憶されてもよい。
なお、情報保護部9内で動作するCASプログラムも、他のプログラムA及びプログラムBと同様に、上述したダウンロードの手順に従って、システムLSI1が放送局あるいはサーバから受信して更新することができる。
また、現行のB-CAS(登録商標)では、CASプログラムは、スクランブル鍵の復号など、スクランブル鍵に関する処理と、ワーク鍵の復号及び暗号化など、ワーク鍵に関する処理と、その他の処理に分割可能である。そこでCASプログラムを更新する際には、情報保護部9は、スクランブル鍵に関する処理、ワーク鍵に関する処理及びその他の処理をそれぞれ個別に更新可能である。この場合、情報保護部9は、更新対象となる処理に関連するプログラムのみを、上述したダウンロードの手順に従ってサーバあるいは放送局からダウンロードすればよい。このように処理単位でプログラムをダウンロードすることにより、情報保護部9は、更新する際の情報伝送量を節約できる。
あるいは、CASプログラムを更新する際に、CASプログラムの一部、例えば、ワーク鍵に関する処理といった機密情報を扱う部分については情報保護部9がダウンロードし、CASプログラムのその他の部分については、メインプロセッサ8がダウンロード処理を行ってもよい。これにより、システムLSI1は、CASプログラムのうちの機密情報を扱う部分が漏えいする危険性を低減しつつ、更新プログラムのダウンロード処理全体の処理時間を短縮できる。
以上に説明してきたように、この情報処理装置は、情報保護部内に、メインプロセッサと独立したサブプロセッサと、外部からは参照できないメモリ回路を有し、そのサブプロセッサとメモリ回路により、機密情報またはプロラムの一部を扱う。そのため、この情報処理装置は、機密情報及びプログラムが解析されたり、不正に改ざんされることを防止できる。
変形例によれば、情報保護部9外の不揮発性メモリ回路7の二つ以上のメモリ領域に暗号化された機密情報が記憶され、それら各メモリ領域に記憶された暗号化された機密情報全てが揃わないと、機密情報が再生されないようにしてもよい。
この場合には、情報保護部9の不揮発性メモリ回路17に、例えば、機密情報が記憶されているメモリ領域のアドレスと、各メモリ領域に記憶されている暗号化された機密情報から機密情報を再生するための演算の種類といった、機密情報再生情報が記憶される。
例えば、メインプロセッサ8は、機密情報を再生する際、機密情報の再生を要求するコマンドを生成し、そのコマンドを情報保護部9へ出力する。情報保護部9は、そのコマンドを受け取ると、機密情報再生情報をメインプロセッサ8へ出力する。そしてメインプロセッサ8は、機密情報再生情報を参照することで、機密情報を再生する。
例えば、メインプロセッサ8は、暗号化された機密情報の各部を、機密情報再生情報に示された複数のアドレスのそれぞれに対応するメモリ領域から読み込む。そしてメインプロセッサ8は、暗号化された機密情報の各部を、機密情報再生情報に示された所定の順序に従って結合することで、機密情報を再生する。あるいは、メインプロセッサ8は、暗号化された機密情報の各部に対して、機密情報再生情報に示された所定の演算を行うことで、機密情報を再生してもよい。
さらに他の変形例によれば、機密情報が記憶されている不揮発性メモリ回路を、システムLSI1が実装されている装置の基板に固定し、不揮発性メモリ回路を壊さずに取り外しできないようにしてもよい。
また他の変形例によれば、情報保護部は、メインプロセッサを含むシステムLSIとは別個の集積回路として形成されてもよい。
さらに他の変形例によれば、情報保護部宛てのコマンドか否かの判定を、情報保護部のサブプロセッサ自体が行ってもよい。この場合には、情報保護部のインターフェース回路は、システムLSIのバスを通じて受信した全てのコマンドをサブプロセッサに渡してもよい。
さらに他の変形例によれば、情報保護部のインターフェース回路とサブプロセッサとを接続するバスと、情報保護部のインターフェース回路とサブプロセッサ以外の各ユニットとサブプロセッサとを接続するバスとは、別個に設けられてもよい。これにより、情報保護部の各ユニットに対して、情報保護部の外部からアクセスすることがより困難になる。
なお、メインプロセッサと情報保護部のサブプロセッサとは、論理的に区別されていればよく、必ずしも物理的に異なるものである必要はない。例えば、メインプロセッサとサブプロセッサとは、物理的には同じプロセッサであり、そのプロセッサは、通常モードではメインプロセッサとして動作し、セキュリティーモードではサブプロセッサとして切り替えて動作してもよい。ただし、この場合には、通常モードで動作中のプロセッサから、セキュリティーモードで動作中のプロセッサが参照するメモリ領域にアクセスできないようにする必要がある。そこで、例えば、あるメモリ領域(揮発性メモリ回路6及び不揮発性メモリ回路7に相当)は、通常モードで動作中のプロセッサからアクセス可能とし、一方、別のメモリ領域(揮発性メモリ回路16及び不揮発性メモリ回路17に相当)は、セキュリティーモードで動作中のプロセッサからアクセスできるようにしてもよい、あるいは、セキュリティーモードで動作中のプロセッサは、常に暗号化/復号化処理を経由して所定のメモリ領域(揮発性メモリ回路16及び不揮発性メモリ回路17に相当)にアクセスするようにしてもよい。この場合、通常モードで動作中のプロセッサは、そのメモリ領域にアクセスしても暗号化されているのでそのメモリ領域にアクセスできない。一方、セキュリティーモードで動作中のプロセッサは鍵を持っているので、メモリから情報を読み出す際には、そのメモリ領域に記憶されている情報を復号でき、一方、メモリに情報を書き込む際には、そのメモリ領域に記憶させる情報を暗号化できる。
ここに挙げられた全ての例及び特定の用語は、読者が、本発明及び当該技術の促進に対する本発明者により寄与された概念を理解することを助ける、教示的な目的において意図されたものであり、本発明の優位性及び劣等性を示すことに関する、本明細書の如何なる例の構成、そのような特定の挙げられた例及び条件に限定しないように解釈されるべきものである。本発明の実施形態は詳細に説明されているが、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。
1 システムLSI(情報処理装置)
2 通信回路
3 無線処理回路
4 映像処理回路
5 グラフィックス処理回路
6 揮発性メモリ回路
7 不揮発性メモリ回路
8 メインプロセッサ
9 情報保護部
11 インターフェース回路
12 乱数発生回路
13 マスター鍵生成回路
14 暗号回路
15 タイミング回路
16 揮発性メモリ回路
17 不揮発性メモリ回路
18 サブプロセッサ
20 バス

Claims (18)

  1. 第1のプロセッサと、
    情報保護部と、
    前記情報保護部と前記第1のプロセッサとを接続する第1の通信路とを有し、
    前記情報保護部は、
    前記情報保護部を前記第1の通信路と接続するインターフェース回路と、
    第2のプロセッサと、
    前記第1のプロセッサから参照できず、一方、前記第2のプロセッサから参照可能な第1のメモリとを有し、
    前記インターフェース回路は、前記第1の通信路から受信したコマンドが、前記情報保護部宛てのコマンドである場合、当該コマンドを前記第2のプロセッサに渡し、一方、前記第1の通信路から受信したコマンドが、前記情報保護部宛てのコマンドでない場合、当該コマンドを前記第2のプロセッサに渡さず、
    前記第2のプロセッサは、前記第1のプロセッサから前記第1の通信路を介して前記情報保護部宛てのコマンドを受信すると、前記第1のメモリに記憶された情報に関する処理を実行する、
    情報処理装置。
  2. 前記インターフェース回路は、前記情報保護部内から発せられた信号のうち、前記情報保護部の外部を宛先とする宛先情報を含む信号を前記第1の通信路へ出力し、一方、前記情報保護部の外部を宛先とする宛先情報を含まない信号を前記第1の通信路へ出力しない、請求項1に記載の情報処理装置。
  3. 前記インターフェース回路と前記第2のプロセッサとは第2の通信路を介して互いに通信可能に接続され、
    前記第1のメモリは、前記インターフェース回路と接続されていない第3の通信路を介して前記第2のプロセッサと互いに通信可能に接続される、請求項1に記載の情報処理装置。
  4. 前記第1のメモリは、プログラムを記憶し、
    前記第2のプロセッサは、前記情報保護部宛てのコマンドとして前記プログラムを実行するコマンドを受け取ると、前記プログラムを第1の部分と第2の部分に分割し、前記プログラム中の前記第1の部分を示す情報と前記第2の部分とを前記第1のプロセッサへ出力し、前記第1のプロセッサから前記情報保護部宛てのコマンドとして前記第1の部分を実行するコマンドを受け取ると前記第1の部分の処理を実行する、請求項1〜3の何れか一項に記載の情報処理装置。
  5. 前記情報保護部は、前記第1のプロセッサから参照不可能で、前記第2のプロセッサから参照可能であり、かつ、乱数を発生させる乱数発生回路をさらに有し、
    前記第2のプロセッサは、前記情報保護部宛てのコマンドとして前記プログラムを実行するコマンドを受け取る度に、前記乱数発生回路に乱数を発生させ、前記第1のメモリに記録された乱数と前記第2の部分の対応関係を表すテーブルを参照して前記発生した乱数に対応する前記第2の部分を特定することで、前記プログラムの前記第2の部分を変更する、請求項4に記載の情報処理装置。
  6. 前記プログラムの前記第2の部分は複数のモジュールを有し、前記第2のプロセッサは、前記乱数に基づいて、前記プログラムの実行の際の前記複数のモジュールの呼び出し順を変更することなく、前記複数のモジュールの記述順序を入れ替える、請求項5に記載の情報処理装置。
  7. 前記第2のプロセッサは、前記乱数に基づいて、前記第2の部分の処理に無関係な処理を実行するかまたは何の処理もしないダミーコードの数及び該ダミーコードごとの挿入位置を決定し、該決定した数の前記ダミーコードのそれぞれを、前記第2の部分の前記決定した挿入位置に挿入する、請求項5に記載の情報処理装置。
  8. 前記情報保護部は、前記第1のプロセッサから参照不可能で、前記第2のプロセッサから参照可能であり、かつ、乱数を発生させる乱数発生回路をさらに有し、かつ、前記プログラムは複数のモジュールを有し、
    前記第2のプロセッサは、前記情報保護部宛てのコマンドとして前記プログラムを実行するコマンドを受け取る度に、前記乱数発生回路に乱数を発生させ、前記第1のメモリに記録された乱数と前記第2の部分に属するモジュールの対応関係を表すテーブルを参照して前記発生した乱数に対応する前記第2の部分に属するモジュールを特定することで、前記複数のモジュールのうち前記第1の部分に属するモジュールと前記第2の部分に属するモジュールの組み合わせを変更する、請求項4に記載の情報処理装置。
  9. 前記プログラムの前記第2の部分を記憶する第2のメモリをさらに有し、
    前記第2のプロセッサは、前記プログラムの前記第2の部分からスキャン演算値を算出するスキャンプログラムを生成し、前記スキャンプログラムを用いて算出した第1のスキャン演算値を前記第1のメモリに記憶し、前記スキャンプログラムを前記第1のプロセッサへ出力し、かつ、
    前記第1のプロセッサが前記第2のメモリに対して前記スキャンプログラムを実行することにより得られた第2のスキャン演算値を含む前記情報保護部宛てのコマンドを受け取ると、前記第1のスキャン演算値と前記第2のスキャン演算値を比較し、前記第1のスキャン演算値と前記第2のスキャン演算値が異なる場合、前記第1のプロセッサへ前記プログラムの前記第2の部分が改ざんされていることを示す信号を送信する、請求項4〜8の何れか一項に記載の情報処理装置。
  10. 前記第2のプロセッサは、前記スキャンプログラムを変更し、前記スキャンプログラムが変更される度に変更後のスキャンプログラムを用いて前記第1のスキャン演算値を算出するとともに、該変更後のスキャンプログラムを前記第1のプロセッサへ出力する、請求項9に記載の情報処理装置。
  11. 前記第2のプロセッサは、前記プログラムを第1の部分と第2の部分に分割するときに、前記プログラムの前記第2の部分内に所定の演算を行う認証コードを追加するとともに、該所定の演算により得られた第1の値を前記第1のメモリに記憶し、かつ、
    前記第1のプロセッサが前記プログラムの前記第2の部分の実行中に前記認証コードに達することにより該認証コードに従って前記所定の演算を行って得られた第2の値を含む前記情報保護部宛てのコマンドを受け取ると、前記第1の値と前記第2の値を比較し、前記第1の値と前記第2の値が異なる場合、前記第1のプロセッサへ前記プログラムを停止させることを示す信号を送信する、請求項4に記載の情報処理装置。
  12. 前記情報保護部は、前記第1のプロセッサから参照不可能で、前記第2のプロセッサから参照可能であり、かつ、タイミング信号を生成するタイミング回路をさらに有し、
    前記第2のプロセッサは、前記プログラムの前記第2の部分を前記第1のプロセッサへ出力してからの経過時間を前記タイミング信号に基づいて計時し、該経過時間が所定時間に達しても、前記第2の値を含む前記情報保護部宛てのコマンドを受け取っていない場合、前記第1のプロセッサへ前記プログラムを停止させることを示す信号を送信する、請求項11に記載の情報処理装置。
  13. 前記第1のメモリは、暗号鍵を記憶し、
    前記第2のプロセッサは、前記暗号鍵を用いて暗号化されたプログラムを含む前記情報保護部宛てのコマンドを受信すると、当該暗号化されたプログラムを前記暗号鍵を用いて復号する、請求項1〜3の何れか一項に記載の情報処理装置。
  14. 前記情報保護部は、前記第1のプロセッサから参照不可能で、前記第2のプロセッサから参照可能であり、かつ、乱数を発生させる乱数発生回路をさらに有し、かつ、前記第1のメモリは、秘密鍵と公開鍵のペアのうちの公開鍵とを記憶し、
    前記第2のプロセッサは、前記暗号鍵を前記公開鍵を用いて暗号化して得られた鍵と前記乱数発生回路により発生された乱数とを、前記秘密鍵と前記公開鍵のペアを記憶するサーバへ送信し、前記サーバから受信した値を前記ペアの前記公開鍵を用いて復号して得られた値と前記乱数が一致すると、前記暗号鍵を前記暗号化されたプログラムの復号に利用する、請求項13に記載の情報処理装置。
  15. 前記第1のプロセッサが参照可能であり、かつ、暗号化された情報を記憶する第2のメモリをさらに有し、
    前記情報保護部は、前記第1のプロセッサから参照不可能で、前記第2のプロセッサから参照可能であり、かつ、入力された値に対して所定の演算を行う暗号回路をさらに有し、
    前記第1のメモリは、過去の所定時点における前記暗号化された情報を前記暗号回路に入力することにより得られた第1の値を記憶し、
    前記第2のプロセッサは、前記第1のプロセッサから前記第2のメモリに記憶された前記暗号化された情報を含む前記情報保護部宛てのコマンドを受け取ると、当該コマンドに含まれる前記暗号化された情報を前記暗号回路に入力することにより第2の値を求め、前記第1の値と前記第2の値が異なっていると前記第1のプロセッサへ前記第2のメモリに記憶されている前記暗号化された情報が改ざんされていることを示す信号を送信する、請求項1〜3の何れか一項に記載の情報処理装置。
  16. 前記第1のメモリ及び前記第2のメモリの何れも不揮発性メモリを有し、前記第2のメモリの不揮発性メモリの容量よりも前記第1のメモリの不揮発性メモリの容量の方が小さい、請求項15に記載の情報処理装置。
  17. 前記情報保護部と前記第1のプロセッサは一つの集積回路として実装される、請求項1〜16の何れか一項に記載の情報処理装置。
  18. 第1のプロセッサと、情報保護部と、前記情報保護部と前記第1のプロセッサとを接続する通信路とを有し、前記情報保護部は、前記情報保護部を前記通信路と接続するインターフェース回路と、第2のプロセッサと、前記第1のプロセッサから参照できず、一方、前記第2のプロセッサから参照可能なメモリとを有する情報処理装置における情報処理方法であって、
    前記インターフェース回路は、前記通信路を介して受信したコマンドが前記情報保護部宛てのコマンドか否か判定し、
    前記受信したコマンドが前記情報保護部宛てのコマンドである場合、前記第2のプロセッサは、当該コマンドに従って、前記メモリに記憶された情報に関する処理を実行する、
    ことを含む情報処理方法。
JP2015538813A 2013-09-30 2013-09-30 情報処理装置及び情報処理方法 Active JP6146476B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/076604 WO2015045172A1 (ja) 2013-09-30 2013-09-30 情報処理装置及び情報処理方法

Publications (2)

Publication Number Publication Date
JPWO2015045172A1 true JPWO2015045172A1 (ja) 2017-03-09
JP6146476B2 JP6146476B2 (ja) 2017-06-14

Family

ID=52742368

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015538813A Active JP6146476B2 (ja) 2013-09-30 2013-09-30 情報処理装置及び情報処理方法

Country Status (3)

Country Link
US (1) US10103884B2 (ja)
JP (1) JP6146476B2 (ja)
WO (1) WO2015045172A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105308609B (zh) * 2013-04-23 2017-12-29 惠普发展公司,有限责任合伙企业 存储事件数据的系统和方法
WO2014175867A1 (en) 2013-04-23 2014-10-30 Hewlett-Packard Development Company, L.P. Verifying controller code and system boot code
WO2020159533A1 (en) 2019-02-01 2020-08-06 Hewlett-Packard Development Company, L.P. Security credential derivation
WO2020167283A1 (en) 2019-02-11 2020-08-20 Hewlett-Packard Development Company, L.P. Recovery from corruption
JP7127585B2 (ja) * 2019-03-12 2022-08-30 オムロン株式会社 セーフティシステムおよびメンテナンス方法
JP2021077263A (ja) * 2019-11-13 2021-05-20 レノボ・シンガポール・プライベート・リミテッド 解析システム、情報処理装置、電子機器、及び解析方法
FR3122747B1 (fr) * 2021-05-07 2023-03-31 Commissariat Energie Atomique Procede d’execution d’une fonction, securise par desynchronisation temporelle

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10301892A (ja) * 1997-04-23 1998-11-13 Hitachi Ltd バスブリッジ
JP2003099329A (ja) * 2001-09-19 2003-04-04 Toshiba Corp 情報処理装置及び情報処理方法
JP2008263577A (ja) * 2007-04-11 2008-10-30 Cyberlink Corp 暗号化されたプログラムを実行するシステムおよび方法
JP2008269088A (ja) * 2007-04-17 2008-11-06 Toshiba Corp プログラム情報提供システム、プログラム情報提供方法、プログラム情報提供方法に用いられる記録媒体
JP2010067089A (ja) * 2008-09-11 2010-03-25 Toshiba Corp システムlsi

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003018143A (ja) * 2001-06-28 2003-01-17 Mitsubishi Electric Corp 情報処理装置
JP2007281813A (ja) 2006-04-05 2007-10-25 Sharp Corp 暗号化通信方法、コンテンツ配信サーバ、端末装置、暗号化通信システム、暗号化通信プログラム、および記録媒体

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10301892A (ja) * 1997-04-23 1998-11-13 Hitachi Ltd バスブリッジ
JP2003099329A (ja) * 2001-09-19 2003-04-04 Toshiba Corp 情報処理装置及び情報処理方法
JP2008263577A (ja) * 2007-04-11 2008-10-30 Cyberlink Corp 暗号化されたプログラムを実行するシステムおよび方法
JP2008269088A (ja) * 2007-04-17 2008-11-06 Toshiba Corp プログラム情報提供システム、プログラム情報提供方法、プログラム情報提供方法に用いられる記録媒体
JP2010067089A (ja) * 2008-09-11 2010-03-25 Toshiba Corp システムlsi

Also Published As

Publication number Publication date
JP6146476B2 (ja) 2017-06-14
US10103884B2 (en) 2018-10-16
WO2015045172A1 (ja) 2015-04-02
US20160211977A1 (en) 2016-07-21

Similar Documents

Publication Publication Date Title
US20210192095A1 (en) Program execution device
JP6146476B2 (ja) 情報処理装置及び情報処理方法
KR100749867B1 (ko) 보안장치상에 암호화시스템을 보안가능하게 설치하는시스템 및 방법
KR101194477B1 (ko) 전자 콘텐츠의 디지털 저작권 관리 시스템 및 방법
KR101172093B1 (ko) 디지털 오디오/비디오 데이터 처리 장치 및 액세스 제어방법
US7975312B2 (en) Token passing technique for media playback devices
JP4142295B2 (ja) デジタルコンテンツの著作権侵害を防止するための方法と装置
US9866535B2 (en) Content reproduction system, information processing terminal, media server, secure device, and server secure device
JP5097130B2 (ja) 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム
US20080209231A1 (en) Contents Encryption Method, System and Method for Providing Contents Through Network Using the Encryption Method
US20120272065A1 (en) Authentication Method, Host Computer and Recording Medium
US9787479B2 (en) Challenge-response method and associated client device
US20100257360A1 (en) Method and apparatus for protecting illegal program copy of mobile communication terminal
US7995766B2 (en) Group subordinate terminal, group managing terminal, server, key updating system, and key updating method therefor
EP1143656B1 (en) Copyright protection system, encryption device, decryption device, and recording medium
KR20090064698A (ko) 신뢰 플랫폼 모듈을 이용한 drm 방법 및 시스템
KR20050121739A (ko) 디지털 권리를 관리하는 방법 및 시스템
JP4731034B2 (ja) 著作物保護システム、暗号化装置、復号化装置および記録媒体
JP2005303370A (ja) 半導体チップ、起動プログラム、半導体チッププログラム、記憶媒体、端末装置、及び情報処理方法
KR20110066826A (ko) 신뢰 플랫폼 모듈 기능을 이용한 cas/drm 소프트웨어의 다운로드 방법
KR20080063610A (ko) 이동통신 시스템에서 컨텐츠의 미리보기를 관리하는 장치및 방법
KR20220081068A (ko) 암복호화 키를 이용한 어플리케이션 보안 장치 및 방법
CN102301372B (zh) 用于代表存储卡接收用于内容的权利对象的方法和终端

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170418

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170501

R150 Certificate of patent or registration of utility model

Ref document number: 6146476

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150