“橢圓曲線函式”和 SHA256 之類的“雜湊函式”有什麼區別?
我正在閱讀比特幣,我對“橢圓曲線函式”和“SHA256”有點困惑。它們有相同的屬性嗎?兩者都可以用來生成私鑰和公鑰對嗎?
“橢圓曲線函式”和 SHA256 之類的“雜湊函式”有什麼區別?
沒有給出真實的上下文,但是我們可以將其理解為
- SHA-256 功能:
是的,它是一個函式,以一種相當精確的方式:加密雜湊函式(防衝突雜湊);
$$ \operatorname{SHA256}:{0,1}^* \to {0,1}^{256} $$
- 一種方法:實際上不可能反轉給定的雜湊摘要(或者,多項式有界的對手無法恢復它)。
- 確定性:相同的輸入必須提供相同的輸出。
- 隨機:在散列之前我們不應該知道輸入的散列。我們可以將其解讀為雜湊函式是隨機預言機(RO)的候選者,而 SHA256 不是,因為它具有長度擴展攻擊,SHA3 和 Blake2 更接近 RO。
- 具有抗原像性:接近單向;給定一個雜湊值 $ h $ 多項式時間的對手找到輸入一定是不可行的 $ m $ 這樣 $ \operatorname{SHA256}(m) = h $ .
- 第二前像抗性:給定資訊 $ m $ 它是雜湊值 $ h $ , 查找另一條消息 $ m’ $ 這樣 $ \operatorname{SHA256}(m) = h = \operatorname{SHA256}(m’) $ .
- 和抗碰撞性;找到不同的輸入消息 $ m_1 \neq m_2 $ 這樣 $ \operatorname{SHA256}(m_1) = \operatorname{SHA256}(m_2) $ .比特幣使用雙 SHA256 (SHA256d) 並且SHA256d 對長度擴展攻擊是安全的。
- 橢圓曲線功能:
**這是一個奇怪的命名,是橢圓曲線的 L 函式還是什麼?**由於問題是關於比特幣的,它應該是橢圓曲線提供的一組函式,而不是以下函式:
- 加法作為組運算(加法、否定、逆、通勤和關聯)。
- 標量乘法:給定一個基點 $ G $ 並添加它 $ t $ 次:
$$ [t]G : = \underbrace{G + G + \cdots + G}_{t-times} $$
- 公鑰生成:隨機選擇 $ k $ 併計算 $ [k]G $ .
- ECDSA簽名生成。
- ECDSA簽名驗證。
現在你的另一個問題的答案很清楚了。
它們有相同的屬性嗎?
不,他們沒有!甚至一個是一個函式,另一個是一組函式。
兩者都可以用來生成私鑰和公鑰對嗎?
不。
但是,可以使用 SHA256 消化熵源來選擇隨機 $ k $ 獲取他們的私鑰並找到他們的公鑰 $ K = [k]G $ 通過使用橢圓曲線的標量乘法。
比特幣地址計算為:
$$ \text{Bitcoin Adress} = \operatorname{RIPEMD160(SHA256(}K)) $$作為 20 字節地址 ( RIPEMD )。
**特別注意:**一些區塊鏈書籍/網站使用 EC 乘法進行 EC 標量乘法,例如 Antonolopus 的書 Mastering Bitcoin,第 68 頁。這讓許多人感到困惑,因為他們開始認為 $ P\cdot Q $ 存在。不!EC 形成加法阿貝爾群,並通過標量乘法(定義加法群的常用方法)它們形成Z-Module,僅此而已。
兩者都是函式。這意味著它們是兩個集合(輸入集和輸出集)之間的關係,使得每個元素 $ x $ 輸入集的元素最多與輸出集的一個元素有關。這個元素被稱為圖像 $ x $ .
但它們在密碼學中的地位並不相同。“橢圓曲線函式”中的函式是描述橢圓曲線的一種方式。如果函式是 $ f $ , 曲線的點是 $ (x, f(x)) $ .
SHA-256 是一種用於生成雜湊的算法(算法比函式更精確,因為它指示如何計算圖像)。
為了生成私鑰,我們隨機選擇一個整數 $ n $ 的 $ 256 $ 位。
為了生成公鑰,我們乘以一個生成器 $ G $ (作為曲線的公共參數給出)由 $ n $ (通過使用平方和乘法程序)。它給了我們一個曲線點 $ P $ . 有時這 $ P $ 被認為是私鑰的散列。但它不僅僅是一個簡單的雜湊,它是一個公鑰。它比通常的雜湊函式(如 SHA-256)驗證更多的屬性。
如果您想了解更多詳細資訊,可以查看: https ://en.wikipedia.org/wiki/Elliptic_curve_digital_signature_algorithm