(57)【要約】【課題】回路規模を縮小できる暗号／復号装置を提供する。【解決手段】暗号／復号演算回路１００は、所定のデータを所定のビット長からなる暗号鍵を用いてＡＥＳ方式に基づき暗号化演算する暗号演算回路、および前記暗号演算回路で暗号化演算された前記所定のデータを暗号鍵と同一のビット長からなる復号鍵を用いてＡＥＳ方式に基づき復号化演算する復号演算回路の両方の回路機能を有している。鍵スケジュール演算回路２００は、暗号鍵および復号鍵のいずれか一方から他方を生成する処理すなわち鍵スケジュール演算処理を行うためのものである。暗号／復号鍵用レジスタ３００は、暗号鍵および復号鍵を交互に記憶する動作を行う。【選択図】図１
2008294810.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータを所定のビット長からなる暗号鍵を用いてＡＥＳ方式に基づき暗号化演算する暗号演算回路、および前記暗号演算回路で暗号化演算された前記所定のデータを前記所定のビット長からなる復号鍵を用いてＡＥＳ方式に基づき復号化演算する復号演算回路を有する暗号／復号演算回路と、
前記暗号鍵および前記復号鍵のいずれか一方から他方を生成可能な鍵スケジュール演算回路と、
前記所定のビット長以上かつ前記所定のビット長の２倍未満のビット長からなる鍵記憶装置と
を備え、
前記鍵記憶装置は、
前記暗号鍵および前記復号鍵を交互に記憶する動作を行う
暗号／復号装置。
【請求項２】
請求項１に記載の暗号／復号装置であって、
前記鍵記憶装置に記憶されている鍵が前記暗号鍵および前記復号鍵のいずれであるかを判別する暗号／復号鍵判別回路
をさらに備える暗号／復号装置。
【請求項３】
請求項１に記載の暗号／復号装置であって、
前記暗号／復号演算回路は、前記暗号化演算に伴い前記暗号鍵から生成された前記復号鍵または前記復号化演算に伴い前記復号鍵から生成された前記暗号鍵を前記鍵記憶装置へ書き込む動作を行う
暗号／復号装置。
【請求項４】
所定のデータを所定のビット長からなる暗号鍵を用いてＡＥＳ方式に基づき暗号化演算する暗号演算回路、および前記暗号演算回路で暗号化演算された前記所定のデータを前記所定のビット長からなる復号鍵を用いてＡＥＳ方式に基づき復号化演算する復号演算回路を有する暗号／復号演算回路と、
前記暗号鍵および前記復号鍵のいずれか一方から他方を生成可能な鍵スケジュール演算回路と、
２５６ビット長以上且つ３９２ビット長未満からなる鍵記憶装置と
を備え、
前記鍵記憶装置は、
前記所定のビット長が１９６ビット長または２５６ビット長である場合には、前記暗号鍵および前記復号鍵を交互に記憶する動作を行い、
前記所定のビット長が１２８ビット長である場合には、前記暗号鍵および前記復号鍵を同時に記憶する動作を行う
暗号／復号装置。
【請求項５】
所定のデータを所定のビット長からなる第一暗号鍵または前記所定のビット長からなる第二暗号鍵を用いてＡＥＳ方式に基づき暗号化演算する暗号演算回路、および前記暗号演算回路で暗号化演算された前記所定のデータを前記所定のビット長からなる第一復号鍵または前記所定のビット長からなる第二復号鍵を用いてＡＥＳ方式に基づき復号化演算する復号演算回路を有する暗号／復号演算回路と、
前記暗号鍵および前記復号鍵のいずれか一方から他方を生成可能な鍵スケジュール演算回路と、
２５６ビット長以上且つ３９２ビット長未満からなる鍵記憶装置と
を備え、
前記鍵記憶装置は、
前記所定のビット長が１９６ビット長または２５６ビット長である場合には、前記第一暗号鍵および前記第一復号鍵を交互に記憶する動作を行い、
前記所定のビット長が１２８ビット長である場合には、前記第一暗号鍵および前記第二暗号鍵を同時に記憶する動作と前記第一復号鍵および前記第二復号鍵を同時に記憶する動作とを交互に行う
暗号／復号装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号／復号装置に関し、特に、回路規模を縮小するための技術に関する。
【背景技術】
【０００２】
従来から、暗号／復号装置においては、共通鍵暗号方式であるＡＥＳ（Advanced Encryption Standard）方式が採用されている（例えば、非特許文献１参照）。
【０００３】
ＡＥＳ方式を採用した暗号／復号装置においては、暗号化演算を行うための暗号鍵と復号化演算を行うための復号鍵とがそれぞれレジスタ等に保持されて用いられる。
【０００４】
すなわち、まず、メモリ等から読み込まれた暗号鍵が、暗号鍵用レジスタに保持される。次に、この暗号鍵に対して、鍵スケジュール演算を実行することにより復号鍵が生成され、生成された復号鍵が復号鍵用レジスタに保持される。そして、暗号化演算時には暗号鍵用レジスタから暗号鍵が読み出され、復号化演算時には復号鍵用レジスタから復号鍵が読み出され、それぞれ使用される。
【０００５】
【非特許文献１】"Announcing the ADVANCED ENCRYPTION STANDARD (AES)"、［online］、米国国立標準・技術院（ＮＩＳＴ）、［平成１９年５月１日検索］、インターネット＜ＵＲＬ： http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＡＥＳ方式においては、鍵として、最大でビット長が２５６ビットのものが使用される。従って、鍵用レジスタとしては、暗号鍵および復号鍵にそれぞれ対応して、２５６ビット×２＝５１２ビット長からなるレジスタを設ける必要がある。そのため、回路規模が大きくなってしまうという問題点があった。
【０００７】
本発明は上記の問題点を解決するためになされたものであり、回路規模を縮小できる暗号／復号装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一実施の形態において、暗号／復号演算回路は、所定のデータを所定のビット長からなる暗号鍵を用いてＡＥＳ方式に基づき暗号化演算する暗号演算回路、および前記暗号演算回路で暗号化演算された前記所定のデータを暗号鍵と同一のビット長からなる復号鍵を用いてＡＥＳ方式に基づき復号化演算する復号演算回路の両方の回路機能を有している。鍵スケジュール演算回路は、暗号鍵および復号鍵のいずれか一方から他方を生成する処理すなわち鍵スケジュール演算処理を行うためのものである。暗号／復号鍵用レジスタは、暗号鍵および復号鍵を交互に記憶する動作を行う。
【発明の効果】
【０００９】
本発明においては、一の鍵記憶装置へ二の鍵を交互に記憶させるので、二の鍵記憶装置を用いる場合に比較して、回路規模を縮小できる。
【発明を実施するための最良の形態】
【００１０】
＜実施の形態１＞
図１は、実施の形態１に係る暗号／復号装置の構成を模式的に示すブロック図である。
【００１１】
図１に示されるように、本実施の形態に係る暗号／復号装置は、暗号／復号演算回路１００と鍵スケジュール演算回路２００と暗号／復号鍵用レジスタ３００とを含んで構成されており、ＡＥＳ方式に基づき暗号化演算および復号化演算を行うものである。
【００１２】
暗号／復号演算回路１００は、所定のデータを所定のビット長（ＡＥＳ方式においては１２８ビット、１９２ビット、または２５６ビット）からなる暗号鍵を用いてＡＥＳ方式に基づき暗号化演算する暗号演算回路、および前記暗号演算回路で暗号化演算された前記所定のデータを暗号鍵と同一のビット長からなる復号鍵を用いてＡＥＳ方式に基づき復号化演算する復号演算回路の両方の回路機能を有している。
【００１３】
鍵スケジュール演算回路２００は、暗号鍵および復号鍵のいずれか一方から他方を生成する処理すなわち鍵スケジュール演算処理を行うためのものである。
【００１４】
暗号／復号鍵用レジスタ３００は、暗号鍵および復号鍵を交互に記憶する動作を行う鍵記憶装置である。
【００１５】
図２は、比較用に、暗号鍵を記憶する鍵記憶装置（暗号鍵用レジスタ３０１）と復号鍵を記憶する鍵記憶装置（復号鍵用レジスタ３０２）とを個別に設け、これらを鍵選択回路４００で選択する暗号／復号装置を示している。
【００１６】
図２においては、まず、外部から入力された暗号鍵は、暗号鍵用レジスタ３０１へ記憶される。次に、鍵スケジュール演算回路２００により、暗号鍵用レジスタ３０１へ記憶された暗号鍵から、復号鍵が生成され、復号鍵用レジスタ３０２へ記憶される。そして、暗号／復号演算回路１００は、暗号化演算を実行するときには暗号鍵用レジスタ３０１へ記憶された暗号鍵を、復号化演算を実行するときには復号鍵用レジスタ３０２へ記憶された復号鍵を、それぞれ鍵選択回路４００を介し取得して、演算を実行する。
【００１７】
このような場合には、例えば、暗号鍵および復号鍵がそれぞれ２５６ビット長からなる場合には、鍵記憶装置の合計のビット長は２５６ビット×２＝５１２ビットとなるので、回路規模が大きくなってしまうという問題点がある。
【００１８】
一方、本実施の形態に係る図１の暗号／復号装置においては、暗号／復号鍵用レジスタ３００は、暗号鍵および復号鍵のいずれか一方の鍵のみを記憶しておき、必要に応じて、一方の鍵から他方の鍵を鍵スケジュール演算回路２００にて生成し、生成された他方の鍵を暗号／復号鍵用レジスタ３００へ上書きする。これにより、鍵記憶装置の合計のビット長すなわち暗号／復号鍵用レジスタ３００のビット長を２５６ビットに抑えつつ、必要な暗号化演算および復号化演算を行うことが可能となる。
【００１９】
すなわち、本実施の形態に係る図１の暗号／復号装置は、暗号／復号演算回路１００においては暗号鍵および復号鍵が同時に用いられることがないことに着目し、いずれか一方の鍵のみを記憶できる必要最小限の鍵記憶装置を設けることを特徴とするものである。従って、図２に比較して、一方の鍵から他方の鍵を鍵スケジュール演算回路２００により生成するための処理時間が余分に必要となるものの、回路規模を縮小できる。
【００２０】
なお、図１では、鍵スケジュール演算回路２００により一方の鍵から他方の鍵を生成し暗号／復号鍵用レジスタ３００へ上書きする動作は、演算の種別が一方（例えば暗号化演算）から他方（例えば復号化演算）へ遷移した場合にのみ行われる。
【００２１】
すなわち、暗号化演算の後に復号化演算を行う場合には、暗号／復号鍵用レジスタ３００に記憶されている暗号鍵へ復号鍵が上書きされ、復号化演算の後に暗号化演算を行う場合には、暗号／復号鍵用レジスタ３００に記憶されている復号鍵へ暗号鍵が上書きされる。一方、暗号化演算の後に引き続き暗号化演算を行う場合や、復号化演算の後に引き続き復号化演算を行う場合には、暗号／復号鍵用レジスタ３００への鍵の上書きは行われない。
【００２２】
この上書きを適切に行うためには、暗号／復号装置は、次に行われる演算の種別が暗号化／復号化のいずれであるか、および暗号／復号鍵用レジスタ３００に現在記憶されている鍵の種別が暗号鍵／復号鍵のいずれであるかを、検知している必要がある。
【００２３】
上記の演算の種別の検知は、動作命令が入力される都度その動作命令を解析することにより行ってもよく、あるいは、一連の動作命令が記述されたプログラムを予め取得し解析しておくことにより行ってもよい。
【００２４】
また、上記の鍵の種別の検知は、演算の都度、暗号／復号鍵用レジスタ３００から鍵を読み出すことにより行ってもよく、あるいは、図３に示されるように、暗号／復号鍵用レジスタ３００に記憶されている鍵の種別を内蔵ビットに記憶する（例えば、暗号鍵であれば”１”を記憶し、復号鍵であれば”０”を記憶する）暗号／復号鍵判別回路３１０を設けることにより行ってもよい。そして、この内蔵ビットを、鍵が書き換えられるタイミングで反転させればよい。
【００２５】
また、あるいは、図４に示されるように、暗号／復号鍵判別回路３１０に加えて、暗号／復号鍵生成自動回路３２０を設けてもよい。この暗号／復号鍵生成自動回路３２０は、外部から暗号／復号装置へ入力される動作命令に応答して、暗号／復号鍵用レジスタ３００に記憶されている鍵の種別を暗号／復号鍵判別回路３１０により判別し、必要に応じて、鍵スケジュール演算回路２００により鍵を生成し、書き換えを行う。これにより、鍵の書き換えを、外部から入力される動作命令に応答して行うことが可能となる。
【００２６】
このように、本実施の形態に係る暗号／復号装置は、暗号／復号鍵用レジスタ３００からなる一の鍵記憶装置へ、二の鍵すなわち暗号鍵と復号鍵とを、交互に記憶させる動作を行う。従って、図２のように暗号鍵用レジスタ３０１と復号鍵用レジスタ３０２とからなる二の鍵記憶装置を備える場合に比較して、回路規模を縮小できる。
【００２７】
なお、上述においては、暗号／復号鍵用レジスタ３００のビット長が、暗号鍵および復号鍵のビット長と同一である（２５６ビット）場合について説明したが、必ずしも同一である必要はなく、暗号／復号鍵用レジスタ３００のビット長が暗号鍵および復号鍵のビット長以上かつその２倍未満（５１２ビット未満）であれば、図２の場合に比較して、回路規模を縮小することが可能である。
【００２８】
＜実施の形態２＞
実施の形態１においては、一方の鍵から他方の鍵を生成するために単独で鍵スケジュール演算処理を実行する場合について説明した。しかし、ＡＥＳ方式では、暗号鍵は暗号化演算を行うことにより復号鍵へ遷移し、復号鍵は復号化演算を行うことにより暗号鍵へ遷移する。従って、これを利用することにより、重複して実行される鍵スケジュール演算処理を省くことが可能となる。
【００２９】
図５は、実施の形態２に係る暗号／復号装置の構成を模式的に示すブロック図である。図５は、図１において、暗号／復号演算回路１００における演算処理により生成された復号鍵または暗号鍵を暗号／復号鍵用レジスタ３００へ上書きするようにしたものである。これにより、鍵スケジュール演算処理の実行回数を減らし、処理時間を短縮することが可能となる。
【００３０】
図６〜７は、非特許文献１の第３５〜３８頁に対応しており、１２８ビット長からなる暗号鍵／復号鍵が、暗号化／復号化演算を行うことにより、１２８ビット長の復号鍵／暗号鍵として生成される遷移を示している。なお、図６が暗号化演算に、図７が復号化演算に、それぞれ対応している。
【００３１】
図６においては、暗号化演算前の暗号鍵round［ 0］.k_schと暗号化演算後の暗号鍵round［10］.k_schとが示されている。また、図７においては、復号化演算前の復号鍵round［ 0］.ik_schと復号化演算後の復号鍵round［10］.ik_schとが示されている。なお、round［ n］（0<n<10）は、演算の途中すなわち遷移中の鍵に対応している。
【００３２】
図６〜７に示されるように、暗号化演算後の暗号鍵round［10］.k_schは復号化演算前の復号鍵round［ 0］.ik_schに等しく、復号化演算後の復号鍵round［10］.ik_schは暗号化演算前の暗号鍵round［ 0］.k_schに等しい。すなわち、暗号化演算により、暗号鍵は復号鍵へ遷移し、復号化演算により、復号鍵は暗号鍵へ遷移している。
【００３３】
このように、本実施の形態に係る暗号／復号装置においては、暗号／復号演算回路１００は、暗号化演算に伴い暗号鍵から生成された復号鍵または復号化演算に伴い前記復号鍵から生成された暗号鍵を、それぞれ、暗号／復号鍵用レジスタ３００へ書き込む動作を行う。従って、実施の形態１の効果に加えて、鍵スケジュール演算処理の実行回数を減らし、処理時間を短縮できるという効果を奏する。
【００３４】
なお、本実施の形態は、鍵が書き換えられるタイミングが予め検知されている場合に特に有効である。従って、例えば、鍵が書き換えられるタイミングが予め検知されている場合には、上述したような暗号／復号演算回路１００を用いた（すなわち鍵スケジュール演算回路２００を単独で用いるのではなく、暗号／復号演算回路１００と同時に用いた）鍵生成を行い、鍵が書き換えられるタイミングが予め検知されていない場合には、図１のように鍵スケジュール演算回路２００を単独で用いた鍵の生成を行うようにすればよい。
【００３５】
＜実施の形態３＞
実施の形態１においては、暗号／復号鍵用レジスタ３００のビット長が暗号鍵および復号鍵のビット長の２倍未満である場合（言い換えれば、暗号鍵および復号鍵のビット長が暗号／復号鍵用レジスタ３００のビット長の半分より大きい場合）に、暗号／復号鍵用レジスタ３００へ暗号鍵および復号鍵を交互に記憶する動作について説明した。
【００３６】
すなわち、暗号鍵および復号鍵のビット長が暗号／復号鍵用レジスタ３００のビット長の半分より大きい場合には、暗号鍵および復号鍵を同時に暗号／復号鍵用レジスタ３００へ記憶させることができないので、交互に記憶させる必要があるが、暗号鍵および復号鍵のビット長が暗号／復号鍵用レジスタ３００のビット長の半分以下である場合には、暗号鍵および復号鍵を同時に暗号／復号鍵用レジスタ３００へ記憶させることが可能である。
【００３７】
実施の形態３に係る暗号／復号装置は、複数組の暗号鍵および復号鍵を用いる場合に、それらのビット長に応じて、暗号／復号鍵用レジスタ３００への記憶動作を異ならせることを特徴とするものである。
【００３８】
図８は、本実施の形態に係る暗号／復号装置の構成を模式的に示すブロック図である。図８において、暗号／復号装置は、２５６ビット長からなる暗号／復号鍵用レジスタ３００ａを備えており、暗号／復号鍵用レジスタ３００ａは、１２８ビット長からなる鍵記憶領域３０３，３０４を有している。
【００３９】
暗号／復号鍵用レジスタ３００ａは、暗号鍵および復号鍵のビット長が１２８ビット以下である場合には、図８に示されるように、これらを同時に記憶する図２と同様の動作を行い、暗号鍵および復号鍵のビット長が１２８ビットより大きい場合には、実施の形態１と同様に、これらを交互に記憶する動作を行う。
【００４０】
このように、本実施の形態に係る暗号／復号装置は、１２８×２＝２５６ビット長以上且つ１９６×２＝３９２ビット長未満からなる暗号／復号鍵用レジスタ３００ａを備え、暗号鍵および復号鍵のビット長が１２８ビットより大きい場合（具体的には、１９２ビットまたは２５６ビットである場合）には、これらを交互に記憶する動作を行い、暗号鍵および復号鍵のビット長が１２８ビット以下である場合（具体的には、１２８ビットである場合）には、これらを同時に記憶する動作を行う。従って、実施の形態１の効果に加えて、暗号鍵および復号鍵のビット長が１２８ビットである場合における処理時間を短縮できるという効果を奏する。
【００４１】
なお、上述においては、２５６ビット長からなる暗号／復号鍵用レジスタ３００ａに、１２８ビット長からなる暗号鍵および復号鍵を同時に記憶させる場合について説明したが、同時に記憶される二の鍵の種別は、同一であってもよい。すなわち、図９に示されるように、鍵記憶領域３０３，３０４には、１２８ビット長からなる第一暗号鍵および第二暗号鍵を、それぞれ、同時に記憶させてもよい。なお、第一暗号鍵と第二暗号鍵とは、ビット長が同じで値が異なる二種類の鍵を構成するものとする。
【００４２】
図９の暗号／復号装置は、第一暗号鍵のビット長が１２８ビットである場合には、第一暗号鍵および第二復号鍵を同時に記憶する動作と第一復号鍵（第一暗号鍵に対応）および第二復号鍵（第二暗号鍵に対応）を同時に記憶する動作とを交互に行う。また、第一暗号鍵のビット長が１９２ビットまたは２５６ビットである場合には、第一暗号鍵および第一復号鍵を交互に記憶する動作を行う。すなわち、第一暗号鍵のビット長が１２８ビットである場合には、二種類の鍵を使用することが可能となる。
【図面の簡単な説明】
【００４３】
【図１】実施の形態１に係る暗号／復号装置の構成を模式的に示すブロック図である。
【図２】比較用の暗号／復号装置の一の構成を模式的に示すブロック図である。
【図３】実施の形態１に係る暗号／復号装置の構成を模式的に示すブロック図である。
【図４】実施の形態１に係る暗号／復号装置の構成を模式的に示すブロック図である。
【図５】実施の形態２に係る暗号／復号装置の構成を模式的に示すブロック図である。
【図６】実施の形態２に係る暗号／復号装置における暗号化演算を示す図である。
【図７】実施の形態２に係る暗号／復号装置における復号化演算を示す図である。
【図８】実施の形態３に係る暗号／復号装置の構成を模式的に示すブロック図である。
【図９】実施の形態３に係る暗号／復号装置の構成を模式的に示すブロック図である。
【符号の説明】
【００４４】
１００  暗号／復号演算回路、２００  鍵スケジュール演算回路、３００，３００ａ  暗号／復号鍵用レジスタ、３０１  暗号鍵用レジスタ、３０２  復号鍵用レジスタ、３０３，３０４  鍵記憶領域、３１０  暗号／復号鍵判別回路、３２０  暗号／復号鍵生成自動回路、４００  鍵選択回路。
【図１】
2008294810.tif 000003
【図２】
2008294810.tif 000004
【図３】
2008294810.tif 000005
【図４】
2008294810.tif 000006
【図５】
2008294810.tif 000007
【図６】
2008294810.tif 000008
【図７】
2008294810.tif 000009
【図８】
2008294810.tif 000010
【図９】
2008294810.tif 000011