雜湊函式是一類具有以下特徵的函式:將任意長度輸入的字串可轉換成乙個固定長度的字串,通過原始字串可以很容易地算出轉換後的字串,通過轉換後的字串很難還原出原始字串。
抗弱碰撞性:對於訊息x,找到y≠x且h(x)=h(y)的y在計算上是不可行的。
抗強碰撞性:找到任何滿足h(x)=h(y)的偶對(x,y)在計算上是不可行的。
已知乙個訊息x,去找y使得兩者的雜湊相等要比隨便找兩個訊息x,y使得兩個的雜湊相等要更難,可能性更「弱」,所以已知乙個訊息x,尋找訊息y使得兩個雜湊值相等叫做「弱碰撞」,找到x,y使得兩個雜湊值相等叫做強碰撞
高靈敏度
不可逆區塊鏈技術當中,使用了雜湊函式來計算當前區塊的父區塊的區塊頭的雜湊,並存放在當前區塊中。如下圖所示:
在上述區塊鏈示意圖中,使用的雜湊函式是sha256。如果我們想要碰撞乙個已經確定了的區塊,就要嘗試2256中可能,這是不可行的。這也是區塊鏈不可篡改的密碼學基礎。
如果使用普通的雜湊雜湊函式,對於基於區塊鏈的版權保護系統而言,可能會有這樣一種場景:原作者創作了數字作品之後,並沒有將自己的作用上鏈,而是以其他方式公布到了網上,evil可能在網上或者其他地方看到這個作品,然後在未經作者的應允的情況下,將作品以自己的身份上鏈。如果上鏈成功,此後,當原作者要求改變區塊鏈上該作品的版權的時候,由於區塊鏈的不可篡改性,這時候就難以解決。
因此,我們考慮引入變色龍雜湊。
乙個變色龍雜湊函式由四個部分組成:cham_hash=(setup,keygen,hash,forge)
setup(λ ):輸入安全性引數λ ,輸出公共引數pp;
keygen(pp):輸入公共引數pp,輸出公私鑰對(hk,ck),hk為公鑰,ck為私鑰,又稱門限;
hash(hk,m,r):輸入公鑰hk,訊息m和隨機數r,輸出變色龍的雜湊值ch;
forge(ck,m,r,m』):輸入私鑰ck,訊息m,隨機數r,訊息m』,輸出另乙個隨機數r』,滿足ch=hash(hk,m,r)=hash(hk, m』,r』)。
抗碰撞:不存在乙個有效演算法在輸入公鑰hk,可以找到(m1,r1)和(m2,r2),其中m1≠m2 ,滿足hash(hk,m1,r1)= hash(hk,m2,r2)。
陷門碰撞:存在有效演算法,在輸入門限ck後,對於任意的m1,r1,給定m2,可以計算出r2,滿足hash(hk,m1,r1)= hash(hk,m2,r2)。
語義安全:對於任意訊息m1 m2,hash(hk,m1,r1)與 hash(hk,m2,r2)的概率分布是不可區分的,特別的,當r為隨機選擇時,從hash(hk,m,r)無法得到關於m的任何資訊。
相比於傳統雜湊函式的難以找到碰撞,變色龍雜湊可以人為的設乙個「弱點」或者「後門」:掌握了這個後門就可以輕鬆的找到雜湊碰撞。
這種設計在一定程度上破壞了雜湊函式的兩個碰撞性的特點,同時,也破壞了基於雜湊函式的區塊鏈的不可篡改的特性,但是也擴大了區塊鏈的應用場景,而且對於不知道門限的普通使用者來說,想要找到碰撞依然是不可行的,也就是說,變色龍雜湊的安全性也是可以保障的,對於持有「後門」的管理人員,如果其隨意篡改區塊,也是可以通過驗證兩個區塊的雜湊是否相等來驗證。
同傳統的密碼學演算法一樣,變色龍雜湊也都是基於數學難題的,比如:
hugo krawczky 和 tal rabin 在2023年提出了變色龍雜湊方案,具體方案描述如下:
setup(λ):輸入安全性引數λ ,構造滿足安全性引數λ 的大素數p,q,其中p,q滿足p=kq+1,選取乘法迴圈群z*p中階為q的元素g,輸出公共引數pp=(p,q,g);
keygen(pp):輸入公共引數pp,在乘法迴圈群z*p中隨機選擇指數x,計算h=gx,最後得到私鑰ck=x,公鑰hk=h;
hash(hk,m,r):輸入公鑰hk,訊息m,隨機數r,其中m,r均為z*p中元素,輸出變色龍雜湊值ch=gmhr mod p;
forge(ck,m,r,m』): 輸入私鑰,ch=x,訊息m,隨機數r,訊息m』,其中m,r, m』,均為z*p中的元素,根據ch= gmhr= gm』hr』mod p,可得 m+xr = m』+xr』mod q,繼而可計算出r』=(m-m』+xr)x-1 mod p。
如果攻擊者在不知道門限的情況下,想要進行碰撞,就必須要求解離散對數???
?h,而這是不可行的。
對於其他的變色龍雜湊函式,其難度也是基於一定的數學難題的,因此其安全性取決於其對應的數學難題的難易程度。
Windows版變色龍
一 使用方法 1.安裝windows版變色龍rc5 rev 875 for windows 2.自行決定是否替換c wowpc.iso為附件2.1svn r1650 trunk的wowpc.iso 顯示隱藏檔案,才看得到 3.功能,同 mac版變色龍,可啟動 破解補丁kext放入位置 開啟32位i3...
Python 蟒蛇還是變色龍?
原文見 python 蟒蛇還是變色龍?這兩天看了看 python 的faq 發現python 比我想像中的還要靈活。由於沒有實際的專案演練,無法嘗試,不過 faq中的東東應該是有權威性的吧 下面說說自己的一些想法。我們知道,安裝完 python 後,就可以執行 python 指令碼。我們可以把這種方...
CG 粒子系統 變色龍
沒有繪畫的天賦,卻喜歡欣賞別人的畫。暑假,嗯,暑假,學些喜歡的有用的東西 計算機圖形學,滿足了不會作畫的朋友,實現願望的途徑。且君留下腳步,聆聽 梵谷的魚 什麼,你說你不知道這個英雄 拍我拍我,造型擺著老累了 樓上不知道本小姐在這裡嗎?不屑臉 嘖嘖,還是我最帥 懶散的我,在學期末,開始懷疑人生了,你...