(57)【要約】  乱数拡大装置（１００）は、誤り訂正の（Ｎ、Ｎ−Ｍ、Ｄ）線形符号から決まるＭ×Ｎのサイズの検査行列とＭ×Ｎのサイズの生成行列とのうちの一方の行列と、乱数ｒ（Ｍ）をＭ成分のベクトルとする場合の前記ベクトルとの乗算であり、加法を排他的論理和とする乗算によって得られる論理演算を用いて、乱数ｒ（Ｍ）をＮビットの乱数ｓ（Ｎ）に拡大する拡大部（１２０）を備える。乱数拡大装置（１００）は拡大部（１２０）を備えるので、使用する乱数のビット数を削減でき、複数本のレーザ照射攻撃に対抗できる。
2016113886.tif 000002
【特許請求の範囲】
【請求項１】
Ｍビットの乱数ｒ（Ｍ）を受信する受信部と、
誤り訂正の線形符号から決まるＭ×Ｎサイズの検査行列とＭ×Ｎサイズの生成行列とのうちの一方の行列と、乱数ｒ（Ｍ）をＭ成分のベクトルとする場合の前記ベクトルとの乗算であり、加法を排他的論理和とする乗算によって得られる論理演算を用いて、乱数ｒ（Ｍ）をＮビットの乱数ｓ（Ｎ）に拡大する拡大部と、
乱数ｓ（Ｎ）のＮビットのうちＭビットよりも多いビット値を乱数として出力する出力部と
を備える乱数拡大装置。
【請求項２】
前記拡大部は、
一方の行列と乱数ｒ（Ｍ）との前記乗算によって得られるＮ個の成分を、乱数ｓ（Ｎ）として生成する請求項１に記載の乱数拡大装置。
【請求項３】
前記拡大部は、
乱数ｓ（Ｎ）から少なくとも１ビットを除くことによって、整数Ｎよりも小さく整数Ｍよりも大きい整数Ｖで表されるＶビットの乱数ｓ（Ｖ）を生成し、
前記出力部は、
乱数ｓ（Ｖ）を出力する請求項１または請求項２に記載の乱数拡大装置。
【請求項４】
前記拡大部は、
前記論理演算を実行する論理演算回路を備える請求項１から請求項３のいずれか一項に記載の乱数拡大装置。
【請求項５】
前記論理演算回路は、
複数の排他的論理和回路を備える請求項４に記載の乱数拡大装置。
【請求項６】
前記乱数拡大装置は、さらに、
データを、前記出力部によって出力される乱数でマスクするマスク部と、
前記マスク部によってマスクされたデータを格納する格納部と
を備える請求項１から請求項５のいずれか一項に記載の乱数拡大装置。
【請求項７】
前記受信部は、
乱数ｒ（Ｍ）として、Ｍビットの第一の乱数ｒ<１>，（Ｍ）とＭビットの第二の乱数ｒ<２>，（Ｍ）とが排他的論理和された第三の乱数ｒ<３>，（Ｍ）を受信し、
前記拡大部は、
第三の乱数ｒ<３>，（Ｍ）を、第一の乱数ｒ<１>，（Ｍ）が拡大された乱数に相当するＮビットの乱数ｓ<１>，（Ｎ）と、第二の乱数ｒ<２>，（Ｍ）が拡大された乱数に相当するＮビットの乱数ｓ<２>，（Ｎ）との排他的論理和として得られるＸＯＲ乱数に拡大し、
前記格納部は、
乱数ｓ<１>，（Ｎ）でマスクされたデータを格納し、
前記マスク部は、
乱数ｓ<１>，（Ｎ）でマスクされたデータと、前記拡大部によって拡大されたＸＯＲ乱数との演算によって、乱数ｓ<１>，（Ｎ）でマスクされたデータを、乱数ｓ<２>，（Ｎ）でマスクされたデータに変換する再マスクを行う請求項６に記載の乱数拡大装置。
【請求項８】
前記乱数拡大装置は、さらに、
ビット列に含まれる誤りを検出する誤り検出部を備え、
前記拡大部は、
乱数ｒ（Ｍ）を乱数ｓ（Ｎ）に拡大する場合に、前記誤り検出部の少なくとも一部を利用する請求項１から請求項７のいずれか一項に記載の乱数拡大装置。
【請求項９】
Ｍビットの乱数ｒ（Ｍ）を受信し、
誤り訂正の線形符号から決まるＭ×Ｎサイズの検査行列とＭ×Ｎサイズの生成行列とのうちの一方の行列と、乱数ｒ（Ｍ）をＭ成分のベクトルとする場合の前記ベクトルとの乗算であり、加法を排他的論理和とする乗算によって得られる論理演算を用いて、論理演算回路によって乱数ｒ（Ｍ）をＮビットの乱数ｓ（Ｎ）に拡大し、
乱数ｓ（Ｎ）のＮビットのうちＭビットよりも多いビット値を出力する乱数拡大方法。
【請求項１０】
コンピュータに、
Ｍビットの乱数ｒ（Ｍ）を受信する処理、
誤り訂正の線形符号から決まるＭ×Ｎサイズの検査行列とＭ×Ｎサイズの生成行列とのうちの一方の行列と、乱数ｒ（Ｍ）をＭ成分のベクトルとする場合の前記ベクトルとの乗算であり、加法を排他的論理和とする乗算によって得られる論理演算を用いて、乱数ｒ（Ｍ）をＮビットの乱数ｓ（Ｎ）に拡大する処理、
乱数ｓ（Ｎ）のＮビットのうちＭビットよりも多いビット値を出力する処理、
を実行させるための乱数拡大プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、Ｍビットの乱数を、Ｍビットよりも大きいＮビットの乱数に拡大する乱数拡大装置、乱数拡大方法及び乱数拡大プログラムに関する。
【背景技術】
【０００２】
情報セキュリティの基盤として暗号技術は広く利用されている。暗号を安全に利用するには、秘密鍵と呼ばれる情報が利用者以外に秘密に保たれることが必要である。秘密鍵を安全に格納する手段としては、計算機チップを利用する方法が一般的である。チップ内の不揮発メモリに秘密鍵を書き込み、チップ外からはアクセス制限をかける。アクセス制限によって、チップ外からは秘密鍵を読み出せないようにできる。【０００３】
計算機チップから鍵を取り出そうとする攻撃についてはよく研究がされてきた。攻撃の１つの分類にフォルト攻撃がある。計算機へ物理刺激を与えると、計算間違いを起こすことがある。暗号を処理する計算機チップに計算誤りを誘発し、その結果としてどのように計算間違いが起きるかを観察すれば、秘密鍵を抽出できる場合がある。そのような攻撃をフォルト攻撃と呼ぶ。【０００４】
計算間違いを引き起こす物理刺激としてよく知られた方法の１つは、計算機チップへのレーザ照射である。非特許文献１には、適切な個所へレーザを照射すれば、計算機チップ内でデータの記憶を行うメモリやレジスタのあるビットを論理値０もしくは１に固定できることが記載されている。そのような誤りをセット・リセット誤りと呼ぶ。【０００５】
セット・リセット誤りを誘発できる攻撃者は、レーザの照射前と照射後で鍵が書き換わったかどうかを観察すれば、秘密のデータを取得できる。【０００６】
非特許文献２に示すように、フォルト攻撃への既存の対策法はたくさんある。しかし、その対策法の多くは無効化となる。【０００７】
フォルト攻撃への１つの有効な対策法は、特許文献１に開示されるような、レーザが照射されたことをセンサで検出する方法である。しかし、（１）局所的な照射を見逃す可能性がある、（２）特殊な回路を使うことで製造コストが増大するなどの課題が存在する。【０００８】
さらに、フォルト攻撃への別の有効な対策法は、乱数マスキングを使う方法である。乱数マスキングとは以下のような技術である。Ｎビットの秘密鍵ｋ（Ｎ）があるとする。ｋ（Ｎ）＝ｋ１，ｋ２，・・・ｋＮ、である。乱数マスキングでは、Ｎビットの乱数ｒ（Ｎ）を用意する。ｒ（Ｎ）＝ｒ１，ｒ２，・・・ｒＮである。秘密鍵ｋ（Ｎ）と乱数ｒ（Ｎ）の排他的論理和を取ることで、マスクされたデータを得る。その後、乱数ｒ（Ｎ）とマスクされたデータとをレジスタへ保存する。秘密鍵ｋ（Ｎ）を使用する時は、乱数ｒ（Ｎ）と、マスクされたデータとの排他的論理和を計算することで、秘密鍵ｋ（Ｎ）を復元できる。秘密鍵ｋ（Ｎ）そのものは記憶されていないから、レーザを照射する攻撃で秘密鍵ｋ（Ｎ）を求めることはできない。よってレーザ照射によるフォルト攻撃への対策になる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００４−２０６６８０号公報
【非特許文献】
【００１０】
【非特許文献１】Ｃ．  Ｒｏｓｃｉａｎ，  Ａ．  Ｓａｒａｆｉａｎｏｓ，  Ｊ．−Ｍ．  Ｄｕｔｅｒｔｒｅ，  ａｎｄ  Ａ．  Ｔｒｉａ，  “Ｆａｕｌｔ  Ｍｏｄｅｌ  Ａｎａｌｙｓｉｓ  ｏｆ  Ｌａｓｅｒ−Ｉｎｄｕｃｅｄ  Ｆａｕｌｔｓ  ｉｎ  ＳＲＡＭ  Ｍｅｍｏｒｙ  Ｃｅｌｌｓ”，  Ｆａｕｌｔ  Ｄｉａｇｎｏｓｉｓ  ａｎｄ  Ｔｏｌｅｒａｎｃｅ  ｉｎ  Ｃｒｙｐｔｏｇｒａｐｈｙ  （ＦＤＴＣ），  ２０１３  Ｗｏｒｋｓｈｏｐ  ｏｎ，  ｐｐ．８９−−９８，  Ａｕｇ．  ２０１３．
【非特許文献２】Ｍ．  Ｊｏｙｅ  ａｎｄ  Ｍ．  Ｔｕｎｓｔａｌｌ  （Ｅｄｓ．），  “Ｆａｕｌｔ  Ａｎａｌｙｓｉｓ  ｉｎ  Ｃｒｙｐｔｏｇｒａｐｈｙ”，  Ｓｐｒｉｎｇｅｒ，  ２０１２．
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上記の乱数マスキングは、必要なレジスタ数が倍になるという課題がある。そのため、製造コストが増大する。【００１２】
乱数マスキングにおいて、レジスタの数を減らすための安易な方法は、乱数を１ビットだけ使う方法である。この乱数をｒとする。乱数を１ビットだけ用意する乱数マスキングを説明する。秘密鍵ｋ（Ｎ）の各ビットと、１ビット乱数ｒとの排他的論理和を取ることで、マスクされたデータを得る。乱数ｒとマスクされたデータとをレジスタへ保存する。本手法では、追加で必要なレジスタが１ビットで済むという利点がある。一方で、２か所以上に同時にレーザを照射する攻撃は成功し得るという課題がある。【００１３】
この発明は、使用する乱数のビット数を削減でき、複数本のレーザ照射攻撃に対抗できる装置、方法及びプログラムの提供を目的とする。
【課題を解決するための手段】
【００１４】
この発明の乱数拡大装置は、
Ｍビットの乱数ｒ（Ｍ）を受信する受信部と、
誤り訂正の線形符号から決まるＭ×Ｎサイズの検査行列とＭ×Ｎサイズの生成行列とのうちの一方の行列と、乱数ｒ（Ｍ）をＭ成分のベクトルとする場合の前記ベクトルとの乗算であり、加法を排他的論理和とする乗算によって得られる論理演算を用いて、乱数ｒ（Ｍ）をＮビットの乱数ｓ（Ｎ）に拡大する拡大部と、
乱数ｓ（Ｎ）のＮビットのうちＭビットよりも多いビット値を乱数として出力する出力部とを備える。
【発明の効果】
【００１５】
この発明の乱数拡大装置は拡大部を備えるので、使用する乱数のビット数を削減でき、複数本のレーザ照射攻撃に対抗できる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１の図で、乱数拡大装置１００の基本構成のブロック図。
【図２】実施の形態１の図で、乱数拡大装置１００がマスク部１４０、格納部１５０を備える場合のブロック図。
【図３】実施の形態１の図で、拡大部１２０、マスク部１４０の動作概要を示す。
【図４】実施の形態１の図で、乱数拡大装置１００の動作のフローチャート。
【図５】実施の形態１の図で、線形符号を利用して乱数を拡大する拡大部１２０の動作を示す図。
【図６】実施の形態１の図で、レーザ照射攻撃が成功することを説明する図。
【図７】実施の形態１の図で、検査行列１２０２を用いて、拡大部１２０が乱数ｒ（８）を乱数ｓ（１５）に拡大する例を示す図。
【図８】実施の形態１の図で、図７の検査行列１２０２の乗算をハードウェアで実装する場合を示す図。
【図９】実施の形態１の図で、乱数拡大装置１００が復号部１６０を有する場合のブロック図。
【図１０】実施の形態１の図で、図９の回路構成を示す図。
【図１１】実施の形態１の図で、再マスクにおける拡大部１２０、マスク部１４０の動作を示す図。
【図１２】実施の形態１の図で、再マスクを行う場合の回路構成を示す図。
【図１３】実施の形態１の図で、再マスクのフローチャート。
【図１４】実施の形態１の図で、拡大部１２０が行う切り詰め処理を説明する図。
【図１５】実施の形態１の図で、乱数拡大装置１００がビット列に含まれる誤りを検出する誤り検出部１７０を備える場合のブロック図。
【図１６】実施の形態２の図で、乱数拡大装置１００をコンピュータで実現する場合のハードウェア構成例を示す図。
【図１７】実施の形態２の図で、乱数拡大装置１００を半導体装置に実装する図。
【発明を実施するための形態】
【００１７】
実施の形態１．
以下の実施の形態では以下の（１）〜（４）とする。
（１）以下の説明では乱数が登場する。乱数はｒ、ｓとする。
乱数ｒは拡大前の乱数、乱数ｓは拡大後の乱数とする。
（２）以下の説明ではビット数を表す整数Ｎ、Ｍ、Ｖが登場するが、Ｎ＞Ｖ＞Ｍとする。
（３）ｒ（Ｍ）はＭビットの乱数を示す。ｒＭはｒ（Ｍ）の第Ｍビットを示す。乱数の相違を、ｒ<１>，（Ｍ）、ｒ<２>，（Ｍ）のように「＜１＞，＜２＞」で区別する。ｒ<１>，（Ｍ）、ｒ<２>，（Ｍ）等はｒ<１>、ｒ<２>のように（Ｍ）を省略する場合がある。これらは乱数ｓについても同様である。
（４）排他的論理和の演算は、便宜的に＜＋＞と表記する。ｒ<１>，（Ｍ）＜＋＞ｒ<２>，（Ｍ）はｒ<１>，（Ｍ）とｒ<２>，（Ｍ）とのビット同士の排他的論理和を示す。
【００１８】
＊＊＊構成の説明＊＊＊
図１〜図１６を参照して実施の形態１を説明する。
図１は、乱数拡大装置１００の基本構成のブロック図である。
乱数拡大装置１００は、受信部１１０、拡大部１２０、出力部１３０を備える。
受信部１１０は、Ｍビットの乱数ｒ（Ｍ）を受信する。
【００１９】
拡大部１２０は、誤り訂正の線形符号から決まるＭ×Ｎサイズの検査行列とＭ×Ｎサイズの生成行列とのうちの一方の行列と、乱数ｒ（Ｍ）をＭ成分のベクトルとする場合の前記ベクトルとの乗算であり、加法を排他的論理和とする乗算によって得られる論理演算を用いて、乱数ｒ（Ｍ）をＮビットの乱数ｓ（Ｎ）に拡大する。
つまり、拡大部１２０は、誤り訂正の（Ｎ、Ｎ−Ｍ、Ｄ）線形符号から決まるＭ×Ｎのサイズの検査行列とＭ×Ｎのサイズの生成行列とのうちの一方の行列と、乱数ｒ（Ｍ）をＭ成分のベクトルとする場合のベクトルとの乗算によって得られる論理演算を用いて、乱数ｒ（Ｍ）をＮビットの乱数ｓ（Ｎ）に拡大する。つまり拡大部１２０は一方の行列と、Ｍ成分のベクトルとの乗算によって得られる論理演算を用いて、乱数を拡大する。
【００２０】
誤り訂正の（Ｎ、Ｎ−Ｍ、Ｄ）線形符号は、Ｍビットを表す整数であるＭと、Ｍよりも大きい整数であるＮと、整数であるＤとから、符号長Ｎ、情報ビット長Ｎ−Ｍ、異なる符号語どうしの間のハミング距離の最小値を示す最小距離Ｄで表される。（Ｎ、Ｎ−Ｍ、Ｄ）線形符号は後述する。
Ｍ×Ｎのサイズの検査行列とＭ×Ｎのサイズの生成行列とのうちの一方の行列と、乱数ｒ（Ｍ）をＭ成分のベクトルとする場合のベクトルとの乗算は、加法を排他的論理和とする乗算である。以下この乗算をＸＯＲ乗算というが単に乗算という場合もある。また検査行列、生成行列は後述する。拡大部１２０は、検査行列と生成行列とのうち一方の行列と乱数ｒ（Ｍ）とのＸＯＲ乗算によって得られるＮ個の成分を、乱数ｓ（Ｎ）として生成する。
【００２１】
出力部１３０は、乱数ｓ（Ｎ）のＮビットのうちＭビットよりも多いビット値を乱数として出力する。出力部１３０は、拡大部１２０によってｒ（Ｍ）がｓ（Ｎ）に拡大された場合、ｓ（Ｎ）を出力する。あるいは後述の切り詰め処理の場合、出力部１３０は、ｓ（Ｎ）から少なくとも１ビットが除かれたＶビットの乱数ｓ（Ｖ）を出力する。なお各整数の大きさはＮ＞Ｖ＞Ｍである。図１４で後述するが、拡大部１２０は、拡大した乱数ｓ（Ｎ）から少なくも１ビットを除くことによって、整数Ｎよりも小さく整数Ｍよりも大きい整数Ｖで表されるＶビットの乱数ｓ（Ｖ）を生成する。出力部１３０は、乱数ｓ（Ｖ）を出力する。
【００２２】
また、後述の再マスクで説明するように、受信部１１０は、乱数ｒ（Ｍ）として、Ｍビットの第一の乱数ｒ<１>，（Ｍ）とＭビットの第二の乱数ｒ<２>，（Ｍ）とが排他的論理和された第三の乱数ｒ<３>，（Ｍ）を受信する。拡大部１２０は、第三の乱数ｒ<３>，（Ｍ）を、第一の乱数ｒ<１>，（Ｍ）が拡大された乱数に相当するＮビットの乱数ｓ<１>，（Ｎ）と、第二の乱数ｒ<２>，（Ｍ）が拡大された乱数に相当するＮビットの乱数ｓ<２>，（Ｎ）との排他的論理和として得られるＸＯＲ乱数に拡大する。格納部１５０は、乱数ｓ<１>，（Ｎ）でマスクされたデータを格納する。後述のマスク部１４０は、乱数ｓ<１>，（Ｎ）でマスクされたデータであるＸ＜＋＞ｓ<１>，（Ｎ）と、拡大部１２０によって拡大されたＸＯＲ乱数であるｓ<１>，（Ｎ）＜＋＞ｓ<２>，（Ｎ）との演算をおこなう。この演算によって、マスク部１４０は、乱数ｓ<１>，（Ｎ）でマスクされたデータを、乱数ｓ<２>，（Ｎ）でマスクされたデータに変換する再マスクを行う。
【００２３】
図２は、乱数拡大装置１００がさらにマスク部１４０と格納部１５０を備える場合のブロック図である。
マスク部１４０は、データを、出力部１３０によって出力される乱数でマスクする。格納部１５０は、マスク部１４０によってマスクされたデータを格納する。
【００２４】
＊＊＊動作の説明＊＊＊
図３は、拡大部１２０、マスク部１４０の動作概要を示す。
図４は、乱数拡大装置１００の動作のフローチャートである。
図２〜図４を参照して乱数拡大装置１００の動作を説明する。秘密鍵ｋ（Ｎ）は、ｋ１からｋＮまでのＮビットとする。
（１）受信部１１０がステップＳ１１を実行する。ステップＳ１１では、受信部１１０が、Ｍビットの乱数ｒ（Ｍ）を受信する。
（２）拡大部１２０がステップＳ１２を実行する。ステップＳ１２では、拡大部１２０が、誤り訂正の（Ｎ、Ｎ−Ｍ、Ｄ）線形符号から決まるＭ×Ｎのサイズの検査行列とＭ×Ｎのサイズの生成行列とのうちの一方の行列と、乱数ｒ（Ｍ）をＭ成分のベクトルとする場合のベクトルとの乗算によって得られる論理演算を用いて、乱数ｒ（Ｍ）をＮビットの乱数ｓ（Ｎ）に拡大する。このように拡大部１２０は、拡大関数１２０１を用いて乱数ｒ（Ｍ）を乱数ｓ（Ｎ）へ変換する。拡大関数１２０１は後述する。
（３）出力部１３０がステップＳ１３を実行する。ステップＳ１３では、出力部１３０が、乱数ｓ（Ｎ）のＮビットのうちＭビットよりも多い個数のＭ＋１個以上のビット値を乱数として出力する。
（４）出力部１３０が乱数として乱数ｓ（Ｎ）を出力した場合であれば、マスク部１４０は、秘密鍵ｋ（Ｎ）と乱数ｓ（Ｎ）との排他的論理和を求めることで、秘密鍵ｋ（Ｎ）がマスクされたデータ６０４を生成する。乱数ｒ（Ｍ）とデータ６０４とは、格納部１５０であるメモリやレジスタへ保存される。以上の動作で、所望のビット数の乱数を用いて、データのマスキングができる。
【００２５】
乱数拡大装置１００の特徴は、乱数の拡大に線形符号の技術を利用する点である。
図５は、線形符号の技術を利用して乱数を拡大する拡大部１２０の動作を示す図である。
拡大部１２０、乱数ｒ（Ｍ）を、拡大関数１２０１を用いることで、乱数ｓ（Ｎ）へ拡大する。拡大部１２０は、乱数の拡大に（Ｎ，Ｎ−Ｍ，Ｄ）線形符号を利用する。Ｎは符号長、Ｎ−Ｍは情報ビット長、Ｄは異なる符号語どうしの間のハミング距離の最小値を示す最小距離である。拡大関数１２０１は、検査行列１２０２との乗算で定義する。検査行列１２０２とは、（Ｎ、Ｎ−Ｍ、Ｄ）線形符号から決まるＭ×Ｎのサイズの行列である。検査行列１２０２は生成行列でもあるので、検査行列１２０２を生成行列と読み替えることができる。検査行列１２０２あるいは生成行列は、Ｍ×Ｎの次元を持つ。Ｍ×Ｎの次元を持つとは、Ｍ行Ｎ列あるいはＮ行Ｍ列であることを意味する。検査行列１２０２は生成行列でもあるので、以下では、拡大関数１２０１の定義に用いる行列は検査行列１２０２とする。検査行列１２０２は、Ｍ×Ｎの次元を持つので、Ｍビットの入力データであるｒ（Ｍ）を、Ｎビットの出力データｓ（Ｎ）として出力できる。拡大部１２０は、ビットの誤りを検出するためではなく、入力データである乱数ｒ（Ｍ）を乱数ｓ（Ｎ）に拡大するために誤り訂正符号を利用することを特徴の１つとする。
【００２６】
（Ｎ，Ｎ−Ｍ，Ｄ）線形符号の検査行列１２０２を用いて乱数を拡大する効果として、（Ｄ−１）本までのレーザ照射に対する安全を向上させることができる。それは、次の理由による。検査行列１２０２はＮ個の列を持つ。検査行列１２０２がＮ行Ｍ列の場合は転置すればよい。（Ｎ，Ｎ−Ｍ，Ｄ）線形符号の性質より、検査行列１２０２のどの（Ｄ−１）個の列も線形独立である。この線形独立に対応して、検査行列１２０２で拡大されたＮビットデータである乱数ｓ（Ｎ）のうち、どの（Ｄ−１）ビットを取り出しても線形独立である。もし仮に、線形従属なＡ列が存在したとすれば、それは乱数の不足を表す。そのため、Ａ本のレーザ照射を行うことで攻撃ができる。（Ｎ，Ｎ−Ｍ，Ｄ）線形符号を用いた場合、どの（Ｄ−１）も線形独立になるから、（Ｄ−１）本のレーザ照射まで、上述の攻撃を防ぐことができる。
【００２７】
図６は２か所以上に同時にレーザを照射する攻撃が成功する例を示す表である。図６を用いて、本実施の形態によらない場合は、２か所以上に同時にレーザを照射する攻撃が成功してしまう例を説明する。
保護したい２ビットの秘密鍵をｋ（２）とする。秘密鍵ｋ（２）の各ビットをｋ０、ｋ１とする。１ビットの乱数をｒとする。攻撃者は、レーザ照射後の秘密鍵ｋ（２）のビットは（０，０）になることを知っている。列５０１は秘密鍵ｋ（２）がｋ０＝ｋ１の場合とｋ０≠ｋ１の場合である。列５０２はｋ０＝ｋ１の場合と、ｋ０≠ｋ１の場合との具体的なビットである。列５０３は乱数ｒの値を示す。列５０４はマスクされた秘密鍵ｋ（２）を示す。列５０５はレーザ照射後の値を示す。列５０６は誤りの有無を示す。列５０７は誤り確率を示す。攻撃者の目的は、ｋ０＝ｋ１かどうかを判定することである。ｋ０＝ｋ１かどうかを判定することは、鍵の１ビットを取得したのと同じ効果がある。秘密鍵ｋ（２）を、１ビットの乱数ｒを用いてマスクする。マスクされた値は列５０４である。攻撃者は、マスクされた値を保持するレジスタの２か所に、レーザを照射する。列５０６に示すように、ｋ０＝ｋ１ならば、誤らない場合がある。一方、ｋ０≠ｋ１ならば、必ず誤りが発生する。よって、誤らない場合があるかどうかを試行することで、攻撃者はｋ０＝ｋ１かどうかを判定することできる。それは、攻撃の成功を意味する。図６に示す攻撃に対して、本実施の形態の方法を適用することで（Ｄ−１）本のレーザ照射まで、対抗することができる。
【００２８】
図７は、検査行列１２０２を用いて、拡大部１２０が乱数ｒ（８）を乱数ｓ（１５）に拡大する例を示す。
図７は「今井秀樹，”符号理論”，電子情報通信学会，１９９０．」で開示される（１５，７，５）線形符号を用いる場合の例であり、Ｎ＝１５，Ｍ＝８である。そのため、検査行列１２０２のサイズは８×１５である。行列１２０２−１は、検査行列１２０２の転置行列であり、大きさは１５行８列である。行列１２０２−１と乱数ｒ（８）とを乗じることで、乱数ｒ（８）を１５ビットの乱数ｓ（１５）に拡大できる。検査行列１２０２と、乱数ｒ（８）を８成分のベクトルとする場合のこのベクトルとの乗算は、ＸＯＲ乗算である。行列１２０２−１を用いて生成された乱数ｓ（１５）でレジスタの秘密鍵ｋ（１５）をマスクすれば、４本の同時レーザ照射まで安全性を保つことができる。ＸＯＲ乗算の結果である値８０２の各ビットとなる各成分は、元の乱数ｒ（８）の各ビット（ｒ１，・・・，ｒ８）の排他的論理和となる。つまり、乱数ｓ（１５）のｓ１等の各ビットは、ｒ１等の排他的論理和である。図７に示すように、拡大部１２０は、Ｍ×Ｎのサイズの行列１２０２−１と乱数ｒ（Ｍ）とのＸＯＲ乗算によって得られるＮ個の成分を、乱数ｓ（Ｎ）として生成する。
【００２９】
なお図７では転置行列１２０２−１を用いているが便宜上である。（１５，７，５）線形符号から決まる１５×８のサイズの検査行列１２０２と、乱数ｒ（８）とのＸＯＲ乗算をして、乱数ｓ（１５）を得ることができるように計算すればよい。つまり、（Ｎ，Ｎ−Ｍ，Ｄ）線形符号から決まるＭ×Ｎのサイズの検査行列１２０２と乱数ｒ（Ｍ）とを乗じて乱数ｓ（Ｎ）を得ることができればよい。具体的には、検査行列１２０２をＨ、行列Ｈの転置行列をＨｔとした場合に、
（１）ＨがＮ行Ｍ列であれば、乱数ｒ（Ｍ）をＭ行１列としてＨ×ｒ（Ｍ）を計算すればよい。あるいは乱数ｒ（Ｍ）を１行Ｍ列としてｒ（Ｍ）を×Ｈｔを計算すればよい。
（２）ＨがＭ行Ｎ列であれば、乱数ｒ（Ｍ）を１行Ｍ列としてｒ（Ｍ）×Ｈを計算すればよい。あるいは乱数ｒ（Ｍ）をＭ行１列としてＨｔ×ｒ（Ｍ）を計算すればよい。
【００３０】
図１、図２等に示した構成はハードウェアで構成しても良いし、ソフトウェアで構成しても良いし、ハードウェアとソフトウェアの組み合わせで構成しても良い。
図８は、図７に示した検査行列１２０２の乗算をハードウェアで実装する場合を示す。拡大部１２０は、論理演算を実行する論理演算回路１２１を備える。
図８において、受信部１１０は入力段の各ＸＯＲ論理ゲートの入力端子１１１であり、出力部１３０は出力段の各ＸＯＲ論理ゲートの出力端子１３１である。論理演算回路１２１は、複数の排他的論理和回路１２１−１を備える。図８の一番上の回路１２１ａは、乱数ｓ（１５）のｓ１ビットを計算する回路である。二番上の回路１２１ｂは、乱数ｓ（１５）のｓ２ビットを計算する回路である。図８の一番下の回路１２１ｄは、乱数ｓ（１５）のｓ１５ビットを計算する回路である。下から二番上の回路１２１ｃは、乱数ｓ（１５）のｓ１４ビットを計算する回路である。ｓ３ビット〜ｓ１３ビットを計算する回路は省略した。排他的論理は、排他的論理和の論理ゲートによって直接的に実現できる。よって、排他的論理和のネットワークを用いることで、小型、高速な回路が実装できる。
【００３１】
乱数拡大装置１００は、マスクされたデータを復号する復号部を備えてもよい。
図９は、乱数拡大装置１００が復号部１６０を有する場合のブロック図である。
図１０は、図９の回路構成を示すが、乱数ｒ（Ｍ）をｒと表記している。
図１０の乱数拡大装置１００は、乱数ｒ（Ｍ）を格納するレジスタ１０００、乱数ｒ（Ｍ）を拡大する回路である拡大部１２０、マスク部１４０であるＸＯＲ論理ゲート１００３、マスクを取り外す復号部１６０であるＸＯＲ論理ゲート１００４、およびマスクしたデータを格納する格納部１５０であるレジスタ１００５を備える。拡大関数１２０１は検査行列１２０２を用いる。図１０の拡大部１２０の具体的な構成は、この実施の形態では図８に示すようなＸＯＲ論理ゲートのネットワークであるが、プログラムで構成しても良いのは前述のとおりである。Ｎビットの秘密情報ｘのマスキングは次のように行う。ｆは拡大関数１２０１を示す。まず、レジスタ１０００に格納する乱数ｒ（Ｍ）を、拡大部１２０によってＮビットの乱数ｆ（ｒ）に変換する。なおｆ（ｒ）＝ｓ（Ｎ）である。ｆ（ｒ）＝ｓ（Ｎ）とＮビットの秘密情報ｘとの排他的論理和を取ることで、マスクされた値ｘ＜＋＞ｆ（ｒ）を得る。レジスタ１００５には、マスクされた値であるｘ＜＋＞ｆ（ｒ）が格納される。レジスタ１００５の出力は、ＸＯＲ論理ゲート１００４に接続されている。ＸＯＲ論理ゲート１００４により、ｘ＜＋＞ｆ（ｒ）＜＋＞ｆ（ｒ）＝ｘとなり、マスク前の秘密情報Ｘが復元される。
【００３２】
図１１、図１２を参照して再マスクを説明する。
乱数マスキングにおいては、マスクの値を付け替えたい場合がある。マスクの値を付け替えることで、安全性が向上する可能性がある。マスク値の付け替えを再マスクと呼ぶ。乱数拡大装置１００によれば、再マスクを効率的に行うことができる。
図１１は、再マスクにおける拡大部１２０、マスク部１４０の動作を示す。図１１を用いて再マスクを説明する。
Ｍビットの乱数を第一の乱数ｒ<１>、第二の乱数ｒ<２>とする。ｒ<１>、ｒ<２>が拡大されたＮビットの乱数をｓ<１>、ｓ<２>とする。今、ｆ（ｒ<１>）でマスクされた値ｘ＜＋＞ｆ（ｒ<１>）を、別のマスクされた値ｘ＜＋＞ｆ（ｒ<２>）へ再マスクしたいとする。乱数ｓ<１>＝ｆ（ｒ<１>）、乱数ｓ<２>＝ｆ（ｒ<２>）である。また、ｘは秘密情報、ｒ<１>は旧マスク用の乱数、ｒ<２>は新マスク用の乱数である。まず、ＸＯＲ論理ゲート１１００が、ｒ<１>＜＋＞ｒ<２>を生成する。
【００３３】
次に、受信部１１０は、第三の乱数ｒ<３>，（Ｍ）であるｒ<１>＜＋＞ｒ<２>を受信する。拡大部１２０は、ｒ<１>＜＋＞ｒ<２>を乱数ｆ（ｒ<１>＜＋＞ｒ<２>）に拡大する。出力部１３０は乱数ｆ（ｒ<１>＜＋＞ｒ<２>）を出力する。検査行列１２０２との乗算で定義される拡大関数ｆは線形であるので、ｆ（ｒ<１>＜＋＞ｒ<２>）＝ｆ（ｒ<１>）＜＋＞ｆ（ｒ<２>）＝ｓ<１>＜＋＞ｓ<２>が成り立つ。マスク部１４０は、マスクされた値であるｘ＜＋＞ｆ（ｒ<１>）と、拡大された乱数であるｆ（ｒ<１>）＜＋＞ｆ（ｒ<２>）との排他的論理和を取る。これによって、マスク部１４０はｘ＜＋＞ｆ（ｒ<１>）＜＋＞ｆ（ｒ<１>）＜＋＞ｆ（ｒ<２>）＝ｘ＜＋＞ｆ（ｒ<２>）を得る。よって、新たな値であるｘ＜＋＞ｆ（ｒ<２>）は、再マスクの結果になっている。
【００３４】
以上の拡大関数ｆを用いた再マスクの方法には、２つの重要な利点がある。第１に、拡大関数ｆを１つだけ用意すればよいことである。第２に、マスクされていない元の値ｘに戻すことなく、再マスクが達成されることであり、安全性が向上する可能性がある。
【００３５】
図１２は、再マスクを行う場合の乱数拡大装置１００の回路構成を示し、図９のブロック図に対応する。図１２は、図９に示す回路構成を拡張して再マスク機能を追加した。
図１２では、図９に対して新しい乱数ｒ<２>のレジスタ１０１０、乱数ｒ<１>とｒ<２>とを加算するＸＯＲ論理ゲート１０２０、セレクタ１０３０を追加した。ＸＯＲ論理ゲート１００４は図１０での復号部１６０の機能に加え、マスク部１４０の機能も有する。図１０の回路を用いることで、再マスクを実現できる。
【００３６】
図１３は、図１２の乱数拡大装置１００の動作を示すフローチャートである。
図１３を参照して動作を説明する。
Ｓ２１において、乱数ｒ<１>のみがＸＯＲ論理ゲート１０２０に送られる。ＸＯＲ論理ゲート１０２０の出力は乱数ｒ<１>である。
Ｓ２２において、拡大部１２０はｓ<１>＝ｆ（ｒ<１>）を生成し、ｆ（ｒ<１>）が出力部１３０から出力される。
Ｓ２３において、ＸＯＲ論理ゲート１００３で秘密情報ｘとｆ（ｒ<１>）との排他的論理和がとられる。
Ｓ２４において、ｘ＜＋＞ｆ（ｒ<１>）がセレクタ１０３０から出力される。
Ｓ２５において、レジスタ１００５に、ｘ＜＋＞ｆ（ｒ<１>）が格納される。
【００３７】
次に、Ｓ３１において、乱数ｒ<１>と乱数ｒ<２>とがＸＯＲ論理ゲート１０２０に送られる。ＸＯＲ論理ゲート１０２０の出力は、ｒ<１>＜＋＞ｒ<２>である。
Ｓ３２において、拡大部１２０は、ｒ<１>＜＋＞ｒ<２>を、拡大関数ｆによって、ｆ（ｒ<１>＜＋＞ｒ<２>）＝ｆ（ｒ<１>）＜＋＞ｆ（ｒ<２>）に拡大し、出力部１３０がｆ（ｒ<１>）＜＋＞ｆ（ｒ<２>）を出力する。
Ｓ３３において、ＸＯＲ論理ゲート１００４で、出力部１３０から出力されたｆ（ｒ<１>）＜＋＞ｆ（ｒ<２>）と、レジスタ１００５から出力されたｘ＜＋＞ｆ（ｒ<１>）との排他的論理和がとられる。よって、ＸＯＲ論理ゲート１００４から、ｘ＜＋＞ｆ（ｒ<１>）＜＋＞ｆ（ｒ<１>）＜＋＞ｆ（ｒ<２>）＝ｘ＜＋＞ｆ（ｒ<２>）が出力される。
Ｓ３４において、セレクタ１０３０からｘ＜＋＞ｆ（ｒ<２>）が出力されて、ｘ＜＋＞ｆ（ｒ<２>）がレジスタ１００５に格納される。これによって、再マスクが完了する。再マスクされたｘ＜＋＞ｆ（ｒ<２>）を復号するには、ＸＯＲ論理ゲート１０２０に乱数ｒ<２>のみを送り、拡大部１２０で乱数ｒ<２>をｆ（ｒ<２>）に拡大し、ｆ（ｒ<２>）と、レジスタ１００５に格納されたｘ＜＋＞ｆ（ｒ<２>）とをＸＯＲ論理ゲート１００４でＸＯＲすればよい。
【００３８】
図１４は、拡大部１２０が行う切り詰め処理を説明する図である。
図１４を参照して切り詰め処理を説明する。
以下では、Ｎ、Ｖ、Ｍは正の整数であり、Ｎ＞Ｖ＞Ｍである。乱数ｒ（Ｍ）を乱数ｓ（Ｖ）に拡大したい場合に、（Ｖ，Ｖ−Ｍ，Ｄ）線形符号が存在するとは限らない。その時は、切り詰めを行うことができる。切り詰め処理を図１４を用いて説明する。Ｍビットの乱数ｒ（Ｍ）をＶビットの乱数ｓ（Ｖ）に拡大したいが、都合のよい（Ｖ，Ｖ−Ｍ，Ｄ）線形符号を作ることができないと仮定する。ただし、Ｎ＞ＶなるＮを選んで、（Ｎ，Ｎ−Ｍ，Ｄ）符号を作ることができるとする。その場合、（Ｎ，Ｎ−Ｍ，Ｄ）符号の検査行列１２０２を拡大関数１２０１に用いることができる。拡大関数１２０１の出力はＮビットである。つまり拡大部１２０は、乱数ｒ（Ｍ）を乱数ｓ（Ｎ）に拡大したのち、乱数ｓ（Ｎ）からいくつかのビットを捨てることで、Ｖビットの乱数ｓ（Ｖ）を生成する。そのようにして作った出力である乱数ｓ（Ｖ）を、マスキング乱数として用いることができる。
【００３９】
図１５は、乱数拡大装置１００がビット列に含まれる誤りを検出する誤り検出部１７０を備えるブロック図である。
拡大部１２０は、乱数ｒ（Ｍ）を乱数ｓ（Ｎ）に拡大する場合に、誤り検出部１７０の少なくとも一部を利用する。誤り検出部は誤り訂正符号のためのハードウェアである回路でもよいし、誤り訂正符号のためのプログラムの場合でもよい。誤り検出部１７０の少なくとも一部を利用することで、回路規模、プログラムの大きさを低減できる。
【００４０】
＊＊＊効果の説明＊＊＊
本実施の形態によって拡大された乱数でマスクされたデータを格納するレジスタを束ねることで、レーザ照射に耐性を持つレジスタファイルを作ることができる。
また、本実施の形態によって拡大された乱数でマスクされたデータを揮発メモリへ格納することで、レーザ照射に耐性を持つ揮発メモリを実現できる。
【００４１】
実施の形態２．
図１６は乱数拡大装置１００をコンピュータで実現する場合のハードウェア構成例である。図１６を参照して説明する。
コンピュータである乱数拡大装置１００は、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力インタフェース９０５、ディスプレイインタフェース９０６といったハードウェアを備える。プロセッサ９０１は、信号線９１０を介して他のハードウェアと接続され、これら他のハードウェアを制御する。入力インタフェース９０５は、入力装置９０７に接続されている。ディスプレイインタフェース９０６は、ディスプレイ９０８に接続されている。
【００４２】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９０１は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。メモリ９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。通信装置９０４は、データを受信するレシーバー９０４１及びデータを送信するトランスミッター９０４２を含む。通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。入力インタフェース９０５は、入力装置９０７のケーブル９１１が接続されるポートである。入力インタフェース９０５は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。ディスプレイインタフェース９０６は、ディスプレイ９０８のケーブル９１２が接続されるポートである。ディスプレイインタフェース９０６は、例えば、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。入力装置９０７は、例えば、マウス、キーボード又はタッチパネルである。ディスプレイ９０８は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００４３】
補助記憶装置９０２には、図９に示す受信部１１０、拡大部１２０、出力部１３０、マスク部１４０、格納部１５０、復号部１６０（以下、受信部１１０〜復号部１６０をまとめて「部」と表記する）の機能を実現するプログラムが記憶されている。このプログラムは、メモリ９０３にロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。更に、補助記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。そして、ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
図１６では、１つのプロセッサ９０１が図示されているが、乱数拡大装置１００が複数のプロセッサ９０１を備えていてもよい。そして、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。また、「部」の処理の結果を示す情報やデータや信号値や変数値が、メモリ９０３、補助記憶装置９０２、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリに記憶される。
【００４４】
「部」を「サーキットリー」で提供してもよい。また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。「回路」及び「サーキットリー」は、プロセッサ９０１だけでなく、ロジックＩＣ又はＧＡ（Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）又はＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【００４５】
図１７は、実施の形態１で説明した乱数拡大装置１００を半導体装置２００で実現すする図である。
半導体装置２００は、乱数拡大装置１００として複数の回路を備えている。半導体装置２００のレジスタ２１０には、マスクされた秘密鍵と、拡大される前の乱数ｒ（Ｍ）とが格納される。
【符号の説明】
【００４６】
１００  乱数拡大装置、１１０  受信部、１２０  拡大部、１２１  論理演算回路、１２１−１  排他的論理和回路、１３０  出力部、１４０  マスク部、１５０  格納部、１６０  復号部、１７０  誤り検出部。
【図１】
2016113886.tif 000003
【図２】
2016113886.tif 000004
【図３】
2016113886.tif 000005
【図４】
2016113886.tif 000006
【図５】
2016113886.tif 000007
【図６】
2016113886.tif 000008
【図７】
2016113886.tif 000009
【図８】
2016113886.tif 000010
【図９】
2016113886.tif 000011
【図１０】
2016113886.tif 000012
【図１１】
2016113886.tif 000013
【図１２】
2016113886.tif 000014
【図１３】
2016113886.tif 000015
【図１４】
2016113886.tif 000016
【図１５】
2016113886.tif 000017
【図１６】
2016113886.tif 000018
【図１７】
2016113886.tif 000019
【手続補正書】
【提出日】平成28年9月21日(2016.9.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
Ｍビットの乱数ｒ（Ｍ）を受信する受信部と、
誤り訂正の線形符号から決まるＭ×Ｎサイズの検査行列とＭ×Ｎサイズの生成行列とのうちの一方の行列と、乱数ｒ（Ｍ）をＭ成分のベクトルとする場合の前記ベクトルとの乗算であり、加法を排他的論理和とする乗算によって得られる論理演算を用いて、乱数ｒ（Ｍ）をＮビットの乱数ｓ（Ｎ）に拡大する拡大部と、
乱数ｓ（Ｎ）のＮビットのうちＭビットよりも多いビット値を乱数として出力する出力部と
を備える乱数拡大装置。
【請求項２】
前記拡大部は、
一方の行列と乱数ｒ（Ｍ）との前記乗算によって得られるＮ個の成分を、乱数ｓ（Ｎ）として生成する請求項１に記載の乱数拡大装置。
【請求項３】
前記拡大部は、
乱数ｓ（Ｎ）から少なくとも１ビットを除くことによって、整数Ｎよりも小さく整数Ｍよりも大きい整数Ｖで表されるＶビットの乱数ｓ（Ｖ）を生成し、
前記出力部は、
乱数ｓ（Ｖ）を出力する請求項１または請求項２に記載の乱数拡大装置。
【請求項４】
前記拡大部は、
前記論理演算を実行する論理演算回路を備える請求項１から請求項３のいずれか一項に記載の乱数拡大装置。
【請求項５】
前記論理演算回路は、
複数の排他的論理和回路を備える請求項４に記載の乱数拡大装置。
【請求項６】
前記乱数拡大装置は、さらに、
データを、前記出力部によって出力される乱数でマスクするマスク部と、
前記マスク部によってマスクされたデータを格納する格納部と
を備える請求項１から請求項５のいずれか一項に記載の乱数拡大装置。
【請求項７】
前記受信部は、
乱数ｒ（Ｍ）として、Ｍビットの第一の乱数ｒ<１>，（Ｍ）とＭビットの第二の乱数ｒ<２>，（Ｍ）とが排他的論理和された第三の乱数ｒ<３>，（Ｍ）を受信し、
前記拡大部は、
第三の乱数ｒ<３>，（Ｍ）を、第一の乱数ｒ<１>，（Ｍ）が拡大された乱数に相当するＮビットの乱数ｓ<１>，（Ｎ）と、第二の乱数ｒ<２>，（Ｍ）が拡大された乱数に相当するＮビットの乱数ｓ<２>，（Ｎ）との排他的論理和として得られるＸＯＲ乱数に拡大し、
前記格納部は、
乱数ｓ<１>，（Ｎ）でマスクされたデータを格納し、
前記マスク部は、
乱数ｓ<１>，（Ｎ）でマスクされたデータと、前記拡大部によって拡大されたＸＯＲ乱数との演算によって、乱数ｓ<１>，（Ｎ）でマスクされたデータを、乱数ｓ<２>，（Ｎ）でマスクされたデータに変換する再マスクを行う請求項６に記載の乱数拡大装置。
【請求項８】
前記乱数拡大装置は、さらに、
ビット列に含まれる誤りを検出する誤り検出部を備え、
前記拡大部は、
乱数ｒ（Ｍ）を乱数ｓ（Ｎ）に拡大する場合に、前記誤り検出部の少なくとも一部を利用する請求項１から請求項７のいずれか一項に記載の乱数拡大装置。
【請求項９】
受信部が、Ｍビットの乱数ｒ（Ｍ）を受信し、
拡大部が、誤り訂正の線形符号から決まるＭ×Ｎサイズの検査行列とＭ×Ｎサイズの生成行列とのうちの一方の行列と、乱数ｒ（Ｍ）をＭ成分のベクトルとする場合の前記ベクトルとの乗算であり、加法を排他的論理和とする乗算によって得られる論理演算を用いて、論理演算回路によって乱数ｒ（Ｍ）をＮビットの乱数ｓ（Ｎ）に拡大し、
出力部が、乱数ｓ（Ｎ）のＮビットのうちＭビットよりも多いビット値を出力する乱数拡大方法。
【請求項１０】
コンピュータに、
受信部が、Ｍビットの乱数ｒ（Ｍ）を受信する処理、
拡大部が、誤り訂正の線形符号から決まるＭ×Ｎサイズの検査行列とＭ×Ｎサイズの生成行列とのうちの一方の行列と、乱数ｒ（Ｍ）をＭ成分のベクトルとする場合の前記ベクトルとの乗算であり、加法を排他的論理和とする乗算によって得られる論理演算を用いて、乱数ｒ（Ｍ）をＮビットの乱数ｓ（Ｎ）に拡大する処理、
出力部が、乱数ｓ（Ｎ）のＮビットのうちＭビットよりも多いビット値を出力する処理、
を実行させるための乱数拡大プログラム。
【国際調査報告】
2016113886.tif 000020
2016113886.tif 000021
2016113886.tif 000022
2016113886.tif 000023
2016113886.tif 000024
2016113886.tif 000025