JP2006203822A - 演算装置およびコンピュータプログラム - Google Patents

演算装置およびコンピュータプログラム Download PDF

Info

Publication number
JP2006203822A
JP2006203822A JP2005016131A JP2005016131A JP2006203822A JP 2006203822 A JP2006203822 A JP 2006203822A JP 2005016131 A JP2005016131 A JP 2005016131A JP 2005016131 A JP2005016131 A JP 2005016131A JP 2006203822 A JP2006203822 A JP 2006203822A
Authority
JP
Japan
Prior art keywords
memory
secret key
data
pointer
signature
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
JP2005016131A
Other languages
English (en)
Other versions
JP4727237B2 (ja
Inventor
Hiroaki Oguro
博昭 小黒
Nobuaki Umeda
伸明 梅田
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.)
NTT Data Group Corp
Original Assignee
NTT Data 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 NTT Data Corp filed Critical NTT Data Corp
Priority to JP2005016131A priority Critical patent/JP4727237B2/ja
Publication of JP2006203822A publication Critical patent/JP2006203822A/ja
Application granted granted Critical
Publication of JP4727237B2 publication Critical patent/JP4727237B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】メモリ上に連続して配置される多倍長整数に着目してメモリから秘密鍵情報の抽出を試みる攻撃に耐性を有することができる演算装置を提供する。
【解決手段】符号化部3は、入力される秘密鍵及び平文に対して符号変換、ハッシュ関数によるハッシュ処理、意味を持たないデータを付与してデータサイズを整えるパディング処理等を行い、連続する配列構造の多倍長整数のデータを出力する。多倍長演算部4−1は、符号化部3から入力される配列構造のデータを、本発明特有なデータ構造であるリスト構造のデータに変換してメモリ5に書込みを行う。データ構造変換部4−2は、メモリ5上に離散的に配置されているリスト構造のデータに対し、先頭要素のアドレスを用いて、先頭要素からポインタを順に追跡し、配列構造のデータに変換する。制御部2は、制御部2が配列構造に変換された署名を外部へ出力する。
【選択図】 図1

Description

