此文章同步刊登於我的部落格
雜湊不等於編碼,編碼不等於加密,加密也不是雜湊!!!
為甚麼要提這件事呢?
請先看這篇新聞:
國民黨台中市議員李中昨在議會質詢,秀出「近12個月交通違規檢舉量前20名」的名單。不過檢舉人的身分證字號竟只用Base64編碼轉換,長期協助企業資安保護的資安人員透露,取得身分證字號再搭配先前外洩的戶政資料,檢舉人的人身安全堪憂。…
資料來源:聯合新聞網
這件事簡單來說,就是工程師想把資料保護起來,但錯把Base64當作加密方法使用,把一個只能「轉換顯示格式」的方法,用在身分證上。
結果看到這些文字的人,完全不需要key(密鑰)來解密,只要經過人人都可以的還原(解碼)動作,原本的身分證就顯露出來了。其實這也不是第一次發生的事情了,很多對資訊領域不甚了解的人,甚至有「部分」的資訊領域工程師仍然不具備相關的知識素養。所以本篇文章就好好說明雜湊、編碼與加密的區別。
透過雜湊演算法將資料打亂並混合取得一個固定長度的雜湊值(Hash Values)
具有不可逆的特性且來源資料只要有任何變動生成的雜湊值也會不同通常用來驗證資料的來源是否相同
例如比對檔案是否有被修改過
或是利用不可逆的特性來存放資料庫中的密碼藉此保護使用者的資料
常見的雜湊方式有:MD5(不安全且有衝突問題)、SHA-1(不建議使用)、SHA-256等
定義相當廣泛
只要是將資料從一種型態轉變成另外一種形式且過程可逆就可以算編碼在資訊的領域中比較常用到的是將各種字元轉譯成一個固定的格式用來方便儲存、傳輸
例如資料庫編碼無法儲存特殊字元時
透過Base64轉換成只有英數字的格式就能夠儲存了或是網址無法接受空白或是一些特殊字元也可以透過URL Encode變成網址支援的編碼來讓網頁可以順利透過get方式傳遞資料
常見的編碼方式有:Base64
加密是編碼的一種類型
它需要使用密鑰(Key)將原始資料轉換為密文並且這個過程也是可逆的只要擁有正確的密鑰(Key)就能夠將密文轉換為原始資料加密常被用於保護敏感資料例如信用卡資訊、個人資料等
常見的加密方式有:AES
總結來說
雜湊、編碼和加密雖然在資訊安全中扮演不同的角色但很多人往往容易搞混它們的用途例如用編碼或加密的方式儲存使用者密碼這種在資料庫外洩的時候就有可能造成使用者的密碼被駭客取得這種事情已經發生過很多遍了我們都應該要引以為戒才是