安全教育加密技術

AES-256-GCM + Argon2id:軍事級加密簡單說

✍️ ArcSign Security Team 📅 2026年4月8日
AES-256-GCM + Argon2id:軍事級加密簡單說

為什麼要認識 AES-256 和 Argon2id?

在加密錢包的世界裡,你經常會看到「AES-256 加密」、「軍事級加密」、「Argon2id KDF」這些詞出現在行銷頁上。但大多數用戶(甚至很多開發者)其實說不清楚這些到底是什麼、為什麼重要、選錯了會有什麼後果。

這篇文章的目標是用白話文把這組合拆解清楚。讀完之後,你會知道:為什麼「只有 AES-256」還不夠、為什麼密碼必須經過 Argon2id 處理、以及 ArcSign 的 .arcsign 加密備份檔為什麼能被稱為目前個人用戶能拿到的最強備份方案之一。

        一句話結論

**AES-256-GCM 負責加密並防竄改,Argon2id 負責把人類能記住的密碼變成夠強的加密金鑰。**兩者缺一不可 — 只有 AES 沒有好的 KDF,等於把軍事級保險箱配上紙糊的鑰匙。

AES-256 是什麼?3 分鐘白話版

AES(Advanced Encryption Standard,進階加密標準)是美國國家標準與技術研究院(NIST)在 2001 年公布的對稱式加密演算法。所謂「對稱式」的意思是:加密和解密用的是同一把金鑰 — 你用某把金鑰把資料鎖起來,就得用同一把金鑰才能打開。

後面那個 256 指的是金鑰長度 — 256 個位元,也就是 2 的 256 次方種可能組合。這個數字大到什麼程度?比宇宙中所有原子的數量還多。就算你把地球上所有的超級電腦加起來暴力破解,也需要超過宇宙年齡的時間。

為什麼它被稱為「軍事級」?

AES-256 被美國國安局(NSA)核准用於保護「Top Secret」(最高機密)等級的政府文件。這是美國政府對加密演算法所能給出的最高認證。全球的銀行、軍隊、情報機構都使用 AES 作為資料保護的基礎。當一篇文章說某產品使用「軍事級加密」時,指的幾乎一定就是 AES-256。

        重點提醒

AES-256 本身非常安全,但它只是演算法 — 真正的安全來自正確的使用方式:對的模式(如 GCM)、對的金鑰來源(如 Argon2id)、對的隨機數(CSPRNG)。錯用 AES 比沒加密還危險。

GCM 模式:同時防偷看和防竄改

AES 其實只是一個「區塊加密」的基本原語,它一次只能加密 128 位元的資料。要加密比這更長的內容(像是整個 .arcsign 備份檔),就必須搭配一個「加密模式」來決定怎麼把區塊串起來。常見的模式有 ECB、CBC、CTR、GCM 等,但在 2026 年的今天,GCM 幾乎是唯一合理的選擇

GCM 的兩個超能力

        1
        機密性(Confidentiality)

透過 Counter 模式把資料加密成看起來完全隨機的密文。沒有金鑰的人看到的就只是一堆雜訊,無法反推出原文。

        2
        完整性驗證(Authentication)

GCM 會在加密的同時產生一個 128 位元的「認證標籤」(Auth Tag)。只要有人改動密文中任何一個位元,解密時驗證就會失敗,系統會直接拒絕輸出,而不是吐出一堆亂碼讓你誤以為資料沒問題。

這種「加密 + 驗證」二合一的設計叫做 AEAD(Authenticated Encryption with Associated Data)。你可以把它理解成:GCM 不只把資料鎖起來,還會在箱子上貼一張防偽標籤。有人偷偷打開過,標籤就會破損,你一眼就能看出來。

模式機密性完整性並行化適用場景
ECB絕對不要用
CBC不可舊系統相容
CTR串流加密
GCM現代標準(TLS、.arcsign 備份)

Argon2id:把爛密碼變成好金鑰

