JP7406108B2 - 暗号復号システム、暗号復号方法、及び暗号復号用プログラム - Google Patents
暗号復号システム、暗号復号方法、及び暗号復号用プログラム Download PDFInfo
- Publication number
- JP7406108B2 JP7406108B2 JP2020164201A JP2020164201A JP7406108B2 JP 7406108 B2 JP7406108 B2 JP 7406108B2 JP 2020164201 A JP2020164201 A JP 2020164201A JP 2020164201 A JP2020164201 A JP 2020164201A JP 7406108 B2 JP7406108 B2 JP 7406108B2
- Authority
- JP
- Japan
- Prior art keywords
- decryption
- generation unit
- common key
- encryption
- key
- 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
- 238000000034 method Methods 0.000 title claims description 98
- 238000013507 mapping Methods 0.000 claims description 185
- 238000004364 calculation method Methods 0.000 claims description 87
- 230000006870 function Effects 0.000 claims description 39
- 238000012545 processing Methods 0.000 claims description 33
- 238000010586 diagram Methods 0.000 description 45
- 230000008569 process Effects 0.000 description 30
- 230000008030 elimination Effects 0.000 description 17
- 238000003379 elimination reaction Methods 0.000 description 17
- 230000000739 chaotic effect Effects 0.000 description 15
- 230000014509 gene expression Effects 0.000 description 10
- 238000007726 management method Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 4
- 102220588435 Keratin, type I cytoskeletal 18_S34A_mutation Human genes 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 102220554721 Transmembrane protease serine 11A_S43A_mutation Human genes 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- XPYGGHVSFMUHLH-UUSULHAXSA-N falecalcitriol Chemical compound C1(/[C@@H]2CC[C@@H]([C@]2(CCC1)C)[C@@H](CCCC(O)(C(F)(F)F)C(F)(F)F)C)=C\C=C1\C[C@@H](O)C[C@H](O)C1=C XPYGGHVSFMUHLH-UUSULHAXSA-N 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- NCGICGYLBXGBGN-UHFFFAOYSA-N 3-morpholin-4-yl-1-oxa-3-azonia-2-azanidacyclopent-3-en-5-imine;hydrochloride Chemical compound Cl.[N-]1OC(=N)C=[N+]1N1CCOCC1 NCGICGYLBXGBGN-UHFFFAOYSA-N 0.000 description 1
- 102220560887 Aldehyde dehydrogenase family 16 member A1_S36A_mutation Human genes 0.000 description 1
- 102220560886 Aldehyde dehydrogenase family 16 member A1_S38A_mutation Human genes 0.000 description 1
- 102220561477 Aldehyde dehydrogenase family 16 member A1_S85A_mutation Human genes 0.000 description 1
- 102220561414 Aldehyde dehydrogenase family 16 member A1_S88A_mutation Human genes 0.000 description 1
- 102220490931 Annexin A1_S27A_mutation Human genes 0.000 description 1
- 102220491288 Annexin A1_S45A_mutation Human genes 0.000 description 1
- 102220522837 Brain acid soluble protein 1_S87A_mutation Human genes 0.000 description 1
- 102220571247 Cell division cycle protein 20 homolog_S41A_mutation Human genes 0.000 description 1
- 102220485819 Desmoplakin_S28A_mutation Human genes 0.000 description 1
- 102220485816 Desmoplakin_S32A_mutation Human genes 0.000 description 1
- 102220636733 E3 ubiquitin-protein ligase RFWD3_S46A_mutation Human genes 0.000 description 1
- 102220636731 E3 ubiquitin-protein ligase RFWD3_S63A_mutation Human genes 0.000 description 1
- 102220638505 E3 ubiquitin-protein ligase RFWD3_S84A_mutation Human genes 0.000 description 1
- 102220638215 E3 ubiquitin-protein ligase RFWD3_S92A_mutation Human genes 0.000 description 1
- 102220638235 E3 ubiquitin-protein ligase RFWD3_S95A_mutation Human genes 0.000 description 1
- 102220491781 High mobility group protein B1_S35A_mutation Human genes 0.000 description 1
- 101001115218 Homo sapiens Ubiquitin-40S ribosomal protein S27a Proteins 0.000 description 1
- 102220588441 Keratin, type I cytoskeletal 18_S30A_mutation Human genes 0.000 description 1
- 102220588436 Keratin, type I cytoskeletal 18_S31A_mutation Human genes 0.000 description 1
- 102220588433 Keratin, type I cytoskeletal 18_S42A_mutation Human genes 0.000 description 1
- 102220588444 Keratin, type I cytoskeletal 18_S44A_mutation Human genes 0.000 description 1
- 102220588443 Keratin, type I cytoskeletal 18_S47A_mutation Human genes 0.000 description 1
- 102220588696 Keratin, type I cytoskeletal 18_S51A_mutation Human genes 0.000 description 1
- 102220471249 M-phase inducer phosphatase 1_S82A_mutation Human genes 0.000 description 1
- 102220473584 Putative ankyrin repeat domain-containing protein 26-like protein_S67A_mutation Human genes 0.000 description 1
- 102220490463 S-adenosylhomocysteine hydrolase-like protein 1_S62A_mutation Human genes 0.000 description 1
- 102220490404 S-adenosylhomocysteine hydrolase-like protein 1_S66A_mutation Human genes 0.000 description 1
- 102220483407 Septin-4_S91A_mutation Human genes 0.000 description 1
- 102220471539 Single-stranded DNA cytosine deaminase_S39A_mutation Human genes 0.000 description 1
- 102220471544 Single-stranded DNA cytosine deaminase_S86A_mutation Human genes 0.000 description 1
- 102220471558 Single-stranded DNA cytosine deaminase_S94A_mutation Human genes 0.000 description 1
- 102220585512 T cell receptor gamma constant 1_S60A_mutation Human genes 0.000 description 1
- 102220585513 T cell receptor gamma constant 1_S83A_mutation Human genes 0.000 description 1
- 102220536512 THAP domain-containing protein 1_S52A_mutation Human genes 0.000 description 1
- 102220536494 THAP domain-containing protein 1_S55A_mutation Human genes 0.000 description 1
- 102220598993 Transcriptional coactivator YAP1_S61A_mutation Human genes 0.000 description 1
- 102220623776 Tyrosine-protein phosphatase non-receptor type 7_S93A_mutation Human genes 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
Description
従来、鍵共有の方法として、Diffie-Hellman鍵共有方法が知られている。この方法は、歴史上初めて鍵の配送問題を解決した鍵を共有するアルゴリズムとして知られている。図1は、Diffie-Hellman鍵共有方法のシーケンスである。
ここでは、暗号生成装置と復号装置が、秘密の共通鍵を共有する場合を説明する。暗号生成装置と復号装置は式(1)の合同算術式に関し、その生成元gと法(modulo)とする素数Pをお互いに連絡して合意する(S11)。
暗号生成装置は復号装置から通知情報ybを受信し、通知情報ybを式(1)の生成元gに設定し、暗号生成装置(暗号生成装置のユーザなど)のみが知る数Saを式(1)のべき乗rに設定して余りCaを生成する(S16)。
処理を式で表すと次の式(4)となる。
処理を式で表すと次の式(6)となる。
<ベルヌーイシフト写像について>
ベルヌーイシフト写像は、次の式(9)で定義される。
図4には、“初期値x0=0.234”とし、“x0<0.5”のため“x1=2x0”の演算を行いx1=0.468が得られ、“x1<0.5”のため“x2=2x1”の演算を行い“x2=0.936”が得られ、以降“x3,x4,…”と開区間(0,1)を反復し遷移してゆく時系列が示されている。
ベルヌーイシフト写像と合同算術との同期について説明する。
式(9)の初期値x0に、“1/11”を設定したときの反復したxiの値、合同算術の式(1)に“g=2”を設定し、法として素数P=11を設定し、左辺の指数rを0~11に振ったときの余りの値を図5に示す。
式(1)について、指数rが大きくなるほど桁が莫大になるため合同算術では法(modulo)を取ることで、ある値Q同士を掛け算した結果の余りにもう一回ある値Qを掛け算して余りを出すと、元の掛け算(Q3)の余りに等しくなるといった性質があり、桁を抑えて演算できるため、このテクニックを使って計算している。
これは割り切れない数について考察すると、仮分数(2i/11)が例えばi=6のとき、64/11=55/11+9/11=5+9/11となり、帯分数は11の倍数として5が括り出され、真分数(9/11)の分子の9は11の割り算の余りとしても示されるからである。
以上から図5よりx10の時点で1/11とx0に戻りベルヌーイシフト写像は周期長10で繰り返されることが判る。
次に、ベルヌーイシフト写像の整数演算化を考えてみる。
ここまでベルヌーイシフト写像は開区間(0,1)を扱っていたが、整数演算が行えるよう区間を素数P倍して開区間(0,P)にすることで、べき乗の合同算術の余りに相当するXiを得ることができる。
傾き係数を“G”とし、“1”から開区間(0,P)に拡大し整数演算化したベルヌーイシフト写像は各傾き係数Gの一次式をまとめて、次の式(11)のように簡潔に表すものとする。なお、本明細書においては、「G」について、「傾き係数G」、「生成元G」ガウスの消去法の場合のように単に「G」などとして同じ符号を用いるが、方程式に用いる「x」のように、ある数値であることを意味しており、特別な数値という意味ではないので、「傾き係数G」、「生成元G」、ガウスの消去法の場合などにおいて、区別せずに「G」を用いる。
例えば、P=1(拡大無し)とすれば、傾き係数G=2では式(9)が得られ、傾き係数G=5は式(10)が得られる。
図9は、図8のプログラムを実行した演算結果である。図9(a)がベルヌーイシフト写像式(11)の傾き係数G=5、最大区間P=11、反復回数r=11に設定してX10まで反復を行ったXiの結果である。図9(b)は、合同算術式(1)の生成元g=5、法P=11として左辺のべき乗を“0,1,2,…,10”(r=11に設定)と変更してそれぞれの5のべき乗を法11で割った結果の余りを示すものである。図9(a)と図9(b)の2つとも、ベルヌーイシフト写像の反復回数“i”とべき乗の値が対応して同じ解となっていることが確認できる。
式(1)による合同算術の演算は、C言語で実装した図8(b)に示すソースコードのように、法11の余りに対してg=5を掛け算して法11の余りを求め、余りにg=5を掛け算する繰り返しで余りの算術を行う手法を使っている。
図10は、ベルヌーイシフト写像によるDiffie-Hellman鍵共有について、具体的に数値を入れて計算した例である。既に、式(1)の合同算術と式(11)の整数演算化したベルヌーイシフト写像は、同等の数列となることを示した。式(11)による図8(a)のベルヌーイシフト写像のプログラムにおける処理Aにより演算を行い、Diffie-Hellman鍵共有を行う。
図10に示す暗号側共通鍵生成部102と復号側共通鍵生成部202は、お互い事前に合意する式(11)の係数G、素数Pに、式(1)の生成元g=5と式(1)の法となる素数Pと同等の演算精度となる素数P=83を設定する。暗号側共通鍵生成部102では秘密情報である数Sa=8を設定し、復号側共通鍵生成部202では、秘密情報である数Sb=17を設定する。
暗号側共通鍵生成部102は、復号側共通鍵生成部202から受信した“76”を式(11)に傾き係数G=76として設定する(S27)。演算精度となる素数P=83を設定して暗号側共通鍵生成部102は暗号側共通鍵生成部102のみが知る秘密情報である数Sa=8を写像の反復回数rに設定し、初期値X0=1に設定して写像の反復を行う(S27)。結果としてX8=36が得られる(S27A)。
図10Aは、以上の暗号側共通鍵生成部102と復号側共通鍵生成部202とが共通鍵生成するまでフローチャートである。第1行目のブロックでは、それぞれの秘密情報の生成と、合意した2つの数値(ここでは、GとP)の保持が行われている。第2行目のブロックでは、暗号側共通鍵生成部102と復号側共通鍵生成部202の夫々でベルヌーイシフト写像による通知情報の生成が行われ、この通知情報の交換が行われている。第3行目のブロックでは、交換した通知情報とそれぞれが秘密にしている秘密情報を用いてベルヌーイシフト写像による共通鍵の生成が行われる。
以上がDiffie-Hellman鍵共有方法をベルヌーイシフト写像により行った例であり、除算剰余の演算が引き算で済むようになり、演算コストの削減が期待できる。
以上がDiffie-Hellman鍵共有方法をベルヌーイシフト写像により行う場合には、ハードウエアにより構成することができ、ハードウエアの構成回路は、除算剰余の演算回路が引き算回路で済むことになり、ハードウエアの構成を簡素化し回路の簡素化を図ることが可能である。
また、上記暗号側共通鍵生成部102と上記復号側共通鍵生成部202とは、通知情報を受け取ると、この通知情報と上記秘密情報を用いて一次元写像の演算により共通鍵を生成する。
現在使用されている素数Pのビット桁について、RFC3526(More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)、2003年5月)で公開されている生成元gと素数Pの組が存在しており、素数Pの桁は1536ビット(1536ビットMODPグループ)以上が用いられており、2048ビット以上を用いることが推奨されている。
上記実施形態では、共通鍵生成の一次元写像をベルヌーイシフト写像によって行うことを示したが、この一次元写像は、一変数多項式の一次元写像であっても可能である。
式(11)のベルヌーイシフト写像では“x”の項の、べき乗数が“1”となる一次式となっている。ロジスティック写像のように、2次以上の次数を持つ多項式を一次元写像とした鍵共有を行う例を新たに示す。
ロジスティック写像は、次の漸化式の式(12)になり、Xiのべき乗数が2次となる。
より
のため、最終的に
が得られる。同様に求めたX1を式(12)に代入することでX2は
例としてG=4を与え、“Xn=sin24nθ”と同等となる一変数多項式を求める。ここで“n=1とした場合、
“X1=sin24θ”となる解X1を考える。式(5)のロジスティック写像の値域となる区間は[0,1]である。このため“sin24θ”が“0から1”の間つまり三角関数sinの位相4θが“0からπ/2”の間で解X1が“0”か“1”となる位相θを考えると、
(1) θ=0π/8のとき 4θ=0のため、X1=sin24θ=0
(2) θ=1π/8のとき 4θ=4π/8=π/2のため、X1=sin24θ=1
(3) θ=2π/8のとき 4θ=8π/8=πのため、X1=sin24θ=0
(4)θ=3π/8のとき 4θ=12π/8=3π/2のため、X1=sin24θ=1
(5)θ=4π/8のとき 4θ=16π/8=2πのため、X1=sin24θ=0
になる極大値が2つと極小値が1つある多項式となることが判り、“Xn=sin24nθ”と等価な一変数多項式は以下の4次の式(15)のように構成されることが予想できる。
上記(1)の情報から“x=0”のときは“f(0)=0”となるため、式(15)の係数eは“e=0”になることが判る。
残りの係数“a,b,c,d”は上記“(2)、(3)、(4)、(5)”の情報から4次の次数を持つ次の(16)に示す連立方程式を立てることで求められる。
得られた4つの連立方程式から係数“a,b,c,d”を導出する手法を紹介する。
式(16)は行列を使って表すと次の行列式(18)になる。
となり逆行列X-1を用意して式(19)の両辺にかけると、
となり、逆行列X-1より係数Aを求めることができる。図13Aと図13Bは、「ガウスの消去法」を用いて4次の一変数多項式を求める例を示す図である。行列を用いた連立方程式の解法として「クラメルの公式」や「LU分解」が知られているが、ここでは図13Aと図13Bに示すように、「ガウスの消去法」を用いて4次の一変数多項式を求める。式(18)の変数“x0,x1,x2,x3”に上記の(数24)を代入したものが図13Aの最初の行列式となる。この4×4の行列式の位置を指定できるよう各行にC0~C3を、各列にR0~R3を振ってある。
計算過程の詳細は図13Aに記述されているが、行C単位に演算を行う。最初はC0R0を1にするため、行C0全体をC0R0で割り算する処理から開始し、得られた行C0=1に対し列R0の行C1,C2,C3の値を掛け算してそれぞれ得られる行C0で引き算を行うことで列R0の行C1,C2,C3の値を0にする。以降は同様に対角線上の値を1にしてゆき、各列Rを0にする計算を行うことで、最終的に図13Aの式Aが得られる。
図13Aの演算過程は平方根の記号√(ルート)を使い、見易くするため有理化して√の項を分母から取り除いたものである。このような√や変数xなどの記号(Symbol)を用いた代数計算が行えるプログラミング言語として、Pythonの“SymPy”というライブラリが知られている。本実施形態は三角関数を使用し平方根を用いるため無理数を扱う演算になる。計算機実装では演算精度保証を考慮する必要があるが、このような根号記号√を用いた演算を行うライブラリを活用することで無限演算精度実装が行えるようになり計算誤差の影響を取り除くことができる。
以上、生成元G=4のとき4次の次数を持つ一変数多項式を求める例を示した。
図14に示すGは一変数多項式の次数となっており、各Gの関数f(x)として次数Gを“fG(x)”のように上付きにGとあらわし区別している。多項式の係数を求めるとき式(18)はG=4であったことから行と列の成分数はG×Gになる。行列式(18)の右の解は図14のマップから横軸方向が“x=sin2G2θ”とした場合、sin2G2θの区間は[0,1]になるためこの区間内において解fG(x)が0か1を採る“x=sin2G2θ”を考えると図14の4次の多項式を求めた例で示したように
例えばG=5の場合は式(17)を参考にして“x”は、
の5つを割り当てて5×5の行列を構成し、図13A、図13Bのようにガウスの消去法で各項の係数を求め、図14の“f5(x)”となる5次の多項式を得ることができる。
例えば図14のG=4の“f4(x)”を作成する場合はG=2のときのf2(x)をf2(x)に代入して“f4(x)=f2(f2(x))”を得る。図14の例ではG=2のとき
から図14のG=4の場合の式が得られる。
なお、合成関数の生成はインタプリタ型言語Pythonの代数計算ライブラリ“SymPy”を利用し代数方程式を作ることができる。
図15と図16では、暗号側共通鍵生成部102が行う処理と復号側共通鍵生成部202が行う処理に分かれている。復号側共通鍵生成部202では交換する情報を生成して暗号側共通鍵生成部102は復号側共通鍵生成部202へ送信し、復号側共通鍵生成部202は暗号側共通鍵生成部102へ送信する。受信処理では、お互い相手が送信した情報を受信してその情報を設定して写像を行い共有する秘密情報を得る。
暗号側共通鍵生成部102と復号側共通鍵生成部202は、事前に素数P=19、生成元G=2をお互いに合意する(S30A、S30B)。この素数P=19と、生成元G=2は、通知情報であり、暗号側共通鍵生成部102から復号側共通鍵生成部202へ送って、双方が保持することができる。暗号側共通鍵生成部102のみが知る秘密情報である数Saが生成され(S31A)、復号側共通鍵生成部202のみが知る秘密情報Sbが生成される(S31B)。生成元Gから多項式を生成する(S32A、S32B)。G=2の場合、多項式は以下のロジスティック写像の多項式である。暗号側共通鍵生成部102では、秘密情報である数Saを反復回数rに設定し、“sin2(π/P)”を初期値“x0”に設定する(S33A)。復号側共通鍵生成部202では、秘密情報Sbを反復回数rに設定し、“sin2(π/P)”を初期値“x0”に設定する(S33B)。
従来のDiffie-Hellman鍵共有を行った計算例が図16における表の列“DH”になり、列“i”の0以降から列“i”の値を参照して法をとる“2i mod 19”の演算を行うため、セルに数式“=MOD(POWER(2,i),19)”を代入して計算した結果となる。
送信前の処理では暗号側共通鍵生成部102は、暗号側共通鍵生成部102のみが知る秘密情報である数Saとして設定した反復回数7回、復号側共通鍵生成部202は、復号側共通鍵生成部202のみが知る秘密情報Sbとして設定した反復回数4回を設定し、写像の反復をそれぞれ行っている(S34A、S34B)。
列“i”が“0”のときに“X0=sin2(π/19)”の初期値を与える計算を行い列“Xi”セルに数式“=SIN(PI()/19)*SIN(PI()/19)”を代入し、列“i”が1以降のとき列“Xi”セルに一つ上のセルの数値を参照するようにして数式“=4*Xi-1*(1-Xi-1)”を代入し、“Xi-1”を参照して計算を行っている。これらの計算結果“Xi”は、小数点以下9まで表示させており結果として暗号側共通鍵生成部102は“0.541289673”、復号側共通鍵生成部202は“0.226525921”を計算結果として得ておりこれを相手に送信する(S34A、S34B)。
列“ArcSIN”は列“Xi”の数値を参照して、“sin2G(π/19)”となるGの値を次の式(23)の逆三角関数arcsin(sin-1とも表記)を用いて計算した結果となる。
Gについて列“DH”(Diffie-Hellman鍵共有)と比較して説明する。
位相の初期値を“π/19”とし、次の式(24)の“n”を0,1,2,3,…と振った値と、多項式で行った“Xi”の結果は上記の説明からも区間[0,1]で同じ値をとる。
これについて三角関数sinは補角により
sin(16π/19)=sin(π-16π/19)=sin(3π/19)
となり、位相が“π/2”以上の場合は同じ値を取るためである。
このため、合同算術では式(14)のフェルマーの小定理により周期は“P-1”となるが、多項式を用いたとき写像が元に戻る周期は“(P-1)/2”になることが判り、“P=19”のため、周期9になる。
また、列“ArcSIN”をみると“(P-1)/2”より大きい10以上の値は列“DH”の値に対し“19-G”の関係が成り立っている。
列“DH”はDiffie-Hellman鍵共有の計算になり、暗号側共通鍵生成部102と復号側共通鍵生成部202は受信した値を生成元Gとして素数Pと自身の秘密情報を設定して、合同算術の演算を実行する。図16の例では暗号側共通鍵生成部102は受信した値からG=14を、復号側共通鍵生成部202は受信した値からG=16を設定し各々が秘密情報とした設定した値として暗号側共通鍵生成部102は7を、復号側共通鍵生成部202は4をべき乗数“i”に設定し、列“i”の0以降から列“i”の値を参照して“2i mod 19”を行い、セルに数式“=MOD(POWER(2,i),19)”を代入して計算し、最終的に共有する秘密情報“17”を得ている。
本実施形態による一変数多項式の一次元写像による鍵共有は、列“Xi”になり暗号側共通鍵生成部102の処理では復号側共通鍵生成部202から“0.226525921”を受信し(S35A)、受信した“0.226525921”より、式(23)により生成元にあたるG=3を算出する(S36A)。
同様に、復号側共通鍵生成部202の処理では、暗号側共通鍵生成部102から“0.541289673”を受信し(S35B)、受信した“0.541289673”より式(23)により生成元にあたるG=5を算出する(S36B)。
次に、図14で示すG=5の多項式を生成して(S37B)、列“i”が0のときに“X0=sin2(π/19)”の初期値を与える計算を行うため“Xi”セルに数式“=SIN(PI()/19)*SIN(PI()/19)”を代入し列“i”が1以降は列“Xi”セルに一つ上のセルの数値を参照するようにG=5の多項式の因数分解を行った数式“=Xi-1*(16*Xi-1*Xi-1-20*Xi-1+5)*(16*Xi-1*Xi-1-20*Xi-1+5)”を代入し“Xi-1”を参照して計算を行っている(S38B、S39B)。
また、図15の受信側のi=1における“列Xi”の値は受信した値となっていることに着目すると、計算精度を考慮した上で受信した値をそのまま初期値X0として設定し、暗号側共通鍵生成部102と復号側共通鍵生成部202が自身で設定した秘密情報からマイナス1減算した反復回数(暗号側共通鍵生成部102は6、復号側共通鍵生成部202は3)を設定して写像の反復を行うことで共有する秘密情報を生成する方法が考えられる。
以上、一変数多項式の一次元写像を用いた鍵共有方法の実施形態を示した。
演算コスト面で次のホーナー法を利用してべき乗の演算を行わないようにする手法がある。ホーナー法は最も少ない加算と乗算の演算回数でn次の多項式の演算を行う手法で、例えば図14のG=4の式の場合では、
また、インタプリタ型言語Pythonの代数計算ライブラリ“SymPy”で提供される関数“factor”を用い、多項式を因数分解して計算式とすることでも演算コストの削減が期待できる。
図18Aに示すように、共通鍵CKを入手し(S41A、S41B)暗号生成装置100Aの乱数生成部104が乱数RNDを生成し復号装置200Aに送信する(S42A、S42B)。この乱数RNDは一次元写像の初期値X0に設定する。
予め暗号生成装置100Aと復号装置200Aが共有している秘密情報として共通鍵CK(Common Key)と乱数RNDを合成して傾き係数Gと演算精度の素数Pを決定し、共通鍵CKを写像の反復回数に設定する(S45A、S45B)。
図18Aに示すように、傾き係数Gは乱数RNDを共通鍵CKで割った余りを採用する(余りが“0”か“1”になるときは、最小値のGは2以上になるように足し算するなど傾き係数Gは0か1をとらないようにする)(S43A、S43B)。
素数Pは乱数RNDと共通鍵CKを掛け算して求めた値以下の一番近い素数を採用する(S44A、S44B)。
これらを式(11)で示される図8(a)の処理Aの一次元写像の各パラメータに設定し、写像の反復を共通鍵CK回行い、値XCKを得る(S46A、S46B)。得られた値XCKから所定の鍵長Mで割った余りを求めてセッション鍵SKを得る(S47A、S47B)。
以降、暗号生成装置100Aと復号装置200Aは式(11)の傾き係数Gと演算精度の素数P、セッション鍵SK生成を同じ演算を行って決定する。
傾き係数Gは、乱数141を共通鍵36で割った余り21を設定し、初期値X0は、乱数141を設定する。
演算精度の素数Pは、乱数141と共通鍵36を掛け算した結果8460以下の一番近い素数8447を採用する。
以上求めた数値を式(11)の処理Aに設定して、写像の反復を秘密情報の回数分行って値を出し、数3062が得られる。本実施形態では、プロトコルとして鍵長が8ビットとして、8ビットの最大256で数3062を割った余りを求めることでセッション鍵SK(Session Key)として数“246”を得る。
なお、この例では式(11)のベルヌーイシフト写像を用いたが、ロジスティック写像等、図14に示すような一方向性をもつ他の一次元写像も利用できることが考えられる。
図20は、図18に示した暗号生成部101と復号部201が、共通鍵CKとセッション鍵SKを使用して共通鍵暗号によるシステムを実現する場合の動作を示すフローチャートである。
暗号生成部101が平文を暗号化して復号部201に送信するものとする。暗号生成部101と復号部201は同じセッション鍵SK(Session Key)と共通鍵CK(Common Key)をあらかじめ共有している。それらを用いて式(11)のパラメータの傾き係数Gと演算精度の素数P、写像の反復回数rを決定する。
以上のパラメータを式(11)に設定し、平文は初期値X0として設定し写像の反復をSK回した結果“XSK”を、暗号生成部101は暗号文として復号部201へ送信する(S53A~S55A)。
上記で説明したように合同算術の余りと整数演算化したベルヌーイシフト写像の式(11)は同じ値を取得することができる。つまり、演算精度をPとする式(11)のベルヌーイシフト写像の反復を“P-1”回行うことで、Xi値が元に戻る周期を持っていることが判る。この機構から暗号生成部101は既にSK回の写像の反復を行っているため、復号部201は受信した暗号文を初期値X0に設定して残り回数の“P-1-SK”回の写像の反復を行うことで復号部201は暗号文を平文に戻す復号が行える(S53B~S55B)。
この暗号方法では秘密情報を写像の反復回数とするだけでなく、傾き係数Gと演算精度Pも秘密情報から生成するため第三者にとって追跡の手掛かりが小さくなるため安全性を高める効果を得ることができる。
暗号化は8ビットずつのブロック単位で行い、一文字ずつ暗号化を行う。
以下、図21のフローチャートに沿って動作説明を行う。暗号生成装置100Aと復号装置200Aは、図10で生成した共通鍵CK=36、図19で生成したセッション鍵SK=246を共有しており(B11)、これらを用いて以降において傾き係数Gと素数Pを求める。
傾き係数Gはセッション鍵SK=246を共通鍵CK=36で割った余り30を与える。素数Pは共通鍵CK=36とセッション鍵SK=246を掛けた値8856以下に一番近い8849とする(B12)。
なお、図21では暗号化と復号の写像を反復した値Xiは最初の3回と最後の3回の値Xiを表示している。
例えば、暗号生成装置100が秘密情報として5を選び、一方向関数を5ステップ分の計算を実行してその結果の数値NAを復号装置200に渡し、一方、復号装置200が秘密情報として9を選び、一方向関数を9ステップの計算を実行してその結果の数値NBを暗号生成装置100に渡すものとする。
NBを受け取った暗号生成装置100は暗号生成装置100のみが知る秘密情報5により5ステップ分の計算を実行することで、復号装置200が実行した9ステップ分に5ステップを追加した合計14ステップを行った数値結果を得る。一方、NAを受け取った復号装置200は復号装置200のみが知る秘密情報9により9ステップ分の計算を実行することで、暗号生成装置100が実行した5ステップ分に9ステップを追加した合計14ステップを行った数値結果を得る。以上から暗号生成装置100と復号装置200が計算する最終的な計算ステップ数が同じとなり、暗号生成装置100と復号装置200は同じ値を取得できる。
以上の論理を考慮し、以下に示す実施形態では初期値はお互い共有する共通鍵を設定することで、共通鍵を更新する暗号復号システム、暗号復号方法、暗号復号用プログラムを開示する。
Gmaxは予めプロトコルで決めておき、Gminは“CK×CK mod Gmax”の剰余がゼロになった場合に、最小の傾き係数Gは2以上にするため“Gmin=2”を入れておく。次に、求めた傾き係数Gと素数Pより
Sa(乱数)⇒反復回数r、素数P⇒演算精度P、G⇒傾き係数G、X0⇒初期値X0
を設定する(S65A)。
同様に、復号装置200Bは乱数Sbを発生させて(S64B)、各初期パラメータSb(乱数)⇒反復回数r、素数P⇒演算精度P、G⇒傾き係数G、X0⇒初期値X0
を設定する(S65B)。
変数yを用意し、演算精度Pに傾き係数Gを割り算した余りの値“y=P mod G”とする。
次の合同算術式より法を素数PとしてG回繰り返しyを更新し、yから傾き係数の最大をGとして、Gに対して20%をとった値をdG[i]としてG個分格納する。
図10で得られた共通鍵36を利用し共通鍵を2乗した値は、“36×36=1296”となるため、それ以下の一番近い素数を探索すると素数P=1291となる。共通鍵の値が小さすぎる場合は、例えば素数は最低1000以上というルールを設け共通鍵の値の累乗を続けてもよい。
次に最大傾き係数Gは本実施形態のプロトコルでは99まで採れるとし、Gは変動する値になるため、最低10にすることでGは8、9、10の三種類が採れるようにする。このため、“Gmax=90”、“Gmin=10”として、“46=(1296 mod 90)+10”より、傾き係数G=46をとる。初期値X0はX0=P mod Gより“3=1291 mod 46”となり“X0=3”を得る。
以上のように、「傾き係数G、素数P、反復回数r、初期値X0」が決定され、図22のSAF23により示される図23の初期処理(S71)における設定がなされる。
次に、yから傾き係数Gの変動パターンを決める。yは“y=(G×y) mod P”によりG回繰り返してyの値を更新し、“dG[i]=y mod (G×2/10)”により入力されたGは最大の傾き係数となり、本実施形態では46のため、その20%分の値0~8の46個分をdG[i]に格納する(S73、S74)。
例えば、傾き係数Gが最大100のときは、変動する傾き係数Gは80~100の間の値を採る。
ここで、図8(a)の処理Aと図24のプログラムの違いについて説明する。図8(a)の処理Aでは、最後に返り値としてxをGで割った値“x/G”を返しているが、図24では、Gを変更するため、割り切れない値が生じることで演算結果の値が異なってしまうため、図23のステップS77に示されるように、“x”をそのまま返り値とする。
暗号生成装置100Bは“GNA(mod P)”を復号装置200Bに送信し、復号装置200Bは“GNB(mod P)”を暗号生成装置100Bに送信して、暗号生成装置100Bと復号装置200Bは共有する“GNA + NB(mod P)”を得ることになる。ところが、お互い送信した情報GNAとGNBを掛け算してPで法をとった“GNA×GNB(mod P)”と同じ値になるため、素数Pさえ判れば共有する秘密情報Sを簡単に求められる。
102×482=49164に法1291をとると余りは、“106”であり、図27の表の最後尾のように暗号生成装置100Bと復号装置200Bが算出し共有した値も“106”になっており、素数Pさえ判れば簡単に暗号生成装置100Bと復号装置200Bが共有する秘密情報が判ってしまう。このため、傾き係数Gの変動パターンは最低でも2以上は必ず異なる値Gに変動されるようにすることが必要である。
図25Bのスキップ1とは1ビットおきに3ビット分を取り出して並べると、
{(001)2,(010)2,(100)2,(001)2,(010)2,(100)2,(000)2,(000)2,・・・}
の合計8個分を取り出すことができる。7ビット目では9ビット目以降は同じビット列(00100100)2を最後尾につなげることで(0010010000100100)2のようにして9ビット目以降が採れるようにする。
次は図25Bのスキップ2に示すように、2ビットおきに3ビット分ずつを取り出す操作を繰り返し、最後尾で足りない分は同じビット列を繋げていくという方法で8個分採る。次は図示しないが、スキップ3で3ビットおきに1ビット取るというように、同様にスキップ7まで行い、全部で8×7=56通りが取得できる。
傾き係数G=46のため、図25Bに示す数値46個を取得して傾き変動パターン2として生成する。
ここまで各種パラメータを一つの共通鍵から生成する事例として示したが、各パラメータを予め複数の共通鍵として構成することも考えられ、より秘匿性を高めることが期待できる。
以上、ベルヌーイシフト写像の傾き係数の変動を行う鍵更新方法の例を示した。
暗号生成装置100Bと復号装置200Bの双方は同じ傾き係数Gを変動するパターンを持つ一次元写像関数を使用しているため、更新鍵を生成した以降も暗号生成装置100Bと復号装置200Bは写像毎の出力“Xi+1”は同じ値が得られる。
(0.0375,0.1625,0.2875,0.4125,0.5375,0.6625,0.7875,0.9125)
写像を3回空けて“Xi+1”を取得する場合は8=23通りの初期値候補が推測されるため、3ビット分の安全性が確保できることになる。つまり8ビットの強度(256個の初期値候補)を得たいときは、28=256のため写像を8回分あけて暗号化を行えばよく、写像を8回反復しては鍵を出力する構造になる。このように写像の反復をあけることで鍵の生成系列の推定が難しくなることが期待できる。
図29では平文としてアスキーコード3文字“map”を暗号生成装置100Bが暗号化して復号装置200Bへ送信するものとする。“map”は1文字ずつ暗号化するため各文字8ビット分のアスキーコードを10進数にすると“m=109,a=97,p=112”となる。
図28に示すように、図22の“共通鍵CK”、“傾き係数G”、“更新鍵X0”、“素数P”を引き継ぎ(S81A、S81B)、写像の反復を空ける回数Sは傾き係数Gと共通鍵CKの排他的論理和
ここで数Sが小さすぎる場合は所定の数値以上をとるようにしておく。
暗号化は次の式(24)により生成した鍵Kに平文Tを掛け合わせ、素数Pで割った余りを暗号文Cとする。この式(24)により暗号文Ciを生成し、復号装置200Bへ送信する(S87A)。ステップS88Aでは、平文の総数だけ暗号化がなされたかを検出している。
ステップS89Bでは、平文の総数だけ暗号化がなされたかを検出している。合同算術では法Pが素数であれば乗法群からなる有限体GF(P)は乗法逆元が成り立つ逆数K-1が存在することが知られている。具体的には、以下に示すようにユークリッドの互除法を用いて平文Tを導出する。
式(24)は被除数K・Tを除数Pで割った商yの剰余がCということであり以下の式が成り立つ。
“a”と“b”を互いに素な整数としたとき、以下の二元一次方程式を満たす整数解“x”と“y”が存在する。
となり、上記式のように“x=-360,y=331”が得られたが“x”はマイナス、“y”はプラスになっており式(25)と見比べると“y”はマイナス、つまり“y=-y”となるため“x”がプラスとなるよう以下の手法を利用する。
求めた値は“x=-360,b=1219”また“y=331,a=1187”であるため、これを式(27)に代入すると
と“x=931,y=-856”になり、式(25)の形式が得られ逆数K-1は“931”となる。
一般的な共通鍵暗号方式では鍵の管理が必要であるのに対して、この第3の実施形態では、共通鍵の共有が不要になるため、鍵の管理を不要とすることができる利点を有する。
しかしながら、生成元Gが一定の場合は第3の実施形態で示したように一変数多項式を図17に示す三角関数の位相に置き換えて計算すると、生成元Gは一定のため交換する値と“初期値X0=sin2(π/P)”の設定から素数Pが推定される場合は共有する秘密情報が簡単に判ってしまう。なぜなら、2次以上の一変数多項式でも位相θに着目すると位相の上ではベルヌーイシフト写像の演算を行っていることと同等であるため、生成元Gを固定にした場合と同じ状況になり、位相の計算を追うことで図27のように秘密情報が簡単に特定できるからである。
図31は、第4の実施形態に係る暗号復号システムのブロック図である。図31は、第3の実施形態に係る暗号復号システムのブロック図の第1の暗号側更新鍵生成部105に代えて、暗号生成装置100Cには、第2の暗号側更新鍵生成部106が設けられ、第1の復号側更新鍵生成部205に代えて、復号装置200Cには第2の復号側更新鍵生成部206が設けられている点を除き、同一である。
前記第2の復号側更新鍵生成部は、暗号側交換情報を受け取ってこの暗号側交換情報を用いて前記一変数多項式による一次元写像を行い、更新鍵を生成する。
本実施形態では、共通鍵が8ビット(00100100)2(十進数36)として半分に分割すると、(0010)2と(0100)2になり、十進数にすると2と4となる。この2と4は“1”に対して2%分と4%分を減算するといったルールとして当てることを考え“0.98”と“0.96”が算出され、4次の一変数多項式の解を“(0.98,0,0.96,0)”に変更して与える。これを図13に示すガウスの消去法をコンピュータにプログラミング実装して、式(21)においてG=4としてxを得た場合と同じ次の値
のとき f(x2)=0.96
となっている。
図32は、式(28)を用いて鍵を更新するフローチャートであり、図33は、具体的な数値による本実施形態の動作を説明する図である。
この実施形態では、共通鍵CKを入手し(S91A、S91B)、共通鍵CKから多項式を生成し(S92A、S92B)、図32のフローチャートによる処理部に、秘密鍵情報である数Saを反復回数rに設定し、共通鍵CKを初期値X0へ設定する(S93A、S93B)。
次に、暗号生成装置100Cでは、多項式一元写像をSa回反復して結果Xsaを得て、これを復号装置200Cへ送信する(S94A)。復号装置200Cでは、多項式一元写像をSb回反復して結果Xsbを得て、これを暗号生成装置100Cへ送信する(S94B)。
次に、暗号生成装置100Cでは、結果Xsbを受信し(S95A)、復号装置200Cでは、結果Xsaを受信する(S95B)。暗号生成装置100Cでは、秘密鍵情報Saを反復回数rに設定し、結果Xsbを初期値X0へ設定し(S96A)、復号装置200Cでは、秘密鍵情報Sbを反復回数rに設定し、結果Xsaを初期値X0へ設定する(S96B)。
次に、暗号生成装置100Cでは、多項式一次元写像をSa回反復計算し、更新鍵Xkを得る(S97A)。暗号生成装置100Cでは、多項式一次元写像をSb回反復計算し、更新鍵Xkを得る(S97B)。
図14の“f4(x)”の多項式は次のようになっている
上記の記号
図33では共通鍵の値36より式(29)を生成して、“初期値X0=36”と共通鍵の値を設定し、暗号生成装置100Cは秘密情報として7を設定し式(29)を7回反復して、“X7=8086”を得て復号装置200Cに送信する。一方、復号装置200Cは秘密情報として10を設定し、式(29)を10回反復して“X10=7284”を得て暗号生成装置100Cに送信する。
Diffie-Hellman鍵共有方式は、各々の秘密情報をべき乗数としてお互い最終的なべき乗の回数が同じであればお互い共有する秘密情報を出力できることに着目すると、一次元写像で初期値を共通鍵とし秘密情報を写像の反復回数とする共通鍵を更新する装置やシステムが考えられる。この構成にて初期値を公開値にした場合に安全性は低くなるが、通信者各々の写像の反復回数を秘密情報として送信データをマスキングすることで第三者に情報漏洩の防止が可能となり鍵管理が不要になる暗号システムが提供できる。
更に、暗号生成側と復号側がお互い共有する共通鍵を写像の反復回数とする暗号化と復号を行う暗号方法によれば、離散対数問題を安全性根拠とした一次元写像による共通鍵暗号方法と、鍵共有とセッション鍵生成を含めた「制御パラメータ」と「写像の反復回数」を二重の鍵とする堅牢な共通鍵暗号複号システムを提供できる。
本発明に係る複数の実施形態を説明したが、これらの実施形態は例として提示するものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
Claims (15)
- 演算により暗号文を生成する暗号生成部を有する暗号生成装置と、前記暗号生成装置から暗号文を受けて暗号文を復号し平文とする復号部を有する復号装置とを具備し、
前記暗号生成装置と前記復号装置には、一次元写像の演算によりそれぞれで生成した通知情報の交換を行って同一の共通鍵を生成する暗号側共通鍵生成部と復号側共通鍵生成部が備えられ、
前記暗号生成部は前記共通鍵に基づく暗号生成を行い、前記復号部は前記共通鍵に基づく復号処理を行うことを特徴とする暗号復号システムにおいて、
前記暗号側共通鍵生成部と前記復号側共通鍵生成部とは、それぞれで異なる固有の秘密情報を保持すると共に2数値を同じく保持し、それぞれが前記秘密情報と前記2数値を用いて一次元写像の演算を行って通知情報を生成するものであり、
前記暗号側共通鍵生成部と前記復号側共通鍵生成部とは、通知情報を受け取ると、この通知情報と前記秘密情報を用いて一次元写像の演算により共通鍵を生成するものであり、
前記一次元写像は、一変数多項式の一次元写像であること特徴とする暗号復号システム。 - 前記暗号生成装置には、前記暗号側共通鍵生成部により生成された共通鍵に基づき前記一次元写像の演算を行ってセッション鍵を生成する暗号側セッション鍵生成部が備えられ、
前記暗号生成部は、前記共通鍵と前記セッション鍵とを用いて暗号文を生成し、
前記復号装置には、前記復号側共通鍵生成部により生成された共通鍵に基づき前記一次元写像の演算を行ってセッション鍵を生成する復号側セッション鍵生成部が備えられ、
前記復号部は、前記共通鍵と前記セッション鍵とを用いた復号により平文を生成することを特徴とする請求項1に記載の暗号復号システム。 - 前記暗号生成装置には、乱数を生成し前記暗号側セッション鍵生成部と前記復号側セッション鍵生成部へ送出する乱数生成部が備えられていることを特徴とする請求項2に記載の暗号復号システム。
- 前記暗号生成装置には、前記暗号側共通鍵生成部から共通鍵を受け取り、この共通鍵により一変数多項式を生成し、この一変数多項式による一次元写像を行い、暗号側交換情報を生成する第2の暗号側更新鍵生成部が備えられ、
前記復号装置には、前記復号側共通鍵生成部から共通鍵を受け取り、この共通鍵により一変数多項式を生成し、この一変数多項式による一次元写像を行い、復号側交換情報を生成する第2の復号側更新鍵生成部が備えられ、
前記第2の暗号側更新鍵生成部は、復号側交換情報を受け取ってこの復号側交換情報を用いて前記一変数多項式による一次元写像を行い、更新鍵を生成し、
前記第2の復号側更新鍵生成部は、暗号側交換情報を受け取ってこの暗号側交換情報を用いて前記一変数多項式による一次元写像を行い、更新鍵を生成することを特徴とする請求項1に記載の暗号復号システム。 - 前記暗号生成部では、生成された更新鍵を用いた暗号生成を行い、
前記復号部では、生成された更新鍵を用いた復号を行うことを特徴とする請求項4に記載の暗号復号システム。 - 演算により暗号文を生成する暗号生成部を有する暗号生成装置と、前記暗号生成装置から暗号文を受けて該暗号文を復号し平文とする復号部を有する復号装置とにおいて行われ、
前記暗号生成装置と前記復号装置には、暗号側共通鍵生成部と復号側共通鍵生成部が備えられ、
前記暗号生成部において共通鍵に基づく暗号生成を行い、前記復号部において共通鍵に基づく復号処理を行う暗号復号方法であって、
前記暗号側共通鍵生成部と前記復号側共通鍵生成部とにおいて、それぞれで異なる固有の秘密情報を保持すると共に同じ2数値を保持し、それぞれが前記秘密情報と前記2数値を用いて一次元写像の演算を行って通知情報を生成し、
前記暗号側共通鍵生成部と前記復号側共通鍵生成部においては、通知情報を受け取ると、この通知情報と前記秘密情報を用いて一次元写像の演算により共通鍵を生成し、
前記一次元写像を、一変数多項式の一次元写像としたこと特徴とする暗号復号方法。 - 前記暗号生成装置には、暗号側セッション鍵生成部が備えられ、この暗号側セッション鍵生成部においては、前記暗号側共通鍵生成部により生成された共通鍵に基づき前記一次元写像の演算を行ってセッション鍵を生成し、
前記暗号生成部においては、前記共通鍵と前記セッション鍵とを用いて暗号文を生成し、
前記復号装置には、復号側セッション鍵生成部が備えられ、この復号側セッション鍵生成部においては、前記復号側共通鍵生成部により生成された共通鍵に基づき前記一次元写像の演算を行ってセッション鍵を生成し、
前記復号部においては、前記共通鍵と前記セッション鍵とを用いた復号により平文を生成することを特徴とする請求項6に記載の暗号復号方法。 - 前記暗号生成装置には、乱数生成部が備えられ、この乱数生成部において乱数を生成し前記暗号側セッション鍵生成部と前記復号側セッション鍵生成部へ送出することを特徴とする請求項7に記載の暗号復号方法。
- 前記暗号生成装置には、第2の暗号側更新鍵生成部が備えられ、この第2の暗号側更新鍵生成部においては、前記暗号側共通鍵生成部から共通鍵を受け取り、この共通鍵により一変数多項式を生成しこの一変数多項式による一次元写像を行い、暗号側交換情報を生成し、
前記復号装置には、第2の復号側更新鍵生成部が備えられ、この第2の復号側更新鍵生成部において、前記復号側共通鍵生成部から共通鍵を受け取り、この共通鍵により一変数多項式を生成しこの一変数多項式による一次元写像を行い、復号側交換情報を生成し、
前記第2の暗号側更新鍵生成部においては、復号側交換情報を受け取ってこの復号側交換情報を用いて前記一変数多項式による一次元写像を行い、更新鍵を生成し、
前記第2の復号側更新鍵生成部においては、暗号側交換情報を受け取ってこの暗号側交換情報を用いて前記一変数多項式による一次元写像を行い、更新鍵を生成することを特徴とする請求項6に記載の暗号復号方法。 - 前記暗号生成部においては、生成された更新鍵を用いた暗号生成を行い、
前記復号部においては、生成された更新鍵を用いた復号を行うことを特徴とする請求項9に記載の暗号復号方法。 - 暗号復号システムの暗号生成装置に備えられたコンピュータを、
演算により暗号文を生成する暗号生成部として機能させ、
暗号復号システムの復号装置に備えられたコンピュータを、前記暗号生成装置から暗号文を受けて該暗号文を復号し平文とする復号部として機能させ、
更に、
前記暗号生成装置に備えられたコンピュータと前記復号装置に備えられたコンピュータを、一次元写像の演算によりそれぞれで生成した通知情報の交換を行って同一の共通鍵を生成する暗号側共通鍵生成部と復号側共通鍵生成部、
として機能させ、
前記暗号生成装置に備えられたコンピュータを、前記暗号生成部として前記共通鍵に基づく暗号生成を行うように機能させ、
前記復号装置に備えられたコンピュータを、前記復号部として前記共通鍵に基づく復号処理を行うように機能させ、
前記暗号生成装置に備えられたコンピュータと前記復号装置に備えられたコンピュータを、前記暗号側共通鍵生成部と前記復号側共通鍵生成部として、それぞれで異なる固有の秘密情報を保持すると共に2数値を同じく保持し、それぞれが前記秘密情報と前記2数値を用いて一次元写像の演算を行って通知情報を生成するように機能させ、
前記暗号生成装置に備えられたコンピュータと前記復号装置に備えられたコンピュータを、前記暗号側共通鍵生成部と前記復号側共通鍵生成部として、通知情報を受け取ると、この通知情報と前記秘密情報を用いて一次元写像の演算により共通鍵を生成するように機能させ、
前記一次元写像を、一変数多項式の一次元写像により実現させる
こと特徴とする暗号復号用プログラム。 - 前記暗号生成装置に備えられたコンピュータを、前記暗号側共通鍵生成部により生成された共通鍵に基づき前記一次元写像の演算を行ってセッション鍵を生成する暗号側セッション鍵生成部として機能させ、
前記暗号生成装置に備えられたコンピュータを、前記暗号生成部として、前記共通鍵と前記セッション鍵とを用いて暗号文を生成するように機能させ、
前記復号装置に備えられたコンピュータを、前記復号側共通鍵生成部により生成された共通鍵に基づき前記一次元写像の演算を行ってセッション鍵を生成する復号側セッション鍵生成部として機能させ、
前記復号装置に備えられたコンピュータを、前記復号部として、前記共通鍵と前記セッション鍵とを用いた復号により平文を生成するように機能させる
ことを特徴とする請求項11に記載の暗号復号用プログラム。 - 前記暗号生成装置に備えられたコンピュータを、乱数を生成し前記暗号側セッション鍵生成部と前記復号側セッション鍵生成部へ送出する乱数生成部として機能させる
ことを特徴とする請求項12に記載の暗号復号用プログラム。 - 前記暗号生成装置に備えられたコンピュータを、前記暗号側共通鍵生成部から共通鍵を受け取り、この共通鍵により一変数多項式を生成し、この一変数多項式による一次元写像を行い、暗号側交換情報を生成する第2の暗号側更新鍵生成部として機能させ、
前記復号装置に備えられたコンピュータを、前記復号側共通鍵生成部から共通鍵を受け取り、この共通鍵により一変数多項式を生成し、この一変数多項式による一次元写像を行い、復号側交換情報を生成する第2の復号側更新鍵生成部として機能させ、
前記暗号生成装置に備えられたコンピュータを、前記第2の暗号側更新鍵生成部として、復号側交換情報を受け取ってこの復号側交換情報を用いて前記一変数多項式による一次元写像を行い、更新鍵を生成するように機能させ、
前記復号装置に備えられたコンピュータを、前記第2の復号側更新鍵生成部として、暗号側交換情報を受け取ってこの暗号側交換情報を用いて前記一変数多項式による一次元写像を行い、更新鍵を生成するように機能させる
ことを特徴とする請求項11に記載の暗号復号用プログラム。 - 前記暗号生成装置に備えられたコンピュータを、前記暗号生成部として、生成された更新鍵を用いた暗号生成を行うように機能させ、
前記復号装置に備えられたコンピュータを、前記復号部として、生成された更新鍵を用いた復号を行うように機能させる
ことを特徴とする請求項14に記載の暗号復号用プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020164201A JP7406108B2 (ja) | 2020-09-29 | 2020-09-29 | 暗号復号システム、暗号復号方法、及び暗号復号用プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020164201A JP7406108B2 (ja) | 2020-09-29 | 2020-09-29 | 暗号復号システム、暗号復号方法、及び暗号復号用プログラム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2022056275A JP2022056275A (ja) | 2022-04-08 |
JP2022056275A5 JP2022056275A5 (ja) | 2022-10-05 |
JP7406108B2 true JP7406108B2 (ja) | 2023-12-27 |
Family
ID=80998481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020164201A Active JP7406108B2 (ja) | 2020-09-29 | 2020-09-29 | 暗号復号システム、暗号復号方法、及び暗号復号用プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7406108B2 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002540721A (ja) | 1999-03-25 | 2002-11-26 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | マルチノード暗号及び鍵配信 |
JP2008117373A (ja) | 2006-10-31 | 2008-05-22 | Samsung Electronics Co Ltd | デジタル著作権管理方法および装置 |
JP2016529753A (ja) | 2013-08-30 | 2016-09-23 | コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. | 鍵共有デバイス及び方法 |
JP2020052215A (ja) | 2018-09-26 | 2020-04-02 | 東芝情報システム株式会社 | 公開鍵暗号システム、公開鍵暗号方法、公開鍵暗号プログラム |
-
2020
- 2020-09-29 JP JP2020164201A patent/JP7406108B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002540721A (ja) | 1999-03-25 | 2002-11-26 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | マルチノード暗号及び鍵配信 |
JP2008117373A (ja) | 2006-10-31 | 2008-05-22 | Samsung Electronics Co Ltd | デジタル著作権管理方法および装置 |
JP2016529753A (ja) | 2013-08-30 | 2016-09-23 | コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. | 鍵共有デバイス及び方法 |
JP2020052215A (ja) | 2018-09-26 | 2020-04-02 | 東芝情報システム株式会社 | 公開鍵暗号システム、公開鍵暗号方法、公開鍵暗号プログラム |
Also Published As
Publication number | Publication date |
---|---|
JP2022056275A (ja) | 2022-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10515567B2 (en) | Cryptographic machines with N-state lab-transformed switching devices | |
JP4774509B2 (ja) | 擬似乱数発生システム | |
JP5572610B2 (ja) | セキュリティ強化のための転置データ変換 | |
US20090279688A1 (en) | Closed galois field cryptographic system | |
JP2000187438A (ja) | 楕円曲線暗号実行方法及び装置並びに記録媒体 | |
JP2005215688A (ja) | S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法 | |
JP4783382B2 (ja) | モンゴメリ法用乗算剰余計算装置 | |
Agrawal et al. | Elliptic curve cryptography with hill cipher generation for secure text cryptosystem | |
JP4690819B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置 | |
Lablanche et al. | Optimized implementation of the NIST PQC submission ROLLO on microcontroller | |
JP2004258141A (ja) | モンゴメリ乗算剰余の多倍長演算のための演算装置 | |
KR100340102B1 (ko) | 알에스에이 공개키 암호 고속화 장치 및 방법 | |
JP2001051832A (ja) | 乗算剰余演算方法および乗算剰余回路 | |
JP7406108B2 (ja) | 暗号復号システム、暗号復号方法、及び暗号復号用プログラム | |
JP7023584B2 (ja) | 公開鍵暗号システム、公開鍵暗号方法、公開鍵暗号プログラム | |
JP4423900B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム | |
Mihalkovich et al. | MPF based symmetric cipher performance comparison to AES and TDES | |
Manajaih | Modular arithmetic in RSA cryptography | |
JP2012177893A (ja) | 暗号処理システム、暗号化装置、復号装置、及びプログラム、並びに暗号処理方法 | |
JP5207153B2 (ja) | 擬似乱数発生システム | |
JP4692022B2 (ja) | 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム | |
CN1258051A (zh) | 一种公开密钥加密体制和装置 | |
JP4502817B2 (ja) | 楕円曲線スカラー倍計算方法および装置 | |
JP5268011B2 (ja) | 暗号化システム及び復号化システム | |
Bhatta et al. | Performance analysis of various optimization techniques for elliptic curve cryptosystems on resource-constrained devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220926 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220926 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20220926 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230516 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230613 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230803 |
|
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: 20231114 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231127 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7406108 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |