Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1228|回复: 0
打印 上一主题 下一主题

加密与解密以及OpenSSL的应用

[复制链接]

1228

主题

1997

帖子

7582

积分

认证用户组

Rank: 5Rank: 5

积分
7582
跳转到指定楼层
楼主
发表于 2023-1-14 23:48:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
https://cloud.tencent.com/developer/article/2036593


本文主要简单介绍下;
一、数据加密的三种方式;
二、Openssl的基础应用以及创建CA证书与发证;
一、数据加密的三种方式;
1、对称加密;加密与解密方使用同一个算法, 将数据切割成数据块逐步加密,并且前后块之间有关联关系,被称为块量,解密就是拿到块量做运算,进行解密。
常用的对称加密算法有:
DES(56bits), 3DES, AES(128bits), Blowfish
Twofish, IDEA, RC6, CAST5, Serpent
特点;加密与解密使用同一个口令
      将原文分割成固定大小数据块,对这些数据块进行加密
      加密数度快
缺点;口令传输,安全性不高
      口令太多,不易于记忆
2、公钥加密(也称非对称加密);与对称加密算法的主要差别在于,加密和解密的密钥不相同,一个公开(公钥),一个保密(私钥)。解决了对称加密算法密钥分配管理的问题,提高了算法安全性。
非对称算法有;RSA、EIGamal、DSA
特性;发送方数据传输时是用接收方的公钥加密,接收方用自己的私钥解密。
      身份认证是发送方用自己的私钥加密,接收方用对方的公钥解密以此来保证数据安全性。
缺点;非对称加密算法的加密、解密的效率比较低。
3、单向加密,对数据按照一定和算法生成特征码,具有不可逆性。
抽取数据特征码的算法有; MD5, SHA1, SHA512, CRC-32
消息认证算法;CBC-MAC、HMAC
特性;
消息认证;只用于验证消息本身,需要加密特征码。
雪崩效应;输入数据的微小改变,会导致结果大的变化。
定长输出;无任输入数据多长,只要使用同一种单向加密算法,输出结果的长度都相同。
结合以上三种加密方法:如下图所示;

上图所示,把三种加密算法结合起来使用,对称加密实现了数据的机密性,公钥加密实现身份认证,而单向加密则实现了数据的完整性。
二、Openssl的基础应用以及创建CA证书与发证;
1)、Openss是一套用于SSL(安全套接字层)/TLS(传输层安全)协议的加密工具,有如下三个组件组成;
    1、libcrypto;通用功能加密库;
    2、libssl;用于实现SSL/TLS的功能
    3、多功能命令工具
其作用还可以生成密钥、创建数字证书、计算信息摘要、手动加密解密数据。
2)、对称加密以及解密的方法;
常用算法有: DES,3DES,AES,Blowfish,Twofish,RC6,CAST5
加密; openssl enc -des3 -a -salt -in /etc/issue -out /tmp/issue_cipher[root@localhost ~]# cat /etc/issue   没加密前的内容CentOS release 6.5 (Final)Kernel \r on an \m[root@localhost ~]# openssl enc -des3 -a -salt -in /etc/issue -out /tmp/issue_cipherenter des-ede3-cbc encryption password:    输入密码Verifying - enter des-ede3-cbc encryption password:  再次输入[root@localhost ~]# cd /tmp/[root@localhost tmp]# lsissue_cipher  yum.log[root@localhost tmp]# cat issue_cipher      查看加密后文件内容U2FsdGVkX1+A3cLqRI09pTWDT6BhqierBK69evESmUcH9SOHUaA+0nw87hM5sDCT2/PlBNgiqTMiiKelkoAyBw==解密;openssl enc -d -des3 -a -salt -in /tmp/issue_cipher -out /mnt/issue[root@localhost ~]# openssl enc -d -des3 -a -salt -in /tmp/issue_cipher -out /mnt/issueenter des-ede3-cbc decryption password:    输入解密密码[root@localhost ~]# cat /mnt/issue    查看解密后的内容CentOS release 6.5 (Final)Kernel \r on an \m    用户认证;公钥加密,私钥解密
    数字签名;私钥加密,公钥解密


3)、数字证书的证书格式(x509);
    公钥和有效期;
     持有者的个人身份信息;
     证书的使用方式;
     证书发放机构的信息;
     验证CA的数字签名是否合法;
4)、基于openssl生成私有CA证书;
     实验环境;Server,172.16.34.200
               Client, 172.16.34.2
1,server端先生成密钥对;[root@station154 CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)Generating RSA private key, 2048 bit long modulus.....................................................................................................................+++......+++e is 65537 (0x10001)2、server完成自签证书;
3、创建需要的文件;[root@station154 CA]# touch index.txt serial crlnumber[root@station154 CA]# lscacert.pem  certs  crl  crlnumber  index.txt  newcerts  private  serial[root@station154 CA]# echo 1 > serial[root@station154 CA]# cat serial1[root@station154 CA]#4、 client实现证书申请;
   在主机上生成密钥,保存至应用此证书的服务的配置文件目录下;mkdir /etc/httpd/sslcd /etc/httpd/ssl[root@localhost ssl]# (umask 077; openssl genrsa -out httpd.key 1024)Generating RSA private key, 1024 bit long modulus.++++++........++++++e is 65537 (0x10001)[root@localhost ssl]# lshttpd.key[root@localhost ssl]#5、生成证书签署请求:
[root@localhost ssl]# openssl req -new -key httpd.key -out httpd.csrYou are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [XX]:CNState or Province Name (full name) []:BJLocality Name (eg, city) [Default City]:BJOrganization Name (eg, company) [Default Company Ltd]:OuyangOrganizational Unit Name (eg, section) []:linuxCommon Name (eg, your name or your server's hostname) []:ca.ouyang.comEmail Address []:caadmin@ouyang.comPlease enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:RedHatAn optional company name []:redhat    (Client端所填的信息要与服务器一致)
6、Clientc端将请求文件发往Server端;
   scp httpd.csr 172.16.34.200:/tmp
7、CA签署Client发来的证书申请;
   openssl ca -in /tmp/httpd.csr -out /tmp/httpd.csr -days 3655
8、签署完全后将证书发回申请者;
   scp httpd.crt 172.16.34.20:/etc/httpd/ssl9、吊销证书;吊销证书要到Server端;
   openssl ca -revoke /tmp/httpd.crt


---------------------------------------- openssl 是开源代码库 ----------------------------------------
OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。
Apache/Nginx使用它加密HTTPS
OpenSSH使用它加密SSH
你不应该只将其作为一个库来使用,它还是一个多用途的、跨平台的密码工具。
OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。
OpenSSL提供两个库libssl和libcrypto
OpenSSL实现了SSL协议的SSLv2和SSLv3,支持了其中绝大部分算法协议。OpenSSL也实现了TLSv1.0,TLS是SSLv3的标准化版,虽然区别不大,但毕竟有很多细节不尽相同。
对称加密
OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。
非对称加密
OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用于密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。
信息摘要
OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法。此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。



作者:ahubaoan
链接:https://www.jianshu.com/p/7827c822ce5f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-5-4 11:21 , Processed in 0.061615 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表