雪崩效應檢視原始碼討論檢視歷史
在密碼學中,雪崩效應(avalanche effect)指加密算法(尤其是塊密碼和加密散列函數)的一種理想屬性。雪崩效應是指當輸入發生最微小的改變(例如,反轉一個二進制位)時,也會導致輸出的不可區分性改變(輸出中每個二進制位有50%的概率發生反轉)。合格塊密碼中,無論密鑰或明文的任何細微變化都必須引起密文的不可區分性改變。該術語最早由Horst Feistel使用,儘管其概念最早可以追溯到克勞德·香農提出的擴散(diffusion)[1] 。
若某種塊密碼或加密散列函數沒有顯示出一定程度的雪崩特性,那麼它被認為具有較差的隨機化特性,從而密碼分析者得以僅僅從輸出推測輸入。這可能導致該算法部分乃至全部被破解。因此,從加密算法或加密設備的設計者角度來說,滿足雪崩效應乃是必不可缺的圭臬。
構造一個具備良好雪崩效應的密碼或散列是至關重要的設計目標之一。這正是絕大多數塊密碼採用了乘積密碼的原因,也是大多數散列函數使用大數據塊的原因。這些特性均使得微小的變化得以通過算法的迭代迅速增殖,造成輸出的每一個二進制位在算法終止前均受到輸入的每一個二進制位的影響。
位獨立準則
位獨立準則(Bit Independence Criterion,BIC)指出,對於任意輸入位i和輸出位j、k,當輸入位i被反轉時,輸出位j和k應當互不影響地獨立變化。
嚴格雪崩準則
嚴格雪崩準則(Strict Avalanche Criterion,SAC)是雪崩效應的形式化。它指出,當任何一個輸入位被反轉時,輸出中的每一位均有50%的概率發生變化。嚴格雪崩準則建立於密碼學的完全性概念上,由Webster和Tavares在1985年提出。
高階的一般化嚴格雪崩準則涉及到多個輸入位。滿足高階嚴格雪崩準則的布爾函數總是Bent函數,也被稱作最大非線性度函數,或「完全非線性」函數。