説明

ホストコントローラ、情報処理装置および情報処理方法

【課題】秘匿情報を保持する装置において、この秘匿情報に対するセキュリティを向上させるとともに、この秘匿情報の改竄を防止する。
【解決手段】データ処理の内容を記述したディスクリプタと秘匿データとを格納するメモリと、メモリに接続され、ディスクリプタに従ったデータ処理とデータ転送に係る制御をする転送部と、を備え、ディスクリプタは、転送部の外部からメモリにおけるアドレスとは異なる識別子によって指定され、転送部の外部から識別子により指定されたディスクリプタに従ったデータ転送が、メモリに対するデータ転送の場合、転送部は、メモリに格納された秘匿データまたは転送部が一時的に保持する秘匿データを使用したデータ処理を行う場合にデータ転送を許可する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ホストコントローラ、情報処理装置および情報処理方法に関する。
【背景技術】
【0002】
現在では、パーソナルコンピュータ等の情報処理装置において、ホストコントローラを介してメモリカードを利用できるようにしたものが普及している。そのようなメモリカードの1種としてSD(Secure Digital)カードがある。このSDカードに対しSDホストコントローラを介してアクセスが行われる場合、SDホストコントローラとSDカード間で認証が行われる。例えば、特許文献1には、SDカードとホスト機器(外部装置)間の認証やデータ転送を行うシステムについて開示されている。このシステムでは、SDカードに制御部(MPU)を持たせ、その制御により認証が成功した場合に、情報データを出力可能にしている。これにより、SDカードのセキュリティを向上できるようにしている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−129938号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1の技術であっても、認証の際は、SDカードとホスト機器間でデータのやりとりをすることになる。また、一般的に、認証に使用する鍵データ等の秘匿情報は、認証を行う双方のデバイスで保持される。こうした秘匿情報は、通常、物理アドレス(または論理アドレス)で特定できるいずれかのメモリ空間に保持されるため、この秘匿情報を不正に利用される可能性があった。また、外部から秘匿情報を格納している場所を特定しにくい構成としても、そこから、またはそこへ単純にデータ転送するのでは、データ転送時にデータを不正に利用される可能性があった。
【0005】
本発明は、上記に鑑みてなされたものであって、秘匿情報を保持する装置において、この秘匿情報に対するセキュリティを向上させるとともに、この秘匿情報の改竄を防止することができるホストコントローラ、情報処理装置および情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
上述した課題を解決し、目的を達成するために、本発明は、データ処理の内容を記述したディスクリプタと秘匿データとを格納するメモリと、前記メモリに接続され、前記ディスクリプタに従ったデータ処理とデータ転送に係る制御をする転送部と、を備え、前記ディスクリプタは、前記転送部の外部から前記メモリにおけるアドレスとは異なる識別子によって指定され、前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送の場合、前記転送部は、前記メモリに格納された秘匿データまたは前記転送部が一時的に保持する秘匿データを使用したデータ処理を行う場合にデータ転送を許可することを特徴とする。
【0007】
また、本発明は、データ処理の内容を記述したディスクリプタと秘匿データとを格納するメモリと、前記メモリに接続され、前記ディスクリプタに従ったデータ処理とデータ転送に係る制御をする転送部と、を備える情報処理装置における情報処理方法であって、前記ディスクリプタは、前記転送部の外部からは前記メモリにおけるアドレスとは異なる識別子によって指定され、前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送の場合、前記転送部は、前記メモリに格納された秘匿データまたは前記転送部が一時的に保持する秘匿データを使用したデータ処理を行う場合にデータ転送を許可することを特徴とする。
【発明の効果】
【0008】
本発明によれば、秘匿情報を保持する装置において、この秘匿情報に対するセキュリティを向上させるとともに、この秘匿情報の改竄を防止することができる。
【図面の簡単な説明】
【0009】
【図1】図1は、本発明の一実施形態であるSDカードスロット装置の概略構成を示すブロック図である。
【図2】図2は、SDホストコントローラの概略構成を示すブロック図である。
【図3】図3は、暗号転送部の概略構成を示すブロック図である。
【図4】図4は、専用メモリのメモリ空間のマッピング例を示した図である。
【図5】図5は、SDカードスロット装置の動作を説明するフローチャートである。
【図6】図6は、制御部が行う転送可否判定処理の一例を説明するフローチャートである。
【図7】図7は、リード/ライトアクセス処理を説明するフローチャートである。
【図8】図8は、本発明を適用可能な情報処理装置の一例としてのパーソナルコンピュータの斜視図である。
【発明を実施するための形態】
【0010】
以下に、本発明の一実施の形態を、図面に基づいて詳細に説明する。なお、以下に説明する実施の形態により本発明が限定されるものではない。
【0011】
はじめに、本発明の一実施形態であるSDカードスロット装置100について、図1を用いて説明する。図1は、本発明の一実施形態であるSDカードスロット装置100の概略構成を示すブロック図である。
【0012】
ROM101には、SDカードスロット装置100を制御するためのプログラムが格納されている。このプログラムは、SDカードスロット装置100の起動時にRAM102にロードされ、CPU105により実行される。RAM102のメモリ空間は、CPU105が実行する処理のためのワーク領域としても使用される。なお、ROM101およびRAM102へのアクセスは、ROM101を制御するROMコントローラ103およびRAM102を制御するRAMコントローラ104を介して行われる。
【0013】
SDホストコントローラ106は、SDカードスロット107に挿入されたSDカード(同図にて図示せず)を認証する。SDホストコントローラ106とSDカードとで認証のために予め共有する鍵データは、SDホストコントローラ106ではこのコントローラに備わる専用メモリ(詳細は後述)にデバイスキーとして格納しており、SDカードでは、内蔵のメモリのシステム領域にメディアキーブロック(MKB)およびメディアIDとして格納される。SDホストコントローラ106とSDカード間の認証時のデータのやりとりには専用メモリに格納したディスクリプタを用いる。このディスクリプタを用いることで、専用メモリに格納された鍵データ等を秘匿することができる(詳細は後述)。
【0014】
なお、専用メモリに格納されるディスクリプタは、SDホストコントローラ106とSDカード間の認証時のデータのやりとりを行うためのもののみならず、その他のデータ転送に係る処理や暗号化/復号化などの処理を行うためにも用意される。そして各ディスクリプタにはそれらを識別するための識別子として固有の番号が割り付けられており、ディスクリプタはこの番号で指定される。また、専用メモリには、ディスクリプタが用いるその他必要なパラメータ(例えば、暗号化に用いる鍵データなど)も格納される。
【0015】
本SDカードスロット装置100と外部のホストデバイスとのデータのやりとり(例えば、SDカードへ書き込むライトデータの取得や、SDカードからのリードデータのホストデバイスへの出力など)は、ホストアクセス制御部108の制御によりホストインターフェース109を介して行う。ホストインターフェース109は、例えば、PCI(Peripheral Component Interconnect)、PCIe(PCI Express)、USB(Universal Serial Bus)に準拠したI/Oインターフェースとして構成される。
【0016】
続いて、SDホストコントローラ106の詳細を、図2を用いて説明する。図2は、SDホストコントローラ106の概略構成を示すブロック図である。
【0017】
SDホストコントローラ106は、システムバスインターフェース201と、このシステムバスインターフェース201を介してシステムバス110と内部バス210間のデータ転送を制御するシステムバスコントローラ202と、暗号転送部203(詳細は後述)と、専用メモリ204(詳細は後述)と、SDホストコントローラ106およびSDカード間のインターフェースとなるSDカードインターフェース205と、SDカードインターフェース205を制御するSDカードインターフェース制御部206とを内蔵している。システムバスコントローラ202と暗号転送部203とSDカードインターフェース制御部206は、内部バス210を介して接続されるが、専用メモリ204は、内部バス210を介さず暗号転送部203に直接接続されている。
【0018】
CPU105は、システムバス110経由で、SDホストコントローラ106のシステムバスインターフェース201およびシステムバスコントローラ202を介して内部バス210へアクセスする。システムバスコントローラ202は、システムバス110側からSDホストコントローラ106内部へのアクセスおよびSDホストコントローラ106内部からシステムバス110側へのアクセスを制御する。
【0019】
また、CPU105は、専用のファームウェアを実行することにより、暗号転送部203およびSDカードインターフェース制御部206を制御する。なお、暗号転送部203およびSDカードインターフェース制御部206は、それぞれの制御レジスタが内部バス210のアドレス空間にマッピングされており、CPU105は、これらの制御レジスタに必要な設定をすることにより、暗号転送部203およびSDカードインターフェース制御部206を制御する。なお、本実施形態において、本SDホストコントローラ106は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などによるハードウェアとして構成されるものとする。
【0020】
続いて、暗号転送部203の詳細を、図3をさらに用いて説明する。図3は、暗号転送部203の概略構成を示すブロック図である。
【0021】
暗号転送部203は、図3に示すように、制御部301、レジスタ部302、内部バスインターフェース303、内部バスアクセス部304、専用メモリインターフェース305、専用メモリアクセス部306、ディスクリプタ転送制御部307、ディスクリプタバッファ308、パラメータ転送制御部309、パラメータバッファ310、入力転送制御部311、入力バッファ312、出力バッファ313、出力転送制御部314、およびデータ処理部315を含んで構成される。
【0022】
内部バスアクセス部304は、バスマスタとして動作する。バスプロトコルは、AHB(Advanced High-performance Bus)、PCI(Peripheral Component Interconnect)、または、その他任意のプロトコルを利用することができる。この内部バスアクセス部304は、入力転送制御部311またはディスクリプタ転送制御部307またはパラメータ転送制御部309からデータ取得の要求を受けたとき、内部バスインターフェース303を介して内部バス210側から、指定されたアドレスからの指定されたサイズだけのデータをリードし、データを要求した入力転送制御部311またはディスクリプタ転送制御部307にそのデータを渡す。一方、出力転送制御部314からデータ出力の要求を受けたとき、内部バスアクセス部304は、出力転送制御部314から、出力するデータを受け取り、内部バスインターフェース303を介して内部バス210側に、指定されたアドレスへ順に出力データをライトする。
【0023】
専用メモリアクセス部306は、専用メモリ204へのアクセスを制御する。入力転送制御部311またはディスクリプタ転送制御部307またはパラメータ転送制御部309からのデータ取得の要求を受けたとき、専用メモリアクセス部306は、専用メモリインターフェース305を介して専用メモリ204から、指定されたアドレスから指定されたサイズだけのデータをリードし、データを要求した入力転送制御部311またはディスクリプタ転送制御部307またはパラメータ転送制御部309にデータを渡す。一方、出力転送制御部314からデータ書き込みの要求を受けたとき、専用メモリアクセス部306は、出力転送制御部314から、出力するデータを受け取り、専用メモリインターフェース305を介して専用メモリ204に、指定されたアドレスへ順に出力データをライトする。
【0024】
なお、専用メモリ204は、暗号鍵や認証用情報等の秘匿データからなるパラメータ、専用メモリ204のデータを使用して処理するためのディスクリプタ及びこのディスクリプタを参照するためのアドレステーブルが格納されている。専用メモリ204に格納しているディスクリプタは、外部から入力されるディスクリプタもしくは所定のレジスタ設定により番号で指定される。アドレステーブルにはその番号に対応する専用メモリ204内のディスクリプタの先頭アドレスが格納されており、指定された番号とこのアドレステーブルにより、ディスクリプタの記憶位置が特定される。図4に、専用メモリ204のメモリ空間のマッピング例を示す。同図に示す例では、専用メモリ204のメモリ空間には、0番地からアドレステーブル、ディスクリプタ、鍵等のパラメータおよびワーク領域が順に配置されている。もちろん、これらの配置は任意に定めることができる。
【0025】
入力転送制御部311は、入力バッファ312に空きがあれば、制御部301から指定された領域フラグに従って、内部バスアクセス部304または専用メモリアクセス部306に対し、データ取得の要求をする。このとき、制御部301により指定されたアドレスから指定されたサイズだけリードするように、内部バスアクセス部304または専用メモリアクセス部306に要求し、内部バスアクセス部304または専用メモリアクセス部306から取得したデータを入力バッファ312へライトする。このとき入力バッファ312が満杯の場合は、空きができるまでその動作を一時停止する。
【0026】
出力転送制御部314は、出力バッファ313にデータがあれば、出力バッファ313からそのデータをリードして制御部301から指定された領域フラグに従って、内部バスアクセス部304または専用メモリアクセス部306に対し、データ出力の要求をする。このとき、制御部301により指定されたアドレスから指定されたサイズだけライトする。このとき出力バッファ313が空であれば、出力バッファ313にデータがライトされるまでその動作を一時停止する。
【0027】
なお、ここでは、いずれかの転送制御部が、内部バスアクセス部304または専用メモリアクセス部306にリードの要求をした場合、それに応じて内部バスアクセス部304または専用メモリアクセス部306が、要求を出した転送制御部にリードしたデータを渡し、要求を出した転送制御部がそれに対応するバッファにライトする構成としているが、要求に応じて内部バスアクセス部304または専用メモリアクセス部306が直接、要求を出した転送制御部に対応するバッファにライトする構成としてもよい。
【0028】
データ処理部315は、入力バッファ312から入力されたデータを処理し、出力バッファ313へ出力する。このデータ処理部315が実行する処理の内、専用メモリ204と内部バス210との間の転送を許可する処理は、専用メモリ204に格納されたデータを鍵として使用する3DES/DES、AES、C2等のブロック暗号を用いた各種動作モードによる暗号化/復号化に加え、専用メモリに格納されたデータをハッシュ初期値とする、SHA−1、SHA−2、及びブロック暗号(AES,C2等)を用いたハッシュ処理である。なお、3DES/DESの暗号動作モードとしては、例えば、ECB(Electronic CodeBook)、CBC(Cipher Block Chaining)、CTR(CounTeR)がある。また、AESの暗号動作モードとしては、ECB、CBC、CTR、XTS−AESがある。また、C2の暗号動作モードとしては、ECB、C−CBCがある。また、本提案にて、「鍵」と表記する際、CBCモードのIV、CTRモードの初期値等、指定された動作モードで必要とするパラメータを含むものとする。
【0029】
なお、内部バス210または専用メモリ204からのデータ取得単位サイズおよびデータ処理部315で扱うデータの単位サイズについては、入力バッファ312および出力バッファ313で調整する。また、転送速度や処理速度の違いについても、入力バッファ312および出力バッファ313を介してフロー制御を行う。例えば、データバスの1ワードが内部バス210および専用メモリ204とも32ビットであって、AES ECB暗号処理をする場合、AESの処理単位データサイズ(1ブロック)は128ビットであるから、入力データ取得時には、入力転送制御部311が4ワードリードして入力バッファ312にライトする。そして、この入力バッファ312にライトされた4ワードのデータがデータ処理部315に入力され、データ処理部315がその1ブロック(つまり128ビット)を暗号化して出力バッファ313へライトする。その後、出力転送制御部314が1ワード(つまり32ビット)ずつ、出力先へライトする。
【0030】
また、入力バッファ312および出力バッファ313は、FIFO制御される。入力転送制御部311は、前述のように入力バッファ312に空きがある限り、転送対象のデータをリードして入力バッファ312にライトするように制御する。入力バッファ312が満杯であれば、入力転送制御部311は、入力バッファ312に空きができるまで転送を一時中断する。データ処理部315は、出力バッファ313に空きがあり、入力バッファ312に処理すべきデータがあればこのデータを取得して処理する。入力バッファ312に処理すべきデータがあっても出力バッファ313が満杯であれば、データ処理部315は、一時処理を中断し出力バッファ313に空きができるのを待つ。出力転送制御部314は、出力バッファ313にデータがあれば、出力バッファ313からリードしたデータを指定された出力アドレスへライトする。
【0031】
制御部301は、転送領域(専用メモリ204内部か外部か)の判定および転送の可否を判定する転送領域・処理判定機能を有している。専用メモリ204から暗号転送部203の外部へのデータ転送は、専用メモリ204に格納されているディスクリプタで、専用メモリ204に格納されている鍵を使用した暗号化/復号化処理を行う場合のみ、転送可と判定する。したがって、SDカードとの認証を行う場合には、そのためのデータ処理は暗号転送部203で行われ、やりとりされるデータは暗号転送部203において必ず暗号化されることとなる。
【0032】
一方、転送するデータが、内部バス210側から入力された鍵を使用した暗号化/復号化処理をしたデータや暗号化/復号化処理以外の処理をしたデータや元のままの処理をしないデータの場合、もしくはディスクリプタを内部バス210を介して外部からリードした場合、これらの場合の内部バス210側から専用メモリ204へのデータ転送や、専用メモリから内部バスへのデータ転送は不可と判定する。
【0033】
また、ハッシュ処理については、以下のように取り扱う。ハッシュ処理では、全体のうち先頭から途中までのデータを処理して、その時点でのハッシュ値をデータ処理部315内部(例えば、内蔵のレジスタ)に一時保存しておき、そのハッシュ値を初期値として後続のデータのハッシュ処理を再開する、という動作をすることができる。本実施形態では、その途中のハッシュ値を内部バス210に出力した場合は、データ処理部315内部に保存していたハッシュ値が、外部に知られた値となるから、その再開したハッシュ処理による専用メモリ204と内部バス210との間のデータ転送は禁止する。一方、専用メモリ204から外部(内部バス210側)への転送は、乱数生成器を暗号転送部203に内蔵する場合は専用メモリ204上の値をシード(入力値)とした乱数生成器の出力値の出力、および、一方向関数器を暗号転送部203に内蔵する場合は専用メモリ204上の秘匿値のみを入力値とした一方向関数の出力値の出力については、専用メモリ204の情報が外部(内部バス210側)に出ないことになるので、専用メモリ204と内部バス210との間のデータ転送を許可するものとする。
【0034】
以上のように構成されるSDカードスロット装置100の動作を、特に暗号転送部203を中心に、図5を用いて説明する。図5は、SDカードスロット装置100の動作を説明するフローチャートである。
【0035】
はじめに、CPU105が、システムバス110および内部バス210経由で、SDホストコントローラ106のレジスタ部302に、専用メモリ204に格納されているディスクリプタの番号とこのディスクリプタに必要なパラメータとを指定し、SDホストコントローラ106の暗号転送部203に起動を指示する(ステップS501)。
【0036】
暗号転送部203の制御部301は、ディスクリプタ転送制御部307を介して、CPU105により指示されたディスクリプタの番号に対応する専用メモリ204におけるアドレスからディスクリプタの先頭アドレスを取得するよう指示をする(ステップS502)。なお、本実施形態では、専用メモリ204中にディスクリプタの先頭アドレスを格納するアドレステーブルを有し、このアドレステーブル上のディスクリプタの番号に対応するアドレスに、ディスクリプタの先頭アドレスが格納されているものとする。
【0037】
上記指示を受けた専用メモリアクセス部306は、専用メモリ204のアドレステーブル領域から、指定されたアドレスにあるディスクリプタの先頭アドレスをリードする(ステップS503)。
【0038】
次いで、制御部301は、ディスクリプタ転送制御部307を介して、専用メモリアクセス部306に対し、リードしたディスクリプタの先頭アドレスから指定したディスクリプタサイズ分のディスクリプタデータをリードするように指示する(ステップS504)。
【0039】
続くステップS505で、ディスクリプタデータリードの指示を受けた専用メモリアクセス部306は、専用メモリ204中のディスクリプタの先頭アドレスから順に、指定されたディスクリプタのサイズ分だけディスクリプタデータをリードする。リードしたディスクリプタデータは、ディスクリプタバッファ308へ格納する。
【0040】
次いで、制御部301は、ディスクリプタバッファ308に格納されたディスクリプタを参照し、データの転送可否の判定(詳細は後述)を行う(ステップS506)。このとき、転送領域のアドレスが専用メモリ204を指しているか、内部バス210側を指しているかは、ディスクリプタバッファ308に格納されているディスクリプタの領域フラグで判断する。その結果、転送不可と判定された場合、制御部301は、CPU105にエラー通知を行いエラー終了とする。一方、データ転送可と判定された場合、次のステップS507へ移行する。
【0041】
ステップS507では、制御部301が、ディスクリプタで必要なパラメータが指定されているかを判定する。ディスクリプタで必要なパラメータが指定されている場合(本ステップでYES)、すなわち、ディスクリプタが、鍵等のパラメータを必要とするものであれば、制御部301は、パラメータ転送制御部309に、ディスクリプタで指定された専用メモリ204のアドレスからパラメータのリードを指示する(ステップS508)。
【0042】
続くステップS509で、制御部301からの指示を受けたパラメータ転送制御部309は、パラメータをリードするためにリードアクセスの制御を開始する(詳細は後述)。このときリードされたデータは、パラメータバッファ308に格納される。
【0043】
制御部301は、ステップS509でのパラメータリードの完了を待った後(ステップS510)、データ処理部315に、ディスクリプタに記載されている処理内容およびパラメータを指示する(ステップS511)。
【0044】
次いで、制御部301は、入力データがあるか判定し(ステップS512)、入力データがある場合(本ステップでYES)、入力転送制御部311に、ディスクリプタの領域フラグに従って専用メモリアクセス部306もしくは内部バスアクセス部304にデータをリードするよう指示をだす。一方、入力データがない場合は(本ステップでNO)、ステップS515へ移行する。
【0045】
制御部301から上記指示を受けた入力転送制御部311は、入力データをリードするためにリードアクセスの制御を開始する(詳細は後述)(ステップS513)。リードされた入力データは、入力バッファ312に格納される。そして、入力データは、この入力バッファ312を介してデータ処理部315へ入力される。つまり、データ処理部315が処理するデータは、入力転送制御部311の制御によってリードされ、入力バッファ312を介してデータ処理部315へ入力される。
【0046】
データ処理部315は、入力されたデータに対し、ステップS511で制御部301から渡されたディスクリプタに記載されている処理内容およびパラメータに従って処理を施し、処理後のデータを順次、出力バッファ313へ出力する(ステップS514)。
【0047】
続くステップS515で、制御部301は、出力データがあるか判定する。出力データがある場合(本ステップでYES)、出力転送制御部314に、ディスクリプタの領域フラグに従って専用メモリアクセス部306もしくは内部バスアクセス部304にデータをライトさせるように指示をだす。一方、出力データがない場合は(本ステップでNO)、ステップS517へ移行する。
【0048】
制御部301から上記指示を受けた出力転送制御部314は、出力データをライトするためにライトアクセスの制御を開始する(詳細は後述)(ステップS516)。
【0049】
なお、総転送データサイズは、入力バッファ312、出力バッファ313、及び、データ処理部315の1処理単位データサイズよりも大きなサイズを指定することもでき、その場合には、上記の、ステップS513、S514、S515、S516で開始された各処理は並行動作する。
【0050】
ステップS517では、制御部301は、データ転送の完了を待って、一連の処理を終了する。
【0051】
ここで、ステップS506における転送可否判定について、図6を用いて説明する。図6は、制御部301が行う転送可否判定処理の一例を説明するフローチャートである。
【0052】
はじめに、データ転送が、専用メモリ204から内部バス210側(すなわち、暗号転送部203の外部)への転送であるか否か、すなわち、専用メモリ204からリードし、内部バス210側へライトする転送であるか否か判定する(ステップS601)。専用メモリ204から内部バス210側への転送である場合(本ステップでYES)、ステップS603へ移行し、そうでない場合、ステップS602へ移行する。
【0053】
ステップS602では、さらに、データ転送が、内部バス210側(暗号転送部203の外部)から専用メモリ204への転送であるか否か、すなわち、内部バス210側からリードし、専用メモリ204へライトする転送であるか判定する。ここで、データ転送が、内部バス210側(暗号転送部203の外部)から専用メモリ204への転送でないと判定されると(本ステップでNO)、転送可として転送可否判定を終了する。すなわち、専用メモリ204から内部バス210側への転送でもなく、内部バス210側から専用メモリ204への転送でもない場合に、転送可とする。一方、データ転送が、内部バス210側(暗号転送部203の外部)から専用メモリ204への転送であると判定されると(本ステップでYES)、ステップS603へ移行する。
【0054】
ステップS603では、データ処理部315で行われるデータ処理が、専用メモリ204に格納されている鍵を使用した暗号化/復号化処理であるか否か判定する。ここで、データ処理部315で行われる暗号化/復号化処理が、専用メモリ204に格納されている鍵を使用した暗号化/復号化処理であると判定されると(本ステップでYES)、転送可として転送可否判定を終了する。一方、そうでない場合は(本ステップでNO)、ステップS604へ移行する。
【0055】
ステップS604では、データ処理部315で行われるデータ処理が新規のハッシュ処理であって、専用メモリ204に格納されている値が初期値であるか否か判定する。ここで、データ処理部315で行われるハッシュ処理が新規のハッシュ処理であって、専用メモリ204に格納されている値が初期値であると判定されると(本ステップでYES)、転送可として転送可否判定を終了する。一方、そうでない場合は(本ステップでNO)、ステップS605へ移行する。
【0056】
ステップS605では、データ処理部315で行われるデータ処理が、乱数生成、もしくは一方向関数処理であり、入力値がすべて専用メモリ204に格納されている値であるか否か判定する。ここで、データ処理部315で行われるデータ処理が乱数生成、もしくは一方向関数処理であり、入力値がすべて専用メモリ204に格納されている値である場合(本ステップでYES)、転送可として転送可否判定を終了する。一方、そうでない場合は(本ステップでNO)、転送不可として転送可否判定を終了する。以上のようにして、転送可否判定を行う。もちろん、転送可否判定に係る処理は、図6に例示したものに限定されるものではない。
【0057】
続いて、ステップS509およびS513のリードアクセス、S516のライトアクセスについて、図7を用いて説明する。図7は、リード/ライトアクセス処理を説明するフローチャートである。なお、以下では、リードアクセスの場合に、内部バスアクセス部304および専用メモリアクセス部306が、指示を出した転送制御部に対応するバッファに直接データをライトするものとして説明する。
【0058】
まず、データをリードするデータの場所、またはデータをライトするデータの場所が、専用メモリ204内か、内部バス210側かを、前述の領域フラグを基に判定する(ステップS701)。
【0059】
上記データの場所が、専用メモリ204の場合、ステップS702へ移行し、制御部301から指示を受けた転送制御部(パラメータ転送制御部309または入力転送制御部311または出力転送制御部314)が、ディスクリプタで指定されたアドレスおよびサイズでの、データのリード/ライトを専用メモリアクセス部306に指示する。
【0060】
上記指示を受けた専用メモリアクセス部306は、転送制御部からの指示に応じて、専用メモリ204からデータをリードし転送制御部に対応するバッファへデータをライトするか、転送制御部からの指示に応じて、転送制御部に対応するバッファからデータをリードし専用メモリ204へデータをライトする(ステップS703)。
【0061】
一方、上記データの場所が、内部バス210側の場合、ステップS704へ移行し、制御部301から指示を受けた転送制御部(入力転送制御部311または出力転送制御部314)が、ディスクリプタで指定されたアドレスおよびサイズでの、データのリード/ライトを内部バスアクセス部304に指示する。
【0062】
上記指示を受けた内部バスアクセス部304は、転送制御部からの指示に応じて、内部バス210側からデータをリードし転送制御部に対応するバッファへデータをライトするか、転送制御部からの指示に応じて、転送制御部に対応するバッファからデータをリードし内部バス210側へデータをライトする(ステップS705)。
【0063】
以上、本実施形態のSDカードスロット装置100の構成および動作の詳細を説明した。本実施形態では、専用メモリ204から暗号転送部203の外部への転送では必ず、外部からは直接そのアドレスを指定することができない専用メモリ204に格納されているディスクリプタを番号で指定すること、および、指定されたディスクリプタに従った制御により専用メモリ204に格納されている(不正な手段では知りえない)鍵を使用してデータを暗号化することによって、専用メモリ204内部の秘匿情報を保護することができる。
【0064】
また、専用メモリ204に格納されているディスクリプタでは、上記のように、暗号転送部203の外部から専用メモリ204への転送では、必ずこの専用メモリ204に格納されているディスクリプタを用いて、専用メモリ204に格納されている鍵を使用して暗号化するように指定される。また、暗号転送部203の外部から専用メモリ204への転送では、専用メモリ204に格納されている鍵を使用しない転送を禁止している。このようにすることで、専用メモリ204内のデータを、改竄及び改竄を利用した秘匿情報の危殆化からも保護できるようになった。
【0065】
なお、上述のSDカードスロット装置100では、その内部にCPU105を持たせ、この装置の制御を行っているが、SDカードスロット装置100において、装置内のCPU105を省略し、ホストインターフェース109を介して接続されるホスト装置のCPU上で動作するファームウェアによりSDカードスロット装置100を制御するようにしてもよい。また、上記では、SDカードスロット装置100としての実施形態を説明したが、これに限らず、その他のメモリカード用のカードスロット装置やホストコントローラ、デバイス間のデータ転送用の制御装置等に対しても、上述の暗号転送部203および専用メモリ204を備えるように構成することができる。
【0066】
(その他の実施形態)
続いて、本発明を適用可能な情報処理装置の一例としてパーソナルコンピュータを図8に例示し、その概要を説明する。図8は、本発明を適用可能な情報処理装置の一例としてのパーソナルコンピュータの斜視図である。
【0067】
PC800は、本体801と、表示ユニット802とを備えている。本体801は、キーボード803と、ポインティングデバイスであるタッチパッド804とを備えている。本体801内部には、メイン回路基板、同図符号100で示す破線部分のSD(Secure Digital)カードスロット装置や、ODDユニット(Optical Disk Device)、SDカードスロット等が収容されている。
【0068】
SDカードスロットは、本体801の周壁に設けられている。この周壁には、SDカードスロット用の開口部805が設けられている。ユーザは、この開口部805を通じて本体801の外部からSDカード810をカードスロットに挿抜することが可能である。
【0069】
PC800には、SDカードスロット装置100に備わる前述のSDホストコントローラ106を制御するための専用のデバイスドライバ(ホストドライバ)がインストールされており、このホストドライバとSDホストコントローラ106により、SDカードスロットに装着されたSDカード810に対するリード/ライト処理やキャリブレーション処理等を行う。
【0070】
このように、その他の実施形態として、パーソナルコンピュータ等の情報処理装置に、SDカードスロット装置100、またはSDホストコントローラ106、または暗号転送部203および専用メモリ204を組み込むことで、当該情報処理装置におけるセキュリティを向上させることができる。
【0071】
なお、本発明を適用可能な情報処理装置としては、上記のようなパーソナルコンピュータに限らず、携帯電話、PDA(Personal Digital Assistant)、デジタルスチルカメラ、デジタルビデオカメラ、デジタルテレビジョン受像機等も挙げることができる。
【符号の説明】
【0072】
100…SDカードスロット装置、101…ROM、102…RAM、103…ROMコントローラ、104…RAMコントローラ、105…CPU、106…SDホストコントローラ、107…SDカードスロット、108…ホストアクセス制御部、109…ホストインターフェース、110…システムバス、201…システムバスインターフェース、202…システムバスコントローラ、203…暗号転送部、204…専用メモリ、205…SDカードインターフェース、206…SDカードインターフェース制御部、210…内部バス、301…制御部、302…レジスタ部、303…内部バスインターフェース、304…内部バスアクセス部、305…専用メモリインターフェース、306…専用メモリアクセス部、307…ディスクリプタ転送制御部、308…ディスクリプタバッファ、309…パラメータ転送制御部、310…パラメータバッファ、312…入力バッファ、313…出力バッファ、314…出力転送制御部、315…データ処理部、800…パーソナルコンピュータ(PC)、801…本体、802…表示ユニット、803…キーボード、804…タッチパッド、805…開口部、810…SDカード

【特許請求の範囲】
【請求項1】
データ処理の内容を記述したディスクリプタと秘匿データとを格納するメモリと、
前記メモリに接続され、前記ディスクリプタに従ったデータ処理とデータ転送に係る制御をする転送部と、
を備え、
前記ディスクリプタは、前記転送部の外部から前記メモリにおけるアドレスとは異なる識別子によって指定され、
前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送の場合、前記転送部は、前記メモリに格納された秘匿データまたは前記転送部が一時的に保持する秘匿データを使用したデータ処理を行う場合にデータ転送を許可する
ことを特徴とするホストコントローラ。
【請求項2】
前記秘匿データは、前記メモリに格納された、暗号化/復号化に使用する鍵データであって、前記転送部は、前記メモリから前記転送部の外部へのデータ転送の際、前記メモリに格納された鍵データを使用して転送対象のデータを暗号化した上で外部に転送することを特徴とする請求項1に記載のホストコントローラ。
【請求項3】
前記秘匿データは、前記メモリに格納された、暗号化/復号化に使用する鍵データであって、前記転送部の外部から前記メモリへのデータ転送については、前記転送部は、前記メモリに格納された鍵データに対応する鍵データを使用し暗号化されたデータ転送は許可することを特徴とする請求項1に記載のホストコントローラ。
【請求項4】
前記秘匿データは、前記メモリに格納された、メモリカードとの認証に使用する鍵データであることを特徴とする請求項1に記載のホストコントローラ。
【請求項5】
前記秘匿データは、前記転送部において行うハッシュ処理に使用するハッシュ初期値であることを特徴とする請求項1に記載のホストコントローラ。
【請求項6】
前記秘匿データは、前記メモリに格納された、前記転送部において行う乱数生成処理または一方向関数処理の入力値として用いる値であることを特徴とする請求項1に記載のホストコントローラ。
【請求項7】
前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送でない場合、前記転送部は、データ転送を許可することを特徴とする請求項1から請求項6のいずれか1項に記載のホストコントローラ。
【請求項8】
データ処理の内容を記述したディスクリプタと秘匿データとを格納するメモリと、
前記メモリに接続され、前記ディスクリプタに従ったデータ処理とデータ転送に係る制御をする転送部と、
を備え、
前記ディスクリプタは、前記転送部の外部からは前記メモリにおけるアドレスとは異なる識別子によってのみ指定され、
前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送の場合、前記転送部は、前記メモリに格納された秘匿データまたは前記転送部が一時的に保持する秘匿データを使用したデータ処理を行う場合にデータ転送を許可する
ことを特徴とする情報処理装置。
【請求項9】
前記秘匿データは、前記メモリに格納された、暗号化/復号化に使用する鍵データであって、前記転送部は、前記メモリから前記転送部の外部へのデータ転送の際、前記メモリに格納された鍵データを使用して転送対象のデータを暗号化した上で外部に転送することを特徴とする請求項8に記載の情報処理装置。
【請求項10】
前記秘匿データは、前記メモリに格納された、暗号化/復号化に使用する鍵データであって、前記転送部の外部から前記メモリへのデータ転送については、前記転送部は、前記メモリに格納された鍵データに対応する鍵データを使用し暗号化されたデータ転送に限り許可することを特徴とする請求項8に記載の情報処理装置。
【請求項11】
前記秘匿データは、前記メモリに格納された、メモリカードとの認証に使用する鍵データであることを特徴とする請求項8に記載の情報処理装置。
【請求項12】
前記秘匿データは、前記転送部において行うハッシュ処理に使用するハッシュ初期値であることを特徴とする請求項8に記載の情報処理装置。
【請求項13】
前記秘匿データは、前記メモリに格納された、前記転送部において行う乱数生成処理または一方向関数処理の入力値として用いる値であることを特徴とする請求項8に記載の情報処理装置。
【請求項14】
前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送でない場合、前記転送部は、データ転送を許可することを特徴とする請求項8から請求項13のいずれか1項に記載の情報処理装置。
【請求項15】
データ処理の内容を記述したディスクリプタと秘匿データとを格納するメモリと、前記メモリに接続され、前記ディスクリプタに従ったデータ処理とデータ転送に係る制御をする転送部と、を備える情報処理装置における情報処理方法であって、
前記ディスクリプタは、前記転送部の外部からは前記メモリにおけるアドレスとは異なる識別子によって指定され、
前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送の場合、前記転送部は、前記メモリに格納された秘匿データまたは前記転送部が一時的に保持する秘匿データを使用したデータ処理を行う場合にデータ転送を許可する
ことを特徴とする情報処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−129073(P2011−129073A)
【公開日】平成23年6月30日(2011.6.30)
【国際特許分類】
【出願番号】特願2009−289837(P2009−289837)
【出願日】平成21年12月21日(2009.12.21)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】