學習密碼學
-
第一部分:雜湊
1. 雜湊是什麼?
定義與基本原理
雜湊是一種將任意長度的輸入(或稱訊息)轉換成固定長度字串的過程,這個固定長度的字串即為雜湊值。雜湊設計上是單向的,從雜湊值理論上不能逆向推導出原始數據,這種特性保護了數據的安全性。
常見的雜湊算法(如SHA-256)
包括SHA-256、MD5等。SHA-256是安全雜湊演算法(Secure Hash Algorithm)家族中的一員,能生成一個256位元的雜湊值,廣泛用於安全應用上,如數位簽章。
2. 雜湊的應用
雜湊在密碼儲存中的應用
在儲存使用者密碼時,系統會將密碼進行雜湊處理後儲存雜湊值,而不是明文密碼。這樣即使數據庫被竊取,攻擊者也難以恢復出原始密碼。
而在使用者登入時,系統不會去比較使用者輸入的密碼本身,而是去比較使用者輸入的密碼的「雜湊值」。因為如果使用者輸入的是正確的密碼,那「雜湊值」也應該跟資料庫裡面存的一樣。如此便可以在沒有密碼外洩風險下,仍能驗證使用者。如何利用雜湊驗證數據完整性
通過比較數據的雜湊值可以驗證數據是否在傳輸或儲存過程中被篡改。例如,在下載檔案時,網站通常會提供檔案的雜湊值,用戶可以在下載後對檔案進行雜湊,確保雜湊值與網站提供的一致。這是因為如果下載到他人惡意竄改的檔案,很可能是病毒、挖礦程式等。整個檔案比較會太大、花太多時間,直接將檔案雜湊後比較檔案的「雜湊值」,便可以快速知道下載到的東西有沒有被篡改。
第二部分:加密與解密
1. 什麼是加密?
加密的定義
加密是將原始資料(明文)轉化為一種只有特定人員才能解讀的格式(密文),以防止未經授權的存取。
對稱加密與非對稱加密的比較
加密有兩種重要的大分類:
- 對稱式加密演算法
- 非對稱式加密演算法對稱加密使用相同的密鑰進行加密和解密,速度快但密鑰共享困難;非對稱加密使用一對密鑰,即公鑰和私鑰,公鑰用於加密,私鑰用於解密,更安全但處理速度較慢。
差別為何?對稱式加密就是想像你有一個珍貴的物品放在箱子裡,並用一把鑰匙鎖好。這把鑰匙是唯一可以開鎖的工具。如果你想讓遠方的朋友也能打開這個箱子,你需要把鑰匙安全地寄給他們,這裡的風險在於鑰匙在運送過程中可能會被第三方攔截。
非對稱式加密就是這次你有兩把鑰匙,一把你公開給所有人(公鑰),另一把你自己保留(私鑰)。你的朋友想傳送訊息給你,可以用你的公鑰來鎖上一個包含信息的箱子,一旦箱子被公鑰鎖上,只有你的私鑰能打開。這樣即使在傳輸過程中箱子被第三方得到,他們也無法打開它,因為沒有私鑰。反過來說,你想傳訊息給你朋友,就必須使用你朋友的公鑰鎖上箱子,這樣就只有你朋友持有的私鑰打得開那個箱子。
應用
對稱式:速度快,因此用在檔案加密,如幫壓縮檔上鎖等。
非對稱式:速度雖慢,但安全性高很多,用在初始建立網路連線時的資訊交換(HTTPS,網頁上的鎖頭)等。