王旭正教授目前任職於中央警察大學,他曾經撰寫過數本知名的資安相關書籍,可算是國內知名的密碼與資訊安全相關領域的權威,在這本剛剛於本月(三月)所出版的「認識密碼學的第一本書」中,王教授試著用淺顯與故事性的方法介紹密碼的起源與現代密學的發展,讓一般人也能一覽密碼學的奧秘而不被複雜難懂的數學與冰冷理論所嚇著。
如果您沒看過這本書,建議您可以買來看看,如果捨不得或懶得買,那麼,也可以直接瀏覽這幾頁濃縮整理的精華重點,應該涵蓋了書中八成的主要內容吧,看完後也等於讀完該本書了。
A)阿拉伯數字的由來
阿拉伯數字並非阿拉伯人發現,而是印度人發明,再經由阿拉伯人經由戰爭和貿易而傳播到歐洲地區,取代了原本使用的羅馬數字,所以歐洲人才會稱為「阿拉伯數字」。
不過,你知道為什麼這些阿拉伯數字會長成這樣子?有什麼緣由或改變嗎?
其實古代阿拉伯數字的寫法與外觀是有棱有角,與現代的圓弧形有極大的差異,也就是它們所代表的「數」與「角度」存在著一定的規則:有一個角度的就是代表數字「1」,二個角度的代表數字「2」,有三個角度的代表「3」…依此類推,請注意下圖中圓點所標注之處就是數字的角度,而你可以看出「0」是沒有任何角度的。
B)密碼學的母親-質數
質數其實跟密碼、網路安全有很深的關連性,就是因為它們不能再做因數分解,才能用來當作保護機制,這牽連到中國古代一個跟質數密碼相關的故事:
韓信幫劉邦統一江山後,生性猜忌的劉邦開始害怕韓信有了兵力後會趁機造反,因此在一次宴席中,劉邦特意詢問韓信兵力的狀況,韓信一聽便理解其言外之意,於是想出一個避重就輕的回答:
「我不知道我總共有多少士兵,但我只知道三個一數會剩兩個,五個一數會剩三個,七個一數會剩兩個。」… 劉邦聽了之後一頭霧水,在旁的軍師也算不出總共有多少兵力,於是韓信憑著過人的機智逃過一劫。
在這故事中,韓信講的「三個一數」「五個一數」和「七個一數」都是質數,就是有名的「中國剩餘定理」,也就是常聽到的餘式定理,簡單來說,韓信的總兵力就是同時可以滿足這三個條件的數目。
只要所有除數彼此互質,就可以用「中國剩餘定理」來計算可能的數目,而同樣的,如果我們增加了更多的條件,也就是再加上諸如「11個一數」或「13個一數」,那麼,就需要更多的時間來計算出答案了。
所以,根據下列的原則
「5」「7」「11」 → 除數,不能公開
「2」「3」「4」 → 餘數,可公開
「367」 → 所要保密的最終的答案
因此從這個角度來看,這是一個很好用的密碼應用,例如,如果我們和另外兩位朋友私底下用「5」「7」「11」當作代號-這是除數,而且也是我們彼此之間知道而已,另外用「2」「3」「4」-也就是餘數,作為在網路上傳遞訊息用的數字,此數字被別人知道也沒有關係,而答案「367」則是我們要保密的數字,不能被外界知道,除非「5」「7」「11」這組數字被洩露出去了。
C)近代密碼學的兩大門派
大家應當都很清楚,對稱式(Symmetric)與非對稱式密碼系統兩者最大的差異在於加密和解密用的是不是同一組密碼,舉例來說,如果上鎖和開鎖用的不是同一把鑰匙(也就是所謂的金鑰),那麼它就是非對稱式密碼系統,反之則稱為對稱式密碼系統。
目前最知名且還廣為使用的對稱式密碼,就是DES與AES。
1)對稱式加密:
DES(Data Encryption Standard):DES是近四十年來最廣為應用的金鑰密碼系統,它利用長度為56位元的金鑰來對長度為64位元的區塊進行加密演算,但由於目前的電腦處理速度成長相當迅速,使得採用56位元長度金鑰的DES已不夠安全,出現了一種3-DES的變形,它會進行三次的加/解密運算,也就是相當於使用了56x3=168位元長度的金鑰作加密。
AES(Advanced Encryption Standard):AES發展於2000年,一開始目標便以取代DES為目的,它可選擇三種金鑰長度:128、192、256位元進行加密,對於明文區塊容量也更大128位元,因此可說是目前對稱式密碼系統中最安全的,例如,目前普遍使用的藍芽4.0版就是利用128位元的AES進行資料加密。
2)非對稱式加密:
又稱「公開金鑰密碼系統」,概念是建立在數學的單向函數上,單向的意思類似單行道,行進方向只有一個,換言之不會有出現逆向行駛的可能;所以公開金鑰可以很大方的公開於網路上,無需擔心被反向破解;我們也可以把公開金鑰密碼系統想像成喇叭鎖,就更容易理解了,任何人只要按下鎖頭都可以把門鎖上,但是要把門打開,就一定要找到對的鑰匙。
例如RSA就是有名的公開密碼應用,它是利用「對極大數作質因數分解的困難度」這樣單向函數概念而產生,也就是建立在針對一個極大的數字作質因數分解的困難度上,我們平常上網使用的SSL這類對於網路資料送所進行的加密方式,就是一種應用RSA的例子。
3)混合公開金鑰:
對稱式加密的優點是加解密速度快,而非對稱式的優點則是安全性高,在實際應用上,我們常常取兩者的優點,截長補短做成混合系統。
D)數位簽章-避免資料遭受竄改或偽造
上述的密碼系統可以保護資料不被竊取,然而,卻無法保證其所保護的內容是正確無誤、原汁原味沒有被掉包或修改過的,因此,我們必須要使用另一項功能,來保證資料的真實性,也就是「雜湊函數」(Hash)。
如上圖所示,無論輸入為空值或任何數值,都會傳回不同且一定長度的資訊,而且你無法從傳回的資訊反推算出原來訊息,所以Hash函數具有三種特殊的性質:
「單向性」:只能得到單向的得到右邊輸出結果,但是無法反推回去。
「抗碰撞」:不同的文字有不同的輸出結果,不會有不同文字卻具有相同輸出結果的情況。
「擴張性」:就算是微小的差異或改變,也會得到和原來差異極大的輸出結果。
應用在資訊的傳送上,如果我們將原來的資訊先使用Hashj函數產生出摘要資訊,再將此摘要資訊連原始訊息一併傳送給對方,那麼,對方只要比對自己產生的摘要資訊與所接收的是否一致,即可驗證資料是否正確以及完整;一般在生活的應用上,這種將Hash驗證與金鑰系統作結合的功能,稱之為「數位簽章」,如下方是利用雜湊函數應用的數位簽章流程。
E)憑證-避免中間人攻擊
不過,經過數位簽章過的資訊,尚無法解決一個俗稱「掉包」的風險,也就是駭客在中途將公開金鑰掉包,替換為自己的公開金鑰,這就是所謂的「中間人攻擊」。
要怎麼來預防中間人攻擊呢?從上面的流程中,我們可看出問題的所在,是公開金鑰沒有被認證,如果我們能在取得金鑰的同時就進行比對,確認這把金鑰是誰發出的,就可以防止此金鑰中途被人掉包。
憑證
憑證就是在公開金鑰上,再加上數位簽章,就可以認證該金鑰是誰所擁有的。
不過,它需要一個公正及受信賴的第三方(憑證機構,我們稱為Certification Authority,CA),針對使用者的個人身份資料以及使用者本身的公鑰,進行簽署認證的動作,若正確無誤,則核發數位憑證,而此憑證為了保證有效性,因此有一定的使用期限,並非永久有效。
沒有留言:
張貼留言