(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6014678
(24)【登録日】2016年9月30日
(45)【発行日】2016年10月25日
(54)【発明の名称】SM2鍵交換プロトコルに基づく鍵交渉方法及び装置
(51)【国際特許分類】
H04L 9/08 20060101AFI20161011BHJP
【FI】
H04L9/00 601D
H04L9/00 601E
【請求項の数】10
【全頁数】16
(21)【出願番号】特願2014-543759(P2014-543759)
(86)(22)【出願日】2012年11月26日
(65)【公表番号】特表2015-500582(P2015-500582A)
(43)【公表日】2015年1月5日
(86)【国際出願番号】CN2012085233
(87)【国際公開番号】WO2013078970
(87)【国際公開日】20130606
【審査請求日】2014年8月12日
(31)【優先権主張番号】201110390564.7
(32)【優先日】2011年11月30日
(33)【優先権主張国】CN
【前置審査】
(73)【特許権者】
【識別番号】505164405
【氏名又は名称】西安西▲電▼捷通▲無▼綫▲網▼絡通信股▲分▼有限公司
【氏名又は名称原語表記】CHINA IWNCOMM CO., LTD.
(74)【代理人】
【識別番号】110001081
【氏名又は名称】特許業務法人クシブチ国際特許事務所
(72)【発明者】
【氏名】李 志勇
(72)【発明者】
【氏名】▲顔▼ 湘
【審査官】
青木 重徳
(56)【参考文献】
【文献】
Public Key Cryptographic Algorithm SM2 Based on Elliptic Curves Part 3: Key Exchange Protocol,中国,2010年12月,pp.1−15,URL,http://www.oscca.gov.cn/News/201012/News_1198.htm
【文献】
S. Shen, et al.,SM2 Digital Signature Algorithm,Internet Engineering Task Force Internet-Draft,[オンライン],2011年10月24日,draft-shen-sm2-ecdsa-00,p.1-16,[平成28年9月2日検索]、インターネット,URL,<https://tools.ietf.org/pdf/draft-shen-sm2-ecdsa-00.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
(57)【特許請求の範囲】
【請求項1】
鍵交渉装置が今回の鍵交渉に用いられる楕円曲線パラメータ次数nの値を確定するステップと、
鍵交渉装置が前記次数nが2x以下である場合のXの最小の正整数値を計算し、取得されたXの最小の正整数値に基づいてパラメータW値を取得するステップと、
鍵交渉装置が前記パラメータW値に基づいて交渉相手側と鍵交渉を行うステップとを含み、
取得されたXの最小の正整数値に基づいてパラメータW値を取得することは、
鍵交渉装置がXの最小の正整数値が奇数又は偶数であるかどうかを判断し、奇数であれば、Xの最小の正整数値を第一のプリセットパラメータで割って切り下げた結果を、パラメータW値とし、偶数であれば、Xの最小の正整数値を第一のプリセットパラメータで割って切り下げて第二のプリセットパラメータを引いた結果を、パラメータW値とすることを含み、
取得されたXの最小の正整数値に基づいてパラメータW値を取得することは、
鍵交渉装置がXの最小の正整数値が奇数又は偶数であるかどうかを判断し、奇数であれば、Xの最小の正整数値を設定された桁数で右へシフトした結果を、パラメータ値とし、偶数であれば、Xの最小の正整数値を設定された桁数で右へシフトして第三のプリセットパラメータを引いた結果を、パラメータW値とすることを含むことを特徴とするSM2鍵交換プロトコルに基づく鍵交渉方法。
【請求項2】
前記次数nが2x以下である場合のXの最小の正整数値を計算することは、
鍵交渉装置が前記次数nの有効ビット数mを取得し、
鍵交渉装置が次数nの値が2m−1の値より大きいかどうかを判断し、そうであれば、直接mの現在の値を前記Xの最小の正整数値とし、そうでなければ、設定されたステップ値1を用いてmを逐次的に小さくし、後者より大きくなるまで1回減少するたびに、nの値と2m−1の値を1回比較し、mの最後の値を前記Xの最小の正整数値とすることを含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記W値に基づいて交渉相手側と鍵交渉を行うことは、
鍵交渉装置が交渉相手側から送信された相手側の公開鍵P
Aと、相手側の楕円曲線点R
Aと、相手側のユーザー情報Z
Aとを受信し、及びローカルのユーザー情報Z
Bと、ローカルの秘密鍵d
Bと、ローカルに生成された乱数
と、ローカルに生成された楕円曲線点R
Bと、ローカルの楕円曲線点補因子パラメータhと交渉鍵の予期長さklenとを取得し、
鍵交渉装置が取得されたパラメータW値に基づいて、それぞれR
Aの横座標x
1と楕円曲線点R
Bの横座標x
2に基づいて、SM2鍵交換プロトコルに規定されたモードを用いて対応するパラメータ
と
を生成し、
鍵交渉装置がローカルの楕円曲線点補因子パラメータhと、ローカルの秘密d
Bと、前記パラメータ
と
と、相手側の公開鍵P
Aと、相手側の楕円曲線点R
Aと、ローカルに生成された乱数
とに基づいて、SM2鍵交換プロトコルに規定されたモードを用いて楕円曲線点Vを生成し、その座標値が
であり、
楕円曲線点Vの横座標
と縦座標
と、相手側のユーザー情報Z
Aと、ローカルのユーザー情報Z
Bと、交渉鍵の予期長さklenとに基づいて、SM2鍵交換プロトコルに規定されたモードを用いてローカルの交渉鍵K
Bを生成することを含むことを特徴とする請求項1
または請求項2に記載の方法。
【請求項4】
ローカルの交渉鍵K
Bを生成した後、
鍵交渉装置が交渉相手側の鍵交渉が成功すると黙認し、又は、
前記楕円曲線点の横座標
と
と、楕円曲線点R
Aの横座標x
1と縦座標y
1と、楕円曲線点R
Bの横座標x
2と縦座標y
2と、相手側のユーザー情報Z
Aと、ローカルのユーザー情報Z
Bとに基づいて、SM2鍵交換プロトコルに規定されたモードを用いて検証情報S
Bと検証情報S
2を計算し、そして検証情報S
Bを交渉相手側に送信し、交渉相手側が検証情報S
Bを受信して同じモードを用いて検証情報S
Aと検証情報S
1を生成するようにして、そしてS
BがS
1に等しいことを確認する場合に、ローカルから交渉相手側への鍵交渉が成功することを確定し、交渉相手側から送信された検証情報S
Aを受信し、そしてS
AがS
2に等しいことを確認する場合に、交渉相手側からローカルへの鍵交渉が成功することを確定することを含むことを特徴とする請求項
3に記載の方法。
【請求項5】
今回の鍵交渉に用いられる楕円曲線パラメータ次数nの値を確定し、前記次数nが2x以下である場合のXの最小の正整数値を計算し、取得されたXの最小の正整数値に基づいてパラメータW値を取得することに用いられる第一の制御モジュールと、
前記パラメータW値に基づいて交渉相手側と鍵交渉を行うことに用いられる第二の制御モジュールと、を備え、
前記第一の制御モジュールは、取得されたXの最小の正整数値に基づいてパラメータW値を取得する場合に、Xの最小の正整数値が奇数又は偶数であるかどうかを判断し、奇数であれば、Xの最小の正整数値を第一のプリセットパラメータで割って切り下げた結果を、パラメータW値とし、偶数であれば、Xの最小の正整数値を第一のプリセットパラメータで割って第二のプリセットパラメータを引いた結果を、パラメータW値とし、
前記第一の制御モジュールは、取得されたXの最小の正整数値に基づいてパラメータ値を取得する場合に、Xの最小の正整数値が奇数又は偶数であるかどうかを判断し、奇数であれば、Xの最小の正整数値を設定された桁数で右へシフトした結果を、パラメータ値とし、偶数であれば、Xの最小の正整数値を設定された桁数でシフトして第三のプリセットパラメータを引いた結果を、パラメータW値とすることを特徴とするSM2鍵交換プロトコルに基づく鍵交渉装置。
【請求項6】
前記第一の制御モジュールは、前記次数nが2x以下である場合のXの最小の正整数値を計算する場合に、前記次数nの有効ビット数mを取得し、次数nの値が2m−1の値より大きいかどうかを判断し、そうであれば、直接mの現在の値を前記Xの最小の正整数値とし、そうでなければ、設定されたステップ値1を用いてmを逐次的に小さくし、前者が後者より大きくなるまで1回減少するたびに、nの値と2m−1の値を1回比較して、そしてmの最後の値を前記Xの最小の正整数値とすることを特徴とする請求項5に記載の装置。
【請求項7】
前記第二の制御モジュールは、前記W値に基づいて交渉相手側と鍵交渉を行う場合に、
交渉相手側から送信された相手側の公開鍵P
Aと、相手側の楕円曲線点R
Aと、相手側のユーザー情報Z
Aとを受信し、ロカールのユーザー情報Z
Bと、ローカルの秘密鍵d
Bと、ローカルに生成された
と、ローカルに生成された楕円曲線点R
Bと、ローカルの楕円曲線補因子パラメータhと交渉鍵の予期長さklenとを取得し、
取得されたパラメータW値に基づいて、それぞれ楕円曲線点R
Aの横座標x
1と楕円曲線点R
Bの横座標x2に基づいて、SM2鍵交換プロトコルに規定されたモードを用いて対応するパラメータ
と
を生成し、
ローカルの楕円曲線補因子パラメータhと、ローカルの秘密鍵d
Bと、前記
と
と、相手側の公開鍵P
Aと、相手側の楕円曲線点R
Aと、ローカルに生成された乱数
とに基づいて、SM2鍵交換プロトコルに規定されたモードを用いて楕円曲線点Vを生成し、その座標値が
であり、
楕円曲線点Vの横座標
と縦座標
、相手側のユーザー情報Z
A、ローカルのユーザー情報Z
B、及び交渉鍵の予期長さklenに基づいて、SM2鍵交換プロトコルに規定されたモードを用いてローカル交渉鍵K
Bを生成する操作を実行し、ことを特徴とする請求項
5または請求項6に記載の装置。
【請求項8】
前記第一の制御モジュールは、ローカルの交渉鍵KBを生成した後、交渉相手側との鍵交渉が成功すると黙認し、又は、前記楕円曲線点の横座標
と
と、楕円曲線点R
Aの横座標x
1と縦座標y
1と、楕円曲線点R
Bの横座標x
2と縦座標y
2と、相手側のユーザー情報Z
Aと、ローカルのユーザー情報Z
Bとに基づいて、SM2鍵交換プロトコルに規定されたモードを用いて検証情報S
Bと検証情報S
2とを計算し、そして検証情報S
Bを交渉相手側に送信し、交渉相手側が検証情報S
Bを受信して、同じモードを用いて検証情報S
Aと検証情報S
1を生成し、そしてS
BがS
1に等しいことを確認する場合に、ローカルから交渉相手側への鍵交渉が成功することを確定し、交渉相手側から送信された検証情報S
Aを受信し、そしてS
AがS
2に等しいことを確認した場合に、交渉相手側からローカルへの鍵交渉が成功することを確定することを特徴とする請求項
6に記載の装置。
【請求項9】
今回の鍵交渉に用いられる楕円曲線パラメータ次数nの値を確定することに用いられる確定ユニットと、
前記次数nが2x以下である場合のXの最小の正整数値を計算し、そして取得されたXの最小の正整数値に基づいてパラメータW値を取得することに用いられる計算ユニットとを備え、
前記計算ユニットは、取得されたXの最小の正整数値に基づいてパラメータW値を取得する場合に、Xの最小の正整数値が奇数又は偶数であるかどうかを判断し、奇数であれば、Xの最小の正整数値を第一のプリセットパラメータで割って切り下げた結果を、パラメータW値とし、偶数であれば、Xの最小の正整数値を第一のプリセットで割って切り下げて第二のプリセットパラメータを引いた結果を、パラメータW値とし、
前記計算ユニットは、取得されたXの最小の正整数値に基づいてパラメータW値を取得する場合に、Xの最小の正整数値が奇数又は偶数であるかどうかを判断し、奇数であれば、Xの最小の正整数値を設定された桁数で右へシフトした結果を、パラメータW値とし、偶数であれば、Xの最小の正整数値を設定された桁数で右へシフトして第三のプリセットパラメータを引いた結果を、パラメタW値とすることを特徴とするパラメータ生成装置。
【請求項10】
前記計算ユニットは、前記次数nが2x以下である場合のXの最小の正整数値を計算し、前記次数nの有効ビット数mを取得し、次数nの値が2m−1の値より大きいかどうかを判断し、そうであれば、直接mの現在の値を前記Xの最小の正整数値とし、そうでなければ、設定されたステップ値1を用いてmを逐次的に小さくし、前者が後者より大きくなるまで1回減少するたびに、nの値と2m−1の値を1回比較し、mの最後の値を前記Xの最小の正整数値とすることを含むことを特徴とする請求項9に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報技術分野に関し、特に、SM2鍵交換プロトコルに基づく鍵交渉方法及び装置に関する。
【背景技術】
【0002】
本出願は、2011年11月30日に中国特許庁に提出された特許出願番号201110390564.7、発明の名称「SM2鍵交換プロトコルに基づく鍵交渉方法及び装置」の優先権の利益を享受し、その全ての内容が本出願において援用される。
【0003】
2010年12月に中国・国家暗号管理局がSM2、SM3暗号アルゴリズムを開示したことは、SM2、SM3暗号アルゴリズムが商業化段階に入ることを示している。SM2鍵交換プロトコルは、SM2アルゴリズムの一つの構成部分として、鍵管理と鍵交渉機能分野に良く応用されている。SM2鍵交換プロトコルの工学的実現過程に、Wパラメータは、鍵交換プロトコル内の一つの重要なパラメータとして、そのパラメータ値の生成演算効率が全体鍵交換プロトコル実現効率の決定的な要因になる。
【0004】
SM2鍵交換プロトコルの規定に基づいて、既存の鍵交渉プロセスは、次の通りである。
【0005】
ユーザーAが鍵交渉開始側であり、ユーザーBが鍵交渉応答側であると仮定すると、ユーザーAとユーザーBが交渉して取得した鍵データの長さは、klenビットであり、ユーザーAとユーザーBの両方が同じ楕円曲線方程式を使用する。その中、当該楕円曲線方程式のタイプについて、素体方程式y
2=x
3+ax+bを選択してよく、二次元の拡張フィールド方程式y
2+xy=x
3+ax
2+bを選択してもよい。
【0006】
SM2鍵交換プロトコルの規定によって使用される鍵導出関数は、KDF(Z,klen)に記され、一つの鍵ビット列から鍵データを導出することに用いられ、その中、Zが入力された鍵ビット列であり、整数klenが取得される鍵データのビット長を表し、当該値が(2
32−1)Vより小さく要求され、長さklenの鍵データビット列をKに記する。鍵データ生成過程に、鍵導出関数は、暗号ハッシュ関数(例えば、SM3暗号ハッシュアルゴリズム)を呼び出す必要があり、通常、暗号ハッシュ関数をH
v()に記し、暗号ハッシュ関数の出力が長さVビットのハッシュ値である。
【0007】
以下、鍵導出関数演算ステップを次のように説明する。
【0008】
(1)、32ビットで構成されたカウンターをct=0x00000001に初期化する。
【0009】
a、H
ai=H
v(Z‖ct)を計算する;‖がカスケード演算である;
b、ct++;
【0010】
タとなる。
【0011】
取得された鍵データに基づいて、ユーザーAとユーザーBは、同じ鍵を取得するために、鍵交渉を行う必要がある。具体的な演算ステップは、次の通りである。
【0012】
ユーザーA:
A1:乱数発生器を用いて乱数r
A∈[1,n−1]を生成する;
A2:楕円曲線点R
A=[r
A]G=(x
1,y
1)を計算し、(x
2,y
2)が点等R
Aの座標値であり、Gが選択された楕円曲線パラメータである。
A3:R
AをユーザーBに送信する;
【0013】
ユーザーB:
B1:乱数発生器を用いて乱数r
B∈[1,n−1]を生成する;
【0014】
B2:楕円曲線点R
B=[r
B]G=(x
2,y
2)を計算し、(x
2,y
2)がR
Bの座標値であり、Gが選択された楕円曲線パラメータである。
【0015】
B3:R
Bからフィールド要素x2を取り出し、フィールド要素x2が二次元の拡張フィールドデータであれば、そのデータタイプを整数に変換し、フィールド要素x2が素体データであれば、変換しなく、直接後の操作を行うことができる;次に、ユー
【0016】
ータであり、d
BがローカルユーザーBより保存された秘密鍵であり、r
BがローカルユーザーBに発生された乱数である。
【0017】
B5:R
Aが楕円曲線方程式(素体モード又は二次元の拡張フィールドモードを用いると、予めユーザーAと約束することができ、両方が同じ楕円曲線方程式を用いる)を満たすかどうかを確認し、満たさなければ、今回の鍵交渉が失敗したことを確定し、満たせば、R
Aからフィールド要素x1を取り出し、フィールド要素x1が二次元の拡張フィールドデータであれば、まずそのデータライプを整数に変換し、フィールド要素x1が素体データであれば、変換しなく、直接後の操作を行うことができ、ユ
【0018】
された楕円曲線パラメータであり、P
AがユーザーAの公開鍵であり、Vが無限遠点(例えば、x
V=0,y
V=0)であるかどうかを判断し、そうであれば、ユーザーBの鍵交渉が失敗したことを確認し、そうでなければ、フィールド要素x
V、y
Vのデータタイプをビット列に変換する;
【0019】
B7:K
B=KDF(x
V‖y
V‖Z
A‖Z
B,klen)を計算する;K
Bは、ユーザーBが鍵交渉により取得された鍵データであり、この時に、ユーザーBの鍵交渉が成功すると黙認できる。
任意選択的に、B7を実行した後、ユーザーBは、さらにB8を実行することができる。
【0020】
B8:R
Aの座標x
1、y
1とR
Bの座標x
2、y
2のデータタイプをいずれもビット列に変換し、S
B=Hash(0x02‖y
V‖Hash(x
V‖Z
A‖Z
B‖x
1‖y
1‖x
2‖y
2))を計算し、Hash()が暗号ハッシュ関数H
v()として見ることができ、S
Bが演算により取得されたハッシュ値として見ることができる。
【0021】
B9:R
BをユーザーAに送信し、B8を実行すれば、さらにS
BをユーザーAに送信する必要がある;
【0022】
ユーザーA
A4:R
Aからフィールド要素x1を取り出し、フィールド要素x1が二次元の拡張フィールドデータであれば、まずそのデータタイプを整数に変換し、フィールド要素x1が素体データであれば、変換しなく、直接後の操作を行うことができ、中間パラ
【0023】
ーAより保存された乱数である。
【0024】
A6:R
Bが楕円曲線方程式(ユーザーBと約束する)を満たすかどうかを確認し、満たさなければ、今回の鍵交渉が失敗したことを確定し、満たせば、R
Bからフィールド要素x2を取り出し、フィールド要素x2が二次元の拡張フィールドデータであれば、まずそのデータタイプを整数に変換し、フィールド要素x2が素体データであ
【0025】
ば、x
U=0,y
U=0)であれば、A交渉が失敗し、そうでなければ、フィールド要素x
U、y
Uのデータタイプをビット列に変換する;
【0026】
A8:K
A=KDF(x
U‖y
U‖Z
A‖Z
B,klen)を計算し、K
Aは、ユーザーAが鍵交渉により取得した鍵データであり、この時に、ユーザーAの鍵交渉が成功すると黙認できる;
任意選択的に、A8を実行した後、ユーザーBから送信されたS
Bを受信した場合、ユーザーAは、さらにA9とA10を実行することができる;
【0027】
A9:R
Aの座標x1、y1とR
Bの座標x2、y2のデータタイプをビット列に変換し、S
1=Hash(0x02‖y
U‖Hash(x
U‖Z
A‖Z
B‖x
1‖y
1‖x
2‖y
2))を計算し、Hash()が暗号ハッシュ関数H
v()として見ることができ、S
1が演算により取得されたハッシュ値として見ることができ、そしてS
1=S
Bが成立するかどうかを確認し、成立すれば、ユーザーBからユーザーAへの鍵確認が成功することを確定し、成立しなければ、ユーザーBからユーザーAへの鍵確認が失敗したことを確定する;
【0028】
A10:S
A=Hash(0x03‖y
U‖Hash(x
U‖Z
A‖Z
B‖x
1‖y
1‖x
2‖y
2))を計算し、そしてS
AをユーザーBに送信する。
ユーザーB:(ユーザーAから送信されたS
Aを受信した場合、ユーザーBがステップB10とB11を実行し続けることができる)
【0029】
B10:S
2=Hash(0x03‖y
V‖Hash(x
V‖Z
A‖Z
B‖x
1‖y
1‖x
2‖y
2))を計算し、そしてS
2=S
Aが成立するかどうかを確認し、成立すれば、ユーザーAからユーザーBへの鍵確認が成功することを確定し、成立しなければ、ユーザーAからユーザーBへの鍵確認が失敗したことを確定する。
【0030】
上記の過程は、SM2鍵交換プロトコルに記載された鍵交渉過程であり、これにより分か
り、その中、nが楕円曲線パラメータであり、次数nと呼ばれ、次数nが通常160桁以上の大整数であり、次数nに基づいて直接log
2(n)の対数値を求め、その後切り上げ演算を行うと、工学的実現においてより複雑であり、より多くの時間が掛かり、それによって直接鍵交渉プロセスの実現効率を直接低下させ、鍵交渉プロセスの実現複雑さを向上させる。
【発明の概要】
【発明が解決しようとする課題】
【0031】
本発明の実施形態は、鍵交渉プロセスの実現複雑さを低下させ、鍵交渉プロセスの実現効率を向上させるように、SM2鍵交換プロトコルに基づく鍵交渉方法及び装置を提供する。
【0032】
本発明の実施形態に係る具体的な技術的解決策は、次の通りである。
【0033】
SM2鍵交換プロトコルに基づく鍵交渉方法は、
今回の鍵交渉に用いられる楕円曲線パラメータ次数nの値を確定するステップと、
前記次数nが2
x以下である場合のXの最小の正整数値を計算し、そして取得されたXの最小の正整数値に基づいてパラメータW値を取得するステップと、
前記W値に基づいて交渉相手側と鍵交渉を行うステップとを含む。
【0034】
SM2鍵交換プロトコルに基づく鍵交渉装置は、
今回の鍵交渉に用いられる楕円曲線パラメータ次数nの値を確定し、そして前記次数nが2
x以下である場合のXの最小の正整数値を計算し、そして取得されたXの最小の正整数値に基づいてパラメータW値を取得することに用いられる第一の制御モジュールと、
前記W値に基づいて交渉相手側と鍵交渉を行うことに用いられる第二の制御モジュールと、を備える。
【0035】
パラメータ生成装置は、
今回の鍵交渉に用いられる楕円曲線パラメータ次数nの値を確定することに用いられる確定ユニットと、
前記次数nが2
x以下である場合のXの最小の正整数値を計算し、そして取得されたXの最小の正整数値に基づいてパラメータW値を取得することに用いられる計算ユニットとを備える。
【0036】
本発明の実施形態において、交渉の両方は、いずれも不等式n≦2
xを成立させるX値のうちの最小の正整数値に基づいて、
パラメータW値を計算し、そして当該
パラメータW値に基づいて交渉相手側とSM2鍵交換プロトコルに基づく鍵交渉を行う。log2(n)対数値を計算して切り上げるモードを用いて
パラメータW値を計算する方法と比較すると、計算量を効果的に減少させ、且つアルゴリズムの実現複雑さを低下させて、それによってSM2鍵交換プロトコルに基づく鍵交渉プロセスの実現効率を大幅に向上させて、さらにSM2鍵交換プロトコルの工学的実現を最適化する。
【図面の簡単な説明】
【0037】
【
図1A】本発明の実施形態における鍵交渉装置の機能構造を示す図である。
【
図1B】本発明の実施形態における
パラメータW値生成装置の機能構造を示す図である。
【
図2】本発明の実施形態における鍵交渉を行うフローチャートである。
【
図3】本発明の実施形態における
パラメータW値を生成する第一の方法のフローチャートである。
【
図4】本発明の実施形態における
パラメータW値を生成する第二の方法のフローチャートである。
【発明を実施するための形態】
【0038】
SM2鍵交換プロトコルに基づく鍵交渉プロセスに、鍵交渉プロセスの実行複雑さを低下させ、鍵交渉プロセスの実現効率を向上させるために、本発明の実施形態におい
満たすXの最小の正整数値を求め、そして取得されたXの最小の正整数値に基づいて
算されたW値に基づいて相手側と鍵交渉を行う。
【0039】
以下、依然としてユーザーAとユーザーBを例として、図面を参照して本発明の好ましい実施形態を詳しく説明する。
【0040】
図1Aに示すように、本発明の実施形態において、SM2鍵交換プロトコルに基づく鍵交渉の両方のうちのいずれかの一方(ユーザーAであってよく、ユーザーBであってもよい)より使用される鍵交渉装置は、第一の制御モジュール10と第二の制御モジュール11を備える。
【0041】
ここで、第一の制御モジュール10が、今回の鍵交渉に用いられる楕円曲線パラメータ次数nの値を確定し、そして次数nが2
x以下である場合のXの最小の正整数値を計算し、そして取得されたXの最小の正整数値に基づいてパラメータW値を取得することに用いられ、
第二の制御モジュール11が、前記パラメータW値に基づいて交渉相手側と鍵交渉を行うことに用いられる。
【0042】
図1Aに示すように、第二の制御モジュール11の内部は、若干の、ソフトウェアで実現される機能ユニットとハードウェアで実現される機能ユニットに細分することができ、これらの機能ユニットの作用は、後の実施形態において詳しく説明され、他方では、
図1Aに示す第二の制御モジュール11の内部の機能ユニットの分割モードは、一つの例だけであるが、実際の応用中に、具体的な応用環境に応じて別に計画されることができ、ここで繰り返して説明しない。
【0043】
他方では、実際の応用中に、第一の制御モジュール10は、鍵交渉装置に設置されたロジックモジュールであってよく、独立動作機能を有するサブデバイスであってもよい。
図1Bに示すように、本発明の実施形態において、第一の制御モジュール10は、確定ユニット100と計算ユニット101を含む。
【0044】
ここで、確定ユニットは、今回の鍵交渉に用いられる楕円曲線パラメータ次数nの値を確定することに用いられ、
計算ユニットは、次数nが2
x以下である場合のXの最小の正整数値を計算し、そして取得されたXの最小の正整数値に基づいてパラメータW値を取得することに用いられる。
【0045】
上記の技術的解決策に基づいて、
図2に示すように、本発明の実施形態において、SM2鍵交渉両方のうちのいずれかの一方(ユーザーAであってよく、ユーザーBであってもよい)が実行する具体的なプロセスは、次の通りである。
【0046】
ステップ200、今回の鍵交渉に用いられる楕円曲線パラメータ次数nの値を確定する。
【0047】
一般的に次数nの値が予め設定されるので、ユーザーAとユーザーBは、SM2鍵交渉プロセスの開始段階に、用いられる楕円曲線方程式を約束し、相手側へ自分で用いられた公開鍵、即ちP
A、P
Bを送信する。
【0048】
ステップ210:確定された次数nが2
x以下場合のXの最小の正整数値を計算し
の最小の正整数値に基づいてパラメータW値を取得する。
【0049】
実行される具体的な操作は、次の通りである。
図3と
図4に示すように、鍵交渉装置は、まず次数nの有効ビット数mを確定し、即ち上位の1つ目の非0ビットから次数nに含まれるビット総数を計算し、次に次数nの値を2
m−1と比較し、即ちn>2
m−1であるかどかを判断し、そうであれば、直接mの現在の値をXの最小の正整数値とし、そうでなければ、設定されたステップ値(例えば、ステップ値が1である)を用いてmを逐次的に小さくし、当該不等式が成立するまで1回減少するたびに、n>2
m−1であるかどかを1回判断し、そしてmが小さくなった後の最後の値をXの最小の正整数値とする。
【0050】
本実施形態において、Xの最小の正整数値を取得した後、Xの最小の正整数値に基づいてパラメータW値を計算する場合、以下の様々な方式を用いることができる。
【0051】
例えば、
図3に示すように、まず最後取得されたmのパリティ(即ちXの最小の正整数値のパリティ)を判断することができ、mが奇数であれば、mを第一のプリセッ
小の正整数であり、mが偶数であれば、mを第一のプリセットパラメータで割って切り下げて第二のプリセットパラメータを引いた結果を、パラメータW値とし、例えば
ラメータであり、1が第二のプリセットパラメータである。
【0052】
また、例えば、
図4に示すように、まず最後取得されたmのパリティ(即ちXの最小正整数値のパリティ)を判断することができ、mが奇数であれば、mを設定された桁数で右シフトした結果を、パラメータW値とし、例えば、式w=m>>1用いてパラメータW値を計算し、その中、≫が右シフト操作であり、1が右シフトの設定桁数であり、m≫1がmの現在の値の最低位(二次元の拡張フィールド形態)を削除し、最高位にゼロを補うことを示し、mが偶数であれば、mを設定された桁数で右へシフトして第三のプリセットパラメータを引いた結果を、パラメータW値とし、例えば、式w=(m>>1)−1を用いてパラメータW値を計算する。
ここで、1つ目の1が右シフトの設定桁数であり、2つ目の1が第三のプリセットパラメータである。
【0053】
ステップ220、取得されたパラメータW値に基づいて交渉相手側と鍵交渉を行う。
【0054】
図2に示すように、SM2鍵交換プロトコルを実現する鍵交渉装置は、開始側ユーザーAとしてよく、応答側ユーザーBとしてもよく、その中、第一の制御モジュール10が
パラメータW値を計算する演算モジュールであり、鍵交渉装置が第一の制御モジュール10により
パラメータW値を取得した後、相手側と鍵交渉を行うプロセスは、次の通りである。
【0055】
SM2鍵交換プロトコルプロセスが開始した後、ユーザー開始側Aとユーザー応答側Bは、それぞれが使用した鍵交渉装置内に設置された第一の制御モジュール10によりそれぞれ対応する
パラメータW値を取得する。
【0056】
次に、ユーザーAは、鍵交渉装置内の第二の制御モジュール11により乱数と楕円曲線点を計算し、その中、第二の制御モジュール11がハードウェアで実現されることができ、
図1に示すように、ユーザーAは、第二の制御モジュール11内の乱数発生ユニットにより乱数r
A∈[1,n−1]を生成することができ、ECC演算ユニットが生成された乱数に基づいて楕円曲線点R
A=[r
A]G=(x
1,y
1)を生成することができ、同時に、第二の制御モジュール11がこの鍵交渉装置における鍵記憶サブモジュール内に保存された、今回の鍵交渉に用いられる秘密鍵d
Aに対応する公開鍵P
Aを取り出し、そして公開鍵P
Aを、ローカルにソフトウェアで実現される通信インターフェイスを介して楕円曲線点R
Aと公開鍵P
AをユーザーBに送信する。
【0057】
ユーザーBより使用された鍵交渉装置BがユーザーAから受信した情報は、主に相手側の公開鍵P
A、相手側の楕円曲線点R
A、相手側のユーザー情報Z
Aを含み、同時にローカルのユーザー情報Z
B、楕円曲線点補因子パラメータh、交渉鍵の予期長さklenを取得する。
【0058】
ユーザーBは、ローカルの第二の制御モジュール11を用いて乱数と楕円曲線点を計算し、その中、第二の制御モジュール11がハードウェアで実現されることができ、例えば、ユーザーBは、第二の制御モジュール11内の乱数発生ユニットにより乱数r
B∈[1,n−1]を生成することができ、次に、第二のモジュール11内のECC演算ユニットにより、生成された乱数に基づいて楕円曲線点R
B=[r
B]G=(x
2,y
2)を生成することができ、同時に、第二の制御モジュール11がこの鍵交渉装置における鍵記憶ユニットに保存された今回の鍵交渉に用いられた秘密鍵d
Bに対応する公開鍵P
Bを取り出し、そしてローカルにソフトウェアで実現される通信インターフェイスを介して楕円曲線点R
Bと公開鍵P
BをユーザーAに送信する。
【0059】
次に、ユーザーBは、ローカルの第二の制御モジュール11におけるソフトウェアで実現されるデータタイプ変換ユニットを用いて、取得されたフィールド要素X
1とX
2のデータタイプを整数データタイプに変換し、その後、第二の制御ユニット11におけるソフ
することができ、その中、x
1が楕円曲線点R
Aの横座標であり、x
2が楕円曲線点R
Bの横座標であり、ここで本発明の実施形態に係る解決策を用いて生成された
パラメータW値を用いる。
【0060】
次に、ユーザーBは、鍵交渉装置により相手側の公開鍵P
A、相手側の楕円曲線点
し、その中秘密鍵d
Bが第二の制御モジュール11におけるハードウェアで実現される鍵記憶ユニットから読み出されるものであり、関連演算が主に、まず大整数モジュ
t
B=(d
B+l)modnを計算することを含み、ユーザーBは、上記の大整数演算ユニット
【0061】
その後、ユーザーBは、第二の制御モジュール11におけるハードウェアで実現されるECC演算ユニットを用いてR
Aが楕円曲線方程式を満たすかどうかの確認を完
【0062】
ユーザーBは、鍵交渉装置における第二の制御モジュール11によりR
Aが楕円曲線方程式を満たすかどうかの確認結果及び楕円曲線点V=(x
V,y
V)をソフトウェアで実現される部分に伝送し、R
Aが楕円曲線方程式を満たしなければ、又は、V=(x
V,y
V)が楕円曲線の無限遠点であれば、演算を終了し、そうでなければ、ユーザーBは、第二の制御モジュール11におけるソフトウェアで実現されるデータタイプ変換ユニットにより楕円曲線点V=(x
V,y
V)における横座標x
Vと縦座標y
Vのデータタイプをビット列データタイプに変換し、ユーザーBは、第二の制御モジュール11におけるソフトウェアで実現される鍵導出ユニットによりローカルユーザーBの交渉鍵
K
B=KDF(x
V‖y
V‖Z
A‖Z
B,klen)を計算し、これまで、ユーザーBは、鍵交渉が成功すると黙認できる。
【0063】
当然、任意選択的に、ユーザーBは、さらに第二の制御モジュール11におけるソフトウェアで実現されるデータタイプ変換ユニットにより楕円曲線点R
A=(x
1,y
1)の横座標x
1、縦座標y
1と楕円曲線点R
B=(x
2,y
2)の横座標x
2、縦座標y
2のデータタイプをビット列データタイプに変換し、その後、第二の制御モジュール11におけるソフトウェアで実現される暗号ハッシュ計算ユニットにより次のような検証情報を計算する。
S
B=Hash(0x02‖y
V‖Hash(x
V‖Z
A‖Z
B‖x
1‖y
1‖x
2‖y
2))
S
2=Hash(0x03‖y
V‖Hash(x
V‖Z
A‖Z
B‖x
1‖y
1‖x
2‖y
2))
【0064】
ユーザーBは、検証情報S
Bをソフトウェアで実現される伝送インタフェースを介してユーザーAに伝送する。
【0065】
開始側Aが所属する鍵交渉装置は、ユーザーBから送信された情報を受信し、ユーザーBの公開鍵P
B、ユーザーBの楕円曲線点R
B、ユーザーBのユーザー情報Z
B、及びローカルユーザー情報Z
A、楕円曲線点補因子パラメータh、交渉鍵予期長さklenを取得し、その後ユーザーBと同じプロセスを用いて
K
A=KDF(x
U‖y
U‖Z
A‖Z
B,klen)を計算する。
【0066】
これまで、開始側Aは、鍵交渉が成功すると黙認することもきる。
【0067】
さらに、ユーザーAがユーザーBから送信された検証情報S
Bを受信した場合でも、同じプロセスを用いて検証情報を計算する。
S
1=Hash(0x02‖y
U‖Hash(x
U‖Z
A‖Z
B‖x
1‖y
1‖x
2‖y
2))
S
A=Hash(0x03‖y
U‖Hash(x
U‖Z
A‖Z
B‖x
1‖y
1‖x
2‖y
2))
【0068】
その後、S
1がS
Bに等しいかどうかをチェックし、等しい場合、鍵交渉が成功することを確認し、等しくない場合、鍵交渉が失敗したことを確認し、そしてS
AをユーザーBに送信する。
【0069】
ユーザーBは、S
AがS
2に等しいかどかを確認し、等しい場合、鍵交渉が成功し、等しくない場合、鍵交渉が失敗したことを確認する。
【0070】
これまで、SM2鍵交換プロトコルに制定されたSM2鍵交渉プロセスは、完全に終了する。
【0071】
上述したように、本発明の実施形態において、交渉両方は、いずれも不等式n≦2
xを成立させるX値のうちの最小の正整数値に基づいて、パラメータW値を計算し、そして当該
パラメータW値に基づいて交渉相手側とSM2鍵交換プロトコルに基づく鍵交渉を行う。その中、
パラメータW値の計算過程は、実際の交渉プロセスが開始する前又は後に実行されることができ、同じ効果を得ることができる。log2(n)対数値を計算して切り上げるモードを用いて
パラメータW値を計算する方法と比較すると、計算量を効果的に減少し、且つアルゴリズムの実現複雑さを低下させ、それによってSM2鍵交換プロトコルに基づく鍵交渉プロセスの実現効率を大幅に向上させて、さらにSM2鍵交換プロトコルの工学的実現を最適化する。
【0072】
当業者は、本発明の実施形態は、方法、システム、又はコンピュータプログラム製品として提供されることができる。そのため、本発明は、完全なハードウェアの実施形態、完全なソフトウェアの実施形態、又はソフトウェアとハードウェアを組み合わせた実施形態の形態を用いることができると理解すべきである。且つ、本発明は、コンピュータ使用可能プログラムコードが含まれる1つ以上のコンピュータ使用可能な記憶媒体(ディスクメモリ、CD−ROM、光メモリなどを含むがこれらに限られない)で実施されるコンピュータプログラム製品の形態を採用することができる。
【0073】
本発明は、本発明の実施形態による方法、装置(システム)とコンピュータプログラム製品のフローチャート及び/又はブロック図を参照して説明されるものである。コンピュータプログラム命令によりフローチャート及び/又はブロック図中の各プロセス及び/又はブロック、及びフローチャート及び/又はブロック中のプロセス及び/ブロックの組み合わせを実現することができると理解すべきである。これらのコンピュータプログラム命令を、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ又は他のプログラム可能なデータ処理装置のプロセッサに提供して1つのマシンを生み出すことができ、コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサが実行する命令により、フローチャートの1つ以上のプロセス及び/又はブロック図の1つ以上のブロック中に指定された機能を実現するための装置を生じることができる。
これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理装置が特定の方式で動作するようにガイドできるコンピュータ読み取り可能なメモリに記憶されることができ、それによって当該コンピュータ読み取り可能なメモリに記憶された命令により、命令装置が含まれる製造品を生じる。当該命令装置は、フローチャートの1つ以上のプロセス及び/ブロック図の1つ以上のブロック中に指定された機能を実現する。
【0074】
これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理装置にロードされることができ、コンピュータ又はプログラム可能なデータ処理装置で一連の操作ステップを実行して、コンピュータで実現される処理を生み、それによってコンピュータ又はプログラム可能なデータ処理装置で実行された命令により、フローチャートの1つ以上のプロセス及び/ブロック図の1つ以上のブロック中に指定された機能を実現するためのステップを提供する。
【0075】
本発明の好ましい実施形態を説明したにもかかわらず、当業者は、一旦基本的な創造性概念を知ると、これらの実施形態に対して別の変更と修正を行うことができる。したがって、添付した特許請求は、好ましい実施形態及び本発明の範囲に含まれるすべての変更と修正を含むと説明することを意図する。
【0076】
明らかに、当業者は、本発明の実施形態の精神および範囲から逸脱することなく、本発明の実施形態に対して様々な変更及び修正を行うことができる。このようにして、本発明の実施形態のこれらの変更及び修正が本発明の特許請求及びその同等技術の範囲に含まれると、本発明もこれらの変更及び修正を含むことを意図する。