Openssl及加密解密(一)数据加密解密及CA原理

明文:plaintxt或者cleartext,也就是没有加密的,直接可以看懂的内容。密文就是通过特殊方式处理过的内容,无法直接看懂。

常见的加密方式:

  • 对称加密

  • 公钥加密

  • 单向加密

加密原理:将原文按固定大小切割成数据块,逐个数据块进行加密,因为逐字符加密的速度太慢了。在加密是通常把第一个块加密,然后再把第二个块加密,输出的第二个块还不是加密以后的第二个块,而是将第一个块加密后的结果和第二个块加密后的结果做异或操作作为第二个块的输出,所以你每拿到一个块之后要想还原就必须拿到前一个块,来做异或操作。


秘钥交换(IKE):DH算法。也就是在秘钥交换过程中没有发送任何密码,A经过计算生成一些数据给了B,B自己再生成一些数据传给A,A和B拿着对方给的数据经过计算得出口令,而且这个口令是一样的。


对称加密:

加密算法+口令,把要转换的数据也就是明文数据,通过加密算法内部转换明文变成密文。这个算法可能是公开的,但口令只有你自己知道。为了更加安全,那么加密本身不能过于依赖算法,因为算法固定而且一旦算法遭到破解,那么基于这个算法的所有密文都可以破解,所以算法固然重要,但是最重要的是口令,口令可以变,就算算法破解了,口令不知道也是没有用的。对称加密是加密和解密都使用相同的口令。比如DES(56bits)、AES(128bits)、AES(192bits)、AES(256bits)、3DES。

对称加密有个问题,算法对方可以拿到,但是口令呢?所以这是它最大的问题。如果通信涉及到多个方面而且口令不能使用相同的,那么你需要记录的密码就非常多。所以对称加密无法解决秘钥交换的问题,还有我给你密码如何保证收到密码的就是你也就是认证问题,另外就是别人截获密文然后做了修改收到的人解密后信息不对但是他并不知道这就数据完整性问题。

公钥加密(非对称加密):

相对于对称加密而言,公钥加密是非对称加密,它会生成公钥和私钥,公钥可以给任何人是公开的,A使用B的公钥进行加密,B使用自己的私钥进行解密。它解决了对称加密中需要记录众多口令的问题。但是公钥加密的密码长度很长,早期的512位到现在的2048位,这种加密方式造成加密速度很慢所以公钥加密一般不用来加密数据,而是用来加密口令,数据还是用对称加密。A生成口令加密数据,然后用B的公钥加密口令,然后把加密后的口令和数据传递给A,A用私钥解密口令,得到口令后再用口令解密数据。常用的公钥加密算法:RSA、DSA、DES、AES

这个过程也实现了秘钥交换过程,同时它还可以实现用户身份的认证即发信息的人是它声称的人,它是这么实现的,A用自己的私钥加密,如果要想解密就只能使用A的公钥,虽然公钥任何人都能获得,但是你用A的公钥一旦解密了信息,就证明这个信息是用A的私钥加密的,只有A才有A自己的私钥,所以就证明了发信息的这个人就是A。这时候你会想到,用自己的私钥加密数据那不等于没加密一样么,因为公钥谁都可以得到。再说公钥加密算法速度慢,用私钥加密也一样。所以通常都在引入另外一种方式,也就是单向加密。

单向加密:

单向加密可以保证数据完整性,经过加密的数据如何保证不被篡改,它本身不是一种加密技术而是一种不可逆的抽取数据指纹的技术,常见的有MD5、SHA1、SHA512、CRC32等。那么如果篡改了如何发现?A对数据抽取一段使用单向加密来获取特征码,也叫指纹信息。但是如何保证指纹信息不被篡改和重新生成呢?这就是上面说的和公钥加密结合。A抽取数据一段进行单向加密,生成特征码,然后用自己的私钥加密特征码,发送给B,这时候C截获了数据,然后使用A的公钥解密了特征码,然后再篡改了数据,这时候C再想加密特征码而他没有A的私钥所以C只能用自己的私钥加密特征码,当B收到数据以后,B使用单向加密获取数据的特征码,然后用A的公钥来解密发过来的加密特征码,显然无法成功,假设C没有篡改特征码而是修改的数据,那么B使用单向加密获取数据特征码,然后用A的公钥解密加密的特征码,两者一对比肯定不一样。虽然上述过程没有考虑数据本身的加密,但由于可非对称加密结合,实现了秘钥交换、身份验证、数据完整性,但无法保证数据私密性。那如何同时实现数据加密、数据完整性和身份认证呢

那如何同时实现数据加密、数据完整性和身份认证呢

三种方法融合在一起

  1. A生成原始数据,使用单向加密计算数据特征码(保证数据完整性),然后用A自己的私钥加密特征码(保证身份验证)

  2. A再找一个密码,用对称加密算法把数据、特征码整体加密(实现了对数据的加密,因为对称加密算法速度快)

  3. A再使用B的公钥,第二不中的对称加密算法中的密码进行加密。

  4. 上述三步完成后,发送给B。

第三方如果截获了数据,它没有B的私钥所以无法获得解密数据的密码,从而无法解密数据。下面是B获得数据后的步骤:

  1. B使用自己的私钥解密获取密码(因为只有自己的私钥才可以解密,证明是发给自己的,实现了秘钥交换)

  2. B使用获得的对称加密密码进行解密数据(原始数据和数据特征码),(实现了数据加密和解密)

  3. B使用A的公钥解密特征码,然后使用单向加密算法计算数据特征码(实现了身份验证,因为只有A的公钥才能解密A的私钥加密的数据)

  4. 对比解密后的特征码和计算后的特征码,如果一致说明数据没有篡改(实现了数据完整性)

上面的过程看似完美,但实际上还有很大漏洞,A发送给B之前肯定向B索取B的公钥,而且A拿到之后必须要相信这个公钥就是B的,但如果C截取了信息,C把自己的公钥给了A,并声称自己是B,那么A是无法验证的,同样C也依然可以冒充A。所以整个过程最薄弱的环节就是交换公钥的环节。为了解决这个问题这就是需要第三方机构,也就是我们要说的CA。那么申请方向CA提交信息进行审核其中最重要的是公钥,审核通过后CA会把产生一个证书,之后把证书发给申请方。为了避免证书发送过程中伪造,则CA会计算申请者提交信息的特征码,然后用自己的私钥(CA自己的证书是自己给自己颁发的)进行加密后一起发送给申请方。申请方用CA的公钥解密,如果成功就证明是CA发的。CA对特征码进行加密就是电子签名。

这时候A要给B通讯,A向B要证书(证书中包含B的公钥,当然也可以同时包含公钥和私钥),然后A去CA获取CA的公钥,然后用公钥解密证书的数字签名得到特征码,如果成功就证明证书是CA颁发的且没有被篡改。但这里又出现上面的问题,A向CA索要公钥,万一有人冒充CA怎么办?这就是在操作系统中内置全球知名CA的公钥。你只要是通过正规渠道获取的正版系统,那么所包含的公钥都是真实可靠的。


PKI(Public Key Infrastucture):公钥基础设施,公钥发放吊销等机制。


上面都是概念,而实现这些概念的软件常用的就是openssl、gpg.



原创文章,作者:XWYXU,如若转载,请注明出处:http://www.wangzhanshi.com/n/16496.html

(0)
XWYXU的头像XWYXU
上一篇 2025年1月2日 12:39:18
下一篇 2025年1月2日 12:39:20

相关推荐

  • 怎么在Linux系统中安装OpenSSL

    什么是Linux系统 Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统,使用Linux能运行主要的Uni…

    2025年1月2日
  • 怎么在nginx中通过配置SSL证书实现https服务

    node基本架构如下: |—-项目 | |— static     # 存放html文件 |…

    2025年1月2日
  • 想要查看网站ssl证书怎么做?

    当下SSL证书被很多人所关注,毕竟用户进行SSL证书选择的时候,对SSL证书需要进行一定的考察,如果大家所选择的SSL证书不靠谱,SSL证书也没有办法对网站进行保护,因此在网站是S…

    2025年1月2日
  • 安装ssl证书域名需要备案吗

    ssl证书是一种安全性较大的安全证书,这种证书可以加密网站当中被传输的信息,防止重要信息被盗用。因此,很多企业如果有重要文件需要传输的时候,就会直接选择给网站配置ssl证书。由于s…

    2025年1月2日
  • https的ssl证书是什么

    给网站安装ssl证书进行安全性升级,是现在网络发展的常见现象了。不少网络公司都出台了强制性要求,没有安装安全证书的网站,将会降低搜索的优先排行。不过有的时候,虽然已安装了证书,但却…

    2025年1月2日
  • ssl证书会过期吗?如果过期了怎么办?

    大部分的网站当下都在进行ssl证书的部署,因为网站在部署ssl证书之后,能够通过ssl证书来保障网站的安全,因为ssl证书是根据ssl协议来进行的,但是网站在部署ssl证书之后,有…

    2025年1月2日
  • Linux中Nginx下SSL证书如何安装

    一、Nginx安装SSL证书 需要两个配置文件(温馨提示:安装证书前请先备份您需要修改的服务器配置文件) 1_root_bundle.crt;2_domainname.com.ke…

    2025年1月2日
  • 单域名证书是什么?

    SSL证书是一种数字证书,它是由受信任的数字颁发机构所颁发的,SSL证书是加密传输协议,它的安全性是很高的,如果没有安装SSL证书,那么之前网站的通信协议是http,那么网站的数据…

    2025年1月20日
  • ssl证书过期有什么影响

    ssl证书是一种数字证书,这种证书类似于驾驶证、营业执照等电子副本。另外,ssl证书是一种安全证书,一般都被配置在网站服务器当中,因此这种证书又被称之为服务器证书。很多企业为了保护…

    2025年1月2日
  • 基于OpenSSL的HTTPS通信C++实现

      HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。N…

    2025年1月2日

发表回复

登录后才能评论