JPWO2013129056A1 - 情報処理装置、および情報処理方法、並びにプログラム - Google Patents
情報処理装置、および情報処理方法、並びにプログラム Download PDFInfo
- Publication number
- JPWO2013129056A1 JPWO2013129056A1 JP2014502099A JP2014502099A JPWO2013129056A1 JP WO2013129056 A1 JPWO2013129056 A1 JP WO2013129056A1 JP 2014502099 A JP2014502099 A JP 2014502099A JP 2014502099 A JP2014502099 A JP 2014502099A JP WO2013129056 A1 JPWO2013129056 A1 JP WO2013129056A1
- Authority
- JP
- Japan
- Prior art keywords
- data
- processing
- key
- bit slice
- bit
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/80—Wireless
- H04L2209/805—Lightweight hardware, e.g. radio-frequency identification [RFID] or sensor
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
Description
具体的には、例えば家庭やオフィスにセンサを配置して電力消費量を管理するシステムや、独居老人宅にセンサを配置して健康・安全管理に利用するサービス、道路や車両にセンサを配置して渋滞検知・緩和に利用する交通システムなどである。
このようなニーズを受けて、軽量暗号技術の研究開発が進んでおり、近年、小型ハードウェア実装の観点で優れた新しい軽量ブロック暗号がいくつか提案されている。代表例としてPRESENT,CLEFIA,KATAN,Piccoloなどがある。
すなわち、ハードウェア実装時に小型化が可能なように、4ビット等の小さなS−boxやビット演算を多用した「軽い」ラウンド関数を多数回繰り返す構造で設計されているものが多い。
この軽量暗号の構造は、進化を続けている汎用プロセッサの利点を生かしきることができず、PCやサーバでのソフトウェア実装では一般に低速であるという課題がある。
また、本開示の一実施例においては、汎用プロセッサ上で動作可能なソフトウェア(プログラム)を適用して暗号処理を実行した場合に、高速処理を可能とした情報処理装置、および情報処理方法、並びにプログラムを提供することを目的とする。
複数のデータ送信装置の送信する暗号化データを受信する通信部と、
前記通信部を介して受信した複数の暗号化データの復号処理を実行するデータ処理部を有し、
前記データ処理部は、復号処理シーケンスを規定したプログラムに従ってデータ処理を実行する構成であり、
前記データ処理部は、前記プログラムに従って、
復号処理対象となる複数の暗号化データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記複数の暗号化データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、復号処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した復号処理と、
前記復号処理の結果に対する前記ビットスライス処理の逆変換により、前記複数の暗号化データに対応する複数の平文データを生成するデータ逆変換処理を、
実行する情報処理装置にある。
暗号化データを生成して送信する複数の送信端末と、
前記複数の送信端末の送信する複数の暗号化データを受信するサーバを有し、
前記サーバは、
復号処理シーケンスを規定したプログラムに従ってデータ処理を実行するデータ処理部を有し、
前記データ処理部は、前記プログラムに従って、
復号処理対象となる複数の暗号化データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記複数の暗号化データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、復号処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した復号処理と、
前記復号処理の結果に対する前記ビットスライス処理の逆変換により、前記複数の暗号化データに対応する複数の平文データを生成するデータ逆変換処理を、
実行する情報処理システムにある。
データ受信装置に対して暗号化データを送信する通信部と、
前記通信部を介して送信する複数の暗号化データの生成処理を実行するデータ処理部を有し、
前記データ処理部は、暗号処理シーケンスを規定したプログラムに従ってデータ処理を実行する構成であり、
前記データ処理部は、前記プログラムに従って、
暗号化処理対象となる複数の平文データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記複数の平文データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、暗号化処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した暗号処理と、
前記暗号処理の結果に対する前記ビットスライス処理の逆変換により、前記複数の平文データに対応する複数の暗号化データを生成するデータ逆変換処理を、
実行する情報処理装置にある。
複数の暗号化データを生成して送信するサーバと、
前記サーバの送信する暗号化データを受信する複数の受信端末を有し、
前記サーバは、
暗号処理シーケンスを規定したプログラムに従ってデータ処理を実行するデータ処理部を有し、
前記データ処理部は、前記プログラムに従って、
暗号処理対象となる複数の平文データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記複数の平文データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、暗号処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した暗号処理と、
前記暗号処理の結果に対する前記ビットスライス処理の逆変換により、前記複数の平文データに対応する複数の暗号化データを生成するデータ逆変換処理を、
実行する情報処理システムにある。
によって構成されるビットスライス表現鍵ブロック単位の演算処理と移動処理を適用して前記ラウンド鍵を生成する。
情報処理装置において実行する情報処理方法であり、
通信部が、複数のデータ送信装置の送信する暗号化データを受信する通信ステップと、
データ処理部が、前記通信部を介して受信した複数の暗号化データの復号処理を実行するデータ処理ステップを実行し、
前記データ処理ステップは、復号処理シーケンスを規定したプログラムに従って、
復号処理対象となる複数の暗号化データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記複数の暗号化データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、復号処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した復号処理と、
前記復号処理の結果に対する前記ビットスライス処理の逆変換により、前記複数の暗号化データに対応する複数の平文データを生成するデータ逆変換処理を、
実行する情報処理方法にある。
情報処理装置において実行する情報処理方法であり、
データ処理部が、複数の暗号化データの生成処理を実行するデータ処理ステップと、
通信部が、前記データ処理部の生成した複数の暗号化データの各々を複数のデータ送信装置各々に送信する通信ステップを実行し、
前記データ処理ステップは、暗号処理シーケンスを規定したプログラムに従って、
暗号化処理対象となる複数の平文データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記複数の平文データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、暗号化処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した暗号処理と、
前記暗号処理の結果に対する前記ビットスライス処理の逆変換により、前記複数の平文データに対応する複数の暗号化データを生成するデータ逆変換処理を、
実行する情報処理方法にある。
情報処理装置において情報処理を実行させるプログラムであり、
データ処理部に、複数の送信機が個別の暗号鍵で生成した暗号化データを入力させ、
前記データ処理に、
復号処理対象となる複数の暗号化データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記複数の暗号化データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、復号処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した復号処理と、
前記復号処理の結果に対する前記ビットスライス処理の逆変換により、前記複数の暗号化データに対応する複数の平文データを生成するデータ逆変換処理を、
実行させるプログラムにある。
情報処理装置において情報処理を実行させるプログラムであり、
データ処理部に、複数の暗号化データの生成処理を実行させるデータ処理ステップと、
通信部が、前記データ処理部の生成した複数の暗号化データの各々を複数のデータ送信装置各々に送信させる通信ステップを実行させ、
前記データ処理ステップにおいては、
暗号化処理対象となる複数の平文データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記複数の平文データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、暗号化処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した暗号処理と、
前記暗号処理の結果に対する前記ビットスライス処理の逆変換により、前記複数の平文データに対応する複数の暗号化データを生成するデータ逆変換処理を、
実行させるプログラムにある。
具体的には、多数のユーザ端末やセンサが個別の暗号鍵で軽量暗号アルゴリズムにより暗号化したデータを送信し、サーバがこれらの暗号化データを受信し、復号処理シーケンスを規定したプログラムに従ってデータ処理を実行する。復号対象となる複数の暗号化データに対するビットスライス処理によりビットスライス表現データを生成し、暗号化データ各々の暗号鍵に基づくビットトスライス表現鍵を生成し、ビットスライス表現鍵に基づいてラウンド鍵を生成し、ビットスライス表現データのブロック単位の演算、移動処理、ラウンド鍵を適用した演算等を含む復号処理を実行し、復号処理結果に対するデータの逆変換により、多数の暗号化データに対応する多数の平文データを生成することが可能となる。
さらに、本開示の一実施例に従ったビットスライス実装ではS−boxをテーブル参照でなく論理演算で計算するため、キャッシュ攻撃や仮想マシン間攻撃のようなサイドチャネル攻撃に対する耐性を高めることができる。さらに、クラウドコンピューティング処理におけるソフトウェアでの暗号処理の高速化は、より少ないサイクル数で暗号処理を完了することができ、クラウドやデータセンターの電力消費量を下げることにつながる。
さらに、軽量暗号にとってこれまで困難であったクラウドでの活用が可能になることで、センサでの軽量暗号実装が促進され、低コスト・低消費電力のセンサネットワークが実現できる。
1.本開示の構成を適用可能なシステムの一例について
2.軽量ブロック暗号アルゴリズム「PRESENT」について
3.情報処理装置(暗号処理装置)の構成と処理シーケンスの概要について
4.鍵変換処理とデータ変換処理について
5.鍵スケジュール処理について(鍵スケジュール処理例1)
6.鍵スケジュール処理について(鍵スケジュール処理例2)
6−1.非線形変換(Sbox)の事前計算処理について
6−2.ラウンド鍵生成、更新処理について
7.暗号処理について
8.情報処理装置および暗号処理装置の構成例について
9.本開示の構成のまとめ
例えば各個人の所有する携帯電話やスマートフォン等の通信端末や、様々な物品に装着されたRFID、あるいは各家屋に配置されたセンサなどから情報を収集してサーバにおいて処理を行う構成を想定する。
多数の情報送信側の装置には暗号処理アルゴリズムを実行する小型のハードウェアを装着して高速で暗号化データを生成して送信することができる。
今後は、このように膨大で多岐にわたるビッグデータを収集、分析し、活用するニーズがますます高まることが予想される。
大量の暗号化データを収集してクラウド構成サーバにアップロードし、クラウドで解析を行うようなケースでは、多くの安価なサーバ上で実行可能なソフトウェア(プログラム)を利用して処理を行わせるスケールアウトの手法が望ましいと考えられる。
本開示の構成が適用可能なシステムとして、例えば図1に示すようなネットワークシステムがある。
図1には、複数の末端ノードが接続されたセンサネットワーク20と、末端ノードの送信データを収集してデータ処理を行うネットワーク接続サーバ群によって構成されるクラウド10を示している。
なお、以下、これらの様々な末端ノード構成機器をまとめて、センサとして説明する。センサには上述した様々な機器が含まれる。
なお、多くの場合、送信データは例えば中継ノード等を介してクラウド10を構成するネットワーク接続サーバに提供される。
センサは、送信データの暗号化を実行して暗号化データを送信する。センサは、例えば軽量暗号アルゴリズムを実行する専用ハードウェアを実装し、これを用いて暗号化を行う。この暗号化のための暗号鍵は、各センサがメモリに保持する個別の暗号鍵、あるいは、例えばセンサIDから所定の演算で導出できる鍵などが利用される。
図2に示す例では、末端ノードA,B,Cをデータ送信ノードの代表例として示している。それぞれのノードはノード固有鍵である暗号鍵を適用して送信データの暗号化を実行して暗号化データによって構成されるブロック(例えば64ビット)を生成し、生成した暗号化データに各センサ(末端ノード)の識別子であるセンサIDを付与して送信する。
代表例として示すセンサA〜C以外の多数のセンサからも大量の暗号化データがクラウド上のサーバ、例えば図2に示すサーバS30に送信される。
次に、図1、図2を参照して説明したネットワークシステムにおいて、センサ(末端ノード)の送信データを収集して処理を行うクラウド上のサーバの実行する処理の概要について説明する。
なお、以下の説明において、「暗号処理」とはデータの暗号化処理と復号処理の双方を含むものとする。
ビットスライス暗号処理(暗号化および復号処理を含む)は1997年にBihamにより提案された処理であり、あるクラスの暗号アルゴリズムが、ビットスライス実装により従来のソフトウェア実装よりも高速に実装できることが示された。
図3には、図2に示すサーバS30の、
(A)保持データ
(B)暗号処理シーケンス(復号)
これらを説明する図を示している。
暗号鍵31は、各センサ(末端ノード)固有の鍵として、予めサーバS30が保持しているデータである。
センサID32と暗号化データ33の各データは、各センサからネットワークを介して受信したデータである。
センサIDに基づいて、各暗号化データの暗号化処理に適用された暗号鍵を選択することができる。
図3(B)には、各センサからネットワークを介して受信した暗号化データの復号処理を行う場合の処理例を示している。
ビットスライス暗号処理の処理単位として予め規定した所定のブロック数の暗号化データ33と暗号鍵31が揃ったら、ビットスライス暗号処理に従ったデータ復号処理を行う。
まず、サーバは、
多数のセンサから受信した暗号化データ33を構成する多数の暗号化データブロックから、
1bit目だけを集めたブロック(ビットスライス表現データブロック)、
2bit目だけを集めたブロック(ビットスライス表現データブロック)、
以降最終bit目まで同じビット位置のデータだけを集めたブロック(ビットスライス表現データブロック)、
これらの複数のビットスライス表現データブロックを生成する。
さらに、暗号化データ33の生成に適用された暗号鍵31についても、同様の処理、すなわち、複数の鍵データに対応する複数のビットスライス表現鍵ブロックを生成する。
なお、暗号鍵31の各々は、例えば80bitの鍵データからなる暗号鍵ブロックであり、この暗号鍵31について、各暗号鍵ブロックの同一ビット目、あるいはnビットおきのビット、ただしnは2,4,8,16,64,128などの2のべき数、これらのビットのデータの集合(ビットスライス表現鍵ブロック)を設定する。
本開示の装置では、このビットスライス表現ブロックを処理単位とした演算(AND,OR,XORなど)や、レジスタ格納データのシフト処理や、シャッフルなどのビット位置の転置処理などを、ソフトウェア(プログラム)の適用処理として実行して所定の暗号アルゴリズムに従った処理を実行する。
なお、ステップS12の鍵スケジューリング(Key Scheduling)処理では、このラウンド演算の各ラウンドにおいて適用するラウンド鍵を生成する。
図4に示すフローチャートは、暗号化データに付加されているセンサIDをもとに、各ブロックの復号鍵を用意するステップを、所定のブロック数の暗号化データが揃ってから行う場合のシーケンスを説明するフローチャートである。
図5に示すフローチャートは、暗号化データに付加されているセンサIDをもとに、各ブロックの復号鍵を用意するステップを、各暗号文データブロックの到着ごとに行う場合のシーケンスを説明するフローチャートである。
まず、ステップS31において、ノードから送付される暗号化データブロックを受信する。図3(A)に示すセンサID32と暗号化データ33との組み合わせデータである。
最後に、ステップS34において、暗号化データと暗号鍵の対応セットを暗号処理部50に入力してビットスライス暗号処理に従った復号処理を実行する。
まず、ステップS41において、ノードから送付される暗号化データブロックを受信する。図3(A)に示すセンサID32と暗号化データ33との組み合わせデータである。
例えば、暗号化データを送信する送信先の機器IDに基づいて各平文データに対応する暗号鍵を記憶部から選択取得し、記憶部から選択取得した暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する。
さらに、平文データに基づくビットスライス表現データブロックと、暗号鍵に基づくビットスライス表現鍵ブロックを適用して、図3(B)に示す暗号処理部50に示す処理シーケンスに従って暗号化処理を実行して、暗号化データを生成して出力する。
なお、近年のプロセッサは複数の命令を同時発行できるので、レジスタの依存関係等の制約を減らし、なるべく少ないサイクル数で実行できる命令系列で表現できるほど高速化が可能となる。
次に、本開示の実行する暗号処理アルゴリズムの一例である軽量ブロック暗号アルゴリズム「PRESENT」について説明する。
本開示の装置では、ビットスライスを適用した暗号処理として、例えば、ブロックサイズ64ビット,鍵長80ビット及び128ビットに対応した軽量ブロック暗号アルゴリズムである「PRESENT」を実行する。
軽量ブロック暗号アルゴリズム「PRESENT」では、図6に示すように、64ビットの平文ブロックと、例えば80ビットの暗号鍵を入力する。
まず、80ビット暗号鍵に基づいて64ビットのラウンド鍵を生成し、以下の処理を行う。
(ステップS72)さらに、この加算結果に対する非線形変換処理(SboxLayer)を実行する。
(ステップS73)さらに、この非線形変換結果に対して、線形変換処理(pLayer)を行う。
なお、入力鍵データに基づく更新処理(Update)を逐次、実行して、各ラウンドに適用するラウンド鍵(64ビット)の生成処理が行われる。
本開示の「PRESENT」に従った暗号処理を実行する情報処理装置(暗号処理装置)の構成と処理シーケンスについて、図7を参照して説明する。
情報処理装置100は、例えばPC等によって構成可能であり、特定のアルゴリズムに従った暗号処理を実行するための専用ハードウェアは必須構成として持たない装置として構成可能である。
暗号処理を実行するためのソフトウェア(プログラム)をメモリに格納して、プログラムに従った処理を実行して暗号処理を行う。
なお、前述したように暗号処理部110は、平文データを暗号化して暗号化データを生成する暗号化処理においても、暗号化データを復号して平文データを生成する復号処理においても、図に示すステップS111〜S112、ステップS121〜S123の処理に従った暗号処理を行う。
以下では、暗号化処理と復号処理の1つの代表例として暗号化処理を行う場合の実施例について説明する。
これらの暗号鍵と平文データは1対1に対応づけられている。すなわち、
暗号鍵aによって暗号化される平文データa、
暗号鍵bによって暗号化される平文データb、
暗号鍵cによって暗号化される平文データc、
:
暗号鍵Nによって暗号化される平文データN、
暗号処理部110は、これらN個の暗号鍵と平文データのセットを処理単位として入力して暗号処理を実行する。
同様に、各暗号鍵a,b,cの各々も、所定データ長の鍵データブロック(例えば80bit)によって構成される。
なお、ビットサイズは一例であり、様々なビットサイズのデータや鍵の設定が可能である。
暗号鍵aによって暗号化された暗号化データa、
暗号鍵bによって暗号化された暗号化データb、
暗号鍵cによって暗号化された暗号化データc、
:
暗号鍵Nによって暗号化された暗号化データN、
暗号処理部110は、これらN個の暗号化データを生成して出力する。
ステップS111:鍵変換処理
ステップS112:鍵スケジュール処理
ステップS121:データ変換処理、
ステップS122:暗号処理、
ステップS123:データ逆変換処理、
これらの処理である。
まず、各処理の概要と全体の処理の流れについて簡単に説明し、その後、各処理の詳細について説明する。
ステップS121のデータ変換処理は、平文データ82、すなわち例えば64bitの平文データからなる複数のデータブロックの同一ビット目、あるいはnビットおきのビット、ただしnは2,4,8,16,64,128などの2のべき数、これらのビットのデータの集合であるビットスライス表現ブロックからなるビットスライス表現平文データを生成する処理である。
ビットスライス処理によって生成したビットスライス表現データを構成するブロックを単位としたラウンド鍵との加算(XOR)処理、線形変換処理、非線形変換処理など、暗号アルゴリズムに従った処理をソフトウェア(プログラム)に従って実行する。
以下、各ステップの処理の詳細について、順次、説明する。
まず、図7に示す暗号処理部110の以下の処理、すなわち、
ステップS111:鍵変換処理
ステップS121:データ変換処理、
これらの処理について説明する。
ステップS111の鍵変換処理は、図7に入力データとして示す暗号鍵81、すなわち例えば80bitの鍵データからなる複数の暗号鍵ブロックの同一ビット目、あるいはnビットおきのビット、ただしnは2,4,8,16,64,128などの2のべき数、これらのビットのデータの集合であるビットスライス表現鍵ブロックを生成する処理である。
ステップS111では、この(a1)〜(a8)の8つの80bitの鍵データから、ビットスライス表現鍵ブロックを生成して、情報処理装置内のメモリを構成するレジスタ(XMMレジスタ(r0〜)や汎用レジスタ(g0〜))に格納する。
図8に示す(b1)〜(b8)が、ステップS111の鍵変換処理の処理結果であるレジスタ格納データ、すなわち、ビットスライス表現鍵ブロックの格納データである。ここでは8個の128ビットレジスタをビットスライス表現鍵ブロックの格納領域として利用している。
この8ビットデータ[0,0]は8つの80bitの鍵データの1ビット目のみからなる集合であり、1つのビットスライス表現ブロックである。
次に、入力データ(a1)〜(a8)の3ビット目のみを集めた8ビットデータ[2,0]を図8(b3)に示すように、XMMレジスタr2に格納する。
次に、入力データ(a1)〜(a8)の4ビット目のみを集めた8ビットデータ[3,0]を図8(b4)に示すように、XMMレジスタr3に格納する。
次に、入力データ(a1)〜(a8)の5ビット目のみを集めた8ビットデータ[0,1]を図8(b1)に示すように、XMMレジスタr0に格納する。
このように、4ビット単位で、XMMレジスタr0〜r3に8ビット単位でデータを格納し、入力データ(a1)〜(a8)の前半64ビットまでのデータ(8×64=512ビット)を4つのXMMレジスタr0〜r3に格納する。
入力データ(a1)〜(a8)の65ビット目のみを集めた8ビットデータ[0,16]を図8(b5)に示すように、XMMレジスタr4(または汎用レジスタg0)に格納する。
次に、入力データ(a1)〜(a8)の66ビット目のみを集めた8ビットデータ[1,16]を図8(b6)に示すように、XMMレジスタr5(または汎用レジスタg1)に格納する。
次に、入力データ(a1)〜(a8)の67ビット目のみを集めた8ビットデータ[1,16]を図8(b7)に示すように、XMMレジスタr6(または汎用レジスタg2)に格納する。
次に、入力データ(a1)〜(a8)の68ビット目のみを集めた8ビットデータ[1,16]を図8(b8)に示すように、XMMレジスタr7(または汎用レジスタg3)に格納する。
入力データである(a1)〜(a8)の8つの80bitの鍵データブロックの、
1,5,9,・・・,61ビット目をXMMレジスタr0,
2,6,10,・・・,62ビット目をXMMレジスタr1,
3,7,11,・・・,63ビット目をXMMレジスタr2,
4,8,12,・・・,64ビット目をXMMレジスタr3に格納する。
さらに、入力データである(a1)〜(a8)の8つの80bitの鍵データブロックの、
65,69,73,77ビット目をXMMレジスタr4(または汎用レジスタg0)、
66,70,74,78ビット目をXMMレジスタr5(または汎用レジスタg1)、
67,71,75,79ビット目をXMMレジスタr6(または汎用レジスタg2)、
68,72,76,80ビット目をXMMレジスタr7(または汎用レジスタg3)、
に格納する。
なお、レジスタ格納データの識別子として示す[i,j]中、iは、(a1)〜(a8)の8つの80bitの鍵データブロックの各入力データの先頭から4ビット単位で0,1,2,3と繰り返し設定されるパラメータであり、4ビット単位の内,どのビットを格納しているかを表す変数を示す。
jは、8つの鍵データ(a1)〜(a8)の4ビット単位データの何番目の4ビット単位データであるかを示すパラメータに相当する。
4ビット単位データ中の第1ビット目:i=0、
4ビット単位データ中の第2ビット目:i=1、
4ビット単位データ中の第3ビット目:i=2、
4ビット単位データ中の第4ビット目:i=3、
として設定されるので、
4ビット単位データ中の第3ビット目であることを示す。
第1番目の4ビット単位データ:j=0、
第2番目の4ビット単位データ:j=1、
第3番目の4ビット単位データ:j=2、
:
このように設定される。
[i,j]=[2,1]では、j=1であるので、第2番目の4ビット単位データであることが識別される。
j=1によって、第2番目の4ビット単位データであり、
i=2によって、第2番目の4ビット単位データ中の3番目のデータであることが識別される。
すなわち、先頭からは、第7ビット目のデータの集合によって構成されていることが識別される。
このデータ変換処理は、図8を参照して説明した鍵変換処理と同様のビットスライス表現データへの変換処理である。ただし、入力が8個の64ビットの平文データとなる点が異なる。
入力データである(a1)〜(a8)の8つの64bitのデータブロックの、
1,5,9,・・・,61ビット目をXMMレジスタr0,
2,6,10,・・・,62ビット目をXMMレジスタr1,
3,7,11,・・・,63ビット目をXMMレジスタr2,
4,8,12,・・・,64ビット目をXMMレジスタr3に格納する。
図9に示すレジスタ格納データの[i,j]はいずれも8つの平文データ(a1)〜(a8)の同一ビット目の集合であり、8ビットデータである。
iは、(a1)〜(a8)の8つの64bitの平文データブロックの各入力データの先頭から4ビット単位で0,1,2,3と繰り返し設定されるパラメータであり、4ビット単位の内,どのビットを格納しているかを表す変数を示す。
jは、8つの平文データ(a1)〜(a8)の4ビット単位データの何番目の4ビット単位データであるかを示すパラメータである。
次に、図7に示す暗号処理部110の実行するステップS112の処理、すなわち、鍵スケジュール処理の詳細について説明する。
ステップS112の鍵スケジュール処理(Key Scheduling)は、ステップS111の鍵変換処理(Key Conversion)において生成したビットスライス表現鍵ブロックを適用して、暗号処理に適用する複数のラウンド鍵を生成する処理である。
ステップS112では、これらのレジスタに格納されたビットスライス表現鍵データを利用してラウンド鍵の生成処理を行う。
[0,0]=79,
[1,0]=78,
[2,0]=77,
[3,0]=76,
[0,1]〜[3,1]=75〜72,
[0,2]〜[3,2]=71〜68,
・・
[0,14]〜[3,14]=7〜4
[0,15]=3
[1,15]=2
[2,15]=1
[3,15]=0
とする。
[0,0]=79は、8つの80ビット鍵の第1ビットを集めた8ビットデータである。以下、78,77,76,75・・・0は、8つの80ビット鍵の第2,3,4,5・・・最終(80ビット目)を集めた8ビットデータに対応する。
図10に示す通り、0〜79まで80個のビットスライスブロックがレジスタに分散して格納されている。
個々のブロックは、8つの暗号鍵の同一ビット目の集合からなる8ビットデータからなるブロック(ビットスライス表現ブロック)である。
以下に説明するように、このブロックを単位としたブロック単位の処理を実行することで、8つの鍵を個別に適用した暗号処理と同様の処理を1回の暗号処理で実行することができる。
例えば、図6に示す通常のPRESENTアルゴリズムにおいて、64ビット平文に適用する各ラウンドのラウンド鍵は64ビットとなるが、図7に示すビットスライスデータを適用した暗号処理を実行するステップS122の暗号処理は、ビットスライス表現ブロック単位の処理として実行する。
すなわち、平文は、64ブロックを単位として暗号処理を行うことになり、この暗号処理に適用するラウンド鍵も64ブロックのラウンド鍵となる。
本開示のビットスライス暗号処理に適用するラウンド鍵は、64ブロックのラウンド鍵、すなわち64×8ビット=512ビットのラウンド鍵となる。
生成したラウンド鍵は、図11に示すように、鍵ポインタ(pt)によって指定されるメモリ領域(m0〜m3)に書き出す。
まず、ステップS201において、入力データと初期データの設定を行う。
具体的には、入力データとしてレジスタに格納したビットスライス表現鍵データを入力する。さらに、生成したラウンド鍵を書きだすメモリ領域を示すポインタ(pt)、生成するラウンド鍵のラウンド番号Rnの設定を行う。初期設定としてはRn=0とし、以降、Rn=1,2,3・・・と順次、増加してRn=31までの32本のラウンド鍵を生成する。
この詳細処理については、後段で説明する。
なお、図11に示すように、レジスタr0,r1,r2,r3,r4,r5,r6,r7にビットスライス処理によって生成したビットスライス表現鍵ブロックが格納されているものとする。
すなわち、図14に示すように、レジスタr1,r2,r3,r4をレジスタr9,r10,r11,r8にコピーする。
なお、本開示の装置において実行するシャッフルは、1つのレジスタに格納されたデータをブロック単位で入れ替えて同じレジスタに格納する処理である。すなわち、レジスタ内のブロック単位のデータをブロック単位で入れ替える処理である。
[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15]
ステップS222のシフト処理は以下のシフト処理として実行する。
すなわち、8ビットデータ単位の左方向シフトを実行する。
この結果が図15に示すデータとなる。
図16に示すように、レジスタr9,r10,r11,r8の格納データであるブロック18,17,16,15に対して非線形変換(Sbox論理命令列)処理を実行した結果を、レジスタr8,r9,r10,r11に格納する。非線形変換処理結果は、図16に示す以下のデータである。
レジスタr8のデータS0、
レジスタr9のデータS1、
レジスタr10のデータS2、
レジスタr11のデータS3、
なお、本実施例で適用する非線形変換(Sbox論理命令列)処理は、例えば図17に示す論理命令列をレジスタ間の格納データ間で実行する演算処理として実行される。
図17の論理命令列として示すレジスタ:x3,x2,x1,x0,x4は、それぞれ図16に示すレジスタr9,r10,r11,r8,r12に対応する。
なお、図16に示すレジスタr12は、図17に示す論理命令列中のレジスタx4に対応し、演算処理の中間データ等を格納するテンポラリ領域として利用する。
図18に、レジスタr8,r9,r10,r11の格納データを左120ビットシフトした結果を示す。
レジスタr4と予め既定したデータからなるマスク0(MASK0)とのAND処理、
レジスタr5,r6,r7と予め既定したデータからなるマスク1(MASK1)とのAND処理を行う。
なお、マスクの値はレジスタに保持しておく必要はない。
マスク1(MASK1)は、図19に示すように、8ビットデータ単位の2〜5番目のブロックのビットのみを1、その他を0としたマスクである。
このマスクデータとのAND処理によって、図19に示すように、レジスタr4〜r7の先頭8ビットデータは0に書き換えられる。
図20にこれらの排他的論理和演算(XOR)処理と処理結果の格納データを示す。
これらの排他的論理和演算(XOR)処理の結果、レジスタr4,r5,r6,r7の先頭8ビットには、レジスタr11,r8,r9,r10の先頭8ビットデータであるステップS223の非線形変換処理(Sbox)の演算結果が格納される。
シャッフル処理の処理前と処理後のレジスタr0,r1,r2,r3の格納データを図21に示す。
[0,0,[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15]
とする。
([0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15])→([0,12],[0,13],[0,14],[0,15],[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11])
([0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15])→([0,11],[0,12],[0,13],[0,14],[0,15],[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10])
レジスタr8と、マスク2(MASK2)のAND処理、
レジスタr9,r10,r11と、マスク3(MASK3)のAND処理、
これらのAND処理を実行して、その結果をレジスタr8,r9,r10,r11に格納する。
これらの処理結果を図22に示す。
マスク3(MASK3)は、図22に示すように、先頭40ビット=0、その後88ビット=1のマスクデータである。
この排他的論理和演算(XOR)処理を図23に示す。
ラウンドカウンタは、
ラウンド数:0〜31に応じた2進数表現としての00000〜11111の各カウント値に設定する。
このカウント値01101に対して、レジスタr5,r6,r7,r4の右8ビット,r1の左8ビットとのXOR演算を行う。
なお、ラウンドカウンタのカウント値00000〜11111とのXOR演算の順番は、各レジスタの格納値の元のデータの上位ビットからの順番とする。図24に示す例では、値の大きい順番であり、38,37,36,35,34の順番とする。
すなわちレジスタ順としては、r5,r6,r7,r4,r1となる。
上位から、
カウント値01101の第1ビット目の0に対して、レジスタr5の右8ビットデータ(図24に示すレジスタr5の[38])
カウント値01101の第2ビット目の1に対して、レジスタr6の右8ビットデータ(図24に示すレジスタr6の[37])
カウント値01101の第3ビット目の1に対して、レジスタr7の右8ビットデータ(図24に示すレジスタr7の[36])
カウント値01101の第4ビット目の0に対して、レジスタr4の右8ビットデータ(図24に示すレジスタr6の[35])
カウント値01101の第5ビット目の1に対して、レジスタr1の左8ビットデータ(図24に示すレジスタr1の[34])
これらの値同士のXOR演算を実行して、それぞれのデータを更新する。
マスク4(MASK4)は先行120ビット=0、末尾8ビット=1に設定されたマスクデータである。
マスク5(MASK5)は、先行8ビット=1、末尾120ビット=0に設定されたマスクデータである。
レジスタr5,r6,r7,r4とのXORにMASK4,レジスタr1とのXORにはMASK5を用いる。
レジスタr6,r7とマスク4(MASK4)とのXOR演算、
レジスタr1と、マスク5(MASK5)とのXOR演算、
これらのみを実行する構成としてもよい。
レジスタr5,r6,r7,r4,r1,r2,r3,r0の格納データを次のラウンド鍵生成用のブロックとする。
このレジスタr5,r6,r7,r4,r1,r2,r3,r0に格納されたブロックから64ブロックを次のラウンドのラウンド鍵として設定する。
以下、この更新されたレジスタ格納ブロックを適用して、図13のフローに従った処理を繰り返して32個のラウンド鍵を生成する。
この初期設定ブロックから64ブロックが初期のラウンド鍵として選択される。
その後、この図26(A)に示すレジスタ初期格納データである80ブロックに対して、図13に示すフローに従った処理を実行する。すなわち、図14〜図25を参照して説明した処理を行いレジスタの更新を行う。
このレジスタ更新処理をまとめて示したのが図26(B)である。
レジスタ更新処理は、
(a)ブロック単位のシフト処理やシャッフル処理等からなるローテーション処理、
(b)ブロック単位の非線形変換処理(Sbox)、
(c)ブロックとラウンドカウンタ(00000〜111111)との排他的論理和演算、
これらの各処理を含む処理として実行される。
これらの結果として、図26(B)の再下段に示すレジスタ更新データ、すなわち次のラウンド鍵を生成するためのデータが設定される。このレジスタのブロックから左から64ブロックを選択し、これをラウンド鍵として設定する。
その後は、この図26(B)の再下段に示すレジスタ更新データに対して、図26(B)の鍵更新を繰り返してレジスタ更新を行い、順次ラウンド鍵を生成する。
次に、図7に示す暗号処理部110において実行するステップS112の鍵スケジュール処理のもう1つの実施例について説明する。
前章の[5.鍵スケジュール処理について(鍵スケジュール処理例1)]において説明した鍵スケジュール部では各ラウンド毎に、毎回、Sbox、すなわち非線形変換処理を行うことが必要となる。すなわち、図16、図17を参照して説明した4つのブロックに対する非線形変換処理(Sbox)である。
この非線形変換処理は、図17に示すように演算ステップ数が多く、処理時間を増加させてしまうという問題がある。
本処理例の鍵スケジュール部の実行する処理を説明するフローを図27に示す。
図27のフローのステップS254、S259の処理は、図12のフローのステップS203の処理と同様の処理である。
図27のフローのステップS256、S261の処理は、図12のフローのステップS205の処理と同様の処理である。
図27のフローのステップS262の処理は、図12のフローのステップS206の処理と同様の処理である。
これらの処理についての説明は省略し、以下、図12を参照して説明した鍵スケジュール処理と異なる処理について説明する。
ステップS252とステップS257において実行する非線形変換処理(Sbox)の事前計算処理の詳細シーケンスを説明するフローを図28、図29に示す。
初期状態は、図30に示すように、79〜0の各ビットスライス表現鍵ブロックがレジスタに格納されているものとする。これば、先に図10、図11を参照して説明した設定と同様である。
例えば、[79]のビットスライス表現鍵ブロックは、8つの80ビット鍵の第1ビットを集めた8ビットデータである。以下、78,77,76,75・・・0は、8つの80ビット鍵の第2,3,4,5・・・最終(80ビット目)を集めた8ビットデータに対応する。
図31に示すように、レジスタr0,r1,r2,r3をレジスタr12,r13,r14,r15にコピーし、レジスタr12,r13,r14,r15に対してシャッフル命令を行う。
レジスタr12,r13,r14,r15のシャッフル前のデータの並び(=レジスタr0,r1,r2,r3と同じ)を左から、[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15]としたとき、各レジスタのシャッフルは以下の設定とする。
([0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15])→([0,1],[0,2],[0,3],[0,4],[0,6],[0,7],[0,8],[0,9],[0,11],[0,12],[0,13],[0,14],[0,15],[0,0],[0,0],[0,0])
([0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15])→([0,1],[0,2],[0,3],[0,4],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,15],[0,0],[0,0],[0,0])
[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15])→([0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,10],[0,11],[0,12],[0,13],[0,15],[0,0],[0,0],[0,0]
図32に示すように、レジスタr4,r5,r6,r7のデータをレジスタr8,r9,10,r11に格納し、r8を右12バイト論理シフト,r9,r10,r11を右13バイト論理シフトする。
図33に示すように、
レジスタr12とマスク6(MASK6)とのAND処理、
レジスタr13,r14,r15とマスク7(MASK7)とのAND処理を実行する。
マスク6(MASK6)は先頭96ビット=0、後続32ビット=1のマスクである。
マスク7(MASK7)は先頭104ビット=0、後続24ビット=1のマスクである。
図34に示すように、レジスタr8,r9,r10,r11とレジスタr12,r13,r14,r15で排他的論理和演算(XOR)を行い、レジスタr12,r13,r14,r15に結果を格納する。
図35に示すように、レジスタr13,r14,r15に対して,シャッフル命令を行う。
レジスタr13,r14,r15のシャッフル前のデータの並び(=レジスタr0,r1,r2,r3と同じ)を左から、[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15]としたとき、各レジスタのシャッフルは以下の設定とする。
([0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15])→([0,12],[0,13],[0,14],[0,15],[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11])
([0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15])→([0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15],[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7])
([0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15])→([0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15],[0,0],[0,1],[0,2],[0,3])
図36に示すように、レジスタr13,15をr9,r11にコピーする。
図37に示すように、レジスタr13,r14と,r15,r12の左64ビットに対してバイト単位のアンパック処理を実行する。
なお、本開示の処理におけるアンパック処理とは、例えば2つのレジスタに格納されたデータを、上位または下位からブロックを最小単位として選択して、上記2つのレジスタ中の一方のレジスタに交互に格納する処理である。
具体的には、例えば、2つのレジスタから各レジスタに格納された全ブロックの1/2のブロックを各々選択して、1つのレジスタに再格納する処理である。
同様に、レジスタ15とレジスタr12の左8ブロック(64ビット)をブロック(8ビット)単位で、レジスタr15に左から交互に格納するアンパック処理を実行する。
図38に示すように、レジスタr9,r14と,r11,r12の右64ビットに対してバイト単位のアンパック処理を実行する。
図38に示すように、レジスタr9とレジスタr14の右8ブロック(64ビット)をブロック(8ビット)単位で、レジスタr9に右から交互に格納するアンパック処理を実行する。
同様に、レジスタ11とレジスタr12の右8ブロック(64ビット)をブロック(8ビット)単位で、レジスタr11に右から交互に格納するアンパック処理を実行する。
図39に示すように、レジスタr13,r9をr12,r14にコピーする。
図40に示すように、レジスタr12,r15と,レジスタr14,r11の左64ビットに対して8ビットブロック2個単位のワード単位でアンパックする。
図40に示すように、レジスタr12とレジスタr15の左8ブロック(64ビット)を2ブロック(16ビット)のワード単位で、レジスタr12に左から交互に格納するアンパック処理を実行する。
同様に、レジスタr14とレジスタr11の左8ブロック(64ビット)を2ブロック(16ビット)のワード単位で、レジスタr14に左から交互に格納するアンパック処理を実行する。
図41に示すように、レジスタr13,r15と,レジスタr9,r11の左64ビットに対して8ビットブロック2個単位のワード単位でアンパックする。
図41に示すように、レジスタr13とレジスタr15の右8ブロック(64ビット)を2ブロック(16ビット)のワード単位で、レジスタr13に左から交互に格納するアンパック処理を実行する。
同様に、レジスタr9とレジスタr11の右8ブロック(64ビット)を2ブロック(16ビット)のワード単位で、レジスタr9に左から交互に格納するアンパック処理を実行する。
図42に示すように、レジスタr13,r14,r9に対して,シャッフル命令を実行する。
レジスタr13,r14,r9のシャッフル前のデータの並び(=レジスタr0,r1,r2,r3と同じ)を左から、[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15]としたとき、各レジスタのシャッフルは以下の設定とする。
([0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15])→([0,1],[0,2],[0,3],[0,0],[0,5],[0,6],[0,7],[0,4],[0,9],[0,10],[0,11],[0,8],[0,13],[0,14],[0,15],[0,12])
([0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15])→([0,2],[0,3],[0,0],[0,1],[0,6],[0,7],[0,4],[0,5],[0,10],[0,11],[0,8],[0,9],[0,14],[0,15],[0,12],[0,13])
([0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15])→([0,3],[0,0],[0,1],[0,2],[0,7],[0,4],[0,5],[0,6],[0,8],[0,11],[0,9],[0,10],[0,15],[0,12],[0,13],[0,14])
図43に示すように、レジスタr12,r13,r14,r9と、マスク8(MASK8),マスク9(MASK9),マスク10(MASK10),マスク11(MASK11)のANDを求め、それぞれのレジスタに格納する。
なお、マスク8(Mask8)は、先行64ビット=0、後続64ビット=1のマスク、
マスク9(MASK9)は、先頭から32ビット単位で0,1,0,1の設定されたマスクである。
マスク10(MASK10)は先頭から16ビット連続0と16ビット連続1が交互に出現するマスク、
マスク11(MASK11)は先頭から8ビット連続0と8ビット連続1が交互に出現するマスクである。
図44に示すように、レジスタr12,r13,r14,r9のデータに対する非線形変換処理(Sbox)を実行する。
非線形変換処理は、先に図17を参照して説明した処理である。
この非線形変換処理結果を、レジスタr9,r14,r13,r12に格納する。なお、この処理に際して、レジスタr8をテンポラリ領域として利用する。
なお、このSbox事前計算後,鍵更新処理を実行する前にレジスタr9,r14,r13,r12をr12,r13,r14,r15に格納しておく。
なお、このレジスタの入れ替え処理は、プログラム上では,レジスタを読み替えるだけの処理で実行できる。
本実施例では、これらの2回の非線形変換処理(Sbox)のみで、全ラウンドのラウンド鍵生成に必要となる非線型変換処理(Sbox)結果を生成することが可能となる。
次に、図27に示すフローのステップS255と、ステップS260のラウンド鍵生成更新処理の詳細について、図46以下を参照して説明する。
図46に示すフローに従って、図27のフローのステップS255とステップS260において実行するラウンド鍵生成更新処理の詳細シーケンスについて説明する。
図47に示すように、レジスタr0,r1,r2,r3,r4,r5,r6,r7にビットスライス表現の鍵が格納されている。
また、レジスタr12,r13,r14,r15に、前述した(6−1.非線形変換(Sbox)の事前計算処理について)において説明した処理によって生成した事前計算した非線形変換(Sbox)処理の結果が格納されているものとする。
図48に示すように、非線形変換(Sbox)処理の結果が格納されているレジスタr12,r13,r14,r15をレジスタr8,r9,r10,r11にコピーし、マスク5(MASK5)とAND処理を実行する。
事前計算した非線型変換処理(Sbox)の値は、レジスタr12,r13,r14,r15の左8ビットを使用する。
図49に示すように、レジスタr12,r13,r14,r15を左8ビット論理シフトする。
図50に示すように、レジスタr5,r6,r7を右8ビット論理シフトし,r4とMASK0,r5,r6,r7とMASK1でANDを取る。
この処理は、図13のフローのステップS225の処理と同様の処理である。
レジスタr4と予め既定したデータからなるマスク0(MASK0)とのAND処理、
レジスタr5,r6,r7と予め既定したデータからなるマスク1(MASK1)とのAND処理を行う。
なお、マスクの値はレジスタに保持しておく必要はない。
マスク1(MASK1)は、図50に示すように、8ビットデータ単位の2〜5番目のブロックのビットのみを1、その他を0としたマスクである。
このマスクデータとのAND処理によって、図50に示すように、レジスタr4〜r7の先頭8ビットデータは0に書き換えられる。
図51に示すように、レジスタr4,r5,r6,r7とレジスタr11,r8,r9,r10の排他的論理和演算(XOR)を実行して、出力をレジスタr4,r5,r6,r7に格納する。
この処理は、図13のフローのステップS226の処理と同様の処理である。
図52に示すように、レジスタr0,r1,r2,r3に対してシャッフル命令を実行し,シャッフル結果をレジスタr0,r1,r2,r3に格納する。
シャッフル処理の処理前と処理後のレジスタr0,r1,r2,r3の格納データを図52に示す。
この処理は、図13のフローのステップS227の処理と同様の処理である。
[0,0,[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15]
とする。
([0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15])→([0,12],[0,13],[0,14],[0,15],[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11])
([0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15])→([0,11],[0,12],[0,13],[0,14],[0,15],[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10])
図53に示すように、レジスタr0,r1,r2,r3のデータをレジスタr8,r9,r10,r11にコピーし、さらに、
レジスタr8と、マスク2(MASK2)のAND処理、
レジスタr9,r10,r11と、マスク3(MASK3)のAND処理、
これらのAND処理を実行して、その結果をレジスタr8,r9,r10,r11に格納する。
この処理は、図13のフローのステップS228の処理と同様の処理である。
マスク3(MASK3)は、図53に示すように、先頭40ビット=0、その後88ビット=1のマスクデータである。
図54に示すように、レジスタr4,r5,r6,r7とレジスタr8,r9,r10,r11の排他的論理和演算(XOR)を実行して,結果をr4,r5,r6,r7に格納する。
この処理は、図13のフローのステップS229の処理と同様の処理である。
図55に示すように、レジスタr5,r6,r7,r4の右8ビット,r1の左8ビットに対して,予め設定したカウント値であるラウンドカウンタ(roundcounter)の値との排他的論理和演算(XOR)を行う。
この処理は、図13のフローのステップS230の処理と同様の処理である。
ラウンドカウンタは、
ラウンド数:0〜31に応じた2進数表現としての00000〜11111の各カウント値に設定する。
このカウント値01101に対して、レジスタr5,r6,r7,r4の右8ビット,r1の左8ビットとのXOR演算を行う。
なお、ラウンドカウンタのカウント値00000〜11111とのXOR演算の順番は、各レジスタの格納値の元のデータの上位ビットからの順番とする。図24に示す例では、値の大きい順番であり、38,37,36,35,34の順番とする。
すなわちレジスタ順としては、r5,r6,r7,r4,r1となる。
上位から、
カウント値01101の第1ビット目の0に対して、レジスタr5の右8ビットデータ(図55に示すレジスタr5の[38])
カウント値01101の第2ビット目の1に対して、レジスタr6の右8ビットデータ(図55に示すレジスタr6の[37])
カウント値01101の第3ビット目の1に対して、レジスタr7の右8ビットデータ(図55に示すレジスタr7の[36])
カウント値01101の第4ビット目の0に対して、レジスタr4の右8ビットデータ(図55に示すレジスタr6の[35])
カウント値01101の第5ビット目の1に対して、レジスタr1の左8ビットデータ(図55に示すレジスタr1の[34])
これらの値同士のXOR演算を実行して、それぞれのデータを更新する。
マスク4(MASK4)は先行120ビット=0、末尾8ビット=1に設定されたマスクデータである。
マスク5(MASK5)は、先行8ビット=1、末尾120ビット=0に設定されたマスクデータである。
レジスタr5,r6,r7,r4とのXORにMASK4,レジスタr1とのXORにはMASK5を用いる。
レジスタr6,r7とマスク4(MASK4)とのXOR演算、
レジスタr1と、マスク5(MASK5)とのXOR演算、
これらのみを実行する構成としてもよい。
レジスタr5,r6,r7,r4,r1,r2,r3,r0の格納データを次のラウンド鍵生成用のブロックとする。
このレジスタr5,r6,r7,r4,r1,r2,r3,r0に格納されたブロックから64ブロックを次のラウンドのラウンド鍵として設定する。
以下、この更新されたレジスタ格納ブロックを適用して、図46のフローに従った処理を繰り返して32個のラウンド鍵を生成する。
この(鍵スケジュール処理例2)の処理数の削減効果について考察する。
(A)鍵スケジュール処理例1(図12、図13のフローに従った処理)
(B)鍵スケジュール処理例2(図27〜図29、図46のローに従った処理)
これらの2つの鍵スケジュール処理の処理ステップ数を比較すると、以下の通りとなる。
Sbox事前計算なしの鍵更新処理に要する命令数は、以下の通りである。
鍵更新処理:1847(=57×31+80)
(B)鍵スケジュール処理例2
Sbox事前計算ありの鍵更新処理に要する命令数は、以下の通りである。
Sbox事前計算+鍵更新処理:1411
(Sbox事前計算:132(=66×2),鍵更新処理:1289(39×31+80))
このように、(B)鍵スケジュール処理例2は、(A)鍵スケジュール処理例1に比較して処理ステップの数を削減でき、より高速な処理が実現される。
次に、図7に示す暗号処理部110の実行するステップS122の処理、すなわち、暗号処理の詳細について説明する。
ステップS122の暗号処理(Data Processing)は、ステップS111のデータ変換処理(Data Conversion)において平文データに基づいて生成したビットスライス表現データに対して、ラウンド鍵を適用した暗号処理を実行するステップである。
図57以下を参照して、この暗号処理の詳細について説明する。
具体的には、レジスタに格納した暗号化処理対象となる平文データのビットスライス表現データを入力する。
これは、図7のステップS121のデータ変換処理において生成したデータであり、図9を参照して説明した平文データ82の変換処理によって生成したビットスライス表現データある。すなわち、図9に示すビットスライス表現ブロック[0,0]〜[3,15]の64ブロックを入力する。
図9に示すビットスライス表現ブロック[0,0]〜[3,15]は、本実施例では、暗号処理対象となる8つの平文の同一ビット目を格納したブロックであり、各々8ビットデータである。
ステップS402:ラウンド鍵加算、すなわちラウンド鍵と入力平文データ(ビットスライス表現データ)との排他的論理和演算処理(addRoundKey)、
ステップS403:ラウンド鍵加算結果に対する非線形変換処理(SboxLayer)、
ステップS404:非線形変換結果に対する線型変換処理(pLayer)、
これらの処理を実行する。
なお、これらの処理の詳細については後述する。
Rn=31未満である場合は、次ラウンド処理として、ステップS402〜S404の処理を実行する。
この出力暗号文に対して、図7に示すステップS23のデータ逆変換処理が実行され、最終的な暗号文90として出力される。
図58は、2ラウンド分の、
(a)ラウンド鍵加算(addRoundKey)、
(b)非線形変換(SboxLayer)、
(c)線形変換(pLayer)
これらの3処理を示している。
この3種類の処理からなるラウンド演算を複数ラウンド繰り返し実行して、暗号文を出力する。
(a)ラウンド鍵加算(addRoundKey)、
(b)非線形変換(SboxLayer)、
(c)線形変換(pLayer)
これらの3処理を実行する。
まず、ステップS402の鍵加算処理(addRoundKey)についして、図59を参照して説明する。
ラウンド鍵は、図7に示す暗号鍵81を入力として、暗号処理部110におけるステップS111の鍵変換処理と、ステップS112の鍵スケジュール処理によって生成されたラウンド鍵である。
このラウンド鍵生成処理は、前述の[4.鍵変換処理とデータ変換処理について]、[5.鍵スケジュール処理について(鍵スケジュール処理例1)]、[6.鍵スケジュール処理について(鍵スケジュール処理例2)]、これらの項目において説明した処理である。
ラウンド鍵は、メモリに格納されており、鍵ボイント(pt)の示す領域からラウンド鍵を取得する。
なお、本実施例では、図9に示すように(a1)〜(a8)の8つの64ビット平文に基づいて生成されたビットスライス表現データに対する暗号処理を行うものとして説明する。
8つの平文(a1)〜(a8)の、
第1ビット目の集合からなるビットスライス表現ブロックが[0,0]
第2ビット目の集合からなるビットスライス表現ブロックが[1,0]
第3ビット目の集合からなるビットスライス表現ブロックが[2,0]
第4ビット目の集合からなるビットスライス表現ブロックが[3,0]
第5ビット目の集合からなるビットスライス表現ブロックが[0,1]
・・
第63ビット目の集合からなるビットスライス表現ブロックが[2,15]
第64ビット目の集合からなるビットスライス表現ブロックが[3,15]
であり、これらの8ビットからなるビットスライス表現ブロック[0,0]〜[3,15]が4つのレジスタr0〜r3に分散して格納されている。
排他的論理和演算(XOR)処理を実行する平文とラウンド鍵は、いずれも、8ビットのビットスライス表現ブロック64ブロック分のデータである。
各レジスタ(=128ビットレジスタ(16ブロック分))単位で、ポインタ(pt)によって指定されるメモリ位置に格納されたラウンド鍵(128ビット(16ブロック))との排他的論理和演算(XOR)処理を実行する。
1つのレジスタ(128ビット)の排他的論理和演算(XOR)毎に、鍵ポインタ(pt)を16ブロック(128ビット)ずつ進めながら,4本のレジスタr0〜r3に格納された暗号化対象となる平文データのビットスライス表現データとの排他的論理和演算(XOR)を実行して、演算結果をレジスタに格納する。
ステップS403は、ステップS402におけるラウンド鍵加算結果に対する非線形変換処理(SboxLayer)である。
具体的には、図60に示すように、レジスタ間の演算処理として実行する。
演算処理によって実現される。
図17に示すレジスタ:x3,x2,x1,x0,x4は、
レジスタx3〜x0がラウンド鍵加算結果を格納した128ビットレジスタ4本、
レジスタx4が、テンポラリ領域として利用するレジスタに相当する。
この非線形変換処理(SboxLayer)の結果は、4本の128ビットレジスタ、例えばレジスタr0〜r4に格納する。
ステップS404の処理は、ステップS403の非線形変換結果に対する線型変換処理(pLayer)である。
図61に示すフローチャートの各ステップの処理について、順次、説明する。
なお、型変換処理(pLayer)処理対象となるデータは、ステップS403の非線形変換結果であり、このステップS403の非線形変換結果が図62に示すように、4本の128ビットレジスタr0〜r3に格納されている。
図63に示すように、レジスタr0,r1,r2,r3に対して,シャッフル命令を実行し,結果をr0,r1,r2,r3に格納する。
ただし、i={0,1,2,3}
としたとき、各レジスタのシャッフルは以下の設定とする。
i={0,1,2,3}.
([i,0],[i,1],[i,2],[i,3],[i,4],[i,5],[i,6],[i,7],[i,8],[i,9],[i,10],[i,11],[i,12],[i,13],[i,14],[i,15])→([i,0],[i,4],[i,8],[i,12],[i,1],[i,5],[i,9],[i,13],[i,2],[i,6],[i,10],[i,14],[i,3],[i,7],[i,11],[i,15])
図64に示すように、レジスタr0,r2をレジスタr4,r5にコピーする。
図65に示すように、レジスタr0,r1とレジスタr2,r3の左64ビットに対して,ダブルワード単位でアンパック命令を実行する。
図65に示すように、レジスタr0とレジスタr2の左8ブロック(64ビット)をダブルワード(32ビット(4ブロック))単位で、レジスタr0に左から交互に格納するアンパック処理を実行する。
同様に、レジスタr2とレジスタr3の左8ブロック(64ビット)をダブルワード(32ビット(4ブロック))単位で、レジスタr2に左から交互に格納するアンパック処理を実行する。
図66に示すように、レジスタr4,r1とレジスタr5,r3の右64ビットに対して,ダブルワード単位でアンパック命令を実行する。
図66に示すように、レジスタr4とレジスタr1の右8ブロック(64ビット)をダブルワード(32ビット(4ブロック))単位で、レジスタr4に左から交互に格納するアンパック処理を実行する。
同様に、レジスタ5とレジスタr3の右8ブロック(64ビット)をダブルワード(32ビット(4ブロック))単位で、レジスタr5に左から交互に格納するアンパック処理を実行する。
図67に示すように、レジスタr0,r4をレジスタr1,r3にコピーする。
図68に示すように、レジスタr0,r2とレジスタr4,r5の左64ビットに対して,クワッドワード単位でアンパック命令を実行する。
図68に示すように、レジスタr0とレジスタr2の左8ブロック(64ビット)をクワッドワード(64ビット(8ブロック))単位で、レジスタr0に左から交互に格納するアンパック処理を実行する。
同様に、レジスタr4とレジスタr5の左8ブロック(64ビット)をクワッドワード(64ビット(8ブロック))単位で、レジスタr4に左から交互に格納するアンパック処理を実行する。
図69に示すように、レジスタr1,r2とレジスタr3,r5の右64ビットに対して,クワッドワード単位でアンパック命令を実行する。
図69に示すように、レジスタr1とレジスタr2の右8ブロック(64ビット)をクワッドワード(64ビット(8ブロック))単位で、レジスタr1に左から交互に格納するアンパック処理を実行する。
同様に、レジスタr3とレジスタr5の右8ブロック(64ビット)をクワッドワード(64ビット(8ブロック))単位で、レジスタr3に左から交互に格納するアンパック処理を実行する。
図70に図57のフローのステップS404の線形変換処理の入力と出力との対応関係を示す。
このラウンド演算処理における各処理の命令数は、以下の通りとなる。
(a)ラウンド鍵加算(addRoundKey):4
(b)非線形変換(SboxLayer):20
(c)線形変換(pLayer):16
この処理により、出力データ90として、平文データ82に対応する暗号化データ91が生成される。
これに対して、先に説明した[6.鍵スケジュール処理について(鍵スケジュール処理例2)]において説明した構成によれば、80ビット鍵を入力して処理を行う鍵スケジュール部は、2回の非線型変換処理によって32ラウンド分のラウンド鍵を生成することが可能であり、少ない命令数でのラウンド鍵生成が可能であり、高速処理が実現される。
最後に、上述した実施例に従った暗号処理を実行する情報処理装置や暗号処理装置の装置構成例について説明する。情報処理装置には、例えば、図1〜図5を参照して説明したサーバなども含まれる。
上述した実施例に従った暗号処理は、暗号処理アルゴリズムを規定したソフトウェア(プログラム)を実行するCPU等から構成されるデータ処理部、プログラムや、データを格納するメモリを有する例えばPCやサーバ等の機器において実行可能である。
CPU(Central Processing Unit)701は、ROM(Read Only Memory)702、または記憶部708に記憶されているプログラムに従って各種の処理を実行するデータ処理部として機能する。例えば、上述したシーケンスに従った処理を実行する。
これらのCPU701、ROM702、およびRAM703は、バス704により相互に接続されている。
例えば図1〜図5を参照して説明したサーバである場合、通信部709は、多数のユーザ端末やセンサ等からの暗号化データの受信処理、あるいは多数のユーザ端末やセンサ等に対する暗号化データの送信処理を実行する。
以上、特定の実施例を参照しながら、本開示の実施例について詳解してきた。しかしながら、本開示の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本開示の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
具体的には、多数のユーザ端末やセンサが個別の暗号鍵で軽量暗号アルゴリズムにより暗号化したデータを送信し、サーバがこれらの暗号化データを受信し、復号処理シーケンスを規定したプログラムに従ってデータ処理を実行する。復号対象となる複数の暗号化データに対するビットスライス処理によりビットスライス表現データを生成し、暗号化データ各々の暗号鍵に基づくビットトスライス表現鍵を生成し、ビットスライス表現鍵に基づいてラウンド鍵を生成し、ビットスライス表現データのブロック単位の演算、移動処理、ラウンド鍵を適用した演算等を含む復号処理を実行し、復号処理結果に対するデータの逆変換により、多数の暗号化データに対応する多数の平文データを生成することが可能となる。
さらに、軽量暗号にとってこれまで困難であったクラウドでの活用が可能になることで、センサでの軽量暗号実装が促進され、低コスト・低消費電力のセンサネットワークが実現できる。
(1) 複数のデータ送信装置の送信する暗号化データを受信する通信部と、
前記通信部を介して受信した複数の暗号化データの復号処理を実行するデータ処理部を有し、
前記データ処理部は、復号処理シーケンスを規定したプログラムに従ってデータ処理を実行する構成であり、
前記データ処理部は、前記プログラムに従って、
復号処理対象となる複数の暗号化データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記複数の暗号化データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、復号処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した復号処理と、
前記復号処理の結果に対する前記ビットスライス処理の逆変換により、前記複数の暗号化データに対応する複数の平文データを生成するデータ逆変換処理を、
実行する情報処理装置。
(3)前記データ処理部は、前記復号処理において、前記ビットスライス表現データを構成する各暗号化データの同一ビット目またはnビットおきのビット、ただしnは2のべき数、
によって構成されるビットスライス表現データブロック単位の演算処理と移動処理を適用した復号処理を実行する前記(1)または(2)に記載の情報処理装置。
前記複数の送信端末の送信する複数の暗号化データを受信するサーバを有し、
前記サーバは、
復号処理シーケンスを規定したプログラムに従ってデータ処理を実行するデータ処理部を有し、
前記データ処理部は、前記プログラムに従って、
復号処理対象となる複数の暗号化データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記複数の暗号化データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、復号処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した復号処理と、
前記復号処理の結果に対する前記ビットスライス処理の逆変換により、前記複数の暗号化データに対応する複数の平文データを生成するデータ逆変換処理を、
実行する情報処理システム。
(7)前記サーバのデータ処理部は、前記復号処理において、前記ビットスライス表現データを構成する各暗号化データの同一ビット目またはnビットおきのビット、ただしnは2のべき数、によって構成されるビットスライス表現データブロック単位の演算処理と移動処理を適用した復号処理を実行する前記(5)または(6)に記載の情報処理システム。
(8)前記データ処理部は、前記鍵スケジュール処理において、前記ビットスライス表現鍵を構成する各暗号鍵の同一ビット目またはnビットおきのビット、ただしnは2のべき数、によって構成されるビットスライス表現鍵ブロック単位の演算処理と移動処理を適用して前記ラウンド鍵を生成する前記(5)〜(7)いずれかに記載の情報処理システム。
前記通信部を介して送信する複数の暗号化データの生成処理を実行するデータ処理部を有し、
前記データ処理部は、暗号処理シーケンスを規定したプログラムに従ってデータ処理を実行する構成であり、
前記データ処理部は、前記プログラムに従って、
暗号化処理対象となる複数の平文データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記複数の平文データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、暗号化処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した暗号処理と、
前記暗号処理の結果に対する前記ビットスライス処理の逆変換により、前記複数の平文データに対応する複数の暗号化データを生成するデータ逆変換処理を、
実行する情報処理装置。
前記鍵変換処理において、前記暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する前記(9)に記載の情報処理装置。
(11)前記データ処理部は、前記暗号処理において、前記ビットスライス表現データを構成する各平文データの同一ビット目またはnビットおきのビット、ただしnは2のべき数、によって構成されるビットスライス表現データブロック単位の演算処理と移動処理を適用した暗号化処理を実行する前記(9)または(10)に記載の情報処理装置。
(12)前記データ処理部は、前記鍵スケジュール処理において、前記ビットスライス表現鍵を構成する各暗号鍵の同一ビット目またはnビットおきのビット、ただしnは2のべき数、によって構成されるビットスライス表現鍵ブロック単位の演算処理と移動処理を適用して前記ラウンド鍵を生成する前記(9)〜(11)いずれかに記載の情報処理装置。
前記サーバの送信する暗号化データを受信する複数の受信端末を有し、
前記サーバは、
暗号処理シーケンスを規定したプログラムに従ってデータ処理を実行するデータ処理部を有し、
前記データ処理部は、前記プログラムに従って、
暗号処理対象となる複数の平文データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記複数の平文データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、暗号処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した暗号処理と、
前記暗号処理の結果に対する前記ビットスライス処理の逆変換により、前記複数の平文データに対応する複数の暗号化データを生成するデータ逆変換処理を、
実行する情報処理システム。
20 センサネットワーク
30 サーバ
31 暗号鍵
32 センサID
33 暗号化データ
70 平文データ
80 入力データ
81 暗号鍵
82 平文データ
90 出力データ
91 暗号化データ
100 情報処理装置
110 暗号処理部
701 CPU
702 ROM
703 RAM
704 バス
705 入出力インタフェース
706 入力部
707 出力部
708 記憶部
709 通信部
710 ドライブ
711 リムーバブルメディア
Claims (20)
- データ送信装置の送信する暗号化データを受信する通信部と、
前記通信部を介して受信した暗号化データの復号処理を実行するデータ処理部を有し、
前記データ処理部は、復号処理シーケンスを規定したプログラムに従ってデータ処理を実行する構成であり、
前記データ処理部は、前記プログラムに従って、
復号処理対象となる暗号化データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記暗号化データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、復号処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した復号処理と、
前記復号処理の結果に対する前記ビットスライス処理の逆変換により、前記暗号化データに対応する平文データを生成するデータ逆変換処理を、
実行する情報処理装置。 - 前記通信部は、暗号化データとともに該暗号化データの送信機器の機器IDを受信し、
前記データ処理部は、
前記機器IDに基づいて、各暗号化データに対応する暗号鍵を記憶部から選択取得、または前記機器IDに基づいて、各暗号化データに対応する暗号鍵を所定の演算で導出し、
前記鍵変換処理において、前記暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する請求項1に記載の情報処理装置。 - 前記データ処理部は、
前記復号処理において、前記ビットスライス表現データを構成する各暗号化データの同一ビット目またはnビットおきのビット、ただしnは2のべき数、
によって構成されるビットスライス表現データブロック単位の演算処理と移動処理を適用した復号処理を実行する請求項1に記載の情報処理装置。 - 前記データ処理部は、
前記鍵スケジュール処理において、前記ビットスライス表現鍵を構成する各暗号鍵の同一ビット目またはnビットおきのビット、ただしnは2のべき数、
によって構成されるビットスライス表現鍵ブロック単位の演算処理と移動処理を適用して前記ラウンド鍵を生成する請求項1に記載の情報処理装置。 - 暗号化データを生成して送信する送信端末と、
前記送信端末の送信する暗号化データを受信するサーバを有し、
前記サーバは、
復号処理シーケンスを規定したプログラムに従ってデータ処理を実行するデータ処理部を有し、
前記データ処理部は、前記プログラムに従って、
復号処理対象となる暗号化データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記暗号化データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、復号処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した復号処理と、
前記復号処理の結果に対する前記ビットスライス処理の逆変換により、前記暗号化データに対応する平文データを生成するデータ逆変換処理を、
実行する情報処理システム。 - 前記送信端末は、暗号化データとともに該暗号化データの送信機器の機器IDを送信し、
前記サーバのデータ処理部は、
前記機器IDに基づいて、各暗号化データに対応する暗号鍵を記憶部から選択取得、または前記機器IDに基づいて、各暗号化データに対応する暗号鍵を所定の演算で導出し、
前記鍵変換処理において、前記暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する請求項5に記載の情報処理システム。 - 前記サーバのデータ処理部は、
前記復号処理において、前記ビットスライス表現データを構成する各暗号化データの同一ビット目またはnビットおきのビット、ただしnは2のべき数、
によって構成されるビットスライス表現データブロック単位の演算処理と移動処理を適用した復号処理を実行する請求項5に記載の情報処理システム。 - 前記サーバのデータ処理部は、
前記鍵スケジュール処理において、前記ビットスライス表現鍵を構成する各暗号鍵の同一ビット目またはnビットおきのビット、ただしnは2のべき数、
によって構成されるビットスライス表現鍵ブロック単位の演算処理と移動処理を適用して前記ラウンド鍵を生成する請求項5に記載の情報処理システム。 - データ受信装置に対して暗号化データを送信する通信部と、
前記通信部を介して送信する暗号化データの生成処理を実行するデータ処理部を有し、
前記データ処理部は、暗号処理シーケンスを規定したプログラムに従ってデータ処理を実行する構成であり、
前記データ処理部は、前記プログラムに従って、
暗号化処理対象となる平文データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記平文データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、暗号化処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した暗号処理と、
前記暗号処理の結果に対する前記ビットスライス処理の逆変換により、前記平文データに対応する暗号化データを生成するデータ逆変換処理を、
実行する情報処理装置。 - 前記データ処理部は、
暗号化データを送信する送信先の機器IDに基づいて各平文データに対応する暗号鍵を記憶部から選択取得、または前記機器IDに基づいて、各暗号化データに対応する暗号鍵を所定の演算で導出し、
前記鍵変換処理において、前記暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する請求項9に記載の情報処理装置。 - 前記データ処理部は、
前記暗号処理において、前記ビットスライス表現データを構成する各平文データの同一ビット目またはnビットおきのビット、ただしnは2のべき数、
によって構成されるビットスライス表現データブロック単位の演算処理と移動処理を適用した暗号化処理を実行する請求項9に記載の情報処理装置。 - 前記データ処理部は、
前記鍵スケジュール処理において、前記ビットスライス表現鍵を構成する各暗号鍵の同一ビット目またはnビットおきのビット、ただしnは2のべき数、
によって構成されるビットスライス表現鍵ブロック単位の演算処理と移動処理を適用して前記ラウンド鍵を生成する請求項9に記載の情報処理装置。 - 暗号化データを生成して送信するサーバと、
前記サーバの送信する暗号化データを受信する受信端末を有し、
前記サーバは、
暗号処理シーケンスを規定したプログラムに従ってデータ処理を実行するデータ処理部を有し、
前記データ処理部は、前記プログラムに従って、
暗号処理対象となる平文データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記平文データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、暗号処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した暗号処理と、
前記暗号処理の結果に対する前記ビットスライス処理の逆変換により、前記平文データに対応する暗号化データを生成するデータ逆変換処理を、
実行する情報処理システム。 - 前記サーバのデータ処理部は、
前記受信端末各々の機器IDに基づいて、各平文データに対応する暗号鍵を記憶部から選択取得、または前記機器IDに基づいて、各平文データに対応する暗号鍵を所定の演算で導出し、
前記鍵変換処理において、前記暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する請求項13に記載の情報処理システム。 - 前記サーバのデータ処理部は、
前記暗号化処理において、前記ビットスライス表現データを構成する各平文データの同一ビット目またはnビットおきのビット、ただしnは2のべき数、
によって構成されるビットスライス表現データブロック単位の演算処理と移動処理を適用した暗号化処理を実行する請求項13に記載の情報処理システム。 - 前記サーバの前記データ処理部は、
前記鍵スケジュール処理において、前記ビットスライス表現鍵を構成する各暗号鍵の同一ビット目またはnビットおきのビット、ただしnは2のべき数、
によって構成されるビットスライス表現鍵ブロック単位の演算処理と移動処理を適用して前記ラウンド鍵を生成する請求項13に記載の情報処理システム。 - 情報処理装置において実行する情報処理方法であり、
通信部が、データ送信装置の送信する暗号化データを受信する通信ステップと、
データ処理部が、前記通信部を介して受信した暗号化データの復号処理を実行するデータ処理ステップを実行し、
前記データ処理ステップは、復号処理シーケンスを規定したプログラムに従って、
復号処理対象となる暗号化データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記暗号化データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、復号処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した復号処理と、
前記復号処理の結果に対する前記ビットスライス処理の逆変換により、前記暗号化データに対応する平文データを生成するデータ逆変換処理を、
実行する情報処理方法。 - 情報処理装置において実行する情報処理方法であり、
データ処理部が、暗号化データの生成処理を実行するデータ処理ステップと、
通信部が、前記データ処理部の生成した暗号化データの各々をデータ送信装置各々に送信する通信ステップを実行し、
前記データ処理ステップは、暗号処理シーケンスを規定したプログラムに従って、
暗号化処理対象となる平文データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記平文データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、暗号化処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した暗号処理と、
前記暗号処理の結果に対する前記ビットスライス処理の逆変換により、前記平文データに対応する暗号化データを生成するデータ逆変換処理を、
実行する情報処理方法。 - 情報処理装置において情報処理を実行させるプログラムであり、
データ処理部に、送信機が個別の暗号鍵で生成した暗号化データを入力させ、
前記データ処理に、
復号処理対象となる暗号化データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記暗号化データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、復号処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した復号処理と、
前記復号処理の結果に対する前記ビットスライス処理の逆変換により、前記暗号化データに対応する平文データを生成するデータ逆変換処理を、
実行させるプログラム。 - 情報処理装置において情報処理を実行させるプログラムであり、
データ処理部に、暗号化データの生成処理を実行させるデータ処理ステップと、
通信部が、前記データ処理部の生成した暗号化データの各々をデータ送信装置各々に送信させる通信ステップを実行させ、
前記データ処理ステップにおいては、
暗号化処理対象となる平文データに対するビットスライス処理によりビットスライス表現データを生成するデータ変換処理と、
前記平文データ各々の暗号鍵に対するビットスライス処理によりビットスライス表現鍵を生成する鍵変換処理と、
前記ビットスライス表現鍵を入力して、暗号化処理における各ラウンド用のラウンド鍵を生成する鍵スケジュール処理と、
前記ビットスライス表現データに対して前記ラウンド鍵を適用した暗号処理と、
前記暗号処理の結果に対する前記ビットスライス処理の逆変換により、前記平文データに対応する暗号化データを生成するデータ逆変換処理を、
実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014502099A JP5835458B2 (ja) | 2012-03-02 | 2013-02-07 | 情報処理装置、および情報処理方法、並びにプログラム |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012046310 | 2012-03-02 | ||
JP2012046310 | 2012-03-02 | ||
JP2014502099A JP5835458B2 (ja) | 2012-03-02 | 2013-02-07 | 情報処理装置、および情報処理方法、並びにプログラム |
PCT/JP2013/052819 WO2013129056A1 (ja) | 2012-03-02 | 2013-02-07 | 情報処理装置、および情報処理方法、並びにプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2013129056A1 true JPWO2013129056A1 (ja) | 2015-07-30 |
JP5835458B2 JP5835458B2 (ja) | 2015-12-24 |
Family
ID=49082259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014502099A Expired - Fee Related JP5835458B2 (ja) | 2012-03-02 | 2013-02-07 | 情報処理装置、および情報処理方法、並びにプログラム |
Country Status (6)
Country | Link |
---|---|
US (1) | US9537651B2 (ja) |
EP (1) | EP2822214A4 (ja) |
JP (1) | JP5835458B2 (ja) |
CN (1) | CN104137467A (ja) |
RU (1) | RU2014134853A (ja) |
WO (1) | WO2013129056A1 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101807441B1 (ko) * | 2013-12-04 | 2017-12-08 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 가상 머신들 간의 사이드 채널 공격들의 검출 |
US9473296B2 (en) * | 2014-03-27 | 2016-10-18 | Intel Corporation | Instruction and logic for a simon block cipher |
US20160226585A1 (en) * | 2015-02-02 | 2016-08-04 | Blackberry Limited | Computing devices and methods for data transmission |
US9773432B2 (en) * | 2015-06-27 | 2017-09-26 | Intel Corporation | Lightweight cryptographic engine |
US11522692B2 (en) | 2016-09-23 | 2022-12-06 | Becton, Dickinson And Company | Encryption system for medical devices |
CN107425963B (zh) * | 2017-05-09 | 2024-08-20 | 谢新勇 | 一种密码墙的构建方法及系统 |
WO2019074816A1 (en) * | 2017-10-09 | 2019-04-18 | Mcnutt Jason | METHODS AND SYSTEMS FOR ENCRYPTING DATA USING OBJECT SCREENS |
US10505715B2 (en) * | 2017-11-17 | 2019-12-10 | Marpex, Inc. | Method and system of synchronous encryption to render computer files and messages impervious to pattern recognition and brute force attacks |
DE102018205125A1 (de) * | 2018-04-05 | 2019-10-10 | Robert Bosch Gmbh | Radarsensorkopf für ein Radarsystem |
EP3618385B1 (en) * | 2018-08-31 | 2020-06-24 | Zenuity AB | Method and arrangement for encoding/decoding a signal at a first and second communication node in a road vehicle |
US11838402B2 (en) | 2019-03-13 | 2023-12-05 | The Research Foundation For The State University Of New York | Ultra low power core for lightweight encryption |
US10637837B1 (en) | 2019-11-27 | 2020-04-28 | Marpex, Inc. | Method and system to secure human and also internet of things communications through automation of symmetric encryption key management |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003216448A (ja) * | 2002-01-17 | 2003-07-31 | Ntt Docomo Inc | 移動通信端末及びデータ送信方法 |
JP4004805B2 (ja) | 2002-01-25 | 2007-11-07 | 三菱電機株式会社 | 非線形変換装置及び非線形変換装置の非線形変換方法及び非線形変換プログラム |
KR100547855B1 (ko) * | 2003-01-14 | 2006-01-31 | 삼성전자주식회사 | 근거리 통신 장치를 구비한 복합 이동 통신 단말의 보안통신 시스템 및 방법 |
-
2013
- 2013-02-07 JP JP2014502099A patent/JP5835458B2/ja not_active Expired - Fee Related
- 2013-02-07 RU RU2014134853A patent/RU2014134853A/ru not_active Application Discontinuation
- 2013-02-07 EP EP13754962.2A patent/EP2822214A4/en not_active Withdrawn
- 2013-02-07 CN CN201380010947.4A patent/CN104137467A/zh active Pending
- 2013-02-07 US US14/373,562 patent/US9537651B2/en active Active
- 2013-02-07 WO PCT/JP2013/052819 patent/WO2013129056A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2013129056A1 (ja) | 2013-09-06 |
RU2014134853A (ru) | 2016-03-20 |
US20140380037A1 (en) | 2014-12-25 |
JP5835458B2 (ja) | 2015-12-24 |
US9537651B2 (en) | 2017-01-03 |
CN104137467A (zh) | 2014-11-05 |
EP2822214A4 (en) | 2015-09-30 |
EP2822214A1 (en) | 2015-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5835458B2 (ja) | 情報処理装置、および情報処理方法、並びにプログラム | |
WO2013129055A1 (ja) | 情報処理装置、および情報処理方法、並びにプログラム | |
WO2013129054A1 (ja) | 情報処理装置、および情報処理方法、並びにプログラム | |
CN101622816B (zh) | 用于高级加密标准(aes)的灵活结构和指令 | |
US9031234B2 (en) | Encryption device and decryption device | |
CN109245881A (zh) | 一种照片视频云端加密存储方法 | |
Biryukov et al. | Cryptanalysis of Feistel networks with secret round functions | |
TWI595460B (zh) | Data processing device, information processing device, data processing method and program | |
Panda | Data security in wireless sensor networks via AES algorithm | |
KR20180110550A (ko) | 부채널 분석 방지를 위한 화이트박스 암호 방법 및 장치 | |
CN113098675B (zh) | 基于多项式完全同态的二进制数据加密系统及方法 | |
Sohel Rana et al. | A survey paper of lightweight block ciphers based on their different design architectures and performance metrics | |
JP2013182148A (ja) | 情報処理装置、および情報処理方法、並びにプログラム | |
Pandey et al. | Particle swarm optimization in cryptanalysis of DES | |
Buell | Modern symmetric ciphers—Des and Aes | |
JP6203387B2 (ja) | 暗号装置及び記憶システム及び復号装置及び暗号方法及び復号方法及び暗号プログラム及び復号プログラム | |
Mahantesh et al. | Design of secured block ciphers PRESENT and HIGHT algorithms and its FPGA implementation | |
JP2013098722A (ja) | ストリーム暗号の暗号化装置、ストリーム暗号の復号装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号方法、およびプログラム | |
Parikibandla et al. | FPGA performance evaluation of present cipher using LCC key generation for IoT sensor nodes | |
Sawant et al. | Advanced Encryption Standard Block Cipher Algorithm | |
JP6251151B2 (ja) | ラウンド関数計算装置及び暗号装置、これらの方法並びにプログラム | |
REKHA et al. | Design and Implementation of Low Power, Light Weight Cryptographic Core using Hummingbird2 Algorithm | |
JP5665588B2 (ja) | アルゴリズム可変型暗号装置、アルゴリズム可変型復号装置、アルゴリズム可変型暗号方法、アルゴリズム可変型復号方法およびプログラム | |
Wei | Multiple Binary Trees Encryption Principle | |
Abraham | FPGA implementation of SubBytes & inverse SubBytes for AES algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20151006 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151019 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5835458 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |