鄭建華院士:移動端簽名私鑰保護-基于STOP加密保護簽名私鑰的SM2簽名方案|密碼豐會演講系列
01 背景及意義
隨著智能終端技術、移動互聯技術和云計算技術的發展,越來越多的互聯網絡應用開始遷往智能移動終端,如:用于手機終端的支付寶、微信、網銀等,使得用戶在移動過程中,隨時隨地的都可以使用移動終端進行支付、購物、發送網絡消息等。為了保障網絡消息的可認證性和不可抵賴性,網絡各種交易消息都需要用戶簽名進行保護。

一旦攻擊者控制了移動端,就可以獲得用戶私鑰,從而具備偽造簽名的全部能力,這是非常大的一個安全隱患。因此,用戶用于簽名的私鑰直接存儲于智能移動終端上并不安全。

為了解決上述私鑰使用的安全問題,門限簽名思想被提出。門限簽名,即存在兩個及以上設備分別存儲私鑰的一部分,數字簽名由參與方協同完成,任何參與方都無法掌握完整私鑰,這種方案有效地保證了在單個設備被惡意實體控制的情況下用戶私鑰的安全性。

現有的移動端簽名私鑰保護方案采用的是分布式簽名方案。該方案中簽名各方分別持有自己的私鑰,與秘密共享簽名方案不同的是,該簽名方案在簽名時不需要恢復私鑰,而是通過多個實體用自己持有的私鑰交互協同進行簽名,保證了在簽名過程中沒有泄露各方持有的私鑰信息。
由于涉及多方參與,執行效率較低,或因參與方交互次數過多而導致計算和通信代價相對較大。因此,設計一個移動端用戶可自主簽名,性能高且能保證私鑰安全的簽名方案是現在需要解決的問題。
現有方案的不足有以下幾點:
1、分布式技術以系統化的方式運行,如秘密共享簽名和門限簽名方案中的各個參與方分散了安全風險,但是由于涉及多方參與,執行效率較低;
2、因參與方交互次數過多而導致計算和通信代價相對較大;
3、引入了其他參與方的存在,簽名方不能自主的進行簽名,需要多方協同合作才能進行簽名,使用極其不便;
4、參與方共謀作惡的方式也是需要考慮的安全問題;
5、門限簽名方案中無法限制實體的行為,可能將惡意攻擊者引入團體內部,多方參與的密碼學協議無法獲得之前密碼學協議的安全強度。
02 基礎知識簡介
同態簽名方案介紹
基于SM2簽名算法,提出了一個用戶可自主簽名,性能高且能保證簽名私鑰安全性的簽名方案:SM2簽名方案。
(1)初始化:給定安全參數λ,生成橢圓曲線參數并輸出;
(2)密鑰生成:給定參數后,選擇隨機數d作為私鑰,計算pk=[G]d作為公鑰;
(3)簽名算法:給定參數,私鑰以及消息,簽名者將執行以下步驟:
輸入為待簽名信息e,一般為消息的Hash值。
1) 使用隨機數發生器產生隨機數k∈[1,n-1]
2) 計算橢圓曲線上的點[k]G=(x,y)
3)計算r=e+x mod n,若r=0或r+k=n,則返回第1步
4)計算s=(1+dA)-1(k-rdA) mod n,若s=0,則返回第1步
5) 公布e的簽名(r,s)
(4)驗證算法:
1)輸入為信息e的簽名(r,s)
2)檢測r∈[1,n-1]與s∈[1,n-1]是否成立,若一項不成立則驗證失敗
3)計算t=r+s mod n,若s=0,則驗證失敗
4)計算橢圓曲線上的點(x,y)= [s]G+[t]PA
5)計算R=e+x mod n,若R等于r,則驗證成功;否則,驗證失敗。
SOTP技術
利用SOTP技術能夠構建一個安全的保密通信系統,通過密碼技術,實現了“一人一密”,能夠像公鑰體制一樣,可以實現身份認證和密鑰協商的功能。
SOTP技術解決了移動端密的雙向認證、密鑰協商、保密通信等眾多安全問題,通過一種全新的思路提供了一種安全可信的移動數據通信方法。
03 SM2同態簽名方案
方案介紹
基于SOTP加密保護簽名私鑰的SM2簽名方案
本簽名方案利用SM2算法原理,實現了移動端保存加密保護私鑰,并且用戶仍能夠向往常一樣使用SM2的簽名生成與驗證算法。
1、用戶私鑰全生存周期加密保存,解決了私鑰的安全問題;
2、從用戶角度來看,簽名與驗證算法與SM2算法一致,用戶感覺不到是使用了加密了的私鑰,還是如SM2那樣的原型私鑰。這種能夠透過加密私鑰的簽名與驗證算法具備同態計算模式特點。
主要思想
我們的目的是保護用戶簽名私鑰d。根據密碼學原理,至少需要與d 同級別且不相關的大整數u,來設計一個可逆函數f(d,u),能夠將d均勻的映射到(0,n)之間的大整數,且不會因函數結構而泄露d的信息。
由SOTP服務中心利用各用戶的Z密碼算法生成u,用戶可以以口令及其他形式參與u的生成。
基于SOTP加密保護簽名私鑰的SM2同態簽名算法,能夠在私鑰加密保護的條件下,由用戶自主獨立生成簽名,任何人也能夠在SOTP服務中心的幫助下,自主驗證簽名。
私鑰保護算法
用戶和服務器雙方認證通過后,基于SOTP技術的Z算法協商生成當前亂數u,其中服務器是不知道私鑰d的,服務器僅與用戶協商產生,用戶自己加密私鑰d。
用戶加密私鑰
用戶使用函數f(d,u)來加密私鑰,用戶在本地保存加密后的私鑰和加密私鑰時的時間戳T。假設函數f(d,u) = d+u mod n 操作,那么d' = d+u mod n
隨機數u周期性更新
用戶可以定期或依據需求不定期地更新加密私鑰的亂數,私鑰保護不是固定不變的,攻擊者無法使用分析手段來獲取私鑰信息,不斷變化的加密保存使得攻擊者非法獲取到加密私鑰也會很快過時失效。
簽名生成算法
除了私鑰加密以外,其他步驟和SM2簽名算法一致。d' = f(d,u),用d'代替d來簽名。
簽名驗證算法
用戶簽名時用的是加密后的私鑰,對于其他用戶驗證該用戶簽名時,需要向服務器請求,服務器對原始公鑰進行預處理后發送給驗簽者,驗簽者計算得到驗證簽名的公鑰。
服務器恢復出加密私鑰d時的亂數u ,計算[u]G,連同原始公鑰pk一同發送給驗簽者,驗簽者計算驗簽公鑰pk' = [u]G + pk mod n。
04 簽名方案的安全性
私鑰的安全性
1、加密函數f(d,u)不會泄漏d的信息;
2、用戶終端不會泄漏私鑰d的信息,終端只保存加密后的私鑰,即使惡意攻擊者控制了終端,亂數u是定期更新的,且更新周期快,得到了加密私鑰也會很快過時失效;
3、服務器端不會泄漏私鑰d的信息,服務器是誠實且好奇的,服務器不能通過已有信息、簽名、公鑰等信息得到有關私鑰d 的任何信息;
4、加入SOTP服務器沒有降低簽名的安全水平同時也未泄漏私鑰信息。
簽名的自主性
1、基于SOTP加密保護簽名私鑰的SM2簽名算法保證用戶能夠完全自主地使用已加密保護的私鑰對需要簽名的消息進行簽名,安全等級與SM2簽名算法相同。與門限簽名和秘密共享簽名的方案相比,本方案能夠自主簽名,且沒有降低協議的安全強度;
2、其他用戶能夠經SOTP服務器預處理后對簽名進行自主地驗證。
防抵賴性
1、服務端通過亂數u提供用戶A當時的驗證公鑰Pk',協助驗證者進行簽名驗證;
2、但是SOTP服務端不直接掌握用戶的私鑰,并且根據ECDLP的數學特性,也不能計算出用戶私鑰;
3、用戶的簽名是用戶自主完成的;
4、簽名系統符合數字簽名的技術規范;
5、簽名計算過程的防抵賴性,與SM2簽名算法相同,由橢圓曲線離散對數問題(ECDLP)的數學特性保證。
防假冒防篡改性
基于SOTP加密保護簽名私鑰的SM2簽名的生成過程與SM2簽名算法相同,完全可以橢圓曲線離散對數問題(ECDLP)的數學特性保證:未知保護私鑰的條件下,無法生成簽名,也無法篡改簽名。