這裡有一個關鍵矛盾:AES-256 需要一把 256-bit 的隨機金鑰才能發揮真正的強度,但人類記得住的密碼平均只有 30-50 bit 的熵值。如果你直接拿 MyP@ssw0rd2026 當 AES 金鑰(或用簡單的 hash),攻擊者只需要針對常見密碼列表做離線暴力破解,幾小時內就能破掉。

這就是**密鑰派生函數(KDF, Key Derivation Function)**存在的原因。Argon2id 就是目前最先進的 KDF — 它在 2015 年贏得了密碼 Hashing Competition 的冠軍,並在 2021 年成為 IETF RFC 9106 標準。

Argon2id 的防禦機制

        1
        加鹽(Salt)

每次派生金鑰時都加入一段獨特的隨機鹽值。即使兩個人用了一模一樣的密碼,得到的金鑰也完全不同,讓「彩虹表」攻擊失效。

        2
        記憶體困難(Memory-Hard)

運算過程強制使用大量記憶體(通常 64 MB 到 1 GB)。這讓攻擊者無法透過便宜的 GPU 或 ASIC 大規模並行破解 — 每多跑一個猜測都要付出昂貴的記憶體成本。

        3
        計算困難(Time-Hard)

派生過程刻意要花幾百毫秒。對你來說只是輸入密碼後多等 0.5 秒,但對想暴力破解上億組密碼的攻擊者來說,這是完全無法承受的成本。

        4
        混合模式(id)

Argon2 有 d、i、id 三種變體。id 同時具備 Argon2d 對 GPU 攻擊的抗性和 Argon2i 對時序攻擊(side-channel)的抗性,是官方推薦的預設選擇。

        小數字大差別

用一般 SHA-256 衍生金鑰,攻擊者每秒可嘗試幾十億組密碼;改用 Argon2id 後,同樣的硬體每秒只能嘗試幾百到幾千組。這代表攻擊成本提高了一百萬倍以上

ArcSign 如何用這組合保護 .arcsign 備份檔

了解了這些基礎後,讓我們看看 ArcSign 的 .arcsign 加密備份檔實際上發生了什麼事。在你點擊「匯出備份」的瞬間,以下流程自動執行:

        1
        產生隨機鹽值與 Nonce

ArcSign 使用作業系統的密碼學安全隨機數生成器(CSPRNG)產生 16 byte 的 Argon2id 鹽值,以及 12 byte 的 AES-GCM Nonce。這兩個值會明文寫在備份檔的 header 中(它們不是機密,每次匯出都會重新生成)。

        2
        用 Argon2id 派生 256-bit 金鑰

把你的錢包密碼 + 鹽值餵進 Argon2id,經過設定好的記憶體和時間參數後,產出一把 256-bit 的金鑰。這把金鑰只存在於記憶體中,永遠不會寫進任何檔案

        3
        用 AES-256-GCM 加密備份內容

把你的錢包狀態(包含已經過 XOR 三分片加密保護的私鑰片段、地址簿、設定等)用 AES-256-GCM 加密,並產生認證標籤。整包加密後的密文 + 標籤 + 鹽 + Nonce 寫入 .arcsign 檔。

        4
        立即銷毀記憶體中的金鑰

匯出完成後,派生出來的 AES 金鑰立即從記憶體中被清零銷毀。同時搭配 mlock 記憶體保護,確保金鑰在任何時刻都不會被換出到硬碟。

        重點:匯出就是加密完成

與某些錢包不同,ArcSign 的 .arcsign 備份檔沒有「先匯出再設密碼」這種中間狀態。當你看到檔案出現的那一刻,它就已經是完整加密的。即使有人此刻偷走你的電腦,也只能得到一個無法破解的加密檔。

跟其他加密方案比較

不同錢包對備份檔的加密處理方式有很大差異。以下是常見做法的比較:

