(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-13
(45)【発行日】2023-11-21
(54)【発明の名称】情報処理装置及びプログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20231114BHJP
【FI】
G09C1/00 620Z
G09C1/00 650Z
(21)【出願番号】P 2019171450
(22)【出願日】2019-09-20
【審査請求日】2022-08-10
(73)【特許権者】
【識別番号】000005234
【氏名又は名称】富士電機株式会社
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】高務 健二
【審査官】青木 重徳
(56)【参考文献】
【文献】特表2010-528517(JP,A)
【文献】特表2010-515945(JP,A)
【文献】特表2012-520589(JP,A)
【文献】特開2017-216619(JP,A)
【文献】国際公開第2017/203992(WO,A1)
【文献】辻井 重男 ほか,暗号と情報セキュリティ,初版4刷,日本,株式会社昭晃堂,1996年02月20日,p.229-234
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
共通鍵暗号方式に用いられる共通鍵と、前記共通鍵を用いた暗号化処理又は復号処理をWhite-Box Cryptographyによりルックアップテーブル化して、前記暗号化処理に対応する暗号化用ルックアップテーブル又は前記復号処理に対応する復号用ルックアップテーブルを作成する作成手段と、
前記作成手段により作成された暗号化用ルックアップテーブル又は復号用ルックアップテーブルを、公開鍵として公開とする公開手段と、
を有
し、
前記共通鍵暗号方式は、AESの暗号化処理に含まれるMixColumns処理の行列変換を16×16の変換行列を用いた行列変換に置換すると共に、AESの復号処理に含まれるInvMixColumns処理の逆行列変換を前記変換行列の逆行列を用いた行列変換に置換した暗号方式である、ことを特徴とする情報処理装置。
【請求項2】
前記変換行列は、0を除く低位の値を各要素とする行列であり、かつ、i+1(ただし、i=1,・・・,15)番目の行又は列はi番目の行又は列を所定の方向に1つローテーションした行列である、ことを特徴とする請求項
1に記載の情報処理装置。
【請求項3】
前記変換行列は、1行又は1列あたり、M(Mは2以上、254以下の偶数)を値とする13個の要素と、M+1を値とする3個の要素とで構成された行列である、ことを特徴とする請求項
2に記載の情報処理装置。
【請求項4】
前記変換行列は、1行又は1列あたり、2を値とする13個の要素と、3を値とする3個の要素とで構成された行列である、ことを特徴とする請求項
3に記載の情報処理装置。
【請求項5】
共通鍵暗号方式に用いられる共通鍵と、前記共通鍵を用いた暗号化処理又は復号処理をWhite-Box Cryptographyによりルックアップテーブル化して、前記暗号化処理に対応する暗号化用ルックアップテーブル又は前記復号処理に対応する復号用ルックアップテーブルを作成する作成手順と、
前記作成手順で作成された暗号化用ルックアップテーブル又は復号用ルックアップテーブルを、公開鍵として公開とする公開手順と、
をコンピュータに実行させ
、
前記共通鍵暗号方式は、AESの暗号化処理に含まれるMixColumns処理の行列変換を16×16の変換行列を用いた行列変換に置換すると共に、AESの復号処理に含まれるInvMixColumns処理の逆行列変換を前記変換行列の逆行列を用いた行列変換に置換した暗号方式である、ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及びプログラムに関する。
【背景技術】
【0002】
つながる時代の新技術に代表されるIoT(Internet of Things)では、種々様々なデバイスが通信ネットワークに接続される。これらのデバイスの多くは低コストに実現される機器でありながら、マイクロプロセッサ等を搭載してアプリケーションを実装していると共に、セキュリティ対策として各種暗号機能も実装している。
【0003】
一般的な通信路の暗号化においては、公開鍵暗号方式で認証と鍵の交換とを行った上で、この鍵を用いた共通鍵暗号方式によりデータを暗号化する場合が多い。しかしながら、低コストに実現される機器では、公開鍵暗号方式の演算処理に多くの時間を要してしまう。これに対して、公開鍵暗号方式の1つであるペアリング暗号の高速化を実現することができる多倍長整数演算装置が知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記の従来技術では、特定の多倍長整数演算装置を機器に搭載する必要がある。また、演算量のオーダーを下げるほどの高速化は困難である。
【0006】
本発明の実施形態は、上記の点に鑑みてなされたもので、公開鍵暗号の演算量を削減することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するための、本実施形態に係る情報処理装置は、共通鍵暗号方式に用いられる共通鍵と、前記共通鍵を用いた暗号化処理又は復号処理をWhite-Box Cryptographyによりルックアップテーブル化して、前記暗号化処理に対応する暗号化用ルックアップテーブル又は前記復号処理に対応する復号用ルックアップテーブルを作成する作成手段と、前記作成手段により作成された暗号化用ルックアップテーブル又は復号用ルックアップテーブルを、公開鍵として公開とする公開手段と、を有することを特徴とする。
【発明の効果】
【0008】
公開鍵暗号の演算量を削減することができる。
【図面の簡単な説明】
【0009】
【
図1】本実施形態に係る暗号システムの機能構成の一例を示す図である。
【
図2A】暗号システムの利用形態の一例を説明するための図(その1)である。
【
図2B】暗号システムの利用形態の一例を説明するための図(その2)である。
【
図3】本実施形態に係る暗号システムのハードウェア構成の一例を示す図である。
【
図4】本実施形態に係る公開鍵作成処理の一例を示すフローチャートである。
【
図5】MixColumns処理の置換の一例を説明するための図である。
【
図6】拡張MixColumns処理及び拡張InvMixColumns処理に用いられる行列の一例を示す図(実施例1)である。
【
図7】拡張MixColumns処理及び拡張InvMixColumns処理に用いられる行列の一例を示す図(実施例2)である。
【発明を実施するための形態】
【0010】
以下、本発明の実施形態について説明する。本実施形態では、WBC(White-Box Cryptography)を用いて共通鍵暗号方式により公開鍵暗号方式を実現することで、公開鍵暗号の演算量を削減する暗号システム10について説明する。ここで、本実施形態に係る暗号システム10は、一例として、一般的なマイクロプロセッサ等が搭載された組み込みシステム(Embedded System)であるものとする。組み込みシステムは、例えば、産業用機器や家電製品等に内蔵され、特定の機能を実現するシステムである。具体的には、例えば、HEMS(Home Energy Management System)に利用されるスマートメーター等に対して、本実施形態に係る暗号システム10を組み込むことが可能である。
【0011】
ただし、本実施形態に係る暗号システム10は、組み込みシステムに限られず、例えば、PC(Personal Computer)やスマートフォン、タブレット端末等の各種端末又は装置であってもよい。
【0012】
<機能構成>
まず、本実施形態に係る暗号システム10の機能構成について、
図1を参照しながら説明する。
図1は、本実施形態に係る暗号システム10の機能構成の一例を示す図である。
【0013】
図1に示すように、本実施形態に係る暗号システム10は、公開鍵作成部101と、暗号化部102と、復号部103と、記憶部104とを有する。
【0014】
記憶部104は、共通鍵暗号方式に用いられる共通鍵を、公開鍵暗号方式の秘密鍵1000として記憶する。ここで、本実施形態では、一例として、共通鍵暗号方式はAES(Advanced Encryption Standard)であるものとする。なお、記憶部104には、秘密鍵1000以外にも、任意の情報(例えば、暗号化対象となる平文、秘密鍵1000を用いた電子署名の付与対象となるデータ等)が記憶されていてもよい。
【0015】
公開鍵作成部101は、記憶部104に記憶されている秘密鍵1000(つまり、共通鍵暗号方式の共通鍵)を用いた共通鍵暗号方式の暗号化処理用にWBCによりルックアップテーブル(LUT:Lookup table)化した暗号化用ルックアップテーブルを作成する。本実施形態では、この暗号化用ルックアップテーブルを、公開鍵暗号方式によって平文を暗号化する際の公開鍵として扱うことで、公開鍵暗号方式を実現する。以降では、公開鍵作成部101により作成された暗号化用ルックアップテーブルを公開暗号化鍵2000とも表す。
【0016】
また、公開鍵作成部101は、記憶部104に記憶されている秘密鍵1000(つまり、共通鍵暗号方式の共通鍵)を用いた共通鍵暗号方式の復号処理用にWBCによりルックアップテーブル化した復号用ルックアップテーブルを作成する。本実施形態では、この復号用ルックアップテーブルを、公開鍵暗号方式を応用した電子署名を行う際の公開鍵として扱うことで、公開鍵暗号方式を実現する。以降では、公開鍵作成部101により作成された復号用ルックアップテーブルを公開復号鍵3000とも表す。
【0017】
なお、WBCでは、共通鍵や各種固定値等と暗号化処理又は復号処理とを合成することで暗号化用ルックアップテーブル又は復号用ルックアップテーブルが作成される。このとき、WBCの耐解読性により、暗号化用ルックアップテーブル及び復号用ルックアップテーブルから共通鍵を推測することは困難である。また、暗号化処理と復号処理とでは処理内容が異なるため、暗号化用ルックアップテーブルと復号用ルックアップテーブルとは互いに異なり、暗号化用ルックアップテーブルから復号用ルックアップテーブルを算出したり、復号用ルックアップテーブルから暗号化用ルックアップテーブルを算出したりすることはできない。
【0018】
ここで、本実施形態に係る暗号システム10は、公開暗号化鍵2000又は公開復号鍵3000のいずれか一方のみを作成してもよいし、公開暗号化鍵2000及び公開復号鍵3000の両方を作成してもよい。ただし、公開暗号化鍵2000及び公開復号鍵3000の両方を作成する場合は、公開暗号化鍵2000を作成する場合と公開復号鍵3000を作成する場合とで異なる共通鍵を用いる。
【0019】
暗号化部102は、公開鍵暗号方式を応用した電子署名を行う際に、記憶部104に記憶されている秘密鍵1000と電子署名の付与対象のデータとを用いて、電子署名付きデータを作成する。なお、電子署名付きデータは、この電子署名付きデータを受信した他の暗号システム10によって公開復号鍵3000を用いて検証される。
【0020】
また、暗号化部102は、他の暗号システム10で作成された公開暗号化鍵を用いて平文を暗号化し、暗号文を作成する。なお、他の暗号システム10で作成された公開暗号化鍵は、例えば、記憶部104に記憶されている。
【0021】
復号部103は、記憶部104に記憶されている秘密鍵1000を用いて、公開暗号化鍵2000で暗号化された暗号文を復号する。なお、この暗号文は、他の暗号システム10によって公開暗号化鍵2000を用いて暗号化されたデータである。
【0022】
また、復号部103は、他の暗号システム10で作成された公開復号鍵を用いて電子署名付きデータを検証する。なお、他の暗号システム10で作成された公開復号鍵は、例えば、記憶部104に記憶されている。
【0023】
なお、
図1に示す暗号システム10の機能構成は一例であって、他の構成であってもよい。例えば、
図1に示す暗号システム10は、暗号化部102又は復号部103のいずれか一方のみを有していてもよい。
【0024】
<暗号システム10の利用形態>
ここで、暗号システム10の利用形態の一例として、2台の暗号システム10間で公開鍵暗号方式により暗号化通信を行う場合の利用形態と、2台の暗号システム10間で公開鍵暗号方式を応用した電子署名付きデータの通信を行う場合の利用形態とについてそれぞれ説明する。以降では、これら2台の暗号システム10の一方を「暗号システム10-1」、他方を「暗号システム10-2」と表す。また、公開暗号化鍵2000及び公開復号鍵3000は暗号システム10-1により作成されたものであるとする(つまり、公開暗号化鍵2000及び公開復号鍵3000は、暗号システム10-1の秘密鍵1000を用いて作成されたものであるとする。)。
【0025】
まず、暗号システム10-1と暗号システム10-2との間で公開鍵暗号方式により暗号化通信を行う場合の利用形態について、
図2Aを参照しながら説明する。
図2Aは、暗号システム10の利用形態の一例を説明するための図(その1)である。
【0026】
図2Aに示すように、暗号システム10-2の暗号化部102は、公開暗号化鍵2000を用いて平文P1を暗号化することで暗号文C1を作成し、暗号システム10-1に送信する。そして、暗号システム10-1の復号部103は、暗号文C1を受信すると、秘密鍵1000を用いて暗号文C1を復号することで平文P1を作成する。
【0027】
このように、暗号システム10-2で公開暗号化鍵2000を用いて暗号化された暗号文C1が、暗号システム10-1で秘密鍵1000を用いて復号される。このとき、本実施形態では、共通鍵暗号方式としてAESを採用しているため、暗号システム10-2ではAESでの暗号化処理と同等の演算量で暗号化を行うことができる。なお、暗号システム10-1での復号に要する演算量は、通常のAESによる復号処理の演算量と同様である。
【0028】
次に、暗号システム10-1と暗号システム10-2との間で公開鍵暗号方式を応用した電子署名付きデータの通信を行う場合の利用形態について、
図2Bを参照しながら説明する。
図2Bは、暗号システム10の利用形態の一例を説明するための図(その2)である。
【0029】
図2Bに示すように、暗号システム10-1の暗号化部102は、秘密鍵1000を用いて電子署名の付与対象のデータD1から電子署名付きデータD2を作成し、暗号システム10に送信する。なお、暗号システム10-1の暗号化部102は、例えば、データD1のハッシュ値を秘密鍵1000で暗号化することで電子署名を作成し、この電子署名をデータD1に付与すること電子署名付きデータD2を作成する。
【0030】
そして、暗号システム10-2の復号部103は、電子署名付きデータD2を受信すると、公開復号鍵3000を用いて電子署名付きデータD2を検証し、検証結果D3を作成する。なお、暗号システム10-2の復号部103は、例えば、公開復号鍵3000を用いて電子署名付きデータD2に含まれる電子署名を復号することができるか否かを検証すると共に、当該電子署名を復号することで得られたハッシュ値と電子署名付きデータD2に含まれるデータ部分のハッシュ値とが一致するか否かを検証することで、検証結果D2を作成する。
【0031】
このように、暗号システム10-1で秘密鍵1000を用いて作成された電子署名付きデータD2が、暗号システム10-2で公開復号鍵3000を用いて復号される。このとき、本実施形態では、共通鍵暗号方式としてAESを採用しているため、暗号システム10-2ではAESの復号処理と同等の演算量で電子署名の復号を行うことができる。なお、暗号システム10-1での暗号化に要する演算量は、通常のAESによる暗号化処理の演算量と同様である。
【0032】
<ハードウェア構成>
次に、本実施形態に係る暗号システム10のハードウェア構成について、
図3を参照しながら説明する。
図3は、本実施形態に係る暗号システム10のハードウェア構成の一例を示す図である。
【0033】
図3に示すように、本実施形態に係る暗号システム10は、プロセッサ201と、メモリ装置202と、I/F203とを有する。これら各ハードウェアは、それぞれがバス204を介して通信可能に接続されている。
【0034】
プロセッサ201は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等の演算装置である。暗号システム10が有する各機能部(公開鍵作成部101、暗号化部102及び復号部103)は、メモリ装置202に格納された1以上のプログラムがプロセッサ201に実行させる処理により実現される。
【0035】
メモリ装置202は、例えば、RAM(Random Access Memory)やROM(Read Only Memory)、フラッシュメモリ等の各種の記憶装置である。暗号システム10が有する記憶部104は、例えば、メモリ装置202により実現される。
【0036】
I/F203は、暗号システム10にデータを入力したり、暗号システム10からデータを出力したりするためのインタフェースである。
【0037】
本実施形態に係る暗号システム10は、
図3に示すハードウェア構成を有することにより、各種処理を実現することができる。なお、
図3に示すハードウェア構成は一例であって、本実施形態に係る暗号システム10は、他のハードウェア構成を有していてもよい。例えば、本実施形態に係る暗号システム10は、複数のプロセッサ201を有していてもよいし、複数のメモリ装置202を有していてもよい。
【0038】
<公開鍵作成処理>
次に、本実施形態に係る暗号システム10が公開暗号化鍵2000及び公開復号鍵3000の少なくとも一方を作成する場合の公開鍵作成処理について、
図4を参照しながら説明する。
図4は、本実施形態に係る公開鍵作成処理の一例を示すフローチャートである。なお、以降では、一例として、公開暗号化鍵2000及び公開復号鍵3000の両方を作成する場合について説明する。
【0039】
まず、暗号システム10の公開鍵作成部101は、記憶部104に記憶されている秘密鍵1000を入力する(ステップS101)。なお、上述したように、公開暗号化鍵2000を作成するための秘密鍵1000と、公開復号鍵3000を作成するための秘密鍵1000とはそれぞれ異なる秘密鍵を入力する。以降では、これらの秘密鍵を区別するため、公開暗号化鍵2000を作成するための秘密鍵1000を「秘密鍵1000A」、公開復号鍵3000を作成するための秘密鍵1000を「秘密鍵1000B」と表す。
【0040】
次に、暗号システム10の公開鍵作成部101は、上記のステップS101で入力した秘密鍵1000Aを用いた共通鍵暗号方式の暗号化処理をWBCによりルックアップテーブル化して、暗号化用ルックアップテーブルを作成する。同様に、暗号システム10の公開鍵作成部101は、上記のステップS101で入力した秘密鍵1000Bを用いた共通鍵暗号方式の復号処理をWBCによりルックアップテーブル化して、復号用ルックアップテーブルを作成する(ステップS102)。
【0041】
最後に、暗号システム10の公開鍵作成部101は、上記のステップS102で作成した暗号化用ルックアップテーブルを公開暗号化鍵2000として公開する。同様に、暗号システム10の公開鍵作成部101は、上記のステップS102で作成した復号用ルックアップテーブルを公開復号鍵3000として公開する(ステップS103)。
【0042】
なお、公開鍵作成部101は、公開暗号化鍵2000や公開復号鍵3000を任意の方法で公開すればよい。例えば、公開鍵作成部101は、公開暗号化鍵2000や公開復号鍵3000を通信相手の機器(他の暗号システム10)に送信することで公開してもよいし、通信相手の機器がアクセス可能なDB(データベース)サーバ等に格納することで公開してもよい。
【0043】
以上により、公開暗号化鍵2000及び公開復号鍵3000の少なくとも一方が公開鍵として公開され、本実施形態に係る暗号システム10は、この公開鍵を用いた公開鍵暗号方式(又は、公開鍵暗号方式を応用した電子署名)を実現することができる。しかも、本実施形態は共通鍵暗号方式としてAESを採用しているため、この公開鍵を用いた公開鍵暗号方式はAESと同等の演算量で暗号化及び復号を行うことができる。
【0044】
このため、例えば、RSA(Rivest-Shamir-Adleman cryptosystem)等の公開鍵暗号方式と比べて、暗号化及び復号する際の演算量を大幅に削減することができる。より具体的には、例えば、AES128に対してRSA3076の相対的な演算時間は約220倍であることが知られているため、共通鍵暗号方式としてAES128を用いた場合、この共通鍵暗号方式により実現される公開鍵暗号方式では、RSA3076と比べてその演算時間を約1/220に削減することができる。同様に、例えば、AES256に対してRSA15360の相対的な演算時間は約226倍であることが知られているため、共通鍵暗号方式としてAES256を用いた場合、この共通鍵暗号方式により実現される公開鍵暗号方式では、RSA15360と比べてその演算時間を約1/226に削減することができる。
【0045】
<AESの拡張>
ここで、本実施形態では共通鍵暗号方式としてAESを採用しているが、共通鍵暗号方式により実現される公開鍵暗号方式のセキュリティをより高めるためにAESを拡張する方法について説明する。本実施形態では、この拡張されたAESを「拡張AES」と表す。共通鍵暗号方式として、AESの代わりに拡張AESを用いることで、この共通鍵暗号方式により実現される公開鍵暗号方式のセキュリティをより高めることが可能となる。
【0046】
まず、
図5に示すように、AESのn(nは0以上の整数)ラウンド目の1つのサブラウンドでは、nラウンド目の中間ベクタの所定の4バイト(=32ビット)のデータを入力として、ShiftRows処理とAddRoundKey処理とSubByte処理とMixColumns処理とが行われ、n+1ラウンド目の中間ベクタの所定の4バイトのデータが出力される。このようなサブラウンドが4回繰り返されることで、nラウンド目の処理が終了する。なお、このとき、MixColumns処理では、4×4の行列演算が1サブラウンドあたり1回行われる。
【0047】
そして、0ラウンド目に入力される中間ベクタは平文であり、最終ラウンドで出力される中間ベクタが暗号文である。
【0048】
上述したように、公開暗号化鍵2000は暗号化用ルックアップテーブルであるため、この公開暗号化鍵2000とn+1ラウンド目の中間ベクタとを用いて、nラウンド目の中間ベクタを探索することが可能である。このとき、1サブラウンドで4バイトのデータから4バイトのデータが得られるため、この探索コストは、n+1ラウンド目の中間ベクタに含まれるMixColumns処理の単位である4バイトのデータ、つまり32ビットである。したがって、共通鍵暗号方式にAESを採用した場合、探索コストが32ビットの探索を繰り返すことで、暗号文から平文を特定することが可能となる。
【0049】
そこで、
図5に示すように、AESのMixColumns処理を、16×16の行列演算が1ラウンドあたり1回行われる拡張MixColumns処理に置換する。MixColumns処理が拡張MixColumns処理に置換されたAESが「拡張AES」である。この拡張AESでは、1ラウンドで16バイトのデータから16バイトのデータが得られるため、この探索コストは、16バイト(=128ビット)である。したがって、共通鍵暗号方式として拡張AESを採用することで、現実的な演算時間内で暗号文から平文を特定することが不可能となり、この共通鍵暗号方式により実現される公開鍵暗号方式のセキュリティをより高めることが可能となる。
【0050】
ここで、
図5では説明の便宜上、暗号化処理におけるMixColumns処理を拡張MixColumns処理に置換したが、拡張AESでは、復号処理におけるInvMixColumns処理も同様に拡張InvMixColumns処理に置換される。拡張InvMixColumns処理でも、16×16の行列演算が1ラウンドあたり1回行われる。
【0051】
なお、拡張AESはAESと同等の構造を有しているため、その暗号強度はAESと同等である。また、拡張MixColumns処理の演算量は、行列演算に用いられる変換行列のサイズが4×4から16×16になるため、4倍となる。
【0052】
<拡張MixColumns処理及び拡張InvMixColumns処理に用いられる行列>
ここで、拡張MixColumns処理に用いられる変換行列と、拡張InvMixColumns処理に用いられる逆変換行列の具体例について説明する。なお、以降では、変換行列及び逆変換行列の各要素を16進数で表現するものとする。
【0053】
まず、基本的な条件として、n+1ラウンド目の中間ベクタに含まれる各1バイトデータに関与するデータ(つまり、nラウンド目の中間ベクタ)を16バイトとするため、変換行列の各要素には「00」は使用しないことが望ましい。
【0054】
また、AESと同様に、変換行列のi+1(i=1,・・・,15)行目の行は、i行目の行を所定の方向(右又は左のいずれか)に1つローテーションしたものであるとする。つまり、例えば、所定の方向が右方向であり、i行目の行が[a1,a2,・・・,a16]と表される場合、i+1行目の行は[a16,a1,・・・,a15]と表される。なお、このことは、変換行列のj+1(j=1,・・・,15)列目の列は、j列目の列を所定の方向(上又は下のいずれか)に1つローテーションしたものである、と言い換えることができる。
【0055】
なお、逆変換行列は、変換行列の逆行列で表される。また、逆変換行列も、i+1(i=1,・・・,15)行目の行はi行目の行を所定の方向に1つローテーションしたものとなる。
【0056】
(実施例1)
拡張MixColumns処理に用いられる変換行列と拡張InvMixColumns処理に用いられる逆変換行列との実施例1を
図6に示す。
図6は、拡張MixColumns処理及び拡張InvMixColumns処理に用いられる行列の一例を示す図(実施例1)である。
【0057】
拡張MixColumns処理はガロア体上の既約多項式に基づいた行列演算であるため、共通鍵暗号方式としてCPU等のプロセッサ201で演算する場合、積算する値によって演算のステップ数が変化する(つまり、積算する値を2進数にした際のビット1の最下位からの距離の和に比例する。)。このため、拡張MixColumns処理に用いられる変換行列の各要素は、できるだけ低位な値(つまり、各要素の値が小さい)の方が、演算のステップ数が少なくて済む。
【0058】
そこで、
図6に示すように、実施例1は、変換行列の各要素を「01」、「02」、「03」で構成した例である。ただし、実施例1では、逆変換行列の各要素は低位な値とならず、乱雑な値で構成される。
【0059】
(実施例2)
拡張MixColumns処理に用いられる変換行列と拡張InvMixColumns処理に用いられる逆変換行列との実施例2を
図7に示す。
図7は、拡張MixColumns処理及び拡張InvMixColumns処理に用いられる行列の一例を示す図(実施例2)である。
【0060】
実施例2は、拡張AESの共通鍵を使用して演算する箇所を小さいプログラムサイズでも高速に暗号化及び復号を行えるようにするため、拡張MixColumns処理に用いられる変換行列の各要素を、最も演算のステップ数が少ない「02」とそれに次ぐ「03」とで構成したものである。
図7に示すように、この変換行列は、1行あたり「02」が13個、「03」が3個で構成されている。このとき、
図7に示すように、この変換行列の逆行列(つまり、逆変換行列)も、1行あたり「02」が13個、「03」が3個で構成された行列となる。このため、実施例2では、拡張InvMixColumns処理でも、演算のステップ数を少なくすることができる。
【0061】
また、後述するように、実施例2における変換行列及び逆変換行列を拡張MixColumns処理及び拡張InvMixColumns処理にそれぞれ用いることで、演算結果を再利用することができるため、暗号化及び復号の演算量を削減することが可能となる。
【0062】
なお、実施例2では、「02」と「03」とを用いて変換行列を構成したが、これに限られず、例えば、「02」の代わりに「X」(Xは「02」~「FE」の間の任意の偶数)を用いると共に、「03」の代わりに「X+1」を用いて変換行列を構成してもよい。ただし、X=「02」とした場合が最も演算のステップ数が少ないため、X=「02」とした場合が暗号化及び復号の演算量を最も削減することが可能となる。
【0063】
<拡張MixColumns処理及び拡張InvMixColumns処理での行列演算>
ここで、拡張MixColumns処理及び拡張InvMixColumns処理での行列演算について説明する。拡張MixColumns処理への入力をx、拡張MixColumns処理からの出力をyとして、それぞれ以下で表すものとする。
【0064】
x=(x0,x1,・・・,x15),xi∈{0,・・・,255}
y=(y0,y1,・・・,y15),yi∈{0,・・・,255}
なお、このとき、拡張InvMixColumns処理からの出力はx、拡張InvMixColumns処理への入力はyで表される。
【0065】
また、拡張MixColumns処理に用いられる変換行列を
【0066】
【数1】
とする。ただし、m
i,j=m
0,(j-i) mod 16である。
【0067】
同様に、拡張InvMixColumns処理に用いられる逆変換行列を
【0068】
【数2】
とする。ただし、m´
i,j=m´
0,(j-i) mod 16である。
【0069】
このとき、拡張MixColumns処理では、以下の式(1)により行列演算(変換)を行う。
【0070】
【数3】
また、拡張InvMixColumns処理では、以下の式(2)により行列演算(逆変換)を行う。
【0071】
【数4】
ただし、上記の式(1)及び(2)では、積及び和はガロア体上の積及び和である。
【0072】
ここで、上記の実施例1における変換行列を用いた場合、拡張MixColumns処理では、
y0=3・x0+3・x1+2・x2+2・x3+3・x4+2・x5+3・x6+1・x7+1・x8+2・x9+1・x10+2・x11+3・x12+1・x13+2・x14+1・x15
y1=1・x0+3・x1+3・x2+2・x3+2・x4+3・x5+2・x6+3・x7+1・x8+1・x9+2・x10+1・x11+2・x12+3・x13+1・x14+2・x15
・・・
と計算される。
【0073】
また、上記の実施例1における逆変換行列を用いた場合、拡張InvMixColumns処理では、
x0=F9・y0+BF・y1+11・y2+DA・y3+BF・y4+DA・y5+DA・y6+32・y7+32・y8+32・y9+9C・y10+9C・y11+F9・y12+57・y13+DA・y14+F9・y15
x1=F9・y0+F9・y1+BF・y2+11・y3+DA・y4+BF・y5+DA・y6+DA・y7+32・y8+32・y9+32・y10+9C・y11+9C・y12+F9・y13+57・y14+DA・y15
・・・
と計算される。このように、実施例1では、拡張InvMixColumns処理において、高位の値(例えば、「F9」等)との演算が、1バイトの出力を得るために16回(すなわち、16バイトの出力を得るためには256回)行われる。このため、実施例2と比較して、演算ステップのステップ数が多くなる。
【0074】
次に、上記の実施例2における変換行列を用いた場合、拡張MixColumns処理では、
y0=2・x0+2・x1+2・x2+2・x3+2・x4+2・x5+2・x6+3・x7+2・x8+2・x9+2・x10+2・x11+3・x12+2・x13+2・x14+3・x15=2・(x0+x1+・・・+x15)+x7+x12+x15
y1=3・x0+2・x1+2・x2+2・x3+2・x4+2・x5+2・x6+2・x7+3・x8+2・x9+2・x10+2・x11+2・x12+3・x13+2・x14+2・x15=2・(x0+x1+・・・+x15)+x0+x8+x13
・・・
と計算される。このように、各y0~y15の計算には2・(x0+x1+・・・+x15)が含まれるため、2・(x0+x1+・・・+x15)の演算結果を再利用することができる。
【0075】
また、上記の実施例2における逆変換行列を用いた場合、拡張InvMixColumns処理では、
x0=2・y0+2・y1+2・y2+2・y3+3・y4+2・y5+2・y6+3・y7+2・y8+2・y9+2・y10+2・y11+2・y12+2・y13+2・y14+3・y15=2・(y0+y1+・・・+y15)+y4+y7+y15
x1=3・y0+2・y1+2・y2+2・y3+2・y4+3・y5+2・y6+2・y7+3・y8+2・y9+2・y10+2・y11+2・y12+2・y13+2・y14+2・y15=2・(y0+y1+・・・+y15)+y0+y5+y8
・・・
と計算される。このように、各x0~x15の計算には2・(y0+y1+・・・+y15)が含まれるため、2・(y0+y1+・・・+y15)の演算結果を再利用することができる。
【0076】
したがって、実施例2では、拡張MixColumns処理及び拡張InvMixColumns処理で16バイトの出力を得る際に、低位な2倍の積算しか出現せず、その回数もそれぞれ1回である。このため、拡張MixColumns処理及び拡張InvMixColumns処理で16バイトの出力を得る際に、その演算量が大幅に削減される。
【0077】
<演算量の比較>
AESと実施例1と実施例2とで行列変換及び逆行列変換における演算量(積算の演算回数と加算の演算回数)を以下の表1に示す。
【0078】
【表1】
ここで、AESの行列変換はMixColumns処理における行列演算のことであり、逆行列変換はInvMixColumns処理における行列演算のことである。一方で、実施例1及び実施例2における行列変換は拡張MixColumns処理における行列演算のことであり、逆行列変換は拡張InvMixColumns処理における行列演算のことである。なお、上記の表1に示すAESの演算量は、行列変換及び逆行列変換をルックアップテーブル化していない場合の演算量である。
【0079】
AESでは(変換行列又は逆変換行列の1行あたりの1以外の個数)×(行数)×(1ラウンドあたりの変換又は逆変換の回数)で演算量を算出している。また、実施例2では、(変換行列又は逆変換行列の1行あたりの1以外の個数)×(行数)で演算量を算出している。上記の表1に示すように、実施例1では、拡張MixColumns処理及び拡張InvMixColumns処理における演算量が、AESのMixColumns処理及びInvMixColumns処理における演算量よりも多くなる。
【0080】
一方で、実施例2では、演算結果の再利用により、積算の演算回数は1回、加算の演算回数は行列変換及び逆行列変換共に63回である。なお、加算の演算回数は、行列変換の場合、演算結果が再利用される部分(つまり、2・(x0+x1+・・・+x15))の加算回数(=15回)と、y0~y15のそれぞれで当該部分以外の加算回数(=3回×16)との和となる。逆行列変換についても同様である。
【0081】
このため、実施例2を適用した拡張AESでは、AES及び実施例1を適用した拡張AESと比べて、その演算量を大幅に削減することが可能である。
【0082】
<まとめ>
以上のように、本実施形態に係る暗号システム10は、WBCを用いて共通鍵暗号方式の処理(共通鍵を用いた暗号化処理、共通鍵を用いた復号処理)をルックアップテーブル化することで、この共通鍵暗号方式により公開鍵暗号方式を実現することができる。このとき、この公開鍵暗号方式は、当該共通鍵暗号方式と同様以下の演算量で実現することができるため、従来の公開鍵暗号方式と比較して大幅な演算量の削減が可能になる。更に、共通鍵暗号方式として拡張AESを採用し、上記の実施例2で示した変換行列及び逆変換行列を用いた拡張MixColumns処理及び拡張InvMixColumns処理で各ラウンドを構成することで、より高いセキュリティを実現しつつ、更なる演算量の削減を実現することができる。
【0083】
なお、WBCには様々な方式あり、拡張AESに対してどの方式のWBCを用いてルックアップテーブル化するかによって、総テーブルサイズが異なる。一例として、AES128を拡張した拡張AES128と、AES192を拡張した拡張AES192と、AES256を拡張した拡張AES256とのそれぞれに対して従来技術のWBCでルックアップテーブル化した場合の総テーブルサイズを以下の表2に示す。なお、単位はByteである。
【0084】
【表2】
ここで、従来技術1は特開2017-44757号公報に開示されているWBC、従来技術2は特開2017-216619号公報に開示されているWBC、従来技術3は特開2017-167390号公報に開示されているWBCのことである。
【0085】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更等が可能である。
【符号の説明】
【0086】
10 暗号システム
101 公開鍵作成部
102 暗号化部
103 復号部
104 記憶部
201 プロセッサ
202 メモリ装置
203 I/F
1000 秘密鍵
2000 公開暗号化鍵
3000 公開復号鍵