網路城邦
上一篇 回創作列表 下一篇  字體:
從密碼驗證的發展來看全球智障化的發展
2018/11/07 00:33:55瀏覽1415|回應0|推薦5

傻蛋這次要吐嘈的是現在的密碼機制。

當然,要從最源頭的故事說起,我們才好看清楚這個機制是怎樣的荒謬法。

 

密碼,資訊系統的密碼,或是一些網站的密碼。

就是你登入時要填寫的,那個通常會隱藏輸入值的那個密碼。

帳號和密碼都被人知道,這個帳號可能就不再是自己的了。

密碼啊密碼,好像有點神祕與高深?

從頭看起吧。

 

傻蛋最早看過的一些老舊資訊系統,密碼是怎麼保存的?

如果是廿年以前,小公司或不是那麼高檔的公司,密碼,就是資料庫的一個欄位。

比較草莽點的,就是直接了當的保存。

只要資料庫被破解,就整個看光光了。

這就是最慘的,最不設防的。

以前是真的有這種的喔。

 

稍微有點覺悟的,就不會直接的存密碼。

傻蛋看過密碼是自己編規則的編碼,如a改成dx0換成7z這類一碼換兩碼的。

只要存一個密碼進去,然後改其中一個字,觀察一下變化,要把轉換規則破解,很容易。

這種土密碼基本上接近不設防,但是早年是真的有。

 

再進一步呢,開始出現一些加密機制。

經過一些複雜規則的轉換,密碼會被加密,不像上面講的,看看密碼和保存的值很容易可以找出規則。

喔,加密的演算法還經過一些權威認證過喔!

但是啊但是,用同樣的演算法,這密碼要破解,其實比自己亂編的轉碼規則好方便破解哩!

然後是用所謂的非對稱的方式加密,需要鑰匙檔案搭配,做到唯一性的加密。

只要所謂的密鑰不遺失,理論上就很難被破解了。

但是啊又但是,這種密鑰的保存管理很麻煩。

真的弄到嚴格到不行的,萬一密鑰丟了或壞了,沒備份,那一堆資料有可能就沒法救了。

然後若備份的密鑰丟了,那又形同不設防了。

 

密碼就是這樣一個很麻煩的東西。

 

然後有另一種保存密碼的思路出現。

那就是,不需要真的保存密碼本身,不需要知道密碼的值,只要驗證能過就好。

之前的加密,之所以複雜,是因為要能夠解密。

如果只需要驗證密碼相符,不需要能夠還原的話,安全性可以提高些。

這就是用所謂的雜湊演算法保存密碼。

雜湊就是用一堆亂七八糟的運算處理打亂原始輸入。

亂到即使只差一個字元不同,計算出來的結果也亂到連它媽媽都認不得的亂。

因為就是一個亂,所以也無從反推原密碼,因為寫演算法的人都辦不到啦!

而雜湊亂歸亂,其打亂的步驟是固定的。

所以相同的輸入,會有相同的雜湊結果。

當初你的123的簡單密碼,經過雜湊變成一長串亂碼保存在資料庫裡。

在輸入一次123密碼,用同樣的雜湊,會和保存的值一樣。

所以可以驗證,但又不知道原來的值。

當系統忘記密碼不是寄你之前的密碼給你,而是寄重設的新亂數密碼給你,就代表密碼機制是用雜湊這套的。

 

這種雜湊演算法最常見,也最普遍的,是叫md5的算法。

很多原始一點的網站帳密就是簡單的md5保存而已。

當然這種密碼最終也是笑話一場。

因為同樣的輸入必然產生相同雜湊,所以資料庫裏面雜湊密碼相同的人,也就是使用相同的密碼。

用常見的密碼更新一個帳號,看看有沒有用相同密碼的人喔,一找一大串。

最後有駭客乾脆把各種可能的密碼都編成字典,如1qaz2wsx這種一斜二斜的智障密碼,到各種日期組合,喔喔,甚至到各種字元組合,都做成查表。

於是乎,那些號稱用雜湊存密碼的,連系統管理者都不知道資料庫裡雜湊碼原始密碼是甚麼的系統,駭客看到等同於明碼了。

網路上有線上md5解密,不是雜湊被破解,而是各種可能的密碼字元組合都可以查表了!

 

接下來密碼又有創新突破。

雜湊法的密碼,之後又加上了所謂的加鹽。

用隨機亂數或和對應帳號有關不會重複的資料,當作所謂的鹽,和密碼明文摻在一起再做雜湊,就是現在主流的雜湊密碼。

這是一種聰明的策略。

因為每一個帳號都有不一樣的複雜的鹽,所以即使是相同的密碼,實際存在數據庫的值也會完全不一樣。

而且隨機的鹽,很難用之前的比對編字典方式破解了。

