説明

暗号/復号装置

【課題】回路規模を縮小できる暗号/復号装置を提供する。
【解決手段】暗号/復号演算回路100は、所定のデータを所定のビット長からなる暗号鍵を用いてAES方式に基づき暗号化演算する暗号演算回路、および前記暗号演算回路で暗号化演算された前記所定のデータを暗号鍵と同一のビット長からなる復号鍵を用いてAES方式に基づき復号化演算する復号演算回路の両方の回路機能を有している。鍵スケジュール演算回路200は、暗号鍵および復号鍵のいずれか一方から他方を生成する処理すなわち鍵スケジュール演算処理を行うためのものである。暗号/復号鍵用レジスタ300は、暗号鍵および復号鍵を交互に記憶する動作を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号/復号装置に関し、特に、回路規模を縮小するための技術に関する。
【背景技術】
【0002】
従来から、暗号/復号装置においては、共通鍵暗号方式であるAES(Advanced Encryption Standard)方式が採用されている(例えば、非特許文献1参照)。
【0003】
AES方式を採用した暗号/復号装置においては、暗号化演算を行うための暗号鍵と復号化演算を行うための復号鍵とがそれぞれレジスタ等に保持されて用いられる。
【0004】
すなわち、まず、メモリ等から読み込まれた暗号鍵が、暗号鍵用レジスタに保持される。次に、この暗号鍵に対して、鍵スケジュール演算を実行することにより復号鍵が生成され、生成された復号鍵が復号鍵用レジスタに保持される。そして、暗号化演算時には暗号鍵用レジスタから暗号鍵が読み出され、復号化演算時には復号鍵用レジスタから復号鍵が読み出され、それぞれ使用される。
【0005】
【非特許文献1】"Announcing the ADVANCED ENCRYPTION STANDARD (AES)"、[online]、米国国立標準・技術院(NIST)、[平成19年5月1日検索]、インターネット<URL: http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf>
【発明の開示】
【発明が解決しようとする課題】
【0006】
AES方式においては、鍵として、最大でビット長が256ビットのものが使用される。従って、鍵用レジスタとしては、暗号鍵および復号鍵にそれぞれ対応して、256ビット×2=512ビット長からなるレジスタを設ける必要がある。そのため、回路規模が大きくなってしまうという問題点があった。
【0007】
本発明は上記の問題点を解決するためになされたものであり、回路規模を縮小できる暗号/復号装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の一実施の形態において、暗号/復号演算回路は、所定のデータを所定のビット長からなる暗号鍵を用いてAES方式に基づき暗号化演算する暗号演算回路、および前記暗号演算回路で暗号化演算された前記所定のデータを暗号鍵と同一のビット長からなる復号鍵を用いてAES方式に基づき復号化演算する復号演算回路の両方の回路機能を有している。鍵スケジュール演算回路は、暗号鍵および復号鍵のいずれか一方から他方を生成する処理すなわち鍵スケジュール演算処理を行うためのものである。暗号/復号鍵用レジスタは、暗号鍵および復号鍵を交互に記憶する動作を行う。
【発明の効果】
【0009】
本発明においては、一の鍵記憶装置へ二の鍵を交互に記憶させるので、二の鍵記憶装置を用いる場合に比較して、回路規模を縮小できる。
【発明を実施するための最良の形態】
【0010】
<実施の形態1>
図1は、実施の形態1に係る暗号/復号装置の構成を模式的に示すブロック図である。
【0011】
図1に示されるように、本実施の形態に係る暗号/復号装置は、暗号/復号演算回路100と鍵スケジュール演算回路200と暗号/復号鍵用レジスタ300とを含んで構成されており、AES方式に基づき暗号化演算および復号化演算を行うものである。
【0012】
暗号/復号演算回路100は、所定のデータを所定のビット長(AES方式においては128ビット、192ビット、または256ビット)からなる暗号鍵を用いてAES方式に基づき暗号化演算する暗号演算回路、および前記暗号演算回路で暗号化演算された前記所定のデータを暗号鍵と同一のビット長からなる復号鍵を用いてAES方式に基づき復号化演算する復号演算回路の両方の回路機能を有している。
【0013】
鍵スケジュール演算回路200は、暗号鍵および復号鍵のいずれか一方から他方を生成する処理すなわち鍵スケジュール演算処理を行うためのものである。
【0014】
暗号/復号鍵用レジスタ300は、暗号鍵および復号鍵を交互に記憶する動作を行う鍵記憶装置である。
【0015】
図2は、比較用に、暗号鍵を記憶する鍵記憶装置(暗号鍵用レジスタ301)と復号鍵を記憶する鍵記憶装置(復号鍵用レジスタ302)とを個別に設け、これらを鍵選択回路400で選択する暗号/復号装置を示している。
【0016】
図2においては、まず、外部から入力された暗号鍵は、暗号鍵用レジスタ301へ記憶される。次に、鍵スケジュール演算回路200により、暗号鍵用レジスタ301へ記憶された暗号鍵から、復号鍵が生成され、復号鍵用レジスタ302へ記憶される。そして、暗号/復号演算回路100は、暗号化演算を実行するときには暗号鍵用レジスタ301へ記憶された暗号鍵を、復号化演算を実行するときには復号鍵用レジスタ302へ記憶された復号鍵を、それぞれ鍵選択回路400を介し取得して、演算を実行する。
【0017】
このような場合には、例えば、暗号鍵および復号鍵がそれぞれ256ビット長からなる場合には、鍵記憶装置の合計のビット長は256ビット×2=512ビットとなるので、回路規模が大きくなってしまうという問題点がある。
【0018】
一方、本実施の形態に係る図1の暗号/復号装置においては、暗号/復号鍵用レジスタ300は、暗号鍵および復号鍵のいずれか一方の鍵のみを記憶しておき、必要に応じて、一方の鍵から他方の鍵を鍵スケジュール演算回路200にて生成し、生成された他方の鍵を暗号/復号鍵用レジスタ300へ上書きする。これにより、鍵記憶装置の合計のビット長すなわち暗号/復号鍵用レジスタ300のビット長を256ビットに抑えつつ、必要な暗号化演算および復号化演算を行うことが可能となる。
【0019】
すなわち、本実施の形態に係る図1の暗号/復号装置は、暗号/復号演算回路100においては暗号鍵および復号鍵が同時に用いられることがないことに着目し、いずれか一方の鍵のみを記憶できる必要最小限の鍵記憶装置を設けることを特徴とするものである。従って、図2に比較して、一方の鍵から他方の鍵を鍵スケジュール演算回路200により生成するための処理時間が余分に必要となるものの、回路規模を縮小できる。
【0020】
なお、図1では、鍵スケジュール演算回路200により一方の鍵から他方の鍵を生成し暗号/復号鍵用レジスタ300へ上書きする動作は、演算の種別が一方(例えば暗号化演算)から他方(例えば復号化演算)へ遷移した場合にのみ行われる。
【0021】
すなわち、暗号化演算の後に復号化演算を行う場合には、暗号/復号鍵用レジスタ300に記憶されている暗号鍵へ復号鍵が上書きされ、復号化演算の後に暗号化演算を行う場合には、暗号/復号鍵用レジスタ300に記憶されている復号鍵へ暗号鍵が上書きされる。一方、暗号化演算の後に引き続き暗号化演算を行う場合や、復号化演算の後に引き続き復号化演算を行う場合には、暗号/復号鍵用レジスタ300への鍵の上書きは行われない。
【0022】
この上書きを適切に行うためには、暗号/復号装置は、次に行われる演算の種別が暗号化/復号化のいずれであるか、および暗号/復号鍵用レジスタ300に現在記憶されている鍵の種別が暗号鍵/復号鍵のいずれであるかを、検知している必要がある。
【0023】
上記の演算の種別の検知は、動作命令が入力される都度その動作命令を解析することにより行ってもよく、あるいは、一連の動作命令が記述されたプログラムを予め取得し解析しておくことにより行ってもよい。
【0024】
また、上記の鍵の種別の検知は、演算の都度、暗号/復号鍵用レジスタ300から鍵を読み出すことにより行ってもよく、あるいは、図3に示されるように、暗号/復号鍵用レジスタ300に記憶されている鍵の種別を内蔵ビットに記憶する(例えば、暗号鍵であれば”1”を記憶し、復号鍵であれば”0”を記憶する)暗号/復号鍵判別回路310を設けることにより行ってもよい。そして、この内蔵ビットを、鍵が書き換えられるタイミングで反転させればよい。
【0025】
また、あるいは、図4に示されるように、暗号/復号鍵判別回路310に加えて、暗号/復号鍵生成自動回路320を設けてもよい。この暗号/復号鍵生成自動回路320は、外部から暗号/復号装置へ入力される動作命令に応答して、暗号/復号鍵用レジスタ300に記憶されている鍵の種別を暗号/復号鍵判別回路310により判別し、必要に応じて、鍵スケジュール演算回路200により鍵を生成し、書き換えを行う。これにより、鍵の書き換えを、外部から入力される動作命令に応答して行うことが可能となる。
【0026】
このように、本実施の形態に係る暗号/復号装置は、暗号/復号鍵用レジスタ300からなる一の鍵記憶装置へ、二の鍵すなわち暗号鍵と復号鍵とを、交互に記憶させる動作を行う。従って、図2のように暗号鍵用レジスタ301と復号鍵用レジスタ302とからなる二の鍵記憶装置を備える場合に比較して、回路規模を縮小できる。
【0027】
なお、上述においては、暗号/復号鍵用レジスタ300のビット長が、暗号鍵および復号鍵のビット長と同一である(256ビット)場合について説明したが、必ずしも同一である必要はなく、暗号/復号鍵用レジスタ300のビット長が暗号鍵および復号鍵のビット長以上かつその2倍未満(512ビット未満)であれば、図2の場合に比較して、回路規模を縮小することが可能である。
【0028】
<実施の形態2>
実施の形態1においては、一方の鍵から他方の鍵を生成するために単独で鍵スケジュール演算処理を実行する場合について説明した。しかし、AES方式では、暗号鍵は暗号化演算を行うことにより復号鍵へ遷移し、復号鍵は復号化演算を行うことにより暗号鍵へ遷移する。従って、これを利用することにより、重複して実行される鍵スケジュール演算処理を省くことが可能となる。
【0029】
図5は、実施の形態2に係る暗号/復号装置の構成を模式的に示すブロック図である。図5は、図1において、暗号/復号演算回路100における演算処理により生成された復号鍵または暗号鍵を暗号/復号鍵用レジスタ300へ上書きするようにしたものである。これにより、鍵スケジュール演算処理の実行回数を減らし、処理時間を短縮することが可能となる。
【0030】
図6〜7は、非特許文献1の第35〜38頁に対応しており、128ビット長からなる暗号鍵/復号鍵が、暗号化/復号化演算を行うことにより、128ビット長の復号鍵/暗号鍵として生成される遷移を示している。なお、図6が暗号化演算に、図7が復号化演算に、それぞれ対応している。
【0031】
図6においては、暗号化演算前の暗号鍵round[ 0].k_schと暗号化演算後の暗号鍵round[10].k_schとが示されている。また、図7においては、復号化演算前の復号鍵round[ 0].ik_schと復号化演算後の復号鍵round[10].ik_schとが示されている。なお、round[ n](0<n<10)は、演算の途中すなわち遷移中の鍵に対応している。
【0032】
図6〜7に示されるように、暗号化演算後の暗号鍵round[10].k_schは復号化演算前の復号鍵round[ 0].ik_schに等しく、復号化演算後の復号鍵round[10].ik_schは暗号化演算前の暗号鍵round[ 0].k_schに等しい。すなわち、暗号化演算により、暗号鍵は復号鍵へ遷移し、復号化演算により、復号鍵は暗号鍵へ遷移している。
【0033】
このように、本実施の形態に係る暗号/復号装置においては、暗号/復号演算回路100は、暗号化演算に伴い暗号鍵から生成された復号鍵または復号化演算に伴い前記復号鍵から生成された暗号鍵を、それぞれ、暗号/復号鍵用レジスタ300へ書き込む動作を行う。従って、実施の形態1の効果に加えて、鍵スケジュール演算処理の実行回数を減らし、処理時間を短縮できるという効果を奏する。
【0034】
なお、本実施の形態は、鍵が書き換えられるタイミングが予め検知されている場合に特に有効である。従って、例えば、鍵が書き換えられるタイミングが予め検知されている場合には、上述したような暗号/復号演算回路100を用いた(すなわち鍵スケジュール演算回路200を単独で用いるのではなく、暗号/復号演算回路100と同時に用いた)鍵生成を行い、鍵が書き換えられるタイミングが予め検知されていない場合には、図1のように鍵スケジュール演算回路200を単独で用いた鍵の生成を行うようにすればよい。
【0035】
<実施の形態3>
実施の形態1においては、暗号/復号鍵用レジスタ300のビット長が暗号鍵および復号鍵のビット長の2倍未満である場合(言い換えれば、暗号鍵および復号鍵のビット長が暗号/復号鍵用レジスタ300のビット長の半分より大きい場合)に、暗号/復号鍵用レジスタ300へ暗号鍵および復号鍵を交互に記憶する動作について説明した。
【0036】
すなわち、暗号鍵および復号鍵のビット長が暗号/復号鍵用レジスタ300のビット長の半分より大きい場合には、暗号鍵および復号鍵を同時に暗号/復号鍵用レジスタ300へ記憶させることができないので、交互に記憶させる必要があるが、暗号鍵および復号鍵のビット長が暗号/復号鍵用レジスタ300のビット長の半分以下である場合には、暗号鍵および復号鍵を同時に暗号/復号鍵用レジスタ300へ記憶させることが可能である。
【0037】
実施の形態3に係る暗号/復号装置は、複数組の暗号鍵および復号鍵を用いる場合に、それらのビット長に応じて、暗号/復号鍵用レジスタ300への記憶動作を異ならせることを特徴とするものである。
【0038】
図8は、本実施の形態に係る暗号/復号装置の構成を模式的に示すブロック図である。図8において、暗号/復号装置は、256ビット長からなる暗号/復号鍵用レジスタ300aを備えており、暗号/復号鍵用レジスタ300aは、128ビット長からなる鍵記憶領域303,304を有している。
【0039】
暗号/復号鍵用レジスタ300aは、暗号鍵および復号鍵のビット長が128ビット以下である場合には、図8に示されるように、これらを同時に記憶する図2と同様の動作を行い、暗号鍵および復号鍵のビット長が128ビットより大きい場合には、実施の形態1と同様に、これらを交互に記憶する動作を行う。
【0040】
このように、本実施の形態に係る暗号/復号装置は、128×2=256ビット長以上且つ196×2=392ビット長未満からなる暗号/復号鍵用レジスタ300aを備え、暗号鍵および復号鍵のビット長が128ビットより大きい場合(具体的には、192ビットまたは256ビットである場合)には、これらを交互に記憶する動作を行い、暗号鍵および復号鍵のビット長が128ビット以下である場合(具体的には、128ビットである場合)には、これらを同時に記憶する動作を行う。従って、実施の形態1の効果に加えて、暗号鍵および復号鍵のビット長が128ビットである場合における処理時間を短縮できるという効果を奏する。
【0041】
なお、上述においては、256ビット長からなる暗号/復号鍵用レジスタ300aに、128ビット長からなる暗号鍵および復号鍵を同時に記憶させる場合について説明したが、同時に記憶される二の鍵の種別は、同一であってもよい。すなわち、図9に示されるように、鍵記憶領域303,304には、128ビット長からなる第一暗号鍵および第二暗号鍵を、それぞれ、同時に記憶させてもよい。なお、第一暗号鍵と第二暗号鍵とは、ビット長が同じで値が異なる二種類の鍵を構成するものとする。
【0042】
図9の暗号/復号装置は、第一暗号鍵のビット長が128ビットである場合には、第一暗号鍵および第二復号鍵を同時に記憶する動作と第一復号鍵(第一暗号鍵に対応)および第二復号鍵(第二暗号鍵に対応)を同時に記憶する動作とを交互に行う。また、第一暗号鍵のビット長が192ビットまたは256ビットである場合には、第一暗号鍵および第一復号鍵を交互に記憶する動作を行う。すなわち、第一暗号鍵のビット長が128ビットである場合には、二種類の鍵を使用することが可能となる。
【図面の簡単な説明】
【0043】
【図1】実施の形態1に係る暗号/復号装置の構成を模式的に示すブロック図である。
【図2】比較用の暗号/復号装置の一の構成を模式的に示すブロック図である。
【図3】実施の形態1に係る暗号/復号装置の構成を模式的に示すブロック図である。
【図4】実施の形態1に係る暗号/復号装置の構成を模式的に示すブロック図である。
【図5】実施の形態2に係る暗号/復号装置の構成を模式的に示すブロック図である。
【図6】実施の形態2に係る暗号/復号装置における暗号化演算を示す図である。
【図7】実施の形態2に係る暗号/復号装置における復号化演算を示す図である。
【図8】実施の形態3に係る暗号/復号装置の構成を模式的に示すブロック図である。
【図9】実施の形態3に係る暗号/復号装置の構成を模式的に示すブロック図である。
【符号の説明】
【0044】
100 暗号/復号演算回路、200 鍵スケジュール演算回路、300,300a 暗号/復号鍵用レジスタ、301 暗号鍵用レジスタ、302 復号鍵用レジスタ、303,304 鍵記憶領域、310 暗号/復号鍵判別回路、320 暗号/復号鍵生成自動回路、400 鍵選択回路。

