通信装置
【課題】2系統のAES処理を実行する場合において、2系統のAES処理で利用されるラウンド鍵を供給する鍵拡張部を共用する。
【解決手段】MIC値算出部42のAES処理部51は、データの完全性検査に用いる符号を生成するためにCBCモードのAES処理を実行し、その結果得られたMIC値を合成部45に供給する。暗号化部43のAES処理部52は、ブロックデータを暗号化するためにCTRモードのAES処理を実行し、ブロックデータを暗号化し、合成部45に供給する。AES処理部51およびAES処理部52は、鍵拡張部44を共用し、鍵拡張部44から供給されるラウンド鍵に基づいてAES処理を実行する。合成部45は、MIC値算出部42から供給されたMIC値と暗号化部43から供給された暗号化されたブロックデータを合成して出力する。本発明は、無線LANシステムを構成する通信装置に適用できる。
【解決手段】MIC値算出部42のAES処理部51は、データの完全性検査に用いる符号を生成するためにCBCモードのAES処理を実行し、その結果得られたMIC値を合成部45に供給する。暗号化部43のAES処理部52は、ブロックデータを暗号化するためにCTRモードのAES処理を実行し、ブロックデータを暗号化し、合成部45に供給する。AES処理部51およびAES処理部52は、鍵拡張部44を共用し、鍵拡張部44から供給されるラウンド鍵に基づいてAES処理を実行する。合成部45は、MIC値算出部42から供給されたMIC値と暗号化部43から供給された暗号化されたブロックデータを合成して出力する。本発明は、無線LANシステムを構成する通信装置に適用できる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置に関し、2系統のAES処理を実行するに際し、2系統のAES処理で利用する鍵拡張を共用することができるようにした通信装置にする。
【背景技術】
【0002】
802.11に準拠した無線LANにおける送信処理において実行される暗号化処理では、受信側で行われるデータの完全性検査に利用される符号(MIC(Message Integrity Code)値)を算出するためのAES(Advanced Encryption Standard)処理と、データを暗号化するためのAES処理の2系統のAES処理を行う必要がある。受信処理でも同様に、受信された暗号化データからMIC値を算出するためのAES処理と、暗号化データを復号するためのAES処理の2系統のAES処理を行う必要がある。
【0003】
送信処理と受信処理におけるMIC値を算出するためのAES処理は、CBC(Cipher Block Chaining)モードのAES処理と呼ばれる。また送信処理におけるデータを暗号化するためのAES処理および受信処理における暗号化データを復号するためのAES処理は、CTR(カウンタ(counter))モードのAES処理と呼ばれる。
【0004】
CBCモードのAES処理を実行するAES処理部1は、図1に示すように構成され、ブロックデータを攪拌した結果を次のブロックデータにXOR演算によって重ね合わせる処理を行う。CTRモードのAES処理を実行するAES処理部5は、図2に示すように構成され、所定のカウンタの値を攪拌し、その結果を、ブロックデータにXOR演算によって重ね合わせる処理を行う。
【0005】
図1を参照して、CBCモードのAES処理を実行するAES処理部1について説明する。
【0006】
鍵拡張部2は、送信側と受信側とで共有する鍵(以下、暗号化鍵と称する)から、ブロックデータの長さに対応する複数の拡張鍵(以下、ラウンド鍵と称する)を、AESドラフトに示されている鍵生成スケジュールに基づいて複数生成する。
【0007】
攪拌部3は、鍵拡張部2で生成された所定の数のラウンド鍵を用いて、後述する所定の処理(以下、ラウンド処理と称する)を繰り返し行うことによって、ブロックデータを攪拌し、その攪拌の結果得られたブロックデータを出力するとともに、XOR演算部4に供給する。なおラウンド処理の繰り返し回数は、ブロックデータおよび暗号化鍵の長さによって決められており、ブロックデータおよび暗号化鍵の長さが128ビットである場合、ラウンド処理の繰り返し回数は、10回とされている。
【0008】
XOR演算部4は、攪拌部3から供給された攪拌されたブロックデータと、そのブロックデータの次に入力されるブロックデータ(攪拌前のブロックデータ)を、XOR演算によって重ね合わせ、攪拌部3に供給する。
【0009】
次に図2を参照して、CTRモードのAES処理を実行するAES処理部5について説明する。
【0010】
鍵拡張部6は、AES処理部1の鍵拡張部2と同様に、暗号化鍵から、複数のラウンド鍵を、AESドラフトに示されている鍵生成スケジュールに基づいて複数生成する。
【0011】
攪拌部7は、AES処理部1の攪拌部3と同様に、鍵拡張部6で生成された所定の数のラウンド鍵を用いてラウンド処理を繰り返し行うことによって、カウンタ8から出力されたカウンタ値を攪拌し、XOR演算部9に供給する。
【0012】
XOR演算部9は、攪拌部3から供給された攪拌されたカウンタ値と、入力されるブロックデータを、XOR演算によって重ね合わせ、その結果得られたブロックデータを出力する。
【0013】
次に、図1のAES処理部1の攪拌部3および図2のAES処理部5の攪拌部7の攪拌処理を、図3を参照して説明する。
【0014】
攪拌処理では、入力されるブロックデータ(この例の場合、128ビット)に対する、暗号化鍵加算処理RO、および10個のラウンド処理R1乃至R10が、その順番で行われる。
【0015】
初めに暗号化鍵加算処理R0で、入力されたブロックデータに、鍵拡張部2または6から供給される暗号化鍵K0が加算される。
【0016】
ラウンド処理R1では、暗号化鍵加算処理R0で暗号化鍵K0が加算されたブロックデータに対して、SubByte変換処理R11、ShiftRow変換処理R12、MixColumn変換処理R13、およびRoundKey加算処理R14が順に行われる。
【0017】
ラウンド処理R1のSubByte変換処理R11、ShiftRow変換処理R12、およびMixColumn変換処理R13では、暗号化鍵K0が加算されたブロックデータに対して所定の演算が行われて、そのブロックデータが他のブロックデータに変換される。
【0018】
ラウンド処理R1のRoundKey加算処理R14では、SubByte変換処理等の結果得られたブロックデータに、鍵拡張部2または6から供給される、暗号化鍵K0から生成されたラウンド鍵の1つのラウンド鍵RK1が加算される。
【0019】
ラウンド処理R2では、ラウンド処理R1でSubByte変換処理等が施されるとともにラウンド鍵RK1が加算されたブロックデータに対して、ラウンド処理R1と同様に、SubByte変換処理R11、ShiftRow変換処理R12、およびMixColumn変換処理R13が順に行われる。
【0020】
そしてラウンド処理R2のRoundKey加算処理R14では、SubByte変換処理等の結果得られたブロックデータに、鍵拡張部2または6から供給されるラウンド鍵RK2が加算される。
【0021】
ラウンド処理R3乃至R10では、基本的には、ラウンド処理R1およびR2と同様の処理が施される。すなわち前段のラウンド処理Rが施されたブロックデータに対してSubByte変換処理等が施されるとともに、鍵拡張部2または6から供給されるラウンド処理R3乃至R10に対応するラウンド鍵RK3乃至RK10が加算される。
【0022】
なおラウンド処理R10では、ラウンド処理R1乃至R9におけるMixColumn変換処理R13が省略されている。
【0023】
このように攪拌部3または7の攪拌処理では、鍵拡張部2または6から供給されるラウンド鍵RKを用いてラウンド処理を繰り返し行うことによって、例えば128ビット単位のブロックデータが攪拌される。
【0024】
なお特許文献1には、ラウンド処理における各処理の処理データを所定の実行ブロック長に細分化したAES処理が開示されている。
【0025】
【特許文献1】特開2003−15522号公報
【発明の開示】
【発明が解決しようとする課題】
【0026】
上述したように802.11に準拠した無線LANにおける送信処理または受信処理では、CBCモードのAES処理と、CTRモードのAES処理の2系統のAES処理を行う必要があるので、通信装置は、AES処理部1およびAES処理部5の2個のAES処理部を備える必要がある。
【0027】
しかしながらこのように2個のAES処理部1およびAES処理部5をそのまま備えることは、近年求められている装置の小型化の妨げになる。
【0028】
本発明はこのような状況に鑑みてなされたものであり、2系統のAES処理を実行する場合において、2系統のAES処理で利用されるラウンド鍵を供給する鍵拡張部を共用することができるようにするものである。
【課題を解決するための手段】
【0029】
本発明の通信装置は、暗号化鍵から所定のブロックデータの長さに対応する複数の拡張鍵を利用して前記ブロックデータを攪拌する攪拌処理を実行し、送信するブロックデータを暗号化しまたは受信した暗号化されたブロックデータを復号する通信装置において、データの完全性検査に用いる符号を生成するために前記ブロックデータを攪拌する第1の攪拌部と、ブロックデータを暗号化するためにまたは暗号化されたブロックデータを復号するために前記ブロックデータを攪拌する第2の攪拌部と、前記第1の攪拌部と前記第2の攪拌部で共用される拡張鍵を、前記第1の攪拌部と前記第2の攪拌部に供給する1個の鍵拡張部と、暗号化されたブロックデータを送信し、または暗号化されたブロックデータを受信する通信手段とを備える。
【0030】
前記鍵拡張部は、前記第1の攪拌部と前記第2の攪拌部で攪拌処理が実行されるタイミングに応じて、その攪拌処理で共用される拡張鍵を生成して、前記第1の攪拌部と前記第2の攪拌部に供給することができる。
【0031】
前記鍵拡張部は、予め生成された前記第1の攪拌部と前記第2の攪拌部で共用されるすべての拡張鍵を保持しているようにすることもできる。
【0032】
前記第1の攪拌部による攪拌処理は、CBC(Cipher Block Chaining)モードのAES(Advanced Encryption Standard)処理における攪拌処理であり、前記第2の攪拌部による攪拌処理は、CTR(counter)モードのAES処理における攪拌処理であるようにすることができる。
【発明の効果】
【0033】
本発明によれば、2系統のAES処理を実行する場合において、2系統のAES処理で利用されるラウンド鍵を供給する鍵拡張部を共用することができる。
【発明を実施するための最良の形態】
【0034】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書又は図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書又は図面に記載されていることを確認するためのものである。従って、明細書又は図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【0035】
本発明の一側面の通信装置は、
暗号化鍵から所定のブロックデータの長さに対応する複数の拡張鍵を利用して前記ブロックデータを攪拌する攪拌処理を実行し、送信するブロックデータを暗号化しまたは受信した暗号化されたブロックデータを復号する通信装置において、
データの完全性検査に用いる符号を生成するために前記ブロックデータを攪拌する第1の攪拌部(例えば、図5のAES処理部51、図7のAES処理部81)と、
ブロックデータを暗号化するためにまたは暗号化されたブロックデータを復号するために前記ブロックデータを攪拌する第2の攪拌部(例えば、図5のAES処理部52、図7のAES処理部82)と、
前記第1の攪拌部と前記第2の攪拌部で共用される拡張鍵を、前記第1の攪拌部と前記第2の攪拌部に供給する1個の鍵拡張部(例えば、図5の鍵拡張部44、図7の鍵拡張部74)と、
暗号化されたブロックデータを送信し、または暗号化されたブロックデータを受信する通信手段(例えば、図4のPHY回路21乃至アンテナ24、図4のアンテナ25乃至PHY回路27)と
を備える。
【0036】
図4は、本発明を適用した通信装置11の構成例を示している。この通信装置11は、IEEE802.11に準拠して、他の通信装置と無線ネットワークで接続されており、それらとデータの送受信を行う。
【0037】
すなわち通信装置11は、送信処理または受信処理において、CBCモードのAES処理とCTRモードのAES処理の2系統のAES処理を行うが、両者のAES処理では、後述するように同じブロックデータが処理される。
【0038】
このように2系統のAES処理において同じブロックデータが処理される場合、CBCモードのAES処理とCTRモードのAES処理で利用されるラウンド鍵を共用することができる。そこで、この通信装置11は、CBCモードのAES処理とCTRモードのAES処理において利用されるラウンド鍵を共用することができるようになされている。
【0039】
通信装置11の構成について説明する。
【0040】
MAC回路21の暗号化部31は、上位レイヤ29から供給されるデータを所定の長さ(この例の場合、128ビット)の単位のブロックに分割し、そのブロックデータに対して、後述するようにCBCモードのAES処理とCTRモードのAES処理の2系統のAES処理を施すことにより、受信側で行われるデータの完全性検査に利用されるMIC値を算出するとともに、ブロックデータを暗号化する。
【0041】
MAC回路21は、算出したMIC値と暗号化されたブロックデータを合成して、PHY回路22に供給する。
【0042】
PHY回路22は、MAC回路21から供給されたMIC値とブロックデータを変調し、RF回路23に供給する。
【0043】
RF回路23は、PHY回路22から供給された変調信号を高周波の無線信号に変換し、アンテナ24を介して送出する。
【0044】
RF回路26は、アンテナ25により受信された受信信号をベースバンド信号に変換し、PHY回路27に供給する。PHY回路27は、RF回路26から供給されたベースバンド信号をデジタル信号へ変換し、MAC回路28に供給する。
【0045】
MAC回路28の復号部32は、PHY回路27から供給されるデータを、送信側での分割処理と対応するように128ビット単位のブロックに分割し、そのブロックデータに対して、後述するようにCBCモードのAES処理とCTRモードのAES処理の2系統のAES処理を施すことにより、MIC値を算出するとともに、暗号化されたブロックデータを復号する。
【0046】
復号部32は、算出したMIC値と、受信されたMIC値を比較し、データの改竄等の有無を判断し、その判断結果に基づいて復号したブロックデータを上位レイヤ29に供給する。
【0047】
上位レイヤ29は、送信するデータを適宜MAC回路21に供給する。上位レイヤ29はまた、MAC回路28から供給されたデータ(すなわち受信データ)に対してアプリケーション上の所定の処理を実行する。
【0048】
図5は、図4のMAC回路21の暗号化部31の構成例を示している。
【0049】
分割部41は、上位レイヤ29から供給されたデータを128ビット単位のブロックデータに分割し、MIC値算出部42および暗号化部43のそれぞれに供給する。
【0050】
MIC値算出部42は、CBCモードのAES処理を行うAES処理部51を有している。AES処理部51は、分割部41から供給されたブロックデータに対して、鍵拡張部44から供給されたラウンド鍵を利用してCBCモードのAES処理を施しMIC値を算出し、合成部45に供給する。なおAES処理部51は、ラウンド鍵は鍵拡張部44から供給されるため、図1のAES処理部1の攪拌部3とXOR演算部4から構成されている。
【0051】
暗号化部43は、CTRモードのAES処理を行うAES処理部52を有している。AES処理部52は、分割部41から供給されたブロックデータに対して、鍵拡張部44から供給されたラウンド鍵を利用してCTRモードのAES処理を施し暗号化し、暗号化したブロックデータを合成部45に供給する。なおAES処理部52は、ラウンド鍵は鍵拡張部44から供給されるため、図2のAES処理部5の攪拌部7、カウンタ8、およびXOR演算部9から構成されている。
【0052】
鍵拡張部44は、図1のAES処理部1を構成する鍵拡張部2または図2のAES処理部5を構成する鍵拡張部6に相当するものであり、MIC値算出部42および暗号化部43で行われるAES処理で利用されるラウンド鍵(いまの例の場合、10個のラウンド鍵)を、暗号化鍵から生成し、MIC値算出部42のAES処理部51および暗号化部43のAES処理部52に供給する。
【0053】
合成部45は、MIC値算出部42から供給されたMIC値と、暗号化部43から供給された暗号化されたブロックデータを合成し、PHY回路22に供給する。
【0054】
次に、図3および図6を参照して、暗号化部31の動作を説明する。
【0055】
上位レイヤ29から供給されるデータは、初期ベクトル(Initialization Vector)、ヘッダ(Header)、およびプレーンテキスト(Plain Text)から構成されている。
【0056】
分割部41は、上位レイヤ29から供給されるデータを構成する初期ベクトルを1個のブロックデータD-IV、ヘッダを2個のブロックデータD-H1,D-H2、そしてプレーンテキストデータを、n個のブロックデータD-P1乃至D-Pnにそれぞれ分割し、順に、MIC値算出部42(のAES処理部51)に供給する。なおプレーンテキストの最後のブロックデータD-Pnには、必要に応じてパディング(padding)処理が施されている。
【0057】
MIC値算出部42(のAES処理部51)は、分割部41から供給される初期ベクトルD-IVおよびヘッダD-H1,D-H2、およびプレーンテキストD-P1乃至D-Pnのすべてに対して、CBCモードのAES処理を施す。
【0058】
具体的には初めに、攪拌処理P1で、初期ベクトルD-IVが攪拌される(図3)。その処理に利用される暗号化鍵KOおよびラウンド鍵RK1乃至RK10は鍵拡張部44から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部44の鍵拡張処理W1で生成されたものである。
【0059】
XOR演算処理P2で、攪拌処理P1で攪拌された初期ベクトルD-IVと、初期ベクトルD-IVの次のヘッダD-H1が、XOR演算によって重ね合わされる。
【0060】
次に、攪拌処理P3で、XOR演算処理P2の結果得られたブロックデータが攪拌される(図3)。その処理に利用される暗号化鍵KOおよびラウンド鍵RK1乃至RK10は鍵拡張部44から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部44の鍵拡張処理W2で生成されたものである。
【0061】
XOR演算処理P4で、攪拌処理P3で攪拌されたブロックデータと、ヘッダD-H1の次のヘッダD-H2が、XOR演算によって重ね合わされる。
【0062】
次に、攪拌処理P5で、XOR演算処理P4の結果得られたブロックデータが攪拌される(図3)。その処理に利用される暗号化鍵KOおよびラウンド鍵RK1乃至RK10は鍵拡張部44から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部44の鍵拡張処理W3で生成されたものである。
【0063】
XOR演算処理P6で、攪拌処理P5で攪拌されたブロックデータと、ヘッダD-H2の次のプレーンテキストD-P1が、XOR演算によって重ね合わされる。
【0064】
次に、攪拌処理P7で、XOR演算処理P6の結果得られたブロックデータが攪拌される(図3)。その処理に利用される暗号化鍵KOおよびラウンド鍵RK1乃至RK10は鍵拡張部44から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部44の鍵拡張処理W4で生成されたものである。
【0065】
XOR演算処理P8で、攪拌処理P7で攪拌されたブロックデータと、プレーンテキストD-P1の次のプレーンテキストD-P2が、XOR演算によって重ね合わされる。
【0066】
プレーンテキストD-P3乃至D-Pnに対しても、図6に示す処理P9乃至P14により、初期ベクトルD-IV乃至プレーンテキストD-P2と同様の処理が施され、最終的にMIC値が算出される。
【0067】
一方暗号化部43(のAES処理部52)は、分割部41から供給されるプレーンテキストD-P1乃至D-Pnに対して、CTRモードのAES処理を施す。
【0068】
具体的にはカウンタ処理Q1で、所定のカウンタ値を発生する。なお暗号化部43で発生されるカウンタ値は、128ビットで、下4ビットの値が1乃至10に順にインクリメントされる。
【0069】
攪拌処理Q2で、カウンタ処理Q1で発生されたカウント値が攪拌される(図3)。その処理に利用される暗号化鍵KOおよびラウンド鍵RK1乃至RK10は鍵拡張部44から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部44の鍵拡張処理W3で生成されたものである。
【0070】
XOR演算処理Q3で、攪拌処理Q2で攪拌されたカウンタ値と、プレーンテキストD-P1が、XOR演算によって重ね合わされてプレーンテキストD-P1が暗号化され、暗号化されたプレーンテキストED-P1が生成される。
【0071】
プレーンテキストD-P2乃至D-Pn、およびMIC値に対しても、図6に示す処理Q4乃至処理Q16により、プレーンテキストD-P1と同様の処理が施されて暗号化され、暗号化されたプレーンテキストED-P2乃至D-Pnおよび暗号化されたMIC値ED-Pmicが生成される。
【0072】
このようにCBCモードのAES処理とCTRモードのAES処理が同時に行われ、各AES処理で用いる暗号化鍵K0が同じ場合には、同じラウンド鍵RK1乃至RK10を利用することができる。
【0073】
そこでこの暗号化部31には、CBCモードのAES処理とCTRモードのAES処理の2系統のAES処理に対して1個の鍵拡張部44が設けられ、暗号化部31は、CBCモードのAES処理を行うAES処理部51とCTRモードのAES処理を行うAES処理部52が、鍵拡張部44を共用するように構成されている。
【0074】
図7は、図4のMAC回路28の復号部32の構成例を示している。
【0075】
分割部71は、PHY回路27から供給されたデータを128ビット単位のブロックデータに分割し、MIC値算出部72および復号部73のそれぞれに供給する。
【0076】
分割部71はまた、PHY回路27から供給されたデータの最後のブロックデータ(暗号化されたMIC値のブロックデータ)を、比較部75に供給する。
【0077】
MIC値算出部72は、CBCモードのAES処理を行うAES処理部81を有している。AES処理部81は、分割部71から供給されたブロックデータに対して、鍵拡張部74から供給されたラウンド鍵を利用してCBCモードのAES処理を施してMIC値を算出し、比較部75に供給する。なおAES処理部81は、ラウンド鍵は鍵拡張部74から供給されるため、図1のAES処理部1の攪拌部3とXOR演算部4から構成されている。
【0078】
復号部73は、CTRモードのAES処理を行うAES処理部82を有している。AES処理部82は、分割部71から供給された暗号化されたブロックデータに対して、鍵拡張部74から供給されたラウンド鍵を利用してCTRモードのAES処理を施し復号し、復号したブロックデータを出力制御部76に供給する。なおAES処理部82は、ラウンド鍵は鍵拡張部74から供給されるため、図2のAES処理部5の攪拌部7、カウンタ8、およびXOR演算部9から構成されている。
【0079】
鍵拡張部74は、図1のAES処理部1を構成する鍵拡張部2または図2のAES処理部5を構成する鍵拡張部6に相当するものであり、MIC値算出部72および復号部73で行われるAES処理で利用されるラウンド鍵(いまの例の場合、10個のラウンド鍵)を、暗号化鍵から生成し、MIC値算出部72のAES処理部81および復号部73のAES処理部82に供給する。
【0080】
比較部75は、MIC値算出部72から供給されたMIC値と、分割部71から供給されたMIC値とが同じであるか否かを判定し、同じであれば、その旨を、出力制御部76に通知する。
【0081】
出力制御部76は、比較部75からの通知に応じて、復号部73から供給されたブロックデータを、上位レイヤ29に供給する。
【0082】
次に、図3および図8を参照して、復号部32の動作を説明する。
【0083】
分割部71は、PHY回路27から供給されたデータを、128ビットの初期ベクトルD-IV、ヘッダD-H1,D-H2、暗号化されたプレーンテキストED-P1乃至ED-Pn、および暗号化されたMIC値ED-Pmicにそれぞれ分割し、順に、MIC値算出部72(のAES処理部81)に供給する。
【0084】
MIC値算出部72(のAES処理部81)は、分割部71から供給される初期ベクトルD-IVおよびヘッダD-H1,D-H2、暗号化されたプレーンテキストED-P1乃至ED-Pn、および暗号化されたMIC値ED-Pmicのすべてに対して、CBCモードのAES処理を施す。
【0085】
具体的には初めに、攪拌処理P51で、初期ベクトルD-IVが攪拌される(図3)。その処理に利用される暗号化鍵K0およびラウンド鍵RK1乃至RK10は鍵拡張部74から供給されるが、ラウンド鍵RK1乃至RK10は鍵拡張部74の鍵拡張処理W51で生成されたものである。なおここで生成されるラウンド鍵は、図6の鍵拡張処理W1で生成されるものと同じである。
【0086】
XOR演算処理P52で、攪拌処理P51で攪拌された初期ベクトルD-IVと、初期ベクトルD-IVの次のヘッダD-H1が、XOR演算によって重ね合わされる。
【0087】
次に、攪拌処理P53で、XOR演算処理P52の結果得られたブロックデータが攪拌される(図3)。その処理に利用される暗号化鍵K0およびラウンド鍵RK1乃至RK10は鍵拡張部74から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部74の鍵拡張処理W52で生成されたものである。なおここで生成されるラウンド鍵は、図6の鍵拡張処理W2で生成されるものと同じである。
【0088】
XOR演算処理P54で、攪拌処理P53で攪拌されたブロックデータと、ヘッダD-H1の次のヘッダD-H2が、XOR演算によって重ね合わされる。
【0089】
次に、攪拌処理P55で、XOR演算処理P54の結果得られたブロックデータが攪拌される(図3)。その処理に利用される暗号化鍵K0およびラウンド鍵RK1乃至RK10は鍵拡張部74から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部74の鍵拡張処理W53で生成されたものである。なおここで生成されるラウンド鍵は、図6の鍵拡張処理W3で生成されるものと同じである。
【0090】
XOR演算処理P56で、攪拌処理P55で攪拌されたブロックデータと、後述するXOR演算処理Q53で復号された、ヘッダD-H2の次のプレーンテキストD-P1が、XOR演算によって重ね合わされる。
【0091】
次に、攪拌処理P57で、XOR演算処理P56の結果得られたブロックデータが攪拌される(図3)。その処理に利用される暗号化鍵K0およびラウンド鍵RK1乃至RK10は鍵拡張部74から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部74の鍵拡張処理W54で生成されたものである。なおここで生成されるラウンド鍵は、図6の鍵拡張処理W4で生成されるものと同じである。
【0092】
XOR演算処理P58で、攪拌処理P57で攪拌されたブロックデータと、後述するXOR演算処理Q56で復号された、プレーンテキストD-P1の次のプレーンテキストD-P2が、XOR演算によって重ね合わされる。
【0093】
同様にして、暗号化されたプレーンテキストED-P3乃至ED-Pnに対して図8に示す処理P59乃至P64が実行され、最終的に、MIC値が算出される。
【0094】
一方復号部73(のAES処理部82)は、分割部71から供給される暗号化されたプレーンテキストED-P1乃至ED-Pnに対して、CTRモードのAES処理を施す。
【0095】
具体的にはカウンタ処理Q51で、所定のカウンタ値を発生する。なおここで発生されるカウント値は、図6のカウンタ処理Q1で発生されるものと同じである。
【0096】
攪拌処理Q52で、カウンタ処理Q51で発生されたカウント値が攪拌される(図3)。その処理に利用される暗号化鍵K0およびラウンド鍵RK1乃至RK10は鍵拡張部74から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部74の鍵拡張処理W53で生成されたものである。
【0097】
XOR演算処理Q53で、攪拌処理Q52で攪拌されたカウンタ値と、暗号化されたプレーンテキストED-P1が、XOR演算によって重ね合わされて復号されプレーンテキストD-P1が生成される。
【0098】
暗号化されたプレーンテキストED-P2乃至ED-Pnに対しては、図8に示す処理Q54乃至処理Q63により、暗号化されたプレーンテキストED-P1と同様の処理が施されて復号され、プレーンテキストD-P2乃至D-Pnが生成される。また、処理Q64乃至処理Q66により、MIC値算出部72(のAES処理部81)で算出されたMIC値が暗号化される。
【0099】
分割部71から分割された暗号化されたMIC値ED-Pmicと、MIC値算出部72で算出され、処理Q64乃至処理Q66で暗号化されたMIC値が、比較部75で比較され、その結果が出力制御部76に通知される。
【0100】
このようにCBCモードのAES処理とCTRモードのAES処理が同時に行われ、各AES処理で用いる暗号化鍵が同じ場合には、同じラウンド鍵RK1乃至RK10を利用することができる。
【0101】
そこでこの復号部32には、CBCモードのAES処理とCTRモードのAES処理の2系統のAES処理に対して1個の鍵拡張部74が設けられ、復号部32は、CBCモードのAES処理を行うAES処理部81とCTRモードのAES処理を行うAES処理部82が、鍵拡張部74を共用するように構成されている。
【0102】
以上のように、2系統のAES処理を実行する場合において、2系統のAES処理で利用されるラウンド鍵を供給する鍵拡張部を共用することができるようにしたので、装置の小型化を図ることができる。特に、制定が予定されている、MIMO(Multiple Input Multiple Output)技術を用いてより高速なデータ伝送を行う802.11n規格では、高速なデータ伝送速度に対応させるために、2系統のAES処理を、時分割処理ではなく、並列に処理されることが予想される。そこでこのように2系統のAES処理を並列に実行する構成を有し、かつ1個の鍵拡張部を共用するようにすれば、小型の装置で高速伝送レート通信を実現することができる。
【0103】
なお以上においては、暗号化部31の鍵拡張部44または復号部32の鍵拡張部74のラウンド鍵の生成タイミングについては言及しなかったが、AES処理部51およびAES処理部52、またはAES処理部81およびAES処理部82でラウンド処理が実行されるタイミングが合わせて、実行されるラウンド処理で利用されるラウンド鍵を適時生成するようにすることもできる。またラウンド鍵は予め生成されており、鍵拡張部44または鍵拡張部74は、それを保持しておくようにすることもできる。そのときラウンド鍵は鍵拡張部44または鍵拡張部74が生成してもよいし、外部から供給されるようにすることもできる。
【0104】
なお以上において通信装置11は、送信機能および受信機能の両方を有するものとしたが、送信機能または受信機能のみを有する通信装置についても本発明を適用することができる。
【図面の簡単な説明】
【0105】
【図1】従来のCBCモードのAES処理を実行するAES処理部1の構成例を示すブロック図である。
【図2】従来のCTRモードのAES処理を実行するAES処理部5の構成例を示すブロック図である。
【図3】図1および図2の攪拌部3および7の動作を説明する図である。
【図4】本発明を適用した通信装置11の構成例を示すブロック図である。
【図5】図4のMAC回路21の暗号化部31の構成例を示すブロック図である。
【図6】暗号化部31の動作を説明する図である。
【図7】図4のMAC回路28の復号部32の構成例を示すブロック図である。
【図8】復号部32の動作を説明する図である。
【符号の説明】
【0106】
11 通信装置, 21 MAC回路, 28 MAC回路, 31 暗号化部, 32 復号部, 41 分割部, 42 MIC値算出部, 43 暗号化部, 44 鍵拡張部, 45 合成部, 51 AES処理部, 52 AES処理部, 71 分割部, 72 MIC値算出部, 73 復号部, 74 鍵拡張部, 75 比較部, 76 出力制御部
【技術分野】
【0001】
本発明は、通信装置に関し、2系統のAES処理を実行するに際し、2系統のAES処理で利用する鍵拡張を共用することができるようにした通信装置にする。
【背景技術】
【0002】
802.11に準拠した無線LANにおける送信処理において実行される暗号化処理では、受信側で行われるデータの完全性検査に利用される符号(MIC(Message Integrity Code)値)を算出するためのAES(Advanced Encryption Standard)処理と、データを暗号化するためのAES処理の2系統のAES処理を行う必要がある。受信処理でも同様に、受信された暗号化データからMIC値を算出するためのAES処理と、暗号化データを復号するためのAES処理の2系統のAES処理を行う必要がある。
【0003】
送信処理と受信処理におけるMIC値を算出するためのAES処理は、CBC(Cipher Block Chaining)モードのAES処理と呼ばれる。また送信処理におけるデータを暗号化するためのAES処理および受信処理における暗号化データを復号するためのAES処理は、CTR(カウンタ(counter))モードのAES処理と呼ばれる。
【0004】
CBCモードのAES処理を実行するAES処理部1は、図1に示すように構成され、ブロックデータを攪拌した結果を次のブロックデータにXOR演算によって重ね合わせる処理を行う。CTRモードのAES処理を実行するAES処理部5は、図2に示すように構成され、所定のカウンタの値を攪拌し、その結果を、ブロックデータにXOR演算によって重ね合わせる処理を行う。
【0005】
図1を参照して、CBCモードのAES処理を実行するAES処理部1について説明する。
【0006】
鍵拡張部2は、送信側と受信側とで共有する鍵(以下、暗号化鍵と称する)から、ブロックデータの長さに対応する複数の拡張鍵(以下、ラウンド鍵と称する)を、AESドラフトに示されている鍵生成スケジュールに基づいて複数生成する。
【0007】
攪拌部3は、鍵拡張部2で生成された所定の数のラウンド鍵を用いて、後述する所定の処理(以下、ラウンド処理と称する)を繰り返し行うことによって、ブロックデータを攪拌し、その攪拌の結果得られたブロックデータを出力するとともに、XOR演算部4に供給する。なおラウンド処理の繰り返し回数は、ブロックデータおよび暗号化鍵の長さによって決められており、ブロックデータおよび暗号化鍵の長さが128ビットである場合、ラウンド処理の繰り返し回数は、10回とされている。
【0008】
XOR演算部4は、攪拌部3から供給された攪拌されたブロックデータと、そのブロックデータの次に入力されるブロックデータ(攪拌前のブロックデータ)を、XOR演算によって重ね合わせ、攪拌部3に供給する。
【0009】
次に図2を参照して、CTRモードのAES処理を実行するAES処理部5について説明する。
【0010】
鍵拡張部6は、AES処理部1の鍵拡張部2と同様に、暗号化鍵から、複数のラウンド鍵を、AESドラフトに示されている鍵生成スケジュールに基づいて複数生成する。
【0011】
攪拌部7は、AES処理部1の攪拌部3と同様に、鍵拡張部6で生成された所定の数のラウンド鍵を用いてラウンド処理を繰り返し行うことによって、カウンタ8から出力されたカウンタ値を攪拌し、XOR演算部9に供給する。
【0012】
XOR演算部9は、攪拌部3から供給された攪拌されたカウンタ値と、入力されるブロックデータを、XOR演算によって重ね合わせ、その結果得られたブロックデータを出力する。
【0013】
次に、図1のAES処理部1の攪拌部3および図2のAES処理部5の攪拌部7の攪拌処理を、図3を参照して説明する。
【0014】
攪拌処理では、入力されるブロックデータ(この例の場合、128ビット)に対する、暗号化鍵加算処理RO、および10個のラウンド処理R1乃至R10が、その順番で行われる。
【0015】
初めに暗号化鍵加算処理R0で、入力されたブロックデータに、鍵拡張部2または6から供給される暗号化鍵K0が加算される。
【0016】
ラウンド処理R1では、暗号化鍵加算処理R0で暗号化鍵K0が加算されたブロックデータに対して、SubByte変換処理R11、ShiftRow変換処理R12、MixColumn変換処理R13、およびRoundKey加算処理R14が順に行われる。
【0017】
ラウンド処理R1のSubByte変換処理R11、ShiftRow変換処理R12、およびMixColumn変換処理R13では、暗号化鍵K0が加算されたブロックデータに対して所定の演算が行われて、そのブロックデータが他のブロックデータに変換される。
【0018】
ラウンド処理R1のRoundKey加算処理R14では、SubByte変換処理等の結果得られたブロックデータに、鍵拡張部2または6から供給される、暗号化鍵K0から生成されたラウンド鍵の1つのラウンド鍵RK1が加算される。
【0019】
ラウンド処理R2では、ラウンド処理R1でSubByte変換処理等が施されるとともにラウンド鍵RK1が加算されたブロックデータに対して、ラウンド処理R1と同様に、SubByte変換処理R11、ShiftRow変換処理R12、およびMixColumn変換処理R13が順に行われる。
【0020】
そしてラウンド処理R2のRoundKey加算処理R14では、SubByte変換処理等の結果得られたブロックデータに、鍵拡張部2または6から供給されるラウンド鍵RK2が加算される。
【0021】
ラウンド処理R3乃至R10では、基本的には、ラウンド処理R1およびR2と同様の処理が施される。すなわち前段のラウンド処理Rが施されたブロックデータに対してSubByte変換処理等が施されるとともに、鍵拡張部2または6から供給されるラウンド処理R3乃至R10に対応するラウンド鍵RK3乃至RK10が加算される。
【0022】
なおラウンド処理R10では、ラウンド処理R1乃至R9におけるMixColumn変換処理R13が省略されている。
【0023】
このように攪拌部3または7の攪拌処理では、鍵拡張部2または6から供給されるラウンド鍵RKを用いてラウンド処理を繰り返し行うことによって、例えば128ビット単位のブロックデータが攪拌される。
【0024】
なお特許文献1には、ラウンド処理における各処理の処理データを所定の実行ブロック長に細分化したAES処理が開示されている。
【0025】
【特許文献1】特開2003−15522号公報
【発明の開示】
【発明が解決しようとする課題】
【0026】
上述したように802.11に準拠した無線LANにおける送信処理または受信処理では、CBCモードのAES処理と、CTRモードのAES処理の2系統のAES処理を行う必要があるので、通信装置は、AES処理部1およびAES処理部5の2個のAES処理部を備える必要がある。
【0027】
しかしながらこのように2個のAES処理部1およびAES処理部5をそのまま備えることは、近年求められている装置の小型化の妨げになる。
【0028】
本発明はこのような状況に鑑みてなされたものであり、2系統のAES処理を実行する場合において、2系統のAES処理で利用されるラウンド鍵を供給する鍵拡張部を共用することができるようにするものである。
【課題を解決するための手段】
【0029】
本発明の通信装置は、暗号化鍵から所定のブロックデータの長さに対応する複数の拡張鍵を利用して前記ブロックデータを攪拌する攪拌処理を実行し、送信するブロックデータを暗号化しまたは受信した暗号化されたブロックデータを復号する通信装置において、データの完全性検査に用いる符号を生成するために前記ブロックデータを攪拌する第1の攪拌部と、ブロックデータを暗号化するためにまたは暗号化されたブロックデータを復号するために前記ブロックデータを攪拌する第2の攪拌部と、前記第1の攪拌部と前記第2の攪拌部で共用される拡張鍵を、前記第1の攪拌部と前記第2の攪拌部に供給する1個の鍵拡張部と、暗号化されたブロックデータを送信し、または暗号化されたブロックデータを受信する通信手段とを備える。
【0030】
前記鍵拡張部は、前記第1の攪拌部と前記第2の攪拌部で攪拌処理が実行されるタイミングに応じて、その攪拌処理で共用される拡張鍵を生成して、前記第1の攪拌部と前記第2の攪拌部に供給することができる。
【0031】
前記鍵拡張部は、予め生成された前記第1の攪拌部と前記第2の攪拌部で共用されるすべての拡張鍵を保持しているようにすることもできる。
【0032】
前記第1の攪拌部による攪拌処理は、CBC(Cipher Block Chaining)モードのAES(Advanced Encryption Standard)処理における攪拌処理であり、前記第2の攪拌部による攪拌処理は、CTR(counter)モードのAES処理における攪拌処理であるようにすることができる。
【発明の効果】
【0033】
本発明によれば、2系統のAES処理を実行する場合において、2系統のAES処理で利用されるラウンド鍵を供給する鍵拡張部を共用することができる。
【発明を実施するための最良の形態】
【0034】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書又は図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書又は図面に記載されていることを確認するためのものである。従って、明細書又は図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【0035】
本発明の一側面の通信装置は、
暗号化鍵から所定のブロックデータの長さに対応する複数の拡張鍵を利用して前記ブロックデータを攪拌する攪拌処理を実行し、送信するブロックデータを暗号化しまたは受信した暗号化されたブロックデータを復号する通信装置において、
データの完全性検査に用いる符号を生成するために前記ブロックデータを攪拌する第1の攪拌部(例えば、図5のAES処理部51、図7のAES処理部81)と、
ブロックデータを暗号化するためにまたは暗号化されたブロックデータを復号するために前記ブロックデータを攪拌する第2の攪拌部(例えば、図5のAES処理部52、図7のAES処理部82)と、
前記第1の攪拌部と前記第2の攪拌部で共用される拡張鍵を、前記第1の攪拌部と前記第2の攪拌部に供給する1個の鍵拡張部(例えば、図5の鍵拡張部44、図7の鍵拡張部74)と、
暗号化されたブロックデータを送信し、または暗号化されたブロックデータを受信する通信手段(例えば、図4のPHY回路21乃至アンテナ24、図4のアンテナ25乃至PHY回路27)と
を備える。
【0036】
図4は、本発明を適用した通信装置11の構成例を示している。この通信装置11は、IEEE802.11に準拠して、他の通信装置と無線ネットワークで接続されており、それらとデータの送受信を行う。
【0037】
すなわち通信装置11は、送信処理または受信処理において、CBCモードのAES処理とCTRモードのAES処理の2系統のAES処理を行うが、両者のAES処理では、後述するように同じブロックデータが処理される。
【0038】
このように2系統のAES処理において同じブロックデータが処理される場合、CBCモードのAES処理とCTRモードのAES処理で利用されるラウンド鍵を共用することができる。そこで、この通信装置11は、CBCモードのAES処理とCTRモードのAES処理において利用されるラウンド鍵を共用することができるようになされている。
【0039】
通信装置11の構成について説明する。
【0040】
MAC回路21の暗号化部31は、上位レイヤ29から供給されるデータを所定の長さ(この例の場合、128ビット)の単位のブロックに分割し、そのブロックデータに対して、後述するようにCBCモードのAES処理とCTRモードのAES処理の2系統のAES処理を施すことにより、受信側で行われるデータの完全性検査に利用されるMIC値を算出するとともに、ブロックデータを暗号化する。
【0041】
MAC回路21は、算出したMIC値と暗号化されたブロックデータを合成して、PHY回路22に供給する。
【0042】
PHY回路22は、MAC回路21から供給されたMIC値とブロックデータを変調し、RF回路23に供給する。
【0043】
RF回路23は、PHY回路22から供給された変調信号を高周波の無線信号に変換し、アンテナ24を介して送出する。
【0044】
RF回路26は、アンテナ25により受信された受信信号をベースバンド信号に変換し、PHY回路27に供給する。PHY回路27は、RF回路26から供給されたベースバンド信号をデジタル信号へ変換し、MAC回路28に供給する。
【0045】
MAC回路28の復号部32は、PHY回路27から供給されるデータを、送信側での分割処理と対応するように128ビット単位のブロックに分割し、そのブロックデータに対して、後述するようにCBCモードのAES処理とCTRモードのAES処理の2系統のAES処理を施すことにより、MIC値を算出するとともに、暗号化されたブロックデータを復号する。
【0046】
復号部32は、算出したMIC値と、受信されたMIC値を比較し、データの改竄等の有無を判断し、その判断結果に基づいて復号したブロックデータを上位レイヤ29に供給する。
【0047】
上位レイヤ29は、送信するデータを適宜MAC回路21に供給する。上位レイヤ29はまた、MAC回路28から供給されたデータ(すなわち受信データ)に対してアプリケーション上の所定の処理を実行する。
【0048】
図5は、図4のMAC回路21の暗号化部31の構成例を示している。
【0049】
分割部41は、上位レイヤ29から供給されたデータを128ビット単位のブロックデータに分割し、MIC値算出部42および暗号化部43のそれぞれに供給する。
【0050】
MIC値算出部42は、CBCモードのAES処理を行うAES処理部51を有している。AES処理部51は、分割部41から供給されたブロックデータに対して、鍵拡張部44から供給されたラウンド鍵を利用してCBCモードのAES処理を施しMIC値を算出し、合成部45に供給する。なおAES処理部51は、ラウンド鍵は鍵拡張部44から供給されるため、図1のAES処理部1の攪拌部3とXOR演算部4から構成されている。
【0051】
暗号化部43は、CTRモードのAES処理を行うAES処理部52を有している。AES処理部52は、分割部41から供給されたブロックデータに対して、鍵拡張部44から供給されたラウンド鍵を利用してCTRモードのAES処理を施し暗号化し、暗号化したブロックデータを合成部45に供給する。なおAES処理部52は、ラウンド鍵は鍵拡張部44から供給されるため、図2のAES処理部5の攪拌部7、カウンタ8、およびXOR演算部9から構成されている。
【0052】
鍵拡張部44は、図1のAES処理部1を構成する鍵拡張部2または図2のAES処理部5を構成する鍵拡張部6に相当するものであり、MIC値算出部42および暗号化部43で行われるAES処理で利用されるラウンド鍵(いまの例の場合、10個のラウンド鍵)を、暗号化鍵から生成し、MIC値算出部42のAES処理部51および暗号化部43のAES処理部52に供給する。
【0053】
合成部45は、MIC値算出部42から供給されたMIC値と、暗号化部43から供給された暗号化されたブロックデータを合成し、PHY回路22に供給する。
【0054】
次に、図3および図6を参照して、暗号化部31の動作を説明する。
【0055】
上位レイヤ29から供給されるデータは、初期ベクトル(Initialization Vector)、ヘッダ(Header)、およびプレーンテキスト(Plain Text)から構成されている。
【0056】
分割部41は、上位レイヤ29から供給されるデータを構成する初期ベクトルを1個のブロックデータD-IV、ヘッダを2個のブロックデータD-H1,D-H2、そしてプレーンテキストデータを、n個のブロックデータD-P1乃至D-Pnにそれぞれ分割し、順に、MIC値算出部42(のAES処理部51)に供給する。なおプレーンテキストの最後のブロックデータD-Pnには、必要に応じてパディング(padding)処理が施されている。
【0057】
MIC値算出部42(のAES処理部51)は、分割部41から供給される初期ベクトルD-IVおよびヘッダD-H1,D-H2、およびプレーンテキストD-P1乃至D-Pnのすべてに対して、CBCモードのAES処理を施す。
【0058】
具体的には初めに、攪拌処理P1で、初期ベクトルD-IVが攪拌される(図3)。その処理に利用される暗号化鍵KOおよびラウンド鍵RK1乃至RK10は鍵拡張部44から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部44の鍵拡張処理W1で生成されたものである。
【0059】
XOR演算処理P2で、攪拌処理P1で攪拌された初期ベクトルD-IVと、初期ベクトルD-IVの次のヘッダD-H1が、XOR演算によって重ね合わされる。
【0060】
次に、攪拌処理P3で、XOR演算処理P2の結果得られたブロックデータが攪拌される(図3)。その処理に利用される暗号化鍵KOおよびラウンド鍵RK1乃至RK10は鍵拡張部44から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部44の鍵拡張処理W2で生成されたものである。
【0061】
XOR演算処理P4で、攪拌処理P3で攪拌されたブロックデータと、ヘッダD-H1の次のヘッダD-H2が、XOR演算によって重ね合わされる。
【0062】
次に、攪拌処理P5で、XOR演算処理P4の結果得られたブロックデータが攪拌される(図3)。その処理に利用される暗号化鍵KOおよびラウンド鍵RK1乃至RK10は鍵拡張部44から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部44の鍵拡張処理W3で生成されたものである。
【0063】
XOR演算処理P6で、攪拌処理P5で攪拌されたブロックデータと、ヘッダD-H2の次のプレーンテキストD-P1が、XOR演算によって重ね合わされる。
【0064】
次に、攪拌処理P7で、XOR演算処理P6の結果得られたブロックデータが攪拌される(図3)。その処理に利用される暗号化鍵KOおよびラウンド鍵RK1乃至RK10は鍵拡張部44から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部44の鍵拡張処理W4で生成されたものである。
【0065】
XOR演算処理P8で、攪拌処理P7で攪拌されたブロックデータと、プレーンテキストD-P1の次のプレーンテキストD-P2が、XOR演算によって重ね合わされる。
【0066】
プレーンテキストD-P3乃至D-Pnに対しても、図6に示す処理P9乃至P14により、初期ベクトルD-IV乃至プレーンテキストD-P2と同様の処理が施され、最終的にMIC値が算出される。
【0067】
一方暗号化部43(のAES処理部52)は、分割部41から供給されるプレーンテキストD-P1乃至D-Pnに対して、CTRモードのAES処理を施す。
【0068】
具体的にはカウンタ処理Q1で、所定のカウンタ値を発生する。なお暗号化部43で発生されるカウンタ値は、128ビットで、下4ビットの値が1乃至10に順にインクリメントされる。
【0069】
攪拌処理Q2で、カウンタ処理Q1で発生されたカウント値が攪拌される(図3)。その処理に利用される暗号化鍵KOおよびラウンド鍵RK1乃至RK10は鍵拡張部44から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部44の鍵拡張処理W3で生成されたものである。
【0070】
XOR演算処理Q3で、攪拌処理Q2で攪拌されたカウンタ値と、プレーンテキストD-P1が、XOR演算によって重ね合わされてプレーンテキストD-P1が暗号化され、暗号化されたプレーンテキストED-P1が生成される。
【0071】
プレーンテキストD-P2乃至D-Pn、およびMIC値に対しても、図6に示す処理Q4乃至処理Q16により、プレーンテキストD-P1と同様の処理が施されて暗号化され、暗号化されたプレーンテキストED-P2乃至D-Pnおよび暗号化されたMIC値ED-Pmicが生成される。
【0072】
このようにCBCモードのAES処理とCTRモードのAES処理が同時に行われ、各AES処理で用いる暗号化鍵K0が同じ場合には、同じラウンド鍵RK1乃至RK10を利用することができる。
【0073】
そこでこの暗号化部31には、CBCモードのAES処理とCTRモードのAES処理の2系統のAES処理に対して1個の鍵拡張部44が設けられ、暗号化部31は、CBCモードのAES処理を行うAES処理部51とCTRモードのAES処理を行うAES処理部52が、鍵拡張部44を共用するように構成されている。
【0074】
図7は、図4のMAC回路28の復号部32の構成例を示している。
【0075】
分割部71は、PHY回路27から供給されたデータを128ビット単位のブロックデータに分割し、MIC値算出部72および復号部73のそれぞれに供給する。
【0076】
分割部71はまた、PHY回路27から供給されたデータの最後のブロックデータ(暗号化されたMIC値のブロックデータ)を、比較部75に供給する。
【0077】
MIC値算出部72は、CBCモードのAES処理を行うAES処理部81を有している。AES処理部81は、分割部71から供給されたブロックデータに対して、鍵拡張部74から供給されたラウンド鍵を利用してCBCモードのAES処理を施してMIC値を算出し、比較部75に供給する。なおAES処理部81は、ラウンド鍵は鍵拡張部74から供給されるため、図1のAES処理部1の攪拌部3とXOR演算部4から構成されている。
【0078】
復号部73は、CTRモードのAES処理を行うAES処理部82を有している。AES処理部82は、分割部71から供給された暗号化されたブロックデータに対して、鍵拡張部74から供給されたラウンド鍵を利用してCTRモードのAES処理を施し復号し、復号したブロックデータを出力制御部76に供給する。なおAES処理部82は、ラウンド鍵は鍵拡張部74から供給されるため、図2のAES処理部5の攪拌部7、カウンタ8、およびXOR演算部9から構成されている。
【0079】
鍵拡張部74は、図1のAES処理部1を構成する鍵拡張部2または図2のAES処理部5を構成する鍵拡張部6に相当するものであり、MIC値算出部72および復号部73で行われるAES処理で利用されるラウンド鍵(いまの例の場合、10個のラウンド鍵)を、暗号化鍵から生成し、MIC値算出部72のAES処理部81および復号部73のAES処理部82に供給する。
【0080】
比較部75は、MIC値算出部72から供給されたMIC値と、分割部71から供給されたMIC値とが同じであるか否かを判定し、同じであれば、その旨を、出力制御部76に通知する。
【0081】
出力制御部76は、比較部75からの通知に応じて、復号部73から供給されたブロックデータを、上位レイヤ29に供給する。
【0082】
次に、図3および図8を参照して、復号部32の動作を説明する。
【0083】
分割部71は、PHY回路27から供給されたデータを、128ビットの初期ベクトルD-IV、ヘッダD-H1,D-H2、暗号化されたプレーンテキストED-P1乃至ED-Pn、および暗号化されたMIC値ED-Pmicにそれぞれ分割し、順に、MIC値算出部72(のAES処理部81)に供給する。
【0084】
MIC値算出部72(のAES処理部81)は、分割部71から供給される初期ベクトルD-IVおよびヘッダD-H1,D-H2、暗号化されたプレーンテキストED-P1乃至ED-Pn、および暗号化されたMIC値ED-Pmicのすべてに対して、CBCモードのAES処理を施す。
【0085】
具体的には初めに、攪拌処理P51で、初期ベクトルD-IVが攪拌される(図3)。その処理に利用される暗号化鍵K0およびラウンド鍵RK1乃至RK10は鍵拡張部74から供給されるが、ラウンド鍵RK1乃至RK10は鍵拡張部74の鍵拡張処理W51で生成されたものである。なおここで生成されるラウンド鍵は、図6の鍵拡張処理W1で生成されるものと同じである。
【0086】
XOR演算処理P52で、攪拌処理P51で攪拌された初期ベクトルD-IVと、初期ベクトルD-IVの次のヘッダD-H1が、XOR演算によって重ね合わされる。
【0087】
次に、攪拌処理P53で、XOR演算処理P52の結果得られたブロックデータが攪拌される(図3)。その処理に利用される暗号化鍵K0およびラウンド鍵RK1乃至RK10は鍵拡張部74から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部74の鍵拡張処理W52で生成されたものである。なおここで生成されるラウンド鍵は、図6の鍵拡張処理W2で生成されるものと同じである。
【0088】
XOR演算処理P54で、攪拌処理P53で攪拌されたブロックデータと、ヘッダD-H1の次のヘッダD-H2が、XOR演算によって重ね合わされる。
【0089】
次に、攪拌処理P55で、XOR演算処理P54の結果得られたブロックデータが攪拌される(図3)。その処理に利用される暗号化鍵K0およびラウンド鍵RK1乃至RK10は鍵拡張部74から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部74の鍵拡張処理W53で生成されたものである。なおここで生成されるラウンド鍵は、図6の鍵拡張処理W3で生成されるものと同じである。
【0090】
XOR演算処理P56で、攪拌処理P55で攪拌されたブロックデータと、後述するXOR演算処理Q53で復号された、ヘッダD-H2の次のプレーンテキストD-P1が、XOR演算によって重ね合わされる。
【0091】
次に、攪拌処理P57で、XOR演算処理P56の結果得られたブロックデータが攪拌される(図3)。その処理に利用される暗号化鍵K0およびラウンド鍵RK1乃至RK10は鍵拡張部74から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部74の鍵拡張処理W54で生成されたものである。なおここで生成されるラウンド鍵は、図6の鍵拡張処理W4で生成されるものと同じである。
【0092】
XOR演算処理P58で、攪拌処理P57で攪拌されたブロックデータと、後述するXOR演算処理Q56で復号された、プレーンテキストD-P1の次のプレーンテキストD-P2が、XOR演算によって重ね合わされる。
【0093】
同様にして、暗号化されたプレーンテキストED-P3乃至ED-Pnに対して図8に示す処理P59乃至P64が実行され、最終的に、MIC値が算出される。
【0094】
一方復号部73(のAES処理部82)は、分割部71から供給される暗号化されたプレーンテキストED-P1乃至ED-Pnに対して、CTRモードのAES処理を施す。
【0095】
具体的にはカウンタ処理Q51で、所定のカウンタ値を発生する。なおここで発生されるカウント値は、図6のカウンタ処理Q1で発生されるものと同じである。
【0096】
攪拌処理Q52で、カウンタ処理Q51で発生されたカウント値が攪拌される(図3)。その処理に利用される暗号化鍵K0およびラウンド鍵RK1乃至RK10は鍵拡張部74から供給されるが、ラウンド鍵RK1乃至RK10は、鍵拡張部74の鍵拡張処理W53で生成されたものである。
【0097】
XOR演算処理Q53で、攪拌処理Q52で攪拌されたカウンタ値と、暗号化されたプレーンテキストED-P1が、XOR演算によって重ね合わされて復号されプレーンテキストD-P1が生成される。
【0098】
暗号化されたプレーンテキストED-P2乃至ED-Pnに対しては、図8に示す処理Q54乃至処理Q63により、暗号化されたプレーンテキストED-P1と同様の処理が施されて復号され、プレーンテキストD-P2乃至D-Pnが生成される。また、処理Q64乃至処理Q66により、MIC値算出部72(のAES処理部81)で算出されたMIC値が暗号化される。
【0099】
分割部71から分割された暗号化されたMIC値ED-Pmicと、MIC値算出部72で算出され、処理Q64乃至処理Q66で暗号化されたMIC値が、比較部75で比較され、その結果が出力制御部76に通知される。
【0100】
このようにCBCモードのAES処理とCTRモードのAES処理が同時に行われ、各AES処理で用いる暗号化鍵が同じ場合には、同じラウンド鍵RK1乃至RK10を利用することができる。
【0101】
そこでこの復号部32には、CBCモードのAES処理とCTRモードのAES処理の2系統のAES処理に対して1個の鍵拡張部74が設けられ、復号部32は、CBCモードのAES処理を行うAES処理部81とCTRモードのAES処理を行うAES処理部82が、鍵拡張部74を共用するように構成されている。
【0102】
以上のように、2系統のAES処理を実行する場合において、2系統のAES処理で利用されるラウンド鍵を供給する鍵拡張部を共用することができるようにしたので、装置の小型化を図ることができる。特に、制定が予定されている、MIMO(Multiple Input Multiple Output)技術を用いてより高速なデータ伝送を行う802.11n規格では、高速なデータ伝送速度に対応させるために、2系統のAES処理を、時分割処理ではなく、並列に処理されることが予想される。そこでこのように2系統のAES処理を並列に実行する構成を有し、かつ1個の鍵拡張部を共用するようにすれば、小型の装置で高速伝送レート通信を実現することができる。
【0103】
なお以上においては、暗号化部31の鍵拡張部44または復号部32の鍵拡張部74のラウンド鍵の生成タイミングについては言及しなかったが、AES処理部51およびAES処理部52、またはAES処理部81およびAES処理部82でラウンド処理が実行されるタイミングが合わせて、実行されるラウンド処理で利用されるラウンド鍵を適時生成するようにすることもできる。またラウンド鍵は予め生成されており、鍵拡張部44または鍵拡張部74は、それを保持しておくようにすることもできる。そのときラウンド鍵は鍵拡張部44または鍵拡張部74が生成してもよいし、外部から供給されるようにすることもできる。
【0104】
なお以上において通信装置11は、送信機能および受信機能の両方を有するものとしたが、送信機能または受信機能のみを有する通信装置についても本発明を適用することができる。
【図面の簡単な説明】
【0105】
【図1】従来のCBCモードのAES処理を実行するAES処理部1の構成例を示すブロック図である。
【図2】従来のCTRモードのAES処理を実行するAES処理部5の構成例を示すブロック図である。
【図3】図1および図2の攪拌部3および7の動作を説明する図である。
【図4】本発明を適用した通信装置11の構成例を示すブロック図である。
【図5】図4のMAC回路21の暗号化部31の構成例を示すブロック図である。
【図6】暗号化部31の動作を説明する図である。
【図7】図4のMAC回路28の復号部32の構成例を示すブロック図である。
【図8】復号部32の動作を説明する図である。
【符号の説明】
【0106】
11 通信装置, 21 MAC回路, 28 MAC回路, 31 暗号化部, 32 復号部, 41 分割部, 42 MIC値算出部, 43 暗号化部, 44 鍵拡張部, 45 合成部, 51 AES処理部, 52 AES処理部, 71 分割部, 72 MIC値算出部, 73 復号部, 74 鍵拡張部, 75 比較部, 76 出力制御部
【特許請求の範囲】
【請求項1】
暗号化鍵から所定のブロックデータの長さに対応する複数の拡張鍵を利用して前記ブロックデータを攪拌する攪拌処理を実行し、送信するブロックデータを暗号化しまたは受信した暗号化されたブロックデータを復号する通信装置において、
データの完全性検査に用いる符号を生成するために前記ブロックデータを攪拌する第1の攪拌部と、
ブロックデータを暗号化するためにまたは暗号化されたブロックデータを復号するために前記ブロックデータを攪拌する第2の攪拌部と、
前記第1の攪拌部と前記第2の攪拌部で共用される拡張鍵を、前記第1の攪拌部と前記第2の攪拌部に供給する1個の鍵拡張部と、
暗号化されたブロックデータを送信し、または暗号化されたブロックデータを受信する通信手段と
を備える通信装置。
【請求項2】
前記鍵拡張部は、前記第1の攪拌部と前記第2の攪拌部で攪拌処理が実行されるタイミングに応じて、その攪拌処理で共用される拡張鍵を生成して、前記第1の攪拌部と前記第2の攪拌部に供給する
請求項1に記載の通信装置。
【請求項3】
前記鍵拡張部は、予め生成された前記第1の攪拌部と前記第2の攪拌部で共用されるすべての拡張鍵を保持している
請求項1に記載の通信装置。
【請求項4】
前記第1の攪拌部による攪拌処理は、CBC(Cipher Block Chaining)モードのAES(Advanced Encryption Standard)処理における攪拌処理であり、
前記第2の攪拌部による攪拌処理は、CTR(counter)モードのAES処理における攪拌処理である
請求項1に記載の通信装置。
【請求項1】
暗号化鍵から所定のブロックデータの長さに対応する複数の拡張鍵を利用して前記ブロックデータを攪拌する攪拌処理を実行し、送信するブロックデータを暗号化しまたは受信した暗号化されたブロックデータを復号する通信装置において、
データの完全性検査に用いる符号を生成するために前記ブロックデータを攪拌する第1の攪拌部と、
ブロックデータを暗号化するためにまたは暗号化されたブロックデータを復号するために前記ブロックデータを攪拌する第2の攪拌部と、
前記第1の攪拌部と前記第2の攪拌部で共用される拡張鍵を、前記第1の攪拌部と前記第2の攪拌部に供給する1個の鍵拡張部と、
暗号化されたブロックデータを送信し、または暗号化されたブロックデータを受信する通信手段と
を備える通信装置。
【請求項2】
前記鍵拡張部は、前記第1の攪拌部と前記第2の攪拌部で攪拌処理が実行されるタイミングに応じて、その攪拌処理で共用される拡張鍵を生成して、前記第1の攪拌部と前記第2の攪拌部に供給する
請求項1に記載の通信装置。
【請求項3】
前記鍵拡張部は、予め生成された前記第1の攪拌部と前記第2の攪拌部で共用されるすべての拡張鍵を保持している
請求項1に記載の通信装置。
【請求項4】
前記第1の攪拌部による攪拌処理は、CBC(Cipher Block Chaining)モードのAES(Advanced Encryption Standard)処理における攪拌処理であり、
前記第2の攪拌部による攪拌処理は、CTR(counter)モードのAES処理における攪拌処理である
請求項1に記載の通信装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【公開番号】特開2008−304528(P2008−304528A)
【公開日】平成20年12月18日(2008.12.18)
【国際特許分類】
【出願番号】特願2007−149209(P2007−149209)
【出願日】平成19年6月5日(2007.6.5)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成20年12月18日(2008.12.18)
【国際特許分類】
【出願日】平成19年6月5日(2007.6.5)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]