Suzu macOS Playground

M00 · CTF

私鑰簽、公鑰驗:數位簽章方向感

用密碼學玩具產生一對金鑰,對一段 message 以「私鑰」簽出 signature,再以「公鑰」驗證; 接著竄改 message 一個字元重驗,觀察驗證失敗。判斷簽章保證了「完整性」與「來源」哪一項, 為 M03 的 CMS 簽章與「CDHash 一變即簽章失配」鋪路。

← 先讀 M00 章節

SHA-256 雪崩玩具

sha256(A):

sha256(B):

0 / 256 bit 不同(0%)改一個字元 → 約一半 bit 翻轉、毫無「接近」可言(雪崩)。

Web Crypto 真算(crypto.subtle.digest('SHA-256'))。這個「改一點 → 全變」是 macOS 敢用「雜湊一致=沒被動過」的基礎——直接接 M03 的 CDHash 雪崩。

過關目標

解答是「操作模擬器到對的狀態 + 能說出原理」,非提交 flag 字串。互動式自動評分為 roadmap 項目;目前以自我檢核完成。

提示

卡住時

方向只有一個——「私鑰簽、公鑰驗」。能產生對得上簽章的只有私鑰持有者;持公鑰者只能驗、造不出新簽章。

走錯方向時

簽的是 message 的「雜湊」,不是整份資料。所以 message 改一個 byte → 雜湊變 → 與簽章內的 digest 對不上 → 驗證失敗(雪崩 + 簽章合在一起)。

想更深入

雜湊只保證「沒被改」;簽章在此之上再保證「是該私鑰持有者背書」。M03 的 CMS 簽就是簽 CDHash——cdhash 一變,簽章立刻失配。

相關指令

opensslshasum
← 回 CTF 場