2015年8月4日 星期二

何謂簽章?


數位簽章原理[1]

可配合下面的圖來看

簽章基本原理是這是建立於PKI (Public Key Infrastructure)的環境

關於PKI可以看這個網頁的基本介紹: http://www.synnex.com.tw/asp/fae_qaDetail.asp?topic=FAE&group=&parent=&classifyid=01534&seqno=17477

首先要先掌握好一組key pair(private key and public key) 一端會用private key來做加密; 而且只有握有對應的public key的接收端才有辦法解密

所謂簽章就是一端先算出一個digest(摘要), 然後再用私鑰(private key)把這digest做加密;

另外一端則是用對應的公開金鑰(public key)去解出digest, 然後再用相同的演算法重算一次digest, 然後比較兩者是否相同 如果相同代表簽章確認OK! 東西沒有被竄改過

算出digest(摘要)有很多種方法 ex. md5sum, SHA, MAC, HMAC …. 詳情請參閱密碼學相關書籍或者網頁

以MD5而言,會有下面截圖這種結果,你可以想像成算出來的digest就是一種指紋的概念,不同的人指紋都是無一無二的,而且這運算是不可逆的(無法從digest反推回原本的內容 這很重要!! 發明這種演算法的真是天才)


這邊看到的 ”c464ac739be5f332f5991adc5d731019” 就是透過MD5這種hash algorithm所算出的digest

參考網頁:
[1] http://david50.pixnet.net/blog/post/28798505-%5B%E7%AD%86%E8%A8%98%5Ddigital-signature-%E6%95%B8%E4%BD%8D%E7%B0%BD%E7%AB%A0