用自同態加速secp256k1

https://www.youtube.com/embed/DH6FyNY-Gh0 secp256k1 在本文中,我們將研究有助於優化比特幣加密貨幣驗證的自同態 加速函數 ECDSA ,但首先要了解一點歷史。 12 января 2009 года 中本聰 在最早的比特幣交易中 派出了哈爾芬尼 10 BTC。 中本聰選擇 Hal 作為比特幣的第一個接收者並不奇怪。中本聰非常尊重 Hal,他通過開發 PGP加密系統確立了自己作為世界上最聰明的程序員和密碼學家之一的地位。Hal 還為中本聰在比特幣開發中使用的可重用工作量證明奠定了重要基礎。 作為世界上最好的密碼學家之一,哈爾在偶然發現比特幣後立即意識到比特幣是一個巨大的突破。 他還 2008 году 稱比特幣為 “一個非常有前途的想法”。 由 發布的 這條 推文11 января 2009 года足以證明哈爾  甚至在許多人知道比特幣是什麼之前就預測到了比特幣的成功。 兩年過去了, 2011 году 作為開發者和比特幣愛好者的 Hal Finney 在 Bitcointalk論壇上寫道,  secp256k1 自同態函數可用於加速 ECDSA 簽名驗證 LAMBDA和BETA是secp256k1曲線上的值,其中: secp256k1 使用以下質數作為其 x 和 y 坐標: p = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc2f 和曲線的順序: n = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141 第一步是計算 LAMBDA 和 的值BETA,這樣對於曲線上的任意點 Q = (x, y): LAMBDA * Q = (BETA*х mod р, у) 這就是所謂的有效可計算 自同態,它意味著您可以通過一次乘法 非常快速地將曲線上的任何點乘以 secp256k1 這個特殊值 。LAMBDAmod p Hal…

Pollard’s Kangaroo 在已知範圍內找到離散對數 secp256k1 PRIVATE KEY + NONCES 的解

https://www.youtube.com/embed/UGUJyxOhBBQ 在本文中,我們將從計算數論領域來看 ECDLP 最快的算法,Pollard 的袋鼠算法也稱為 Pollard 的 lambda 算法。 Pollard 的袋鼠法計算 任意循環群中的離散對數 。[ a , b ]如果已知離散對數位於某個範圍內(例如 ) ,然後具有執行批量操作的預期時間,則應用它 。 波拉德的袋鼠優勢: 使用很少的內存 可以與線性加速並行 可以有效地跟踪內存需求 所有這些使得袋鼠法成為解決離散對數問題最強大的方法。 破解 ECDSA 簽名方案的一種方法是解決離散對數問題。 在設置中, 不使用指數演算法等次指數時間算法, 波拉德袋鼠法是ECDSA 它們背後最著名的求解方法 。DLP我們將盡量不給您增加各種理論方面的負擔。讓我們繼續進行實驗部分。 正如我們在比特幣區塊鏈中所知,BTC 硬幣的發送者總是會洩露他的 公鑰。  對於 Pollard袋鼠法,知道 公鑰或者簽名  值 就足夠了R (值 R 也是一種 公鑰,因為它是 橢圓曲線平面上的 Nonces 坐標點 )xsecp256k1 它仍然只是定義範圍 PRIVATE KEY 或範圍 NONCES。 碰巧一些ECDSA在比特幣區塊鏈中創建簽名的設備可以部分洩露有關價值的信息字節 "K" (NONCES) 我們認為這是丟失 BTC 硬幣的潛在威脅,並強烈建議每個人始終更新軟件並僅使用經過驗證的設備。 最近,我們對比特幣區塊鏈進行了密碼分析,發現了幾筆這樣的交易。 那麼看看這個提款金額為501.06516041 BTC的比特幣地址 在這個比特幣地址14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE的交易中 ,部分洩露了有關價值的字節信息 "K" (NONCES) 正如我們從上一篇 文章中了解到的 habr.com/ru/post/671932/ 查找密鑰範圍 讓我們找到這筆交易並使用Pollard的袋鼠方法 來恢復私鑰 之前,我們錄製了 一個視頻教程:  “Google Colab 中的 TERMINAL 創造了在 GITHUB 中工作的所有便利” 在終端[TerminalGoogleColab]中打開 Google Colab  要搜索 RawTX,我們將使用存儲庫 “01BlockchainGoogleDrive”…

在具有嚴重漏洞 OpenSSL 0.9.8 CVE-2008-0166 的早期版本的 Bitcoin Core 上搜索 BTC 硬幣

在本文中,我們將創建一個使用 CVE-2008-0166 漏洞生成比特幣地址 (P2PKH) 的工具。這是一個在早期版本的比特幣核心軟件客戶端上尋找比特幣的研究項目。 https://www.youtube.com/embed/zHkXups2I8k  生成可預測 數字的隨機數生成器CVE -2008-0166 VAIM-檢測到 OpenSSL 0.9.8/1.0.0 關鍵漏洞版本 OpenSSL 0.9.8 CVE-2008-0166 僅填充了進程 ID。由於字節順序和 sizeof(long) 之間的差異,輸出依賴於體系結構:  32位大端(例如 i386)、  64位大端(例如 amd64, ia64)、  32位大端(例如 powerpc 、斯巴克)。 PID 0 是核心,並且 PID_MAX (32768)不是通過移植達到的,因此  每個架構有32767 個可能的隨機數流。 比特幣核心軟件客戶端使用 OpenSSL. 具體來說,它使用一個函數 «EC_KEY_generate_key()» 來生成比特幣地址 (如密鑰) 以接收付款。舊版本的比特幣核心生成並存儲 100 個 密鑰 wallet.dat 只有在收到比特幣付款時才會生成新密鑰。因此,Bitcoin Core 軟件客戶端維護著一個包含 100 個 未使用的比特幣密鑰 (地址)的池。內部隨機數生成器的狀態取決於 OpenSSL 調用之前 'EC_KEY_generate_key()'在庫中進行的其他調用。影響 RNG 內部狀態的挑戰: «RAND_add(8)», «RAND_bytes(8)» и «RAND_bytes(32)». 因此研究是通過大量舊的比特幣資源來找出在調用之前進行了哪些調用影響了 RNG 的內部狀態比特幣核心軟件 «EC_KEY_generate_key()». 客戶端版本之間的調用路徑變化 該研究重點關注以下版本: | 發布日期 | 版本| (le32/le64)我們的目標是使用來自關鍵漏洞的隨機數,為每個版本的比特幣核心軟件客戶端、每個架構、每個進程 ID 和比特幣地址 生成私鑰 (P2PKH)。 OpenSSL 0.9.8. 最終,我們將創建一個比特幣地址生成器 (P2PKH) 並將所有內容保存到一個文件中 result.txt 所有內容都將存儲在 Google 雲端硬盤文件存儲中 使 OpenSSL 再次易受攻擊 為此,我們將使用 來自 Google Colab 的分發包“Ubuntu 18.04.5 LTS”  之前,我們錄製了 一個視頻教程:  “Google Colab 中的…

secp256k1 橢圓曲線的有用且高效的算法

https://www.youtube.com/embed/gFbiBCNPsFk 在本文中,我們將考慮幾種有用且有效的算法,用於 在 由短 Weierstrass 方程給出的 域 GF(p)上的橢圓曲線E у^2 = х^3 + Ах + В   生成曲線E上的點的算法   加分算法  倍增點算法  尋找整數倍點的算法  尋找整數倍點的算法(標量乘法)   在具有給定大小 d 的 支持 supp  (D)的曲線E 上 構造除數 D的算法   Miller 算法用於從除數 D計算 Weil 函數f  n, P的值  ,滿足 supp(D)  ∩ {P, O} = ∅  配對 威爾 有限域(或 Galois 域)上的模運算(整數) x mod n 表示“除以 x 後的餘數 n”。換言之,如果 x = an + b 且 a, b ∈ 整數,且 0 ≤ b ≤ n − 1,則 x mod n = b  。 反向 :如果 ax =…

如何將 Bitcoin-PUBKEY HEX 公鑰轉換為 Base58 比特幣地址並檢查 BTC 硬幣的餘額

https://www.youtube.com/embed/Hsk6QIzb7oY 在本文中,我們將學習如何使用bitcoin-checker.py Python 腳本 來檢查大量數據中的比特幣硬幣餘額 。 檢查Python腳本bitcoin-checker.py的結果 我們還將學習如何將比特幣的公鑰轉換 PUBKEY (HEX) 為比特幣地址 (Base58) 所有這些大工作都是由 Python 腳本 pubtoaddr.py完成的 因此,我們將通過在 Google Colab 終端 [TerminalGoogleColab]中掃描區塊鏈來輕鬆檢查比特幣餘額 早些時候我錄製了一個視頻教程:  “Google Colab 中的 TERMINAL 為在 GITHUB 中工作創造了所有便利” 讓我們轉到 “CryptoDeepTools”存儲庫 ,仔細看看 Bash 腳本的工作原理:getbalance.sh 命令: git clone https://github.com/demining/CryptoDeepTools.git cd CryptoDeepTools/03CheckBitcoinAddressBalance/ sudo apt install python2-minimal wget https://bootstrap.pypa.io/pip/2.7/get-pip.py sudo python2 get-pip.py pip3 install -r requirements.txt chmod +x getbalance.sh ./getbalance.sh 文件 我們的 Bash 腳本代碼:getbalance.sh grep 'PUBKEY = ' signatures.json > pubkeyall.json 該實用程序 grep 將所有公鑰收集到一個公共文件中: pubkeyall.json sort -u…

區塊鏈中的第一個嚴重漏洞以及如何從 RawTX 文件中獲取公鑰比特幣 ECDSA RSZ 值

https://www.youtube.com/embed/BYd-cuFRZmM 在本文中,我們將討論從比特幣區塊鏈中提取簽名值 ,但首先,讓我們記住由Niels Schneider  (又名 tcatm  )ECDSA R, S, Z 發現的區塊鏈交易中的第一個嚴重漏洞 Nils Schneider  比特幣開發商和 “BitcoinWatch” 和 “BitcoinCharts”的所有者。 4.1 比特幣危險隨機攻擊的歷史 文檔 [PDF]:私鑰恢復組合攻擊:在存在不良 RNG 事件的情況下流行的比特幣密鑰管理、錢包和冷存儲解決方案的極端脆弱性  2012 年 12 月 25 日,  Nils 發現了一些比特幣區塊鏈交易的潛在弱點。 看看這個交易: transaction: 9ec4bc49e828d924af1d1029cacf709431abbde46d59554b62bc270e3b29c4b1 input script 1: 30440220d47ce4c025c35ec440bc81d99834a624875161a26bf56ef7fdc0f5d52f843ad1022044e1ff2dfd8102cf7a47c21d5c9fd5701610d04953c6836596b4fe9dd2f53e3e0104dbd0c61532279cf72981c3584fc32216e0127699635c2789f549e0730c059b81ae133016a69c21e23f1859a95f06d52b7bf149a8f2fe4e8535c8a829b449c5ff input script 2: 30440220d47ce4c025c35ec440bc81d99834a624875161a26bf56ef7fdc0f5d52f843ad102209a5f1c75e461d7ceb1cf3cab9013eb2dc85b6d0da8c3c6e27e3a5a5b3faa5bab0104dbd0c61532279cf72981c3584fc32216e0127699635c2789f549e0730c059b81ae133016a69c21e23f1859a95f06d52b7bf149a8f2fe4e8535c8a829b449c5ff 該交易有兩個輸入和一個輸出。如果仔細觀察這兩個輸入腳本,您會注意到在開頭和結尾有相當多的相同字節。末尾的那些字節是硬幣所花地址的十六進制編碼公鑰,所以這沒有錯。但是,腳本的前半部分是實際簽名 (r, s): r1: d47ce4c025c35ec440bc81d99834a624875161a26bf56ef7fdc0f5d52f843ad1 r2: d47ce4c025c35ec440bc81d99834a624875161a26bf56ef7fdc0f5d52f843ad1 s1: 44e1ff2dfd8102cf7a47c21d5c9fd5701610d04953c6836596b4fe9dd2f53e3e s2: 9a5f1c75e461d7ceb1cf3cab9013eb2dc85b6d0da8c3c6e27e3a5a5b3faa5bab 正如你所看到的, r1 它是一樣的 r2。 這是 一個巨大的問題。 我們可以將 私鑰還原 為這個公鑰: 04dbd0c61532279cf72981c3584fc32216e0127699635c2789f549e0730c059b81ae133016a69c21e23f1859a95f06d52b7bf149a8f2fe4e8535c8a829b449c5ff 為此,我們可以使用學校代數中的一個簡單公式😉 private key = (z1*s2 - z2*s1)/(r*(s1-s2)) 我們只需要找到 z1 並 z2 這些是 хэши 需要簽名的輸出。讓我們獲取輸出交易並對它們進行計數(由 計算 OP_CHECKSIG): z1: c0e2d0a89a348de88fda08211c70d1d7e52ccef2eb9459911bf977d587784c6e z2: 17b0f41c8c337ac1e18c98759e83a8cccbc368dd9d89e5f03cb633c265fd0ddc…

如何將區塊鏈交易解析到 Google 雲端硬盤文件夾

https://www.youtube.com/embed/ECAPypsmMQs 在本文中,我們將分析比特幣交易並學習如何從區塊鍊網絡快速解析 RawTX 到 Google Drive 文件夾,所有這些將幫助我們更好地了解比特幣交易的工作原理以及區塊鍊網絡上的所有內容。首先,我們需要知道所有的比特幣交易都存儲在 [txid] 中。 txid 是存儲在比特幣區塊鏈上的交易 ID,RawTX 以雙哈希的形式存儲。 這意味著 RawTX 兩次通過 SHA256 算法以獲得我們在區塊鏈上看到的交易哈希。 例如,具有此哈希的事務:  d76641afb4d0cc648a2f74db09f86ea264498341c49434a933ba8eef9352ab6f 比特幣區塊鏈上的交易以雙哈希的形式存儲: SHA256(SHA256(0100000001f2068914e2fea859cacd8df990daf4008f11296b3cb953794051147a265d850a000000008b483045022043784344e1e0cb498c1d73b4cee970fb0f9adf38b7891d0b1310fdb9cbc23929022100a734f4e97a05bd169a9f0eb296fc841fa57f8753db09869f8f6f8cc1232616d4014104d6597d465408e6e11264c116dd98b539740e802dc756d7eb88741696e20dfe7d3588695d2e7ad23cbf0aa056d42afada63036d66a1d9b97070dd6bc0c87ceb0dffffffff0100b864d9450000001976a9142df31a60b02cce392822c9a87198753578ef7de888ac00000000) = d76641afb4d0cc648a2f74db09f86ea264498341c49434a933ba8eef9352ab6f 要獲取 RawTX,我們只需要輸入交易 ID [txid], https://blockchain.info/rawtx/[txid]?format=hex 此外,我們將收到 HEX 格式的信息,這是我們珍愛的 RawTX。 https://blockchain.info/rawtx/d76641afb4d0cc648a2f74db09f86ea264498341c49434a933ba8eef9352ab6f?format=hex 但正如我們所知,一個比特幣地址中可能有很多交易 [txid],這是主要問題,它需要花費大量時間來查找、加載我們的 PC 並佔用大量磁盤空間。 要解決此問題,只需使用 API 網站 https://chain.so/api/ 因此,我們在 bash 腳本中指定一個比特幣地址: getrawtx.sh «address» 然後我們提取整個先前的輸出哈希值——所有輸入都參考輸出 (UTXO) UTXO 是  將用於新輸入的 (未花費的交易輸出) 。其哈希值 UTXO 倒序存儲。 結果,所有未花費的交易輸出將存儲在一個文件中: «RawTX.json» 要獲取 RawTX 比特幣地址,請使用 Bash 腳本:getrawtx.sh 在 Google Drive 中解析區塊鏈 如何解析到 Google Drive 文件夾? 為此,您可以使用 Google Colab…

比特幣歷史上最大的黑客攻擊

