創作內容

20 GP

機密注意!伍德的密碼學時間 (1)

作者:伍德‧瓦懷特│2020-06-07 08:01:04│巴幣:138│人氣:564
  二十一世紀已經快過去五分之一,網路已經跟大家的生活密不可分。現在在這裡看著這篇文章的你,能夠和不久前寫好這篇文章的我相互交流,也是拜網路之賜。但是,在網路上傳播訊息,怎麼保障安全呢?更精確地來說:
  (1) 我傳遞的訊息被人攔截了怎麼辦?會不會被偷聽?
  (2) 我接到伍德的訊息了,但我怎麼知道那真的是伍德傳的訊息?訊息有沒有被其他人竄改?

  這兩個問題可說是密碼學(Cryptography)的核心。從古羅馬時代的凱撒密碼、近世歐洲的共濟會密碼,人們為了防止機密外洩可說是費盡心思。隨著科技發展,訊息交流越來越頻繁密切,當今的密碼學已經是門混合數學和資訊工程的重要學問。各位或許從未聽聞,但你在網路上的一言一行已經通通離不開密碼學了。今天(和下一期)的伍德說數就來從數學方帶各位談談密碼學是怎麼回事*1。

一、奔騰於雲端之物
  在網路上究竟怎麼傳播訊息的呢?是完完整整地傳送文字嗎?這個問題的答案,既是,也不是。訊息當然要完整傳送,不能遺漏;但是傳遞的形式被改成了數字。將文字和數字互換的方法被稱為「編碼」。

  簡單的例子來說,要是愛麗絲(Alice)想傳遞「I love Bob」的訊息給鮑伯(Bob)*2,我們可以照著英文字母的順序將I換成9、L換成12、依此類推。當Bob收到一連串的數字後,他可以對照表反推出當初Alice傳了什麼訊息給他。嚴格來說這已經算是一種加密了,但由於規則過於明顯,難保中間不會有人(Oscar)搞鬼,將訊息竄改成「I hate Bob」。因此,我們需要將訊息打散成外人難以理解的形式,讓他們竊聽了也不懂意思,想竄改也沒辦法(只會竄改出無意義的文字)。

  在羅馬時代,凱撒大帝(Caesar)就已經使用加密系統傳遞訊息。然而,他所適用的密碼非常簡單:把所有的英文字母往後推三位。例如將A推成D、B推成E。奧古斯都(August)則使用更簡單的方法:把所有字母往後推一位。將A推成B、...、將Z推成AA。這樣的作法在現今已經幾乎沒有安全性可言,但當時的識字率不高,凱薩密碼已經堪用。

  一種攻擊英文密碼的方式被稱為「頻率攻擊」(Frequency Attack)。原理很簡單:26個英文字母出現的頻率不一樣。舉例來說,A、E、I、O、U五個母音出現的頻率就應該比Q、X、K等字母還要高。在密文中看到很多次的文字,就不太可能是Q、X、K變化而來。看到並排在一起的字母就可能是s、t等字母(Assess;Attack)。更甚者,只要有很長一段文章,我們就能計算文中的字母頻率來大致猜出替換的規則。

  在現代,由於訊息已經被換成數字,數學家們就有工作機會了。透過利用數學設計系統化的加密、解密流程,各位在網路上所傳遞的消息才會有秘密的保障,不會被看個精光。英文轉化為數字的方式最知名的應該是ASCII碼*3。至於繁體中文轉換成數字的編碼,在幾十年前以Big-5為主,現在則是UTF-8等系統為主流(把ASCII碼也含在裡面了)。

  本段的懶人包:所有的語言都能化為數字來傳遞,所以我們只要針對數字來設計加密和解密的方法就好。依照系統運作方式不同,大致可以分為「對稱式加密」和「非對稱式加密」兩種形式。兩者可以並存使用,並非水火不容。事實上,兩者各有優缺點,恰好能互補彼此。