方案加密演算法KDF完整性驗證離線暴力破解成本
純紙本助記詞零成本
簡單密碼 + SHA256AES-CBC單次 SHA256極低
傳統軟體錢包AES-CBCPBKDF2HMAC 後綴
ArcSign .arcsignAES-256-GCMArgon2id內建 AEAD極高

ArcSign 選擇 AES-256-GCM + Argon2id 的組合,是因為這正是 2026 年 IETF、NIST、OWASP 等權威機構共同推薦的現代最佳實踐。想更深入了解整套備份與恢復流程,可以參考我們的助記詞備份終極指南USB 備份策略兩篇文章。

常見的 AES 實作錯誤(看看 ArcSign 怎麼避開)

AES 本身很安全,但實作上的陷阱很多。以下列出最常見的錯誤,以及 ArcSign 如何避免:

錯誤一:使用 ECB 模式

ECB(Electronic Codebook)模式會讓相同的明文區塊加密後得到相同的密文。結果就是加密過的圖片還能看出原圖的輪廓(經典的「ECB 企鵝圖」)。ArcSign 永遠不使用 ECB,一律使用 GCM。

錯誤二:重複使用 Nonce

GCM 模式有一個鐵律:同一把金鑰搭配同一個 Nonce 絕對不能使用兩次。一旦重複,攻擊者就能透過數學運算直接還原出部分明文,甚至偽造認證標籤。ArcSign 每次匯出備份都用 CSPRNG 重新生成一個 12 byte 的隨機 Nonce,徹底避免這個問題。

錯誤三:用弱 KDF 或沒有 KDF

直接用 SHA256(password) 當金鑰、或使用低迭代次數的 PBKDF2,都會讓暴力破解變得便宜。ArcSign 使用 Argon2id 並採用 OWASP 推薦的參數,強迫攻擊者為每次嘗試付出昂貴的記憶體成本。

錯誤四:不驗證完整性就解密

使用 CBC 模式時,很多實作會「先解密再驗證」,這會遭受 Padding Oracle 攻擊。GCM 的 AEAD 設計強制在解密的同時驗證認證標籤,從根本上杜絕這類攻擊。

常見問題 FAQ

Q:AES-256 真的被稱為「軍事級加密」嗎?

是的。AES-256 被美國 NSA 核准用於保護最高機密(Top Secret)等級的政府文件,是全球公認最安全的對稱式加密演算法之一。目前沒有任何已知的實際可行攻擊能破解正確實作的 AES-256,即使是量子電腦也只能將其有效金鑰長度減半(由 Grover 演算法造成),仍然無法在可接受時間內暴力破解。

Q:為什麼 AES 還要搭配 Argon2id?

AES-256 需要一把 256-bit 的隨機金鑰才能發揮真正的安全強度,但人類記得住的密碼通常熵值很低(大約 30-50 bit)。Argon2id 是一個現代密鑰派生函數,能把一個短密碼加上鹽值,透過大量記憶體與計算運算,變成一把高熵的 256-bit 金鑰,同時讓暴力破解攻擊變得極度昂貴。

Q:ArcSign 的 .arcsign 備份檔需要另外設定密碼嗎?

不需要額外設定。ArcSign 的 .arcsign 備份檔匯出時就已經使用 AES-256-GCM 加密完成,金鑰透過 Argon2id 從你的錢包密碼派生出來。匯出就是加密完成,不會有「未加密」的中間狀態。即使備份檔被他人取得,沒有你的密碼也完全無法破解。

Q:GCM 模式跟 CBC 模式有什麼差別?為什麼選 GCM?

CBC 只提供機密性,無法驗證資料是否被竄改;GCM(Galois/Counter Mode)同時提供機密性與完整性驗證(AEAD 認證加密)。如果攻擊者試圖修改加密後的備份檔,GCM 在解密時會直接驗證失敗並拒絕輸出。這讓 GCM 成為現代加密系統的首選模式,也是 ArcSign 選擇它的原因。