當前位置:
首頁 > 最新 > 新增:精讀好書區塊鏈技術驅動金融3:哈希函數三大特性之一:隱秘性

新增:精讀好書區塊鏈技術驅動金融3:哈希函數三大特性之一:隱秘性

努力

精讀好書系列:宏觀+微觀巨著解讀

《區塊鏈革命》全景式宏觀描述區塊鏈理論及應用的巨著!

《區塊鏈:技術驅動金融》從比特幣技術層面微觀解讀區塊鏈!

「精讀好書」系列教程,「區塊鏈雲鵬學院 」出品「雲軍團 」打造。

敬畏技術,尊重技術,是研發人員的本分。

更多的了解雲鵬:

引力節點 | 雲鵬:敬畏技術,尊重技術,價值所在,自然聚集

目錄

《區塊鏈:技術驅動金融》系列,將從技術層面解讀區塊鏈,適合預學習技術的同學閱讀。

1.特性2:1.2 隱秘性

2.文章解讀(雲鵬個人建議,僅供參考)

3.文末福利-雲鵬帶你讀書

1

1.2 隱秘性

BlockChain

我們希望哈希函數擁有的第二個特性是其隱秘性。

隱秘性保證,如果我們僅僅知道哈希函數的輸出y=H(x),我們沒有可行的辦法算出輸入值x。問題是,上述的表示形式不一定是正確的。

考慮以下簡單的例子:我們做一個拋硬幣的實驗,如果拋硬幣結果為正面,我們會宣布字元串哈希為「正面」;如果結果為反面,我們會宣布字元串哈希為「反面」。 然後我們問我們的對手,在他沒有見到拋硬幣,而只見到哈希函數的輸出的前提下說出哈希函數的輸入字元串(很快我們就知道為什麼要玩這個遊戲了)。

為了回答問題,對手會簡單計算「正面」字元串的哈希值及「反面」字元串的哈希值,然後對手便可以知道他得到的是哪一個。

這樣,只需要幾步,對手就能反解出輸入值。 對手能夠猜出字元串,這是因為x只有兩個可能,他可以很輕易地將兩個可能對應的哈希值計算出來。為了能夠實現隱秘性,我們需要x的取值來自一個非常廣泛的集合,也就是說,僅僅通過嘗試幾個特定的x,就能找到輸出值的方式將不會發生了

現在的問題是:在類似拋硬幣的「正面」、「反面」實驗中,如果我們想要的反解的輸入值並非來自分散的集合,我們是否還能得到隱秘性?幸運的是,對於這個問題答案是肯定的!我們甚至能夠通過與另一個較為分散的輸入進行結合,而將一個並不分散的輸入進行隱秘。現在我們可以更精確地表示隱秘的含義了(雙豎線‖為連接符號,代表把一系列事件、事情等聯繫起來)。

隱秘性哈希函數H具有隱秘性,如果:當其輸入r選自一個高階最小熵(high min-entroy)的概率分布,在給定H(r‖x)條件下來確定x是不可行的

在資訊理論中,最小熵是用於測試結果可預測性的手段,而高階最小熵這個概念比較直觀描述了分布(如隨機變數)的分散程度。具體來說,在從這樣分布中取樣時,我們將無法判定取樣的傾向。舉個具體的例子,如果r是從長度為256位的字元串中隨意選出的,那麼任意特定字元串被選中的概率為1/22??,這是一個小到幾乎可以忽略的取值。

應用:承諾

現在來看一下隱秘性的應用。具體來說,我們把想做的事情稱為承諾(commitment)。這裡承諾是一個數字化過程,可以類比為以下動作:

首先選定一個數字,將數字裝進信封,然後將該信封放到一個人人都看得到的桌子上。這樣做以後,可以說你就信封里的數字做出了承諾,在打開信封前,雖然你已經做出了承諾,對其他人來說它還是秘密。在之後,你可以打開信封,來展示承諾的數值

承諾協議一個承諾協議方案由兩個演算法構成:

com:=commit(msg, nonce),承諾函數將信息(msg)和一個臨時隨機數(nonce)作為輸入,輸出就是一個「承諾」。

● verify(com, msg, nonce),驗證函數將某個承諾輸出(com)、臨時隨機數(nonce)及信息(msg)作為輸入,如果com==commit(msg, nonce),則返回「真」(true);反之則返回「假」(false)

我們要求以下兩個安全特性要成立:

隱秘性:已知com,沒有可行的方法找到msg。

● 約束性:沒有可行的辦法找到兩組(msg, nonce)和(msg』, nonce』),msg≠msg』,而commit(msg, nonce)==commit(msg』, nonce』)

為了使用承諾方案,我們首先需要產生一個臨時隨機數。然後將這個臨時隨機數與承諾信息msg一起代入承諾函數,計算承諾函數輸出值com,然後公布該輸出。這個過程就如同將封好的信封放到一個人人能看到的桌上那樣。之後,如果我們希望展示之前的承諾值,我們首先公布用於產生承諾的臨時隨機數,並公布信息msg。此時任何人都可以驗證這時公布的msg是否為之前承諾,這個階段就如同打開信封。

對於每次的承諾值,你都需要選擇新的隨機值,這一點很重要。在密碼學中,術語nonce是指,該取值只能使用一次

以上兩個安全特性決定了這一演算法就如同密封及打開信封。

第一,如果僅僅知道com,即承諾函數的輸出,就如同只看信封並不能得到信息內容

第二,就是約束性,這就保證了你一旦承諾信封內的內容,就不能再改變主意。也就是說,我們無法找到兩個不同的信息,當你在承諾一個信息後,而又聲稱你承諾了另一個信息

我們如何在承諾協議中保證隱秘性和約束性這兩個性質成立呢?在討論這一點之前,我們需要討論如何執行承諾方案。我們可以通過使用加密的哈希函數來達到目的,考慮如下承諾協議實施方案:

commit(msg, nonce):=H(nonce‖msg)

其中,nonce為長度為256位的臨時隨機數。

為承諾一段消息,我們首先生成一個256位的臨時隨機數,然後將這個臨時隨機數與信息鏈接,並返回這個鏈接值的哈希值,來作為承諾輸出。

為了便於驗證,我們還要設定其他人來計算一下臨時隨機數與信息鏈接之後的哈希值,比對一下計算結果是否與承諾輸出相同。

再來看一下我們的承諾方案要求的兩個特性,如果我們將承諾和驗證換成H(nonce‖msg),那麼這些特性就變成:

隱秘性:已知H(nonce‖msg),沒有可行方法找到msg

約束性:沒有可行方法找到兩對(msg, nonce)和(msg』, nonce』),msg≠msg』,而H(nonce‖msg)==H(nonce』‖msg』)

承諾的隱秘特性正是我們要求哈希函數要具備的隱秘性,如果將一個解密鑰匙選定為256位的隨機值,那麼由隱秘性得出,如果解密鑰匙與信息鏈接,那麼僅僅從哈希函數的輸出中恢複信息就是不可行的。約束性隱含在哈希函數的碰撞阻力特性中[3],如果哈希函數具有碰撞阻力,那麼我們將不能找到不同的msg及msg"值,而H(nonce‖msg)=H(nonce"‖msg"),如果這種情況發生,將構成碰撞。

因此,如果哈希函數H具有碰撞阻力及隱秘性,從安全特性上來講,這個承諾方案將有效。

A

文章解讀

1.為了能夠實現隱秘性,我們需要x的取值來自一個非常廣泛的集合,也就是說,僅僅通過嘗試幾個特定的x,就能找到輸出值的方式將不會發生了。

2.隱秘性哈希函數H具有隱秘性,如果:當其輸入r選自一個高階最小熵(high min-entroy)的概率分布,在給定H(r‖x)條件下來確定x是不可行的。

3.承諾的隱秘特性正是我們要求哈希函數要具備的隱秘性,如果將一個解密鑰匙選定為256位的隨機值,那麼由隱秘性得出,如果解密鑰匙與信息鏈接,那麼僅僅從哈希函數的輸出中恢複信息就是不可行的。約束性隱含在哈希函數的碰撞阻力特性中[3],如果哈希函數具有碰撞阻力,那麼我們將不能找到不同的msg及msg"值,而H(nonce‖msg)=H(nonce"‖msg"),如果這種情況發生,將構成碰撞。

內容來源:《區塊鏈:技術驅動金融》【美】阿爾文德·納拉亞南等 著

B

C

關注區塊鏈雲鵬學院

「記住公眾號:china0107」

「我是雲鵬,深耕IT領域10年+,IT技術專家,精通電商/醫療架構 」

雲軍團創始人,區塊鏈雲鵬學院創始人

「 「幣乎應用指南」 系列教程原創作者,幣乎創世白名單作者

文末福利

幣乎應用指南-助力成長群

帶你成長,帶你飛

1.解答幣乎應用中遇到的問題,讓你先人一步學會幣乎應用。

2.推薦優秀文章和優秀評論,一起成長共同學習,實現價值傳遞。

3.推薦優秀的幣乎作者,互相推薦,共同繁榮,抱團發展。

4. 優秀作者和優秀文章,將優先推薦精華帖,幫你吸粉賺更多的KEY。

5. 本群禁止廣告信息,成長需要安寧。

加群助理微信,拉你進群

我們努力創造價值

GIF

「1厘米線段內的點,與太平洋面上的點一樣多」

「 我是雲鵬,堅持輸出價值,價值所在,自然聚集!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 區塊鏈學習精要 的精彩文章:

「區塊鏈革命」:5.區塊鏈七大設計原則之一:網路化誠信

TAG:區塊鏈學習精要 |