JP3998616B2 - 暗号化/復号モジュール - Google Patents

暗号化/復号モジュール Download PDF

Info

Publication number
JP3998616B2
JP3998616B2 JP2003318537A JP2003318537A JP3998616B2 JP 3998616 B2 JP3998616 B2 JP 3998616B2 JP 2003318537 A JP2003318537 A JP 2003318537A JP 2003318537 A JP2003318537 A JP 2003318537A JP 3998616 B2 JP3998616 B2 JP 3998616B2
Authority
JP
Japan
Prior art keywords
random number
parameter
encryption
bit
linear 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
JP2003318537A
Other languages
English (en)
Other versions
JP2005086670A (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 JP2003318537A priority Critical patent/JP3998616B2/ja
Publication of JP2005086670A publication Critical patent/JP2005086670A/ja
Application granted granted Critical
Publication of JP3998616B2 publication Critical patent/JP3998616B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/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/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/12Details relating to cryptographic hardware or logic circuitry

Landscapes

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

Description

本発明は、乱数生成器を利用した暗号化/復号モジュールに関する。
近年、情報のデジタル化に伴って、暗号化や復号を行う暗号化/復号モジュール(以下、単に暗号化モジュールと呼ぶ)や、暗号化モジュールを備えた多種多様なLSIが、多数利用されてきている。暗号化モジュールは、鍵の生成や安全性を高めるためのマスク技術に、一時的な乱数を利用することが多い。このような暗号化モジュールに利用される乱数の生成を行う乱数生成器は、安全上0/1の統計的性質に優れている方向で開発が行われている。例えば、乱数を100ビットサンプリングした場合、0と1の出現確率は1/2ずつであることが望ましい。
ところで、暗号化モジュールは、外部からの不正な攻撃(サイドチャネル攻撃)が行われることが多いため、攻撃に対する耐性を備えたものが望まれる。近年、暗号化モジュールに対するサイドチャネル攻撃方法の一つとして、DPA(Differential Power Analysis:電力差分解析)攻撃が注目されてきている。DPA攻撃は、暗号化モジュール内のある処理の出力と秘密情報(秘密の鍵など)との相関の有無を、その際に測定した消費電力を統計的に処理することで、本来暗号化モジュールの内部で生成され隠蔽されるべき秘密情報を推定する方法である。
例えば、共通鍵暗号化方式として著名なDESは、Sboxと呼ばれる処理の出力データと秘密鍵との相関の有無を調べるようにしたDPA攻撃を行われてしまう事がわかっている。この相関を隠蔽する目的で、1つのSboxに対して、ある関係を満たすSbox1とSbox2を用意し、その2つを乱数によってランダムに切り換えて使用することにより鍵との相関を消すという対策が提案されている(例えば、特許文献1参照)。
また、このような特定の暗号技術の特定の要素における問題でなく、一般に、共通鍵暗号方式や、RSAや楕円曲線暗号などの公開鍵方式を用いた暗号化モジュールにおいて、そのモジュール内のバスラインに秘密情報(鍵など)が流れる。これをDPA攻撃や、タイミング攻撃など、サイドチャネル攻撃することも可能で、これに対する対策として、バスラインに流れる各データを、乱数によってマスクする方法も考えられている。より具体的には、kビットのデータをkビットの乱数でマスク(通常は排他的論理和)することによって、隠蔽することが考えられた。
特開2001−268071公報
上記で説明したSbox対策が有効に働くには、Sbox1とSbox2が乱数によって均等に選択される(すなわち0/1のバランスが等しい)という条件と同時に、Sbox1とSbox2の出力信号線の配線容量が等しいことが必要となる。
しかし、配線容量には数倍の差が生じる場合があり、そのような場合は一般的に開発される乱数生成器が、たとえ乱数の0/1のバランスが良好であっても、DPA攻撃の対策としては有効に働かず、DPA攻撃に対する耐性が実現されないことになってしまう。
また、バス上の秘密情報のマスクにおいて、バスライン上のマスクしたデータのハミング重みが、極端に小さかったり大きかったりすることはDPA攻撃に対する脆弱性を与え
る可能性があることが分かっている。例えば、8ビットの信号線の場合、ハミング重みは4が理想的であり、値の推測が容易である0や8などは避けることが望ましいが、秘密情報(データ)を単に乱数でマスクするだけでは、ハミング重みについて何ら考慮されず、依然としてDPA攻撃される恐れがあった。
そこで、本発明は、サイドチャネル攻撃、特にDPA攻撃に対する耐性を有した暗号化/復号モジュールを提供することを目的とする。
本発明の実施形態に係る暗号化/復号モジュールは、第1の乱数を生成して出力する乱数生成器と、前記乱数生成器から出力された前記第1の乱数を変更するためのパラメータを供給するパラメータ供給部と、前記乱数生成器から入力される前記第1の乱数を、前記パラメータ供給部から供給される前記パラメータによってその出現確率が定められる第2の乱数へ変更する乱数制御部と、暗号化/復号演算の対象であるデータをそれぞれ異なる変換方式によって非線形変換する第1乃至第n(nは2以上の整数)の非線形変換回路と、前記第1乃至第nの非線形変換回路のそれぞれと配線で接続されていて、前記乱数制御部から入力される前記第2の乱数に応じて前記第1乃至第nの非線形変換回路の出力のいずれかを選択する選択回路とを備え、前記パラメータは、前記第1乃至第nの非線形変換回路と前記選択回路とを接続する前記各配線の容量から求められる前記第2の乱数の出現確率であり、前記各配線の容量は、LSI(Large Scale Integration)設計時のレイアウト情報から求められることを特徴とする。
本発明によれば、暗号化/復号モジュールに対するサイドチャネル攻撃に対する対策で用いる乱数のバランスを適宜偏らせる制御を行うことで、暗号化/復号モジュールの耐タンパー性を高め、サイドチャネル攻撃に対する耐性を実現することができる。
以下、本発明の実施の形態について、図面を参照しつつ詳細に説明する。
図1は、本実施の形態の暗号化/復号モジュールの機能ブロックを示したものである。
暗号化/復号モジュール1は、暗号化/復号処理回路11、乱数生成器12、乱数制御部13、パラメータ供給部14を備える。
暗号化/復号処理回路11は、暗号化/復号処理を行うものであり、暗号化方式としては、DES、AESなどの共通鍵暗号化方式や、RSA、楕円曲線などの公開鍵暗号方式などの何れの方式を実装したもので良い。
乱数生成器12は、暗号化/復号処理回路11内で、鍵生成やマスク処理などを行うために、ビット毎に乱数0/1をほぼ均等にランダム生成して出力するものである。この乱数生成器12は、擬似乱数生成器であってもよいし、物理乱数生成器であってもよい。
パラメータ供給部14は、DPA攻撃の耐性に影響する乱数の出現確率を調整するためのパラメータ(参照情報)を供給する。このパラメータは、暗号化/復号処理回路11で生じるハードウェア実装により生じる偏りや、暗号化/復号処理回路11で生じるデータ内容の特性による偏りに基づく値であり、(詳細には後述するが、)所謂暗号化/復号処理回路11の特徴に基づくものである。
乱数制御部13は、乱数生成器12から出力される乱数を、パラメータ供給部14からのパラメータに基づく出現確率に応じて、適宜変換しながら出力する。乱数制御部13の出力は、暗号化/復号処理回路11へ供給する乱数となる。
以上のように暗号化/復号モジュール1を構成することにより、暗号化/復号処理回路11は、自回路で生じるハードウェア実装により生じる偏りやデータ内容の特性による偏りに合った出現確率に見合う乱数の入力を得ることができ、これに基づき動作するから、
偏りによる動作による電力差を隠蔽でき、DPA攻撃の耐性を有することができる。
次に、暗号化/復号処理回路11の具体化した実施例を2つ示し、より詳細に説明する。
(第1実施例)
以下、DES方式の暗号化処理回路21を用いた暗号化モジュールを実施例として説明する。
DESは、64ビットのデータを32ビットづつに左右に分割し、所定の処理単位を実行し、処理結果(各32ビット)を左右入れ替えながら、この処理単位を全16段繰り返すことによって暗号化する。図2には、この1段の処理単位の主要部を示したものである。
線形変換部E101は、図上右から入力される32ビットのデータを所定の規則により48ビットへ線形変換を行うものである。
論理回路102は、線形変換部E101から出力された48ビットのデータと、暗号化処理回路11内で図示しない秘密鍵生成器より生成され入力される48ビットの秘密鍵Keyとを排他的論理和を行って、Sbox1(103)およびSbox2(104)へ入力するものである。なお、秘密鍵Keyは、外部からは隠蔽され、秘密を保ったものである。
Sbox1(103)およびSbox2(104)は、非線形変換を行うものであり、入力される48ビットを非線形変換し、32ビットの出力を行う。Sbox1(103)およびSbox2(104)は、DESの一般的な処理単位に用いられる1つのSboxを、DPA耐性を備えるために2つに置換したものである。Sbox1(103)およびSbox2(104)は、それぞれの出力値と鍵に対する相関が逆符号になるように設計される。例えば、Sbox1(103)の出力と鍵との相関係数が1/2であれば、Sbox2(104)の出力と鍵との相関係数は−1/2になるように設計される。DPA攻撃は、全ての信号に関する同じタイミングでの相関の総和を観測するため、Sbox1(103)の出力とSbox2(104)の出力とを均等に選択することにより、Sbox1(103)とSbox2(104)との相関は打ち消し合い、チップ全体としてDPA攻撃に対する耐性を有することになる。このように、Sbox1(103)とSbox2(104)とを設ける構成は、例えば、背景技術で説明した特開2001−268071公報に記載されるとおり、既知である。
セレクタ105は、Sbox1(103)とSbox2(104)との何れかの出力を利用するために選択するものであり、乱数制御部13から送られる乱数に従って制御される。例えば、入力される乱数の1ビットが“0”であればSbox1(103)を選択し、乱数の1ビットが“1”であればSbox2(104)を選択する。
線形変換部P106は、32ビットを入力し、線形変換し32ビット出力を行う。この出力された32ビットは、前の段の左の32ビットと、論理回路107によって排他的論理和される。
そして、排他的論理和された左の32ビット値と、線形変換部E101に入力された前段から右に入力される32ビット値とを左右交換し、次段の処理へ渡す。
以上のようなDESの処理単位において、Sbox1(103)の出力と秘密鍵Keyとの相関値をφ1、Sbox2の出力と秘密鍵Keyとの相関値をφ2とすると、DPA
耐性が達成されるための条件はφ1=−φ2で与えられる。
ところが、実際にDESをハードウェア実装する場合に、暗号化処理回路21全体のレイアウトに依存して、Sbox1(103)とSbox2(104)との出力信号線の長さや太さなどが異なり、これにより配線容量が異なるように実装されることが多い。この場合、φ1=−φ2が成り立たなくなり、その結果、DPA耐性が達成されないことが新たに判明した。これは、Sbox1(103)の出力信号線の配線容量をc1、Sbox2の出力信号線の配線容量をc2、Sbox1の出力が選択される確率をp、Sbox2の出力が選択される確率を1-pとすると、φ1 = p・c1、φ2 = -(1-p)・c2と表され、乱数生成器12の一般的特性からセレクタ105によって2つのSbox1(103)、Sbox2(104)を均等(p=1/2)に選択するので、φ1とφ2とは、各配線容量c1とc2に依存することになり、その結果、各配線容量c1とc2が異なるためにφ1=-φ2が成り立たらないからである。
そこで、第1実施例では、配線容量c1とc2が等しくない場合にもDPA耐性を達成できるよう、Sbox1とSbox2の選択確率pで乱数生成器12からの乱数を制御するようにした。
図3は、第1実施例の暗号化モジュール1を示したものである。
DESの非線形処理は、一般には8個のSboxで構成されるから、図2において示したSbox1(103)はSbox1−1〜Sbox1−8の計8個に対応し、Sbox2(104)はSbox2−1〜Sbox2−8の計8個に対応する。Sbox1−1〜Sbox1−8の出力信号線の容量は、それぞれc1[1]からc1[8]で示している。同様に、Sbox2−1〜Sbox2−8の出力信号線の容量は、それぞれc2[1]からc2[8]で示している。
各セレクタ105−1〜105−8は、それぞれ乱数制御部13から出力される8ビットの乱数R[1]〜R[8]の信号線の1つとそれぞれ接続される。この例においては、乱数制御部13からの下位iビット(1≦i≦8)が、セレクタ105−iへ接続される。各セレクタ105−1〜105−8は、乱数制御部13から個別の0/1の乱数R[1]〜R[8]によって、Sbox1−iまたはSbox2−iの何れかの出力を個別に選択し、出力する。
乱数制御部13は、乱数生成器12から生成される8ビットの乱数r[1]〜r[8]をnサンプル分、一時保持するレジスタ131−1〜131−8と、8ビットそれぞれの出現確率パラメータp[i]を入力し、それぞれの出現確率に合うように、レジスタ131−1〜131−8に一時保持したnビットの乱数r[1]〜r[8]を適宜変更(変更しない場合も含む)し、変更した乱数R[1]〜R[8]を出力するフィルタ部132−1〜132−8とを備える。なお、この適宜変更は、所定の規則に基づいて変更するようにすれば良い。
パラメータ格納部141は、LSI設計におけるレイアウト時に判明する、Sbox1−1の出力信号線の配線容量c1[1]とSbox2−1の出力信号線の配線容量c2[1]とから求めた出現確率p[1]、・・・、Sbox1−8の出力信号線の配線容量c1[8]とSbox2−8の出力信号線の配線容量c2[8]とから求めた出現確率p[8]をそれぞれ設計時に格納しておき、それぞれに対応するフィルタ部132−1〜132−8へ、格納した出現確率をパラメータとして、供給する。なお、出現確率p[k](1≦i≦8)は、c2[k]/(c1[k]+c2[k])を演算すれば容易に求められる。また、ここではパラメータ格納部141に、出現確率p[1]・・・p[8]を格納するようにしたが、代わりに配線容量c1[1]、c2[1]の組、・・・c1[8]、c2[8]の組を備えるようにしても良い。この場合には、乱数制御部13にて、各配線容量の組から出現確率を求めるようにすれば良い。
次に、このような構成における乱数制御部13での変更制御について図4のフローチャートを用いて説明する。なお、説明を簡単にするために、乱数生成器12から出力される乱数の1ビットに着目して説明することとし、また、この1ビットに着目した際の構成図として図5を用意した。また、このとき乱数の1ビットのデータをr、このrにおける1の出現確率をp、1の出現確率を1-pとする。
まず、乱数生成器12からの乱数rの時系列的なnサンプル(すなわちnビット)をレジスタ131に一時格納する(step1)。次に、パラメータ格納部141から、0/1の出現確率pを取得する(step2)。取得した出現確率pにより、一時格納したnビットの乱数rは、n・pビットが0を示し、n・(1-p)ビットが1を示す必要があることが分かる。
次にp<1/2である出現確率pへと変更する場合(step3のY)には、フィルタ部132はn・pビットの0のうち所定の変更方法にて選んだn・(1/2-p)ビットを1に変更する(step4)。この変更方法は、様々な方法で実現可能であり、例えば最上位ビットから下位ビット方向へ、順に0が出現する際に、変更する個数まで1に変更する、という規則でも良い。
また、p>1/2である出現確率pへと変更する場合(step5のY)には、フィルタ部132はn・(1-p)ビットの1のうち所定の変更方法にて選んだn・(p-1/2)ビットを0に変更する(step6)。この変更方法も先と同様な方法で実現すればよい。なお、何れの変更を要しない場合には、何もしない。そして、フィルタ部132は、n・pビットが0、n・(1-p)が1とである変更(変更しない場合も含む)した乱数Rを出力する(step7)。
そして、セレクタ105は、この供給されるRに基づいて、順次Sbox1(108)とSbox2(109)との何れかの出力を選択する。このように制御することにより、φ1=-φ2の条件を満たし、DPA対策が実現できる。
上記で説明した乱数制御部13での処理は、比較的簡単に構成できるものを記載したが、0/1の出現確率をpと1-pに変更する方法であれば、例えば統計的手法を利用するようなより洗練された方法を適用してもよい。
なお、Sbox1(108)とSbox2(109)の選択確率を1/2からずらしたことによる弊害として、セレクタ105で選択された後の信号のDPA耐性が低下することが考えられる。これを回避するための対策として、Sbox1(108)とSbox2(109)の出力信号がセレクタ105に入力される前に、それぞれを新たな乱数でマスクするようにしても良い。Sbox以外の処理は線形変換であるため、このような処理は可能であり、この処理によってセレクタ105で選択された後の信号についてもDPA耐性を保証することができる。
次に、乱数生成器12から出力される乱数の1ビットに着目した上記説明を元に、本実施例の構成における、8ビットの乱数を対象とした乱数制御部13での変更制御について簡単に説明する。
この、乱数8ビットに対する処理を行う場合、8ビット乱数をnサンプルだけレジスタ131−1〜131−8に一時保持する。そして、一時保持したj番目(jは、1≦j≦8の全ての整数)のnサンプルに対し、各0/1の出現確率がp[j]と1-p[j]となるようにフィルタ部131−jで変更処理を行う。ここで、p[j]はp[j]=c2[j]/(c1[j]+c2[j])で与えられ、c1[j]とc2[j]は乱数j番目のビットが指定するSbox1−jとSbox2−jの出力信号線の配線容量である。配線容量は、LSI設計におけるレイアウト時に把握できるので、これらの値を、パラメータ格納部141に格納しておく。このj番目のビット
に対して、先で説明した方法によって0/1のバランスの変更制御を行う。以上により全ビット(8ビット)それぞれのビットごとに制御することが可能である。
以上説明してきた実施例では、通常1つのSboxに対し、2つのSbox1とSbox2とを乱数で切り換えて使用する場合について説明したが、2つのSbox1とSbox2の代わりに、図6に示すように3つ以上のSbox1〜uを用意してそれらを同様に乱数で切り換えて使用するようにしても良い。
このように1個のSboxに対して3つ以上のSbox1〜uを用意して乱数で切り換えて使用する場合も、以下のような処理を行うことにより実現できる。
ここではu個のSbox1, Sbox2, …, Sboxuを用意して乱数でそれらを切り換えて使用する場合について説明する。u個のSboxを選択するために、vビットの乱数r(vは2v-1<u≦2vを満たす)を用いると仮定する。例えばu=8の場合はv=3とし、バイナリ表現でr=000であればSbox1を、r=001であればSbox2を、...、r=111であればSbox8を選択する。以下では簡単のため、u=2vであるとして説明する。
Sbox1,…,Sboxuの出力信号線の配線容量が等しい場合は、Sbox1,…,Sboxuの選択確率が均等(すなわち、vビットの乱数rの全パタンの出現確率が均等)である場合にDPA耐性が保証されることになる。しかし、Sbox1,…,Sboxuの出力信号線の配線容量が等しくない場合は、上記実施例で説明したのと同様に、DPA耐性を実現するためにSbox1,…,Sboxuの選択確率を与える乱数rを制御する必要が生じる。その方法を以下に示す。
今、Sboxw(DPA対策として用意したu個のSboxのうちのw番目)が選択される確率をp(w)、Sboxwの出力信号線の配線容量をc(w)とする。ここでp(w)は、p(1)+...+p(u)=1という関係式を満たしている。上記したu=8、v=3という例の場合、例えば、p(1)はSbox1を指定するパタン000の出現確率を、p(2)はSbox2を指定するパタン001の出現確率を、...、p(8)はSbox8を指定するパタン111の出現確率を示す。さらにSboxwの出力値と鍵との相関をφ(w)と書くと、φ(w)はp(w)とc(w)の関数として与えられる。上述したようにDPA耐性を与える条件は相関の総和がゼロ、すなわちφ(1)+...+φ(u)=0という関係式を満たしている。
よって、これらの関係式を満たすようなp(w) (w=1,...,u)を求めることができる。このp(w)はc(w) (w=1,...,u)を与えれば決めることができる(ただし一意に決まるとは限らない)ため、パラメータ格納部141に予め格納されている配線容量c(w) (w=1,...,u)を用いることでp(w) (w=1,...,u)を決定することができる。
以上説明したように、1つのSboxに対し、複数のSboxを用意し、切替え制御することによりDPA耐性を持ったDES暗号化方式をハードウェア実装した際に生じるSbox出力信号線の配線容量の差を、切替え制御に利用される乱数の0/1の出現確率を電力差を隠蔽するよう制御するようにしたから、Sbox出力信号線の配線容量の差に対するDPA攻撃に対しても耐性を有することができるようになった。
次に、図7は、上記で説明した本実施例の変形例を示したものである。
この変形例は、乱数制御部13の入力データとして必要となる配線容量を自動検出部142によって自動的に検出を行うものである。
自動検出部142は、出力信号線の遅延時間の測定により配線容量を測定する。遅延時
間は、配線容量の目安となる情報であるため、配線容量cの代わりに遅延時間dを用いて、式(3)で与えられる0/1の出現確率pをp=d2/(d1+d2)と表すことができる。自動検出部142では、この遅延時間を測定し、Sbox1とSbox2の出力信号線の遅延時間d1, d2を得る。乱数制御部13は、自動検出部142からd1, d2の情報を受け取り、式p=d2/(d1+d2)を用いて乱数の0/1のバランスの制御を行う。このようにすることにより、LSI設計のレイアウト時ではなく、製造の結果、個々の暗号化処理回路11での配線容量にばらつきが生じたとしても、個々の暗号化処理回路21の信号線の物理的条件などが反映された値となるため、チップ毎にカスタマイズした制御を行うことが可能となる。
なお、図8のように、乱数制御部13へ与えるパラメータ格納部141と自動検出部142とを併用し、条件に応じて選択回路等で、一方を選択して利用するようにしても良いことは勿論である。
また、上記で説明した自動検出部142での遅延時間の測定法の一例として、位相比較器を用いる方法が考えられる。基準信号としてシステムクロック、比較信号として問題の信号線を用いれば、その位相差(すなわち遅延時間)を測定できる。なお、この方法では位相を比較するため、1周期以上のずれは判定できないことも予想されるが、そのような場合には、例えば、基準クロックとして分周クロックなどを用いることで、1周期よりも長い位相のずれを検出することも可能である。
上記した各変形例は、各種組み合わせて良いことは、勿論である。例えば、図3においてパラメータ格納部141の代わりに、図5で示した自動検出部142による自動検出方法を用いるようにしても良い。この場合、遅延時間d(w) (w=1,...,u)を検出し、このd(w)をc(w)の代わりに用いてp(w) (w=1,...,u)を決定することも可能である。乱数制御部13では以上のようにしてp(w) (w=1,...,u)を決定した後、p(w)に対応する乱数rのパタンの出現確率がp(w)になるように乱数rの0/1の制御を行って乱数Rを生成する。そして乱数Rを暗号処理回路11へ供給してSbox1〜Sboxuの選択に使用することで、Sbox1〜Sboxuの出力信号線の配線容量が異なる場合にもDPA耐性を有する実装を提供できる。なお、以上の第1実施例の説明は、暗号化処理回路21を例示したものであったが、基本的に暗号化と復号は相反するものであり、復号処理回路も暗号化処理回路21と同様に実現できることは勿論である。
(第2実施例)
次に、暗号化処理回路31のバスラインに流れる鍵情報などの秘密情報を乱数によってマスクする場合について説明する。
図9に示すように、暗号化処理回路31は、内部にROM、RAM、EEPROM、CPU、暗号回路、I/O等がバスラインを介して接続される。暗号回路は、DESやAESなどの共通鍵暗号方式や、RSAや楕円曲線暗号などの公開鍵暗号方式などの何れを適用したもので良い。
バスラインに同時に流れる各ビットデータのうち1であるビットの個数の総和をバスラインのハミング重みと呼ぶが、このハミング重みは、DPA攻撃に対する耐性を維持するには、平均値であることが望ましく、ハミング重みが極端に小さかったり大きかったりすることはDPA攻撃に対する脆弱性を与える可能性があることが分かっている。例えば、8ビットのバスラインの場合、ハミング重みが4であることが理想的であり、ハミング重みが0や8であると、DPA攻撃によりデータ値の推測が容易となる。
従って、本実施例では、秘密情報を乱数でマスクした結果(マスクデータ)、バスラインに流れるマスクデータのハミング重みが平均的な値になるように、乱数を制御するようにしている。
図10は、本実施例の動作の一例を示すための図である。ここでは、EEPROMに暗号回路で利用する外部に秘密の鍵情報を記憶しておき、暗号回路の要求によって、バスラインを介して暗号回路へ送信する際に、バスライン上に流れる秘密の鍵情報をマスクすることを想定している。
まず、CPUは、EEPROMへ、その内部に記憶する鍵情報を要求する(1)。鍵情報検出部143は、EEPROMへの鍵情報の要求を検出し、EEPROMから鍵情報を取得する(2)。一般に鍵情報は、バスラインのビット幅よりはるかに大きいものであり、その場合には、例えばバスラインのビット幅単位で取得する(ようにしても良い)。鍵情報検出部143は、取得した鍵情報をビット幅単位で、乱数制御部13へ送信する(3)。一方、乱数生成器12は、乱数を順次生成し、乱数制御部13へ送信する(4)。乱数制御部13は、乱数生成器12から送られる乱数をバス幅単位で乱数として得、また鍵情報検出部143からのビット幅の鍵情報を得、得られたこれらのデータを排他的論理和した結果、ハミング重みが、バス幅の1/2になるように乱数の0/1を変更する。例えば、マスクするデータがバイナリ表現で10111000、乱数が01100101であった場合、マスクした結果は11011101となり、ハミング重みは6である。ハミング重みを4にするため、乱数の最下位と最上位ビットを変更して11100100とすると、マスクした結果は01011100となり平均値4が達成される。なお、ここでは、最下位と最上位とを変更するようにしたが、どのビットを変更するかは、予め定めた規則に基づいて変更するようにすれば何れの方法でも良い。
変更した乱数を、EEPROMおよびCPUへ供給し(5)、EEPROMでは得られた乱数によって、この求めた際に対応するビット幅の鍵情報をマスクし、バスラインへ出力する(6)。CPUは、マスクされた鍵情報を受け取って、乱数制御部から得た(変更した)乱数で排他的論理を行うことにより、CPU内で鍵情報を得る(7)。以上のように、バスライン上で流れる鍵情報は、ビット幅単位で送信される各データが、全てハミング重みが、バス幅の1/2となっているので、外部からのDPA攻撃に対し、耐性を備えることができる。
以上説明した本実施例を上位概念で示すと、乱数で隠蔽するデータをs、乱数をr、それらに対して行う処理をfとすると、h=f(s,r)で与えられるhの何らかの性質を制御するといえる。このように表示した際、例えばRSA暗号に対するタイミング攻撃やDPAの対策であるメッセージブラインディングやべき指数ブラインディング等も同様に扱うことができることがわかる。RSAの公開鍵をe,N、入力メッセージをMとすると、メッセージブラインディングでは乱数rを用いてM'=M・r mod N (またはM'=M・re mod N)を計算するという処理が通常行われる。これをh=f(s,r)に対応付けると、Mがs、M'がhにそれぞれ相当する。メッセージブラインディングが施されている場合、攻撃者は意図した攻撃に有効となるM'を発生させるためにMをいろいろ変えながら入力してRSAの処理を行うことが考えられる。ここで、攻撃に対する脆弱性に繋がるようなM'の性質が分かっている場合、そのようなM'が発生することがないようにrを制御することで攻撃を防御することができる。
これを実現するためには、例えば次のような処理を行えばよい。DPA攻撃耐性に影響を与える信号sのモニタリングを行い、この信号sに基づきh=f(s,r)で与えられる信号hが望ましい性質からずれている場合には、それを是正する方向に乱数rの制御を行う。その際、例えばr=f-1(s,h)という逆変換が得られる場合は、この関係式を使ってrの制御を行うことも可能である。ここで、rの制御の方法においては、例えば、第1実施例で説明したようなビット単位で0/1を制御する方法でもよく、hに対する望ましい性質に対応してrが取り得る値の範囲を限定するという方法でも良い。また、モニタリングする対象は
、信号sの代わりに、信号hとしても良い。
以上のような制御を乱数生成器12の出力であるrに対して行って乱数Rを生成し、このRを暗号処理回路11に供給することで、タイミング攻撃やDPA攻撃などに対する信号hに関する耐性を達成することが可能である。
なお、以上の第2実施例の説明も、暗号化処理回路31を例示したものであったが、基本的に暗号化と復号は相反するものであり、復号処理回路も暗号化処理回路31と同様に実現できることは勿論である。
以上詳細に説明してきた本実施の形態においては、種々の変形が可能である。例えば、図1の乱数制御部13、パラメータ供給部14を乱数生成器12の内部に組み込むことも可能である。また、乱数制御部13のみを乱数生成器12内部に組み込み、パラメータ供給部14は、乱数生成器12の外に置くという構成も可能である。
本実施の形態の暗号化/復号モジュール1の機能ブロックを示す図。 DESの1段の処理単位の主要部を示した図。 第1実施例の暗号化モジュール1を示した図。 乱数制御部13での乱数の変更制御を示すフローチャート。 乱数生成器12から出力される乱数の1ビットに着目した構成図。 第1実施例の2つのSboxに代え、3つ以上のSboxとした図。 第1実施例の変形例を示す図。 第1実施例において、パラメータ格納部141と自動検出部142とを選択可能にした構成例。 第2実施例の暗号化処理回路31の内部構成図。 第2実施例の動作の一例を示すための図。
符号の説明
1・・・暗号化モジュール
11・・・暗号化/復号処理回路
12・・・乱数生成器
13・・・乱数制御部
14・・・パラメータ供給部
21、31・・・暗号化処理回路
101、106・・・線形変換部
102、107・・・論理回路
103、104、108、109・・・Sbox
105、105−1〜8・・・セレクタ
141・・・パラメータ格納部
142・・・自動検出部
143・・・鍵情報検出部
131、131−1〜131−8・・・レジスタ
132、132−1〜131−8・・・フィルタ部
105・・・自動検出部

