區塊鏈兄弟社區,區塊鏈技術專業問答先行者,中國區塊鏈技術愛好者彙集地算法
做者:於中陽安全
來源:區塊鏈兄弟區塊鏈
原文連接:http://www.blockchainbrother.com/article/83ui
算法的安全性加密
根據被破譯的難易程度,不一樣的密碼算法具備不一樣的安全等級。若是破譯算法的代價大於加密數據的價值,那麼通常不會有人想去破譯它,即你多是「安全的」。若是破譯算法所需的時間比加密數據保密的時間更長,那麼你可能也是「安全的」。若是用單密鑰加密的數據量比破譯算法須要的數據量少得多,那麼你也多是「安全的」。設計
在這裏說「可能」,是由於在密碼分析中總有新的突破。另外一方面,隨着時間的推移,大多數數據的價值會愈來愈小。orm
Lars Knudsen曾把破譯算法分爲不一樣的類別,安全性的遞減順序爲:資源
(1)所有破譯(total break)。密碼分析者找出密鑰K,這樣就能獲得rem
(2)全盤推導(global deduction)。密碼分析者找到一個替代算法A,在不知曉密鑰K的狀況下等價於獲得get
(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億倍)。
當攻擊的複雜性是常數時(除非一些密碼分析者發現更好的密碼分析攻擊),就只取決於計算能力了。在過去的半個世紀中,計算能力已經獲得了顯著的提升,而且如今這種趨勢還在發展。許多的密碼分析攻擊用並行處理的機制進行計算很是理想,一個任務能夠分紅億萬個子任務,而且處理之間不須要相互做用。一種算法在現有技術條件下不可破譯就草率的宣稱是安全的,是很冒險的。從中咱們能夠得出,一個好的密碼系統應設計成能抵禦將來多年後的計算能力的發展。