密碼學複習筆記:數字簽名(digital signature)

數字簽名就是類似電子版的手寫簽名,首先你要明確你籤的東西,不能說你簽在購房合同上的簽名明天讓別人剪下來貼在欠條上了;其次,這個簽名只有你能簽出來,就比如你的字體,是你籤的就是你籤的,你抵不了賴,別人也僞造不了;當然,簽名要簡單,不能說爲了證明這是你出得合同,你手寫再把上面抄一遍,這個不實際,在電子版中,如果太長或者太難算,那就直接等於增加了網絡或CPU的負擔,影響用戶體驗,這樣你的安全產品是沒人用的。以上是對於簽名者,對於其他人呢,你的簽名要好認,你給我出個數獨,解出來之後答案再拿到什麼什麼東西里算之類的,這樣的簽名就不合適;但同時,你的簽名還不能讓別人能夠輕易僞造;還有一點,就是得好存,怎麼說呢,數字簽名經常用於一些權限的驗證,比如你買了某個公司的軟件,你有好多終端,如果你的數字簽名不好存,那我就只能用這個獲取DS的電腦使用你的服務,這樣影響用戶體驗。

說了這麼多DS的要求,下面說一下實現DS的兩種方法,RSA和DSS。

RSA Approach

sender先把m哈希後,用自己的kdk_d加密,然後發送m||kd(h(m))k_d(h(m))給receiver,然後receiver利用sender的公鑰和公開的hash function來驗證,這個方法我沒有進行驗證,但是我覺得一直用同一套key的話,如果一直在被passive attack,你的secret key可能是會泄漏的(只是個想法 懶癌有空會去想這個問題的 看不完了 別學我別學我。。。)

DSS Approach

這個厲害,這裏有兩種key,大家(global)公有的key是p,q和g,p取很大,長度在512到1024之間;(p-1)要能被q整除,並且q要是一個160bits的數,爲啥160呢,因爲發過去的簽名要用於partition,要用q參與驗證部分的計算,爲啥要整除呢,因爲g=h(p1)/qg=h^{(p-1)/q},h是ZpZ_p中隨機的,這就是global public key,是屬於某個group纔有的,如果你不屬於這個group又想sniff他們的信息,好的,第一步你先把這三個數算出來吧,512到1024bits哦!
然後是某個用戶的key,y=gx mod py=g^x\ mod\ p,x就是private key,y是public key,像不像Elgalmal PK cryptosystem?DSS好像就是根據E signature scheme改的。和平時不一樣的是,DSS又加了一個隨機的key k,這是sender隨機產生的,sender也不會告訴別人。

現在,假如你是這個group的一員,你所擁有的東西就是(p,q,g,y),當然y是你想驗證目標的public-key,如果它發給你了一個數字簽名M=m||s||r,那麼你所有的東西就是[(p,q,g),(y),(m,s,r),(h(m))],這個h(m)就是特定的hash function啦,當然你也知道你的s和r的計算方法,r=gk mod qr=g^k\ mod\ q, s=[k1(h(m)+xr)] mod qs=[k^{-1}(h(m)+xr)]\ mod\ q,你怎麼驗證這條簽名呢?

我們要知道,sender不同於其他人的地方其實就是它知道k和x,而它的k和x會和它post給大家的y有關,如果sender能夠成功的把k和x加入到s和r中,我用y能驗證s和r確實是用x進行加密的,因爲我可以用y解開x的部分(當然你得不到這個值),這樣這兩個未知數兩個方程的就變成了一個未知數兩個方程,因爲y帶有x的信息,可以消掉一個未知數,然後我就可以驗證兩個方程共同含有的未知數是否一致了,雖然你也無法計算出k的值。這就是我對DSS的理解。

本着上面的想法(反正我是這麼瞎想的),取s的倒數得到(s1)=kh(m)+xr mod q(s^{-1})=\frac{k}{h(m)+xr}\ mod\ q,爲了得到k,k=(s1)×[h(m)+xr]=(s1)×h(m)+(s1)×xrk=(s^{-1})\times [h(m)+xr]=(s^{-1})\times h(m)+(s^{-1})\times xr,這裏省略了mod是因爲kZqk\in Z_q,現在你要麼直接算k然後用r和q把k算出來,要麼就是把k帶到r的公式裏看看和r相不相等,反正我是選第二種,discrete logarithm還是留個大神們吧!這樣你把k帶入r的公式裏就又gs1h(m)×g(s1)xrg^{s^{-1}h(m)}\times g^{(s^{-1})xr},那x是人家的private key怎麼辦!別慌,我們還有public key,這樣r=gs1h(m)×y(s1)r mod qr'=g^{s^{-1}h(m)}\times y^{(s^{-1})r}\ mod\ q,你把r和r’對比一下,如果一樣,那就驗證成功了!

參考
Prof.Ding 的ppt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章