美文网首页
区块链加密算法简介

区块链加密算法简介

作者: 颍水书生 | 来源:发表于2018-08-14 01:55 被阅读96次

    密码学相关的安全技术在整个信息技术领域的重要地位无需多言。如果没有现代密码学和信息安全的研究成果,人类社会根本无法进入信息时代。区块链技术大量依赖了密码学和安全技术的研究成果。

    密码学和安全领域所涉及到的知识体系十分繁杂,本文将介绍密码学领域中跟区块链相关的一些基础知识,包括 加密方式、Hash 算法与摘要、密钥交换算法、同态加密等

    加密方式

    加密方式主要分为两大类:“对称式加密”和“非对称式加密”。

    对称式加密(Symmetric Cryptography)就是加密和解密使用同一个密钥,通常称之为“Session Key”这种加密技术目前被广泛采用,常见的有AES、TEA、DES等。例如,美国政府采用的DES加密标准是一种典型的“对称”加密方法,会话密钥长度为56位。

    对称式加密使用便捷,效率高,但也有其缺陷:

    • 密钥长度不够,推荐1024Bit或更高

    • 明文存储密钥

    • 使用弱随机数,攻击者很容易猜测

      非对称加密(也称为公钥加密)。Public-key Cryptography)就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥(publickey)”和“私钥(privatekey)”,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”指的是公共密钥可以公布的,“私钥”不仅可以通过持有人了解。这就是优点所在,因为如果加密文件是通过网络传输的,对称加密可能很难告诉它的密钥,而且任何人都可以窃听它,不管使用什么方法。非对称加密方法有两个密钥,并且“公钥”可以公开,因此接收者只能在解密时使用他的私钥。这样就避免了密钥传输的安全问题。

    例如,RSA是一种应用很广泛的非对称加密算法。它于1978年在美国著名的麻省理工学院诞生。简单的说,就是两个最大质数,一个公开,一个保密,前者成为“公钥”,后者成为“私钥”。这两个密钥相辅相成,即公钥的密文可以使用私钥解密,反之亦然。RSA要求每个用户都有自己的密钥:用于加密明文的公开加密密钥和用于解密密文的秘密解密密钥。

    RSA密钥长度为(40-2048),当块大小可变但不长于密钥长度时,RSA算法将每个明文块转换为与密钥长度相同的密文块。密钥越长,加密效果越好,但性能也越低。常用的密钥长度为128-512位,加密强度很高。在硬件上实现的最快的RSA算法比DES算法花费的时间要多1000倍。

    RSA属于密钥传输(Exchange)加密,更为著名的应用SSL、PGP已经成功地应用了RSA算法。

    EC(椭圆曲线算法)也是一种非对称式加密算法,不过密钥更短,对于需要频繁签名、加密大数据的场合来说,能显著的节约带宽;在数字货币、区块链等领域较多的采用EC算法。

    Hash算法与摘要

    摘要是一种用来防止文本被私自改动的加密算法,其中用到的函数叫做摘要函数。这些函数能将任意长度的二进制明文消息映射为较短的(通常是固定长度的)摘要(Hash值)。如果在输入消息的任何改变的特性,即使一点点的,将不可预知的改变,输出的摘要是对输入信息的每一位对输出的影响综述。简而言之,摘要算法从给定的文本块生成数字签名(指纹或消息摘要),用于防止某人从签名中获取文本信息或更改文本信息的内容并验证身份。摘要算法的数字签名原理用于许多加密算法。

    现在流行的摘要函数有MD5和SHA,但要记住客户机和服务器必须使用相同的算法,无论是MD5还是SHA,否则客户机不能和服务器交互。

    MD5信息摘要算法(MD5 Message-Digest Algorithm)是一种基于哈希函数(Hash)的密码算法。由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计(也是RSA算法的设计者),于1992年公开。

    MD5最大的效果是在用数字签名软件签名私钥之前,将不同格式的大文件信息“压缩”成一种秘密格式。关键是这种“压缩”是不可逆的。每个分组被分成16个32位子组。在一系列处理之后,该算法的输出由四个32位分组组成,这些分组被级联成分组以生成128位哈希值。人们认为,在计算上不可能生成具有相同消息的两个文本块,或者生成具有预先指定的“指纹”的任何消息。

    一般来说,数据加密和解密是以数学、计算机科学、电子通信和数学为基础的数据转换。在实际应用中,采用数字加密来实现这些目标:信息安全(数据加密、文件加密)、身份认证、数据完整性(防篡改)、可靠(数字签名、电子印章)。

    密钥交换

    密钥交换(Key exchange)是一种安全协议。它允许双方建立一个密钥。通过不安全的通道彼此之间没有任何事先的信息。很适合一次一密的场景(HTTPS协议),常用的有DH(diffie-hellman)、RSA、ECDH(EC+DH)。

    DH算法是现代互联网安全基石,解决不安全信道上安全传输密钥问题;其原理和代码实现简单,也是 DH 得到广泛应用的重要原因,HTTPS 核心流程使用了 DH。

    同态加密

    同态加密是一种特殊的加密方法,它允许对密文进行处理,结果仍然是加密的,即直接处理密文,其结果与明文相同。从代数的角度讲,即同态性。

    在代数中,同态包括加法、乘法、减法和除法四种。如果同时满足加法同态和乘同态,则表示代数同态。同时满足四个同态称为算术同态。

    同态加密最早是1978年,由Ron Rivest、Leonard Adleman和Michael L德图佐斯提出,但直到2009年,第一个“全同态”算法,才被克雷格(Craig Gentry)证明。

    常见的算法中,Paillier算法和Benaloh算法仅满足加法同态,RSA算法和ElGamal算法只满足乘法同态的算法。而Gentry算法则是全同态的。

    云时代同态加密的重要性非常显着。它真的从根本上解决问题,当数据和业务保密委托给第三方,如各种云计算应用。目前,从安全角度来看,用户不敢将敏感信息直接放在第三方云上进行处理。如果您有一种更实用的同态加密技术,那么您可以放心地使用各种云服务。

    函数加密

    同态加密保护的是数据本身,而函数加密顾名思义保护的是处理函数本身,即让第三方看不到处理过程的前提下,对数据进行处理。

    函数加密的方法是:任何人可以使用公钥PK对明文m进行加密得到密文Enc(m),密钥的持有者对某个函数 F 颁发一个KEY, 任何拥有KEY和密文Enc(m)的一方,都可以计算F(m), 但是除了F(m)外不能获得关于m的任何信息。

    相关文章

      网友评论

          本文标题:区块链加密算法简介

          本文链接:https://www.haomeiwen.com/subject/crzpbftx.html