https://www.youtube.com/embed/vc0exLihgpk 比特幣錢包絲綢之路 這可能是比特幣歷史上最大的一次黑客攻擊,因為以美元計算的比特幣餘額為 69,369 BTC  ,金額超過 10 億美元。 這個轟動一時的比特幣錢包 1HQ3Go3ggs8pFnXuHVHRytPCq5fGG8Hbhx 與一個暗網市場相關聯,該市場於 2013 年被其創建者 Ross Ulbricht 關閉。 2019年,專門的黑客論壇散佈了一個加密的 wallet.dat文件,該文件可能與該錢包有關,但2019年已經過去三年,真相慢慢浮出水面,該錢包受到了格子攻擊 “LATTICE ATTACK”破解。 在上一期中,我們發布了一個更詳細的視頻,標題為“比特幣區塊鏈上 ECDSA 中的一次弱交易,在 Lattice Attack 的幫助下,我們收到了 BTC 硬幣的私鑰”  如果你深入研究比特幣錢包 1HQ3Go3ggs8pFnXuHVHRytPCq5fGG8Hbhx的交易 ,你會發現一些有趣的東西。 為此,我們決定補充我們在這一領域的研究。 該視頻是為CRYPTO DEEP TECH門戶網站創建的  ,以確保數據和 secp256k1 橢圓曲線密碼學的財務安全,以防止 BITCOIN 加密貨幣中的弱 ECDSA 簽名 https://youtu.be/vc0exLihgpk -視頻素材 cryptodeeptech@gmail.com – 所有問題的電子郵件 https://t.me/cryptodeep_tech – 通過 Telegram 提供技術支持  密碼分析

在 Lattice Attack 的幫助下,我們收到了 BITCOIN 硬幣的私鑰

https://www.youtube.com/embed/YP4Xj6gUcf4 我們對網格攻擊了解多少? 首先, 橢圓曲線數字簽名算法 (ECDSA) 是我們在許多代碼審查中看到的一種常見數字簽名方案。它具有一些理想的特性,但也可能非常脆弱,無法通過側信道攻擊來恢復私鑰,這種攻擊會洩露不到一位的秘密隨機數。 ECDSA 是一種特殊形式的數字簽名算法 (DSA)。 DSA 是一種相當常見的數字簽名方案,它由三種算法定義:密鑰生成、簽名和驗證。 密鑰生成算法生成私鑰和公鑰; 私鑰負責創建簽名; 公鑰負責驗證簽名。 簽名算法將消息和私鑰作為輸入並生成簽名。驗證算法以消息、簽名和公鑰為輸入,返回 true 或 的值false,表示簽名是否有效。 DSA 是為任何數學群定義的,只要離散對數問題對那個群來說是困難的,這個方案就是安全的。一個常用的組是整數模素數 p。 與這個組一起,我們將有一個組生成器 g 和一些加密安全的 哈希 函數 H。我們可以假設這 p , g 將 H 是常識。 密鑰生成首先從 x 模整數中 隨機選擇一個值p 。然後計算值 y = g^x mod p 簽名的私鑰為 x ,公鑰為 y 。簽名密鑰必須保密,因為它允許進行簽名。 m 簽名算法根據消息和密鑰 x創建簽名 。首先,隨機生成一個群元素 k 。這被稱為隨機數,這在攻擊時很重要。 然後計算值 r = g^k mod p 並 s = ( k^-1 ( H ( m ) + xr )) mod p 這裡 k^- 1 , 是逆群, H ( m ) 是計算散列 m 並將結果解釋為整數模 p 的結果。 簽名定義為一對 ( r , s ). r (注意:如果or 值之一 s等於 0,則算法以 的新值重新開始 k )。 ( r , s…

我們在 Google Colab 中創建自己的終端,以便在 GitHub、GDrive、NGrok 等中工作。

目前,機器學習和深度學習已成為計算機科學行業最熱門的趨勢。許多開發人員使用 Google Colab 創建了令人驚嘆的項目。 什麼是 Google Colab? Google Colab 由 Google 開發,旨在提供對 GPU 和 TPU 的免費訪問。Google Colab 可以定義為 Jupyter Notebook 的改進版。 Google Colab 的特點 Google Colab 提供了許多現代 IDE 提供的很酷的功能。 您無需在本地安裝即可編寫和運行 Python 3 代碼。 您可以從 Kaggle 等外部來源導入數據集。 您可以將您的工作保存到 Google 雲端硬盤。 您可以從 Google 雲端硬盤導入您的作品。 Google Colab 還提供免費的雲服務、GPU 和 TPU,並與 PyTorch、Tensor Flow、Open CV 集成,但最重要的是,您可以直接從 GitHub 導入或發布您的項目。 讓我們運行命令 !cat /etc/lsb-release DISTRIB_ID=UbuntuDISTRIB_RELEASE=18.04DISTRIB_CODENAME=仿生DISTRIB_DESCRIPTION=”Ubuntu…