9.6 隨機元素生成原語
9.6 隨機元素生成原語
9.6.1 [DL]REDP-1
[DL]REDP-1是離散對數隨機元素生成原語版本1,該原語采用一個散列函數根據一個口令輸入選取一個偽隨機群元素,該元素屬于離散對數口令鑒別密鑰協商方案所選擇的群,并防止沖突,隨機化輸出元素的指數。該原語可以用在DLBPKAS-3, DLAPKAS-1, DLAPKAS-5中產生生成元元素,也可以用在DLBPKAS-1, DLBPKAS-2生成一個掩碼元素。
該原語需要一個散列函數作為參數,其中散列的選擇項為11.1中定義的散列函數和MGF1。
輸入:
a) 隨機選擇器值oπ,該八位位組串根據口令生成;
b) DL域參數(包括g和k)。
輸出:選擇的r階的群元素e,或者“invalid”。
操作:
a) 計算八位位組串o1= hash( );
b) 計算域元素x = I2FEP(OS2IP(o1) mod q);
1) 如果x = 0,則輸出“invalid”并終止;
c) 計算域元素e= exp(x,k);
1) 如果e = 1,則輸出“invalid”并終止;
9.6.2 [EC]REDP-1
[EC]REDP-1原語基于[DL]REDP1,該原語采用一個散列函數根據一個口令輸入選取一個偽隨機群元素,該元素屬于橢圓曲線口令鑒別密鑰協商方案所選擇的群,并防止沖突,隨機化輸出元素的指數。該原語可以用在ECBPKAS-3, ECAPKAS-1, ECAPKAS-5中產生生成元元素,也可以用在ECBPKAS-11, ECBPKAS-2生成一個掩碼元素。
該原語需要一個輸出長度為oLen的散列函數作為參數,其中散列的選擇項為11.1中定義的散列函數和MGF1。
輸入:
a) 隨機選擇器值oπ,該八位位組串根據口令生成;
b) 與oπ有關的橢圓曲線域參數(包括q, p, m, a, b和k)。
輸出:選擇的有效的r階的群元素e,或者“invalid”。
操作:
a) 計算o1 = hash(oπ);
b) 計算i1= OS2IP(o1);
c) 計算oLen長度的八位位組串o2= I2OSP(i1);
d) 計算o3= hash(o2);
e) 計算一個域元素x = I2FEP(OS2IP(o3)mod q);
1) 如果x = 0, 輸出“invalid”并終止
f) 計算m = i1 mod 2;
g) 如果q是偶數,則跳轉到第i)步;
h) 如果q是奇數則:
1) 設置α:
i) 如果(p> 3), 則設置α = exp(x, 3) + a× x + b;
ii) 如果(p = 3), 則設置α = ? exp(x, 3) + a× exp(x, 2) + b;
2) 如果α = 0輸出“invalid”并終止
3) 如果α存在平方根,則計算α的一個平方根β;
4) 如果α不存在平方根,則跳轉到第j)步;
5) 設置y= exp(p–1, m) × b;
6) 設置點T1 = (x, y) 并跳轉到第 k)步。
i) 如果q是偶數則:
1) 設置b = x + a + b× exp(x, –2);
2) 找到一個域元素z,使得exp(z, 2) + z = b;
3) 如果不存在這一的z,則表明沒有這樣的結果,跳轉到b)繼續流程;
4) 設置y = (z + m) × x, 其中m是{0,1}表示了域元素{0,1};
5) 設置點T1 = (x, y) 并跳轉到c)步。
j) 如果橢圓曲線上在x上不存在點,則繼續重試:
1) 設置i1 = i1 + 1;
2) 跳轉到c)步。
k) 計算群元素e = k× T1;
1) 如果e是曲線上的無窮遠點,則輸出“invalid”并停止;
9.6.3 REDP-2
REDP-2原語采用一個散列函數根據一個口令輸入選取一個偽隨機群元素,該元素屬于離散對數口令鑒別密鑰協商方案所選擇的群,并防止沖突,隨機化輸出元素的指數。該原語可以用在{DL,EC}BPKAS-3, {DL,EC}APKAS-1, {DL,EC}APKAS-5中產生生成元元素,也可以用在{DL,EC}BPKAS-11, {DL,EC}BPKAS-2生成一個掩碼元素。
該原語需要一個散列函數和兩個隨機群元素ga和gb作為參數,其中散列的選擇項為11.1中定義的散列函數和MGF1,ga和gb是由g生成的群中的r階元素。
輸入:
a) 隨機選擇器值oπ,該八位位組串根據口令生成;
b) 與oπ相關的域參數(包括g和r)。
假設:假設域參數是有效的,并且ga和gb在群上符合均勻分布,因此沒有實體能獲得ga和gb之間的指數關系,也沒有實體可以獲得gb和g之間的指數關系。
輸出:選擇的r階的群元素e,或者“invalid”。
操作:
a) 計算八位位組串o1 = hash(oπ);
b) 計算證書i2= OS2IP(o1) mod q;
2) 如果=0,則輸出“invalid”并終止;
c) 計算域元素e = ga*(gb^i2);
2) 如果e = 1,則輸出“invalid”并終止;
GB/T 32213-2015 信息安全技術 公鑰基礎設施 遠程口令鑒別與密鑰建立規范
推薦文章: