比特币中运用的两个关键的密码学技术是“公钥加密”和“HASH算法”,中本聪采用了公钥加密算法中的ECDSA和HASH算法中的SHA-256。

公钥加密RSA算法数学原理

公钥加密ECDSA算法原理(基于ECC椭圆曲线密码学)

HASH算法SHA1原理

一、公钥加密

公钥加密又称为“非对称加密”,它是现代网络安全的基础。通信双方各有一对公钥和私钥,每个人保管自己的私钥,并公开自己的公钥。例如HTTPS传输协议就运用了公钥加密:服务器将公钥公布在CA,客户端浏览器访问服务器时会先获取其CA证书,该证书包含的服务器的认证结果和公钥,客户端确认无误后,通过其公钥加密要传输的信息,只有真正拥有密钥的服务器才能解密请求信息并进行处理。

常用的公钥加密技术包括RSA和ECC:

(1)RSA

由麻省理工学院的Ron Rivest、Adi Shamir、Leonard Adleman于1977年共同提出,算法取其名字的首字母,基于数论和大整数质因数分解问题。

(2)ECC

ECC (Elliptic curve cryptography 椭圆曲线密码学),由Koblitz和Miller两人于1985年提出。

ECC对应的数字签名算法简称为ECDSA(Elliptic Curve Digital Signature Algorithm椭圆曲线数字签名算法)。

该算法有许多不同的曲线参数可以选择,一般而言,曲线会被分成两类:“伪随机”曲线以及Koblitz曲线。有关于美国国家安全局颠覆加密标准的报道指出,“伪随机”曲线算法中的种子可能是美国国家安全局 (NSA)精心设计的,幸运的是,比特币使用了Koblitz曲线。

(3)RSA和ECC算法优劣势

国际上公认的最有效的破译和攻击RSA算法为“一般数域筛(NFS)方法”,它的破译或求解难度是亚指数级的;而国际上公认的最有效的破译和攻击ECC算法为“攻击Pollard rho方法”,它的破译或求解难度基本上是指数级的。

从工程实现难度上来说,RSA算法的数学原理相对简单,工程上较容易实现,但它的单位安全强度相对校低,因此在某些情况下ECC算法可以使用更小的密钥而提供较RSA算法相当或者更高等级的安全,有研究表示160位的椭圆密钥与1024位的RSA密钥安全性相同。

二、HASH算法

SHA(Secure Hash Algorithm 安全哈希算法)系列算法是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数,包括 SHA-1、SHA-224、SHA-256、SHA-384 和 SHA-512 等变体。