JP5612007B2 - 暗号化鍵生成装置 - Google Patents

暗号化鍵生成装置 Download PDF

Info

Publication number
JP5612007B2
JP5612007B2 JP2012058554A JP2012058554A JP5612007B2 JP 5612007 B2 JP5612007 B2 JP 5612007B2 JP 2012058554 A JP2012058554 A JP 2012058554A JP 2012058554 A JP2012058554 A JP 2012058554A JP 5612007 B2 JP5612007 B2 JP 5612007B2
Authority
JP
Japan
Prior art keywords
round
calculation unit
data
processing
encryption key
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.)
Expired - Fee Related
Application number
JP2012058554A
Other languages
English (en)
Other versions
JP2013190747A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2012058554A priority Critical patent/JP5612007B2/ja
Priority to US13/788,456 priority patent/US20130243191A1/en
Publication of JP2013190747A publication Critical patent/JP2013190747A/ja
Application granted granted Critical
Publication of JP5612007B2 publication Critical patent/JP5612007B2/ja
Expired - Fee Related 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • 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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Description

本発明の実施の形態は、暗号化鍵生成装置に関する。
暗号プロトコルは、暗号化鍵や認証鍵(以下では、これらを暗号化鍵と総称する。)を利用して、守秘や認証などの機能を実現する。暗号プロトコルで利用する暗号化鍵を生成する方法として、共通の鍵情報に基づく暗号演算を複数回行うことで複数の暗号化鍵を生成する方法が知られている。
共通の鍵情報に基づく暗号演算を複数回行うことで複数の暗号化鍵を生成する従来の方法は、共通のバイト処理を繰り返す部分を含み、効率改善の余地がある。
本発明が解決しようとする課題は、複数の暗号化鍵を効率よく生成することができる暗号化鍵生成装置を提供することである。
実施形態の暗号化鍵生成装置は、鍵情報に基づく暗号演算を行うことにより複数の暗号化鍵を生成する。前記暗号演算は、所定のラウンド関数に基づくラウンド処理を規定ラウンド数繰り返すものである。実施形態の暗号化鍵生成装置は、第1計算部と、第2計算部と、第3計算部と、を備える。第1計算部は、第1データの第1の部分に対して、前記暗号演算の第1ラウンドの処理を行うとともに、前記第1データの前記第1の部分以外に対して、前記暗号演算の第1ラウンドの処理の一部を行う。第2計算部は、複数の第2データの第2の部分に対して、前記暗号演算の第1ラウンドの処理のうち、前記第1計算部が実施していない処理を行う。複数の第2データは、前記暗号演算の第1ラウンドの処理が終わった前記第1データの前記第1の部分と、前記第1データの前記第1の部分以外の少なくとも一部を変化させた第2の部分とを含み、前記第2の部分は、他の第2の部分とは少なくとも一部が異なり、各前記第2の部分に対して、第2計算部が前記暗号演算の第1ラウンドの処理のうち、前記第1計算部が実施していない処理を行う。第3計算部は、前記暗号演算の第1ラウンドの処理が終わった複数の前記第2データに対して、前記暗号演算の第2ラウンド以降の処理を行う。
第1実施形態の暗号化鍵生成装置の構成を示すブロック図。 AESの第1ラウンドの処理を説明する説明図。 第1実施形態の暗号化鍵生成装置の処理手順を示すフローチャート。 第2実施形態の暗号化鍵生成装置の構成を示すブロック図。 第2実施形態の暗号化鍵生成装置の処理手順を示すフローチャート。
実施形態の暗号化鍵生成装置は、鍵情報に基づく暗号演算を行うことにより、複数の暗号化鍵を生成する。以下では、暗号演算としてAES(Advanced Encryption Standard)を例に挙げて説明する。なお、適用可能な暗号演算はAESに限らず、公知の様々な暗号演算を適用することができる。
まず、AESの概要について説明する。ブロック暗号方式の暗号演算であるAESでは、例えば128ビット(16バイト)のデータブロックに対して、ラウンド関数を用いたラウンド処理を規定ラウンド数繰り返す。AESのラウンド関数は、SubBytes、ShiftRows、MixColumns、およびAddRoundKeyを含む。
SubBytesは、128ビットのデータブロックを16個のバイト単位のデータに区切り、バイト単位で非線形変換を行う演算処理である。ShiftRowsは、128ビットのデータブロックに対してバイト単位の並び替えを行う演算処理である。MixColumnsは、128ビットのデータブロックを4個の32ビットデータ(4バイトデータ)に分けて32ビットごとの行列変換を行う演算処理である。AddRoundKeyは、初期鍵をラウンドごとに更新して生成される128ビットのラウンド鍵と、128ビットのデータブロックとの排他的論理和を演算する演算処理である。
AESの演算は、例えば以下の手順で行われる。まず、128ビット(16バイト)の平文ブロックを入力し、入力した平文ブロックと128ビットの初期鍵との排他的論理和を演算する。この処理は、初期鍵加算と呼ばれる。次に、第1ラウンドから最終ラウンドの1つ前のラウンド(規定ラウンド数が10であれば第9ラウンド)まで、SubBytes→ShiftRows→MixColumns→AddRoundKeyを繰り返す。そして、最終ラウンドでは、SubBytesとShiftRowsを行った後、MixColumnsをスキップしてAddRoundKeyを行い、暗号文ブロックを出力する。なお、以上は暗号化処理の手順を示しているが、復号処理の場合も同様な手順で行われる。ただし、復号処理の場合は、暗号文ブロックを入力とし、SubBytes、ShiftRows、およびMixColumnsにおいて暗号化処理の逆変換が行われ、平文ブロックを出力する。
事前に共有された鍵情報(PSK:Pre-Shared Key)に基づくAESの演算により複数の暗号化鍵を生成する鍵導出関数が、RFC4764で規定されている(非特許文献1参照)。このRFC4764で規定される鍵導出関数は、一部分のみが異なる複数のデータブロックに対して同一の鍵情報を用いたAESの演算を行って、複数の暗号化鍵を生成する。
具体的には、RFC4764で規定された鍵導出関数では、まず、第1入力“0(16バイト)”に対して事前に共有された鍵情報PSK(16バイト)に基づくAESの演算を行う。そして、その演算結果の最下位1バイトのみが異なる値となる2つの第2入力を生成し、これら2つの第2入力に対して鍵情報PSKに基づくAESの暗号演算を再度行って、暗号化鍵AKと、新たな鍵情報KDKを生成する(非特許文献1のFig3)。その後、さらに第3入力“RAND_P(16バイト)” に対して鍵情報KDKに基づくAESの演算を行う。そして、その演算結果の最下位1バイトのみが異なる値となる9つの第4入力を生成し、これら9つの第4入力に対して鍵情報KDKに基づくAESの暗号演算を再度行って、暗号化鍵TEK、MSK1/4〜MSK4/4、EMSK1/4〜EMSK4/4の9つの暗号化鍵を生成し(非特許文献1のFig7)、先の暗号化鍵AKと併せて計10個の暗号化鍵(それぞれ16バイト)を生成する。
RFC4764で規定された鍵導出関数のように、一部分のみが異なる複数のデータブロック(上記の第2入力や第4入力)に対して同一の鍵情報を用いたAESの演算を行う場合、複数のデータブロック同士で共通する部分に対して同一のバイト処理が重複して行われるため、処理の効率の観点から改善の余地がある。実施形態の暗号化鍵生成装置は、例えばRFC4764で規定された鍵導出関数のように、一部分のみが異なる複数のデータブロックに対して同一の鍵情報を用いたAESの演算を行う場合に、これら複数のデータブロック同士で共通する部分に対するバイト処理を纏めて行うことで処理量を削減し、複数の暗号化鍵を効率よく生成する。
(第1実施形態)
図1は、第1実施形態の暗号化鍵生成装置100の構成を示すブロック図である。暗号化鍵生成装置100は、通信部101と、記憶部102と、第1計算部103と、第2計算部104と、第3計算部105と、ラウンド鍵計算部106と、を備える。その他、暗号化鍵生成装置100は、装置を制御する制御部や排他的論理和などを計算する演算部を有するが、図面では記載を省略する。
通信部101は、暗号化鍵生成装置100と外部システムとの間の通信を行うインターフェースである。
記憶部102は、暗号化鍵生成装置100と外部システムとの間で共有している鍵情報PSKや、暗号化鍵生成装置100の処理手順などを記憶する。
第1計算部103は、第1データの第1の部分に対して、AESの第1ラウンドの処理を行う。ここで、第1データとは、RFC4764で規定された鍵導出関数に関する上記の記述に当てはめると、第1入力“0(16バイト)”に対して鍵情報PSK(16バイト)に基づくAESの演算を行った演算結果のデータ、あるいは、第3入力“RAND_P(16バイト)” に対して鍵情報KDKに基づくAESの演算を行った演算結果のデータである。また、第1の部分とは、AESの第1ラウンドで共通のバイト処理が行われる部分、つまり、上記の演算結果のデータの最下位1バイトを含む処理単位を除く部分である。
第2計算部104は、複数の第2データの第2の部分に対して、AESの第1ラウンドの処理を行う。第2データは、AESの第1ラウンドの処理が終わった第1データの第1の部分と、第1データの第1の部分以外の少なくとも一部を変化させた第2の部分とを含む。第2の部分は、他の第2データの第2の部分とは少なくとも一部が異なるものであり、第2計算部104は、複数の第2データの各第2の部分に対して、AESの第1ラウンドの処理を行う。ここで、第2データとは、RFC4764で規定された鍵導出関数に関する上記の記述に当てはめると、第1の部分に対するAESの第1ラウンドの処理が終わった状態の第2入力または第4入力である。また、第2の部分とは、第2入力または第4入力の最下位1バイトを含む処理単位である。
第3計算部105は、AESの第1ラウンドの処理が終わった複数の第2データに対して、AESの第2ラウンド以降の処理を行う。
ラウンド鍵計算部106は、初期鍵を入力として受け付け、AESの規定ラウンド数分のラウンド鍵を計算する。例えば規定ラウンド数が10であれば、ラウンド鍵計算部106は、AESの第1ラウンドから第10ラウンドに対応する10個の16バイトのラウンド鍵を計算する。
本実施形態の暗号化鍵生成装置100は、複数の第2データに対するAESの第1ラウンドの処理について、従来は個別に行われていた同一のバイト処理を共通化して第1計算部103で行い、残りの部分(第2の部分)のバイト処理を第2計算部104で行うことで、処理の効率を向上させる。以下、RFC4764で規定された鍵導出関数に対応させて、第1計算部103および第2計算部104による処理の具体例を説明する。なお、AESではSubBytesとShiftRowsの順番を入れ替えても計算結果は変わらないため、以下では、ShiftRowsを行った後にSubBytesを行うものとする。また、AESのラウンド関数のうち、ShiftRowsはバイト単位の入れ替えであり、16バイト全体の処理となるため、第1ラウンドの16バイト全体のShiftRowsを第1計算部103で先に行うものとする。
図2は、RFC4764で規定された鍵導出関数において、上記の第2入力または第4入力に対するAESの第1ラウンドの処理を説明する説明図である。
まず、第1入力または第3入力に対するAESの演算結果m(m〜m16;添え字の数字は先頭からのバイト位置を表す)と事前に共有された鍵情報PSKとの排他的論理和を計算(初期鍵加算)する。さらに、最下位バイトのm16に対しては、鍵情報PSKとの排他的論理和の結果と定数iの最下位バイト(非特許文献1のFig3ではi=1または2、非特許文献1のFig7ではi=1〜9のいずれか)との排他的論理和を計算(定数加算)し、その結果が第2入力または第4入力d(d〜d16;添え字の数字は先頭からのバイト位置を表す)となる。
次に、AESの第1ラウンドで、第2入力または第4入力dに対してShiftRowsを行う。その結果、先頭からd,d,d11,d16,d,d10,d15,d,d,d14,d,d,d13,d,d,d12と並ぶ中間データが得られる。そして、この中間データに対してSubBytesを行って、バイト単位で非線形処理された中間データs(s〜s16;添え字の数字は先頭からのバイト位置を表す)が得られる。さらに、中間データsに対してMixColumnsを行って、4バイトごとに行列変換された中間データc(c〜c16;添え字の数字は先頭からのバイト位置を表す)が得られる。そして、中間データcとラウンド鍵計算部106が生成したラウンド鍵RKとの排他的論理和を計算(AddRoundKey)し、中間データv(v〜v16;添え字の数字は先頭からのバイト位置を表す)が得られる。その後、AESの第2ラウンドでは、第1ラウンドで生成された中間データvを入力として、同様の処理を繰り返す。
図2に示した例において、AESの第1ラウンドの入力となる第2入力または第4入力dは、定数加算によって最下位バイトd16のみ値が異なるデータとなる。したがって、AESの第1ラウンドにおいて、第2入力または第4入力dの最下位バイトd16が影響を及ぼさない部分(第1の部分)の処理は、共通のバイト処理となる。本実施形態の暗号化鍵生成装置100では、この共通のバイト処理を第1計算部103で行い、残りのバイト処理を第2計算部104で行う。図2では、第1計算部103が処理する部分を実線で示し、第2計算部104が処理する部分を破線で示している。また、図2の二重線で囲まれた初期鍵加算および定数加算は、第1ラウンドの前に行われる処理である。
第1計算部103は、AESの第1ラウンドにおけるShiftRows処理、所定のバイトのSubBytes処理、対応するMixColumns処理、および対応するバイトのAddRoundKeyを行う。ShiftRows処理は、第1,6,11,16バイトを第1〜4バイトに、第5,10,15,4バイトを第5〜8バイトに、第9,14,3,8バイトを第9〜12バイトに、第13,2,7,12バイトを第13〜16バイトにそれぞれ対応付ける。SubBytes処理は、第1〜3バイト、第5〜16バイトのSubBytesである。対応するMixColumns処理は、第5〜8バイトを用いる第2MixColumns、第9〜12バイトを用いる第3MixColumns、第13〜16バイトを用いる第4MixColumnsの3つである。対応するAddRoundKeyは、第2MixColumnsが出力する4バイトを第5〜8バイトとし、第3MixColumnsが出力する4バイトを第9〜12バイトとし、第4MixColumnsが出力する4バイトを第13〜16バイトとして、これら第5〜16バイトと、ラウンド鍵計算部106が生成した第1ラウンドのラウンド鍵(16バイト)の第5〜16バイトとの排他的論理和を計算する。
第2計算部104は、AESの第1ラウンドにおける第1計算部103が処理しないバイトのSubBytes処理と、対応するMixColumns処理、および対応するAddRoundKeyを行う。図2に示した例において、第1計算部103が処理しないバイトは、第2入力または第4入力dの最下位バイトd16、すなわちShiftRows処理後の第4バイトである。対応するMixColumns処理は、ShiftRows処理後の第1〜4バイトを用いる第1MixColumns処理である。対応するAddRoundKeyは、第1MixColumnsが出力する4バイトを第1〜4バイトとして、これら第1〜4バイトと、ラウンド鍵計算部106が生成した第1ラウンドのラウンド鍵(16バイト)の第1〜4バイトとの排他的論理和を計算する。
次に、RFC4764で規定された鍵導出関数に準じて複数の暗号化鍵を生成する場合を例に挙げ、本実施形態の暗号化鍵生成装置100の処理手順について図3を参照しながら説明する。図3は、暗号化鍵生成装置100の処理手順を示すフローチャートである。
RFC4764で規定された鍵導出関数では、上述したように、第2入力または第4入力に対するAESの演算の前に、第1入力または第3入力に対するAESの演算が行われる。第1入力または第3入力は、第2入力または第4入力と異なり、定数加算によって最下位1バイトの値が変化するものではないが、本実施形態の暗号化鍵生成装置100は、AESの演算を第1計算部103、第2計算部104、および第3計算部105で行うため、第1入力または第3入力に対するAESの演算に相当する処理も、第1計算部103、第2計算部104、および第3計算部105で行う。なお、図3のフローチャートでは、ステップS104〜ステップS106の処理が、第1入力または第3入力に対するAESの演算に相当し、ステップS109、ステップS113、およびステップS114の処理が、第2入力または第4入力に対するAESの演算に相当する。
まず、暗号化鍵生成装置100は、所定の入力X1を受け付ける(ステップS101)。例えば、非特許文献1のFig3に対応する処理を行う場合には、暗号化鍵生成装置100は第1入力“0(16バイト)”を受け付け、非特許文献1のFig7に対応する処理を行う場合には、暗号化鍵生成装置100は第3入力“RAND_P(16バイト)”を受け付ける。
次に、暗号化鍵生成装置100は、ステップS101で受け付けた入力X1と、記憶部102が記憶する鍵情報PSKとの排他的論理和を計算(初期鍵加算)する(ステップS102)。
次に、ラウンド鍵計算部106が、記憶部102が記憶する鍵情報PSKを入力として、ラウンド鍵RKを計算する(ステップS103)。ラウンド鍵計算部106は、第1計算部103、第2計算部104、および第3計算部105が処理するラウンドに応じて、対応するラウンドのラウンド鍵RKをその都度計算してもよい。あるいは、ラウンド鍵計算部106は、第1計算部103、第2計算部104、および第3計算部105が処理を行う前に、対応するラウンドのラウンド鍵RKを計算して記憶部102などに記憶してもよい。また、暗号化鍵生成装置100は、後段のAESの演算でラウンド鍵RKが再び用いられることに備えて、ラウンド鍵計算部106が計算するラウンド鍵RKを記憶部102に記憶させるようにしてもよい。記憶部102がラウンド鍵RKを記憶しない場合には、ラウンド鍵計算部102は、必要となるラウンド鍵RKをラウンド処理が行われるたびに計算するが、以降の説明では記述を省略する。
次に、第1計算部103が、ステップS102で初期鍵加算された16バイトの入力X1’と、ステップS103で計算された第1ラウンドのラウンド鍵RKとを入力として、AESの第1ラウンドのSubBytesまで処理された第1〜3バイト、ShiftRowsまで処理された第4バイト、およびAESの第1ラウンドの出力の第5〜16バイトの合計16バイトを計算する(ステップS104)。
次に、第2計算部104が、ステップS104で計算された16バイトのデータのうちの第1〜4バイトと、ステップS103で計算された第1ラウンドのラウンド鍵RKとを入力として、AESの第1ラウンドの出力の第1〜4バイトを計算する(ステップS105)。なお、ステップS104とステップS105は異なる順番で処理されてもよく、並行して処理されてもよい。
次に、第3計算部105が、ステップS104およびステップS105で計算されたAESの第1ラウンドの出力16バイトと、ステップS103で計算されたラウンド鍵RKとを入力として、AESの第2〜10ラウンドの処理を繰り返し、ステップS101で受け付けた入力X1に対応するAESの暗号文(16バイト)を計算する(ステップS106)。
次に、暗号化鍵生成装置100は、ステップS106で計算された16バイトの暗号文を入力X2として、この入力X2と記憶部102が記憶する鍵情報PSKとの排他的論理和を計算(初期鍵加算)する(ステップS107)。
次に、ラウンド鍵計算部106が、ステップS103と同様に、記憶部102が記憶する鍵情報PSKを入力として、ラウンド鍵RKを計算する(ステップS108)。ステップS103でラウンド鍵計算部106が計算したラウンド鍵RKを記憶部102に記憶させる場合には、ステップS108の処理は省略されてもよい。
次に、第1計算部103が、ステップS107で初期鍵加算された16バイトの入力X2’と、ステップS108(あるいはステップS103)で計算された第1ラウンドのラウンド鍵RKとを入力として、AESの第1ラウンドのSubBytesまで処理された第1〜3バイト、ShiftRowsまで処理された第4バイト、およびAESの第1ラウンドの出力の第5〜16バイトを計算する(ステップS109)。
次に、暗号化鍵生成装置100は、ステップS109で計算された16バイトのデータのうちの第1〜4バイトと第5〜16バイトを連結して、16バイトの入力X3を生成する(ステップS110)。
次に、暗号化鍵生成装置100は、以下の処理を所定の回数繰り返す。例えば、非特許文献1のFig3に対応する処理を行う場合には繰り返し回数は2であり、非特許文献1のFig7に対応する処理を行う場合には繰り返し回数は9である。繰り返しの回数をNで表す。また、i=1,i=2,・・・,i=Nのように、繰り返しの状態をiで表す。この繰り返しの状態を表すiが、後述の定数加算において用いられる定数となる。
まず、暗号化鍵生成装置100は、定数i=1と設定する(ステップS111)。
次に、暗号化鍵生成装置100は、ステップS110で生成された16バイトの入力X3の第4バイトと、定数iとの排他的論理和を計算(定数加算)する(ステップS112)。
次に、第2計算部104が、ステップS112で4バイト目に定数加算された入力X3の第1〜4バイトと、ステップS108(あるいはステップS103)で計算された第1ラウンドのラウンド鍵RKとを入力として、AESの第1ラウンドの出力の第1〜4バイトを計算し、この第1〜4バイトに、入力X3の第5〜16バイトを連結して、入力X3に対応するAESの第1ラウンドの出力を生成する(ステップS113)。
次に、第3計算部105が、ステップS113で生成されたAESの第1ラウンドの出力16バイトと、ステップS108(あるいはステップS103)で計算されたラウンド鍵RKとを入力として、AESの第2〜10ラウンドの処理を繰り返し、入力X3に対応するAESの暗号文(16バイト)を計算する(ステップS114)。ここで計算される暗号文が、鍵情報PSKをもとに生成される暗号化鍵、もしくは、さらに多数の暗号化鍵を生成するための鍵情報KDKとなる。
その後、暗号化鍵生成装置100は、iがN未満かどうか判定する(ステップS115)。そして、iがN未満であれば(ステップS115:Yes)、iをi+1で置き換えて(ステップS116)ステップS112に戻り、ステップS112以降の処理を繰り返す。一方、iがNに達していれば(ステップS115:No)、一連の処理を終了する。
以上、具体的な例を挙げながら詳細に説明したように、本実施形態の暗号化鍵生成装置100は、一部分のみが異なる複数のデータブロックに対して同一の鍵情報を用いたAESの演算を行って複数の暗号化鍵を生成する際に、これら複数のデータブロックに対するAESの第1ラウンドの処理のうち、同一のバイト処理となる部分を共通化して第1計算部103で行う。そして、残りの部分(第2の部分)のバイト処理を第2計算部104で行う。したがって、本実施形態の暗号化鍵生成装置100によれば、複数の暗号化鍵を生成するためのトータルの処理量を削減することができ、複数の暗号化鍵を効率よく生成することができる。
なお、上記の説明では、非特許文献1に記載のRFC4764で規定される鍵導出関数に準じて複数の暗号化鍵を生成する場合を例示したが、本実施形態の暗号化鍵生成装置100は、例えば、非特許文献2が開示するブロック暗号のカウンタモードにより複数の暗号化鍵を生成する場合にも同様に適用することができ、上述した例と同様の効果を得ることができる。ブロック暗号のカウンタモードにより複数の暗号化鍵を生成する場合には、図3のステップS101〜ステップS106までの処理は省略され、カウンタモードへの入力を入力X2として、ステップS107以降の処理を実行する。
また、上記の説明では、図3のステップS112において実施する定数加算が排他的論理和演算であるものとして説明したが、排他的論理和演算に限らず、算術加算やGF(256)での乗算など、他の演算を用いてもよい。また、上記の説明では、暗号演算としてAESを例示したが、他の暗号演算を用いるようにしてもよく、入力を分割して処理する方式を用いるようにしてもよい。
また、図3のステップS111〜ステップS116の繰り返し処理については、iについて異なる順番で処理されてもよく、並行して処理されてもよい。例えば、iが1からNについてステップS113に対応する処理を行い、その後、iが1からNについてステップS114に対応する処理を行うようにしてもよい。また、特にステップS114については、各iについてのステップS114の処理をラウンドごとに分割し、iが1からNについてAESの第2ラウンドに対応する処理を行い、その後、iが1からNについてAESの第3ラウンドに対応する処理を行うといったように、各iについてのステップS114の処理がラウンドごとに進むようにしてもよい。このように繰り返し処理におけるラウンドを揃えることで、ラウンド鍵RKの生成や読み出しの回数を削減することが可能となる。
(第2実施形態)
第2実施形態は、第1実施形態の構成に対して、SPA(Simple Power Analysis)やDPA(Differential Power Analysis)などのサイドチャネル攻撃に対する対策技術(以下、サイドチャネル対策という。)を組み込んだ例である。サイドチャネル対策の代表的なものとして、乱数(ランダムマスク)を用いて暗号処理中の中間データを隠蔽する対策技術と、暗号処理中の中間データに対してバイトごとに線形変換を施す対策技術とが知られている。
<ランダムマスクを用いる対策技術>
この対策技術では、暗号処理中の中間データにランダムマスクを排他的論理和した状態で処理する。そのために、AESのSubBytesでは、ランダムマスクを用いない場合の変換表の入出力それぞれに対してランダムマスクを排他的論理和した新たな変換表を作り、この新たな変換表を利用して非線形変換を行う。ここで、SubBytesの入力と出力ではそれぞれ異なるランダムマスクを用いてもよいし、バイトごとに異なるランダムマスクを用いてもよい。
AESのMixColumnsでは、MixColumnsの入力4バイトに排他的論理和処理されているランダムマスクに依存して、MixColumnsが出力するバイトに排他的論理和処理されているランダムマスクが決定される。例えば、MixColumnsに入力される4バイトのそれぞれに、MSK1〜MSK4までが排他的論理和処理されていると、MixColumnsの出力の第1〜4バイトに排他的論理和処理されているランダムマスクは、それぞれ(0x2*MSK1)+(0x3*MSK2)+MSK3+MSK4、(0x3*MSK1)+MSK2+MSK3+(0x02*MSK4)、MSK1+MSK2+(0x02*MSK3)+(0x03*MSK4)、MSK1+(0x2*MSK2)+(0x03*MSK3)+MSK4と表すことができる。ただし、0x02と0x03は16進表記した2と3であり、*はGF(256)での乗算を表す。
ランダムマスクを用いる対策技術を適用するときには、暗号処理中の中間データに排他的論理和処理されるランダムマスクを上述のように特定し、それらランダムマスクを排他的論理和処理して除去することで、入力に対応する正しい暗号文を計算することができる。
<線形変換を用いる対策技術>
この対策技術では、暗号処理中の中間データに対してバイトごとに線形変換fを施す。ここで、線形変換fとは、2つのバイトa,bに対して、f(a)とf(b)との排他的論理和と、aとbの排他的論理和をfに入力した出力とが一致するような変換をいう。AESのSubBytesでは、f(a)に対してf(SubBytes(a))が対応するような新たな変換表を作り、この新たな変換表を利用して非線形変換を行う。
AESのMixColumnsでは、f(a)に対してf(0x02*a)を出力するような新たな0x02倍計算表を作成し、0x02倍計算に新たな変換表を利用する。0x03倍計算は、データf(a)に対する0x02倍計算表の参照結果とf(a)の排他的論理和により計算できる。
第2実施形態の暗号化鍵生成装置は、サイドチャネル対策として、上記のランダムマスクを用いる対策技術、あるいは、線形変換を用いる対策技術を適用し、サイドチャネル攻撃に対する安全性を向上させている。
図4は、第2実施形態の暗号化鍵生成装置200の構成を示すブロック図である。暗号化鍵生成装置200は、通信部201と、記憶部202と、第1計算部203と、第2計算部204と、第3計算部205と、ラウンド鍵計算部206と、第1生成部207と、第2生成部208と、を備える。その他、暗号化鍵生成装置200は、装置を制御する制御部や排他的論理和などを計算する演算部を有するが、図面では記載を省略する。
通信部201は、暗号化鍵生成装置200と外部システムとの間の通信を行うインターフェースである。
記憶部202は、暗号化鍵生成装置200と外部システムとの間で共有している鍵情報PSKや、第1生成部207および第2生成部208により生成される対策用データ、暗号化鍵生成装置200の処理手順などを記憶する。
第1計算部203は、第1実施形態の第1計算部103と同様に、第1データの第1の部分に対して、AESの第1ラウンドの処理を行う。ただし、第1計算部203は、暗号化鍵生成装置200のサイドチャネル対策として適用される対策技術に対応したSubBytes処理、MixColumns処理、およびAddRoundKeyを行う。
第2計算部204は、第1実施形態の第2計算部104と同様に、複数の第2データの第2の部分に対して、AESの第1ラウンドの処理を行う。ただし、第2計算部204は、暗号化鍵生成装置200のサイドチャネル対策として適用される対策技術に対応したSubBytes処理、MixColumns処理、およびAddRoundKeyを行う。
第3計算部205は、第1実施形態の第3計算部105と同様に、AESの第1ラウンドの処理が終わった複数の第2データに対して、AESの第2ラウンド以降の処理を行う。ただし、第3計算部205は、暗号化鍵生成装置200のサイドチャネル対策として適用される対策技術に対応したSubBytes処理、MixColumns処理、およびAddRoundKeyを行う。
ラウンド鍵計算部206は、第1実施形態のラウンド鍵計算部106と同様に、初期鍵を入力として受け付け、AESの規定ラウンド数分のラウンド鍵を計算する。
第1生成部207は、暗号化鍵生成装置200のサイドチャネル対策で必要となるランダムマスクまたは線形変換の変換規則(線形変換f)を生成する。すなわち、暗号化鍵生成装置200のサイドチャネル対策としてランダムマスクを用いる対策技術が適用される場合、第1生成部207は、サイドチャネル対策に用いるランダムマスクを生成する。また、暗号化鍵生成装置200のサイドチャネル対策として線形変換を用いた対策技術が適用される場合、第1生成部207は、サイドチャネル対策に用いる線形変換fを生成する。なお、予め生成されて記憶部202に記憶されたランダムマスクや線形変換fを用いてサイドチャネル対策を行う場合は、暗号化鍵生成装置200は、第1生成部207を備えなくてもよい。
第2生成部208は、第1生成部207が生成したランダムマスクまたは線形変換fを用いたサイドチャネル対策に対応した暗号演算を行うための情報を生成する。すなわち、暗号化鍵生成装置200のサイドチャネル対策としてランダムマスクを用いる対策技術が適用される場合、第2生成部208は、第1計算部203、第2計算部204、および第3計算部205で処理するSubBytesの新たな変換表を生成したり、MixColumns内部で用いるランダムマスクを生成したりする。また、暗号化鍵生成装置200のサイドチャネル対策として線形変換を用いる対策技術が適用される場合、第2生成部208は、第1計算部203、第2計算部204、および第3計算部205で処理するSubBytesの新たな変換表を生成したり、MixColumns内部で用いる新たな計算表を生成したりする。
次に、RFC4764で規定された鍵導出関数に準じて複数の暗号化鍵を生成する場合を例に挙げ、本実施形態の暗号化鍵生成装置200の処理手順について図5を参照しながら説明する。図5は、暗号化鍵生成装置200の処理手順を示すフローチャートである。
まず、暗号化鍵生成装置200は、所定の入力X1を受け付ける(ステップS201)。例えば、非特許文献1のFig3に対応する処理を行う場合には、暗号化鍵生成装置200は第1入力“0(16バイト)”を受け付け、非特許文献1のFig7に対応する処理を行う場合には、暗号化鍵生成装置200は第3入力“RAND_P(16バイト)”を受け付ける。
次に、第1生成部207が、サイドチャネル対策に用いるランダムマスクまたは線形変換fを生成するとともに、第2生成部208が、第1生成部207により生成されたランダムマスクまたは線形変換fを用いたサイドチャネル対策に対応したAESの演算を行うためのSubBytesの新たな変換表や、MixColumns内部で用いるランダムマスクまたは新たな計算表を生成する(ステップS202)。以下、これら第1生成部207が生成するランダムマスクまたは線形変換fと、第2生成部208が生成する変換表などを総称して、対策用データという。つまり、ステップS202では、第1生成部207および第2生成部208が、サイドチャネル対策に必要となる対策用データを生成する。
次に、暗号化鍵生成装置200は、ステップS201で受け付けた入力X1に対して、ステップS202で生成されたランダムマスクまたは線形変換fを用いたサイドチャネル対策のための処理(以下、対策処理という。)を施す(ステップS203)。すなわち、サイドチャネル対策としてランダムマスクを用いる対策技術が適用される場合には、暗号化鍵生成装置200は、ステップS201で受け付けた入力X1とステップS202で生成したランダムマスクとの排他的論理和を計算する。また、サイドチャネル対策として線形変換を用いる対策技術が適用される場合には、暗号化鍵生成装置200は、ステップS201で受け付けた入力X1をステップS202で生成した線形変換fに入力して、その出力を計算する。
次に、暗号化鍵生成装置200は、ステップS203で対策処理が施された入力Xa1に対して初期鍵加算を行う(ステップS204)。すなわち、サイドチャネル対策としてランダムマスクを用いた対策技術が適用される場合には、暗号化鍵生成装置200は、対策処理が施された入力Xa1と、記憶部202が記憶する鍵情報PSKとの排他的論理和を計算する。また、サイドチャネル対策として線形変換を用いた対策技術が適用される場合には、暗号化鍵生成装置200は、対策処理が施された入力Xa1と、記憶部202が記憶する鍵情報PSKをステップS202で生成した線形変換fに入力して得られる値との排他的論理和を計算する。
次に、ラウンド鍵計算部206が、記憶部202が記憶する鍵情報PSKを入力として、ラウンド鍵RKを計算する(ステップS205)。ラウンド鍵RKを計算するタイミングや記憶部202を利用するか否かなどは、第1実施形態のステップS103と同様である。サイドチャネル対策として線形変換を用いた対策技術が適用される場合には、暗号化鍵生成装置200は、ステップS202で生成した線形変換fを利用してラウンド鍵RKを計算する。
次に、第1計算部203が、ステップS204で初期鍵加算された16バイトのデータXa1’と、ステップS205で計算された第1ラウンドのラウンド鍵RKとを入力として、サイドチャネル対策が施された状態における、AESの第1ラウンドのSubBytesまで処理された第1〜3バイト、ShiftRowsまで処理された第4バイト、およびAESの第1ラウンドの出力の第5〜16バイトを計算する(ステップS206)。このとき、第1計算部203は、ステップS202で第2生成部208が生成した変換表を利用してSubBytes処理を行い、ステップS202で第2生成部208が生成したランダムマスクまたは新たな計算表を利用してMixColumns処理を行う。
次に、第2計算部204が、ステップS206で計算された16バイトのデータのうちの第1〜4バイトと、ステップS205で計算された第1ラウンドのラウンド鍵RKとを入力として、サイドチャネル対策が施された状態における、AESの第1ラウンドの出力の第1〜4バイトを計算する(ステップS207)。このとき、第2計算部204は、ステップS202で第2生成部208が生成した変換表を利用してSubBytes処理を行い、ステップS202で第2生成部208が生成したランダムマスクまたは新たな計算表を利用してMixColumns処理を行う。なお、ステップS206とS207は異なる順番で処理されてもよく、並行して処理されてもよい。
次に、第3計算部205が、ステップS206およびステップS207で計算されたサイドチャネル対策が施された状態におけるAESの第1ラウンドの出力16バイトと、ステップS205で計算されたラウンド鍵RKとを入力として、AESの第2〜10ラウンドの処理を繰り返し、ステップS201で受け付けた入力X1に対応するAESの暗号文(16バイト)を計算する(ステップS208)。このとき、第3計算部205は、ステップS202で第2生成部208が生成した変換表を利用してSubBytes処理を行い、ステップS202で第2生成部208が生成したランダムマスクまたは新たな計算表を利用してMixColumns処理を行う。なお、第3計算部205は、ステップS208において、ランダムマスクや非線形変換fによる対策処理を除去した暗号文を出力してもよいし、ランダムマスクや非線形変換fによる対策処理が施された状態で暗号文を出力してもよい。ステップS208でランダムマスクや非線形変換fによる対策処理を除去した暗号文が出力される場合は、その後、ステップS202と同様に、第1生成部207および第2生成部208によって新たに対策用データが生成され、ステップS208で出力される暗号文に対して、ステップS203と同様の対策処理が施されるが、図5においてはこれらの処理の記述を省略する。
次に、暗号化鍵生成装置200は、ステップS208で出力される16バイトの暗号文を入力X2として、この入力X2に対して初期鍵加算を行う(ステップS209)。すなわち、サイドチャネル対策としてランダムマスクを用いた対策技術が適用される場合には、暗号化鍵生成装置200は、入力Xa2と、記憶部202が記憶する鍵情報PSKとの排他的論理和を計算する。また、サイドチャネル対策として線形変換を用いた対策技術が適用される場合には、暗号化鍵生成装置200は、入力Xa2と、記憶部202が記憶する鍵情報PSKを線形変換fに入力して得られる値との排他的論理和を計算する。
次に、ラウンド鍵計算部206が、ステップS205と同様に、記憶部202が記憶する鍵情報PSKを入力として、ラウンド鍵RKを計算する(ステップS210)。ステップS205でラウンド鍵計算部206が計算したラウンド鍵RKを記憶部202に記憶させる場合には、ステップS210の処理は省略されてもよい。
次に、第1計算部203が、ステップS209で初期鍵加算された16バイトの入力X2’と、ステップS210(あるいはステップS205)で計算された第1ラウンドのラウンド鍵RKとを入力として、サイドチャネル対策が施された状態における、AESの第1ラウンドの出力のSubBytesまで処理された第1〜3バイト、ShiftRowsまで処理された第4バイト、およびAESの第1ラウンドの第5〜16バイトを計算する(ステップS211)。このとき、第1計算部203は、ステップS202で第2生成部208が生成した変換表を利用してSubBytes処理を行い、ステップS202で第2生成部208が生成したランダムマスクまたは新たな計算表を利用してMixColumns処理を行う。
次に、暗号化鍵生成装置200は、ステップS211で計算された16バイトのデータのうちの第1〜4バイトと第5〜16バイトを連結して、16バイトの入力X3を生成する(ステップS212)。
次に、暗号化鍵生成装置200は、以下の処理を所定の回数繰り返す。例えば、非特許文献1のFig3に対応する処理を行う場合には繰り返し回数は2であり、非特許文献1のFig7に対応する処理を行う場合には繰り返し回数は9である。繰り返しの回数をNで表す。また、i=1,i=2,・・・,i=Nのように、繰り返しの状態をiで表す。この繰り返しの状態を表すiが、後述の定数加算において用いられる定数となる。
まず、暗号化鍵生成装置200は、定数i=1と設定する(ステップS213)。
次に、暗号化鍵生成装置200は、ステップS212で生成された16バイトの入力X3の第4バイトと、定数iの最下位バイトとの排他的論理和を計算(定数加算)する(ステップS214)。サイドチャネル対策として線形変換を用いた対策技術が適用される場合には、暗号化鍵生成装置200は、ステップS202で生成した線形変換fを用いて、f(i)を加算する。
次に、第2計算部204が、ステップS214で4バイト目に定数加算された入力X3の第1〜4バイトと、ステップS210(あるいはステップS205)で計算された第1ラウンドのラウンド鍵RKとを入力として、AESの第1ラウンドの出力の第1〜4バイトを計算し、この第1〜4バイトに、入力X3の第5〜16バイトを連結して、サイドチャネル対策が施された状態における、入力X3に対応するAESの第1ラウンドの出力を生成する(ステップS215)。このとき、第2計算部204は、ステップS202で第2生成部208が生成した変換表を利用してSubBytes処理を行い、ステップS202で第2生成部208が生成したランダムマスクまたは新たな計算表を利用してMixColumns処理を行う。
次に、第3計算部205が、ステップS215で生成されたAESの第1ラウンドの出力16バイトと、ステップS210(あるいはステップS205)で計算されたラウンド鍵RKとを入力として、AESの第2〜10ラウンドの処理を繰り返し、入力X3に対応するAESの暗号文(16バイト)を計算する(ステップS216)。このとき、第3計算部205は、ステップS202で第2生成部208が生成した変換表を利用してSubBytes処理を行い、ステップS202で第2生成部208が生成したランダムマスクまたは新たな計算表を利用してMixColumns処理を行う。なお、第3計算部205は、ステップS216においては、ランダムマスクや線形変換fによる対策処理を除去した暗号文を出力する。ここで出力される暗号文が、鍵情報PSKをもとに生成される暗号化鍵、もしくは、さらに多数の暗号化鍵を生成するための鍵情報KDKとなる。
その後、暗号化鍵生成装置200は、iがN未満かどうか判定する(ステップS217)。そして、iがN未満であれば(ステップS217:Yes)、iをi+1で置き換えて(ステップS218)ステップS214に戻り、ステップS214以降の処理を繰り返す。一方、iがNに達していれば(ステップS217:No)、一連の処理を終了する。
以上、具体的な例を挙げながら詳細に説明したように、本実施形態の暗号化鍵生成装置200は、一部分のみが異なる複数のデータブロックに対して同一の鍵情報を用いたAESの演算を行って複数の暗号化鍵を生成する際に、これら複数のデータブロックに対するAESの第1ラウンドの処理のうち、同一のバイト処理となる部分を共通化して第1計算部203で行う。そして、残りの部分(第2の部分)のバイト処理を第2計算部204で行う。したがって、本実施形態の暗号化鍵生成装置200によれば、第1実施形態の暗号化鍵生成装置100と同様に、複数の暗号化鍵を生成するためのトータルの処理量を削減することができ、複数の暗号化鍵を効率よく生成することができる。
また、本実施形態の暗号化鍵生成装置200は、ランダムマスクまたは線形変換fを用いたサイドチャネル対策を施した状態でAESの演算を行うようにしているので、サイドチャネル攻撃に対する安全性を向上させることができる。
なお、上記の説明では、サイドチャネル対策として、ランダムマスクを用いる対策技術と線形変換を用いる対策技術とのいずれか一方を適用するものとしたが、ランダムマスクを用いる対策技術と線形変換を用いる対策技術の双方を適用するようにしてもよい。ランダムマスクを用いる対策技術と線形変換を用いる対策技術の双方を適用すれば、鍵情報の推定をより困難にして、サイドチャネル攻撃に対する安全性をさらに向上させることができる。
以上、第1実施形態および第2実施形態について説明したが、これら実施形態の暗号化鍵生成装置は、通常のコンピュータを利用したハードウェア構成を採用し、コンピュータによって実行されるプログラムにより、第1計算部103,203、第2計算部104,204、第3計算部105,205、ラウンド鍵計算部106,206、第1生成部207、第2生成部208などの主要な機能を実現する構成とすることができる。
上述した暗号化鍵生成装置の主要な機能を実現するプログラムは、例えば、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)などのコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、上述した暗号化鍵生成装置の主要な機能を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上述した暗号化鍵生成装置の主要な機能を実現するプログラムを、インターネットなどのネットワーク経由で提供または配布するように構成してもよい。さらに、上述した暗号化鍵生成装置の主要な機能を実現するプログラムを、ROMなどに予め組み込んで提供するように構成してもよい。
上述した暗号化鍵生成装置の主要な機能を実現するプログラムは、各機能構成(第1計算部103,203、第2計算部104,204、第3計算部105,205、ラウンド鍵計算部106,206、第1生成部207、第2生成部208)に対応するコンポーネントを含むモジュール構成となっており、実際のハードウェアとしてはCPU(プロセッサ)が上記記憶媒体からプログラムを読み出して実行することにより上記各コンポーネントが主記憶装置上にロードされ、暗号化鍵生成装置の各機能構成が主記憶装置上に生成されるようになっている。
以上、具体的な例を挙げながら詳細に説明したように、実施形態の暗号化鍵生成装置によれば、複数の暗号化鍵を効率よく生成することができる。
なお、以上説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。上記の新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。上記の実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
100,200 暗号化鍵生成装置
103,203 第1計算部
104,204 第2計算部
105,205 第3計算部
207 第1生成部
208 第2生成部

