JP2008118566A - 暗号処理回路及び暗号処理方法 - Google Patents

暗号処理回路及び暗号処理方法 Download PDF

Info

Publication number
JP2008118566A
JP2008118566A JP2006302064A JP2006302064A JP2008118566A JP 2008118566 A JP2008118566 A JP 2008118566A JP 2006302064 A JP2006302064 A JP 2006302064A JP 2006302064 A JP2006302064 A JP 2006302064A JP 2008118566 A JP2008118566 A JP 2008118566A
Authority
JP
Japan
Prior art keywords
input
data
output
mask
unit
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.)
Granted
Application number
JP2006302064A
Other languages
English (en)
Other versions
JP5203594B2 (ja
Inventor
Masahiko Motoyama
雅彦 本山
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 JP2006302064A priority Critical patent/JP5203594B2/ja
Priority to US11/934,345 priority patent/US8155317B2/en
Publication of JP2008118566A publication Critical patent/JP2008118566A/ja
Application granted granted Critical
Publication of JP5203594B2 publication Critical patent/JP5203594B2/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
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • 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/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)
  • Storage Device Security (AREA)

Abstract

【課題】消費電力は入力されたデータに依存しない、いわゆる電力解析攻撃に対して耐性を有する暗号処理回路を実現する。
【解決手段】暗号処理回路S1は、所定の暗号演算処理に用いられる2進数の入力データに対して、入力データのハミング重みと関係なく、ハミング重みが一定となる第1の複数のビットデータに変換するデコーダ400と、デコーダ400により変換された第1の複数のビットデータを受信し、所定の暗号演算処理のために、受信した第1の複数のビットデータのビット位置を入れ替えることによって、第1の複数のビットデータのビットパターンを変更して、第2の複数のビットデータを生成する配線ネットワーク200と、配線ネットワーク200において生成された第2の複数のビットデータを、2進数の出力データに変換するエンコーダ300とを有する
【選択図】図3

Description