Claims (5)

  1. 第1の乱数を生成して出力する乱数生成器と、
    前記乱数生成器から出力された前記第1の乱数を変更するためのパラメータを供給するパラメータ供給部と、
    前記乱数生成器から入力される前記第1の乱数を、前記パラメータ供給部から供給される前記パラメータによってその出現確率が定められる第2の乱数へ変更する乱数制御部と、
    暗号化/復号演算の対象であるデータをそれぞれ異なる変換方式によって非線形変換する第1乃至第n(nは2以上の整数)の非線形変換回路と、
    前記第1乃至第nの非線形変換回路のそれぞれと配線で接続されていて、前記乱数制御部から入力される前記第2の乱数に応じて前記第1乃至第nの非線形変換回路の出力のいずれかを選択する選択回路とを備え、
    前記パラメータは、前記第1乃至第nの非線形変換回路と前記選択回路とを接続する前記各配線の容量から求められる前記第2の乱数の出現確率であり、
    前記各配線の容量は、LSI(Large Scale Integration)設計時のレイアウト情報から求められることを特徴とする暗号化/復号モジュール。
  2. 第1の乱数を生成して出力する乱数生成器と、
    前記乱数生成器から出力された前記第1の乱数を変更するためのパラメータを供給するパラメータ供給部と、
    前記パラメータ供給部から供給される前記パラメータから第2の乱数の出現確率を算出し、前記乱数生成器から入力される前記第1の乱数を、前記算出された出現確率に応じて前記第2の乱数へ変更する乱数制御部と、
    暗号化/復号演算の対象であるデータをそれぞれ異なる変換方式によって非線形変換する第1乃至第n(nは2以上の整数)の非線形変換回路と、
    前記第1乃至第nの非線形変換回路のそれぞれと配線で接続されていて、前記乱数制御部から入力される前記第2の乱数に応じて前記第1乃至第nの非線形変換回路の出力のいずれかを選択する選択回路とを備え、
    前記パラメータは、前記第1乃至第nの非線形変換回路と前記選択回路とを接続する前記各配線の容量であり、
    前記各配線の容量は、LSI設計時のレイアウト情報から求められることを特徴とする暗号化/復号モジュール。
  3. 前記第1および第2の乱数がm(mは2以上の整数)ビットであり、
    前記乱数制御部は、
    前記第2の乱数の各ビットの“0”の出現確率pが1/2以下である場合は、前記第1の乱数の各ビットの“0”のうち、m・(1/2−p)ビットを“1”に変更することによって前記第1の乱数を前記第2の乱数へ変更し、
    前記第2の乱数の各ビットの“0”の出現確率pが1/2以上である場合は、前記第1の乱数の各ビットの“1”のうち、m・(p−1/2)ビットを“0”に変更することによって前記第1の乱数を前記第2の乱数へ変更することを特徴とする請求項1又は請求項2に記載の暗号化/復号モジュール。
  4. 前記非線形変換回路が第1および第2の非線形変換回路で構成され、
    前記第1および第2の非線形変換回路と、それらの出力のうち一方を選択する前記選択回路との間の前記各配線の配線容量をC(1)、C(2)とした場合に、
    前記パラメータ供給部が、
    前記第1の非線形変換回路の出力が前記選択回路によって選択される確率が[C(2)/{C(1)+C(2)}]となり、前記第2の非線形変換回路の出力が前記選択回路によって選択される確率が[C(1)/{C(1)+C(2)}]となるように前記パラメータを前記乱数制御部へ供給することを特徴とする請求項1又は請求項2に記載の暗号化/復号モジュール。
  5. 前記パラメータ供給部は、前記パラメータを格納するパラメータ格納手段を備えることを特徴とする請求項1乃至請求項4のいずれか1項に記載の暗号化/復号モジュール。