Claims (4)

  1. 鍵情報に基づく暗号演算を行うことにより複数の暗号化鍵を生成する暗号化鍵生成装置であって、
    前記暗号演算は、所定のラウンド関数に基づくラウンド処理を規定ラウンド数繰り返すものであり、
    第1データの第1の部分に対して、前記暗号演算の第1ラウンドの処理を行うとともに、前記第1データの前記第1の部分以外に対して、前記暗号演算の第1ラウンドの処理の一部を行う第1計算部と、
    複数の第2データは、前記暗号演算の第1ラウンドの処理が終わった前記第1データの前記第1の部分と、前記第1データの前記第1の部分以外の少なくとも一部を変化させた第2の部分とを含み、
    前記第2の部分は、他の第2の部分とは少なくとも一部が異なり、
    各前記第2の部分に対して、前記暗号演算の第1ラウンドの処理のうち、前記第1計算部が実施していない処理を行う第2計算部と、
    前記暗号演算の第1ラウンドの処理が終わった複数の前記第2データに対して、前記暗号演算の第2ラウンド以降の処理を行う第3計算部と、を備えることを特徴とする暗号化鍵生成装置。
  2. 前記第1データは、入力データに対して前記暗号演算を行った結果のデータであることを特徴とする請求項1に記載の暗号化鍵生成装置。
  3. サイドチャネル対策に用いる乱数を生成する第1生成部と、
    前記乱数を用いて前記サイドチャネル対策を含む前記暗号演算を行うための情報を生成する第2生成部と、をさらに備え、
    前記第1計算部は、前記第2生成部が生成した前記情報を用いて、前記第1データの第1の部分に対して、前記暗号演算の第1ラウンドの処理を行うとともに、前記第1データの前記第1の部分以外に対して、前記暗号演算の第1ラウンドの処理の一部を行い、
    前記第2計算部は、前記第2生成部が生成した前記情報を用いて、各前記第2の部分に対して、前記暗号演算の第1ラウンドの処理のうち、前記第1計算部が実施していない処理を行い、
    前記第3計算部は、前記第2生成部が生成した前記情報を用いて、前記暗号演算の第2ラウンド以降の処理を行うことを特徴とする請求項1に記載の暗号化鍵生成装置。
  4. サイドチャネル対策に用いる線形変換の変換規則を生成する第1生成部と、
    前記線形変換の変換規則を用いて前記サイドチャネル対策を含む前記暗号演算を行うための情報を生成する第2生成部と、をさらに備え、
    前記第1計算部は、前記第2生成部が生成した前記情報を用いて、前記第1データの第1の部分に対して、前記暗号演算の第1ラウンドの処理を行うとともに、前記第1データの前記第1の部分以外に対して、前記暗号演算の第1ラウンドの処理の一部を行い、
    前記第2計算部は、前記第2生成部が生成した前記情報を用いて、各前記第2の部分に対して、前記暗号演算の第1ラウンドの処理のうち、前記第1計算部が実施していない処理を行い、
    前記第3計算部は、前記第2生成部が生成した前記情報を用いて、前記暗号演算の第2ラウンド以降の処理を行うことを特徴とする請求項1に記載の暗号化鍵生成装置。