二、對稱式加密(Symmetric Encryption)
  在對稱式加密中,傳遞訊息的Alice和Bob共用同一把鑰匙(金鑰;Key)。操作流程如下:
  (1) Alice寫好訊息,使用金鑰加密(Encryption),把加密後的密文送出去。
  (2) Bob收到密文,使用同一把金鑰解密(Decryption),得到解密後的原訊息(明文)。
  中間要是被Eve偷聽到訊息,她只會看到密文,沒辦法知道訊息內容。簡單好懂的方法,對吧?

  對稱式加密依照操作方法可以再分為資料流加密(Stream Cipher)和資料塊加密(Block Cipher)。前者一次加密一格(一個Bit)、後者一次加密一個區塊(64Bit 或128 Bit)。想當然,後者總體而言速度比較快。也因此,目前使用的對稱式加密絕大多數都是資料塊加密。常見的標準有DESAES(主流)。概念上可以把AES想成一台機器,把數字和金鑰丟進去就能產出密文。當然,金鑰不同,產出的秘文就不同。

  說得好像很輕鬆,但對稱式加密是有盲點的。首先是鑰匙的傳遞問題。鑰匙一旦被第三方(Eve)知道,所有祕密就攤在陽光下了。因為加解密用的是同一把鑰匙,兩個人必須約定好用哪把鑰匙,因此必須傳輸訊息。但是,就是因為傳輸訊息時怕被偷聽,才需要加密──解決問題的手段,產生了問題本身
  
  一個解決的方式,是在線下或其他可信任的場所面對面約定好。但當然大多數狀況下不可行。現今解決傳遞問題的手段,大致是先使用非對稱式加密傳遞鑰匙,再使用這個鑰匙進行對稱式加密。你問為什麼要多此一舉?因為非對稱式加密比較慢。如果要傳遞的訊息量很大,還是對稱式加密有保障。

  另一個問題是鑰匙數量龐雜。Alice和Bob必須用一把鑰匙;Alice和伍德想傳輸訊息也需要一把鑰匙(不想要讓Bob聽到);伍德和Bob傳訊息也要一把(Alice別來偷聽)。三個人需要三把鑰匙,不算多。但要是一百個人,就必須要100*99/2=4950把鑰匙。現在想想你每天要跟多少人交換訊息?需要多少鑰匙呀?

  非對稱式加密就很漂亮地解決了上述兩個問題(但犧牲了效率),同樣是一百人,非對稱式加密只需要200把。怎麼做到的?我們繼續看下去。

三、非對稱式加密(Asymmetric Encryption)
  在非對稱式加密中,Alice和Bob各自有兩把鑰匙(總共4把;但等等我們會看到,只有兩把會用到)。其中一把用來上鎖所有人(包含偷聽的Eve)都知道,稱作公鑰(Public Key)。另一把用來解鎖,只有各自的主人知道,稱為私鑰(Private Key)。假設Alice想傳訊息給Bob,操作流程如下:
  (1) Alice取得Bob的公鑰,寫好訊息後使用Bob的公鑰加密,得到密文。(你也能想成使用Bob專用的鎖頭上鎖)
  (2) Bob取得密文,使用Bob的私鑰解密,得到原先訊息(明文)。(使用Bob的專用鑰匙開鎖)
  簡單來說,我們只需要收件者(Bob)的兩把鑰匙。中間訊息要是被Eve攔截也沒關係,因為就算她有Bob的公鑰,沒有Bob的私鑰,她是沒辦法解讀訊息的
  (同理,你能不能說出Bob想傳訊息給Alice的時候該怎麼做呢?)

  非對稱式加密的數學關鍵是,要找到類似「單行道」的問題。一個例子是質因數分解。大家都能簡單分解21=3*7吧(除非你不管三七二十一啦...)?但是分解10403=101*103就不是那麼容易了。利用質因數分解設計出的非對稱式加密,稱為RSA加密法(三位教授的名字;我們下次細談)。其他常見的還有使用離散對數問題橢圓曲線的加密法,後兩者我們不談,但值得注意的是橢圓曲線越來越受歡迎

  回過頭來,上面提到對稱式加密的問題,被好好解決了嗎?首先關於鑰匙的傳遞,我們依舊需要傳遞公鑰,但安全問題不大,因為公鑰不怕人知道。相對地,重要的私鑰一直被自己收著,不需要傳送。這裡延伸出另一個問題:公鑰大家都知道,那當Bob收到一封上了Bob公鑰的文件,怎麼知道是Alice傳的,而不是Oscar假造的?這裡我們需要Alice在傳遞訊息時,對她的訊息「簽名負責」。專業術語稱為「數位簽章」(Digital Signature)。今天已經談很多了,關於數位簽章我們就同樣下次談。

  此外,關於鑰匙數量的問題。在非對稱式加密中,每個人只需要握有兩把鑰匙:公鑰和私鑰。今天Alice想傳訊息給Bob,使用Bob的公鑰就好;伍德也想傳訊息給Bob,同樣使用Bob的公鑰,不需要其他鑰匙。人數一多,非對稱式加密的優勢就越來越明顯。

