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