区块链加密算法总结

2023-11-09

1、对称加密

实现原理
从实现原理上可以分为两种:分组密码和序列密码。前者将明文切分为定长数据块作为基本加密单位,应用最为广泛,分组对称加密代表算法包括DES、3DES、AES、IDEA等:。后者则每次只对一个字节或字符进行加密处理,且密码不断变化,只用在一些特定领域,如数字媒介的加密等。
序列密码
又称流密码。1949年,Claude Elwood Shannon(信息论创始人)首次证明,要实现绝对安全的完善保密性(perfect secrecy),可以通过“一次性密码本”的对称加密处理。即通信双方每次使用跟明文等长的随机密钥串对明文进行加密处理。序列密码采用了类似的思想,每次通过伪随机数生成器来生成伪随机密钥串。代表算法包括RC4等。

DES(Data EncryptionStandard)

数据加密标准,速度较快,适用于加密大量数据的场合.经典的分组加密算法,1977年由美国联邦信息处理标准(FIPS)采用FIPS-46-3,将64位明文加密为64位的密文,其密钥长度为64位(包含8位校验位)。现在已经很容易被暴力破解;

3DES(Triple DES)

基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高.但现在也被认为不够安全;

AES(Advanced EncryptionStandard)

AES也为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。 在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的分组长度可以使用128位、 192位或256位。密钥的长度不同,推荐加密轮数也不同。AES的优势在于处理速度快,整个过程可以用数学描述,目前尚未有有效的破解手段;

2、非对称加密

原理
非对称加密算法中,加密密钥和解密密钥是不同的,分别称为公钥(public key)和私钥(private key)。私钥一般需要通过随机数算法生成,公钥可以根据私钥生成。公钥一般是公开的,他人可获取的;私钥一般是个人持有,他人不能获取。
目前普遍认为RSA类算法可能在不远的将来被破解,一般推荐可采用安全强度更高的椭圆曲线系列算法,ECC将会是今后最重要的主流公钥加密技术。

RSA加密法

RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的

DSA(Digital SignatureAlgorithm)

数字签名算法,是一种标准的DSS(数字签名标准),严格来说不算加密算法

ECC(Elliptic CurvesCryptography)

椭圆曲线密码编码学.ECC和RSA相比具有多方面的绝对优势,主要有:抗攻击性强.相同的密钥长度,其抗攻击性要强很多倍.计算量小,处理速度快.ECC总的速度比RSA、DSA要快得多.存储空间占用小.ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多.这对于加密算法在IC卡上的应用具有特别重要的意义.带宽要求低.当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多.带宽要求低使ECC在无线网络领域具有广泛的应用前景
现代备受关注的算法系列,基于对椭圆曲线上特定点进行特殊乘法逆运算难以计算的特性。最早在1985年由Neal Koblitz和Victor Miller分别独立提出。ECC系列算法一般被认为具备较高的安全性,但加解密计算过程往往比较费时;

应用

数字签名

消息认证码和数字签名技术通过对消息的摘要进行加密,可用于消息防篡改和身份证明问题。
一个典型的场景是,Alice通过信道发给Bob一个文件(一份信息),Bob如何获知所收到的文件即为Alice发出的原始版本?Alice可以先对文件内容进行摘要,然后用自己的私钥对摘要进行加密(签名),之后同时将文件和签名都发给Bob。Bob收到文件和签名后,用Alice的公钥来解密签名,得到数字摘 要,与收到文件进行摘要后的结果进行比对。如果一致,说明该文件确实是Alice发过来的(别人无法拥有Alice的私钥),并且文件内容没有被修改过(摘要结果一致)。
除普通的数字签名应用场景外,针对一些特定的安全需求,产生了一些特殊数字签名技术,包括盲签名、多重签名、群签名、环签名等。

其他场景

1.盲签名

盲签名(blind signature)是在1982年由David Chaum在论文《Blind Signatures for Untraceable Payment》中提出。签名者需要在无法看到原始内容的前提下对信息进行签名。 盲签名可以实现对所签名内容的保 护,防止签名者看到原始内容;另一方面,盲签名还可以实现防止追踪(unlinkability),签名者无法将签名内容和签名结果进行对应。典型的实现包括RSA盲签名算法等。
一般的签名,签名者对自己发出的签名,必须是记得的,比如,在何时何地对谁发的,他自己可以记下来。但是,如果把签名看作是电子现金的话,就涉及到一个匿名性的问题 用实际钞票的时候,钞票上有没有写你的名字?当然没有。那我也不希望,银行通过追踪自己发出签名,来获得用户的消费情况。于是就设计出盲签名。

2.多重签名

多重签名(multiple signature)即n个签名者中,收集到至少m个(n>=m>=1)的签名,即认为合法。其中,n是提供的公钥个数,m是需要匹配公钥的最少的签名个数。 多重签名可以有效地被应用在多人投票共同决策的场景中。例如双方进行协商,第三方作为审核方。三方中任何两方达成一致即可完成协商。 比特币交易中就支持多重签名,可以实现多个人共同管理某个账户的比特币交易。

3.群签名

群签名(group signature)即某个群组内一个成员可以代表群组进行匿名签名。签名可以验证来自于该群组,却无法准确追踪到签名的是哪个成员。 群签名需要存在一个群管理员来添加新的群成员,因此存在群管理员可能追踪到签名成员身份的风险。 群签名最早于1991年由David Chaum和Eugene van Heyst提出。

4.环签名

环签名(ring signature),由Rivest、Shamir和Tauman三位密码学家在2001年首次提出。环签名属于一种简化的群签名。环签名中只有环成员没有管理者,不需要环成员间的合作。 签名者首先选定一个临时的签名者集合,集合中包括签名者自身。然后签名者利用自己的私钥和签名集合中其他人的公钥就可以独立地产生签名,而无需他人的帮助。
例如,某个用户在线下进行消费,并通过比特币进行支付,那么商家事实上建立了对用户的线上(比特币地址)线下(用户身份)关联。为避免个人隐私信息的泄露,用户必须十分谨慎地对其比特币帐户地址进行管理和隔离。从这个角度来而言,比特币无法满足交易不可追踪和不可关联的条件。 而基于群签名(group signatures)基础上环签名(ring signatures)技术,提供了可行的匿名性解决办法。环签名在保护匿名性方面有很多的用途。


过程
1、密钥生成。为环中每个成员产生一个密钥对(公钥PKi,私钥SKi)。
2、签名。签名者用自己的私钥和任意n个环成员(包括自己)的公钥为消息m生成签名a。
3、签名验证。验证者根据环签名。和消息m,验证签名是否为环中成员所签,如果有效就接收,否则丢弃。

数字证书

对于非对称加密算法和数字签名来说,很重要的一点就是公钥的分发。理论上任何人可以公开获取到对方的公钥。然而这个公钥有没有可能是伪造的呢?传输过程中有没有可能被篡改掉呢?一旦公钥自身出了问题,则整个建立在其上的安全体系的安全性将不复存在。
数字证书机制正是为了解决这个问题,它就像日常生活中的一个证书一样,可以证明所记录信息的合法性。比如证明某个公钥是某个实体(如组织或个人)的,并且确保一旦内容被篡改能被探测出来,从而实现对用户公钥的安全分发。 根据所保护公钥的用途,可以分为加密数字证书(Encryption Certificate)和签名验证数字证书(Signature Certificate)。前者往往用于保护用于加密信息的公钥;后者则保护用于进行解密签名进行身份验证的公 钥。两种类型的公钥也可以同时放在同一证书中。

证书认证机构(Certification Authority,CA

一般情况下,证书需要由证书认证机构(Certification Authority,CA)来进行签发和背书。权威的证书认证机构包括DigiCert、GlobalSign、VeriSign等。用户也可以自行搭建本地CA系统,在私有网络中进行使用。 一个数字证书内容可能包括基本数据(版本、序列号)、所签名对象信息(签名算法类型、签发者信息、有效期、被签发人、签发的公开密钥)、CA的数字签名,等等。 目前使用最广泛的标准为ITU和ISO联合制定的X.509的v3版本规范(RFC 5280),其中定义了如下证书信息域

证书格式

X.509规范中一般推荐使用PEM(Privacy Enhanced Mail)格式来存储证书相关的文件。证书文件的文件名后缀一般为.crt或.cer,对应私钥文件的文件名后缀一般为.key,证书请求文件的文件名后缀为.csr。有时候也统一用.pem作为文件名后缀。 PEM格式采用文本方式进行存储,一般包括首尾标记和内容块,内容块采用Base64进行编码。
可以通过OpenSSL工具来查看其内容: # openssl x509 -in example.com-cert.pem -noout -text

证书信任链

怎么证明用来验证对实体证书进行签名的CA公钥自身是否合法呢?毕竟在获取CA公钥的过程中,它也可能被篡改掉。
实际上,要想知道CA的公钥是否合法,一方面可以通过更上层的CA颁发的证书来进行认证;另一方面某些根CA(Root CA)可以通过预先分发证书来实现信任基础。例如,主流操作系统和浏览器里面,往往会提前预置一些权威CA的证书(通过自身的私钥签名,系统承认这些是合法的证书)。 之后所有基于这些CA认证过的中间层CA(Intermediate CA)和后继CA都会被验证合法。这样就从预先信任的根证书,经过中间层证书,到最底下的实体证书,构成一条完整的证书信任链。

PKI体系

在非对称加密中,公钥可以通过证书机制来进行保护,但证书的生成、分发、撤销等过程并没有在X.509规范中进行定义。 实际上,安全地管理和分发证书可以遵循PKI(Public Key Infrastructure)体系来完成。PKI体系核心解决的是证书生命周期相关的认证和管理问题,在现代密码学应用领域处于十分基础和重要的地位。 需要注意,PKI是建立在公私钥基础上实现安全可靠传递消息和身份确认的一个通用框架,并不代表某个特定的密码学技术和流程。实现了PKI规范的平台可以安全可靠地管理网络中用户的密钥和证书。目前包括多个实现和规范,知名的有RSA公司的PKCS(Public Key Cryptography Standards)标准和X.509相关规范等。

PKI基本组件

一般情况下,PKI至少包括如下核心组件: ·CA(Certification Authority):负责证书的颁发和作废,接收来自RA的请求,是最核心的部分; ·RA(Registration Authority):对用户身份进行验证,校验数据合法性,负责登记,审核过了就发给CA; ·证书数据库:存放证书,多采用X.500系列标准格式。可以配合LDAP目录服务管理用户信息。 其中,CA是最核心的组件,主要完成对证书信息的维护。
操作流程
用户通过RA登记申请证书,提供身份和认证信息等;CA审核后完成证书的制造,颁发给用户。用户如果需要撤销证书则需 要再次向CA发出申请。

证书签发

CA对用户签发证书实际上是对某个用户公钥,使用CA的私钥对其进行签名。这样任何人都可以用CA的公钥对该证书进行合法性验证。验证成功则认可该证书中所提供的用户公钥内容,实现用户公钥的安全分发。 用户证书的签发可以有两种方式。一般可以由CA直接来生成证书(内含公钥)和对应的私钥发给用户;也可以由用户自己生成公钥和私钥,然后由CA来对公钥内容进行签名。 后者情况下,用户一般会首先自行生成一个私钥和证书申请文件(Certificate Signing Request,即csr文件),该文件中包括了用户对应的公钥和一些基本信息,如通用名 (common name,即cn)、组织信息、地理位置等。CA只需要对证书请求文件进行签名,生成证书文件,颁发给用户即可。整个过程中,用户可以保持私钥信息的私密性,不会被其他方获知(包括CA方)。 生成证书申请文件的过程并不复杂,用户可以很容易地使用开源软件openssl来生成csr文件和对应的私钥文件。 例如,安装OpenSSL后可以执行如下命令来生成私钥和对应的证书请求文件: $ openssl req -new -keyout private.key -out for_request.csr Generating a 1024 bit RSA private key 需要注意,用户自行生成私钥情况下,私钥文件一旦丢失,CA方由于不持有私钥信息,无法进行恢复,意味着通过该证书中公钥加密的内容将无法被解密。

证书的撤销

证书超出有效期后会作废,用户也可以主动向CA申请撤销某证书文件。 由于CA无法强制收回已经颁发出去的数字证书,因此为了实现证书的作 废,往往还需要维护一个撤销证书列表(Certificate Revocation List,CRL),用于记录已经撤销的证书序号。 因此,通常情况下,当第三方对某个证书进行验证时,需要首先检查该证书是否在撤销列表中。如果存在,则该证书无法通过验证。如果不在,则继续进行后续的证书验证过程。

3、hash散列算法

MD5

MD5即Message-Digest Algorithm 5(信息-摘要算法 5)
MD5一度被广泛应用于安全领域。但是由于MD5的弱点被不断发现以及计算机能力不断的提升,现在已经可以构造两个具有相同MD5的信息[2],使本算法不再适合当前的安全环境。MD5已被证明不具备“强抗碰撞性”。

SHA1

SHA-1在许多安全协议中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的散列函数)的后继者。 但SHA-1的安全性如今被密码学家严重质疑。已经被破解,被证明不具备“强抗碰撞性”,一般使用sha256以上
当前比较流行的哈希函数主要有128位的MD4和MD5和160位的SHA-1,今天介绍的SHA-2族有着更多位的输出哈希值,破解难度更大,能够提高更高的安全性。

SHA-2哈希加密算法

SHA-224、SHA-256、SHA-384,和SHA-512并称为SHA-2。 新的散列函数并没有接受像SHA-1一样的公众密码社区做详细的检验,所以它们的密码安全性还不被大家广泛的信任。 虽然至今尚未出现对SHA-2有效的攻击,它的算法跟SHA-1基本上仍然相似;因此有些人开始发展其他替代的散列算法。


SHA256加密法
对于任意长度的消息,SHA256都会产生一个256bit长的哈希值,称作消息摘要。 这个摘要相当于是个长度为32个字节的数组,通常用一个长度为64的十六进制字符串来表示
具有强碰撞性

SHA-3哈希加密算法

SHA-3,之前名为Keccak算法,是一个加密杂凑算法。 SHA-3并不是要取代SHA-2,因为SHA-2目前并没有出现明显的弱点。 由于对MD5出现成功的破解,以及对SHA-0和SHA-1出现理论上破解的方法,NIST感觉需要一个与之前算法不同的,可替换的加密杂凑算法,也就是现在的SHA-3。
RIPEMD-160哈希加密算法
RIPEMD-160 是一个 160 位加密哈希函数。 它旨在用于替代 128 位哈希函数 MD4、MD5 和 RIPEMD。 RIPEMD 是在 EU 项目 RIPE(RACE Integrity Primitives Evaluation,1988-1992)的框架中开发的。

技术原理

