09. 資料加密

教學輔助程式:

http://bk.chjh.hc.edu.tw/html5/html5_flashcards/flashcards.html


你一定聽過間諜和特務使用隱密的代碼或隱形墨水寫下並交換訊息之類的故事。那就是「密碼學」這門學問的源起。密碼學是一門傳遞訊息的藝術。在二戰期間,英國人建造了專門破解密碼的電子機器,並且用這個機器來破解敵軍的軍事機密訊息。接著,電腦的出現改變了一切,並且使密碼學進入了一個新的時代。在過去完全無法想像的大量計算,現在可以透過配置完善的電腦來進行。當人們開始互相分享電腦系統時,密碼出現了新的用法。而當電腦連在網路上時,人們就必須開始保護自己的資訊,以免被其他人竊取。當電子郵件出現時,確定郵件內容有沒有被改過,是不是真的是由發信者所發出,還是別人偽造發信者的身份所發的,就變得很重要了。現在電腦可以使用網路銀行的功能,也可以透過電腦買賣商品,在電腦網路上我們就非常需要訂單與金流的安全管道。而恐怖份子攻擊電腦系統所帶來的威脅日益增加,也使得電腦安全越來越重要。

講到密碼學,可能讓你想到儲存密碼的電腦,和弄亂訊息的文字使得敵人無法解讀之類的事。但實際上並不是這樣。現代電腦系統不會儲存密碼,因為如果系統這樣做,任何設法取得密碼的人就可以突破系統內所有的安全機制,那會是一個大災難:他們可以盜領帳戶內的錢、假裝是其他人傳送訊息、讀取所有人的機密資料、甚至命令軍隊推翻政府。

當電腦逐步入侵我們的日常生活,密碼學的應用也變得更加重要。大多數的人根本不知道現代的加密協定是怎麼一回事。結果就是當大型機構 - 包括政府與商業機構 - 建立了涉及個人資訊的系統,會變成由這些機構來做重要決定,包括如何處理事物、要蒐集什麼資訊、什麼東西可以開放給誰等等。如果人們對現代科技產生的可能性有更深的了解的話,他們就能主動參加更多像這樣的決策,而整個社會也會建立起一個不同的資訊基礎。

密碼學的理論本質一般來說被認為是非常先進的。但這些想法本身並不困難。難以理解的是它的技術性,而不是它的觀念。在現實的狀況中,例如電子商務,這些技術都用軟體包裝好了,因此加密技術就變得容易使用。但是了解這些技術的基礎想法,知道這些軟體能做什麼也是很重要的事。

政府對密碼系統有很大的興趣,不只是因為要維護官方通訊的安全性,也是擔心從事非法活動的人們,像是毒品走私和恐怖活動等等,也會使用加密通訊。如果這樣的人使用加密,那竊聽就會變得沒用,除非知道怎麼解密。

密碼學的觀念並不只是保密訊息而已。另外還有許多應用,像是保證訊息真的是傳送者所發出 - 這種機制稱為「認證」,沒有這個機制,就不會有現在的電子商務。還有用在電子投票,確保其他人 - 包括營運該系統的人 - 不會知道投票者投給誰,同時還能避免一個人投兩票以上。

加密技術對於資訊安全來說是個關鍵。而現代的加密技術的關鍵,則是訊息的發送者只需要使用某些公開的資訊,就可以將一段訊息鎖住,只有特定的人才能解鎖打開。

這就如同每個人都買了一個掛鎖,在上面寫上他們的名字,然後把它們全部放在相同的桌上供其他人使用。當然每個人自己都有自己鎖的鑰匙,但掛鎖是開著的,鎖上它們不需要任何鑰匙。如果你要寄給某人一則機密的訊息,你只需要把訊息放入一個盒子,拿鎖把它鎖起來,然後寄給收件者。即使盒子落入別人之手,因為沒有鑰匙,所以也無法打開。有了這樣的機制,大家就不需要事先溝通解鎖的密碼為何。在數位的世界中,我們不是直接拿起掛鎖鎖住盒子,而是去複製這個掛鎖,並使用複製後的掛鎖,把原始的掛鎖留在桌上。

這個使用掛鎖的機制,我們稱為「公開金鑰加密」。除此之外還有其他的加密方式,以下我們介紹幾種基本的方法:

1. 換位法

產生

欲傳送的訊息為「MERRYXMAS」,假設訊息傳送者與接收者事先約定使用「換位4」加密,則依序在每個字母底下加上數字。編號設定到4之後,則下個字母再重新由1開始設定號碼。

接著先將所有編號為1的字母依序排列,接著排列編號2的字母,依些類推。排列的結果如下,如此則產生了加密後的訊息「MYSEXRMRA」

還原

假設訊息傳送者與接收者事先約定使用「換位3」加密,接收者得到的訊息如下

先取字母編號第一個1、第一個2、第一個3等三個字母,接下來取第二個1、第二個2及第二個3等三個字母,依此類推。如此則得到還原過後的訊息為「MERRYXMAS」。

2. 替換法

產生

首先約定英文字母替換對照表如下:

欲傳送的訊息為「MERRYXMAS」,按照表格所對應的替換字母如下,因此傳遞時會傳送訊息「BXWWZRBON」

還原

首先約定英文字母替換對照表如下:

接收到的訊息為「BXWWZRBON」,按照表格所對應的原始字母還原為「MERRYXMAS」

3. 【進階替換】表格法 - Tabula Recta

產生

約定的表格如下。假設預傳送的訊息為「HELP」,事先約定金鑰為「NTCT」

則加密訊息的

第一個字母為第H行、第N列的「U」


第二個字母為第E行、第T列的「X」


第三個字母為第L行、第C列的「N」


第四個字母為第P行、第T列的「I」


如此則得到加密訊息為「UXNI」

(註:金鑰長度可以比原始訊息更短,加密時依序取用金鑰的字母,用完時則從頭開始使用第一個字母)

還原

約定金鑰的字母,代表「行」的位置,還原時要在這行找到加密後的訊息字母,該字母所在的「列」則代表原始的訊息。(進行還原時先讀金鑰再讀加密訊息)

因為若事先約定密鑰為「NTCT」,接收到的訊息為「UXNI」


在第N行找到字母「U」,它在第H列,所以原始訊息的第一個字母為「H」


在第T行找到字母「X」,它在第E列,所以原始訊息的第一個字母為「E」


在第C行找到字母「N」,它在第L列,所以原始訊息的第一個字母為「L」


在第T行找到字母「I」,它在第P列,所以原始訊息的第一個字母為「P」


如此則得到加密訊息為「HELP」

09 表格法Tabula Recta.doc