(57)【要約】【課題】バスに伝送するデータが不正に解析されることを効果的に防止できるデータ暗号化方法，データ復号化方法および集積回路を提供することを目的とする。【解決手段】データ読み込み命令に応じて、バス３に伝送するデータの少なくとも一部を読み込んでラッチデータとして保持する保持段階と、ラッチデータに応じて、バス３に伝送するデータを暗号化する暗号化段階と、ラッチデータに応じた時間間隔で、データ読み込み命令を実行するデータ読み込み命令実行段階とを有することにより上記課題を解決する。【選択図】　　　　　図１
2004072673.tif 000002
【特許請求の範囲】
【請求項１】
データ読み込み命令に応じて、バスに伝送するデータの少なくとも一部を読み込んでラッチデータとして保持する保持段階と、
前記ラッチデータに応じて、前記バスに伝送するデータを暗号化する暗号化段階と、
前記ラッチデータに応じた時間間隔で、前記データ読み込み命令を実行するデータ読み込み命令実行段階と
を有することを特徴とするデータ暗号化方法。
【請求項２】
データ読み込み命令に応じて、バスから伝送されたデータの少なくとも一部を読み込んでラッチデータとして保持する保持段階と、
前記ラッチデータに応じて、前記バスから伝送されたデータを復号化する復号化段階と、
前記ラッチデータに応じた時間間隔で、前記データ読み込み命令を実行するデータ読み込み命令実行段階と
を有することを特徴とするデータ復号化方法。
【請求項３】
データをバスに伝送する集積回路であって
データ読み込み命令に応じて、バスに伝送するデータの少なくとも一部を読み込んでラッチデータとして保持する保持手段と、
前記ラッチデータに応じて、前記バスに伝送するデータを暗号化する暗号化手段と、
前記ラッチデータに応じた時間間隔で、前記データ読み込み命令を実行するデータ読み込み命令実行手段と
を有することを特徴とする集積回路。
【請求項４】
データをバスから伝送される集積回路であって、
データ読み込み命令に応じて、バスから伝送されたデータの少なくとも一部を読み込んでラッチデータとして保持する保持手段と、
前記ラッチデータに応じて、前記バスから伝送されたデータを復号化する復号化手段と、
前記ラッチデータに応じた時間間隔で、前記データ読み込み命令を実行するデータ読み込み命令実行手段と
を有することを特徴とする集積回路。
【請求項５】
前記保持手段は、不揮発性メモリであることを特徴とする請求項３又は４記載の集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ暗号化方法，データ復号化方法および集積回路に係り、特にバス（Ｂｕｓ）を用いて伝送されるデータのデータ暗号化方法，データ復号化方法およびそのデータ暗号化方法，データ復号化方法を利用する集積回路に関する。
【０００２】
【従来の技術】
例えばセキュリティ対策が必要なデータを装置間又は装置内部の素子間で伝送する場合は、ＤＥＳ（Ｄａｔａ　Ｅｎｃｒｙｐｔｉｏｎ　Ｓｔａｎｄａｒｄ）又はＲＳＡ（Ｒｉｖｅｓｔ−Ｓｈａｍｉｒ−Ａｄｌｅｍａｎ　Ｓｃｈｅｍｅ）等の暗号化方式を用いてデータを暗号化し、暗号化したデータをバスに伝送していた。
【０００３】
【発明が解決しようとする課題】
しかしながら、コンピュータの処理能力の向上に伴い、暗号化されたデータであってもデータの解析に要する時間が短くなり、バスに伝送したデータが不正に解析される可能性が高くなっている。
【０００４】
そこで、更に複雑な暗号化方式やデータ線のビット入れ換えなどを利用したスクランブルを掛けることでデータを暗号化することが考えられるが、データの暗号化に法則が存在するためにデータの解析が容易であるという問題があった。
【０００５】
特にＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）やメモリなどの汎用の素子間でデータを伝送する場合、各素子の入出力端子の役割が知られているためにデータの解析が更に容易であるという問題があった。
【０００６】
本発明は、上記の点に鑑みなされたもので、バスに伝送するデータが不正に解析されることを効果的に防止できるデータ暗号化方法，データ復号化方法および集積回路を提供することを目的とする。
【０００７】
【課題を解決するための手段】
そこで、上記課題を解決するため、本発明は、データ読み込み命令に応じて、バスに伝送するデータの少なくとも一部を読み込んでラッチデータとして保持する保持段階と、前記ラッチデータに応じて、前記バスに伝送するデータを暗号化する暗号化段階と、前記ラッチデータに応じた時間間隔で、前記データ読み込み命令を実行するデータ読み込み命令実行段階とを有することを特徴とする。
【０００８】
また、本発明は、データ読み込み命令に応じて、バスから伝送されたデータの少なくとも一部を読み込んでラッチデータとして保持する保持段階と、前記ラッチデータに応じて、前記バスから伝送されたデータを復号化する復号化段階と、前記ラッチデータに応じた時間間隔で、前記データ読み込み命令を実行するデータ読み込み命令実行段階とを有することを特徴とする。
【０００９】
また、本発明は、データをバスに伝送する集積回路であってデータ読み込み命令に応じて、バスに伝送するデータの少なくとも一部を読み込んでラッチデータとして保持する保持手段と、前記ラッチデータに応じて、前記バスに伝送するデータを暗号化する暗号化手段と、前記ラッチデータに応じた時間間隔で、前記データ読み込み命令を実行するデータ読み込み命令実行手段とを有することを特徴とする。
【００１０】
また、本発明は、データをバスから伝送される集積回路であって、データ読み込み命令に応じて、バスから伝送されたデータの少なくとも一部を読み込んでラッチデータとして保持する保持手段と、前記ラッチデータに応じて、前記バスから伝送されたデータを復号化する復号化手段と、前記ラッチデータに応じた時間間隔で、前記データ読み込み命令を実行するデータ読み込み命令実行手段とを有することを特徴とする。
【００１１】
また、本発明は、前記保持手段が、不揮発性メモリであることを特徴とする。
【００１２】
本発明では、バスに伝送するデータの少なくとも一部をラッチデータとして保持し、そのラッチデータに応じてバスに伝送するデータを暗号化する一方、そのラッチデータに応じた時間間隔でラッチデータを更新することにより、データの暗号化に法則が存在しない。
【００１３】
また、本発明では、保持手段として不揮発性メモリを利用することにより、前回のラッチデータを利用して最初の暗号化を行う。このように、不揮発性メモリに保持された前回のラッチデータを最初の暗号化に利用することで、電源投入やリセットなどからの動作シーケンスが一定にならず、Ｌｏｏｐ解析などを行うこともできない。
【００１４】
したがって、本発明によれば、バスに伝送するデータが不正に解析されることを効果的に防止できるので、データの機密性を強固にできる。
【００１５】
【発明の実施の形態】
次に、本発明の実施の形態について図面に基づいて説明する。なお、本実施例では、２つの集積回路がバスを介してデータを伝送する例について説明しているが、集積回路に限ることなく例えば装置であってもよい。
【００１６】
図１は、本発明のデータ暗号化方法およびデータ復号化方法の第１実施例の説明図を示す。図１では、集積回路の一例としてのＬＳＩ（Ｌａｒｇｅ　Ｓｃａｌｅ　Ｉｎｔｅｇｒａｔｅｄ　ｃｉｒｃｕｉｔ）１，ＬＩＳ２が、バス３を介して接続されている。本実施例では、ＬＳＩ１でデータの暗号化を行い、ＬＳＩ２でデータの復号化を行う例について説明する。
【００１７】
ＬＳＩ１は、カウンタ回路１０ａと，データラッチ回路１１ａと，復号回路１２ａと，暗号回路１３ａと、入出力バッファ（Ｉ／Ｏ　Ｂｕｆｆ）１４ａとを有するように構成されている。また、ＬＳＩ２は、カウンタ回路１０ｂと，データラッチ回路１１ｂと，復号回路１２ｂと，暗号回路１３ｂと、入出力バッファ１４ｂとを有するように構成されている。
【００１８】
カウンタ回路１０ａ，１０ｂは、制御信号としてのライト（Ｗｒｉｔｅ）信号がクロック信号として供給され、そのクロック信号に応じたカウントを行う。カウンタ回路１０ａ，１０ｂはデータラッチ回路１１ａ，１１ｂにラッチされているラッチデータをロードし、そのラッチデータの値からカウントを開始する。
【００１９】
カウンタ回路１０ａ，１０ｂは、所定のカウント値（例えば、ビット数が４ビットの場合は１５）までカウントすると、データラッチ回路１１ａ，１１ｂのクロック端子にキャリー（Ｃａｒｒｙ）信号を供給する。このキャリー信号は、データラッチ回路１１ａ，１１ｂにデータラッチタイミングを供給するものである。
【００２０】
また、カウンタ回路１０ａ，１０ｂは、データラッチ回路１１ａ，１１ｂのクロック端子にキャリー信号を供給した後、データラッチ回路１１ａ，１１ｂにラッチされたラッチデータをロードし、そのラッチデータの値から再びカウントを開始する。
【００２１】
データラッチ回路１１ａは、カウンタ回路１０ａから供給されるキャリー信号に応じて、入出力バッファ１４ａが保持しているデータをラッチデータとしてラッチする。また、データラッチ回路１１ｂは、カウンタ回路１０ｂから供給されるキャリー信号に応じて、入出力バッファ１４ｂが保持しているデータをラッチデータとしてラッチする。
【００２２】
データラッチ回路１１ａ，１１ｂは、ラッチデータをカウンタ回路１０ａ，１０ｂのロード端子と，復号回路１２ａ，１２ｂと，暗号回路１３ａ，１３ｂとに供給する。なお、データラッチ回路１１ａ，１１ｂは、例えば不揮発性メモリで構成される。
【００２３】
不揮発性メモリで構成されたデータラッチ回路１１ａ，１１ｂは、電源投入やリセットの直後であっても前回のラッチデータを保持しているため、電源投入やリセットの直後のラッチデータの初期値が異なっている。なお、データラッチ回路１１ａがラッチしているラッチデータの値と、データラッチ回路１１ｂがラッチしているラッチデータの値とは、同期が取られている。
【００２４】
復号回路１２ａ，１２ｂは、バス３から伝送されたデータを入出力バッファ１４ａ，１４ｂから供給される。また、復号回路１２ａ，１２ｂはデータラッチ回路１１ａ，１１ｂからラッチデータが供給される。
【００２５】
復号回路１２ａ，１２ｂは、データラッチ回路１１ａ，１１ｂから供給されたラッチデータを用いて入出力バッファ１４ａ，１４ｂから供給されたデータを後述するように復号化し、復号化したデータをＬＳＩ１，２への入力データとして出力する。
【００２６】
暗号回路１３ａ，１３ｂは、バス３に伝送するデータを出力データとしてＬＳＩ１，２の内部から供給される。また、暗号回路１３ａ，１３ｂはデータラッチ回路１１ａ，１１ｂからラッチデータが供給される。
【００２７】
暗号回路１３ａ，１３ｂは、データラッチ回路１１ａ，１１ｂから供給されたラッチデータを用いて出力データを後述するように暗号化し、暗号化したデータを入出力バッファ１４ａ，１４ｂに出力する。
【００２８】
入出力バッファ１４ａ，１４ｂは、暗号回路１３ａ，１３ｂから暗号化されたデータを供給され、その暗号化されたデータを所定のタイミングでバス３に伝送する。入出力バッファ１４ａ，１４ｂは、バス３に伝送するデータをデータラッチ回路１１ａ，１１ｂに供給する。
【００２９】
また、入出力バッファ１４ａ，１４ｂは、バス３から暗号化されたデータを供給され、その暗号化されたデータを所定のタイミングで復号回路１２ａ，１２ｂに供給する。入出力バッファ１４ａ，１４ｂは、バス３から供給されたデータをデータラッチ回路１１ａ，１１ｂに供給する。
【００３０】
次に、ＬＳＩ１の動作について図２を参照しつつ説明する。図２は、暗号化を行うＬＳＩの一例の動作タイミング図を示す。なお、図２の動作タイミング図はカウンタ回路１０ａのビット数が４ビット，データラッチ回路１１ａにラッチされているラッチデータの初期値が１２の例を表している。
【００３１】
図２（Ａ）は、カウンタ回路１０ａのクロック端子に供給されるクロック信号を表す。図２（Ｂ）は、カウンタ回路１０ａがカウントしているカウント値を表す。図２（Ｃ）は、データラッチ回路１１ａがラッチしているラッチデータの値を表す。図２（Ｄ）は、バス３に伝送するデータの値を表す。
【００３２】
なお、以下の説明では、図２（Ａ）のクロック信号を構成するパルスに１〜１９の通し番号を付し、その通し番号を付された各パルスをｃｌｋ１〜ｃｌｋ１９と呼ぶ。
【００３３】
電源投入やリセットの直後、カウンタ回路１０ａはデータラッチ回路１１ａのラッチデータの初期値「１２」をロードし、そのラッチデータの値「１２」からカウントを行う。暗号回路１３ａは、ｃｌｋ１〜３が入力されるタイミングで、データラッチ回路１１ａから供給されたラッチデータの値「１２」を用いて出力データを後述するように暗号化し、暗号化したデータを入出力バッファ１４ａに出力する。
【００３４】
ｃｌｋ３が入力されると、カウンタ回路１０ａのカウント値は「１５」となり、カウンタ回路１０ａはデータラッチ回路１１ａにキャリー信号を供給する。データラッチ回路１１ａは、カウンタ回路１０ａからキャリー信号が供給されると、バス３に伝送するために入出力バッファ１４ａが保持しているデータの少なくとも一部（例えば、下位４ビットなど）が表す値「１５」をラッチデータとしてラッチする。また、カウンタ回路１０ａはデータラッチ回路１１ａにキャリー信号を供給した後、データラッチ回路１１ａにラッチされたラッチデータの値「１５」をロードし、そのラッチデータの値「１５」から再びカウントを開始する。
【００３５】
暗号回路１３ａは、ｃｌｋ４が入力されるタイミングで、データラッチ回路１１ａから供給されたラッチデータの値「１５」を用いて出力データを後述するように暗号化し、暗号化したデータを入出力バッファ１４ａに出力する。
【００３６】
ｃｌｋ４が入力されると、カウンタ回路１０ａのカウント値は「１５」となり、カウンタ回路１０ａはデータラッチ回路１１ａにキャリー信号を供給する。データラッチ回路１１ａは、カウンタ回路１０ａからキャリー信号が供給されると、バス３に伝送するために入出力バッファ１４ａが保持しているデータの少なくとも一部が表す値「１３」をラッチデータとしてラッチする。また、カウンタ回路１０ａはデータラッチ回路１１ａにキャリー信号を供給した後、データラッチ回路１１ａにラッチされたラッチデータの値「１３」をロードし、そのラッチデータの値「１３」から再びカウントを開始する。以下、同様な処理を繰り返す。
【００３７】
図３は、暗号回路の一例の構成図を示す。図３の暗号回路１３ａでは、データラッチ回路１１ａにラッチされているラッチデータのうちの３ビットを用いて出力データを暗号化する例を表している。
【００３８】
暗号回路１３ａは、デコーダ２１，選択器２２−１〜２２−８を有するように構成される。デコーダ２１は、データラッチ回路１１ａにラッチされているラッチデータのうちの３ビットが供給され、その３ビットを１０進数にデコードして０〜７の値を取得する。デコーダ２１は、取得した０〜７の値に応じて選択器２２−１〜２２−８のうちの何れか一つを選択する。
【００３９】
選択器２２−１〜２２−８は、ＬＳＩ１の内部から出力データＤ０〜Ｄ７がそれぞれ供給されている。選択器２２−１〜２２−８は、供給された出力データＤ０〜Ｄ７の位置を、選択器ごとにそれぞれ異なるようにシフトして出力する。
【００４０】
例えば選択器２２−１は、供給された出力データＤ０〜Ｄ７の位置を０ビットシフトして出力する。選択器２２−２は、供給された出力データＤ０〜Ｄ７の位置を１ビットシフトして出力する。以下、同様に選択器２２−３〜２２−８は供給された出力データＤ０〜Ｄ７の位置を２〜７ビットシフトして出力する。
【００４１】
選択器２２−１〜２２−８のうちデコーダ２１により選択された一つの選択器は、供給された出力データＤ０〜Ｄ７を０〜７ビットシフトして入出力バッファ１４ａに出力する。したがって、暗号回路１３ａはデータラッチ回路１１ａにラッチされているラッチデータに応じて出力データＤ０〜Ｄ７を暗号化して出力することができる。
【００４２】
次に、ＬＳＩ２の動作について図４を参照しつつ説明する。図４は、復号化を行うＬＳＩの一例の動作タイミング図を示す。なお、図４の動作タイミング図はカウンタ回路１０ｂのビット数が４ビット，データラッチ回路１１ｂにラッチされているラッチデータの初期値が１２の例を表している。
【００４３】
図４（Ａ）は、カウンタ回路１０ｂのクロック端子に供給されるクロック信号を表す。図４（Ｂ）は、カウンタ回路１０ｂがカウントしているカウント値を表す。図４（Ｃ）は、データラッチ回路１１ｂがラッチしているラッチデータの値を表す。図４（Ｄ）は、バス３から伝送されたデータの値を表す。
【００４４】
なお、以下の説明では、図４（Ａ）のクロック信号を構成するパルスに１〜１９の通し番号を付し、その通し番号を付された各パルスをｃｌｋ１〜ｃｌｋ１９と呼ぶ。
【００４５】
電源投入やリセットの直後、カウンタ回路１０ｂはデータラッチ回路１１ｂのラッチデータの初期値「１２」をロードし、そのラッチデータの値「１２」からカウントを行う。復号回路１２ｂは、ｃｌｋ１〜３が入力されるタイミングで、データラッチ回路１１ｂから供給されたラッチデータの値「１２」を用いて入出力バッファ１４ｂから供給されたデータを後述するように復号化し、復号化したデータをＬＳＩ２への入力データとして出力する。
【００４６】
ｃｌｋ３が入力されると、カウンタ回路１０ｂのカウント値は「１５」となり、カウンタ回路１０ｂはデータラッチ回路１１ｂにキャリー信号を供給する。データラッチ回路１１ｂは、カウンタ回路１０ｂからキャリー信号が供給されると、入出力バッファ１４ｂが保持しているバス３から伝送されたデータの少なくとも一部が表す値「１５」をラッチデータとしてラッチする。また、カウンタ回路１０ｂはデータラッチ回路１１ｂにキャリー信号を供給した後、データラッチ回路１１ｂにラッチされたラッチデータの値「１５」をロードし、そのラッチデータの値「１５」から再びカウントを開始する。
【００４７】
復号回路１２ｂは、ｃｌｋ４が入力されるタイミングで、データラッチ回路１１ｂから供給されたラッチデータの値「１５」を用いて入出力バッファ１４ｂから供給されたデータを後述するように復号化し、復号化したデータをＬＳＩ２への入力データとして出力する。
【００４８】
ｃｌｋ４が入力されると、カウンタ回路１０ｂのカウント値は「１５」となり、カウンタ回路１０ｂはデータラッチ回路１１ｂにキャリー信号を供給する。データラッチ回路１１ｂは、カウンタ回路１０ｂからキャリー信号が供給されると、入出力バッファ１４ｂが保持しているバス３から伝送されたデータの少なくとも一部が表す値「１３」をラッチデータとしてラッチする。
【００４９】
また、カウンタ回路１０ｂはデータラッチ回路１１ｂにキャリー信号を供給した後、データラッチ回路１１ｂにラッチされたラッチデータの値「１３」をロードし、そのラッチデータの値「１３」から再びカウントを開始する。以下、同様な処理を繰り返す。
【００５０】
図５は、復号回路の一例の構成図を示す。図５の復号回路１２ｂでは、データラッチ回路１１ｂにラッチされているラッチデータのうちの３ビットを用いてバス３から伝送されたデータを復号化する例を表している。
【００５１】
復号回路１２ｂは、デコーダ３１，選択器３２−１〜３２−８を有するように構成される。デコーダ３１は、データラッチ回路１１ｂにラッチされているラッチデータのうちの３ビットが供給され、その３ビットを１０進数にデコードして０〜７の値を取得する。デコーダ３１は、取得した０〜７の値に応じて選択器３２−１〜３２−８のうちの何れか一つを選択する。
【００５２】
選択器３２−１〜３２−８は、バス３から伝送されたデータＤ０〜Ｄ７がそれぞれ供給されている。選択器３２−１〜３２−８は、供給されたデータＤ０〜Ｄ７の位置を、選択器ごとにそれぞれ異なるようにシフトして出力する。
【００５３】
例えば選択器３２−１は、供給されたデータＤ０〜Ｄ７の位置を０ビットシフトして出力する。選択器２２−２は、供給されたデータＤ０〜Ｄ７の位置を１ビットシフトして出力する。以下、同様に選択器２２−３〜２２−８は供給されたデータＤ０〜Ｄ７の位置を２〜７ビットシフトして出力する。
【００５４】
選択器３２−１〜３２−８のうちデコーダ３１により選択された一つの選択器は、供給されたデータＤ０〜Ｄ７を０〜７ビットシフトしてＬＳＩ２への入力データとして出力する。したがって、復号回路１２ｂはデータラッチ回路１１ｂにラッチされているラッチデータに応じてバス３から伝送されたデータＤ０〜Ｄ７を復号化して出力することができる。
【００５５】
更に、ＬＳＩ１の動作について図６を参照しつつ説明する。図６は、暗号化を行うＬＳＩの他の一例の動作タイミング図を示す。なお、図６の動作タイミング図はカウンタ回路１０ａのビット数が４ビット，データラッチ回路１１ａにラッチされているラッチデータのビット数が８ビット，データラッチ回路１１ａにラッチされているラッチデータの初期値が「５Ｃ」の例を表している。
【００５６】
図６（Ａ）は、カウンタ回路１０ａのクロック端子に供給されるクロック信号を表す。図６（Ｂ）は、カウンタ回路１０ａがカウントしているカウント値を１６進数で表す。図６（Ｃ）は、データラッチ回路１１ａがラッチしているラッチデータの値を１６進数で表す。図６（Ｄ）は、バス３に伝送するデータの値を１６進数で表す。図６（Ｅ）は、ＬＳＩ１の内部から暗号回路１３ａに供給される出力データを１６進数で表す。
【００５７】
なお、以下の説明では、図６（Ａ）のクロック信号を構成するパルスに１〜１９の通し番号を付し、その通し番号を付された各パルスをｃｌｋ１〜ｃｌｋ１９と呼ぶ。
【００５８】
電源投入やリセットの直後、カウンタ回路１０ａはデータラッチ回路１１ａのラッチデータの初期値「５Ｃ」の下位４ビット「Ｃ」をロードし、その値「Ｃ」からカウントを行う。暗号回路１３ａはｃｌｋ１〜３が入力されるタイミングで、データラッチ回路１１ａから供給されたラッチデータの値「５Ｃ」を用いて出力データを後述するように暗号化し、暗号化したデータを入出力バッファ１４ａに出力する。
【００５９】
ｃｌｋ３が入力されると、カウンタ回路１０ａのカウント値は「Ｆ」となり、カウンタ回路１０ａはデータラッチ回路１１ａにキャリー信号を供給する。データラッチ回路１１ａは、カウンタ回路１０ａからキャリー信号が供給されると、バス３に伝送するために入出力バッファ１４ａが保持しているデータの値「２Ｆ」をラッチデータとしてラッチする。
【００６０】
また、カウンタ回路１０ａはデータラッチ回路１１ａにキャリー信号を供給した後、データラッチ回路１１ａにラッチされたラッチデータの値「２Ｆ」から下位４ビットの値「Ｆ」をロードし、その値「Ｆ」から再びカウントを開始する。
【００６１】
暗号回路１３ａは、ｃｌｋ４が入力されるタイミングで、データラッチ回路１１ａから供給されたラッチデータの値「２Ｆ」を用いて出力データの値「Ａ２」を後述するように暗号化し、暗号化したデータの値「８Ｄ」を入出力バッファ１４ａに出力する。
【００６２】
ｃｌｋ４が入力されると、カウンタ回路１０ａのカウント値は「Ｆ」となり、カウンタ回路１０ａはデータラッチ回路１１ａにキャリー信号を供給する。データラッチ回路１１ａは、カウンタ回路１０ａからキャリー信号が供給されると、バス３に伝送するために入出力バッファ１４ａが保持しているデータの値「８Ｄ」をラッチデータとしてラッチする。
【００６３】
また、カウンタ回路１０ａはデータラッチ回路１１ａにキャリー信号を供給した後、データラッチ回路１１ａにラッチされたラッチデータの値「８Ｄ」の下位４ビット「Ｄ」をロードし、その値「Ｄ」から再びカウントを開始する。以下、同様な処理を繰り返す。
【００６４】
図７は、暗号回路の他の一例の構成図を示す。図７の暗号回路１３ａでは、データラッチ回路１１ａにラッチされている８ビットのラッチデータを用いて出力データを暗号化する例を表している。
【００６５】
暗号回路１３ａは、データラッチ回路１１ａにラッチされている８ビットのラッチデータが供給されている。また、暗号回路１３ａはＬＳＩ１の内部から出力データＤ０〜Ｄ７が供給されている。暗号回路１３ａは、供給された８ビットのラッチデータと出力データＤ０〜Ｄ７とのＸＯＲ（排他的論理和）を取った値を入出力バッファ１４ａに出力する。したがって、暗号回路１３ａはデータラッチ回路１１ａにラッチされているラッチデータに応じて出力データＤ０〜Ｄ７を暗号化して出力することができる。
【００６６】
更に、ＬＳＩ２の動作について図８を参照しつつ説明する。図８は、復号化を行うＬＳＩの他の一例の動作タイミング図を示す。なお、図８の動作タイミング図はカウンタ回路１０ｂのビット数が４ビット，データラッチ回路１１ｂにラッチされているラッチデータのビット数が８ビット，データラッチ回路１１ｂにラッチされているラッチデータの初期値が「５Ｃ」の例を表している。
【００６７】
図８（Ａ）は、カウンタ回路１０ｂのクロック端子に供給されるクロック信号を表す。図８（Ｂ）は、カウンタ回路１０ｂがカウントしているカウント値を１６進数で表す。図８（Ｃ）は、データラッチ回路１１ｂがラッチしているラッチデータの値を１６進数で表す。図８（Ｄ）は、バス３から伝送されたデータの値を１６進数で表す。図８（Ｅ）は、復号回路１２ｂからＬＳＩ２の内部に入力される入力データを１６進数で表す。
【００６８】
なお、以下の説明では、図８（Ａ）のクロック信号を構成するパルスに１〜１９の通し番号を付し、その通し番号を付された各パルスをｃｌｋ１〜ｃｌｋ１９と呼ぶ。
【００６９】
電源投入やリセットの直後、カウンタ回路１０ｂはデータラッチ回路１１ｂのラッチデータの初期値「５Ｃ」の下位４ビット「Ｃ」をロードし、その値「Ｃ」からカウントを行う。復号回路１２ｂはｃｌｋ１〜３が入力されるタイミングで、データラッチ回路１１ｂから供給されたラッチデータの値「５Ｃ」を用いて入出力バッファ１４ｂから供給されるデータを後述するように復号化し、復号化したデータをＬＳＩ２の内部への入力データとして出力する。
【００７０】
ｃｌｋ３が入力されると、カウンタ回路１０ｂのカウント値は「Ｆ」となり、カウンタ回路１０ｂはデータラッチ回路１１ｂにキャリー信号を供給する。データラッチ回路１１ｂは、カウンタ回路１０ｂからキャリー信号が供給されると、入出力バッファ１４ｂが保持しているバス３から伝送されたデータの値「２Ｆ」をラッチデータとしてラッチする。
【００７１】
また、カウンタ回路１０ｂはデータラッチ回路１１ｂにキャリー信号を供給した後、データラッチ回路１１ｂにラッチされたラッチデータの値「２Ｆ」から下位４ビットの値「Ｆ」をロードし、その値「Ｆ」から再びカウントを開始する。
【００７２】
復号回路１２ｂは、ｃｌｋ４が入力されるタイミングで、データラッチ回路１１ｂから供給されたラッチデータの値「２Ｆ」を用いて入出力バッファ１４ｂから供給されたデータの値「８Ｄ」を後述するように復号化し、復号化したデータの値「Ａ２」をＬＳＩ２の内部への入力データとしてに出力する。
【００７３】
ｃｌｋ４が入力されると、カウンタ回路１０ｂのカウント値は「Ｆ」となり、カウンタ回路１０ｂはデータラッチ回路１１ｂにキャリー信号を供給する。データラッチ回路１１ｂは、カウンタ回路１０ｂからキャリー信号が供給されると、入出力バッファ１４ａが保持しているバス３から伝送されたデータの値「８Ｄ」をラッチデータとしてラッチする。
【００７４】
また、カウンタ回路１０ｂはデータラッチ回路１１ｂにキャリー信号を供給した後、データラッチ回路１１ｂにラッチされたラッチデータの値「８Ｄ」の下位４ビット「Ｄ」をロードし、その値「Ｄ」から再びカウントを開始する。以下、同様な処理を繰り返す。
【００７５】
なお、復号回路１２ｂは暗号回路１３ａと同様に、データラッチ回路１１ｂにラッチされている８ビットのラッチデータを用いて、入出力バッファ１４ｂから供給されるデータを例えばデータラッチ回路１１ｂにラッチされている８ビットのラッチデータとＸＯＲを取ることにより復号化する。
【００７６】
したがって、復号回路１２ｂはデータラッチ回路１１ｂにラッチされているラッチデータに応じて、バス３から伝送されたデータＤ０〜Ｄ７を復号化して出力することができる。
【００７７】
前述したように、図１では制御信号をライト信号と定義しているが、図９のように制御信号をリード（Ｒｅａｄ）信号と定義してもよい。図９は、本発明のデータ暗号化方法およびデータ復号化方法の第２実施例の説明図を示す。
【００７８】
なお、図９のように制御信号をリード信号と定義した場合、ＬＳＩ２でデータの暗号化を行い、ＬＳＩ１でデータの復号化を行うが、基本的な動作は図１のように制御信号をライト信号と定義した場合と同様であり、説明を省略する。
【００７９】
その他、ＣＰＵのような主制御装置以外にバスマスタ方式のＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔ）などでも主従関係が成り立てば、その制御信号を利用して図１０のように構成してもよい。
【００８０】
図１０は、本発明のデータ暗号化方法およびデータ復号化方法の第３実施例の説明図を示す。図１０のＬＳＩ１，２は、図１のＬＳＩ１，２に信号切替器１５ａ，１５ｂを追加した構成である。
【００８１】
例えばＬＳＩ１，２のどちらか一方をマスタ，他方をスレーブと定義し、マスタから制御信号を出力する。ＬＳＩ１をマスタ，ＬＳＩ２をスレーブと定義した場合、ＬＳＩ１の信号切替器１５ａは端子Ａに供給された制御信号を端子Ｏに出力するようにバスマスタ（Ｂｕｓ　Ｍａｓｔｅｒ）信号で制御される。また、ＬＳＩ２の信号切替器１５ｂは端子Ｂに供給された制御信号を端子Ｏに出力するようにバスマスタ信号で制御される。
【００８２】
一方、ＬＳＩ１をスレーブ，ＬＳＩ２をマスタと定義した場合、ＬＳＩ１の信号切替器１５ａは端子Ｂに供給された制御信号を端子Ｏに出力するようにバスマスタ信号で制御される。また、ＬＳＩ２の信号切替器１５ｂは端子Ａに供給された制御信号を端子Ｏに出力するようにバスマスタ信号で制御される。
【００８３】
即ち、ＬＳＩ１，２はマスタと定義された場合に、ＬＳＩ内部から供給される制御信号をクロック信号としてカウンタ回路１０ａ，１０ｂに供給する。また、ＬＳＩ１，２はスレーブと定義された場合に、他方のＬＳＩから供給される制御信号をクロック信号としてカウンタ回路１０ａ，１０ｂに供給する。
【００８４】
したがって、図１０のように構成することで、本発明のデータ暗号化方法およびデータ復号化方法はバスマスタ方式に対応させることもできる。なお、信号切替器１５ａ，１５ｂ以外の構成は、図１と同様であるため説明を省略する。
【００８５】
なお、前記の実施例では、カウンタ回路１０ａ，１０ｂがアップカウンタである例について説明したが、アップカウンタに限ることなくダウンカウンタ，シフトレジスタであってもよい。
【００８６】
また、入出力バッファ１４ａ，１４ｂが保持しているデータをラッチデータとしてラッチする場合、入出力バッファ１４ａ，１４ｂが保持しているデータの一部（例えば、データＤ７，Ｄ５，Ｄ３，Ｄ１など）を任意に組み合わせてラッチしてもよいし、入出力バッファ１４ａ，１４ｂが保持しているデータの全部又は一部を並び替えてラッチしてもよい。
【００８７】
本発明は、ラッチデータの値に応じて次のラッチデータのラッチタイミングを変化させると共に、そのラッチデータを用いて暗号化を行うため、バス３を伝送するデータを解析することは極めて困難となる。
【００８８】
また、ラッチデータをラッチしておくデータラッチ回路１１ａ、１１ｂを不揮発性メモリで構成することで、電源投入やリセットの直後であっても前回のラッチデータを利用することができる。したがって、電源投入やリセットなどからの動作シーケンスが一定にならず、バス３を伝送するデータを解析することは極めて困難となる。
【００８９】
本発明は、以下に記載する付記のような構成が考えられる。
（付記１）　データ読み込み命令に応じて、バスに伝送するデータの少なくとも一部を読み込んでラッチデータとして保持する保持段階と、
前記ラッチデータに応じて、前記バスに伝送するデータを暗号化する暗号化段階と、
前記ラッチデータに応じた時間間隔で、前記データ読み込み命令を実行するデータ読み込み命令実行段階と
を有することを特徴とするデータ暗号化方法。
（付記２）　前記暗号化段階は、前記バスに伝送する複数ビットのデータを、前記ラッチデータに応じて並び替えて暗号化することを特徴とする付記１記載のデータ暗号化方法。
（付記３）　前記暗号化段階は、前記バスに伝送する複数ビットのデータを、前記ラッチデータを用いて演算して暗号化することを特徴とする付記１記載のデータ暗号化方法。
（付記４）　データ読み込み命令に応じて、バスから伝送されたデータの少なくとも一部を読み込んでラッチデータとして保持する保持段階と、
前記ラッチデータに応じて、前記バスから伝送されたデータを復号化する復号化段階と、
前記ラッチデータに応じた時間間隔で、前記データ読み込み命令を実行するデータ読み込み命令実行段階と
を有することを特徴とするデータ復号化方法。
（付記５）　前記復号化段階は、前記バスから伝送された複数ビットのデータを、前記ラッチデータに応じて並び替えて復号化することを特徴とする付記４記載のデータ復号化方法。
（付記６）　前記復号化段階は、前記バスから伝送された複数ビットのデータを、前記ラッチデータを用いて演算して復号化することを特徴とする付記４記載のデータ復号化方法。
（付記７）　データをバスに伝送する集積回路であって
データ読み込み命令に応じて、バスに伝送するデータの少なくとも一部を読み込んでラッチデータとして保持する保持手段と、
前記ラッチデータに応じて、前記バスに伝送するデータを暗号化する暗号化手段と、
前記ラッチデータに応じた時間間隔で、前記データ読み込み命令を実行するデータ読み込み命令実行手段と
を有することを特徴とする集積回路。
（付記８）　前記暗号化手段は、前記バスに伝送する複数ビットのデータを、前記ラッチデータに応じて並び替えて暗号化することを特徴とする付記７記載の集積回路。
（付記９）　前記暗号化手段は、前記バスに伝送する複数ビットのデータを、前記ラッチデータを用いて演算して暗号化することを特徴とする付記７記載の集積回路。
（付記１０）　データをバスから伝送される集積回路であって、
データ読み込み命令に応じて、バスから伝送されたデータの少なくとも一部を読み込んでラッチデータとして保持する保持手段と、
前記ラッチデータに応じて、前記バスから伝送されたデータを復号化する復号化手段と、
前記ラッチデータに応じた時間間隔で、前記データ読み込み命令を実行するデータ読み込み命令実行手段と
を有することを特徴とする集積回路。
（付記１１）　前記復号化手段は、前記バスから伝送された複数ビットのデータを、前記ラッチデータに応じて並び替えて復号化することを特徴とする付記１０記載の集積回路。
（付記１２）　前記復号化手段は、前記バスから伝送された複数ビットのデータを、前記ラッチデータを用いて演算して復号化することを特徴とする付記１０記載の集積回路。
（付記１３）　前記保持手段は、不揮発性メモリであることを特徴とする付記７又は１０記載の集積回路。
【００９０】
【発明の効果】
上述の如く、本発明によれば、バスに伝送するデータが不正に解析されることを効果的に防止できるので、データの機密性を強固にできる。
【００９１】
【図面の簡単な説明】
【図１】本発明のデータ暗号化方法およびデータ復号化方法の第１実施例の説明図である。
【図２】暗号化を行うＬＳＩの一例の動作タイミング図である。
【図３】暗号回路の一例の構成図である。
【図４】復号化を行うＬＳＩの一例の動作タイミング図である。
【図５】復号回路の一例の構成図である。
【図６】暗号化を行うＬＳＩの他の一例の動作タイミング図である。
【図７】暗号回路の他の一例の構成図である。
【図８】復号化を行うＬＳＩの他の一例の動作タイミング図である。
【図９】本発明のデータ暗号化方法およびデータ復号化方法の第２実施例の説明図である。
【図１０】本発明のデータ暗号化方法およびデータ復号化方法の第３実施例の説明図である。
【符号の説明】
１，２　　ＬＳＩ（Ｌａｒｇｅ　Ｓｃａｌｅ　Ｉｎｔｅｇｒａｔｅｄ　ｃｉｒｃｕｉｔ）
３　　バス（Ｂｕｓ）
１０ａ，１０ｂ　　カウンタ回路
１１ａ，１１ｂ　　データラッチ回路
１２ａ，１２ｂ　　復号回路
１３ａ，１３ｂ　　暗号回路
１４ａ，１４ｂ　　入出力バッファ
１５ａ，１５ｂ　　信号切替器
２１，３１　　デコーダ
２２−１〜２２−８，３２−１〜３２−８　　選択器
【図１】
2004072673.tif 000003
【図２】
2004072673.tif 000004
【図３】
2004072673.tif 000005
【図４】
2004072673.tif 000006
【図５】
2004072673.tif 000007
【図６】
2004072673.tif 000008
【図７】
2004072673.tif 000009
【図８】
2004072673.tif 000010
【図９】
2004072673.tif 000011
【図１０】
2004072673.tif 000012