JP5038868B2 - 鍵共有方法、第1装置、第2装置、及びそれらのプログラム - Google Patents

鍵共有方法、第1装置、第2装置、及びそれらのプログラム Download PDF

Info

Publication number
JP5038868B2
JP5038868B2 JP2007306737A JP2007306737A JP5038868B2 JP 5038868 B2 JP5038868 B2 JP 5038868B2 JP 2007306737 A JP2007306737 A JP 2007306737A JP 2007306737 A JP2007306737 A JP 2007306737A JP 5038868 B2 JP5038868 B2 JP 5038868B2
Authority
JP
Japan
Prior art keywords
storage unit
calculation
function
key
unit
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
Application number
JP2007306737A
Other languages
English (en)
Other versions
JP2009130871A (ja
Inventor
龍明 岡本
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2007306737A priority Critical patent/JP5038868B2/ja
Publication of JP2009130871A publication Critical patent/JP2009130871A/ja
Application granted granted Critical
Publication of JP5038868B2 publication Critical patent/JP5038868B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、暗号技術に関し、特に鍵共有技術に関する。
従来、強い安全性を持つ〔能動的攻撃に対しても安全な;CCA(Chosen-Cipertext Attacks:選択暗号文攻撃)‐安全な〕鍵共有方式がISO18033-2(例えば、非特許文献1参照)などで採用されているが、このような鍵共有方式は、大きく分けて、素因数分解に基づく方式(RSA-KEMなど)と離散対数(例えば、楕円離散対数)に基づく方式(ACE-KEMやPSEC-KEMなど)がある。これらの中では、鍵長などの実用性の点で、素因数分解に基づく方式よりも、楕円離散対数に基づく方式の方が実用性に優れている。
楕円離散対数に基づく鍵共有方式では、ACE-KEM、PSEC-KEM(ISO18033-2)及びKurosawa-Desmedt方式(例えば、非特許文献2参照)が代表的である。これらの方式の中で、ACE-KEMは、標準モデル(ハッシュ関数を具体的な関数に固定したモデル)でCCA-安全であるという点で、安全性の面に優れているが、演算量及び暗号文長の点でKurosawa-Desmedt方式よりも効率が悪い。Kurosawa-Desmedt方式はCCA-安全でないという点で安全性の問題がある。一方、PSEC-KEMはKurosawa-Desmedt方式と同等の効率の方式であるが、標準モデルではなく仮想的なランダムオラクルモデル(ハッシュ関数を極度に理想化したモデル)の下でしかCCA-安全性の保証がない。
上述のように、従来、効率がKurosawa-Desmedt方式やPSEC-KEMと同等であり、かつ標準モデルでCCA-安全である方式は提案されていなかった。
"ISO 18033-2: A Standard for Public-Key Encryption"、[online]、 [平成19年11月15日検索]、インターネット<http://www.shoup.net/> Kaoru Kurosawa and Yvo Desmed, "A New Paradigm of Hybrid Encryption Scheme," Advances in Cryptology, CRYPTO 2004, volume 3152 of Lecture Notes in Computer Science, pages 426-442, 2004, Springer-Verlag
本発明はこのような点に鑑みてなされたものであり、従来の方式と同等の効率を持ち、なおかつ標準モデルでCCA-安全である鍵共有技術を提供することを目的とする。
第1の本発明では、第1装置と第2装置とで鍵を共有するために、整数x1, x2, y1, y2を第1装置の秘密鍵とし、有限群Gの元g1, g2∈Gと当該有限群G上での演算結果z=g1x1・g2x2∈G,w=g1y1・g2y2∈Gとを第1装置の公開鍵とする。
第2装置は、その整数選択部がランダムな整数rを選択し、第1暗号化部が有限群G上での演算C1=g1r∈Gを行い、第2暗号化部が有限群G上での演算C2=g2r∈Gを行い、関数演算部が少なくとも演算結果C1, C2の一方を含む情報をH関数入力値とし、当該H関数入力値によって定まる値に対し、値域を整数とする目的衝突困難なハッシュ関数Hを作用させて演算結果dを算出し、シード演算部が、有限群G上での演算σ=zr・wr・d∈Gを行い、鍵演算部が、演算結果σをシードとした擬似ランダム関数Fσの関数値を算出し、その関数値を鍵Kとし、送信部が演算結果C1, C2を第1装置に送信する。なお、目的衝突困難(TCR: Target Collision Resistant)なハッシュ関数とは、異なる入力値に対する出力値が互いに同一となる確率が無視できるほど小さいハッシュ関数を意味する。また、擬似ランダム関数(Pseudo-Random Function)とは、入力値に対する出力値が真のランダム値と識別困難である関数を意味する。
第1装置は、その関数演算部が少なくとも演算結果C1, C2の一方を含む情報をH関数入力値とし、当該H関数入力値によって定まる値に対し、上記ハッシュ関数Hを作用させて演算結果dを生成し、シード演算部が有限群G上での演算σ=C1(x1+d・y1)・C2(x2+d・y2)∈Gを行い、鍵演算部が、当該演算結果σをシードとした擬似ランダム関数Fσの関数値を算出し、その関数値を鍵Kとする。
また、第2の本発明でも、第1装置と第2装置とで鍵を共有するために、整数x1, x2, y1, y2を第1装置の秘密鍵とし、有限群Gの元g1, g2∈Gと当該有限群G上での演算結果z=g1x1・g2x2∈G,w=g1y1・g2y2∈Gとを第1装置の公開鍵とする。
第2装置は、その整数選択部がランダムな整数rを選択し、第1暗号化部が有限群G上での演算C1=g1r∈Gを行い、第2暗号化部が有限群G上での演算C2=g2r∈Gを行い、関数演算部が少なくとも演算結果C1, C2の一方を含む情報をH関数入力値とし、当該H関数入力値によって定まる値に対し、値域を整数とする目的衝突困難なハッシュ関数Hを作用させて演算結果dを算出し、第1シード演算部が有限群G上での演算σ1=zr・wr・d∈Gを行い、第2シード演算部が有限群G上での演算σ2=zr・d・wr∈Gを行い、鍵演算部が、演算結果σ1をシードとした擬似ランダム関数Fσ1の関数値と、当該演算結果σ2をシードとした擬似ランダム関数Fσ2の関数値との排他的論理和演算を行い、その演算結果を鍵Kとし、送信部が、演算結果C1, C2を第1装置に送信する。
第1装置は、その関数演算部が、少なくとも演算結果C1, C2の一方を含む情報をH関数入力値とし、当該H関数入力値によって定まる値に対し、上記ハッシュ関数Hを作用させて演算結果dを算出し、第1シード演算部が有限群G上での演算σ1=C1(x1+d・y1)・C2(x2+d・y2)∈Gを行い、第2シード演算部が有限群G上での演算σ2=C1(d・x1+y1)・C2(d・x2+y2)∈Gを行い、当該演算結果σ1をシードとした擬似ランダム関数Fσ1の関数値と、当該演算結果σ2をシードとした擬似ランダム関数Fσ2の関数値との排他的論理和演算を行い、その演算結果を鍵Kとする。
本発明により、従来の方式と同等の効率を持ち、なおかつ標準モデルでCCA-安全な鍵共有が可能となる。
以下、本発明を実施するための最良の形態を図面を参照して説明する。
〔準備〕
まず、用語の説明を行う。
<有限群>
以下の各実施形態では、離散対数問題が難しい有限群Gを用い、その位数をpとする。なお、離散対数問題が難しいとは、離散対数問題を多項式時間で解くことが困難であることを意味する。また、このような有限群Gの実現例としては、例えば、楕円曲線暗号に用いられる楕円曲線上の有理点のなす群や、エルガマル暗号等に用いられる有限体の乗法群などを用いることができる(例えば、『岡本龍明,山本博資著、「現代暗号」、産業図書出版、ISBN4-7828-5353-X(参考文献1)』等参照)。なお、有限群Gとして楕円曲線上の有理点のなす群を用いる場合、その元は楕円曲線上の点であり、有限体の乗法群を用いる場合、その元は整数である。また、楕円曲線上の有理点のなす群をコンピュータ上で実現するための具体的方法には様々なものが存在し、実際、楕円曲線上の有理点のなす群で構成され、コンピュータ上で実装可能な様々な楕円曲線暗号方式が存在する(例えば、参考文献1や『イアン・F・ブラケ、ガディエル・セロッシ、ナイジェル・P・スマート=著、鈴木治郎=訳、「楕円曲線暗号」、出版=ピアソン・エデュケーション、ISBN4-89471-431-0(参考文献2)』等参照)。
また、有限群G上の演算とは、有限群Gで定義された演算を意味する。例えば、有限群Gが楕円曲線上の有理点のなす群である場合、楕円曲線上の楕円加算や楕円スカラー倍算やそれらの組み合わせが「有限群G上の演算」に相当する。この場合、αβ∈Gは、楕円曲線上の点αを楕円スカラー倍(β倍)する演算を意味し、α・β∈Gは、楕円曲線上の点αと点βとの楕円加算を意味する。また、楕円スカラー倍演算をコンピュータ上で実行する具体的な方法としては、二進展開法、移動窓法等の公知の演算方法を例示できる(例えば、参考文献2等参照)。また、例えば、有限群Gが有限体の乗法群であった場合、q(ただし、gは2以上の整数、q=2p+1)を法としたべき乗演算や積演算が「有限群G上の演算」に相当する。この場合、αβ∈Gは、αβmod qの演算を意味し、α・β∈Gは、(α・β) mod qの演算を意味する。
<目的衝突困難なハッシュ関数>
目的衝突困難(TCR: Target Collision Resistant)なハッシュ関数とは、異なる入力値に対する出力値が互いに同一となる確率が無視できるほど小さいハッシュ関数を意味する。本形態の目的衝突困難なハッシュ関数は、以下のように定義される。
まず、集合Domkと集合Rngk(kは自然数のセキュリティパラメータ)との間を対応付けるハッシュ関数Hを想定する。また、このようなハッシュ関数Hの各セキュリティパラメータkに対する鍵空間が、KHkで示されるビット列による確率空間であるとする。さらに、入力1(kビットデータ)に対する出力値の分布がKHkと等しくなる確率的多項式時間アルゴリズムが存在するものとする。また、セキュリティパラメータkと、KHkからその分布に従って任意に選択したh(h ←R KHk)と、集合Domkからその分布に従って任意に選択した集合D(D ←RDomk)と、集合Rngkからその分布に従って任意に選択した集合Rと(R ←R Rngk)のインデックスが付されたこのようなハッシュ関数Hh k,D,Rが、集合Dの要素を集合Rの要素にマッピングする関数であるものとする。なお、「α ←R β」は、集合βからその分布に従って任意に選択した集合αを意味する。さらに、1,h及び集合Dの要素ρの入力に対して関数値Hh k,D,R(ρ)を出力する決定論多項式アルゴリズムが存在するものとする。
そして、確率的多項式時間マシーンAを想定し、全てのキュリティパラメータkに対するハッシュ関数Hh k,D,Rの優位性を以下のように定義する。なお、Pr[・]は事象・の確率を示し、ρ*は集合Dから一様に選択された値(ρ*U D)を示す。また、「α←β」はβをαとして設定することを意味する。
AdvTCRH,A(k)←Pr[ρ∈D∧ρ≠ρ*∧Hh k,D,R(ρ)=Hh k,D,R*)|ρ ←R A(1k*,h,D,R)] …(1)
ここで、どのような確率的多項式時間マシーンAに対しても優位性AdvTCRH,A(k)がセキュリティパラメータkにおいて無視できる程度に小さい場合、ハッシュ関数Hを目的衝突困難なハッシュ関数と呼ぶ。なお、このような目的衝突困難なハッシュ関数は、SHA-1などの実用的なハッシュ関数を用いて容易に構成できる。
<擬似ランダム関数>
擬似ランダム関数(Pseudo-Random Function)とは、入力値に対する出力値が真のランダム値と識別困難である関数を意味する。本形態の擬似ランダム関数は、以下のように定義される。
まず、シードSeedkと集合Domkと集合Rngkとの間を関連付ける関数Fを想定する。ここで、シードSeedkはランダムな値である。さらに、セキュリティパラメータkと、Seedkからその分布に従って任意に選択した集合Σ(Σ ←R Seedk)と、集合Σから一様に選択したσ(σ ←U Σ)と、集合Domkからその分布に従って任意に選択した集合D(D ←R Domk)と、集合Rngkからその分布に従って任意に選択した集合Rと(R ←RRngk)のインデックスが付されたこのような関数Fσ k,Σ,D,Rが、集合Dの要素を集合Rにマッピングする関数であるものとする。
そして、オラクルOにアクセス可能な確率的多項式時間マシーンAOを想定し、全てのキュリティパラメータkに対する関数Fσ k,Σ,D,Rの優位性を以下のように定義する。なお、Fは関数Fσ k,Σ,D,Rであり、RFはDをFに写す真のランダム関数である。また、「A(α)→β」は、Aが入力αに対してβ∈{0, 1}を出力することを意味する。
AdvPRFF,A(k)←|Pr[AF(1k,D,R)→1] - Pr[ARF(1k,D,R)→1]| …(2)
ここで、どのような確率的多項式時間マシーンAに対しても優位性AdvPRFF,A(k)がセキュリティパラメータkにおいて無視できる程度に小さい場合、関数Fを擬似ランダム関数と呼ぶ。なお、このような目擬似ランダム関数は、SHA-1などの実用的なハッシュ関数を用いて容易に構成できる。
〔第1実施形態〕
次に、本発明の第1実施形態について説明する。
<全体構成>
図1(a)は、第1実施形態の鍵共有システム1の構成を例示した図である。
図1(a)に例示するように、本形態の鍵共有システム1は、鍵を共有する第1装置10と第2装置とを有し、それらはインターネット等の安全ではないネットワーク30を通じて通信可能に接続されている。なお、第1装置10と第2装置20との間の通信はネットワーク30を通じて行われるが、以下ではその旨を省略して説明する。
<ハードウェア構成>
図1(b)は、第1装置10のハードウェア構成を例示したブロック図である。
図1(b)に例示するように、この例の第1装置10は、CPU(Central Processing Unit)10a、入力部10b、出力部10c、補助記憶装置10d、RAM(Random Access Memory)10f、ROM(Read Only Memory)10e及びバス10gを有している。
CPU10aは、読み込まれた各種プログラムに従って様々な演算処理を実行する。また、入力部10bは、データが入力される入力ポート、キーボード、マウス等であり、出力部10cは、データを出力する出力ポート、ディスプレイ等である。補助記憶装置10dは、例えば、ハードディスク、MO(Magneto-Optical disc)、半導体メモリ等であり、RAM10fは、SRAM (Static Random Access Memory)、DRAM (Dynamic Random Access Memory)等である。また、バス10gは、CPU10a、入力部10b、出力部10c、補助記憶装置10d、RAM10f及びROM10eを通信可能に接続している。
なお、第2装置20のハードウェア構成は、第1装置10のそれと同様であるため説明を省略する。
<ハードウェアとソフトウェアとの協働>
図2は、第1実施形態の第1装置10及び第2装置20の機能構成を例示したブロック図である。なお、図2における矢印はデータの流れを示すが、制御部13a,23aに出入りするデータの流れに対応する矢印は省略してある。
第1実施形態の第1装置10及び第2装置20は、それぞれ、上述のようなハードウェアに所定のプログラムが読み込まれ、CPUが実行することによって構築される。
図2に例示するように、本形態の第1装置10は、記憶部11と、送信部12aと、受信部12bと、制御部13aと、関数演算部13bと、シード演算部13cと、鍵演算部13dとを有する。なお、記憶部11は、例えば、キャッシュメモリ、レジスタ、RAM、若しくは補助記憶装置、又はそれらを結合した記憶領域である。また、送信部12a及び受信部12bは、所定のプログラムが読み込まれたCPUの制御のもと駆動するLANカード、モデム等の通信装置である。さらに、制御部13a、関数演算部13b、シード演算部13c及び鍵演算部13dは、例えば、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。
また、本形態の第2装置20は、記憶部21と、送信部22aと、受信部22bと、制御部23aと、整数選択部23bと、第1暗号化部23cと、第2暗号化部23dと、関数演算部23eと、シード演算部23fと、鍵演算部23gとを有する。なお、記憶部21、例えば、キャッシュメモリ、レジスタ、RAM、若しくは補助記憶装置、又はそれらを結合した記憶領域である。また、送信部22a及び受信部22bは、所定のプログラムが読み込まれたCPUの制御のもと駆動するLANカード、モデム等の通信装置である。さらに、制御部23a、整数選択部23b、第1暗号化部23c、第2暗号化部23d、関数演算部23e、シード演算部23f及び鍵演算部23gは、例えば、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。また、第1装置10,第2装置20は、それぞれ、制御部13a,23aの制御の下、各処理を実行する。
<鍵共有処理>
次に、本形態の鍵共有処理について説明する。
図3は、第1実施形態の鍵共有処理を説明するためのフローチャートである。以下、この図を用いて本形態の鍵共有処理を説明する。
まず、第1装置の秘密鍵として(x1, x2, y1, y2)∈{0,1,...,p-1}4が設定され、これらが第1装置10の記憶部11に格納される(秘密鍵格納過程/ステップS1)。なお、演算の効率面からは、秘密鍵を(x1, x2, y1, y2)∈{0,1,...,p-1}4のように設定するのが好ましいが、任意の4つの整数(x1, x2, y1, y2)を第1装置10の秘密鍵としてもよい。また、有限群Gの元g1, g2∈Gと当該有限群G上での演算結果z=g1x1・g2x2∈G,w=g1y1・g2y2∈Gとを公開鍵として第1装置10の記憶部11に格納する(第1公開鍵格納過程/ステップS2)。次に、公開鍵g1, g2, z,wが送信部12aに送られ、送信部12aはこれらを第2装置20に送信する(ステップS3)。送信された公開鍵g1, g2, z,wは、第2装置20の受信部22bで受信され、第2装置20の記憶部21に格納される(第2公開鍵格納過程/ステップS4)。
次に、第2装置20の整数選択部23bが、ランダムな整数r∈{0,1,...,p-1}を選択し、当該整数rを第2装置20の記憶部21に格納する(整数選択過程/ステップS5)。なお、演算の効率面からは、整数rを{0,1,...,p-1}から選択することが好ましいが、整数rをこれ以外の範囲から選択してもよい。
次に、第2装置20の第1暗号化部23cが、第2装置20の記憶部21から公開鍵g1と整数rとを読み込み、有限群G上での演算
C1=g1r∈G …(3)
を行い、当該演算結果C1を第2装置20の記憶部21に格納する(第1暗号化過程/ステップS6)。さらに、第2装置20の第2暗号化部23dが、第2装置20の記憶部21から公開鍵g2と整数rとを読み込み、有限群G上での演算
C2=g2r∈G …(4)
を行い、当該演算結果C2を第2装置20の記憶部21に格納する(第2暗号化過程/ステップS7)。次に、第2装置20の関数演算部23eが、第2装置20の記憶部21から演算結果C1, C2と公開鍵z, wとをH関数入力値として読み込み、当該H関数入力値によって定まる値に対し、値域を整数とする目的衝突困難なハッシュ関数Hを作用させ、その演算結果
d=H(z, w, C1, C2) …(5)
を第2装置20の記憶部21に格納する(第2装置関数演算過程/ステップS8)。なお、演算効率の面からは、値域を{0,1,...,p-1}とする目的衝突困難なハッシュ関数(H(X)∈{0,1,...,p-1})を用いることが望ましい(以下、同様)。また、「H関数入力値によって定まる値」の例としては、例えば、有限群Gが有限体の乗法群の場合には、z, w, C1, C2のビット結合値やそれらの排他的論理和等を例示できる。また、例えば、有限群Gが楕円曲線上の有理点のなす群である場合には、楕円曲線上の点z, w, C1, C2の各座標値(x座標値とy座標値)のビット結合値や、各x座標値若しくはy座標値のビット結合値や、それらの排他的論理和等を、「H関数入力値によって定まる値」として用いることができる。
その後、第2装置20のシード演算部23fが、第2装置20の記憶部21から公開鍵z, wと整数rと演算結果dとを読み込み、有限群G上での演算
σ=zr・wr・d∈G …(6)
を行い、当該演算結果σを第2装置20の記憶部21に格納する(第2装置シード演算過程/ステップS9)。そして、第2装置20の鍵演算部23gが、第2装置20の記憶部21から演算結果σと、公開鍵(g1, g2, z, w)と、演算結果C1, C2とを読み込み、当該演算結果σをシードとし、公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値を入力とした擬似ランダム関数Fσの関数値を算出し、その関数値を鍵
K=Fσ(g1, g2, z, w, C1, C2) …(7)
として第2装置20の記憶部21に格納する(第2装置鍵演算過程/ステップS10)。なお、「公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値」の例としては、例えば、有限群Gが有限体の乗法群の場合には、g1, g2, z, w, C1, C2のビット結合値やそれらの排他的論理和等を例示できる。また、例えば、有限群Gが楕円曲線上の有理点のなす群である場合には、楕円曲線上の点g1, g2, z, w, C1, C2の各座標値(x座標値とy座標値)のビット結合値や、各x座標値若しくはy座標値のビット結合値や、それらの排他的論理和等を、「公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値」として用いることができる。また、演算結果σをシードとし、公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値を入力とした擬似ランダム関数Fσの関数値とは、例えば、演算結果σと「公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値」とを擬似ランダム関数Fσの入力とし、出力された関数値を意味し、より具体的には、例えば、演算結果σと「公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値」とのビット結合値に対して擬似ランダム関数Fσを作用させた演算結果を意味する。
その後、演算結果C1, C2が第2装置20の送信部22aに送られ、送信部22aが、演算結果C1, C2を第1装置10に送信する(演算結果送信過程/ステップS11)。送信された演算結果C1, C2は、第1装置10の受信部12bで受信され、第1装置10の記憶部11に格納される(演算結果格納過程/ステップS12)。
次に、第1装置10の関数演算部13bが、第1装置10の記憶部11から演算結果C1, C2と公開鍵z, wをH関数入力値として読み込み、ステップS8と同様に、当該H関数入力値によって定まる値に対し、ハッシュ関数Hを作用させ、その演算結果
d=H(z, w, C1, C2) …(8)
を第1装置10の記憶部11に格納する(第1装置関数演算過程/ステップS13)。次に、第1装置10のシード演算部13cが、第1装置10の記憶部11から演算結果C1, C2, dと秘密鍵x1, x2, y1, y2とを読み込み、有限群G上での演算
σ=C1(x1+d・y1)・C2(x2+d・y2) …(9)
を行い、当該演算結果σを第1装置10の記憶部11に格納する(第1装置シード演算過程/ステップS14)。その後、第1装置10の鍵演算部13dが、第1装置10の記憶部11から演算結果σと公開鍵(g1, g2, z, w)とを読み込み、ステップS10と同様に、当該演算結果σをシードとし、公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値を入力とした擬似ランダム関数Fσの関数値を算出し、その関数値を鍵
K=Fσ(g1, g2, z, w, C1, C2) …(10)
として第1装置10の記憶部11に格納する(第1装置鍵演算過程/ステップS15)。
以上の処理により、第1装置10と第2装置20とで鍵Kが共有される。
<第1装置10と第2装置20とで鍵Kが共有される理由>
C1, C2が正しく作られていれば以下を満たし、第1装置10で算出されるシードσ(式(9))と第2装置20で算出されるシードσ(式(6))とが等しくなり、擬似ランダム関数Fσの関数値である鍵K(式(7)(10))も等しくなる。
σ=C1(x1+d・y1)・C2(x2+d・y2) (式(9)より)
={g1(x1+d・y1)・g2(x2+d・y2)}r(式(3)(4)より)
=(g1x1・g2x2)r・(g1y1・g2y2)d・r
= z r・wd・r(公開鍵z=g1x1・g2x2∈G,w=g1y1・g2y2∈Gより)
=式(6)
〔第2実施形態〕
次に、本発明の第2実施形態について説明する。なお、以下では、第1実施形態との相違点を中心に説明し、第1実施形態と共通する事項については説明を省略する。
<全体構成>
本形態の鍵共有システムは、第1実施形態の第1装置10を第1装置110に置換し、第2装置20を第2装置120に置換したものである。
<ハードウェア構成>
第1装置110及び第2装置120のハードウェア構成は、第1実施形態で説明した第1装置10及び第2装置20のハードウェア構成と同様であるため、説明を省略する。
<ハードウェアとソフトウェアとの協働>
図4は、第2実施形態の第1装置110及び第2装置120の機能構成を例示したブロック図である。なお、図4における矢印はデータの流れを示すが、制御部13a,23aに出入りするデータの流れに対応する矢印は省略してある。また、図4において第1実施形態と共通する部分については、図2と同じ符号を付して説明を簡略化する。
第2実施形態の第1装置110及び第2装置120は、それぞれ、上述のようなハードウェアに所定のプログラムが読み込まれ、CPUが実行することによって構築される。
図4に例示するように、本形態の第1装置110は、記憶部11と、送信部12aと、受信部12bと、制御部13aと、関数演算部13bと、第1シード演算部113cと、第2シード演算部113eと、鍵演算部113dとを有する。なお、第1シード演算部113c、第2シード演算部113e及び鍵演算部113dは、例えば、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。
また、本形態の第2装置220は、記憶部21と、送信部22aと、受信部22bと、制御部23aと、整数選択部23bと、第1暗号化部23cと、第2暗号化部23dと、関数演算部23eと、第1シード演算部123fと、第2シード演算部123hと、鍵演算部123gとを有する。なお、第1シード演算部123f、第2シード演算部123h及び鍵演算部123gは、例えば、所定のプログラムがCPUに読み込まれ、実行されることによって構築される演算部である。
<鍵共有処理>
次に、本形態の鍵共有処理について説明する。
図5は、第2実施形態の鍵共有処理を説明するためのフローチャートである。以下、この図を用いて本形態の鍵共有処理を説明する。なお、図5において第1実施形態と共通する処理については図3と同じステップ番号を付し、説明を省略する。
まず、第1装置110と第2装置120とが第1実施形態で説明したステップS1〜S8の処理を実行した後、第2装置120の第1シード演算部123fが、第2装置120の記憶部21から公開鍵z, wと整数rと演算結果dとを読み込み、有限群G上での演算
σ1=zr・wr・d∈G …(11)
を行い、当該演算結果σを第2装置120の記憶部21に格納する(第2装置第1シード演算過程/ステップS109)。
また、第2装置120の第2シード演算部123hが、第2装置120の記憶部21から公開鍵z, wと整数rと演算結果dとを読み込み、有限群G上での演算
σ2=zr・d・wr∈G …(12)
を行い、当該演算結果σ2を第2装置120の記憶部21に格納する(第2装置第2シード演算過程/ステップS110)。
そして、第2装置120の鍵演算部123gが、第2装置120の記憶部21から演算結果σ1, σ2と、公開鍵(g1, g2, z, w)と、演算結果C1, C2とを読み込み、当該演算結果σ1をシードとし、公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値を入力とした擬似ランダム関数Fσ1(g1, g2, z, w, C1, C2)の関数値と、当該演算結果σ2をシードとし、公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値を入力とした擬似ランダム関数Fσ2(g1, g2, z, w, C1, C2)の関数値との排他的論理和演算を行い、その演算結果を鍵
K= Fσ1(g1, g2, z, w, C1, C2) (+) Fσ2(g1, g2, z, w, C1, C2) …(13)
として第2装置120の記憶部21に格納する(第2装置鍵演算過程/ステップS111)。なお、「α(+)β」は、αとβとの排他的論理和を意味する。
その後、第1装置110と第2装置120とが第1実施形態で説明したステップS11〜S13の処理を実行する。次に、第1装置110の第1シード演算部113cが、第1装置110の記憶部11から演算結果C1, C2, dと秘密鍵x1, x2, y1, y2とを読み込み、有限群G上での演算
σ1=C1(x1+d・y1)・C2(x2+d・y2)∈G …(14)
を行い、当該演算結果σ1を第1装置110の記憶部11に格納する(第1装置第1シード演算過程/ステップS114)。また、第1装置110の第2シード演算部113eが、第1装置110の記憶部11から演算結果C1, C2, dと秘密鍵x1, x2, y1, y2とを読み込み、有限群G上での演算
σ2=C1(d・x1+y1)・C2(d・x2+y2)∈G …(15)
を行い、当該演算結果σ2を第1装置110の記憶部11に格納する(第1装置第2シード演算過程/ステップS115)。
そして、第1装置110の鍵演算部113dが、第1装置110の記憶部11から演算結果σ1, σ2と、公開鍵(g1, g2, z, w)と、演算結果C1, C2とを読み込み、当該演算結果σ1をシードとし、公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値を入力とした擬似ランダム関数Fσ1(g1, g2, z, w, C1, C2)の関数値と、当該演算結果σ2をシードとし、公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値を入力とした擬似ランダム関数Fσ2(g1, g2, z, w, C1, C2)の関数値との排他的論理和演算を行い、その演算結果を鍵
K= Fσ1(g1, g2, z, w, C1, C2) (+) Fσ2(g1, g2, z, w, C1, C2) …(16)
として第1装置110の記憶部11に格納する(第1装置鍵演算過程/ステップS116)。
以上の処理により、第1装置110と第2装置120とで鍵Kが共有される。
<第1装置110と第2装置120とで鍵Kが共有される理由>
C1, C2が正しく作られていれば以下を満たし、第1装置110で算出されるシードσ1,σ2(式(14)(15))と第2装置210で算出されるシードσ1,σ2(式(11)(12))とがそれぞれ等しくなり、擬似ランダム関数Fσの関数値である鍵K(式(13)(16))も等しくなる。
σ1=C1(x1+d・y1)・C2(x2+d・y2) (式(14)より)
={g1(x1+d・y1)・g2(x2+d・y2)}r(式(3)(4)より)
=(g1x1・g2x2)r・(g1y1・g2y2)d・r
= z r・wd・r(公開鍵z=g1x1・g2x2∈G,w=g1y1・g2y2∈Gより)
=式(11)
σ2=C1(d・x1+y1)・C2(d・x2+y2)(式(15)より)
={g1(d・x1+y1)・g2(d・x2+y2)}r(式(3)(4)より)
=(g1x1・g2x2)d・r・(g1y1・g2y2)r
= zd・r・wr(公開鍵z=g1x1・g2x2∈G,w=g1y1・g2y2∈Gより)
=式(12)
〔各実施形態の効果〕
第1実施形態の鍵共有方式における暗号化処理時(ステップS6〜S10)の計算量は、有限群G上での指数演算3回分に相当する。また、復号処理時(ステップS13〜S15)の計算量は、有限群G上での指数演算1回分に相当する。また、ステップS11で送信される暗号文C1, C2のサイズは、有限群Gの2要素のサイズに相当する。また、この方式の安全性は、有限群GでDDH仮定が保たれ、Hが目的衝突困難なハッシュ関数であり、Fが擬似ランダム関数であることにより、標準モデルでCCA-安全であることが示される。
また、第2実施形態の鍵共有方式における暗号化処理時(ステップS6〜S111)の計算量は、有限群G上での指数演算4回分に相当する。また、復号処理時(ステップS13〜S115)の計算量は、有限群G上での指数演算2回分に相当する。また、ステップS11で送信される暗号文C1, C2のサイズは、有限群Gの2要素のサイズに相当する。また、この方式の安全性は、有限群GでDDH仮定が保たれ、Hが目的衝突困難なハッシュ関数であり、Fが擬似ランダム関数であることにより、標準モデルでCCA-安全よりも強い安全性であるCPCA-安全であることが示される。
なお、Kurosawa-Desmedt方式においては、暗号化処理時及び復号処理時に計算量、暗号文のサイズは、何れも第1実施形態の鍵共有方式と同等である。しかし、その安全性は、CCA-安全を満たさない。
PSEC-KEMにおいては、暗号化処理時の計算量は、有限群G上での指数演算2回分に相当する。また、復号処理時の計算量は、有限群G上での指数演算2回分に相当する。また、暗号文のサイズは有限群Gの2要素のサイズに相当する。この方式の安全性は、ランダムオラクルモデルでCCA-安全であることが示されるが、標準モデルでは示されない。
以上より、上述の各実施形態の方式が、従来の方式のうちで最も効率のよいKurosawa-Desmedt方式及びPSEC-KEMとほぼ同等の効率であって、かつ安全性ではそれらの方式よりも優れていることが分かる。
〔変形例等〕
なお、本発明は上述の実施の形態に限定されるものではない。例えば、上述の各実施形態のステップS8,S13では、演算結果C1, C2と公開鍵z, wとをH関数入力値とした。しかし、演算結果C1, C2と公開鍵z, wとを含むその他の情報をH関数入力値としてもよい。また、演算結果C1, C2の一方と公開鍵z, wとをH関数入力値としてもよいし、演算結果C1, C2の一方と公開鍵z, wの一方とをH関数入力値としてもよいし、演算結果C1, C2の一方とその他の情報とをH関数入力値としてもよい。
また、第1実施形態のステップS10,S15では、演算結果σをシードとし、公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値を入力とした擬似ランダム関数Fσの関数値を算出し、その関数値を鍵K=Fσ(g1, g2, z, w, C1, C2)とした。また、第2実施形態のステップS111,S116では、演算結果σ1をシードとし、公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値を入力とした擬似ランダム関数Fσ1(g1, g2, z, w, C1, C2)の関数値と、当該演算結果σ2をシードとし、公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値を入力とした擬似ランダム関数Fσ2(g1, g2, z, w, C1, C2)の関数値との排他的論理和演算を行い、その演算結果を鍵K= Fσ1(g1, g2, z, w, C1, C2) (+) Fσ2(g1, g2, z, w, C1, C2)とした。しかし、第1,2実施形態において、「公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値」の代わりに他の情報を用いることとしてもよい。例えば、「公開鍵(g1, g2, z, w)と演算結果C1, C2とによって定まる値」の代わりに、「z, w, C1, C2によって定まる値」や「C1, C2によって定まる値」や「C1によって定まる値」や「g1, g2, z, w, C1, C2の一部によって定まる値」やnull値等を用いてもよい。
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。例えば、ステップS1〜S4の処理は、この順序で行われる必要はない。具体的には、ステップS1の処理はステップS14までの何れかに時点で実行されればよく、ステップS2の処理はステップS15までの何れかに時点で実行されればよく、ステップS3,S4の処理はステップS6までの何れかの時点で実行されればよい。
その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。更に、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、更に、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
本発明の産業上の利用分野としては、例えば、共通鍵を共有して共通鍵暗号通信を行う暗号通信分野を例示できる。
図1(a)は、第1実施形態の鍵共有システム1の構成を例示した図である。図1(b)は、第1装置のハードウェア構成を例示したブロック図である。 図2は、第1実施形態の第1装置及び第2装置の機能構成を例示したブロック図である。 図3は、第1実施形態の鍵共有処理を説明するためのフローチャートである。 図4は、第2実施形態の第1装置及び第2装置の機能構成を例示したブロック図である。 図5は、第2実施形態の鍵共有処理を説明するためのフローチャートである。
符号の説明
10,110 第1装置
20,120 第2装置

