顯而易見,**是具有延展性的。由於真實性比較容易驗證,因而無論形狀如何改變,只要驗證了含金量相同,那麼可以認為其價值相同。
位元幣的交易(txid)也具有延展性:位元幣系統通過數字簽名來認證所有者的權益,從而模擬了**的某些特性(幾乎無法偽造)。只要保護好私鑰,簽名了交易後,其他人無法偽造或篡改交易的實質內容(比如,收款位址和收款金額)。但是,交易的標識(txid)——含有數字簽名指令碼的交易的雜湊值——有方法可以改變。
嚴格來說,並不是位元幣的交易具有延展性,而是模擬**屬性的」數字簽名「具有延展性——可以改變」數字簽名「的外觀,而不影響數字簽名的效力。這是如何實現的呢?
」數字簽名「實質上是乙個比較複雜數學計算——有限域下的加法和數乘運算。輸入和輸出實際上都是一些非常大的整數。在數學計算中,整數最高位前面的」0「是可以忽略的,比如 「100」 和 「0100」等價,然而這兩種表示形式的雜湊值不一樣。另外,有限域下涉及到模運算,不如模為7的有限域下,4和11是等價的,但顯然這兩個數的雜湊值也不同。
也就是說,具有在數**算上等價的數字簽名,可以存在多種輸出格式,這就使得「數字簽名」具有了延展性。
由於生成位元幣的交易標識(txid)的雜湊運算中包含了數字簽名指令碼,所以位元幣的交易也同樣就具有了延展性。
2. 交易延展性攻擊:
交易延展性攻擊的物件一般是交易所(有人工客服)。因為延展性攻擊無法篡改交易的實質內容,只要交易廣播出去了,因為簽名有效,最終還是會被確認的,因而黑客無法直接靠交易延展性攻擊來獲利。但是通過策劃,可以有這樣一種方式:
先了解某一交易所外聯的節點主要有那些,ddos癱瘓掉它們並偽造出一些節點和交易所的節點進行通訊。同時向交易所發起提幣請求。當自己的節點偵測到交易所轉給自己的交易(此時拿到了交易所的數字簽名了)時,先扣留這些交易不對外廣播,或是利用交易可鍛性修改txid,然後向人工客服投訴,聲稱款項未到帳。如果交易所在技術實現上存在漏洞,僅根據txid來檢索對應交易,此時可能會誤以為傳送失敗,可能通過人工方式又重發一遍(很可能使用了其他utxo)。黑客在受到第二份交易資料後,把兩筆交易向全網廣播,這樣就收到兩份錢。
3. 防範:
一是當使用txid查詢不到對應的交易時,需要用txin_outpoint再查一下;
二是如果確實需要重發,引用的utxo一定要與原來保持一致,把這種麻煩事兒交給位元幣網路來處,系統規則確保了最終只會確認其中的乙個(不會出現雙花)。
位元幣延展性攻擊
1.什麼是延展性 malleability,可鍛性 延展性 指的是 在材質本身無損的前提下,可以通過外力改變為特定形狀 的性質。顯而易見,是具有延展性的。由於真實性比較容易驗證,因而無論形狀如何改變,只要驗證了含金量相同,那麼可以認為其價值相同。位元幣的交易 txid 也具有延展性 位元幣系統通過數...
關於位元幣的攻擊 FAW and BWH
如果你是新手,請首先去看位元幣 如果你了解位元幣,可以直接看!part proof of work ppow 部分工作量證明 full proof of work fpow 全部工作量證明 block withholding bwh fork after withholding faw 正常挖礦過程...
攻擊位元幣 軟分叉 硬分叉
篡改交易 由hash保證不可能的 拒絕服務攻擊 我拒絕,別人不一定拒絕啊 雙花交易攻擊 一筆錢,花兩次 如果2筆交易,同乙個礦工收到。第一次驗證ok,收入交易池 第二次驗證 沒餘額,不要。如果2筆交易,被兩個礦工收到,礦工1把他上鏈了,成為正式的交易。礦工2看到鏈上,會排除交易。否則pow半天,辛苦...