iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0

「快點簽名啦。」


今天要來介紹數位簽章。
首先澄清一點,數位簽章是以數學運算的方式進行的簽章,「簽章」只是模擬簽章的行為與功能的詞。
我們刷卡消費時在電子版上簽的那個東西並不叫數位簽章。

數位簽章是靠公鑰密碼學來實現的,我們之前講過他的原理,
用私鑰加密,用公鑰解密。
而我們要做到的就是可以讓人確認資訊來源、確認是否被修改。
而另一方面,數位簽章的簽署人無法否認所為,因為只有他可以簽出這樣的數位簽章。

那麼今天就來實際說一下怎麼操作。

RSA數位簽章

RSA的數位簽章非常簡單,就是直接將RSA的算法顛倒過來,用私鑰加密用公鑰解密。
這裡就不再贅述。

DSA(digital signature algorithm)

這裡指的DSA是數位簽章演算法,
不是 Driving Safety Alerting 也不是 Democratic Socialists of America,
我室友修的資料結構與演算法那也叫 DSA。

我要講的是一種數位簽章的演算法。

密鑰建立

  1. 選定一個1024位元的質數 p

  2. 找一個160位元的 q 整除 ( p-1 )

  3. 尋找一個整數 https://chart.googleapis.com/chart?cht=tx&chl=%5Calpha 使得 https://chart.googleapis.com/chart?cht=tx&chl=ord(%5Calpha)%3Dq

    方法是尋找https://chart.googleapis.com/chart?cht=tx&chl=%5Calpha%3Da%5E%7B%5Cfrac%7Bp-1%7D%7Bq%7D%7D%5Cneq1(mod%20p)

    這裡會用到費馬小定理跟循環群的概念

  4. 再選擇一個 d 介於0跟q之間。

  5. 計算https://chart.googleapis.com/chart?cht=tx&chl=%5Cbeta%3D%5Calpha%5Ed%20%20mod%20q

經過上面的運算就建立好了密鑰,

其中公鑰是(p, q, https://chart.googleapis.com/chart?cht=tx&chl=%5Calpha, https://chart.googleapis.com/chart?cht=tx&chl=%5Cbeta),私鑰是 d。

簽章

  1. 臨時密鑰(ephemeral key)https://chart.googleapis.com/chart?cht=tx&chl=k_E 介於 0 到 q 之間。
  2. 計算 https://chart.googleapis.com/chart?cht=tx&chl=r%3D(%5Calpha%5E%7Bk_E%7D(mod%20p))(mod%20q)
  3. 計算https://chart.googleapis.com/chart?cht=tx&chl=s%3D(SHA(x)%2Bdr)k_E%5E%7B-1%7D%20mod%20%20%20q ,其中 x 是要簽章的訊息。

這裡的SHA( ) 就是雜湊函數,我們簽章的對象是訊息的雜湊值,這樣可避免過長的結果。

於是簽章的結果就是( r, s ),總共有320位元。

驗章

  1. 計算https://chart.googleapis.com/chart?cht=tx&chl=w%3Ds%5E%7B-1%7Dmod%20q

  2. https://chart.googleapis.com/chart?cht=tx&chl=u_1%3DwSHA(x)%20%20m*od%20q

  3. https://chart.googleapis.com/chart?cht=tx&chl=u_2%3Dw*r%20(mod%20q)

  4. https://chart.googleapis.com/chart?cht=tx&chl=v%3D(%5Calpha%5E%7Bu_1%7D*%5Cbeta%5E%7Bu_2%7D)%20(mod%20q)

如過運算結果 v 跟 r 相同,那就確認是本人所簽署。
今天先介紹DSA演算法,算法相較於之前都較複雜一些,
有興趣的讀者可以試著證明 DSA 的正確性。


明天我們將來看看由bitcoin所使用的數位簽章方法,ECDSA,橢圓曲線數位簽章。

圖片來源:
https://twitter.com/maj33dullah/status/1401605392195522566
https://memegenerator.net/instance/58480943/correction-guy-stop-look-at-my-beautiful-e-signature


上一篇
DAY 18- 雜湊函數 SHA-256
下一篇
DAY 20-數位簽章-ECDSA
系列文
學密碼學也猜不到你的手機密碼30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言