本発明は、例えば、秘密鍵情報に対する攻撃に耐性を有することを可能とする演算装置およびコンピュータプログラムに関する。
従来、多くの暗号方式では、多倍長の整数を対象とした有限体上での演算が利用される。ここで、多倍長の整数とは、一般的なCPUの語長(32ビット等)を超える語長の整数、例えば、1024ビット長の整数をいう。このような暗号方式を計算機等に実装するには、多倍長演算装置が必要とされる。多倍長演算装置の多くは、多倍長整数を、CPUの語長で区切った整数の配列およびその配列長等の情報とを一まとめにした構造体として実装されることが多く、そのデータ構造を基にして、有限体上の四則演算、べき乗剰余演算、楕円スカラー倍演算などが構築され、それらを効率的に実現するための技術が多く提案されている
近年、これらの暗号装置の外部から、秘密鍵に基づく一連の処理の処理時間を計測したり、消費電力等を観測したりすることにより、秘密鍵情報を取得する攻撃(サイドチャネル攻撃)が注目され始め、これらの攻撃に対して耐性を持たせた暗号装置が提案されている(例えば特許文献1、特許文献2参照)。
特開2002−261753号公報 特開2002−268547号公報
ところで、さらに近年、サイドチャネル攻撃とは本質的に前提が異なる、さらに強力な攻撃として、何らかの手法で暗号装置が保有するメモリを監視することで秘密鍵を取得する攻撃(ホワイトボックス攻撃)が危惧されている。その攻撃手法の1つとして、メモリを常時監視し、秘密鍵に基づく一連の処理が行われる際にメモリ上に瞬間的に出現する秘密鍵情報の候補を捕捉・抽出し、得られた秘密鍵候補集合から全数試行により、真の秘密鍵を特定する攻撃がある。しかし、従来技術では、上記ホワイトボックス攻撃、すなわちメモリを監視して秘密鍵を特定する攻撃に対しては何ら対策が講じられていないという問題があった。
本発明は、このような事情を考慮してなされたものであり、その目的は、メモリ上に連続して配置される多倍長整数に着目してメモリから秘密鍵情報の抽出を試みる攻撃に耐性を有することができる演算装置およびコンピュータプログラムを提供することにある。
上述した課題を解決するために、本発明は、多倍長整数で構成される秘密鍵を離散的にメモリ上に配置する演算装置であって、多倍長整数で構成される秘密鍵を入力する手段と、前記秘密鍵を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、メモリ上に当該要素を配置する領域を確保する手段と、前記確保されたメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定する手段と、前記決定されたメモリ上の各要素の位置に基づいて、各要素のデータ本体及びポインタを、メモリに書き込む手段と、を備えることを特徴とする演算装置である。
本発明は、多倍長整数で構成される秘密鍵、平文、秘密鍵と平文の演算により得られる署名を離散的にメモリ上に配置する演算装置であって、多倍長整数で構成される秘密鍵及び平文を入力する手段と、前記秘密鍵、平文及び署名を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、前記メモリ上に当該要素を配置する領域をそれぞれ確保する手段と、前記確保されたそれぞれのメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定する手段と、前記決定されたメモリ上の各要素の位置に基づいて、秘密鍵及び平文の各要素のデータ本体及びポインタ、署名の各要素のポインタを、それぞれメモリに書き込む手段と、前記メモリ上に離散的に配置された秘密鍵と平文から署名を算出する手段と、前記決定されたメモリ上の各要素の位置に基づいて、算出された署名のデータ本体を、メモリに書き込む手段と、前記メモリ上に離散的に配置された署名の各要素を、前記ポインタを用いて順次メモリから読出し、連続的な配列構造のデータとして出力する手段と、を備えることを特徴とする演算装置である。
本発明は、多倍長整数で構成される秘密鍵、暗号文、秘密鍵と暗号文の演算により得られる復号文を離散的にメモリ上に配置する演算装置であって、多倍長整数で構成される秘密鍵及び暗号文を入力する手段と、前記秘密鍵、暗号文及び復号文を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、前記メモリ上に当該要素を配置する領域をそれぞれ確保する手段と、前記確保されたそれぞれのメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定する手段と、前記決定されたメモリ上の各要素の位置に基づいて、秘密鍵及び暗号文の各要素のデータ本体及びポインタ、復号文の各要素のポインタを、それぞれメモリに書き込む手段と、前記メモリ上に離散的に配置された秘密鍵と暗号文から復号文を算出する手段と、前記決定されたメモリ上の各要素の位置に基づいて、算出された復号文のデータ本体を、メモリに書き込む手段と、前記メモリ上に離散的に配置された復号文の各要素を、前記ポインタを用いて順次メモリから読出し、連続的な配列構造のデータとして出力する手段と、を備えることを特徴とする演算装置である。
本発明は、上記に記載の発明において、ランダムな値であるデータ本体と、各要素のリンク情報であるポインタの組からなる要素としてダミーデータを配置するよう、前記確保されたメモリ領域において、ダミーデータの各要素を配置する位置をランダムに決定する手段と、前記決定されたメモリ上のダミーデータの各要素の位置に基づいて、各要素のポインタをメモリに書き込む手段と、ダミーデータのデータ本体として、ランダムな値をメモリに書き込む手段と、
を備えることを特徴とする。
本発明は、多倍長整数で構成される秘密鍵を離散的にメモリ上に配置する演算装置のコンピュータを、多倍長整数で構成される秘密鍵を入力する手段、前記秘密鍵を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、メモリ上に当該要素を配置する領域を確保する手段、前記確保されたメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定する手段、前記決定されたメモリ上の各要素の位置に基づいて、各要素のデータ本体及びポインタを、前記メモリに書き込む手段、として機能させるためのコンピュータプログラムである。
本発明は、多倍長整数で構成される秘密鍵、平文、秘密鍵と平文の演算により得られる署名を離散的にメモリ上に配置する演算装置のコンピュータを、多倍長整数で構成される秘密鍵及び平文を入力する手段、前記秘密鍵、平文及び署名を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、前記メモリ上に当該要素を配置する領域をそれぞれ確保する手段、前記確保されたそれぞれのメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定する手段、前記決定されたメモリ上の各要素の位置に基づいて、秘密鍵及び平文の各要素のデータ本体及びポインタ、署名の各要素のポインタを、それぞれメモリに書き込む手段、前記メモリ上に離散的に配置された秘密鍵と平文から署名を算出する手段、前記決定されたメモリ上の各要素の位置に基づいて、算出された署名のデータ本体を、メモリに書き込む手段、前記メモリ上に離散的に配置された署名の各要素を、前記ポインタを用いて順次メモリから読出し、連続的な配列構造のデータとして出力する手段、として機能させるためのコンピュータプログラムである。
本発明は、多倍長整数で構成される秘密鍵、暗号文、秘密鍵と暗号文の演算により得られる復号文を離散的にメモリ上に配置する演算装置のコンピュータを、多倍長整数で構成される秘密鍵及び暗号文を入力する手段、前記秘密鍵、暗号文及び復号文を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、前記メモリ上に当該要素を配置する領域をそれぞれ確保する手段、前記確保されたそれぞれのメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定する手段、前記決定されたメモリ上の各要素の位置に基づいて、秘密鍵及び暗号文の各要素のデータ本体及びポインタ、復号文の各要素のポインタを、それぞれメモリに書き込む手段、前記メモリ上に離散的に配置された秘密鍵と暗号文から復号文を算出する手段、前記決定されたメモリ上の各要素の位置に基づいて、算出された復号文のデータ本体を、メモリに書き込む手段、前記メモリ上に離散的に配置された復号文の各要素を、前記ポインタを用いて順次メモリから読出し、連続的な配列構造のデータとして出力する手段、として機能させるためのコンピュータプログラムである。
本発明は、上記に記載の発明において、前記コンピュータを、さらにランダムな値であるデータ本体と、各要素のリンク情報であるポインタの組からなる要素としてダミーデータを配置するよう、前記確保されたメモリ領域において、ダミーデータの各要素を配置する位置をランダムに決定する手段、前記決定されたメモリ上のダミーデータの各要素の位置に基づいて、各要素のポインタをメモリに書き込む手段、ダミーデータのデータ本体として、ランダムな値をメモリに書き込む手段、として機能させるためコンピュータプログラムである。
この発明によれば、多倍長整数で構成される秘密鍵を入力し、秘密鍵を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、メモリ上に当該要素を配置する領域を確保する。確保されたメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定する。そして、決定されたメモリ上の各要素の位置に基づいて、各要素のデータ本体及びポインタを、メモリに書き込む構成とした。したがって、多倍長整数を表現する整数配列がなくなり、また、秘密鍵の構成要素がメモリ上で離散的に配置されているため、メモリ上の一定領域における個々の整数データを単に並べただけでは秘密鍵を再現することができないため、攻撃に耐性を有することができるという利点が得られる。
また、本発明によれば、多倍長整数で構成される秘密鍵及び平文を入力し、秘密鍵、平文及び署名を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、メモリ上に当該要素を配置する領域をそれぞれ確保する。次に、確保されたそれぞれのメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定し、決定されたメモリ上の各要素の位置に基づいて、秘密鍵及び平文の各要素のデータ本体及びポインタ、署名の各要素のポインタを、それぞれメモリに書き込む。また、メモリ上に離散的に配置された秘密鍵と平文から署名を算出し、決定されたメモリ上の各要素の位置に基づいて、算出された署名のデータ本体を、メモリに書き込む。また、さらに、メモリ上に離散的に配置された署名の各要素を、ポインタを用いて順次メモリから読出し、連続的な配列構造のデータとして出力する構成とした。したがって、多倍長整数を表現する整数配列がなくなり、また、秘密鍵、平文及び署名の構成要素がメモリ上で離散的に配置されているため、メモリ上の一定領域における個々の整数データを単に並べただけでは秘密鍵、平文、署名を再現することができないため、攻撃に耐性を有することができるという利点が得られる。
また、本発明によれば、多倍長整数で構成される秘密鍵及び暗号文を入力し、秘密鍵、暗号文及び復号文を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、メモリ上に当該要素を配置する領域をそれぞれ確保する。次に、確保されたそれぞれのメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定し、決定されたメモリ上の各要素の位置に基づいて、秘密鍵及び暗号文の各要素のデータ本体及びポインタ、復号文の各要素のポインタを、それぞれメモリ上の各要素の位置に書き込む。そして、メモリ上に離散的に配置された秘密鍵と暗号文から復号文を算出し、決定されたメモリ上の各要素の位置に基づいて、算出された復号文のデータ本体を、メモリに書き込む。また、メモリ上に離散的に配置された復号文の各要素を、ポインタを用いて順次メモリから読出し、連続的な配列構造のデータとして出力する構成とした。したがって、多倍長整数を表現する整数配列がなくなり、また、秘密鍵、暗号文及び復号文の構成要素がメモリ上で離散的に配置されているため、メモリ上の一定領域における個々の整数データを単に並べただけでは秘密鍵、暗号文及び復号文を再現することができないため、攻撃に耐性を有することができるという利点が得られる。
また、本発明によれば、ランダムな値であるデータ本体と、各要素のリンク情報であるポインタの組からなる要素としてダミーデータを配置するよう、確保されたメモリ領域において、ダミーデータの各要素を配置する位置をランダムに決定し、決定されたメモリ上のダミーデータの各要素の位置に基づいて、各要素のポインタをメモリに書き込む。そして、ダミーデータのデータ本体として、ランダムな値をメモリに書き込む構成とした。したがって、データの再現がより困難になり、攻撃に耐性を有することができるという利点が得られる。
本発明は、上記したように、メモリ上に配置される秘密鍵を特定されないようにすることを目的とする。秘密鍵は、平文に秘密鍵を作用させて署名を生成するいわゆるデジタル署名を生成する処理、或いは、暗号文に秘密鍵を作用させて、暗号化された文章を復号する処理で用いられるが、以降、本件明細書においては、デジタル署名を生成する署名処理装置の処理について説明を行う。
以下、本発明の一実施形態によるデジタル署名処理を、図面を参照して説明する。
図1は、本発明の実施形態によるデジタル署名処理を示すブロック図である。図において、署名処理装置1は、制御部2、符号化部3、署名演算部4からなる。また、外部装置としてメモリ5を備えている。制御部2は、署名処理装置1の全体的な制御および外部(メモリ5等)との入出力の制御を行う。符号化部3は、文字列データである平文及び秘密鍵を入力し、符号変換、ハッシュ関数によるハッシュ処理、意味を持たないデータを付与してデータサイズを整えるパディング処理等を行い、連続する配列構造の多倍長整数のデータ(以後、配列構造のデータ)として出力する。
署名演算部4は、多倍長演算部4−1およびデータ構造変換部4−2からなり、秘密鍵および平文を入力とし、RSA暗号、RSA署名、DSA署名などであれば、べき乗剰余演算を行い、楕円曲線暗号、ECDSA署名などであれば、楕円スカラー倍演算を行う。なお、べき乗剰余演算や楕円スカラー倍演算は、共に、多倍長整数の四則演算の組み合わせからなる。
多倍長演算部4−1は、上記符号化部3から入力される配列構造のデータを、本発明特有なデータ構造であるリスト構造のデータに変換してメモリ5に書込みを行う。また、メモリ5上にあるリスト構造のデータに対して、加算、減算、乗算、除算等の各種演算を行い、演算結果をリスト構造のデータとしてメモリに書き込む。データ構造変換部4−2は、メモリ5上に離散的に配置されているリスト構造のデータに対し、図示しない先頭アドレス管理部に格納されている先頭要素のアドレスを用いて、先頭要素からポインタを順に追跡し、配列構造のデータに変換する。データ構造変換部4−2は、演算結果である署名を相手側に送信する場合等において、演算結果をメモリ5から読み出す際に用いられる。
すなわち、本実施形態では、メモリ5上に配置するデータである秘密鍵は、多倍長演算部4−1により、離散的なリスト構造として配置され、また演算結果である署名においても、リスト構造で配置されることになる。このように構成することによって、従来は、固定長の連続する配列構造のデータに着目することで秘密鍵を容易に補足することができたが、本実施形態では、メモリ5上ではリスト構造により、離散的にかつランダムな順序で配置されるため、メモリ5を監視して秘密鍵を抽出することを困難にしている。
さらに、説明すれば、従来技術では、上記攻撃に対して脆弱である理由の1つに、多倍長演算装置に十分な耐タンパー性が具備されていないことがある。従来の多倍長演算装置では、多倍長整数を連続する配列構造として保持しており、現在、よく用いられる1024ビット長整数は、固有の配列長(16ビットのワード長で64語、32ビットのワード長で32語)を示すため、語長に着目してメモリから秘密鍵を抽出する攻撃に対して良い手がかりを与えてしまう。また、有限体上の四則演算を効率的に実現するため、連続する配列構造に一定の順序(昇順または降順)で、語長で区切られた整数を格納していることから、捕捉された後にそれが秘密鍵であるか否かを特定することも容易にしている(昇順または降順と見当をつけて高々2回の検証で特定できる)。
本発明では、多倍長演算部4−1が扱う多倍長整数を表現するデータ構造として、整数配列を廃止し、リスト構造を用いている。本発明におけるリスト構造とは、列を表現するデータ構造の1つであり、データ本体と次のデータを示すポインタから構成される要素の集合で構成される(詳細は後述する)。また、リスト構造の各要素がメモリ上に連続的に配置されるのでは、容易に解析されてしまうため、本発明のリスト構造では、これらの要素がメモリ内で連続せず離散的に配置されるようにしている。また、必要に応じて、実際のデータと同様の構成からなるダミーを同時に配置することで、解析をより困難にさせている。
さらに、従来の配列表現による四則演算を、リスト構造上で実現することで四則演算等を実現する。具体的には、従来、配列で添字による要素参照を利用している処理を、本実施形態では、リスト構造において、先頭からポインタを順に辿ることで参照し、さらに双方向リストでは逆方向ポインタも利用しながら要素を参照する。
ここで、本実施形態による多倍長演算部4−1による四則演算方法について説明する。図2は、本実施形態による多倍長演算部4−1による四則演算方法を説明するための概念図である。従来技術による四則演算(加算)では、添字によって各要素へランダムアクセスが可能であるので、単純に添字で特定の要素(図示の例では、a[1]、b[1])を参照して加算(図示の例では、c[1]=a[1]+b[1])することが可能である。これに対して、本実施形態では、a[0]からポインタを参照してリンクを辿ってa[1]を取得し、b[0]からポインタを参照してリンクを辿ってb[1]を取得して加算(図示の例では、c[1]=a[1]+b[1])することになる。
したがって、本実施形態では、図示から明らかなようにステップ数が増加して演算速度が低下するが、安全性は向上する。
また、本実施形態においては、多倍長演算部4−1における演算がメモリ5上で行われるが、この演算は全てリスト構造で行われる。このように演算においても常にリスト構造とすることで、解析を困難にさせている。
次に、上述した実施形態の署名処理装置1の動作について説明する。ここで、図3は、本実施形態の署名処理装置1の動作を説明するためのフローチャートである。文字列で構成されている平文が符号化部3に入力され、符号化部3において、符号変換、ハッシュ処理、パディング処理が行われ、多倍長整数に符号化される。この段階での多倍長整数は、連続する配列構造となっている。また、平文同様、秘密鍵についても符号化部において、連続する配列構造の多倍長整数に変換される(ステップS10)。なお、入力として多倍長整数のデータが入力される場合は、この符号化部3での動作は必要ない。
次に、配列構造の整数となっている平文及び秘密鍵に対し、多倍長演算部4−1において、リスト構造への変換が行われ、メモリ5に配置される。この構成により配列構造であった平文及び秘密鍵はメモリ5上では離散的なリスト構造で配置される。また、平文及び秘密鍵による演算によって得られる署名を離散的なリスト構造でメモリ上に配置するために、当該署名を配置するためのリスト構造も配置する。このときには署名のデータ自体は入っておらず、リスト構造のみ(リンク情報であるポインタのみ)が配置される(ステップS11)。
この多倍長演算部4−1による離散化処理についての詳細は後述する。そして、リスト構造となっている平文及び秘密鍵を多倍長演算部4−1によって演算し、演算結果である署名を求め、署名をメモリ5上に離散的なリスト構造で配置する。つまり、先のステップで予め離散的に配置されたリスト構造に、演算結果である署名のデータ(データ本体)を代入する(ステップS12)。最後に、メモリ5上にリスト構造で配置された署名を、メモリから読み出す際には、データ構造変換部4−2で、連続する配列構造に変換する(ステップS14)。
ここで、図4は、データ構造変換部4−2の動作について説明するための概念図である。データ構造変換部4−2では、メモリ5上にリスト構造で表現されている多倍長整数を、そのポインタを参照することで、連続する配列構造に変換する。図示の例では、まず、a[0]を先頭に配置し、次いで、ポインタを参照することで、a[1]を配置し、同様にポインタを参照しながら、a[2]、a[3]、…と順次配置していく。次に、制御部2が配列構造に変換された暗号演算結果(すなわち署名)を外部へ出力する(ステップS16)。
次に、上述した多倍長演算部4−1の構成例について説明する。ここで、図5は、本実施形態による署名処理装置1の多倍長演算部4−1の一構成例を示すブロック図である。
図5において、初期化部10は、メモリ5上に領域を確保、すなわち領域を割り当てる。本発明においては、連続ではなく離散的に配置することを目的とすること、また後で説明するダミーを同時に配置するため、配置する多倍長整数より大きい領域を確保する必要がある。一例としては、配置する多倍長整数の3倍の領域を確保する。領域は、図6に示されるように、データの値が格納される実データ(以下、データ本体)と、データ同士のポインタとの組で構成される要素の集合となっている。破棄部12は、初期化部10で確保した領域において、実データ或いはダミーデータが配置されなかった領域を開放する。代入部13は、各領域の要素におけるデータ本体にデータを代入する(コピーする)。
算術演算部14は、多倍長整数の加算、減算、乗算、除算を行う。論理演算部15は、多倍長整数に対して、ビット単位のシフト、論理和、論理積、排他的論理和などを求める。比較部16は、多倍長整数同士の大小を比較する。これら算術演算部14、論理演算部15、比較部16は従来から行われている処理を行う。多倍長整数データ構造生成部17は、本発明に特有の構成であり、符号化部3で符号化された配列構造の整数である平文及び秘密鍵、演算により求められる署名を、離散的なリスト構造としてメモリ5に配置するための処理を行う。
ここで、図6は、本実施形態の署名処理装置のメモリ5上におけるリスト構造を示す概念図である。図6(a)は、各要素がデータ本体と、次の要素を示すポインタとから構成されている単方向リストの構造を示している。また、図6(b)には、各要素がデータ本体と、次の要素を示すポインタ及び前の要素を示すポインタとから構成される双方向リストの構造を示している。本件発明は、どちらの構造であっても実施可能であるが、以後単方向リストの構造を用いて説明する。
次に、上述した多倍長整数データ構造生成部17の動作について説明する。当該処理は前述のフローチャートのステップS11に相当する構成であり、平文及び秘密鍵、署名を格納するための要素が配置されることになる。
最初に、初期化部10を呼び出し、図8(a)に示すように、平文及び秘密鍵、署名をメモリ5上にデータ本体と各要素のリンク情報であるポインタの組からなる要素として配置するための領域を確保する。図8には、便宜上にメモリ上でのアドレス(01〜24)を付している。ここでは、アドレス01〜02が一つの要素を構成している(図8の太線で示される領域が一つの要素を示す)。上述したように確保する領域は配置する整数のデータより大きい領域を確保する必要がある。本実施形態では、実際のデータのサイズに加え、後に説明するダミーデータ用の領域及び、離散化させるための領域を加えるため、整数のデータの3倍程度の領域を確保する(ステップS20)。この領域は、連続した領域であっても、不連続な領域でもよいが、ここでは連続した領域として12個の領域を確保した例を示す。
次に、乱数生成部11により、生成された乱数を用いて、図8(b)に示すように、多倍長整数の各要素を格納する位置をランダムに決定して、それぞれの要素のポインタ部分に、次の要素のメモリ上での位置(リンク)を書き込むことでリンクが形成される(ステップS22)。
図8の例において、各要素の先頭アドレスは必ず奇数となるので、この例では、乱数生成部11では、01〜23の奇数がランダムに(かつ重複なく)生成されることになる。本実施形態は、a[0]〜a[3]の4つの要素で表される秘密鍵を離散的に配置する例とするため、4つの奇数がランダムに生成される。この例では、05、21、13、17が生成された例である。乱数によって要素の位置が決定され、それぞれの要素のポインタ部分には、次の要素のメモリ上での位置が書き込まれる。今回の例では、05に配置されるa[0]のポインタとしては、次の要素であるa[1]のメモリ上のアドレスである21が書き込まれる。同様にa[1]、a[2]のポインタには、それぞれ13、17が書き込まれる。最後の要素であるa[3]のポインタはnullとなる。ポインタが書き込まれると、それぞれの要素のデータ本体が書き込まれる(ステップS23)。
この例では、図8(b)に示すように、05、21、13、17で示されるアドレスにそれぞれの要素のデータ本体が書き込まれる。今回の説明では、先にポインタを全て書込み、その後にデータ本体を全て書き込む例を示したが、要素ごとに書き込んでもよいし、データ本体から書き込んでもよい。しかしながら、署名を格納する場合には、演算を行うより先にデータ本体を書き込むことはできないため、先にポインタを全て書き込むことになる。
次に、ダミーデータの配置を行う。ダミーデータは実際のデータ(例えば秘密鍵)と同じサイズのデータとすることが、セキュリティ上は望ましい。したがって、上記のステップS22とほぼ同様の動作を行うことで、ダミーデータの配置が可能である。
この例では、データと同様4つの要素からなるダミーデータを配置するために、4つの奇数15、11、01、19がランダムに生成され、同様に、ポインタに次の要素のメモリ上のアドレスが書き込まれる(ステップS24)。
さらに、ダミーデータとしてデータ本体を書き込むために、乱数生成部11で乱数を発生させ、当該乱数をダミーデータの各要素のデータ本体として書き込む。この例では、図8(c)に示されるように、メモリ上の15、11、01、19で示されるアドレスに、それぞれ乱数がデータ本体として書き込まれる(ステップS26)。そして、実際のデータ或いはダミーデータが書き込まれなかった要素に関して、破棄部12によって当該領域のメモリを解放する(ステップS28)。
この例では、図8(d)で示されるようにメモリ上の03〜04、07〜10、23〜24が解放される。この例で示したように、大きな領域を確保して、そこにランダムに配置して、空いた領域を開放することで、連続した領域を確保して処理を行った場合においても、離散的な要素の配置を行うことが可能となる。
最後に、実際のデータ及びダミーデータの先頭要素のアドレスを図示しない先頭アドレス管理部に出力する(ステップS30)。この例では、実際のデータの先頭アドレスとして05が、ダミーデータの先頭アドレスとして15が出力される。先頭要素のアドレスは、データ構造変換部4−2でデータ構造を変換する際に用いられる。また、先頭からリンクを追跡して、メモリ上でリンク付けられた全要素の領域を解放するときにも当該先頭要素のアドレスは用いられる。上記では、ダミーデータの個数が1個の場合を説明したが、ダミーデータを複数個配置する場合は、ダミーの個数分だけ上記を繰り返し、全てのダミーデータの先頭アドレスを先頭アドレス管理部に出力する。
以上のような動作により、多倍長整数データを連続された配列構造から離散化されたリスト構造に変換してメモリ5に配置することができる。
上述した実施形態によれば、従来技術に特有な連続された配列構造ではなく、離散化されたリスト構造としてメモリ5上に配置されるため、整数配列に着目してメモリから秘密鍵情報の抽出を試みる攻撃が困難になる。また、リストの構成要素がメモリ上で離散的に配置されているため、メモリ上の一定領域における個々の整数データを単に並べただけでは秘密鍵を再現することができず、再現には組み合わせ的な作業が必要となるため、攻撃を困難にすることができる。
また、上述の実施形態では、平文に秘密鍵を作用させて署名を生成する例としたが、平文に変えて暗号文とすることで、暗号文に秘密鍵を作用させて復号鍵を生成する場合においても適用できることは言うまでもない。
なお、上述した実施形態においては、制御部2、署名演算部4などは、コンピュータシステム内で実行される。そして、上述した制御部2、署名演算部4による一連の処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。すなわち、制御部2、署名演算部4における、各処理手段、処理部は、CPU等の中央演算処理装置がROMやRAM等の主記憶装置に上記プログラムを読み出して、情報の加工・演算処理を実行することにより、実現されるものである。
ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
本発明の実施形態による署名処理装置を示すブロック図である。 本実施形態による多倍長演算部4−1による四則演算方法を説明するための概念図である。 本実施形態の署名処理装置1の動作(デジタル署名)を説明するためのフローチャートである。 本実施形態による署名処理装置1のデータ構造変換部4−2の動作について説明するための概念図である。 本実施形態による署名処理装置1の多倍長演算部4−1の一構成例を示すブロック図である。 本実施形態の署名処理装置で用いる多倍長整数データの構造を示す概念図である。 多倍長整数データ構造生成部17の動作を説明するためのフローチャートである。 多倍長整数データ構造生成部17の動作を説明するための概念図である。
符号の説明
1 署名処理装置
2 制御部
3 符号化部(符号化手段)
4 署名演算部
4−1 多倍長演算部(多倍長整数配置手段、暗号化手段)
4−2 データ構造変換部(データ構造変換手段)
5 メモリ
10 初期化部
11 乱数生成部
12 破棄部
13 代入部
14 算術演算部
15 論理演算部
16 比較部
17 多倍長整数データ構造生成部(多倍長整数配置手段、ダミー要素配置手段)

