(57)【特許請求の範囲】
【請求項１】
鍵交渉装置が今回の鍵交渉に用いられる楕円曲線パラメータ次数ｎの値を確定するステップと、
鍵交渉装置が前記次数ｎが２ｘ以下である場合のＸの最小の正整数値を計算し、取得されたＸの最小の正整数値に基づいてパラメータＷ値を取得するステップと、
鍵交渉装置が前記パラメータＷ値に基づいて交渉相手側と鍵交渉を行うステップとを含み、
取得されたＸの最小の正整数値に基づいてパラメータＷ値を取得することは、
鍵交渉装置がＸの最小の正整数値が奇数又は偶数であるかどうかを判断し、奇数であれば、Ｘの最小の正整数値を第一のプリセットパラメータで割って切り下げた結果を、パラメータＷ値とし、偶数であれば、Ｘの最小の正整数値を第一のプリセットパラメータで割って切り下げて第二のプリセットパラメータを引いた結果を、パラメータＷ値とすることを含み、
取得されたＸの最小の正整数値に基づいてパラメータＷ値を取得することは、
鍵交渉装置がＸの最小の正整数値が奇数又は偶数であるかどうかを判断し、奇数であれば、Ｘの最小の正整数値を設定された桁数で右へシフトした結果を、パラメータ値とし、偶数であれば、Ｘの最小の正整数値を設定された桁数で右へシフトして第三のプリセットパラメータを引いた結果を、パラメータＷ値とすることを含むことを特徴とするＳＭ２鍵交換プロトコルに基づく鍵交渉方法。
【請求項２】
前記次数ｎが２ｘ以下である場合のＸの最小の正整数値を計算することは、
鍵交渉装置が前記次数ｎの有効ビット数ｍを取得し、
鍵交渉装置が次数ｎの値が２ｍ−１の値より大きいかどうかを判断し、そうであれば、直接ｍの現在の値を前記Ｘの最小の正整数値とし、そうでなければ、設定されたステップ値1を用いてｍを逐次的に小さくし、後者より大きくなるまで１回減少するたびに、ｎの値と２ｍ−１の値を１回比較し、ｍの最後の値を前記Ｘの最小の正整数値とすることを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記Ｗ値に基づいて交渉相手側と鍵交渉を行うことは、
鍵交渉装置が交渉相手側から送信された相手側の公開鍵ＰＡと、相手側の楕円曲線点ＲＡと、相手側のユーザー情報ＺＡとを受信し、及びローカルのユーザー情報ＺＢと、ローカルの秘密鍵ｄＢと、ローカルに生成された乱数
0006014678.tif 000026
と、ローカルに生成された楕円曲線点ＲＢと、ローカルの楕円曲線点補因子パラメータｈと交渉鍵の予期長さｋｌｅｎとを取得し、
鍵交渉装置が取得されたパラメータＷ値に基づいて、それぞれＲＡの横座標ｘ１と楕円曲線点ＲＢの横座標ｘ２に基づいて、ＳＭ２鍵交換プロトコルに規定されたモードを用いて対応するパラメータ
0006014678.tif 000027
と
0006014678.tif 000028
を生成し、
鍵交渉装置がローカルの楕円曲線点補因子パラメータｈと、ローカルの秘密ｄＢと、前記パラメータ
0006014678.tif 000029
と
0006014678.tif 000030
と、相手側の公開鍵ＰＡと、相手側の楕円曲線点ＲＡと、ローカルに生成された乱数
0006014678.tif 000031
とに基づいて、ＳＭ２鍵交換プロトコルに規定されたモードを用いて楕円曲線点Ｖを生成し、その座標値が
0006014678.tif 000032
であり、
楕円曲線点Ｖの横座標
0006014678.tif 000033
と縦座標
0006014678.tif 000034
と、相手側のユーザー情報ＺＡと、ローカルのユーザー情報ＺＢと、交渉鍵の予期長さｋｌｅｎとに基づいて、ＳＭ２鍵交換プロトコルに規定されたモードを用いてローカルの交渉鍵ＫＢを生成することを含むことを特徴とする請求項１または請求項２に記載の方法。
【請求項４】
ローカルの交渉鍵ＫＢを生成した後、
鍵交渉装置が交渉相手側の鍵交渉が成功すると黙認し、又は、
前記楕円曲線点の横座標
0006014678.tif 000035
と
0006014678.tif 000036
と、楕円曲線点ＲＡの横座標ｘ１と縦座標ｙ１と、楕円曲線点ＲＢの横座標ｘ２と縦座標ｙ２と、相手側のユーザー情報ＺＡと、ローカルのユーザー情報ＺＢとに基づいて、ＳＭ２鍵交換プロトコルに規定されたモードを用いて検証情報ＳＢと検証情報Ｓ２を計算し、そして検証情報ＳＢを交渉相手側に送信し、交渉相手側が検証情報ＳＢを受信して同じモードを用いて検証情報ＳＡと検証情報Ｓ１を生成するようにして、そしてＳＢがＳ１に等しいことを確認する場合に、ローカルから交渉相手側への鍵交渉が成功することを確定し、交渉相手側から送信された検証情報ＳＡを受信し、そしてＳＡがＳ２に等しいことを確認する場合に、交渉相手側からローカルへの鍵交渉が成功することを確定することを含むことを特徴とする請求項３に記載の方法。
【請求項５】
今回の鍵交渉に用いられる楕円曲線パラメータ次数ｎの値を確定し、前記次数ｎが２ｘ以下である場合のＸの最小の正整数値を計算し、取得されたＸの最小の正整数値に基づいてパラメータＷ値を取得することに用いられる第一の制御モジュールと、
前記パラメータＷ値に基づいて交渉相手側と鍵交渉を行うことに用いられる第二の制御モジュールと、を備え、
前記第一の制御モジュールは、取得されたＸの最小の正整数値に基づいてパラメータＷ値を取得する場合に、Ｘの最小の正整数値が奇数又は偶数であるかどうかを判断し、奇数であれば、Ｘの最小の正整数値を第一のプリセットパラメータで割って切り下げた結果を、パラメータＷ値とし、偶数であれば、Ｘの最小の正整数値を第一のプリセットパラメータで割って第二のプリセットパラメータを引いた結果を、パラメータＷ値とし、
前記第一の制御モジュールは、取得されたＸの最小の正整数値に基づいてパラメータ値を取得する場合に、Ｘの最小の正整数値が奇数又は偶数であるかどうかを判断し、奇数であれば、Ｘの最小の正整数値を設定された桁数で右へシフトした結果を、パラメータ値とし、偶数であれば、Ｘの最小の正整数値を設定された桁数でシフトして第三のプリセットパラメータを引いた結果を、パラメータＷ値とすることを特徴とするＳＭ２鍵交換プロトコルに基づく鍵交渉装置。
【請求項６】
前記第一の制御モジュールは、前記次数ｎが２ｘ以下である場合のＸの最小の正整数値を計算する場合に、前記次数ｎの有効ビット数ｍを取得し、次数ｎの値が２ｍ−１の値より大きいかどうかを判断し、そうであれば、直接ｍの現在の値を前記Ｘの最小の正整数値とし、そうでなければ、設定されたステップ値1を用いてｍを逐次的に小さくし、前者が後者より大きくなるまで１回減少するたびに、ｎの値と２ｍ−１の値を１回比較して、そしてｍの最後の値を前記Ｘの最小の正整数値とすることを特徴とする請求項５に記載の装置。
【請求項７】
前記第二の制御モジュールは、前記Ｗ値に基づいて交渉相手側と鍵交渉を行う場合に、
交渉相手側から送信された相手側の公開鍵ＰＡと、相手側の楕円曲線点ＲＡと、相手側のユーザー情報ＺＡとを受信し、ロカールのユーザー情報ＺＢと、ローカルの秘密鍵ｄＢと、ローカルに生成された
0006014678.tif 000037
と、ローカルに生成された楕円曲線点ＲＢと、ローカルの楕円曲線補因子パラメータｈと交渉鍵の予期長さｋｌｅｎとを取得し、
取得されたパラメータＷ値に基づいて、それぞれ楕円曲線点ＲＡの横座標ｘ１と楕円曲線点ＲＢの横座標ｘ２に基づいて、ＳＭ２鍵交換プロトコルに規定されたモードを用いて対応するパラメータ
0006014678.tif 000038
と
0006014678.tif 000039
を生成し、
ローカルの楕円曲線補因子パラメータｈと、ローカルの秘密鍵ｄＢと、前記
0006014678.tif 000040
と
0006014678.tif 000041
と、相手側の公開鍵ＰＡと、相手側の楕円曲線点ＲＡと、ローカルに生成された乱数
0006014678.tif 000042
とに基づいて、ＳＭ２鍵交換プロトコルに規定されたモードを用いて楕円曲線点Ｖを生成し、その座標値が
0006014678.tif 000043
であり、
楕円曲線点Ｖの横座標
0006014678.tif 000044
と縦座標
0006014678.tif 000045
、相手側のユーザー情報ＺＡ、ローカルのユーザー情報ＺＢ、及び交渉鍵の予期長さｋｌｅｎに基づいて、ＳＭ２鍵交換プロトコルに規定されたモードを用いてローカル交渉鍵ＫＢを生成する操作を実行し、ことを特徴とする請求項５または請求項６に記載の装置。
【請求項８】
前記第一の制御モジュールは、ローカルの交渉鍵ＫＢを生成した後、交渉相手側との鍵交渉が成功すると黙認し、又は、前記楕円曲線点の横座標
0006014678.tif 000046
と
0006014678.tif 000047
と、楕円曲線点ＲＡの横座標ｘ１と縦座標ｙ１と、楕円曲線点ＲＢの横座標ｘ２と縦座標ｙ２と、相手側のユーザー情報ＺＡと、ローカルのユーザー情報ＺＢとに基づいて、ＳＭ２鍵交換プロトコルに規定されたモードを用いて検証情報ＳＢと検証情報Ｓ２とを計算し、そして検証情報ＳＢを交渉相手側に送信し、交渉相手側が検証情報ＳＢを受信して、同じモードを用いて検証情報ＳＡと検証情報Ｓ１を生成し、そしてＳＢがＳ１に等しいことを確認する場合に、ローカルから交渉相手側への鍵交渉が成功することを確定し、交渉相手側から送信された検証情報ＳＡを受信し、そしてＳＡがＳ２に等しいことを確認した場合に、交渉相手側からローカルへの鍵交渉が成功することを確定することを特徴とする請求項６に記載の装置。
【請求項９】
今回の鍵交渉に用いられる楕円曲線パラメータ次数ｎの値を確定することに用いられる確定ユニットと、
前記次数ｎが２ｘ以下である場合のＸの最小の正整数値を計算し、そして取得されたＸの最小の正整数値に基づいてパラメータＷ値を取得することに用いられる計算ユニットとを備え、
前記計算ユニットは、取得されたＸの最小の正整数値に基づいてパラメータＷ値を取得する場合に、Ｘの最小の正整数値が奇数又は偶数であるかどうかを判断し、奇数であれば、Ｘの最小の正整数値を第一のプリセットパラメータで割って切り下げた結果を、パラメータＷ値とし、偶数であれば、Ｘの最小の正整数値を第一のプリセットで割って切り下げて第二のプリセットパラメータを引いた結果を、パラメータＷ値とし、
前記計算ユニットは、取得されたＸの最小の正整数値に基づいてパラメータＷ値を取得する場合に、Ｘの最小の正整数値が奇数又は偶数であるかどうかを判断し、奇数であれば、Ｘの最小の正整数値を設定された桁数で右へシフトした結果を、パラメータＷ値とし、偶数であれば、Ｘの最小の正整数値を設定された桁数で右へシフトして第三のプリセットパラメータを引いた結果を、パラメタＷ値とすることを特徴とするパラメータ生成装置。
【請求項１０】
前記計算ユニットは、前記次数ｎが２ｘ以下である場合のＸの最小の正整数値を計算し、前記次数ｎの有効ビット数ｍを取得し、次数ｎの値が２ｍ−１の値より大きいかどうかを判断し、そうであれば、直接ｍの現在の値を前記Ｘの最小の正整数値とし、そうでなければ、設定されたステップ値1を用いてｍを逐次的に小さくし、前者が後者より大きくなるまで１回減少するたびに、ｎの値と２ｍ−１の値を１回比較し、ｍの最後の値を前記Ｘの最小の正整数値とすることを含むことを特徴とする請求項９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、情報技術分野に関し、特に、ＳＭ２鍵交換プロトコルに基づく鍵交渉方法及び装置に関する。
【背景技術】
【０００２】  本出願は、２０１１年１１月３０日に中国特許庁に提出された特許出願番号２０１１１０３９０５６４．７、発明の名称「ＳＭ２鍵交換プロトコルに基づく鍵交渉方法及び装置」の優先権の利益を享受し、その全ての内容が本出願において援用される。【０００３】２０１０年１２月に中国・国家暗号管理局がＳＭ２、ＳＭ３暗号アルゴリズムを開示したことは、ＳＭ２、ＳＭ３暗号アルゴリズムが商業化段階に入ることを示している。ＳＭ２鍵交換プロトコルは、ＳＭ２アルゴリズムの一つの構成部分として、鍵管理と鍵交渉機能分野に良く応用されている。ＳＭ２鍵交換プロトコルの工学的実現過程に、Ｗパラメータは、鍵交換プロトコル内の一つの重要なパラメータとして、そのパラメータ値の生成演算効率が全体鍵交換プロトコル実現効率の決定的な要因になる。【０００４】ＳＭ２鍵交換プロトコルの規定に基づいて、既存の鍵交渉プロセスは、次の通りである。【０００５】ユーザーＡが鍵交渉開始側であり、ユーザーＢが鍵交渉応答側であると仮定すると、ユーザーＡとユーザーＢが交渉して取得した鍵データの長さは、ｋｌｅｎビットであり、ユーザーＡとユーザーＢの両方が同じ楕円曲線方程式を使用する。その中、当該楕円曲線方程式のタイプについて、素体方程式ｙ２＝ｘ３＋ａｘ＋ｂを選択してよく、二次元の拡張フィールド方程式ｙ２＋ｘｙ＝ｘ３＋ａｘ２＋ｂを選択してもよい。【０００６】ＳＭ２鍵交換プロトコルの規定によって使用される鍵導出関数は、ＫＤＦ（Ｚ，ｋｌｅｎ）に記され、一つの鍵ビット列から鍵データを導出することに用いられ、その中、Ｚが入力された鍵ビット列であり、整数ｋｌｅｎが取得される鍵データのビット長を表し、当該値が（２３２−１）Ｖより小さく要求され、長さｋｌｅｎの鍵データビット列をＫに記する。鍵データ生成過程に、鍵導出関数は、暗号ハッシュ関数（例えば、ＳＭ３暗号ハッシュアルゴリズム）を呼び出す必要があり、通常、暗号ハッシュ関数をＨｖ（）に記し、暗号ハッシュ関数の出力が長さＶビットのハッシュ値である。【０００７】以下、鍵導出関数演算ステップを次のように説明する。【０００８】（１）、３２ビットで構成されたカウンターをｃｔ＝０ｘ０００００００１に初期化する。【０００９】
0006014678.tif 000002
ａ、Ｈａｉ＝Ｈｖ（Ｚ‖ｃｔ）を計算する；‖がカスケード演算である；
ｂ、ｃｔ＋＋；
0006014678.tif 000003
【００１０】
0006014678.tif 000004
タとなる。【００１１】  取得された鍵データに基づいて、ユーザーＡとユーザーＢは、同じ鍵を取得するために、鍵交渉を行う必要がある。具体的な演算ステップは、次の通りである。
0006014678.tif 000005
【００１２】  ユーザーＡ：
Ａ１：乱数発生器を用いて乱数ｒＡ∈［１，ｎ−１］を生成する；
Ａ２：楕円曲線点ＲＡ＝［ｒＡ］Ｇ＝（ｘ１，ｙ１）を計算し、（ｘ２，ｙ２）が点等ＲＡの座標値であり、Ｇが選択された楕円曲線パラメータである。
Ａ３：ＲＡをユーザーＢに送信する；【００１３】  ユーザーＢ：
Ｂ１：乱数発生器を用いて乱数ｒＢ∈［１，ｎ−１］を生成する；【００１４】Ｂ２：楕円曲線点ＲＢ＝［ｒＢ］Ｇ＝（ｘ２，ｙ２）を計算し、（ｘ２，ｙ２）がＲＢの座標値であり、Ｇが選択された楕円曲線パラメータである。【００１５】Ｂ３：ＲＢからフィールド要素ｘ２を取り出し、フィールド要素ｘ２が二次元の拡張フィールドデータであれば、そのデータタイプを整数に変換し、フィールド要素ｘ２が素体データであれば、変換しなく、直接後の操作を行うことができる；次に、ユー
0006014678.tif 000006
【００１６】
0006014678.tif 000007
ータであり、ｄＢがローカルユーザーＢより保存された秘密鍵であり、ｒＢがローカルユーザーＢに発生された乱数である。【００１７】Ｂ５：ＲＡが楕円曲線方程式（素体モード又は二次元の拡張フィールドモードを用いると、予めユーザーＡと約束することができ、両方が同じ楕円曲線方程式を用いる）を満たすかどうかを確認し、満たさなければ、今回の鍵交渉が失敗したことを確定し、満たせば、ＲＡからフィールド要素ｘ１を取り出し、フィールド要素ｘ１が二次元の拡張フィールドデータであれば、まずそのデータライプを整数に変換し、フィールド要素ｘ１が素体データであれば、変換しなく、直接後の操作を行うことができ、ユ
0006014678.tif 000008
【００１８】
0006014678.tif 000009
された楕円曲線パラメータであり、ＰＡがユーザーＡの公開鍵であり、Ｖが無限遠点（例えば、ｘＶ＝０，ｙＶ＝０）であるかどうかを判断し、そうであれば、ユーザーＢの鍵交渉が失敗したことを確認し、そうでなければ、フィールド要素ｘＶ、ｙＶのデータタイプをビット列に変換する；【００１９】  Ｂ７：ＫＢ＝ＫＤＦ（ｘＶ‖ｙＶ‖ＺＡ‖ＺＢ，ｋｌｅｎ）を計算する；ＫＢは、ユーザーＢが鍵交渉により取得された鍵データであり、この時に、ユーザーＢの鍵交渉が成功すると黙認できる。
任意選択的に、Ｂ７を実行した後、ユーザーＢは、さらにＢ８を実行することができる。【００２０】Ｂ８：ＲＡの座標ｘ１、ｙ１とＲＢの座標ｘ２、ｙ２のデータタイプをいずれもビット列に変換し、ＳＢ＝Ｈａｓｈ（０ｘ０２‖ｙＶ‖Ｈａｓｈ（ｘＶ‖ＺＡ‖ＺＢ‖ｘ１‖ｙ１‖ｘ２‖ｙ２））を計算し、Ｈａｓｈ（）が暗号ハッシュ関数Ｈｖ（）として見ることができ、ＳＢが演算により取得されたハッシュ値として見ることができる。【００２１】Ｂ９：ＲＢをユーザーＡに送信し、Ｂ８を実行すれば、さらにＳＢをユーザーＡに送信する必要がある；【００２２】  ユーザーＡ
Ａ４：ＲＡからフィールド要素ｘ１を取り出し、フィールド要素ｘ１が二次元の拡張フィールドデータであれば、まずそのデータタイプを整数に変換し、フィールド要素ｘ１が素体データであれば、変換しなく、直接後の操作を行うことができ、中間パラ
0006014678.tif 000010
【００２３】
0006014678.tif 000011
ーＡより保存された乱数である。【００２４】Ａ６：ＲＢが楕円曲線方程式（ユーザーＢと約束する）を満たすかどうかを確認し、満たさなければ、今回の鍵交渉が失敗したことを確定し、満たせば、ＲＢからフィールド要素ｘ２を取り出し、フィールド要素ｘ２が二次元の拡張フィールドデータであれば、まずそのデータタイプを整数に変換し、フィールド要素ｘ２が素体データであ
0006014678.tif 000012
【００２５】
0006014678.tif 000013
ば、ｘＵ＝０，ｙＵ＝０）であれば、Ａ交渉が失敗し、そうでなければ、フィールド要素ｘＵ、ｙＵのデータタイプをビット列に変換する；【００２６】  Ａ８：ＫＡ＝ＫＤＦ（ｘＵ‖ｙＵ‖ＺＡ‖ＺＢ，ｋｌｅｎ）を計算し、ＫＡは、ユーザーＡが鍵交渉により取得した鍵データであり、この時に、ユーザーＡの鍵交渉が成功すると黙認できる；
任意選択的に、Ａ８を実行した後、ユーザーＢから送信されたＳＢを受信した場合、ユーザーＡは、さらにＡ９とＡ１０を実行することができる；【００２７】Ａ９：ＲＡの座標ｘ１、ｙ１とＲＢの座標ｘ２、ｙ２のデータタイプをビット列に変換し、Ｓ１＝Ｈａｓｈ（０ｘ０２‖ｙＵ‖Ｈａｓｈ（ｘＵ‖ＺＡ‖ＺＢ‖ｘ１‖ｙ１‖ｘ２‖ｙ２））を計算し、Ｈａｓｈ（）が暗号ハッシュ関数Ｈｖ（）として見ることができ、Ｓ１が演算により取得されたハッシュ値として見ることができ、そしてＳ１＝ＳＢが成立するかどうかを確認し、成立すれば、ユーザーＢからユーザーＡへの鍵確認が成功することを確定し、成立しなければ、ユーザーＢからユーザーＡへの鍵確認が失敗したことを確定する；【００２８】  Ａ１０：ＳＡ＝Ｈａｓｈ（０ｘ０３‖ｙＵ‖Ｈａｓｈ（ｘＵ‖ＺＡ‖ＺＢ‖ｘ１‖ｙ１‖ｘ２‖ｙ２））を計算し、そしてＳＡをユーザーＢに送信する。
ユーザーＢ：（ユーザーＡから送信されたＳＡを受信した場合、ユーザーＢがステップＢ１０とＢ１１を実行し続けることができる）【００２９】Ｂ１０：Ｓ２＝Ｈａｓｈ（０ｘ０３‖ｙＶ‖Ｈａｓｈ（ｘＶ‖ＺＡ‖ＺＢ‖ｘ１‖ｙ１‖ｘ２‖ｙ２））を計算し、そしてＳ２＝ＳＡが成立するかどうかを確認し、成立すれば、ユーザーＡからユーザーＢへの鍵確認が成功することを確定し、成立しなければ、ユーザーＡからユーザーＢへの鍵確認が失敗したことを確定する。【００３０】
上記の過程は、ＳＭ２鍵交換プロトコルに記載された鍵交渉過程であり、これにより分か
0006014678.tif 000014
り、その中、ｎが楕円曲線パラメータであり、次数ｎと呼ばれ、次数ｎが通常１６０桁以上の大整数であり、次数ｎに基づいて直接ｌｏｇ2（ｎ）の対数値を求め、その後切り上げ演算を行うと、工学的実現においてより複雑であり、より多くの時間が掛かり、それによって直接鍵交渉プロセスの実現効率を直接低下させ、鍵交渉プロセスの実現複雑さを向上させる。
【発明の概要】
【発明が解決しようとする課題】
【００３１】本発明の実施形態は、鍵交渉プロセスの実現複雑さを低下させ、鍵交渉プロセスの実現効率を向上させるように、ＳＭ２鍵交換プロトコルに基づく鍵交渉方法及び装置を提供する。【００３２】本発明の実施形態に係る具体的な技術的解決策は、次の通りである。【００３３】  ＳＭ２鍵交換プロトコルに基づく鍵交渉方法は、
今回の鍵交渉に用いられる楕円曲線パラメータ次数ｎの値を確定するステップと、
前記次数ｎが２ｘ以下である場合のＸの最小の正整数値を計算し、そして取得されたＸの最小の正整数値に基づいてパラメータＷ値を取得するステップと、
前記Ｗ値に基づいて交渉相手側と鍵交渉を行うステップとを含む。【００３４】  ＳＭ２鍵交換プロトコルに基づく鍵交渉装置は、
今回の鍵交渉に用いられる楕円曲線パラメータ次数ｎの値を確定し、そして前記次数ｎが２ｘ以下である場合のＸの最小の正整数値を計算し、そして取得されたＸの最小の正整数値に基づいてパラメータＷ値を取得することに用いられる第一の制御モジュールと、
前記Ｗ値に基づいて交渉相手側と鍵交渉を行うことに用いられる第二の制御モジュールと、を備える。【００３５】  パラメータ生成装置は、
今回の鍵交渉に用いられる楕円曲線パラメータ次数ｎの値を確定することに用いられる確定ユニットと、
前記次数ｎが２ｘ以下である場合のＸの最小の正整数値を計算し、そして取得されたＸの最小の正整数値に基づいてパラメータＷ値を取得することに用いられる計算ユニットとを備える。【００３６】
本発明の実施形態において、交渉の両方は、いずれも不等式ｎ≦２xを成立させるＸ値のうちの最小の正整数値に基づいて、パラメータＷ値を計算し、そして当該パラメータＷ値に基づいて交渉相手側とＳＭ２鍵交換プロトコルに基づく鍵交渉を行う。ｌｏｇ２（ｎ）対数値を計算して切り上げるモードを用いてパラメータＷ値を計算する方法と比較すると、計算量を効果的に減少させ、且つアルゴリズムの実現複雑さを低下させて、それによってＳＭ２鍵交換プロトコルに基づく鍵交渉プロセスの実現効率を大幅に向上させて、さらにＳＭ２鍵交換プロトコルの工学的実現を最適化する。
【図面の簡単な説明】
【００３７】
【図１Ａ】本発明の実施形態における鍵交渉装置の機能構造を示す図である。
【図１Ｂ】本発明の実施形態におけるパラメータＷ値生成装置の機能構造を示す図である。
【図２】本発明の実施形態における鍵交渉を行うフローチャートである。
【図３】本発明の実施形態におけるパラメータＷ値を生成する第一の方法のフローチャートである。
【図４】本発明の実施形態におけるパラメータＷ値を生成する第二の方法のフローチャートである。
【発明を実施するための形態】
【００３８】ＳＭ２鍵交換プロトコルに基づく鍵交渉プロセスに、鍵交渉プロセスの実行複雑さを低下させ、鍵交渉プロセスの実現効率を向上させるために、本発明の実施形態におい
0006014678.tif 000015
満たすＸの最小の正整数値を求め、そして取得されたＸの最小の正整数値に基づいて
0006014678.tif 000016
算されたＷ値に基づいて相手側と鍵交渉を行う。
【００３９】以下、依然としてユーザーＡとユーザーＢを例として、図面を参照して本発明の好ましい実施形態を詳しく説明する。
【００４０】  図１Ａに示すように、本発明の実施形態において、ＳＭ２鍵交換プロトコルに基づく鍵交渉の両方のうちのいずれかの一方（ユーザーＡであってよく、ユーザーＢであってもよい）より使用される鍵交渉装置は、第一の制御モジュール１０と第二の制御モジュール１１を備える。
【００４１】  ここで、第一の制御モジュール１０が、今回の鍵交渉に用いられる楕円曲線パラメータ次数ｎの値を確定し、そして次数ｎが２ｘ以下である場合のＸの最小の正整数値を計算し、そして取得されたＸの最小の正整数値に基づいてパラメータＷ値を取得することに用いられ、
第二の制御モジュール１１が、前記パラメータＷ値に基づいて交渉相手側と鍵交渉を行うことに用いられる。
【００４２】  図１Ａに示すように、第二の制御モジュール１１の内部は、若干の、ソフトウェアで実現される機能ユニットとハードウェアで実現される機能ユニットに細分することができ、これらの機能ユニットの作用は、後の実施形態において詳しく説明され、他方では、図１Ａに示す第二の制御モジュール１１の内部の機能ユニットの分割モードは、一つの例だけであるが、実際の応用中に、具体的な応用環境に応じて別に計画されることができ、ここで繰り返して説明しない。
【００４３】  他方では、実際の応用中に、第一の制御モジュール１０は、鍵交渉装置に設置されたロジックモジュールであってよく、独立動作機能を有するサブデバイスであってもよい。図１Ｂに示すように、本発明の実施形態において、第一の制御モジュール１０は、確定ユニット１００と計算ユニット１０１を含む。
【００４４】  ここで、確定ユニットは、今回の鍵交渉に用いられる楕円曲線パラメータ次数ｎの値を確定することに用いられ、
計算ユニットは、次数ｎが２ｘ以下である場合のＸの最小の正整数値を計算し、そして取得されたＸの最小の正整数値に基づいてパラメータＷ値を取得することに用いられる。
【００４５】  上記の技術的解決策に基づいて、図２に示すように、本発明の実施形態において、ＳＭ２鍵交渉両方のうちのいずれかの一方（ユーザーＡであってよく、ユーザーＢであってもよい）が実行する具体的なプロセスは、次の通りである。
【００４６】  ステップ２００、今回の鍵交渉に用いられる楕円曲線パラメータ次数ｎの値を確定する。
【００４７】  一般的に次数ｎの値が予め設定されるので、ユーザーＡとユーザーＢは、ＳＭ２鍵交渉プロセスの開始段階に、用いられる楕円曲線方程式を約束し、相手側へ自分で用いられた公開鍵、即ちＰＡ、ＰＢを送信する。
【００４８】  ステップ２１０：確定された次数ｎが２ｘ以下場合のＸの最小の正整数値を計算し
0006014678.tif 000017
の最小の正整数値に基づいてパラメータＷ値を取得する。
【００４９】
0006014678.tif 000018
実行される具体的な操作は、次の通りである。図３と図４に示すように、鍵交渉装置は、まず次数ｎの有効ビット数ｍを確定し、即ち上位の１つ目の非０ビットから次数ｎに含まれるビット総数を計算し、次に次数ｎの値を２ｍ−１と比較し、即ちｎ＞２ｍ−１であるかどかを判断し、そうであれば、直接ｍの現在の値をＸの最小の正整数値とし、そうでなければ、設定されたステップ値（例えば、ステップ値が１である）を用いてｍを逐次的に小さくし、当該不等式が成立するまで１回減少するたびに、ｎ＞２ｍ−１であるかどかを１回判断し、そしてｍが小さくなった後の最後の値をＸの最小の正整数値とする。
【００５０】  本実施形態において、Ｘの最小の正整数値を取得した後、Ｘの最小の正整数値に基づいてパラメータＷ値を計算する場合、以下の様々な方式を用いることができる。
【００５１】  例えば、図３に示すように、まず最後取得されたｍのパリティ（即ちＸの最小の正整数値のパリティ）を判断することができ、ｍが奇数であれば、ｍを第一のプリセッ
0006014678.tif 000019
小の正整数であり、ｍが偶数であれば、ｍを第一のプリセットパラメータで割って切り下げて第二のプリセットパラメータを引いた結果を、パラメータＷ値とし、例えば
0006014678.tif 000020
ラメータであり、１が第二のプリセットパラメータである。
【００５２】  また、例えば、図４に示すように、まず最後取得されたｍのパリティ（即ちＸの最小正整数値のパリティ）を判断することができ、ｍが奇数であれば、ｍを設定された桁数で右シフトした結果を、パラメータＷ値とし、例えば、式ｗ＝ｍ＞＞１用いてパラメータＷ値を計算し、その中、≫が右シフト操作であり、１が右シフトの設定桁数であり、ｍ≫１がｍの現在の値の最低位（二次元の拡張フィールド形態）を削除し、最高位にゼロを補うことを示し、ｍが偶数であれば、ｍを設定された桁数で右へシフトして第三のプリセットパラメータを引いた結果を、パラメータＷ値とし、例えば、式ｗ＝（ｍ＞＞１）−１を用いてパラメータＷ値を計算する。
ここで、１つ目の１が右シフトの設定桁数であり、２つ目の１が第三のプリセットパラメータである。
【００５３】  ステップ２２０、取得されたパラメータＷ値に基づいて交渉相手側と鍵交渉を行う。
【００５４】
図２に示すように、ＳＭ２鍵交換プロトコルを実現する鍵交渉装置は、開始側ユーザーＡとしてよく、応答側ユーザーＢとしてもよく、その中、第一の制御モジュール１０がパラメータＷ値を計算する演算モジュールであり、鍵交渉装置が第一の制御モジュール１０によりパラメータＷ値を取得した後、相手側と鍵交渉を行うプロセスは、次の通りである。
【００５５】
ＳＭ２鍵交換プロトコルプロセスが開始した後、ユーザー開始側Ａとユーザー応答側Ｂは、それぞれが使用した鍵交渉装置内に設置された第一の制御モジュール１０によりそれぞれ対応するパラメータＷ値を取得する。
【００５６】  次に、ユーザーＡは、鍵交渉装置内の第二の制御モジュール１１により乱数と楕円曲線点を計算し、その中、第二の制御モジュール１１がハードウェアで実現されることができ、図１に示すように、ユーザーＡは、第二の制御モジュール１１内の乱数発生ユニットにより乱数ｒＡ∈［１，ｎ−１］を生成することができ、ＥＣＣ演算ユニットが生成された乱数に基づいて楕円曲線点ＲＡ＝［ｒＡ］Ｇ＝（ｘ１，ｙ１）を生成することができ、同時に、第二の制御モジュール１１がこの鍵交渉装置における鍵記憶サブモジュール内に保存された、今回の鍵交渉に用いられる秘密鍵ｄＡに対応する公開鍵ＰＡを取り出し、そして公開鍵ＰＡを、ローカルにソフトウェアで実現される通信インターフェイスを介して楕円曲線点ＲＡと公開鍵ＰＡをユーザーＢに送信する。
【００５７】  ユーザーＢより使用された鍵交渉装置ＢがユーザーＡから受信した情報は、主に相手側の公開鍵ＰＡ、相手側の楕円曲線点ＲＡ、相手側のユーザー情報ＺＡを含み、同時にローカルのユーザー情報ＺＢ、楕円曲線点補因子パラメータｈ、交渉鍵の予期長さｋｌｅｎを取得する。
【００５８】  ユーザーＢは、ローカルの第二の制御モジュール１１を用いて乱数と楕円曲線点を計算し、その中、第二の制御モジュール１１がハードウェアで実現されることができ、例えば、ユーザーＢは、第二の制御モジュール１１内の乱数発生ユニットにより乱数ｒＢ∈［１，ｎ−１］を生成することができ、次に、第二のモジュール１１内のＥＣＣ演算ユニットにより、生成された乱数に基づいて楕円曲線点ＲＢ＝［ｒＢ］Ｇ＝（ｘ２，ｙ２）を生成することができ、同時に、第二の制御モジュール１１がこの鍵交渉装置における鍵記憶ユニットに保存された今回の鍵交渉に用いられた秘密鍵ｄＢに対応する公開鍵ＰＢを取り出し、そしてローカルにソフトウェアで実現される通信インターフェイスを介して楕円曲線点ＲＢと公開鍵ＰＢをユーザーＡに送信する。
【００５９】
次に、ユーザーＢは、ローカルの第二の制御モジュール１１におけるソフトウェアで実現されるデータタイプ変換ユニットを用いて、取得されたフィールド要素Ｘ1とＸ2のデータタイプを整数データタイプに変換し、その後、第二の制御ユニット１１におけるソフ
0006014678.tif 000021
することができ、その中、ｘ1が楕円曲線点ＲAの横座標であり、ｘ2が楕円曲線点ＲBの横座標であり、ここで本発明の実施形態に係る解決策を用いて生成されたパラメータＷ値を用いる。
【００６０】  次に、ユーザーＢは、鍵交渉装置により相手側の公開鍵ＰＡ、相手側の楕円曲線点
0006014678.tif 000022
し、その中秘密鍵ｄＢが第二の制御モジュール１１におけるハードウェアで実現される鍵記憶ユニットから読み出されるものであり、関連演算が主に、まず大整数モジュ
0006014678.tif 000023
ｔＢ＝（ｄＢ＋ｌ）ｍｏｄｎを計算することを含み、ユーザーＢは、上記の大整数演算ユニット
0006014678.tif 000024
【００６１】  その後、ユーザーＢは、第二の制御モジュール１１におけるハードウェアで実現されるＥＣＣ演算ユニットを用いてＲＡが楕円曲線方程式を満たすかどうかの確認を完
0006014678.tif 000025
【００６２】  ユーザーＢは、鍵交渉装置における第二の制御モジュール１１によりＲＡが楕円曲線方程式を満たすかどうかの確認結果及び楕円曲線点Ｖ＝（ｘＶ，ｙＶ）をソフトウェアで実現される部分に伝送し、ＲＡが楕円曲線方程式を満たしなければ、又は、Ｖ＝（ｘＶ，ｙＶ）が楕円曲線の無限遠点であれば、演算を終了し、そうでなければ、ユーザーＢは、第二の制御モジュール１１におけるソフトウェアで実現されるデータタイプ変換ユニットにより楕円曲線点Ｖ＝（ｘＶ，ｙＶ）における横座標ｘＶと縦座標ｙＶのデータタイプをビット列データタイプに変換し、ユーザーＢは、第二の制御モジュール１１におけるソフトウェアで実現される鍵導出ユニットによりローカルユーザーＢの交渉鍵
ＫＢ＝ＫＤＦ（ｘＶ‖ｙＶ‖ＺＡ‖ＺＢ，ｋｌｅｎ）を計算し、これまで、ユーザーＢは、鍵交渉が成功すると黙認できる。
【００６３】  当然、任意選択的に、ユーザーＢは、さらに第二の制御モジュール１１におけるソフトウェアで実現されるデータタイプ変換ユニットにより楕円曲線点ＲＡ＝（ｘ１，ｙ１）の横座標ｘ１、縦座標ｙ１と楕円曲線点ＲＢ＝（ｘ２，ｙ２）の横座標ｘ２、縦座標ｙ２のデータタイプをビット列データタイプに変換し、その後、第二の制御モジュール１１におけるソフトウェアで実現される暗号ハッシュ計算ユニットにより次のような検証情報を計算する。
ＳＢ＝Ｈａｓｈ（０ｘ０２‖ｙＶ‖Ｈａｓｈ（ｘＶ‖ＺＡ‖ＺＢ‖ｘ１‖ｙ１‖ｘ２‖ｙ２））
Ｓ２＝Ｈａｓｈ（０ｘ０３‖ｙＶ‖Ｈａｓｈ（ｘＶ‖ＺＡ‖ＺＢ‖ｘ１‖ｙ１‖ｘ２‖ｙ２））
【００６４】  ユーザーＢは、検証情報ＳＢをソフトウェアで実現される伝送インタフェースを介してユーザーＡに伝送する。
【００６５】  開始側Ａが所属する鍵交渉装置は、ユーザーＢから送信された情報を受信し、ユーザーＢの公開鍵ＰＢ、ユーザーＢの楕円曲線点ＲＢ、ユーザーＢのユーザー情報ＺＢ、及びローカルユーザー情報ＺＡ、楕円曲線点補因子パラメータｈ、交渉鍵予期長さｋｌｅｎを取得し、その後ユーザーＢと同じプロセスを用いて
ＫＡ＝ＫＤＦ（ｘＵ‖ｙＵ‖ＺＡ‖ＺＢ，ｋｌｅｎ）を計算する。
【００６６】  これまで、開始側Ａは、鍵交渉が成功すると黙認することもきる。
【００６７】  さらに、ユーザーＡがユーザーＢから送信された検証情報ＳＢを受信した場合でも、同じプロセスを用いて検証情報を計算する。
Ｓ１＝Ｈａｓｈ（０ｘ０２‖ｙＵ‖Ｈａｓｈ（ｘＵ‖ＺＡ‖ＺＢ‖ｘ１‖ｙ１‖ｘ２‖ｙ２））
ＳＡ＝Ｈａｓｈ（０ｘ０３‖ｙＵ‖Ｈａｓｈ（ｘＵ‖ＺＡ‖ＺＢ‖ｘ１‖ｙ１‖ｘ２‖ｙ２））
【００６８】  その後、Ｓ１がＳＢに等しいかどうかをチェックし、等しい場合、鍵交渉が成功することを確認し、等しくない場合、鍵交渉が失敗したことを確認し、そしてＳＡをユーザーＢに送信する。
【００６９】  ユーザーＢは、ＳＡがＳ２に等しいかどかを確認し、等しい場合、鍵交渉が成功し、等しくない場合、鍵交渉が失敗したことを確認する。
【００７０】  これまで、ＳＭ２鍵交換プロトコルに制定されたＳＭ２鍵交渉プロセスは、完全に終了する。
【００７１】
上述したように、本発明の実施形態において、交渉両方は、いずれも不等式ｎ≦２xを成立させるＸ値のうちの最小の正整数値に基づいて、パラメータＷ値を計算し、そして当該パラメータＷ値に基づいて交渉相手側とＳＭ２鍵交換プロトコルに基づく鍵交渉を行う。その中、パラメータＷ値の計算過程は、実際の交渉プロセスが開始する前又は後に実行されることができ、同じ効果を得ることができる。ｌｏｇ２（ｎ）対数値を計算して切り上げるモードを用いてパラメータＷ値を計算する方法と比較すると、計算量を効果的に減少し、且つアルゴリズムの実現複雑さを低下させ、それによってＳＭ２鍵交換プロトコルに基づく鍵交渉プロセスの実現効率を大幅に向上させて、さらにＳＭ２鍵交換プロトコルの工学的実現を最適化する。
【００７２】  当業者は、本発明の実施形態は、方法、システム、又はコンピュータプログラム製品として提供されることができる。そのため、本発明は、完全なハードウェアの実施形態、完全なソフトウェアの実施形態、又はソフトウェアとハードウェアを組み合わせた実施形態の形態を用いることができると理解すべきである。且つ、本発明は、コンピュータ使用可能プログラムコードが含まれる１つ以上のコンピュータ使用可能な記憶媒体（ディスクメモリ、ＣＤ−ＲＯＭ、光メモリなどを含むがこれらに限られない）で実施されるコンピュータプログラム製品の形態を採用することができる。
【００７３】  本発明は、本発明の実施形態による方法、装置（システム）とコンピュータプログラム製品のフローチャート及び／又はブロック図を参照して説明されるものである。コンピュータプログラム命令によりフローチャート及び／又はブロック図中の各プロセス及び／又はブロック、及びフローチャート及び／又はブロック中のプロセス及び／ブロックの組み合わせを実現することができると理解すべきである。これらのコンピュータプログラム命令を、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ又は他のプログラム可能なデータ処理装置のプロセッサに提供して１つのマシンを生み出すことができ、コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサが実行する命令により、フローチャートの１つ以上のプロセス及び／又はブロック図の１つ以上のブロック中に指定された機能を実現するための装置を生じることができる。
これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理装置が特定の方式で動作するようにガイドできるコンピュータ読み取り可能なメモリに記憶されることができ、それによって当該コンピュータ読み取り可能なメモリに記憶された命令により、命令装置が含まれる製造品を生じる。当該命令装置は、フローチャートの１つ以上のプロセス及び／ブロック図の１つ以上のブロック中に指定された機能を実現する。
【００７４】  これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理装置にロードされることができ、コンピュータ又はプログラム可能なデータ処理装置で一連の操作ステップを実行して、コンピュータで実現される処理を生み、それによってコンピュータ又はプログラム可能なデータ処理装置で実行された命令により、フローチャートの１つ以上のプロセス及び／ブロック図の１つ以上のブロック中に指定された機能を実現するためのステップを提供する。
【００７５】  本発明の好ましい実施形態を説明したにもかかわらず、当業者は、一旦基本的な創造性概念を知ると、これらの実施形態に対して別の変更と修正を行うことができる。したがって、添付した特許請求は、好ましい実施形態及び本発明の範囲に含まれるすべての変更と修正を含むと説明することを意図する。
【００７６】  明らかに、当業者は、本発明の実施形態の精神および範囲から逸脱することなく、本発明の実施形態に対して様々な変更及び修正を行うことができる。このようにして、本発明の実施形態のこれらの変更及び修正が本発明の特許請求及びその同等技術の範囲に含まれると、本発明もこれらの変更及び修正を含むことを意図する。
【図１Ａ】
0006014678.tif 000048
【図１Ｂ】
0006014678.tif 000049
【図２】
0006014678.tif 000050
【図３】
0006014678.tif 000051
【図４】
0006014678.tif 000052