Hash函数又称为哈希函数、散列函数、杂凑函数。它是一种单向密码体制,即一个从明文到密文的不可逆映射, 只有加密过程,没有解密过程。是一种单向的不可逆的加密算法.它对任意长度的输入消息,产生固定长度的输出,这个固定长度的输出称为原消息的散列值(Hash Value)或消息摘要(Message Digest).多用于网络传输过程验证数据的完整性。
特点
易压缩
对于任意大小的输入x,Hash值H(x)的长度很小
易计算
对于任意给定的消息,计算其Hash值比较容易
单向性
对于给定的Hash值h,要找到m′使得H(m′)=h在计算上是不可行的,即求Hash的逆很困难
抗碰撞性(冲突避免)
很难找到两段内容不同的明文,使得它们的Hash值一致(发生碰撞)。
冲突避免有时候又称为“抗碰撞性”,分为“弱抗碰撞性”和“强抗碰撞性”。如果给定明文前提下,无法找到与之碰撞的其他明文,则算法具有“弱抗碰撞性”;如果无法找到任意两个发生Hash碰撞的明文,则称算法具有“强抗碰撞性”。
输入敏感
原始输入信息发生任何改变,新产生的Hash值都应该出现很大不同;
从比特位角度,指的是1比特位的输入变化会造成1/2的比特位发生变化

应用

数字摘要
数字摘要是对数字内容进行Hash运算,获取唯一的摘要值来指代原始完整的数字内容。数字摘要是Hash算法最重要的一个用途。利用Hash函数的抗碰撞性特点,数字摘要可以解决确保内容未被篡改过的问题。
总结
对称加密算法,速度快,安全性低,目前大量数据加密建议采用对称加密算法,提高加解密速度 非对称加密算法,速度较慢,安全性高,小量的机密数据,可以采用非对称加密算法。 hash散列算法 主要用于验证,防止信息被修.具体用途如:文件校验、数字签名、鉴权协议 实际工作中常用的方式是采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。
应用

4、国密算法

定义
国密即国家密码局认定的国产密码算法,即商用密码。主要有SM1,SM2,SM3,SM4,SM7、SM9、祖冲之密码算法(ZUC)。密钥长度和分组长度均为128位。其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。其中SM1、SM7算法不公开,调用该算法时,需要通过加密芯片的接口进行调用
SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。 SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。 SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。 SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

SM1对称密码

SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯片中。 采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。

SM2椭圆曲线公钥密码算法

SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。另外,SM2推荐了一条256位的曲线作为标准曲线。 SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。 SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表示,运算,以及域上的椭圆曲线的点的表示,运算和多倍点计算算法。然后介绍了编程语言中的数据转换,包括整数和字节串,字节串和比特串,域元素和比特串,域元素和整数,点和字节串之间的数据转换规则。

SM3杂凑算法

SM3密码杂凑(哈希、散列)算法给出了杂凑函数算法的计算方法和计算步骤,并给出了运算示例。此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。在SM2,SM9标准中使用。 此算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。具体算法及运算示例见SM3标准。

SM4对称算法

此算法是一个分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。 此算法采用非线性迭代结构,每次迭代由一个轮函数给出,其中轮函数由一个非线性变换和线性变换复合而成,非线性变换由S盒所给出。其中rki为轮密钥,合成置换T组成轮函数。轮密钥的产生与上图流程类似,由加密密钥作为输入生成,轮函数中的线性变换不同,还有些参数的区别。SM4算法的具体描述和示例见SM4标准。

SM7对称密码

SM7算法,是一种分组密码算法,分组长度为128比特,密钥长度为128比特。SM7适用于非接触式IC卡,应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通等)。

SM9标识密码算法

为了降低公开密钥系统中密钥和证书管理的复杂性,以色列科学家、RSA算法发明人之一Adi Shamir在1984年提出了标识密码(Identity-Based Cryptography)的理念。标识密码将用户的标识(如邮件地址、手机号码、QQ号码等)作为公钥,省略了交换数字证书和公钥过程,使得安全系统变得易于部署和管理,非常适合端对端离线安全通讯、云端数据加密、基于属性加密、基于策略加密的各种场合。2008年标识密码算法正式获得国家密码管理局颁发的商密算法型号:SM9(商密九号算法),为我国标识密码技术的应用奠定了坚实的基础。 SM9算法不需要申请数字证书,适用于互联网应用的各种新兴应用的安全保障。如基于云技术的密码服务、电子邮件安全、智能终端保护、物联网安全、云存储安全等等。这些安全应用可采用手机号码或邮件地址作为公钥,实现数据加密、身份认证、通话加密、通道加密等安全应用,并具有使用方便,易于部署的特点,从而开启了普及密码算法的大门。

ZUC祖冲之算法

祖冲之序列密码算法是中国自主研究的流密码算法,是运用于移动通信4G网络中的国际标准密码算法,该算法包括祖冲之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三个部分。目前已有对ZUC算法的优化实现,有专门针对128-EEA3和128-EIA3的硬件实现与优化。 密码算法作为国家战略资源,比历史上任何时候都显得更为关键。在大数据和云计算的时代,关键信息往往通过数据挖掘技术在海量数据中获得,所以每一个人的信息保护都非常重要。

5、布隆过滤器

布隆过滤器布隆过滤器(Bloom Filter)于1970年由Burton Howard Bloom在论文《Space/Time Trade-offs in Hash Coding with Allowable Errors》中提出。布隆过滤器是一种基于Hash的高效 更高效的布隆过滤器 布隆过滤器采用了多个Hash函数来提高空间利用率。对同一个给定输入来说,多个Hash函数计算出多个地址,分别在位串的这些地址上标记为1。进行 查找时,进行同样的计算过程,并查看对应元素,如果都为1,则说明较大概率是存在该输入。 hash算法会误报存在,布隆过滤器会减少误报的存在。比如hash冲突,hash算法会把另一个不存在的误报存在,布隆过滤器多种hash算法,只要有一个为0就不存在了,减少了误报 无论是Hash算法,还是布隆过滤器,基本思想是一致的,都是基于内容的编址。Hash函数存在冲突,布隆过滤器也存在冲突。这就造成了两种方法都存在着误报(false positive)的情况,但绝对不会漏报(false negative)。
布隆过滤器可以联想到再散列法

6、同态加密

1.定义同态加密(homomorphic encryption)是一种特殊的加密方法,允许对密文进行处理得到仍然是加密的结果。即对密文直接进行处理,跟对明文进行处理后再对处理结果加密,得到的结果相同。从抽象代数的角度讲,保持了同态性。
同态性来自代数领域,一般包括四种类型:加法同态、乘法同态、减法同态和除法同态。同时满足加法同态和乘法同态,则意味着是代数同态,称为全同态(full homomorphic)。同时满足四种同态性,则称为算数同态。 对于计算机操作来讲,实现了全同态意味着对于所有处理都可以实现同态性。只能实现部分特定操作的同态性,称为特定同态(somewhat homomorphic)。 仅满足加法同态的算法包括Paillier和Benaloh算法;仅满足乘法同态的算法包括RSA和ElGamal算法。 同态加密在云计算和大数据的时代意义十分重大。目前,虽然云计算带来了包括低成本、高性能和便捷性等优势,但从安全角度讲,用户还不敢将敏感信息直接放到第三方云上进行处理。如果有了比较实用的同态加密技术,则大家就可以放心地使用各种云服务了,同时各种数据分析过程也不会泄露用户隐私。加密后的数据在第三方服务处理后得到加密后的结果,这个结果只有用户自身可以进行解密,整个过程第三方平台无法获知任何有效的数据信息。
另一方面,对于区块链技术,同态加密也是很好的互补。使用同态加密技术,运行在区块链上的智能合约可以处理密文,而无法获知真实数据,极大地提高了隐私安全性。

7、零知识证明(zero knowledge proof)