【特許請求の範囲】
【請求項1】
所定のデータを所定のビット長からなる暗号鍵を用いてAES方式に基づき暗号化演算する暗号演算回路、および前記暗号演算回路で暗号化演算された前記所定のデータを前記所定のビット長からなる復号鍵を用いてAES方式に基づき復号化演算する復号演算回路を有する暗号/復号演算回路と、
前記暗号鍵および前記復号鍵のいずれか一方から他方を生成可能な鍵スケジュール演算回路と、
前記所定のビット長以上かつ前記所定のビット長の2倍未満のビット長からなる鍵記憶装置と
を備え、
前記鍵記憶装置は、
前記暗号鍵および前記復号鍵を交互に記憶する動作を行う
暗号/復号装置。
【請求項2】
請求項1に記載の暗号/復号装置であって、
前記鍵記憶装置に記憶されている鍵が前記暗号鍵および前記復号鍵のいずれであるかを判別する暗号/復号鍵判別回路
をさらに備える暗号/復号装置。
【請求項3】
請求項1に記載の暗号/復号装置であって、
前記暗号/復号演算回路は、前記暗号化演算に伴い前記暗号鍵から生成された前記復号鍵または前記復号化演算に伴い前記復号鍵から生成された前記暗号鍵を前記鍵記憶装置へ書き込む動作を行う
暗号/復号装置。
【請求項4】
所定のデータを所定のビット長からなる暗号鍵を用いてAES方式に基づき暗号化演算する暗号演算回路、および前記暗号演算回路で暗号化演算された前記所定のデータを前記所定のビット長からなる復号鍵を用いてAES方式に基づき復号化演算する復号演算回路を有する暗号/復号演算回路と、
前記暗号鍵および前記復号鍵のいずれか一方から他方を生成可能な鍵スケジュール演算回路と、
256ビット長以上且つ392ビット長未満からなる鍵記憶装置と
を備え、
前記鍵記憶装置は、
前記所定のビット長が196ビット長または256ビット長である場合には、前記暗号鍵および前記復号鍵を交互に記憶する動作を行い、
前記所定のビット長が128ビット長である場合には、前記暗号鍵および前記復号鍵を同時に記憶する動作を行う
暗号/復号装置。
【請求項5】
所定のデータを所定のビット長からなる第一暗号鍵または前記所定のビット長からなる第二暗号鍵を用いてAES方式に基づき暗号化演算する暗号演算回路、および前記暗号演算回路で暗号化演算された前記所定のデータを前記所定のビット長からなる第一復号鍵または前記所定のビット長からなる第二復号鍵を用いてAES方式に基づき復号化演算する復号演算回路を有する暗号/復号演算回路と、
前記暗号鍵および前記復号鍵のいずれか一方から他方を生成可能な鍵スケジュール演算回路と、
256ビット長以上且つ392ビット長未満からなる鍵記憶装置と
を備え、
前記鍵記憶装置は、
前記所定のビット長が196ビット長または256ビット長である場合には、前記第一暗号鍵および前記第一復号鍵を交互に記憶する動作を行い、
前記所定のビット長が128ビット長である場合には、前記第一暗号鍵および前記第二暗号鍵を同時に記憶する動作と前記第一復号鍵および前記第二復号鍵を同時に記憶する動作とを交互に行う
暗号/復号装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate