JP2006201641A - 非線形演算装置及び暗号処理装置及び非線形演算方法及び非線形演算プログラム - Google Patents
非線形演算装置及び暗号処理装置及び非線形演算方法及び非線形演算プログラム Download PDFInfo
- Publication number
- JP2006201641A JP2006201641A JP2005014965A JP2005014965A JP2006201641A JP 2006201641 A JP2006201641 A JP 2006201641A JP 2005014965 A JP2005014965 A JP 2005014965A JP 2005014965 A JP2005014965 A JP 2005014965A JP 2006201641 A JP2006201641 A JP 2006201641A
- Authority
- JP
- Japan
- Prior art keywords
- random number
- input
- data
- power
- polynomial
- 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
Links
Images
Abstract
【課題】 非線形演算を用いた暗号処理方法において、電力解析への安全性を担保しつつ、乗算回数を削減することで、処理を高速に行うことを目的とする。
【解決手段】 非線形演算装置において、データ入力部140は分割入力Pを、乱数入力部141は補正乱数Mを入力する。乱数生成部128は任意の乱数M´、補正乱数Mと相関がない乱数Nを生成する。べき乗演算部127は分割入力P、補正乱数M、乱数M´、Nを入力とし、分割入力Pのべき乗Peと、乱数M´と、補正乱数M、分割入力P、補正乱数Mと分割入力Pに含まれる暗号化すべきデータxとが乗算されたMxのみで表現される式とを加算する多項式を用いて、出力データFe(Fe=xe+M´)を演算し、出力する。このとき、その演算において補正乱数M、乱数付加データP、乗算データMxのみで表現される式として乗算回数が少なくなるように変形されたものを用いる。
【選択図】 図4
【解決手段】 非線形演算装置において、データ入力部140は分割入力Pを、乱数入力部141は補正乱数Mを入力する。乱数生成部128は任意の乱数M´、補正乱数Mと相関がない乱数Nを生成する。べき乗演算部127は分割入力P、補正乱数M、乱数M´、Nを入力とし、分割入力Pのべき乗Peと、乱数M´と、補正乱数M、分割入力P、補正乱数Mと分割入力Pに含まれる暗号化すべきデータxとが乗算されたMxのみで表現される式とを加算する多項式を用いて、出力データFe(Fe=xe+M´)を演算し、出力する。このとき、その演算において補正乱数M、乱数付加データP、乗算データMxのみで表現される式として乗算回数が少なくなるように変形されたものを用いる。
【選択図】 図4
Description
本発明は、非線形演算装置及び暗号処理装置及び非線形演算方法及び非線形演算プログラムに関するものである。
暗号処理をシステム上で実行する場合、実行中のシステムの消費電力の変化を観測し、暗号処理に使われている秘密情報である暗号鍵を推測する方法がある(例えば、非特許文献1)。この手法は電力解析と呼ばれている。電力解析に対して、解析が行われても暗号鍵を推測されないように暗号を実装する必要がある。
このような実装において、暗号化を行う入力(以降、「平文」という)と乱数との排他的論理和を求めたり(以降、この手法に係る乱数を「加算マスク」といい、この乱数との排他的論理和を求めることを「加算マスクを付加する」という)、平文と乱数とのガロア拡大体上の乗算を求めたりし(以降、この手法に係る乱数を「乗算マスク」といい、この乱数とのガロア拡大体上の乗算を求めることを「乗算マスクを施す」という)、その出力に対して暗号処理を行い、暗号処理後に乱数を取り除く操作を行う手法がある(例えば、特許文献1)。しかしながら多くの暗号では処理の過程に非線形処理を含む。よって上記手法の実現には、乱数を付加した平文に対して、平文のみを暗号化するための処理が必要となる。
多くの暗号では、非線形処理にガロア拡大体上のべき乗演算とアフィン変換とを組み合わせた構成を採用している。例えば、非特許文献2では、平文に加算マスクを付加し、ガロア拡大体上のべき乗演算を行う前に加算マスクをはずし、新たな乗算マスクを施し、べき乗演算後に乗算マスクをはずし、加算マスクを付加していた。また非特許文献3では、乱数を付加した平文と乱数そのものを入力とし、平文のみを処理できる2乗演算(以降、PMS(Perfectly Masked Squaring)という)と乗算演算(以降、PMM(Perfectly Masked Multiplication)という)を定義し、これらを組み合わせて平文の逆元を求めている。
特表2002−540654号公報
P. Kocher, J. Jaffe, B. Jun, "Differential Power Analysis", Advances in Cryptology: Proceedings of CRYPTO’99, Springer−Verlag, p.388−397, 1999
J. D. Golic, C. Tymen, "Multiplicative Masking and Power Analysis of AES", Proc. of CHES 2002, p.198−212, 2002
J. Blomer, J. G. Merchan, V. Krummel, "Provably Secure Masking of AES", [online], Cryptology ePrint Archive, Report 2004/101, 2004, インターネット<URL:http://eprint.iacr.org/2004/101/>
M. Akkar, R. Bevan, L. Goubin, "Two Power Analysis Attacks against One−Mask Methods", Proc. of FSE 2004, p.332−347, 2004
鈴木大輔、佐伯稔、市川哲也、「遷移確率を考慮したDPA対策手法の提案」、ISEC2004、2004年7月
森岡澄夫、秋下徹、「合成体を用いたAES S−Box回路に対するDPA攻撃」、CSS2004、p.679−684、2004年10月
T. Itoh, S. Tsujii, "A Fast Algorithm for Computing Multiplicative Inverse in GF(2m) using Normal Bases", Information and Computation Vol.78, No.3, p.171−177, 1988
非特許文献2に見られる手法では、べき乗演算を行う前に平文に対して乗算マスクを施す。このため、平文の値が0である場合には、乱数を付加しても付加後の出力が0となってしまい、電力解析により暗号鍵を推測されてしまうという課題があった。また、非特許文献3に見られる手法では、1回の非線形処理に対し、7回のPMSと6回のPMMを行う必要がある。1回のPMMの実行に4回の乗算を必要とするため、1回の非線形処理で計算に時間がかかる乗算を24回行う必要がある。このため、非線形処理の計算に時間がかかってしまうという課題があった。
本発明は、例えば、電力解析への安全性を担保しつつ、乗算回数を削減することで、処理を高速に行うことを目的とする。
本発明の非線形演算装置は、
乱数を生成する乱数生成処理と非線形演算を行い平文に対して生成した乱数を付加する非線形演算処理とを繰り返すことにより平文を暗号化する暗号処理装置に複数備えられ、前記乱数生成処理と前記非線形演算処理とを実行する非線形演算装置において、
前記平文の少なくとも一部を含む入力データxに補正乱数Mが付加された乱数付加データP(P=x+M)を入力するデータ入力部と、
前記補正乱数Mを入力する乱数入力部と、
任意の乱数M´を生成する乱数生成部と、
前記入力データxのべき乗xeを第1の項とし、
(1)前記乱数入力部が入力した補正乱数Mと、(2)前記データ入力部が入力した乱数付加データPと、(3)前記入力データxと前記補正乱数Mとが乗算された乗算データMxとの少なくともいずれかで表現される式を乗算回数が減るように変形した式を第2の項とし、
前記データ入力部が入力した乱数付加データPのガロア拡大体上のべき乗Peを、前記第1の項と前記第2の項とを加算する第1の多項式に展開し、
展開した第1の多項式と前記乱数付加データPのべき乗Peとを等式の左右の辺としたときの両辺に前記乱数生成部が生成した任意の乱数M´を加算し、
前記等式を前記入力データxのべき乗xeと前記乱数生成部が生成した任意の乱数M´とを加算した出力データFeを一方の辺とする式に変形したときの他方の辺となる第2の多項式に基づいて、
前記出力データFeを演算して出力するべき乗演算部とを備えることを特徴とする。
乱数を生成する乱数生成処理と非線形演算を行い平文に対して生成した乱数を付加する非線形演算処理とを繰り返すことにより平文を暗号化する暗号処理装置に複数備えられ、前記乱数生成処理と前記非線形演算処理とを実行する非線形演算装置において、
前記平文の少なくとも一部を含む入力データxに補正乱数Mが付加された乱数付加データP(P=x+M)を入力するデータ入力部と、
前記補正乱数Mを入力する乱数入力部と、
任意の乱数M´を生成する乱数生成部と、
前記入力データxのべき乗xeを第1の項とし、
(1)前記乱数入力部が入力した補正乱数Mと、(2)前記データ入力部が入力した乱数付加データPと、(3)前記入力データxと前記補正乱数Mとが乗算された乗算データMxとの少なくともいずれかで表現される式を乗算回数が減るように変形した式を第2の項とし、
前記データ入力部が入力した乱数付加データPのガロア拡大体上のべき乗Peを、前記第1の項と前記第2の項とを加算する第1の多項式に展開し、
展開した第1の多項式と前記乱数付加データPのべき乗Peとを等式の左右の辺としたときの両辺に前記乱数生成部が生成した任意の乱数M´を加算し、
前記等式を前記入力データxのべき乗xeと前記乱数生成部が生成した任意の乱数M´とを加算した出力データFeを一方の辺とする式に変形したときの他方の辺となる第2の多項式に基づいて、
前記出力データFeを演算して出力するべき乗演算部とを備えることを特徴とする。
本発明では、非線形演算装置のべき乗演算部が、入力データxに補正乱数Mが付加された乱数付加データPのべき乗Peと、任意の乱数M´と、補正乱数M、乱数付加データP、乗算データMxのみで表現される式とを加算する多項式を用いて出力データFeを演算し、その演算において補正乱数M、乱数付加データP、乗算データMxのみで表現される式として乗算回数が少なくなるように変形されたものを用いることにより、非線形演算処理において必要な乗算回数を削減することができる。
本発明の実施の形態について説明する前に用語の定義について説明する。
ここでは、「多項式」とは複数の項を持つ式のことをいう(つまり、単項式を除く)。「式(又は数式)」とは単項式と多項式の両方を含み、定数と不定元の和(加算)と積(乗算)からなるものをいい、式(1)などの式番号を表すために使用する場合以外は等式を含まないこととする。「等式」とは、2つの式が同じ値を持つことを示すためにそれらの式を等号で結合した文字列のことをいう。
以下、本発明の実施の形態について、図を用いて説明する。
実施の形態1.
図1は本実施の形態に係る暗号処理装置の構成を示すブロック図である。暗号処理装置1は排他的論理和部100、暗号部102、拡大鍵生成部101からなり、平文200、乱数201、暗号鍵202を入力とし、暗号文203を出力する。
図1は本実施の形態に係る暗号処理装置の構成を示すブロック図である。暗号処理装置1は排他的論理和部100、暗号部102、拡大鍵生成部101からなり、平文200、乱数201、暗号鍵202を入力とし、暗号文203を出力する。
図2は図1における暗号部102の平文入力側部分の構成を示すブロック図である。また、図3は図1における暗号部102の暗号文出力側部分の構成を示すブロック図である。暗号部102は、非線形演算部103〜111、線形演算部112〜114、排他的論理和部115〜118、補正値演算部119〜122からなる。
図4は図2及び図3における非線形演算部103〜111の構成を示すブロック図である。それぞれの非線形演算部は、データ入力部140、乱数入力部141、べき乗演算部127、乱数生成部128からなる。
図6は図1に示した暗号処理装置1のハードウェア構成の一例を示す図である。暗号処理装置1は演算部130、記憶部131、入出力部132から構成されている。演算部130はCPU(Central Processing Unit)、DSP(Digital Signal Processor)等に相当する。記憶部131はメモリ、HDD(ハードディスクドライブ)等に相当し、入出力部132はI/O(インプット/アウトプット)ポートに相当する。記憶部131はテーブル133を予め記憶している。
本実施の形態において、図4に示したべき乗演算部127は、演算部130の一部に実装される。
例えば、CPUは、バスを介して、ROM(Read Only Memory)、RAM(Random Access Memory)、通信ボード、表示装置、K/B(キーボード)、マウス、FDD(Flexible Disk Drive)、CDD(コンパクトディスクドライブ)、磁気ディスク装置、光ディスク装置、プリンタ装置、スキャナ装置等と接続されている。
RAMは、揮発性メモリの一例である。ROM、FDD、CDD、磁気ディスク装置、光ディスク装置は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
暗号処理装置1が扱うデータや情報は、記憶装置あるいは記憶部に保存され、暗号処理装置1の各部により、記録され読み出されるものである。
また、通信ボードは、例えば、LAN、インターネット、或いはISDN等のWAN(ワイドエリアネットワーク)に接続されている。
磁気ディスク装置には、オペレーティングシステム(OS)、ウィンドウシステム、プログラム群、ファイル群(データベース)が記憶されている。
プログラム群は、CPU、OS、ウィンドウシステムにより実行される。
暗号処理装置1の各部は、一部或いはすべてコンピュータで動作可能なプログラムにより構成しても構わない。或いは、ROMに記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェア或いは、ハードウェア或いは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実施されても構わない。
上記プログラム群には、実施の形態の説明において「〜部」として説明した処理をCPUに実行させるプログラムが記憶される。これらのプログラムは、例えば、C言語などのコンピュータ言語により作成される。
また、上記プログラムは、磁気ディスク装置、FD(Flexible Disk)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体に記憶され、CPUにより読み出され実行される。
次に本実施の形態に係る暗号処理装置の動作について説明する。
図1において、拡大鍵生成部101は暗号鍵202を入力とし、暗号部102で用いる拡大鍵205〜207を作成する。排他的論理和部100は平文200と乱数201との排他的論理和を求め、乱数化平文204を生成する。暗号部102は乱数化平文204、乱数201、拡大鍵205〜207を用いて暗号文203を出力する。暗号文203は公知の暗号法により暗号鍵202を用いて平文200に復号化することが可能なデータである。公知の暗号法としては、例えばAES(Advanced Encryption Standard)等の共通鍵暗号方式を、本実施の形態と合わせて暗号処理に用いることができる。
図2において、補正値演算部119は、乱数201を入力とし、補正乱数入力217〜219を出力する。補正値演算部119が使用する演算方法は、暗号法により異なる。補正値演算部120は、補正乱数出力235〜237を入力とし、補正乱数入力220〜222を出力する。乱数化平文204はnビット単位でk個の分割入力208〜210に分けられる。n、kの値は暗号法により異なる。非線形演算部103〜105は、各々の分割入力208〜210と補正乱数入力217〜219を入力とし、非線形出力226〜228と補正乱数出力235〜237を出力する。線形演算部112は非線形出力226〜228を入力とし、線形出力244を出力する。線形演算部112が使用する演算方法は、暗号法により異なる。ただし、線形演算部112と補正値演算部119は同じ演算方法を使用する。排他的論理和部115は線形出力244と拡大鍵205との排他的論理和を求める。排他的論理和部115の出力は分割入力211〜213に分けられる。このような処理を繰り返し、排他的論理和出力247と補正乱数出力238〜240を得る。
図3において、補正値演算部121は、補正乱数出力238〜240を入力とし、補正乱数入力223〜225を出力する。補正値演算部122は、補正乱数出力241〜243を入力とし、最終補正乱数248を出力する。排他的論理和出力247はnビット単位でk個の分割入力214〜216に分けられる。非線形演算部109〜111は、各々の分割入力214〜216と補正乱数入力223〜225を入力とし、非線形出力232〜234と補正乱数出力241〜243を出力する。線形演算部114は非線形出力232〜234を入力とし、線形出力246を出力する。排他的論理和部117は線形出力246と拡大鍵207との排他的論理和を求める。排他的論理和部118は排他的論理和部117の出力と最終補正乱数248との排他的論理和を求め、暗号文203を出力する。
説明の便宜上、以降では、それぞれの非線形演算部において、分割入力208〜216を分割入力P、非線形出力226〜234を非線形出力Fe、補正乱数入力217〜225を補正乱数入力M、補正乱数出力235〜243を補正乱数出力M´と表記する。また、分割入力Pを、乱数化平文204が8ビット単位(バイトごと)に分割されたデータとする(n=8)。
図4において、データ入力部140は分割入力Pを入力する。乱数入力部141は補正乱数入力Mを入力する。乱数生成部128は乱数M´、Nを生成する。ここで、乱数NはMと相関がない必要があるが、乱数M´は任意でよい。
べき乗演算部127は分割入力P、補正乱数入力M、乱数M´、Nを入力とし、非線形出力Feを出力する。ただし、FeはFe=xe+M´を満たす。ここで、xは分割入力Pに含まれる暗号化すべきデータ(入力データ)である。+(プラス)は排他的論理和演算を示す。eの値は暗号法により異なる(特に、−1、247、251が使われる)。
本実施の形態では、e=−1(入力の逆元)として説明する。
以下に示すように、べき乗演算部127は指数eについて、(x+M)eを多項式上に展開し、xe以外の項について、xとMを用いて表現した式を乗算回数が最少に(又は少なく)なるように変形した後(式(7))、xeをxとMを用いて表現し、両辺に乱数M´を付加した式(式(2))を用いる。
式(2)において、Mxを求める際、単純にxと乱数Mとを乗算すると、xの値が0の場合に電力解析に対して脆弱になってしまう。そこで、式(8)のようにMxのべき乗を求めてもよい。
具体的には、べき乗演算部127は、以下の処理ステップを実行する。ステップ2〜8では、カッコ内の加算を先に行うものとする。
本実施の形態では、テーブル133は入力の2乗、128乗、130乗、194乗、226乗、242乗、250乗及び逆元(−1乗)を計算して得られる結果を予め表として保持する。演算部130は、入力のべき乗を求めるために、テーブル133の求めるべき指数の計算結果を参照する。ここで、テーブル133の2乗の計算結果のみを用い、これを乗算と組み合わせることで入力のべき乗を求めることもできる。また、テーブル133が入力のべき乗の計算結果を一部だけ保持し、テーブル133にない値は演算部130が演算して求めてもよい。さらに、暗号処理装置1がテーブル133を持たず、演算部130が入力のべき乗をすべて演算して求めてもよい。
このように、本実施の形態では、べき乗演算部127は式(1)と式(2)の計算過程において、x及びxにのみ依存する演算結果を求めない。例えば、暗号化すべきデータxを含む項にPとMPがあるが、全ての演算過程において、常に乱数が付加された状態で演算される。よって、べき乗演算部127の計算過程において電力解析に対する安全性を保障できる。
また、本実施の形態では、べき乗演算部127中の全ての加算・乗算及びべき乗演算について、各オペランドに互いに独立な乱数成分が付加されるため、当該演算による出力の分布が暗号化すべきデータxに依存しない。例えば、(ステップ1)のPN=P+(M+N)の右辺第1項と第2項との加算の入力については、一方にはMが、他方にはM、Nが付加されている。また、MP 1=MPNの乗算の入力については、一方にはMが、他方にはNが付加されている。他の全ての演算についても同様である。これによって、さらに、べき乗演算部127の計算過程において電力解析に対する安全性を保障できる。
本実施の形態では、べき乗演算部127が、分割入力Pのべき乗P−1と、乱数M´と、補正乱数入力M、分割入力P、補正乱数入力Mと暗号化すべきデータxを乗算したMxのみで表現される式とを加算する多項式を用いて出力データF−1を演算し、その演算においてM、P、Mxのみで表現される式として乗算回数が少なくなるように変形されたものを用いることにより、1回のべき乗計算に必要な乗算回数を削減することができる。
本実施の形態では、入力のべき乗を求める処理をテーブル133で実現することができるため、1回のべき乗計算に必要な乗算回数をさらに削減することができる。具体的には、べき乗演算部127が1回のべき乗計算に行う乗算回数は、非特許文献3の24回に対して14回に削減できる。テーブル133による値の参照は乗算に対して高速に実行可能であるため、べき乗計算を従来の技術より高速に行うことができる。例えば、非特許文献7では逆元の計算方法において乗算回数を削減する方式が開示されており、この方式を非特許文献3の方式と組み合わせる方法も考えられる(実施の形態7の説明を参照)が、本実施の形態に係る非線形演算方法ではこれよりもさらに乗算回数を削減することが可能である。
実施の形態2.
本実施の形態に係る暗号処理装置は、実施の形態1のものと同様である。実施の形態1と同様に、本実施の形態に係る暗号処理装置において、図4に示すべき乗演算部127が分割入力P、補正乱数入力M、乱数M´、Nを入力とし、非線形出力Feを出力する。
本実施の形態に係る暗号処理装置は、実施の形態1のものと同様である。実施の形態1と同様に、本実施の形態に係る暗号処理装置において、図4に示すべき乗演算部127が分割入力P、補正乱数入力M、乱数M´、Nを入力とし、非線形出力Feを出力する。
本実施の形態では、e=247として説明する。
以下に示すように、べき乗演算部127は指数eについて、(x+M)eを多項式上に展開し、xe以外の項について、xとMを用いて表現した式を乗算回数が最少に(又は少なく)なるように変形した後(式(9))、xeをxとMを用いて表現し、両辺に乱数M´を付加した式(式(3))を用いる。
具体的には、べき乗演算部127は、以下の処理ステップを実行する。ステップ2〜9では、カッコ内の加算を先に行うものとする。
本実施の形態は、実施の形態1と同様の効果を奏する。
実施の形態3.
本実施の形態に係る暗号処理装置の構成及び動作は、図1に示した実施の形態1のものと同様である。暗号処理装置1の暗号部102の構成及び動作も、図2及び図3に示した実施の形態1のものと同様である。また、本実施の形態においても、図6に示したハードウェア構成により暗号処理装置1を実装することができる。以下では、主に本実施の形態における実施の形態1との差異について説明する。
本実施の形態に係る暗号処理装置の構成及び動作は、図1に示した実施の形態1のものと同様である。暗号処理装置1の暗号部102の構成及び動作も、図2及び図3に示した実施の形態1のものと同様である。また、本実施の形態においても、図6に示したハードウェア構成により暗号処理装置1を実装することができる。以下では、主に本実施の形態における実施の形態1との差異について説明する。
図5は図2及び図3における非線形演算部103〜111の構成を示すブロック図である。それぞれの非線形演算部は、アフィン変換部123〜126、データ入力部140、乱数入力部141、べき乗演算部127、乱数生成部128からなる。
説明の便宜上、以降では、それぞれの非線形演算部において、分割入力208〜216を分割入力P、非線形出力226〜234を非線形出力Y、補正乱数入力217〜225を補正乱数入力M、補正乱数出力235〜243を補正乱数出力DM´と表記する。また、分割入力Pを、乱数化平文204が8ビット単位(バイトごと)に分割されたデータとする(n=8)。
図5において、データ入力部140は分割入力Pを入力する。乱数入力部141は補正乱数入力Mを入力する。分割入力Pはアフィン変換部123によりアフィン変換出力APに変換される。補正乱数入力Mはアフィン変換部124によりアフィン変換出力BMに変換される。乱数生成部128は乱数M´、Nを生成する。ここで、乱数NはMと相関がない必要があるが、乱数M´は任意でよい。
アフィン変換部126はべき乗演算出力Feを入力とし、非線形出力Yを出力する。
アフィン変換部125は乱数M´を入力とし、補正乱数出力DM´を出力する。
べき乗演算部127はアフィン変換出力AP、BM、乱数M´、Nを入力とし、べき乗演算出力Feを出力する。ただし、FeはFe=(Ax)e+M´を満たす。ここで、Axはxをアフィン変換部123に入力した場合の出力であり、xは分割入力Pに含まれる暗号化すべきデータ(入力データ)である。+(プラス)は排他的論理和演算を示す。eの値は暗号法により異なる。
本実施の形態では、e=−1(入力の逆元)として説明する。
以下に示すように、べき乗演算部127は指数eについて、(Ax+BM)eを多項式上に展開し、Ax e以外の項について、APとBMを用いて表現した式を乗算回数が最少に(又は少なく)なるように変形した後、Ax eをAPとBMを用いて表現し、両辺に乱数M´を付加した式(式(4)及び式(5))を用いる。
具体的には、べき乗演算部127は、以下の処理ステップを実行する。ステップ2〜8では、カッコ内の加算を先に行うものとする。
また、本実施の形態では、べき乗演算部127中の全ての加算・乗算及びべき乗演算について、各オペランドに互いに独立な乱数成分が付加されるため、当該演算による出力の分布が暗号化すべきデータxに依存しない。例えば、(ステップ1)のPN=AP+(BM+N)の右辺第1項と第2項との加算の入力については、一方にはBMが、他方にはBM、Nが付加されている。また、MP 1=BMPNの乗算の入力については、一方にはBMが、他方にはNが付加されている。他の全ての演算についても同様である。これによって、さらに、べき乗演算部127の計算過程において電力解析に対する安全性を保障できる。
以上のように、実施の形態3で説明した耐タンパ暗号処理方法は、
ガロア拡大体上のべき乗演算において、乱数を付加された入力のべき乗を多項式上に展開し、それを用いて、入力のべき乗を乱数及び乱数を付加された入力のみで表現し、展開した式を乗算回数が最小となるように変形し、変形した式を用いて演算を実行することを特徴とする。
ガロア拡大体上のべき乗演算において、乱数を付加された入力のべき乗を多項式上に展開し、それを用いて、入力のべき乗を乱数及び乱数を付加された入力のみで表現し、展開した式を乗算回数が最小となるように変形し、変形した式を用いて演算を実行することを特徴とする。
上記耐タンパ暗号処理方法は、例えば、ガロア拡大体上のべき乗演算において、前述した式(4)及び式(5)を用いて、F−1を計算することを特徴とする。
上記耐タンパ暗号処理方法は、Mxを計算する際に、APにBM+Nを加算することを特徴とする。
上記耐タンパ暗号処理方法は、AP a+(MX)bG1を計算する際に、(MX)bG1を2つ以上の項の和に分解した上で、その1つとAP aとの加算を先に行うことを特徴とする。ただし、G1は式(5)において、(MX)nより右にある多項式である。
上記耐タンパ暗号処理方法は、AP、M´、MP及びMNのべき乗の計算に、あらかじめ指数ごとに用意しておいた変換表を用いることを特徴とする。
上記耐タンパ暗号処理方法は、AP、M´、MP及びMNのべき乗の計算に、例えば、入力の2乗を求める変換表と、その出力との乗算を組み合わせることを特徴とする。
実施の形態4.
本実施の形態に係る暗号処理装置は、実施の形態3のものと同様である。実施の形態3と同様に、本実施の形態に係る暗号処理装置において、図5に示すべき乗演算部127がアフィン変換出力AP、BM、乱数M´、Nを入力とし、べき乗演算出力Feを出力する。
本実施の形態に係る暗号処理装置は、実施の形態3のものと同様である。実施の形態3と同様に、本実施の形態に係る暗号処理装置において、図5に示すべき乗演算部127がアフィン変換出力AP、BM、乱数M´、Nを入力とし、べき乗演算出力Feを出力する。
本実施の形態では、e=247として説明する。
以下に示すように、べき乗演算部127は指数eについて、(Ax+BM)eを多項式上に展開し、Ax e以外の項について、APとBMを用いて表現した式を乗算回数が最少に(又は少なく)なるように変形した後、Ax eをAPとBMを用いて表現し、両辺に乱数M´を付加した式(式(4)及び式(6))を用いる。
具体的には、べき乗演算部127は、以下の処理ステップを実行する。ステップ2〜9では、カッコ内の加算を先に行うものとする。
本実施の形態は、実施の形態3と同様の効果を奏する。
以上のように、実施の形態4で説明した耐タンパ暗号処理方法は、
ガロア拡大体上のべき乗演算において、乱数を付加された入力のべき乗を多項式上に展開し、それを用いて、入力のべき乗を乱数及び乱数を付加された入力のみで表現し、展開した式を乗算回数が最小となるように変形し、変形した式を用いて演算を実行することを特徴とする。
ガロア拡大体上のべき乗演算において、乱数を付加された入力のべき乗を多項式上に展開し、それを用いて、入力のべき乗を乱数及び乱数を付加された入力のみで表現し、展開した式を乗算回数が最小となるように変形し、変形した式を用いて演算を実行することを特徴とする。
上記耐タンパ暗号処理方法は、例えば、ガロア拡大体上のべき乗演算において、前述した式(4)及び式(6)を用いて、F247を計算することを特徴とする。
上記耐タンパ暗号処理方法は、Mxを計算する際に、APにBM+Nを加算することを特徴とする。
上記耐タンパ暗号処理方法は、AP a+(MX)bG2を計算する際に、(MX)nG2を2つ以上の項の和に分解した上で、その1つとAP aとの加算を先に行うことを特徴とする。ただし、G2は式(6)において、(MX)bより右にある多項式である。
上記耐タンパ暗号処理方法は、AP、M´、MP及びMNのべき乗の計算に、あらかじめ指数ごとに用意しておいた変換表を用いることを特徴とする。
上記耐タンパ暗号処理方法は、AP、M´、MP及びMNのべき乗の計算に、例えば、入力の2乗を求める変換表と、その出力との乗算を組み合わせることを特徴とする。
実施の形態5.
実施の形態1から4までに係る暗号処理装置は、図7に示すハードウェア構成により実装することもできる。図6の構成では記憶部131の内部にテーブル133を保持していたが、本実施の形態では演算部130の内部にテーブル演算部134を持つ。例えば、演算部130がCPUであれば、CPUと同一チップ内にテーブル演算部134を実装する。図6に示したハードウェア構成の例は主に汎用計算機を対象としているが、図7に示したハードウェア構成の例は主に専用ハードウェアを対象としている。
実施の形態1から4までに係る暗号処理装置は、図7に示すハードウェア構成により実装することもできる。図6の構成では記憶部131の内部にテーブル133を保持していたが、本実施の形態では演算部130の内部にテーブル演算部134を持つ。例えば、演算部130がCPUであれば、CPUと同一チップ内にテーブル演算部134を実装する。図6に示したハードウェア構成の例は主に汎用計算機を対象としているが、図7に示したハードウェア構成の例は主に専用ハードウェアを対象としている。
本実施の形態において、図4に示したべき乗演算部127は、テーブル演算部134を含む演算部130の一部とに実装される。
テーブル演算部134は入力の2乗、4乗、8乗、128乗、130乗、192乗、194乗、224乗、226乗、240乗、242乗、244乗、246乗、247乗、250乗及び逆元(−1乗)を演算する回路である。演算部130は、入力のべき乗を求めるために、テーブル演算部134に求めるべき指数の計算をさせる。ここで、テーブル演算部134に2乗の計算のみをさせ、その計算結果を乗算と組み合わせることで入力のべき乗を求めることもできる。また、テーブル演算部134が入力のべき乗の計算を一部だけ行い、テーブル演算部134が計算しない値は演算部130が演算して求めてもよい。
本実施の形態では、テーブル演算部134をハードウェアとして演算部130に組み込むことでより高速の演算が可能となる。また、本実施の形態では、演算部130とテーブル演算部134とを1つのパッケージに封入することができる。これにより、プローブ解析に対する抗力が向上する。
実施の形態6.
実施の形態1から4までに係る暗号処理装置は、図8に示すハードウェア構成により実装することもできる。実施の形態5で説明した図7の構成では演算部130の内部にテーブル演算部134を持っていたが、本実施の形態ではテーブル演算部134を演算部130、記憶部131、入出力部132とは独立に実装する。図7に示したハードウェア構成の例は主に専用ハードウェアを対象としているが、図8に示したハードウェア構成の例は主にコプロセッサシステムを対象としている。
実施の形態1から4までに係る暗号処理装置は、図8に示すハードウェア構成により実装することもできる。実施の形態5で説明した図7の構成では演算部130の内部にテーブル演算部134を持っていたが、本実施の形態ではテーブル演算部134を演算部130、記憶部131、入出力部132とは独立に実装する。図7に示したハードウェア構成の例は主に専用ハードウェアを対象としているが、図8に示したハードウェア構成の例は主にコプロセッサシステムを対象としている。
本実施の形態において、図4に示したべき乗演算部127は、演算部130の一部とテーブル演算部134に実装される。
本実施の形態では、テーブル演算部134をハードウェアで実現するとともに、演算部130と独立させた構成とすることでテーブル演算部134の変更を容易に行うことができる。
実施の形態7.
以下では、本実施の形態に係る暗号処理装置の「マスク付き入力の多項式展開によるガロア体上の逆元演算マスク法」について説明する。説明の一部は背景技術や他の実施の形態に関する記述と重複するが、本実施の形態の説明で使用する番号、記号、符号などは、説明が重複する部分においても異なるものを示す場合がある。例えば、実施の形態1と本実施の形態とのどちらの説明にも使用されている記号がある場合、この記号が実施の形態1で意味するものと本実施の形態で意味するものとは必ずしも同じとは限らない。また、逆に、同じものを示す場合であっても、異なる番号、記号、符号などを用いる場合がある。
以下では、本実施の形態に係る暗号処理装置の「マスク付き入力の多項式展開によるガロア体上の逆元演算マスク法」について説明する。説明の一部は背景技術や他の実施の形態に関する記述と重複するが、本実施の形態の説明で使用する番号、記号、符号などは、説明が重複する部分においても異なるものを示す場合がある。例えば、実施の形態1と本実施の形態とのどちらの説明にも使用されている記号がある場合、この記号が実施の形態1で意味するものと本実施の形態で意味するものとは必ずしも同じとは限らない。また、逆に、同じものを示す場合であっても、異なる番号、記号、符号などを用いる場合がある。
ソフトウェア実装した暗号装置の電力解析等への対策として、暗号前の入力に乱数でマスクした上で暗号化を行い、出力にマスクをかけなおすことで、内部変数を推定されないようにする手法がある。これらの手法では、入力にマスクがかかっていても正しく計算が行えるよう、元のアルゴリズムを改良している。これらのアルゴリズムの改良においては、S−Boxの演算法が課題となる。AESをはじめとして、安全性を担保した多くの暗号では、S−Boxにガロア体上の逆元演算とアフィン変換を組み合わせたものを用いている。乱数のマスクを考慮したS−Boxの実装には、逆元演算の前に加算マスクから乗算マスクに変更する方法や、乱数の付加を考慮した二乗器と乗算器を提案し、それらを組み合わせて実装する方法などがある。しかしながら、特定の入力でマスクの効果が消えたり、多重の演算により計算コストが増大したりしている。本実施の形態では、入力と乱数を加算したものの逆元が多項式上でどのように展開されるかに着目し、展開した式を元に、それを安全に実装する手法を提案し、その有効性を検証する。
1.はじめに
1999年にKocherらが提案した電力差分解析(DPA)(非特許文献1)は、ソフトウェア実装・ハードウェア実装を問わず実行可能なため、近年、その対策法に注目が集まっている。ハードウェア実装においてはRSL(非特許文献5)をはじめとするゲートレベルでの対策を行う手法が確立しつつある。一方、ソフトウェア実装においては、暗号前の入力に乱数でマスクしたうえで暗号化を行い、出力にマスクをかけなおす手法が提案されているが、暗号中のS−Boxの処理に課題がある。
1999年にKocherらが提案した電力差分解析(DPA)(非特許文献1)は、ソフトウェア実装・ハードウェア実装を問わず実行可能なため、近年、その対策法に注目が集まっている。ハードウェア実装においてはRSL(非特許文献5)をはじめとするゲートレベルでの対策を行う手法が確立しつつある。一方、ソフトウェア実装においては、暗号前の入力に乱数でマスクしたうえで暗号化を行い、出力にマスクをかけなおす手法が提案されているが、暗号中のS−Boxの処理に課題がある。
AESをはじめとして、安全性を担保した多くの暗号では、S−Boxにガロア体上の逆元演算とアフィン変換を組み合わせたものを用いている。これまでに、入力に排他的論理和を行う加算マスクや入力にガロア体上の乗算を行う乗算マスクが提案されてきた。しかし、前者は逆元演算を通過させることが難しく、後者はアフィン変換を通過させることが困難となっている。
Golicらは、加算マスクされた入力に対し、逆元演算の直前に乗算マスクに変換し、逆元演算の直前に加算マスクに変更する手法を提案した(非特許文献2)。しかし、乗算マスクには、「マスクされるデータが0である場合にデータがマスクされない」ことを利用した攻撃が可能であるという問題がある。また、Blomerらは、マスク付きの二乗演算と乗算演算を定義し、それらを組み合わせる手法を提案した(非特許文献3)。しかしながらこの手法では、多くの二乗演算と乗算演算、特に乗算を多く用いるため、演算コストがかさむ。
本実施の形態では、入力に加算マスクされた変数の逆元が多項式上でどのように展開されるかに着目し、それを基にした逆元演算法であるSMDM(Secure Masking with the Development of function of Masked input)を提案する。提案法により、乗算回数を削減することで、演算の高速化を図る。
本実施の形態では、入力と乱数を加算したものの逆元が多項式上でどのように展開されるかについて示す。また、展開した式を元に、それを安全に実装する手法を提案し、その有効性を検証する。
2.従来の入力へのマスク付き逆元演算法
2.1.マスクのかけかえを行う逆元演算法
図9にGolicらの提案した手法の概略を示す。マスクMaにより加算マスクされた入力Xは、逆元演算を行う前に、マスクMbにより乗算マスクに変更され、逆元の演算が行われた後に再び加算マスクに変更される。
2.1.マスクのかけかえを行う逆元演算法
図9にGolicらの提案した手法の概略を示す。マスクMaにより加算マスクされた入力Xは、逆元演算を行う前に、マスクMbにより乗算マスクに変更され、逆元の演算が行われた後に再び加算マスクに変更される。
この手法の場合、X=0の場合は任意のマスクMbに対して、x−1の直前の値が0になるため、そこを突いたDPAが可能である。
2.2.マスク付きの二乗演算と乗算演算を組み合わせる手法
Blomerらは、マスク付きの二乗演算(Perfectly Masked Square:PMS)と乗算演算(Perfectly Masked Multiplication:PMM)を定義し、それらを組み合わせる手法を提案した。PMS・PMMと逆元の計算法を以下に示す。
Blomerらは、マスク付きの二乗演算(Perfectly Masked Square:PMS)と乗算演算(Perfectly Masked Multiplication:PMM)を定義し、それらを組み合わせる手法を提案した。PMS・PMMと逆元の計算法を以下に示す。
これらに対し、本実施の形態では乱数でマスクされた入力の逆元を多項式上に展開するという観点からマスクつき入力の逆元を求める手法を提案する。また、全ての演算の値の確率分布がマスク前の入力に依存しないアルゴリズムを提案する。提案法では、乗算の代わりにメモリ参照と加算を演算の中心とすることで、乗算回数を削減し、処理の高速化を図る。
3.提案法
3.1.加算マスクの入った入力の逆元の展開
提案法を示す前に式入力xがMにより加算マスクされた場合の逆元(x+M)−1がどのように展開されるかを示す。(x+M)−1=(x+M)254 over GF(28)であるため、以降(x+M)254について論じる。事前準備として補題1を示す。
3.1.加算マスクの入った入力の逆元の展開
提案法を示す前に式入力xがMにより加算マスクされた場合の逆元(x+M)−1がどのように展開されるかを示す。(x+M)−1=(x+M)254 over GF(28)であるため、以降(x+M)254について論じる。事前準備として補題1を示す。
3.1節では、式(13)(14)を計算することで、x−1を陽に計算せずにx−1+Mnewを計算できることを示した。しかしながら、式(13)(14)を計算する場合、いくつかの問題点がある。
問題点1:(Mx)nの演算結果をそのまま次の演算(乗算)に用いると、その部分をZero−Value−Attackにより解析される恐れがある。
問題点2:Mxを式(14)で計算した場合、xが0の場合とそうでない場合とで、MPの取りうる値の分布が変化する。
そこで本実施の形態では、上記問題を解決すべく、式(13)を安全性を担保しながら演算を行う手法Secure Masking with the Development of function of Masked input(SMDM)を提案する。以下にそのアルゴリズムを示す。アルゴリズム中にあるrand()は乱数生成を示す。
提案法では、べき乗演算をテーブル参照で実現することで、1回の逆元の計算で加算を16回、乗算を14回で行うことができるため、高速な処理を期待できる。
問題点1への対策として、(Mx)kTj=(MP k+MN k)TjをMP kTjとMN kTjとに分配して計算し、MP kTjとPnとの加算を先に行うようにした。このことにより、任意の演算出力は、任意のマスク前の入力に対してマスクの影響を受けるようになる。
また、問題点2は特に乗算において注意する必要がある。その対策としてPに対してマスクのかけ換えを行うようにした。これにより、全ての乗算において2つのオペランドに互いに独立な乱数がかかるため、問題点2を回避できるものと考える。
以下、各々の演算についてその安全性を議論する。議論に先立ち、補題2、補題3を示す(非特許文献3)。
(2)PN
補題2よりその分布は一様分布を示す。
補題2よりその分布は一様分布を示す。
(3)MPN
M、Nは独立であるため、補題3よりその分布はxに依存しない。
M、Nは独立であるため、補題3よりその分布はxに依存しない。
(4)MP n、T0(=P2)、Pn
任意の指数計算は1入力1出力のテーブルで表現できる。よって、テーブル出力の分布はテーブル入力の分布とテーブル値に依存する。テーブルへの入力であるMPN、Pの分布はxに依存しないため、テーブル出力の分布もxに依存しない。
任意の指数計算は1入力1出力のテーブルで表現できる。よって、テーブル出力の分布はテーブル入力の分布とテーブル値に依存する。テーブルへの入力であるMPN、Pの分布はxに依存しないため、テーブル出力の分布もxに依存しない。
(5)Tk+1=(MP nTk+Pm)+MN nTk
この部分の安全性の議論には森岡らの判定法を用いることとする(非特許文献6)。
この部分の安全性の議論には森岡らの判定法を用いることとする(非特許文献6)。
(a)提案アルゴリズムより、MaskSet(MP n)、MaskSet(MN n)、MaskSet(Pm)はそれぞれ式(16)(17)(18)となる。
以上より、0≦kにおいて、全ての演算過程f(x)においてMaskSet(f(x))≠φとなるので、この部分の演算の出力分布はxに依存しない。
(6)Output=(M´+M254)+T6
M´、M254およびT6がxに依存しないため、Outputの分布はxに依存しない。
M´、M254およびT6がxに依存しないため、Outputの分布はxに依存しない。
4.実験
4.1.速度比較
提案法の有効性を示すため、Blomerらの手法と実行速度の比較を行った。また、BlomerらのPMS・PMMと伊東・辻井のアルゴリズム(非特許文献7)を組み合わせた手法についても比較を行った。実験条件を以下に示す。
4.1.速度比較
提案法の有効性を示すため、Blomerらの手法と実行速度の比較を行った。また、BlomerらのPMS・PMMと伊東・辻井のアルゴリズム(非特許文献7)を組み合わせた手法についても比較を行った。実験条件を以下に示す。
条件1:CPU:Intel(登録商標) Xeon 3.20GHz、OS:Linux(登録商標)、コンパイラ:gcc Ver 3.2
条件2:CPU:Renesas(登録商標) SH(登録商標)−4、コンパイラ・シミュレータ:Renesas(登録商標) HEW Ver 3.0.05
演算回数を比較した結果を図10の表に示す。今回の実験では、指数計算を全て1回のテーブル参照で実装した。
条件2:CPU:Renesas(登録商標) SH(登録商標)−4、コンパイラ・シミュレータ:Renesas(登録商標) HEW Ver 3.0.05
演算回数を比較した結果を図10の表に示す。今回の実験では、指数計算を全て1回のテーブル参照で実装した。
Blomerらの手法に対して、テーブル参照の回数は増加したが、加算回数および乗算回数は従来に比べ減少した。
また、速度を比較した結果を図11の表に示す。テーブル参照が乗算に対して十分高速であることもあり、Xeonでは従来の1.59倍、SH(登録商標)−4では従来の1.85倍の性能を得ることができた。
伊東・辻井のアルゴリズムにPMS・PMMを組み合わせた手法に対しても、提案法は高速であったが、持つべきテーブル数と速度との兼ね合いを考慮すると、伊東・辻井のアルゴリズムにPMS・PMMを組み合わせた手法は、提案法よりコストパフォーマンスに優れていると考える。
4.2.提案法におけるテーブル数の削減
提案法では、P254、P250、P242、P226、P194、P130、P2を計算する必要がある。これらをテーブル参照で実装した場合、持つべきテーブルサイズが約1.8kB程度となってしまう。そこで、持つべきテーブル数を削減する手法について検討する。テーブルを削減した場合、テーブル参照の一部を乗算で実行する必要がある。任意の指数計算はPE(E=2n)の組み合わせで表現できる。そこで、P2のテーブルを用いてP4、P8、P16、P32、P64、P128を求め、それらの組み合わせでP130〜P250を求めることでテーブル数を削減することとした。使用するテーブル数とテーブル参照により求める指数演算との関係を図12の表に示す。そのときの各演算の回数を図13の表に示す。指数の決定には、乗算回数および、テーブル参照回数が小さくなるように決定した。
提案法では、P254、P250、P242、P226、P194、P130、P2を計算する必要がある。これらをテーブル参照で実装した場合、持つべきテーブルサイズが約1.8kB程度となってしまう。そこで、持つべきテーブル数を削減する手法について検討する。テーブルを削減した場合、テーブル参照の一部を乗算で実行する必要がある。任意の指数計算はPE(E=2n)の組み合わせで表現できる。そこで、P2のテーブルを用いてP4、P8、P16、P32、P64、P128を求め、それらの組み合わせでP130〜P250を求めることでテーブル数を削減することとした。使用するテーブル数とテーブル参照により求める指数演算との関係を図12の表に示す。そのときの各演算の回数を図13の表に示す。指数の決定には、乗算回数および、テーブル参照回数が小さくなるように決定した。
図14、図15にはXeon、SH(登録商標)−4で行った場合の処理時間とテーブル数との関係を示す。図14、図15中のBlomerらの手法および伊東・辻井のアルゴリズムとPMS、PMMを組み合わせた手法では、テーブル数は常に1(P2のみ)であるが参考のために示す。テーブル数が1の場合、図14ではBlomerらの手法の方が高速であったが、テーブル数が2以上では提案法のほうが高速であった。
また、図15ではテーブル数が1の場合でも、提案法のほうが高速であるという結果になったが、これはコンパイラの性能によるものと考える。
図14、図15において、テーブル数1と2の間が急峻に変化しているのは、M254の演算を乗算で行う必要があったためである。
5.まとめ
本実施の形態では、加算マスクの入った入力の逆元を展開することで、入力にマスクがかかった状態でも、入力のみの逆元とマスクとの加算を求める手法を提案した。展開した数式を実装するアルゴリズムを提案し、その安全性についての考察を行った。また、提案法を実装した結果、Blomerらの手法に対して、Xeonでは1.59倍、SH(登録商標)−4では1.85倍の性能を得ることができた。
本実施の形態では、加算マスクの入った入力の逆元を展開することで、入力にマスクがかかった状態でも、入力のみの逆元とマスクとの加算を求める手法を提案した。展開した数式を実装するアルゴリズムを提案し、その安全性についての考察を行った。また、提案法を実装した結果、Blomerらの手法に対して、Xeonでは1.59倍、SH(登録商標)−4では1.85倍の性能を得ることができた。
1 暗号処理装置、100,115,116,117,118 排他的論理和部、101 拡大鍵生成部、102 暗号部、103,104,105,106,107,108,109,110,111 非線形演算部、112,113,114 線形演算部、119,120,121,122 補正値演算部、123,124,125,126 アフィン変換部、127 べき乗演算部、128 乱数生成部、130 演算部、131 記憶部、132 入出力部、133 テーブル、134 テーブル演算部、140 データ入力部、141 乱数入力部、200 平文、201 乱数、202 暗号鍵、203 暗号文、204 乱数化平文、205,206,207 拡大鍵、208,209,210,211,212,213,214,215,216 分割入力、217,218,219,220,221,222,223,224,225 補正乱数入力、226,227,228,229,230,231,232,233,234 非線形出力、235,236,237,238,239,240,241,242,243 補正乱数出力、244,245,246 線形出力、247 排他的論理和出力、248 最終補正乱数。
Claims (14)
- 乱数を生成する乱数生成処理と非線形演算を行い平文に対して生成した乱数を付加する非線形演算処理とを繰り返すことにより平文を暗号化する暗号処理装置に複数備えられ、前記乱数生成処理と前記非線形演算処理とを実行する非線形演算装置において、
前記平文の少なくとも一部を含む入力データxに補正乱数Mが付加された乱数付加データP(P=x+M)を入力するデータ入力部と、
前記補正乱数Mを入力する乱数入力部と、
任意の乱数M´を生成する乱数生成部と、
前記入力データxのべき乗xeを第1の項とし、
(1)前記乱数入力部が入力した補正乱数Mと、(2)前記データ入力部が入力した乱数付加データPと、(3)前記入力データxと前記補正乱数Mとが乗算された乗算データMxとの少なくともいずれかで表現される式を乗算回数が減るように変形した式を第2の項とし、
前記データ入力部が入力した乱数付加データPのガロア拡大体上のべき乗Peを、前記第1の項と前記第2の項とを加算する第1の多項式に展開し、
展開した第1の多項式と前記乱数付加データPのべき乗Peとを等式の左右の辺としたときの両辺に前記乱数生成部が生成した任意の乱数M´を加算し、
前記等式を前記入力データxのべき乗xeと前記乱数生成部が生成した任意の乱数M´とを加算した出力データFeを一方の辺とする式に変形したときの他方の辺となる第2の多項式に基づいて、
前記出力データFeを演算して出力するべき乗演算部とを備えることを特徴とする非線形演算装置。 - 前記乱数生成部は、さらに、
前記乱数入力部が入力した補正乱数Mと相関のない非相関乱数Nを生成し、
前記べき乗演算部は、
前記乱数生成部が生成した非相関乱数Nを用いて、前記乗算データMxを複数の項を加算する第3の多項式に変形し、変形した第3の多項式に基づいて前記乗算データMxを演算することを特徴とする請求項1に記載の非線形演算装置。 - 前記第2の多項式の一部は、Pa+(Mx)bG(ここで、a、bは整数、Gは多項式とする)で表現され、
前記べき乗演算部は、
前記第2の多項式のPa+(Mx)bGで表現される部分のうち、(Mx)bGを前記第3の多項式に含まれる複数の項を用いて分解した式に含まれる項のいずれかと、Paとを先に加算することを特徴とする請求項2に記載の非線形演算装置。 - 前記データ入力部は、
前記乱数付加データPをアフィン変換してアフィン変換データAPとして入力し、
前記乱数入力部は、
前記補正乱数Mをアフィン変換してアフィン変換補正乱数BMとして入力し、
前記乱数生成部は、
前記任意の乱数M´をアフィン変換して補正乱数出力DM´として出力し、
前記べき乗演算部は、
前記出力データFeをアフィン変換して非線形出力Yとして出力することを特徴とする請求項2又は3に記載の非線形演算装置。 - 乱数を生成する乱数生成処理と非線形演算を行い平文に対して生成した乱数を付加する非線形演算処理とを繰り返すことにより平文を暗号化する暗号処理装置において、
前記乱数生成処理と前記非線形演算処理とを実行する非線形演算部を複数備え、
各非線形演算部は、
前記平文の少なくとも一部を含む入力データxに補正乱数Mが付加された乱数付加データP(P=x+M)を入力するデータ入力部と、
前記補正乱数Mを入力する乱数入力部と、
任意の乱数M´を生成する乱数生成部と、
前記入力データxのべき乗xeを第1の項とし、
(1)前記乱数入力部が入力した補正乱数Mと、(2)前記データ入力部が入力した乱数付加データPと、(3)前記入力データxと前記補正乱数Mとが乗算された乗算データMxとの少なくともいずれかで表現される式を乗算回数が減るように変形した式を第2の項とし、
前記データ入力部が入力した乱数付加データPのガロア拡大体上のべき乗Peを、前記第1の項と前記第2の項とを加算する第1の多項式に展開し、
展開した第1の多項式と前記乱数付加データPのべき乗Peとを等式の左右の辺としたときの両辺に前記乱数生成部が生成した任意の乱数M´を加算し、
前記等式を前記入力データxのべき乗xeと前記乱数生成部が生成した任意の乱数M´とを加算した出力データFeを一方の辺とする式に変形したときの他方の辺となる第2の多項式に基づいて、
前記出力データFeを演算して出力するべき乗演算部とを備えることを特徴とする暗号処理装置。 - 前記暗号処理装置は、さらに、
少なくとも1つの指数についてデータのべき乗の計算結果を予め記憶する記憶部を備え、
各非線形演算部のべき乗演算部は、
べき乗の計算を行う処理の少なくとも一部に前記記憶部に記憶された計算結果を用いることを特徴とする請求項11に記載の暗号処理装置。 - 乱数を生成する乱数生成処理と非線形演算を行い平文に対して生成した乱数を付加する非線形演算処理とを繰り返すことにより平文を暗号化する暗号処理装置に複数備えられ、前記乱数生成処理と前記非線形演算処理とを実行する非線形演算装置を用いる非線形演算方法において、
前記平文の少なくとも一部を含む入力データxに補正乱数Mが付加された乱数付加データP(P=x+M)を入力するデータ入力ステップと、
前記補正乱数Mを入力する乱数入力ステップと、
任意の乱数M´を生成する乱数生成ステップと、
前記入力データxのべき乗xeを第1の項とし、
(1)前記乱数入力ステップで入力した補正乱数Mと、(2)前記データ入力ステップで入力した乱数付加データPと、(3)前記入力データxと前記補正乱数Mとが乗算された乗算データMxとの少なくともいずれかで表現される式を乗算回数が減るように変形した式を第2の項とし、
前記データ入力ステップで入力した乱数付加データPのガロア拡大体上のべき乗Peを、前記第1の項と前記第2の項とを加算する第1の多項式に展開し、
展開した第1の多項式と前記乱数付加データPのべき乗Peとを等式の左右の辺としたときの両辺に前記乱数生成ステップで生成した任意の乱数M´を加算し、
前記等式を前記入力データxのべき乗xeと前記乱数生成ステップで生成した任意の乱数M´とを加算した出力データFeを一方の辺とする式に変形したときの他方の辺となる第2の多項式に基づいて、
前記出力データFeを演算して出力するべき乗演算ステップとを備えることを特徴とする非線形演算方法。 - 乱数を生成する乱数生成処理と非線形演算を行い平文に対して生成した乱数を付加する非線形演算処理とを繰り返すことにより平文を暗号化する暗号処理装置が実行する非線形演算プログラムにおいて、
前記平文の少なくとも一部を含む入力データxに補正乱数Mが付加された乱数付加データP(P=x+M)を入力するデータ入力処理と、
前記補正乱数Mを入力する乱数入力処理と、
任意の乱数M´を生成する乱数生成処理と、
前記入力データxのべき乗xeを第1の項とし、
(1)前記乱数入力部が入力した補正乱数Mと、(2)前記データ入力部が入力した乱数付加データPと、(3)前記入力データxと前記補正乱数Mとが乗算された乗算データMxとの少なくともいずれかで表現される式を乗算回数が減るように変形した式を第2の項とし、
前記データ入力部が入力した乱数付加データPのガロア拡大体上のべき乗Peを、前記第1の項と前記第2の項とを加算する第1の多項式に展開し、
展開した第1の多項式と前記乱数付加データPのべき乗Peとを等式の左右の辺としたときの両辺に前記乱数生成処理が生成した任意の乱数M´を加算し、
前記等式を前記入力データxのべき乗xeと前記乱数生成処理が生成した任意の乱数M´とを加算した出力データFeを一方の辺とする式に変形したときの他方の辺となる第2の多項式に基づいて、
前記出力データFeを演算して出力するべき乗演算処理とをコンピュータに実行させることを特徴とする非線形演算プログラム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2005014965A JP2006201641A (ja) | 2005-01-24 | 2005-01-24 | 非線形演算装置及び暗号処理装置及び非線形演算方法及び非線形演算プログラム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2005014965A JP2006201641A (ja) | 2005-01-24 | 2005-01-24 | 非線形演算装置及び暗号処理装置及び非線形演算方法及び非線形演算プログラム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2006201641A true JP2006201641A (ja) | 2006-08-03 |
Family
ID=36959666
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2005014965A Pending JP2006201641A (ja) | 2005-01-24 | 2005-01-24 | 非線形演算装置及び暗号処理装置及び非線形演算方法及び非線形演算プログラム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2006201641A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2008090874A1 (ja) * | 2007-01-23 | 2008-07-31 | Kabushiki Kaisha Toshiba | Icカードおよびicカードにおける認証処理方法 |
| JP2022134466A (ja) * | 2021-03-03 | 2022-09-15 | Kddi株式会社 | 乗算装置、乗算方法及び乗算プログラム |
-
2005
- 2005-01-24 JP JP2005014965A patent/JP2006201641A/ja active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2008090874A1 (ja) * | 2007-01-23 | 2008-07-31 | Kabushiki Kaisha Toshiba | Icカードおよびicカードにおける認証処理方法 |
| JP2022134466A (ja) * | 2021-03-03 | 2022-09-15 | Kddi株式会社 | 乗算装置、乗算方法及び乗算プログラム |
| JP7402191B2 (ja) | 2021-03-03 | 2023-12-20 | Kddi株式会社 | 乗算装置、乗算方法及び乗算プログラム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Coron et al. | Conversion from arithmetic to boolean masking with logarithmic complexity | |
| US7639808B2 (en) | Elliptic curve cryptosystem apparatus, elliptic curve cryptosystem method, elliptic curve cryptosystem program and computer readable recording medium storing the elliptic curve cryptosystem program | |
| KR100891323B1 (ko) | 이진 필드 ecc에서 랜덤 포인트 표현을 이용하여 파워해독의 복잡도를 증가시키기 위한 암호화 방법 및 장치 | |
| KR101154695B1 (ko) | 암호 처리 연산 장치 | |
| Coron et al. | Faster evaluation of sboxes via common shares | |
| JP2020520614A (ja) | サイドチャネル攻撃に安全な演算を実行するための装置および方法 | |
| JP2019515353A (ja) | 暗号化べき乗アルゴリズムへのセーフ−エラーフォールトインジェクション攻撃に対する対策 | |
| JP4668931B2 (ja) | 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置 | |
| JP5182364B2 (ja) | サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法 | |
| Oliveira et al. | Fast point multiplication algorithms for binary elliptic curves with and without precomputation | |
| Liu et al. | Efficient and side-channel resistant RSA implementation for 8-bit AVR microcontrollers | |
| Jalali et al. | ARMv8 SIKE: Optimized supersingular isogeny key encapsulation on ARMv8 processors | |
| JP2020520613A (ja) | サイドチャネル攻撃に安全な演算を実行するための装置および方法 | |
| US9722773B2 (en) | Method of determining a representation of a product of a first element and a second element of a finite set, method of evaluating a function applied to an element of a finite set and associated devices | |
| KR101990861B1 (ko) | 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치 | |
| JP2021502743A (ja) | 計算デバイス及び方法 | |
| Goudarzi et al. | Lattice attacks against elliptic-curve signatures with blinded scalar multiplication | |
| US8538017B2 (en) | Encryption device | |
| US20090136025A1 (en) | Method for scalarly multiplying points on an elliptic curve | |
| Vadnala et al. | Faster mask conversion with lookup tables | |
| Dubeuf et al. | ECDSA passive attacks, leakage sources, and common design mistakes | |
| JP2006201641A (ja) | 非線形演算装置及び暗号処理装置及び非線形演算方法及び非線形演算プログラム | |
| JP5323196B2 (ja) | 演算装置、方法およびプログラム | |
| JPWO2005013243A1 (ja) | モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム | |
| JP2020520615A (ja) | サイドチャネル攻撃に安全な演算を実行するための装置および方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071112 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101102 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110301 |