零知识证明(zero knowledge proof)是这样的一个过程,证明者在不向验证者提供任何额外信息的前提下,使验证者相信某个论断是正确的。 例如,Alice向Bob证明自己知道某个数字,在证明过程中Bob可以按照某个顺序提出问题(比如数字加上某些随机数后的变换)由Alice回答,并通过回答确信Alice较大概率确实知道某数字。证明过程中,Bob除了知道Alice确实知 道该数字外,自己无法获知或推理出任何额外信息(包括该数字本身),也无法用Alice的证明去向别人证明(Alice如果提前猜测出Bob问题的顺序,存在作假的可能性)。
目前一般认为至少要满足三个条件: ·完整性(Completeness):真实的证明可以让验证者成功验证; ·可靠性(Soundness):虚假的证明无法让验证者保证通过验证,但允许存在小概率例外; ·零知识(Zero-Knowledge):如果得到证明,无法从证明过程中获知除了所证明信息之外的任何信息。

8、量子密码学

量子密码学(quantum cryptography)随着量子计算和量子通信的研究而受到越来越多的关注,将会对已有的密码学安全机制产生较大的影响。 量子计算的概念最早是物理学家费曼于1981年提出,基本原理是利用量子比特可以同时处于多个相干叠加态,理论上可以同时用少量量子比特来表达大量的信息,并同时进行处理,大大提高计算速度。如1994年提出的基于量子计算的Shor算法,理论上可以实现远超经典计算速度的大数因子分解。这意味着大量加密算法包括RSA、DES、椭圆曲线算法等都将很容易被破解。但量子计算目前离实际可用的通用计算机还有一定距离。 量子通信则提供对密钥进行安全分发的机制,有望实现无条件安全的“一次性密码”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链加密算法总结 的相关文章

  • Open3D 建筑物点云立面和平面分割提取

    目录 一 算法原理 二 代码实现 三 结果展示 一 算法原理 在建筑物点云中 立面点和平面点的法向量存在明显的差异 根据法向量在Z方向的分量设置相应得阈值即可实现立面点与平面点的分割 二 代码实现 import open3d as o3d

随机推荐

  • Python Flask使用PyInstaller打包成单独的exe可执行文件后图片无法正常显示的问题及解决方法

    在使用Pyinstaller将Flask打包成单独的exe可执行文件包时 原来在Pycharm里运行正常的程序突然出了问题 就是原来正常显示的网页图片和文件全部出现URL链接错误 资源不存在或URL错误 经过几个小时的各种网上查找资料和调试
  • css文字垂直居中

    div class style text align center margin top 20px div class style background F9C356 width 80 height 70px margin 0 auto d
  • 子网掩码是什么,IP段的24是什么写法(CIDR写法,斜杠记法斜线记法)

    背景 关于设置 IP 网段 我们常见到的 192 168 1 0 24 是什么意思 24是什么意思 这里的 192 168 1 0 的末尾0是 一定是0吗 跟 192 168 1 5 24 所表示的网段是一样的吗 补充 其实 24类似这种写
  • STM32F103ZET6-ESP8266驱动程序

    ESP8266 WIFI 模块如下图所示 WIFI 模块尺寸图如下图所示 如果需要将此模块设计到自己产品内 可能需要参考这个尺寸值 WIFI模块插在开发板上 如下图所示 从 WIFI 模块实物图中可以看到 WIFI 模块提供了一个 2 4
  • K Nearest Neighbor 算法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt K Nearest Neighbor算法又叫KNN算法 这个算法是机器学习里面一个比较经典的算法 总体来说KNN算法是相对比较容易理解的算法 其中的K表示最接近自己的K个数
  • Black Screen Remote Desktop to Ubuntu from Windows with XRDP

    We have noticed that a lot of people hit the same issue over and over again When trying to connect via remote desktop pr
  • 相机标定-基础(一)

    1 何为相机标定 当相机拍摄照片时 我们看到的图像通常与我们实际看到的不完全相同 这是由相机镜头引起的 而且发生的频率比我们想象的要高 这种图像的改变就是我们所说的畸变 一般来说 畸变是指直线在图像中出现弯曲或弯曲 这种畸变我们可以通过相机
  • Python网络编程

    本地的进程间通信 IPC 有很多种方式 但可以总结为下面4类 消息传递 管道 FIFO 消息队列 同步 互斥量 条件变量 读写锁 文件和写记录锁 信号量 共享内存 匿名的和具名的 远程过程调用 Solaris门和Sun RPC 网络中进程之
  • pytest右键显示run pytest for XX.py

    进入 File settings python integrated tools里面修改 选择unittest
  • C++相关容器篇章

    内容 链接 vector 点击链接 stack和queue的函数用法 点击链接 优先队列priority queue
  • IDEA打包失败(多个module之间依赖不能识别)

    背景 开发过程中总会遇到一些不那么合理的架构 一个服务多个module 前后端不分离 于是需要自己打镜像 然后发到docker hub 再起服务 于是就有了第一步 本地打包的过程 idea提供了很方便的打包功能 然后出现异常 异常原因 we
  • 不限次数的chatGPT

    不说废话直接看方法 不用翻墙 开干 第一步 打开电脑的Edge浏览器 就是windows系统的默认浏览器 搜索wetab 点击如下的官方链接就会进入安装插件界面 第二步 点击chat AI就会弹出这个弹窗 点击 安装教程 按钮 第三步 来到
  • 企业微信跳转体验版小程序

    企业微信的 菜单中的H5页面要通过分享卡片跳转到小程序 测试时发现只能跳转正式环境 且 分享消息到当前会话 接口没有提供跳转体验版的参数 技术人想办法 要做多方案准备 终于可以了 企业微信提供了 小程序 打开多场景调试 这样打开了体验版开关
  • 温昱书评:读《代码之道》

    索然无味 毫无观点的书永远引不起人们的阅读兴趣 放心 代码之道 绝对不是 形式上 本书中的每一篇文章都通过讲故事等方式提出问题 然后分析问题根源 最后给出改善建议 其中 问题的提出往往极具戏剧效果 作者也坦承 为了达到效果 我又一次夸大了问
  • CUDA的cublas 和 Intel的MKL 矩阵运算对比

    CUBLAS和MKL都是快速矩阵运算的工具 一个适用Intel的cpu 一个适用于nvidia的GPU 最近在做RNN 循环神经网络 的加速 其中一点就是把神经网络的矩阵运算放到CPU上算 所以就做了一点相关的测试 以前我们实验室的RNN用
  • Java文件读写和CSV文件解析(读取csv文件的一列或若干列)

    文件类 Java 读文件流的知识不可少 先复习一下吧 OREACLE JDK8 DOCS 文件类是Java IO的一个对象 用于指定文件的相关信息 位置和名称信息 如txt文件 csv文件对Java来说就是一个文件类 开发手册中指出 文件类
  • agv小车-qt-ros控制注说明

    转过来 控制 地图 看上去也是json mqtt 通迅是一样的 单片机端添加ros json接口 由上位机获取单片机控制端的三轴 gps 姿态 轨迹数据后由json更新控制参数实现在agv小车在地图上面的动作控制 1 ui接口类与ros连接
  • 输入n位评委,并输入评委的打分,去掉最高最低分求均值

    Test public void average double ave 0 double sum 0 double min 0 double max 0 往数组输入数值 Scanner InputPepole new Scanner Sys
  • 学计算机用苹果本,如何快速学会使用苹果电脑?

    我过去很多年一直使用Windows系统 前几年由于买了苹果手机iPhone以及使用了iPad 对苹果系统有了一些好感 于是在前年决定买一台苹果电脑 就这样我开始使用苹果电脑 我发现 苹果电脑与Windows系统还是有很多不同 所以一开始并不
  • 区块链加密算法总结

    文章目录 1 对称加密 DES Data EncryptionStandard 3DES Triple DES AES Advanced EncryptionStandard 2 非对称加密 RSA加密法 DSA Digital Signa