JP2007189659A - 暗号化装置、暗号化方法及び暗号化プログラム - Google Patents

暗号化装置、暗号化方法及び暗号化プログラム Download PDF

Info

Publication number
JP2007189659A
JP2007189659A JP2006215447A JP2006215447A JP2007189659A JP 2007189659 A JP2007189659 A JP 2007189659A JP 2006215447 A JP2006215447 A JP 2006215447A JP 2006215447 A JP2006215447 A JP 2006215447A JP 2007189659 A JP2007189659 A JP 2007189659A
Authority
JP
Japan
Prior art keywords
random number
plaintext block
mask processing
mask
block
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.)
Pending
Application number
JP2006215447A
Other languages
English (en)
Inventor
Yuichi Komano
雄一 駒野
Hideo Shimizu
秀夫 清水
Atsushi Shinpo
淳 新保
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 JP2006215447A priority Critical patent/JP2007189659A/ja
Priority to US11/523,609 priority patent/US20070140478A1/en
Publication of JP2007189659A publication Critical patent/JP2007189659A/ja
Pending legal-status Critical Current

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/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
    • 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
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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
    • H04L2209/046Masking or blinding of operations, operands or results of the operations
    • 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/08Randomization, e.g. dummy operations or using noise

Landscapes

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

Abstract

【課題】DPAのみならず高次DPAに対しても安全な暗号化装置、暗号化方法及び暗号
化プログラムを提供する。
【解決手段】平文ブロックから暗号文ブロックを生成する暗号化装置であって、複数の乱
数を発生する乱数発生器と、前記複数の乱数から1つのマスク用乱数をランダムに選択す
る選択器と、前記選択器により選択されたマスク用乱数を用いて平文ブロックに対しマス
ク処理を施すマスク処理部と、初期S箱を表す第一のテーブルを記憶する記憶部と、前記
選択器により選択されたマスク用乱数に基づいて、前記第一のテーブルを、変形S箱を表
す第二のテーブルに変換する変換器と、鍵情報に基づく拡大鍵を用いる第一の演算及び前
記第二のテーブルを用いる第二の演算を含む段関数により前記マスク処理後の平文ブロッ
クから暗号文ブロックを生成する暗号化部とを具備する。
【選択図】図1

Description

本発明は、電力解析に対して安全な秘密鍵ブロック暗号を用いる暗号化装置、暗号化方
法及び暗号化プログラムに関する。
DES(Data Encryption Standard)は、通信内容の秘匿など
を目的として広範に用いられている秘密鍵ブロック暗号である(例えば下記特許文献1参
照)。
近年、Paul KocherらによりDPA(Differential Power
Analysis,差分電力解析)が提案されている。DPAは、複数の平文ブロック
の暗号化を実行する際に暗号化装置が消費する電力を統計的手法により解析することで、
暗号化装置が秘密裏に保持する鍵情報を推測する解析手法である(例えば下記非特許文献
1参照)。
DPAへの対策としては、乱数で平文ブロックをマスク処理し、解析者が暗号化装置内
部で処理される中間データを予測できないようにすることで統計的解析を無効化すること
が知られている。しかしながら、観測された消費電力の複数のタイミングでの消費電力値
を利用することで乱数のマスクを施す対策を無効化し、暗号化装置が秘密裏に保持する鍵
情報を推測する高次DPA(Higher−Order DPA)がPaul Koche
rらにより報告されている。これは、暗号化装置内でマスク用の乱数を発生するタイミン
グと、暗号化処理で非線形演算が行われるタイミングとを利用することで、高次DPAに
より暗号化装置が秘密裏に保持する鍵情報を推定できるというものである。
伊藤らは、予め固定された複数のマスク値に対応する複数の変換テーブルを暗号化処理
ごとにランダムに選択することでDPAに対して安全な暗号化装置の構成法を与えている
(例えば下記特許文献2参照)。この伊藤らの暗号化装置では、外部から平文ブロックが
入力されると、乱数発生部がマスク選択用の乱数を発生する。このマスク選択用の乱数に
したがって、選択部はマスク記憶部及びテーブル記憶部の各々に予め記憶されている複数
のマスク値及び変換テーブルのうち、対応するマスク値と変換テーブルを選択する。入力
された平文ブロックに対し、マスク処理部は選択されたマスク値によりマスク処理を施す
。マスク処理が施された平文ブロックは、選択された変換テーブルを利用して、鍵情報に
依存する暗号文ブロックに変換される。
伊藤らの手法は、マスク用の乱数を発生させないため、上述した2箇所のタイミングを
利用した高次DPAを無効化することが可能である。
特開昭51−108701号公報 特開2002−366029公報 Paul Kocher,Joshua Jaffe, and Benjamin Jun"Differential Power Analysis" in Proceedings of Advances in Cryptology − CRYPTO‘99 Springer−Verlag,1999
しかしながら、特許文献2に記載の暗号化装置は、マスク値のビット(0と1)のバラ
ンスが悪いとDPAや高次DPAにより鍵の推定が可能であることが知られている。その
ため、予めバランスのよいマスク値を準備する必要がある。また、予めマスク値を固定し
ておくとリバースエンジニアリングなどによりマスク値が露呈した場合には、僅かなバラ
ンスの偏りにより鍵情報が推定される恐れもある。
本発明はこのような問題点に鑑みてなされたものであり、DPAのみならず高次DPA
に対しても安全な暗号化装置、暗号化方法及び暗号化プログラムを提供することを目的と
する。
上記目的を達成するために、本発明の暗号化装置は、平文ブロックから暗号文ブロック
を生成する暗号化装置であって、複数の乱数を発生する乱数発生手段と、前記複数の乱数
から1つのマスク用乱数をランダムに選択する選択手段と、前記選択手段により選択され
たマスク用乱数を用いて平文ブロックに対しマスク処理を施すマスク処理手段と、初期S
箱を表す第一のテーブルを記憶する記憶手段と、前記選択手段により選択されたマスク用
乱数に基づいて、前記第一のテーブルを、変形S箱を表す第二のテーブルに変換する変換
手段と、鍵情報に基づく拡大鍵を用いる第一の演算及び前記第二のテーブルを用いる第二
の演算を含む段関数により前記マスク処理後の平文ブロックから暗号文ブロックを生成す
る暗号化手段と、を具備することを特徴とする。
また、本発明の暗号化装置は、平文ブロックから暗号文ブロックを生成する暗号化装置
であって、複数の乱数を発生する乱数発生手段と、平文ブロックに対し前記複数の乱数そ
れぞれを用いてマスク処理を施すことにより複数のマスク処理後平文ブロックをそれぞれ
得る複数のマスク処理手段と、初期S箱を表す第一のテーブルを記憶する記憶手段と、前
記複数の乱数それぞれで前記第一のテーブルを変換することで、変形S箱を表す複数の変
形テーブルを得る変換手段と、前記複数のマスク処理後平文ブロックの中から1つをラン
ダムに選択すると共に、この選択に応じて前記複数の変形テーブルの中から1つを選択す
る選択手段と、鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記変形テーブ
ルを用いる第二の演算を含む段関数により、選択された前記マスク処理後平文ブロックか
ら、暗号文ブロックを生成する暗号化手段と、を具備することを特徴とする。
また、本発明の暗号化装置は、平文ブロックから暗号文ブロックを生成する暗号化装置
であって、第一の固定値及び第2の固定値を記憶する第一の記憶手段と、初期S箱を表す
テーブルを記憶する第二の記憶手段と、前記第一の固定値に基づいて前記初期S箱を変換
してなる第一の変形S箱を表す第一のテーブル及び前記第二の固定値に基づいて前記初期
S箱を変換してなる第二の変形S箱を表す第二のテーブルを記憶する第三の記憶手段と、
乱数を発生する乱数発生手段と、前記第一の固定値を用いて平文ブロックに対しマスク処
理を施すことにより第一のマスク処理後平文ブロックを得る第一のマスク処理手段と、前
記第二の固定値を用いて前記平文ブロックに対しマスク処理を施すことにより第二のマス
ク処理後平文ブロックを得る第二のマスク処理手段と、前記乱数を用いて前記平文ブロッ
クに対しマスク処理を施すことにより第三のマスク処理後平文ブロックを得る第三のマス
ク処理手段と、前記乱数に基づいて、前記初期S箱を表すテーブルを、第三の変形S箱を
表す第三のテーブルに変換する変換手段と、前記第一のマスク処理後平文ブロック、前記
第二のマスク処理後平文ブロック、及び前記第三のマスク処理後平文ブロックのいずれか
をランダムに選択すると共に、この選択に応じて前記第一のテーブル、第二のテーブル、
及び第三のテーブルのいずれかを選択する選択手段と、鍵情報に基づく拡大鍵を用いる第
一の演算及び選択された前記第一のテーブル、第二のテーブル、及び前記第三のテーブル
のいずれかを用いる第二の演算を含む段関数により、選択された前記第一のマスク処理後
平文ブロック、第二のマスク処理後平文ブロック、及び第三のマスク処理後平文ブロック
のいずれかから、暗号文ブロックを生成する暗号化手段と、を具備することを特徴とする
また、本発明の暗号化装置は、平文ブロックから暗号文ブロックを生成する暗号化装置
であって、第一の乱数、第二の乱数及び第三の乱数を発生する乱数発生手段と、平文ブロ
ックに対し前記第一の乱数を用いて第一の演算を行うことでマスク処理を施し、第一マス
ク処理後平文ブロックを得る第一のマスク処理手段と、前記平文ブロックに対し前記第二
の乱数を用いて第二の演算を行うことでマスク処理を施し、第二マスク処理後平文ブロッ
クを得る第二のマスク処理手段と、前記第一の乱数及び前記第三の乱数に基づいて第一の
データを算出し、前記第二の乱数及び前記第三の乱数に基づいて第二のデータを算出する
演算手段と、前記第一マスク処理後平文ブロックと前記第二マスク処理後平文ブロックの
どちらかをランダムに選択し、この選択に応じて前記第一のデータと第二のデータのどち
らかを選択する選択手段と、鍵情報に基づく拡大鍵を用いた第一の暗号化演算及び前記第
一のデータ又は前記第二のデータのどちらかを用いた第二の暗号化演算を含む段関数によ
り、前記第一マスク処理後平文ブロック又は第二マスク処理後平文ブロックから暗号文ブ
ロックを生成する暗号化部と、を具備することを特徴とする。
また、本発明の暗号化方法は、平文ブロックから暗号文ブロックを生成する暗号化方法
であって、複数の乱数を乱数発生手段が発生するステップと、前記複数の乱数から1つの
マスク用乱数をランダムに選択する選択ステップと、選択された前記マスク用乱数を用い
て平文ブロックに対しマスク処理を施すステップと、初期S箱を表す第一のテーブルを記
憶するステップと、選択された前記マスク用乱数に基づいて、前記第一のテーブルを、変
形S箱を表す第二のテーブルに変換するステップと、鍵情報に基づく拡大鍵を用いる第一
の演算及び前記第二のテーブルを用いる第二の演算を含む段関数により前記マスク処理後
の平文ブロックから暗号文ブロックを生成するステップと、を具備することを特徴とする
また、本発明の暗号化方法は、平文ブロックから暗号文ブロックを生成する暗号化方法
であって、複数の乱数を乱数発生手段が発生するステップと、平文ブロックに対し、前記
複数の乱数それぞれを用いてマスク処理を施すことにより複数のマスク処理後平文ブロッ
クをそれぞれ得る複数のマスク処理ステップと、初期S箱を表す第一のテーブルを記憶す
るステップと、前記複数の乱数に基づいて、前記第一のテーブルを、変形S箱を表す複数
の変形テーブルにそれぞれ変換するステップと、前記複数のマスク処理後平文ブロックの
中から1つをランダムに選択すると共に、この選択に応じて前記複数の変形テーブルの中
から1つを選択する選択ステップと、鍵情報に基づく拡大鍵を用いる第一の演算及び選択
された前記変形テーブルを用いる第二の演算を含む段関数により、選択された前記マスク
処理後平文ブロックから、暗号文ブロックを生成するステップと、を具備することを特徴
とする。
また、本発明の暗号化方法は、平文ブロックから暗号文ブロックを生成する暗号化方法
であって、第一の固定値及び第2の固定値を記憶するステップと、初期S箱を表すテーブ
ルを記憶するステップと、前記第一の固定値に基づいて前記初期S箱を変換してなる第一
の変形S箱を表す第一のテーブル及び前記第二の固定値に基づいて前記初期S箱を変換し
てなる第二の変形S箱を表す第二のテーブルを記憶するステップと、乱数発生手段が乱数
を発生するステップと、前記第一の固定値を用いて平文ブロックに対しマスク処理を施す
ことにより第一のマスク処理後平文ブロックを得る第一のマスク処理ステップと、前記第
二の固定値を用いて前記平文ブロックに対しマスク処理を施すことにより第二のマスク処
理後平文ブロックを得る第二のマスク処理ステップと、前記乱数を用いて前記平文ブロッ
クに対しマスク処理を施すことにより第三のマスク処理後平文ブロックを得る第三のマス
ク処理ステップと、前記乱数に基づいて、前記初期S箱を表すテーブルを、第三の変形S
箱を表す第三のテーブルに変換するステップと、前記第一のマスク処理後平文ブロック、
前記第二のマスク処理後平文ブロック、及び前記第三のマスク処理後平文ブロックのいず
れかをランダムに選択すると共に、この選択に応じて前記第一のテーブル、第二のテーブ
ル、及び第三のテーブルのいずれかを選択する選択ステップと、鍵情報に基づく拡大鍵を
用いる第一の演算及び選択された前記第一のテーブル、第二のテーブル、及び前記第三の
テーブルのいずれかを用いる第二の演算を含む段関数により、選択された前記第一のマス
ク処理後平文ブロック、第二のマスク処理後平文ブロック、及び第三のマスク処理後平文
ブロックのいずれかから、暗号文ブロックを生成するステップと、を具備することを特徴
とする暗号化方法。
また、本発明の暗号化方法は、平文ブロックから暗号文ブロックを生成する暗号化方法
であって、乱数発生手段が第一の乱数、第二の乱数及び第三の乱数を発生するステップと
、平文ブロックに対し、前記第一の乱数を用いて第一の演算を行うことでマスク処理を施
し、第一マスク処理後平文ブロックを得る第一のマスク処理ステップと、前記平文ブロッ
クに対し、前記第二の乱数を用いて第二の演算を行うことでマスク処理を施し、第二マス
ク処理後平文ブロックを得る第二のマスク処理ステップと、前記第一の乱数及び前記第三
の乱数に基づいて第一のデータを算出し、前記第二の乱数及び前記第三の乱数に基づいて
第二のデータを算出する演算ステップと、前記第一マスク処理後平文ブロックと前記第二
マスク処理後平文ブロックのどちらかをランダムに選択し、この選択に応じて前記第一の
データと前記第二のデータのどちらかを選択する選択ステップと、鍵情報に基づく拡大鍵
を用いた第一の暗号化演算及び前記第一のデータ又は前記第二のデータのいずれか一方を
用いた第二の暗号化演算を含む段関数により、前記第一マスク処理後平文ブロック又は第
二マスク処理後平文ブロックから暗号文ブロックを生成するステップと、を具備すること
を特徴とする。
また、本発明の暗号化プログラムは、コンピュータに平文ブロックから暗号文ブロック
を生成させる暗号化プログラムであって、複数の乱数を乱数発生手段に発生させる乱数発
生機能と、前記複数の乱数から1つのマスク用乱数をランダムに選択する選択機能と、選
択された前記マスク用乱数を用いて平文ブロックに対しマスク処理を施すマスク処理機能
と、初期S箱を表す第一のテーブルを記憶する記憶機能と、選択された前記マスク用乱数
に基づいて、前記第一のテーブルを、変形S箱を表す第二のテーブルに変換する変換機能
と、鍵情報に基づく拡大鍵を用いる第一の演算及び前記第二のテーブルを用いる第二の演
算を含む段関数により前記マスク処理後の平文ブロックから暗号文ブロックを生成する暗
号化機能とをコンピュータに実現させるための暗号化プログラムである。
また、本発明の暗号化プログラムは、コンピュータに平文ブロックから暗号文ブロック
を生成させる暗号化プログラムであって、複数の乱数を乱数発生手段に発生させる乱数発
生機能と、平文ブロックに対し前記複数の乱数それぞれを用いてマスク処理を施すことに
より複数のマスク処理後平文ブロックを得るマスク処理機能と、初期S箱を表す第一のテ
ーブルを記憶する記憶機能と、前記複数の乱数それぞれに基づいて、前記第一のテーブル
を変換することで、変形S箱を表す複数のテーブル得る変換機能と、前記複数のマスク処
理後平文ブロックの中から1つをランダムに選択すると共に、この選択に応じて前記複数
の変形テーブルの中から1つを選択する選択機能と、鍵情報に基づく拡大鍵を用いる第一
の演算及び選択された前記変形テーブルを用いる第二の演算を含む段関数により、選択さ
れた前記マスク処理後平文ブロックから、暗号文ブロックを生成する生成機能とをコンピ
ュータに実現させるための暗号化プログラムである。
また、本発明の暗号化プログラムは、コンピュータに平文ブロックから暗号文ブロック
を生成させる暗号化プログラムであって、第一の固定値及び第2の固定値を記憶する第一
の記憶機能と、初期S箱を表すテーブルを記憶する第二の記憶機能と、前記第一の固定値
に基づいて前記初期S箱を変換してなる第一の変形S箱を表す第一のテーブル及び前記第
二の固定値に基づいて前記初期S箱を変換してなる第二の変形S箱を表す第二のテーブル
を記憶する第三の記憶機能と、乱数発生手段に乱数を発生させる乱数発生機能と、前記第
一の固定値を用いて平文ブロックに対しマスク処理を施すことにより第一のマスク処理後
平文ブロックを得る第一のマスク処理機能と、前記第二の固定値を用いて前記平文ブロッ
クに対しマスク処理を施すことにより第二のマスク処理後平文ブロックを得る第二のマス
ク処理機能と、前記乱数を用いて前記平文ブロックに対しマスク処理を施すことにより第
三のマスク処理後平文ブロックを得る第三のマスク処理機能と、前記乱数に基づいて、前
記初期S箱を表すテーブルを、第三の変形S箱を表す第三のテーブルに変換する変換機能
と、前記第一のマスク処理後平文ブロック、前記第二のマスク処理後平文ブロック、及び
前記第三のマスク処理後平文ブロックのいずれかをランダムに選択すると共に、この選択
に応じて前記第一のテーブル、第二のテーブル、及び第三のテーブルのいずれかを選択す
る選択機能と、鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記第一のテー
ブル、第二のテーブル、及び前記第三のテーブルのいずれかを用いる第二の演算を含む段
関数により、選択された前記第一のマスク処理後平文ブロック、第二のマスク処理後平文
ブロック、及び第三のマスク処理後平文ブロックのいずれかから、暗号文ブロックを生成
する暗号化機能とをコンピュータに実現させるための暗号化プログラムである。
また、本発明の暗号化プログラムは、コンピュータに平文ブロックから暗号文ブロック
を生成させる暗号化プログラムであって、乱数発生手段に第一の乱数、第二の乱数及び第
三の乱数を発生させる乱数発生機能と、平文ブロックに対し、前記第一の乱数を用いて第
一の演算を行うことでマスク処理を施し、第一マスク処理後平文ブロックを得る第一のマ
スク処理機能と、前記平文ブロックに対し、前記第二の乱数を用いて第二の演算を行うこ
とでマスク処理を施し、第二マスク処理後平文ブロックを得る第二のマスク処理機能と、
前記第一の乱数及び前記第三の乱数に基づいて第一のデータを算出し、前記第二の乱数及
び前記第三の乱数に基づいて第二のデータを算出する演算機能と、前記第一マスク処理後
平文ブロックと前記第二マスク処理後平文ブロックのどちらかをランダムに選択し、この
選択に応じて前記第一のデータと前記第二のデータのどちらかを選択する選択機能と、鍵
情報に基づく拡大鍵を用いた第一の暗号化演算、及び前記第一のデータ又は前記第二のデ
ータのどちらかを用いた第二の暗号化演算を含む段関数により、前記第一マスク処理後平
文ブロック又は第二マスク処理後平文ブロックから暗号文ブロックを生成する暗号化機能
と、をコンピュータに実現させることを特徴とする暗号化プログラムである。
本発明によれば、DPAのみならず高次DPAに対しても安全な暗号化装置、暗号化方
法及び暗号化プログラムを提供できる。
以下、本発明の実施形態を、図面を参照して説明する。
(第一実施形態)
第一実施形態では、本発明をDES(Data Encryption Standar
d)に適用した例を説明する。
図1は本発明が適用される、暗号アルゴリズムDESの構成を示す図である。
暗号化装置内部に秘密裏に保持される鍵情報208から鍵スケジュール部202により
計算される拡大鍵208を用いて、平文ブロック(64ビット)203が攪拌される。こ
れにより暗号文ブロック207が計算される。具体的には、平文ブロック203は初期転
置204が施された後、左側(上位)及び右側(下位)の32ビットずつのデータに分割
される。分割された左側の32ビットのデータと右側の32ビットのデータは、それぞれ
後述する段関数205の入力となる。段関数205の出力は、左側と右側の32ビットが
入れ替えられた後、次の段関数の入力となる。このような段関数を16段繰り返した後、
その結果に最終転置206を施すことで暗号化処理が完了し、暗号文ブロック207が得
られる。
図2は段関数の詳細回路図である。段関数317は、転置E311、排他的論理和31
3、複数のS箱(S1,S2,...,S8)、転置P315及び排他的論理和316と
で構成される。
右側32ビットのデータを拡大転置E311により48ビットに拡大し、その結果を排
他的論理和313に出力する。排他的論理和313は、転置E311の出力と、拡大鍵3
12の排他的論理和を出力する。排他的論理和313の出力48ビットは6ビットのデー
タに等分され、各S箱の入力となる。
各S箱はテーブルで構成され、64エントリの6ビット入力に対してそれぞれ4ビット
データを出力する。例えばS箱(S1)314について、6ビット入力の左端を第1ビッ
ト、右端を第6ビットとすると、第1ビットと第6ビットを2進数とみなした数字で図3
に示すS箱の表(S1の表)の行を指定する。図3に示すS1の表の行番号は上から0,
1,2,3行と数える。次に、残りの4ビットを2進数とみなした数字で列の番号を指定
する。列番号も左端から0,1,2,3,…15列と数える。例えば、S1の入力を「0
11011」とすると、行番号は「01」すなわち、図3において上から2番目の行とな
る。次に、列番号は「1101」すなわち「13」(左から14番目の列)なので表の値
は「5」となる。従って、S1の出力はこの2進表現である「0101」となる。なお、
図3では、S箱の出力を行と列で示したが、一般には、0から63までの入力に対応した
表として構成される。各S箱の出力を結合した32ビットのデータは、転置P315によ
りビット転置操作が行われ、その結果が排他的論理和316に出力される。排他的論理和
316は左側32ビットのデータと転置P315の出力との排他的論理和を出力する。
図4は本発明の第一実施形態に係る暗号化装置の概略構成を示すブロック図、図5は同
装置の詳細構成を示す図である。
第一実施形態に係る暗号化装置は、入出力部501、制御部502、演算器503、乱
数発生器504、選択器505、ROM(Read Only Memory)506及び
RAM(Random Access Memory)507を有している。
入出力部501は、外部から平文ブロック(64ビット)を入力として受け付け、演算
結果である暗号文ブロック(64ビット)を出力する。制御部502はクロック信号を発
生し、暗号化装置の動作を制御する。演算器503は、入力(命令とデータ)に応じて演
算を行う部分であり、加算や排他的論理和などを実行する。乱数発生器504はマスク用
乱数及び選択用乱数を発生する。選択器505は、乱数発生器504が発生した選択用乱
数に基づいて、乱数発生器504が発生した複数のマスク用乱数と、マスク用乱数に対応
して変形された複数のS箱からそれぞれ1つを選択する。ROM506には、命令コード
、初期転置、拡大転置、S箱、段関数で施す転置、最終転置、鍵情報、及び鍵スケジュー
ルを施すために必要な情報などが記憶されている。RAM507は、乱数発生器504に
より発生された乱数、変形されたS箱、及び演算過程で得られるデータなどを保存するメ
モリである。
Mehdi−Laurent Akkarらは、暗号化装置の安全性を向上させるため
に、各段で異なるマスク用乱数に対応するS箱を用意する方法を提案している(例えば、
参考文献「Mehdi−Laurent Akkar,Reigis Bevan,and
Louis Goubin,“Two Power Analysis Attacks a
gainst One−Mask Methods” Fast Sftware Encr
yption 2004,Springer−Verlag,2004」を参照)。第一
実施形態はMehdi−Laurent Akkarらの手法を利用することで安全性を
より向上することが可能であるが、説明は省略する。
図5を参照しながら、第一実施形態に係る暗号化装置の動作を説明する。
入出力部501が平文ブロック(64ビット)601を受け付けると、乱数発生器50
4がマスク用乱数602a及び602b(いずれも64ビット)と選択用乱数603(1
ビット)とを発生する。選択器505は選択用乱数603に基づいてマスク用乱数602
aと602bから1つを選択処理604する。
今、例えばマスク用乱数602aが選択処理604において選択されたとする。演算器
(変換器)503は、ROM506に記憶されているS箱をマスク用乱数602aに基づ
いて変形S箱に変換する。具体的には、まずマスク用乱数602aに初期転置を施した後
、これを左側(上位)の32ビットと右側(下位)の32ビットとに分割する。ここで、
右側の32ビットを段関数の拡大転置により48ビットに拡大したのち、これを各S箱の
入力に対応するmi1,mi2,...,mi8(各mijは6ビット)に分割する。一
方、左側の32ビットは、段関数の転置を逆向きに施し、各S箱の出力に対応するmo1
,mo2,...,mo8(各mojは4ビット)に分割する。ROM506に記憶され
ているS箱(初期S箱)をSjとあらわし、マスク用乱数に依存して変形されたS箱(変
形S箱)をMSjとあらわすことにする(但し、j=1,2,...,8)。
MSjは、入力i(6ビット)に対して、iとmijの排他的論理和を入力とするSj
からの出力(4ビット)とmoj(4ビット)との排他的論理和を出力とする。このよう
なMSjは例えばテーブルとしてRAM507に記憶され、段関数に供給される。
一方、選択処理604においてマスク用乱数602aが選択されると、演算器503は
このマスク用乱数602aと平文ブロック601との排他的論理和演算605を実行する
。これにより得られたデータ(64ビット)は、初期転置606が施された後、左側(上
位)と右側(下位)の32ビットずつに分割され、S箱としてMSjを利用した段関数6
07の入力とされる。段関数の構成は、SjがMSj(j=1,2,...,8)に置き
換わる他は図2に示したものと同一である。
段関数の計算が16回繰り返され、最終転置608が施された後、マスク用乱数602
aと最終転置608の出力結果との排他的論理和演算609が実行され、これにより暗号
文ブロック610が得られ、入出力部501から出力される。
以上説明した第一実施形態に係る暗号化装置は、ビットのバランスのよいマスク値を予
め設計するのではなく、乱数発生器504が発生する乱数を利用することで統計的にビッ
トのバランスを整えるようにしたものである。このような第一実施形態に係る暗号化装置
は、マスク値のビットのバランスを考慮しなくてもよいため設計が容易である。また、リ
バースエンジニアリング等によりマスク値の情報が漏洩することもないため安全性を向上
できる。そして、乱数発生器504が発生する複数の乱数の中から1つをマスク値として
選択するため、使用されるマスク用乱数の発生のタイミングが暗号化処理ごとに異なり、
高次DPAによる鍵情報の推定を困難化することができる。
(第一実施形態の変形例)
第一実施形態では、選択用乱数として乱数発生器504が1ビットの乱数を発生するも
のとして説明したが、発生する乱数が固定長であって、1ビットの乱数を発生できない実
装が考えられる。この場合、乱数の発生処理に時間を要してしまう。第一実施形態の変形
例は、生成された2つのマスク用乱数のうち、いずれか所定のマスク用乱数(例えば最初
に生成されたマスク用乱数602a)の特定ビット(例えば最下位ビット)を選択用変数
とする。この選択用変数の値も乱数であり、生成された2つのマスク用乱数のうちのどち
らかがこの値により選択される。この変形例によれば、乱数発生処理の回数を1回削減す
ることが可能である。
(第二実施形態)
図6は本発明の第二実施形態に係る暗号化装置の概略構成を示すブロック図、図7は同
装置の詳細構成を示す図である。なお、第二実施形態でも、本発明をDES(Data
Encryption Standard)に適用した例を説明する。
第二実施形態に係る暗号化装置は、入出力部701、制御部702、演算器703aと
703b、乱数発生器704、選択器705、ROM(Read Only Memory
)706及びRAM(Random Access Memory)707により構成され
る。
入出力部701は、外部から平文ブロック(64ビット)を入力として受け付け、演算
結果である暗号文ブロック(64ビット)を出力する。制御部702はクロック信号を発
生し、暗号化装置の動作を制御する。演算器703a及び703bは、入力(命令とデー
タ)に応じて演算を行う部分であり、加算や排他的論理和などを実行する。乱数発生器7
04はマスク用乱数及び選択用乱数を発生する。選択器705は、演算器703a及び7
03bにより計算された平文ブロックとマスク用乱数との排他的論理和の結果からいずれ
か1つを選択し、2つのマスク用乱数に対応して変形された2つの変形S箱からいずれか
1つを選択する。ROM706には、命令コード、初期転置、拡大転置、S箱、段関数で
施す転置、最終転置、鍵情報、及び鍵スケジュールを施すために必要な情報などが記憶さ
れている。RAM707は、乱数発生器704により発生された乱数、変形されたS箱、
及び演算過程で得られるデータなどを保存するメモリである。
第一実施形態と同様に、第二実施形態もMehdi−Laurent Akkarらの
手法を利用することで安全性をより向上することが可能であるが、説明は省略する。
図7を参照しながら、第二実施形態に係る暗号化装置の動作を説明する。
入出力部701が平文ブロック(64ビット)を受け付けると、乱数発生器704がマ
スク用乱数802a及び802b(いずれも64ビット)と選択用乱数803(1ビット
)とを発生する。演算器703a及び703bは平文ブロック(平文ブロック801aと
平文ブロック801bは同一のデータ)とマスク用乱数802a及び802bとを入力と
して受け付け、同一クロックで排他的論理和演算804a及び804bをそれぞれ実行す
る。
一方、2つのマスク用乱数802a及び802bのそれぞれに対応して、演算器(変換
器)703a及び703bがROM706に記憶されているS箱を2つの変形S箱に変換
する。変換規則は第一実施形態と同様であるため、説明は省略する。これにより得られた
2つの変形S箱すなわちMSajとMSbj(j=1,2,...,8)は、テーブルと
してRAM707に記憶される。
選択器705は選択用乱数803に基づいて、マスク用乱数でマスク処理が施された2
つのデータから1つを選択処理805する。また、選択器705は選択用乱数803に基
づいて、RAM707に記憶されている変形されたS箱(MSa1,MSa2,...,
MSa8)と(MSb1,MSb2,...,MSb8)から1組を選択処理806する
以上の処理が終了したら、選択処理805により選択されたマスク処理後の平文ブロッ
ク(64ビット)に対し初期転置807が施された後、その処理結果は左側(上位)と右
側(下位)の32ビットずつに分割され、S箱としてMSajあるいはMSbjが供給さ
れた段関数808に入力される。段関数の構成は、SjがMSajあるいはMSbj(j
=1,2,...,8)のうち選択処理805により選択された変形S箱に置き換わる他
は図2に示したものと同一である。
段関数の計算が16回繰り返された後、その結果に最終転置809が施される。演算器
703a及び703bは、最終転置809の出力(810a及び810bには同一のデー
タが入力される)とマスク用乱数802a及び802bとを入力として受け付け、同一ク
ロックで排他的論理和演算810a及び810bをそれぞれ実行する。これらの結果は選
択器705に入力される。選択器705は、選択用乱数803にしたがって排他的論理和
810a及び810bの出力のうちから1つを選択処理811する。これにより暗号文ブ
ロック812が求まり、入出力部701から出力される。
なお、ここでは2つのマスク用乱数を用いた例を説明したが、2つ以上のマスク用乱数
を用いてもよい。
以上説明した第二実施形態に係る暗号化装置は、平文ブロックにマスク処理を施す前に
マスク用乱数を選択するのではなく、複数(実施形態では2つ)のマスク用乱数について
マスク処理を並列に実行した結果からいずれかを選択する。これにより、暗号化装置内で
マスク処理されるデータと消費電力との相関を減らすことができ、DPAや高次DPAの
ように消費電力を利用した鍵情報の推測を困難化することができる。
(第二実施形態の変形例)
本発明の第二実施形態においても、第一実施形態と同様の変形例が考えられる。すなわ
ち、選択用変数としてマスク用乱数802aの最下位ビットを用いることで乱数発生処理
の回数を1回削減することが可能である。
(第三実施形態)
図8は本発明の第三実施形態に係る暗号化装置の概略構成を示すブロック図、図9は同
装置の詳細構成を示す図である。第三実施形態でも、本発明をDES(Data Enc
ryption Standard)に適用した例を説明する。
第三実施形態に係る暗号化装置は、入出力部901、制御部902、演算器903a、
903bと903c、乱数発生器904、選択器905、ROM(Read Only M
emory)906及びRAM(Random Access Memory)907によ
り構成される。
入出力部901は、外部から平文ブロック(64ビット)を入力として受け付け、演算
結果である暗号文ブロック(64ビット)を出力する。制御部902はクロック信号を発
生し、暗号化装置の動作を制御する。演算器903a、903b、及び903cは、入力
(命令とデータ)に応じて演算を行う部分であり、加算や排他的論理和などを実行する。
乱数発生器904はマスク用乱数及び選択用乱数を発生する。選択器905は、演算器9
03a、903b、及び903cにより計算された平文ブロックとマスク用変数との排他
的論理和の結果からいずれか1つを選択し、マスク用変数に対応して変形された複数(3
つ)の変形S箱からいずれか1つを選択する。ROM906には、命令コード、初期転置
、拡大転置、S箱、段関数で施す転置、最終転置、鍵情報、鍵スケジュールを施すために
必要な情報、2つのマスク用変数(64ビット固定値)、及び2つのマスク用変数に対応
する、変形されたS箱などが記憶されている。RAM907は、乱数発生器904により
発生された乱数、変形されたS箱、及び演算過程で得られるデータなどを保存するメモリ
である。
第一実施形態と同様に、第三実施形態もMehdi−Laurent Akkarらの
手法を利用することで安全性をより向上することが可能であるが、説明は省略する。
図9を参照しながら、第三実施形態に係る暗号化装置の動作を説明する。
第三実施形態に係る暗号化装置において、マスク用変数1002a及びマスク用変数1
002bのそれぞれには予め固定値が代入され、ROM906に記憶されている。マスク
用変数1002a及びマスク用変数1002bは、安全性を向上させるため互いに反転し
たビット列となっていることが望ましい。例えばマスク用変数1002aとしては010
1・・・01(64ビット)とし、マスク用変数1002bとしては1010・・・10
(64ビット)としてROM906に記憶する。それぞれのマスク用変数に対応する変形
S箱(MSa1,MSa2,...,MSa8)及び(MSb1,MSb2,...,M
Sb8)は第一実施形態と同様に計算してROM906に記憶しておく。
入出力部901が平文ブロック(64ビット)を受け付けると、乱数発生器904がマ
スク用乱数(64ビット)と選択用乱数(2ビット)を発生する。マスク用乱数はマスク
用変数1002cに代入される。演算器903a、903b、及び903cは平文ブロッ
ク(平文ブロック1001a、平文ブロック1001bと平文ブロック1001cは同一
のデータ)とマスク用変数1002a、1002b、及び1002cを入力として受け付
け、同一のクロックで排他的論理和演算1004a、1004b、及び1004cをそれ
ぞれ実行する。
一方、マスク用乱数1002cに対応して、ROM906に記憶されているS箱を演算
器903cにおいて変形S箱に変換する。変換規則は第一実施形態と同様であるため、説
明は省略する。変換された変形S箱すなわちMScj(j=1,2,...,8)は、テ
ーブルとしてRAM907に記憶される。
選択器905は選択用乱数1003に基づいて、マスク用変数でマスク処理が施された
3つのデータから1つを選択処理1005する。また、選択器905は選択用乱数100
3に基づいて、ROM906とRAM907に記憶されている変形S箱(MSa1,MS
a2,...,MSa8),(MSb1,MSb2,...,MSb8)、及び(MSc
1,MSc2,...,MSc8)から1組を選択処理1006する。
以上の処理が終了したら、選択処理1005において選択された、マスク処理が施され
た平文ブロック(64ビット)に対し初期転置1007が施される。その結果は、左側(
上位)と右側(下位)の32ビットずつに分割され、S箱としてMSaj,MSbjある
いはMScjが供給された段関数1008に入力される。段関数の構成は、SjがMSa
j,MSbjあるいはMScj(j=1,2,...,8)のうち選択処理1005によ
り選択された変形S箱に置き換わる他は図2のものと同一である。
段関数の計算が16回繰り返された後、その結果に対して最終転置1009が施される
。演算器1003a,1003b、及び1003cは、最終転置1009の出力(101
0a,1010bと1010cには同一のデータが入力される)とマスク用変数1002
a,1002b、及び1002cを入力として受け付け、同一クロックで排他的論理和演
算1010a、1010b、及び1010cをそれぞれ実行する。選択器905は、選択
用乱数1003にしたがって排他的論理和1010a,1010b、及び1010cの出
力のうちから1つを選択処理1011する。これにより暗号文ブロック1020が得られ
、入出力部901から出力される。
以上説明した第三実施形態に係る暗号化装置では、マスク用乱数として1つの乱数を発
生するのみであり、乱数発生処理の回数を削減することが可能である。また、この乱数と
予め固定された2つのマスク値との計3つをマスク用変数として、上記第二実施形態に係
る暗号化装置と同様の処理を行うようにしたものでり、第二実施形態と同様の効果を得ら
れる。
(第三実施形態の変形例)
第三実施形態においても、第一実施形態と同様の問題が考えられる。第三実施形態の変
形例として、選択用変数としてマスク用変数1002cの下位2ビットに着目し、下位2
ビットが00の場合はマスク変数1002aを使用し、01の場合はマスク変数1002
bを使用し、10と11の場合はマスク変数1002cを使用することで乱数発生処理の
回数を1回削減することが可能である。
(第四実施形態)
第四実施形態では、本発明をAES(Advanced Encryption St
andard)に適用した例を説明するが、本発明をDESに適用してもよい。
図10は、本発明が適用される暗号アルゴリズムAESの構成を示す図である。
鍵スケジュール部1103が、暗号化装置内部に秘密裏に保持されている鍵情報110
2から拡大鍵を計算する。次に、各段関数にてこの拡大鍵を用いて平文ブロック1101
が攪拌され、結果、暗号文ブロック1104が計算される。具体的には、平文ブロック1
101は、鍵スケジュール部によって計算された拡大鍵を用いて鍵加算1105が施され
た後、段関数1102に入力される。段関数1120に入力されたデータは、SubBy
te1106、ShiftRow1107、MixColumn1108、鍵加算110
9の順に処理が施され、次の段関数の入力となる。このような段関数を9段繰り返した後
、SubByte1110、ShiftRow1111、鍵加算1112を施すことで暗
号化処理が完了し、暗号文ブロック1104が得られる。このSubByte1110、
ShiftRow1111、鍵加算1112は、第10段目の段関数と呼ばれる。
SubByte、ShiftRow,MixColumnでは、128ビットのデータ
を8ビットごとの16個のデータブロックとして表現して処理を行う。
SubByteでは、16個のデータブロックそれぞれについて以下を実行する。まず
、各データブロックの8ビットのデータを、
b(x)=x+x+x+x+1
を定義多項式とするGF(2)の8次拡大体GF(2)の数Iとみなして、Iの逆数
J=I−1(ただし、0−1は0と定める)
を計算する。次に、Iの逆数として表現されているJを8ビットのデータJ・・・
(各Jは1ビット)とみなして、i=0,1,・・・,7について、
J’=J(+)Ji+4mod8(+)Ji+5mod8(+)Ji+6mod8
(+)Ji+7mod8(+)C
を計算する。ここで、(+)は排他的論理和を表し、Cは(C,C,C,C
,C,C,C)=(0,1,1,0,0,0,1,1)からなるビットである
。このとき、8ビットのデータJからJ’=J’J’J’J’J’J’J’
J’を計算する手法は、SubByteのアフィン変換部と呼ばれ、以下では、J’
=A(J)と記す。すなわち、各データブロックIにSubByteを実行するとA(I
−1)が出力される。
SubByteは、加算及び乗算回路を利用して、上述のJ=I−1及びA(I−1
を計算する方法、あるいは入力Iに対してA(I−1)を出力とするテーブルを準備する
方法のいずれかにより実装される。前者の方法は、回路規模は増大するものの、記憶容量
を少なくすることが可能である。
ShiftRow及びMixColumnでは、16個のデータブロックを4×4の行
列に配置して、ブロック単位で変換を行う。
ShiftRowは、行列の各行において所定の大きさだけ巡回置換を行う。MixC
olumnは、行列の各列において所定の行列変換を行う。行列変換は、加算及び乗算回
路を利用して計算する方法、あるいは演算を展開することにより加算回路のみで計算する
方法のいずれかにより実装される。
鍵加算では、128ビットのデータと鍵スケジュール部で計算される128ビットの拡
大鍵との排他的論理和を計算する。
以下、第四実施形態では、上述したSubByteやMixColumnを実行するた
めに、乗算回路と加算回路をそれぞれ一つずつ保持していると仮定する。
図11は本発明の第四実施形態に係る暗号化装置の概略構成を示すブロック図、図12
は同装置の詳細構成を示す図である。
第四実施形態に係る暗号化装置は、入出力部1201、制御部1202、演算器120
3、乱数発生器1204、選択器1205、ROM(Read Only Memory
)1206及びRAM(Random Access Memory)1207、乗算器
1208、加算器1209を有している。
入出力部1201は、外部からの平文ブロック(128ビット)を入力として受け付け
、演算結果である暗号文ブロック(128ビット)を出力する。制御部1202は、クロ
ック信号を発生し、暗号化装置の動作を制御する。演算器1203は、入力(命令とデー
タ)に応じて演算を行う部分であり、加算や排他的論理和などを実行する。乗算器120
8と加算器1209は、それぞれ乗算と加算専用の回路であり、演算器1203よりも乗
算や加算を効率的に処理することが可能である。第四実施形態においては、乗算器120
8と加算器1209は、それぞれマスク処理とSubByte、MixColumnの計
算に用いられる。
乱数発生器1204は、マスク用乱数を2つ、選択用乱数を1つ発生する。選択器12
05は、乗算器1208と加算器1209それぞれで計算された平文ブロックとマスク用
乱数との処理結果からいずれか1つを選択し、マスク用乱数に対応して計算されSubB
yteで用いる2組の値からいずれか1組を選択する。なお、このSubByteの内部
で用いる値の詳細については後述する。
ROM1206には、命令コード、SubByte、ShiftRow、MixCol
umn、鍵情報、及び鍵スケジュールを施すために必要な情報などが記憶されている。R
AM1207は、乱数発生器1204により発生された乱数、及び演算過程で得られるデ
ータなどを保存するメモリである。
第四実施形態も、第一実施形態と同様に各段で異なるマスクが施されるように構成する
ことで、安全性をより向上することが可能であるが、説明は省略する。
次に、図12を参照しながら、第四実施形態に係る暗号化装置の動作を説明する。
入出力部1201が平文ブロック(1208ビット)を受け付けると、乱数発生器12
08がマスク用乱数m1302a及びm1302b(いずれも128ビット)と選択
用乱数1303(1ビット)、SubByteマスク用乱数m’(128ビット)とを発
生する。
乗算器1208は、平文ブロック1301aとマスク用乱数m1302aを入力とし
て受け付け、加算器1209は、平文ブロック1301b(平文ブロック1301bは、
平文ブロック1301aと同一のデータ)とマスク用乱数m1302bを入力として受
け付ける。乗算器1208及び加算器1209は、各入力128ビットを16個の8ビッ
トのデータブロックとみなして、同一クロックで拡大体GF(2)における乗算130
4a及び加算1304bをそれぞれ実行し、マスク処理を行う。
一方、演算器1203では、各マスク用乱数m=(ma15,ma14,・・・,m
a0)、m=(mb15,mb14,・・・,mb0)、m’=(m’15,m’14
,・・・,m’)の逆元であるm −1=(ma15 −1,ma14 −1,・・・,m
a0 −1)、m=(mb15 −1,mb14 −1,・・・,mb0 −1)、m’=(m
15 −1,m’14 −1,・・・,m’ −1)、及びSubByteのアフィン変換
A(m’)を計算する。この計算結果は、乗算器1208で計算されるSubByte
内部で用いるデータの算出に用いられる。なお、mai,mbi,m’(i=0,1,
2,・・・,15)は、m,m,m’をそれぞれ8ビットに分割した16個の各デー
タブロックを表す。
乗算器1208では、SubByte内部で用いるデータとして、m −1m’=(m
a15 −1m’15,ma14 −1m’14,・・・,ma0 −1m’)、mA(m
’)=(ma15A(m’15),ma14A(m’14),・・,ma0A(m’
)、mm’=(mb15m’15,mb14m’14,・・・,mb0m’)、m
m’−1=(mb15m’15 −1,mb14m’14 −1,・・・,mb0m’ −1
)、を計算する。m −1とm −1m’,mA(m’))及び(mm’,mm’
−1)は、RAM1207に記憶される。なお、この(m −1m’,mA(m’))
及び(mm’,mm’−1)が、上述した選択器が選択する2組の値である。
選択器1205は、選択用乱数1303に基づいて、乗算器1208及び加算器120
9それぞれでマスク処理を施した2つの平文ブロック1320a,1320bから1つを
選択処理1305する。また、選択器1205は、選択用乱数1303に基づいて、RA
Mに記憶されている2組の値(m −1m’,mA(m’))及び(mm’,m
−1)から1組を選択処理1306する。
以上の処理が終了したら、選択処理1305により選択されたマスク処理後の平文ブロ
ック(128ビット)に対して拡大鍵を加算した後、段関数に入力する。
選択用乱数にしたがって、乗算によりマスク処理が施された平文ブロック1308aが
選択された場合には、鍵加算、SubByte、ShiftRow、MixColumn
の各関数の入出力が、ともに乗算によりマスク処理が施された平文ブロック1320aに
基づくデータとなるように処理を変更する。一方、加算によりマスク処理が施された平文
ブロック1308bが選択された場合には、各関数の入出力がともに加算によりマスク処
理が施された平文ブロック1320bに基づくデータとなるように処理を変更する。
乗算によりマスク処理が施された平文ブロック1320aが選択される場合
ここで、選択処理1305によって、乗算によりマスク処理が施された平文1320a
が選択された場合の鍵加算および各段関数での処理を考える。
各処理に入力されるデータを、d=(d15,d14,・・・,d)と表し、マスク
をm=(ma15,ma14,・・・,ma0)と表す。ここで、GF(2)の
乗算によりマスク処理が施されているデータdm=(d15a15,d14a14
,・・・,da0)について考える。
鍵加算は、データdと拡大鍵kとの排他的論理和を算出する関数である。データdに乗
算1304aによるマスク処理が施されている場合には、dmとkから(d(+)k)
を計算する必要がある。
まず、拡大鍵kをk=(k15,k14,・・・,k)で表す。ただし、k(i=
0,・・・,15)は、8ビットずつに分割された16個のデータブロックを表す。この
とき、km=(k15a15,k14a14,・・・,ka0)を計算し、鍵
加算をdmとkmのGF(2)での加算により処理することで、(d(+)k)m
が得られる。
GF(2)の加算は、8ビットのデータをGF(2)で表現したときの各係数のm
od2での加算によって計算され、排他的論理和と等価である。従って、dm+km
=(d+k)mは、(d(+)k)mに等しい。
次に、ShiftRowを考える。ShiftRowは、8ビットに分割されたデータ
ブロックを1つの単位として置換を行うため、マスク用乱数m、mなども対応して8
ビット単位で置換を行う。
次に、MixColumnを考える。MixColumnは、入力されたデータdに対
して、8ビットに分割されたデータブロックを用いて行列変換を行う。この行列変換とし
て、MixColumnを行った後の出力データが、マスクmが施されたデータとなる
ように、変換行列の各成分とマスクデータの積を計算する。
例えば、(d15,d14, ・・・,d)をMixColumnに入力して得られる(d
15,d’14, ・・・,d’)のうちd’15は、積(0x02, 0x03, 0x01
, 0x01) (d15,d14,d13,d12)(Tは転置をあらわす)により得ること
ができる。
ここで、(0x02, 0x03, 0x01, 0x01)の代わりに(0x02, 0x03
*ma,14 −1*ma,15, 0x01*ma,13 −1*ma,15, 0x01*ma,12 −1
a15)として、(dma,15, dma,14, dma,13, dma,12)の積を計算すれば
、マスク処理を施したデータdmを入力とした場合のMixColumnの出力の15
ブロック目を得られる。MixColumnの他のブロックとマスクの積についても同様
に計算することが可能である。
最後にSubByteの処理を考える。SubByteは入力データd=(d15,d
14,・・・,d)に対して(A(d15 −1),A(d14 −1),・・・,A(d
−1))を出力する関数である。乗算マスクが施されているデータdmを入力とする
場合には、dmから(A(d15 −1)ma,15,A(d14 −1)ma,14,・
・・,A(d −1)ma,0)を計算する必要がある。これは、次のように計算する。
まず、演算器1203で(dm−1=(d15 −1a,15 −1,d14 −1
a,14 −1,・・・,d −1a,0 −1)を計算する。次に、(dm−1にm
−1m’を加算し、(d−1+m’)m −1=((d15 −1+m’15)ma、1
−1,(d14 −1+m’14)ma、14 −1,・・・,(d −1+m’)m
、0 −1)を計算し、mを乗算してd−1+m’=(d15 −1+m’15,d14
+m’14,・・・,d −1+m’)を計算する。ここで得られた各ブロックにア
フィン変換A(・)を作用すると、(A(d15 −1)+A(m’15),A(d14
)+A(m’14),・・・,A(d −1)+A(m’))を得る。この値にm
を乗算して((A(d15 −1)ma、15+A(m’15)ma、15,A(d14
)ma、14+A(m’14)ma、14,・・・,A(d −1)ma、0+A(m
)ma、0)を計算し、mA(m’)を足すことで(A(d15 −1)ma,15
,A(d14 −1)ma,14,・・・,A(d −1)ma,0)を計算することがで
きる。
加算によりマスク処理が施された平文ブロック1320bが選択される場合
一方、選択処理1305によって、加算によりマスク処理が施された平文1320bが
選択された場合の鍵加算および各段関数での処理を考える。
まず、各処理に入力されるデータを、d=(d15,d14,・・・,d)と表し、
マスクをm=(mb15,mb14,・・・,mb0)と表す。ここで、入力データに
GF(2)の加算によりマスク処理が施されている場合は、各処理に入力されるデータ
は、d+m=(d15+mb15,d14+mb14,・・・,d+mb0)と表さ
れる。そこで、以下、このd+mを入力とした場合について、鍵加算及び各段関数での
処理を考える。
鍵加算は、データdと拡大鍵kとの排他的論理和を算出する関数である。データdに加
算1304bによるマスク処理が施されている場合には、d+mとkから(d(+)k
)+mを計算する必要がある。上述の通りGF(2)の加算は、8ビットのデータを
GF(2)で表現したときの各係数のmod 2での加算によって計算され、排他的論
理和と等価であることから、(d+mb)+k=((d15+mb,15)+k15,(d
14+mb,14)+k14,・・・,(d+mb,0)+k)を計算すれば(d(+
)k)+mbを計算できる。
次に、ShiftRowを考える。乗算によりマスク処理が施されている場合と同様に
、ShiftRowは8ビットに分割されたデータブロックを一つの単位として置換を行
うため、m,mなどのデータも対応して8ビット単位で置換を行う。
次に、MixColumnを考える。上述したように、MixColumnは8ビット
に分割されたデータブロックを用いた行列変換を行う。加算によりマスクが施されたデー
タを入力とする場合は、変換行列の各成分とマスクデータの積の差を計算することで、M
ixColumnを行った結果の出力データとしてマスクmが施されたデータが得られ
る。

例えば、積(0x02, 0x03, 0x01, 0x01) (d15+mb,15, d14
b,14, d13+mb,13, d12+mb,12)にmb,15−0x02*mb,15−0x0
3*mb,14−0x01*mb,13−0x01*mb,12を加算すれば、マスク処理を施し
たデータd+mを入力とした場合のMixColumnの出力を得ることができる。M
ixColumnの他のブロックとマスクの和についても同様に計算することが可能であ
る。
最後にSubByteの処理を考える。SubByteは、入力データd=(d15
14,・・・,d)に対して(A(d15 −1),A(d14 −1),・・・,A(
−1))を出力する関数である。加算マスクが施されているデータd+mを入力と
する場合には、d+mから(A(d15 −1)+mb,15,A(d14 −1)+m
,14,・・・,A(d −1)+mb,0)を計算する必要がある。これは、次のよう
に計算する。
まず、d+mにm’を乗算して(d+m)m’=((d15+mb,15)m’
,(d14+mb,14)m’14,・・・,(d+mb,0)m’)を計算する
。得られたデータに、mm’を加算し、dm’=(d15m’15,d14m’14
・・・,dm’)を計算し、その逆元(dm’)−1=(d15 −1m’15 −1
14 −1m’14 −1,・・・,d −1m’ −1)を計算する。
次に、(dm’)−1にmm’−1を加算し、(d−1+m)m’−1=((d
−1+mb,15)m’15 −1,(d14 −1+mb,14)m’14 −1,・・・
,(d −1+mb,0)m’ −1)を計算し、m’を乗算してd−1+m=(d
−1+mb,15,d14 −1+mb,14,・・・,d −1+mb,0)を計算す
る。この値にアフィン変換A(・)を施して(A(d15 −1)+A(mb,15),A
(d14 −1)+A(mb,14),・・・,A(d −1)+A(mb,0))を計算
する。
最後に、A(mb,0)+mb,0を加算することで、(A(d15 −1)+mb,1
,A(d14 −1)+mb,14,・・・,A(d −1)+mb,0)を計算する。
なお、最後の加算は鍵加算と合わせて計算することも可能である。
以上のように、選択処理1305によって選択された平文ブロックにあわせて段関数の
計算が10段繰り返された後、乗算器1208及び加算器1209は、10段目の段関数
の出力とマスク用乱数の逆数ma −11302c及びマスク用乱数m1302bとを入
力として受け付け、同一クロックで乗算1310a及び加算1310bをそれぞれ実行す
る。これらの結果は選択器1205に入力される。
選択器1205は、選択用乱数1303にしたがって乗算1310a及び加算1310
bの出力のうちから1つを選択処理1311する。これにより暗号文ブロック1312が
求まり、入出力部1201から出力される。
以上説明した第四実施形態に係る暗号化装置は、複数のマスク演算手法によりマスク処
理が施された平文ブロックからいずれかを選択することで、暗号化装置内で処理されるデ
ータと消費電力との相関を減らすようにしている。これにより、DPAや高次DPAのよ
うに消費電力を利用した鍵情報の推測を困難化することができる。なお、上述の第四実施
形態においてSubByteの処理の順番あるいは計算時間からいずれを選択したか特定
されないために、ダミー処理を追加することにより計算順序および計算時間をそろえる必
要がある。
この第四実施形態では、二つのマスク処理として異なる演算(乗算と加算)に、Sub
ByteやMixColumnを実行するために保持している乗算回路と加算回路を利用
することで、回路規模の増大を抑えることが可能となる。
(第四実施形態の変形例)
本発明の第四実施形態においても、第一実施形態と同様の変形例が考えられる。すなわ
ち、選択用変数としてマスク用乱数m1302aの最下位ビットを用いることで乱数発
生処理の回数を1回削減することが可能である。
また、mとmとして同一の乱数を用いることで乱数発生処理の回数を1回削減する
ことも可能である。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要
旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示され
ている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実
施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実
施形態にわたる構成要素を適宜組み合わせてもよい。
本発明が適用される、暗号アルゴリズムDESの構成を示す図 段関数の詳細回路図 S箱(S1)の表の一例を示す図 本発明の第一実施形態に係る暗号化装置の概略構成を示すブロック図 本発明の第一実施形態に係る暗号化装置の詳細構成を示す図 本発明の第二実施形態に係る暗号化装置の概略構成を示すブロック図 本発明の第二実施形態に係る暗号化装置の詳細構成を示す図 本発明の第三実施形態に係る暗号化装置の概略構成を示すブロック図 本発明の第三実施形態に係る暗号化装置の詳細構成を示す図 本発明が適用される、暗号アルゴリズムAESの構成を示す図 本発明の第四実施形態に係る暗号化装置の概略構成を示すブロック図 本発明の第四実施形態に係る暗号化装置の詳細構成を示す図
符号の説明
202…鍵スケジュール部;
203…平文ブロック;
204…初期転置;
205…段関数;
206…最終転置;
207…暗号文ブロック;
208…鍵情報;

Claims (19)

  1. 平文ブロックから暗号文ブロックを生成する暗号化装置であって、
    複数の乱数を発生する乱数発生手段と、
    前記複数の乱数から1つのマスク用乱数をランダムに選択する選択手段と、
    前記選択手段により選択されたマスク用乱数を用いて平文ブロックに対しマスク処理を
    施すマスク処理手段と、
    初期S箱を表す第一のテーブルを記憶する記憶手段と、
    前記選択手段により選択されたマスク用乱数に基づいて、前記第一のテーブルを、変形
    S箱を表す第二のテーブルに変換する変換手段と、
    鍵情報に基づく拡大鍵を用いる第一の演算及び前記第二のテーブルを用いる第二の演算
    を含む段関数により前記マスク処理後の平文ブロックから暗号文ブロックを生成する暗号
    化手段と、
    を具備することを特徴とする暗号化装置。
  2. 前記選択手段は、前記乱数発生手段が発生した複数の乱数のうち、いずれかの乱数の特
    定ビットにしたがって前記マスク用乱数を選択することを特徴とする請求項1に記載の暗
    号化装置。
  3. 平文ブロックから暗号文ブロックを生成する暗号化装置であって、
    複数の乱数を発生する乱数発生手段と、
    平文ブロックに対し前記複数の乱数それぞれを用いてマスク処理を施すことにより複数
    のマスク処理後平文ブロックをそれぞれ得る複数のマスク処理手段と、
    初期S箱を表す第一のテーブルを記憶する記憶手段と、
    前記複数の乱数それぞれで前記第一のテーブルを変換することで、変形S箱を表す複数
    の変形テーブルを得る変換手段と、
    前記複数のマスク処理後平文ブロックの中から1つをランダムに選択すると共に、この
    選択に応じて前記複数の変形テーブルの中から1つを選択する選択手段と、
    鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記変形テーブルを用いる第
    二の演算を含む段関数により、選択された前記マスク処理後平文ブロックから、暗号文ブ
    ロックを生成する暗号化手段と、
    を具備することを特徴とする暗号化装置。
  4. 前記選択手段は、前記乱数発生手段が発生した複数の乱数のうち、いずれかの乱数の特
    定ビットにしたがって、前記複数のマスク処理後平文ブロックの中から1つを選択するこ
    とを特徴とする請求項3に記載の暗号化装置。
  5. 前記第一のマスク処理手段と前記第二のマスク処理手段は、同一クロックで前記マスク
    処理を行うことを特徴とする請求項3に記載の暗号化装置。
  6. 平文ブロックから暗号文ブロックを生成する暗号化装置であって、
    第一の固定値及び第2の固定値を記憶する第一の記憶手段と、
    初期S箱を表すテーブルを記憶する第二の記憶手段と、
    前記第一の固定値に基づいて前記初期S箱を変換してなる第一の変形S箱を表す第一の
    テーブル及び前記第二の固定値に基づいて前記初期S箱を変換してなる第二の変形S箱を
    表す第二のテーブルを記憶する第三の記憶手段と、
    乱数を発生する乱数発生手段と、
    前記第一の固定値を用いて平文ブロックに対しマスク処理を施すことにより第一のマス
    ク処理後平文ブロックを得る第一のマスク処理手段と、
    前記第二の固定値を用いて前記平文ブロックに対しマスク処理を施すことにより第二の
    マスク処理後平文ブロックを得る第二のマスク処理手段と、
    前記乱数を用いて前記平文ブロックに対しマスク処理を施すことにより第三のマスク処
    理後平文ブロックを得る第三のマスク処理手段と、
    前記乱数に基づいて、前記初期S箱を表すテーブルを、第三の変形S箱を表す第三のテ
    ーブルに変換する変換手段と、
    前記第一のマスク処理後平文ブロック、前記第二のマスク処理後平文ブロック、及び前
    記第三のマスク処理後平文ブロックのいずれかをランダムに選択すると共に、この選択に
    応じて前記第一のテーブル、第二のテーブル、及び第三のテーブルのいずれかを選択する
    選択手段と、
    鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記第一のテーブル、第二の
    テーブル、及び前記第三のテーブルのいずれかを用いる第二の演算を含む段関数により、
    選択された前記第一のマスク処理後平文ブロック、第二のマスク処理後平文ブロック、及
    び第三のマスク処理後平文ブロックのいずれかから、暗号文ブロックを生成する暗号化手
    段と、
    を具備することを特徴とする暗号化装置。
  7. 前記選択手段はが、前記乱数発生手段が発生した乱数の特定ビットにしたがって、前記
    第一のマスク処理後平文ブロック、前記第二のマスク処理後平文ブロック、及び前記第三
    のマスク処理後平文ブロックのいずれかを選択することを特徴とする請求項6に記載の暗
    号化装置。
  8. 平文ブロックから暗号文ブロックを生成する暗号化装置であって、
    第一の乱数、第二の乱数及び第三の乱数を発生する乱数発生手段と、
    平文ブロックに対し前記第一の乱数を用いて第一の演算を行うことでマスク処理を施し
    、第一マスク処理後平文ブロックを得る第一のマスク処理手段と、
    前記平文ブロックに対し前記第二の乱数を用いて第二の演算を行うことでマスク処理を
    施し、第二マスク処理後平文ブロックを得る第二のマスク処理手段と、
    前記第一の乱数及び前記第三の乱数に基づいて第一のデータを算出し、前記第二の乱数
    及び前記第三の乱数に基づいて第二のデータを算出する演算手段と、
    前記第一マスク処理後平文ブロックと前記第二マスク処理後平文ブロックのどちらかを
    ランダムに選択し、この選択に応じて前記第一のデータと第二のデータのどちらかを選択
    する選択手段と、
    鍵情報に基づく拡大鍵を用いた第一の暗号化演算及び前記第一のデータ又は前記第二の
    データのどちらかを用いた第二の暗号化演算を含む段関数により、前記第一マスク処理後
    平文ブロック又は第二マスク処理後平文ブロックから暗号文ブロックを生成する暗号化部
    と、
    を具備することを特徴とする暗号化装置。
  9. 前記乱数発生手段は、前記第一の乱数及び前記第三の乱数を発生し、前記第二の乱数と
    して前記第一の乱数を用いることを特徴とする請求項8に記載の暗号化装置。
  10. 前記選択手段は、前記乱数発生手段が発生した乱数の特定ビットにしたがって、前記第
    一のマスク処理後平文ブロックと前記第二のマスク処理後平文ブロックのいずれか一方を
    選択することを特徴とする請求項8に記載の暗号化装置。
  11. 前記第一のマスク処理手段と前記第二のマスク処理手段は、同一クロックで前記マスク
    処理を行うことを特徴とする請求項8に記載の暗号化装置。
  12. 平文ブロックから暗号文ブロックを生成する暗号化方法であって、
    複数の乱数を乱数発生手段が発生するステップと、
    前記複数の乱数から1つのマスク用乱数をランダムに選択する選択ステップと、
    選択された前記マスク用乱数を用いて平文ブロックに対しマスク処理を施すステップと

    初期S箱を表す第一のテーブルを記憶するステップと、
    選択された前記マスク用乱数に基づいて、前記第一のテーブルを、変形S箱を表す第二
    のテーブルに変換するステップと、
    鍵情報に基づく拡大鍵を用いる第一の演算及び前記第二のテーブルを用いる第二の演算
    を含む段関数により前記マスク処理後の平文ブロックから暗号文ブロックを生成するステ
    ップと、
    を具備することを特徴とする暗号化方法。
  13. 平文ブロックから暗号文ブロックを生成する暗号化方法であって、
    複数の乱数を乱数発生手段が発生するステップと、
    平文ブロックに対し、前記複数の乱数それぞれを用いてマスク処理を施すことにより複
    数のマスク処理後平文ブロックをそれぞれ得る複数のマスク処理ステップと、
    初期S箱を表す第一のテーブルを記憶するステップと、
    前記複数の乱数に基づいて、前記第一のテーブルを、変形S箱を表す複数の変形テーブ
    ルにそれぞれ変換するステップと、
    前記複数のマスク処理後平文ブロックの中から1つをランダムに選択すると共に、この
    選択に応じて前記複数の変形テーブルの中から1つを選択する選択ステップと、
    鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記変形テーブルを用いる第
    二の演算を含む段関数により、選択された前記マスク処理後平文ブロックから、暗号文ブ
    ロックを生成するステップと、
    を具備することを特徴とする暗号化方法。
  14. 平文ブロックから暗号文ブロックを生成する暗号化方法であって、
    第一の固定値及び第2の固定値を記憶するステップと、
    初期S箱を表すテーブルを記憶するステップと、
    前記第一の固定値に基づいて前記初期S箱を変換してなる第一の変形S箱を表す第一の
    テーブル及び前記第二の固定値に基づいて前記初期S箱を変換してなる第二の変形S箱を
    表す第二のテーブルを記憶するステップと、
    乱数発生手段が乱数を発生するステップと、
    前記第一の固定値を用いて平文ブロックに対しマスク処理を施すことにより第一のマス
    ク処理後平文ブロックを得る第一のマスク処理ステップと、
    前記第二の固定値を用いて前記平文ブロックに対しマスク処理を施すことにより第二の
    マスク処理後平文ブロックを得る第二のマスク処理ステップと、
    前記乱数を用いて前記平文ブロックに対しマスク処理を施すことにより第三のマスク処
    理後平文ブロックを得る第三のマスク処理ステップと、
    前記乱数に基づいて、前記初期S箱を表すテーブルを、第三の変形S箱を表す第三のテ
    ーブルに変換するステップと、
    前記第一のマスク処理後平文ブロック、前記第二のマスク処理後平文ブロック、及び前
    記第三のマスク処理後平文ブロックのいずれかをランダムに選択すると共に、この選択に
    応じて前記第一のテーブル、第二のテーブル、及び第三のテーブルのいずれかを選択する
    選択ステップと、
    鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記第一のテーブル、第二の
    テーブル、及び前記第三のテーブルのいずれかを用いる第二の演算を含む段関数により、
    選択された前記第一のマスク処理後平文ブロック、第二のマスク処理後平文ブロック、及
    び第三のマスク処理後平文ブロックのいずれかから、暗号文ブロックを生成するステップ
    と、
    を具備することを特徴とする暗号化方法。
  15. 平文ブロックから暗号文ブロックを生成する暗号化方法であって、
    乱数発生手段が第一の乱数、第二の乱数及び第三の乱数を発生するステップと、
    平文ブロックに対し、前記第一の乱数を用いて第一の演算を行うことでマスク処理を施
    し、第一マスク処理後平文ブロックを得る第一のマスク処理ステップと、
    前記平文ブロックに対し、前記第二の乱数を用いて第二の演算を行うことでマスク処理
    を施し、第二マスク処理後平文ブロックを得る第二のマスク処理ステップと、
    前記第一の乱数及び前記第三の乱数に基づいて第一のデータを算出し、前記第二の乱数
    及び前記第三の乱数に基づいて第二のデータを算出する演算ステップと、
    前記第一マスク処理後平文ブロックと前記第二マスク処理後平文ブロックのどちらかを
    ランダムに選択し、この選択に応じて前記第一のデータと前記第二のデータのどちらかを
    選択する選択ステップと、
    鍵情報に基づく拡大鍵を用いた第一の暗号化演算及び前記第一のデータ又は前記第二の
    データのいずれか一方を用いた第二の暗号化演算を含む段関数により、前記第一マスク処
    理後平文ブロック又は第二マスク処理後平文ブロックから暗号文ブロックを生成するステ
    ップと、
    を具備することを特徴とする暗号化方法。
  16. コンピュータに平文ブロックから暗号文ブロックを生成させる暗号化プログラムであっ
    て、
    複数の乱数を乱数発生手段に発生させる乱数発生機能と、
    前記複数の乱数から1つのマスク用乱数をランダムに選択する選択機能と、
    選択された前記マスク用乱数を用いて平文ブロックに対しマスク処理を施すマスク処理
    機能と、
    初期S箱を表す第一のテーブルを記憶する記憶機能と、
    選択された前記マスク用乱数に基づいて、前記第一のテーブルを、変形S箱を表す第二
    のテーブルに変換する変換機能と、
    鍵情報に基づく拡大鍵を用いる第一の演算及び前記第二のテーブルを用いる第二の演算
    を含む段関数により前記マスク処理後の平文ブロックから暗号文ブロックを生成する暗号
    化機能と
    をコンピュータに実現させるための暗号化プログラム。
  17. コンピュータに平文ブロックから暗号文ブロックを生成させる暗号化プログラムであっ
    て、
    複数の乱数を乱数発生手段に発生させる乱数発生機能と、
    平文ブロックに対し前記複数の乱数それぞれを用いてマスク処理を施すことにより複数
    のマスク処理後平文ブロックを得るマスク処理機能と、
    初期S箱を表す第一のテーブルを記憶する記憶機能と、
    前記複数の乱数それぞれに基づいて、前記第一のテーブルを変換することで、変形S箱
    を表す複数のテーブル得る変換機能と、
    前記複数のマスク処理後平文ブロックの中から1つをランダムに選択すると共に、この
    選択に応じて前記複数の変形テーブルの中から1つを選択する選択機能と、
    鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記変形テーブルを用いる第
    二の演算を含む段関数により、選択された前記マスク処理後平文ブロックから、暗号文ブ
    ロックを生成する生成機能と
    をコンピュータに実現させるための暗号化プログラム。
  18. コンピュータに平文ブロックから暗号文ブロックを生成させる暗号化プログラムであっ
    て、
    第一の固定値及び第2の固定値を記憶する第一の記憶機能と、
    初期S箱を表すテーブルを記憶する第二の記憶機能と、
    前記第一の固定値に基づいて前記初期S箱を変換してなる第一の変形S箱を表す第一の
    テーブル及び前記第二の固定値に基づいて前記初期S箱を変換してなる第二の変形S箱を
    表す第二のテーブルを記憶する第三の記憶機能と、
    乱数発生手段に乱数を発生させる乱数発生機能と、
    前記第一の固定値を用いて平文ブロックに対しマスク処理を施すことにより第一のマス
    ク処理後平文ブロックを得る第一のマスク処理機能と、
    前記第二の固定値を用いて前記平文ブロックに対しマスク処理を施すことにより第二の
    マスク処理後平文ブロックを得る第二のマスク処理機能と、
    前記乱数を用いて前記平文ブロックに対しマスク処理を施すことにより第三のマスク処
    理後平文ブロックを得る第三のマスク処理機能と、
    前記乱数に基づいて、前記初期S箱を表すテーブルを、第三の変形S箱を表す第三のテ
    ーブルに変換する変換機能と、
    前記第一のマスク処理後平文ブロック、前記第二のマスク処理後平文ブロック、及び前
    記第三のマスク処理後平文ブロックのいずれかをランダムに選択すると共に、この選択に
    応じて前記第一のテーブル、第二のテーブル、及び第三のテーブルのいずれかを選択する
    選択機能と、
    鍵情報に基づく拡大鍵を用いる第一の演算及び選択された前記第一のテーブル、第二の
    テーブル、及び前記第三のテーブルのいずれかを用いる第二の演算を含む段関数により、
    選択された前記第一のマスク処理後平文ブロック、第二のマスク処理後平文ブロック、及
    び第三のマスク処理後平文ブロックのいずれかから、暗号文ブロックを生成する暗号化機
    能と
    をコンピュータに実現させるための暗号化プログラム。
  19. コンピュータに平文ブロックから暗号文ブロックを生成させる暗号化プログラムであっ
    て、
    乱数発生手段に第一の乱数、第二の乱数及び第三の乱数を発生させる乱数発生機能と、
    平文ブロックに対し、前記第一の乱数を用いて第一の演算を行うことでマスク処理を施
    し、第一マスク処理後平文ブロックを得る第一のマスク処理機能と、
    前記平文ブロックに対し、前記第二の乱数を用いて第二の演算を行うことでマスク処理
    を施し、第二マスク処理後平文ブロックを得る第二のマスク処理機能と、
    前記第一の乱数及び前記第三の乱数に基づいて第一のデータを算出し、前記第二の乱数
    及び前記第三の乱数に基づいて第二のデータを算出する演算機能と、
    前記第一マスク処理後平文ブロックと前記第二マスク処理後平文ブロックのどちらかを
    ランダムに選択し、この選択に応じて前記第一のデータと前記第二のデータのどちらかを
    選択する選択機能と、
    鍵情報に基づく拡大鍵を用いた第一の暗号化演算、及び前記第一のデータ又は前記第二
    のデータのどちらかを用いた第二の暗号化演算を含む段関数により、前記第一マスク処理
    後平文ブロック又は第二マスク処理後平文ブロックから暗号文ブロックを生成する暗号化
    機能と、
    をコンピュータに実現させることを特徴とする暗号化プログラム。
JP2006215447A 2005-12-15 2006-08-08 暗号化装置、暗号化方法及び暗号化プログラム Pending JP2007189659A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006215447A JP2007189659A (ja) 2005-12-15 2006-08-08 暗号化装置、暗号化方法及び暗号化プログラム
US11/523,609 US20070140478A1 (en) 2005-12-15 2006-09-20 Encryption apparatus and encryption method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005361996 2005-12-15
JP2006215447A JP2007189659A (ja) 2005-12-15 2006-08-08 暗号化装置、暗号化方法及び暗号化プログラム

Publications (1)

Publication Number Publication Date
JP2007189659A true JP2007189659A (ja) 2007-07-26

Family

ID=38173507

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006215447A Pending JP2007189659A (ja) 2005-12-15 2006-08-08 暗号化装置、暗号化方法及び暗号化プログラム

Country Status (2)

Country Link
US (1) US20070140478A1 (ja)
JP (1) JP2007189659A (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009169287A (ja) * 2008-01-18 2009-07-30 Mitsubishi Electric Corp 暗号処理装置及び復号処理装置及びプログラム
JP2009244302A (ja) * 2008-03-28 2009-10-22 Toshiba Corp 暗号化装置、復号化装置、データ保護システム、データ保護方法、暗号化プログラム、復号化プログラム
JP2010166402A (ja) * 2009-01-16 2010-07-29 Mitsubishi Electric Corp 暗号処理装置及び暗号処理方法及び暗号処理プログラム
JP2011175039A (ja) * 2010-02-23 2011-09-08 Toshiba Corp 暗号化装置および復号装置
JP2012063700A (ja) * 2010-09-17 2012-03-29 Toshiba Corp 暗号化装置
JP2013190747A (ja) * 2012-03-15 2013-09-26 Toshiba Corp 暗号化鍵生成装置
US8724804B2 (en) 2011-09-27 2014-05-13 Kabushiki Kaisha Toshiba Encryption processing apparatus
KR101506499B1 (ko) 2008-12-30 2015-03-31 고려대학교 산학협력단 마스킹이 적용된 seed를 이용한 암호화 방법
US9003200B1 (en) 2014-09-22 2015-04-07 Storagecraft Technology Corporation Avoiding encryption of certain blocks in a deduplication vault
JP2016005273A (ja) * 2014-06-12 2016-01-12 ナグラビジョン エス アー メッセージを安全に交換する暗号方式並びにこの方式を実施する装置及びシステム
US9288040B2 (en) 2010-02-22 2016-03-15 Kabushiki Kaisha Toshiba Encryption device

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4909018B2 (ja) * 2006-11-16 2012-04-04 富士通株式会社 共通鍵暗号のための暗号化装置
EP2186250B1 (en) * 2007-08-31 2019-03-27 IP Reservoir, LLC Method and apparatus for hardware-accelerated encryption/decryption
WO2009043139A1 (en) * 2007-10-01 2009-04-09 Research In Motion Limited Substitution table masking for cryptographic processes
WO2009074728A1 (fr) * 2007-12-13 2009-06-18 Oberthur Technologies Procede de traitement cryptographique de donnees, notamment a l'aide d'une boite s, dispositif et programme associes
WO2009074727A1 (fr) * 2007-12-13 2009-06-18 Oberthur Technologies Procede d'acces a un sous-mot dans un mot binaire, dispositif et programme associes
US20100027781A1 (en) * 2007-12-20 2010-02-04 Galbi Duane E Method and apparatus for enhancing performance of data encryption standard (des) encryption/decryption
CN101978648A (zh) * 2008-03-25 2011-02-16 三菱电机株式会社 密码运算装置、密码运算程序以及记录介质
US8200986B2 (en) * 2008-04-24 2012-06-12 Apple Inc. Computer enabled secure status return
US8094816B2 (en) * 2008-10-21 2012-01-10 Apple Inc. System and method for stream/block cipher with internal random states
JP4687775B2 (ja) * 2008-11-20 2011-05-25 ソニー株式会社 暗号処理装置
JP5268609B2 (ja) * 2008-12-09 2013-08-21 株式会社東芝 暗号処理装置及び演算方法
WO2011080487A1 (fr) * 2009-12-30 2011-07-07 France Telecom Procede de generation de table de correspondance pour une boite blanche cryptographique
KR101112157B1 (ko) 2010-01-25 2012-02-22 주식회사 인쿠시스 데이터 암호화 방법
FR2960728B1 (fr) * 2010-05-26 2016-04-15 Oberthur Technologies Procede de determination d'une representation d'un produit et procede d'evaluation d'une fonction
JP5539024B2 (ja) * 2010-05-27 2014-07-02 キヤノン株式会社 データ暗号化装置およびその制御方法
CN101951314B (zh) * 2010-10-12 2012-06-20 北京航空航天大学 对称密码加密中s-盒的设计方法
JP2012083542A (ja) * 2010-10-12 2012-04-26 Renesas Electronics Corp 暗号処理装置及び暗号処理回路の制御方法
KR101989813B1 (ko) * 2012-06-29 2019-06-18 펜타시큐리티시스템 주식회사 특정 포맷을 가지는 대체 데이터의 생성 및 검증
CN103647639A (zh) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 一种对称密码算法抵抗侧信道分析的方法
US10256970B2 (en) * 2013-12-20 2019-04-09 Konnklijke Philips N.V. Secure data transformations
CN103888247B (zh) * 2014-03-10 2017-09-22 深圳华视微电子有限公司 抵抗差分功耗分析攻击的数据处理系统及其数据处理方法
CN106161005B (zh) * 2015-03-31 2019-05-07 北京南瑞智芯微电子科技有限公司 一种分组加密算法防攻击的掩码方法和装置
US10243937B2 (en) * 2016-07-08 2019-03-26 Nxp B.V. Equality check implemented with secret sharing
CN107204841B (zh) * 2017-03-14 2020-01-07 中国人民武装警察部队工程大学 一种抵御差分功耗攻击的分组密码多s盒实现的方法
CN107707343B (zh) * 2017-11-08 2020-10-16 贵州大学 加解密一致的sp网络结构轻量级分组密码实现方法
EP3499788B1 (en) * 2017-12-15 2020-07-29 Secure-IC SAS Dynamic masking
US11507699B2 (en) * 2019-09-27 2022-11-22 Intel Corporation Processor with private pipeline
JP7314108B2 (ja) * 2020-08-27 2023-07-25 株式会社東芝 暗号処理装置、暗号処理方法およびプログラム
US12047485B2 (en) * 2020-12-23 2024-07-23 Intel Corporation Time and frequency domain side-channel leakage suppression using integrated voltage regulator cascaded with runtime crypto arithmetic transformations
US11522678B2 (en) * 2021-06-08 2022-12-06 Intel Corporation Block cipher encryption for processor-accelerator memory mapped input/output communication
US20210297243A1 (en) * 2021-06-08 2021-09-23 Intel Corporation Permutation cipher encryption for processor-accelerator memory mapped input/output communication
CN116522351A (zh) * 2022-01-20 2023-08-01 瑞昱半导体股份有限公司 降低成功率的方法、密码系统处理电路及电子装置
JP2023114841A (ja) * 2022-02-07 2023-08-18 キオクシア株式会社 情報記録装置および情報記録システム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675524A (ja) * 1992-02-17 1994-03-18 Fujitsu F I P Kk ストリーム暗号処理装置
JP2002536911A (ja) * 1999-02-04 2002-10-29 ブル・セー・ペー・8 物理的解析によってコンピュータシステムを攻撃から保護する秘密鍵暗号化方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5353352A (en) * 1992-04-10 1994-10-04 Ericsson Ge Mobile Communications Inc. Multiple access coding for radio communications
US6295606B1 (en) * 1999-07-26 2001-09-25 Motorola, Inc. Method and apparatus for preventing information leakage attacks on a microelectronic assembly
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
US7848514B2 (en) * 2004-05-24 2010-12-07 Research In Motion Limited Table masking for resistance to power analysis attacks
EP1722502B1 (en) * 2005-05-10 2007-09-05 Research In Motion Limited Key masking for cryptographic processes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675524A (ja) * 1992-02-17 1994-03-18 Fujitsu F I P Kk ストリーム暗号処理装置
JP2002536911A (ja) * 1999-02-04 2002-10-29 ブル・セー・ペー・8 物理的解析によってコンピュータシステムを攻撃から保護する秘密鍵暗号化方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009169287A (ja) * 2008-01-18 2009-07-30 Mitsubishi Electric Corp 暗号処理装置及び復号処理装置及びプログラム
JP2009244302A (ja) * 2008-03-28 2009-10-22 Toshiba Corp 暗号化装置、復号化装置、データ保護システム、データ保護方法、暗号化プログラム、復号化プログラム
KR101506499B1 (ko) 2008-12-30 2015-03-31 고려대학교 산학협력단 마스킹이 적용된 seed를 이용한 암호화 방법
JP2010166402A (ja) * 2009-01-16 2010-07-29 Mitsubishi Electric Corp 暗号処理装置及び暗号処理方法及び暗号処理プログラム
US9288040B2 (en) 2010-02-22 2016-03-15 Kabushiki Kaisha Toshiba Encryption device
JP2011175039A (ja) * 2010-02-23 2011-09-08 Toshiba Corp 暗号化装置および復号装置
JP2012063700A (ja) * 2010-09-17 2012-03-29 Toshiba Corp 暗号化装置
US8724804B2 (en) 2011-09-27 2014-05-13 Kabushiki Kaisha Toshiba Encryption processing apparatus
JP2013190747A (ja) * 2012-03-15 2013-09-26 Toshiba Corp 暗号化鍵生成装置
JP2016005273A (ja) * 2014-06-12 2016-01-12 ナグラビジョン エス アー メッセージを安全に交換する暗号方式並びにこの方式を実施する装置及びシステム
US9003200B1 (en) 2014-09-22 2015-04-07 Storagecraft Technology Corporation Avoiding encryption of certain blocks in a deduplication vault
US9626518B2 (en) 2014-09-22 2017-04-18 Storagecraft Technology Corporation Avoiding encryption in a deduplication storage

Also Published As

Publication number Publication date
US20070140478A1 (en) 2007-06-21

Similar Documents

Publication Publication Date Title
JP2007189659A (ja) 暗号化装置、暗号化方法及び暗号化プログラム
US10567162B2 (en) Mask S-box, block ciphers algorithm device and corresponding construction process
KR101026439B1 (ko) Seed 암호화에서 차분 전력 분석 공격을 방어하기 위한 마스킹 방법
JP5242560B2 (ja) 暗号化装置、復号化装置、暗号化方法及び集積回路
JP5229315B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
JP4801699B2 (ja) 暗号処理装置および暗号処理方法
JP2005215688A (ja) S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法
JP2000066585A (ja) 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体
WO2015146431A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
CN101507176A (zh) 椭圆曲线点乘法
US6956951B2 (en) Extended key preparing apparatus, extended key preparing method, recording medium and computer program
KR101586811B1 (ko) Hight 부채널 분석에 대응하기 위한 장치 및 방법
CN113434886B (zh) 联合生成用于安全计算的数据元组的方法及装置
WO2007080652A1 (ja) モンゴメリ法用乗算剰余計算装置
US20130243191A1 (en) Encryption key generating apparatus
WO2015146430A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
CN106230580A (zh) 一种可变密钥多重加密方法
CN109936437B (zh) 一种基于d+1阶掩码的抗功耗攻击方法
JP2008151829A (ja) 暗号演算装置
RU2188513C2 (ru) Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки
US8316338B2 (en) Method of optimizing combinational circuits
JP2022038811A (ja) 暗号処理装置、暗号処理方法およびプログラム
Gurjar et al. Complete Graph and Hamiltonian Cycle in Encryption and Decryption
KR100885994B1 (ko) 비선형 필터링된 t함수에 기반한 스트림 암호화 장치 및방법
Lisha et al. Analysis of cryptographic algorithms based on vedic-mathematics

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111028

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20111125

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20111205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111227

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120424