(57)【要約】【課題】データの秘匿性を確保しつつ、複数のセキュリティ区分に対応可能な半導体集積回路、バス装置、及びデータ転送方法を提供すること。【解決手段】半導体装置２〜５と、データの転送先を示す第１属性情報Ａｔｔｒ１を含む暗号化されたデータを復号化し、復号した旨を示す第２属性情報Ａｔｔｒ２を前記データに付加する復号回路１０、１１と、前記半導体装置２〜５と前記復号回路１０、１１との間をデータ転送可能に接続するバス装置１４と、前記復号回路１０で復号化された前記データを前記半導体装置２〜５へ転送する転送回路３と、前記第１属性情報Ａｔｔｒ１及び第２属性情報Ａｔｔｒ２を確認して、復号化されたデータであって且つ前記第１属性情報Ａｔｔｒ１によって示される前記転送先が前記半導体装置２〜５と不一致であった場合に、前記データの前記半導体装置への転送を遮断する遮断装置６〜９とを具備する。【選択図】      図１
2009277138.tif 000002
【特許請求の範囲】
【請求項１】
半導体装置と、
データの転送先を示す第１属性情報を含み且つ暗号化されたデータを復号化すると共に、復号した旨を示す第２属性情報を、復号化した前記データに付加する復号回路と、
前記復号回路で復号化された前記データを、前記第２属性情報と共に前記半導体装置へ転送する転送回路と、
前記半導体装置と前記転送回路との間をデータ転送可能に接続するバス装置と、
前記転送回路によって前記バス装置を介して転送された前記データにつき、前記第１属性情報及び第２属性情報を確認して、該データが暗号化された状態から復号化されたデータであって、且つ前記第１属性情報によって示される前記転送先が前記半導体装置と不一致であった場合に、前記データの前記半導体装置への転送を遮断する遮断装置と
を具備することを特徴する半導体集積回路装置。
【請求項２】
前記データはハッシュ値を更に含み、
前記復号回路において復号化された前記データと前記ハッシュ値とを比較し、両者が不一致であった場合に、該データの転送を中止するハッシュ値確認回路を更に備える
ことを特徴とする請求項１記載の半導体集積回路装置。
【請求項３】
前記バス装置は、外部から入力されたデータを順次転送する複数の保持回路を備え、
前記転送回路は、前記データの転送終了後、予め定められた一定のデータを前記バス装置へ転送する
ことを特徴とする請求項１記載の半導体集積回路装置。
【請求項４】
半導体装置に接続可能とされ、前記半導体装置にデータを転送するバス装置であって、
外部から与えられる前記データを転送するデータ転送線と、
前記データ転送線によって転送された前記データに含まれる情報に基づいて、前記データが暗号化された状態から平文に戻されたデータであって且つ前記半導体装置への転送を禁止されたデータであると判断した場合に、前記半導体装置への転送を遮断する遮断装置と
を具備することを特徴とするバス装置。
【請求項５】
転送先を示す第１属性情報を含み且つ暗号化された第１データを復号化して第２データを得るステップと、
前記第２データに対して、復号した旨を示す第２属性情報を付加して第３データを得るステップと、
半導体装置を転送先として、前記第３データをバス装置へ転送するステップと、
前記バス装置へ転送されたデータにつき、前記第１属性情報及び第２属性情報をチェックするステップと、
前記第１属性情報及び第２属性情報をチェックした結果、前記第３データが暗号化された状態から復号化されたデータであって、且つ前記第１属性情報の示す転送先が前記半導体装置と不一致であった場合、該第３データの前記半導体装置への転送を遮断し、それ以外の場合には該第３データの前記半導体装置への転送を許可するステップと
を具備することを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体集積回路装置、バス装置、及びデータ転送方法に関する。例えば、暗号化されたデータの保護方法に関する。
【背景技術】
【０００２】
近年の半導体集積回路（ＬＳＩ）においては、データの保護（security）技術の重要性が高まっている。特に、暗号化されたデータを復号化した後におけるデータの取り扱いが重要である。
【０００３】
この点、復号化されたデータに対して、当該データが復号化されたデータであることを示す情報を付加する手法が提案されている（例えば非特許文献１参照）。本手法によれば、データに上記情報が付加されていた場合には、データブロッカーが、所定のハードウェアに対するデータの転送を遮断する。従って、保護すべきデータが不用意にハードウェアに転送されることを防止出来る。
【０００４】
しかし、上記従来の手法であると、保護すべきデータを転送出来るハードウェアは、ＬＳＩの製造時に決定されてしまい、データ毎の柔軟な対応が困難であるという問題があった。すなわち、例えば複数のセキュリティ区分が存在する場合に、あるセキュリティ区分のデータの転送は禁止し、それよりも区分の低いデータの転送は許可する、といったデータ転送が困難であった。
【非特許文献１】"Security Enhanced Embedded Processor using Local Memory Protection Mechanism", Takeshi Kawabata, Takanori Tamai, Mikio Hashimoto, and Takashi Miyamoti, Proceedings of the IEEE Symposium on Low-Power and High-Speed Chips (COOL Chips IX), April 19-21, 2006, pp. 143-157.
【発明の開示】
【発明が解決しようとする課題】
【０００５】
この発明は、データの秘匿性を確保しつつ、複数のセキュリティ区分に対応可能な半導体集積回路、バス装置、及びデータ転送方法を提供する。
【課題を解決するための手段】
【０００６】
この発明の一態様に係る半導体集積回路装置は、半導体装置と、データの転送先を示す第１属性情報を含み且つ暗号化されたデータを復号化すると共に、復号した旨を示す第２属性情報を、復号化した前記データに付加する復号回路と、前記復号回路で復号化された前記データを、前記第２属性情報と共に前記半導体装置へ転送する転送回路と、前記半導体装置と前記転送回路との間をデータ転送可能に接続するバス装置と、前記転送回路によって前記バス装置を介して転送された前記データにつき、前記第１属性情報及び第２属性情報を確認して、該データが暗号化された状態から復号化されたデータであって、且つ前記第１属性情報によって示される前記転送先が前記半導体装置と不一致であった場合に、前記データの前記半導体装置への転送を遮断する遮断装置とを具備する。
【０００７】
また、この発明の一態様に係るバス装置は、半導体装置に接続可能とされ、前記半導体装置にデータを転送するバス装置であって、外部から与えられる前記データを転送するデータ転送線と、前記データ転送線によって転送された前記データに含まれる情報に基づいて、前記データが暗号化された状態から平文に戻されたデータであって且つ前記半導体装置への転送を禁止されたデータであると判断した場合に、前記半導体装置への転送を遮断する遮断装置とを具備する。
【０００８】
更に、この発明の一態様に係るデータ転送方法は、転送先を示す第１属性情報を含み且つ暗号化された第１データを復号化して第２データを得るステップと、前記第２データに対して、復号した旨を示す第２属性情報を付加して第３データを得るステップと、半導体装置を転送先として、前記第３データをバス装置へ転送するステップと、前記バス装置へ転送されたデータにつき、前記第１属性情報及び第２属性情報をチェックするステップと、前記第１属性情報及び第２属性情報をチェックした結果、前記第３データが暗号化された状態から復号化されたデータであって、且つ前記第１属性情報の示す転送先が前記半導体装置と不一致であった場合、該第３データの前記半導体装置への転送を遮断し、それ以外の場合には該第３データの前記半導体装置への転送を許可するステップとを具備する。
【発明の効果】
【０００９】
この発明によれば、データの秘匿性を確保しつつ、複数のセキュリティ区分に対応可能な半導体集積回路、バス装置、及びデータ転送方法を提供出来る。
【発明を実施するための最良の形態】
【００１０】
以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【００１１】
［第１の実施形態］  
この発明の第１の実施形態に係る半導体集積回路装置、バス装置、及びデータ転送方法について、図１を用いて説明する。図１は、本実施形態に係る半導体集積回路装置のブロック図である。
【００１２】
＜半導体集積回路装置の全体構成について＞  
図示するように、半導体集積回路装置（ＬＳＩ）１は、ＲＡＭ２、ＤＭＡ（Direct Memory Access）コントローラ３、ハードウェアエンジン４、５、データブロッカー６〜９、復号回路１０、属性付加装置１１、メモリ１２、セレクタ装置１３、及びバス１４を備えている。なお、ＲＡＭ２、ＤＭＡコントローラ３、及びハードウェアエンジン４、５を区別しない場合には、これらをまとめて「ハードウェア」と呼ぶことがある。
【００１３】
ＲＡＭ２は例えばフラッシュメモリ等の半導体メモリであり、種々のデータを保持する。保持するデータのいずれかは暗号化されたデータである。そして暗号化されたデータは、正味のデータであり保護すべき秘密データと、この秘密データの転送先となる転送先情報とを含んでおり、共に暗号化されている。
【００１４】
ＤＭＡコントローラ３は、ＲＡＭ２及びハードウェアエンジン４、５間のデータ転送を制御する。ＤＭＡコントローラ３は、データの転送モードとして、保護転送と通常転送との２つのモードを有する。保護転送は、暗号化されたデータが復号化されて得られた平文のデータを転送するモードであり、通常転送はそれ以外の場合のモードである。すなわち、秘匿性を考慮すべきデータを転送する場合の転送モードが、保護転送である。そしてＤＭＡコントローラ３は、保護転送を行う際には転送モード信号ＭＯＤＥを例えば“１”とし、通常転送を行う際には“０”とする。転送モード信号ＭＯＤＥは、セレクタ装置１３に与えられる。ＤＭＡコントローラ３の詳細については後述する。
【００１５】
ハードウェアエンジン４、５は、例えば画像処理や無線通信等、所定の機能を実行するための機能ブロックである。そして、ＲＡＭ２内のデータを用いて、所定の機能を実行するための処理を行う。
【００１６】
データブロッカー６〜９は、それぞれＲＡＭ２、ＤＭＡコントローラ３、及びハードウェアエンジン４、５に対応づけられて設けられている。またデータブロッカー６〜９には、転送先識別番号ＤｓｔＮｏが入力される。転送先識別番号ＤｓｔＮｏは、各データブロッカー６〜９が対応するハードウェアに応じて付加される番号であり、ＲＡＭ２、ＤＭＡコントローラ３、及びハードウェアエンジン４、５に関する転送先識別番号ＤｓｔＮｏは、例えばそれぞれ“１”、“２”、“３”、“４”である。従って、データブロッカー６〜９には転送先識別番号ＤｓｔＮｏとして、“１”〜“４”がそれぞれ与えられる。そしてデータブロッカー６〜９はそれぞれ、転送先識別番号ＤｓｔＮｏと、データと共に転送される第１属性情報Ａｔｔｒ１及び第２属性情報Ａｔｔｒ２とに基づいて、ＲＡＭ２、ＤＭＡコントローラ３、及びハードウェアエンジン４、５に対するデータの転送を遮断する。第１属性情報Ａｔｔｒ１及び第２属性情報Ａｔｔｒ２、並びにデータブロッカー６〜９の詳細については後述する。
【００１７】
復号回路１０は、ＤＭＡコントローラ３から与えられる暗号化されたデータを、復号鍵を用いて復号化する。復号化されたデータには、前述の秘密データと転送先情報とが含まれる。そして復号回路１０は、復号化された秘密データと転送先情報とを、属性付加装置１１へ出力する。
【００１８】
メモリ１２は例えば半導体メモリであり、復号回路１０で使用する復号鍵の記録された復号鍵テーブルを保持する。そしてメモリ１２は、ＤＭＡコントローラ３の命令に従って、必要な復号鍵を復号回路１０へと出力する。
【００１９】
属性付加装置１１は、復号回路１０から与えられる復号化されたデータにおいて、秘密データと転送先情報とを分離し、セレクタ装置１３へ出力する。この際、属性付加装置１１は転送先情報を、第１属性情報Ａｔｔｒ１としてセレクタ装置１３へ出力する。また属性付加装置１１は、復号回路１０から秘密データを受け取った際には、第２属性情報Ａｔｔｒ２をアサートして（本実施形態では“１”として）、セレクタ装置１３へ出力する。つまり第１属性情報Ａｔｔｒ１は、ある秘密データについて、当該秘密データの宛先として許可されたハードウェアの情報である。また第２属性情報Ａｔｔｒ２は、あるデータについて、当該データが暗号化された状態から復号化されたデータであるか否かを示す情報である。
【００２０】
セレクタ装置１３は、第１セレクタ２０及び第２セレクタ２１を備えている。第１セレクタ２０及び第２セレクタ２１は、例えばマルチプレクサである。
【００２１】
上記第１セレクタ２０は、属性付加装置１１から与えられる、復号化された秘密データと、ＤＭＡコントローラ３から直接与えられるデータとのいずれかを選択する。より具体的には、転送モード信号ＭＯＤＥ＝“１”である場合には、属性付加装置１１から与えられるデータを選択し、“０”である場合にはＤＭＡコントローラ３から直接与えられるデータを選択する。そして、選択したデータをバス１４へ出力する。すなわち、保護転送の場合には、復号化された秘密データをバス１４へ出力し、通常転送の場合には、ＲＡＭ２からＤＭＡコントローラ３に与えられたデータをそのままバス１４へ出力する。
【００２２】
上記第２セレクタ２１は、属性付加装置１１から与えられる第１属性情報Ａｔｔｒ１及び第２属性情報Ａｔｔｒ２と、“０”とのいずれかを選択する。より具体的には、転送モード信号ＭＯＤＥ＝“１”である場合には、属性付加装置１１から与えられる第１、第２属性情報Ａｔｔｒ１、Ａｔｔｒ２を選択してバス１４へ出力する。他方、ＭＯＤＥ＝“０”である場合には“０”を選択し、第１属性情報Ａｔｔｒ１＝“０”、第２属性情報Ａｔｔｒ２＝“０”としてバス１４へ出力する。
【００２３】
バス１４は、ＲＡＭ２、ＤＭＡコントローラ３、及びハードウェアエンジン４、５の相互間において、データを転送する。バス１４にはマスター・インタフェースＩＦ１、ＩＦ３、ＩＦ４およびスレーブ・インタフェースＩＦ２が存在する。マスター・インタフェースＩＦ１、ＩＦ３、ＩＦ４は、それぞれＲＡＭ２、ハードウェアエンジン４、ハードウェアエンジン５に接続される。スレーブ・インタフェースＩＦ２はＤＭＡコントローラ３に接続される。また、それぞれのインタフェースＩＦ１〜ＩＦ４において、後述する出口ＯＵＴ１〜ＯＵＴ４から出力される信号は、それぞれデータブロッカー６〜９に接続されている。
【００２４】
＜バス１４について＞  
次に、バス１４で伝送する信号について、図２を用いて説明する。図２は、バスの入出力信号を示す概念図である。マスター・インタフェースＩＦ１、ＩＦ３、ＩＦ４とスレーブ・インタフェースＩＦ２は、信号の伝送方向が逆になっている。スレーブ・インタフェースＩＦ２は、バス１４の外部からの転送要求を受信することが可能で、データ転送を制御するＤＭＡコントローラなどを接続することができる。なお、バス１４から出力される信号のうち、データ信号および後述する第１属性情報および第２属性情報が出力される部分を、それぞれ出口ＯＵＴ１〜ＯＵＴ４と呼ぶ。なお、図では、マスター・インタフェースＩＦ１の記載が省略されているが、マスター・インタフェースＩＦ３またはＩＦ４などと同等である。出口ＯＵＴ３、４と同様に出口ＯＵＴ１も定義される。
【００２５】
図示するようにバス１４は、大きくは４つの信号系列を有している。  
まず、制御信号の系列である。制御信号の一例はリクエスト信号Request及びイネーブル信号R/W_Enableであり、それぞれ１ビットの信号である。リクエスト信号Requestは、転送先のハードウェアに対してデータの送受信を要求するための信号であり、イネーブル信号R/W_Enableは、転送先のハードウェアに対してデータの読み出しまたは書き込みをイネーブルにするための信号である。
【００２６】
次に、データ信号の系列である。データ信号には、読み出した読み出しデータRead_Dataと書き込むべき書き込みデータWrite_Dataの２種類があり、信号線として独立している。また、それぞれ例えば３２ビットの信号である。  
なお、上記セレクタ装置１３の第１セレクタ２０から出力される書き込みデータが、スレーブ・インタフェースＩＦ２への入力信号Write_Dataとなる。データブロッカー６、８および９はそれぞれ、対応するマスター・インタフェースＩＦ１、ＩＦ３、ＩＦ４から与えられるデータ信号Write_Dataを遮断したり、通過させたりする。データブロッカー７は、スレーブ・インタフェースＩＦ２のデータ信号Read_Dataの伝播を遮断したり通過させたりする。なお、データブロッカー６、８および９と、データブロッカー７が遮断したり通過させたりする信号は、それぞれ信号Write_dataと信号Read_Dataと異なるが、これは接続されたインタフェースがマスター・インタフェースなのか、スレーブ・インタフェースであるかの違いにすぎない。各データブロッカーは同じ機能を有している。
【００２７】
次に、アドレス信号Addressである。アドレス信号は、データを転送すべき宛先となるハードウェアのアドレスを示す信号である。
【００２８】
最後に、第１属性情報Ａｔｔｒ１及び第２属性情報Ａｔｔｒ２である。各属性情報は 信号Read_Dataおよび信号Write_Dataのそれぞれに付随して存在する。図２においては、信号Attr1(R)、信号Attr1(W)、信号Attr2(R)および信号Attr2(W)が属性情報を伝達する信号である。なお、各信号名の文字列(R)または(W)は、Read_DataおよびWrite_Dataのどちらのデータの属性であるかをそれぞれ示す。また、これらの属性情報を伝達する信号は、信号Read_Dataおよび信号Write_Dataと同期して転送される。なお以下では、Attr1(R)及びAttr1(W)を単にＡｔｔｒ１と呼び、Attr2(R)及びAttr2(W)を単にＡｔｔｒ２と呼ぶことがある。
【００２９】
第１属性情報Ａｔｔｒ１はデータの転送先が許可されているハードウェアの情報を示す。より具体的には、第１属性情報Ａｔｔｒ１には、復号化されたデータの転送を許可するハードウェアの転送先識別番号ＤｓｔＮｏが設定される。本実施形態では、第１属性情報Ａｔｔｒ１は例えば３ビットの信号である。  
第２属性情報Ａｔｔｒ２は、暗号化された状態から平文に戻された状態であることを示す。より具体的には、第２属性情報Ａｔｔｒ２は１ビットの信号であり、“１”である場合には、当該第２属性情報Ａｔｔｒ２が付与されたデータは平文に戻されたデータであることを示す。なお、ＲＡＭ２が接続されているマスター・インタフェース１の信号 Attr1(R)および 信号 Attr2(R)には“０”(ゼロ)が入力されている。従って、ＲＡＭ２から読み出されたデータを転送する際には、当該データについて第２属性情報Ａｔｔｒ２は“０”となる。また、第１属性情報Ａｔｔｒ１は、第２属性情報Ａｔｔｒ２が“１”の場合だけ有効な意味を持つ。
【００３０】
＜ＤＭＡコントローラ３の詳細について＞  
次に、上記ＤＭＡコントローラ３の詳細について、特にＲＡＭ２から読み出した信号の取り扱いに着目して、図３を用いて説明する。図３は、ＤＭＡコントローラ３の動作を示すフローチャートである。また以下では、バス１４で伝送される信号のうち、特に本実施形態に関連する信号についてのみ言及する。例えば、以下において説明を省略した場合であっても、データの転送する際には当然ながらアドレス信号Address等が必要となる。
【００３１】
図示するようにＤＭＡコントローラ３は、ＲＡＭ２からデータを読み出すと、このデータが暗号化されている場合には（ステップＳ１０、ＹＥＳ）、復号回路１０にデータを転送する。そしてＤＭＡコントローラ３は復号回路１０に対して、当該データについての復号化を命令する（ステップＳ１１）。またこの際には、必要な復号鍵を復号回路１０に与えるよう、メモリ１２に対して命令する。ステップＳ１１の命令に応答して、復号回路１０は復号鍵を用いてデータの復号化を行う。
【００３２】
更にＤＭＡコントローラ３は、転送モード信号ＭＯＤＥを“１”として、保護転送を行う（ステップＳ１２）。転送モード信号ＭＯＤＥを“１”とすることでＤＭＡコントローラ３は、セレクタ装置１３の第１セレクタ２０に対して、属性付加装置１１から出力される秘密データを選択するよう命令する（ステップＳ１３）。また第２セレクタ２１に対して、属性付加装置１１から出力される第１、第２属性情報Ａｔｔｒ１、Ａｔｔｒ２を選択するよう命令する（ステップＳ１４）。
【００３３】
以上の結果、バス１４には、復号回路１０で復号された秘密データが書き込みデータWrite_Dataとして出力され、暗号化されたデータに格納されていた転送先情報が第１属性情報Ａｔｔｒ１として出力され、“１”が第２属性情報Ａｔｔｒ２として出力される。
【００３４】
ステップＳ１０において、データが暗号化されていない場合には（ステップＳ１０、ＮＯ）、ＤＭＡコントローラ３は転送モード信号ＭＯＤＥを“０”として、通常転送を行う（ステップＳ１５）。転送モード信号ＭＯＤＥを“０”とすることでＤＭＡコントローラ３は、セレクタ装置１３の第１セレクタ２０に対して、ＤＭＡコントローラ３から出力されるデータを選択するよう命令する（ステップＳ１６）。また第２セレクタ２１に対して、第１、第２属性情報Ａｔｔｒ１、Ａｔｔｒ２として“０”を選択するよう命令する（ステップＳ１７）。
【００３５】
以上の結果、バス１４には、ＲＡＭ２から読み出されたデータがそのまま書き込みデータWrite_Dataとして出力され、“０”が第１属性情報Ａｔｔｒ１及び第２属性情報Ａｔｔｒ２として出力される。
【００３６】
＜データブロッカー６〜９の詳細について＞  
次に、データブロッカー６〜９の詳細について、図４を用いて説明する。図４は、データブロッカー６〜９の動作を示すフローチャートである。
【００３７】
データブロッカー６〜９はそれぞれ、バス１４の出口ＯＵＴ１〜ＯＵＴ４から出力される信号のデータを受け取ると、まず当該データが暗号化された状態から復号されたデータであるか否かを確認する。すなわち第２属性情報Ａｔｔｒ２が“１”であるか否かを確認する。
【００３８】
復号化されたデータでなかった場合、すなわちＡｔｔｒ２＝“０”であった場合には（ステップＳ２０、ＮＯ）、データブロッカー６〜９は、対応するハードウェアに対する当該データの転送を許可する（ステップＳ２１）。すなわち、バス１４から出力されたデータを、当該データブロッカー６〜９に接続されたハードウェアへ転送する。
【００３９】
他方、復号化されたデータであった場合、すなわちＡｔｔｒ２＝“１”であった場合には（ステップＳ２０、ＹＥＳ）、データブロッカー６〜９は次に、それぞれに対応するハードウェアが、当該データの転送先として許可されているか否かを判定する。すなわち、第２属性情報Ａｔｔｒ１が転送先識別番号ＤｓｔＮｏと一致するか否かを判定する。
【００４０】
一致した場合、すなわちＡｔｔｒ１＝ＤｓｔＮｏであった場合には（ステップＳ２２、ＹＥＳ）、ステップＳ２１の処理を行う。他方、不一致であった場合、すなわちＡｔｔｒ１≠ＤｓｔＮｏであった場合には（ステップＳ２２、ＮＯ）、データブロッカー６〜９は、対応するハードウェアに対する当該データの転送を遮断する（ステップＳ２３）。
【００４１】
以上の処理によりデータブロッカー６〜９は、復号化された秘密データが、転送を許可されていないハードウェアに転送されることを防止する。
【００４２】
＜ＬＳＩ１の動作について＞  
次に、上記構成のＬＳＩ１におけるデータ転送方法について、ＲＡＭ２からハードウェアエンジン４へのデータ転送の場合を例に挙げて、保護転送の場合と通常転送の場合とに分けて、以下説明する。他のハードウェア間のデータ転送も同様である。
【００４３】
＜保護転送について＞  
まず保護転送について、図５を用いて説明する。図５は、ＬＳＩ１における処理の流れを示すフローチャートである。処理の流れは大まかに、暗号化されたデータのＲＡＭ２からＤＭＡコントローラ３への転送、復号化と属性情報の設定、及び復号化されたデータのＤＭＡコントローラ３からハードウェアエンジン４への転送、の３つのステップを含む。以下、順次説明する。
【００４４】
まず、暗号化されたデータのＲＡＭ２からＤＭＡコントローラ３への転送が行われる。すなわち、ＤＭＡコントローラ３がＲＡＭ２から暗号化されたデータを読み出す（ステップＳ３０）。この際、暗号化されたデータはハードウェアエンジン４への転送を許可されたデータであり、転送先情報としてＤｓｔＮｏ＝“３”を保持していたとする。バス１４は、ＤＭＡコントローラ３の命令に応答して、Ａｔｔｒ２＝“０”として、暗号化されたデータをデータブロッカー７へ転送する（ステップＳ３１）。データブロッカー７は、Ａｔｔｒ２＝“０”であるので、暗号化されたデータをそのままＤＭＡコントローラ３へ転送する（ステップＳ３２）。
【００４５】
次に、復号化と属性情報の設定が行われる。すなわちＤＭＡコントローラ３は、復号回路１０に対して、暗号化されたデータの復号化を命令する（ステップＳ３３）。またＤＭＡコントローラ３は、ＭＯＤＥ＝“１”として保護転送を開始する（ステップＳ３４）。そして復号回路１０が、ＤＭＡコントローラ３から与えられる暗号化されたデータを復号化して、属性付加装置１１へ出力する（ステップＳ３５）。引き続き属性付加装置１１は、Ａｔｔｒ２＝“１”とする。また、当該データの転送先情報“３”をＡｔｔｒ１に設定する（ステップＳ３６）。
【００４６】
次に、復号化されたデータのＤＭＡコントローラ３からハードウェアエンジン４へのデータ転送が行われる。すなわちセレクタ装置１３が、属性付加装置１１から出力される秘密データと、Ａｔｔｒ１＝“３”及びＡｔｔｒ２＝“１”とを選択して、バス１４へ出力する。そしてバス１４は、セレクタ装置１３から出力された秘密データ（書き込みデータWrite_Data）と、Ａｔｔｒ１及びＡｔｔｒ２とを、転送先であるハードウェアエンジン４に対応するデータブロッカー８へと転送する（ステップＳ３８）。するとデータブロッカー８は、Ａｔｔｒ２＝“１”であり、且つＡｔｔｒ２＝ＤｓｔＮｏ＝“３”であるので、当該秘密データは転送を許可されたものと認識し、秘密データをハードウェアエンジン４へ転送する（ステップＳ３９）。
【００４７】
以上によって、ＲＡＭ２において暗号化された秘密データが、ハードウェアエンジン４へ転送される。なお、この秘密データがデータブロッカー６、７、９に転送されたとしても、データブロッカー６、７、９においてはＡｔｔｒ１がＤｓｔＮｏに一致しないので、データブロッカー６、７、９は、ＲＡＭ２、ＤＭＡコントローラ３、及びハードウェアエンジン５への当該秘密データの転送を遮断する（ステップＳ４０）。
【００４８】
＜通常転送について＞  
次に通常転送について説明する。通常転送の場合にも、まず上記ステップＳ３０〜Ｓ３２の処理が行われて、データがＤＭＡコントローラ３へ転送される。但し、データは暗号化されていないデータである。
【００４９】
そしてセレクタ装置１３は、Ａｔｔｒ１＝“０”、Ａｔｔｒ２＝“０”として、これらのＡｔｔｒ１、Ａｔｔｒ２と、ＤＭＡコントローラ３から出力されるデータとをバス１４へ出力する。するとデータブロッカー８は、Ａｔｔｒ２＝“０”であるので、Ａｔｔｒ１を確認することなく、当該データをハードウェアエンジン４へ転送する。
【００５０】
＜効果＞  
本実施形態に係るＬＳＩ１であると、下記（１）の効果が得られる。
【００５１】
（１）データの秘匿性を確保しつつ、複数のセキュリティ区分に対応出来る。  
上記非特許文献１で開示された構成であると、背景技術で説明したとおり、保護すべきデータを転送出来るハードウェアは、ＬＳＩの製造時に決定される。従って、あるハードウェアに対してデータの転送を許可するか遮断するかは、暗号化されているか否かによってのみ決定される。そのため、秘匿性は十分に確保出来るが、複数のセキュリティ区分に対応することが困難であった。
【００５２】
この点、本実施形態に係る構成であると、秘密データと共に転送先情報を合わせて暗号化している。転送先情報とは、当該秘密データの転送を許可するハードウェアの情報である。更に復号化した後、転送先情報を第１属性情報Ａｔｔｒ１として秘密データに付加して、バス１４へ出力する。そしてデータブロッカー６〜９は、付加された第１属性情報Ａｔｔｒ１が各々の転送先識別番号ＤｓｔＮｏと一致した場合にのみ、秘密データの転送を許可する。
【００５３】
従って、暗号化されたデータの各々について、転送先となるハードウェアを自由に決定出来る。つまり、暗号化されたあるデータについてはあるハードウェアに対して転送を許可し、暗号化された別のデータについては別のハードウェアに対して転送を許可する、といった設定が可能となる。
【００５４】
また、付加された第１属性情報Ａｔｔｒ１が各々の転送先識別番号ＤｓｔＮｏと一致しない場合には、データブロッカー６〜９は秘密データの転送を遮断する。従って、秘密データの秘匿性も十分に確保出来る。
【００５５】
よって、データの秘匿性を十分に確保しつつ、複数のセキュリティ区分に対応することが可能となる。
【００５６】
［第２の実施形態］  
次に、この発明の第２の実施形態に係る半導体集積回路装置、バス装置、及びデータ転送方法について説明する。本実施形態は、上記第１の実施形態において、暗号化されたデータにハッシュ（hush）を埋め込んだものである。図６は、本実施形態に係るＬＳＩ１のブロック図である。以下では、第１の実施形態と異なる点についてのみ説明する。
【００５７】
図示するように、本実施形態に係る暗号化されたデータは、秘密データ及び転送先情報（Ａｔｔｒ１）に加えて、ハッシュ値を備えており、これらが暗号化されている。また本実施形態に係るＬＳＩ１は、ハッシュ値確認回路１５を備えている。ハッシュ値確認回路１５について、図７を用いて説明する。図７は、ハッシュ値確認回路１５の動作を示すフローチャートである。
【００５８】
図示するようにハッシュ値確認回路１５は、まず復号化されたデータ（秘密データ、転送先情報、及びハッシュ値）を、復号回路１０から受信する（ステップＳ５０）。そして復号化されたデータにおいて、ハッシュ値を確認する（ステップＳ５１）。
【００５９】
ステップＳ５１の結果、復号化された秘密データがハッシュ値と一致しなかった場合（ステップＳ５２、ＮＯ）、ハッシュ値確認回路１５はＤＭＡコントローラ３に対して、当該データの転送を禁止する（ステップＳ５３）。この場合、復号化されたデータが属性付加装置１１へ転送されなくても良い。
【００６０】
他方、ステップＳ５１の結果、復号化された秘密データがハッシュ値と一致した場合（ステップＳ５２、ＹＥＳ）、ハッシュ値確認回路１５は当該データの転送を許可し、復号化された秘密データと転送先情報とを属性付加装置１１へ転送する（ステップＳ５４）。
【００６１】
＜効果＞  
本実施形態に係るＬＳＩ１であると、第１の実施形態で説明した（１）の効果に加えて、下記（２）の効果が得られる。
【００６２】
（２）データの改竄耐性を高めることが出来る。  
本実施形態に係る構成であると、秘密データと共にハッシュ値を合わせて暗号化している。そしてデータを復号化した後、ハッシュ値確認回路１５が、秘密データとハッシュ値とを比較し、両者が一致した場合にのみ、秘密データの転送を許可する。従って、秘密データが改竄されたような場合にはデータの転送が遮断され、データの改竄耐性を向上出来る。
【００６３】
［第３の実施形態］  
次に、この発明の第３の実施形態に係る半導体集積回路装置、バス装置、及びデータ転送方法について説明する。本実施形態は、上記第１、第２の実施形態において、秘密データ転送後におけるバスの取り扱いに関するものである。以下では、第１、第２の実施形態と異なる点についてのみ説明する。
【００６４】
図８は、本実施形態に係るバス１４の内部構成を模式的に示すブロック図である。図示するようにバス１４は、複数のフリップフロップ３０が直列接続された構成を有している。そしてデータは、フリップフロップ３０を順次転送されることで、宛先となるハードウェアへ伝送される。バス１４は更に、最前段のフリップフロップ３０の前段に設けられたセレクタ３１を備えている。セレクタ３１は、第１属性情報Ａｔｔｒ１に応じて、転送すべきデータと“０”とのいずれかを選択して、最前段のフリップフロップ３０に入力する。より具体的には、Ａｔｔｒ１＝“７”とされた場合には“０”を選択し、それ以外の場合には転送すべきデータを選択する。
【００６５】
次に、本実施形態に係るＤＭＡコントローラ３の動作について、図９を用いて説明する。図９は、復号化されたデータの転送直後におけるＤＭＡコントローラ３の動作を示すフローチャートである。
【００６６】
図示するようにＤＭＡコントローラ３は、復号化されたデータの転送が終了すると、疑似転送を開始する（ステップＳ６０）。疑似転送とは、いずれかのハードウェアにデータを転送することなく、バス１４内のフリップフロップ３０内に固定データを転送する処理である。疑似転送を命令するためにＤＭＡコントローラ３は、第１属性情報Ａｔｔｒ１を“７”として（Ａｔｔｒ１の全ビットを“１”として）、セレクタ装置１３からバス１４へ出力する（ステップＳ６１）。Ａｔｔｒ１が“７”とされると、セレクタ装置１３は疑似転送が開始されたことを認識して、バス１４に書き込みデータを出力しない。またはセレクタ装置１３によって書き込みデータが出力されたとしても、バス１４は書き込みデータを受け付けない。
【００６７】
Ａｔｔｒ１＝“７”を受信したバス１４において、セレクタ３１は“０”を選択して、フリップフロップ３０へ順次転送する（ステップＳ６２）。その結果、バス１４に含まれる全フリップフロップ３０には“０”が格納される（ステップＳ６３）。
【００６８】
＜効果＞  
本実施形態に係るＬＳＩ１であると、第１、第２の実施形態で説明した（１）、（２）の効果に加えて、下記（３）の効果が得られる。
【００６９】
（３）データの秘匿性をより向上出来る。  
通常、バス１４はフリップフロップの集合によって構成される。そして、データの転送後、場合によってフリップフロップには転送したデータが残ってしまうことがある。すると、秘密データがフリップフロップに残ってしまった場合、外部から強制的にバスにアクセスすることで、秘密データが漏洩する恐れがある。
【００７０】
しかし、本実施形態に係る構成であると、ＤＭＡコントローラ３は秘密データの転送後、バス１４内のフリップフロップ３０に固定値“０”を格納している（疑似転送）。すなわち、バス１４を初期化している。従って、フリップフロップ３０から秘密データが漏洩することを防止し、データの秘匿性をより向上出来る。
【００７１】
なお、疑似転送においてフリップフロップ３０に格納するデータは“０”に限られるものでは無く、例えば“１”や、ランダムデータであっても良い。また、上記実施形態では疑似転送を行う際、Ａｔｔｒ１の全ビットを“１”にする場合を例に説明したが、勿論、この場合に限られるものでないし、例えば疑似転送専用のビットを加えても良いし、または専用の信号を設けても良い。
【００７２】
また、セレクタ３１は各フリップフロップ３０に対して設けられても良い。このような場合の構成を図１０に示す。図１０はバス１４のブロック図である。図示するように、各フリップフロップ３０の入力段にセレクタ３１が設けられている。本構成とすれば、“０”を複数のフリップフロップ３０に順次転送する必要が無く、疑似転送を高速に行うことが出来る。勿論、全てのフリップフロップ３０に設けるのでは無く、複数個おきに設けても良い。
【００７３】
以上のように、この発明の第１乃至第３の実施形態に係る半導体集積回路装置であると、秘密データを、当該秘密データの転送先を示す第１属性情報と共に暗号化している。更に属性付加装置１１が、暗号化されたデータが復号化された旨を示す第２属性情報と、前記第１属性情報とを、復号化された秘密データに付加している。そしてデータブロッカー６〜９が、転送されたデータが平文に戻されたデータであって、且つ第１属性情報によって示される転送先が対応するハードウェア２〜５と不一致であった場合に、このデータの転送を遮断する。
【００７４】
従って、暗号化されたデータの各々について、転送先となるハードウェアを自由に決定出来る。その結果、データの秘匿性を十分に確保しつつ、複数のセキュリティ区分に対応することが可能となる。
【００７５】
なお、上記第１乃至第３の実施形態では、転送先識別番号ＤｓｔＮｏは、各データブロッカー６〜９が対応するハードウェア２〜５に応じて付加される番号である場合を例に説明した。しかし、ハードウェアに応じる代わりに、バス１４の出口ＯＵＴ１〜ＯＵＴ４に応じて付加される番号であっても同様である。また、第１属性情報Ａｔｔｒ１がハードウェアのアドレスそのものである場合には、データブロッカー６〜９は第１属性情報Ａｔｔｒ１とアドレス信号Addressとを比較すれば良い。
【００７６】
更に、データブロッカー６〜９はバス１４の内部に設けられても良い。このようなバス１４の構成を図１１に示す。なお図１１では、バス１４の出口とそれに対応したデータブロッカー６〜９のみを図示しており、インタフェース等の記載は省略している。図示するようにバス１４は、データを転送するデータ転送線４０と、前述のデータブロッカー６〜９とを備えている。そしてデータブロッカー６〜９は、データ転送線４０によって転送されるデータに含まれる情報（Ａｔｔｒ１、Ａｔｔｒ２）に基づいて、データが平文に戻されたデータであって、且つ対応する半導体装置（ＲＡＭ２、ＤＭＡコントローラ３、及びハードウェアエンジン４、５）への転送を禁止されたデータであった場合に、半導体装置への転送を遮断する。
【００７７】
また、転送先を示す第１属性情報Ａｔｔｒ１は、転送先識別番号ＤｓｔＮｏそのもので無くても良い。すなわち、例えばＡｔｔｒ１は４ビットの信号であって、各ビットがＲＡＭ２、ＤＭＡコントローラ３、及びハードウェアエンジン４、５に対応し、“１”とされたビットに対応するハードウェアに対して転送が許可されるようにしても良い。例えばＡｔｔｒ１＝（ｂ１、ｂ２、ｂ３、ｂ４）であって、ｂ１〜ｂ４の各々がＲＡＭ２、ＤＭＡコントローラ３、及びハードウェアエンジン４、５に対応していると仮定する。すると、Ａｔｔｒ１＝（１０００）であれば、ＲＡＭ２への転送は許可され、ＤＭＡコントローラ３及びハードウェアエンジン４、５への転送は遮断される。また、Ａｔｔｒ１＝（１１１０）であれば、ＲＡＭ２、ＤＭＡコントローラ３及びハードウェアエンジン４への転送は許可され、ハードウェアエンジン５への転送は遮断される。つまりデータブロッカー６〜９は、自身の対応するビットｂ１〜ｂ４のいずれかを確認し、そのビットが“１”であれば転送を許可し、“０”であれば遮断する。この場合、例えばＡｔｔｒ１＝（００００）の場合に疑似転送を行うものとしても良い。
【００７８】
すなわちバス１４は、外部から入力されたデータを順次転送する複数の保持回路３０を備え、転送回路３は、データの転送終了後、ある要求（例えばバス初期化命令）をバス１４に出力し、この要求に従ってバス１４は、保持回路３０の一部または全部を、あらかじめ定めされた一定の値で上書きする。
【００７９】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【図面の簡単な説明】
【００８０】
【図１】この発明の第１の実施形態に係るＬＳＩのブロック図。
【図２】この発明の第１の実施形態に係るバスにおける信号を示す概念図。
【図３】この発明の第１の実施形態に係るＤＭＡコントローラの動作を示すフローチャート。
【図４】この発明の第１の実施形態に係るデータブロッカーの動作を示すフローチャート。
【図５】この発明の第１の実施形態に係るＬＳＩの動作を示すフローチャート。
【図６】この発明の第２の実施形態に係るＬＳＩのブロック図。
【図７】この発明の第２の実施形態に係るハッシュ値確認回路の動作を示すフローチャート。
【図８】この発明の第３の実施形態に係るバスのブロック図。
【図９】この発明の第３の実施形態に係るＤＭＡコントローラとバスの動作を示すフローチャート。
【図１０】この発明の第３の実施形態の変形例に係るバスのブロック図。
【図１１】この発明の第１乃至第３の実施形態の変形例に係るバスのブロック図。
【符号の説明】
【００８１】
１…ＬＳＩ、２…ＲＡＭ、３…ＤＭＡコントローラ、４、５…ハードウェアエンジン４、６〜９…データブロッカー、１０…復号回路、１１…属性付加装置、１２…メモリ、１３…セレクタ装置、１４…バス、１５…ハッシュ値確認回路、２０、２１、３１…セレクタ、３０…フリップフロップ３０、４０…データ転送線
【図１】
2009277138.tif 000003
【図２】
2009277138.tif 000004
【図３】
2009277138.tif 000005
【図４】
2009277138.tif 000006
【図５】
2009277138.tif 000007
【図６】
2009277138.tif 000008
【図７】
2009277138.tif 000009
【図８】
2009277138.tif 000010
【図９】
2009277138.tif 000011
【図１０】
2009277138.tif 000012
【図１１】
2009277138.tif 000013