【本文由赞我(zaneds.com)独家冠名】
01
在说非对称算法之前,我们先了解下什么是对称算法?通俗的解释是一个字符串可以通过某一个密钥进行加密和解密。比如说某原字符串是abcd,密钥(解释:秘密的钥匙,在密码学中,密钥是在明文转换为密文或者密文转换成明文的算法中输入的参数)是key,通过密钥key加密后是密文U2FsdGVkX18Uf4BsqpVyFHbYtcWrUNDt。反之此密文通过密钥key解密可得出原字符串abcd。即对称算法是通过一个密钥进行加密和解密。比如谍战片里,发电报一般都是用的对称加密算法,这种算法的优点就是速度快效率高,缺点就是不安全,如果密钥和加密方法泄露,那就能根据密钥解密出原文;再就是如果存在较大数目的密钥难以管理等等。
02
而非对称算法有两个密钥,即公钥和私钥(从字面意思可以了解公钥即公开的密钥,私钥即私有的密钥),这俩密钥是成对的。有两种方式,即公钥加密私钥解密,私钥加密公钥解密。通常公钥加密私钥解密用的居多。
那这种加密方式的实现过程是怎样的呢?举个例子:A方生成一对密钥,将公钥公开;B方得到公钥后,对数据进行加密然后发送给A方,A方拿到数据后通过私钥解密。此种加密算法的优点是保密性好,缺点是加密和解密花费的时间长、速度慢。这种是对数据加密的实现方式,即公钥加密,私钥解密。
03
今天大概介绍下常见的两种加密算法:RSA和ECC(椭圆曲线加密算法)。
RSA是以它的三个发明者的Ron Rivest、 Adi Shamir 和 Leonard Adleman的名字首字母命名。RSA可以说是最常见的非对称加密算法,它即能用于数据加密,也能用于数字签名,是目前最流行的公开密钥算法。RSA的安全程度基于大质数分解的难度。因为RSA的公钥和密钥就是一对质数,如将想要传递的信息在编码时加入质数AB,编码之后传给收信人,即使数据被截取,如果没有收信人的私钥,则解密其实就是分解两个质数的过程。
由此看来,RSA的算法过程是比较简单的,关键的是要找到足够大的质数(质数越大则解密过程越复杂)。
椭圆曲线加密算法是基于椭圆曲线数学的一种公钥密码算法,其主要的安全性是利用了椭圆曲线对数问题的困难性。
在区块链中,常用的是椭圆曲线数字签名算法,它是利用椭圆曲线加密算法对数字签名算法的模拟。椭圆曲线密码算法实现了数据加解密、数字签名和身份认证等功能,该技术具有安全性高、生成公私钥方便、处理速度快和存储空间小等方面的优势。相对于RSA算法,在实际的开发使用中,椭圆曲线加密使用得更广泛,比如比特币就是使用了椭圆曲线中的SECP256k1,可以提供128位的安全保护。
04
那加密算法在区块链中到底都有哪些应用呢?今天举几个例子说明一下。
账户地址的生成 大家现在应该有创建过钱包了,那是否注意钱包的地址是一个串不规则的字符串呢?这些字符串是怎么生成的呢?没错,就是公钥和私钥,我们对外的地址一般都是取的公钥前的20个字符串作为公开的钱包地址,而私钥则用于验证。
价值转移保卫 其实不管是区块链还是互联网,在做价值转移的时候,都要解决两个问题。其一就是证明数据的准确性,即保证发出者和价值是真实的,不是被篡改和伪装的。其二就是只有接收者才能对这部分数据进行解密。怎么实现的呢?来走个流程:
首先,发送者和接收者分别持有对方的公钥和自己的私钥。
第二步,发送者使用自己的私钥加密签名,在用对方的公钥加密;
第三步,接收者拿到数据后使用发送者的公钥进行身份验证,使用自己的私钥解密。
通过以上流程,就能保证数据不被截获,即使被截获也没关系,因为没有私钥也是拿不到原文的。
05
总而言之,非对称加密算法其实就是用了一对密钥,公钥对外公开,私钥自己留着。如果要传送数据就用对方的公钥加密,接收者用私钥解密。如果要签名就用自己的私钥加密,对方用公钥验证。密码算法在区块链中的应用是非常重要的,这里只是做了简单的理论介绍,列举了几个常用的应用点。但是在实际应用并不止如此。