Claims (8)

  1. 多倍長整数で構成される秘密鍵を離散的にメモリ上に配置する演算装置であって、
    多倍長整数で構成される秘密鍵を入力する手段と、
    前記秘密鍵を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、メモリ上に当該要素を配置する領域を確保する手段と、
    前記確保されたメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定する手段と、
    前記決定されたメモリ上の各要素の位置に基づいて、各要素のデータ本体及びポインタを、メモリに書き込む手段と、
    を備えることを特徴とする演算装置。
  2. 多倍長整数で構成される秘密鍵、平文、秘密鍵と平文の演算により得られる署名を離散的にメモリ上に配置する演算装置であって、
    多倍長整数で構成される秘密鍵及び平文を入力する手段と、
    前記秘密鍵、平文及び署名を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、前記メモリ上に当該要素を配置する領域をそれぞれ確保する手段と、
    前記確保されたそれぞれのメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定する手段と、
    前記決定されたメモリ上の各要素の位置に基づいて、秘密鍵及び平文の各要素のデータ本体及びポインタ、署名の各要素のポインタを、それぞれメモリに書き込む手段と、
    前記メモリ上に離散的に配置された秘密鍵と平文から署名を算出する手段と、
    前記決定されたメモリ上の各要素の位置に基づいて、算出された署名のデータ本体を、メモリに書き込む手段と、
    前記メモリ上に離散的に配置された署名の各要素を、前記ポインタを用いて順次メモリから読出し、連続的な配列構造のデータとして出力する手段と、
    を備えることを特徴とする演算装置。
  3. 多倍長整数で構成される秘密鍵、暗号文、秘密鍵と暗号文の演算により得られる復号文を離散的にメモリ上に配置する演算装置であって、
    多倍長整数で構成される秘密鍵及び暗号文を入力する手段と、
    前記秘密鍵、暗号文及び復号文を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、前記メモリ上に当該要素を配置する領域をそれぞれ確保する手段と、
    前記確保されたそれぞれのメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定する手段と、
    前記決定されたメモリ上の各要素の位置に基づいて、秘密鍵及び暗号文の各要素のデータ本体及びポインタ、復号文の各要素のポインタを、それぞれメモリに書き込む手段と、
    前記メモリ上に離散的に配置された秘密鍵と暗号文から復号文を算出する手段と、
    前記決定されたメモリ上の各要素の位置に基づいて、算出された復号文のデータ本体を、メモリに書き込む手段と、
    前記メモリ上に離散的に配置された復号文の各要素を、前記ポインタを用いて順次メモリから読出し、連続的な配列構造のデータとして出力する手段と、
    を備えることを特徴とする演算装置。
  4. ランダムな値であるデータ本体と、各要素のリンク情報であるポインタの組からなる要素としてダミーデータを配置するよう、前記確保されたメモリ領域において、ダミーデータの各要素を配置する位置をランダムに決定する手段と、
    前記決定されたメモリ上のダミーデータの各要素の位置に基づいて、各要素のポインタをメモリに書き込む手段と、
    ダミーデータのデータ本体として、ランダムな値をメモリに書き込む手段と、
    を備えることを特徴とする前記請求項1から3のいずれか1つに記載の演算装置。
  5. 多倍長整数で構成される秘密鍵を離散的にメモリ上に配置する演算装置のコンピュータを、
    多倍長整数で構成される秘密鍵を入力する手段、
    前記秘密鍵を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、メモリ上に当該要素を配置する領域を確保する手段、
    前記確保されたメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定する手段、
    前記決定されたメモリ上の各要素の位置に基づいて、各要素のデータ本体及びポインタを、前記メモリに書き込む手段、
    として機能させるためのコンピュータプログラム。
  6. 多倍長整数で構成される秘密鍵、平文、秘密鍵と平文の演算により得られる署名を離散的にメモリ上に配置する演算装置のコンピュータを、
    多倍長整数で構成される秘密鍵及び平文を入力する手段、
    前記秘密鍵、平文及び署名を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、前記メモリ上に当該要素を配置する領域をそれぞれ確保する手段、
    前記確保されたそれぞれのメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定する手段、
    前記決定されたメモリ上の各要素の位置に基づいて、秘密鍵及び平文の各要素のデータ本体及びポインタ、署名の各要素のポインタを、それぞれメモリに書き込む手段、
    前記メモリ上に離散的に配置された秘密鍵と平文から署名を算出する手段、
    前記決定されたメモリ上の各要素の位置に基づいて、算出された署名のデータ本体を、メモリに書き込む手段、
    前記メモリ上に離散的に配置された署名の各要素を、前記ポインタを用いて順次メモリから読出し、連続的な配列構造のデータとして出力する手段、
    として機能させるためのコンピュータプログラム。
  7. 多倍長整数で構成される秘密鍵、暗号文、秘密鍵と暗号文の演算により得られる復号文を離散的にメモリ上に配置する演算装置のコンピュータを、
    多倍長整数で構成される秘密鍵及び暗号文を入力する手段、
    前記秘密鍵、暗号文及び復号文を、データ本体と各要素のリンク情報であるポインタの組からなる要素として配置するよう、前記メモリ上に当該要素を配置する領域をそれぞれ確保する手段、
    前記確保されたそれぞれのメモリ上の領域において、多倍長整数の各要素を配置する位置をランダムに決定する手段、
    前記決定されたメモリ上の各要素の位置に基づいて、秘密鍵及び暗号文の各要素のデータ本体及びポインタ、復号文の各要素のポインタを、それぞれメモリに書き込む手段、
    前記メモリ上に離散的に配置された秘密鍵と暗号文から復号文を算出する手段、
    前記決定されたメモリ上の各要素の位置に基づいて、算出された復号文のデータ本体を、メモリに書き込む手段、
    前記メモリ上に離散的に配置された復号文の各要素を、前記ポインタを用いて順次メモリから読出し、連続的な配列構造のデータとして出力する手段、
    として機能させるためのコンピュータプログラム。
  8. 前記コンピュータを、さらに
    ランダムな値であるデータ本体と、各要素のリンク情報であるポインタの組からなる要素としてダミーデータを配置するよう、前記確保されたメモリ領域において、ダミーデータの各要素を配置する位置をランダムに決定する手段、
    前記決定されたメモリ上のダミーデータの各要素の位置に基づいて、各要素のポインタをメモリに書き込む手段、
    ダミーデータのデータ本体として、ランダムな値をメモリに書き込む手段、
    として機能させるための請求項5から7のいずれか1つに記載のコンピュータプログラム。

JP2005016131A 2005-01-24 2005-01-24 演算装置およびコンピュータプログラム Active JP4727237B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005016131A JP4727237B2 (ja) 2005-01-24 2005-01-24 演算装置およびコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005016131A JP4727237B2 (ja) 2005-01-24 2005-01-24 演算装置およびコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2006203822A true JP2006203822A (ja) 2006-08-03
JP4727237B2 JP4727237B2 (ja) 2011-07-20

Family

ID=36961389

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005016131A Active JP4727237B2 (ja) 2005-01-24 2005-01-24 演算装置およびコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP4727237B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013156798A (ja) * 2012-01-30 2013-08-15 Kddi Corp 記憶装置、アクセスパターンの秘匿方法およびプログラム

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63248240A (ja) * 1987-04-03 1988-10-14 Canon Inc 符号化装置
JPH0488736A (ja) * 1990-07-31 1992-03-23 Matsushita Electric Ind Co Ltd データ伝送方式
JPH0514544A (ja) * 1991-06-28 1993-01-22 Ricoh Co Ltd 通信装置
JPH0744451A (ja) * 1993-08-03 1995-02-14 Casio Comput Co Ltd データ記憶装置
JPH07140896A (ja) * 1993-11-19 1995-06-02 Hitachi Ltd ファイル暗号方法及びその装置
JPH0918473A (ja) * 1995-06-29 1997-01-17 Mitsubishi Electric Corp データ伝送装置
JPH11212873A (ja) * 1998-01-27 1999-08-06 Seiko Epson Corp コンピューターシステムの操作方法
JP2002175211A (ja) * 2000-12-07 2002-06-21 Sharp Corp データ管理システムおよびデータ管理方法
JP2002342145A (ja) * 2001-05-17 2002-11-29 Yoshinori Okamoto 電磁的記録の認証システム、および、プログラム
JP2003143131A (ja) * 2001-11-06 2003-05-16 Toshiba Corp 電子情報管理装置、携帯情報端末装置、管理サーバ装置及びプログラム
US20030110382A1 (en) * 2001-12-12 2003-06-12 David Leporini Processing data
JP2004295176A (ja) * 2003-03-25 2004-10-21 Kobo Chi No Takumi:Kk データ管理方法とそのシステム、及びic記憶媒体

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63248240A (ja) * 1987-04-03 1988-10-14 Canon Inc 符号化装置
JPH0488736A (ja) * 1990-07-31 1992-03-23 Matsushita Electric Ind Co Ltd データ伝送方式
JPH0514544A (ja) * 1991-06-28 1993-01-22 Ricoh Co Ltd 通信装置
JPH0744451A (ja) * 1993-08-03 1995-02-14 Casio Comput Co Ltd データ記憶装置
JPH07140896A (ja) * 1993-11-19 1995-06-02 Hitachi Ltd ファイル暗号方法及びその装置
JPH0918473A (ja) * 1995-06-29 1997-01-17 Mitsubishi Electric Corp データ伝送装置
JPH11212873A (ja) * 1998-01-27 1999-08-06 Seiko Epson Corp コンピューターシステムの操作方法
JP2002175211A (ja) * 2000-12-07 2002-06-21 Sharp Corp データ管理システムおよびデータ管理方法
JP2002342145A (ja) * 2001-05-17 2002-11-29 Yoshinori Okamoto 電磁的記録の認証システム、および、プログラム
JP2003143131A (ja) * 2001-11-06 2003-05-16 Toshiba Corp 電子情報管理装置、携帯情報端末装置、管理サーバ装置及びプログラム
US20030110382A1 (en) * 2001-12-12 2003-06-12 David Leporini Processing data
JP2004295176A (ja) * 2003-03-25 2004-10-21 Kobo Chi No Takumi:Kk データ管理方法とそのシステム、及びic記憶媒体

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013156798A (ja) * 2012-01-30 2013-08-15 Kddi Corp 記憶装置、アクセスパターンの秘匿方法およびプログラム

Also Published As

Publication number Publication date
JP4727237B2 (ja) 2011-07-20

Similar Documents

Publication Publication Date Title
JP6058237B1 (ja) 暗号文変換装置、暗号文変換プログラム及び暗号文変換方法
US8935539B2 (en) System and method for revising boolean and arithmetic operations
US8479018B2 (en) System for making program difficult to read, device for making program difficult to read, and method for making program difficult to read
WO2019130528A1 (ja) 変換鍵生成装置、暗号文変換装置、秘匿情報処理システム、変換鍵生成方法、変換鍵生成プログラム、暗号文変換方法及び暗号文変換プログラム
KR20060134992A (ko) 정수를 가산하는 컴퓨터 시스템
CN1269088C (zh) 密钥生成器、加密/解密设备和密钥生成方法
KR20180110550A (ko) 부채널 분석 방지를 위한 화이트박스 암호 방법 및 장치
KR20070052233A (ko) 기밀정보처리방법, 기밀정보처리장치, 및 컨텐츠데이터재생장치
CN111984985A (zh) 一种基于fpga硬件系统的hdl源码加密方法
EP3483867B1 (en) System, device, method, and program for indexing a secret-shared array with secure multiparty computations
US20050249348A1 (en) Data encryption/decryption method, device, and program
JP4727237B2 (ja) 演算装置およびコンピュータプログラム
KR101440680B1 (ko) 중국인 나머지 정리에 기반한 준동형 암복호화 방법 및 이를 이용한 장치
JP7317261B2 (ja) 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム
JP2005202757A (ja) 擬似乱数生成装置及びプログラム
CN110071927B (zh) 一种信息加密方法、系统及相关组件
KR100564599B1 (ko) 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
JP3606418B2 (ja) 乱数生成装置
JP6203387B2 (ja) 暗号装置及び記憶システム及び復号装置及び暗号方法及び復号方法及び暗号プログラム及び復号プログラム
RU2188513C2 (ru) Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки
WO2021130958A1 (ja) 最終べき計算装置、ペアリング演算装置、暗号処理装置、最終べき計算方法及び最終べき計算プログラム
ES2293665T3 (es) Metodo para la conversion criptografica de bloques de entrada de l bits de informacion de datos digitales en bloques de salida de l bits.
JP4611643B2 (ja) 個別鍵生成装置
JP2015069192A (ja) 情報処理装置、暗号化方法
JP4990843B2 (ja) 暗号演算装置、その方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080104

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100831

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101029

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110413

R150 Certificate of patent or registration of utility model

Ref document number: 4727237

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140422

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250