所以故事到這裡就差不多了。

其實這樣是差不多安全的了,只要鹽有一定長度且是隨機亂數,破解的成本就會很高。

就算資料庫被搬走,用所謂的常見密碼,也需要為每一個帳號的鹽都計算一次,才能確認每個帳號的密碼明文。

那和直接硬猜去登入差不多了,如果程式都被偷了,用猜密碼破解,也擋不了。

其實如果故事到這裡結束,那傻蛋沒什麼好吐嘈的。

畢竟是一路進化,而且整個方案也有一定的防護效果。

 

但去年傻蛋發現之前加鹽雜湊密碼機制又被推翻為不安全。

出現一種bcrypt的新雜湊加密演算法,大家都說,要用這個才安全。

這個演算法一看有點神秘,傻蛋一開始也不知道是怎麼回事。

只知道,同樣的密碼,用這個雜湊,每次得到的都是不同的值。

喔喔,所以不用加鹽了,就自動安全了。

然後又說這個演算法有一個成本的參數,越高越安全,但也越耗時。

喔,一個神秘的雜湊演算法,可以靠設定參數控制安全水平。

好像很神,用起來也簡單,只是原理沒有之前加鹽雜湊直白,傻蛋不懂。

但最近看懂了這個演算法的內涵,結果內心是大大的吐嘈。

這是啥鬼東西?

 

原來這個新演算法也是加鹽雜湊,打包起來而已。

密碼欄位看起來只有一欄,其實是把保存的密碼分三段。

第一段是說用什麼雜湊法,與雜湊幾次。

第二段是隨機產生的鹽的可還原加密的值,也是等等要做雜湊使用的鹽。

最後一段是用鹽演算之後的最終結果保存值。

然後說說成本,10的預設成本是210次方,也就是1024次。

怎麼搞?

就是用同樣的鹽,反覆的做1024次雜湊,把前一輪的雜湊當成下一輪輸入。

就是1024次喔!

最近有人覺得駭客的硬體能力提升了,覺得安全系統水準要提高,那,cost加到12甚至14來因應。

12就是同樣的鹽4096次反覆的雜湊。

加密保存時,要4096次反覆雜湊,驗證時,自然也要4096次。

cost每增加1就是兩倍的成本哩!

而且我們知道電腦運算速度很快,幾千次也不過眨眼間完成。

所以呢?

荒謬之處,就是傻蛋看到有人問,cost到底要多少才夠安全。

最佳解答是啥?

是看你的硬體環境和使用者負載量,選一個可以負擔的最大cost

不是看次數,而是看耗時,建議每次加密與驗證至少要消耗四分之一秒,這樣網站才足夠安全。

喔,這個四分之一秒,在一些運算能力強悍的硬體上,那是CPU瘋狂的運算上百萬次的雜湊才能耗掉的喔!

這些所謂的密碼安全專家的終極對抗駭客的理論,就是用這種兩敗俱傷的方式,先自虐,後虐駭客,讓駭客放棄用暴力建字典破解雜湊密碼而已。

那個,同樣的加鹽雜湊重複算個幾百萬次到底是創造了什麼?

浪費電而已。

那些密碼好猜的,根本不用這麼暴力的手動,還是輕易可以被破解。

密碼不好猜的,即使不浪費那麼多電,只用基本加鹽雜湊,再加上點客製的變化,也就足夠讓駭客的破解成本高到不切實際了。

每驗證一次密碼就要CPU反覆運算百萬次的計算,而且是反覆的相同處理,如果這是個總統級的帳號,用一堆硬體跑上一整天,計算它個幾億次都值得,這樣消耗值得。

反過來看,隨便一個普通用戶,沒太大價值的遊戲或論壇帳號,密碼驗證都要這樣耗運算資源,這代表了什麼?

這是浪費電,製造溫室氣體,大量的產生反覆的計算,卻幾乎沒有什麼附加價值啊!

這個密碼驗證消耗的運算資源,在這批專家的這波思路下,可說是無窮盡的增加了。

一個軟體系統有一大堆的功能,什麼戰鬥數值計算,商業邏輯運算,知道嗎,這些實際上有意義有價值的運算,消耗的CPU運算資源和現在主流的密碼驗證相比,可是連零頭都不算喔!

CPU性能提升,是提升到什麼鬼上去了,為什麼我們都感覺不到?

真的搞懂,才發現真相是這樣荒謬的。

至於是否還有其他可怕的爛設計,浪費電的爛程式,傻蛋現在覺得恐怕不太妙。

加密貨幣的運算能力只怕也是這個思路,比賽浪費電來創造金融價值的吧?

狗屁的浪費啊,為了浪費而浪費呢!

 

這是個道德崩壞的大智障時代,好像是這樣的吧?幹!

( 不分類不分類 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=pondin&aid=119454335