[閒聊] 2017.W30 - 實務上的密碼學應用

看板NetSecurity (資安 資訊安全)作者 (不要偷 Q)時間7年前 (2017/07/25 20:43), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
2017.W30 - 實務上的密碼學應用 > 有沒有一種方式 告訴妳方法但依然讓你不知道答案 ## 前言 ## 不知道有沒有人曾經好奇過 為什麼都告訴你密碼怎樣算了 (演算法) 但是還是沒有一個有效的破解密碼方式 ## 內容 ## 可以參考 2017.W19 - 橢圓曲線加密 ECC 的內容 這次講的是更一般的概念 密碼學如何使用才會比較安全 這篇 Slide[0] 的內容提到如何在白箱環境上做加密方案的攻擊 白箱 (white-box) 代表擁有完全自主的測試環境與任意操作的程式 除了不一定有原始碼之外 通常代表著擁有絕對自主的測試 對密碼學來說是一個嚴酷的考驗:完全考驗加密演算法的實作與設計架構 概念上來說我們知道 越長的金鑰代表著越好的防護等級 用暴力破解的概念 純數字的密碼一定比數字字母混合的密碼還要弱 同樣的 具有不可逆的特性也會比可逆的演算法還要安全 除了針對演算法攻擊的方式外 還有所謂的旁道攻擊 (Side-Channel attach)[2] 可以參考 2017.W08 - Side-Channel Attack 的內容 也就是透過非密碼學本身的方式 (e.g. 電量、時間) 來破解密碼 或者是利用差分攻擊 (Differential Fault analysis) [3] 藉由修改部分資料來推算原本的金鑰 之前提過的內容中說過 密碼學都建構在已知的數學難題上 但還可能因為若干種實作上的瑕疵 降低整個系統的安全強度 原則來說 只需要有足夠多的密文就能夠反推原本使用的金鑰 所以對於不同的系統 最好使用不同的金鑰來加密 當然 解密用的金鑰也千萬不要 hardcode 在系統當中 有興趣可以參考 CVE 中各種 hardcode credentials 的案例 另一種常犯的密碼學錯誤 則是使用固定的 IV[4] 可以想像 IV 就是 Hash 中使用到的 Salt 這是用來加強整體安全性的機制 一個好的 IV 需要使用到全隨機數 但實務上會使用偽隨機數產生器 (PRNG) 每次加密都使用新的 IV 來避免攻擊者收集足夠多的內容 來反推原本的金鑰 延伸這個概念與一開始提到的 有能力的話可以針對每一個裝置使用獨特的金鑰來加密 像透過一個密鑰 + 裝置的獨特 UUID 來當作是新的密鑰來加密 則這個裝置的密鑰 1) 只有擁有密鑰的開發者 2) 知道 UUID 才有辦法重新產生 [0]: https://www.slideshare.net/linecorp/practical-attacks-on-commercial-whitebox-cryptography-solutions [1]: https://zh.wikipedia.org/zh-tw/%E7%99%BD%E7%9B%92%E6%B5%8B%E8%AF%95 [2]: https://zh.wikipedia.org/zh-tw/%E6%97%81%E8%B7%AF%E6%94%BB%E5%87%BB [3]: https://zh.wikipedia.org/wiki/%E5%B7%AE%E5%88%A5%E9%8C%AF%E8%AA%A4%E5%88%86%E6%9E%90 [4]: https://zh.wikipedia.org/wiki/%E5%88%9D%E5%A7%8B%E5%90%91%E9%87%8F -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.122.171 ※ 文章網址: https://www.ptt.cc/bbs/NetSecurity/M.1500986584.A.ECB.html
文章代碼(AID): #1PTppOxB (NetSecurity)
文章代碼(AID): #1PTppOxB (NetSecurity)