密碼演算法是安全的嗎?

2021-10-07 18:46:07 字數 1293 閱讀 6905

如果您剛了解密碼學,那肯定覺得這個問題答案是「必須安全啊,不安全的密碼演算法還能用嗎?」但如果您看了前面的文章,就會發現每種演算法都有它的不足和缺陷,都有被破解的風險。那是不是說明它們都是不安全的呢?其實,安全不是個簡單的概念,要回答這個問題,我覺得應從以下幾個方面分析。

首先,從演算法本身講,現代密碼演算法的安全性都**於數學上的某個或多個難題,如果難題被攻破了,演算法也就被攻破了。像前面介紹的rsa演算法安全性**於大質數乘積難以分解問題,而ecc演算法安全性則基於橢圓曲線離散對數的計算難題(其實到現在我也不懂這個原理,就是知道它比大質數乘積分解更難)。迄今為止,這兩個演算法所基於的數學難題還沒有被解決,所以演算法的理論仍然是安全的,對演算法的攻擊行為仍然是基於暴力破解,當然攻擊者會輔以明文、密文分析等方法加快暴力破解的速度。所以,目前來看,演算法本身安全性的挑戰**於計算機算力的發展和提高。摩爾定律雖然已經失效,但雲計算的興起和量子計算機的應用會使現在的難題以後不再那麼「難」了。去年,谷歌宣布其研發的量子計算機8小時可以破解2048位rsa加密金鑰。8小時,已經是完全可以接受的解密時限了。

其次,如何應用演算法也是影響演算法安全性的重要因素,正確的使用密碼演算法才能發揮密碼的作用。這一點對於做應用系統開發的我們尤其關鍵。一般應用開發中,常見的問題有:1,沒有選擇正確的演算法。比如應該用非對稱演算法的地方,選擇使用了對稱演算法;2.沒有採用安全的金鑰儲存方式。最常見的就是用軟實現的方式儲存金鑰;3.雖然演算法選擇和金鑰儲存方式沒有問題,但程式的邏輯設計有漏洞,可以讓攻擊者繞過系統的安全功能防護。這一點的情況更複雜,舉個例子,有些業務系統的電子簽章功能採取印章+數字簽名的方式,如果簽名驗證成功,正常顯示;簽名驗證失敗,顯示失敗的標記。這種方式下的顯示和驗證結果本身是分離的,它們是通過程式功能關聯的。那攻擊者就有可能跳過這種關聯,使驗證結果失敗,仍然正常顯示。

最後,從資訊保安的更高維度看,安全本身就是乙個系統的概念,它不是光靠演算法或技術就能實現的,還得有正確的制度和方法,以及有能力、有責任心、能夠嚴格遵守制度的人。從資訊保安的專業術語講,就是從技術體系、管理體系和組織體系來共同構建資訊保安的整體。

總結一下,**密碼演算法本身目前還是安全的,但在實際應用中需要正確使用以及完善的體系才能發揮它們的安全作用。**要注意的是,絕對安全的演算法是不存在的,任何演算法理論上都是會被破解的;但一方面,絕對安全的演算法也是不必要的,因為資訊保安是需要投入成本的。在資訊保安行業裡,有這樣一條潛規則:資訊保安的合理成本的區間,應該是它所保護資訊價值的10%到100%之間。不超過100%很好理解,如果資訊保安投入的成本超過了它所保護資訊本身的價值,則這樣的投入是沒有意義的。而不低於10%是行業經驗總結,低於這個下限的投入一般來講是不夠的,不足以保護你寶貴的資訊資產。

你的密碼安全嗎? Intel推出密碼安全測試工具

網路購物現在很流行,但隨之帶來的資金安全性問題也逐漸被越來越多的人所所重視。密碼作為最重要的一道防範,你的密碼設定的足夠安全嗎?英特爾最近推出了乙個網頁可以幫助你確認一下密碼的安全性,通過筆者的實際測試,筆者常用的一些密碼在很快的時間內就會被破解,實在是令人擔憂啊!英特爾密碼測試網頁 感興趣的朋友不...

C 是型別安全的嗎?

什麼是型別安全?型別安全很大程度上可以等價於記憶體安全,型別安全的 不會試圖訪問自己沒被授權的記憶體區域。型別安全 常被用來形容程式語言,其根據在於該門程式語言是否提供保障型別安全的機制 有的時候也用 型別安全 形容某個程式,判別的標準在於該程式是否隱含型別錯誤。型別安全的程式語言與型別安全的程式之...

i 是執行緒安全的嗎?

i 不是原子操作,也就是說,它不是單獨一條指令,而是3條指令 3條彙編指令 1 從記憶體中把i的值取出來放到cpu的暫存器中 2 cpu暫存器的值 1 3 把cpu暫存器的值寫回記憶體 由於執行緒共享棧區,不共享堆區和全域性區,所以當且僅當 i 位於棧上是安全的,反之不安全 i也同理 因為如果是全域...