權限開發的三大基礎觀念
在進行系統權限與認證開發時,必須清楚區分三個容易混淆的概念:雜湊 (Hash)、編碼 (Encode) 與加密 (Encrypt)。這三者各自有不同的數學與邏輯目的,若不加以區分,在後續處理 JWT、OTP 等機制時會產生嚴重誤解。
Web 實驗室 · YouTube · 4:32
本片段為「權限 101」課程的開頭,講師 KK 首先列出了開發者在處理權限與認證時必須清楚區分的三個核心觀念:雜湊 (Hash)、編碼 (Encode) 與加密 (Encrypt)。講師強調,若混淆這三者,在後續學習密碼認證、Token、OTP 或 JWT 等機制時將會產生誤解。隨後,講師聚焦於「雜湊」,透過白板繪圖直觀地展示了雜湊的運作流程:將一份原始資料(如文件或圖片)作為輸入,透過 Hash Function 處理後,輸出一個全新的值。 本片段以白板講解雜湊(Hash)的直觀性質:原始資料經 Hash Function 後會變得面目全非,難以找回。講者進一步說明,還原難度取決於雜湊演算法的複雜度,並舉 MD5、SHA-256、SHA-512 為例,其中 MD5 被描述為目前太簡單、較易被找回。隨後以 a -> xxx、b -> ooo 的示意解釋「查表」攻擊:若已知雜湊規則,可預先列出大量輸入輸出對應,再比對結果反推原始資料。最後引入 Rainbow Table,說明它是一種記載大量雜湊結果的常見查表。 本片段主要講解了雜湊(Hash)的單向性本質及其面臨的彩虹表(Rainbow Table)攻擊風險。講師首先透過白板流程圖說明,雖然雜湊運算是單向的,但攻擊者可以利用預先計算好的彩虹表,將截獲的雜湊值作為索引查詢,從而間接還原出原始資料。隨後,講師擦除彩虹表相關板書,回歸並強調雜湊的核心定義:在一般情況下,雜湊後的資料是無法直接透過逆運算推回原始資料的。這段內容揭示了理論上的數學單向性與實際工程中的安全漏洞之間的對比。
在学习检查器中查看要点和时刻,或切换阅读标签查看完整笔记。
依据视频画面与讲解整理,并非逐字语音转写。
影片開始,講師 KK 面對鏡頭問好,並點明本節課的主題是「權限 101」,將介紹三個必須掌握的基礎觀念。
講師轉身面向白板,開始逐一寫下這三個觀念的中英文名稱。首先寫下「雜湊 Hash」,接著寫下「編碼 Encode」,最後寫下「加密 Encrypt」。這三個詞彙在板書上垂直排列,清晰明瞭。
寫完板書後,講師轉回身強調這三者雖然常被一起提及,但本質完全不同。他特別指出,如果現在不釐清它們的區別,未來在實作密碼驗證、Token、OTP 或是 JWT 等進階認證機制時,就會因為概念混淆而寫出錯誤的邏輯。
為了讓觀眾直觀理解,講師開始詳細拆解第一個觀念「雜湊」。他從字面上解釋「雜」代表雜亂,「湊」代表湊合,意味著這是一種將資料打散重組的過程。接著,他拿起紅色麥克風在白板右側畫出一個方框,代表輸入的原始資料(可以是文件、圖片或文字)。然後畫出一個向右的箭頭,並在箭頭上方標註「Hash Function」。最後,在箭頭末端畫出第二個方框,代表經過雜湊運算後產生的一個全新的值。整個流程圖生動地展示了雜湊作為一種單向資料轉換機制的核心特徵。
片段一開始,白板上已經寫著「雜湊 Hash」「編碼 Encode」「加密 Encrypt」,上方還有流程圖:左側是文件圖示,中間標註「Hash Function」,右側是另一張較雜亂的圖示。講者先以直覺語言說明,原始資料經過雜湊後會變得非常混亂,難以從結果找回原本內容。
接著他把問題推進到「到底有多難找回」,答案取決於 hash function 的複雜度。這裡的推理順序是:先承認雜湊具有難以逆轉的直覺特性,再指出不同演算法的強度不同,因此還原難度也不同。
為了讓抽象說法落地,講者舉出常見例子:MD5、SHA-256,以及口頭補充的 SHA-512。白板同時寫下「ex. md5 / sha256」,把「不同雜湊方式」具體化為可比較的演算法名稱。
然後他以 MD5 作為反例,說明若雜湊函數太簡單,就像馬賽克遮蓋不足,仍然可能被還原。這裡的重點不是給出破解步驟,而是建立「演算法越簡單,越容易被找回」的風險直覺。
講者接著解釋「為什麼會被找回來」,引出查表技術。他的推理是:既然雜湊函數本身是已知的數學規則,那麼就可以預先把大量輸入與輸出的對應關係列出來;之後只要拿雜湊結果去比對表中的右側項目,就有機會反推出原始資料。
為了視覺化這個想法,他在白板上寫出「a -> xxx」與「b -> ooo」,並把兩組對應圈起來。這裡的 xxx 與 ooo 不是真實雜湊值,而是示意符號,用來表示「某些輸入會對應到某些輸出」的可列表關係。
最後,講者把一般查表過渡到一種常見表——Rainbow Table。白板擦去先前的示意筆跡後寫下「Rainbow Table」,口頭則說明它記載了大量雜湊後結果。片段在此結束,尚未展開 Rainbow Table 的內部構造。
在資訊安全領域,雖然雜湊(Hash)運算具有單向性,但這並不意味著它在實際應用中絕對安全。攻擊者可以建立一種稱為「彩虹表」(Rainbow Table)的資料庫,裡面儲存了大量常見字串與其對應雜湊值的對照關係。當攻擊者獲取到目標的雜湊值後,只需在彩虹表中進行查詢,就能直接找出產生該雜湊值的原始資料,從而繞過了數學上的單向限制。這就是為什麼在後續的資安課程中,我們會補充說明為何需要引入其他機制來強化雜湊的安全性。
現在讓我們把焦點拉回雜湊的核心概念。擦掉剛才提到的彩虹表攻擊手段,我們必須明確第一件基本事實:雜湊本質上是屬於「單向」的運算。
這意味著,在一般情況下,資料經過雜湊函數(如 MD5 或 SHA-256)處理後,我們是無法透過任何直接的逆向數學運算,從輸出的雜湊值推導回原始的輸入資料的。這種單向性是雜湊技術存在的基石。
在進行系統權限與認證開發時,必須清楚區分三個容易混淆的概念:雜湊 (Hash)、編碼 (Encode) 與加密 (Encrypt)。這三者各自有不同的數學與邏輯目的,若不加以區分,在後續處理 JWT、OTP 等機制時會產生嚴重誤解。
雜湊是透過特定的 Hash Function(哈希函數),將任意形式的輸入資料(如文件、圖片、字串)轉換成一個全新的、固定格式的值。這是一個單向的資料壓縮與打散過程,正如講師在白板上畫出的流程圖所示:輸入資料 -> Hash Function -> 輸出新值。
雜湊是指透過某種方式(通常稱為 Hash Function),將一份原始資料(如文件、圖片、文字等)轉換成一個新的值。這個過程被形容為把東西「很雜亂地湊在一起」。
本片段先用直覺方式說明雜湊:原始資料經過 Hash Function 後會變得面目全非,因此很難從結果找回原本內容。白板上的流程圖把這個過程視覺化為「文件 → Hash Function → 較雜亂結果」。這不是嚴格定義,而是入門級直覺。
講者指出,從雜湊結果反推原始資料的難度,取決於所用 hash function 有多複雜。演算法越複雜,結果越混亂,越難找回;演算法越簡單,越容易被還原。這一段是後續舉 MD5 例子的基礎。
片段列出 MD5、SHA-256,並口頭補充 SHA-512,作為常見雜湊方式的例子。白板上寫出「ex. md5 / sha256」。這些名字用來說明不同雜湊演算法在複雜度上有差異。
講者把 MD5 當作「太簡單」的例子,形容它像馬賽克蓋得不夠多,因此較容易被解碼或找回。這裡的重點是建立弱雜湊的風險直覺,而不是完整討論 MD5 的密碼學缺陷。
查表的核心想法是:若已知雜湊函數的對應規則,就可以預先把大量輸入與輸出列成表;之後只要比對雜湊結果,就有機會反推原始資料。講者用「a -> xxx」「b -> ooo」作示意,說明左側是輸入、右側是輸出。
Rainbow Table 在本片段中被介紹為一種常見的查表,用來記載大量雜湊後結果。講者先寫出名稱,再說明 Rainbow 就是彩虹。片段只給出名稱與用途,未展開其鏈式結構或縮減函數。
雜湊運算的核心特徵是單向性。這表示給定一個原始輸入,可以輕易計算出其雜湊值;但給定一個雜湊值,在計算複雜度上無法(或極難)透過逆運算還原出原始輸入。這是保護資料完整性與隱私的基礎數學性質。
一種針對雜湊函數的實用攻擊手法。攻擊者預先計算並儲存大量可能的輸入及其對應的雜湊值(即彩虹表)。當截獲某個雜湊值時,不再嘗試進行數學逆運算,而是直接在表中進行索引查詢。若命中,即可瞬間得知原始輸入。這說明了單純依賴雜湊的單向性不足以抵禦所有安全威脅。
MD5 和 SHA-256 是兩種廣為人知的密碼學雜湊函數。它們將任意長度的資料轉換為固定長度的字串(雜湊值)。在現代資安標準中,MD5 因碰撞漏洞已不被視為安全,而 SHA-256 仍被廣泛應用於數位簽章、區塊鏈等領域。
按知识点查看条件、步骤和证据。补充解释与视频直接内容分别标明。
白板上寫有 'Hash Function'
Hash Function
雜湊函數,用於將輸入資料轉換為新的值
資訊安全與密碼學
白板上寫有「Hash Function」,並以箭頭連接左側文件圖示與右側雜湊輸出圖示。
講者提到「你要看你這個 hash function 多複雜啦」。
Hash Function
將原始資料轉換為另一種輸出的雜湊函數;在本片段中以流程圖表示。
資訊安全/密碼學中的雜湊運算
白板寫出「ex. md5 / sha256」。
講者說「例如說像 MD5」,後又說「例如說像 MD5 就是目前被說已經太簡單」。
MD5
一種常見的雜湊演算法範例;講者稱其目前被認為太簡單。
雜湊演算法名稱
白板寫出「ex. md5 / sha256」。
講者說「或者是 SHA-256」。
SHA-256
另一種常見的雜湊演算法範例。
雜湊演算法名稱
講者說「或者是什麼 SHA-512 等等」。
白板未寫出 SHA-512,僅口頭提及。
SHA-512
講者補充提到的另一種雜湊演算法範例。
雜湊演算法名稱
白板寫出「a -> xxx」。
講者說「例如說它的 a 可能會變成 xxx」。
a -> xxx
以字母 a 作為輸入、以 xxx 作為對應輸出的示意規則,用來說明可預先列出對應關係。
查表示意的輸入輸出對應
白板寫出「b -> ooo」。
講者說「b 可能會變成圈圈圈」。
b -> ooo
以字母 b 作為輸入、以 ooo 作為對應輸出的示意規則,用來說明可預先列出對應關係。
查表示意的輸入輸出對應
白板寫出「Rainbow Table」。
講者說「我們會有一種表叫做 Rainbow Table」,並補充「Rainbow 就是彩虹」。
Rainbow Table
一種常見查表,用來記載許多雜湊後的結果。
密碼學攻擊用的預計算表
白板上寫有 'Hash Function'
Hash Function
雜湊函數,將輸入資料轉換為固定長度的輸出(雜湊值)
資訊安全、密碼學
白板上寫有 'ex: md5 / sha256'
md5
一種常見的雜湊演算法名稱
密碼學演算法
白板上寫有 'ex: md5 / sha256'
sha256
一種常見的雜湊演算法名稱
密碼學演算法
白板上寫有 'Rainbow Table',隨後被講師擦除
Rainbow Table
彩虹表,一種用於反轉雜湊值的預計算表格
密碼分析
講師說「第一個觀念呢,叫做雜湊」
白板上寫有「雜湊 Hash」
雜湊是指透過某種方式(通常稱為 Hash Function),將一份原始資料(如文件、圖片、文字等)轉換成一個新的值。這個過程被形容為把東西「很雜亂地湊在一起」。
存在原始輸入資料
使用特定的 Hash Function
講師說「第二個呢,叫做編碼」
白板上寫有「編碼 Encode」
編碼是權限基礎中需要區分的第二個觀念,英文為 Encode。影片此片段僅列出名稱,未展開其具體定義與運作方式。
講師說「最後呢,叫做加密」
白板上寫有「加密 Encrypt」
加密是權限基礎中需要區分的第三個觀念,英文為 Encrypt。影片此片段僅列出名稱,未展開其具體定義與運作方式。
講者說「很雜亂,把它湊在一起」「經過這個雜湊之後,它會變得面目全非」「你就很難去找到原本的東西」。
白板上方已有「雜湊 Hash」與文件經 Hash Function 轉為另一圖示的流程。
片段以直覺方式說明:原始資料經過雜湊後會變得非常混亂,難以從結果找回原本內容。這裡沒有給出嚴格數學定義,而是用「面目全非」「很難找回」來表達單向性。
適用於說明雜湊函數的直觀特性
本片段未說明嚴格前提或形式化條件
講者說「到底有多難呢?其實呢,你要看你這個 hash function 多複雜啦」「如果你的雜湊方式越複雜,那當然它就變得越面目全非……那你就越來越難去找回來」。
講者指出,從雜湊結果反推原始資料的難度取決於所用 hash function 的複雜程度;雜湊方式越複雜,結果越難被還原。
比較不同雜湊演算法時使用
本片段僅作定性說明,未給出量化指標
講者說「我們常見的雜湊有幾種,例如說像 MD5,或者是 SHA-256,或者是什麼 SHA-512 等等」。
白板寫出「ex. md5 / sha256」。
SHA-512 僅口頭提及,未寫在白板上。
片段列出 MD5、SHA-256、SHA-512 作為常見雜湊方式例子,用以說明不同 hash function 的複雜度差異。
作為例子出現
未說明這些演算法的內部結構或輸出長度
講者說「如果你的東西太簡單,例如說像 MD5 就是目前被說已經太簡單」「太簡單的話呢,它就就有點像是那種馬賽克蓋得不夠多,然後所以會被解碼一樣」「如果我們如果是太簡單的 hash function,就很容易被人家找回來」。
講者以 MD5 為例,說明若雜湊函數過於簡單,就像遮蓋不足的馬賽克,較容易被還原或破解。
用於說明弱雜湊演算法的風險
本片段未給出具體攻擊步驟或數學證明
講者說「這是因為有一種技術叫做查表」「因為 MD5 我們都知道它是某一個我們數學推出來的某一個數學的函式」「既然我們都知道有這個規則的話,那我們是不是可以預先先把這個規則先把它全部列出來」「右半邊這個東西跟這個東西到底有多像……我們就可以推回來說,哦,原來原始的資料是這個。這個東西我們就叫做查表」。
白板寫出「a -> xxx」與「b -> ooo」。
講者把這些對應關係圈起來,形成兩組配對示意。
片段說明:若已知某個雜湊函數的對應規則,就可以預先把大量輸入與輸出的對應關係列成表;之後只要比對雜湊結果,就能反查可能的原始資料。白板上的 a->xxx、b->ooo 是這種配對關係的簡化示意。
假設雜湊規則已知
假設可預先建立大量輸入輸出對應
本片段未討論碰撞、記憶體成本或查表命中率
講者說「那常見的表呢,我們會有一種表叫做 Rainbow Table」「Rainbow 就是彩虹,Rainbow Table」「那 Rainbow Table 呢,它就記載了非常多這種雜湊後」。
白板寫出「Rainbow Table」。
片段在「記載了非常多這種雜湊後」處結束,未完整說明 Rainbow Table 的構造細節。
講者將 Rainbow Table 介紹為一種常見查表,用來記載大量雜湊後的結果。片段只給出名稱與用途,未展開其具體生成方式。
作為查表攻擊的一種常見表
本片段未說明 rainbow chain 或縮減函數等細節
講師說:「雜湊是屬於單向的...雜湊後的資料是沒有辦法推回原始資料的。」
雜湊運算具有單向性,即從原始的輸入資料可以計算出雜湊值,但無法直接從雜湊值反向推導出原始的輸入資料。
適用於標準的加密雜湊函數
講師說:「去查這個 Rainbow Table 的時候,我們就可以知道它原本的這個東西是怎麼出來的。」
白板上寫有 'Rainbow Table'
雖然雜湊是單向的,但攻擊者可以透過建立「彩虹表」(Rainbow Table)來儲存大量常見輸入與其對應雜湊值的對照關係。當獲取到目標的雜湊值後,直接在彩虹表中查詢,即可找到對應的原始輸入,從而繞過單向性的限制。
存在預先計算好的彩虹表
目標資料的原始輸入包含在彩虹表的字典或計算範圍內
講師強調這三個觀念在做權限時非常重要,不了解會導致後續對密碼認證、Token、OTP、JWT 等產生誤會
在進行權限相關開發時,必須清楚了解雜湊(Hash)、編碼(Encode)、加密(Encrypt)三者的不同,否則會在後續處理密碼認證、Token 認證、OTP、JWT 等機制時產生誤會。
正在學習或實作權限與認證相關功能
對於所有學習權限的開發者
講者說「如果你的雜湊方式越複雜,那當然它就變得越面目全非……那你就越來越難去找回來」。
未給出形式化命題、量詞或證明,僅為口頭定性陳述。
若所使用的雜湊方式越複雜,則從雜湊結果找回原始資料就越困難。
比較對象為不同複雜度的雜湊方式
討論的是從雜湊結果反推原始資料的難度
對本片段所舉的常見雜湊方式作定性比較;未明確給出全域量詞。
講者說「例如說像 MD5 就是目前被說已經太簡單」「如果我們如果是太簡單的 hash function,就很容易被人家找回來」。
「目前被說已經太簡單」是講者轉述,片段未給出來源或技術細節。
MD5 在本片段中被描述為目前已被認為太簡單的雜湊函數,因此較容易被找回原始資料。
以 MD5 作為例子
討論的是其相對簡單性與可還原風險
針對 MD5 這一特定演算法的評述;未給出形式化量詞。
講者說「因為 MD5 我們都知道它是某一個我們數學推出來的某一個數學的函式」「既然我們都知道有這個規則的話,那我們是不是可以預先先把這個規則先把它全部列出來……這個東西我們就叫做查表」。
未說明可列出的範圍、碰撞處理與可行性限制。
若已知雜湊函數的對應規則,就可以預先列出大量輸入與輸出的對應關係,進而透過比對結果反查原始資料。
雜湊函數規則已知
可預先建立並儲存對應表
可將待測雜湊結果與表中項目比對
以 MD5 為例說明一般查表思路;未給出嚴格全域量詞。
講師在白板上畫出流程圖:左側畫一個代表資料的方框,中間畫箭頭並標註 'Hash Function',右側畫另一個方框代表輸出的新值
設定輸入:畫出一個方框,代表一份原始資料(可以是文件、圖片或一段文字)。
講師口述「假設這是我的一份資料...它可以是一份圖,它可以是一段字」
應用函數:從輸入方框畫出箭頭指向右側,並在箭頭旁標註 'Hash Function'。
講師口述「透過某個方法,我們通常叫做 Hash Function」
產生輸出:在箭頭末端畫出另一個方框,代表經過雜湊後產生的新值。
講師口述「變成一個新的東西...這個東西就叫做被雜湊後出來的值」
雜湊是一個單向的資料轉換過程,輸入任意形式的資料,經過 Hash Function 處理後,會輸出一個全新的值。
講者從「為什麼會被找回來」出發,說明「有一種技術叫做查表」,再以「a 可能會變成 xxx,b 可能會變成圈圈圈」舉例,最後說「預先先把這個規則先把它全部列出來」並比對右半邊結果。
白板寫出「a -> xxx」與「b -> ooo」。
講者把兩組對應圈起來,形成配對示意。
這是直覺推導,不是嚴格證明;未處理碰撞與表大小問題。
講者先指出 MD5 等雜湊函數是已知的數學函式,因此其輸入輸出規則可被了解。
來自音訊:「因為 MD5 我們都知道它是某一個我們數學推出來的某一個數學的函式」。
用簡單符號示範某些輸入會對應到某些輸出。
來自白板公式與音訊舉例:「a 可能會變成 xxx,b 可能會變成圈圈圈」。
既然規則已知,就可以把許多可能的對應先全部列出來。
來自音訊:「既然我們都知道有這個規則的話,那我們是不是可以預先先把這個規則先把它全部列出來」。
拿到某個雜湊結果後,與表中已列出的輸出相比,找出最相符或相同的項目。
來自音訊:「右半邊這個東西跟這個東西到底有多像……我們只要想辦法找到它」。
一旦在表中找到對應,就能推回原始輸入是什麼。
來自音訊:「我們就可以推回來說,哦,原來原始的資料是這個。這個東西我們就叫做查表」。
查表攻擊的核心想法是:利用已知的雜湊規則預先建立大量輸入輸出對應,再透過比對雜湊結果反查可能的原始資料。
白板上方畫出文件圖示經「Hash Function」箭頭指向另一張較雜亂的圖示。
講者說「經過這個雜湊之後,它會變得面目全非」「如果你的雜湊方式越複雜,那當然它就變得越面目全非……那你就越來越難去找回來」。
視覺流程只表達概念,未顯示具體演算法或數學式。
畫面以左側文件經中間 Hash Function 轉為右側較雜亂圖示,表示資料被轉換。
來自白板流程圖與講者對「雜湊」的說明。
講者進一步說明,複雜度越高,輸出看起來越混亂。
來自音訊:「如果你的雜湊方式越複雜,那當然它就變得越面目全非」。
最後把視覺上的混亂程度與還原難度連結起來。
來自音訊:「那你就越來越難去找回來」。
流程圖與口頭說明共同表達:雜湊函數把原始資料轉成更混亂的結果,且演算法越複雜,反向還原越困難。
講師解釋了透過 Rainbow Table 查出原本資料的過程
白板上的流程圖顯示:資料 -> Hash Function -> 雜湊值
正常流程:原始資料經過 Hash Function 產生雜湊值。
白板上的流程圖示與講師對雜湊基礎概念的說明。
攻擊流程:攻擊者利用預先建立的 Rainbow Table,將截獲的雜湊值作為索引進行查詢。
講師口述「去查這個 Rainbow Table 的時候」。
結果:透過查詢 Rainbow Table,可以直接得知產生該雜湊值的原始資料是什麼。
講師口述「我們就可以知道它原本的這個東西是怎麼出來的」。
彩虹表攻擊利用了預計算的對照表,成功逆向了雜湊函數的單向性,這說明了單純依賴雜湊保護敏感資料(如密碼)存在安全風險。
講者說「我們常見的雜湊有幾種,例如說像 MD5,或者是 SHA-256,或者是什麼 SHA-512 等等」,接著說「例如說像 MD5 就是目前被說已經太簡單」。
白板寫出「ex. md5 / sha256」。
未給出任何實際輸入字串、輸出雜湊值或計算過程。
用常見雜湊演算法例子說明:不同 hash function 的複雜度會影響從結果找回原始資料的難度。
MD5
SHA-256
SHA-512 為口頭補充例子
講者稱 MD5 目前被認為太簡單
說明雜湊方式越複雜越難還原,而過簡單的雜湊如 MD5 較容易被找回。
先用例子建立「有不同雜湊方式」的背景。
來自音訊與白板「ex. md5 / sha256」。
講者指出複雜度越高,結果越面目全非,越難找回。
來自音訊:「如果你的雜湊方式越複雜……那你就越來越難去找回來」。
再舉 MD5 為例,說明太簡單的 hash function 容易被還原。
來自音訊:「例如說像 MD5 就是目前被說已經太簡單……就很容易被人家找回來」。
MD5 被用作「過簡單、較易被找回」的例子;SHA-256 與 SHA-512 則作為其他常見雜湊演算法例子。
片段未提供數值驗證或實際破解演示,僅以口頭例子與白板列名作說明。
白板寫出「a -> xxx」與「b -> ooo」。
講者說「例如說它的 a 可能會變成 xxx,b 可能會變成圈圈圈」「預先先把這個規則先把它全部列出來……右半邊這個東西跟這個東西到底有多像……我們就可以推回來說,哦,原來原始的資料是這個」。
講者把這些對應圈起來,形成兩組配對。
xxx 與 ooo 只是示意符號,不是真實雜湊輸出。
用極簡符號示範如何預先列出雜湊對應關係,再靠比對反查原始資料。
輸入 a 對應輸出 xxx
輸入 b 對應輸出 ooo
這些對應規則已知
說明查表法如何透過預先列表與比對來找回原始資料。
先寫出一個輸入與其雜湊後示意輸出的對應。
來自白板與音訊舉例。
再寫出第二組輸入輸出對應。
來自白板與音訊舉例。
將大量類似對應先全部列出。
來自音訊:「預先先把這個規則先把它全部列出來」。
拿到待查結果後,與表中右側項目比較相似度或相同性。
來自音訊:「右半邊這個東西跟這個東西到底有多像」。
若比對成功,就可推回原始資料。
來自音訊:「我們就可以推回來說,哦,原來原始的資料是這個」。
查表法的示意結果是:透過預先建立的對應表,可由雜湊輸出反查可能的原始輸入。
片段未給出真實雜湊值或碰撞檢查,僅以符號示意驗證思路。
講師依序在白板上寫下「雜湊 Hash」、「編碼 Encode」、「加密 Encrypt」三個詞彙
白板
藍色麥克風
文字
白板從空白狀態逐漸增加三行中英文對照的文字
講師站在白板前方
使用藍色麥克風書寫
直觀地羅列了本次課程需要區分的三個易混淆概念。
講師換用紅色麥克風,畫出「資料方框 -> Hash Function -> 新值方框」的流程圖
紅色麥克風
兩個方框
箭頭
文字 'Hash Function'
從無到有繪製出完整的資料轉換流程圖
顏色從藍色變為紅色以突出當前講解的細節
白板上的三個標題保持不變
將抽象的雜湊概念具象化為輸入、處理、輸出的系統流程。
白板上方可見「雜湊 Hash」,旁邊畫有文件圖示、箭頭、文字「Hash Function」,以及右側較雜亂的輸出圖示。
講者用手指向流程圖,並在右側輸出圖示附近做遮蓋、比劃動作。
左側文件圖示
中間「Hash Function」文字與箭頭
右側雜湊結果圖示
講者的手勢
講者指向流程圖不同部分
右手在右側輸出圖示附近做覆蓋與比劃,強調結果變得混亂
流程方向始終是從左側原始資料經 Hash Function 到右側結果
白板上的主要文字與圖形位置不變
該圖視覺化地表示:原始資料經過雜湊函數後,會變成另一種更難辨識的結果。
講者轉身面向白板,在「ex.」後依序寫下「md5 / sha256」。
新增白板文字「ex. md5 / sha256」。
白板原有流程圖
新寫出的「ex. md5 / sha256」
講者手持紅藍白板筆
白板下方新增例子文字
講者身體從面向鏡頭轉為面向白板再轉回
上方原有「雜湊 Hash / 編碼 Encode / 加密 Encrypt」清單保持可見
視覺上把抽象的「不同雜湊方式」落到具體演算法名稱,輔助說明複雜度差異。
講者在白板上寫出「a -> xxx」與「b -> ooo」,隨後用紅筆把這些對應圈起來。
白板新增「a -> xxx」與「b -> ooo」。
兩組對應被圈成配對式示意圖。
a 映射到 xxx
b 映射到 ooo
紅色圈選線
講者手勢
先寫出兩組輸入輸出對應
再把它們圈起來形成配對視覺
講者以手比對左右兩側
對應方向都是左側輸入指向右側輸出
原有流程圖與例子文字仍在白板上方
圈選動作把「輸入—輸出」配對強調成可預先列表、可相互比對的物件,視覺化查表攻擊的核心。
講者拿起板擦擦掉先前查表示意的一部分,然後重新寫下「Rainbow Table」。
白板最終可見「Rainbow Table」。
被擦掉的具體筆跡範圍在快速動作中不完全清晰,但可見查表示意被清理後改寫新名詞。
板擦
原查表示意筆跡
新寫出的「Rainbow Table」
舊的 a->xxx、b->ooo 示意被擦除
白板改寫為「Rainbow Table」
講者邊寫邊口頭解釋名稱
上方原有雜湊流程圖與「ex. md5 / sha256」仍保留
視覺上從一般查表示例過渡到專有名詞 Rainbow Table,標示下一階段要介紹的特定表型。
白板右側畫有一個方框代表輸入資料,箭頭指向 'Hash Function',再指向另一個帶有塗鴉的方框代表輸出的雜湊值。下方寫有 'ex: md5 / sha256'。
輸入資料方框
Hash Function 文字
輸出雜湊值方框
箭頭
演算法範例文字
講師在講解過程中多次用筆指著流程圖的不同部分以輔助說明
流程圖的整體結構保持不變
視覺化展示了雜湊運算的單向數據流:從明文輸入經過特定演算法轉換為密文輸出。
講師使用白板擦將原本寫在白板上的 'Rainbow Table' 字樣擦除。
白板擦
Rainbow Table 字樣
'Rainbow Table' 字樣從白板上消失
其他白板內容不受影響
標誌著關於彩虹表攻擊的補充說明結束,講師準備回歸並總結雜湊的核心性質。
講師提到如果不了解這三個的不同,在後面做密碼認證、Token、OTP、JWT 時都會誤會它的意思
初學者常將雜湊(Hash)、編碼(Encode)與加密(Encrypt)視為同一種技術或不加區分。
這三者是完全不同的觀念。在權限與認證系統中,它們各自扮演不同的角色,必須明確區分以避免在實作 JWT、OTP 等機制時產生邏輯錯誤。
講者用「很雜亂,把它湊在一起」「面目全非」描述雜湊結果。
分析員補充:此處是直覺說法,不等於雜湊函數的正式定義。
學習者可能以為雜湊只是把資料隨便打亂。
本片段只給出直覺描述;嚴格而言,雜湊函數是有確定規則的函數,其重點在於難以反向還原,而非任意亂序。此澄清為分析員補充,非講者原話。
講者說 MD5「太簡單」,並用「馬賽克蓋得不夠多」比喻。
講者未區分「太簡單」與「已被證明存在碰撞攻擊」等更精確的密碼學表述。
學習者可能把 MD5 不安全單純理解為演算法太簡單。
片段確實以「太簡單」作通俗比喻,但未展開真正的密碼學原因。此處應理解為初級直覺說明,而非完整技術分析。該提醒為分析員補充。
講者說比對右半邊結果後「就可以推回來說,哦,原來原始的資料是這個」。
講者未討論多個輸入映射到同一輸出的情況。
學習者可能以為只要查到匹配項,就必然得到唯一正確原文。
本片段只示範直覺流程,未處理碰撞或多解情況;實際上查表匹配不一定保證唯一原像。此提醒為分析員補充,不是講者已說明的內容。
講師強調:「一般情況下,我們雜湊的原...雜湊後的資料是沒有辦法推回原始資料的。」
初學者可能認為因為雜湊是單向函數,所以永遠無法從雜湊值還原出原始資料。
雖然數學上雜湊是單向的(無法直接通過逆運算求解),但在實際應用中,攻擊者可以透過「彩虹表」等查表法或暴力破解來間接還原原始資料。因此,不能單純依賴雜湊的單向性來保證絕對的安全。
講師將這三個詞彙並列為做權限時需要知道的三個觀念,並強調要了解它們的不同
雜湊與編碼是權限開發中需要嚴格區分的兩個不同概念。
講師將這三個詞彙並列為做權限時需要知道的三個觀念,並強調要了解它們的不同
雜湊與加密是權限開發中需要嚴格區分的兩個不同概念。
講師將這三個詞彙並列為做權限時需要知道的三個觀念,並強調要了解它們的不同
編碼與加密是權限開發中需要嚴格區分的兩個不同概念。
講者先說明雜湊使資料面目全非,再說「到底有多難呢?其實呢,你要看你這個 hash function 多複雜啦」。
要先理解雜湊會讓資料難以還原,才能進一步理解不同 hash function 的複雜度如何影響還原難度。
講者在談完複雜度後立即舉例「我們常見的雜湊有幾種,例如說像 MD5,或者是 SHA-256,或者是什麼 SHA-512 等等」。
MD5、SHA-256、SHA-512 是用來具體說明「不同雜湊方式複雜度不同」的例子。
講者先列出 MD5、SHA-256、SHA-512,再單獨說「例如說像 MD5 就是目前被說已經太簡單」。
MD5 是常見雜湊演算法中的一個特例,被用來示範「過簡單因而較易被找回」。
講者先說太簡單的 hash function 容易被找回,接著問「那為什麼我們會被找回來?」並回答「這是因為有一種技術叫做查表」。
片段用查表想法來解釋為什麼像 MD5 這種較弱的雜湊結果可能被找回。
講者先定義一般查表,再說「那常見的表呢,我們會有一種表叫做 Rainbow Table」。
Rainbow Table 是本片段所述查表概念中的一種常見特定表。
講師先講了 Rainbow Table 可以查出原本資料,接著總結雜湊是單向的,無法直接推回。
彩虹表攻擊(間接逆轉)與雜湊的單向性(直接不可逆)形成了對比。單向性是雜湊的數學本質,而彩虹表是利用計算空間換取時間的實用攻擊手段,打破了單向性帶來的安全感。
講師解釋雜湊的定義與流程
講師強調這三者不同且容易混淆
講者說明雜湊後「面目全非」「很難去找到原本的東西」。
講者說「你要看你這個 hash function 多複雜啦」「雜湊方式越複雜……越難去找回來」。
白板寫出「ex. md5 / sha256」。
講者提到 MD5、SHA-256、SHA-512。
講者說 MD5「太簡單」,像「馬賽克蓋得不夠多」,所以「很容易被人家找回來」。
講者解釋「有一種技術叫做查表」,並用 a->xxx、b->ooo 示範。
白板寫出「Rainbow Table」。
講者說這是一種常見的表,記載很多雜湊後結果。
白板寫出「a -> xxx」與「b -> ooo」。
講者用這些例子說明預先列出規則再比對。
文件圖示經「Hash Function」箭頭指向另一圖示。
講師解釋了透過 Rainbow Table 查出原本資料的過程
講師說雜湊是單向的,沒有辦法推回原始資料
已覆盖 · 開場問候與課程主題引入(權限 101 的三個觀念)
已覆盖 · 講師依序寫下並唸出雜湊、編碼、加密三個名詞
已覆盖 · 強調區分三者的重要性及後續應用場景(JWT, OTP等)
已覆盖 · 詳細講解雜湊的定義,並繪製流程圖說明其輸入輸出過程
已覆盖 · 說明雜湊使資料面目全非、難以還原,並對應白板流程圖。
已覆盖 · 說明找回難度取決於 hash function 複雜度。
已覆盖 · 列出 MD5、SHA-256、SHA-512,並以 MD5 為例說明過簡單風險。
已覆盖 · 解釋查表攻擊思想,並以 a->xxx、b->ooo 示範。
已覆盖 · 引入 Rainbow Table 作為常見查表。
已覆盖 · 講師講解彩虹表如何透過查表還原原始資料,並配合白板流程圖說明。
已覆盖 · 講師擦除白板上的 Rainbow Table 字樣,過渡到下一個知識點。
已覆盖 · 講師總結雜湊的單向性本質,強調一般情況下無法直接從雜湊值推回原始資料。
已审核的主题路径