美文网首页加密
【技术】对称加密与非对称加密算法介绍

【技术】对称加密与非对称加密算法介绍

作者: believablehua | 来源:发表于2018-04-14 16:27 被阅读158次

学习区块链技术,不可避免地要接触到加密技术,但是作为一名非专业人士,可能很难读懂各种加密算法的基本原理和具体计算过程,但是这并不妨碍我们理解加密算法的应用场景。所以,还是有必要对加密技术有一个基本的了解。以下是我对这几天学习内容的一些总结,同时供大家参考。

加密算法分为单向加密算法和双向加密算法。

单向加密算法

单向加密算法一般指的是哈希算法,又称散列算法。包括MD5,SHA类(SHA-1,SHA-2,SHA-3)加密算法等等。

一般来说,哈希算法是不可逆的,即无法将加密后的数据还原成原始数据。任何文件都可以被哈希加密得出一段长度固定的摘要(digest),并且每一个文件对应的摘要都是独一无二的,所以摘要也被称作文件指纹。任何文件即使被修改了一个字符,它的指纹也会变得完全不同。所以文件指纹可以被用来判断文件的完整性。

应用一:判断文件完整性

比如各类下载软件都会内置文件完整性交验功能,下载文件之后内置验证器会计算文件指纹,并与服务器发过来的指纹对比,如果摘要相同,就说明文件与服务器文件相同。如果摘要不同,则说明文件不完整。

应用二:安全保存密码

哈希算法还可用于密码管理,为了用户密码的安全,服务器一般不会明文存储用户密码。服务器只存储用户密码被加密后的摘要。当用户登陆网站输入密码时,服务器会对用户输入的密码进行哈希加密,并将得出的摘要与服务器存储的摘要对比,如果相同,则说明密码正确。这样做的好处是即使服务器被黑客攻破,黑客也无法从摘要还原出用户密码。

哈希算法的安全性是由算法的难度决定的,随着计算机计算能力的增强,算法的安全性会逐渐减弱,比较早的加密算法(比如MD5)已经不是非常安全了,但是目前主流采用的SHA-2算法仍然是安全的。

双向加密算法

双向加密算法是可逆的,也就是说被加密的数据,可以通过密钥解出原始数据。双向加密包括对称加密和非对称加密。

对称加密

对称加密指的数据的加密和解密使用的是同一个密钥,特点是加解密速度快,对称加密算法包括DES(Data Encryption Standard)、AES(Advanced Encryption Standard)、IDEA(International Data Encryption Algorithm)等等。对称加密主要用于加密通讯,比如点对点聊天或者群组聊天。聊天各方都使用相同的密钥加解密消息。但是对称加密存在一个风险,就是一旦密钥泄露,群组的所有消息都会泄露。如何保证密钥在传给所有人的过程中不会泄露,是一个需要解决的问题。后来的非对称加密解决了这个问题

非对称加密

非对称加密(asymmetric cryptography)又称为公开密钥加密算法(Public-key cryptography),需要两个密钥:可以公开给任何人的公钥(public key),以及只有本人知道的私钥(private key)。公钥与私钥是一对,两者之间的关系是:

(1) 用公钥加密数据,只有对应的私钥才能解密;

(2) 用私钥加密数据,只有对应的公钥才能解密。

简单的说是“公钥加密,私钥解密;私钥加密,公钥解密”。

非对称加密的安全性要比对称加密高,因为私钥只有本人保管,不需要告诉别人,所以私钥泄露的可能性就非常低。但是对称加密中,密钥必须告诉对方,在密钥传播的过程,泄露的可能性就大大提高了。

非对称加密主要用于单向加密传输和数字签名。常见算法包括RSA,ECC(Elliptic Curve Cryptography),DSA(仅用于签名),ECDSA(仅用于签名)。

应用一:单向加密传输

单向加密传输的意思是一对密钥只能解决一个方向上的加密传输。比如A要给B发送消息,但是不想让别人看到。可以按照下面的流程操作:

(1) 接收方B首先创建一对公私密钥,然后B将其中的公钥发给A。

(2) A用B的公钥加密消息,发给B。

(3) B用自己的私钥将消息解密。

因为消息是用B的公钥加密的,所以只有B的私钥才能解密,其他人都无法解密。

单向传输过程

如果B要回复A,也不想让其他人看到,可不可以用B的私钥加密消息,A用公钥解密呢?显然不行,这样操作虽然A能用公钥解密,但是因为公钥本身是公开的,其他人也能用B的公钥解密,所以B的消息所有人都能看到。

所以一对密钥只能实现单向加密传输,由接收方负责创建密钥对,并将公钥发给发送方。

由以上可知:

(1) 非对称加密能保证单向传输的安全,但是加解密速度慢,尤其在一对多传输时,密钥管理偏复杂,不适用于加密聊天。

(2) 对称加密由于加解密速度快,密钥管理简单,非常适合加密聊天,但是无法保证密钥在传输过程中的安全

结合两种加密算法的特点,当前加密通讯的解决方案是这样的:将对称加密的密钥使用非对称加密的方式进行传输。这就完美解决了对称加密的安全痛点。比如包含A,B,C的三人小组想进行加密聊天,那么聊天服务器可以创建对称加密密钥,假设密钥是"XXXX",服务器要把密钥安全地告诉A,B,C。那么操作过程如下:

(1) A,B,C各自创建密钥对,然后将各自的公钥全部发给服务器

(2) 服务器分别用A,B,C的公钥加密“XXXX”,并分别发给A,B,C。

(3) A,B,C 分别用自己的私钥解密密文,得出对称加密密钥为“XXXX”。至此,密钥已经安全地传输给A,B,C了。

(4) 所有人开始使用“XXXX”加解密消息,畅快聊天。

应用二:数字签名(digital signature)

数字签名有2个作用:

(1) 用于验证文件/消息确实是由某人/机构发布。

(2) 用于验证文件/消息没有被篡改。

非对称加密与前文说过哈希加密算法结合使用,可以产生数字签名。

比如A要发布一个软件,为了保证用户可以验证下载的软件,需要对软件进行数字签名,操作流程如下:

(1) A创建一对密钥;

(2) A用哈希算法计算出软件的指纹“XXX”;

(3) A用私钥加密这个指纹“XXX”,得出数字签名“???”;

(4) A将数字签名"???"和公钥附在软件上一起发布,示意图如下;

文件结构

(5) 用户可以通过任意途径下载软件(比如各种软件站)。

(6) 用户取下软件数字签名和公钥, 用公钥解密签名,如果密文没有被篡改,结果应该是“XXX”,如果被篡改了,就是其它字符。但是下载的人并不知道正确的答案应该是什么,所以他们要进行下一步操作

(7) 用户计算软件的指纹,如果结果与上一步中解密的结果是一样的(都是“XXX”),则证明软件确实是A发布的,并且没有被篡改。如果两者结果不同,说明软件要么不是出自A,要么软件被修改过。

验证过程

在这个应用场景中,发布者要用私钥加密指纹,用户用公钥解密。而在“应用一”中,私钥用来解密,公钥用于加密。这两个应用场景中,加解密的方向是相反的,那我们应该如何记忆呢?

我们用下面的思路记住:

因为只有本人才能用私钥加密,所以“私钥加密→公钥解密”的流程,可以用于签名和认证。

同理,因为只有本人才能用私钥解密,所以“公钥加密→私钥解密”的流程,可以用于解密加密消息。

至此,对称加密与非对称加密的基本概念就讲完了,上述的例子的流程只是一个大概的流程,实际过程要复杂的多,为了便于大家理解,忽略掉了很多细节。

其实前文描述的数字签名的流程是有安全漏洞的,用户是完全基于附在软件上的公钥来验证的。如果公钥同样是伪造的,那么用户验证就没有任何意义了。比如一个黑客H给软件加入后门,然后自己创建一个密钥对,用同样的流程制作附属信息:

(1) H创建一对密钥;

(2) H用哈希算法计算出后门软件的指纹“YYY”;

(3) H用私钥加密这个指纹“YYY”,得出数字签名“&&&”;

(4) H将数字签名"&&&"和公钥附在软件上一起发布

(5) 用户取下数字签名, 用黑客的公钥解密,结果是“YYY”,然后进行下一步对比

(6) 用户计算软件的指纹,结果仍然是“YYY”。验证通过,但是软件是后门软件

有漏洞的验证流程

所以,为了防止上述事情发生,就必须有一种办法能够验证公钥的真实性。这就是数字证书的作用。下篇文章会详细讲解一下。

相关文章

  • 3.1 非对称加密简介

    非对称加密技术介绍 对称加密技术被称为初等加密技术,非对称加密技术即为高级数据加密技术,安全性更高。非对称加密算法...

  • 对称加密算法原理--OpenSSL演示、iOS代码运用及CCCr

    之前介绍了非对称加密算法,这篇文章介绍一下在非对称加密算法出现之前的对称加密算法,常见的对称加密算法、终端演示Op...

  • 3.2 RSA算法简介

    非对称加密技术 -- RSA算法 RSA算法是流行最广泛的非对称加密算法,也是唯一的基于因式分解的非对称加密算法。...

  • linux c/c++面试知识点整理(六)

    51、对称加密算法和非对称加密算法 对称加密算法 对称加密才用了对称密码编码技术,它的特点是文件加密和解密使用...

  • 对称加密算法-DES、3DES

    前两篇文章中已经分别介绍了对称加密与非对称加密的区别,以及非对称加密算法-RSA的详解。本篇文章主要介绍DES加密...

  • 区块链加密技术

    一、加密技术的介绍 加密算法一般分为对称加密和非对称加密,非对称加密指为满足安全性需求和所有权验证需求而集成到区块...

  • 加密算法总结

    对称与非对称加密算法的区别。 对称加密算法 加密(encryption)与解密(decryption)用的是同样的...

  • ios开发之证书和签名机制(一)

    非对称加密和摘要 1、非对称加密的特性和用法 1) 非对称加密算法(RSA):非对称加密算法指加密秘钥和解密秘钥是...

  • Android 拿到私钥字符串对目标字符串进行加密

    关于加密算法 分为对称和非对称加密算法,其中RSA是常用非对称加密算法。对称加密中AES高级加密标准使用Rijnd...

  • PHP加密算法

    加密技术的重点是加密算法,加密算法主要分为三类: 对称加密 非对称加密 不可逆加密 对称加密算法 加密过程: 将明...

网友评论

    本文标题:【技术】对称加密与非对称加密算法介绍

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