加入收藏 | 设为首页 | 会员中心 | 我要投稿 520站长网 (https://www.520shu.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux的加密和认证

发布时间:2023-01-29 13:32:11 所属栏目:Linux 来源:未知
导读: 一、加密的重要性
数据日益成为我们个人生活、经济发展和安全保障的核心。这就意味着,我们必须做到时刻保障数据的安全。这就如同在现实世界中紧锁家门、限制重要物品的进出,以及保护我们

一、加密的重要性

数据日益成为我们个人生活、经济发展和安全保障的核心。这就意味着,我们必须做到时刻保障数据的安全。这就如同在现实世界中紧锁家门、限制重要物品的进出,以及保护我们重要的企业财产一样,我们有赖于加密来保证数据不会遭受各种网络犯罪的侵入和盗取。任何有关于限制这种重要保护方式的建议,无论其初衷多么美好,最终结果都会导致我们的安全保障被弱化。

当我们存款、购物和通信时,数据安全显得越发重要。而这种安全的核心便是加密。随着我们的生活越来越多地依赖于互联网,人们更应该不断提高数据安全意识,并为此付诸行动,保护我们的数字化世界不再继续遭受各种网络犯罪的攻击和破坏。

二、加密技术

现在常见的加密技术主要有三种:对称加密,非对称加密,单向加密

对称加密

对称加密指的是加密和解密使用同一个密钥

特点:1、加密、解密使用同一个密钥,效率高。

2、将原始数据分割成固定大小的块,逐个进行加密。

缺点:1、密钥过多。

2、密钥分发。

3、数据来源无法确认。

常见的对称加密算法有:

DES:使用56位的密钥,2000年的时候被人破解了,所以现在基本不再使用
AES:高级加密标准,可以使用128,129,256三种长度密钥

其他的还有blowfish,Twofish和RC6,IDEA(商业算法),CAST5等

非对称加密

公钥:公开给所有人

私钥:自己保留,必须保证其私密性

特点:1、用公钥加密数据,只能使用与之配对的私钥解密;反之亦然。

2、数字签名:主要在于让接收方确认发送方身份。

3、对称秘钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方。

4、数据加密:适合加密较小的数据。

缺点:密钥长,加密解密效率低下。

常见的非对称加密算法有:

RSA:既可以用来加密解密,又可以用来实现用户认证

DSA:只能用来加密解密,所以使用范围没有RSA广

单向加密

单向加密: 只能加密、不能解密,即提取出数据的特征码,可以校验数据的完整性。

特点:1、定长输出,雪崩效应(微小变化产生巨大反应)只要被加密内容有一点点的不同,加密所得结果就会有很大的变化。

2、无论被加密的内容多长/短,加密的结果(就是提取特征码)是定长的。

常见的单向加密算法有:

md5:128bits定长输出

sha系列:安全的哈希算法

sha-1,sha224,sha384,sha512

三、实验操作

1.使用gpg工具实现对称加密

我们先准备一个文件然后使用gpg工具对其进行加密

Linux的加密和认证

输完密码后加密就算完成了,这时就会生成一个.gpg文件就是加密后的文件

Linux的加密和认证

我们把这个文件传到另一台机器上进行解密

Linux的加密和认证

这里的-o参数后跟的是将解密后的内容导出到一个指定文件(名字可以随便指定)

Linux的加密和认证

Linux的加密和认证

2.使用gpg工具实现非对称加密

先在A主机上生成公钥/私钥对

[root@centos7 ~]# gpg --gen-key      
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1    #选择加密算法
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 1024    #选择密钥长度
Requested keysize is 1024 bits
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0) 0     #选择密钥过期时间 0代表永不过期
Key does not expire at all
Is this correct? (y/N) y
GnuPG needs to construct a user ID to identify your key.
Real name: rootkey    #给密钥命名
Email address:          #邮箱(可以为空)
Comment:                 #注释(可以为空)
You selected this USER-ID:
    "rootkey"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O   #N重命名,C重写注释,E重写邮箱,O生成密钥,Q退出

Linux的加密和认证

Linux的加密和认证

将刚才生成的公钥导出来

Linux的加密和认证

将生成的公钥文件传给另一台需要加密的主机

Linux的加密和认证

然后我们再把公钥导入,在这里我们要注意下两天机器的时间,我刚开始没有注意到这点导致公钥导入失败如下:

Linux的加密和认证

把两台机器的时间同步之后,我们需要重新生成公钥,重新开始,时间同步后我们再次导入就没有问题了

Linux的加密和认证

我们再用导入的公钥对要传输的文件进行加密

Linux的加密和认证

我们可以看到文件已进行了加密,这个加密的文件自己也是无法解密的,只有用另一台机器的私钥才能解开,这样就确保了数据的安全性

我们把加密后的文件传给另一台机器

我们回到原来的机器用自己的私钥对文件进行解密

Linux的加密和认证

我们也可以把解密后内容导出来

Linux的加密和认证

删除公钥和私钥

我们要先删除私钥才能再删除公钥

Linux的加密和认证

删除公钥

Linux的加密和认证

加密工具还有openssl,也可以做到对称加密,非对称加密,我就在这里给大家演示下用openssl做单向加密

单向加密是不可逆的,做单向加密一般都是为了校验数据的完整性,我们先用md5算法对一个文件做一个加密,导出一个md5值

Linux的加密和认证

我们再对文件做一个小小的修改加个空格就行

Linux的加密和认证

可以看到,文件的md5值发生了很大的改变,这就是雪崩效应,这样就可以判断这个文件是否被别人篡改过。

四、CA认证

我们都知道,当客户端与服务器端建立会话之前,首先是客户端发送请求,然后进行TPC/IP的三次握手,接着客户端与服务器端建立ssl会话。

会话过程如下:

1.客户端计算数据特征值

2.使用私钥加密特征值

3.随机生成密码对称加密整个过程

4.使用服务器端公钥加密密码

5.服务器端使用私钥解密密码

6.服务器端解密整个数据

7.服务器端使用公钥验证身份

8.比较数据特征值

但是这些存在一个问题,谁来管理公钥,任何在互联网上传播的数据都不安全,更不用说传递公钥,如果它被篡改,那就无法验证身份,所以不可能由用户自己颁发公钥。

这个时候就需要一个具有公信力的中间机构来做这个工作,就是CA。国内的大部分互联网公司都在国际CA机构申请了CA证书,并且在用户进行访问的时候,对用户的信息加密,保障了用户的信息安全。理论上来说,任何组织或者个人都可以扮演CA的角色,只不过,难以得到客户端的信任,不能推而广之,最典型应用莫过于12306网站,这个网站就是自己给自己颁发的根证书。我们现在就自己搭建一个CA认证中心。

1、CA认证中心简述

CA:CertificateAuthority的缩写linux认证,通常翻译成认证权威或者认证中心,主要用途是为用户发放数字证书。

功能:证书发放、证书更新、证书撤销和证书验证。

作用:身份认证,数据的不可否认性。

端口:443

2.CA证书的制作

我们在这里用三台主机进行实验,其中两台是作为CA机构存在,所以创建所需要的文件的时候主机A和主机B都需要创建。如果不提前创建这两个文件,那么在生成证书的过程中会出现错误。我们将文件创建在配置文件中指定的路径下面。

生成证书索引数据库文件:touch /etc/pki/CA/index.txt

指定第一个颁发证书的序列号:echo 01 > /etc/pki/CA/serial

CA自签名证书(构造跟CA)

首先构造根CA证书。因为没有任何机构能够给跟CA颁发证书,所以只能根CA自己给自己颁发证书。

首先在A主机上生成私钥文件

Linux的加密和认证

生成自签名证书

Linux的加密和认证

3.颁发证书

颁发证书这里我们将分成两个环节介绍,分别是 子CA证书机构向根CA证书机构申请证书以及普通用户向子CA证书机构申请证书。

子CA证书机构向根CA申请证书,这个过程和前面根CA生成私钥的过程是一致的。

在子CA这里我们就没有设置私钥密码,密钥长度也设置了为1024

Linux的加密和认证

用私钥文件生成证书申请文件

Linux的加密和认证

将证书申请文件传递给根CA

Linux的加密和认证

根CA颁发证书

这时切换到根CA也就是A主机,生成证书

Linux的加密和认证

这时我们查看index.txt文件就会看到新增了一条记录

Linux的加密和认证

将CA生成的证书颁发给子CA

主机B是作为子CA机构存在的,所以证书文件,必须是cacert.pem,否则,子CA将不能够给其他用户颁发证书。

普通用户向子CA机构申请证书

过程和子CA申请差不多,首先也是生成私钥文件,不过因为是普通用户,所以生成的私钥文件应该与之前的cacert.pem 有所区别

Linux的加密和认证

利用私钥生成证书申请文件

Linux的加密和认证

将证书申请文件发送给子CA颁发机构

Linux的加密和认证

切换到子CA颁发机构颁发证书

Linux的加密和认证

将生成的证书传递给申请者

Linux的加密和认证

这样,正常的证书颁发流程就算是完成了。

我们验证下证书

Linux的加密和认证

-text 证书的内容

-issuer 证书颁发者的信息

-subject 证书主体的信息

-serial 证书的序列号信息

-dates 查看证书的时间

(编辑:520站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!