KASUMIラウンド回路
【課題】効果的なKASUMI暗号化のための技術を提供する。
【解決手段】1つの観点において、KASUMI暗号の断片部分を生成する1つのKASUMIラウンドが、8つの連続したラウンドがKASUMI出力を生成するよう、適切なフィードバックをともなって配備される。他の観点において、3つの連続するサイクルがFO出力を生成するよう、FO関数の1/3が適切なフィードバックをともなって配備される。さらに他の観点において、2つの後続するサイクルがFI出力を生成するよう、FI関数が適切なフィードバックをともなって配備される。さらに他の観点において、2つのシフトレジスタを備えるサブ鍵生成器が、各ラウンドとそのサブ段用のサブ鍵を効果的に生成する。これらの観点は、簡単なユーザーインタフェースをともなうKASUMIにおいて、小面積や低コストの実現といった高い利点の実現を総合的にもたらす。
【解決手段】1つの観点において、KASUMI暗号の断片部分を生成する1つのKASUMIラウンドが、8つの連続したラウンドがKASUMI出力を生成するよう、適切なフィードバックをともなって配備される。他の観点において、3つの連続するサイクルがFO出力を生成するよう、FO関数の1/3が適切なフィードバックをともなって配備される。さらに他の観点において、2つの後続するサイクルがFI出力を生成するよう、FI関数が適切なフィードバックをともなって配備される。さらに他の観点において、2つのシフトレジスタを備えるサブ鍵生成器が、各ラウンドとそのサブ段用のサブ鍵を効果的に生成する。これらの観点は、簡単なユーザーインタフェースをともなうKASUMIにおいて、小面積や低コストの実現といった高い利点の実現を総合的にもたらす。
【発明の詳細な説明】
【分野】
【0001】
本発明は、一般に通信に関し、特にKASUMI暗号化を行う新規で改善された方法および装置に関する。
【背景】
【0002】
無線通信システムは、音声、データ、その他の様々なタイプの通信を提供するために広く配備されている。これらのシステムは、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、または他のいくつかの変調技術に基づくことができる。CDMAシステムは、他のタイプのシステムよりも確かな利点を提供し、増加したシステム容量を含んでいる。
【0003】
CDMAシステムは、(1)「デュアルモード広帯域拡散スペクトルセルラシステムのためのTIA/EIA−95−B移動局―基地局互換性規格」(IS−95規格)、(2)「デュアルモード広帯域拡散スペクトルセルラ移動局のためのTIA/EIA−98−C勧告最低基準」(IS−98規格)、(3)「第3世代提携事業」(3GPP)という名の共同体により提案され、文献Nos.3G TS 25.211、3G TS 25.212、3G TS 25.213、および3G TS 25.214(W−CDMA規格)を含む文献のセットに具体化されている規格、(4)「第3世代提携事業2」(3GPP2)という名の共同体により提案され、「cdma2000拡散スペクトルシステムのためのTR−45.5物理レイヤ規格」、「cdma2000拡散スペクトルシステムのためのC.S0005−A上位レイヤ(レイヤ3)信号法規格」、および「C.S0024 cdma2000高速パケットデータ空中インターフェース仕様」(cdma2000規格)を含む文献のセットに具体化されている規格、および(5)他のいくつかの規格、といった1つ以上のCDMA規格に対応するように設計することができる。cdma2000規格の高速パケットデータ仕様を実施するシステムを、本明細書中では高速データレート(HDR)システムと称す。HDRシステムは、TIA/EIA−IS−856、「CDMA2000高速パケットデータ空中インターフェース仕様」に記録されている。また、提案された無線システムは、HDRと1つの空中インターフェースを使用する低速データレートサービス(例えば、音声サービスおよびファックスサービス)との組み合わせを提供する。
【0004】
暗号化技術は、送信データの安全性を提供するため、およびデータにアクセスしようとするユーザーに認証を提供するために、通常使用される。暗号化技術は、様々な分野で使用され、特にデジタル無線通信システムに有用である。
【0005】
W−CDMA規格用に指定された1つの暗号化アルゴリズムが、KASUMIである。KASUMIは、1999年12月23日付けのETSI/SAGE仕様書「3GPP機密性および完全性アルゴリズムの仕様」バージョン1.0の「文書2:KASUMI仕様」(以下、KASUMI仕様)に詳述されている。KASUMIの様々な用途が、同じETSI/SAGE仕様書において、「文書1:f8およびf9仕様」に詳述されている。KASUMIは、128ビット鍵を利用して64ビット入力から64ビット出力を生成するブロック暗号である。KASUMIの出力は、通常、鍵ストリームのビットと暗号化されるべきデータのビットとの排他的論理和(XOR)をとることにより、暗号化データに対する鍵ストリームとして使用することができる。
【0006】
通信システムのための技術では、その様々なサブ関数を実行するために、ASICまたは他のハードウェア解法を用いるのが一般的である。ASIC設計において、利用面積がより小さくなると、より低いコスト、より高い歩留まり、そして多くの場合はより低い電力につながる。低コストと低電力は、固定用途と移動用途の両方で有益であるが、低電力は、電池を利用する移動機器にとって特に重要である。同時に、処理はある制限時間内で完了しなければならない。W−CDMAシステムのような無線データシステムは、それらの加入者と基地局にKASUMIの実施を組み込む必要があり、設計者は、先に述べたことを含む様々な制約の中で作業する必要がある。このような事情により、KASUMI暗号化を効果的に行う装置および方法の技術的な必要性がある。
【発明の開示】
【概要】
【0007】
本明細書中で開示された実施形態は、効果的なKASUMI暗号化のための効果的な装置または方法の必要性に対処している。1つの観点において、KASUMI暗号の断片部分を生成する1つのKASUMIラウンドが、8つの連続したラウンドがKASUMI出力を生成するよう、適切なフィードバックをともなって配備される。他の観点において、3つの連続するサイクルがFO出力を生成するよう、FO関数の1/3が適切なフィードバックをともなって配備される。さらに他の観点において、2つの後続するサイクルがFI出力を生成するよう、FI関数が適切なフィードバックをともなって配備される。さらに他の観点において、2つのシフトレジスタを備えるサブ鍵生成器が、各ラウンドとそのサブ段用のサブ鍵を効果的に生成する。これらの観点は、簡単なユーザーインタフェースをともなうKASUMIにおいて、小面積や低コストの実現といった高い利点の実現を総合的にもたらす。本発明の他の様々な観点も提示される。
【0008】
本発明は、以下でさらに詳しく述べるように、本発明の様々な観点、実施形態、および特徴を実施する方法およびシステム要素を提供する。
【0009】
本発明の特徴、性質、および利点は、以下に述べる詳細な説明を図面とともに参照することでより明らかになる。図面全体を通じて同じ参照符号により対応付けがなされている。
【詳細な説明】
【0010】
図1は、多数のユーザーをサポートし、本発明の様々な観点を実施できる無線通信システム100を示す図である。システム100は、1つ以上のCDMA規格および/または設計(例えば、IS−95規格、cdma2000規格、HDR仕様、W−CDMA規格)をサポートするよう設計することができる。簡単にするために、システム100は、2つのアクセス端末106(遠隔端末または移動局と呼ぶこともできる)と通信する3つのアクセスポイント104(基地局と呼ぶこともできる)を含むよう図示している。アクセスポイントとそのカバレッジ領域は、まとめて「セル」と呼ばれることが多い。KASUMIアルゴリズムは、1つ以上のアクセスポイント、1つ以上のアクセス端末、またはそれら両方に配備することができる。
【0011】
実施中のCDMAシステムに応じて、各アクセス端末106は、任意の時点において、順方向リンク上で1つの(または場合によってはさらに多くの)アクセスポイント104と通信することができ、アクセス端末がソフトハンドオフにあるか否かに応じて、逆方向リンク上で1つ以上のアクセスポイントと通信することができる。順方向リンク(すなわち、ダウンリンク)は、アクセスポイントからアクセス端末への伝送を指しており、逆方向リンク(すなわちアップリンク)はアクセス端末からアクセスポイントへの伝送を指している。
【0012】
図2(a)−2(d)は、KASUMI仕様に規定されているKASUMIアルゴリズムを図示している。図2(a)は、KASUMI200の一番上のレベルの図を示している。図2(b)は、FO関数を示している。図2(c)は、FI関数を示している。図2(d)は、FL関数を示している。
【0013】
図2(a)に示すように、KASUMIは8つのラウンドからなる。各ラウンドは、1つのFL関数、1つのFO関数、および32ビットXOR関数から成り立っている。FL関数はFLiで表わされ、ここでiはどのラウンドを表わすかを示し、1から8までである。同様に、FO関数はFOiで表わされる。各ラウンドでは、KLi、KOi、およびKIiで表わされる様々なサブ鍵を利用する。KLiは、KLi,1およびKLi,2で表わされる2つの16ビットサブ鍵からなる32ビットサブ鍵である。KOiとKIiは、48ビットサブ鍵であり、それぞれKOi,1、KOi,2およびKOi,3と、KIi,1、KIi,2およびKIi,3とで表わされる3つの16ビットサブ鍵からなる。16ビットサブ鍵の用途については、以下で図2(b)−2(d)を基にさらに詳しく述べる。
【0014】
ラウンド1は、FL1・202、FO1・204、および32ビットのビットワイズXOR206を備えている。64ビット入力は2つの32ビットセグメントに分けられ、これらを左セグメントおよび右セグメントとして述べる。右セグメントは、XOR206においてFO1・204の出力と排他的論理和をとられ、ラウンド1の右出力を生成する。各ラウンドの右出力は、後に続くラウンドへの左入力となる。したがって、ラウンド1の右出力は左入力としてラウンド2に供給される。左入力セグメントはFL1・202に供給され、ここで、サブ鍵KL1を利用して、以下で述べるFL関数に従って処理される。FL1・202の出力は、これも以下で述べるFO関数に従ってKO1およびKI1とともに処理するために、FO1・204に供給される。いま述べたように、FO1・204の出力は、入力の右セグメントとビットワイズ排他的論理和をとるために、XOR206に供給される。また左入力セグメントは、右入力としてラウンド2に供給される。一般に、各ラウンドの左入力は、そのラウンドにおいて様々な処理に使用され、後に続くラウンドへの右入力となる。
【0015】
ラウンド2は、FL2・208、FO2・210、およびXOR212を備えている。ラウンド2は、関数FOとFLの順序が逆になることを除いて、ラウンド1と同様である。一般に、奇数のラウンドはFO関数に供給をするFL関数を有し、偶数のラウンドはFL関数に供給をするFO関数を有する。ラウンド2への右入力は、XOR212においてFL2・210の出力と排他的論理和をとられ、ラウンド2の右出力を生成する。既に述べたように、ラウンド2の右出力は左入力としてラウンド3に供給される。左入力セグメントは、FO関数に従ってKO2およびKI2とともに処理するために、FO2・208に供給される。FO2・208の出力は、FL関数に従ってKI2とともに処理するために、FL2・210に供給される。また左入力セグメントは、右入力としてラウンド3に供給される。
【0016】
ラウンド3、5、および7は、当然ながら各ラウンドへの入力がKASUMI入力ではなく前のラウンドの出力によるものであることを除いて、ラウンド1と同様に構成されている。ラウンド4、6、および8は、ラウンド2と同様に構成されている。
【0017】
ラウンド3において、XOR212の出力は、FL関数に従ってKL3とともに処理するために、FL3・214に供給される。FL3・214の出力は、FO関数に従ってKO3およびKI3とともに処理するために、FO3・216に供給される。FO3・216の出力は、XOR206の出力とビットワイズ排他的論理和をとるために、XOR・218に供給される。
【0018】
ラウンド4において、XOR218の出力は、FO関数に従ってKO4およびKI4とともに処理するために、FO4・220に供給される。FO4・220の出力は、FL関数に従ってKL4とともに処理するために、FL4・222に供給される。FL4・222の出力は、XOR212の出力とビットワイズ排他的論理和をとるために、XOR224に供給される。
【0019】
ラウンド5において、XOR224の出力は、FL関数に従ってKL5とともに処理するために、FL5・226に供給される。FL5・226の出力は、FO関数に従ってKO5およびKI5とともに処理するために、FO5・228に供給される。FO5・228の出力は、XOR218の出力とビットワイズ排他的論理和をとるために、XOR230に供給される。
【0020】
ラウンド6において、XOR230の出力は、FO関数に従ってKO6およびKI6とともに処理するために、FO6・232に供給される。FO6・232の出力は、FL関数に従ってKL6とともに処理するために、FL6・234に供給される。FL6・234の出力は、XOR224の出力とビットワイズ排他的論理和をとるために、XOR236に供給される。
【0021】
ラウンド7において、XOR236の出力は、FL関数に従ってKL7とともに処理するために、FL7・238に供給される。FL7・238の出力は、FO関数に従ってKO7およびKI7とともに処理するために、FO7・240に供給される。FO7・240の出力は、XOR230の出力とビットワイズ排他的論理和をとるために、XOR242に供給される。
【0022】
ラウンド8において、XOR242の出力は、FO関数に従ってKO8およびKI8とともに処理するために、FO8・244に供給される。FO8・244の出力は、FL関数に従ってKL8とともに処理するために、FL8・246に供給される。FL8・246の出力は、XOR236の出力とビットワイズ排他的論理和をとるために、XOR248に供給される。
【0023】
XOR248の出力とXOR242の出力とは、図2(a)においてCと記された64ビットのKASUMI出力を生成するために連結される。
【0024】
図2(b)は、上述したFO関数を実行する計算ステップを図示している。FO関数は32ビット入力を取り入れ、それをそれぞれ左入力と右入力の2つの16ビットセグメントに分ける。留意すべきは、FO関数は3つの段を含んでおり、それらは以下で詳しく述べるように、それぞれ2つの16ビットビットワイズ排他的論理和とFIi1、FIi2、およびFIi3で示される関数FIiのインスタンスとを含んでいることである。この説明において、図2(a)について上述した各ラウンドに1つのFO関数があるので、iはラウンド番号に相当する。
【0025】
関数FOの第1段において、左16ビット入力は、XOR250において16ビットサブ鍵KOi,1とビットワイズ排他的論理和をとられる。上述したように、KOi,1は48ビットサブ鍵KOiの16ビットサブ鍵である。また、KOi,2とKOi,3は、KOiの16ビットサブ鍵である。XOR250の出力は、以下で述べるFI関数に従ってKIi,1とともに処理するために、FIi1・252に供給される。上述したように、KIi,1は48ビットサブ鍵KIiの16ビットサブ鍵である。また、KIi,2とKIi,3は、KIiの16ビットサブ鍵である。FIi1・252の出力は、右入力と16ビットビットワイズ排他的論理和をとるために、XOR254に供給される。
【0026】
関数FOの第2段において、右入力は、サブ鍵KOi,2と16ビットビットワイズ排他的論理和をとるために、XOR256に供給される。その結果は、FI関数に従ってKIi,2とともに処理するために、FIi2・258に供給される。FIi2・258の出力は、XOR254の出力と16ビットビットワイズ排他的論理和をとるために、XOR260に供給される。
【0027】
関数FOの第3段において、XOR254の出力は、サブ鍵KOi,3と16ビットビットワイズ排他的論理和をとるために、XOR262に供給される。その結果は、FI関数に従ってKIi,3とともに処理するために、FIi3・264に供給される。FIi3・264の出力は、XOR260の出力と16ビットビットワイズ排他的論理和をとるために、XOR266に供給される。XOR260の出力は、図2(b)においてFOと記された関数の出力を生成するために、XOR266の出力と連結される。
【0028】
図2(c)は、上述したFI関数を実行する計算ステップを図示している。FI関数は16ビット入力を取り入れ、それを9ビットセグメントと7ビットセグメントとに分ける。FI関数は、同一の処理を有する2つの段を含んでおり、この2つの段の間にXOR276およびXOR286で識別されるXORステップを有している。留意すべきは、図2(c)における濃い線は9ビットパスを識別するのに用いられ、薄い線は7ビットパスを識別するのに用いられていることである。
【0029】
第1段において、9ビット入力セグメントは、以下でさらに詳しく述べるように、処理のために関数S9・268に供給される。7ビット入力セグメントは、ゼロ拡張され、XOR270においてS9・268の出力と排他的論理和をとられる。また、7ビット入力セグメントは、以下でさらに詳しく述べるように、処理のために関数S7・272に供給される。XOR270の9ビット出力は、7ビットに切り捨てられ、XOR274においてS7・272の出力と排他的論理和をとられる。
【0030】
XOR276において、XOR274の出力は、サブ鍵KIi,j,1とビットワイズ排他的論理和をとられる。KIi,j,1はKIi,jの7ビットサブ鍵であり、ここでiはラウンド番号を示し、jはFI関数が呼び出されるFO段番号を示し、1はそれがKIi,jの1番目のサブ鍵であることを示す。XOR286において、XOR270の出力は、9ビットサブ鍵KIi,j,2とビットワイズ排他的論理和をとられる。KIi,j,2は、KIi,jの2番目のサブ鍵である。
【0031】
XOR276の出力とXOR286の出力は、関数F1の第2段への入力となる。XOR286の9ビット出力は、処理のために関数S9・278に供給される。XOR276の7ビット出力は、ゼロ拡張され、XOR280においてS9・278の出力と排他的論理和をとられる。また、XOR276の出力は関数S7・282に供給される。XOR280の9ビット出力は、7ビットに切り捨てられ、XOR284においてS7・282の出力と排他的論理和をとられる。XOR284の7ビット出力は、XOR280の9ビット出力と連結され、FIと記される16ビット出力を形成する。
【0032】
関数S7は、KASUMI仕様で規定される。これは、7ビット入力を取り入れ、7ビット出力を返す。以下の式1−7は、y0からy6までの各出力ビットを、x0からx6までの7つの入力ビットの関数として定義する。x1x3のような2つのオペランドの連結は、オペランドの論理積(すなわち、x1 AND x3)を示す。記号
【数1】
【0033】
は、排他的論理和関数を表わす。
【数2】
【0034】
関数S9は、KASUMI仕様で規定される。これは、9ビット入力を取り入れ、9ビット出力を返す。以下の式8−16は、y0からy8までの各出力ビットを、x0からx8までの9つの入力ビットの関数として定義する。x0x2のような2つのオペランドの連結は、オペランドの論理積(すなわち、x0 AND x2)を示す。記号
【数3】
【0035】
は、排他的論理和関数を表わす。
【数4】
【0036】
図2(d)は、図2(a)について上述したFL関数を図示している。32ビット入力は、2つの16ビットセグメントである左セグメントと右セグメントに分割される。左入力セグメントは、記号∩で表わされるANDゲート288において、KLi,1と、ビットワイズ論理積をとられる。ANDゲート288の出力は、記号<<<で表わされるローテータ290において、1ビット分左に巡回される。ローテータ290の出力は、XOR292において右入力セグメントとビットワイズ排他的論理和をとられる。XOR292の出力は、記号∪で表わされるORゲート298において、ビットワイズ論理和をとられる。ORゲート298の出力は、ローテータ296において1ビット分左に巡回される。ローテータ296の出力は、XOR294において左入力セグメントとビットワイズ排他的論理和をとられる。FLで表わされる32ビット出力は、XOR294の出力とXOR292の出力とを連結することにより形成される。
【0037】
KASUMIアルゴリズムは、いま述べたように、所望の結果を生成するために8つの計算ラウンドを必要とする。一実施形態において、単一のラウンドのためのハードウェアが配備され、8ラウンドのKASUMI出力を生成するために適切なフィードバックとともに再使用される。図3は、そのような例示的な実施形態を図示している。「例示的」という言葉は、ここでは専ら「一例、具体例、または例証となる」ことを意味するよう用いる。本明細書中で「例示的」に述べられたどの実施形態も、必ずしも他の実施形態よりも好ましくあるいは有利であるとして解釈すべきものではない。
【0038】
図3はKASUMI300を図示しており、これはサブ鍵生成器310、KASUMIラウンド330、およびKASUMI計算制御器320を備えている。KASUMIラウンド330は、サブ鍵生成器310からサブ鍵を受け入れる。KLi,1とKLi,2は、直接接続され、KOi,jおよびKIi,jは、それぞれmux340および350を介して供給される。mux340は、サブ鍵生成器310からKOi,1,KOi,2、およびKOi,3を受け入れる。mux350は、サブ鍵生成器310からKIi,1,KIi,2、およびKIi,3を受け入れる。mux340およびmux350からそれぞれKASUMIラウンド330に供給されるべきサブ鍵のセット、KOi,jおよびKIi,jは、KASUMI計算制御器320からの制御信号、subkey_selectによって決定される。全てのサブ鍵は、サブ鍵生成器310において、Kと記された128ビットの長さの鍵入力から生成される。またサブ鍵生成器310は、KASUMI計算制御器320からロード信号と巡回信号を受信する。サブ鍵生成については、以下でより十分に詳述する。
【0039】
KASUMI計算制御器320は、リセット信号と開始信号を入力として受け取る。KASUMI計算制御器320は、KASUMI出力が生成されたことを示す終了信号を生成する。そのような完了を示す信号は、任意である。他の実施形態では、完了時間がシステムの特性に基づいて分かっている場合に、そのような信号を除くことができる。例示的な実施形態における開始信号は、開始信号がストローブされたときに鍵Kおよび64ビット入力が有効となるように同期をとられる。KASUMIラウンド330の動作を制御するために、様々な信号が図3に示されている。kasumi_data_flow、kasumi_input_select、およびkasumi_output_reg_enが、KASUMIラウンド330内でラウンドレベルの機能を制御するために用いられる。fo_input_selectとfo_output_reg_enは、KASUMIラウンド330内でFO関数を制御するために用いられる。fi_input_selectとfi_output_reg_enは、KASUMIラウンド330内でFI関数を制御するために用いられる。例示的な実施形態では、FI関数を制御するのに1つの制御信号のみが必要とされるので、これら最後の2つの信号は同一になっている。これらの信号のサブセットは、様々な実施形態がどのように配備されるかによって必要となることがある。メモリとフィードバック回路を制御するための様々なシグナリング方式は技術的に知られており、本発明の範囲内である。必要とされる制御の詳細な説明は、以下に提供されている。
【0040】
KASUMIラウンド330は、いま述べた制御信号とサブ鍵に加えて、64ビット出力を生成する64ビット入力を受け入れる(その計算は、図2(a)−2(d)を基に詳しく述べた)。
【0041】
図4はKASUMIラウンド400を図示しており、これはいま述べたKASUMIラウンド330の例示的な実施形態である。KASUMIラウンド400において、64ビット入力inは、上半分(63:32)と下半分(31:0)の2つの32ビットセグメントに分割される。上半分は、mux405の入力に接続される。下半分は、mux410の入力に接続される。2つのレジスタ445および450は、kasumi_output_reg_enがアサートにされた場合に、KASUMIラウンド400内で演算された結果をラッチし、レジスタ445の出力とレジスタ450の出力は、64ビット出力outを生成するために連結される。それに加えて、レジスタ445の出力はmux410の入力としてフィードバックされ、レジスタ450の出力はmux405の入力としてフィードバックされる。mux405および410はkasumi_input_selectにより制御され、これは、アサートにされない場合にinが選択され、アサートにされる場合にフィードバック結果が選択されるようにする。mux405および410は、入力とレジスタ445および450により形成されるメモリの内容との間で選択を行うセレクタとして共に動作する。このようにKASUMIラウンド400は、inが選択された場合に、最初のKASUMIのラウンドを実行し、前のラウンドの結果がフィードバックされた場合に、後に続くKASUMIのラウンドを実行するのに利用することができる。
【0042】
図2(a)−2(d)に関して上述したように、KASUMIラウンドの処理の核心は、FL関数425、FO関数430、およびXOR440において実行される。しかしながら、上述したように、関数はそれぞれ各ラウンドで使われるので、処理順序はラウンドによって異なる。3つのmux415、420、および435は、後に続くKASUMIの各ラウンドにおいて構成要素を再使用するのに必要な切り換えを提供する。FL関数425、FO関数430、XOR440と、mux415、420、および435とは、共に部分的なラウンド計算部の一実施形態を形成する。mux405の出力から供給されるmux415への入力からなり、XOR440の出力に連結される部分的なラウンド計算部の出力は、レジスタ445および450により形成されたメモリ内に格納される。部分的なラウンド計算部への入力は、mux405および410により形成されたセレクタの出力から発せられる。いま述べたセレクタ、部分的なラウンド計算部、およびメモリの多くの回路実装は、当業者にとって容易に明らかとなる。これらの実施形態は、どれも本発明の範囲内である。
【0043】
3つのmux415、420、および435は、偶数および奇数ラウンド計算用のKASUMIラウンドを構成するためのデータフローセレクタを構成する。それらは、全てセレクタ信号kasumi_data_flowにより制御される。mux415は、kasumi_data_flowがアサートにされた場合にmux405の出力を選択し、kasumi_data_flowが非アサートにされた場合に関数FO430のフィードバック出力を選択する。mux420は、kasumi_data_flowが非アサートにされた場合にレジスタ445の出力を選択し、kasumi_data_flowがアサートにされた場合に関数FL425のフィードバック出力を選択する。mux415の出力は関数FL425に供給され、関数FL425の出力はmux435に供給される。mux420の出力は、関数FO430に供給され、関数FO430の出力もmux435に供給される。mux435は、kasumi_data_flowが非アサートにされた場合に関数FL425の出力を選択し、kasumi_data_flowがアサートにされた場合に関数FO430の出力を選択する。mux435の出力は、in入力としてビットワイズXOR440に供給される。ビットワイズXOR440の他方の入力は、mux410の出力である。上述したレジスタ450への入力は、XOR440の出力である。上述したレジスタ445への入力は、mux405の出力である。当業者は、制御信号kasumi_input_select、kasumi_data_flow、およびkasumi_outout_reg_enの適切な操作を結びつけた図4に図示する構成を、図2(a)について上述した所望のKASUMI計算を実行するのに用いることができることを認識できる。本実施形態のための制御シグナリングについては、以下でさらに詳しく述べる。
【0044】
図5は、図4について上述した関数FL425として用いるのに適したFL関数500の実施形態を図示している。FL関数500は、32ビット入力inを受け入れ、32ビット出力outを生成する。inの上半分(ビット31から16まで)は、ANDゲート510においてサブ鍵KLi,1とビットワイズ論理積をとられる。ANDゲート510の出力は、ローテータ520において1ビット左に巡回される。ローテータ520の出力は、XOR530において入力の下半分(ビット15から0まで)とビットワイズ排他的論理和をとられる。XOR530の結果は、ORゲート540においてサブ鍵KLi,2とビットワイズ論理和をとられる。ORゲート540の出力は、ローテータ550において1ビット左に巡回される。ローテータ550の出力は、XOR560において入力の上半分とビットワイズ排他的論理和をとられる。XOR560の出力は、32ビット出力outを生成するためにXOR530の出力と連結される。
【0045】
図6は、図4について上述した関数FO430として用いるのに適したFO関数600の実施形態を図示している。FO関数600は、32ビット入力inを受け入れ、32ビット出力outを生成する。本実施形態では、上述した3つのFO段のうちの1つのための構成要素が配備されている。レジスタと適切なフィードバックにより、単一の段を連続して3回用いて、FO出力を生成することができるようになる。
【0046】
2つのレジスタ660および670は、fo_output_reg_enがアサートにされた場合に、中間計算値を格納する。レジスタ660の出力は、mux620の入力として供給される。レジスタ670の出力は、mux610の入力として供給される。入力inの上半分は、mux610への他方の入力となる。入力inの下半分は、mux620への他方の入力となる。信号fo_input_selectは、mux610および620に、それぞれ入力inとレジスタ660および670からのフィードバック値との間で選択を行うよう指示する。mux610の出力は、XOR630においてサブ鍵KOi,jとビットワイズ排他的論理和をとられる。XOR630の出力は、関数FI640に供給され、以下でさらに詳しく述べるように、サブ鍵KOi,jとともに処理される。関数FI640の出力は、XOR650においてmux620の出力とビットワイズ排他的論理和をとられる。XOR650の出力は、上述したように、レジスタ660への入力として供給される。mux620の出力は、上述したように、入力としてレジスタ670に供給される。mux620の出力は、32ビット出力outを形成するためにXOR650の出力と連結される。
【0047】
レジスタ660とレジスタ670はメモリを形成する。mux610とmux620はセレクタを形成する。XOR630、FI関数640、およびXOR650は、部分的なFO計算部を形成する。セレクタは、入力を部分的なFO計算部へ供給するために、入力とメモリ結果との間で選択を行う。部分的なFO計算部の出力は、メモリに格納される。いま述べたセレクタ、部分的なFO計算部、およびメモリの多くの回路実装は、当業者にとって容易に明らかとなる。これらの実施形態は、どれも本発明の範囲内である。
【0048】
図7は、図6について上述した関数FI640として用いるのに適したFI関数700の実施形態を図示している。FI関数700は、16ビット入力inを受け入れ、16ビット出力outを生成する。本実施形態では、上述した2つのFI段のうちの1つのための構成要素が配備されている。レジスタと適切なフィードバックにより、単一の段を連続して2回用いて、FI出力を生成することができるようになる。
【0049】
2つのレジスタ745および750は、fi_output_reg_enがアサートにされた場合に、中間計算値を格納するのに用いられる。9ビットレジスタ745の出力は、入力としてmux705に供給される。7ビットレジスタ750の出力は、入力としてmux710に供給される。入力inの上位9ビットは、mux705への他方の入力となる。入力inの下位7ビットは、mux710への他方の入力となる。信号fi_input_selectは、mux705および710に、それぞれ入力inとレジスタ745および750からのフィードバック値との間で選択を行うよう指示する。mux705の出力は、上述したように関数S9・715における処理のために供給される。関数S9・715の出力は、XOR720においてmux710のゼロ拡張出力とビットワイズ排他的論理和をとられる。またmux710の出力は、関数S7・725における処理のために供給される。関数S7・725の出力は、XOR730において、XOR720の切り捨てられた出力とビットワイズ排他的論理和をとられる。XOR720の出力は、XOR735においてサブ鍵KIi,j,2とビットワイズ排他的論理和をとられる。XOR730の出力は、XOR740においてサブ鍵KIi,j,1とビットワイズ排他的論理和をとられる。XOR735の出力は、上述したように、入力としてレジスタ745に供給される。XOR740の出力は、上述したように、入力としてレジスタ750に供給される。XOR730の出力は、16ビット出力outを生成するためにXOR720の出力と連結される。
【0050】
本実施形態において留意すべきは、信号fi_input_selectと信号fi_output_reg_enは同一であり、これにより、共通の信号をmux705、mux710、レジスタ745、およびレジスタ750の間で共用できることである。他の実施形態において、各FI処理サイクルがクロック制御レジスタ745および750の1つのサイクルに相当する場合は、これらのレジスタでイネーブル信号は必要ない。レジスタは、XOR735とXOR740の結果を、それらがFIの後半の計算に用いられる1サイクル分遅らせるだけである。これらのような様々な技術は用いることができ、技術的に周知である。
【0051】
レジスタ745とレジスタ750はメモリを形成する。mux705とmux710はセレクタを形成する。関数S9・715、XOR720、関数S7・725、ならびに、XOR730、735、および740は、部分的なFI計算部を形成する。セレクタは、入力を部分的なFI計算部へ供給するために、入力とメモリ結果との間で選択を行う。部分的なFI計算部の出力である中間値は、メモリに格納される。それに加えて、XOR720およびXOR730の出力はFI出力にもなる。いま述べたセレクタ、部分的なFI計算部、およびメモリの多くの回路実装は、当業者にとって容易に明らかとなる。これらの実施形態は、どれも本発明の範囲内である。
【0052】
図8は、サブ鍵生成器800を図示している。サブ鍵生成器800は、128ビット鍵Kを受け入れ、ロード信号および巡回信号と共に上述した様々なサブ鍵を生成する。サブ鍵生成器800は、2つの128ビットシフトレジスタ810および820を含む。これらは、どちらもロード信号がアサートにされた場合に並列ロード可能であり、巡回信号がアサートにされた場合に8ビット左巡回を実行する。ロード信号は、KASUMI計算の初めに1度アサートにされる。巡回信号は、各ラウンドが完了した後に、次のラウンド用の新しいサブ鍵を作成するためにイネーブルになる。これらの制御信号の他の制御信号との関連についての説明は、より詳しく以下で述べる。
【0053】
留意すべきは、これらの巡回可能シフトレジスタを実施する多くの方法は、当業者にとって容易に明らかとなることである。例えば、シフトアウトされたビットを入力として第1段にフィードバックすることにより、シフトレジスタを巡回シストレジスタにすることができる。そのような巡回シストレジスタは、8ビット左巡回を生成するために8回シフトすることができる。あるいは、各シフトが各ビットを8桁分巡回(すなわち、バイトワイズ左巡回)するように、シフトレジスタを配線することができる。この代替は、8つのインターリーブ16ビットシフトレジスタを実施することに相当し、それらの出力がそれらの各入力にフィードバックされるよう構成される。
【0054】
シフトレジスタ820は、K1からK8まで名付けられた8つの16ビットのセクションから成る。K(127:112)はK1用のロード入力となる。K(111:96)はK2用のロード入力となる。K(95:80)はK3用のロード入力となる。K(79:64)はK4用のロード入力となる。K(63:48)はK5用のロード入力となる。K(47:32)はK6用のロード入力となる。K(31:16)はK7用のロード入力となる。K(15:0)はK8用のロード入力となる。
【0055】
シフトレジスタ810は、K1’からK8’まで名付けられた8つの16ビットのセクションから成る。シフトレジスタ810用のロード入力は、Kの様々なセグメントと、KASUMI仕様で規定される定数C1からC8までとのビットワイズ排他的論理和をとることにより形成される。表1は、これら定数の値を提供している。
【表1】
【0056】
K1’へのロード入力は、XOR801において、K(127:112)とC1とのビットワイズ排他的論理和をとることにより生成される。K2’へのロード入力は、XOR802において、K(111:96)とC2とのビットワイズ排他的論理和をとることにより生成される。K3’へのロード入力は、XOR803において、K(95:80)とC3とのビットワイズ排他的論理和をとることにより生成される。K4’へのロード入力は、XOR804において、K(79:64)とC4とのビットワイズ排他的論理和をとることにより生成される。K5’へのロード入力は、XOR805において、K(63:48)とC5とのビットワイズ排他的論理和をとることにより生成される。K6’へのロード入力は、XOR806において、K(47:32)とC6とのビットワイズ排他的論理和をとることにより生成される。K7’へのロード入力は、XOR807において、K(31:16)とC7とのビットワイズ排他的論理和をとることにより生成される。K8’へのロード入力は、XOR808において、K(15:0)とC8とのビットワイズ排他的論理和をとることにより生成される。当然ながら、各XOR801−808は、オペランドの1つとして定数を有するので、128XORの各々は、対応する定数が「0」の場合に配線と交換することができ、対応する定数が「1」の場合にインバータと交換することができる。
【0057】
いくつかのサブ鍵は、シフトレジスタ810から直接引き出される。KLi,2はK3’から引き出される。KIi,2はK4’から引き出される。KIi,1はK5’から引き出される。KIi,3はK8’から引き出される。他のサブ鍵は、シフトレジスタ820の様々なセグメントを巡回することにより生成される。KLi,1は、ローテータ830においてK1を1ビット分左に巡回することにより生成される。KOi,1は、ローテータ840においてK2を5ビット分左に巡回することにより生成される。KOi,2は、ローテータ850においてK6を8ビット分左に巡回することにより生成される。KOi,3は、ローテータ860においてK7を13ビット分左に巡回することにより生成される。留意すべきは、これらローテータの各々は定数値分巡回するので、各巡回は簡単なワイヤ・マッピングによって達成できることである。当業者は、そのようなワイヤ・マッピングがどのように実施されるべきかを認識でき、巡回のための様々な他の技術も認識できる。
【0058】
図9は、KASUMIの一実施形態において実行されるステップを詳細に示したフローチャートである。さらに、これらのステップは、図3について述べたような実施形態が配備されている場合に、KASUMI計算制御器320により利用することができる。これらのステップは、図4について述べたKASUMIラウンド400のような実施形態に適用することもできる。
【0059】
開始902で処理が始まり、ブロック904に進む。ブロック904において、iは1に設定され、ここでiはラウンド番号を表わす。KASUMIラウンドの入力は、これがラウンド1であるので、ラウンドを演算するために選択される。これは、図4に示したように、kasumi_input_selectを0に設定することに相当する。ブロック判定ブロック906に進むと、ここで、iで表わされた現時のラウンドが偶数または奇数であることを決定するために試験が実行される。iが奇数、すなわち1、3、5、または7である場合はブロック908に進む。iが偶数、すなわち2、4、6、または8である場合はブロック910に進む。
【0060】
ブロック908において、KASUMIラウンドのデータフローは、(ラウンド1において)入力または(ラウンド3、5および7において)フィードバックから、FL関数へ、FO関数へ、XORゲートへと流れる構成となっている。これは、図4においてkasumi_data_flowを1に設定することに相当する。
【0061】
ブロック910において、KASUMIラウンドのデータフローは、フィードバックから、FO関数へ、FL関数へ、XORゲートへと流れる構成となっている。これは、図4においてkasumi_data_flowを0に設定することに相当する。
【0062】
ブロック908またはブロック910から、KASUMIラウンドを演算するためにブロック912に進む。KASUMIラウンドを演算するための一実施形態は図4において詳細に示したが、KASUMIラウンドを演算するためのどの方法も、図9のフローチャートの範囲内である。一度KASUMIラウンドが演算されると、その結果はラッチ結果ブロック914において格納される。これは、図4に示すkasumi_reg_en信号をアサートにすることに相当する。判定ブロック916に進む。
【0063】
判定ブロック916において、iが8に等しければ、8番目である最後のラウンドが実行されており、処理はKASUMI終了ブロック922において完了する。図3に示すような終了信号を用いる実施形態において、その信号はこの時点でアサートにすることができる。iが8未満の場合、実行されるべき付加的なラウンドがあり、それによりiはブロック918において1だけ増加される。ブロック920に進み、ここで、次のラウンドを演算するために、ブロック914のラッチされた結果からのフィードバックが選択される。これは、図4においてkasumi_input_selectを1に設定することに相当する。判定ブロック906にループバックし、次のラウンドを実行する。KASUMI終了ブロック922に達するまで、ステップを繰り返す。
【0064】
図10は、FO関数の一実施形態において実行されるステップを詳細に示したフローチャートである。さらに、これらのステップは、図3について述べたような実施形態が配備されている場合に、KASUMI計算制御器320により利用することができる。これらのステップは、図6について述べたFO関数600のような実施形態に適用することもできる。
【0065】
開始1002で処理が始まり、ブロック1004に進む。ブロック1004において、jは1に設定され、ここでjは段番号を表わす。FO関数の入力は、これが段1であるので、演算をするために選択される。これは、図6に示したように、fo_input_selectを1に設定することに相当する。さらに、段番号jは、図3に示した信号subkey_selectに関連する。(いくつかの実施形態では、subkey_select値0、1、および2は、jの値1、2、および3に相当する。あるいは、jの値と同一のsubkey_select値1、2、および3に基づいて選択を行う3つの入力muxを配備することができる。)
ブロック1006に進み、ここでFO関数の1/3が演算される。FO関数の1/3を演算できる一実施形態が図6に図示されているが、他も図10のフローチャートの範囲内である。1/3計算の結果は、ラッチ結果ブロック1008において格納される。これは、図6においてfo_output_enをアサートにすることに相当する。次に判定ブロック1010に進み、jが3に等しいか試験を行う。もしそうなら、次にFO完了ブロック1016に進み、FO関数は完了される。jが3未満の場合、さらなる段がまだ完了されていない。ブロック1012に進み、jを1だけ増加する。次にブロック1014に進み、ここで、ブロック1008においてラッチされた結果であるフィードバックが、FO関数への入力として選択される。これは、図6においてfo_input_selectを0に設定することに相当する。ブロック1006にループバックし、次の段を計算し、全ての段が完了するまで処理を繰り返す。
【0066】
図11は、FI関数の一実施形態において実行されるステップを詳細に示したフローチャートである。さらに、これらのステップは、図3について述べたような実施形態が配備されている場合に、KASUMI計算制御器320により利用することができる。これらのステップは、図7について述べたFI関数700のような実施形態に適用することもできる。
【0067】
開始1102で処理が始まり、ブロック1104に進む。ブロック1104において、入力が演算のために選択され、これは図7においてfi_input_selectを1に設定することに相当する。ブロック1106に進み、ここでFI関数の1/2が演算される。ブロック1108に進み、ブロック1106において計算されたFIの前半の結果をラッチする。ブロック1110に進み、ここでフィードバックが演算のために選択され、これは図7においてfi_input_selectを0に設定することに相当する。ブロック1112に進み、ここでFIの後半が演算される。ブロック1114に進み、FI演算は完了する。
【0068】
図12は、図8について上述したもののようなサブ鍵生成器の実施形態を制御するために実行されるステップを詳細に示したフローチャートである。さらに、これらのステップは、図3について述べたような実施形態が配備されている場合に、KASUMI計算制御器320により利用することができる。
【0069】
開始1202で処理が始まり、ブロック1204に進む。ブロック1204において、iは1に設定され、ここでiはラウンド番号を表わす。サブ鍵シフトレジスタがロードされる。例えば、図3におけるロード信号は、図8に示すサブ鍵生成器800に接続することができる。ロード信号がアサートにされると、サブ鍵生成器800は2つのシフトレジスタ810および820をロードする。ブロック1206に進み、使用されるべき現時のサブ鍵のセットを待ち、それは一般に1つのKASUMIラウンドが生じるのに必要な時間となる。この時間の間、ラウンド1に対応するサブ鍵の1セットが有効になる。判定ブロック1208に進む。
【0070】
判定ブロック1208において、iが8に等しければ、8番目である最後のKASUMIラウンドが実行されており、処理は終了ブロック1214において完了する。他のKASUMI演算が必要な場合は、開始1202に戻る。iが8未満の場合、新しいサブ鍵のセットを必要とする付加的なラウンドがある。ブロック1210に進み、サブ鍵シフトレジスタを巡回する。これは、図3において巡回信号をアサートにすることに相当し、図8について上述したように、シフトレジスタ810および820において8ビット左巡回を引き起こす。ブロック1212に進み、iを1だけ増加する。ブロック1206にループバックし、他のKASUMIラウンドのためにサブ鍵を供給する。終了ブロック1214に到達するまでステップを繰り返す。
【0071】
図13は、図3−8と上述した図9−12におけるフローチャートとについて述べた技術を組み込んだKASUMIを実行するステップを図示しているフローチャートである。図13のステップを用いる例示的な実施形態は、上述した図3におけるKASUMI300である。例示的なKASUMI300は、サブ鍵生成器310およびKASUMIラウンド330と共に、図13において述べた制御ステップを実行するKASUMI計算制御器320を用いることができる。サブ鍵生成器310は、図8において述べたサブ鍵生成器800のようなものとすることができる。KASUMIラウンド330は、図8において述べたKASUMIラウンド400のようなものとすることができる。KASUMIラウンド400は、図5および図6でそれぞれ述べたFL関数500およびFO関数600を用いることができる。FO関数600は、図7で述べたFI関数700を用いることができる。図13のフローチャートは開始1302で始まり、ブロック1304に進む。
【0072】
ブロック1304において、iは1に設定され、ここでiはラウンド番号を表わす。KASUMIラウンドへの入力は、これがラウンド1であるので、ラウンドを演算するために選択される。これは、図4に示したように、kasumi_input_selectを0に設定することに相当する。サブ鍵シフトレジスタがロードされる。例えば、図3におけるロード信号は、図8に示すサブ鍵生成器800に接続することができる。ロード信号がアサートにされると、サブ鍵生成器800は2つのシフトレジスタ810および820をロードする。
【0073】
判定ブロック1306に進むと、ここで、iで表わされた現時のラウンドが偶数または奇数であることを決定するために試験が実行される。iが奇数、すなわち1、3、5、または7である場合はブロック1308に進む。iが偶数、すなわち2、4、6、または8である場合はブロック1310に進む。ブロック1308において、KASUMIラウンドのデータフローは、(ラウンド1において)入力または(ラウンド3、5および7において)フィードバックから、FL関数へ、FO関数へ、XORゲートへと流れる構成となっている。これは、図4においてkasumi_data_flowを1に設定することに相当する。ブロック1310において、KASUMIラウンドのデータフローは、フィードバックから、FO関数へ、FL関数へ、XORゲートへと流れる構成となっている。これは、図4においてkasumi_data_flowを0に設定することに相当する。
【0074】
ブロック1308またはブロック1310から、KASUMIラウンドの演算を開始するためにブロック1312に進む。FI段およびFO段のようなラウンドのサブ関数を最初に述べたが、当業者が理解するように、これらの方法ステップは本発明の範囲を逸脱することなく交換することができる。
【0075】
ブロック1312において、FO関数が初期化される。jは1に設定され、ここでjは段番号を表わす。FO関数の入力は、これがFO段1であるので、FO関数を演算するために選択される。これは、図6に示したように、fo_input_selectを1に設定することに相当する。さらに、段番号jは、図3に示した信号subkey_selectに関連する。subkey_selectとjとの相関関係については、図10について上記で詳しく述べた。ブロック1314に進み、FI関数を実行する。
【0076】
ブロック1314において、入力がFI関数を演算するために選択され、これは図7においてfi_input_selectを1に設定することに相当する。ブロック1316に進み、ここでFI関数の1/2が演算される。FI関数の1/2を演算することができる一実施形態が図7に図示されているが、他も図13のフローチャートの範囲内である。ブロック1318に進み、ブロック1316で計算されたFIの前半の結果をラッチする。ブロック1320に進み、ここでFIフィードバックがFI関数を演算するために選択され、これは図7においてfi_input_selectを0に設定することに相当する。ブロック1322に進み、ここでFIの後半が演算される。ブロック1324に進み、FO処理を続け、FI演算が完了する。
【0077】
ブロック1324において、FO関数の1/3が演算される。FO関数の1/3を演算することができる一実施形態が図6に図示されているが、他も図13のフローチャートの範囲内である。1/3計算の結果は、ラッチFO結果ブロック1326において格納される。これは、図6においてfo_output_enをアサートにすることに相当する。次に判定ブロック1328に進み、jが3に等しいか試験を行う。もしそうなら、次にFO処理が完了する。ブロック1334に進み、KASUMI処理を続ける。jが3未満の場合、さらなる段がまだ完了していない。ブロック1330に進み、jを1だけ増加する。次にブロック1332に進み、ここで、ブロック1326においてラッチされたFO結果であるフィードバックが、FO関数への入力として選択される。これは、図6においてfo_input_selectを0に設定することに相当する。ブロック1314にループバックし、次の段を計算し、全ての段が完了するまで処理を繰り返す。
【0078】
ブロック1334において、KASUMIラウンドを演算する。KASUMIラウンドを演算するための一実施形態は図4において詳細に示したが、KASUMIラウンドを演算するためのどの方法も、図13のフローチャートの範囲内である。ブロック1334で一度KASUMIラウンドが演算されると、その結果はラッチKASUMI結果ブロック1336において格納される。これは、図4に示すkasumi_reg_en信号をアサートにすることに相当する。判定ブロック1338に進む。
【0079】
判定ブロック1338において、iが8に等しければ、8番目である最後のラウンドが実行されており、処理はKASUMI終了ブロック1346において完了する。図3に示すような終了信号を用いる実施形態において、その信号はこの時点でアサートにすることができる。iが8未満の場合、実行されるべき付加的なラウンドがあり、それによりiはブロック1340において1だけ増加される。ブロック1342に進み、ここで、次のラウンドを演算するために、ブロック1336のラッチされた結果であるフィードバックが選択される。これは、図4においてkasumi_input_selectを1に設定することに相当する。次のラウンドでは新しいサブ鍵のセットを必要とし、そのためサブ鍵シフトレジスタを巡回するためにブロック1344に進む。これは、図3において巡回信号をアサートにすることに相当し、図8について上述したように、シフトレジスタ810および820において8ビット左巡回を引き起こす。判定ブロック1306にループバックし、次のラウンドを実行する。KASUMI終了ブロック1346に到達するまで、ステップを繰り返す。
【0080】
上述した全ての実施形態において、方法ステップは本発明の範囲を逸脱することなく交換することができることに留意すべきである。
【0081】
当業者は、任意の様々な各種テクノロジーと技術を用いて情報および信号を表わせることを理解する。例えば、上記説明を通じて参照することができるデータ、指示、コマンド、情報、信号、ビット、記号、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光粒子、あるいはそれらの組み合わせにより表わすことができる。
【0082】
さらに当業者には、本明細書中で開示した実施形態に関連して述べられた様々な実例となる論理ブロック、モジュール、回路、およびアルゴリズムステップを、電子ハードウェア、コンピュータソフトウェア、または両方の組み合わせとして実施できることが分かる。このハードウェアおよびソフトウェアの互換性を明らかに示すために、様々な実例となる構成要素、ブロック、モジュール、回路、およびステップを、それらの機能性の点から広く述べた。そのような機能性がハードウェアとして実施されるか、またはソフトウェアとして実施されるかは、システム全体に課せられた特定の用途と設計制約による。熟練した当業者は、各特定用途のために、上述した機能性を様々に実施することができるが、そのような実施の決定は本発明の範囲からの逸脱をもたらすと解釈するべきではない。
【0083】
本明細書中で開示した実施形態に関連して述べられた様々な実例となる論理ブロック、モジュール、および回路を、汎用プロセッサ、デジタル信号プロセッサ(DAP)、特定用途向け集積回路(ASIC)、現場でプログラム可能なゲートアレイ(FPGA)または他のプログラム可能論理回路、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェア部品、または本明細書中で述べた機能を実行するよう設計されたそれらの任意の組み合わせとともに実装または実行することができる。汎用プロセッサはマイクロプロセッサとすることができるが、別の方法では、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることができる。またプロセッサを、演算装置の組み合わせ、例えばDSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと連動する1つ以上のマイクロプロセッサ、あるいはそのような任意の他の構成として実施することができる。
【0084】
本明細書中で開示した実施形態に関連して述べた方法のステップすなわちアルゴリズムは、ハードウェア、プロセッサにより実行されるソフトウェアモジュール、またはその2つの組み合わせに直接組み入れることができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取り外し可能ディスク、CD−ROM、あるいは技術的に知られた他の任意の記憶媒体形態に常駐することができる。例示的な記憶媒体はプロセッサと結合され、そのようなプロセッサは記憶媒体から情報を読み出し、記憶媒体に情報を書き込むことができる。別の方法では、記憶媒体をプロセッサに一体化することができる。プロセッサと記憶媒体はASIC内に常駐することができる。ASICはユーザー端末内に常駐することができる。別の方法では、プロセッサと記憶媒体をディスクリート部品としてユーザー端末内に常駐することができる。
【0085】
上記で開示された実施形態の説明は、任意の当業者が本発明を行い使用できるように提供されている。これらの実施形態の様々な変更は当業者にとって容易に明らかとなり、明細書中で規定された一般的な原理は、本発明の特質と範囲を逸脱することなく他の実施形態に適用することができる。したがって、本発明は明細書中で示された実施形態に限定されることなく、明細書中で開示された原理と新規な特徴に沿う最も広い範囲に適合することになる。
【図面の簡単な説明】
【0086】
【図1】多数のユーザーをサポートできる無線通信システムを示す概略ブロック図。
【図2(a)】KASUMIを実行するのに必要な計算を図示する。
【図2(b)】KASUMIを実行するのに必要な計算を図示する。
【図2(c)】KASUMIを実行するのに必要な計算を図示する。
【図2(d)】KASUMIを実行するのに必要な計算を図示する。
【図3】KASUMIを実行する実施形態の概略ブロック図。
【図4】KASUMIラウンドの実施形態のブロック図。
【図5】FL関数の実施形態のブロック図。
【図6】FO関数の実施形態のブロック図。
【図7】FI関数の実施形態のブロック図。
【図8】サブ鍵生成器のブロック図。
【図9】KASUMIの一実施形態のフローチャート。
【図10】FO関数の一実施形態のフローチャート。
【図11】FI関数の一実施形態のフローチャート。
【図12】サブ鍵生成器の一実施形態のフローチャート。
【図13】KASUMIの他の実施形態の制御フローを示す図
【分野】
【0001】
本発明は、一般に通信に関し、特にKASUMI暗号化を行う新規で改善された方法および装置に関する。
【背景】
【0002】
無線通信システムは、音声、データ、その他の様々なタイプの通信を提供するために広く配備されている。これらのシステムは、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、または他のいくつかの変調技術に基づくことができる。CDMAシステムは、他のタイプのシステムよりも確かな利点を提供し、増加したシステム容量を含んでいる。
【0003】
CDMAシステムは、(1)「デュアルモード広帯域拡散スペクトルセルラシステムのためのTIA/EIA−95−B移動局―基地局互換性規格」(IS−95規格)、(2)「デュアルモード広帯域拡散スペクトルセルラ移動局のためのTIA/EIA−98−C勧告最低基準」(IS−98規格)、(3)「第3世代提携事業」(3GPP)という名の共同体により提案され、文献Nos.3G TS 25.211、3G TS 25.212、3G TS 25.213、および3G TS 25.214(W−CDMA規格)を含む文献のセットに具体化されている規格、(4)「第3世代提携事業2」(3GPP2)という名の共同体により提案され、「cdma2000拡散スペクトルシステムのためのTR−45.5物理レイヤ規格」、「cdma2000拡散スペクトルシステムのためのC.S0005−A上位レイヤ(レイヤ3)信号法規格」、および「C.S0024 cdma2000高速パケットデータ空中インターフェース仕様」(cdma2000規格)を含む文献のセットに具体化されている規格、および(5)他のいくつかの規格、といった1つ以上のCDMA規格に対応するように設計することができる。cdma2000規格の高速パケットデータ仕様を実施するシステムを、本明細書中では高速データレート(HDR)システムと称す。HDRシステムは、TIA/EIA−IS−856、「CDMA2000高速パケットデータ空中インターフェース仕様」に記録されている。また、提案された無線システムは、HDRと1つの空中インターフェースを使用する低速データレートサービス(例えば、音声サービスおよびファックスサービス)との組み合わせを提供する。
【0004】
暗号化技術は、送信データの安全性を提供するため、およびデータにアクセスしようとするユーザーに認証を提供するために、通常使用される。暗号化技術は、様々な分野で使用され、特にデジタル無線通信システムに有用である。
【0005】
W−CDMA規格用に指定された1つの暗号化アルゴリズムが、KASUMIである。KASUMIは、1999年12月23日付けのETSI/SAGE仕様書「3GPP機密性および完全性アルゴリズムの仕様」バージョン1.0の「文書2:KASUMI仕様」(以下、KASUMI仕様)に詳述されている。KASUMIの様々な用途が、同じETSI/SAGE仕様書において、「文書1:f8およびf9仕様」に詳述されている。KASUMIは、128ビット鍵を利用して64ビット入力から64ビット出力を生成するブロック暗号である。KASUMIの出力は、通常、鍵ストリームのビットと暗号化されるべきデータのビットとの排他的論理和(XOR)をとることにより、暗号化データに対する鍵ストリームとして使用することができる。
【0006】
通信システムのための技術では、その様々なサブ関数を実行するために、ASICまたは他のハードウェア解法を用いるのが一般的である。ASIC設計において、利用面積がより小さくなると、より低いコスト、より高い歩留まり、そして多くの場合はより低い電力につながる。低コストと低電力は、固定用途と移動用途の両方で有益であるが、低電力は、電池を利用する移動機器にとって特に重要である。同時に、処理はある制限時間内で完了しなければならない。W−CDMAシステムのような無線データシステムは、それらの加入者と基地局にKASUMIの実施を組み込む必要があり、設計者は、先に述べたことを含む様々な制約の中で作業する必要がある。このような事情により、KASUMI暗号化を効果的に行う装置および方法の技術的な必要性がある。
【発明の開示】
【概要】
【0007】
本明細書中で開示された実施形態は、効果的なKASUMI暗号化のための効果的な装置または方法の必要性に対処している。1つの観点において、KASUMI暗号の断片部分を生成する1つのKASUMIラウンドが、8つの連続したラウンドがKASUMI出力を生成するよう、適切なフィードバックをともなって配備される。他の観点において、3つの連続するサイクルがFO出力を生成するよう、FO関数の1/3が適切なフィードバックをともなって配備される。さらに他の観点において、2つの後続するサイクルがFI出力を生成するよう、FI関数が適切なフィードバックをともなって配備される。さらに他の観点において、2つのシフトレジスタを備えるサブ鍵生成器が、各ラウンドとそのサブ段用のサブ鍵を効果的に生成する。これらの観点は、簡単なユーザーインタフェースをともなうKASUMIにおいて、小面積や低コストの実現といった高い利点の実現を総合的にもたらす。本発明の他の様々な観点も提示される。
【0008】
本発明は、以下でさらに詳しく述べるように、本発明の様々な観点、実施形態、および特徴を実施する方法およびシステム要素を提供する。
【0009】
本発明の特徴、性質、および利点は、以下に述べる詳細な説明を図面とともに参照することでより明らかになる。図面全体を通じて同じ参照符号により対応付けがなされている。
【詳細な説明】
【0010】
図1は、多数のユーザーをサポートし、本発明の様々な観点を実施できる無線通信システム100を示す図である。システム100は、1つ以上のCDMA規格および/または設計(例えば、IS−95規格、cdma2000規格、HDR仕様、W−CDMA規格)をサポートするよう設計することができる。簡単にするために、システム100は、2つのアクセス端末106(遠隔端末または移動局と呼ぶこともできる)と通信する3つのアクセスポイント104(基地局と呼ぶこともできる)を含むよう図示している。アクセスポイントとそのカバレッジ領域は、まとめて「セル」と呼ばれることが多い。KASUMIアルゴリズムは、1つ以上のアクセスポイント、1つ以上のアクセス端末、またはそれら両方に配備することができる。
【0011】
実施中のCDMAシステムに応じて、各アクセス端末106は、任意の時点において、順方向リンク上で1つの(または場合によってはさらに多くの)アクセスポイント104と通信することができ、アクセス端末がソフトハンドオフにあるか否かに応じて、逆方向リンク上で1つ以上のアクセスポイントと通信することができる。順方向リンク(すなわち、ダウンリンク)は、アクセスポイントからアクセス端末への伝送を指しており、逆方向リンク(すなわちアップリンク)はアクセス端末からアクセスポイントへの伝送を指している。
【0012】
図2(a)−2(d)は、KASUMI仕様に規定されているKASUMIアルゴリズムを図示している。図2(a)は、KASUMI200の一番上のレベルの図を示している。図2(b)は、FO関数を示している。図2(c)は、FI関数を示している。図2(d)は、FL関数を示している。
【0013】
図2(a)に示すように、KASUMIは8つのラウンドからなる。各ラウンドは、1つのFL関数、1つのFO関数、および32ビットXOR関数から成り立っている。FL関数はFLiで表わされ、ここでiはどのラウンドを表わすかを示し、1から8までである。同様に、FO関数はFOiで表わされる。各ラウンドでは、KLi、KOi、およびKIiで表わされる様々なサブ鍵を利用する。KLiは、KLi,1およびKLi,2で表わされる2つの16ビットサブ鍵からなる32ビットサブ鍵である。KOiとKIiは、48ビットサブ鍵であり、それぞれKOi,1、KOi,2およびKOi,3と、KIi,1、KIi,2およびKIi,3とで表わされる3つの16ビットサブ鍵からなる。16ビットサブ鍵の用途については、以下で図2(b)−2(d)を基にさらに詳しく述べる。
【0014】
ラウンド1は、FL1・202、FO1・204、および32ビットのビットワイズXOR206を備えている。64ビット入力は2つの32ビットセグメントに分けられ、これらを左セグメントおよび右セグメントとして述べる。右セグメントは、XOR206においてFO1・204の出力と排他的論理和をとられ、ラウンド1の右出力を生成する。各ラウンドの右出力は、後に続くラウンドへの左入力となる。したがって、ラウンド1の右出力は左入力としてラウンド2に供給される。左入力セグメントはFL1・202に供給され、ここで、サブ鍵KL1を利用して、以下で述べるFL関数に従って処理される。FL1・202の出力は、これも以下で述べるFO関数に従ってKO1およびKI1とともに処理するために、FO1・204に供給される。いま述べたように、FO1・204の出力は、入力の右セグメントとビットワイズ排他的論理和をとるために、XOR206に供給される。また左入力セグメントは、右入力としてラウンド2に供給される。一般に、各ラウンドの左入力は、そのラウンドにおいて様々な処理に使用され、後に続くラウンドへの右入力となる。
【0015】
ラウンド2は、FL2・208、FO2・210、およびXOR212を備えている。ラウンド2は、関数FOとFLの順序が逆になることを除いて、ラウンド1と同様である。一般に、奇数のラウンドはFO関数に供給をするFL関数を有し、偶数のラウンドはFL関数に供給をするFO関数を有する。ラウンド2への右入力は、XOR212においてFL2・210の出力と排他的論理和をとられ、ラウンド2の右出力を生成する。既に述べたように、ラウンド2の右出力は左入力としてラウンド3に供給される。左入力セグメントは、FO関数に従ってKO2およびKI2とともに処理するために、FO2・208に供給される。FO2・208の出力は、FL関数に従ってKI2とともに処理するために、FL2・210に供給される。また左入力セグメントは、右入力としてラウンド3に供給される。
【0016】
ラウンド3、5、および7は、当然ながら各ラウンドへの入力がKASUMI入力ではなく前のラウンドの出力によるものであることを除いて、ラウンド1と同様に構成されている。ラウンド4、6、および8は、ラウンド2と同様に構成されている。
【0017】
ラウンド3において、XOR212の出力は、FL関数に従ってKL3とともに処理するために、FL3・214に供給される。FL3・214の出力は、FO関数に従ってKO3およびKI3とともに処理するために、FO3・216に供給される。FO3・216の出力は、XOR206の出力とビットワイズ排他的論理和をとるために、XOR・218に供給される。
【0018】
ラウンド4において、XOR218の出力は、FO関数に従ってKO4およびKI4とともに処理するために、FO4・220に供給される。FO4・220の出力は、FL関数に従ってKL4とともに処理するために、FL4・222に供給される。FL4・222の出力は、XOR212の出力とビットワイズ排他的論理和をとるために、XOR224に供給される。
【0019】
ラウンド5において、XOR224の出力は、FL関数に従ってKL5とともに処理するために、FL5・226に供給される。FL5・226の出力は、FO関数に従ってKO5およびKI5とともに処理するために、FO5・228に供給される。FO5・228の出力は、XOR218の出力とビットワイズ排他的論理和をとるために、XOR230に供給される。
【0020】
ラウンド6において、XOR230の出力は、FO関数に従ってKO6およびKI6とともに処理するために、FO6・232に供給される。FO6・232の出力は、FL関数に従ってKL6とともに処理するために、FL6・234に供給される。FL6・234の出力は、XOR224の出力とビットワイズ排他的論理和をとるために、XOR236に供給される。
【0021】
ラウンド7において、XOR236の出力は、FL関数に従ってKL7とともに処理するために、FL7・238に供給される。FL7・238の出力は、FO関数に従ってKO7およびKI7とともに処理するために、FO7・240に供給される。FO7・240の出力は、XOR230の出力とビットワイズ排他的論理和をとるために、XOR242に供給される。
【0022】
ラウンド8において、XOR242の出力は、FO関数に従ってKO8およびKI8とともに処理するために、FO8・244に供給される。FO8・244の出力は、FL関数に従ってKL8とともに処理するために、FL8・246に供給される。FL8・246の出力は、XOR236の出力とビットワイズ排他的論理和をとるために、XOR248に供給される。
【0023】
XOR248の出力とXOR242の出力とは、図2(a)においてCと記された64ビットのKASUMI出力を生成するために連結される。
【0024】
図2(b)は、上述したFO関数を実行する計算ステップを図示している。FO関数は32ビット入力を取り入れ、それをそれぞれ左入力と右入力の2つの16ビットセグメントに分ける。留意すべきは、FO関数は3つの段を含んでおり、それらは以下で詳しく述べるように、それぞれ2つの16ビットビットワイズ排他的論理和とFIi1、FIi2、およびFIi3で示される関数FIiのインスタンスとを含んでいることである。この説明において、図2(a)について上述した各ラウンドに1つのFO関数があるので、iはラウンド番号に相当する。
【0025】
関数FOの第1段において、左16ビット入力は、XOR250において16ビットサブ鍵KOi,1とビットワイズ排他的論理和をとられる。上述したように、KOi,1は48ビットサブ鍵KOiの16ビットサブ鍵である。また、KOi,2とKOi,3は、KOiの16ビットサブ鍵である。XOR250の出力は、以下で述べるFI関数に従ってKIi,1とともに処理するために、FIi1・252に供給される。上述したように、KIi,1は48ビットサブ鍵KIiの16ビットサブ鍵である。また、KIi,2とKIi,3は、KIiの16ビットサブ鍵である。FIi1・252の出力は、右入力と16ビットビットワイズ排他的論理和をとるために、XOR254に供給される。
【0026】
関数FOの第2段において、右入力は、サブ鍵KOi,2と16ビットビットワイズ排他的論理和をとるために、XOR256に供給される。その結果は、FI関数に従ってKIi,2とともに処理するために、FIi2・258に供給される。FIi2・258の出力は、XOR254の出力と16ビットビットワイズ排他的論理和をとるために、XOR260に供給される。
【0027】
関数FOの第3段において、XOR254の出力は、サブ鍵KOi,3と16ビットビットワイズ排他的論理和をとるために、XOR262に供給される。その結果は、FI関数に従ってKIi,3とともに処理するために、FIi3・264に供給される。FIi3・264の出力は、XOR260の出力と16ビットビットワイズ排他的論理和をとるために、XOR266に供給される。XOR260の出力は、図2(b)においてFOと記された関数の出力を生成するために、XOR266の出力と連結される。
【0028】
図2(c)は、上述したFI関数を実行する計算ステップを図示している。FI関数は16ビット入力を取り入れ、それを9ビットセグメントと7ビットセグメントとに分ける。FI関数は、同一の処理を有する2つの段を含んでおり、この2つの段の間にXOR276およびXOR286で識別されるXORステップを有している。留意すべきは、図2(c)における濃い線は9ビットパスを識別するのに用いられ、薄い線は7ビットパスを識別するのに用いられていることである。
【0029】
第1段において、9ビット入力セグメントは、以下でさらに詳しく述べるように、処理のために関数S9・268に供給される。7ビット入力セグメントは、ゼロ拡張され、XOR270においてS9・268の出力と排他的論理和をとられる。また、7ビット入力セグメントは、以下でさらに詳しく述べるように、処理のために関数S7・272に供給される。XOR270の9ビット出力は、7ビットに切り捨てられ、XOR274においてS7・272の出力と排他的論理和をとられる。
【0030】
XOR276において、XOR274の出力は、サブ鍵KIi,j,1とビットワイズ排他的論理和をとられる。KIi,j,1はKIi,jの7ビットサブ鍵であり、ここでiはラウンド番号を示し、jはFI関数が呼び出されるFO段番号を示し、1はそれがKIi,jの1番目のサブ鍵であることを示す。XOR286において、XOR270の出力は、9ビットサブ鍵KIi,j,2とビットワイズ排他的論理和をとられる。KIi,j,2は、KIi,jの2番目のサブ鍵である。
【0031】
XOR276の出力とXOR286の出力は、関数F1の第2段への入力となる。XOR286の9ビット出力は、処理のために関数S9・278に供給される。XOR276の7ビット出力は、ゼロ拡張され、XOR280においてS9・278の出力と排他的論理和をとられる。また、XOR276の出力は関数S7・282に供給される。XOR280の9ビット出力は、7ビットに切り捨てられ、XOR284においてS7・282の出力と排他的論理和をとられる。XOR284の7ビット出力は、XOR280の9ビット出力と連結され、FIと記される16ビット出力を形成する。
【0032】
関数S7は、KASUMI仕様で規定される。これは、7ビット入力を取り入れ、7ビット出力を返す。以下の式1−7は、y0からy6までの各出力ビットを、x0からx6までの7つの入力ビットの関数として定義する。x1x3のような2つのオペランドの連結は、オペランドの論理積(すなわち、x1 AND x3)を示す。記号
【数1】
【0033】
は、排他的論理和関数を表わす。
【数2】
【0034】
関数S9は、KASUMI仕様で規定される。これは、9ビット入力を取り入れ、9ビット出力を返す。以下の式8−16は、y0からy8までの各出力ビットを、x0からx8までの9つの入力ビットの関数として定義する。x0x2のような2つのオペランドの連結は、オペランドの論理積(すなわち、x0 AND x2)を示す。記号
【数3】
【0035】
は、排他的論理和関数を表わす。
【数4】
【0036】
図2(d)は、図2(a)について上述したFL関数を図示している。32ビット入力は、2つの16ビットセグメントである左セグメントと右セグメントに分割される。左入力セグメントは、記号∩で表わされるANDゲート288において、KLi,1と、ビットワイズ論理積をとられる。ANDゲート288の出力は、記号<<<で表わされるローテータ290において、1ビット分左に巡回される。ローテータ290の出力は、XOR292において右入力セグメントとビットワイズ排他的論理和をとられる。XOR292の出力は、記号∪で表わされるORゲート298において、ビットワイズ論理和をとられる。ORゲート298の出力は、ローテータ296において1ビット分左に巡回される。ローテータ296の出力は、XOR294において左入力セグメントとビットワイズ排他的論理和をとられる。FLで表わされる32ビット出力は、XOR294の出力とXOR292の出力とを連結することにより形成される。
【0037】
KASUMIアルゴリズムは、いま述べたように、所望の結果を生成するために8つの計算ラウンドを必要とする。一実施形態において、単一のラウンドのためのハードウェアが配備され、8ラウンドのKASUMI出力を生成するために適切なフィードバックとともに再使用される。図3は、そのような例示的な実施形態を図示している。「例示的」という言葉は、ここでは専ら「一例、具体例、または例証となる」ことを意味するよう用いる。本明細書中で「例示的」に述べられたどの実施形態も、必ずしも他の実施形態よりも好ましくあるいは有利であるとして解釈すべきものではない。
【0038】
図3はKASUMI300を図示しており、これはサブ鍵生成器310、KASUMIラウンド330、およびKASUMI計算制御器320を備えている。KASUMIラウンド330は、サブ鍵生成器310からサブ鍵を受け入れる。KLi,1とKLi,2は、直接接続され、KOi,jおよびKIi,jは、それぞれmux340および350を介して供給される。mux340は、サブ鍵生成器310からKOi,1,KOi,2、およびKOi,3を受け入れる。mux350は、サブ鍵生成器310からKIi,1,KIi,2、およびKIi,3を受け入れる。mux340およびmux350からそれぞれKASUMIラウンド330に供給されるべきサブ鍵のセット、KOi,jおよびKIi,jは、KASUMI計算制御器320からの制御信号、subkey_selectによって決定される。全てのサブ鍵は、サブ鍵生成器310において、Kと記された128ビットの長さの鍵入力から生成される。またサブ鍵生成器310は、KASUMI計算制御器320からロード信号と巡回信号を受信する。サブ鍵生成については、以下でより十分に詳述する。
【0039】
KASUMI計算制御器320は、リセット信号と開始信号を入力として受け取る。KASUMI計算制御器320は、KASUMI出力が生成されたことを示す終了信号を生成する。そのような完了を示す信号は、任意である。他の実施形態では、完了時間がシステムの特性に基づいて分かっている場合に、そのような信号を除くことができる。例示的な実施形態における開始信号は、開始信号がストローブされたときに鍵Kおよび64ビット入力が有効となるように同期をとられる。KASUMIラウンド330の動作を制御するために、様々な信号が図3に示されている。kasumi_data_flow、kasumi_input_select、およびkasumi_output_reg_enが、KASUMIラウンド330内でラウンドレベルの機能を制御するために用いられる。fo_input_selectとfo_output_reg_enは、KASUMIラウンド330内でFO関数を制御するために用いられる。fi_input_selectとfi_output_reg_enは、KASUMIラウンド330内でFI関数を制御するために用いられる。例示的な実施形態では、FI関数を制御するのに1つの制御信号のみが必要とされるので、これら最後の2つの信号は同一になっている。これらの信号のサブセットは、様々な実施形態がどのように配備されるかによって必要となることがある。メモリとフィードバック回路を制御するための様々なシグナリング方式は技術的に知られており、本発明の範囲内である。必要とされる制御の詳細な説明は、以下に提供されている。
【0040】
KASUMIラウンド330は、いま述べた制御信号とサブ鍵に加えて、64ビット出力を生成する64ビット入力を受け入れる(その計算は、図2(a)−2(d)を基に詳しく述べた)。
【0041】
図4はKASUMIラウンド400を図示しており、これはいま述べたKASUMIラウンド330の例示的な実施形態である。KASUMIラウンド400において、64ビット入力inは、上半分(63:32)と下半分(31:0)の2つの32ビットセグメントに分割される。上半分は、mux405の入力に接続される。下半分は、mux410の入力に接続される。2つのレジスタ445および450は、kasumi_output_reg_enがアサートにされた場合に、KASUMIラウンド400内で演算された結果をラッチし、レジスタ445の出力とレジスタ450の出力は、64ビット出力outを生成するために連結される。それに加えて、レジスタ445の出力はmux410の入力としてフィードバックされ、レジスタ450の出力はmux405の入力としてフィードバックされる。mux405および410はkasumi_input_selectにより制御され、これは、アサートにされない場合にinが選択され、アサートにされる場合にフィードバック結果が選択されるようにする。mux405および410は、入力とレジスタ445および450により形成されるメモリの内容との間で選択を行うセレクタとして共に動作する。このようにKASUMIラウンド400は、inが選択された場合に、最初のKASUMIのラウンドを実行し、前のラウンドの結果がフィードバックされた場合に、後に続くKASUMIのラウンドを実行するのに利用することができる。
【0042】
図2(a)−2(d)に関して上述したように、KASUMIラウンドの処理の核心は、FL関数425、FO関数430、およびXOR440において実行される。しかしながら、上述したように、関数はそれぞれ各ラウンドで使われるので、処理順序はラウンドによって異なる。3つのmux415、420、および435は、後に続くKASUMIの各ラウンドにおいて構成要素を再使用するのに必要な切り換えを提供する。FL関数425、FO関数430、XOR440と、mux415、420、および435とは、共に部分的なラウンド計算部の一実施形態を形成する。mux405の出力から供給されるmux415への入力からなり、XOR440の出力に連結される部分的なラウンド計算部の出力は、レジスタ445および450により形成されたメモリ内に格納される。部分的なラウンド計算部への入力は、mux405および410により形成されたセレクタの出力から発せられる。いま述べたセレクタ、部分的なラウンド計算部、およびメモリの多くの回路実装は、当業者にとって容易に明らかとなる。これらの実施形態は、どれも本発明の範囲内である。
【0043】
3つのmux415、420、および435は、偶数および奇数ラウンド計算用のKASUMIラウンドを構成するためのデータフローセレクタを構成する。それらは、全てセレクタ信号kasumi_data_flowにより制御される。mux415は、kasumi_data_flowがアサートにされた場合にmux405の出力を選択し、kasumi_data_flowが非アサートにされた場合に関数FO430のフィードバック出力を選択する。mux420は、kasumi_data_flowが非アサートにされた場合にレジスタ445の出力を選択し、kasumi_data_flowがアサートにされた場合に関数FL425のフィードバック出力を選択する。mux415の出力は関数FL425に供給され、関数FL425の出力はmux435に供給される。mux420の出力は、関数FO430に供給され、関数FO430の出力もmux435に供給される。mux435は、kasumi_data_flowが非アサートにされた場合に関数FL425の出力を選択し、kasumi_data_flowがアサートにされた場合に関数FO430の出力を選択する。mux435の出力は、in入力としてビットワイズXOR440に供給される。ビットワイズXOR440の他方の入力は、mux410の出力である。上述したレジスタ450への入力は、XOR440の出力である。上述したレジスタ445への入力は、mux405の出力である。当業者は、制御信号kasumi_input_select、kasumi_data_flow、およびkasumi_outout_reg_enの適切な操作を結びつけた図4に図示する構成を、図2(a)について上述した所望のKASUMI計算を実行するのに用いることができることを認識できる。本実施形態のための制御シグナリングについては、以下でさらに詳しく述べる。
【0044】
図5は、図4について上述した関数FL425として用いるのに適したFL関数500の実施形態を図示している。FL関数500は、32ビット入力inを受け入れ、32ビット出力outを生成する。inの上半分(ビット31から16まで)は、ANDゲート510においてサブ鍵KLi,1とビットワイズ論理積をとられる。ANDゲート510の出力は、ローテータ520において1ビット左に巡回される。ローテータ520の出力は、XOR530において入力の下半分(ビット15から0まで)とビットワイズ排他的論理和をとられる。XOR530の結果は、ORゲート540においてサブ鍵KLi,2とビットワイズ論理和をとられる。ORゲート540の出力は、ローテータ550において1ビット左に巡回される。ローテータ550の出力は、XOR560において入力の上半分とビットワイズ排他的論理和をとられる。XOR560の出力は、32ビット出力outを生成するためにXOR530の出力と連結される。
【0045】
図6は、図4について上述した関数FO430として用いるのに適したFO関数600の実施形態を図示している。FO関数600は、32ビット入力inを受け入れ、32ビット出力outを生成する。本実施形態では、上述した3つのFO段のうちの1つのための構成要素が配備されている。レジスタと適切なフィードバックにより、単一の段を連続して3回用いて、FO出力を生成することができるようになる。
【0046】
2つのレジスタ660および670は、fo_output_reg_enがアサートにされた場合に、中間計算値を格納する。レジスタ660の出力は、mux620の入力として供給される。レジスタ670の出力は、mux610の入力として供給される。入力inの上半分は、mux610への他方の入力となる。入力inの下半分は、mux620への他方の入力となる。信号fo_input_selectは、mux610および620に、それぞれ入力inとレジスタ660および670からのフィードバック値との間で選択を行うよう指示する。mux610の出力は、XOR630においてサブ鍵KOi,jとビットワイズ排他的論理和をとられる。XOR630の出力は、関数FI640に供給され、以下でさらに詳しく述べるように、サブ鍵KOi,jとともに処理される。関数FI640の出力は、XOR650においてmux620の出力とビットワイズ排他的論理和をとられる。XOR650の出力は、上述したように、レジスタ660への入力として供給される。mux620の出力は、上述したように、入力としてレジスタ670に供給される。mux620の出力は、32ビット出力outを形成するためにXOR650の出力と連結される。
【0047】
レジスタ660とレジスタ670はメモリを形成する。mux610とmux620はセレクタを形成する。XOR630、FI関数640、およびXOR650は、部分的なFO計算部を形成する。セレクタは、入力を部分的なFO計算部へ供給するために、入力とメモリ結果との間で選択を行う。部分的なFO計算部の出力は、メモリに格納される。いま述べたセレクタ、部分的なFO計算部、およびメモリの多くの回路実装は、当業者にとって容易に明らかとなる。これらの実施形態は、どれも本発明の範囲内である。
【0048】
図7は、図6について上述した関数FI640として用いるのに適したFI関数700の実施形態を図示している。FI関数700は、16ビット入力inを受け入れ、16ビット出力outを生成する。本実施形態では、上述した2つのFI段のうちの1つのための構成要素が配備されている。レジスタと適切なフィードバックにより、単一の段を連続して2回用いて、FI出力を生成することができるようになる。
【0049】
2つのレジスタ745および750は、fi_output_reg_enがアサートにされた場合に、中間計算値を格納するのに用いられる。9ビットレジスタ745の出力は、入力としてmux705に供給される。7ビットレジスタ750の出力は、入力としてmux710に供給される。入力inの上位9ビットは、mux705への他方の入力となる。入力inの下位7ビットは、mux710への他方の入力となる。信号fi_input_selectは、mux705および710に、それぞれ入力inとレジスタ745および750からのフィードバック値との間で選択を行うよう指示する。mux705の出力は、上述したように関数S9・715における処理のために供給される。関数S9・715の出力は、XOR720においてmux710のゼロ拡張出力とビットワイズ排他的論理和をとられる。またmux710の出力は、関数S7・725における処理のために供給される。関数S7・725の出力は、XOR730において、XOR720の切り捨てられた出力とビットワイズ排他的論理和をとられる。XOR720の出力は、XOR735においてサブ鍵KIi,j,2とビットワイズ排他的論理和をとられる。XOR730の出力は、XOR740においてサブ鍵KIi,j,1とビットワイズ排他的論理和をとられる。XOR735の出力は、上述したように、入力としてレジスタ745に供給される。XOR740の出力は、上述したように、入力としてレジスタ750に供給される。XOR730の出力は、16ビット出力outを生成するためにXOR720の出力と連結される。
【0050】
本実施形態において留意すべきは、信号fi_input_selectと信号fi_output_reg_enは同一であり、これにより、共通の信号をmux705、mux710、レジスタ745、およびレジスタ750の間で共用できることである。他の実施形態において、各FI処理サイクルがクロック制御レジスタ745および750の1つのサイクルに相当する場合は、これらのレジスタでイネーブル信号は必要ない。レジスタは、XOR735とXOR740の結果を、それらがFIの後半の計算に用いられる1サイクル分遅らせるだけである。これらのような様々な技術は用いることができ、技術的に周知である。
【0051】
レジスタ745とレジスタ750はメモリを形成する。mux705とmux710はセレクタを形成する。関数S9・715、XOR720、関数S7・725、ならびに、XOR730、735、および740は、部分的なFI計算部を形成する。セレクタは、入力を部分的なFI計算部へ供給するために、入力とメモリ結果との間で選択を行う。部分的なFI計算部の出力である中間値は、メモリに格納される。それに加えて、XOR720およびXOR730の出力はFI出力にもなる。いま述べたセレクタ、部分的なFI計算部、およびメモリの多くの回路実装は、当業者にとって容易に明らかとなる。これらの実施形態は、どれも本発明の範囲内である。
【0052】
図8は、サブ鍵生成器800を図示している。サブ鍵生成器800は、128ビット鍵Kを受け入れ、ロード信号および巡回信号と共に上述した様々なサブ鍵を生成する。サブ鍵生成器800は、2つの128ビットシフトレジスタ810および820を含む。これらは、どちらもロード信号がアサートにされた場合に並列ロード可能であり、巡回信号がアサートにされた場合に8ビット左巡回を実行する。ロード信号は、KASUMI計算の初めに1度アサートにされる。巡回信号は、各ラウンドが完了した後に、次のラウンド用の新しいサブ鍵を作成するためにイネーブルになる。これらの制御信号の他の制御信号との関連についての説明は、より詳しく以下で述べる。
【0053】
留意すべきは、これらの巡回可能シフトレジスタを実施する多くの方法は、当業者にとって容易に明らかとなることである。例えば、シフトアウトされたビットを入力として第1段にフィードバックすることにより、シフトレジスタを巡回シストレジスタにすることができる。そのような巡回シストレジスタは、8ビット左巡回を生成するために8回シフトすることができる。あるいは、各シフトが各ビットを8桁分巡回(すなわち、バイトワイズ左巡回)するように、シフトレジスタを配線することができる。この代替は、8つのインターリーブ16ビットシフトレジスタを実施することに相当し、それらの出力がそれらの各入力にフィードバックされるよう構成される。
【0054】
シフトレジスタ820は、K1からK8まで名付けられた8つの16ビットのセクションから成る。K(127:112)はK1用のロード入力となる。K(111:96)はK2用のロード入力となる。K(95:80)はK3用のロード入力となる。K(79:64)はK4用のロード入力となる。K(63:48)はK5用のロード入力となる。K(47:32)はK6用のロード入力となる。K(31:16)はK7用のロード入力となる。K(15:0)はK8用のロード入力となる。
【0055】
シフトレジスタ810は、K1’からK8’まで名付けられた8つの16ビットのセクションから成る。シフトレジスタ810用のロード入力は、Kの様々なセグメントと、KASUMI仕様で規定される定数C1からC8までとのビットワイズ排他的論理和をとることにより形成される。表1は、これら定数の値を提供している。
【表1】
【0056】
K1’へのロード入力は、XOR801において、K(127:112)とC1とのビットワイズ排他的論理和をとることにより生成される。K2’へのロード入力は、XOR802において、K(111:96)とC2とのビットワイズ排他的論理和をとることにより生成される。K3’へのロード入力は、XOR803において、K(95:80)とC3とのビットワイズ排他的論理和をとることにより生成される。K4’へのロード入力は、XOR804において、K(79:64)とC4とのビットワイズ排他的論理和をとることにより生成される。K5’へのロード入力は、XOR805において、K(63:48)とC5とのビットワイズ排他的論理和をとることにより生成される。K6’へのロード入力は、XOR806において、K(47:32)とC6とのビットワイズ排他的論理和をとることにより生成される。K7’へのロード入力は、XOR807において、K(31:16)とC7とのビットワイズ排他的論理和をとることにより生成される。K8’へのロード入力は、XOR808において、K(15:0)とC8とのビットワイズ排他的論理和をとることにより生成される。当然ながら、各XOR801−808は、オペランドの1つとして定数を有するので、128XORの各々は、対応する定数が「0」の場合に配線と交換することができ、対応する定数が「1」の場合にインバータと交換することができる。
【0057】
いくつかのサブ鍵は、シフトレジスタ810から直接引き出される。KLi,2はK3’から引き出される。KIi,2はK4’から引き出される。KIi,1はK5’から引き出される。KIi,3はK8’から引き出される。他のサブ鍵は、シフトレジスタ820の様々なセグメントを巡回することにより生成される。KLi,1は、ローテータ830においてK1を1ビット分左に巡回することにより生成される。KOi,1は、ローテータ840においてK2を5ビット分左に巡回することにより生成される。KOi,2は、ローテータ850においてK6を8ビット分左に巡回することにより生成される。KOi,3は、ローテータ860においてK7を13ビット分左に巡回することにより生成される。留意すべきは、これらローテータの各々は定数値分巡回するので、各巡回は簡単なワイヤ・マッピングによって達成できることである。当業者は、そのようなワイヤ・マッピングがどのように実施されるべきかを認識でき、巡回のための様々な他の技術も認識できる。
【0058】
図9は、KASUMIの一実施形態において実行されるステップを詳細に示したフローチャートである。さらに、これらのステップは、図3について述べたような実施形態が配備されている場合に、KASUMI計算制御器320により利用することができる。これらのステップは、図4について述べたKASUMIラウンド400のような実施形態に適用することもできる。
【0059】
開始902で処理が始まり、ブロック904に進む。ブロック904において、iは1に設定され、ここでiはラウンド番号を表わす。KASUMIラウンドの入力は、これがラウンド1であるので、ラウンドを演算するために選択される。これは、図4に示したように、kasumi_input_selectを0に設定することに相当する。ブロック判定ブロック906に進むと、ここで、iで表わされた現時のラウンドが偶数または奇数であることを決定するために試験が実行される。iが奇数、すなわち1、3、5、または7である場合はブロック908に進む。iが偶数、すなわち2、4、6、または8である場合はブロック910に進む。
【0060】
ブロック908において、KASUMIラウンドのデータフローは、(ラウンド1において)入力または(ラウンド3、5および7において)フィードバックから、FL関数へ、FO関数へ、XORゲートへと流れる構成となっている。これは、図4においてkasumi_data_flowを1に設定することに相当する。
【0061】
ブロック910において、KASUMIラウンドのデータフローは、フィードバックから、FO関数へ、FL関数へ、XORゲートへと流れる構成となっている。これは、図4においてkasumi_data_flowを0に設定することに相当する。
【0062】
ブロック908またはブロック910から、KASUMIラウンドを演算するためにブロック912に進む。KASUMIラウンドを演算するための一実施形態は図4において詳細に示したが、KASUMIラウンドを演算するためのどの方法も、図9のフローチャートの範囲内である。一度KASUMIラウンドが演算されると、その結果はラッチ結果ブロック914において格納される。これは、図4に示すkasumi_reg_en信号をアサートにすることに相当する。判定ブロック916に進む。
【0063】
判定ブロック916において、iが8に等しければ、8番目である最後のラウンドが実行されており、処理はKASUMI終了ブロック922において完了する。図3に示すような終了信号を用いる実施形態において、その信号はこの時点でアサートにすることができる。iが8未満の場合、実行されるべき付加的なラウンドがあり、それによりiはブロック918において1だけ増加される。ブロック920に進み、ここで、次のラウンドを演算するために、ブロック914のラッチされた結果からのフィードバックが選択される。これは、図4においてkasumi_input_selectを1に設定することに相当する。判定ブロック906にループバックし、次のラウンドを実行する。KASUMI終了ブロック922に達するまで、ステップを繰り返す。
【0064】
図10は、FO関数の一実施形態において実行されるステップを詳細に示したフローチャートである。さらに、これらのステップは、図3について述べたような実施形態が配備されている場合に、KASUMI計算制御器320により利用することができる。これらのステップは、図6について述べたFO関数600のような実施形態に適用することもできる。
【0065】
開始1002で処理が始まり、ブロック1004に進む。ブロック1004において、jは1に設定され、ここでjは段番号を表わす。FO関数の入力は、これが段1であるので、演算をするために選択される。これは、図6に示したように、fo_input_selectを1に設定することに相当する。さらに、段番号jは、図3に示した信号subkey_selectに関連する。(いくつかの実施形態では、subkey_select値0、1、および2は、jの値1、2、および3に相当する。あるいは、jの値と同一のsubkey_select値1、2、および3に基づいて選択を行う3つの入力muxを配備することができる。)
ブロック1006に進み、ここでFO関数の1/3が演算される。FO関数の1/3を演算できる一実施形態が図6に図示されているが、他も図10のフローチャートの範囲内である。1/3計算の結果は、ラッチ結果ブロック1008において格納される。これは、図6においてfo_output_enをアサートにすることに相当する。次に判定ブロック1010に進み、jが3に等しいか試験を行う。もしそうなら、次にFO完了ブロック1016に進み、FO関数は完了される。jが3未満の場合、さらなる段がまだ完了されていない。ブロック1012に進み、jを1だけ増加する。次にブロック1014に進み、ここで、ブロック1008においてラッチされた結果であるフィードバックが、FO関数への入力として選択される。これは、図6においてfo_input_selectを0に設定することに相当する。ブロック1006にループバックし、次の段を計算し、全ての段が完了するまで処理を繰り返す。
【0066】
図11は、FI関数の一実施形態において実行されるステップを詳細に示したフローチャートである。さらに、これらのステップは、図3について述べたような実施形態が配備されている場合に、KASUMI計算制御器320により利用することができる。これらのステップは、図7について述べたFI関数700のような実施形態に適用することもできる。
【0067】
開始1102で処理が始まり、ブロック1104に進む。ブロック1104において、入力が演算のために選択され、これは図7においてfi_input_selectを1に設定することに相当する。ブロック1106に進み、ここでFI関数の1/2が演算される。ブロック1108に進み、ブロック1106において計算されたFIの前半の結果をラッチする。ブロック1110に進み、ここでフィードバックが演算のために選択され、これは図7においてfi_input_selectを0に設定することに相当する。ブロック1112に進み、ここでFIの後半が演算される。ブロック1114に進み、FI演算は完了する。
【0068】
図12は、図8について上述したもののようなサブ鍵生成器の実施形態を制御するために実行されるステップを詳細に示したフローチャートである。さらに、これらのステップは、図3について述べたような実施形態が配備されている場合に、KASUMI計算制御器320により利用することができる。
【0069】
開始1202で処理が始まり、ブロック1204に進む。ブロック1204において、iは1に設定され、ここでiはラウンド番号を表わす。サブ鍵シフトレジスタがロードされる。例えば、図3におけるロード信号は、図8に示すサブ鍵生成器800に接続することができる。ロード信号がアサートにされると、サブ鍵生成器800は2つのシフトレジスタ810および820をロードする。ブロック1206に進み、使用されるべき現時のサブ鍵のセットを待ち、それは一般に1つのKASUMIラウンドが生じるのに必要な時間となる。この時間の間、ラウンド1に対応するサブ鍵の1セットが有効になる。判定ブロック1208に進む。
【0070】
判定ブロック1208において、iが8に等しければ、8番目である最後のKASUMIラウンドが実行されており、処理は終了ブロック1214において完了する。他のKASUMI演算が必要な場合は、開始1202に戻る。iが8未満の場合、新しいサブ鍵のセットを必要とする付加的なラウンドがある。ブロック1210に進み、サブ鍵シフトレジスタを巡回する。これは、図3において巡回信号をアサートにすることに相当し、図8について上述したように、シフトレジスタ810および820において8ビット左巡回を引き起こす。ブロック1212に進み、iを1だけ増加する。ブロック1206にループバックし、他のKASUMIラウンドのためにサブ鍵を供給する。終了ブロック1214に到達するまでステップを繰り返す。
【0071】
図13は、図3−8と上述した図9−12におけるフローチャートとについて述べた技術を組み込んだKASUMIを実行するステップを図示しているフローチャートである。図13のステップを用いる例示的な実施形態は、上述した図3におけるKASUMI300である。例示的なKASUMI300は、サブ鍵生成器310およびKASUMIラウンド330と共に、図13において述べた制御ステップを実行するKASUMI計算制御器320を用いることができる。サブ鍵生成器310は、図8において述べたサブ鍵生成器800のようなものとすることができる。KASUMIラウンド330は、図8において述べたKASUMIラウンド400のようなものとすることができる。KASUMIラウンド400は、図5および図6でそれぞれ述べたFL関数500およびFO関数600を用いることができる。FO関数600は、図7で述べたFI関数700を用いることができる。図13のフローチャートは開始1302で始まり、ブロック1304に進む。
【0072】
ブロック1304において、iは1に設定され、ここでiはラウンド番号を表わす。KASUMIラウンドへの入力は、これがラウンド1であるので、ラウンドを演算するために選択される。これは、図4に示したように、kasumi_input_selectを0に設定することに相当する。サブ鍵シフトレジスタがロードされる。例えば、図3におけるロード信号は、図8に示すサブ鍵生成器800に接続することができる。ロード信号がアサートにされると、サブ鍵生成器800は2つのシフトレジスタ810および820をロードする。
【0073】
判定ブロック1306に進むと、ここで、iで表わされた現時のラウンドが偶数または奇数であることを決定するために試験が実行される。iが奇数、すなわち1、3、5、または7である場合はブロック1308に進む。iが偶数、すなわち2、4、6、または8である場合はブロック1310に進む。ブロック1308において、KASUMIラウンドのデータフローは、(ラウンド1において)入力または(ラウンド3、5および7において)フィードバックから、FL関数へ、FO関数へ、XORゲートへと流れる構成となっている。これは、図4においてkasumi_data_flowを1に設定することに相当する。ブロック1310において、KASUMIラウンドのデータフローは、フィードバックから、FO関数へ、FL関数へ、XORゲートへと流れる構成となっている。これは、図4においてkasumi_data_flowを0に設定することに相当する。
【0074】
ブロック1308またはブロック1310から、KASUMIラウンドの演算を開始するためにブロック1312に進む。FI段およびFO段のようなラウンドのサブ関数を最初に述べたが、当業者が理解するように、これらの方法ステップは本発明の範囲を逸脱することなく交換することができる。
【0075】
ブロック1312において、FO関数が初期化される。jは1に設定され、ここでjは段番号を表わす。FO関数の入力は、これがFO段1であるので、FO関数を演算するために選択される。これは、図6に示したように、fo_input_selectを1に設定することに相当する。さらに、段番号jは、図3に示した信号subkey_selectに関連する。subkey_selectとjとの相関関係については、図10について上記で詳しく述べた。ブロック1314に進み、FI関数を実行する。
【0076】
ブロック1314において、入力がFI関数を演算するために選択され、これは図7においてfi_input_selectを1に設定することに相当する。ブロック1316に進み、ここでFI関数の1/2が演算される。FI関数の1/2を演算することができる一実施形態が図7に図示されているが、他も図13のフローチャートの範囲内である。ブロック1318に進み、ブロック1316で計算されたFIの前半の結果をラッチする。ブロック1320に進み、ここでFIフィードバックがFI関数を演算するために選択され、これは図7においてfi_input_selectを0に設定することに相当する。ブロック1322に進み、ここでFIの後半が演算される。ブロック1324に進み、FO処理を続け、FI演算が完了する。
【0077】
ブロック1324において、FO関数の1/3が演算される。FO関数の1/3を演算することができる一実施形態が図6に図示されているが、他も図13のフローチャートの範囲内である。1/3計算の結果は、ラッチFO結果ブロック1326において格納される。これは、図6においてfo_output_enをアサートにすることに相当する。次に判定ブロック1328に進み、jが3に等しいか試験を行う。もしそうなら、次にFO処理が完了する。ブロック1334に進み、KASUMI処理を続ける。jが3未満の場合、さらなる段がまだ完了していない。ブロック1330に進み、jを1だけ増加する。次にブロック1332に進み、ここで、ブロック1326においてラッチされたFO結果であるフィードバックが、FO関数への入力として選択される。これは、図6においてfo_input_selectを0に設定することに相当する。ブロック1314にループバックし、次の段を計算し、全ての段が完了するまで処理を繰り返す。
【0078】
ブロック1334において、KASUMIラウンドを演算する。KASUMIラウンドを演算するための一実施形態は図4において詳細に示したが、KASUMIラウンドを演算するためのどの方法も、図13のフローチャートの範囲内である。ブロック1334で一度KASUMIラウンドが演算されると、その結果はラッチKASUMI結果ブロック1336において格納される。これは、図4に示すkasumi_reg_en信号をアサートにすることに相当する。判定ブロック1338に進む。
【0079】
判定ブロック1338において、iが8に等しければ、8番目である最後のラウンドが実行されており、処理はKASUMI終了ブロック1346において完了する。図3に示すような終了信号を用いる実施形態において、その信号はこの時点でアサートにすることができる。iが8未満の場合、実行されるべき付加的なラウンドがあり、それによりiはブロック1340において1だけ増加される。ブロック1342に進み、ここで、次のラウンドを演算するために、ブロック1336のラッチされた結果であるフィードバックが選択される。これは、図4においてkasumi_input_selectを1に設定することに相当する。次のラウンドでは新しいサブ鍵のセットを必要とし、そのためサブ鍵シフトレジスタを巡回するためにブロック1344に進む。これは、図3において巡回信号をアサートにすることに相当し、図8について上述したように、シフトレジスタ810および820において8ビット左巡回を引き起こす。判定ブロック1306にループバックし、次のラウンドを実行する。KASUMI終了ブロック1346に到達するまで、ステップを繰り返す。
【0080】
上述した全ての実施形態において、方法ステップは本発明の範囲を逸脱することなく交換することができることに留意すべきである。
【0081】
当業者は、任意の様々な各種テクノロジーと技術を用いて情報および信号を表わせることを理解する。例えば、上記説明を通じて参照することができるデータ、指示、コマンド、情報、信号、ビット、記号、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光粒子、あるいはそれらの組み合わせにより表わすことができる。
【0082】
さらに当業者には、本明細書中で開示した実施形態に関連して述べられた様々な実例となる論理ブロック、モジュール、回路、およびアルゴリズムステップを、電子ハードウェア、コンピュータソフトウェア、または両方の組み合わせとして実施できることが分かる。このハードウェアおよびソフトウェアの互換性を明らかに示すために、様々な実例となる構成要素、ブロック、モジュール、回路、およびステップを、それらの機能性の点から広く述べた。そのような機能性がハードウェアとして実施されるか、またはソフトウェアとして実施されるかは、システム全体に課せられた特定の用途と設計制約による。熟練した当業者は、各特定用途のために、上述した機能性を様々に実施することができるが、そのような実施の決定は本発明の範囲からの逸脱をもたらすと解釈するべきではない。
【0083】
本明細書中で開示した実施形態に関連して述べられた様々な実例となる論理ブロック、モジュール、および回路を、汎用プロセッサ、デジタル信号プロセッサ(DAP)、特定用途向け集積回路(ASIC)、現場でプログラム可能なゲートアレイ(FPGA)または他のプログラム可能論理回路、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェア部品、または本明細書中で述べた機能を実行するよう設計されたそれらの任意の組み合わせとともに実装または実行することができる。汎用プロセッサはマイクロプロセッサとすることができるが、別の方法では、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることができる。またプロセッサを、演算装置の組み合わせ、例えばDSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと連動する1つ以上のマイクロプロセッサ、あるいはそのような任意の他の構成として実施することができる。
【0084】
本明細書中で開示した実施形態に関連して述べた方法のステップすなわちアルゴリズムは、ハードウェア、プロセッサにより実行されるソフトウェアモジュール、またはその2つの組み合わせに直接組み入れることができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取り外し可能ディスク、CD−ROM、あるいは技術的に知られた他の任意の記憶媒体形態に常駐することができる。例示的な記憶媒体はプロセッサと結合され、そのようなプロセッサは記憶媒体から情報を読み出し、記憶媒体に情報を書き込むことができる。別の方法では、記憶媒体をプロセッサに一体化することができる。プロセッサと記憶媒体はASIC内に常駐することができる。ASICはユーザー端末内に常駐することができる。別の方法では、プロセッサと記憶媒体をディスクリート部品としてユーザー端末内に常駐することができる。
【0085】
上記で開示された実施形態の説明は、任意の当業者が本発明を行い使用できるように提供されている。これらの実施形態の様々な変更は当業者にとって容易に明らかとなり、明細書中で規定された一般的な原理は、本発明の特質と範囲を逸脱することなく他の実施形態に適用することができる。したがって、本発明は明細書中で示された実施形態に限定されることなく、明細書中で開示された原理と新規な特徴に沿う最も広い範囲に適合することになる。
【図面の簡単な説明】
【0086】
【図1】多数のユーザーをサポートできる無線通信システムを示す概略ブロック図。
【図2(a)】KASUMIを実行するのに必要な計算を図示する。
【図2(b)】KASUMIを実行するのに必要な計算を図示する。
【図2(c)】KASUMIを実行するのに必要な計算を図示する。
【図2(d)】KASUMIを実行するのに必要な計算を図示する。
【図3】KASUMIを実行する実施形態の概略ブロック図。
【図4】KASUMIラウンドの実施形態のブロック図。
【図5】FL関数の実施形態のブロック図。
【図6】FO関数の実施形態のブロック図。
【図7】FI関数の実施形態のブロック図。
【図8】サブ鍵生成器のブロック図。
【図9】KASUMIの一実施形態のフローチャート。
【図10】FO関数の一実施形態のフローチャート。
【図11】FI関数の一実施形態のフローチャート。
【図12】サブ鍵生成器の一実施形態のフローチャート。
【図13】KASUMIの他の実施形態の制御フローを示す図
【特許請求の範囲】
【請求項1】
8つのラウンドを順序付けてKASUMI出力を生成するための計算制御器に動作可能に結合され、KASUMI暗号の断片部分を生成するKASUMIラウンドを有する装置。
【請求項2】
前記計算制御器に接続され、前記KASUMIラウンドにより使用される各ラウンド用のサブ鍵を生成するためのサブ鍵生成器をさらに備えた請求項1に記載の装置。
【請求項3】
KASUMI入力に対して鍵によりKASUMI暗号化を実行し、KASUMI出力を生成する装置であり、
KASUMI暗号の断片部分を生成し、偶数ラウンドおよび奇数ラウンドの計算用に構成でき、KASUMI出力を生成するために8つのラウンドが計算されるKASUMIラウンドと、
前記KASUMIラウンドの出力を格納するメモリと、
前記KASUMIラウンドへ入力を供給し、前記KASUMI入力が最初のラウンドの間に選択され、前記メモリの内容が後に続くラウンドの間に選択されるセレクタと、
を備えた装置。
【請求項4】
前記鍵に基づき各ラウンド用のサブ鍵を生成するサブ鍵生成器をさらに備えた請求項3に記載の装置。
【請求項5】
前記装置はアクセスポイントにおいて動作可能に構成された請求項3に記載の装置。
【請求項6】
前記装置はアクセス端末において動作可能に構成された請求項3に記載の装置。
【請求項7】
前記装置はW−CDMAシステムにおいて動作可能に構成された請求項3に記載の装置。
【請求項8】
入力を受け入れて出力を生成し、前記出力が生成される部分ラウンド計算部により動作可能なKASUMIラウンドであり、
前記部分ラウンド計算部からの中間値を格納するメモリと、
前記部分ラウンド計算部への供給のために前記入力と前記メモリの内容との間で選択を行なうセレクタと、
を備えたKASUMIラウンド。
【請求項9】
64ビット入力を受け入れ、64ビット出力を生成するKASUMIラウンドであり、
FO関数と、
FL関数と、
XORゲートと、
第1のレジスタと、
前記XORゲートの出力を受け入れ、出力が前記第1のレジスタの出力と連結し、前記64ビット出力を生成する第2のレジスタと、
入力選択信号の制御下で前記64ビット入力の上半部と前記第2のレジスタの出力との間で選択を行い、出力が前記第1のレジスタで受け入れられる第1の入力muxと、
前記入力選択信号の制御下で前記64ビット入力の下半部と前記第1のレジスタの出力との間で選択を行い、出力が第2のオペランドとして前記XORゲートに供給される第2の入力muxと、
出力が前記FL関数に供給され、データフロー信号の制御下で前記第1の入力muxの出力と前記FO関数の出力との間で選択を行う第1のデータパスmuxと、
出力が前記FO関数に供給され、データフロー信号の制御下で前記FL関数の出力と前記第1のレジスタの出力との間で選択を行う第2のデータパスmuxと、
出力が第1のオペランドとして前記XORゲートに供給され、データフロー信号の制御下で前記FL関数の出力と前記FO関数との間で選択を行う第3のデータパスmuxと、
を備えたKASUMIラウンド。
【請求項10】
入力を受け入れて出力を生成し、前記出力が生成される部分FO計算部により動作可能なFO関数であり、
前記部分FO計算部からの中間値を格納するメモリと、
前記部分FO計算部への供給のために前記入力と前記メモリの内容との間で選択を行うセレクタと、
を備えたFO関数。
【請求項11】
32ビット入力を受け入れ、32ビット出力を生成するFO関数であり、
KOサブ鍵を第1のオペランドとして受け入れる第1のXORゲートと、
前記第1のXORゲートの出力を受け入れるFI関数と、
前記FI関数の出力を第1のオペランドとして受け入れる第2のXORゲートと、
前記第2のXORゲートの出力を受け入れる第1のレジスタと、
第2のレジスタと、
出力が第2のオペランドとして前記第1のXORゲートに供給され、入力選択信号の制御下で前記32ビット入力の上半分と前記第2のレジスタの出力との間で選択を行う第1の入力muxと、
出力が前記第2のオペランドとして前記第2のXORゲートに供給されるとともに入力として前記第2のレジスタに供給され、入力選択信号の制御下で前記32ビット入力の下半分と前記第1のレジスタの出力との間で選択を行い、出力が前記第2のXORゲートの出力と連結し前記32ビット出力を生成する第2の入力muxと、
を備えたFO関数。
【請求項12】
入力を受け入れて出力を生成し、中間値と前記出力が生成される部分FI計算部により動作可能なFI関数であり、
前記部分FI計算部からの前記中間値を格納するメモリと、
前記部分FI計算部への供給のために前記入力と前記メモリの内容との間で選択を行うセレクタと、
を備えたFI関数。
【請求項13】
16ビット入力を受け入れ、16ビット出力を生成するFI関数であり、
第1のレジスタと、
第2のレジスタと、
入力選択信号の制御下で前記第1のレジスタの出力と前記16ビット入力の上位9ビットとの間で選択を行う第1の入力muxと、
入力選択信号の制御下で前記第2のレジスタの出力と前記16ビット入力の下位7ビットとの間で選択を行う第2の入力muxと、
前記第1の入力muxの出力を受け入れるS9関数と、
前記S9関数の出力と前記第2の入力muxのゼロ拡張出力とをオペランドとして受け入れる第1のXORと、
前記第2の入力muxの出力を受け入れるS7関数と、
前記第1のXORの切り捨てられた出力と前記S7関数の出力とをオペランドとして受け入れ、出力が前記第1のXORの出力と連結し前記16ビット出力を生成する第2のXORと、
出力が前記第1のレジスタに供給され、第1のKIサブ鍵と前記第1のXORの出力とをオペランドとして受け入れる第3のXORと、
出力が前記第2のレジスタに供給され、第2のKIサブ鍵と前記第2のXORの出力とをオペランドとして受け入れる第4のXORと、
を備えたFI関数。
【請求項14】
鍵を受け入れ、各ラウンドのために8つのサブ鍵を生成するサブ鍵生成器であり、
前記鍵をロード可能で、巡回信号の制御下で8ビット分左巡回可能であり、出力から前記8つのサブ鍵のうち4つが得られる第1のシフトレジスタと、
前記鍵のマスクされたバージョンをロード可能で、前記巡回信号の制御下で8ビット分左巡回可能であり、出力から前記8つのサブ鍵のうち4つが得られる第2のシフトレジスタと、
を備えたサブ鍵生成器。
【請求項15】
128ビット鍵を受け入れ、各ラウンドのために8つの16ビットサブ鍵を生成するサブ鍵生成器であり、
鍵をロード可能な第1の128ビットシフトレジスタと、
前記鍵のマスクされたバージョンをロード可能で、第1のサブ鍵が第3の最上位16ビットから生成され、第2のサブ鍵が第4の最上位16ビットから生成され、第3のサブ鍵が第5の最上位16ビットから生成され、第4のサブ鍵が最下位16ビットから生成される第2の128ビットシフトレジスタと、
前記第1のシフトレジスタの最上位16ビットに位置する内容を1ビット分左に巡回して、第5のサブ鍵を生成するローテータと、
前記第1のシフトレジスタの第2の最上位16ビットに位置する内容を5ビット分左に巡回して、第6のサブ鍵を生成するローテータと、
前記第1のシフトレジスタの第3の最下位16ビットに位置する内容を8ビット分左に巡回して、第7のサブ鍵を生成するローテータと、
前記第1のシフトレジスタの第2の最下位16ビットに位置する内容を13ビット分左に巡回して、第8のサブ鍵を生成するローテータと、
を備えたサブ鍵生成器。
【請求項16】
KASUMI暗号化を実行する方法であり、
8つの各ラウンドに対して、
第1のラウンドの間に計算ステップで用いる入力を選択し、
後に続くラウンドにおける計算ステップで用いる格納された結果を選択し、
部分結果を計算し、
メモリに前記部分結果を格納し、
前記格納された結果を出力として供給することを含む方法。
【請求項17】
前記計算ステップは、
前記ラウンドが奇数の場合、
前記選択ステップにおいて選択された前記入力または格納された結果の上半
分に対してFL関数を実行し、
前記FL関数の出力に対してFO関数を実行し、
前記選択ステップにおいて選択された前記入力または格納された結果の下半
分と、前記FO関数の出力との排他的論理和をとり、
前記ラウンドが偶数の場合、
前記格納された結果の上半分に対してFO関数を実行し、
前記FO関数の出力に対してFL関数を実行し、
前記格納された結果の下半分と前記FL関数の出力との排他的論理和をとり、
前記選択ステップにおいて選択された前記入力または格納された結果の上半分と連結した前記排他的論理和ステップの出力を、前記部分結果として供給することを含む請求項16に記載の方法。
【請求項18】
各ラウンド用のサブ鍵を生成することをさらに含む請求項16に記載の方法。
【請求項19】
FO関数を実行する方法であり、
3つの各段に対して、
第1の段における計算ステップで用いる入力を選択し、
後に続く段における計算ステップで用いる格納された結果を選択し、
部分結果を計算し、
メモリに前記部分結果を格納し、
前記部分結果を出力として供給することを含む方法。
【請求項20】
前記計算ステップは、
前記選択ステップにおいて選択された前記入力または格納された結果の上半分とサブ鍵との排他的論理和をとり、
前記排他的論理和ステップの出力に対してFI関数を実行し、
前記選択ステップにおいて選択された前記入力または格納された結果の下半分と、前記FI関数の出力との排他的論理和をとり、
前記選択ステップにおいて選択された前記入力または格納された結果の上半分を前記第2の排他的論理和ステップの出力と連結したものを、前記部分結果として供給することを含む請求項19に記載の方法。
【請求項21】
FI関数を実行する方法であり、
入力を用いて部分結果を計算し、
前記部分結果とサブ鍵との排他的論理和をとり、
前記部分結果をメモリに格納し、
前記格納された結果を用いて第2の部分結果を計算し、
前記第2の部分結果を出力として供給することを含む方法。
【請求項22】
前記計算ステップは、
前記入力または格納された結果の上位9ビットに対してS9関数を実行し、
前記入力または格納された結果の下位7ビットをゼロ拡張し、
前記ゼロ拡張された入力または格納された結果と前記S9関数の出力との排他的論理和をとり、
前記入力または格納された結果の下位7ビットに対してS7関数を実行し、
前記排他的論理和ステップの出力を切り捨て、
前記切り捨てられたXOR出力と前記S7関数の出力との排他的論理和をとり、
前記第1の排他的論理和ステップの出力と連結した前記第2の排他的論理和ステップの出力を、前記部分結果として供給することを含む請求項21に記載の方法。
【請求項23】
サブ鍵を生成する方法であり、
2つのサブ鍵シフトレジスタにロードし、
8つの各ラウンドに対して、
前記サブ鍵シフトレジスタから前記サブ鍵を導出し、
前記2つのサブ鍵シフトレジスタを8ビット分左に巡回することを含む方法。
【請求項24】
前記ロードステップは、
鍵を前記第1のサブ鍵シフトレジスタにロードし、
前記鍵をマスクし、
前記マスクされた鍵を前記第2のサブ鍵シフトレジスタにロードすることを含む請求項23に記載の方法。
【請求項25】
前記導出するステップは、
前記第2のシフトレジスタの第3の最上位16ビットのセットから第1のサブ鍵を導出し、
前記第2のシフトレジスタの第4の最上位16ビットのセットから第2のサブ鍵を導出し、
前記第2のシフトレジスタの第5の最上位16ビットのセットから第3のサブ鍵を導出し、
前記第2のシフトレジスタの最下位16ビットのセットから第4のサブ鍵を導出し、
前記第1のシフトレジスタの最上位16ビットのセットを1ビット分左に巡回して、第5のサブ鍵を生成し、
前記第1のシフトレジスタの第2の最上位16ビットのセットを5ビット分左に巡回して、第6のサブ鍵を生成し、
前記第1のシフトレジスタの第3の最下位16ビットのセットを8ビット分左に巡回して、第7のサブ鍵を生成し、
前記第1のシフトレジスタの第2の最下位16ビットのセットを13ビット分左に巡回して、第8のサブ鍵を生成することを含む請求項24に記載の方法。
【請求項1】
8つのラウンドを順序付けてKASUMI出力を生成するための計算制御器に動作可能に結合され、KASUMI暗号の断片部分を生成するKASUMIラウンドを有する装置。
【請求項2】
前記計算制御器に接続され、前記KASUMIラウンドにより使用される各ラウンド用のサブ鍵を生成するためのサブ鍵生成器をさらに備えた請求項1に記載の装置。
【請求項3】
KASUMI入力に対して鍵によりKASUMI暗号化を実行し、KASUMI出力を生成する装置であり、
KASUMI暗号の断片部分を生成し、偶数ラウンドおよび奇数ラウンドの計算用に構成でき、KASUMI出力を生成するために8つのラウンドが計算されるKASUMIラウンドと、
前記KASUMIラウンドの出力を格納するメモリと、
前記KASUMIラウンドへ入力を供給し、前記KASUMI入力が最初のラウンドの間に選択され、前記メモリの内容が後に続くラウンドの間に選択されるセレクタと、
を備えた装置。
【請求項4】
前記鍵に基づき各ラウンド用のサブ鍵を生成するサブ鍵生成器をさらに備えた請求項3に記載の装置。
【請求項5】
前記装置はアクセスポイントにおいて動作可能に構成された請求項3に記載の装置。
【請求項6】
前記装置はアクセス端末において動作可能に構成された請求項3に記載の装置。
【請求項7】
前記装置はW−CDMAシステムにおいて動作可能に構成された請求項3に記載の装置。
【請求項8】
入力を受け入れて出力を生成し、前記出力が生成される部分ラウンド計算部により動作可能なKASUMIラウンドであり、
前記部分ラウンド計算部からの中間値を格納するメモリと、
前記部分ラウンド計算部への供給のために前記入力と前記メモリの内容との間で選択を行なうセレクタと、
を備えたKASUMIラウンド。
【請求項9】
64ビット入力を受け入れ、64ビット出力を生成するKASUMIラウンドであり、
FO関数と、
FL関数と、
XORゲートと、
第1のレジスタと、
前記XORゲートの出力を受け入れ、出力が前記第1のレジスタの出力と連結し、前記64ビット出力を生成する第2のレジスタと、
入力選択信号の制御下で前記64ビット入力の上半部と前記第2のレジスタの出力との間で選択を行い、出力が前記第1のレジスタで受け入れられる第1の入力muxと、
前記入力選択信号の制御下で前記64ビット入力の下半部と前記第1のレジスタの出力との間で選択を行い、出力が第2のオペランドとして前記XORゲートに供給される第2の入力muxと、
出力が前記FL関数に供給され、データフロー信号の制御下で前記第1の入力muxの出力と前記FO関数の出力との間で選択を行う第1のデータパスmuxと、
出力が前記FO関数に供給され、データフロー信号の制御下で前記FL関数の出力と前記第1のレジスタの出力との間で選択を行う第2のデータパスmuxと、
出力が第1のオペランドとして前記XORゲートに供給され、データフロー信号の制御下で前記FL関数の出力と前記FO関数との間で選択を行う第3のデータパスmuxと、
を備えたKASUMIラウンド。
【請求項10】
入力を受け入れて出力を生成し、前記出力が生成される部分FO計算部により動作可能なFO関数であり、
前記部分FO計算部からの中間値を格納するメモリと、
前記部分FO計算部への供給のために前記入力と前記メモリの内容との間で選択を行うセレクタと、
を備えたFO関数。
【請求項11】
32ビット入力を受け入れ、32ビット出力を生成するFO関数であり、
KOサブ鍵を第1のオペランドとして受け入れる第1のXORゲートと、
前記第1のXORゲートの出力を受け入れるFI関数と、
前記FI関数の出力を第1のオペランドとして受け入れる第2のXORゲートと、
前記第2のXORゲートの出力を受け入れる第1のレジスタと、
第2のレジスタと、
出力が第2のオペランドとして前記第1のXORゲートに供給され、入力選択信号の制御下で前記32ビット入力の上半分と前記第2のレジスタの出力との間で選択を行う第1の入力muxと、
出力が前記第2のオペランドとして前記第2のXORゲートに供給されるとともに入力として前記第2のレジスタに供給され、入力選択信号の制御下で前記32ビット入力の下半分と前記第1のレジスタの出力との間で選択を行い、出力が前記第2のXORゲートの出力と連結し前記32ビット出力を生成する第2の入力muxと、
を備えたFO関数。
【請求項12】
入力を受け入れて出力を生成し、中間値と前記出力が生成される部分FI計算部により動作可能なFI関数であり、
前記部分FI計算部からの前記中間値を格納するメモリと、
前記部分FI計算部への供給のために前記入力と前記メモリの内容との間で選択を行うセレクタと、
を備えたFI関数。
【請求項13】
16ビット入力を受け入れ、16ビット出力を生成するFI関数であり、
第1のレジスタと、
第2のレジスタと、
入力選択信号の制御下で前記第1のレジスタの出力と前記16ビット入力の上位9ビットとの間で選択を行う第1の入力muxと、
入力選択信号の制御下で前記第2のレジスタの出力と前記16ビット入力の下位7ビットとの間で選択を行う第2の入力muxと、
前記第1の入力muxの出力を受け入れるS9関数と、
前記S9関数の出力と前記第2の入力muxのゼロ拡張出力とをオペランドとして受け入れる第1のXORと、
前記第2の入力muxの出力を受け入れるS7関数と、
前記第1のXORの切り捨てられた出力と前記S7関数の出力とをオペランドとして受け入れ、出力が前記第1のXORの出力と連結し前記16ビット出力を生成する第2のXORと、
出力が前記第1のレジスタに供給され、第1のKIサブ鍵と前記第1のXORの出力とをオペランドとして受け入れる第3のXORと、
出力が前記第2のレジスタに供給され、第2のKIサブ鍵と前記第2のXORの出力とをオペランドとして受け入れる第4のXORと、
を備えたFI関数。
【請求項14】
鍵を受け入れ、各ラウンドのために8つのサブ鍵を生成するサブ鍵生成器であり、
前記鍵をロード可能で、巡回信号の制御下で8ビット分左巡回可能であり、出力から前記8つのサブ鍵のうち4つが得られる第1のシフトレジスタと、
前記鍵のマスクされたバージョンをロード可能で、前記巡回信号の制御下で8ビット分左巡回可能であり、出力から前記8つのサブ鍵のうち4つが得られる第2のシフトレジスタと、
を備えたサブ鍵生成器。
【請求項15】
128ビット鍵を受け入れ、各ラウンドのために8つの16ビットサブ鍵を生成するサブ鍵生成器であり、
鍵をロード可能な第1の128ビットシフトレジスタと、
前記鍵のマスクされたバージョンをロード可能で、第1のサブ鍵が第3の最上位16ビットから生成され、第2のサブ鍵が第4の最上位16ビットから生成され、第3のサブ鍵が第5の最上位16ビットから生成され、第4のサブ鍵が最下位16ビットから生成される第2の128ビットシフトレジスタと、
前記第1のシフトレジスタの最上位16ビットに位置する内容を1ビット分左に巡回して、第5のサブ鍵を生成するローテータと、
前記第1のシフトレジスタの第2の最上位16ビットに位置する内容を5ビット分左に巡回して、第6のサブ鍵を生成するローテータと、
前記第1のシフトレジスタの第3の最下位16ビットに位置する内容を8ビット分左に巡回して、第7のサブ鍵を生成するローテータと、
前記第1のシフトレジスタの第2の最下位16ビットに位置する内容を13ビット分左に巡回して、第8のサブ鍵を生成するローテータと、
を備えたサブ鍵生成器。
【請求項16】
KASUMI暗号化を実行する方法であり、
8つの各ラウンドに対して、
第1のラウンドの間に計算ステップで用いる入力を選択し、
後に続くラウンドにおける計算ステップで用いる格納された結果を選択し、
部分結果を計算し、
メモリに前記部分結果を格納し、
前記格納された結果を出力として供給することを含む方法。
【請求項17】
前記計算ステップは、
前記ラウンドが奇数の場合、
前記選択ステップにおいて選択された前記入力または格納された結果の上半
分に対してFL関数を実行し、
前記FL関数の出力に対してFO関数を実行し、
前記選択ステップにおいて選択された前記入力または格納された結果の下半
分と、前記FO関数の出力との排他的論理和をとり、
前記ラウンドが偶数の場合、
前記格納された結果の上半分に対してFO関数を実行し、
前記FO関数の出力に対してFL関数を実行し、
前記格納された結果の下半分と前記FL関数の出力との排他的論理和をとり、
前記選択ステップにおいて選択された前記入力または格納された結果の上半分と連結した前記排他的論理和ステップの出力を、前記部分結果として供給することを含む請求項16に記載の方法。
【請求項18】
各ラウンド用のサブ鍵を生成することをさらに含む請求項16に記載の方法。
【請求項19】
FO関数を実行する方法であり、
3つの各段に対して、
第1の段における計算ステップで用いる入力を選択し、
後に続く段における計算ステップで用いる格納された結果を選択し、
部分結果を計算し、
メモリに前記部分結果を格納し、
前記部分結果を出力として供給することを含む方法。
【請求項20】
前記計算ステップは、
前記選択ステップにおいて選択された前記入力または格納された結果の上半分とサブ鍵との排他的論理和をとり、
前記排他的論理和ステップの出力に対してFI関数を実行し、
前記選択ステップにおいて選択された前記入力または格納された結果の下半分と、前記FI関数の出力との排他的論理和をとり、
前記選択ステップにおいて選択された前記入力または格納された結果の上半分を前記第2の排他的論理和ステップの出力と連結したものを、前記部分結果として供給することを含む請求項19に記載の方法。
【請求項21】
FI関数を実行する方法であり、
入力を用いて部分結果を計算し、
前記部分結果とサブ鍵との排他的論理和をとり、
前記部分結果をメモリに格納し、
前記格納された結果を用いて第2の部分結果を計算し、
前記第2の部分結果を出力として供給することを含む方法。
【請求項22】
前記計算ステップは、
前記入力または格納された結果の上位9ビットに対してS9関数を実行し、
前記入力または格納された結果の下位7ビットをゼロ拡張し、
前記ゼロ拡張された入力または格納された結果と前記S9関数の出力との排他的論理和をとり、
前記入力または格納された結果の下位7ビットに対してS7関数を実行し、
前記排他的論理和ステップの出力を切り捨て、
前記切り捨てられたXOR出力と前記S7関数の出力との排他的論理和をとり、
前記第1の排他的論理和ステップの出力と連結した前記第2の排他的論理和ステップの出力を、前記部分結果として供給することを含む請求項21に記載の方法。
【請求項23】
サブ鍵を生成する方法であり、
2つのサブ鍵シフトレジスタにロードし、
8つの各ラウンドに対して、
前記サブ鍵シフトレジスタから前記サブ鍵を導出し、
前記2つのサブ鍵シフトレジスタを8ビット分左に巡回することを含む方法。
【請求項24】
前記ロードステップは、
鍵を前記第1のサブ鍵シフトレジスタにロードし、
前記鍵をマスクし、
前記マスクされた鍵を前記第2のサブ鍵シフトレジスタにロードすることを含む請求項23に記載の方法。
【請求項25】
前記導出するステップは、
前記第2のシフトレジスタの第3の最上位16ビットのセットから第1のサブ鍵を導出し、
前記第2のシフトレジスタの第4の最上位16ビットのセットから第2のサブ鍵を導出し、
前記第2のシフトレジスタの第5の最上位16ビットのセットから第3のサブ鍵を導出し、
前記第2のシフトレジスタの最下位16ビットのセットから第4のサブ鍵を導出し、
前記第1のシフトレジスタの最上位16ビットのセットを1ビット分左に巡回して、第5のサブ鍵を生成し、
前記第1のシフトレジスタの第2の最上位16ビットのセットを5ビット分左に巡回して、第6のサブ鍵を生成し、
前記第1のシフトレジスタの第3の最下位16ビットのセットを8ビット分左に巡回して、第7のサブ鍵を生成し、
前記第1のシフトレジスタの第2の最下位16ビットのセットを13ビット分左に巡回して、第8のサブ鍵を生成することを含む請求項24に記載の方法。
【図1】
【図2(a)】
【図2(b)】
【図2(c)】
【図2(d)】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2(a)】
【図2(b)】
【図2(c)】
【図2(d)】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2008−148352(P2008−148352A)
【公開日】平成20年6月26日(2008.6.26)
【国際特許分類】
【外国語出願】
【出願番号】特願2008−16794(P2008−16794)
【出願日】平成20年1月28日(2008.1.28)
【分割の表示】特願2003−501124(P2003−501124)の分割
【原出願日】平成14年5月31日(2002.5.31)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】
【公開日】平成20年6月26日(2008.6.26)
【国際特許分類】
【出願番号】特願2008−16794(P2008−16794)
【出願日】平成20年1月28日(2008.1.28)
【分割の表示】特願2003−501124(P2003−501124)の分割
【原出願日】平成14年5月31日(2002.5.31)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】
[ Back to top ]