JP2012058554A 2012-03-15 2012-03-15 暗号化鍵生成装置 Expired - Fee Related JP5612007B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012058554A JP5612007B2 (ja) 2012-03-15 2012-03-15 暗号化鍵生成装置
US13/788,456 US20130243191A1 (en) 2012-03-15 2013-03-07 Encryption key generating apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012058554A JP5612007B2 (ja) 2012-03-15 2012-03-15 暗号化鍵生成装置

Publications (2)

Publication Number Publication Date
JP2013190747A JP2013190747A (ja) 2013-09-26
JP5612007B2 true JP5612007B2 (ja) 2014-10-22

Family

ID=49157663

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012058554A Expired - Fee Related JP5612007B2 (ja) 2012-03-15 2012-03-15 暗号化鍵生成装置

Country Status (2)

Country Link
US (1) US20130243191A1 (ja)
JP (1) JP5612007B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11563566B2 (en) * 2014-10-27 2023-01-24 Micro Focus Llc Key splitting
JP6371197B2 (ja) * 2014-10-31 2018-08-08 株式会社東海理化電機製作所 暗号処理装置
ITUB20152708A1 (it) * 2015-07-31 2017-01-31 St Microelectronics Srl Procedimento per operare una crittografia con mascheratura di dati sensibili, apparato di crittografia e prodotto informatico corrispondente
JP6292195B2 (ja) * 2015-08-24 2018-03-14 富士電機株式会社 情報処理装置及び情報処理方法
AT517983B1 (de) * 2015-11-18 2018-11-15 Siemens Ag Oesterreich Schutz eines Computersystems vor Seitenkanalattacken
CN108964912B (zh) * 2018-10-18 2022-02-18 深信服科技股份有限公司 Psk生成方法、装置、用户设备、服务器和存储介质
US20240031140A1 (en) * 2022-07-22 2024-01-25 Intel Corporation Efficient low-overhead side-channel protection for polynomial multiplication in post-quantum encryption

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3679936B2 (ja) * 1998-11-27 2005-08-03 東芝ソリューション株式会社 暗復号装置及び記憶媒体
WO2001082524A1 (en) * 2000-04-20 2001-11-01 Matchett Noel D Cryptographic system for data encryption standard
JP3707412B2 (ja) * 2001-10-01 2005-10-19 株式会社デンソー 車載受信装置及び車両用ワイヤレスシステム
EP1661295B1 (en) * 2003-09-05 2013-03-27 Telecom Italia S.p.A. Secret-key-controlled reversible circuit and corresponding method of data processing
JP4823904B2 (ja) * 2005-03-31 2011-11-24 パナソニック株式会社 データ暗号化装置及びデータ暗号化方法
US8041032B2 (en) * 2005-08-19 2011-10-18 Cardiac Pacemakers, Inc. Symmetric key encryption system with synchronously updating expanded key
FR2893796B1 (fr) * 2005-11-21 2008-01-04 Atmel Corp Procede de protection par chiffrement
JP2007189659A (ja) * 2005-12-15 2007-07-26 Toshiba Corp 暗号化装置、暗号化方法及び暗号化プログラム
US8787565B2 (en) * 2007-08-20 2014-07-22 Intel Corporation Method and apparatus for generating an advanced encryption standard (AES) key schedule
JP2010245753A (ja) * 2009-04-03 2010-10-28 Nippon Telegr & Teleph Corp <Ntt> 暗号演算回路装置
FR2952773B1 (fr) * 2009-11-13 2012-07-20 Inst Telecom Telecom Paristech Circuit electronique de faible complexite protege par masquage personnalise
US8650408B2 (en) * 2010-09-08 2014-02-11 Xilinx, Inc. Protecting against differential power analysis attacks on decryption keys
JP5060606B2 (ja) * 2010-09-17 2012-10-31 株式会社東芝 暗号化装置

