JP6273225B2 - 暗号化システム、暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号プログラム - Google Patents
暗号化システム、暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号プログラム Download PDFInfo
- Publication number
- JP6273225B2 JP6273225B2 JP2015036191A JP2015036191A JP6273225B2 JP 6273225 B2 JP6273225 B2 JP 6273225B2 JP 2015036191 A JP2015036191 A JP 2015036191A JP 2015036191 A JP2015036191 A JP 2015036191A JP 6273225 B2 JP6273225 B2 JP 6273225B2
- Authority
- JP
- Japan
- Prior art keywords
- state
- result
- block
- calculation
- exclusive
- 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.)
- Active
Links
Images
Description
SPONGEWRAPの暗号化関数は、ステートと呼ばれるbビットのデータを、bビットの置換f:{0,1}b→{0,1}bと入力データ(N,A,M)と鍵Kを用いて繰り返しアップデートを行いながらCとTを計算する。またbビットのステートは、レートと呼ばれるrビットと、キャパシティと呼ばれるc(=b−r)ビットに分割される。暗号化関数の計算の際、ステートの値は予め定められた初期値IVと呼ばれるbビットの値に初期化され(例えばIV=0)、fによりbビットの置換が行われ、ステートが更新される。暗号化関数の具体的な計算手順は以下の手順1から手順4で説明される通りである。図1に、SPONGEWRAPの暗号化での計算構造を示す。
鍵Kをr−1ビット毎に分割する。最終ブロックでは10*パディングと呼ばれるパディング処理を施す。具体的には、最終ブロックのビット長がr−1ビットより短い場合には、1ビットの値“1”を与し、その後r−1ビットになるまでビット“0”を付与する。最終ブロックのビット長が丁度r−1ビットの場合には、次のブロックの先頭のビットとして 1 ビットの値“1”を与し、その後r−1ビットになるまでビット“0”を付与する。
ナンスNと追加認証データAを連結し、r−1ビット毎に分割する。最終ブロックに対しては10*パディングを施す。NとAの連結をr−1ビット毎に分割したそれぞれの値に、1ビットのフレームビットを連結し、rビットにする。具体的には、最初のブロックから最終ブロックの一つ手前のブロックまではフレームビットを“0”とし、最終ブロックのみフレームビットを“1”とする。bビットのステートのうち、レート部分のrビットに対し、NもしくはAとフレームビットを連結した rビットの値との排他的論理和を計算し、置換fを計算する。fの出力を新たなステート値とする。この操作をN,Aの最終ブロックが排他的論理和されるまで続ける。
メッセージMをr−1ビット毎に分割する。最終ブロックに対しては10*パディングを施す。Mの連結をr−1ビット毎に分割したそれぞれの値に、1ビットのフレームビットを連結し、rビットにする。具体的には、最初のブロックから最終ブロックの一つ手前のブロックまではフレームビットを“1”とし、最終ブロックのみフレームビットを“0”とする。
bビットのステートのうち、レート部分のrビットをタグのrビットとして出力する。ステートに対し置換fを計算し、fの出力を新たなステート値とする。この操作をタグのビット数に達するまで続ける。タグ長がrの倍数でない場合、最後のrビットの出力を必要な端数に切り捨ててタグの出力とする。
SPONGEWRAPの復号関数は、暗号化関数とほぼ同様の計算を行う。図2に、SPONGEWRAPの復号での計算構造を示す。ステートはIVに初期化され、暗号化関数の手順1,2同じ処理を行う。手順3は暗号化関数と異なっており、bビットのステートのうち、レート部分のrビットとCのrビットの排他的論理和をとり、パディングやフレームビット付与の逆手順を通した値をM’のr−1ビットとする。bビットのステートのうち、レート部分のrビットをCのrビットに置き換え、置換fを計算する。fの出力を新たなステート値とする。この操作をCの最終ブロックが排他的論理和されるまで続ける。Cの最終ブロックのサイズがrの倍数でない場合、端数分のみをM’の生成とステートの置き換えに利用する。手順3終了後、暗号化関数の手順4と同じ処理を行い、タグT’を得る。計算したT’と受け取ったTを比較し、同じ値であればM’を復号されたメッセージとして出力する。一致しなかった場合は、復号に失敗したという結果を出力する。
非特許文献2に示されたdonkeySpongeは、SPONGEWRAPの追加認証データ処理部分を利用してメッセージ認証コードを計算する方法である。図3にdonkeySpongeの計算構造を示す。メッセージ認証コードを生成する目的では、鍵Kおよび入力Aをbビットステートの全ビットに排他的論理和をしても安全性を損なうことが無く、効率的に入力データを処理することができる。
非特許文献2に示されたmonkeyDuplexは、SPONGEWRAPのKとNの処理方法に工夫を加え、より効率的な計算を可能にする方法である。Kのcビットまでを、IVのcビットのキャパシティ部分とする。もしくは、Kのcビットまでと、別に定義されたcビット定数との排他的論理和をIVのcビットのキャパシティ部分とする。いずれの方法も、暗号化関数,復号関数で手順 1(Kの処理)におけるfの計算関数を少なくすることができるため、計算効率が上昇する。なお、Kがcビットに満たない場合、適切なパディングによりIVのcビットがすべて定義されるようにする。
暗号化装置100は、初期値設定部110、メッセージ分割部120、追加認証データ分割部130、暗号化部140、タグ計算部150、出力部190を備える。初期値設定部110は、Nを選択し、NとKを用いてbビットの初期値を生成し、初期値をfにより置換した結果をステートとする(S110)。例えば、初期値設定部110は、初期値として、レート部分にNを埋め込み、キャパシティ部分にKを埋め込めばよい。「埋め込む」とは、例えば、Nのビット数がrより小さいときはパディングによってrビットにした上でレート部分にすることを意味している。また、Nのビット数がrよりも大きい場合はNからrビットを切り出す、もしくはハッシュ関数などを用いてrビットに変換してレート部分にしてもよい。fはSPONGEWRAPで説明した置換と同じであり、あらかじめ暗号化装置100と復号装置200との間で定めておく。図6〜8では、110を付した点線で囲まれた部分が初期値設定部に相当する。
復号装置200は、入力部290、初期値設定部210、暗号文分割部220、追加認証データ分割部230、復号部240、タグ計算部250、検証部260を備える。入力部290は、C,T,A,Nの組を取得する(S290)。
SPONGEWRAPでは、追加認証データAとメッセージMを順番にr−1ビットごとに処理するため、|A|/(r−1)+|M|/(r−1)回数程度の置換演算fを行う必要があった。本発明の暗号化システムでは、キャパシティ部分に対して排他的論理和の演算を行っても、その結果を分からない状態にすれば暗号化の安全性を確保できることに着目している。そして、暗号化部140と復号部240の処理中でgの演算を行うことなどによって、結果が分からないようにしている。よって、本発明の暗号化システムによれば、キャパシティ部分と追加認証データAとの排他的論理和の計算と、レート部分とメッセージMとの排他的論理和の計算を並列に行うことができる。さらに、追加認証データAに対する処理とメッセージMに対する処理が異なるので、処理対象のデータが追加認証データAかメッセージMかを判別するために必要なフレームビットが不要となる。よって、追加認証データAはcビットごとに処理でき、メッセージMはrビットごとに処理できる。したがって、置換演算fを行う回数を、|A|/cと|M|/rの大きい方程度にできる。つまり、置換演算fの演算回数を少なくできる。
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
120 メッセージ分割部 130,230 追加認証データ分割部
140 暗号化部 150,250 タグ計算部
190 出力部 200 復号装置
220 暗号文分割部 240 復号部
260 検証部 290 入力部
800 ネットワーク
Claims (6)
- 暗号化装置と復号装置を有する暗号化システムであって、
Kを前記暗号化装置と前記復号装置の両方で共有する秘密鍵、Aを追加認証データ、Mをメッセージ、Cを暗号文、Tをタグ、K,A,Mをビット列、Nをすべてのビットが“0”のビット列を除くビット列、r,c,b,P,Qを1以上の整数、b=r+c、pを1以上P以下の整数、qを1以上Q以下の整数、Sをあらかじめ定めた1以上の整数、sを1以上S以下の整数、fをbビットの置換演算、gを0〜2c−1の整数からなる有限体の元と0と1以外のあらかじめ定めた定数との有限体上での乗算とし、
ステートを、あらかじめ定められたrビットがレート部分、cビットがキャパシティ部分であるbビットのビット列とし、
前記暗号化装置は、
Nを選択し、NとKを用いてbビットの暗号化用初期値を生成し、前記暗号化用初期値をfにより置換した結果をステートとする暗号化用初期値設定部と、
メッセージMを、パディングを用いてrビットごとのメッセージブロックm1,…,mPに分割するメッセージ分割部と、
追加認証データAを、パディングを用いてcビットごとの追加認証データブロックa1,…,aQに分割する暗号化用追加認証データ分割部と、
P=Qの場合は、
(1)ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=P−1まで繰り返し、
(2)ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換え、ステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算した結果を0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(3)暗号ブロックd1,…,dPの結合処理を用いて暗号文Cを求め、
P>Qの場合は、
(1)ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=Qまで繰り返し、
(2)P−1≧Q+1ならば、ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=Q+1からp=P−1まで繰り返し、
(3)ステートのレート部分とメッセージブロックmPとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdPとするともに、ステートのレート部分を当該計算の結果に置き換え、さらにキャパシティ部分のcビットを0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(4)暗号ブロックd1,…,dPの結合処理を用いて暗号文Cを求め、
P<Qの場合は、
(1)ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=Pまで繰り返し、
(2)P+1≦Q−1ならば、ステートのキャパシティ部分と追加認証データブロックaqとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、q=P+1からq=Q−1まで繰り返し、
(3)ステートのキャパシティ部分と追加認証データブロックaQとの排他的論理和を計算した結果を0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(4)暗号ブロックd1,…,dPの結合処理を用いて暗号文Cを求める
暗号化部と、
S=1の場合はステートのレート部分からタグTを求め、S≧2の場合は、ステートのレート部分をタグブロックt1とし、さらに、ステートをfにより置換した結果を新たなステートとしてレート部分をタグブロックtsとする処理をs=2からs=Sまで繰り返し、タグブロックt1,…,tSを用いてタグTを求める暗号化用タグ計算部と、
C,T,A,Nの組を出力する出力部と、
を備え、
前記復号装置は、
C,T,A,Nの組を取得する入力部と、
NとKを用いてbビットの復号用初期値を生成し、前記復号用初期値をfにより置換した結果をステートとする復号用初期値設定部と、
暗号文Cを、rビットごとの暗号ブロックd1,…,dPに分割する暗号文分割部と、
追加認証データAを、パディングを用いてcビットごとの追加認証データブロックa1,…,aQに分割する復号用追加認証データ分割部と、
P=Qの場合は、
(1)ステートのレート部分と暗号ブロックdpとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmp’とするとともに、ステートのレート部分を暗号ブロックdpに置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=P−1まで繰り返し、
(2)ステートのレート部分と暗号ブロックdPとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmP’とするともに、ステートのレート部分を暗号ブロックdPに置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算した結果を0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(3)メッセージブロックm1’,…,mP’からパディングで付加されたビットを取り除いた結合をしてメッセージM’とし、
P>Qの場合は、
(1)ステートのレート部分と暗号ブロックdpとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmp’とするとともに、ステートのレート部分を暗号ブロックdpに置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=Qまで繰り返し、
(2)P−1≧Q+1ならば、ステートのレート部分と暗号ブロックdpとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmp’とするとともに、ステートのレート部分を暗号ブロックdpに置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=Q+1からp=P−1まで繰り返し、
(3)ステートのレート部分と暗号ブロックdPとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmP’とするともに、ステートのレート部分を暗号ブロックdPに置き換え、キャパシティ部分のcビットを0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(4)メッセージブロックm1’,…,mP’からパディングで付加されたビットを取り除いた結合をしてメッセージM’とし、
P<Qの場合は、
(1)ステートのレート部分と暗号ブロックdpとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmp’とするとともに、ステートのレート部分を暗号ブロックdpに置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=Pまで繰り返し、
(2)P+1≦Q−1ならば、ステートのキャパシティ部分と追加認証データブロックaqとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、q=P+1からq=Q−1まで繰り返し、
(3)ステートのキャパシティ部分と追加認証データブロックaQとの排他的論理和を計算した結果を0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(4)メッセージブロックm1’,…,mP’からパディングで付加されたビットを取り除いた結合をしてメッセージM’とする
復号部と、
S=1の場合はステートのレート部分からタグT’を求め、S≧2の場合は、ステートのレート部分をタグブロックt1’とし、さらに、ステートをfにより置換した結果を新たなステートとしてレート部分をタグブロックts’とする処理をs=2からs=Sまで繰り返し、タグブロックt1’,…,tS’を用いてタグT’を求める復号用タグ計算部と、
タグTとタグT’とを比較する検証部と
を備える
暗号化システム。 - Kを暗号化装置と復号装置の両方で共有する秘密鍵、Aを追加認証データ、Mをメッセージ、Cを暗号文、Tをタグ、K,A,Mをビット列、Nをすべてのビットが“0”のビット列を除くビット列、r,c,b,P,Qを1以上の整数、b=r+c、pを1以上P以下の整数、qを1以上Q以下の整数、Sをあらかじめ定めた1以上の整数、sを1以上S以下の整数、fをbビットの置換演算、gを0〜2c−1の整数からなる有限体の元と0と1以外のあらかじめ定めた定数との有限体上での乗算とし、
ステートを、あらかじめ定められたrビットがレート部分、cビットがキャパシティ部分であるbビットのビット列とし、
Nを選択し、NとKを用いてbビットの初期値を生成し、前記初期値をfにより置換した結果をステートとする初期値設定部と、
メッセージMを、パディングを用いてrビットごとのメッセージブロックm1,…,mPに分割するメッセージ分割部と、
追加認証データAを、パディングを用いてcビットごとの追加認証データブロックa1,…,aQに分割する追加認証データ分割部と、
P=Qの場合は、
(1)ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=P−1まで繰り返し、
(2)ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換え、ステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算した結果を0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(3)暗号ブロックd1,…,dPの結合処理を用いて暗号文Cを求め、
P>Qの場合は、
(1)ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=Qまで繰り返し、
(2)P−1≧Q+1ならば、ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=Q+1からp=P−1まで繰り返し、
(3)ステートのレート部分とメッセージブロックmPとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdPとするともに、ステートのレート部分を当該計算の結果に置き換え、さらにキャパシティ部分のcビットを0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(4)暗号ブロックd1,…,dPの結合処理を用いて暗号文Cを求め、
P<Qの場合は、
(1)ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=Pまで繰り返し、
(2)P+1≦Q−1ならば、ステートのキャパシティ部分と追加認証データブロックaqとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、q=P+1からq=Q−1まで繰り返し、
(3)ステートのキャパシティ部分と追加認証データブロックaQとの排他的論理和を計算した結果を0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(4)暗号ブロックd1,…,dPの結合処理を用いて暗号文Cを求める
暗号化部と、
S=1の場合はステートのレート部分からタグTを求め、S≧2の場合は、ステートのレート部分をタグブロックt1とし、さらに、ステートをfにより置換した結果を新たなステートとしてレート部分をタグブロックtsとする処理をs=2からs=Sまで繰り返し、タグブロックt1,…,tSを用いてタグTを求めるタグ計算部と、
C,T,A,Nの組を出力する出力部と、
を備える暗号化装置。 - Kを暗号化装置と復号装置の両方で共有する秘密鍵、Aを追加認証データ、Mをメッセージ、Cを暗号文、Tをタグ、K,A,Mをビット列、Nをすべてのビットが“0”のビット列を除くビット列、r,c,b,P,Qを1以上の整数、b=r+c、pを1以上P以下の整数、qを1以上Q以下の整数、Sをあらかじめ定めた1以上の整数、sを1以上S以下の整数、fをbビットの置換演算、gを0〜2c−1の整数からなる有限体の元と0と1以外のあらかじめ定めた定数との有限体上での乗算とし、
ステートを、あらかじめ定められたrビットがレート部分、cビットがキャパシティ部分であるbビットのビット列とし、
C,T,A,Nの組を取得する入力部と、
NとKを用いてbビットの初期値を生成し、前記初期値をfにより置換した結果をステートとする初期値設定部と、
暗号文Cを、rビットごとの暗号ブロックd1,…,dPに分割する暗号文分割部と、
追加認証データAを、パディングを用いてcビットごとの追加認証データブロックa1,…,aQに分割する追加認証データ分割部と、
P=Qの場合は、
(1)ステートのレート部分と暗号ブロックdpとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmp’とするとともに、ステートのレート部分を暗号ブロックdpに置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=P−1まで繰り返し、
(2)ステートのレート部分と暗号ブロックdPとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmP’とするともに、ステートのレート部分を暗号ブロックdPに置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算した結果を0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(3)メッセージブロックm1’,…,mP’からパディングで付加されたビットを取り除いた結合をしてメッセージM’とし、
P>Qの場合は、
(1)ステートのレート部分と暗号ブロックdpとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmp’とするとともに、ステートのレート部分を暗号ブロックdpに置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=Qまで繰り返し、
(2)P−1≧Q+1ならば、ステートのレート部分と暗号ブロックdpとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmp’とするとともに、ステートのレート部分を暗号ブロックdpに置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=Q+1からp=P−1まで繰り返し、
(3)ステートのレート部分と暗号ブロックdPとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmP’とするともに、ステートのレート部分を暗号ブロックdPに置き換え、キャパシティ部分のcビットを0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(4)メッセージブロックm1’,…,mP’からパディングで付加されたビットを取り除いた結合をしてメッセージM’とし、
P<Qの場合は、
(1)ステートのレート部分と暗号ブロックdpとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmp’とするとともに、ステートのレート部分を暗号ブロックdpに置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=Pまで繰り返し、
(2)P+1≦Q−1ならば、ステートのキャパシティ部分と追加認証データブロックaqとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、q=P+1からq=Q−1まで繰り返し、
(3)ステートのキャパシティ部分と追加認証データブロックaQとの排他的論理和を計算した結果を0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(4)メッセージブロックm1’,…,mP’からパディングで付加されたビットを取り除いた結合をしてメッセージM’とする
復号部と、
S=1の場合はステートのレート部分からタグT’を求め、S≧2の場合は、ステートのレート部分をタグブロックt1’とし、さらに、ステートをfにより置換した結果を新たなステートとしてレート部分をタグブロックts’とする処理をs=2からs=Sまで繰り返し、タグブロックt1’,…,tS’を用いてタグT’を求めるタグ計算部と、
タグTとタグT’とを比較する検証部と
を備える復号装置。 - 暗号化装置と復号装置を用いた暗号化方法であって、
Kを前記暗号化装置と前記復号装置の両方で共有する秘密鍵、Aを追加認証データ、Mをメッセージ、Cを暗号文、Tをタグ、K,A,Mをビット列、Nをすべてのビットが“0”のビット列を除くビット列、r,c,b,P,Qを1以上の整数、b=r+c、pを1以上P以下の整数、qを1以上Q以下の整数、Sをあらかじめ定めた1以上の整数、sを1以上S以下の整数、fをbビットの置換演算、gを0〜2c−1の整数からなる有限体の元と0と1以外のあらかじめ定めた定数との有限体上での乗算とし、
ステートを、あらかじめ定められたrビットがレート部分、cビットがキャパシティ部分であるbビットのビット列とし、
前記暗号化装置が、
Nを選択し、NとKを用いてbビットの暗号化用初期値を生成し、前記暗号化用初期値をfにより置換した結果をステートとする暗号化用初期値設定ステップと、
メッセージMを、パディングを用いてrビットごとのメッセージブロックm1,…,mPに分割するメッセージ分割ステップと、
追加認証データAを、パディングを用いてcビットごとの追加認証データブロックa1,…,aQに分割する暗号化用追加認証データ分割ステップと、
P=Qの場合は、
(1)ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=P−1まで繰り返し、
(2)ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換え、ステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算した結果を0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(3)暗号ブロックd1,…,dPの結合処理を用いて暗号文Cを求め、
P>Qの場合は、
(1)ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=Qまで繰り返し、
(2)P−1≧Q+1ならば、ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=Q+1からp=P−1まで繰り返し、
(3)ステートのレート部分とメッセージブロックmPとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdPとするともに、ステートのレート部分を当該計算の結果に置き換え、さらにキャパシティ部分のcビットを0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(4)暗号ブロックd1,…,dPの結合処理を用いて暗号文Cを求め、
P<Qの場合は、
(1)ステートのレート部分とメッセージブロックmpとの排他的論理和を計算し、当該計算の結果をrビットの暗号ブロックdpとするとともに、ステートのレート部分を当該計算の結果に置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=Pまで繰り返し、
(2)P+1≦Q−1ならば、ステートのキャパシティ部分と追加認証データブロックaqとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、q=P+1からq=Q−1まで繰り返し、
(3)ステートのキャパシティ部分と追加認証データブロックaQとの排他的論理和を計算した結果を0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(4)暗号ブロックd1,…,dPの結合処理を用いて暗号文Cを求める
暗号化ステップと、
S=1の場合はステートのレート部分からタグTを求め、S≧2の場合は、ステートのレート部分をタグブロックt1とし、さらに、ステートをfにより置換した結果を新たなステートとしてレート部分をタグブロックtsとする処理をs=2からs=Sまで繰り返し、タグブロックt1,…,tSを用いてタグTを求める暗号化用タグ計算ステップと、
C,T,A,Nの組を出力する出力ステップと、
を実行し、
前記復号装置が、
C,T,A,Nの組を取得する入力ステップと、
NとKを用いてbビットの復号用初期値を生成し、前記復号用初期値をfにより置換した結果をステートとする復号用初期値設定ステップと、
暗号文Cを、rビットごとの暗号ブロックd1,…,dPに分割する暗号文分割ステップと、
追加認証データAを、パディングを用いてcビットごとの追加認証データブロックa1,…,aQに分割する復号用追加認証データ分割ステップと、
P=Qの場合は、
(1)ステートのレート部分と暗号ブロックdpとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmp’とするとともに、ステートのレート部分を暗号ブロックdpに置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=P−1まで繰り返し、
(2)ステートのレート部分と暗号ブロックdPとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmP’とするともに、ステートのレート部分を暗号ブロックdPに置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算した結果を0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(3)メッセージブロックm1’,…,mP’からパディングで付加されたビットを取り除いた結合をしてメッセージM’とし、
P>Qの場合は、
(1)ステートのレート部分と暗号ブロックdpとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmp’とするとともに、ステートのレート部分を暗号ブロックdpに置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=Qまで繰り返し、
(2)P−1≧Q+1ならば、ステートのレート部分と暗号ブロックdpとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmp’とするとともに、ステートのレート部分を暗号ブロックdpに置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=Q+1からp=P−1まで繰り返し、
(3)ステートのレート部分と暗号ブロックdPとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmP’とするともに、ステートのレート部分を暗号ブロックdPに置き換え、キャパシティ部分のcビットを0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(4)メッセージブロックm1’,…,mP’からパディングで付加されたビットを取り除いた結合をしてメッセージM’とし、
P<Qの場合は、
(1)ステートのレート部分と暗号ブロックdpとの排他的論理和を計算し、当該計算の結果をrビットのメッセージブロックmp’とするとともに、ステートのレート部分を暗号ブロックdpに置き換え、さらにステートのキャパシティ部分と追加認証データブロックapとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、p=1からp=Pまで繰り返し、
(2)P+1≦Q−1ならば、ステートのキャパシティ部分と追加認証データブロックaqとの排他的論理和を計算してキャパシティ部分を当該計算の結果に置き換えた上で、fにより置換した結果を新たなステートとする処理を、q=P+1からq=Q−1まで繰り返し、
(3)ステートのキャパシティ部分と追加認証データブロックaQとの排他的論理和を計算した結果を0〜2c−1の整数からなる有限体の元として扱ってgによる乗算を行い、キャパシティ部分を当該乗算で得られたビット列に置き換えた上で、fにより置換した結果を新たなステートとする処理を行い、
(4)メッセージブロックm1’,…,mP’からパディングで付加されたビットを取り除いた結合をしてメッセージM’とする
復号ステップと、
S=1の場合はステートのレート部分からタグT’を求め、S≧2の場合は、ステートのレート部分をタグブロックt1’とし、さらに、ステートをfにより置換した結果を新たなステートとしてレート部分をタグブロックts’とする処理をs=2からs=Sまで繰り返し、タグブロックt1’,…,tS’を用いてタグT’を求める復号用タグ計算ステップと、
タグTとタグT’とを比較する検証ステップと
を実行する
暗号化方法。 - 請求項2記載の暗号化装置としてコンピュータを機能させるための暗号化プログラム。
- 請求項3記載の復号装置としてコンピュータを機能させるための復号プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015036191A JP6273225B2 (ja) | 2015-02-26 | 2015-02-26 | 暗号化システム、暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015036191A JP6273225B2 (ja) | 2015-02-26 | 2015-02-26 | 暗号化システム、暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016157054A JP2016157054A (ja) | 2016-09-01 |
JP6273225B2 true JP6273225B2 (ja) | 2018-01-31 |
Family
ID=56825946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015036191A Active JP6273225B2 (ja) | 2015-02-26 | 2015-02-26 | 暗号化システム、暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6273225B2 (ja) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005114870A (ja) * | 2003-10-03 | 2005-04-28 | Japan Science & Technology Agency | 暗号通信システム |
JPWO2006019152A1 (ja) * | 2004-08-19 | 2008-05-08 | 株式会社日立製作所 | メッセージ認証子生成装置、メッセージ認証子検証装置、およびメッセージ認証子生成方法 |
US8121284B2 (en) * | 2006-03-14 | 2012-02-21 | Nec Corporation | Information processing system, information processing method, and information processing program |
WO2011068996A1 (en) * | 2009-12-04 | 2011-06-09 | Cryptography Research, Inc. | Verifiable, leak-resistant encryption and decryption |
SG194203A1 (en) * | 2011-05-10 | 2013-11-29 | Univ Nanyang Tech | Devices for computer-based generating of a mixing matrix for cryptographic processing of data, encrypting devices, methods for computer-based generating of a mixing matrix for cryptographic processing of data and encrypting methods |
JP5852518B2 (ja) * | 2012-06-18 | 2016-02-03 | 日本電信電話株式会社 | 認証暗号化装置、認証復号装置、およびプログラム |
TWI510046B (zh) * | 2013-07-04 | 2015-11-21 | Univ Nat Cheng Kung | 認證式加解密方法 |
US10403173B2 (en) * | 2013-08-13 | 2019-09-03 | Fiske Software, Llc | NADO cryptography using one-way functions |
-
2015
- 2015-02-26 JP JP2015036191A patent/JP6273225B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2016157054A (ja) | 2016-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2526505B1 (en) | Device and method for obtaining a cryptographic key | |
JP5710460B2 (ja) | 暗号化鍵生成装置およびプログラム | |
CN105721156B (zh) | 对数据进行编码和数字签名的方法和相关设备 | |
JP6588048B2 (ja) | 情報処理装置 | |
JPWO2007126049A1 (ja) | プログラム難読化システム、プログラム難読化装置及びプログラム難読化方法 | |
JP6305642B2 (ja) | メッセージ認証子生成装置、メッセージ認証子生成方法及びメッセージ認証子生成プログラム | |
CN110493201B (zh) | 一种数据的处理方法、装置和系统 | |
KR101942030B1 (ko) | 메시지에 대한 무결성 검증이 지원되는 부호 기반의 암호화가 가능한 전자 장치 및 그 동작 방법 | |
CN107534549B (zh) | 可读存储介质、用于数据流字块加密的方法及系统 | |
US20190363891A1 (en) | Encryption device and decryption device | |
JP6273226B2 (ja) | 暗号化システム、認証システム、暗号化装置、復号装置、認証子生成装置、検証装置、暗号化方法、認証方法 | |
WO2017063986A1 (en) | A cryptographic device and an encoding device | |
JP6273224B2 (ja) | 暗号化システム、暗号化装置、復号装置、暗号化方法 | |
CN113132078B (zh) | 一种基于同态承诺的区块链隐私保护方法及区块链系统 | |
WO2020188906A1 (ja) | 署名装置、検証装置、署名方法、検証方法、署名プログラム及び検証プログラム | |
JP6059159B2 (ja) | シェア変換システム、シェア変換方法、プログラム | |
JP6273225B2 (ja) | 暗号化システム、暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号プログラム | |
JP6273223B2 (ja) | 暗号化システム、暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号プログラム | |
JP6797337B2 (ja) | メッセージ認証装置、メッセージ認証方法及びメッセージ認証プログラム | |
JP6629461B2 (ja) | 回路秘匿装置、秘密計算システムおよびプログラム | |
Omote et al. | D2-POR: direct repair and dynamic operations in network coding-based proof of retrievability | |
JP6830867B2 (ja) | 追加データ付き認証暗号システム、復号装置、追加データ付き認証暗号方法、およびプログラム | |
JP2017038336A (ja) | 復号方法 | |
Gorke et al. | Cloud storage file recoverability | |
US20230113612A1 (en) | Apparatus and Method for Generating Physical Unclonable Function (PUF) Based Challenge Response Pair |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170302 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171211 |
|
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: 20171226 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180105 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6273225 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |