[資訊安全] 雜湊、編碼與加密的區別

本文最後更新於:2024年5月2日 晚上

雜湊不等於編碼,編碼不等於加密,加密也不是雜湊!!!

為甚麼要提這件事呢?
請先看這篇新聞:

國民黨台中市議員李中昨在議會質詢,秀出「近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傳輸資料保護資料庫資料

五、結語

總結來說
雜湊、編碼和加密雖然在資訊安全中扮演不同的角色
但很多人往往容易搞混它們的用途
例如用編碼或加密的方式儲存使用者密碼
這種在資料庫外洩的時候
就有可能造成使用者的密碼被駭客取得
這種事情已經發生過很多遍了
我們都應該要引以為戒才是


[資訊安全] 雜湊、編碼與加密的區別
https://hankz1108.github.io/posts/20231117-security-hash-encoding-and-encryption/
作者
Hankz
發布於
2023年11月17日
更新於
2024年5月2日
許可協議