(57)【要約】【課題】メモリ内部またはバス上の情報を解読されないセキュリティ性の高いデータ処理装置やＩＣカードを実現可能なスクランブル回路を提供する。【解決手段】被処理データが２つのデータブロックＢ１、Ｂ０からなり、処理済データが２つのデータブロックＢ１’とＢ０’からなり、データブロックＢ１に対し第１スクランブル処理を行い、第１中間データを出力する第１のスクランブルユニット２３１と、データブロックＢ０と第１中間データとの排他的論理和演算を行い、データブロックＢ１’を出力する第１演算ユニット２３３と、データブロックＢ１’に対し第２スクランブル処理を行い、第２中間データを出力する第２のスクランブルユニット２３２と、第２中間データとデータブロックＢ１との排他的論理和演算を行い、データブロックＢ０’を出力する第２演算ユニット２３４と、を備える。【選択図】  図３
2004361986.tif 000002
【特許請求の範囲】
【請求項１】
４ビット以上の被処理データを、所定のスクランブル処理により同ビット数の処理済データに変換するスクランブル回路であって、
前記被処理データは、２ビット以上の第１データブロックと前記第１データブロックと同ビット数の第２データブロックに分割されてなり、また、前記処理済データは、前記第１データブロックと夫々同ビット数の第３データブロックと第４データブロックに分割されてなり、
前記第１データブロックに対し所定の第１スクランブル処理を行い同ビット数の第１中間データを出力する第１のスクランブルユニットと、
前記第２データブロックと前記第１中間データとのビット毎の排他的論理和演算を行い、前記第３データブロックを出力する第１演算ユニットと、
前記第３データブロックに対し前記第１スクランブル処理と同じかまたは異なる第２スクランブル処理を行い同ビット数の第２中間データを出力する第２のスクランブルユニットと、
前記第２中間データと前記第１データブロックとのビット毎の排他的論理和演算を行い、前記第４データブロックを出力する第２演算ユニットと、を備えてなることを特徴とするスクランブル回路。
【請求項２】
前記スクランブルユニットは、入力データ値を、そのスクランブルユニットに固定された変換規則に基づき一意的に定まる出力データ値に変換することを特徴とする請求項１に記載のスクランブル回路。
【請求項３】
前記第１または第２のスクランブルユニットは、入力データの各ビットに対応する複数の入力端子と出力データの各ビットに対応する出力端子間の配線の一部または全部を繋ぎ換えてなり、前記配線の繋ぎ換えにより前記変換規則が固定されることを特徴とする請求項２に記載のスクランブル回路。
【請求項４】
前記第１または第２のスクランブルユニットは、前記配線の繋ぎ換えにより、前記入力データに対し１ビットまたは２ビット以上の循環シフト操作が行われることを特徴とする請求項３に記載のスクランブル回路。
【請求項５】
前記第１または第２のスクランブルユニットは、前記配線の繋ぎ換えにより、前記入力データの所定の２ビットに対し入れ替え操作が行われることを特徴とする請求項３に記載のスクランブル回路。
【請求項６】
前記第１または第２のスクランブルユニットは、前記配線の繋ぎ換えにより、前記入力データに対し、１ビットまたは２ビット以上の循環シフト操作と所定の２ビットに対し入れ替え操作が組み合わせて行われることを特徴とする請求項３に記載のスクランブル回路。
【請求項７】
前記第１または第２のスクランブルユニットは、入力データの一部または全部のビットに対し、所定の論理演算を施す論理演算回路を有し、前記論理演算回路により前記変換規則が固定されることを特徴とする請求項２〜６の何れか１項に記載のスクランブル回路。
【請求項８】
前記論理演算回路は、前記入力データの一部または全部のビットに対し、２ビット以上の論理演算を行うことを特徴とする請求項７に記載のスクランブル回路。
【請求項９】
前記第１または第２のスクランブルユニットは、入力データの一部または全部のビットと前記入力データの入力時のアドレスデータの一部または全部のビットに対して所定の論理演算をする論理演算回路を有し、前記論理演算回路により前記変換規則が前記アドレスデータのアドレス値に応じて一意的に定まるように固定されることを特徴とする請求項２〜８の何れか１項に記載のスクランブル回路。
【請求項１０】
前記第１または第２のスクランブルユニットは、入力データの一部または全部のビットと所定の不揮発性メモリに保持された変換規則固定用データに対して所定の論理演算をする論理演算回路を有し、前記論理演算回路により前記変換規則が前記変換規則固定用データのデータ値に応じて一意的に定まるように固定されることを特徴とする請求項２〜８の何れか１項に記載のスクランブル回路。
【請求項１１】
前記第１または第２のスクランブルユニットは、入力データを予め固定された変換規則に基づき一意的に定まる出力データに変換するスクランブルサブユニットの前記変換規則が相互に異なる複数と、前記入力データの入力時の所定の情報に応じて変化する選択規則に基づき、同じ入力データの入力された前記複数のスクランブルサブユニットの出力データの１つを選択して出力する選択回路を備え、前記選択規則に基づき選択される前記スクランブルサブユニットに応じて、当該スクランブルユニットに固定された前記変換規則が一意的に定まるように固定されることを特徴とする請求項２〜８の何れか１項に記載のスクランブル回路。
【請求項１２】
前記複数のスクランブルサブユニットを備える前記スクランブルユニットは、前記複数のスクランブルサブユニットへの前記入力データの入力時の所定の情報に応じて選択コードを発生し、前記入力時のアドレスデータと関連付けて所定の不揮発性メモリに記憶するコード発生回路と、前記選択コードと前記複数のスクランブルサブユニットを各別に対応付けるルックアップテーブルとを備え、
前記選択回路は、前記コード発生回路が発生した前記選択コードと前記ルックアップテーブルに基づき定まる前記複数のスクランブルサブユニットの内の１つから前記出力データを選択することを特徴とする請求項１１に記載のスクランブル回路。
【請求項１３】
４ビット以上のスクランブル処理済データを、所定のデスクランブル処理により同ビット数の処理前データに逆変換するデスクランブル回路であって、
前記スクランブル処理済データは、２ビット以上の第５データブロックと前記第５データブロックと同ビット数の第６データブロックに分割されてなり、また、前記処理前データは、前記第５データブロックと夫々同ビット数の第７データブロックと第８データブロックに分割されてなり、
前記第５データブロックに対し所定の第３スクランブル処理を行い同ビット数の第３中間データを出力する第３のスクランブルユニットと、
前記第６データブロックと前記第３中間データとのビット毎の排他的論理和演算を行い、前記第７データブロックを出力する第３演算ユニットと、
前記第７データブロックに対し前記第３スクランブル処理と同じかまたは異なる第４スクランブル処理を行い同ビット数の第４中間データを出力する第４のスクランブルユニットと、
前記第４中間データと前記第５データブロックとのビット毎の排他的論理和演算を行い、前記第８データブロックを出力する第４演算ユニットと、を備えてなることを特徴とするデスクランブル回路。
【請求項１４】
前記スクランブルユニットは、入力データ値を、そのスクランブルユニットに固定された変換規則に基づき一意的に定まる出力データ値に変換することを特徴とする請求項１３に記載のデスクランブル回路。
【請求項１５】
前記第３または第４のスクランブルユニットは、入力データの各ビットに対応する複数の入力端子と出力データの各ビットに対応する出力端子間の配線の一部または全部を繋ぎ換えてなり、前記配線の繋ぎ換えにより前記変換規則が固定されることを特徴とする請求項１４に記載のデスクランブル回路。
【請求項１６】
前記第３または第４のスクランブルユニットは、前記配線の繋ぎ換えにより、前記入力データに対し１ビットまたは２ビット以上の循環シフト操作が行われることを特徴とする請求項１５に記載のデスクランブル回路。
【請求項１７】
前記第３または第４のスクランブルユニットは、前記配線の繋ぎ換えにより、前記入力データの所定の２ビットに対し入れ替え操作が行われることを特徴とする請求項１５に記載のデスクランブル回路。
【請求項１８】
前記第３または第４のスクランブルユニットは、前記配線の繋ぎ換えにより、前記入力データに対し、１ビットまたは２ビット以上の循環シフト操作と所定の２ビットに対し入れ替え操作が組み合わせて行われることを特徴とする請求項１５に記載のデスクランブル回路。
【請求項１９】
前記第３または第４のスクランブルユニットは、入力データの一部または全部のビットに対し、所定の論理演算を施す論理演算回路を有し、前記論理演算回路により前記変換規則が固定されることを特徴とする請求項１４〜１８の何れか１項に記載のデスクランブル回路。
【請求項２０】
前記論理演算回路は、前記入力データの一部または全部のビットに対し、２ビット以上の論理演算を行うことを特徴とする請求項１９に記載のデスクランブル回路。
【請求項２１】
前記第３または第４のスクランブルユニットは、入力データの一部または全部のビットと前記入力データの入力時のアドレスデータの一部または全部のビットに対して所定の論理演算をする論理演算回路を有し、前記論理演算回路により前記変換規則が前記アドレスデータのアドレス値に応じて一意的に定まるように固定されることを特徴とする請求項１４〜２０の何れか１項に記載のデスクランブル回路。
【請求項２２】
前記第３または第４のスクランブルユニットは、入力データの一部または全部のビットと所定の不揮発性メモリに保持された変換規則固定用データに対して所定の論理演算をする論理演算回路を有し、前記論理演算回路により前記変換規則が前記変換規則固定用データのデータ値に応じて一意的に定まるように固定されることを特徴とする請求項１４〜２０の何れか１項に記載のデスクランブル回路。
【請求項２３】
前記第３または第４のスクランブルユニットは、入力データを予め固定された変換規則に基づき一意的に定まる出力データに変換するスクランブルサブユニットの前記変換規則が相互に異なる複数と、前記入力データの入力時の所定の情報に応じて変化する選択規則に基づき、同じ入力データの入力された前記複数のスクランブルサブユニットの出力データの１つを選択して出力する選択回路を備え、前記選択規則に基づき選択される前記スクランブルサブユニットに応じて、当該スクランブルユニットに固定された前記変換規則が一意的に定まるように固定されることを特徴とする請求項１４〜２０の何れか１項に記載のデスクランブル回路。
【請求項２４】
前記複数のスクランブルサブユニットを備える前記スクランブルユニットは、所定の不揮発性メモリに記憶された選択コードを、前記複数のスクランブルサブユニットへの前記入力データの入力時のアドレスデータに基づき読み出すコード読み出し回路と、前記選択コードと前記複数のスクランブルサブユニットを各別に対応付けるルックアップテーブルとを備え、
前記選択回路は、前記コード読み出し回路が読み出した前記選択コードと前記ルックアップテーブルに基づき定まる前記複数のスクランブルサブユニットの内の１つから前記出力データを選択することを特徴とする請求項２３に記載のデスクランブル回路。
【請求項２５】
複数の機能ブロックが内部バスで接続されてなるデータ処理装置であって、
前記内部バスと外部バスとの第１のバスインターフェイス部に、前記内部バス上の一部または全部のデータを前記被処理データとし、前記外部バス上の一部または全部のデータを前記処理済データとする請求項１〜１２の何れか１項に記載のスクランブル回路を備えることを特徴とするデータ処理装置。
【請求項２６】
前記内部バスと前記外部バスを複数のブロックに分割し、前記ブロック毎に前記スクランブル回路を備えていることを特徴とする請求項２５に記載のデータ処理装置。
【請求項２７】
複数の機能ブロックが内部バスで接続されてなるデータ処理装置であって、
前記内部バスと外部バスとの第２のバスインターフェイス部に、前記内部バス上の一部または全部のデータを前記処理前データとし、前記外部バス上の一部または全部のデータを前記スクランブル処理済データとする請求項１３〜２４の何れか１項に記載のデスクランブル回路を備えることを特徴とするデータ処理装置。
【請求項２８】
前記内部バスと前記外部バスとの第２のバスインターフェイス部に、前記内部バス上の一部または全部のデータを前記処理前データとし、前記外部バス上の一部または全部のデータを前記スクランブル処理済データとする請求項１３〜２４の何れか１項に記載のデスクランブル回路を備えることを特徴とする請求項２５または２６に記載のデータ処理装置。
【請求項２９】
前記スクランブル回路の前記第１のスクランブルユニットと前記デスクランブル回路の前記第４のスクランブルユニットが同じ変換規則に基づく同じスクランブル処理を行い、前記スクランブル回路の前記第２のスクランブルユニットと前記デスクランブル回路の前記第３のスクランブルユニットが同じ変換規則に基づく同じスクランブル処理を行うことを特徴とする請求項２８に記載のデータ処理装置。
【請求項３０】
前記内部バスと前記外部バスを複数のブロックに分割し、前記ブロック毎に前記デスクランブル回路を備えていることを特徴とする請求項２７〜２９の何れか１項に記載のデータ処理装置。
【請求項３１】
前記内部バスと前記外部バスがデータバスであることを特徴とする請求項２５〜３０の何れか１項に記載のデータ処理装置。
【請求項３２】
前記複数の機能ブロックが第２の内部バスで接続されてなり、
前記第２の内部バスと第２の外部バスとの第３のバスインターフェイス部に、前記第２の内部バス上の一部または全部のデータを前記被処理データとし、前記第２の外部バス上の一部または全部のデータを前記処理済データとする請求項１〜１２の何れか１項に記載のスクランブル回路を備えていることを特徴とする請求項２５〜３１の何れか１項に記載のデータ処理装置。
【請求項３３】
前記第２の内部バスと前記第２の外部バスを複数のブロックに分割し、前記ブロック毎に前記スクランブル回路を備えていることを特徴とする請求項３２に記載のデータ処理装置。
【請求項３４】
前記第２の内部バスと前記第２の外部バスがアドレスバスであることを特徴とする請求項３２または３３に記載のデータ処理装置。
【請求項３５】
前記複数の機能ブロック、及び、前記バスインターフェイス部が同一半導体基板上に形成された半導体集積回路で構成されていることを特徴とする請求項２５〜３４の何れか１項に記載のデータ処理装置。
【請求項３６】
前記機能ブロックとして算術論理演算器を含み前記内部バス及び前記外部バスを制御するワンチップマイクロコンピュータとしての機能を有することを特徴とする請求項３５に記載のデータ処理装置。
【請求項３７】
請求項３６に記載のデータ処理装置をシステム制御用のワンチップマイクロコンピュータとして用いたことを特徴とするＩＣカード。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理装置のセキュリティ技術に関し、特に、半導体集積回路で構成されたデータ処理装置において、悪意のある攻撃者のプロービングによる半導体集積回路内部の情報読み出しや改変、剥離解析による半導体集積回路内部の情報読み出しから、内部の情報を守るセキュリティ技術に関する。
【０００２】
【従来の技術】
個人情報等の機密情報を格納し、その情報を処理するＩＣカードなどのシステムに用いられるワンチップマイクロコントローラでは高いセキュリティ性が要求され、攻撃者のアタック（機密情報の解析行為）により、内部の情報が読み出されたり書き換えられたりできないように、これら情報を保護する必要がある。
【０００３】
従来は、メモリ及びワンチップコントローラを含む論理回路間で信号を伝達するアドレスバス、データバスの配線を不規則に接続し、各信号線が有する機能の特定を難しくすることで解析行為から情報を保護していた。しかし、昨今の解析技術では剥離解析により信号線の特定が現実的に可能なレベルになってきた。
【０００４】
この問題に対して、下記の特許文献１では、バス上の信号を周期的に順序を換えることでバススクランブルを行う手法が開示されている。特許文献１で開示されている技術を図１５に示す。符号１は半導体集積回路を示しており、その内部はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ  ）１０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０、  ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０、Ｅ２ＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）４０等の機能ブロックからなり、更に、タイミング制御回路６０を含む。各ブロック１０，２０，３０，４０のＩ／Ｏ部（データの入出力部）及びアドレスの入出力部には、これらに隣接する形で第１スクランブル回路１，２１，３１，４１が設けられている。また、各第１スクランブル回路１，２１，３１，４１を互いに接続するバスライン５０が配置されている。タイミング制御回路６０は所定のタイミングでタイミング制御信号を出力し、各第１スクランブル回路１，２１，３１，４１はこのタイミング制御信号に従って、バスライン５０の各信号の接続を入れ替えてスクランブルする。すなわち、時系列的にスクランブルを行うことによりバスライン５０上を伝達する情報の解析をより困難にするというものである。尚、各第１スクランブル回路１，２１，３１，４１の外部（バスライン５０側）では信号を入れ替えるようスクランブルされるが、その内側（メモリＲＡＭ２０、  ＲＯＭ３０、Ｅ２ＰＲＯＭ４０側）では元のデータに復元されるようスクランブルされる。
【０００５】
このように、図１５に示される技術ではＣＰＵ１０とメモリ（ＲＡＭ２０、  ＲＯＭ３０、Ｅ２ＰＲＯＭ４０）間のデータはスクランブルされているが、メモリ上のデータにはスクランブルがかかっていない。すなわち、バスライン５０上のデータは保護することができているが、メモリ上或いはその内部に格納されるデータを直接読み出したり書き換えたりすることに対しては無防備である。
【０００６】
【特許文献１】
特開平１１−２０３２３７号公報
【０００７】
【発明が解決しようとする課題】
このように、攻撃者がＩＣ内部のバスやメモリにプロービングしてデータを読み出したり書き換えたり、剥離解析により単体となったメモリからデータを読み出して元の情報を解読することに対してセキュリティ対策が十分に行われないという欠点があった。
【０００８】
本発明は、上記問題点に鑑みてなされたもので、その目的は、バス上を伝達する信号をスクランブルするとともに、メモリ上だけでなく、その内部にもスクランブルがかかったデータを保存するため、バス或いはメモリ上の何れのデータに対しても、それらを直接読み出したり書き換えたりすることに対し、元の情報を解読できない回路を提供することにある。
【０００９】
【課題を解決するための手段】
この目的を達成するための本発明に係るスクランブル回路は、４ビット以上の被処理データを、所定のスクランブル処理により同ビット数の処理済データに変換するスクランブル回路であって、前記被処理データは、２ビット以上の第１データブロックと前記第１データブロックと同ビット数の第２データブロックに分割されてなり、また、前記処理済データは、前記第１データブロックと夫々同ビット数の第３データブロックと第４データブロックに分割されてなり、前記第１データブロックに対し所定の第１スクランブル処理を行い同ビット数の第１中間データを出力する第１のスクランブルユニットと、前記第２データブロックと前記第１中間データとのビット毎の排他的論理和演算を行い、前記第３データブロックを出力する第１演算ユニットと、前記第３データブロックに対し前記第１スクランブル処理と同じかまたは異なる第２スクランブル処理を行い同ビット数の第２中間データを出力する第２のスクランブルユニットと、前記第２中間データと前記第１データブロックとのビット毎の排他的論理和演算を行い、前記第４データブロックを出力する第２演算ユニットと、を備えてなることを特徴とする。
【００１０】
更に、本発明に係るスクランブル回路は、前記スクランブルユニットが、入力データ値を、そのスクランブルユニットに固定された変換規則に基づき一意的に定まる出力データ値に変換することを特徴とする。
【００１１】
上記特徴を有する本発明に係るスクランブル回路によれば、被処理データに対しスクランブル処理を施した処理済データが得られ、元の情報が推測不可能になる。また、第１及び第２のスクランブルユニットにおけるスクランブル処理の変換規則を適宜設定することで、スクランブル処理のアルゴリズムを多種多様に自在に変更することができ、セキュリティ性の向上が図れる。
【００１２】
この目的を達成するための本発明に係るデスクランブル回路は、４ビット以上のスクランブル処理済データを、所定のデスクランブル処理により同ビット数の処理前データに逆変換するデスクランブル回路であって、前記スクランブル処理済データは、２ビット以上の第５データブロックと前記第５データブロックと同ビット数の第６データブロックに分割されてなり、また、前記処理前データは、前記第５データブロックと夫々同ビット数の第７データブロックと第８データブロックに分割されてなり、前記第５データブロックに対し所定の第３スクランブル処理を行い同ビット数の第３中間データを出力する第３のスクランブルユニットと、前記第６データブロックと前記第３中間データとのビット毎の排他的論理和演算を行い、前記第７データブロックを出力する第３演算ユニットと、前記第７データブロックに対し前記第３スクランブル処理と同じかまたは異なる第４スクランブル処理を行い同ビット数の第４中間データを出力する第４のスクランブルユニットと、前記第４中間データと前記第５データブロックとのビット毎の排他的論理和演算を行い、前記第８データブロックを出力する第４演算ユニットと、を備えてなることを特徴とする。
【００１３】
更に、本発明に係るデスクランブル回路は、前記スクランブルユニットは、入力データ値を、そのスクランブルユニットに固定された変換規則に基づき一意的に定まる出力データ値に変換することを特徴とする。
【００１４】
上記特徴を有する本発明に係るデスクランブル回路によれば、本発明に係るスクランブル回路によってスクランブル処理されたスクランブル処理済データを元の処理前データに逆変換することができる。また、本発明に係るデスクランブル回路は、スクランブル回路と同じ回路構成で、スクランブル回路の第１のスクランブルユニットを第４のスクランブルユニットに使用し、スクランブル回路の第２のスクランブルユニットを第３のスクランブルユニットに使用することで簡単に構成できる。
【００１５】
更に、本発明に係るスクランブル回路及びデスクランブル回路において、スクランブルユニットが、入力データの各ビットに対応する複数の入力端子と出力データの各ビットに対応する出力端子間の配線の一部または全部を繋ぎ換えてなり、前記配線の繋ぎ換えにより前記変換規則が固定されるように構成するのも好ましい。この場合、前記配線の繋ぎ換えにより、前記入力データに対し１ビットまたは２ビット以上の循環シフト操作が行われるように構成する。または、前記配線の繋ぎ換えにより、前記入力データの所定の２ビットに対し入れ替え操作が行われるように構成する。或いは、前記配線の繋ぎ換えにより、前記入力データに対し、１ビットまたは２ビット以上の循環シフト操作と所定の２ビットに対し入れ替え操作が組み合わせて行われるように構成する。特に、最後の構成方法の場合、配線の繋ぎ換えについて全ての組み合わせを網羅できる。
【００１６】
更に、本発明に係るスクランブル回路及びデスクランブル回路において、スクランブルユニットが、入力データの一部または全部のビットに対し、所定の論理演算を施す論理演算回路を有し、前記論理演算回路により前記変換規則が固定されるように構成するのも好ましい。この場合、前記論理演算回路は、前記入力データの一部または全部のビットに対し、２ビット以上の論理演算を行うように構成する。
【００１７】
更に、本発明に係るスクランブル回路及びデスクランブル回路において、スクランブルユニットが、入力データの一部または全部のビットと前記入力データの入力時のアドレスデータの一部または全部のビットに対して所定の論理演算をする論理演算回路を備えて構成され、前記論理演算回路により前記変換規則が前記アドレスデータのアドレス値に応じて一意的に定まることが好ましい。
【００１８】
更に、本発明に係るスクランブル回路及びデスクランブル回路において、スクランブルユニットが、入力データの一部または全部のビットと所定の不揮発性メモリに保持された変換規則固定用データに対して所定の論理演算をする論理演算回路を備えて構成され、前記論理演算回路により前記変換規則が前記変換規則固定用データのデータ値に応じて一意的に定まるように固定されることが好ましい。
【００１９】
更に、本発明に係るスクランブル回路及びデスクランブル回路において、スクランブルユニットが、入力データを予め固定された変換規則に基づき一意的に定まる出力データに変換するスクランブルサブユニットの前記変換規則が相互に異なる複数と、前記入力データの入力時の所定の情報に応じて変化する選択規則に基づき、同じ入力データの入力された前記複数のスクランブルサブユニットの出力データの１つを選択して出力する選択回路を備えて構成され、前記選択規則に基づき選択される前記スクランブルサブユニットに応じて、当該スクランブルユニットに固定された前記変換規則が一意的に定まるように固定されることが好ましい。この場合、スクランブル回路は、前記複数のスクランブルサブユニットを備える前記スクランブルユニットが、前記複数のスクランブルサブユニットへの前記入力データの入力時の所定の情報に応じて選択コードを発生し、前記入力時のアドレスデータと関連付けて所定の不揮発性メモリに記憶するコード発生回路と、前記選択コードと前記複数のスクランブルサブユニットを各別に対応付けるルックアップテーブルとを備え、前記選択回路が、前記コード発生回路が発生した前記選択コードと前記ルックアップテーブルに基づき定まる前記複数のスクランブルサブユニットの内の１つから前記出力データを選択するように構成されるのが好ましい。また、デスクランブル回路は、前記複数のスクランブルサブユニットを備える前記スクランブルユニットが、所定の不揮発性メモリに記憶された選択コードを、前記複数のスクランブルサブユニットへの前記入力データの入力時のアドレスデータに基づき読み出すコード読み出し回路と、前記選択コードと前記複数のスクランブルサブユニットを各別に対応付けるルックアップテーブルとを備え、前記選択回路が、前記コード読み出し回路が読み出した前記選択コードと前記ルックアップテーブルに基づき定まる前記複数のスクランブルサブユニットの内の１つから前記出力データを選択するように構成されるのが好ましい。
【００２０】
上記のスクランブルユニットの各構成方法により、スクランブルユニットにおけるスクランブル処理の基準となる変換規則として多種多様なものをハードウェア的に規定することができる。これにより、スクランブル処理前後のデータ相関の解読が不可能若しくは極めて困難となる。
【００２１】
本発明に係るデータ処理装置は、複数の機能ブロックが内部バスで接続されてなり、前記内部バスと外部バスとの第１のバスインターフェイス部に、前記内部バス上の一部または全部のデータを前記被処理データとし、前記外部バス上の一部または全部のデータを前記処理済データとする本発明に係るスクランブル回路を備えることを特徴とする。
【００２２】
上記特徴を有する本発明に係るデータ処理装置によれば、内部バス上のデータにスクランブル処理を施した後に外部バスへ伝送し、例えば外部の記憶装置等に記憶することができ、データのセキュリティ性が飛躍的に向上する。
【００２３】
また、本発明に係るデータ処理装置は、複数の機能ブロックが内部バスで接続されてなり、前記内部バスと外部バスとの第２のバスインターフェイス部に、前記内部バス上の一部または全部のデータを前記処理前データとし、前記外部バス上の一部または全部のデータを前記スクランブル処理済データとする本発明に係るデスクランブル回路を備えることを特徴とする。
【００２４】
上記特徴を有する本発明に係るデータ処理装置によれば、本発明に係るスクランブル回路でスクランブル処理されたスクランブル処理済データを外部から受信してデスクランブル回路でデスクランブル処理することで、元の処理前データに逆変換できるので、データのセキュリティ性を確保しながら、内部バス上において元の処理前データを利用できる。
【００２５】
更に、本発明に係るデータ処理装置は、複数の機能ブロックが内部バスで接続されてなり、前記内部バスと外部バスとの第１のバスインターフェイス部に、前記内部バス上の一部または全部のデータを前記被処理データとし、前記外部バス上の一部または全部のデータを前記処理済データとする本発明に係るスクランブル回路を備え、前記内部バスと外部バスとの第２のバスインターフェイス部に、前記内部バス上の一部または全部のデータを前記処理前データとし、前記外部バス上の一部または全部のデータを前記スクランブル処理済データとする本発明に係るデスクランブル回路を備えることを特徴とする。
【００２６】
上記特徴を有する本発明に係るデータ処理装置によれば、内部バス上のデータにスクランブル処理を施した後に外部バスへ伝送し、例えば外部の記憶装置等に記憶することができ、データのセキュリティ性が飛躍的に向上する。更に、本発明に係るスクランブル回路でスクランブル処理されたスクランブル処理済データを外部から受信してデスクランブル回路でデスクランブル処理することで、元の処理前データに逆変換できるので、データのセキュリティ性を確保しながら、内部バス上において元の処理前データを利用できる。
【００２７】
ここで、スクランブル回路は、同じデータ処理装置内のデスクランブル回路のデスクランブル処理対象であるスクランブル処理済データをスクランブル処理したスクランブル回路と必ずしも同じである必要はないが、同じであれば、同じデータ処理装置内でスクランブル処理とデスクランブル処理の両方を処理できるので、スクランブル処理済データを外部の記憶装置に記憶し、それを読み出して再利用する作業等が可能となる。
【００２８】
但し、後者の場合、つまり、デスクランブル回路が同じデータ処理装置内のスクランブル回路によるスクランブル処理済データをデスクランブル処理する場合は、スクランブル回路の第１のスクランブルユニットをデスクランブル回路の第４のスクランブルユニットに使用し、スクランブル回路の第２のスクランブルユニットをデスクランブル回路の第３のスクランブルユニットに使用することで、簡単に実現できる。
【００２９】
更に、本発明に係るデータ処理装置は、前記複数の機能ブロックが第２の内部バスで接続されてなり、前記第２の内部バスと第２の外部バスとの第３のバスインターフェイス部に、前記第２の内部バス上の一部または全部のデータを前記被処理データとし、前記第２の外部バス上の一部または全部のデータを前記処理済データとする本発明に係るスクランブル回路を備えていることを特徴とする。この特徴を有する本発明に係るデータ処理装置によれば、更に、データ及びデータ処理上のセキュリティ性を向上することができる。
【００３０】
また、本発明に係るデータ処理装置において、前記内部バスと前記外部バス、或いは、前記第２の内部バスと第２の外部バスを、夫々複数のブロックに分割し、前記ブロック毎に本発明に係るスクランブル回路またはデスクランブル回路を備えるように構成しても構わない。
【００３１】
更に、本発明に係るデータ処理装置において、前記内部バスと前記外部バスがデータバスであり、前記第２の内部バスと前記第２の外部バスがアドレスバスであることを特徴とする。この特徴を有する本発明に係るデータ処理装置によれば、データバスをスクランブル処理するスクランブル回路と、デスクランブル処理するデスクランブル回路を同じデータ処理装置内に備え、データバスとメモリ上のデータをスクランブル処理することができる。また、アドレスバスをスクランブルするスクランブル回路をデータ処理装置内に備え、メモリをスクランブル処理済のアドレスでアクセスすることにより、データをより安全に保護することができる。
【００３２】
更に、本発明に係るデータ処理装置は、前記複数の機能ブロック、及び、前記バスインターフェイス部が同一半導体基板上に形成された半導体集積回路で構成されていることを特徴とすし、更に、前記機能ブロックとして算術論理演算器を含み前記内部バス及び前記外部バスを制御するワンチップマイクロコンピュータとしての機能を有することを特徴とする。これらの特徴により、攻撃者がＩＣ内部のバスやメモリにプロービングしてデータを読み出したり書き換えたり、剥離解析により単体となったメモリからデータを読み出して元の情報を解読することが不可能或いは極めて困難となる。
【００３３】
本発明に係るＩＣカードは、本発明に係るデータ処理装置システム制御用のワンチップマイクロコンピュータとして用いたことを特徴とする。この特徴を有する本発明に係るＩＣカードによれば、データバスとメモリ上のデータに対してスクランブル処理を施せ、セキュリティ性の高いＩＣカードが実現できる。
【００３４】
【発明の実施の形態】
本発明に係るスクランブル回路、デスクランブル回路、及び、これらを備えたデータ処理装置の一実施の形態につき、図面に基づいて説明する。
【００３５】
図１に、本実施の形態に係るスクランブル回路２２０，２３０、デスクランブル回路２４０を有する半導体集積回路１００（以下、「ＩＣ」と記す。）の内部構成の一例を示す。
【００３６】
図１に示すＩＣ１００は、本発明に係るデータ処理装置の一例であるＣＰＵ２００と、ＣＰＵ２００と外部データバス６００及び外部アドレスバス７００で相互に接続されているＲＯＭ３００、ＲＡＭ４００、電気的に書き換え可能なフラッシュＥ２ＰＲＯＭ等の不揮発性メモリ５００等の外部メモリ群とを備え、ワンチップマイクロコンピュータとして構成されている。
【００３７】
ＣＰＵ２００内は、内部データバス２１３を介して、ＡＬＵ（算術論理演算器）２１０、キャッシュメモリ２１１、命令デコーダコントローラ２１２、レジスタ群２１４、データバス制御回路２１５等が相互に接続されている。また、レジスタ群２１４はアドレスバス制御回路２１６と接続されている。
【００３８】
ＣＰＵ２００は、第１スクランブル回路２３０によって内部データバス２１３上のデータにスクランブル処理を行い外部データバス６００に出力する。また、外部データバス６００からデータを入力する時は、デスクランブル回路２４０によってデスクランブル処理を行い、内部データバス２１３に転送する。
【００３９】
ＣＰＵ２００が、外部メモリ群にアクセスする時のアドレスは、第２スクランブル回路２２０によってスクランブル処理を行ったアドレスによりアクセスする。尚、第１スクランブル回路２３０と第２スクランブル回路２２０は、スクランブル処理のアルゴリズムが同じであっても、異なっていても構わない。つまり、第１及び第２スクランブル回路２２０，２３０間で、後述するスクランブル回路の変換規則を固定するスクランブルユニットの回路構成が、同じ構成でも、別の構成でも構わない。
【００４０】
図１に示す実施形態においては、アドレスバスに対しスクランブル処理を行っているが、アドレスバスのスクランブル処理は、必須ではない。従って、図２に示すように、データバスに対してのみスクランブル処理を行うようにし、第２スクランブル回路２２０を設けない構成であっても構わない。ここで、図２に示す構成では、第２スクランブル回路２２０を有しない以外は、図１の実施形態の構成と同じである。
【００４１】
次に、本発明に係るスクランブル回路（第１スクランブル回路２３０、第２スクランブル回路２２０）、及び、デスクランブル回路２４０の回路構成につき説明する。以下、スクランブル回路については、第１スクランブル回路２３０と第２スクランブル回路２２０で基本の回路構成は同じであるので、一方につき説明する。図３（ａ）にスクランブル回路２３０の回路図、図３（ｂ）に、デスクランブル回路２４０の回路図を夫々示す。
【００４２】
図３（ａ）に示すように、スクランブル回路２３０へは、スクランブル前のデータを第１データブロックＢ１（ｎ／２ｂｉｔ〜ｎ−１ｂｉｔ）、第２データブロックＢ０（０ｂｉｔ〜ｎ／２−１ｂｉｔ）の２つのデータブロックに分割したデータが入力される。また、スクランブル回路２３０は、第３ブロックデータＢ１’（ｎ／２ｂｉｔ〜ｎ−１ｂｉｔ）と第４データブロックＢ０’（０ｂｉｔ〜ｎ／２−１ｂｉｔ）の２つのデータブロックからなるスクランブル処理後の同ビット数のデータを出力する。
【００４３】
スクランブル回路２３０は、入力Ｂ１に対し第１スクランブル処理をする第１のスクランブルユニット２３１と、第１のスクランブルユニット２３１の出力（第１中間データ）と入力Ｂ０に対してビット毎に排他的論理和を計算する複数の排他的論理和回路からなる第１演算ユニット２３３と、第１演算ユニット２３３の出力である第３ブロックデータＢ１’に対し第２スクランブル処理をする第２のスクランブルユニット２３２と、第２のスクランブルユニット２３２の出力（第２中間データ）と入力Ｂ１に対してビット毎に排他的論理和を計算して第４データブロックＢ０’を出力する複数の排他的論理和回路からなる第２演算ユニット２３４を備えて構成される。
【００４４】
同様に、図３（Ｂ）に示すように、デスクランブル回路２４０へは、デスクランブル前のスクランブル処理済データを第５データブロックＢ１’（ｎ／２ｂｉｔ〜ｎ−１ｂｉｔ）、第６データブロックＢ０’（０  ｂｉｔ〜ｎ／２−１  ｂｉｔ）の２つのデータブロックに分割したデータが入力される。また、デスクランブル回路２４０は、第７ブロックデータＢ１”（ｎ／２ｂｉｔ〜ｎ−１ｂｉｔ）と第８データブロックＢ０”（０ｂｉｔ〜ｎ／２−１ｂｉｔ）の２つのデータブロックからなるデスクランブル処理によってスクランブル処理前に逆変換された同ビット数の処理前データを出力する。
【００４５】
デスクランブル回路２４０は、入力Ｂ１’に対し第３スクランブル処理（本実施形態では、前記第２スクランブル処理と同じ）をする第３のスクランブルユニット２３２（本実施形態では、第２のスクランブルユニット２３２と同じ）と、第３のスクランブルユニット２３２の出力（第３中間データ）と入力Ｂ０’に対してビット毎に排他的論理和を計算する複数の排他的論理和回路からなる第３演算ユニット２３３と、第３演算ユニット２３３の出力である第７データブロックＢ１”に対し第４スクランブル処理（本実施形態では、前記第１スクランブル処理と同じ）をする第４のスクランブルユニット２３１（本実施形態では、第１のスクランブルユニット２３１と同じ）と、第４のスクランブルユニット２３１の出力（第４中間データ）と入力Ｂ１’に対してビット毎に排他的論理和を計算して第８データブロックＢ０”を出力する排他的論理和回路からなる第４演算ユニット２３４を備えて構成される。
【００４６】
ここで、各スクランブルユニット２３１、２３２の実行する各スクランブル処理は、入力データ値を、そのスクランブルユニットに固定された変換規則に基づき一意的に定まる出力データ値に変換するように構成されている。
【００４７】
ここで注意が必要なのは、スクランブル回路２３０内の第１のスクランブルユニット２３１とデスクランブル回路２４０内の第４のスクランブルユニット２３１は同じ変換規則に基づき同じスクランブル処理を行う回路構成でないといけない点である。同様に、スクランブル回路２３０内の第２のスクランブルユニット２３２とデスクランブル回路２４０内の第３のスクランブルユニット２３２も同じ回路構成でないといけない。また、第１、第４のスクランブルユニット２３１と第２、第３のスクランブルユニット２３２は同じ構成でも構わないし、別の構成をとっても構わない。但し、別の回路構成を採る方がよりセキュリティ性を高めることができる。また、第１乃至第４演算ユニット２３３，２３４は、夫々回路構成上は同じである。
【００４８】
次に、第１（第４）のスクランブルユニット２３１の操作をＳ１関数、第２（第３）のスクランブルユニット２３２の操作をＳ２関数と夫々表現して、スクランブル回路２３０とデスクランブル回路２４０の動作を説明する。
【００４９】
スクランブル回路２３０の動作（スクランブル処理）を以下の数１及び数２で示す。
【００５０】
【数１】
Ｂ１’＝  Ｂ０  ｘｏｒ  Ｓ１（Ｂ１）
【数２】
Ｂ０’＝  Ｂ１  ｘｏｒ  Ｓ２（Ｂ１’）
【００５１】
次に、デスクランブル回路２４０の動作（デスクランブル処理）を以下の数３及び数４で示す。
【００５２】
【数３】
Ｂ１”＝  Ｂ０’  ｘｏｒ  Ｓ２（Ｂ１’）
【数４】
Ｂ０”＝  Ｂ１’  ｘｏｒ  Ｓ１（Ｂ１”）
【００５３】
数１〜数４の式を用いて、スクランブル回路２３０でスクランブル処理したデータがデスクランブル回路２４０でのデスクランブル処理により逆変換され元のデータに戻ることを示す。数３のＢ０’に数２のＢ０’を代入してＢ０’を消去すると、下記の数５が得られる。ここで、多変数の排他的論理和演算はその演算順序に依らず同じ演算結果となり、また、同じ値同士の排他的論理和は０になるので、数６に示すようになる。
【００５４】
【数５】
Ｂ１”＝Ｂ１  ｘｏｒ  Ｓ２（Ｂ１’）  ｘｏｒ  Ｓ２（Ｂ１’）
【数６】
Ｂ１”＝Ｂ１  ｘｏｒ  ０＝Ｂ１
【００５５】
次に、数４のＢ１’に数１のＢ１’を代入してＢ１’を消去すると、下記の数７が得られる。更に、数６のＢ１”を数７のＢ１”に代入して消去し、多変数の排他的論理和演算はその演算順序に依らず同じ演算結果となり、また、同じ値同士の排他的論理和は０になるので、数８に示す結果となる。
【００５６】
【数７】
Ｂ０”＝Ｂ０  ｘｏｒ  Ｓ１（Ｂ１）  ｘｏｒ  Ｓ１（Ｂ１”）
【数８】
Ｂ０”＝Ｂ０  ｘｏｒ  Ｓ１（Ｂ１）  ｘｏｒ  Ｓ１（Ｂ１）＝Ｂ０
【００５７】
以上、数１〜数８により、スクランブル前のデータＢ０、Ｂ１とデスクランブル後のデータＢ０”、Ｂ１”が同じであることが証明される。また、上記の計算は、関数Ｓ１及びＳ２の演算内容に依存せずに成立するため、各関数Ｓ１及びＳ２は入力される任意の値に対して出力が一意的に定まるという条件を満たせば第１及び第２のスクランブルユニット２３１、２３２で実行するスクランブル処理の内容は任意に選択し得る。従って、セキュリティ強度と回路規模等のコスト或いは実現容易性のトレードオフを勘案して関数Ｓ１及びＳ２として最適な処理を選択すれば良い。
【００５８】
次に、第１または第２のスクランブルユニット２３１、２３２の夫々のスクランブル処理を規定する変換規則を固定するための回路構成について説明する。先ず、図４に、第１または第２のスクランブルユニット２３１、２３２の回路構成の第１の実施例を示す。
【００５９】
入力［Ｄｎ−１，Ｄｎ−２，・・，Ｄ１，Ｄ０］に対して、出力［ＳＤｎ−１，ＳＤｎ−２，・・，ＳＤ１，ＳＤ０］は１ビットの右シフトを行っている。この操作により出力［ＳＤｎ−１，ＳＤｎ−２，・・，ＳＤ１，ＳＤ０］は、以下の数９に示すように表現される。尚、Ｄ０は循環して左側１ビット目にシフトするものとする。
【００６０】
【数９】
［ＳＤｎ−１，ＳＤｎ−２，・・，ＳＤ１，ＳＤ０］＝［Ｄ０，Ｄｎ−１，・・，Ｄ２，Ｄ１］
【００６１】
図５に、第１または第２のスクランブルユニット２３１、２３２の回路構成の第２の実施例を示す。
【００６２】
入力［Ｄｎ−１，Ｄｎ−２，・・，Ｄ１，Ｄ０］に対して、出力［ＳＤｎ−１，ＳＤｎ−２，・・，ＳＤ１，ＳＤ０］は隣り合った２ビットずつの入れ替えを行っている。この操作により出力［ＳＤｎ−１，ＳＤｎ−２，・・，ＳＤ１，ＳＤ０］は、以下の数１０に示すように表現される。
【００６３】
【数１０】
［ＳＤｎ−１，ＳＤｎ−２，・・，ＳＤ１，ＳＤ０］＝［Ｄｎ−２，Ｄｎ−１，・・，Ｄ０，Ｄ１］
【００６４】
また、図には示さないが、第１または第２のスクランブルユニット２３１、２３２の回路構成の第３の実施例として、上記第１の実施例と第２の実施例のスクランブル処理を任意に組み合わせることにより、更に多様な配線の入れ替えも実現することができる。
【００６５】
図６に、第１または第２のスクランブルユニット２３１、２３２の回路構成の第４の実施例を示す。上記第１〜第３の実施例では、変換規則の固定は、入力データの各ビットに対応する複数の入力端子と出力データの各ビットに対応する出力端子間の配線を繋ぎ換えて実現していたが、図６に示す第４の実施例では、入力データの各ビットに対し、所定の論理演算を施すことで実現する。具体的には、入力［Ｄｎ−１，Ｄｎ−２，・・，Ｄ１，Ｄ０］に対して、出力［ＳＤｎ−１，ＳＤｎ−２，・・，ＳＤ１，ＳＤ０］は隣り合ったビット間でｎａｎｄ（論理積）演算を行っている。この操作により出力［ＳＤｎ−１，ＳＤｎ−２，・・，ＳＤ１，ＳＤ０］は、以下の数１１に示すように表現される。
【００６６】
【数１１】
［ＳＤｎ−１，ＳＤｎ−２，・・，ＳＤ１，ＳＤ０］＝［Ｄ０  ｎａｎｄ  Ｄｎ−１，・・，Ｄ１  ｎａｎｄ  Ｄ０］
【００６７】
ここで、論理演算の種類はｎａｎｄに限定されるものではないし、演算を行うビット数も適宜変更可能である。
【００６８】
図７に、第１または第２のスクランブルユニット２３１、２３２の回路構成の第５の実施例を示す。上記第１〜第４の実施例では、入力データから出力データへの変換規則は、アドレスデータのアドレス値に拘わらずに常に一定であるが、図７に示す第５の実施例では、入力データに対し、当該入力データに対応するメモリのアドレスを用いて論理演算を施すことによってアドレス毎に異なるスクランブルを実施することを実現する。
【００６９】
具体的には、出力［ＳＤｎ−１，ＳＤｎ−２，・・，ＳＤ１，ＳＤ０］は入力［Ｄｎ−１，Ｄｎ−２，・・，Ｄ１，Ｄ０］とアドレス［ＡＤｎ−１，ＡＤｎ−２，・・，ＡＤ１，ＡＤ０］の間でビット毎にｘｏｒ（排他的論理和）演算を行っている。この操作により出力ＳＤ［ｎ−１：０］は、以下の数１２に示すように表現される。
【００７０】
【数１２】
［ＳＤｎ−１，ＳＤｎ−２，・・，ＳＤ１，ＳＤ０］＝［Ｄｎ−１ｘｏｒＡＤｎ−１，・・，Ｄ０ｘｏｒＡＤ０］
【００７１】
数１２に示すように、任意のアドレス値に対してスクランブル処理を規定する変換規則は一意的に決まるため、同一のスクランブルユニット２３１、２３２内でアドレス値の変化に応じて変換規則が変化しても、逆変換時に同じアドレス値を用いることによりスクランブル処理前のデータに逆変換されることが保証される。即ち、アドレス値はスクランブル処理を規定する変換規則を決める鍵として機能する。
【００７２】
ここで、論理演算の種類は排他的論理和演算に限定されるものではないし、鍵（この実施例ではアドレス値）のビット数や演算を行うビット数も適宜変更可能である。
【００７３】
図８に、第１または第２のスクランブルユニット２３１、２３２の回路構成の第６の実施例を示す。上記第１〜第５の実施例では、スクランブルユニット内の配線の入れ替えや論理演算回路等のハードウェア構成、或いは、論理演算回路とアドレス値の組み合わせが同一であれば、入力データと出力データ間の変換規則は常に一定であった。これに対して、図８に示す第６の実施例では、入力データに対し鍵保管用の不揮発メモリ２５０に保管されている鍵情報（変換規則固定用データ）を用いて論理演算を施すことによって同じハードウェア構成やアドレス値であっても、スクランブルユニット毎に異なるスクランブル処理を実施することを実現する。
【００７４】
具体的には、出力［ＳＤｎ−１，ＳＤｎ−２，・・，ＳＤ１，ＳＤ０］は入力［Ｄｎ−１，Ｄｎ−２，・・，Ｄ１，Ｄ０］と鍵情報［Ｋｎ−１，Ｋｎ−２，・・，Ｋ１，Ｋ０］の間でビット毎にｘｏｒ（排他的論理和）演算を行っている。この操作により出力ＳＤ［ｎ−１：０］は、以下の数１３に示すように表現される。
【００７５】
【数１３】
［ＳＤｎ−１，ＳＤｎ−２，・・，ＳＤ１，ＳＤ０］＝［Ｄｎ−１ｘｏｒＫｎ−１，・・，Ｄ０ｘｏｒＫ０］
【００７６】
鍵保管用の不揮発性メモリ２５０に保管される鍵情報は、このスクランブルユニットを含む装置の製造段階で固定しても良いし、書き換え可能な不揮発性メモリを用いて別途設けられる書き込み手段によって製造後に任意の値に設定できるようにしても良い。
【００７７】
ここで、論理演算の種類は排他的論理和演算に限定されるものではないし、鍵情報のビット数や演算を行うビット数も適宜変更可能である。
【００７８】
図９及び図１０に、第１（第４）または第２（第３）のスクランブルユニット２３１、２３２の回路構成の第７及び第８の実施例を示す。上記第１〜第６の実施例では、入力データと出力データ間の変換規則は同一スクランブルユニットでは常に一定であるが、第７及び第８の実施例では、入力データに対して使用する変換規則の異なるスクランブルサブユニット２３５を複数用意し、用意した各スクランブルサブユニット２３５から出力される夫々の変換規則でスクランブル処理されたスクランブルサブユニット２３５の個数と同数の出力データ（中間出力データ）の１つを、入力データの入力時の所定の情報に応じて変化する選択規則に基づいて選択して、出力する選択回路２３６を備えることにより、同一のスクランブルユニットにおいても、そのスクランブルユニットに固定された変換規則が入力時の所定の情報によって逐次変化することにより、より複雑なスクランブル及びデスクランブル処理を実現するものである。つまり、変換規則は、スクランブルユニットに固有ではなく、入力時の所定の情報に応じて一意的に固定される。
【００７９】
ここで、各スクランブルサブユニット２３５としては、上述の第１または第２のスクランブルユニット２３１、２３２の回路構成の第１〜第６の実施例のスクランブルユニット、或いは、それらの変換規則を２つ以上複合した変換規則を有する新たなスクランブルユニットで構成することができる。
【００８０】
第７の実施例は、スクランブル回路２３０に使用される第１または第２のスクランブルユニット２３１、２３２に限定した実施例を示すものであり、第８の実施例は、デスクランブル回路２４０に使用される第３または第４のスクランブルユニット２３２、２３１に限定した実施例を示すものである。第１〜第６の実施例のスクランブルユニットは、スクランブル回路２３０の第１または第２のスクランブルユニット２３１，２３２と、デスクランブル回路２４０の第４または第３のスクランブルユニット２３１，２３２と、夫々対応するもの同士が同じスクランブルユニットであったが、第７及び第８の実施例では、夫々使用される場所が固定される。但し、スクランブル回路２３０とデスクランブル回路２４０間で対応する第７の実施例のスクランブルユニットと第８のスクランブルユニットでは、固定される変換規則は同じとなる。以下、各回路の詳細に付き説明する。
【００８１】
図９に示すように、第７の実施例のスクランブルユニットは、複数のスクランブルサブユニット２３５、選択回路２３６、入力データの入力時の所定の情報に応じて選択コードを発生し、当該入力時のアドレスデータのアドレス値と関連付けて選択コード格納用の不揮発性メモリ３６０に記憶するコード発生回路２３７、及び、コード発生回路２３７が発生する複数の選択コードと複数のスクランブルサブユニット２３５を各別に対応付けるルックアップテーブル２３８を備えて構成される。ここで、不揮発性メモリ３６０は、後述の第８の実施例のスクランブルユニットと共有されるので、スクランブルユニット外に設けても構わない。
【００８２】
コード発生回路２３７は、入力データの入力時の起動時からの経過時間情報、アドレスデータのアドレス値に基づいて、都度、乱数等を用いて異なる選択コードを生成する。尚、生成される選択コードを予め、スクランブルサブユニット２３５の個数分に限定しておくのが好ましい。しかしながら、選択コード数は、スクランブルサブユニット２３５の個数と等しくなくても、ルックアップテーブル２３８での上記対応付けが可能であれば問題はない。コード発生回路２３７は、発生した選択コードをその時のアドレスデータのアドレス値とともに不揮発性メモリ３６０に記憶する。或いは、発生した選択コードをその時のアドレスデータのアドレス値と１対１で対応付けられる不揮発性メモリ３６０のアドレス領域に格納する。
【００８３】
ルックアップテーブル２３８は、コード発生回路２３７が発生した選択コードと対応する１つのスクランブルサブユニット２３５の選択を指示する選択指示信号を発生し、選択回路２３６は、その選択指示信号に基づいて選択したスクランブルサブユニット２３５からの中間出力データを選択してスクランブルユニットの出力データとして出力する。
【００８４】
図１０に示すように、第８の実施例のスクランブルユニットは、複数のスクランブルサブユニット２３５、選択回路２３６、入力データの入力時のアドレスデータのアドレス値に基づき、選択コード格納用の不揮発性メモリ３６０から選択コードを読み出すコード読み出し回路２３９、及び、第７の実施例のスクランブルユニットと同じ複数の選択コードと複数のスクランブルサブユニット２３５を各別に対応付けるルックアップテーブル２３８を備えて構成される。ここで、不揮発性メモリ３６０は、上述の第７の実施例のスクランブルユニットと共有されるので、スクランブルユニット外に設けても構わない。
【００８５】
コード読み出し回路２３９は、入力データの入力時のアドレスデータのアドレス値に基づいて、当該アドレス値とともに記憶されている選択コードを不揮発性メモリ３６０から読み出す。或いは、当該アドレス値と１対１で対応付けられた不揮発性メモリ３６０のアドレス領域に記憶されている選択コードを読み出す。
【００８６】
ルックアップテーブル２３８は、コード読み出し回路２３９が読み出した選択コードと対応する１つのスクランブルサブユニット２３５の選択を指示する選択指示信号を発生し、選択回路２３６は、その選択指示信号に基づいて選択したスクランブルサブユニット２３５からの中間出力データを選択してスクランブルユニットの出力データとして出力する。
【００８７】
更に、図には示さないが、第１または第２のスクランブルユニット２３１、２３２の回路構成の第９の実施例として、１つのスクランブルユニット２３１、２３２内に、例えば、上記第１〜第８の実施例のスクランブルユニットの中からスクランブルサブユニットとして任意に選択したものを複数備え、少なくとも１つのスクランブルサブユニットに対して、第９の実施例のスクランブルユニットの入力データを入力し、少なくとも１つのスクランブルサブユニットから第９の実施例のスクランブルユニットの出力データを出力し、少なくとも１つのスクランブルサブユニットに他の少なくとも１つのスクランブルサブユニットの出力データの全部または一部を入力するように、内部的に、各スクランブルサブユニット間を接続して構成するのも好ましい。かかる構成により、より複雑で多様なスクランブル処理を実現することができる。
【００８８】
図１１（ａ）及び（ｂ）に、具体的な数値を使い、スクランブル回路２３０とデスクランブル回路２４０における各処理の流れを示す。ここで用いた第１乃至第４のスクランブルユニット２３１、２３２は、第１及び第４のスクランブルユニット２３１が図４に示した第１の実施例の構成で、第２及び第３のスクランブルユニット２３２が図５に示した第２の実施例の構成であるとする。
【００８９】
先ず、スクランブル処理の流れを図１１（ａ）に示す。元のデータ”１００１１０１０”に対して、上位４ビット”１００１”を第１のスクランブルユニット２３１で１ビット右シフトを行う。結果は、”１１００”となる。次に、第１演算ユニット２３３で”１１００”と元データの下位４ビット”１０１０”との排他的論理和をとると、結果は”０１１０”になる。次に、この”０１１０”を第２のスクランブルユニット２３２で隣接する２ビット同士の入れ替えを行う。結果は、”１００１”となる。最後に、第２演算ユニット２３４で”１００１”と”１００１”との排他的論理和をとり、結果は”００００”となる。以上より、スクランブル処理された処理済データは、”０１１０００００”となる。
【００９０】
次に、デスクランブル処理の流れを図１１（ｂ）に示す。スクランブル処理済データ”０１１０００００”に対して、上位４ビット”０１１０”を第３（第２）のスクランブルユニット２３２で隣接する２ビット同士の入れ替えを行う。結果は、”１００１”となる。次に、第３演算ユニット２３３で”１００１”とスクランブル処理済データの下位４ビット”００００”  との排他的論理和をとると、結果は”１００１”になる。次に、この”１００１”を第４（第１）のスクランブルユニット２３１で１ビット右シフトを行う。結果は、”１１００”になる。最後に、第４演算ユニット２３４で”１１００”とスクランブル処理済データの上位４ビット”０１１０”の排他的論理和をとり、結果は”１０１０”となる。以上より、デスクランブル処理されたデータは、”１００１１０１０”となり、スクランブル処理前の元データと一致する。
【００９１】
次に、本発明に係るデータ処理装置の別の実施形態について説明する。
【００９２】
〈１〉上記実施の形態では、ｎビット幅のバスに対して１つのスクランブル回路２２０または２３０を備え、ｎビット幅のバスに対して１つのデスクランブル回路２４０を備えた構成であったが、ｎビット幅のバスに対して２以上のスクランブル回路２２０、２３０と２以上のデスクランブル回路２４０を備えて構成してもよい。
【００９３】
図１２に、被処理データをＭ等分した時のスクランブル回路２３０’の一例を示す。この場合、隣接する２つのデータブロック毎に上述したスクランブル回路をＭ／２個分設ければ良い。また、各スクランブル回路２３０内の第１及び第２のスクランブルユニット２３１、２３２をデータブロック対毎に変えることにより、更にセキュリティ性を高めることができる。
【００９４】
同様に、図１３に、スクランブル処理済データをＭ等分した時のデスクランブル回路２４０’の一例を示す。この場合も、隣接する２つのデータブロック毎に上述したデスクランブル回路２４０をＭ／２個分設ければ良い。
【００９５】
〈２〉上記実施の形態では、ＣＰＵ２００は、スクランブル処理とデスクランブル処理が対になったスクランブル回路２３０とデスクランブル回路２４０を備えて構成されている形態を例示したが、スクランブル回路２３０とデスクランブル回路２４０は、その何れか一方のみを備える構成であっても構わない。また、デスクランブル回路２４０が自己のスクランブル回路２３０以外のスクランブル回路でスクランブル処理された処理済データに対してデスクランブル処理するものであっても構わない。尚、この場合は、対となるスクランブル処理とデスクランブル処理は、２つ以上のデータ処理装置に分散して行われることになる。
【００９６】
〈３〉図１４に、本発明に係るデータ処理装置をＩＣカードに適用した場合の構成例を示す。
【００９７】
ＩＣカード１１０は、ＣＰＵ２００と外部データバス６００及び外部アドレスバス７００で相互に接続されているＲＯＭ３００、ＲＡＭ４００、不揮発性メモリ５００等の外部メモリ群とを備え、更に、コプロセッサ１１１、ＵＡＲＴ／ＩＯ１１２とタイマ１１３が備えて構成されている。一般にＩＣカードは、セキュリティ性を要求されるため、レイアウトが工夫されている。攻撃者にＣＰＵやコプロセッサ、または、内部データバスがチップ上のどこにあるかを特定されないようにブロック毎に分離せず、一塊として半導体集積回路上にレイアウトされる。半導体製造プロセスの微細化により一塊になっている内部データバス等へのプロービングなどの攻撃は非常に困難になっている。そこで、一般的に攻撃者は、ＣＰＵとメモリ間のデータバスのように分離されたブロック間の信号に対してプロービング等を試みる。そこで、ブロック間の外部データバス６００、及び、各メモリ上のデータはスクランブル処理を施すことにより、高いセキュリティ性を具備するＩＣカードを提供することができる。
【００９８】
尚、本発明の応用としてＩＣカードを説明したが、個人情報等の機密情報を処理する機器やシステムに本発明は汎用的に利用し得る。
【００９９】
〈４〉図１、図２及び図１４に例示した本発明に係るデータ処理装置は、外部メモリ群等の周辺ブロックも含めて半導体集積回路として１チップ化された例を示したが、データ処理装置内において、複数の機能ブロックが内部バスで接続されてなり、内部バスと外部バスのバスインターフェイス部に本発明に係るスクランブル回路またはデスクランブル回路が設けられている限りにおいて、データ処理装置と周辺ブロックを必ずしも１チップ化する必要はない。
【０１００】
〈５〉上記実施の形態において、スクランブル回路２３０及びデスクランブル回路２４０で処理されるデータは偶数ビットで、内部データバス２１３や外部データバス６００等のデータバス幅も偶数ビットを想定したが、バス幅が奇数ビットの場合には、被処理データの１ビット分だけをスクランブル処理またはデスクランブル処理対象から外すか、または、ダミーの１ビットを追加して偶数ビットとしてもよい。
【０１０１】
〈６〉上記実施の形態において、スクランブル回路２３０及びデスクランブル回路２４０で処理されるデータはパラレルデータを想定したが、内部データバス２１３や外部データバス６００等の何れか一方または両方がシリアルバスであっても構わない。シリアルデータを処理する場合は、一旦データをシリアル・パラレル変換した後に、本発明に係るスクランブル回路２３０及びデスクランブル回路２４０を用いればよい。また、処理対象のデータはパラレルデータとシリアルデータの混在でもよい。例えば、内部バスが８ビットで外部バスが１６ビットの場合等において、内部バスの８ビットデータを２回に分けて読み込んだ後に、スクランブル回路２３０でスクランブル処理して１６ビットデータを外部バスに転送する形態であっても構わない。
【０１０２】
【発明の効果】
以上詳細に説明したように、本発明に係るスクランブル回路、デスクランブル回路、及び、データ処理装置によれば、ＣＰＵ内部でデータのスクランブル処理、デスクランブル処理を行う。すなわち、ＣＰＵ外部へはデータバス信号を介してスクランブル処理されたデータのみが伝達され、このバスに接続される外部メモリへもスクランブル処理されたデータが格納される。従って、外部バス上の信号のプロービングやメモリ部品の剥離解析に対しても非常に高い情報の機密性が得られる。更に、アドレスバス信号もスクランブルの対象とすることでより解析を困難にすることができる。スクランブル回路あるいはデスクランブル回路の内部では、スクランブルユニットによる信号のスクランブル処理だけでなく、排他的論理和による演算処理を伴ったセキュリティ処置（データの秘匿化）を行っているため、解読されない極めて高いセキュリティを実現するとともに、論理的に元の情報を確実に復元できるためデータの信頼性が極めて高いデータ処理装置を提供することができる。
【図面の簡単な説明】
【図１】本発明に係るスクランブル回路とデスクランブル回路を有するデータ処理装置の一実施の形態における内部構成の一例を示すブロック構成図
【図２】本発明に係るスクランブル回路とデスクランブル回路を有するデータ処理装置の他の実施の形態における内部構成の一例を示すブロック構成図
【図３】本発明に係るスクランブル回路とデスクランブル回路の一実施の形態の回路構成を示すブロック構成図
【図４】本発明に係るスクランブル回路とデスクランブル回路で用いるスクランブルユニットの第１の実施例を示す回路構成図
【図５】本発明に係るスクランブル回路とデスクランブル回路で用いるスクランブルユニットの第２の実施例を示す回路構成図
【図６】本発明に係るスクランブル回路とデスクランブル回路で用いるスクランブルユニットの第４の実施例を示す回路構成図
【図７】本発明に係るスクランブル回路とデスクランブル回路で用いるスクランブルユニットの第５の実施例を示す回路構成図
【図８】本発明に係るスクランブル回路とデスクランブル回路で用いるスクランブルユニットの第６の実施例を示す回路構成図
【図９】本発明に係るスクランブル回路で用いるスクランブルユニットの第７の実施例を示す回路構成図
【図１０】本発明に係るデスクランブル回路で用いるスクランブルユニットの第８の実施例を示す回路構成図
【図１１】本発明に係るスクランブル回路とデスクランブル回路でのデータ処理の流れを説明する図
【図１２】本発明に係るスクランブル回路の他の実施形態を示すブロック構成図
【図１３】本発明に係るデスクランブル回路の他の実施形態を示すブロック構成図
【図１４】本発明に係るＩＣカードの一実施の形態における内部構成の一例を示すブロック構成図
【図１５】特許文献１で開示されているスクランブル技術を説明する図
【符号の説明】
１００  ＩＣ
１１０  ＩＣカード
１１１  コプロセッサ
１１２  ＵＡＲＴ／ＩＯ
１１３  タイマ
２００  ＣＰＵ
２１０  ＡＬＵ
２１１  キャッシュメモリ
２１２  命令デコーダコントローラ
２１３  内部データバス
２１４  レジスタ群
２１５  データバス制御回路
２１６  アドレスバス制御回路
２２０  第２スクランブル回路
２３０  第１スクランブル回路
２３１  第１のスクランブルユニットまたは第４のスクランブルユニット
２３２  第２のスクランブルユニットまたは第３のスクランブルユニット
２３３  第１演算ユニットまたは第３演算ユニット（排他的論理和）
２３４  第２演算ユニットまたは第４演算ユニット排他的論理和
２３５  スクランブルサブユニット
２３６  選択回路
２３７  コード生成回路
２３８  ルックアップテーブル
２３９  コード読み出し回路
２４０  デスクランブル回路
２５０  鍵保管用の不揮発性メモリ
２６０  選択コード格納用の不揮発メモリ
３００  ＲＯＭ
４００  ＲＡＭ
５００  不揮発性メモリ
６００  外部データバス
７００  外部アドレスバス
【図１】
2004361986.tif 000003
【図２】
2004361986.tif 000004
【図３】
2004361986.tif 000005
【図４】
2004361986.tif 000006
【図５】
2004361986.tif 000007
【図６】
2004361986.tif 000008
【図７】
2004361986.tif 000009
【図８】
2004361986.tif 000010
【図９】
2004361986.tif 000011
【図１０】
2004361986.tif 000012
【図１１】
2004361986.tif 000013
【図１２】
2004361986.tif 000014
【図１３】
2004361986.tif 000015
【図１４】
2004361986.tif 000016
【図１５】
2004361986.tif 000017