JP7383949B2 - 情報処理装置及びプログラム - Google Patents

情報処理装置及びプログラム Download PDF

Info

Publication number
JP7383949B2
JP7383949B2 JP2019171450A JP2019171450A JP7383949B2 JP 7383949 B2 JP7383949 B2 JP 7383949B2 JP 2019171450 A JP2019171450 A JP 2019171450A JP 2019171450 A JP2019171450 A JP 2019171450A JP 7383949 B2 JP7383949 B2 JP 7383949B2
Authority
JP
Japan
Prior art keywords
matrix
encryption
decryption
transformation
public
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019171450A
Other languages
English (en)
Other versions
JP2021047371A (ja
Inventor
健二 高務
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2019171450A priority Critical patent/JP7383949B2/ja
Priority to US16/941,945 priority patent/US11477024B2/en
Publication of JP2021047371A publication Critical patent/JP2021047371A/ja
Application granted granted Critical
Publication of JP7383949B2 publication Critical patent/JP7383949B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/045Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply hybrid encryption, i.e. combination of symmetric and asymmetric encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Description

本発明は、情報処理装置及びプログラムに関する。

つながる時代の新技術に代表されるIoT(Internet of Things)では、種々様々なデバイスが通信ネットワークに接続される。これらのデバイスの多くは低コストに実現される機器でありながら、マイクロプロセッサ等を搭載してアプリケーションを実装していると共に、セキュリティ対策として各種暗号機能も実装している。
一般的な通信路の暗号化においては、公開鍵暗号方式で認証と鍵の交換とを行った上で、この鍵を用いた共通鍵暗号方式によりデータを暗号化する場合が多い。しかしながら、低コストに実現される機器では、公開鍵暗号方式の演算処理に多くの時間を要してしまう。これに対して、公開鍵暗号方式の1つであるペアリング暗号の高速化を実現することができる多倍長整数演算装置が知られている(例えば、特許文献1参照)。
特開2014-137415号公報
しかしながら、上記の従来技術では、特定の多倍長整数演算装置を機器に搭載する必要がある。また、演算量のオーダーを下げるほどの高速化は困難である。
本発明の実施形態は、上記の点に鑑みてなされたもので、公開鍵暗号の演算量を削減することを目的とする。
上記目的を達成するための、本実施形態に係る情報処理装置は、共通鍵暗号方式に用いられる共通鍵と、前記共通鍵を用いた暗号化処理又は復号処理をWhite-Box Cryptographyによりルックアップテーブル化して、前記暗号化処理に対応する暗号化用ルックアップテーブル又は前記復号処理に対応する復号用ルックアップテーブルを作成する作成手段と、前記作成手段により作成された暗号化用ルックアップテーブル又は復号用ルックアップテーブルを、公開鍵として公開とする公開手段と、を有することを特徴とする。
公開鍵暗号の演算量を削減することができる。
本実施形態に係る暗号システムの機能構成の一例を示す図である。 暗号システムの利用形態の一例を説明するための図(その1)である。 暗号システムの利用形態の一例を説明するための図(その2)である。 本実施形態に係る暗号システムのハードウェア構成の一例を示す図である。 本実施形態に係る公開鍵作成処理の一例を示すフローチャートである。 MixColumns処理の置換の一例を説明するための図である。 拡張MixColumns処理及び拡張InvMixColumns処理に用いられる行列の一例を示す図(実施例1)である。 拡張MixColumns処理及び拡張InvMixColumns処理に用いられる行列の一例を示す図(実施例2)である。
以下、本発明の実施形態について説明する。本実施形態では、WBC(White-Box Cryptography)を用いて共通鍵暗号方式により公開鍵暗号方式を実現することで、公開鍵暗号の演算量を削減する暗号システム10について説明する。ここで、本実施形態に係る暗号システム10は、一例として、一般的なマイクロプロセッサ等が搭載された組み込みシステム(Embedded System)であるものとする。組み込みシステムは、例えば、産業用機器や家電製品等に内蔵され、特定の機能を実現するシステムである。具体的には、例えば、HEMS(Home Energy Management System)に利用されるスマートメーター等に対して、本実施形態に係る暗号システム10を組み込むことが可能である。
ただし、本実施形態に係る暗号システム10は、組み込みシステムに限られず、例えば、PC(Personal Computer)やスマートフォン、タブレット端末等の各種端末又は装置であってもよい。
<機能構成>
まず、本実施形態に係る暗号システム10の機能構成について、図1を参照しながら説明する。図1は、本実施形態に係る暗号システム10の機能構成の一例を示す図である。
図1に示すように、本実施形態に係る暗号システム10は、公開鍵作成部101と、暗号化部102と、復号部103と、記憶部104とを有する。
記憶部104は、共通鍵暗号方式に用いられる共通鍵を、公開鍵暗号方式の秘密鍵1000として記憶する。ここで、本実施形態では、一例として、共通鍵暗号方式はAES(Advanced Encryption Standard)であるものとする。なお、記憶部104には、秘密鍵1000以外にも、任意の情報(例えば、暗号化対象となる平文、秘密鍵1000を用いた電子署名の付与対象となるデータ等)が記憶されていてもよい。
公開鍵作成部101は、記憶部104に記憶されている秘密鍵1000(つまり、共通鍵暗号方式の共通鍵)を用いた共通鍵暗号方式の暗号化処理用にWBCによりルックアップテーブル(LUT:Lookup table)化した暗号化用ルックアップテーブルを作成する。本実施形態では、この暗号化用ルックアップテーブルを、公開鍵暗号方式によって平文を暗号化する際の公開鍵として扱うことで、公開鍵暗号方式を実現する。以降では、公開鍵作成部101により作成された暗号化用ルックアップテーブルを公開暗号化鍵2000とも表す。
また、公開鍵作成部101は、記憶部104に記憶されている秘密鍵1000(つまり、共通鍵暗号方式の共通鍵)を用いた共通鍵暗号方式の復号処理用にWBCによりルックアップテーブル化した復号用ルックアップテーブルを作成する。本実施形態では、この復号用ルックアップテーブルを、公開鍵暗号方式を応用した電子署名を行う際の公開鍵として扱うことで、公開鍵暗号方式を実現する。以降では、公開鍵作成部101により作成された復号用ルックアップテーブルを公開復号鍵3000とも表す。
なお、WBCでは、共通鍵や各種固定値等と暗号化処理又は復号処理とを合成することで暗号化用ルックアップテーブル又は復号用ルックアップテーブルが作成される。このとき、WBCの耐解読性により、暗号化用ルックアップテーブル及び復号用ルックアップテーブルから共通鍵を推測することは困難である。また、暗号化処理と復号処理とでは処理内容が異なるため、暗号化用ルックアップテーブルと復号用ルックアップテーブルとは互いに異なり、暗号化用ルックアップテーブルから復号用ルックアップテーブルを算出したり、復号用ルックアップテーブルから暗号化用ルックアップテーブルを算出したりすることはできない。
ここで、本実施形態に係る暗号システム10は、公開暗号化鍵2000又は公開復号鍵3000のいずれか一方のみを作成してもよいし、公開暗号化鍵2000及び公開復号鍵3000の両方を作成してもよい。ただし、公開暗号化鍵2000及び公開復号鍵3000の両方を作成する場合は、公開暗号化鍵2000を作成する場合と公開復号鍵3000を作成する場合とで異なる共通鍵を用いる。
暗号化部102は、公開鍵暗号方式を応用した電子署名を行う際に、記憶部104に記憶されている秘密鍵1000と電子署名の付与対象のデータとを用いて、電子署名付きデータを作成する。なお、電子署名付きデータは、この電子署名付きデータを受信した他の暗号システム10によって公開復号鍵3000を用いて検証される。
また、暗号化部102は、他の暗号システム10で作成された公開暗号化鍵を用いて平文を暗号化し、暗号文を作成する。なお、他の暗号システム10で作成された公開暗号化鍵は、例えば、記憶部104に記憶されている。
復号部103は、記憶部104に記憶されている秘密鍵1000を用いて、公開暗号化鍵2000で暗号化された暗号文を復号する。なお、この暗号文は、他の暗号システム10によって公開暗号化鍵2000を用いて暗号化されたデータである。
また、復号部103は、他の暗号システム10で作成された公開復号鍵を用いて電子署名付きデータを検証する。なお、他の暗号システム10で作成された公開復号鍵は、例えば、記憶部104に記憶されている。
なお、図1に示す暗号システム10の機能構成は一例であって、他の構成であってもよい。例えば、図1に示す暗号システム10は、暗号化部102又は復号部103のいずれか一方のみを有していてもよい。
<暗号システム10の利用形態>
ここで、暗号システム10の利用形態の一例として、2台の暗号システム10間で公開鍵暗号方式により暗号化通信を行う場合の利用形態と、2台の暗号システム10間で公開鍵暗号方式を応用した電子署名付きデータの通信を行う場合の利用形態とについてそれぞれ説明する。以降では、これら2台の暗号システム10の一方を「暗号システム10-1」、他方を「暗号システム10-2」と表す。また、公開暗号化鍵2000及び公開復号鍵3000は暗号システム10-1により作成されたものであるとする(つまり、公開暗号化鍵2000及び公開復号鍵3000は、暗号システム10-1の秘密鍵1000を用いて作成されたものであるとする。)。
まず、暗号システム10-1と暗号システム10-2との間で公開鍵暗号方式により暗号化通信を行う場合の利用形態について、図2Aを参照しながら説明する。図2Aは、暗号システム10の利用形態の一例を説明するための図(その1)である。
図2Aに示すように、暗号システム10-2の暗号化部102は、公開暗号化鍵2000を用いて平文P1を暗号化することで暗号文C1を作成し、暗号システム10-1に送信する。そして、暗号システム10-1の復号部103は、暗号文C1を受信すると、秘密鍵1000を用いて暗号文C1を復号することで平文P1を作成する。
このように、暗号システム10-2で公開暗号化鍵2000を用いて暗号化された暗号文C1が、暗号システム10-1で秘密鍵1000を用いて復号される。このとき、本実施形態では、共通鍵暗号方式としてAESを採用しているため、暗号システム10-2ではAESでの暗号化処理と同等の演算量で暗号化を行うことができる。なお、暗号システム10-1での復号に要する演算量は、通常のAESによる復号処理の演算量と同様である。
次に、暗号システム10-1と暗号システム10-2との間で公開鍵暗号方式を応用した電子署名付きデータの通信を行う場合の利用形態について、図2Bを参照しながら説明する。図2Bは、暗号システム10の利用形態の一例を説明するための図(その2)である。
図2Bに示すように、暗号システム10-1の暗号化部102は、秘密鍵1000を用いて電子署名の付与対象のデータD1から電子署名付きデータD2を作成し、暗号システム10に送信する。なお、暗号システム10-1の暗号化部102は、例えば、データD1のハッシュ値を秘密鍵1000で暗号化することで電子署名を作成し、この電子署名をデータD1に付与すること電子署名付きデータD2を作成する。
そして、暗号システム10-2の復号部103は、電子署名付きデータD2を受信すると、公開復号鍵3000を用いて電子署名付きデータD2を検証し、検証結果D3を作成する。なお、暗号システム10-2の復号部103は、例えば、公開復号鍵3000を用いて電子署名付きデータD2に含まれる電子署名を復号することができるか否かを検証すると共に、当該電子署名を復号することで得られたハッシュ値と電子署名付きデータD2に含まれるデータ部分のハッシュ値とが一致するか否かを検証することで、検証結果D2を作成する。
このように、暗号システム10-1で秘密鍵1000を用いて作成された電子署名付きデータD2が、暗号システム10-2で公開復号鍵3000を用いて復号される。このとき、本実施形態では、共通鍵暗号方式としてAESを採用しているため、暗号システム10-2ではAESの復号処理と同等の演算量で電子署名の復号を行うことができる。なお、暗号システム10-1での暗号化に要する演算量は、通常のAESによる暗号化処理の演算量と同様である。
<ハードウェア構成>
次に、本実施形態に係る暗号システム10のハードウェア構成について、図3を参照しながら説明する。図3は、本実施形態に係る暗号システム10のハードウェア構成の一例を示す図である。
図3に示すように、本実施形態に係る暗号システム10は、プロセッサ201と、メモリ装置202と、I/F203とを有する。これら各ハードウェアは、それぞれがバス204を介して通信可能に接続されている。
プロセッサ201は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等の演算装置である。暗号システム10が有する各機能部(公開鍵作成部101、暗号化部102及び復号部103)は、メモリ装置202に格納された1以上のプログラムがプロセッサ201に実行させる処理により実現される。
メモリ装置202は、例えば、RAM(Random Access Memory)やROM(Read Only Memory)、フラッシュメモリ等の各種の記憶装置である。暗号システム10が有する記憶部104は、例えば、メモリ装置202により実現される。
I/F203は、暗号システム10にデータを入力したり、暗号システム10からデータを出力したりするためのインタフェースである。
本実施形態に係る暗号システム10は、図3に示すハードウェア構成を有することにより、各種処理を実現することができる。なお、図3に示すハードウェア構成は一例であって、本実施形態に係る暗号システム10は、他のハードウェア構成を有していてもよい。例えば、本実施形態に係る暗号システム10は、複数のプロセッサ201を有していてもよいし、複数のメモリ装置202を有していてもよい。
<公開鍵作成処理>
次に、本実施形態に係る暗号システム10が公開暗号化鍵2000及び公開復号鍵3000の少なくとも一方を作成する場合の公開鍵作成処理について、図4を参照しながら説明する。図4は、本実施形態に係る公開鍵作成処理の一例を示すフローチャートである。なお、以降では、一例として、公開暗号化鍵2000及び公開復号鍵3000の両方を作成する場合について説明する。
まず、暗号システム10の公開鍵作成部101は、記憶部104に記憶されている秘密鍵1000を入力する(ステップS101)。なお、上述したように、公開暗号化鍵2000を作成するための秘密鍵1000と、公開復号鍵3000を作成するための秘密鍵1000とはそれぞれ異なる秘密鍵を入力する。以降では、これらの秘密鍵を区別するため、公開暗号化鍵2000を作成するための秘密鍵1000を「秘密鍵1000A」、公開復号鍵3000を作成するための秘密鍵1000を「秘密鍵1000B」と表す。
次に、暗号システム10の公開鍵作成部101は、上記のステップS101で入力した秘密鍵1000Aを用いた共通鍵暗号方式の暗号化処理をWBCによりルックアップテーブル化して、暗号化用ルックアップテーブルを作成する。同様に、暗号システム10の公開鍵作成部101は、上記のステップS101で入力した秘密鍵1000Bを用いた共通鍵暗号方式の復号処理をWBCによりルックアップテーブル化して、復号用ルックアップテーブルを作成する(ステップS102)。
最後に、暗号システム10の公開鍵作成部101は、上記のステップS102で作成した暗号化用ルックアップテーブルを公開暗号化鍵2000として公開する。同様に、暗号システム10の公開鍵作成部101は、上記のステップS102で作成した復号用ルックアップテーブルを公開復号鍵3000として公開する(ステップS103)。
なお、公開鍵作成部101は、公開暗号化鍵2000や公開復号鍵3000を任意の方法で公開すればよい。例えば、公開鍵作成部101は、公開暗号化鍵2000や公開復号鍵3000を通信相手の機器(他の暗号システム10)に送信することで公開してもよいし、通信相手の機器がアクセス可能なDB(データベース)サーバ等に格納することで公開してもよい。
以上により、公開暗号化鍵2000及び公開復号鍵3000の少なくとも一方が公開鍵として公開され、本実施形態に係る暗号システム10は、この公開鍵を用いた公開鍵暗号方式(又は、公開鍵暗号方式を応用した電子署名)を実現することができる。しかも、本実施形態は共通鍵暗号方式としてAESを採用しているため、この公開鍵を用いた公開鍵暗号方式はAESと同等の演算量で暗号化及び復号を行うことができる。
このため、例えば、RSA(Rivest-Shamir-Adleman cryptosystem)等の公開鍵暗号方式と比べて、暗号化及び復号する際の演算量を大幅に削減することができる。より具体的には、例えば、AES128に対してRSA3076の相対的な演算時間は約220倍であることが知られているため、共通鍵暗号方式としてAES128を用いた場合、この共通鍵暗号方式により実現される公開鍵暗号方式では、RSA3076と比べてその演算時間を約1/220に削減することができる。同様に、例えば、AES256に対してRSA15360の相対的な演算時間は約226倍であることが知られているため、共通鍵暗号方式としてAES256を用いた場合、この共通鍵暗号方式により実現される公開鍵暗号方式では、RSA15360と比べてその演算時間を約1/226に削減することができる。
<AESの拡張>
ここで、本実施形態では共通鍵暗号方式としてAESを採用しているが、共通鍵暗号方式により実現される公開鍵暗号方式のセキュリティをより高めるためにAESを拡張する方法について説明する。本実施形態では、この拡張されたAESを「拡張AES」と表す。共通鍵暗号方式として、AESの代わりに拡張AESを用いることで、この共通鍵暗号方式により実現される公開鍵暗号方式のセキュリティをより高めることが可能となる。
まず、図5に示すように、AESのn(nは0以上の整数)ラウンド目の1つのサブラウンドでは、nラウンド目の中間ベクタの所定の4バイト(=32ビット)のデータを入力として、ShiftRows処理とAddRoundKey処理とSubByte処理とMixColumns処理とが行われ、n+1ラウンド目の中間ベクタの所定の4バイトのデータが出力される。このようなサブラウンドが4回繰り返されることで、nラウンド目の処理が終了する。なお、このとき、MixColumns処理では、4×4の行列演算が1サブラウンドあたり1回行われる。
そして、0ラウンド目に入力される中間ベクタは平文であり、最終ラウンドで出力される中間ベクタが暗号文である。
上述したように、公開暗号化鍵2000は暗号化用ルックアップテーブルであるため、この公開暗号化鍵2000とn+1ラウンド目の中間ベクタとを用いて、nラウンド目の中間ベクタを探索することが可能である。このとき、1サブラウンドで4バイトのデータから4バイトのデータが得られるため、この探索コストは、n+1ラウンド目の中間ベクタに含まれるMixColumns処理の単位である4バイトのデータ、つまり32ビットである。したがって、共通鍵暗号方式にAESを採用した場合、探索コストが32ビットの探索を繰り返すことで、暗号文から平文を特定することが可能となる。
そこで、図5に示すように、AESのMixColumns処理を、16×16の行列演算が1ラウンドあたり1回行われる拡張MixColumns処理に置換する。MixColumns処理が拡張MixColumns処理に置換されたAESが「拡張AES」である。この拡張AESでは、1ラウンドで16バイトのデータから16バイトのデータが得られるため、この探索コストは、16バイト(=128ビット)である。したがって、共通鍵暗号方式として拡張AESを採用することで、現実的な演算時間内で暗号文から平文を特定することが不可能となり、この共通鍵暗号方式により実現される公開鍵暗号方式のセキュリティをより高めることが可能となる。
ここで、図5では説明の便宜上、暗号化処理におけるMixColumns処理を拡張MixColumns処理に置換したが、拡張AESでは、復号処理におけるInvMixColumns処理も同様に拡張InvMixColumns処理に置換される。拡張InvMixColumns処理でも、16×16の行列演算が1ラウンドあたり1回行われる。
なお、拡張AESはAESと同等の構造を有しているため、その暗号強度はAESと同等である。また、拡張MixColumns処理の演算量は、行列演算に用いられる変換行列のサイズが4×4から16×16になるため、4倍となる。
<拡張MixColumns処理及び拡張InvMixColumns処理に用いられる行列>
ここで、拡張MixColumns処理に用いられる変換行列と、拡張InvMixColumns処理に用いられる逆変換行列の具体例について説明する。なお、以降では、変換行列及び逆変換行列の各要素を16進数で表現するものとする。
まず、基本的な条件として、n+1ラウンド目の中間ベクタに含まれる各1バイトデータに関与するデータ(つまり、nラウンド目の中間ベクタ)を16バイトとするため、変換行列の各要素には「00」は使用しないことが望ましい。
また、AESと同様に、変換行列のi+1(i=1,・・・,15)行目の行は、i行目の行を所定の方向(右又は左のいずれか)に1つローテーションしたものであるとする。つまり、例えば、所定の方向が右方向であり、i行目の行が[a,a,・・・,a16]と表される場合、i+1行目の行は[a16,a,・・・,a15]と表される。なお、このことは、変換行列のj+1(j=1,・・・,15)列目の列は、j列目の列を所定の方向(上又は下のいずれか)に1つローテーションしたものである、と言い換えることができる。
なお、逆変換行列は、変換行列の逆行列で表される。また、逆変換行列も、i+1(i=1,・・・,15)行目の行はi行目の行を所定の方向に1つローテーションしたものとなる。
(実施例1)
拡張MixColumns処理に用いられる変換行列と拡張InvMixColumns処理に用いられる逆変換行列との実施例1を図6に示す。図6は、拡張MixColumns処理及び拡張InvMixColumns処理に用いられる行列の一例を示す図(実施例1)である。
拡張MixColumns処理はガロア体上の既約多項式に基づいた行列演算であるため、共通鍵暗号方式としてCPU等のプロセッサ201で演算する場合、積算する値によって演算のステップ数が変化する(つまり、積算する値を2進数にした際のビット1の最下位からの距離の和に比例する。)。このため、拡張MixColumns処理に用いられる変換行列の各要素は、できるだけ低位な値(つまり、各要素の値が小さい)の方が、演算のステップ数が少なくて済む。
そこで、図6に示すように、実施例1は、変換行列の各要素を「01」、「02」、「03」で構成した例である。ただし、実施例1では、逆変換行列の各要素は低位な値とならず、乱雑な値で構成される。
(実施例2)
拡張MixColumns処理に用いられる変換行列と拡張InvMixColumns処理に用いられる逆変換行列との実施例2を図7に示す。図7は、拡張MixColumns処理及び拡張InvMixColumns処理に用いられる行列の一例を示す図(実施例2)である。
実施例2は、拡張AESの共通鍵を使用して演算する箇所を小さいプログラムサイズでも高速に暗号化及び復号を行えるようにするため、拡張MixColumns処理に用いられる変換行列の各要素を、最も演算のステップ数が少ない「02」とそれに次ぐ「03」とで構成したものである。図7に示すように、この変換行列は、1行あたり「02」が13個、「03」が3個で構成されている。このとき、図7に示すように、この変換行列の逆行列(つまり、逆変換行列)も、1行あたり「02」が13個、「03」が3個で構成された行列となる。このため、実施例2では、拡張InvMixColumns処理でも、演算のステップ数を少なくすることができる。
また、後述するように、実施例2における変換行列及び逆変換行列を拡張MixColumns処理及び拡張InvMixColumns処理にそれぞれ用いることで、演算結果を再利用することができるため、暗号化及び復号の演算量を削減することが可能となる。
なお、実施例2では、「02」と「03」とを用いて変換行列を構成したが、これに限られず、例えば、「02」の代わりに「X」(Xは「02」~「FE」の間の任意の偶数)を用いると共に、「03」の代わりに「X+1」を用いて変換行列を構成してもよい。ただし、X=「02」とした場合が最も演算のステップ数が少ないため、X=「02」とした場合が暗号化及び復号の演算量を最も削減することが可能となる。
<拡張MixColumns処理及び拡張InvMixColumns処理での行列演算>
ここで、拡張MixColumns処理及び拡張InvMixColumns処理での行列演算について説明する。拡張MixColumns処理への入力をx、拡張MixColumns処理からの出力をyとして、それぞれ以下で表すものとする。
x=(x,x,・・・,x15),x∈{0,・・・,255}
y=(y,y,・・・,y15),y∈{0,・・・,255}
なお、このとき、拡張InvMixColumns処理からの出力はx、拡張InvMixColumns処理への入力はyで表される。
また、拡張MixColumns処理に用いられる変換行列を
Figure 0007383949000001
とする。ただし、mi,j=m0,(j-i) mod 16である。
同様に、拡張InvMixColumns処理に用いられる逆変換行列を
Figure 0007383949000002
とする。ただし、m´i,j=m´0,(j-i) mod 16である。
このとき、拡張MixColumns処理では、以下の式(1)により行列演算(変換)を行う。
Figure 0007383949000003
また、拡張InvMixColumns処理では、以下の式(2)により行列演算(逆変換)を行う。
Figure 0007383949000004
ただし、上記の式(1)及び(2)では、積及び和はガロア体上の積及び和である。
ここで、上記の実施例1における変換行列を用いた場合、拡張MixColumns処理では、
=3・x+3・x+2・x+2・x+3・x+2・x+3・x+1・x+1・x+2・x+1・x10+2・x11+3・x12+1・x13+2・x14+1・x15
=1・x+3・x+3・x+2・x+2・x+3・x+2・x+3・x+1・x+1・x+2・x10+1・x11+2・x12+3・x13+1・x14+2・x15
・・・
と計算される。
また、上記の実施例1における逆変換行列を用いた場合、拡張InvMixColumns処理では、
=F9・y+BF・y+11・y+DA・y+BF・y+DA・y+DA・y+32・y+32・y+32・y+9C・y10+9C・y11+F9・y12+57・y13+DA・y14+F9・y15
=F9・y+F9・y+BF・y+11・y+DA・y+BF・y+DA・y+DA・y+32・y+32・y+32・y10+9C・y11+9C・y12+F9・y13+57・y14+DA・y15
・・・
と計算される。このように、実施例1では、拡張InvMixColumns処理において、高位の値(例えば、「F9」等)との演算が、1バイトの出力を得るために16回(すなわち、16バイトの出力を得るためには256回)行われる。このため、実施例2と比較して、演算ステップのステップ数が多くなる。
次に、上記の実施例2における変換行列を用いた場合、拡張MixColumns処理では、
=2・x+2・x+2・x+2・x+2・x+2・x+2・x+3・x+2・x+2・x+2・x10+2・x11+3・x12+2・x13+2・x14+3・x15=2・(x+x+・・・+x15)+x+x12+x15
=3・x+2・x+2・x+2・x+2・x+2・x+2・x+2・x+3・x+2・x+2・x10+2・x11+2・x12+3・x13+2・x14+2・x15=2・(x+x+・・・+x15)+x+x+x13
・・・
と計算される。このように、各y~y15の計算には2・(x+x+・・・+x15)が含まれるため、2・(x+x+・・・+x15)の演算結果を再利用することができる。
また、上記の実施例2における逆変換行列を用いた場合、拡張InvMixColumns処理では、
=2・y+2・y+2・y+2・y+3・y+2・y+2・y+3・y+2・y+2・y+2・y10+2・y11+2・y12+2・y13+2・y14+3・y15=2・(y+y+・・・+y15)+y+y+y15
=3・y+2・y+2・y+2・y+2・y+3・y+2・y+2・y+3・y+2・y+2・y10+2・y11+2・y12+2・y13+2・y14+2・y15=2・(y+y+・・・+y15)+y+y+y
・・・
と計算される。このように、各x~x15の計算には2・(y+y+・・・+y15)が含まれるため、2・(y+y+・・・+y15)の演算結果を再利用することができる。
したがって、実施例2では、拡張MixColumns処理及び拡張InvMixColumns処理で16バイトの出力を得る際に、低位な2倍の積算しか出現せず、その回数もそれぞれ1回である。このため、拡張MixColumns処理及び拡張InvMixColumns処理で16バイトの出力を得る際に、その演算量が大幅に削減される。
<演算量の比較>
AESと実施例1と実施例2とで行列変換及び逆行列変換における演算量(積算の演算回数と加算の演算回数)を以下の表1に示す。
Figure 0007383949000005
ここで、AESの行列変換はMixColumns処理における行列演算のことであり、逆行列変換はInvMixColumns処理における行列演算のことである。一方で、実施例1及び実施例2における行列変換は拡張MixColumns処理における行列演算のことであり、逆行列変換は拡張InvMixColumns処理における行列演算のことである。なお、上記の表1に示すAESの演算量は、行列変換及び逆行列変換をルックアップテーブル化していない場合の演算量である。
AESでは(変換行列又は逆変換行列の1行あたりの1以外の個数)×(行数)×(1ラウンドあたりの変換又は逆変換の回数)で演算量を算出している。また、実施例2では、(変換行列又は逆変換行列の1行あたりの1以外の個数)×(行数)で演算量を算出している。上記の表1に示すように、実施例1では、拡張MixColumns処理及び拡張InvMixColumns処理における演算量が、AESのMixColumns処理及びInvMixColumns処理における演算量よりも多くなる。
一方で、実施例2では、演算結果の再利用により、積算の演算回数は1回、加算の演算回数は行列変換及び逆行列変換共に63回である。なお、加算の演算回数は、行列変換の場合、演算結果が再利用される部分(つまり、2・(x+x+・・・+x15))の加算回数(=15回)と、y~y15のそれぞれで当該部分以外の加算回数(=3回×16)との和となる。逆行列変換についても同様である。
このため、実施例2を適用した拡張AESでは、AES及び実施例1を適用した拡張AESと比べて、その演算量を大幅に削減することが可能である。
<まとめ>
以上のように、本実施形態に係る暗号システム10は、WBCを用いて共通鍵暗号方式の処理(共通鍵を用いた暗号化処理、共通鍵を用いた復号処理)をルックアップテーブル化することで、この共通鍵暗号方式により公開鍵暗号方式を実現することができる。このとき、この公開鍵暗号方式は、当該共通鍵暗号方式と同様以下の演算量で実現することができるため、従来の公開鍵暗号方式と比較して大幅な演算量の削減が可能になる。更に、共通鍵暗号方式として拡張AESを採用し、上記の実施例2で示した変換行列及び逆変換行列を用いた拡張MixColumns処理及び拡張InvMixColumns処理で各ラウンドを構成することで、より高いセキュリティを実現しつつ、更なる演算量の削減を実現することができる。
なお、WBCには様々な方式あり、拡張AESに対してどの方式のWBCを用いてルックアップテーブル化するかによって、総テーブルサイズが異なる。一例として、AES128を拡張した拡張AES128と、AES192を拡張した拡張AES192と、AES256を拡張した拡張AES256とのそれぞれに対して従来技術のWBCでルックアップテーブル化した場合の総テーブルサイズを以下の表2に示す。なお、単位はByteである。
Figure 0007383949000006
ここで、従来技術1は特開2017-44757号公報に開示されているWBC、従来技術2は特開2017-216619号公報に開示されているWBC、従来技術3は特開2017-167390号公報に開示されているWBCのことである。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更等が可能である。
10 暗号システム
101 公開鍵作成部
102 暗号化部
103 復号部
104 記憶部
201 プロセッサ
202 メモリ装置
203 I/F
1000 秘密鍵
2000 公開暗号化鍵
3000 公開復号鍵

Claims (5)

  1. 共通鍵暗号方式に用いられる共通鍵と、前記共通鍵を用いた暗号化処理又は復号処理をWhite-Box Cryptographyによりルックアップテーブル化して、前記暗号化処理に対応する暗号化用ルックアップテーブル又は前記復号処理に対応する復号用ルックアップテーブルを作成する作成手段と、
    前記作成手段により作成された暗号化用ルックアップテーブル又は復号用ルックアップテーブルを、公開鍵として公開とする公開手段と、
    を有し、
    前記共通鍵暗号方式は、AESの暗号化処理に含まれるMixColumns処理の行列変換を16×16の変換行列を用いた行列変換に置換すると共に、AESの復号処理に含まれるInvMixColumns処理の逆行列変換を前記変換行列の逆行列を用いた行列変換に置換した暗号方式である、ことを特徴とする情報処理装置。
  2. 前記変換行列は、0を除く低位の値を各要素とする行列であり、かつ、i+1(ただし、i=1,・・・,15)番目の行又は列はi番目の行又は列を所定の方向に1つローテーションした行列である、ことを特徴とする請求項に記載の情報処理装置。
  3. 前記変換行列は、1行又は1列あたり、M(Mは2以上、254以下の偶数)を値とする13個の要素と、M+1を値とする3個の要素とで構成された行列である、ことを特徴とする請求項に記載の情報処理装置。
  4. 前記変換行列は、1行又は1列あたり、2を値とする13個の要素と、3を値とする3個の要素とで構成された行列である、ことを特徴とする請求項に記載の情報処理装置。
  5. 共通鍵暗号方式に用いられる共通鍵と、前記共通鍵を用いた暗号化処理又は復号処理をWhite-Box Cryptographyによりルックアップテーブル化して、前記暗号化処理に対応する暗号化用ルックアップテーブル又は前記復号処理に対応する復号用ルックアップテーブルを作成する作成手順と、
    前記作成手順で作成された暗号化用ルックアップテーブル又は復号用ルックアップテーブルを、公開鍵として公開とする公開手順と、
    をコンピュータに実行させ
    前記共通鍵暗号方式は、AESの暗号化処理に含まれるMixColumns処理の行列変換を16×16の変換行列を用いた行列変換に置換すると共に、AESの復号処理に含まれるInvMixColumns処理の逆行列変換を前記変換行列の逆行列を用いた行列変換に置換した暗号方式である、ことを特徴とするプログラム。
JP2019171450A 2019-09-20 2019-09-20 情報処理装置及びプログラム Active JP7383949B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019171450A JP7383949B2 (ja) 2019-09-20 2019-09-20 情報処理装置及びプログラム
US16/941,945 US11477024B2 (en) 2019-09-20 2020-07-29 Information processing apparatus and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019171450A JP7383949B2 (ja) 2019-09-20 2019-09-20 情報処理装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2021047371A JP2021047371A (ja) 2021-03-25
JP7383949B2 true JP7383949B2 (ja) 2023-11-21

Family

ID=74876302

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019171450A Active JP7383949B2 (ja) 2019-09-20 2019-09-20 情報処理装置及びプログラム

Country Status (2)

Country Link
US (1) US11477024B2 (ja)
JP (1) JP7383949B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010515945A (ja) 2007-01-11 2010-05-13 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 実装のコピーの追跡
JP2010528517A (ja) 2007-05-22 2010-08-19 イルデト・ビー・ヴイ 暗号用鍵データの更新
JP2012520589A (ja) 2009-03-10 2012-09-06 イルデト・コーポレート・ビー・ヴイ 入力に依存する符号化を用いたホワイトボックス暗号システム
WO2017203992A1 (ja) 2016-05-23 2017-11-30 ソニー株式会社 暗号化装置、暗号化方法、復号化装置、及び復号化方法
JP2017216619A (ja) 2016-06-01 2017-12-07 富士電機株式会社 情報処理装置、情報処理方法及びプログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3928845A (en) * 1974-12-11 1975-12-23 Rca Corp Character generator system selectively providing different dot-matrix size symbols
US8838997B2 (en) * 2012-09-28 2014-09-16 Intel Corporation Instruction set for message scheduling of SHA256 algorithm
US9251377B2 (en) * 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
JP5852594B2 (ja) 2013-01-15 2016-02-03 日本電信電話株式会社 多倍長整数演算装置、多倍長整数演算方法、プログラム
SI3095044T1 (sl) * 2013-11-19 2021-02-26 Top Galore Limited Postopki in naprave za rudarjenje blokov
US9317719B2 (en) * 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US10409827B2 (en) * 2014-10-31 2019-09-10 21, Inc. Digital currency mining circuitry having shared processing logic
JP6292195B2 (ja) 2015-08-24 2018-03-14 富士電機株式会社 情報処理装置及び情報処理方法
JP6187624B1 (ja) * 2016-03-17 2017-08-30 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
EP3651142A4 (en) * 2017-08-10 2021-03-24 Sony Corporation ENCRYPTION DEVICE, ENCRYPTION METHOD, DECCRYPTION DEVICE, AND DECryption METHOD
US10140612B1 (en) * 2017-12-15 2018-11-27 Clover Network, Inc. POS system with white box encryption key sharing
US11606189B2 (en) * 2018-08-03 2023-03-14 Arris Enterprises Llc Method and apparatus for improving the speed of advanced encryption standard (AES) decryption algorithm

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010515945A (ja) 2007-01-11 2010-05-13 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 実装のコピーの追跡
JP2010528517A (ja) 2007-05-22 2010-08-19 イルデト・ビー・ヴイ 暗号用鍵データの更新
JP2012520589A (ja) 2009-03-10 2012-09-06 イルデト・コーポレート・ビー・ヴイ 入力に依存する符号化を用いたホワイトボックス暗号システム
WO2017203992A1 (ja) 2016-05-23 2017-11-30 ソニー株式会社 暗号化装置、暗号化方法、復号化装置、及び復号化方法
JP2017216619A (ja) 2016-06-01 2017-12-07 富士電機株式会社 情報処理装置、情報処理方法及びプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
辻井 重男 ほか,暗号と情報セキュリティ,初版4刷,日本,株式会社昭晃堂,1996年02月20日,p.229-234

Also Published As

Publication number Publication date
US11477024B2 (en) 2022-10-18
US20210091947A1 (en) 2021-03-25
JP2021047371A (ja) 2021-03-25

Similar Documents

Publication Publication Date Title
Kumar et al. Development of modified AES algorithm for data security
CN106850221B (zh) 信息加密、解密方法及装置
CN104468089B (zh) 数据保护装置及其方法
Aboytes-González et al. Design of a strong S-box based on a matrix approach
CN105099672B (zh) 混合加密方法及实现该方法的装置
JP6517438B2 (ja) ターゲットブロック暗号を計算する暗号デバイス
Anees et al. Designing secure substitution boxes based on permutation of symmetric group
Gutub et al. Hybrid crypto hardware utilizing symmetric-key and public-key cryptosystems
JP2008252299A (ja) 暗号処理システム及び暗号処理方法
US11385893B2 (en) Method secured against side-channel attacks performing an arithmetic operation of a cryptographic algorithm mixing Boolean and arithmetic operations
CN108141352B (zh) 密码设备、方法、装置和计算机可读介质和编码设备、方法、装置和计算机可读介质
US8976960B2 (en) Methods and apparatus for correlation protected processing of cryptographic operations
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
Gondal et al. A scheme for obtaining secure S-boxes based on chaotic Baker’s map
JP2021500760A (ja) 外部監視攻撃からモジュラーインバージョン演算を保護すること
Priya et al. FPGA implementation of efficient AES encryption
Kapoor et al. Analysis of symmetric and asymmetric key algorithms
JP6890589B2 (ja) 計算デバイス及び方法
JP7383949B2 (ja) 情報処理装置及びプログラム
EP3054620A1 (en) System and method for performing block cipher cryptography by implementing a mixer function that includes a substitution-box and a linear transformation using a lookup-table
JP7383985B2 (ja) 情報処理装置、情報処理方法及びプログラム
US10341089B2 (en) High-speed AES with transformed keys
JP4857230B2 (ja) 疑似乱数生成装置及びそれを用いた暗号化処理装置
Chaves et al. SCA-Resistance for AES: How Cheap Can We Go?
Homma et al. Formal design of multiple-valued arithmetic algorithms over galois fields and its application to cryptographic processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230705

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231010

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231023

R150 Certificate of patent or registration of utility model

Ref document number: 7383949

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150