Claims (12)

  1. 第1装置と第2装置とで鍵を共有するための鍵共有方法であって、
    整数x1, x2, y1, y2を第1装置の秘密鍵として第1装置の記憶部に格納する秘密鍵格納過程と、
    有限群Gの元g1, g2∈Gと当該有限群G上での演算結果z=g1x1・g2x2∈G,w=g1y1・g2y2∈Gとを公開鍵として上記第1装置の記憶部に格納する第1公開鍵格納過程と、
    上記公開鍵g1, g2, z,wを上記第2装置の記憶部に格納する第2公開鍵格納過程と、
    第2装置の整数選択部が、ランダムな整数rを選択し、当該整数rを上記第2装置の記憶部に格納する整数選択過程と、
    第2装置の第1暗号化部が、上記第2装置の記憶部から公開鍵g1と整数rとを読み込み、有限群G上での演算C1=g1r∈Gを行い、当該演算結果C1を上記第2装置の記憶部に格納する第1暗号化過程と、
    第2装置の第2暗号化部が、上記第2装置の記憶部から公開鍵g2と整数rとを読み込み、有限群G上での演算C2=g2r∈Gを行い、当該演算結果C2を上記第2装置の記憶部に格納する第2暗号化過程と、
    第2装置の関数演算部が、上記第2装置の記憶部から少なくとも演算結果C1, C2の一方を含む情報をH関数入力値として読み込み、当該H関数入力値によって定まる値に対し、値域を整数とする目的衝突困難なハッシュ関数Hを作用させ、その演算結果dを上記第2装置の記憶部に格納する第2装置関数演算過程と、
    第2装置のシード演算部が、上記第2装置の記憶部から公開鍵z, wと整数rと演算結果dとを読み込み、有限群G上での演算σ=zr・wr・d∈Gを行い、当該演算結果σを上記第2装置の記憶部に格納する第2装置シード演算過程と、
    第2装置の鍵演算部が、上記第2装置の記憶部から少なくとも演算結果σを読み込み、当該演算結果σをシードとした擬似ランダム関数Fσの関数値を算出し、その関数値を鍵Kとして上記第2装置の記憶部に格納する第2装置鍵演算過程と、
    第2装置の送信部が、演算結果C1, C2を第1装置に送信する演算結果送信過程と、
    演算結果C1, C2を上記第1装置の記憶部に格納する演算結果格納過程と、
    第1装置の関数演算部が、上記第1装置の記憶部から少なくとも演算結果C1, C2の一方を含む情報をH関数入力値として読み込み、当該H関数入力値によって定まる値に対し、上記ハッシュ関数Hを作用させ、その演算結果dを上記第1装置の記憶部に格納する第1装置関数演算過程と、
    第1装置のシード演算部が、上記第1装置の記憶部から演算結果C1, C2, dと秘密鍵x1, x2, y1, y2とを読み込み、有限群G上での演算σ=C1(x1+d・y1)・C2(x2+d・y2)∈Gを行い、当該演算結果σを上記第1装置の記憶部に格納する第1装置シード演算過程と、
    第1装置の鍵演算部が、上記第1装置の記憶部から少なくとも演算結果σを読み込み、当該演算結果σをシードとした擬似ランダム関数Fσの関数値を算出し、その関数値を鍵Kとして上記第1装置の記憶部に格納する第1装置鍵演算過程と、
    を有することを特徴とする鍵共有方法。
  2. 請求項1に記載の鍵共有方法であって、
    上記第2装置鍵演算過程は、上記第2装置の記憶部から少なくとも演算結果C1, C2の一方を含む情報を擬似ランダム関数入力値として読み込み、当該擬似ランダム関数入力値によって定まる値を入力とし、上記演算結果σをシードとした擬似ランダム関数Fσの関数値を算出し、その関数値を鍵Kとする過程であり、
    上記第1装置鍵演算過程は、上記第1装置の記憶部から少なくとも演算結果C1, C2の一方を含む情報を擬似ランダム関数入力値として読み込み、当該擬似ランダム関数入力値によって定まる値を入力とし、上記演算結果σをシードとした擬似ランダム関数Fσの関数値を算出し、その関数値を鍵Kとする過程である、
    ことを特徴とする鍵共有方法。
  3. 第1装置と第2装置とで鍵を共有するための鍵共有方法であって、
    整数x1, x2, y1, y2を第1装置の秘密鍵として第1装置の記憶部に格納する秘密鍵格納過程と、
    有限群Gの元g1, g2∈Gと当該有限群G上での演算結果z=g1x1・g2x2∈G,w=g1y1・g2y2∈Gとを公開鍵として上記第1装置の記憶部に格納する第1公開鍵格納過程と、
    上記公開鍵g1, g2, z,wを第2装置の記憶部に格納する第2公開鍵格納過程と、
    第2装置の整数選択部が、ランダムな整数rを選択し、当該整数rを上記第2装置の記憶部に格納する整数選択過程と、
    第2装置の第1暗号化部が、上記第2装置の記憶部から公開鍵g1と整数rとを読み込み、有限群G上での演算C1=g1r∈Gを行い、当該演算結果C1を上記第2装置の記憶部に格納する第1暗号化過程と、
    第2装置の第2暗号化部が、上記第2装置の記憶部から公開鍵g2と整数rとを読み込み、有限群G上での演算C2=g2r∈Gを行い、当該演算結果C2を上記第2装置の記憶部に格納する第2暗号化過程と、
    第2装置の関数演算部が、上記第2装置の記憶部から少なくとも演算結果C1, C2の一方を含む情報をH関数入力値として読み込み、当該H関数入力値によって定まる値に対し、値域を整数とする目的衝突困難なハッシュ関数Hを作用させ、その演算結果dを上記第2装置の記憶部に格納する第2装置関数演算過程と、
    第2装置の第1シード演算部が、上記第2装置の記憶部から公開鍵z, wと整数rと演算結果dとを読み込み、有限群G上での演算σ1=zr・wr・d∈Gを行い、当該演算結果σ1を上記第2装置の記憶部に格納する第2装置第1シード演算過程と、
    第2装置の第2シード演算部が、上記第2装置の記憶部から公開鍵z, wと整数rと演算結果dとを読み込み、有限群G上での演算σ2=zr・d・wr∈Gを行い、当該演算結果σ2を上記第2装置の記憶部に格納する第2装置第2シード演算過程と、
    第2装置の鍵演算部が、上記第2装置の記憶部から少なくとも演算結果σ1, σ2を読み込み、当該演算結果σ1をシードとした擬似ランダム関数Fσ1の関数値と、当該演算結果σ2をシードとした擬似ランダム関数Fσ2の関数値との排他的論理和演算を行い、その演算結果を鍵Kとして上記第2装置の記憶部に格納する第2装置鍵演算過程と、
    第2装置の送信部が、演算結果C1, C2を第1装置に送信する演算結果送信過程と、
    演算結果C1, C2を上記第1装置の記憶部に格納する演算結果格納過程と、
    第1装置の関数演算部が、上記第1装置の記憶部から少なくとも演算結果C1, C2の一方を含む情報をH関数入力値として読み込み、当該H関数入力値によって定まる値に対し、上記ハッシュ関数Hを作用させ、その演算結果dを上記第1装置の記憶部に格納する第1装置関数演算過程と、
    第1装置の第1シード演算部が、上記第1装置の記憶部から演算結果C1, C2, dと秘密鍵x1, x2, y1, y2とを読み込み、有限群G上での演算σ1=C1(x1+d・y1)・C2(x2+d・y2)∈Gを行い、当該演算結果σ1を上記第1装置の記憶部に格納する第1装置第1シード演算過程と、
    第1装置の第2シード演算部が、上記第1装置の記憶部から演算結果C1, C2, dと秘密鍵x1, x2, y1, y2とを読み込み、有限群G上での演算σ2=C1(d・x1+y1)・C2(d・x2+y2)∈Gを行い、当該演算結果σ2を上記第1装置の記憶部に格納する第1装置第2シード演算過程と、
    第1装置の鍵演算部が、上記第1装置の記憶部から少なくとも演算結果σ1, σ2を読み込み、当該演算結果σ1をシードとした擬似ランダム関数Fσ1の関数値と、当該演算結果σ2をシードとした擬似ランダム関数Fσ2の関数値との排他的論理和演算を行い、その演算結果を鍵Kとして上記第1装置の記憶部に格納する第1装置鍵演算過程と、
    を有することを特徴とする鍵共有方法。
  4. 請求項3に記載の鍵共有方法であって、
    上記第2装置鍵演算過程は、第2装置の鍵演算部が、少なくとも演算結果C1, C2の一方を含む情報を擬似ランダム関数入力値として読み込み、当該擬似ランダム関数入力値によって定まる値を入力とし、上記演算結果σ1をシードとした擬似ランダム関数Fσ1の関数値と、当該擬似ランダム関数入力値によって定まる値を入力とし、上記演算結果σ2をシードとした擬似ランダム関数Fσ2の関数値と、の排他的論理和演算を行い、その演算結果を鍵Kとする過程であり、
    上記第1装置鍵演算過程は、第1装置の鍵演算部が、少なくとも演算結果C1, C2の一方を含む情報を擬似ランダム関数入力値として読み込み、当該擬似ランダム関数入力値によって定まる値を入力とし、上記演算結果σ1をシードとした擬似ランダム関数Fσ1の関数値と、当該擬似ランダム関数入力値によって定まる値を入力とし、上記演算結果σ2をシードとした擬似ランダム関数Fσ2の関数値と、の排他的論理和演算を行い、その演算結果を鍵Kとする過程である、
    ことを特徴とする鍵共有方法。
  5. 請求項2又は4に記載の鍵共有方法であって、
    上記擬似ランダム関数入力値は、
    公開鍵g1, g2, z,wと演算結果C1, C2とを含む、
    ことを特徴とする鍵共有方法。
  6. 請求項1から5の何れかに記載の鍵共有方法であって、
    上記H関数入力値は、
    公開鍵z,wと演算結果C1, C2とを含む、
    ことを特徴とする鍵共有方法。
  7. 第2装置と鍵を共有する第1装置であって、
    整数x1, x2, y1, y2を第1装置の秘密鍵として格納し、有限群Gの元g1, g2∈Gと当該有限群G上での演算結果z=g1x1・g2x2∈G,w=g1y1・g2y2∈Gとを公開鍵として格納し、第2装置から送信された演算結果C1, C2を格納する記憶部と、
    上記記憶部から少なくとも演算結果C1, C2の一方を含む情報をH関数入力値として読み込み、当該H関数入力値によって定まる値に対し、上記ハッシュ関数Hを作用させ、その演算結果dを上記記憶部に格納する関数演算部と、
    上記記憶部から演算結果C1, C2, dと秘密鍵x1, x2, y1, y2とを読み込み、有限群G上での演算σ=C1(x1+d・y1)・C2(x2+d・y2)∈Gを行い、当該演算結果σを上記記憶部に格納するシード演算部と、
    上記記憶部から少なくとも演算結果σを読み込み、当該演算結果σをシードとした擬似ランダム関数Fσの関数値を算出し、その関数値を鍵Kとして上記記憶部に格納する鍵演算部と、
    を有することを特徴とする第1装置。
  8. 第1装置と鍵を共有する第2装置であって、
    整数x1, x2, y1, y2を第1装置の秘密鍵とした場合における、有限群Gの元g1, g2∈Gと当該有限群G上での演算結果z=g1x1・g2x2∈G,w=g1y1・g2y2∈Gとを第1装置の公開鍵として格納する記憶部と、
    ランダムな整数rを選択し、当該整数rを上記記憶部に格納する整数選択部と、
    上記記憶部から公開鍵g1と整数rとを読み込み、有限群G上での演算C1=g1r∈Gを行い、当該演算結果C1を上記記憶部に格納する第1暗号化部と、
    上記記憶部から公開鍵g2と整数rとを読み込み、有限群G上での演算C2=g2r∈Gを行い、当該演算結果C2を上記記憶部に格納する第2暗号化部と、
    上記記憶部から少なくとも演算結果C1, C2の一方を含む情報をH関数入力値として読み込み、当該H関数入力値によって定まる値に対し、値域を整数とする目的衝突困難なハッシュ関数Hを作用させ、その演算結果dを上記記憶部に格納する関数演算部と、
    上記記憶部から少なくとも公開鍵z, wと整数rと演算結果dとを読み込み、有限群G上での演算σ=zr・wr・d∈Gを行い、当該演算結果σを上記記憶部に格納するシード演算部と、
    上記記憶部から少なくとも演算結果σを読み込み、当該演算結果σをシードとした擬似ランダム関数Fσの関数値を算出し、その関数値を鍵Kとして上記記憶部に格納する鍵演算部と、
    演算結果C1, C2を第1装置に送信する送信部と、
    を有することを特徴とする第2装置。
  9. 第2装置と鍵を共有する第1装置であって、
    整数x1, x2, y1, y2を第1装置の秘密鍵として格納し、有限群Gの元g1, g2∈Gと当該有限群G上での演算結果z=g1x1・g2x2∈G,w=g1y1・g2y2∈Gとを公開鍵として格納し、第2装置から送信された演算結果C1, C2を格納する記憶部と、
    上記記憶部から少なくとも演算結果C1, C2の一方を含む情報をH関数入力値として読み込み、当該H関数入力値によって定まる値に対し、上記ハッシュ関数Hを作用させ、その演算結果dを上記記憶部に格納する関数演算部と、
    上記記憶部から少なくとも演算結果C1, C2, dと秘密鍵x1, x2, y1, y2とを読み込み、有限群G上での演算σ1=C1(x1+d・y1)・C2(x2+d・y2)∈Gを行い、当該演算結果σ1を上記記憶部に格納する第1シード演算部と、
    上記記憶部から少なくとも演算結果C1, C2, dと秘密鍵x1, x2, y1, y2とを読み込み、有限群G上での演算σ2=C1(d・x1+y1)・C2(d・x2+y2)∈Gを行い、当該演算結果σ2を上記記憶部に格納する第2シード演算部と、
    上記記憶部から少なくとも演算結果σ1, σ2を読み込み、当該演算結果σ1をシードとした擬似ランダム関数Fσ1の関数値と、当該演算結果σ2をシードとした擬似ランダム関数Fσ2の関数値との排他的論理和演算を行い、その演算結果を鍵Kとして上記記憶部に格納する鍵演算部と、
    を有することを特徴とする第1装置。
  10. 第1装置と鍵を共有する第2装置であって、
    整数x1, x2, y1, y2を第1装置の秘密鍵とした場合における、有限群Gの元g1, g2∈Gと当該有限群G上での演算結果z=g1x1・g2x2∈G,w=g1y1・g2y2∈Gとを第1装置の公開鍵として格納する記憶部と、
    ランダムな整数rを選択し、当該整数rを上記記憶部に格納する整数選択部と、
    上記記憶部から公開鍵g1と整数rとを読み込み、有限群G上での演算C1=g1r∈Gを行い、当該演算結果C1を上記記憶部に格納する第1暗号化部と、
    上記記憶部から公開鍵g2と整数rとを読み込み、有限群G上での演算C2=g2r∈Gを行い、当該演算結果C2を上記記憶部に格納する第2暗号化部と、
    上記記憶部から少なくとも演算結果C1, C2の一方を含む情報をH関数入力値として読み込み、当該H関数入力値によって定まる値に対し、上記ハッシュ関数Hを作用させ、その演算結果dを上記記憶部に格納する関数演算部と、
    上記記憶部から少なくとも公開鍵z, wと整数rと演算結果dとを読み込み、有限群G上での演算σ1=zr・wr・d∈Gを行い、当該演算結果σ1を上記記憶部に格納する第1シード演算部と、
    上記記憶部から少なくとも公開鍵z, wと整数rと演算結果dとを読み込み、有限群G上での演算σ2=zr・d・wr∈Gを行い、当該演算結果σ2を上記記憶部に格納する第2シード演算部と、
    上記記憶部から少なくとも演算結果σ1, σ2を読み込み、当該演算結果σ1をシードとした擬似ランダム関数Fσ1の関数値と、当該演算結果σ2をシードとした擬似ランダム関数Fσ2の関数値との排他的論理和演算を行い、その演算結果を鍵Kとして上記記憶部に格納する鍵演算部と、
    演算結果C1, C2を第1装置に送信する送信部と、
    を有することを特徴とする第2装置。
  11. 請求項7又は9の第1装置としてコンピュータを機能させるためのプログラム。
  12. 請求項8又は10の第2装置としてコンピュータを機能させるためのプログラム。
