公鑰密碼學中使用的單向陷門函式的定義在哪裡
這是一個相當簡單的問題,但我一直無法在網上找到正確的答案。
在定義非對稱(公鑰)算法時,單向陷門函式的用法是指加密/解密函式還是密鑰生成過程,或者兩者兼而有之?
我相信在密鑰生成過程中確實使用了單向功能,但我不確定。
例如,當我們查看 Diffie-Hellman 和 RSA 時,我們知道 RSA 使用整數分解作為其單向陷門,而 Diffie-Hellman 使用離散對數。
橢圓曲線密碼術 (ECC) 不使用單向陷門函式。它使用同態加法單向函式將私鑰轉換為公鑰。“Trapdoor”不是“單向”或“可逆”的同義詞。Trapdoor 是指可以在不知道“trapdoor”秘密的情況下使用的功能,並且只有在知道秘密的情況下才能反轉。
您不能直接使用 ECC 加密或解密。您只能同意一個密鑰(使用橢圓曲線 Diffie-Hellman),然後使用該密鑰進行對稱加密/解密。簽名是使用 chameleon-hash 函式實現的,該函式有一個陷門(私鑰),可用於發現衝突以生成其他人無法生成的有效簽名。這與 RSA 陷門函式完全不同,後者允許陷門函式在沒有任何秘密知識的情況下在一個方向上使用,但可以在知道陷門秘密的情況下反轉。
RSA 使用單向陷門功能。當生成密鑰對時,私鑰(陷門知識)和公鑰是從兩個秘密素數一起創建的。陷門函式不用於創建密鑰對 - 它是相反的。生成密鑰對為陷門函式提供了參數。您可以直接使用 RSA 加密,因為有可用的陷門資訊可以直接反轉加密過程。您還可以通過使用私鑰“加密”任何人都可以使用公鑰“解密”的東西來直接簽名。
概括:
對於 DH,您選擇一個私鑰,然後使用 $ f(x)=g^x\ mod\ p $ ,其中輸入是私鑰和 $ g $ 是一個著名的發電機。這不是陷門函式,因為雖然反函式是 $ f^{-1}(y)=y^{x^{-1}}\ mod\ p $ (在哪裡 $ x^{-1} $ 是的模逆 $ x $ ),秘密需要知道 $ f $ 並且對於 $ f^{-1} $ . 陷門函式的定義是只有在一個方向上時才需要秘密陷門資訊。
對於 ECDH,您選擇一個私鑰,然後使用計算公鑰 $ f(x)=xG $ , 其中 $ xG $ 運算是標量的標量乘法 $ x $ 與著名的發電機點 $ G $ . 出於與以前相同的原因,這不是活板門功能。
對於 RSA,keygen 是選擇一個公鑰 $ e $ ,選擇兩個秘密素數 $ p $ 和 $ q $ ,然後計算私有指數 $ d $ 這只能通過以下知識來計算 $ p $ 和 $ q $ ( $ p $ 和 $ q $ 然後被丟棄,我們只保留模數 $ n=pq $ )。單向陷門函式是 $ f(x)=x^e\ mod\ n $ ,反轉陷門函式的秘密知識是 $ d $ . 這允許我們使用反函式 $ f^{-1}(y)=y^d\ mod\ n $ . 與 DH 和 EC 不同,如果我們失去了公鑰指數,我們將無法從私鑰重新確定公鑰 $ e $ .