加密原語和功能之間有什麼區別?
在使用 UC 框架的論文中,我看到了相同的密碼工具被稱為密碼原語和功能。這兩個術語可以互換嗎?
一個例子在這裡:
公告板和智能合約是構成我們結果的支柱的原語。
和
我們還假設存在包含這個理想公告板的智能合約功能。
如果不查看您正在查看的相同論文,很難回答這個問題。儘管如此,我將這些概念解釋為完全不同,原因我將在下面概述。
函式在數學中很常見,可以寫成一些映射 $ f : X\to Y $ 輸入到輸出。許多算法實現了函式的行為——它們接受一些輸入,然後返回輸出。將原型範例視為“排序算法”或“圖形算法”或“基本上是您在算法課程中學到的任何算法”。
功能不一定在開始處理它們之前收集它們的所有輸入。以後的輸入可以依賴於先前的輸入,可能以非平凡的方式。這對於互動式協議尤其重要,其中對於有參與者的兩人協議 $ P_1 $ 和 $ P_2 $ , $ P_2 $ 的後期輸入可以取決於 $ P_1 $ 的先前輸入(可能以對抗的方式)。這在某種程度上是這個想法的“核心”,由於缺乏多個參與者,其他類似的概念(比如流算法)通常不被稱為功能。因此,功能可以被視為捕捉互動式算法概念的數學抽象。
密碼原語是一些算法的元組 $ (\mathcal{A}_1,\dots,\mathcal{A}_k) $ (可能每個都單獨是一個功能或功能),以及它們必須滿足的某些條件。您可以施加許多條件,但常見的條件如下:
- 正確性
- 健全性
- 各種數量的不可區分性(“隱私”或“保密”條件)
例如,對稱密鑰加密通常被描述為三重算法 $ (\mathsf{KeyGen}, \mathsf{Enc}, \mathsf{Dec}) $ 這樣:
- 有一個正確條件:
- $$ \forall k\leftarrow\mathsf{KeyGen}(1^\lambda), \forall m\in\mathcal{M}
- (\mathsf{Dec}_k\circ\mathsf{Enc}_k)(m) = m $$ 在哪裡 $ \mathcal{M} $ 是算法的消息空間。
- 有一個保密條件,即 $ k\leftarrow\mathsf{KeyGen}(1^\lambda) $ , 和 $ m_0\neq m_1 $ , $ {\mathsf{Enc}_k(m_0)} $ 是(某種形式的)與 $ {\mathsf{Enc}_k(m_1)} $ ,其中這些數量是隨機加密硬幣選擇的分佈。
因此,我們可以將每個單獨的算法視為功能,但將它們與它們必須滿足的條件結合在一起,成為我們稱之為“對稱密鑰加密”的密碼原語。
請注意,從技術上講,可以將排序算法之類的東西視為“僅具有正確性條件的加密原語”,但這相當不標準。我們通常假設所有算法都必須是正確的,因此只有在條件類似於“在對抗性上下文中正確”或“秘密”(或其他“不僅僅是正確”條件)等條件時才開始將事物描述為密碼原語。
雖然我認為這種觀點相當普遍,但我不知道是否所有作者在任何時候都普遍同意,所以你對特定論文的特定問題仍然會更容易用指向這些論文的指針來回答。
馬克在他的回答中所說的是問題的癥結所在,但這是您在這種特殊情況下的解釋方式:
當他們談論智能合約原語時,他們指的是一個具有我們期望從智能合約獲得的安全保證的對象,其輸入輸出行為符合我們對智能合約的直覺概念。
當他們說“存在包含這個理想公告板的智能合約功能”時,他們的意思是可能存在某種方法來定義智能合約的輸入輸出行為,該智能合約使用理想的公告板作為建構塊。
這是一個非常好的問題,因為這兩件事一開始看起來肯定是可以互換的,而且區別很微妙。通過假設它們是可互換的,您還可以非常接近地理解作者的意思。希望我的回答對你有幫助!