(57)【要約】      （修正有）【課題】回路共有機能を有し、処理負担がANUBISよりも小さいラウンド関数計算技術及び暗号技術を提供する。【解決手段】第一計算部１が、入力された４行４列の行列の各要素をinvolution性を持つ所定の置換表を用いて置換するSubBytes関数の計算を行う。第二計算部２が、第一計算部１の出力に対して、次式で定義されるSwapRows関数の計算を行う。2016085341.tif 000011第三計算部３が、第二計算部２の出力に対して、involution性を持つ４行４列の所定の撹拌行列を乗算するMixColumns関数の計算を行う。第四計算部４が、第三計算部３の出力に対して、４行４列の所定の副鍵行列との排他的論理を計算するAddRoundKey関数の計算を行う。【選択図】図１
2016085341.tif 000002
【特許請求の範囲】
【請求項１】
入力された４行４列の行列に対して、行列の各要素をinvolution性を持つ所定の置換表を用いて置換するSubBytes関数の計算を行う第一計算部と、
上記第一計算部の計算結果に対して、次式で定義されるSwapRowsの変換をするSwapRows関数の計算を行う第二計算部と、
【数７】
2016085341.tif 000009
上記第二計算部の計算結果に対して、involution性を持つ４行４列の所定の撹拌行列を乗算するMixColumns関数の計算を行う第三計算部と、
上記第三計算部の計算結果に対して、４行４列の所定の副鍵行列との排他的論理を計算するAddRoundKey関数の計算を行う第四計算部と、
を含むラウンド関数計算装置。
【請求項２】
請求項１のラウンド関数計算装置を含む暗号装置。
【請求項３】
第一計算部が、入力された４行４列の行列に対して、行列の各要素をinvolution性を持つ所定の置換表を用いて置換するSubBytes関数の計算を行う第一計算ステップと、
第二計算部が、上記第一計算部の計算結果に対して、次式で定義されるSwapRowsの変換をするSwapRows関数の計算を行う第二計算ステップと、
【数８】
2016085341.tif 000010
第三計算部が、上記第二計算部の計算結果に対して、involution性を持つ４行４列の所定の撹拌行列を乗算するMixColumns関数の計算を行う第三計算ステップと、
第四計算部が、上記第三計算部の計算結果に対して、４行４列の所定の副鍵行列との排他的論理を計算するAddRoundKey関数の計算を行う第四計算ステップと、
を含むラウンド関数計算方法。
【請求項４】
請求項３のラウンド関数計算方法を含む暗号方法。
【請求項５】
請求項１のラウンド関数計算装置又は請求項２の暗号装置の各部としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報セキュリティ分野で用いられる暗号に関する。
【背景技術】
【０００２】
データを秘匿するためには暗号化技術が有効である。暗号化の方法は共通鍵暗号と公開鍵暗号がある。共通鍵暗号では、暗号作成側と暗号復号側で同一の鍵を用い、この鍵は秘密に管理されている。一方、公開鍵暗号では暗号文作成の鍵と暗号文復号の鍵は異なっており、一方の鍵は公開しても、他の鍵は現実的な時間内に求まらないと広く信じられている。一般的に、暗号化の処理速度の観点からは、共通鍵暗号方式が有利であり、インターネット上の多くの環境で共通鍵暗号が利用されている。
【０００３】
高速かつ安全な共通鍵暗号を構成するために、暗号化対象のデータを適当な長さのブロックに分割し、そのブロック毎に暗号化する方法をブロック暗号と呼ぶ。ブロック暗号では、初めに、ラウンド関数と呼ばれる暗号装置としては不十分だが、非常に高速に処理できる暗号装置を用意する。次に、ラウンド関数を複数回繰り返し実行することで、ブロック暗号の暗号装置とする。このような暗号の代表例として、AES 暗号がある。AES は各要素が8 ビット構成された4×4 行列を1 ブロックとした暗号装置である。そのラウンド関数は、下記の4 つの関数で構成される。
【０００４】
SubBytes: 各セルの値をS-box と呼ばれる置換表を用いて別の値に置換する。
【０００５】
ShiftRows: 4×4 行列の各行を行番号分ローテーションする。
【０００６】
MixColumns: 4×4 行列の各列を撹拌装置により撹拌する。
【０００７】
AddRoundKey: 4×4 行列で表現された副鍵を排他的論理和する。
【０００８】
AES は高い安全性を保有する暗号としてアメリカ国立標準技術研究所(NIST) により米国標準として定められている（例えば、非特許文献１参照。）。
【０００９】
AES は高い安全性を有することが知られている。一方で、米国旧標準暗号であるDES と比較するとき、暗号化装置と復号装置の両方を構成しなければならない点が不利な点として挙げられる。
【００１０】
暗号化装置と復号装置の両方を暗号化装置のみで実現する際に、最も頻繁に利用される方法はFeistel 構造を利用した暗号装置を構成することである。米国旧標準暗号であるDES はFeistel 構造を持つことから、自明に暗号化装置と復号装置の共有化が可能である。一方でAES 型の暗号装置が暗号化装置と復号装置の共有化を実現することは非自明である。ここでは、暗号化装置と復号装置の共有化が可能な暗号装置を、回路共有機能を持つ暗号装置と明記する。
【００１１】
AES 型の暗号装置でありながら回路共有機能を持つ暗号装置としてANUBISが知られている（例えば、非特許文献２参照。）。ANUBIS のラウンド関数は、AES のラウンド関数と同様に4 つの関数で構成されるが、それぞれの関数がAES のそれとは異なる性質を持つ。
【００１２】
SubBytes: 各セルの値をInvolution 性を持つS-box を用いて別の値に置換する。
【００１３】
Transpose: 4行4列の行列の転置行列を計算する。
【００１４】
MixColumns: 4行4列の行列の各列をinvolution 性を持つ撹拌装置により撹拌する。
【００１５】
AddRoundKey: 4行4列の行列で表現された副鍵を排他的論理和する。
【００１６】
ここで、Involution 性とは関数を2 回実行した結果、元の値に戻る性質のことを意味する。ANUBIS がInvolution 性を持つ根拠は、SubBytes、Transpose、MixColumns の全てがInvolution 性を持つためである。また、ANUBISは差分解読法や線形解読法といった著名な攻撃に対してAESと同等の安全性を持つことが知られている。
【００１７】
以下に、AESのShiftRows 及びANUBISのTranspose の詳細な変換を示す。
【００１８】
【数１】
2016085341.tif 000003
【００１９】
【数２】
2016085341.tif 000004
【００２０】
Transpose はInvolution 性を持つのに対し、ShiftRows はInvolution 性を持たない。一方、ShiftRows は実装性能の面でTranspose より優れている。多くの実装環境では各列32 ビットを1 レジスタに保存し、4 レジスタを用いて128 ビットを保存する。このとき、ShiftRows の変換が各行の中で閉じているため、シフト命令を用いることなくShiftRows の実装が可能になる。一方でTranspose を実装するためにはシフト命令を用いる必要がある。このため、ANUBISは、AESと比較すると処理負担が大きい。
【先行技術文献】
【非特許文献】
【００２１】
【非特許文献１】“Announcing the ADVANCED ENCRYPTION STANDARD (AES)”, Federal Information Processing Standards Publication 197, November 26, 2001
【非特許文献２】Paulo S. L. M. Barreto and Vincent Rijmen, “The ANUBIS Block Cipher”, submitted to NESSIE Projecct
【発明の概要】
【発明が解決しようとする課題】
【００２２】
上記のように、AESは、回路共有機能を有していない。また、ANUBISは、AESと比較すると処理負担が大きい。入力された４行４列の行列に対して、行列の各要素をinvolution性を持つ所定の置換表を用いて置換するSubBytes関数の計算を行う第一計算部と、
上記第一計算部の計算結果に対して、次式で定義されるSwapRowsの変換をするSwapRows関数の計算を行う第二計算部と、
【００２３】
【数３】
2016085341.tif 000005
【００２４】
上記第二計算部の計算結果に対して、involution性を持つ４行４列の所定の撹拌行列を乗算するMixColumns関数の計算を行う第三計算部と、
上記第三計算部の計算結果に対して、４行４列の所定の副鍵行列との排他的論理を計算するAddRoundKey関数の計算を行う第四計算部と、
を含むラウンド関数計算装置。
【００２５】
この発明は、回路共有機能を有し、かつ、処理負担がANUBISよりも小さいラウンド関数計算装置及び暗号装置、これらの方法並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２６】
本発明の一態様によるラウンド関数計算装置は、入力された４行４列の行列に対して、行列の各要素をinvolution性を持つ所定の置換表を用いて置換するSubBytes関数の計算を行う第一計算部と、第一計算部の計算結果に対して、次式で定義されるSwapRowsの変換をするSwapRows関数の計算を行う第二計算部と、
【００２７】
【数４】
2016085341.tif 000006
【００２８】
第二計算部の計算結果に対して、involution性を持つ４行４列の所定の撹拌行列を乗算するMixColumns関数の計算を行う第三計算部と、第三計算部の計算結果に対して、４行４列の所定の副鍵行列との排他的論理を計算するAddRoundKey関数の計算を行う第四計算部と、を備えている。
【００２９】
本発明の一態様による暗号装置は、上記ラウンド関数計算装置を備えている。
【発明の効果】
【００３０】
回路共有機能を有し、かつ、処理負担がANUBISよりも小さい。
【図面の簡単な説明】
【００３１】
【図１】ラウンド関数計算装置の例の機能ブロック図。
【図２】ラウンド関数計算方法の処理の例を示すフローチャート。
【図３】暗号装置の例を示す機能ブロック図。
【発明を実施するための形態】
【００３２】
以下、本発明の実施形態について説明する。
【００３３】
本実施形態はANUBIS を基本にするが、Transpose の代わりに次式で定義するSwapRows を利用する。
【００３４】
【数５】
2016085341.tif 000007
【００３５】
SwapRows はTranspose と同様にInvolution 性を持つ。したがって、Transpose の代わりにSwapRows を用いたとしても回路共有機能は維持される。さらに、ShiftRowsと同様に各変換は各行の中に閉じているため、シフト命令を用いることなくSwapRows を実装することができる。このため、ANUBISよりも処理負担は小さくなる。
【００３６】
AES やANUBIS が差分解読法や線形解読法に対する高い安全性を保持するためには、ShiftRowsやTranspose により各列の4 つの値が全て異なる列に移動する必要がある。この特徴はSwapRows でも同様に満足することが出来るため、ShiftRows やTranspose の代わりにSwapRowsを用いたとしても高い安全性を維持できる。
【００３７】
［ラウンド関数計算装置及び方法］
ラウンド関数計算装置は、図１に示すように、第一計算部１、第二計算部２、第三計算部３及び第四計算部４を例えば備えている。このラウンド関数計算装置の各部が、図２に例示するステップＳ１からステップＳ４の処理を行うことによりラウンド関数計算方法が実現される。
【００３８】
＜第一計算部１＞
第一計算部１は、入力された４行４列の行列に対して、行列の各要素をinvolution性を持つ所定の置換表を用いて置換するSubBytes関数の計算を行う（ステップＳ１）。計算結果は、第二計算部２に出力される。
【００３９】
入力される４行４列の行列は、ラウンド関数計算装置が用いられるブロック暗号方式及び暗号方式に依存する。
【００４０】
所定の置換表は、involution性を持つ所定の置換表であればどのようなものでもよい。例えば、ANUBISで用いられるinvolution性を持つS-boxの置換表を用いることができる。
【００４１】
involution性とは、関数を2 回実行した結果、元の値に戻る性質のことを意味する。
【００４２】
SubBytes関数の一例は、ANUBISで用いられるSubBytes関数である。
【００４３】
＜第二計算部２＞
第二計算部２は、第一計算部１の計算結果に対して、次式で定義されるSwapRowsの変換をするSwapRows関数の計算を行う（ステップＳ２）。計算結果は、第三計算部３に出力される。
【００４４】
【数６】
2016085341.tif 000008
【００４５】
＜第三計算部３＞
第三計算部３は、第二計算部２の計算結果に対して、involution性を持つ４行４列の所定の撹拌行列を乗算するMixColumns関数の計算を行う（ステップＳ３）。計算結果は、第四計算部４に出力される。
【００４６】
所定の撹拌行列は、involution性を持つ撹拌行列であればどのようなものでもよい。
【００４７】
MixColumns関数の一例は、ANUBISで用いられるMixColumns関数である。
【００４８】
＜第四計算部４＞
第四計算部４は、第三計算部３の計算結果に対して、４行４列の所定の副鍵行列との排他的論理を計算するAddRoundKey関数の計算を行う（ステップＳ４）。
【００４９】
４行４列の所定の副鍵行列は、ラウンド関数計算装置が用いられるブロック暗号方式及び暗号方式に依存する。
【００５０】
AddRoundKey関数の一例は、ANUBISで用いられるAddRoundKey関数である。
【００５１】
［暗号装置及び方法］
暗号装置及び方法は、例えば図３に示すように、それぞれラウンド関数計算装置及び方法を含む。暗号装置及び方法は、ラウンド関数計算装置及び方法によるラウンド関数の計算を複数回繰り返し実行することでデータの暗号化又は復号を実行する。
【００５２】
暗号装置及び方法の詳細は、実装しようとする暗号方式に依存する。例えば、ANUBISと同様の、ラウンド関数を用いたブロック暗号方式を用いることができる。
【００５３】
上記ラウンド関数を構成する各関数がInvolution 性を持つため、上記ラウンド関数もInvolution 性を持つ。このため、上記ラウンド関数を用いた暗号装置及び方法は、回路共有機能を有し、暗号化と復号との両方の用途に用いることができる。
【００５４】
［変形例等］
上記装置及び方法において説明した処理は、記載の順にしたがって時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【００５５】
また、上記各装置における各種の処理機能をコンピュータによって実現してもよい。その場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【００５６】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００５７】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させてもよい。
【００５８】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶部に格納する。そして、処理の実行時、このコンピュータは、自己の記憶部に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実施形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよい。さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、プログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００５９】
また、コンピュータ上で所定のプログラムを実行させることにより、各装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
2016085341.tif 000012
【図２】
2016085341.tif 000013
【図３】
2016085341.tif 000014