Also Published As

Publication number Publication date
US20130243191A1 (en) 2013-09-19
JP2013190747A (ja) 2013-09-26

Similar Documents

Publication Publication Date Title
JP5612007B2 (ja) 暗号化鍵生成装置
Benvenuto Galois field in cryptography
JP5711681B2 (ja) 暗号処理装置
CN113940028B (zh) 实现白盒密码的方法和装置
KR101187854B1 (ko) 보안성을 향상시키는 순열 데이터 변환
JP5704159B2 (ja) ブロック暗号化装置、ブロック復号装置、ブロック暗号化方法、ブロック復号方法及びプログラム
JP5682527B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
KR101324351B1 (ko) 암호 기반 메시지 인증 코드를 생성하는 방법
JP2015158665A (ja) 形態保存暗号化のための可変長ブロック暗号装置および方法
WO2014136386A1 (ja) タグ生成装置、タグ生成方法およびタグ生成プログラム
WO2013065241A1 (ja) インクリメンタルmacタグ生成装置、方法及びプログラム並びにメッセージ認証装置
US11463235B2 (en) Encryption device, encryption method, program, decryption device, and decryption method
Asaad et al. Advanced Encryption Standard Enhancement with Output Feedback Block Mode Operation
CN109714154B (zh) 一种代码体积困难白盒安全模型下的白盒密码算法的实现方法
Gruber et al. Persistent fault analysis of OCB, DEOXYS and COLM
US8891761B2 (en) Block encryption device, decryption device, encrypting method, decrypting method and program
Ali et al. Modified Blowfish Algorithm for Image Encryption using Multi Keys based on five Sboxes
Scripcariu et al. Extended des algorithm to galois fields
JP2019504343A (ja) 計算デバイス及び方法
Nandan et al. AES security improvement using hybrid approach for S-box design
JP6089664B2 (ja) 暗号処理装置と方法並びに暗号処理プログラム
KR102028192B1 (ko) 형태보존 암호화 방법
KR20220131002A (ko) Fpga 연산 시스템, 메모리 장치 및 fpga 연산 장치
Sumathy et al. Enhanced AES Algorithm for Strong Encryption
JP5818768B2 (ja) マスク生成装置、情報処理装置、及びその方法、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140416

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140619

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: 20140805

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140903

LAPS Cancellation because of no payment of annual fees