• 2

賊有趣 的 AES-128/AES-256 對稱式 加密

前緣 :

拿起 小算盤 按 1+1= ?
連續 搞 3 次,
結果是 2,
結果是 2,
結果是 2.

結論 : 相同 參數 得到 相同 結果 賊合理.

那 寫了個 程式 使用 AES-128/AES-256 加密,
使用 相同 參數(包括 相同 密碼) 加密 同個檔案,
例 :
原檔 Test.exe
copy Test.exe Test1.exe
copy Test.exe Test2.exe
copy Test.exe Test3.exe
加密後 神奇的是 Test1.exe 及 Test2.exe 及 Test3.exe 內容 完全 不 1 樣,
解密後 完全 不 1 樣的 Test1.exe 及 Test2.exe 及 Test3.exe 又能 與 原檔 Test.exe 1 模 1 樣.
這 與 前面的 結論 : 相同 參數 得到 相同 結果 完全不同 完全不同 完全不同.

老 中古電腦 Intel 8 代 :
AES 128 加密 100 MB : 8 秒
AES 256 加密 100 MB : 10 秒
AES 128 解密 100 MB : 2 分 38 秒
AES 256 解密 100 MB : 3 分 48 秒

解密 還能 可調時間(快慢) 讓 你 試 蠻力 都 費時 到 地球毀滅,
目前 先讓 解密 是 加密 的 20 倍左右 耗時.

賊有趣 的 AES-128/AES-256 對稱式 加密

賊有趣 的 AES-128/AES-256 對稱式 加密

賊有趣 的 AES-128/AES-256 對稱式 加密

賊有趣 的 AES-128/AES-256 對稱式 加密

賊有趣 的 AES-128/AES-256 對稱式 加密
★★★ "我要留言" 不回, 只回 1 般回文. ★★★
2026-07-19 19:37 發佈
Salt 和 IV 也要算進參數裡面
buddy0328 wrote:
Salt 和 IV 也要算進參數裡面


剛 又 仔細 看了 Salt 和 IV,
確實 不 1 樣.
★★★ "我要留言" 不回, 只回 1 般回文. ★★★
能好奇問一下比較細節的部分嗎?
想知道「塊鏈結模式」、「填充模式」還有「金鑰推導函式」是用什麼

如果是自己開發的軟體,可以這樣測試一下,以確保實作沒問題:
* 自己軟體加密,用其他軟體解密
* 用其他軟體加密,用自己軟體解密
ren1244 wrote:
能好奇問一下比較細節的部分嗎?
想知道「塊鏈結模式」、「填充模式」還有「金鑰推導函式」是用什麼
如果是自己開發的軟體,可以這樣測試一下,以確保實作沒問題:
* 自己軟體加密,用其他軟體解密
* 用其他軟體加密,用自己軟體解密


我 不是 Programmer 細節 不了解.

如果 只是 純 被加密的資料,
用 AES 應該不會 被 解密,
但 如果 是 程式 就 難 保證,
因為 程式 會被 靜態/動態 分析/逆向/追蹤,
這些 解密參數 賊可能 被 趴出來,
再寫個 程式 將 這些 解密參數 用來 解密資料.

例如 如圖 :
某程式的 解密關鍵,
你 就可 直接 寫程式 解密.



★★★ "我要留言" 不回, 只回 1 般回文. ★★★
以下是個人的一些看法

IQuit wrote:
老 中古電腦 Intel 8 代 :
AES 128 加密 100 MB : 8 秒
AES 256 加密 100 MB : 10 秒
AES 128 解密 100 MB : 2 分 38 秒
AES 256 解密 100 MB : 3 分 48 秒


我是覺得這時間有點長,100M算小檔案,就算中古電腦也不會跑到那麼久

IQuit wrote:
解密 還能 可調時間(快慢) 讓 你 試 蠻力 都 費時 到 地球毀滅,
目前 先讓 解密 是 加密 的 20 倍左右 耗時.


AES 是對稱加密,運算量是對等的,理論上加密跟解密的時間應該差不多
所以我有點擔心那個程式是用他自己的加密方式
而不是採用業界標準的實作

IQuit wrote:
但 如果 是 程式 就 難 保證,
因為 程式 會被 靜態/動態 分析/逆向/追蹤,
這些 解密參數 賊可能 被 趴出來,
再寫個 程式 將 這些 解密參數 用來 解密資料.


隱藏演算法雖然可以稍微增加破解難度
但目前現代密碼學是建立在就算演算法公開
只要密鑰沒有洩漏,一樣是極難破解的
(隱藏演算法算是錦上添花,而不是必要)
我們生活中其實很多加密應用都是公開演算法的基礎下進行的
例如 https、BitLocker 等都不擔心演算法被公開檢視
反而透過開源與公開驗證來確認其可靠性
在密碼學觀點下,保護金鑰的安全遠比隱藏演算法重要得多
ren1244 wrote:
以下是個人的一些看法<
我是覺得這時間有點長,100M算小檔案,就算中古電腦也不會跑到那麼久


使用 免費的 IMDisk 測了下 如圖 :
若用 商用 RAM Disk 會 更快,
之前 M01 有人 貼圖.



ren1244 wrote:
AES 是對稱加密,運算量是對等的,理論上加密跟解密的時間應該差不多
所以我有點擔心那個程式是用他自己的加密方式
而不是採用業界標準的實作


前面 說過了.

解密 還能 可調時間(快慢) 讓 你 試 蠻力 都 費時 到 地球毀滅,
目前 先讓 解密 是 加密 的 20 倍左右 耗時.

ren1244 wrote:
隱藏演算法雖然可以稍微增加破解難度
但目前現代密碼學是建立在就算演算法公開
只要密鑰沒有洩漏,一樣是極難破解的
(隱藏演算法算是錦上添花,而不是必要)
我們生活中其實很多加密應用都是公開演算法的基礎下進行的
例如 https、BitLocker 等都不擔心演算法被公開檢視
反而透過開源與公開驗證來確認其可靠性
在密碼學觀點下,保護金鑰的安全遠比隱藏演算法重要得多


前面 說過了.

資料 是 死的,
程式 是 活的.

網上 有 教學,
找出 解密參數 再 餵給 程式,
沒人 會去 碰 算法,
重點 在於 寫程式的人 如何 保護 解密參數.
★★★ "我要留言" 不回, 只回 1 般回文. ★★★
IQuit wrote:
前面 說過了.

資料 是 死的,
程式 是 活的.

網上 有 教學,
找出 解密參數 再 餵給 程式,
沒人 會去 碰 算法,
重點 在於 寫程式的人 如何 保護 解密參數.


以你一開始的命令列工具來說,他程式裡面應該只能看出他用了什麼演算法
包含:
1. 塊鏈結模式是 CBC、GCM …
2. 填充是 PSCS7 或其他
3. 金鑰衍伸函數是 PBKDF2 或其他

至於 IV 跟 SALT 通常都是隨機產生,程式裡面看不到
(不過 IV 跟 SALT 都會附在加密的檔案裡面,也是公開的)

假設以上資訊都被知道,但不知道使用者的當時加密使用的密碼
那麼在密碼學上還是安全的

至於有些在程式中夾帶一些雜湊等參數(可能是你說的解密參數)
通常是為了防偽或保護等目的
主要是用來防一般使用者而已
這是另外一回事

正常的加解密程式不怕被人看他是怎麼寫的
因為真正要保護的是密鑰或金鑰
而不是加解密程式

例如 zip 加解密的程式大家都有
但是不知道密碼就是極難打開
反過來說如果因為對 zip 加解密程式做逆向工程就可以輕易打開別人加密的 zip 檔案
這樣還有人敢用嗎?
ren1244 wrote:
以你一開始的命令列工具來說,他程式裡面應該只能看出他用了什麼演算法
包含:
1. 塊鏈結模式是 CBC、GCM …
2. 填充是 PSCS7 或其他
3. 金鑰衍伸函數是 PBKDF2 或其他
至於 IV 跟 SALT 通常都是隨機產生,程式裡面看不到
(不過 IV 跟 SALT 都會附在加密的檔案裡面,也是公開的)
假設以上資訊都被知道,但不知道使用者的當時加密使用的密碼
那麼在密碼學上還是安全的
至於有些在程式中夾帶一些雜湊等參數(可能是你說的解密參數)
通常是為了防偽或保護等目的
主要是用來防一般使用者而已
這是另外一回事
正常的加解密程式不怕被人看他是怎麼寫的
因為真正要保護的是密鑰或金鑰
而不是加解密程式
例如 zip 加解密的程式大家都有
但是不知道密碼就是極難打開
反過來說如果因為對 zip 加解密程式做逆向工程就可以輕易打開別人加密的 zip 檔案
這樣還有人敢用嗎?


看 你 的 發文,
你 不大 了解 程式 與 資料 的 區別,
有 興趣的人 是 先 處理 程式 再去 處理 資料,
先去 處理 活物 再去 處理 死物.

而 前面 也說了,
沒人 會去 碰 算法,
沒人 會去 碰 算法,
沒人 會去 碰 算法,
破口點 不在 此.
★★★ "我要留言" 不回, 只回 1 般回文. ★★★
IQuit wrote:
有 興趣的人 是 先 處理 程式 再去 處理 資料,
先去 處理 活物 再去 處理 死物.


所謂有興趣的人是指破解者嗎?

IQuit wrote:
而 前面 也說了,
沒人 會去 碰 算法,
沒人 會去 碰 算法,
沒人 會去 碰 算法,
破口點 不在 此.


因為你說「先 處理 程式 再去 處理 資料」
我是否把你說的能理解成「如果想破解,那麼去對程式做逆向工程比較容易成功?」

那麼我的觀點是
對於正確實作的加解密程式來說
並不害怕攻擊者對加解密程式做逆向工程
因為加解密程式本來就是廣發給大家用的
(例如 7z 大家都能下載來解開有加密的 zip 檔案)
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?