2010年9月11日星期六

白話 「非對稱式加密/解密」 Asymmetric Cryptography

[2012/3/7 重新改寫]

asymmetric cryptography 什麼是 Asymmetric Cryptography? 不必讀英文文章, 看圖就很清楚了。 右圖出自 ScienceBlogs, 作者 Mark C. Chu-Carroll。

假設貴哥手頭拮据, 要向網友們募款救急。 就衝著貴哥過去的表現, 網友們很樂意幫忙; 但網友們怎麼確認發文的就是貴哥呢?

首先, 貴哥必須產生一對金鑰 -- 一個 public key, 一個 private key。 前者長期貼在部落格上﹑ 放在 e-mail 簽名檔裡面﹑ ... 總之隨時與貴哥這個人在公共場所如影隨形。 後者則只有貴哥自己知道。

然後貴哥寫一篇哭窮文解釋為什麼我這個月的薪水不夠用, 並且公告我的募款帳號請大家匯錢進來。 這段哭窮文用 private key 加密, 並公開張貼。 (圖的左上) 接著任何人都可用貴哥的 public key 解密, 看到那一段文字。 (圖的右上) 這裡的重點其實並不是要保護那一段文字, 而是要確認寫文的是貴哥。 "看起來是亂碼; 用貴哥的 public key 解密就變成有意義的文字" 能貼出這種 文章 亂碼的人, 必然是貴哥。 以上就是 「數位簽章」 的核心原理。 實用上, 亂碼看起來很礙眼, 所以其實貴哥貼的並不是 「經 private key 加密過的哭窮文」, 而是 「原始哭窮文 + 哭窮文的雜湊 (想像指紋可用以辨識一個人) 再經 private key 加密後的亂碼」。 詳見 星塵的文章

網友 X 決定贊助貴哥。 他打算當面交錢, 順便跟貴哥合照。 他挑好時間地點, 想要約貴哥。 可是他懷疑有人經常在偷看他的 e-mail, 或是他們公司禁用任何私人 e-mail... 總之不論他寄 e-mail 或是在貴哥的部落格上留言, 都必須假設有其他路人甲可以看到他的發文內容。 這樣太沒隱私了。 於是他將私密的發文內容用貴哥的 public key 加密, 再在部落格留 "言" (根本就是一堆亂碼) 或 e-mail 給貴哥。 (圖的右下) 因為只有貴哥的 private key 能夠解密, 所以貴哥知道什麼時候要去哪裡見面; 其他的路人甲即使看見留言內容也完全不知道他在說些什麼。 (圖的左下)

其實文章如果貼在部落格上, 大概也就是本人沒錯了, 不必這麼麻煩啦; 然後如果你懷疑自己的 e-mail 被公司監控, 應該要根據 個人資料保護法 主張自己的隱私, 其實小事情寄 mail 也不必這麼委曲還要加密。 寫這一帖的目的並不是為了以後要募款而鋪路; 這是為了要替下一帖鋪路啦...

0 留言:

張貼意見