變色龍哈希函數-區塊鏈

變色龍哈希調研

1. 調研背景

1.1哈希函數定義

哈希函數是一類具備如下特徵的函數:將任意長度輸入的字串可轉換成一個固定長度的字串,經過原始字串能夠很容易地算出轉換後的字串,經過轉換後的字串很難還原出原始字串。算法

1.2哈希函數特徵

  1. 抗弱碰撞性:對於消息x,找到y≠x且H(x)=H(y)的y在計算上是不可行的。
  2. 抗強碰撞性:找到任何知足H(x)=H(y)的偶對(x,y)在計算上是不可行的。

       已知一個消息x,去找y使得二者的哈希相等要比隨便找兩個消息x,y使得兩個的哈希相等要更難,可能性更「弱」,因此已知一個消息x,尋找消息y使得兩個哈希值相等叫作「弱碰撞」,找到x,y使得兩個哈希值相等叫作強碰撞安全

  1. 高靈敏度
  2. 不可逆

      

1.3哈希函數在區塊鏈中的使用

區塊鏈技術當中,使用了哈希函數來計算當前區塊的父區塊的區塊頭的哈希,並存放在當前區塊中。以下圖所示:函數

              在上述區塊鏈示意圖中,使用的哈希函數是SHA256。若是咱們想要碰撞一個已經肯定了的區塊,就要嘗試2256中可能,這是不可行的。這也是區塊鏈不可篡改的密碼學基礎。區塊鏈

1.4存在的問題

       若是使用普通的哈希哈希函數,對於基於區塊鏈的版權保護系統而言,可能會有這樣一種場景:原做者創做了數字做品以後,並無將本身的做用上鍊,而是以其餘方式公佈到了網上,Evil可能在網上或者其餘地方看到這個做品,而後在未經做者的應允的狀況下,將做品以本身的身份上鍊。若是上鍊成功,此後,當原做者要求改變區塊鏈上該做品的版權的時候,因爲區塊鏈的不可篡改性,這時候就難以解決。spa

       所以,咱們考慮引入變色龍哈希。設計

2. 變色龍哈希概述

2.1變色龍哈希(Chameleon Hash)的定義

一個變色龍哈希函數由四個部分組成:cham_hash=(Setup,KeyGen,Hash,Forge)blog

  1. Setup(λ ):輸入安全性參數λ ,輸出公共參數pp;
  2. KeyGen(pp):輸入公共參數pp,輸出公私鑰對(HK,CK),HK爲公鑰,CK爲私鑰,又稱門限;
  3. Hash(HK,m,r):輸入公鑰HK,消息m和隨機數r,輸出變色龍的哈希值CH;
  4. Forge(CK,m,r,m’):輸入私鑰CK,消息m,隨機數r,消息m’,輸出另外一個隨機數r’,知足CH=Hash(HK,m,r)=Hash(HK, m’,r’)。

2.2變色龍哈希知足的安全性要求

  1. 抗碰撞:不存在一個有效算法在輸入公鑰HK,能夠找到(m1,r1)和(m2,r2),其中m1m2 ,知足Hash(HK,m1,r1)= Hash(HK,m2,r2)。
  2. 陷門碰撞:存在有效算法,在輸入門限CK後,對於任意的m1,r1,給定m2,能夠計算出r2,知足Hash(HK,m1,r1)= Hash(HK,m2,r2)。
  3. 語義安全:對於任意消息m1 m2,Hash(HK,m1,r1)與 Hash(HK,m2,r2)的機率分佈是不可區分的,特別的,當r爲隨機選擇時,從Hash(HK,m,r)沒法獲得關於m的任何信息。

2.3變色龍哈希函數分析

       相比於傳統哈希函數的難以找到碰撞,變色龍哈希能夠人爲的設一個「弱點」或者「後門」:掌握了這個後門就能夠輕鬆的找到哈希碰撞。數學

       這種設計在必定程度上破壞了哈希函數的兩個碰撞性的特色,同時,也破壞了基於哈希函數的區塊鏈的不可篡改的特性,可是也擴大了區塊鏈的應用場景,並且對於不知道門限的普通用戶來講,想要找到碰撞依然是不可行的,也就是說,變色龍哈希的安全性也是能夠保障的,對於持有「後門」的管理人員,若是其隨意篡改區塊,也是能夠經過驗證兩個區塊的哈希是否相等來驗證。hash

2.4變色龍哈希函數構造

      同傳統的密碼學算法同樣,變色龍哈希也都是基於數學難題的,好比:入門

2.4.1 基於因式分解的變色龍哈希函數的有效構造

2.4.2基於格的變色龍哈希函數的構造

2.4.3基於離散對數的變色龍哈希函數的構造

Hugo Krawczky 和 Tal Rabin 在2000年提出了變色龍哈希方案,具體方案描述以下:

  1. Setup(λ):輸入安全性參數λ ,構造知足安全性參數λ 的大素數p,q,其中p,q知足p=kq+1,選取乘法循環羣Z*P中階爲q的元素g,輸出公共參數pp=(p,q,g);
  2. KeyGen(pp):輸入公共參數pp,在乘法循環羣Z*P中隨機選擇指數x,計算h=gx,最後獲得私鑰CK=x,公鑰HK=h;
  3. Hash(HK,m,r):輸入公鑰HK,消息m,隨機數r,其中m,r均爲Z*P中元素,輸出變色龍哈希值CH=gmhr mod p;
  4. 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,而這是不可行的。

        對於其餘的變色龍哈希函數,其難度也是基於必定的數學難題的,所以其安全性取決於其對應的數學難題的難易程度。

相關文章
相關標籤/搜索