(57)【要約】【課題】比較的簡単な回路構成で入力データのビット数に合致せた暗号処理を行えるストリーム暗号装置を得る。【解決手段】ストリーム暗号装置１におけるストリーム暗号処理部１０において、部分暗号回路２０は内部に８ビットのキー情報格納用の複数の格納部を有し、複数のキー情報はアドレスに対応付けられている。部分暗号回路２０〜２３は、クロックＣＬＫの周期ＴＣ内において、２０〜２３，２０の順にしたがい部分暗号回路２０〜２３間で、アドレスに対する複数の８ビットキー情報の内容を順次変更するキー情報変更処理を行いながら、複数のＫビットキー情報の転送処理を実行し、複数のＫビットキー情報のうち一の情報をキーストリームキーＺＯＵＴ０〜ＺＯＵＴ３として出力する。【選択図】図２
2014186180.tif 000002
【特許請求の範囲】
【請求項１】
Ｎビットの入力データを受け、該入力データに対しＮビットのストリームキーを用いて暗号処理を行い暗号化データを得るストリーム暗号装置であって、
Ｋ（＝Ｎ／ｍ）ビット構成の第１〜第ｍの部分ストリームキーを出力する第１〜第ｍの部分暗号回路を有する暗号処理部と、
前記第１〜第ｍの部分ストリームキーを前記Ｎビットのストリームキーとして受け、前記Ｎビットの入力データと対応するビット間で前記暗号処理を行い前記暗号化データを得る演算部とを備え、
前記暗号処理部において、
前記第１部分暗号回路は複数の格納部を有し、前記複数の格納部に各々がＫビットの複数のキー情報が格納され、前記複数のキー情報はアドレスに対応付けられており、
前記第１〜第ｍの部分暗号回路は、単位動作期間内において、第１、第２，…，第ｍ，第１の順にしたがい第１〜第ｍの部分暗号回路間で、アドレスに対する前記複数のＫビットキー情報の内容を順次変更するキー情報変更処理を行いながら、前記複数のＫビットキー情報の転送処理を実行し、前記複数のＫビットキー情報のうち一の情報を前記第１〜第ｍの部分ストリームキーとして出力することを特徴とする、
ストリーム暗号装置。
【請求項２】
請求項１記載のストリーム暗号装置であって、
前記入力データは動作クロックにより規定されるクロック周期毎に得られ、
前記単位動作期間は前記クロック周期に一致する、
ストリーム暗号装置。
【請求項３】
請求項１または請求項２記載のストリーム暗号装置であって、
前記第２〜第ｍの部分暗号回路は、前記複数のＫビットキー情報のデータ保持動作を伴うことなく前記複数のＫビットキー情報の転送処理を実行することを特徴とする、
ストリーム暗号装置。
【請求項４】
請求項１〜請求項３のうち、いずれか１項に記載のストリーム暗号装置であって、
前記情報変更処理は、
前記複数のＫビットキー情報のうち少なくとも２つのキー情報をアドレスとの関係において置換する情報置換処理を含む、
ストリーム暗号装置。
【請求項５】
請求項１〜請求項３のうち、いずれか１項に記載のストリーム暗号装置であって、
前記情報変更処理は、
前記複数のＫビットキー情報のうち所定のアドレスに対応するキー情報を前記所定のアドレスと異なる少なくとも２つのアドレスのキー情報に基づく演算結果に改める情報作成処理を含む、
ストリーム暗号装置。
【請求項６】
請求項１〜請求項５のうち、いずれか１項に記載のストリーム暗号装置であって、
前記暗号処理部は、
Ｋ（＝Ｎ／ｍ）ビット構成の第１〜第ｐ（ｐ≧ｍ）の部分ストリームキーを出力可能な選択用の第１〜第ｐの部分暗号回路を有する選択用暗号回路部と、
第１〜第ｐの部分暗号回路のうち、Ｎ／Ｋを満足するｍ個の部分暗号回路を選択し、前記第１〜第ｍの部分暗号回路として前記キー情報変更処理及び前記転送処理を実行させる暗号処理内容制御部とを備える、
ストリーム暗号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ビット単位に情報を暗号化するストリーム暗号装置に関する。
【背景技術】
【０００２】
従来、ストリーム暗号装置は、暗号化の際に使用される乱数列であるストリームキーを発生し、入力されたデータ列に対しストリームキーによる演算処理を施して暗号化データを得ている。このようなストリーム暗号装置として例えば特許文献１で開示されたストリーム暗号装置がある。ストリーム系暗号では大容量データをリアルタイムに暗号化されることが求められるが、情報システムにストリーム（系）暗号装置を実装する際、システム側における入力データのデータバス幅とストリーム系暗号装置のストリームキーのデータバス幅が一致しない場合がある。
【０００３】
一例として、情報システムから提供される入力データ（平文データ）のデータバス幅が３２ビットであり、ストリーム暗号装置によって暗号化するストリームキーのデータバス幅が８ビットの場合を想定する。
【０００４】
図１０は上記想定時に考えられる従来のストリーム暗号装置の構成例を示すブロック図である。同図に示すように、情報システム１０２はクロックＣＬＫ（周期ＴＣ）に同期して３２ビット（ｂｉｔ）のデータ幅の入力データＤＩをストリーム暗号装置１０１に供給している。
【０００５】
ストリーム暗号装置１０１はストリーム暗号処理部１１０、加算部１０３、カウンタ１０４、セレクタ１０５、セレクタ１０６及びバッファ１０７から構成される。ストリーム暗号処理部１１０及びカウンタ１０４は情報システム１０２の動作用のクロックＣＬＫの４倍速のクロックＣＬＫ×４に同期して動作する。
【０００６】
セレクタ１０５は３２ビットの入力データＤＩを受け、この際、“０”〜“３”の入力部にそれぞれ８ビット毎に分割して受ける。セレクタ１０５はカウンタ１０４からのカウント信号Ｓ１０４に基づき、“０”〜“３”の入力部に受ける８ビットデータＤＩ８０〜ＤＩ８３のいずれかを選択部分入力データＤ１０５として出力する。カウンタ１０４は４倍クロックＣＬＫ×４により“０”〜“３”をカウントするため、１／４周期｛ＴＣ／４｝毎に選択部分入力データＤ１０５の内容が８ビットデータＤＩ８０〜ＤＩ８３のいずれかに切り替えられる。
【０００７】
一方、ストリーム暗号処理部１１０は４倍クロックＣＬＫ×４に同期して動作するため、選択部分入力データＤ１０５となる８ビットデータＤＩ８０〜ＤＩ８３それぞれに対して８ビットのストリームキーを順次出力することができ、その結果、加算部１０３で加算処理（排他的論理和処理）が施された８ビット暗号化データＣＤ８（ＣＤ８０〜ＣＤ８３）が順次得られる。
【０００８】
８ビット暗号化データＣＤ８０〜ＣＤ８３は、カウント信号Ｓ１０４に基づきセレクタ１０６により出力部“０”〜“３”に分類され、その出力が３２ビットのバッファ１０７にて保持される。
【０００９】
その結果、バッファ１０７より得られる４つの８ビット暗号化データＣＤ８０〜ＣＤ８３が組み合わされて３２ビット暗号化データＣＤ３２として得られる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００３−３２２４４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
図１０で示すストリーム暗号装置１０１において、入力データＤＩの出力期間中に、ストリーム暗号処理部１１０はクロックＣＬＫの周期ＴＣ内に４つの８ビット暗号化データＣＤ８０〜ＣＤ８３を得る必要があるため、４倍クロックＣＬＫ×４で動作させている。逆に言えば、情報システム１０２のクロックＣＬＫは４倍クロックＣＬＫ×４の１／４に制限されることになるため、全体として１／４のスループットの低下を招くことになり、入力データＤＩに対するリアルタイムの暗号処理が実質的に行えないという問題点があった。
【００１２】
加えて、入力データＤＩ用の３２ビットのデータバスを８ビット毎のデータバスに分割して８ビットデータＤＩ８０〜ＤＩ８３を得、これら８ビットデータＤＩ８０〜ＤＩ８３を８ビット単位で暗号化して得られる８ビット暗号化データＣＤ８０〜ＣＤ８３を再び３２ビットのデータバスに変換して３２ビット暗号化データＣＤ３２とする必要がある。このため、データバスの変換回路（カウンタ１０４、セレクタ１０５及び１０６相当）やデータバッファ（バッファ１０７）が余分に必要となり、回路構成が複雑化するという問題点があった。
【００１３】
この発明は上記問題点を解決するためになされたもので、比較的簡単な回路構成で入力データのビット数に合致させた暗号処理を行えるストリーム暗号装置を得ることを目的とする。
【課題を解決するための手段】
【００１４】
この発明に係る請求項１記載のストリーム暗号装置は、Ｎビットの入力データを受け、該入力データに対しＮビットのストリームキーを用いて暗号処理を行い暗号化データを得るストリーム暗号装置であって、Ｋ（＝Ｎ／ｍ）ビット構成の第１〜第ｍの部分ストリームキーを出力する第１〜第ｍの部分暗号回路を有する暗号処理部と、前記第１〜第ｍの部分ストリームキーを前記Ｎビットのストリームキーとして受け、前記Ｎビットの入力データと対応するビット間で前記暗号処理を行い前記暗号化データを得る演算部とを備え、前記暗号処理部において、前記第１部分暗号回路は複数の格納部を有し、前記複数の格納部に各々がＫビットの複数のキー情報が格納され、前記複数のキー情報はアドレスに対応付けられており、前記第１〜第ｍの部分暗号回路は、単位動作期間内において、第１、第２，…，第ｍ，第１の順にしたがい第１〜第ｍの部分暗号回路間で、アドレスに対する前記複数のＫビットキー情報の内容を順次変更するキー情報変更処理を行いながら、前記複数のＫビットキー情報の転送処理を実行し、前記複数のＫビットキー情報のうち一の情報を前記第１〜第ｍの部分ストリームキーとして出力することを特徴とする。
【００１５】
請求項２の発明は、請求項１記載のストリーム暗号装置であって、前記入力データは動作クロックにより規定されるクロック周期毎に得られ、前記単位動作期間は前記クロック周期に一致する。
【００１６】
請求項３の発明は、請求項１または請求項２記載のストリーム暗号装置であって、前記第２〜第ｍの部分暗号回路は、前記複数のＫビットキー情報のデータ保持動作を伴うことなく前記複数のＫビットキー情報の転送処理を実行することを特徴とする。
【００１７】
請求項４の発明は、請求項１〜請求項３のうち、いずれか１項に記載のストリーム暗号装置であって、前記情報変更処理は、前記複数のＫビットキー情報のうち少なくとも２つのキー情報をアドレスとの関係において置換する情報置換処理を含む。
【００１８】
請求項５の発明は、請求項１〜請求項３のうち、いずれか１項に記載のストリーム暗号装置であって、前記情報変更処理は、前記複数のＫビットキー情報のうち所定のアドレスに対応するキー情報を前記所定のアドレスと異なる少なくとも２つのアドレスのキー情報に基づく演算結果に改める情報作成処理を含む。
【００１９】
請求項６の発明は、請求項１〜請求項５のうち、いずれか１項に記載のストリーム暗号装置であって、前記暗号処理部は、Ｋ（＝Ｎ／ｍ）ビット構成の第１〜第ｐ（ｐ≧ｍ）の部分ストリームキーを出力可能な選択用の第１〜第ｐの部分暗号回路を有する選択用暗号回路部と、第１〜第ｐの部分暗号回路のうち、Ｎ／Ｋを満足するｍ個の部分暗号回路を選択し、前記第１〜第ｍの部分暗号回路として前記キー情報変更処理及び前記転送処理を実行させる暗号処理内容制御部とを備える。
【発明の効果】
【００２０】
この発明における請求項１記載のストリーム暗号装置は上記特徴を有することにより、各々がＫビットの第１〜第ｍの部分ストリームキーを併せてＮビットのストリームキーとして単位動作時間内に出力することができる。
【００２１】
その結果、Ｎビットの入力データとＫビットの部分ストリームキー間のビット数の違いを調整するビット数変換回路等を設けることなく、比較的簡単な回路構成で単位動作時間内に入力データのビット数に合致させた暗号処理を行うことができる。
【図面の簡単な説明】
【００２２】
【図１】この発明の実施の形態１であるストリーム暗号装置の構成を示すブロック図である。
【図２】図１で示したストリーム暗号処理部の内部構成を示すブロック図である。
【図３】従来のＲＣ４方式を採用した８ビットのストリームキーを出力する暗号回路の機能ブロックを模式的に示す説明図である。
【図４】実施の形態１のストリーム暗号処理部における機能ブロックを模式的に示す説明図（その１）である。
【図５】実施の形態１のストリーム暗号処理部における機能ブロックを模式的に示す説明図（その２）である。
【図６】実施の形態１のストリーム暗号処理部における処理機能を具体的に実現する第１の回路構成例を示す回路図である。
【図７】ＬＦＳＲの構成を示す回路図である。
【図８】実施の形態１のストリーム暗号処理部における処理機能を具体的に実現する第２の回路構成例を示す回路図である。
【図９】実施の形態２のストリーム暗号装置１におけるストリーム暗号処理部１０Ｂの構成を示すブロック図である。
【図１０】従来のストリーム暗号装置の構成例を示すブロック図である。
【発明を実施するための形態】
【００２３】
＜全体構成＞
図１はこの発明の実施の形態１であるストリーム暗号装置１の構成を示すブロック図である。
【００２４】
同図に示すように、ストリーム暗号装置１は３２ビットの入力データＤＩ（平文データ）を供給する情報システム２の動作用のクロックＣＬＫを受け、クロックＣＬＫに同期して暗号処理を行う。
【００２５】
ストリーム暗号装置１はストリーム暗号処理部１０及び加算部３から構成される、ストリーム暗号処理部１０はクロックＣＬＫに同期して３２ビットのストリームキーＳＫ０を出力し、加算部３（演算部）により互いに３２ビットの入力データＤＩ及びストリームキーＳＫ０において対応するビット間で演算処理（排他的論理和処理）を行い、３２ビットの暗号化データＣＤ０を得ている。
【００２６】
図２はストリーム暗号処理部１０の内部構成を示すブロック図である。同図に示すように、部分暗号回路群１５は４段に直列に接続された部分暗号回路２０〜２３から構成される。部分暗号回路２０〜２３はそれぞれ８ビットのストリームキーの生成能力を有するため、部分暗号回路２０〜２３から出力される８ビットの（部分）ストリームキーＺＯＵＴ０〜ＺＯＵＴ３を併せて３２ビットのストリームキーＳＫ０としている。なお、部分暗号回路群１５内の部分暗号回路２０〜２３はシーケンサ部１１による制御下で動作する。
【００２７】
部分暗号回路２０〜２３は、クロックＣＬＫの周期ＴＣである単位動作期間内において、部分暗号回路２０，２１，２２，２３，２０の順にしたがい部分暗号回路２０〜２３間で、アドレスに対する２５６個の８ビットキー情報の内容を順次変更するキー情報変更処理を行いながら、２５６個の８ビットキー情報の転送処理を実行し、２５６個の８ビットキー情報のうち一の情報を（部分）ストリームキーＺＯＵＴ０〜ＺＯＵＴ３として出力している。
【００２８】
＜回路詳細＞
（前提技術）
図３は従来のＲＣ４（Rivest’s Cipher 4）方式を採用した８ビットのストリームキーＺＯＵＴを出力する暗号回路の機能ブロックを模式的に示す説明図である。
【００２９】
同図に示すように、この暗号回路はカウント値生成部７１、７２、キー変数生成部７３キーストリーム記憶部７４、置換処理部７５、及びキーストリーム生成部７６から構成されている。
【００３０】
カウント値生成部７１は変数ｉのカウント値ｃｎｔ＿ｉを“１”ずつインクリメントして得られるカウント値ｔｒ＿ｃｎｔ＿ｉを出力する。
【００３１】
カウント値生成部７２はストリームキーの再初期化時は８ビットのキー変数Ｋｉ、変数ｊのカウント値ｃｎｔ＿ｊ及び読出データｎ０＿Ｓｉの和をアドレス値ｎ０＿ｊとし、ストリームキー生成時にはカウント値ｃｎｔ＿ｊと読出データｎ０＿Ｓｉとの和をアドレス値ｎ０＿ｊとして出力している。
【００３２】
キー変数生成部７３は変数ｉに基づく８ビットのキー変数Ｋｉ出力している。なお、キー変数ＫｉとしてＫ０〜Ｋ２５５が予め設定されている。
【００３３】
キーストリーム記憶部７４（Ｓボックス部ｎ０＿Ｓ）はアドレスＳ０００〜Ｓ２５５に対応する形式で８ビットのキー情報を２５６個分、格納するキー情報の格納部を有している。そして、カウント値生成部７１で得られたカウント値ｔｒ＿ｃｎｔ＿ｉで指示する変数ｉをアドレス値とした読出データｎ０＿Ｓｉを出力するとともに、カウント値生成部７２で得られたアドレス値ｎ０＿ｊに対応する読出データｎ０＿Ｓｊを出力する。
【００３４】
置換処理部７５はキーストリーム記憶部７４（Ｓボックス部ｎ１＿Ｓ）に対し、読出データｎ０＿Ｓｉがアドレス値ｎ０＿ｊに格納され、読出データｎ０＿Ｓｊがアドレス値ｎ０＿ｉに格納されるように、読出データｎ０＿Ｓｉと読出データｎ０＿Ｓｊとを置換する置換処理を行う。
【００３５】
図３では、置換処理部７５による置換後のキーストリーム記憶部７４の内容をＳボックス部ｎ１＿Ｓとして示している。
【００３６】
さらに、キーストリーム生成部７６は、キーストリーム記憶部７４におけるアドレス値ｎ０＿ｔ（読出データｎ０＿Ｓｉ＋読出データｎ０＿Ｓｊ）に対応する読出データｎ０＿Ｓｔをセレクタ７６ａの“１”入力に出力する。セレクタ７６ａは、ストリームキー生成時において、読出データｎ０＿ＳｔをストリームキーＺＯＵＴ［７：０］として出力する。なお、セレクタ７６ａはストリームキー生成時以外の時は“０”入力に得られる８ビットのｈ００（１６進表記）を出力する。セレクタ７６ａの選択内容は制御信号State（==ENC）により制御される。
【００３７】
以下、適宜、図３を参照しつつ、従来のＲＣ４形式によるストリームキーＺＯＵＴ［７：０］の生成処理を説明する。
【００３８】
（キーストリーム記憶部７４の初期化）
キーストリーム記憶部７４のアドレス０〜２５５に対応してアドレスと同じ値をキー情報として格納する。
【００３９】
（キーストリーム記憶部７４の再初期化）
その後、以下のステップＳＴ１００〜ＳＴ１０５を実行してキーストリーム記憶部７４に対し再初期化を行う。
【００４０】
ＳＴ１００：ｉ＝０，ｊ＝０に初期設定、
ＳＴ１０１：変数ｉに基づくカウント値ｔｒ＿ｃｎｔ＿ｉに対応するアドレスの読出データｎ０＿Ｓｉの読み出し、
ＳＴ１０２：変数ｊに基づくアドレス値ｎ０＿ｊに対応するアドレスの読出データｎ０＿Ｓｊの読み出し、
ＳＴ１０３：アドレス値ｎ０＿ｊの格納部への読出データｎ０＿Ｓｉの書き込み、
ＳＴ１０４：アドレス値ｎ０＿ｉの格納部への読出データｎ０＿Ｓｊの書き込み、
ＳＴ１０５：ｊ＝ｊ＋ｎ０＿Ｓｉ＋Ｋｉ、ｉ＝ｉ＋１として、ステップＳＴ１０１に戻る。
【００４１】
ステップＳＴ１０１及びＳＴ１０２の処理は、キーストリーム記憶部７４から置換処理部７５への読出データｎ０＿Ｓｉ及び読出データｎ０＿Ｓｊの読み出しに相当し、ステップＳＴ１０３及びＳＴ１０４の処理は、置換処理部７５，キーストリーム生成部７６間の読出データｎ０＿Ｓｉ及び読出データｎ０＿Ｓｊの置換処理に相当する。ステップＳＴ１０５の処理は、カウント値生成部７１及びカウント値生成部７２における次サイクルのカウント値ｎｘｔ＿ｃｎｔ＿ｉ及びｎｘｔ＿ｃｎｔ＿ｊの設定に相当する。
【００４２】
上記ステップＳＴ１０１〜ＳＴ１０５を２５６サイクル繰り返すことにより、キーストリーム記憶部７４の再初期化は終了する。
【００４３】
（ストリームキーの生成処理）
その後、以下のステップＳＴ２０１〜ＳＴ２０４を実行してストリームキーの生成処理を行う。
【００４４】
ＳＴ２０１：変数ｉに基づくカウント値ｔｒ＿ｃｎｔ＿ｉに対応するアドレスの読出データｎ０＿Ｓｉの読み出し、
ＳＴ２０２：変数ｊに基づくアドレス値ｎ０＿ｊに対応するアドレスの読出データｎ０＿Ｓｉの読み出し、
ＳＴ２０３：変数ｔに基づくアドレス値ｎ０＿ｔに対応するアドレスの読出データｎ０＿Ｓｔを読み出し、ストリームキーＺＯＵＴ［７：０］を出力する。
【００４５】
ＳＴ２０４：アドレス値ｎ０＿ｊの格納部への読出データｎ０＿Ｓｉの書き込み、
ＳＴ２０５：アドレス値ｎ０＿ｉの格納部への読出データｎ０＿Ｓｊの書き込み、
ＳＴ２０６：ｊ＝ｊ＋ｎ０＿Ｓｉ、ｉ＝ｉ＋１として、ステップＳＴ２０１に戻る。
【００４６】
ステップＳＴ２０１及びＳＴ２０２の処理は、キーストリーム記憶部７４から置換処理部７５への読出データｎ０＿Ｓｉ及び読出データｎ０＿Ｓｊの読み出しに相当し、ステップＳＴ２０３処理は、キーストリーム生成部７６内のキーストリーム記憶部７４からの読出データｎ０＿Ｓｔの読み出し、キーストリーム生成部７６のセレクタ７６ａからのストリームキーＺＯＵＴ［７：０］の出力に相当する。
【００４７】
ステップＳＴ２０４及びＳＴ２０５の処理は、置換処理部７５，キーストリーム生成部７６間の読出データｎ０＿Ｓｉ及び読出データｎ０＿Ｓｊの置換処理に相当する。ステップ２０６の処理は、カウント値生成部７１及びカウント値生成部７２における次サイクルのカウント値ｎｘｔ＿ｃｎｔ＿ｉ及びｎｘｔ＿ｃｎｔ＿ｊの設定に相当する。
【００４８】
上記ステップＳＴ２０１〜ＳＴ２０６を１サイクル実行することにより、８ビットのストリームキーＺＯＵＴ［７：０］を出力することができる。
【００４９】
（実施の形態１の処理機能）
図４及び図５はＲＣ４方式を採用した３２ビットのストリームキーＳＫ０を出力する実施の形態１のストリーム暗号処理部１０における機能ブロックを模式的に示す説明図である。図４及び図５は下方及び上方の一点鎖線により分断された一方部分及び他方部分を示している。
【００５０】
これらの図に示すように、ストリーム暗号処理部１０は、カウント値生成部３１及び３２、キー変数生成部３３、キーストリーム記憶部４０〜４３（４４）、置換処理部５０〜５３及びキーストリーム生成部６０〜６３から構成されている。
【００５１】
カウント値生成部３１は変数ｉのカウント値ｃｎｔ＿ｉを“１”ずつインクリメントして得られるカウント値ｔｒ＿ｃｎｔ＿ｉを出力する。
【００５２】
キー変数生成部３３は２５６バイト（２０４８ビット）を上位から４バイト（３２ビット）ずつ出力する。すなわち、４バイトのキー変数は各々が１バイト（８ビットの）キー変数ｎ０＿Ｋｉｉ、キー変数ｎ１＿Ｋｉｉ、キー変数ｎ２＿Ｋｉｉ及びキー変数ｎ３＿Ｋｉｉに分類される。なお、４バイトのキー変数ＫｉｉとしてＫ０〜Ｋ６３が予め設定されており、変数ｉｉはｉｉ＝０〜６３で変化する。
【００５３】
カウント値生成部３２はカウント値演算部３２０〜３２３を有し、カウント値演算部３２０はストリームキーの再初期化時は８ビットのキー変数ｎ０＿Ｋｉｉ、変数ｊのカウント値ｃｎｔ＿ｊ及び読出データｎ０＿Ｓｉの和をアドレス値ｎ０＿ｊとし、ストリームキー生成時にはカウント値ｃｎｔ＿ｊと読出データｎ０＿Ｓｉとの和をアドレス値ｎ０＿ｊとして出力している。
【００５４】
カウント値演算部３２１はストリームキーの再初期化時は８ビットのキー変数ｎ１＿Ｋｉｉ、アドレス値ｎ０＿ｊ及び読出データｎ１＿Ｓｉの和をアドレス値ｎ１＿ｊとし、ストリームキー生成時にはアドレス値ｎ０＿ｊと読出データｎ１＿Ｓｉとの和をアドレス値ｎ１＿ｊとして出力している。
【００５５】
カウント値演算部３２２はストリームキーの再初期化時は８ビットのキー変数ｎ２＿Ｋｉｉ、アドレス値ｎ１＿ｊ及び読出データｎ２＿Ｓｉの和をアドレス値ｎ２＿ｊとし、ストリームキー生成時にはアドレス値ｎ１＿ｊと読出データｎ２＿Ｓｉとの和をアドレス値ｎ２＿ｊとして出力している。
【００５６】
カウント値演算部３２３はストリームキーの再初期化時は８ビットのキー変数ｎ３＿Ｋｉｉ、アドレス値ｎ２＿ｊ及び読出データｎ３＿Ｓｉの和をアドレス値ｎ３＿ｊとし、ストリームキー生成時にはアドレス値ｎ２＿ｊと読出データｎ３＿Ｓｉとの和をアドレス値ｎ３＿ｊとして出力している。
【００５７】
カウント値生成部３４はカウント値演算部３４０〜３４３から構成され、カウント値演算部３４０は読出データｎ０＿Ｓｉと読出データｎ０＿Ｓｊとの和をアドレス値ｎ０＿ｔとして出力し、カウント値演算部３４１は読出データｎ１＿Ｓｉと読出データｎ１＿Ｓｊとの和をアドレス値ｎ１＿ｔとして出力する。
【００５８】
さらに、カウント値演算部３４２は読出データｎ２＿Ｓｉと読出データｎ２＿Ｓｊとの和をアドレス値ｎ２＿ｔとして出力し、カウント値演算部３４３は読出データｎ３＿Ｓｉと読出データｎ３＿Ｓｊとの和をアドレス値ｎ３＿ｔとして出力する。
【００５９】
キーストリーム記憶部４０（Ｓボックス部ｎ０＿Ｓ）〜４３（４４）はそれぞれアドレスＳ０００〜Ｓ２５５に対応する形式で８ビットのキー情報を２５６個の格納するキー情報の格納部（複数の格納部）を有している。
【００６０】
そして、キーストリーム記憶部４０は、カウント値生成部３１で得られたカウント値ｔｒ＿ｃｎｔ＿ｉで指示する変数ｉをアドレス値とした読出データｎ０＿Ｓｉを出力するとともに、カウント値生成部３２のカウント値演算部３２０で得られたアドレス値ｎ０＿ｊに対応する読出データｎ０＿Ｓｊを出力し、カウント値演算部３４０で得られたアドレス値ｎ０＿ｔに対応する読出データｎ０＿Ｓｔを出力する。
【００６１】
キーストリーム記憶部４１は、カウント値生成部３１で得られたカウント値ｔｒ＿ｃｎｔ＿ｉ＋１で指示する変数ｉ＋１をアドレス値とした読出データｎ１＿Ｓｉを出力するとともに、カウント値生成部３２のカウント値演算部３２１で得られたアドレス値ｎ１＿ｊに対応する読出データｎ１＿Ｓｊを出力し、カウント値演算部３４１で得られたアドレス値ｎ１＿ｔに対応する読出データｎ１＿Ｓｔを出力する。
【００６２】
キーストリーム記憶部４２は、カウント値生成部３１で得られたカウント値ｔｒ＿ｃｎｔ＿ｉ＋２で指示する変数ｉ＋２をアドレス値とした読出データｎ２＿Ｓｉを出力するとともに、カウント値生成部３２のカウント値演算部３２２で得られたアドレス値ｎ２＿ｊに対応する読出データｎ２＿Ｓｊを出力し、カウント値演算部３４２で得られたアドレス値ｎ２＿ｔに対応する読出データｎ２＿Ｓｔを出力する。
【００６３】
キーストリーム記憶部４３は、カウント値生成部３１で得られたカウント値ｔｒ＿ｃｎｔ＿ｉ＋３で指示する変数ｉ＋３をアドレス値とした読出データｎ３＿Ｓｉを出力するとともに、カウント値生成部３２のカウント値演算部３２３で得られたアドレス値ｎ３＿ｊに対応する読出データｎ３＿Ｓｊを出力し、カウント値演算部３４３で得られたアドレス値ｎ３＿ｔに対応する読出データｎ３＿Ｓｔを出力する。
【００６４】
置換処理部５０は、次段のキーストリーム記憶部４１に対し、読出データｎ０＿Ｓｉがアドレス値ｎ０＿ｊに格納され、読出データｎ０＿Ｓｊがアドレス値ｎ０＿ｉに格納されるように、読出データｎ０＿Ｓｉと読出データｎ０＿Ｓｊとを置換した書き込み処理を実行する。
【００６５】
置換処理部５１は、次段のキーストリーム記憶部４２に対し、読出データｎ１＿Ｓｉがアドレス値ｎ１＿ｊに格納され、読出データｎ１＿Ｓｊがアドレス値ｎ１＿ｉに格納されるように、読出データｎ１＿Ｓｉと読出データｎ１＿Ｓｊとを置換した書き込み処理を実行する。
【００６６】
置換処理部５２は、次段のキーストリーム記憶部４３に対し、読出データｎ２＿Ｓｉがアドレス値ｎ２＿ｊに格納され、読出データｎ２＿Ｓｊがアドレス値ｎ２＿ｉに格納されるように、読出データｎ２＿Ｓｉと読出データｎ２＿Ｓｊとを置換した書き込み処理を実行する。
【００６７】
置換処理部５３は、初段（次段）のキーストリーム記憶部４０（４４）に対し、読出データｎ３＿Ｓｉがアドレス値ｎ３＿ｊに格納され、読出データｎ３＿Ｓｊがアドレス値ｎ３＿ｉに格納されるように、読出データｎ３＿Ｓｉと読出データｎ３＿Ｓｊとを置換した書き込み処理を実行する。
【００６８】
なお、説明の都合上、キーストリーム記憶部４４を示したが置換処理部５３の置換対象はキーストリーム記憶部４０に対して行われる。
【００６９】
キーストリーム生成部６０は、読出データｎ０＿Ｓｔをセレクタ６０ａの“１”入力に出力する。セレクタ６０ａは、ストリームキー生成時において、読出データｎ０＿Ｓｔを（部分）ストリームキーＺＯＵＴ０［７：０］として出力する。
【００７０】
キーストリーム生成部６１は、読出データｎ１＿Ｓｔをセレクタ６１ａの“１”入力に出力する。セレクタ６１ａは、ストリームキー生成時において、読出データｎ１＿Ｓｔを（部分）ストリームキーＺＯＵＴ１［７：０］として出力する。
【００７１】
キーストリーム生成部６２は、読出データｎ２＿Ｓｔをセレクタ６２ａの“１”入力に出力する。セレクタ６２ａは、ストリームキー生成時において、読出データｎ２＿Ｓｔを（部分）ストリームキーＺＯＵＴ２［７：０］として出力する。
【００７２】
キーストリーム生成部６３は、読出データｎ３＿Ｓｔをセレクタ６３ａの“１”入力に（部分）出力する。セレクタ６３ａは、ストリームキー生成時において、読出データｎ３＿ＳｔをストリームキーＺＯＵＴ３［７：０］として出力する。
【００７３】
なお、セレクタ６０ａ〜６３ａはストリームキー生成時以外の時は“０”入力に得られる８ビットのｈ００（１６進表記）をそれぞれ出力する。セレクタ６０ａ〜６３ａの選択内容は制御信号State（==ENC）により制御される。
【００７４】
そして、各々が８ビットのストリームキーＺＯＵＴ０［７：０］〜ＺＯＵＴ３［７：０］の組合せが３２ビットのストリームキーＳＫ０となる。
【００７５】
以下、適宜、図４及び図５を参照しつつ、ＲＣ４形式によるストリームキーＳＫ０の生成処理を説明する。
【００７６】
（キーストリーム記憶部４０初期化）
キーストリーム記憶部４０のアドレス０〜２５５に対応してアドレスと同じ値をキー情報として格納する。
【００７７】
（キーストリーム記憶部４０の再初期化）
その後、以下のステップＳＴ１〜ＳＴ２１を実行してキーストリーム記憶部４０に対し再初期化を行う。なお、キー変数ｋｉｉ[31:0]は、８ビットのキー変数ｎ０＿Ｋｉｉ，ｎ１＿Ｋｉｉ，ｎ２＿Ｋｉｉ，及びｎ３＿Ｋｉｉとしてキー変数生成部３３から供給される。
【００７８】
ＳＴ０：ｉ＝０，ｊ＝０，ｉｉ＝０に初期設定、
ＳＴ１：キーストリーム記憶部４０に対し、変数ｉに基づくカウント値ｔｒ＿ｃｎｔ＿ｉに対応するアドレスの読出データｎ０＿Ｓｉの読み出し、
ＳＴ２：キーストリーム記憶部４０に対し、変数ｊに基づくアドレス値ｎ０＿ｊに対応するアドレスの読出データｎ０＿Ｓｊの読み出し、
ＳＴ３：次段のキーストリーム記憶部４１に対し、アドレス値ｎ０＿ｊの格納部に読出データｎ０＿Ｓｉを書き込み、
ＳＴ４：次段のキーストリーム記憶部４１に対し、アドレス値ｎ０＿ｉの格納部に読出データｎ０＿Ｓｊを書き込み、
ＳＴ５：ステップＳＴ３，ＳＴ４の書き込みを除き、キーストリーム記憶部４０の内容をキーストリーム記憶部４１にそのまま転送する。
【００７９】
ＳＴ６：キーストリーム記憶部４１に対し、変数ｉ＋１に基づくカウント値ｔｒ＿ｃｎｔ＿ｉ＋１に対応するアドレスの読出データｎ１＿Ｓｉの読み出し、
ＳＴ７：キーストリーム記憶部４１に対し、変数ｊに基づくアドレス値ｎ１＿ｊに対応するアドレスの読出データｎ１＿Ｓｊの読み出し、
ＳＴ８：次段のキーストリーム記憶部４２に対し、アドレス値ｎ１＿ｊの格納部に読出データｎ１＿Ｓｉを書き込み、
ＳＴ９：次段のキーストリーム記憶部４２に対し、アドレス値ｎ１＿ｉの格納部に読出データｎ１＿Ｓｊを書き込み、
ＳＴ１０：ステップＳＴ８，ＳＴ９の書き込みを除き、キーストリーム記憶部４１の内容をキーストリーム記憶部４２にそのまま転送する。
【００８０】
ＳＴ１１：キーストリーム記憶部４２に対し、変数ｉ＋２に基づくカウント値ｔｒ＿ｃｎｔ＿ｉ＋２に対応するアドレスの読出データｎ２＿Ｓｉの読み出し、
ＳＴ１２：キーストリーム記憶部４２に対し、変数ｊに基づくアドレス値ｎ２＿ｊに対応するアドレスの読出データｎ２＿Ｓｊの読み出し、
ＳＴ１３：次段のキーストリーム記憶部４３に対し、アドレス値ｎ２＿ｊの格納部に読出データｎ２＿Ｓｉを書き込み、
ＳＴ１４：次段のキーストリーム記憶部４３に対し、アドレス値ｎ２＿ｉの格納部に読出データｎ２＿Ｓｊを書き込み、
ＳＴ１５：ステップＳＴ１３，ＳＴ１４の書き込みを除き、キーストリーム記憶部４２の内容をキーストリーム記憶部４３にそのまま転送する。
【００８１】
ＳＴ１６：キーストリーム記憶部４３に対し、変数ｉ＋３に基づくカウント値ｔｒ＿ｃｎｔ＿ｉ＋３に対応するアドレスの読出データｎ３＿Ｓｉの読み出し、
ＳＴ１７：キーストリーム記憶部４３に対し、変数ｊに基づくアドレス値ｎ３＿ｊに対応するアドレスの読出データｎ３＿Ｓｊの読み出し、
ＳＴ１８：初段（次段）のキーストリーム記憶部４０（４４）に対し、アドレス値ｎ３＿ｊの格納部に読出データｎ３＿Ｓｉを書き込み、
ＳＴ１９：初段のキーストリーム記憶部４０のアドレス値ｎ３＿ｉの格納部に読出データｎ２＿Ｓｊを書き込み、
ＳＴ２０：ステップＳＴ１８，ＳＴ１９の書き込みを除き、キーストリーム記憶部４３の内容をキーストリーム記憶部４０にそのまま転送する。
【００８２】
ＳＴ２１：ｊ＝ｎ３＿ｊ，ｉ＝ｉ＋４，ｉｉ＝ｉｉ＋１として、ステップＳＴ１に戻る。
【００８３】
ステップＳＴ１，ＳＴ２，ＳＴ６，ＳＴ７，ＳＴ１１，ＳＴ１２，ＳＴ１６及びＳＴ１７の処理は、キーストリーム記憶部４０〜４３から置換処理部５０〜５３への読出データｎ０＿Ｓｉ〜ｎ３＿Ｓｉ及び読出データｎ０＿Ｓｊ〜ｎ３＿Ｓｊの読み出しに相当し、ステップＳＴ３，ＳＴ４，ＳＴ８，ＳＴ９，ＳＴ１３，ＳＴ１４，ＳＴ１８及びＳＴ１９の処理は、置換処理部５０〜５３における、読出データｎ０＿Ｓｉ〜ｎ３＿Ｓｉ及び読出データｎ０＿Ｓｊ〜ｎ３＿Ｓｊの置換処理に相当する。
【００８４】
ステップＳＴ５，ＳＴ１０，ＳＴ１５及びＳＴ２０の処理は、図４及び図５で示されていないが、置換処理が行われるキー情報以外は、キーストリーム記憶部４０〜４３間で同一アドレスに同一のキー情報が転送される。ステップＳＴ２１の処理は、カウント値生成部３１及びカウント値生成部３２における次サイクルのカウント値ｎｘｔ＿ｃｎｔ＿ｉ及びｎｘｔ＿ｃｎｔ＿ｊの設定に相当する。
【００８５】
上記ステップＳＴ１〜ＳＴ２１を６４サイクル繰り返すことにより、キーストリーム記憶部４０の再初期化は終了する。
【００８６】
（ストリームキーの生成処理）
その後、以下のステップＳＴ３１〜ＳＴ５５を実行することによりストリームキーＳＫ０の生成処理を行う。
【００８７】
ＳＴ３０：ｉ＝０，ｊ＝０に初期設定、
ＳＴ３１：キーストリーム記憶部４０に対し、変数ｉに基づくカウント値ｔｒ＿ｃｎｔ＿ｉに対応するアドレスの読出データｎ０＿Ｓｉの読み出し、
ＳＴ３２：キーストリーム記憶部４０に対し、変数ｊに基づくアドレス値ｎ０＿ｊに対応するアドレスの読出データｎ０＿Ｓｊの読み出し、
ＳＴ３３：キーストリーム記憶部４０に対し、変数ｔに基づくアドレス値ｎ０＿ｔに対応するアドレスの読出データｎ０＿Ｓｔを読み出し、ストリームキーＺＯＵＴ０［７：０］として出力する。
【００８８】
ＳＴ３４：次段のキーストリーム記憶部４１に対し、アドレス値ｎ０＿ｊの格納部に読出データｎ０＿Ｓｉを書き込み、
ＳＴ３５：次段のキーストリーム記憶部４１に対し、アドレス値ｎ０＿ｉの格納部に読出データｎ０＿Ｓｊを書き込み、
ＳＴ３６：ステップＳＴ３４，ＳＴ３５の書き込みを除き、キーストリーム記憶部４０の内容をキーストリーム記憶部４１にそのまま転送する。
【００８９】
ＳＴ３７：キーストリーム記憶部４１に対し、変数ｉ＋１に基づくカウント値ｔｒ＿ｃｎｔ＿ｉ＋１に対応するアドレスの読出データｎ１＿Ｓｉの読み出し、
ＳＴ３８：キーストリーム記憶部４１に対し、変数ｊに基づくアドレス値ｎ１＿ｊに対応するアドレスの読出データｎ１＿Ｓｊの読み出し、
ＳＴ３９：キーストリーム記憶部４１に対し、変数ｔに基づくアドレス値ｎ１＿ｔに対応するアドレスの読出データｎ１＿Ｓｔを読み出し、ストリームキーＺＯＵＴ１［７：０］として出力する。
【００９０】
ＳＴ４０：次段のキーストリーム記憶部４２に対し、アドレス値ｎ１＿ｊの格納部に読出データｎ１＿Ｓｉを書き込み、
ＳＴ４１：次段のキーストリーム記憶部４２に対し、アドレス値ｎ１＿ｉの格納部に読出データｎ１＿Ｓｊを書き込み、
ＳＴ４２：ステップＳＴ４０，ＳＴ４１の書き込みを除き、キーストリーム記憶部４１の内容をキーストリーム記憶部４２にそのまま転送する。
【００９１】
ＳＴ４３：キーストリーム記憶部４２に対し、変数ｉ＋２に基づくカウント値ｔｒ＿ｃｎｔ＿ｉ＋２に対応するアドレスの読出データｎ２＿Ｓｉの読み出し、
ＳＴ４４：キーストリーム記憶部４２に対し、変数ｊに基づくアドレス値ｎ２＿ｊに対応するアドレスの読出データｎ２＿Ｓｊの読み出し、
ＳＴ４５：キーストリーム記憶部４２に対し、変数ｔに基づくアドレス値ｎ２＿ｔに対応するアドレスの読出データｎ２＿Ｓｔを読み出し、ストリームキーＺＯＵＴ２［７：０］として出力する。
【００９２】
ＳＴ４６：次段のキーストリーム記憶部４３に対し、アドレス値ｎ２＿ｊの格納部に読出データｎ２＿Ｓｉを書き込み、
ＳＴ４７：次段のキーストリーム記憶部４３に対し、アドレス値ｎ２＿ｉの格納部に読出データｎ２＿Ｓｊを書き込み、
ＳＴ４８：ステップＳＴ４６，ＳＴ４７の書き込みを除き、キーストリーム記憶部４２の内容をキーストリーム記憶部４３にそのまま転送する。
【００９３】
ＳＴ４９：キーストリーム記憶部４３に対し、変数ｉ＋３に基づくカウント値ｔｒ＿ｃｎｔ＿ｉ＋３に対応するアドレスの読出データｎ３＿Ｓｉの読み出し、
ＳＴ５０：キーストリーム記憶部４３に対し、変数ｊに基づくアドレス値ｎ３＿ｊに対応するアドレスの読出データｎ３＿Ｓｊの読み出し、
ＳＴ５１：キーストリーム記憶部４３に対し、変数ｔに基づくアドレス値ｎ３＿ｔに対応するアドレスの読出データｎ３＿Ｓｔを読み出し、ストリームキーＺＯＵＴ３［７：０］として出力する。
【００９４】
ＳＴ５２：初段（次段）のキーストリーム記憶部４０（４４）に対しアドレス値ｎ３＿ｊの格納部に読出データｎ３＿Ｓｉを書き込み、
ＳＴ５３：初段のキーストリーム記憶部４０に対しアドレス値ｎ３＿ｉの格納部に読出データｎ２＿Ｓｊを書き込み、
ＳＴ５４：ステップＳＴ５２，ＳＴ５３の書き込みを除き、キーストリーム記憶部４３の内容をキーストリーム記憶部４０にそのまま転送する。
【００９５】
ＳＴ５５：ｊ＝ｎ３＿ｊ，ｉ＝ｉ＋４として、ステップＳＴ３１に戻る。
【００９６】
ステップＳＴ３１，ＳＴ３２，ＳＴ３７，ＳＴ３８，ＳＴ４３，ＳＴ４４，ＳＴ４９及びＳＴ５０の処理は、キーストリーム記憶部７４から置換処理部５０〜５３への読出データｎ０＿Ｓｉ〜ｎ３＿Ｓｉ及び読出データｎ０＿Ｓｊ〜ｎ３＿Ｓｊの読み出しに相当する。ステップＳＴ３３，ＳＴ３９，ＳＴ４５，及びＳＴ５１の処理は、キーストリーム生成部６０〜６３からの読出データｎ０＿Ｓｔの読み出し、及びキーストリーム生成部６０〜６３のセレクタ６０ａ〜６３ａからのストリームキーＺＯＵＴ０［７：０］〜ＺＯＵＴ３［７：０］の出力に相当する。
【００９７】
ステップＳＴ３４，ＳＴ３５，ＳＴ４０，ＳＴ４１，ＳＴ４６，ＳＴ４７及びＳＴ５２及びＳＴ５３の処理は、置換処理部５０〜５３によるキーストリーム記憶部４０〜４３間における読出データｎ０＿Ｓｉ〜ｎ３＿Ｓｉ及び読出データｎ０＿Ｓｊ〜ｎ３＿Ｓｊの置換処理に相当する。
【００９８】
ステップＳＴ３６，ＳＴ４２，ＳＴ４８，及びＳＴ５４の処理は、図４及び図５で示されていないが、置換処理が行われるキー情報以外は、キーストリーム記憶部４０〜４３間で同一アドレスに同一のキー情報が転送される。
【００９９】
ステップＳＴ５５の処理は、カウント値生成部３１及びカウント値生成部３２における次サイクルのカウント値ｎｘｔ＿ｃｎｔ＿ｉ及びｎｘｔ＿ｃｎｔ＿ｊの設定に相当する。
【０１００】
ステップＳＴ３１〜ＳＴ５４の処理はクロックＣＬＫの周期ＴＣ内に一括して行われる。したがって、ストリームキーＺＯＵＴ０［７：０］〜ＺＯＵＴ３［７：０］からなるストリームキーＳＫ０を、周期ＴＣのクロックＣＬＫに同期して得ることができる。
【０１０１】
（具体的回路構成（その１））
図６は図４及び図５で示した本実施の形態のストリーム暗号処理部１０における処理機能を具体的に実現する第１の回路構成例を示す回路図である。
【０１０２】
なお、説明を容易にするため、キーストリーム記憶部４０〜４３はそれぞれ２ビットのキー情報を２ビットのアドレスに対応させて保持しており、２ビットのストリームキーＺＯＵＴ０〜ＺＯＵＴ３を出力する構成とし、暗号化対象となる入力データＤＩは８ビットであるとする。なお、２ビット情報は“０”〜“３”として１０進数で適宜表記する。アドレスは左から順にアドレス“０”〜“３”が割り振られている。
【０１０３】
キーストリーム記憶部４０にはアドレス“０”〜“３”にキー情報“０”〜“３”が格納されているとして説明する。
【０１０４】
同図に示すように、置換処理部５０〜５３は置換制御部５０ａ〜５３ａ及び置換実行部５０ｂ〜５３ｂから構成されており、図中台形で示す部分はセレクタＳＣ１〜ＳＣ４である。丸内の数字は論理演算後のキー情報の値を示している。セレクタＳＣ１及びＳＣ２は置換制御部５０ａ〜５３ａそれぞれ内に設けられ、セレクタＳＣ３はキーストリーム生成部６０〜６３それぞれ内に設けられ、セレクタＳＣ４は置換実行部５０ｂ〜５３ｂにそれぞれ内に設けられる。
【０１０５】
置換制御部５０ａ〜５３ａにおいて、セレクタＳＣ１はアドレス値ｎ０＿ｉ〜ｎ３＿ｉに基づき読出データｎ０＿Ｓｉ〜読出ｎ３＿Ｓｉを選択し、セレクタＳＣ２はアドレス値ｎ０＿ｊ〜ｎ３＿ｊに基づき読出データｎ０＿Ｓｊ〜ｎ３＿Ｓｊを選択する。
【０１０６】
キーストリーム生成部６０〜６３において、セレクタＳＣ３はアドレス値ｎ０＿ｔ〜ｎ３＿ｔに基づき読出データｎ０＿Ｓｔ〜読出ｎ３＿Ｓｔを選択し、ストリームキーＺＯＵＴ０〜ＺＯＵＴ３として出力する。
【０１０７】
置換実行部５０ｂ〜５３ｂにおいて、セレクタＳＣ４は読出データｎ０＿Ｓｉ〜読出ｎ３＿Ｓｉ及び読出データｎ０＿Ｓｊ〜ｎ３＿Ｓｊに基づく置換処理を含むキー情報の転送処理を実行する。
【０１０８】
以下、上述したステップＳＴ３０〜ＳＴ５５のストリームキー生成処理に沿って図６で示した回路の動作内容を説明する。なお、説明の都合上、置換実行部５０ｂのセレクタＳＣ４の出力部にキーストリーム記憶部４１が存在し、置換実行部５１ｂのセレクタＳＣ４の出力部にキーストリーム記憶部４２が存在し、置換実行部５２ｂのセレクタＳＣ４の出力部にキーストリーム記憶部４３が存在し、置換実行部５３ｂのセレクタＳＣ４の出力部にキーストリーム記憶部４０（４４）が存在すると仮定する。
【０１０９】
ステップＳＴ３０において、ｉ＝０，ｊ＝１に初期設定されている。説明の都合上、図６で示す第１の回路例では、ｊ＝１に初期設定している。
【０１１０】
ステップＳＴ３１において、置換制御部５０ａのセレクタＳＣ１によって、キーストリーム記憶部４０に対し、変数ｉに基づくアドレス値ｎ０＿ｉ（＝“０”）に対応するアドレスの読出データｎ０＿Ｓｉ（＝“０”）の読み出しが行われる。
【０１１１】
ステップＳＴ３２において、置換制御部５０ａのセレクタＳＣ２によって、キーストリーム記憶部４０に対し、変数ｊに基づくアドレス値ｎ０＿ｊ（＝“１”）に対応するアドレスの読出データｎ０＿Ｓｊ（＝“１”）の読み出しが行われる。
【０１１２】
ステップＳＴ３３において、キーストリーム生成部６０のセレクタＳＣ３によって、キーストリーム記憶部４０に対し、変数ｔに基づくアドレス値ｎ０＿ｔに対応するアドレスの読出データｎ０＿Ｓｔ（“１”）を読み出し、ストリームキーＺＯＵＴ０として出力される。
【０１１３】
ステップＳＴ３４において、置換実行部５０ｂのセレクタＳＣ４によって、次段のキーストリーム記憶部４１（置換制御部５０ｂ内の丸印に相当）におけるアドレス値ｎ０＿ｊ（“１”）の格納部分に読出データｎ０＿Ｓｉ（“０”）が出力される。
【０１１４】
ステップＳＴ３４と同時に実行されるステップＳＴ３５において、置換実行部５０ｂのセレクタＳＣ４によって、次段のキーストリーム記憶部４１におけるアドレス値ｎ０＿ｉ（“０”）の格納部分に読出データｎ０＿Ｓｊ（“１”）が出力される。
【０１１５】
ステップＳＴ３４，ＳＴ３５と同時に実行されるステップＳＴ３６において、ＳＴ３４及びステップＳＴ３５で置換された以外のアドレス“２”，“３”はそのままキーストリーム記憶部４１に転送される。
【０１１６】
以下、同様にして、置換制御部５１ａ〜５３ａのセレクタＳＣ１及びＳＣ２，キーストリーム生成部６１〜６３のセレクタＳＣ３、置換実行部５１ｂ〜５３ｂ内のセレクタＳＣ４によって、ステップＳＴ３６〜ＳＴ５４が実行されることにより、“１”のストリームキーＺＯＵＴ１、“０”のストリームキーＺＯＵＴ２、“２”のストリームキーＺＯＵＴ３が出力される。
【０１１７】
そして、ＳＴ５５において、カウント値生成部３１によってｊ＝ｎ３＿ｊに更新され、カウント値生成部３２によってｉ＝ｉ＋４に更新され、ステップＳＴ３１に戻る。
【０１１８】
このように、ステップＳ３０〜Ｓ５５からなる１サイクルの実行時に８ビットの構成の入力データＤＩに対応した８ビットのストリームキーＳＫ０（ＺＯＵＴ０〜ＺＯＵＴ３）が出力される。
【０１１９】
上述したように、置換処理部５０（置換制御部５０ａ及び置換実行部５０ｂ）により、少なくとも２つのキー情報をアドレスとの関係において置換する情報置換処理を実行することにより、ストリームキーＺＯＵＴ０〜ＺＯＵＴ３を出力することができる。
【０１２０】
したがって、図２で示した部分暗号回路２０は、キーストリーム記憶部４０相当の記憶部と、置換制御部５０ａ、置換実行部５０ｂ及びキーストリーム生成部６０相当のデータ選択回路を用いて実現することができる。
【０１２１】
また、部分暗号回路２１は、置換制御部５１ａ、置換実行部５１ｂ及びキーストリーム生成部６１相当のデータ選択回路を用いて実現することができる。この際、仮定したキーストリーム記憶部４１は必須ではなく、信号線として次段の部分暗号回路２２に転送することにより代用可能である。
【０１２２】
また、部分暗号回路２２及び２３についても同様に、置換制御部５２ａ，５３ａ、置換実行部５２ｂ，５３ｂ及びキーストリーム生成部６２，６３相当のデータ選択回路を用いて実現することができる。この際、仮定したキーストリーム記憶部４２及び４３は必須ではなく、信号線として次段の部分暗号回路２３及び２０に転送することにより代用可能である。
【０１２３】
このように、第１の回路構成例では、部分暗号回路２１〜２３におけるキーストリーム記憶部４１〜４３を不要にして、４個の２ビットキー情報のデータ保持動作を伴うことなく４個の２ビットキー情報の転送処理を実行させることができる。
【０１２４】
なお、図６で示した第１の回路構成例は、説明の簡略化のため、キーストリーム記憶部４０（〜４３）が２ビットキー情報を２ビットのアドレスに対応させて保持する構成を示したが、第１の回路構成例を拡張して、図４で示す様な、８ビットキー情報を８ビットのアドレスに対応させて保持させるストリーム暗号処理部１０の回路を実現することができる等、キー情報及びアドレスのビット長を適宜変更することは勿論可能である。
【０１２５】
なお、カウント値生成部３１及びカウント値生成部３２等に相当する変数ｉ，変数ｊｐのカウント機能やセレクタＳＣ１〜ＳＣ４の制御機能等、シーケンサ部１１の制御によって行うことができる。
【０１２６】
（具体的回路構成（その２））
図１及び図２で示した実施の形態１のストリーム暗号処理部１０における処理機能を具体的に実現する回路としてＬＦＳＲ（Linear Feedback Shift Resister)を用いることも考えられる。
【０１２７】
図７はＬＦＳＲの構成を示す回路図である。図７は図６と同様、説明を容易にするため、ＬＦＳＲ８は２ビットのキー情報を２ビットのアドレスに対応させて保持している。ＬＦＳＲ７はキー情報格納部８と加算部９とから構成される。キー情報格納部８においてアドレスは左から順にアドレス“０”〜“３”が割り振られている。加算部９はアドレス“１”のキー情報（図７の例では“０１”）とアドレス“３”のキー情報（図７の例では“１１”）とのビット単位で排他的論理和として得られる出力値（図７の例では“１０”）をアドレス“０”に書き換える。
【０１２８】
このように、ＬＦＳＲ７は、アドレス“０”（所定のアドレス）に対応するキー情報をアドレス“０”と異なる２つのアドレス“１”，“３”のキー情報に基づく演算結果に改める情報作成処理を行う回路であり、ＲＣ４方式の置換型に対して、巡回型の回路と呼ばれる。
【０１２９】
図８は図７で示したＬＦＳＲ７を用いて実現した実施の形態１のストリーム暗号処理部１０を実現する第２の回路構成例を示す回路図である。
【０１３０】
なお、図７で示したＬＦＳＲ７に相当するＬＦＳＲ７００〜７０３はキー情報格納部８０〜８３及び加算部９０〜９３から構成されており、キー情報格納部８０〜８３はそれぞれ２ビットのキー情報を２ビットのアドレスに対応させて保持しており、アドレス“３”のキー情報を２ビットのストリームキーＺＯＵＴ０〜ＺＯＵＴ３として出力する構成とし、暗号化対象となる入力データＤＩは８ビットであるとする。アドレスは左から順にアドレス“０”〜“３”が割り振られている。
【０１３１】
キー情報格納部８０にはアドレス“０”〜“３”にキー情報“００”〜“１１”（２進数表記）が格納されているとして説明する。
【０１３２】
同図に示すように、キー情報格納部８０のアドレス“１”，“３”のキー情報の加算部９０による加算結果が、次段のキー情報格納部８１のアドレス“０”のキー情報として書き込まれ、キー情報格納部８１のアドレス“１”，“３”のキー情報の加算部９１による加算結果が、次段のキー情報格納部８２のアドレス“０”のキー情報として書き込まれる。
【０１３３】
この際、キー情報格納部８０のアドレス“０”〜“２”のキー情報がキー情報格納部８１のアドレス“１”〜“３”のキー情報として書き込まれ、キー情報格納部８１のアドレス“０”〜“２”のキー情報がキー情報格納部８２のアドレス“１”〜“３”のキー情報として書き込まれる。
【０１３４】
同様にして、キー情報格納部８２のアドレス“１”，“３”のキー情報の加算部９２による加算結果が、次段のキー情報格納部８３のアドレス“０”のキー情報として書き込まれ、キー情報格納部８３のアドレス“１”，“３”のキー情報の加算部９３による加算結果が、初段（次段）のキー情報格納部８０（８４）のアドレス“０”のキー情報として書き込まれる。
【０１３５】
この際、キー情報格納部８２のアドレス“０”〜“２”のキー情報がキー情報格納部８３のアドレス“１”〜“３”のキー情報として書き込まれ、キー情報格納部８３のアドレス“０”〜“２”のキー情報がキー情報格納部８０（８４）のアドレス“１”〜“３”のキー情報として書き込まれる。
【０１３６】
そして、キー情報格納部８０〜８３のアドレス“３”に格納されたキー情報がストリームキーＺＯＵＴ０〜ＺＯＵＴ３として出力される。
【０１３７】
このように、ＬＦＳＲ７００〜７０３を部分暗号回路２０〜２３として用いても、本実施の形態のストリーム暗号処理部１０を構成することができる。
【０１３８】
すなわち、ＬＦＳＲ７００〜７０３により、所定のアドレス（アドレス“０”）に対応するキー情報を所定のアドレスと異なる少なくとも２つのアドレス（アドレス“１”，“３”）のキー情報に基づく演算結果（排他的論理和）に改める情報作成処理によって、ストリーム暗号処理部１０を実現することができる。
【０１３９】
図８で示す第２の回路構成例では、部分暗号回路２１（ＬＦＳＲ７０１）に関し、キー情報格納部８１は必須ではなく、信号線として次段の部分暗号回路２２に転送することにより代用可能であるため、加算部９１に相当する回路と信号線との組合せによって部分暗号回路２１を構成することができる。
【０１４０】
また、部分暗号回路２２及び２３（ＬＦＳＲ７０２及び７０４）についても同様に、キー情報格納部８２及び８３は必須ではないため、加算部９２及び９３に相当する回路と信号線との組合せによって部分暗号回路２２及び２３を構成することができる。
【０１４１】
このように、第２の回路構成例では、部分暗号回路２１〜２３におけるキー情報格納部８１〜８３を不要にして、４個の２ビットキー情報のデータ保持動作を伴うことなく４個の２ビットキー情報の転送処理を実行させることができる。
【０１４２】
なお、図８で示した第２の回路構成例は、説明の簡略化のため、キー情報格納部８０（〜８３）が２ビットキー情報を２ビットのアドレスに対応させて保持する構成を示したが、第２の回路構成例を拡張して、８ビットキー情報を８ビットのアドレスに対応させて保持させるストリーム暗号処理部１０の回路を実現する等、キー情報及びアドレスのビット長を適宜変更することは勿論可能である。
【０１４３】
（効果等）
上述したように、実施の形態１のストリーム暗号装置１におけるストリーム暗号処理部１０は以下の特徴を有している。部分暗号回路２０（第１部分暗号回路）は複数（図２，図４の例では「２５６」，図６，図８例では「４」）の格納部を有し、上記複数の格納部に各々がＫビット（Ｋ＝８（図２，図４）、Ｋ＝２（図６，図８））の複数のキー情報が格納され、複数のキー情報はアドレスに対応付けられている。
【０１４４】
そして、第１〜第ｍ（＝４）の部分暗号回路となる部分暗号回路２０〜２３は、周期ＴＣ内において、２０〜２３，２０の順にしたがい部分暗号回路２０〜２３間で、アドレスに対する複数のＫビットキー情報の内容を順次変更するキー情報変更処理を行いながら、複数のＫビットキー情報の転送処理を実行し、複数のＫビットキー情報のうち一の情報をキーストリームキーＺＯＵＴ０〜ＺＯＵＴ３として出力する。
【０１４５】
なお、上記キー情報変更処理として、図４〜図６で示したＲＣ４形式で採用した、少なくとも２つのキー情報をアドレスとの関係において置換する情報置換処理や、図７及び図８で示したＬＦＳＲにより実現した、所定のアドレスに対応するキー情報を所定のアドレスと異なる少なくとも２つのアドレスのキー情報に基づく演算結果に改める情報作成処理が考えられる。
【０１４６】
上述した実施の形態１のストリーム暗号装置１は上記特徴を有することにより、各々がＫビットの（部分）ストリームキーＺＯＵＴ０〜ＺＯＵＴ３を併せてＮビット（図２，図４の例では「Ｎ＝３２」，図６，図８例では「Ｎ＝８」））のストリームキーＳＫ０として単位動作時間である周期ＴＣ内に出力することができる。
【０１４７】
その結果、ストリーム暗号装置１は、Ｎビットの入力データとＫビットの部分ストリームキー間のビット数の違いを調整するビット数変換回路等を設けることなく、比較的簡単な回路構成で周期ＴＣ内に入力データのビット数に合致させた暗号処理を行うことができる。
【０１４８】
この際、図１に示すように、入力データＤＩの動作クロックＣＬＫと同一クロックでストリーム暗号処理部１０を動作させることにより、入力データＤＩの生成と同期した暗号処理を行うことにより、スループットの向上を図ることができる。
【０１４９】
また、図６及び図８で示したように、初段の部分暗号回路２０以外の部分暗号回路２１〜２３においてキーストリーム記憶部４１〜４３（キー情報格納部８１〜８３）は必須ではなく、信号線の組合せにより実現可能であるため、部分暗号回路２１〜２３に関して３個のキーストリーム記憶部４１〜４３（キー情報格納部８１〜８３）を設ける必要がなくなる分、回路面積の縮小化を図ることができる。
【０１５０】
＜実施の形態２＞
図９は実施の形態２のストリーム暗号装置１におけるストリーム暗号処理部１０Ｂの構成を示すブロック図である。
【０１５１】
同図に示すように、シーケンサ部１１Ｂによる制御下で動作する選択用暗号回路部１２は、各々が８ビットのストリームキーＳＫ０〜ＳＫ７を生成可能な８段に直列に接続された部分暗号回路２０〜２７及びキーストリーム記憶部３０から構成される。選択用暗号回路部１２はパラメータ設定部１３よりパラメータ情報Ｓ１３をさらに受け、パラメータ情報Ｓ１３の指示する段数で実動作させる部分暗号回路が選択される。なお、パラメータ情報Ｓ１３は入力データＤＩのビット数Ｎに対して、「Ｎ／８」を満足する段数を指示するように設定される。なお、キーストリーム記憶部３０は部分暗号回路２７から出力される複数のキー情報を格納可能に帰還経路Ｒ２０〜Ｒ２７上に設けられる。
【０１５２】
図９で示す例では、入力データＤＩが３２ビットであり、パラメータ情報Ｓ１３が「４（＝３２／８）段」を指示した場合を示しており、ストリーム暗号処理部１０Ｂは、パラメータ情報Ｓ１３に基づき、帰還経路Ｒ２０〜Ｒ２７のうち、帰還経路Ｒ２４のみを有効にすることにより４個の部分暗号回路２４〜２７を選択し、部分暗号回路２７で保持される複数のキー情報がキーストリーム記憶部３０で格納された後、帰還経路Ｒ２４を介して部分暗号回路２４に帰還されるように接続する。
【０１５３】
そして、シーケンサ部１１Ｂはパラメータ情報Ｓ１３に基づく段数の組合せでストリームキーを生成するように、選択用暗号回路部１２を制御する。図９で示す例では、部分暗号回路２４が初段のキーストリーム記憶部とした部分暗号回路２４〜２７からなる構成で、上述したストリームキーの初期化処理及びストリームキーの生成処理が行われるように、シーケンサ部１１Ｂは選択用暗号回路部１２を制御する。この際、キーストリーム記憶部３０は初段となる部分暗号回路２４用に使用される。
【０１５４】
したがって、図９で示す例では、部分暗号回路２４〜２７から得られるストリームキーＳＫ２４〜ＳＫ２７が３２ビットのストリームキーＳＫ０として出力されることになる。
【０１５５】
このように、部分暗号回路２０〜２７から選択された部分暗号回路２４〜２７は、クロックＣＬＫの周期ＴＣである単位動作期間内において、２４，２５，２６，２７，２４の順にしたがい部分暗号回路２４〜２７間で、アドレスに対する２５６個の８ビットキー情報の内容を順次変更するキー情報変更処理（ＲＣ４方式による情報置換処理、ＬＦＳＲによる演算による情報作成処理）を行いながら、２５６個の８ビットキー情報の転送処理を実行し、２５６個の８ビットキー情報のうち一の情報をストリームキーＺＯＵＴ０〜ＺＯＵＴ３として出力することができる。
【０１５６】
そして、シーケンサ部１１Ｂ及びパラメータ設定部１３は、部分暗号回路２０〜２７のうち、Ｎ／８を満足するｍ個の部分暗号回路を選択し、第１〜第ｍの部分暗号回路として上記キー情報変更処理及び上記転送処理を実行させる暗号処理内容制御部として機能する。
【０１５７】
したがって、実施の形態２のストリーム暗号装置のストリーム暗号処理部１０Ｂは、暗号化対象の入力データＤＩのビット数Ｎに対し、８個（＝ｐ個，ｐ＞ｍ）の部分暗号回路２０〜２７のうち、Ｎ／（Ｋ＝８）を満足するｍ個の部分暗号回路を第１〜第ｍの部分暗号回路として選択することができるため、多様なビット数Ｎの入力データにビット数に合致させた暗号処理を一のストリーム暗号処理部１０Ｂで実現することができる。
【０１５８】
例えば、Ｋ＝８ビットで、ｐが８個の場合、Ｎ＝３２ビットであれば、ｍ＝４（＝Ｎ／Ｋ）の選択用部分暗号回路（部分暗号回路２４〜２７）を選択することができ、Ｎ＝４８ビットであれば、ｍ＝６の選択用部分暗号回路（部分暗号回路２２〜２７）を選択することができ。Ｎ＝１６ビットであれば、ｍ＝２の選択用部分暗号回路（部分暗号回路２６，２７）を選択することができる。このように、実施の形態２のストリーム暗号装置は、多様なビット数Ｎの入力データにビット数に合致させた暗号処理を一のストリーム暗号処理部１０Ｂを用いて実現することができる。
【０１５９】
なお、選択用の部分暗号回路２０〜２７の内部構成は、実施の形態１で示した構成と同様である（ただし、初段の部分暗号回路内に設けられるキーストリーム記憶部は省略される）。この際、初段となる部分暗号回路が接続段数によって可変となるため、部分暗号回路２０〜２７はそれぞれ初段の部分暗号回路として機能する場合、外部のキーストリーム記憶部３０を自身のキー情報格納部として使用する。また、回路規模は大きくなるが、図９で示す構成において、外部に設けるキーストリーム記憶部３０を省略し、部分暗号回路２０〜２７それぞれ内にキーストリーム記憶部（キー情報格納部）を設ける構成も考えられる。
【０１６０】
＜その他＞
上述した実施の形態において、シーケンサ部１１，１１Ｂ、パラメータ設定部１３等は、例えば、ソフトウェアに基づくＣＰＵを用いたプログラム処理によって実行可能である。
【０１６１】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略したりすることが可能である。
【符号の説明】
【０１６２】
１  ストリーム暗号装置
２  情報システム
３  加算部
１０，１０Ｂ  ストリーム暗号処理部
１１，１１Ｂ  シーケンサ部
１２  選択用暗号回路部
１３  パラメータ設定部
１５  部分暗号回路群
２０〜２７  部分暗号回路
３０  キーストリーム記憶部
【図１】
2014186180.tif 000003
【図２】
2014186180.tif 000004
【図３】
2014186180.tif 000005
【図４】
2014186180.tif 000006
【図５】
2014186180.tif 000007
【図６】
2014186180.tif 000008
【図７】
2014186180.tif 000009
【図８】
2014186180.tif 000010
【図９】
2014186180.tif 000011
【図１０】
2014186180.tif 000012