特許第6244429号(P6244429)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

特許6244429ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム
<>
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000002
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000003
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000004
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000005
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000006
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000007
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000008
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000009
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000010
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000011
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000012
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000013
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000014
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000015
  • 特許6244429-ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム 図000016
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6244429
(24)【登録日】2017年11月17日
(45)【発行日】2017年12月6日
(54)【発明の名称】ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム
(51)【国際特許分類】
   H04L 9/26 20060101AFI20171127BHJP
   G09C 1/00 20060101ALI20171127BHJP
【FI】
   H04L9/00 659
   G09C1/00 650B
【請求項の数】14
【全頁数】28
(21)【出願番号】特願2016-186682(P2016-186682)
(22)【出願日】2016年9月26日
(62)【分割の表示】特願2013-542895(P2013-542895)の分割
【原出願日】2012年10月3日
(65)【公開番号】特開2016-220256(P2016-220256A)
(43)【公開日】2016年12月22日
【審査請求日】2016年9月26日
(31)【優先権主張番号】特願2011-245613(P2011-245613)
(32)【優先日】2011年11月9日
(33)【優先権主張国】JP
(31)【優先権主張番号】特願2012-12014(P2012-12014)
(32)【優先日】2012年1月24日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100122426
【弁理士】
【氏名又は名称】加藤 清志
(72)【発明者】
【氏名】仲野 有登
(72)【発明者】
【氏名】清本 晋作
(72)【発明者】
【氏名】三宅 優
【審査官】 青木 重徳
(56)【参考文献】
【文献】 特開2011−160229(JP,A)
【文献】 特表2001−522167(JP,A)
【文献】 特開平10−320181(JP,A)
【文献】 響 崇史 ほか,ストリーム暗号KCipher‐2のハードウェア実装評価,平成23年度電気関係学会東北支部連合大会,日本,平成23年度電気関係学会東北支部連行大会実行委員会,2011年 8月25日,2C25,p.115
【文献】 大嶋 崇士 ほか,K2暗号の非線形変換処理部の効果に関する理論的考察,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2010年 5月14日,Vol.110 No.44,pp.11−15
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/26
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
初期化処理において、初期鍵を拡張した拡張鍵と初期値とを入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を入力し、鍵系列を生成する鍵系列生成手段と、
初期化処理において、初期鍵を拡張した拡張鍵と初期値とを前記鍵系列生成手段に入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を前記鍵系列生成手段に入力する入力切替手段と、
前記鍵系列生成手段が実行する非線形処理が並列に処理され、
前記鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持し、
前記生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する暗号文生成手段と、
を備えたことを特徴とするストリーム暗号の暗号化装置。
【請求項2】
初期鍵を拡張する初期鍵拡張手段と、
初期化処理において、該拡張した初期鍵と初期値とを入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を入力し、鍵系列を生成する鍵系列生成手段と、
初期化処理において、初期鍵を拡張した拡張鍵と初期値とを前記鍵系列生成手段に入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を前記鍵系列生成手段に入力する入力切替手段と、
前記鍵系列生成手段が実行する非線形処理が並列に処理され、
前記鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持し、
前記生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する暗号文生成手段と、
を備えたことを特徴とするストリーム暗号の暗号化装置。
【請求項3】
前記入力切替手段が、フリップフロップであることを特徴とする請求項1または請求項2に記載のストリーム暗号の暗号化装置。
【請求項4】
初期化処理において、初期鍵を拡張した拡張鍵と初期値とを入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を入力し、鍵系列を生成する鍵系列生成手段と、
初期化処理において、初期鍵を拡張した拡張鍵と初期値とを前記鍵系列生成手段に入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を前記鍵系列生成手段に入力する入力切替手段と、
前記鍵系列生成手段が実行する非線形処理が並列に処理され、
前記鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持し、
前記生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する平文生成手段と、
を備えたことを特徴とするストリーム暗号の復号化装置。
【請求項5】
初期鍵を拡張する初期鍵拡張手段と、
初期化処理において、該拡張した初期鍵と初期値とを入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を入力し、鍵系列を生成する鍵系列生成手段と、
初期化処理において、初期鍵を拡張した拡張鍵と初期値とを前記鍵系列生成手段に入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を前記鍵系列生成手段に入力する入力切替手段と、
前記鍵系列生成手段が実行する非線形処理が並列に処理され、
前記鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持し、
前記生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する平文生成手段と、
を備えたことを特徴とするストリーム暗号の復号化装置。
【請求項6】
前記入力切替手段が、フリップフロップであることを特徴とする請求項4または請求項5に記載のストリーム暗号の復号化装置。
【請求項7】
鍵拡張手段が、事前に初期鍵を拡張して拡張鍵を生成する第1のステップと、
初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップと、
鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップと、
暗号文生成手段が、該生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する第4のステップと、
を備えたことを特徴とするストリーム暗号の暗号化方法。
【請求項8】
鍵拡張手段が、初期鍵を拡張して拡張鍵を生成する第1のステップと、
初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップと、
鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップと、
暗号文生成手段が、該生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する第4のステップと、
を備えたことを特徴とするストリーム暗号の暗号化方法。
【請求項9】
鍵拡張手段が、事前に初期鍵を拡張して拡張鍵を生成する第1のステップと、
初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップと、
鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップと、
平文生成手段が、該生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する第4のステップと、
を備えたことを特徴とするストリーム暗号の復号化方法。
【請求項10】
鍵拡張手段が、初期鍵を拡張して拡張鍵を生成する第1のステップと、
初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップと、
鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップと、
平文生成手段が、該生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する第4のステップと、
を備えたことを特徴とするストリーム暗号の復号化方法。
【請求項11】
ストリーム暗号の暗号化方法をコンピュータに実行させるためのプログラムであって、
鍵拡張手段が、事前に初期鍵を拡張して拡張鍵を生成する第1のステップと、
初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップと、
鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップと、
暗号文生成手段が、該生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する第4のステップと、
をコンピュータに実行させるためのプログラム。
【請求項12】
ストリーム暗号の暗号化方法をコンピュータに実行させるためのプログラムであって、
鍵拡張手段が、初期鍵を拡張して拡張鍵を生成する第1のステップと、
初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップと、
鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップと、
暗号文生成手段が、該生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する第4のステップと、
をコンピュータに実行させるためのプログラム。
【請求項13】
ストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、
鍵拡張手段が、事前に初期鍵を拡張して拡張鍵を生成する第1のステップと、
初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップと、
鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップと、
平文生成手段が、該生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する第4のステップと、
をコンピュータに実行させるためのプログラム。
【請求項14】
ストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、
鍵拡張手段が、初期鍵を拡張して拡張鍵を生成する第1のステップと、
初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップと、
鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップと、
平文生成手段が、該生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する第4のステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化あるいは復号化の処理を高速に行うストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラムに関する。
【背景技術】
【0002】
情報化社会である現在ではデータの暗号化は必須であり、暗号技術はスマートカード等多くのデバイスに実装されている。暗号アルゴリズムは非常に強固になってきており、これを直接解読するとなると膨大な時間と労力を費やすことになるため、暗号化されていればデータは安全であるといえる。
【0003】
ところが、近年、暗号に対するサイドチャネル攻撃が大きな問題となっている。サイドチャネル攻撃は、暗号アルゴリズムを直接解読するのではなく、暗号化または復号処理中にデバイスから生じる電圧波形や電磁波等の2次的な情報を攻撃者が入手し、それらを解析することで秘密鍵を復元する攻撃である。この攻撃は安全とされている暗号化アルゴリズムであっても、適切に実装されていない場合には攻撃可能であり、さらに痕跡が残らないこともあり大きな問題となっている。
【0004】
サイドチャネル攻撃の1つである差分電力解析(Differential Power Analysis)は、攻撃者はまず、多数の入力データに対する電圧波形を取得する。次に、秘密鍵の値を推定し、同時に選択関数を定める。定めた選択関数を用いて取得した電圧波形を分類し、それぞれのグループの波形の和を取る。推測した秘密鍵の値が正しければ波形にピークが表れるため、正しい秘密鍵であるか否かの判別ができ、秘密鍵を復元することができる(例えば、非特許文献1参照。)。
【0005】
このようなサイドチャネル攻撃を防ぐために、乱数で暗号化または復号処理中の値をマスクすることによって、暗号化または復号処理中の値と秘密鍵との相関を失くす方法が有効である。そこで、暗号アルゴリズムとは別に乱数生成のための回路を備え、備えられた回路により生成された乱数を用いてマスクを行うのが一般的である。
【0006】
近年、コンピュータを利用した様々なサービスが提供されている。多くのサービスにおいては、通信の秘匿を実現するため、暗号が利用される。また、昨今、デジタルデータの量が急激に増えており、同時にネットワークを通じて送受信されるデータ量も急激に増えている。そのため、これらのデータの中には個人情報や企業の機密情報なども含まれており、暗号化して安全に送受信する必要がある。ここで、暗号方式として最も一般的なものは、1つの鍵で暗号化・復号化を行う共通鍵暗号方式であるが、共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式の2つに分けられる。
【0007】
前者は、最も一般的に用いられている方式であるが、後者の方が処理速度に優れるため、近年注目を集めつつある。ここで、ストリーム暗号は、内部状態を更新しながら暗号化を行う、ステートフルな方式である(例えば、非特許文献2参照。)。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】H.Henricksen et al.,“Side−Channel Analysis of the K2 Stream Cipher”,ACISP2010,2010.
【非特許文献2】Kiyomoto,Tanaka,Sakurai,“K2:A Stream Cipher Algorithm Using Dynamic Feedback Control,” SECRYPT2007,2007.
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、この方式では別途回路が必要となるため、回路規模が増加し、ICカード等のデバイスでは実装できないといった問題があった。また、乱数生成処理は比較的重い処理であるため、処理速度や消費電力等への悪影響があるという問題点もあった。
【0010】
また、暗号化するデータサイズが大きくなるに連れて暗号化および復号化にかかる時間も長くなるという問題があり、高速な暗号実装が必要となる。
【0011】
そこで、本発明は、暗号化あるいは復号化の処理を高速に行うストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
(1)本発明は、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を入力し、鍵系列を生成する鍵系列生成手段(例えば、図7の非線形処理部1300に相当)と、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを前記鍵系列生成手段に入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を前記鍵系列生成手段に入力する入力切替手段(例えば、図7のフリップフロップ1200に相当)と、前記鍵系列生成手段が実行する非線形処理が並列に処理され、前記鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持し、前記生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する暗号文生成手段(例えば、図7の排他的論理和演算器1400に相当)と、を備えたことを特徴とするストリーム暗号の暗号化装置を提案している。
【0013】
この発明によれば、鍵系列生成手段は、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを入力し、初期化処理終了後においては、非線形部からのフィードバック値を入力し、鍵系列を生成する。入力切替手段は、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力する。暗号文生成手段は、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持し、生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する。つまり、入力切替手段が、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力するため、データの遅延量が、増大することを防止できるため、暗号化にかかる時間を短くすることができる。また、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持するため、多くの処理が多重化でき、さらに、非線形関数は、テーブルを1回だけ参照すれば、処理を行うことができるため、暗号化にかかる時間を短くすることができる。
【0014】
(2)本発明は、初期鍵を拡張する初期鍵拡張手段(例えば、図7の鍵拡張部1100に相当)と、初期化処理において、該拡張した初期鍵と初期値とを入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を入力し、鍵系列を生成する鍵系列生成手段(例えば、図7の非線形処理部1300に相当)と、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを前記鍵系列生成手段に入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を前記鍵系列生成手段に入力する入力切替手段(例えば、図7のフリップフロップ1200に相当)と、前記鍵系列生成手段が実行する非線形処理が並列に処理され、前記鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持し、前記生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する暗号文生成手段(例えば、図7の排他的論理和演算器1400に相当)と、を備えたことを特徴とするストリーム暗号の暗号化装置を提案している。
【0015】
この発明によれば、初期鍵拡張手段は、初期鍵を拡張する。初期化処理において、初期鍵を拡張した拡張鍵と初期値とを入力し、初期化処理終了後においては、非線形部からのフィードバック値を入力し、鍵系列を生成する。入力切替手段は、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力する。暗号文生成手段は、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持し、生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する。つまり、入力切替手段が、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力するため、データの遅延量が、増大することを防止できるため、暗号化にかかる時間を短くすることができる。また、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持するため、多くの処理が多重化でき、さらに、非線形関数は、テーブルを1回だけ参照すれば、処理を行うことができるため、暗号化にかかる時間を短くすることができる。
【0016】
(3)本発明は、(1)または(2)のストリーム暗号の暗号化装置について、前記入力切替手段が、フリップフロップであることを特徴とするストリーム暗号の暗号化装置を提案している。
【0017】
この発明によれば、入力切替手段が、フリップフロップである。したがって、「0」あるいは「1」を入力することにより、簡単に鍵系列生成手段への入力を切り替えることができる。
【0018】
(4)本発明は、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を入力し、鍵系列を生成する鍵系列生成手段(例えば、図12の非線形処理部1300に相当)と、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを前記鍵系列生成手段に入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を前記鍵系列生成手段に入力する入力切替手段(例えば、図12のフリップフロップ1200に相当)と、前記鍵系列生成手段が実行する非線形処理が並列に処理され、前記鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持し、前記生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する平文生成手段(例えば、図12の排他的論理和演算器1400に相当)と、を備えたことを特徴とするストリーム暗号の復号化装置を提案している。
【0019】
この発明によれば、鍵系列生成手段は、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを入力し、初期化処理終了後においては、非線形部からのフィードバック値を入力し、鍵系列を生成する。入力切替手段は、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力する。暗号文生成手段は、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持し、生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する。つまり、入力切替手段が、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力するため、データの遅延量が、増大することを防止できるため、暗号化にかかる時間を短くすることができる。また、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持するため、多くの処理が多重化でき、さらに、非線形関数は、テーブルを1回だけ参照すれば、処理を行うことができるため、暗号化にかかる時間を短くすることができる。
【0020】
(5)本発明は、初期鍵を拡張する初期鍵拡張手段(例えば、図12の鍵拡張部1100に相当)と、初期化処理において、該拡張した初期鍵と初期値とを入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を入力し、鍵系列を生成する鍵系列生成手段(例えば、図12の非線形処理部1300に相当)と、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを前記鍵系列生成手段に入力し、前記初期化処理終了後においては、非線形部からのフィードバック値を前記鍵系列生成手段に入力する入力切替手段(例えば、図12のフリップフロップ1200に相当)と、前記鍵系列生成手段が実行する非線形処理が並列に処理され、前記鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持し、前記生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する平文生成手段(例えば、図12の排他的論理和演算器1400に相当)と、を備えたことを特徴とするストリーム暗号の復号化装置を提案している。
【0021】
この発明によれば、初期鍵拡張手段は、初期鍵を拡張する。初期化処理において、初期鍵を拡張した拡張鍵と初期値とを入力し、初期化処理終了後においては、非線形部からのフィードバック値を入力し、鍵系列を生成する。入力切替手段は、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力する。暗号文生成手段は、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持し、生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する。つまり、入力切替手段が、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力するため、データの遅延量が、増大することを防止できるため、暗号化にかかる時間を短くすることができる。また、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持するため、多くの処理が多重化でき、さらに、非線形関数は、テーブルを1回だけ参照すれば、処理を行うことができるため、暗号化にかかる時間を短くすることができる。
【0022】
(6)本発明は、(4)または(5)のストリーム暗号の復号化装置について、前記入力切替手段が、フリップフロップであることを特徴とするストリーム暗号の復号化装置を提案している。
【0023】
この発明によれば、入力切替手段が、フリップフロップである。したがって、「0」あるいは「1」を入力することにより、簡単に鍵系列生成手段への入力を切り替えることができる。
【0024】
(7)本発明は、鍵拡張手段が、事前に初期鍵を拡張して拡張鍵を生成する第1のステップ(例えば、図11のステップS1101に相当)と、初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップ(例えば、図11のステップS1102に相当)と、鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップ(例えば、図11のステップS1103に相当)と、暗号文生成手段が、該生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する第4のステップ(例えば、図11のステップS1104に相当)と、を備えたことを特徴とするストリーム暗号の暗号化方法を提案している。
【0025】
この発明によれば、鍵拡張手段が、事前に初期鍵を拡張して拡張鍵を生成し、初期化処理手段が、初期化処理において、生成した拡張鍵と初期値とを入力し、初期化処理を行う。そして、鍵系列生成手段が、初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成し、暗号文生成手段が、生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する。つまり、入力切替手段が、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力するため、データの遅延量が、増大することを防止できるため、暗号化にかかる時間を短くすることができる。また、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持するため、多くの処理が多重化でき、さらに、非線形関数は、テーブルを1回だけ参照すれば、処理を行うことができるため、暗号化にかかる時間を短くすることができる。
【0026】
(8)本発明は、鍵拡張手段が、初期鍵を拡張して拡張鍵を生成する第1のステップと、初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップと、鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップと、暗号文生成手段が、該生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する第4のステップと、を備えたことを特徴とするストリーム暗号の暗号化方法を提案している。
【0027】
この発明によれば、鍵拡張手段が、初期鍵を拡張して拡張鍵を生成し、初期化処理手段が、初期化処理において、生成した拡張鍵と初期値とを入力し、初期化処理を行う。そして、鍵系列生成手段が、初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成し、暗号文生成手段が、生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する。つまり、入力切替手段が、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力するため、データの遅延量が、増大することを防止できるため、暗号化にかかる時間を短くすることができる。また、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持するため、多くの処理が多重化でき、さらに、非線形関数は、テーブルを1回だけ参照すれば、処理を行うことができるため、暗号化にかかる時間を短くすることができる。
【0028】
(9)本発明は、鍵拡張手段が、事前に初期鍵を拡張して拡張鍵を生成する第1のステップ(例えば、図15のステップS1201に相当)と、初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップ(例えば、図15のステップS1202に相当)と、鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップ(例えば、図15のステップS1203に相当)と、平文生成手段が、該生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する第4のステップ(例えば、図15のステップS1204に相当)と、を備えたことを特徴とするストリーム暗号の復号化方法を提案している。
【0029】
この発明によれば、鍵拡張手段が、事前に初期鍵を拡張して拡張鍵を生成し、初期化処理手段が、初期化処理において、生成した拡張鍵と初期値とを入力し、初期化処理を行う。そして、鍵系列生成手段が、初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成し、暗号文生成手段が、生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する。つまり、入力切替手段が、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力するため、データの遅延量が、増大することを防止できるため、暗号化にかかる時間を短くすることができる。また、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持するため、多くの処理が多重化でき、さらに、非線形関数は、テーブルを1回だけ参照すれば、処理を行うことができるため、暗号化にかかる時間を短くすることができる。
【0030】
(10)本発明は、鍵拡張手段が、初期鍵を拡張して拡張鍵を生成する第1のステップと、初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップと、鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップと、平文生成手段が、該生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する第4のステップと、を備えたことを特徴とするストリーム暗号の復号化方法を提案している。
【0031】
この発明によれば、鍵拡張手段が、初期鍵を拡張して拡張鍵を生成し、初期化処理手段が、初期化処理において、生成した拡張鍵と初期値とを入力し、初期化処理を行う。そして、鍵系列生成手段が、初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成し、暗号文生成手段が、生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する。つまり、入力切替手段が、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力するため、データの遅延量が、増大することを防止できるため、暗号化にかかる時間を短くすることができる。また、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持するため、多くの処理が多重化でき、さらに、非線形関数は、テーブルを1回だけ参照すれば、処理を行うことができるため、暗号化にかかる時間を短くすることができる。
【0032】
(11)本発明は、ストリーム暗号の暗号化方法をコンピュータに実行させるためのプログラムであって、鍵拡張手段が、事前に初期鍵を拡張して拡張鍵を生成する第1のステップ(例えば、図11のステップS1101に相当)と、初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップ(例えば、図11のステップS1102に相当)と、鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップ(例えば、図11のステップS1103に相当)と、暗号文生成手段が、該生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する第4のステップ(例えば、図11のステップS1104に相当)と、をコンピュータに実行させるためのプログラムを提案している。
【0033】
この発明によれば、鍵拡張手段が、事前に初期鍵を拡張して拡張鍵を生成し、初期化処理手段が、初期化処理において、生成した拡張鍵と初期値とを入力し、初期化処理を行う。そして、鍵系列生成手段が、初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成し、暗号文生成手段が、生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する。つまり、入力切替手段が、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力するため、データの遅延量が、増大することを防止できるため、暗号化にかかる時間を短くすることができる。また、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持するため、多くの処理が多重化でき、さらに、非線形関数は、テーブルを1回だけ参照すれば、処理を行うことができるため、暗号化にかかる時間を短くすることができる。
【0034】
(12)本発明は、ストリーム暗号の暗号化方法をコンピュータに実行させるためのプログラムであって、鍵拡張手段が、初期鍵を拡張して拡張鍵を生成する第1のステップと、初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップと、鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップと、暗号文生成手段が、該生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する第4のステップと、をコンピュータに実行させるためのプログラムを提案している。
【0035】
この発明によれば、鍵拡張手段が、初期鍵を拡張して拡張鍵を生成し、初期化処理手段が、初期化処理において、生成した拡張鍵と初期値とを入力し、初期化処理を行う。そして、鍵系列生成手段が、初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成し、暗号文生成手段が、生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する。つまり、入力切替手段が、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力するため、データの遅延量が、増大することを防止できるため、暗号化にかかる時間を短くすることができる。また、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持するため、多くの処理が多重化でき、さらに、非線形関数は、テーブルを1回だけ参照すれば、処理を行うことができるため、暗号化にかかる時間を短くすることができる。
【0036】
(13)本発明は、ストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、鍵拡張手段が、事前に初期鍵を拡張して拡張鍵を生成する第1のステップ(例えば、図15のステップS1201に相当)と、初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップ(例えば、図15のステップS1202に相当)と、鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップ(例えば、図15のステップS1203に相当)と、平文生成手段が、該生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する第4のステップ(例えば、図15のステップS1204に相当)と、をコンピュータに実行させるためのプログラムを提案している。
【0037】
この発明によれば、鍵拡張手段が、事前に初期鍵を拡張して拡張鍵を生成し、初期化処理手段が、初期化処理において、生成した拡張鍵と初期値とを入力し、初期化処理を行う。そして、鍵系列生成手段が、初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成し、暗号文生成手段が、生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する。つまり、入力切替手段が、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力するため、データの遅延量が、増大することを防止できるため、暗号化にかかる時間を短くすることができる。また、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持するため、多くの処理が多重化でき、さらに、非線形関数は、テーブルを1回だけ参照すれば、処理を行うことができるため、暗号化にかかる時間を短くすることができる。
【0038】
(14)本発明は、ストリーム暗号の復号化方法をコンピュータに実行させるためのプログラムであって、鍵拡張手段が、初期鍵を拡張して拡張鍵を生成する第1のステップと、初期化処理手段が、初期化処理において、該生成した拡張鍵と初期値とを入力し、初期化処理を行う第2のステップと、鍵系列生成手段が、前記初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成する第3のステップと、平文生成手段が、該生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する第4のステップと、をコンピュータに実行させるためのプログラムを提案している。
【0039】
この発明によれば、鍵拡張手段が、初期鍵を拡張して拡張鍵を生成し、初期化処理手段が、初期化処理において、生成した拡張鍵と初期値とを入力し、初期化処理を行う。そして、鍵系列生成手段が、初期化処理終了後に、非線形部からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成し、暗号文生成手段が、生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する。つまり、入力切替手段が、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力するため、データの遅延量が、増大することを防止できるため、暗号化にかかる時間を短くすることができる。また、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持するため、多くの処理が多重化でき、さらに、非線形関数は、テーブルを1回だけ参照すれば、処理を行うことができるため、暗号化にかかる時間を短くすることができる。
【発明の効果】
【0040】
本発明によれば、入力切替手段が、初期化処理において、初期鍵を拡張した拡張鍵と初期値とを鍵系列生成手段に入力し、初期化処理終了後においては、非線形部からのフィードバック値を鍵系列生成手段に入力するため、データの遅延量が、増大することを防止できるため、暗号化にかかる時間を短くすることができるという効果がある。また、鍵系列生成手段が実行する非線形処理が並列に処理され、鍵系列生成手段内に設けられた非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持するため、多くの処理が多重化でき、さらに、非線形関数は、テーブルを1回だけ参照すれば、処理を行うことができるため、暗号化にかかる時間を短くすることができるという効果がある。
【図面の簡単な説明】
【0041】
図1】本発明の第1の実施形態に係る非線形処理器を含む擬似乱数生成器の構成を示す図である。
図2】従来の非線形処理器の構成を示す図である。
図3】本発明の第1の実施形態に係る非線形処理器の構成を示す図である。
図4】本発明の第1の実施形態に係る非線形処理器における非線形処理器内部のデータをマスクするマスク処理フローを示す図である。
図5】第1の応用例に係るストリーム暗号の暗号化装置の機能構成を示す図である。
図6】第2の応用例に係るストリーム暗号の復号装置の機能構成を示す図である。
図7】本発明の第2の実施形態に係るストリーム暗号の暗号化装置の概略構成を示す図である。
図8】本発明の第2の実施形態に係るストリーム暗号の暗号化装置の非線形処理部の概略構成を示す図である。
図9】本発明の第2の実施形態に係るストリーム暗号の暗号化装置の非線形処理部の構成を示す図である。
図10】本発明の第2の実施形態に係るストリーム暗号の暗号化装置の非線形処理部の構成を示す図である。
図11】本発明の第2の実施形態に係るストリーム暗号の暗号化装置の処理を示す図である。
図12】本発明の第3の実施形態に係るストリーム暗号の復号化装置の概略構成を示す図である。
図13】本発明の第3の実施形態に係るストリーム暗号の復号化装置の非線形処理部の構成を示す図である。
図14】本発明の第2の実施形態に係るストリーム暗号の復号化装置の非線形処理部の構成を示す図である。
図15】本発明の第2の実施形態に係るストリーム暗号の復号化装置の処理を示す図である。
【発明を実施するための形態】
【0042】
以下、図面を用いて、本発明の実施形態について詳細に説明する。なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含むさまざまなバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
<第1の実施形態>
【0043】
図1から図4を用いて、本発明の第1の実施形態について説明する。
【0044】
<擬似乱数生成器の構成>
図1は、本実施形態に係る非線形処理器300を含む擬似乱数生成器10の構成を示す図である。本実施形態において、ストリーム暗号の1つであるK2の擬似乱数生成器10および非線形処理器300を例に説明するが、他のストリーム暗号の擬似乱数生成器や非線形処理器にも本発明を適用することができる。
【0045】
擬似乱数生成器10は、秘密鍵と初期ベクトルとに基づいて、平文を暗号化または暗号文を復号するのに用いるキーストリームを生成する。図1に示すように、擬似乱数生成器10は、2個のフィードバックシフトレジスタ、FSR−A100aおよびFSR−B100bと、非線形処理器300と、クロック制御装置200と、4つの排他的論理演算器400a〜dとから構成される。
【0046】
FSR−A100aは、5段のレジスタを持ち、各レジスタをAからAt+4とする。FSR−A100aは、レジスタに格納されている値のうち必要な値を、後述するクロック制御装置200および非線形処理器300に出力する。また、FSR−A100aは、フィードバック関数により状態遷移する。具体的には、FSR−A100aは、AとAt+4に格納されている値を非線形処理器300に出力すると、1つ右隣のレジスタに値をシフトさせる。そして、FSR−A100aは、排他的論理演算器400aにより実行されたAとAt+3との排他的論理和演算の演算結果を、左端のAt+4に格納する。
【0047】
FSR−B100bは、11段のレジスタを持ち、各レジスタをBからBt+10とする。FSR−B100bは、FSR−A100aの出力をうけるクロック制御装置200によりフィードバック関数が制御される。また、FSR−B100bもFSR−A100aと同様、B、Bt+4、Bt+9、およびBt+10に格納されている値を非線形処理器300に出力すると、1つ右隣のレジスタに値をシフトさせる。そして、FSR−B100bは、排他的論理演算器400b〜dにより実行されたB、Bt+1、Bt+6およびBt+8の排他的論理和演算の演算結果を、左端のBt+10に格納する。
【0048】
クロック制御装置200は、FSR−A100aからの入力値に対して、FSR−B100bのフィードバック関数を決定する処理を行う。
【0049】
非線形処理器300は、FSR−A100aから出力されたA、At+4と、FSR−B100bから出力されたB、Bt+4、Bt+9、Bt+10とに非線形処理を施して、キーストリームを出力する。従来の非線形処理器30の構成を示す図2と、本実施形態に係る非線形処理器300の構成を示す図3とを用いて、本実施形態に係る非線形処理器30について説明する。
【0050】
<非線形処理器の構成>
まず、図2を用いて従来の非線形処理器30について説明する。従来の非線形処理器30は、図2に示すように、加算器301a、301b、301c、301dと、内部レジスタ(L1、L2、R1、R2)310、311、312、313と、Sub320a、320b、320c、320dと、排他的論理和演算器302a、302b、302c、302dとから構成されている。
【0051】
加算器301aは、FSR−B100bと内部レジスタL2と排他的論理和演算器302aに接続されており、内部レジスタL2から出力された値とFSR−B100bのBt+10から出力された値とを加算して、排他的論理和演算器302aに出力する。
【0052】
加算器301bは、FSR−B100bと内部レジスタL2とSub320bに接続されており、内部レジスタL2から出力された値とFSR−B100bのBt+9から出力された値とを加算して、Sub320bに出力する。
【0053】
加算器301cは、FSR−B100bと内部レジスタR2とSub320cに接続されており、内部レジスタR2から出力された値とFSR−B100bのBt+5から出力された値とを加算して、Sub320cに出力する。
【0054】
加算器301dは、FSR−B100bと内部レジスタR2と排他的論理和演算器302bに接続されており、内部レジスタR2から出力された値とFSR−B100bのBから出力された値とを加算して、排他的論理和演算器302cに出力する。
【0055】
内部レジスタL1は、加算器301cから出力された値をSub320cで非線形置換した値を格納する。
【0056】
内部レジスタL2は、内部レジスタL1から出力された値をSub320aで非線形置換した値を格納する。
【0057】
内部レジスタR1は、加算器301bから出力された値をSub320bで非線形置換した値を格納する。
【0058】
内部レジスタR2は、内部レジスタR1から出力された値をSub320dで非線形置換した値を格納する。
【0059】
排他的論理和演算器302aは、加算器301aから出力された値と内部レジスタL1の値との排他的論理和演算を行って、演算結果を排他的論理和演算器302bに出力する。
【0060】
排他的論理和演算器302bは、排他的論理和演算器302aの演算結果とFSR−A100aのAt+4から出力された値との排他的論理和演算を行って、演算結果をキーストリームとして出力する。
【0061】
排他的論理和演算器302cは、加算器301dから出力された値と内部レジスタR1の値との排他的論理和演算を行って、演算結果を排他的論理和演算器302dに出力する。
【0062】
排他的論理和演算器302dは、排他的論理和演算器302cの演算結果とFSR−A100aのAから出力された値との排他的論理和演算を行って、演算結果をキーストリームとして出力する。
【0063】
次に、図3を用いて、本実施形態に係る非線形処理器300について説明する。なお、図2を用いて説明した従来の非線形処理器30と同一の符号を付す構成要素については、同一の機能を有することから、その詳細な説明は省略する。
【0064】
図3に示すように、本実施形態に係る非線形処理器300は、従来の非線形処理器30の構成要素に加え、新たに、排他的論理和演算器303a、303bを備える。
【0065】
排他的論理和演算器303aは、加算器301cから出力された値をSub320cで非線形置換した値と、マスク用乱数との排他的論理和演算を行い、演算結果を内部レジスタL1に出力する。それにより、加算器301cから出力された値をSub320cで非線形置換した値、言い換えると内部レジスタL1に格納する値をマスク用乱数でマスクすることによって、内部レジスタL1に格納された値と秘密鍵との相関を失くし、サイドチャネル攻撃を防ぐことができる。
【0066】
ここで、マスク用乱数は、FSR−A100aおよびFSR−B100bに格納されている値の一部から生成される。マスク用乱数の生成に用いる値は、FSR−A100aおよびFSR−B100bのレジスタのうち、非線形処理器300がキーストリームを出力する時に更新されることによって、値の乱数性が確保されるレジスタの値を用いる。また、FSR−A100aおよびFSR−B100bのレジスタから抽出した値を加算することによりマスク用乱数を生成する。例えば、FSR−A100aのAt+1、At+2、FSR−B100bのBt+3,Bt+9を加算することにより、マスク用乱数を生成する。
【0067】
このように、FSR−A100aおよびFSR−B100bのレジスタに格納されている値から、マスク用乱数を生成することにより、別途、マスク用乱数を生成する回路が必要とならない。
【0068】
本実施形態において、内部レジスタL1は、従来の非線形処理器30の内部レジスタL1と異なり、排他的論理和演算器303aによりマスクされた値を格納する。
【0069】
排他的論理和演算器303bは、内部レジスタL1から出力された値と、マスク用乱数との排他的論理和演算を行い、演算結果をSub320aに出力する。それにより、排他的論理和演算器303aでマスクされて内部レジスタL1に格納されている値のマスクを外し、マスクを外した値、すなわち、Sub320cで非線形置換された値をSub320aに出力する。
【0070】
本実施形態においては、内部レジスタL1に格納する値をマスクしたが、他の内部レジスタL2、R1、R2についても内部レジスタL1と同様に、入力端に内部レジスタL2、R1、R2それぞれに入力される値とマスク用乱数との排他的論理演算を行う排他的論理演算器を設け、出力端に内部レジスタL2、R1、R2それぞれから出力される値とマスク用乱数との排他的論理演算を行う排他的論理演算器を設けてもよい。それにより、内部レジスタL2、R1、R2それぞれに格納する値をマスクすることができ、サイドチャネル攻撃に対するより高い安全性を確保できる。
【0071】
<非線形処理器におけるマスク処理フロー>
図4は、本実施形態に係る非線形処理器300における非線形処理器300内部のデータをマスクするマスク処理フローを示す図である。なお、本処理フローでは、内部レジスタL1の値をマスクする処理について説明するが、他の内部レジスタL2、R1、R2の値についても内部レジスタL1と同様の処理にて値をマスクすることができる。
【0072】
まず、ステップS1において、排他的論理和演算器303aは、Sub320cの出力値、すなわち、加算器301cから出力された値をSub320cで非線形置換した値と、マスク用乱数との排他的論理和演算を行い、Sub320cの出力値をマスクする。
【0073】
次に、ステップS2において、内部レジスタL1は、ステップS1でマスクされたSub320cの出力値を格納する。
【0074】
次に、ステップS3において、排他的論理和演算器303bは、ステップS2で内部レジスタL1に格納された値とマスク用乱数と排他的論理和演算を行い、ステップS1でマスクされて内部レジスタL1に格納されている値のマスクを外す。その結果、マスクを外した値、すなわち、Sub320cで非線形置換された値をSub320aが得られる。
【0075】
<第1の応用例>
本応用例に係るストリーム暗号の暗号化装置1は、図5に示すように、初期化処理部11と、非線形処理器300と、内部状態更新部12と、暗号化部13とから構成されている。なお、非線形処理器300については、上記にて説明したため、詳細な説明は省略する。
【0076】
初期化処理部11は、秘密鍵と初期ベクトルとに基づいて、ストリーム暗号の内部状態を初期化し、フィードバックシフトレジスタ(FSR−A100aおよびFSR−B100b)は初期化された内部状態を保持する。具体的には、初期化処理部11は、内蔵のキースケジュールアルゴリズムによるストリーム暗号の内部状態(擬似乱数)を決定し、決定した内部状態をフィードバックレジスタに入力した後、複数回空廻しを行うことにより、初期化された内部状態を保持する。内部状態更新部12は、非線形処理器300がキーストリーム出力時に内部状態を一方向性関数等で更新し、フィードバックシフトレジスタは更新された内部状態を保持する。暗号化部13は、非線形処理器300で生成されたキーストリームと、外部から入力された平文とを排他的論理和演算することにより、暗号文を出力する。
【0077】
したがって、本応用例のストリーム暗号化装置1は、非線形処理器300を用いて構築されたことから、暗号化処理中の値をマスクするための乱数を生成する回路を別途備えることなく、暗号を安全に実行することが可能な暗号化装置を構成することができる。また、処理速度や消費電力等への影響が少なく、ICカード等のデバイスへの実装が可能な暗号化装置を構成することができる。
【0078】
<第2の応用例>
本応用例に係るストリーム暗号の復号装置2は、図6に示すように、初期化処理部11と、非線形処理器300と、内部状態更新部12と、復号部14とから構成されている。なお、非線形処理器300については、上記にて説明したため、詳細な説明は省略する。
【0079】
初期化処理部11は、秘密鍵と初期ベクトルとに基づいて、ストリーム暗号の内部状態を初期化し、フィードバックシフトレジスタ(FSR−A100aおよびFSR−B100b)は初期化された内部状態を保持する。具体的には、初期化処理部11は、内蔵のキースケジュールアルゴリズムによるストリーム暗号の内部状態(擬似乱数)を決定し、決定した内部状態をフィードバックレジスタに入力した後、複数回空廻しを行うことにより、初期化された内部状態を保持する。内部状態更新部12は、非線形処理器300がキーストリーム出力時に内部状態を一方向性関数等で更新し、フィードバックシフトレジスタは更新された内部状態を保持する。復号部14は、非線形処理器300で生成されたキーストリームと、外部から入力された暗号文とを排他的論理和演算することにより、平文を出力する。
【0080】
したがって、本応用例のストリーム復号装置2は、非線形処理器300を用いて構築されたことから、復号処理中の値をマスクするための乱数を生成する回路を別途備えることなく、暗号を安全に実行することが可能な復号装置を構成することができる。また、処理速度や消費電力等への影響が少なく、ICカード等のデバイスへの実装が可能な復号装置を構成することができる。
【0081】
<第2の実施形態>
図7から図11を用いて、本発明の第2の実施形態について説明する。
【0082】
<ストリーム暗号の暗号化装置の概略構成>
図7および図8を用いて、本実施形態に係るストリーム暗号の暗号化装置の概略構成について説明する。
【0083】
本実施形態に係るストリーム暗号の暗号化装置は、図7に示すように、鍵拡張部1100と、フリップフロップ1200と、非線形処理部1300と、排他的論理和演算器1400とから構成されている。
【0084】
鍵拡張部1100は、初期鍵を入力して拡張鍵を生成する。フリップフロップ1200は、切替素子であり、具体的には、初期処理状態においては、鍵拡張部1100において、生成された拡張鍵を非線形処理部1300に入力するように作用し、初期処理終了後には、非線形処理部1300からのフィードバック値を非線形処理部1300内の図示しないレジスタに入力するよう作用する。
【0085】
非線形処理部1300は、図8に示すように、複数の非線形素子からなり、非線形処理を並列的に実行し、鍵系列を出力する。排他的論理和演算器1400は、非線形処理部1300から出力される鍵系列と入力される平文との排他的論理和演算を実行し、暗号文を生成する。なお、本実施形態では、鍵拡張部1100を備えた構成を説明したが、鍵拡張部1100を設けず、予め拡張鍵を用意しておいてもよい。
【0086】
<非線形処理部の構成>
図9および図10を用いて、本実施形態に係るストリーム暗号の暗号化装置内の非線形処理部の構成について説明する。なお、図9は、加算処理を2重化した場合の構成図であり、図10は、加算処理を3重化した場合の構成図である。
【0087】
図9に示すように、本実施形態に係るストリーム暗号の暗号化装置内の非線形処理部は、レジスタ310と、加算器1321、1327、1331、1341、1347、1351と、内部メモリ1322、1324、1326、1332、1342、1344、1346、1352と、非線形関数器1323、1325、1343、1345と、セレクタ1333、1353とから構成されている。
【0088】
ここで、レジスタ1310は、フィードバックシフトレジスタが好ましい。加算器1321は、レジスタ1310と内部メモリ1324に接続され、この加算値を内部メモリ1322に格納する。加算器1331は、レジスタ1310と非線形関数器1325の出力に接続され、この加算値を内部メモリ1332に格納する。セレクタ1333は、内部メモリ1322と内部メモリ1332に接続され、いずれかの値を選択する。そして選択した値を非線形関数器1323に出力する。
【0089】
非線形関数器1323は、演算結果を内部メモリ1346に格納し、格納した値は、排他的論理和演算器1348および非線形関数器1345に出力される。非線形関数器1345は、演算結果を内部メモリ1344および加算器1351に出力する。内部メモリ1344に格納した値は、加算器1347に出力される。加算器1347は、レジスタ1310からの値と内部メモリ1344に格納した値とを加算し、その演算結果を排他的論理和演算器1348に出力する。排他的論理和演算器1348は、その演算結果である鍵系列を排他的論理和演算器1349に出力し、排他的論理和演算器1349は、この鍵系列と入力される平文の排他的論理和演算を行って暗号文を出力する。
【0090】
一方、非線形関数器1345の演算結果は、加算器1351に供給される。加算器1351は、レジスタ1310からの値と非線形関数器1345からの演算結果とを加算して内部メモリ1352に格納する。また、内部メモリ1344に格納された値は、加算器1341に供給され、加算器1341は、レジスタ1310からの値とを加算して、その値を内部メモリ1342に格納する。セレクタ1353は、内部メモリ1352および1342から値を読み出して、いずれかの値を選択して、非線形関数器1343に出力する。
【0091】
非線形関数器1343は、演算結果を内部メモリ1326に格納する。内部メモリ1326に格納された値は、排他的論理和演算器1328および非線形関数器1325に供給される。非線形関数器1325は、演算結果を内部メモリ1324に格納するとともに、加算器1331に出力する。
【0092】
内部メモリ1324に格納された値は、加算器1321および加算器1327に供給される。加算器1327は、内部メモリ1324に格納された値とレジスタ1310からの値とを加算して、排他的論理和演算器1328に、その値を出力する。排他的論理和演算器1328は、加算器1327からの値と、内部メモリ1326の値との排他的論理和演算を行い、鍵系列を生成して、排他的論理和演算器1329に出力する。排他的論理和演算器1329は、鍵系列と平文を入力し、これらの排他的論理和演算を行うことにより暗号文を出力する。
【0093】
なお、図中、一点鎖線で囲んだブロックが多重化のために新たに設けられたブロックであり、多重化に伴い、1クロック後と2クロック後のレジスタの値が必要となるため、それぞれ該当する部分からレジスタの値を取得している。
【0094】
図10に示すように、本実施形態に係るストリーム暗号の暗号化装置内の非線形処理部は、レジスタ1510、1511と、加算器1521、1527、1531、1534、1541、1547、1551、1554と、内部メモリ1522、1524、1526、1532、1535、1542、1544、1546、1552、1555と、非線形関数器1523、1525、1536、1543、1545、1556と、セレクタ1533、1553とから構成されている。
【0095】
ここで、レジスタ1510は、フィードバックシフトレジスタが好ましい。加算器1521は、レジスタ1510と内部メモリ1524に接続され、この加算値を内部メモリ1522に格納する。加算器1531は、レジスタ1510と非線形関数器1525の出力に接続され、この加算値を内部メモリ1532に格納する。また、加算器1534は、レジスタ1511と非線形関数器1536とに接続され、この加算値を内部メモリ1535に格納する。セレクタ1533は、内部メモリ1522、1532、1535に接続され、いずれかの値を選択する。そして選択した値を非線形関数器1523に出力する。
【0096】
非線形関数器1523は、演算結果を内部メモリ1546に格納するとともに、非線形関数器1556に出力する。格納した値は、排他的論理和演算器1548および非線形関数器1545に出力される。非線形関数器1545は、演算結果を内部メモリ1544および加算器1551に出力する。内部メモリ1544に格納した値は、加算器1547に出力される。加算器1547は、レジスタ1510からの値と内部メモリ1544に格納した値とを加算し、その演算結果を排他的論理和演算器1548に出力する。排他的論理和演算器1548は、その演算結果である鍵系列を排他的論理和演算器1549に出力し、排他的論理和演算器1549は、この鍵系列と入力される平文の排他的論理和演算を行って暗号文を出力する。
【0097】
一方、非線形関数器1545の演算結果は、加算器1551に供給される。加算器1551は、レジスタ1510からの値と非線形関数器1545からの演算結果とを加算して内部メモリ1552に格納する。また、内部メモリ1544に格納された値は、加算器1541に供給され、加算器1541は、レジスタ1510からの値とを加算して、その値を内部メモリ1542に格納する。さらに、加算器1554は、非線形関数器1556の演算結果とレジスタ1510からの値を加算して、内部メモリ1555に格納する。セレクタ1553は、内部メモリ1552、1542、1555から値を読み出して、いずれかの値を選択して、非線形関数器1543に出力する。
【0098】
非線形関数器1543は、演算結果を内部メモリ1526に格納するとともに、非線形関数器1536に出力する。内部メモリ1526に格納された値は、排他的論理和演算器1528および非線形関数器1525に供給される。非線形関数器1525は、演算結果を内部メモリ1524に格納するとともに、加算器1531に出力する。
【0099】
内部メモリ1524に格納された値は、加算器1521および加算器1527に供給される。加算器1527は、内部メモリ1524に格納された値とレジスタ1510からの値とを加算して、排他的論理和演算器1528に、その値を出力する。排他的論理和演算器1528は、加算器1527からの値と、内部メモリ1526の値との排他的論理和演算を行い、鍵系列を生成して、排他的論理和演算器1529に出力する。排他的論理和演算器1529は、鍵系列と平文を入力し、これらの排他的論理和演算を行うことにより暗号文を出力する。
【0100】
なお、図中、一点鎖線で囲んだブロックが多重化のために新たに設けられたブロックであり、多重化に伴い、1クロック後と2クロック後のレジスタの値が必要となるため、それぞれ該当する部分からレジスタの値を取得している。また、図10に示す3重化では、1クロック後のレジスタ510のフィードバック値が必要になるためこれを格納するレジスタ1511を用意する。なお、加算処理を多重化した非線形部を更に多重化することで、さらなる高速化も可能である。
【0101】
<ストリーム暗号の暗号化装置の処理>
図11を用いて、本実施形態に係るストリーム暗号の暗号化装置の処理について説明する。
【0102】
まず、鍵拡張部1100が、初期鍵を拡張して拡張鍵を生成し(ステップS1101)、初期化処理において、生成した拡張鍵と初期値とを入力し、初期化処理を行う(ステップS1102)。
【0103】
そして、初期化処理終了後に、非線形処理部1300からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成し(ステップS1103)、生成された鍵系列と平文の排他的論理和演算を行い暗号文を生成する(ステップS1104)。
【0104】
以上、説明したように、本実施形態によれば、データ遅延量が最大となっているパスにフリップフロップを追加し、そのパスを分割すれば動作クロックが向上し、高速化が可能である。非線形部の一部の処理を多重化することで高速化が可能である。また、多重化した非線形部全体を更に多重化による高速化も可能である。また、従来は、同一の回路で実行されていた初期化処理と鍵ストリーム生成処理をそれぞれ別の回路で実行することによって、鍵系列生成時に鍵拡張処理を行う必要がなくなり、高速化を実現できる。
【0105】
<第3の実施形態>
図12から図15を用いて、本発明の第3の実施形態について説明する。
【0106】
<ストリーム暗号の復号化装置の概略構成>
本実施形態に係るストリーム暗号の復号化装置は、図12に示すように、鍵拡張部1100と、フリップフロップ1200と、非線形処理部1300と、排他的論理和演算器1400とから構成されている。なお、第2の実施形態と同一の符号を付す構成要素については、同様の機能を有することから、その詳細な説明は、省略する。つまり、本実施形態に係るストリーム暗号の復号化装置の構成は、第2の実施形態に係るストリーム暗号の暗号化装置の構成と同様であり、排他的論理和演算器1400に、暗号文を入力して、平文を得る点のみが異なる。
【0107】
<非線形処理部の構成>
図13および図14を用いて、本実施形態に係るストリーム暗号の復号化装置内の非線形処理部の構成について説明する。なお、図13は、加算処理を2重化した場合の構成図であり、図14は、加算処理を3重化した場合の構成図である。
【0108】
図13に示すように、本実施形態に係るストリーム暗号の復号化装置内の非線形処理部は、レジスタ1310と、加算器1321、1327、1331、1341、1347、1351と、内部メモリ1322、1324、1326、1332、1342、1344、1346、1352と、非線形関数器1323、1325、1343、1345と、セレクタ1333、1353とから構成されている。
【0109】
また、図14に示すように、本実施形態に係るストリーム暗号の復号化装置内の非線形処理部は、レジスタ1510、1511と、加算器1521、1527、1531、1534、1541、1547、1551、1554と、内部メモリ1522、1524、1526、1532、1535、1542、1544、1546、1552、1555と、非線形関数器1523、1525、1536、1543、1545、1556と、セレクタ1533、1553とから構成されている。
【0110】
ここで、第2の実施形態と同一の符号を付す構成要素については、同様の機能を有することから、その詳細な説明は、省略する。つまり、本実施形態に係るストリーム暗号の復号化装置の構成は、第2の実施形態に係るストリーム暗号の暗号化装置の構成と同様であり、排他的論理和演算器1329、1349、1529、1549に、暗号文を入力して、平文を得る点のみが異なる。
【0111】
<ストリーム暗号の復号化装置の処理>
図15を用いて、本実施形態に係るストリーム暗号の復号化装置の処理について説明する。
【0112】
まず、鍵拡張部1100が、初期鍵を拡張して拡張鍵を生成し(ステップS1201)、初期化処理において、生成した拡張鍵と初期値とを入力し、初期化処理を行う(ステップS1202)。
【0113】
そして、初期化処理終了後に、非線形処理部1300からのフィードバック値を入力し、非線形処理を並列に処理するとともに、非線形関数が、並べ替え処理およびフィードバック値を得るための乗算結果をデータテーブルとして保持して処理し、鍵系列を生成し(ステップS1203)、生成された鍵系列と暗号文の排他的論理和演算を行い平文を生成する(ステップS1204)。
【0114】
以上、説明したように、本実施形態によれば、データ遅延量が最大となっているパスにフリップフロップを追加し、そのパスを分割すれば動作クロックが向上し、高速化が可能である。非線形部の一部の処理を多重化することで高速化が可能である。また、多重化した非線形部全体を更に多重化による高速化も可能である。また、従来は、同一の回路で実行されていた初期化処理と鍵ストリーム生成処理をそれぞれ別の回路で実行することによって、鍵系列生成時に鍵拡張処理を行う必要がなくなり、高速化を実現できる。
【0115】
なお、ストリーム暗号の暗号化装置およびストリーム暗号の復号化装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをストリーム暗号の暗号化装置およびストリーム暗号の復号化装置に読み込ませ、実行することによって本発明のストリーム暗号の暗号化装置およびストリーム暗号の復号化装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
【0116】
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0117】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0118】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0119】
1 暗号化装置
2 復号装置
10 擬似乱数生成器
11 初期化処理部
12 内部状態更新部
13 暗号化部
14 復号部
100a、100b フィードバックシフトレジスタ
200 クロック制御装置
300 非線形処理器
301a、301b、301c、301d 加算器
302a、302b、302c、302d、303a、303b 排他的論理演算器
310、311、312、313 内部レジスタ(L1、L2、R1、R2)
320a、320b、320c、320d 非線形置換器(Sub)
1100;鍵拡張部
1200;フリップフロップ
1300;非線形処理部
1310;レジスタ
1321;加算器
1327;加算器
1331;加算器
1341:加算器
1347;加算器
1351;加算器
1322;内部メモリ
1324;内部メモリ
1326;内部メモリ
1332;内部メモリ
1342;内部メモリ
1344;内部メモリ
1346;内部メモリ
1352;内部メモリ
1323;非線形関数器
1325;非線形関数器
1343;非線形関数器
1345;非線形関数器
1333;セレクタ
1353;セレクタ
1400;排他的論理和演算器
1521;加算器
1527;加算器
1531;加算器
1534;加算器
1541:加算器
1547;加算器
1551;加算器
1554;加算器
1522;内部メモリ
1524;内部メモリ
1526;内部メモリ
1532;内部メモリ
1535;内部メモリ
1542;内部メモリ
1544;内部メモリ
1546;内部メモリ
1552;内部メモリ
1555;内部メモリ
1523;非線形関数器
1525;非線形関数器
1536;非線形関数器
1543;非線形関数器
1545;非線形関数器
1556;非線形関数器
1533;セレクタ
1553;セレクタ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15