圖說演算法使用JavaScript(三十八)

完美實戰安全性演算法

對於資訊安全而言,很難有一個十分嚴謹而明確的定義或標準。簡單來說,資訊安全(Information Security)的基本功能就是必須具備以下四種特性:

*秘密性(confidentiality):表示交易相關資料必須保密,當資料傳遞時,確保資料在網路上傳送不會遭截取、窺竊而洩漏資料內容,除了被授權的人,在網路上不怕被攔截或偷窺,而損害其秘密性。
*完整性(integrity):表示當資料送達時必須保證資料沒有被竄改的疑慮,訊息如遭竄改時,該筆訊息就會無效,例如由甲端傳至乙端的資料有沒有被竄改,乙端在收訊時,立刻知道資料是否完整無誤。
*認證性(authentication):表示當傳送方送出資料時,就必須能確認傳送者的身分是否為冒名,例如傳送方無法冒名傳送資料,持卡人、商家、發卡行、收單行和支付閘道,都必須申請數位憑證進行身分識別。
*不可否認性(non-repudiation):表示保證使用者無法否認他所完成過之資料傳送行為的一種機制,必須不易被複製及修改,就是指無法否認其傳送或接受訊息行為,例如收到金錢不能推說沒收到;同樣前用掉不能推收遺失,不能否認其未使用過。

11-1 輕鬆學會資料加密

將資料轉換成不具任何意義的代碼,而這個處理過程就是(加密Encrypt)。資料再加密前稱為(明文 Plain text),經過加密後則稱為(密文 Cipher text)。
經過加密的資料在送抵目的端後,必須經過(解密 Decrypt)程序,才能將資料還原成原來的內容,而這個加/解密的機制則稱為(金鑰Key)。至於資料加密及解密的流程如下所示:

11-1-1 對稱鍵值加密系統

對稱鍵值機加密系統(Symmetrical key Encryption)又稱為單一鍵值加密系統(Single key Encryption)或秘密金鑰系統(Secret Key)。這種加密系統的運作方式,是由資料傳送者利用祕密金鑰(Secret Key)將文件加密,使文件成為一堆的亂碼後,再加以傳送。而接受者收到這個經過加密的密文後,再使用相同的祕密金鑰,將文件還原成原來的模樣。因為如果者B用這一組密碼解開文件,那麼就能確定這份文件是由使用者A加密後傳送過去,如下圖所示:

這種加密系統的運作方式較為單純,因此不論在加密及解密上的處理速度都相當快速。常見的對稱鍵值加密系統演算法有DES(Data Encryption Standard,資料加密標準)、Triple DES、IDEA(Internation Data Encryption Algorithm,國際資料加密演算法)等。

11-1-2非對稱鍵值加密系統與RSA演算法

(非對稱性加密系統)是目前較為普遍,也是金融界應用上最安全的加密系統,或稱為(雙鍵加密系統 Double key Encryption),這種加密系統主要的運作方式,是以兩把不同的金鑰(key)來對文件進行加/解密。例如使用者A要傳送一份新的文件給文件使用者B,使用者A會利用使用者B的公開金鑰來加密,並將祕文傳送給使用者B。當使用者收到密文後,再利用自己的私密金鑰解密。如下圖所示:

例如RSA(Rivest-Shamir-Adleman)是加密演算法中是一種非對稱加密演算法,在RSA演算法之前,加密方法幾乎都是對稱型的,非對稱是因為它利用兩個不同的鑰匙,一把叫公開金鑰,另外一把較私密金鑰。1977年由Ron Rivest、Adi Shamir 和 Leonard Adleman 一起提出的,RSA就是由三人姓氏開頭字母所組成。

11-2 一學就懂得雜湊演算法

雜湊法是利用雜湊函數來計算一個鍵值所對應的位址,進而建立雜湊表格,且依賴雜湊函數來搜尋找到個鍵值存放在表格中的位址,搜尋速度與資料多少無關,在沒有碰撞和溢位下,一次讀取即可,更包括保密性高,因為不事先知道雜湊函數就無法搜尋的優點。
選擇雜湊函數時,要特別注意不宜過於複雜,設計原則上至少必須符合計算速度快與碰撞頻率盡量小兩項特點。常見的雜湊法有除法、中間平方法、摺疊法及數位分析法。

11-2-1  除法

最簡單的雜湊法是將資料除以某一個常數後,取餘數來當索引。例如在一個有13個位置的陣列中,只使用到7個位址,值分別是12,65,70,99,33,67,48。那我們就可以把陣列內的值除以13,並以其餘數來當索引,我們可以用下例式子來表示:

h(key)=key mod B

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料