(57)【要約】【課題】秘匿情報を保持する装置において、この秘匿情報に対するセキュリティを向上させるとともに、この秘匿情報の改竄を防止する。【解決手段】データ処理の内容を記述したディスクリプタと秘匿データとを格納するメモリと、メモリに接続され、ディスクリプタに従ったデータ処理とデータ転送に係る制御をする転送部と、を備え、ディスクリプタは、転送部の外部からメモリにおけるアドレスとは異なる識別子によって指定され、転送部の外部から識別子により指定されたディスクリプタに従ったデータ転送が、メモリに対するデータ転送の場合、転送部は、メモリに格納された秘匿データまたは転送部が一時的に保持する秘匿データを使用したデータ処理を行う場合にデータ転送を許可する。【選択図】図５
2011129073.tif 000002
【特許請求の範囲】
【請求項１】
データ処理の内容を記述したディスクリプタと秘匿データとを格納するメモリと、
前記メモリに接続され、前記ディスクリプタに従ったデータ処理とデータ転送に係る制御をする転送部と、
を備え、
前記ディスクリプタは、前記転送部の外部から前記メモリにおけるアドレスとは異なる識別子によって指定され、
前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送の場合、前記転送部は、前記メモリに格納された秘匿データまたは前記転送部が一時的に保持する秘匿データを使用したデータ処理を行う場合にデータ転送を許可する
ことを特徴とするホストコントローラ。
【請求項２】
前記秘匿データは、前記メモリに格納された、暗号化／復号化に使用する鍵データであって、前記転送部は、前記メモリから前記転送部の外部へのデータ転送の際、前記メモリに格納された鍵データを使用して転送対象のデータを暗号化した上で外部に転送することを特徴とする請求項１に記載のホストコントローラ。
【請求項３】
前記秘匿データは、前記メモリに格納された、暗号化／復号化に使用する鍵データであって、前記転送部の外部から前記メモリへのデータ転送については、前記転送部は、前記メモリに格納された鍵データに対応する鍵データを使用し暗号化されたデータ転送は許可することを特徴とする請求項１に記載のホストコントローラ。
【請求項４】
前記秘匿データは、前記メモリに格納された、メモリカードとの認証に使用する鍵データであることを特徴とする請求項１に記載のホストコントローラ。
【請求項５】
前記秘匿データは、前記転送部において行うハッシュ処理に使用するハッシュ初期値であることを特徴とする請求項１に記載のホストコントローラ。
【請求項６】
前記秘匿データは、前記メモリに格納された、前記転送部において行う乱数生成処理または一方向関数処理の入力値として用いる値であることを特徴とする請求項１に記載のホストコントローラ。
【請求項７】
前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送でない場合、前記転送部は、データ転送を許可することを特徴とする請求項１から請求項６のいずれか１項に記載のホストコントローラ。
【請求項８】
データ処理の内容を記述したディスクリプタと秘匿データとを格納するメモリと、
前記メモリに接続され、前記ディスクリプタに従ったデータ処理とデータ転送に係る制御をする転送部と、
を備え、
前記ディスクリプタは、前記転送部の外部からは前記メモリにおけるアドレスとは異なる識別子によってのみ指定され、
前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送の場合、前記転送部は、前記メモリに格納された秘匿データまたは前記転送部が一時的に保持する秘匿データを使用したデータ処理を行う場合にデータ転送を許可する
ことを特徴とする情報処理装置。
【請求項９】
前記秘匿データは、前記メモリに格納された、暗号化／復号化に使用する鍵データであって、前記転送部は、前記メモリから前記転送部の外部へのデータ転送の際、前記メモリに格納された鍵データを使用して転送対象のデータを暗号化した上で外部に転送することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記秘匿データは、前記メモリに格納された、暗号化／復号化に使用する鍵データであって、前記転送部の外部から前記メモリへのデータ転送については、前記転送部は、前記メモリに格納された鍵データに対応する鍵データを使用し暗号化されたデータ転送に限り許可することを特徴とする請求項８に記載の情報処理装置。
【請求項１１】
前記秘匿データは、前記メモリに格納された、メモリカードとの認証に使用する鍵データであることを特徴とする請求項８に記載の情報処理装置。
【請求項１２】
前記秘匿データは、前記転送部において行うハッシュ処理に使用するハッシュ初期値であることを特徴とする請求項８に記載の情報処理装置。
【請求項１３】
前記秘匿データは、前記メモリに格納された、前記転送部において行う乱数生成処理または一方向関数処理の入力値として用いる値であることを特徴とする請求項８に記載の情報処理装置。
【請求項１４】
前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送でない場合、前記転送部は、データ転送を許可することを特徴とする請求項８から請求項１３のいずれか１項に記載の情報処理装置。
【請求項１５】
データ処理の内容を記述したディスクリプタと秘匿データとを格納するメモリと、前記メモリに接続され、前記ディスクリプタに従ったデータ処理とデータ転送に係る制御をする転送部と、を備える情報処理装置における情報処理方法であって、
前記ディスクリプタは、前記転送部の外部からは前記メモリにおけるアドレスとは異なる識別子によって指定され、
前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送の場合、前記転送部は、前記メモリに格納された秘匿データまたは前記転送部が一時的に保持する秘匿データを使用したデータ処理を行う場合にデータ転送を許可する
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストコントローラ、情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
現在では、パーソナルコンピュータ等の情報処理装置において、ホストコントローラを介してメモリカードを利用できるようにしたものが普及している。そのようなメモリカードの１種としてＳＤ（Secure Digital）カードがある。このＳＤカードに対しＳＤホストコントローラを介してアクセスが行われる場合、ＳＤホストコントローラとＳＤカード間で認証が行われる。例えば、特許文献１には、ＳＤカードとホスト機器（外部装置）間の認証やデータ転送を行うシステムについて開示されている。このシステムでは、ＳＤカードに制御部（MPU）を持たせ、その制御により認証が成功した場合に、情報データを出力可能にしている。これにより、ＳＤカードのセキュリティを向上できるようにしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１２９９３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の技術であっても、認証の際は、ＳＤカードとホスト機器間でデータのやりとりをすることになる。また、一般的に、認証に使用する鍵データ等の秘匿情報は、認証を行う双方のデバイスで保持される。こうした秘匿情報は、通常、物理アドレス（または論理アドレス）で特定できるいずれかのメモリ空間に保持されるため、この秘匿情報を不正に利用される可能性があった。また、外部から秘匿情報を格納している場所を特定しにくい構成としても、そこから、またはそこへ単純にデータ転送するのでは、データ転送時にデータを不正に利用される可能性があった。
【０００５】
本発明は、上記に鑑みてなされたものであって、秘匿情報を保持する装置において、この秘匿情報に対するセキュリティを向上させるとともに、この秘匿情報の改竄を防止することができるホストコントローラ、情報処理装置および情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、データ処理の内容を記述したディスクリプタと秘匿データとを格納するメモリと、前記メモリに接続され、前記ディスクリプタに従ったデータ処理とデータ転送に係る制御をする転送部と、を備え、前記ディスクリプタは、前記転送部の外部から前記メモリにおけるアドレスとは異なる識別子によって指定され、前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送の場合、前記転送部は、前記メモリに格納された秘匿データまたは前記転送部が一時的に保持する秘匿データを使用したデータ処理を行う場合にデータ転送を許可することを特徴とする。
【０００７】
また、本発明は、データ処理の内容を記述したディスクリプタと秘匿データとを格納するメモリと、前記メモリに接続され、前記ディスクリプタに従ったデータ処理とデータ転送に係る制御をする転送部と、を備える情報処理装置における情報処理方法であって、前記ディスクリプタは、前記転送部の外部からは前記メモリにおけるアドレスとは異なる識別子によって指定され、前記転送部の外部から前記識別子により指定された前記ディスクリプタに従ったデータ転送が、前記メモリに対するデータ転送の場合、前記転送部は、前記メモリに格納された秘匿データまたは前記転送部が一時的に保持する秘匿データを使用したデータ処理を行う場合にデータ転送を許可することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、秘匿情報を保持する装置において、この秘匿情報に対するセキュリティを向上させるとともに、この秘匿情報の改竄を防止することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の一実施形態であるＳＤカードスロット装置の概略構成を示すブロック図である。
【図２】図２は、ＳＤホストコントローラの概略構成を示すブロック図である。
【図３】図３は、暗号転送部の概略構成を示すブロック図である。
【図４】図４は、専用メモリのメモリ空間のマッピング例を示した図である。
【図５】図５は、ＳＤカードスロット装置の動作を説明するフローチャートである。
【図６】図６は、制御部が行う転送可否判定処理の一例を説明するフローチャートである。
【図７】図７は、リード／ライトアクセス処理を説明するフローチャートである。
【図８】図８は、本発明を適用可能な情報処理装置の一例としてのパーソナルコンピュータの斜視図である。
【発明を実施するための形態】
【００１０】
以下に、本発明の一実施の形態を、図面に基づいて詳細に説明する。なお、以下に説明する実施の形態により本発明が限定されるものではない。
【００１１】
はじめに、本発明の一実施形態であるＳＤカードスロット装置１００について、図１を用いて説明する。図１は、本発明の一実施形態であるＳＤカードスロット装置１００の概略構成を示すブロック図である。
【００１２】
ＲＯＭ１０１には、ＳＤカードスロット装置１００を制御するためのプログラムが格納されている。このプログラムは、ＳＤカードスロット装置１００の起動時にＲＡＭ１０２にロードされ、ＣＰＵ１０５により実行される。ＲＡＭ１０２のメモリ空間は、ＣＰＵ１０５が実行する処理のためのワーク領域としても使用される。なお、ＲＯＭ１０１およびＲＡＭ１０２へのアクセスは、ＲＯＭ１０１を制御するＲＯＭコントローラ１０３およびＲＡＭ１０２を制御するＲＡＭコントローラ１０４を介して行われる。
【００１３】
ＳＤホストコントローラ１０６は、ＳＤカードスロット１０７に挿入されたＳＤカード（同図にて図示せず）を認証する。ＳＤホストコントローラ１０６とＳＤカードとで認証のために予め共有する鍵データは、ＳＤホストコントローラ１０６ではこのコントローラに備わる専用メモリ（詳細は後述）にデバイスキーとして格納しており、ＳＤカードでは、内蔵のメモリのシステム領域にメディアキーブロック（MKB）およびメディアＩＤとして格納される。ＳＤホストコントローラ１０６とＳＤカード間の認証時のデータのやりとりには専用メモリに格納したディスクリプタを用いる。このディスクリプタを用いることで、専用メモリに格納された鍵データ等を秘匿することができる（詳細は後述）。
【００１４】
なお、専用メモリに格納されるディスクリプタは、ＳＤホストコントローラ１０６とＳＤカード間の認証時のデータのやりとりを行うためのもののみならず、その他のデータ転送に係る処理や暗号化／復号化などの処理を行うためにも用意される。そして各ディスクリプタにはそれらを識別するための識別子として固有の番号が割り付けられており、ディスクリプタはこの番号で指定される。また、専用メモリには、ディスクリプタが用いるその他必要なパラメータ（例えば、暗号化に用いる鍵データなど）も格納される。
【００１５】
本ＳＤカードスロット装置１００と外部のホストデバイスとのデータのやりとり（例えば、ＳＤカードへ書き込むライトデータの取得や、ＳＤカードからのリードデータのホストデバイスへの出力など）は、ホストアクセス制御部１０８の制御によりホストインターフェース１０９を介して行う。ホストインターフェース１０９は、例えば、ＰＣＩ（Peripheral Component Interconnect）、ＰＣＩｅ（PCI Express）、ＵＳＢ（Universal Serial Bus）に準拠したＩ／Ｏインターフェースとして構成される。
【００１６】
続いて、ＳＤホストコントローラ１０６の詳細を、図２を用いて説明する。図２は、ＳＤホストコントローラ１０６の概略構成を示すブロック図である。
【００１７】
ＳＤホストコントローラ１０６は、システムバスインターフェース２０１と、このシステムバスインターフェース２０１を介してシステムバス１１０と内部バス２１０間のデータ転送を制御するシステムバスコントローラ２０２と、暗号転送部２０３（詳細は後述）と、専用メモリ２０４（詳細は後述）と、ＳＤホストコントローラ１０６およびＳＤカード間のインターフェースとなるＳＤカードインターフェース２０５と、ＳＤカードインターフェース２０５を制御するＳＤカードインターフェース制御部２０６とを内蔵している。システムバスコントローラ２０２と暗号転送部２０３とＳＤカードインターフェース制御部２０６は、内部バス２１０を介して接続されるが、専用メモリ２０４は、内部バス２１０を介さず暗号転送部２０３に直接接続されている。
【００１８】
ＣＰＵ１０５は、システムバス１１０経由で、ＳＤホストコントローラ１０６のシステムバスインターフェース２０１およびシステムバスコントローラ２０２を介して内部バス２１０へアクセスする。システムバスコントローラ２０２は、システムバス１１０側からＳＤホストコントローラ１０６内部へのアクセスおよびＳＤホストコントローラ１０６内部からシステムバス１１０側へのアクセスを制御する。
【００１９】
また、ＣＰＵ１０５は、専用のファームウェアを実行することにより、暗号転送部２０３およびＳＤカードインターフェース制御部２０６を制御する。なお、暗号転送部２０３およびＳＤカードインターフェース制御部２０６は、それぞれの制御レジスタが内部バス２１０のアドレス空間にマッピングされており、ＣＰＵ１０５は、これらの制御レジスタに必要な設定をすることにより、暗号転送部２０３およびＳＤカードインターフェース制御部２０６を制御する。なお、本実施形態において、本ＳＤホストコントローラ１０６は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などによるハードウェアとして構成されるものとする。
【００２０】
続いて、暗号転送部２０３の詳細を、図３をさらに用いて説明する。図３は、暗号転送部２０３の概略構成を示すブロック図である。
【００２１】
暗号転送部２０３は、図３に示すように、制御部３０１、レジスタ部３０２、内部バスインターフェース３０３、内部バスアクセス部３０４、専用メモリインターフェース３０５、専用メモリアクセス部３０６、ディスクリプタ転送制御部３０７、ディスクリプタバッファ３０８、パラメータ転送制御部３０９、パラメータバッファ３１０、入力転送制御部３１１、入力バッファ３１２、出力バッファ３１３、出力転送制御部３１４、およびデータ処理部３１５を含んで構成される。
【００２２】
内部バスアクセス部３０４は、バスマスタとして動作する。バスプロトコルは、ＡＨＢ（Advanced High-performance Bus）、ＰＣＩ（Peripheral Component Interconnect）、または、その他任意のプロトコルを利用することができる。この内部バスアクセス部３０４は、入力転送制御部３１１またはディスクリプタ転送制御部３０７またはパラメータ転送制御部３０９からデータ取得の要求を受けたとき、内部バスインターフェース３０３を介して内部バス２１０側から、指定されたアドレスからの指定されたサイズだけのデータをリードし、データを要求した入力転送制御部３１１またはディスクリプタ転送制御部３０７にそのデータを渡す。一方、出力転送制御部３１４からデータ出力の要求を受けたとき、内部バスアクセス部３０４は、出力転送制御部３１４から、出力するデータを受け取り、内部バスインターフェース３０３を介して内部バス２１０側に、指定されたアドレスへ順に出力データをライトする。
【００２３】
専用メモリアクセス部３０６は、専用メモリ２０４へのアクセスを制御する。入力転送制御部３１１またはディスクリプタ転送制御部３０７またはパラメータ転送制御部３０９からのデータ取得の要求を受けたとき、専用メモリアクセス部３０６は、専用メモリインターフェース３０５を介して専用メモリ２０４から、指定されたアドレスから指定されたサイズだけのデータをリードし、データを要求した入力転送制御部３１１またはディスクリプタ転送制御部３０７またはパラメータ転送制御部３０９にデータを渡す。一方、出力転送制御部３１４からデータ書き込みの要求を受けたとき、専用メモリアクセス部３０６は、出力転送制御部３１４から、出力するデータを受け取り、専用メモリインターフェース３０５を介して専用メモリ２０４に、指定されたアドレスへ順に出力データをライトする。
【００２４】
なお、専用メモリ２０４は、暗号鍵や認証用情報等の秘匿データからなるパラメータ、専用メモリ２０４のデータを使用して処理するためのディスクリプタ及びこのディスクリプタを参照するためのアドレステーブルが格納されている。専用メモリ２０４に格納しているディスクリプタは、外部から入力されるディスクリプタもしくは所定のレジスタ設定により番号で指定される。アドレステーブルにはその番号に対応する専用メモリ２０４内のディスクリプタの先頭アドレスが格納されており、指定された番号とこのアドレステーブルにより、ディスクリプタの記憶位置が特定される。図４に、専用メモリ２０４のメモリ空間のマッピング例を示す。同図に示す例では、専用メモリ２０４のメモリ空間には、０番地からアドレステーブル、ディスクリプタ、鍵等のパラメータおよびワーク領域が順に配置されている。もちろん、これらの配置は任意に定めることができる。
【００２５】
入力転送制御部３１１は、入力バッファ３１２に空きがあれば、制御部３０１から指定された領域フラグに従って、内部バスアクセス部３０４または専用メモリアクセス部３０６に対し、データ取得の要求をする。このとき、制御部３０１により指定されたアドレスから指定されたサイズだけリードするように、内部バスアクセス部３０４または専用メモリアクセス部３０６に要求し、内部バスアクセス部３０４または専用メモリアクセス部３０６から取得したデータを入力バッファ３１２へライトする。このとき入力バッファ３１２が満杯の場合は、空きができるまでその動作を一時停止する。
【００２６】
出力転送制御部３１４は、出力バッファ３１３にデータがあれば、出力バッファ３１３からそのデータをリードして制御部３０１から指定された領域フラグに従って、内部バスアクセス部３０４または専用メモリアクセス部３０６に対し、データ出力の要求をする。このとき、制御部３０１により指定されたアドレスから指定されたサイズだけライトする。このとき出力バッファ３１３が空であれば、出力バッファ３１３にデータがライトされるまでその動作を一時停止する。
【００２７】
なお、ここでは、いずれかの転送制御部が、内部バスアクセス部３０４または専用メモリアクセス部３０６にリードの要求をした場合、それに応じて内部バスアクセス部３０４または専用メモリアクセス部３０６が、要求を出した転送制御部にリードしたデータを渡し、要求を出した転送制御部がそれに対応するバッファにライトする構成としているが、要求に応じて内部バスアクセス部３０４または専用メモリアクセス部３０６が直接、要求を出した転送制御部に対応するバッファにライトする構成としてもよい。
【００２８】
データ処理部３１５は、入力バッファ３１２から入力されたデータを処理し、出力バッファ３１３へ出力する。このデータ処理部３１５が実行する処理の内、専用メモリ２０４と内部バス２１０との間の転送を許可する処理は、専用メモリ２０４に格納されたデータを鍵として使用する３ＤＥＳ／ＤＥＳ、ＡＥＳ、Ｃ２等のブロック暗号を用いた各種動作モードによる暗号化／復号化に加え、専用メモリに格納されたデータをハッシュ初期値とする、ＳＨＡ−１、ＳＨＡ−２、及びブロック暗号（ＡＥＳ，Ｃ２等）を用いたハッシュ処理である。なお、３ＤＥＳ／ＤＥＳの暗号動作モードとしては、例えば、ＥＣＢ（Electronic CodeBook）、ＣＢＣ（Cipher Block Chaining）、ＣＴＲ（CounTeR）がある。また、ＡＥＳの暗号動作モードとしては、ＥＣＢ、ＣＢＣ、ＣＴＲ、ＸＴＳ−ＡＥＳがある。また、Ｃ２の暗号動作モードとしては、ＥＣＢ、Ｃ−ＣＢＣがある。また、本提案にて、「鍵」と表記する際、ＣＢＣモードのＩＶ、ＣＴＲモードの初期値等、指定された動作モードで必要とするパラメータを含むものとする。
【００２９】
なお、内部バス２１０または専用メモリ２０４からのデータ取得単位サイズおよびデータ処理部３１５で扱うデータの単位サイズについては、入力バッファ３１２および出力バッファ３１３で調整する。また、転送速度や処理速度の違いについても、入力バッファ３１２および出力バッファ３１３を介してフロー制御を行う。例えば、データバスの１ワードが内部バス２１０および専用メモリ２０４とも３２ビットであって、ＡＥＳ  ＥＣＢ暗号処理をする場合、ＡＥＳの処理単位データサイズ（１ブロック）は１２８ビットであるから、入力データ取得時には、入力転送制御部３１１が４ワードリードして入力バッファ３１２にライトする。そして、この入力バッファ３１２にライトされた４ワードのデータがデータ処理部３１５に入力され、データ処理部３１５がその１ブロック（つまり１２８ビット）を暗号化して出力バッファ３１３へライトする。その後、出力転送制御部３１４が１ワード（つまり３２ビット）ずつ、出力先へライトする。
【００３０】
また、入力バッファ３１２および出力バッファ３１３は、ＦＩＦＯ制御される。入力転送制御部３１１は、前述のように入力バッファ３１２に空きがある限り、転送対象のデータをリードして入力バッファ３１２にライトするように制御する。入力バッファ３１２が満杯であれば、入力転送制御部３１１は、入力バッファ３１２に空きができるまで転送を一時中断する。データ処理部３１５は、出力バッファ３１３に空きがあり、入力バッファ３１２に処理すべきデータがあればこのデータを取得して処理する。入力バッファ３１２に処理すべきデータがあっても出力バッファ３１３が満杯であれば、データ処理部３１５は、一時処理を中断し出力バッファ３１３に空きができるのを待つ。出力転送制御部３１４は、出力バッファ３１３にデータがあれば、出力バッファ３１３からリードしたデータを指定された出力アドレスへライトする。
【００３１】
制御部３０１は、転送領域（専用メモリ２０４内部か外部か）の判定および転送の可否を判定する転送領域・処理判定機能を有している。専用メモリ２０４から暗号転送部２０３の外部へのデータ転送は、専用メモリ２０４に格納されているディスクリプタで、専用メモリ２０４に格納されている鍵を使用した暗号化／復号化処理を行う場合のみ、転送可と判定する。したがって、ＳＤカードとの認証を行う場合には、そのためのデータ処理は暗号転送部２０３で行われ、やりとりされるデータは暗号転送部２０３において必ず暗号化されることとなる。
【００３２】
一方、転送するデータが、内部バス２１０側から入力された鍵を使用した暗号化／復号化処理をしたデータや暗号化／復号化処理以外の処理をしたデータや元のままの処理をしないデータの場合、もしくはディスクリプタを内部バス２１０を介して外部からリードした場合、これらの場合の内部バス２１０側から専用メモリ２０４へのデータ転送や、専用メモリから内部バスへのデータ転送は不可と判定する。
【００３３】
また、ハッシュ処理については、以下のように取り扱う。ハッシュ処理では、全体のうち先頭から途中までのデータを処理して、その時点でのハッシュ値をデータ処理部３１５内部（例えば、内蔵のレジスタ）に一時保存しておき、そのハッシュ値を初期値として後続のデータのハッシュ処理を再開する、という動作をすることができる。本実施形態では、その途中のハッシュ値を内部バス２１０に出力した場合は、データ処理部３１５内部に保存していたハッシュ値が、外部に知られた値となるから、その再開したハッシュ処理による専用メモリ２０４と内部バス２１０との間のデータ転送は禁止する。一方、専用メモリ２０４から外部（内部バス２１０側）への転送は、乱数生成器を暗号転送部２０３に内蔵する場合は専用メモリ２０４上の値をシード（入力値）とした乱数生成器の出力値の出力、および、一方向関数器を暗号転送部２０３に内蔵する場合は専用メモリ２０４上の秘匿値のみを入力値とした一方向関数の出力値の出力については、専用メモリ２０４の情報が外部（内部バス２１０側）に出ないことになるので、専用メモリ２０４と内部バス２１０との間のデータ転送を許可するものとする。
【００３４】
以上のように構成されるＳＤカードスロット装置１００の動作を、特に暗号転送部２０３を中心に、図５を用いて説明する。図５は、ＳＤカードスロット装置１００の動作を説明するフローチャートである。
【００３５】
はじめに、ＣＰＵ１０５が、システムバス１１０および内部バス２１０経由で、ＳＤホストコントローラ１０６のレジスタ部３０２に、専用メモリ２０４に格納されているディスクリプタの番号とこのディスクリプタに必要なパラメータとを指定し、ＳＤホストコントローラ１０６の暗号転送部２０３に起動を指示する（ステップＳ５０１）。
【００３６】
暗号転送部２０３の制御部３０１は、ディスクリプタ転送制御部３０７を介して、ＣＰＵ１０５により指示されたディスクリプタの番号に対応する専用メモリ２０４におけるアドレスからディスクリプタの先頭アドレスを取得するよう指示をする（ステップＳ５０２）。なお、本実施形態では、専用メモリ２０４中にディスクリプタの先頭アドレスを格納するアドレステーブルを有し、このアドレステーブル上のディスクリプタの番号に対応するアドレスに、ディスクリプタの先頭アドレスが格納されているものとする。
【００３７】
上記指示を受けた専用メモリアクセス部３０６は、専用メモリ２０４のアドレステーブル領域から、指定されたアドレスにあるディスクリプタの先頭アドレスをリードする（ステップＳ５０３）。
【００３８】
次いで、制御部３０１は、ディスクリプタ転送制御部３０７を介して、専用メモリアクセス部３０６に対し、リードしたディスクリプタの先頭アドレスから指定したディスクリプタサイズ分のディスクリプタデータをリードするように指示する（ステップＳ５０４）。
【００３９】
続くステップＳ５０５で、ディスクリプタデータリードの指示を受けた専用メモリアクセス部３０６は、専用メモリ２０４中のディスクリプタの先頭アドレスから順に、指定されたディスクリプタのサイズ分だけディスクリプタデータをリードする。リードしたディスクリプタデータは、ディスクリプタバッファ３０８へ格納する。
【００４０】
次いで、制御部３０１は、ディスクリプタバッファ３０８に格納されたディスクリプタを参照し、データの転送可否の判定（詳細は後述）を行う（ステップＳ５０６）。このとき、転送領域のアドレスが専用メモリ２０４を指しているか、内部バス２１０側を指しているかは、ディスクリプタバッファ３０８に格納されているディスクリプタの領域フラグで判断する。その結果、転送不可と判定された場合、制御部３０１は、ＣＰＵ１０５にエラー通知を行いエラー終了とする。一方、データ転送可と判定された場合、次のステップＳ５０７へ移行する。
【００４１】
ステップＳ５０７では、制御部３０１が、ディスクリプタで必要なパラメータが指定されているかを判定する。ディスクリプタで必要なパラメータが指定されている場合（本ステップでＹＥＳ）、すなわち、ディスクリプタが、鍵等のパラメータを必要とするものであれば、制御部３０１は、パラメータ転送制御部３０９に、ディスクリプタで指定された専用メモリ２０４のアドレスからパラメータのリードを指示する（ステップＳ５０８）。
【００４２】
続くステップＳ５０９で、制御部３０１からの指示を受けたパラメータ転送制御部３０９は、パラメータをリードするためにリードアクセスの制御を開始する（詳細は後述）。このときリードされたデータは、パラメータバッファ３０８に格納される。
【００４３】
制御部３０１は、ステップＳ５０９でのパラメータリードの完了を待った後（ステップＳ５１０）、データ処理部３１５に、ディスクリプタに記載されている処理内容およびパラメータを指示する（ステップＳ５１１）。
【００４４】
次いで、制御部３０１は、入力データがあるか判定し（ステップＳ５１２）、入力データがある場合（本ステップでＹＥＳ）、入力転送制御部３１１に、ディスクリプタの領域フラグに従って専用メモリアクセス部３０６もしくは内部バスアクセス部３０４にデータをリードするよう指示をだす。一方、入力データがない場合は（本ステップでＮＯ）、ステップＳ５１５へ移行する。
【００４５】
制御部３０１から上記指示を受けた入力転送制御部３１１は、入力データをリードするためにリードアクセスの制御を開始する（詳細は後述）（ステップＳ５１３）。リードされた入力データは、入力バッファ３１２に格納される。そして、入力データは、この入力バッファ３１２を介してデータ処理部３１５へ入力される。つまり、データ処理部３１５が処理するデータは、入力転送制御部３１１の制御によってリードされ、入力バッファ３１２を介してデータ処理部３１５へ入力される。
【００４６】
データ処理部３１５は、入力されたデータに対し、ステップＳ５１１で制御部３０１から渡されたディスクリプタに記載されている処理内容およびパラメータに従って処理を施し、処理後のデータを順次、出力バッファ３１３へ出力する（ステップＳ５１４）。
【００４７】
続くステップＳ５１５で、制御部３０１は、出力データがあるか判定する。出力データがある場合（本ステップでＹＥＳ）、出力転送制御部３１４に、ディスクリプタの領域フラグに従って専用メモリアクセス部３０６もしくは内部バスアクセス部３０４にデータをライトさせるように指示をだす。一方、出力データがない場合は（本ステップでＮＯ）、ステップＳ５１７へ移行する。
【００４８】
制御部３０１から上記指示を受けた出力転送制御部３１４は、出力データをライトするためにライトアクセスの制御を開始する（詳細は後述）（ステップＳ５１６）。
【００４９】
なお、総転送データサイズは、入力バッファ３１２、出力バッファ３１３、及び、データ処理部３１５の１処理単位データサイズよりも大きなサイズを指定することもでき、その場合には、上記の、ステップＳ５１３、Ｓ５１４、Ｓ５１５、Ｓ５１６で開始された各処理は並行動作する。
【００５０】
ステップＳ５１７では、制御部３０１は、データ転送の完了を待って、一連の処理を終了する。
【００５１】
ここで、ステップＳ５０６における転送可否判定について、図６を用いて説明する。図６は、制御部３０１が行う転送可否判定処理の一例を説明するフローチャートである。
【００５２】
はじめに、データ転送が、専用メモリ２０４から内部バス２１０側（すなわち、暗号転送部２０３の外部）への転送であるか否か、すなわち、専用メモリ２０４からリードし、内部バス２１０側へライトする転送であるか否か判定する（ステップＳ６０１）。専用メモリ２０４から内部バス２１０側への転送である場合（本ステップでＹＥＳ）、ステップＳ６０３へ移行し、そうでない場合、ステップＳ６０２へ移行する。
【００５３】
ステップＳ６０２では、さらに、データ転送が、内部バス２１０側（暗号転送部２０３の外部）から専用メモリ２０４への転送であるか否か、すなわち、内部バス２１０側からリードし、専用メモリ２０４へライトする転送であるか判定する。ここで、データ転送が、内部バス２１０側（暗号転送部２０３の外部）から専用メモリ２０４への転送でないと判定されると（本ステップでＮＯ）、転送可として転送可否判定を終了する。すなわち、専用メモリ２０４から内部バス２１０側への転送でもなく、内部バス２１０側から専用メモリ２０４への転送でもない場合に、転送可とする。一方、データ転送が、内部バス２１０側（暗号転送部２０３の外部）から専用メモリ２０４への転送であると判定されると（本ステップでＹＥＳ）、ステップＳ６０３へ移行する。
【００５４】
ステップＳ６０３では、データ処理部３１５で行われるデータ処理が、専用メモリ２０４に格納されている鍵を使用した暗号化／復号化処理であるか否か判定する。ここで、データ処理部３１５で行われる暗号化／復号化処理が、専用メモリ２０４に格納されている鍵を使用した暗号化／復号化処理であると判定されると（本ステップでＹＥＳ）、転送可として転送可否判定を終了する。一方、そうでない場合は（本ステップでＮＯ）、ステップＳ６０４へ移行する。
【００５５】
ステップＳ６０４では、データ処理部３１５で行われるデータ処理が新規のハッシュ処理であって、専用メモリ２０４に格納されている値が初期値であるか否か判定する。ここで、データ処理部３１５で行われるハッシュ処理が新規のハッシュ処理であって、専用メモリ２０４に格納されている値が初期値であると判定されると（本ステップでＹＥＳ）、転送可として転送可否判定を終了する。一方、そうでない場合は（本ステップでＮＯ）、ステップＳ６０５へ移行する。
【００５６】
ステップＳ６０５では、データ処理部３１５で行われるデータ処理が、乱数生成、もしくは一方向関数処理であり、入力値がすべて専用メモリ２０４に格納されている値であるか否か判定する。ここで、データ処理部３１５で行われるデータ処理が乱数生成、もしくは一方向関数処理であり、入力値がすべて専用メモリ２０４に格納されている値である場合（本ステップでＹＥＳ）、転送可として転送可否判定を終了する。一方、そうでない場合は（本ステップでＮＯ）、転送不可として転送可否判定を終了する。以上のようにして、転送可否判定を行う。もちろん、転送可否判定に係る処理は、図６に例示したものに限定されるものではない。
【００５７】
続いて、ステップＳ５０９およびＳ５１３のリードアクセス、Ｓ５１６のライトアクセスについて、図７を用いて説明する。図７は、リード／ライトアクセス処理を説明するフローチャートである。なお、以下では、リードアクセスの場合に、内部バスアクセス部３０４および専用メモリアクセス部３０６が、指示を出した転送制御部に対応するバッファに直接データをライトするものとして説明する。
【００５８】
まず、データをリードするデータの場所、またはデータをライトするデータの場所が、専用メモリ２０４内か、内部バス２１０側かを、前述の領域フラグを基に判定する（ステップＳ７０１）。
【００５９】
上記データの場所が、専用メモリ２０４の場合、ステップＳ７０２へ移行し、制御部３０１から指示を受けた転送制御部（パラメータ転送制御部３０９または入力転送制御部３１１または出力転送制御部３１４）が、ディスクリプタで指定されたアドレスおよびサイズでの、データのリード／ライトを専用メモリアクセス部３０６に指示する。
【００６０】
上記指示を受けた専用メモリアクセス部３０６は、転送制御部からの指示に応じて、専用メモリ２０４からデータをリードし転送制御部に対応するバッファへデータをライトするか、転送制御部からの指示に応じて、転送制御部に対応するバッファからデータをリードし専用メモリ２０４へデータをライトする（ステップＳ７０３）。
【００６１】
一方、上記データの場所が、内部バス２１０側の場合、ステップＳ７０４へ移行し、制御部３０１から指示を受けた転送制御部（入力転送制御部３１１または出力転送制御部３１４）が、ディスクリプタで指定されたアドレスおよびサイズでの、データのリード／ライトを内部バスアクセス部３０４に指示する。
【００６２】
上記指示を受けた内部バスアクセス部３０４は、転送制御部からの指示に応じて、内部バス２１０側からデータをリードし転送制御部に対応するバッファへデータをライトするか、転送制御部からの指示に応じて、転送制御部に対応するバッファからデータをリードし内部バス２１０側へデータをライトする（ステップＳ７０５）。
【００６３】
以上、本実施形態のＳＤカードスロット装置１００の構成および動作の詳細を説明した。本実施形態では、専用メモリ２０４から暗号転送部２０３の外部への転送では必ず、外部からは直接そのアドレスを指定することができない専用メモリ２０４に格納されているディスクリプタを番号で指定すること、および、指定されたディスクリプタに従った制御により専用メモリ２０４に格納されている（不正な手段では知りえない）鍵を使用してデータを暗号化することによって、専用メモリ２０４内部の秘匿情報を保護することができる。
【００６４】
また、専用メモリ２０４に格納されているディスクリプタでは、上記のように、暗号転送部２０３の外部から専用メモリ２０４への転送では、必ずこの専用メモリ２０４に格納されているディスクリプタを用いて、専用メモリ２０４に格納されている鍵を使用して暗号化するように指定される。また、暗号転送部２０３の外部から専用メモリ２０４への転送では、専用メモリ２０４に格納されている鍵を使用しない転送を禁止している。このようにすることで、専用メモリ２０４内のデータを、改竄及び改竄を利用した秘匿情報の危殆化からも保護できるようになった。
【００６５】
なお、上述のＳＤカードスロット装置１００では、その内部にＣＰＵ１０５を持たせ、この装置の制御を行っているが、ＳＤカードスロット装置１００において、装置内のＣＰＵ１０５を省略し、ホストインターフェース１０９を介して接続されるホスト装置のＣＰＵ上で動作するファームウェアによりＳＤカードスロット装置１００を制御するようにしてもよい。また、上記では、ＳＤカードスロット装置１００としての実施形態を説明したが、これに限らず、その他のメモリカード用のカードスロット装置やホストコントローラ、デバイス間のデータ転送用の制御装置等に対しても、上述の暗号転送部２０３および専用メモリ２０４を備えるように構成することができる。
【００６６】
（その他の実施形態）
続いて、本発明を適用可能な情報処理装置の一例としてパーソナルコンピュータを図８に例示し、その概要を説明する。図８は、本発明を適用可能な情報処理装置の一例としてのパーソナルコンピュータの斜視図である。
【００６７】
ＰＣ８００は、本体８０１と、表示ユニット８０２とを備えている。本体８０１は、キーボード８０３と、ポインティングデバイスであるタッチパッド８０４とを備えている。本体８０１内部には、メイン回路基板、同図符号１００で示す破線部分のＳＤ（Secure Digital）カードスロット装置や、ＯＤＤユニット（Optical Disk Device）、ＳＤカードスロット等が収容されている。
【００６８】
ＳＤカードスロットは、本体８０１の周壁に設けられている。この周壁には、ＳＤカードスロット用の開口部８０５が設けられている。ユーザは、この開口部８０５を通じて本体８０１の外部からＳＤカード８１０をカードスロットに挿抜することが可能である。
【００６９】
ＰＣ８００には、ＳＤカードスロット装置１００に備わる前述のＳＤホストコントローラ１０６を制御するための専用のデバイスドライバ（ホストドライバ）がインストールされており、このホストドライバとＳＤホストコントローラ１０６により、ＳＤカードスロットに装着されたＳＤカード８１０に対するリード／ライト処理やキャリブレーション処理等を行う。
【００７０】
このように、その他の実施形態として、パーソナルコンピュータ等の情報処理装置に、ＳＤカードスロット装置１００、またはＳＤホストコントローラ１０６、または暗号転送部２０３および専用メモリ２０４を組み込むことで、当該情報処理装置におけるセキュリティを向上させることができる。
【００７１】
なお、本発明を適用可能な情報処理装置としては、上記のようなパーソナルコンピュータに限らず、携帯電話、ＰＤＡ（Personal Digital Assistant）、デジタルスチルカメラ、デジタルビデオカメラ、デジタルテレビジョン受像機等も挙げることができる。
【符号の説明】
【００７２】
１００…ＳＤカードスロット装置、１０１…ＲＯＭ、１０２…ＲＡＭ、１０３…ＲＯＭコントローラ、１０４…ＲＡＭコントローラ、１０５…ＣＰＵ、１０６…ＳＤホストコントローラ、１０７…ＳＤカードスロット、１０８…ホストアクセス制御部、１０９…ホストインターフェース、１１０…システムバス、２０１…システムバスインターフェース、２０２…システムバスコントローラ、２０３…暗号転送部、２０４…専用メモリ、２０５…ＳＤカードインターフェース、２０６…ＳＤカードインターフェース制御部、２１０…内部バス、３０１…制御部、３０２…レジスタ部、３０３…内部バスインターフェース、３０４…内部バスアクセス部、３０５…専用メモリインターフェース、３０６…専用メモリアクセス部、３０７…ディスクリプタ転送制御部、３０８…ディスクリプタバッファ、３０９…パラメータ転送制御部、３１０…パラメータバッファ、３１２…入力バッファ、３１３…出力バッファ、３１４…出力転送制御部、３１５…データ処理部、８００…パーソナルコンピュータ（ＰＣ）、８０１…本体、８０２…表示ユニット、８０３…キーボード、８０４…タッチパッド、８０５…開口部、８１０…ＳＤカード
【図１】
2011129073.tif 000003
【図２】
2011129073.tif 000004
【図３】
2011129073.tif 000005
【図４】
2011129073.tif 000006
【図５】
2011129073.tif 000007
【図６】
2011129073.tif 000008
【図７】
2011129073.tif 000009
【図８】
2011129073.tif 000010