1. 程式人生 > >密碼學基礎(四)算法的安全性

密碼學基礎(四)算法的安全性

區塊鏈兄弟區塊鏈技術社區

區塊鏈兄弟社區,區塊鏈技術專業問答先行者,中國區塊鏈技術愛好者聚集地

作者:於中陽

來源:區塊鏈兄弟

原文鏈接:http://www.blockchainbrother.com/article/83

著權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。


算法的安全性

根據被破譯的難易程度,不同的密碼算法具有不同的安全等級。如果破譯算法的代價大於加密數據的價值,那麽一般不會有人想去破譯它,即你可能是“安全的”。如果破譯算法所需的時間比加密數據保密的時間更長,那麽你可能也是“安全的”。如果用單密鑰加密的數據量比破譯算法需要的數據量少得多,那麽你也可能是“安全的”。

在這裏說“可能”,是因為在密碼分析中總有新的突破。另一方面,隨著時間的推移,大多數數據的價值會越來越小。

Lars Knudsen曾把破譯算法分為不同的類別,安全性的遞減順序為:

(1)全部破譯(total break)。密碼分析者找出密鑰K,這樣就能得到技術分享圖片

(2)全盤推導(global deduction)。密碼分析者找到一個替代算法A,在不知曉密鑰K的情況下等價於得到技術分享圖片

(3)實例(或局部)推導(instance (or local) deduction)。密碼分析者從截獲的密文中找出明文。

(4)信息推導(information deduction)。密碼分析者獲得一些有關密鑰或明文的信息。這些信息可能是密鑰的幾位、有關明文格式的信息等。

若不論密碼分析者獲得多少密文,都沒有足夠的信息恢復出明文,那麽這個算法就是無條件保密的

(unconditionally secure)。事實上,只有一次一密亂碼本,才是不可破的(給出無限多的資源仍然不可破)。所有其他的密碼系統在唯密文×××中都是可破的,只要簡單的一個接一個的去嘗試每種可能的密鑰,並檢查所得明文是否有意義,這種方法稱為蠻力×××(brute-force attack)。

在密碼學中,更關心在計算上不可破譯的密碼系統。如果算法用(現在或者將來)可得到的資源都不能破譯,這個算法則被認為是計算安全的(computationally secure)。準確的說,“可用資源”就是公開數據的分析整理。

可以采用不同的方式衡量×××方法的復雜性:

1)數據復雜性(data complexity)。用於×××輸入所需要的數據量。

2)處理復雜性(processing complexity)。完成×××所需要的時間,也經常稱作工作因素(work factor)。

3)存儲需求(storage requirement)。進行×××所需要的存儲量。

作為一個法則,×××的復雜性取這三個因數的最小值。有些×××包括這三種復雜性的折中:存儲需求越大,×××可能越快。

復雜性用數量級來表示。如果算法的處理復雜性是2的128次方,那麽破譯這個算法也需要2的128次方次運算(這些運算可能非常復雜和耗時)。假設我們擁有足夠的計算速度去完成每秒100萬次的運算,並且用100萬個並行處理器完成這個任務,那麽仍然需要花費10的19次方年以上才能找到密鑰。(而這是宇宙年齡的10億倍)。

當×××的復雜性是常數時(除非一些密碼分析者發現更好的密碼分析×××),就只取決於計算能力了。在過去的半個世紀中,計算能力已經得到了顯著的提高,並且現在這種趨勢還在發展。許多的密碼分析×××用並行處理的機制進行計算非常理想,一個任務可以分成億萬個子任務,並且處理之間不需要相互作用。一種算法在現有技術條件下不可破譯就草率的宣稱是安全的,是很冒險的。從中我們可以得出,一個好的密碼系統應設計成能抵禦未來多年後的計算能力的發展。


註:上面提到的一次一密亂碼本(one-time pad),是由Major Joseph Mauborgne 和AT&T公司的Gilbert Vernam在1917年發明的。(事實上,一次一密亂碼本是門限方案的特殊情況)感興趣的朋友可以查閱相關資料深入了解,在此我就不展開描述了。


文章發布只為分享區塊鏈技術內容,版權歸原作者所有,觀點僅代表作者本人,絕不代表區塊鏈兄弟贊同其觀點或證實其描述

密碼學基礎(四)算法的安全性