PKI 小檔案

看完了秘鑰, 再來看一種公開鑰匙的加密方法 – PKI (Public key infrastructure). PKI 和 public key algorithm 加密並不一樣, 主要的差別在於 CA (certification authority) 的有無.

先來看一般的公開金鑰加密方法 (個人一直不懂的是, 為何沒事要把鑰匙取名叫金鑰, 純金又不能做鑰匙?).

如果仍然用 A 和 B 來舉例, 此時還需要其他的人或物介入其中. 一個是公正的第三人 C, 另外一個是數位憑證.

當 A 想要在 B 證券公司網路下單,  此時 A、B 不但要彼此檢查對方的身分, 也要防止下單資料被駭客修改了.

為了辨識資料是否被修改, 需要用到雜湊 (hash) 的技術. 首先把文件經過雜湊演算法計算, 產生一組固定長度的指紋 (fringer print) 或是數位摘要 (digital digest), 比方說 128 或 160 bits. 此時, 只要文件的內容經過修改, 就很難得到一模一樣的指紋.

當然, 這個指紋的傳送, 也不適合適明文, 它也是要加密的. 經過 A 的 private key 以 RSA 之類的演算法加密之後, digital digest 就變成了 digital signature (數位簽章).此時 A 已經準備好要傳送的明文文件, 以及數位簽章, 接著就可以透過 share private key (所謂共同金鑰) 加密 (如 DES 演算法).

不過, 此時 B 公司並不一定會保管與 A 共有的 share private key . 畢竟 B 公司可能有很多很多的客戶, 要是幫每個客戶、每筆交易都存一隻鑰匙的話, 那也挺麻煩的. 鑰匙可以重複使用的話, 感覺又太不保險了.

所以 B 公司希望 A 乾脆即時產生一隻share private key , 然後一起送給 B, 這樣就省事了. 當然, 鑰匙不能就這樣大剌剌地傳過來, 順便加個密吧! 因此 A 要用 B 公司指定的 B public key 來加密 share private key (如 RSA 演算法)

當 B 公司收到資料之後, 首先用 B 的 private key 來解 B 的 public key 加密的 share private key. 得到 share private key之後, 再用它來解 DES, 得到 A 的明文和 A 的數位簽章.

接著 B 公司再用 A 的 public key 來解數位簽章, 得到數位摘要. 這個數位摘要就可以用來判斷 A 的文件, 是否遭到竄改.

到這裡為止, A、B 雙方已經可以互相溝通了. 只要 A 和 B 都有 private key、public key 就行.

繼續閱讀「PKI 小檔案」

Symmetric Cryptography 小檔案

Symmetric Cryptography 中文應該翻譯作 “對稱性密碼", 又叫做 “secret key cryptography" (秘鑰密碼). 顧名思義, 這個加密方法需要一把秘鑰,只有傳遞/接收訊息的人知道這個秘鑰是甚麼? 另外, 既然是對稱, 就表示加密或解密的人都是使用同一把鑰匙.

通訊的方法大致如下:

先定義一把秘鑰叫做 Keyab, 這是 A 和 B 所分享的秘密 (shared secrete).

A 先連絡上了 B.  

但 B 要知道這個人是不是 A?

所以送出測試訊息 (challenge) Tb 給 A, 意思是, 你用 Keyab 來加密看看?

於是 A 就把  Tb 加密成 E(Tb) 送給 B.

B 把 E(Tb) 解開, 發現果然和他送出去的 Tb  一樣, 那麼 B 就可以相信 A 了.

不過 A 可以相信 B 嗎? 萬一  B 是個假的, 收到甚麼都說好呢? 所以還要讓 A 送出 challenge Ta, 考驗 B 的加密能力.

B 把 Ta加密成 E(Ta) 送還給 A 驗證, 那麼 A 就可以知道 B 至少是擁有同一隻 keyab 的通訊對象了. 

這個系列的加密方法有 DES 和 IDES 等幾種.

繼續閱讀「Symmetric Cryptography 小檔案」