本発明は、暗号処理回路及び暗号処理方法に関する。
従来より、秘密情報を保護するための暗号処理技術が広く用いられている。そして、暗号処理技術は、ハードウエアで実現される場合がある。
例えば、暗号化方式の1つであるDES(Data Encryption Standard)のS-Boxにおける非線形変換処理を、ハードウエアで実現する場合、その処理回路は、ROMなどのメモリを用いたり、種々の回路の組み合わせによって実現される。なお、S-Boxにおけるその処理は、入力されたデータを別のデータに1対1に変換する処理である。
一方、暗号解析の手法の一つに、暗号処理を行うハードウエアの消費電力を観測して秘密データを盗み取るための電力解析という手法がある。秘密データの処理時にハードウエア回路で消費される電力が秘密データと相関がある場合、その手法を用いた、いわゆる電力解析攻撃によって、暗号処理に用いられる秘密データが盗み取られてしまう虞がある。従って、近年は、このような電力解析攻撃への対策に関する種々の技術が提案されている(例えば、特許文献1参照)。
また、暗号処理回路を組み合わせ回路により構築する場合、一般的には自動論理合成処理などの技術を用いて、その組み合わせ回路が生成される場合が多い。
しかし、自動論理合成処理の技術を用いた場合、どのような回路が生成されるかは予測困難であり、また、合成された回路に対して改良を行うことが困難な場合が多い。従って、生成された、組み合わせ回路が、秘密データの処理時の消費電力が秘密データと相関を持っている可能性は否定できず、万一そのような相関があった場合に、その回路を改良してその相関を無くすようなことは困難であった。
なお、自動論理合成処理により生成される回路を改良できる技術が提案されている(例えば、特許文献2参照)が、回路規模が大きくなるという問題がある。
特開2005-31471号公報 特開2003-223100号公報
そこで、本発明は、消費電力は入力されたデータに依存しない、いわゆる電力解析攻撃に対して耐性を有する暗号処理回路及び暗号処理方法を提供することを目的とする。
本発明の一態様によれば、所定の暗号演算処理を行う暗号処理回路であって、前記所定の暗号演算処理に用いられる2進数の入力データに対して、該入力データのハミング重みと関係なく、ハミング重みが一定となる第1の複数のビットデータに変換するデコーダと、該デコーダに接続され、前記デコーダにより変換された前記第1の複数のビットデータを受信し、前記所定の暗号演算処理のために、受信した前記第1の複数のビットデータのビット位置を入れ替えることによって、前記第1の複数のビットデータのビットパターンを変更して、第2の複数のビットデータを生成する配線ネットワークと、該配線ネットワークに接続され、前記配線ネットワークにおいて生成された前記第2の複数のビットデータを、2進数の出力データに変換するエンコーダと、を有することを特徴とする暗号処理回路が提供される。
本発明の一態様によれば、所定の暗号演算処理を行う暗号処理方法であって、前記所定の暗号演算処理に用いられる2進数の入力データに対して、該入力データのハミング重みと関係なく、ハミング重みが一定となる第1の複数のビットデータに変換し、該変換された前記第1の複数のビットデータを受信し、前記所定の暗号演算処理のために、受信した前記第1の複数のビットデータのビット位置を入れ替えることによって、前記第1の複数のビットデータのビットパターンを変更して、第2の複数のビットデータを生成し、該生成された前記第2の複数のビットデータを、2進数の出力データに変換することを特徴とする暗号処理方法が提供される。
本発明によれば、消費電力は入力されたデータに依存しない、いわゆる電力解析攻撃に対して耐性を有する暗号処理回路及び暗号処理方法を実現することができる。
以下、図面を参照して本発明の実施の形態を説明する。
(第1の実施の形態)
まず図1に基づき、本発明の第1の実施の形態に係わる暗号処理回路の全体構成について説明する。図1は、第1の実施の形態に係わる暗号処理回路の構成を示すブロック図である。
図1は、種々の暗号処理回路に適用できる基本構成を示し、配線ネットワーク部(以下、配線ネットワークという)2と、エンコード部(以下、エンコーダという)3と、デコード部(以下、デコーダという)4を含んで構成される暗号処理回路1を示す。デコーダ4は、nビットの2進数データをmビット(m>n)のビット列に変換するデコーダである。配線ネットワーク2は、デコードされたデータを入れ替えることによって所定の暗号演算処理を行う配線ネットワーク回路である。エンコーダ3は、配線ネットワーク2から出力されたsビットのデータをtビットのデータ(s>t)に変換するエンコーダである。
ここで、所定の暗号演算処理に用いられる入力されたデータはnビットであるが、デコードされるとnより大きいmビットとなり、冗長性が増加している。さらに、デコード後のデータは、入力されたnビットの2進数データのハミング重みとは無関係なハミング重みの複数のビットデータであり、その後処理されている。例えば、mを2のn乗として、mビットのデータのただ1つの信号のみがHIGH(以下、Hともいう)となるようなデータに、入力データは変換される。そのように変換すると、デコード後、常にHとなる信号の配線は1本のみなので、ハミング重みが常に一定となる。従って、暗号処理回路1の消費電力は入力されたデータに依存しないので、いわゆる電力解析攻撃に対して耐性を有する暗号処理回路を実現することができる。
以下に、本実施の形態の具体例を図面を用いて説明する。
図2は、暗号アルゴリズムの一つであるDESの暗号処理を行う暗号処理回路の全体構成を示すブロック図である。図2において、図1に示した暗合処理回路の構成は、後述するf関数部の内部に適用されている。そして、f関数部内の各S-Boxが、図1に示した暗合処理回路の構成を有している。
暗号処理回路1は、ICカード等に搭載され、暗号処理及びその復号処理のために用いられる。例えば、ICカードに搭載された暗号回路モジュール11には、平文データ(以下、平文ともいう)PTと、秘密情報である鍵データ(以下、鍵ともいう)Kが入力される。暗号回路モジュール11は、スクランブル部12と、鍵スケジュール部13を含む。
スクランブル部12は、ラウンド関数部21を含み、さらに、図示しない初期転置回路と最終転置回路も含む。ラウンド関数部21は、さらに、f関数部22と排他的論理和部23とを含む。64ビットの平文PTは、入力端子24からスクランブル部12に入力される。鍵スケジュール部13は、図示しない転置回路と縮約型転置回路とを含む。56ビットの鍵Kは、入力端子25から鍵スケジュール部13に入力される。
平文PTは、初期転置回路によりそれぞれ32ビットの2つのデータに分離される。2つのデータの一方は、f関数部22に入力され、他方は、排他的論理和部23に入力される。
一方、鍵データKは、鍵スケジュール部13に入力され、転置回路により、それぞれが28ビットの2つのデータに分離される。その後、2つのデータは、それぞれシフト回路によりシフト処理され、さらに縮約型転置回路によりビット選択されて、拡大鍵データ(以下、拡大鍵ともいう)が生成される。生成された拡大鍵は、ラウンド関数部21のf関数部22に入力される。なお、鍵データは、例えばICカードのEEPROMから読み出されて内部バスを介して鍵スケジュール部3に入力される。
ラウンド関数部21は、平文PTの一方のデータと拡大鍵とを用いて、f関数部22で関数処理を行い、さらにf関数の出力を排他的論理和部23に出力して排他的論理和をとる。そして、ラウンド処理部21は、それぞれ32ビットの2つのデータの一方を、そのまま第1の出力とし、排他的論理和部23の出力を第2の出力として生成する。
すなわち、スクランブル部12では、それぞれが32ビットの2つの入力から、それぞれが32ビットの2つの出力を生成し、鍵スケジュール部13では、それぞれが28ビットの2つの入力から、それぞれが28ビットの2つの出力を生成する。
DESのアルゴリズムでは、スクランブル部12において、64ビットのデータを2つに分け、一方をf関数部22に入力して他方と排他的論理和をとるというラウンド処理を16回繰り返す。次のラウンドでは、2つの出力は、入れ替えられて、再度ラウンド関数部21に入力される。さらに、鍵スケジュール部13では、56ビットの中から48ビットの拡大鍵が16個生成され、各ラウンドにおいてf関数部22に入力される。最終的に、生成された暗号文は、出力端子26から出力される。
f関数部22は、非線形変換処理を行うS-Boxを含む。S-Boxは、それぞれが6ビット入力で4ビット出力を有する、8個のランダムな非線形変換処理を行うS-Box(S1からS8)を含む。
図3は、暗号アルゴリズムの一つであるDESのf関数部22のS-Box中の一つの回路であるS1と呼ばれる非線形変換を実現する回路構成の例を示すブロック図である。
回路S1は、6ビットのデータが入力される入力端子部101と、4ビットのデータが出力される出力端子部102を有する。回路S1は、配線ネットワーク部200と、エンコーダ300と、デコーダ400とを含んで構成される。
配線ネットワーク部200は、サブ配線ネットワーク部501から504と、選択部510とを含む。サブ配線ネットワーク501から504は、それぞれ、16ビットの入力と16ビットの出力とを有する回路S1-0,S1-1,S1-2,S1-3である。後述するように、回路S1-0,S1-1,S1-2,S1-3は、それぞれデコーダ400からの複数のビットデータの出力を、所定の出力に置き換えるように構成されている。
選択部510は、サブ配線ネットワーク501から504の各出力が接続されている。選択部510は、制御信号としての、入力端子101からの入力データの中の2ビットの入力データに基づいて、各サブ配線ネットワーク501から504の入力のいずれかを選択して、エンコーダ300に出力する。選択部510は、入力データ(A5, A0) = (0, 0)に対してはサブ配線ネットワーク501(S1-0)を選択し、入力データ(A5, A0) = (0, 1)に対してはサブ配線ネットワーク502(S1-1)を選択し、入力データ(A5, A0) = (1, 0)に対してはサブ配線ネットワーク503(S1-2)を選択し、入力データ(A5, A0) = (1, 1)に対してはサブ配線ネットワーク504(S1-3)を選択するものとする。
エンコーダ300は、選択部510から出力された16ビットのデータを4ビットデータにエンコードして出力端子部102に出力する。
デコーダ400は、入力端子101に入力された6ビットデータの中の4ビットを16ビットのデータにデコードして、各配線ネットワーク501から504に出力する。デコーダ400は、入力された4ビットで表される値のいずれか(16個の中の1つ)を、16個の出力のうちいずれかつ一つを1にすることによって特定するように、4ビットのデータを16ビットのデータに変換する。
DESの回路S1におけるその変換処理内容は、図4に示す表で定義される。図4は、DESの回路S1におけるその変換処理内容を示す表である。言い換えると、回路S1-0,S1-1,S1-2,S1-3は、入力データを所定のランダムな出力データに変換する変換処理部である。図3の回路S1には、6ビットのデータ(A5, A4〜A1, A0)が入力され、回路S1は、4ビットのデータ(B3, B2, B1, B0)を出力する。A4〜A1の4ビットの値が、図4の表の列を指定し、A5とA0の2ビットが、表の行を指定する。具体的には、(A5, A0) = (0, 0)のときは、S1-0が選ばれ、(A5, A0) = (0, 1)のときは、S1-1が選ばれ、(A5, A0) = (1, 0)のときは、S1-2が選ばれ、(A5, A0) = (1, 1)のときは、S1-3が選ばれる。また、(A4, A3, A2, A1) = (0,0,0,0)のときは、列0が選択され,(A4, A3, A2, A1) = (0,0,0,1)のときは、列1が選択される。以下同様にして、4ビットの入力データに対して所定の列が選択され、(A4, A3, A2, A1) = (1,1,1,1)のときは、列15が選択される。回路S2からS8も、図3と同様の構成であり、それぞれ図4に示すものと同様な表(図示せず)で定義される変換処理を実行する。
図5は、デコーダ400の構成例を示す回路図である。デコーダ400は、4ビットの入力データを入力するための4つの入力端子(Bit0〜3)を有する入力部401と、4ビットのデータから16ビットのデータに変換する変換部402と、16ビットのデータを出力するための16個の出力端子(D0〜15)を有する出力部403とを含んで構成される。変換部402は、ここでは、16個のAND(論理積)回路を含み、16個のAND回路の入力端には、4ビットで表される16個(0から15)のそれぞれの値に対して、1つのAND回路からのみ出力が出るように、インバータ回路が設けられている。各AND回路の出力は、対応する出力端子に接続されている。
図5では、例えば、4ビットの入力データが(0,0,0,0)のときは、出力部403の出力端子D0のみに出力が出るように、4つのインバータ回路がそれぞれ4つの入力端に設けられた、一番目のAND回路は構成されている。また、4ビットのデータが(0,0,0,1)のときは、出力部403の出力端子D2のみに出力が出るように、3つのインバータ回路が3つの入力端に設けられた、2番目のAND回路が設けられている。同様に、4ビットのデータが(1,1,1,1)のときは、出力部403の出力端子D15のみに出力が出るように、インバータ回路を入力端に有しないAND回路が設けられている。すなわち、デコーダ400の出力は、いずれか1つの配線(すなわち出力)のみがアクティブ(この例では論理1であるH)となる。
図6は、エンコーダ300の構成例を示す回路図である。エンコーダ300は、16ビットの入力データを入力するための16個の入力端子(D0〜15)を有する入力部301と、16ビットのデータから4ビットのデータに変換する変換部302と、複数のビットデータを、ここでは4ビットのデータを出力するための4つの出力端子(Bit0〜3)を有する出力部303とを含んで構成される。変換部302は、ここでは、4つの論理和(OR)回路を含み、16ビットで表される16個の値に対応して出力が出るように、4つのOR回路の入力端と入力部301の入力端子との接続は、互いに異なっている。
図6に示すように、第1のOR回路は、16ビットのデータのうち、入力端子D8からD15の8個のデータを入力とする。第2のOR回路は、16ビットのデータのうち、入力端子D4からD7とD12からD15の8個のデータを入力とする。第3のOR回路は、16ビットのデータのうち、入力端子D2,D3,D6,D7,D10,D11,D14,D15の8個のデータを入力とする。第4のOR回路は、16ビットのデータのうち、入力端子D1,D3,D5,D7,D9,D11,D13,D15の8個のデータを入力とする。
図7から図10は、それぞれサブ配線ネットワーク501から504の構成例を示す回路図である。図7のサブ配線ネットワーク501では、16個の端子を含む入力部501aの各入力端子と16個の端子を含む出力部501bの各出力端子とが、複数の配線を含む配線部501cを介して、一対一に接続されている。そして、入力部501aの16個の入力端子(0〜15)が、出力部501aの16個の出力端子(0〜15)と、0が0に、1が1に、同様に15が15にというようにそのまま入力の端子と出力の端子が同じ位置で接続されることがないように、接続されている。
すなわち、サブ配線ネットワーク501cは、デコーダ400からのデコードデータの順番、あるいは入力部501aに入力された16個の信号に対応する配線の順番、を変更するように構成されている。図7に示すように、サブ配線ネットワーク501cの複数の入力端における複数のビットデータであるデコードデータの並びの順序が、サブ配線ネットワーク501cの出力端において変更されて所定の順序になるように、複数の入力端と複数の出力端間の配線パターンが形成される。その結果、サブ配線ネットワーク501cは、デコードデータのビット位置の入れ替え、エンコーダ300に出力する。
上述したように、デコーダ400からの16個の出力(0〜15)中の1つの出力だけがHであるので、出力端子501bにおけるHの出力の端子の位置は、入力端子501aにおける「1」の出力の位置がされる端子の位置とは異なる。例えば、図7では、0から15の値を示すデータの中で、15の値は、7に変換され、14の値は0に変換されるように、配線部501cの各配線は接続されている。各配線は、16個の入力データが、全て同じ値として出力されることがないように、複数の入力端子と複数の出力端子が接続されている。
同様に、サブ配線ネットワーク502から504においても、それぞれ図8から図10に示すように、16個の端子を含む入力端子501aの各端子と16個の端子を含む出力端子501bの各端子とが、複数の配線を含む配線部501cを介して、一対一に接続されている。なお、図8から図10に示すように、入力端子501a中の1つ又は複数の端子は、出力端子501b中の1つ又は複数の端子と同じ位置に接続されているものがあってもよい。
上述したように、サブ配線ネットワーク501から504のいずれか1つの選択は、選択部510の選択によって行われる。
図3の回路の動作を例を用いて示す。例えば、入力端子部101に、6ビットのデータ(010011)が入力された場合、A5=0, A4=1, A3=0, A2=0, A1=1, A0=1である。従って、(A5, A0) = (0, 1)であり、(A4, A3, A2, A1) = (1,0,0,1)=9である。
ここでは、6ビットの入力データのうち最上位ビットと最下位ビットは、選択部510に転送される。残りの4ビットは、デコーダ400に転送され、デコードされる。
デコーダ400の入力部401へ(A4, A3, A2, A1) = (1,0,0,1)が入力されると、図5に示す変換部402の1つのAND回路だけが、Hを出力する。すなわち、16個のAND回路の中の1つだけが、入力データに対応してHを出力する。この場合、図5の出力端子D9だけがHを出力する。すなわち、入力データの値「9」に対応する出力端子D9の出力のみがHとなり、残りの出力端子の出力はLとなる。
出力部403の出力端子D9のHの出力(他の出力端子はLの出力)は、サブ配線ネットワーク501から504の全ての入力端子501aの各端子に入力される。
サブ配線ネットワーク502(S1-1)における配線の入れ替えにより、図8に示すように、「9」の端子に入力された信号は、「6」の端子から出力される。同様に、他のサブ配線ネットワーク501(S1-0)、503(S1-2)、504(S1-3)においても配線の配線入れ替えにより、図7,図9及び図10にそれぞれ示すように、サブ配線ネットワーク501(S1-0)は「10」の端子から、サブ配線ネットワーク503(S1-2)は「12」の端子から、サブ配線ネットワーク504(S1-3)は「11」の端子から出力される。
すなわち、サブ配線ネットワーク501(S1-0)の出力は、(0000010000000000)となり、サブ配線ネットワーク502(S1-1)の出力は、(0000000001000000)となり、サブ配線ネットワーク503(S1-2)の出力は、(0001000000000000)となり、サブ配線ネットワーク504(S1-3)の出力は、(0000100000000000)となる。各サブ配線ネットワークのそれぞれの16ビットの信号が選択部510に転送される。
入力データが(A5, A0) = (0, 1)であるため、選択部510は、サブ配線ネットワーク502(S1-1)を選択する。また、入力データが(A4, A3, A2, A1) = (1,0,0,1)=9であり、サブ配線ネットワーク502(S1-1)は「6」の端子がHなので、選択部510は、出力(0000000001000000)をエンコーダ300に出力する。
エンコーダ300は、図6に示すように、入力部301の入力端子D6のみがHであるため、変換部302の4つのOR回路は、出力部303の4つの出力端子(Bit0〜3)に、出力(0110)を出力する。従って、図4に示したように、入力データの値が9の場合に、10進数で6の値は、2進数のデータ(0110)として出力される。
以上のように、S-Boxにおいて、デコーダ400は、入力データを、複数の出力端子の中の1つの端子だけがHとなるようなデコードデータにデコードして、配線ネットワーク部200へ出力する。そして、配線ネットワーク200は、入力された複数のビットデータの並びの順序、あるいは各データに対応する配線の順番が複数の出力端子において変わるように、デコードデータのビットパターンを変更してエンコーダ300に出力する。そのとき、出力される複数のデータの中で、1つだけがHで、他はLである。そして、配線ネットワーク200の出力をエンコーダ300で所定のデータにエンコードすることによって、f関数部22のS-Box中のS1と呼ばれる非線形変換処理が実現される。
以上の構成によれば、S-Boxにおいて、配線ネットワーク200では、必ず1つのHの信号だけが処理されるので、消費電力は入力されたデータに依存しない。特に、CMOS論理回路の消費電力は、処理されるデータに依存する。よって、いわゆる電力解析攻撃に対して耐性を有する暗号処理回路が実現される。
なお、図3の回路は、次のような変形も可能である。図11は、図3の変形例の構成を示すブロック図である。図11の回路は、選択部510の前に、各サブ配線ネットワークに対応してエンコーダ301,302,303,304を設け、エンコードされたデータを選択部510において選択するように構成されている。図3の回路と比較すると、図11では、選択部510とエンコーダの順序が入れ替わっているが、全く同様の出力が得られる。
さらになお、図7から図10では、4ビットデータがデコードされる例であるが、S-Boxの入力は6ビットであるので、6ビットデータをデコードし、64ビット(2の6乗)のデータに変換し、その64ビットのデータを入れ替え、エンコードするようにしてもよい。この場合、出力は6ビットデータとなるので、エンコードのときに2ビットデータを取り除くようにして実現することができる。
(第2の実施の形態)
次に、図12から図22を用いて、本発明の第2の実施の形態を説明する。第2の実施の形態は、暗号処理回路においてマスク処理が施される例である。本実施の形態のマスク処理は、データをマスクするデータマスキング処理である。
ここで、マスク処理とは、暗号処理のためのデータを取得されないように、元のデータに乱数などを作用させて、元のデータを、元のデータとは異なる形に変換して処理を行い、処理が終了してからマスクを取り除く処理である。
例えば、暗号処理回路1AがICカードのような装置内に組み込まれている場合、ICカード内のEEPROM(図示せず)から読み出される鍵データにマスクデータ(以下、単にマスクともいう)が付加されて、暗号処理回路1Aに入力される。そして、暗号処理回路1A内では、マスクが除去された後に所定の演算処理が行われる。演算処理後、出力データにマスクを付加して出力する。マスクが付加された出力データは、受信側の回路において、マスク除去が行われる。
そして、暗号処理回路1Aは、第1の実施の形態で説明したような、デコーダと配線ネットワークとエンコーダとを有して、暗号処理を行うので、暗号処理回路1Aの消費電力は入力されたデータに依存しない。図12の配線ネットワーク2Aは、例えば、第1の実施の形態の図7から図10のような、S-Boxの配線ネットワークである。
従って、本実施の形態によれば、暗号処理回路1Aに入力及び出力されるデータ自体にマスクを付加することによって、暗号処理回路1Aの入出力データから秘密データが直接盗み取られないようにすると共に、第1の実施の形態と同様な配線ネットワーク等を用いることによって、いわゆる電力解析攻撃に対して耐性を有する暗号処理回路を実現することができる。
なお、以下の説明において、第1の実施の形態と同じ構成要素については、同一の符号を付して説明は省略する。
図12は、第2の実施の形態に係る暗号処理回路1Aの構成を説明するためのブロック図である。暗号処理回路1Aは、配線ネットワーク2Aと、エンコーダ3と、デコーダ4を含んで構成される。配線ネットワーク2Aは、マスク除去部530−1と、演算処理部550と、マスク付加部530−2とを含む。マスク除去部530−1は、デコーダ4に接続され、演算処理部550は、マスク除去部530−1に接続されている。マスク除去部530−1には、デコーダ4においてデコードされたデータが入力され、マスク除去部530−1は、マスクが除去されたデータを演算処理部550に出力する。マスク付加部530−2は、演算処理部550に接続され、マスク付加部530−2は、エンコーダ3に接続されている。マスク付加部530−2は、演算処理部550の出力を入力してマスクを付加し、マスクを付加したデータをエンコーダ3に出力する。
すなわち、暗号処理回路1Aは、入力されたデータをデコードしてから、マスクの除去処理を行い、所定の暗号演算処理を行う。配線ネットワーク2Aは、マスク除去されたデコードデータを、所定の暗号演算処理を行って、変更ビットデータを生成する。変更ビットデータは、マスク除去部530−1から入力された、マスク除去された複数のビットデータのビット位置を入れ替えることによって生成される。
暗号処理回路1Aは、所定の暗号演算処理後、さらに、マスクの付加処理を行ってから、エンコードして、そのエンコードされたデータを出力する。
そのため、暗号処理回路1Aのデコーダ4に入力されるデータは、暗号処理回路1A以外の回路のマスク付加部520−1において、マスクデータによってマスク付加される。暗号処理回路1Aのエンコーダ3から出力されるデータは、暗号処理回路1A以外の回路のマスク除去部520−2において、マスク付加部520−1において用いられたマスクデータと同じマスクデータあるいは異なるマスクデータによってマスク除去される。暗号処理回路1Aのデータの入力処理においては、マスク付加部520−1とマスク除去部530−1が、入口マスク処理部を構成し、マスク付加部530−2とマスク除去部520−2が、出口マスク処理部を構成する。
例えば、図12の暗号処理回路1AがDESのS-Boxであれば、入力データは6ビットで出力データは4ビットである。よって、デコーダ4の入力データは6ビットで出力データは64ビットであり、配線ネットワーク2Aは、64ビットデータを入力して、ビットパターンを変更した変更ビットデータを、64ビットデータとして出力する回路である。エンコーダ3の入力データは64ビットで出力データは4ビットである。
以下は、説明を簡単にするために、3ビット入力で3ビット出力の暗号処理回路の例で説明する。図12において、暗号処理回路1Aには、3ビットの入力データが入力され、3ビットの出力データが出力される例で説明する。
図12の配線ネットワーク2A内には、それぞれが配線ネットワークで形成されたマスク除去部530−1とマスク付加部530−2を含む。本実施の形態では、マスク処理として排他的論理和処理を用いているが、他の処理を用いてもよい。通常、論理回路の組み合わせ回路によって排他的論理和が実現される。
図13は、排他的論理和の真理値表を示す。図13は、排他的論理和では、2つの入力に対する出力の値を示している。
マスク除去部530−1では、デコーダ4でデコードされた8ビットデータに対して、所定のマスクデータとの排他的論理和をとると、付加されたマスクがデコードデータから除去される。
例えば、データ値3(=011)に対してマスクデータ000との排他的論理和をとると出力値が3(=011)となり、データ値3(=011)に対してマスクデータ001との排他的論理和をとると出力値が2(=010)となる。また、データ値2(=010)に対してマスクデータ000との排他的論理和をとると出力値が2(=010)となり、データ値0(=010)に対してマスクデータ001との排他的論理和をとると出力値が3(=011)となる。図14は、マスクデータ001を用いた排他的論理和の場合の入力値と出力値の関係を示す表である。図14に示すように、最下位ビット1の排他的論理和は、デコードされたデータでは、隣り合うビットの入れ替えに相当する。同様に他のビットに関しても、排他的論理和は、ビットの入れ替えで実現される。従って、ビットの入れ替えを行う配線ネットワークを用いることによってマスク処理である排他的論理和処理が実現できる。
そして、マスクの付加において用いたマスクと同じマスクデータと、マスクされたデータとの排他的論理和をとると、マスクされていないデータを得ることができる。例えば、データ値3(=011)とマスクデータ001との排他的論理和をとると、マスクされたデータ値2(=010)となるが、さらにマスクされたデータ値2(=010)とマスクデータ001との排他的論理和をとると、マスクされていないデータ値3(=011)が得られる。
排他的論理和をとることは、配線ネットワークにおける配線の入れ替えによって実現される。よって、マスク除去部530−1は、配線ネットワークによって実現される。
図15は、データマスキングに対応するためのマスク除去部530−1におけるマスク除去処理を実現する配線ネットワークの構成例を示すブロック図である。マスク付加部520−1におけるマスク付加処理を実現する配線ネットワークも、図15の回路と同様の構成を有する。
図12のデコーダ4は、3ビット入力を8ビット出力にデコードする回路であり、図5と同様に、3ビットで表されるデータ値に対応して、8つのうちの1つのビットだけにHを出力する。また、図12のエンコーダ3は、8ビット入力を3ビット出力にエンコードする回路である。
図15のマスク除去部530−1は、8ビットの配線ネットワークによる排他的論理和の実現例であり、8つの入力端子(D0〜D7)を有する入力部601と、8ビットのデータを出力するための8つの出力端子(Z0〜Z7)を有する出力部602と、8ビットのデータに対して所定の変換処理を行い、8ビットのデータを出力する変換部603と、を含んで構成される。
図15のマスク除去部530−1は、複数の(ここでは4つの)選択回路600−1−1, 600−1−2−2, 600−2−1, 600−2−2を含んで構成される。選択回路600−1−1, 600−1−2, 600−1−3, 600−1−4が、第1段目のステージST1を構成し、選択回路600−2−1, 600−2−2, 600−2−3, 600−2−4が、第2段目のステージST2を構成し、選択回路600−3−1, 600−3−2, 600−3−3, 600−3−4が、第3段目のステージST3を構成する。各選択回路は、2つの入力データ(入力1と入力2)と、1つの制御入力と、2つの出力データ(出力1と出力2)を有する。各選択回路は、制御信号である制御入力に応じて、入力1と入力2をそれぞれ出力1と出力2のいずれかに転送して出力する。
図15の場合、制御入力が0の場合は、2つの入力データがそれぞれ直進し、その結果、入力1は出力1から出力され、入力2は出力2から出力される。制御入力が1の場合は、2つの入力データが交差し、その結果、入力1は出力2から出力され、入力2は出力1から出力される。言い換えると、各選択回路600は、制御入力端に入力される制御入力に応じて2つの入力端に入力される2つの信号が2つの出力端に現れる状態を変更する回路である。
マスクデータに対して、図15の第1ステージST1では、3ビットの入力データの最下位ビットの排他的論理和が、第2ステージST2では、第2ビットの排他的論理和が、第3ステージST3では、最上位ビットの排他的論理和が実現される。
入力部601からの8つの出力は、第1ステージST1の4つの選択回路600の8つの入力端に入力される。第1ステージST1の4つの選択回路600の8つの出力は、配線部を介して、第2ステージST2の4つの選択回路600の8つの入力端に入力される。さらに、第2ステージST2の4つの選択回路600の8つの出力は、配線部を介して、第3ステージST3の4つの選択回路600の8つの入力端に入力される。マスク除去部530−1において、第1から第8の入力端は、それぞれ第1から第8の出力端に接続されるが、次に述べるように一部配線の入れ替えが行われる。
第1と第2のステージST1,ST2間の配線部の配線は、第1の配線の入れ替え部を有する。具体的には、図15に示すように、第1ステージST1の第1の選択回路600−1−1の下側の出力端が、第2ステージST2の第2の選択回路600−2−2の上側の入力端と接続され、第1ステージST1の第2の選択回路600−1−2の上側の出力端が、第2ステージST2の第1の選択回路600−2−1の下側の入力端と接続され、第1ステージST1の第3の選択回路600−1−3の下側の出力端が、第2ステージST2の第4の選択回路600−2−4の上側の入力端と接続され、第1ステージST1の第4の選択回路600−1−4の上側の出力端が、第2ステージST2の第3の選択回路600−2−3の下側の入力端と接続されるように、配線は入れ替えられる。
第2と第3のステージST2,ST3間の配線部の配線も、第2の配線の入れ替え部を有する。具体的には、図15に示すように、第2ステージST2の第1の選択回路600−2−1の下側の出力端が、第3ステージST3の第2の選択回路600−3−2の上側の入力端と接続され、第2ステージST2の第2の選択回路600−2−2の上側の出力端が、第3ステージST3の第3の選択回路600−3−3の上側の入力端と接続され、第2ステージST2の第2の選択回路600−2−2の下側の出力端が、第3ステージST3の第4の選択回路600−3−4の上側の入力端と接続され、第2ステージST2の第3の選択回路600−2−3の上側の出力端が、第3ステージST3の第1の選択回路600−3−1の下側の入力端と接続され、第2ステージST2の第3の選択回路600−2−3の下側の入力端が、第3ステージST3の第2の選択回路600−3−2の下側の入力端と接続され、第2ステージST2の第4の選択回路600−2−4の上側の入力端が、第3ステージST3の第3の選択回路600−3−3の下側の入力端と接続されるように、配線は入れ替えられる。
さらに、第3ステージST3の4つの選択回路600の8つの出力は、第1から第8の出力端に接続される。このとき、図15に示すように、第3ステージST3の4つの選択回路600の第1から第8の出力端は、それぞれ、第1、第5、第3、第7、第2、第6,第4、及び第8の出力端子に接続されるように、変換部602と複数の出力端子間の配線は、第3の配線の入れ替え部を有する。
以上のように、マスク除去部530−1は、デコーダ4からの複数のビットデータを受信し、受信した複数のビットデータのビット位置を入れ替えることによって、マスク除去処理された複数のビットデータを生成するマスク処理用の配線ネットワークである。
図15の回路の動作を、例を用いて説明する。図16は、図15の動作を説明するための図である。入力データを110(=6)、マスクデータ(M2,M1,M0)を010とすると、暗号処理回路1Aにはマスクされたデータとして、入力データとマスクデータとの排他的論理和の結果100(=4)が入力される。従って、デコーダ4の出力は、00010000となる。マスク除去部530−1の第1ステージST1には制御信号としてマスクデータの最下位ビットである0が入力される。第1ステージST1では、制御入力が0であるのでそのまま出力される。従って、第1ステージST1の選択回路600の出力は、00010000となる。
その出力が第2ステージST2に入力されるときは、第1ステージST1と第2ステージST2間の配線接続によって、2番目のビットと3番目のビット、6番目のビットと7番目のビットが入れ替えられるが、第2ステージST2には00010000が入力される。第2ステージST2の制御信号は、1であるので、入力されたデータの隣り合うビットが入れ替えられ、第2ステージST2の選択回路600の出力は、00100000となる。
その出力が第3ステージST3に入力されるときは、第2ステージST2と第3ステージST3間の配線接続によって、第3ステージST3には00001000が入力される。第3ステージST3には、制御信号として0が入力されるので、入力されたデータがそのまま出力され、00001000となる。マスク除去部530−1の最終段では、さらにビットの入れ替えがなされ、最終的に01000000が出力される。図16において、マスク除去部530−1における入力データの経路が点線で示されている。
以上のように、入力データをそのままデコーダ4でデコードしたときと同じ結果である出力が、マスク除去部530−1から出力される。このようにして、マスク除去部530−1によって排他的論理和によるマスクの除去が行われる。
図17は、図15の回路の変形例の回路を示すブロック図である。図17の回路は、図15と同じ機能を実現するための繰り返し構造のスイッチングネットワーク回路であり、8ビットのデータに対して所定の変換処理を行い、8ビットのデータを出力する変換部603Aを有する。図17の回路において、第1ステージST1と第2ステージST2間の配線接続のパターンと、第2ステージST2と第3ステージST3間の配線接続のパターンと、第3ステージSTと出力部602の出力端子(D0〜15)との間の最終段の配線パターンは、お互いに同じパターンである。このようなパターンを有する配線によっても、図15と同じ機能を実現することができる。
具体的には、第1と第2のステージST1,ST2間の配線部の配線は、第1の配線の入れ替え部を有する。具体的には、図17に示すように、第1ステージST1の第1の選択回路600−1−1の下側の出力端が、第2ステージST2の第3の選択回路600−2−3の上側の入力端と接続され、第1ステージST1の第2の選択回路600−1−2の上側の出力端が、第2ステージST2の第1の選択回路600−2−1の下側の入力端と接続され、第1ステージST1の第2の選択回路600−1−2の下側の出力端が、第2ステージST2の第3の選択回路600−2−3の下側の入力端と接続され、第1ステージST1の第3の選択回路600−1−3の上側の出力端が、第2ステージST2の第2の選択回路600−2−2の上側の入力端と接続され、第1ステージST1の第3の選択回路600−1−3の下側の出力端が、第2ステージST2の第4の選択回路600−2−4の上側の入力端と接続され、第1ステージST1の第4の選択回路600−1−4の上側の出力端が、第2ステージST2の第2の選択回路600−2−2の下側の入力端と接続されるように、配線は入れ替えられる。第2と第3のステージST2,ST3間、及び第3のステージST3と複数の出力端子間の接続も同様である。
なお、図15の場合、マスク処理として、排他的論理和演算を用いていたが、剰余加算演算を用いることも可能である。剰余加算演算を用いた場合、マスク除去部530−1は、ビットのシフトで実現することができる。
剰余加算演算を用いた場合を、前述の例と同じ例を用いて説明する。入力データとして110(=6), マスクとして010(=2)を用いた場合、暗号処理装置1Aへの入力データは、剰余加算演算された後の0(=8)である。従って、デコーダ4の出力は、00000001となり、これがマスク除去部530−1に入力される。マスク除去部530−1では、マスク分だけビットが入れ替えられる。この例では、マスクが2であるので、マスク除去部530−1では、2ビットの右ローテートシフト処理が行われる。その結果、マスク除去部530−1の出力は、01000000となり、マスクが除去される。
図18及び図19は、その右ローテートシフト処理を実現する回路構成の例を示す図である。図18は、一方がデコードされた入力データでもう一方がエンコードされたマスクデータが入力される場合の構成例を示す図である。図19は、入力データとマスクの両方ともデコードされた入力の場合の構成例を示す図である。これらの回路を用いてマスク除去機能を実現することができる。
図18は、8ビットの配線ネットワークによる右ローテートシフトの実現例を示し、2入力1出力の選択回路610を多段に接続して構成されるスイッチングネットワークを用いた右ローテートシフトに対応した配線ネットワークの例を示す。
図18の場合、マスク除去部530−1は、複数の選択回路610を含んで構成される配線ネットワークである。変換部603Bの第1から第3のステージST1〜ST3は、それぞれセレクタを含む。各のセレクタは、それぞれ8つの選択回路610を含む。
各選択回路610は、2つの入力(入力1と入力2)と、1つの制御入力と、1つの出力を有する。各選択回路610は、制御入力端に入力される制御入力に応じて、入力1と入力2のいずれかを一方を出力端に転送して出力する。図18の場合、制御信号である制御入力が0の場合は、各選択回路610の下側の入力2が出力端から出力され、制御入力が1の場合は、各選択回路610の上側の入力1が出力端から出力される。
入力部601の入力データD7からD0は、それぞれ第1ステージST1の選択回路群の隣り合う2つの選択回路610−1のそれぞれの一方に入力される。具体的には、入力データD7は、選択回路610−1−1の入力2と選択回路610−1−2の入力1に入力され、入力データD6は、選択回路610−1−2の入力2と選択回路610−1−3の入力1に入力され、以下同様に、各入力データは、それぞれ2つの選択回路のそれぞれの一方に入力される。但し、右ローテートシフトなので、入力データD0は、選択回路610−1−8の入力2と、選択回路610−1−1の入力1とに入力されるようになっている。各選択回路610−1の制御入力には、マスクデータ(M2,M1,M0)のM0が入力される。
第1ステージST1の出力は、第2ステージST2の選択回路群に入力される。第1ステージST1の複数の選択回路610−1の出力は、第2ステージST2の複数の選択回路610−2の一つ置きの2つの選択回路のそれぞれの一方に入力される。具体的には、選択回路610−1−1の出力は、選択回路610−2−1の入力2と、選択回路610−2−2を飛ばした、選択回路610−2−3の入力1に入力され、選択回路610−1−2の出力は、選択回路610−2−2の入力2と、選択回路610−2−3を飛ばした、選択回路610−2−4の入力1に入力され、以下同様に、選択回路610−1の出力は、それぞれ一つ置きの2つの選択回路610−2のそれぞれの一方に入力される。但し、右ローテートシフトなので、選択回路610−1−7の出力は、選択回路610−2−1の入力1に入力され、選択回路610−1−8の出力は、選択回路610−2−2の入力1に入力されるようになっている。各選択回路610−2の制御入力には、マスクデータ(M2,M1,M0)のM1が入力される。
第2ステージST2の出力は、第3ステージST3の選択回路群に入力される。第2ステージST2の複数の選択回路610−2の出力は、第3ステージST3の複数の選択回路610−3の3つ置きの2つの選択回路のそれぞれの一方に入力される。具体的には、選択回路610−2−1の出力は、選択回路610−3−1の入力2と、選択回路610−3−2, 610−3−3, 610−3−4を飛ばした、選択回路610−3−5の入力1に入力され、選択回路610−2−2の出力は、選択回路610−3−2の入力2と、選択回路610−3−3, 610−3−4, 610−3−5を飛ばした、選択回路610−3−6の入力1に入力され、以下同様に、選択回路610−3の出力は、それぞれ3つ置きの2つの選択回路610−3のそれぞれの一方に入力される。但し、右ローテートシフトなので、選択回路610−2−5の出力は選択回路610−3−1の入力1に入力され、選択回路610−2−6の出力は選択回路610−3−2の入力1に入力され、選択回路610−2−7の出力は選択回路610−3−3の入力1に入力され、選択回路610−2−8の出力は選択回路610−3−4の入力1に入力されるようになっている。各選択回路610−3の制御入力には、マスクデータ(M2,M1,M0)のM2が入力される。第3ステージST3の出力は、出力データZ7からZ0として、出力部602から出力される。
図18の回路において、入力データが1だけ加算されている場合、マスクデータは001とすることによって、右ローテートシフトが実現される。例えば、入力端D6のみがHの入力01000000のときに、マスクデータが001とすれば、第1ステージST1の選択回路群のみに1の制御信号が入力される。その結果、出力部602の出力は、00100000となる。また、入力データが2だけ加算されている場合、マスクデータは010とすることによって、右ローテートシフトが実現される。例えば、入力端D6のみがHの入力01000000のときに、マスクデータが010とすれば、第2ステージST2の選択回路群のみに1の制御信号が入力される。その結果、出力部の出力は、00010000となる。以上のような構成により、右ローテートシフト処理が実現される。
図19では、デコードされたマスクデータとして、Shift0、R1、・・R7を用いて、入力部601の入力データが、右ローテートシフトされる。図19に示すように、入力データD7〜D0の複数の入力端子からの信号線と、出力部602の出力データZ7〜Z0の複数の出力端子からの信号線は、変換部603Cにおいてマトリックス状に配置される。マスクデータは、入力部604から入力される。
マトリックスの各交点には、デコーダ4からの信号線と各出力線とを接続あるいは非接続にする接続素子620が設けられる。各接続素子620は、2つのデータ端子と、2つのデータ端子の接続と非接続を制御する1つの制御入力端子を有する。制御入力端子には、デコーダされたマスクデータの信号線が接続されている。各接続素子620は、制御入力端に入力される制御入力に応じて2つの端子間の接続と非接続の状態を変更する素子である。
図19に示すように、複数の入力端子からの8本の信号線と、複数の出力端子への8本の出力線とからなるマトリックスがあるとき、各出力線上に位置する8つの接続素子620の8つの制御入力端子には、それぞれ入力部601からの8本の信号線が接続されている。さらに、マスクデータの入力部604からの各信号線は、各出力線毎にみると、各出力線に接続された8つの接続素子620の8つの制御入力端子のいずれか1つに接続されている。また、入力部604からの各信号線は、入力部601からの8本の信号線のそれぞれについてみると、各信号線に接続された8つの接続素子620の8つの制御入力端子のいずれか1つに接続されている。そして、入力部601の入力データのローテートシフトされたデータが、出力部602に出力されるように、入力部604の信号線と、各接続素子620の制御入力端子とが配線によって接続される。
デコードされた入力データは、デコードされたマスクデータによる右ローテートシフトする量、すなわちシフト数だけシフトされる。そのために、各入力端子の信号線をシフト数に応じた出力端子の信号線に接続するように、シフト数に対応したマスクデータが、各接続素子の制御入力端子に入力される。
例えば、入力データが2で、マスク付加部520−1において5ビットシフトされている場合、マスク除去部530−1において、8ビットの入力データ10000000がされると、マスクデータのShiftR5がHとなる。すなわち、5だけ加算された入力データから5だけ減算するために、5の右ローテートシフトをするためのマスクデータ00000100が、マスク除去部530−1に入力される。具体的には、入力データが(010=2)であると、5だけ加算された(111=7)がデコーダ4に入力される。デコーダ4は、入力されたデータを10000000にデコードする。シフト除去部530−1には、入力データとして10000000が入力され、マスクデータとして、5だけ減算するためにShiftR5だけがHの00000100が入力される。そして、ShiftR5のHが対応する接続素子の制御入力端子に入力される。その結果、出力部602の出力端子Z2だけがHとなり、入力データ(010=2)と同じ、00000100が出力される。
以上のように、図19の回路によっても、右ローテートシフト処理が実現される。
図20は、本実施の形態の変形例の回路である。図20に示すように、配線ネットワーク2Bにおいて、入力側のマスク除去部530−1の前で、デコーダ4の後にマスク付加部540−1が設けられている。さらに、出力側のマスク付加部530−2の後でエンコーダ3の前にマスク除去部540−2が設けられている。そして、マスク除去部530−1、マスク付加部530−2及び演算部550−1と同じ回路が設けられ、内部マスクデータ(以下、内部マスクともいう)IMが、マスク除去部530−3に入力されている。マスク付加部540−1にも、内部マスクIMが入力され、デコーダ4の出力に対してマスク付加処理が施される。
なお、デコーダ4の出力中(例えば8つのデータ)は、Hのデータは1つであるが、マスク付加部540−1によってマスクされたデータは、必ずしもHのデータが1つとは限らないようになる。
マスク除去部530−3には、マスクMが入力され、内部マスクIMに対してマスク除去処理が行われる。マスク除去部530−3は、マスク除去処理を施した内部マスクIMを演算部550−2に入力し、所定の演算を施して、マスク付加部530−4に出力する。マスク付加部530−4には、出力側のマスク付加部530−2に入力されるマスクと同じマスクMが入力され、演算部550−2の出力に対してマスク付加処理が施される。マスク除去部540−2には、マスク付加部530−4の出力が入力され、マスク付加部530−2の出力に対して、マスク除去処理を施す。
以上のように、マスク除去部530−3には、入口マスクと同じマスクMが入力され、マスク付加部530−4には、出口マスクと同じマスクMが入力される。
言い換えると、データの入力側では、マスク付加部520−1からマスク除去部530−1の間は、マスクMによってデータは保護され、データの出力側では、マスク付加部530−2からマスク除去部520−2の間は、マスクMによってデータは保護される。また、マスク付加部540−1からマスク除去部540−2の間は、内部マスクIMによってデータは保護されていることになる。
図12に示した回路では、入力側のマスク除去部530−1から出力側のマスク付加部530−2までは、マスクがはずされた状態になっているが、図20に示す回路では、内部マスクIMによってマスクが付加されるので、暗号処理回路1A全体に渡ってマスクが付加された状態になっている。
なお、入口マスクと出口マスクは、同じマスクデータMでもよいが、互いに異なっていてもよい。
配線ネットワーク550−1,550−2の演算を行う部分が線形であれば、図20に示されているように内部マスクに対しても入力データと同じ処理をすることになるので、除去用マスクを生成することが可能となる。
以上のような構成によれば、デコーダ4の出力の結果がHとなるデータ(あるいは信号線)は1つであるが、マスク付加部540−1を設けることによって、消費電力の状態はさらに撹乱された状態となる。従って、配線パターンの微妙な形状等の違いによって、どのデータ(あるいは配線)がHであるかが探知され得るような場合にも、データが盗みとられないようになる。
図20のマスク付加部およびマスク除去部は、例えば、図21に示される排他的論理和の回路で構成される。図21は、マスク付加部540−1及びマスク除去部540−2の構成例を示す回路図である。マスク付加部540−1は、デコーダ4からの出力が入力されるデータ入力部701と、マスクデータが入力されるマスク入力部702と、排他的論理和演算を行う演算部703と、演算部703の演算結果を出力する出力部704とを含んで構成される。8ビットの入力データが入力される8つの入力端子(D7〜D0)の出力と、8ビットのマスクデータが入力される8つの入力端子(M7〜M0)の出力とが、それぞれ8つの排他的論理和(XOR)回路の入力端に入力される。8つのXOR回路の出力は、それぞれ8つの出力端子(Z7〜Z0)に接続されている。よって、入力データとマスクデータとの排他的論理和演算された結果データが、マスク付加部540−1から出力される。マスク除去部540−2の構成も同様である。
図22は、マスク処理に対応した図20の暗号処理回路の具体的な変形例を示す回路図である。マスクされた入力データは、入力部の入力端子(B2,B1,B0)から入力される。入力部からの入力データは、デコーダ400によりデコードされて、マスク付加部540−1に入力される。
内部マスクIMは、内部マスク入力部の入力端子(M7〜M0)から入力される。内部マスクIMは、図21にそれぞれ示したマスク除去部530−3とマスク付加部540−1に入力される。
マスク付加部540−1の出力は、マスク除去部530−1に入力される。マスク除去部530−1の出力は、配線ネットワークで実現されている演算部551−1により所定の演算が施されて、マスク付加部530−2に出力される。
マスク除去部530−3は、内部マスクIMに対してマスク除去(あるいは付加)処理を行い、配線ネットワークで実現されている演算部551−2に出力する。演算部551−2では、所定の演算が実行されて、その演算結果をマスク付加(あるいは除去)部530−4に出力する。マスク付加部530−4は、その出力をマスク除去部540−2に出力する。マスク除去部540−2の出力データは、エンコーダ300でエンコードされて出力される。
以上のように、本実施の形態によれば、暗号処理回路に入力される及び暗号処理回路から出力されるデータ自体にマスクを付加することによって、暗号処理回路の入出力データから秘密データが直接盗み取られないようにすることができる。さらに加えて、本実施の形態によれば、第1の実施の形態で説明したようなデコーダと、配線ネットワークと、エンコーダとを有して、暗号処理を行うので、暗号処理回路の消費電力は入力されたデータに依存せず、電力解析耐性が向上する暗号処理回路を実現することができる。
以上説明した2つの実施の形態の変形例を説明する。
図23は、デコーダの第1の変形例を示す回路図である。図23のデコーダ400Aは、制御入力としてプリチャージ入力端子を有するようにし点が上述したデコーダと異なる。デコーダ400Aは、プリチャージ入力端子(Precharge)がHになると、すなわち有効になると、デコーダ400Aの出力全てがHとなり、以前の状態をクリアする。
具体的には、デコーダ400Aは、3ビットの入力データを入力するための3つの入力端子(B2〜0)を有する入力部401Aと、3ビットのデータから8ビットのデータに変換する変換部402Aと、8ビットのデータを出力するための8個の出力端子(D7〜D0)を有する出力部403Aとを含んで構成される。変換部402Aは、ここでは、8個のAND回路を含み、8個のAND回路には、3ビットで表される8個(0から7)のそれぞれの値に対して、1つのAND回路からのみ出力が出るように、入力端にインバータ回路が設けられている。各AND回路の出力は、対応するOR回路の入力端の1つに接続されている。OR回路の他方の入力端には、プリチャージ入力端子(Precharge)が接続されている。各OR回路の出力は、各出力端子に接続されている。
図23の回路は、入力データが入った後、次の入力データが入る前に、プリチャージ入力端子を一旦Hにするように動作する。その結果、プリチャージ入力端子がHになると、デコーダ400Aの出力全てが、一旦Hになる。
このような構成によれば、同じ値の入力データが連続してデコーダ400Aに入力されたときでも、デコーダ400Aは、8つの出力データの中で必ず1つのビットのみが変化するように動作する。よって、どのような入力データに対しても、デコーダ400Aの消費電力の変化は抑えられるので、データの盗みとりがされ難い。
図24は、デコーダの第2の変形例を示す回路図である。図24のデコーダ400Bは、制御入力としてディスチャージ入力端子を有するようにした点が上述したデコーダと異なる。デコーダ400Bは、ディスチャージ入力端子(Discharge)がHになると、すなわち有効になると、デコーダ400Bの出力全てがLとなり、以前の状態をクリアする。
具体的には、デコーダ400Bは、3ビットの入力データを入力するための3つの入力端子(B2〜0)を有する入力部401Bと、3ビットのデータから8ビットのデータに変換する変換部402Bと、8ビットのデータを出力するための8個の出力端子(D7〜D0)を有する出力部403Bとを含んで構成される。変換部402Bは、ここでは、8個のAND回路を含み、8個のAND回路には、3ビットで表される8個(0から7)のそれぞれの値に対して、1つのAND回路からのみ出力が出るように、入力端にインバータ回路が設けられている。各AND回路の出力は、対応する2段目のAND回路の入力端の1つに接続されている。2段目のAND回路の他方の入力端には、インバータを介してディスチャージ入力端子(Discharge)が接続されている。2段目の各AND回路の出力は、各出力端子に接続されている。
図24の回路は、入力データが入った後、次の入力データが入る前に、ディスチャージ入力端子を一旦Hにするように動作する。その結果、ディスチャージ入力端子がHになると、デコーダ400Bの出力全てが、一旦Lになる。
このような構成によれば、同じ値の入力データが連続してデコーダ400Bに入力されたときでも、デコーダ400Bは、8つの出力データの中で必ず1つのビットのみが変化するように動作する。よって、どのような入力データに対しても、デコーダ400Bの消費電力の変化は抑えられるので、データの盗みとりがされ難い。
図25は、デコーダの第3の変形例を示す回路図である。図25のデコーダ400Cは、制御入力として乱数入力端子を有するようにした点が上述したデコーダと異なる。デコーダ400Cは、乱数入力部を構成する切替部411と乱数入力端子(Randomize)とを有し、切替部411が乱数入力端子の入力を選択すると、乱数入力端子に入力された乱数を出力する。言い換えると、また、デコーダの出力は、乱数によってランダムな値にプリセットされる。
具体的には、デコーダ400Cは、3ビットの入力データを入力するための3つの入力端子(B2〜0)を有する入力部401Cと、3ビットのデータから8ビットのデータに変換する変換部402Cと、8ビットのデータを出力するための8個の出力端子(D7〜D0)を有する出力部403Cとを含んで構成される。変換部402Cは、ここでは、8個のAND回路を含む。8個のAND回路には、3ビットで表される8個(0から7)のそれぞれの値に対して、1つのAND回路からのみ出力が出るように、入力端にインバータ回路が設けられている。各AND回路の出力は、各出力端子に接続されている。
また、入力部401Cからの入力データは、切替部411に入力され、乱数入力端子(Randomize)からの乱数データも、切替部411に入力される。切替部411は、乱数入力端子からの乱数データが入力されたときには、切替部411はその乱数を各AND回路に出力する。図25の回路は、入力データが入った後、次の入力データが入る前に、乱数入力端子に乱数が入力されるように動作する。その結果、乱数入力端子に乱数が入力されると、デコーダ400Cの出力は、一旦乱数に対応したランダムな値の出力になり、以前の値との関係が消去される。
このような構成によれば、同じ値の入力データが連続してデコーダ400Cに入力されたときでも、デコーダ400Cは、8つの出力データの中で必ず1つのビットのみが変化するように動作する。よって、どのような入力データに対しても、デコーダ400Cの消費電力の変化は入力データに依存しないので、データの盗みとりがされ難い。
切替部411は、例えば、入力データと乱数との切り替えを行うセレクタ、あるいは、乱数と入力データとの排他的論理和などによって実現される。なお、図25の場合、乱数との切替部411は、デコーダ400Cの入力側に設けられているが、デコーダ400Cの出力側に設けてもよい。
図26は、デコーダの第4の変形例を示す回路図である。図26のデコーダ400Dは、前の入力を保持しておき、前の状態と無関係な状態に変換する機能を持ったデコーダ回路である。デコーダ400Dは、オフセット入力としてオフセット入力端子(Offset_in)と、オフセット出力端子(Offset_out)と、比較部412とを有する。オフセット入力端子と比較部412は、オフセット入力部を構成する。さらに、デコーダ400Dは、前の入力データを保持するフリップフロップ回路の保持部413と、オフセット値を保持する、フリップフロップ回路の保持部414を含む。
比較部412は、入力データが入力されると、その入力データを保持部413に出力して保持させる。比較部412は、次の入力データ(現入力データ)が入力されると、保持部413から前の入力データを読み出し、その入力データ(現入力データ)とを比較する。比較の結果、前の入力データとその入力データ(現入力データ)とが同じときは、オフセット入力端子から入力されているオフセット値を入力データに加算してAND回路に出力する。同時に、比較部412は、そのオフセット値をオフセット出力端子に出力する。
その結果、前と同じ入力データが入力されたときには、入力データは、オフセット値だけオフセットしたデータにデコードされる。デコーダ400Dは、同時に入力データをオフセットしたときは、そのオフセット値をオフセット出力端子に出力する。デコーダ400Dの出力側の配線ネットワークは、そのオフセット値を受信して、デコーダ400Dからの出力データに対して、そのオフセット値だけ補正するようにデータ処理を行うことができる。
図27は、エンコーダの第1の変形例を示す回路図である。図27は、異常検知機能を持ったエンコーダの構成例である。エンコーダ300Aの入力は、通常は、ただ一つの入力のみがHすなわちアクティブになるが、何らかの異常で2つ以上の入力がアクティブになってしまうことがある。図27に示したエンコーダ300Aは、このような異常を検出する機能を持った構成例である。図27の場合、Hがアクティブな状態の場合であり、誤り検出回路である誤り検出部310が設けられている。異常検出部としての誤り検出部310は、エンコーダの入力にアクティブな入力が2つ以上あることを検出する機能を持つものである。
図27に示した誤り検出部310は、8つの入力のうちの各2つの入力の論理和をとるOR回路が二進木状に接続されている回路を有する。これらの論理和の入力は、正常な場合、8つの入力のうちの2つ以上の入力が同時にアクティブになることは無い。この論理和の2つ以上の入力が同時にHであることを検出すると、異常として異常信号(Error)を出力する。このようにして、入力データの異常を検知することが可能となる。
また、異常検出を行うために、8つの入力のうちの各2つの入力の両方がアクティブであるかどうかを検出するために、各2つの入力の論理積をとるAND回路が二進木状に接続されている回路を有する。これらのAND回路の出力がHであった場合は、2つの入力がともにHであること、すなわち異常状態であることを意味する。これらのAND回路とOR回路の出力の論理和を求めることで異常検出を行うことが可能となる。
図28は、図7から図10に示したDESのSBOXの配線レイアウト例を示す平面図である。一般に、LSIの消費電力はその負荷容量に依存する。LSIでの配線による容量の差が消費電力の差となって現れるため、消費電力の変動を抑えるためには、配線容量を等しくする必要がある。図7から図10に示したような形状で、配線ネットワークの配線パターンをそのまま実現した場合、信号先によってその長さが異なり、配線容量に差が出る。
そこで、図28に示した配線レイアウトは、横方向の配線710と縦方向の配線720は、すべて同じ長さである。図29は、図28のXXIX−XXIX線に沿った断面を説明するための断面図である。図30は、図28のXXX−XXX線に沿った断面を説明するための断面図である。
具体的には、配線ネットワークは、それぞれ縦方向及び横方向に延びる複数の配線パターンを有し、複数のビットデータのビット位置を入れ替えるために、複数の配線パターン710,720において、接続される入力側の端子と出力側の端子に対応する交点が、図29及び図30に示すように、コンタクト730によって電気的に接続されている。また、必要な配線(0から15)の外側には、ダミーの配線が配置されている。縦方向の配線と横方向の配線は、コンタクト730で接続されている。図28は、図7に対応した配線レイアウト図である。図28において、横方向に延びる複数の配線は入力(デコーダ4)に接続され、縦方向に延びる複数の配線は、出力(エンコーダ3)に接続されており、図7のS1-0の配線と等価である。図28に示した配線レイアウトでは、すべての配線が同じ長さであり、かつ、必要な配線の両側にダミーの配線が配置されているので、配線と基板の間の容量と配線と配線の間の容量ともすべての配線で等しくなる。このような配線レイアウトを用いることで配線容量をすべての配線で等しくすることができ、その結果、データによる消費電力のばらつきを小さくすることが可能となる。
なお、以上の説明では、デコーダによりHとなる信号は、1つだけであったが、消費電力の変動が抑えられれば、一定の複数の信号がHとなるように、すなわちハミング重みが所定の2以上になるように、暗号処理回路を構成してもよい。
以上説明したように、上述した各実施の形態及び各変形例に係る暗号処理回路によれば、配線ネットワークでは、所定数のHの信号だけが処理されるので、消費電力は入力されたデータに依存しない。よって、いわゆる電力解析攻撃に対して耐性を有する暗号処理回路が実現される。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
本発明の第1の実施の形態に係わる暗号処理回路の構成を示すブロック図である。 暗号アルゴリズムの一つであるDESの処理を行う暗号処理回路の全体構成を示すブロック図である。 本発明の第1の実施の形態に係わる非線形変換を実現する回路構成の例を示すブロック図である。 DESの回路S1におけるその変換処理内容を示す表である。 本発明の第1の実施の形態に係わるデコーダの構成例を示す回路図である。 本発明の第1の実施の形態に係わるエンコーダの構成例を示す回路図である。 サブ配線ネットワークの構成の例を示す回路図である。 サブ配線ネットワークの構成の例を示す回路図である。 サブ配線ネットワークの構成の例を示す回路図である。 サブ配線ネットワークの構成の例を示す回路図である。 本発明の第1の実施の形態の回路の変形例の構成を示すブロック図である。 本発明の第2の実施の形態に係る暗号処理回路の構成を説明するためのブロック図である。 排他的論理和の真理値表を示す図である。 マスクデータ001を用いた排他的論理和の場合の入力値と出力値の関係を示す表である。 データマスキングに対応するためのマスク除去部におけるマスク除去処理を実現する配線ネットワークの構成例を示すブロック図である。 図15の動作を説明するための図である。 図15の回路の変形例の回路を示すブロック図である。 右ローテートシフト処理を実現する回路構成の例を示す図である。 右ローテートシフト処理を実現する回路構成の例を示す図である。 本発明の第2の実施の形態の変形例の回路である。 本発明の第2の実施の形態に係わるマスク付加部及びマスク除去部の構成例を示す回路図である。 図20の暗号処理回路の具体的な変形例を示す回路図である。 デコーダの第1の変形例を示す回路図である。 デコーダの第2の変形例を示す回路図である。 デコーダの第3の変形例を示す回路図である。 デコーダの第4の変形例を示す回路図である。 エンコーダの第1の変形例を示す回路図である。 DESのSBOXの配線レイアウト例を示す平面図である。 図28のXXIX−XXIX線に沿った断面を説明するための断面図である。 図30は、図28のXXX−XXX線に沿った断面を説明するための断面図である。
符号の説明
1、1A 暗号処理回路、2、200 配線ネットワーク、3、300、300A、301、302,303,304 エンコーダ、310 誤り検出部、4、400、400A、400B、400C、400D、 デコーダ、11 暗号回路モジュール、12 スクランブル部、13 鍵スケジュール部、21 ラウンド関数部、22 f関数部、23 排他的論理和部、302,302A、402、402A、402B、402C、402D、603、603A、603B、603C 変換部、501,502,503,504 サブ配線ネットワーク、501c 配線部、510 選択部、703 演算部、710 横方向配線、710 縦方向配線、730 コンタクト

Claims (5)

  1. 所定の暗号演算処理を行う暗号処理回路であって、
    前記所定の暗号演算処理に用いられる2進数の入力データに対して、該入力データのハミング重みと関係なく、ハミング重みが一定となる第1の複数のビットデータに変換するデコーダと、
    該デコーダに接続され、前記デコーダにより変換された前記第1の複数のビットデータを受信し、前記所定の暗号演算処理のために、受信した前記第1の複数のビットデータのビット位置を入れ替えることによって、前記第1の複数のビットデータのビットパターンを変更して、第2の複数のビットデータを生成する配線ネットワークと、
    該配線ネットワークに接続され、前記配線ネットワークにおいて生成された前記第2の複数のビットデータを、2進数の出力データに変換するエンコーダと、
    を有することを特徴とする暗号処理回路。
  2. 前記第1の複数のビットデータは、前記ハミング重みが1又は2以上のビットデータであることを特徴とする請求項1に記載の暗号処理回路。
  3. 前記所定の暗号演算処理は、DESの暗号処理であることを特徴とする請求項2に記載の暗号処理回路。
  4. さらに、前記配線ネットワーク内において、データマスキングのための内部マスクデータを用いたマスク処理を行うための、内部マスク用マスク付加部と内部マスク用マスク除去部とを有することを特徴とする請求項1から3のいずれか1つに記載の暗号処理回路。
  5. 所定の暗号演算処理を行う暗号処理方法であって、
    前記所定の暗号演算処理に用いられる2進数の入力データに対して、該入力データのハミング重みと関係なく、ハミング重みが一定となる第1の複数のビットデータに変換し、
    該変換された前記第1の複数のビットデータを受信し、前記所定の暗号演算処理のために、受信した前記第1の複数のビットデータのビット位置を入れ替えることによって、前記第1の複数のビットデータのビットパターンを変更して、第2の複数のビットデータを生成し、
    該生成された前記第2の複数のビットデータを、2進数の出力データに変換することを特徴とする暗号処理方法。
JP2006302064A 2006-11-07 2006-11-07 暗号処理回路及び暗号処理方法 Expired - Fee Related JP5203594B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006302064A JP5203594B2 (ja) 2006-11-07 2006-11-07 暗号処理回路及び暗号処理方法
US11/934,345 US8155317B2 (en) 2006-11-07 2007-11-02 Encryption processing circuit and encryption processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006302064A JP5203594B2 (ja) 2006-11-07 2006-11-07 暗号処理回路及び暗号処理方法

Publications (2)

Publication Number Publication Date
JP2008118566A true JP2008118566A (ja) 2008-05-22
JP5203594B2 JP5203594B2 (ja) 2013-06-05

Family

ID=39504109

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006302064A Expired - Fee Related JP5203594B2 (ja) 2006-11-07 2006-11-07 暗号処理回路及び暗号処理方法

Country Status (2)

Country Link
US (1) US8155317B2 (ja)
JP (1) JP5203594B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008187384A (ja) * 2007-01-29 2008-08-14 Toshiba Corp 論理回路
JP2008271048A (ja) * 2007-04-18 2008-11-06 Mitsubishi Electric Corp 分割テーブル作成装置及び分割テーブル作成プログラム
JP2010124276A (ja) * 2008-11-20 2010-06-03 Sony Corp 暗号処理装置
JP2010219666A (ja) * 2009-03-13 2010-09-30 Sony Corp 暗号処理装置
WO2013014778A1 (ja) * 2011-07-27 2013-01-31 富士通株式会社 暗号化処理装置および認証方法
US10898063B2 (en) 2010-12-09 2021-01-26 Endochoice, Inc. Flexible electronic circuit board for a multi camera endoscope
CN113315622A (zh) * 2020-02-26 2021-08-27 三星电子株式会社 包括双编码器的安全电路和包括安全电路的加密解密器

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008099204A (ja) * 2006-10-16 2008-04-24 Toshiba Corp 論理回路
US20090295430A1 (en) * 2008-02-29 2009-12-03 California Institute Of Technology Method and apparatus for simultaneous processing of multiple functions
US8975922B2 (en) 2008-02-29 2015-03-10 California Institute Of Technology Method and apparatus for simultaneous processing of multiple functions
US9674155B2 (en) * 2011-12-12 2017-06-06 International Business Machines Corporation Encrypting segmented data in a distributed computing system
US10360106B2 (en) 2011-12-12 2019-07-23 International Business Machines Corporation Throttled real-time writes
US20180083930A1 (en) 2011-12-12 2018-03-22 International Business Machines Corporation Reads for dispersed computation jobs
US10142099B2 (en) 2013-01-11 2018-11-27 Qualcomm Incorporated Method and apparatus for a computable, large, variable and secure substitution box
WO2014131546A1 (fr) * 2013-02-27 2014-09-04 Morpho Procede d'encodage de donnees sur une carte a puce par des codes de poids constant
CN103905462B (zh) * 2014-04-16 2017-05-17 深圳国微技术有限公司 可抵御差分功耗分析攻击的加密处理装置及方法
KR102446866B1 (ko) 2014-08-28 2022-09-23 삼성전자주식회사 부채널 공격을 방지하는 암복호화기 및 이의 구동 방법 그리고 이를 포함하는 제어 장치
CN105809063B (zh) * 2014-12-29 2019-01-15 联想(北京)有限公司 一种数据处理方法及安全芯片装置
CN107306180B (zh) 2016-04-19 2020-05-19 华邦电子股份有限公司 加解密装置及其功率分析防御方法
TWI608381B (zh) * 2016-04-19 2017-12-11 華邦電子股份有限公司 加解密裝置及其功率分析防禦方法
US10360820B2 (en) * 2016-09-04 2019-07-23 Shahriar Pourazin Instrumentation privacy apparatus and method
US10673616B2 (en) 2017-01-11 2020-06-02 Qualcomm Incorporated Lightweight mitigation against first-order probing side-channel attacks on block ciphers
CN108390755B (zh) * 2018-01-10 2021-01-12 北京芯盾集团有限公司 基于内置安全芯片的sim贴膜卡的安全输入法
US11973745B2 (en) * 2018-12-04 2024-04-30 Journey.ai Performing concealed transactions using a zero-knowledge data management network

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999067766A2 (en) * 1998-06-03 1999-12-29 Cryptography Research, Inc. Balanced cryptographic computational method and apparatus for leak minimization in smartcards and other cryptosystems
JP2000066585A (ja) * 1998-08-20 2000-03-03 Toshiba Corp 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体
US20030093684A1 (en) * 2001-11-14 2003-05-15 International Business Machines Corporation Device and method with reduced information leakage
JP2003521201A (ja) * 2000-01-28 2003-07-08 アンダーソン,ロス・ジョン 電力解析に耐えるマイクロプロセッサ
JP2004120286A (ja) * 2002-09-26 2004-04-15 Toshiba Corp 論理回路および暗号化装置
JP2004347975A (ja) * 2003-05-23 2004-12-09 Toshiba Corp データ処理装置及び論理演算装置
WO2005073825A2 (en) * 2004-01-27 2005-08-11 Koninklijke Philips Electronics N.V. Protection against power analysis attacks
JP2008099204A (ja) * 2006-10-16 2008-04-24 Toshiba Corp 論理回路
JP2008187384A (ja) * 2007-01-29 2008-08-14 Toshiba Corp 論理回路

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3564514A (en) 1969-05-23 1971-02-16 Honeywell Inc Programmable logic apparatus
US3593317A (en) 1969-12-30 1971-07-13 Ibm Partitioning logic operations in a generalized matrix system
US3812467A (en) 1972-09-25 1974-05-21 Goodyear Aerospace Corp Permutation network
JPS558135A (en) 1978-07-04 1980-01-21 Mamoru Tanaka Rewritable programable logic array
US4233667A (en) 1978-10-23 1980-11-11 International Business Machines Corporation Demand powered programmable logic array
NZ198054A (en) 1981-08-17 1986-05-09 New Zealand Dev Finance Polernary logic:multilevel circuits
US4663500A (en) * 1982-02-22 1987-05-05 Nec Corporation Cryptographic system
US4569052A (en) * 1983-07-14 1986-02-04 Sperry Corporation Coset code generator for computer memory protection
JPH073838B2 (ja) 1985-02-28 1995-01-18 株式会社東芝 半導体集積回路
US4802217A (en) * 1985-06-07 1989-01-31 Siemens Corporate Research & Support, Inc. Method and apparatus for securing access to a computer facility
JP2564044B2 (ja) 1991-02-27 1996-12-18 株式会社東芝 プログラマブル論理回路
JP3029381B2 (ja) * 1994-01-10 2000-04-04 富士通株式会社 データ変換装置
US5425103A (en) * 1994-03-14 1995-06-13 Shaw; William Y. Variable-key cryptography system
US5768390A (en) * 1995-10-25 1998-06-16 International Business Machines Corporation Cryptographic system with masking
US6066965A (en) 1997-12-11 2000-05-23 Evsx, Inc. Method and apparatus for a N-nary logic circuit using 1 of 4 signals
TW465190B (en) 1998-11-26 2001-11-21 Ibm Circuit and method for implementing combinatorial logic functions
FR2792141B1 (fr) 1999-04-09 2001-06-15 Bull Cp8 Procede de securisation d'un ou plusieurs ensembles electroniques mettant en oeuvre un meme algorithme cryptographique avec cle secrete, une utilisation du procede et l'ensemble electronique
CA2298990A1 (en) 2000-02-18 2001-08-18 Cloakware Corporation Method and system for resistance to power analysis
JP4328487B2 (ja) 2002-01-28 2009-09-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 組合せ回路、暗号回路、その生成方法及びプログラム
US7227946B2 (en) 2003-04-16 2007-06-05 Oregon Health & Science University Automated permutation method and apparatus
FR2855286B1 (fr) 2003-05-22 2005-07-22 Gemplus Card Int Transmission securisee de donnees entre deux modules
JP2005031471A (ja) 2003-07-07 2005-02-03 Sony Corp 暗号処理装置、および暗号処理方法
US8065532B2 (en) 2004-06-08 2011-11-22 Hrl Laboratories, Llc Cryptographic architecture with random instruction masking to thwart differential power analysis

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999067766A2 (en) * 1998-06-03 1999-12-29 Cryptography Research, Inc. Balanced cryptographic computational method and apparatus for leak minimization in smartcards and other cryptosystems
JP2000066585A (ja) * 1998-08-20 2000-03-03 Toshiba Corp 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体
JP2003521201A (ja) * 2000-01-28 2003-07-08 アンダーソン,ロス・ジョン 電力解析に耐えるマイクロプロセッサ
US20030093684A1 (en) * 2001-11-14 2003-05-15 International Business Machines Corporation Device and method with reduced information leakage
JP2004120286A (ja) * 2002-09-26 2004-04-15 Toshiba Corp 論理回路および暗号化装置
JP2004347975A (ja) * 2003-05-23 2004-12-09 Toshiba Corp データ処理装置及び論理演算装置
WO2005073825A2 (en) * 2004-01-27 2005-08-11 Koninklijke Philips Electronics N.V. Protection against power analysis attacks
JP2008099204A (ja) * 2006-10-16 2008-04-24 Toshiba Corp 論理回路
JP2008187384A (ja) * 2007-01-29 2008-08-14 Toshiba Corp 論理回路

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNG200601012005; 佐々木 稔 Minoru SASAKI: 'MRSLで構成したAESのS-BOX回路のDPA耐性検証 Verification of MRSL based S-BOX in AES as' 電子情報通信学会技術研究報告 Vol.106 No.235 IEICE Technical Report 第106巻, 20061016, p.37-44, 社団法人電子情報通信学会 The Institute of Electro *
JPN6011046241; 佐々木 稔 Minoru SASAKI: 'MRSLで構成したAESのS-BOX回路のDPA耐性検証 Verification of MRSL based S-BOX in AES as' 電子情報通信学会技術研究報告 Vol.106 No.235 IEICE Technical Report 第106巻, 20061016, p.37-44, 社団法人電子情報通信学会 The Institute of Electro *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008187384A (ja) * 2007-01-29 2008-08-14 Toshiba Corp 論理回路
JP2008271048A (ja) * 2007-04-18 2008-11-06 Mitsubishi Electric Corp 分割テーブル作成装置及び分割テーブル作成プログラム
JP2010124276A (ja) * 2008-11-20 2010-06-03 Sony Corp 暗号処理装置
JP4687775B2 (ja) * 2008-11-20 2011-05-25 ソニー株式会社 暗号処理装置
US8370642B2 (en) 2008-11-20 2013-02-05 Sony Corporation Cryptographic processing apparatus
JP2010219666A (ja) * 2009-03-13 2010-09-30 Sony Corp 暗号処理装置
US10898063B2 (en) 2010-12-09 2021-01-26 Endochoice, Inc. Flexible electronic circuit board for a multi camera endoscope
WO2013014778A1 (ja) * 2011-07-27 2013-01-31 富士通株式会社 暗号化処理装置および認証方法
JPWO2013014778A1 (ja) * 2011-07-27 2015-02-23 富士通株式会社 暗号化処理装置および認証方法
US9330270B2 (en) 2011-07-27 2016-05-03 Fujitsu Limited Encryption processing device and authentication method
CN113315622A (zh) * 2020-02-26 2021-08-27 三星电子株式会社 包括双编码器的安全电路和包括安全电路的加密解密器

Also Published As

Publication number Publication date
US8155317B2 (en) 2012-04-10
JP5203594B2 (ja) 2013-06-05
US20080212776A1 (en) 2008-09-04

Similar Documents

Publication Publication Date Title
JP5203594B2 (ja) 暗号処理回路及び暗号処理方法
US8855298B2 (en) Table lookup operation on masked data
US6940975B1 (en) Encryption/decryption apparatus, encryption/decryption method, and program storage medium therefor
US5623548A (en) Transformation pattern generating device and encryption function device
JP4687775B2 (ja) 暗号処理装置
CA2319135C (en) Data transformation device and recording medium having recorded thereon a program for implementing the same
ES2405942T3 (es) Aparato de cifrado en bloques que utiliza una transformación auxiliar
JP4700051B2 (ja) 暗号装置及び暗号方法
US8401180B2 (en) Non-linear data converter, encoder and decoder
EP3125221A1 (en) Encryption processing device, and encryption processing method and program
KR100549151B1 (ko) 스크램블 회로, 디스크램블 회로, 데이터 처리 장치 및ic 카드
TWI595460B (zh) Data processing device, information processing device, data processing method and program
KR20090006642A (ko) 오류 검사 코드 생성장치 및 방법
JP2002040933A (ja) データ暗号化標準アルゴリズムを利用した暗号化装置
US20140298459A1 (en) Device and method for processing data
WO2002086846A1 (fr) Chiffrement / dispositif de dechiffrement, chiffrement / procede de dechiffrement, procede de chiffrement de donnees et carte a circuit integre
KR20050087271A (ko) 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치
SK12472000A3 (sk) Spôsob blokového kódovania diskrétnych dát
KR100456599B1 (ko) 병렬 디이에스 구조를 갖는 암호 장치
JP4851947B2 (ja) 論理回路
JP2007174024A (ja) 暗号処理装置
WO2009090689A1 (ja) 暗号化装置、暗号化方法及びプログラム
EP1202488B1 (en) Encryption sub-key generation circuit
JP4515716B2 (ja) 拡大鍵生成装置、暗号化装置および暗号化システム
KR0171157B1 (ko) 데스 알고리즘을 이용한 암호화 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110906

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A132

Effective date: 20120124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120724

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120921

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130214

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

Free format text: PAYMENT UNTIL: 20160222

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees