JP2005134477A - 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム - Google Patents

暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Download PDF

Info

Publication number
JP2005134477A
JP2005134477A JP2003367746A JP2003367746A JP2005134477A JP 2005134477 A JP2005134477 A JP 2005134477A JP 2003367746 A JP2003367746 A JP 2003367746A JP 2003367746 A JP2003367746 A JP 2003367746A JP 2005134477 A JP2005134477 A JP 2005134477A
Authority
JP
Japan
Prior art keywords
processing
round
bit
unit
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.)
Pending
Application number
JP2003367746A
Other languages
English (en)
Inventor
Masashi Kanamaru
昌司 金丸
Joshi Abe
譲司 阿部
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2003367746A priority Critical patent/JP2005134477A/ja
Publication of JP2005134477A publication Critical patent/JP2005134477A/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]

Landscapes

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

Abstract

【課題】 消費電力の測定による暗号解析を困難としセキュリティレベルの高い暗号処理装置および方法を実現する。
【解決手段】 ラウンド関数部に設定される非線形変換処理部(Sボックス)を、複数の異なる態様の非線形変換処理を選択的に実行可能な構成とし、ラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理の結果を制御ビットとして、非線形変換処理部(Sボックス)に出力し、制御ビットに基づいて非線形変換処理態様を決定して、決定した非線形変換処理を実行する。この構成によれば、電力差分解析(DPA)を適用した暗号解析に要する計算量を飛躍的に増大させることが可能となり、電力差分解析(DPA)による解析困難性を高めることが可能となる。
【選択図】 図7

Description

本発明は、暗号処理装置および暗号処理方法に関する。さらに詳細には、暗号処理を実行する例えばICモジュール等の演算回路における電力解析に基づく暗号解析に対する耐性の高い暗号処理を実現する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の1つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
例えばICカード等の小型の装置中に暗号処理モジュールを埋め込み、ICカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号化を行なうシステムが実用化されている。
暗号処理モジュールにおいては、例えば、平文を入力し暗号文を出力するデータ暗号化処理、あるいは暗号文を入力し平文を出力する復号化処理が実行される。これらの暗号処理は、暗号処理モジュールを構成するハードウェア、例えば半導体による電気的な処理を含む。従って、このような半導体モジュールにおいて暗号処理が実行される際の電力消費を解析することで、暗号処理の適用鍵や、アルゴリズムが解析されてしまうという恐れがある。
例えば、IC等の演算処理装置に対する攻撃、すなわち暗号解読攻撃として、処理時間を解析することによる秘密情報を推定するタイミングアタック(TA:Timing attack)、暗号処理時の消費電力の観測により秘密情報を推定する単純電力解析(SPA:Simple Power Analysis)、さらに、大量のデータに対する暗号処理における消費電力を測定し、それらの測定データを統計的に解析することにより秘密情報を推定する電力差分解析(DPA:Differential Power Analysis)等がある。
一般的な暗号処理装置は、データ入力部と記憶部と暗号処理部、およびデータ出力部とから構成されており、例えば入力データの暗号化を行う場合は、次のように動作する。すなわち、データ入力部から暗号処理部に平文が入力される。暗号処理部は、例えばDES(Data Encryption Standard)などの暗号処理アルゴリズムを実行する処理部において一定の暗号処理アルゴリズムに従ったデータ処理がなされる。
暗号処理アルゴリズムの実行過程において生成される中間データを逐次、記憶部に格納し、また記憶部に格納した中間データを取得して予め定められた一定の処理順序に従って暗号化処理が実行される。暗号処理部において、予め定められた一連の暗号処理アルゴリズムが終了すると、生成暗号文が出力部を介して出力される。
このような暗号処理装置において、暗号化処理の開始時から特定の暗号化中間処理手続きが開始されるまでに要する時間は、おおよそ一定になる。なお、暗号アルゴリズムの実装方法については、例えば非特許文献1に詳しく述べられている。
このような暗号処理装置は、前述した単純電力解析(シンプル・パワー・アナリシス)や電力差分解析(ディファレンシャル・パワー・アナリシス)と呼ばれる暗号解析法を適用することで、暗号処理に適用する鍵情報や、アルゴリズムが解析される恐れがある。
単純電力解析および電力差分解析は、現在のメモリやレジスタ等の半導体デバイスにおいて、特定の時刻に、半導体デバイスの保持する値に変化が生じた場合と、保持する値に変化が生じなかった場合とで、消費電力に差が発生するという特徴を利用して、暗号処理装置が暗号処理を実行している様々なタイミングにおいて消費電力を測定することにより、暗号処理装置が保持している暗号鍵等の秘密情報を特定する暗号解析法である。
単純電力解析や電力差分解析が有効に機能する条件としては、第1に消費電力を測定している各時点で行われている暗号処理手続きが特定できること、第2に各時刻で測定した消費電力の値が当該時刻において暗号化装置内で行われている暗号化処理の演算結果を顕著に反映していることの2点が挙げられる。
従来の暗号化装置、復号化装置および暗号化・復号装置等の暗号処理装置においては、上記の2点の条件が満たされてしまうために、単純電力解析や電力差分解析が有効に機能し、暗号の解読が可能になりうるという問題点が存在している。
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号化鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号化鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
共通鍵暗号方式の1つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いて暗号処理を繰り返し実行する方式がある。このような鍵生成方式を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を実行するラウンド関数部と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部とに分けることができる。ラウンド関数部の各ラウンドで適用するラウンド鍵(副鍵)は、1つのマスター鍵(主鍵)に基づいて、鍵スケジュール部に入力されて生成され、各ラウンド関数部で適用される。この共通鍵暗号方式の代表的な方式に米国連邦標準暗号方式としてのDES(Data Encryption Standard)がある。
しかし、このような共通鍵暗号処理においては、暗号解析による鍵、あるいは暗号アルゴリズムの漏洩が問題となっている。暗号解析手法としては、上述したように複数の種類がある。まず、単純電力解析(SPA:Simple Power Analysis)について説明する。スマートカードなどの耐タンパデバイスのほとんどはトランジスタで構成された論理回路からなり、ゲートに電圧が加えられたときに電流が流れ、電力が消費される。一般に回路の消費電力は、実行している演算と用いられているデータの値に関係する。例えば、乗法演算は0を書き込む場合よりも1を書き込む場合のほうが消費電力が大きくなり、乗法演算と平方演算ではそれぞれ異なる電力を消費する。
このように演算やデータ値に応じて電力消費量が変動することから、秘密情報を用いた演算を行っているデバイスの消費電力の変化を観察することで、秘密情報に関してハミングウェイトなどの情報を得ることが可能となり、エントロピーを小さくすることができる。消費電力の変化を直接解析に用いる方法を単純電力解析と呼ぶ。
デバイスの消費電力は、デバイスと電源または接地との間に抵抗を直列に挿入し、抵抗を流れる電流値から求めることができる。実際に共通鍵暗号の演算を行っているスマートカードに対して消費電力測定を行うと、測定波形より共通鍵暗号の各段の演算がはっきり確かめられる。さらに、消費電力波形を詳しく解析することにより鍵レジスタの交換等の情報を得ることができる。
次に、電力差分解析(DPA:Differential Power Analysis)について説明する。耐タンパデバイスの消費電力は一般に演算内容と演算に用いられている秘密情報に依存する。しかしこれらの内容に依存した消費電力の変化は小さく、測定誤差やノイズなどから見分けることは一般に困難である。
そこでKocherらは大量の測定値の平均をとって測定誤差やノイズなどの影響を小さくし、全データの平均値との差分を取ることで演算プロセスによる電力消費の影響を除いて、用いられる秘密情報による消費電力の変化のみを取り出す方法(電力差分解析)を提案した。
KocherらはDESに対する適用例を示している。まず、ラウンド関数部の第1段、または第16段に入る鍵の一部のビットについて予想し、第1段、または第16段の最後にメモリに書きこまれると予想されるデータの1ビットの値に注目して、その値に従って消費電力の観測データを分類する。次にそれぞれのグループについて測定値の平均をとり、それらの差分をとる。予想が正しい場合注目したビットが演算に用いられるとき消費電力の差分が大きくなる。予想が異なる場合目立った差分は確認されない。このような事象確認処理に基づいて、暗号処理に適用した鍵の構成ビットを順次求めるものである。
このKocherらの提案に基づく暗号解析手法によれば、DESの第1段及び第16段のラウンド鍵を推定することが可能となる。
一方、Lucifer(ルシファー)とよばれる暗号アルゴリズムが1984年にArthur Sorkinによって提案されている。Luciferは、上述のDESとは異なる暗号処理アルゴリズムを持つ。
DESアルゴリズムでは、各ラウンド関数部内に設定される非線形変換部としてのSボックス(Sbox)が固定的な1種類の非線形変換部における処理を実行する構成であるが、Luciferは、各ラウンド関数内に設定される非線形変換部としてのSボックス(Sbox)が固定的でなく、各ラウンドに入力されるラウンド鍵の値に応じて、2種類のSボックス(Sbox)から一つが選択され、選択されたSボックス(Sbox)において非線形変換処理が実行される構成を持つ。なお、Luciferの各ラウンド関数部としてのF関数の構造については、非特許文献2に記述されている。
暗号処理を実行する例えばICモジュールは、例えば駅の改札などの様々なゲート、あるいはショッピングセンターなどで盛んに利用されるようになっており、小型化および処理の迅速化の要求が厳しくなってきている。従って、処理アルゴリズムを複雑化させることなく、かつ、電力解析に対する耐性のある構成が必要とされている。
『「Applied Cryptography 」(Bruce Shneier 著) John Wieley& Sons ,Inc .,1996 ,ISBN 0 −471 −11709 −9 ,pp .623 −673 』 『Di.erential Cryptanalysis of Lucifer",Ishai Ben−Aroya,Eli Biham,CRYPTO93』
上述のLuciferの暗号処理アルゴリズムを適用すると、各ラウンド関数内に設定される非線形変換部としてのSボックス(Sbox)が固定的でなく、各ラウンドに入力されるラウンド鍵の値に応じて、2種類のSボックス(Sbox)から一つが選択され、選択されたSボックス(Sbox)において非線形変換処理が実行され、ラウンド鍵の値によって選択されるSボックスが変更されるため、各ラウンドにおいて固定的なSボックスを適用するDESアルゴリズムに比較すると、電力差分解析(DPA)を困難にすることができる。
しかし、Luciferの暗号処理アルゴリズムでは、各ラウンドにおいて設定されている2種類の異なるSボックスから、どちらのSボックスを選択するかを、各ラウンドに入力されるラウンド鍵の構成ビットそのものである1ビットを制御ビットとして抽出し、この1ビットの制御ビットに基づいて線形変換処理態様を決定する構成である。従って、電力差分解析(DPA)に対する耐性という観点からみると、Sボックスを各ラウンドにおいて固定した場合に比較して、僅かに(1ビット分)の解析困難性を高めているに過ぎないものである。
すなわち、Luciferの暗号処理アルゴリズムに対して電力差分解析(DPA)を実行して、あるラウンド関数部内のSボックスに入る鍵ビット情報をDPAによって求める際、その鍵ビット全てについて、入出力の偏りを検証する必要があるが、選択鍵に対して選択されるボックスは一意的に決まるため、2種類のSボックスで分類して、各々のケースについて入出力の偏りを検証することにより、計算量をあまり増やすことなく全鍵ビットを導出することが可能である。
このように、各ラウンド関数部において固定的な非線形変換処理部としてのSボックスを設定したDESアルゴリズムにおいても、ラウンド関数部において複数の非線形変換処理部としてのSボックスを設定し、これを選択的に適用するLuciferアルゴリズムにおいても、電力差分解析(DPA)に対する高い耐性を有するものとは言い難い。
本発明は、このような問題点に鑑みてなされたものであり、処理アルゴリズムを複雑化させることなく、暗号処理シーケンスの持つ規則的な処理に伴う消費電力変動の検出等に基づく電力解析による暗号解析の困難性を高めることを可能とした暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
本発明の第1の側面は、
複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置であり、
各段のラウンド関数部に設定され、複数の異なる態様の非線形変換処理を選択的に実行可能な構成を持つ非線形変換処理部と、
前記ラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理を実行し、前記非線形変換処理部に出力する制御ビットの算出処理を実行する演算部とを有し、
前記非線形変換処理部は、前記演算部から入力する制御ビットに基づいて非線形変換処理態様を決定し、決定した非線形変換処理を実行する構成を有することを特徴とする暗号処理装置にある。
さらに、本発明の暗号処理装置の一実施態様において、前記演算部は、ラウンド関数部に入力されるラウンド鍵のビット情報に基づくパリティ算出を実行し、算出したパリティビットを前記非線形変換処理部に対する制御ビットして出力する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記非線形変換処理部は、ラウンド関数部に複数設定された構成であり、前記演算部は、ラウンド関数部に入力されるラウンド鍵から選択した複数の異なる部分ビット情報に基づいて、複数の異なるパリティを算出し、算出した複数のパリティをラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットとして出力する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記演算部は、ラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットを、前記複数の非線形変換処理部各々に対応する入出力データとの排他論理和演算の対象とならないラウンド鍵の部分ビット情報に基づくパリティとして算出する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記演算部は、ラウンド鍵を構成するnビットの部分ビットデータを、ガロア体GF(2)上の元とみなし、ガロア体上の演算を実行して算出したnビットデータの構成ビットを、前記非線形変換処理部に設定された複数のラウンド関数部各々に対する制御ビットとして出力する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記非線形変換処理部は、複数の非線形変換テーブルを有し、該複数の非線形変換テーブルの適用態様を変更することにより、複数の異なる態様の非線形変換処理を選択的に実行する構成であることを特徴とする。
さらに、本発明の第2の側面は、
複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理方法であり、
各段のラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理を実行し、ラウンド関数部に設定された複数の異なる態様の非線形変換処理を選択的に実行可能な構成を持つ非線形変換処理部に対して、前記演算処理の算出結果からなる制御ビットを出力する演算ステップと、
前記制御ビットを入力し、入力制御ビットに基づいて実行する非線形変換処理態様を決定し、決定した非線形変換処理を実行する非線形変換処理ステップと、
を有することを特徴とする暗号処理方法にある。
さらに、本発明の暗号処理方法の一実施態様において、前記演算ステップは、ラウンド関数部に入力されるラウンド鍵のビット情報に基づくパリティ算出を実行し、算出したパリティビットを前記非線形変換処理部に対する制御ビットして出力するステップであることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記演算ステップは、ラウンド関数部に入力されるラウンド鍵から選択した複数の異なる部分ビット情報に基づいて、複数の異なるパリティを算出し、算出した複数のパリティをラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットとして出力するステップであることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記演算ステップは、ラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットを、前記複数の非線形変換処理部各々に対応する入出力データとの排他論理和演算の対象とならないラウンド鍵の部分ビット情報に基づくパリティとして算出するステップであることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記演算ステップは、ラウンド鍵を構成するnビットの部分ビットデータを、ガロア体GF(2)上の元とみなし、ガロア体上の演算を実行して算出したnビットデータの構成ビットを、前記非線形変換処理部に設定された複数のラウンド関数部各々に対する制御ビットとして出力するステップであることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記非線形変換処理ステップは、複数の非線形変換テーブルの適用態様を変更することにより、複数の異なる態様の非線形変換処理を選択的に実行するステップであることを特徴とする。
さらに、本発明の第3の側面は、
複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行するコンピュータ・プログラムであり、
各段のラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理を実行し、ラウンド関数部に設定された複数の異なる態様の非線形変換処理を選択的に実行可能な構成を持つ非線形変換処理部に対して、前記演算処理の算出結果からなる制御ビットを出力する演算ステップと、
前記制御ビットを入力し、入力制御ビットに基づいて実行する非線形変換処理態様を決定し、決定した非線形変換処理を実行する非線形変換処理ステップと、
を有することを特徴とするコンピュータ・プログラムにある。
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の構成によれば、処理アルゴリズムを複雑化することなく、様々な解析攻撃に対する耐性の高い暗号処理装置および暗号処理方法が実現される。
本発明の構成によれば、ラウンド関数部に設定される非線形変換処理部(Sボックス)を、複数の異なる態様の非線形変換処理を選択的に実行可能な構成とし、ラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理の結果を制御ビットとして、非線形変換処理部(Sボックス)に出力し、制御ビットに基づいて非線形変換処理態様を決定して、決定した非線形変換処理を実行する構成としたので、固定的なSボックスを適用していたDES暗号アルゴリズムや、ラウンド鍵の構成ビットそのものを制御ビットとして適用していたLucifer(ルシファー)暗号アルゴリズムに比較して、解析困難性を高めた暗号処理が可能となる。
従来のLuciferの暗号処理アルゴリズムにおいては、1回の電力差分解析(DPA)で探索に必要とされる鍵のビット数は8ビット、すなわち、各非線形変換処理部(Sボックス)との排他論理和演算の対象となる8ビットのラウンド鍵を探索対象とした8ビット探索を要するのみであるが、本発明の構成によれば、例えばラウンド鍵を64ビットとした場合、非線形変換処理部(Sボックス)に出力する制御ビットが64ビットデータに基づいて決定される値であるため、64ビット探索を実行することが必要となり、結果として、1回の電力差分解析(DPA)の計算量が2から264に飛躍的に増大し、事実上、電力差分解析(DPA)による解読を不可能とすることができる。
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。なお、説明は、以下の項目順に行う。
1.DES(Data Encryption Standard)暗号処理の概要と電力差分解析概要
2.Lucifer(ルシファー)の暗号処理アルゴリズムの概要
3.本発明に従った解析困難性を高めた暗号処理
[1.DES(Data Encryption Standard)暗号処理の概要と電力差分解析概要]
まず、DES(Data Encryption Standard)暗号処理の概要と電力差分解析概要について説明する。
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号化鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号化鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
共通鍵暗号方式の1つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いて暗号処理を繰り返し実行する方式がある。このような鍵生成方式を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を実行するラウンド関数部と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部とに分けることができる。ラウンド関数部の各ランウドで適用する鍵(副鍵)は、1つのマスター鍵(主鍵)に基づいて、鍵スケジュール部に入力されて生成され、各ラウンド関数部で適用される。この共通鍵暗号方式の代表的な方式に米国連邦標準暗号方式としてのDES(Data Encryption Standard)がある。
DES暗号処理の基本構造について、図を参照して説明する。DES暗号処理は、変換関数の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。図1にDES暗号処理の基本構成を示す。入力データの変換を実行するラウンド関数部110と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部120とによって構成される。
ラウンド関数部110において、平文(64ビット)は、まず、初期置換部111において、L,R各32ビットに分割され、分割されたL,R32ビットが、第1段ラウンド関数部112に入力され、鍵スケジュール部120の第1段鍵生成部122から入力する鍵K(1)に基づいて変換処理がなされる。変換処理結果は、次段の第2段ラウンド関数部113に入力される。
鍵スケジュール部120においては、まず、マスター鍵(主鍵)置換部(PC−1)121により入力マスター鍵(主鍵:64ビット)のパリティ8ビットが取り除かれ、残り56ビットの入れ替え処理が実行されて第1段ラウンド鍵生成部122に入力される。第1段ラウンド鍵生成部122では、入力ビット列のシフト処理およびパリティビットの除去等が実行され、48ビットのラウンド鍵K(1)を生成し、生成したラウンド鍵K(1)をラウンド関数部110の第1段ラウンド関数部112に出力する。第1段ラウンド鍵生成部122では、シフト処理による上位ビット列(28ビット)と下位ビット列(28ビット)とを下段の第2段ラウンド鍵生成部123に出力する。
ラウンド関数部は、16段のラウンド関数部を有し、それぞれ前段のラウンド関数部の出力を入力として鍵スケジュール部120から入力する鍵を適用した変換処理を実行し、変換結果を後段のラウンド関数部に出力する。16段のラウンド関数部で変換された出力が逆置換部114に入力され、初期置換部111の逆置換処理が実行されて、暗号文として出力される。
ラウンド関数部110の各ラウンドを構成する各段のラウンド関数部の構成を図2に示す。図2に示すように、ラウンド関数部は、前段(n−1段)のラウンド関数部から2つの入力、L(n−1)、R(n−1)を入力し、鍵スケジュール部から鍵(k(n))を入力する。F関数部151において、鍵スケジュール部から入力する鍵(k(n))を用いて、前段ラウンド関数部から入力するビット列(R(n−1))の変換処理がなされ、変換結果が、前段ラウンド関数部から入力する残りのビット列(L(n−1))と排他論理和が実行されて、次段のラウンド関数部の出力R(n)が生成される。次段のラウンド関数部には、R(n−1)をL(n)としたビット列と、上述のF関数および排他論理和演算により生成されたR(n)が入力され同様の処理が繰り返される。
F関数の構成を図3に示す。F関数は、非線形処理を実行する複数のSボックス(Sbox)を有する。ラウンド関数部の前段からの入力値R(n−1)は置換部171によって48ビットに拡大され、さらに鍵スケジュール部から入力する鍵(48ビット)と排他論理和が実行され、その出力が6ビットずつ非線形変換処理を実行する複数のSボックス181−1〜8に入力される。各Sボックスでは、例えば変換テーブルを適用した6ビットから4ビットへの非線形変換処理が実行される。
Sボックス181−1〜8からの出力ビット4×8=32ビットは、置換部172に入力されて、ビット位置の入れ替え処理がなされ、F関数出力32ビットを生成して出力する。
図1〜3を参照して説明したように複数段(16段)の変換処理によってDES暗号処理が実行される。このDES暗号処理をさらに暗号強度を高めるため複数繰り返し実行する構成、例えば3回のDES暗号処理を実行するトリプルDES暗号処理が様々な分野、例えばインターネットを介したデータ通信機器間の相互認証処理や、ICカードとリーダライタ間の相互認証処理等に適用する暗号処理として多く採用されている。なお、トリプルDES暗号処理と区別するため、1回のDES暗号処理をシングルDES暗号処理と呼ぶ。
トリプルDES(Triple DES)暗号処理構成は、図4に示すように、図1〜3を参照して説明したDES暗号処理を3回繰り返して実行することにより、平文から暗号文を生成する。シングルDES暗号処理部185、186,187のそれぞれが上述した16段のラウンド関数部を持ち、Sボックスを持つF関数による処理を16回繰り返す。
通常、トリプルDES暗号処理では、最初のシングルDES暗号処理部185と、最後のDES暗号処理部187においては同じマスター鍵(主鍵)(K1)を適用し、中間のDES暗号処理部186には異なるマスター鍵(主鍵)(K2)を適用する。このように、DES暗号処理を複数回繰り返し実行することで、暗号強度を向上させることができる。
しかし、このような共通鍵暗号処理においては、暗号解析による鍵、あるいは暗号アルゴリズムの漏洩が問題となっている。暗号解析手法としては、複数の種類がある。まず、単純電力解析(SPA:Simple Power Analysis)について説明する。スマートカードなどの耐タンパデバイスのほとんどはトランジスタで構成された論理回路からなり、ゲートに電圧が加えられたときに電流が流れ、電力が消費される。一般に回路の消費電力は、実行している演算と用いられているデータの値に関係する。例えば、乗法演算は0を書き込む場合よりも1を書き込む場合のほうが消費電力が大きくなり、乗法演算と平方演算ではそれぞれ異なる電力を消費する。
このように演算やデータ値に応じて電力消費量が変動することから、秘密情報を用いた演算を行っているデバイスの消費電力の変化を観察することで、秘密情報に関してハミングウェイトなどの情報を得ることが可能となり、エントロピーを小さくすることができる。消費電力の変化を直接解析に用いる方法を単純電力解析と呼ぶ。
デバイスの消費電力は、デバイスと電源または接地との間に抵抗を直列に挿入し、抵抗を流れる電流値から求めることができる。実際に共通鍵暗号の演算を行っているスマートカードに対して消費電力測定を行うと、測定波形より共通鍵暗号の各段の演算がはっきり確かめられる。さらに、消費電力波形を詳しく解析することにより鍵レジスタの交換等の情報を得ることができる。
次に、電力差分解析(DPA:Differential Power Analysis)について説明する。耐タンパデバイスの消費電力は一般に演算内容と演算に用いられている秘密情報に依存する。しかしこれらの内容に依存した消費電力の変化は小さく、測定誤差やノイズなどから見分けることは一般に困難である。
そこでKocherらは大量の測定値の平均をとって測定誤差やノイズなどの影響を小さくし、全データの平均値との差分を取ることで演算プロセスによる電力消費の影響を除いて、用いられる秘密情報による消費電力の変化のみを取り出す方法、すなわち、電力差分解析(DPA:Differential Power Analysis)を提案した。
KocherらはDESに対する適用例を示している。まず、ラウンド関数部の第1段、または第16段に入るラウンド鍵の一部のビットについて予想し、第1段、または第16段の最後にメモリに書きこまれると予想されるデータの1ビットの値に注目して、その値に従って消費電力の観測データを分類する。次にそれぞれのグループについて測定値の平均をとり、それらの差分をとる。予想が正しい場合注目したビットが演算に用いられるとき消費電力の差分が大きくなる。予想が異なる場合目立った差分は確認されない。
電力差分解析は、具体的には、以下の手順(ステップ1〜ステップ7)に従った解析が行われる。
(ステップ1)
m回暗号化プロセスを観測し、それぞれ第16段の消費電力の変化T1,・・・,Tmを観測する。さらに、暗号文C1,・・・,Cmを記録する。第16段の消費電力の変化を解析に用いる場合、平文の情報は必要ない。なお、mは1000程度で十分である。
(ステップ2)
鍵に依存した分配関数D(Ks,C)を選択する。ただし、Ksは何らかの鍵情報、Cは暗号文である。
例えば、最終段のSボックス1の出力の1ビット目の値に着目し、Sボックス1に供給される6ビットの部分鍵を推定する場合を考える。この場合、関数Dは次式で与えられる。
Figure 2005134477
ただし、
K16は、第16段にSボックス1に供給される6ビットの部分鍵の予想値、
C6はK16と排他論理和(XOR)される暗号文の6ビット、
SBOX1(x)はSボックス1に6ビットxが供給された場合の出力結果の1ビット目、
C1はSBOX1の出力結果に排他論理和(XOR)される暗号文の1ビットである。
(ステップ3)
関数Dを用いてT1,・・・,Tmを2つのグループに分ける。
S0={Ti|D(・,・,・)=0}
S1={Ti|D(・,・,・)=1}
次に、それぞれのグループについて消費電力の平均値を取る。
Figure 2005134477
ただし、|S0|+|S1|=mである。
(ステップ4)
A0とA1の差分をとり、電力差分信号ΔDを得る。
ΔD=A−A
(ステップ5)
部分鍵の予想値Ksが正しくない場合、D(・,・,・)は暗号文に対してほぼランダムに"0"と"1"を出力する。従って十分多くのサンプルを取ると、ΔDの値は0に近づいていく。ただし、実際には正しい予想値Ksとの相互作用のため、ΔDの波形は完全にはフラットにならない。Ksが正しい場合は、D(・,・,・)は注目したビットの実際の値と同じ値を取るため、m→∞とすることで、ΔDは注目したビットを用いるときに消費する電力に近づいていく。
他のデータ値や測定誤差などD(・,・,・)に依存しないものは0に近づいていく。消費電力はデータのビット値に依存するため、D(・,・,・)の波形は注目したビットが用いられる領域でパルスを見せ、それ以外の領域では平坦になる。
(ステップ6)
以上を繰り返し、Sボックス1に供給される部分鍵を推定する。反復の最大値は2=64回である。
(ステップ7)
同様の作業を残り7つのSボックスについて行い、秘密鍵について48ビットの情報を得る。残りの8ビットの鍵情報は全探索によって求める。これは、DESに関する例であるが、Camellia等で利用されている8×8Sboxについても同様に適用が可能である。
DES各ラウンドのF関数は、先に図3を参照して説明したように、8つのSボックス(Sbox)を有し、その各々のSボックスに対して、48ビットのラウンド鍵の6ビットの部分鍵が対応づけられる構成となっている。
図3に示すように、F関数は、非線形処理を実行する8つのSボックス(Sbox)を有する。ラウンド関数部の前段からの入力値R(n−1)は置換部171によって48ビットに拡大され、さらに鍵スケジュール部から入力する鍵(48ビット)と排他論理和が実行され、その出力が6ビットずつ非線形変換処理を実行する複数のSボックス181−1〜8に入力される。各Sボックスでは、例えば変換テーブルを適用した6ビットから4ビットへの非線形変換処理が実行される。
Sボックス181−1〜8からの出力ビット4×8=32ビットは、置換部172に入力されて、ビット位置の入れ替え処理がなされ、F関数出力32ビットを生成して出力する。
8つのSボックス(Sbox)181−1〜8各々への入力は、ラウンド関数部の前段からの入力値R(n−1)は置換部171によって48ビットに拡大置換されたデータの48/8=6ビットと、鍵スケジュール部から入力するラウンド鍵(48ビット)を構成する48/8=6ビットとの排他論理和結果である。
暗号解析においては、ラウンド関数部における第1段では既知の入力値を適用可能であり、第16段では、出力値を取得可能である。従って、ラウンド関数部における第1段および第16段の8つのSボックス(Sbox)181−1〜8の入力値を上述したKocherらによる電力差分解析(DPA:Differential Power Analysis)により推定することで、第1段および第16段のラウンド鍵が解析可能となる。
つまり、16段のラウンド関数部によって構成されるDES暗号処理において適用される第1段および第16段のラウンド鍵は、第1段が8組の6ビット鍵、第16段も8組の6ビット鍵が適用され、計16組の6ビット鍵によって表現することができる。
DESの鍵スケジュール、すなわち、ラウンド鍵の生成ルールによれば、各ラウンドのF関数部(ラウンド関数部)において適用するラウンド鍵の構成ビットはすべてが独立ビットということはなく、同一ビットが複数の組に属する6ビット鍵の一部として共有されている。
例えば、第1段のF関数部(ラウンド関数部)の第2Sボックス(Sbox)に対して入力するデータに対応して適用される第1段のラウンド鍵(48ビット)の部分鍵6ビットの第3及び第4ビットは、第16段のF関数部(ラウンド関数部)の第4Sボックス(Sbox)に対して入力するデータに対応して適用される第16段のラウンド鍵(48ビット)の部分鍵6ビットの第1及び第2ビットと常に同一となる。
すなわち、
第1段、第2Sboxの適用鍵6ビットが、
a,b,c,d,e,f
の6ビットであるとき、
第16段、第4Sboxの適用鍵6ビットは、
c,d,g,h,i,j
となる。
これは、DES暗号処理アルゴリズムにおいて予め定められた鍵スケジュールに基づくものであり、普遍的な関係である。
従って、第1段の第2Sボックス(Sbox)の入力データに対応して適用される部分鍵6ビットを探索して、6ビットの各ビット値(a,b,c,d,e,f)を求めた後に第16段の第4Sボックス(Sbox)の入力データに対応して適用される6ビットの部分鍵の構成ビットを探索する際には、6ビット全てを探索することは必要ではなく、未知の4ビット(g,h,i,j)のみを探索すればよい。
1つのSボックスに対応して供給される部分鍵の推定に必要な計算量、すなわち6ビット各々について探索する場合には、6ビットのすべての組み合わせ、すなわち[000000]〜[111111]の全パターンを設定して電力差分解析(DPA)、すなわち探索処理を実行してみることが必要となる。すなわち、電力差分解析(DPA)を適用した2=64回の探索処理によって、鍵を解析することが可能となる。
[2.Lucifer(ルシファー)の暗号処理アルゴリズムの概要]
次に、Lucifer(ルシファー)の暗号処理アルゴリズムの概要について説明する。Lucifer(ルシファー)の暗号処理アルゴリズムも、上述したDESアルゴリズムと同様、複数段のラウンド関数部の繰り返し構造を有する。
DESアルゴリズムでは、各ラウンドのF関数部に設定された非線形変換部としてのSボックスは、先に図3を参照して説明したように、8つのSボックス(Sbox)からなり、その各々のSボックスは、すべてのラウンドにおいて共通な非線形変換を実行する構成である。Luciferアルゴリズムでは、異なる非線形変換処理を実行する2種類のSボックスから、各ラウンドにおいて、一方を選択し、選択したSボックスを適用して非線形変換処理を実行する。いずれの種類のSボックスを適用するかについては、各ラウンドに入力されるラウンド鍵の構成ビット情報に基づいて決定される。
図5にLuciferアルゴリズムにおけるF関数部(ラウンド関数部)の構成を示す。LuciferアルゴリズムにおけるF関数部は、先に説明したDESアルゴリズムと同様、非線形処理を実行する複数のSボックス(Sbox)を有する。ラウンド関数部の前段からの入力値R(n−1)は64ビットとされ、各8ビットが8つの非線形変換部としてのSボックス211〜218に入力される。
各Sボックス211〜218の各々には、鍵スケジュール部から入力するラウンド鍵(64ビット)K(n)201を構成する各1ビットが制御ビットとして入力される。8つのSボックス211〜218に対して、ラウンド鍵K(n)201を構成する64ビットから8ビットが抽出されて各Sボックスに対する制御ビットとして入力されることになる。
各Sボックス211〜218の詳細構成について、図6を参照して説明する。図6は、Sボックス211〜218に共通の構成であり、それぞれ4ビットの入出力を持つ異なる非線形変換処理を実行するSボックスa251と、Sボックスb252とを有する。
Sボックス211〜218には8ビットが入力され、Sボックスa251と、Sボックスb252とをそれぞれ適用し、各々が4ビットの変換処理を行なう。
Sボックスa251と、Sボックスb252とを適用した変換処理態様としては、
(1)第1処理態様
入力8ビットの上位4ビット(G1)をSボックスa251で変換
入力8ビットの下位4ビット(G2)をSボックスb252で変換
する処理態様と、
(2)第2処理態様
入力8ビットの上位4ビット(G1)をSボックスb252で変換
入力8ビットの下位4ビット(G2)をSボックスa251で変換
する処理態様の2つの態様がある。
この処理態様のどちらを選択するかを制御ビット202によって決定する。制御ビット202は、各ラウンドに入力される64ビットのラウンド鍵の構成ビット(8ビット)中の1ビットであり、この制御ビット202が0か1かによって、上記2つの処理態様のいずれかを選択して変換処理を実行する。
図5に示すSボックス1〜8の8つのSボックスにおいて、それぞれ制御ビットの値に応じて、2つの異なるSボックスを適用した非線形変換が選択的に実行される。
このように、Luciferの暗号処理アルゴリズムでは、各ラウンドにおいて設定されている2種類の異なるSボックスから、どちらのSボックスを選択するかを、各ラウンドに入力されるラウンド鍵から制御ビットを抽出し、この制御ビットに基づいて決定する。従って、電力差分解析(DPA)に対する耐性という観点からみると、Sボックスを各ラウンドにおいて固定した場合に比較すると、解析に必要なビット数が増加するので解析困難性は、前述のDESアルゴリズムに比較すると高まることになる。しかし、Sボックスの選択に適用される制御ビットは、各Sボックスについて1ビットであり、ラウンド鍵の構成ビットそのものである。
Luciferの暗号処理アルゴリズムに対して電力差分解析(DPA)を実行して、あるラウンド関数部内のSボックスに入る鍵ビット情報をDPAによって求める際、その鍵ビット全てについて、入出力の偏りを検証する必要があるが、選択鍵に対して選択されるボックスは一意的に決まるため、2種類のSボックスで分類して、各々のケースについて入出力の偏りを検証することにより、計算量をあまり増やすことなく全鍵ビットを導出することが可能である。
このように、現行のLuciferアルゴリズムは、DESアルゴリズムと大差ない電力差分解析(DPA)によって、鍵の解析が可能であり、電力差分解析(DPA)に対する高い耐性を有するものとは言い難い。
[3.本発明に従った解析困難性を高めた暗号処理]
次に、本発明に従った解析困難性を高めた暗号処理について説明する。図7にLuciferアルゴリズムを改良した本発明のF関数部(ラウンド関数部)の構成を示す。本発明の暗号処理アルゴリズムは、DESアルゴリズム、Luciferアルゴリズムと同様、図1を参照して説明したような複数のラウンド関数部の繰り返し構造を持ち、各ラウンド関数部に対して、鍵スケジュール部からラウンド鍵が入力され、F関数部(ラウンド関数部)での変換処理が繰り返し実行される構成である。
図7に示すように、F関数部(ラウンド関数部)は、先に説明したDESアルゴリズムおよびLuciferアルゴリズムと同様、非線形処理を実行する複数のSボックス(Sbox)を有する。ラウンド関数部の前段からの入力値R(n−1)を、例えば64ビットとした場合、各8ビットが8つの非線形変換部としてのSボックス311〜318に入力される。
各Sボックス311〜318の各々には、鍵スケジュール部から入力するラウンド鍵(64ビット)K(n)301を構成するビット情報を入力する演算部351における演算結果として取得される各1ビットが制御ビットとして入力される。
演算部351では、ラウンド鍵(64ビット)K(n)301に基づいてSボックス311〜318の各々に入力する制御ビット情報として8ビットのデータが算出され、その算出結果が、1ビットずつ各Sボックス311〜318の各々に入力される。
演算部351における演算処理は、ラウンド鍵(64ビット)K(n)301を入力として制御ビットを出力する演算である。演算処理例を図8〜図10を参照して説明する。
図8に示す演算例は、演算部351が、64ビットラウンド鍵K(n)301を入力し、64ビットラウンド鍵情報に基づいて、1ビットのパリティを算出し、この1ビットパリティを8つのSボックス311〜318に共通の制御ビットとして出力する演算例である。なお、パリティは、ラウンド鍵K(n)301の64ビットデータ中のビット値[1]または[0]の数が偶数か奇数かによって決定される1ビットの値[0]または[1]である。
なお、図8において、ラウンド鍵K(n)301は、各8ビットのK1〜K8に分割して示してある。それぞれの分割データK1〜K8は、図7に示す排他論理和部321において、Sボックス311〜318の各出力8ビットと排他論理和演算が実行され、その後、置換部322においてビット置換処理が実行されて次のラウンド部に出力、あるいは最終ラウンドである場合は、最終出力とされる。
図8に示す演算処理例では、8つのSボックス311〜318に共通の制御ビットとして出力するが、図9に示す演算処理例では、8つのSボックス311〜318に対応して、それぞれ異なるパリティを算出して制御ビットとして出力する。
図9に示す例では、演算部351が、64ビットラウンド鍵K(n)301を入力し、64ビットラウンド鍵情報から、上位8ビット(K1)を排除した残りの56ビットデータに基づいて算出したパリティビットを第1番目のSボックス311の制御ビットとして出力する。また、64ビットラウンド鍵情報から第2番目の8ビット(K2)を排除した残りの56ビットデータに基づいて算出したパリティビットを第2番目のSボックス312の制御ビットとして出力する。以下、同様に下位方向に順次8ビットを除いて、残りの56ビットの鍵データからそれぞれパリティを算出して、それぞれのSボックスに出力する制御ビットを生成する。第8番目のSボックス318の制御ビットには、64ビットラウンド鍵情報から第8番目の8ビット(K8)を排除した残りの56ビットデータに基づいて算出したパリティビットが対応付けられる。
図9において、ラウンド鍵K(n)301は、各8ビットのK1〜K8に分割して示してある。それぞれの分割データK1〜K8は、図7に示す排他論理和部321において、Sボックス311〜318の各出力8ビットと排他論理和演算が実行され、その後、置換部322においてビット置換処理が実行されて次のラウンド部に出力、あるいは最終ラウンドである場合は、最終出力とされる。
図9の演算例では、各Sボックスの出力と排他論理和部321において排他論理和演算の対象とならないラウンド鍵ビットデータに基づいて算出されるパリティが各Sボックスの制御ビットとして適用される。
すなわち、Sボックス1,311の出力は、ラウンド鍵ビットデータ中の最上位8ビット(K1)と排他論理和部321において排他論理和演算が実行されることになり、Sボックス1,311に対する制御ビットは、ラウンド鍵ビットデータ中の最上位8ビット(K1)を除くK2〜K8の56ビットに基づいて算出される。その他のSボックスについても同様であり、各Sボックスの出力との排他論理和演算の実行されないラウンド鍵の構成ビットが選択されてパリティ算出が行われ、各Sボックスに対する制御ビットとして適用される。
このような制御ビットの演算処理を適用することにより、8つのSボックス311〜318に対応して、それぞれ異なるパリティを算出して制御ビットを出力することが可能となり、また、各Sボックスに対して出力する制御ビットは、各Sボックスの出力との排他論理和演算対象となるラウンド鍵構成ビットを除いたデータであるので、排他論理和部321からの出力値を構成する各Sボックス出力とラウンド鍵構成ビットの排他論理和演算結果と、各Sボックスに出力される制御ビットの値との相関が発生することがなく、解析の困難性を高めることが可能となる。
図10は、さらに異なる演算処理例を示した図である。図10に示す例では、演算部351が、64ビットラウンド鍵K(n)301を入力し、演算部351は、64ビットラウンド鍵情報をK1〜K8を、ガロア体GF(2)上の元とみなし、ガロア体上の演算を実行して、8ビットの制御ビットを算出する。
演算部351の算出した8ビットの制御ビットは、1ビットずつSボックス311〜318に対する制御ビットとして出力される。
図10において、ラウンド鍵K(n)301は、各8ビットのK1〜K8に分割して示してある。それぞれの分割データK1〜K8は、図7に示す排他論理和部321において、Sボックス311〜318の各出力8ビットと排他論理和演算が実行され、その後、置換部322においてビット置換処理が実行されて次のラウンド部に出力、あるいは最終ラウンドである場合は、最終出力とされる。
図10に示す演算例は、ラウンド鍵K(n)301を構成する各8ビットのK1〜K8を、ガロア体GF(2)上の元とみなし、ガロア体上の演算を実行して、8ビットの制御ビットを算出する演算である。なお、図10に示す例は、ラウンド関数部にSボックスが8個設定された構成であるので、8ビットの制御ビットを算出する演算処理として実行する例を示したが、ラウンド関数部にSボックスが任意数、例えば、n個設定された構成である場合には、ラウンド鍵を構成するnビットの部分ビットデータを、ガロア体GF(2)上の元とみなし、ガロア体上の演算を実行してnビットデータを算出して、その構成ビットを、非線形変換処理部としてのn個のSボックスに対する制御ビットとして出力する。
図8〜図10を参照して3つの演算例を示したが、この他、ラウンド鍵データに基づいて各Sボックスに対する制御ビットを算出する様々な演算処理が適用可能である。
図7に示すF関数部(ラウンド関数部)の各Sボックス311〜318には、演算部351から、ラウンド鍵301のビット情報に基づく演算結果としての制御ビットが入力される。
各Sボックス311〜318の詳細構成について、図11を参照して説明する。図11は、Sボックス311〜318に共通の構成であり、それぞれ4ビットの入出力を持つ異なる非線形変換処理を実行するSボックスa371と、Sボックスb372とを有する。
Sボックスa371と、Sボックスb372とは、それぞれ異なる非線形変換テーブルに基づく変換処理を実行するデータ変換部であり、各Sボックス311〜318では、演算部351から入力する制御ビットに基づいて、これら複数の非線形変換テーブルの適用態様を変更することにより、異なる態様での非線形変換処理を選択的に実行する。
Sボックス311〜318には演算部351の生成する8ビットの制御ビットの各1ビットが入力され、このビット値が[1]か[0]かに応じて、Sボックスa371と、Sボックスb372との適用態様を変更した非線形変換処理を実行する。図11に示すSボックスa371と、Sボックスb372は、各々がそれぞれ4ビットの変換処理を行なう。
Sボックスa371と、Sボックスb372とを適用した変換処理態様としては、
(1)第1処理態様
入力8ビットの上位4ビット(G1)をSボックスa371で変換
入力8ビットの下位4ビット(G2)をSボックスb372で変換
する処理態様と、
(2)第2処理態様
入力8ビットの上位4ビット(G1)をSボックスb372で変換
入力8ビットの下位4ビット(G2)をSボックスa371で変換
する処理態様の2つの態様がある。
この処理態様のどちらを選択するかを演算部351が、ラウンド鍵301に基づいて算出した制御ビットによって決定する。制御ビットは、上述したように、各ラウンドに入力される64ビットのラウンド鍵に基づいて算出される演算結果を構成するビットデータであり、この制御ビットが0か1かによって、上記2つの処理態様のいずれかを選択して変換処理を実行する。
図7に示すSボックス311〜318の8つのSボックスにおいて、それぞれ制御ビットの値に応じて、2つの異なるSボックスを適用した非線形変換が選択的に実行される。
このように、本発明の暗号処理アルゴリズムでは、各ラウンドに入力される64ビットのラウンド鍵に基づいてパリティ算出演算、あるいはGF(2)上での演算などの演算処理を実行し、その演算結果を書くSボックスにおける非線形変換態様を決定するSボックス選択用の制御ビットとして出力する。
前述のLuciferの暗号処理アルゴリズムでは、各Sボックスに対して出力する制御ビットは、ラウンド鍵の構成ビットそのものであり、鍵解析において解析対象となるビットデータそのものを制御ビットとして適用した構成であるが、本発明の構成では、ラウンド鍵の構成ビットと異なる新たなビット値を演算により算出し、その算出値を各Sボックスに対する制御ビットとして適用する構成とした。
このような構成とすることで、電力差分解析(DPA)を実行して、あるラウンド関数部内のSボックスに入る鍵ビット情報をDPAによって求める際の探索処理回数の必要数は、大幅に増加することになる。
従来のLuciferの暗号処理アルゴリズムにおいて、1回の電力差分解析(DPA)で探索に必要とされる鍵のビット数は8ビット、すなわち、各Sボックスとの排他論理和演算の対象となる8ビットのラウンド鍵を探索対象とした8ビット探索を実行するのみであったが、本発明によれば、Sボックスに出力する制御ビットが、64ビットのラウンド鍵全体に基づいて決定される値であるため、64ビット探索を実行することが必要となる。その結果、1回の電力差分解析(DPA)の計算量が2から264に飛躍的に増大し、事実上解読を不可能とすることができる。
なお、図7は、先に図5を参照して説明したLuciferの暗号処理アルゴリズムと同様、ラウンド鍵をSボックスの出力に対して排他論理和して、その出力をビット置換するラウンド関数部構成を持つ例として説明したが、本発明のSボックスの処理態様を決定するための制御ビットを、ラウンド鍵の構成ビットに基づく演算処理によって算出する構成は、Luciferの暗号処理アルゴリズムに対してのみ適用可能な構成ではなく、その他、Sボックスを適用したラウンド関数を持つ暗号アルゴリズムであれ場適用可能である。
例えば図12に示すのは、DESアルゴリズムにおけるF関数(ラウンド関数)と同様の構成とし、かつ、F関数(ラウンド関数)内のSボックスに対する制御ビット、すなわち、Sボックスの処理態様を決定するための制御ビットを、ラウンド鍵の構成ビットに基づく演算処理によって算出する構成とした例を示している。
Sボックス431〜438は、複数の非線形変換処理態様を選択実行可能な構成を有し、その実行態様を決定するための制御ビットを演算部402から入力する。演算部402は、ラウンド鍵K(n)401を入力して、例えば先に図8〜図10を参照して説明した
各種の演算を実行し、Sボックス431〜438に出力する制御ビットを算出する。
図13の構成においては、先に、図3を参照して説明したDESアルゴリズムにおけるF関数と同様の構成であるが、Sボックス431〜438は、異なる複数の非線形変換処理を実行可能な構成、すなわち、図11を参照して説明したように、入力ビットに対して異なる非線形変換処理を実行することが可能な構成を有する。
ラウンド関数部の前段からの入力値R(n−1)は置換部421によってビット置換が実行され、さらに鍵スケジュール部から入力するラウンド鍵K(n)401と排他論理和部451において、排他論理和演算がなされ、その出力が所定ビットずつ非線形変換処理を実行する複数のSボックス431〜438に入力される。各Sボックスでは、例えば変換テーブルを適用した非線形変換処理を実行するが、実行可能な変換処理態様は複数あり、適用する変換処理態様を演算部402から入力する制御ビットに基づいて決定する。
Sボックス431〜438からの出力ビットは、置換部441に入力されて、ビット位置の入れ替え処理がなされ、次のラウンドに対する入力として、あるいは最終出力として出力される。
本発明の暗号処理アルゴリズムにおける各F関数部(ラウンド関数部)における処理シーケンスについて、図13のフローチャートを参照して説明する。
まず、ステップS101において、ラウンド鍵を入力する。これは、例えば図1に示す鍵スケジュール部の各ラウンド鍵生成部が生成し、ラウンド関数部の各ラウンドのF関数に入力されるラウンド鍵である。
ラウンド鍵を入力すると、演算部、例えば図7に示す演算部351、あるいは図12に示す演算部402は、入力ラウンド鍵に基づく演算処理を実行し、各Sボックスに出力する制御ビットを算出する。実行する演算処理は、例えば、図8、図9を参照して説明したパリティ算出演算や、図10を参照して説明したガロア体GF(2)上での演算などである。ステップS103では、演算の結果に基づいて、各Sボックスにおけるデータ変換処理態様を決定するための制御ビットが設定され、各Sボックスに出力される。
ステップS104は、演算部から制御ビットを入力した各Sボックスにおいて実行する処理である。演算部から制御ビットを入力した各Sボックスは、Sボックスにおいて実行可能な複数の非線形変換処理態様から、演算部から入力する制御ビットに基づいて、実行する1つの非線形変換処理態様を決定する。
ステップS105において、各Sボックスは、制御ビットに基づいて決定した1つの非線形変換処理態様を入力データに対して実行し、その結果を出力する。出力は、F関数内の後段の演算部においてさらに排他論理和演算、置換処理など各種の演算が実行された後、次のラウンド部に出力、あるいは最終ラウンドである場合は、最終出力とされる。
最後に、上述の暗号処理を実行するデバイスとしてのICモジュール600の構成例を図14を参照して説明する。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図14に示すICモジュール600は、これら様々な機器に構成することが可能である。
図14に示すCPU(Central processing Unit)601は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ602は、CPU601が実行するプログラム、あるいは演算パラメータとしての固定データを格納するROM(Read-Only-Memory)、CPU601の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ602は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
暗号処理手部603は、例えば上述したDES、Lucifer、その他のアルゴリズムに従った暗号処理、復号処理等を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU601がROM格納プログラムを読み出して実行するように構成してもよい。
乱数発生器604は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
送受信部605は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
なお、ラウンド関数部のSボックスに対して出力する制御ビットの算出処理として実行するラウンド鍵に基づく演算処理はCPU601において実行するか、あるいは暗号処理部603内の演算処理実行機能を適用して実行可能である。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明は、認証処理、暗号処理を実行するデバイス、例えば暗号処理モジュールを持つICカードあるいはその他の暗号処理装置に適用可能である。本発明の構成を適用することにより、電力解析によるICモジュール内の暗号処理鍵やアルゴリズムの漏洩が困難となるので、セキュリティレベルの高い暗号処理実行機能を持つデバイスあるいは装置が提供可能となる。
DES暗号処理の基本構成を示す図である。 ラウンド関数部の各ラウンドを構成する変換部の構成を示す図である。 F関数の構成を示す図である。 トリプルDES(Triple DES)暗号処理構成を示す図である。 Luciferの暗号処理アルゴリズムにおけるF関数部(ラウンド関数部)の処理構成を説明する図である。 Luciferの暗号処理アルゴリズムにおけるF関数部(ラウンド関数部)のSボックスの処理構成を説明する図である。 本発明の暗号処理アルゴリズムにおけるF関数部(ラウンド関数部)の処理構成を説明する図である。 本発明の暗号処理アルゴリズムにおけるF関数部(ラウンド関数部)のSボックスに出力する制御ビットの演算処理例(その1)を説明する図である。 本発明の暗号処理アルゴリズムにおけるF関数部(ラウンド関数部)のSボックスに出力する制御ビットの演算処理例(その2)を説明する図である。 本発明の暗号処理アルゴリズムにおけるF関数部(ラウンド関数部)のSボックスに出力する制御ビットの演算処理例(その3)を説明する図である。 本発明の暗号処理アルゴリズムにおけるF関数部(ラウンド関数部)のSボックスの処理構成を説明する図である。 本発明の暗号処理アルゴリズムにおけるF関数部(ラウンド関数部)の処理構成を説明する図である。 本発明の暗号処理アルゴリズムにおけるF関数部(ラウンド関数部)の処理シーケンスを説明するフローチャートを示す図である。 本発明の構成が適用可能な暗号処理実行デバイスとしてのICモジュールの構成例を示す図である。
符号の説明
110 ラウンド関数部
111 初期置換部
112,113 変換部
114 逆置換部
120 鍵スケジュール部
121 選択置換部
122,123 鍵生成部
151 F関数部
171,172 置換部
181 Sボックス
185,186,187 DES暗号処理部
201 ラウンド鍵
202 制御ビット
211〜218 Sボックス
221 排他論理和(XOR)部
222 置換部
251,252 Sボックス
301 ラウンド鍵
302 制御ビット
311〜318 Sボックス
321 排他論理和(XOR)部
322 置換部
351 演算部
371,372 Sボックス
401 ラウンド鍵
431〜438 Sボックス
421,441 置換部
451 排他論理和(XOR)部
600 ICモジュール
601 CPU(Central processing Unit)
602 メモリ
603 暗号処理部
604 乱数発生器
605 送受信部

Claims (13)

  1. 複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置であり、
    各段のラウンド関数部に設定され、複数の異なる態様の非線形変換処理を選択的に実行可能な構成を持つ非線形変換処理部と、
    前記ラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理を実行し、前記非線形変換処理部に出力する制御ビットの算出処理を実行する演算部とを有し、
    前記非線形変換処理部は、前記演算部から入力する制御ビットに基づいて非線形変換処理態様を決定し、決定した非線形変換処理を実行する構成を有することを特徴とする暗号処理装置。
  2. 前記演算部は、
    ラウンド関数部に入力されるラウンド鍵のビット情報に基づくパリティ算出を実行し、
    算出したパリティビットを前記非線形変換処理部に対する制御ビットして出力する構成であることを特徴とする請求項1に記載の暗号処理装置。
  3. 前記非線形変換処理部は、ラウンド関数部に複数設定された構成であり、
    前記演算部は、ラウンド関数部に入力されるラウンド鍵から選択した複数の異なる部分ビット情報に基づいて、複数の異なるパリティを算出し、算出した複数のパリティをラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットとして出力する構成であることを特徴とする請求項1に記載の暗号処理装置。
  4. 前記演算部は、
    ラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットを、
    前記複数の非線形変換処理部各々に対応する入出力データとの排他論理和演算の対象とならないラウンド鍵の部分ビット情報に基づくパリティとして算出する構成であることを特徴とする請求項1に記載の暗号処理装置。
  5. 前記演算部は、
    ラウンド鍵を構成するnビットの部分ビットデータを、ガロア体GF(2)上の元とみなし、ガロア体上の演算を実行して算出したnビットデータの構成ビットを、前記非線形変換処理部に設定された複数のラウンド関数部各々に対する制御ビットとして出力する構成であることを特徴とする請求項1に記載の暗号処理装置。
  6. 前記非線形変換処理部は、
    複数の非線形変換テーブルを有し、該複数の非線形変換テーブルの適用態様を変更することにより、複数の異なる態様の非線形変換処理を選択的に実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  7. 複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理方法であり、
    各段のラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理を実行し、ラウンド関数部に設定された複数の異なる態様の非線形変換処理を選択的に実行可能な構成を持つ非線形変換処理部に対して、前記演算処理の算出結果からなる制御ビットを出力する演算ステップと、
    前記制御ビットを入力し、入力制御ビットに基づいて実行する非線形変換処理態様を決定し、決定した非線形変換処理を実行する非線形変換処理ステップと、
    を有することを特徴とする暗号処理方法。
  8. 前記演算ステップは、
    ラウンド関数部に入力されるラウンド鍵のビット情報に基づくパリティ算出を実行し、算出したパリティビットを前記非線形変換処理部に対する制御ビットして出力するステップであることを特徴とする請求項7に記載の暗号処理方法。
  9. 前記演算ステップは、
    ラウンド関数部に入力されるラウンド鍵から選択した複数の異なる部分ビット情報に基づいて、複数の異なるパリティを算出し、算出した複数のパリティをラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットとして出力するステップであることを特徴とする請求項7に記載の暗号処理方法。
  10. 前記演算ステップは、
    ラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットを、
    前記複数の非線形変換処理部各々に対応する入出力データとの排他論理和演算の対象とならないラウンド鍵の部分ビット情報に基づくパリティとして算出するステップであることを特徴とする請求項7に記載の暗号処理方法。
  11. 前記演算ステップは、
    ラウンド鍵を構成するnビットの部分ビットデータを、ガロア体GF(2)上の元とみなし、ガロア体上の演算を実行して算出したnビットデータの構成ビットを、前記非線形変換処理部に設定された複数のラウンド関数部各々に対する制御ビットとして出力するステップであることを特徴とする請求項7に記載の暗号処理方法。
  12. 前記非線形変換処理ステップは、
    複数の非線形変換テーブルの適用態様を変更することにより、複数の異なる態様の非線形変換処理を選択的に実行するステップであることを特徴とする請求項7に記載の暗号処理方法。
  13. 複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行するコンピュータ・プログラムであり、
    各段のラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理を実行し、ラウンド関数部に設定された複数の異なる態様の非線形変換処理を選択的に実行可能な構成を持つ非線形変換処理部に対して、前記演算処理の算出結果からなる制御ビットを出力する演算ステップと、
    前記制御ビットを入力し、入力制御ビットに基づいて実行する非線形変換処理態様を決定し、決定した非線形変換処理を実行する非線形変換処理ステップと、
    を有することを特徴とするコンピュータ・プログラム。
JP2003367746A 2003-10-28 2003-10-28 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Pending JP2005134477A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003367746A JP2005134477A (ja) 2003-10-28 2003-10-28 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003367746A JP2005134477A (ja) 2003-10-28 2003-10-28 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Publications (1)

Publication Number Publication Date
JP2005134477A true JP2005134477A (ja) 2005-05-26

Family

ID=34645663

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003367746A Pending JP2005134477A (ja) 2003-10-28 2003-10-28 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Country Status (1)

Country Link
JP (1) JP2005134477A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100737171B1 (ko) 2006-05-04 2007-07-10 경북대학교 산학협력단 아리아에 대한 전력분석공격에 대응하는 저메모리형 마스킹방법
JP2008131108A (ja) * 2006-11-16 2008-06-05 Fujitsu Ltd 共通鍵暗号のための暗号化装置
JP2009514096A (ja) * 2005-10-26 2009-04-02 アナログ デバイシーズ インク 参照テーブルアドレス指定システム及び方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009514096A (ja) * 2005-10-26 2009-04-02 アナログ デバイシーズ インク 参照テーブルアドレス指定システム及び方法
KR100737171B1 (ko) 2006-05-04 2007-07-10 경북대학교 산학협력단 아리아에 대한 전력분석공격에 대응하는 저메모리형 마스킹방법
JP2008131108A (ja) * 2006-11-16 2008-06-05 Fujitsu Ltd 共通鍵暗号のための暗号化装置
US8218762B2 (en) 2006-11-16 2012-07-10 Fujitsu Limited Encrypting apparatus for common key cipher

Similar Documents

Publication Publication Date Title
US7659837B2 (en) Operation processing apparatus, operation processing control method, and computer program
JP5229315B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
EP1496641A2 (en) Cryptographic processing apparatus, cryptographic processing method and computer program
KR20180002069A (ko) 부채널 분석에 대응한 보호 방법 및 장치
JP4622222B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2007195132A (ja) 暗号処理装置
KR20070058370A (ko) 암호 처리 장치, 암호 처리 방법 및 컴퓨터 프로그램
WO2008026622A1 (en) Encryption device, encryption method, and computer program
CN104838617B (zh) 整合安全装置及整合安全装置中使用的信号处理方法
JP3733027B2 (ja) 秘密鍵式暗号化アルゴリズムを用いる電子構成部品内の対抗措置方法
Hnath et al. Differential power analysis side-channel attacks in cryptography
KR101506499B1 (ko) 마스킹이 적용된 seed를 이용한 암호화 방법
JP2005134478A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2006019872A (ja) 暗号処理装置
JP2005031471A (ja) 暗号処理装置、および暗号処理方法
JP2007174024A (ja) 暗号処理装置
JP2006054568A (ja) 暗号化装置、復号化装置、および方法、並びにコンピュータ・プログラム
JP2005045752A (ja) 暗号処理装置、および暗号処理方法
JP2005134477A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5979750B2 (ja) サイドチャネル評価装置及びサイドチャネル評価方法
JP2006025366A (ja) 暗号化装置及び半導体集積回路
KR101941886B1 (ko) 블록 암호 알고리즘의 안전성 검증 장치 및 방법
KR101876498B1 (ko) 마스킹 대응책을 무력화하는 암호 해독 장치 및 방법, 이를 기록한 기록매체
JP2007323019A (ja) 暗号処理装置
Kim et al. New Type of Collision Attack on First‐Order Masked AESs