9.7 秘密值生成原語
9.7 秘密值生成原語
9.7.1 SVDP-1-CLIENT
{DL,EC}SVDP-1-CLIENT原語適用于客戶。該原語使用客戶的私有密鑰和服務器的公開密鑰生成共享的秘密值。
輸入:
a) 客戶的私有密鑰s;
b) 服務器的公開密鑰ws;
c) 與密鑰s和ws相關的{DL,EC}域參數(包括q,r和g)。
假設:私鑰s和域參數是有效的,ws屬于一個父群
輸出:一個屬于有限域GF(q)中的元素z。
操作:
a) 計算zg=ws^s;
b) 計算z = GE2FEP(zg);
9.7.2 SVDP-2
{DL,EC}SVDP-2原語使用參與方的私有密鑰、口令相關值和另一參與方的口令相關公開密鑰生成共享的秘密值。
輸入:
a) 參與方一的私有密鑰s;
b) 基于口令的掩碼群元素πm;
c) 另一參與方的口令相關公開密鑰w’;
d) 與密鑰s,w’和πm相關的{DL,EC}域參數(包括q,r)。
假設:私鑰s和域參數是有效的,w’屬于一個父群,πm是目標群的一個r階生成元。
輸出:一個屬于有限域GF(q)中的元素z。
操作:
a) 計算zg =(w’* πm^(-1))^s;
b) 計算z= GE2FEP( zg);
9.7.3 SVDP-3
{DL,EC}SVDP-3原語使用參與方的私有密鑰、口令相關值和另一參與方的口令相關公開密鑰生成共享的秘密值。
輸入:
a) 參與方一的私有密鑰s;
b) 另一參與方的口令相關公開密鑰w’;
c) 與密鑰s,w’和πm相關的{DL,EC}域參數(包括q,r);
d) 一個布爾值b1標識是否使用乘法因子。
假設:私鑰s和域參數是有效的,w’屬于一個父群,s和w’使用相同的域參數生成,所有的參與方協商確定是否使用乘法因子。
輸出:一個屬于有限域GF(q)中的元素z。
操作:
a) 如果b1表示不使用乘法因子:
1) 計算群元素zg=w’^s;
b) 如果b1表示使用乘法因子:
1) 計算zg =w’ ^(ks);
c) 計算z= GE2FEP( zg);
9.7.4 [DL]SVDP-4-CLIENT,SVDP-5-CLIENT
[DL]SVDP-4-CLIENT,SVDP-5-CLIENT原語適用于客戶。該原語根據客戶的私有密鑰、服務器的口令相關的公開密鑰和一個口令相關值生成一個共享秘密數據,應該保證輸入的口令由相同的域參數生成。
SVDP-5原語需要以下兩個參數:
a) 一個散列函數,該散列函數的可選擇項為11.1中定義的函數和MGF1。同時應該保證服務器在原語DLSVDP-5-SERVER選擇相同的散列函數;
b) 一個乘法元生成函數Mvcf,該Mvcf應該選擇MVCF-1,同時同時應該保證服務器在原語DLSVDP-5-SERVER選擇相同的Mvcf函數。
輸入:
a) 客戶的私有密鑰s;
b) 口令限制的私有密鑰uπ;
c) 口令驗證數據vπ,口令限制的公開密鑰;
d) SVDP-5:客戶的DL私鑰wc;
e) 服務器的口令相關私鑰密鑰ws;
f) 與s,uπ,vπ,wc,ws相關的域參數。
假設:客戶的私鑰s,uπ,vπ和域參數都是有效的,wc,ws是父群的元素。
輸出:一個屬于有限域GF(q)中的元素z。
操作:
a) 計算八位位組串o2= FE2OSP(ws);
b) 計算證書i2:
1) 在SVDP-4中:
i) 計算o3 = SHA-1(o2);
ii) 計算整數i1= OS2IP(o3);
iii) 計算i2 = [ i1/2128];
2) 在SVDP-5中:
i) 計算八位位組串o1= FE2OSP();
ii) 計算八位位組串o3= hash(o1||o2);
iii) 計算整數i2 = OS2IP(o3);
c) 計算域元素mv:
1) 在SVDP-4中:mv= 1;
2) 在SVDP-5中:mv= Mvcf();
d) 計算z= exp((ws -vπ×mv),(s+i2×uπ));
9.7.5 [DL]SVDP-4-SERVER,SVDP-5-SERVER
[DL]SVDP-4-SERVER,SVDP-5-SERVER原語適用于服務器。該原語根據服務器的私有密鑰、客戶的公開密鑰和一個口令相關值生成一個共享秘密數據,應該保證輸入的口令由相同的域參數生成。
SVDP-5原語需要一個散列函數,該散列函數的可選擇項為11.1中定義的函數和MGF1。同時應該保證服務器在原語DLSVDP-5-CLIENT選擇相同的散列函數;
輸入:
a) 服務器的私有密鑰s;
b) 口令驗證數據vπ,口令限制的公開密鑰;
c) 客戶的DL私鑰wc;
d) 服務器的口令相關私鑰密鑰ws;
e) 與s,vπ,wc,ws相關的域參數。
假設:客戶的私鑰s,vπ和域參數都是有效的,wc,ws是父群的元素。
輸出:一個屬于有限域GF(q)中的元素z。
操作:
a) 計算八位位組串o2=FE2OSP(ws);
b) 計算證書i2:
1) 在SVDP-4中:
i) 計算o3=SHA-1(o2);
ii) 計算整數i1=OS2IP(o3);
iii) 計算i2=[ i1/2128];
2) 在SVDP-5中:
i) 計算八位位組串o1 =FE2OSP();
ii) 計算八位位組串o3=hash(o1||o2);
iii) 計算整數i2=OS2IP(o3);
c) 計算z=exp((wc×exp(vπ, i2)),(s+ i2×uπ));
9.7.6 [EC]SVDP-6-CLIENT
[EC]SVDP-6-CLIENT原語適用于客戶。該原語根據客戶的私有密鑰、服務器的口令相關的公開密鑰和一個口令相關值生成一個共享秘密數據,應該保證輸入的口令由相同的域參數生成。
該原語需要以下兩個參數:
a) 一個散列函數,該散列函數的可選擇項為11.1中定義的函數和MGF1。同時應該保證服務器在原語ECSVDP-6-SERVER選擇相同的散列函數;
b) 一個隨機元素生成原語REDP,該Redp應該選擇[EC]REDP-1和[EC]REDP-2,同時同時應該保證服務器在原語ECSVDP-6-SERVER選擇相同的隨機元素生成函數。
輸入:
a) 客戶的私有密鑰s;
b) 口令限制的私有密鑰uπ;
c) 口令限制的公開密鑰vπ=ECPVDGP-4(π);
d) 客戶的公開密鑰wc;
e) 服務器的口令相關公開密鑰ws;
f) 與s,uπ,vπ,wc,ws相關的域參數。
假設:客戶的私鑰s,uπ,vπ和域參數都是有效的,wc,ws是父群的元素。
輸出:一個屬于有限域GF(q)中的元素z。
操作:
a) 計算o1 = GE2OSP(wc);
b) 計算o2 = GE2OSP(ws);
c) 計算o3 = hash(o1||o2);
d) 計算i2 = OS2IP(o3);
e) 計算o4= GE2OSP(vp);
f) 計算群元素e1= Redp(o4);
g) 計算e2 = ws * (e 1^(-1));
h) 計算zg = e2 ^ (s + (i2up));
i) 計算z = GE2FEP(zg);
9.7.7 [EC]SVDP-6-SERVER
[EC]SVDP-6-SERVER原語適用于服務器。該原語根據服務器的私有密鑰、服務器的口令相關的公開密鑰、口令驗證數據和客戶的口令相關公開密鑰生成一個共享秘密值。調用該原語的方案應該保證輸入的口令由相同的域參數生成。
該原語需要一個散列函數作為參數,該散列函數的可選擇項為11.1中定義的函數和MGF1。同時應該保證服務器在原語ECSVDP-6-CLIENT選擇相同的散列函數;
輸入:
a) 服務器的私有密鑰s;
b) 口令驗證數據vπ;
c) 口令限制的公開密鑰;
d) 客戶的公開密鑰wc;
e) 服務器的口令相關公開密鑰ws;
f) 與s,uπ,vπ,wc,ws相關的域參數。
假設:客戶的私鑰s,uπ,vπ和域參數都是有效的,wc,ws是父群的元素。
輸出:一個屬于有限域GF(q)中的元素z。
操作:
a) 計算o1 = GE2OSP(wc);
b) 計算o2 = GE2OSP(ws);
c) 計算o3 = hash(o1||o2);
d) 計算i2 = OS2IP(o3);
e) 計算zg = (wc * (vπ^ i2))^s;
f) 計算z = GE2FEP(zg);
9.7.8 SVDP-7-CLIENT, SVDP-7-SERVER
{DL,EC} SVDP-7-{CLIENT, SERVER}是{離散對數,橢圓曲線}秘密值產生原語,該原語包括適用于客戶和服務器。原語SVDP-7-CLIENT使用客戶的口令相關值、私有密鑰、和服務器的口令相關公開密鑰生成共享的秘密值。SVDP-7-SERVER根據口令驗證數據,服務器的口令相關私鑰和口令相關公鑰及客戶的口令相關公鑰生成一個共享秘密。
該原語需要一個散列函數作為參數,該散列函數的可選擇項為11.1中定義的函數和MGF1。同時應該保證SVDP-7-CLIENT, SVDP-7-SERVER選擇相同的散列函數。
輸入:
a) 參與方一的私有密鑰s;
b) 適用于客戶:口令相關私鑰u;
c) 適用于服務器:口令驗證數據v,一個使用{DL,EC}PVDGP-1( )生成的口令相關公開密鑰;
d) 適用于服務器:客戶的口令相關公開密鑰wc;
e) 服務器的口令相關公開密鑰ws;
f) 與密鑰s,u,v相關的{DL,EC}域參數(包括q);
假設:密鑰s,u,v相關的{DL,EC}域參數是有效的,wc,ws是父群的元素。
輸出:一個屬于有限域GF(q)中的元素z。
操作:
a) 計算o1 = GE2OSP(ws);
b) 計算o2 = hash(o1);
c) 計算i1 = OS2IP(o2);
d) 計算群元素zg:
1) 適用于客戶:zg = ws ^ (s + u ^ i1);
2) 適用于服務器:zg = (wc * (v ^ i1)) ^s;
e) 計算z =GE2FEP(zg);
9.7.9 SVDP-8-CLIENT,
{DL,EC} SVDP-8-{CLIENT}是{離散對數,橢圓曲線}秘密值產生原語,該原語適用于客戶端。該原語使用客戶的口令相關值uπ、私有密鑰、和服務器的口令相關公開密鑰生成共享的秘密值。
該原語需要一個散列函數hashWC,并需要提供一個八進制字符串oID作為hashWC的輸入。
輸入:
a) 客戶端的私有密鑰s;
b) 客戶的口令相關值uπ;
c) 客戶端的公開密鑰wc;
d) 服務器端的口令相關公開密鑰ws;
e) 與密鑰s,uπ,wc,ws相關的{DL,EC}域參數(包括q);
假設:密鑰s,uπ相關的{DL,EC}域參數是有效的,wc,ws是父群的元素。
輸出:一個屬于有限域GF (q)中的元素z作為共享的秘密值。
操作:
a) 計算 oc = GE2OSP(wc);
b) 計算 o1 = hashWC(oc|| oID);
c) 計算 i1 = OS2IP(o1);
d) 計算 i2 =(( s+1)/ ((s×i1)+ uπ)) mod r;
e) 計算 zg = ws ^ i2;
f) 計算z = GE2FEP(zg);
9.7.10 SVDP-8-SERVER,
{DL,EC} SVDP-8-{SERVER}是{離散對數,橢圓曲線}秘密值產生原語,該原語適用于服務器端。該原語使用客戶端公鑰、服務器端私鑰和域參數g生成共享的秘密值。
輸入:
a) 服務器端的私有密鑰s;
b) 客戶端的公開密鑰wc;
c) 與密鑰s, wc相關的{DL,EC}域參數(包括q和g);
假設:密鑰s相關的{DL,EC}域參數是有效的,wc是父群的元素。
輸出:一個屬于有限域GF (q)中的元素z作為共享的秘密值。
操作:
a) 計算zg = (wc * g) ^ s;
b) 如果zg 的階過小不能接受,則輸出“invalid”并停止;
c) 計算z = GE2FEP(zg);
GB/T 32213-2015 信息安全技術 公鑰基礎設施 遠程口令鑒別與密鑰建立規范
推薦文章: