推 Clangpp: 感謝!!! 只是我要更正一下 const是我自己以為 同事並沒說 04/07 12:30
→ Clangpp: 他只說不要把密碼寫在#define中而已 04/07 12:30
→ Schottky: 沒關係,你可以問他那到底該怎樣寫,再驗證他的作法 XD 04/07 12:58
推 ronin728: 若須在程式儲存這種資訊,有沒有比較難被黑出來的方法? 04/07 17:39
要儲存就絕對會被挖出來。像樓下那樣不儲存,只驗證,才比較實際點。
→ kerwinhui: 通常會用個one-way hash再compare hashed value? 04/07 18:11
→ kerwinhui: 像Unix /etc/shadow只儲存密碼的md5sum 04/07 18:19
→ kerwinhui: 當然,現在md5 collision太容易了,也有rainbow table 04/07 18:22
在適合的應用上,這招是正解。你提出的瑕疵,可以補強。我過陣子再回文細說。
MD5 不要用了啦,如果要用常見的演算法,挑 SHA-2 家族或 SHA-3 比較好。
http://www.larc.usp.br/~pbarreto/hflounge.html
不說也猜得到,骷髏頭不能用,紅十字殘血不推薦,放大鏡是受過攻擊仍然健在。
(SHA-2 家族指 SHA-224, SHA-256, SHA-384, SHA-512 這四款)
→ TobyH4cker: 我試過IDA還是有辦法分析出來XD 04/07 18:50
可以跟大家分享一下 IDA 這個工具嗎?
推 askacis: 如果只是要防grep等級的窺看,化整為零把密碼拆成字元 04/07 18:58
→ askacis: 再用程式runtime把字元組起來,這樣text section不會有 04/07 18:59
你的方法就是密碼學說的 confusion & diffusion 兩種方法之 diffusion (錯位)
至於 confusion 怎麼做呢? 產生一串和 password 一樣長的亂碼,xor 上去即可。
為了再還原出原始的 password 明文,錯位的排法、xor 的遮罩都要保留下來,
也因此這樣做也只能防簡單的 grep,仔細去看還是可以掘出解碼的方法。
***** 所有的雙向加解密演算法都一樣 *****
我管你是用 AES 還是 RSA,反正只要鑰匙藏在踏墊下都沒用。
→ TobyH4cker: 哦哦這篇重點在直接搜binary 04/07 19:00
主要是要讓他拿去吐槽他同事 XD
順便讓原 PO 思考一下這個問題,所以才限制一下怪物等級,當作地下城第一層。
※ 編輯: Schottky (220.137.4.14), 04/07/2016 20:47:37
→ ronin728: 原來用hash是方法之一,長知識了,不過askacis大說的 04/07 21:19
→ ronin728: 方法能不能在動態分析的時候收割組合回來的結果呢? 04/07 21:20
推 Clangpp: 小弟學習了QQ 總之 code當中盡量不要放明文 04/07 21:30
→ Schottky: hash只適合用在驗證,若需要使用password明文就不適用了 04/07 21:32
→ Schottky: 動態分析可以呀,甚至你在debugger設個斷點都可以收割 04/07 21:32
推 Clangpp: 我本身研究所領域是做key agreement protocol的 所以平 04/07 21:33
→ Clangpp: 時只會去注意網路或是IPC間的傳輸如何做比較安全 04/07 21:34
→ Clangpp: 沒想到 coding本身也那麼多要注意阿QQ 04/07 21:34
→ Schottky: 目前也只討論到安全協定,沒講到實作coding部份啊 04/07 21:40
→ Schottky: coding真的建議看一下我說的那本書 04/07 21:40
→ Schottky: 只是你玩線上遊戲,我們現在玩的是單機而已 XD 04/07 21:41
推 laba5566: 推 長知識了 這串真棒 04/07 23:05
推 wuliou: 長知識 04/08 16:59