JP2007306737A 2007-11-28 2007-11-28 鍵共有方法、第1装置、第2装置、及びそれらのプログラム Active JP5038868B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007306737A JP5038868B2 (ja) 2007-11-28 2007-11-28 鍵共有方法、第1装置、第2装置、及びそれらのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007306737A JP5038868B2 (ja) 2007-11-28 2007-11-28 鍵共有方法、第1装置、第2装置、及びそれらのプログラム

Publications (2)

Publication Number Publication Date
JP2009130871A JP2009130871A (ja) 2009-06-11
JP5038868B2 true JP5038868B2 (ja) 2012-10-03

Family

ID=40821308

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007306737A Active JP5038868B2 (ja) 2007-11-28 2007-11-28 鍵共有方法、第1装置、第2装置、及びそれらのプログラム

Country Status (1)

Country Link
JP (1) JP5038868B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4922139B2 (ja) * 2007-11-28 2012-04-25 日本電信電話株式会社 鍵共有方法、第1装置、第2装置、及び、それらのプログラム
JP5414558B2 (ja) * 2010-01-29 2014-02-12 Kddi株式会社 鍵交換システム、鍵交換方法及び鍵交換プログラム

Also Published As

Publication number Publication date
JP2009130871A (ja) 2009-06-11

Similar Documents

Publication Publication Date Title
EP1993086B1 (en) Elliptical curve encryption parameter generation device, elliptical curve encryption calculation device, elliptical curve encryption parameter generation program, and elliptical curve encryption calculation program
CN103023637B (zh) 一种云存储中可撤销的关键字搜索公钥加密及搜索方法
CN100583755C (zh) 使用同源来设计密码系统
US7844051B2 (en) Trapdoor one-way functions on elliptic curves and their application to shorter signatures and asymmetric encryption
JP4137385B2 (ja) 公開鍵および秘密鍵による暗号化方法
US6038581A (en) Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed
US20140294177A1 (en) Identity based public key cryptosystem
US7912216B2 (en) Elliptic curve cryptosystem optimization using two phase key generation
US20130114815A1 (en) Secret sharing system, sharing apparatus, share management apparatus, acquisition apparatus, secret sharing method, program and recording medium
JP2010277085A (ja) Rsaアルゴリズムにおける素数生成の保護
Sánchez et al. NEON implementation of an attribute-based encryption scheme
Tentu et al. Sequential (t, n) multi secret sharing scheme for level-ordered access structure
JP4690819B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
JP2006145852A (ja) モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム
JP4922139B2 (ja) 鍵共有方法、第1装置、第2装置、及び、それらのプログラム
JP5038868B2 (ja) 鍵共有方法、第1装置、第2装置、及びそれらのプログラム
Alecci et al. Pell hyperbolas in DLP–based cryptosystems
JP4836208B2 (ja) 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置
Chuengsatiansup et al. Pairing-friendly twisted hessian curves
JP4676873B2 (ja) パラメータ生成装置、暗号鍵生成装置、それらの方法及びプログラム
JP2017223822A (ja) 暗号文処理システム、暗号文処理サーバ、及び暗号文処理方法
JP2008148033A (ja) 代理署名装置、署名者装置、署名検証装置及びそれらのプログラム
JP4692022B2 (ja) 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム
JP2005084568A (ja) セキュリティ方法、セキュリティ装置及びセキュリティプログラム
US20120140921A1 (en) Rsa-analogous xz-elliptic curve cryptography system and method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100114

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110812

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

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

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

Free format text: PAYMENT UNTIL: 20150713

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5038868

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350