(57)【要約】【課題】回路規模が小さくスケーラブルなｗ−ＮＡＦ変換装置を提供する。【解決手段】２進表現された整数をｗ−ＮＡＦ表現された冗長２進表現に変換するＮＡＦ変換装置であって、前記２進表現された整数を下位から１ビットずつ受け付ける受付手段と、１ビットで表現される状態の値を記憶する記憶手段と、ｗ−１ビットで表現される状態の値を記憶するシフトレジスタと、前記受付手段が受け付けた１ビットの値と、前記記憶手段の状態の値と、前記ｗ−１ビットのシフトレジスタの状態の値を参照し、次の時刻における前記記憶手段の状態と前記ｗ−１ビットのシフトレジスタの状態とを決定し、現時刻におけるｗビットのパラレル出力を決定する更新手段と、を具備する。【選択図】図１
2010165173.tif 000002
【特許請求の範囲】
【請求項１】
２進表現された整数をｗ−ＮＡＦ表現された冗長２進表現に変換するＮＡＦ変換装置であって、
前記２進表現された整数を下位から１ビットずつ受け付ける受付手段と、
１ビットで表現される状態の値を記憶する記憶手段と、
ｗ−１ビットで表現される状態の値を記憶するシフトレジスタと、
前記受付手段が受け付けた１ビットの値と、前記記憶手段の状態の値と、前記ｗ−１ビットのシフトレジスタの状態の値を参照し、次の時刻における前記記憶手段の状態と前記ｗ−１ビットのシフトレジスタの状態とを決定し、現時刻におけるｗビットのパラレル出力を決定する更新手段と、
を具備することを特徴とするＮＡＦ変換装置。
【請求項２】
前記更新手段は、
前記次の時刻における前記記憶手段の状態を、
前記現時刻における前記ｗ−１ビットのシフトレジスタの最下位ビットが１のときは、前記シリアル入力から入力された１ビットと前記現時刻の記憶手段の状態との和の下位１ビットとし、前記現時刻における前記ｗ−１ビットのシフトレジスタの最上位ビットが０のときは、前記和の上位１ビットとし、
前記次の時刻における前記ｗ−１ビットのシフトレジスタの状態を、
前記現時刻における前記ｗ−１ビットのシフトレジスタの最下位ビットが１のときは、ｗ−１ビットの０とし、前記現時刻における前記ｗ−１ビットのシフトレジスタの最下位ビットが０のときは、前記現時刻における該シフトレジスタを下位に向けて１ビットシフトし、該和の下位ビットを最上位ビットとしたｗ−１ビットの値とし、
前記現時刻におけるパラレル出力を、
前記和の下位ビットを最上位ビットとし、下位ｗ−１ビットが前記ｗ−１ビットのシフトレジスタの値とすることを特徴とする請求項１記載のＮＡＦ変換装置。
【請求項３】
前記ｗ−１シフトレジスタの最下位ビットに代えて、下位（ｗ−ｋ）ビットを使い、該パラレル出力の上位ｋビットを出力とすることを特徴とする請求項１又は２記載のＮＡＦ変換装置。
【請求項４】
ＣＰＵパワーおよびメモリ量を含む使用可能なリソースに応じた小さな値に前記ｋを設定することを特徴とする請求項３記載のＮＡＦ変換装置。
【請求項５】
ＮＡＦ変換の途中でｋの値を２からｗの間で変化させることを特徴とする請求項３記載のＮＡＦ変換装置。
【請求項６】
前記１ビットの記憶手段、前記ｗ−１ビットのシフトレジスタ、前記更新手段が同期回路であることを特徴とする請求項１乃至５のいずれかに記載のＮＡＦ変換装置。
【請求項７】
前記１ビットの記憶手段、前記ｗ−１ビットのシフトレジスタ、前記更新手段が非同期回路であることを特徴とする請求項１乃至５のいずれかに記載のＮＡＦ変換装置。
【請求項８】
１ビットシリアル入力と、
２ビットパラレル出力と、
３つの状態を記憶する記憶手段と、
第１の状態において、
入力が０のときは、第１の状態に状態遷移し、０を出力し、
入力が１のときは、第２の状態に状態遷移し、０を出力し、
第２の状態において、
入力が０のときは、第１の状態に状態遷移し、１を出力し、
入力が１のときは、第３の状態に状態遷移し、−１を出力し、
第３の状態において、
入力が０のときは、第２の状態に状態遷移し、０を出力し、
入力が１のときは、第３の状態に状態遷移し、０を出力する更新手段と、
を具備し、
２進表現された整数を下位から１ビットずつ前記シリアル入力から入力すると２−ＮＡＦ表現された冗長２進表現を２ビットずつ前記パラレル出力から出力する２−ＮＡＦ変換装置。
【請求項９】
１ビットシリアル入力と、
３ビットパラレル出力と、
５つの状態を記憶する記憶手段と、
第１の状態において、
入力が０のときは、第１の状態に状態遷移し、０を出力し、
入力が１のときは、第３の状態に状態遷移し、０を出力し、
第２の状態において、
入力が０のときは、第１の状態に状態遷移し、１を出力し、
入力が１のときは、第５の状態に状態遷移し、−３を出力し、
第３の状態において、
入力が０のときは、第２の状態に状態遷移し、０を出力し、
入力が１のときは、第４の状態に状態遷移し、０を出力し、
第４の状態において、
入力が０のときは、第１の状態に状態遷移し、３を出力し、
入力が１のときは、第５の状態に状態遷移し、−１を出力し、
第５の状態において、
入力が０のときは、第３の状態に状態遷移し、０を出力し、
入力が１のときは、第５の状態に状態遷移し、０を出力する更新手段と、
を具備し、
２進表現された整数を下位から１ビットずつ前記シリアル入力から入力すると３−ＮＡＦ表現された冗長２進表現を３ビットずつ前記パラレル出力から出力することを特徴とする３−ＮＡＦ変換装置。
【請求項１０】
１ビットシリアル入力と、
４ビットパラレル出力と、
９つの状態を記憶する記憶手段と、
第１の状態において、
入力が０のときは、第１の状態に状態遷移し、０を出力し、
入力が１のときは、第５の状態に状態遷移し、０を出力し、
第２の状態において、
入力が０のときは、第１の状態に状態遷移し、１を出力し、
入力が１のときは、第９の状態に状態遷移し、−７を出力し、
第３の状態において、
入力が０のときは、第２の状態に状態遷移し、０を出力し、
入力が１のときは、第６の状態に状態遷移し、０を出力し、
第４の状態において、
入力が０のときは、第１の状態に状態遷移し、３を出力し、
入力が１のときは、第９の状態に状態遷移し、−５を出力し、
第５の状態において、
入力が０のときは、第３の状態に状態遷移し、０を出力し、
入力が１のときは、第７の状態に状態遷移し、０を出力し、
第６の状態において、
入力が０のときは、第１の状態に状態遷移し、５を出力し、
入力が１のときは、第９の状態に状態遷移し、−３を出力し、
第７の状態において、
入力が０のときは、第４の状態に状態遷移し、０を出力し、
入力が１のときは、第８の状態に状態遷移し、０を出力し、
第８の状態において、
入力が０のときは、第１の状態に状態遷移し、７を出力し、
入力が１のときは、第９の状態に状態遷移し、−１を出力し、
第９の状態において、
入力が０のときは、第５の状態に状態遷移し、０を出力し、
入力が１のときは、第９の状態に状態遷移し、０を出力する更新手段と、
を具備し、
２進表現された整数を下位から１ビットずつ前記シリアル入力から入力すると、４−ＮＡＦ表現された冗長２進表現を４ビットずつ前記パラレル出力から出力することを特徴とする４−ＮＡＦ変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は２進表現された整数を冗長２進表現に変換するＮＡＦ変換装置に関する。
【背景技術】
【０００２】
乗数を冗長２進表現に変換してから乗算することで乗算を効率化できることについては、例えばＢｏｏｔｈの方法として１９５０年代には既に知られている（例えば非特許文献１、非特許文献２を参照）。最近では、暗号処理の高速化という文脈で冗長２進表現の１種であるＮＡＦが使われることが多い（例えば非特許文献３、非特許文献２を参照）。
【０００３】
ＮＡＦについては、例えば非特許文献２の第９８頁に説明されている。ＮＡＦとは、冗長２進表現の１種であり、整数ｋは唯一の対応するＮＡＦ表現ＮＡＦ（ｋ）をもつ。ＮＡＦ（ｋ）の非零の桁の数は任意の冗長２進表現の中でも最小であることが証明されている。非零の桁の数の平均は１／３である。
【０００４】
通常の２進表現では、各桁に０または１の２種類の数字が現れるが、ＮＡＦでは−１，０，１の数字が現れるという違いがある。
【０００５】
ＮＡＦ表現では、引き続く２つの桁の少なくとも一方は０であるという特徴があり、密度が低い理由にもなっている。また、Ｎｏｎ−ａｄｊａｃｅｎｔ  ｆｏｒｍという名前の由来でもある。
【０００６】
例として、２進数１１０１１（１０進では５９＝３２＋１６＋８＋２＋１）をＮＡＦに変換すると１０００−１０−１（６４−４−１＝５９）になる。
【０００７】
４ビット以下の２進数をＮＡＦに変換した例を表１に示す。
【表１】
2010165173.tif 000003
【０００８】
整数ｋをＮＡＦ表現ＮＡＦ（ｋ）に変換するアルゴリズムはいくつも知られている。例えば、非特許文献４の第３９頁（表３．２）、非特許文献３の第９８頁（アルゴリズム３．３０）、非特許文献２の第１５１（アルゴリズム９．１４）に記載されている。
【０００９】
ＮＡＦの拡張としてｗ−ＮＡＦがある（例えば非特許文献３の第９９頁参照）。
【００１０】
ｗ−ＮＡＦと通常のＮＡＦの違いは、ｗ−ＮＡＦでは各桁に使える数字がもっと多くなっていることである。３−ＮＡＦであれば−３，−１，０，１，３の５種類を使用できる。上記のＮＡＦは２−ＮＡＦと考えることができる。
【００１１】
以下、表２および表３にｗ−ＮＡＦの特徴を示す。
【００１２】
表２は、各ＮＡＦで使う数字を一覧にしたものである。
【表２】
2010165173.tif 000004
【００１３】
但し、「^」はべき（冪）であり、例えば2^wは２のｗ乗を意味する。
【００１４】
表３は、各ＮＡＦの非零の桁の密度を一覧にしたものである。
【表３】
2010165173.tif 000005
【００１５】
ｗ−ＮＡＦでは、引き続くｗ個の桁の内、非零である桁は多くても１つであるという特徴がある。密度が低い方が処理する桁が少なくなるのでクロック数は少なくなるが、事前準備が多くなるのでトレードオフがある。
【００１６】
ｗ−ＮＡＦの変換アルゴリズムについては、非特許文献３の第１００頁（アルゴリズム３．３５）、非特許文献２の第１５３頁（アルゴリズム９．２０）がある。
【００１７】
従来のＮＡＦ変換アルゴリズムについて検討する。
【００１８】
非特許文献３のアルゴリズム３．３５や、非特許文献２のアルゴリズム９．２０は、任意のｗに対して適用できるというスケーラビリティの高さが特長であるが、反面、以下のような問題点がある。
【００１９】
・逐次的にｋを入力することができない。つまり最初にｋを読み込んでおかなければならない。これはｋそのものを変更するからである。
【００２０】
・ｋに対する変更は多倍長演算なので、回路規模が大きくなったり、１桁を求めるのに必要なクロック数が多くなる。
【００２１】
非特許文献４の表３．２について、非特許文献４にはＮＡＦ変換であるという記述はないが、結果として出力されるものはＮＡＦ変換になっている。このアルゴリズムは上の２つのアルゴリズムのもつ欠点を持たない。つまり、逐次的にｋを処理できるし、多倍長演算も不要である。ただし、ｗ＝２の場合にしか適用できないのでスケーラビリティがないという問題がある。非特許文献２のアルゴリズム９．１４も同じ特長と欠点をもつ。
【先行技術文献】
【非特許文献】
【００２２】
【非特許文献１】A.D.Booth, "A signed binary multiplication technique", Quart. J. Mech. Appl. Math., 4, 2, 236-240, 1951.
【非特許文献２】"Handbook of Elliptic and Hyperelliptic Curve Cryptography", CRC, 2006
【非特許文献３】"Guide to Elliptic Curve Cryptography", Springer, 2003
【非特許文献４】「算術演算のＶＬＳＩアルゴリズム」コロナ社，２００５
【発明の概要】
【発明が解決しようとする課題】
【００２３】
上述したように、既に知られているＮＡＦ変換アルゴリズムには、スケーラビリティと回路規模が両立しないという問題点がある。
【００２４】
本発明はかかる事情を考慮してなされたものであり、回路規模が小さくスケーラブルなｗ−ＮＡＦ変換装置を提供することを目的とする。
【課題を解決するための手段】
【００２５】
本発明の一観点に係るＮＡＦ変換装置は、２進表現された整数をｗ−ＮＡＦ表現された冗長２進表現に変換するＮＡＦ変換装置であって、前記２進表現された整数を下位から１ビットずつ受け付ける受付手段と、１ビットで表現される状態の値を記憶する記憶手段と、ｗ−１ビットで表現される状態の値を記憶するシフトレジスタと、前記受付手段が受け付けた１ビットの値と、前記記憶手段の状態の値と、前記ｗ−１ビットのシフトレジスタの状態の値を参照し、次の時刻における前記記憶手段の状態と前記ｗ−１ビットのシフトレジスタの状態とを決定し、現時刻におけるｗビットのパラレル出力を決定する更新手段と、を具備することを特徴とする。
【発明の効果】
【００２６】
本発明によれば、回路規模が小さくスケーラブルなｗ−ＮＡＦ変換装置を提供できる。特に、任意のｗについて異なる部分がほとんどない（シフトレジスタの長さだけ）ので、動的にｗを変更するといったことも可能である。また、回路規模は知られている２−ＮＡＦ専用の変換アルゴリズムよりも小型であり、さらには公知のｗ−ＮＡＦ変換アルゴリズムと較べても小型である。
【図面の簡単な説明】
【００２７】
【図１】ｗ−ＮＡＦ変換装置の機能構成を示すブロック図
【図２】２−ＮＡＦ変換装置を示す図
【図３】セレクタの記述方法の説明図
【図４】２−ＮＡＦ変換装置の変換例を示す図
【図５】３−ＮＡＦ変換装置を示す図
【図６】３−ＮＡＦ変換装置の変換例を示す図
【図７】４−ＮＡＦ変換装置を示す図
【図８】２〜４−ＮＡＦ変換装置を示す図
【図９】２−ＮＡＦ状態遷移表を示す図
【図１０】２−ＮＡＦ状態遷移図を示す図
【図１１】３−ＮＡＦ状態遷移表を示す図
【図１２】３−ＮＡＦ状態遷移図を示す図
【図１３】４−ＮＡＦ状態遷移表を示す図
【図１４】５−ＮＡＦ状態遷移表を示す図
【発明を実施するための形態】
【００２８】
以下、図面を参照しながら本発明の実施形態を説明する。
【００２９】
図１は、本発明の実施形態に係るＮＡＦ変換装置の機能構成を示すブロック図である。本装置は、１ビットシリアル入力を受け付ける受付手段１と、受付手段１に接続される更新手段２と、更新手段２に接続され、ｗ−ＮＡＦ表現されたｗビットの値をパラレル出力するｗ−１ビットシフトレジスタ３と、更新手段２に接続される１ビット記憶手段４とを有する。なお、ＮＡＦ変換装置がハードウェアで構成される場合は、受付手段１は独立して設けられる必要はなく、信号線と更新手段とが接続される接続部分が該当することになる。
【００３０】
１ビット記憶手段４とｗ−１ビットシフトレジスタ３の初期値は０とする。
【００３１】
本実施形態に係るＮＡＦ変換装置においては、ｗ−ＮＡＦ表現に変換すべき整数の２進表現を下位ビットから順にクロックに合わせて１ビットずつ受付手段１が受け付ける。この受け付けた値を１ビットシリアル入力という。１ビット記憶手段４とｗ−１ビットシフトレジスタ３の内容はクロック毎に、つまり１ビット入力される毎に更新手段２によって新たな内容に置き換えられる。
【００３２】
更新手段２は更新前の１ビット記憶手段４とｗ−１ビットシフトレジスタ３の内容および１ビットシリアル入力に応じて、１ビット記憶手段４とｗ−１ビットシフトレジスタ３の新たな内容を計算する。また更新手段２はｗビットのパラレル出力を決定する。つまり、クロック毎にｗビットの変換結果が出力される。この際、有効な出力はｗ−１クロック後から出力される。なお、最下位ビット出力の値“１”は、ｗ−１ビットシフトレジスタ３をクリアするトリガーのクリア入力として、ｗ−１ビットシフトレジスタ３に与えられる。最下位ビット出力の値“１”がｗ−１ビットシフトレジスタ２に与えられると、ｗ−１ビットシフトレジスタ２の値はクリアされる。
【００３３】
図２を参照して、図１のＮＡＦ変換装置をさらに具体化した２−ＮＡＦ変換装置を説明する。図２に示すように２−ＮＡＦ変換装置が有するＣは図１の構成における１ビット記憶手段４に対応する。同様に、Ｓ０は１ビットのシフトレジスタ３（ｗ＝２なのでｗ−１＝１ビット）に対応する。Ｙ１とＹ０は２ビットのパラレル出力に対応する。＋は１ビットの加算器であり、図１の更新手段２の要素に対応する。
【００３４】
特別な記号を図３で説明する。セレクタを図３のように記述することにする。つまり選択信号Ｓが１のとき出力はＣ＝Ａであり、Ｓが０のとき出力はＣ＝Ｂとなる。
【００３５】
図１において、最下位ビット出力がｗ−１ビットシフトレジスタのクリア入力として与えられる構成は、図２において、パラレル出力の一部であるＹ０がセレクタの選択信号Ｓ０として与えられる構成に対応する。
【００３６】
ＣとＳ０の初期値は０である。Ｓ０が１のとき、Ｃの次の値は入力＋Ｃの下位ビットであり、Ｓ０の次の値は０であり、Ｙ１は入力＋Ｃの下位ビットであり、Ｙ０はＳ０つまり１となる。一方、Ｓ０が０のとき、Ｃの次の値は入力＋Ｃの上位ビットであり、Ｓ０の次の値は入力＋Ｃの下位ビットであり、Ｙ１は入力＋Ｃの下位ビットであり、Ｙ０はＳ０つまり０となる。なお、次のクロックのタイミングでＹ１の値がＳ０に書き込まれる。
【００３７】
図４を参照して、この２−ＮＡＦ変換装置の実際の変換例を示す。図４はタイミングチャートの形式になっており、クロックが入るたびに色々な値が更新されている。図４においてｃｌｋはクロック、ｓｔａｒｔは開始信号、ｉｎは入力、ｃは１ビット記憶手段４、ｓは１ビットシフトレジスタ３、ｏｕｔは２ビットパラレル出力である。
【００３８】
２進数１１１０１１（１０進では５９＝３２＋１６＋８＋２＋１）を入力した例を示す。ｉｎの行を見ると１１１０１１がクロック毎に下位から順に入力されていることが分かる。出力は入力より１クロック遅れている。
【００３９】
出力ｏｕｔの読み方は、「００」または「１０」のとき「０」であり、「０１」のとき「１」であり、「１１」のとき「−１」である。
【００４０】
上記のように０を表現する複数の出力があるが、全て偶数であり、最下位ビットが０のときは出力を０とみなすだけでよい。また、出力が０以外のときは、２ビットの２の補数表現になっていることに注意する。一般にｗ−ＮＡＦの場合は、出力の最下位ビットが０なら０、１ならｗビットの２の補数表現となる。出力の最下位ビット以外を最下位ビットとＡＮＤをとることできれいな０を出力することもできる。結果も下位から出力される。図４によれば、下位から順に−１０−１０００１と出力されていることが分かる。これは、上位から読むと１０００−１０−１であり、６４−４−１＝５９なので、元の２進数と同じ数を表現していることが分かる。元の２進数で非零の（１の）ビットは５個であるが、ＮＡＦ変換後は３個と非零の桁の数が減っている。ＮＡＦ変換では、出力のビット数は、最大で元のビット数＋１になることがあり、この例もそのようになっている。
【００４１】
図５は図１のＮＡＦ変換装置をさらに別の例として具体化した３−ＮＡＦの変換装置を示している。図５に示すように３−ＮＡＦ変換装置が有するＣは図１の構成における１ビット記憶手段４に対応する。同様に、Ｓ１とＳ０は２ビットのシフトレジスタ３（ｗ＝３なのでｗ−１＝２ビット）に対応する。Ｙ２とＹ１とＹ０は３ビットのパラレル出力に対応する。＋は１ビットの加算器であり、図１の更新手段２の要素に対応する。図１において、最下位ビット出力がｗ−１ビットシフトレジスタのクリア入力として与えられる構成は、図５において、パラレル出力の一部であるＹ０が２つのセレクタのそれぞれの選択信号Ｓ０として与えられる構成に対応する。
【００４２】
図２の２−ＮＡＦ変換装置と図５の３−ＮＡＦの変換装置とを較べると、Ｙ２とＳ１が増えただけである。動作は２−ＮＡＦ変換装置と同様である。
【００４３】
ＣとＳ０の初期値は０である。Ｓ０が１のとき、Ｃの次の値は入力＋Ｃの下位ビットであり、Ｓ１とＳ０の次の値は０であり、Ｙ２は入力＋Ｃの下位ビットであり、Ｙ１はＳ１であり、Ｙ０はＳ０つまり１となる。一方、Ｓ１が０のとき、Ｃの次の値は入力＋Ｃの上位ビットであり、Ｓ１の次の値は入力＋Ｃの下位ビットであり、Ｓ０の次の値はＳ１であり、Ｙ２は入力＋Ｃの下位ビットであり、Ｙ１はＳ１であり、Ｙ０はＳ０つまり０となる。
【００４４】
図６を参照して、この３−ＮＡＦ変換装置の実際の変換例を示す。図６はタイミングチャートの形式になっており、クロックが入るたびに色々な値が更新されている。図６において、ｃｌｋはクロック、ｓｔａｒｔは開始信号、ｉｎは入力、ｃは１ビット記憶手段４、ｓは２ビットシフトレジスタ３、ｏｕｔは３ビットパラレル出力である。
【００４５】
２進数１１１０１１（１０進では５９＝３２＋１６＋８＋２＋１）を入力した例を示す。ｉｎの行を見ると１１１０１１がクロック毎に下位から順に入力されていることが分かる。出力は入力より２クロック遅れている。出力ｏｕｔの読み方は、「０００」，「０１０」，「１００」，「１１０」のとき、「０」であり、「００１」のとき「１」であり、「０１１」のとき「３」であり、「１０１」のとき「−３」であり、「１１１」のとき「−１」である。
【００４６】
上記のように０を表現する複数の出力があるが、全て偶数であり、最下位ビットが０のときは出力を０とみなすだけでよい。また、出力が０以外のときは、３ビットの２の補数表現になっていることに注意する。結果も下位から出力される。下位から順に３００−１００１と出力されていることが分かる。これは、上位から読むと１００−１００３であり、６４−８＋３＝５９なので、元の２進数と同じ数を表現していることが分かる。ＮＡＦ変換では、出力のビット数は、最大で元のビット数＋１になることがあり、この例もそのようになっている。
【００４７】
図７は図１のＮＡＦ変換装置をさらに別の例として具体化した４−ＮＡＦの変換装置である。図７に示すように、４−ＮＡＦの変換装置が有するＣは図１の構成における１ビット記憶手段４に対応する。同様に、Ｓ２とＳ１とＳ０は３ビットのシフトレジスタ３（ｗ＝４なのでｗ−１＝３ビット）に対応する。Ｙ３とＹ２とＹ１とＹ０は４ビットのパラレル出力に対応する。＋は１ビットの加算器であり、図１の更新手段２の要素である。
【００４８】
図２の２−ＮＡＦ変換装置や図５の３−ＮＡＦ変換装置と図７の４−ＮＡＦ変換装置とを見比べてみると、シフトレジスタ３と出力が増えただけで同じ構造をもつことが分かる。
【００４９】
図８を参照して、ｋを可変とするｋ−ＮＡＦ変換装置の例を示す。この例ではｋの値として２，３，４を選択できる。図８においてｋ−ＮＡＦ変換装置のＣは図１に示した構成における１ビット記憶手段４に対応する。Ｓ２とＳ１とＳ０は図１の構成における３ビットのシフトレジスタ３（ｗ＝４なのでｗ−１＝３ビット）に対応する。Ｙ３とＹ２とＹ１とＹ０は４ビットのパラレル出力に対応する。＋は１ビットの加算器である。
【００５０】
Ｓはｋによって変わる最下位ビットである。ｋ＝２、つまりこの装置を２−ＮＡＦ変換装置として動作させるには、最下位ビットＳとしてＳ２を採用すればよく、同様に３−ＮＡＦ変換装置として動作させるためには、最下位ビットＳとしてＳ１を採用すればよく、４−ＮＡＦ変換装置の場合の最下位ビットはＳ＝Ｓ０とすればよい。このとき、出力は２−ＮＡＦのときはＹ３とＹ２とし、３−ＮＡＦのときはＹ３，Ｙ２，Ｙ１とし、４−ＮＡＦのときはＹ４，Ｙ３，Ｙ２，Ｙ１，Ｙ０とする。
【００５１】
携帯機器のようにメモリが限られているような場面では、ｗを小さくすることで計算自体は遅くなるが、メモリを節約することができる。一般にｗを大きくすることで計算は速くなるがメモリ消費量が増える。例えばメモリの空きが少ないときはｗを小さくし、メモリの空きが多いときはｗを大きくすることで計算を速くすることができる。また、ｗを小さくし不要なレジスタへの給電を止めることで、電力を節約できる。
【００５２】
図９を参照して、上述した２−ＮＡＦ変換装置を他の観点から説明する。すなわち、図９のような状態遷移表の形式で本実施形態に係る２−ＮＡＦ変換装置を説明する。図９において、ｓは今の状態（取りうる状態は３状態である）、ｉｎは１ビットの入力、ｓ’は次の状態、ｏｕｔは出力である。初期状態はｓ＝０である。入力ｉｎが１ビットずつ入るたびにｓとｉｎで決まるｓ’に状態遷移し、出力ｏｕｔを出力する。
【００５３】
第１の状態において、入力が０のときは、第１の状態に状態遷移し、０を出力し、入力が１のときは、第２の状態に状態遷移し、０を出力する。第２の状態において、入力が０のときは、第１の状態に状態遷移し、１を出力し、入力が１のときは、第３の状態に状態遷移し、−１を出力する。第３の状態において、入力が０のときは、第２の状態に状態遷移し、０を出力し、入力が１のときは、第３の状態に状態遷移し、０を出力する。このようにして２進表現された整数を下位から１ビットずつ入力すると２−ＮＡＦ表現された冗長２進表現を２ビットずつ出力する。
【００５４】
図１０を参照して、２−ＮＡＦ変換装置をさらに説明する。図１０において、丸で囲まれているのが状態であり、状態遷移表のｓと対応する。３つの状態がある。数字／数字は、左の数字がｉｎ、右の数字がｏｕｔで、左の数字を入力したときに、右の数字を出力することを意味する。このような図１０は、図９の状態遷移表を状態遷移図の形に書き直したものである。初期状態は状態０である。
【００５５】
図１１を参照して、上述した３−ＮＡＦ変換装置を他の観点から説明する。すなわち、図１１のような状態遷移表の形式に沿って本実施形態に係る３−ＮＡＦ変換装置を説明する。状態ｓとして取りうる値が０から４の５状態に増えており、出力は、３−ＮＡＦなので−３，−１，０，１，３の５通りになっている。
【００５６】
第１の状態において、入力が０のときは、第１の状態に状態遷移し、０を出力し、入力が１のときは、第３の状態に状態遷移し、０を出力する。第２の状態において、入力が０のときは、第１の状態に状態遷移し、１を出力し、入力が１のときは、第５の状態に状態遷移し、−３を出力する。第３の状態において、入力が０のときは、第２の状態に状態遷移し、０を出力し、入力が１のときは、第４の状態に状態遷移し、０を出力する。第４の状態において、入力が０のときは、第１の状態に状態遷移し、３を出力し、入力が１のときは、第５の状態に状態遷移し、−１を出力する。第５の状態において、入力が０のときは、第３の状態に状態遷移し、０を出力し、入力が１のときは、第５の状態に状態遷移し、０を出力する。こうして、２進表現された整数を下位から１ビットずつ入力すると、３−ＮＡＦ表現された冗長２進表現を３ビットずつ出力する。
【００５７】
図１２は、図１１の状態遷移表を状態遷移図に書き直したものであり、図１０と同様である。
【００５８】
図１３を参照して、上述した４−ＮＡＦ変換装置を他の観点から説明する。すなわち、図１３のような状態遷移表の形式に沿って本実施形態に係る４−ＮＡＦ変換装置を説明する。状態ｓとして取りうる値が０から８の９状態に増えている。出力は、４−ＮＡＦであので−７，−５，−３，−１，０，１，３，５，７の９種類である。
【００５９】
第１の状態において、入力が０のときは、第１の状態に状態遷移し、０を出力し、入力が１のときは、第５の状態に状態遷移し、０を出力する。第２の状態において、入力が０のときは、第１の状態に状態遷移し、１を出力し、入力が１のときは、第９の状態に状態遷移し、−７を出力する。第３の状態において、入力が０のときは、第２の状態に状態遷移し、０を出力し、入力が１のときは、第６の状態に状態遷移し、０を出力する。第４の状態において、入力が０のときは、第１の状態に状態遷移し、３を出力し、入力が１のときは、第９の状態に状態遷移し、−５を出力する。第５の状態において、入力が０のときは、第３の状態に状態遷移し、０を出力し、入力が１のときは、第７の状態に状態遷移し、０を出力する。第６の状態において、入力が０のときは、第１の状態に状態遷移し、５を出力し、入力が１のときは、第９の状態に状態遷移し、−３を出力する。第７の状態において、入力が０のときは、第４の状態に状態遷移し、０を出力し、入力が１のときは、第８の状態に状態遷移し、０を出力する。第８の状態において、入力が０のときは、第１の状態に状態遷移し、７を出力し、入力が１のときは、第９の状態に状態遷移し、−１を出力する。第９の状態において、入力が０のときは、第５の状態に状態遷移し、０を出力し、入力が１のときは、第９の状態に状態遷移し、０を出力する。こうして２進表現された整数を下位から１ビットずつ入力すると４−ＮＡＦ表現された冗長２進表現を４ビットずつ出力する。
【００６０】
図１４によって５−ＮＡＦ変換装置を示す。状態遷移表については図９の説明と同様である。状態ｓとして取りうる値が０から１６の１７状態に増えている。一般に、ｗ−ＮＡＦの場合は、２＾（ｗ−１）＋１状態を取る。
【００６１】
上述した実施形態は順序回路によって実現できるが、同期回路としても非同期回路としても実現可能である。
【００６２】
サイドチャネル攻撃のような新たな暗号攻撃法が登場している。以上説明した実施形態によれば、楕円曲線暗号のスカラー倍の途中でｗを変化させることで、サイドチャネル攻撃を防ぐことが可能になる。ｗを変更できるのは、シフトレジスタが０の場合である。つまり、直前に０以外の値を出力したときである。
【００６３】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００６４】
１…受付手段；
２…更新手段；
３…ｗ−１ビットシフトレジスタ；
４…１ビット記憶手段
【図１】
2010165173.tif 000006
【図２】
2010165173.tif 000007
【図３】
2010165173.tif 000008
【図４】
2010165173.tif 000009
【図５】
2010165173.tif 000010
【図６】
2010165173.tif 000011
【図７】
2010165173.tif 000012
【図８】
2010165173.tif 000013
【図９】
2010165173.tif 000014
【図１０】
2010165173.tif 000015
【図１１】
2010165173.tif 000016
【図１２】
2010165173.tif 000017
【図１３】
2010165173.tif 000018
【図１４】
2010165173.tif 000019