JP2003318537A 2003-09-10 2003-09-10 暗号化/復号モジュール Expired - Fee Related JP3998616B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003318537A JP3998616B2 (ja) 2003-09-10 2003-09-10 暗号化/復号モジュール

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003318537A JP3998616B2 (ja) 2003-09-10 2003-09-10 暗号化/復号モジュール

Publications (2)

Publication Number Publication Date
JP2005086670A JP2005086670A (ja) 2005-03-31
JP3998616B2 true JP3998616B2 (ja) 2007-10-31

Family

ID=34417795

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003318537A Expired - Fee Related JP3998616B2 (ja) 2003-09-10 2003-09-10 暗号化/復号モジュール

Country Status (1)

Country Link
JP (1) JP3998616B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1865481A1 (en) * 2005-03-31 2007-12-12 Matsushita Electric Industrial Co., Ltd. Data encryption device and data encryption method
JP4180094B2 (ja) 2005-04-28 2008-11-12 松下電器産業株式会社 プログラム変換装置、暗号処理装置、暗号処理方法
JP4830390B2 (ja) * 2005-07-29 2011-12-07 富士ゼロックス株式会社 物品確認システム、読取装置、及び物品確認方法
US20080052530A1 (en) 2006-02-16 2008-02-28 International Business Machines Corporation System and method to provide CPU smoothing of cryptographic function timings
JP4986206B2 (ja) * 2006-02-22 2012-07-25 株式会社日立製作所 暗号処理方法及び暗号処理装置
JP4901564B2 (ja) * 2007-04-18 2012-03-21 三菱電機株式会社 分割テーブル作成装置及び分割テーブル作成プログラム
JP4603022B2 (ja) * 2007-08-02 2010-12-22 株式会社スクウェア・エニックス 暗号化データ作成装置、および暗号化データ作成プログラム
JP5364840B2 (ja) 2010-02-22 2013-12-11 株式会社東芝 暗号化装置
KR102446866B1 (ko) * 2014-08-28 2022-09-23 삼성전자주식회사 부채널 공격을 방지하는 암복호화기 및 이의 구동 방법 그리고 이를 포함하는 제어 장치
GB2581652B (en) 2017-10-31 2022-08-24 Mitsubishi Heavy Ind Mach Systems Ltd Information processing device, method for controlling information processing device, and program

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59223848A (ja) * 1983-06-01 1984-12-15 Agency Of Ind Science & Technol 任意確率の2値乱数発生器
JPH08305551A (ja) * 1995-04-27 1996-11-22 Victor Co Of Japan Ltd 乱数発生装置
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に対して安全な暗号化

Also Published As

Publication number Publication date
JP2005086670A (ja) 2005-03-31

Similar Documents

Publication Publication Date Title
Bogdanov et al. A 3-subset meet-in-the-middle attack: cryptanalysis of the lightweight block cipher KTANTAN
US7659837B2 (en) Operation processing apparatus, operation processing control method, and computer program
KR102499723B1 (ko) 물리적 복제방지 기능 비트스트링 생성에 대한 신뢰성 향상 방법
US8990276B2 (en) Circuit and method for generating a true, circuit-specific and time-invariant random number
US8782396B2 (en) Authentication with physical unclonable functions
JP4687775B2 (ja) 暗号処理装置
US20130082733A1 (en) Signal processing system
EP1398901B1 (en) Feistel type encryption method and apparatus protected against DPA attacks
JP2008131108A (ja) 共通鍵暗号のための暗号化装置
US9325494B2 (en) Method for generating a bit vector
JP3998616B2 (ja) 暗号化/復号モジュール
US20190385489A1 (en) Methods and devices for protecting data
JP2008061118A (ja) 暗号処理回路及びicカード
WO2013088939A1 (ja) 識別情報生成装置及び識別情報生成方法
CN104838617A (zh) 整合安全装置及整合安全装置中使用的信号处理方法
KR101136973B1 (ko) 통합 보안 장치 및 통합 보안 방법
EP3214567A1 (en) Secure external update of memory content for a certain system on chip
JP4935229B2 (ja) 演算処理装置、および演算処理制御方法、並びにコンピュータ・プログラム
JP2007174024A (ja) 暗号処理装置
Fujino et al. Tamper-resistant cryptographic hardware
CN104718718B (zh) 用于执行密码方法的装置和方法
Rijmen et al. Producing collisions for PANAMA
JP3606418B2 (ja) 乱数生成装置
JP2006054568A (ja) 暗号化装置、復号化装置、および方法、並びにコンピュータ・プログラム
JP2006203416A (ja) 電子素子及び解読攻撃防御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050207

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050415

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20050606

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070508

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070704

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070807

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

Free format text: PAYMENT UNTIL: 20100817

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100817

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110817

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110817

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120817

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120817

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130817

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees