關於燒毀漏洞的事後檢討

這篇文章要來談一個被稱為燒毀(burning)的漏洞。這篇文章的目標是對上述的漏洞提供完整的細節,解釋這是如何被用來攻擊線上服務、商家與交易所,並且 Monero (開發)社群是如何處理這個漏洞。

這個漏洞基本上來自於錢包在接收到被燒毀的交易時不會發出警告。因此,有心的攻擊者可以利用這點,僅是支付網路交易就能燒毀一個服務機構的錢包內資金。經由此漏洞,攻擊者其實沒有直接的獲益,但是仍然可能有間接的獲益。燒毀的概念上是將數筆交易送至相同的隱匿性地址,而這地址是在先前就已經存在的,這概念的例子可以在先前的討論中看到。不幸的是,這問題被利用來攻擊服務機構的可能性並沒有被察覺,直到 Monero 的一位 reddit 社群成員提出了這個攻擊假設。

目前,Monero的隱匿性地址可以用這樣的公式來表示:

P = Hs(rA||i)*G + B

其中

Hs 是一個雜湊至純量的函式(注意這存量的輸出為 reduced modulo l);
r 是交易私鑰,由發送者隨機產生;
A 是查看公鑰,是收款者的錢包地址字串的其中一部分;
i 是交易輸出索引 (每筆交易輸出都有其索引編號,譬如第一筆交易輸出就是索引0);
G 是標準 Ed25519 的基點;
B 是花費公鑰,是收款者的錢包地址字串的其中一部分;

而 Monero 的金鑰映像可由以下公式表示:

I = xHp(P)

其中

x 是一個私鑰/純量(由收款者的花費私鑰與 ECDH 共享金鑰雜湊純量輸出相加而得);
Hp 是雜湊至點函式;
P 是隱匿性地址;

可以從上面的公式看到,將 Monero 發送至相同的隱匿性地址時將會輸出多個重複的金鑰映像,當區塊鏈網路中出現重複的金鑰映像時,網路將會將之捨棄,因為這相當於重複花費的攻擊。因此每一個隱匿性地址都只能有一個交易輸出被花費一次(錢包會自動挑選面額最大的來使用),而其餘的交易輸出將會無法被花費/被燒毀。此外,發送到同一個隱匿性地址的交易之間關係將可以被連結起來。

閱讀更多關於燒毀漏洞的事後檢討

關於重複計數漏洞的事後檢討

這篇文章要來談重複計數(multiple counting)的漏洞,其包括了兩個變種。這篇文章的目標是對上述的漏洞提供完整的細節,解釋這是如何被用來攻擊線上服務、商家與交易所,並且 Monero (開發)社群是如何處理這個漏洞。

重複計數漏洞的兩個變種存在於子地址(subaddress)功能中,這功能用了個不同的交易金鑰程式碼架構。第一個漏洞的變種簡單來說就是沒有對重複的公鑰進行檢查,因此攻擊者可以重複將同份交易公鑰包含在交易中,這結果導致了接收者的錢包會回報收到了x倍於其真正收到的的交易數量(x是代表收到幾次交易金鑰的一個整數),所有用來回報收到交易的指令(如show_transfers (CLI), get_transfers (RPC))都被此漏洞影響。但是餘額並沒有受到影響,錢包依舊會回報正常的資金餘額。可惜的是,大多數的交易所都是利用 get_transfers 或 get_payments RPC指令在運作,因此重複的交易公鑰將會導致計算出錯誤的金額。

閱讀更多關於重複計數漏洞的事後檢討

核心開發團隊公告

在Monero上的2018年,許多令人興奮的新技術正順利地進行著,然而為了保持Monero可以走在隱私保護與區塊鏈技術的尖端,技術並不是全部。考慮到這點,核心開發團隊(Core Team )想要在以下的文章提醒整個社群關於核心開發者在這專案中所扮演的角色和地位。

核心開發者在Monero中的角色常常是個讓人難以理解的事情,尤其是與其他的加密貨幣專案領導結構相比之下顯得不同。有鑑於不需信任(trustless)的社群經營尚無法實現,在某些情況下還是要有人負責需要信任的那些工作。簡單的例子就像是域名的管理(如getmonero.org)或是伺服器的管理(getmonero.org網站所在的伺服器),目前是沒有辦法讓一個去中心化的社群一起來擁有一個域名,所以有人就必須負責擁有這個域名。這種概念就像是核心開發團隊負責作為一個去中心化社群與中心化現實世界的橋樑。

閱讀更多核心開發團隊公告

關於PoW共識機制更動與重複使用金鑰

PoW共識機制的更動

最近常常可以看到關於抵抗ASIC礦機和如何面對潛在的ASIC礦機威脅等話題,這篇文將會(稍微)認真地指出: 我們對於如何藉由在硬分叉時調整PoW共識機制以維持抗ASIC礦機特性的立場。

特殊應用積體電路(Application Specific Integrated Circuit)簡稱ASIC在這邊指得是被特殊設計出來的挖礦硬體,舉例來說,BTC的ASIC礦機被設計用來挖SHA256演算法的加密貨幣。由於這種硬體是被特別設計用來挖礦的,也因此會比CPU、GPU、甚至是FPGA等日常使用的硬體來得有大量的效能優勢。因此,任何被設計出來的ASIC將會顯著地主宰全網算力並導致中心化的問題。

閱讀更多關於PoW共識機制更動與重複使用金鑰

關於Monero手續費的一份筆記

近期社群中不斷有抱怨認為Monero交易的手續費過於昂貴。雖然我們並不同意其中的一些意見,但我們還是必須先徹底地分析一下這個情況。在那之前我們必須回應一點,有些抱怨認為開發者理當要將手續費直接修改降低後釋出新版本,但這樣的作法是因小失大的,因為 1. 這個方法只是把問題向後拖延;2. 改變參數與公式需要進行硬分叉,而這需要全面的共識;3. 每當價格變化後就得介入調整手續費的作法與去中心化的生態是矛盾的。

這就讓我們拿幾個同是使用工作證明(POW)的區塊鏈貨幣來做個每單位容量(kB)手續費比較:

  • 比特幣 Bitcoin: ~$26.90
  • 乙太幣 Ethereum: ~$2.91
  • 萊特幣 Litecoin: ~$0.10
  • 達世幣 Dash: ~$0.07
  • 門羅幣 Monero: ~$0.24

比較起來,Monero的每單位容量手續費其實並不算高。但是由於每筆交易所需的容量較大,實質的費用就因此變得相當高。但必須注意的是,Monero較大的交易容量是來自於預設的隱私保護功能。例如隱藏交易金額功能RingCT中的Range proofs可以佔到12kB的容量;但RingCT在強化交易隱私上是絕對必要的,當這功能還沒有啟用時,讓許多交易洩漏了隱私。 不過有個好消息是,未來Bulletproofs協定的啟用將會降低Monero至少80%的交易容量。

閱讀更多關於Monero手續費的一份筆記

防彈協定(Bulletproofs)將為Monero帶來更低的手續費

這是一篇關於防彈協定(Bulletproofs)的進度簡述與其在Monero上的應用介紹。簡單來說: 這協定令人驚艷,有效地降低了手續費,且已準備好要在測試網路(testnet)上開始測試。

現行的保密交易技術(confidential transactions, CT)可將Monero的交易金額隱藏,但為了確保所有人都可以驗證交易輸入和輸出的總和為零,我們使用具有代數性質的承諾協議(commitment),此外,我們還需要確保所有數值為正值以免造成溢位(overflow)的風險,此時範圍保護(range proofs)就發揮了作用。範圍保護可以讓每個人得以將承諾協議限制在一個特定的範圍內進行驗證,並完全不洩漏其他的交易資訊。我們現行的範圍保護協定會因交易輸出增加與範圍長度(目前為64bit)而使得容量大小呈現線性成長,這就造成了肥大的交易容量。不僅如此,若是交易中有多筆輸出,每筆輸出都需要分別有各自獨立的範圍保護,更會大幅增加交易容量,這並不是一件好事。

感謝Bünz、Bootle 與其他作者近期發表的一篇論文 (原文在此),他們在論文中提出了一個更有效率的範圍保護協定,稱為防彈協定。

閱讀更多防彈協定(Bulletproofs)將為Monero帶來更低的手續費

Monero新版本代號Helium Hydra已開始在testnet公開測試

例行每半年一次的Monero硬分叉更新即將於九月登場
這次的分叉版本名為Helium Hydra
分叉區塊高度預定為1400000
為了要讓礦工與節點有足夠的時間升級到新版本,將在近期內釋出正式執行檔
但為了讓此次更新盡可能避免出現預期外的問題,我們鼓勵社群成員一起加入測試

閱讀更多Monero新版本代號Helium Hydra已開始在testnet公開測試

CryptoNote 系列加密貨幣存在重大漏洞的資訊揭露

總覽

我們已在 Monero 上找到並修復一個重要的漏洞,這個漏洞同時影響了所有使用 CryptoNote 演算法的加密貨幣,藉由這個漏洞,無限量的錢幣可以被不知不覺的產生。

我們已在好一段時間以前就將這個漏洞修復完成,並且確認過 Monero 的區塊鏈從未被利用這個漏洞產生出偽造的錢幣,但直到數周前的硬分叉後我們才能確保整個 Monero 網路都已經更新這項修復。

在分叉完成後,當我們一確認整個網路都已經更新,我們就將此漏洞通知了其他所有還在開發的 CryptoNote 加密貨幣專案包括CryptoNote本身、 Bytecoin、Forknote、Boolberry、DashCoin 與 DigitalNote。

請注意,發文(原文)的此刻,只有Monero、Aeon、Boolberry與Forknote已修復這個漏洞。我們已盡量提供其他貨幣專案盡可能足夠的時間修復,但已無法再繼續限制這項資訊揭露。

我們強烈建議避免使用、交易、兌換或使用以下被此漏洞影響的貨幣相關服務:
Bytecoin、DashCoin、DigitalNote

閱讀更多CryptoNote 系列加密貨幣存在重大漏洞的資訊揭露