蔡昭煒, 劉從軍,2, 劉 超
( 1 江蘇科技大學(xué)計(jì)算機(jī)學(xué)院, 江蘇 鎮(zhèn)江 212003; 2 江蘇科大匯峰科技有限公司, 江蘇 鎮(zhèn)江 212003;3 鎮(zhèn)江市不動產(chǎn)登記交易中心, 江蘇 鎮(zhèn)江 212003)
隨著電子政務(wù)的不斷發(fā)展及推廣,為響應(yīng)國務(wù)院辦公廳《關(guān)于壓縮不動產(chǎn)登記辦理時(shí)間的通知》(國辦發(fā)〔2019〕8 號)[1]精神,以及進(jìn)一步提升省市“放管服”改革、“3550”改革和營商環(huán)境優(yōu)化工作,各地不動產(chǎn)登記交易服務(wù)依次展開業(yè)務(wù)升級。 其中不動產(chǎn)登記交易一窗受理平臺[2]的搭建,給不動產(chǎn)業(yè)務(wù)帶來更高的定位、更方便快捷的服務(wù)、更全面的服務(wù)融合、數(shù)據(jù)互聯(lián)共享[3]等多方面提升。 涉及到業(yè)務(wù)辦理中的文書簽署也被電子簽署所取代[4],不動產(chǎn)柜面業(yè)務(wù)辦理逐漸向線上或柜面無紙化辦理模式轉(zhuǎn)變。
電子簽署中所使用的公鑰密碼算法的密鑰對由公鑰和私鑰組成。 公鑰由私鑰進(jìn)行不可逆計(jì)算得出,公鑰對外公開,私鑰需要秘密保存[5]。 協(xié)同簽名基于門限密碼學(xué)思想提出,是一種需要多方參與才能完成簽名、解密運(yùn)算的數(shù)字簽名技術(shù)。 將簽名密鑰分割并存儲于不同存儲介質(zhì)中[6],可以增加攻擊、破解密鑰的難度同時(shí)減少密鑰泄露的可能性。2017 年Yehuda Lindell[7]設(shè)計(jì)了一種快速安全的兩方ECDSA 簽名方案。 該方案運(yùn)用Paillier 的同態(tài)加密特性,并用零知識證明了方案的安全性,方案具有較好的性能。 2020 年Yudi Zhang 等人[8]提出了一種可證明的、安全實(shí)用的兩方分布式SM2 簽名算法協(xié)議,針對發(fā)展迅速的物聯(lián)網(wǎng)移動端場景,能夠在不需要重建私鑰的情況下生成有效簽名。 2020 年馮琦等人[9]設(shè)計(jì)了一種輕量級的非平衡SM2 協(xié)同簽名方案,方案中服務(wù)器協(xié)同客戶端完成簽名,過程中不暴露密鑰信息。
在柜面簽署場景下,簽名人簽署行為的真實(shí)性、文書簽署行為所產(chǎn)生的簽名是否表明簽名人的真實(shí)意愿,是關(guān)注的重點(diǎn)。 隨著手工簽署文書方式向線上電子簽署方式的轉(zhuǎn)變,該問題也隨之轉(zhuǎn)變?yōu)閷灻呱矸莸暮蓑?yàn)以及簽名所使用密鑰的安全保護(hù)[10]。 本文考慮上述存在的問題,提出一種用于不動產(chǎn)柜面簽署場景的不動產(chǎn)業(yè)務(wù)辦理柜面無紙化簽署系統(tǒng),并基于系統(tǒng)設(shè)計(jì)一種基于SM2 的協(xié)同簽名方案,用于生成不動產(chǎn)文書簽名。 方案在流程中引入簽署人身份認(rèn)證,使得簽名能夠表明簽名人真實(shí)簽名意愿,結(jié)合PBE 基于口令的密鑰算法思想,保護(hù)客戶端私鑰分量,并運(yùn)用門限密碼學(xué)思想,將密鑰分散在客戶端服務(wù)器和協(xié)同服務(wù)器中分別保存,以提高簽名密鑰安全性。
SM2 數(shù)字簽名算法[11]由國家密碼管理局發(fā)布,是橢圓曲線公鑰密碼算法(SM)標(biāo)準(zhǔn)。 在SM2 數(shù)字簽名算法中,通常采用SM3 密碼雜湊算法[12]計(jì)算摘要。 具體簽名步驟如下:
(1)初始化:選定橢圓曲線參數(shù)(q,a,b,G,n)并輸出;
(2)簽名生成:選取私鑰d,計(jì)算P=[d]G,將P作為公鑰,由此得到密鑰對(P,d);
(3)簽名算法:設(shè)待簽名消息為M,簽名者A 生成消息簽名需進(jìn)行如下運(yùn)算。
①計(jì)算雜湊值
其中,IDA是長度為entlen Abit的可辨識標(biāo)識;ENTLA是entlenA轉(zhuǎn)換而成的兩個(gè)字節(jié);(xG,yG) 是基點(diǎn)G的坐標(biāo);(x,y) 是公鑰P的坐標(biāo)。
②使用隨機(jī)數(shù)發(fā)生器產(chǎn)生k,滿足k∈[1,n-1];計(jì)算橢圓曲線點(diǎn)(x1,y1)=[k]G。
③計(jì)算r=(e+x1)modn。 如果r=0 或r+k=n,則返回上一步。
④利用私鑰dA和r計(jì)算
⑤輸出消息M的簽名(r,s)。
(4)驗(yàn)證算法:驗(yàn)證者收到簽名者的簽名(r,s)和明文M后,利用公鑰P進(jìn)行如下驗(yàn)證:
①計(jì)算e′=,其中=Z‖M′。
②計(jì)算t=(r′+s′)modn,其中(r′,s′) 即接收者B 接收到的簽名(r,s) 。 如果t=0,則直接返回驗(yàn)證失敗。
③計(jì)算(x′,y′)=[s′]G+(r′+s′)P。
④計(jì)算R=(e+x′)modn
驗(yàn)證R=r′ 是否成立,如果成立則返回驗(yàn)證成功,反之驗(yàn)證失敗。
PBE 是一種根據(jù)口令生成密鑰來加密的方法[13],在其生成密鑰過程中,會通過偽隨機(jī)數(shù)生成器生成一個(gè)被稱為“鹽”的隨機(jī)數(shù),與口令一起進(jìn)行密鑰計(jì)算,該方法可以有效防御字典攻擊,其密鑰生成過程如圖1 所示:
圖1 生成PBE 密鑰Fig. 1 PBE key generation process
系統(tǒng)硬件設(shè)計(jì)如圖2 所示。 整體系統(tǒng)可以分為兩部分,首先不動產(chǎn)業(yè)務(wù)辦理柜面簽署系統(tǒng)的業(yè)務(wù)模塊集成在不動產(chǎn)一窗受理平臺中,業(yè)務(wù)服務(wù)器與柜面工作PC 設(shè)備相連并置于內(nèi)網(wǎng)之中,柜面工作人員可以在業(yè)務(wù)系統(tǒng)中受理業(yè)務(wù),推送任務(wù)到不動產(chǎn)一窗受理平臺的各個(gè)子系統(tǒng)中。
不動產(chǎn)業(yè)務(wù)辦理柜面簽署系統(tǒng)的簽署模塊與業(yè)務(wù)服務(wù)器相連,由客戶端服務(wù)器、身份認(rèn)證服務(wù)器、協(xié)同服務(wù)器相連構(gòu)成子系統(tǒng),同時(shí)客戶端服務(wù)器與不動產(chǎn)業(yè)務(wù)辦理柜面簽署設(shè)備連接。 客戶端服務(wù)器與協(xié)同服務(wù)器是實(shí)現(xiàn)數(shù)字簽名運(yùn)算的重要組成部分,身份認(rèn)證服務(wù)器提供了對用戶身份的核驗(yàn)甄別服務(wù)。 本文基于這3 個(gè)服務(wù)器,設(shè)計(jì)了一種基于SM2 的協(xié)同簽名方案,將簽名密鑰分割,在未來對不動產(chǎn)業(yè)務(wù)升級遠(yuǎn)程不見面簽署服務(wù)[14]時(shí),可以實(shí)現(xiàn)服務(wù)器的復(fù)用。
不動產(chǎn)業(yè)務(wù)辦理柜面簽署系統(tǒng)的流程設(shè)計(jì)如圖3 所示。 可以根據(jù)上述硬件設(shè)計(jì)的劃分模式將整體流程劃分為兩部分。
圖3 系統(tǒng)流程Fig. 3 System process design
第一部分由用戶發(fā)起業(yè)務(wù)申請開始。 柜面工作人員在業(yè)務(wù)系統(tǒng)中根據(jù)用戶需要辦理的業(yè)務(wù)類型創(chuàng)建簽署任務(wù),并登記必要信息,業(yè)務(wù)系統(tǒng)會提取業(yè)務(wù)信息創(chuàng)建待簽文書模板、生成用戶口令Pin。 業(yè)務(wù)系統(tǒng)最終將簽署任務(wù)及簽署必要數(shù)據(jù)推送至客戶端服務(wù)器中,等待用戶喚醒。
第二部分由用戶發(fā)起簽署開始。 用戶使用柜面簽署設(shè)備進(jìn)行身份認(rèn)證,身份認(rèn)證成功后喚醒對應(yīng)簽署任務(wù),此時(shí)客戶端服務(wù)器將待簽文書展示于柜面簽署設(shè)備中,并派生客戶端私鑰分量與協(xié)同服務(wù)器進(jìn)行協(xié)同密鑰運(yùn)算,計(jì)算用戶密鑰對。 當(dāng)用戶確認(rèn)待簽文書無誤并手繪簽名提交后,客戶端服務(wù)器將與協(xié)同服務(wù)器協(xié)同運(yùn)算,輸出對文書的數(shù)字簽名??蛻舳朔?wù)器驗(yàn)證簽名通過后,將輸出數(shù)據(jù)及手繪簽名圖樣合成至待簽文書中,得到已簽署文書并返回至業(yè)務(wù)服務(wù)器。
為實(shí)現(xiàn)不動產(chǎn)業(yè)務(wù)辦理柜面無紙化簽署系統(tǒng)中的不動產(chǎn)文書簽名服務(wù)功能,設(shè)計(jì)了一種基于SM2的協(xié)同簽名方案。
方案的參與者包括:客戶端U(用戶)、身份認(rèn)證服務(wù)器IS、協(xié)同服務(wù)器CS。 其中,身份認(rèn)證服務(wù)器存儲了代表IS 身份的公私鑰對(PIS,KIS) ,并通過安全信道將公鑰PIS發(fā)送至客戶端U 和協(xié)同服務(wù)器CS。 方案主要功能包括用戶身份驗(yàn)證、協(xié)同密鑰生成、簽名生成。 方案實(shí)現(xiàn)步驟如下:
(1)客戶端將用戶面部識別及id 等數(shù)據(jù)發(fā)送到身份認(rèn)證服務(wù)器(IS)進(jìn)行身份認(rèn)證。
(2)IS 向客戶端U 和協(xié)同服務(wù)器(CS)返回認(rèn)證結(jié)果。
(3)客戶端U 使用用戶口令及身份認(rèn)證信息派生私鑰分量。
(4)客戶端U 與CS 協(xié)同計(jì)算公鑰P。
(5)客戶端U 與CS 共同等待簽署的文書運(yùn)算數(shù)字簽名σ。
用戶身份認(rèn)證主要由客戶端和身份認(rèn)證服務(wù)器協(xié)作完成。 具體流程如下:
(1)柜面業(yè)務(wù)系統(tǒng)根據(jù)用戶申報(bào)信息創(chuàng)建簽署任務(wù)、生成用戶口令Pin, 并推送至柜面簽署設(shè)備(客戶端U)中。 用戶使用客戶端,通過活體面部識別采集面部信息fu,使用PIS加密面部信息fu、簽名任務(wù)流水號idtask和用戶id,并向身份認(rèn)證服務(wù)器IS發(fā)送認(rèn)證請求Re qver(En cPIS(id,fu,idtask))。
(2)IS 收到認(rèn)證申請后,使用私鑰KIS解密,將獲得的用戶id 和面部信息fu與公安公民身份信息庫進(jìn)行比對,并生成比對結(jié)果fv。
IS 根據(jù)認(rèn)證結(jié)果向客戶端U 和協(xié)同服務(wù)器CS反饋認(rèn)證通知,若認(rèn)證不通過,通知客戶端U 和協(xié)同服務(wù)器CS 終止簽署,若認(rèn)證通過則會進(jìn)行如下操作:
(1)IS 使用單項(xiàng)散列函數(shù)計(jì)算H(id‖idtask‖fv)。
(2)以H(id‖idtask‖fv) 為消息,使用私鑰KIS對其計(jì)算簽名Sig nIS(H(id‖idtask‖fv))。
(3)將H(id‖idtask‖fv)、SignIS(H(id‖idtask‖fv)) 發(fā)送給客戶端U 及協(xié)同服務(wù)器CS。
客戶端和協(xié)同服務(wù)器使用PIS驗(yàn)證簽名SignIS(H(id‖idtask‖fv)),若驗(yàn)證成功繼續(xù)簽署流程,否則終止簽署。
客戶端U 驗(yàn)證SignIS(H(id‖idtask‖fv)) 成功,即用戶身份驗(yàn)證成功后,需要完成簽名前的準(zhǔn)備工作:選定SM2 橢圓曲線參數(shù)生成橢圓曲線; 計(jì)算自身的密鑰分量。 具體實(shí)現(xiàn)過程如下:
(1)選取橢圓曲線E,方程為y2=x3+ax+b,其中a,b∈Fq且滿足4a3+27b2≠0。 選擇E上階為n的基點(diǎn)G=(xG,yG),n為大于2 160 的素?cái)?shù);選取消息長度為v比特的Hash 函數(shù)Hv; 選取輸出為256 b 比特串的Hash 函數(shù)H256:{0,1} →ZG。
(2)將用戶口令Pin視為PBE 算法中的“鹽”,與SignIS(H(id‖idtask‖fv)) 共同作為參數(shù)輸入到密鑰派生算法中,生成一個(gè)符合SM2 密碼算法規(guī)則的密鑰字符串du。
協(xié)同密鑰由客戶端U 和協(xié)同服務(wù)器CS 共同生成,實(shí)現(xiàn)過程如下:
(1)客戶端U 使用密鑰字符串dU作為私鑰分量,并計(jì)算Pu=[du]G, 將Pu發(fā)送給協(xié)同服務(wù)器CS。
(2)協(xié)同服務(wù)器CS 接收到Pu后,生成隨機(jī)數(shù)dc,并計(jì)算P=[dc]PU-G,P作為公鑰公開。
如圖4 所示,用戶在客戶端U 查閱文書并手繪簽名后,將與協(xié)同服務(wù)器CS 進(jìn)行簽名運(yùn)算,生成數(shù)字簽名σ。 具體運(yùn)算步驟如下:
圖4 簽名運(yùn)算過程Fig. 4 Signature calculation process
(1)客戶端U 計(jì)算用戶雜湊值:Zu=H256(ENTLU‖I DU‖a‖b‖xG‖yG‖xp‖yp),置其中M為待簽名的文書。 計(jì)算e=Hv。
(2)客戶端使用隨機(jī)數(shù)發(fā)生器生成隨機(jī)數(shù)k1∈[1,n-1],計(jì)算變量Q1=[k1]G,將Q1、e發(fā)送給協(xié)同服務(wù)器CS。
(3)CS 使用隨機(jī)數(shù)發(fā)生器生成兩個(gè)隨機(jī)數(shù)k2、k3∈[1,n-1],計(jì)算變量Q2=k-12Q1和橢圓曲線點(diǎn)(x,y)=k3G+k3Q2。
(4)CS 計(jì)算r=(e+x)modn,使用r計(jì)算簽名分量和簽名分量后,將r、S1、S2發(fā)送到客戶端U。
(5)客戶端U 收到CS 發(fā)送的r、S1、S2后,計(jì)算簽名得到簽名σ=(r,S)。
(6)客戶端U 使用公鑰P=[dc]PU-G驗(yàn)證簽名σ,如果驗(yàn)證成功則輸出簽名σ=(r,S)
3.7.1 簽名生成的正確性
協(xié)同密鑰由P=[dc]PU-G生成,則有:
協(xié)同服務(wù)器CS 計(jì)算簽名分量為:
根據(jù)客戶端U 計(jì)算簽名S可得:
此時(shí),可設(shè)簽名σ=(r,S) 是由私鑰d=du dc-1modn和隨機(jī)數(shù)k=k1k-12k3+k3modn生成的SM2簽名,滿足S=(1-d)-1(k-rd)modn。 因此,方案生成的簽名σ=(r,S) 是正確的。
3.7.2 簽名驗(yàn)證的正確性
根據(jù)客戶端U 計(jì)算橢圓曲線點(diǎn)(x,y):
驗(yàn)證者想要驗(yàn)證簽名,需要使用收到的簽名σ=(r′,S′) 和公鑰P, 計(jì)算橢圓曲線點(diǎn)(x′,y′)=[S′]G+(r′+S′)P,則有:
如果簽名σ=(r,S) 正確,從上式可以得知x=x′,驗(yàn)證者只需要通過計(jì)算R=(e+x′)modn和r是否相等來判斷簽名驗(yàn)證是否成功。
為驗(yàn)證方案,搭建了硬件環(huán)境進(jìn)行實(shí)驗(yàn)測試,硬件參數(shù)配置見表1。
表1 硬件參數(shù)Tab. 1 Hardware parameters
程序構(gòu)建基于bcprov-jdk 加密解密庫,主要通過業(yè)務(wù)模擬的方式對系統(tǒng)進(jìn)行功能測試,同時(shí)在測試中對采用的SM2 協(xié)同簽名方案進(jìn)行耗時(shí)記錄,用于性能分析。
根據(jù)業(yè)務(wù)流程設(shè)計(jì),簽署任務(wù)需要在創(chuàng)建階段采集必要的業(yè)務(wù)信息,其中包括業(yè)務(wù)類型、不動產(chǎn)登記信息、辦理人身份資料等。 合同文書簽署模板需要根據(jù)這些必要信息進(jìn)行創(chuàng)建,并推送至客戶端服務(wù)器開始簽署。
簽署任務(wù)推送至客戶端服務(wù)器后,用戶使用柜面設(shè)備進(jìn)行業(yè)務(wù)辦理,柜面設(shè)備簽署界面如圖5 所示,用戶確認(rèn)簽署并手繪簽名后,系統(tǒng)進(jìn)行簽名運(yùn)算,生成簽名后客戶端服務(wù)器會對所生成簽名進(jìn)行驗(yàn)證。 若驗(yàn)證通過,則合成并輸出如圖6 所示的已簽署文書。
圖5 柜面設(shè)備簽署界面Fig. 5 Counter equipment signing interface
圖7 反映了本文SM2 協(xié)同簽名方案各階段的性能表現(xiàn)。 在身份認(rèn)證階段主要考慮身份認(rèn)證服務(wù)器IS 生成服務(wù)器簽名SignIS(H(id‖idtask‖fv)) 的耗時(shí),認(rèn)證通知階段主要考慮客戶端U 和協(xié)同服務(wù)器CS 對SignIS(H(id‖idtask‖fv)) 的驗(yàn)證耗時(shí)。
圖7 本文方案各階段運(yùn)算耗時(shí)Fig. 7 Operation time consumed in each stage
圖8 展示在密鑰生成階段、簽名生成階段客戶端服務(wù)器與協(xié)同服務(wù)器的耗時(shí)情況,同時(shí)將兩者與原始SM2 數(shù)字簽名方案的性能表現(xiàn)進(jìn)行對比。
圖8 密鑰、簽名生成性能對比Fig. 8 Comparison of key and signature generation performance
總體來看,本文方案在密鑰生成階段客戶端及協(xié)同服務(wù)器性能表現(xiàn)接近原始SM2 簽名方案,在具有更好性能的服務(wù)器架構(gòu)中,協(xié)同服務(wù)器的簽名運(yùn)算速度能夠進(jìn)一步得到縮減。
將本文所提簽名方案與文獻(xiàn)[15]和文獻(xiàn)[9]中提出的SM2 協(xié)同簽名方案進(jìn)行計(jì)算效率對比,結(jié)果見表2。 定義Exp 表示一次標(biāo)量點(diǎn)乘運(yùn)算或模冪運(yùn)算,對于形如的多點(diǎn)乘法等同于一次點(diǎn)乘運(yùn)算所需時(shí)間,加法運(yùn)算所需計(jì)算量忽略不計(jì)。 文獻(xiàn)[9]方案中使用了零知識證明,但在半誠實(shí)模型下,通信雙方誠實(shí)計(jì)算可以省略零知識證明,故在對比時(shí)只考慮在半誠實(shí)模型下的計(jì)算效率。
表2 計(jì)算效率對比Tab. 2 Calculation efficiency comparison
通過對比分析,本文方案只需要2 輪通信,在密鑰生成階段通信雙方都只需要1Exp,總體優(yōu)于文獻(xiàn)[9]和文獻(xiàn)[15]中所提方案。 在簽名生成階段中,客戶端服務(wù)器(參與方A)需要2Exp,優(yōu)于文獻(xiàn)[15]方案,將更多的計(jì)算消耗放在硬件性能更好的協(xié)同服務(wù)器(參與方B)中,轉(zhuǎn)移了部分運(yùn)算壓力。 由此可見,本文方案在計(jì)算效率上具有較好表現(xiàn)。
圖9 展現(xiàn)了不動產(chǎn)業(yè)務(wù)辦理柜面無紙化簽署系統(tǒng)與手工文書簽署的在不同業(yè)務(wù)數(shù)量下平均工作效率對比結(jié)果。
圖9 業(yè)務(wù)辦理效率對比Fig. 9 Comparison of business handling efficiency
在實(shí)際調(diào)研中發(fā)現(xiàn),不動產(chǎn)柜面業(yè)務(wù)辦理手工文書簽署方式在材料、文書的核實(shí)、打印、整理、收納上耗費(fèi)大量的時(shí)間和溝通成本,導(dǎo)致柜面工作效率無法提高。 不動產(chǎn)業(yè)務(wù)辦理柜面無紙化簽署系統(tǒng)在實(shí)際使用在文書處理、保存上具有顯著優(yōu)勢,不但縮短了業(yè)務(wù)辦理時(shí)長,提高了柜面工作效率,同時(shí)也實(shí)現(xiàn)對合同文書的電子化歸檔和整合,規(guī)避了紙質(zhì)文書歸檔保存時(shí)可能出現(xiàn)管理不善的風(fēng)險(xiǎn)。 因此,本方案在柜面無紙化簽署場景下具有良好的應(yīng)用效果。
針對不動產(chǎn)柜面業(yè)務(wù)辦理手工文書簽署向柜面無紙化簽署轉(zhuǎn)變而帶來的簽名人身份認(rèn)證和密鑰安全問題,本文方案提出了一種不動產(chǎn)業(yè)務(wù)辦理柜面無紙化系統(tǒng),在系統(tǒng)設(shè)計(jì)中考慮了后續(xù)不動產(chǎn)業(yè)務(wù)升級優(yōu)化預(yù)留了兼容空間,并根據(jù)系統(tǒng)設(shè)計(jì)了一種基于SM2 的協(xié)同簽名方法,在方案流程融入了身份認(rèn)證服務(wù),采用門限密碼學(xué)思想將簽名所需要的密鑰分割在客戶端及協(xié)同服務(wù)器中,提高了密鑰存儲的安全性。 此外,方案結(jié)合PBE 基于口令密鑰算法的思想,提升了客戶端私鑰分量的安全性,在實(shí)際場景中具有良好的應(yīng)用效果。
由于不動產(chǎn)登記交易業(yè)務(wù)的特殊性,未來研究方向是將電子公證技術(shù)與系統(tǒng)進(jìn)行融合升級,提升電子文書法律效力,減少辦理人業(yè)務(wù)辦理成本。