JP4936996B2 - 非線形データ変換器、暗号化装置、および復号装置 - Google Patents

非線形データ変換器、暗号化装置、および復号装置 Download PDF

Info

Publication number
JP4936996B2
JP4936996B2 JP2007137842A JP2007137842A JP4936996B2 JP 4936996 B2 JP4936996 B2 JP 4936996B2 JP 2007137842 A JP2007137842 A JP 2007137842A JP 2007137842 A JP2007137842 A JP 2007137842A JP 4936996 B2 JP4936996 B2 JP 4936996B2
Authority
JP
Japan
Prior art keywords
bit string
stage
mask value
bit
conversion
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
JP2007137842A
Other languages
English (en)
Other versions
JP2008292742A (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 JP2007137842A priority Critical patent/JP4936996B2/ja
Priority to US12/053,143 priority patent/US8401180B2/en
Priority to EP08009368A priority patent/EP1995906A1/en
Publication of JP2008292742A publication Critical patent/JP2008292742A/ja
Application granted granted Critical
Publication of JP4936996B2 publication Critical patent/JP4936996B2/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/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
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Description

本発明は、非線形データ変換器、暗号化装置、および復号装置に関するものである。
DES(Data Encryption Standard)などの共通鍵暗号方式による暗号化装置または復号装置は、ICカード装置などに搭載され、広く使用されている。そのため、その秘密鍵を不正なアクセスから保護することの重要性は大きい。
例えば、暗号化装置または復号装置の動作時における消費電力から秘密鍵を推定するDPA(Differential Power Analysis)などの不正アクセスに対抗するものとして特許文献1に開示されているように、暗号化あるいは復号を行うごとに、あらかじめ定められたマスク値とそれをビット反転して得られるマスク値とをランダムに選択し、マスク処理を行う方法が報告されている。
しかし、上記の特許文献1に記載される発明では、複数のタイミングでの消費電力から秘密鍵を推定する高次DPAに対する耐性が考慮されていない。
特開2000−66585公報
上述したように、特許文献1で開示されている手法には高次DPAに対する耐性が考慮されていないという問題があった。
本発明は、上記従来技術の問題点を解決するためになされたものであって、高次DPAに対する耐性を確保できる非線形データ変換器、暗号化装置、および復号装置を提供することを目的とする。
上記目的を達成するために、本発明の実施形態に係る非線形データ変換器は、入力ビット列を、第1のマスク値を用いてマスク処理し、そのマスク処理されたビット列を暗号または復号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を第2のマスク値を用いてマスク処理して得られるビット列と等しい第1の出力ビット列に変換する第1のデータ変換手段と、前記入力ビット列を前記第1のマスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第2のマスク値のビット反転である第2の反転マスク値を用いてマスク処理して得られるビット列と等しい第2の出力ビット列に変換する第2のデータ変換手段と、前記入力ビット列を前記第1のマスク値のビット反転である第1の反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第2のマスク値を用いてマスク処理して得られるビット列と等しい第3の出力ビット列に変換する第3のデータ変換手段と、前記入力ビット列を前記第1の反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第2の反転マスク値を用いてマスク処理して得られるビット列と等しい第4の出力ビット列に変換する第4のデータ変換手段と、乱数ビット列を生成する生成手段と、前記乱数ビット列に従い、前記第1のデータ変換手段乃至前記第4のデータ変換手段が出力した前記第1の出力ビット列乃至前記第4の出力ビット列のうち、いずれか1つを選択する選択手段とを備えることを特徴とする。
本発明によれば、高次DPAに対する耐性を確保できる。
以下、本発明の実施形態について説明する。
(DESの基本構成)
図1は、暗号アルゴリズムDES(Data Encryption Standard)の暗号化装置5の基本構成を示すブロック図である。
秘密情報として保持される鍵情報19を用いて、鍵スケジュール部20は拡大鍵21a、21b,‥21pを算出する。拡大鍵21a、21b,‥21pは、第1段〜第16段の段関数30a〜30pに供給される。それぞれの段関数30a〜30pは、拡大鍵21a、21b,‥21pを用いて平文ブロック9(64bit)を攪拌する。平文ブロック9は、初期転置IP(Initial Permutation)10で転置され、それぞれの段関数30a〜30pで攪拌され、最終転置FP(Final Permutation)40で転置され、暗号文ブロック50となる。
なお、平文ブロック9は、初期転置IP10で転置された後、上位32bitと下位32bitに分割され、第1段の段関数30aの右側入力と左側入力に入力される。同様に、第1段の段関数30aは、右側出力と左側出力から、それぞれ2つのビット列(32bit)を出力する。
ここで、第1段の段関数30aが出力する2つのビット列は、第2段の段関数30bに入力される。即ち、第1段の段関数30aの右側出力から出力されたビット列は、第2段の段関数30bの右側入力に入力され、第1段の段関数30aの左側出力から出力されたビット列は、第2段の段関数30bの左側入力に入力される。以降、第2段〜第16段の段関数30b〜30pでも同様の処理が繰り返される。第16段の段関数30pの出力である2つのビット列は順番を入れ替えて連結され、最終転置FP40に入力される。
図2は、第1段の段関数30aの構成を示す図である。なお、第2段〜第16段の段関数30b〜30pについても、同じ構成として理解される。
第1段の段関数30aは、拡大転置E(Extention Permutation)31と、拡大転置E31の出力と拡大鍵21aとの排他的論理和演算を行う排他的論理和37と、8個のS箱(S1,S2,・・・,S8)33a〜33hと、転置P(Permutation)34と、転置P34の出力と第1段の段関数30aの32bitの左側入力との排他的論理和演算を行う排他的論理和35とを備える。
第1段の段関数30aの32bitの右側入力は、拡大転置E31により転置され、かつ、48bitに拡大される。次に、排他的論理和37は、拡大転置E31からの48bitの出力と48bitの拡大鍵21aとの排他的論理和演算を行う。排他的論理和37の48bitの出力は、6bit毎のビット列に8等分され、それぞれ8個のS箱(S1,S2,・・・,S8)33a〜33hに入力される。
それぞれのS箱(S1,S2,・・・,S8)33a〜33hは、入力された6bitのビット列を、4bitのビット列に非線形変換する。例えば、DESのS箱(S1)33aの入出力関係を示す表を表1に示す。
Figure 0004936996
入力された6bitの最上位ビットと最下位ビットからなる2ビット(0〜3:2進数)は、表1に示すS箱(S1)33aの行番号を指定する。表1に示すS箱(S1)33aの行番号は、上から0、1、2、3とする。また、入力された6bitから最上位ビットと最下位ビットとを除く、残りの4bit(0〜15:2進数)は、表1に示すS箱(S1)33aの列番号を指定する。表1に示すS箱(S1)33aの列番号は、左端から0,1,2,3,…15と数える。
例えば、S箱(S1)33aに入力されたビット列を「011011」とすると、行番号は「1」(01/b:バイナリー)であり、列番号は「13」(1101/b)であるので、出力値「5」が得られる。従って、S箱(S1)33aの出力は、「0101」となる。なお、S箱(S1)33aは、6本の入力線(1本が1bitに対応)と4本の出力線(1本が1bitに対応)とを備え、表1に示す入出力関係となるように、入力線と出力線とを接続する配線および論理素子(NAND、NORなど)の適切な組み合わせにより構成される。
それぞれのS箱(S1,S2,・・・,S8)33a〜33hから出力されたビット列(4bit×8つ)を、S箱(S1)33aの出力ビット列からS箱(S8)33hの出力ビット列までを順に連結して得られる32bitは、転置P34で転置される。そして、排他的論理和35は、転置P34からの32bit出力と、第1段の段関数30aの32bitの左側入力との排他的論理和演算を行う。この排他的論理和35の演算結果は、第1段の段関数30aからの32bitの右側出力となる。なお、第1段の段関数30aの左側出力は、右側入力と同一である。
(第1の実施形態)
図3は本発明の第1の実施形態に係る暗号化装置100を示すブロック図である。
この第1の実施形態に係る暗号化装置100は、外部から入力された64bitの平文ブロックの初期転置を行う初期転置部(IP)105と、初期転置部105が出力するビット列とマスク値rmsk,lmskとの排他的論理和演算を行う排他的論理和130A、130Bと、マスク処理あるいはマスクの除去処理のために排他的論理和演算を行う排他的論理和130a〜130hと、段関数の32bitの左側入力を排他的論理和130Aの出力、排他的論理和130hの出力、排他的論理和130bの出力のいずれかから選択するセレクタ110Lと、段関数の32bitの右側入力を排他的論理和130Bの出力、排他的論理和130hの出力、排他的論理和130bの出力のいずれかから選択するセレクタ110Rと、セレクタ110L、110Rからの32bit出力を記憶するレジスタ120L、120Rと、排他的論理和130dの出力と拡大鍵rkeyjとの排他的論理和演算を行う排他的論理和130zと、段関数ごとに乱数ビット列を発生する乱数発生部145と、拡大転置部(E)150と、転置部(P)160と、第16段の段関数の2つの出力と後述するマスク値rmsk16,lmsk16との排他的論理和演算を行う排他的論理和130C、130Dと、受信したビット列に最終転置を行い、64bitの暗号文ブロックを外部へ出力する最終転置部(FP)165とを備える。
また、第1の実施形態に係る暗号化装置100は、DESのS箱(S1)33aの非線形変換方式に基づき作製されるそれぞれ異なる4つの変形S箱141a〜144a(第1の変形S箱群140a)と、第1の変形S箱群140aの4つの変形S箱141a〜144aの出力から1つを選択するセレクタ110aとを備える。
4つの変形S箱141a〜144aは、図2と同じく8群設けられるが、図3では用紙の大きさから省略されている。したがって、図3には非線形変換方式に基づき作製されるそれぞれ異なる4つの変形S箱を持つ第1の変形S箱群140a〜第8の変形S箱群140hが存在することを理解する。また、第1の第変形S箱群140a〜第8の変形S箱群140hの各出力を選択するセレクタ110a〜110hが存在することを理解する。
なお、初期転置部105、セレクタ110L、110R、レジスタ120L、120R、排他的論理和130A〜130D、130a〜130h、130z、第1の変形S箱群140a〜第8の変形S箱群140h(ただし、第2の変形S箱群140b〜第8の変形S箱群140hは図示せず)、拡大転置部150、転置部160、および最終転置部165は、クロック信号に同期して動作する。
また、乱数発生部145は、それぞれの段関数(第1段から第16段まで)の演算が行われる度に、2つの8bitの乱数ビット列(lmptn、rmptn)を発生する(j=1,2,・・・・16)。
さらにまた、32bitのマスク値(rmsk、lmsk)、および48bitのマスク値(ermsk)は、乱数ビット列(lmptn、rmptn)と、暗号化装置100にあらかじめ定められた4bitのマスク値「a」(外部から検出不可)とに基づいて生成されるマスク値である。なお、以下では、「a ̄」は「a」をビットごとに反転して得られる4bitのビット列であり、「a’」は、「0||a||0」で示される6bitのビット列であり、「a’ ̄」は、「1||a ̄||1」で示される6bitのビット列として記載する。ここで、「||」はビット連結を表す。
32bitのマスク値(lmsk、rmsk)は、8bitの乱数ビット列(lmptn、rmptn)のそれぞれのビットを4bitに拡張して生成される。例えば、乱数ビット列(lmptn)が「11010100」のとき、32bitのマスク値(lmsk)は「a ̄||a ̄||a||a ̄||a||a ̄||a||a」(aは4bit)となる。また、例えば、乱数ビット列(rmptn)が「01011010」のとき、32bitのマスク値(rmsk)は「a||a ̄||a||a ̄||a ̄||a||a ̄||a」となる。
48bitのマスク値(ermsk)は、8bitの乱数ビット列(rmptn)のそれぞれのビットを6bitに拡張して生成される。例えば、乱数ビット列(rmptn)が「01011010」のとき、48bitのマスク値(ermsk)は「0||a||0||1||a ̄||1||0||a||0||1||a ̄||1||1||a ̄||1||0||a||0||1||a ̄||1||0||a||0」となる。
図4は、第1番目の変形S箱群140aが備える変形S箱(S100、S101、S110、S111)141a〜144aの等価回路を右側に示すブロック図である。なお、図4に示す等価回路は、図示しない第2の変形S箱群140b〜第8の変形S箱群140hも同様であると理解する。
ここで、DESのS箱(Si)33a〜33h(i=1,2,・・・,8)は、6bitのビット列xが入力された場合に、4bitのビット列Si(x)を出力する。つまり、第1の変形S箱(S100、S101、S110、S111)141a〜144a〜第8の変形S箱(S800、S801、S810、S811)141h〜144hは、6bitのビット列xが入力された場合に、4bitのビット列Si00(x)、Si01(x)、Si10(x)、Si11(x)(i=1,2,・・・,8)を出力する。
以下では、第1乃至第8の変形S箱(Si00、Si01、Si10、Si11)141a〜144hの入出力関係を示す。なお、以下では符号「+」は、排他的論理和演算を示すものである。
即ち、第1乃至第8の変形S箱(Si00、Si01、Si10、Si11)141a〜144h乃至は、6bitのビット列から4bitのビット列を生成し、「Si00(x)=Si(x+a’)+a、Si01(x)=Si(x+a’)+a ̄、Si10(x)=Si(x+a’ ̄)+a、Si11(x)=Si(x+a’ ̄)+a ̄」(i=1,2,・・・,8)の演算を行うように、入出力関係から導かれる変換テーブルに基づいて設計される。
本発明の第1の実施形態に係る暗号化装置100の動作を、図3を用いてクロックサイクルごとに説明する。
[第1のクロックサイクル]
まず、乱数発生部145は、乱数ビット列(rmptn,lmptn)を生成する。初期転置部105は、外部から受信した64bitの平文ブロックを上位32bitと下位32bitのビット列に分割して出力する。排他的論理和130Aは、出力された上位32bitと乱数ビット列(rmptn)から計算されるマスク値(rmsk)との排他的論理和演算を行う。排他的論理和130Bは、出力された下位32bitと乱数ビット列(lmptn)から計算されるマスク値(lmsk)との排他的論理和演算を行う。それぞれの演算結果は、セレクタ110L、100Rを通して、レジスタ120L、120Rに格納される。なお、乱数ビット列(rmptn,lmptn)は、第1段の段関数(第2番目のクロックサイクル)で使用されるため、記憶される。
[第2〜16のクロックサイクル(第j段の段関数、j=1、2、・・・、15)]
まず、乱数発生部は、乱数ビット列(rmptn,lmptn)を生成する。排他的論理和130aは、上記レジスタ120Rに格納された32bitのビット列に対して乱数ビット列(rmptn)から計算されるマスク値(rmsk)との排他的論理和演算を行う。次の、排他的論理和130bは、排他的論理和130aの出力とマスク値(lmskj−1)との排他的論理和演算を行う。その演算結果は、セレクタ110R,110L、拡大転置部E150に出力され、拡大転置部E150では転置され、かつ、48bitのビット列に拡大される。なお、排他的論理和130bの出力は、第j段の段関数の左出力(32bitのビット列)である。
次に、排他的論理和130dには、拡大転置部(E)150が出力する48bitのビット列が入力され、またマスク値(rmsk)を拡大転置(E)して得られる「E(rmsk)」とマスク値(ermsk)との排他的論和演算結果が入力され、それらの入力ビット列について排他的論理和演算を行う。排他的論理和130zは、排他的論理和130dの演算結果と、第j段の段関数に入力された拡大鍵(ラウンド鍵:rkey)との排他的論理和演算を行う。このようにして得られた48bitのビット列は、6bit毎の8つのビット列(第1のビット列〜第8のビット列)に分割される。
そして、第1の変形S箱群140a(変形S箱141a〜144a)には、第1のビット列が入力され、図4で説明した非線形変換を行う。図示しない第2の変形S箱群140b〜第8の変形S箱群140hにあっても、第2のビット列〜第8のビット列が入力され、図4で説明した非線形変換を行う。
次に、セレクタ110a〜110h(セレクタ110b〜110hは図示せず)は、乱数ビット列「lmptn」と「rmptn」の第i番目のビットに基づき、第1の変形S箱群140a〜第8の変形S箱群140h毎にいずれの変形S箱(Si00,Si01,Si10,Si11)からの出力を選択するかを、段関数ごとに決定する。
例えば、第j段の段関数の乱数ビット列が「rmptn=11010100,lmptn=01011010」のとき、セレクタ110aは、「rmptn」と「lmptn」の各第1番目のビットが「1」「0」であることから、第1の変形S箱群140aから「変形S箱(S110)143aの出力」を選択する。なお、セレクタ110a〜110hが選択する各変形S箱(Sixy)の出力は、「rmptn」の第i番目のビットを「x」に代入し、「lmptn」の第i番目のビットを「y」に代入して同様に決定される。したがって、第2の変形S箱群140b〜第8の変形S箱群140hのセレクタ110b〜110hは、S211、S300、S411、S501、S610、S701、S800の変形S箱をそれぞれ選択すると理解する。
セレクタ110a〜110hにより選択された第1の変形S箱群140a〜第8の変形S箱群140hの4bitのビット列は、順に連結され、32bitのビット列となって排他的論理和130eに入力される。
次に、排他的論理和130eは、連結された32bitのビット列と、乱数ビット列(lmptn)から計算されるマスク値(lmsk)に転置Pの逆演算を施した「P−1(lmsk)」との排他的論理和演算を行う。次に、排他的論理和130fは、排他的論理和130eの出力とマスク値(lmsk)との排他的論理和演算を行う。その演算結果は、転置部(P)160に入力され、転置される。
次に、排他的論理和130gは、転置部(P)160から出力された32bitのビット列とレジスタ120Lに記憶された32bitのビット列との排他的論理和演算を行う。また、排他的論理和130hは、排他的論理和130gの出力とマスク値(rmskj−1)との排他的論理和演算を行う。
このような演算が行われた排他的論理和130hの32bitのビット列は、セレクタ110R,110Lに入力される。セレクタ110Rは、排他的論理和130hの出力(右側出力)を選択しレジスタ120Rに出力する。また一方、セレクタ110Lは、排他的論理和130bの出力(左側出力)を選択し、レジスタ120Lに出力する。なお、乱数ビット列(rmptn,lmptn)は、第j+1段目の段関数で使用されるため、記憶される。
[第17のクロックサイクル(第16段の段関数)]
セレクタ110L、110Rの動作を除き、第2〜16のクロックサイクルで行われる第1〜15段の段関数の動作と、第16段の段関数の動作は同様である。
第17のクロックサイクルで行われる第16段の段関数の動作において、セレクタ110Rは、排他的論理和130bの出力(左側出力)を選択し、レジスタ120Rに送信する。また、セレクタ110Rは、排他的論理和130hの出力(右側出力)を選択し、レジスタ120Lに送信する。なお、乱数ビット列(rmptn16,lmptn16)は、最終転置FP165直前に行われる排他的論理和演算(マスク処理)で使用されるため、記憶される。
[第18のクロックサイクル]
排他的論理和130Cは、レジスタ120Lに記憶された第16段の段関数の右側出力のビット列と、マスク値(lmsk16)との排他的論理和演算を行い、最終転置部(FP)165に送信する。また、レジスタ120Rに記憶されたビット列は、排他的論理和130a、130bで、マスク値(rmsk16、lmsk15)と排他的論理和演算が行われる。次に、排他的論理和130Dは、排他的論理和130bから出力される第16段の段関数の左側出力のビット列と、マスク値(rmsk16)との排他的論理和演算を行い、最終転置部(FP)165に送信する。最終転置部(FP)165は、排他的論理和130C、130Dより受信した2つのビット列を連結し、転置を行い、64bitの暗号文ブロックを出力する。
このように、第1の実施形態に係る暗号化装置100によれば、DESのS箱内部で、入力ビット列に「a’」あるいは「a’ ̄」によるマスク処理がなされ、出力ビット列に「a」あるいは「a ̄」によるマスク処理がなされたものとして、4種類の変形S箱を作成し、それらの変形S箱のいずれを使用するかをランダムに選択することにより、高次DPAへの耐性を確保することが可能となる。
なお、第1の実施形態に係る暗号化装置100と同様に、DESのS箱内部で、入力ビット列に「a’」あるいは「a’ ̄」によるマスク処理がなされ、出力ビット列に「a」あるいは「a ̄」によるマスク処理がなされたものとして作成された4種類の変形S箱を備え、それらの変形S箱のいずれを使用するかをランダムに選択することとした復号装置を構成することができ、暗号文ブロックを平文ブロックに復号する際にも、高次DPAへの耐性を確保することが可能となる。
(第1の実施形態の変形例1)
第1の実施形態では、乱数発生部は、各段関数(第1段から第16段まで)の演算が行われる度に、2つの8bitの乱数ビット列(lmptn、rmptn)を発生するものとして説明を行った。
これに対して第1の実施形態の変形例1では、乱数発生部が、例えば、第1段の段関数の演算で2つの8bitの乱数ビット列(mptn、mptn)を発生させ、第j段の段関数(j=2,・・・,16)の演算で、1つの8bitの乱数ビット列(mptn)を発生させる場合の実施の形態について説明する。
図5は、本発明の第1の実施形態の変形例1に係る暗号化装置100を示すブロック図である。
この変形例1に係る暗号化装置100は、排他的論理和130a、130bが無い点で第1の実施形態と相異する。また、第1の実施形態に係る乱数発生部145が第j段の段関数の演算で発生させた乱数ビット列(rmptn)は、この変形例1に係る乱数発生部145が第j−1段の段関数の演算で発生させた乱数ビット列(mptnj−1)となる。また、第1の実施形態に係る乱数発生部145が第j段の段関数の演算で発生させた乱数ビット列(lmptn)は、この変形例1に係る乱数発生部が第j段の段関数の演算で発生させた乱数ビット列(mptn)となる。
なお、変形例1に係る暗号化装置100の動作は、排他的論理和130a、130bがない点と、演算に使用する乱数ビット列が上記の通りである点で第1の実施形態と相違する。
ここで、第1の実施形態の変形例1に係る暗号化装置100で、排他的論理和130a、130bが無い理由を以下に示す。
変形例1では、第j段の段関数の演算を行う際に、第j段と第j−1段の段関数の演算時に発生させた乱数ビット列(mptn、mptnj−1)を用いてマスク処理およびマスクの除去処理を行う。そのため、排他的論理和130a、130bが排他的論理和演算を行う際に用いるマスク値が双方ともに(mskj−1)となり、排他的論理和130a、130bが不要となる。
このように第1の実施形態の変形例1に係る暗号化装置100によれば、4種類のS箱を利用することでDPA、高次DPAによる解析を困難なものとし、かつ、暗号化演算を行う際の乱数ビット列の発生回数を削減することが可能となり、演算速度を高速化できる。
また、暗号化演算を行う際の乱数ビット列の発生回数を削減することを可能とし、かつ、4種類のS箱を利用することでDPA、高次DPAによる解析を困難なものとすることができる復号装置を構成することができる。
(第1の実施形態の変形例2)
第1の実施形態では、DESのS箱内部で、入力ビット列に「a’」あるいは「a’ ̄」によるマスク処理がなされ、出力ビット列に「a」あるいは「a ̄」によるマスク処理がなされたものとして、4種類の変形S箱(Si00,Si01,Si10,Si11)(i=1,2,・・・,8)を用意するものとして説明を行った。
これに対して変形例2では、例えば、2種類の変形S箱(Si00,Si10)を用意し、その2つの変形S箱(Si00,Si10)の出力をそれぞれ全ビット反転させる2つの排他的論理和を用意する。
図6は、本発明の第1の実施形態の変形例2に係る暗号化装置100を示すブロック図である。
この変形例2に係る暗号化装置100では、変形S箱(S101、S111)142a、144aが無く、変形S箱(S100)141aの出力を全ビット反転する排他的論理和130xと、変形S箱(S110)143aの出力を全ビット反転する排他的論理和130yとをさらに備える点で第1の実施形態と相異する。
なお、変形例2に係る暗号化装置100の動作は、2つの変形S箱(S101、S111)では非線形データ変換が行われない点と、排他的論理和130xが変形S箱(S100)141aの出力を全ビット反転し、排他的論理和130yが変形S箱(S111)141dの出力を全ビット反転する点、およびセレクタ110aでは、入力となる変形S箱(S100)141a、排他的論理和130x「変形S箱(S101)とみなす」、変形S箱(S110)143a、あるいは排他的論理和130y「変形S箱(S111)とみなす」のいずれか1つの出力を、乱数ビット列(lmptn、rmptn)を用いて選択する点が第1の実施形態と相異する。なお、セレクタ110aが乱数ビット列(lmptn、rmptn)を用いて上記4つの出力のうちから1つを選択する方法は、第1の実施形態で述べた通りである。
このように変形例2に係る暗号化装置100によれば、2種類の変形S箱(例えば、S100、S110)とそれらの出力のビット反転を行う素子を利用することでDPA、高次DPAによる解析を困難なものとし、この暗号化装置100の回路規模を削減させることが可能である。
また、2種類の変形S箱(例えば、S100、S110)とそれらの出力のビット反転を行う素子を利用することで回路規模を削減することができ、かつ、DPA、高次DPAによる解析を困難なものとする復号装置を構成することができる。
(AESの基本構成)
図7は、暗号アルゴリズムAES(Advanced Encryption Standard)の暗号化装置205の基本構成を示すブロック図である。
鍵スケジュール部250は、秘密情報として保持される鍵情報249を用いて、例えば128bitの拡大鍵251、251a〜251jを算出し、鍵加算部240、各段の鍵加算部240a〜240jへ拡大鍵251、251a〜251jを供給する。例えば128bitの平文ブロックは、鍵加算部240で拡大鍵251と加算され、拡大鍵251a〜251jとの加算を含む第1〜10段の段関数200a〜200jで攪拌され、暗号文ブロックとなる。
第1〜9段の段関数200a〜200iは、入力ビット列に対して、SubByte210a〜210i、ShiftRow220a〜220i、MixColumn230a〜230i、鍵加算部240a〜240iでの処理を行う。ただし、図7では第1の段関数200aの構成のみ記載している。第10段の段関数200jは、入力ビット列に対して、SubByte210j、ShiftRow220j、鍵加算部240jでの処理を行う。
SubByte210a〜210j、ShiftRow220a〜220j、MixColumn230a〜230iでは、入力されたビット列(128bit)を8bitのビット列毎に16個のブロックに分割して処理を行う。以下、16個のブロックは、「s0,0,s1,0,s2,0,s3,0,s0,1,s1,1,s2,1,s3,1,s0,2,s1,2,s2,2,s3,2,s0,3,s1,3,s2,3,s3,3」と記載する。
SubByte210a〜210jは、入力された8bitのビット列を非線形変換し、8bitのビット列を出力するS箱を16個備える。即ち、SubByte210a〜210jでは、入力ビット列である16個のブロック「si,k」(8bitのビット列)が、それぞれ出力ビット列である「S(si,k)」に変換される。
ShiftRow220a〜220jは、16個のブロック[si,0,si,1,si,2,si,3](i=0,1,2,3)を[si,0◎i,si,1◎i,si,2◎i,si,3◎i]に変換する。なお、◎は4を法とする加算を示す。即ち、16個のブロック「si,k」を行列表現した場合に、行ごとの交換を行う。
MixColumn230a〜230iは、各データブロックの8bitのデータを、
Figure 0004936996
を定義多項式とするGF(2)の8次拡大体GF(2)の数とみなして、GF(2)上で行列変換
Figure 0004936996
を行う。
鍵加算部240、240a〜240jは、鍵長128bitのAESとすると、入力された128bitのビット列と128bitの拡大鍵との排他的論理和演算が行われる。
(第2の実施形態)
図8は、本発明の第2の実施形態に係る暗号化装置300を示すブロック図である。
第2の実施形態に係る暗号化装置300は、第1段の段関数に入力される前に、マスク処理を行う排他的論理和330aと、マスクされた平文ブロックと段関数の出力とを選択するセレクタ310と、段関数の入力を記憶するレジスタ320と、マスク処理あるいはマスクの除去処理のために排他的論理和演算を行う排他的論理和330b、330cと、排他的論理和330cの出力と拡大鍵(rkeyk−1)との排他的論理和演算を行う鍵加算部350aと、SubByte’360と、ShiftRow370と、MixColumn’380と、第10段の段関数の鍵加算部350bと、暗号文ブロックを出力する排他的論理和330dと、段関数ごとに乱数ビット列を発生する図示しない乱数発生部を備える。
また、SubByte’360は、AESのS箱(S1:図示せず)の非線形変換方式に基づき作製されるそれぞれ異なる4つの変形S箱341a〜344a(第1の変形S箱群340a)と、第1の変形S箱群340aの4つの変形S箱341a〜344aの出力から1つを選択するセレクタ310aとを備える。
S箱341a〜344aは16群設けられるが、図8では用紙の大きさから省略されている。したがって、図8には非線形変換方式に基づき作製されるそれぞれ異なる4つの変形S箱を持つ第1の変形S箱群340a〜第16の変形S箱群340pが存在することを理解する。また、第1の変形S箱群340a〜第16の変形S箱群340pの各出力を選択するセレクタ310a〜310pが存在することを理解する。
なお、セレクタ310、310a〜310p、レジスタ320、排他的論理和330a〜330d、変形S箱群340a〜340p、鍵加算部350a、350b、ShiftRow370、およびMixColumn’380は、クロック信号に同期して動作する。
また、乱数発生部345は、それぞれの段関数(第1段から第10段まで)の演算が行われる度に、2つの16bitの乱数ビット列(imptn、omptn)を発生する(k=1,2,・・・・10)。
さらにまた、128bitのマスク値(imsk、omsk)は、16bitの乱数ビット列(imptn、omptn)と、暗号化装置300にあらかじめ定められた8bitのマスク値「a」に基づいて生成されるマスク値である。
128bitのマスク値(imsk、omsk)は、16bitの乱数ビット列(imptn、omptn)のそれぞれのビットを8bitに拡張して生成される。例えば、乱数ビット列(imptn)が「1101010011010100」のとき、128bitのマスク値(imsk)は「a ̄||a ̄||a||a ̄||a||a ̄||a||a||a ̄||a ̄||a||a ̄||a||a ̄||a||a」とされる。なお、128bitのマスク値(omsk)を生成する方法についても同様である。
図9は、第1番の変形S箱群340aが備える変形S箱(S100、S101、S110、S111)341a〜344aの等価回路を左側に示すブロック図である。なお、図9に示す等価回路内部のAESのS箱(S1)が、図示しない第2番の変形S箱群340b〜第16番の変形S箱群340pにおいても同じ構成および動作であると理解する。
ここで、AESのS箱(Si)(i=1,2,・・・,16、ただしSiはすべて等しい)は、8bitのビット列xが入力された場合に、8bitの各ビット列Si(x)を出力する。つまり、変形S箱(Si00、Si01、Si10、Si11)341a〜344pは、8bitのビット列xが入力された場合に、8bitの各ビット列Si00(x)、Si01(x)、Si10(x)、Si11(x)を出力するものとする。
以下では、変形S箱(Si00、Si01、Si10、Si11)341a〜344pの入力「x」と出力Si00(x)、Si01(x)、Si10(x)、Si11(x)との関係を示す。なお、「+」は排他的論理和演算を示す。
即ち、変形S箱(Si00、Si01、Si10、Si11)341a〜344pは、「Si00(x)=Si(x+a)+a、Si01(x)=Si(x+a)+a ̄、Si10(x)=Si(x+a ̄)+a、Si11(x)=Si(x+a ̄)+a ̄」の演算が、入出力関係から導かれる変換テーブルに基づいて行われるように設計される。
なお、変形S箱(Si00、Si01、Si10、Si11)341a〜344pは、8本の入力線(1本が1bitに対応)と8本の出力線(1本が1bitに対応)とを備え、入力線と出力線とを接続する配線および論理素子(NAND、NORなど)の適切な組み合わせにより構成される。このとき、変形S箱(Si00、Si01、Si10、Si11)341a〜344pを実現する回路は、排他的論理和演算回路とAESのS箱回路とを連結して設計されるのではなく、上記入出力関係から導かれる新たな変換テーブルに基づいて設計される。
本発明の第2の実施形態に係る暗号化装置300の動作を、図8を用いてクロックサイクルごとに説明する。
[第1のクロックサイクル]
まず、乱数発生部は、乱数ビット列(imptn,omptn)を生成する。排他的論理和330aは、外部から受信した128bitの平文ブロックと、乱数ビット列(omptn)から計算されるマスク値(omsk)との排他的論理和演算を行う。この演算結果は、セレクタ310を介してレジスタ320に記憶される。なお、乱数ビット列(omptn)は、第1段の段関数(第2番目のクロックサイクル)で使用されるため、図示しないメモリに記憶される。
[第2〜10のクロックサイクル(第k段の段関数、k=1、2、・・・、9)]
まず、乱数発生部は、乱数ビット列(imptn,omptn)を生成する。排他的論理和330bは、レジスタ320に格納された128bitのビット列と、マスク値(imsk)との排他的論理和演算を行う。次の、排他的論理和330cは、排他的論理和330bの出力とマスク値(omskk−1)との排他的論理和演算を行う。その演算を受ける鍵加算350aは、さらに拡大鍵(rkeyk−1)との排他的論理和演算を行う。
このようにして得られたビット列は、8bitのビット列毎に16個のブロックに分割され、第1の変形S箱群〜第16の変形S箱群(340a〜340p)に入力される。即ち、第1〜第8ビットを第1のブロック、第9〜第16ビットを第2のブロック、・・・、第121〜第128ビットを第16のブロックとする。
第1の変形S箱群340a(変形S箱341a〜344a)は、第1のブロックを入力ビット列として、非線形変換を行う。同様にして、第2〜第16の変形S箱群340b〜340p(各変形S箱341b〜344p)は、第2〜第16のブロックを入力ビット列として、非線形変換を行う。
次に、セレクタ310a〜310pは、乱数ビット列(imptn、omptn)の第i番(i=1,2,・・・,16)のビットに基づき、変形S箱群340a〜340p毎に変形S箱(Si00,Si01,Si10,Si11)の出力を選択する。
例えば、第k段の段関数の乱数ビット列が「imptn=1101010011010100,omptn=0101101001011010」のとき、セレクタ310aは、「imptn」と「omptn」の第1番目のビットが「1」「0」であることから、第1の変形S箱群340aから「変形S箱(S110)343aの出力」を選択する。なお、セレクタ310a〜310pが選択する変形S箱(Sixy)の出力は、「imptn」の第i番目のビットを「x」に代入し、「omptn」の第i番目のビットを「y」に代入して同様に決定される。これにより、第2の変形S箱群〜第16の変形S箱群(340b〜340p)のセレクタ310b〜310pは、「S211、S300、S411、S501、S610、S701、S800、S910、S1011、S1100、S1211、S1301、S1410、S1501、S1600」の変形S箱の出力をそれぞれ選択する。
セレクタ310a〜310pにより選択された第1の変形S箱群〜第16の変形S箱群(340a〜340p)から出力される8bitのビット列は、順に連結され、128bitのビット列となって、ShiftRow370に供給される。
次に、ShiftRow370は、連結された128bitのビット列に対して、前述の変換処理を行う。なお、乱数ビット列(omptn)は、ShiftRow370で行われる処理に対応するように入れ替えられる。
MixColumn’380は、ShiftRow370の出力に対して、s’i,kのマスク値(aまたはa ̄)がsi,kのマスク値と一致するように処理を行う。具体的には、(s0,k,s1,k,s2,k,s3,k)に対応するマスク値を(a0,k,a1,k,a2,k,a3,k)とするとき、MixColumn’380は、(数3)に対応する処理を行う。
Figure 0004936996
なお、MixColumn’380は、ShiftRow370で行われる処理に対応するように、入れ替えられた乱数ビット列(omptn)を使用する。このような処理が行われた後、セレクタ310は、MixColumn’380の出力を選択し、レジスタ320に出力する。なお、乱数ビット列(omptn)は、第k+1段目の段関数で使用されるため、記憶される。
[第11のクロックサイクル(第10段の段関数)]
第2〜10のクロックサイクルで行われる第1〜9段目の段関数の動作と、レジスタ320に記憶されたビット列が、ShiftRow370による処理が行われるまでは、各段のマスク値に基づいて上述した動作を繰り返す。
第11のクロックサイクルでShiftRow370の出力は、鍵加算350bの入力となる。鍵加算350bは、ShiftRow370からの128bitの入力ビット列と拡大鍵(rkey10)との排他的論理和演算を行う。排他的論理和330dは、この鍵加算350bの演算結果と、ShiftRow370で行われる処理に対応するように入れ替えられた乱数ビット列(omptn10)との排他的論理和演算を行い、128bitの暗号文ブロックを出力する。
このように、第2の実施形態に係る暗号化装置300によれば、AESのS箱内部で、入力ビット列および出力ビット列に「a」あるいは「a ̄」によるマスク処理がなされたものとして、4種類の変形S箱を作成し、それらの変形S箱のいずれを使用するかをランダムに選択することにより、高次DPAへの耐性を確保することが可能となる。
なお、第2の実施形態に係る暗号化装置300と同様に、AESのS箱内部で、入力ビット列および出力ビット列に「a」あるいは「a ̄」によるマスク処理がなされたものとして作成された4種類の変形S箱を備え、それらの変形S箱のいずれを使用するかをランダムに選択することとした復号装置を構成することができ、高次DPAへの耐性を確保することが可能となる。
(第2の実施形態の変形例1)
第2の実施形態では、乱数発生部は、各段関数(第1段から第10段まで)の演算が行われる度に、2つの16bitの乱数ビット列(imptn、omptn)を発生するものとして説明を行った。
これに対して第2の実施形態の変形例1では、乱数発生部が、例えば、第1段の段関数の演算で2つの16bitの乱数ビット列(mptn、mptn)を発生させ、第k段の段関数(k=2,・・・,10)の演算で、1つの16bitの乱数ビット列(mptn)を発生させる。
図10は、本発明の第2の実施形態の変形例1に係る暗号化装置300を示すブロック図である。
この変形例1に係る暗号化装置300は、排他的論理和330b、330cが無い点で第2の実施形態と相異する。また、第2の実施形態に係る乱数発生部が第k段目の段関数の演算で発生させた乱数ビット列(imptn)を、変形例1に係る乱数発生部が第k−1段目の段関数の演算で発生させた乱数ビット列(mptnk−1)とする。また、第2の実施形態に係る乱数発生部が第k段目の段関数の演算で発生させた乱数ビット列(omptn)を、変形例1に係る乱数発生部が第k段目の段関数の演算で発生させた乱数ビット列(mptn)とする。
なお、変形例1に係る暗号化装置300の動作は、排他的論理和330b、330cの動作がない点と、演算に使用する乱数ビット列が上記の通りである点が第2の実施形態と相違する。
ここで、変形例1に係る暗号化装置300では、排他的論理和330b、330cが無い理由を以下に説明する。
第2の実施形態の変形例1に係る暗号化装置300では、第k段の段関数の演算を行う際に、第k段と第k−1段の段関数の演算時に発生させた乱数ビット列(mptn、mptnk−1)を用いてマスク処理およびマスクの除去処理を行う。そのため、排他的論理和330b、330cが排他的論理和演算を行う際に用いるマスク値が双方ともに(mskk−1)となり、排他的論理和130a、130bが不要となる。
このように第2の実施形態の変形例1に係る暗号化装置300によれば、4種類のS箱を利用することでDPA、高次DPAによる解析を困難なものとし、かつ、暗号化のための演算を行う際の乱数ビット列の発生回数を削減することが可能となる。よって、第2の実施形態の変形例1に係る暗号化装置300は、演算速度を高速化できる。
また、暗号化演算を行う際の乱数ビット列の発生回数を削減することを可能とし、かつ、4種類のS箱を利用することでDPA、高次DPAによる解析を困難なものとすることができる復号装置を構成することができる。
(第2の実施形態の変形例2)
第2の実施形態では、AESのS箱内部で、入力ビット列に「a」あるいは「a ̄」によるマスク処理がなされ、出力ビット列に「a」あるいは「a ̄」によるマスク処理がなされたものとして、4種類の変形S箱(Si00,Si01,Si10,Si11)(i=1,2,・・・,8)を用意するものとして説明を行った。
これに対して第2の実施形態の変形例2では、例えば、2種類の変形S箱(Si00,Si10)を用意し、その2つの変形S箱の出力をそれぞれ全ビット反転させる2つの排他的論理和を用意する。
図11は、本発明の第2の実施形態の変形例2に係る暗号化装置300を示すブロック図である。
この変形例2に係る暗号化装置300は、2つの変形S箱(S101、S111)342a、344aが無く、変形S箱(S100)341aの出力を全ビット反転する排他的論理和330xと、変形S箱(S111)343aの出力を全ビット反転する排他的論理和330yとをさらに備える点で第2の実施形態と相異する。
なお、第2の実施形態の変形例2に係る暗号化装置100の動作は、変形S箱(S101、S111)の動作(非線形データ変換)がない点と、排他的論理和330xが変形S箱(S100)341aの出力を全ビット反転し、排他的論理和330yが変形S箱(S111)343aの出力を全ビット反転する点、およびセレクタ310aが、入力される変形S箱(S100)341a、排他的論理和330x、変形S箱(S110)343a、あるいは排他的論理和330yのいずれか1つの出力を、乱数ビット列(imptn、omptn)を用いて選択する点が第2の実施形態と相異する。
このように第2の実施形態の変形例2に係る暗号化装置300によれば、2種類の変形S箱(例えば、S100、S110)とそれらの出力のビット反転を行う素子を利用することでDPA、高次DPAによる解析を困難なものとし、この暗号化装置300の回路規模を削減させることが可能である
また、2種類の変形S箱(例えば、S100、S110)とそれらの出力のビット反転を行う素子を利用することで回路規模を削減することができ、かつ、DPA、高次DPAによる解析を困難なものとする復号装置を構成することができる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
暗号アルゴリズムDESによる暗号化装置の基本構成を示すブロック図。 暗号アルゴリズムDESの第1段目の段関数の基本構成を示すブロック図。 本発明の第1の実施形態に係る暗号演算回路の構成を示すブロック図。 本発明の第1の実施形態に係る変形S箱(S100、S101、S110、S111)の等価回路を示すブロック図。 本発明の第1の実施形態の変形例1に係る暗号演算回路の構成を示すブロック図。 本発明の第1の実施形態の変形例2に係る暗号演算回路の構成を示すブロック図。 暗号アルゴリズムAESによる暗号化装置の基本構成を示すブロック図。 本発明の第2の実施形態に係る暗号演算回路の構成を示すブロック図。 本発明の第2の実施形態に係る変形S箱(S100、S101、S110、S111)の等価回路を示すブロック図。 本発明の第2の実施形態の変形例1に係る暗号演算回路の構成を示すブロック図。 本発明の第2の実施形態の変形例2に係る暗号演算回路の構成を示すブロック図。
符号の説明
5・・・暗号化装置
9・・・平文ブロック
10・・・初期転置部(IP)
19・・・鍵情報
20・・・鍵スケジュール部
21a、21b、21p・・・拡大鍵
30a・・・段関数(第1段)
30b・・・段関数(第2段)
30p・・・段関数(第16段)
31・・・拡大転置部(E)
33a・・・DESのS箱(S1)
33b・・・DESのS箱(S2)
33h・・・DESのS箱(S8)
34・・・転置部(P)
35、37・・・排他的論理和
40・・・最終転置部(FP)
41・・・暗号文ブロック
100・・・暗号化装置
105・・・初期転置部(IP)
110a、110L、110R・・・セレクタ
120L、120R・・・レジスタ
130a〜130h、130A〜130D、130x、130y・・・排他的論理和
140a・・・変形S箱群
141a・・・変形S箱(S100
142a・・・変形S箱(S101
143a・・・変形S箱(S110
144a・・・変形S箱(S111
145・・・乱数発生部
150・・・拡大転置部(E)
160・・・転置部(P)
165・・・最終転置部
200a・・・段関数(第1段)
200i・・・段関数(第9段)
200j・・・段関数(第10段)
205・・・暗号化装置
209・・・平文ブロック
210a、210j・・・SubByte
220a、220j・・・ShiftRow
230a・・・MixColumn
240、240a、240j・・・鍵加算部
241・・・暗号文ブロック
249・・・鍵情報
250・・・鍵スケジュール部
251、251a、251i、251j・・・拡大鍵
300・・・暗号化装置
310、310a・・・セレクタ
320・・・レジスタ
330a、330b、330c、330d、330x、330y・・・排他的論理和
340a・・・変形S箱群
341a・・・変形S箱(S100
342a・・・変形S箱(S101
343a・・・変形S箱(S110
344a・・・変形S箱(S111
345・・・乱数発生部
350a、350b・・・鍵加算部
360・・・SubByte’
370・・・ShiftRow
380・・・MixColumn’

Claims (6)

  1. 入力ビット列を、第1のマスク値を用いてマスク処理し、そのマスク処理されたビット列を暗号または復号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を第2のマスク値を用いてマスク処理して得られるビット列と等しい第1の出力ビット列に変換する第1のデータ変換手段と、
    前記入力ビット列を前記第1のマスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第2のマスク値のビット反転である第2の反転マスク値を用いてマスク処理して得られるビット列と等しい第2の出力ビット列に変換する第2のデータ変換手段と、
    前記入力ビット列を前記第1のマスク値のビット反転である第1の反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第2のマスク値を用いてマスク処理して得られるビット列と等しい第3の出力ビット列に変換する第3のデータ変換手段と、
    前記入力ビット列を前記第1の反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第2の反転マスク値を用いてマスク処理して得られるビット列と等しい第4の出力ビット列に変換する第4のデータ変換手段と、
    乱数ビット列を生成する生成手段と、
    前記乱数ビット列に従い、前記第1のデータ変換手段乃至前記第4のデータ変換手段が出力した前記第1の出力ビット列乃至前記第4の出力ビット列のうち、いずれか1つを選択する選択手段と
    を備えることを特徴とする非線形データ変換器。
  2. 入力ビット列を、第1のマスク値を用いてマスク処理し、そのマスク処理されたビット列を暗号または復号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を第2のマスク値を用いてマスク処理して得られるビット列と等しい第1の出力ビット列に変換する第1のデータ変換手段と、
    前記第1のデータ変換手段が出力する前記第1の出力ビット列をビット反転し、第2の出力ビット列として出力する第1の反転手段と、
    前記入力ビット列を前記第1のマスク値のビット反転である第1の反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号または前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第2のマスク値を用いてマスク処理して得られるビット列と等しい第3の出力ビット列に変換する第2のデータ変換手段と、
    前記第2のデータ変換手段が出力する前記第3の出力ビット列をビット反転し、第4の出力ビット列として出力する第2の反転手段と、
    乱数ビット列を生成する生成手段と、
    前記乱数ビット列に従い、前記第1のデータ変換手段が出力した前記第1の出力ビット列、前記第1の反転手段が出力した前記第2の出力ビット列、前記第2のデータ変換手段が出力した前記第3の出力ビット列、または前記第2の反転手段が出力した前記第4の出力ビット列のうち、いずれか1つを選択する選択手段と
    を備えることを特徴とする非線形データ変換器。
  3. 秘密情報である鍵情報から第j(jは1以上z以下の整数;zは2以上の整数)拡大鍵を生成する鍵スケジュール手段と、第j乱数ビット列を生成する乱数生成手段と、前記第j乱数ビット列とあらかじめ定められた第1のマスク値および第2のマスク値とに基づいて第j段第1マスク値および第j段第2マスク値を作成するマスク作成手段と、外部から入力された平文ブロックに基づくビット列から第1段ビット列を出力する前処理部と、第j段ビット列に対して暗号化演算を行い第j+1段ビット列を出力する第j段の段関数演算部と、第z+1段ビット列に基づき暗号化結果を出力する後処理部とを備える暗号化装置であって、
    前記第j段の段関数演算部が、
    前記第j段ビット列に基づく変換前ビット列を、前記第j段第1マスク値を用いてマスク処理し、そのマスク処理されたビット列を暗号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を前記第j段第2マスク値を用いてマスク処理して得られるビット列と等しい第1の変換後ビット列に変換する第1のデータ変換手段と、
    前記変換前ビット列を前記第j段第1マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第j段第2マスク値のビット反転である第j段第2反転マスク値を用いてマスク処理して得られるビット列と等しい第2の変換後ビット列に変換する第2のデータ変換手段と、
    前記変換前ビット列を前記第j段第1マスク値のビット反転である第j段第1反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第j段第2マスク値を用いてマスク処理して得られるビット列と等しい第3の変換後ビット列に変換する第3のデータ変換手段と、
    前記変換前ビット列を前記第j段第1反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第j段第2反転マスク値を用いてマスク処理して得られるビット列と等しい第4の変換後ビット列に変換する第4のデータ変換手段と、
    前記第j乱数ビット列に従い、前記第1のデータ変換手段乃至前記第4のデータ変換手段が出力した前記第1の変換後ビット列乃至前記第4の変換後ビット列のうち、いずれか1つを選択する選択手段と、
    前記選択手段により選択された前記変換後ビット列に基づくビット列を前記第j+1段ビット列として出力する出力手段と
    を備えることを特徴とする暗号化装置。
  4. 秘密情報である鍵情報から第j(jは1以上z以下の整数;zは2以上の整数)拡大鍵を生成する鍵スケジュール手段と、第j乱数ビット列を生成する乱数生成手段と、前記第j乱数ビット列とあらかじめ定められた第1のマスク値および第2のマスク値とに基づいて第j段第1マスク値および第j段第2マスク値を作成するマスク作成手段と、外部から入力された暗号文ブロックに基づくビット列から第1段ビット列を出力する前処理部と、第j段ビット列に対して復号演算を行い第j+1段ビット列を出力する第j段の段関数演算部と、第z+1段ビット列に基づき復号結果を出力する後処理部とを備える復号装置であって、
    前記第j段の段関数演算部が、
    前記第j段ビット列に基づく変換前ビット列を、前記第j段第1マスク値を用いてマスク処理し、そのマスク処理されたビット列を復号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を前記第j段第2マスク値を用いてマスク処理して得られるビット列と等しい第1の変換後ビット列に変換する第1のデータ変換手段と、
    前記変換前ビット列を前記第j段第1マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第j段第2マスク値のビット反転である第j段第2反転マスク値を用いてマスク処理して得られるビット列と等しい第2の変換後ビット列に変換する第2のデータ変換手段と、
    前記変換前ビット列を前記第j段第1マスク値のビット反転である第j段第1反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第j段第2マスク値を用いてマスク処理して得られるビット列と等しい第3の変換後ビット列に変換する第3のデータ変換手段と、
    前記変換前ビット列を前記第j段第1反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第j段第2反転マスク値を用いてマスク処理して得られるビット列と等しい第4の変換後ビット列に変換する第4のデータ変換手段と、
    前記第j乱数ビット列に従い、前記第1のデータ変換手段乃至前記第4のデータ変換手段が出力した前記第1の変換後ビット列乃至前記第4の変換後ビット列のうち、いずれか1つを選択する選択手段と、
    前記選択手段により選択された前記変換後ビット列に基づくビット列を前記第j+1段ビット列として出力する出力手段と
    を備えることを特徴とする復号装置。
  5. 秘密情報である鍵情報から第j(jは1以上z以下の整数;zは2以上の整数)拡大鍵を生成する鍵スケジュール手段と、第j乱数ビット列を生成する乱数生成手段と、前記第j乱数ビット列とあらかじめ定められた第1のマスク値および第2のマスク値とに基づいて第j段第1マスク値および第j段第2マスク値を作成するマスク作成手段と、外部から入力された平文ブロックに基づくビット列から第1段ビット列を出力する前処理部と、第j段ビット列に対して暗号化演算を行い第j+1段ビット列を出力する第j段の段関数演算部と、第z+1段ビット列に基づき暗号化結果を出力する後処理部とを備える暗号化装置であって、
    前記第j段の段関数演算部が、
    前記第j段ビット列に基づく変換前ビット列を、前記第j段第1マスク値を用いてマスク処理し、そのマスク処理されたビット列を暗号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を前記第j段第2マスク値を用いてマスク処理して得られるビット列と等しい第1の変換後ビット列に変換する第1のデータ変換手段と、
    前記第1のデータ変換手段が出力する前記第1の変換後ビット列をビット反転し、第2の変換後ビット列として出力する第1の反転手段と、
    前記変換前ビット列を前記第j段第1マスク値のビット反転である第j段第1反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記暗号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第j段第2マスク値を用いてマスク処理して得られるビット列と等しい第3の変換後ビット列に変換する第2のデータ変換手段と、
    前記第2のデータ変換手段が出力する前記第3の変換後ビット列をビット反転し、第4の変換後ビット列として出力する第2の反転手段と、
    前記第j乱数ビット列に従い、前記第1の変換後ビット列乃至前記第4の変換後ビット列のうち、いずれか1つを選択する選択手段と、
    前記選択手段により選択された前記変換後ビット列に基づくビット列を前記第j+1段ビット列として出力する出力手段と
    を備えることを特徴とする暗号化装置。
  6. 秘密情報である鍵情報から第j(jは1以上z以下の整数;zは2以上の整数)拡大鍵を生成する鍵スケジュール手段と、第j乱数ビット列を生成する乱数生成手段と、前記第j乱数ビット列とあらかじめ定められた第1のマスク値および第2のマスク値とに基づいて第j段第1マスク値および第j段第2マスク値を作成するマスク作成手段と、外部から入力された暗号文ブロックに基づくビット列から第1段ビット列を出力する前処理部と、第j段ビット列に対して復号演算を行い第j+1段ビット列を出力する第j段の段関数演算部と、第z+1段ビット列に基づき復号結果を出力する後処理部とを備える復号装置であって、
    前記第j段の段関数演算部が、
    前記第j段ビット列に基づく変換前ビット列を、前記第j段第1マスク値を用いてマスク処理し、そのマスク処理されたビット列を復号方式として定められた非線形変換方式に従いデータ変換し、その変換されたビット列を前記第j段第2マスク値を用いてマスク処理して得られるビット列と等しい第1の変換後ビット列に変換する第1のデータ変換手段と、
    前記第1のデータ変換手段が出力する前記第1の変換後ビット列をビット反転し、第2の変換後ビット列として出力する第1の反転手段と、
    前記変換前ビット列を前記第j段第1マスク値のビット反転である第j段第1反転マスク値を用いてマスク処理し、そのマスク処理されたビット列を前記復号方式として定められた前記非線形変換方式に従いデータ変換し、その変換されたビット列を前記第j段第2マスク値を用いてマスク処理して得られるビット列と等しい第3の変換後ビット列に変換する第2のデータ変換手段と、
    前記第2のデータ変換手段が出力する前記第3の変換後ビット列をビット反転し、第4の変換後ビット列として出力する第2の反転手段と、
    前記第j乱数ビット列に従い、前記第1の変換後ビット列乃至前記第4の変換後ビット列のうち、いずれか1つを選択する選択手段と、
    前記選択手段により選択された前記変換後ビット列に基づくビット列を前記第j+1段ビット列として出力する出力手段と
    を備えることを特徴とする復号装置。
JP2007137842A 2007-05-24 2007-05-24 非線形データ変換器、暗号化装置、および復号装置 Expired - Fee Related JP4936996B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007137842A JP4936996B2 (ja) 2007-05-24 2007-05-24 非線形データ変換器、暗号化装置、および復号装置
US12/053,143 US8401180B2 (en) 2007-05-24 2008-03-21 Non-linear data converter, encoder and decoder
EP08009368A EP1995906A1 (en) 2007-05-24 2008-05-21 Non-linear data converter, encoder and decoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007137842A JP4936996B2 (ja) 2007-05-24 2007-05-24 非線形データ変換器、暗号化装置、および復号装置

Publications (2)

Publication Number Publication Date
JP2008292742A JP2008292742A (ja) 2008-12-04
JP4936996B2 true JP4936996B2 (ja) 2012-05-23

Family

ID=39523743

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007137842A Expired - Fee Related JP4936996B2 (ja) 2007-05-24 2007-05-24 非線形データ変換器、暗号化装置、および復号装置

Country Status (3)

Country Link
US (1) US8401180B2 (ja)
EP (1) EP1995906A1 (ja)
JP (1) JP4936996B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4687775B2 (ja) * 2008-11-20 2011-05-25 ソニー株式会社 暗号処理装置
JP5202350B2 (ja) * 2009-01-16 2013-06-05 三菱電機株式会社 暗号処理装置及び暗号処理方法及び暗号処理プログラム
FR2941342B1 (fr) * 2009-01-20 2011-05-20 Groupe Des Ecoles De Telecommunications Get Ecole Nat Superieure Des Telecommunications Enst Circuit de cryptographie protege contre les attaques en observation, notamment d'ordre eleve.
US8687802B2 (en) * 2009-03-30 2014-04-01 The Regents Of The University Of California Method and system for accelerating the deterministic enciphering of data in a small domain
JP2010245881A (ja) * 2009-04-07 2010-10-28 Toshiba Corp 暗号処理装置
FR2952773B1 (fr) * 2009-11-13 2012-07-20 Inst Telecom Telecom Paristech Circuit electronique de faible complexite protege par masquage personnalise
WO2011101994A1 (ja) * 2010-02-22 2011-08-25 株式会社東芝 暗号化装置
JP5060606B2 (ja) * 2010-09-17 2012-10-31 株式会社東芝 暗号化装置
US8958550B2 (en) * 2011-09-13 2015-02-17 Combined Conditional Access Development & Support. LLC (CCAD) Encryption operation with real data rounds, dummy data rounds, and delay periods
JP5481455B2 (ja) * 2011-09-27 2014-04-23 株式会社東芝 暗号処理装置
JP5818768B2 (ja) * 2012-10-18 2015-11-18 日本電信電話株式会社 マスク生成装置、情報処理装置、及びその方法、プログラム
JPWO2015059845A1 (ja) * 2013-10-24 2017-03-09 日本電気株式会社 暗号化処理回路及びその方法及びプログラム並びに復号処理回路
DE102014004378A1 (de) * 2014-03-26 2015-10-01 Giesecke & Devrient Gmbh Speichereffiziente seitenkanalgeschützte Maskierung
DE102015116049B3 (de) * 2015-09-23 2017-02-16 Infineon Technologies Ag Nulldetektionsschaltkreis und maskierter boolescher oder-schaltkreis
WO2017145317A1 (ja) * 2016-02-25 2017-08-31 楽天株式会社 ブロック符号化装置、ブロック復号化装置、情報処理装置、プログラム、ブロック符号化方法及びブロック復号化方法
CN109951268B (zh) * 2019-02-18 2020-12-22 吉林大学珠海学院 基于位置换和位变换的加密解密方法和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3600454B2 (ja) * 1998-08-20 2004-12-15 株式会社東芝 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体
JP3844116B2 (ja) * 2001-04-16 2006-11-08 株式会社ルネサステクノロジ 暗号化・復号化装置とicカード
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
EP1486026A1 (en) * 2002-03-07 2004-12-15 Axalto SA Method for making safe an electronic cryptography assembly with a secret key
GB0211812D0 (en) * 2002-05-23 2002-07-03 Koninkl Philips Electronics Nv S-box encryption in block cipher implementations
FR2880485B1 (fr) * 2005-01-06 2007-03-16 Canon Europa Nv Naamlooze Venn Procedes de stockage et de lecture d'un contenu, du type mettant en oeuvre un protocole de protection de contenu, dispositifs source, de stockage et recepteur correspondants.
JP4783104B2 (ja) 2005-09-29 2011-09-28 株式会社東芝 暗号化/復号装置

Also Published As

Publication number Publication date
US8401180B2 (en) 2013-03-19
EP1995906A1 (en) 2008-11-26
JP2008292742A (ja) 2008-12-04
US20080292100A1 (en) 2008-11-27

Similar Documents

Publication Publication Date Title
JP4936996B2 (ja) 非線形データ変換器、暗号化装置、および復号装置
JP4127472B2 (ja) データ変換装置及びデータ変換装置のデータ変換方法及びプログラム及びコンピュータ読み取り可能な記録媒体
US6769063B1 (en) Data converter and recording medium on which program for executing data conversion is recorded
US8731188B2 (en) Cryptographic processing apparatus and cryptographic processing method, and computer program
WO2009122464A1 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
JPH0863097A (ja) データを暗号化するための対称暗号化方法およびシステム
TWI595460B (zh) Data processing device, information processing device, data processing method and program
WO2009087972A1 (ja) データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム
WO2008026622A1 (en) Encryption device, encryption method, and computer program
JP4515716B2 (ja) 拡大鍵生成装置、暗号化装置および暗号化システム
JPWO2010109516A1 (ja) データ処理装置及びデータ処理方法
JP3782210B2 (ja) 暗号装置
JP2002510058A (ja) 2進データ・ブロックの暗号変換のための方法
JP6089668B2 (ja) 暗号化処理回路及び復号処理回路とその方法並びにそのプログラム
JP2010507813A (ja) 中央演算処理装置の演算能力を高めるための暗号方法および暗号装置
JPWO2008117804A1 (ja) ストリーム暗号向け擬似乱数生成装置とプログラムと方法
JP5500277B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
Algazy et al. Investigation of the different implementations for the new cipher Qamal
JP3017726B2 (ja) データ変換装置
JP3478306B2 (ja) 暗号装置
JP2000089666A (ja) 暗号化/復号化装置
JP3017725B2 (ja) データ変換装置
JP5223245B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5338945B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JPWO2009034929A1 (ja) 暗号化方法、暗号装置及び暗号処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100426

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

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120119

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120221

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150302

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150302

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees