阅读 195

加密,签名,证书那些事

密钥

密钥就好比一把钥匙,用于打开网络安全的大门。 密钥主要用于对信息的加密,在现在互联网如此发达的社会,越来越多的人在网络上进行交流,文件传输,我们如何保证自己传输的信息不会在中途被人篡改,如何保证我们传输的信息只能被对方看到, 这就是今天讨论的主题密钥的作用。 密钥又分为对称密钥和非对称密钥,对称密钥是指加密和解密使用的密钥是同一个,非对称密钥是指加密和解密使用不同的密钥,通常称为公钥和私钥,私钥自己保存,公钥会公布出去,当别人想传输信息给你时,可以使用你发布出去的公钥进行加密,然后当你接收到消息后可以使用自己保存的私钥进行解密。 对于非对称加密的方式需要注意的是,公钥和私钥一定是成对使用的,即使用私钥加密,只能使用公钥进行解密,或者使用公钥进行加密,只能使用私钥进行解密,不能使用同一个密钥既进行加密又进行解密。

常用加密算法

想要完成加密解密只使用密钥是不够的,还有一个更重要的就是加密算法,根据前面提到的两种加密方式:对称加密和非对称加密,加密算法也可以分为对称加密算法和非对称加密算法,除此之外还有一种是单向加密算法,下面让我们详细下不同的加密算法,以及它们的区别,我们又该如何选取合适的加密算法。 由于加密算法有很多种,这里只会挑选一些常用的算法进行对比介绍。

单向加密

单向加密是一种不可逆的加密,即不能从加密后的信息中再得到原文。 常用的单向加密算法有:MD5、SHA、HMAC等。

对称加密算法

常见的对称加密算法:DES、3DES、AES等。

非对称加密算法

常见的非对称加密算法:RSA、DSA、ECC等。

加密算法的选择

对于加密算法的选择主要从一下角度进行考虑:

  • 加密速度 非对称加密算法的运行速度比对称加密算法的速度慢很多,所以当需要加密大量的数据时,建议采用对称加密算法,来提高加密速度。

  • 使用限制 签名只能使用非对称加密算法。

  • 密钥的管理 对称加密算法,由于加密解密都是使用相同的密钥,因此如何保证密钥的安全性就特别重要,所以如何要加密的数据量很小时,一般就优先考虑使用非对称加密算法。

  • 密钥位数 一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。

    在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。

加密解密

如下图所示,是一个典型的使用非对称加密算法的流程:

数字签名(私钥用于签名,公钥用于验证)

想象一下下面的场景,朋友发微信跟你借钱,你会把钱直接转过去吗? 现在骗子那么多,多少人惨痛的经验高所我们一定要打电话给你的朋友确认一下是不是他本人。在网络上传输信息也是一样的,你怎么知道信息不会被别人篡改过呢,这时候签名就应运而生了。 数字签名,就是发送者根据待发送的信息和用自身私钥加密的信息摘要组合成数字签名,用户采用自己的私钥对信息加以处理,由于密钥仅为本人所有,这样就产生了别人无法生成的文件,也就形成了数字签名。

信息摘要

在前面介绍数字签名时提到一个概念叫信息摘要(数字摘要),在生成不使用待发送的消息直接生成数字签名,而是先生成信息摘要,然后使用信息摘要来生成数字签名呢?

  • 待发送的信息长度是不定的,信息的长度决定的签名的速度,而生成信息摘要后长度是固定的,所以可以很好的解决签名效率问题。
  • 消息摘要函数是无陷门的单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,甚至根本就找不到任何与原信息相关的信息。

如下图所示,是一个典型的使用签名的流程:

数字证书

在上述使使用签名的流程中,由于公钥是公开的,并且可以自行导入到电脑,如果C进入B的电脑,把A的公钥换成自己的公钥,C就可以冒充A给B发送信息。那B如何保证使用的是A的公钥呢, 这时就需要数字证书来帮忙了。 数字证书主要用于鉴别密钥,通常将公钥放到证书里传输。

数字证书不是随便自己就能生成的,而是需要又专门的认证中(Certificate Authority, 简称CA)进行颁发。 认证中心会使用自己的私钥对A的公钥和一些相关信息一起加密,生成数字证书。下图展示了一个数字证书包好的一些内容:

参考文档

blog.csdn.net/tianlang519…

blog.csdn.net/lovelichao1…

www.jianshu.com/p/4932cb149…

www.jianshu.com/p/8a55423f2…

关注下面的标签,发现更多相似文章
评论