9.2 簽名生成進程
9.2.1 輸入和輸出
簽名生成進程的輸入包括:
a) 域參數;
b) 私有簽名密鑰x**A,和
c) 簽名消息M;
簽名生成進程的輸出是包括A對消息M數字簽名的一對值(r, s)∈{0, 1}^8^^L^^(^^n^^)^ ′[1, n ? 1]。
9.2.2 生成隨機數和預簽名(橢圓曲線計算)
預簽名
a) 在區間[1, n *? 1]里選擇隨機整數k*;
b) 計算有橢圓曲線點R *= *kP;
c) 將R轉換為八位位組串Π= EC2OSPE(R, compressed)。
注:采用未壓縮格式的轉換函數EC2OSP的定義參考B.6。
9.2.3 生成數據輸入
從消息M中生成數據輸入
9.2.4 計算簽名(模n的算術運算)
簽名(r, s)∈{0, 1}^8^^L^^(^^n^^)^ ′[1, n ? 1]按照如下或者等同如下的步驟進行計算:
a) 將d轉換為整數δ *= OS2IP(d ),注意δ* ∈[0, *n *? 1];
b) 計算π *= OS2IP(Π) mod *n;
c) 計算= (δ *+ *π) mod n;
d) 計算s *= (k –x*A) mod n;
e) 轉換r *= I2OSP((n));
f) 清除k。
如果簽名生成進程生成了= 0或者s = 0,那么必須采用新的隨機值k重新進行簽名生成進程。
9.2.5 組成已簽消息
一對值(r, s)∈{0, 1}^8^^L^^(^^n^^)^ ′[1, n *? 1] 包括A對消息M*的簽名。
GB/T 15851.3—2018 信息技術 安全技術 帶消息恢復的數字簽名方案 第3部分:基于離散對數的機制
推薦文章: