攻破区块链?也许你该读点密码学

1

密码学是区块链技术的核心。所有交易信息都被编码进区块当中,而这些区块连接在一起则形成区块链结构。在本文中,我们将呈递区块链密码学的基础知识。

【想看更多请移步“天下财经眼(ID:finance-eye )”微信公众号】

密码学的历史

人们对于信息编码的需求几乎伴随着写作的发展出现。加密写作这一形式最先被应用于古埃及、美索不达米亚以及古印度。随着时间的推移,人们学会了使用特殊的工具来编码文本。最早的加密工具之一是密码棒(scytale),斯巴达军方使用其来进行战场通信。密码学技术一直在不断发展。一旦现有的加密方法不再奏效,人们就会发明出新的信息编码方案。 在第二次世界大战期间,第三帝国(德国)使用非常复杂的机电转子密码装置(即BTC/" target="_blank"">比特币中创建区块。BKX,Litecoin和许多其他加密货币中,其使用的椭圆曲线为secp256k1,该曲线方程的形式为y²=x³+ 7 mod p。secp256k1曲线的素数模是2²⁵⁶–2³²–2⁹–2⁸–2⁷–2⁶–2⁴–1(或十六进制形式的FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F)。因为这个结果本质上是一个大素数,因此我们称之为素数模。实数域上的椭圆曲线如下所示:

基点G具有素数阶n,从图形化的角度来看,n可以被视为基点不断相加直到其斜率无穷大或者成为垂线的次数。因此,在选定基点时,我们要确保其阶数是大素数。 对secp256k1来说,基点G的压缩形式为:G = 02 79 BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798,并且G的阶数n为:n = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141。要生成公钥,我们需要用私钥乘以G,即:Keypub = Keypriv×G通过私钥导出公钥并不困难。但是,Keypriv是一个非常大的数字。因此,想要通过公钥来获取私钥,并破解ECDSA算法,则需要进行计算2¹²⁸个附加点的操作。对于普通计算机而言,这样的操作将花费超过100亿年,这是一个与整个宇宙的年龄相称的时间过程。

1

在生成私钥和公钥后,我们必须使用私钥对交易进行签名。

为此,我们需要完成以下操作:

计算z = hash( 交易 ) mod n;

【想看更多请移步“天下财经眼(ID:finance-eye )”微信公众号】

选择随机整数k,其等于或大于1且小于或等于n-1(1≤k≤n-1);

通过将k乘以G得到点(x, y);需要注意的是,k 是一个临时的秘密值,其必须在步骤5之后立即销毁。泄漏秘密值 k 等同于泄漏私钥:如果攻击者知道 k 和签名,那么她(或他)就可以计算私钥。

计算r = x mod n。如果r = 0则返回步骤1;函数x mod p 仅返回除法的余数,例如78 mod 33 = 12 等同于 78 = (33*2)+12,98 mod 31 = 5 等同于 98 = (31*3)+5。注意,s 模 n的乘法逆表示为1/k mod n,并且1/k mod n 等于等式 kx = 1(mod n) 的解。这个方程在欧几里德算法的帮助下以下列方式求解:假设 s = 3且 n = 5,则方程显示为3x = 1(mod 5) ,或者利用欧几里德算法,得3x = b(mod 5) 。如果我们将其扩展到线性丢番图方程ax - by = c,或sx - ny = b,或 3x - 5y = 1,其中 x = 2且 y = 1(6–5=1) 中,那么 s-1将为2。

【想看更多请移步“天下财经眼(ID:finance-eye )”微信公众号】

计算 s = (1/k mod n) × (z + r × Keypriv) mod n。如果s = 0,则返回步骤1;

计算对 (r, s) 将成为交易的签名。

2

在交易签名生成并被接收后,任何第三方都可以使用公钥通过以下方式对其进行验证:

确认签名元素,数字 r 和 s 均落在1到n-1的范围内;

【想看更多请移步“天下财经眼(ID:finance-eye )”微信公众号】

计算 z = hash(交易) mod n;

计算 w = 1/s mod n;

计算 u = z × w mod n;

计算 v = r × w mod n;

计算点 (x, y) = (u × G) + (v × Keypub);

确认 r = x mod n。 如果r≠x mod n,则验证的签名无效。

如上所述,ECDSA算法的安全性依赖于整数 k 的随机性以及使用普通算力在合理时间内不可能导出私钥的特性。 这种全新的加密方式赋予区块链技术最高级别的安全性,打破它的唯一方法是创建一个具有超过2000个量子比特算力的量子计算机——这种做法,至少在目前看来,是不可能的。

【想看更多请移步“天下财经眼(ID:finance-eye )”微信公众号】

往期精彩回顾

警惕 区块链:传销组织下一个风口

百度“超级链”称实现千万TPS;比特大陆等三大矿机厂商首登胡润独角兽榜

B圈大佬李笑来“割韭菜”音频曝光

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181016A0U50800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券