四、比較與小結
  在網路時代傳遞訊息,基本上都要先將訊息轉化為數字,再對數字做加密和解密。現今兩大類系統分別稱為「對稱式加密」和「非對稱式加密」。對稱式加密速度快、效率好,但必須解決鑰匙的傳遞問題,人數一多,管理鑰匙也相對不易。相對地,非對稱式加密解決了上述的問題,但犧牲了效率實務上常常兩者並用

  在下一次專欄,我們會談非對稱式密碼最重要的例子之一:RSA加密法。另一方面,文章一開始的問題我們只回答了第一題。關於第二題,怎麼驗證傳訊者的身分,需要的是上面也提過的「數位簽章」。它的操作方式我們也留待下次再聊。

  那麼我是伍德‧瓦懷特,我們下期「伍德說數」專欄再見!
  下一期請點我

*1. 相對地,資工不是伍德的專長,所以要是有錯請指正我。
*2. 在密碼學文獻中,Alice和Bob常用來指傳遞訊息的兩方。中間的竊聽者則是Eve;更甚者,會竄改訊息的攻擊者則是Oscar。
*3. 拙作《Math Server》就用過ASCII碼設計將凱撒密碼變形的謎題。
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4808554
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:伍德說數

留言共 8 篇留言

函和言
現今主流的加密方式(RSA、離散函數、橢圓曲線等等)並不複雜,可以透過算力更加強大的計算機(如量子計算機)或新發現且更強大的數學公式或公理(如黎曼猜想、ABC猜想)

06-07 08:54

伍德‧瓦懷特
相對對稱式加密應該還是稍微慢一點,但以日常生活需要,的確也沒慢多少。06-07 08:57
函和言
等等輕易破解,但當前的加密方式在幾十年內依舊堪用,只期待不要太快出現愛因斯坦+狄拉克+高斯的神人

06-07 08:57

伍德‧瓦懷特
密碼學一向就是劍與盾的競速。
我敢在科普專欄談RSA就是覺得它原理相對不複雜。不過懂跟能破解本來就是兩回事。06-07 09:01
愛德莉雅.萊茵斯提爾
嗯…也就是說文字在傳送給對方之前,會經歷一段被轉化成數字的過程。

06-07 10:22

伍德‧瓦懷特
以電腦來說,最終還是要傳遞0、1訊號的。06-07 11:15
九方思想貓
感覺想一套方法來建立自己好記又複雜的密碼也用得上這個知識

06-07 10:25

伍德‧瓦懷特
一般推理作品常見的Dying Message或密碼比較類似凱撒密碼那類,和現今談的加密比較不一樣;我自己設計謎題時不只位移(凱撒位移三位),還多了乘法倍數,變成線性變換...我反省後覺得有點太難了(
另一類常見的是文字遊戲,和密碼學就更沒關係了。
不過像是名偵探柯南和Q.E.D裡面記得都有用過非對稱式加密(或其變形)的橋段。06-07 11:21
愛德莉雅.萊茵斯提爾
可是英文字母有26個,大小寫加起來總共52個,如果大小寫排在一起的話,若超過10以上的字母,例如大寫K等於10,在大小寫混搭的情況下,會不會發生錯誤判斷或是有別的辨識方法呢?

06-07 10:31

伍德‧瓦懷特
大小寫需要區別的話很簡單,改寫成1-52就是一種方式。像ASCII碼裡面65-90是大寫英文字母;97-122是小寫英文字母。06-07 11:17
愛德莉雅.萊茵斯提爾
在2-7-7中有出現,目前還在嘗試解謎當中。(´・ω・`)

06-07 10:34

伍德‧瓦懷特
呀,那段後來想想好像有點太難,如果看不懂倒是可以略過(
不過大小寫搞錯的問題倒是在後來的劇情有被用上。06-07 11:18
該隱
數字:存在
我:((死去

06-07 13:56

伍德‧瓦懷特
等一下,這次幾乎沒有數字吧XDDD06-07 14:00
方天
謝謝分享!

06-07 14:39

伍德‧瓦懷特
如果能讓你多學到一些東西就太榮幸了。06-07 14:44
我要留言提醒:您尚未登入,請先登入再留言

20喜歡★e12344888 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:[達人專欄] 魔都妖探 ... 後一篇:[達人專欄] Math ...

追蹤私訊切換新版閱覽

作品資料夾

d88931122所有巴友
老僧的Steam遊戲新作《蘿莉RACING》特價中,歡迎參考 : https://store.steampowered.com/dev/alex94i60看更多我要大聲說昨天21:32


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】