<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/rss/stylesheet/" type="text/xsl"?>
<rss xmlns:content='http://purl.org/rss/1.0/modules/content/' xmlns:taxo='http://purl.org/rss/1.0/modules/taxonomy/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:itunes='http://www.itunes.com/dtds/podcast-1.0.dtd' xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0" xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:atom='http://www.w3.org/2005/Atom' xmlns:podbridge='http://www.podbridge.com/podbridge-ad.dtd' version='2.0'>
<channel>
  <title>苏迟但到的主页</title>
  <language>zh-cn</language>
  <generator>microfeed.org</generator>
  <itunes:type>episodic</itunes:type>
  <itunes:explicit>false</itunes:explicit>
  <atom:link rel="self" href="https://kexohproject.pages.dev/rss/" type="application/rss+xml"/>
  <link>https://kexohproject.pages.dev</link>
  <description>
    <![CDATA[<p>你好，欢迎访问个人主页！</p><p>擅长密码学，安全分析，数字水印等技术。</p><p>你可以联系我通过:findmykexin@gmail.com或者知乎私信。</p><p>我的知乎链接：<a href="https://www.zhihu.com/people/su-chi-dan-dao" rel="noopener noreferrer" target="_blank">苏迟但到 - 知乎 (zhihu.com)</a></p><p>我的github链接：<a href="https://github.com/kexinoh" rel="noopener noreferrer" target="_blank">kexinoh</a></p>]]>
  </description>
  <itunes:author>苏迟但到</itunes:author>
  <itunes:image href="https://kexohcdn.gptapi.cyou/kexohproject/production/images/channel-2e54d141ee195646ca12a9d16507a908.jpg"/>
  <image>
    <title>苏迟但到的主页</title>
    <url>https://kexohcdn.gptapi.cyou/kexohproject/production/images/channel-2e54d141ee195646ca12a9d16507a908.jpg</url>
    <link>https://kexohproject.pages.dev</link>
  </image>
  <copyright>©2024</copyright>
  <itunes:category text="Education">
    <itunes:category text="Language Learning"/>
  </itunes:category>
  <itunes:category text="Technology"/>
  <item>
    <title>有没有人尝试破解比特币的算法？</title>
    <guid>_Zi0HuEu2La</guid>
    <pubDate>Sat, 21 May 2022 11:54:37 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p data-pid="_CXHqkX1">收录于<b>专业瞎扯专栏系列</b></p><p data-pid="WX27HzJ8">最近有群友说想要组建一个1000人团队来暴力破解比特币私钥。</p><p data-pid="Gp84ollA">于是我们就在群里面欢快的讨论了可能性：</p><figure data-size="normal"><noscript><img src="https://pic3.zhimg.com/v2-62c122ea3b580b2f32c7749347a6cf1e_b.jpg" data-size="normal" data-rawwidth="550" data-rawheight="313" data-original-token="v2-8457533886ac90d42fe277cadb85fb22" class="origin_image zh-lightbox-thumb" width="550" data-original="https://pic3.zhimg.com/v2-62c122ea3b580b2f32c7749347a6cf1e_r.jpg"/></noscript><img src="data:image/svg+xml;utf8,&lt;svg xmlns=&#39;http://www.w3.org/2000/svg&#39; width=&#39;550&#39; height=&#39;313&#39;&gt;&lt;/svg&gt;" data-size="normal" data-rawwidth="550" data-rawheight="313" data-original-token="v2-8457533886ac90d42fe277cadb85fb22" class="origin_image zh-lightbox-thumb lazy" width="550" data-original="https://pic3.zhimg.com/v2-62c122ea3b580b2f32c7749347a6cf1e_r.jpg" data-actualsrc="https://pic3.zhimg.com/v2-62c122ea3b580b2f32c7749347a6cf1e_b.jpg"/><figcaption>群友的大胆构想</figcaption></figure><h2>计算可能性</h2><p data-pid="hBgpWWkm">我们先对碰撞比特币私钥进行概率分析。</p><p data-pid="dril2Tzu">先获取我们有多少的比特币地址（<a href="https://link.zhihu.com/?target=https%3A//explorer.btc.com/zh-CN/btc/top-address%3Fchart%3Dcount" class=" wrap external" target="_blank" rel="nofollow noreferrer">持币地址 - 比特币(BTC) - BTC.com 为全球区块链爱好者提供专业的数据与矿池服务</a>），我们可以看见大概有1000万左右比特币地址的余额在0.001比特币以上。</p><p data-pid="Y_nuEFTw">而比特币的secp256k1的阶数正好近似于2^256的数目的（稍微低一点）。</p><p data-pid="y0N4Xc_L">那么我们平均需要扫描多少的地址才能有50%的概率出来一个地址呢？</p><p data-pid="vJL47cLU">根据生日攻击原理，这个数目就正好是一半，我们有1000个矿机。</p><p data-pid="4Ou6aO_t"><img src="https://www.zhihu.com/equation?tex=N%3D%5Cfrac%7B2%5E%7B256%7D%7D%7B1000000%5Ccdot1000%5Ccdot2%7D%3D5.78960446%C3%9710%5E%7B67%7D" alt="N=\frac{2^{256}}{1000000\cdot1000\cdot2}=5.78960446×10^{67}" eeimg="1"/> </p><p data-pid="Dde3G24O">这个数字看上去还是太大了一点，在以太坊挑战赛里面，56位以下的才能被破解，而这个达到了67位，也就是说目前还是很难破解的。</p><h2>分布式算法</h2><p data-pid="l4kB91NP">虽然破解的概率还是很小，我们还是要讨论一下如果要写分布式破解算法怎么写？</p><p data-pid="Mjqje8nc">我们这个计算过程有以下特点：</p><p data-pid="lcek9_wc">1.只包含了三种运算：ECC运算，hash运算，数据查询运算。</p><p data-pid="nebqnedT">其中这三种运算用到的芯片恰好还不一样。ECC用的是CPU或者FPGA等等，而hash运算存在专门ASIC矿机进行快速运算，数据查询运算主要需要一块大内存。（ <img src="https://www.zhihu.com/equation?tex=10%5E7%5Ccdot%5Cfrac%7B256bits%7D%7B8%5Ccdot1024%5E%7B2%7D%7D%3D305MB" alt="10^7\cdot\frac{256bits}{8\cdot1024^{2}}=305MB" eeimg="1"/> ）</p><p data-pid="KKofC_Te">因为这三个机器的工作效率不同，且适合的机器也不同，因此我们采用如下的计划：</p><p data-pid="jbcjrk38">ECC矿机950台，hash矿机10台，40台查询矿机。</p><p data-pid="9L-H9HyR">ECC计算出的公钥运送到hash矿机，矿机再输送到查询矿机。</p><h2>进一步优化</h2><h3>软件优化</h3><p data-pid="86YkiDWF">我们这里还有一些优化的空间。</p><p data-pid="2KebCcZ5">小学二年级学过椭圆曲线算法遵循以下规律</p><p data-pid="cFuigxOI"><img src="https://www.zhihu.com/equation?tex=%28m%2Bn%29P%3DmP%2BnP" alt="(m+n)P=mP+nP" eeimg="1"/> .</p><p data-pid="Uxj7Y3t8">因此对于每一个矿机我们可以对其分配一个240bit的地址，对于这个地址一次性挖取2^16个块。</p><p data-pid="er_DrW9u">这样对于一个XP只需要进行+P操作就可以了。</p><p data-pid="9M2UGFw9">在hash矿机端还可以加上一个取secp256k1阶的负值</p><p data-pid="azjkYT4e"><img src="https://www.zhihu.com/equation?tex=%28%5C%23k1-x%29p%3D-xp" alt="(\#k1-x)p=-xp" eeimg="1"/> </p><p data-pid="5zQ_mdQa">相当于对复杂度进行了mod2处理。</p><h3>硬件优化</h3><p data-pid="b_bgsiDL">ECC专用芯片有很多，但是专门针对secp256k1曲线的矿机为0.（废话，只能用来比特币签名的矿机有什么用，比特币的TPS是7.小灵通都可以完成整个比特币网络的签名的计算量需求了）。</p><p data-pid="-C7Rd0Wf">如果一定要头铁开发的话，可以采用以下方法：</p><p data-pid="UjcOHec_">预运算好 <img src="https://www.zhihu.com/equation?tex=2P%2C3P%2C4P%2C8P....2%5E%7B255%7DP" alt="2P,3P,4P,8P....2^{255}P" eeimg="1"/> .</p><p data-pid="cQqTppG5">到时候，可以直接进行点加运算。</p><p data-pid="74OB-GSL">-------完--------</p><p data-pid="uE-fJX7y">专业瞎扯专栏系列第一篇，欢迎大家关注</p>]]>
    </description>
    <itunes:title>New Article Title for iTunes</itunes:title>
  </item>
</channel>
</rss>