加密货币常见加密算法

KarolinClem 6年前
   <h3>0x00 密码学</h3>    <p>互联网世界,密码无处不在。中心化的系统存在账户,有账户就有账户名和密码,密码可以说是标识账号归属的最重要手段之一。</p>    <p>我们来看维基百科怎么阐释 <strong>密码学</strong> 。</p>    <p>密码学(英语:Cryptography)可分为古典密码学和现代密码学。在西欧语文中,密码学一词源于希腊语 kryptós“隐藏的”,和 gráphein“书写”。古典密码学主要关注信息的保密书写和传递,以及与其相对应的破译方法。而现代密码学不只关注信息保密问题,还同时涉及信息完整性验证(消息验证码)、信息发布的不可抵赖性(数字签名)、以及在分布式计算中产生的来源于内部和外部的攻击的所有信息安全问题。古典密码学与现代密码学的重要区别在于,古典密码学的编码和破译通常依赖于设计者和敌手的创造力与技巧,作为一种实用性艺术存在,并没有对于密码学原件的清晰定义。而现代密码学则起源于 20 世纪末出现的大量相关理论,这些理论使得现代密码学成为了一种可以系统而严格地学习的科学。[1]</p>    <p>使用密码学可以达到以下目的:</p>    <ul>     <li>保密性:防止用户的标识或数据被读取;</li>     <li>数据完整性:防止数据被更改;</li>     <li>身份验证:确保数据发自特定的一方。</li>    </ul>    <p><img src="https://simg.open-open.com/show/57c2866fb5b9e414ebf344c80ee04091.jpg"></p>    <p>题图来自: © Sabarinath / Meltdown and Spectre / techlog360.com</p>    <h3>0x01 分类</h3>    <p>在讲解加密算法之前,我们来看下 <strong>Base64 编码</strong> 。Base64 编码可对传输中的数据进行简单处理,使之不易被辨认,它并不是一种加密算法,它只是一种编码方式。</p>    <p>比如读者在终端执行如下命令就可以获取到我的邮箱:</p>    <table>     <tbody>      <tr>       <td>echo ZGJhcm9iaW53ZW5AZ21haWwuY29tCg==</td>       <td>base64 –decode</td>      </tr>     </tbody>    </table>    <p>根据密钥类型不同将现代密码技术分为两类: <strong>对称加密算法(秘密钥匙加密)</strong> 和 <strong>非对称加密算法(公开密钥加密)</strong> 。对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。[2]</p>    <h3>0x02 对称加密算法</h3>    <p>对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:</p>    <ul>     <li><strong>DES(Data Encryption Standard)</strong> :数据加密标准,速度较快,适用于加密大量数据的场合;</li>     <li><strong>3DES(Triple DES)</strong> :是基于 DES,对一块数据用三个不同的密钥进行三次加密,强度更高;</li>     <li><strong>AES(Advanced Encryption Standard)</strong> :高级加密标准,是下一代的加密算法标准,速度快,安全级别高。</li>    </ul>    <p>2.1 DES 加密算法</p>    <p>DES 加密算法是一种分组密码,以 64 位为分组对数据加密,它的密钥长度是 56 位,加密解密用同一算法。DES 加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。这样,只有掌握了和发送方相同密钥的人才能解读由 DES 加密算法加密的密文数据。因此,破译 DES 加密算法实际上就是搜索密钥的编码。对于 56 位长度的密钥来说,如果用穷举法来进行搜索的话,其运算次数为 256。</p>    <p>随着计算机系统能力的不断发展,DES 的安全性比它刚出现时会弱得多,然而从非关键性质的实际出发,仍可以认为它是足够的。不过,DES 现在仅用于旧系统的鉴定,而更多地选择新的加密标准。</p>    <p>2.2 AES 加密算法</p>    <p>AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。</p>    <p>AES 是一个迭代的、对称密钥分组的密码,它可以使用 128、192 和 256 位密钥,并且用 128 位(16 字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。</p>    <h3>2.3 3DES 加密算法</h3>    <p>3DES 是三重数据加密,且可以逆推的一种算法方案。但由于 3DES 的算法是公开的,所以算法本身没有密钥可言,主要依靠唯一密钥来确保数据加解密的安全。到目前为止,仍没有人能破解 3DES。</p>    <p>3DES 和 AES 有什么区别呢?AES 加密算法使用的对称 block 密码,密钥长度有 128、192 和 256 位密码,加密速度快,解密时间(假设机器每秒尝试 255 个密钥)大约需要 1490000 亿年,资源消耗低;而 3DES 加密算法使用的是对称 feistel 密码,密钥长度有 112 位或 168 位,加密速度慢,同等条件下解密时间大约需要 46 亿年,资源消耗中等。</p>    <h3>0x03 非对称加密算法</h3>    <p>常见的非对称加密算法如下:</p>    <ul>     <li><strong>RSA</strong> :由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;</li>     <li><strong>DSA(Digital Signature Algorithm)</strong> :数字签名算法,是一种标准的 DSS(数字签名标准);</li>     <li><strong>ECC(Elliptic Curves Cryptography)</strong> :椭圆曲线密码编码学。</li>    </ul>    <p>3.1 RSA 加密算法</p>    <p>RSA 加密算法是一种非对称加密算法。在公开密钥加密和电子商业中 RSA 被广泛使用。RSA 是 1977 年由罗纳德 · 李维斯特(Ron Rivest)、阿迪 · 萨莫尔(Adi Shamir)和伦纳德 · 阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。</p>    <p>对极大整数做因数分解的难度决定了 RSA 算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA 算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用 RSA 加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的 RSA 钥匙才可能被强力方式解破。到目前为止,世界上还没有任何可靠的攻击 RSA 算法的方式。只要其钥匙的长度足够长,用 RSA 加密的信息实际上是不能被解破的。[3]</p>    <p>3.2 ECC 加密算法</p>    <p>椭圆曲线密码学(英语:Elliptic curve cryptography,缩写为 ECC),一种建立公开密钥加密的算法,基于 <strong>椭圆曲线数学</strong> 。椭圆曲线在密码学中的使用是在 1985 年由 Neal Koblitz 和 Victor Miller 分别独立提出的。</p>    <p>ECC 的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如 RSA 加密算法——提供相当的或更高等级的安全。ECC 的另一个优势是可以定义群之间的双线性映射,基于 Weil 对或是 Tate 对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。不过一个缺点是加密和解密操作的实现比其他机制�</p>    <p> </p>    <p>来自:https://dbarobin.com/2018/01/16/blockchain-cryptography/</p>    <p> </p>