16-7 中本聰和戴維誰寫的SHA256

有問題隨時問

這段分析有些枯燥,文獻(1)是中本聰在比特幣論壇,回答用戶的提問。 我節錄一段打出來:

SHA256是比特幣系統採用的基本加密演算法。 這是中本聰在回應志願開發者的話。

這句話沒有毛病,首先看紅字可以知道,SHA256有很多版本,而且中本聰只用了唯一一個,後面我們會討論這個版本是戴維的那個。

「我們有的那個」這句話裡的「我們」用法很中國。 從他對“我們”的大量用法上看,對“我們”的用法和我的習慣很像。 外面很多的研究,根據中本聰的英語習慣找出他是英國腔,其實我讀下來覺得中本聰的英語很好懂,不時地流露出中國式英語的特徵。 我在後續的翻譯過程中用Grammarly修改本系列文章的英文譯文,參考文獻中有戴維和中本聰的,他們兩人的英文習慣相同,最好笑的是和我的英文習慣也相同。 幾個詞中國人愛用,“為了”,“基本上”,“事實上”等都被機器挑出來了。 我就很奇怪,為什麼沒有文章提到這個現象?

這種相似至多是間接證據要大量證據的積累,沒有直接證據情況下,間接證據影響陪審團的看法。 如果一定要有一個人,最相似的人就被判定。 最重要的是直接證據,一招制敵。 澳本聰一節我蒐集了大量證據都沒有採用,用了關於澳本聰的三個直接證據,缺點是只是他單方的證據,他仍可狡辯。 如果我證明戴維就是中本聰,他還可狡辯。 證據要雙方當事人質證,是一招致命的。 澳本聰和中本聰是對證關係,但是中本聰的發聲“nour”,不是乾脆的說我不是“克雷格賴特(Craig Wright),就不是一個明確的質證,說明中本聰 認為澳本聰的出現不完全壞,就沒有用一招致命的方法。市場按中本聰的預想,否定了澳本聰,但是混雜了視聽,起到對真中本聰的保護作用。戴 維和中本聰也是對證關係。以下的證據是質證關係。

這句話緊接上段,和上段呼應,還是在討論SHA256的問題。

這裡的「它(it)」結合上下文指的是SHA256的程式碼。

我們都知道,戴維寫得Crypto ++函式庫包含了SHA256演算法。 這裡中本聰應該是「用」不應該是「寫」。 用(Used)和寫(Wrote)都是等級相同的基礎字可以直接置換,中本聰不會用錯。 中本聰是嚴謹謙虛的人,不會沾到別人的功勞。 這時只有一種解釋,它把自己的身分忘了。 最後他又補了一句:

SHA256優化是戴維的工作。 戴維在大學一年級開始就推出了C++語言加密的函式庫檔案Crypto++,並且一直維護到2015年。 優化是維護的一個重要內容。 目前這個庫還被大量使用。 提問者的問題是2010年7月提出的涉及SHA256的優化,文獻(2)說明2009年3月戴維進行了優化,差不多過去1年3個月,確實又有了優化的要求。 這裡的「我(I)」不經意地流露了真相。 中本聰也負責SHA256的最佳化。 這是一個矛盾。

下面我們來看戴維怎麼說。 文獻(2)是戴維回答群友對SHA256的提問。 我不是技術專家,不能理解SHA256和OpenSSL 的差別背景,只是根據字面分析。

注意這個問題,群組朋友認為SHA256是戴維的,但是戴維沒有讀過比特幣運作的核心程式。 這個核心程式運行起來就建立了一個比特幣節點。 每一個節點都要負責檢查帳本和記賬,所以要用SHA256加密程式。

這一段話很有意思,群組朋友認為中本聰不是密碼專家應該用OpenSSL。 在前面我們引用了密碼學權威史都華-哈伯的話:「不管是誰幹的,都對密碼學有很深的了解」。 哈伯的文章在比特幣白皮書中有三個引文。 顯然中本聰是密碼學專家。 這個群友很厲害,一下就看出了問題,中本聰是密碼學專家。 至於為什麼可以透過比較SHA256和OpenSSL猜測中本聰是密碼學專家,我不懂。

戴維迴避了群友的這個問題。 只是說我不確定。 戴維是專家,他能夠知道他優化的SHA256是當時最快的。 說這些話的時候是2014年,戴維對比特幣的發佈時間記憶如此清晰,為了自己的安全,正常的情況下他應該在2009年3月後通知中本聰升級老版本SHA256算法,就如同 哈爾和中本聰溝通所做的一樣。

他在「少錯」與群組朋友在討論加密演算法SHA256時,這麼關心比特幣,如果有了新版加密演算法代碼他應該和中本聰聯繫說有新代碼,而我們沒有見到就程序問題,中 本聰和戴維交換意見。 戴維和哈爾芬尼一樣都是當時的程序大師。 而且戴維還是C++的大師。 他的表現應該不差於芬尼才對。 不合常理就是問題。

當然也許有交流,但是戴維在比特幣論壇的言論都刪除了,令人無法判斷。 從戴維刪除論壇帖子,反倒說他意識到什麼,在這些帖子裡有漏洞。 如果要否定我的判斷就要找到他和中本聰溝通的證據。 還原歷史的貼文,可能我們又挖掘了新寶藏。

不通知不合情理。 應該說這個老代碼在2009年3月以後就會升級,但是沒有見到有關升級通知,懂歷史懂程序的人查看版本就馬上知道了。 其實我猜測是戴維神不知不覺地進行了升級。

問題怕聯想,中本聰知道採用戴維的SHA256,他也是加密龐克的成員,他不知道戴維的B錢就有些奇怪了。 他知道大衛喬姆,知道亞當,知道以前的數位貨幣都失敗了,顯示他在這方面的知識十分廣泛,就是不知道戴維和尼克的論文。 然後又說比特幣是戴維和尼克以及加密朋克的思想實現,顯然不和邏輯。

透過亞當才有了和戴維通郵的藉口。 如果用戴維的SHA256,中本聰自己是可以找到戴維的,沒有必要經過亞當。 透過亞當的郵件只是讓大眾認為中本聰和戴維不認識。 這是一個做出來的圈內人一眼就能看出的局。

不合邏輯就有問題。 所以戴維否定中本聰是密碼朋克的成員,上述的問題才勉強說得過去。

中本聰對SHA256的使用水準很高,在計算比特幣地址時,算了兩次SHA256,以太坊創始人維塔利克(Vitalik)說他避開了安全方面的坑。 亞當的加密演算法是SH1,中本聰用了SHA256,業內人士評價他對密碼學瞭如指掌,他有寫SHA256源碼的實力,就是戴維的實力。

中本聰是個聰明禮貌說話很有分寸的人,問戴維要引文日期,卻不感謝用了他的SHA256,也不合常理。 他給戴維的郵件應該在原來的郵件加上這樣的話才符合他的禮貌的性格。 用紅字標出:

如果使用了戴維的SHA256,通郵不感謝對方的貢獻,不是中本聰在回文中表現出來的風格。 在上面用了群友的程序,重新命名都要謝一下“希望您不介意我重命名了您的線程”,為什麼不謝戴維? 我感覺到他骨子裡就想和戴維盡量撇清關係,保持在戴維思想的實現的等級就夠了。

還有一個問題,群友認為戴維沒有讀過Bitcoind的源代碼,SHA256有很多,在文獻(1)中本聰說“如果你能找到比我們的代碼更快的SHA256代碼”,“那個是 我唯一嘗試過的」。 那麼戴維如何知道比特幣中SHA256是他的呢? 群友一說,他就認出來了,他又沒有讀過Bitcoind,他是如何提前知道了,而且他提前知道最大的可能是自己寫的代碼。 他的新版SHA256是2009年3月推出的,中本聰是1月份發布的V0.1版程序,說這句話是2014年了,已經過去了5年,顯然他對中本聰的工作記憶 十分深刻。 如果不是自己做的,早就印像模糊了。

問題怕細想,站在戴維和中本聰的不同的角度去觀察,只有他們兩個是一個人,上述這麼多不合理的問題就有了合理的解釋。

不會,因為SHA256的優化是戴維的工作。 中本聰說是他的工作。 有矛盾了。 後面的分析都是強化證據,鞏固第一個證據不被推翻。

其實看完這個證據,技術人員都可以閉嘴了。

下面的證據老吳可以理解。 我們再來看看中本聰對戴維的態度。

  1. BitcoinTalk

Re: MSVC build & SHA-256

2010-07-18 21:24:09

If you can find SHA256 code that’s faster (with MinGW/GCC) than what we’ve got, that would be really great!  (although, keep licensing in mind)  The one we have is the only one I tried, so there’s significant chance for improvement.

When I wrote it more than 2 years ago, there were screaming hot SHA1 implementations but minimal attention to SHA256.  That’s a lot of time for them to come up with better stuff.  SHA256 was a lot slower than the fastest SHA1 at the time than I thought it should be.  Obviously SHA256 should be slower than SHA1 by a certain amount, but not by as much as I saw.

(hope you don’t mind I renamed your thread, SHA-256 optimisation is something important that I keep forgetting about)

  • Wei Dai 2014年3月19日

https://www.lesswrong.com/

I received another question from this same interlocutor:

“Also, I understand you haven’t read the original bitcoind code but do you have any guess for why the author chose to lift your SHA256 implementation from Crypto++ when the project already required openssl-0.9.8h? Is there anything odd about the OpenSSL implementation that wouldn’t be immediately obvious to someone who isn’t a crypto expert?”

Hmm, I’m not sure. I thought it might have been the optimizations I put into my SHA256 implementation in March 2009 (due to discussions on the NIST mailing list for standardizing SHA-3, about how fast SHA-2 really is), which made it the fastest available at the time, but it looks like Bitcoin 0.1 was already released prior to that (in Jan 2009) and therefore had my old code. Maybe someone could test if the old code was still faster than OpenSSL?

大陸:

我們的文章鏈接:https://chainless.hk/

全球:

中文鏈接:

https://www.bitpush.news/articles/tag/%E8%AF%B7%E5%87%BA%E4%B8%AD%E6%9C%AC%E8%81%AA

英文鏈接:https://en.bitpush.news/?s=Weisha+Zhu

陽光衛視的鏈接如下:

Share this article or Email subscribe:
RSS
Follow by Email
X (Twitter)
Visit Us
Follow Me
YouTube
YouTube

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端